From 6dd9199e3db072632d2107c7e7daea90a99f95b9 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 14 Mar 2025 17:19:48 -0400 Subject: [PATCH] [+] Readme --- README.md | 49 +++++++++++++++++++- analysis.py | 74 +++++++++++++++++++++++++++++++ docs/deepseek-food-selection.png | Bin 0 -> 24249 bytes 3 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 analysis.py create mode 100644 docs/deepseek-food-selection.png diff --git a/README.md b/README.md index 17b5bea..f46e614 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,47 @@ -# ChannelTree - + +

+
+~~**名字听起来最圆圆的让人想 ruarua 的频道**: [@catttballl](https://t.me/catttballl)~~
+「Rua~rua~猫猫球」🐈
+
diff --git a/analysis.py b/analysis.py
new file mode 100644
index 0000000..7acd41d
--- /dev/null
+++ b/analysis.py
@@ -0,0 +1,74 @@
+import re
+
+from tqdm import tqdm
+
+import db
+from bot import channel_html
+
+
+def exp1():
+ pop = []
+ r = re.compile(r"([\d ]+) subscribers")
+ for channel in tqdm(db.Channel.select()):
+ html = channel_html(channel.username)
+ m = r.search(html)
+ pop.append((channel.username, int(m.group(1).replace(" ", "")) if m else 0))
+
+ pop.sort(key=lambda x: x[1], reverse=True)
+ for channel, subscribers in pop:
+ print(f"{channel} - {subscribers}")
+
+
+def exp2(name):
+ # Count leaf and nodes in children (leaf is a channel without children)
+ xl = db.channel_info(name)
+ leaf_count = 0
+ node_count = 0
+ for child in xl.children:
+ if child.children:
+ node_count += 1
+ else:
+ leaf_count += 1
+ print(f"Leaf: {leaf_count}, Node: {node_count}")
+
+
+def exp3():
+ # Find the channel with the most leafs and the channel with the most non-leafs
+ most_leafs = None
+ most_non_leafs = None
+ most_leafs_count = 0
+ most_non_leafs_count = 0
+
+ for channel in tqdm(db.Channel.select()):
+ if channel.height == 0:
+ continue
+ leaf_count = 0
+ non_leaf_count = 0
+ for child in channel.children:
+ if child.children:
+ non_leaf_count += 1
+ else:
+ leaf_count += 1
+
+ if leaf_count > most_leafs_count:
+ most_leafs = channel
+ most_leafs_count = leaf_count
+
+ if non_leaf_count > most_non_leafs_count:
+ most_non_leafs = channel
+ most_non_leafs_count = non_leaf_count
+
+ print(f"Most Leafs: {most_leafs.username} - {most_leafs_count}")
+ print(f"Most Non Leafs: {most_non_leafs.username} - {most_non_leafs_count}")
+
+
+if __name__ == '__main__':
+ # exp1()
+
+ # exp2("XLDFDZ")
+ # exp2("Billchenla")
+
+ exp3()
+
+
+
diff --git a/docs/deepseek-food-selection.png b/docs/deepseek-food-selection.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0ce343b87b3fd032287862922ff4a47ef63c889
GIT binary patch
literal 24249
zcmeEuXE>Yh|91CKN*c3PMQiW9wH36sQfe2qsm4wTZPkcbwIXJzRjc-xAJk5@e$#2x|*kX!0sGiex%6LCxr)}{z1 z;m9gvMKF`pj>Pav(ATbWQVN3Xvz43nsi?{?d3${9J#JwxU3fNMGS!>&Nw zNMDr2jIy xZEcH-f`X#1zP)XnxAX9$06G+#6cqg`=FD<_tQh(` zU#x!%%~H+Juh^#Tnh^vv%$+hmW~w`+z||8Yz?RCn7yj N5_( zs4)yzVHd9()3g557>DU@w=^iR(V9^Z!?s+g)RPuu{VhQh2pkq*; fkTW^F`|qOBTR&>&+qrG*YFL*B zqusVYBb1+vZU%glx*&ftDz$nX*?&q^9F<;F$_ww`s^;?U4zU%?yc$~Y31 LafLhx!{RM zmGZlD5-76U8H{nV7czremoqL&f9>d3d#y1lUsG$yE(>d`yY_j2Y&=q@mTIwwmCUkQ zX ~yyW{f zvp}P*RO&NKO)mdT*Y}n7ooSq4aTfmi>UYDAg>vhk_Nygv1%|ejiyDgb?gV1JmmJup za|?MACD9)HgMl5j<782&(t5BQN!H0XfyA}UzQ=;#ZbcIv&i(urtgL74b#(W_7ly5V z>hCfJ555F)rkZ|r?xOgF6Di+AQ}M^;q{I%E+HVYC79nbNTE4Q@glA^Fey-fLZaUEs zOscq}1|7!-;4a>yE``zF c_>0xf0(gnn=$4fZDv1`QKjThafDCQ!GkRBR6ebQ&o?$X z^Y`+wo2mJb_sE#LQZz0!CNxCrJJ(WYtx>)4#{jlF2J_fUjp02pvgwpaFAT*l(}ED7yzlp1o#+hL8oMlt%}A^W(Fa)f*kv*vyPQf1!B>)vR28@-_SV(81J zz`csKWx7K5Elsl-)v458 MP zru)d&6{nGfg UN% n!b!NLIR=FU$lyk z?v}Y~9nAIp#k)bKeJwrfO6b1nbl9BRdw$aOFLi-i`pefYq?g>WJKA#NO0Ho8fJ|-l zRjoR4?OkBU9=xKFZFgZ`#&93g=If`LN6);c^5h0y3r+H{OhfYi#ww0!?NY93jjS1k ze`(f_#UvHO*8UEpUl36%z4t`IP>8eQVivzi-wk|0mF|TPV=NYk9nY2NL_SkGqMzt> z0J+Q!Oo+@!NukX*&gI$k2&qkJY8uC?`DZkJ7c06ez%RX`WETDE?M3w}mWW=h)GNgu zucFTEEfyp`&3y4)4&WuIe$Nn!{f~qoii%3IvF^q 5<8XFzh}|9 z-Bjt*+Q&U0zsGKzXZ?$y$FUGj6Jlv%Ij*J0A+CseG{~b?z`XQ! 5s^em5`; 2s@J=|oi(VyxWh UqdX014FG8(C& zB0cX5UV0E~v|T!$>r=w)M$(bS%g58iBsEDY-?p`l@hzikTZ)<7P@b14m}~CfajxcI ziwhcFrk wh}3ZhW#f`@gYbs+RJa05@`XF2_pnjL-8p z=G~deQezB|yzCkxU$y WE zgm}ZDnvQ3D(e;wA;fOk8a5_II@eXVRe@gScf;#(@ajX_t{-UC J7geX{{L-qc{V;E1fl$V{zQg_mx@3#8EWp zPA}_I>jvKhzc1n(!;G2AnWQm!n!bPyNWk7Jikm`bN O{g$2 zMz>F~-&b4LI<|xDbWiV`$HF5EJi6bc4_e!Knhx)zH7{+{h%D3;aG @mw-R&YPt=sso@%Z z@-$Cq)bR y*%K?z}H#z zHXdH&qZXMoQPQuH5PjRA744i|UY`{tM|(B(nF#-6_Z7X0v+7#HN>s|)t}41^KkfnB zOZ(gR6dy%i;^^$PPOt}(zYdV-Bt|q}QMUhe2))Q%Cq<2nyOSH9)qgsVsh#pFoCb=2 zUyxsSAmN;t_S?dj;kf3%-n2aAyTxHS4+l>>_D9>T-Wp6yZ#-eLS0+f^NHe;$`L$nZ z;@JmWc45ETBmy=wXW@i=<5LNlm?bfrC> >1VehZ7CjL>*oTxcXoc8m;2&)eM-K?6{T`ahQk}8ZDYg{BGWE5MnQq!?`$(t5zUi z1S cOAYn$((E;H;nS9}@bG>^{%W pvm_+Jo$o0x+L;tBk(_SrGGK^W^Uta3E35D%`8>aB+>yqUy#CY_ zE;a4SJg>5gJ?weTdb1@BntmGH!S?I{8oY73R{vA|J*j*XRiAhQQtTL0t1D*fQMjO6_SK)Vs zX(VX)@{JVHCMF?Yf1MW(x EtGCKpK`SmL$wVr%QbkVOAo zSoF+|RuKJdDF^Aln{QGt^&~nUtNk<^RfNZ^bKnoYhPpdRQ!xX>9~cT=3Pv@#6mce! zGfGwaT~d5n%!)jr9J$XU_c(kl*c{lBsBJ3&WBJ1v+?~NJ&ijn+_0j$LO!~fi`u?r4 zcLUI+g)b^Kr(2+w-e%W*bF7ETy^n`E>SBUn(z3eKZ_;dV 7C8VhOQ%%q-#er6iOTjH|Nq`wQ|3D}VPTX{XX*70DuFwW_%{wNSrHtV z3Z9`(F91@Bvu_WZi=K#fBhg2 u_T(Yy(+wg)5@c`~5GVWa?E zas1zpvf}-T-lw?xGdwdf>|i#0%<1-O8)dNJ+IuOLtx=OqpaYe%tnhZ+HF6*YC*MfO zN?&IubT@mOT2p{{R;yn7c9}oxo61(Hq1W_AT4NpgZ94DZ+AVSTeM*shducP!JVCUT zoD+-&l)#S@F1d(t{MLVTtUBr~ZjYtI<{?Dogj2c=8Y|w}c6bb+F7g+}R5DY~RbHuB zh1|Ad93y QY`nbOzu>l! zS|VP=e!62l-dkn}KIl6+`?pcW;13m0{49O9CtRwOS2+WT!wa8v?e_8G3V)~a^*NUM z;p_4 RVe_R@u5q})HGru1@UmmGj>!4O*wU6wiO=RtNCDtas%{=R(TdCEy d8oDD`KkIhF>)db| z6k;lRT$~+XX`T`JE4n|!|B<}6osiJ6Ckc}OcO$*Cts<*qtHQfJRk?R=Cp&N&o^5PV zuOLVM`-P?BWBjYRc>(+qQ&o_r?|@{lo@xI`-PF@oe{@sH>(Wn#YI}3_GrUqe4UO$y zI97mFq!jrS@1^=Z3C1_38CF+ijVHOxT{LdpXoTxqUn+Q|SXipS{)QoPA+;)GK1~`j zcM%wgq(~yKV(vbpTLztKk7y@{J$^SndI^Y&hCvK0v5l;{=4SU=ZSSk00W`L&gnaN& zX9Z;`gKkpn%c#|f5EKyh)FVLji2&lAHoK?z95gI0^g%pq4-2MRMJN=vZ%>w0a4dzV zq(`}fK3YKc$MrahBKcesax;}Zup||UC!mR&8$BDXt1V?VQGCrIA=_I?i6QT8ay#vd z?gfT+HANwNpH;8nzo*B9dOLxodjP@?O#}p+ixrY{Sqhz%d^WWG%G2u!?$ -EX`3Io z_m2L1YCd#l;;S^w1tMcA#yzcM2*N~Gsi+!}(&M1=D0OeGHIs92=UJ>jGB;0ocOF`v z-Kh+0FOyaG)Gf4=Tkcqpt+H4af0)BR%)0-1-j&W+3q3fbyw mQBdVa9p+ep1d*S|>kwlMlG zsp*kA $IpgW-!z;ny}`k=H-6!oI3G-smo;3NY<_ zt=nu~X_%UHeT*{Aj{|%KqiGTxsCxrXXvH4C&`fZS+|8aZ@7;%zYbG=R)G*5s(L;-G z!_{h>TRGADCI!6r@79QgQ7%18Fjtm`WTJL`@?wBM82N7?lpwL7d^I}RC&Qi5r|ILy zvDkD`h#2ZpzI{DS^=OSA(P(&+Z6U$;v7Jn3+VV3x$+sJCG_Jbw+R=sx2#3*{lm~AP zYd2ny+Q|iy*Dm6-$~9oO8K=D#E_rWgkr0*fUYrH~YS^m2v}+Vk#O~cd7wDR3ol9AS zgw4vQ)!JI0Ekf<>_8$ghC~P2SD7Dh2^?q7&^Q|+7tJ@s`p^Ak8*8kqREea#iO~g?X zFv1_j_s;vpsr*+*07W-qwz%1PT?y|!98+Wsm=Y|oQZNmDAGkHGC2JJg0sYo8S9UNw zCZ}jn<&_-tC|O))X2FREZLB+MB@NSa+1Mv^hT@vKn?Vr{mW-=s_2|i_mEjWGo4>A5 zT3oB`^jOKC;6An->C4W4@5m*+zl^0^p;-oL(rIX6&`0ssEZ7!3j-3!|cEWu-If(0K zb*%4`bHaNZ;SilIwjUO&9)+U{|AD%x`FBy>m|<%TX(PhxjuB}0{fhxY{Q2UUY@$EW z1$S}S8c24U6UoQKGJ58b8CSZqI$jh#t7HFHfe>;a)gm{luq~Lm?@3b7&Nq{JsGUNW z%zZeG`X;{snL8%3`1O#{t~5`ezFEF%+Yn6X5|(*bKD0pHPA@2H%!zb&U`bmY^Id(U zP{K Fu}y*C%>^i14H(LWi! z3i2vTZfUY@A&V^1QkNmLI*JTDmEoK3hS-y2FDU#C7IhePa`zx-(R~Mc%(fESeDirE z{H79Wh(`v8;la-~%_ew^+_0tHpwxiCz0KX;P`YLp>R>oE!#|Stsj*JHVNj%I0WvdO z64fLDYJNbIiijyuaUcG$t8|KqmhYyxT_LHZhz)7<-bC(fZAn16LLxDRnIxa4x!(&< zNosyjU!{_V$IN>%6!B)pN{HDM@P4Ie(5u$r)=*7sFnWeDrNhk;!k}WT@rTXWS!qwW zg^d5gtf&UGK3a@CQw!*~49;S49-+3tdX%3oGD~rrQ%xG^t7VP5`y}nO Z-lRkmE@5pBISqg(-?Yi6H<9BSdF@upDLlx_ z-cjzxmoUTo0keP58keFk4U_FMqgHqhIzq+y!u=(lKxgi8>phz875Pv&;_Sf;HWyMC zpTK}X-M7gs=Z=ON*8e0CKy2CD6XN<=50o2DI-t#s@Pj0q6-t~3Rtwitl$7or5v #CXNLbQd@8feSanL$; zy(W^5*lC^d61K)8`MTS@N^1n;+xoD+bD~Fy7Q9vceRK#yi_nT1IO_A0iIZ)`pRd-L z^ktNMi1B{{CKU1@NDXh9y-29v^Yv8-FXiVfBRGQmhAP93zz}zl=VEb3zMBd;30P4X z{@uwF>kyQ$LPr)H F I1 z<^gl|f-l;Q^gG6{3ZX1Jz9hY22bka{w{*|;9**yXbR#&$ZBHzO|C%7lS@+8xR4B?a zo&}-Ac=qpT7Gh+0>SJEhAQv9&Yt0vF91Y3eS*pv 6 zqP!N@QW{Gi{w!=ko3uh~>*wd?b(g{;Egbjh^-Pa$AOsr<)~p5!B6sD(`8M_^FsY!f zc-Jz`r3G0S)D-*mt?t>JwbT1(soT-BpqH~pzl3RrS)}<+SK`K4!}VD?t*=TL>#VR^ z_T*johQWPxOjMOivd9z^ax0>JcSf-IEKQJl;l^|1~PqVV-FAZdW02n(TZzIpR)X z&HJy?;^Kq?@5fM6*DnLk<+`4_FngX6Z)geF){mUwUIG$n^n zq&{r4FM+R N@t#?kVIYD*_w@pGkKsBVhZh>C+vwtqqSrGXe3g1@C}OJLt;2j|CSur{d4UG> zV-KI+G0GLbAU`PG0r|A(FyP3l1c?bTPrbwDX}(&_w~$@HCJwnT`ATXq838^V##FHE zFb+M~!#y+|ywxlH`NqZ7)A{Y*fK7oAzq!B_omBc>dUzDQln9@To?f4*4-wNTUH4!+ z{B;}LcuKD9zHF=xBHbpS)IccabDkSNy50RcezfT!6wHJRuTMDKJR3sEoFUqRv2H%A zF;F^Vx4Gy(`v7;oO3#3+sYzdWW(*3~Y)yYVh0b+6V`m}{?BN;hjtoX!`_gYV#3Gj; z&@u>)RF0oN4Pq)DBGvgNRK5EH*cP>ZrA(f#FE29vh7o;%%W{9u$aIQHRbQ$(|F)@+ z--l@+XC}nIf1h!6B%P}3 zv-zH<*>Z{V5PDEW?lB%aWfcXlw` znZg=(`*n%j_xz%jrzD9_P-1@_HfiMn?Kucq2a1B96$cC`{@7;k0&(Iu6(gN^T`bD- zCeY*Pifi#xPh;FP+>J5lq=!?w!{X2GnXG?c!Yyc!lT3hJ6C3yCCEwFKp7p1%PTe<+ zG##zy6D@4`&}7%_O~FP1%h_ #n3Uj2V?99r#dTTA35Vw(JV ) z95--sQl{{4QibO #bXS0)rwkAK|ifjN!xI|p2q*5_(HBm#5|CA7~fy*7RJf!J! zkj7&_T6r6RnK!_#r0lDw`t$h<_%E^QTWS4&_y7O8`~UyFvI;2_0Nv`Ee}5=L1M9!K zxaIW|63_R 9*; zRbb`9m6>J)TvZ2Xb~M1CiF-FB0BT0@gjeGaG{5T7eVi{~*&81a%>)~&R09Uc96T3A zI(JWx^4&49zVjHMgIos{$ywXPJ?!zzd28&qO?&uzGQ)|59?l|4uexdE`@6JQE_Z*l z7~R-5FN)&_$^aH#gAH86s*H17(jOiD45wev*MvgHfu$-#dPt>KmS?06E7mHLZWjul zZi^5Yz0aRL3V4!+EUb<#hMt@G&Zn9$JS?MCj5=Y`aLabb`wL&Lh?igQKdCGDv7V^7 zfNJX>c>F*DRpR_eLIc)zVkxOeIyWBnRo51OG-!83|K}`NRtE8C@VTOB%jR%msNaw6 z_ahcA+4W*JI_t_<-{)!M34Yo?C&qaLX#ogiid~=hmdzpW?od#VG@3G`9`<9qar(Ij z<%EZF_`$<>3pLLnaW#tT`685ZOTQFwGn==D5NrayPHfr!SotqJQ5-b^)<@aRq!?lJ ziGkm%<-|&DE3IMGjmZw(U&4*#Y}X;TbgHwqbb#FU+tkd__J^-bprjSR!|*lb!tZ$R z5Jz8t1+3J}4FxRg^4eVRxt4oZm!Y}R`F4P{oid(wICOkq=;6A%!;pM!Gy5zq;38Mh zW6CR*w#Qza`96T|_GlXSCBvE2@+bw_g_;I-DGxW}ktp?pU-iBKYunk>AUf6l`(c%( zRRchzHbg3?wF6|Bg;fLK5pG0KUwM)elvkVld*9Rlj8fZtC&&HhXtY?ZUU7%$OK4yL zfnMs%!=NFqd|ls&uwG8DZY9S2JDyP`w+n_w&GKc8Oo{c;G>8fa1SlF%mSwREfl-5@ zF%nOqy-!<~iexELnD^&22499cIZ At)8+Q%v}Tdi0uCxQ~8u zHzbu+^e~*=0_b!Zz+0a=K3-s=@)$C`RT)@+mOD>IycU(hLp}vPg{1(b=-Kf!ed&9s z#huRMLyxndy9c>5l8bljC{LT$eA;USeVO hCeXNGOF%AjV$TX41V&(-n$Y$sz zsd(GnFDwl>qO3%Pc<6d8|6uVDMzbXqL5hAvKo@F4p9I%RfweWMfnhs=%e0eK$NN={ zAjQz*^sv43g_Ge&s~?W2dxg%*hdTav9=2s3Ha6ImTI|l+iY#y_atK@Tuxo9&3M#8~ zo_h%Rr&(#6qGeX3?ja)2N%)~u_BU<(hBcS9+6~yhf3)DM6sJi~PwyS_n>RP86{}tW zlE|u;U{I2fuq5n6@=(_Q;(fgBU6oNebAX%i6z(fXP;#%RVzBo4ddq8b0hnGx1h!`2 z_px;*zX)q4GP7vXkMWjG(c|kt%5KwBaFAUxb|SFUA4=;;@Bh_z6h=3>87n+WMQX@Q z`54amGJrr9NTlQSSSgyQmyUzgl~v~$D)s>0X ua;QqY9D1VpU=gU@2c HiA)((y)o!si}VEqs32vXzsfET4ucaStOFp;mu-ew>k6T zanJiNpkbQS8TE(?XHq2e*NaP1xdM*u9Z3Zmw35H2U^ZuYp-|}KTYRfCM=LYq1I#_K zYra?K4Ugsw$1|Fuoj-lo=SUJ9Fc1+ZL&~Z>!M*RhLWntA8|G)^9NtLy1Mas!YO?6vj0g*=6k@1?*F=Qc+EvN6VeI(pD#NKpYg7OF7<6JbvUt z>i3RK_<=c%$c9)-Z0oD&i9QNvf z0j-wGWOW$x5Z(07xalXLiCHaQ?5p0ehRvHR?9)mDj=)8h>ld0l6M!lD61aHS@lKc> z3v$+jPGfIY{b-g`?%GAxTLAakMWAabN_q4e*%id_!(JU=ZSGvwBWA`2q~GZuhH4dW ztQc0l>^x9Ub8_r^-%}lj*k~WG9a0PS%6^!kFqrC>=(wf%>s1@w1qR;dKrK*x7`A9G zz5Nuh_Lv1c4@0%p6FI^o-82YB1Bc8hLBO2}FJ|fdZw2 z`D0mTds2}bu>VyUfbcGF`klXvf$rybT3;R(%eS3>J|F!Zxa2}r<}DhQ$9~wgf^p1- znuZE=vop5J1}KU>2TVt}pO6VZ5vX#5*I$+hn_o07;$WjJj*5ZP3zR~hmc|j!VI^QP zg!TGM`{DLIEfAv-+G`+uU zW88GDBN+RnM-hErNkaeL9v(z13H!4~=N+WsOG5ISt(^yfl2TC$5YCga?sRV2g`DMV zZ!Kbbr~d7Tx;7Kq&eQOD;H28Xu5p@Gj~KwKRvOW7=&B!HB0Lp0_VL-Y40o>oxW&p$ zwQUqo>l+2MB~%yKzH9@w^URx}Kg=WXE< JR~##kc?EkPvoA5a|4V13;=Zw7{so zC>a1Ata_!iGn5c|(gj(^<4wckQLSYO@4czgFluAil$L@NS^)$+hRX5*%;}^$pouWA zqnTrB*s`8w?$L($aZUXA*f$Iks4)(3D&)J$x~JWX&@-3wEX?`)nqNkFrOt% J(^ 7_T#?7c}&G+ZLQf27 yFipg)NuUwWD2_J z1TZcvbh-LKcYXxg*|uFx+o@nVdn#IHTeIAqTI$t0yd3AT4>11UpSA)E*FPdRM$+S> z`Zjjovv-@d!0jx1|7ZFvJC=IB>86~HmB?qy6^(KiIiB4P9y}@EwN+ulXKxOX<>NOd z_jZh&n|E|bM@v}xl0yHvH4(C9jthr(2~hTxJs$*tQ1X#e=j7Z;B`J%~hK@B@-}nwH z7LVxt0Dvp5vGZ`nITx{Q(a4EwI>}%78iW(S&R9k;k_~IQQq4|s0?!>guC)_^>S^ Z+d< z7%SkzDVIjBPXZ;!nX`%N9n$SBmDw}sBrRz;6F@5jIp8HQM!rA9$+Uljf z>xlqqz1{KQ^V*)uL{4yO8(@>O?tOWYt7-L7bltB|7LWxWx=H^rFJFR=0DI ay& z_cF|=2A>%UN cnW^c}=oRPTUF(;+!(2nAJxwN>^Kb?978;=As z^CxeB6CM_+QlHG+ap(SN?`QO~hj^z@*Q_ zbR+zHe}7t7@2OX9D=LJ`ir1vCjG(bkI}f+(DGOOxK_l1kn_v2BtnFRGk&4KBMxy#r zcQGOf^16%(&W;;sF91caRmHmEIXJQX!7oe9S+lCb4wsknpU&4O^PkjhPu57O-=C5q zVb!qIngMZ06O4 Ll~F6SPj7x^of!)t?fq zc;mvo;wG04>W{U`!w%y?_2YwuQ4>QO-9)#K)8$jqeF`UYh+Pt9vy4|UvoeTaO&tQ1 za3jxkVF4mCuDUG??8OCUVS*%`R8;eKGk3n4fqcLNrBwdsYzUVDCz|PN1YwkkO*sBM z)84mG7la?D$E73}XiT(PDkdZn^+l?4c5>pvNSghj#ELoqrp80X*V-*#qY&NxS@4C7 z74J4bXtL 0{X`8QP<9H==cSo@$?$CF{zstz`&Q-EwGFA6{byD=kXmRTTD&v{T|BW2OwL4K zN-=)>R)JoK6dgjR=#0Yv#$XK(P+}$0XHOKZ)2e4pkZi52wU!fA_1FaPLb!k~P}9jL zidV|_n%_&)ucdq(7T{o@i=~`oPapP79@qw(%ODX@u-62XV}~p0LuII|q$|$_I4#?) z0R#s~ECHma>yf}@T)UxyT 5TCAZQ6H0~j9?ngD3l;}2b;E7o^Qmx{ZnHP7Gm(D;-$JaE zfz^j#H#4v`g3L+G2R(cA?W;T~!wRO-KC)-cwS+aF^g@BYl;bg5{`ul`dR|kNjt0`O z<{IHrFXcH@{qg{|sL&<;9iN!Ea4Bc!T8R7?72~EnIU4ELciywf2vi|}GRMlbY3wNe zqZaKo!L?*Jw;%on^}&)Of%M;qI=;`iF2@$d?`Ef}@fN=XPjtAF 3=1Y1j zub^xQ7GjxcIkNkD)^L3r@_Fnkm}SIy035MAi}t9rkQQP+BS5(s%HIDb*c-^|00CTF ztolbeg0%nGNQ)>>B-^-s1l1&A@t=^M;xe$zPeOV`E$!mFP^^0qk6|-Nixwp;nqX1( zmxQH(Pr?5u!X9B3M?*SlKSm31B;61S%trzhw9jqZo*L<}{fhA*@4F}OOXV|a43!LT zsAb40)wdOCCK^-}`llmjZ4+E)LE0RWAlbR&11_rA8a+PzGz2=??{ect_C%3*f1`0r zT-F7HC)9Vq24iMVl2bC|kg$RNNnVgE(#gwr;2vOS#%TibDJ*(Hao@(+{=qxmqj(Ta zSKU3Zxt6H}6YHtCuM9;QO`ewWQij%QGZv3b8O63Wrc)6!P5i)DEwt6EbT^%!C%12? zz=(G9n6`Pf`^WcK@C{k~m069Vb|a7lWZ6ky!+oBeA$0lQ=} )iOBCU!!`m4gm@Grw;7IR;eH4%(Z?y&lfe<2EV-5oKMr|VDOJ#)MB0j z93jTwslniE_}s1QliVI?WcWdMBt8y;uV0R(tEX`GL-L>9Ig&a}Hsnen+_}C`)ETl; zZWo$*N>WF5Mq_W<@lfT|jpD$SSUT&liQYKh!K4ZxG+jvd(nHn&@h<60Q!bV=Z{57= zV>6Dmt1ZbM%Ky|fJX-PJAk9!%+z-8#s=qQ-3Z#d-=ggYvK#UMU*pVz4C|}WUg7Q3y z>bpEFl~5n|lI~NW5Oys%?QmqD)q#|^Ono=fkv-|(p%J}kVeY$7?)T#gD+A<#4XB{f zgWM)jHSy`ZO)r+$UUy+Hz}?((Cqv<9;dyD(9R3S&3s!nwILvAB%Li#VLG-qb1t>`q z_=XlfqhE7LuQj4qBBAw>M$)j@*EGRN ^Pe??wT60N0f?F^u{8CGXf& z=KiqC!vu-B8K adZb*p@& Tp33CVa*D7@jydFfsAUc*hbeN1&uiU(!uQwjkNa(}y 1@swg!y-Xzi+S9zjJx7XKNl4 ze!`|c3TOda3zVd=mm1UtR{IQF3SI@$Eed{3iER%5m#9*2p$iC64K|IJby2nU1pFFz z$K)=m<}Zw<^*4RStNgVl+) S|fQ1k8o|Whl$`V zpvpIuy~zPR!7HN#)3Rysru4`GyHc-U(_lly?p1s+_zf0`4WpERWAI0om(B)HoULR_ zt{zwWs{o0onN)`!wU69jZU}*5Ta&l$Ki*n}C?~eEdCkR}J8pLZmtL=Hx@G$t1%gps zKm??=e5hR4i>+w_Jmu_6x}DF5IEj75yI>#R`>zDua|VtD`u{2&nenCe>aW$~>RiAM zW3ZKYK5Fa1Gu{(R7Ec5$sCx=x4(C(o2p>p|L+HfIGJ1*i{>=2N?=%`1;^pqIb^&CC zthjk-;f3nhi<{d!1=4>g8jqSQvGx!`62M9yr@ifo+F4!G$z7{1(O_pDfUpmB?;+fB z%ka$4Ns8xelL{jT&6d$&@nfqw>kT0zeAj=stTAOf2iS|NGi>#&t^sywD?b$v^O?hs zheiddfglKpXq!e>TA3}J=+! VZ58m19pA^=Es&nAh>cU=O)ZGWpks z+yH5(xvx9$t=ihCS9!>p9c<2baPhh 7la^a8C9y{4``A7}h#i|{ds*ECM!jpI z7pqmW22^D&zZE_*^9&ig`D#sSxQ87F Kx5d*VAH;3UoNj>ouh=*I}3X~`K5*`x2B|Jag)p-1l(k3IctU#ZA#A=w0s z2hYC|AP1x)mgy{VyVt_g>8gOpPjl)URp^TQln_<6XHdm957 SIS`yON>2Q(lJ( r9%UN7{OSNj9y2_$knruT=@B!Qv>mQ_HuTQRAUjgE(D&wN?ih zHTG-olF}oA^E^Ft0H{BVa_lINz!w!Ws>CZ* z=dt0alaK2iH$4}er#IVQA^fY|32nP< zJs@A9|aLcmow%y1@W*%7X$)o9B{t(pJD6yjDk2)O9^V& z;okAh)2!@i;rIIJ=6SDs6?bp#ZCf|t8EUIVILTzSr{ETwdg%CRS!s{0lD8KfhIBXQ z)cx7&(cq?mQE2SAKz@0y^AJk+zq=(agdc6UNU{PML*0Rc#n?G@zMpA%24!8PVq@lS z?pi!S7;a}p`cyO&qI@vQA2nF&Rqmo%g jhW_z@ v|n`BRe|WLq+*rO+R&+dp89FgAQRbUpS02ibtg zE99Y&HBI?kJK0w~*w?g;KgK}=ISNCBQ9`y;>?F|2%v7YI7_c7g)fINxGAuXbwNy}o zSr P)$O5PHPfF&>pmblJ*$ehO-j ze|i)wawiw}N>mPt?=>7sgos)2y4Z!2;%99{ u<%uAciK zpQ}?5LDr7^P#tLv!~l#*G8Tia!l;Qn#fIuLuPp3VE41tvE-GaXnX`tZ3~s!GU__cK zjwOGgqH;LCa-ROHSJX-_`9EkIb16nQ&LX@8KuTA1sC z$$UU6LH_GuK#3>D1piVb8x@|~a!Z-I |WHb-%_GJ2U_yPF528euk?*ML_*@}_G#Gul0@5re7v4lwM0HRvB_ zCxZ>zQ6zI!3v&6*yFEmOw)}_F38Xg1pwA^TMJ=;P(@evi#*HptpCl7~+h=q08R)>n zy|s{OA apRWp^n{3p zpM4j{n0S0?T@A42N4HKSCWBB0_mpytSNhaBudqE1X?PyE{Lin`BuP&O L!C+*!bDy3!-Ap;Kf{V%a<^I|lj4U&Ce5cu a% zwG=D3SkMy3o7QAlM!`I7(aU<6gv2E zJ@~FjcZD)G2DhY_A&xjH(E29%O2oA?-+^x^QRBuwd;3W{5La?CO0htpHJ|jj$pJg= zzw{G(OSSSSIJ2bDxywAp*EN-}o#I9m6^fVaRb;KxLDBcAdm|!rB cr)?=7si_+{;_A!;LXw0-rLAW;PC0%W )+j3+6^fVrw+>snkLfr9*Yz?k2$0gxLf-?T36I2a>tW= z`;MyU`#Gz4chY;b{)pCsU-qqH1&J^<#-^gOXBSOBUbQ@-PhzAS@MwF|d?V10+xACE z+6y^3Uv*4$Dih|!iLopoGq%g;dvleuwE3?lIvbvNdgTp=_*Z~+ GK^zSFYCXQd% $z(&n0W z`aZ>up }VyD~FY+eu5g->mZM&iGmWZ-wf&E60;Wz=?yx!cO9Uk)p+EOXYmDa z2S_pk!nE_n0vgwMR$rxqQ)jj 2__B zXV@N wIFzgo1@d(S1d?(c!vELzt|2Wd>DIsLu>Uu*p- z7l*Kw>llu*55?k+1^&6=v&Ap P74{IWlWCa?7VRN!^w-2Jd0 zn+nE@(0EMaCDVJE&r@*U^{8Nb&=aGKEIWlPHf0pW!FGmix}SM~rg~ph )0LXONWoM?yA+m|w!eRT zysy7AOpVDmWN%g~2CwQ&vWfACC*U(L2ycjk(cq4W%)f?TVkI9Gqc i(y8OM255 zdw=$@2y5s~-xE<63E6#G%Fz04xh2naj|?Kmnq_w~0l`W(hGale#d28;$aYq#zH_yo zE8zopwMHH8z3bHGlstz#yl$LXbIn#HwZ}|zEL9op*s(BImoa>4 = zrF<^Sh Uur7`sUk6ECg?{nOg`e{8&!pcM| k-U1$P|6Qi#-ZNq!ybpa`f;K# zkAyszH+-&gOTJ`;3xBN4)GcZqSLc2Zd?1r=Y&p@NyYn*y!L^)^9=Pu^EnH^b16GOp zcCw~ibhQ?x<0Y_7{alKmPM+rml_H~m_MZxsZVksE7P@;c43$rs7QG`ithc@wUQsks ze93v74^^^?pP;(MdL^NRl6TLGzCuF|U249+x5M`nY8Ks`IlJ~?UaZn2FIt&zk)l$s zG@1F;8 0vs{Ti zUeMCMz?|vBI35!ZF5@|o9{j^gT&3z%8t-YF6X*j7KYafYy3{TFOyFT~haB$wQ#YXT zl5brlnXF29=WI@RH=U8Bi(Swnlit$P{IaRH#pK2 (73OL#1(heUznoO=RvldW z>fpLVzsMpF)W^R`)L~)aQpc*HjfkVnMm`TSo2^S~IV(gf+Silik!VSU7hb;072b1= zA!1in2BkgD6h?hXG#GhKBMtM*L(lvN9V83q6Gef=FM0eggYf?!{|~ Qq~Bv=XojX5IK})Auwrx? literal 0 HcmV?d00001