From 9e8f6f8f76d9d53a6dd69ff9f2446d0324a07f69 Mon Sep 17 00:00:00 2001 From: Fanghua-Yu <1901213025@pku.edu.cn> Date: Thu, 22 Feb 2024 23:33:17 +0800 Subject: [PATCH] release v0 ckpt --- README.md | 18 +++++---- assets/DemoGuide.png | Bin 0 -> 164725 bytes gradio_demo.py | 88 ++++++++++++++++++++++++++++++++++++------ options/SUPIR_v0.yaml | 4 +- test.py | 13 ++++--- 5 files changed, 96 insertions(+), 27 deletions(-) create mode 100644 assets/DemoGuide.png diff --git a/README.md b/README.md index c271fa5..ae5d7fc 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ --- ## 🔧 Dependencies and Installation - 1. Clone repo ```bash git clone https://github.com/Fanghua-Yu/SUPIR.git @@ -37,11 +36,11 @@ #### Models we provided: -* `SUPIR-v0Q`: (Coming Soon) Google Drive, Baidu Netdisk +* `SUPIR-v0Q`: [Baidu Netdisk](https://pan.baidu.com/s/1lnefCZhBTeDWijqbj1jIyw?pwd=pjq6), Google Drive (Coming Soon) Default training settings with paper. High generalization and high image quality in most cases. -* `SUPIR-v0F`: (Coming Soon) Google Drive, Baidu Netdisk +* `SUPIR-v0F`: [Baidu Netdisk](https://pan.baidu.com/s/1AECN8NjiVuE3hvO8o-Ua6A?pwd=k2uz), Google Drive (Coming Soon) Training with light degradation settings. Stage1 encoder of `SUPIR-v0F` remains more details when facing light degradations. @@ -53,11 +52,11 @@ --- ## ⚡ Quick Inference - +### Val Dataset +RealPhoto60: [Baidu Netdisk](https://pan.baidu.com/s/1CJKsPGtyfs8QEVCQ97voBA?pwd=aocg), Google Drive (Coming Soon) ### Usage of SUPIR - -```console +```Shell Usage: -- python test.py [options] -- python gradio_demo.py [interactive options] @@ -102,13 +101,16 @@ CUDA_VISIBLE_DEVICES=0,1 python test.py --img_dir '/opt/data/private/LV_Dataset/ ### Gradio Demo ```Shell -CUDA_VISIBLE_DEVICES=0,1 python gradio_demo.py --ip 0.0.0.0 --port 6688 +CUDA_VISIBLE_DEVICES=0,1 python gradio_demo.py --ip 0.0.0.0 --port 6688 --use_image_slider --log_history ``` +
+ +
+ ### Online Demo (Coming Soon) - --- ## BibTeX diff --git a/assets/DemoGuide.png b/assets/DemoGuide.png new file mode 100644 index 0000000000000000000000000000000000000000..42b2248f0fe18872f8de0e73f5b74ac6b07296a7 GIT binary patch literal 164725 zcmce-^;a8g5GGoqe3aq^TC_lMD_*?C-Q7a*1S=LiDNu?P4esuc;ts`%J3)fG6Fd-X zdw1{dxo7`?`<(Nh_ssl0^2|IFrlBT}_ln}xlP6E`6cuE&o;-OG@Z`y}@&8`_^I-Fv zm;C#lx@pNvJ*ga}+WTj`u>GR?<;jz(XxzK6SpRICZwiKPPoCg+{Xg$1DT~tgCr=&= z6lK2Xc$pn$V10ihe{}-gI0zTzICkpH$bK4#<*6w3qp^juNBaAdr_bnOUf{g&^z<~a z`s!)8a=M4o9ivxN;POmrdGzZgA$(!Wlt!nNI_Bit2_Hy*DTMO2W$Z_q z_8VY##(Ul6oy-aTNc$$&x#AiBb;saA;I)|tK>gvDT9Ulbr{tiu(es+Yo*S!PQ}jT95Ha zHsU+~g$yYZDi^eM#a5>;2#Zc!UVDf|45pGEi9|jsA|wlI-X6Ou3ZApJ+9Z&E`t@+n z{L&-d8aJ2VtDjD~WFahb(kg6}QEaBM`zn3ds%=bgrkl)YxCUVnbF`?3E!~^j<}Dd% zks>w{^v~)XIcN0$4vc1tRSD8L1M8^d<4cpmN}Qzl*)M+v533a!39#Z!WbB0PIKB#C z);|hTceeTtdiUEf%HC>IFtt=VY;AC}s6CG*)X9N&`&*pO5o2+57!(qz0%y!8;u8;h zC||$27$8ZWg3o8o>141!&lT?ASxf$;otOGCoZMHE7uuYH``2}QjlK%smhl0TIsHs! zx2&C`>g8ztMCO0w?a0UUK%sf1&*f>STM5YVY5Em{uQEKtO~`LA=(i(z2-Jau*0 ey2rR z|9Z9Q$2^v@b10t%kD4XK<=pp((qS~dV-6>DA5MO5pI3YhGafas= m!eLrT^z^Cwz?LuULM1lR@_#8?A65qv zW!5~Ge+%7uE-Ts|-jAa!`7a@A%t<-F(D5qXDn5zMiA=M|{Pj^u R=vzWDa81K+aadhAch7bwAcC0+F1=he$R zQc@x(Qb-n7=nk}AQ-QmDH=jkYWJ`Zyu>a08Gk#4)`0%gazPx%$Whql;C+a=IdOH|2 zWVcsgb^Uy3?{bCjo-=;4&!@6n< bMX4&7ApWB$-qv}{yE;Ckdv=C{v#5IBz@Hy{)^VCK zEjk-01(XV6yyR>Y60Qh%$2I936;~=jG*@|jU6#gJ-fB-@9T)#cr}Ta~{P_bqP_TP{ zlr+~2M<7!GtPd7$cK^js$4N-J_(e&KZn{#BRa$JX+I6@r3Umb=_d0o>G%i4TWBn?* zVP!X&T~!2;XsXR2KQow^NJmLH3R>6#Tg*3dQ{=K}-fqgQ+|R1YqvuZOvM@0{P^1ln zQyEYYrLYAywI);CU!f&cEp^j4X2leDv)L?0c$(&NcNoH=AbW+FCTBberEc>7_o*Vj zp+)`t5!e~_$*w5S>eTc4?}HCpl}gNu60+=PBn3O3eFZ|3+gxtY)g!w6uGJF@RN#9y z{Klnb$(kkVeQaxbQo}GBG0Bs 48jIbU68cYYDLL)crqxcNs{2 za ){D!%MANMQR5@Bkzzg!*#+m-;`(=@uT)gvJt>@?#VaVvx9L<+X=A<~l z>%KO##B;k_FcvYG86q*?*#5d`QVitLH%GS9AyBhY&9kX-Cop5*W=NPRLU!EHB-ID@ zjuk!pZ@R!s;P*fwSYK|dZPVnDz(S5)Rn79J!kVsVFQm6+#V6O+l>=T`I)IgL>2Dnl zXZDYKpaKKh;$3~1%Tg}oP900JMJ9+z$M47g?*jV$h4nwa@&6g`(BJW0{^u?Kwe#}- zX{N#dUh{t*{{QczU&Nw7rOF=pcHRF!zZER(`_zkZpb+Ini=KNsq`m9Uy2Lk_i|1Du zw$mpxHV@zJJk%EgzCV_qp`7G?{1~_)`)Sv)x5w>|KVX-;`H`kDa{G?>xf7*oqDq?X z(Btxvf`4d!|90!$w(xyQw`!y_q*HwDoz0{5@-_5`(n7?)UE!Vlv!K4ESCf_MOu)cf z)!c<|-}$2Z-*fP`Z`{heh~nvKtPKtIx65dc?00Q8D5H_J&f%p0`DY;_zE!-u1`1hC zN(9iW{J=< ({R$sf{w&klA7dAt+Su-;yyc87*A5z)BSH#jvoC7HO|%`sZ9h;hs~c%{y4e z+E6ice5??$I#ePo3Fqc7V^&nO3`t+h#25$OQHr}*CEPI`r#3w#-lRq0DCst*q}NCj z1cTud_6AO!BW%MiUoO9IWs43QI)>S8h0VGoxINhCvLx3wXSlz`OkpI@_zj%)7Qo`X z_5ZLy#Xy^?5e?>b_I^<*K0Y<O1BU*wKV8$ggecD6t@ghmqcCa8!oZ!NbR5ExQf6_y#L}l)=cT zf3`!;_+n)|yxm6m<0N4N!@N%#IU&9DL1FX*A*%xK%U4v+7XQ_@{n%WbZ=Msuut;?Z zN *`uK+^K$)mO5N_Jv9R*$<^z^fs{5%VcYusg~E4|$Czzy5r z1Eyb%Q^m$^+H>^b%Y+h c#LvXk=b@Zm&WAO$sE;_gQBZNxsxmPpI=U=nj zok$h<-+qvtSt=}oIKp>3V4& zV2K>GsWhYX^(Yu|4u$Tkf`*MRI!0az8Gp#w%l zL~jONW*7IX8B4yIq8|cP`}Qb8FfR`_N{N-~V3w&I3*SBfk{fc17~a**&4fojh~$Og zK6^GAPcte ;9~gg|`G{-bi R7{sD8wSX8fg z*Ao03ICFK(ObMS}oGK2=;j}yy@z?h#yqmk!lPJ$qG6911IK>(YgEhCGs+oC~t8VBs z>nB2=t& F|N{dlw?lYNN>fb+W39-b_>Onsf3^cAm*L5pMWNI;V+)sTHjr ze+h=0^i${Wd=YE5wA( HYSBiYkp0<-qE_n$Fva;1Ko_uI7gw)TC~a{GZ*#_jh(ej$KYcXG<`{82U``CCIM zpfBTO!>xt8Wyg~}g#Ye)ptj^9g;Q%a5a~L}emi35r*mRjpP_i&LU>d(#S0FrKUA|` z3+ME(<0^r>vd5!0!y`jz#tMN`CedR?a+T+ OZk z7$Pmf7@MB}4xy_@gwFEH@;BYSsfQ+|F2L?w#w`y-*A*Hf$B8vqJHCbJ3(#~9ihxnP z#p4KorX>%_lLwllwz>H5JTAD!PGKjj`dBWWf%9eCM&F*?KiUGLrM(9d*#!#idc(Ok zqM0~=GCNkM+`^dM0&qfl3|$c_e?Q;EgH><=zsc5|d4=AD!f<&aEyYcQZl=>{=5a3? zu9(TfZK_b|$!9*!lf71X*`MBfizBzKPjip)p|z$(Ix%0$Mf*iDC@VDdj2qGh+uOnR z`&C=Itr@4C4CjB410?ZsnTw=3HFoI^!(vpmTzKbPDk|fW5B{Zs!}Cn&v%GfEXt6$N zBx#J#C}6fwcfg!3?<@0Mqh_?YsldvcGX(8!ZzdDvdYevpB-MVIs?*JXymHQ&*Soon z#8o5ZG=-ZV$p%ZS9=5jMT>YZ$r q-@x+C F0U_LnHzE3vNkzz3;M{>VV_~r@J1$@F{enY-|!#}Jl=I{(e-GgxvLmQ zBlH66=?h8>_3R=qfio~gO6shdl+7hlO6#`wWPc<)6zhzTSsvC=6)@<}>0e&~BLvl1S1Pmfn#B0S`7(DT zc@tPt$c(~}8b%Ch>gsXrg&GXxl7Bkv6%H#*t63iK$dZ*tO>d&o_Jt$YT@Rc7UuE2W z;J*a8b`(T(EY3F@h>wESo%l+Cb>6Csb#W7k+ zzXJi7DW7=7U^wni&C^gdlqGS#dsx+JCZP^5j%+bBA>*?(-JlB}cCA!lCuTGM56DI4 z?~lSiZoCaQRbc2ip3Ng~REq)p8<{67a_0TwNc4R%;fW$rImb|k$IVjVR+@dtUT!yx zG4W~>PvXu@vCJCos>pZZCGYWICFe6YT~am2C7$GkEelTW_J$)LpCQ+)S3?20)CrGk zsvi+xiCU!sE-=(J$E!`hzQol0epjpz`s8O1x_Zp%ij4Ts9^ccf@e1dSU7DIh zHE`Z=G+6s;Au<-YzF{}ZaA0~~$eL)em@GlmmYoymIb9wV-O(0 1?7X6d5*)qy;X3_5R&{&b*uEPEntM+i%! z1fBNqx)+@5AHRJlUX(1VLJ{Ay^Z7K&4)K|eQ89V$(#wr)1r}FDw
zd{Z$5947+d6DE18O@@36 *~6>;4^Lj|Jz|7Rp00A^V!)# zVyS5a@Nxq-sZuavj53;>Pq5+~cOVZ#oTb=}SK70xc7KE02&0wNNtRQ4eJa|E7*Di= z3njGijBG4Rs1rW+y4U-Dvd~Ozc;xc5&ex=9IaG`FqqP*5rY4smP#; Ua|4n;mle+(OV+ZIpyNJ!n&aB zk~Ui0PX?stSYyR`Gu3j%!0+d{A3Bn3<+6e -yz_1_bRHA9mbdbw62uLF@i;W?0 z$!xleywgH;zMpkQPlK ACBij|8UTiyOqeyek zRcqKvEMAUr6lqoY7uVbGZK-NM6>R0WoYJ=O$#9qV`T(dPjej6L=FTZ`M@U9Uhn;}Z zG$0>nm*@UuS+lBNL46|7*Cl$u_GX#o;lSk9Q1Uq$1-Mba@XrtJ#&SJFUnG?EV7&C< z XyB_;(A z(dz`Bh>*-xi!4SZy>Yv0GRhIUb*j)!(35jm;z$kUbU?7j_#P==C9^w&&oSy^OD*ii zz;NFKgAg`)I}R=cII&7dZ7VR;7?`>>(klJTH<(L&|9h|D&tv3_%feUB20QueII`~` z4YCudwnd=!@S^c|@8u@Lzk~XT_okaPlZg@r8G{!-gvF?7LtQ=QgQE?K5KG@IFH2JX zWzHOZaJPw_ZckG0aFkCj_u2L`*Le&^rhsI?DU?@Ci{-R0--Mt*l8;`x@*v*N1PHXn z{2wAPZPGx7ryulw9djyxbKvd24BG#(d82 _RY` zm0NQpTw9{iqsEL@>pcr)y29|mKq|gW(He@Qf-TNWp@Q-8BY9<}0+rk}mz#U2fCJjU zW;&5J&Z1v`@5?A~IF;&n%44V_#Jx1RuVt_^!i@&KjV te zE+HEV&C~XZg*y6d3sW+3$ ub cUg6o0K=t;5 ;b6-dpCxLXedQx*%s)|=nbMabc{)K7SOm1% z=Wxx8HJKDqm}b9YBW{0!$K5^OS%XAdavkW0u!o#~MAXoSsx*Uc5r*CX3`7fkg@Fu9 zh##fvmdy W0@J$fG? _F0LYC!*ybupy!BBvvpHFzU1WH}RP9 z7%GhWv_NeIM*b`z($6;;d*$!_(ku|^+H;;GM$bDI!ryD`jlR(8K!iVTii(FG-$WIe zW?6uyl8+k*%aNzMSsFzw7}Bkge0kQMEj2vcWu|N^VY{UtH4Yu>cu$C& _b?D zpf2C3pACo@mtq)dup;nlp17nwY*--Z>UTdY_sf*f=(cQ-&~2kXyPa(~+kFkbN?jCi zLs&npp4#`%sju83S+*t oX&wy;w^P#E`4rQWHrt-Or x&FxJ41t$ZGL57J(JW-Bgk=5o?PP#53*LS`8 zJ7=2xH388c)f1VC7fXka4?Q=u-f^)X{?QsEHx^e-Xi@}l?)d|p1(8pT7(QzYu=_Zw z?9}*@^LoLF@{40E+u>3u!x-(>M0kN_(89HbLG^{j*Fd5S$?XNnRfYANYO6;hfZGbU zpFiPs-DVs237gt}j>JIR22z3SDZ`4JJzTBZORxWdC*SQA^+{+FldU7E?YUPBv)q-+ zACO3v@3npex$Up<+6pdPLru}jP3GIfe;qUwWUE^VB9@CKtn4ykDy<`u`soYNvo7nG zt4q*EBHZMe*YRMFaOgHSN7_X)h_)Sn|EJ&onV0$T+SQraX^lF#J)AT4LvRe^2Rl4^ zmC&XYQ?m}kX61%oK+IwU|L>j lyCkP8$31=d>nqPO^XJbIBYfW0@|qpMHx1 zJQe?VT%gKrS5{pN6`eERA>+&lJ_XE`PzqOgpat$FgGh^cuY3v_^#;k 7sc3|FGOaMU+n+UBmve#$Z}Y~#^l1^!VAM@4Giq^BWxNS zP8ZMx9*tPik@xfT#=1>Bp%Q5f;(tSlSt!?_zik%{4jDwNHyAB;+CjIx{bMUblZsgv zUS#QW!~{rzk0=(KU#P|(jEglI|K!`|DZ0bBj!BOPH-Ol7p?%i8f?eH`%tz`cQrT{K z&E(UET3@w#gLJss%%Q8ixg#f%s`hi)1=WO4x>%%1#T>`zAp5Jt!dhLvn5_ -rU4d_e!VLRSGRd+fKf>H-5`68BJ-An8`wwR;>{2;W>3Uef`}ekUlb<%~AX8gshzdrFt;s zCydJ-gu^JGbAUShk6I>t`g1J HTgfKF#-4~ eooIOag8g>sKmxoN}){+&I~ zOHUOpAV;bZySAbrY4Gg_4`!SF7}|Ciy93w!(Q;@Rkj5F@@Qe;Wp%IdMYdw?y3!Auu zH^EfUr~4%PPNh)a+Uf4}2gNIGWT!!I>niuc35k0=C$m?NSShE4)ZrCU2|?yie1&=O zWCI6tiQN?)uBf<5i5+#g1WJ4&D286pcSs>UUNqA6gajMCsoZ>3iWuvN5|uJImil`{ zPi2PRmoYc6in$84zRoalYWJ|IV4a-{sg@R8zD?a?{Ts}2vOP(ey9+H=@|_t9739;C z(0uBvj=TL`(`f1q5*%xUVv~o|i#{U)uKkR9eYBZghyd@i4-j0hB#KrCGBd5*M zh0Z6))i{~<+4d?z)S*YW5LY!~ug>VQtM`N%8m#-6_UUVaxz|~CN4^k9VKU-hY+OYM zypkqlH*Hhv`EPv@5yh@ate07P+Srgwv_|5pssZ*4jOuY^qwJMawrL`z;naoOu*si4 zWta=-Mqn#tqC?c$d2M-QiY9(dVPnX7HWqkBuaUcJT#Y}U*Ik9q0R)ps8-KJa%Wwd7 zpFUOM*$iU|{yqhW9#f7L==luSDX)33b{h3h;4ijwho6iF0`zXM@KJUn_-TFLN1XmU zb?-x`csU-5Bz?y=^CsIlkd`MpAtx@Fs2T!W4N_>l&A&1b)648{Dc8|meLz|@J5p^@ zu93IBZuWAdN}LJ#{dk9UDORzhMayC61#tAUV^QI$LFkB5&QWS3M)RdZ?GG!!C?aP6 zp>Ov?j%C9vVT%!CzQN}oYby8GHT&nvWn-ucwy$&s(=Bo^(22&wv-g?by5>JfLSY(| z9pk@S3#OdNF_D0EK5zId_oEsQw71)NQWG=zR)#A?*}W824$? 6K79C*0S+t_!35c9WBHMi5@YgCZS4=xX2Qa` mn2Q`i!eb3aIisAS;r*OJ?&Uf(F ziDUUBp?^p@hN9`v`MjCv4s;ZcbLv!1F_ga0q~g3BXz`R!^{`drA|k#w9qkFqYk;;T zs=m|yK)C=_xU^*{yO8*Zoz1&p_}p)g |{e?CtMOo3!K&QDU)&8OZo`#0z{6s zT?!>vugBwWWU-}sNE&}w_K9NtO>K^yH%K4rqT5`MBbo}H9cS2`rL#l_)*i9WD;_S7 zrr2T+Q3f?H2opR#;tQnI2J2l5Y`qOY$Qx`p*D`LP2=Nzh`5kYRK4AKxtF(`c;jy%X zU~f8)-Aq$mmOf)3?0s4{I>AAE%#sSF!DB1m^A$!twe8k$3+od^?1&)YK)R}I@ShQo zb}n4^Du)QNH!MFU^K CY8>os|AG_RN*5ylccbd) =gdhbqV2^*JrSfdbUnS4p1-83 z@!k`gPuHPb{d3#5WPkax=HtmUWoTro3|p1boaX?{0v$T?B(nk!Me$mQOn?52RCBtf z&9wMw@FyI6?1frlyr fO zR5p2HcrU{pH0^rYD&!1QdYh1Cuxm2twZQViWL3rwE-Nhs?o?Tkm|YUuRpF7kNv28T z2$a-$+M^MMqT=F2Uhk*2Uk}A9JJY4j4~eyK@bM)&BqUpJd5Jy5n_R$$KZ)N>W0$Oi z4Cs3XHHwXq>vzbeJy6iBjsb52V3g+F`wR}x!DGV)>|FT>$FBPE6RzET>o6;a9 YL(zR*Qi_GR6j>+| z#+bo=KF&vxEP~1KT8e87jQwqGD{RX}okbu+df{sSOrfU~o^wZXf1e(~Vu#Y!^jA`{ z@_fCOzlCzV%_)YIe6n9G(FKA-WPX$Ofj0yIv}u#p;efX%V54~B4mh+`d2}!ClYB5H zws6nv3l!X3T0^e Z|f@shd7jD!WSJ)%$mzhS|Z9HUCQpOA#Bu}#$zX91g$4j zJd_CGErDIpFB3*cV4h%fqZvts^?nFY>$g*U-}U}wPiy8$XIdYj-jd427M?&_4WhlU z$gl*#?t>Oi mUE@ShD PQJ? zo!SweNZ9Rn2}V=px;e?T#7ePbSeIf=YJ|Flw&|RRIxt~SaQNxKY@x_?X~xT?3`7$c z?}UV}0$8EtQ5T`7?Qjrw!Ik``6d0nknZfOl*z?vMbu=HOJl8f|q6S?_q&c=GOO Sn h9<#YaA=7@aWv KA;=pYkv08LOxA0XdzDmwbr~WYSz Q1%U$Fc9k za@o;=RSFVqQF>nvVHTXK{l>1ShZUsr+u(ulZ)EguyG L!+5R1!4GeX2|C)t4B8%YN#@!%b-PjXxFs+wkC0c@F>Io3l+s*9)^4dZOB zKAzX@ne=I?v(M{>B~#+B=bIx igGYZZ0mptYB zO?A2(t+9whR2y6{4N`e(&+wC&J}Zp81Jr!(S%uc7bEQTB^{aPrX}d!|!i#?#$zsKx zlhbz~2FjqCtCoZ~*zl808224nizvpcY1%l_naQB;SK%hNwpfT5Ge3tYP$0S-&BQX) z9xSIONlD6cWb&L!Qj!7i=zF$l+G}(wlpb2BeOKHRjp4UdT(L4$W9?o9)#p~ErER~Q<(uyXP@k<0)FyeXK+mN{o#G1(`9>DzSNXP4^2GePn(S9b zi~br+Wb=L1-MdABEGFa5f0tWn&P1MY5MN9ER{xVs5|4s{wr9IBA!k)a3}z&OS#Y); z@C^&nlxI%Ei%hFxu`xv5Cr_i==NUhqiSEF?2M6YSHz~?Rf$dz>4nGLam2!HQ8)jS} zvjK61=MPS2%If_f4wC`ZNB5sH^Q8t0tj0b2e|67J)>BEdi8Pi{Myk%6 SGlInNj2)DZz#<^vYJSo@NKUquw%)fxOc i9*?v5B)*->@Tj zvgit3oZ->V6qCQ8hg-(f9v|esJED1uk! {Pn4G%NXD|-ll!s}*u19J8vvT5i>;k$5nL8q7uz?-y1|UzsqDZR zr-aVnpZphg5E<&L^#jqJpG(>7{ZF%HuENA+p-VT{Dh6Rya=G4K)A>F^sj+0{lV`Rk zLQaV71N+}{Y$|AuXS)}(H6xlGu6js$Y?q}X1dUDvlPix0e1+qwlNct_I~CIEAt;Eb z?Hs@T6y)#K`FwZc4*dj6e0;~QSeZbdr1Gol_I@BG>!JSLm ^5w0$XyJ z)efoGX@0T1t2Wy#`zKgF^{ayLIEY5niE>%KpbEC7#2Z_jwc`5~k#Rlia%6#xFuWT; z+T|8=flRjVJLj&l0$zKWbgbLuSUOiW@F0QD`xU0vRe%$4FYE%)zymi@o$xhatK_xa zoXiA%-|w_pF5xM4OE7CxEB9160~n&|JbpwwUHX&Knd;~*NjE4zn CbJ51M-` q;6K^I#?7z(@7yUZj=mp-d{$mp PD9FalBft z`_>61$9zCG73c_r(p6!7YvZa-jjeH;l=~7dwms%tvDp^m3g#?Zs>3Uweo;nc*zI)r z6-dt$A(dG)eoFqZL$93EDJ?#m^IkfH*)=kguMNoB8sp)_O7eX?<30bXN=C)}El+uZ zY<*JTQdox)S-o2A+oiQ2pBpo*Xz ~oCBxdY}p8?zeDc_3%NNxtry^x4Q2mEv LTBrY^JMe#Qp}{t8_sfITT41^dS@Mtms^vzD@#0TQQDyN)~cLFyHna!dpVeD3q% zgQN`pztEfY9!*dw1}u;!G%@F}-b0y!H~*54fwrCAL~qYvd*bU(VDCjc>GZ45HjL~Y z+#L+^@Qz66 6AWx#u(f{X27kX@KKkP5-W1A>V+D)-Q6}7FP;N8sN0v< zfAB7!%)h*u+$Ic<2_~iwCwk^~T*qV#fr`~|9(1{)N(}(!i3&bHq%;Yf2m*)EoEaj5 z?73)l-VGsF?3G;}tttbjq^_}H;Wp9&&5sVNkEeiaW f}t3xwapN1EzbxdMF4PI z_S+i1#*w%Km`8GbzSJdidS<4WHBxryJ4oEX|8lpY4L$$%H==f`VY6NQe7t^VsMg+s zg$@o$pur55_}sU^;avs{z)Dog?~E_$zsxm-2@5HkTM;n}P(yU_X;qjZ;Csy?>&UJ- zs`Lg^O+#k&*UF_ThC_=`y_mJ-FInoD5}n3!U4uV7S>{wgQgsSi8v;>m#or%!CeT8a zY;#Jxgd4so*{ccinq2OTk-ZV}+Itb_-b0LQMrVWfvmJFSk6b^MJ)8j6qd^P=h(jjV z(O(TKKj`!Dg7)CzTyleRg}nsFVhy6Lee2*I8&MgLY4e9Z_r@>_Vm1 2KZ;FGdj|7c)J5NC?^T$YyCLr;44S^ZmLNBg8cz*~j+ao+^Hvt;-7q=bV z>t{N4y{U^~^2+&YZ9Q`yc6cJKRzX24Ci82Uo#So=airsXPYCMjykjY#0+AC0jt-$& z2rD+kq@MGdQy~qM)In}KN9rj~!HghM(-%dXxTUrEsb#Njs}U+NabwO25Dl&n;flH< zuW@B`lTN5PPO)SUqNI22_~WevS&b!P=1H3qQOp3T8e0ys@K4Nzs*qVa{TZbwye%ib z)pqq6-BT+dBs8(M9!SadO*1&s{&KZEwK}o$OAl32YuPE&ujH{qx(^c?PY{W?t6{ZP zhw2}M?FRKkNnbA|JC$nr`CdWhgS~87BS)*_^!R2^=&{it_o5$>wYZTk=2z;oo}gi~ z_?u=EeT9FtTZQC1IqYnh+w}A?!UkN;jYYgS)Lb1XevPlX_nEkrPF6QmsI5woB+le6 z;y1qHHoofXKhM12M9nN}S0Y5OHc?o(fXoUBnFX8jHAwJzT%+(4zBX1WmJ(~k%Ih;W zogJ#5&*qC{qD6r!B>_5|8SO9(q*1+d)5 2Jo~*swD7E!zp^*kjL s z*BY8Rx0q7h9aVODmR+QhzcZ?>9UP@-RJ;(vA&RmM1+y<73e--WwSE&L*8$iYD}rhX zvFSjr+Q(C*O`vE(wOopNfg$y 9a!l9?d{2H_F~F&=iFT_niT4PDRZ1_eXvGK-n_e zpADYuO+(T9B<&`St=pRVwX@Z?;bjLC36lSz25-~^IQ98D$ zx_qspdtvzam=JQ~v3?h+d|!xqBSZsKDV6tWQi(8dTGkV<>{$M;tdlVBGb0nP*2&+R znCJz<=AY@7HW-PsHr4dxh?Q~|&!)wZJ(BJ(+~)*E#M?BJ0y^h!_{&pSSaX8DDzP%F z{~&Cw?4nj3v(S>ZSh;D^NTzEvaQ2d#^8tLV8^76^#kN?i&!pxl^bs~}dtP%r+z^3u z%3>Y<_3jQO%E;}L>Apv{arfLl*&qWh3a=YSGZ2<}d~Vb@*vY8&!9G~D1q+kC5tACx z4C87YjoTEQon~<6eyj8l_(tc>JkphV_VLgbTjPAWqS<`nehs*C?C7Ome3u?IJdwyE zT7))s(gpF(`T Gk2e$STyrT|{npv!?^TiG%Bt|#nGjnj z0zWIrVoAcxR!j+a9BjE<<=v`S_I-XXX5D(<2(@=7?lriu<#koeZ(_bl!H>slL2^MQ z8FZ)Q)>(h^2%dW^cb%;AyXE|HObc%IVR=j`GnxV$ag?R74jTzGls&b?LsR=J=tv7i zcRNe>hUVep%%m4Y1-myw>sSB qBN``;;4?L6&1ov%mc!?!2&(lK8fS?9bV-RMOcM?o8JR}YY! z(6IlITl-gim?QZBkV9~Q6IL#PRv3tQDI4A}J?|w@)55k3sU^|0!5uFCPvsv}F$TvO zQFY*pF127rji*cr=weTs_UKmu!!272yYCKu8jR9XLjkH>y%z8U0g<8sPc8urV_$?f z Y8;_UvESwv8KtMqF+!PAi(9)AqL zFAz^Dhb_k=8!&`WV2#OygKXla5 =-0h6cPF*c zh-`kE5P&Fs-a>5;ttjiqCwlPL3sN6!#p&cQc(<}s+mVj6P-Pa{EkhrQuGdDv%Xn-X z-PeW4r4_qC^Iz|I82_bPci8<;2_Ro%(N^5(w^u~p`^AGP{#%1NrZ$|MGH@^VsYa>L zbGw6Pv<$Vto86Bzef>LZ(HQzv5bE*>5bH3V-05d3Vg4=*!Z1+@27X)zAm<0tJPn;TMb|k z^o@%F&yOfZzVS8um!1yyz}!>V$N4M(@UQT&z|fr6kz}Y|?2 8r7yqwvvXqnroW_X@teu#ND{ zt}@oIoe-(O&$Zm#&W}cpHl2I}Yf{2V2t~blAAS{D-yiHnZDgaJbDD8Z{Ze$BOya6> zJau)jx$D0v^6~h-UXA@gK5Y!XGh5Y>&?od2oyj87i&c%ginDWKx@zn-$(APey rezi@Iz3^43?6f?#Z0u@|XNLKgB54}X z*`!Wj?%Khky_BQwm N$p zc;~?f*+2(JWzOI0Zzo(nVwHZ5!a3;mUebBz*>25}jVuAkq*569HiU62`x>!O^J91I zPdXUPvUJPDe~J{U{lqH$3iRH@EM8K7? DJGes+nG7Ae#e3h_K&BoKPUH+qo{cvTg2PD_y$c zgKOpPe^S&Adbmw7iBZXd?DuKdGAd-{BFO`#P%$O7H-9Z0uu2^3zlF4(2`zOvn`An{ zGT?5ao;Td}+i-z6%mDg1AJ3l!)f^AUFUFsk3|z10d9;sp{VFqVjXa98iWk^F`YB*% zxVe%Or;e6~bgffkevSpbbV=AYD>t$#;o?WZH?o*!J0z^deC@;|&mYq2<9IcL2yY^9 zRw$Tg&lX2vo8)>RGPyObvmrGh>h$arRBlF^p9I%vDbFC120rmMzQito!`&xvAi}!y zEgIYWH+Gs6-I%u#;Q#@-jXw-!=HE*CMBZCZ2Sn-m2q01tR I(AfweA c`_;@8FA{RWt1ydK`W*&6(pFdDRgr>)7p z?I@TH&TalfBz#yROiq?x)*}d}PEo |^4+~@MjJJMnqRfjp(>O(8y^F$ zKdgnW!CIceQMaAcC_WMkCB{nDIpakYh<-S)m^Ee7>F3$wbXZV?VUp<+KG0w*$-qR8 z2{juEHQ|}-5rAsn7n275& (om^pl`Gpm`~VImTgaSY5OXi;L84F(y&kpt);+0 z?mx^zudhU^ZDL6ystRnk6F~`~n&;^xEcU?O*{9mVZ`LKG=v{GuUBlj|+^G9lyfV5? z>{rSl1Yh8Ik3}e5zhZYqP7vHHLJ;$a-p?;*8^|8oV-=^Zz@kg*1HVB~LOwr_A~COZ zG0~;kNrqPeCG#(^$j^BA ?5S$<7tqE6JV|B&M6*yQ zDV)Y!$aB(=7uP2H&&t)`Yf~`$RMc+?+@rNf&r>ZB1iS8xJ1kBHP|$?uYkJ-3p$9Gt zlGYlon&P{13u!2ejrd|1%!(o<(&UY#Aucw=_CRjL(85jE4E|>=JT+i(Fsl#8^jqbA zyrb9@AKW?bG2M*m$;hRu+ocH7U!YuQM5Di^P7^kp|BFfeVo%X><$b8 Fp&FAJd7U|6SzH6)$K|G zbDXO>%Fz?I=HC<1zGc4xum3_x%~J|B^5R`t6hfO#LpF8R7B}8WQUtk*pz<`6#Y;m; z1&o7xxsjV3k+<+gVW*St@~sCKryFl|!WxBQWWA|&m{oea&nVWvOC_kr;WA32+hCuE z*l)jFjAsSj?}uX8c*)z2(qUR}`g`EBc^;cMk;0YNWA~bG2Kb%&Va7I) f z5MMeMMIVCd()nQS(&dd#89wYVPx7&o-Q`g+rq@D}=aukv&sc2n)*RyDC90SpsZcai znJoUM4xXk8bGKCko1vs+{FJqOLHKU Qz`Mg^T%Ln*OAwUOZ^R zCjK}WZsUj6tF _^eh^1 zhCSfmL(!!*;4V#w)B!FGGld(m$h5!*jeR?F?NmEd^Kw7YtOPc|BT>F1Le$Vd-~Dk5 z3tf?)0sBEK7PO59a;kqVEaz_Jq%iGYSo< 6wfbL=a1lzrkWeo8SrOH?{ku21AQ7ZDjP!AMP#{DPz zoDx?D9B}fTz=dw&2rj1APKKiaHoVY=^XN|I6kXwCRN0st-f-NCilcDm&5IeEP8mmG zXF>*TdQh)B#~Np~&Xd&Rr-b&NZzf^g!53AhH8I_A3nQMgE*()Gy2*x4_PhT#39GRH zy`Ukx22h(DGUY0%dNSl-mV`_v2VUnzH%P|^k;FQM(!ADEoe!jL@6=bwa3?*vtXhC+ z?@fH!gG>Fazh(R=)zIn7Dv 2 %GNeo$JMj=L}U75mP;f3r$9G=ekuKBi?K?foE_d*Y&ww|e3fUnTphnEcTh_9Ss4u=W_Up&M!@ z*++}-Dn3@U(E2faiiO(k1=FznElAU(#A_pbsp??rVPDD0Z `lp)+*7_F?W( zew0LR;qVT&kwg&?8Zz&7pI8$mf ^8oZ|HT50tR%RX z-H~F4ne{N}H-jo30uV8EMT8bwQ;B&&0$=W)w1R_d3SGiD)(tFNaeK5qng}~-3j{3f z_i8s{4BuMDM+9p+LY6e2rUbUdbv3H 4hZl o^)#B& Dkerof#-DAF$^B2Y#0`?U(Dl~M3v+d0+LnZNt?OR2yW(S@SGhp<*e#B7rRArAnvfI zf`MEHP52u<{c9 seVX<0#NzZs>RoT71kn;1rup z7i3b#_bEjUl=X2lq nCN8; l_|ip J8Z#j*dDoMEPQE5hzSNbj&C2Oa;mk`3ff%T?G_e+{k09nuw4 z#6jrScK%Yq9oh>i_y4+?KJ2gg0|%?OlC7;6=1i)FdPCgmI`bDz6~k*bn+|J8C7=Qn zcCJ3FLy5Cl#sH<)6>^0*Qbpau<1?TIw2uTMi{5`2t7Gjqer-bWPg8Q=(Ff@Yg%rHw zEwvzElHMDj@s)&4Yvhp(#u_T5YmL_jaiS!!4PF*RZc+>FJK>_BNiFRS&~!i*k7gw& zReslG6j8mYCN+zFHk?$LI_KZc^l**?S^+$T>>3<|u<91nRCOdneLJ#cV0frVB3tY6 z9FKl!iXlRvS9guFiai+eP%}Rfv`j3`VW$zyMYU~=h`%Q5sS-TiMw+c~Cez{xt3H3w zuZ1Jkaf*s>>jY*FW$;5#PeGa+&xl5z5XGG@Hy$!$t(KgtYSQ=8NFw*w9S9t>%!;N0 z)6_Q3hFM(mk)MUOevi>pSvI o!(JfC1(KM%I2GYOn`6qij6cW&nb #<8iDF^_}RGliB8DxF;B(%E*#UE+&cDD z`lkjxG^0(FZQJMoejezfm)1sajZWFFk{ul@iLZWu?9g9 a^gb)6J}YS7ZzBbK+P( w$&Ucaw-!kA8v+@^2 zfA&N6)qo44*Q9d-M9ev3*MPJWh%peVkxF