From 9b308ecbd4e8cc6f3b301f8c219ab6596a8c0069 Mon Sep 17 00:00:00 2001 From: "Md. Nur habib" <68025241+thenurhabib@users.noreply.github.com> Date: Thu, 31 Mar 2022 04:09:44 +0600 Subject: [PATCH] v1.0.0 --- README.md | 127 +++++ core/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 149 bytes core/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 145 bytes core/__pycache__/toolcmd.cpython-310.pyc | Bin 0 -> 3641 bytes core/__pycache__/toolcmd.cpython-39.pyc | Bin 0 -> 3172 bytes core/__pycache__/toolfix.cpython-310.pyc | Bin 0 -> 23663 bytes core/__pycache__/toolfix.cpython-39.pyc | Bin 0 -> 23464 bytes core/__pycache__/toolnames.cpython-310.pyc | Bin 0 -> 7284 bytes core/__pycache__/toolnames.cpython-39.pyc | Bin 0 -> 6815 bytes core/__pycache__/toolprecheck.cpython-310.pyc | Bin 0 -> 463 bytes core/__pycache__/toolprecheck.cpython-39.pyc | Bin 0 -> 459 bytes core/__pycache__/toolresp.cpython-310.pyc | Bin 0 -> 5382 bytes core/__pycache__/toolresp.cpython-39.pyc | Bin 0 -> 4913 bytes core/__pycache__/toolstatus.cpython-310.pyc | Bin 0 -> 4989 bytes core/__pycache__/toolstatus.cpython-39.pyc | Bin 0 -> 4414 bytes core/toolfix.py | 104 +++++ core/toolprecheck.py | 4 + core/toolresp.py | 249 ++++++++++ core/toolstatus.py | 330 +++++++++++++ img/logo.png | Bin 0 -> 55744 bytes img/ss1.png | Bin 0 -> 392155 bytes img/ss2.png | Bin 0 -> 528172 bytes plugins/__pycache__/banner.cpython-310.pyc | Bin 0 -> 1092 bytes plugins/__pycache__/banner.cpython-39.pyc | Bin 0 -> 1095 bytes plugins/__pycache__/colors.cpython-310.pyc | Bin 0 -> 763 bytes plugins/__pycache__/colors.cpython-39.pyc | Bin 0 -> 768 bytes plugins/banner.py | 28 ++ plugins/colors.py | 30 ++ requirements.txt | 4 + vulscanpro.py | 433 ++++++++++++++++++ 30 files changed, 1309 insertions(+) create mode 100644 README.md create mode 100644 core/__pycache__/__init__.cpython-310.pyc create mode 100644 core/__pycache__/__init__.cpython-39.pyc create mode 100644 core/__pycache__/toolcmd.cpython-310.pyc create mode 100644 core/__pycache__/toolcmd.cpython-39.pyc create mode 100644 core/__pycache__/toolfix.cpython-310.pyc create mode 100644 core/__pycache__/toolfix.cpython-39.pyc create mode 100644 core/__pycache__/toolnames.cpython-310.pyc create mode 100644 core/__pycache__/toolnames.cpython-39.pyc create mode 100644 core/__pycache__/toolprecheck.cpython-310.pyc create mode 100644 core/__pycache__/toolprecheck.cpython-39.pyc create mode 100644 core/__pycache__/toolresp.cpython-310.pyc create mode 100644 core/__pycache__/toolresp.cpython-39.pyc create mode 100644 core/__pycache__/toolstatus.cpython-310.pyc create mode 100644 core/__pycache__/toolstatus.cpython-39.pyc create mode 100644 core/toolfix.py create mode 100644 core/toolprecheck.py create mode 100644 core/toolresp.py create mode 100644 core/toolstatus.py create mode 100644 img/logo.png create mode 100644 img/ss1.png create mode 100644 img/ss2.png create mode 100644 plugins/__pycache__/banner.cpython-310.pyc create mode 100644 plugins/__pycache__/banner.cpython-39.pyc create mode 100644 plugins/__pycache__/colors.cpython-310.pyc create mode 100644 plugins/__pycache__/colors.cpython-39.pyc create mode 100644 plugins/banner.py create mode 100644 plugins/colors.py create mode 100644 requirements.txt create mode 100644 vulscanpro.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..907f118 --- /dev/null +++ b/README.md @@ -0,0 +1,127 @@ +
3GnDC|zu;ESN&8 zEKA^tx*-cXObddUlU^v<2jbf^&zH3PqQz z&XiQ l!E)c=C`HYgv+Irn6-qCcyPQCy>qq=S@{4 zT&R}Fw7^SGak`|4 ri|JZvI?w2xnld)&LIa~*SO_Aa@zPQwF9^=wTPS0wdL0xIyHeVI zOGa&>V=W`=c0@BjM89Qpux0eG-wj$%k(7aLVnJHS1)!&Dy5-N< }+gVUq#OABzOVe92;6Wp3=g} o)_WmejJLL@?}myefw;Fn`zHSbFu8x^Z*pX2RP%q${8st>KPNl9egFUf literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolfix.cpython-310.pyc b/core/__pycache__/toolfix.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..155ee7e5e9e77697f4e95b41a88ddaaaf9a854dd GIT binary patch literal 23663 zcmd6veT*dOeb@K;>^?j8#c>?RaU93xIQH#&r@Ci$_jdO%#>~#{-mbm7H`$)^fdg7s zch^kUO?6khs(WW=gi!uMiWKo8 3M`5+aBq#JeEj zC49cW=Xt8CduG>843f{jtLg5l=jHeM{k=R@y!hfbo#UU*58NF7yYD}D?pO7p{m=7! z`2GA_{n_Wvojc%v<8y!Rxj*$B*XR7T s$Qwt^V5e*BAWtZT|XpfBhzZeTTok z(_dfo*KhXMclqnL`0Km<^;`Y*J^uP_{`y{j{dRwSpTB;GzrNpJztdko;IH51uOIZ+ z@AlUZ`D^5_ANJSp@z;;|>-YNWNB#9<{`!)?p7+-a{`zr$z38tS{u=vh&tLogy6LZ5 z{(4E*&z&1z9-O;y<-+s74xi2?&-330#Ue_g$IE<{mdP;7v&Hd7^yaeS+gX&&_KR|w zEV5#j 1bIpe3VrDJV-~;`7*8M#jMJPc^WZOv~zbmild!kw$Ed;MV7eb+?_4b1NZ1`9Bn^N zvOF2;rwdV5vB*(TGHbF($9z~6(PF~a(_) wm^C*ooj z+aG (WOQU;fa+n;X(am&`j-a07?e<`| z_aKG;^Ld_)Y`lim`&rI9qGAcf@;p62EJl;0OnAH$E7)loz5ei?8!A~WlF=deXR|k% zp+eHCc{+lx%~R3&k6zpPqrIe>Ke-@UPLspbMrqGq&0%6yZ=%hGWT?ex+A1v{GgqZK zd&v(X+-LH&wS|?%tnC2#A2X!1V}v@u#I!7t(YYuF>#OBx5<%3ZQAm5Q7HKk$iv6fU zEV9`_G*0)EWxntaPSdL5*-E5A9)mPQlQf@K(Q&a9`IvB_N0;-b&6`B`vr$=8#r`5P zK5aLAY9wo1jH=!=+-TyJ&SHcMI?vKY|0o^C((S5WK(ohLdekrSaazWFsw8{yfm=xo zIZI@tKThX)am?CcJ =iDR^1BcgH~jf&YK;mNiI%eWa%C9`9m z$;vT2E3rG(sLbXP!m28eL79uAY%!62&`9&5s+f6wq?5mTrW7&nC`FDXcws%Teq{q~ zF8g(QTi6!h#*CPSOeG3sGf;FRFAf^UjxcLadPmS{ZgeWjgZ`bQ#9YFfNA>g&{4FB* zPkj}F-z=B&1T%?I|Hh#9FaA!b-K_rWA+;N2jm|R7V@Dj3So+kz);F;qF0*_rMHr^l z0wuusWymKcx>}ZLEHRD6L#HHJ6+6DdlDB>>EctX%O!MR$h$a8{cfyip^ {jJS-k 43snwFfCiEg zGQ!7x2Ecg2*F%g~nH&MCFiGZXk`kAa&JMDfyu=`Ff3{UrhuIv9Q&g#+aER**PPW3D z<+*?d;0PC5_$g)I#u?ydkstR?_8c=4hlhgj+Jc37W}|#LmMaZ-!EKBk%FsC)wdfP! zOj#?U{Q~4ndidNoFsbs$N%TfKj9Shqy3Hbvl04stwrBOKZC{HLORd@EPNK(2nH5Wj zV(0 8g}d15GA~=O!BIz-ID;Uh}6a{jDR1FZWe>j!}0SsvC{Yq zrX9%Xj?xRsKqPw#p|rq#c6?B#cs@j1Fb(G%B?rhH2wZrTkBGQmT!mZ!pZ>sLun`Tu z?_RbMrHhf75@5F$>mj*qXFLWH8nTDUV48ga78q}`V@@dO44m07lWI{eM+;2cI)bTv z+nQUmbv5V&VQ~WB6=hT`b0F3d`Lx+uglqhr?C=5Z8?Ktlm#M%?)t@Hip~o?;=i)F0 z68SbM_+NZ&p3b6OViF<%;onAEl4wG-Ah}DQ0Bu->xF--PYmNkY@XBhPc$Vp+%u>b} znvjVoAv)sGvREEWYzRd_PNl*B2;)N9ePrO}cy4s|li1xBO379(XL8{uUv>(*7L1H? zDZLixMu%C;*;3XeEZA%a-=KJb2-=%RyUmkFl3ox?G)rZWlJa<+odQEfD+}8YwCrGl zWvru?AQe4B+UXPFvxC&Qlk~T)ynOBYR{!eO z3fb%_aSaOxYD!%Um0^A}V$ShcFh~5jQygjC8!Z-UyB6#bQW9FYcup1pm1Q)PFJa>f zKN?OYFbaN%AZ|KmD?+5A&07efv7xf= &h`5S>@J zF0D$BU3{BB-+CY|-SZeZBQ`PiL$67JoARc8j6Q*o)0vE~*|?g{W;QWyB8?$;v}9@C zY=4A#Fm`$r;{k9NLAbRg04^4e%>YdIOe+vR><4fXTx4)71QySyw*K3PjYo z&xK+_!K`A|i*}*4+(b!mJ_g3iARd`1!S#*Ullg>kCex|tJ#dd1*hKSvtvJDLnz+k( zA@1x (;TTyPS_qD&I%yJn3&WB!e&WjQ+mle(Ysfb^{Bl( zR7EMolQM&X;@0Zkz$A+_#~mElkN2_p?D%Ms0ZgR2dgAV`IZpjq 1>_Pn=B z8_|5iB&L*>ib{NH3gumrpc( _-qO!6xI%mSx#d`1E7JyGI*5~#alf72o}_Wot33F2^TNc$u$TnAdR(d z5l< d?frHS)TH^B_nIZ2W>*FJ|4(o;cC-`8l(mb+Cc;B+#h(3$SGgmWwa-FKupJ?r&c0 zdwk}C4~eAq9k-^4<=5h)NkK?RChu`FI_@Kr@05-CL)&J)g9l_CIaw^HhkTeI^>Tfd zqruA*M_8{0@G~_Q3K@Es?&sJ>gaioaMWX7R{P2CU1|>(FR#IJPNz&S)WGB#{Vs-%2*I*15dO1HR+00nx^+l=UIa5bA=`161 zQW8pGi3%KxC@>|5mSOD(%Je60QPBaQ69gmaGNUFlBfRN+t0^w>ahRs$*7$9TVKw*% zVOg2fMEM@eJSz|*i VwXNW zj?$#cG)!)>nuCRRZw|Dh^`XP4y^~)?s4?AUWL;3RJx@mL3C kld64+%ck>t_XaJw2rP#Px~qoo3HI&@qBPa8SFe0V7c+M#tu(D% z42idTCx2o0_8>YR;08oKBF{$THbST=J$Q##mkFF@Htaa&p5wV86XA_)gxL0|Yj~gC zW`aCSV8F_jr4Y3{5hkjwl3QX9HZtBo+joh!zkCDPbCFDKH&!SOa&FoDfO;%hpm;Jk zZOlj${u^ENTQnmxVY_0V%99FqSsnyc3ZJtv3Nk8+LuFts>QR2xB`j>DVyJ9MI!2Aw zautx#nM^ouc*4{V!X=9G3I0xg#$-oiiT3m4$hnC$8Vv45mwTJhF5z)O!32*>4n!$~ z6=AOtBHJTfZM$}gCd&~9kqvi)NT+=KQ~L<^Hc3ZvFRUUkZB=WQRjiay@1S_xCsjqh zT}891zqh@0CBF2^<~H2=7IEvhZ8u(bF#B@A inaa&M026U-<)GRtnu2$sbW-aOU1 zOBd`sjUhcI)`C|w!DLh4wn_mlrK~k=G{Wa8C&gNNc{ F-l$>R|zUQpN7_|n$(%i_ehiW5KTIgv*9ii1xlczmP&SCQ*+aWpeP zVq(4KKz!hn 0@TI#iZC<$!(JXU~!8~AM*hyAf zCSNk8_{?m?+QVgP8P}U~QfYjL(2wk@e>SS7XuIu!@3uBCUC|W3d(I!>-NzFP;$Yc( z#Ij%8cBDo3$ZdLt3D`p3QDSr;zYub!+CKIpI#1fXnp|*u^C%AEWUi& Ep*+gyntSD~-HbRerka$()#=DuauLRo3__0DC swVLC+r-nKeU16cBPH~3 zGa@Ab;l{&T+dFq)FhLFBvO_6Or39Z@m*ENT`YdgltDNk>cjJ|};p5Y6suzHjs9qWn zz{#RGWEU=j=9@Ce>Y#lMu2BF% 1=QSS-=U?$QJ>Jd=CA$Fe1=lpS};$bXFsBz5Ln`2Dky_C||-QezO>$zeBTi(j6Dd}MVjx&5%q{28h2t@Y= zs8LeMMzkOeZaE~+8gn(S1w~Pkc!Dbe5s)Emf+n S4)IP%>arKe3`_k|_;Flk(ch zFWhht8!I4_yeiK@;~>d$YGDv?O=eVW3Sm4E%>TMUqEKsrk1fpLxH?gIq1+Pusptx$ zNsUZE%XYQ!cXpWd%r^)_x~e-(Vn!q1q0;}%4c{$sk*!@EIJ l&j8)vVR=guN*=_+ooR+-4DyrTDFs&VG(?oZ6QGqSfusqA`7d zqNv>rIlN}#Lz&h@MOp1r;g@!{PC3wx A(o0%e24kAw*QgOWaCN-G^WTy3x>wR!AGnWysS$xbjFEAYXsGel&e~; zN D^s0ADYk6{tUm*PMC0FnS4nugZ zujT1nvsZNU!GLr}kSMEEhEm4uB@A}AS&t-a)ZMpsTho6~JxJFC!74u+t~~ijAh4 z?^1Up^G$&Ho(>F;_9%s5DQFY5q?}Qzl^PgR_{XBV64!0W^}C4KsjV)@q!dW8$egN> zz`rPYU#8jp8CzCTvBvu)2w&XxC`2?pc8RtX1C>lcg5dG}wyCOvV=RMfoM`o3VL{O6 zP$pd&UNuo)QDOge-Kk{+Pmg@^;7p82#|#M!=mbq&5vUm$vWJD?X|2rE)QH*ncWUQ9 z`E~Ey)hozis;Ijsuxar2|JnZA !yCM`Z7TIBbeim19R>Li08dfQa2 zhyP~YOnapQp##7-v)~x$nMG-3enH+;qLhC4tv7GDwu4u3fkW9(>bGj3Ag3Ofi5)WK zchxs ~|DWN%1&f2qb70ZD=pc*5`wvuG?~OM2Ud zQOrouQZ^~ZstH?fg*w3nZ*;4cSEfMNO4SJX=E|T9>N@4?M15Pi*)rJ?J#Khn1;w@C z4`tHgi2hy+)2z#^H=oS=Z0*r`qroH5;89J33y*dkg`nx99kR-cM}r9o7`XpIasN*$ zCs(GqLGAXWN>nJwu#PuFW@ja*Ry06X(gOv^)e0k2?pu^8M8U?v*HjhdF*G*c0lDO& zoxkgy{LrouziG{PeAjcKtP~<%nO?15zX`=QDHf$xNX@AG&KK}$i6JDjb}Hw!%|3|U z&!B*m CF-S=uY%pof~6?HM)Bsa36A&SHZfVuQ&JI=E`} zeOt}CuXPrtS`M98R*oFuF}Za}2*)jjbU$MvSG=4#04rI!kayK?$xyaN7F#{Rs2Wk) z)bHw-M8d5{P5jq)0k7 IYJrSDHJfUrb=tMnAI;WuMnY}DWwvN;EP$W|`)##|8 zPecvMU(?3*N ?<=}W;Jxn!uAtOh6bH(8TuBz>Fg)xCBgN+2lC-Aq(S6DcuR zFT+%;)e{@m;Y<({IAJrl;j;>E2L!o4{Va&gk&rpK+7W_<1iY$6!wA0Fr*s9Al)$An zObb`=ETD0t31-hKK6|(BJ-D^!>bUDVb!K3*k_)J+iQ!hReVTVD+M>80mg2sI!0jod z4wPxm@%Uc3#&Namtl3PRD@5BJNIsLXA()Qk!R4?r0kc+JG0h|J#()SrAG0DUA&} zI#%Zcn}Vk$w|qrk2W?JSOxY_3D_ENa{Z7K0EU!?mZy7cK9S!c>x`#t(fg_T@!NmTc zcP-VDoG#D?_?0~o7Zt`cm)KX6v31sm-B>!-6I62Gp};yt1GX3KS`HA6fzV%|3l=<} z7zFNpkL3J+?4e(S#qx;`W3dqHtBWs7BXppQwL>?$LNVFFk)2`i-Tt7(0Z7T=BwH^) z0Y^MK9%2p1%oAU^G4(yI(KOpQ8C^_>DP15rTT=Z;rq$L%kJtg30;@INrN>I`>Y bU+YU`V_54biW#c$*S2)>P_0mu&ASzZhOI@2Xx#=pSW=H^Uu<|pujA? zuBX$-c! `A^EVN6MVPYJGW>p8%E!o>PgiLe;U);i z{EunT3`Skq0@-Y({TWsi$EnH&B<0lNLOt0^YiKH^^`R3|tRqSUO_Bl4t<5R5Y!2C# zUCNVx;aI#DmxYA5TP`wXTMp74I0Xag2sfn71N7P9tNaFK6)^S=ewiddX*-VCK5~hP zR5;JSxoe^Doh|)Kmo}- @4m}EIq<7Mz>Dk#*? zY1hu%L*yxp<~jO?Ek3FnPyL`uxT`S(M$8tmxI#jlS@bjGY%mjb3aev!tnHI?oE}i^ z5hA*&>ZLdVanNhsWwp_THFTeRX?yLs2?I*LhWkr&7Lk#hw0EE%>p)dp;s}K{EGMFS z8<1h4wRw?+YrrR|=!DPu?)8u!aD*TQro6kuJB^z&iZ>b8n%pSvM`ekBsbS)j!U2j< zp9nB1M>yJvR?ET~X|a#!l4%T)<9<#vZdj1B%YeGtyVXHQ a7R*B2W58qJM7f7qM;p5Qv^*k$P#Gr}^(SCN| z?$wcNa4LZ^z66U NYH`}F$5#Ojjdij_l@RD!$K3LQ9~15W>s`V_ zjwF#LU(cersxeR1r QAR@=6E^(zX43TUI6UzRJNXsTu0ElFe+(xK-Qv6m0(&jHaqsrs zjp*U+yT*ZsJGTOPZF#NCLv201CgbIOnaiK>P@1;}FD9q;#4X>b8cUT@XPGX01OgmU zpY7*ML4j}zSjAzvfc{=FzqqwYkwsg%xMQ+^aW`xR2EQaD`6n=vca-rugTpSxWHp4k zVjHq!5;%)XpfLzgmZ?=6l+sU8J!?;Q!4F!hQ+-A!-QMmv6Bt5g%<-X2E-3bADHa7) z12djw!MTRe)#2A+WOnmg0DF|_h!2@5u^wy7ktZvH3~}7;h}RaZu&SL#Td{%C=G9HP zJicw9-n30hNM;B8Y*LT-kTz|JqJYN)A=M^H*OpKmpR?0aTZN)t@+0uX b;5-4QF V zu(en}Ta!?GM(! jI 0GrQK}J( PLo<4WG&pWJR&a4toQ&C z%^U >-qobT!f=7sFG}J*kFL91I5O;-F0XexaN5OR?m3BPz$Qsjn?5}?~?7O2K{msp* zo12$6Hy?RQ$Jsoti5>ferDFu)<1#F-?$sHfHll$Mf#jwcWEJM5zVWLL9C@zG*_s6Q zl0S|_Ju})9A?=XG?(2IndK}%nb&ozL)lkF;cMQlKk3hyq93U9ncN{&uHQ0-`ckf06 z#W8kh_jX-r33x|`XTl3sygIX2cSPO_o_;1rLVxH-QG%Urb$zNlw zjZ?Ju5X4yIS10D|{VTkah>VHrH5m7AZM|~+4kkw<_d vlabe9k zs$yRhi+^sr&eg8u(k-BCrHI|B+!}$MUE6laDBqSwlEF?a5wUEy1V(|2)jn5FL$^b+ zQ>_umemb24I BsvDcM*YxK$7qi^bKMHXeEHYLz@qtMCq^VU5)p%Sr~C7KPg~^4Z#M4~627Bu zgL{|9XB(Ee;hhMWdV@r4F0&REL(^^VXq2qm^H(q*Lz3bIr^;w3vw9ZQAqy12;_~hw z?(_l&`GPJtX6~u)H?jyuIho}git4bEPu>k-J4F{1N2$90w6c8NCIS;n7k+G8F|*Is zyLJ?_UlwdDbMmbGoI*lJmXKGs<0dcZT>&XMG%&160BwPkD%e>e88h&Qi;VGd_5w9) zOA@J?tc0m5MTx<)lB4YwU}Yto5NaTaWRqT(!ETOODA?|a2!H2kff&iqVCFRt88sx{ zopTGF%1QL )ybD8~0N<;gukoL_3oW7%M3G zyKr5CVF}p~lP4SK{Tb;Djt@6&0 zX^pA@Cqd;lrm%vR(cl|93h#^a|7Q@Q-p0Ml63AM&kC$u1t@bM=7A3tQDA&(E29Vmi zS6W!g?z9|)?52M}rZYq^fwZleJjnMlWf?G8Q17=^LVvS);oWN-)}!fE2RSWlRV9c; z)~NwkO6-}x*duj_X9xy^eL9;LRueYaM8K*80q&*SH~qWb+VeFx3PI6PNgjW{K6mOe znP(tKAMp5R3}s~%23f8ORq*2WRV3?FQWjw5;g1({J5X6?F$8J=KZnEKuo&C>1B5!< ztvZ8ZQ9KE8C8-4 i05dX $AT S^juHtgsa0tl=QDOwv7q5VqKNsEKHx+Sju#?!oj0V2f0b k=pbG7@{nw(*sEvM>U3)RgevLi}ow?sBM2dfk_7Kt;}C~80P&>a#YkC;Zctkk58 zg~bc?5ut$>t2Ufd_eSVqf_{Ss_jiLd;7)(#b-5QHiF-BCDuvy GwP0Gyc I3$W*atu z+c0*Odi4S|+wn$a*Q|ss=-iCz)p})Ayg8er;Zfvc)6!E|)>_tTNvL+!Ve$q-g-E1# za>A%6qjkXAxUHrDqkxXkwU!aEC{S z$7=68oYTw5L#e8hnW=HnmOT`V7DNJrD2`Cynt&I}^KOY=fF`S#u&dTlI>jR12?yUw zMD_+fYRL`*JtU|srq(mg*vjS_3QeC7g%GzUpGIJAsmDMh8r;7T;%qa}NXjZL7y=E) zODS3Ol(%zuhZ&Cfu6x+9UofCv&{ijd<+U3L$BphWdy@k`ZB`Rvp}M*Op?qN!`O-G- z*g+I+3Sd7X6$nv6(hUcgft*eGCVC^Uy)-qv`Cx17<;~5_OV_Skd1WgeSY*N5X5Jv7 z$Vr-*v19B}{2*Q2$aph?u6x|(k`oUuJol9s7DbWY&Yt}Ex$-JPVE_589x?nh?N8_y z81`>EBi;Y(GFLMpS$Ik;W!l$+#7({V@mJpVd#Tj&Qi$INd(Krq&wo1Sy3cifyZe0S ze|O*7`JdevI=|U{d*{D*-_iMR-4{FmrTebVf9k%w^B=nJ>HPcddpp0;eP8F-yYKJ( z+wKQCzt;U==U2NQ>ip~OhdckW`;pEsbwAqq=iQe&zu3Ld`GxMq&OhzOoqy8pcm7d# ztMd=Lmpeb#eYx}ZyVp8j?!MCb+3qJgKhynW=kIkt)%m;K?atrs?sWcU_g3d`bYJcK z_3quyPj^4l`D@+#oxjq3t@D?<-`Dx6?x6FN-Pb!m(S4)y 6B9ZqoUY?x^!;y6M~g^#28zx<)1d literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolfix.cpython-39.pyc b/core/__pycache__/toolfix.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc3687647f289afa5fd0fd8c19ff27abf48a7bf9 GIT binary patch literal 23464 zcmd6vTZ|mpdEcp(EXlUy`(3`2Y)eaOr@Ci`T$1ZcoZ*mMQYNV}d!!AN0918%^>po2 zSGB6D*_=UO_{o3)Bld&e@?h8j5(I`}!!YDGBQHT9AofFEVhgrm_yRb{OAzECF@hw& z|98%*s_q$5vXul{X=|sutIp-S{=dtq U{d&88gI&MTt{<}Nhwb`J zcKv3%ev4hd)vn)W*KfD$ci8ni?fPAI{cgK{k6pjluHR?ZkJ$D5?fL_D{Xx6_kX<9Y ze$=i%Y}X&L>yO&?V|M+xU0=8BRl8oZ>nH5`hFy2;8ryYX*P&f^?Yd{zeXiF(du4ik zbmiKOYw!I}Q1D9fUan8dCQ72`tGr07WSr$$bG8$`yQ=xNh_Yf %tL3uPP4;P7mCv&&H!aF4jp}r=su(^>YJMK2 zljv%d*2}V}vvHnA%oH6yJc#1xuq F9@b^P63Oe~q|9@+RV6t;@!w^Y)#=clh|40jKZYW8{4gxmnDy*% zG?+Jw97eweqtE~AD22*RCN^~}jUJ`RX>yWAche@FKt0FXgVE98Necg$%RHOdcpa-} zS U)IrCxf1!9u+gKd<;&(xqQ}{!D(iCAM8>Csj!&IrP0L9=ScDr* zywV~@xS(^9Hp6u~j-}i6u!LsMvvfTy^J!Yee5xgT@rheW3^^-gV>nHhd3na#Vm-^o z(-{3WwhpIRz04E)F^L_uVxv|pYQ>WpL42 !-m|#VkdEyxD*NCW`MU%2<5}xc^u#B7GR8pMrOjb?dS%uxHCsnqT5Y}~x z49Z-rvt};)pplkkT{H9cNaw$MsT48qBt?!Tcws%Teq#fDF8g(QTi6%i&WxCaOeG3c zH&ApZFHbtgPB3dP25acFG&+^l$?!o^VJ>0Kvvzt2{yq`>x4sO)?^dg2f|a zi+sb(RI8kO&Gwr)ngEGpe)6n1^%hDdO9sxcQ0=e;Xdsy&BYYfY0E`!WJ;r!d$r@0F zNituPRJfG1ILQimiBa1BY^$hGvn3X%tW!VX7}pn^Y>hR`a{&*)5iYd!Q_8+gGr&!g zpAF8B9WxV$hl23hf`xgCNxquOl?J@vHpUKR=p2oD^oek$tQFDz0OU*t_}q6esq)B4 z^iDdCdd?}j&mz`Ip6^5lMZ0R-S5slBHM`tN^gOAuas^QgJz%^WTys%JDI??G7fG>V zlrt@3Rm)i>E8Mf$^BU*{kcE1hV*6`HLjWGQ4U37Bn1xB6GjZt|(N4&co&!Or3@tS5 z*0Uo@cw3p|b=kTn0ay{Kk6Rc4KN{UFN1ub^SMOq_@fl1zlGB}}*OHM)_7XyAfire| zQl)r4L|ZTo=Nu&`$Q%e r!*)oRjU; )W>6nysrtCkTrZ0Iw*Ma+L$I zR>-H#)+1c!?_`HhaNls%RK7|DR_fs*sZKqP={*;RDUiqyO2L2oQ_Hl7j)+N!0EB-# zZAqdz(SqbIeF3y#72=*iq^vm- dm2O_imLF*YF+Q9^XYqgA;&ncEPGfSgK$ z{}IMU+PyaLa<()&`$_C>3#DW$SA|^o`4^pnZUrNgTuQG6y3t|Qs#wXogaw-o;Tse$ z5J7wMXt#TEE$IcZL`5otlvHQi>=YO>T3OhJpk*g>EMptB1gRJp(oSCppPi(}on*Lo z 5S>@JF0D$>Tzs2A-*zA^-SZeZBQ`Pi zL$7&>oARc8iavpm(?Z7AY+OrcGn*JUk;afaTCy^4He2P`3^Yt|NShFKa)vh>hjt-q zb#wlO5q`x (wWBBIWHHi`)av&v!+9YJfkiHhKS3XGRQ zT$?Gu^-b85`GjdE)2Zk^aE}?-ME8BGIKge2xXXDV?(9rnO$n* !Th5(qIRCUt?ZSyI`QLGmH=?rmi~S}zY(Q3~;-%AlaQwYfJiNt5QdgA@Dl zF*ctaujd)SM5?PN9v+$F)Sq=u=0|ded-6#S84etjiH8wf_u1CG2#yY(jI;zxg+#$2 zU5tx5dm|T6L;Qh&IIhsJcLll|valvyCTL$hoRTkbmI-9ehxi<>#f|4$eEa5Y`1y^p zM~|S(F{|2CW3TJUbdeS46X_&qEz9i`v(MP8-YV@x%Q=&nQd%l1@u?}4cSV9~0^quU zb)3ygu`c}~VT<&pQgWe%8lGZ3z2jkvnkPwxtT>qEu$`AHX9nQ2DUeWDKQLxFofQp$ z1_sOE)lw91@%STHPz!c8mf9s;yjUl KK@dPn|YfeX R|)6tiW>d{&0VH@A`1}=FsCa7ko%0wePq$MJ&G-ujeHpA(_1A z$>eN^Onyi<=ARsx`3@eCb>w8RoF4LFj?~NbS&jxTQ?9XI9pGnbEEF>IG@a$xMuY?i z=tZI)od3#WvIZ4N$?#yCx}7ERR3u8Wx?Ujz=6a1Y8*&p}#Y3B2bt|c_^(1L)QL+>0 zPg$J6^eq^Jg D2E+S%Q|*!tK$Xk5WJPf ziLKn-;MgHC|0ap~ZyYQ2xhY!QqHqtA<>aH`i&O*8*3%rBrOvT!m{jdkTsECQel+UI zMPNBZ&|NKjPq23{5T%8Ny?NuO^&c~LD6KTDYR1G{gY$oRbbl0G4R8Y@ugS9!xlIsi zN)O)QwPgZlnGHKmx#w(Y$V7M}n;^CW>Kfi>_n9CM6Bw|uWhq4KPK1eCtK^oLgN=+g z(Ds`}+dsR5?72v$wHq6h208a^en35zEKocdoHk~p3;&HS`YkHROxUj2r}CtNU6uzy zmBQz2ih@ka@>CgEi+Yq_bqNa_sT?a?l1@>hty~3UbS4wd8=f%rgK&wWe1gC8e`~TM zvP82ySvxn8Mx)WA==xwcIwCwSDVX4K$$= fFR*aLDc=}CH0VuMVOu0DXE^_&~8c^l-sww6E1Gef#Xf`|qu?(OLyLM}SI zj+!MZ;RJ|BT;@jI!u;F(Sqg6;2f$O!*jG+t7ZgEino#a)*JRRUbs5QnLTf8AB $ZxhhlVXmwR(GpI}Deky& SZeGOoI!&AF`|&udn)x(2YkkYc 5r3oJgZb<;f=#Jibx?%gFV#To(pNOsuyYh!1>n{GEemZb(cEbW$W@f`n(z zW~db?%DEAw3L~k)nhn|^l|k|vVCS)-S(OUx5lxwA ?4wo9Qmda@}B<|mI z%sEqc6WI}0_|o0`yEkq_G|OCLFi)5mc9PYW$(KwiJ~JD!^>CG1#`Uh8R2n}Z^dr0K zpN;AT+HQN`yS?508=B(p&-pdpeLA-w4wikpSoYTkj rmt%(e7fSKma*gLR2W@e+z?d~bSouuKV#g&oV*_Z24eTnj$SChF5?LwP%}5qcDa#OpdY-WAHe z5@;vW=L&t0i{0C*n!wZV5KsTzr gYU{E3)wm5vVeT LHf&J|uLw*-G`y25BuBNNcGT|NAron`~`4Z@JF>Q0lG(a3kG z41fBL@0NIjt-UdFcIS&AbFUjFVh_E%G1cLLepay%K;-)g=Qjae!_f!SPUj_O20O zB@^J%@Z^~wRL|>?FRRmhHn1w~BUTXK=~e*Tm{aCKSFnbpW?2TUYm6pTvsK3v_NLI_ zi|r9{n?*>L; Lh_NnX;nQ z6nSXD&{#P5h_!;3Z7GJ%II(Dppt_NARj*aaCzy4wA0)`u>q=nxt~`h9ScVZ$;Kjl} zK|Xw#Y9yLo^=@e`PcHBagx`bY2A;rS2+#GcJe_Oyitauck?sf*WtGZM%DBIR!R|Ke zk%W!9``)38HSn|oxc&KMBmxw6`lMg6(NyzY>W*Z-2{7N&f#J~}r4TFyZK9TxGfMSR z15*nBSaet7x(~Vj9x*$$)zy@g0x1@mQxy{U7bPFcG`l}z%StNN_+AOZuN`<4BATAL zMB9deN){kN@c686s@mWf%itO(dVN<|5cD~eNjHX9P1ILZ*neAh>KVa{BcDIH6eH3x zLjnUjK~q-*>IR1FVPSY$D>HR9Vs`$0+WBvO)jN0f3bL3g>K+Sh8od3#w*UV4q1|Om zyuUmZdV^d_i;svF`Qxr4s&0!m$smZ{Hx=9AznM4FUa3In0PxK$I0kxVQCgW_kT;bm zr62zG-8-)B;B8#sSoV|ptr{rEsRw3ahfMih_03xjuSirj)QOCdl^gZ><8FwBN;0b6 zkQY^I{` = zYmc8=HTrgxV8F9;mm-rzMuV*|iYFtiK&P7MkZ##J8p*nhtOZoWyGnuNn#VrKVXs^g z5MDs`hO}oZHNFT)5{$qThIg1nV+mW*+b)b^Mv9iQc{x>0*m^6}2`+e}TeZ9@1;W;< zM!+{$24zs!Dc>gQ`^wFh$&To8!xI}Qt_Oc8la_1xdo4_}F0;XMz8tc(XIG5|&qRY~ zEe) ^9AZ-&e+OHOTQfUKkk z3XrQ8MyTA^R4GKk#=+NA73C>3Hs1lc yQwRTMFrZ z#zby-IdcG3vT`BsrrnaE?2Rn8dV*0kqO_^s)h~&JTaTLfukQk0IlkP{$i~{EekmfP zt)WjSt7Zt 20NaT0OY-3Cs#`sh)T`kWhx#KEzCiUtXiD>h zwh^Ke^(g6_f}&^kvYOaBF49AhOv_ZGqk=vWH7I{e8`moZ{ry-j5jLeS1#{$*p<=Qc zoYdcBO{S6bZGPPL+JPv6pg4CkQ6WvF#9+G&Q>|W4Y*>dgK}_I;&D@61D!3gG hE~?>%~Q@7UFGw{_~$ zz-A*CP}g(At^9XL^A1H@6!)W2+}9DfV};a#GTk{I-z(QSuAZGWn~Au1U?xGt-6>FL z@#$r1^D4_79UwtF@B;ULpK>}2BI&-Mu|Y@2+I(PF@U-NXujuQb%>|1od*xsSYqOx= zNqCp#70UH3!v>(E(Sv)Ba0oqcL=rfd*kACjrCyQK1=;|=vKQi_!g%Hq`&u&g&ib$$ zOUHVGN)9{}*rsT}_M% -_sgRvyGF{W=>4$ z0?A@U^&gp5TMs>ACu9n&*7%SfE48bKGX9!ajZq1n%p&Q4AhPsRv>ws@Y6vE)i`Uhg zG{dl{qm^!Z!J#K~+($ot?feg4rFTJrS$tbhr;qUzoiit98*!lea*e`(d1q>C2^ee> zNY!V^Dz3z7mOr`pjC*xnF&(a $d+-^tvwu85xkrVuF9Qs4j3D2#VDv;?v~P1EdaGV! z6KkEni=ZpQl)aYW_tR27M%H|~O2Y^@K``cjPK#zR>dF?#W-IN_u%b9lRW=~078V!k z$zEDRQz@+voseQ3Q6gxP3}|j`PN`*c$gb>Co&Skr@m5?G65?*T$dqk4NO#~A45TC6 zkTws{XNRxy8 kgJpbmdg~E5X4EOhUsnNehM%8X;Q;0*I zBAF)7l^NpPS{%o9a^}zVkUt_*Tiam`+7$e;%O4fP-v`4xjHB$#8Oo(x53Z5Q5j8rO zBam5?|A1oS6#HP9jDDD8RjBbYcrz6g+UK-u=j|c#0!H&3eZv+XwT-8KP$k^em;ob- zCKgvnh%<|RW}F>nqE2CTOpmpFa*opjsy#wPH&we7Cm;@bZM&>Ky0C`s^Di819XDY> z$=7(cLT3>f$w_|)`mqgE#U+kVXv1 T z9p35OoKd{XxVGd*aX%(Y{HGlg7ZeUqg!V*$NjbvNPqbPV)<}zeM3+osh#Y4*&A4Gf z&MpJ$TJP2d9i4~jshD)q@+FW?!Bj87Hx>#ZlPwK%R#EbVm+2dQ;lq%W6+yrrq+2B} z=f84CSzjQn)`pKm-?#Ium=S|2CPcIB#NDeS*WgqFWqb)1p*3Gfn(xhH9+zigBGuxw zTaT{-8k*{4i7Fw`wT-#u1wSs@|F?&Pha5>FO}?E)aaCiUYELZzQFF6 ?}^4juxnTOVTdQHa5`!bh5 z;h{8d3tmi4+lhO=Q8ku2rOvWg4G07{qF&7Mm7qX41+3z*T)^ pe$3bHYlZEpnBGx?t&k* zRHyokPP)C{aV9W?&Y0svnOsop&r&ocRRc4gRmr)A(ADABVPtmmTL8Pxbi{|ulvt0o z<;as2LB=@le#C1FR#??fqixtgY4hf$Tpr&x&~Dl$B_y*0em1E`d`O$NL{Y$Ff{<#H zq-#qkj?dX?sl7tcAo*2z;_+~{oqSVGjIr^uQ#Bp8Z9^>>w`Tuf=EOT~y}vVc==s1F zb@3@kl~@-7qdH;2_$a*&wW#ZG%DHtbU)Wl#pRG%%y(0G(G{J?^?l_#~`H-AD`uK7c zSplf9r-gx7R?{|lZfQs_)2F+8L<~Dr=>GpmeXhzrezEgS{mfB6eIWxG-8mqDVJ87T zdrM?k&6y)12mUW%@IjF>cnk`#mwuyeAxR?P^=-~}G^bSxFMHmmnu_{xi%}IfaE>a+ zi|aKQ=C3rHuSz9nNS%eNn~T?ENL%X~ED4)5s$@Cejz(Jd2nwTJzMQMpBgkmVjV|fh zOIXZVjYBnPdRdR4Vi<@P<|dx$@lwZ9`eB0idUh(A78yAsgnM!tqiZ@95bHQotlWQW z`4^yMJ&(t$lX!E(eW>~s6)jb!qEk%aDLCDqJvTTR`;(#^N>Ah7ifrbMSuw}gWR5=q z6W(@&3fvaOrfJfugRF%+mPf>enH3)(qM3uhV~mTJr9KFO_a0gU=zL}@a1lddZQp)q z!~?B&Z)iY#Swnvyv-g&e3Nop~9DK{M7!4=`96&rTrogNO(2)RFBsbCo?l1@=A?%M1 zObq+rkByVB=YRe*6wdV2WhX(Mx7mQNZFx>DKRU{(C3u8*Nkbi!^AhKX193Na6_Aq) za}->6QfbFS*VdReV1L8Y@z5RZ81C-g+}*vtyZg*jI?k4HOYGP$ES(| j z^$`t>2qZVnAgiz>^^IS3;K*}b&ekMwko+?w>Xp%+2x*5bjy`=1qo>i`dynXIQVm6n zaL0h$@d#v$!~ufAeP_|rd!ys%;OJpAQXFH4cJH^9mVkG3cqY7H#j7)Wbw}i_;OS>_ zB=m=V6eZZ{R@bM>b4@9HqsL-9`QV?5X`G_Hhakoxzcw*v?_c4aL}W}{ufcS9Z||+! zZ{CV`_lCFkcjGs2?%x`ooXpn~_d 6;QW|ZA#qqRF0C0yRqQv!;y*ZObF~|}bPMQuDPngjw?$x=*S1|U z%D1JFWUv!UL@WnAfl=UMwa<;y(EX6?LTd!FpDvbwj_h2@U}1)ZH%QIK!QMfok|kT) zks130Lf4;}ZWsk0>JH;*C)UY3OC`A!-froa6;=)U3&4c9#gzc8&Vq2LE!Q>2DQAX< z)R7OyBhr&Zd-12jeQ|gxk+2_b&5WE h3fWAOV73{2#j2ZaDMaFnJdx4s@C5cpBR>D-3qQvM`$ zoI9Z;>)ybD8~0N<;gukoL_3oW7%M6HyKr5CVF}p~lP5dq{UzxPjt_Tj0 UEXz;Zig%8E~|1}CxZ|B}+ z31qGN$IG?hUi+02i;~_Dl (O+ogPaz&suIK^+th$7B@WDA9Fsc4GX#UdKAp`As|lOzB4E{l z0Qb`EyZ&8o{rS2Zg`nuDB#%F9&z-tV<|PQy2R!~6Ls?mkL6)mR6}-588Ogeklm(c1 z_~XUg4pg>T41pTJ&*^wDE~obX0HF?dtInWU6i-52NooOzT}jQ)cK|{h@f>ZFT=rHK zBfGD|b#*!oq{d-OMwH<-7x+*zL1wP#&*)yJ;b5>N&%g1)qf8&CCU;&2FP zvbugBpL+|A)pZm*bGMnVB~7H0%%M}Dx7f}psxut;ptl;To~G_(!;X$2fWZ2cqO~y* z+HXXiv^a>Xd*bSUewi0AK!jMhu30iyLMrlnu6EyBlQXQvYN776P~A)-JEC-XOJtXG zuu3swkvLP0qV*F`-60|Jh-q}sN=?dGSiI045gK{1>ccs8Z-g!;=r?-u_$WvN?({D{ zE%yQ>ajz!Yq_BI}P78cD1ZP|Sd=1GLO4h2#^%ARUyOb2`xY@=MHn}I)q|Cft9^qiW zJ99nM^Kk}{=XowvaZLK+x>(pLG1WrdYjnsmY!$EI>ppx<-Y-ntBL3jff?Kt24Y826 zHSZYheV6^R3?*M Y#~YPhvl6zTb2qA2>y1(I=4_6J zN0E 5W0y;w1TSma57_5F-s-4TM zEgKTlb7iPr(#W8$PQR&0Bdm2@TJ~#)R(n6>oL)vAN>!cAOpS}S?4e+^AQBivafJHT z1iV $@n!`5_n6yUa^lIg_k8IC zO 2bLNDq(B$bS^WZFw6q1am(o&^EJx};F fSe||9gFivRmUlz^1HIz6o^g5qYyThq_s{ tvN!m`6G;JFD?6i55Hceyu&au<8ef2tVa0sWpyE)$` zd%N42y*OS8L4{O-1mYzS2n3=6@e&9G0)apv5C{YUfk2=`R6<3dA`l1!;w9ieJKy 3MF` z+c$xmhz9W%VlQzs(Ijpm_7S%dw-L7!`-wYUnI@c{84@euJo;$hYrJhQ`>N)b%k=|x+&6i;`G=)z#%qD8Qd`+^dFBre!$dG$w&ipEyE?hjx>`Fy& zDKladcJhnr<4Et)pe+NBhsCn*Rh{J`7b1FM%qnDNdB|oQsV_H#9Xh_3?qH**GR@wV zWgZH6it3 >&BgCgmS)?+SZC_$&F@3Be31> zT6Aw?p>0=vzfOjYp2v6B?yf}lHdJbEX?U0?+lz)T=r8F}3BTlrG85hi* tP$IS_aUJts_{j>N)+esVS z!Gclj@|@?cvPr(e3cd(wgIp12qG^9v<5RY{&aq#x`U^GA)_y`u$ H3eJdfZ zd_8fGdk%a8E^lG-9C-i5hU;-*mmJp#SJU0>kkVa^c(GP;Ij=+ySymoD+jjeE>nMGg zE5i7p4!NeOB|0WX>piXwZ#Pa@{nFB1CM59vip!%DTDLGam(Az8X%^z=I!sOJ^?7Om z%Vimnk#hm}Fnl&KVPV;?>SgMtoq8ZWo!es3s^Ipu=wWT+JJ(}&_OKcrf@JJAQW2=u9C# s X>MH;Y&qiYwJR!2k@H3;y7cgW zc;b$P?W`?a5{-}-8^SGO$tzAdwBh$MJ&bYn%%m^MT&ECBMyN(ob?~T)^J;Y2cyt+& z>}OwRKNaM?GUBs?F3u#!u~8R^1~= 6p@paz zn>~&N_7GgJBrR|DqT^DO$vR>j>lj-n gL}R@>E q)OZ~k z?c}uwu!bm+QKTTVCU@`c@N4ch>c#X7sgfm!%Nx(gk}7Xh%a$YWsX83qQ(R~7>B;y8 zTeC&J3}cr}E!*m)9~Dq2R*NW39XEP7JEMNV%7U)#u;Hm9lq{! %16p6g6RVT<67wTz)pUkjRUOn)(`wQe6cha*BrM#px|k z`!4B1pc)2IhBEd-AuTkCVE$4n{hlf(WZ1Z&tU9Zetc44g)|sW^hB~pSP;OVN*s*Z3 z(ki2e8O}iUbX8%l@KVLT9vxrgrR>;6EDBYw802DZTwUUxioD1P9-H#($QBe>Rx{X6 z_Vo~jeQQ|~(XNWgK$ID7@B3jyVtAH~=&Wu9!a=sZNsJz(lTT4a^LT?M&p@%q=%|mn z7&fAy?^H{iftChZYASxJv=JR`AE-zy5i)NkwYw!nbv-gVMtYzvXNB=GbOAG?V{ B@qSYYFz&2l#a6$sUdLmx9T&CPMc)*jfQW#F0d zEbnbe(HyruF(U>Oo;N_vY8;2pnvVnhfmX}Jj96>8*?0rBWETbODlR SJ@!_^Emt}Ns7bRqVq!l(TWkY4Lq`*!+1wN)g z<>=_Xj^+pq)EYr%j-E Q;F`yVXAAdQ~~Dm4FGqS~B&cEsxx(^T*S! zN;E1`#Tg{E6f@Q^;zMg;v*W4btUh_xS5d%5d%Lt v+q7^Poh<7OcI6P&E>}kS(OlZi|KGmo2t1kro^9)ZAAa zE{-Fzs00s@b!)rHW|O$h&{Dq)Q*X9X2BkIB2shHeP&Uxm8rvbgdJx^cetN9g8Jx6r zQIhVO-otVnL25<&MkTr@v6a=kR+JVjr|#lxxs3FjdM~P{5~D84dMVY^ni+3($l_J# zoH*SSgMI0y9ShhrSM0zEo#^yp%yw;}(vi+;NQy&oE>Z`0o!XLbq)?)ZTN6n}*JBP| zd+lF8dDGJt(^XJ%>hSWkW{0SfqM=26!2@YKE)A u zr0femqMF8KQ6^Yz_MNW#m4?gDs2B6{d3+i@reXZY+-&^I>@)suZa4mF?lk^v4jO+n zcN@Pq_ZTmldyU_icNs632aR8vhmEFr#Q2#xWc #%D~+_>_6k_=Nc? Jd0d52T z2JQg=0uF$G0&fHV0Nw%q4!jfmEw~^2HFyvBEARmLJa`}Y3-AH(=ipKBr(g#BF?bC8 zA$T18K6ncJF8C<;ZSZmMo8VdS>)-_VRd5pgGB^!>5zK?12j{@gg7e^~!3*Fg!As!B qz{}uAz}JA!fj0O-umZjxTn66@UIpI`*1>mz0r)mh_B_+~mj40o^uq1{ literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolnames.cpython-39.pyc b/core/__pycache__/toolnames.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf4e1b4ef7eb0610473df51c0f618b8c0196695d GIT binary patch literal 6815 zcmcgw+jbL27B#^b4CWdLGmuFtKwwC0*(3on3Axyoj7?-)af>+1ES6SFU6LC5mZ}!E z>nUF_ACb5DCB4qe%rDH->^jx0u9jsoc^R|VlDg{bI(6#Ys@?PF&rad*t6!^a|Mt|> zKlKm$???Rj9{=UPPE1Ypro5@&P5@63zC(DDaGLNG;SAwv!ZU=kgl7rQ5zY~wC%iy- zk?<1XWx^|j?-E`myhivQ;dR145&oI*2H{P@_X+<(_yOUEgpBYb!dry53GWboOn8^@ z9^qdJ?-PDP_$lE$;R0cWaFK9{@B!gxgr5_BLHLmH5#eLPFA4uf_!Z&Tgii>+A^eu` zJHqb?mkC!0R|%_xHNrK*r-bW-8-&jYe;}+AZW3-0ZUY;8Q(nWFy8q+->EU!gmZ_Rw z2eJjW+UK3ul67Oj_<=7|9(6d2yKJNJ( ?f^`R!cqFjfL0HDi}Sv zC=(XL8<9-iAfQDn;v|T2wpmZ)bW2q+NZepDS2lJ$(b-pV9A=6wJ;V3Foy?St9m_O4 zJ&0f@H&P4F&6o17MBI*3SxFC4c9%&%<)NEY4#Gf87uy=1-gmqEOG{n#>8|-w=2%XW z!0(tdSn~znhjDO@r!0o)2)ydv77(&)F5JO^QtZWc6dbZOzRw!5NHYg{DP}CuxwOyM zUGav)UvT=(K4+t!;L F{szY76jn%5$u L&qbdvU~BQ(&Pk7m{JtmK$=(p_ITz&sdbFL5cmp zRv&?J7hi0`5>G|UT5_lM`>`+8 xSP6;(dC+s sYtOc;q7{5b_R;=Og-m8Uzs+Zrcz1^sv0lc`1WK z#asP$z`3VBbDTPU7JA3pbu>TJ6)8;`qZ`f`iZR0&zHf};g|Mad?^91OND{|hz|}*; z+t}W&)@zeE8#HfB)e_&CNFQLQBUPs4cETfUpRKMsIQCcOm?m+TCX~&2mPosTyRX&f zM#r_C+VT&RXlUSV8X6Y};@&GaR7-}fzWwys@}@ #-F#a8ZGE3Y)WRdaV}+ zz6`mDTS#WD&<*xo!PS>f^T!1zQU|g#^J1jlNaqWQAn0 iBJsSXJ1dCWVvzFIKm;uux#xFM7jZAk+gQXh8g*eD&j(6 z GenDwCIyw%_TFoVYaR{4R@p+jWvSuu@fO+B?Twbq1NnN_=ZK!x5q+Pm z(EuCiBL9H0dozYMUu6y*P$~{vXioh=eO}$vzo2Eq^mcIgtRs}HW}3jRh(kMghckvE zXS|#-S{8o%Hd<>N lNs(nVY#cA+2?J~eWSkEwKYWkY>hT&OZKD`mco>S|7v_4TOe*y*i;&PnMS+Jt3HZq7@P zt h?wi$mi 2C2TKbW9B;>Mn%s_bxeaAcs*ffxq4J}wunj2(x{BEZ7mNvFm_XNP_3@ZE z5<@19B(t5(DpOoG6#XU%yVFPEtM2MJ-o!qeDi%hA7u<(!`$AR^^;wP299E zk8w?XGt|izl@XK5O3k5k>pEb<>LzNv?i@!gpcPkpGiGWYkrzz;_$APVMrSIjAf=<& zbQX{w@`J6el&-Vp<{2KMfmJsq$R29ZF&R@xW8rpirM`JoXnSXQwO$*SGL=qvNo(Mt zQ$8xT!$Z8~z v l5e@%&yx2!4w%EsexAtNd42zA!v>!){*uVBXXtdag1z*$*)E!ll l!{M1HVeAb8{;huNEq?>doILVx=E#$ybN*jXex3UJe*wNDBM<-p literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolprecheck.cpython-310.pyc b/core/__pycache__/toolprecheck.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a9370fbb8530ddd5a187456e4c5d9ee674b33382 GIT binary patch literal 463 zcmYk(%}(4f5C`yNNwUk9rG?TD&YZZAeSlR}2~=@H2qX@@Iq_^_HnAg*chl_~A@M|W z?OXH!{Ie%4{cMjs9{Iz~X444m`RuB=i=*h@5WH`v2z~-L=yX)YI))MKK>{gcFop^2 z!xTQi0nFeKKEfwBf?@A5e1;+a1irx6Dy~j{NBY}+bpBnkUUeoI8TYjcJr$DJR&}yp zxyEoy-bqqB4wCd01sSic;Zj+ot7Si*FD22&7c$mr69{Psp{8r)H<*)`^ba$JiMH&i zbXKyZAzu>mE%&NfN!r)Wuw=~5_Akj^Q|R3y*>x+KZcXr8Nv&B0htTqHwp6u>`Q|*9 zS#Yl5TThoYm8+-74==gv{x9;{wUpPYFhzbvi~?Q$>(;wRDntITZtigngn8*a t^Ac|3V}1K1mp6aWAK literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolprecheck.cpython-39.pyc b/core/__pycache__/toolprecheck.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e10daf6c705a0635eb34d028f84d1a601d8205a6 GIT binary patch literal 459 zcmYk(y-ve05C`z2Bxwtj@6VZug>*&;A<=;eRUk32Iq@~In%I%;Hk3C);)!nMEf|1* zI$`N|$;s!_B^IO6W`Om1G0C37Ao%K%|LYvd9k>cX21O`C=)nd=5JLie7{CxVVGFil z1Us+`d$14P*#kI)uKoy);iL$Q^VdM0J_na)oV21*UU9!Ig>Nb2NY|p_VPPueYO;o- z(m2miTaf4eLMxXGjdC$-$Kx4CQrV3AQY<~8Y}=RgAnX$FWI29w4v&G<&QfkPCo@Gh zC)8`#ifYbrTN>p!ajsgu6K_ $EgArKQMJmQKi_L6c5bzBD?0Sya#Xh^aMcZY-r;mj(lNO|F_1 Y4{mBB7Zu(1x=R@#jKkh DO)}H;ZFjeJGI!FZJCjUvCv9CtxtV*Cxy_w> z$8+zbO;L0a76ru@ilQhkE51+^MNt$*Q4~c{6s6*VtSBRjqA0#l|L2@ EjaXoPZaU*dPaWioXaVv2faXWDbv7NY+xQn=(xQEz5 z+)L~v?j!Cea^eBvLE<4|7x6Ih2=OTK7_pmpoY+I`CH4{1#0>ESv7dO7c#3$Mc!qeE zc#e3U_%h-J;-kdJh>sI55?@ZdM9dNgh&iH7%o7KRmx))1L&U4ZCx``NkvL2oQG7Dx zm7G-fweA&n&)SiQc^DP`#phJ2_reU@iEPl`BB^Pz G#({!I=Pc%Vm}cz zx1PRJ3lNfd@ky#tEck>UATBCaZaBmJ5I@y)Fex6E@z^yS@f%{CXY2LAuTZpoDQ+Y7 z+!l$bB*K#_c+J&j#7QTr30{w65_4Ay9@TM%yd dh;3%ReWj5RyO3WnS4%iF#U^9Be*{v&+&q_a5V~6why})*jdADTXg>SI z@_x6_8VVzquV#zO+io?s9b;iUr>BveQ-X+8;fN6rEpysfmkO>bT8+BVx-BM9jRem{ zwYsWMy0qvK+l}i}j;NsS@m%1GFu?{ 2N%f!7SyQK zwQ&Qh)$_xRKDuL$nHt)&<4n2W@UmZ-5=q=m%WpTnjv}v-5t%FHa*2<-F~%1n*W&|j z;D!}c#`_X)Ck4ljkez0U^(dMUUZ(2bLeW+$)neIY4AU<}ESICek846k_baAHselja z@}!gBY;4w=56DI$1|tb!n-ke>ChgY)Z4{?Uf<$Q5j)x9ML#8r=+XL8rh--sOkzo9E zE2hr1LQ&~j*Psq#ePFrCu!aG%Ho2diBe~&N*I}*_eZd8lmP)J5y~euV>|3RR6iQUy zLi+`qqCj+-;Y-&?Es@zszKD9(H#>+A`%@@4rJykhC72C8uo*4;eYADjOk>>B>WLR$ zI|b@tr5KvchmG2cSbFE;^AGxBRzb4MEcNKZ%g0mw3bMSV1iR=ba>gh@QXM|%% gHMWm3{XW3vf& zx1GJt^Wpp( 2b);UXGOad-;F@4LoWF9?sU?N>%XuojS^lPUS1Y^^n`DM^=R&wVk$4 zH`U(71*r3gEL-}+X~pJRX{8jMZB+z8T#eA(4m5BQS_a3=iuTS83WPhQnhx|0q3U5v zbY|VgvQroP(pZ_>`2sHrG=gY{@0Z4LW6E_CH*XPDy~&u1I|%UX#nfZ056mrL-VjuY zqSJq(@5H$i6vJL)en>m_ B%kV0MgC<>^6sz^JK zJe+IIQ{r{#Q-EMqLuxLwxjtroa_ljUj!I8na+9j+-%M9chnF_1U80Pk9_qVEyCfNP z6rDaOS6yfiRuFxOQ3UoBXO^{-rzuh+quCsqxFsF73_C|{Q?-x}t!;2sK>3&rG3plK z1np-@({heX OzGrYdI5ely4Rd{A?%N?y6y z2dX*I=1F7G;S>iJ%wo2N)tNrz)I$uhOrw$W#<2H>TSpJb=iM4E$E#)%kEV%*H@*&@ zJY+`h7#ea^vZ&IIB~uC;=TsK<-|SoPpn##OQR?}O8fA>BM0G4)qOwIdj*X#`)^K;* zz4b{H1!zEZNBoJDynxU3w|`|aRa_*QDjwbA8C%5Y66zUbj!F(ZYchC(i;NnL`RnQW z%)K>_)grGEh>Pm|9Y2TfEM+nFUuzZnx3z}-!&=AwW^H7Dv9_>3S=-qktevcB?P0&Q zI@$BqA@(cl2)k!>v!7eN?59?S{n$FmerTOx-?z@Q?^=(tZ(A4HH?1uDx@EJkT9?_E zt*h*dR*`+)DzVR64*Rrqoqf`J1^bxwD)y}P8uk%uoPEd=>;qPnz0aCr@3BJmF6*`I z?N-9xYTagUvF@^`t=F?RrQTq*rJiE{16P9o0at_n1lNLp2RDF!1vi6#2DgEK1lz&i zgS)}sfqTK f`h*bn{)JPrN;JO_Rcya0X&d>s51 zcnSOlm;=8C4uW3+hrlm^1@H^t2>3a06#NW027U^>34R=WCHPVB)!;Lr3w{{%zz>3x Z;QPT_;CsOu_-?Qcz5|R?Ppx^|{{f>OImZA1 literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolresp.cpython-39.pyc b/core/__pycache__/toolresp.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..66385d4a3bcbb1479dc01445bea4778995ec05ea GIT binary patch literal 4913 zcmcgv-F6d45|%?kNCF`t;1GnN0P|yPOEx4Vo6Qm=jRYe4!y^Yy?#7yyX5!KGobDNe za`qxmun&>5H~UK5?#=2I_G+uETC$LTNY2Sw`}ngpuBz^;{_5)*@64GGbNKc5U!9$Q zUdrYEZ9dF?J;M)=@JIh=A(tEE{M>H~hzo@85S}1>m+(EplZ5XRo+A8!@I%6n2u~B9 zA^e!|Ea4}FpAw!U{EYBC;RV7)!p{jW5`IB=i7-!inQ)2l3gJ~kAiPF+o$v ?+~sK-X&ZmTq9g3ED#n6HwZTg?-AZ7{F3l1!Uu$36MjSZ7s77||4R5B;ok@! z5`Itkh_FOhCae%TgjK>C;bX!lgmuEFgg+2A2%Cg0!Zu>(r<~t$b1TnQPW W}g>Z~i$zg;?CAU*(39=i8x+mj) zILMSBhcr;~C1|1cgaVy C>F}w38OF#F@c^`=#|LW*Jht-;H7{|YIH6rv(fPhUg4Revc!x2 z^ziT6@K2>2M&6$u{yh%wD7hn3T}WT0MIEMM=p}_$!w5? Qj$br&sIBB;w9D|9FdA%Dtu*%H-4Wz?zwU(AdxE7;3)wz z!83%8P-X@2pr1w2y6z#9hF+Xum=T_EG(N@Ni`AhQMiYMF4*6)6(WmhTY*YOSDF$8T z#k!BQakE|z8G&&j(_uUSr{!)5X0&e(0rw77fNGDpJ&WOF%!?nD6fK z@zfa%ratC~H=hR*`=Y*IR_J6qSixunr9I5h+lhp&^hfM+{e|m7M@dss;&d3Lm>ouO zLT$|b0@wL8+u!}say$}-(rzSQMp7Ab5r@cN*#{T wP}8D{co#WQ0Rw zJ&5Kuv1L gLI)ogh{Zsf z59ZwQ1Z~XeiC^FV4{ZS4P&Q1+IK$o2`WS|e?vBe#BljF#>^5BJhP_>p>J_{FMUHhF z`x-l<_@vwIz>cTUzac#z%3kEfJygaw8t-#k97kez@)i>*`@$~<;m;`AW~W4!i)>i< zJ!E+-qfifpl5a9*)vy3+Bu~`*oY>SF$|_4mO)4ZdpU4-y=q5QjC{Dc;8)2dyZ*|9k z$8-ibWz0UtYXg)>(SL7JQ} V_-0 xfVXm?hJ9)Ed&Y!Va*a(EC;DwKfbRB- zR<&!Hbe(O^;@$0(euQc~dxPBIe-^kh+T7PO0{~7(N@jxqdoUgdm8dXI@h{7NTdFIE zcj gR=Q$9dEPa%~Im^0s+-m3Caw$@)P0t*xP1C zHo}kEZqv6n)#bwpNPT22C;Y?H(tNE udX4 zm~lasXu6vl>l )x{CF m!q;`~Zn{G?wj*)OxWRHC1aUEx?{p-RA3%)c^Xfm{HyftCt Cv?0tF!LKv)%NfTyxSvW4E2!iCJJe3 zlyAE0$Xs)w9aIpy#B2pFHAlzVsV{A%+FPXx4sk~YoER=`IjmaP50f;&2q 9e2*>iZnHeM3a5s<<2mI1TMTiV%#m-{aP7I5;0y>ew}uD!Rx`ktrvChmPsLL= z*z-cY?wV#X(vDlUEzH5KEL?rDKKDX_hDM{z>oaN;8(WFWA1+a)rl&O<8fvvx7G9rD zrHpU@rHS}oIrS|*C;0D!Vt^M(F~FDZouVT&P6 NAT^Yh;QPeXoBE2 nl0q_ied@cR^s`7jG{>QTLpXWj!1u`mPY&Arzn=V>`^WzP+{>BT literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolstatus.cpython-310.pyc b/core/__pycache__/toolstatus.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d706caaf53bf2cd09904b454e9cf4ff808b53374 GIT binary patch literal 4989 zcmaJ@U2I&%6<)9H_4Ou(#348V62^oyaTCY8_Bww}Atr0rDUNNtc1V}syL;|>FTQ`= zA3L7XhP1S$EiIu<3vFpjDQ&650}nj#zyl9FAQh=dMXF>Tkjeu>sNw+$B#@eZGk5md zvA1=!Ip=)$%*;98oH;XYS64QLzkfektbBTFD)qiF*8XWQPU07Q+MY^Lsw{pj;y0h7 z7D^i})JkpCPA&84`OH%-l%Wn_8g){ZHYseg!n)RA*C_1THP{w~ZC!(POKclmN89IH z _4$y7u5RGn6kdtzr5xRp;shEqBvmP3yF)Av~Vr(0IZ3EUr;~TJTbb15U zLtkHm-HA0)G(l%*lI~P%Ov!aeXqxV#DTU3*=z6F`V=B5?#pqmuoK@rQ#{6g1xO4DI z(Ko1^c-^D2x)=3&-}7+=-7lkffF7j#NmnB)(odr*5mgjsNNgX~fEfy#mvOXGJ=u{4 zVy;8>&_fBbprW_PzKZQua@MdD*ZPg*Cbb?T9zDDc@hMn`gcPkqd|FJ9C6&o}u&}IH zXkfev_RS{PBTcYxHNn2!1iR1#d$b95u?hB_CfIkIV2?GyzSji%KK(%Uk;hf7{E&X6 z_N1|sKTh_ofjqGR`N;<4ryGzbuR>CEiJn@A{EU8n6(V}Z 4$Mdd+6!J ztARX|Ait91eoeojXH{mumB=>wUE=e5SrO0CAHdM_sv`a**)CR@Vb|dV2Bjhb=&OhMi#f;h@}RdW(m7r{jjK=0* y{X zTw~v%T)?l<1MiSygti$}U8lx(M~+^x3>Lb~Hv-pMG+5mYLZ%bJ4)}GaT*oo0q3Jp- zG;M>J8--k3^7<`z-gL?xOJ22ZR2Rw_@*_{T%9~=Tz=vGdw)FC*SW1w$-gDqS8G9iY zlsEZq#SMe_%f7k5U~Y{?j_H`8saqz;f{VHp8O(G5dwO+&=^@Wdy6o ~Rj^o#tlnO^_#jfwk`wp_ z*ykbNamtM>Vq)tW^plIV5p<3jV*3I)ZU{+sV%(B$EnwKKy}i9TRzr*th8<)%tmcEX zdFVrG+#$Ysgly0@Dsnj saY0bstH%8{)%qtP8HP3bXmb(X|*cEJB8EO z)ZAo|?*NmHbWIC&iz(zeEO*SimKoT2q^dg`_n664l@r2=y%A2V6dKAf*W^maSxyy$ zz0yXeU%}~|nwuz2&a#=&($vJ+Q8qqRn&rK##MVrQnC>iJ72tC3N;@_aWqdRCJKky$ z-ID7sAW`P|I2wLvE%)-SscJRyeZ#35>~yga&|!X4ak9j?sQ0i@?`x@!6F9 Bq-^RTa#_aMGzUVO*@nt*R{T(&w2r-ENQCfX?iH=NMNw#smhh>EY7hF>)X zc?arj-n2cwwc$G2e+I{Gf6!O%!08M9 #{is+7FernBaV_tfBh`Roxkk3m(}vkf9hkwu%&D FPfwej8Z{2piPjz*&e_?_a~5?u<3Fchn}&}1R;EjihH#k`?t$BkJB z)$Bt`7L*)T^01Oelsu~BF%T)E$~6=;i5S7Dj1`>9SSj$K{~tIL?Rb6OJiRBsvKb8= zoA*G)k3xg@iz_3?_M_ta;*t+=Qbo0?!obC`-$0Hs>2jyocRL6kwv@UoR9OwKuU9Q2 z)+6$K@>G>ng^n${jSb@rZ4xu!Dzb1LN>EgC0%D*lBM0TY`;1xj-N3DdtaR4|Q+-{& zC(st>%N>Sg>-F=LEEL$4Bmn5VU6lB7-j1tt*hVqx9vb6Hn}e3Yx87}3L^+}|M<>Ni zQY?3g*y4&c&EWIybN%Q{{nNf1#&3^%@^Y#nd!=Kku7~i%8Sk7;9weJfZgs&3 u(ZDXLWSIo*l z(Fkx1yn(ZkRl-?Aq66q?#()?b-(ZKl K!vRkG6IJ+I5SJEG8JLUHev|UoZuk~sIe=oCF%6GE|rQbVR zPJVwoQ;_&u+EHo0nK>ctH?)(|eqAd{`I Oxjze eI<24YZoZ= zFH#pWonl7lpTS460R0pAY*juVr!I7F2lf%LoyzwE_)12AzYo1v&HWyH_NsC3rY>yh z!}oszJE*XC;G1iU*Lxd!L5+J0`cZ|y3H^l9-++En>90dCD*ZL+<4S)O@lB*IreA@a zhI|=v7V;&?bC54W-V6Bxj!d9%p2CuNUC*Q#@Y*}w|JUE7}ScX4% zhTWU^zb9?QHok*z#M2iu3LCt`zd!N+hqUvF{dZw+8J27PO@5O#D{brn<~ou1Vjp0u Kok(5OUjHwgsPoDI literal 0 HcmV?d00001 diff --git a/core/__pycache__/toolstatus.cpython-39.pyc b/core/__pycache__/toolstatus.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbf5f6cd1341d4ea1dfc1279c938263d0335d7fe GIT binary patch literal 4414 zcma)8*;^ae6_-GOz<7f+IE$T&?bN0YAR&Qm>bfCF)NU{k1lS!nO-FOCqzSWm?hIJB zo4fB#_jF& k#`n3epTmY>%ebI7M44-1+v$oG>_gheSY-V0BcI^@%E z39k0=*Sh#DT<_v9!LsH*D)n7~8$J3z*2Q0en_YYsKCbzf<^C0T1y-efB^i+^D8m|* zWJDA)37_aerr=f&G6}bPkSX|N8+jEqr(hlKzy`c3HE+tZR$vQWgH4HSOKYZ}0&CKm z9UZM*&F|?QcTww}+;I;jQt&A-w8VXF|EKFIc>Ntw1D}!Sz5$;_%9MMmQYH%)08}MH zC2|RBh){{t<;jE4&~Z+9yNka7Z)$#DTk3$@5ywIB+WxEBd=7kFn~D$MK^Gqa>*6Db zyZ8_eG=HdVeu$nnrKbtP`;gD|A)oI Nc+tT>)%?$N z=6~LvLdv2G@OIaZ3-Alg|5EPw75o~0BR%-7 ((qYCOaSB= ze`?kDJZeR@?~%xMDG)!7c=j-ub^N;R86$^*)u7hCF$`fGn2vEwtr~pO_g%*{j;U3G zeDMC2*QM>n95arEe$|hddUI))QR3G~?Ae|j*`{N2Jn+DDVoGce;lQ-^i5c Q$%1QSJ=Y8*a(d0Q9X#a7e|{2` zQx{>T!ztoS3a&BQFfptwq9H$lG9pfi$a(aM7`{izPH1|phQU9?T(Q`)Fp9O ssc1$1&0_Z^zfK5n}>Jw2TxHMB9t zZ7-1=o)%)z>PQ##zBxX=0xpKFEPPp3$1k$h&|$;38J|QCTr;v7=wyg-l7~KhuTmj3 z+d&tJ%?Q{`6bGnyJ!Gt5jP32NZ 6=P15(?*p)+wZ#wsb{*>7!oS;YFSWAK`lkKEb_VX_V(sBnI)U6l`Rpy!1u6x zSY$>q6V{8M9wopSQ3vM}Vj&?42~p%YxG5tWn>!>%RqMV9vsKeEJqtrC-6ci0HRx1< zj|!o+&E1U>KZB7>+_fF7TT~(Y&={%vj?LUWx@vm;IVRFoErjMMX*5R>#e`VoS$Wbj z$?0NnTN$v!Dt71Q?s{oshisQCo9laJa%;1)!>5k|TeCeNrq}E;usPit!en9@zkvBx zsTS59`r$r0N`equBaEEpG(Wy+S#cOr&!XgZDKTh?KVRCY5H9LHO6t8c)XIUY{OpFk zkDVo>fkoOAr9|B|KDFgDW{Ww*;;O1e;!ty6xtqfhQyQ=HXIAd5ZDY1AKLqk1reRaI z0flARAJmIo9?cB$DYWl{r1+U9Dd49(pB(MNuHYxv#5hI6sTYNqR%y;vQSmjKh8A7m zBUop3+YR{XM6^762ixs3n=wYP`=YR!=Vy1@GuH7fGos{{7_qmv zv@&8~8DpX|B8uG=sm7~Cf$C2d#Se{<%I@lFxm;=uAJQtA2mD3d38j@ibVIf?!G;(4 zHsx> )I}#S6@ec{ z*#5(wsEGVbhM$xDyG(joBN+kVsJOPoltM=c7OS|>WFhfWIXQcU-bjq&MC*dqUeIe% zuZwzJ((6^dUeoJ!45YLwmk>B46oOr;2<%El6nWu)8&1SH?)94wT*$Y^ae!m;-l&Fg zMER_^GIHcHR{V@Ad4`=Ts!bOLUL2Px`Y4??Mn&FT#vVADYzk6VgCClfLlqrE5JI4< z#1b^7=q6dj9y%s8;8o<{btpkm$!!of>N4`MoX_2{t _ zj%zj^Li-@*R@(+3&4)yZFY_V1Iu~6mMl-;{Xk 8%8)k%(*yE!+?GKXiif`@HNL_v5xF{Vlmc@W& zSU@3u35X9KtRV`rX7gy(km;KEiBsHZ;M{3qA-VF>KKdf6#x`Eg5xx$5-w|IX`jQUW z#>`+Vi-Xd-W!Ldm6x1CGcI>vsB9yJjTj=kp@HCntACIriH++}QH_WPCoi9;_Z4k_F zHKT^_&F{rd1zQgNoyWmO=Y i{E~kH2x1w434EU?`JY& z>EZVW@TutJIgrUpJb7kOW;l({5h0npm57$?q?27jb0_^I8HM-SAZ$zQ>9$kp?A)c0 z2|P_$+Ub*eb81kn%K9U{%JUC;PGp|+Kb9VlXAEHUl-B?MsZQ>cKe8;z!@#4|qtrkC E3nSz>{r~^~ literal 0 HcmV?d00001 diff --git a/core/toolfix.py b/core/toolfix.py new file mode 100644 index 0000000..7b3623b --- /dev/null +++ b/core/toolfix.py @@ -0,0 +1,104 @@ +toolFix = [ + [1, "Not a vulnerability, just an informational alert. The host does not have IPv6 support. IPv6 provides more security as IPSec (responsible for CIA - Confidentiality, Integrity and Availablity) is incorporated into this model. So it is good to have IPv6 Support.", + "It is recommended to implement IPv6. More information on how to implement IPv6 can be found from this resource. https://www.cisco.com/c/en/us/solutions/collateral/enterprise/cisco-on-cisco/IPv6-Implementation_CS.html"], + [2, "Sensitive Information Leakage Detected. The ASP.Net application does not filter out illegal characters in the URL. The attacker injects a special character (%7C~.aspx) to make the application spit sensitive information about the server stack.", + "It is recommended to filter out special charaters in the URL and set a custom error page on such situations instead of showing default error messages. This resource helps you in setting up a custom error page on a Microsoft .Net Application. https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/displaying-a-custom-error-page-cs"], + [3, "It is not bad to have a CMS in WordPress. There are chances that the version may contain vulnerabilities or any third party scripts associated with it may possess vulnerabilities", + "It is recommended to conceal the version of WordPress. This resource contains more information on how to secure your WordPress Blog. https://codex.wordpress.org/Hardening_WordPress"], + [4, "It is not bad to have a CMS in Drupal. There are chances that the version may contain vulnerabilities or any third party scripts associated with it may possess vulnerabilities", + "It is recommended to conceal the version of Drupal. This resource contains more information on how to secure your Drupal Blog. https://www.drupal.org/docs/7/site-building-best-practices/ensure-that-your-site-is-secure"], + [5, "It is not bad to have a CMS in Joomla. There are chances that the version may contain vulnerabilities or any third party scripts associated with it may possess vulnerabilities", + "It is recommended to conceal the version of Joomla. This resource contains more information on how to secure your Joomla Blog. https://www.incapsula.com/blog/10-tips-to-improve-your-joomla-website-security.html"], + [6, "Sometimes robots.txt or sitemap.xml may contain rules such that certain links that are not supposed to be accessed/indexed by crawlers and search engines. Search engines may skip those links but attackers will be able to access it directly.", + "It is a good practice not to include sensitive links in the robots or sitemap files."], + [7, "Without a Web Application Firewall, An attacker may try to inject various attack patterns either manually or using automated scanners. An automated scanner may send hordes of attack vectors and patterns to validate an attack, there are also chances for the application to get DoS`ed (Denial of Service)", + "Web Application Firewalls offer great protection against common web attacks like XSS, SQLi, etc. They also provide an additional line of defense to your security infrastructure. This resource contains information on web application firewalls that could suit your application. https://www.gartner.com/reviews/market/web-application-firewall"], + [8, "Open Ports give attackers a hint to exploit the services. Attackers try to retrieve banner information through the ports and understand what type of service the host is running", + "It is recommended to close the ports of unused services and use a firewall to filter the ports wherever necessary. This resource may give more insights. https://security.stackexchange.com/a/145781/6137"], + [9, "Chances are very less to compromise a target with email addresses. However, attackers use this as a supporting data to gather information around the target. An attacker may make use of the username on the email address and perform brute-force attacks on not just email servers, but also on other legitimate panels like SSH, CMS, etc with a password list as they have a legitimate name. This is however a shoot in the dark scenario, the attacker may or may not be successful depending on the level of interest", + "Since the chances of exploitation is feeble there is no need to take action. Perfect remediation would be choosing different usernames for different services will be more thoughtful."], + [10, "Zone Transfer reveals critical topological information about the target. The attacker will be able to query all records and will have more or less complete knowledge about your host.", + "Good practice is to restrict the Zone Transfer by telling the Master which are the IPs of the slaves that can be given access for the query. This SANS resource provides more information. https://www.sans.org/reading-room/whitepapers/dns/securing-dns-zone-transfer-868"], + [11, "The email address of the administrator and other information (address, phone, etc) is available publicly. An attacker may use these information to leverage an attack. This may not be used to carry out a direct attack as this is not a vulnerability. However, an attacker makes use of these data to build information about the target.", + "Some administrators intentionally would have made this information public, in this case it can be ignored. If not, it is recommended to mask the information. This resource provides information on this fix. http://www.name.com/blog/how-tos/tutorial-2/2013/06/protect-your-personal-information-with-whois-privacy/"], + [12, "As the target is lacking this header, older browsers will be prone to Reflected XSS attacks.", + "Modern browsers does not face any issues with this vulnerability (missing headers). However, older browsers are strongly recommended to be upgraded."], + [13, "This attack works by opening multiple simultaneous connections to the web server and it keeps them alive as long as possible by continously sending partial HTTP requests, which never gets completed. They easily slip through IDS by sending partial requests.", + "If you are using Apache Module, `mod_antiloris` would help. For other setup you can find more detailed remediation on this resource. https://www.acunetix.com/blog/articles/slow-http-dos-attacks-mitigate-apache-http-server/"], + [14, "This vulnerability seriously leaks private information of your host. An attacker can keep the TLS connection alive and can retrieve a maximum of 64K of data per heartbeat.", + "PFS (Perfect Forward Secrecy) can be implemented to make decryption difficult. Complete remediation and resource information is available here. http://heartbleed.com/"], + [15, "By exploiting this vulnerability, an attacker will be able gain access to sensitive data in a n encrypted session such as session ids, cookies and with those data obtained, will be able to impersonate that particular user.", + "This is a flaw in the SSL 3.0 Protocol. A better remediation would be to disable using the SSL 3.0 protocol. For more information, check this resource. https://www.us-cert.gov/ncas/alerts/TA14-290A"], + [16, "This attacks takes place in the SSL Negotiation (Handshake) which makes the client unaware of the attack. By successfully altering the handshake, the attacker will be able to pry on all the information that is sent from the client to server and vice-versa", + "Upgrading OpenSSL to latest versions will mitigate this issue. This resource gives more information about the vulnerability and the associated remediation. http://ccsinjection.lepidum.co.jp/"], + [17, "With this vulnerability the attacker will be able to perform a MiTM attack and thus compromising the confidentiality factor.", + "Upgrading OpenSSL to latest version will mitigate this issue. Versions prior to 1.1.0 is prone to this vulnerability. More information can be found in this resource. https://bobcares.com/blog/how-to-fix-sweet32-birthday-attacks-vulnerability-cve-2016-2183/"], + [18, "With the LogJam attack, the attacker will be able to downgrade the TLS connection which allows the attacker to read and modify any data passed over the connection.", + "Make sure any TLS libraries you use are up-to-date, that servers you maintain use 2048-bit or larger primes, and that clients you maintain reject Diffie-Hellman primes smaller than 1024-bit. More information can be found in this resource. https://weakdh.org/"], + [19, "Allows remote attackers to cause a denial of service (crash), and possibly obtain sensitive information in applications that use OpenSSL, via a malformed ClientHello handshake message that triggers an out-of-bounds memory access.", + " OpenSSL versions 0.9.8h through 0.9.8q and 1.0.0 through 1.0.0c are vulnerable. It is recommended to upgrade the OpenSSL version. More resource and information can be found here. https://www.openssl.org/news/secadv/20110208.txt"], + [20, "Otherwise termed as BREACH atack, exploits the compression in the underlying HTTP protocol. An attacker will be able to obtain email addresses, session tokens, etc from the TLS encrypted web traffic.", + "Turning off TLS compression does not mitigate this vulnerability. First step to mitigation is to disable Zlib compression followed by other measures mentioned in this resource. http://breachattack.com/"], + [21, "Otherwise termed as Plain-Text Injection attack, which allows MiTM attackers to insert data into HTTPS sessions, and possibly other types of sessions protected by TLS or SSL, by sending an unauthenticated request that is processed retroactively by a server in a post-renegotiation context.", + "Detailed steps of remediation can be found from these resources. https://securingtomorrow.mcafee.com/technical-how-to/tips-securing-ssl-renegotiation/ https://www.digicert.com/news/2011-06-03-ssl-renego/ "], + [22, "This vulnerability allows attackers to steal existing TLS sessions from users.", + "Better advice is to disable session resumption. To harden session resumption, follow this resource that has some considerable information. https://wiki.crashtest-security.com/display/KB/Harden+TLS+Session+Resumption"], + [23, "This has nothing to do with security risks, however attackers may use this unavailability of load balancers as an advantage to leverage a denial of service attack on certain services or on the whole application itself.", + "Load-Balancers are highly encouraged for any web application. They improve performance times as well as data availability on during times of server outage. To know more information on load balancers and setup, check this resource. https://www.digitalocean.com/community/tutorials/what-is-load-balancing"], + [24, "An attacker can forwarded requests that comes to the legitimate URL or web application to a third party address or to the attacker's location that can serve malware and affect the end user's machine.", + "It is highly recommended to deploy DNSSec on the host target. Full deployment of DNSSEC will ensure the end user is connecting to the actual web site or other service corresponding to a particular domain name. For more information, check this resource. https://www.cloudflare.com/dns/dnssec/how-dnssec-works/"], + [25, "Attackers may find considerable amount of information from these files. There are even chances attackers may get access to critical information from these files.", + "It is recommended to block or restrict access to these files unless necessary."], + [26, "Attackers may find considerable amount of information from these directories. There are even chances attackers may get access to critical information from these directories.", + "It is recommended to block or restrict access to these directories unless necessary."], + [27, "May not be SQLi vulnerable. An attacker will be able to know that the host is using a backend for operation.", + "Banner Grabbing should be restricted and access to the services from outside would should be made minimum."], + [28, "An attacker will be able to steal cookies, deface web application or redirect to any third party address that can serve malware.", + "Input validation and Output Sanitization can completely prevent Cross Site Scripting (XSS) attacks. XSS attacks can be mitigated in future by properly following a secure coding methodology. The following comprehensive resource provides detailed information on fixing this vulnerability. https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet"], + [29, "SSL related vulnerabilities breaks the confidentiality factor. An attacker may perform a MiTM attack, intrepret and eavesdrop the communication.", + "Proper implementation and upgraded version of SSL and TLS libraries are very critical when it comes to blocking SSL related vulnerabilities."], + [30, "Particular Scanner found multiple vulnerabilities that an attacker may try to exploit the target.", + "Refer to RS-Vulnerability-Report to view the complete information of the vulnerability, once the scan gets completed."], + [31, "Attackers may gather more information from subdomains relating to the parent domain. Attackers may even find other services from the subdomains and try to learn the architecture of the target. There are even chances for the attacker to find vulnerabilities as the attack surface gets larger with more subdomains discovered.", + "It is sometimes wise to block sub domains like development, staging to the outside world, as it gives more information to the attacker about the tech stack. Complex naming practices also help in reducing the attack surface as attackers find hard to perform subdomain bruteforcing through dictionaries and wordlists."], + [32, "Through this deprecated protocol, an attacker may be able to perform MiTM and other complicated attacks.", + "It is highly recommended to stop using this service and it is far outdated. SSH can be used to replace TELNET. For more information, check this resource https://www.ssh.com/ssh/telnet"], + [33, "This protocol does not support secure communication and there are likely high chances for the attacker to eavesdrop the communication. Also, many FTP programs have exploits available in the web such that an attacker can directly crash the application or either get a SHELL access to that target.", + "Proper suggested fix is use an SSH protocol instead of FTP. It supports secure communication and chances for MiTM attacks are quite rare."], + [34, "The StuxNet is level-3 worm that exposes critical information of the target organization. It was a cyber weapon that was designed to thwart the nuclear intelligence of Iran. Seriously wonder how it got here? Hope this isn't a false positive Nmap ;)", + "It is highly recommended to perform a complete rootkit scan on the host. For more information refer to this resource. https://www.symantec.com/security_response/writeup.jsp?docid=2010-071400-3123-99&tabid=3"], + [35, "WebDAV is supposed to contain multiple vulnerabilities. In some case, an attacker may hide a malicious DLL file in the WebDAV share however, and upon convincing the user to open a perfectly harmless and legitimate file, execute code under the context of that user", + "It is recommended to disable WebDAV. Some critical resource regarding disbling WebDAV can be found on this URL. https://www.networkworld.com/article/2202909/network-security/-webdav-is-bad---says-security-researcher.html"], + [36, "Attackers always do a fingerprint of any server before they launch an attack. Fingerprinting gives them information about the server type, content- they are serving, last modification times etc, this gives an attacker to learn more information about the target", + "A good practice is to obfuscate the information to outside world. Doing so, the attackers will have tough time understanding the server's tech stack and therefore leverage an attack."], + [37, "Attackers mostly try to render web applications or service useless by flooding the target, such that blocking access to legitimate users. This may affect the business of a company or organization as well as the reputation", + "By ensuring proper load balancers in place, configuring rate limits and multiple connection restrictions, such attacks can be drastically mitigated."], + [38, "Intruders will be able to remotely include shell files and will be able to access the core file system or they will be able to read all the files as well. There are even higher chances for the attacker to remote execute code on the file system.", + "Secure code practices will mostly prevent LFI, RFI and RCE attacks. The following resource gives a detailed insight on secure coding practices. https://wiki.sei.cmu.edu/confluence/display/seccode/Top+10+Secure+Coding+Practices"], + [39, "Hackers will be able to steal data from the backend and also they can authenticate themselves to the website and can impersonate as any user since they have total control over the backend. They can even wipe out the entire database. Attackers can also steal cookie information of an authenticated user and they can even redirect the target to any malicious address or totally deface the application.", + "Proper input validation has to be done prior to directly querying the database information. A developer should remember not to trust an end-user's input. By following a secure coding methodology attacks like SQLi, XSS and BSQLi. The following resource guides on how to implement secure coding methodology on application development. https://wiki.sei.cmu.edu/confluence/display/seccode/Top+10+Secure+Coding+Practices"], + [40, "Attackers exploit the vulnerability in BASH to perform remote code execution on the target. An experienced attacker can easily take over the target system and access the internal sources of the machine", + "This vulnerability can be mitigated by patching the version of BASH. The following resource gives an indepth analysis of the vulnerability and how to mitigate it. https://www.symantec.com/connect/blogs/shellshock-all-you-need-know-about-bash-bug-vulnerability https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the-shellshock-bash-vulnerability"], + [41, "Gives attacker an idea on how the address scheming is done internally on the organizational network. Discovering the private addresses used within an organization can help attackers in carrying out network-layer attacks aiming to penetrate the organization's internal infrastructure.", + "Restrict the banner information to the outside world from the disclosing service. More information on mitigating this vulnerability can be found here. https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed"], + [42, "There are chances for an attacker to manipulate files on the webserver.", + "It is recommended to disable the HTTP PUT and DEL methods incase if you don't use any REST API Services. Following resources helps you how to disable these methods. http://www.techstacks.com/howto/disable-http-methods-in-tomcat.html https://docs.oracle.com/cd/E19857-01/820-5627/gghwc/index.html https://developer.ibm.com/answers/questions/321629/how-to-disable-http-methods-head-put-delete-option/"], + [43, "Attackers try to learn more about the target from the amount of information exposed in the headers. An attacker may know what type of tech stack a web application is emphasizing and many other information.", + "Banner Grabbing should be restricted and access to the services from outside would should be made minimum."], + [44, "An attacker who successfully exploited this vulnerability could read data, such as the view state, which was encrypted by the server. This vulnerability can also be used for data tampering, which, if successfully exploited, could be used to decrypt and tamper with the data encrypted by the server.", + "Microsoft has released a set of patches on their website to mitigate this issue. The information required to fix this vulnerability can be inferred from this resource. https://docs.microsoft.com/en-us/security-updates/securitybulletins/2010/ms10-070"], + [45, "Any outdated web server may contain multiple vulnerabilities as their support would've been ended. An attacker may make use of such an opportunity to leverage attacks.", + "It is highly recommended to upgrade the web server to the available latest version."], + [46, "Hackers will be able to manipulate the URLs easily through a GET/POST request. They will be able to inject multiple attack vectors in the URL with ease and able to monitor the response as well", + "By ensuring proper sanitization techniques and employing secure coding practices it will be impossible for the attacker to penetrate through. The following resource gives a detailed insight on secure coding practices. https://wiki.sei.cmu.edu/confluence/display/seccode/Top+10+Secure+Coding+Practices"], + [47, "Since the attacker has knowledge about the particular type of backend the target is running, they will be able to launch a targetted exploit for the particular version. They may also try to authenticate with default credentials to get themselves through.", + "Timely security patches for the backend has to be installed. Default credentials has to be changed. If possible, the banner information can be changed to mislead the attacker. The following resource gives more information on how to secure your backend. http://kb.bodhost.com/secure-database-server/"], + [48, "Attackers may launch remote exploits to either crash the service or tools like ncrack to try brute-forcing the password on the target.", + "It is recommended to block the service to outside world and made the service accessible only through the a set of allowed IPs only really neccessary. The following resource provides insights on the risks and as well as the steps to block the service. https://www.perspectiverisk.com/remote-desktop-service-vulnerabilities/"], + [49, "Hackers will be able to read community strings through the service and enumerate quite a bit of information from the target. Also, there are multiple Remote Code Execution and Denial of Service vulnerabilities related to SNMP services.", + "Use a firewall to block the ports from the outside world. The following article gives wide insight on locking down SNMP service. https://www.techrepublic.com/article/lock-it-down-dont-allow-snmp-to-compromise-network-security/"], + [50, "Attackers will be able to find the logs and error information generated by the application. They will also be able to see the status codes that was generated on the application. By combining all these information, the attacker will be able to leverage an attack.", + "By restricting access to the logger application from the outside world will be more than enough to mitigate this weakness."], + [51, "Cyber Criminals mainly target this service as it is very easier for them to perform a remote attack by running exploits. WannaCry Ransomware is one such example.", + "Exposing SMB Service to the outside world is a bad idea, it is recommended to install latest patches for the service in order not to get compromised. The following resource provides a detailed information on SMB Hardening concepts. https://kb.iweb.com/hc/en-us/articles/115000274491-Securing-Windows-SMB-and-NetBios-NetBT-Services"] +] diff --git a/core/toolprecheck.py b/core/toolprecheck.py new file mode 100644 index 0000000..4385044 --- /dev/null +++ b/core/toolprecheck.py @@ -0,0 +1,4 @@ +toolsPreCheck = [ + ["wapiti"], ["whatweb"], ["nmap"], ["golismero"], ["host"], ["wget"], ["uniscan"], ["wafw00f"], ["dirb"], ["davtest"], ["theHarvester"], ["xsser"], [ + "dnsrecon"], ["fierce"], ["dnswalk"], ["whois"], ["sslyze"], ["lbd"], ["golismero"], ["dnsenum"], ["dmitry"], ["davtest"], ["nikto"], ["dnsmap"], ["amass"] +] diff --git a/core/toolresp.py b/core/toolresp.py new file mode 100644 index 0000000..20768c2 --- /dev/null +++ b/core/toolresp.py @@ -0,0 +1,249 @@ +toolResponse = [ + + ["Does not have an IPv6 Address. It is good to have one.","i",1], + + + ["ASP.Net is misconfigured to throw server stack errors on screen.","m",2], + + + ["WordPress Installation Found. Check for vulnerabilities corresponds to that version.","i",3], + + + ["Drupal Installation Found. Check for vulnerabilities corresponds to that version.","i",4], + + + ["Joomla Installation Found. Check for vulnerabilities corresponds to that version.","i",5], + + + ["robots.txt/sitemap.xml found. Check those files for any information.","i",6], + + + ["No Web Application Firewall Detected","m",7], + + + ["Some ports are open. Perform a full-scan manually.","l",8], + + + ["Email Addresses Found.","l",9], + + + ["Zone Transfer Successful using DNSRecon. Reconfigure DNS immediately.","h",10], + + + + + + ["Zone Transfer Successful using dnswalk. Reconfigure DNS immediately.","h",10], + + + ["Whois Information Publicly Available.","i",11], + + + ["XSS Protection Filter is Disabled.","m",12], + + + ["Vulnerable to Slowloris Denial of Service.","c",13], + + + ["HEARTBLEED Vulnerability Found with SSLyze.","h",14], + + + ["HEARTBLEED Vulnerability Found with Nmap.","h",14], + + + ["POODLE Vulnerability Detected.","h",15], + + + ["OpenSSL CCS Injection Detected.","h",16], + + + ["FREAK Vulnerability Detected.","h",17], + + + ["LOGJAM Vulnerability Detected.","h",18], + + + ["Unsuccessful OCSP Response.","m",19], + + + ["Server supports Deflate Compression.","m",20], + + + ["Secure Client Initiated Renegotiation is supported.","m",21], + + + ["Secure Resumption unsupported with (Sessions IDs/TLS Tickets).","m",22], + + + ["No DNS/HTTP based Load Balancers Found.","l",23], + + + ["Domain is spoofed/hijacked.","h",24], + + + ["HEARTBLEED Vulnerability Found with Golismero.","h",14], + + + ["Open Files Found with Golismero BruteForce.","m",25], + + + ["Open Directories Found with Golismero BruteForce.","m",26], + + + ["DB Banner retrieved with SQLMap.","l",27], + + + ["Open Directories Found with DirB.","m",26], + + + ["XSSer found XSS vulnerabilities.","c",28], + + + ["Found SSL related vulnerabilities with Golismero.","m",29], + + + ["Zone Transfer Successful with Golismero. Reconfigure DNS immediately.","h",10], + + + ["Golismero Nikto Plugin found vulnerabilities.","m",30], + + + ["Found Subdomains with Golismero.","m",31], + + + ["Zone Transfer Successful using DNSEnum. Reconfigure DNS immediately.","h",10], + + + ["Found Subdomains with Fierce.","m",31], + + + ["Email Addresses discovered with DMitry.","l",9], + + + ["Subdomains discovered with DMitry.","m",31], + + + ["Telnet Service Detected.","h",32], + + + ["FTP Service Detected.","c",33], + + + ["Vulnerable to STUXNET.","c",34], + + + ["WebDAV Enabled.","m",35], + + + ["Found some information through Fingerprinting.","l",36], + + + ["Open Files Found with Uniscan.","m",25], + + + ["Open Directories Found with Uniscan.","m",26], + + + ["Vulnerable to Stress Tests.","h",37], + + + ["Uniscan detected possible LFI, RFI or RCE.","h",38], + + + ["Uniscan detected possible XSS, SQLi, BSQLi.","h",39], + + + ["Apache Expect XSS Header not present.","m",12], + + + ["Found Subdomains with Nikto.","m",31], + + + ["Webserver vulnerable to Shellshock Bug.","c",40], + + + ["Webserver leaks Internal IP.","l",41], + + + ["HTTP PUT DEL Methods Enabled.","m",42], + + + ["Some vulnerable headers exposed.","m",43], + + + ["Webserver vulnerable to MS10-070.","h",44], + + + ["Some issues found on the Webserver.","m",30], + + + ["Webserver is Outdated.","h",45], + + + ["Some issues found with HTTP Options.","l",42], + + + ["CGI Directories Enumerated.","l",26], + + + ["Vulnerabilities reported in SSL Scans.","m",29], + + + ["Interesting Files Detected.","m",25], + + + ["Injectable Paths Detected.","l",46], + + + ["Found Subdomains with DNSMap.","m",31], + + + ["MS-SQL DB Service Detected.","l",47], + + + ["MySQL DB Service Detected.","l",47], + + + ["ORACLE DB Service Detected.","l",47], + + + ["RDP Server Detected over UDP.","h",48], + + + ["RDP Server Detected over TCP.","h",48], + + + ["TCP Ports are Open","l",8], + + + ["UDP Ports are Open","l",8], + + + ["SNMP Service Detected.","m",49], + + + ["Elmah is Configured.","m",50], + + + ["SMB Ports are Open over TCP","m",51], + + + ["SMB Ports are Open over UDP","m",51], + + + ["Wapiti discovered a range of vulnerabilities","h",30], + + + ["IIS WebDAV is Enabled","m",35], + + + ["X-XSS Protection is not Present","m",12], + + + ["Found Subdomains with AMass","m",31] + + + + ] + + diff --git a/core/toolstatus.py b/core/toolstatus.py new file mode 100644 index 0000000..f4f202e --- /dev/null +++ b/core/toolstatus.py @@ -0,0 +1,330 @@ + +procHigh = "●" +procMedium = "●" +procMedium = "●" + + +toolStatus = [ + + ["has IPv6", 1, procMedium, " < 15s", "ipv6", ["not found", "has IPv6"]], + + + ["Server Error", 0, procMedium, " < 30s", "asp.netmisconf", [ + "unable to resolve host address", "Connection timed out"]], + + + ["wp-login", 0, procMedium, " < 30s", "wpcheck", + ["unable to resolve host address", "Connection timed out"]], + + + ["drupal", 0, procMedium, " < 30s", "drupalcheck", [ + "unable to resolve host address", "Connection timed out"]], + + + ["joomla", 0, procMedium, " < 30s", "joomlacheck", [ + "unable to resolve host address", "Connection timed out"]], + + + ["[+]", 0, procMedium, " < 40s", "robotscheck", + ["Use of uninitialized value in unpack at"]], + + + ["No WAF", 0, procMedium, " < 45s", + "wafcheck", ["appears to be down"]], + + + ["tcp open", 0, procMedium, " < 2m", + "nmapopen", ["Failed to resolve"]], + + + ["No emails found", 1, procMedium, " < 3m", + "harvester", ["No hosts found", "No emails found"]], + + + ["[+] Zone Transfer was successful!!", 0, procMedium, + " < 20s", "dnsreconzt", ["Could not resolve domain"]], + + + + + + ["0 errors", 0, procMedium, " < 35s", "dnswalkzt", + ["!!!0 failures, 0 warnings, 3 errors."]], + + + ["Admin Email:", 0, procMedium, " < 25s", + "whois", ["No match for domain"]], + + + ["XSS filter is disabled", 0, procMedium, + " < 20s", "nmapxssh", ["Failed to resolve"]], + + + ["VULNERABLE", 0, procHigh, " < 45m", + "nmapdos", ["Failed to resolve"]], + + + ["Server is vulnerable to Heartbleed", 0, procMedium, + " < 40s", "sslyzehb", ["Could not resolve hostname"]], + + + ["VULNERABLE", 0, procMedium, " < 30s", + "nmap1", ["Failed to resolve"]], + + + ["VULNERABLE", 0, procMedium, " < 35s", + "nmap2", ["Failed to resolve"]], + + + ["VULNERABLE", 0, procMedium, " < 35s", + "nmap3", ["Failed to resolve"]], + + + ["VULNERABLE", 0, procMedium, " < 30s", + "nmap4", ["Failed to resolve"]], + + + ["VULNERABLE", 0, procMedium, " < 35s", + "nmap5", ["Failed to resolve"]], + + + ["ERROR - OCSP response status is not successful", 0, procMedium, + " < 25s", "sslyze1", ["Could not resolve hostname"]], + + + ["VULNERABLE", 0, procMedium, " < 30s", + "sslyze2", ["Could not resolve hostname"]], + + + ["VULNERABLE", 0, procMedium, " < 25s", + "sslyze3", ["Could not resolve hostname"]], + + + ["VULNERABLE", 0, procMedium, " < 30s", + "sslyze4", ["Could not resolve hostname"]], + + + ["does NOT use Load-balancing", 0, procMedium, + " < 4m", "lbd", ["NOT FOUND"]], + + + ["No vulnerabilities found", 1, procMedium, " < 45s", "golism1", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["No vulnerabilities found", 1, procMedium, " < 40s", "golism2", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["No vulnerabilities found", 1, procMedium, " < 45s", "golism3", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["No vulnerabilities found", 1, procMedium, " < 40s", "golism4", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["No vulnerabilities found", 1, procMedium, " < 45s", "golism5", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["FOUND: 0", 1, procHigh, " < 35m", "dirb", + ["COULDNT RESOLVE HOST", "FOUND: 0"]], + + + ["Could not find any vulnerability!", 1, procMedium, " < 4m", "xsser", [ + "XSSer is not working propertly!", "Could not find any vulnerability!"]], + + + ["Occurrence ID", 0, procMedium, " < 45s", + "golism6", ["Cannot resolve domain name"]], + + + ["DNS zone transfer successful", 0, procMedium, + " < 30s", "golism7", ["Cannot resolve domain name"]], + + + ["Nikto found 0 vulnerabilities", 1, procMedium, " < 4m", "golism8", [ + "Cannot resolve domain name", "Nikto found 0 vulnerabilities"]], + + + ["Possible subdomain leak", 0, procHigh, " < 30m", + "golism9", ["Cannot resolve domain name"]], + + + ["AXFR record query failed:", 1, procMedium, " < 45s", "dnsenumzt", [ + "NS record query failed:", "AXFR record query failed", "no NS record for"]], + + + ["Found 0 entries", 1, procHigh, " < 75m", + "fierce2", ["Found 0 entries", "is gimp"]], + + + ["Found 0 E-Mail(s)", 1, procMedium, " < 30s", "dmitry1", + ["Unable to locate Host IP addr", "Found 0 E-Mail(s)"]], + + + ["Found 0 possible subdomain(s)", 1, procMedium, " < 35s", "dmitry2", [ + "Unable to locate Host IP addr", "Found 0 possible subdomain(s)"]], + + + ["open", 0, procMedium, " < 15s", + "nmaptelnet", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 15s", "nmapftp", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 20s", + "nmapstux", ["Failed to resolve"]], + + + ["SUCCEED", 0, procMedium, " < 30s", "webdav", + ["is not DAV enabled or not accessible."]], + + + ["No vulnerabilities found", 1, procMedium, " < 15s", "golism10", [ + "Cannot resolve domain name", "No vulnerabilities found"]], + + + ["[+]", 0, procMedium, " < 2m", "uniscan2", + ["Use of uninitialized value in unpack at"]], + + + ["[+]", 0, procMedium, " < 5m", "uniscan3", + ["Use of uninitialized value in unpack at"]], + + + ["[+]", 0, procMedium, " < 9m", "uniscan4", + ["Use of uninitialized value in unpack at"]], + + + ["[+]", 0, procMedium, " < 8m", "uniscan5", + ["Use of uninitialized value in unpack at"]], + + + ["[+]", 0, procMedium, " < 9m", "uniscan6", + ["Use of uninitialized value in unpack at"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto1", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto2", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto3", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto4", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto5", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto6", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto7", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto8", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto9", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto10", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto11", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto12", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto13", [ + "ERROR: Cannot resolve hostname", "0 item(s) reported", "No web server found", "0 host(s) tested"]], + + + ["0 item(s) reported", 1, procMedium, " < 35s", "nikto14", + "ERROR: Cannot resolve hostname , 0 item(s) reported"], + + + ["#1", 0, procHigh, " < 30m", "dnsmap_brute", [ + "[+] 0 (sub)domains and 0 IP address(es) found"]], + + + ["open", 0, procMedium, " < 15s", + "nmapmssql", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 15s", + "nmapmysql", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 15s", + "nmaporacle", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 15s", + "nmapudprdp", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 15s", + "nmaptcprdp", ["Failed to resolve"]], + + + ["open", 0, procHigh, " > 50m", + "nmapfulltcp", ["Failed to resolve"]], + + + ["open", 0, procHigh, " > 75m", + "nmapfulludp", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 30s", + "nmapsnmp", ["Failed to resolve"]], + + + ["Microsoft SQL Server Error Log", 0, procMedium, " < 30s", "elmahxd", [ + "unable to resolve host address", "Connection timed out"]], + + + ["open", 0, procMedium, " < 20s", + "nmaptcpsmb", ["Failed to resolve"]], + + + ["open", 0, procMedium, " < 20s", + "nmapudpsmb", ["Failed to resolve"]], + + + ["Host:", 0, procMedium, " < 5m", "wapiti", ["none"]], + + + ["WebDAV is ENABLED", 0, procMedium, " < 40s", + "nmapwebdaviis", ["Failed to resolve"]], + + + ["X-XSS-Protection[1", 1, procMedium, " < 3m", "whatweb", + ["Timed out", "Socket error", "X-XSS-Protection[1"]], + + + ["No names were discovered", 1, procMedium, " < 15m", "amass", + ["The system was unable to build the pool of resolvers"]] + + + +] diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c93bdcf16abd153693668469b4c3e9ed2887cf GIT binary patch literal 55744 zcmdp-Ra9GD6z6G+yHniVTD*AC;_g<8JHe$$aVb!WyA^kLw-&b&T!K5nJ#+ib%v$q2 zZ! `+I4h}=^lax9f+-nLrxL1|Ph`=j)?tbXN1>RLc zP7@jU`-*HH0X!#mlh$?9aI$psG | zEKJ>OoE)h%Z5%A%G_BpKxZhJLnYvJMz2oAdddDru#V^RqP4!WUiuE1eyMj*%aBx&` za#9~Py)utitvn57(>Lw|3{x=Id~tI 68j%Ia`;W9O;;VZCo_`BBWf%i2DjXDGyBFz{XjxB*qjZ6Fg$TdM6 zl2=X%;qIRo^jF`sb<1vyGO3^a+Za=A_bAL*Fb}q`++rk9UixkhnZHY~)O%8iJK7g0 z^S^`t@>N39jqDA}W(`TDnJOv-KIeQDq~!u?jQwbrSU1HR5k0e;nGgjm8=^w6GMD2H zN!_Q0SC!+9z|uiLh2vf?kkd^*+TOh65YF8bFJ4pwR+h~-p9I$!$;4wI^kf3Ph(}nj z!Ay?qU%+MKB`3UB`3=Nn+LLD!uRdkej;keS^?Z9PH{|mZ!kn1&*}sri7d26$G-T^= zd&`!*z>VJWC#PGbhbS*S2|r&B=C~cppB4tgI`9-8r_73e6Y-}EXy#C*k-=cL1NW~M zO=MvABI5@n|G&6`rrI9V8W0OV(ajG-ep(yGtPxZbg0%8M(}DBWg=%u5o%&z~#~skT ze!)+4G@-pr=c%kcfyJ6XChd(;29JESi!Gdn8EW-SQ6kHh0{X*$#n8z!-pDlsNb5k# z%(o8ZSAMN0dq5Z-#WRL=3%*RTw7OR5tt&c #xI|^#hP<#WbBUFzis$d&*z5Qfk}s}skwdGe zb()+qh7R9mmIf5LGOD!<5m005*l?eJ=^hklC1)9qt%C46J>vPcKE&D~hM45?707_> z)+}{%UebR;)PVyaK_`QY^?!98D!qP%Ox;DrMrzUi`2*8(mAwJpN3uLg%BB=+LWzh; zDnJe(+)RmErWPcsi u~3o-Kl+CZLImN;|!T`IBkk!!={Ak-mu z=E*Vg{2L7zkelp2N6LY!vz`&YyqW93u-rfn2b@YpT=qB|#eh#OcM&Ze^deLe5h`^5 zzGjP!sJ)cb7v|m33wHL6El~e}?1$VG5q-o|sCpoH+{U+3)xTdOCE$((gA$Cytuq>? z{oIyBhQ9ylg-k6v;! vi>R!WEp(ho(F# zy0W(A6-)$b!!+Y{SL=B3>r0Z86Ai(pr2cmgC>CbC9-Ez4;9tNev4uNd2=?xup%jbJ z>F2!eMs7m0j-aU_&z$#bc`k;Aar{{Fj6F{4mU$Iw2g`Ey&Y!oU4_T0;gJMe@tCq5z z=2b(op7?YrdKVrOt6>3B8vGyiN)+FC98qceu?ogc-xK7=c=r_!hoBXNL>FKq{=({# z*}d|d`WRp731eO2oPU@L!S)TIqmV%EudCI++01%k)nt+7@eaN~f_-}DP0qR;GV4dy z46`_HdS1A8$fbomaX~NOd$*N>4us(G_?e_|MxcrppbJv?gl6U# xH^|o?ALIiBRrcF{%DXN*1MR!1)jZiptiUK zQJ80oB#|dQ`N&hOdWk0a+RLRm=L>o1Gtrb #n~Nyjju8sYUd@|(o?fva9wT2 0i$caxaX+ijmI0 z3G0%zkFq `-=!&V6Dxc|7t~G%+UBkZV&uL8u3!M_kleEswJ` zS{S=Rxv%Io-s$VoucdNp*pUj>xKs*}lj>)jxfKrgKRx~0lU(FbR_MNO{>`YHEw0D6 z*2TR&0b@5_XRa`;U%Zq?hD!YNTVo!;Pj*x>L>BytK{qA?2f{%v>Qd2h$dsK(`UUn# zNe&R&XR;)xCMUIaA#pf1v>l7yy6GL7mx9rSR?Ey}QI|a!A+Q;RwdHqPU=*FA2nB=O zEqE1UWHmd$C7}7LsF~>6l1Lt4l;dx%3!TM^aWbZ9&QGYD16uh922A|He-}bm`QS&~ zteLXEu4=77r?H!&X9WXixx^b9rGQP3ykz}#lf&2uLoe-hZ7~Xm`o^mJe@(i$!|01a za8re^#E}q&9lM!529)|F$_LkpC}+NPNS90UQp-TR&L3Fychu?|4Cak0_Z%!F1i>=x zK7HHDbE#ZdWps}1it)YTto2n1j*TpG!oh?EIo}aUaW|`t3>}CC``#&Ko|-Z7$LySB zkJtHXE6@kMcKd#F$+SFF z`VjF~j2+8}lwoAbE=ey~v6NZL^he_M%Xg=}{LWZkiOXAatT$gx_q{ou_Y(@uqm<)g zF-e*q2qk!mzm1r;bZ(E^XgC?RIhF~x=xZbnS~LY7A(aG)8ND_q^nYF9i%Us`mf=9( zZ_u!1_vK&HI1F9By+yF&wq4VfgQ#7rQpP>z8;&(bJ?0ya`3gf-30aKdY>x*ieBSKs zgKM$AB9!OhWtq^BJd12T=itV^5Oy|(Xsv&9J;zw-cQW;)2Fr~bSl630-2t=F)8yw-xss4 zNT|irIWQ^&p$vrrF?MO7a2^QRYTrl(S2=n#1L#)OEPX1<&IXn|aUOqzoiSku+QZc6 zmjhcVC}*&s{a(&ULdq|Nht7zc5DFi>;xit3J$Tw~`WBdLU!>i>OLj|*rDZGJ2vjw2 z$7{EyDH&MnbIO-w$T%hT*h=^m5Cy38DP$iJj*A@CpNl~xLTa(HhPt$dU!~rONi>LJ z2@aLn_1aPP9f?NFE_|!AcT<&;eHHRii*m_f#*&V(WeAke ?g-KDzS%NUybnh;!zx$#q1fg<(LpIF62NL7zSjW^*Ka({_;t8q-X?%V+6~xglxSj>Z@p87=~Ybh>oyrMvvtY|TvCsC z)R45-9xkC2IR@nnmmT#S2u03 - z?M&EyiOd3)@3@L^KE|D%Q*u-7vpw!R2_UxGVAHM&{e0yKPkV;zG=}qtkU9T~ nq)Pk5hL(*z$x`${AePD$)L$wZj|31uMX>P`kIJQZGW71 zcsa<#Ku&uH`sL_mwRqp!sgr!UEah2zUv-j{X#Bk;{cUK{S3ax~62mclEr|Y~d9Qu> zTbOLNL1E8$9*LmpYH{tuq^Wz3gg3F9f27v~gU{g`NSY9KqUtsILZ?-YuZkJJM?v#0 ziX$x0`jo@Rfdr5lVlQIPbKcA@jRlNV@$aiE;j4n5-aWBC#jh6x 5 zKfXNx0;|uu-f O-5IeEvO&_IkL?bo}6K8kO` zxUTIdkr5v<3H9e3Ec}bY7W!q T>fn)zZ;!bRoFBlE0mXi6nW;;Ld zZEh(@)q6(r6REn7|GH$Inwn4sKUpyoF|7w6B}%{Z&2cuxuLe?pU?ON++=d5P&xx?O z_Y=d;^ewdb43|TgAvM4}%;YAk*KR!yEcyv_#kG0JmO=S7=i*AF?vm&ag%3h=VM^HL zI{jb2)S0bvd>M`{P8A#izFe*@wvdH(z@jgl%T-&y8zuJS=DKv$vW69L)paE%10pE8 zzh`$x-!!YblLL2L>ob{4;!D*n<#uKgX?2#%ze| A&G>_j>^#HNr z1x@$Op4zn$69V+k0#aJOp9HEgs;Dws@UyCUoHT7b4KGpT@r$;;5S$)B8o2D={~b_d zmACc7+2W_QS+?^F_1f{fe=_GmLF0R2*OC={m*B}H`ZezJDfRub7_F|CR2hse?G4fI ztOpXuVgC^`erBb$yz>o_5$^s(E6SfDUh!jH3EQz<%0PT5t$MRfX`C<2tJu;iMV6R- z(27i*jR8~$3wHKI>M>JX$g9P9w`>i^vV+uP>$KUOD6=}#3I!X#YTJ}^A13nk!&Da; zAdAcUk*vGxTX28pqW|7<-Si+FH&G{^;8rW)su e09gtJ0tMYN6X!Au}^mJlHkSO=_Mk|B-$1w z<`-9KAXXsEFX6q**4khF^H5N{Kdn09P*farOnAR}%QP8-O~C)_MKVI q-3~~%i|LH*+1m7N9x?vhndI8_(P#k zFep&-OpV*&X4*m?ulby4=-i6(hsYgj+Ow6j!6TC=dG6gEN$(6i>8Qq?Yk_(A1h5ma zntRx#H_yM?!T|eZOs`mW3gz-4MRNhjwX#6jA;rtQjGnf@+~B~$k6@{{S%Pkg0$EUu z8*j>Q_7xC}m24u`(hd4Ex(}S9(DsrGhV3O)BO*1UVpR;I4W~THrxiK|Qr914-2KeY zd$kV}xg>3>JM54@SP>K^Tp~2Ac#~gscU+@s^RK<549>9GzT=LeCw#afDeW=?iqW9u z4 0a9=;n`n8OAma7yc!Rhu z*y@ufCDp2D;!{5>K7|pZZjS7uv?^b63g2k=^0HE{j4ZVpa~x(_r$iYxCm(RsN)Sgs z79UQh5tf`ugWdBq+>=^QNC=Xsy91X}5d+XjkaBO?+Kza5u5yE3kFA9Kxix*k^zkF< zAS*i~E4#JeZkJx%KR6oT<~Q}mcktCc31>waw$VI#rMX=|6o$emN|oL9&DiU+N1)%* zTC|n8>?=TP>s?P~-X8c_{YK9kJ`z _4Ww4m=igS?UHFbd+RRSt=M)1caSZ)Ei2lS6YxE0VzcpjYrgr5 z)e$Qa9v%TdGp7=SQwhhh5|@DAB2^}W Een???SC_{%nEIhV<71*=I6eFgA5Fbtim41N`}gLXf54 zP_Pz>1MtHy?qm{+6h5x8UJx$mHZLU9)Xj8<*~(Yb3QBvD!lbf7V@Sf7>ig-T2Vv$> zd8_H9-{FMzulo
P4UY$?Z <0THGJZ zEPBuL*9WK6B$FLVMYqT=Gw>c&D9yERgcAB)SSBM8$&- 20#0V}`=};k!|dL`#YvLT>RZ8#d}jlIA{G1&s_q=Zat+ z8NB )eEpOKRmfUJ<;%woqe~z=AR?$8x^!vYlLA|P+V17256jHbJ ziU&MFQVpS_8T;3W#t(0HlzNW+qcXl33bkFs@tnw3#uV&2=Ix$|n-bTtPX*w#DT_;T zvasdLu73-~GOgq~o^d6y+t5mI=DGgpjV9t3>~)OmbHfK6F)Mk9t(r`ZmFP=i?rZ$e zHwb!4Gvz|!{6Xv$xiSrwbH`LW=B+o7-)jD|{>TmpDpxRP!s0FNHRC$ns$WE3fgS#^ zlNwojX!kp1n+r*oaL%8Oq`4hDa^4>B0q#Q;_uur^7ANN7Z7HdQoHJLt%y_bV5;PUC zJes~W9*Hq77*;_GXa_Do0%0#3fl+eKJM4U_dHQ5n_1-%(a{bG=v23NN41zbelD6J% zf-6~2-ITkL>N<+SWl1H%Iq+nJj+|Yx$kY6k&*y=}2lUpWeTplh@k~o|l38<^T9Yg{ zg)(oLBX7^KVDAiQ0r}>|ZcP^UbL}i5h1j{?xzgStQT!0`!l^d<@xTpO l+s>y{))nLdz#3>EA@IMx^?#^$v|>F0<$O!O?h{Y9GVjlCMMR #MlEju8jj(nwvqa&GOWr#2FB-LF;+md-aE )G7WzRQxEkn?~2< z^VZ8F*EY?7#!o<_iu0$8MK*hmq{tc7K2rEzSuL1#OWYd_j7tvqRp&0p<{t^FCchad zxj?ktc|Si!z*HeIthO&uJNwvs9%l+#_?qJ=b>fS_d(Kj}Rnn?rgJD^P6KBFTT3D?@ zU!yD?v*x@NVeOjMcis-j3)3Weg3uE^*P{syw^x|v9@Rm1KfX+rDp|L*|8|t#qT9Je z9nwU+h! 8i-wNzk+BIi~KSpp00wL53b?GL;ATHnaq$D>` G%F;(!>ZYV4&ryXZ9Y z722L_# L`Cw;= zQ{EoWQn}>Lp6M>359DW>Wrj(`7xH1Ekl08xQoz;wP2T>?6Fv4VT*6K00ddeA7VStj zp0E0v^VC0@$Z)oGOU{jwTX#Q4C(oQ|Nb4RxkwDryvecNPuAiFwj#sgN8vNT0%e2@v zBs4}!MJHk}QtRjqHUw?lCE}?4qn_^3RtZ&HlQ5*IU|*3{-!E2S%p=dH=lD-Pn_Cse zsxM}iL+Ie+{xZz`h4itr^u9!IrWPrhWh=tjEFO>`)9Y1OO49n14r-j!22Vo*xp46E z3Wj_dub|+~*@N_WaduptGwE`vkQbq9$h~`1eVl4+v >+{IT0gDv$i<%p-RU$nSw3kP_EHmp2v^B*0;?%DdkPQZ90ZL5-swA>-5CYRhy!d zCbXZwhInQF6Tteqc2CLDNv6oVUjYle*!8OgIN>$#-+VNUQ`}r3<)z3`E_lZ69T}To z7i#1k;j+v9I#!&MFb_;y$9xW#-FwUG)?=|Dlk_@2uvH}OBK%ZyS1U>>r*K%hL!v|- zg5N)Hi^ZfN8tC#xB3gcMuVlL{+S@D4-clhL-tUps!_;n@Siw(31`~N8>SX@{<@}hk zQ6fu3;ZLEC1ttku4(}#)@v$EV4|9UCC*S|)8Z4N#O}kXFQ`f83oZ(TgD|V1n^?hf2 zq0{S2*ExLk`n#v%y04cd`OmofIZTP8%CXOq2Fy6G+MaOq@gAk0l87rb5vv;~6}>qs zG&1k7Pf`L^Sg%%J@ZR?h;ojE@6^YW#inp1;k!KZ99sh3@KvrsyJ!m{>Kv_0oFaBQ! z6!Uvnzbh_k#8P%?$S+WWU92a)+rhH*t9`0DcoGz-PcEy}WrZ8(hUb?3dQ_%TMbZ?Z zL2>n|qhVeu)IAEXxweDt;568aT|_EW=_0O5Ewe2=wr{l?iWES_z~ZR>w!MG8znlq7 z`*&WU3C09!75BE0_b4ZTF#p>!4OKN_Uz@jDhP*