summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/malloc/mallocng/README.mallocng13
-rw-r--r--src/malloc/mallocng/donate.c39
-rw-r--r--src/malloc/mallocng/glue.h77
3 files changed, 129 insertions, 0 deletions
diff --git a/src/malloc/mallocng/README.mallocng b/src/malloc/mallocng/README.mallocng
new file mode 100644
index 00000000..da32bf06
--- /dev/null
+++ b/src/malloc/mallocng/README.mallocng
@@ -0,0 +1,13 @@
+This directory is a skeleton for upcoming merge of musl's new malloc
+implementation, mallocng. To use it, drop in copies of or symlinks to
+the following files from mallocng:
+
+- meta.h
+- malloc.c
+- realloc.c
+- free.c
+- aligned_alloc.c
+- malloc_usable_size.c
+
+and build with make variable MALLOC_DIR=mallocng in config.mak or on
+make command line.
diff --git a/src/malloc/mallocng/donate.c b/src/malloc/mallocng/donate.c
new file mode 100644
index 00000000..41d850f3
--- /dev/null
+++ b/src/malloc/mallocng/donate.c
@@ -0,0 +1,39 @@
+#include <stdlib.h>
+#include <stdint.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <errno.h>
+
+#include "meta.h"
+
+static void donate(unsigned char *base, size_t len)
+{
+ uintptr_t a = (uintptr_t)base;
+ uintptr_t b = a + len;
+ a += -a & (UNIT-1);
+ b -= b & (UNIT-1);
+ memset(base, 0, len);
+ for (int sc=47; sc>0 && b>a; sc-=4) {
+ if (b-a < (size_classes[sc]+1)*UNIT) continue;
+ struct meta *m = alloc_meta();
+ m->avail_mask = 0;
+ m->freed_mask = 1;
+ m->mem = (void *)a;
+ m->mem->meta = m;
+ m->last_idx = 0;
+ m->freeable = 0;
+ m->sizeclass = sc;
+ m->maplen = 0;
+ *((unsigned char *)m->mem+UNIT-4) = 0;
+ *((unsigned char *)m->mem+UNIT-3) = 255;
+ m->mem->storage[size_classes[sc]*UNIT-4] = 0;
+ queue(&ctx.active[sc], m);
+ a += (size_classes[sc]+1)*UNIT;
+ }
+}
+
+void __malloc_donate(char *start, char *end)
+{
+ donate((void *)start, end-start);
+}
diff --git a/src/malloc/mallocng/glue.h b/src/malloc/mallocng/glue.h
new file mode 100644
index 00000000..16acd1ea
--- /dev/null
+++ b/src/malloc/mallocng/glue.h
@@ -0,0 +1,77 @@
+#ifndef MALLOC_GLUE_H
+#define MALLOC_GLUE_H
+
+#include <stdint.h>
+#include <sys/mman.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <elf.h>
+#include <string.h>
+#include "atomic.h"
+#include "syscall.h"
+#include "libc.h"
+#include "lock.h"
+#include "dynlink.h"
+
+// use macros to appropriately namespace these.
+#define size_classes __malloc_size_classes
+#define ctx __malloc_context
+#define alloc_meta __malloc_alloc_meta
+#define is_allzero __malloc_allzerop
+#define dump_heap __dump_heap
+
+#if USE_REAL_ASSERT
+#include <assert.h>
+#else
+#undef assert
+#define assert(x) do { if (!(x)) a_crash(); } while(0)
+#endif
+
+#define brk(p) ((uintptr_t)__syscall(SYS_brk, p))
+
+#define mmap __mmap
+#define madvise __madvise
+#define mremap __mremap
+
+#define DISABLE_ALIGNED_ALLOC (__malloc_replaced && !__aligned_alloc_replaced)
+
+static inline uint64_t get_random_secret()
+{
+ uint64_t secret = (uintptr_t)&secret * 1103515245;
+ for (size_t i=0; libc.auxv[i]; i+=2)
+ if (libc.auxv[i]==AT_RANDOM)
+ memcpy(&secret, (char *)libc.auxv[i+1]+8, sizeof secret);
+ return secret;
+}
+
+#ifndef PAGESIZE
+#define PAGESIZE PAGE_SIZE
+#endif
+
+#define MT (libc.need_locks)
+
+#define RDLOCK_IS_EXCLUSIVE 1
+
+__attribute__((__visibility__("hidden")))
+extern int __malloc_lock[1];
+
+#define LOCK_OBJ_DEF \
+int __malloc_lock[1];
+
+static inline void rdlock()
+{
+ if (MT) LOCK(__malloc_lock);
+}
+static inline void wrlock()
+{
+ if (MT) LOCK(__malloc_lock);
+}
+static inline void unlock()
+{
+ UNLOCK(__malloc_lock);
+}
+static inline void upgradelock()
+{
+}
+
+#endif
h9 9LܗsZ ΰ5RpsiZyTQf>^Pk\[Ca[DGϿ/Odrx)=O#D"\8SR\x7:2cIl4Ƶ:Ǔ8}Mq7eW\"ރh8j!"͝2|̿<^,ſiЦAX'^$xyGt^)͍X>J i;iaQ#{q ܥK1D{ʾlV_zǃ{tGB0_tl%iU<&`\׍RvٓGڊ>8/R#PEn҈HI祏DI3NK$Msg0@У8_+hBu`EbI61kKk:̘P-lH6l{j5lҰ3tϩS+YbgKrр⩦Z/0|na#Qaហ vM]l7L4^G<]*c: <ʠHww3,zP乚ϥ3BAxCP2ZG q! Z `Φ+uč@w1"G8Z sz0:C 8yB}yOٍ(a?' R_+>g'XWKK_jUBDPO{{^ϫ~/VCIAE#@E=j'Mtzd&S+ Op@OM<ϖ+B RlC}F"69:Vˍ^z&e'"uWi婏+XP=*E~4b2Ѐ<4 )Jms/V#=Dť.x^s".\ǣ"P OH*qؑH7z Aݓv]ek1rrCe9Z 5=nfS"qG Ch"s~B4 "$Y9K]t C3(q_imN.ȇma1<WcTNXm:cNF`kHNˮ+0frEY{ WY9,]j*/^"cZ^{.%SY %h%Lpr>D>G&^⨠{bH^8'O!$6i*0JzIWјQEq7|}d:Ќe^vzt}o7>t1 NÛxǖ䷜ϗ:rF`[U)X$s,9M\hR1A#o(Mw. FrMI8G"G$%B˘Th!.-nAybw|gy3%=+ `F X(*{42J=\FB*9c'jhi1#QҜw3`F^7oE#K]o['҆%z!a^PGK[õ߀D6$]źDlȿ:עŘ^<$bTC|KԃhU_Qr-'oj^P#||RwvJc Ԉb#vlhaI _9.J류pq%V;^nA)!(5J6HTbWL^&HPyqQYf_RtVSc9 4,hCbwb!k]3≂6٘ $\ ~\%hZy#ԔJ7/~  էSxR,/>2_O'xa=zZ- :zx8s{ ^S#lԐ(m ~Uƻ}[= CXp{~L k?{PbQ$2~S_?,={:7]j6ob>˃k:hE=?5/nUPPU <)"oRΉL/bCPuD9{HtA+?]1ְ>ovR c C÷OD!'p6u's5M@qIqӀ~"ǟX >2Z#ݢ_ PO5|-1kxMHO]OˇO/yTw1w@W ժrK|~+e*Ρq%lSo_}7hW^կ޻ h??OW)r!??\ ~Ƚʽ7{ r"(?H{&yvO&n McPPaTǩ7aűI'_m~OU> 6 O~{33ċo"?Bml$t&!/ 1#k<ӒjPg*3i yXZ֮5媮~_#l3h=4'(SYVKxh' | nP)z"KN;hbRJgcZt`6E0KS ==[hHx7mnBz-7~GlQMP9WӱMN6eM&}jy^h?P+'w@SxBr_K9 ?7*1\@.ba>tStT32CHd}_S-Wn}r # 4ڶ0h]!>##WYTZ(*Mr>;IRn2_PG-䚴t/V&}p 82W^Gu&әDx¡Ǟo}3#!n;`¶.'d>#Z<PRRyO71nQ=e ƍ drc\d0~7NͱQ4FˆFqmv9)Iĸqje <ĸӫĸѫXF#5(R0(hM-/Uy[uNɍa%cl (~1n:.#̸_>iudbz8l8R?y.ƑVZfi+W9gKq6bk&liJShQa¸Ĥ cL^V*fߥR5@}Fbp=zdYO;|-,s_-p=A%gIhYR-qP;`dT teYe,0S9e2\zU.@zUt.>d:iJ4d;4Cw\%?,;d z[3\9e+9q<0 (S _O#]ޥKW6H>d]nrd0C 86;·~z~ D~g +p :9j^Wbs-Zl(<[fL|뭠x ( vgE,zsmݰÕjC^hg z]ZAC3ٷ{^ @wfON ^2+ؑ5j˃.鲾F\zQ;^;T_zY>LFbKO|TlO: {N-mO&[RaeuX/@-F1z*R E۫ P(AoX$պݠH4l}*alKIErXdp}%ZevZ^SޒV)˽ziL? !pk ocηދW}) cUdt3P0 2`U{Ϙaac=mVT{1&LoR)5ҿ _&dݍ.Rz1`I>KꋤNB˦ՑsfZ[n.[ViCp\)UjΑ#NrEX,U*rT./MT= )ja1颮[- eEX*KcG]_ݮ$[*_5c&R<|_l *xJ -XsMX,Aӱ ;>Xd'*`PTqP7G־oC9b:/Y]c0'Ͷ>^ .6v;f jw ~DȍZgUl]opk51^q 3f|Et`^aܼJE7TQ*¿dpu$ϛ]^%CaR/~p0 G+`fǙXesOAddYNk69[-|[##gV^h`9A;-^ !2)Fu8>3%Uux& *E/>krG؅Ou86S("?L$FOY"\}umY^LC[(9  Te&D7Ufy: !ou waE|Mac&Fx\Vb U)Bc98ZĨoC!IiyT5T/~Nw2kϠ"{sQj (öPbo5(c3P-r+i&0qֈX*gx*#RE<ÓPT)G:]kG(CW ][Pl-ģ6$kN>pԥXbu&>k+L)~Tٓ( l)Xd zOѪ1Pl<Ϟbi||a>9tΐEyR1Ze [72놭 yMUe.&~͎тbBAY~eB),B~|gYed}8y{{Q/_%|?#0R'G24S!9$1} eH/Jl_c3`5K.t?gJD 4h%%+Tk2b䪕J?UGf:LV\&#tu#Fz 0gݳ^WN ;MA*Q oH er +fI/ҫvz]}UΑISs:zvlRe8N"nvGݳg ;:Ez"-5kU\0풐fGE-`ha3^FsWV`&]_4 (쯺N)k?F ʕr` A h;Av*ْ\.t9 ^o+FPHy:܉t;z0PNgX0Z3 0o΀/E#` zk( -GFc\lOr֔ b-A|:AH >Rp!^{+dad绁F?(n̲P2,HJP)[ֳgrp\Vp 2}.p5vx|Lc{G˙3v5ݠ; B0| З!Z=D؄]UZEX%3lCӛ=~ʒ.ib@m,循OwExť}l~l>\tNMvrg{Vfڻb%Sa̻ڭއZJղs{ɰ6ZE6{ /?܄]+d7Z1)|Έ:\\JklE,d>s pmpQ}37ŋ.WsfFC~ ~bA po%p,ya41yo9طsڞ6U;kp.(; ڹY2&}7۹Mpa*h|i6#;E4հiln.2YLn\oe8ӡA^ܙ55 ?VMsgz $J$3ql7wls5mj6Pޙ`w k2َ9uj :t! HeI3rwߵg .5-` ^ 6y׷^͐UkN`kNb5&33~Fz=2Moj.Naƒ>K_d5|ݺiީDi^D@`yҀ~N7Pa[Eg]>QW37Qst!(&qH;ŨH:}#|)tI?7vWvt~Q6?fxBo306a? N7h;3S:=`8;+XԘn,8ԐZ@;z; hPdfFu#Nhڦ`LnA0XQ_±J\:3Ptee:m@/c4K{qbp{8L/Y 5p;A@Jl;S("'F (J;Уv8n-PYǮԧūrՕ"J9'~%OpӗA8E{Pq/RMg=14 )4|[}ۧTdަc(NH ?IthaJg iԄ6n1.^v'ֆM s|VfjX1 {eO4rPDSx ^ LB&0C-Y/@ ̔-lӎ `x`G 33[TT ̲ͭʬ"ngCUd Vaz&\E.Ȅ@qacnKb>9g!N.ꭰ>쥷~ p0>/><}`P%z/FoC|@OyZ& _/QM]-Ω"H /݆O ܔhQu#wY&yS|%r)X=|%>.-D;a^OwLNޱ=nP j3jMI?S{<}Oǐ33Y0vD(.<-n-wIU_sQ?7~__ⓉrHjxx$>}ϱWC%>E&NioEE'8e!'H@NpVrC!0faQAöt`XN؈#}F_p3+7Ɣ$J I~L4&dҊ܅(eE.CiL$h]g@ڟȑ;=n}o4KbBywK[aw\+ ?*{"1K+ج&?2sdRc 5N:o[ Vǜ~P>[(uTxꞐWH)/^1W/{ K%=WֈpW *&u_c1}'Y.W \Ÿ16mV%kS=*G*TPl P._21"Fkl@-' 3L~#Wz!#@<gi(gҥ*.fbɳA=]dq[w()>QsJ͖41I.Fb&8>z|OT:;Ls% k2fWrN 'x6Nk0M@ۇ&=9vo`V@jͱ1DZ)|s`8s`H~wB@[*#=mFjy@j%)FE?RKf͋E#a0 ]H7&=~#6赃ZZ |ãtΛS>$d'"fNB;eN&6oN&'5j[*]D|d'z] 7XfNg>Oo4Q550a +L=N5|E1jd:݂a@: tǾ`k!{g SR\w k=]Utz{).+piy׹ FP}ub{= b㎞6ј++ދ<)hw hѻSFTH|3י0jgGķ6>[4Z$ߝ53`&KfǽP2;M gZg-<~?~Xt<̓kаl#;ė(qG <!!Q"b17Hdr3+ ĴDVP.U~i6aAG)i~L Ӝ  h1ڎ [ʲͦx6pXN&/5wWa)-%[C}8&W{+m% Pe; p_Q˛U Ū sPӷP x4uV @|#{nf;H@9ĈS2tJ&{/X8HpPT9l)"7#GbD :ۣ{,0W x@E`(A}k`Js:8 W@rtLzfꟳ: ~u-&5mhpňT4v;z| 0t:jBFU2u卒9Hv {θQ2hApT(U2:^ӡN3/W 4^fØ[@́`!pC H`@#;\Bp$C8ha1 !QZxp Ch!b39!?m7)C n;99iaΈ\%OC#`pkvR`u_B >E&Trݎ0'MA/ټhu# tlC/X7nH^ i,A{O/:=CY`՗o)K٠ t&}+6XjaPGƱ8q~YM4b7vZ!Ti__V_`iaUqbhS  ,_ل:LZQr/ 3\F{7y2`҉eX1b{wu8uFhSX)ή :,BҼpc}tl$s*v 鬽I2I*ֿoυa E KNTgK9'tuEnR'әJqIm&fMn p ].PZ׫H̠Ϣ+G M~!n&rgv/ec?t+/=}hl*0waTC|eP䙚IbZ"> \b)CaE0[">IA $u=1:tQ<=dlJ]t.]cc{"?Qeҳ_8`_TkVjC/b{#^/w0t f~9@x#XaO^P qy{ђxAC1?-+ y(B7"duAnkR$T{/P7Z;_GVhE_?m/LڧGZ~ҍ ZyC,Ymաړ_/Wk{+YUb b/W)1}{gf.|Շx}/.Ѿ7}oك-,CטI}G A(M|T_FX}՗ lVvOC adķͳgprvKftczL_&Wlz*&nVSGf:O`򱙼]Hi-t%V[]kL l5xaD:]\[-a"j%4Q!nrǔj3\]j|]`AE[ Sh+J*eىdSjjF͢ӳ͞vv- ײRisVdfI͋)5dxjZ-Flt6d-%cjz.VcZm]MWXx1ere{p+ 7W4 "29b11*L 8t!V6O TwV[LftZC8ʌtoKU1 Sjm-'MȌjv"5jn*C>T[,$I :T#О>3t$V2mz Ld#ЖmPJ[) ozDh9_ g+@UY6pf`8aqtP&4; gQ)fe4jluwa& mk%0×&ТL=wLŝʯԥ;npR_hE 7,+݇dP(_/ drŭ& Id@xdC\!h+X(L<0[bJ'A]Qqr4B5Q]dvbč?ftL&< IvbsvG4u3wh EhkFJ m5N QczO6McTZerϻ2\Pܕ&VyW3MxVTiEuW` Љn)Y,bF'f=v.E[)RC77Qx }0=J0#C&X`kDǶl/'{73(!(m-T{8*T&f:)G 1.&=>0HZ ZaG"䤐cRLo+o_E;ϯn?nHWʶ`$ tMhlDG `:R'Y5.ԑ\;Y@G''C>ROwørbļ]J̋59 ,7Mw8^ o89qrR맃2w O%맻+<k.9n89,hhETD&y9C)iLd7*hʬj:)72ˤmI6$G˾:NJx󗍥[cL]XHg-SW >swg erAG&Z V3-QM$CBCI,)Z=1M|OkX+\"){@7܉%MYgbQKWbLzcÑp~֍^Ęr"mSYbLzcÁX&Ø&f0&\Ȭ018LaY|m^Ørtϰle z YaA/Lg܅0gig}Œ0f=\: a&0&gK'a5j-aBθahyѐq!L`Vs78k0Mg0:/~[@+Hq8ˡ g\zz!XX;de2]r ,q8kHXt0,jsK=X WNerapUK|WϬ/U%e~U __Jus  +3j6}py*k;+Kջ\}HzLG_Y?_IW6(6|V0]|hsxY%{/{Ri9kJe]{^۳W46+˯W꾶[^B8 EKӥW,z.^%g]ZwsvӛWμwUv9KˑWKx/wKd|xtᕭtxRĂ.u}}WIc{yWݥJݮDs(:J]%K|i7}v;\v2vx8],w>o]u_]e]u6Ut{.M.QK7%-㤛.4Avy@n t2=7sS97|sEpzmK1W27K\US[OZ2.G. ƬC.;q^jr5TPWiT/֩lW\Uٞ+UpᄫW.F5v:npo dyr5D{'z+ txުeo`rvqƭ.[]K>VUzVm+VL$jK=m<-rh^n'[*s-Ŗ$VÖWJӽPU޵[w:ת.Zw8]k%Y+anZUïV\nģW-˩nZʺ˥muCs?4 wyӦ@jsv];fr\9mlb[N }7@>ta3L#3yV+ YY*:Ks֘+,f.YZnJBf8t;RNY . z,G,,-ep,G+gи,Ǵ.GY%&N/Y!NnYxl,c9=VhPcr\.XpƦJ+_cYX}NX;.XdbPp*+"Kڬ YwXP7a K=aIƖ#,5,nČl8g`NX(=`>H+/.WNȱ|_mmt}EhU2`1^)+M=çS=sՔ)W8[XN˖fJl$CmUM8VlaNU.)Rƪ,*_1+ v"lگp\q'-W-aZӾg_]$щ j󗳬+,VJNJΞF|?~=]6\W vR%H>Z0䓝`:c)szz |HG\śdnOdI[4㛽;Y]? 3</ zpjssO!/$/RK3Ox_(f,O |tԻaZ4m>z>}hpWO}|]$>ʱS9KZfF٤LO0vRUC3+q):%kQo6֋o^O}jYo| :o͋z~5|)퐥 j="戧uo~zhi/uyzh^xzV68ߴ;7|C'6'oB鐈U"z*=/t9av'ә]^zOskWswfn2O[ueC){^OO)4$hyBNdiՇ,;;67;U63;.V/dX91oss }V>v3}zOR*B=Uo&]=TdQvuBe+}G/Crɐ\I_X0wVx{q}֮Ό/oy96&Sj48GF۱91^?Uh5qLIL$0 gϞ(`Z=fSe5@&9L\@I-ǻtӕ ŝx uަ@f̣Z0tLǗ+(M`vϞB)ϧg0Ĥ>Rtp`HhmRM\@JfyQ "<|_ afO9L a{ЫՃUEb"6 5ƬoBzj ք^CӉ'{a;A_=TtƇ5pn[ gRTOlJ mХڵHE,kl;'1?%hI0XHW oĸNW=e2ق|/ƪ%êf9Cmb,gŞj?qC4U{$x@CٳgD9,BDJtC_|{m=O'gI6uRz(i"o-:`3xObcFc+F}IU HIM~IMTv'6_V9ͣ$%N:2O>2Gy J]?5/nU#P0@T)tNdz$ٽDRowL}욡sz\ӓ''W?dycķOF!'p67k iIBǓ+XmR4`, rH=<0'VI,s, c.x^zbk:[cmK?]' 'Ţ_~}#?6w89>Hv_/#F~| {xo_}7hW^yrFCP~ w-`?ps EWWP"x/R$QnR2MQMF66PG~2qt6CCBe6SgYA겂Dgj&<= /fo"_zPxFJ?f-G2%p3g, AYT*f@`YZ֮S8f)%d 0ڃu 4Vjɥp%& $CBRDvtŤ<ƴL( g7)YNGŘfxͼ,&b}*e3zo…atj:L1v-C|g@`}TBY9Ur1wd.qQ_`Ogww Dce&e H b fݢf+bN7ܕ @_ -$/*<3ǝFxBU'Gaz @Zi~;C?3+}߸.N0y~O:񩰺ޙ2~P{V(hud*vI#+3ǘ-}3A0${Kffs1PP*9ƞPPju1 ۵oec4{(4`Ob0= ..ٳ@aͱ1[jm&/+ҁBP^G,i%}.Y;A-1@kT4 ,a/[02K߲d/[x 2 qK`]uX.87|q\ ΀u{o'Uy'ۡ!@_d'e͝&蝶( w:9@NȞAY] ) _OZ%.jRP%+~[ҁx@0vfO~c2~:[0sFİ7r,%H| 2v~2evyM0]$.sl@79Eeubnư2&Sl}G&j5Qs 䃰a׹ \K .ik'@^'_֜ n__E s2!abC@;^ *ﱓlt}F$j)ZxMǕX1ڃZ cJi? 3Z_ŒU=[A79 5P"wݰÕjC^hg -=4t>c}1$xmdN;zȬ`G쿃\.z@Ibz;@ga qSE M"G虐GB[F/'MNE'l섽F-ķ=oIY/Hcjj wTQ:!lR3zC3A# /-,fTNȶVhN\tzUPCNkz-iRu-L͆9 gCHm9y?Aç3OLw5rpHB5!!N;9@Hڷ0gI$+!E)!ZSPR>C$+PR&6d^lr~\#p&wD`r]o#Kכ%>-< QOJ46QLx㪑:&8 q3HQ[qSD^佗m2z0߱{%>z@뀈sX‹`pipB NT-/|X8.U R|\*ҜGLJR@J!#G7[6(X,U*rT./MT= )ja1颮[- eEX*KcG]_ݮ$[*_9c&/Qc{='"^385T 8h{m U:0In^*(PR2 twqBYjrpPإ  3pdfV>U6Gkz@-@͢tB\!jq9BI`<6`zptuc2%srΔ|8VU v:E>T42;\}_#:+|η͔v8דh\2Kx85X!jbfy1 f*2j*XSVVU^4չ.P^֌ 쾩RӎqZiYN/T,Fo,e,Fopν*N:V51ApHrRj^4yM*߫0~(gsgXf(k5a[La(H1ǷfZ ](ZZ} ԕMEVP{8Ekgx Z,3٩Eq_*使K~D_G"a ~5FO,2Џdh5[u0Ǔ F \k, `7{v&zɅ`p[)3A&2dYzM&WLt\UV*,]]54x\"nuzH{ C>S'}3à)He6m)9l@.DzL?iEzNC392iwNZOM XI$h{L!V=|'=UHoXfMtX1[ ]stڟ -,}uh ̞D 5fUv5esAR.*R!^{+d2Iwi3P$Ae e dILPJيz6UsvgB>+˰ ~.Ŭs$\/?fL }9oW nGQ7_oA$B֤0Ҋ#cPkͼbZcTmhzaG6OrQY>5٥7M €W5N\Tr4?iqiC~:Nj2 afvJZ<XIT0+p;vkN!wNhq!ǜ^y2쇧am^#@E8?m#7M&3`'[w1{}Prp>.e\\z2p ՜bF2uׁ 0K?kb gGiܸȧ >m\ 7e;>1&pmvn}LC; >sMvne @_ڹM}M5ll6q6E$Lnu@`?m[)thЮ׺:wCMpCmpU{ܙ3=Ʉ=Lpf7ۍC t TFw&]Ú jcNzZf#>RDuG9qG匜0~&wcKfFM XW,lMmp*W3w՚6ؚ6iE L65`Lleooƺ@(OcOx!j!헞~ n]]5"@5/"@>.nEN7PaykchP䙟W/~{0Z7>1u{{;$c797"7C@Aӕ䷝^MuNLY7{/.=g/xF@4`!Qz& ۙ&F91U@Q*~؁.QYFKhi}^~y+v?H??/J/Qiq^p(` jEt2:e(FixU>6^S,obxЕ[ՀV㱁RD)G^Lf3 +^;BeuQQq6iG S`x(Kʌ )Է<BPe[)EN/+p;$L 3!K2] Z ~Wa|(rƒ\[a}K}`ؓ}^|xR^߆{Lg-U?G6CnvNOŁK|HO1p{E.`Ut^f|_#:z2i?.%D;a^MiWMN/{_2vP4w,W읐De!*KfB6OeD!Y;^C0būlk4=#xWz.—y"s[|?<~L%t7d>_|2 )'ioyOGXʞU?}O&%Чv}"/y ?_}'=8h)8;MP/XQ ""Yq w!Gu΁9c9S$#/-oe^փd#עF52.j 5S\P0赐=L2N#8IExG ༆`UE;ݼga&`~WWi(~A \.P O{/B'3>+E &R@J:Yb \x-o <~!y <|+#{s8v =I|v2웇ov*<^,߈wφoPfYshA|ۈ!pVkQTflL +֜3[ `E8Oߚ)Ĉp6 &)<$vڼq_l; ];40q\ozFؼF=3lDg4Jfǵi~:-<RE>r9Oae!DvY 񿼉G"| S{vZ|/SLOYy*ĂRr01bNvEmGx ]\ffUVFY\,'ꗀ{phJyUrPfl hEЫ% PVw**1QG.CVTMDG:C?lӧ]|ĶO8rςPf?QarvKǍli@"JF. X6tVrRq+E*3EQFqCp`v{tq`c:A}oh~ e8.C?{M57mb6't*Á&1E( U?gu @ Ls[Lk& ,Y hpv(\y[kK3?a0tԄ9ad{<%s4AFqd P+W2:^kHK&[g^ 28 @͚Zp cgo5!\ 1 ł !\"p ᠅0FE\Xh1 !͈*o !T2c!lZR"5KԜ(т87Bp!s ouY2C dtBR*mH&`T@# &. B"7SJnpi%ђsQ\$XB.Ʉd`C 59'C]WBzU^Eudl*shꤏt=:qU,=&[} Ai!bjA~o2FR6@eޣOe+''ӵ81=[Řz0׎vWf6bv_y7>kʨ9ht9;o\oa-E}'2xS)6)~OϽ ,ooMy ]^>{Y ^HG*P'yiFykYP*f%C=_vVFw@2w;7Y}BYLy0h H0U @Ѓ0Uj\0OntlD0Sg=/c$^u\+~*Ov.'weDZxW x&EО_ry&z8J'/Q4ZL˹x}rlU4Oљ7^͢QlLLȳLDπVdgQh:tRkde~IY5#ytʰD%Ytu@'hPQ-?/Q*M,Ov:L1x1޻M/ *U x?g5 ;i>~?AzdbK|48ާHD5g#UKE'HZk.r$wN:Ca`C|MZ 3 -Jz)HZZ ;Ɏ8l u(, S]O! ɖAY{؅a>2RyKFrT(CTkVj=m4f:hkGvyaO^soa ʚc,X>ly(p녪ok2$ |]ħ_v>}zVzikn1%~ƾ,zӯ{ھ&^TI~y*K CBgcY',Z=bG ôX__cy0`Gǟg:-\!{{h{7{PKN$^ `6`&\O71fr/0h&f˄Kf:7L.^1g*jclL>yc+y^nV[͝o2o5rM5Vx8t %a]p0]6\fvV+/:v vb-nDQ$;x&hu<0P->ױd{<[``>]k$h`(,Z,HW8Td',DpI.RU3j"Z,Yci%@ b@4s*(SjJds ^'74}-r1;tV"=͒ lG7xJ6\o7GSe 1l1akɵJ!8d,r5F7S 3%Rv)G@.he!R+DrPj="xhɕ$jd<%o86ZجQDvNxAy~ ĆC 1 gGbqa>0\,6`բ;5BU{i-tX(rm2ZȜg H!Vg)jV Ȯ (0NZ@./6.vA.)Hw{ fXŭXm-JJ\W*WF(fB+ˍXd YfWdgr2 $+IEhHuHIBlY^nW IRUc,_r&UQ[B'¬N 0/;VOmrm@crcC a31Ÿ6۪@H V[[ۂlC?j1"9ɷUOPZlY`Q |y+o+3nkbm5\m=\)ۍyr dq+㕉UC$8B1wa5td^ aܽmU^J]u(& EϖU8S2+{vi)^r7pO@(P̸V` JVS#c dLVbBL^|)}IOU`dd\| #!Byb(P@EXLa9.N5m/[whv iF|```N lR boz0o70̩r y<;BZ,[wSzdo {4Xg0I:S4=`,PcE' \ºho>ećX8=(ܢ$4$HxV!YE[k-g5lky#q2ZYSgzFO9@AKfzIVE'?3CA--⏴UGچO*|ϊ+f-:/VAĩZ|Z*Jȶ[,h- m r c+Țyl [YO^+[XSװE `oniE[GMMR[AP7BL/{DH{@dR{@m-ھgu-q¸J1lEB waj8 is[7\ !{$[=mo(A;J5Qm'b癭[W-pzh\7nho&)K@##:+{yTh9පE#a$=*vT6Vs9ЋW0ą~A5-]IV`z#S1T; &ga0 _Lκ' &ga(C ^0ĩ]N0).0tyP]0p޴_t/p:PYT vx]/pP."uyA@E/% pwAo `Euuy\.q9f[0ׂNx p8`ç].- 8?w!,uf/d]YOJw8+Bn7X(ۉEd]Xh89v:{39\OX6 |nʸN:N9!%'bAv:7iD,N_*jAYO8M$;L$t ^&r2 ʺyHi/`{ v{(9p.q-ѳӵT*gc~%J{uvz˩D>%K ˣJP"$N"SIv9Pɻ}Iݮ$ԟNO!w.ޢ8a+F\4}=(Ճ@nOf;zPw~!E߭TzZ!$^rXÚ.,aAٕeߪ$>zu:?j{LO6V]6߉E1<~/)O6/jN'a/w N>g͵iw4v'z )ySXlY>[Ou{{RHvRB|3z$([G;zNH6OłlI_>=+Y(Db3y%I)oR $)[<]_ }- NPo2dW)pHG2s8t>)TDT9ͬ_%ve#kqX;cQv~R9Jo**L8B9pzP}XkWS w"W|Y Q4r%#kG^? KdOãz}N.C\G:(Z#+a' ɝF##χz![z'sЯ=7BYa9EDP?8(&YaYaraNsg3萢f3 JTN.v/ro7e$>he `jMYN[>0.v*]}ՖJDFPYL"܇}뙙FFK>Ӿ}X-dG~5p32MJE^3vx8Y$Ih3Ak31n̟9J˥Ӏłx"֢P?C\/Flv&հ(YܬwWn̟cg25K#qd,͟s^Vy[1̔O 1;x Irf6YlZ::<.L%lÍ| L\@I8iN al@yo-cCq'/^lh]/Cj:B{u -s95 G>حo==R쥟O*'3(E5`Ig<94 {a=<͛V6B%{D/ypJ_zZG ܷy}fZۃ^4<ҿ-Rٶm94fE[SS8& N<0 wфΰW_@g3>%t H8oRN>(ʷ>4+ai;k0sZ%ғ(BAȃwo Lx܃HlHd./zAcx5 9*04+V#%Mu*@nk[#|ܐ n=*-4T&O+}itB\roAJ]v" U/'lg OW_M _["=7"O೽{[j^a.nG&݈ߣ|p.S7~7na=y?Zo^}~8h=15 a?*?sϩ!?|ӿO%>?_/Z/OJ@u<4K??_slyͼ*r⟯snU|?g ns`_E;Zgo^}Lmr-Ƿ˕{pN0h}1^%FΦ#ш10+Ͽ| Zϟu$'gXȜ'|^ޮMr%x߂,xAbw{9C5< |M.Gxa ?Wj'< dBcOdnh}ڬг&^ FܰRAd*1wq1ψUK#J醐`a\jՒbJa۴#EI-h3<2>IpH:R**S4%q\&ȋ`"3'X(ŋΛ({ż(W< Y}8\jZGs:XӲK}>Oa}Li~B`}:Z˕_Tx}ϯs:UoW3XM=t."ܯsw DݡS|RhvZ7Dm|`c֫{P\@7fbO2x Ѓ{&}3 Yͼ_M߰W؞z(hDtx}|2an>F.٘"X E^V? juU;{{9Ggj^ŔN = <0L7^˗ho^.+]I5| &Zz\'bzu1fpl4m!{n5^p1iyK_\_@|;K| 5p'q"ЯeLFj#f Z!&%p1 ii`/% Oȣ@tctu^| =!`䡭I=?\zAQ>OOv S%>?E<#f˥?_#m^ ϕ3KIv4B\BXh~O0&6w89C.wb <:~~_O_~?,?yhWJ(f;KKd:;F 4t HEc90L;,@KlXU]TfxiOT$1UB(bvA'!+黷dC @_DkoN)430q2 dd6$bf\*8q#{iu ٹwS[T G~~eFD_Qn]d-1*cT2DUY&앖RHf ]/g)p&x:oY{L ߔ 8|`0α4.6:v}G^(?<(=K ܻ :q:/$b~_vPolY9h6fA'A_ Ywt `3ܗnr4wAlfzx&F ~u#(Oc01]Oaʏ̚- k}kS[ϟ~_1>*O5a?Fmu~VFB-Z $ly2)ynZ/~+C#U&Ln"3YU>Q'?Fی?\qJxw7g٣f-L?f wj忞>ooY;{?4e8`5+R,B"{ -yka,F/FYF5׬8(̟,x#{cf37Xͻm%"ÌʋCќJUJyk7?վ*߀zW4͹*TOJ[E1R9y.E7BcS icb 7(,I_vȧXLl~)J@'k_ rOE[b 7m)nd>sJ.(t_Mqےd(aKҢ қev?~εM .Ԟ;#;Vsm(qC]qei%4eC=1~_.0%*")7)2!v06~F9q  2Zd ^@U~Nd` a'1XmArw?'HIGXM/6 _%2}jT$~KN6~fwiP@I;Mio$o#<OӳswZz FS (AHOzQ!Էt~WV8݋str.0eqct6TWqxѵ{NQu{c]VWfxt=0sV7׬$e; mDywq 4[ʾioKk2v=E)#3T豄J@n~SV )3WoWKm'|PfΗ|iIl(+g mi(C/lo02r1h(3ߣ edFf2rƱN{,L 54cє(#7yJ5M-RHDhh%jKx٢"Thsa06g:Hd?]zU#.\5úrIdICZMD2k+C%v?] QaY*5 {Iز6td|CHIi7Iאv~zPC]d&J MGrd2Y0 pY)%V+ZgAY-N ީ h" =hl n3HW_gCX|f!BN,,ޖTktRe8ڕj ELۚf1j<(Qî+࿐lҹ%$?/:s,x1OG|Io5~|ܪx#;݁`,R+Q'p\N?`"?g߻u6鈹&ck3ljxi 4bZ lAZ6[ՏY\Y S˄n攦Ev1Rx.= |kP|;VD'sbS؅v$"} J%#zcߥ 9FT(ڭ਍ L*ߜ/0ȝ^$\D^QJ{̭ :b1 >(x)7/0h؁1ܹ`b= : r؂NN5iZ/0u9R1%$CZ)p?Ec PڅU_vB ̕Ar;iP;+k,*ꕡ7[eA1Ya"&p"bVubv~^ST(4NEE Ď\.`yǑ 0JmrlMP^PO7=[F͸ݣ~_Z~?3 _8 hzn谅6ٴKIx`hr8jGՐ$\9ҍ;2)h .ދ;G 1J$6FCEd1֋0rw83֏>Iz`09IG>ێZ`b@%Hޠ'Kv{稊-=Ed_x$ʬ͝Q[|]hUKHvX':}7f.2\|hؤଐVhc|Fq.fБ myvv& 8:L,[0 zbP/>fԑXND  ZEhe? <ݬ7 swRm鄃&5`L_vG=x-$=Jw`|5\h7յʛڡxS£6$ h:kC`Ȯ ^C矠kDmCv`wW SڭTh{)8_:~ k>=I \o.R 2j=+@hwn/M@I_Tpt]l?mC"-|S@,$Y yg:5F$ɼQf~q˳UDh3jkV Nbw)5U-%ʮk92/G~?NbN͡ʼn GzpY2% sp7 jsKl?O_qe7:4uqBo%ceӠKh 'F+iSva<B{LR8p[zũJȐvq i Jop3A&iG6 8rϛ۩ :KV/H@g<!M)u-6(AG]?6 kV2 nuz]&C%ږA鮛QW z F ֡~^.Gz4X4A# >2.*!,K1NM?<#筥Tޝ[I򝴲)_e v 3ĝX:"ȯ~؎c4KR$mJ5*+?'BU)O{prw4h[vxfV -gPqCln 58 T0q%3.C[kA,o^WT҂6 _i߃7$VW$n;&'H/+[G _ܩiL}b2-ԊAtDajZZ c\OhqX.UEBm?"ū-.f a̰޳--KBo(v Y(WQ W񼋇 sU($<, vKxIXviE/HDB%ڸ#HQFE؈،K =9h h!Ѽib&C%md6VAr7[̄a#C⌠VYVKQ1 'U1Ra],,z}o??|O~ؖPA'8j-X+&x;8Actu}7M~ ^į$Mtjli:Y_:˽aGo璙OHb`_o~ֿW>Vk?5_]~fO/9>j=z_=?vjN{([3gxt g{M=ar&p6z4z4^7"z$ׄ ?g㯒KčQ"_f 0%!,^7tIaECh'H("Pr|A'7/^r뺷|q lnlao{ ,6¦oo76Y|,Ul 6^'3 ǫ~,hfY xmtHΕT+lx'ߌ)DDk]qnaKwnae_-gк"÷شøw(j4J(mEA Tt0xqcU;㰥]wЩSAҰNINcx+:Ut*q;#WmZOno1U:dŦ 5J9'3~- zzzYrgFObYaysnvP8Q.]We)J#:BqڳG'gU-3لΥN9Y+U-/EXd\ pjptt,]l6{6r/*J&֙%D$$p(S$_6ɾ/@WweGd݌TWWWorN8C0@]Fe|-P$ &Mg0ŋ[HLt>ߣ( (a7$LW΅o#~zr*u LҎZk$+<8/U*D:e , 82T P 0eo(@`#W%;qЎ"?ڎ;l70qw`;{g+}[˵;nG?'d?p'w^8iݘ&Gκ۵E]Ὡ&"ڻAޞc~N)&sM"AGa̩)z8h>}kU"zbAI$0Fe%Ea YD{Q LA'=b'0bw2Yf`Q`:- I ,yCtMƷ2\`ȏIo)ud׏ νJi2Y@B a`:x?ߑs: Bt.8֟s*!7G4-;xfG#[B0RBM?b d1Ce;'bs󊨙fܬ*ΈL4;;'斑|9U5 -{VNZOiK9'!*SFBϮX%sFBʧO)TF.& *꺑tRvR#ĹaOvI}!Pnt$hQ]zaR"{KWIxJ]:.`x0ŧQ[SuZDMuC? tB Nt($Ƣ8/gDې&7J'"/m /C6XdPpNKXXG"=a_E>uC'VI~ʟiy ta`Ȁ$0Zԭ4"hDhfUdRyAHUԤ"IKe5PIZ8+ ;Q0$]xd% V.KTAwI~9l`YVH`UNHPA*])LАB9XT&+HZ«H{%nwpXsh<)UQšO cc""K7 IMK6Fȇ*J&ĎץJL+;>Ѳv޲R %j(5րPjPb5\Tbb O %٤N0MRXG?(1:$2hGDzuRXNh+j6cS3NT?шvQVfakZ%%'}w R%G:R%yJO`n zAi9&Jʀ+5QJːE)R1(%mL:&JJBi()MZŁ8p*FyRB=ImNpZVJ'(5!rK'(99AamGIّ yzgw!%'ҔfsGwjT<TeCCِ^L)4VxDglOlT3B`*ABư%`,!9:'~H h݀?GYhruANL߷!idOҝ+=e/"[A '/l<6ιOV*#"I{+IJ끋 JCF 2% d`I5 OBG uk5'Xe5>}?&] +!`yyPƉ8 4 $ז%9b҃85 D/xčht)jσqQ7־u.aOh*Fp /?XH'^Kbљ6k9XKӇtM(rl"M'2Sjb"WlLlfrlѡLJ>KA "%@4":PONEn *raNRC7R_W^e#cVʳ7px#O+cxՈ!nOSWEt$t;OԡZ׾#!]gpI`H. Q_T(ڂI4k#WܺJgXrg@PCzZwnSZe9Unm-DB4*0$MI C4ef2+0|y N8HOѡ1%Ֆ6#yg=V71,̦@'ڠ&*(Գ@ 4ZBcy jrk}j$kSD)Wl~J U~ٝ/;fsX@) ֩4NVS #jb'Z|,bq7D=6 m/FK(9 @8>VP:~+h3jͰ~*(l6Q'ݞܯu{mS')(Ҏ 7n7xe2_xmz>TX%e1&FȘ*yP972΁ f0^p鱥1TTzGKJOڔ,>PTςs3}}Df2UBX[xL+~2jEMP<&]ۋZ9G s(*'9K(AAmok~lV1'pD07ճg7|\,19l+}* 0e4" b8Ŗ%xhu@җXt) PnhI'c+dU% EYWI~wwlkz.̆AWHW"ŎQWė:5I,rN):m睃-0!=yVe43d1#a71Wͺ|ЬO̾C4vzo(pjp<+ . rGat WU9Xm Mð' hUS+s4iJ< },b.gy.8ccA@.* leI+m^Ls`a_ N!;qPׁ nө'H?m%=[qhgRW^L7d1W^,a%jDgy&«<'} A֏)fH(`ԥuuE @5< T<[@UegL+)Y+n xV,jTt5WJBO%:\U$P|FP|FQ6[eEز aX󀒱)-Or#c*` C[ENFQd) B},DJv;|m3q)iw/̢h$*9m3sp!=wHYXQRZ6bTEtt:j+Mӡm'~yrϊ=b¶)M% UB+uS޻O*dl"CT4Ȇ N@SNF:2IД Jx•1(]SUeNyJJjhu\SY"vUIYyK$c08t3Xp?V0"Hv]ԔfFHЪF$k)uόv$xCMڔiI@ Ԓt;=6׭ zZ⺠%K4u*j1K .F'Um-dRn^! C`5lQK`v0 }Xƒ0*xK,K-@Uh-$l7ڒ/1,K%ʴWM-*P z[O?l&X>P(v֓xj4HUhAjh@zVFC{SGJ1d2ZOP֤5o ]Z/( sMcn&S@`M I&Z`D4j,,D\1{x+XskTLfVx Dvd6-pl%@b,9A [_,vŨ9&sPUsr ^Cz\/P?6ɓ Hz贶QۄE܌9XO4:Pm=vG<\c\Á ChzI# Z4!UKxl W8@`y *i TLŋ%GĹO0Hۢh!dbTn W Ԯn TRы9T1ؠGC У!LLM2_YMRہ%RhJUEPk%فKfOEn U1EtאȪnnp ?Y5==J7'9jz‡.(\>tiS'hhVMaZj8۲G>\v#0quF^ $pIQ+36 ,KfUl;3ێ,ufܖ}hFAAF6NZrЙvV8.MAM7D8qڎn`N;fu}?ڨF 0fU B r>u u>'T?d/r HK`t0h_eD&i Ԭ9)+ԿzίnLRUDH1!+a~[` ,55#e.bH=G <&PKVD3^Ťa>^E^ˏΠ3"|1An/U[sH^ҠR A^Fr1DDѩ* ^0@%7/2Qny(R*uwikp:5I[ӧ1<x"Ro#env3&>;zt Pw )ֲmXq𦡘:ۆ!(Bi HC %B[i$i khW芒f5e/G._R6tD0h Jx/ÂNDzNG<-cv,#/WSeO  ͽҬ9ŒU1"KVEFs WLLQLAyym&?5'$¢ n_,aV+U^@U3L`6t8\7,;u$)ULp ,\5Z,K`vFI%!_נziA7&^kmaP hW <1&Wj̅] I i.Xdfc/{ܷ |]V ' \Henv`E&͋$5|1Ѱ&Ja=2߉H|xʹKL+d|"vOiL dP]xm=kI 4zΞЛ9 %yzV |b^7:}iX23ti嫀C.<)=uݸ7~Ќ#^?Cg OCt| q[š*nΠK*U<r^# ` $*8K 9[ &"S?9gH 5h4/˖sQM5R MXCOerׯry0[ɃV]jĽ|ѣ Iv $\󗎄zwE1da.~fEO]CgDBsnx5T:xMT!^РAN P6hOAP6$|Dۤ@,!c{&B:TCRpBV Q4(yzU"&g L4t1-t[ct9 ԀbsݠҔ릢HQQT@pQr>ˌUO2csw!f ^uf;s^#9_s@mqеYPɉıE4R4$/6 uhzb(%UVĐHuO (QĐPZx' rDa!ؐ\6$5#DklH0k+5ylXtJ%6q)e&y %.h0lȰD8<goG 22$131D E<:(Qa Ģ㳋x@Zz@%윁تnFqL/ΚTx qL%'d"ig͈S\bV6H7(o,$Y +0@* .R1򥐊)J*"F74Db0U S1ěJÙ|9#0#vNjFP5#L9TMI#u&nL9+fwj!$CE̐&-03X4#RKaڪ&P;qةՔmO2S y ei !F(0!Vz.bI{HcƚyӮyF^\ blU-F^|$H͵Q UF-w 62<9aQǨ5u&UwW22 I) Z$ܐrL<}3UMLt$0i;ʠf ٢ZpҘhUWM*Ω+.8ru]@pXb LjюGhUg28\`pV `F"l$t^7ʠ? AQe'ݪ&h.kyS]CNCzcՇqc3R'F:!zM7M+G$\% GtUؘm{Э{{Е.k]DUEW6: ,>dEaD͊nu|M,nV` ^0 >&aD||M¨G P 4U.o*aZf.;21B"5|֊Qe:;@m w,+ 8QGJrMe>sBk+TesN0 3Vri @~0į* jѳl٪Yg[ Sk٪MֲUpU,ĞrSQaٹIG5F6ptQЉ3u 2= EТy׋\hK| 0"xrh;&n>rR*_#'!pz̙^ pt%~KD%hzб1$FA,\㘎(<ݕ~STJLΰO 2T S D50bo]S+ԂX^N1'2zdQ=[yᷩ}|zG`^Gu8O)x=6aEF*I&*^2T7YC9jʡʕ91OԨiePS=qlӕOMbtM)["5WN3|Vڪ1l Tj i[FHE@)@7Us7KP ٬#OI#)+lגrN(o\%6\hEIB qEU߭>(**z6-Ew9=xSjs{I@@UnDE؆+LߑWƈ2 <. 0>MծhfD9AZʴhZ ]f$bUM1vjELpU+L0Z`˴5ulԟpU7&C%V~8̵+C9ђO\~ye(/¡e| iQ2MaԴcr y-.Cyx͠2YT.#xbXᕧ pgQt#\GvE-u"Dlߕ es%]XW`pEv:d'XP`MW'F/:=z]WnyE/X+Ov]Ɂ]j/<]xGd,<JWNʆUR‚Hf+ -*PF9We0723*#6j%)e6ٮ&XX]M&?j&Ӯr\@j Q-@E!GUA`i Fet-*ǐm N(K9DũITtirgP]˓CtU_M;sj_Q (/L+©^Uu}F5T2k\xb٢hl8ۈCWBU Q8NW5KWb?@n:lah8|bh ~[3K֌K5}HC-|O E'JpOr ŗUBjm@Rq }4  7͠peKP]ȧaЧz˜{Lf>G$ޜ51dBQL3 !`nI8άme?z/@]٧d6pt* ˚Aͺ,;F N v|2dHp" v ԭ,@Sp ;jU V0dzӓĊ1L8T@ /AdT9 UA<+Hprf Ͽ!ozAի(Pz}NƘ @&[Л[b,V08^5b*n1z @OLx&Pr4| i CID6O5FbC\h%>u5ڇWrLs"0,Xde<͊ҾCKFY{#x@+TeXAMX!\l NTrvPRh@'1͖DQ5f:iq "*U-9F}U9JU^`_iFVhXLbb&j xòϪf <U4򕐚1lXZR'֟jZh+ ״!.Ѫ-PkPWjahSXzu[vTz];9_)bPX2)$ ^Gwiͮ:N\ݜ84mNnMy:΍cە7xo 뻇gQc)7ۮréTqIgnIr&#yA˳on?9J~NI/zl'ngV!F T_%lӏ~Y,䈶Q0 [ޱ׿Ө-Y,R*UWqIj籼=|ĒZ~h^qo7_^U~SdUTOtk}g% q^͖=_ `?l,E0&R^f+XL IFI'mB]Sx/AJ @ ji/87$d "ZZG:ê?O=ONj[Az|Yq79?=,dWN_NRBU|O0naiMIC_^6w$A??ޥ1Zپ~E#ȿo_hh0Τ h*U7"0^PWS2M>6)㧺g:AvtyEy17e&H|0I$E'{l%~872h-zQπڢWe*Hd%:xMzh ,XpdDdD[yF L sBLNtLNRw-ƐlIحj>94+WJv'Oŭ]lc,owScFv\:^Rߏ#@M<OtE:bܔަ[F7%GS73t="cC ΆOBfd:d#hFUyIŽ uA}Ol ۰0B;ݭ&dfd#|9~c4* $pBFq_[&eIRK4;wji:j#{TƉS>qNFGI?3`<ĻXGێB)@L]bJCA8wKvZQi֚lW $WQ~8iO*vڬ;P)@fZ.I;ޮ+q H[\'a#*cz0*KBPnrC%B]i(k"~bZ~e1uy|fb#h;{`phWs*Z_|_ƭst D&7>=< xQ^m定Ǚ@-7:Am1{_Zb]D 1ֱҬiqXw{d~vSv_>Pݧ?_yi|ZXnIYwh-^$66.w } $%g;k[g3r f$zF>ypR!퀍(8 IQEkY5j`CLӷ89DX;WThP sml@{vCL9'92w2H&cc%D(Ϩ_+핕N&&Z{\n/j՚~|)?bp'-d3iϿ1\MBַo"4[L^zM%6k_.ٓ/Fm*z #Yd:'VV Ն9c*O,IbfٲXBv)3_wu:Xޅ %>_=/o_/H~避@6o eΓh{7&m5k_rʇ2r:~F P$Hur޳,"0ѐ6$#e"4pf% 嫬`&Pqi@#!rpgѽ8@{#(qڇ;ker/[[>&O1`cvZ(e 蕶 (,ά̛Scf<_z=/<oÉ~wS|y& =f;!#TC~LGHu${Mw߬Mfܞqqt9OWĖ n<aT;`w0@a? `Y"gNJ:AHfImA$ Un>SqHIoI8'!]HG#8D\!QlLnE11G1 " 3@B0LtCԈ:x:h:XT),!%  +$YRH D7ġHcccE5"ء ;@B0LtCԈ:x:h:XT)|> @B IIH D7ġHcccE55Dp\p,ZH D7ġHcccE5om܎! qKʽC.՟a)U1AEY *bPV7ja`}ww' ToI $.j2h<u)CcDpB͘"5BC)%*rE=0t h w܀;j 2N-P (\F/瀁PIG3{]r-Q%BSh~KEd?%Xn?2zP :EQi4Ȁ|Oğ?P"5BCȖ  hADF/EC(*̀Ѐo_7CPfG훑2/hS:/SBZE"^<oX2+K4Ͽ3mpjy_>OjzHb3Up 8Aa$ip@dy?-&%5~X,I0x9o> O=mx`_k4st7^zKRGY[ujm>oL{g:u)Ohyg!]oTт_bRMfɩ[BDij<6U|+:0:E2|U4钱/AWʰ~`@DJϜIG53#_D Q,_wIF΃(b~5O }]82cN.w Gp j܁{%8 L ݘ(zɥ25˟S!>OӑuwB5,]Ҹ?[ )}j"O[ɩxONdrqkJ|zr&~Be)2Q烴 c|Az&}b9C5~ɩOG[=- u7<4XWj/F!@=+ G^V9B!^f'Bʛh %P7t9/?;2PEx; aWz[,w -0 vkpi"RYl/q0a'U8mMz\tEE"QޗJy ,H@75bNTprA?O0󧄶:.cy'ZN/˪rA'[b%NS5}Zh0|T4qh7xr\ٟ^d0q)Y"Lb$6]鈤~Yp5x`'7`ns$[]$UKơK5&l]!򿀃LC 6yaj4`ZМDL Ue+`UUeʔr]`f\]`]!G$딭= S+=.>hmGkoy bCЇ5]wo|5?}kqzOId4^aw7&dH,꜊G"'Q+>6*?URS,dؚ,;(1 a5}eE2x]6*<޺2-ӛd[ocMVw:3Bd6wu\rie;Vn{UvɜB:薁q}78WjU 5'Q& Nckb Iٺd~u#bJ#H Oƕ]Ͻј`6LBW4̈́Wb.tv2u**ePTIz=?2IQ :Ichf8R =7(5q' ͒m6OAi X(1.5yUC.HiՐY*&0KfCA?(Jf#s a3ÃP10kŜj`b2ej!AZ-􃾧ni׏c4 g.C%EzU),V4sڍ2*_Wyzv]xk%1Z}A[Rp2Vʭu[%3VPlmߋ4WplViw<@:m0^ύ\^Y9Mx36RdSAs*<{6lYs32,9J,֮Ӟ^WI5䘊#ukѳ*hf0hBjK8/k0'ZT1\i|?:'騘j,){NT1X?#ܻS/%RT sҪU 8jTb tU1XL)RPCR`Ci!K`MIā`3˵{R`UY# ۿLde&2qdi S`[RY >ˠKZT5UbT5X6 cY dKUMI߆Ūlj Jh &2M0]S*t)ٌi;lyN9Y>U-@Ŷ※.ӅLGd$>6;x;R:|ZmiMJ"RqsnPv{)~?[ShJcH3#߀'fmbf|&',H N%tfR$v=Koh)7>3t3ߥfd& cmDmw)kHs[QO͢ T{ZOh};Cm ̧ˏFbv:LD!CU 87̣Ko9gN٨D\85~8#}zN5/%]BY6͌5\p0 vpAi1ɰO49 kiie8 Gtݝ? \#%\CRSl8cp/=<"Yӂw/2<㩚xh&45#Z~%?o [ AiWU& 0wR5ٸv>)7AgC| "Lg9Aq7ZK4ݦ2m{iMB&銊/hLF i faB z)1R\y )s[J1#cye#x^-7"؜ .F7sFm-P5ß.eJ%le*%{5k|?W|~2"zZ5NheM)cO$݌i*6w5k)Ae=pu[r;)[B04p*ss \{qЧoV.g^XiItʇNV{R =܃Eu,WQ|pڄ ׹/Nf%$lcU"um?`Bu&{*uݏr.Qĕ(eYVq41҄r&TV='bHK},h)܌ 2Hw*D/'t^(bU\ذhTQ8h6?Pghִ\ IwAE4hnJ+0 n l1tM>6$mU =UsMglx_g%XCHބ.нRyruceX}&ǹbiiVΫrdEAJ+/j B_:aY(Qdܠ@)pBMiYNi"AW i]I]Fe -к&ي HI/aݔ.4ԼNrrݮ:*(Mj87o<ݱ~+IG3$t[<*ot Ç6:*1F&9fb0⸃3WCH`)ڱCJu=25r[~14qg<@_uUB| /<%tbWt ^W^ݼ>8A?Xv=yC5?_&?vQ?'e)-?oS9 ߁tb6"tO~ѿ?f0CW霌8NH|MMHFy^j#AHօ[kRDJiCB?$kԐX)N'ևTQ^o6:N ;T̰ ]~La6dv``5 D CǍ)Hߌ )BF,9rX"$svQ/ nJ5K+#<]q뜁28p i +|/AwKY/QyG5%pX%@GGQJZt%~K>5KK9) .6*2G&DZK:*^="&S1ꑯC뽜hE~a{mF& Dzܭf[8($ $['7-]?"19V@9q̠GWF]# :Nףq2ζbE2Vx8(ܐFl0.+ If!1$?L1 }xLeM7閵a_Rqߴj՝ wzTnpvycB*xAmQ+[G dž9'-@~3"`qxlj$'gcSÁ99XiL;jZa%k[7y$ꖦ:\92O`1˚g![S6|~i(]3|'8 ~oOqw6ͪ tnNBϋ$5/GX ϩ4N }fT!w&gxχgxTd4&&<=<S)o_QE j%a?CzM!I^ߑ\ Nzll?(_|e0HRe%CO^hWI4lf#ZL0FEDetH I2.r ??XS!H}Q-ŻVE|yO*eٛVʱ?|y{#t!bD%!p9Wp4.QP\g50ch-&,~/o -D\(.J*%=- R(Bo D>n*c2r  aE/FJk RZ,͔8œXهc\LIey /"h}/`sFg^-Ot7ކ>zxAˏuޡbnU ƜUeõY-?ak?csE[jFFq:bnhsDT G=ހXE>gATLeog]K"Uա%S__)5%C+^ŋOkO{Ɨ=˭y|Dwe H_ϛq*<G Z̓_7IӮW*' b6#VqP)\~]٬'zÆ&A7Ž^% RoԚvZ)7iP4Skہz|RNQ9)󠴅Y͎[/ؕZݩ45L Bۙ $izڨ9j'Z /W?KSD v~.@gU?In}y'hh?mx~x>_~#( Ayo|w[m}&ݎoG7I`?f/+}G:Nbё| 2w $$vFc wN"9mn6Ѡ~ŲJv[8ڋ|=2i2[r{NXlh⩈us5lKvNSfQ᳣2 YYXym&,  (+ 7n!4##CE}ϏzٮO=>dح5?ŗˎ|/[YIQAMZt䗢)!!A>d9ަ۟ cKGnAAU9 +ܐ9ؓCd4b,GAl\q)7 n@C4ɿ:.Qrrb}u SDiS>gp@N8Ne v|( Qp&W$\>'{ q0}xډĤ"+( z~Բ{A2va7iz(QץHj"kLH;ZO, g]! &lD(qq IJŨ)$! okAxȩ_UBhq.uY-kRu&۬ńZ/k`/0a5_(aaL$/N,l)Jk T2-$`KuQ[}e'gih lq@ݖ_ܸWOTjo38]9f_JNC CﳟvIzQI8IzMc@NT$vɩkAL--ay$%ZUa+h {UU?j{N$3 ]wpJjj[=J+{EVauKfK RC7 8't6fFC7xFʫhh> eͩ!OCC?hA-PBZ~/ JME焬khjöKz[4Z;L%]KuqOc'5*IZzFmZ24d~#,z2RLȀ.c+\*Ah28G8jZɽ v=B }ȁܛ uy Jzw#~~c@@~x','PEq'6$?V {%Y8FvKє:0Y >O>I{iӉm̶pLub:L6[3pKMD.xfص xDcaXEۼ rc"SX՟s0zքmU0kMj%~#q,?Z`*/ n)1ydJ}?и H6q!gaI1@z{"$ d4Yy3=(ߔovRӭ_yOgdpcQ̀| 6Q I|C^;צ4XNS&tt$c㏖S9E'q~D_w? D_qN10ѿo%ǣEy# RR*՞;xm!)ً7g!u3mY,GZR+u ,vUZN 'Cj> J͛X[]P9(jr?TɊ?#?uj6BH6\w➑^}!zs*HcH!QкO&}Q\4L!=\4л(z)rt=WH+y y^Ko5>~hhWFI׎[hEt^+Rnz;x;#t9/?ZG{2 N7yMH+FGhH.tgM*m' un=\vBw;Y0#CnP5mE5WjҖrUr#!bI<{,^(tZǙIW?3^؉0C. NݫԪ *֌SACl+eOU4#cE?Ť@S_zX(&!c3:pCߤkiT(˺SMne-Y+6TKF2wTw4_޺ѩzr~3-Y Sga&ܘ"ɾ> `>jS|_~phS7O>= 0q׸_%g%T߅ڥmFa=Tr lvRBH6wGNdM|n!w| &u/'h3ovZ-m3Yd ܮd8͟iPndH5de @qќiT¬V۵!!UwY#C6Rۤl-ѧI:})k-Sm]x$tR箌> Oym<>> SUU6$Y:|0qx@ޗ4|G[{v듪J]) %>=l~|Ξg`ÇXFL;6[T kEySTH?ccBd>"6)6%9ܶi xƫf ,,-Kx}wtAbmyOGɦǰ [vZl8wV>>Dj>G{+h9vGrt&Z*.$S8mvDG3|#-J/Pf#|Ug私.іD|DRGޟŷIBr>϶lpC6'!02E:)`t `|t ()] tی&ӌi'nt3Ov=Zlg[ݪ"YuTd>:kUl[3`l) Źb) H ̑1H=ˆ5ωEgY < }֏ʳlJf3il'E:YY ^3%T/$WEUo-bo[U@[ZoTh*WEUl-bo[UZTf6Ir. Q$0UH~w'UPyENIsʎh$^z:og3z|>D|& MV!5dN{ZɾGPQ &C?)j'ZIQ?OZRԏNUjpF;Q$.L"!1MgaυyGKГץ2C3v?6TϡJJMX5 ^KKK9W.78hؒ3}g&]ID☪0 |^űnR,E:BZXh+lXfN !"4FZIB/uڗ߀[(&&ziQ8#B TDL 0M)jh3@Mpx:!pP猡NY0qk*+|lN$=^K ->n[s6X-2x#s ]FbK%)o z7ĉ28 sܤ)u"VR2$DhqRf s)a7Ι̤3jy+]2Yȏ=I w/3D /I>nw6Ffսga.dp 3>f9S,&A+EYqrqD^| N]q(fng}F%tc=W' JUiauauAqΘY&FYgQQa$CL/☰ /~n70UA}Y<\̻9v@ }PD0ͦ: B. _a F .~qs?;iOv[ 9pL8zR8l4>I52C@1Ͼ!b_>MFb[[ feN}-}qz?O: p(Ǿ C,^(UDGW*J "ӊ bw r WUYTq0uDQ5F^@5zn YȪ 8*ƽ p8sbl68.t\irbaN#P]y7rcPWj&. E#qT_<3.kOLU+&`5c KYp%$k=!) V R3ZX^7d""B)j^p5zίSPM*)H5!$RߐQS}RL--H@% jf9ɔ5߻dM?B&.eOZQV%Ae$M 2o=4HR1e-|_!] g O$g"u2#ϷEd*1_.W7{Ȟ]Т(!}4'=S[4 QYY1._ ##/vyg k1A1X!1auCA Yՠ#kwơ Ȇm5tEbjO:Kn8A>T+ ݳ٭)Kn=g!U= ^KY5C*MO{;A -'$2VCϥZ 5.1m@hsXd)2C!먝WLڎh/@-UǗUh3EG.*-ڶܳbQT.XQՂeQ(k{ ³C=1#R6Ƈ3A̖wZ/;DRy☏47kNy #:;^Qᥣ|@b_$'+]Π}iIӥb2qDo ۛSsNYZEڗ'k\,H%KlkZT)>Ŋ&_Bbe.z> i=z9/qpųr φd.dx^+S_gNF;G yeT|(y]-8RV!/?kX, rHm#2~K him 곻=k3[.`0Yi*FImڃ*3t r&TʘV>+y{y=w.N=g3(6~|(2 #b4BQmJ J <;)@__adb#?LbP=dC'Rf$:[mkVGV^:ߚrgK :/2^(c^zaw>|5sD5Z}Oth)C86H_E&]B/ b1:4/7L<<  ^}WBg ia0<; c&CC뻧>s$Jl3 )^'|J31j)@J3,H؅n&VᰑCS+qkVH+˞Y5%nYXQm[EQCF(*`{j KZ@,DtǦ jBRXW(񨇭жwH q2Ca qx+GSv)UC=BFjƠNIPI~ϋb D^kȊ]Q)̦pt#PEr'oPW?3Qa.OM\jځnPFfT2̊`Q 'PIPx)HUlI{=qSUVgWEIM ΰ !,Axep*C^Qh4OFFG>Չ'*pw4+Fߐǝ4jcq0Ș7-{H6љPrǔĸ&>Xkܕaχ9e/Oy >9;#cNͨ_'{+>}f.52w̻1^I>L2wsgnќ:\k): ײAPþ<MG`}`tZs2WPrSE5zb ުހumV}bPz7ФL$6Ĕad4^ȩڸ2aX ]è *MVqlfcyuV>2x*E*ymd|U3_`0 S(F^PaFBb8nbs4<7cL]dl'ZN%6sY"ގV˱"s~Wu^ ֚R4rF`N1LW^+9~$3>NԸRy`Hw{A?(j !F5nf Q2Z+sHh 6[Yu,\;plS|o22z?u7QWOi6FbyimPǷB$+WAydwl&'"e@B[Ax! O*e N>Ŀ,C،IZTsTZU&94n(^<_Z/W>ŗ.C?=ݘ.QՖJ>ܘ9pI lu "ƣ-l ,#:p|7Z[/K 8cmXG< EP$\ %,rfO@{\_wv;NCN~?ŗd*9ׁ67x4s3[)\fPJvK4ԛ͝*I|~xw9O5&YX.ۧ0ZY R1b7kzwgѹG܍&ˏ*E78#rV{}uI̗o͖2\Cx?ia:%Q^tƴ€ W3dlZPPOHL`".s-~âB&_Lz*߷oh.`o[[u_|zn[^H_ 8?2&SpK0ԧ*kvᅱmGjzۦd?#$j?hh_CZԠa-xr167X;_|k#P ;`c/c buUGu=7:!KysLZSDd.%8P M=,A= q2T!P]`P.jp]{= Z^G!1CC-?y4'k~ Sg7e>-+, oe0EpxRY9]u`h/c#{ؠ)8 IF3Vwe 3 K:nbͷj^ˁLHCjcv_IŽŨ8 SWBjItAb`v e,AZF*Q$jPѻT8 @ l:kJwm("|ABɪ)%^h~'0:*^ɗ9,() ،M̹/ (nxKD,7ܗa62:.BdZ1RC>?PwC?p88l>҃X}L#,XEQ$?o[3Mƌ0>;qIj0JlR*"j(#ƈ;>41m|. B'k>[!eƀDx@BY9(~ !jj]F?O_*Oeyr _<:/)Tw%VYb!m8/W_wԢ m r mwTH 1B]^76-7Tk{W]aoj 8|@iUܾ 1K'ܸunweL^+肣5-#p\/ja$]14t[7 +N0M4Ԝ@?Tm\A&vT |`$E fRv/T@t̻[K/B-4,D5M+ӣB< 7z]W{$GARr 0ZFo`.I^DϽG%-Pڝn"gļFڤOyԐG=`D rX#pZB} <|o]Sc-K- @XNO‹߼SjN短rmݬӅ5Z67x'z v=ZTWL{t\mgˌg/w( H6۟iB&oOK2O)2vQO,OS@٩4^MzA^LUiCä&80˖fr*y'{>s}͂2Elr>Xltۋ%$`tYd:nxjhs 2?HR*ىAdw#Fm˷yK/Yq2k$~3K,xܑ5eV%w 4S%Ćw^ &kĊNf桁id4N}zF^Ԧ&*~`=Nrj#s #UaQ½sw'G]C=NgEѻ.}JZZF'A04Y?:dTˊʝ ob4 ae2P \u/:TuS7C-*p}t$eyJ@Ɋ A;8:}D;60)kתU+msŢ0>/Yo*}\c\Cwr! ׆%[ kYʕ10' V/15 ^J?:~֫9cߊu ;#گtYwZxG ܤ#2{:YjfG=iOHvW'TJ:dMOħV#JoZwS_6\V`/!q}>*lm?M2_~1NYƷNWd>6hœ6ݪ1ݏ>Q)1pgJQj6/5^9 c7O,ʱXIH~Hv. Q9xB<g|Jo{-¨H;"tgvR?!|rZy>_{n/Ix=ߟwnN9T{MD>|CM ~8뻽 ::"ÝB5?W_7` ì_`Fn'u+C$). p& 3̴i k,ql ;X֟P-{DΠ퍲qǶp9l2S|ȋW@2#nV\0?<9JA_N2_ s#Ǻ]YL&ڐ9#i7vSuxI0]~* ` !C,,šfK:D"icgQT{sࢰMx8OFѾGoW|)|O@Aҡ;d\SB Sold + Y][77kW|JB5$8Zl1ol Bd4تׅQN[% cio20_2u/Œ]pS3=! ߛ;y|?jRS|y.j O77>O!l1]Z/jܛ4^^=]g|g=nM^y:%]?R-K6n1ߍ,1;Ŝ;f8\r-Bhdr:lkЀ%eG&ײP4?e<*sYb6dn2e@_t!|ѥDfQ"hmWlN3jf#'zM Yoa\YF=`