From c796c1291d3d6a6f957f9c63a6727c3866adc3e0 Mon Sep 17 00:00:00 2001 From: oleg konings Date: Tue, 4 Feb 2014 22:28:14 -0800 Subject: [PATCH] fixed basic lambda update value --- GLcuda.cu | 2 +- GLmex.cpp | 4 +- GenerateRandomGroupLassoDataSet.m | 52 +++++++++++++++++++++++ GroupMextest.exp | Bin 0 -> 984 bytes GroupMextest.lib | Bin 0 -> 1692 bytes GroupMextest.mexw64 | Bin 294400 -> 294400 bytes ReadMe.txt | 67 ------------------------------ 7 files changed, 55 insertions(+), 70 deletions(-) create mode 100644 GenerateRandomGroupLassoDataSet.m create mode 100644 GroupMextest.exp create mode 100644 GroupMextest.lib delete mode 100644 ReadMe.txt diff --git a/GLcuda.cu b/GLcuda.cu index 9a7717a..2a11005 100644 --- a/GLcuda.cu +++ b/GLcuda.cu @@ -464,4 +464,4 @@ __global__ void update_q(const float* __restrict__ Atb, const float* __restrict_ extern "C" void update_vector_q(const float *Atb, const float *z, const float *u, float *q, const float rho,const int length){ update_q<<<(length+THREADS-1)/THREADS,THREADS>>>(Atb,z,u,q,rho,length); -} \ No newline at end of file +} diff --git a/GLmex.cpp b/GLmex.cpp index c135499..283b2a8 100644 --- a/GLmex.cpp +++ b/GLmex.cpp @@ -418,7 +418,7 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray const *prhs[]){//w fabs(history_s_norm-last_s_norm)<0.00001f){ lambda_counter++; if(lambda_counter>10){ - _lambda*=0.01f; + _lambda*=0.1f; lambda_counter=0; } } @@ -474,4 +474,4 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, mxArray const *prhs[]){//w //if(err!=cudaSuccess){printf("%s in %s at line %d\n",cudaGetErrorString(err),__FILE__,__LINE__);} checkError(cublasDestroy(handle), "cublasDestroy() error!\n"); -} \ No newline at end of file +} diff --git a/GenerateRandomGroupLassoDataSet.m b/GenerateRandomGroupLassoDataSet.m new file mode 100644 index 0000000..f427d3c --- /dev/null +++ b/GenerateRandomGroupLassoDataSet.m @@ -0,0 +1,52 @@ +function [ A,b,partition,lambda ] = GenerateRandomGroupLassoDataSet( m,K,density )% density default value should be 100 + +flag=true; +while flag + partition = int32(randi(225, [K 1]));% per Boyd example + n = int32(sum(partition)); % number of features + if (mod(n,16))==0 + flag=false; + end +end + +p = single(density/single(n)); % sparsity density + +% generate block sparse solution vector +x = single(zeros(n,1)); +start_ind = int32(1); +cum_part = int32(cumsum(single(partition))); + +for i = 1:K, + x(start_ind:cum_part(i)) = 0; + if( rand() < p) + % fill nonzeros + x(start_ind:cum_part(i)) = randn(partition(i),1); + end + start_ind = cum_part(i)+1; +end + +% generate random data matrix +A = randn(m,n); + +% normalize columns of A +A = (A*spdiags(1./sqrt(sum(A.^2))',0,double(n),double(n))); +A=full(single(A)); +% generate measurement b with noise +b = single(A*x + sqrt(0.001)*randn(m,1)); + +% lambda max +start_ind = 1; +lambdas=single(zeros(1,K+1)); +for i = 1:K, + sel = start_ind:cum_part(i); + lambdas(i) = norm(A(:,sel)'*b); + start_ind = cum_part(i) + 1; +end +lambda_max = max(lambdas); + +% regularization parameter +lambda = 0.1*lambda_max; + + +end + diff --git a/GroupMextest.exp b/GroupMextest.exp new file mode 100644 index 0000000000000000000000000000000000000000..393717ec712d180210269c6430a22e48b23a6c1f GIT binary patch literal 984 zcmcIjzi-n(6n?3J7KBj3Qcw|`stl<>u2WSdic%?}Q44CCqL!59B;@+8(NX`B@7!4Y z0ZfRM0d+yZAHcwZP*+9<{s9JNRKZ@}*>Q+>c=CJiyYJ4v_uW0S=LUTLa=Ozn0A?UF zlQUb{qXDM-=r7Q}ji?Kl+xVD_@5h7c?udpfQvl^sKFV?%%J)nbaYr5TeC9fWo48-W z@Lg@XmJ9*tPvxF-#k|q=cw#cw1e1bC{+-`T9fuAk0gC8d=?BPxl8)45}vI%?F3HjabHQgCuD59WLL#Z z1Z2soTl8TRJVoV_ZbU&GZt+BMsc5pYOgsAI3be_S5N<=OqAU8Uw@vL5#<}AXYzZd{ zWN@HJZD)aWAM`fiBdk`y8M1#}-(<1C6An&OD;Y$#N7jYQC8;Hil?D2@q@wh?Wmh+&6@9IfR|db4xQ4DL%B7blo6DbXeYn_q^M3Z-k5_L2 zej)Fp|4*^S`(XS4ettS3i=A$lEN=H7HRs3eHVaj^LO?vd8{S*2JH1@sOnFRtUH0_X?H}7M1-tT=3FWyuRsyj=ed98oM^~HEH zmD1ySzdR<{cp@!#A3^{g0KN_oI0u3^z|;ay+skdx)Z<@-Er6#mXKhZE| znZ>LJ>LnhBr%Cc%$N@ebIeoNQuO2iHn;%=+E9 zW8z1i*1ss95d{+RfR0%q38P!*PTMak=k3VdR4{am><*fv&ou3*7V$kJ%kvl~iHkuH>%j9VSfGRfdwY-4De`%69)aw&TP# hLf4Nd#Yv-TsGw^6Z^5nUwE4YyDi8+yUUTo;_yb|xHmv{v literal 0 HcmV?d00001 diff --git a/GroupMextest.mexw64 b/GroupMextest.mexw64 index 250567f23eef1b1daca02f5bc2cff5e805c29ba8..78c3652ecf527ed3eee95177d77eae3ce92fb044 100644 GIT binary patch delta 15430 zcmZ{LV{{-*v~6roJaHzrZBA_4w%M_rOq_``u_m@{+qR82-+lM}d_Q`x)4k6==X7;f z*IHdw{_m*%@2EA{px`^hH$k|dVYr~6O}L<7r9}T-Xc{60qf>#H7$4_rdUgdX;YLx2 zJ|+=K`zsQ~#;|0~H`~@!Qv-%h`JZpt&@x!l&@%WrKEQaj^(G+m^}c=qe5^f9VIA3T zZf%uwECKl3Ddxb(XOw+s3()*_?eKYH^LlxcX>TW>tFM!j?5Ed^nJc zj#+eoExq-RmzxTKx4sFFlb5-JBmK<|;M2qN?f&_tOGkh|XDjRD^5kXr^-{(y|Lwgz ztPN=M5%_#O3u`-i16todPi}9h-r)JS?s#(_!Tmzw9?MT=_`i;Tmxi@I!>hT|x7|;E=vbaJ^!)Ki-kq>|>q!1?=kRiaGs%9^zDi*IcgtUntM!%7ug_2Y zPt8^ahUzMNh9~(g-Ah8?`T6qFtm|vw3TXTKv-O^%@5lB2*><-ka0xVfe;zC;0l?ei z9|6y7VC((m_C3zrzBr8YEtBKvD9K>6UHR7L)$GgR<^JTo_-*a4B*K@ApR@DRr~M%N z4s-bkviH|T=USx>Z~N)aZQn}fkYhy--+T6Z&hs$g6@Q24<5t8*`stuO zVNPz>N#p0KwU>U5>(*s4{7}?pGytA8!eTu&FAp$(^7=gx;^thb?{Rc>`n(RzHM?x` z#o(~$#LtP2*Wp{bD_UYn5ed7_(iLc{MI+U4CSK5Ot`0Vny z`_O)EAn5Y@a?$g#AG|s$pJEu4QzY@rEoIrd?}!bQ6>aRQU5nv8{JvlLSu!=N&%wG&VP@MnGS(8mA>ub?{-avkON9rOx zB#&LM%6xrza(SU>rvS=7PdB%&CivuDmz&#^x|}{6_&&JWd)<|3+T#TD^|$-@bSUwZ z;<{oUMKq}N%s4gS9uX(^SSOd}Fy`D^zUhJKVd{^&SG2OU)HxOs0Q%qd$`3vdeSD&P zzw1xBBfkyJprotKsMf}$FjU)>6`KXJwprPezhqNIWuHXGlycaQHy%~n&9QTlP8=P~ zuj<$>-<1IueAT<;M(m9;9F0;Ojo$-1ISuxr!N_or%+=?DpErWMZ%$7n-c3&(UUAq} zZTqO!9U|>G>C`x~fNSS)XO7J)^)HWyHamgIt+v~2)sEyf3tQR#NAfx!i7Gb5`Uq>w zyrr$`-dN|C-z&?$wY9P>wL2Z-7dD9Y)2fDl+P<%5G&TlWTd%E-zDfhG-)D>M5_2r9 z%a-cHD?cx{BCv{I+qP=3xKAPY+8Z&MH&}POD5TFUUD^lMfL$8cDJI{W!3(?43E&`pvrnQY^by5jd!_kvSXiw}Sa9<;?2k-xkW`7RnN` zv@SdwPTd^g-b5=mJLTER-`H)r&Ubf9>Q$zl(zNt^d4W3z>G`_N0N%hrId3fdnJ2#T zrVw}9DpqPcKo+Bk=`3*A{G%TaH{>LEfS z9>GzsRN1In8h8Op-7IDXuhlH(0Uy~c7U`s^AM&Mx?qX%8H}(0P87sHNUd77+AHH3;Cu3&mC92q31_5 zYBE?SXKqj$gh;E)Rx@64=MpfoqT9S}&^470)SZ{s;eAJOVxb#GMw5scyS-@(J6jX@ z4K(8|9W+yN!CQ66ZUkG|je#6a*h)jLZZ^*6U)bV0bY@T&jjvWnx0&j;8j_sCx%Ndf zYB`?8IApk<`OYt#g{EuG)w<$SJL7XVFD>Tv)d+>PcEob4#Hk%SnE4Cwc6I$5)qYa~ z`F@X!2%986SCpJs_989>mNFRG93T{A-U}4I;lY%J*&Z%ady#5?+9kTt?dfy&V4j?? zYD8vng+Mk4j-!UI?06dlwEK~>99UOR^6pO@sp|6jy1FdnjNY1j;RYwSvk(6s z!Qtg2S&t@jmX!go-ah9Rub(@=Yp5aL_g=3@ez0@1NU=458(7vp^IE$2wYjyqak;g% z!OtI(`L5+MDWoA^#pzvhfLSznOu4hT<|tQ(y|_l_F=*FF&^w9>VkWx=p8N;kU@2ak zyDy_xwFY~bM;4R!lNFH{g?EMbm6S}@YhbB{D5UiUH%~j2I#DG>y5dMtiI#=wIyR!& zCBM(s~xbhd{^4qc(0dZ2w);;5>9M0FlIbE6^)| z57kzJFUbC{MTfxk<@?UW9&!_KHB~ZinktJd_b@e}{pxB^0q}23nUonbM#_r9Y&~>S zq2_TT>dT(mEk`j}tV;=WA>->#D9zh@k^|xMJGzXBr0t6__OJohVRV~lR#;~1`f3PF zquIlY+V@HR9Yujxx|I+2o4y|JbA8G$hZsHKId7^1%3_kw3nbE#qW*wo?9L5JLZ7A- z9TaX;>eb={>-$~i(VF#_JC{6`BcDUu;Tz0jPT^D5 zxoLfk!erm=V7wuu*&Eos`0+qo%9K3v-4E3lHRw4q&R++`IBOp8=6+!wSm zZ(?~}bql3DdTf@pKfLAL*XQ?mwBgNGJPLn~D=2c^8Pfog?JJ*AL2U5~=@zB;_w+hD zzv8ie{|@0W>5T$TXDjV&ZE3W%pIof1+dAPDr!uFAzR@fCdktgcZY`-~g1(1hdBLLp z;Ka*&i-v8yyW#;RTo`1WBdmm3Tp}T;A+yEXe=br9T3enL)tW&qNXRWi3nHNr;M`_!uo*wK;Z8kb1*M@5G`Uk6)nv)Kr=4?w0$uwq;Me)m?`ygV)I6le~13kz*_P zg}x$lc>N*UgAV*v3H;QhPjYXGzH&;?7Vd9F0o+`Hr`Eczw|?#8htp3rA$>n`la`)0 zKii-un2?7D#H#7g3tj9V*=)Ht2Jn-;f=i%9R1TL+o1^#bE9Ia=4 zZc>G*#BBZ@GC5pWW#$rcVIOYZuw9$dEMJt@GPBJhhhjG=*LA`pr$#C_s(vgC;+bB< zfbx>trIwrI)_a*#U0qpLe)*_kkO+>OYMzoCoMK&;VF*j1*1URQHqXC|1BdNC=jE^McD2da;|6Nb;$bn4Hy*Sn2A!fJZ~A71_5 zTQSak1uOyZktgdIPQ0y3HZ3^&przA>8p9EXvFfD4l7Yb`q1KxF_>TD9f0HUke z@G9~Ok#J}?-V1*iYF)Ep1{{2Uh4H$1)XnqJwL;-1{%;98_f~5q!ct7TKH}DW4o~V4 z!b|v%2JI!^ zr%_c^)!jP-OGm!dpav@ZI!OR}8-HB~nB#F5PB1~*0ZQTz(73D$j~a8#5fm@`KA)u# zxViKwNaupvkYNwD8{tekz%$J~ipEdJkh_WzM;+Vs>aA4*@(8Bv9R6zHCkmMF$>Z4& z*v7=m-rUu1`YVz6TlKHuXZmy11(fNc@-hFHqVj{{^0Ds8qH>zNEK{Atx)5v9^kxq# ztEz-9EW0qIjbv=9%W3yiLZp*GyW6p~s2I5gMlDfhMKpPRbsef}pb!&FgpVF@RCSnm zT`)_uK2*ze+$j>SVAqbJyeRK#$^rHP33LiOTPn7zM&B>?Ch(x@lmP`ep#t$g1hOZ_ z0e@fm*6>PIEnriMb)VR;5<2Z5JMEkYrASIyGP9|xaSE5yD)GV4AAu4j|)ZtQ}GN754}?dFWpX$JI?mt2BLh8gBf%Uh0z-)OhY8sCWD zl4Ij!D!#)uGd)cva1rr@(Ko>#+n)Gku6&Sp`46#%MTPJvYJTlR7^4h!(`MuVvyU>P?mi>9F3(MkpI0ijd!l0U2Q*C!EE+ zoeJUfUBx;4UD^1;k+$i$D3is8J0RuYQ7XpntB0mp{~n&`(#%ic{c?IZ@i6dI<29op zfrrOyo>~zPaEjW!_7=dmZrAVkIxsnu9(iE{yMPOhV6TQSeUt| zN0MA(2WfUkCPv^PHB**k#^{m)t;D--a!gol{`rR<_`%2F$JDQSc3cLjb=?+r4Tm5k z1?zyZsq7~j^2q~<`x+@Sq7j)MC`iOAy3%>j&bE`-*EKiilK>xNq`tEQvSqrZ8xJ-J zO(&XXsz^A;AsRN@jBI(Ev|DtvThWHXNt+_$Le%!GpYh0zBXVKU@z*2WIDgdUVuZGc zRlnAEoU095LpI?Gf42N`Jp;4lz^{!-3*;|vn8a9nWmTThB_wD`mykn(fft=?7l$3@8Et1c^uwx~J{#hX?rlq<_2(WH9Fef^gfr$*B`KDiI>S{ zraanN5hQ;5z;ubzy+8;Z%J-(vw+!42(3W^Y@5gD%_dd5`nC1(tE;{}l=e3Q=unsv8 zLF%=BhhdYISG8$w${fYy+#S&e51XG%x3nAJ5Q7pfctbqB-CV}(haTjQ@_gn2#IfV` zCXj$5kcG6DSE4c{*SWBxp$~P?_1?6Fw<$nEcl&@+l?8APeJUf?tLBu7Ap|SkJmR=x z?7En=_}x-v^5eKTecFms*y^~N6eKwdNJYSXPs>X}YwjyZa=3@VcCx5UOw(Z&y?iY| zKWS9u;>Nia#>@`>!GOI~G`ze5Sh#gYgCNdX{4XJT+#}u|PdFjAuR81Qg~T@HK^!Hw z3yO+$BkabyaIu@lhfgO#VZNS@KOqm9>*GMild(2Hd=jWm#a#+^I+&YuO-YiUKmkr{{QO~?Mo)HiE0S5qRMOOFUn}FY#!Ad98 z!lf<|3Zw5D3->XkL95YY9zJa;_=uH!C!E1bBd69?=s@W# z2A&7_M_=~3`oogNia?mcE-DhXxgT8xQS$yYlpZ}EUSfuo6eQ|P!1k+PVt|<0NIMm` zJ)%X?^Mg9DYzzoBZoNOQp6Y+zqM7JDcG4-sTeJw_m)cklZztO#;w0Bq8j{I3(e-c? zb0=_1QpPGugzd`c;$cM^-w!HeEf&?p)BSanod{J%*z3+lKuiayV5=&BJx}UOB9m^+&(MizIMmejCo%Vd(%(0` zTyX5Uuy-2$da3auH6E?2*1vyQ?<|~!3qYJPGUwWiBdtS)WT?P-N)0Oy56$9XOQ8`B z1qoZ)@FfF-Z8)2gd9{ey`y!USjSG7c5hx|3TO+y3x#FRC`_wUYIpcSvtmR`Ozh$ml zt~nhKJN%!(Pf_U?qVK?n2zkK}E01m1SMgAL!}>u~h)6gG;>3-ok{0HipQBkD(y+e; z1f|yXEs!{H4|zV%Iru0bAoid>>{t0Qi+9cSPh=8k5q1$prVcuRUZG@9zVxf{QHwubC^ALQq+C28Dl$>?2U{46sf7HkGNMh$$4)}`1h_dqM zhi*PbgMW$@DP@bkaD1SEHQ5kXq0JNU)t%82nH zCmj74Sd$UV9{+%1={ofd8iVarl^C29cfK=KXGN9U@ddY1aP4H$GvLr4i49c)63%j6 zI>DFw-!_@bh)7G#C4MBl808imbh-naoK1r3d&(=P7UY5C$)yZBR}R#bUPJ>-&`K^T z@2>B{DELgYFPp>_ArBpBgo)oeb=$78$v|N=ZCZ~3=IH95Rw}PYo}gFS;9Z$;a`8d~ zfnOImbC82r-*Qx(ix>)}stI9t`p0;->tYX?eHjTj2~bwZdI-u1nm5RVI9&j+14n{p zR<{CZy?TqsZfm+FzH6;9SLF7^y4?WeBIv3yE4pats#ax>?Nq)DR%r0^nl8^|@sg?7DxysESC-MxzQduTNnC#Y^TNvYfI@UI|QS?uk1BHam^&%5lJ2R3>AE5|I>zy zCgN-Nx97+#UnoPz&Nq3?7E{OW8q@WJg?@BxaEc4-jx-!na*CkIg$BrPWZ5@iSsHPQfRb*D@Yb}7MF3omd7sZ9XOwfS1VEkt;OmlMu~r2DX_i>!R__n>w&Yl>RRchp z|2u8;7k^s{Ag|z22!2!dCl~NscOVw^hP3?d<~UAPXi5AK0be68n1Q#_qZ!>EF@XPG z4X-h0^qAy;Uf7>u!?T!d8j!4!Lxjh?T}xha%n~0q&EU@l;FRpdOHIZLO?+Fd&-#K; z<4yev#%%v((-Tdnk#ta7d zgl}Eepfi+VMMtBNL|I;1UdLLqQ-(II>@WKP+fDAyyUc0>o>?ZHk8e{}72{S@+WK>~ zr})(BWehA6I6vtr_CvI(BU?6E>>(c7<@?IypknklkRVS6d8^K+~j>4aL|j|IyNm$;0p=?@fX4 z#Uxhx`Mr(A*1w3G#7?5WQoEloEaTv|QDswXu;iSmed1t4*>g#&;Cmw9kE?fdpUigE zcNt*6GIgI$VN)u_zE@?FrG<0Mo9NcgQ=TMoI5-bMWwVNeiSKRM(%RoCu-&>+5u-FV zp^1zi0GBqfAd}D@_CCR<61K^3vbLAhSe*ueq~|8NN#P(fyP&+-P_TyL7ZWqHD56Q1 z)*Dl~!k`av)Zr=jf9Uv)hi2caF=>uNs;(IdH9khKnD%6gsWc1pbsR|6CBf`*J zgF*dl3@rGg?`b-_DN^l=-`Nt49O(2BMxF$8m#7_W$ebf6*chFA4JOwTQK6{imvYdc zu#3s9g9F4j8l#pXo5+qUF6jBYNemf};tgTJFDl__C92Q*T3+gEVe#oH5Nxnx$p8e_ zb;j+DM((T=H^*tQUIQp2&0fJi_6)A1RR8*T!rff> zXiy8H-%KFCxO7n|!G-)W(oH`Jx)MwbqsS(SREqaG!GD=76R#yE&90J73qYfFO z1drwAh%Ek!6Wv1w5G|d#kMy0oTPmZ#d?+4?eK37MTXkh;3B_m9c+|peYu8BZ854>T z4~xZjB!9bLb6 z`SmtPBN(N#yB6lSP((u%d=}uo?{6??fqP(>Ah~ClB7tz&W5g6fbj1YKaT&&{`rfS; z&%yop>3m#JsGlKrtREl-Q!{8t8<_IX0|fHQSmy*P7sIr2m*Uq$)V~}wH85I)eI&t4 z%tItZ!uir!CW_1Ke&oG=o|t(6BBs#OPz}uLf+hrr2UyuW?G>>fKz{qbT#w5?PJCVy zA~HE0D%dqwA(eLj<2$YJ*LT`L#s8=!O^9G!5RAo%ZyYx)3D4FwFdzR8Pz~;AF-G5P zF~&_=ri44Iq~@p`m0hQk5URi(+x}HtG&K%Zm~RxnYiv9%cbS5jsk}h+cm5`#Z{!O7 z(V@Qq0;Jk!SD_Ze0x;>e5A_JwLWv0CIqL(bM0ca?Wzk4Ct2@}3+>7$QQE>X(c-n&< zjzOT19KwG?PO~Rw;R^brX)Q^rXB)#U$zm#2(WFqZG~7rW4NX?HXHIf6@MJc8X!x+| z{l7IJ729|^TVcEolga7I=t^@&HD*r&x-zo5<5p)NZY=c0kg&pot7cepiT{&*a$E0l z<1`a(s$VGr4NJMPohyJBy(p=)G^v!vE??|S?nthA&PFBf)CE zJ0_z89Oe!z-fgdk5SEG($|&;64eeYHD6hk$b|vMdG?PYgkJ%%-vLd>`gq8KYWT+#X zw|&vQ-jAn=D)L5Z9odHGLxj#^<#KyDk26JkWfb@S^Z|1iMO~I9U6#}Y#{cO*WJNyy zul$DN|H(i9$=_ug?hm71Dnl1ID6Ze;chLLyROsyGjD-nX`b&o_srmm$%_k?qH)#d@ zm;Hv*dzb>+$>x!>R&~d*tcc?e0>P1i`c_t9tZF>x4VUUz=3Mi%1ij;_b4KLS@pLCk z%amp5l;*#7A7SSI6EuFL_oK}$2TdD;|Bu$_eN|t;2ydCWM#L%Tke8L-$bIapEr)*j z_Pg<8i5nK70aY1v)~qEjd)bgD3(z-F%h|BA?z6HSjFc+&;9p+cCZ!S=gc}NitBY@U z{O_YwR6^jeQ@pcWLIAyHf%K;Yk;2_^dZ2`WL!N+R9fSZXd`2}aC|3o~g}6+D0UZbY zSE=MLCP@c`UkBcVU5+M(45mIy0U`(aUhVJ)3?uno_G-xWT_+k*x zg!tFE4TOCgUArOPZO#Po*MI>2MsN}CG_~GCq;pi9%U_1f>rdL?sZd36bgqYO7BsGI zsu#UAY>qS=Dn>a_ztk5i)n)p^3t}?Oh%YVnE_b}XBb`LVgajHXW^$mf{o*X7nQ$XR zJ{cv|&8v0$Dd9%9JJ!{hD%{EY(1Cu(rUJw<>AzoH`&A5O8M3)qNdqf8%ehRc1Eu#H zwL-?4383c*P%$mGVn-kzW`XR2xs)kjLF17K$6OZU4Nx(Tk+mgEL~rxn2pss6Ge;b@ zC$fK#+_l^$*~OzBTixk-IJQh^hqFZ6u`l@-Ke;_H1qrCMEJN=$uU@DR(qhx=0+ z@@tjs?03Jq1#@fLBD^2G#+zV@=Oxtvj&w~XATybLgk5Y&X^6}3EPCd z3MJ?WQKmhfvNrox-|Ew=q>TshN>uaDeh#|t?D7{NNNoKXUdDUMpcwv(!+dy~fqh+e zW<88;CKlWPzoZ2~>Gt^e5h1}HBH&9P$n4#~-u`?5X-~$FE#}IN-^F%FiZy^%OS(h%b_|AVyuAQ$+D z7%JnxN;EvPjfeIO`c51f z|Aq!3;!6AGN{r3FGNO-D8Tsse0R7?x$G(kCY|vy+mS)Q;tmXFD0$3U} zal|w?JW`y<{xku<8rX#?XDLEhheuj6iFaglb^uvJF9D>?cMnhkGN8znPsX=iOE(UT z3=x`0Bc7G&Y-UMfu8q?S4D^WT#OFL6ACXz@bi;>?M@zJ)S_KT`4|b^*48b}0DJJ9W z@AGF`;^msS`;GVjUmPiJ^HyWUS<($$G08W#WR-nY(d&H)O7h;lLi$P)W{_z&t1K7) zyP48sbQ~4BokGif17HAv=!{HU0?$l_+zU;g^M)xgN@GtIlv&W^v*V{8wxXMW*^*@Y zH<6B>{cDc8@w<}^m@$SmH{wXZMNo~Z){--Bqn7nbY-QE`wEzDH6nfOe)C0>!G)={r zw##^6n_C;k;m*|OPb+Mo0QIoF9@Q0F2=yiQ8B7OPTOM1`f9B$UX4LvG}+{llNdC!TU}UBZ`!Ka9SrzbC-Z7?6=W zGFerxOV*39>w|m9!7d~ik9<^7QO`gQN79VMgzc#3Ew&!@Tz0XQU|a{N7P|7^W>J01 zNEb{&v7`e?n9HY0wH+57dn$J-(mEUZH7$GPG$jRCgIqmt^I6liDqTU&()PvvK%Nl= zs6d>t?^Mu-oRO#dDT?kNQQ?$#Q_H3q?y)w2mVfsi4p0?2Dobp(sA5n4!zYDSyPy@; ztvblXP=;vg9743!*y40EH=Lpw*-fo@M4%C)Ja7cK>>t7%BQmS=rPHi1tLKIJR8e|U z(@@17I*EAp7P3ZY7d22PHXjICfwI#bQv0W59!e!l4Yn`~gOUCi(HSwRdQOgC*YS*) zCB=^&|7Dj((>)~B3%0|QoogIYzktAOTA6fj->^s=fZNArsHPblFxDc>YO|&@Q^#xT zyr2zC`;R8J%)+B?)xL_RzzbE0`uxz(wL;yZK7>G68f_vYLBfOLx9_FfmkEX4t5tzg zxX(z0KX)i}lSxc$%w>LM#M9q_K&!mmEjoAb!h)7v4#^tB?sf19LG$ob@(RF@JtUKT z4v8N3pV*~{!;ejl>XB~QA*u9ip%)DhSFRA6*Uhg zf@ZKnQ8l$R&8W1PtZ7<$uDyi#ioh>`{2J`@B;63D@7D-LKn? z%K!WukOL!OY(5-+-H$x-{Ien0{8th+;Tdc?hwEy`nZ z7avF=`f;C?6Mqwb`b{9<$OjmTI%-W$$nmc=fz`$DlLs09%=w*@HrvO3i?$o`60w8r zXEdnT@@;}*K#@4lu3r&(n}Q^fT5d`{Tz#7YEY=HKfGJhrC=gmcvfvRyNHq9Inx>AzvK?flx`w3X*nrG(BhFz8g0gGN~gv6bu;AD z4XNx7%Xiwwa)Sz5z~*UrRuhT@KY7bR`8q|R`_%}x~r)f=GTqPZK_gL)%?Hnq|l{6p(7bt*;#7gtE*Bg24`qQGyyGlYV(yHzEZIeQ)JgVL?{J8Wj25c>N1Ixst=eqjggwUpOiF^F1zNxhs%8#(XEj%|^AU{k%z5 z0p?4@KEZn{c^N5ckW>7c{1-NI#iG}2$g#!9JOHJqTg*`qP?Zo5>_WhDqh3i%3etFM6%nib|K6M04Ass1#9a8r^ymE$x$hvV~PCER0Uw zQ6SL1$rKihIQ=_B2S4nN-k5!3ghSIWId-(mhP?=F822W&wbfO#)#QJR#I$Wkn;IK? z*vWLX*Q_#`t14|<=_=k%AB`>CRmZj(8<-5EUGJ)Jf;s(w*m4~=`e$J5z-+j=6hY=+n=pULrWuOgOo z<*UA`5U-(NfxQ7Eq;$0eZ)p2A(b%}%%?kkbQg=SC31h#_NAs4C5hpC+Dqv(A7=D^# z#sQmipHLYDJ@?*c-alD!e}OyqCSpP|-U5&4slEC`#^g{(8AY7q2LvGR4;Ui&5HWBIB3rTr^)#G6;5+{KlUlj?H#&WcD?Yhe@=aCJJ(CM%4yI11~E5dd;QHHz>%;BW907^lcg$T4i@l&1Vq z#Ui(;{QY=V57OOeH3K3FG%*S;B8tTUI}TCZoIwDmQNZvx7_8jilOS z#$_VGM&__+)=C!a;YC2_RBk-Wbai!_J7{6iA_)7iqVA4o-1Fc_3b(%p&!%1o@5Saf z%R&I+Za5+d3vT~q;8(jG&r-JX(%SHT|>%UMcWwm za6=U2Blons(WzhT;dgGqYZgHU<+AL<7VSa*8;jI{z!zw;3NknW<2HwQ8lFqJb7oif zA3ur)BP<5f<*XNyLGr@FT-kBPo{RGoyjnX*7uB zPSb`6L-Yu%MBy8$9{*T@=JigG{n?Eu+Jc zD2xlZn48v2;wk@ap&+RJsbZBde!vOUW|r_%DFEDD{+o(ug9a%|DYdjpzmiJ7ngilY zo}`hpM!%9q;U=E#x3O)K{2S==9Wd*D6IOCnT`diZE& z-T)<2>z7qP$n-QmCcN<~KE79}3Y*4Qv09my!3?Vl;(TwKokW;knL1))e(6FvW||}R z1gSE7}$n#(Y2<0>tBB_NJ3Ql=&yI9^(B_wXE3%#c~syI@x8&=5kVj9K+NzVWfU zLuKlInAn)F`eboz`IMh#dWY}?(x`mM&Xkx(2uin1*Vb4IgubyAny5i#o)0QH01pLQ zI*_AZI1yZ~*T6A7EpUbPLA8hTgA^d}cd@4)U@o&GtvVf0!)7Q;VTV@ov_q=4Bvi(&3 zAKup1F#qEVE1Nv-$H#_7beb;RzjTme_DhaB_I&}_H=vid-J1w&ncOuTZRkE-x)^mG z>EPbZmiF7(c*{%Ozu@b_s@CluO#Dmr{3*asC7`F{l^5WzO#s0U8&Glcr727UO0HUC zRl6`b-}TVHp#8iXGsBvnq&-7-QMF4TCPcBQa12Alu1iIJPKnbzI;7lC)vF<~bL-{= zq(675PwbE1GS00B0J@iIv3Kr{zArI6kOt_~x;kOOSH25jhurZ|Pmmr07|K(jvxCGtzU+B7lj%mZ})+E)GR`@+f3F7I=n07Lw81tY^;WOk1a4GPp^>QV|p82diIrZBhTXZbh zCg>FL4YvT5>tlcd4g;F_cV zNE3OZs)<>dQ^q8pMpOja%?b577FgnF#+(#j>W6S*-SJ}jxg{$zPZH}3+`r0_(u~N9 zjWlKIdjCgD;z0M0N&g=P`&O+`jmm6x{7S{nCR`R$#xuYU<%W4UOwld)CRt2EngwS4_i51HU^X4E$9>+ofT0N9iQN%n9ePn+Dhd?BC|{Uqq8cyzm<9ZK-tJm zZ11Fo4n*ILP|$D>_3x^0a6#QYzlk4Vl^Y@avw<7Sw)oCV`RW8h?ee4#3w0aLz?|vX zwUL*IM$06K#BnaJBuCtd`usVRx6R~ z5Zr(YVc1qV@7OVQSaJD=N|5Gz2C7OT z*8DHMgBhBlp3@JNALtzc%&h9rcX?q16v5^M`DSFLB=wi-IId4Vfa9l2%h%k$72mF| zuDbC@@20B1eQs`n#BciT?IvAV4C;`1tsX7(oa+N)vSefGJ@w3N4N@7Z2BFo7exQ%0 znx}ZS#!G9p2zp(cu?MH?UOWQ{oM#iPeLqGX%*?XnX4^?t7t^qE^*4*N!Zs&n;6ge(;;Y# v<;z00M;*06pTR?0&a<%uld;xtds|Z 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