sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't obtain banlist information", "", __LINE__, __FILE__, $sql); } $current_banlist = $db->sql_fetchrowset($result); $kill_session_sql = ""; for($i = 0; $i < count($user_list); $i++) { $in_banlist = false; for($j = 0; $j < count($current_banlist); $j++) { if($user_list[$i] == $current_banlist[$j]['ban_userid']) { $in_banlist = true; } } if(!$in_banlist) { $kill_session_sql .= ( ($kill_session_sql != "") ? " OR " : "" ) . "session_user_id = $user_list[$i]"; $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_userid) VALUES ('" . $user_list[$i] . "')"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql); } } } for($i = 0; $i < count($ip_list); $i++) { $in_banlist = false; for($j = 0; $j < count($current_banlist); $j++) { if($ip_list[$i] == $current_banlist[$j]['ban_ip']) { $in_banlist = true; } } if(!$in_banlist) { if( preg_match("/(ff\.)|(\.ff)/is", chunk_split($ip_list[$i], 2, ".")) ) { $kill_ip_sql = "session_ip LIKE '" . str_replace(".", "", preg_replace("/(ff\.)|(\.ff)/is", "%", chunk_split($ip_list[$i], 2, "."))) . "'"; } else { $kill_ip_sql = "session_ip = '" . $ip_list[$i] . "'"; } $kill_session_sql .= ( ($kill_session_sql != "") ? " OR " : "" ) . $kill_ip_sql; $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_ip) VALUES ('" . $ip_list[$i] . "')"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql); } } } // // Now we'll delete all entries from the // session table with any of the banned // user or IP info just entered into the // ban table ... this will force a session // initialisation resulting in an instant // ban // if($kill_session_sql != "") { $sql = "DELETE FROM " . SESSIONS_TABLE . " WHERE $kill_session_sql"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't delete banned sessions from database", "", __LINE__, __FILE__, $sql); } } for($i = 0; $i < count($email_list); $i++) { $in_banlist = false; for($j = 0; $j < count($current_banlist); $j++) { if($email_list[$i] == $current_banlist[$j]['ban_email']) { $in_banlist = true; } } if(!$in_banlist) { $sql = "INSERT INTO " . BANLIST_TABLE . " (ban_email) VALUES ('" . $email_list[$i] . "')"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't insert ban_email info into database", "", __LINE__, __FILE__, $sql); } } } $where_sql = ""; if(isset($HTTP_POST_VARS['unban_user'])) { $user_list = $HTTP_POST_VARS['unban_user']; for($i = 0; $i < count($user_list); $i++) { if($user_list[$i] != -1) { if($where_sql != "") { $where_sql .= " OR "; } $where_sql .= "ban_id = " . $user_list[$i]; } } } if(isset($HTTP_POST_VARS['unban_ip'])) { $ip_list = $HTTP_POST_VARS['unban_ip']; for($i = 0; $i < count($ip_list); $i++) { if($ip_list[$i] != -1) { if($where_sql != "") { $where_sql .= " OR "; } $where_sql .= "ban_id = " . $ip_list[$i]; } } } if(isset($HTTP_POST_VARS['unban_email'])) { $email_list = $HTTP_POST_VARS['unban_email']; for($i = 0; $i < count($email_list); $i++) { if($email_list[$i] != -1) { if($where_sql != "") { $where_sql .= " OR "; } $where_sql .= "ban_id = " . $email_list[$i]; } } } if($where_sql != "") { $sql = "DELETE FROM " . BANLIST_TABLE . " WHERE $where_sql"; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't delete ban info from database", "", __LINE__, __FILE__, $sql); } } message_die(GENERAL_MESSAGE, $lang['Ban_update_sucessful']); } else { $template->set_filenames(array( "body" => "admin/user_ban_body.tpl") ); $template->assign_vars(array( "L_BAN_TITLE" => $lang['Ban_control'], "L_BAN_EXPLAIN" => $lang['Ban_explain'], "L_BAN_EXPLAIN_WARN" => $lang['Ban_explain_warn'], "L_IP_OR_HOSTNAME" => $lang['IP_hostname'], "L_EMAIL_ADDRESS" => $lang['Email_address'], "L_SUBMIT" => $lang['Submit'], "L_RESET" => $lang['Reset'], "S_BANLIST_ACTION" => append_sid("admin_user_ban.$phpEx")) ); $userban_count = 0; $sql = "SELECT user_id, username FROM " . USERS_TABLE . " WHERE user_id <> " . ANONYMOUS . " ORDER BY username ASC"; $u_result = $db->sql_query($sql); $user_list = $db->sql_fetchrowset($u_result); $select_userlist = ""; for($i = 0; $i < count($user_list); $i++) { $select_userlist .= ""; $userban_count++; } $select_userlist = ""; $template->assign_vars(array( "L_BAN_USER" => $lang['Ban_username'], "L_BAN_USER_EXPLAIN" => $lang['Ban_username_explain'], "L_BAN_IP" => $lang['Ban_IP'], "L_BAN_IP_EXPLAIN" => $lang['Ban_IP_explain'], "L_BAN_EMAIL" => $lang['Ban_email'], "L_BAN_EMAIL_EXPLAIN" => $lang['Ban_email_explain'], "S_BAN_USERLIST_SELECT" => $select_userlist) ); $userban_count = 0; $ipban_count = 0; $emailban_count = 0; $sql = "SELECT b.ban_id, u.user_id, u.username FROM " . BANLIST_TABLE . " b, " . USERS_TABLE . " u WHERE u.user_id = b.ban_userid AND b.ban_userid <> 0 AND u.user_id <> " . ANONYMOUS . " ORDER BY u.user_id ASC"; $u_result = $db->sql_query($sql); $user_list = $db->sql_fetchrowset($u_result); $select_userlist = ""; for($i = 0; $i < count($user_list); $i++) { $select_userlist .= ""; $userban_count++; } if($select_userlist == "") { $select_userlist = ""; } else if($userban_count == 1) { $select_userlist = "" . $select_userlist; } $select_userlist = ""; $sql = "SELECT ban_id, ban_ip, ban_email FROM " . BANLIST_TABLE; $b_result = $db->sql_query($sql); $banlist = $db->sql_fetchrowset($b_result); $select_iplist = ""; $select_emaillist = ""; for($i = 0; $i < $db->sql_numrows($b_result); $i++) { $ban_id = $banlist[$i]['ban_id']; if( !empty($banlist[$i]['ban_ip']) ) { $ban_ip = str_replace("255", "*", decode_ip($banlist[$i]['ban_ip'])); $select_iplist .= ""; $ipban_count++; } else if( !empty($banlist[$i]['ban_email']) ) { $ban_email = $banlist[$i]['ban_email']; $select_emaillist .= ""; $emailban_count++; } } if($select_iplist == "") { $select_iplist = ""; } else if($ipban_count == 1) { $select_iplist = "" . $select_iplist; } if($select_emaillist == "") { $select_emaillist = ""; } else if($emailban_count == 1) { $select_emaillist = "" . $select_emaillist; } $select_iplist = ""; $select_emaillist = ""; $template->assign_vars(array( "L_UNBAN_USER" => $lang['Unban_username'], "L_UNBAN_USER_EXPLAIN" => $lang['Unban_username_explain'], "L_UNBAN_IP" => $lang['Unban_IP'], "L_UNBAN_IP_EXPLAIN" => $lang['Unban_IP_explain'], "L_UNBAN_EMAIL" => $lang['Unban_email'], "L_UNBAN_EMAIL_EXPLAIN" => $lang['Unban_email_explain'], "S_UNBAN_USERLIST_SELECT" => $select_userlist, "S_UNBAN_IPLIST_SELECT" => $select_iplist, "S_UNBAN_EMAILLIST_SELECT" => $select_emaillist, "S_BAN_ACTION" => append_sid("admin_user_ban.$phpEx")) ); } $template->pparse("body"); include('page_footer_admin.'.$phpEx); ?>8y%g>I)P(T8څhL0WHh > 2K%'uTjŤBVX#oF'd#Vtعxҙ<ɟɞ'6)?[b"\y6 ZiҒcG! }1VZ fV㘻af:0./D׫ǥ5 ę,l  X-AbMrhHGn)K5648ǂ3HN8CH W<қJTF7+QE6k~Lp.33jv dsx2ӝitZ1)$Bq֌uCySPݮB"86yR2qLo/.4Ԃtp,F_h&i%&W뉻Ϡ?-4iaS$Z!`/S(d5W7Y,&R5"ӰGmP[,Fӱ#h%Zv+yԱH0cvMv0=4}`u⥌g!(ivp9/^$\g:!cZlG:cKA|6K˄YV8?wU1S/|&Sb*[FHI+$: 㗶titS! TMɁ"haԩWkBwk{9KO:~NX>rP@=rA `m -޷HvBGp2T lR\W5Qj]h H2 zkʾa{zťdP/~$xI,~G Љ3 EUz B4uC ITMZu=XZ-ctjᲒM{E-vj-@tާT C Y.<-z~] vtNqΦ^ _,@@Y-ڨ M:#ڦ3c9rZvK'+ۭt7I1#dxG}rbTЏy:W<-ɕKq<c*t(Ѓ>YDڰ]A| seJei9=F:rʐ0FWVZ'h3zY"@@w٤ MgPQHƫYUnQÝyIшk /Nv11U]q&Or'NNl7ښ47kqgDW \^$>(N;P ٚ 2vi辦ѥZn"SH`Eq`{L?Iόios.8o~:nΉ|3U"K`Ĝy%;BhSs M#aO::fz/3rA1_q!ޒoMM[iH^uFŗ,=[u#mG BzS\Z R@ w5o3+ t· yW8H8E tG$n|v)N-fLpUF2ڼi vda:j&DRiǎ 3{ юGHӼ!3\d.ĔY ~d>Ll9iPA O03$p!6/Cq`@_ `D ap;UER6qű57;)Cgk n 7WeBK('t͈|nwwl>)5\g@OF̸M.^fFzNCM]`_U =\oK[*O-|Hkv ;kzk\a&J^QņId 2Ml>J3T`KKw׉ב('VrñpS7\ݲ'[edWuF3Go0wSd}뀬7.+/~0PWI*VX?fq4YAt#A0JBp*S[= ,/M//PFwzOAMwB ^=ZRhđܚ$ 2j~mja_QAg,;۱oGhj2Hr0wKRsA5ðЉ OH"N<7գuhVSS9^D-a&]FJQ$>႑ YٙG~ωG8giZg*Ո|[\b0^dm`܌Z1I~#/t&*akBi|usW) z{yѵ=h-y3qA  î"l3D5*lO2qDJwN=(ճH: Ml%@Zzh9x RkSJ9xdFtsڀAq4`ߔNg#X#s~ co98씨ь4Q!g0^! ƨ za.h- ٳn[갇ʤ[tQMn k\BTB(^ m2XX}e0qm3FUt̥fHisԬ18@Kt7-5cf1Mw<{܄]f7l&c $`U Bp9ZZ-h.(b[q4hG.F#HӅCQ U"d8)LgXB*; R0ɝEJvaB%:_'h F $kn8%b(&nR;lۢX3%o.|rz=d)o 玧yxT*#r{]Y (eSָp?j?MNYm#J;%(¾KuԒ? ~Ɣ<} +rk|}0 Gcq.k!8!oN1|w{cSᰕTnV˚ d\pW6}%R@#f.CcFS9΃3Ex:*߶z%$,Abp[b 5FM# $*t-*Y~T z2kQ$T78#<ܜҒCq³Ծ=/BE @/Ѯz#igej\mϳ)bi0R"3& F9v"*! j~g f8O}&z@o9=dݱ-o3FwOT[6jg,:W5e9[4j/'#uZ-`^{T% m`:Q$+>֦LĄJTe <W "'<,h,?q#<<<ƞ6rn @0tIȤP8 $E%g_4ހ)M%$5_ZUjY <8i5k-Z{zGtco,'Wņp_օxSnjj!֭#W;iBzmːH't۾FMe ]ÚYɅt4,* =`]i-LNYbѩRQ;1OΕ|n/mL渭Dó,eߵ XpW*!=q˪, K+aѫ7doXcX+)ן([(!Xȯ(;FׇٛWPw~,- (乡stsWLoEO^[t9&){fIJʭ(:F/ʛ'D ! +fv+ @GJ"b]6:7m@r}|*k6Am+و ـ |BvH,U`qLw+RN*Qv #S9 l4&5Hky*cϤ'@ 9 m^.Is祱7<dM;'#^06;C*Gz_m6&?G4cCu400|Dح߶B#"R쑖bI8ZZ#M~lyc9| [rr37$lpc0ڮRa #DFvw:lT:4*TWi %'~~FR=/4 ĵ8P 䠊lʗȆE3xYXRg+ӯ zR,&*tD\8J#(Kc1gQLG24sh3 & GX Y_̡rJ{JǡYEls}q-Bڜ炐:gϠw;iWO*E~:-^yj+U0@`ˮ3ӆ[ܱYVC̕h67aksC8j@W n~ Q{I7V-ax%U>ZE}x/FY+D2ljq˯`stRs^jqx`>k6(+På㫎Oq}OmX=XZ_,^{*%\e`9aAщאaպukai\xĖ[N9>2$T_f*H` >z]EŅT`J:׬CI<׮NI$Gȫ@|M <}eM+QVJGԨ5E91 o-(1^&^(?q>ԍ>ԛ$'\Qh6`_@2qNSƭλX>P:=4B™|AЧh# [ kfh.S{@/NC5z\ͥOZHf)o%eNhǐϦlr!q?6CXg^]b$]u*8c=>9ǖA-_?f_w`g}<(զ+X]t̀P!~\X]KUmh6 D(Y~|ޙִ/AW!x:ZZo&.rUDWr~uK6 ~?z|-L[8ͥWe[c3k!;tY띛FDyP2]_Xb5f.2p*2="jni+:Dr-uއ}z;(<Yu)6ˢy1ku @CDIAI2%5F!@$~JIG^]F<һ#.c˅ygfZGgzRn( m8Ƚ9v}e= zo5Q\L 4`qǞ ްĐ;#*I"} @4 ]@jb-8Dh+0] tO "pO I(3H$m@e<դ·\̪7z)],R/+ъT@7u7os[g?}x.s<6.1-#iK( 8ɤHD~ו*571I>(ڼd G:iPN՞&W \Y@4}X['+ojawv %mIZ?k: (vԪ?S0jЦ 5< $Kė ;T ]83bKP5MInd3; avtdSnhr~sH$T2T=┩IB]9`C}{ WݴcQVliG@ ĵ&gq7+CXJ OU|zy-x*/ ÍYlC1X4*P9tYQ 4NcNF4ZDx+3欪{LaF_+EԒ/Wk+L&w<$2`<vѪ^(UnB|U+fh S?f؎sgj%$r+jSvteiqƢT!;lOF<|yIc3 ^+M`>jǐK`ʃsE2s{ʬf!G\s=a<ɴ y& 9 "1՛(dnHGџkVAbbǔz舙 &u:Z?Vyܗ AЧh=qԅ S!\yo&C]N _+OwA`K£HA/SsCbQk]@Tԁʦ('xo8^Me`# ss^\B9{[o\uN!hGu0&:c4%to\ԡi3)ZpTX=< {J* lJBE=4IYb;gedl%@v Q_@+#pe8ۡHǔ+(s;( iimJƚ+1,u7Yu_yoכ;pjxNEiqltPS(QUp,ۖWfpr!WqA}\Oˏ\3L7t}( /_jXB +jga{)s-pa=QЛր7ᇑYotƉ^zڶ K*eò(S;ݪl^S;}rh#=l@&Y#2^HPo+RV ojh@[O 0(o`*3Ne@;rJ|ix|0oYGsw1(L3mp\fK0-9rT,XF!6pARL׼+ %ϾkZjf!n(l(ݮ;i?l7bs=2!R -w,x[=2rv q }3΃)nm3j Lh8]ZʟVu"&Cc21W!Z_ZČc{Y89\bJK-X2jec3cO7Ǚd`ɔ(jhg҃(do~}=㰢 !GV30N*ԁҽSz^hTKoh8-Mx J1D:$b"_".fȹq !՜ .50" +YzC{8H,ufR?}LpB:[/kGG`8eβ@>$^T<P[;#Q{ߺqKiDŊ@E݀d5 a ?#~< CB$>lCJפL^e(_zP"ܳ)>5]e9)#cfcb?T t)/=Xg`q+b+qrIJHP̸FiPDSy^ [dJ{h5p~M|^؎LᎾ̩M"8F{^@'@ ]ʇ}jp&}< XK+&AL00,DY =pѻ4A)Fc϶AJW^ ӼQ bzݼj 'u [gچN9b2@S6 SYc";(J+fA]ĸgl$m(FIa4oX4'vEأlǕ肧m(_s[EIh C毱0;#:]^ T;CT `3hAL.Hm$[uR*h ~ j翾e4l9Ҩo׸O#&=9h}̗6j3XW\im NR"#yM>mq֒{ثd׈ф6+"gK#F{K h΄y5|8\JO Ա z  KT-h>Y3ژ*HnMYKy&&YC&'BqTKT ?8aI*N j=5ةVMÀLxrTVOڗଦ+;pFۆ|1pCv*M,cB}qtʋ-Ñ[ *Z{pOXt҄Z_=[*ߔV utG.)Jj:G7N de#z!]{v>3o+• \S`򞷭<6&nCS{m5cy;j˽~&ԧc%MW{!Eu[.S}R449Tw)18p'r%/̘3Jj[pmr;Mb @})V\+iU ?DUԕ5LP7#CT(ZY(J²l8?!uUP_C𥴿.2*DN#;Bol }f O u)ValqVQ01+>yI q|]AF|=9mvɯ]p8)}\5E0_H+=LaAP_K O@U$AOnU&b|~(ZO`|#^(`gw鍨d.Ηꝰ#p &RW .7pUaQh5vmrrg>a:x4+`Isq&7`=|XϵzɊl™@] /<HN $4`Lpcw7zs) )d !M 2~ƣ"}Myr4(wZ.W\ImՓg<*ecэ駰(ve..JFۣ,@x},icf (9J %-WaY[;kfZH?("-΍x'4뱃LL@/}~|T*]jCd?+<6ڲ'V:rPt{'Gp Fc! Q^84]HN1^pT9aStFsKoĊ }V~F`ߵ,hRͫV^ lO  >:[nGTն=-.jg9V"&P( KUb,Ux'p;I@lb&$+ ^\#>ăŮo-2y!w Ϥ^pPn~幅ß G-qwQs{|VW9QF.-L#Ą$mױ _j8mGZ,-!RQ3D޻YF.neRy#[SGb>=*O ܋άJbZqIR鑴s8Iַv%)U[#My6xԣuȷcsdsSBx#S` W \,Ѱa&AE,nS$xȝ#wX42ߚ]$HXF]4L&[Gΐ]=v*"J] }䒑\95-P9smօ_&]/ <~oeGJZ@@{Q2Zh91\.u5SX04k!cdjdBX0'hDJ7 |e˩"HKX5ȣ-hU #90O_s Xr_Nw|"QN{|iː2hgc;O>$qg8ϬKFc@<8|aH\$Oս;([ *tl$\( ]L*;-m;f7r09EDʐ8+ N=P#Ric 8Ke)Wwftq%=X(Yњ&rݓ2SE*C!Xn-sG[k6.=OC剼Yiʟd l LϴNGŰK[@wIW"ϓP3Z5>hU޻*>@ڐ"G'G*{UvsGM䒃=t O_fg:4QK1\ƀ+Qv=HZW'GK@^;ԲqۏXHK].|BAs04dž YI6:i}eW&o x-=Y6CjHZ,[ZObQ1(O+؅l;T6F0U֛mO |$ScoLc߮ې]uqlۧI 1o?; }nC`g# \r(Nc]UjN  $49nL5;L2ۭq+xQXH7&p !aAq"ŁO@\9'x(lZ '2v:v[x'̀}t_,rك_P.荹jAHc2~)*|4 @;w`2GI P5s}A(Hȱ`՝pm=ٶX=#GAmט]@S5u'-DZQ [ߩfP7cbA"@w(*fQST>V}Dde8gsrTל@ ;+%qIR:|6)Sp*c_/a._D]{[@{1?DJ]upV;Pݷ7oA&xG=2):mNغ!=~7laeÐ󄒝KޓxLSw%w.HM8,a5OeITh |f:Z"9,7uҠV T/ *4͍f=ڻ6S"r>"gxTPO'A R W+@&)ECz>m?|\-ؿ“Ѯk)L۟;X7rtlU;|bd^\ TA]iԢHP7gFp(Ldgx O#B~ϴqN,_a3:Pm3/@$l"T3aL<.瓠C77L~ܸSsfuSgW[v35j~5.ܾ/VIY`< OzNW4,anPd,Sƞkoˢ.pӤƩѷN9ß=&y=ДqHr$.|ָE4p{P?'pk^} W2Nh |i8.(tW"w?$r'2(д26;C"dFLD}`~newi CS ˀSsecfA C0t#7yěю ݹRzMee/d؋}jnC|b_d҇ps2MHXl8,uyCۖr!Uczhq:j.>&j*A~ACדLM0k5[V(l}vC Տ"\C *(&K}PxrD 7.{EK_kϠHCޣa$;_wY?2QӔkʡOVK)rUmrz Fj5/(Kg>[ZР/KNvt9fIģgw(\s~Kϟ&{o,4+;:C/ڮV~ YJi]Z0>׿xYbOT~atp\"V>L>)iLkM]ln;CQn,q+\ Hd0#_h=% W#I幡Dc~8!uuzYRs> =.\XdslP(#tJ0+0`x G' ʁ[uAf7{)լzy18V7)ˠh"&TEIz+3MXׅ\XZT)`6Qnd~Ml<{+LoF+DEuP7Y:tG br'ՔBKUSDH Ď<%)V+ lHj¡ p@mO)q$.&Q~ߥdn5P X60@AP2UY-~JĊܔCB쳊R Z(v4xl8~@NNҪ H캅y{$Faظ#*i~zmjѢVdR^LprNb wˢ()/~xKd8>=3wW<4 xPlZ1)-RM,!vǝmX dr qpf6MՐI:FؾI`eB2JXtQ"s=VqOj3orozfg^g <:úQc y^ô Ӻ  r^MYHk4x׍fڬ\}tFN9Hdiz#-D)6Zo3jvVJ1CySwH`ڧek4by>\eĩf)DUa紹ۉQ*'>y ON< LLG[z胂uIAnP P;k0u\3D=R=eL>}ef{o} 4{(k$[U~=kÐUn4P U³kbWlH:CLOlVq2,U(N,6;(o=h[49UיQSZnl:%rC55Q?JQA{yd=:l\Jw4MV~)ְ!u@d:sYĜ]c!X.7X$"xV1-p~ˋO6*BBF|B;HW[¨R]R(1ɧ b÷m$X+SH'2+U WTq Ilw4*#6w9f [b㵰/fFBڣw[[\Ҫ-[O)%5M3@<~=@dFޞ %x2҉+ F(u+1.Ή"#NNԱJ\ha)]K" {j׸Ji8LqٌK0 È:]hOyWqߧE,oްV!6 MΠ\!I$]pH9YNUC?Cvy~ PkI;t,PuFiHEC͝;H+/!99pL47ڳ ET?!>%E¯ZwuI8s-<2d 2 ̓ØI'69;0) ʦaX8@2ʳ$xOcuEh%]3kL:3%Ҳ ~Zwu.|&@~Ԓ,˫%4p\^stM !|'%?l%7 gK3h$=&_#mZ|rGI[ﮙo\&oNy˕1nMJ¨S)A_,5@lJZVO{3f+㖏q-BG!/z;S ћJ0iE vBh8yƦHבBx,}^P "*RiLO8u}6 "cu&%xği {*ҩ5;-wwJqrqhSKDpE?BEڱ\W[koe]wPq>N&RN\}ly^Ũ 1w4fA$蔾;Ԭv>98 u1w\bv$nrvĴ CAܑ$03_˨7Ի/|rCkH]GaGbqӂ!yM! =劰ў1ʄA"LfthA7-!*VY @CM}&WqTQ -O6"3niʜv7QPOg@I)(%?l@1:5N4Z/Hey =a"m}h^ۭ\{;7 mlF5հ_s}կz9D.%L~}d}t *g@EСc[;NůdcG7NWTSG*r"Qۆ|4c86f#Es=(ZQuV#6}voŊ[_4o%;tFqh~L½akzBqU.0^6jA湣%cykڈjws~ҕ(WG2.B7@ZFtn1pr$䟽Upp}45V̦G1:IVm<(u@_R5 @\9b}mxbSG&F&LX0>rG8 2A>_( &WF_ =66ϟd뼫AS*df\&SHBlb ^8HAA%>.|+ -eu sk^6v|ҨH UkVIUPс|(} 70LnE& n6dV*2k{oZ qL#Lϝߓ (XK%K~xv/]|{{S  g+>h?8 `o&O7QN6K]zi28xQ X"VT"7 ϰPf=>Up%` 5XATΕ}[OzX4}ԡoꚅFiVތ Geykngjcbd%Yy'B6)!)(T;6{4 Ś#,?riMjLQY "( =* |DǀQF21 fv8q"%T!0 `g_S?"^F5=+LAR "lIr8}L[XNx:dUūy;_}>!d=rLDn8DWtfϛSO^^5yJLi*34KXpb@/#ցX93F[CT ŚS~?shB̚(JknCoF/qE-!| MlikΘ^{P6a{CYh9u.e%afFFU}IeĢ2E YQq;,)7D;0/; D۾r+7YvzhT8rʾC̞y&$|@\Q52hR#\LҨM[0 J@g 󞺨p%5p8O#!&P0å/xiA1[Bdn;4~^m/6J<-NZU4>8- G4QyR(Cu2t̷0[%c.rxc*?֦ 繸>|s+(0Dzs&e *\9Qӫ,G q:W0O8byb(ݥ0"&G?a3?[e`,?o/ U7kb}ϰ2l^hEhƓEK_7<^+6Y2YxУ~*{/Lb;{ز'nOPZl%]0img?-d\d,iONNo<3%ڵa'|qWȇPLdE:&Z:[٣\cr?{j 2|ycv:̃Lʑ3,L?a;U2`Q 9BqKES#HБ (ne{P0%w 6IIzd9d. {aPHfww's0gyIf.-|?&~Bd JUdeIuJ{2aa`$ %Ks=`8[*G ETݼm wB V;^9 3"էu `hJÇ(Ya ;ߚYkY+/-* *t0qb𠘋vn,_j$jF>#xWW _c>fӓK f Y/dR^⋇rycDQ1'SZѠLey>~am@ԝ֔>Þg/CB1L6s3~bVAD?U9hT$Gޅ3Z̎`wnqG Bפ1ʕPp)4uy۹-M7Lb9nPAX,§t(xDG wu/x>Cg$$OP4#x$gU3<8!/𳐸*Fxϡj'- uGndLs!}dq;*n)jV^45kGJhظq$iSeo0})H^HP F)` TtQ:Yn9+Ɖ)v7iUt]1 t8E!(W58v3AKAi wة8 ]T]*DITCdr~Ih_ SǿhI~ \@ OԎZRCQ:m!,*d}hoBLS Z6q@fHUU^}*?"eTжLˤUG!P{ɦcO9D" z\x Y}nKŃS!R|AALqVpG嚈\܌#P3~*Uz7kr! ֕zx8TA\dd,vɭE*2RIߤ$3$<37ah~e|cM!co F{UUZHăLp.3OvJ/UammG7uEc'J%#ZZ@lb_1JIWE\>gX1Tx$pmNкw ؄sGo03C<*v$z[=uBLe|m2H8n"h8vqvɅFaiw}8޻4|2J =D`MXNe>p|+Eĉ6ɟzY Aucm*Wf5 3zc,8+khpݙޢ*խVr|T HҸ:V:HUas)MX]"u-C4f5O'V/^2aE.*zCsi[]7v8tT7o(p[Ɖc|QyCiF4%8(i)c}NTJچÓʿnIZ&1UxWofQM%65T]Y)XD18򷚨ʧy7ywRXFVxb̙/!#:30Or|9WXr9u7C n ~AlV;_?"Oэ-b3m_(]}"-VvӘg: oWv A uGE 9@ b4!$ȋGF)(G#D^]D(>-NF12D!r8p/oml]Q3=ٽ{0*].w^ߖўTŘaϘY~QA7 g _޳}ǢPKq{p'\Ap?P가q+ gQ5Tэ6XV'Nٗf2TݧA?]M$hh.ZFD57uET̒mk񅢹Xp~mo|ǹv!O h3CPYI:ҳK`Ce?WWL+c?[ : sڐc{oh~&jnl̇<}%ڈ1<<"qm'h3.Ji ;[Ǟ"=)KAs:X ~)BXq(^HCVy9:2=:-i;(dfׯ5LbŶ*bDji(%29jxi%g"^ע zJF3ڔvDSTߙ5#ٔIEJ0e9A⽠` P.,8{||}lEum3 K-wAt/:H1L̛v1 JV.+G&D;c[ W)zB2 ېU0$.u[K4~[n*;rkĞKY١wTg-G:Qk4:U4J{mYh@&\!BT``B .&S`]cF#,XDE;T!.FFNAo7~,74<@ԁo#pmgn k/P1sɺ>w su[>ܕ)pE)_;ETdÂ^.yDPP{{rir1NHǢJ/~s2>AnF䓀KxT"]_0,qJ1Vuo%m{QĪ@:BggU8s*m<K%j(z+Ol8RM|zdl^'TWQea4.xT<%RU5/K Gq)u!h"$y1ܞqo7];̩N=_k^B׏ ٜel[6zg)ͷH$! Y&0H\Y`cAP X$hdP\>4F_B>ޓ'I'tSW꒟L/? h9Z8h$}K1VX穳^Y Rj;FO0ť<,հ 4 %:-'v#ѿ3Bh޴%'f zzP (~7"V=uy\1ܚ\4OL?;!jڑ ul]|rnF|)edZWDRn Zd(+REH=<7]gM^t+61&M+h)}:t5q JȻ)*n9W`cc,Q0dQ4|}j-dqxLӎVBKKq=;-aaA$*B%lR#4L|h7//͝-#Wm8mr?>~}GQZ/igvH̷ NXsH=a˓u0/d3Pѷ$ #-w{C^o~f߬P Mt(%yt~QR'_>]r Xa9YwkY0izΙ s\N-a?6,BV[bm m?:qePl%YX4Fk:>q|Fy.O<%&~G ӽ._o,BES˛?&wHb鼋 ek6Ô#:_覼.BJ0:Iqn~sF2Q$_$M x7.Ϋ7d˃BҦ!豌y'ڱeޚi7$/ki8O=̶{)aH?a5?d_DS+ɁWf:1kAFq_n\NOxQ=ZYhf`Ζ?N[+YTxm'|| %Dr7[h ,cYwT.ɃrYh3f׌I?̂7UM6:!YY;|b\SWb7̳-@4h*}BC+FXFˑ`;oFPv~5qc쎊ǫ6(K3A- iHʝ!"1$!zk|N~V/ll%x |P&JwnqTS -yrԨE5]y:FR"QCP,6 g Ku?,+ʖq2Vx  +q`}ihtL _$sUK`Zv׮o{J"B؆?:;5%W\“0p#!Wh%ع< أyU7o~ʣfuqx=kAdWA+/Ƙ%rNŤا L:kM!hO.=]5JNR` 2T, YYtt#n|u`J`&cQr,]yE2ޗlRT/&y%FVU;h(="-")c/ïo&򖕿^[u?67ר$]"Իau}rO|v~x!ZdŠۍTdEi2tDbˆPj ^V_lֽ}qFS<6iw;g/gv07C6AԪ)}Zd~#":Ije™;?Qo~U9ZB /7ӧ׹<(wvJTWXl B|='!`ZIibݧBGSi3R"lЁQzx$C,mEVTO09c \WIz_v{)zEoD&)5BFH>L:cHTZbv"/Sj<[ F$.n#_[A+v= MEn"+%~򆖚K-׾c Bz&Yx\o=* bu"|n=ޛz9ypȫX&ڒ=tH1 ]rǧATZF 3 e⼵X"XP|!&~p#ۢҼ(t!!gS*{GYuM^auzUT% Tg[hRK٪,זƯ2 3xxmo[\jF Ϣ0 .呶MV%d~ vE "ӟλ3@dY4L)("2JN$;hh_Z *r'&5@֨Y%<A|>f *-6ZS7f7{sLDRӵt1I]R 9XCH#XK%_ԪmDʕ?pfǰL^Xr*n>fvN,ѺΩsT+dH@UƘ9tKuN}ZUY%&ʆ0x[{|K޴?eH!6Frtv24 GӞEv6Xe4vk0bi$sq4+!opP#T>:ţqa:A69@lu`/96rB!5!6:U9ЫpZjj[6@HW@Cљ )Q4`p;=WȂMWugO m0~1 qa=*5])dQ\Kc~hT"`$^f/T 8u~wk)d}Уp sL#s7 8nw:Ա0c!۫!Dv0)R ?inلpfdl`o( O TT%uOpݼgTbl}I]Fs׸0`)GqEuX Ă]c%.A ɸڍja?h~K-q~G~j3bh`Xy$I0؋Kp`m|œK>'nzm2 -BA̹[Y/l 7;7:>$NcϾi>'hgA~:Cժ$zj> hg |/^K`ӷ ǽ}679USF 9g'?!z2ο}8طCbWlUM)zԊ=fˑ-Wj=W)^eXzG U_^ :B, yCuݾDXx/Z_0G {Zӌ仓E45e[. ;L_Bdt-J8ݚV=ـMнxohIj-,\n~| 7[-C;68{2DjFT6g?4o:EF8ި՛aR](oEH UkQtOD8_ zy1~E~֣Sxg1=;s-V2" [LJ6m?Sb { 10!lӽnLzY;1u<䓔OxxV)>Jn\MCdIhNvA{4YXd{{r!VB aicAca@<#F+ > <ֳӠ1i.IIAD^ ݘZԴ)^ X!؄C15 (<2ʍUp?܊4 &uё(h1}2JDe y~ ^d&m!$E.~wm]\ ZJBR.[`nj,Q]`#jgc7#WӞL>󵫡f.Wz3 ¢@N`Bv x2\+vOJ + bJyԄu 9~t8ܤ2?vlRDAI'zGhsO7/G-p;WYsNdR ny E}K|\k?֗eVW,PrvE>l86|jt*^1uuAf\ 'b5LdG3[rz}toNRerwx4N~L@^AٷV<"+l8ZuL߅P~]nžvة7Uq,I~ BpIy}{CFuޤ;y"gN- KSД(ޘ+VݲsmԝJnE'=FǏhg`2ʓmݒɪi~ZO*1Vђj:S`[ֳRv(^og7v[5]4tJZ,ܱ,6)vua&a l=H.$ vB6қq״A Y!1ЈT;ߞ/a7Ͷ;mv~Iv1(!:akgy&lw9CֻXs@! ɝLQ|6yE3Q7$x ɜ0iD_wL bZQ/LS*ȃ= fM8$q@L#}Ĩd3 )LGd0#y]Stka82aMF8kˢ/TYFOc s\&S0TR1ܐi;o\x~LU|(9{yGK+@x'T}g!W|0*ށUf?Lmdܟ9N諓?Q>@@<=5%zb0CYf$S)[Z8vtJ82p0P˦ՔL˭LqUty?y[w`Wir*^ik̹?ڄލpŁ,eEQ g 'A“ c@ؐ$YӳVoSIR=$`ǽÀh.X6gVI%m5O K- `^'U_u,yܕT:sMȦδ76)uLy1B,ٙ|qO璔pOB^6?<ڌa?#3@3ˈfNfhOhiWXTvDqԄl`ӟ,7hVx Q]Y.[2#6@D$yWφ7q j:Akw _儿ѧÂ}BB1 6'Z*E?F}>l 3`v:W`y}ze<ܒu TXy=Tm2Y)"s(y߿ɕ9riD*6Zׯ .,+߰igPdo2ʆTOL,0z_?:UܿWH]l/[\ QdZx7okbNI#ݮf&xˢWBpU'sN5=!R e0׭.4 6 O|X[ʤS]ӗSpMzTUSZ&ٽ-ykJFx]XX8i@NlU_0}w'u}wP `ń+@D ̪X5^z^'# ].2Zf0O~u@<w"oNaI f5%Q.9oS^N P}l.TH}Odo/R JEHJdBXTMQdI {kEaD7yVFw!QVL=m]iછeCfں<́U,S1,Fw?Bo21Ctb5_Nz jǻ*8iEG*V.77yh}$A' wyC5[ǃHuVƪxM{‘j MAE9"\ܷ  :0BJxOrhc#XN=lӱ)Ű>g"\^XOʌ@Y(-\ i_ՂLe IDkoVh 1?vW@R1F@imk̇wv\^ʬ]QЁ;[‰́~6>%?1% $e'A͋gL 'mFm\%6?/#hX;Y l6 Կ_k75-_=<xS ," ae#?JYs"xFv(CQb'2g;d5TWArȇ⮴k 8BlzXJ!sND^JgE/d=5"7`ϷOexFel)80F߀@3v2)L~B-pp+ӹ874>zpDq|: (,]+&WwKGEh\Uȓ2D*F5Š Ivx" ɀ4ݹVe߷֪!btf~ G= {B|}pE{ܑ@:Sw6-|gq\MҦbWjE(Q%{V3CvN!~I)gG1 ef.;[ϭfj|xnMs+yD-鹎kS IZ6uj:ܢO):\{GZK-RkR BA#"$+hf `Wow^> #qr!T4#:0#>XC1(m[5 cƺY[Pc! QavoK5M! 6l˛k_=^հm6d&jMJiz*˨/\fAnF΁׺е~X{m)k*ͼ]lvAEbir9_蝊;Ί s-(>A35AV 9!2l.*@͐X^9}dd&SH>%Db5Q{Z yQL,ܹE%p.Z4-8Ჷ5/cE47lXrѕBmu =~%wyy.-O]0"ӭB 5Rq8}ku+\ozY낮ju #b;_Ck$A4dY׾~5%=gC犿$]'˯ƫgtc}DKΝsB`;GgA*5/Q;:F^|n_4D5Pm$1ݵohͱ>`%W3zӸlB7>[1|Sc R.hczэpN9gOo}=T57&"dB:N!NOM~;=HA`Q3!yü2WnV#tJ.h_nyL)ytqbSY0y 2f*4;d#c=YC?l-M"rdz3ѿ\.-}_Ӳҧc^-S;)F7m8Y7*f`V3rs'me N={_Skv\9pv*=gso-p /3>A?'G+V9hm\N4XX;>Vc 'M,_gɰ8Ta*pa78 1&?d+xy!"W5|ǩM! Do{Vm%{VHk\Ifn &Ofi7&Ξ\1{]\$Xxʩsz 'UӉxgmd]dCDVzEw⤽A`u<×;G)Bx6hj`/"r韾7  lL|$R{%},*Wi:mR>DLѯ7|^GnZ"ڣL?pt,ҾamVaBIwMS>5>l5gi9T&J{9P%c$d1ifCdN`>b.FHKߣ¨uEiY Q=IYW:$ҿc}00~%|