ࡱ>  Fn6C0nn13ͯJFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(|o<%5" <'୏12sj+ih&:/T?fZ~*crZ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ʿih&:/U?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+>3kWYPնS;4G$a*rUZ~*crZ+ih&:/T?fZ~*crZ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T^${ڴPDGU IvA[%՗J ,2$ *+ih&:/T?fZ~*crZ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/T?fZ~*crJ+ih&:/TSV??f+^M3K%{ǨKE=˿/1b( ( (3ȩ( g_֚6oJ;_4kDD *#aa_X|9\-f ($gO0մ4j"G#W8zAw7@և-]GfKsyW[uu*(^II?']/!WTg*]\PU(V M_Y+ R[^YJa|uc@%mutKsy \yF@c6 ('/&,4Zo o!`B@SQV^K<+x"EQ$k׼qռ9p[0Veht LvڍAYL&"aX⦼O:\J_ K{4|R|!XC2tc3^; vf{a-R'|R)QFЂH^@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@UG6zJυ=Dѷ88}Ⱦ |Awu;kr4[.c/e6<9׫h? h__~#G8hvO~gh'kz[pIў0On %u}3Y{Kq}##48n y}*kk<ɘ dHPk,<1ih4"#iua2Qx ]5VQ^A*= cz2`@hcN-޽t=217F.Ӵ#dd+Ҵ4mj \$P sxP$688# 9z(^.[Q{[ ގNieWW$F8;awl$ԦxU$썜|('Ҁ37.<;)!Lap N0Xçg.sY[ 7-nb768>JGӴ, ?2yQ*sy#z(>#0O j7B0|.Ab+g]Vf02H8!#Es"#Ь-} }7Hr@8gkHFq]M2)*NG wV^2MK$~֥axD_2E5a[%nDO2E5a|Y%w=utR>Ft,A?A )互$so*p9s]pLjIo^m/?6g{6j@#i26g8mxҤo-uiw^lG~<1w']P!V<8?ե픚I;xW,Χ$`B͒q$zw|G1oAm,qg;/ dn=z'`ܞ9u@[@</ݬ! G\zO0iVmF |@q:NoVnHp{~_//5zY?}+K,f"drC1,G[y,|I[);d` ~pZ!nZ%c(H>|L?íK7LLq6."56 >N9z޹oqWP |:‡vbsӞg5|Y&{X]Eqs"IwߺOGIQSihԫO¶~YgGǩf%XzE~ [hKu6' L8ƹl4m+Ose#,Mp $'؁ڀ=.5lEqnͩZ(X9:'\WlzN>ZamC~;A\Y{W!x"=c! HI(5+>D<m#rzd4oKN~˳cck \|Z2n %6*pg>ڗRYuU 1+r5wltIh[o3 5W'-kkOH1BuFU#:A9$ ڽYҭL.-c1=ǽx/ؗEVmKynB+fc^KP>3$RfDF`N3@ZM>/ ~;^Hk{\HPLpI9W4q37&F{2:5WÝ=L]np9ݐy펣2 Ynf[Q<2%il˟L 7qN2ڋk`q'$rȮ^5R[b-| Fz0#ǷJٳa>LG>+>#x.Bt-_TXxV8࣠sk:'ZTVlo +T]xDou])i҆#3rj~$y߉Gc˷Oj8~"xFm=oG,#> cZw ~jAn嵎Y-X{72z9'~BO\4 *յ%j2X2@;dao|: DžC:9DZ >?ElEĜE{5x/͎r3CD†H +ڴVZF@ #.sFZТ(((((((((((((((((((((((cFWW,'T\%5/h"@T1sKÞ&tk7dcmW<Ǟv 89|-W^Q;f/,Ow$9cvԬ>]ŭx G +u{K׎SӖI#c9\dz/U'PxRI6{n9o- A9sV~#0Xm]#}>Va9"` =ҶuVgYфDB ? 3Io lnlq1U#q%XzJ%u]xŷ:Ւ]@GmfȲҷ|Q TӼE]5KoF24xWIwslDZه[5|Dc_ @rg.Y@>4>&x/2]5,ڌ"\S; H=.?>ڤZg8^^Y$@QO@?Yu?G33=lV\]Hg~U|;Sv[V5?u~?OsE.IBGV]vG@4h$p -yAަPs5?gO4+'p?+ԼAq x[Sya1~ȋ}QVwWu < 2_|u'%s8U6/[ O17G<~UQR)Z6YOB6+ #;HMF@dg'ēoViTm%%6߀nA2EQ?SmܺYc. `P_t՟{_^Ul[ޘq,G!N{Tz<k/.]);b7msF68nmuM1q}$ ͖8CKQ,sĒ !" ?ȉ\覬/K4ooȉ\覬/K4oo({^_?|@_,/*k?=Lƽ>mƷD75 [K<,q!v'&y!׾!GܳӊK]wu4}I$i `2ʹ'Gsuֻ{k!s'qx#QԼ#YYG+b>9RO:rv \|Ek(S*~U^'$ @ ?ª|Y%?C}v3"ؕ>T?_v~"?:o'z>&7?f^\C 3b|Űэ}NGP8~FGU UXO*.(ňOW+91~6b0η>n?~Ueo:6?볟+i-!z?ߏ#>'(o2*%7U3Emhꡡ 2qX` y C2"?:%7oᶹ}w <)4v?R'R0͍Ĵn1PMv? IksG:,ѿ_Z_KO<2N>T VfV>kG\gbo/!5}d32}֙Ӯah8#k>j#K9U^6K"noQIWoq!뵣@Pݎƀ9*7 rMěL4R-dXI4,ue7o~t hƝA(+;p?(8)"ȪAV;ҞzPxڦ᫅)1N{v?xt|=tSH#p'f.q]p P}j}?YO|w&K$^[ xn=jf2vٷ1zPHqcwxEfWDq[7v}9>xSy!rVğn }{+ew{o9v?(/A&0py>>"ZkDXL9Ps:qߊ(fhвbevI@Q@y_?L++)gF@EPEPEP|~qkkʾ?ȋca8TTW6]m:T1FZ("z=:hX CPi~4{yg2,=N%Zޢ5ծt[Yo ܦv ]sº'"H}6Be 0Gim3Si]V3٢DI=Ϲ9(B֍ #OdcՉ$5W[/|E?O9*G?R:(?L4ZPZ@vBA>ZrnoM65n ע3m=&m(mxs@:R #Ca!krhb41 *,! ؃֤0 gFsuiV Ձ" Akr!EQ舠 mʹĒ*9*AOEsZ_|/^E6&1*gw_\}&"Cy 'Ͻo@hzTײ^&@\l `zS,=XK3<PF$`qZPK>S{;hma) aX|>}]g ;O$º(c^ ߈nT`c(*FGŇ 6v6 D6ǫֶnp:(((((((((((((((((((((((򿅟=Dѷ ?{a1n+(sXo ;1o I$I'VCO%]t:?.-X}vS6֐]H&9 [3,4It9YvHد\J< zZo5A26=J5@Vhvf,`9) c'֪(6}G}*[X%2'H'. a?dDm9mzP&.5=n >URm2hDjI'Z۱#X3U[^V9F1!sU >E4u'o_i)&ܼPͻ|q`w7<A(Ɵ"x?) +wƟ"x?) (QOW03Ēk h /C<-Bލ14#%Y`ђ (Ƒ HQGT`S袀0xd6[8]BphGM+M7 ѯRy?kQ@ڎj;ݟw&>6@3Em"#=5Eaxa. 2Iڵ{iQ}XGk58AZTPeiO`EGzj!2yÚF(\[Pej;>ߤlSϷG;Nд)&2~Eh@kwڞosuHۯ] A5>28J(:B4gӴ7<HSGӵSkCw l=*k-hK&m?cj]Zowo  Y1-+tyd4e= S1дˉI5nH5EVӠ[{+h-#0?ih k:/V-iOXr?  6C*gl}":(XoiCunܘ@˟_dLJK!%fi}bva((&l{ua3`T(((ʾ?ȋca8T_E*ZZ(%Lg3-2]B$1q_FZkBv8.Вv@⽔=⮝o\iz5P [; I+G5xç^ GNh_ ޤc'WV̨P %րEsxЯ($#dU(1ElYj]Q\ۿݒ n˹içO[%;q 2cЯŨ67>{h;PMEV.9-wR<)iz;mK[)1s<\OG- z}(('WF5#l,JjݜV]׍7cūj-'*N9lz 訪vrʞbJW?Ҳ&񿇡_1 PI$*G\ȪPc܊WoA͝-뵜*}k,;D쐸e?%I_A`(sWAu[LV4G<~5\m[Ś!=~j1d (е}{CmAD$U$;}hMxjkg|#~vJF0d_?d*6m}nXU$rzּo_)^k-;Q:\dPŕHU(x`Ieu b*id,iYsDh jQTl{ ot.2b`VEuCGQ޸o|GѼEh6w-ė}b%;f<W=z =ʹB g,"I!GTxqT;>l6O:6ߴ68#4EfZ曮iqfs)|_Cnss¸UJ {@Uk;kH'x%]$mX{ee&2HncS@(+oWwb?s$Q(>=]CQ(+U@xvҭnCD8@,>QU{-wö#WlڙJ3+@ۏPtαhWUa GS靁<{[y.̓ŏ6+h^w1lYzWtud 1:#aTִ;R-#f.~@V CR!tEK:rǨV]{K o8,B EPEPEPEPEPEPEPEPEPEPEPEPEPEPEP,'T+Y#O q^@s'񍇆~ w}vmtA]k8t);yh8_] (ZCxI U8a|}?FK8/;h&$M Ĝs@W?þa5k{yg*=*ChVvi2/SۭjQ\ k5..G2+7k(((( ?ȉ\覬/K4ooȉ\覬/K4oo梞Ft`2#2@-43[5懮GDa%chr?O8b?ekJ,"xB ˲QX\CzvJƼu+l\QXO[?OZv%G,夓fiQXv>.еcxy[k HIV0Dff dz Z+ m4}| )4ZĶW0Icy ?@ WH P7 鬿? مS?$F>JxI֙dTӢ$1>Sڻ um#NXmzYm Xe@ 'EaxW3hVthڥӵ{ ɂ1ܤ8 sHRϽ:HTopꌳ~XxHo~ KһŭOz+٠1X^(FMMGP( JQڰ{-wö#WlڙJ3+@ۏ`(έm'ZgOKR'NX8HNOj+/Pմ:+hnaG#vcu䟧jQX׾(n%i鞵GV񆁡Cwj: "%N9 cv +/E״ً&+3pA ZWSR&lQEQEQEyWl'V?EK^@yF|?E b_vͶ:|tNN ~4dg&[b?"K ĜrPFq}+()M>E3Esl3F ?1z6Y655NI!o. "vH؎1G= c@ k Q&ʼnW x匧ƿ[W!p;AGsoxPGWxO:M6)YOK P/0[|ZZ̑G$wJֽ >d^6aKinW Hpz9yo ]>i7]iDsyCa7o8jդ%w6,ÑQҽTSCm/"Ĩ1x09߽p6OF^zP|ncVVMP8*qG࿇kͪZw5e {A=F8kֵ|;פ;"%QPƿg"I76W!lbJ?Y`!6ճ++⯋<%UN^]KG+D\[3}kO¾o5֧ȯޣŬ:~N km*GGPqk[;I1\??,_V9[͒+@cAQ}zS}}mKyw*KoR< uy&XyI+ b0ќƅџWH-3QSK"I bwtN>? to_+ ğ_ς//m%܅` d'í6 ?KB3%ݲ]!?4H߮? ˤK|@o\`{=*5>A<,Sº|Ü@>9ޏ[/{u'#u͂4md]Ҁ:h|/' 'dϺ0vQo{zcXvȻ@0zWD-Rלx#Ko {%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@WG6Rg?&?mzr4NM-m3\ƿ= B;[O$ "K )æ@E_]>P4m62'!|xך|MſE!_ߊiV _hx9 X@ːwK#?$ԗþH]裀?2+weK[f69ɔ1G@+g-5 FyM0T- =x爠<~٧~Hf~C}A t|^ZOl˦TIdxnGsu k (ycX س׬ڴZ\Q.W2 ϧ^YcǏB@6l0Nf74Yz^U*CN5o2BU<8=N>^7>Z@ :?İI\#ǀqa׳Wrσo Z((((!ej?$F>J!ej?$F>JhI4tHNfSxF26܌^'66iW*vTƀ8:h.Ym%rP P3O'm.lt̒Fu1lc=k>g? jJ߁Z]s]{hF+7{Gj_(%Һ4{O֬ϟֿ?|rσo Tg kiTybssy+%֧h8.&Nv^q^^/QX*1Dz~<-xU5+y8I}`p1ֹ+rq]<-ky{1S.P5n-nvz{D6q^܎Op}4|*UK%TchqPi7I^0_9W%]$\U/K4ooǺ=ZCջKN?A^ëi6ͼ6hB$̌2^[;J+յ]NE5 V]vր8>+º?QFPt/nV>x(x?êH/{qJ<W^9֡Ŝ_2{(7z~k༶;#xGSx)m.-#.T?Z~$N׃Hk[ҳI _)a3ߞ_Zi$ny=Ż{{O(.,h(5UK-0_/ƛޯMo׿*7|G>0BkH|ipIp7+% ]VћG5NG~3i.g{)hlb uIhFdK'I1b{\/Ży|)>4ٗ;xdʆһ_:zDl gcF~9ޏ[/{u'#u1Xbhu~t|'^OkO4t`$slKEi'ܵ{h"x+DO2E-yXGl,cd] ~o_W^k(+#ï zy_?L(((("N?-zyWl'V J(C/Ηi& ^Z~dvm8 ]5M:щU@:Wm4Ϸqu[JM @ھaڕZ0sGB=kB4 jK /mDq] v A=6:\ ^Nۥ`;(Eq[{0kwֱfSncx@kn]n j#sF4BUn@(i%dh.6]B~՛9K..QBu 8+9]_pkZ9gյH~"t휖vd,N{1Mo+45쐒-$pBsֺJ(?W52];R[YG`i^?l_:<⻴I/Ѓ]}fB73BdmW YX)qcV5b1E©{I5Q@9,oox\ݏOTʮQ@V WPkwM _+s޺x twUI6oS@zΒŌREdyu#eѱǦ r~SxWRv0FS$,AP%XTՅՎd݆@A$=qVdW@^lE/S( 6eVVP$6ЮԍK >_>1HExT;F?:j(]r[.C?xe8cӵQǀds}k&&!pyQ@LzΆ)č"!?Â{3žpxWT6IIo3DЊ먠wz4gGg+HP RV;G;{PIe Ŧ} V@Dt y$ld`KOG.QiA;nŏλ(H.oP.-<+s#c`NFYf<Gֵ|;/Zi\T;3o1zVh6vMoqƱk?8Ƹ;tMJlcMI>MhYROI G:+§0FQ@2ޱv/n/*S,wKm%XY10\Ļ wƊi4K^j7:ۨW| T:>?Y}OBotYnr~#?\gz}xkVkٯuMHo/2:W9*x OVճlO2DNN?wÜ]]iBL`/4csh3\~x6yJյ]m2+&q#cvP⏇>.To}DpHdy9'< "{}?JEQEQEQEQEaDO2E5a|Y%nxD_2E5a[%w5񴰺$ $`n_qGh;EzKVy  0+}s|OT~rJu_]x?siz$"{=+9k M~#-`> Aqշ{c%݉GGތǶjg᭏f]LGĠdsl>_Zyj2ۄ8iX~r|%J^+;t'g>/Tuo|1"Ǔ$+2r_؎ ;c :$M7h.'I1#+$Ϋ]rFQ'j(@os4l ѵ*Yh@xoG_Qũ[$Ҕ?$@z _ϣjwWs${' |;P6 ޚX' wtP |4׵}f\MS#-YpV:kj y.ݬ(4Pg3뫏 jϦEr䳚>vzRz ӳ#\]oRQԣR*HFܜ]xV2Pu#q U,PB{A}F]. ZXcbIL@|Vh ,4?MkZI C6 <Ԁxv(+#ï zy_?H(h((=(= s^74r?>[heXu­N9H?t]7<,ڍ)-ܳ$ Tn9'vN6c3sC^BMWU*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2ЧneOFY)/gk?zߌ)ۿSѿ?VxvKǨY)/w/ z7_?G_o~U*R?VxvKǨBW=gk?zU*R?~2Ч]ѿigZMy"ե9'.Dcn֭¬WgVNv}Ѧen%<>iyV{V_o~*N)$*9FWR0AlGcQ| l_+kt$P"*pI׾(\^x_F&WmU>O?~*\{9ɿnpJ Agk?zU*R?~2ЧneOF¬WgQ _S_=G_o~ߌ)_6(.Q||1N,A9<s,n\Oӓ;=xuuwRPB䑏 rOrVOf"{y^Ao-Yv8}(;_Ox<7g.r\g9S n|-jo|/B$!@%>3ּI[H{PO!Wn P3ڞ{ xMX]qN8 NG1SP^&o!SK[tQS f`x=@+ֽ^9AE?^@_-z}rY{tmnѱW J;Cch6s̷71@4ұgwI$Mp~+?[5Q }U_"4e3\"=Gn}hh:|m=gO:WDq!ʫf gSٵx4]>%g=Vs**Kǩx>1J<,ֶ~IC&vy`wAGsUѧ9M luTw8ϭ?xt;5#s}7q?$PC@cyco{lญe9Vά@8>DڏnΙ';M9``W|P/|٦Y䷻,吃"1=;q6X"Yn&U?ӡ2kοh? h__'y%]_O ;-f'd>\FH瑑gŬRD%}4Ez 5ttǹhX>ұ }MquOz^]I4|J1+*WCIu2tRihzI??\g"Ʃ_@Z( ( ( ( ( ( ( ( ($l{ua3`T(((ʾ?ȋca8T_E*ZZ(nn5 -a4឴15wk OoW[#o'z.5_kheKf؋b0?$F>J,L/x{L%|-,E1:y7;0ڠe͌xeӾ?˩] DkTS D~AE?^^V,GIY"S u^ Rvۭy5o/aq5_3zWlC{3 鸏ڰj#],r\%nYirFǽTK˿mSr񎫒G)f}P&Ze *EQ X?ci"mqU>&ZK q2*c7͏wI#o;NGaI;v hG\ m$Ei|$N4t$m'+0;z 2z =jVUS\,$Qf` 6}LQn8\˂(+F@?=|5:t{*-@$e{X Cc6zƘ1#4 iles[(R'k[|9l' %Ԍu?+mtKs%L +Xv q &O&P[Dq1ל|kdy$1yq`{r>&?De! 2=F+|S:دYNqƀ748@Ӣ@ѬxQjhZ\Zܺv0.*l{;.>WŖǠ.m.,|d0:W~"^ΙZ5ʛ ۑ(#;C@x)k ml+TZI턌u88ݎ3[׺d:}ˉpcc9'JehژDVҺbVU sdw'=-r2 yob q@@84w-"w|c]ЦHw7DH| >=sī50{,OHZL4^= m$E{31@$p1^Xm {fiXp1t<J}ږEq J t!r}x υ߉`6WL`[GOAh?^iiMiG?n~ʼֱ]AiMwo44Q8f>l}ǚ0`v%^kY. L{+zhu==Wڥţsy|qq4[Y̨[c:g-b4K{CP젶}ޙ (sne?b}R3ƬJ#2#Lu=q_E** ğK/nDW[cPQzeuQ93c,2@^7>[]@ƛ;]/c"9 @&o6݉S0>jDv E^i< knK? g J5ȐyA{`3^/-~s@I/+yd5źswG WmS$3I Ux9H㎫bM4FoeXI$vw|ĶE-nW1 ;ev%QAA(((((((((((((((+Y#O q^^WG6R oo$2,WF}r1VOC-72xw#ҵ.Fӥw P; z đKPwJS\ɩ@uLYvČcw\g@;G{y_qz.g;"yR@#䲒7u}1ּ{g,^ Zq府Jx^j֩K z818oBZ8ĿkѮ>}Ğ"lB0=z^O\5}kLNBs@FG~Hr:m`1H{t to ڛ}&-^Cy?lEQEQEQEQEQEaDO2E5a|Y%nDO2E5a|Y%w44FZӚ `rQtqpx^!߅Sa_^x>s²Ysu"x&]OC"x捖aC `vwt]RK{m<@9rsМsҀ3_pPayt'n=/ BZpu'u]_jQcs;wcB3N ㆻk֙{ Ѷցà, Ҁ= q h_MWaxmOK O*X]>A A#V? $kgXҹe,tQlcD{2(,Y$Ҋ8hOit^[K]>uLܒ8؇Tu' s@ \Oi_t]F-5+1vw6B$wRNekKy~ q|X 1E[)P|1~þoGrȑ6~8ol t :m熵7D@ؼ(Tj}41N((((((((&l{ua3`T(((ʾ?ȋca8T_F*Z퇌+T>=~¿3hG&Fݠ/M<+C6Ti_o izשcj.۬:B<,S޲?4 7Q fѿ>/*7h/M<+C6Ti_o ҫZ[@]q}@~W&F?4 7PaAVg>]B5'UҰ4 7Q fѿ>/*4-4>i$CU r=*ai_oO ͣ|_UnFHӵE XZ݁\BȪxWm¿3h@ZB1#@?SV&F?4 7P fѿ>/*M<+C6TAX_xWm¿3h@/tM+P',fMnˎ$dUઊTObi_oO ͣ|_UhvA}cmuO>%}wS,v2FH YxWm¿3h@°1/ U*j¿3hG&F=*a"G}got qYxWm¿3h@``ҝX_xWm¿3h@E41OG4k"7Ue5 fѿ>/*M<+C6TeinEcB]=+ O ͣ|_UxWmB=/ObKXTHV&#(ea"?4 7Q fѿ>/*4l <7l탒XAy xmAG訠VG&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_o¸F>cFWW|7kx{bCtMr2c$y_xWmtV(I#P7VG&F?4 7P;ϵbXǞ-IV&F?4 7PTo;SfݯgdxWm¿3h@VOmSB X_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7PDO2E5a|Y%IntgOH6gc$X |OitkwL/*M<+C6TP\Au叺ȡk'O ͣ|_UxWmŏt=2_2F dBq5X_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnX_xWm¿3h@V&F?4 7P fѿ>/*M<+C6TEai_oO ͣ|_UnוScO Fmξ k:^fvwVufeN:ʀ=((Ҋ(~xy?߬O"N?-zp @/?suv.THp&8SM ɹjI-A 3F;WO,I4k՝q @/IQD>$:쵭+RV*  = y'|)0ݾH%O=&?^ޚVJ&};H?!~zVOqkZZ,@'`9J>8Ə{Kʒ3?Y[RB1$1oLUSM߂D-Rp @/?suےI$I=^]5gIiki&1zrFO_S@) &?O]wP ɹ?O_7?]Tom;KPu Be?W?stŸ'n.{/!Yh ) pڔ।'l}=Swc@_7?\މ~!׵ H,K CN+@bzߧf>Iiki&1zrFO_S@) &?O]wqַ+mqrv).Q\s@) &?O]vX# iC hѝv zO_7?G) &먽t:hm-8QNM^R w#?su|9msjZY÷͓7-s+5`Ys>UE:q &K}@xZ:]\v ^O[h? CFTm%UЙS/gah6?Coy$2VW HM|9y4kq _%}L{~o6-^X](s^^E?8_כPPK ɹ?O_7?]Ÿ'n.SMqEp @/?suQ@?) &?O]wP ɹ?O_7?]Ÿ'n.TMqEx?<k~24:Mڧ"ykPFUxU]) &g?&?mzp< @/} 5f:"Y,h7EP5x}?6 ]: XY_ }0s(^hI}M[Lc_RQ|2j\m7G{3!m)r>aϨ5#7\FU"_m|1kvвiGwoʻ )\"*: n돟HO, XŦ={x_׊oŏ".1Cpѥ'Vg8T> }r=+|5?,f|V{ 94ON4p{rxᗉRM/Iᵛ"Nj>o;mB[Kce+$n2+yŨ󭙇ލST  MV ;'n\rx>kӏC^jjN~ᢑY+!1>##Ct//x0i7bOEtg*6sN|FǮ{T 3dW4%ol j( knmềฅ% 0 cΧjV:d76dfS_ @/2%ov}KiMRJT?-h?O] @/O_7?G) &븢8SM ɹ(?stŸ'n.(?O] @/+^=fF-g'L͵ y|' LԵM(Oy?IWv%uzG?D.SV%7PŸ'n.?suڀ<_wI7KŬI,E^`jxrG[S{PeBsT4j_WPfѥ<#p{P-^{emgw Mo2xrwIs[FayE]OlvRF##F+P~ 7FP S~Poq]tI<7 ȶ[Lw/^]AWD`=hXi_DD7?) ċQB|Ozj&iol^Ay=]I^mwg#XX}_f]˟t @/?suQ@?) &?O]wP ɹ?O_7?]Ÿ'n.SMqEp @/?suQ@?) &?O]wP ɹ?O_7?]n._Go| {vLc3 ;w5{ua3`T(((ʾ?ȋca8T_E*ZZ+66b5@.FःQ[UȽפ&'SgwqM (F O]>]&xVq3k ۊqf|r訪֭mGzMD^ <g'Ӑ 7Xh=ìA|B|eSڽ"cHD{a4`[KWtWe敢xmnQKr~OKbӿk\SAD{'?$QAk*MjAǸx;Q/iWa)gI>b/A^NO9f$?ͪ$"[-m̸w_`֢/̖܆,Y؍А^"} ,m4qebNcn9I>V/GfixA,vX#-$xJ[IhDG&8T/=j m$EK4O8QF:NaQ~OP׍ό?35{%s=#xSڜ*pGncG|r 7i=y"Esg+??j|? zZ]]]I!q.O@~OFE+D)|7cЌ5|8"ԾhsۼTQAO<ƅRM$[Nou7c?w  K@OqxvmTcI@'˷|~J[xi]$h`Z>1]c㏅-aBkLUٗ'ߴ_AvѴi|t.ז5qZVcvfCk2,2ǩ^^7/+yd4|coZԊtOCTt =)֟xEc-+(TT/A-g/&{ƀ·,g񞷙u=H\%te '"NF,}ՍƓj%Nwv :Ikgg8y_ÛV;Csqr!K TK2ǩz~_{! >"|1N-ge0% k֋k*=6b1w'9^O_I[|byʽJSa}<9}u/4hw}Hۼ+y_v+|\2Iܑvc&i68NkVa g*>$dJ?TW<_@'~xzZf^A$gg H,Ǩ঩>8rb{Tf9;@V~}{EO% y/o''=RK5aK5a ?OtWJx|={הʺZx[;[hm9Ee\Lr+qEı$7sٗ؎ݰ~W|+$us Gģ:F*cw,~1m7 lj ^H=? x3>g,a31$I$X$s\g=3׆[fadۢ_ty' 7 ?R3M76MrO~o@xݻ+ҺhVT2@dc)X.|^ٜ\Ai+m@7_h^5>Irk{d-}J`Lu sr^XxZIeed~Ej=ʀ2^i¨=+?S_E'_/$dLL G?*;{HneY`C"R8# QU㻷khFbg >#bYx*?E_ňfcËi5%{~OY$&LXe8O/.C!1kNF_d ݬ2YVe~ұ kT5>"].B-$ǝnl  2}hoLU=ۉ+&e@ מ~,j?CߊXX:>i~1oþ `[!v>aOӂ(C g:25-f 퓲*Te~?KeHs!F@' QX{Zo[@ % p۱퐙R&LvƪNHf@Q@Q@Q@Q@Q@Q@y_?L++)gF@EPEPEP|~qkkʾ?ȋca8TTs—(r!FxĞOmFq'HES?7SuVwOKVʞP<şOeuqG d0FF6/' c8J%zդOIn=tPx'ۘ|A ^7 .TAp~cץ_׃ ;j+ [# sJ(ZMZw^%IOPݗl[GP0F:)*r sb\GOxӆ3ei REzu־#Ƃ챺F"*FN1L⹯ x?:7^&]6&>_٠0C*>^s7@g|;|=mGQumEtilpğr*׎~j>9n5-mmٚ(,F{y<TP@?;?tG[n1g8Sj1k%FY, m$Hp~cB IbY` Ite#¦8׃..a֗;3 dUn0_ ϩ[y,I6V"W$^]ey'O_qZKm[M^[=o xcgZF4'OL#M,ȋSb,|=izYH%GFءx g@{£I/u{_\ EqT"x$C+͆G8gһ:(tAc9/#F Ye.zVU|cye$]^oY}8*̬@ĹtzF9oxfźBjϴ~df*;@O𦁨gi^G6$߼;lvjx^#c4?)&?1[1ơqafdg*_@ꨠ[|7شqRq8`$8ڰ_  zΒi!V` KGJj(ϼkz͝Cihf~b"xkti+T 4#IErV^uY)5fc,Lac5xK~1M;Il*XwǯQ@e?íf= Y4;.Zi]t9| ?<;^-G<`یgۡ]ho Ŝ#E݌Y,2nG=+Dsh12x 7ɧY1.G+Ѩ /cO^&h ' ~k+DҼ[G3Q|nnHDt28Z쨠gM'QZX#Ϲ(b4^vIɬ:EyE25#O, ߽WQ@zƙj|Z`O8"hDVx\Au5Qqi/ϸ5r:|sCƖٿvBa2HYsF@1i< S?]O αGFn]0]xQQ,c 8@NIɔOMNE,[sAv?h@Q@Q@Q@Q@Q@Q@~4? MX_hG[4? MXG@#}8KEpZWtMWUtnH.o̶eg,~`F{z?|Ae.-̾\[,"qԚ ?xrº,zVF 2I4zԟV+Sڌ7zCPibrO2zGx8Om 6?/#Ui1NX\??SW@?c{cbuʲ#ӵy/55Om\Gî=@}H6`01^xjq5?̫[Z?`ҧ{n&ԥ]\_*/*uEQEq6wgO|nlxƊyxJJTrB%I\ƤѴ70ҽۼF9efsːt<3@]~{'=9R .̷wRV=[Ԣ`'qn@Q@Q@Q@Q@Q@Q@Q@y_?L+)GF@EPEPAh<ȌwWyaPͲNd9g<=Gף?EK^@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧPneOFBWתQ@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧPneOFBWת^+gh.P;hl",ﴙ<5c 2W$n'; 9`PneOFBWתQ@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧPneOFBWתQ@W=w/ z7_?^*H zTV]so"92ߌ)ۿSѿJ(~2ЧneOF(+BW=S9q޼YW' G)K!f]XLf=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧPneOFBWתQ@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2Чg7O,WkZwZ\M ɖryϨ==w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧqWwO / i!BOKW׺w};@'(neOFBWC-iڬphq*bN[+xneOFBWתQ@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2Ч};z]ŽklA+y?|W8}G:M,.{{UU '=(_o~ߌ)wz톟zt+s\0e$&r@@u"[3˿$ˬ)8Cc[4[w/ z7_?G_o~E嶮3ӥL@`s*Ҧ/m/Ʀ[E11BW=RkqkI623Z6=>@qSxÑ*+c9Ќڀ9Oߌ)ۿSѿޑSVSG-M2$v X׼jZ}iM+:(BW-y(|xľ*C,.RW"|)2n~2Ч|,'T+BW=T9uIk/Cwk^lQ'7=y ?ۿSѿ?~2Ч/uK )ZO-RU>ިu|B"MFh|h;N {= w/ z7_?G_o~OF..w/ol !'水-#)MOZ  D=79>{ ۿSѿ?~2Чx[6/6%eS:(_ր9ߌ)ۿSѿWW%¾#YO)Q9dr q^@W=w/ z7_?^24,0 :+2?x>Ŏay^ty ,)=w/ z7_?^Y\BVT/:F4Qjy__o~ߌ)zۿSѿ?~2ЧPneOFBWתQ@3 gľc|3brıʥ2s@k3Ļoixe֖g,vs0ŇAҽwƟ"x?) (w/ z7_?G_o~R4ۿSѿ?~2ЧcP⏈xGHMyu ,ʩ?wz[47@!+o0Cu'{P5=w/ z7_?]'WQ$:910\s|P7Gymng 5t 2##ɠ ߌ)ۿSѿÞ*ڻuuq[5ZX_⶿lg H*h_o~ߌ)z&h:\01ɯ8uH?d@;`9hۿSѿ?~2Чҟ].W-ȸR}11\5oмKvI6%.I7w/ z7_?G_o~RneOFBWѩEwu-BFfT&fNdcz/O["z9*oZMnS6[b&q۶s_ۿSѿ?~2ЧPneOFBWתQ@W=w/ z7_?^Ey__o~ߌ)zۿSѿ?~2ЧPneOFBWתQ@W=w/ z7_?^EyWOo~jŷ>O&ze/~ǶC#oG3WWS=R(((*"-Rתו|~qkh.EQGndMܶn&*g(g$ʀ6!ռC#R--Chf;3Ҩ'{͋ 88=x=GE\4=QFښBaCm?4Q\jDJ\`@08%3_t5U;$Mfx_kptMݳ]3B|W5&u_2d1Cq,?u/qhio<SnqZڧn|=\ek}RI'hyHaDl;qE)li uwVg/o''/c4Goq,"lqQwWPXwu*(^I$W?OVlpPPƕk~*}GEوW[V]2ğJkSc%Z #*s;cotǯ3/q iZxo|q+#1cķ>n5HtXTġqy?m'ƚ׉<9kuO{*I1rp ~$),P)q{:LYU)#,ѿ*x3k xMY]c`#j|CNiVbmƥI,ps׿Z81mϪhV6k5 $8VEsM4(Ե7aQv qޣյo6 KiAopY+Ӄ\ 뗗:_<4uM3v#Qd?FO*>-Xk 0E#l$(M[Y</x+ICs>6{=8%δТ,΀,3Z1{?]oC-R[xCxWG&uq>JGAɪ/|5#Hג{}Qp^ڣlj2֍q^w%Dž1yo yKSoh$\tE{W*Y?&lck I/wN{h5]RE5Bo&KH1IXu,,$HaWYJ\{3-u Y! 5@('6Zoܤgr7OF^aize啌\ݶp^M",YR6'}I6{d7^K-=5XbAYX xjP,ob3vfa~Eq IoKBMMJx ;`cvAѻr+Ҩ= p+z_(=Fh+@W}*c#3^77J(wkDKc%gn u 1S|!$.ѳ+?S,?'5? Hð/-ʫeߺ8c:ci5&;hV ǫ`rܜ+G׼2|}Ki}q43!* %.Cs}v. j= N+D?2E-`|>,S[[OmƄnJH 9lxG,۬_-C(:y>>7*ԿhM}l?6u".F $1%υ 84H/V08WNG>&6?fZ'-n=" eBI<;xNN=]dăAjzfHlqzݧ2XhROmN\F=vravZ'&rr z)kxZi)7MP,Wg\E1ߤq;,R }U?E.SW3_IvC5xD_2E5s?y3@K7`źOt׺n_v^C= C\޵O M0"G.}wI3~hzn-qNn.nm|9=Azk?Vq# R$Y c8Y3M[ow_:f"Ԟ9vvʸLm8Nx_O˚O7F⇋Pt"1W?^zW|3k>._QItI$^)?f|Y%iB{הʳ>,ѿ;( }J0DKf@?\} )u xx 2y}ҵĖ3k$K8+2z3rk]Om+}Ğ"lB0=z@`~ u;=r4|XU )\_A66IKuc~K}Y'_Pwv^X&xxb$nRzc@^ kK?녷=zOw3wj:Goc+ݝ8ygů,>P=R Z(((!ej?$F>J!ej?$F>Jh=(= |V־|Qy7Hd 1y pl.6]IN׎g𭻫;kNh.uGx~OxVy Cۀ9da܊-> kp@738?' {ƲÅH:ee_{hX u[(UQ^z<a{7h`ǟl{=X0#^-?h]>KQl<)T taڨ&6?fK*&{©|Y%w4QEQEQEQEQEQEQE{ua3`T+#ï zQ@Q@Q@UD[ U*"-RתzW)óx7} Xy2?@+⮛q^(inl<,+2F1}k*~:4PHee;se(b55TANuWFWPF# O~]kl)oATShC.tA~Ecocq"e=iw4@O5~<3c^\GW&CXyp}+zΘј\juA fy1A0z⹏׺)y$PWYZt~U甂0oNfov3O?yoZGۥ*۟0՛(xRK{جmRy7ՀɠX]VQIuI,(ca<{Oi< wkTIo,rQ ($tCߚ(=(Džl1b Fx+8*j_2 ȹnc-)y ^5F(]BEXx Q ~(gÝFKby`Xn~@H_LUoڥ9ul&i,; r}kh'i-S\Gq1Oméj< KTw1k=*啮91u${jkz- d4KBhm~YΛ-+ӌQ/wmIz6$Zu d|RӯW pJ{Ann *`{ǀSc1=ONp@xWVLPx P9G\x#XDX`(=FM H_K=✋ n]xVCλ^2y :Ѽ]e\_ٻ[8uTP^3K~"{IdY}>bh$:[/ j~qsu6‡lJPqө a-τM+pE<0TW[i6vbLQĪz*h HQW0(%hMCBQ!<r:3]=kNy%m*-H7K sh;7YM&3 7Ǚ]@CCkk^Rѐ| [^L(u*!;|Y@~xpe ǮkoFzvŴ YjN;z`6=";r70'˛,if<GԚkJo sGH8}()Y'OL_k6Qvx#Y&$zK[r&\Bs]et ߶qVC&6!XZ_>2}2'L OA{jX6TWeq:tKMo ŨРw33 O5&X|9uc&xnBT(zgR4O\ "(EP8z€@j6n oEo4ttڝ9ul&i,; r}k'i~bL s/wt^Ep*|9H|7-ȡVaa(1=Wľ/]/❕U(;9$|pB uo:_ZNFrn"-g4 @no H\kӴOĖΑ`Z{"!tJeם'vO|C`˟ie7kl23]Y#K31I'v5m+ZYM˂*wŞ9|#Te۲L#txAV^Kg$$;і {`64.yrǑQPfӭ-9? Tנ[:ߋky&XaB,1mH<_is!w@ E GptWR0 #|Qh E4B=ЬR3*=sG.=QWf}K{nj--"nX+5 I^R*?$F>JOqxKYl5xQ#Ү@f[>?LLAZi6+uy{!yo_מ h5 qڀ298AW<'OL-VRB6OՎ:w#߭z9To;Sfݯgd xf-fVX?$U2MZ/ScM#zC#-+nOp8\c&XiZnM?OO ?@*yF ?R-akd J @9_֝Exǃϡdu9;A|0񵟈3giqwխSʖqp:g54PΟu3Wִt./4A$`dpN+tkL-Λ}otR+?Ң (#T&WXA,p'|CZU #P(@++_GQ@njymc CZQ@Q@Q@Q@~4? MX_hG[4? MX_hG@x&]OC"x捖aC `vwt]RK{m<@9rsМsҺUch1nK2bNNG$[] Ik]. #t[13@ xo×WڌmhñЌӂ߮难E^tm5p 7#(:? $kgXҹe,tQlcD{2+Ԩ^]$D ĬNfU>=/n<?[˧rVE%s IHXό. xzlr䖔AȮ@t:Er#+N9?vmZKWʋ>ע7lxd;$G'U! օ՝]AH6ruaA⥊(b8Gp6װ X1a#cdfP LGאAF ( ( ( ( ( ( ( =:ѰWWS=R(((*"-Rתו|~qkh(((((pop7 !\ڭQ@凁;iw%aIaCs]`s((((((((((((((((((((((( zc}B s.xÌY ń=G*uܿN8(qKEQEQEQEQEQEQE ?{a1n++cFWPE#ga2qN+<_GTV %'j'cpG1 Ez slj8.GCC^#/c<Z]\nnԖEduEba%֝[߈cg'0g mU7^{ –LOq8?)<=*'=qҸM_!|Oa?`}@S;/$f;*]59壆S"\BCJϯk:0$czxRO+K-IA?{-īi$ӯ呅ϛ/3g$zuր="J^7. xGc@TjR1$7 +<*IA9ҳӵh7}'HI}sǸS](*AE<޶-~m6npqT^Ҭu4д{[W7gT=pN;d}hxy%HAw`G5ZO!YxcMDL16pO'q4PzW?Ky6:trȴ/Ww<"@q@ǏqIE<3ftu_2VfLZ3SY+"8GC@^0'V۫G,30uZ.u}O+y{z{8@QEQEQEQEQEQEQE{ua3`T+#ï zQ@Q@Q@UD[ U*"-RתEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP,'T+Y#O q^@x/!- Kֽ\%k@Y:DS#kw )S}Xc?>χ}{u&{{d xVYTL`teq׌M/aYqr#x?FO[(%7W7b0zۿ]MOúf$XYWN㜜mᾕ|@MS7l߼geP+ HnB}cmUTS$Y>:{$A(f|`Yi={הʀ:6ElnPpr23^7vi @rG_fӿݿ*vp}5PfU]/$5j"\ '{AnW1ܑ= _fYǔ^&#gT,L(Klt[tHGO4|Fwn,a ȘOlO:moŰŭu+YȎa'%0z0bOҹxþ(uTӑWgr KYZT!o 1ra<V{[v sgFz|ֺ='Dt;coYlw>іXh/KVQjVw V扥â:dv@`ǓY:π9 ys2}׳PWmEڋxvE$>wi8 $a/_¼WMڇol{tcċn^}clmkBsn$ [+m][irqºPL>^)  =* V}FmsvF俟b1;56 m"< ɚ<EPEPEPEP?D.SV%7V?D.SV%7PsEv4H\1{w:!<''* <K.z{3h;>^)  =+K;d#3" ,#~,ē]0g2jp(#SH W7$^4ci"Qy61'tOt.mDBvYr+f InY`JI(^(~d7ݞ,S=x5W-|>ׇI\W|tܻ؂+gOUIfl?|uh{4r+E%OBf~v#^< q NQ\6oW<޻:5Pm=omn%S"]M m3!Q#9ؓ\A'l"T)q :}NKo-4gz~xvnho&7O@@}550n,Nd##;J>45bOȉ[襮cK|7F`(';5+DO2E-nEQEQEQEQEQEQEWSR&lQEQEQA@UD[ U++;paC pC 923E'(? g?=W‚5!z+A gE_k?/7@Ey_(/ CY?AxWQ^W ¿_nP^tW‚5!z+A gE_k?/7@Ey_(/ CY?AxWQ^W ¿_nP^cE(#Wn5N'F$K|j ¿}|z+A gE_k?/7@Ey_(/ CY?AxWQ^W ¿_nP^tW‚5!z+A gE_k?/7@Ey_(/ CY?AxWQ^W ¿_nP^tW‚5!z_+?\nu>ը+_k?/7G(/ CYJ+AxW ¿_n=RP^t‚5T!+A gE(+_k?/7G(/ CYJ+AxW[' 6*&hVo`YmRx[LDu?(/ CYJ+AxW ¿_n=RP^t‚5T!+A gE(*_k?/7G(? CYZ+$(c.%xTRӡä9_T=P^gE/ЙuJ!I@?z6_<Az9.u!_+A gE(*_k?/7G(/ CYZ+AxW ¿_n=RP^t‚5T!+A gE(+_k?/7G(/ CYJ+AxW^ơE~cFWWξ eľ*nuI@ȁo~rPMv+A gEh+_k?/7M7Bk d<@ˠVz׀ ,A}rќ:ye>Mu\;X ;NB((*_k?/7Uo~ N}Z]@1^=gg_?J?~Y"Tՙ`"H<8 (֨+__nObꚲo`!zX!+A gE(*_k?/7G(? CYZ+ʿAW ¿_n=VP~tƒ5U!+A gEh+_k?/7G(/ CYJ+AxW ¿_n=RP^t‚5Ɵ"x?) +/ >u+{YxIc*YVg>h(fqqnX%Pmc14W‚5_k?/7@Ey4#mK>Gq󎠲/}I k^C W#Rɨ7Ȟ#$/~P~tWƒ5!zyW(? um}SU1դ@tvVZso&7_Hb=Ā7`&jHTVYG  y}?1@Rו‚5!z+??ۿR$( ]z5^6FEyo(/ CY?AxWkgZѳ^1<ͼ1Zpġ4\*(:`+> x'N{VL]Bm?ЬzΧq \!+A gE(+_k?/7G(/ CYJ+AxW ¿_n=RP^t‚5T!+A gE(+_k?/7G(/ CYJ+AxW ¿_n=R&l+?/#MT3@,˔16`EQEQE_E*ZZ"N?-zQY~ ֭|9jymTus($YEujڍbQJdd(,G,H8<s>v3| \[=Y1H#=V?qi2ȱ^gB:dpx5SPntM?=ʋ0ȩk/ ʹwUqio5m$3)I;T0=+Σ95>8$aH<.@0j^&4/GA@н—h8qrzzZs )wרMpT7٠^$mPYEyώcBg=S[%,3*gSg9qǥixsz oirZZLLS i#GSB9C@k (/an?y x|g[7ZΗ$gЂNy\c==4mz\:bY]8͏`[P}7U# qYHH'nH88zu߄f,]EeǒKr:p1@|xN\8 89T~?޼W-Eݽ2=2yHkVaMW($nS^W 󠴰h ČI=+V6Ŷvڭu|n0e p`29<\;cNuj j2aY @Ұ$|E?>> qpع tLƻ> uY;y"2ZpwI}z1߬a}CL7pd'Ӑʹ: CAXE& |ρaZgv~!wPܵZy'LڠI2 q:mZ2Vs隤ŭ>2 K<Λ=Fah<%ɵ9͗pGYOE >[?jW|s.K)۱uB3{ր:2U~%:O [Guy,6\\<1yq:WS^=}>Mzl9# ǿZo%Ÿ=|MyJOVU9"ZM~lpy9NkoH-sK$\Es@tPzWP~[yckx6r88ڊkЎKSeiVd~F\7}kimWj<>lDH\)8eux5OCX&f D/#1JǷ^o }Wŗ_ڣNFpOLe0p5~x^ C#[cs.ltVΊ|AqψwLb?i{i6q.B 9U5o|;.,ufQSS0yA hu]Om!vbsՠW>!M)nGSJ^G^aJv#Z󏌿4x$]hԼ157}l&nmDRVd 3ui:nX\As^wrO"ȃ$EJ{*O+|UHoǐ~Ʒ fḗƺ-b?1sm [ A' nz}N4Y8)QFUl_14arO#P2ĥ73ѣM B8 s gA]M7z,/-7H*MȬ8?:y^7$ү滕/VtNrN|cؚ_mT8"E+mt[sǂz@}?X4=wWme'z9v}*i}^𦱭͇[wgyϧo3uhf%-AC§}E9mwuw iu X۱8=a|&ӯ4X~֐iaHo.L~g'dMon_dފO'@u&-߈͟e~O|9Ajv\Ĭ@ o_V5?5u_'I0d_zㆇiΗ6c\C' Ebz $bNk)L"\A:Դ"焿kׯ[2٧֬c@z:?J x\ćV>fe<2)`3 sx8UxG4|[XthgYTn{t^@ sK2=~(x{KYkkyh]KLHWƼ o(z{-l$H\ !ޕ (tq}Dc pOnӬ˂5E U((( /ȋ\覬?Ktooȉ\覬/K4ooҊC@9C_FDn [7'cȻA,~v?@+|j7톛vlWx& ${WN>aOL4fir$ ɒ9{5|V1x._럻Ϲ|5VLVwy._<~y(iFKCk_HP"1Vw4qfTs8N:Wп넿hk:r['=fYj}B vDD.A'J|x2O~1Ğ9[+{;,W;?)>6e<;.*y1<os>Kߙk+) ~Μ'$Pgt8+f>R]{mek(`H(6a UB*2p 46o\rz?1^zqPOq"F#Pc*(%8oKއym3I7=qQy٥N]BR2ZC;Ss*mZzw7Sf '2?5:=vI%ODX)nWI w?+Cl2*0a0? #ҪjWeY *l {AbuK/!^ڭ]N="@12z{i7|kjZ]޾c)S>,qY@-쉾lqy]0@NPEPEPEPEPEPEPWSV&lQEQEQEyWl'V?EK^@yqPnbOzEbxwDN+pr@'h6xKt]rrj[gZ5WFgp97ˀ@wc^]k߈?ßj0p@NWhk:cc*c̑=G  Df<FnSc gwo|;d p<Wpη{{WE,a`nd$`d(85_7"O4eO39qf᮸mtR?gPjw+o> $S~u.itgq, %\MH5:E_Yiz4nQ 3#h,2=;tg2d:u,X.m,8chx NIE`yK(4^P3{#V(TRp9ϵv?xLtޕOVi %kkhdBbgjയ|@Ybk1B>2G]ƅϦٱVp[sP=1!x)25|Xї|ԁτzƝxӧ{o<_4[g8s]5/mY\hH^]DcvU9g @9 @ f'j Ν;oeHπ_"NOz,t-I¾TۢWnя-e%kxvWm+\[pYBz|z 6_"~:}??6?CƁoEZ%;ªĀ_893Zbk@t۫>)/!i9*ȹqIx]KOi.F$P zPBɠ 6^Dž%|Nޅ  ׭#+e9V=+WƷ:e:&pp7׊=/-3^PU8$@ѽC$n< ㇇ {YRtPLd0:ץhZ-dVm]bFX8CFCH~`%ոwāӵI7Zy*ũ h.O;-ܜקPzy ]xI465gY"FUfߎ>8>5GYAm][k^9xBT@(" ?Y7мOBN:T;3]@.wLz=3^{SI^wDK :K{ۘ$mXWb|c+D|-]iZƏ-o>'LU忇ӽfxƫmo%yXy$-r@n0xG eog<:]%FEG#<sMu,u][q[ X9 7b?^tbM@"|3M!okiS[Nd~B+j|`iCqH^iv[1+Nɫkx*(u㞕Pu \% ihR ~A?1}:s|ae|gݜտ}+6[\H##r(%qKֽ~ xvo6 K_qz f⏆|[mV l O'C^_^Ziw| $n |PUE @wmjYۤJ!ej?$F>JhP3Pt/X2.A=AprҼW; {NVV gʳdRx^~֝CPX b.cΪRvqVӮtúјķVL0%"0>xUޕtΘȱ1#`ps\%k^mdO};y -RzrxC>/f&@[v'!Q·dj"oviwnfG)LY1[{wu>];JdS\> ɴ ~:Z|,&&Nϡ^]Q5 id~9/ºn%yXpWhY}yxԶG*euQ;{[xJZ+Ģ`1 L3SJ.T#LQdrE@ DSZ˥2|#<:]KO~Ѻ47,*dpOxV4m֏s!^>_|95}-UMVV5T-#SOrp2{PQEr<<)q?i T(HU%WOkrx:U'X0L]v0OMYֵvbHmZ+kklu';Q{@M9_Wyחd`0dI>fZ e1F$O5i/nFF7oAE-g'MfXyޒC9,I?ZР((((((&l{ua3`T(((ʾ?ȋca8T_E*ZZ(((((*ns,Q/7fwiڿ^IԢ .@$ckA(((((((((((((((((((O>s)H ߁Q@5Ok΅ )]#0s$9'yMt j=?uPndq*@pUQNdh $꺎A9$b_֭QEQExA<I1) MkvUrq+H Fpֽ*((((((cFWW,'T((((((((((((( ?ȉ\覬/K4ooȉ\覬/K4oo(((((((((((((((((&l{ua3`T(((ʾ?ȋca8T_E*ZZ((((((((((((((((((((((((((((((((((((((򿅟=Dѷ ?{a1n+(C#).]cO:F[u3`A-sg\%k@<׼!Oci% <9U#"Nsn~ |Ai< 9G.,t=$ʇ8tiw:+[t2H; ?u;on [ɱ!d㞄ztR|ZvHe?v? ,cwG[ݟ?΀ |-dEa*JyiQ+Rr7mwj:Hm̛$sOlkת݅얯}1^z`?z&C3?G*`GҀ<Νi;Vl#0|s9lj| a^xċwpd% FQr:(_?Mo?>(ּ[^$կNe 2(8`XdrxaX9`ȡAxO_ 1d=d׷iV+i6V ۖV=HU P( ( ( ( (0i"'s,ѿ|i"'s,ѿ;U~hy#z؂>V6HX92:e# P{qZk>4B[,#;N#F9[ëA[O`\K qLzt?s]V~4_2<6|ك6s(Ewet5mVL;$ 6<5L2';PCɼIkZ#UϛŪJmc@*53P[YhuR 9>FHڥMM:\OWaزυT;<ۡ(VPzjnYBUpx?JѬhg>4`[¼K>=1ǵoJNoY\msh.e@pWH y-S5InpXbgOTp$ mY* ~zWďLҵ!# )Sn;I<$^^7{'7׻;kZyes"np;:Y0éWƑkWZgL@A㞴gdš֡HYm|p/I>܏ұbODlFJ&BGx ׄ@.fŃ7(_s{wǫ!y'Tk;Χ +WiPQwIUa~.|chnvTЂ2=yo⏄ڜp=9lٌ={aiڝJ YJAv8{P[sGUKm7}0Z(((((( ?ȉ\覬/K4ooȉ\覬/K4oo(=(o/{}v6<;+( O/q4q!1; Mlpqր>>$CmgeUaMFnu MiV{w$`;!Vz@σ֖jRY/%7,s\:{$@(f|`Yi={הʀ:Z9;I޽re q3y5sI}?[oakKDpt.m77l`.aF% z #hQgj-Z` SPY p@N8$Ҁ6<_3Ś<ыpGw\z~^sYGmzB}?6'FMur^M?V(s g8K ? i7I&1<b9ߍ?Mo?_"x{)k$C<"'m7h((((((+)gF^^WOG_?6 J( ( (*"-RתזxY|ljHE"ރ,}H`|_'1n@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?o)?@'R"\JOPsEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;G6R<ދ_jm^_ɑ)' 2?;\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEwW I?px)?@'R"\JOPqEp< A?;Q\?.w%'(OEnxDO2E5a|Y%ex⧂ 6Vϙqqcw' _W"h/¿,\~#Xkڍ֩YYI&ii=#;#'$'8:}4i׬s]"0  :7E_Yѿ/&/+2זpeī$O4Z7}7QD8vd }q@? :7E_Yѿ/&GColXG *ڦ6e= Kƙ\60hW"h/¿,V-|C^gi=b7XeDެd1TgcqN{g>s г_M^#E"kpC3;P2I8}h4h6i=߆yX`;LJEF+<;Yi*k (-`PzVGO?X籵Ihp0{fRk~hn'8ž7H\xƷi~;#&ӡ]Zz񿁣nj?W"h/¿,[PQ8[lt8·^AL\}M,eY`rrTg5OCRE&e2 ?9}}G嚆,&EV?kΎ%u;l%1[>6k iq ky&z}G^0\qh>"^FIV 0`O7;Ӎ!PH,"i$sUv~7v VXD# WI1a$g.F'~>wT2}>e#= s6oiZnOk(qaQۜ~ć\A3Y`:| /[;69@J}GA@W#?u;–C@EΝb@Vˑw г_MqF**J/¿,G!~gFݢ0 :7E_Yѿ/&h /B+B΍4W,[P|74kx mCll2aaFx_W"kY#O q^@_W"k2xf_ wmOq޻׆xZ_RG6Q[(\FY M6u01@a ˍ/ÚK[[Nw |=복+Y T2H`{BֵǶAsq!H1ר@߅ck-ׇ(`KՁGXOl<c3%ϷlHNGk2EDV(Hzzs?ZtHο}Kk{ݰ=qZ>>1-ǐ%@ɄV-oxߎDY#du e# LW) -wa=踵+"Q_Yѿ/&C 7[eŔ#`=\z/}^#JZm<>VSą~kӶ z!=|5sN14~XEOK)}ז<@9 Wg@G~[=_[?Yh8s㊹5-bo[m,p [im+% ׼6_|Mm#JЮT`:ç)PG[W"k@>EHe7>dl=+zw|-Tla@k(1?G'\ҽ~ o(z4 [ nx~崖VbI>bEr20kr|>j~hv=0C^+SE=NI/46'T6徧f՟B+B΍5Ea_to г_Mn@_W"h/¿,[P xnſOx5daA X |1j?t Libg$O~UDO2E5a|Y%n_to е_Mn< VzKK[r՘(RǠVte Xn㏟ػn=둶 >?k71Ct aq׹.,R.9VR?PhkX_J0I$6pT@<1xW~mdޟ,`2>NxCA>ԭ8~yG!- Kր:'[|)" lf$Ks۬e>l^ꕑXHƯfܗhNG?To2UjGc@X#qN?t Z;D!{[_ |-o /DE tOz6[~yc[?O \e&t;vj$әUvi9?Lc5 %īoY@.lpT#ߐ_Yѿ/&B+B΍5zVnAh>MM#x +ˤxN%Vsk[FvsKxźz^N\tIX&3Hm4=. 6=B1{rIMy}-мWcXۼ޺mݍtPִdX܅UYԖ'ߏU^ Q]4,ѠV`_ _]ż4OR8/k ğ{io4 D䒲JIr>8> W^RKHRhm$$"G_3ǥzkŴmY|/[F0769?2OiIӵ?h1[xOUP<LdJNu6 "QD\;X$r?uN4QWqbxְgԆ=R"[ɻ>ta} :` rxhjRrW?*O]&wc֧3ǰ?ȠbuWFF=xV5eLHOb2ݜ߳Gֹ"3deօc iBD^DF @t0שZxvZխt!1y;c]>\q\ ޝ^^@G QV^#r$L^OJݢiu(ma$:gFC[??}h䚇t{َeW'Ր# Ұ"'mh&EZB(SqF:W,Qǝ W<_^zP(⤍WȜF̱~֗S7 E$v1ɟ+?Govo.9"?Jx"27hb=JtW,f,v"5j~$-o ц̃%ORF {s3"yg M@5藺@_Gpr(Pv::*kg4:S tk($պ#s^'_EM+ [>v)`1Mt-KӬX@}I}k?evN[ ʅ|F{x nZ-c xg@{%9V`x?J=J)uӢENx' y8(/"Oi{a?gz*R{+t @AW^~zvݿ(žBa;#L3 е?-qcrM?BrjRw9r=;C2SU-O?hk.AHo0|$+`ִ{={H/YmMgB:םx7Tn!Cy=+kǾmHInPx|@gt{+'dFIZxȑ0{~^=+gvԡ{T4 v~R@«x#Ko n|pt7jf9 \V@OkZ"'mOJ[y.{ot| ʵB:3xk/ ɥċ,2: Hk E<]mH̒H0%~׵4pI"$jٰz9Óuڂul1PZx[ԭ"6̓ڥٰ ͊OŴo\ܳ0dۛj# OދamRCk7 ^s1l,s/-\2¸ dizeqJ6_"\s3DŽci*@/|IZwBow|c]Цd(ȿg5O׮?~kIZe[F׭!63ywp5|1NOx&hb,W;yJ{짥yޙ^]ЪO (.4V)귧0W輱>}^CPDxUQܓ"8Mk:ͷɱcU>Zצ"; x^xbL\S`+oQeqSXoau8gXԊ2h>ȍ}a9?TUF**J(((򿅟=Dѷ ?{a1n+(=+tikoyb5>q]IW3.z-̋:qз̄l߆G:KQ^z,O񦌺hF< ~hv3Y^’LG!i5Byda'2􆕿h Ҹ? ?Mex-*Ÿ?3^+Ǩo`tV6€=6uwocm%A EQI4K,R+Uz;okM;V#"?3/*Blzz%Am٨]YSŵ֓Y6v$UTU^PKLS fF:;=QEQEQEQEQEQEWSR&lQEQEQEyWl'V?EK^@T%x#,1ۄߏmP/v> W]P1_6&G#?&GS[.$3Iޒ}]Zjzuq]\`WU'nI]wv~[O/(ǘHPrYW;-3k5 3M͹,uQ@njg]4빤I*x_2XT0|qN9qCOZk:3X:̯5̯)UȼmE_k04 V€6EǠ|-\zxxfN3G=]Ο+eյ]Slaxw^6u=y+{ NYu;iSd&Q8kQ@ME]+ZLŐ; Á B,<9 ;pK+W=]Iz(WC -zULT($ OBG8$gnâM˫ s'3^~W(}s[tPKlG,9v=OB:֧<xYbmp>a?񮎊叇ۛ&LZi-D7 q#Z5ؠv z'H5Ep_;-3붺/7;@͹,c8-=Rucq hwPpO~b(+@ц%0 #sD=+V(#ưn6sǭbh "(Lju-Z6;'vH0:Mv?^Ed@&q_pPA 7]auWr~Rz m:nuciu6jFrF˞ds*ߊ~Xx95}cWdRDzyy=9xFk/WՁ$պyڊ((Ⱦȯ4뫛pRH0t<;Γ6fԮbݎ 2z-`BAFvY'4h^t{ŷ7"cjH{n nE e2i]6ӵ}RKV%ɸdb0GNZ?i)[_[֧Sb~V!'MJjW0`EsZ4PEPs)x]VF :H~YIS5r #b`ֽɃKKv EȟLFF_Z\$5/<賸c+( 6@"{l㊣V袀 ( (0i"'s,ѿP,//lKm3nclQ?K?VevӜVHPKA]Z.[K1ALEjePT"X:}h:/M KxW3L|nM֦Y5Ox)ȎY8ϵz{@,қWo.;Igoꇌqz蘒*¾*c<{y4$tGд 'K8[̕MO^Of*Ʋ=]6h 8vs#%G=]RkFgxat.{+xhB L$$$pq[P?o K#&;3M$QfyT!8 $qU@xP ( ( ( ( ( ( =:ѰWוS=V((EyoǓuʸ[d#G$/yŚ7^3Gl'V< / 7_1G_4obR/6h_lѿJ(2٣ߥa|eFK+(+Cf~Q/T< / 7_1G_4obRҀ< / 7_1G_4obSxl f=&~ 7'jz喳s_Ow/+Js/6h_lѿJ(2٣ߥa|eFK+(+Cf~Q/T< / 7_1G_4obR/6h_lѿJ(2٣ߥa|eFK+CTWWK3I\jʥ,?_J/6h_lѿ]bMOFdYd`+'.u)/df0Pq|qIC / 7_1G_4obR/6h_lѿJ(2٣ߥa|eFK+(+Cf~Q/T+Cf~Q/Ftķ{ O s$*=Y/ / 7_1^ec^9Nn< / 7_1G_4obR/6h_lѿJ(|A|XZRV83QEfxJs>_L"0]q#na=X1z׮DO2E5a|Y%ba|eFK(Cf~WPz/6h_lѿP{ {qm鐙$c\^q?z< oeh^\跪xi"'*s>a|eFK(Cf~WAK"+]GtX̄ge+iHxnvxf`%qPQ/ / 7_1](?wחk^~=xSypyS߼$fE :9*a|eFK(Cf~WuoX[AVbbD^9|/gJu ݅e)H/$g=y$0:XCf~Q/6@ROR >湏 XF4kTmF1RN/Ahc/6h_lѿJFRIyg_4ob/6CuǗ˭'Ly VpB(4|õ`qOkFZ%%-Mg@3p3ۃ@_lѿ?2٣ߥ^>m,2O(2٣ߥa|eFK*ľ|ojoI٭-fc3_SEqv}Ω%(1 \q@U/ / 7_1^Gzuy__4ob/6hz_lѿ?2٣ߥPa|eFK(Cf~WQ@W/ / 7_1^Ey__4ob/6hz_lѿ?2٣ߥPa|dFK+֬[agjJ{c1$K?w{y_?L(((("N?-zyWl'VҲ \Gl%i17z=ݦuqoqm Dd2O<(8޲4}~&conGڤKxq\3[ԁ'7Vfy׺[`Yj/G %(#6Gkǿg?^2+o o4Yta:;wu p}3@oWh-C_Mk!.;99to Η fX AeǵxԍMY-8Ş۱И^i^*[3qeE{"[8żp7z}늩/z͋lAY{ ;^W%3}  Lt nO΀7|W= }ZIm$ӿ_K>*ps6}vem9!YQ ev%sڟzK'%G%96xO#ճPDym]1#ª+\c$"NOPG׼2=gQtoy}-$@%NEb/V^ZL iUA;yuzڟzK_"NO:_x՝C LJ\`($:w_|EjZkYAN*Ns6sz{wk j$=P_:6#nRpAGJX}ηog/ّ%s6~V,ѿ?wB6{?x;Z`.Rw[ȲF9>f]աtVⵈȇ=2k>9g7 z֤q-Ep6c)k3:_N7ICUr\ȬXZo|_y]z>#:ray]2a;?QIkw't};Fl<+p|TW[,r9d+$a,LN9OS+K{8LMh.sבu>+M>wl+c5"&\?|A{%y2׎ 6faX}ǓʏN6wt w/'8D|ss|Jc? jFqQpmLh/4-"Ǒo-bF8=>S'NJ⺲݁)um$20Gcֻz=9$o@! Ծ:᫫;i"1A,vP0Itݾ2(-5 ϧCʪN`6}ޟ^]&{€5|5/ KnSЏ? ׮+*"5Rצi )?#XN?-zf _ u'weEU$=My7~#b!W6d- V(^[Fp3ֽlg ?f'.I)ٍ7!ZQisfH0vnON  8 ň#(e4%^ Si䅿r?ZO˭䑯Ѕ]%XnN~qG]ZxnWH@?P%7?v::(((((((((((򿅟=Dѷ ?{a1n+(C^+{:Ͷk= l&ZRq'TNx<{]WH#vٔGobՊY)j'1RPO>HH2My~چ vz#bt }?Z!֢;G[sc+)8gvne7WCo}"!RvJOk`qW0JC-NO9W@tRvA[GqBu4?,~MY=]Ki"4U_闧\u⾁:}h[ݎ +5Wqx>%ufL9(k~-ap҇S% qm$o2d05>YZBx5cut#:Ҁ= i'hcg͐l@+h? h__|u߉|75!NdC#Ya'p=h? h__:Zq;¢l`ks"U}k/m|qlp?*EY^jz핅DcYs<\gExDŽ>&x6KeH`y  |G_-)o[gTeLಃ >nh,k}j '%@QM W&rE.,ak#C6ߗvGKɠ{ibT  訠+'۽+R5;i\ZHT/#o_-ZU$ 8m(Wkc[xRFu{yV hYڧi9͏\wdѼ9wjz^grm: eUe1qWQ@)r|v5Tn? mUԳP,Qev85@>:]ݍկ;Y"23 Pt5SQ᧍oO.861B\1!OO{?E'5=,wya.2Pv!|GZ闖Fi\0g~P|:o{=4mRMJEi!*d`<5|RE]51$ȿ3 +ۨΟ cc2f>g2+ЭTP)e JMi}^2NxVG|9x;[hT*a7Ӑrː6Wi*Y }eea^]^(r2Ópk8O}lt ;S xmd`0Y@<0]_F*Z?A?\Gj(𥭎iVO1@NXՅt:><6vמ-"se݌P*? [ELvj !$N :V弼2 ,Qrq (~ s#D I&18={v?Ng}J塑=|jXZ 8`#ҽBo"wΗ_P`X91-" Cҭ6,a9X֑j̶,6S6@c }QOGG^^U~'߅(<=sme\Iqqlyp)U(((((((((((+Y#O q^^UG6zJSי_k/^x~Y `{ejHAx7Pn5p }CRbR9q (W>(CHt>̠`nQTP%xX FJLn׿+OtXk8Տ'㝤yPmGº^^̀|{ 퀟ִuSP[[L@|&*JO#!GyQ@\n#pf'R"\JOV!~gF? :7E'.w%'(OEm_to г_Mb'R"\JOV!~gF? :7E'.w%'(OEm_to/ gۄ_Mb'R"\JOU/K_MC{K/ٖ`c*0wcuZz~y`%ͥ_،(\JOQ Iy< ᩢJPe_2;+-6)$+q~UXڿa|g| %fpPhOE< A5tތ uh<a[hv~^q[Ceb0FYOE< Ac֓imOr^?PE4f1R}=롽mx7N|[~ 륶\YB6WM I?px)?[_T֍8ҟXGtrGaa@< A?;$W|oOZ8u\M XvK5ĺ,;[hOE< A6_|Mm#JЮT`:ç)PG[W"h?;'R"&w|-Tla@k(1?G'\Ҁ:\JOQ I @['_m%O\* "?]%LzPQ I?px)?ZV^I|Y?꧱-;7֬_to O\JOQ I/¿,G!~gFOE< AB+B΍4_to;<xOY|ˋ>2fBLO~+'o 4SU^AVۙ]!HG]|%_kb->;(ՑlA.Ao5M\pyfݱ3A'?*OE< AB+B΍4_o O\JOQ If[=^w%9 F}j)ctsq?V:us7ql] I?px)?NkX_J0I$6pT@<1xW~md,`2>N'R"\JOVhí>r?kIZvVWg{ɒe2@6OjOE< AB*GZ7E 5c HhtvG~8 \JOQ I6[~yc[?O \e&t;vj$әUvi9?Lc I?px)?[W"h/¿,@< A?;x +ˤxN%Vsk[FvsKxźz^{^k_Arp8=^=WB UӴ]KPjī'5΍¯ƅ$hKF $\Wx7 f]G - @F&9~'km޷ ;UkYh f@?6w7s{`{c-S>iswHp5'|9w^'ӷivbX`6q8KDyojIizJAv#`sq@I )$Uwtdq\ A 8ϨkH6=3WWZ-aSpo^ؠ:^^IejLwQ'$Îoi1+dp-?w9rZO `j:Kp~oqzjSocYȢ^59Odp̮WxznKIrYM%;L $N|+kU࿈ٍ9&U[=OPO]kl7jL2]"cخA.=Ib5YXeR{F ⼣㇆t[-vcԮo9Wo'+v@Kt:ţjzsq<ˑm3ր= ṅ&T7W+b8kǴy|LḒOky0E+d'@h^zPWuh_."'Ƹ_,M^7j̭ fy' ğZ:oxF%$no =RꖖZAklª(\~c||t2ȳyqf ǒIh&ѿ|A^ h=(2j:x#G6d!+|ހ;i lqpO9ʨY I'm[L*N.go5íNo.4ӱ&cаF;ᇥwj}Ԣ{Y9#Xj3 ~,[U[ s&Mh>i4ZiVWfB v~_ |'+SYK2\X!n?TeIX^Yݰ\JUs\ݿ2_`r~'sa<%ys4:Fn.&3=V~@giZ/-gsc24fIJGjw˭{d^?Gᮅ 6%y2q$`韭v >YxI{fٟ(Il u:CZZ}twqhԾ#XTd8fv]|xu=nm:_Ey||1vZ=٭2yr'bz(ٮ-l-^+{t8UQMPVq^-R9lv@l՝_H4ɴN.-&xؐG#k|=?R6dr~dݜ4E̋a]{(>_hןcִs*;f'xpƍGV^e ),E+2<'jMctӬ{"9nہ8a^}DOﵭ Vbpmv9f_'0gzy_< _pWב|e'z MEθPY݂Dqy®?5FԼ{w2 ,/_?ʽ5x|Wqk`2s/NUcG> {Ԝ5'o:/.ow gL^f~BO_'=xSLҀ:rj`Cq֛]_q;6ұ䒇'ֿ?E.SWw!wˏ?(/S|_kȾ'M~G](((((((((((+Y#O q^^WG6R׆xZ_RG6Q[(\FYgr5NM-m3\ƿ=E̖,k>⑰I#U9g4=Kl!Z#Q}skh Ҹ? ?Me6DY#du e# LW) -wa=踵+"Q@xwč*qk1[xONۗ50ׇ<+ bMR7ʃ"64=vLڥ!H-r;ry_ |K /l^[\]0]x[=K"$$1`7Fsrc9<\%k^zWG鄿kѮ5Ȇ+/,Q=><$[i[xvJ1 #Ҿ7oë33wkS2KKppOS@wi0G&d :NA4^ kK녷={aiwϽHoׇZm@^}'J!ej?$F>JiCKA@mo |n5bq3# p0Nk܏qD)~χwISvr!?yMOzXjPΘ剘N;ߪb?h'$( cr{ח|~y, S ^dTA|=1@+>KOV""\^2BG +ҳuZ D.mi'QJ*Ex>&J j7_ɧF-kq:/ ͂1һfW13̳[  VoExotFs$|3yV^ >)HN((((((&l{ua3`T(((ʾ?ȋca8T_E*ZZ*'@Ե ͥ')lg[PRn.Ah.axd`A<7ƱY09\r+<nxvm'WD!K|Xdalc'8+௃籂Cu ě>[ y?1gCC=+x2=܁v??n⟅RƖu -6dfOQ^oo~Uquiƥ\p̪c$=:Fy@ǧ\W[ėOuqi%$[܂ Ag]B[u;HeT(8{=*3Y#'}̟@P}jzPnN "7aqB~_^GҺ{J+x翓@|?xRnQ6-V@AŸu]6-i_g:G~ɣ,YYMrw^Ҵ &VV$\sg@+Ws2AP{ UZnoi}%1?]=(&ѿ|A^ _:ޥamP̧a^tc_g2;ig$1!JUƙqJ ?^ 6U;iF׎E#zj?ڭ}~0\y_P{y0"߉|fY\b՛Z(ۓ"} #h‘p7&+֏7w=]Z]4XFbT 1ހ<Ŀq>HƟ"x?)?|0Ϲ h$?k_QOjzOy4 -m}Mz-y7|/^^JXG">Ӄ*3~>X+O>f:?:.@=DZ-Ɨu5Pπl\`\@mob/-MӠžj}hN|t/zVک[sm.95<M{j2Lr +ڿ❣A)̷Jc@0W-|֨ƒ8_n=QdE(@i#`Ws365蚧1sZ\<^W?Nz|5cM-'N  9$UmWv徹ep 5eC)ᇧz7PNwI!ۨgGsT_ tI4/i΅gT.}Os֯-&&5$"Ȅ71b@q;P|OGG^^E?Jo?zQEQEQEQEQEQEQEQEQEQEQEy_"LۊJ򿅟=Dѷs>":޷ȿnӮN |@?]1\π4_xλSSC`UۜA tw}c5)-˱ѹJ?[x)k'xf~!ҵ kYt)''=2@֯|7x[K]?K ;Fx-*Ÿķ+|/¸gF~[ƭkf\4Blva`Wc{|d𵷇˨jڔVaĩwɌS|+kovIjıx7F؁@aAKB5z?i)[_[֧Sb~V!'MJjW0`Es@6_5 ۽̸0rNԞ@>~Spt[o}sבZm^2dh؂qGk_u?S\.. !Mr0  ==hx=hWCc%kz q"dO# @#/-.}xkj~`tY1XUKYm M{=pQwtQEQEO-4Ow},RC:E>P,//lKm3nclQ?K?VevӜVHPKA@wĒgmq9'\%k^ӥZ.[K1ALEjePT"X:}"VB.5]BDvO#ԓ+/M KxW3L|nM֦Y5Ox)ȎY8ϵst-C|D-|XDI }J? ƺ*'m#es?0·]{@,қWo.;IgoꇌqzO=zv2j]ײAoA2zm|+⭦=CǷBGKka Jt} OТt[t$;[ؠ JY82jJ{i..e*RO$rG4K,n#U0/Z/r]"[*222=F[]/kϝKy;=cWdη:-RQB`Rjj~ǧx?duZ3K-ޠTng 9ڠggԓjFNB>(((((((+#ï zy_?L((((|~qkk><ȩ;eh !#F 8!;)cIVxIy`R¬WgQ _S_=@ceoXD"cjgk?zU*RJJU*R?VxvKǨ^0um$h8@U#,Ddu u VQox[gk?zU*RJ+VxvKǨY)/Tgk?zU*RJ+VxvKǨY)/Tgk?zU*RJ+ʿVxvKǨY)/Ugk?zU*RS=~u ks蚅nD]W=y'xY/I.j&x ρoU*R?VxvKǨ(=+VxvKǨY)/Tm[Y7&wDFP7r??*ze]A]g.&@?waU*R?VxvKǨ(+Y)/gk?z=RU*R?VxvKǨCUolh&y 'ёμgk?zU*R[TԦtxf.%d*ۗ:WO^W _S_=G*N)z X!~GQEQEQEyWl'V?EK^@UMCPҴvFe8P+ni Y\|K3G٤f 05OjR~r\ږhn`޹#%Ht l,kh$H B?4:I`1P\|kmke| AsEn9Uyh4׼W?l\5]鼿,B9|sTm>wijG״Il%beuAs\u"W܉r#BcR2 gҼkI!,0F\[f0v:€=yc &8RpI,/!Դ{vos ?%_kz y;U.rq#ox!5'I5Ɵ=a1ACh? -yĉRuHdGt.sAt糯0Ǟ ퟅn-?x\ZU:q9Z֯ ]T6<@gZh;xFMInp1F77^ |U$7Qd88 Fuzk SM>4U yB@|cQ#'Ұ{k77S@ɪS0,=??@xc/1/IqQ^QW^ǭZ뗿hX1,_u{dzk+%7=5ZƳuω+;m(JH$*}+OJO#TouFb3}ݿ€:xZ 'B3uK7AQ8^Y$Q'5=~x6CC##G e!`+!<DJbc|g,$SՃׅ>FuWpi?ҽ c=h?WEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP|,'Rg?&?mzy?W:-|;׮ʨ?/cI>ʾ%{\7O" /ᵵŲO˽sPH~5oc$ﴭAnh%?dbqF1]Q-k֑>q紿|ųv硪V6zLфYfy,Ij wWAЯ[bi GE@Α/H4T]\AxqxYcI#ø-ּ =)5ZvmVCeoh| M"3G4K4/ TbB0AׂxSJ6~#עe1JJ c$5?xwYB6.r/.L}ճMC[n7cMRpYA 0ӟDԵ+="KeڼG^?~&~-H-='69R_|+ C5Qk7cm# P xZ6vp^J>` TG$uv 9 j7@`^\}Ab4u}Ca'PͿJJ񿈾ִ]{ZԿl e :WZbj,-x洺W ·/-!7TeQSD[\"}0k37 7WZ/LN~d3p ,߁P (( Ɵ"?)+wƟ"x?) (4Q@Mu\x߅彸tLCm1\ms/8uWF/.t[SRo9qz/>ͬFUܨ c:_t_'qc<[Ӄ@>7Z]}B+KyҼ}<o Nuy1 K{X-v0y<1M3(h? h__ (0$^'/OJ{SH'.짿yVHu sn~ |Ai< 9Olt=$1!|q6(Яc!Ì #U%jWzuƗB3ko94A I?x$h_ukڏC^K KIob ɍY؀yxCťﮂ6\=Uy”⿌,`@,y τʬ'Ko t5MoYu)ALc$ b 9kZ|` [NIbWӦ8%Ђ@Lvw;ϊ3m\x0?Ϊ&toP^ӆ6֏scrpr טxK x#;:Ѓ-MRw/ _ưbyf#,Y@`JBVǺt>3]H^_0f$Nkw^|<+e[@* ր(|Y%r_sZp_&J>x4/V8H"fi7rdqUBk_ֿnĐ/! w9#u~  K\Ž2WypK4RG9FXyOL{ 6VW-[ܱpyk^N|Mm׿+^O!]Zʅ|p4ٰs .mj~$\I?/5 ˛؂ya`|q@ ?$F>J3ۻO{cZZ Lsg*pefbnkm=hiQ Ο˻shj?͕*t&l~!]ǁy f@UVeaA{W Kzkg<9 ]څƈK(RJrAzҾ/ R%ºڧ E98E&}/Mdg ybO@+gi[,!v`.:8<o|kxȻh|^89%WY^g/ o6kܟ&6SYžv~zep?k?GZόK5a?OtPK^7/+yd5wwqʓ^VP^;׾kmG*C,tK\=!Եz&; Q6Hޙ}UwR?7v4IV ’zς>u|G[]Xa$pxJͯ> xɺVЯrZ0x`Ɵ<+sChղ|;Pj3>~,𽗋tI"8Jٴ+YRh%PȍzV+>_7tMV}*7>MսL:*r7_cۓgA,i"  (( ?ȉ\覬/K4ooȉ\覬/K4oo(= VQIee8`k$|$Ƶḅ)kH9%G\t?l?Tּ=sYZMQj7d d9RrkxǺoUݞjl0/o~%ֺ[9 IgX k% s;Ò/K:GyjڹH''u?jx4 j+X]^o3(W>(CHt>̠`nQ| Xxe̊rV,}ʽ@Tx^G][ǀT4P2ct\\7u?|4gC^h_Yy<$`fo>T>l[Ll˭ꚂBeY1VRx) =$㥼?GF}66鵑MxrG8KoU[c:ߧs^_3dޒs |IImxs:y) O~RcnFq@=𚶑'y\G h$VAq! @G̿*eK)x7Ϋah."*\ v8[sxbT6W100pp(?omsaT,ѿw'u-.Ooo.G[ ;P([i=펡i{.f^jrOonh"c2Ў4Wߘz|+@g(_?/9@Ey_/ ?Y1?~WPQ^U ¿_r_~~bWߘz|+@g(_?/9@Ey_/ ?Y1?~WPQ^W ¿_r_~~bWߘz_<+@g(_?/9@Ey_/ ?Y1?~WPQ^W ¿_r_~~bWߘz|+@g(_?/9@Ey_/ ?Y1?~WPQ^W ¿_r_~~bWߘzy_?L)?~xW|5_Yx)tna6Zi  g #qNɠ}(((ʾ?ȋca8T_E*ZZ(Ҁ +"ĚMtZgi {KnL-P0ET,W>8UYEpjعڏsBEE1]! dAZ4|ZPDMK_Z֢?h^"#RHB1# d{Z^?ٮnٿ#K1__-6=@V6Z{{ B).P| rYu/I Yt?MPJRu弶d.#4xw *4=J[XkZuAt6^5C\?:.> VCP 6<$P7<6QMa?|3 vjA$feh) ttS9VL%ye6'٭bldR(fg{k}isnN@0'ES%l f?PQE4ҜzPXھk\ٲ׷@HTrNz5sq0ƥIX*$4˟=iv\b?6vX a5:΋%xOCTA滊ׇmT]OKc񕄞~^=};Z0i@[Nlqi8zP/|?ٴ]0S ]pOA9ڕln/ rd/hqFW-Ⱋ\GSOڔWkU]9ʰ 9 )_J3*aRCOn2P՚E-.#"O,WS-liq7!PaEO]kIpm|X==j_k1@աXcM9G+ϧ'QM鼵{Ms"E1F|wl=XOv?^Ky O1Y@>³aK6>q!q%1F4QQK,qDI"pk6ĺ%7[jg )~[k\Γ kf G]@ ]5QT+-.5VFszjEaZCK]I"߆k^KwdIj'MQ*$RǏ@$Ûz ޼V[-XOiJ?nE"Meu9 BBF{ A~o%/0*o_]-х4KNBv"NiI޽S^?_o<]e=6Ox|!UOfk=zC**J'm|/k,|ńs@ýQ].imygc)4@R~nwk7gOT猞1ڹ\V˩ēBA-͂ ;q֮ZH#x[ m pB͵8>}Ğ&/-F$w5zWOp|MB[ZsiBY#Y]a OS{@ qZ~ͤFcoyw"ypd+{ȋ$l d<EX#'<d]=`@:|Q 7}tˆ`=\tU4ůPHmE wtIbq @^ t5լCJfAֹ|W%5{\c[;~\eE߈WBF Ϛ y3b*ʻqIcNֹdm+(%͜^. ${:(ZmiwZw4aYޥy IX('g_JIa_5B3Uc85^ wMiD0;g PCKT8"xa#<|Nn,#P-IIdgS|[HN\iڑaW rp+4MKMd8{䜒{^GGKOx{Y8I||csnba@yY~#؊ۛR=RNS\ʬ}R}y o;iT#ˑWkZ=i,giЎFSO R-[19<4Jkh>u i`JĒ"\>ǥd?AM7|QL/DvH8SǾ/".m%yAMl}LG׼2=+B&Ҭ#k|V;7gz.X-&rmGTYg~Y S[45y25Y}J3?TBN;ǧGH0i6+ӛڦ2' QN$uM[&\FYpBȮcUkq|3bfI q VSYچ.?KI,} ʀ5,ѿ=~:U <: Mu72 ?'bߴ֠T3w n|pEznTCqZ|m B5pF %cu ?B{-h4J (* #{[b3ܜyN,6( ! :/o'z>&6?fJۥ$BIF-V?u~Qu7[NK_{y%6$r&$qq7}PxG㽆y dIXpABsI׳+,XaA@O$5d|O7 ڗ.#IY<@ỌZmCAiMGImBذ5_4 Jmvڂ!#f_.C2@h_c}O9+5;MgNP͵w&һЀk7 q h_MkGmioHT{(fPCG?i}90 _UπF./9"J7h\兼>Ŗm}ndHQmcIfm|NksVZb0)AWo.i&&"Y ~PH&4f5H@9$}Jߕz御g ݤ4 xSSiZIB0Wਣo+VE*-#ȫ,(onՕ$1skFC@7mZ5BH'd7a$~+ѿMm׿*%z7P?P'˶Mo(!9?½;;If`CH ?il$o-p=eϠ;kII"[k+w; JvӚ KgRXʋc'0FfW!x)ƻ;m@״#P+uu@׎~OWzWx*K|kx # Tgs3 ^^!R~)<~TpM7:eHܻH_w| 6[{Jɻ=@*> ռY;Kԣ*5͐%q;vwmPD73A&Ou=6-IasYFm7^8iլ//-{ ܜ7vG8q܊v[o<p? ~} _Mne;m9zU?MlvNoNvwT׿^_וNڟzK_"NOzy_/o''R8K5a?OtVg%֟'yGӿݿ+o'zJ 956㸯o=+&obZsT>G P׆|9 [znBZ$Hy$`YyG▍;K}˂WqwYGPƟ& WI<=`oik{]t  K@QEQEQEy_"LۊJ򿅟=Dѷx:g4W1sosLw+QEvrp[BqZGo#%ߨA/=m}M{_|_F]B4r#m?4mA{N@ۿu;aImM#W|^!KY<2E0g@zCJߴti\p2▕wOv1YeV#22^ۣjZo.U؃v (=+>Un.m_˕eU|tȠ ^0ׇ<+ bMR7ʃ"64=vLڥ!H-r;rypC⟈:).#}tym>ķ+|/¸gFzEIHcn8I\s{xWO [x#Ě- )J_G€:^nvVۈ2>VExqhGKֽ^bb1Ync c+?h? h__T uuxx;jvfTw n q&hᕧPA&߅~ //no2FVLs8R{PEu=lp\O|mmW~XnF~^3K,]y7>?==k|/!YZ{ QZuhVf &}e)YH :6y⵷iHK;(I'Iھu~|V "ewDB־ӯԬ,`f6d+{8=A"C7/(/|K/MsQÁݡeܓ)셋dn"g> Ҽ3JSqU~|K`5)66k9~Ї|*~״7k:eD77ZݨՈ gJ'O|+[jhgYu |; hjt}dnñpHx!- KֵgFd?ck\upyЧY?//ZOiPeȕ+_~"_IjSi"r1{~yj>HCdzp1@LVP,AO-{Semy] P? _.5źvG"*@7ĞL kDo ߈w4RzTdm#ա eC'qTރߤ [R(_ =/jw{8/JdUM(A}ssHn Nܞ r:3^PRyK dGj1G;\/Ɲ=xGHYe!!Yj. U{,;x#ye`ܞ)ȓD"0]NA OJ6Db2..2/?_LΧG_ϢZ_$J(A cc$HW ~9w>𭏆`[<37w2&=A[P;^,oHmuջmPMa}g#Ioj"e eTzh =LJҷ"6)eOr> ]uy!o41;WwEFUf cqOҹ'Vz߇ 4ˀ~K$sאGSs@"bR5Ԧ`BPF Iy{eoOewo[\uEH w/͓H#z( _rѯEPul9S~k> lavd(d\6, 쨠YIF׵@ۄd8m+/ m#2S"pݣS.~bP(s>ºbZ51,$D`$XፉP!5Pۄیyxӎ@׋<MS2\Bȇʹm3Yٮ|]Ϧee@$::UhD5E+e[}/HՏ V-;Y?\@zt[$7 .w#P8(= s.4Jkq86ۂCE1T2yEEZ奕LY@ܱ|F`vjj<: ꚬV@@FX p@|)tlMBk4 pb>Y,I I"Ck_ڡ ˷+1$Lbp0V p{{W|:m$>-բXk[rbf>} :Vg| +E=I5?gĺ^w1p"_x+9m_Pkz#i093!''8qS[JXYW!bܘ!''QOR{G?ڢ5js8`xa׃IwGY5͋ioc2vFď]s]Ur(XK%j#6cw)kl|!y5Η߿*ggm?}Ў@_2mWU6ʆQ7ua=$cKywQU(=+ # zIcB]x{Z]Zη\[Vɍp2ICsim[nX<`zbul|׌n-XcT~N `O_\[v[H9?I8滊(o6MqCkڪw ˷|ciJ5 -$o3o+Ȥ`88(m<Mk#o;D[g{WYEp?GZh?McGtJ>ml{wm`Õ+Fң+[ HSS3z hJ$@OR~°Oh꡷ ̐+q]1Nmxb $Në|?J'tXGm|^'Aq $2Er{ 4K%%P{AugG=3M4,,aXm@ƽMu A"8?Mo?_"x{)j Vjn\jR(>2c+~ :v[ıDڪ0O=1@h((򿅟=Dѷ_ ?{a!gT=+sKypjs1[JchvLʰ;s=u kYt)''=2@֯|7x[K]?K ;Fl@/MN[;x-] p|/miuJیVxs~VI#ߥz%^%^~mY,n,Q EdQ{ A_8'律jֺn5K$.&f_OEv=:UA]CVԢ %MþLez_[x>6ӵ}RKV%ɸdb0GNZ?i)[_[֧Sb~V!'MJjW0`EsZ4PEPzY MZgU9G+ч#V~hA ,WvmpV>M}l" ÿ)?dخXyk]XKQz ~Rn |XquD"&HUg+UxQo2(z]Z -K]x3M{vf(Ɵ"x?) +sƟ"?)(= -<5 RTI66o@Z'm9oej4u9@^eqie[DQc=O? 4_ _[֮&UB.IU޽$ı|PxPn8fjeT.Ր{W@*ǰ y\-)mC${&>xǨ|+⭦=CǷBGKka Jt} OТt[t$;[حJ(`J#Pe/.ƪt.|SA۫qʨe*p=qӼ-okˮ^I}H!q"G}='k9^?xv]&K*222=/м%E  bI# rIVIkNrDI$??ATs`k(m"$ jP*j(((((((&lu{ua#`U((4Q@YEO+D_P@W0O Y7YIDZ"-Rת¬WgQ _S_=^A@U _S_=QvQ*N)$ ǵY)/Y#O q^@W _S_=G*N)z(d*F=OZd}6iԅ#n~O@*N),b{-S@gybv$]'J _S_=Uo>zl{-9<3֧xm`U/^nT Չ_Jovn)ka繻V]zs(6?oz?$I"⎬W @#+~xw[ptm.DJqưiך-tBFS;c0І`"(¬WgV}炵-:@.vBO)|O_>5_xb-r1 {ՎJ4_kAHieqqG;Ϡ8>?2⮩4ލ'gKx>)jD$C!Vr5oVM߇`]/THicW׭t`1''8U*R|3!o7nߧ׬xߍ./xqD/amc0>ʀ:U*R?VxvKǫԁ^xzaڛ}FrhÀ}Fzy*N)xzMZ,KyeUBJF fx:?Q֧dgdX^O o:6N yXz;Y)/gk?z k? i*ڡȧ![ G[ X!~G{ua3`T(((ʾ?ȋca8T_E*ZZCX+p^Y x>YڟzKozuׄng,MEe|GI.Ё'7?> xIa)6&'֯?o''|MGmx>,}Xױ6Ѵkh<|('`X8 |Muys"N0!M{EO% y/o''^&KM[na4PA.2ͅ'$n?t]x*u m^YHrNA\ޟ^]Ħ|96gwٱǡ#?Wо=jw_)8Vg1b>ntk>|IX\Kr=r\^ _KI-Tu;Nr=A_SMu]Jkr%Y^wns@=F4Œ/K]"tpV bH837~׈4WPHk9AprBtYi_[E!znf?ux?5Jҵs_Z<""DvL9$H@kQ~֧n%2Uxrsyue /Gu;#HŸ774r0-̯2&|o]*6%ZG'7R9'9#5-Yc=,ꇡnH3 ğYl6C[\!E21&ּ7k7-ղvʈ2TD?vvT3>6"j,: Ee v8?S^As|*÷h< Ƽ2ۮ:Wƶ5хM qm׃ƀ:4x$^!#GO KH)hg? jCҼow|c]Цd)w=bY]+٤߉c *F%7?=v((((((((((((((((((((((((+Y#O q^^WG6R _BZp{x/!- Kր=/q#'% <_/g-ollaUC,^wGPM&=vmYA3[Vf(au4tPtUcT 5WJ[QN-[~VosVV,ZFj;[b?j]J5.@ \>@?ַۤx4 h31<}xGu]"O_ȿ_APy+XV#T8UZJ"xFwE7-k H q8'|5l5O^"Gr;7{ieigS BP{"7 `|$Cu h?tMOW|2-؏βgjKΏvtS@}h9x][U9O@9^Exƍ~/[|/r,!_/7vRYM1?zݤZ֏qeynu G$NF`#<5~ǟ ﮬ-t95&YAB0 dyϯ}K[ӓFq |nXv9ފ'~!i/Ѵ58Uxc-KOjVm+F"#wHo.6-SX uP [A*;n]t@$|tO>Ð귷P-Ωtf:|;q⻚(!#GO ןFnC@fG%yX]bLdcjJ \@^NL$/]:|쓪:~XKk甓Z_ 4/x[S֥ռ=:@ yW9fE܅n?cR@]xzXW#6MiO{_px[ڮyIm IltKy;) HT'''vtU 8W|OGG^znaϑcXʸx?&񏇵;m*9Z8䕤@ģ8Q@EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP,'T*Y#O =z HF @_<3jonhbd =ոgby80{u_^[nҮ4i#pǹRgzQEq=FȽɷۜުkAּmx÷6$7q;/x'?*(źΫ+:NUjFY൳v6|45TL9{HJ-Ҵ.Mޯt:f9;geO^:oQ@[-sIg4Yn.΅Wcvm߆8]h:xb,I9wגɢ_PxfiO[|c9lWi 4! b>Kj:l@Nz}k9SX +O2iA<;rSW=YoCҬCy;ryjk@,'>45bOȉ[襮o<_tumIV%9<[ ZtkKHʖT pz#Ҁ5(((((((+)gF^^WOG_?6 Z( ( J(0i=7-rr>U*uC `Q_s?z|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1C8z&/+mAծ,1eoC]/ ?Y1Z(~WQ ¿_rR_~~bT<ߘ|+@g+(+_?/9G/ ?Y1J(~WQ ¿_rR_~~bT<ߘ|+@g+(+_?/9G/ ?Y1J(~WQ ¿_rR_~~bT<ߘ|+@g+(+_?/9G/ ?Y1J(~WQ ¿_rR|mޭWMՖ{9`0 q!8 fxi5$f(3 =^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@W ¿_r_~~bPߘz|+@g(_?/9^Ey_/ ?Y1?~WWQ@T~>xWY1OY|FtK;Ē( hݱ9ǜ@kh((٠FQF WQ~Vƈ>JFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222r" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( )HFHꈀ3RM$3Ess*K 9#`FApAUAin/NͰ0c׃V)e8sDB H3q=jJ("3 O:Lh&pYNA> +Z[IZ20S]_K!C#)t?F~~* ,WM" 31Ҁ'X2`F ( ( ( ( )4M+IJ!.T8?> ( ( ( ( ( ( (חny*@s@h(((((((((((((((((((׿]_ k!м jzqⴵTW$EUmwAmLV =e#?qpGr>5 6M97D[O#s[P^]ʱ[㋗۠ήI=LŦ,RMiˌ8*~P8y?^[fd }߾7:q֯E[y|Ccbj;$LVM׃9 ֦FtSC]Emʭ'HTORZ-qn<8vc1kij:(l].|\+"㎡9ƍh:#i\[H{A2Ssܓm#BL+I7pb>&:ŞyobFJ|WU$ dOc9Z5eFY)Q&yl+RH\$ 4cF׵07F(9ѣoS K$v~O"kr*>ۙF}Hc^#{aeP[[ G(yl%2s#8 p\ެN#q}bm\ qCsu5- SYK=f'tQҼN |I2F$WنsjԨ&H.!@UfʫO8UFt ToM `i6 !;­ Fx9lP^=ZYC #Syb8ck)rYۂG}?P[%J+$NU~r*#:)fiO-2;+x?ש4EgjkQΣMvxڱ8#?_kiK<6[%[d` FV*^9QESe< n3ue{o B ی.QTuf{o @$ی{栊}DxSlyY!͍ 1@ uK[lmrTH!A®C-te5 DB鴎;>}. Gv,HPL}ASD%{xf[I%\6QPA=<0ԁl~3MH–úVI{mak6#EDʌdz ԬA-׃ux#i&OHFK15kQU̲|ϴݴzcc|\^ /.bHMLldndLali>m,ND2Yet)I Bd>պ((((((((((((((((((((nrPBO^he`C +1PhmyNfq5=bzd_WLIpoo Wg?M@oR$i! c89!=(=VȚGXUTHU~ln=`; jOagu1ZA*BY# #aШ=ENNpF +.:F-/->^aЎra5ط<_&Ldq @0hvzƩK{*4pĘ,B.{ _>& %]iɷՄ,.˸WpՏKaմ/\aFGb QW+m~zDwkc?+`0_ =뼠[Fqb;97X]^ȳ~mpܪqZWzims(HX pp (U 31-U-u([I m 1#pjq4m;L)$o袙*IG >##da2_ȉ\覮CևcqSãAm5#U2|| tW3jvP]BH-Hi~/CW[AFJaFG#ܢ?_h~+tWL؂x;bddӄXHm ZGT]7񞙠((K7ORB8'5t k}( eWsȠ j*KRXčgk-Bp}W@T3}Oֹmf-#Yve J"=2~qҏ׷ol/%)!X4dG z`Iiekanv@"8P"qSLFӼʊɞB@?>)ʒh0 T ~`卽b+̑w cSI"EI#"pI5aOjzXY+%ĊD @MoQ\U mZ;ؑ,ee39y\`u:TKxw3i?$/n rI(41\DOKp5heJXKG@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE:%k ޽1\yC|<Ɠ8I^zhy`2!Q,$L\2= j iam}u.XbKcjRI=h+LDZvjQاa Œ RYj?iRynXrYG\fdݹVMonu$hY' 0 vd5Kfm-uDmͽĂLp2jh:ԑ( )%&mpp\dqiiosw4{em#(y52J[< HʎFqZ6Kkyq4NDw{Ŏ7 Q7+Mœ"},r9RL81j4>W\Vt?*v 1eP%5ዽ;PҚNYgWBt$Ӏgojڮbx|Ln%1hx˝%܁OEsVxo!3{w!u\TFN;d}EtQ@~ V-0[uG#lB0>T<7h NK&;FC鑞NS7 /se1+rQ22 ;Un 9 `m'76`"9>y?/cԮ{Hbǀæ& u/mƩ4.{B)aW~f'u ?ȉ\覮?w2i_hc+4;Wz}iyW-6ٽJzfsf_8J#}c45o=r_pٺen=\ˆ듕fx{BoZ:ܶpݢ#AI͖?x3wPE^Uܷ'ͷTg$c)@*y;xkL7tcѮChWMYgLj]mൖucD?Qש ,5Q}{jm.m@0%R8t=ԐGRiW6T[ \)rH@X >aOK@v{+_*w-….9Sѥ߾`/esf̾Mʅq#$x85rƷϦ=ioU96$郚 qgG4W:/ȇiWBڿR P,٘'<h{n?"ܿټo/[wm,k_jwh3Gl%!VʮYC) )hף"V;[;4F].X rA|J{^Z\\I,#ّ @ +$@0AcOO;+8DCz10ɭ(+&KM#KPAUD_ lj(Uַ-GNeF68 P*~WMfԵ +tXO-B%z#r$x$騠R54kԭm܆HĀ11S$]]Ik14},dFIp:=q]OLST[Չ] 5'L*cB:g,T#YSJlddH+R9ǩQYtױ\Lxn o`>l<6<\n.t:mכ< TVrQkEֵ<>Ցu>QqӑҳK?;@Yz=-vp=uXPqqXz@"0Ńȍ:_DdlgX#ˎDK~ ɮ^/xOL;$,s 0 Ө'=:̏D kk^UhVѮJ0eDwPv7vz EچP9@h_kFZ*³ĉi#ld l=3Ҹ^ ;ZhZ\Yk#`r9RJk_C[F1);C?~(e>յ=/P I{KDF#%H<VBxȶ:mͪ,rr;E^ҹnn-V'Mi-wO0-א+B!@,rHOO(hX_ZEkӞROߵs?QtWqOkR-o"q %W琒g]>dΛ$E/ڞGErVv2փQn!F;B[:n.=V[˻oنghuzgkj oDU`;69+|umc[xw\\j>.<^R󒇈ͻj};mCGte;F,M rpNrݼwᅝ!:!nö6<1ʆYs]4h$HBvېrs\->jZ,K.w-EhZW S2y]oqibO291@ڶjR-idcTdW;}ýcQYaMlr t+#|`?,Ϙ鲼eFwBF>s# iW z {TfGE/w>|FKb0%񖡦vO^u~,@$) APFNx Aig[ZxZt6va9qHwW{/Mvw*b@gzLJ,IVO6&/ܔ8.#NY\..#\,fw@v7*gr?=YtZTmyH<`{սN| k{2|ѫ[]2U*ne...Zye1]H tq0T*P;W? .'USn]X <CT5ۙl?][ɡHEr?QuxXng@VIK) ]>OzރŚ%P߉na2m1lc*ǂ-m?QCͭ߇8 + fI#Ցc8 @9lfsMfӮCJ263y7>\ Z3f# t0ğm3|@ԮZ<W&{)u;ۙi#j )7;t89jڤi+=a2Dġ:j1c{z\-ORpG"g>zRسi5ݸQtp=v:Ԛgf0, }F`V լ+?5HmmULj]FDrp,@h:MML?+t>?5, O,K1=Xirhpy?od}qڟ7R6/|^;Hfj7Y As>=!XS zϰ,=iuh*u&%3*@ H?x`u uIb ,t Hs✺,wڵu$uLcd!DO vsq@<>'u?-6U6Qɘ.I)Pz#=3=ߌ4+J㏥p 1m&Ii6);ˆT@F|_ 79Z)SdV_=pdל>n.Yn7x@0(_}Z5h!V®0JqW7JЖtuTpJ9* 'hv(VDVE R21:W4jk}>f%ɵ=d Ovr.f{ q4*€ .3"v؀He:gHKvUQjf8.j xU뇙dkWhgQ (hҧޏ,_Gpw&vebzМ?SE/eB?J_)$ "V4gw 56ՆAMXH< 0+"C|[QEQEQEQEQEQEɢIRE*pF r7 D17o;s9*(<3\⅀YZ*Ue\xbz{5#W-6YO6K~NGu]h>t6etg1ı/AA]P^DnUWqOW5~S׭,a҉t\^u3 =W]/E_zD#4ܞj1SOPR! Q5sGA*}4]#Ԭ<)l3B/U=zPZZpOorNTHжoQ]}*MZ-QSyM ITs32u՞'o fTkB>N]kQе O~m%Ǘn[qzWDu}6t#>knMӦ!@ "r29>'NFtTK56ɞ<*}ll? jvOyo%n&hR đXmo%0ZBK8\$Z)E S[\[i "V\(v(=sYX퍕E"@D1FUn9 z+boxבYrĒGj򄍵rOe}4ivzTRgIJ>;fI\:Fiػ420U!AU։yrJf͙#>1v:.PxhdvnWh #U-m_EEx[߼[&Hگbkmỵ5 $l2H؊(7&JW8S$s9EWJ]mŪ}03w|tR<)4N922E92` Юo,x[[GʬT9?.@$Wuc.~y|^dCf,q=X~86$iwp" YH:؟NMgL f DS"#\1U'qҴ@ 8VZsEefK]ЎUNO1S|mhm' #ȐqC`ޜW4OiugG~ٷܨzμuM쯯5XVW q,3 0UM#xo{mu5PL%\??"?4b((*+-m"?3@( wqe7Icy3=:k+3Z~GloyEp6J=M)5i|v=弖TKd+Fz`gQkۏ/ټBK19ֶ(퉿,&)"}@oU-&JW2.d|9.!ɑ xę>\gOJע[1AbZƃ!ce`CX@ӓ)!nA?Q`%ށ3xGUm%kY8v74hX6q$)u|UON&Ş)%մT: b#vc@T v1yoDSb?#Xzx7M.%kvP+8}k~EP@ )h ( ( ( ( ( ( KK-iu[T;XB{#"\HWvpq^]uk%ѮE\Z=q)m6 :s\Ap7`}NzU{xjk" %(%;xvk 5Ch؟-4)Q fg'56m(1[6o#\6I1,.zs[M(WbYig5ˬ[]ɌovbVC?mMmBҦ lwzzEʹW[ΛJ{>{OhvԶM{7Ws,p; dHX{vU^ntK&UsC|F2@z՝A -ş LmrX3l+io4;ҋKA.A4i:zŲoq,w+. =;Zz26+IbdPڲ4_&=ޗĐ4ҖB$*q V4GA2ﳴz4/?ȞO05'6 yF8ɐ]wt[El7$rNO8SGI, Z1toop>[X@5ۀKaSݽq1޽-Kn1,'3OAPXiVZ[]8|wpSŷܓp8&+wXn.*qy0\z&x{HV]Vc9AVrI'b1֭sM ;Y2MCƹ22: \ō<=x$Dx c tOג_YĶ76Lď&ffexW>!~H2 PNq +|I}&M6іfYrqpN+9QX,@t% 5e8+ʱ HP\B$=GIXƱ]ܷgg jUFIm[phN·/iRHN~to?u3N=ց-ȑ[N*]HS '8_OF47pH^6|t㎹K(})*18Ϯ3DZ+ľiSi7'j;VZXsT6y@uno /ĦxBH 2ϵfi!/-#;Қ&~c1!% 1As(ӦU}"IUh5n<1U ` 8W%N+69Z۹i1ȾI8 -ihݛ}PHE#ȉ"3BTCO*h$uվڷ{ψ"F_~!LxR $.@swJVtU$C(+1cs\k)5 b"KX۳k|atxr8OMf/CR(kq9hF*O? 袊kfY,73af[\ymŴrIVK$RY"uhU:uGy 8 sWG6ھcZ.{HtjZv_&%`*~01VhxEy TV` p +]dž?&Is^kDűU%9=@0H"!VX ǎEpڇP[j:.ic<85>}z [i3-0˝=:4꺵a%Jт]$Yk gĒPڸ]_Zet=jT-in[BT( GMH~ۤE $Db͟]ƽ&Mu` !dvVe8$qGfϩ{ߦ+;kA}[+MEq"wy366\;d뱈ShKNm徹e$;7j+~_ H$ynp|pz]S47V#ԴKUd }@`ph}Td'Ӧe3#kHŻ(<µF`Ec"-lsHYᜇ#<`ץkoCq"yk(TU0 voIE{W9$g,cb'j8=(~.(&aE42ƌ$`0 Ou[xVE!-ZKXvhYjdBשo K;Wa&Rhgݸ'[H8 071cMr.𥷋븾4քC$2`88R@?zjca+al[ ;+P8k+hSbd2sǠ(׋΃CtYb\ˉL%le <+=2GNMG[yh4C]-YO qZ4Pa:Ẽm0E;q+ 3ӎI.=h~-͝[L.}Tx]5YA*rc$cY]oomAq=((p-&U[uYso/C;Yr?uc89#ing6djqqU'1x{ź54o*7lܱ,ē Z,f ~i~LXW]&ZekioA(A rOpfHI@ 9ZDsl q:chPL!#)++V:nPBZPtK?Q,$ETi0@'5.|GGHxQ$ ޕEfxM}gZ"wk$(}̤}\^iSi/nK+$nHyΊڥkZwi&`21',ijdTZEMK_Hv۫E jhCFݎq٧EQEQEQEQHC@ EPEPEPEPEPEPEPEPEPEPEPEP\/ iEs x W2>T#|WJ;UQI_@dѣ{} K{.Oo0 Rٳ@<)4L92 닾=V m4k ʁcig8GZ(źi5żƗjsVյ -ܜ¾Jռjt]yOX=Ez?ٶ]Ҁw v+/W3+e݉X$[JnQE18_ň?K[ŰAoiop v UOY4MTxn#~hW!n2a9kC>1JqvhMzDVY2dYxNp9:W[E G}\WX$94UZ^as:Qe$uWeo$ lU9?0gU?躆{{ix% Qa=Es2[°M,;ennmBL7hggV:5m>v4gF2.x88KkO(Lr]d6:楋ZbѝW@<+ecm&=KJ:\mK8#nd㠫? ,`ҢcHO1vϳ$p8 ~K->Mj,VՅ#d{g*^x_5WulmʹI%S*9Tpr j'PİVW 7u8˩)/ _kVWO{`|pNxGyi-QvHnwǻǶkWڶqKN B~*fty4 ?:l 'Fסn]ƻZ({ۺo#BMԴ?+yoM_Y͠:溔](rZs'_=p\Gf!KwT>18Ƞ fCn?PF d8yI'3Ԛ֚hy$Qwc2MañUR^IkbL\>>_-0vmJnOyubY(~OJݱLd wF㪌v)!ԬF~~:(džcP2?JseG-:{ k ֣Raʁ$%߈Z6׷vvn 9m|cֻwC%yn_jZ$=i"y;Gt#NҴ:Yw8Im8|Sam+YKqH {Vλik;B.ﴫ%OTb1MQ|=-j0wB%G#(^u]&=kPT۰Hfau GC͓]𽥵[{Kx]MJ Q[rpOYFmGŚΆh|dl{ G2`{ޅ!M?ڀ7+,;_k#o`0<<:PqX/ͨ/b;#2T?ێMR`F’gsH˓ی0;PC m9OV@KxI7M\$Vfuq᛿ 3M2^ݮuH[wF*<)ܽ?h~$te -g-f,P**x'sv YEVPCqhT`XoO&KIRFU18Ɵ"x?)E徱5,R,@Im?g?D.SP!ZCt)ѠL>}\x\ub~a߰lf?ݪ9 +Cٿl>cg?o@KQ]W'?KS0C<?z)wè}8lh>T@|eϥiV]jXE'C#pgm#VfK=Vp!mlĞUF\ "]WL1-ΟQs@+ k EɇTtgbd=|3{-:}aRO6yITbb5/n[iЕnfpHT;]xhU}%ФmAӒ9S(ZM=ńR\bYTpqĂA0jQEQEQEQEQEQEQEQE5%u sX_d:fݟvL;oێ68u4P??`+飞w2S@F|cX[MH#eaЂA-7F纁l}>K&O1N2{ZyY$Dib`76 8^Mm',7M5_fD q ywaV2@Ae]kh^-{%]B$vF.QI&;+/e4Z\4țI%x;=sϠ[j-c3bk)%'sf:{gg%“H9 b |#≵[NON1fN2AH#&|LxcS]g>Ӄcހ!,gԟO.l]КBy ԩ+.G>bJ+2(,#uǎf:i_ۻ[߼MFk'C`1*( f=#9VZ{4v$[e0a5f(JI 2=#w+t>Lw2 v^۝vnq3\8"Ι} rňv#ܩAhǵz Gq= Sx|pn[7 6xBu99x^nuG-5Vh-YLSFhyVӲ (QWhS^<~[t3#>e 0Ѯu iO ]3$M1!AI 3h꺭IMT;-p=HjO3y6dim:($Gj/]zzn3Yȹs,`8=3ҟMC6^ifmdCߑ8瓚jΧgiee<./Y6n@}Yә6{|7ϻ2/ůu+J /LHUVwi6k1Z!-0V%T# =%YCsow27ڋO;8#p =(-mO\Cg&Ӳ}ŴTXwgcFz>tPӠ׮~i2 WNݼszw4!$v:y#j.,ڗۧ'ofcND9em6z"ƻQB1wsIojk-ӨJUȠ7_𾻫g#hE2k@@ AaiZDXXA"}n1iZg@Ʋ+` +c$`YUg SgMs0iz;+\sIeInTmUz +mhm}&V'VH#]BKÈa\`I<V5 q%{"F =]^r^Goiu{th77&;A K;@M\oqe_A\Į># *݈"IDf7${7gF&ŵDȌ-ڡUqUWZEZ}ޜ2Gq%adTVۢȥ]C)ȧPhu Z} Kӭ#.GycU/6|1?KZKeY`}EUDTE 0 )h{}iIw{qc/$Gh0Gw1"?@TϵA:R˧EsR]9PzrgCwuskHm!v]%ܬ[=G~=Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@sڔw,Ұ(l .SҺYa2y^Y1Ė8x|JuݾdSk$}u> 뵿 lxnE["+6y@HFrޘ =9 o hi7ڔ/~0=23ր1׵?ZU6v+ t黱sc5i J{_ _]:oR%Ȏ\FL`,tOVѿB8ُ/3X= 7&=ܬ 8g\yl#F]Th/clF3NAW|ҋ--;UY D`:xh@@b(9U2ue``I6eQ{sg+un9}J_^""I2uu1 \^%ܚLj]eh&'Н늗]dž?&Is@dҼiΫ6c}<H}1pg#ۋmw_ŽMq\O )úג"r:_ :9e[Z]qڅܗqNmO}8DƩjoSư|GBp2I9'4ml>xzk˘mζ]Hs/5{mo5D-Rck[xLly"ŨG݀vPȉ\覮/yi˫ɤ.c?bIjRY#ud\5xq}hȟwY^/ֱq4DMfn-g&)E!0;3Y];VGOykK2M4wb21Bߊq6<:%7T[{;{Yckd+f?^fkjk)^@DN r6s*̖Z|2OM6kv qwkP6(g99t։;K54EE!Xc]~^ ݌1֏qa=CJt ]ǭGkW6V XR%ln;A9bg-x66ݍV0e`ngƎof-#cf?u@ dxZ{}D#MΟ)uH*vC ZgdfdR)ʰ~`Egi~tw;`x(;`8ç /ƾ"Jou2B2Ā >'jk݇[;l^W|ςpw YY@gː ۯĢs<+i  1d"v u h6ziy*BG]8ZN-S]4ioϷ. {mbMtT2zĚX^<4t|ixhn~J&pVSAGzikS˷eN1wFߥ?]_XoX 弐=CRq>TV>$CiV2i=L)FT8%QY/^Mzvc P$Fvl#Fo_⟮lC˔3]Ie'<.CIkrȖVhH{T'Q>cә%a9F(v(((((((((((i-`Y &`v `\M; xaa..e[w@UShܪA p(4I,l7Pá3*)f`I' KyiꥆpPHsϘ u~02\iCNn"ifFFdazW%qcwp^(I?^0e#(誺ukq-͓1#ɹټ`;YY^/υ_Ht߷Ē"L-3FӸ}h~io$nsIbe3dkĺ_3PmeIJQkG#8JCȘuv}$hQEbxKmdx,Ք௛*H>1#@\Es L8%ckZ VOuwrE$.xUU&Wŷoqy: ܽځI!9M r(;7W7Zzv"Em;ܫ9vB˔!Ns*Ԟ'}>]3_`N!xӓ::Y."Xdp >ҜRDWF \WW%,V#MϷLd;W1ڵu$-UGdnƻsJ41\DOK}u wkj.]/ i2#CuUm;6Ŵc~قDcV'gZA,=r fHthmZy4(Mv[ˉDrBĜqߞ(.'#4({HUSx{{!)r4Ncp]NN:z皞uZPjZw`uF#yoGúS@ڽ޽|pF$$Af (9pzt[3^2I=֗{~?jHVY դa-m(2Q T㕯 I;_{oOv|_ 1㳼K9KLf\pI uU+ZSiVoh;Q sIxT5t=-bnqV6}=5AuH1Ơ'%Zܫ)>((iWm<2ǽO&ޱ}/IkMBR$y z;^i>l/ܽʲdi}~oXcRF+6 _Zet=jT-in[BTmirG,3\GLw ^=7V[Cȥ^92_O4"7M,]mXR  g ùb[ ۸ jMΩmK"q36Wh3UgԞ&Yt =o tRn ;.vl)4Ycf\޲|띛OCT~|Tp\$<7b8>|g8=qΩNDZ}hw*²>084WfMc\?aYgLKvɬh ӥӚi Z&"Gn;IV䳷Y El#(*t_CtFpdl"22R?PoOY),c;.r$sovtޗ2xVBg+Y +6)zuς.(.5FGԭvx&~f;FR5Vvr 62}[}w&Й HdTp2 A/TtYl<=eyyl- 0D's4w w[m lLNx%yܾy|1ah~n,Rkq'G>|]kIg%6c{K{Y q_ }MutPf?<=v 7; ƥVAR d PIo$%'$c8y>%cXxzQ +4c%{ Z]^ ]QBr esqΞkZLDI e < qg8 wtPhiy5oq,/I->ba:~SֶSG@\R4 B@0v6,G 2x"!SYO.4KNPekBL?pJv#84]f0M.@@95>mI,"tEe>h@ՒM:H%Dc'X>0$i//"BG>$v=++2(%NT1u xco5k6^+4حH?n'wSx%%wy\s]jnk.mhgxk.C! g5v8oDu #Ml8,{MN"b.:ʸm<`Ed:Ku坽'9 \`uz}Bs$<J ln zgp(]F/x\֦}BF" C[%p>xZ _XE?PD/ɜzK`jkVX,m !9-%$NAՖvL! ?w=p=}ZG5KH.cr20GLqT4 )D;dy%%b%c*\M]kZs?:Eė(1!Hƺ%ψo\\4Ą`y ҷ ikS"dYndOOkú|5m*m8\s@d é5@zx[TmkQ.$oFX` d嘖l H֑ik;uvru]|"?< h34(@@=)h(((((((((((((((fn"Ր<GxC +wXѝ*$^/_[=ݽK7 )yvه|ɠfT& Xwiy\ )PrcgnvqoڜmBB w'ypҭoڝ2Dky^f`Sr'Q^&mtwBݱJVL(Ǚ0qDsm i_pV &_ n@EX\΢Tf*p =s@%ƓgaRډ\LUʫPw џ:%u=̿lK٤c vz߯k&Bԯw2\_hm¡AewIi^ 5fk)L^(V=ǻ4_gV:5m>v4gF2.x88KkO(Lr]d6:楋ZĜN (h,eAq)0wss>+5_ѴI4,l-8R҉X ?zmryׯҫ_4]7Qž䐆t[tEdY/+B[ m|MFP0@{ơmsm4E}fTNevr2F:Vimip[ Y| ̗9fRp9lQ |`t~d@;F42_vм8U$*'otχ_gvVm̠^(q~_s;&O/q@^0Tq^j^%5:}#p` \C+[9![Ҩdé߻o5@BT2AppCSnn#SB}5zrk7E9S0v#995 jQ$$#Y΀0uUw@JyA9ٺ&!5; .u[d6|{ c+DR+n%obh>rN  է^Z)tD!iqRL/|G&"}k7fm:$a`Q];[n8g5񶑪As#LʻJn=N=3XB=gF5? Z7SOq,ayf[{E)3: {xwO;]>?MK Rqs] v%5_Ě(_ZfP7_hi(#Kn5O.2G;֍gGCBV?tU{ ,SC?kGʢЄ^IFh/˗hI}2'7XyCR؁ـv'<`S4_!4pm0 Hdq\uMCK7:5F'٦$D S\³qlzԔPEPYvZe("8 yiHq,ۉO (jQ@Q@Q@Q@WԬgKo: # EX9j&ꚽNGkwu%e9Rp|[ IR붍ldĚy#!oeƙ)t^9Rv I2=3]P@ϊ[mNjK`>oNxֹH4*W@~Ghu,혌nӥ`Ni5wa=ЕsD;8a<+O-xN]7LPX4 "3ր+[?e[ -plXx{=޴Ui{iţVW+P{SQ G9RO ^̡eHmݰ JfZEkrIST \U hsu8+ȱ{%43KRⳖa 2O5A?B3=Uk\XOr̀sXZi^6V\By pzsY|En63[W$hb׬4&I'Yw.6ĉciV|:bsH#)f?-RBu~ŰchQ|Q[ugZi.-Ymv0T{@˫ipi]/ cݗ`Ia7q hYY7z8qW+) W.:tOK]B؃̒N?klPw> #oڮ^U- = zCX(t.=JwY0"inyMb{tF[g)*E %H^s:ީxn%hg [RP+i^/!е}fi"GtV/ˑxT7wsys K3U%|N.[Hf4X$'2K>`zbڭP ݤ?ksmqϙquatM.^G߰K?#gM3ݟvQxSӴMB+kq(,H;~@l'# >/W3f񌞛׵^|G65퟈m-e RiSy'8o,uWLoxã`d «\-iqF&+`a#P82q]\u&ٷ{}'dV퍞jְַ][0pr24u ,+DHB2'T_Yѿ/&t.}yv,k3Vh i4KJ[l5n!ާ#r2\i^mah-X_E[ H̶?TA*+t.J1?xcЎ4;kZkYX2ٔ#֬P0j俱|B2o7.uV)H ]mUMPP/fP,J$ `3c$p: <3?\@Hj/#H W3ƞ8OXjtѥ>F(KDI5Q@&skc|uD$RHܼ`Yщ乸l+Tp&l~@.g, ˸d\U5 +NաXu+ [ȑ*\²zdwy5&7-B{q}9ǭRoyb'g gӜzW"kZ--ⷷa"*`8ӮgLDy!w'i$)%ʑ3G6G##=hR'Fq`,_U-c}( 'RN+q&OՕ>x+gZå^Im$&ʈ_ ӞkCOy.- 1*cg }g6lI2">`^B|O|Gz5?4"O.@C&3Ԃg8#"x{SZѭWFCSq~5e-+ZۛRO`ͺ0@,tg,HJڗ-pbɟm*?G;n_Ic##iA#?)E S[\[i "V\+mcD,QḰS@;_B47ef7\#8LvᑪJ-y~X^Nr:^3޷KR[I6\@bH)V%1Px.h glF}۳1k}YihGڿfwOMڻ*cqo Ř]4bE!~nTc?d>w冻ki &O3m?ӧ0]]xY/~tuIyj.pcMO\i Ӭ/[Nr IͨCIelX%2Fr9==MIuim}lv\[0JՇ<崯fkH{I6boe'?]}"U WOҴ&Ms%+'HP92h,7Bj87C۽NF P:d٢+i^mah-X_E5i)-[Wl[mng;«{1UzRwV K+R+cXpH du@u \b7~8>ǡjP;QEr_־!Oi7:+ZFxyMqyjfQkh5@1+u08XŶmMt֮Ys6y\HmIcR <<R<'-?U7MEr=ՍoA}J5;@Hr@~SW:|CI݇pH>@vIuwueu=̀Dt jc[Ppo.%r:FjVӬuKvpn D.GCf_to(j6Z۩%b02rpQ I 49d ۊޢ9[Lxj0,}vya]7O0ɱw9ǦiQEQEQEQEQEQEQEQEQEQEQEUMJ| ,Q}¯ƭS[Epдbrpg^P*Yaa> rcݘiX2Ւ[Xj:옫>1c^IEym%) DZ9/JW2 V[(p[(<)m~#fյ E4)3|@eITk[?Ւ47+Ym\4XOewwr${{yr&O6~fϚ$h4eݒ#gb!T:qYQ9_=*3}Oҹ ayx ۆ}..;80pݒO͜9w7ŬЇ.7y-!UqP ^z!٬!]B౑8$N5s>}Ě] ctHeěQvWΏhՕ$x/w!l> 6Cb1m3 0߭d趷R꺔Gm$3=2+ğ{@GOjҡ[ú#^YIvu9Ug61ݓs.@O𖋥3ҥ|WߟUf#ݮjG{z\J tZ4zׅ䌝RhU6d~AnnA OVf2kcܼ6ʅ{>=W %eClgsׯ FաgwTtYc^?Aک΍~wt\۱YUDl9PHawmʢ̛:ȼC)9Oǡ/=UӮRKC#=WfC!, #7 ;@< AP5YlH>+l{UYJ A]񿉤-ź6~p@!x\ƃ|DNL84ɮW*vHaI9~ "o \bCe#Y2|y0Ísu s3LɈx]wx- 7 =,sDѕLX8ٷܚ}0m$v:- ޵4Ϸ\2l ? +;hMFTd=sEn4Icp[g^N72M3]޼TwoیV5.nƢ).!_,Q^VZR܋(|spS|ŷH,ܓÊ ?6ZVkO ?Z 5e% p#$Q_hfq5ݷ,rXc ^|z}GZw 'GdtP1r{p:4Q7Ŷֳ=տ$g/#-=0,s)#'+ӵ [)%k|+{}2}=/Š_i}XAv]T(p=FhO5w*6ʽOu=AG"3%m4{{k;8'A >`;f+{~ɪ?[HY-KC,y1UGQy<+i1I͕A(d!w(Tuhz;[k{H -J*v;q[I\KER*G#uVA?{#).AmHntK֎;{>dH]+G'^w,'jpګ,7EZ|3r3 9 z'4ˉ]tgv{14m3|1]Z,mTмi]eC0~bV96W;Cgr [XRFaiÓlc[{b\寀=g42CmuYY#g*zt"!!ė:pY` `i$u$uVKX/YZ@Nd*6]qzs!Qg=(` ppqڪvZk=s$ V4tGSH.Fx'8좀9ii#ks~3>rm.7Ҵ|t< ZZ1\˩MN$+%,!e9IRr`4}:V5#RjWr0"RI U!8Xh潻-0JlIʨb@#qxOZ|;cCqrohj@J}k7S.k%yh+UœwNg伲#x1,I @ |="ѭ[YEi2ms2:Psqyb?.mISZаɫ,O_eGG%pֲF %981je7w k[| 8O'UWм9zoۼbnmtAqϾ~w`$ Ö6wr[JaEa<\uT#3SRͤh u ݞaާ8>x{BMI~Pms^3Vn+ /ͼr%%˄ ;^VM j2!~!A@DoM&eRIk#>I A' TxZSuԅ[h`A&$Op=8 m.[kx/dh<Ҍ nxQں]*P;n7ovw7皻TukKZQshʒ@1`Kq@hZfi=@Xdb@R3R@P2I<@ EA O%s I M 2z}Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@pW?Zwson0vI{⻩`R',i:uMw|,7 Wn3hڡwxcy#1(,i#"\'k;&p,p)>Dh.HąA P89.tk7^RIx##20FGC=+8gǯr$/Y2cjL:Vލbշ :K5ɘ0z>)w/;)?0OXYcf\޲|띛OCT~GVrxj8"3OYuwP(해( 9G`.W P*\ ;O6y0[@滯Ey+/u._G4ϮF\X9_223bc WWNjlӍ& p yXY1xCW@RUf8} vk#ޭ`/u@4=*-C"boB۫1$~ljlmn$H5Vxi1i7R)2Aֽd\xjIUWu-n(55w8m.$Y ?X^=/JKWY!qlZxv."SgC&.eN^BG]kMO*h 1F20} ]^~&maVƣkwGc OЖzѤ5oL E$wQ>G#ɤMu85oN\bH_^GަHc|Eiyd{)pF]q=-K]Iud,azva Xָ9ڝXB[-eD5sϘ+V0\_i4i,,KPAFqshxgW4E[2(ep@WwZύ5ZVVZ5„J1(w`6A];.^mźHaX=8ܶ*zhJYRRO)VII~FO^GGV_ZVڅyH%wEPEak#&o8,92U6ygÚxöq4+u-G ހ5(OMv.K[KlY!Df( L e{f5?^ëGo{hK1P'$=@mEfe3^kmvˈn=*׶=1+)p^@Qd~t=Sj&e*D,Vd qZ:bCzNmU;V ؑlE*{ -XW4GYF{ eVHfrTK)τu}^Mkhѭ yQrX.I(Vw4SB2XpjKxWƶvs۰R0@5j'.BmICQ3Utj-^/-TkIPH ݎq4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE ݤ֓Z]D̅$25MmErxKd>|s,Ƌ(957fZLl&|nۈ_R}OEl4I 7v]Y5',gb'&1~ҷ+ռ9ium:T$ n!_*E0L 9(W|oE#83zMSTk"3+tLoٿ͏/7\ū[9|sut5)5TuW+C{5=,1XXY\DLfc2<#5\x/R𵵤viykɦfL\9R~PQNӭvzljtN.纉̈́{92 Ux-{Yb:-rxsK{R77&up,@} m`t4HDEN$8&+I.klbKkuW)mMH'#!0yݛ[i~e8]&#{(8g^hkirЩ¡_# uM|ƏM6>[ Z"-6ls\fIu]]|7PL0$P\ɾ5e7\Tk.;P(t[ B:`emG-Kf)gw( Ծb?ٿgǕm=]6 t}|QL|iZ&meEt*edcZCdFVdlV ϭ:\7"j`m߻#٬_ }K(R"󮊛|yg߻v;c=몤UUUdh$[IL1k{kx-x@Eݥ^[qo 2F<|akxCU]] -Ί2Z5V# oNxֹH4*PWZ[Ks<8bB;tU$UC1]}^:t4fU]$E =Et]OUm;1ʹQ$,$8 2>p猜d'm/ -KdI I<{z\?XX^si:kvcuYKCC@9)Y)! *ymn fuqo$Z{ys淘1#lU.uw-fǩ\$ Izm_EEx[߼[&HگbjݍxSӮm฀ #(RK0b< \smqgL6+8,cp:>A_oY۪ܢ|Cwa i?]cq}~`EC,GPn̨Bz\^,RKS{: O;Qq±rFu|xIˋ @>[嗓O5"ԑs= 8\&OPAh%x`y#IGT3}7?3Y׿/j_k:_*hF6enqԊծ'ѯ-x X)#'\MS5eF4{Z3P$$矜kV:X_3oQC8Uqpc}4bM)mGp~_$wN}@5N!p\5孔 ,G".wͩ[UsѺl/}D q Bj ~|?uKo/bU}^X]mrWTcqz=kWĺVQ=c @Lv 0yuB; ·. WɍgçVSڀ:Ǹ䶍d0:{ڋ;o젼}΂DoPFkn;BK*ܼ(ؓ+SV<t[%"ԯc'?(P2.cO6 cwbrkX?zo>ߧpɲB 2 (Oojqn^Oo p@wA{1U<9-P4$ \&##+{%<\k mr<2Tuj[ʞ(j{=LY_ۻ>p1p:z%kk ЇY^;w$F˹JF9jwrx-&GXl%3mA흲¹)O|NdD !!+a ͸e219=4=Sԯ|h$F8p3MTՍRZ;I0}O5kTfZ8Y|)~FWn;Iv_F}M2fYğ1vT'im.ynt&oynK/К%Vkvۮaa2y΀;uoZ&oy*@ m?UGqW!}$m1IKV΀ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (2H?!RWAblk}QW#V\ JO2Yr6ck(8.qR,zeAD0-˜z=PEPTm=5m&hMy 0P5u7{IOӜrL5e[_ myo`u Uaڣ/ -, !#"5sr(&q.%&16 G 眎sTl /[NVv;dzd [^c[F|$o\qC$^h\8AlšuHtؒp+ʹڬrr@t3Y`XV2X5wY. ,`+?Zo U(^WbQG$ Т7^GԬdu# ,$dGQV<1qus{ΑUY;#RBڣT#ѴDˑ71Dsv ܷǷCZVuqǥ^CF%Ico*9>IkK}giJ(@t*IAϯ ;F8U vPo'X.)pkBm?:VQ-%[{L`걖;\23]V}ŝ4K?-1|b7n_xm[=55OR縷-ëIR@=LN9&/wmHS}t ?:\2\ٮ \랦jk_/ բtE'$1mƺk{=2;i֖sF Hq]@֒A.|alg/ ' +0I_=sçx?An{-m2K<-YQ 1=/R 46r@9m_Og9K,faO~gk 7.<<Q;|{/^2@I!f$g#|9u 5%k]YHIE3㎜vw.v'T$Q(A{ EF[o:7ij;eƟ>[qu}ooyDaq=)تkpeɕqaװ@[[Egm (*ǹ:NGV_P:zz&L@?h;MlKD00x_^ JfhI18fGLvF{Rͬv$sVqzL"G,K,@ICXZ*8K}?T{h5X+C7+B2Ev:1Jlr@X>9>ŧEkvFǩcI':m!u+(qYuU9=W2e# E-PF{p|#;IrGa+,eb׷{ͅQDs'ۭ[|K 1 6{I+EجJ~6|c46g&X۔"exv\} Omwj.k%Ժvy" 'J7P,G4N2FPVfGYG)'e‚xI=5xCYjhgPʱJca#Ҋ+U Ŷim_$ByX( e~c$P,*EhPEPExŏYck@ZMv##1w> `rsۭtW=_CRo8D:(R񗉴*mFV9ES~Cj3`glkzcuƈ^Zڛ,,H1c>#QUԶo% tOlcC[Ϩhqj:S2DŒ0$gaL>^KOb\F#dU(((((((((((*w%B"OC#.}9>c:+4m *pFG#McMh(Ӯa,brǖZ,]'˼oҷ9xE7R2#:Z^[՜s"UA @.{{mkiey8#hƭnaO\|W_Ec4kso3$2 Ui^]oh,M( @?ռe-ӭ.nm,MSPkx" CF 1T+^ծVZs^ɼ1'|s^隣ivg\kM;ZXۛPyzfK}kNtqcp2y)#q+WsVi"i|Q Mid}j-Vm4s22"q$ RW;Xt&0Kw\\l$T[gy,퀠yɂg i=wL3f,rŶ&Ir%MfBҶFO}*r~?y&KbmYSu{W᧋v:y"(?R}e X`8" -7,#@!RIYZZL-?VF@7բ1I5G^[[j$>IKd1M<^学}z*9ޡ0x0%@g FO#h4KK/.5]rMb) żqyRNV@c 0F~}M x~o?خ~hNqqp {5iYY[")UXbT :`p*`\VȹWb·?` Poךf_)E|=͇'?H5h5 k2EmJ .EǴv@#i7 &hM"‘`N zVGA>j1"V%Hv]s7v2İgenVfQ*+[BfٷǪFJ $c`1`ϴ8ݳv}[!/|!5H-daAlgkiZ}l1N}Ai6Z: v,ۖ#ڏ5{ϴf+y۷<15x2}^bU9HB<Ӵ? h/TMRbC嗖68fO[6([ 唎F'>quueA2Ǎhrcᱎ;*}yji'[آ & Q+ qw~"Hԭʑ$I ˆ T8 [YCgi baP0=s@.BBf?kÑ ƣs> c ~°5Nh%9c$09\f . GӤY198&8߉6eoqwi[wK YۇI}zQOt]J/~>{ J0S#xp+C7\r+#,rb1 RZE4tE1]`sr:mm&KҡY[R) ~P8ԬOqX-ev#9@Iڄpklu$DDmʳĮ AqٽKte/ &01q.4KF{{D7̪md'嘳^;#TK-ILwG:D\C'çNf:+(#Ưn8#VѴ=;@&lD]Xq8t4msͲ"[ĐߥCpCvAt+-/-OZSn6U4( *pn?w:Ew12[ uȫ}}goueYWBhukGke\Zv }⻇]ZXmws ,fG ۢ'Ҡմu]*[ aHJȠc|U'9B8u(m:z.,V6E3#FzE@71B8_1ExgُyZjk7yőG#:㨭8)BX!v91;N{|]I݁0st5tQ\Iil;*v ϢAxO8=P۳ /Y؟\x>6ErRh5 b0H;]O>+ c{_({9y`q ɸC_x emUm-)nAƫw84y!đx]͍\֘jwqߣG_ǽq:>. wZFE$R/\G$Oir^$km}KfqM1c=ՄwJc6<0z Go^,z.隙 -7Md2-r\6OJm+WZ&^IgpyQǏnj Z5DfWAmgW i7:& %y6B3]9P}vҺ ̑@I Q}FO@nz. v)'qo[iP\,k73Hk Y ?گaskR[54;BҦfGu%o2AaV;k\z\iʗlbLcW.lf[eiPR.r<{*id,d[v78s J'xuKK!es"+E8ÜNxP5m4ܵ}<*% r@#k^mTAiirElr1' yTkAo2q|Mjiַ%̺|h %]g!/Ry#tUxMo#6-ܼVc3gmyN3Y2,Cyy1H`8ovPj"em1[y|xƖڔu^Gsߘ8l8Ac5OZҼE3W9ZIbĐ7W^FQ+[m:.}b1W4mA]~ђـP*$E#Y>{mn 2");wQtK<"[H$)< mqլ7*Cȩk7riҬ$og NO\iPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEgw(Y\]YAsV|\ˤwYy<1Ԍ -SJm.M׮54HQvd<.z:EQFsEQUu+6P̐mՏeZ[jkuiGʤ3SHRFk[g +{qmL^U\F˰.lRq=8!qq#AWᶂxbDi̔v\SOYMmENaexwʌ;h+PAdހHP{w]p쪤. :5X SzQ\ϋo|K^zTOw F(\ jӿ.ou.q%9%sgIZx ^xMHJ{bUa z&C0}~5$R-G9M ]@jhgO4ڇ"c1c6TB'8 ܟh;"*kz~+&3c9@3[9b"ms8Ϯ3*Z|5ľ")toi9+#]ŠƉv5R[I }I cHQzMP.g״N(SA,R@_I6;HeG9!=+R[@ot"Ap豴$}fKEk[kzgHRUb6`F3G9'3[.uX!( ]I !J(;S& h'U`gs=߬QJWddLj(((((((((((((((((((((( I.YmBFOm&6 HCm%Z\>9FcEpFϔ r-&6k\>RPm@\|)>6C$e.],lq@⻉5}l%H7-"1PͲ=xuuo&i{ 3# fX }ֺ*|U6gkmN;}'g޹zjȌ]1As4co/+scK~lz{W5j_\]'k4;ȬGC]s^9mͦ?a,w#\cjC@ h+>[)!LAG?6 uuzOtG@&k5P18^OgmK VwW:٠X̤rsO=qW ԯ|-mi^Z2i2ǎTct@]/Eӵ saE2 Uq `=pk#ws^niXd A?݁߶8fkZFYd$I5]6 {x nvBkM_Iq$"x3،dd?MEXRM2IvmQ\Ə jhĶiZXuQ7 v6M/z1=֞!`؍CTӟO]O[![ 9\`@gcih?{kͲ]rY.IcӅ\fqovkYRm9F!]ęw {`*P`ڀ9jc]H7`ЄP&S}DDn=kVkc- ubl{z= E[!z+KingG H^Gndʨxz+9b1 NSƌ d<ȯ@ 꺍c8 $2%dX񓌚~$񭿅XeQ"ib bI!AbvI'zOOҸk Nm'Pnvn+ #uqHbAhѴ}^\cg19e+"te$2AE^;: l.59-Oo6Yn|&$}⭃eκ.Elݣ8+d!ԓ@ C@]Hy|{yUM[ozuԖA de Eg n@H9tWk#ޭ`/u@V/o"'K n/BH埨ٕUQO@+őcIjc/gXj;.8V8H2:Πz/)3yqa"|~渽^7ZZ.gӡ $?zmį $pI;(8ʆok;ZK[բgPK%MPchӌ6:Z5ŰCqK$d wƟoukBbMp =WGKkmժ7шg 1. }1Ͻzf,Bi-HnoKϾhV&<9 f6܁P.+sxC{7Qr yo聒5\PaAVXIcmWʷO ^-J r8G~O{? ^#՞}#R'a#(iw~3>.Ga1xV Y1LXt{PSxZѬ#?Pb{Qgw ϾHs }sy\I[ۗcQsjǃs$Zq2`~? ڸTp&l~@.VnM>6֒c;X{gZm6HAYcテ_cYCWn-+x(?3of*jme$H$'ePGĭs{AK+ynhw)V== \}NOEۈ bfm(=CW%;o0ٺ̑Ȗd#0}z 6sqp F'=&'l`nT5;CA`Ha’; (ʹ p]YGh4^Mm!17Xpʸ{Syu[-wOKY,ǝݹ~\`;ףW%빴'lu=J;'ܷI%Jrg_38ԘKu#O/ x#sqӎV-r\ sf́sW G'zf|;ii~T6k VYŷۂr?t[ZZ $Q"~vOZIM}p00x%~lIy0Wo-OUL{.*m).t/]eD08kCL}J[`,W(]x<`~=|A,y??񞂵7h#DDR~S9OxCtƠbB$\+ԕtIg;{"$XGD <:rܻY؟@duPDz}*MNoeH K #,|io Si' `rsۭtW=_CRo8D:(R񗉴*mFV9ES~Cj3`glkzcuƈ^Zڛ,,H1c>#QUԶo% tOlcC[Ϩhqj:S2DŒ0$gaL>^KOb\F#dTW͝ŷI6oAeV?N$FgXA0p 'oQ\ׄP5 Zv7O:ح I8Tz]ZF~KnOJڢvh_[ZjT}O&Ƌj7Dz5ȱ<LQXwƗk7." ]ϩUU>玙ȩxZY"C!mUws<T@jzz\l KsDbv ( ( ( ( ( ( g@S `NO5vG#FΊnBFJpH@Z&4Kb>cC$n I6[bx)Qdԫ*c%Ėg!t\Hd?Pr=K^Z?Yk^iN&,&q[bu8/_X=c2< 0$b6>haח[$ B% 3A'2;loKltKK$fT3ѪŸ9a`U+-Jᗆk:V׮o>Lr{p_'ץ_f>Z]G1W(}8Zz}N֖6c*akZ62\EX=̱0ei@H'cz ?'\գoeiZH~H7?mG8>Z{mM-LȲ\I"T /6W27e K;`(`2`'jnkZOk8S&پK3mɴzkIn5x&o٭c<J@^m7IR-?Xijb}^&xiݷNb$Ԇ#jYC)V - kx .~o$ԒEV&>c5DA6Uѯ3Mfh mMQZRb;(.z~=kLSO"ki^$ʪ3N@`Akn--&)2 b6.zM7RKውW\X{ Cqo^T5g@uBE-_wowzՕƷv%>g4i"kqgn!Ddf9b$I.-i6vov϶+_<}y';kZi:|hVVȊUV >-ղ.l"9سD8 <4晿`n~&=qa$+;MZ o̶}R{kC y'(8<uŇ5"jG:Hb=eX U<COZjHRo@݅,6{Yl۵n!tЅـh7<6myμWk.{Esk}lꑒ "X) v"<=i[;@Gjn~;S}OjO$7lݟlVLjotKMqzj.B+Kng8`xsZ}i[+;{k~s a`1PiMq;¨<26ǥy6km+VipupMeڶiz|tmkO(uPٴG.Zq=Eiqǥ,$>c8_/ zS `Xą6DI 0W#mCKl2@LeF89} 7M{my]j=Vhl~RF2:+^n|RK߰ϧ^‚&a$: ?sM6-mxXnBGTg 26l `Wc0 #' @e=IdirB៧#P\i6oox! YK¤I K ѯ( *Y f,GC׃3/l%RSΑ=$ d?0ӸN#1ۤb-@UmN,ɦ$g!G$9=z(]"M:\lH$7v,DhݾPFG K}[ʹ8Uu :xʜ6?ۮ/]wacjLG`2*eı_YFVxaЀGZ{okZjz3xuWw֖+]"v=I5m2WJXa)@R(!G#jkh.B PDkg˻Kbebw;tQQs}if-PĂ(DsFz'9B8u(m:z5341bpPv0Fzze\\® F-Վtl9 /ndc"KMQ6XqNB 3M;UҬ6}>d(æF2ct:5'on-k{H:4^>q_D)mE}fibpIn8$gzt:]jiy%R=CLѴ .,;iC7ԁ@S>a'oI= \gaճk I$vfQ32v=kWȋO8&ѻnsOJMƯ*2^$p'@JcB8%Oֲ1=6c{vֵښAdnp8+}-;JP8]D` o>Ө3|qg; kCQh V5'Z԰MmH ,QGIHƊvWJOFs1NNČb+>xfMx\Y#b !|82ZԊ8FDUis0X S e[YooE E "9nM C$G~kPEkĘ-HZ '?JҴ蠂TO6 ( 7#O,^s>_*U_#'S ]{>ٷo3n3vvs?oo%1x=6ר_X]r W}FGҭ Xq@gċ[@%=V dC@[nPzd@L.2RKdkNWX?ꖓ3OK}dYd7YڮEPEPEPECwM m3TT1` ޼LZSx9Nѭ#T!vV d1pWdphӨȵi(I.ggeFX_mi2Hǰ5]hz jḺFp6F[wj5 k'dT3FA At#EU=- ť'2ZFR23f?`|Bt >jdhF H y0ہ\jCcgjv3>jH$C(W<H8溻5>ijD#rG'M4vI<Ωj]ݎ$nnaT9ªIoWD2ysVs "d!Zx RGNY5ժNдBAU;v$_LKH}<"YTܒzV6=V\ծ.>h.9t36GP (Ѩ:OW5hc֦,Q#Y"g nFyǰZh/|A26- ht|bLNwޭ,|p ?8RGN f$^^\ٷƩr(z"kj,cY氎s6 c =h^x55kha3skm(9WE ųE}&c`>XHϥ^!ejkh4˭J]Y|, G#8,Qm-Pvl`%IsֆO[ǧtGHL`42w@Z!,BFحʌ9wnl| szc`}Z1 DՔL[Ax~0}AW> "CgWYi9vX 0=bk~K4M ¼U j[(4ۭ123)@,6nz(ͯmnl|M<7k{tk3*D#"\SzMP GC5v-.!I R/¿,[ZKq<1!wv8 dW#j;>-plXx{=ހ:+ =6m- RH('bO*> ⰾ{a_.;VTvʧZSN好ͪ]Kf Ԙ`| r7rMqcJF/Å;&/,.Qw5)#O,(_w v$PRtI${iZpS9Cl?&@}-u/ l䕜ĈKIs[4R@dڀ14: ?HcA=R.MkX1 \)Fv/˵A'=kKe7aه*jdyo&A,Z[+4@Q{ι}>l~9S+fgҦ'w` e?HZog cFc%V*?={u#3xl{r&r8`*֛jM;:w#F@`IgҭQ@xeyEٛ" lqDmSh֟c-oٳfsg߅Ca;KǮ&c$bekƍsPV`9nc{]Esm d>Ee^xFM70(}@8+:7,Yn.#uܦI\=<kkFx`i"YUZC蠜€9m?Ҭ"O`b8hp9^+fݮghi.@?@*ެ,k ,Yo]vyjͻ;cnBӚM?YQ5K(agȑ<]g@TQEQTum>-68qpOr(sY66ͲM(009\Vzl.-i;. y\gs]MciF+0s tUKNM{E7shwA!xp$qGu -4U죫AOEgOiv׉i5i3!h-1`VF+61C%}pH#dz( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( e⛻=>LVk[ZH߃(ur9^3pH:*kĴ}+kg70dMNn;'og=]ʿ*b5 [cK&DeecR>oZzUoY\.]AOD$yI<%{2‰" Wv  v »}W@֞&D_"hG>6\Y^ mifZEkrIST \UCԺ71Z²6#95Nӭ5|$6g9Ik^xv F-%-2wd^YK*cvsAj/5CH1b˒F̎' ]n:Mh1om fSo Ɠ\k:eIsqme$b& yHN -|QxsXXȧyf VAg!454nmo%j~.(&aE42ƌ$`0 Ou]o&sz,"RN7||Y☼6Ww4p(#Ugc$+ƷŤZ%棧-\Y[K9%Xm#=AcDUW ͵0v"'55ӵƙ9Ab - Zw٩y 1 <̂s?į⻍ZMB[(& S=Kݳ[?|Ej[g1-=>no}H q+0w#cbt<V}q{3Irwub,FOGJ-dO%y݋dfj6pi~Go4E:5)Q o՗%)Ч??W5 GեIu-&D]6!Q T :7E9PH ?SK-RoGlccֺKB}iٟ7̌\-VO7>oNCᏈM_Z&ɽ#h֩% 3Mkj)Oɑ2X[(R۵^_ 6Rk7+}v9W>sk6@*1ya99l8zY: EZF9<0{'=Х7!n|Rqxtˁ=b# @#2̓c֖ ӼOKȘ.cu"7Yun隄,(9jYoxOX M5ggQ)p~)!aմսUuK.nbH|9_w{+zPQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ i g1a |v\2}ȮJNwd^ג l18KInRKX1zH ;\֓⣨Zc>ۭ8q+ӼeE>ș#O8ppH#yqS޼v6FdKo'Wjb  SHXڍfvoā7u?Cz^lWpTd "28 0A+.? 1=j}$El]^qX}"٧׮RBıӵf6~rxekHٿ9BhYZK 72;C>=OzDƨQk3`gtd<\fk_g-OlW[@:#"*K'WinxmOyxLc;Z hp? cws@QE4ƌ+\S (*i:]+k87X'fQEQEUMPPaR\4Jd+c rzzEQEQEQEQEQESZ4rXܹ(h̨ r{sN ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( '_h6Ld{WQv rcŁ-8ȯRkYfBGxsKի64H3? ռ8Ϧo uqs(#cXnX(\l33kXE.X"x](T_ g֭PfkCGM*Mt*N WgEp:?$~<-s{ 53Eyֻ*ξdG$!ǮP(]_;X6p})h((((((((((((((((((((((((((((((((fn"Ր<GxC +wXѝ*$^/_[=ݽK7 )yvه|ɠfT& Xwik7'&H6\ =#` $zhźi5żƗjsVյ -ܜ¾Jռjt]yOX=Ez?ٶ]Ҁw v+/W3+e݉X$[JnQE18_ň?K[ŰAoiop v UOY4MTxn#~hW!n2a9kC>1JqvhMzDVY2dYxNp9:W[E G}\WX$94UZ^as:Qe$t^/Oņ[kKj$K9q1W*Cm0Gc+F֜2q,f.ۊ~uM Rws޴rkY} -ݗ ߵ&]xL/9#/2mxXc7PX֞+'D} xR շJ񇈮`0t[1e}Yc=xx^:UW+[^##sbpr7sWWk#ޭ`/u@ -&]Ö\Z쎆i w8Vj> vqu_ 7suO.<`.:?0ox]#~+mŝ얿j+tS˱`ߦGj.Gs&u&;1l]HKksaʅ}t^.'%hml*FN@ E[zխ3,P}69'nq\vd }fϛ?wKQO)|@I. Tjֿ[ nYKl*DžQI񨴛o,ҕ1\dY\g0"Kb-]T\84RZ4hyr "UWp$ #4$jwMNwwbq1ڀ:+]md"A ̀HURx'uTz妡gi43ٛ2]r4EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]X7P){W1%C md÷ncWSEfi>Ogd2Ǐ "A*((dFGPE-}Mqoz#hg[yfɰE*Hp,>M8,e.|_y f$8((˘5GSQs0Ep6Y@QJԢ ( iyW-6ٽJzfQ@٬WbFE,X(:e̞'U#o۬8&fgAT0MZ[FVs$YN0?I$ڢ (15? [7} ^:mE 2*qFyYw XV}1`uFidw> 0@ b(KYi6z."@gTJxZG4kwR%e%WʐxZa3CtrpjJ((((((((((((((((((((((((+k4% Do&"3.x%EOFGڼU@m5nQ@jWoK}_ѿm/#VFGڼU@m5nQ@jWoK}_ѿm/#VFGڼU@m5nV~Xh{R~E 2vSW _F^*6i ΐ5ky&9  >ϵ[:$mzfRUeXbCr8^*6ix7 jܢ0h6W _F(^*6ix7 jܢ0h6W _F OVk6ԯ!^JF}_[1uZ[Z3, jWoK}_ѿm/#V~/:ާj{-]O%ֺW _F^*6i*amJf_ѿm/#QFZ\CuT2JFdGTFGڼU@m5nQ@jWoK}_ѿm/#VnKJK\8g=e8#2K"F9c}_ѿm/#QFZז-na-jW _F^*6i( ?x7 j>h6agxXh/`YAHʤ ?x7 j>h6rW _F^*6i)l2(3(^*6ix7 jֵis `-jW _F^*6i($I8a_ѿm/#QFWִh중~$H`H*FA(^*6ix7 jܪw57wQ-Ԃ(29 x7 j>h6rW _F^*6i#d8䈁"P5%a_ѿm/#QF[lʊY*Ipu7?x7 j>h6B[MσP# IyޮPڼU@m5jWoKչEa_ѿm/#QF[PڼU@m5jWoKչLicGDy^BB)8,@ǯ4FGڼU@m5mHrIZe?F@jWoK}_ѿm/#VFGڼU@m5nQ@jWoK}_ѿm/#VFGڼU@m5nQ@jWoK}_ѿm/#VQEQEQEQEQEQEQEW'7I^0 t6KTt@]L]ǂx ɮķ,e_=E5}c\߇!tƵ ksdc+_Ή{/J59,WR#r 1޲kWO[>gl!6!y [qx@BͧZۥЗ/rWy`0Fex~cHEohy7 0GN-]^ β ò8Hw:>#a/ f}Qapl#''gCyRO.ʹv尕pgv:ީ|IsxbNδgW8=r*)<=GfҖˑ~ҎJ1p\gO@ ݧ]o\闖3DyW%CE6v.oęb.Kd=kbOlc;3kvIkiڌa'^~e0G [[ۏ3۠/gmjH|LrPq^uͥv΁vd$q?xöfIs,w;?(P?Xv]՜:7XXavBA#ۭqz.?3KV6ygjۍwxHҴTc/eP pGOo?*9?و ր:*b9ԵZ[R~aYz%+ѫ}rRJ7/.m)Qe]\7ܚmov5v$i#xb^W5-u{9r@ H%Cd5MᏂ:I#LJCU"5$ =SI3p]Z]Һi8;p~P1]iڽŔ({DrnVl 8=q+ҹ|HZIc#'pr;u>$_M`Pԩ'2*!F> vEGؽٵK{ɘH@F[t __,oyup@T6YUF[)~"P60[ wF)D7|[GL5^knV]c$t$1RGK{\[؋+kP_ns$|CxO5gn<2!v`f]S^]6IszTgr9ZCE]ڛ{Uda+e؂ ؎g.u[/[f-cJ;>\ 'ր5_izƏ.we Zȅg_B;b>%g#^%D%#H@v2X#5<:pYͬkh6遟Q?P/cc[$[[Cc{`ɓH$Lݦ.nM*[w˂O$rk;Sk=@}n1Ĭ M\w ӧYNCq^DGqʡ `md7B3ۊ:$(Eg(;O|€9mU3x61h֓ڭ6躶`1Y)eaưIQg ^P|ۥji~k_jҋ[m܉#%hn$5So8O:=Yęݻ?zuy5M;[Kmteo{9&QH]"CmϖHݟN<jn)u :Kx As,n6;Xzcހ)뚭$Z W9G&$*Fw /z jUe%ֲ]!tDV A$0QyxBLҬ9"(*Ip}y5KR^Im:EٚCkuOsd8chm_xG^d "$9,6vڬQ~!hZ,aX4l)BxZ kºބ]Αwq쫖i~X6~1̓D<~ ]:ExbRqԀhuw]4=[JO;mtuymSyåZkvcqe4N\a8wEҵ]⛛" >Lbcd$sCozl^OA[i´@c׽vkD%*$;>?va@$S޹MkOn<{NIl#YF9T.X9OwxH ^d&E;UpQ8+{6&PDsp7d`Gn]/tX&$pVxI!')v3w1[H၈,Xf*H' {t4QEQEQEQEQEQEQEQEQEQEQEQEQEQEd[v}>퓛*RIN 1W-"!gn噉,$I&@Q@Q@Q@Q@Q@~!ЭIͥ^Mwl7wFJJFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?)#NBȠ@9{QmJI/HV`4bliڿ_o:f3o\TE*\ݒ"ЄLGChYikR _XE6ia+"_Gl]O%S<%;svށn]d.yǭ:+QFVլF_7d%F19=m/s7c54me\jڔM#9qJsj/q{m vO*dflm7IPz|~!,dI%x.{彚95 XNwU^xxjEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP&'H_vmbc9QYZ743OKepFI䞵Ecd@\/;7իOl9RK0caۧ^)]6W6%͋3HIe?ZEQEQEUnnn{bO-VE,uB!Ξ̄1BplqҲtKA.n.n&ûH5uJ/X^j]S Q\V-r3;ym,|P8<4]Qk?qJR-(Ve@6Yߑ@:Ƅ5`[G IY:b pZwWz7F&I#ݴSHc (@եs\[껭WU7!`!Bg?z=rr7%XUNy۝90YnI!dy#BAJ R@aECiu  YcqJ Fյ bkRB6Ӯv)^}v">Ѧ7vE9$A#J訮Ozwsqcox"c:=]eQEQEQEQESdfHٕ >D_ a;kQ\Ƌ8K.$vĦ_yT UpG71:|m<$ؖzh[qixO7wZİe o8NjohϙyY<ϗvs:z+%jv>ڊXȱ]I@b;VRrTs֠/$̍> K%ķs2>vc4Q\ v\-:>ٍW_O=X6wI5Ȏ(z .NzpEghzZ斷F1Yr88 Rw7zTֱ\"Yn4(Sk :I{wuo sG3u`cxUm/LJM3$tL6csrtWx[4> Dڽ6߬.>IJcnGb:U}:eKH[&Ֆ9$#h!>/qErMň:R} ‡7yc%7|ch(((((((wH]ntexuFGq=FGzѦ"EI#"1Ԛ5ķWOjV{k!Lcq]9ArI9*W}ޥmuklym -h<2 Q+n?s[Ms< *!Xqs4tyg=VMyrÃ4554{|D&ѽ吡C3m' 15bOkoȵZ[OάWw@7c𮞊OɨGm k;dD&O/m]u€P\1u&q/ sd0~QZkVk/]Ynث{C1?WPKIF&׽,0ܹud >v72Þ#bRmiR5ıdƙ ac,rOBMtsxK-ٞUY$n9Sv]i)Oؤ"uc)Om0 69@ѴVԮeE "b'wʠOQ4WJWT!'W H^;JTmV*^ V@AVN%ͯ&RytʹiYUۮ9C繮^ŷRXkK+FA'@./]mqi$ol '1c84񅮝8YK"dr#lvTW5]"ϸfm9rw= dkGŝr+)bfafCgsq \}8A2ORmFCs0.'@= I691@XB玧ԚXdi>S,mܼkZ> Рԍ<Ѭ`$d8l W uQ4}84M3Jpd".{esڀ2XhڴĖܛĪ<Ϙr:4o^X\ZP[x a6u69C^<մƹՖ )㶆[r8 n<==v͝\ 0Tk]jKxBi@!ƒ [^Aina>Au9c78<]ejS6:ԱgH'We ºW7V k0}:)'y 3r9 ;Z((((((((.DdQ׵b]'OtBAZC A,M!1a #i76|EY4mF[{k-;P(ܯ ݯWtI@#<TqZA+xy IcMqkb/ 9lI\d~$qQ<&ڞ:R,vsp'7uMzEcI0QY[pcv6 lU?{0- s akq€{ {&4=>2=pT >u\[DkT OS,sĒ"Iz(QEQEQEQEQEG><7Fe]1?.-5_k&^ iU=:LFT܂9e'CG"e=mv[[D4\*; 856MrKm2]DI4!+i$v@Hfv9KmIU .v$syJ87QEYLԯ3MsDcԤKɫK\} L)*>EAkC;'"!&og|ێ"u6 J-:[dH{Է X<dFдɭ5;k&d"9ܪF~RqקZ7,ˍ"O 6i-/"7.ၜq] A=S3ZxB;>{ aͼgu ؍9Vk/xUK!;|9EyëGq{ ֒,(֦YLXsD>R Z >Ge6ukqmd"KG=73]"ƁB U 3i}k9v`۽A('jZwHm>HO wQTP퓑xmn.[{[ZL[[(T{rI=I'O&,EQEQEQEQE#r# \W):7Ûѫڝ@?Â4WVH7SZiF{Sqy'5m-R:p\5ɀ[Mw4JG'Ij];ZFvnVi8ʠbB JUs˯ݶ*lpQݔ|m'=K DjtQ]&Rs\y|8lPx??ږ;>Y/̯ "Kr f" ;z zhZxXm綻e" ! d9ݸvHMo]7G %Z1%f(CH>CF5unbk-U`'-zk9'㷅4oߓmNUьexngycYLr2o;sִ9Iw˥g$?kb#20#k1exM5Ҧmjy%dx<$HIU’3קb(vmc]g ޙ}NUN+zRWhN}.i!&cYb |l`tj}E|[myEiml/V6*ҒbRrHp[?<_ժCMn3#0}c5oTӯFei[O{$mXX)Xw~ _JKBN̉\D8sCxn8Ky^idݙT;x9kKu7Rӵnc|CTc=VkYY9]Q,bms:4-.-3Bk|ɯUBsy0œfq N}ar麍9De(ttaˆR20zV//zl-t%td~1 3ڋGԴ2o&1CmUTa{4oLJ-/.6}m dF(ꖑEt.$9ܜQEQEQEQE6eB!AObͯc#Zd$A8=Oj׹f[Y7y`;5Zi:+m?SgQTHHv:?HeooDrڠ7Tz?e/efV8"d`6O^3M 7#R}GPGͬV9 ñ<p94i=L_=MD[9eGӼYϢ4{tfy_m' 1<{7^ Ky&7 E=kCIiZ-ȗg0P Kɂ:rX =\[$褜>,\$GkEienU?-уHlAAĚ֏.g. y] 7W>Rwg8zUCZO6o@R(mqn8 2ϦjYi*2-;\ךrMWRm562Tp| BG9 oTE8?) apAҬ_ hw[廈M$0+˰8$@8@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@6I(IQeӫƑ<;cZY\2{`4r?s[Ms< *!Xqs4tyg=VMyrÃ5Zeƥ.o%ַzk[=-&ݒ`a 1x8xS޽=rxBȊ:2=((5hfeصa}Ǵ3u]5yśo7&$Eg>.v@.<;uV%/%O% 2"9F8=KkzJ_E۰o=BSOjoY_J7O3%h/yryKB qVfeeuR[ lj$G F€m8&;YzF(J>vT u}CĺCinpT2`O_5[խd+`hZ+–ַ.;# .3}C+m]YCY ќ UC28}OWQ,d!jE rGl [%uiG$6kim<҈IY@$rH{Nծ5.Ԑ6[9`|BoK4I3C}ұ&2;H:3j޻srM5=&x/$ѠeVH>Q@T^%mJ{q8[$6p⦻ԥ}CEH5!1*w 3OR:7 |#v|1-܍%i6B0W1:fѮcjӴ>UlE8AgpH^'oh#FHv>f<#cqx^ h|F&3#VQEQEQEQE!!A$$+Y+de޳_P1OD2Ә᎟qwµIЯLL#*AnAMuVz֕c],C2'W=xIK)4w'sz5-u&ІԬH hu!$dxq. gqA$TX;xEmDZΞ앷 t ;ՓX.{^ ]ʾa_]+uHU;)YIϽJ@>p8<3@iX_cHy2$dg9Esug%-YRu(k4#Sƛc^Y\H[ϳxYLKm>:qkiP^Gqj76RBihs@MQ ;&c8TͶ灎>/9{)<ǍaY{$Gs\_-/< hJ6TU%qF':`ie.f{ȣՖLa*#'Ҁ;Z( ( ( ( ( ( ( ( (_;׷Kv9# W' X@"5*?oo0y3sgp-<@];N[LNGCL:7QԆ"i7DD휑'4=wXwJiu!s85'>n\gן'Wh$RUW?aQ'9 uM2DcC MuTWݶ5Z];^\e s^@Tԯ4.5;  ҭכWKYeLv!7.CEz,Rj^1ZZ┎-L{.64`d,U4DJ)dWM'ZŲ2[DX%7 cwx=sںj}$6[yjK S dP2+,9-qz =mK_Com F1d 㓻*Nq\XWIaӥ- C}/u44WxQ]\ yHF(FQŻ>cjV6AŶK<NTpAx5?Ũ]oo4,Dn$+VR'd`I{"--I4/?F )mR9ݞuuk?55֮,d%;xۼ+NW 4*ITIfg/$2@U-)gRђ'x;.A ޿Lk}-張r%) F2r(9yR(R$TW m3iS\(H !pA뜜:w׶#K 3Gt20ue*=h0AK^{c[ϧ8Iȍ#+qCux.mS-fI1lo *wPQX^}ؘ.*3N m=ᗊߠ((((,崻fQчTWQM20R< ̴vev.⶙ѳw,D p8fg{ .!7%W-x=IaտR%[wp|:泎Ek RK}6gceO,ь*l=G'oEw:vɭ| H^xXXY^ʣXuD8W:oޟCX%̎DInh w灊Sļ0y"+0cOֵƵG]xsʖV pw6M[BhSL,t{v-]33p'*<& 繒Aa`w=? x/K}lRot*U tW=g30/ B d;Ӝc'= yK㇆Xw[d)o9bB0(Bq~vm 'eč$ы3e߃ij>ѵkq{d$W"FA*sѲ+ kf|1Kw; ?_1eeSiw -4}sp"4 R u$@|#jz7& 7h8 dcsV] Nքn.gˑ$hsB6J:]Di2]@S_,}>%'{ SNqq@5[N}h-BђRGQ\ViuLI 犃Fbt廊7R'ގDbz@Z[Zku Mq±σt#awdm$0(Iɹ !Kݷ9[SG.pv2IU$k6-WREkRB[ʰ{<#Yj6Cr.b0{3C$3GUMOou kTg2\kZt KV$I,e'ShfuOjsDc Gb+y$zQEQEQEm-ѠBΌH RHՏx^LU"1$I dFدHSvH#<5~bZ,7, Q-)8JQƍ\!$2 Tt㞍ZPf+ZI䂨U2*J8S"SsZ^w2[ :f~d< sz( +h%D6dırV s%B]67B}Io/Fd2=q]KLlt{coc,YYܒjPEPEPEPEPY$e zH̨UFKq[5+Imlս1Ϝ $玕+>RԵ߶G  (tk^[09emS0y= jP!554{|D&ѽ吡C3m' 15bOkoȵZ[OάWw@7c𮞊OɨGm k;dD&O/m]u€P\1u&q/ sd0~QZjcP8.%X>$ ]Z;pnq4iO8MQt=CSn5 7QwP/c6]w#3Ppw.m|I4˦FmFJʮpA=D> n܄BB<Ii -{ pܣ/z!SP,M&hFp{qԒsY{ew(pnt\s?8ark9CúLjuKMf+({!7儋1sTnu(M3Q wg͎H ֶfH|wcvuEF3^Y=0:tM:/dI.$ +>aՊ(Ais98d 2WJu[kSMˎ4s ^^+^=t&D:}nŎ:}_ ڼWb4iO}?p~s}W|ijQ ='U[wu 0;&n BrN:$BִIM esHA ڗI7d6+"hdGc?igN-&34I0>}oW]"$XM2{ I=yoծmm/:4LJБ$r ȶE1 5/5j pH(Uq K6[Be/yw$d1TREOPX㲕p(#v<ʀ9A/5 C\i[v-ɖ-GI9z՛o k6֬R\Zc |$N}EmkYMseϨcoPd;whO#Bm`cgހ)WC%ާ fW3wgl[zޢ(((((((((##SSTӦy Y@m9UN/#EEaT`X#FGaOq'=V\:(+F ( ( jOG-u"ٯ,mFۑ3]Nq ʲW42d䫔r1S%U6&65{@+3u'98A0|5w%ճ51Ɗcy_@ N8We&yG0D]0UEw5qm1Ș :tt )rq=Ğl I[rp`8? iѵ`mJ6tQD?P*0=j#h6]rɭIp/"%3?Нc95꒡E,Ln\g+3 ~Ӛۻ̯(k`6XQ@Q@Q@Q@Q@Q@Q@Q@Ϗ"MљWi`gpOƸMWZɤWUENDS&& x&YbIxePȥYOpx"mmV$0D# 8€f;qONY(-ldxH`P@k(7)uZg4wq%M.laʍz Q% Eדre]Eai{B2tz @b^HEk/%uK-,rA! ͎OS=5j,fmKVg \}47:iX d7YqʆHL*"U imxbKX/WLr"e'8Ʀb9,nZ[ټi.0Ǐzg¢Cgv)B(oA-|&s>n"HPA]#Ȍ E(((((((((((((((((((((((((((((((((((((((3 $i^"ԵwBeҮi kWB 1y ]DdpXA+9}kn5d씭W|AI ^׼KꚌE[_w;Z`/rq9V.i,&5GNŤeg` 9aወ`o<;ʪ0v.W⛨XMk VnټI(0q{ݾat0\;, "r zYjmOn WyuRIkf6L%~. CeUq5xNbIm"L-7 5%ޭ##G@[=P\ϋXY}ZwX\ͷfNXp; rcaf: m{Aԭlo?]-Đ6=NGU)ො]AunmmfWfڨsڲ%. ,YTM")t  ƫ|OkKi$Y|?8=׵t>%ՍP,Q"|ul @9SLW5$uyn-m.#1ݜFdjk3%ͫ[\m$W .9p>٭zlnBe,qF;+yg$ddus^I}JQX͛Syi.ۛ$67`žK+20lszR!IU^C''6 K',ݬtqu.L>ݸ,IPN< mZm[(U=ShxttD`y"*''qh3[\0 y%+F| O:]gK+u+8Ǘp NkזOxvKP[&gM:IPJ S?sZ:ZG_GJK#oVo/Dj:0 d6Y]у+  Zy.3[˻ 1E(ZFdsH1ҺK >%u%##,ҳGC YV ]&"sPxRD~5Cɞ۔ϽTѤ75KqyȈ2rr23źI}ܤPE5~d KM>+]L\ bȠ jLѭtk?]\4DoH1FN}SM3Z^-ޥ6VJ`fFw'nwQEQEQE!!A$$5h >毗۳{ԳȓtfUs1-SfU=-.1Dj <ӭ[u[MVy I$pH+ ]Nѐx5C}B;8-&$r4C yzdVwu8^;'UEЎM2a'~c>Qȫ$Qjuwix7+# (@pC%ӛ5dwy +m8~&^>/,+Z[0ۃz3B\K@r};O:,1L>@W~#\0! 1¨='U΅lwZ7m~Μw7$e_ hj kU\Ljxӥ^mu.MDEn6w* mbwbWy;{hy6&IB.P<kh7wvmgfS΄$R VVT ⵫c,PX6K&Y[[1Ԓk((((+/WNݥxw$H Jd5[fv\-u}*%wGNӖ8e%cnS/xMo!ȚMD#Q*y*{g$stak\k^9%i7ubp 8>n\gן'Wh$RUW?aQ'9 uM2DcC MuTWݶ5Z];^\e s^@Tԯ4.5;  ҭכWKYeLv!7.CEz,R z狵tze0Hm;Ȗ@`;0A8GfoIN^RI{x#wH&&kѭSc?2sh c3@-핮j$>7G ʶ##N0j֯.5D%ki%NO*FM)MD2Wr0# =#]V@n\c̈́#s mxXḷSEPEPEPEP%'CG"e=mv[[D4\*; ()6.F0[Җ(((* (5)|!G\}#S@~KQkv-nr,,TFv2ĞMmEQEQEQEQEQEQEQEQE坶g-+48"`QC8h'bZx;Cq[Lh滖S"Fx8 gR[x3@ і}ޞ//د .<_kDi`#;`O5P?<;P&}2 O Ud`Js7E}djۃ}pX1wې>\cEa_;A/$@H1*|kn8(4P$y4(oxgOF%Y#=z٬Ms ZڥҼcTLnfrY@$4xiHm(Zh{l듓ךjr諣 HΜD:yz;ski7~.I]~G!m@8;MvBtȓY)vVYT@:fc۴yjٝݰYcI<T<-ޙ5d/=̗2՜@ĐU4۞ g{ؙhdoY%d8Bp@b9{w<ާs+Jrf$(?>!Y|Șo ~9md]CI{]H "1Ub9n5ﮮ4g-5Ym'kRѮK1]H*U\cٔ?T4OiXȦ%9eYFrN@v8$'yZ(((((#2F̨]$(8j._%Avz0)Oʀ6hSJފ> $drrr:Ri*\vs=͜kWUʏݰ,0q@=O\nΣY WWb,C$Bm21<86/^6gw.Nrw; 3@uIp뚆mᔞ5X_Fłe\pG\e5+R#L[˗jǏ6QLU30ϡc֯eFH($y&f`裟dUEPEPEPEPEPEPEPEPEPEPEPU5=JHӦg[x@22!r@'[9 ʗڷKf,o/"6([xԕ(((wַN-ݲFn"@ EEy<9WJ]^폴,q*Ϋ99B5D}bKlơx P7q9brkzt:&sak33<#;a2#_Q-VXRby׊h^vY{˨`#oP'{$ #mj:ȫ&N&Y\ywHV=$5PEPEPEPEPEPEPEPEPW,k3&,`x&4xP-bH5LOݴpm|3OER4;,.oS i;|QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEɤ`M)m\fuK]/ZbX5 `[tڛroY{ +? X2ؤe P3<1 ⫦ _TEg` ts/6;=KDZְ0,5n*`m?(GސZM``9L,g>^ν9)p^1W(J @^i~FPDX]E$Am?)+NO7Z}֪iW$,ӎy֯EPU碌I,mI|n{?#V( [+JCd!5 )>P=Vwi? WD(6D msE,uB!Ξ̄1BplqҀ3WOu9K,$s"uس{mWVϯ5텣Ģhf##]B.5{ydfʞ4ۅ۸I8#H*C>rotG!PFT 8q5LJVv wMAE!ܱq c'4^wj6ggEewh7'*15~^ͣ_jq 0\k @YCB 19(dk-%52BlF~eU f` B./mané%X~[|CZn}ϩ$,I:\Ű.GrAc]iHiۀ!r8d?`3"Ol/DZs'$-QɨZmrs(2͵s;U-cBܰ-YF#F$K1R8tz(((((((((((((((((((((((((*z-J8 Ҭk&tdeU矔2[Aol>ϨRk{DycY/%۲,v|~>~OU5 NN`ʱ٘YZGgl푗8G_o'2 3?^2 쨢(+Ͼ*^jz;6D/* dנ- ]xIi k-* ;asրkj:o3:pnq 1GB;(Px'?Un˧-n.AM,2"w(ピŇ> I4+ho6^. $\h2*+O ڮ'D _"tI[}?ĺWVZwd!c ǐI'=]%dh4}u,!@v.Ne$ TͭO$̏ ?*RFzEn tk{4wi xP=oQ@khZjkrk|"#vpX mo>H-ZR\JXQ2`FuOjS&?eڣo'ksTӯFei[O{$mXX)Xw~ _JKBN̉\D8sCxn8Ky^idݙT;x9kKu7Rӵnc|CTc=VkYY9]Q,bms:4-.-3Bk|ɯUBsy0œfq N}ar麍9De(ttaˆR20zV//zl-t%td~1 3ڋGԴ2o&1CmUTa{4oLJ-/.6}m dF(ꖑEt.$9ܜQEQEQEQE6eB!AOsq/!Sxe!oq`r̶2o-vkMҵMC~y2RF mː Pz/Q6SjpCIa<ŮVQ<^T4`N3lx]5Hn-⾲ɶ[Q:<:?]X.Bgܱ$xrl6WRx{9-D1 $p 1Elok]ͩ6/yf=H5 c9 xrKJys-l}I#$֪"ƊQFT`(7; H78wtn籊[Ta9М݁=^ ʬ1$ORf*B˼HT@ǮpF֙:wJ0>POs` tQEQEQEQEQEQEQEQEQEQEQEeY]cfw8 r{SIs//㴲ghw+@o#vN܌JTF{owq[ʲ.}2 s5+˿ j~ysstD6$BܫfO,b=2s޶x%th hC-WXANbU=p1ր:{+=F\Au `:qV+_mSjmm}=Ɯm( pP|ܜwtks2Z\ڵ̖EpX2،kW a[Got&RlSzFFG\w5ԭ}u݌ٵ7j^r@Sa1>KsXi"fH8T+PbWX"YP:`2;h8=+4xD0L5n/ Y.AT0,A\MK AsYI=ͧxl#,'#+M^Mxfҵ {P;D$`ܹ5PFPiG21@X#6eT2*aZhKو.%_,<>u#'x8zV]^,5HV7.v6,]SEQEQEjmg[Ȯa՗zΒ}Ctǽ>|ynʻNc;:~5\Zj M'BҪ,zt "10h s4kf\iOyM\"4ˈdQ-sIԈqA^].L:c[}{c)Pc(/H"Kgt(U Imy:'6~e5ǘ+:}Uskn}I3K.s3Ec yU9>S@9}oMTXݠ?+s}*Ʃ4 s}m 8I2}'¸4Ӯ$ZA<\VA| S>ǯjc A+"1'$xTf:imq98YfU6A+RhdI"C# :uk #ō\"YNm2Us8}&fwGw#(zu82 E/md֥w@P-ɴ?:$,hndrBGM˽NmMU!!:4_j}ؤRBX FÑ׭Gc +kRl~il+lNB Jlu=W2~ K|-LB8dc2qTN+cN?z6`g324@38u{:@P ')h((/luW'9UAP*p;QEQEQEQEQEQE2Xx^T4r)VS[AgmI (HEª+vCQ<חpj1*#wf p'@k_jo>XkXt䑁 Ҫi'4;i-I0^7Dp? 0AU@=.d`{[GԮsz,n s)o/9ج[*} {SSºNvōڄj^HLʪGrB Һ(t=>K5[hN$ˠVeR9#<9GH/ ߹#hb8,HZPnGYݤ[^Z>觋q<`G#UoOe!W@}F{ˍ8-l URMIF"}÷6ܣFAxltr LQE*AmV^[hRi4V.In%9<0&瑰0O9o Gq:3"GB3ں=>=6;X8{W99嘒i֗6Z)yg<10&é*QT4)tد .Q@Q@Q@j ;=F=Q+A u2;( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Ӽ={tih#2rp $;+R,崻fQчPm_J }Ӵ征dpAX۔zt4è+uHj&}p HTDJJs]M;+w>ƍke2!m}wx%4 ;o )q!*o@ɏRx*VrO( EXɵs"sx[P _ oM7Zt*J0]T1_ը.ງN5i}n¯#S+#Vh2ۿn܁tnW^QJ6,.`mnF*¿vKswb^InV"TRB[{Es-SzM澶)cDT]FUA`Ҫ=N{qX !k6UNO^iˢ-#:r!W`9@R%{DTk;iD\(?R UQ sȪfc۴yjٝݰYcI<T<-ޙ5d/=̗2՜@Đ@)HPMnؽdwcHB[ny^\kϬlt F~L7t?NqsI95ֲlye%cMB=\vo_ rZv#90plv\HM #1]9VV7BIr$d)="0A'{M;Y{KMJy&sGK#ڬ<ԚFOf[h*Th^GF5X;nM@,oфp\(h8n]ϗ"HѺ 9 Fh\Mm$IHɼz>շX|'>g D!DhD\)#+N4:&v$YXOsa#-iHRA&mV已#M,ItLDHd3Һh/-&U)$nVSwWKt9R[tz H3@袊((((((((((((((((((()X#P 'Nmi_3  gހ1-yy]Av_#MУظ y ʗڷKf,o/"6([xԕ ( ( <@]ݭ]_+ȑ85Dg e I?S[uV"ŰWHբUѶ3Aski7~.I]~G!m@8;MvBtȓY)vVYT\<9WJ]^폴,q*Ϋ99B5D}bKlơx P7q9brh ?"Y&veVIY%P|%w?jr,67ҺY' *MΉ\m%`+;Ňw ǩh~t{=KUi0|cq0;&=̗v+i/ckS6dP>F*G-Ɣl%3-xZ5f+<oዻyem^( tlfAUJx'Z,<һ+ܒN\q( ( ( ( ( ( ( (#2F̨]$(8j._%Avz0)Oʵ.YfM1XM`i>!=ZđbkĘ +iᱞy4\诮:3@bNnG P G'#&⫫ϱOmw=q \e\ˑx'6ᗋ׉}n-x0( P1n3[ B>گbJDbZ[/,xrxO\nΣY WWb,C$Bm21<86/^6gw.Nrw; 3Wl<5-)MMtj{.Kl$. _L#RfgrۆWwl@z5 )=ݬk:&ʹ#jV7:Gۆj/b!//l/C*埇_ ڼWb4iO}?p~s}UԼ!D-X[B9FNt{`uJBv5ko>]?AK[imf1P0Fd ٭6MK@*G}8-cEPib$Reʜ)C{ˉfiӯd|( O AѴ}?+#MĖ=Yl~b9@}Z?Jn.pKC}vB w{qWQ #&4;oF ѓ*z4WOu9K,$s"uس{mWVϯ5텣Ģhf##@EgˬŮŘO ΠPrCCWpy q@xQյk;=b++ElQ$=IQ`NAD>m|3e<7Xū]%rUFM\0L*Om̕cu23?€6nu6 hn?$ZN(=js>?2$zA<{=l{MnieV';c*<|W$zV^tuw@\[*"@U8z iwI,n8SÀI 6@vV%WM d9pI!O^[۵-(6mr%NElQTNWԱ)W]+AcPK%n`w/\Ge+&[WX;u\ zM6[M3Usҥ،W`hMԭgkw%Gq63/ T2U~ iX6xм(VWGt9 qG&?> eϟP6n.>1u;|wnxk(((((((u SCkYPU$cHRG kJ$m$2Rh- %ΦiV6zRyЍdobXg8Q֯s:k6.mc`i2J4+5=kibִe[+>cx枚,GؼI5B/(C iR,%쟤)3'uōG5.Ŭ{ U=uju-@xVIm6mqsowwsYZ}|>!n5 I-Hm}ڥJKvpt3xK-ٞUY$n9Svմ?hq\C[v1& 9w$c{s@43Q[mkW{Ap 2* Y$01߭;wMqd[w7I?+~AiրwV~}EdLǥ\x mSiQC(~c~_E^ŷRXkK+FA'@kKz[B$a`+i,z`Ygm=my0YTpqG#]]"kvE 5˯pVs՘({W#Kω?7j4 U"_e''x@eI H&}2wx>kKӖԭ-D2ǿ鸌7%m[ӡeE.HV`hKosRx{6z;]6W V$5x1:^״NR[Hy1kxc'#o <ѥ7VzwZ֕NvwRơ ]xP¼-H5ɯ.C'|;JĂzPEPEPEPEPEPEPEPX4Q3Ղx2#n(t2RXk[5On00w爼Y gʝ 2z Vǯ̖6ms%\& v#sZq!i R?EeckZ%glqHRTe3\KWzNfkC:K=+&o:$5J-cMRMnڀ1K! խ! [&ذW}E>"uն- S(o Wv׫$U` GCJQK* @8gyOa٢<ݏIvkS,Nwj)v_#N\%գYc@T 4>5 mޠn~~-;Ka\ٶ Kuw$Z4fUen3Ӝ4k]2+cFK(;@ B ( ( ( ( ( ( ( ( Ӽ={tih#2rp $;+R,崻fQчPm_J }Ӵ征dpAX۔zt4è+uHj&}p HTDJJs]M;+w>ƍke2!m}wx%4 ;o )q!*o@ɏRx*VrO( EXɵs"sx[P _ oM7Zt*J0]T1_ը.ງN5i}n¯#S+#Vh2ۿn܁tnW^QJ6,.`mnF*¿vKswb^IH!HOQڀ.iw:DQGZN"l&v>\șBg85=iZ- *Iڽ9$'@h((((lNk+numNqf :~\,$\ؼk%ͤK 4$G nII@yiYl'R+I$k)Eh=)H ߶iB8.-٦PсY#u$5.#I7VV~\J+4ZeP1!P xQeW[]Dh68(>^6x%5 ]:(ēK9.<׾b(90? \{cagqjGx)# ? Sou]Xu(8!7|.2>ȢQ߃@Q@Q@pG]%@KʛvB 86h7IH~ 8xxf-G6ƳrZl9Xnm:]XmmK_p Ps\}Ct:йϕ '3ʶum?W<1V =AEw18WǼpF #'p zFn"6VDHD2AOCZu[Z޵ki} K$6ǿ,~w`pkWwMqd[w7I?+~AY0x7Ikpa6vo@5P-8t\A Q! &[a,ђ3>p<6www;]"CSڈ鸆R'"Ɲ&Pif+w]H%1űpz[7(}$}$3rG#5koiErHYO cM#_>gIuO5C ;2F_!)6毬j\k{a篛kx"##*I1=4]CrdI&u |9/Oit8tMCOoocگ)yB*a[2֭%G̸MMF7*HAI|ׄmP\iɑ3XzMCYn s$m.j[ MUЭ5E$DE%]s +Jt +BA,)2hyvl'*((((l#!A8Q~vI յ"<[eRhR?ҹɵ]v#6⥀+?xIp,uS Е!a4cHv8 ־(s|ZxTOlf~SZ,|Q/J;hMLTA5c N Mm~fŦ#ƮO..0u9' '^)GO=s,ಷ,r<ֳ7,zNScܱ~Py3׊OݛqqFsssQhH/ndIfcDr6vs֭xAmGIl.(nq\C@zfmiZ34 *AyA=$3JVlwgRt4QEQEQEQEQEQEQEQEQEQES%8"yeu4(O%̾+ٞ=Uܬ \;r2F23@u+R}9Ǚo*ȹ$V<~+d5X%sqv+^sq0jW6CUݪ" khd2@g q p0/\*嶻kyϥi9"4WhQpǩWnu2OiNLT|ÌuȫkzL\e$6l%•1 h.&i4 rwk>-.\]K4n T8xE֛V wT-(9QDbb79\k=:3ždIpѧ3r#NYఊ]J;9q<#|u嶓^G/ NT!,T֎g;kҒy htJO,4 ;'9Xy'u^]\%繎,4B3$c|GXǨiױ+w,v 4;2f dp^Μլ~~ҞZq98iگn-tS$N$]Yi#v@?.FzdfoKK" 6Y K$FwQvZ}F;^nRnҨ9" meO[+o5k3iYIۀu;U=F𦱥d\˪^}f5BQ̟偍s@浥iW 'P[Vqo,sA*H2Wjrω9tx.UKIhKhdleܶGص[6Z Wcb($($P{k=Es t+=ȓtfUs1.UVi:ඕQcӠQɉ;AeH- X5BOl}βmQ\Gs$:k2NCNoj6 rd;L%N3F8|'_Gm,2[/9{)<ǍaY{$Gs[ux{:N>49YuKŲ(guecʮր2q#zj[V5M>Ѡ[hM"I|<٦u'U/' oWj}N={Te=vo6R yY9 sv4Pu[Kk2ѴO8 \BC"I`yWXOi,n/Nؼsl钫gs]V5Ɨk5ݘx8q@ӭ)y(O{k%+L}wt`xnM%yf[Cs%t}88 N r:m]vso ^Omv )di cTmS".,oR6j;Y^kZc Kd[Ud,wpP=Wses!Z^gIjb# q[uQSԗ@mأ=-q(4TYEpΣ|;].V}{K.'i.Z>d2h8o@Q@Q@Q@Q@Q@Q@Q@Q@S]K#*BA2=q *E4n6Xp}?I\:,4-媂yH ( ( GE :R0Au&m-rjs`1 +Ix%/*lӥbEoxQXo`+(Kأ)uLG4SNrCL˲a[?08ްm$nTv+?[ғ\Ѯnn-⺌#ەnr2:w (ft> OMq,w@Y(°̯kjvP#K-cvnX򥔓v&m-`%U~U5QEbIxePȥYOpx"mmV$0D# 8Ÿ c`Adu G@;^\]jĪnJݘ(rvttWCuIbkbWӒF(F$gJj:+01$%xÏ0aWI a!:dA+)qḨ L:/Nhƀ$nByl +Ql~b+sq3\h, T09>B&8c.vY䞕=sso;=8Z<Bz$>⋽oO $Se3 $Y30%G9kTnF"-eO\k>S[Lpt *@! ( ( ( ( ( ( ( ( ( ( ( {oM.hwjF5nwzƧ}oY5+mj$cqRFNx$sַ袀 ( ( 6:ŨK`CdaѕjH"[{ GbN+~ ƛ{Ok.CϜǷayEc,[sy';# d.+3iOIIu,rNI=Mk@Q@Q@Q@Q@Q@Q@Q@Q@Q@\,$Yzm_ hO1 O˒p N}mIĀ69t ̪['$`/ty^+dH/r6۷*2"( OFQI}O3rx* `FxCE 9ȼC*`gS[PDNM;Yaw."vl2zr@ƽPEPEPEPEPEPEPEPEGkJri/,>zEK.r4zͷw,q[k|HQ#F.q?Jl^%Ю.#ZӤW)itè=(R䰸unqjɥQ@l [1'jp`w j+]8'ӌE;yeC$Uv,3@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ ]c}B Z}auᛡi𸺻klþD2o+<[K !,6R9lv?՝H..oo;kvaii:&w{^X'C&MFMȷ&2+Q~ Ok}Mxwu<2̡( ŸctPK1zMQ\ƭYἕm\?wB^Z#\(1e:98qBW3jPjq\--GǹY>c³jP<l1|6n}3X&;IsoIskxm]A-f"#G1=kt;OkRmzGˁ¤r6̧> RF kLFe"읣Ws5ee?,F ߭nC]1QɊ(YC>M԰-XnDY"Gn3o;8I9<0&瑰0O9o Gq:3"GB3ں=>=6;X8{W99嘒i֗6Z)yg<10&é*QT4)tد .Q@Q@Q@Q@Q@Q@Q@Q@Q@7ܡx&T P0`pAQy. J# 4QP\^oŒ26 U)u6 J-:[dH{(vic OX)"EI#"1ԚuV=Nm9o P)u+# XPr PPHpzk^6Yެd6Ӭs;I](iⶁT(Գ#U$%<)h(((((g"|<׷qfdt8Y[jV3Y^D% Ite=Erku3աM!Txꭿ99Mdi0#hnSQk9&M-?1DR$}9K%IT#;HGE!FxQ|/i$!#D$g( WjJ[%@;}hO:Wu\tӵAϙPGԪ$, ~PEP^o^{)-e=2I؆vn>ܸyO (䲾B #$s!Ǹ`C@we;Ht590O8}4Ƹ6?1ʅZAk GcvgEhtުJD3<9ihݷ"vn~eu!99 Cm b&+rM$' n|x@KokvjvLQ92~3ҫ# U4"Gh, {;;` 1, xx[2k`^{.d9聉!FSހ7+4 KX!Y|Șo ~9frkei[u ~n-",Jǒp1{]5}el>޿Lk}-張r%) F2r+ya\츑1pFc,s-G6rn/l0 H%Q8Rz6Eak3xOhvM%s"GXy55[_oʞ+|@T 71нjwܛX;ɣ8*Pёq[t-;ZܻE.DuP r3@|5˩sx `ISʑxn}n5[N}h-BђRGQ\ViuLI ]R]w"4 },C7#9>4 Z,Z|P/!,H+$xXR2Vem5g[k>''#y;W@Q^jr 9F{(q*JNܟN#5Ci{7&ɩ^Co2I$1cvI2rI;Hm2N93&w>q-B$ofٸ'j}%gkd Yqs&T1T #=/htPZEww@Grw |O$zxoLJdSĒu,9' ; $5\]\i9&`;n|J+6F]jVi-cO*]<]B8>N@<6Աi}$e~[c1Idsx:}ϥ\4Q,vH+m.|\!pr3w6̖Έ9hܕá#`'Լ+jOq{h.B貁>?2mUԠD]&ݭC*'gц$O,";aSIuxGDYb/q!p唾ORH8q[1ƑDƊ @4%v+K!o݇ܽO$jǬ7YK ,崻&vn2P?"[x[EKVdE‰ɐ(?Q :&{v8[=Kڴc1&W.F39%t}m-˰HrI$44T_؜(=td\=?RWc2>p 0< 95c"[Z +&1`8jŗC yB6>ZdNnKI03#>R~ַ.5t>>%>~@8N(G5}[V"XVE|\Hݓԕ Em DɮI5ťJrY:20=6²[QͶI#>sQD}#km@ w}݆pGX4KŚƷ`!O qh+F<W 3R\XZ9]̒ckQUqL>#mB g- +q,a8ܻU?A\|%MMЮR[у$w̧+\P{{_m6&&K"nO@8eꖙ3obX;z1%$(((())b;WO{ˈdr`$P2K I,`ČJVsGj]VqZqI5"gr31u;|wnxkմJ4GN.|J!ڨ>b<A X"#0Kd׿k& 6*68n; Uj^2L֛I}Vi`B.q3[}N3/quoGl!{_A)GxٛosPAh-lnY< EX}N6=y@ǖcLS:F|PkuT3rEi"'L#!xW*cYZL:dWn.$1*c>ǽMakrjia72;!w0u((((((((( c׎E ==jJ(K;k dX@@85PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPE2i<$im[hp:W'KjZn>pVO%xzAAP_Ep~fFծ,.X~R<!P%ϋ.mg=).20Ny'j .{;!D ḠcKKGU5ƕcO*D4Fp>#`9;(nQu彆*2,IRʝ#tH"`?JuU{.ᲒKhn@"_)[탏je}wH<ͽsRpo4;+vHBQ2  ߟgx H/_UBca@ݧ8x@$]Ak,*2~g2p=O\ƀj7?p%dcB{woW;mB5f={XMslt#$phhQjpj3Y۫ȘRI "@7.2<րE~(FojvzVWv Xy/Iz\@P}aW9gεL[m2mSQ`ϹbDs€2xGA\^j6݇SJ@7:ƛg7wa@'ov}{f ==&4ofMB+kE1W>m1ڀ-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVE[ DجspR2Q ڄk@x+]J%3.ۉQ$l)$ 皵#Te`)ʇPpH  j@qmFg1,eNܧ*r:Rj~uK@DFJJZP M4fl}=FmʻF0:zUEU; uQEV/cӴcD BݱȴЅu[_ܤ7ryِ6h]x :TV~)sKeUY"9+t'5nnibu -.k xm4` ȭ`p3@$B.5{ydfʞ4ۅ۸I8#Hbr < ??ofѯ.lV PӡW +w^ZO*d*O,}Nӊ?5|U.;(eI$`w1 , rq]֑k}q4h-0-IY',no/${x5fC6> @ e>դt]_ <%xkyy/{Ef8G# AET+]#OC3K3@ HCx=;QP]>15Ťb9"@`@xQy#NR_xQc0[Քaa}!cu5:sJ/ 񞾼PIEPEPEPE6GC(?A\)$lm%uKHxA` gA,@<@x/^尹+Ehգ 8c|Oo,e}aqiF.ky33@Wajikחh:!E%d䑌bZ( WrlLUi[ȲĒ&v 28>ƀEej]6e2-p\ll8Itu`i q~fH@=[5q3ux@Jɹ0C3OnkM{ۭn^pvEPEPEPEPEPEPEPEPEPEPYΩYYݵ *1$dr#G5LX8gsw'y/[M*UZO# K  :xW-f% vR, fIBex8QJTF{owq[ʲ.}2  oW0iMg$ &^/Nsڮ^k:;ڵ,]*:,A [`Zqh3[\0 y%+F| O:]gK+u+8Ǘp NhK[ x#U--ɐ< "屹:dӭd"hp讌Xd09R?%&f0$a >ZZ6V_b@3x,dq9!BݽWRPF2ǀ*ؼIC *?Hɓ靹l=>Csdg260Ԏӛ'4_42Z5tK+'vZ((((+ph^usl6 ئ:m+0dr Tt]ua'5SNOXKN!}/g__nP߃4[۹nK6V,5\EYXH;P$sN9xJ][WV %{ee X n9lU[O kZ^=Z[ZkUL̀UhNOJ9 qs2E pϹK{~@na<>vj u%դgBU#pq45WI'U/<0V%Չ?iQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@c.evQ^`H nۑ1آ<MR_j]$Amq6mLfT`( W.!{sNGﴱuc2FTw}x=k㸆g"7xd F8>Ƥ4@׃i#R#ZQĻyJD+g56+Kp\±޻z(̵.`ѵ ֠Y1),ۇ޾q$+(e \PzuW|Y|?,iKVsa$B0Sl39 ס KVt.-SP.D:g=G@?FdwyE.O)zAPp73ͤYkZ2i$NQ vrG5Q@m%+]IVIuX g3khzisj2[Im`ˎGb0G5UmtD8 L12rZ^I}JQX͛Syi.ۛ$67c{u3:(v0ܪsGPi9p1N:PyڥēWWZ|:|Z\q&in$'q66*[:Qr0<`nsT<^[iU#xJ,n4kؕ;TXǚ[+]Fo I|nAlFG ` Kr"ƻCH '\m%+]IVIuX g3uPEPEPEPEPsȓtfUs1VkMc᪾ T$_(Qab0y8溹bIxePȥYOpx"I.ieU,Q:; OG75th/+mD 1@#Rps^عɇT{Ywm ѕp  Ďp56W6vqc4[II `AsV(/3N# xb[ R2yŲp0IEp:=Z!kh/"(~S_p8vKaxYGFlp *J ܲ iȢI+[HR9YpIh}U jj @j6s>vʶ~EO@Q@Q@4BuȂVR=qP@'#WOkž60~d22=OEPEPEPEPEPEPEPMu, U59mӭ@127f0|$.Ieuw}7}Fo-T2Fpu5NjW)*WhbH⤌HoEPEP\H:+2T8]=ek~URK6RB%YSl'^5#.Ky&y$el0vbЃj?4(iYQ(\ʬ3'{-[tmfhU|32*P.u=2jo ]꺮tGH(H)rYrQ9^0pFrjmor[]O3^\yIp_<ْ)8ldd2MA:ϦwzuQɾUkpNQ % ` mZO3>NЬ$(*p\dSkҵ.u:I45 l  9a81k]ZuvfwTalX%l8z[x×Bڀ6o* ].8n֡7ͤ:۾%kX2 ^N~Q[vֱ tĵuthW@Q%չ<Ky%\y\50~N8jI-Z/Hm+! )<ީ=ne $BB=.GKs8fhЬl$ovľ0|.V_:W\.+hdtAB t4fmLHMȶojghP#1 `g$1XS—ss Ֆoo퇔nc\l2;F:g5ψ4$֤kkx'Rvxg y'5KYaj2XC@$1 @#۰֗vN.bG@:~ ڥ#unTq]XVzzua~]#UuwVHP8$9$c>Vqco\Ge`V0& ^!Lux 2;V6ulAvFW8U#:j$,~U6@݈':PQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Sn.-ơhg]&]/ G3+2,mʐ{pk|3k6ڎgy=(2 brp 'xKJMXdmgSsz Mr~&Մ^,Њ麼$AM"k*ܸJPͧ/{F(mS3@2u]ۗ1n->'`Jzpk]մ6:D@ A1fhSNIldmVIϖxPS8 t(4OokAwn%EeZ6{P`ƲF2B :i?m|fMLC@c=oKWxAN9 PO]-4ʹi6+~qlS3md (#y+{dzf-x>Cۮ%o;,7sma m( kۇ|نQwlaqGIk=xteƐ#k/FuWD$f"2ܩNG\uJ{-jMہ8N/W=kwNH$ gWP\CgaVu|Me=k^XSzwT];O"-mpYVi ԀO"Wx7tӤ6.NeIU#XaVw]Y\so'ܖ8#Puy4V;> p$Vn w}omu4n.#(>;d:#,HOs_߭nC]1QɊ(YC>M԰o]8'ӌE;yeC$Uv,3\ OMBh#8Lz #]ceRJ=+I4j(((((((((((((((((((((*!tY2@tqF~Ed{AúsX{wu tPb^ ֢(?v/!<\YdYHdqgKҭeHZY$O6irJ,~ t*T֚u_]Akn,E tgyYc.mfˀ0q@ubllDd7I9$s@ c=3ל\Qdk[u$7p#lhZמ$23ĖKDJ"'-(9 &:\9UcNOΥy^.2E-1+vPuOT2dE:+P4s(m]L*Ohl`2 pT ǦHGw{kaxጺf8{zW,?f4{Vchpz: ܮcӍŨc(QC@ڶ< }olӾȄjkk+g tiepԓ4M!R%`&yWXۻÂǒ9ujq4viP Ydmr`{#4QM)42$8 =#ml"Yn068>Mj-OM<3[ܳJ;f\`|$kz&ɨ%ey04JenqA@%~9Pی*޷(((( c`Ad{}Tx@$:pkx#!Xtb7hMu75=Moi"Y-ƊC) 9yN濫̗ͬPOh<ךc٤.*rǩ$mw4W{Ztu 嵼-k;ye,y8r@Q_]k4_A:@;<_6.3䜀wW ]mGd%+0dcnv#Z}}-턗e'k}^;w8 kڍe: 1^FݴX(bszCBT өFc;is_Ӭ廼8-]$Q[][ۥŬ eaEq?xLxwX&$ PKt֩[I%K{^i:{dAn~Rlys@EqnxjW%xCKKI[6Iq@MKN-$tqCq$@㑜Z&4ayEgp;ؖ< tsU.QK&Fcڬ9o28\*hCw ikj`܈XVhUܱ^~azӼ-i7 y^Y w؜ڙo'ɭ!ydDF$OzJע4{ $IdcGp+Z )ȰE,~ kW[M^G -oEX|('$c/ty^+dH/r6۷*2"jz4zŝM%xVd{0@5JPj61ݺR8=bwK]/9N.)m+jBIlpQ1z^!mdݹ S"a~r>ڟM^kynͲa@ڨFqV7A!9kjOZF$}Lnxrrs׉s`0v##3ݤpi[){k"QvFU}Z}u(eo+5a + hڏlI+7$e#)SH]]i7A ɀ8n>Qr*Y\΍oy%wW !sFHuçk'JmV2xQWc?ŷd k+۠fhHx\ІdgggoGii CC0Ah-lnY< ӵ }WN:BTB VeMML*0Wz6*F?jKFA{g 9#H̄:WčvAMc0y<7EwyDBuTo\TnxvmLy{"(F `zt@0xLI̷d\d+?x ]C,;F܌qï9:+v?F6"G cgFץ\mo5Y'0DZfpJ4`?Jբ4V&IΎ.SkKs{u+jtT.Ia{')`0{:]}s>/cxje˱k-chf'sڀ3 ?8%ؘJJl wQo}v]ZHDFz|Cg{rcRI|'G(LeNzP𦫧A.sXa{H̘)l=zf&֮mZdT,I%W`cZw]KJU%oȶo~V*ׯ=GMon-,ȘJ@ tYUx_S/M}IIlSw6̈29*:tkl=6vK{2o8#bВ22:fOjְ5ŵ1ݢ"9=G\ߊ<k+-ӥp̙kcBx-=ZTZ:z|D]nt-U7WR#Z&6g9Uuu!L] *|wR2S,<sӜGkTFS]M60)qZI >d>թj2݅ 33I!j;Td5XŧP.mX j|vc\;*O.(©b]Aɩ4-au8܈HX$nQGdJҢ(((((+:`{[5n!!㕞($OX8#WHHPI &ɬi髩K%VQ8@zw/g}βmaf,r3y'ǽS<yjajCo$1H7 ؕ|^f,pX<՛N.n%UUl'5eX2R AyjzҦL#hv{#FjWG1il6+x@.~]ǁǥhģ3]eɇv#yF??C$:1RyWHv?0{MKI3麲٤o٣kiEX‚w*9Z徯eH-,ʖ\(9ך},{ h9ޤq*H6E͔Z#,X^@袊((((((((+Is//㴲ghw+@o#vN܌jW6CUݪ" khd2@g q p dԗR>%ΚV![9tٶZX;@ewk.M-ֵ ojMf8n6Kı$YC(l2ӨͷfNXp; rcafjWmZys@^'4gjEѣ\A2*Unˎ8^Í`i}NHVKQjf%?uܽp3^K $n7+aY!c3^%IKZ 2[€2XœjֺmƟb,ZyNn=w+W@cnfKKVHk\r;98 F4T)w[¢ӭ38hy'+]Gecwc6mMwڪnl:GOݏ[˅rqҀ<-!u'ɔ[Z+۲ pӤAC,"so /,翚6:63@ N>镍y4_RWQ}AĒ9Fݨ¨^Iz@5i<%]>]B+"[\I; d=8ϧXZ_ ռsy;g =j`HKilutѼ9΅R,>'fd(&;|[ ">=ʹ5P̽,0~еPNȡL{' (((((((((YU 1:js^KZ%ڀcdn=8s~)d5Km K x1C[ũnm2+3 \1ޮEnKg֙_?#E#t<1OxZ<;xv)b"(m̲\(I$ocI\@QEQEgyYc.mfˀ0q^X$Ο.K+ 2G2<{<^\Qdk[u$7p#lhZמ$23ĖKDJ"'-(9 &o%jZuqi ;"7zՖt4a f:,<;ĶA`cbCYԯ5[Kԅ5H8t?X 8+N𶑤ߛ8&[O-{d2۷1GbrGj٠(((((((((+vU &N;9VpG>[Y@@K𕕗|9;-I1$E[p'u]zOS[HKlCz}F:QkYEY!J6Q/rwn?/$溭+BӴm3:[>T< o'Qi4uegʹHUp8\s~ KZx3Ruy?̸P“xTkz=,>":t}/y_6`ixGLFF4V~a睾;{ Z}Úok[-"oBē9ErW/,WKw!}˅ݐw M{M6KK3w/c–''\WM&5ZVWm1x+tny!KشQ"y'3&|Q^+\&ln-݋A    3 '!#!$&';()+*-+<"?/)123 9:<=>CEJKMNOPUW\\3 `*a+bcgjBkmnqrstwx{|}~2o$$R$n6C0nn13ͯ$R$ WQ~Vƈ>YFR$Y,A>wl7wFJ(23 R0e0e    A A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 33f@8dʚ;)j8ʚ;g4gdgdԔ 0{ppp@ <4!d!d k 0T+<4dddd k 0T+ <4dddd l 0T $___PPT10D[SOes New RomanTTx 0xDCourier NewmanTTx 0x1 DTimes New RomanTTx 0x ? %%KModular Verification of Assembly Code with Stack-Based Control AbstractionsLL hXinyu Feng Yale University Joint work with Zhong Shao, Alexander Vaynberg, Sen Xiang and Zhaozhong Ni4iKt-  6- Motivation  PHow to verify the safety & correctness properties of low-level system software? QO Q d8Verifying C & Assembly? bMany challenges & This talk: how to specify/verify low-level stack-based control flows? How to formulate the stack invariants? How to design a compositional program logic? PPHPPTPP ;    .   ,Problems  call/return Y.2Problems  setjmp/longjmp   :Problems  weak continuations(Weak continuations in C-- [Ramsey&Peyton-Jones'00] Used to implement exceptions [Ramsey&Peyton-Jones'00] Stack unwinding Stack cutting5ZZZZ7ZZ33   Our ContributionsvA simple program logic (SCAP) for modular verification of (1) compiled C code & (2) manually-written assembly code2wZ[t<Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI\2 The Machine  Invariant-Based VerificationInitial condition: Inv(S0)lG3O3G3]3 The Machine The SCAP Program Logicthe form of specification  a the invariant (based on the spec. Y) the proof obligations Instruction rules for call, ret, tail call, & X[.%.x>Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BISpecificationsChallenges f uses the  right return addr.? Hoare triple {p} f {q}? In different basic blocks!\ P:PP !3%7|@g {p}_{q} !$ Composition rule &Program Spec. and Code Pointers ( SCAP : Stack Invariant SCAP : Stack InvariantbWFST(n, g0 S0, Y) "S1. g0 S0 S1 $ p1,g1. Y(S1.$ra)=(p1, g1) p1 S1 WFST(n-1, g1 S1, Y) WFST(0, g0 S0, Y) $S1. g0 S0 S1 Invariant: p S $n.WFST(n, g S, Y) $Z?ZOZ CKCKC           3  3     $$((,C,,G,3,C,,K,,C,,K,,C,004444443443443443443443443443443 4444 443 4G43883<<3<<t0;!SCAP : Invariant PreservationBInv(S): p S $n.WFST(n, g S, Y)t   3 E33 3&" SCAP: call# SCAP: ret$SCAP: tail call z?Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI%  SCAP: Callg;'Generalization: Stack unwinding/cutting(($ ^4Example: setjmp/longjmp _5)$Further extensions ,'Implementation & ApplicationsCoq implementation Encoding of machine (370 lines) Syntax & Operational semantics Encoding of CAP0 framework/SCAP systems (1800L) Inference rules & Soundness proof Certified programs (10,000+ L) malloc/free & & garbage collectors [McCreight et al 06]  0" 7 ("        CG3F3,  +&SummarybSCAP-family logics as lemmas CAP0: the generic framework Inference rules are lemmas in CAP0nZZZ#ZF3#/,123479 : ; @BGHJKLMR"T$h*j,k-n0o1p2q3v6y8{9P  0` 33PP` 3333` ___MMM` 13` 333fpKNāvI` j@v۩ῑ΂H` Q_{>?" dd@,?n<d@ `7 `2@`7``2 n?" dd@   @@``PR    @ ` ` p>> T L 0  (     <$˜" DA   T$Ƙd" DA   <ɘ"U_ DA   T͘d">& DA   N|И"P DA   <՘"p DA   C xh٘?d?"bUv DA   6$ܘ "U  LUSQdkYkHrh7h_     0\ޘ "   8USQdkYkHre,g7h_ ,{N~ ,{ N~ ,{V~ ,{N~    6, "@  `*  6 "@`   b*  6 "`  b*B  s *޽h ? 3333  Blendsn   0   @ (  T +  "+bb P@ # "Dwoh  s *"PP  Bd" P@bb P 0  # "Nyh  s *"P    Bd"P 0 z   <" a*h   s *"    f?d?"+)   < uZ ?"pP Z LUSQdkYkHrh7h_     0wZ " `   Z NUSQdkYkHroRh7h_   6L|Z "`p  Z d*  6XZ "`p  Z f*   6ĄZ "` Z f* B  s *޽h ? 3333 0 8((  8 8 0Z P   Z ^*  8 0Z    Z `* d 8 c $ ?  Z 8 0Z  @ Z 8USQdkYkHre,g7h_ ,{N~ ,{ N~ ,{V~ ,{N~   8 6(Z `P  Z ^*  8 6$Z `  Z `* H 8 0޽h ? ̙3380___PPT10.)@f 0 L0 P6(  ~  s *Z  Z x  c $Z  `   Z H  0޽h ? ̙33y___PPT10Y+D=' = @B +   0L0   = (  r  S Z U  Z r  S Z p Z   Z??"`0 @p'  N'??"` p,$D 0 gVanilla C & C++ & Assembly? 2A    Tc??"`p @Hardware (2 A8 p    p    fc>??"`p `  X Java (JML) (2 C     fHc>??"``   W C# (Spec #)  2 C     fc>??"`p[  UCyclone(2C     fc>??"` [   bCCured(2C     fL#c>??"`P\   QTAL(2C     f8c>??"`   P& (2C    N)c ??"` Pz  ]System Software 2C  H  0޽h ? 3333& TIMING |34.7___PPT10b.)P+*D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* +8+0+ 0 + - 0L0 {sp (  x  c $4c U  c x  c $d5c   c   06c  `,$ 0 ?Previous work does not apply! Hoare-Logic done at high-level: no explicit stacks! TAL & Proof-Carrying Code: Mostly use continuations & CPS-based reasoning Too general to distinguish different stack abstractionsJPTPgPTgH  0޽h ? 3333& TIMING |28.9___PPT10+PQFDO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+0 +(   0L0 . & $ (  $r $ S Z U  Z  $ 0xPc@ Uvoid f(){ void h(){ h(); return; return; } }"V0 2VCal @` ` $` @`,$D 0 $ 0Uc` [ f: ... sw $ra, -4($fp) h: jal h ;; $ra contains ct ct: lw $ra, -4($fp) jr $ra ... jr $ra"0 2C:N @` ` $ @` `t $ 61"`` 0 t $ 61"` `t  $ 61"` P  ZB  $ s *D ZB  $ s *D ZB  $ s *D@   $ Tac ??,$ 0 NStacks are hidden!  2G3: $ T`fc ?? ,$  0 "Does f use the right return addr.?"# 2#G3 $  fjc?? ` ,$D 0 Npc0CK $  foc?? p ,$D 0 Npc0CK $  ftc?? P ,$D  0 Npc0CKH $ 0޽h ? 3333eZ TIMING>|18.1|8|24.2|3.6|11|5.4|3.9|8.9___PPT10+D' ~c= @B D' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* $%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D<' =A@BB*BB0B%()?)?D' =.K7 BBBBB]M 3.33333E-6 4.47606E-6 L 3.33333E-6 0.06106 *3>*B ppt_xB ppt_y=@0BBAApBBB-#<<*$D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D>' =A@BB*BB0B%()?)?D' =.M7 BBBBB_M 3.33333E-6 -2.92852E-6 L 3.33333E-6 0.12769 *3>*B ppt_xB ppt_y=@0BBAApBBB=<*$DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(++0+ $0 ++0+$0 ++0+$0 ++0+$0 ++0+$0 ++0+$0 ++0+$0 ++0+$0 ++0+$0 +v , 0qL0 JwJ4[lPI(  l Xl Z?"0@NNN?N `P@  l  `?"0@NNN?N  ^l  ^ 8l  Q,$@   0 $l  f?"0@NNN?N  %l  f?"0@NNN?N J, *l  f(c??"6@`NNN?N  ^ Pf22(2CK ,l Nc?"6@ NNN?N  >& (2C^l    7l  ,$@  0 "l  f?"0@NNN?N J  #l  f?"0@NNN?N  , )l  fc??"6@`NNN?N   Pf12(2CK +l N\c?"6@ NNN?N   >& (2C   q  l 0 cS"`?   Uvoid cmp1(int x,jmp_buf env){ if (x == 0) longjmp(env, 1); else return; }FV0 20CG3C, ;B  l ZD31?"0@NNN?N@ p ,$D  0N l  ``c?"0@NNN?N)J  jmp_buf env = & ; 2C$ l  `?"0@NNN?N  &l  f(c??@@,$D 0 Npc0CK| l \  5l\ p ,$@ 0 l # l?"0@NNN?NPp @0  l  f?"0@NNN?N@p ` 0   l C 0e0e    BC DEFA A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|Ex `8pp @  "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab X@  \ @ 0  4l \ 0  l # l?"0@NNN?N p 0 , -l  fc??"6@`NNN?N \ @ 0  Pf02(2CK 0l H8c?"6@ NNN?NVp P >& (2C ;l  fPc??D Nsp0CK  =l Hc?"0@NNN?N 0T  Yenv (2C >l  0e0e    BCDE(FA A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E @ 0X`h @   "0e@`     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab P nl @ Ll@,$D 0(@ p  Bl@d @l T?"0@NNN?N0  Al Tpc?"0@NNN?Np  Pf02(2CKB Cl ZD1?"0@NNN?NP*l  =   Sl=  ,$D  0 El Z?"0@NNN?NPh @  Fl Zc?"0@NNN?N = p  Pf12(2CKB Gl ZD?"0@NNN?N@   Pl  fc?? 0 P,$@ 0 Npc0CK Rl  fc??P 0 ,$@  0 Npc0CK&z  =   Tl   ` ,$D 0 Ul T?"0@NNN?NPh @  Vl Tc?"0@NNN?N = p  Pf22(2CKB Wl TD?"0@NNN?N@  y Yl Zpc?"0@NNN?N0  ,$D 0 +env cannot outlive the stack frame of rev !",(2,E3) Zl  0e0e    BCDEF3 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|Eppp@  "0e@`     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@ ,$D  0 [l  0e0e    BC`DEF3 1 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E` @  "0e@`     @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab` ,$D  0H l 0޽h ? 3333Pf TIMINGJ|16.6|9.8|21.9|6.7|8|22|2.1|7.8|0.9|2P___PPT10O.Fi+ƵhSDM' = @B DPM' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&l%(D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*5l%(D' =-o6Bdissolve*<3<*5lD3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*Ll%(D' =-o6Bdissolve*<3<*LlD' =%(D' =%(D>' =A@BB*BB0B%()?)?D' =.M7 BBBBB_M 3.33333E-6 -2.22222E-6 L 3.33333E-6 0.06111 *3>*B ppt_xB ppt_y=@0BBAApBBBO<<*&lD' =%(D'' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*&l%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Pl%(D' =-o6Bdissolve*<3<*PlD ' =4@BBBB%()))D' =1:Bvisible*o3>+B#style.visibility<*7l%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*7lD#' =+4 8?nCB!#ppt_y+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*7lD' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*7lD' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*7lD<' =A@BB@BB0B%()?)?D' =.K7 BBBBB]M 3.33333E-6 3.04881E-6 L 3.33333E-6 -0.0768 *3>*B ppt_xB ppt_y=@0BBAApBBBH<*;lD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Sl%(Dn' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*Pl%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Rl%(D' =-o6Bdissolve*<3<*RlD ' =4@BBBB%()))D' =1:Bvisible*o3>+B#style.visibility<*8l%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*8lD#' =+4 8?nCB!#ppt_y+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*8lD' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*8lD' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*8lD+' =4@BB@BB%()?)?D' =.G7 BBBBBYM 3.33333E-6 -0.0768 L 3.33333E-6 -0.15453 *3>*B ppt_xB ppt_y=@0BBAApBBB-<*;lD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Tl%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Zl%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*ZlD#' =+4 8?nCB!#ppt_y+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*ZlD' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*ZlD' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*ZlD' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*[l%(D#' =+4 8?nCB!#ppt_x+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*[lD' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*[lD' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*[lD' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*[lD' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*Zl%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*[l%(D4' =A@BB*BB0B%()?)?D{' =.C7 BBBBBUM -3.33333E-6 2.22222E-6 L 0.025 0.06111 *3>*B ppt_xB ppt_y=@0BBAApBBL<BO<<*RlD' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*B ppt_x<*B ppt_y<*B ppt_w<*B ppt_h<**B ppt_xB ppt_y=@0BBAApBBBI=<*;lD' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D#' =+4 8?nCB!#ppt_x+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<* lD' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<* lD' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<* lD' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<* lDA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Yl%(+0+0+&l0 ++0+&l0 ++0+&l0 ++0+;l0 ++0+;l0 ++0+Pl0 ++0+Pl0 ++0+Rl0 ++0+Rl0 ++0+Yl0 +   0)L0 (3(  (r ( S  U    ( <     : ( 0```  Tf(bits32 x){ h(x, k) also cuts to k; return 0; continuation k: return 1; }jU0 2C G3C G3C ( 0 P P  9h(bits32 x, bits32 k){ if (x==0) cut to k; return; }F:0 2#CG3CB  (@ 3 rD3jJ??p ,$D  0B  ( 3 rD3jJ??@0 ,$D  0H ( 0޽h ? 3333, TIMING|1.5|0.6___PPT10r+\^DV' = @B D' = @BA?%,( < +O%,( < +D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* (%(D#' =+4 8?nCB!#ppt_x+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<* (D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<* (D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<* (D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<* (D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* (%(D#' =+4 8?nCB!#ppt_x+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<* (D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<* (D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<* (D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<* (+  0tkL0 c[4(  4> 4 T8CZ?"0@NNN?NP  ,$ 0 NNo l s!$(23~ 4 C "A spca ,$D 0x 4 c $EZ U  Z  4 <|GZ  y Z B 4  `Do?? pG }4 TIZ?? @ ,$D 0 AAll systems are lemma libraries built on a single CAP0 framework!B 2BC B H 4 0޽h ? 3333( : TIMING|20.5|41.2|23.1 ___PPT10 +DM%D2 ' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =-o6Bdissolve*<3<*4D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =-o6Bdissolve*<3<*4DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*}4%(+p+0+40 ++0+}40 + 6 0KL0 pB(     `?"0@NNN?Nx  c $; U      0<3  "6 ?@`  H  0޽h ? 3333y___PPT10Y+D=' = @B +# 0 0L0 " "%)|!(  |~ | s *G U    | <4N?"6@`NNN?N`  DC    | BPQ?"0@NNN?NV@  PI12ck | 00V?"0@NNN?NV@P ef1:F(2ckc | BP[?"0@NNN?N6@   PI22ck | 0_?"0@NNN?N6@0  ef2:F(2ckc | Bd?"0@NNN?N @ f  PI32ck  | 0i?"0@NNN?N `@  ef3:F(2ckc  | 0 *?"0@NNN?N @  >&  (2c  | 0q?"0@NNN?N p  _ (code heap) C6(2 cg  | 6|v?"6@`NNN?N  =0 (2c  | 6z?"6@`NNN?N  Rr14(2ck | 0?"6@`NNN?N   | 6~?"6@`NNN?N  =1 (2c | 0?"6@`NNN?N   | 6?"6@`NNN?N  =2 (2c | 0?"6@`NNN?N   | 6?"6@`NNN?N   >&  (2c | 6?"6@`NNN?N  0 | 6Ȁ?"6@`NNN?N  Rr24(2ck | 6L?"6@`NNN?N  Rr34(2ck | 6?"6@`NNN?N   R& 4(2ck | 6 ?"6@`NNN?N 0  Rrn4(2ck | 0?"0@NNN?N`  _ (data heap) H6(2 cg | 0̡?"0@NNN?N `  c(register file) R6(2cg | 0?"6@`NNN?N `  | 0Ħ?"0@NNN?N 0  [ (state) S6 (2cg | B$?"0@NNN?NF&  8 addu & lw & sw & & j f| ckckck>  | 0?"0@NNN?N   a(instr. seq.) I6(2cg | 0?"6@`NNN?N`@  | 0P?"0@NNN?NpP  Y (program) P2 (2 ae !| 0`?"0@NNN?Np p e ::=(C,S,pc) (2 A "| 0p?"0@NNN?N   B::=(H,R) (2 C> #| 0l?"0@NNN?NP `0 J ::={f I}*t (2CC   CK (| 6?"6@`NNN?N p Rpc4(2ckB )|  `D?"0@NNN?Np`H | 0޽h ? 3333___PPT10i.OP(+D=' Z= @B +   0 <L0 xp@L(  Lx L c $ U    L c $ @` <$ 0   8 P L L H`?"0@NNN?N0 P PS02ckB L 6D?"0@NNN?N` L 6?"0@NNN?N0 Rc14(2ck L H0?"0@NNN?NP0pP PS12ckB  L 6D?"0@NNN?N`    L 6x?"0@NNN?N`   Rc24(2ck  L H?"0@NNN?N 0 P PS22ckB  L 6D?"0@NNN?N   L 6?"0@NNN?N  Rc34(2ck L 68?"0@NNN?N0&P  N& 0(2CKB L 6D?"0@NNN?N L 6?"0@NNN?NP Rcn4(2ck L H?"0@NNN?N0P PSn2ck| L 0d  @`,$ 0 Progress: if Inv(S), then $S . S c S . Preservation: if Inv(S) and S c S , then Inv(S ). aP 3G333 3 33 333G333 3 3 333G3>*H L 0޽h ? 3333"& TIMING |26.3___PPT10+[ATD@' = @B D' = @BA?%,( < +O%,( < +D2' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*L%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*L%(+p+0+L0 ++0+L0 +/ 1 0mL0 ''**S'(  ~  s *, U     <l-?"6@`NNN?NP  DC     B1?"0@NNN?NF@  PI12ck  06?"0@NNN?NF@@ ef1:F(2ckc  B@;?"0@NNN?N& @ v  PI22ck  0/?"0@NNN?N& @  ef2:F(2ckc  BD?"0@NNN?N @ V  PI32ck   0I?"0@NNN?N `@  ef3:F(2ckc   0N?"0@NNN?N @  >&  (2c   0R?"0@NNN?N pz _ (code heap) C6(2 cg   6W?"6@`NNN?N  =0 (2c   6pQ?"6@`NNN?N  Rr14(2ck  0?"6@`NNN?N   6_?"6@`NNN?N  =1 (2c  0?"6@`NNN?N   6Y?"6@`NNN?N  =2 (2c  0?"6@`NNN?N   6b?"6@`NNN?N   >&  (2c  6?"6@`NNN?N 0   6k?"6@`NNN?N  Rr24(2ck  6o?"6@`NNN?N  Rr34(2ck  6,t?"6@`NNN?N   R& 4(2ck  6lx?"6@`NNN?N 0  Rrn4(2ck  0|?"0@NNN?N`  _ (data heap) H6(2 cg  0?"0@NNN?N `  c(register file) R6(2cg  0?"6@`NNN?N P   0$?"0@NNN?N 0 z [ (state) S6 (2cg  B@?"0@NNN?N6  8 addu & lw & sw & & j f| ckckck>   00?"0@NNN?N z a(instr. seq.) I6(2cg  0?"6@`NNN?N`0   0?"0@NNN?N`P  Y (program) P2 (2 ae ! 0?"0@NNN?N` p e ::=(C,S,pc) (2 A " 0?"0@NNN?N z B::=(H,R) (2 C> # 0?"0@NNN?N@`0 : ::={f I}*t (2CC   CK $ 6`?"6@`NNN?Np pp  Rpc4(2ckB %  `D?"0@NNN?Np`l p  *p ,$D 0 & 0X?"0@NNN?N fa1H(2GOC ' 0?"0@NNN?N  fa2H(2GOC ( 0ؼ?"0@NNN?Nv p  fa3H(2GOC ) 0?"6@`NNN?N ,$D 0 .*(spec) Y ::= {f a}*(2e EG EG   EMH  0޽h ? 3333. TIMING|4.3|11.2m___PPT10M.OP(+8D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =-o6Bdissolve*<3<**D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =-o6Bdissolve*<3<*)+8+0+)0 +  0L0 pX0(  Xx X c $l U   x X c $ 0  H X 0޽h ? 3333y___PPT10Y+D=' = @B + 8 0lL0 B(     `?"0@NNN?N x  c $0 U      03  "6 ?@`  H  0޽h ? 3333y___PPT10Y+D=' = @B +(  0*L0 rjp(  px p c $ U   t p 0`g lf: ... sw $ra, -4($fp) jal h ct: lw $ra, -4($fp) ... jr $ra"m0 2mCb !l p 61"```P l p 61"`p ``T p Td ??`0 G,$ 0  {(p0, g0)}v  2G3O3G3O3G3T p T ??p 0 W ,$ 0  {(p1, g1)}v  2G3O3G3O3G3 p 0  P ,$ 0 lSCAP specifications: (p, g) p: State Prop g: State State Prop n<( n7A C CCz @ `P `  p `@ P `,$@ 0r  p  f >??` `P `  p T  ??@ P ` 7  jg0L 2G3O3G3z  p `  p p `,$D  0r  p  f >?? p ` p T ??  jg1L 2G3O3G3 p T$ ?? ,$  0 2g0 S S S .$ra = S.$ra & x 2G3O3G333,  p <*  P   l ``P p``P,$D 0 p T, ??``G v{$ra = n & }"  2 G3 p T<1 ??`iP v{$ra = n & }"  2 G3H p 0޽h ? 3333D TIMING(|18.1|23.9|17.2|32.1___PPT10+R3`D' = @B DD' = @BA?%,( < +O%,( < +DX' =%(D' =%(D' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*pD' =1:Bvisible*o3>+B#style.visibility<*p%(Ds' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p,%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p,D%(D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*pD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* p%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* p%(D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*p%(D' =-o6Bdissolve*<3<*p++0+p0 ++0+p0 ++0+p0 ++0+p0 +*  0L0   11(  x  c $0- U   x  c $$7    dB  <D>   TF ??`2G 9{p} 2  T8C ??2  9{q} 2dB  <D>p    T,C ??P 7  9{q} 2   TXC ??   :{q'} 2^B   6D> @@ dB   <D> @@    TT ??  9{p} 2   Td^ ??   :{q'} 2 z  Lp  L p,$D  0lB  <D>r s B B 3 rD??  lB  <D>K L B B 3 rD??` P   Z|j ??p Z  8&  2  Z(s ??, @L  8&  2  0| p jjr $ra&0 2G3  0܆ p jjr $ra&0 2G3 B  ` ?? Lp  B  ` ?? V    ` ??|@     ` ??   TH ?? i P  7g 2  TD ??   8g' 2  T ?? @  8g" 2  T0 ??   7g 2 B  ` ?? P    T ??   9g'' 2 ! Z?? P  " T  ?? B Hoare-triple  2  z p,p # ,pp,$D 0` p,p  $ p,p ,$D 0lB % <D>PL P Z p,p  & p,p ,$D 0lB ' <D>`L` ( T@ ??p, <(p, g) 2lB ) <D>t t@ fB * 6D>PPL  + TT ??p >(p', g')  2  , T ??p  >(p', g')  2  - Tl ??`   >(p", g")  2  . T ??`p <(p, g) 2 / T ??   >(p", g")  2  0 Z??`  1 TP  ?? D(p, g) in SCAP 2H  0޽h ? 3333. & ___PPT10 +ѯD ' = @B D ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D#' =+4 8?nCB!#ppt_y-#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*+  0#L0 %&|*(  |x | c $ @U   dB | <D3>dB | <D>` XB | 0D | 0` Cjal f"0 2CXB | 0D` `  | 0X0 p  Cjal h"0 2CdB  | <D>`  XB  |@ 0D    | 0   jr $raB0 2CCCdB  | <D>  XB  |@ 0D   | 0J   vjr $ra20 2CCdB | <D3>  XB | 0D0XB |@ 0D000 | 0  ,$ 0 *Program Specification Y::= {f1(p1,g1), & ,fn(pn,gn)}  safe to return (jr $ra): $radom(Y) Y($ra)=(p,g) p holds at the time of return> n<! n7 n<8 n<AAA  &r |  ` ??0` r |  ` ??0 |  ` ?? 0 | 0ĵ 6Vw  Zg0<0 2G3O3 | 0 0 Zg4<0 2G3O3 | 0(06V Zp0<0 2G3O3 | 0   Zp4<0 2G3O3 | 0ĸ pw  Zg1<0 2GO | 0  Zp1<0 2GO | 0x _  Rg240 2CK | 0 @0'  Rp240 2CK |  ` ??`   | 0   Zg3<0 2GO  | 0 0P  Zp3<0 2GO !|  ` ??   "| Z?"0@NNN?N Tp >& (2CdB #| <D3>@0r $|  ` ??@ P0 &| 00 vjr $ra20 2CCH | 0޽h ? 3333" TIMING|45___PPT10+7*DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*|%(+8+0+|0 +,  0LL0  w 0  (  ~  s *P U   dB  <D>`@@XB @ 0D0@dB  <D3>00 XB @ 0D 0 dB  <D33>  XB @ 0D  dB  <D>   0p0W Rp040 2CKX  0`p  0Pw Rg040 2CK  0H  lp1N0G3O3G3  0pW  lg1N0G3O3G3X  0`   0)   lp2N0G33O33G33  0. pg  lg2N0G33O33G33X  0 p   0,4 0  lp3N0GOG  09 pw  lg3N0GOGX  0  r  <jJ"`p  0DBY@D ,$ 0 Nhg0 S0 S1 S1.$ra Y Y(S1.$ra))=(p1, g1) p1 S150 23333  3333333333330  0D]  ,$ 0 8|g0 S0 S1 g1 S1 S2 S2.$ra Y Y(S2.$ra)=(p2, g2) p2 S2h?0 2333333333333333  3333333333333333333333330 \  0 @p,$ 0 g0 S0 S1 g1 S1 S2 g2 S2 S3 S3.$ra Y Y(S3.$ra)=(p3, g3) p3 S3I0 2333333333333333333333  0*  0$ @ fjr $ra"0 2C  T\ ??0 KLogical control stack 2  Th ??@ ` RAlways safe to return?  2E3   f0 ??0 FS0(   Tܴ ??0 RS14 2G3O3  T ??    RS24 2Gf3Of3  T\ ??   RS34 2GOH  0޽h ? 3333, : TIMING|25.5|24.2|20.5 ___PPT10 .O8+.vH-D ' = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*++0+0 ++0+0 ++0+0 +  0L0 @(  ~  s * U   x  c $    dB  <D>`@@XB @ 0D0@dB  <D3>00 XB @ 0D 0 dB  <D33>  XB  @ 0D  dB  <D>   0$p0W Rp040 2CKX  0`p  0HPw Rg040 2CK  0  lp1N0G3O3G3  0$pW  lg1N0G3O3G3X  0`   0   lp2N0G33O33G33  0L pg  lg2N0G33O33G33X  0 p   0 0  lp3N0GOG  0< pw  lg3N0GOGX  0  r  <jJ"`p  0, a fjr $ra"0 2C  T ??p KLogical control stack 2   f ??0 FS0(   T ??0 RS14 2G3O3  T$  ??    RS24 2Gf3Of3  T` ??   RS34 2GOH  0޽h ? 3333___PPT10i.OP.T+D=' = @B +  0{L0   ` T (  ~  s *8 U   x  c $$)    z p0   @@ ,$D  0`B  0DjJ 0   0+P p@  =c 0 2A @ 3 rL/GOFԔԔXX?"`@P ,$D 0 :S Al 0 @ 0 @,$D 0~  B C xL3GOFԔԔXX?"`0 @ .p S $n.WFST(n,g S,Y)>  C0   B C xL;GOFԔԔXX?"`PP  GS*AIB   # lDjJ??@P @ l  P @ P ^@,$D  0B  # lDjJ??0P 0 ~ B 3 rL?GOFԔԔXX?"` @ 4p S $n.WFST(n,g S ,Y)>  C0 H  0޽h ? 3333I2 TIMING|13|3.8|5.4___PPT10.+jD' H= @B D>' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D#' =+4 8?nCB!#ppt_x-#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D#' =+4 8?nCB!#ppt_y-#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*+8+0+0 +>  04L0 N*F*p::)(  ~  s *Q U   dB  <D>0 XB @ 0D0 0 dB  <D3>0  XB @ 0Dw w   0 U Rp040 2CKX  0 0   00Z  Rg040 2CK  0^I0  lp1N0G3O3G3  0 XM \4  lg1N0G3O3G3X  00 p   0hp\ D  fjr $ra"0 2CRB  s *D3>XB  0DdB  <D>0   0nP `p0B0CKCX  0@0   0|sp `g0B0CKCr  <jJ"`@ 0   0xpD  ~jr $ra00CC$  0p~`G Ap$0G3Xr  0{P{   0`pW  Ag$0G3RB  s *D    0x` ` p G  ^jal f "0 2CT  0D,$ 0 *p S WFST(n, g S, Y)V0 2 C  0p p ,$D  0&  0<0 ,$ 0 6p0 S0 WFST(n+1, g0 S0, Y)0CKCKCCG3CKCKCCC   f ??  9S   f\ ??P JS0,   T0 ??I `0  9n+1 2 ! TH ??   7n 2r " <jJ"`   dB # <D3>w 7 dB $@ <D7 07  % Zw` ?? `  8&  2dB & <D3> @@ : ' 0ȵP P@7,$ 0 p S p0 S0t 0 23XB (@ 0D4 4 dB ) <D3>4  XB *@ 0D{ P{  + 0LM@4  lp1N0G3O3G3 , 0Q l8  lg1N0G3O3G3X - 04 0  . T ??   7n 2r / <jJ"`  dB 0 <D3>{ PP; dB 1@ <D; P;  2 Zw8 ??    8&  2dB 3 <D3>   4 0IP 0,$ 0 P,p S g0 S0 S1 p1 S10 233333F 5 09PP ,$ 0 Dp S g0 S0 S1 g1 S1 S2 g S S2R#0 2333333333 6 0d 0 ,$ 0 z4g0 S0 S1 S0.$ra = S1.$ra*0n7ZG3O3G3O3G3O3G33G3O3G3O3G3 7  fH ??` PP  JS1,  8  fD ??` PP  JS1,  9  f ?? @  JS2,  :  f`  ?? @  JS2, H  0޽h ? 3333I6 TIMING|20.8|7.1|8.4___PPT10.Po&+ z":Dg' = @B D"' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(D' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D ' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*5%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*6%(+P+0+0 ++0+0 ++0+'0 ++0+40 ++0+50 ++0+60 +g(  0sL0 rj'*(  ~  s * U   dB  <D>W XB @ 0DW W dB  <D3>W g   0 Qp40 2CKX  0@W   0@ ~  Qg40 2CK  00ppW  lp1N0G3O3G3  0 `  lg1N0G3O3G3X  0W `g r  <jJ"`p`dB  <D3>W g   0p pW  hp1J0G3O3C  00 `  hg1J0G3O3CX  0W g RB  s *Dp @p   0DP 7  pjr $ra"0 2C$T  0pW,$ 0 *p S WFST(n, g S, Y)V0 2 C  0 p ,$D  0&  0 p0 W,$ 0 6p1 S1 WFST(n-1, g1 S1, Y)0CKCKCCG3CKCKCCC  T ??@'  7n 2XB @ 0Df f   TL ?? `  9n-1 2r  <jJ"`  dB  <D3>f & dB @ <D& &   Zw(  ?? P  8&  2dB  <D3> 00v XB @ 0Df 0f   T$ ??   9n-1 2r  <jJ"`  dB ! <D3>f 00& dB "@ <D& 0&  # Zw\) ??   8&  2dB $ <D3> v   ' 0-pP W,$ 0 p S g S S1X 0 2 33 3 )  f2 ??  9S *  f6 ?? P  JS1, H  0޽h ? 33336 TIMING|10.9|6.2|8.5?___PPT10.0'I+fԣDK ' >= @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(D' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =-o6Bdissolve*<3<*'++0+0 ++0+0 ++0+'0 +b-  0jL0 [S,,(  x  c $T) U   dB  <D> XB @ 0D  XB @ 0D    0> Rp040 2CKX  0    0? &  Rg040 2CK  0D_ %3  fjr $ra"0 2CRB  s *D3>XB  0D  0  Ap$0G3Xr  0P   0PoV  Ag$0G3   f ?? 9S  TŊ ??   7n 2r  <jJ"`  ` dB  <D3>  dB @ <D 0   ZwɊ ?? `  8&  2dB  <D3>p @@0 RB  s *D P    0͊_ p F  Bj f "0 2CdB  <D> XB @ 0D  XB @ 0D    0Ҋ Rp040 2CKX  0@   0(׊  Rg040 2CK  0ۊ/ E  fjr $ra"0 2C   fxԊ ??`? JS0,   TH ??i @0P  7n 2r ! <jJ"` @@0 dB " <D3>  dB #@ <D P  $ Zw< ??P 0p  8&  2dB % <D3>@ `` T & 0X,$ 0 *p S WFST(n, g S, Y)V0 2 C ' 0p p ,$D  0" ( 00 ,$ 0 2p0 S0 WFST(n, g0 S0, Y)0CKCKCCG3CKCKCCC: ) 0 ` ,$ 0 p S p0 S0t 0 23 * 0 @ ,$ 0 .p S g0 S0 S1 g S S10 2333 +  f ?? p  JS1,  ,  fl ??P P@  JS1, H  0޽h ? 33336 TIMING|19.1|6.3|5.8Q___PPT101+XD*D5' ܊= @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =%(D' =%(D' =4@BBB B%(D' =1:Bvisible*o3>+B#style.visibility<*'%(D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*'D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*'D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =-o6Bdissolve*<3<*(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<**%(++0+&0 ++0+(0 ++0+)0 ++0+*0 + 9 0L0 B(     `?"0@NNN?N  x  c $' U      0d(3  "6 ?@`  H  0޽h ? 3333y___PPT10Y+D=' = @B +-  0L0 ));;<)(  ~  s *3 U   dB  <D>0 XB @ 0D0 0 dB  <D3>0  XB @ 0Dw w   08: Rp040 2CKX  0 0   0\?  Rg040 2CK  0CI0  lp1N0G3O3G3  08=M \4  lg1N0G3O3G3X  00 p   0Np\ D  fjr $ra"0 2CRB  s *D3>XB  0DdB  <D>0   0hSP `p0B0CKCX  0@0   0Yp `g0B0CKCr  <jJ"`@ 0   0\^pD  ~jr $ra00CC$  0b`G Ap$0G3Xr  0{P{   0HgpW  Ag$0G3RB  s *D    0k` ` p G  ^jal f "0 2C   0w 7 dB $@ <D7 07  % Zw ?? `  8&  2dB & <D3> @@  ' 0<P P@7 p S p0 S0t 0 23XB (@ 0D4 4 dB ) <D3>4  XB *@ 0D{ P{  + 0M@4  lp1N0G3O3G3 , 0Q l8  lg1N0G3O3G3X - 04 0  . TЬ ??   7n 2r / <jJ"`  dB 0 <D3>{ PP; dB 1@ <D; P;  2 Zwx ??    8&  2dB 3 <D3>   4 0IP 0 P,p S g0 S0 S1 p1 S10 233333 5 0đ9PP  Dp S g0 S0 S1 g1 S1 S2 g S S2R#0 2333333333 6 0Xґ 0  z4g0 S0 S1 S0.$ra = S1.$ra*0n7ZG3O3G3O3G3O3G33G3O3G3O3G32 7  f jJ?? p ,$D 0 8  fݑ ??` PP  JS1,  9  f ??` PP  JS1,  :  fH ?? @  JS2,  ;  f ?? @  JS2, H  0޽h ? 3333$ TIMING|7.7___PPT10n.Po&+ :qDB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*7%(+,1 * 0qL0 x$p$@A#(  x  c $D U    l @ A@,$D 0   0 `g1B0CKCrB  BD>fB B 6DrB  BD3> fB B 6D  rB  BD33> 0 fB B 6D00 0 rB   BD>00 0@   6D `p1B0CKCf   6p   BjJ"`@   6`P$ }jr ra00CC$B B # lD??p `B B 0D33> @ `B B 0D3>p0 B B # lD??0p`B B 0D>0 P B B # lD??  rB  BD3>  6 Ap$0G3fr  6p   6,g Ag$0G3fB  6Dl  P   @ P  ,$D  0  Z??P P P   T0 ??   7+ 2 F     lB  <D>@`B B 0D@@lB  <D3>@    0Pp `p1B0CKC` ! 0`@ " 0 `g1B0CKC # 0 PT }jr ra00CC$ZB $B s *D3> 0 B %B  fD?? @lB & <D3> ' 0&0 Ap$0G3`r ( 0`  ) 0 + Ag$0G3`B * 0DB +  fD??B ,  fD??   - Z ??  . TP/ ??  ? Multi-ret  2 d z   /   ,$D 0lB 0 <D> ``B 1B 0D`` 2 0l4p   `p1B0CKC` 3 0 &` 4 09V g `g1B0CKC 5 0   7 0E` G  Ap$0G3 8 0H  Ag$0G3`B 9 0D  B :  fD??  `r ; 0` ``B <B 0D`` = Z ??  > TM ??  ? Tail-call  2 H  0޽h ? 3333D * TIMING|28.7|8 ___PPT10 + [y`D ' = @B D ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*/%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D#' =+4 8?nCB!#ppt_x-#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*@D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*@D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<*@D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*@D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*A%(+ 2 0L0  G(  x  c $Y U      0[C"? 0 eint rev(int x){ if (setjmp(env) == 0){ cmp0(x, env); return 0; }else{ return 1; } }Ff0 2C G3EC6*.3   0cC"?  /void cmp0(int x,jmp_buf env){ cmp1(x, env); }"00 20C>  q   0iS"`?   Uvoid cmp1(int x,jmp_buf env){ if (x == 0) longjmp(env, 1); else return; }FV0 20CG3C, ;N   `Pp?"0@NNN?N)J  jmp_buf env = & ; 2C$H  0޽h ? 3333___PPT10i.Fi+D=' = @B +W3 0CTL0 xp0(  ~  C "A spec@ xf,$D 0J  C "A code`  PH  0޽h ? 3333o" TIMING|11=___PPT10.pQ+? D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*+O " 0;L0 ^V(((  x  c $,} U   dB  <D>pdB  <D3>PPXB  0DPdB  <D3>pPP XB  0DpPpdB  <D> p XB  0D P dB  <D3>p PP XB  0Dp Pp dB  <D> ppdB  <D3> XB  0D dB  <D>0 pp dB  <D3>@ XB  0D@ @ dB  <D3> @dB  <D3>p dB  <D3>P @ B   `D??  p@B   `D??p pB   `D??+ p B   `D??P p   T ??9  @switch 2C  T< ?? @switch 2C  T  ??L   @switch 2C  T ??   @switch 2CdB  <D> pp dB  <D3> B   `D?? p B   `D?? p  ! Zԑ ?? @ @switch 2C " Tȕ ??  >call 2C # Tt ?? 0 T  =ret 2C $ ZG4l ??, P  @switch 2C % ZD ??0   @switch 2C & Z\ ?? @  @switch 2C ' T$ ??6 0 @ coroutines  2  ( T ??@p p: Scoroutines w. functions calls 2H  0޽h ? 3333y___PPT10Y+D=' = @B + $ 0L0 00(  x  c $ U   x  c $    H  0޽h ? 3333y___PPT10Y+D=' = @B +w  0L0 ~(  x  c $l’ U   x  c $DÒ @   ~ 0B  # #"*r0B   ZŒ ??o  U SCAP-II, ECAP @`  ZHϒ ??o  aExceptions: Stack-cutting @`  Zߒ ??o U SCAP-I, EUCAP @`  Zp ??o cExceptions: Stack-unwinding @`   Z ??oB B  MFCCAP @`   Z ??B oB  OThreads @`   Z ??oH B  XCAP-CR (SCAP-CR) @`   Z  ??H oB  eCoroutines (w. function call) @`   Z ??o H  OSCAP-II @`   Zt ?? oH  y!Weak-continuation setjmp/longjmp&"C @`  Z* ??o0 LSCAP @`  Z, ??0o m%Function call; tail-call optimization&& @`B  Zo??0o0B  T1 ??B  T1 ??H H B  T1 ??B B B  Zo??B oB B  Zo??0B B  T1 ??o0oB B  Zo??0B B  Zo??B B B  Zo??o00B  Zo??oB B B  Zo??B B B  T1 ??B  T1 ??  H  0޽h ? 3333y___PPT10Y+D=' = @B +E  0 <(  <^ <S     <c $l @   SExplain what we mean by modular Separate verifications Reuse the verified librariesTSH < 0޽h ? ̙33j 0 *"t(  t^ tS     tc $T @   What is state? State contains memory, register file The exit point does not have to be return point: raise exceptions, weak continuations, context switchingH t 0޽h ? ̙33 0 f^(  ^ S    X c $[ @   Only code labels specified in \Psi are good code pointers To make sure it is safe to jump to some code, the code label must be defined in \Psi with some spec (p, g),iH  0޽h ? ̙33 0 /(  ^ S     c $d @   %Proof obligationsH  0޽h ? ̙33A& 0  (  ^ S     c $j @   No more unchecked errors Study of stack-based control abstractions Formalize their stack-invariants Certify their assembly implementation SCAP-family logics Hoare-style verification logics Modular verification of different control flows No assumption on stack-layout / calling-conventionLCGCGH  0޽h ? ̙33 0  (  X  C 8   Z  S Z8 @  Z " H  0޽h ? ̙3380___PPT10.+.P- 0  (  X  C 8     S y8 @   " H  0޽h ? ̙3380___PPT10.+R 0  (  X  C 8     S `z8 @   " H  0޽h ? ̙3380___PPT10.+R 0  (  X  C 8     S @8 @   " H  0޽h ? ̙3380___PPT10.+R  0 0 (  X  C 8     S 8 @   " H  0޽h ? ̙3380___PPT10.+R 0 P (  X  C 8     S 脘8 @   " H  0޽h ? ̙3380___PPT10.+R 0 $ (  $X $ C 8    $ S Ț8 @   " H $ 0޽h ? ̙3380___PPT10.+pT 0 ( (  (X ( C 8    ( S 8 @   " H ( 0޽h ? ̙3380___PPT10.+pT 0 0 (  0X 0 C 8    0 S X8 @   " H 0 0޽h ? ̙3380___PPT10.+pT 0 4 (  4X 4 C 8    4 S  8 @   " H 4 0޽h ? ̙3380___PPT10.+pZW 0 8 (  8X 8 C 8    8 S 8 @   " H 8 0޽h ? ̙3380___PPT10.+pZW  0 < (  <X < C 8    < S 8 @   " H < 0޽h ? ̙3380___PPT10.+pZW$ 0 PP (  PX P C 8    P S 8 @   " H P 0޽h ? ̙3380___PPT10.+pY' 0 pX (  XX X C 8    X S 8 @   " H X 0޽h ? ̙3380___PPT10.+pY; 0 ,(  ^  S 8     c $Ƙ8 @   " H  0޽h ? ̙3380___PPT10.+pZW. 0  (  X  C 8     S ̘8 @   " H  0޽h ? ̙3380___PPT10.׹8 0  (  X  C 8     S И8 @   " H  0޽h ? ̙3380___PPT10.׹2 0  (  X  C 8     S ֘8 @   " H  0޽h ? ̙3380___PPT10.׹3 0   (  X  C 8     S ܘ8 @   " H  0޽h ? ̙3380___PPT10.׹4 0 0 (  X  C 8     S 8 @   " H  0޽h ? ̙3380___PPT10.!5 0 @ (  X  C 8     S 8 @   " H  0޽h ? ̙3380___PPT10.!< 0 ,(  ^  S 8     c $8 @   " H  0޽h ? ̙3380___PPT10.׹> 0 ,(  ^  S 8     c $8 @   " H  0޽h ? ̙3380___PPT10.׹? 0 ,(  ^  S 8     c $8 @   " H  0޽h ? ̙3380___PPT10.׹rp@< L\ x; 0VP3OG1) 8H[t!Pcv =)Ī+ 1@6 @_90@0BHG `xJ@RTY\@1daedpg qk j D\ n@t  t`vxP9n@@|1G=(Oh+'0P hp, @L l x LModular Verification of Assembly Code with Stack-Based Control Abstractions Xinyu FengiLD:\Program Files\Microsoft Office\Templates\Presentation Designs\Blends.pot Zhong ShaoF127Microsoft PowerPointoso@1@}@@R!G0Og  '  --$--'33--$JOJO--'-55--$IIJJJJI--::--$JJJKJKJ--@@--$KKJLJLK--GG--$LLJMJML--MM--$MMJNJNM--UU--$NNJOJON--\\--$OOJPJPO--dd--$PPJQJQP--ll--$QQJRJRQ--tt--$RRJSJSR--}}--$SSJTJTS----$TTJUJUT----$UUJVJVU----$VVJWJWV----$WWJXJXW----$XXJYJYX----$YYJZJZY----$ZZJ[J[Z----$[[J\J\[----$\\J]J]\----$]]J^J^]----$^^J_J_^----$__J`J`_----$``JaJa`----$aaJbJba----$bbJcJcb----$ccJdJdc----$ddJeJed----$eeJfJfe----$ffJgJgf----$ggJhJhg----$hhJiJih----$iiJjJji----$jjJkJkj----$kkJlJlk----$llJmJml---'--$-D-x[x[D-D--'---$UDUxVxVDUD----$VDVxWxWDVD--%--$WDWxXxXDWD--0--$XDXxYxYDXD--8--$YDYxZxZDYD--A--$ZDZx[x[DZD--I--$[D[x\x\D[D--Q--$\D\x]x]D\D--Z--$]D]x^x^D]D--b--$^D^x_x_D^D--j--$_D_x`x`D_D--s--$`D`xaxaD`D--|--$aDaxbxbDaD--ۄ--$bDbxcxcDbD--݌--$cDcxdxdDcD--ߔ--$dDdxexeDdD----$eDexfxfDeD----$fDfxgxgDfD----$gDgxhxhDgD----$hDhxixiDhD----$iDixjxjDiD----$jDjxkxkDjD----$kDkxlxlDkD----$lDlxmxmDlD----$mDmxnxnDmD----$nDnxoxoDnD----$oDoxpxpDoD----$pDpxqxqDpD----$qDqxrxrDqD----$rDrxsxsDrD----$sDsxtxtDsD----$tDtxuxuDtD----$uDuxvxvDuD----$vDvxwxwDvD----$wDwxxxxDwD----$xDxxyxyDxD----$yDyxzxzDyD----$zDzx{x{DzD----${D{x|x|D{D----$|D|x}x}D|D----$}D}x~x~D}D---'A /><( ~~ssgg]]RRHH==22%%vvkk``VVKKAA66++zzooddYYOODD::hhwwaaef_ZUVWXghiD"jE%^_`aMNbPc9QRd<=Z[\]GHIJ234K6LUVWXABCD"#E%F'Y)MNOP89QR<=S>TGHIJ234K6L ABCD"#E%F'()*+,-89:;<=>?@23456 7 "#$%&'()*+,-./01 ! '--$E E}H}H E --'---$"d"k%k%d"d----$%d%k+k+d%d-- --$+d+k0k0d+d--"""--$0d0k6k6d0d--$$$--$6d6k=k=d6d--&&&--$=d=kBkBd=d--(((--$BdBkHkHdBd--***--$HdHkMkMdHd--,,,--$MdMkTkTdMd--...--$TdTk\k\dTd--000--$\d\k`k`d\d--222--$`d`khkhd`d--444--$hdhknkndhd--666--$ndnksksdnd--888--$sdskzkzdsd--:::--$zdzkkdzd--<<<--$dkkdd-->>>--$dkkdd--@@@--$dkkdd--BBB--$dkkdd--DDD--$dkkdd--FFF--$dkkdd--HHH--$dkkdd--JJJ--$dkkdd--LLL--$dkkdd--NNN--$dkkdd--PPP--$dkkdd--RRR--$dkkdd--TTT--$dkkdd--VVV--$dkkdd--XXX--$dkkdd--ZZZ--$dkkdd--\\\--$dkkdd--^^^--$dkkdd--```--$dkkdd--bbb--$dkkdd--ddd--$dkkdd--fff--$dkkdd--hhh--$dk k dd--jjj--$ d kkd d--lll--$dkkdd--nnn--$dkkdd--ppp--$dk!k!dd--rrr--$!d!k(k(d!d--ttt--$(d(k-k-d(d--vvv--$-d-k3k3d-d--xxx--$3d3k:k:d3d--zzz--$:d:k>k>d:d--|||--$>d>kEkEd>d--~~~--$EdEkIkIdEd----$IdIkPkPdId----$PdPkTkTdPd----$TdTk\k\dTd----$\d\k`k`d\d----$`d`kgkgd`d----$gdgklkldgd----$ldlkrkrdld----$rdrkwkwdrd----$wdwk}k}dwd----$}d}kkd}d----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd--B 0PDCourier Newman0B 01`DComic Sans MSn0B 0BpDSymbolans MSn0B 0DHelvetica MSn0B 0 "DWingdings 3Sn0B 0 C(.2  @n?" dd@  @@``   d?A    3 '!#!$&';()+*-+<"?/)123 9:<=>CEJKMNOPUW\\3 `*a+bcgjBkmnqrstwx{|}~2o$$R$n6C0nn13ͯ$R$ WQ~Vƈ>YFR$Y,A>wl7wFJ(23 R0e0e    A A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 33f@8dʚ;)j8ʚ;g4FdFd B 0pppp@ <4!d!dLpC 0| / 0DTimes New Roman0B 0D[SOes New Roman0B 0 DArialNew Roman0B 00DTahomaew Roman0B 0"@DWingdingsRoman0B 0PDCourier Newman0B 01`DComic Sans MSn0B 0BpDSymbolans MSn0B 0DHelvetica MSn0B 0 "DWingdings 3Sn0B 0 C(.2  @n?" dd@  @@``   d?A    3 '!#!$&';()+*-+<"?/)123 9:<=>CEJKMNOPUW\\3 `*a+bcgjBkmnqrstwx{|}~2o$$R$n6C0nn13ͯ$R$ WQ~Vƈ>YFR$Y,A>wl7wFJ(23 R0e0e    A A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUW  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~YZ[ \]^_ `ab 33f@8dʚ;)j8ʚ;g4idid B 0Lppp@ <4!d!dLpC 0|<4ddddLpC 0| <4ddddLhG 0$___PPT10D[SOes New 0B 0DCourier New0B 01 DTimes New Roman0B 0 ? %%KModular Verification of Assembly Code with Stack-Based Control PowerPoint Document(xSDocumentSummaryInformation8lRoot EntrydO),PicturesCurrent User>SummaryInformation(Q "_/ Zhong ShaoZhong Shao՜.+,0<    On-screen ShowYale UniversityS1O )Times New Roman宋体ArialTahoma Wingdings Courier NewComic Sans MSSymbol AbstractionsLL hXinyu Feng Yale University Joint work with Zhong Shao, Alexander Vaynberg, Sen Xiang and Zhaozhong Ni4iKt-  6- Motivation  PHow to verify the safety & correctness properties of low-level system software? QO Q d8Verifying C & Assembly? bMany challenges & This talk: how to specify/verify low-level stack-based control flows? How to formulate the stack invariants? How to design a compositional program logic? PPHPPTPP ;    .   ,Problems  call/return Y.2Problems  setjmp/longjmp   :Problems  weak continuations(Weak continuations in C-- [Ramsey&Peyton-Jones'00] Used to implement exceptions [Ramsey&Peyton-Jones'00] Stack unwinding Stack cutting5ZZZZ7ZZ33   Our ContributionsvA simple program logic (SCAP) for modular verification of (1) compiled C code & (2) manually-written assembly code2wZ[t<Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI\2 The Machine  Invariant-Based VerificationInitial condition: Inv(S0)lG3O3G3]3 The Machine The SCAP Program Logicthe form of specification  a the invariant (based on the spec. Y) the proof obligations Instruction rules for call, ret, tail call, & X[.%.x>Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BISpecificationsChallenges f uses the  right return addr.? Hoare triple {p} f {q}? In different basic blocks!\ P:PP !3%7|@g {p}_{q} !$ Composition rule &Program Spec. and Code Pointers ( SCAP : Stack Invariant SCAP : Stack InvariantbWFST(n, g0 S0, Y) "S1. g0 S0 S1 $ p1,g1. Y(S1.$ra)=(p1, g1) p1 S1 WFST(n-1, g1 S1, Y) WFST(0, g0 S0, Y) $S1. g0 S0 S1 Invariant: p S $n.WFST(n, g S, Y) $Z?ZOZ CKCKC           3  3     $$((,C,,G,3,C,,K,,C,,K,,C,004444443443443443443443443443443 4444 443 4G43883<<3<<l0;!SCAP : Invariant PreservationBInv(S): p S $n.WFST(n, g S, Y)t   3 E33 3&" SCAP: call# SCAP: ret$SCAP: tail call z?Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI%  SCAP: callg;'Generalization: Stack unwinding/cutting(($ ^4Example: setjmp/longjmp _5)$Further extensions ,'Implementation & ApplicationsCoq implementation Encoding of machine (370 lines) Syntax & Operational semantics Encoding of CAP0 framework/SCAP systems (1800L) Inference rules & Soundness proof Certified programs (10,000+ L) malloc/free & & garbage collectors [McCreight et al 06]  0" 7 ("        CG3F3,  +&SummarybSCAP-family logics as lemmas CAP0: the generic framework Inference rules are lemmas in CAP0nZZZ#ZF3#/H123479 : ; @BGHJKLMR"T$h*j,k-n0o1p2q3v6y8{9}:P* :ZK0   11(  x  c $ U   x  c $    dB  <D>   T ??`2G 9{p} 2  T؋ ??2  9{q} 2dB  <D>p    T ??P 7  9{q} 2   T4 ??   :{q'} 2^B   6D> @@ dB   <D> @@    TH ??  9{p} 2   T8 ??   :{q'} 2 z  Lp  L p,$D  0lB  <D>r s B B 3 rD??  lB  <D>K L B B 3 rD??` P   Z ??p Z  8&  2  Zp ??, @L  8&  2  0ģ p jjr $ra&0 2G3  0 p jjr $ra&0 2G3 B  ` ?? Lp  B  ` ?? V    ` ??|@     ` ??   T ?? i P  7g 2  T ??   8g' 2  TL ?? @  8g" 2  T ??   7g 2 B  ` ?? P    T ??   9g'' 2 ! Z?? P  " T8 ?? B Hoare-triple  2  z p,p # ,pp,$D 0` p,p  $ p,p ,$D 0lB % <D>PL P Z p,p  & p,p ,$D 0lB ' <D>`L` ( Tx ??p, <(p, g) 2lB ) <D>t t@ fB * 6D>PPL  + Td ??p >(p', g')  2  , T\ ??p  >(p', g')  2  - TT ??`   >(p", g")  2  . TL ??`p <(p, g) 2 / T ??   >(p", g")  2  0 Z??`  1 T ?? D(p, g) in SCAP 2H  0޽h ? 3333. & ___PPT10 +ѯD ' = @B D ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =%(DH' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*D#' =+4 8?nCB!#ppt_y-#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*D' =+4 8?\CB#ppt_wBCB#ppt_wB*Y3>B ppt_w<*D' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<*+- ZK0 ));;<)(  ~  s * U   dB  <D>0 XB @ 0D0 0 dB  <D3>0  XB @ 0Dw w   0  Rp040 2CKX  0 0   0|   Rg040 2CK  0( I0  lp1N0G3O3G3  0 M \4  lg1N0G3O3G3X  00 p   0h p\ D  fjr $ra"0 2CRB  s *D3>XB  0DdB  <D>0   08 P `p0B0CKCX  0@0   0 p `g0B0CKCr  <jJ"`@ 0   0$% pD  ~jr $ra00CC$  0H* `G Ap$0G3Xr  0{P{   0<. pW  Ag$0G3RB  s *D    02 ` ` p G  ^jal f "0 2C   06  *p S WFST(n, g S, Y)V0 2 CX  0p p   0? 0  6p0 S0 WFST(n+1, g0 S0, Y)0CKCKCCG3CKCKCCC   fL  ??  9S   fP  ??P JS0,   ThU  ??I `0  9n+1 2 ! T Y  ??   7n 2r " <jJ"`   dB # <D3>w 7 dB $@ <D7 07  % Zw\  ?? `  8&  2dB & <D3> @@  ' 0` P P@7 p S p0 S0t 0 23XB (@ 0D4 4 dB ) <D3>4  XB *@ 0D{ P{  + 0g M@4  lp1N0G3O3G3 , 0m Q l8  lg1N0G3O3G3X - 04 0  . Tr  ??   7n 2r / <jJ"`  dB 0 <D3>{ PP; dB 1@ <D; P;  2 Zww  ??    8&  2dB 3 <D3>   4 0 IP 0 P,p S g0      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} S0 S1 p1 S10 233333 5 0 9PP  Dp S g0 S0 S1 g1 S1 S2 g S S2R#0 2333333333 6 0  0  z4g0 S0 S1 S0.$ra = S1.$ra*0n7ZG3O3G3O3G3O3G33G3O3G3O3G32 7  f jJ?? p ,$D 0 8  f@  ??` PP  JS1,  9  f<  ??` PP  JS1,  :  f  ?? @  JS2,  ;  f  ?? @  JS2, H  0޽h ? 3333$ TIMING|7.7___PPT10n.Po&+ :qDB' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*7%(+@ 0  (  X  C 8     S 8 @   " H  0޽h ? ̙3380___PPT10.r%| +YԱ e} U=( / 0DTimes New Roman0B 0D[SOes New Roman0B 0 DArialNew Roman0B 00DTahomaew Roman0B 0"@DWingdingsRoman0--$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dk$k$dd----$$d$k,k,d$d----$,d,k3k3d,d----$3d3k;k;d3d----$;d;kBkBd;d----$BdBkJkJdBd----$JdJkQkQdJd----$QdQk\k\dQd----$\d\kdkdd\d----$dddkkkkddd----$kdkkvkvdkd----$vdvk~k~dvd----$~d~kkd~d----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dkkdd----$dk0k0dd----$0d0kFkFd0d----$FdFk`k`dFd----$`d`kkd`d----$dkkdd----$dkkdd---'@Arial-. 33@2 f&Modular Verification of Assembly Code %      &   ."System-@Arial-. 332 Gf with Stack!   .-@Arial-. 33 2 G/-.-@Arial-. 33.2 G?Based Control Abstractions     .-@Arial-. 2  Xinyu Feng .-@Arial-. 2 Yale University   .-@Arial-. 2 hJoint work with  .-@Arial-. 2 hZhonge.-@Arial-.  2 hShao.-@Arial-. 2 h , Alexander   .-@Arial-. 2 hVaynberg .-@Arial-.  2 h!, .-@Arial-.  2 >Sen.-@Arial-. 2 xXiange.-@Arial-.  2 and .-@Arial-. 2  Zhaozhonge.-@Arial-.  2 Ni.-Helvetica Wingdings 3BlendsLModular Verification of Assembly Code with Stack-Based Control Abstractions MotivationVerifying C & Assembly? Problems – call/returnProblems – setjmp/longjmp Problems – weak continuationsOur ContributionsOutline of This Talk The MachineInvariant-Based VerificationProgram SpecificationsThe SCAP Program LogicOutline of This TalkSpecificationsg  {p}_{q} ! Program Spec. and Code PointersSCAP : Stack InvariantSCAP : Stack InvariantSCAP : Invariant Preservation SCAP: call SCAP: retSCAP: tail callOutline of This Talk SCAP: call(Generalization: Stack unwinding/cuttingExample: setjmp/longjmp Slide 27Further extensionsImplementation & ApplicationsSummary  Fonts Used Design Template Slide Titles<4ddddLpC 0| <4ddddLhG 0$___PPT10D[SOes New 0B 0DCourier New0B 01 DTimes New Roman0B 0 ? %%KModular Verification of Assembly Code with Stack-Based Control AbstractionsLL hXinyu Feng Yale University Joint work with Zhong Shao, Alexander Vaynberg, Sen Xiang and Zhaozhong Ni4iKt-  6- Motivation  PHow to verify the safety & correctness properties of low-level system software? QO Q d8Verifying C & Assembly? bMany challenges & This talk: how to specify/verify low-level stack-based control flows? How to formulate the stack invariants? How to design a compositional program logic? PPHPPTPP ;    .   ,Problems  call/return Y.2Problems  setjmp/longjmp   :Problems  weak continuations(Weak continuations in C-- [Ramsey&Peyton-Jones'00] Used to implement exceptions [Ramsey&Peyton-Jones'00] Stack unwinding Stack cutting5ZZZZ7ZZ33   Our ContributionsvA simple program logic (SCAP) for modular verification of (1) compiled C code & (2) manually-written assembly code2wZ[t<Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI\2 The Machine  Invariant-Based VerificationInitial condition: Inv(S0)lG3O3G3]3The Program Specification  The SCAP Program Logicthe form of specification  a the invariant (based on the spec. Y) the proof obligations Instruction rules for call, ret, tail call, & X[.%.x>Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BISpecificationsChallenges f uses the  right return addr.? Hoare triple {p} f {q}? In different basic blocks!\ P:PP !3%7|@g {p}_{q} !$ Composition rule &Program Spec. and Code Pointers ( SCAP : Stack Invariant SCAP : Stack InvariantbWFST(n, g0 S0, Y) "S1. g0 S0 S1 $ p1,g1. Y(S1.$ra)=(p1, g1) p1 S1 WFST(n-1, g1 S1, Y) WFST(0, g0 S0, Y) $S1. g0 S0 S1 Invariant: p S $n.WFST(n, g S, Y) $Z?ZOZ CKCKC           3  3     $$((,C,,G,3,C,,K,,C,,K,,C,004444443443443443443443443443443 4444 443 4G43883<<3<<l0;!SCAP : Invariant PreservationBInv(S): p S $n.WFST(n, g S, Y)t   3 E33 3&" SCAP: call# SCAP: ret$SCAP: tail call z?Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI%  SCAP: callg;'Generalization: Stack unwinding/cutting(($ ^4Example: setjmp/longjmp _5)$Further extensions ,'Implementation & ApplicationsCoq implementation Encoding of machine (370 lines) Syntax & Operational semantics Encoding of CAP0 framework/SCAP systems (1800L) Inference rules & Soundness proof Certified programs (10,000+ L) malloc/free & & garbage collectors [McCreight et al 06]  0" 7 ("        CG3F3,  +&SummarybSCAP-family logics as lemmas CAP0: the generic framework Inference rules are lemmas in CAP0nZZZ#ZF3#/H123479 : ; @BGHJKLMR"T$h*j,k-n0o1p2q3v6y8{9}:P/ 1mZK0 ''**S'(  ~  s *k U     <m?"6@`NNN?NP  DC     Bp?"0@NNN?NF@  PI12ck  0v?"0@NNN?NF@@ ef1:F(2ckc  Bz?"0@NNN?N& @ v  PI22ck  0|?"0@NNN?N& @  ef2:F(2ckc  BH?"0@NNN?N @ V  PI32ck   0?"0@NNN?N `@  ef3:F(2ckc   0?"0@NNN?N @  >&  (2c   0?"0@NNN?N pz _ (code heap) C6(2 cg   6X?"6@`NNN?N  =0 (2c   6Ў?"6@`NNN?N  Rr14(2ck  0?"6@`NNN?N   6؜?"6@`NNN?N  =1 (2c  0?"6@`NNN?N   6|?"6@`NNN?N  =2 (2c  0?"6@`NNN?N   6 ?"6@`NNN?N   >&  (2c  6?"6@`NNN?N 0   6ħ?"6@`NNN?N  Rr24(2ck  6?"6@`NNN?N  Rr34(2ck  64?"6@`NNN?N   R& 4(2ck  6l?"6@`NNN?N 0  Rrn4(2ck  0?"0@NNN?N`  _ (data heap) H6(2 cg  00?"0@NNN?N `  c(register file) R6(2cg  0?"6@`NNN?N P   0?"0@NNN?N 0 z [ (state) S6 (2cg  B?"0@NNN?N6  8 addu & lw & sw & & j f| ckckck>   0?"0@NNN?N z a(instr. seq.) I6(2cg  0?"6@`NNN?N`0   00?"0@NNN?N`P  Y (program) P2 (2 ae ! 0?"0@NNN?N` p e ::=(C,S,pc) (2 A " 0<?"0@NNN?N z B::=(H,R) (2 C> # 04?"0@NNN?N@`0 : ::={f I}*t (2CC   CK $ 6?"6@`NNN?Np pp  Rpc4(2ckB %  `D?"0@NNN?Np`l p  *p ,$D 0 & 0?"0@NNN?N fa1H(2GOC ' 0@?"0@NNN?N  fa2H(2GOC ( 0x?"0@NNN?Nv p  fa3H(2GOC ) 0?"6@`NNN?N ,$D 0 .*(spec) Y ::= {f a}*(2e EG EG   EMH  0޽h ? 3333. TIMING|4.3|11.2m___PPT10M.OP(+8D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =-o6Bdissolve*<3<**D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =-o6Bdissolve*<3<*)+8+0+) +r4]3ew!} 0=( / 0DTimes New Roman0B 0D[SOes New Roman0B 0 DArialNew Roman0B 00DTahomaew Roman0B 0"@DWingdingsRoman0B 0PDCourier Newman0B 01`DComic Sans MSn0B 0BpDSymbolans MSn0B 0DHelvetica MSn0B 0 "DWingdings 3Sn0B 0 C(.2  @n?" dd@  @@``   d?A    3 '!#!$&';()+*-+<"?/)123 9:<=>CEJKMNOPUW\\3 `*a+bcgjBkmnqrstwx{|}~2o$$R$n6C0nn13ͯ$R$ WQ~Vƈ>YFR$Y,A>wl7wFJ(23 R0e0e    A A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 33f@8dʚ;)j8ʚ;g4FdFd B 0pppp@ <4!d!dLpC 0|<4ddddLpC 0| <4ddddLhG 0$___PPT10D[SOes New 0B 0DCourier New0B 01 DTimes New Roman0B 0 ? %%KModular Verification of Assembly Code with Stack-Based Control AbstractionsLL hXinyu Feng Yale University Joint work with Zhong Shao, Alexander Vaynberg, Sen Xiang and Zhaozhong Ni4iKt-  6- Motivation  PHow to verify the safety & correctness properties of low-level system software? QO Q d8Verifying C & Assembly? bMany challenges & This talk: how to specify/verify low-level stack-based control flows? How to formulate the stack invariants? How to design a compositional program logic? PPHPPTPP ;    .   ,Problems  call/return Y.2Problems  setjmp/longjmp   :Problems  weak continuations(Weak continuations in C-- [Ramsey&Peyton-Jones'00] Used to implement exceptions [Ramsey&Peyton-Jones'00] Stack unwinding Stack cutting5ZZZZ7ZZ33   Our ContributionsvA simple program logic (SCAP) for modular verification of (1) compiled C code & (2) manually-written assembly code2wZ[t<Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI\2 The Machine  Invariant-Based VerificationInitial condition: Inv(S0)lG3O3G3]3Program Specifications The SCAP Program Logicthe form of specification  a the invariant (based on the spec. Y) the proof obligations Instruction rules for call, ret, tail call, & X[.%.x>Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BISpecificationsChallenges f uses the  right return addr.? Hoare triple {p} f {q}? In different basic blocks!\ P:PP !3%7|@g {p}_{q} !$ Composition rule &Program Spec. and Code Pointers ( SCAP : Stack Invariant SCAP : Stack InvariantbWFST(n, g0 S0, Y) "S1. g0 S0 S1 $ p1,g1. Y(S1.$ra)=(p1, g1) p1 S1 WFST(n-1, g1 S1, Y) WFST(0, g0 S0, Y) $S1. g0 S0 S1 Invariant: p S $n.WFST(n, g S, Y) $Z?ZOZ CKCKC           3  3     $$((,C,,G,3,C,,K,,C,,K,,C,004444443443443443443443443443443 4444 443 4G43883<<3<<l0;!SCAP : Invariant PreservationBInv(S): p S $n.WFST(n, g S, Y)t   3 E33 3&" SCAP: call# SCAP: ret$SCAP: tail call z?Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI%  SCAP: callg;'Generalization: Stack unwinding/cutting(($ ^4Example: setjmp/longjmp _5)$Further extensions ,'Implementation & ApplicationsCoq implementation Encoding of machine (370 lines) Syntax & Operational semantics Encoding of CAP0 framework/SCAP systems (1800L) Inference rules & Soundness proof Certified programs (10,000+ L) malloc/free & & garbage collectors [McCreight et al 06]  0" 7 ("        CG3F3,  +&SummarybSCAP-family logics as lemmas CAP0: the generic framework Inference rules are lemmas in CAP0nZZZ#ZF3#/H123479 : ; @BGHJKLMR"T$h*j,k-n0o1p2q3v6y8{9}:P(  ZK0 . & $ (  $r $ S  U    $ 0@ Uvoid f(){ void h(){ h(); return; return; } }"V0 2VCal @` ` $` @`,$D 0 $ 0` [ f: ... sw $ra, -4($fp) h: jal h ;; $ra contains ct ct: lw $ra, -4($fp) jr $ra ... jr $ra"0 2C:N @` ` $ @` `t $ 61"`` 0 t $ 61"` `t  $ 61"` P  ZB  $ s *D ZB  $ s *D ZB  $ s *D@   $ T  ??,$ 0 NStacks are hidden!  2G3: $ Tt ?? ,$  0 "Does f use the right return addr.?"# 2#G3 $  fP?? ` ,$D 0 Npc0CK $  fL?? p ,$D 0 Npc0CK $  f?? P ,$D  0 Npc0CKH $ 0޽h ? 3333eZ TIMING>|18.1|8|24.2|3.6|11|5.4|3.9|8.9___PPT10+D' = @B D' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* $%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D<' =A@BB*BB0B%()?)?D' =.K7 BBBBB]M 3.33333E-6 4.47606E-6 L 3.33333E-6 0.06106 *3>*B ppt_xB ppt_y=@0BBAApBBB-#<<*$D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =%(D' =%(D>' =A@BB*BB0B%()?)?D' =.M7 BBBBB_M 3.33333E-6 -2.92852E-6 L 3.33333E-6 0.12769 *3>*B ppt_xB ppt_y=@0BBAApBBB=<*$DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(++0+ $ ++0+$ ++0+$ ++0+$ ++0+$ ++0+$ ++0+$ ++0+$ ++0+$ +/ 1mZK0 ''**S'(  ~  s *k U     <m?"6@`NNN?NP  DC     Bp?"0@NNN?NF@  PI12ck  0v?"0@NNN?NF@@ ef1:F(2ckc  Bz?"0@NNN?N& @ v  PI22ck  0|?"0@NNN?N& @  ef2:F(2ckc  BH?"0@NNN?N @ V  PI32ck   0?"0@NNN?N `@  ef3:F(2ckc   0?"0@NNN?N @  >&  (2c   0?"0@NNN?N pz _ (code heap) C6(2 cg   6X?"6@`NNN?N  =0 (2c   6Ў?"6@`NNN?N  Rr14(2ck  0?"6@`NNN?N   6؜?"6@`NNN?N  =1 (2c  0?"6@`NNN?N   6|?"6@`NNN?N  =2 (2c  0?"6@`NNN?N   6 ?"6@`NNN?N   >&  (2c  6?"6@`NNN?N 0   6ħ?"6@`NNN?N  Rr24(2ck  6?"6@`NNN?N  Rr34(2ck  64?"6@`NNN?N   R& 4(2ck  6l?"6@`NNN?N 0  Rrn4(2ck  0?"0@NNN?N`  _ (data heap) H6(2 cg  00?"0@NNN?N `  c(register file) R6(2cg  0?"6@`NNN?N P   0?"0@NNN?N 0 z [ (state) S6 (2cg  B?"0@NNN?N6  8 addu & lw & sw & & j f| ckckck>   0?"0@NNN?N z a(instr. seq.) I6(2cg  0?"6@`NNN?N`0   00?"0@NNN?N`P  Y (program) P2 (2 ae ! 0?"0@NNN?N` p e ::=(C,S,pc) (2 A " 0<?"0@NNN?N z B::=(H,R) (2 C> # 04?"0@NNN?N@`0 : ::={f I}*t (2CC   CK $ 6?"6@`NNN?Np pp  Rpc4(2ckB %  `D?"0@NNN?Np`l p  *p ,$D 0 & 0?"0@NNN?N fa1H(2GOC ' 0@?"0@NNN?N  fa2H(2GOC ( 0x?"0@NNN?Nv p  fa3H(2GOC ) 0?"6@`NNN?N ,$D 0 .*(spec) Y ::= {f a}*(2e EG EG   EMH  0޽h ? 3333. TIMING|4.3|11.2m___PPT10M.OP(+8D' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =-o6Bdissolve*<3<**D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =-o6Bdissolve*<3<*)+8+0+) +r! ^]e!ܶ} V=( / 0DTimes New Roman8 08B 00D[SOes New Roman8 08B 00 DArialNew Roman8 08B 000DTahomaew Roman8 08B 00"@DWingdingsRoman8 08B 00PDCourier Newman8 08B 001`DComic Sans MSn8 08B 00BpDSymbolans MSn8 08B 00DHelvetica MSn8 08B 00 "DWingdings 3Sn8 08B 00 C(.2  @n?" dd@  @@``   d?A    3 '!#!$&';()+*-+<"?/)123 9:<=>CEJKMNOPUW\\3 `*a+bcgjBkmnqrstwx{|}~2o$$R$n6C0nn13ͯ$R$ WQ~Vƈ>YFR$Y,A>wl7wFJ(23 R0e0e    A A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E "0e@     @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 33f@8dʚ;)j8ʚ;g4FdFdPB 0pppp@ <4!d!d|pC 0|<4dddd|pC 0| <4dddd|hG 0$___PPT10D[SOes New Ԥ0ԤB 0̤DCourier NewԤ0ԤB 0̤1 DTimes New RomanԤ0ԤB 0̤ ? %%KModular Verification of Assembly Code with Stack-Based Control AbstractionsLL hXinyu Feng Yale University Joint work with Zhong Shao, Alexander Vaynberg, Sen Xiang and Zhaozhong Ni4iKt-  6- Motivation  PHow to verify the safety & correctness properties of low-level system software? QO Q d8Verifying C & Assembly? bMany challenges & This talk: how to specify/verify low-level stack-based control flows? How to formulate the stack invariants? How to design a compositional program logic? PPHPPTPP ;    .   ,Problems  call/return Y.2Problems  setjmp/longjmp   :Problems  weak continuations(Weak continuations in C-- [Ramsey&Peyton-Jones'00] Used to implement exceptions [Ramsey&Peyton-Jones'00] Stack unwinding Stack cutting5ZZZZ7ZZ33   Our ContributionsvA simple program logic (SCAP) for modular verification of (1) compiled C code & (2) manually-written assembly code2wZ[t<Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI\2 The Machine  Invariant-Based VerificationInitial condition: Inv(S0)lG3O3G3]3Program Specifications The SCAP Program Logicthe form of specification  a the invariant (based on the spec. Y) the proof obligations Instruction rules for call, ret, tail call, & X[.%.x>Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BISpecificationsChallenges f uses the  right return addr.? Hoare triple {p} f {q}? In different basic blocks!\ P:PP !3%7|@g {p}_{q} !$ Composition rule &Program Spec. and Code Pointers ( SCAP : Stack Invariant SCAP : Stack InvariantbWFST(n, g0 S0, Y) "S1. g0 S0 S1 $ p1,g1. Y(S1.$ra)=(p1, g1) p1 S1 WFST(n-1, g1 S1, Y) WFST(0, g0 S0, Y) $S1. g0 S0 S1 Invariant: p S $n.WFST(n, g S, Y) $Z?ZOZ CKCKC           3  3     $$((,C,,G,3,C,,K,,C,,K,,C,004444443443443443443443443443443 4444 443 4G43883<<3<<l0;!SCAP : Invariant PreservationBInv(S): p S $n.WFST(n, g S, Y)t   3 E33 3&" SCAP: call# SCAP: ret$SCAP: tail call z?Outline of This TalkMotivations and contributions SCAP logic for verifying function call/return Basic framework Specifications Stack-invariant Instruction rules (to enforce the invariant) Generalizations for complicated controls Implementation & applicationsjMP\PIPF3.B[BI%  SCAP: callg;'Generalization: Stack unwinding/cutting(($ ^4Example: setjmp/longjmp _5)$Further extensions ,'Implementation & ApplicationsCoq implementation Encoding of machine (370 lines) Syntax & Operational semantics Encoding of CAP0 framework/SCAP systems (1800L) Inference rules & Soundness proof Certified programs w. proofs (10,000+ L) malloc/free & & garbage collectors [McCreight et al 06]  0"*7 ("        CG3F3>  +&SummarybSCAP-family logics as lemmas CAP0: the generic framework Inference rules are lemmas in CAP0nZZZ#ZF3#/H123479 : ; @BGHJKLMR"T$h*j,k-n0o1p2q3v6y8{9}:P $ZK0 00(  x  c $u  U   x  c $v      H  0޽h ? 3333y___PPT10Y+D=' = @B +r ,~'e} Root EntrydO)PSummaryInformation(Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} "_/ Xinyu FengXinyu Feng՜.+,0<    On-screen ShowYale UniversityS1O )Times New Roman宋体ArialTahoma Wingdings Courier NewComic Sans MSSymbol