diff --git a/快手极速版200/1022-02.js b/快手极速版200/1022-02.js deleted file mode 100644 index 8271849..0000000 --- a/快手极速版200/1022-02.js +++ /dev/null @@ -1,31 +0,0 @@ -/* ------------------------------------------- - - -@Description: 测试 -cron: 12 12 * * * ------------------------------------------- -#Notice: -APP CK的版本最少要是13.5以上 -变量名字:ksck 默认执行看广告版本 一次执行50次 饭补正常 开宝箱没测试有问题 目前不支持修改 饭补还是看广告 默认就是看广告 -开宝箱ck#salt#socks5://用户名:密码@IP:端口 不写代理就是默认本地网络 报错503和脚本没关系 -⚠️【免责声明】 - 依赖axios socks-proxy-agent - //获取oaid和osVersion 下载https://gh-proxy.com/https://raw.githubusercontent.com/gzu-liyujiang/Android_CN_OAID/refs/heads/master/demo.apk 进行实时获取 - //或者在群文件下载 - //不会添加的自己去https://ks.smallfawn.top 验证CK和添加 - //systemVersion 就是osVersion - //oaid就是oaid - 获取后填写到COOKIE后面 [如果不写则默认为以下两个参数] - 例如 - osVersion=10; oaid=9e4bb0e5bc326fb1; ------------------------------------------- -1、此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 -2、由于此脚本仅用于学习研究,您必须在下载后 24 小时内将所有内容从您的计算机或手机或任何存储设备中完全删除,若违反规定引起任何事件本人对此均不负责。 -3、请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 -4、此脚本涉及应用与本人无关,本人对因此引起的任何隐私泄漏或其他后果不承担任何责任。 -5、本人对任何脚本引发的问题概不负责,包括但不限于由脚本错误引起的任何损失和损害。 -6、如果任何单位或个人认为此脚本可能涉嫌侵犯其权利,应及时通知并提供身份证明,所有权证明,我们将在收到认证文件确认后删除此脚本。 -7、所有直接或间接使用、查看此脚本的人均应该仔细阅读此声明。本人保留随时更改或补充此声明的权利。一旦您使用或复制了此脚本,即视为您已接受此免责声明。 -*/ -var hitVRh,mt348G,XeHY2v,XkjFXsg,GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD;const FYzHV9k=[0x0,0x1,0x8,0xff,"length","undefined",0x3f,0x6,"fromCodePoint",0x7,0xc,"push",0x5b,0x1fff,0x58,0xd,0xe,0x2000000,0x4000000,0x2,0x3,0x69,0x6e,0x70,0x72,0x74,0x75,0x7f,null,0x80,"MI",0x88,0x89,0x8a,0x8b,0x8c,0x92,0x8d,0x8e,0x8f,0x90,0xc6,0xc7,0xc8,0xdf,"ck",0xd1,0xcd,0xce,0xe9,0xd5,0xea,0xd3,0xd4,0xd6,0xcf,"c",0xd8,0xd0,0xd9,0xda,0xdd,0xdc,0xde,0xdb,0xd7,0xd2,";",0xef,"=",0xec,0xfc,0xfd,0xf9,0xfe,0x109,0x10c,!0x1,0x11c,0x1e,0x3e8,0x132,0x138,0x13f,"10",0x13a,0x104,"]",0xfa0,0x14f,0x155,0x153,0x169,0x157,0x175,0x18b,0x195,0x198,0x1a1,0x1a2,0x1a3,0x1a5,0x1a6,0x1a7,0x1a8,0x1a9,0x1aa,0x1ab,0x1ac,0x1ad,0x1ae,0x1af,0x1b0,0x1b1,0x1b2,0x1b3,0x1b4,0x1b5,0x1b6,"&",0x1be,0x1c2,0x1d0,0x1dc,0x1f3,0x1f5,0x1f6,!0x0,0x64,0x205,0x20a,0x1fa,0x1fb,0x20c,0x20d,0x1e5,0x209,0x2b5d,0x215,"-","\"}",0x1da,0x23a,0x250,0x242,0x24a,0x260,0x261,"ad",0x263,0x270,0x271,0x272,0x273,0x26d,0x27c,0x27d,0x27e,0x27f,0x284,0x1cd,0x28b,0x28d,0x28e,"cs","os",0x2ab,0x29d,0x2a5,0x2a3,0x2bc,0x289,0x2c2,0x2d1,0x2d2,0x2d6,0x2db,0x2f0,0x2e3,0x2eb,0x1d8,0x304,0x305,0x18f,"\n",0x322,0x320,0x330,0x331,0x336,0x337,0x338,0x339,0x4,0x32b," ",0x34b,0x34c,0x353,0x1cc,0x35a,0x10,0x359,0x361,0x35e,"$1",0x36e,0x310,0x334,"\uD83D\uDD14","\u79D2"];function ltpEsW1(hitVRh){var mt348G="%1@9/#sg\"wHJ;t(q{m<:S+.|v8]5C~`eAbWZPh}^3krIjp_unlo,XQ&=Yc*7Gz6MDyV$F!)iEUTKR4B?Ld[0>xNfOa2",XeHY2v,XkjFXsg,GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD;yvc7NM5(XeHY2v=""+(hitVRh||""),XkjFXsg=XeHY2v.length,GVwIe9p=[],_d78O5=FYzHV9k[0x0],FWs8lZo=FYzHV9k[0x0],sVIMeU=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hDFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(GVwIe9p.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){GVwIe9p.push((_d78O5|sVIMeU<~CL23P:lX&h9m","3s}e>ir`PwrnEqgeZ|o\"P7|gImyL39B^l&ZHOoy,jmZ!p{bhF6=/hZXDx:","j,#oERJM)*zYo8+W?)m&o*4tLQ@[!nemnS\"wt!1ZI7BYF9Ve<1","#i!/=M?1(+C6FqAPsGqb:0utBQ{[1","4|4T|R)F&DkLXqV`|q0Az^2NlM`*}hxCe1",":w8Kn>/*S:W?Hd|kpsqXtd\"\"$D^C#E6Ph]iXdb@vj\"by}h\"<_y7~`","+y&CT![Xc*KL[]w:X,6X:iGF/","*pdA#=3rc#=.","NWX~uM0Z{Gh+#n$`K6Lwc>,|6Y2$EE~~v&Ls*_OLW&z7[dJ:77qwTP$Zo:","G6EwioP<^DXYnuW`[n`lW7APt+*","Z,e`_Ln*%:QKyQgE9dW$p_g","Y|as/?C@76tW>u&W(iCe}lXTn;[$&8.C:A(g,[bZPD1tG5,k/TPHZU%","46mEG4~c26TYGq_]yUflR=r`yMzC5(b!r`>tN)ptJ8,peC@nH\"t7(Ezh8C5|eXJ=*`A;XC1","$UU&Q[ug9","eFL&fo1k4(O4ii&CU6&XILMZLq@[J(H8zU_=0dc~?Q4l1",",WJA.!H`CymKh8%|~&|wTR~MZw?q1","*WPTmd9:%qcgA9FmC1","@&8Al4fZ#","wWLyc)Z+nX5N9{&pYaZ6\"HK8/","wT&/gd)X%+S?n/gh<1","5ih/<67Z{;)Ud8$eux*D)^)&37|r5,lD_qMa4+P:5oS`g","@Im&hxX36M!Zi}3:ow#edp?~B<%@ot0klWW5D*4g!*=","&F(gs?A;,cTL{qd]h9m5R6e?pX<9","4YZ~}x`@","NS94#?acvthUJ@\"8:q(=q=o3PWBXB\"P","&s.=ynL;pV`E951v_]5A.!n`&*<5t>?^9l%,[R*vowI=4E|kWw/TWxn*#","{hQT,4.@","yFse27HPw=@E:9","Ps,ErLBNT6VM*z^?tGQ;[{9x3f%","[S6e}LTva*$+nqa{?sms^uZK1qO$Z@w^UShT~","CF850bkto;,eZ(9h*pjem=J8g","?mR4D_$t=Z+:tLd(#Wh81","QSYl+c(P%q%5C7ihze`R\"nZcSc~?%","bF*ASXhKR\";[j7|~=s@Ebxf![;ElLi1PHFLs#?B<6!W","Lysexe[L7m$V*lZJ;q=RG4l|J\"/?@@s","EwY7xXz\";","eK^>l*z+5FXV","G5LH","7n>ywZoY9b{","{:/HGkOIEKG","3)>^!}i","M&.EmBi","JP)^^AFf`>cSDxxJ7j|y","yHnlp>nraW","J)N*2:aSkzxRV",";K}Eb","{:/HGk0X[cG","4}lHv_i","f)ypj}_4Vtv","v:8H","{:/HGkuV!*=","X::H#Bi","JbfKFNwr","eKXIr","B=my","Q)CaP0PV","JbXyv}{Y.z","VR%*+","TZjEoL~d@ylMfuiI","|5%*+","d}BEc_Ijbc6h]r","s/DweBn`]yL)*d7ZIc9","{!gK?%vy","Vij>4","hn","X%rX","|:=.R7~U(OeRfX","9ePX/qQU","re)X?bx2`","^mUsv","PQ*X",";l)X","bQ)X","z[)X\"P>W4n","^w;?%7DUr]?[bC[B`","|:BW#>w{Q4[jrd2L","gwtKR7>hn","HSgK8kP@?ozGeXBh","~F?,aSvy","z!)X","sl)Xd","SQ)X","|ZPX","c3iX/qQU","&i}P:>dyOuKdw:D","&i}P:>dyWDKd=n","&i}P:>dyOu,iI:G,","&i}P:>dyu:;pU","VSv.wVc","`XNDWz(y","t~=.z1Fy","&^>?7Ka2,!*<[$F@OilC1/UUwu,","&|^RuK?x&D|*OiSWX]XQSRw:g","m_Dw","m_%w","iR*6YjuH","N%;e","10cRC}0H","9I$JjA7+;y","X<;e","N%D((c7+T","8$Qaw","9","|jdJucWQKLBGv","g2SmyPqv","3jG6FcD@s|.JK{z^#}kCw","LBQaw","0MQaw","K!VzZT~","Mh7z0;`{R","7XvZV","MGtm%ry","Zu;[1","OSa%iK6nwx","n2F+l{Lf,Itc3","(m.E^;y`{+G|*1*C?[|u{ORw|\"8>&eKSgRT\"?&xr8u?h%3Cwr?U?KO0B;Pg4xd1%mmIsLdrIiufYo$QJ_=r$(;T|,I1*wdB%z[{AJc5K^|VXB]^Sh~+(,dqqQ`dcDnb=)$8W{E(T|uG6=1","3X.u>","O86;NLd1","nm`u","LQC%SNFj\"","zfU{&Fy","13]bFD:OaA5^81(","F{yX","<0b]c)","ABQ8V*iEq1Ak|rM]mj.Mw&K$)$(mGUQXCtVc(%c_|r#.y\"Ftoab*=E&{t,dF[=UL`_\"u]1=.\"*","lov%.","mM%??YAyh","rx;t","~p!7)`UK^nls7ba@\"DvY%o=EfCa","}M!7?$CL",":B~h","v^0?+$hyh","iW,Fd$QEQ","IX}t5","$xY|0uSL","1%nt","u>B~c0rlb","\"DV+Ur<","LIwR0ynb=#LofW4UTM{4dP_f|k(mcEuvf}oUM{Vt@D6PLZ","oT.,b","]Ww$IwJ.C","+:smL@L7U,#m@.J10+bdN2NJqqzo[V2R8m9Q`Ye~TaPNR7_Scht?0cVbF?kv2$;N+_Ka8zd+GQ5Pop/p>k_f5,0L01D;~iWp?6hlR5sGZI^c~N_%JyoacjeT!/^){*WhhxF","]Ww$0GO>(d/)^Zj","\"dn[2_b","A(piN?Gub;$dfIT#f*s[(u_itdsJZ@Gd(fPVF0R|U4o8*rvyY_`~CpPuyCh_vQ]2bNF4hotRw6?i)c)Bey$D!UQoMdajmKS9Qff@:UL5Rd4/hjd:LxRtg7n[?s2$i0T{bSeY","OSVdCI`qtNKS_Rs*cq+zID*lRyG~t?!s3PtX6c1O","z:Hp","0@x&*o+8G","RvMw!+U","lL=V3wL","ah>xbQr&[w8","z:)H~;Wl","rl~dj","RU%e8cmp","(4gO","?G!s,$F","HG5y>HF","N;0uG1eLu7E$r;","8fzui8H","9;2=ybK`","=vqC[1(v)","^ih=","S&dGZNOx?","BP]y@OH","`:\"x{cpTSuDO`hj(0:","N;6=C","yAdy\"RH","Gq>h","_f7Y9H{J8+(=0y`d","QWIrT>C","`VV?","r\"Iv/al/P&vX?E[K`5kH[!1gh?)cS6p7_75LJ3}E}]9%vWu74xzzTd(i%GUp*R!8]gf7yoC","L%(Ng13G^enb`;","VH*{b9_9","{>Od","gKeoZShv5","_.fxphA","uJYvI2?pr?3/[4;Ls$oPs","\"/G4c,{Pl<6Xq@",">CSHw6W@","L\"[5uKPFm.@,/GKt_m7nNIgZL&>o0@R]shEw,[_``\"d)(zt","k):*040=t+T7bBT$5ZQ5T6*}UW18KGzo]yx>aI&0Fz};Dp,R_4>Jjwy1ic$,aIg9k[VHG=8RPG+CD!:NV[##G=zo~0=|8Td+/0=&/Z?]uDt}=uVu$0y9JE,W!j{,FC_.8#h4>Bm1xcKO2mpVA?%h1A{oZ4)Um*79Vie/`BQ_sG{,FC=Cnf(;2.Q_jGWUrLZ)m5(;[mw_A!(Um*!W:?(gvpzo]H?Z%Tx","hc+Hmdzx]\"7XQG;}k3>elFm:WM(KEZq^PIlA(dNNNSGVWo6{\"/G4eb*`)Dx)L0qWy&iRdd{TJm?lA0jb^3RT;dMk/&`","BJqT.FV%0LgpP",":pMm",",xhZOXeGf&or%D`JY4Kdb)O}PyRi{:kS\"BbLRX666aD;PH$?&NDpd*lg.(G.tzkPWwFQXX?n@OmbLzs*S4Qn`XyYNwg","T4IAx_8`Ir[(`:I","jO6ND_uUiSw5&FKWIm1#OT(7`on/TFKWb=iTT0l7Kh>L3]4:AOzm9>^r7=ufrF62<HIVX7912@G","@piTi","QOpT;H*fPR4","<<7EMxE_:C","_g;Tw^`P","%z6NT{CZ","E,P","m<%03|G=#S)rNZN[[KyT5diPW}3p/FIjJPP","u1J7WxzSSyA","ImrJ#{Q7K5x!l_;8/f[zgkJ%|AWVDP:l9o:g1{9)8DPIf4}s;\"KB)G:!jNP@n*@>b.E}#aK12Tpyu]vm{_O:])4Q%?T4`N.;K&YNnnl9&^vwdVRX`P>lR,a[]tn","3?i.[u/`4#_66cm]}nMEJscuf5shIX?wTd?Ph6:n~#A","A7i.PQ,(","%F_%i","X8vPA","&EjPh6R9",",g","<3olM{y)b?C11q2h7Li4!.q{np.`*w3+SB3d`1\"Lbpf","8jold(Da","W$CWo","0$v&O:ka","]4;d`1cF","ZI,\"Nc4g(7B)lGQ3","zpsm","en2=7rnR","HAMCD&F_st","f=","vv(7(oX1ut]$d","gD4/#2`S6~\"Ciw%h{r,7I","5T[^I","na[^I","|csm","6nL*i","yHw**4n=h","c;~f","!U)F@rI._1yTTG|3dDlM8sGraBs#o6L3XM4C=","iH)F*\"NA","hwyh)","OO)F(","hO~fy","y&c1!.xiqS","~U;B:,~A","tM}*#T3A","1(Bf","AM>70","LpZf","ky@RM>@@S|BJuCg","ky@R$N^IB|iC@A\"","e_G1HB8oPhK&<","ky@RM>cL|*Q","e_z7[CS<",",pm^","$J92P<,>*_*8*e+q!PCZkml","p3|R(T9ds","!,5A5","nc,A74[X1MG","}}{dP6d$(z","$g_9MhGe","0g79A","];}99cg,d","[/jD","\"?vEm$a2+4]kkJ1h:Q`W*CO9[F","*QZ^?]j6%n(","650zA?wDT{","6`/EXe48","6Ma33]X/A0}vW??6hbP!","8%Cl0Gaf!","8%ClL?m","e#!/RQofPYhYVq`9m(~","u(2l`","kM^#V!\"Xfx)a@N4Q1}(","((ei%ZXDxa\"<9(","q_];)\"&zsI9\"+","RRnlnb[|]+","pq\"z","3^0lWS.{I&Y|1","]q\"z,gm","{RSipgwu","C]tF","/#7^)[1`|]d?PpH)t%nz","`RZGC[X3>5E;Q(","nY}^W","q_Y;DSo}w5w","%^Kll[pu","Y0WG&Qk}Dt#|1","6R_llS~`oP*|FUU6/%nz","m(JFd]^{ioLi3Rpp.#3^6","kBCl*NE`^+EI1","M!?^/S@I);dwkQq9_]~Lnjh5eYqx6rr@H).Gw\"k}[O>|1<#","@_PlL?m","v#PlPG^{WY~01","]ZtF4Z5zT3]","R#JFC[>}^+EI1","]Z}^#0rX*{","__8iQQ]6.Ys","__8iQQZy+f1<,o{p]Cl]Si#G88B{P|L.4hq#L^T/?d|G~x\"bio>yFEr@|q\"*74|Zm!Da(n_p;^\"GQQ*\"Oa[?M#N4+4Ii{}R]6f+]k1dPfnK:\"!}0H",".L)w2","QBuww4Lnc","9G7f","qWsVT?%|F_i=Ky*^Mm>wV,`U1jm0H.u8gGX~??BQ+S%*ZoJbFufw:9(2m_BGe","iiGw9~7t","qWsVtIl+qdN","YuE~B?Be","qWsVT?,b>T=!e",";GyfX|A","1vHwm/cnc","O:M>\"/P#P","2BsVw/Ct","cuQcs","dBGS]4^dc","aYKVQ","cIn1g46:}0CNPhoX%bs~@~A","|Yjfw492acNT=!e","=G*[u<*CTC","TB.Sg?A","QU#GX]R","(q\"OU6w]L","BpGO","0]cFm=t&BDJ/bH","PfOie4=","b?%3;Yf#[fzMMs6U}J}@FfiAVJ~>.B0[HG_hvmw","L|>Im=t&BDJ/bH","i}73u|R","<0S\"`]R","1)i;OQn{r9W}n^","&:;G","to$3Y]L8Yxqo^","!4+>@,R","=KSG@9hn5*|","BX@AR9N","=K`Fq99^qA","C#EDR268jgiE,4yCQ\"E(1`","r)CPeQK",">,5MZQQ{ZP","Iw$Oe;+xU[6$R/)%","(TJi}EjFq6,+y!,","1.}lbpysy","[TdZVNjvZ8t1}T","Iw$Oe;+xU[Rz+I[*]o[ig","2aO^","w]1ER[?<2$QlWA","5cC}S]B","NuFLN`_/4$pK}R?NYK.jC3X}B9RpzT.","?,^R_[(@","P]8BUd_@","//&eY,<@","eG7\"3FP`[;o","~;8&9E3@","d2_f4Fr","U/9~7?=b","1","o@\"{SEt!SX7@A","Ra_f,Fr","Msw{vV0zu+>",",Nw{{gr","^7(4`7",":vuT/E>b","B&>18VMb","L1$FYTX#NH,l)n0=tnwT5TK@t$5z(<}d[60uJjsE=H,lCb","n2@1R`S:C_gF&I.=","C@dTEEN/f.s@{Ow3d2_f}#,R:JtV!PR=",":<4eU","n21e","^8O\"cht6\"?mz/i(#KP5{\";9:","K7*fM","Us2ffu79:","Y@4e","6`5BiE|^P.(4`!G","n~Y.Q{;=piVxA","Ms5Bfgyb",":2U:5","Us_f9T>b","kE*h5xo6n^%gb<","&=w{|Yr","mi7/du=Q>^O8fof4S?fd./<7","tYf/5xo6n^%gb<","mi[!3uz.(^`L{5o4F%,s[6O7","eG(e_)%","(G7A74w:Cy9,1","OSFj/PRT","BlQxQ;AeX~/+7","fRI5^ov,{","@z>mRzS53$@","Ja,\"kz$*IGQ(7","2C,\"\"VH","Fa4x+;9yC1",";rU\"9;c,}>4}%Pa]","h{@x0:|^ieVk5]M0vA]gG`7@hcLc,n5u","8+L\";`{6;c/+7","@zsx+;9y{","yrQx2UH","OSA{<`r:7t)","7bsx0:|^ieS9{nS","Dbz;=[|M;Qwt0b","Oapxx&/FcQ!(mnnO\"k<5","5bl;%QlTgG","Dbz;=[vk&$/+7","Dbz;=[,J}c)(7","bbj\"2+*T","]pQxvUH","Oa6;p:iF,>l(7",",al;Boe`_Sq","OS6O\"V.H","sjZ!Q+*T","\"lQ5Rz6,_Sq","v@(!``u(3$q","|/b;\"&H",";rU\"9;yy:t8:7","%/z!xz?r2G","2C,\"\"V5ylcRcKFG]+SZO$PH","0Rg!rVoJ{","Ml{\"a`cy91nkG#q%v@/","^k&gS`qT","mWq50zJT","h5)UZgc:C12twYuR{Y,g>g<+{)>(%bf]e=u&~Na`R12tBT","Yp+5y@;^BQVUWl!R","B+]g``CSx!a+5EJrex#W\"&Vym19","^bvAO","d?Wu","|MzrN:QoGc4#WF(eRzfgO>q?u,S5k}9a","mG`n|4!bz}P(Y0\"IxmoWEj$\"~DmTk6,=e9","KpMga`a7","=@>mG`oRIGz[7","w+PA]|H","jCDx\"V^F^","tc0I?V{y{","bb+xZgvT","Ja>mxV*T","^pO^>","ea+5X&Ye^",".K}mO","^kFjB&_cQ~*9{i#]nR>gdgH","|K$Ax&ZJ.^9:*nS","^k:A}o[^p~c82jZfspr.v<&[,cS","2.a[+E>8,3eF2OJM5dCYw{vI.v`[%","l30A?dS@","JO=.ZG>6_M","TV32","2=I+}M.]R^|@d[s6$cFQ=1^*IxSP?1","uJi)x)trVM","A`[2","[9F4hU%",">s];","3]:ASR1Qg","5I:A8","Z`;%","BxS~(Hk,nw","hc+Hmdzx]\"JKRi8P}cJArL[NHSjl(zz{hc+Hmdzx]\"/u!E8P}c6e.!k:RmBlhEx3p3.=F!QKeQ>M]lJ}x9_=AbHNIyGV8z%PrIGepFg:AQ1utEz{8&^UG4LX{<`7R0K}",":q,\"CiZ:g","Z&>QfeT3KmFU1","~qIAAi98g","xk*}{J3e%T+c:DIJu2@HRlVav?LJr8:b4","$&>Q7,:ug","$&>Q!Qm:IS","yWv|A#DY`fI","il&!/","h;y!iS\"f?6m","n;98>Oss&qRXe%z","tmD|GGbD2(a","u03PjktYC","#W]!Q^uX`}:*","|qS4Bd]@","Q{YGfs~AsvO","@)%q:hEeC)%1","`qDw^&0ks","|[L5sIjT)=;NN*n+6pXd18Y~h:6X@#adoT?fk]6af)MNN*n+|[L5sIjT)=;N%","hI$A@El:kSc","?,EwZBmQiDo","II`gpLgd{<","[9nw5","?2&it3V","n&Ed>%^Hf?~rJ","AZ:xb","z3`e1EgdKmo","cFP4IL^:g","~G>Qhx`vJS","<_o5XYM1","x","s/DweB8:kS5*Y0;","Ms$\"CickbM77VlI}hIZAjL987S1Bl{sIAn>iDP>WDwjL%","LWC4IL%","s/DweBP@","bI8&5","bGvw8","RFQHV>7umV1?]#br!Y,HV>c,{+^?21brRFQHV>7u{+^?1","~qLwuFC`s","uF{b|","&]JA8","vb<",";EBf[#>j`3rJ","cFvw~"]);function j_DJDb(){var hitVRh=[function(){return globalThis},function(){return global},function(){return window},function(){return new Function("return this")()}],mt348G,XeHY2v,XkjFXsg;yvc7NM5(mt348G=void 0x0,XeHY2v=[]);try{yvc7NM5(mt348G=Object,XeHY2v[FYzHV9k[0xb]]("".__proto__.constructor.name))}catch(GVwIe9p){}GfichRn:for(XkjFXsg=FYzHV9k[0x0];XkjFXsgFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(hitVRh.push(mt348G&FYzHV9k[0x3]),mt348G>>=FYzHV9k[0x2],sVIMeU-=FYzHV9k[0x2])}while(sVIMeU>FYzHV9k[0x9]);eLTt3hD=-FYzHV9k[0x1]}}if(eLTt3hD>-FYzHV9k[0x1]){hitVRh.push((mt348G|eLTt3hD<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(hitVRh.push(mt348G&FYzHV9k[0x3]),mt348G>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){hitVRh.push((mt348G|sVIMeU<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(GVwIe9p.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){GVwIe9p.push((_d78O5|sVIMeU<&OAk/~,e2E+4!FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(GVwIe9p.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){GVwIe9p.push((_d78O5|sVIMeU<nx`th5ReZ8}ANsMmalgd409|<~(16$2",GVwIe9p,hitVRh,mt348G,_d78O5,FWs8lZo,sVIMeU,eLTt3hD;yvc7NM5(GVwIe9p=""+(XeHY2v||""),hitVRh=GVwIe9p.length,mt348G=[],_d78O5=FYzHV9k[0x0],FWs8lZo=FYzHV9k[0x0],sVIMeU=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hDFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(mt348G.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){mt348G.push((_d78O5|sVIMeU<kK.z{V1x_}+20|&T",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,hitVRh,mt348G;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],hitVRh=-FYzHV9k[0x1]);for(mt348G=FYzHV9k[0x0];mt348G<_d78O5;mt348G++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[mt348G]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(hitVRhFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);hitVRh=-FYzHV9k[0x1]}}if(hitVRh>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|hitVRh<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<{function XkjFXsg(XeHY2v){var XkjFXsg="yEDtW`2,&Ui{($/O;@N=8J)T.MuVx?~Zm+C]R<05Ffkdn\"GQ4zLX1B#al39Yec6[H:}A>wvSjIgK*!_%brP7qsp|ho^",GVwIe9p,_d78O5,sVIMeU,FWs8lZo,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,sVIMeU=[],FWs8lZo=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var hitVRh=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(hitVRh===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(FWs8lZo&FYzHV9k[0x3]),FWs8lZo>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){sVIMeU.push((FWs8lZo|ltpEsW1<{function XkjFXsg(XeHY2v){var XkjFXsg="LMuXZnQTkSjHJAtdVhe*@/\"iB9$xy+Nf7b6.K8};PEFUrC]I{D(Rp!5YvwGO)W^m3q[l_|cs&g>,ao`z#=0%1?:~24<",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var hitVRh=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(hitVRh===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|mt348G<#IDWm.8r",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,hitVRh,mt348G,eLTt3hD;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],hitVRh=FYzHV9k[0x0],mt348G=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hD<_d78O5;eLTt3hD++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[eLTt3hD]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(mt348GFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|mt348G<{function XkjFXsg(XeHY2v){var XkjFXsg="~=z4*.$Uud{6K8C>T0vba@ZF<#At}(|yPq!,M3NcoSQjmw_shH&WD5[)\"/EerI7gY9LpOV^Xxn;1JkBf:2R%?+lGi`]",GVwIe9p,FWs8lZo,sVIMeU,_d78O5,hitVRh,mt348G,eLTt3hD;yvc7NM5(GVwIe9p=""+(XeHY2v||""),FWs8lZo=GVwIe9p.length,sVIMeU=[],_d78O5=FYzHV9k[0x0],hitVRh=FYzHV9k[0x0],mt348G=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hDFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){sVIMeU.push((_d78O5|mt348G<Ib,wX7!xFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);hitVRh=-FYzHV9k[0x1]}}if(hitVRh>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|hitVRh<XeHY2v-GVwIe9p),XkjFXsg(_d78O5,[],FYzHV9k[0x0],FWs8lZo,XeHY2v,GVwIe9p));return _d78O5},XkjFXsg;yvc7NM5(XkjFXsg=function(XeHY2v,GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD){var hitVRh=FYzHV9k[0x1c],mt348G;if(eLTt3hDeLTt3hD)break;if(mt348G>_d78O5&&sVIMeU[mt348G]===sVIMeU[mt348G-FYzHV9k[0x1]])continue;yvc7NM5(hitVRh=Array.from(GVwIe9p),hitVRh.push(sVIMeU[mt348G]),XkjFXsg(XeHY2v,hitVRh,mt348G+FYzHV9k[0x1],FWs8lZo,sVIMeU,eLTt3hD-sVIMeU[mt348G]))}},console.log(XeHY2v))}const _d78O5=this[FYzHV9k[0x2d]],FWs8lZo={};if(_d78O5){function sVIMeU(XeHY2v){var XkjFXsg="`OAfTdHQW*n7_JNL;&IE)lpu]KV>}+Pes=.8^gm<(aYR\"~2,Mv{/G6tb#9Z%wcBroCy|?:534xX!0SD1@zi[UhFkjq$",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,hitVRh,mt348G;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],hitVRh=-FYzHV9k[0x1]);for(mt348G=FYzHV9k[0x0];mt348G<_d78O5;mt348G++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[mt348G]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(hitVRhFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);hitVRh=-FYzHV9k[0x1]}}if(hitVRh>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|hitVRh<{function XkjFXsg(XeHY2v){var XkjFXsg="Guv%]<(=A9K+dcJ#D!wXTRPxjnrp3i4FfoIy7{z&>V2m|@eC5WtM.s*~\"8)Y01Q$?EU6/B`gh[LHZl_N,S}Ob:q^ak;",GVwIe9p,_d78O5,sVIMeU,FWs8lZo,eLTt3hD,hitVRh,mt348G;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,sVIMeU=[],FWs8lZo=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],hitVRh=-FYzHV9k[0x1]);for(mt348G=FYzHV9k[0x0];mt348G<_d78O5;mt348G++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[mt348G]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(hitVRhFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(FWs8lZo&FYzHV9k[0x3]),FWs8lZo>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);hitVRh=-FYzHV9k[0x1]}}if(hitVRh>-FYzHV9k[0x1]){sVIMeU.push((FWs8lZo|hitVRh<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0x0]){for(let GVwIe9p of R3npTlk){function _d78O5(XeHY2v){var XkjFXsg="loOptMVqkgS@61$:~9=0}hZNBTAG#/{zL;J`X)^my7xab+Fd84PK\",2*%neWrwj>sFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<{return sVIMeU[XeHY2v]}),ltpEsW1=Object[XkjFXsg(FYzHV9k[0x47])](sVIMeU)[XkjFXsg(FYzHV9k[0x48])](XeHY2v=>{return!sVIMeU[XeHY2v]});if(ltpEsW1[XkjFXsg(FYzHV9k[0x49])]>FYzHV9k[0x0]){function j_DJDb(XeHY2v){var XkjFXsg="A#NgBfhJiCUsPHbu?9q8La:[jz5Z+1St>eO2/=R{Fndm4o(I`W*cM!pDVE6k&_v;)@wKX^~7,YQ\"$yx0%T3r}.FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0x13]){function P7GTsG(XeHY2v){var XkjFXsg="<#!>x[%^03V_+9w*.LdDTrfJCYFIlvQNyn7X{btBh)pH/aOMs2oR(6AE}?|4u;:q\"U]WG1@~Pz,c5m8=K$k`ZS&jegi",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<JU{WE=np%d~f@#m7R9gizH84+2_YaQ}V&P<|jXktBA6scL,;MOqZr5hF)Kl/0G",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<H=QN6FXKg/q]r!%@SmO}Yd.xRUny[?kLaPcz_8^9:",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<j=UWi]lXTk9eY{suF|:$*o`JqrKERdG[",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<2,6via8.CsouU0;5VmD@|{l_<)`K=}",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<4ubE8%XVOe_,{W!",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<=&z*~M",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<C*[So)8M=97t!uzqRU6/FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<)[8ULKmkp!=4vC|D~tE*0gn6N}@jq{zhTw/b;:",_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,swYoggd;yvc7NM5(_d78O5=""+(XeHY2v||""),FWs8lZo=_d78O5.length,sVIMeU=[],eLTt3hD=FYzHV9k[0x0],ltpEsW1=FYzHV9k[0x0],j_DJDb=-FYzHV9k[0x1]);for(swYoggd=FYzHV9k[0x0];swYoggdFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(sVIMeU.push(eLTt3hD&FYzHV9k[0x3]),eLTt3hD>>=FYzHV9k[0x2],ltpEsW1-=FYzHV9k[0x2])}while(ltpEsW1>FYzHV9k[0x9]);j_DJDb=-FYzHV9k[0x1]}}if(j_DJDb>-FYzHV9k[0x1]){sVIMeU.push((eLTt3hD|j_DJDb<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<Bsq+|!bHCr%w5/xloDe$y(W;~)1.F{9niQpImtX2zKG687V<",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(hitVRh&FYzHV9k[0x3]),hitVRh>>=FYzHV9k[0x2],mt348G-=FYzHV9k[0x2])}while(mt348G>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){FWs8lZo.push((hitVRh|sVIMeU<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|mt348G<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<GO)xC$RB+1};oN{A9#3Eyd8",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<Y~,b0{G5",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<!&@V",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<me$dk1Mhn(Zr_%@cB7TwL]`.)|Iv[f2u^~OJWb{=aj&3lVQA",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<nN$fVHMd",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<[",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var FdQf1y=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(FdQf1y===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0x1]){return 0x1/0x0}const sVIMeU=Math.max(XkjFXsg,GVwIe9p)+FYzHV9k[0x1];return sVIMeU}window[j_DJDb(0x1e2)]={buildCharacterMap:XeHY2v,isAnagrams:XkjFXsg,isBalanced:GVwIe9p,getHeightBalanced:_d78O5}}this[j_DJDb(0x1e3)]=this[j_DJDb(0x1e4)]}if(this[GVwIe9p(FYzHV9k[0x87])]!=FYzHV9k[0x0]){function P7GTsG(XeHY2v){var XkjFXsg="S98XcL^w!5Wz`.pM:O2*%okD+/d#=6Vh37|&qRtK4[FaUgbQJl,1v}ETn)$0{?A(N~x;Br@]eGZ\">CiIjyuPH_mFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<ECLt4(9X;e<5rZ.`^18b}GB_J~+u7]/AF*lOa",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var swYoggd=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(swYoggd===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<e64kL7*$~(/fw]dsu2M;q,tn9p@Pz:{0!)",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var swYoggd=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(swYoggd===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<TY?b@Zh`P[9J:=l)Lq7_]$6nkKX",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],ltpEsW1=-FYzHV9k[0x1]);for(j_DJDb=FYzHV9k[0x0];j_DJDb<_d78O5;j_DJDb++){var swYoggd=XkjFXsg.indexOf(GVwIe9p[j_DJDb]);if(swYoggd===-FYzHV9k[0x1])continue;if(ltpEsW1FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<@z.~$,`O_I|Xl+Jo*VjFu?x;pTSg)#EmKY^RQ]LZ",GVwIe9p,_d78O5,FWs8lZo,sVIMeU,eLTt3hD,hitVRh,mt348G;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],sVIMeU=FYzHV9k[0x0],eLTt3hD=FYzHV9k[0x0],hitVRh=-FYzHV9k[0x1]);for(mt348G=FYzHV9k[0x0];mt348G<_d78O5;mt348G++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[mt348G]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(hitVRhFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);hitVRh=-FYzHV9k[0x1]}}if(hitVRh>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|hitVRh<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],eLTt3hD-=FYzHV9k[0x2])}while(eLTt3hD>FYzHV9k[0x9]);ltpEsW1=-FYzHV9k[0x1]}}if(ltpEsW1>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|ltpEsW1<{function XeHY2v(XeHY2v){var XkjFXsg="ClH4B0S132wjY|v&ptNrM~$O^E><9}A]!*,T+7R=eKQVhX(ZWf8z:)Jdy@Lq`?/F[%ou{xas;k_G.5#\"6ImDinUPbcg",GVwIe9p,_d78O5,FWs8lZo,hitVRh,mt348G,sVIMeU,eLTt3hD;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,FWs8lZo=[],hitVRh=FYzHV9k[0x0],mt348G=FYzHV9k[0x0],sVIMeU=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hD<_d78O5;eLTt3hD++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[eLTt3hD]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(sVIMeUFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(hitVRh&FYzHV9k[0x3]),hitVRh>>=FYzHV9k[0x2],mt348G-=FYzHV9k[0x2])}while(mt348G>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){FWs8lZo.push((hitVRh|sVIMeU<{function XkjFXsg(XeHY2v){var XkjFXsg="NGr*v8_|];[yu@Q6+I(wALpg&bqfEO:B5Yj>/SVkhtns)#~0c4HFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(mt348G.push(_d78O5&FYzHV9k[0x3]),_d78O5>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){mt348G.push((_d78O5|sVIMeU<{return E5qkEU0[elE3r0K(FYzHV9k[0xcf])]()});async function AwAAHA8(){try{function XeHY2v(XeHY2v){var XkjFXsg="DItKs3[)Q%~W_M+rN(gChSV/G|z>OE,}!woqLBmF4^AJ5\"PY;$2`eu8Xnxy&fklc7vj@:{.i*=b?T0p9UH1RZFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(hitVRh&FYzHV9k[0x3]),hitVRh>>=FYzHV9k[0x2],mt348G-=FYzHV9k[0x2])}while(mt348G>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){FWs8lZo.push((hitVRh|sVIMeU<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(XeHY2v.push(XkjFXsg&FYzHV9k[0x3]),XkjFXsg>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){XeHY2v.push((XkjFXsg|mt348G<{return XkjFXsg[elE3r0K(0x32e)](XeHY2v)})||FYzHV9k[0x77])[elE3r0K(0x32f)](XeHY2v=>{return XeHY2v}),this[elE3r0K(FYzHV9k[0xbb])]=this[elE3r0K(FYzHV9k[0xba])][elE3r0K(FYzHV9k[0xbc])],this[elE3r0K(FYzHV9k[0xb4])](elE3r0K(0x332)+this[elE3r0K(FYzHV9k[0xbb])]+elE3r0K(0x333)))}async[elE3r0K(FYzHV9k[0xd0])](){function XeHY2v(XeHY2v){var XkjFXsg="uJAVZGmNXd1:>;,&l8?k7)_3HbT0(!nFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(hitVRh.push(mt348G&FYzHV9k[0x3]),mt348G>>=FYzHV9k[0x2],sVIMeU-=FYzHV9k[0x2])}while(sVIMeU>FYzHV9k[0x9]);eLTt3hD=-FYzHV9k[0x1]}}if(eLTt3hD>-FYzHV9k[0x1]){hitVRh.push((mt348G|eLTt3hD<=FYzHV9k[0xc1])XkjFXsg(_d78O5,[],XeHY2v,FYzHV9k[0x0]);return _d78O5},XkjFXsg,_d78O5,FWs8lZo;yvc7NM5(XkjFXsg=function(XeHY2v,hitVRh,mt348G,sVIMeU){var eLTt3hD;for(eLTt3hD=sVIMeU;eLTt3hDz452_D9e1:%]I[Sj}T{*&oCF#g+/.FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(FWs8lZo.push(sVIMeU&FYzHV9k[0x3]),sVIMeU>>=FYzHV9k[0x2],hitVRh-=FYzHV9k[0x2])}while(hitVRh>FYzHV9k[0x9]);mt348G=-FYzHV9k[0x1]}}if(mt348G>-FYzHV9k[0x1]){FWs8lZo.push((sVIMeU|mt348G<{const[GVwIe9p,_d78O5]=XeHY2v[FWs8lZo(0x349)](FYzHV9k[0x45]);XkjFXsg[GVwIe9p]=_d78O5})}return XkjFXsg}[elE3r0K(0x34a)](XeHY2v){try{return JSON[elE3r0K(FYzHV9k[0xc4])](XeHY2v)&&typeof JSON[elE3r0K(FYzHV9k[0xc4])](XeHY2v)===elE3r0K(FYzHV9k[0xc5])}catch(XkjFXsg){return FYzHV9k[0x4d]}}[elE3r0K(0x34d)](XeHY2v){var XkjFXsg=typeof XeHY2v==elE3r0K(FYzHV9k[0xc5])&&Object[elE3r0K(FYzHV9k[0xbe])][elE3r0K(FYzHV9k[0xbf])][elE3r0K(FYzHV9k[0xc0])](XeHY2v)[elE3r0K(0x34e)]()==elE3r0K(0x34f)&&!XeHY2v[elE3r0K(FYzHV9k[0xbc])];return XkjFXsg}[elE3r0K(0x350)](XeHY2v){function XkjFXsg(XeHY2v){var XkjFXsg="suM)wTro0z3\"cFRqX.6#gCi!D]_?@QS|:1YE+m,",GVwIe9p,_d78O5,hitVRh,mt348G,FWs8lZo,sVIMeU,eLTt3hD;yvc7NM5(GVwIe9p=""+(XeHY2v||""),_d78O5=GVwIe9p.length,hitVRh=[],mt348G=FYzHV9k[0x0],FWs8lZo=FYzHV9k[0x0],sVIMeU=-FYzHV9k[0x1]);for(eLTt3hD=FYzHV9k[0x0];eLTt3hD<_d78O5;eLTt3hD++){var ltpEsW1=XkjFXsg.indexOf(GVwIe9p[eLTt3hD]);if(ltpEsW1===-FYzHV9k[0x1])continue;if(sVIMeUFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(hitVRh.push(mt348G&FYzHV9k[0x3]),mt348G>>=FYzHV9k[0x2],FWs8lZo-=FYzHV9k[0x2])}while(FWs8lZo>FYzHV9k[0x9]);sVIMeU=-FYzHV9k[0x1]}}if(sVIMeU>-FYzHV9k[0x1]){hitVRh.push((mt348G|sVIMeU<{return _d78O5[Math[GVwIe9p(0x354)](Math[GVwIe9p(0x355)]()*_d78O5[GVwIe9p(FYzHV9k[0xc6])])]})[GVwIe9p(0x356)]("")}[elE3r0K(0x357)](XeHY2v){const XkjFXsg=elE3r0K(0x358);return Array[elE3r0K(FYzHV9k[0xc7])]({[elE3r0K(FYzHV9k[0xbc])]:XeHY2v},()=>{return XkjFXsg[Math[elE3r0K(FYzHV9k[0xca])](Math[elE3r0K(FYzHV9k[0xc8])]()*XkjFXsg[elE3r0K(FYzHV9k[0xbc])])]})[elE3r0K(0x35b)]("")}[elE3r0K(0x35c)](){return elE3r0K(0x35d)[elE3r0K(FYzHV9k[0xcc])](new RegExp(elE3r0K(0x35f),"g"),function(XeHY2v){var XkjFXsg=Math[elE3r0K(FYzHV9k[0xc8])]()*FYzHV9k[0xc9]|FYzHV9k[0x0],hitVRh;hitVRh=XeHY2v=="x"?XkjFXsg:XkjFXsg&FYzHV9k[0x14]|FYzHV9k[0x2];return hitVRh[elE3r0K(FYzHV9k[0xbf])](FYzHV9k[0xc9])})}[elE3r0K(0x360)](GVwIe9p){function _d78O5(GVwIe9p){var _d78O5="<;87y#x]*fC`DM5F/+2m\"ROb_.4dt(NH?|VUq:!>vZ{eB6@Gp)YIX%c$gn3oPWurS^9L0aA[ks}QiwJ=&~lEKz,1hjT",FWs8lZo,sVIMeU,eLTt3hD,ltpEsW1,j_DJDb,XeHY2v,XkjFXsg;yvc7NM5(FWs8lZo=""+(GVwIe9p||""),sVIMeU=FWs8lZo.length,eLTt3hD=[],ltpEsW1=FYzHV9k[0x0],j_DJDb=FYzHV9k[0x0],XeHY2v=-FYzHV9k[0x1]);for(XkjFXsg=FYzHV9k[0x0];XkjFXsgFYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(eLTt3hD.push(ltpEsW1&FYzHV9k[0x3]),ltpEsW1>>=FYzHV9k[0x2],j_DJDb-=FYzHV9k[0x2])}while(j_DJDb>FYzHV9k[0x9]);XeHY2v=-FYzHV9k[0x1]}}if(XeHY2v>-FYzHV9k[0x1]){eLTt3hD.push((ltpEsW1|XeHY2v<FYzHV9k[0xe]?FYzHV9k[0xf]:FYzHV9k[0x10]);do{yvc7NM5(eLTt3hD.push(ltpEsW1&FYzHV9k[0x3]),ltpEsW1>>=FYzHV9k[0x2],j_DJDb-=FYzHV9k[0x2])}while(j_DJDb>FYzHV9k[0x9]);XeHY2v=-FYzHV9k[0x1]}}if(XeHY2v>-FYzHV9k[0x1]){eLTt3hD.push((ltpEsW1|XeHY2v<{return setTimeout(mt348G,hitVRh)})}async[elE3r0K(FYzHV9k[0xcf])](hitVRh={}){await this[elE3r0K(FYzHV9k[0xd0])]();const mt348G=new Date()[elE3r0K(0x372)](),GVwIe9p=(mt348G-this[elE3r0K(0x373)])/FYzHV9k[0x50];this[elE3r0K(FYzHV9k[0xb4])](FYzHV9k[0xd1]+this[elE3r0K(0x374)]+elE3r0K(0x375)+GVwIe9p+FYzHV9k[0xd2]);if(this[elE3r0K(FYzHV9k[0xc2])]()){process[elE3r0K(0x376)](FYzHV9k[0x1])}}}(XeHY2v,XkjFXsg)}function yvc7NM5(){yvc7NM5=function(){}} \ No newline at end of file diff --git a/快手极速版200/22296_快手极速版promax.js b/快手极速版200/22296_快手极速版promax.js new file mode 100644 index 0000000..c15b4c3 --- /dev/null +++ b/快手极速版200/22296_快手极速版promax.js @@ -0,0 +1,1678 @@ +//ksck ck#salt#代理 +//Task food,box,look +//代理格式 socks5://username:password@host:port +//代理推荐http://www.tianxingip.com/proxy/index/index/code/smallfawn.html +//代理推荐http://www.gzsk5.com/#/register?invitation=smallfawn +const qs = require("querystring"); +const axios = require("axios"); +process.env.Task = "food,box,look"; +const querystring = require("querystring"); +const { SocksProxyAgent } = require("socks-proxy-agent"); +// 生成随机交互消息 +function generateRandomInteractionMessage() { + const messages = [ + "正在观看广告", + "认真观看中...", + "浏览广告内容", + "模拟用户行为", + "观看视频广告", + "保持活跃状态", + "广告浏览中", + "正常观看时长", + ]; + return messages[Math.floor(Math.random() * messages.length)]; +} + +// 开发模式和环境变量检测 +const isDevMode = + process.env.DEV_MODE === "1" || process.env.DEV_MODE === "true"; + +// 获取环境变量值,带默认值 +function getEnvNumber(envKey, defaultValue) { + const value = parseInt(process.env[envKey], 10); + return isNaN(value) ? defaultValue : value; +} + +// 新增:获取环境变量 +const KSLOW_REWARD_THRESHOLD = getEnvNumber("KSLOW_REWARD_THRESHOLD", 10); +const KSROUNDS = getEnvNumber("KSROUNDS", 35); +const KSCOIN_LIMIT = getEnvNumber("KSCOIN_LIMIT", 500000); +const KSLOW_REWARD_LIMIT = getEnvNumber("KSLOW_REWARD_LIMIT", 3); + +// 获取要执行的任务列表 +function getTasksToExecute() { + const taskEnv = process.env.Task; + if (!taskEnv) { + console.log("未设置Task环境变量,将执行所有任务 (food, box, look)"); + return ["food", "box", "look"]; + } + + const tasks = taskEnv + .split(",") + .map((task) => task.trim().toLowerCase()) + .filter(Boolean); + const validTasks = ["food", "box", "look"]; + const filteredTasks = tasks.filter((task) => validTasks.includes(task)); + + if (filteredTasks.length === 0) { + console.log("Task环境变量中没有有效任务,将执行所有任务 (food, box, look)"); + return ["food", "box", "look"]; + } + + console.log( + "从Task环境变量中解析到要执行的任务: " + filteredTasks.join(", ") + ); + return filteredTasks; +} + +// 从 ksck, ksck1 到 ksck666 读取账号配置 +function getAccountConfigsFromEnv() { + const configs = []; + const seenConfigs = new Set(); + + if (process.env.ksck) { + const ksckValue = process.env.ksck; + const configStrings = ksckValue + .split("&") + .map((config) => config.trim()) + .filter(Boolean); + configs.push(...configStrings); + } + + for (let i = 1; i <= 666; i++) { + const ksckKey = `ksck${i}`; + if (process.env[ksckKey]) { + const ksckValue = process.env[ksckKey]; + const configStrings = ksckValue + .split("&") + .map((config) => config.trim()) + .filter(Boolean); + configs.push(...configStrings); + } + } + + const uniqueConfigs = []; + for (const config of configs) { + if (!seenConfigs.has(config)) { + seenConfigs.add(config); + uniqueConfigs.push(config); + } + } + + console.log( + `从ksck及ksck1到ksck666环境变量中解析到 ${uniqueConfigs.length} 个唯一配置` + ); + return uniqueConfigs; +} + +const accountConfigs = getAccountConfigsFromEnv(); +const accountCount = accountConfigs.length; +const tasksToExecute = getTasksToExecute(); + +console.log( + "================================================================================" +); +console.log( + " ⭐ 快手至尊金币至尊普通版 ⭐ " +); +console.log( + " 🏆 安全稳定 · 高效收益 · 尊贵体验 🏆 " +); +console.log("================🎉 系统初始化完成,快手至尊金币版启动成功!🎉"); +console.log("💎 检测到环境变量配置:" + accountCount + "个账号"); +console.log("🎯 将执行以下任务:" + tasksToExecute.join(", ")); +console.log( + `🎯 配置参数:轮数=${KSROUNDS}, 金币上限=${KSCOIN_LIMIT}, 低奖励阈值=${KSLOW_REWARD_THRESHOLD}, 连续低奖励上限=${KSLOW_REWARD_LIMIT}` +); + +if (accountCount > (process.env.MAX_CONCURRENCY || 999)) { + console.log( + "错误: 检测到 " + + accountCount + + " 个账号配置,最多只允许" + + (process.env.MAX_CONCURRENCY || 999) + + "个" + ); + process.exit(1); +} + +// 生成快手设备ID +function generateKuaishouDid() { + try { + const generateRandomHexString = (length) => { + const hexChars = "0123456789abcdef"; + let result = ""; + for (let i = 0; i < length; i++) { + result += hexChars.charAt(Math.floor(Math.random() * hexChars.length)); + } + return result; + }; + + const randomId = generateRandomHexString(16); + const deviceId = "ANDROID_" + randomId; + return deviceId; + } catch (error) { + console.log("生成did失败: " + error.message); + const timestamp = Date.now().toString(16).toUpperCase(); + return "ANDROID_" + timestamp.substring(0, 16); + } +} + +// 发送网络请求 +async function sendRequest( + requestOptions, + proxyUrl = null, + description = "Unknown Request" +) { + const finalOptions = { ...requestOptions }; + + // 配置代理 + let agent = null; + if (proxyUrl) { + try { + agent = new SocksProxyAgent(proxyUrl); + if (isDevMode) { + //console.log("[调试] " + description + " 使用代理: " + proxyUrl); + } + } catch (proxyError) { + console.log( + "[错误] " + + description + + " 代理URL无效(" + + proxyError.message + + "),尝试直连模式" + ); + if (isDevMode) { + console.log("[调试] 代理无效,自动切换到直连模式"); + } + } + } else { + if (isDevMode) { + console.log("[调试] 未配置代理,使用直连模式"); + } + } + + if (isDevMode) { + const method = finalOptions.method || "GET"; + //console.log("[调试] " + description + " -> " + method + " " + finalOptions.url); + } + + try { + // 配置 axios 请求选项 + const axiosConfig = { + method: finalOptions.method || "GET", + url: finalOptions.url, + headers: finalOptions.headers || {}, + data: finalOptions.body || finalOptions.form, + timeout: finalOptions.timeout || 30000, + ...(agent && { + httpAgent: agent, + httpsAgent: agent, + }), + }; + + const response = await axios(axiosConfig); + + return { response: response, body: response.data }; + } catch (error) { + if (error.response) { + // 服务器返回了错误状态码 + return { response: error.response, body: null }; + } else if (error.request) { + // 请求发送失败 + if (error.name === "AggregateError" && Array.isArray(error.errors)) { + console.log( + "[调试] " + + description + + " 请求错误: AggregateError\n" + + error.errors + .map((err, index) => " [" + index + "] " + (err?.message || err)) + .join("\n") + ); + } else { + // console.log("[调试] " + description + " 请求错误: " + (error.message || String(error))); + } + } else { + // 其他错误 + // console.log("[调试] " + description + " 请求错误: " + (error.message || String(error))); + } + + return { response: null, body: null }; + } +} + +// 测试代理连通性 +async function testProxyConnectivity(proxyUrl, description = "代理连通性检测") { + if (!proxyUrl) { + return { + ok: true, + msg: "✅ 未配置代理(直连模式)", + ip: "localhost", + }; + } + + const { response: baiduResponse, body: baiduResult } = await sendRequest( + { + method: "GET", + url: "https://httpbin.org/ip", + headers: { + "User-Agent": "ProxyTester/1.0", + }, + timeout: 8000, + }, + proxyUrl, + description + " → baidu.com" + ); + if (baiduResult) { + return { + ok: true, + msg: `✅ SOCKS5代理正常,成功访问 baidu.com,出口IP: ${baiduResult.origin}`, + ip: baiduResult.origin, + }; + } +} + +const usedProxies = new Set(); + +// 获取账号基本信息 +async function getAccountBasicInfo(cookie, proxyUrl, accountId = "?") { + const url = + "https://nebula.kuaishou.com/rest/n/nebula/activity/earn/overview/basicInfo?source=bottom_guide_first"; + + const { body: result } = await sendRequest( + { + method: "GET", + url: url, + headers: { + Host: "nebula.kuaishou.com", + "User-Agent": "kwai-android aegon/3.56.0", + Cookie: cookie, + "Content-Type": "application/x-www-form-urlencoded", + }, + timeout: 12000, + }, + proxyUrl, + "账号[" + accountId + "] 获取基本信息" + ); + + if (result && result.result === 1 && result.data) { + return { + nickname: result.data.userData?.nickname || null, + totalCoin: result.data.totalCoin ?? null, + allCash: result.data.allCash ?? null, + }; + } + + return null; +} + +// 文本居中对齐 +function centerAlign(text, width) { + text = String(text); + if (text.length >= width) { + return text.substring(0, width); + } + + const padding = width - text.length; + const leftPadding = Math.floor(padding / 2); + const rightPadding = padding - leftPadding; + + return " ".repeat(leftPadding) + text + " ".repeat(rightPadding); +} + +// 快手广告任务类 +class KuaishouAdTask { + constructor({ + index, + salt, + cookie, + nickname = "", + proxyUrl = null, + tasksToExecute = ["food", "box", "look"], + remark = "", + }) { + this.index = index; + this.salt = salt; + this.cookie = cookie; + this.nickname = nickname || remark || "账号" + index; // Use remark if provided, else nickname or default + this.remark = remark; // Store remark for use in logging + this.proxyUrl = proxyUrl; + this.coinLimit = KSCOIN_LIMIT; + this.coinExceeded = false; + this.tasksToExecute = tasksToExecute; + + this.extractCookieInfo(); + + this.headers = { + Host: "nebula.kuaishou.com", + Connection: "keep-alive", + "User-Agent": + "Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.101 Mobile Safari/537.36", + Cookie: this.cookie, + "content-type": "application/json", + }; + + this.taskReportPath = "/rest/r/ad/task/report"; + this.startTime = Date.now(); + this.endTime = this.startTime - 30000; + this.queryParams = + "mod=Xiaomi(MI 11)&appver=" + + this.appver + + "&egid=" + + this.egid + + "&did=" + + this.did; + + this.taskConfigs = { + box: { + name: "宝箱广告", + businessId: 606, + posId: 20346, + subPageId: 100024064, + requestSceneType: 1, + taskType: 1, + }, + look: { + name: "看广告得金币", + businessId: 672, + posId: 24067, + subPageId: 100026367, + requestSceneType: 1, + taskType: 1, + }, + food: { + name: "饭补广告", + businessId: 9362, + posId: 24067, + subPageId: 100026367, + requestSceneType: 7, + taskType: 2, + }, + }; + + this.taskStats = {}; + this.tasksToExecute.forEach((taskKey) => { + if (this.taskConfigs[taskKey]) { + this.taskStats[taskKey] = { + success: 0, + failed: 0, + totalReward: 0, + }; + } + }); + + this.lowRewardStreak = 0; + this.lowRewardThreshold = KSLOW_REWARD_THRESHOLD; + this.lowRewardLimit = KSLOW_REWARD_LIMIT; + this.stopAllTasks = false; + + this.taskLimitReached = {}; + this.tasksToExecute.forEach((taskKey) => { + if (this.taskConfigs[taskKey]) { + this.taskLimitReached[taskKey] = false; + } + }); + } + + async checkCoinLimit() { + try { + const accountInfo = await getAccountBasicInfo( + this.cookie, + this.proxyUrl, + this.index + ); + if (accountInfo && accountInfo.totalCoin) { + const currentCoin = parseInt(accountInfo.totalCoin); + if (currentCoin >= this.coinLimit) { + console.log( + `⚠️ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 金币已达 ${currentCoin},超过 ${this.coinLimit} 阈值,将停止任务` + ); + this.coinExceeded = true; + this.stopAllTasks = true; + return true; + } + } + return false; + } catch (error) { + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 金币检查异常: ${error.message}` + ); + return false; + } + } + + extractCookieInfo() { + try { + const egidMatch = this.cookie.match(/egid=([^;]+)/); + const didMatch = this.cookie.match(/did=([^;]+)/); + const userIdMatch = this.cookie.match(/userId=([^;]+)/); + const apiStMatch = this.cookie.match(/kuaishou\.api_st=([^;]+)/); + const appverMatch = this.cookie.match(/appver=([^;]+)/); + + this.egid = egidMatch ? egidMatch[1] : ""; + this.did = didMatch ? didMatch[1] : ""; + this.userId = userIdMatch ? userIdMatch[1] : ""; + this.kuaishouApiSt = apiStMatch ? apiStMatch[1] : ""; + this.appver = appverMatch ? appverMatch[1] : "13.7.20.10468"; + + if (!this.egid || !this.did) { + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } cookie格式可能无 egid 或 did,但继续尝试...` + ); + } + } catch (error) { + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 解析cookie失败: ${error.message}` + ); + } + } + + getTaskStats() { + return this.taskStats; + } + + printTaskStats() { + console.log( + `\n账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 任务执行统计:` + ); + for (const [taskKey, stats] of Object.entries(this.taskStats)) { + const taskName = this.taskConfigs[taskKey].name; + console.log( + ` ${taskName}: 成功${stats.success}次, 失败${stats.failed}次, 总奖励${stats.totalReward}金币` + ); + } + } + + async retryOperation(operation, description, maxRetries = 3, delay = 2000) { + let attempts = 0; + let lastError = null; + + while (attempts < maxRetries) { + try { + const result = await operation(); + if (result) { + return result; + } + lastError = new Error(description + " 返回空结果"); + } catch (error) { + lastError = error; + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ${description} 异常: ${error.message}` + ); + } + + attempts++; + if (attempts < maxRetries) { + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ${description} 失败,重试 ${attempts}/${maxRetries}` + ); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + + if (isDevMode && lastError) { + //console.log("[调试] " + description + " 最终失败: " + lastError.message); + } + + return null; + } + + async getAdInfo(taskConfig) { + try { + const adPath = "/rest/e/reward/mixed/ad"; + const formData = { + encData: "|encData|", + sign: "|sign|", + cs: "false", + client_key: "2ac2a76d", + videoModelCrowdTag: "1_23", + os: "android", + "kuaishou.api_st": this.kuaishouApiSt, + uQaTag: "1##swLdgl:99#ecPp:-9#cmNt:-0#cmHs:-3#cmMnsl:-0", + }; + + const queryData = { + earphoneMode: "1", + mod: "Xiaomi(23116PN5BC)", + appver: this.appver, + isp: "CUCC", + language: "zh-cn", + ud: this.userId, + did_tag: "0", + net: "WIFI", + kcv: "1599", + app: "0", + kpf: "ANDROID_PHONE", + ver: "11.6", + android_os: "0", + boardPlatform: "pineapple", + kpn: "NEBULA", + androidApiLevel: "35", + country_code: "cn", + sys: "ANDROID_15", + sw: "1080", + sh: "2400", + abi: "arm64", + userRecoBit: "0", + }; + const requestBody = { + appInfo: { + appId: "kuaishou_nebula", + name: "快手极速版", + packageName: "com.kuaishou.nebula", + version: this.appver, + versionCode: -1, + }, + deviceInfo: { + osType: 1, + osVersion: "15", + deviceId: this.did, + screenSize: { + width: 1080, + height: 2249, + }, + ftt: "", + }, + userInfo: { + userId: this.userId, + age: 0, + gender: "", + }, + impInfo: [ + { + pageId: 11101, + subPageId: taskConfig.subPageId, + action: 0, + browseType: 3, + impExtData: "{}", + mediaExtData: "{}", + }, + ], + }; + + const encodedBody = Buffer.from(JSON.stringify(requestBody)).toString( + "base64" + ); + + let encsign = await this.getSign(encodedBody); + + formData.encData = encsign.encdata; + formData.sign = encsign.sign; + + let nesig = await this.requestSignService({ + urlpath: adPath, + reqdata: qs.stringify(formData) + "&" + qs.stringify(queryData), + api_client_salt: this.salt, + }); + + const finalQueryData = { + ...queryData, + sig: nesig.sig, + __NS_sig3: nesig.__NS_sig3, + __NS_xfalcon: "", + __NStokensig: nesig.__NStokensig, + }; + const url = + "https://api.e.kuaishou.com" + + adPath + + "?" + + querystring.stringify(finalQueryData); + + const { response, body: result } = await sendRequest( + { + method: "POST", + url: url, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + Host: "api.e.kuaishou.com", + "User-Agent": "kwai-android aegon/3.56.0", + Cookie: "kuaishou_api_st=" + this.kuaishouApiSt, + }, + form: formData, + timeout: 12000, + }, + this.proxyUrl, + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 获取广告` + ); + + if (!result) { + return null; + } + + if ( + result.errorMsg === "OK" && + result.feeds && + result.feeds[0] && + result.feeds[0].ad + ) { + const caption = + result.feeds[0].caption || result.feeds[0].ad?.caption || ""; + if (caption) { + console.log( + `✅ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 成功获取到广告信息:${caption}` + ); + } + + const expTag = result.feeds[0].exp_tag || ""; + const llsid = expTag.split("/")[1]?.split("_")?.[0] || ""; + + return { + cid: result.feeds[0].ad.creativeId, + llsid: llsid, + }; + } + + if (isDevMode) { + //console.log("[调试] getAdInfo 原始响应:", JSON.stringify(result)); + } + + return null; + } catch (error) { + console.log(error); + + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 获取广告异常: ${error.message}` + ); + return null; + } + } + + async generateSignature(creativeId, llsid, taskKey, taskConfig) { + try { + const bizData = JSON.stringify({ + businessId: taskConfig.businessId, + endTime: this.endTime, + extParams: "", + mediaScene: "video", + neoInfos: [ + { + creativeId: creativeId, + extInfo: "", + llsid: llsid, + requestSceneType: taskConfig.requestSceneType, + taskType: taskConfig.taskType, + watchExpId: "", + watchStage: 0, + }, + ], + pageId: 11101, + posId: taskConfig.posId, + reportType: 0, + sessionId: "", + startTime: this.startTime, + subPageId: taskConfig.subPageId, + }); + const postData = + "bizStr=" + + encodeURIComponent(bizData) + + "&cs=false&client_key=2ac2a76d&kuaishou.api_st=" + + this.kuaishouApiSt; + const urlData = this.queryParams + "&" + postData; + + const signResult = await this.requestSignService( + { + urlpath: this.taskReportPath, + reqdata: urlData, + api_client_salt: this.salt, + }, + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 生成报告签名` + ); + + return { + sig: signResult.sig, + sig3: signResult.__NS_sig3, + sigtoken: signResult.__NStokensig, + post: postData, + }; + } catch (error) { + console.log(error); + + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 生成签名异常: ${error.message}` + ); + return null; + } + } + + /* async generateSignature2(urlPath, urlData, salt, requestString) { + const signResult = await this.requestSignService( + { + urlpath: urlPath, + urldata: urlData, + api_client_salt: salt, + req_str: requestString, + }, + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 生成广告签名` + ); + + if (!signResult) { + return null; + } + + return signResult.data || signResult; + }*/ + + async submitReport(sig, sig3, sigtoken, postData, taskKey, taskConfig) { + try { + const url = + "https://api.e.kuaishou.com" + + this.taskReportPath + + "?" + + (this.queryParams + + "&sig=" + + sig + + "&__NS_sig3=" + + sig3 + + "&__NS_xfalcon=&__NStokensig=" + + sigtoken); + + const { response, body: result } = await sendRequest( + { + method: "POST", + url: url, + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + Host: "api.e.kuaishou.cn", + "User-Agent": "kwai-android aegon/3.56.0", + "Content-Type": "application/x-www-form-urlencoded", + }, + body: postData, + timeout: 12000, + }, + this.proxyUrl, + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 提交任务` + ); + + if (!result) { + return { + success: false, + reward: 0, + }; + } + + if (result.result === 1) { + const reward = result.data?.neoAmount || 0; + console.log( + `💰 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ${taskConfig.name}获得${reward}金币奖励!` + ); + + if (reward <= this.lowRewardThreshold) { + this.lowRewardStreak++; + this.did = generateKuaishouDid(); + console.log( + `⚠️ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 金币奖励(${reward})低于阈值(${ + this.lowRewardThreshold + }),模拟下载应用提升权重,当前连续低奖励次数:${ + this.lowRewardStreak + }/${this.lowRewardLimit}` + ); + if (this.lowRewardStreak >= this.lowRewardLimit) { + console.log( + `🏁 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 连续${this.lowRewardLimit}次奖励≤${ + this.lowRewardThreshold + },停止全部任务` + ); + this.stopAllTasks = true; + } + } else { + this.lowRewardStreak = 0; + } + + return { + success: true, + reward: reward, + }; + } + + if ([20107, 20108, 1003, 415].includes(result.result)) { + console.log( + `⚠️ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ${taskConfig.name} 已达上限` + ); + this.taskLimitReached[taskKey] = true; + return { + success: false, + reward: 0, + }; + } + + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ${taskConfig.name} 奖励失败,result=${result.result} msg=${ + result.data || "" + }` + ); + + if (isDevMode) { + //console.log("[调试] submitReport 原始响应:", JSON.stringify(result)); + } + + return { + success: false, + reward: 0, + }; + } catch (error) { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 提交任务异常: ${error.message}` + ); + return { + success: false, + reward: 0, + }; + } + } + async getSign(requestData) { + try { + const { response, body: result } = await sendRequest({ + method: "POST", + url: "https://ks.smallfawn.top/encsign", + body: JSON.stringify({ + data: requestData, + }), + headers: { + "Content-Type": "application/json", + }, + }); + + if (result.status) { + return result.data; + } + } catch (error) {} + } + async requestSignService(requestData, description) { + /*const cardKey = (process.env.ptkm || "").trim(); + if (!cardKey) { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: 未提供卡密` + ); + return null; + }*/ + let returnData = {}; + + let newreqdata = { + path: requestData.urlpath, + data: requestData.reqdata, + salt: requestData.api_client_salt, + }; + + const { response, body: result } = await sendRequest( + { + method: "POST", + url: "https://ks.smallfawn.top/nssig", + headers: { + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0", + //"X-Card-Key": cardKey, + }, + body: JSON.stringify(newreqdata), + timeout: 15000, + }, + null, + description + "(签名服务)" + ); + + /*if (!result) { + if (response && [403, 405, 502].includes(response.statusCode)) { + if (response.statusCode === 403) { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: HTTP状态码 403 - 卡密过期,请检查或更换卡密` + ); + } else { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: HTTP状态码 ${response.statusCode},自动停止脚本运行` + ); + } + process.exit(1); + } + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: 无响应` + ); + return null; + } + + if (result.success && result.status === "queued" && result.queue_id) { + const queueResult = await this.pollQueueStatus(result.queue_id); + if ( + queueResult && + queueResult.success && + (queueResult.status === "completed" || + queueResult.status === "processed") + ) { + return queueResult; + } + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: ${queueResult?.error || queueResult?.status || "未知"}` + ); + return null; + } + + if ( + result.success && + (!result.status || + result.status === "processed" || + result.status === "completed") + ) { + return result; + } + + console.log( + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名失败: ${result.error || result.message || result.status || "未知"}` + ); + return null;*/ + if (result) { + let __NS_sig3 = result.data.nssig3; + let __NStokensig = result.data.nstokensig; + Object.assign(returnData, { + __NS_sig3, + __NStokensig, + sig: result.data.sig, + }); + + return returnData; + } + } + + /*async pollQueueStatus(queueId, maxTime = 30000, interval = 2000) { + const startTime = Date.now(); + + while (Date.now() - startTime < maxTime) { + const { response, body: result } = await sendRequest( + { + method: "GET", + url: queueStatusApiUrl + "?queue_id=" + encodeURIComponent(queueId), + headers: { + "User-Agent": "Mozilla/5.0", + }, + timeout: 10000, + }, + null, + `账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 签名排队` + ); + + if (result?.success) { + if (result.status === "completed" || result.status === "processed") { + return result; + } + if (result.status === "failed") { + return result; + } + } + + await new Promise((resolve) => setTimeout(resolve, interval)); + } + + return { + success: false, + status: "failed", + error: "queue_timeout", + }; + }*/ + + async executeTask(taskKey) { + const taskConfig = this.taskConfigs[taskKey]; + if (!taskConfig) { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 未知任务: ${taskKey}` + ); + return false; + } + + if (this.taskLimitReached[taskKey]) { + return false; + } + + try { + const adInfo = await this.retryOperation( + () => this.getAdInfo(taskConfig), + `获取${taskConfig.name}信息`, + 3 + ); + if (!adInfo) { + this.taskStats[taskKey].failed++; + return false; + } + + const watchTime = Math.floor(Math.random() * 10000) + 30000; + console.log( + `🔍 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } ==>${ + taskConfig.name + } ${generateRandomInteractionMessage()} ${Math.round( + watchTime / 1000 + )} 秒` + ); + await new Promise((resolve) => setTimeout(resolve, watchTime)); + + const signature = await this.retryOperation( + () => + this.generateSignature(adInfo.cid, adInfo.llsid, taskKey, taskConfig), + `生成${taskConfig.name}签名`, + 3 + ); + if (!signature) { + this.taskStats[taskKey].failed++; + return false; + } + + const submitResult = await this.retryOperation( + () => + this.submitReport( + signature.sig, + signature.sig3, + signature.sigtoken, + signature.post, + taskKey, + taskConfig + ), + `提交${taskConfig.name}报告`, + 3 + ); + + if (submitResult?.success) { + this.taskStats[taskKey].success++; + this.taskStats[taskKey].totalReward += submitResult.reward || 0; + return true; + } + + this.taskStats[taskKey].failed++; + return false; + } catch (error) { + console.log( + `❌ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 任务异常(${taskKey}): ${error.message}` + ); + this.taskStats[taskKey].failed++; + return false; + } + } + + async executeAllTasksByPriority() { + const results = {}; + + for (const taskKey of this.tasksToExecute) { + if (this.stopAllTasks) { + break; + } + + if (!this.taskConfigs[taskKey]) { + console.log( + `⚠️ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 跳过未知任务: ${taskKey}` + ); + continue; + } + + console.log( + `🚀 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 开始任务:${this.taskConfigs[taskKey].name}` + ); + results[taskKey] = await this.executeTask(taskKey); + + if (this.stopAllTasks) { + break; + } + + if (taskKey !== this.tasksToExecute[this.tasksToExecute.length - 1]) { + const waitTime = Math.floor(Math.random() * 8000) + 7000; + console.log( + `⏱ 账号[${this.nickname}]${ + this.remark ? "(" + this.remark + ")" : "" + } 下一个任务,随机等待 ${Math.round(waitTime / 1000)} 秒` + ); + await new Promise((resolve) => setTimeout(resolve, waitTime)); + } + } + + return results; + } +} + +function parseAccountConfig(configString) { + const parts = String(configString || "") + .trim() + .split("#"); + if (parts.length < 2) { + return null; + } + + let remark = ""; + let cookie = ""; + let salt = ""; + let proxyUrl = null; + + if (parts.length === 2) { + // Format: ck#salt + cookie = parts[0]; + salt = parts[1]; + } else if (parts.length === 3) { + // Format: remark#ck#salt or ck#salt#proxy + if (/socks5:\/\//i.test(parts[2])) { + cookie = parts[0]; + salt = parts[1]; + proxyUrl = parts[2]; + } else { + remark = parts[0]; + cookie = parts[1]; + salt = parts[2]; + } + } else if (parts.length >= 4) { + // Format: remark#ck#salt#proxy + remark = parts[0]; + cookie = parts[1]; + salt = parts.slice(2, parts.length - 1).join("#"); + proxyUrl = parts[parts.length - 1]; + } + + //cookie = cookie.replace("kpn=NEBULA", "kpn=KUAISHOU"); + + if (proxyUrl) { + if (proxyUrl.includes("|")) { + console.log(`开始解析代理格式: ${proxyUrl}`); + const proxyParts = proxyUrl.split("|"); + if (proxyParts.length >= 2) { + const [ip, port, username, password] = proxyParts; + proxyUrl = `socks5://${username}:${password}@${ip}:${port}`; + } else { + proxyUrl = null; + console.log(`⚠️ 代理字段格式错误,忽略:${proxyUrl}`); + } + } else if (!/^socks5:\/\//i.test(proxyUrl)) { + console.log(`⚠️ 代理字段不是 socks5:// URL,忽略:${proxyUrl}`); + proxyUrl = null; + } + } + + return { + remark: remark || "", + salt: salt, + cookie: cookie, + proxyUrl: proxyUrl, + }; +} + +function loadAccountsFromEnv() { + const accountConfigs = getAccountConfigsFromEnv(); + const accounts = []; + + for (const configString of accountConfigs) { + const accountConfig = parseAccountConfig(configString); + if (accountConfig) { + accounts.push(accountConfig); + } else { + console.log(`账号格式错误:${configString}`); + } + } + + accounts.forEach((account, index) => { + account.index = index + 1; + }); + + return accounts; +} + +async function concurrentExecute(items, concurrency, processor) { + const results = new Array(items.length); + let currentIndex = 0; + + async function worker() { + while (true) { + const index = currentIndex++; + if (index >= items.length) { + return; + } + + const item = items[index]; + try { + results[index] = await processor(item, index); + } catch (error) { + console.log(`并发执行异常(index=${index + 1}):${error.message}`); + results[index] = null; + } + } + } + + const workers = Array.from( + { length: Math.min(concurrency, items.length) }, + worker + ); + await Promise.all(workers); + + return results; +} + +async function processAccount(accountConfig) { + if (accountConfig.proxyUrl) { + console.log( + `账号[${accountConfig.index}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 🔌 测试代理连接中...` + ); + const proxyTest = await testProxyConnectivity( + accountConfig.proxyUrl, + `账号[${accountConfig.index}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + }` + ); + console.log( + ` - ${ + proxyTest.ok + ? "✅ 代理验证通过,IP: " + proxyTest.ip + : "❌ 代理验证失败" + }: ${proxyTest.msg}` + ); + + if (proxyTest.ok && proxyTest.ip && proxyTest.ip !== "localhost") { + if (usedProxies.has(proxyTest.ip)) { + console.log(`\n⚠️ 存在相同代理IP(${proxyTest.ip}),请立即检查!`); + process.exit(1); + } + usedProxies.add(proxyTest.ip); + } + } else { + console.log( + `账号[${accountConfig.index}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 未配置代理,走直连` + ); + } + + console.log( + `账号[${accountConfig.index}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 🔍 获取账号信息中...` + ); + let initialAccountInfo = await getAccountBasicInfo( + accountConfig.cookie, + accountConfig.proxyUrl, + accountConfig.index + ); + let nickname = initialAccountInfo?.nickname || "账号" + accountConfig.index; + + if (initialAccountInfo) { + const totalCoin = + initialAccountInfo.totalCoin != null + ? initialAccountInfo.totalCoin + : "未知"; + const allCash = + initialAccountInfo.allCash != null ? initialAccountInfo.allCash : "未知"; + console.log( + `账号[${nickname}] ✅ 登录成功,💰 当前金币: ${totalCoin},💸 当前余额: ${allCash}` + ); + } else { + console.log(`账号[${nickname}] ❌ 基本信息获取失败,继续执行`); + } + + const adTask = new KuaishouAdTask({ + ...accountConfig, + nickname: nickname, + tasksToExecute: tasksToExecute, + }); + + await adTask.checkCoinLimit(); + if (adTask.coinExceeded) { + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 初始金币已超过阈值,不执行任务` + ); + + const finalAccountInfo = await getAccountBasicInfo( + accountConfig.cookie, + accountConfig.proxyUrl, + accountConfig.index + ); + const initialCoin = initialAccountInfo?.totalCoin || 0; + const finalCoin = finalAccountInfo?.totalCoin || 0; + const coinChange = finalCoin - initialCoin; + const initialCash = initialAccountInfo?.allCash || 0; + const finalCash = finalAccountInfo?.allCash || 0; + const cashChange = finalCash - initialCash; + + return { + index: accountConfig.index, + remark: accountConfig.remark || "无备注", + nickname: nickname, + initialCoin: initialCoin, + finalCoin: finalCoin, + coinChange: coinChange, + initialCash: initialCash, + finalCash: finalCash, + cashChange: cashChange, + stats: adTask.getTaskStats(), + coinLimitExceeded: true, + }; + } + + for (let round = 0; round < KSROUNDS; round++) { + const waitTime = Math.floor(Math.random() * 8000) + 8000; + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } ⌛ 第${round + 1}轮,先随机等待 ${Math.round(waitTime / 1000)} 秒` + ); + //await new Promise((resolve) => setTimeout(resolve, waitTime)); + + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 🚀 开始第${round + 1}轮任务` + ); + const roundResults = await adTask.executeAllTasksByPriority(); + + if (Object.values(roundResults).some(Boolean)) { + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } ✅ 第${round + 1}轮执行完成` + ); + } else { + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } ⚠️ 第${round + 1}轮没有成功任务` + ); + } + + if (adTask.stopAllTasks) { + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } 🏁 达到停止条件,终止后续轮次` + ); + break; + } + + if (round < KSROUNDS - 1) { + const nextWaitTime = Math.floor(Math.random() * 10000) + 10000; + console.log( + `账号[${adTask.nickname}]${ + accountConfig.remark ? "(" + accountConfig.remark + ")" : "" + } ⌛ 等待 ${Math.round(nextWaitTime / 1000)} 秒进入下一轮` + ); + await new Promise((resolve) => setTimeout(resolve, nextWaitTime)); + } + } + + const finalAccountInfo = await getAccountBasicInfo( + accountConfig.cookie, + accountConfig.proxyUrl, + accountConfig.index + ); + const initialCoin = initialAccountInfo?.totalCoin || 0; + const finalCoin = finalAccountInfo?.totalCoin || 0; + const coinChange = finalCoin - initialCoin; + const initialCash = initialAccountInfo?.allCash || 0; + const finalCash = finalAccountInfo?.allCash || 0; + const cashChange = finalCash - initialCash; + + adTask.printTaskStats(); + + return { + index: accountConfig.index, + remark: accountConfig.remark || "无备注", + nickname: nickname, + initialCoin: initialCoin, + finalCoin: finalCoin, + coinChange: coinChange, + initialCash: initialCash, + finalCash: finalCash, + cashChange: cashChange, + stats: adTask.getTaskStats(), + coinLimitExceeded: adTask.coinExceeded, + }; +} + +function printAccountsSummary(accountResults) { + if (!accountResults.length) { + console.log("\n没有可显示的账号信息。"); + return; + } + + const totalInitialCoin = accountResults.reduce((sum, account) => { + return sum + (parseInt(account.initialCoin) || 0); + }, 0); + + const totalFinalCoin = accountResults.reduce((sum, account) => { + return sum + (parseInt(account.finalCoin) || 0); + }, 0); + + const totalCoinChange = totalFinalCoin - totalInitialCoin; + + const totalInitialCash = accountResults.reduce((sum, account) => { + return sum + (parseFloat(account.initialCash) || 0); + }, 0); + + const totalFinalCash = accountResults.reduce((sum, account) => { + return sum + (parseFloat(account.finalCash) || 0); + }, 0); + + const totalCashChange = totalFinalCash - totalInitialCash; + + let totalTasks = 0; + let totalSuccessTasks = 0; + let totalReward = 0; + + accountResults.forEach((account) => { + if (account.stats) { + Object.values(account.stats).forEach((stat) => { + totalTasks += stat.success + stat.failed; + totalSuccessTasks += stat.success; + totalReward += stat.totalReward; + }); + } + }); + + const successRate = + totalTasks > 0 + ? ((totalSuccessTasks / totalTasks) * 100).toFixed(1) + : "0.0"; + const coinLimitExceededCount = accountResults.filter( + (account) => account.coinLimitExceeded + ).length; + + console.log("\n\n" + "=".repeat(80)); + console.log( + "|" + centerAlign(" 快手养号任务执行结果汇总表 ", 78) + "|" + ); + console.log("=".repeat(80)); + console.log( + "|" + + ("总账号数: " + accountResults.length).padEnd(22) + + ("超过金币阈值账号: " + coinLimitExceededCount).padEnd(22) + + ("总任务数: " + totalTasks).padEnd(22) + + ("任务成功率: " + successRate + "%").padEnd(10) + + "|" + ); + console.log( + "|" + + ("总金币变化: " + totalCoinChange).padEnd(26) + + ("总金币奖励: " + totalReward).padEnd(26) + + ("总余额变化: " + totalCashChange.toFixed(2)).padEnd(24) + + "|" + ); + console.log("-".repeat(80)); + + const headers = [ + "序号", + "备注", + "账号昵称", + "初始金币", + "最终金币", + "金币变化", + "初始余额", + "最终余额", + "余额变化", + ]; + const widths = [6, 16, 16, 12, 12, 12, 12, 12, 12]; + + let headerRow = "|"; + headers.forEach((header, index) => { + headerRow += centerAlign(header, widths[index]) + "|"; + }); + console.log(headerRow); + + let separatorRow = "|"; + widths.forEach((width) => { + separatorRow += "-".repeat(width) + "|"; + }); + console.log(separatorRow); + + accountResults.forEach((account) => { + let dataRow = "|"; + dataRow += centerAlign(account.index, widths[0]) + "|"; + dataRow += centerAlign(account.remark, widths[1]) + "|"; + + const nicknameWithWarning = + (account.nickname || "-") + (account.coinLimitExceeded ? " ⚠️" : ""); + dataRow += + centerAlign(nicknameWithWarning.substring(0, widths[2] - 2), widths[2]) + + "|"; + dataRow += centerAlign(account.initialCoin, widths[3]) + "|"; + dataRow += centerAlign(account.finalCoin, widths[4]) + "|"; + + const coinChangeStr = + account.coinChange >= 0 ? "+" + account.coinChange : account.coinChange; + dataRow += centerAlign(coinChangeStr, widths[5]) + "|"; + dataRow += centerAlign(account.initialCash, widths[6]) + "|"; + dataRow += centerAlign(account.finalCash, widths[7]) + "|"; + + const cashChangeStr = + account.cashChange >= 0 + ? "+" + account.cashChange.toFixed(2) + : account.cashChange.toFixed(2); + dataRow += centerAlign(cashChangeStr, widths[8]) + "|"; + + console.log(dataRow); + }); + + console.log("=".repeat(80)); + console.log( + "|" + centerAlign(" 任务执行完成,请查看详细结果 ", 78) + "|" + ); + console.log("=".repeat(80)); +} + +(async () => { + const accounts = loadAccountsFromEnv(); + console.log(`共找到 ${accounts.length} 个有效账号`); + + if (!accounts.length) { + process.exit(1); + } + + const maxConcurrency = getEnvNumber("MAX_CONCURRENCY", 888); + + console.log(`\n防黑并发:${maxConcurrency} 防黑轮数:${KSROUNDS}\n`); + + const results = []; + + await concurrentExecute(accounts, maxConcurrency, async (account) => { + console.log( + `\n—— 🚀 开始账号[${account.index}]${ + account.remark ? "(" + account.remark + ")" : "" + } ——` + ); + + try { + const result = await processAccount(account); + results.push({ + index: account.index, + remark: account.remark || "无备注", + nickname: result?.nickname || `账号${account.index}`, + initialCoin: result?.initialCoin || 0, + finalCoin: result?.finalCoin || 0, + coinChange: result?.coinChange || 0, + initialCash: result?.initialCash || 0, + finalCash: result?.finalCash || 0, + cashChange: result?.cashChange || 0, + stats: result?.stats || {}, + coinLimitExceeded: result?.coinLimitExceeded || false, + }); + } catch (error) { + console.log( + `账号[${account.index}]${ + account.remark ? "(" + account.remark + ")" : "" + } ❌ 执行异常:${error.message}` + ); + results.push({ + index: account.index, + remark: account.remark || "无备注", + nickname: `账号${account.index}`, + initialCoin: 0, + finalCoin: 0, + coinChange: 0, + initialCash: 0, + finalCash: 0, + cashChange: 0, + error: error.message, + }); + } + }); + + results.sort((a, b) => a.index - b.index); + + console.log("\n全部完成。", "✅"); + console.log( + "\n---------------------------------------------- 账号信息汇总 ----------------------------------------------" + ); + + printAccountsSummary(results); +})();