ࡱ>  YPQRSTUVWXz(@ |\/ 0DTimes New RomanLL|~Ԗ0ԖDComic Sans MSnLL|~Ԗ0ԖBXX LP Q]Comic Sans MSRegularVersion 2.20Comic Sans MSBSGPncg i9>=a)@wZPQ(hX_ w6ulz6VxR%P%3>b@[$rM:x *@ѵ2u3ݛrYU@RK}X5l&@4I1b?ćjt3{!taTh$_+䗷>7곘GD480'(GQG>* ps 5p:n`.}=Mqr2l·,[ՖٻPRҀQV6"0RKDGR(Cx"y;0S hӶKݗDp !VjkwL'"M8eE[(x K_=ctN = 1xʊPssce"8ÆG!=kJ*kA%9f䁩p Ci'48QNyGS`F*sEl&ؕRZvSuO }˱8w`SVu~uu5~#Tk VwUbJ/"mh6YhjǺFl~d!4`ecF'*0(  4?#ڡ͹Mv;GX{?9jDhzƢ/F5٩eOГViҢ|4@DpMI@"ԒCVTAst gY$dS,cy'tظ:u~ZjW -L1H^>nE!q9GmH ڀ~ ${Yhv2dɥ4~a~v6߄&Q|3 I*X9LHYEW0Agg! x OpW.9˓P+w,9SO 1K{" x.UW3%gVT$.ȦMұؠ&rB>\UVZqm\5JÄ>5Z \cn|\`Ij\kl84_2^+rX%hoo]+-ˤ}͑}ZMni -BB]AJ:>IV#:Xy/ )+'#2W07T rI67rP*[ f? <,.c 3AP4[+hV3V͹_aE#}I6<3TAh._LO(g܎l|d(rssuB~-C' r:ő!L""1!`֠':5F! w=0 N?bT(סad,M\y؜%A{%f, #! "`#/&! zmPY^h\.+pYj\6@ߤPvj0[Ɔ!*?2FT%+n;GW 1!NfPiu_n$ * 6*} - CHIcE DwCdc=q~~SJ $ Cdt*æA"[edV+!/Vmj ϧo:+*"NO]66RF \B >Cf{GJ8`'! z40z`.m{$:o z@\a'4W )pJv#5Z/vh\\u :㈐2ѳbbŻ']@.8mw|Z%d”fxvc  PCaSh FͅlB`G @NpaߌxBDyJ$i"Y]Qr.XYb8rF,zdHw UUHۈ!{ƞ81)TnrfĠ6#Q-Iр~wGuDi[HI܁b>,/KٖL_~ y2 . B eJ"T>fM)B Ar`^5"g|4mgD_-56|A".܊G'oew]m ]5m5v[UwLz``y"6 nEZ-5?85ޙLĖtzފb1r&cT:UiZ-&zѪKBɲϫ"KF92COc>KL<'SmlX]Eo5*TX>Z3ZA=7JpF!u k\;HW_Xw+-\18?HsmA2eBÛ<_ ^ l(p58F!ٿ~+uwx}pLn"1r3>6HRB ,T4g@}^޽.C(s`gJN8U. E[@`Տ*%xCw;Z. KWVK !Qe,omÓ2DY3⵱ $ó?7'u aH, gE{Snz$qPkXeJېe%4h?{hQ]}VY.Q>I:KmN]ƋN<ɑI 6|FP9LUo1ӵښ)lwa'9"(ڠϤ5kœΦ!K_QQt%fdcxpM9tO]65[6h Ths453 )#cuAwSC?Q 9A3 Pvxǒ桇[]hGS%PhA8Ӫy`a&NmZ8LN[luz.6 4FYZbgHe-@<#tB+)DC1L눝/LIDs{ߦe\ۻJHEg0 (4I2*A3ZS mD@]Mp-AgHQH)a_HV")jF}O,t#wV8Y&a3Q '! "7ݰtZdQћ.ƻ?-\|^g j}P T<j3/50ba:#|Su@U'_@1/YD)U#\] a&hX4J=۞2V]݉ƺ.Xͼ<72^Eu, ĦMq lA>L: L(P@Z jd@W=b菤~DykKn_>-n;K7EzJN:nfrkSx\#Ʈ&G*BŨ_bQndi=8b4jƊqѢ[?秼p4a90^Q!(T1saߌ#JR 8*r+Eb\QXe9 S 8`$zsA67`|Pah"(bV 8Iv$І|h`]/3Ly)?@0tYK,5; w|ʼE]kna|V Cp8H0t<%Oa'c7[39 )O&aÜ3a=itEBT0a#&0sv mF0m_c0@r^(NT>s 1'E-KV da5–vxo!YؑJO̡Pa+AxلƴK]ҏy_][%î+P/n|s)ϖC,aʬ[`Ű3m$Y fa*zf*-hVc{,-|sJ2Vf5,ySF 21l KhD$(#$/2;Mޗ)G7Wt$^ZU*c yyV2PDą=0+( 7|cK r`!+@HN aƀ1H +jaº/yOqxE-)n揺:bc!0?QX5JSnPJJc$qtln4P y U.>sUS9G'^1c>f&:ɷJ~(:qs4XF,<ܹm01{*zb*. ]@ -kP70&,@Y$yT6or5MN<#x6Q3ȖT(A0HmpxF5bfVd B]gG~ JBP\IР6R}^ ݄#6Pe_:/c vhG ޥnd['ek2,Iԕa QCWKoB2HYBP-=.i"yOFz=ۑ9V\ &ە00C/U,"cmtx``';r ^@P\Wp4*풦QP-7L +Ne/Z hj+LOԅu;)P " zbC =b@3ͳlyf6}:# 4Sp(q'(HAJhHuBdQ$=BSEYC F_QfWE*Un&%!vsYoW 7Ta ?Bݺ zZD!РOQzo,r2.}@P8M%GbF. ʭ$cs(hQqD>^D`Dy(ӓ-Z;ԩ[P;1E~WuW/:{>98bH|VU!II -ԍ1 <4!+3.<DTE!IP*CBjͪRPy  %ȷ\ɰ5n[uOk W7ŦL>|63JFac<"+o;`>?ik )G c搆'UCN_R0'(a$ 9ԝMI'ߘ3:n@sMMT,HC{k2\ro,IxvY1;<3_Wd-Z&zK=r")"@%r2RB4.+`p;!=( T(S9iBG-@)satY,pv+GN-6 Kw@W0}6pVKXU`,&[˟t9@gRAWCQ W<ǙujhP@~!tL%AfDbB3L4%کEuWi@+EM%FTӔEO)Dp[<cg@2w(CM@erE 2D_* UU m(pK \-/ |yLƫ*| WX˕ʼnXkv?cq~قҍ]- +CG4 hD|ͫ>paFn7C" 9b+q04IhuW8Ki{$$` q8"g O<:gł4D|샩 o  PNN\ N!E#/&ZsrCј8 #oLDdҜ W 'E菃@Ёpiz7& %z8|şkNa$9ٟ Ɔ1AbALQC \:h c'$#$ۤ&{R"U,דCkLx9NfF,#[tG^ՆX$P9 (}\pl'"ס=YN~*pc1SbXN ZfrJYC'? I֗iB ;xOtf\Ҽ+[9&*JQ`^vzנFevTQ0[b ,Qrodl 5NeY/1%&&R ;W%$G5FdpݢLv sP?,+ ݤÄ1 b5:$4N-& &%w7'}\.WC~qT!6fwB% -S ='\c.~|/o !@X^kPImfs'g$|RhkyvJ2I":; ̱:ahK_N8#(?;&`04ºd\4*(!,]>tܺᖂ!PDd] f,B\DNQ98jx49 ndvwjrbu_6 UE)ÑV࿛EwJK$vW|dh0jN{CDv "^2jn7u; 16 \H,i|Hj%lt[3PSVA7<`?C tp ?hLO?tz0ʞN DAF'pFا'W=y3PIV 6]U:C; _ ֱ$F%$xiGzqCXpĞp~ Ch?y> |8B@oEQt |SO9DȆ*|KFE+ud8h*iY \ mCt Lp;ehzYnUP0EH:Ƴ(C@0w&E3vhRqLeBz Ĕ< *¾QRbTnbɡ,2śFy\IL0NrUd#rAWd =.x#J!#iK(`D(d{̫+|5,CEh:yEH/wFg8mzV6PtKn2 [_o" K8tz}ܤ$tNJj{ R"=Kv:h/]<Oz1ԵpSTBіHHln\֊ r VQgjU,d\p"llD+X04U(kQ_S.B"}U`l'L#$4˃8p-)݅HiȋD EAnI]J3)G.7E8m@KES$J-]P,a0@bSnb~9r@#?g_ۋJZɗp%*K:T'Hͭ08 8 2_YgNI3UV (?7c9BlU;\]Gy \,`yA!Jb^RC8i/|piSHMa\_q!@".H%gxM Al?EiObĶhIK0~EA!un*0%AODO>"yod,;v&M!јhHac嬛:~!o/U; 2@.! s)>ԫ 2&l;&!E[ WJR4~7u #&-4%fp!хts(ч칢0F'IWɆrKOR%|qp t*$ҏe`v̜>⮃܏!0h ՘SƉD%cjPY$)jxGA_G"h)e֊nh󊅤` b[>Ѯ\uxO\ ;zlS`5a;zpu:L4plߞh$@򶞑BɊw۹ R\IJM8GxV>7h|2#M/zv*jN(,#xUek x6][.4y8 \V0c /ȥ6sQXy?lUoȀnq;UԜvF#ӇcSLxiڕg΀TIߔ2f@cE.x,b *5^b4 /MS@ӌ+Upc9Myҵ'FLBTUBiReCbVñ_sNXت`JѢE‚R7Q-D8$"l`_;I>b =6QEVn|8 c96(LZ>c8161@vL4*n&T=yKE?Jhgd2g 2ʬ$<+t M/ynÅa aLՙ- N' 5!:%8mZf"⊱5F(*E&v1IU,(-N+#dwMD:iPO ժ(W؂l^P[I|2|B-S O, wƽL#x'%媐\k\%ga5l= 2:z8!$L y㖼+mf}"˕_&"| f,ņ6ȐE߶])փˎPz9.FHF&ss](v~ ,1@PDyJ/b%] )0sltw**m$}tD&9ϨB")Bv[qǛ35Dk.qJ9U6r- e97Nu l(Q$e' Ph2b0PS瑜+8 C0阀F wwՎ"8)t۶~ 1ׂL3*qRIVoT}$[ئt(GCA*|Hذ5QhD:i]ٱ jݏB؄ ] tMa4ʤmrzϜ8Qi~RiLl;ѿLʵVáa6v)PMvF gB:?$Y2%)M;@@U ezF pF)E[dP/8J sCġK&e'dqk.dY _QKFQ F:+!êk[$ &”<%cc"&4tL,wg427Y+)#nGb@[6tFvXXDXe(uK<#[X@%Qc(e$.Ai^rCܮ}a ވ*9i=6bHo+ OXRg*+\s]!<ґ.q=kz}#BFV 29c{0Z+ Qe}vb4 (Q=9=BXRqAfzlH^,Uyp\õK:o}b'l*DhbG"kõ\` o)]D!͟﹔٩WgO$q:T~SYy>zjROIL?@8}<_av(Ο c F0nS] tu$\5S;~"pO3J|9R7}1NM:ଈ45\hrNe}Zu&Dԙlk`,e7"q{PNP.? | ftۡ&)QG 'z/ "U ʩ'p/tP.FONz%-@=^T .iS–v*{ϕOd_(3nH&T¹:Ap[*H3vwc֑_tDk9q=v ORc3#b&u p_k+M~xq"9OY\x_6$:Oahs>o v qةmY ;BqIh'}/pJAAh)̷xoXX*nc_.{HY ^V1G © 7g3vI| TgT^"| ec H|Lcp0yuD?#Uf%A ʀ"kcvItM*y߱hxX|G0d?R4*f|*'hތ6j`+r k19*~89RZ\$g~_w\úmY-ǽ~rZe8bVq+[ǠAfԤF7H,d8VB0MkZUz*OIfJq$ V[J!g!z)=RU(7),v}Kf bT0 p @%tp] +7t˶L ˧ B54@G"fN 5"IH:) 4h5uWAǓ,a`pQF}.be&n爙6g@:C  <|kn.}wdoswl0m M0ڊڒ5/΢0&a'+CzDM*77t~ҌNR(ke\+"bIqZ>™e5&r''g<1ƉHH}'91Ξl=BjrAΚG|l \cޖI a[aFcT;LlGgL 풸n(МOj D{yJh2lް -B<{8=x`yTGx&]Nd1^DTh?S8D ̳* >%0>Kȶ䉍z5g _  /A.:]2t7O{`S {8 jzHlh,4]P>牘A24Y#KB %05[dgbGכA<gi9~^ģ|j%#sSppcĔQ! QS xѲs. ENF4Z0;p :w ն-K-\)z}\ke 1M&Ĺ+I!5R>Ma z8ӻ4UN[WXUiKKCi\D(FE\2iE([~(ti__ WrV?Y^O-tү:Ddy8$%Le܄u|(ӝ_=)JJmb?1%'sr@^Re"o.,; #VN<_XTVITLTg❄ "tl?5)_ĺpR$De#bzD`CU3C"{߬hccO}hcREqeլkѲq;!c9 FļF3s+1E٘*NuϤ!q!s9eW< ʇ]7ﲫJ QoA/*wV::zRa3.ì3 !M*TvJJ9+ ړPDb3Rik?h88+-y}`yl\ނLрGRCee1\:PׄY.gT Dkv"ȖakKK]{.S|h- ?h3VD CcP< R?0#[1捾̭.*U5p6Wl[x&RͰ"tvSl: S@0H&MvAzzuRtj(?bs<:Uv-1僷 d5 2eƸ ܋ KZׅbGIxq d 3gsqᦥq|$Z EZ")6В跅TedƕC#=4 #ͪOљrQw0[䘟@bPt.sí[uKp)2^y_<)WD9܌{OK٨&1'pv}Gy*nɆb<%欟?Nil5M(gx!bׯnI1& \Qybg6N}aksPݽ6܅u3S=?0Tm23wlV9}(]j,rkGo|Y `etϳ2].w!ϗ`V<6{p4) %7u܊|=' WbUÜxeLfTД[YyB&ȧ3!D|`V8'dzwHlUF$jq?Mৃ&#S囬PLV"E5P';H$d?GE!Ŏ-l7n`0X ^O}`8 H Fa/̹xԭ!xxpџ%d[.(/½("ǗgW}̈NbgWOI`?nh®T ĉ#qSk/tu/ʶ &~= zr."Ӑ3&܋soHݛ!+ߊsHC"k_l;@]fƊQgn .l`S肣IV0RaVIXW}@[s冻ўb.sqjOɓW\f`@py# mIPnNTg]=CUR8PHEvV H |쁏6_#W'Q687x)12Fō2Ə8@ݝfBO'UjvTJ3U32}|=ńʮ匬\ Sd@oPbEÝ[gºpU\v=6I9~7!4lt?JL$TUTAgJ):cfHG 䖷\NF%iCGOBކE[ C:$>eA#zJ0!WC*E\dۉ2F5X(:nreFxsiv+-Q;m3># !h=;Cutk给wz 蝳5bI;,1ZNZ9VI k3)#m]2,Y `)8T-VzG4J֋,KD7LyJ(?ݼ bsՅZxfHzjd/(v S ay[va{Qx8{*͔Ɠ qB|o ar`)#GIșׂ !oax~ fȷg]M&߈]bR ZH@jwF60g4y9 %HG_ I1Y!T /0]A0c5MIaEhSN'b@4oGB2D#M"Ǚ rtɱE׆*=B>e;e[>(噤ע8@%YG$_~$.-x~R~an3TquUњcDǷda. ]?GEfXb/;'C!;!˹noa`ٟ:3^Zso!P!P0icPp.XKh ,m>܁YὛ7c/XrPIB{Q(]1~%8DJ"7ӛ3.۷Tw|XvkғIFWma 1`H, fFeY\Z.S4`="yRǸYFO ͫ~i'uRt5L+NDC˹5[ސy@V$Km$Eb{g`qK"XR| ڸOUfp$8 %A#H6қg@ƟGb- v,u 1/:;^WgvfJ]MX EO\`P7O<8a7:3Skaͩd~QT+VСCS.F)hB84,?S dj@jby D GY|Dw*GQ%JfZmEu[DBRzG8%Q#HE)O1e S~YmGb5wKXji8Pb?J|KKZ^aۏ|B1S8\&fj5Gb Vk(ZύDH*c`{1MLO ""_,\?˱0 kC(ܘ}`%iޜ{B;7HD>$o)JhK#>-~ m 6D\NGH`C9$ LHOzStw G~:kRC@ T} ZTܜ};mnC,Bpudş eW 4́L(Onh$K}"6K:;C)b1=P#[<丄` 8۹A>:f&u YT\ArXoBVl l HI@U̟j0##uCGLcB9J4xj}X‚IKg :A GH'݅ov9/JBOm(+ѐGawsY 4_ ۘ [ bs_fq48G͔ V30G@4GE_ ܵKpt~騵'S[ O*#A8BF?5TYj;sфJ d8ztI>8ꆣC1ּ#S-Z?݆twT[W˃.ӊs&ۡ'?p=ĪƑ^3?>k-7 _ǜSdi+ Ne;[ʞDls.NF).CT?&viIEs"a+4U`A"5܉vL.DB\n"TlīWQ/GuV!K(%yhjO.RkV&̇ՋCDEzhC(ԩú@-4[ȓ2}mFdrI]bG2;&+4`T!2kT5?0PbABlZ_]24 sց?p${8R=)6gCRbX(pG_졠Z| | xcE\ [9AmZ i]"雤!`bu7/&[繌,̨!>U|*#RL{bR| B0ek3-vN("CPe˥Г ZQi+ ,Es#ʚ sy FWxz7ʣΉ*׏32F`QF;w^!dF&ƣ݂Lɨi:]\B̻R#/̰&0"dq"%.n:t%*U-%EPrs7|\~~԰TU6{*YY\q̵ Z-p"u:$Cx(; !LaDwx O#EzwHקB6AWTEV>ER/8^ Dɚsz#S$UX{/j(n }6Mu<=tmP} 1Y=L3#tW3#7 3xsQ-âbn,3F. D9FX BX/ <ågQ'O按Nh%5悘]["YzZGU֫Oۖ2x&'Ocr|55\Ġ| YM>%&Grx"D(wͭgiwts;çf8r؃Uc/+ .g&E`Ǜ_ !{ްLD;`#\rr%#ђ!Pl8NY02Z*΀Dgug=g[ }PbΣFrb0_~#ZCJHA+c(:/;IBk١d=E9FE~Cx{|Dw$(ixo-@V3c*CGX=91/VL* 0rX rak>ϟnsǑ\AF;'TxZGܜ #q+8⬴"&35ݢMKP&FP+!?Gm|4_LT*\ x?Qwυ4yd#4NGbJJ>x Ȋgxg/[DTpݮd0"˜UU(I=1cZ{JPK ^h {vS܅MM Ѩvmzd@r2*b+bJ¶a/`Çb1HTfpS_5 S!Rs9B} Î+D#*rUg ^L,e3.;e 6z. ~R |jƁZF@("鐕ۨ*DVHҨI{=<T ;I^:&*$/Tu}dSIc:xȰ?Kw˳v!)4Z#\["Īpip|t'1a{@cAI1.)CR86趕H k i4I\Ugul@w)Y(l H[^^Owp#ݵKrL8kY>!P<%P zm5ـծT(Bz_@[뜛&[kP9qHg{YV`7tq}=]H&A_ /z.W>Uj&A \t,/cpH0͛XV r4qjTu%GZh^d%qb-/MR˓ l,Kۆ1FIF,ucf.hV"fq9t o_#DL`?d:FЯ}"37ܐKwݦȎowܔ+]@\@(bi|LZuNb4H# m_ pLn ˬ|[ſ8bHF"k6j8fj̦ r  T'MH./4^,d\9PSbH@ctA{: T$rw#жEKpPA``+D {AOíH6ER9LI, K蜮}2Ł7P(@r>AozE0!6;e9 ;/%!~9v- [sx+vnF K,;3!KX YYc8mjO p~OAᴅ*zxy*2{K˶^b%8upUëKao80 ΩPE3sƈ]"C03SfH!lLCއ +n +n!p4eJFJ!MRFgmڗ+͡SVO5\Ք.07sT.rte5/=a@?wL}mrHV`p|;\>$ -d%f?S>&nZ[L`M[6$aV?(y׉ab.E68Wb~P+Nbwa9}_N6Xa鉓\5Dם=iKLc@Ԣ|4R;BHX 4@_6RTٳU'ٍ&AAڬF\1Ę hHVKK˳clZ2+ktN%@\YƯw~#X 7nBWmP&W'x#hfa ?_>|r*޽V0ȣݮBYWzԟT HIf=8>p =10 jЂ#-Dp`E=-k,8FqKWE)[ygEXBlC2D+-cob |{;F9=0ƊsبwVY}BSSGr#4lb0>4%谚S,8Zw@9$@}ஏd1ݬD3{BQ6m;2UYA\ VMD<[ͨ*n2)2 DWg'x97jFE <كE8nU潰Ъ0-Ĺ<% 9O0EணKB|/@T'y'*sCK $Eak Ljg>qUCh67ѓ z2F-LԤTf ͕6Zyd 9 Y+& /`UdJ;IgncKnaYѠGFPdYO1fHڊI:S o."ƳR J3o?lΠ-0S23[D]__zkd OLLū\^KKqZ4`;'ũM/'(]5Vk3_ 5x7'xڮ_05Zw nR:p+2i[u b(]$Ξ{8CRKbΧHly2M#sImBa}< ScЍrjNAuq(gqdCGed8vzTC [qXnv gp?%٠Z X@hhU, CaYMK4ل85IlX\tX #cD ("@ bhFDH*w ^hՄ^$YBNV3xx{}Z&y8vmX"JG:4W8@#._02T,̋؃S*i8[T 8 (hsP0}bX &BHZR2 Ye0p[vˁP8bqmafA GJ :`ȃ@7ұAR00Y)l%? dp;kQUnZ"f}+g 05N(B,fgQ\wU'rdF MG%{ԯNO[B)gЂz Ua*RyВyT "F0ɽCrڅz@%[DWX jiWhI^%ȸk em7ۢ!Z,an#ߊvhA"&,] hvϼIgYKA2ϚI GZrc QTih );XP8/C'8"(iNVmPKM'Y^SԣwMݼlW{˺y7Mb?+4)Z /j w%) u *{\](j `p 6,3iQ(J"%L+G#K7N-!/,!Ա#XɄw"/Rq D2]NJ܇uqFˣڅI(f׀xVةO&ubyցxr[hCbiQQ;Sݿ ~rC-$Z1,NOӓ2%_^B](2*DǕOF :EhiMTq=bތK9nYj,@1pbSۥ̛H=C>S4O`#Wʹ5R0`#5ao'܃k?~p2X;"ZTRSlK?z- ieg"y/.Xw)bQBMwEATOU& H18Z3ǁI]g:D&ރAXU6ɊL> xև,}4 c ;-2w#'S]8܂hp 8BGU %Ԫ%_̠k_ETzpߚZBQ{dÒK X)Lh\TQKI`/K]޳j IuTG,R[JڣPqu%ۤM tFA-Raׅkw0 nQ0ECDN'5簙֨o)I}#]QLA+\IyIE@ph!En_a,vGps:W\ҸS.4I1(ng3O) 6L$M`M4B6TQ 2xm>'fM4؛DR Z %±ὸ:RUN4muk܈l #2GQGZ<8;6[62<)UW4-c.|y9Hm'kiu+LMۉD"";8 !{7`8]I8Sx#:T.߇DBO%#FlXl::H-3:G(F]dE^αPP`?#I9 Gez24+nMn.dbC>B*P}F):rqE @ҡ _l I~:n.1|PKL{kPO,Kc0(% _)pCg]&QvBloGqro 7g{ZƟMubӈш$P"SٖO8Q = ɪj̠ q&j :Fy* .n Dz^ĀW!Gyk4I+?$ y]l &h~.à|S}- &SOBgەit2R7i6T4aRaaW0 ~vᥳpc[ %m-i7:ltkuX>"1Gub]c\c?6~@11:qM;ؚ 2HJTDy @=$J[0A]R.`)XjkUX !+p,OQL74͹9<6t Ӳ-ctIeaѿ%? c ^ida{"Ѡ3 )9Ѳ'$)mD1љ2s |A@aUaI5Zo]xрc#8d`.9ՕF=E^ ̺ 26l1EWunFFH1 RP'Bs`]bmh?p Ie7jLg'[;DtX({눌h*Sҙ,iS4VvJ%qD8Nhݢ) dg Ed1Qmp1O{+LHM cɺupYV@ ix6{aMfY!! @Ulw,SޔB2gl ڶlK`*X8'.oIuAVAmW5vƚĮTpAHĶfD!_' 7tx/j0[ӰiHh r@ÜW\(tAdPDOPm#[AD:@Y#A*4ʴ3AZHQRL-iDRĂ#?OƁ]Gz5!4ptE<ɐ/ MҀqݣʾ,y63 ߎ&ݮ-299!ƗޒFw\x;mb=*m~*&M;b4D p y(0_̧__* D׷$>[V />!͡)HC:{[ Y 1xc`-h@P4*CsҰ۳"@>7`lB1ŧY#*/fVLv;n [PM*9D\= ^ B.Tfr V~ubѴq=D)S'ۘ.W#tLX3t?0؄0a+9ր"Q8u%-X-1M[HAHSZMf޿+k)(A9 `?\I*lX;i˿6wb: dD4{=8`  %@h8a3Ք24rKW@#@`,V qFH/\E$h+E iW2\^Pha_9k L۩Id/᣽"ĨpŪ- ENOW>u5N(KΆ5ӵǎnt]xG,blOXȏ.תa]57S[ ePѥӅWTBPjfbNݿ(tR8@b^2m7&PmHh+$ϏI(/e(M%gREXQ[J$9@5_]%q}e]f2ض tX;n+ !H^=3C Z=*8}` -RRXa+> ?9Vhr9MQ^cQ9-٭p\QC܂dБ,ABFk!%a})tAlJAEIt>NaJC pd/N=X0:8%sĪ'flq yr{$Hb+ 0J)3aGrpTGUfTG$a`)Z(涴 9;9Ay @G۶1q:44QwT! - 3\ ib+ KY@pܱ`PIpfSYf!QtV~8R%RVY]ny}rC ҃;,T#\T/zA.l%^buca^gZd]{``pL+  A؄A6"^2C!#hdk'5%P 95HSbQ#|`3kGkuU:,]&OIm6` UuF|qR:PȶSX*_¹,pr=3{O :ٰ= ,1pâ)rO{ૂ]mn_Sۂwv uHznpS2W!K&5 fd }+O)=Vqnt|I.~q(D>ξuu7<)}E?BO?V׽,@`0EJE+p^mhPUSBmnXc̸=L8NOe-@~Rݕ2eS+N+{ ,; cՇ]ww(k)2G#{mH$DJ2vH8#>̬!U(vA_61+GJ'HB$" _%aL}*zӊ&@-?*TINNw$%k¡YsYX%/hͰ˪gB{8nE*-%bpQ.E$ω\M-X*d=!Ll^f4j`aQ)dh5,pU;w%>F Qҹ/ K] NA>#, E#kva/-G?V pt<$ۂC~SB͑&= 4;b$C~ZFš+KDOa5bz0uH]Hu5“V)tNtKU(萡ͬ^HHjΤŝWr/dVpڣykP Ę@Nuj* [Dr# 89~* m9ȥ;Qqz+2 &7(3 ]FPLW!}|Wz)YĨ;5Ӣ‚Ǘ Wd8 Q5.6֏(t6 OoW1 et/_)X?@OpZ?3' b_BCHTPu|_H um=-j:袭orpMq҈f(J 9'މbZqaDSY`( b-BC3 M>Wy-W62b+;ϭ"+az Mτ&Ѧ`&loaa yqX*f.LKMc! tY4B,>Z)F^]1=?ozL?8$3 }`Phzf,FGJL3e}BdPGVU ̠fkSɗPyM2_*RR5v0_tܝ@(Fj&2:,/[ٛp*:.ɋ1-cGPݭ\ 6%4~w[Q1\X:T~]7 d|`t$Wz+)P֢:Ȁ䕖3Ymyr?Ǔ6f" |A6rCPef*m k2c""q:*2UWAzıG^-V,u$|c, |ImcBw}Ԥn Kc? e רBO^ % 낳]tJ+ﮞjg$sru"oO%{ re"=xjV((Ö%3WG[Blӂ1 pbZW4*pR%f0ZQ*)x%J6r#rnxC1zR~Z H2H$ԔkdIfF&NTb(ƽRMN$/Am[WH:];uuA zdg59)57kyd5iW\b}!LOa~ѱ )wN8\cڊ%y0.'4/^tj{)a^lYa#K~"I+9)LU5@`8(s\FS*ʳL>Q%G(˝ xyVBh7V3KM]RȄhn}DlV͹w%D4p&LJX KܝQn '& BZ0ڋl i%%% 9>: 2o]g -Oz$fU++G9S ;apKpl~jv(NR.H:f՗!+2! )O;Dpy b]]b0SgX9bϧHNZ P )mP~pq o)J  i\:Njdx2 A !o+J99 t#{q%>ŊPڞ:öO}aZ… cx֋^:#lXZCatH~/؈HU>NJͪ]Et of>-ER$25X1>GP* XGh>ܦX3eDsj# ōlM}Q.wŠQJW"4TO&Y+ԧB a2-#ThJUCɔ[ /4[jS)[gc][7 P[o rU= ')]۾OHx T_,D0:?U>WQ6gϸ6t8x`j1;4.5dx.G0%Hޤ0 (%ञ%J$B-߬a[ !@`- Ӿk$CHth<$>%"R5R%wIDM1v`<1! q]aLI!pN඄:t & O %U9)1|6po0l,ݩ!TpS2$ (2$ (Ib KXټo!"Te(XWgLaS Q"’Fbv( w-dh H)UF&xD)˷K}qȦ3]\Eri*JH#\𼞬zSUa;GCzSQ{v %9tutk;pTJ4M$5͑cj;+fxqƒYMiz֤@36~?rβ_iU/Z< hї?rI9s2C V dZRj! *JYi)z(YPl6#-N"gCqޚϒP4xq m `DCmmUCaqc?  !J"7ѵPhz]~-=fo;515J1GqsJgrg\BO} eR~ 8]8m$T9k?4:e ) u7. IA^hSW/VDCPW$;SFk[XfՉBK[(j.ĥP먢Sg=]C|ai;or2ZV?E$qzH+覩j컝ЁN Ʀ'F O&-jgC>^ZP]?F${YoR)!*зk D&'v,GxZb@YaAI"yaٳcn.Xi+j)B컖ZoU\IyE pBb 2)GS%Ìsu8lszCxE4߉acam3ɀ̄cW60C KE7K~g(5 !OQ9CnƠ:#+ܚBcyϊc,[ / LDF"H}e<}Yk 5FR)_Qq=G:mh'6Bg/y _IO;7N˲M4n@*@H֊poGj$!&7=f\T5)EXk~» H>a( ":;Qn4aaDjˢMujR*y|oͶ 4sq%К Ͽ4$/(,sҖ04IeE[%kl™3JOt>OO hqd5DN~O&q_t흪ɨ}NCɤ3'nv˴aTN3dz09n`Ili" P[{7Vp-<6xELp|wHe;PS0щڛ.48&USZ۬b1W' ř]Q?#6E&P/̄|d, s@wEcYFPK;T.BWD Dߺn&iahW0jh: 0JP@m ~f^1dkƓq\ʆQ$kJƩ-, kBD&y>z?_O>n2ZFWU؁m~x1L^/!zhϠA:JbLǸL>*72t.0N9.Cڦ 'ob@<g$x rѳp xkgY;k*T.ؽgtˁ`O-d p3pntA6nٴGJˬt\L`!;4mҫMyf341X|X]seTeO$6PA>0}\ X"zEh! 0^ͥ!thWV%~x$!. oe`n*\ @}ӡAs<{svFʔd;7l>]o`e"C=@;rV\_BA0 @˦Lٟ >|d ד8$X`*`s.2)}fW1^>8/KwXȁNOB@& xhX `"-pfzNqa{=pS{#r,!}{;M kT20r&?|4'C逄~,d5񢎚`h" @;ٔP%,IӪ)!)o720T+`xY Ji^cS'cꈈe^J*\CQ>?d6i94|nG2{3~\_%RB!r! >2|c98s AqN&&V6N\˓XRl]pCUcq0 tOe%K\X[3dHW(a1 T`\?Ee9Gƽ_sbu*ai ,'LGfN$$I6aU(k3؉z6 Ru1T!µob4=[&g>7x=.#v5®. tYX o_ȋ E4j![D;#KL@e i&L\cjU$ q,\ԦUD$t27_fpZnl:Ν?5FNbɣ+ @&s5B^3H+DB $᠉ kM8)j=2tOOxbM0٣81>'1gLXӟ zC? Uȼ8vRο #<~j.%6' ј ?[LW>ƠeP%mi)}u`?揩-A55P ciI@coӲzV$u̱jTpWSsI]_7:6 Jr_ɯEjr3\XZTܨ{ʣM ('u΅>Qdo3u)-)]SV{qo? zN.=kkkNm9SyYzNhx&9+á87sKчOw .6YX@5;$@a(3Ƨe^9v#bw,ўlBd*j`w"fVk[--3ֳׇ?R z7az1ߙtc:}h+mf`fJZ)6"oM!ћvs.T`#Eѡ _1s3=*׆K4Vnye]@$r $7t*B؀gaH|h9y0:CskO o/3#f40 '?O1JFcC̓48?Zf3gfCFosᙞbifi zDAw 1C9$WH)$ /%RY)R~QO# j4#Z8џE|hvElsѕFr|GeqhGz*KԲ LDh~#0@a gC Il"fpqϘa72m3s1$wpp;ס*Y'câ7=ۛ027hۘ dn``# "y㇑^F|w+{IS'srse2nfJ4s|70F\s\wkя2<1CG;˚;p!ԗ1\9hp&닄4n4jHC V$4hHkREjrpϯ$-0w<#]ؗr}%?$LG@S>g7Jv'꨾wy⻥CxezKR z9[\cȂxG"ªp8gr4\ʅ1IǾMw++ c'x|8pxiM%'j1K-f%ieٖGr[DBZgװOHI#=(~aJ謪'1/Te$e#{l{< !>:) :^5WI@aV;˺W?6fБ:O&!$bmAaBGj ^.Wi@X Pģi1qHz'ac=ưOM91aw= ,^KbyEڵ xx A>Pv6W~^ [!"OCh厜4X_1}VaHC8#JYw- Cr'^rGFg(_0E^e\N\kēD㋵d"2 @\N~!Zp5}Y n[RAW"JEn{$ @}B{.ƛ<2J%%v$&M%%C*XBWn"V#@MK0%㼩aFX2*E SP@ VYQK+U-RV'Z-6mL,b¯k2Ҳ cbhMO@AOmIR/DPIũ7B 0W 0/}ϼ#l_ZORHʚkza5Q%Tݘ:rhHBbtlbvYפ zRZW4}v+d4 Z:Rh,S@z9RhhTBAs@ Ac 333τN>#CW{u|7)Kųl%ƨT+dah,Dł!fU&#LmBLS#S}"D:*`YΖq8G&Bygy.ippfQ L?_2NYlI?G=`0vΆ: Z ؜`bQ;|TP5Q&*o| &,ǫb^WCrxÇ# `c~xCĭ'<[8lq)7N$&Re La P'射Nv62i>A4;4u+ZUd^lj/h(h ]q>+ Yd Q]CfQ LGt@\  'Ĩc&p:t85#PLzhz&b›&KKpblK7cc#O8P!U5x={ O,Wr! h yA7uڧd 7ΐ< <&1*U ?깞`أƵ]{@M#1Lz [aC:QjqC2kvhD%V V%\Ƞn+t9>u 6;k1bML1@h`"`t/VuN%ij;M% I26&7dٸZ)p(8 +ӇGuL&$2F X9,хYwGRyXXX V/Bh y >,2זF: E W]mXJι}hTUCr0~yt}YVj妡k}O9V.BVxIFFE@6"Kf!YLN?Aq9@EOr.5L0a $A hf%<;8&!~)b͙e1`U*fD39ѹbGȧiD:ңTir+"\QVP*b)AHM./PyMiaV9ۍWLn^: H&8 "EC"TʩΊ)#̕ޝ?`YDTM7zp x@TIAz*Qct /*0C/Y(5{a|h\|Yp?x^>,gXҎp '[KE)®8!*v|tT\k猖-Laa`6$4#j"sgEà v` FHjEߝ1NEAa+-i@QQ+Z)m 0"f3Ddpƍ"h*a,9%bҦxV`+ ,i6* ]er"qؾ#ZډL͒Gi`7enk.eyT@E :ض~j הF mqC_؇6! |K{@!) )g4G3#~(+7٭Wh<-K$@j$҈90v{SGf&ʮ_L%i8P8oP tiJF7Aj(jc%O:`XP6,O>B {ri j!o˟0Bx$v*iN#C=b@ PٵO4*)d}2F4\u:+ ҘӾvvЄ%kU-`*(iq1?k >5=7ء֛2ad ?VQoqy-1OD B`rIs+K쨣s%*a1!f@# s 7&ʑq=f)!@3JzFJD[X%)nڡ + y@tVŒXsu@1 Ξ!vɄID~. <7)zy!88PF87[i F猜c3JWŨR Solsu{r@Ex.iAh9Y_[(3m_Aξr[y; BB n~:z> QڱYe /'Ǝ sL Ekb7l歛.Qnk@BϺwE _7a]7J5MO@#xGwAFb뀃m}6#'j4ɶ~n*Ά3݋FZ@7F3SNK.\YM^! e3bމ}Q' K0vYu^<`|",a'!+SYݶbMVUƕ8 ,@C)5(W"\RH枂Kv ]|9<}?HiQ)˖q2$MNK̴ڰ,wSfp*dBDج' wNh`Q;;j|ELDwu/$PIbt _C)LH+͌3.vW"A07vd2 Ӧqp$ю٫YNCR^5kʒ$!YCz-; /(.*CU3n|bdn CaUMw!Ik֣ 78-&ȂȂ"#80>[?:eK?v3$1-@P#Z}؊yT<@JHe3(0ŝe" x|BܾZ3}74@EP8sdЯw@"0XE\0a #@I*ئHN-M>R\.Os>Xlg TXE-@Y\ z˙+#^†Ќv|Dh>@0%r@rG h-4SHѧr Pm+øF+'uZaDM,Ml|v.! y"o`9HywCm$$uԾn*wz<.Hj7-Y'q{(\oC4 IIOJx(Qw x`G- CAd\->Ԥ:'zM|] rVW_aH[Juog>bq3 SLս`F\X`2Z 6G^C)ߕk2E<' rYYPb=T޳pkm#f' AB!/ʝŢF`L&{gP\ ewȭAH79ml*é% w+,yCB#~?35(KvEU$hʲgط9P?ߏ? 8B AD^:oCuI{QĮM0$ZPX ^hc]D fQj#/ yl"= 1!!LP@9ۑ F΢˻M!+rjXml[KWI! .PQi]T >!={e_L<΄Rr#+IOqܺMjYC`bdx_}V$+$`q\^קkw7RLq S-e# kV.[qP!R<|$82ryZQ1ww~aDs%;p8R ;l$T:PyP$`d  h`0$01lmҊ vZk aRX4?M!@ۆzr2ӳI.0^X XKPdrʪDixYh'. 1Ҏq6 :lh?r ai<26h~fp(u:S ,s"d{DxVVh:h#3oV_Su"XJEP*;i)|Cduix;>72kh LE<ܘ߅mT_TR4ϳ7ɂTvmZ=eay8QӬ`[)#^h?j> b #OLUP\T N@hJo#a.ʩ1'a0J8i7fx;G=d]ɀv0D,d/$RtZ= ,F(t1$t `͐.D(*:rK0 "JR6Ԑc28Ezu5aw>/kHT>x'DG&O2leI)ER[FИ/a tGԫ 'n?ƗLvW3&0xvfQJ<۹o!@70.dp fȈJ6I7 |ĢP%gR HI $ aB >B%M5PXAPp/ -A鰤`-1mr_93ɽĐw7P ~Xs  |,Qݬ (Oi[A3)$ e:{$[ rbTmv$Bh o hT$ G.`p_L&WiE`A-)@,!E0HQ>cr`J .2ȧ<ՃSJuHؔz6X q|M U wncc2א` *5%eE[!CGML=ڣ=!U@LGJz.Z{/wfiܠ\Ⱥx`{1@֢L')G4G9#H^ o3"(f0i ;/L;J hi1aI#Ex@ ]~p@VU+7 ؚ gqf')}+_PyB6pvp٨;%`%ʬL} @X="hMkk&PkBO(ARBYHɱ =!H %_o^xTx GrǬ,; t":X!Q@TS@ IM 簫жcn2gf^ۅ.mFik'|Sa(ĝXEǎUlBmgDcЭ -,]CX<ֱNH\)o 9 8wGj (n4vi$pl d/͜/a<aj[b45`,S$ q7ANřsSM(aN>yjex(t-B~~m={ :&m<awnH O衮|!L-9wOz_ YG.|kE-|JB >@:n(`r$QXQh#^V#tiC&:F\h/YI\vh%x p.$(;0TCcfݚ~kO4CS!5!*=ʠjGEbJd!}SokƪӫFdzgpmF_ l!j !?)pJI1XWYJT<5j3'_ 48pi*V % 2*$Մ"a,gLu։lFŔ5$کr1,UXGX oV=64@n5'S֎> ,Z<9$ywU!Vh Bᄘ 4Q$$9:`k(0Db,Os߉]Qt}$sB kJ'ȦUZqz2TjTstxMw9|!nhT#26{8P~7`+C6mCiˍ87w@%~シ, g v,<9u("h*tܗѷvZ:qap6J Z0z)Ou$zrHbS7xW[ eD{$uq+k:" 00=¿\LHceStwWK5TDu F(H5aCn35Qu+󃬵?W in)<ٟt]: Ow'ջC.iyh(ң)<Zg[O*_VF[?$ q-V5A̓L%`[]ą5Dj)aaeZP11_X^7uAii$Nxq[M… +!u ʼnN.#õ=R*Vm]l@6eu\_I8(vUACm-fK)ˋ?o9Z0:OhS]_J`uѥC{OlQuf\_X%QK4)Yr7-@0΂ :iTya >cJPZpKjjlos|ؙ[\^\5 Z/jEXڮ#yWg \.^e;\f@wവՔ@ j߰5bNi4;'tp` 쵌C ڣDd)(VH25207m9%ݢЦx{eG0QFM&o6p{Ƨ!76 8<|nc{uC(cu<]i `2qv/;d׊ ̀v.T<c%R @{&UIu(۞a@Jc* Q (X9 G5QfH Y6&h:( @]c!Ŋ/ix(Ux8]z?M5/8%%1U~BG @IVXQ".lFT k?(l2UD@WKD&L'hM,*?v !gEL/k8<ˤ)bAE^;%Iv?>jEAbȥKKe7cyq Y*c9%oNHLY<昁qZ#5@ZsCt,Mz—EtONx4X"O(=4AV7vfznK2?<1k؟6: T sWQ>}/&CNn35.匏T.߰`V\ehyefU9"Or]{@i* #t 8yRn%H[ H3#$)?}I. 3њ'Ȏn~ =i}l-,I^D(,dRT.qφֈNa0JTWV"26 #Eà@asA{ N+w`;xaXݪNP=c*LK+.TD,!ˏ~ަ\V;)mBY:D x4a#_8_T4wQY!@!-) lDuc :™—& O#?  iFzVcSd1';QK BDBW394C*kVgYS)I"V;YGt,9NBNљ>rT8,=l[ICfQ\gEmz&6`juڥeUo#Dp]๒EiOCWbN^(dB| rDŋh )ܴn9jC2B0 {k\= FEh'j1bXR(5|]ڤ`cv(ȡ`R9ŁZ./$j5Pۓ!mcC35pP' \7!܇QPIEM2LvG@,hAd $R~PD!LK/%b)cY H{w!!pKHie){ 9zQ‹ց8o>+CsT N R9ZhljęRD; =Yi0Yux8m9¦\FJ+r)f&DYº;#gXOpPx |k]>qӃ[tBÀi97ٓU! mوOw00,<ьEXkP1FSh"_2yRTgX~\Jn.ÃI?Šݵ;*qx(?9Qa2z8Af|l,eEu,x( :BSԺ/˯ 9-ĮԧA`\%L Q*eΝ%Cl+ͺ^W($iû` 0KO'7-mK61YmTHqhfeh"D\c91|5n(]*BCj28׶& I(׀ϗB\=v#] <S/uPJ10"`pBC"\]z HoEB? ֶc sTI( qB nlLBA 8j!DG`ǁm)E`@ v Z]fpp@Pٍ? bZI͚tjaJ6t-D9p't bh}?`tyw*i)#})_!bc*eÝuAصa,[̇HRrňF !DlRl_JD+DY[6Z(}dQsB(RZ~} {P\ゝ N+(crInHmA.s,΅L3a-D@uqrsTrAny(ODC 7@n Bz1ݠ IF^͸A<!&e]!|&3eˆyff׊Q0b¾!UDoECIe?dQa4ts.ؽJi 6PCE} D9ƨ3 PgИ5&zZk"A=N/n"yb\$٪؟4};3A̬8.=BCBL9i2 gAY! oU^an|]J.e*dTbzU-y &z=$WlvR܅P7~5tO&.P(zKͶ`y Q` P;nb#:wI %8M=Ջp^/b~*jχJk:apWPT[-9VatMs5qZe--랓̶`(ƑP.du|1°m7fC?Уz?;("RΔ>'qZ偽o,SzB#;zp tT3n$EH%6!YwrC =UPL^xY1inMpp& wyۿ.9?-!sV"`]!=R7C+P::K{/{d.L'I3eC¡,07> 6 ZʎZ3D/jJ팠)hbڕs %bH"\t0 :03g_dY6)= aRlW]j溺h0%KYHՕ쁠ٮ/.Jt~ 㒿Zw/ۢ cA&"Xdt ]8V"QtC+R=J˰^šOKdG1}˰V#!m/#cCeQBw`S ^d7xşPI|T6Eh,H)%0ZKOJ^W wq^ݸ  Dj3ɏOe+xu#,)":Lк'u *$j#-V㣑:u&buUMD<%Q &|S@s*;4m謥Ybly.RiH rfʫ!|M ia" ,ѯ:l>'S.ðQH]oc\ .E6$ϊ~o[hFEGaN d\bt g(db?HVx6+'kMq,S|UضXX2R]R8" =X8w!@jޫ p^C$t)Xdzm'%SJFUMDu7V$۩R,*O / A.d2V|eU ` hlNdJ!57 [lݍ‚t,\i&K"0E6<|kG[GCB2h68|P/Z fx(obn+ie6ݷ^-02%hhuై"@ӌf pran94kSYEjJA**7@-jj"VJ- &Chlp2̤D.BFEU?5޽ nk wUWQ,@EktWYO`qK= ('>{U6MYpIYdƤ7$j XGd:u'rhpD-Hxl&js;I D=֣Xipeڅ_fz|Se x:/Nfk柱כW0GLjUciII@86FrtڅW'TO~rʅTITT J[sWYU<qy ʠWG42$i1`9n%V<}fIVt8F@p;)sL+r0ziD1fLe-[n*+)d)V!BA]C::ʊ%o6i0pZE>W*Y?\rBn#T0qi!!G 2Cʽ )'xH;69n]g.;<^ rǾ?>-y*Q[^Z}k OE-HiKY0vC4--_Eh1VC^'϶`LSm#A%5~fLIr!RꚙЗjk4"Yn)7uz_@65# ZI^{7EU)1MM>"i/YeF/QHЮIIYFٯ as^3VH10pt-GDRN,EjOI`_]oRv+j\@`֐es(с$fsxE?(hڦF0ӅJOߞƞ1,׈znVLu~(s0rd8tdGjRdt~sK EBtigGMR1J2&9ٓ(E>Z8 Hu Ӕ=,,7LG8Xh:xA'HH 9S'p{8pw=rȚ. +7Y/Xi6F]Cv,\dC?̢;v_1 O6SUPUEjl3gゼ4\e+ 5g Hcv2($h)uZr hbb' Ay XaΎic ڹ2Qv$ro~;+ZRNePZ])m{J5XۛpίP͠ $LoAbEpjl4=oe qv2iUnD!cJpz"DZFLQyB‡1@5v[!2}(0*. 1"\ڧ=oH)YYkzI"Z*ILj^iH'^izapKXsEe %rG'|{UƐGQH:ƣSxX#,';C$@U@-/J*csyZz,b = ^$  )6?JQcqqvrJFadtfڤ!:R3ְو ST2V4՗T#*+oR%޳t(\VN(5I u KҼUxvq?]_"#0VCT;]Hohsq [%!sOCbz4meWbe )fU)%(>Lhԇ+ NLjy vj:RӾ5 `Z[TL*KKNPeŃ3(|r+A.笀ؐMK0ڈD0n`Ɨr]!x `@KǕ1u~Jf3M<Թ}߈rz;nm̧--|Czgyf)s0a8 s9d3ەʮl‰QlBIoE|L0=-V _d!&;PIԪI\qDVM:O6V86SA퀝e`䰴(:65$vBbģ׸Πjhw@Evmr ,#L`B?YUٕ#Fd0(q i%9Z70 vȱ~71x$Hl@/Vi˓fo\ǣ{RT Ϣٮ[kiR Jb6]=m->l=lU%#eի}D3CVi˥ZW|`3Z$] ӑ+FQp 8S"`mM.LV1G4-l&'\z8\\~mYB>Ąpvjt uO@rU`*d,ծs"뱹=LbUD[2& f ܖtl߶)-` x.DZ6ðAόmIRQO-YסpV. aY y;yZIBI %% FPP&0{Q2dX vU~ ̻2lTf'D^юCO:Tjʛ'\D"xV[oOD'ik}Vr囹=̂AщO,͋X*2X)|(oo61:GI(64!P(j_j`h=kv*KGs儇ۦ$jX_LdFGL 2JI ĠDF4~KG]b#99Ԥ 3>NIguQ/s/ 2_纫Vr,SL8J  4)tJX;:2Y!e2 0B]@;DIEH4'@՝ ":j^AX"2Bюy7Sbaϖ j,P+T `VW {kKB`DG |:y % o&] 8 y@CD俀l0PD7Z y{z ̳F]8aT--yA\ɡnlEԌ˾SA f pe#E~АBo-=|dA0aFA)=9 @8!b;6s@Ĥk!ǠF1SBK#ucMθ4n^;)PGhOr>te1 40I#+ckRT}}nZL6_e >&>J\oIcY]xQ\F+G/ܥZLZ> ήFNEpA0-!2k\RC|[Hb|@W@&ˀ$Ag e/ښv|,U iKnZMPg'8Lי枍w=Q,1y 5al\k…7X 6hU v``_H@:rb&+mSl_Џ ta.'UEU թ"UQ-Yakl t'4-J&뷄[AP(5.K93Ԙ"y ΂s/s5ᡁcS[mCV0@k,7 g.+R{6&mٜO);ؿۨ֐8-hX\bf\F^q|ӍĆ 0BH(fjeGn+3 = Ŏ 47Ł_lp=I$*:|_qG .28¸"'uk&AqJ;t :DYX''`Zy ^k">hȦ8%glhmN,HI2 ɦjfH iAMLfˤS Uncb4 n$!A8[cŒ&! ď=[ V- ޏ!%JwA/V) 6MbdEoTe搇A>.z3UO/$(b`w(Hg@D~@bbNs=}o( }1uPIS.HQtcum-x#0O|[Qi#%Fkj·h뿁\wkɦUOvשu5#DB.Wn sdS@=XmTvBU tGN'; h}4ۡ32/!TZvu (g?[#frEDvVGˆF^M#.KȬiD*YoMu"; E 9aK c;- ^?6 OĝV%(O#c5#܆֘IHIꕥۼ2R|DSS1ؓ$t ٵhJxK,DHerKȳSZnaA!΋i7rjXX! $ I.vlX%AA0\ޖmVT.G{[%m@"*\uu *W҅(-_P,Wf;pyiՇjv.YBxF%VD5IiCr!%'a XWNI AHO8aݿ^+98I4jiW9$V~Xn3m̄nvYA 4=CxRVHE{%s%Ŧ7X&ʮV0j|HCH:'i6[,(ā,Ц='t1" Tw &;'C.g'c=f'Kb$ )V 3*-#iˁ쟁-ڇ6muvWh{/v9Pх\4t}5bݟ:3*n~LIpeK|-&NJB"V\ۇ]<1^Ey~c} =nșϖpҹB"|rSNʛ.*Bk)*H1cJ"+5_:E`خ~ݫD~Ua-tÃu.PxL:0S_!Ěc`}1wu*YLLoS\J0( dtYu$T޹b*D܉E6 1r q˚aiK9ؕ =K`R$A$3@+J2`w7ڕC{ xۂ7g^eIf 4$#LSJ;$h9Q}`4zc:AAɁ"<%(]sg!”m[ӽBHO姮dHf~??~,SQ;5a^04@aDA f"m(&K7+$YcUp"}l-pf,rr cA#p^È_=$"B+Z"Ԕ\&`(lT|FyIB$Cr*[y{՛OCzF+_Z{15u-RJlxRb90f`p'S 2t8,W`KtܭP9doskV;Ӆ5l!hTj'XZͬ_M3۪ A8_Y8?ې _`{}lNƑul0NyYb";8M?ɨLJl lٜ  VtƵ^OJ1ĺin38CPwZFɢՙ9y_l$F/)wlq9˪rImxb|Q<* gpyD` p&4m 8}vF EPn;EI-$nZB8-8@q:,sH :"I.FgRi#ij~947PKuMs[kb%sM`kķw}P,)ڶ A Y砙5yķ`$%<*ȔOtu(oYMg;Ƃ}{*EӬ}ȁukzN-.sP00rxyNvJG~հ2('0–nDg8\%φX#YAu7 -BNpN(?P.rF;PmpgAp/D,?H5d 'Cb~`8K_Iլq_%JFվ΄Bi :CʅCD3xp;ɩ埚t0GCF"#YiZA&% ȍΓ5ZjRb194偘O|pDy5MMF7b8 Q|2+  "Yo\}al $@dwI\NӜJ0|+qi+$*S4ՙ0ٰci קYPK1_H:T 850_m}J"t p),P% MW}^჌2#}6|$øe6#y(ؖ$ pVpr>iAi3`̈́Fr( !]T`L`.4LeKEq"GF5>~C%i@ZBkEbrFSP'2YaΘ4j6 5Sq+]ŀM: BCΕAwIs愪 OXK)w Tr]F':F`XZ0j2B?w"#94!31bVs~RB,X*ɸQ_[Ĕ=>}PkaŒZ_X Yv@R4G)Yi8kvBxYݙTRA9 Z/P|.L) = _eOk3Y1,V45hINL9OSG"LOmA*u&"T@D@%, !VlvZ ?;rP: aƳjnpHp3(OfPQ;hMhPv9@.`Jcv ߄®kN|56UFT9T.ds)Q{O׉^B|G f'%B qWoK~>A,2QȂGƫ%Brw$Yb'%."1 OG)OUÿȎy>09;g\vܸ.̯G5s-'%^WC18n옦A,`+ڷh~ ggeƛ׾-aTCc8 fcDyW 0Y D$97 ˃MJᏇ;4[ܶi|l.ϸFxezNa"+F&ƴrL%$L6&wx Vqve5yY4:/DbOZeA(?7..QB ;̆BexPpATr@"P%dr@$i&Qb!]yOctZLC}g+!kFD8'T-Tv=`ƈ"Į %M_ɦKldOj߁d{H T&&La6 \JRr"4B!Q@ #B7s6L]r /'T@ va$_m^Je*gdę _ɻZrM;2rqt,g&z>:6̭URA( ]]$ vMuC2Ixܤ(hiaɕ ‡#5 CfF}KU=07.tfH:}^AUj~.,JiFsPg3$<A3SCtTf@҈ˠ!H$!i@ HHpHʡ|iԴT~^.1a#ϺY}Єv WOvFtzx45ю)!^FHtD X l*:M5,T,)(P)cCB ŵ%UuvF\ҒPAjY9_b0cP_o} ʼy̗&$(:h7|#ޡ~n$X fZMEP$G qS68@҃'E>i?85Γ@&Y.ņ bF|f '  ݻuQz+! gZ"ԄLǯ|v O4^v)"sqWeL00[|e-\Fu[Qh&A%&d3\ݯ9%̤$uL+񀓛#D!^Q"b cPLh* GeFB ),2$bF{ď7JDowv+zH+'E6Bm`lW~19_(Bup)#wAPJ~-r)}au+RPԵG: jSm{MHچV $tɳ$FT Bc6̎d)U&cn!-dj$d*]J{ۺgDH%cfC  v$D}'НcND$c,$q?1W*Ӡ>;B) P )ك\Urs183ȓݞaehK-ҍNQutĝh;j0%B~ zo`[$N.-wS;̀hspj~Z=lWn;><6ml}Pp-WaJ*[9!9,5]5x ގ4е#מp3w[\M/lx·'E*xȓw/d hq|BtnϨ^tGOmM|qwttUO}=s]MA㷭]b67L<[67 ҅}lIN z^Hx,teʿ ß+#כkL:O&AC jKADE%PywpH@X" 86>Șs2㉶iH(F7RHRQ홊HEṶ J!"hTɁKqLCq.k+dO|J@`b!LߥqǁI[3eAc98CWt چ 6—1k1@I5#Ă 0m;* ZiiohݒAH/8]_{xa'f-Kw b0 [j1K&Eԙ9l&r pB+DSx \֫A,wZ`{ 96ϕ^R2` hdg>h" H }7HVvS\:hĢ8Hi/5_/rWGX,-)RXPy\fE ?l u"[)hj[G sBi)\%y1_g"g)wNܴUw ŧN-bfX-Sa\/EE Y].$sBGc4bN7C|}$;AP/ЭBKfh.0uN|4"cOG%`M5 R \qs)rp8`9Rw D *~ /YG"8OxHiy:ĖZ b<=~#X"o $c(o CS;u vs~0.SA-F-@ԫzW"-@$Z$=*P ,f0:V SZ{ZD1fѴfXf-opkl ud@{A. H_bh>NC%}̢Ktau/=:E-%)_$(+W H^O(,qLh]挕FF][`-w/qT#mXC164']v.a$䆇aNJ=vTŽXl=ɯ#ML]XTd=!j]RK݁N@\>B vQ>ŰtHvDX2996*Lj#'Dl_ Nׯ\دaHF +NZ&gClf?9lTΘzXU)8[7=K{Q' m\W}7a T9,bixsƵ2xB ܡ1ˬ/5u4G+mi`e+@+#ϼsg\#qRrȳX 2)H@)ڞ$a GDA {f5OEoqߢy><| _ZN6I#"?c!P8YF(8q&¦$'w(!N,)adpSg=6Bt*."^b򦇭U&_hkuIwx.U/st.3N;P+\ȋ\"t6'AL?AJvXe}">Jq9hvKbؘɷH@55)ѝ̇<Wփ9Ũ<.DkFoXaO \uZEơ$꬇.#NR lG%ۻE1gCD~Y+ G9fW8!nśV;QJJJ#PwX->D!JR@ӷG>ꂬntxCd.3,M.hB D귅dˢmÜ]ң< zmb"ٝO_䗒b0rtWUՈؖ'f9=Ј6#No`ہf'1>R%jv{sWIi~&l*`KX*ixۭI[f-fPS\xa,M3-7v96>R/7%nݫE"(k 8<pz6@@ %㣠>ogKo:p׃0%\cpf"B HE<92`qN iC/M[&&2b(KrB$졡UZVHF *!leHaQR/.7i#턲}LmF) e RBTDQIVꛖTpBfL,h6F4k#][/-Ks8%)QY*yT4Xi[pDSL;KH%ϐ8}ѠaԾ@$?^ I" (8դY=sC0N}uL]@AfAD 夔535TX*Ő,8_;wPug9F1:rZnI qvElzۜ>VB`pW3Ceim㯼$~ a: ńHjR%}\b<,+nu6R (pɣT裪B݁%w\n*3eN,)kVpqP;e@]# LV(ǶQAu9HE'HFf,"mC]w5wPgc|~ˑ|~Qz!jvkadY7\uʈuoet+ 8̈iKR1q7iPQ̎{dtр%\e0Ib_ֽWZ[_HZo.>udvQ@Aȩ`Ԉ5!s $֩c)TXaIf-7MZcqHf`ޣK̪E q1`*zLI U:j2U"@k9۪(pX8 |yiyͨC+- ń^4e4x>U#ʪ7"R ~JMaKaq<3' …fT!p#[a'6"k4XŴg*kK,䊳vY 74iQH"cM3_ F3rTƊyȘw{@CZeqFU$պ%A]1NIQ-XXNɋ iJqH1%;@y"(a(wY@+_wB[;%'ػR-<)j.}Sy6oGދS; \ǬFi5ya=\k`C-21`7XNaTA5G[Zlc!ygBj!:Ok>f0OYuG$mfNsU{c/ #X" a6F^;0 ."oqnS51i" z]2@))J MnWjQvm@7~u ;AqA6du(q8aU#Z+9O"Ԉr2R+gd2٘m&puEX$}(M[LlJ̈= VڧY:N3f RN[|ԯL/9W!`^4Q'8d>8"=Aft~풮'mg0)@:, t2=2/8.XXlC,`AY/ߔsf&@3iT#U^IQ8#N mÀ؀ S%_##f0l0&˧}LB1I2bpgQPT|bu_f-ʫŜ'H~5Go'!?~(۳ 3pj>r:q|¢7`RcHLZ+Ҷ BQy4E1l"JD  [24i _*ϥM,,)DtOTtBZOWއ,6h;X &d≦hhDMg#ҢzB4DʲD.a3RK[.JKKx`bT+J%G9AB5IATi*xvyԁهfU4KTq_3bí٭_pfU4y`.d;AF/PۢvJq% uf*8 GSF?ňy8HppK0nQDK/ 1I!ٝajH^C>xA&4ie mu^X86_&LK+33ˈdjdl&KXG[2_ !UvBSf(;F$ Q҆p~#wTN-S!*Fhy7K1xjM_AB eQsQg tɋ.UGa-o$rڔ&܄BgٖrtD``'Y XVor ֈ6S+Y*h> EF4[xe_Q`篹S1ԜP!#ܻœBH,{6VTss;#@tP(+%H\ ihkmLZPjb6r{jv%X,QeɖG1^s:Cy07Iғ&GۙIy1_To3FI%i6j;6xe g=l>ˑc3LX]f"lEPퟚV*ߟQ3x^ވ+)I(]$z8H-A>JS%|Is#`DJ%w#sXP=!g`_L&_r{mȤ81Ib fWJZjK2d3&` `z hʐF{)$%`E.'sҖ^ykD ZH:w+x#-6ؐAvp<8=P-;qo_nVV^ME Gq_tTŶVRҔ\j#;C?9q{Qx,BFgл5΄cȒ!( )[&Skyx7R.[>ZԒ&:@%uV (1@!X %G"q:F +{5/7ޜ9qm # m'kqv6byd bKh62x`BJ8n2" #P\[k3p{2/ym@bf^T2if)WD#0ʑ:v"V, E$^װ}"cr5>ߒ&=*.E' ,S{גg n ܞ]/_Qu''b 2]ǐ dZ=Sp BiB(X]i;8i ؁*83{`f1!6s򀰿Sh/I}2uM_P0:30&ֻvbT9pZ8ÍoHo]aD~<&*)v;S"ir6_{4" yx v;8z oTA}u+ $dp ?>$R+I n: TfDCp'MY~(_]aQ<3}MJlo6F\o0K"׃s0-`s$gj\IFFG g&}"ܟofY2 !DE=dމB&uh2=Z L/ ;UfqSsUTW ؂N c::E 3pF[ ZֶdݶF!`FB_QO=7 <{ (D9-ʀ'Ѹ/E_ʯӑȡ!G eCٴfKǡCӛXADR p69u8x.?.4 }@ a*#lɛa(*JUZǩnXs :1\nC~#Q!$ yfg7' ۶MA"H?Tks M%ywB05Rfp%Ƃia.?/@Cì͂;>y) iD5[zjȞ4 )nyZe/3"Vbh2W@9x[N^ˀ>2ë́q&_% |;PԧNiXkIx!ѽ pʤ6-k #weIT"+$u$zA$J9 8s no[i=*ۤfdZI@cMbTEė4!/h MFZ%/4釒cnK`dDpUs ,`ANqfO) 8^gMޏq݄+.YWi_e!2}zndx% :I(y]f VqUլb.k"SRC0?V2~GEWZiZ-ʶd{po tq<+C` Z9}eUbA32 %mG/P݅$sݝбv6ُA-Oiu(0m׻ʽlJ%d]p󱳔@vs|{{>x Y|1X5mhC+v,ǀg#r-J?rs@u\-.=^(P!Q4DrD+TuS2RF >U)8^='8w__]vOᕇG[F% ~1%5-ō_RF](x;[St D0IH9tR hȫ]ѯ̮rV_@QF٤z ?(}1%@;߇|N{!(4B]L锝;!gxNUc@ K;4 H,BKV?%bX)=/P855xF|pNP%huȓ=rJ$P=;6٦KGH5$SQb ;Z_<>]8s~ 1wwoL O[-T2D蠸ΑImT ;GlJ "IW+yL03ۑ۱>+3_gOD\ncLqUTτ+<,A*W?i[@= en M-7/?Lf~P&9RL`(\4-Ik0(Oaj-8iU |*22߮C2|b@ Sw>>/\ʑ3G wW%)((-+$=e7 %y 4R|M>:\fܛ<6mٜt*nFW s 49MKbaDr[ؑ2(i`CBYqA8XHdT5ot1|PVPD{!60*"MĊ0w琬)VvF0a@pq" K%cRc%GDHm&61 [p)u07 |M6>e<p5Dek~I6 KcZZᾭEML@aAW-󍒆K@R@bSKQ+7(T/Φp7_H\r3+ X2c2sV$43k)42Q7߆~gJ\ |5Zc/ahzA c`aâהEkn9fZ@j8dAAqᗓՆRu<[ /;H2Љթ x{3i,4Y@ "WhEY_Ҁn5gѼk@@sIKW6mHk]w;`446Q3Ul4' o ɮ:l\UYB q+ `H`ӹ9G `)" J_ە !v\v2g^.T[dv-r Zo!f^2]xwWHJN`l ^1 P7)]Gtd NE^D7e1-hgR ,|d<vrf!d(̈<#i&-iV7 ;ha# q:zǍ]0 [2NH?@.n1"W %rM1 Vw&CbHsQ ~{Na&v:_tf.XLnsBhChhQW2l SOKz L¤aڣSvAE]Spg?ΠM#OKK$)",POKgJOfq)oyHHV&w rZ"k+[TUA'HQ$FTqԼJzu/Ãd3h(&!Z(.1J~1޳]PxA ;ew0!ފۨ-g`4`ĊZ޷8W܈΀#v@٠2kb}}kz&TEDRL4#5ldQ{8§k JWRwm~RSBBzǀ{E BIqʟ}sʪ.D?G>BlMC |E<:zy=ecN2"LoB\LlUi,qhȶ❦eJ.[m2(z@ZŢϤ]\nhL7t5,8 &*8^f݇s| htO0&%P1hȴXߜ/ԸL5:ݝ-eߢE\=[-!dMY/`eL k:?ѽ#5]/'@|l>Yrf>X>(e>ű&-;h$.A\u"PO)&G] CPQ&|zal[qkFJm/'93J3*ESnZ 0_<+ZNEs ]Hǀ Ld,vID>0Ti.Jj<+"/)rҖp| -2A00YcZo/zkx kH)$C53̘RLSy1OC&Hʌ!b%J qld A̵ 7{*Qc|@rӫ1*e$rT_ K5‰iCxhŴ>Hw;4c^!= !"hB2P,;y%EFir.LNH!(>ċW9pUsm -$쳟 T,p*>9K\Q=IrQ͈$d|7mYledtezc[tދQed{y? ~vWZJWD* \{B`FO}S֒WgY"לM[AQ: ѯ^>XX d->k@hUo싴< 4I/[z<案 C6|6x6rtoPL1l& pS=&+W4@Q |T C#aak5eL:MubIi&b]y6baA\݊+#nTy=p+)0Zl"H*U{xSpvXt8sK\}NҢʶB~>a_;'Rl(1YPIAIX7L* H칭1~2 &㚟*WCwjB^xd:zŕ7ݹl 2 4>LG C C4Nao8!e3"ia_K&05P@ *]bMPQxq7N rr&<) Eh04Kj ()Pd9Ƴ:%T2 1%?N$`֠04b\.R;p)Tb*+i( !lyK .Y fT1ߤ61U5 H.9MըzTO P?P]uy"aԻ?f^QsĒz}z$7"2+H'N rÉQ1Ӗ kw^T\/z_ѝFv& { 4 ]Z= zΎ`R3GvosHŬNUlâcB 4p0kCoɰ#^F/`XA_Uλj#U cHdQ7ͅQ9Av![?gkQ|b'jR[P[2^8p4N%'69CI[ cpBzvQX "BV@88^E`RGy$HLGap4Ya( ]Jza"] &*R 'FB9gL1I>5YڮB+5,lo[D1`;Ti MJGYsXٜ}31)St\U2'pv>v.G(dSnn1FsKTqZ}PF* IzH3} ]a&)"h6"՚a`{s4d85>7șM#3>r1 g1x$gD!3>Жa"-UT i9Џ#@2Eq9>?*˅9m!qlSx@2|+l"+w`tҸquEFq-+4B3)ac&\F#%*@Z-pkC4ń.Af;'FU_d4C%(GҊ|/*lB(B&UL7+0$lm0P!#TѱN@=7gK".t?L} U3Fۊ}BD# M zv^D" 5RNhB O4'xMaެ+mA2'K "EWt ڬc|d䄴2)K=q|dFh jCVXy[[bM^ @3 gTCk)\ƈQFyqXCڅ=0ةSk[@)34=G JO!ւlK@WGRB{L~c!My5eȖ'wA/a@;qc5-f [KIO6&fИ:t4U8(1^MR@MHT' |a|(8Q*(-սJub(ۧ J K:ɋxL[2Dȗ$@Ń۪VP/gֹT'5-I(z-$r7`r2ޢ"UEjo16w' @il^ucˆ-mII[lܴ$ UK:U| R5^D$u6I!#~F1YܩgJ/?=kRZW0R&RwP8Ja|'l)&E-B d^-yp50U30mHq>Z'H8U7S x$CLy\#Q1)լWg@^x|>;l#M̾4v0 f)*'0C 8^r"Jy.͐À0@MJ `& G%!Y׸9|Ȁ3KKDP"J,of :uݯJ4f#7KᔈoI3+uRA:Z h=M;r~.ځ I:jTk3=cPؙ_KCiQzgʥxSJ6)#kFϡZTT Ә-(9sa(CCz.;5<{=0&ǂp'a be@%ҀzkYhX$ FHl褐FG`;f`T,?y1',r9 +A%my4#=&⻮; Ī"ywT %DlTj 4U>hiKш ;ݔ cyе8Im5="QL[ka8=<)~dɇt Rxlme/3݉S -0lI#,*NHQKuRaM)^L쇢 kQYh Jd 6}gnCU#ܾ#3)8l{ H\2TUj- NKaR 43 g]SJs½&x29a$FoAic"*FH^:#cc'"NäڈtVp! QÓ3VC#q^FDŽL!ynamWyjG& =xYJ ]8+,\ S4;t-h-]"ix!Α bE-} 'wǩnn6iͬ'K#銞)%xX"vN֢mVIiyAdӴ0q/po8"L+n  J "7v\ӺZ>"bYd"xi?H=ާ3xY~N KEm S튇g ~q_W}h{ MTBJh4l  8T4$ ml:];H.Co/Zg|T+] 4K$DU!kIQ]UH=8n_-#M CPL[o2M?ތ&Ha} dP"'] h И F*UʆnFTש!L9F$#bCTP9!9dzL,Ńm}dP96;(@.)m;JAQӐM!AcB7A_(ڧ716$c!jCܰa;%H. iEBOac0ѽ _ Zk,E.ئYV/ζf-V4 !`jيCvbG $:bq#|*ctv?o۪Z<?0|BlQ_<;{s h!w ܬJb45ˆ8ߡT`j_ċ+{q[yJ3B-3mG8D6Ոҗ5XuW|wHTzY#1]"DJc ER v.:4ى.X:O8:2!3 GqW˵RK8I"O~l a%}4EPRn0ЮQ Rx}HQd΂я20Uylʚ Nj5L$*JwМ;T?떂'Lהs&Nj?; 1-n j淟Ɣ\x>^p JUw-X =v mZ}d3"%#2: 7jlK"fFo#4E2@pɊP2*6JF6VR ov9#vy1rtn1cXD)"DŽ" e7k<݂[Kj3D(H4ߞО.Ε8&")-#C~"0C]пBXYYA\^5hBo!F@Dž7K:~E[pq,$/H||I #:;npV&(m^!}s0n˴bw{7D@Fs< 6pFNǑInSXd~;9$f4RX|NTݲHa٦^&ݪ G?!h7s6W sW*[Sތ'Y#NS4R20@/+4RSxZĥ|[#xx AϴvCRC"_dxF2aTWI7b൙;ú1ʹ~W K-<89uE_/UcQ$ܟ#4Tv,Xe˸Q&MC#Qj,fcvM{&O#CpdL|<d15SwB153ā0=fh_ž+؆"P'j > * N%O>sq<9W88+jPx}Lg+0ok|mm&r;f dp8yF6j-f(+(vY$P؜`Ɠ z+D* hj["0$3P& ~D {GDFx*{})ܧ7KyBAκTuqyp5;U4X`";Iiյh*|XB }p. 8E))V@C{lL ÿ^TM2$%\U$:7'TbhX-1TaHE) 1t S8Oz&۲> xJwyc''R66z y[j&NZS|!9nC6WI 0iV KরJm)ZPK0cTa)VSgkJ]. (cqӥRR&(NDt4au,%=  t+Y8?Z$0(Ա!Pa#}LDiTIfq\U`D"E2vg' m=h GDoqĤn: 2rw`GR&ͦ # & #J% (a^CtBS6&#C;a-zb(pns?듑  ,Eʹu 8CZZ!om71h 91zxbx,RZJkXK?z!5ԥ^ojHUq2F*LWWt0z 村= غHPEh^#zo :\WCo^Ms@Ur.{T&Hjͫ kB| wV>2hɺ $sv +H(MI)T}r⍳ [&&uPAgL| qH>t![C ncDQ1y13?*)KX_z|)!-1e22FB luHYqCiO椿EĶbUS=hG mФg"tfy1i&@Bd'}n6q  b5%%uˬݏ'++߮1x|޳("=-TNra$]5LZPG4( |֥@]imڜsb.VPk1VOMP_ؾzFBAB,'+hnlG6]ҳ`!Duopb&f^<I &7mV**{FZ0tyC XP(efY݅=m]B<)K3p 86V'@֗ɹ7I"YM¥zXE~RFлYL7MĔ4'Yf1V|#%!<2Y 6Z8lGR9^,HD}ƒař!z5 ̘yM=Ψq1D֊ﶡ1,$JAghO爌<+m5MY?dӘWV>W74fhКowwWIX7A A28]=fT6BH2ÐG3 FzA6B CIC83tGoSc 񁒘Wt児uJfoyǂ=EsQpXTRlp3DtB Q[3کZ"m߀^?Ҁ'ɠK_:G$s3OJ#*!ڹTL(鑚m½>:جtWXM~|H-1dU0-߇Ay[{v.b/H+e^}0Y}ᚭx/lKw&`/>kp4zs*)(V;Gy6 gr|dʭIGuYTbߒ%7: +YIK$^(!(iЀp9 ϊ:!(ܮlYprM+ߨSm nOuC'F&缟8KB! t@h3=OT& VWX:;3 RɌBo;)-+Sm4.<C@"D[סHɚj†ܐ_I&\|nR2+=`ãlS$CCCj[,iVDV :䴲-[4⬷Ⱥ&FwD~5GKGL*>Dg#}(RsV+~"B6~BR48?+6R?3yfvVvO#@lH V@f&vB Ow3 ;8+ 4 vDfPrQViz}LDП"I 4d>JΞeRY""pTΏ<^;*&6UѲeU VK  PF8IsVl3 yaP5py%E;Rsi~D[JGx BI3$[.D UL]$?kYI얼;KN[k4 D B-gGG|4/I(痠r*Y=@Ȼ9^#ip/Z_3 $|;bCLJOSu>cO JM@ʹ1Cfi6uh'|1Sngζ2:Ȥ3h1Q(8)CDEƌN@zٹ'XVfh14Qn @y%10`Pb_lQ, }_ kS7mPX6Dwnc̕vP3V ڣ Z0fP Rk Й*p#ɎX!F!hYNj"6`kWbdu1Q?՜U5aS|4F5muי2"+n/Z^XYscEܛP?`KbΨBʪ.c~.HݡB9)'X;Q)͎i ƍԍs,HP/#p巾̀nU&"e]C)zL'd;k*+E}}q` "Nn0F W$j%bǑC; cґw^$,M+~Sjnci%p!'5}_W"J @MA iI0`$.I[DPIz[aObI9ki26,cMVxBe /;v2]eE+*!f$+ B04[Y= x{0 o o̪ziϙv%Q(N_mH!aNmc2LYčQftV [41%'7=^I $$$*m!"Y~[eayƑW ^xi y<++\0lFdPBܺXwRj&/ :=FZSQi(B,\O/"(jbut5hfZa^s_,y8cy-'ލݠ0j @aOHY.Љ;=cCi&(‹U1CK4;k!DQ"WLt,dAY\~q ȔLQHFi_lZei$^Ҟo0ԫ 8* 1@wP"1\m,.b!Ab91$"Dn&z 1KsD-EO\x] Dj$JVkF!ҦFJϕgoy3tFnκ蠔th|zLjUcѹD-m*CF߶6PɥZK5ZC5 4nTce,D\Ya)$Rf[ˤq~LBݩJ'ָ}>v SҺi@}|Zc"^n }r!=g T[fAf.lhoXEXm1*d)*T -F@H/]t.%=&S&B=J}װXS^TZ<r`w F(rfCB |j5`, t5ά%W[m* ?Fv@@/Я~poq9Нf0DCb9?FQO)pn#Os/7{‘^22<5u,{f5Nf@=< |DQ4. q#$-3/}WhBF$433d 4g2!Q^6\I/#^D-q$m\kr4"37ZnTT%H8GmZK@G1ۇ\,撜tE 2_ E&͐K1HU_-ۥOZŘ0ˤI6|t=87;>`?cȀSBq|J#N}.2[|=&@#ڎ$ 8OkCi߷ ܕ)|ʜqE2zLlġZ$s8\s7[N+48i[`)}yJIcB5@trŀ̭VjBY3fl]̣Ka*A%h9%7;_aZ{D^M#Q޸Vbټ/B#(ͦ k:+5*Uk/ЄpJZkYhA,<s0c>ufZ˙{p;B mL-pzi+Dwmkf e11Q,t,J2@kTrФo( bql ni\~vh\FxeJ[Q0k< kǥ"ɫqD*A_p%U5*&r =8I*@S@6Ux[p+K~%LzsO T*TJ*&Q a|C'w$c 1FfJȇ{/' %`ov'@hz"/e&b-!!|cA]$ks[nS- z'W|^ɧ! I#d#:HR/ =>u(Ք,BGVRt2V l1m݊Af: H%-GnC  x{!95AY-t ó-! rRFqdWA }^fLiΘAߺmx4:VFBqzNF d=dz.?RI!hKB%}GHŹYf`%-T H ޛв^UR.8Ć¢#Ŷ TPίa䒕 =9i/񒢁d0v侥Mp'j|PX$@χ4M ZB YZ9ۖ.N@ {cl>q`Cl{L;\lrF.qnS PCU>- -\0AGCJMre~I,"&\dfC;&) F_߹"y>5sk{oh,ڏ)ԇpr8,9 Ԕa?Q^AcSϘ.4I~wD=PNі;1MבBa8S߁g؝;t='Z@Cb 87)r{`|Ū8Ep pBMC)L Aqa, e}ߙz2 ;7+11u$kN5 w5J#N Mqyo+3wW[Lc:e:Á$ó#{ K46pj u@\h')7"K]9Ӛz\fx [t\NC!s(%M}/S(H]t) LpœuLJpd9~I&TVL!BKVS([ PoyT(9t%A273<$(]''\t4c)U3> Tl:H g t0:YU.rƥߓ/y_XISxœ@_݇${uJQ/¡ ,Xy̍mbuPRE>Bfd0m(HU~bDTkm ]tL` ePRVbU$=B`=6cQKaY"Ä AP@ c%!`P DϲdS$Ph(H6o* '[uR` V?A5bpP53 <M3z ΁ߧjQ = R7*6K; htkᚙEB-Z\[5m݇N=9E0ԟpPm\'Ti,&moH: 8n}&Teq Y(Q~ cRV VcaP偨wE)"_[AԄ|e J\pۃCZ5t5Q(v?43<g]kX8Ri8جX19prDl~D]Q| ">GNoz7.(A$-qԫqle2A -M#S+|KS;⠠7"eu~A/LdFYPbJ+ }|_d9tФ!OZ(TcA.0rq\m %TrE Tbh9%ig\|`*0# =iJ5}O+ԥDҌ33d%z8^ ϕA,.PHęMJ0H[MnTuX>.XM٩*/)Dž t-Aq*x>TP1=zC,Nb;`ĕ#-5Z&R_fFb njNmjg$5!(è}#Rg 4`($ %j^N$IQ}r֋˧uwZ ƚs{%LTʲIn)8avc: l1 =LB w, H56CR8dr\ςL k. yC$e !y U4*~+ >bsѺX[qOEby] f})9;ؼ|l@)[)"fR>ʪ5(rPoa[œz“'Q,==dg:m{fM\ e7Ƥ=ZbU8";HPn 1ܐ K؅: Â"J#x/ K9Bl<|: @rU%S)wư6\ :,N .CٌP_o3gƲ"E#jH"9<;FrhI` Hj]jb:@آPtR䈀~vD ;9JND8h@b d$D =h@?,YeܜD٩LJ&FgGHata]d^%هVbᆆs8K(}B_)>X#9$u3AC&wR&X§sVd Zخ2jZ#1*I `U,Be=ٓ7Ob[,L!x+?3 SGļ/ou ~Bg 3* ؚ_IHX28^- Pű4mS4xGQb9:6"/%n&rnPPd{4zU\bIO`Sѵ-B JMcFƝ/d5 PQ>i'$9SN^g _%KV'f%n8f&GNd d i|-0-J6ˈW#yGJQc wM4j[%*$϶'ֈZ:FF'ӦqD";MPaFlD13$[* LnYc#O%TI6 ̫',5&ѽI!'2|(evW9C51*:%!sJ9+Bx((1!b@/2 R ' 2T1 B#;el=@㸪Ѐ9]¸cvE8'Y[2il҄**rR/b1X3NAռ(PdOR.VcQ`YVԹ[ibuw.g_Two X Mq FZPZlFT* Gs1'SP,Qzk-W R<%dʹwg0XsxU*kdI9O&%c[QVA`fS ΕGUmS :o+Sr|Pgh4C@槑!4=&,7xF@D :ǰD??mh= ðtBg/b=BHyeC2)lܿ51KsYu&: بNZ!VAYZ&M(.FfV,mi-6?ܻX)h% { Ѐ5]["8lzPa4`/5, `!F,2.LuP7u D-{±*'* I7iͥA+XИeR`c H^Pl}N > "&@%~aU:$ިнj35a\mN#*yϡ*y jG4pL>ADIC*b}Ey[v Y2*|-隄fl΢4F-\酺b&ɖSe3S'k٬{.I8jݮl$0&V\"L^yȬ}qdF,-4|/nH~ 莀 N2\Yu2Kc*`x$bFB׵X=0옄c@.ơN.k_ nf PEV6R(+ĞbdGɉ6 C*aFi9 3R( Pw$]Ɋ4˿40>`_bnگW$VEEl^"?QFS)xgAzsa3떾m t-,&{sc_.&xlu'}Y*0@>WrlGLz pH t9#v=!# <@Q<}kS+mh8>5:`AȘ09<'t9mZ4xB\C WNu,hrz@J'`^+jdZk;D󕊭(ib\/G8S;]p O _̆bԽH\\M zQUW$ } oH^PY\َ$e'"nr)E}dмL`ئ"J laLJ[@t>.2ӏe&g6u5;F(>jfqJ Ŗx18II=X0yIj43!U*"9n:!L%AF`Oo[ ]KJY6=0/ =|~w]TJT.HB+ڕOr.R;%1p:ؖ?zsSit EܐnFPzp,o^۷YLAAO(]O_[#u |#mD lm+>]UTb\q0 :%9i(ky k94)aUfZQܑo tF@jû$Bxd,0yл=G\#zqtOiɕ9͑6"֚q,͊_40}-fê"xC)V!hG%Du(CH { ;&Y;+y۸-䈷9({&)'x!‚&d j%H~4g'>woV;$;5P}t=&3sU3|"FAYS6UDbs7 Z2M ⏟~H G-zϏ)$_8JSnqY$qs\Hh |s[?x9L=;8(֘ȉT^H Qp.M` ^O ؀fEg7xC~1Մ /3YeM\EUÈ"OQpy 3nJMx@1+08ƫA> O·ĭ@=#v(o t3Υ}\K_~Ym/]~bu9x&v&C5u IbΊfvvDy \b$1Z/ҔP ac$i0̩댰 S^YZy]Ln Z# z0'8yw7F A򆳢GCh ؈#p<Ao%`l&L*w/h7zkSdr μq(P).$  p` Jin=_дXn [7Î̯X$fQyϫwqp#\{qSXW8[[x |Xg'XŴ䏛 m8|yblBne,9WeO+^o *..l͌^Q$1A&By:푔#wiJT"Z*hJwZ&,#XEE t(G' Dı7{ OJr@M-r5xzM!ð I^@& $ J@2fŅP plD87.:M_())r 7~EzkcP%%1^ x&B\HdGpEB bXUD3yj ~[8.D_kܡMgU[&f;3;ea Z+?A,$ez߈t:%]#t ot L. o3txFpUìv5hYZm|D+*Qp)/dv UT{%*lwÎtrpg4_U3Q/ JȠQ`7hmōk衱协c\13748ᨏus5 (qM.*mXc^elD{U;.2 s+ U_ keW'C[8U| 6_,dѨ"p_?'B+Z#VJ*Q2E/bt$/@t+x)k; kyC%j:P?ytdLcRx_2*-Zkj̚MQ NZoލ%u:'!_H͇g"IU| Ynz4D>]t0WR~aTy,$mIJZkȇmw&pgQGi6ܱ؎qRI) /I,iVFNASΡٿrPZb"u(*)92\䬱o c ahzA:*-XCǿJ ~jYSy3<:cwZzxߊ绲5]AŠf)@-44"vvoSiҡHx;޷O:24pظ7~Mj:֮f$sµ_ BӤR+ڊҜk8%!J嫠VY^#GՍrfLD?tБ* QRLeOXX@TWL /!!$'-4ѓA-j[2迡G#eFRsvNYGdJueܣr(f9Fٗ.VWaa˂)xa.؉5X`ck0ql\ oJ [>ޡ}md^pW o9ӹE{OrPWлη˹;[c>һ hqr*C w,v4EXdaj 6zme܃$~7KrݎekL~صS^i&Rg"ۛʛ.]n*xH>nCd]6`ةfݐ2*vښ*w,{ܰN@ܪ鯹uh3B"ܦKx@Q{e+WڝҮZ8WIRҲ:ҳ@J-THi6дAAj49)bmAd)Hsg7B{s:6A!>Ih,;M*CokffPzðJۀ1A?|0 $>9udd Z1ͦpɕkMbhO4ry6֪SE  _4{gLwahbks= M3@&cVEH<Õ`"%?}P,QK!Q+le9h^/`MeVZ.wP&AySP^ʒi\zI 8'|! wҊBAh { V鲒kU0PSW J6r-ZL {|.Uȷ_9NVLw`u-)5[pud6Ls fQ# f*X~A syM +W~<<,3*Bog*q38qv8i,i Bm&9I? 6sH=e4D<<ܓHHq0C?S1 ɯ^WVLښDʢidO4}؟mYΚy^yc6iftJYY$ҩ.w (z&sÙ>ðfw{0[㴚5}Ұx8UǦpI-r18t :06>('K\O!У;h-8oy eb,+KLhYN:d6Ĩ!VF望*. < xނ}5Vj|96ɣΊG2$ZI&ZbyO_ÉG\yfY3\ {")B8,[{`3l !oVcf#T8Q.VC! ƒ[k}0o@x0`xPsoF@̩iPg5TOfBabJf4&hhd3S e2]K)N#Ũi#c|xSR ,l(Yi jbz#G" " 1QE1ѨnHЯ]8Tп 9 >϶Y3ePt:,HE3.p&[iS^dBE8FP<-rGchQ-TRU.ڏ^ BKkFrU$ .Tyf{{(2Yaڽw>hFѱZNk(DZ~7³lbÄ0` FAk"3,20ì@"9pj0IJs0^p2t D*v SQ+o27w,l5ᆹo14 6QQ؋s" ;%m7nb 9Ey_A?mبWAB" z;Dr0&o>'e hP}܃xΰp<.q 8b;!prUg7 אn0I=HhHqH4A*(sr}Q6_WjdXK~i-*0]"<˨/fhjă.&c}ʳ%f*iRW$l׻u*\MdgA1멲 a1LdTCH+[}k%`XPD9! u?'y )󸪆 P0vN‡@M8([蕳sܪ(Ic)/oZ^g1`Ɵ͆, Na,R@{`13E7gtkD٬6ǏQ&v &La|%ĭf[`7i2Z868Q72ڂFG7vs-@\~Aj-j C'BbT_˕ud>.b$ʯ1#qx7P#FȺ#W,hC&"ϭ ! D@h 6`8XtD>@'srPg{h8p1$`J 왺N:HnqMxAei-o; 7SAUbҒ"!e3yVP7!HqȲ"DN sò"?J5pI|DCЮ|`m*+)/rύ7{1TPE9#eY#2:rQ m8ud볠,0٫Hap(Or/zېp`~1l .c6C"͈1&$aÄNs#ޒ/6mNY(۸@A:JEkkbô\7T7B8"o/îcJpŠ(ZƝDprHu3ċ-7hI  2v&E( @"H4Ebv )=IMnޣ&}@D{ϲefjKOim|<'XQSk-ypbiwHD c`ǐDaS#6cǵfT;2X|䛍$n_dgqrAh%{BEeBLㅂ:]$Cq)*L<بcVچ Ax qP!—FԴ#a=0;v.ədB/C(|?z@o|1^fLǖ^ 7lp5Z4%сklL+E\.Raj7I6k-,} b1Jٿ5xc&FϮԜ}+:q7X#ҝkNKG|KJliKz ax`1f04ȱ阉@gB^.˄Hے E. T՘Pኋň"eCXcS}bYRD؎ylYaJ ln d Bޓd=h]}%k>r0f/o35&9y1ָAc@0{I-Pq^<@-*\.L9RCJ'x{y_z&c==4ʜ0|o3%A,jifa,[ݸ"W6Qݠb0DjՕ(K5_S˸vS"'a&xjMTP| (ƋnPlZͯUN}^l.\TqCA[МT9׃QY$Gqs_[@"5k#߮_YF׷讅H0n:.Ja Kԁ00GLDlHߧTF$k;Be&c?ng$@5+o=&}v0_,g Ev$ E z)UVU Hl>PNR<?39=\ V38H3tiz̒o=b[b8۰ě?Ȅ9،Z(-=N&~1!ma*ںgé%21ĒI,mHТ-p>B`!"YsԶJqsŤ|ׄty ƁyxN n2t. (<,G sQ:Tl_%  ھ3qS4ucQVz`G4yVCuy?pmR$$eHt}W Ϻe8]Ãit?)Q_xiVPt|+i2KǮ!@hRDm{U[SQ^NL9cSl>NpP2 ĔPrI?h 8L!Ľ"0nN7|>\yy.TCXn! n+L:UET@cU%>"Dj6Yܛ9nLE S ~[RAPHe<2pF0ϱ !qAXO3cFї4uKd4e%\ɫޡY)#ءwR.ao>]EQvNJKI }hw`4\r${i8~{B -8D}M0ߞemMGKaqI S"|wJ|!6`IOE c>APElLu@ x.x!w4&R`>Z|4,[r8Vp"! ֐R @PRbc;iF|S_%0j+\i,۸O3 rq8k0F0j0,cOhpg, 'U ;]Wr5yaA9ց_e ހީH8Y=e1"-}=qu+A8J(ae p`']Eyug|=|t:j|D~Gө( w~UtDȯ-ŗ>Id0P6<6 {v8XQ"cX[ NON͢W53sJcGE@9[a/48*qL~(!g'=nz󑿀Udw%4Gr\_B:<4c`s9Eկ Ci4-Ӊ]8}ϯ?S^A `Z|E7S/qzG(3 ؆^IZ ^u|Sf&TX Dm(D'>q!@ 7*ڗI|VoהsC~~*YulYC&NX@T\{b7'tl]S{͙ uǮ48 \]ڠl{ e@nE+Wi#mzj5{$G4xI;NӺ]l;⤐i:GōF^he(G`(mDA#~ "Fvm.-:frl{59( ʇ)>M j0 Hnnx :5Kq}]qȋcƀS5J4 "@y} 'kEs3Z{ 6yJڇX r/"=`^*جļdܖG&3!ٱۺ B½rVPZ\2O"ј<ԁZ'DFfm`42r՛j?0wS ے9,CaxUc:*w% ސ$Y58#Hg ,CB &$.?b):EUѳ36]$QťnKRBdVE  ՑW$v0At NzJ ً  ^ Y 'C6@V;0cJ e~&κ`x$gѰY'ڐ \YݽN'^P9$d !; kCX˄_~O= "]So]'ңaPt (π&O`)cy^xS#U*31#),j.tJQC[28mULQֲ݈нZP׷^^ y2N+EJx`'DZy1R@,SW0tww7.BO.PNޓfHHw^%H}!cXVعO4-/ :jq-ut r:#L$U WFPC""/$- _X֞8Hn+SMm7rʎHim~{QiHAZGԴעzS(Z5:#04ed4*<'ңAvtd8< ~seS*qΝ.,[g>T k7iyp/nr]|($Ad&c-Kg$=]r* +'4f `*[rg!$x/D. bt }VC}pv5ifs$6pDJeCstLH%7gGl(֌-T~| m'"Yhg"srdyDJD;Q`cipdufҥթطP(jV.GK R@)OAKG~[ 5mijMNgB@sK[C MT0_2/]F@5AFJB5)SVك< h/TKW9?f- qO*8wOӹ<0Y.$S]1KهՈ2A}b"+EM"! `(lFH+K%2LH)l˅#GR'1[lG lECK2Sp?Zjp9f-*ps\\i j Ϳ,YB*e@Zm5v*R%OԌ`T' &Ჶ1%4<~ߋ*f`| w7{6e81V}+,?r^ XmʇE 1XSf$;#{Gz{+].kѭEIt푝Y w0%e%W%r)80;r5CTMPT; H f < 9i+f/цp ^:60SqD0>Db%,Q\⾲H ΐS;<"gTֻ6iǡb7LxHAA0 4 i`&3_vf~p6. ;Ra}P}O^vAdҫ{Ixԕ=AJ!Ÿ?^PH몓>#4?\GƙYRcl_cB = 4!_P>=`]3D\3zj甌|xAVX% gy  '>\/lT`!LQ9_3?\+D^iaAP2P !d=H!C o,eնAl->[3Tb ?|\ęonvD%bUM[%FjIH>cFmeŃn:vOi)̲іZ{5ꯞS ^ T%)@)liYxЅ=z3IgR)1.Hf]0]v-U-˭d}bUshq;֊B_xdW(LM rh_~4G؂>d gRAlHt|p)@. b !W$^fVq 5 *I!spM ݒ +LKVJRDd- U}_!&jo2{u鉵Ǎ*WhT~ؒ;WwBY #kZJB $#2E kU=<뾟bg(#3MBlQo7}ax?Oi}ؙo9y}"=MDv#}boy v7/%#rqF TH/k DڨE!99:UcHbأ@`D >e+Pvp>VJ1r7YJf ZHbG!X0@  (RD>] M:Dv _dH8xLM+؈<6;mg66<*8卛3L;ŲC'?6 kKK dh1ț񦢖F!Z0\a1[wjt\L$i w7*@}@=.2ENTU^:&(eA+\DVͷXъ{$ A*l( $5Y1uf]Iw4uן)$/"l[)O3(sP1"sp Q*F-+sN*##6`n3!I8, #J%(qHga H^aY(haYެNeo nSa jvOivlHkQK6 厭 [=хJDRaO&& s*㌷"-lʶx+݆oװ8U<҂[-%UC/,Cb7&^-sU6?#&ѩ٤cdd|9O-YC[6 {|brBUh7g; A] Հ̳Ϟ*LQ,V#kA χTOlbm橁'ܢN#c!hO#"9zXW#TO{sf%*1kAR/F8MI:"S˲`LhtZ[d1 FEeB{E]*hAŝ󻅤B?|ua@0"Ԣݝ)˖ n "DiueN;{=3Ud2ԶHY]}]Ci~_$/.Fs=# wM Y N܁ݜ|3QO%Bjg#|߬FX85% cmnHa63ŔA/G_kSyI)v p tQ'v'!PSuM"?[-? zcH 5Cl Ћ혓:K3 0\S6+LG8(*ԅݧ dv/ B4$AWFw;0CL7pN s(~? 8 JqxZJ)m//a`wi4,XQM2ç3%ebv͂Z V)&<ؓE( ( $`Tg@*\QBSBŌ$9KW@ !yYG}dݹdk thT4G2TS;TR` lJą~bY+hcG*:ltQg5Y&"8ڔr_!mYHkCu;ߛАó0n7W{cN#R,]cPc2PCAU&B^pCg͜3JHI"E+Qd XL Yׅ!X\k,")X\`nG,gF͔dt۬AL pTLh Dz)& =gJbAp_\*#{H`ws#*G cve@9<қ6{uK0 xn[RikwIˇ2(8 '*4_ÐHMZ1%|`O)NL6PP$9>ڐ 7x ~ϝč ̐"K*]b更Džqb9DX-{aHdKͬ er&9MK5K)[eqyLj1}cPU Y B3i3I5h4`aŤ1,G] d@|XWnTX1&>2K⽹:x2L_7-,@#QRQy>hA5hh ^HCaY\*J iK` ec7칤!oV,Őᆮҧ,[;cмe|r;w&d IgϾzޑl. x~&?$Vh$Ii ^*-3 1MRLI޼^" Ȑ`!D SBJ:(Up,rvJ)X4 /C`&Bj0 YJA(\Z h=tkS0y3j7/_Q4ޘkɩVd (.k0CtT$ h+L4JdBT&yJbauO yp!1NJ"LeI JG;i( ^n=$ 0cŌ1͡ Q{t\w$nɹ3jm j(.5Gf8~IoTrv[^X' !BL)aW ϲ1ɈK{:ibDy&|a9Tzؑ4s\aK2]ltg,T9-Pn"^Hz$~)B=Wڞ_uhZeIՌd#z-4Y}2'+& ]Dx4JbVpkqDs\ o @r 6H ,É!fr1+,Fֱ>R2LSMh+U)XLTDID[*2ۜ'0GCj3oBr2l ᨂ!q*WgqG),/ *P i-&-B!wc`2zD0A"TGue">Ց[ǒ=\j#?߄Ytg}rdhm"JG,tx~NEqj}GzRb,U* e>YIeS7S ګQz8u2ElNYdvG̏ʱH4'l~VQNZbH/WmR8!Z7ዴЧCk) g\Ljʽ`hp`}$'МhT'@PP8Z䋭5vDs6֞ѸX,U$&3A X' LC`s]R)Nsbk$x-;NDg_uOd?SV V$*UxrHѓY:2/I.njXvlY: GЫHl*}@e kC݄w SݑKBHWWRI.~+2=BfsHj5b{% Z@59*$ߢ[^*Dg*!1Kq. 7JУ=A&-Ao!UdGwñc(#7l$ qT8'۟%-i7^D%E=i&<<4K0Ard~/-haBAJSHBU݊UhHB4[t&$!0LH\#TYUưg:tv?&H/ >Yk/Λ\>k>L; h%F0 BDyfb'%lz@Tv ou&ITE]93@Xytۑ#pFFʣ@+xoGs@6SMy6r(33GڏAii08PYuɝ^ 2eJ<ř RcbK6>8룣tsM>yH"R}EWCtZf8WZ=$DJ EHbz:|;RЀVX]hᙅ Ӷ4f0a&MG Q&k.YLə+= H$;#IPFT궧#l:YG~yWʄ&9> Jm#b viËNHe@Dt 63ǭR1yk[rFFf]s?A^~ [3 m~ {AW/kolcl&B0k&t]ɴ~s%S1oL2f!Ԡ"C0Y+ &nљQ?@>VK&xXm, >a3TbAтbH.',+0Ί_3Bg|N|ҨDb &n5*> @y<#o!>~lɂP/,FPeUq+[^ oKz W!r.T$;6%?SzC|, }V6}N:>D[h0fhJT + ɨV$b:F- DWingdings MSnLL|~Ԗ0Ԗ0DSymbolgs MSnLL|~Ԗ0Ԗ@Dcmsy10gs MSnLL|~Ԗ0Ԗ"NNM LPT^҂cmsy10Regular1.1/12-Nov-94 cmsy10BSGPx=G\,`WhKw~sq|h{f&`[ h%N#sym kT3S* nEvIl#\@q֧`+/\VB4W8/"0$ %9S_FTLkTYܔe5K4yڎ6Sr VK;|nhD^9WIbvqf"MПd*?f fow_/`2 g5KKy{}v`' 7l('"< ƺ\|66_]5wn(YlAީ mLSoW")8ABCh(.p:|*`".#*7XKxFAFMWlk!f d9Ky?9|̀EJHTҙi!Mp|l"H_;D_9!{ЧyC@L@9 }kV]J̘87hrC%P.=r=(' x셶\OV kFLGmm^8ۆtzvYh o vEE TV5sZyv:نFLXń, Ib\,^6fPYn~uVeo+k =q$j ( ў*W~2* H|`v9.a;@K:Qt (Mɥh6hN $YdRH:+I&,DV@?ߘ-ϖݡHYyBH<wOZ /,PT|bx8涳*Ab4썽M>W[˓orƴvPu !:D*ibSl~6 "YM]H0f x HnUV'0,#ms@CKy1nNQ$̸*zzP4o !L@,5[@'9rd|@RpD1V cTV'վ;l@>5?`4Q@zCr{BWu2A>g4۪M˧yN?^LWXyETLd[ ȫ LcQ DZV֙t~/]0rJi04txnV5ZƋN: 2A=xkx1 HQn_k<Z#d<'' @tTcRHB} Ma1+јh E L 2(FqscTA`>_2onhL2j|/V߹kSmP !5E !б';zb(*-u֜{FA mM1 B>sz܀ZĜ*:I-jQL^6jd2v/L3Ps\6*)3)ϔ5)&7 J񒲚RjuFcQ>h4+Ɓ+\+jSǒ 3C$ϱ.>3!H.Fd5֗E@GVct]pZRؕz:'qיӯu)@۞fRp\_S@{Ħ0R 7YRص$ѣa\PLM)1?~S݌7XgHN/xy?u]cL @*ۦց ,FXn w7KT KHH }`J"h%pOlӔ_"8MWl(q@v d}WĈ@[B aGQ1H6&QqRD@E 4! PF]d4ȈFSbؽb0&u)гqT(/z q|-v-=15y字SXcaQRBI@j ;eog]{cE MYc(LX!UZ[~L {[- gL%B܉ٕ'>azpO+#ލu,(ܔ@`;!E{HAĽWdcc R|LryOԍ-0.(d@[>ف i8 u[GL$mő~8* 3 )1I鈉Ǭp.X\7'BEgpT5Ɯ1 =R>d. cjV8S<3Aξ'/[/Np`kzd2[ BhX)E|lһi] G>rf" 2 MO!J*Mqv Xz91r I}ɤ[ص?!FRcqmУ;^`FOBI0I8AF&`HuIj Hʥqr-z1M5&;â}ޅ5cq uJ * n0 k 9ۯ8E*+XE/!-6\I*Jqev!`Rt/ rI! V=i_,j墇G-G'x@!D0'fQaCJ=*0A|OUL|o.Ġfj3dq{]f07>UCɈk@8Tl $Ťf=s(L|HjO&,JyH$ʏśjRD%s2 f(\:ҍuyr-"p|:PwCȞ ϑ%a~n_gGĠ?3B ܪq!} & PP䘢ro(V^"BSۡ!z! 2V0uxP=W K d36\تA68(]B:tPo.N + AcQ|{(PrW,2x<.4STtbȯu_\\Z>R-Ϊ K%[å#"m$P7\oK|EBUKp(!EC#se#e1©ox %ͺÚjk\0%٬8ٰ+[JAL% "HM"z+x5k)q>[(4fht~ #HY!?&JirnĘ!fFwDH86MyAlBW@#ED!I`o˝;:`B-uwp2>S4͉6<,j?Nd:(jʳ+&IC<#`м+7dG׃c}cf] nS  VsKPҼd4kGn+D= 7JWf;]O#@sL)dU)wiVF,>z }WVu$T)LGAOu),z ?6+ʯIhgVD]Xpy~{~`|ckOx6eRDrty6mp&U)X..3^/iۊ 7 H),I!n|q`8f;У ^ HVDEmjPFTNM^_S9Q/G%&t ~j>9miA#=΄PeIuaF +8,8h-Hb NZ%+y ,EfJ{Ň~[9ߪrcJmJΒb +8}܍hiQp`:f;~*"&9-q%>c`Q2@7$3 #u*p9"׸5,ɏddI Jh pO&vR┬ xؤѡHA`XKC))5^ ҧZ @^THAUu?HocD!<$AB ٭92!](6ޣZ1` z8FrV" x3,RST-8"Hli̢MiFa,eVym>9㨯C g?. TPp>5Cڦxo%3]@ dB -wYp`VqZN0 O٠:G ,W|.uw@J <:yTmjgx"I,tk^k8ׄ_@#˄JV5]UQ]7$~0&bm|:{d%t@xv. #<Мs.B,7YPI:ndK+$kiy}0: / VJDxA0xpY&(ZbVi_Zj 4w}د-JBK ԠqG#11R) a"9@m'|#(-R.Ј%*.1gmk[I6LyjxrH@kdI++eE<#"~u@s 2NoL\}i 1Lda3g:5 j:)۰K DB.P19lJ.5"`ޤ,FY$  i {CWF= A4 U(]T%$y]!v 30@30NYbu%+0f\P6)@pRB3!DJ2YR>5*AgpϪSq*Wo$l/#`b;kcl_\*`q1:ƨ<0ߖ 9f-_߶Zm%f%|93rQ-"7-) U|Wi@8>_B qq8s#Ѳ)|Ζhb"o?xҏ9Q!GN\u )(dDU;Ri7^kc0&7P5WՀeJo5'[$D$v%$BFtEyLP9@qOK E H`~3]Fsyd # dZTf [_rLcU1w CS 0t%*0(-25ۋ烠ً=z/=xxF54 KN:g쑺iXCW,f2?^(Bī0ὅ伪_xnBSس #fiDlv4Loǡ!{2}@UHp#;C\z}G T4[\w, c1/Fbco{FH@I #.IAu('FiR' a!JW0mB$qPV\($979!߷gx~y84a !3ofg> CR|u~6.T-i3qqCr NxvD?7m+f`\p a+ϖk^X ّݖq1TQ΢8{H3s\6٘U*߰M ]ecMX!Wm_O.K ]ϣN)+'ou c\L|{ nt`@| Cu_m鷍~7cFzIA (HٷyjC,X١-XK;ZdN0)È*i3_Dj)!o66; Mc$zvs%2\ -)! Wa&lZԋPu\unWct80ɾPk_/pM0%씋@ͱFB[L0qkrpd`bp-Uǥ]2/*-k}"19|^@+Fq8&=,)i/=&{4T,!ls9A/H%_(?~L}ׂltÐdHΙ%84SK8}#ikQu#&/OJCPR.aXFIHH50ߐ6=!Ajr\BߍK~ +.r 6cQL8۽s lN*9tPcz>; &4bg9,o(ú<+{if!ˢm9Yţ_kQteHnMd28HJgCwlB2fAMMxL( N:bQwp"~:iD(kᨒT#Y/t@rTa$+pf\4ׯ(ct(8%€`BdBgXsծ*V{wg0ZNVʁjܤfV12[rqn)mOh}Qj*Pd懚 48 +-z$QƓGh% a-hBop3 <.g@$ʁ!-@Q:V460X)!FzNU}GaD3 @ l2V4D JzPt9[EZl"Dl!|t˶oդ'jTΩ^)F. OzcРeeh$h /WN-:[ϣ!D<Ս?zJB.#Jq9CB^o'j+b6LtЖ`N8dT) g[K_:Vw\AA{-J[-XR8ӓ-NV"#C3lwsL?j%" Yg5(߭;&/# ?30.ٶ)-T3.^k61S%rl}ݘhlt, &~޳oHß"d/Xv:m5}(q{VF޾c ̄ ϹRe>hbuI,$8D1;vXR#KK-JSZ`ymiwUi鵌t7!P(`7zw3LWK8 KKL"CulHb-.y<$Aʈ|;]v"Tc 4x6[Q 5!L`_W)nQ3Oߙ kgF&DI!0qc@$Ju$w<i7* \ U6z/( kpަASt>\ l֠jM-e.nHd2Dr 9j.pbc@k 0v~*o p,JS%;Ж 3żD8iID\+fğ%УbckXU- <lB׋eCa:=5F 7a48]qBmM3eg̚nWW} uTL_bϦm܆uP0@؜[c<:J3/Am,g$KjÜ@zg%sfso4aKUF4Gp/ȂH`DEL(uL'n'Fz7[L崑Yu{* KT֞P+qrl =Ԭ:,r@eJhOAݡHkoޡb۫vzBqQTzDer3/b89<@̳>O=P!?I7Y1~h{sS5 XI g*Ձ줂Y*#%r#0=#dT!$D!&í(hD>-\4wDl{?0 Z7Q2 l,a;;o&:'V ,D؎0 -+JK3f&O3S9!lMjՔAp(Z 8J8 eJf9LزZ!:]B :UA=$ #R{^2TnDxaV`j:r\ZRlI:^֟z8BGFRrt.^NXrzq2?uē$C&HC3OPA0"uvԗCkOgL);P[̒BӃkdn)\G\ͣ\@I5\!J[`%FizgˣqvIdp:n|5hXg> /"!cHH"+;jUO{ 1aCFӖʧSTHV&E8ڐK75(G 57:4YXm6 fHa_ġtlZ+8ٔ&@|ج@#̬˭(_ Q3{e"``̅$ Qf9͕ 9 t›ZnmuB##*J0:͞/ PL$۷rHր8zPI98xe~(-&d_*HPtd YNC >l):[h7򫌄Ο-z-**:4X,mXo L&o= 6.cpSI p68>#/*%Ɔ^yEbK+$Gg͒8 <GױzbOIY#UJJf8GNztgP.CH%9{ XiE$t%@^ɺZx=X^ai =VJxu9CrYO@sRQ!`_r߮Qn<ʮ C%@usl!Geh[/2ݳ愼}A#^tUp5'밚%\qH {d8zꙊTPԶk@))@~fr@PAaw)=%ѡ}~-bQjW9CA=%}nj/˳W)N`_L^3 d:a; #б]8GG$WR<>iK(,!u(Qx(/nkC.kףnW 0@E =(\Ŗ\ $"A۸6?u*4TOH5O\V5R\aBch,e(=hT!9[H%Qfpa-0S )鈄YWZo46 'xpZdhKapR]^V 3yJX !!TfXR@V47Q\^8HÅ%ZdZIr"CUz^YK6J0lR!;x`n;b#7*VyXB#QCDאdB@7?(s@(OױڴOQ?·yX%mY": sa"VX]LdV:`UUAp T wFZSJ҂ FLrghmWiGo#6)V&4.g4LX`1q.+S5ЬOGQW{O pt*7bހxs} >jP[%eP?ʎN)ƤfH2 &A ,pcO賄 PQ@LѾ"8[>̇#o\2hҀ+dՉgg}`%$"E|]h!`]laQPX6e8i b țlaz_J'*7 '*˗n B49:u `/ilip;vc9 >S-)y "CX{ eH0:NA,, 1O^ޜgV3DZv.c71o&oxxo}v+UAirR v!y;M p,4JmeJ'y +M),߿&>{-x*<QX%Fq_LK(N! C#D7sRGO3#"P=%]2dGaT@;&z 14;,]Dx$lvЏ֖l{q5zJt..g6~* ?4ȴM.Jĩ%qcBg6q<EU'H"Xn@GNX5jt+@0Ir͇mHq\Ԑf{ Xo*0 dQC1qƜ-v0,kĊQড=/qN>`@\r*c|IP3 a?SrqשJ#rcS͕ 7# I,0hi?K*Y@?T҃wPT[t3I3CO|:&6htPW:#f9 `#BŲ>=(%Cia"FX4#DE̽e5QChu5G }5ٮ|Cr +fF.X-k'}QqOۮm)A>Nb>fCQ 'ie-k%bI0$*fj˨;;a ?$B0v|7G W@>^1⠓-xE:}$^q6K,mFݢ~m m=̍> ڟeah0Qki [QO@G&9/KMa E2ZQ1eCh]wzu&L..f-BA|8Co `0BQ6i.LD ˻hײKaUNk.F*X&52]ҿq6m` I5cWHHl`1SEUKZ*+–e2Pĸ(*K*XȨC~TĪ^=Xn#$##y4jhHO1ޭb"@ u jʼRS#)l VZXuӐ@ub6@=+@zX8[5U >r1",;"K:0\J eFJ u+ ]8j2;` 6DgF"##oBАDRHcW$"dJ ,r9LNϒ XIHJݳ^e.6&HX-X&8iĦ`/# Qr+Ga$ s12L[7BMUn!3,Va#IaR-L]kar=+dAlp!^i ZZ'$̕txD3aר JR6%[ 4B%AD]W"@6P&(߶.1 ?7 ?.os;c%'i X`Qzr{WP4.3CW)~]DWSZ /]Oazg?%BᡩVEԩE!z/t@{g2qqv{%H"}aBaFHpѸ[r`JGIi0$U" 3B:At+ޡ1>"Z7U#랋/ CwqP ' cs_nWo-=sJ>b`-5㊺pqU)d+vݪGz6I۸7c%Hv|:D-֤s nA|y~SEB6 K-+2[Yc4)Ȁ}S(#js1hvΩ<a ע!ሰmڦq`!l^` p,!WcA8ZB/Q " ~""XSLE[Ki;o $ 5[^iS0k˭(9rx L@م5zT\bۈz lS oSr=|8:^ ^AL#"l8Jejz*ҒeX<~MoKۤ$ET(Rh ah d oT3 IUNީ8g,>7Lrg[w/PrcY%_nL.q 5L4% vb?( ډu'?|&^O)K$*C \2)ןfIbk։n>#K }L6"7Y%Bh^$n 4ћp$T, b*W7ֵ9epvzx-uBP"-;PA8Wy5F6և.Kk@V'ttYh%b7lZ %kl1 nŲ">g!d/ a)qf\^[cȑWB^önmPD`0ΐA=>;ba)л  Ҩ/srg$Pؖqlt9Fc׺ɇgfPRb̳Nr9ތH`Wyam3[!8ST @&yYDlƏTg>GIG|^l \8ļOďS9`,ȓun%R,"C(X5@DUu\ "rҙ-y0eee\dčY_g$Gw:l o8.PN5hUX ay^’9獅n\lLM ,04u8c 0 >ND6j4Ǒwyq Oĥ- :V4Es?QC./#d8P8=htF\2(lIr|`#?1X?ٴ~dSz8 4f!ͅ%2p۠-@X5}+ VL1#^ _`:`&6# '" HDH pׯxXP#~`H"P6}7n NmV*Q]HrW',ܵ mgځžmA(ht$PATI+tḯQdDW¥^EBo#cYu\@[`-' sPy~lѓ`}C ̆Jy([@hXrg9$I$͇N,"̬Ab+X载ea6'z}j+Qҝb*nmn߳fyiF?ZQb4葇&y\0P͊xzWBi O8IJ (dVy~]G#s1 $qD %Ecǚ,JkCx4v@-|!D]z/VςYP?@iXBeit\gg0Ф*@1-;#3=To+ߩ͌TmPo ݔoO-N2M9 ~&Z Er< E;@Aw y+. K7 1e/ph^/&0mΎ(>Vhpb芃5XhB2FSB3!H fC2NTD_(5Vz`K5Ĭ#UY L|;b$cOQ&3'$2:('}$'eHJQPb Sn!LxGi,UpktUY5e3#Q`)Jʲ!|R ]cf?T5"O<-MqB_yķ/KZjzE6y^%l` gaU]?Еnڱ0 U3x<t 6?0GUkx7yBȅF匶`G号(fP۠[sc8d ;2K&+_Vxor੓=bq&VPm!ѦBLجʣO+#?ԋJEbPp#dFs52 @&3 9SKgRxԘԩ$6k`:5k;Fv/ T`mpdE u@2 #7 S\D4 , 8J4A+ ]zb?NkJS "v:pPգfiR|E";HJ23!(9c!t\5GVǐ0#ɉ70`O/zQ]cĄ*Ait? }9#{G r*uf:? Q?; qMEI__+(A@%9r$ڊ -)30fUWJ+R2 "@">)e9+[LaoB)bO)#`.|?}N ,cR3Va_<-] L30 e]yoltt @xR ~JĿjTfMKd J`|JdSC\JLɸpp7Mx[Vj Gm! "M!63QBRD@ȋO'-BEEXB eA\Q(6`7PBֶU2`X92-0h x ƾYȅ&ȋ#3xkoLF{>a7u.\/\ R넓K, %O0I+-@c59ȐI#KYmS9dNȄZ5 >XYPD*a6D?F?Fy~ˤ6cbhuGc3Fm 0IWŗ]#. 8ϽB٦1 t|IYhZz6|<I- @1*HIs'pD2ov*a tf*KdXR ,6ċ5\s>igzw6xbP5%2"bb*BpFEWF[3rJR= ˳4¿kRݷU&ǚ z34%,Åi|q<wW0W1}eЗXuUۙhPCFt%+ԉю:}Ȩ+ ,wxkD2FĜ^[i9:?dh,hlK鶤N%3"p R ]}6t@q$Nh7 >ٽEFw::vzN6#f,`l/v ;XTI p>9[em![.0}fICoH?mk=A<@Kq1f[-@Mn}Ri8b٣EGKL8^a&AXCB`-5 ^T,-VQ@G7&Ah:+(w /p sSZgb·S2i3zʱJG0VhtEoF ȮePAbC@pO +rE*MuUy.RI^W|[cS#g#ve)Bfr'h72f T0e"eKhWilk 84.ŵ6]6Ѹ>e0u@aU 9J鲊 d%JSrk \4 Ԋ&ҸsM )JȪ?- :tHWSTLVzLnO+k( _j!nd$([mI1FJLFm赤Qh5=]cZjIgWN]M´\MԔɬ ?$0+5I*uKF|C.gpmomSُvJj 8mPhms$P2{ba e'2ԯ*;ʎBAE~"NHlkjzŖRE$tQ8F$aj}*'u?9}_ 3[o#_U͘C"\6OxXSzЂoF@3!бF^M>Gs)sPDAd}{&`65s.aSƸͣ.ς5 _y 80& ;%~B`D$u?ye PaLCP k$M`%>UGY͜JC4hHV!A@gGxa.B:2jA6kN8=tÀ`4Ci $՚CauW8 Z\ϻL8̙..#_~48m:+U0*,mY9p:bӿ<O(wfT8L} L2z3DO{=C48 3d" ;݃2MNen-"IA 7lULX_֐|2PJ]/ch50ASt5_Q?=l [NW:c\VDu.ƐI/j`a~ %P57_`AcN'F Ka+Mw`)Sj9HSo+K4U( O#!: bVP~2A=m- 1G]:lRJɧf9?7&"3TW:qG6;@(@[(δSpȑU`Ё,3Gz˩EUE[!'N5;Kw7?R|s1̃ȟ&vZ2D܃]4{#= !B)6UF F3HG'j~K6D)5hMF/fSV 0k֛bV-* !.&_$쿟ж^7 !(|.ZfQL-t ΁5\ۊPZ'̃ B!GP+,;J3T f) p:,RMm=<3%wAMm (top2<@]%& c1OTfAԹ!x6kyoH`V "'UQ\cfPSDGe&&6I ! Ӗ0CL1"+ Ncߐ 4_X|IxJ%>+OJ0 7ʕwb iW3E|3<˨-+ q0!Mfsկ([h"VHTQ=[nD;1D]H8/y>~.|7!eճ! KCf!Bѫ35? C KG$@u/Q_:V]QVp]XŭAa]A؄鈢v[z/!x~TZ [0-,e#- Ȣ.̐ITCU_иWw0'&Bz~{ZY#P PP}mNH$GLpbl,'`a ~P?Ffa}T[F|-lgJdQAYAUIƘv YR&H8Yy׾1_@+IPҠK2KnQ9z ݽ1֘8R[zZu=.0XO(ض3h~^?`a :Pv0!(Fl S'Q&יpҨ!:F@k!Bq3wzYAU!c[#`('`b)@w0 kAe,]x 4cALr@RytoEb+EQPz'ŧlzLSPRd)yUq9 wMV24_8Ve=UpSwNI4jE.3xsEdƤ V1˥ TW{۰TE39<X0o!&1gm;쬾)Ǩac>d 91m{&0_@~*0rLtjOG+Zm9̅Vu ESx 'LTC2R(/=v{w~ޥp $yPE+s'F76{ZLJ$3ni+p;9fzI ~_[.wX:-1G[Tq=i'_t 8@s QEB77S qΫ.4i#Tsr|?B""n7q {#*L) h<8 pxСSXZwLc;2luX=(ߣ Rr>)C͗[.:nK*S@:Xtn仰>4d'wiQ#3~}XGPȵaa_D;i޻%.܆<}sɉB8dz-,2BGJlE~Kc2Wu7@G籂jP@ڲm{'<PNϚoix]hS_:_(G+f}5l' F\A]<mE=iӴD)ȏ>U KceswqKU&&CDyzEއ+LGohM~tv* $m8s K&uTb11w G9âXS"2ub& pˈekynN4`hp(#XPZFa8k7" ɠ3"u Bq 1&Cx)!T&莇8-raB-!"EK5GYP}~u>tdݏ,΋UX@3kv b* d@WYu Y!8R)U$Mo9ƘlttH̊aH!R, b$xp8,$_Xe>6u$ uA~:6 QK/G\ht{y܈(^rĶ4@bZ39ؓYRڶ@߫,գ\RCX q3!Ddz؏R ϶ 2r3DS3GT: E"NAܕ8cL]-fG@$ 0mO$/y-#wЙ>L00 ^G  Gg u[D &!D)}p}Nі۾bQ*Pero8o"Ҋ%3 $@"⼋qiF@ex+H|(XT] .Uy$H8q4 ip9#kۏli [μqo'yh\j6`uGm_yuN܄6 hHȔh51SC$j y[eV|ȳjç l<\)`)M]7S0 q\g4x#n<3QI_R> u;[PI'(r $ӆi l%£Bo぀)@QԆdیĺXUbRKEԴfae2F@ A.TRH奙ŤZrpdߩX]?qsNZR ma`( bMuI( c*S ]a~`QMHm ,e%uITU oEk'GmK" ]U9EUW`O"-ӄ඼&5A=%DYUZroSen56 5M+l> p Ą OZ|wMD&?A$a<[Kל. VDWLZ6ɓX<_$Nv<pCTz^Kq PR24t8-lתw' {5=V!d`&Jո}iWP7nȽͿ$)S2cdfRF"qa-iz_lvA/B#]!C ٭Qžz4 yTc' Ә+(eYN<= !愛W?b.Ο\&w.PN8~$ia]]_O'MSe^u?*X qeRȣ(5z( #/O+0/cNL7%>tfJH^%y-AƱbiJ; Wn ڼa 7?Hhٟ˾-c 3wm‰WɧSܑBs$~^i2a;n\,"VLOH[NHΦl,{/%'PdNw6 7a$W B.)bS%& "J깊f0WyYāgcC=hR5].=YsWOsY쾖 5[/ϛ{&:s$,^wXLuF?X 1Ua;^R?C"0GL1#K4L~Qȭ{Ǵ >E+)t!tMg0:Т+&Hly&BԿlRK6۸ŭ `E~Nv?-ja/̝n-aBuL=GΫnMF0 p1( &&Пܷ{%ۯ7#;sUf܏E<+MV3YdFӛ|1: `P6YTj͇\66?[qCLL8?t+sl&pzy m@yHP5~V|ÐS&nͨqՓe" LPr@Gc۰ы\&fЈ e˯m" @D>W=@QtL'Ҳ_zv 7 ڃE0ažOzW # {))u&1$9W6YCQ6墼N8Tҹ{Hѱ Q$[q2 ST,> }^e<';!k;dmNa7ȼQN6u +g+Yi}Aa,k -e  7M(xKv@%قT`ʅ!Ն} ;n/q-xSB).ws z"-P CsjLTCd=ϩGö=j:1#I7`PqXEÕ _dQjP8_|\BqhB{=^ƥ,Wω'A+c\FS<; (+*4[we[ =;E#M! _r}ADuF 25aS%&.$65msƕa`#~z}-Tf\H B0Dc,V'%ÀpMG ?nM$PhM!^N |ny=Bi\cb#{k1Y[Gi ,r%eq/B5*sg1ad9kQO;&N^>˜\د6(ƼX"+lS?ZzQ6łNi(2+ 0<s(C#0q*H<:k`W DoU<0ځ}`Y\k_r%a-2RԲh،Ipzפ~)i` lL] 5<ha%0b9ӄ}>%:84 g}ֈwk]!P`8 CQs)K ui?: ByEE(ng\39-긯{:XF Ikff۟> ƓA\xRi< k + |e~~ST`/hÏ87-7>AkɡK쳛l6,rF 9MMW-`@eHg: /@i$F, @VhCzj$ﲦLvFh8 ƈZ1f͐U!pLDO0KiYmPo 00:gP#zm2S2~OBذq͇\GAbfTh&("0 \ɥHKOy|D"MF8kY-1L/eEeH /naa^c,Ih̦qà[GtfNDʱ'Hg{ 掑MǒLdŲIy r'g' .|f DŽ' HcFVse!t0 ǎs~$`-;uWT6T*el >[Rg\wM) Н_2ebaP]6V nBL}sMx,h!L\ƚHђr=$΅fx檨)ln] 'b (jơ~1P3R..Ÿ ,?+:[$现[?MUv\T,J {f'QhhDMTQ-ʳW&j}BzA>ꎇ ce%uޔe v(&yC(1-WO[]0!7 Cjn*_z!Z4!/ bȩ#2'"/QQ\M0?=ã'p$% 'SU*ۘ/7p4(A%</u)fFP1"K[)<`1QBdHbԛv-wE,pB# d@_jSdHC7E-1[ö WS m{Ap845)9}x z ՃE^k~ܢΐ"u*=r%jnf 5tjL<$ 4.ELUӲe҇ѝKscɄro&N[h16y\ r?Y^80c\],l,E,%X ]o@\`IkF  !1E)p"t p/٩]iO1͏DF pyV1Է俖dEQ:au@*\c)Wű}v=EFabiЁͤa|z!Zm8S^*cFpasֲ!IH&i?\,7MQ e$\h$Hzyį)_ԁt\xiI{ ] tڸEվ CFslF"sHQ_nWiuI4]b4myo?Z2R0kHRYFM?3 swb[uHX<sSpz ;! >ˌrm{y#8bcڳp Jmc6!:82A6<[A9 ?^P I8X0o1JY$Y.x7-_euRڅw?(y9 b~`4}Cb`TcdBI{;1X? E,1݁g&UR?OB]I/EYat%z/%Q9MpFºqW{# *C!5t.NՄRpuK3V`S9wX)"4E`-aϑ2ujK2E"U|֍-~T.8d0\ƿA/e YrӔDL[C" 0$*p q>Gpl[onI[`U;Mݼ wɟ2e|cC+o%h4%1v{H0ƛDUP1)/! {:6xFQf(|mbq2|3iZ^fap?`v rM= RD<8ZP=8d.I+{p\ٙ<3\V2ߟ"F)6\dЍ{>A([앛M?#0?)pN4%㛥hbKh }$i%> lT>!B\AP0(tW . *]~&džD" ibܡ\Fѽ.$qE(Q)fQ|g>(M܂{o!DM("RBvV ( |k0OXDخ.>ؓrG*ibmcZ\ ѕG-:e9N.yiH9qPs/Jq1AshjvJMQl#K~Rd#<2$a ~!Te0cRM\JT )H=Mu}H7sܮD@){gB4p;4l@D(]U\s i(!:"\Q4Vd8?R#.$in)[g1qK凵(DV[c=_ 6*X4Ӻ4}V 5̗HyyS)mr#]R$h@-0Nָ\1T@Jh4,YtIտ5_AeeHژKGᮒZ q]̐&,\MxqF@zLڰ2ta`C2Q \ˇ'OfAvywH1$ >AM'*ׂT V%׳KwYɂ摲JXwרb*5YMiZmAykA5Ss :GBI*#7y6zJEIxz}1ѹ :PJh[)̎3ysXA %]pXFwޮK/ Or<t:f$LzPȩY1=r/ji粹紳.U"*+o=D tFJ+СTW완afݖ &G G{~MJW~IK6B8t`R{ͱ-zwrvI"40jr(hxhel q lͫsgd*F2'uuMHT10 pO$蓈LQ7AjqS9KtiB+(z6 ;$lDlEkwC.-跄7YAnn Tka+a]gO!"G.zX X13l/'8ZPy*uB8,1HpPmPq` լiB>8-Y;:7hQ%Z6dSMGL|P HqCS''eʘa!Zd9Rf&(!Q\i1}FheF./]C_4RKNvB H!Iaf'HDU.ͥslcNQR O'fW(IhW0ai E6s_v/C]߇`O9nz@/Ѝ&l(`_OނŮP>гsCݏn5E=v'=1W_vH_kef1jTPJWXжnCYoy/8Uda!㛧Ȋ8魨bk3ړ%.IXg-'HӂM Q Ǵ1Q2 GF6jHB%-nMkZZxct9QuT"$0 8F9Qnjla@e#`v O\ص J8i%pWB3N#um [PBZʆ/>`䉋1|-sE %1tDQ67`Ehj{=Yeh3D(B@Dz:+ǂxf(/2z`kXq14! LEY.C* [2 QBw=)oN3#Xxk l+eՊ- UJN O:* Ť؊]:mEk gƨ2@ Jʋ+4K4b6ڋb;>KKUJg8]@+-$GJYRCg# oi G,뚷[oj<4l3(;=nr]U8NaMv䌐p}Ç6acZ=Xti T ucA@AΫ} p(Ajx9X -+0]M4dku:!E~j {94STXNҿj ;=+2o .'IB&(!{$ L"RpfI^*{!o"b8.V<2"Pr?8=|A<2Glm~ԉ`d"${SI{ Fc9|1d]yB@S4AIv0)Ab[vEQ%{i]&RJz#%z6tzQÜmՍ o%g_fw%h:7LkR"܎(e]HH -|V7M_\9<&7$9܆jx!˴y: ^\4|^E"k޹Z*9쟼F pQ ,血n!KϪӣ u`PB"^k/]'adG:/up:L#Vg}p%qtőcz2Y@\Ӑ!\yo{0f!{ǎ7n8){ܔ݌FA1ӗJvO^>oǒxđ>FC5Y9<zHˣdgC(a(LֻAޑ?XB@qsU2c l j+~x˸R1gX0 B8dbcvbV8$7wNY(Wxȯ0j}HX6bu; l#1JN2uB)6 8],AqߐFaEP4.%. (GR[02F"X\xvhvݡÖ!d"4`נicL>Mƨ:Ρ:bb@Qucu:h%@*jAVt jiպȫHeE?ƲDZˀ#I"Bn)>"aLy'Eo<4{,,x_z3:A^pnW(5zֆrH\26TZ8{(ڃ+ KM S͙JOr}uHƘ^\Oo BB f@JCڊpBfɨl!NM ,7ĕ V΃ Н#7B!!2 Aet:bp `(&(Sf7M6R>`iAXYK[ƍX3, +q*Q&&k&6% ɹ P6(u 0*pwsG/i2eA;c>!4OmOF&`L@GaY Hga8'fЗ&jU+ϋZI PUDv}jY:9BAQZV짠,P/Y.'Σ40Q` EŖP(욶TiaACr^,dwȜō[|<AZ)Mjmf% AL#޺;(Ƿ\3<Uג_E +@.>!{`mn]"FP/oL c?9Jǡ}Wu8AIYr*te-; &޳$tCHfړ@͸@[F疄@{tBte NT”(i8M~ˌ=,)E Q} 9]ht[?À0lC*Lm]m8ڴ4:]G)}k<^P[nxh 62duM qYc1.4O_0GĥS9 T6Bu i*1}HI9 MF<$Ԥ8 JHڌl^2ܱHoLu)j06 KQUК1I|8? Kv8#Vr*T| LxQxbM7,0Y=>j* G%)PIOX_$-q*ynJ鉫ϮS[ܣL %p J-l@ARn}@]_c E=?S(bSI ["zO5'f[K@jLwW^}e6UVnKPZ@%^i'0*dzWb`jV#Pi*J]pN҃@v$cDѮxU 38;MP;TYKSrbdhA`Z}y9Őr\ JCRnA9r2ה[Y[ZqޣUO!Y`Pպ5B%zD7M .S' "2] z8c3G4 f ,g 8qn B`DG*~rw@ctUA.}؟[Cm _(ﵨ2Z;I1Z@ȶ eoS/wYA 4X2ٺ'!Li> eԫ]B&KAO:ؼYڟ\$)qF&½(aJ#K`8y6`e柪,A! cEeudC_K*s3omR7guX~SFn&Ʒ<.çQ2d sgKK=_8&a5m +51jM4icg.a7Ґ^4Iu@eՆ0ƂU,vpDMT Extra MSnLL|~Ԗ0ԖZLP&LhMT ExtraRegularVersion 3.01MT ExtraBSGP:( S BU+Hh`9`yAd P X_W&ϖ \rE*I$j1p~^zve%V wTQ3 -Jf#^[N9XpUlJGU:Vľ6S^ -Jͷ# 8JBG\V(f~CJ

Hjr@jyLd^x nj%^Qy+\Al~ՔAJ7i6rBC`"$W<E{Lyd{ { ߼X%ӿtǕy^^/Nw3x;3BPnfx+RןhZ.❄X4`>K؋*ckQ"Ft9eBrFȝV5f0&Asȳz S+ 8{2leHhڬ=Px\>rb碛8ô۪Ղ] sþ0*G O)Ήb瀄!ps)EӤcoV_E8DB9yKpGp|D#/b {n3Hgаʅ;'Od.+?W:3|pgE;[m eo:YY1E!hl 1p8#_B!_3FG8, lmń0*.h@\B׫Nz8ܚK_8|ӥ} r(Ls-@B&I+` e;5QN '+@+ջnQWcbdJ2佳c-T^9BD1pz['B}AsZVWX; %ՒH'),h祋sDz3%t,M,Xp F3:5Wmgy  M EB qn- X@&, a)TSlE5쨟]W$tz%Pj7X]S]L$b\-Lwx^ő. 5pRȠ̃ N`E ?şu:{%+yOdS߰)ީ|Ȍd6NuDOZ/Zuy2Utc7K\ƌP#i>(#A`w5#qRͪXvqq@Q @3@$)zbeg\DlR E\UzEx݄S<@'wڎgM37il#+:F: Ly3DXk@)M;IB-/0Q4xX,!zS G?HJnZAP´tgra^U;_ ]t6ۼZf!hw;!t'P9 j-l ?GQݩ1Q| )~}:Jj--"dׂNbX1!G;8[Б5Xl3ցi4֒4M A1ӑ 1Ci!5n,}78`Z3B(a=CK #K3<24^b> o7m9,S7ڳ 49 d :ՑMn 4 q(.^t`{#71Z[loHCm'MN\DIb&8pB"Y( %%%[?Ph?D1}8$Pr3+辺?j -[Кچϔ/8qh(PHà2Qj }Y9= -88ha P wwp_Vd<puB;X2P;B1|FXeFEz915$[Q, $ֶjhpTGΐ/T 0 A(2B%9XOMI m#W+_%H|]z6KiITĂ*B!t҉Gŋqg7a+XW=G]`ZQ뮤i P/2\P5Po6M%hnMbV庉. r47L$h2Ԛw!bX-i/E Q(^ Ð"tֈbx,@7@O@ |Y)/+,A[,x8˹`d v54 ܾP3ϲCs8ұiDg$3c_,FY3e1PBje/+M$\"rkwpWQ7e+B $XhJ7hƅHFG^3Iwk;ޢ ?mX S?X:| $HN!y EI-/s-uD5 ժ}VJ1EC{N庩b[D݅y^ѵ$}Sm9 <=r_H!;N_'Z0diF P.FM=AR]Ny5&r'M!*+,<7΢@Pl֕. d*ن K5Ǟ(|8X4- Ӂ5yW`0V3ALM,TVAޒ{Úum O>G %'$e !Fe6I0>T3Җ *腝"/ayNĉB4XvbC PFSd2҅%gR!EGkŔrE4!MԒ^u,!Hq^8=;pu/yȑNm Bƭ#U-G4HFOF[8}%LJV(R&'-2<7   +  v ! 10., &A*8(F!  0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab @ ! ʚ;[;ʚ;g4dd(0|pp@ <4!d!dA10LX~<4ddddA10LX~<4BdBdA10LX~` g4PdPd0jp p 2DEFAULTFONTSIZE10.DEFAULTWIDTH3540DEFAULTHEIGHT200E___PPT10% ``26 ___PPT9{2J2L2M2N2PD P!@513,Q27@=HR2W4X2V2?>2/11/2004 MSR TalkO =wLogical Abstract Interpretation  )Sumit Gulwani Microsoft Research, RedmondN2Final Goal of the classAutomatically verify partial correctness of programs like the following using abstract interpretation. Void Init(int* A, int n) { for (i := 0; i  lkgJOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZZOZ ZZZaZO   a t& 0 7 0 V 0 "Linear ArithmeticExpressions e := y | c | e1 e2 | c e Atomic facts g := e0 | e0 Note that e=0 can be represented as e0 e0 e>0 can be represented as e-10 (over integer LA) The decision problem for integer LA is NP-hard. The decision problem for rational LA is PTime. PTime algorithms are complicated to implement. Popular choice is an exponential algorithm called  Simplex We will study a PTime algorithm for a special case.PZ`ZZ   &0(`>&v*Difference ConstraintsA special case of Linear Arithmetic Constraints of the form xc and x-yc We can represent xc by x-uc, where u is a special zero variable. Wlog, we will assume henceforth that we only have constraints x-yc Reasoning required: x-yc1 y-zc2 ) x-zc1+c2 O(n3) (saturation-based) decision procedure Represent contraints by a matrix Mnn where M[i][j] = c represents xi xj c Perform transitive closure of M M[i][j] = min { M[i][j], M[i][k]+M[k][j] } f is unsat iff 9i: M[i][i] < 0 J\&' + <h    ("  + (<&:g  $  hKOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZZZ7Z ZZZaZ7   a t& 0 7 0 V 0 Uninterpreted Functions  Expressions e := x | F(e1,e2) Atomic fact g := e1=e2 | e1e2 Axiom 8e1,e2,e1 ,e2 : e1=e1 e2=e2 ) F(e1,e2)=F(e1 ,e2 ) (called congruence axiom) (saturation-based) Decision Procedure Represent equalities e1=e2 2 G in Equivalence DAG (EDAG) Nodes of an EDAG represent congruence classes of expressions that are known to be equal. Saturate equalities in the EDAG by following rule: If C(e1)=C(e1 ) C(e2)=C(e2 ), Merge C(F(e1,e2)), C(F(e1 ,e2 )) where C(e) denotes congruence class of expression e Declare unsatisfiability iff 9 e1e2 in G s.t. C(e1) = C(e2) ~9Y3A4=                    SY3                           4tZw3+ Uninterpreted Functions: Example  ( #Uninterpreted Functions: Complexity BComplexity of congruence closure : O(n log n), where n is the size of the input formula In each step, we merge 2 congruence classes. The total number of steps required is thus n, where n is a bound on the original number of congruence classes. The complexity of each step can be O(log n) by using union-find data structure&XX,#'iLOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZ*Z7Z ZZZaZ*7   a t& 0 7 0 V 0 <Combination of Linear Arithmetic and Uninterpreted Functions==%  Expressions e := y | c | e1 e2 | c e | F(e1,e2) Atomic Facts g := e0 | e0 Axioms: Combined axioms of linear arithmetic + uninterpreted fns. Decision Procedure: Nelson-Oppen methodology for combining decision procedures     , "0,Combining Decision ProceduresvNelson-Oppen gave an algorithm in 1979 to combine decision procedures for theories T1 and T2, where: T1 and T2 have disjoint signatures except equality T1, T2 are stably infinite Complexity is O(2n2(W1(n)+W2(n)). If T1, T2 are convex, complexity is O(n3(W1(n)+W2(n)). The theories of linear arithmetic and uninterpreted functions satisfy all of the above criterions. e$\gT      7                           m ,+ 3# Convex TheoryA theory is convex if the following holds. Let G = g1 & gn If G ) e1=e2 e3=e4, then G ) e1=e2 or G ) e3=e4 Examples of convex theory: Rational Linear Arithmetic Uninterpreted Functions 3--5        O,=k  $ Examples of Non-convex Theory8Theory of Integer Linear Arithmetic Theory of Arrays% Stably Infinite TheoryA theory T is stably infinite if for all quantifier-free formulas f over T, the following holds: If f is satisfiable, then f is satisfiable over an infinite model. Examples of stably infinite theories Linear arithmetic, Uninterpreted Functions Examples of non-stably infinite theories A theory that enforces finite # of distinct elements. Eg., a theory with the axiom: 8x,y,z (x=y x=z y=z). Consider the quantifier free formula f: y1=y2. f is satisfiable but doesn t have an infinite model. zaZIZ%Z+ZZ)ZZ;ZB%*%+)T         ,          5 bm  S ko &.Nelson-Oppen Methodology @Purification: Decompose f into f1 f2 such that fi contains symbols from theory Ti. This can be done by introducing dummy variables. Exchange variable equalities between f1 and f2 until no more equalities can be deduced. Sharing of disequalities is not required because of stably-infiniteness. Sharing of disjunctions of equalities is not required because of convexity. f is unsat iff f1 is unsat or f2 is unsat.U2X- 2%*  b   &Combining Decision Procedures: Example jMOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ ZZZaZa a t& 0 7 0 V 0 F*Logical Abstract InterpretationAbstract Interpretation of a program involves interpreting the program over abstract values from some abstract domain D equipped with a partial order Logical Abstract Interpretation refers to the case when D = logical formulas over theory T = logical implication relationship, i.e., E E iff E )T E We will study following examples of logical interpretation D consists of finite conjunctions of atomic facts over T. Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Functions D consists of universally quantified formulas over T.f;:g6 9$-  ;:g6>* 0 A33Transfer Functions for Logical Abstract Interpreter44 2ZZZ5Fixed-point ComputationIn presence of loops, fixed-point computation is required. The process is accelerated by using a widening operator, which takes the facts in the current and previous iteration (at some point inside a loop) and generates something weaker than the current fact. A widening operator should guarantee convergence in a bounded number of steps. Widening is typically applied at loop header points. Facts generated after fixed-point are invariants and can be used to validate assertions using decision procedures. 6tt8InitializationThe fact at program entry is initialized to >, which in our setting is the logical formula  true . This denotes that we make no assumptions about inputs, and whatever we prove will be valid for all inputs. The facts at all other program points are initialized to ?, which in our setting is the logical formula  false . This denotes our optimistic assumption of unreachability of program locations (unless we can prove them reachable in the process of fixed-point computation).tckq,6k97ifkNOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ ZZoZZaZa o  a t& 0 7 0 V 0 4Difference ConstraintsDAbstract element: conjunction of xi-xj cij can be represented using matrix M, where M[i][j]=cij Decide(M): M := Saturate(M) Declare unsat iff 9i: M [i][i] < 0 Join(M1, M2): M 1 := Saturate(M1); M 2 := Saturate(M2); Let M3 be s.t. M3[i][j] = Max { M 1[i][j], M 2[i][j] } return M38Q 6 k 4 $              %+  L46Difference Constraints@Eliminate(M, xi): M := Saturate(M); Let M1 be s.t. M1[j][k] = 1 (if j=i or k=i) = M [j][k] otherwise return M1 Widen(M1, M2): M 1 := Saturate(M1); M 2 := Saturate(M2); Let M3 be s.t. M3[i][j] = M1[i][j] (if M1[i][j] = M2[i][j])) = 1 (otherwise) return M3 :n      >                                    Z   1[Y7Difference Constraints: Example   lOOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ ZZZWZZaZa W  a t& 0 7 0 V 0 : Uninterpreted Functions  Abstract element: conjunction of e1=e2, where e := y | F(e1,e2) can be represented using EDAGs Decide(G): G := Saturate(G); Declare unsat iff G contains e1 e2 and G has e1, e2 in the same congruence class. Eliminate(G, y): G := Saturate(G); Erase y; (might need to delete some dangling expressions) return G ZMZZ Zh ZZZW Z  1   V Z  F  G;!Uninterpreted Functions   Join(G1, G2): G 1 := Saturate(G1); G 2 := Saturate(G2); G := Intersect(G 1, G 2); return G; For each node n = <U, {ni,n i}> in G  1 and node m = <V, {mj, m j}> in G2 , G contains a node [n,m] = <U V, {[ni, mj], [n i,m j]}> N      ' u&%=#(Uninterpreted Functions: Example of Join  mPOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ Z*Z7Z ZZaZa *7  a t& 0 7 0 V 0 Q5Combination: Decision ProcedureGDP(E12): := Purify&Saturate(E12); Return DPT1(E1) DPT2(E2); >  M1Combination: Join Algorithm>JoinT12(L12, R12): <L1, L2> := Purify&Saturate(L12); <R1, R2> := Purify&Saturate(R12); DL := {vi=<vi,vj> | vi2Vars(L1L2), vj2Vars(R1R2) }; DR := {vj=<vi,vj> | vi2Vars(L1L2), vj2Vars(R1R2) }; L 1 := L1 DL; R 1 := R1 DR; L 2 := L2 DL; R 2 := R2 DR; A1 := JoinT1(L 1, R 1); A2 := JoinT2(L 2, R 2); V := Vars(A1A2)  Program Variables; A12 := EliminateT12(A1A2, V); Return A12;      >g/?%  O3/Combination: Existential Quantifier Elimination00ElimintateT12(E12, V): <E1, E2> := Purify&Saturate(E12); <D, Defs> := DefSaturate(E1, E2, V [ Temp Variables); V := V [ Temp Variables  D; E 1 := EliminateT1(E1, V ); E 2 := EliminateT2(E2, V ); E := (E 1 E 2) [Defs(y)/y]; Return E; DefSaturate(E1, E2, U) returns the set of all variables D that have definitions Defs in terms of variables not in U as implied by E1 E2.Z     q>= ^7@&  sS5Abstract Interpretation over Combined Domain: Example66 qQOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ ZaZ ZZaZa a   a t& 0 7 0 V 0 R6&Universally Quantified Abstract DomainnAbstract element is of the form E i(8X: Ai)Bi) where E, Ai, Bi are from some underlying base domain(s) D. The partial order is a refinement of the more natural implication relationship. E i(8X: Ai)Bi) E j(8X: A j)B j) iff E ) E 8j 9i s.t. EA j)Ai and EBi)B j Another way to state the above thing would be to say that the partial order is still the implication relationship but transfer functions are incomplete.2<S5(      -@        +0hS7*Quantified Abstract Domain: Join Algorithm8Consider a simpler case first. Let (E 8X:A)B) = Join(E1 8X:A1)B1, E2 8X:A2)B2). Then, (E1 8X:A1)B1) (E 8X:A)B) (E2 8X:A2)B2) (E 8X:A)B) Or, equivalently, E1)E and E2)E. Thus, E = Join(E1, E2). E1A)A1 and E2A)A2, i.e., A ) (E1)A1 E2)A2). Thus, A = bE1)A1 E2)A2c. E1B1 ) B and E2B2 ) B. Thus, B = Join(E1B1, E2B2). Join(E1 i(8X: A1i)B1i), E2 i(8X: A2i)B2i)): result := JoinD(E1, E2); Forall i,j: A := bE1)A1i E2)A2jc; B := JoinD(E1B1i, E2B2j); result := result 8X:A)B return result; ZFZEZZZ3Z Z                                                                                                                                                                                                                           ,rU9+Quantified Abstract Domain: Example of JoinLet G1 = (i=0 8k: k=0 ) F[k]=i) G2 = (i=1 8k: 0k1 ) F[k]=0) Then Join(G1, G2) = 0i1 8k: A)B, where A = b(i=0)k=0) (i=1)0k1)c = 0ki B = JoinD(i=0 F[k]=i, i=1 F[k]=0) = F[k]=0   $7% T8%Quantified Abstract Domain: EliminateLet (E 8X:A )B ) = Eliminate(E 8X:A)B, s). Then, (E 8X:A)B) (E 8X:A )B ) among other things. For simplicity, assume that s doesn t affect terms in A,B involving X. Then, E)E and E doesn t contain any term affected by change to s. Thus, E = EliminateD(E,s). EA )A and A doesn t contain any term affected by change to s. Thus, A = b8s:E)Ac. EB)B and B doesn t contain any term affected by change to s. Thus, B = EliminateD(EB, s).?@A h= ;         =   > Y=%Quantified Abstract Domain: EliminateEliminate(G, s): Let G be E 8X:A)B Psuedo-code can be easily extended for multiple 8 T := { e | e occurs in A or B; Vars(e) X ; } A := A e2T NotEffect(<s,G>, e); E := EliminateD(E,s); B := EliminateD(BE,s); A := b8s:E)Ac ; return (E 8X: A )B ) NotEffect(<s,G>, e) denotes a constraint g s.t. Gg implies that s does not affect e.B 2  W 0'                   %                              2$ K   . #X<0Quantified Abstract Domain: Example of EliminateLet G = (F[0]>10 8k: 0k<F[0] ) F[k]>F[0] ) Then Eliminate(G, F[0]) = true 8k: A )B , where T = { k, F[k] } NotEffect(<F[0],G>, F[k]) = k0 NotEffect(<F[0],G>, F[k]) = true A1 = 0k<F[0] k 0 true = 1k<F[0] A = b8F[0]: F[0]>10 ) 1k<F[0]c = 1k<10 B = Eliminate(F[k]>F[0] F[0]>10, F[0]) = F[k]<10I  "<  # -    j Z>$Quantified Abstract Domain : Example%$  P4 ReferencesUninterpreted Functions  A polynomial time algorithm for global value numbering SAS 2004, S. Gulwani, G. Necula  Join algorithms for the theory of uninterpreted fns FSTTCS 2004, S. Gulwani, A. Tiwari, G. Necula Combination of Linear Arithmetic and Uninterpreted Fns  Combining Abstract Interpreters PLDI 2006, S. Gulwani, A. Tiwari Universally Quantified Abstract Domain  Lifting Abstract Interpreters to Quantified Logical Domains POPL 2008, S. Gulwani, B. McCloskey, A. TiwariZZ8Z"Z&ZZ'ZoZ8H ' o 6  [ rROutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted FnsZaZ ZZZaZa a t& 0 7 0 V 0 \@*Abstract Program Model / Problem StatementLinear Arithmetic e := y | c | e1 e2 | c e g := e0 Uninterpreted Functions e := y | F(e1,e2) g := e1=e2 Combination e := y | c | e1 e2 | c e | F(e1,e2) g := e0R    L stWOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns" ZaZ ZZZZOZa   O t& 0 7 0 V 0 ]A%Assertion Checking: Linear ArithmeticNon-deterministic Conditionals Equality Assertions: PTIME Perform abstract interpretation over linear equalities.  Affine relationships among variables of a program , Karr 76 Inequality assertions: ? Deterministic Conditionals: Undecidable Even with equality conditionals and equality assertions PCP Problem can be reduced to it.  A Note on Karr s Algorithm , H. Seidl, M. Muller-Olm, ICALP 2004 vv)v)> | aE*Reducing PCP Problem to Assertion CheckingThe following problem (PCP Problem) is undecidable. Given pairs: (u1,v1), & , (um,vm), where ui, vi 2 {0,1}* Decide: 9 a non-empty sequence i1, & , in such that ui1 & uin = vi1 & vin Given a PCP instance, we will construct an assertion checking problem over linear arithmetic such that the assertion holds iff the solution to PCP instance is false.^ldC  "t'  a }(`D*Reducing PCP Problem to Assertion Checking++ uXOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns" ZaZ ZZZZZ7Za    7 t& 0 7 0 V 0 ^B+Assertion Checking: Uninterpreted Functions  Non-deterministic Conditionals: PTIME Abstract interpretation over uninterpreted fns. Deterministic Conditionals: Undecidable PCP Problem can be reduced to it.  Checking Herbrand Equalities and Beyond , H. Seidl, M. Muller-Olm, VMCAI 2005 L&0)t&0)tbC # - bG*Reducing PCP Problem to Assertion Checking++ vVOutlineDecision Procedures Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Logical Abstract Interpretation Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns Universally Quantified Formulas Hardness of Assertion Checking Linear Arithmetic Uninterpreted Functions Combination of Linear Arithmetic and Uninterpreted Fns" ZaZ ZZZ*Z7Za * 7  t& 0 7 0 V 0 _CNAssertion Checking: Combination of Linear Arithmetic & Uninterpreted FunctionsOO7  Deterministic Conditionals: Undecidable No surprise since problem is undecidable for individual cases of linear arithmetic and uninterpreted fns. Non-deterministic Conditionals: ? At least coNP-hard Even for equality conditionals. A surprising result since assertion checking for individual cases of linear arithmetic (equalities) and uninterpreted fns is PTIME, but not for combination. In contrast, decision procedures for linear arithmetic and uninterpreted fns can be combined in PTIME using Nelson-Oppen methodology.  Assertion checking over combination of linear arithmetic and uninterpreted fns , S. Gulwani, A. Tiwari, ESOP 2006 j(j6(j6  / 2 c +L )dH/Reducing Unsatisfiability to Assertion Checking |y: boolean 3-SAT instance with m clauses IsUnsatisfiable(y) { for j=1 to m cj := 0; for i=1 to k do if (*) 8 j s.t. var i occurs positively in clause j, cj := 1; else 8 j s.t. var i occurs negatively in clause j, cj := 1; y = c1 + c2 + & + cm; Assert (y=0 y=1 & y=m-1); } ?Z'2..    6""@eIEncoding disjunction The check y=1 y=2 can be encoded by the assertion F(y) = F(1)+F(2)-F(3-y)). The above trick can be recursively applied to construct an assertion that encodes y=0 y=1 & y=m-1 Eg., y=0 y=1 y=2 can be encoded by encoding F(y)=F(0) F(y)=F(1)+F(2)-F(3-y)Oh1% <V !P52 wY ConclusionWe showed how logical reasoning traditionally used in theorem proving can be exploited in an abstract interpretation setting. We focused on conjunctive and universally quantified invariants over the domain of linear arithmetic and uninterpreted fns. There are several other interesting issues in program analysis that we did not address: Destructive updates Points-to analysis, Shape analysis Path-sensitive analysis Disjunctive invariants Inter-procedural analysis Procedure summaries~Z}ZYZZ#ZZZZZ~}Y#     /x!ABfP-a  0` ̙33` ` ff3333f` 333MMM` f` f` 3>?" dd@z?" dd@  " @ ` n?" dd@   @@``PR    @ ` ` p>>fN0 (    6  "@   T Click to edit Master title style! !$  0|  "0   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0 #  "`   Z*   0(  "< l    b*/17   0-  "    \* ~B  Hp?"@@H  0޽h ? ̙33y___PPT10Y+D='  = @B + Default Design00 @(    N1 r`r` )    x*  V++VV  N= r`r`  )   z*  V++VVd  c $ ?w   4  N\7 r`r`  ZF   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  T' r`r` @    x*  V++VV  T r`r`  @   z*  V++VVH  0~dm.F ? ̙3380___PPT10.47Lx P (    N r`r` )    x*  V++VV  N r`r`  )   z*  V++VV  Tl r`r` @    x*  V++VV  Td r`r`  @   z*  V++VVH  0~dm.F ? ̙3380___PPT10.47UC0:N0 RJ  (   x  c $S `       0S  "6 ?=    R  s *\; ; \V  0޽h ?"` ̙33y___PPT10Y+D='  = @B + 0fN0 ;$(  r  S ؒ @   r  S  0   H  0޽h ? ̙33___PPT10i./ g+D='  = @B + 0fN0 8$(  r  S  @   r  S  0   H  0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 8P(  r  S  @     S  *0<$D0   H  0޽h ? ̙33___PPT10.,`*+YD~'  = @B D9' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"%(+v  0fN0 =(\(  (x ( c $|Q @    ( c $&0<$@0   H ( 0޽h ? ̙33:2___PPT10.,`_+ED'  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(5%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(5G%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(G_%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(_%(+ 0fN0 8$(  r  S 1 @   r  S 1 0 1  H  0޽h ? ̙33___PPT10i.T-Yc+D='  = @B + 0fN0 p9$P(  $r $ S 1 @    $ S  !1 <$D0 1  H $ 0޽h ? ̙33___PPT10n.p-p+YDB'  = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*$%(+v  0fN0 =,\(  ,x , c $@11 @  1   , c $@21 0<$@0 1  H , 0޽h ? ̙33:2___PPT10.,`_+ED'  = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,5%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,5G%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,G_%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,_%(+ 0fN0 8P(  r  S -1 @  1    S .1 iZ<$D0 1  H  0޽h ? ̙33___PPT10n.,й+YDB'  = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* G%(+R 0fN0 %%9&/0"(  0r 0 S hv1 @  1   0 <]1  ?"6@ NNN?N m  ?y"0 2   0 <b1  ?"6@ NNN?N$u ?F"0 2   0 < 0 2       %0 6?"0@NNN?Nc ],$@0 &0@ 6?"0@NNN?N h ],$@0 *0@ 6?"0@NNN?NcC ,$D0 ,0 <1  ?"6@ NNN?N3- ?"0 2   -0 <1  ?"6@ NNN?N,g a & ?"0 2  b /0 NG!/HDI ljJ?"0@NNN?Njtu ,$D0H 0 0޽h ??` 00 000 00 00 000 000 0000 00000 0 000000000000000 0!0 0"0#0""0$0%0$0$0&0,0"0*0000/0 ̙33Q,I,___PPT10),.3.s+%*8Du*'  = @B D0*' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* 0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*!0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*/0%(DY' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<**0%(D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<**0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&0%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$0%(++0+00 ++0+00 ++0+00 ++0+ 00 ++0+"00 ++0+"00 ++0+$00 + 0fN0 P9$(  r  S 1 @  1  r  S 1 0 1  H  0޽h ? ̙33___PPT10i.g-+D='  = @B + 0fN0 =00(  0x 0 c $\1 @  1  x 0 c $41 0 1  H 0 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 8$(  r  S |L   L  r  S TL 0 L  H  0޽h ? ̙33___PPT10i.,+D='  = @B + 0fN0 940(  4x 4 c $ L   L  x 4 c $d L o0 L  H 4 0޽h ? ̙33___PPT10i.,+D='  = @B + 0fN0 9$(  r  S L @  L  r  S L 0 L  H  0޽h ? ̙33___PPT10i.T-I+D='  = @B +< 0fN0   9  0  (   r   S h&L @  L     6'L    ,$0 ty=sel(upd(M,a,0),b) ) y=0 y=sel(M,b) But y=sel(upd(M,a,0),b) ) y=0 and y=sel(upd(M,a,0),b) ) y=sel(M,b)\u$% ,!D/   N"L  ?"6@ NNN?N. c * ( ,$0 ?/"0 2  /   N4L  ?"6@ NNN?NJ O D ,$0 ?/"0 2     <6L  0 L  l 6J`^   ,$D0   6l9L  6J`^  12y3 ) y=2 y=3 But 2y3 ) y=2 and 2y3 ) y=32     NFL  ?"6@ NNN?Ng-  ?/"0 2     NIL  ?"6@ NNN?N{  ?/"0 2  H   0޽h ? ̙33  ___PPT10 .V-"+;/D'  = @B Dx' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(Ds' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(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 + 0fN0  9$(  r  S $2L @  L  r  S 2L 0 L  H  0޽h ? ̙33___PPT10i.[-+D='  = @B + 0fN0 9<$(  <r < S nL @  L  r < S DoL 0 L  H < 0޽h ? ̙33___PPT10i.:.X+D='  = @B +lJ 0N0 0(8x(  x  c $(uL @  L    <@L  ?"6@ NNN?N ,$@0 (Za1=2y2-y1 y14y3a2 y14y3 y1 = y2 y1 = a2 0 F20 22              <L  ?"6@ NNN?N  ,$@ 0 +a2=F(a1) y1=F(y1) y2=F(F(y1)) y1 = a1 Z 0 200 F2 00 22          <\L  ?"6@ NNN?N ty1 4y3 F(2y2-y1) y1=F(y1) y2=F(F(y1)) y14y3F;            @ 6?"0@NNN?NPY ,$@0  6?"0@NNN?NY ,$@0(  <L  ?"6@ NNN?No r ,$0 J Purification" 0 2  oz hN R   y ,$@03   <L  ?"6@ NNN?NN H y1=y2`0 2        B   BDo?"0@NNN?NhR Roz r' 7    e u ,$@03   <L  ?"6@ NNN?N' !  y1=a1`0 2        B  BDo?"0@NNN?Nr7 7 oz hN R    ,$@03  <L  ?"6@ NNN?NN H y1=a2`0 2        B  BDo?"0@NNN?NhR RB  <D?"0@NNN?N  ,$D0d  <L  ?"6@ NNN?N $A ,$0 ?: unsat@ 0 2     &  <L  ?"6@ NNN?N2  , ,$0 H Saturation" 0 2  H  0޽h ?/@ ̙332P TIMING4|27.5|28.4|39|6.2|4.1|24.1l2___PPT10L2.Р+ D1'  = @B D0' = @BA?%,( < +O%,( < +Dl' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*&.%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* "%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*&%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*&.%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* "%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*"*%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* "%(DY' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"*%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&.%(D' =%(Du' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(++0+0 ++0+0 ++0+0 ++0+0 ++0+0 + 0fN0 =40(  4x 4 c $HL @  L  x 4 c $8L 0 L  H 4 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 P;0(  x  c $< P @  P  x  c $P  P  H  0޽h ? ̙33___PPT10i.>.+D='  = @B +# 0fN0 ZR :"+P(  Pr P S &P \@  P  :z  7 P F @ ,$D0a P 6(P  ! 7 ! G =Join(G1,G2) = dG1 G2e"0        P 042P    LG2.0 2 2 P <h8P   (  F 0  T P c $ ( <   P 0 ;P    LG1.0 2 TB  P c $D TB  P c $D    P <?P  ?"6@ NNN?N  G Join Node" 0 2   F oV   P z{;  P 0DP |   G2 = G :g` 0 2   P 6KP z   = 0 T P c $l P <GS|H IS|E 9 f P 6G1HI1E D  P 6HPP   Kg.0  ` P 09  P 0UP J 1  >True0 2 P 0XP '   ?False0 2 P <[P  ?"6@ NNN?N3H BG "0 2   P 0cP o   G1 = G g` 0 2   P <iP  ?"6@ NNN?N\ 0V  NConditional Node"0 2  z Y e P 9 E ,$D0 P 6VP ) % 8|G =Postcondition(y := e, G ) =d 9y : G [y /y] y=e[y /y] eZ?0 !  > P 0,yP C"?%   [ y := e80 2T P c $w x$ T P c $wm w  P <~P  ?"6@ NNN?NY S  BG "0 2    P <P  ?"6@ NNN?N[ke MAssignment Node"0 2   )P <P  m yw  P  ) *P 0P  D An abstract interpreter computes abstract values or facts at each program point from facts at preceding program points using appropriate transfer fns. Ph +P 0`P   ,$0 Transfer functions for a logical abstract interpreter thus involve providing operators for over-approximating disjunction and existential quantifier elimination. PH P 0޽h ?oPPPPPPPPPPPP ̙33SK___PPT10+."/b+(D'  = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*+P%(+8+0++P0 +H 0fN0 @:XO(  Xr X S خP @  P   X S ̗P 0<$D0 P   X 0|P C"? 1 ,$@0 _ assert(g) 0 2  X c $ @,$@0 X c $ ,$@0  X <(P  ?"6@ NNN?N  ,$0 BG "0 2   X <lP  ?"6@ NNN?NE D?,$0 8Validate iff G : g is unsat>0 2      ,  H X 0޽h ?/@XXXX ̙33  ___PPT10 ._/0+j&DD '  = @B D ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =%(D3' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*X%(++0+X0 ++0+X0 ++0+X0 + 0fN0 p:d$(  dr d S nP @  P  r d S rP 0 P  H d 0޽h ? ̙33___PPT10i.j/C+D='  = @B + 0fN0 =80(  8x 8 c $(P @  P  x 8 c $XP 0 P  H 8 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 0:T:(  Tr T S P @  P   T S dR G P  " (0PpH T 0޽h ? ̙33___PPT10i.$/d"+D='  = @B + 0fN0 P:\F(  \x \ c $R @  R   \ c $R  R  " (0PpH \ 0޽h ? ̙33___PPT10i.$/d"+D='  = @B +n^ 0yN0 %%`:#%`$(  `v ` <i  ?"6@ NNN?N<,$0 1y<51 z=y+2n0 2          x ` c $|f @  R   ` < ?"6@ NNN?Np- }  ` <L  ?"6@ NNN?N   Dy < 50"0 2   ` <  ?"6@ NNN?N1  My := 0; z := 2;"0 2   ` <  ?"6@ NNN?N $  K y++; z++;"0      `@ 6?"0@NNN?N}   `@ 6?"0@NNN?N  p  ` <41R  ?"6@ NNN?N' q !  L&0 2   "  `@ NZGNHZI?"0@NNN?N}    ` 6?"0@NNN?N  r ` NZGJH0I'a?"0@NNN?N 2 ` B ?"6@ NNN?N @ ( ` <<8R  ?"6@ NNN?NN 7 ,$0 Jy=0, z=2& 0 2  M ` <  ?"6@ NNN?N,,$ 0 o y=1 z=3J 0 2       ` <:R  ?"6@ NNN?ND- [ > C?&0 2   ` <,4R  ?"6@ NNN?N I w  C?&0 2   ` <AR  ?"6@ NNN?N  C?&0 2   ` <ER  ?"6@ NNN?N' U  C?&0 2   ` <IR  ?"6@ NNN?Nv p k trueJ0 2      M ` <NR  ?"6@ NNN?N5U /,$0 o y=0 z=2J 0 2      M ` <WR  ?"6@ NNN?N e ,$0 o y=0 z=2J 0 2       ` <,aR  ?"6@ NNN?NK@ CE,$ 0  0y1 z=y+20 2               ` <cR  ?"6@ NNN?N W ^ ,$ 0  0y1 z=y+20 2               ` <T]R  ?"6@ NNN?N,$0  1y2 z=y+20 2               ` <tR  ?"6@ NNN?NKC {E,$0  0y2 z=y+20 2              s ` <}R  ?"6@ NNN?NP@ w J,$0  0y z=y+2n 0 2          v ` <R  ?"6@ NNN?N Z  ,$0 0y<50 z=y+2n0 2          2 ` B ?"6@ NNN?N  v !` <x  ?"6@ NNN?NQE ZK,$0 0y<51 z=y+2n0 2          P "` <БR  ?"6@ NNN?NH B ,$0 r y=50 z=y+2J 0 2       #` <4R  ?"6@ NNN?N  CFalse"0 2   $` <$R  ?"6@ NNN?Ni L c  BTrue"0 2   %` <R  ?"6@ NNN?N   K Assert (z=52)"0    H ` 0޽h ?_`` ``` ``` `` ```` ̙338| TIMING`|0.7|0.6|0.4|0.3|0.6|0.5|0.4|0.4|0.3|0.4|0.4|0.57___PPT10s7.)ԏ+ND1'  = @B D1' = @BA?%,( < +O%,( < +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@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@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =A@BBBB0B%(D' =1:Bhidden*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@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:Bvisible*o3>+B#style.visibility<*`%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*`%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*`%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*`%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*`%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*!`%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*`%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*"`%(+x+0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+`0 ++0+!`0 ++0+"`0 + 0fN0 =<0(  <x < c $R @  R  x < c $|R 0 R  H < 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 :lF(  lx l c $R @  R   l c $W G R  " (0PpH l 0޽h ? ̙33___PPT10i.$/d"+D='  = @B + 0fN0 :pF(  px p c $p W @  W   p c $xW G W  " (0PpH p 0޽h ? ̙33___PPT10i.$/d"+D='  = @B +{ 0+N0 w w:6@xt(  xx x c $+W @  W   x B\-W ?"0@NNN?N 0  DG1&( 2  x B ?"0@NNN?N P  DG2&( 2 *F 0  x 0  x s *d( S"`?` Z F:0 2 x s *d- S"`?@ cy2, FB0 2   x s *0W S"`?@ sy1, FR0 2   x s *2W S"`?0* @  y3,y4 y5r 0 2     x s *0:W S"`? [ F:0 2  xB H?"0@NNN?N`  x H?"0@NNN?N` x s *H?W S"`?* h=  ^ y6>0 2  x s *$DW S"`?* =  ^ y7>0 2  xB H?"0@NNN?Nx*  x H?"0@NNN?N*  x # 0e0e    BhC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||80`<h @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab P0  x # 0e0e    BC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||D0`H0 @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab0  x # 0e0e    BhC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||80`<h @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@ x # 0e0e    BC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||D0`H0 @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abx&*F ` C  x ` C  x s *LKW S"`?P  Z F:0 2 x s *$PW S"`?   cy2, FB0 2  x s *VW S"`?   sy1, FR0 2  x s *\W S"`?8 0 0 C  zy4,y5 X0 2   x s *HcW S"`? P  Z F:0 2 xB H?"0@NNN?N0   x H?"0@NNN?N 0  x # 0e0e    BhC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||80`<h @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 0 *  x # 0e0e    BC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||D0`H0 @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab`  *   x s *hiW S"`?p * ` =  y6,y7 d0 2   !x s *pW S"`?0 C  ^ y3>0 2  "x H?"0@NNN?N0 4 0  #xB H?"0@NNN?N 0 0  $x # 0e0e    BhC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||80`<h @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab   %x # 0e0e    BC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||D0`H0 @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab (  'x HvW ?"0@NNN?N (  oG = Join(G1,G2)D 2   l (O  8x dO ,$D0 (x 0dNW S"`?H Z F:0 2 )x 0W S"`?X cy2, FB0 2  *x 04W S"`?X sy1, FR0 2  +x 0,W S"`?@8 PK  y4,y5 j0 2   ,x 0W S"`?` [ F:0 2 -xB H?"0@NNN?N(8 .x H?"0@NNN?N8 /x 0؜W S"`?6 hI  ^ y6>0 2  0x 0$W S"`?(< O  ^ y3>0 2  1x H?"0@NNN?N(H8  2xB H?"0@NNN?N(<  3x 0lW S"`?5 H  ^ y7>0 2  4xB H?"0@NNN?Nx6  5x H?"0@NNN?N5  6x # 0e0e    BhC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||80`<h @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 7x # 0e0e    BC DEF 5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||D0`H0 @   "0e@      @ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN 5%  N 5%  N    5%    !"?N@ABC DEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abHxH x 0޽h ?xx xx x x xxx xxxxxxxxxxx"xx!x#x )x(x-x )x,x.x (x+x1x (x0x2x ,x/x4x,x3x5x ̙33___PPT10n.+rP+}DB'  = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*8x%(+ 0fN0 =@0(  @x @ c $W @  W  x @ c $\W 0 W  H @ 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 <:(  r  S |W @  W    S dW 0 W  " (0PpH  0޽h ? ̙33___PPT10i./+D='  = @B + 0fN0 ;:(  r  S W @  W    S  Y T0 W  " (0PpH  0޽h ? ̙33___PPT10i./Ö+D='  = @B + 0N0 1+)+:))y((    B Ԕ?"6@ NNN?N=x  c $ @      <ؒ ?"6@ NNN?NT,$@0 y=F(a) a=ha,bi0 200 22          ,  <xޒ ?"6@ NNN?N4,$@0  z=a-1 a=ha,bi0 200 22            <4  ?"6@ NNN?NQ,$@0 y=F(b) b=ha,bi0 200 22            ,  <8 ?"6@ NNN?N ,$@ 0 z=b-1 b=ha,bi 0 2 00 22            5  <  ?"6@ NNN?Nf z=a-1 y=F(a) >0 2       4   <  ?"6@ NNN?N"- " z=b-1 y=F(b)>0 2         @ 6?"0@NNN?N,$@0   6?"0@NNN?N,$@0  @ 6?"0@NNN?Na,$@ 0   6?"0@NNN?N,$@0i  <@  ?"6@ NNN?Nf mf ,$@0  ha,bi=1+zL 0 2          <  ?"6@ NNN?Nq =q ,$@!0  y=F(ha,bi)Z 0 2          L  <8 f?"6@ NNN?Nk ,$@0 nJoinla20 2    @ 6?"0@NNN?Nka ,$@0 @ 6?"0@NNN?N 35f ,$@0L  <t f?"6@ NNN?NqLq ,$@0 nJoinuf20 2     6?"0@NNN?NL,$@0 @ 6?"0@NNN?N,$@0 @ 6?"0@NNN?Nq q ,$@ 0T  <T f?"6@ NNN?NL y L,$@-0 vEliminateuf+la20 2     <  ?"6@ NNN?N< 8  Fy=F(1+z)" 0 2    6?"0@NNN?Nf 3 ,$@*0 @ 6?"0@NNN?Nq  ,$@+0  6?"0@NNN?N ,$@02  Nt  ?"6@ NNN?Nt- J$0( 2   2  <?"6@ NNN?N ,$@10  6?"0@NNN?N L ,$@,02  <?"6@ NNN?N2   <?"6@ NNN?N !@ 6?"0@NNN?N " 6?"0@NNN?N" #@ 6?"0@NNN?NL ,$@00 $ <  ?"6@ NNN?NI I,$@.0  { ha,bi }Z 0 2           %@ 6?"0@NNN?N  ,$@/0# & <  ?"6@ NNN?N]M  y Joinuf+la: 0 2      ' 6   1G :&Combination: Example of Join Algorithm2 ( <?"6@ NNN?N ,$D20 ) 6?"0@NNN?N H  0޽h ?/@           !  "(#$%() ̙33UP TIMING4|27.9|7.6|3.3|38.9|28|21.7T___PPT10T.sЪ+9VDBR'  = @B DQ' = @BA?%,( < +O%,( < +D, ' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*%(D ' =%(DI ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* %(D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* %(D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =%(DV' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(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+0 ++0+$0 + 0fN0 ;F(  x  c $p&Y @  Y    c $ g Y  " (0PpH  0޽h ? ̙33___PPT10i./Ö+D='  = @B +5u 0N0 66;77Q3(    6?"6@ NNN?Ng?f 6,$@0  B Ԕ?"6@ NNN?N%=x  c $ @     <,  ?"6@ NNN?N? ,$@0 a=F2(b) c=F(b)n0 2              <  ?"6@ NNN?NMG,$@0  aby z=c+10 2                   <P  ?"6@ NNN?NW  4 aby z=c+1 a=F2(b) c=F(b)!0 2                         $  <  ?"6@ NNN?N. I { a, b, c }" 0 2    @ 6?"0@NNN?N,$D0   6?"0@NNN?N ,$@0!   <`  ?"6@ NNN?N43 ,$@ 0 C{ b }"0 2  a   <  ?"6@ NNN?N = ,$@0  a y z=c+1Z0 2            @ 6?"0@NNN?N64,$@ 0Q  < f?"6@ NNN?N t. ,$@0 s Eliminateuf2 0 2     @ 6?"0@NNN?N j,$@0&  < f?"6@ NNN?N. U .,$@0 H Substitute" 0 2    </Y  ?"6@ NNN?NM2 M d F(z-1) y> 0 2      2  N6Y  ?"6@ NNN?Nt- J$0( 2   2  <?"6@ NNN?N52  <?"6@ NNN?N1  6?"0@NNN?N @ 6?"0@NNN?N  6?"0@NNN?N.or,$@0  <:Y  ?"6@ NNN?N7 , ,$@ 0 &c a z-1 a aF(z-1)  0 2 00 22            (  <DY  ?"6@ NNN?N}' ~Eliminateuf+la:0 2       6IY  G C/Combination: Example of Existential Elimination2  <?"6@ NNN?Nn  6?"0@NNN?NnnMXz    ,  &,$@!0B B BDjJ?"0@NNN?N   <MY  ?"6@ NNN?N<  jc a z-1@0 2     \z ]D >     ,$@"0B !B BDjJ?"0@NNN?N]    " <SY  ?"6@ NNN?ND  >  na aF(z-1)@ 0 2     K # <YY f?"6@ NNN?N,$@0 mDefla20 2   K $ <]Y f?"6@ NNN?N  ,$@0 mDefuf20 2    %@ 6?"0@NNN?N-f O,$D 0Q & <TcY f?"6@ NNN?N N ,$@0 s Eliminatela2 0 2    " ' NGHVI ?"0@NNN?NEMNe ,$D0 ( 6?"0@NNN?N67 ,$@ 0 )@ 6?"0@NNN?N 4e ,$@0 * 6?"0@NNN?N 4ti ,$@0" +@ HG_HIW?"0@NNN?NI. i ,$D0 ,@ 6?"0@NNN?N  ,$@0F - <,kY  ?"6@ NNN?N  ,$@0 ha = F(c)" 0 2   . 6?"0@NNN?N Q Q ,$@0 / 6?"0@NNN?N (  0@ 6?"0@NNN?N oQ . ,$@0 1 6?"0@NNN?N o. ,$@0 2 NZG5H{I5?"0@NNN?N U  ,$D02 3 6?"6@ NNN?Nf ,$@#02 4 6?"6@ NNN?Ng,$D$0 5 6?"0@NNN?Nu,$@0 6 6?"0@NNN?Nj ,$@ 0 7 6?"0@NNN?Nu,$@0H  0޽h ?    3 % &' ( &) *+& ,-. /-0 124#53$647 ̙33>N TIMING2|7.8|12.8|38.9|9.6|4|12.9=___PPT10=.sЪ+~D;'  = @B Dm;' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D" ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*7%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%%(Dq' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*&%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*)%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*'%(Dd' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*-%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*+%(Dq' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*1%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*0%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D" ' =%(D ' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*#%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*5%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*6%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*3%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*4%(++0+0 ++0+0 ++0+ 0 ++0+ 0 ++0+0 ++0+0 ++0+#0 ++0+$0 +Z 0yN0 $$@>\o#(  \ \ <Y  ?"6@ NNN?N0J ,$0 1i, N(x)=N(y)+iJ0 2      , \ B  ?"6@ NNN?Nj Zstruct List { struct List* next; } x, y; N(z) = 0, if z = null = 1 + N(z!next)8[ TH !x \ c $hY 0>  Y   \ < ?"6@ NNN?NTd a , \ <Y  ?"6@ NNN?N "   ynull@0 2       \ <(Y  ?"6@ NNN?NqT  _y := x; i := 0;40 2    N \ <XY  ?"6@ NNN?Nz g  i := i+1; y := y!next;P0            \@ 6?"0@NNN?Na z   \@ 6?"0@NNN?N T  \ <Y  ?"6@ NNN?N b   L&0 2     \ HGpH Ip?"0@NNN?N` t   \ 6?"0@NNN?Ns qr \ NZGH@uI7U?"0@NNN?N 2 \ B ?"6@ NNN?Nj ( \ <Y  ?"6@ NNN?N ,$0 Jy=x, i=0& 0 2    \ <Y  ?"6@ NNN?N;DU ,$ 0 BLy=x!next, i=1, xnull N(x)=N(x!next)+1'0 2             > \ <Y  ?"6@ NNN?N( " C?&0 2   \ <Y  ?"6@ NNN?N  C?&0 2   \ <Y  ?"6@ NNN?NC C?&0 2   \ <Y  ?"6@ NNN?N  C?&0 2   \ <Y  ?"6@ NNN?NZR e T k trueJ0 2      ( \ <Y  ?"6@ NNN?N( ",$0 Jy=x, i=0& 0 2   \ <TY  ?"6@ NNN?N  ,$0  y=x, i=0, ynullL0 2       \ <lY  ?"6@ NNN?N ,$ 0 0i1 N(x)=N(y)+in0 2          , \ <\  ?"6@ NNN?N6 P ,$0 60i1, y null N(x)=N(y)+i0 2             , \ <\  ?"6@ NNN?N'A ,$0 1i2, N(x)=N(y)+in0 2          , \ <|\  ?"6@ NNN?N Y,$0 0i2, N(x)=N(y)+in0 2          , \ <x\  ?"6@ NNN?N [,$0 0i, N(x)=N(y)+iJ0 2      , \ <\  ?"6@ NNN?N8 R ,$0 20i, y null N(x)=N(y)+ip0 2         ,2 \ B ?"6@ NNN?Nl N H \ 0޽h ?_\\ \\\ \\ \\ \\\\ ̙33!5| TIMING`|0.7|0.6|0.4|0.3|0.6|0.5|0.4|0.4|0.3|0.4|0.4|0.54___PPT10u4.)ԏ+u`Dy/'  = @B D4/' = @BA?%,( < +O%,( < +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@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<*\%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*\'%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*\%(D' =A@BBBB0B%(D' =1:Bhidden*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<*\%(Do' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*\%(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:Bvisible*o3>+B#style.visibility<*\%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*\%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*\%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*\%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*\%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*\%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*\%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*\%(++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 ++0+\0 + 0fN0  >P0(  Px P c $Y\ @  \  x P c $Z\ 0 \  H P 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0  <$(  r  S e\ @  \  r  S j\ 0 \  H  0޽h ? ̙33___PPT10i.0Ѕ+D='  = @B + 0fN0 0<:(  r  S o\ @  \    S t,] E \  " (0PpH  0޽h ? ̙33___PPT10i.(0Y(+D='  = @B + 0fN0 P<$(  r  S  @    r  S  0   H  0޽h ? ̙33___PPT10i.0+D='  = @B + 0fN0 @<:(  r  S T @      S x S   " (0PpH  0޽h ? ̙33___PPT10i.80F+D='  = @B + 0fN0 <F(  x  c $ @      c $ h   " (0PpH  0޽h ? ̙33___PPT10i.80F+D='  = @B + 0fN0 <:(  r  S  @      S d7 0   " (0PpH  0޽h ? ̙33___PPT10i.0%-+D='  = @B +sw 0yN0 22<''l1(  4  <  ?"6@ NNN?N.(,$0 V2in 8k: 0k C?&0 2    <4  ?"6@ NNN?N   C?&0 2    <$  ?"6@ NNN?N9Cq3 C?&0 2    <d  ?"6@ NNN?N' U  C?&0 2    <  ?"6@ NNN?Nv p k trueJ0 2      P  <  ?"6@ NNN?N5U L /,$0 r i=1 F[0]=0J 0 2      P  <x  ?"6@ NNN?Nz  t ,$0 r i=1 F[0]=0J 0 2      4  <$  ?"6@ NNN?N=I 7,$0 V1i2 8k: 0k+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@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@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*$%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*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<*%(Do' =%(D' =%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*$%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =A@BBBB0B%(D' =1:Bhidden*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(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 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+0 ++0+ 0 ++0+$0 ++0+$0 ++0+%0 ++0+&0 + 0fN0 ;$(  r  S (] @  ]  r  S ] 0 ]  H  0޽h ? ̙33___PPT10i./+D='  = @B + 0fN0 0>T0(  Tx T c $ ] @  ]  x T c $|] 0 ]  H T 0޽h ? ̙33___PPT10i.,`_+D='  = @B +  0WN0  <t(  x  c $_ =@  _  x  c $8 _  _  F [  &  6(_  Q Assignment(0     0_ C"? o y := eL0 2T  c $eeT  c $e[eF I ^   I ^   6_ I f= U Conditional*0     6_   = 0 T   c $  l   <GS|H IS| : f  6G1HI1}:  6"_ > & Sg60 `  0 }  0'_ k ?3 & >True0 2  0%_ f^ ?False0 2F G    Q  68/_ D  wNon-deterministic Assignment(0  8X  08:_ C"? J  [ y := ?80 2T  c $  T  c $ G F -  D  6|?_ E: M Assertion( 0     0E_ C"?-  Assert(g)J 0 2 T  c $T  c $H  0޽h ?     ̙33___PPT10i.O0N:+D='  = @B + 0fN0 >l0(  lx l c $V_ @  _  x l c $xW_ 0 _  H l 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 <$(  r  S $e_ @  _  r  S i_ D0 _  H  0޽h ? ̙33___PPT10i.00) +D='  = @B + 0fN0 = $(   r   S r_ @  _  r   S r_ 0 _  H   0޽h ? ̙33___PPT10i.0О^+D='  = @B + 0yN0 =E(   7 B ?"6@ NNN?N o  8 BT}_  ?"6@ NNN?NG  g  Ay=z ? 0 2  x  c $,_ @  _    <@_  ?"6@ NNN?N+P x My := 1; z := 1;"0 2    <d_  ?"6@ NNN?NoC I ?-y := 2|u1| y + ; z := 2|v1| z + ;.0                           6?"0@NNN?Nx1 3    6?"0@NNN?N-1 1 +2  B ?"6@ NNN?N  S  ! <̔_  ?"6@ NNN?N   CFalse"0 2   " <_  ?"6@ NNN?N   BTrue"0 2   # <_  ?"6@ NNN?N?  K Assert (d=0);"0      $ <_  ?"6@ NNN?N 8A a-y := 2|um| y + ; z := 2|vm| z + ;.0                        ) %@ 6?"0@NNN?N+Y  & 6?"0@NNN?N  * 6?"0@NNN?NIY p  +@ 6?"0@NNN?NA p  . < ?"6@ NNN?Np    / <ܰ_  ?"6@ NNN?N   A *"0 2  2 1 B ?"6@ NNN?N O G 3 < _  ?"6@ NNN?N ! 7 Fd := 1; " 0     4 ≮_  ?"6@ NNN?N  dJ Ed := 0;"0     5 6?"0@NNN?N7 ? 6@ 6?"0@NNN?NJ ? : NGiHIi?"0@NNN?N   ; HG5H[I5?"0@NNN?N o  <@ 6?"0@NNN?N  r =@ NG9H\Ii?"0@NNN?N  B C <D?"0@NNN?N}  D@ 6?"0@NNN?N# 3  E@ 6?"0@NNN?N>  p H  0޽h ?1  1% 1$& .*$.+3#54#673:74;.7<.1=1D!.E ̙33| TIMING`|0.7|0.6|0.4|0.3|0.6|0.5|0.4|0.4|0.3|0.4|0.4|0.5___PPT10i.)ԏ+D='  = @B + 0fN0 >p0(  px p c $_ @  _  x p c $_ 0 _  H p 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 <0(  x  c $ _ @  _  x  c $_ 0 _  H  0޽h ? ̙33___PPT10i.00) +D='  = @B +" 0yN0 @= e(    < ?"6@ NNN?N    <`_  ?"6@ NNN?NG :fg  Ay=z ? 0 2  x  c $_ @  _    <_  ?"6@ NNN?N+Y x My := 1; z := 1;"0 2  ;  <_  ?"6@ NNN?NSI y := u1(y); z := v1(z);^0            6?"0@NNN?Nxy{  6?"0@NNN?N-yy+   <\_  ?"6@ NNN?N   CFalse"0 2     <_  ?"6@ NNN?N @  BTrue"0 2     <_  ?"6@ NNN?N?U  K Assert (d=0);"0    o   <_  ?"6@ NNN?N6 A y := um(y); z := vm(z);^0          , @ 6?"0@NNN?N+"_  6?"0@NNN?Ng   6?"0@NNN?NI"Zp  @ 6?"0@NNN?NAZ p   < ?"6@ NNN?Np \X   <\a  ?"6@ NNN?N c  A *"0 2  2  B ?"6@ NNN?N_G  <a  ?"6@ NNN?N i\7 Fd := 1; " 0      <La  ?"6@ NNN?N _ J Ed := 0;"0      6?"0@NNN?N78? @ 6?"0@NNN?NJ8 ?  NGiHIi?"0@NNN?N    HG5H[I5?"0@NNN?N   @ 6?"0@NNN?N UZ r @ NGZH\Ii?"0@NNN?N\g B  <D?"0@NNN?N @ 6?"0@NNN?Nk{ @ 6?"0@NNN?N>Z^p    <Pa  ?"6@ NNN?N   oThink of ui, vi as sequences of applications of unary fns, one corresponding to 0 and other corresponding to 1.Tp0 2      a   eH  0޽h ?          ̙33| TIMING`|0.7|0.6|0.4|0.3|0.6|0.5|0.4|0.4|0.3|0.4|0.4|0.5___PPT10i.)ԏ+D='  = @B + 0fN0 p>h0(  hx h c $La @  a  x h c $$a 0 a  H h 0޽h ? ̙33___PPT10i.,`_+D='  = @B + 0fN0 <0(  x  c $P(a M  a  x  c $,a 0 a  H  0޽h ? ̙33___PPT10i.00) +D='  = @B + 0N0 P=0(  x  c $<4a @  a  x  c $5a  a  H  0޽h ? ̙33___PPT10i.O@>)j+D='  = @B + 0ǐN0 p=$0(  $x $ c $Ja @  a  x $ c $Ja 0 a  H $ 0޽h ? ̙33___PPT10i.n+D='  = @B + 0fN0 >t$(  tr t S Na @  a  r t S Oa 0 a  H t 0޽h ? ̙33___PPT10i.Z1+D='  = @B +0 0 4(   d  c $w     s *z  ZF    H  0~dm.F ? ̙330 8((  ^  S w   a   c $va  ZF  a   H  0~dm.F ? ̙3380___PPT10.n˅<%0 :L(  ^  S w   a   c $qa  ZF  a  B B nyhy uhy7H  0~dm.F ? ̙3380___PPT10.'<&0 ;L(  ^  S w   a   c $<~a  ZF  a  B B nyhy uhy7H  0~dm.F ? ̙3380___PPT10.'H0 `= ((   ^   S w   a    c $  ZF  a   H   0~dm.F ? ̙3380___PPT10.Rۉrd0|#w  c( J~d -q(y*0Mg&.3`q,,.1&: |=;?@mgZiFM4psxIvX0X~{ \p6rX'9d[]k2{)^qpPn#0M4Um`mw1Oh+'0p hp  PowerPoint PresentationSumit Gulwani2686Microsoft PowerPoint@P7Ƌ@@ >n^ GLg  6  y--$xx--'@BComic Sans MS-. 62 Logical Abstract Interpretation."System9-@BComic Sans MS-. 2 <> Sumit Gulwani.-@BComic Sans MS-. 02 C*Microsoft Research, Redmondt.-՜.+,0     9 On-screen ShowNo!>' GTimes New RomanComic Sans MS WingdingsSymbolcmsy10Arialcmmi10 MT ExtraDefault Design Logical Abstract InterpretationFinal Goal of the classOutlineDecision ProceduresOutlineLinear ArithmeticDifference ConstraintsOutlineUninterpreted Functions!Uninterpreted Functions: Example$Uninterpreted Functions: ComplexityOutline=Combination of Linear Arithmetic and Uninterpreted FunctionsCombining Decision ProceduresConvex TheoryExamples of Non-convex TheoryStably Infinite TheoryNelson-Oppen Methodology'Combining Decision Procedures: ExampleOutline Logical Abstract Interpretation4Transfer Functions for Logical Abstract InterpreterFixed-point ComputationInitializationOutlineDifference ConstraintsDifference Constraints Difference Constraints: ExampleOutlineUninterpreted FunctionsUninterpreted Functions)Uninterpreted Functions: Example of JoinOutline Combination: Decision ProcedureCombination: Join Algorithm 0Combination: Existential Quantifier Elimination 6Abstract Interpretation over Combined Domain: ExampleOutline'Universally Quantified Abstract Domain+Quantified Abstract Domain: Join Algorithm,Quantified Abstract Domain: Example of Join&Quantified Abstract Domain: Eliminate&Quantified Abstract Domain: Eliminate1Quantified Abstract Domain: Example of Eliminate%Quantified Abstract Domain : Example ReferencesOutline+Abstract Program Model / Problem StatementOutline&Assertion Checking: Linear Arithmetic+Reducing PCP Problem to Assertion Checking+Reducing PCP Problem to Assertion CheckingOutline,Assertion Checking: Uninterpreted Functions+Reducing PCP Problem to Assertion CheckingOutlineOAssertion Checking: Combination of Linear Arithmetic & Uninterpreted Functions0Reducing Unsatisfiability to Assertion CheckingEncoding disjunction Conclusion  Fonts UsedDesign Template Slide Titles>%_*o Sumit GulwaniSumit Gulwani  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345679:;<=>?ABCDEFGIJKLMNOZRoot EntrydO)Current UserHSummaryInformation(8PowerPoint Document(NoDocumentSummaryInformation8@