ࡱ>  n! Յ]'UՌ뵷PNG  IHDRF='PLTE  2/*fU<:6USP%#jgc]xDA-sGɍNhB`Դx /Ҳ~_m;#]=Z@f^tvj<7aaϙܲ7#kWljiRGڼQ8iI2$oxkQ K,{gjmYRjۅa^.t-\SeԖFD+#uZ˺8 Us=>ي]țTA*g x*<QQ:Mw,˶UuݦMK}q2ҭ"&3zRJ@Xt &m:\***HD%O59ygsc jR<39Q*7zLa<<**Y2U1MQ\OIXRl$A e* oD׵FqBmNbJ-BM21<ĕr",Km)?j(TzgBCBv{Ic޴oJ,",w#Qђr6 K=bi [0@rV&Rgx[1+7`mEݗ7]td0dTi5g;ěun|MW҄4|6s ΞD@AVjV#ITrdB!*dG!]bry1w~=Rz&kt-H5^dS΋H<{}ߐ1*u/? ۛwoBmA& LD,ˊ1SE_^=xrzPb AsE)ɶk.$"z89yؓ߂%,ãXr>Oӫ/"2Oc~\GG &0y$i>jY0F*n˙_ˉ|}Y‚X3ag񥈐Xq,`;o><3c/0Ai0B.Ja!S_^0hkD S? z$ KLwo /ꃾ,|2nKטAM YyD,mDH˯ {e AE_a)R?].釋zF0v SG6T(_cܤ ,>x[-šӰ{UwH*B5v7L3vW~`l뫷p'El Em!`RXؗW( >>aޠDoZ <ټ.ED+x4 g!F3҂Sqۯ~`8;k&''pN\fktd^J&x5 EZsÜŞlJ33P@7PbenxC gG;y9} bÿ s=HM}xũs4ER\G;tTd d۰H=;-;g5l0(:؟0v=ΰw;'d8dGM*vR,6hHV|pfm+6TdO# !H3)N]9cV8ϟ\9˽Oϱ<!V!ĶUsgU߼+`]s ]gΪ1-Rqk[sg~J#!ES0kGXzE6!Lmj.2MnzzfzfW>?噽susKRkU.ϯ笡gX:/]~,6wv,|kx<)4G:nw 5sf?U[֖n%RXLa-~ }#6O5o6$A(m88<Z7RZ*TRO3Z:1PK;*|9L&8sij98OمW, )ݸ8äa|@W^1Z3N?M+`NXq6;iUZTcaW/Y|l_J qaxɤiҒxu+MbK9Uji})MaΫBV\2 YGA,(6qNS1eR 98=1"$e_?e3wIԍ*cBVGk8f&NdWbv$N:Qdvx_^݇=7fMcqyAOz=x(z;˗Gn^|L?*A$mތ{" k${i7y>t| rTBmY%;@<Ӣ*W +RP \fxAFvC9H3g6b+ڱ, K/ .M^Ԛ3b2ߔ.D _U.g# *8(/2u%:(T` yg#w6$}PQq:t8PL07Uل=]*%λ30۝bdrBEƌ['e姩N\њ|J Ln*qloB('ڀ[2ڡߝj%6Q{܋P+DW"[,xyŨ7UVp5*MjBu:T++^ml ;s+}%cczBZIENDB`@=1WpS0'p?*xڽXLUu?=C%DSlac(!L+~tk!mdcRՐ`fǜ%?x;}\3;|?|\Lp)IF*7<ٲ*VD9!oc/-@;6J8Bݧ> HH:~ $SPm EL4 C(8׾uOK`u49JCnC2#Eml@9tV t2\&vHuھ=j ]D{ΫPIxOgB5uBu֎{1nH54<*&yVi=RLCC/_$Y!{ǯz04`QWH|ځr ǚ|vNN0< 'p%' #7 N 3UaPY|r!yX?L?cYZt^xo=Cڎ8y˲#AyzG滟PsRZ!ZvEv;ឰ{ᵐ{nW /e]NYr?D:e5'Bx { pRIfD^}Ԯ4O[ QNuw3& H&.я7jJ}7xh? ~; x[bCtxDLvgڶ U\^z6wA; ʡ NG%_X?}yX7E9 P6zS^tt3t $pHV؀s֢_Ӷݕ;|-~:2Z]{+,αƝxTƾԁ4sc$`2 qnsL@8K$$UUGR=am/4LwF;wG'^'6r2;wAD}# U. \2C D'/uC}\V(_(kWїvk_YOSY݂hZj;n~!;N>05ޥ8]ҟ'm`'OhhGucoL<9kܬ\rRc%שcېxDؒ:> uрvY͙u^;Ta@ڍ\ZHCq>ǗKl~$/e8>,~5qǛ#Ec(lG~9kVQw|p_=HMe}l?8n'y|4ߚ8Nճޅ|-|_xj>?Y)?f8`!UCw)k^hW} !p#xmJAƿݽ$ 6 UDZ h'81M ־/A|k X:;~s;ow-L4Yps2!Jr;1)K2OHOoƣc9.מFuRy缚nQ tDtXXJE薞5.CI LZ{5ڢ%YC~7<)!G~PO8[̀aQt'H^عI)b2F2*҂x׎0m?)R$`Yg;@=L Ȝ4(iY=x] TUU^^ h. B""1DSgI(FKc)ZSTCZr,,3qʦ,+2+Yb'm6*s=\}P~}> 0 }dd/$3|#>UWb` N)%#HpFp#p n>6jV[~c `a<+ oel`8!P+ZOF[6޿3[c+m 7Ez;Or3k \Aݧ<ıvĶD g ǣ};^[cb82b; ҹd4'Tk,t{<(cU?ݑƥ R{+ƛejC p~P6| k~"m-{!&(.A=>T5+=Na\+巍OQ_Fjn$\:6 -&)ꤍÁ ם3_ɗ|5|%5;cu+sx מcqBlx܄< ;koܽ}v `(Cߔ{Ci;/nϜֳّQO7SOP:/~k 6& &;uЄ N8Z,sȑ`E$_n![snw {4w/.w֨ \Vjr*xlv2񹿖-803qNԋx7_+Z|-R޷ 3a˃V >va >TƦj_%ЖypC'Gݥl½p}8v>/rp}9&񬶮x>+n_<Y%&ܘTL83nŒkoȗnخ06$R?ͬ9.5,}B֘ 9A`P$Oqc* ׏1MQYhS=qpoPӾ^>xDwuxi'O)؏d9=nb,Dy\/βaWiǔQQ]ƯuI9Tp #X]Ofm%9Ț,bTxrV; byR] úVn+ƕBl)G^_KJW&~MJwy: {q$H1L^OS^O$O}2W_/b>oCUF<3b: gPo7z=UcޙWd)t>R+FYQr}$Ծ0+λ~¿ɣ;/#}UAK'}_mbJ,#s;;FlO6;;CXe10t|gۣ3CpY q2nSF*RM)~'[Viipѕ{!|xt ä́u/Fµ;^nA߈9#^/@\q>EEMVG {n[OJ:ƙW-l VVb/l \7=~Vr:*nwDtu0^ۈy|,\#9怍nWb o<5f/ί{ǟ7IRzn ίw5*dU~ߕ UE np75Լe9w IkqG5r7Ys=ѻ԰p,_Rn˟s{\{9]G\:85:Ͽ3W:++:8mB^kzܽWm:V-sù_"w|\ BW]Gs8o2ZЇZqxtvƖ^b5YLZOx=M%zv=iozO h3N^aѻF+`q?! ;Iq2{jU_["P֕7m HC&}#w 0USa! }i릙旔^I{5TW>4q3g`fwev̜93s2 G7zB!?A4^ueBCx#RgnLn8i0rPO@pp\l/>7>69pص=:z Ss#n#fBZzӁ74No l<ӢN9͏Y=bqy* Nf*59Dsvx AbM͇:ǹ:es-8 B ))Nb;yWxN^sT9b/qqYz,㱞S +f95D#^9Q'lV o 0U)W|fM.P,^ Ŕnn&;R,և0d=jW!G8 =0~KS#oxÜ;;ı39cIcdV1gR(gXgK)69xl>? qPqApy2Ű0DD{.PGI8b XxEv6Yc};i>8w亢Ok1ׯꄾ1׍z7v"uv<3r 'c)VKn(8!?y [;Y "o|,o~ۉ} e"dܝPD]}`/_5ێL.Il6~ ο j=q8UULA0{X#ˍ=Ǜ g-j?i ύ t am=5b[vKgն+ l"`sg{#jY;ş%rn-mr[lLj{$DO I|.+y1xrfō'jl+DAC\ TkLj*[(r-T([Y^>xDXp:ғ₁sc_= $q}j2ټ?$qY;ޟՎ\Svv"zjL9ȏ=D x}& vTWtB׬+ }]u]5|miq%+g~ yjpҒz6>y"j5WHNǕAf W[]lpWb{H<7|/Kֺ\{G'#OP={rQIy>+ iAe55VP \џA]X'A_S1LW}+FT;mÚN&_LҀJZee]̌zuZ1BF/tPytcG6+YoKqFpܯCQL87# s8&RqI>R=gx ǃ([K0'pҒ=MSWoټ_]#?kk2iif[k2}?_lE˓O`08dZҜ.jCg-,)^Z8Ų^T2w38f8<ǽeHʯ"oyˊc{Yq Icq"},-I75K ҲS_m= b{ͪG 6؏oy>N)mW:K{LkMؓ<GRԺ|Љ=QkME}wOzk})џ| T3_VD2X^w/_J^ߌ,˧$olccWo燴,ペ?޼M#T—<'l k6UUmS j)ƗcCHp{#7}q[ uM~ml{qo;}D[Z5 m=xmZ}&>Ͻ>+iV55Ո^0^FL#UKpGv9z'ONo"*[p*I( o P d "PowerPoint.Show.80BMicrosoft PowerPoint Presentationr Visio Visio.Drawing.60.Microsoft Visio Drawing Visio Visio.Drawing.60.Microsoft Visio Drawing Visio Visio.Drawing.60.Microsoft Visio Drawing Visio Visio.Drawing.60.Microsoft Visio DrawingX/ 0|DArialicaw(0(:A 0 DVerdanaaw(0(:A 0 " DWingdingsw(0(:A 0 0DETH Lightw(0(:A 0 @DHelveticaw(0(:A 0  " C 9.P  @n?" dd@  @@``  4e $ H+)(,2     L,++     @   #  $b$Յ]'UՌ뵷) b$X* Nѧk湖n) "$1WpS2$Cw)k^hW}]r$$$"$L Ȝ4($"$[NrB~@w' 0e0e     A@  A 8c8c     ?A)BCD|E||# "0e@       @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab 3fGG@fK ʚ;ʚ;g4vdvd@:A 0@ppp@ <4ddddl$ 0w g4`d`d@:A 0p p <4BdBdl$ 0w___PPT10u pp.T<Department of Computer Science.6?V$ BPPoPP 2003, 13.06.2003, San DiegoO  =w- SCOOP it up!  HPiotr Nienaltowski Chair of Software Engineering, ETH Zurich, Switzerland joint work with Volkan Arslan and Bertrand Meyer ETH Zurich:  6<H Jh MotivationExtend a pure, strongly typed, object-oriented language (Eiffel, & ) with a simple, general and powerful concurrency model Provide the IT industry with a simple and powerful model for parallel programming Make programmers sleep better! Let them forget about all the nightmares of parallel programming and make their lives easier]K U]iThe SCOOP model Simple Concurrent Object-Oriented Programming High-level concurrency mechanism Full use of inheritance and other object-oriented techniques Applicable to many physical setups: multiprocessing, multithreading, distributed execution, etc. Based on Design by Contract Q= kObject-oriented computationm%What makes an application concurrent?&&%bProcessor: autonomous thread of control supporting sequential execution of instructions on one or more objects Can be implemented as: CPU Process Thread AppDomain (.NET) & d& F'.q +  yFeature call (synchronous)GFundamental scheme of O-O computation: feature call x.f(a) x: CLASS_XH53fz$Separate feature call (asynchronous)$PFundamental scheme of O-O computation: feature call x.f(a) x: separate CLASS_XQ53f Access control policyNTarget of a separate call must be a formal argument of the enclosing routine: store (buffer: separate BUFFER; value: INTEGER) is -- Store value into buffer. do buffer.put (value) end To obtain exclusive access to a separate object, use it as argument of the call: store (my_buffer, 10) vNQN  Q |N;     Z %From preconditions to wait-conditions%IContracts in Eiffel store (buffer: BUFFER; value: INTEGER) is -- Store value into buffer. require not buffer.is_full value > 0 do buffer.put (value) ensure not buffer.is_empty end ... store (my_buffer, 10) If b is separate, precondition becomes wait condition (instead of correctness condition) PYPP   #+      Y %From preconditions to wait-conditions%8Contracts in Eiffel store (buffer: separate BUFFER; value: INTEGER) is -- Store value into buffer. require not buffer.is_full value > 0 do buffer.put (value) ensure not buffer.is_empty end ... store (my_buffer, 10) If buffer is separate, precondition becomes wait condition. P<PP   4      < SynchronizationhNo special mechanism needed for client to resynchronize with supplier after separate call. The client will wait only when it needs to: x.f x.g (a) y.f & value:=x.some_queryR-[, > SynchronizationNo special mechanism needed for client to resynchronize with supplier after separate call. The client will wait only when it needs to: x.f x.g (a) y.f & value:=x.some_query This mechanism is called wait by necessity. .,[, > /Two-level architecture of SCOOPWSCOOP can be implemented in several environments Microsoft .NET is our current platformXXW  Future work Extension of access control policy multiple locking of separate objects based on the concept of pure functions Instruction-level parallelism Deadlock prevention Extending SCOOP for real-time systems duel mechanism with priorities timing assertionsx#LZ1Z#=33Z1 Conclusion SCOOP model is simple yet powerful Full concurrency support Full use of object-oriented techniques Just one new keyword separate Based on Design by Contract Several platforms and architectures|$ (#T  ## Scoop it up! PostDoc and RA/PhD positions available At the Chair of Software Engineering, ETH Zurich, lead by Bertrand Meyer SCOOP project (PostDoc/RA) Formal methods for O-O programming (RA) http://se.inf.ethz.chrZDZZ' 6z8  ` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@ >`p?dd@ @` n?" dd@   @@``PR    @ ` ` p>> @ C(    6x "IdV  T Click to edit Master title style! !$  0 "'  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0 "c   P* $  0 ",,  B*   0 " m   <  \  C &Ao_logo"[qZB  c $D"f   C 0Aethlogo-140"g   0H"q WChair of Software Engineering 2    L ?? Base"pp  H  0޽h ? 33___PPT10i.}`E+D=' = @B + se( 0 D8(  D  D N\(y˼y˼ .   v* a00aa D N4y˼y˼ 2 .  x* a00aad D c $ ?  4 D N88y˼y˼ 9 3  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S D TAy˼y˼ q   v* a00aa D TLy˼y˼ q2   x* a00aaH D 0ηo~ ? 3380___PPT10.BuX 0 x(      0L] .   >*    6`` q   >*    6d q2   @* H   0ηo~ ? 3380___PPT10.$ϐ  B(  r  S M    <| f  H  0޽h ? 33___PPT10i.t +D=' = @B +    \(  x  c $IdV     c $'Y<$D 0  H  0޽h ? 33^V___PPT106.;+YD ' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*{%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*J%(+W  nf0 (  x  c $XIdV     B z  <     <| '  H  0޽h ? 33___PPT10i.1M+D=' = @B +D  [SP (  r  S  IdV    0 ZA r? ?j X  r   0  ' +eTo perform a computation is to use certain processors to apply certain actions to certain objects.pJ GG 3fe dd@`H  0޽h ? 33___PPT10i."+D=' = @B +   0(  x  c $8Id,   x  c $'  H  0޽h ? 33___PPT10i.@+D=' = @B +]  tl  0(  0~ 0 s *d4IdY   ~ 0 s *\8'     00  fA ?AA ?"`TZ  H 0 0޽h ? 33___PPT10i.@+D=' = @B +]  tl  4(  4~ 4 s *\>Id   ~ 4 s *0?'     40  fA ?AA ?"`Ts  H 4 0޽h ? 33___PPT10i.@+D=' = @B +  00(  x  c $EId,   x  c $F'Y  H  0޽h ? 33___PPT10i.@+D=' = @B +  0(  x  c $RId   x  c $Zj'Y  H  0޽h ? 33___PPT10i.@+D=' = @B +  0(  x  c $kId   x  c $kj'Y  H  0޽h ? 33___PPT10i.@+D=' = @B +   p<(  p~ p s *{IdV   ~ p s *|'Y  H p 0޽h ? 33___PPT10i.@+D=' = @B +  ~(  ~  s *8IdV   ~  s * 'Y   0 ZA ? ? P  H $D  0 H  0޽h ? 33___PPT10.@+D' = @B DW' = @BA?%,( < +O%,( < +D' =%(%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*+\   s k 0 (  x  c $Id,   x  c $'`  ~ +9&9 3  c"$WN  S X99?+9&9J  # "`+%1J  # ̙"`368J  # ̙"`o38J   # "`38J   # "` 3%8NB   S D 1 3NB   S D13NB   S Dq1r3NB  S D"1"3  C "`+%&5  SCOOP platform-independent6CC    3 Л"`&5(8 V.NET"A    3 "`638  .NET Compact FrameworkFCCC    3 "`&5 8 _ POSIX Threads" A    3 "` &5$8 T& "A  H  0޽h ? 33___PPT10i.@+D=' = @B +  0(  x  c $Id,   x  c $Գ'+  H  0޽h ? 33___PPT10i.@+D=' = @B +  0(  x  c $xId,   x  c $L'+  H  0޽h ? 33___PPT10i.@+D=' = @B +  @0(  x  c $쁥Id,   x  c $'+  H  0޽h ? 33___PPT10i.@+D=' = @B +-x]\$t  *T)LXvv06E'4@",W",k>l>A9}OoSPZa:ò!u9Q`vc[dtߡӶ%Cxo1 ǫ)<Ć&.@bTݍ`j 5LM`;d L0059L-`r%L`jy &gS[\ajL0y S{:ԑj~G5l>C3(yq,1m\ʶ!|ȋuaXDX y< )\Q~Law)q2¹.AbޚAM0H;2H ǂd UB%v% P DT)dÅXL,Iv!"~, ?3|ȢdU n?n]g;.9~\|"KdP.IyXEL |@*13+'ɢ<ƈBE"ŋJ_/4J%z*7mXPWs ~^A#)YRFc@ꦓMicBК9BCTj|z.j>ww472l "KCd")tat%K"J˷3J,OXh5 3K&tOakt׬R 9f@/^^@t}8tSg{ajofDAyc7v;.U K`mRgeМ16ĺFAVa]ǣZz6 䛭Z!z{DŽfc=4ZpЌLЬ9BPg|* ݩhLd:ɢ'M¦Lz`'~ˠ ~ǒs@*P6:dso@ u6&:;ǦԙCԹUy@tm|vgF;(Q`ӬGLlq=}T3N-;dmz7̌j 5 :Q˜ L ̀5MAO2c(ct F7֨')D϶sqGqje$z}5osHyl *nNc`Zɡ pn߯*̎|D]C(SrBRΓ aPnpsD5QA5.tdLZ?;GXRJ" L;)NDE@m2l`zUvI8pPK?6e> U"X')l9ݍOV.Dn9=nB(0Ov)Bg[ *p\@M ,8ZJVKՁ9G!< ˋ-Nεa='̧P3abl躃A[X q_ qyL OߍǴ?HY )(̇2$߈+5z qC#ax37К%IjhQ#qrZN ZE=! jW ?xB"K z+5>)pMHIJBV.SIJkO>JDcTB}")_B%rL+ed'6'Na)ESTH'YJ(:Z(fg Pd>4<l頿D B"j#֭@';< V6K Va-t/hz C%3Wpp`3ABC 䄘'QbtRer%V OL%#v`Kkhn EP\D5K4qVX)'&# l {s4 g@aN-(Г3$(ON8КWGH/()(CAG# 21n[U&y]@Դ(+ \5j;Z\~6;o I) QJL&O|QQ|:=viۮ-dk#=+>h69mhw'/l<UXh|25e^3z#>ҼB tjjqn5 `Zf]EOx_=u"Tڀ6:N>гGj#yj,GF\hVy[  RŃQ@^R22a5?%ΠV#=h= lP`u=XS%\D/D p;x'{W `}f:tOX%TC5Qhܓ15d,=Y枬9lލS=")0t:Npv-:XbS W.fz} `0Dqx1}1|V t+ q>G[%\4aMye3puW2PskjiLXh|eus 0s ߽k ڄ8 DJ"@+JBVp1=ߌWizַi>Y'L9gfܷ˩!fpHz9D8 4tB: ȸ+uoJoD5F&lL ]FVaȪ@z*i?{ŀ]­)+TȘIjHDdkg;s <%Ghfa/\Qq\jz:|wv?ۅbiQoJI=aVqm6BW4, nSZ N7pjPS9]TS)ml3QZsЈԶd^C`{[Nz>ؤj0kJ20j` be /aDCg~H`" Ɂ5~8 p =h.upGj~p!17KuSljo#QCj3I>wnQ}cfl 2\S7T6l3:e ftf4V wŽlq?ҹF^\%_%3WԾ?&gD?LHhˁT>O! !>V4rb1Hӎ&C?ҴiӚ3:2c:ُVRgt#ĐaTcR @DEOJ?zɳT~Rs!$?K!~#GzGʙz O ڨa z0PN%&ל0V& F:~=;fiiƹ԰.3n@A!e-<tz€NM7R35t"QVhLlT7#Õa=\e:~Wh #?77?;U5@v`! -kP8c|dM`jC?J3MRЬ#AZ2E@c d`A#7& hӃ?2XxZH{w}kե9$C>IUjRfPg",uijnua}X| +>V&L%"ц=+$ĭ *OV}ހ -C%LmȮxx} $ ZB뺡9} |_, }s|!7‚ÿ/~[ aaz@شn(L :7IAhܷI $>D= $±z(/L D L 5gС:c|uC9`W!l |k gб: :로 $25A86[&MHs/EnN|YxPZ}*Y+iqkX;X>=߅-#hllF мETV/Le Pжզa넪%'ԉBZLXH[G gkƌX7x9@f$K&;^Pj3VHxhۿ MM&eƆJ^XHwb= zAB~,O*RHx O@ y|& ")=?֪EfQ*jSQ΢:eu0 CPM_SڌhQiF7q3.U!6sFө3M6ʕkѓɚF54^'ցW,B }!Q&J@{!xum =UX&*@BVIqwz}aIE(&\l2BԿbV/HGA%`@ v{!S_9?jh A'*Tj@IPN{r VMI"2u$|x"1^0!_%\'N>G'?`ߡKgz:9v#< гb& A@CM-YAG튵!}ڃ]b,w^OF@7yGɸ~pGt 4]:_^M:_2gwX}!:泮i >t; [OQ@$zLVZ刐 Do6b;AݡZFl6}#(* So|ȩ7tj:hԛQN֩?l?qɯ-v@sghFdQ+bsIwŦgشgŦ}LZ>wnXwoQ+6PVz֤+6)3@ D_AX8mH[a.>^Ыn(!ֿl 2A6~ @X Bw=  }?TCq-_hR0 |k   =B_]C(諃RAxZ @8 lxu=|MXP$ @V8%W^H\{?>M@jW N1j}&6ȭg/Ofmmj/wRHp&cbXU].*,TWWVUYq6-+++VUegG(/.,.**xYmeoܿݥ}ƥeo~`-_ҷ$ޭ;X@qe~>C[2#M-nbO8gܫ#Z {KV_~8qbCLaoI 5i0'{em+(I;;wGb}#3\kdy8ӵ>(k-Ftg2#^*..=|Ny&\L=qN+Zª}LmD/qt®ECIupMӾl'7걍u?kn<;"e[5_'i^@+6*`@}|q169Vb=tݛC?^;i+t-V]mO \xmKڴx>M5v֡T%lVDxn~~k?,c4ӁώTK^jAWL2&ʶ3 1hg*^w,9h"tx-[7}+K_;k_IZӇ]=7/ӽO.s4ww~䏓N=F:_:|1E|{e-/Lȷ|wo:Y_ͷ$xg¢khQ(тog}ح|AYV%1I}fq$;O񿳤%ʪ;7kA:[bfw=Le9]8j+V70|!ïՠу* 4-%9.['߾(y!)n'ޚ*nցsm_ ad œUNx6nB,ڽz/[}Œ\uŽ%|%ZϽheoqc3\?jd$oD]`]٨PXt8WzuN.*c7NyĚC[#/~hM-y/5 ׮R%,}.^uKvuo*Yfzr' =>eEGu3 cݘ'. "vuy玥eV?o܎Jes;{TS׾xs5 S9ygn6Ki؎% }pq˟?63컻CB U)~~ٖ_O N߸ĿAɚCGEڬf7l ~{yw3 3u߯MR{K6lzeJÿv,ʽ\=y\ j}֢a=0cW2583&)ncr١bk傝D#\uDqKg%Ȣ]yM))/dOnJ^Œ cm}|W=zf)mHޒMO6ri>i7mܢNl!GDEՠukh@k\V֭_Sf+G=K~=9͟'?ɿo}*Cl3gnNpLI22:g ]\l>]uOp(mӳeow˘: h^OHvj S'[_!tx] 7g wr3 ۶Nim3ykn m}bEƛ+/%lU8w_ ;t=|6AM/Ue'֜u0HƮօKY?_ҦGM5 sBq q񧔜?!:.>s LeVǒ;n YWr:w]Ou?&0ם#: wǷq H gB[ - WʕmP\"~r͟ 滛m:-R›>ֵ}Ql>A9o}\鄉 *;9aoV^&T;H5_̺ πQȹ:iLjV&9e2R╄@ K%r^ A$}K,~l[>{>ݹj2nf#-ٹYí%ﮑ9L2fk53=l?/_y1L3{:]p:VyΫWusifC7 ƙƾw_g.ltlΫ|qWwf욭9ELé/D6z8BAĬX憷WjjaW/4a}sZT7{.->C+|'5cUs~Q Aj{ұ3F=mNa"KKVNKpy׋;ڷ!.eS+vJxteܹݤ}NEt^J4鐣ztO+..|PCvk1E9:^?0b5M%^w.i8Hs>r4Ahj/wItMJ!Tu|h[R^V?Ԥ<ִ./`&^tۃ˚XSHa.xMCt̛UvO֊-?^Ο5uyީn lIg7՗}M4^RvfzD:L k#2ĥ NtĹU}۞'ǎc< ujgDIgnX>~3o G{&^͙kuУ>q^o[Ly65qmÀ&EU]}>/OHŚ|Un)0Ӝע-gZnϓǾf,♬%}H9#1|:HTMEUڸ7͍oa55aS>J ͞\}xKg|mK[ve4ʞ޾(bκ'8mBCGר"iŽze<^GU1eeYyMdCנW-]>vgGB]?eW̜ w:˹1㰪-]>iz-$b-fˉ~2p̵.JC[.yUgOuk]F*"ۈ#-/빖d_+`7)˾M^ txFJQMϐ*s~9RC[ߞU+F́7 Y*x= \T3oO@ kAËBw9UTռ\D9D[,,l5 ,c i3ˍӦ? 8|`y* 3Y ec&{wlT ^z{ L) d"P@ "7xʷB9f [ czgkpAc'C @`Z`0AwP+F?&WƢ3<}AB -oJ{?xtG-7?Hr@O<zS u`?wx@p#69I'G \Cϟ.?iBOzncF9D O3;S0): ňLШ_vbƼ̥@(t`anrAKTQߡZo*6G(}/)Ɉd1Rc>}7L  ?RwF},S }:f Z|>tCaOvI GI;ҿȺuyZ#kTcM3Crĥn^|2+3OrF?S 2,} Wx]\\>=M?7m@dQ߁q4@KSGPGDc?9o;?%%3E!rH 6lA&O ooЧO ۀwa :w{2' >Yzg]WרiAq4~)qR ֵCi`*jėA.)644نRp2HSdEeQJ]~.hTx"&Jڨ7OA_}, NRB}NM TV6Zzkp %n:߂oVo!TjpFVZi^9&~ aO-ſ8?@ K>6 ;)/ۨrԦU 1o{ڞ}퓸H>GaZg1pb9<-.\oǧI\ vI\F3ĭRIŻ$f[- &\կY=htðn.bモ~9("[b"V-ĥRiW3#&:ReTKUJרuᒥ~3-8]as(!n7Z U}U2#:~X,T٫VvdX4гO}$氲anY ،0Y TàS0NlzCys nޝ^xխ*EQjjjkUJ[̶R$q+-p{(+c ت{{V D.;-}P㤀O}j#ᶍ[kjE.^D JNHΗ,^N>c֭[kY֪nmhwvnDZ v/&gk9g-ϛcN9W~'nwʈ7?!Js6tp&%bN95b^EM;\ZӮvJqiH"\lڶ֙It+-,(d†&1Y)3|SC` oč{ź J$Aje(BRWT^lݨ`UKX-UtJ8Уn’V8s9I hk7ii˵7wI4r몰m=6dpp[-XӅNM,Sx;=oh}qAjt"Ut-h춻Q]NT~;1͑W9ws7 7U"^(+ya\@z}"Tf{ppoǼA'G֮5ũ]ؘskT]n{AQcX*knLJ"%kT}(C?2Z ;糔7:}}唊PU꭯&X"=FGEv^H:I~WƉ㞓xUoQBp䆢EAW C`%eqi^QRg9F [H lŤVc5DA_5I\7Zua9ɏE.!$ Hl 3Q/p(`P%0Vo)[TuGN )LR+`J6"}9DN< rz\zf*CekAPXj0N:kNΐ݉̔DyH>NIC<GЊ.m6*e%e4Q\RMy'sEqgh'KTyBVH%ǥ%)oh2(^Dz^f PlτzyW6IID{VmD+jJwK`yv$ԅHiVo`G1$bJ*Fś9wuBmzq]XC&vy[ɐ+kڧ!֔I k)a,CBO6ើw$QpZ1҂d[0}| B{+w=2cՓ燠QOB 5{2EKGç /b\8_ r\΅\ZJvs9݂og-C #-gXp dxuFT Ė ˷aKVP{.2g,u_`.uiŒX. +$ªl\j0o_/mG鋇x&|g^5|W$PfN"D E^hrJB"P$e"#O0H䗚*:I2a@/SR2c sF,=路E?^15Xl,Tu @ XVh'Bb -ٗ3\/({Sejk>gE_ Z6c(s E>8˷*p$[opz~@zCr-S\Vok_ṯ?\8«4y+pwҔE Q\O"q$\X>s4imkdG}{+3<{vF%Ш OYzGV%(olH8O]0pUR~B#*-T/4Wλ^tH VK$5V}Q1*Ƅ F8pW#1{Cqto:?{-u% OqTjٚ!-z2dX:[m0\W?ZrFݮy<rtF L-:@ȍDD|)R%dgc~"A$mܪ 撧[r3|̔Nۙ r2s3snˋHP}sQslJ /f ^]@;X rߎCziA9_M{rBܳW3K -px5x?9P[%8>d){R0t?2,qX.fGl1fʷa#V$K׶4(m1i_GtΨao 0z5XwW1 8B_C 1-l,Ei7" N~b4Z*rWd/^ֆW׮ந9 Q#u-y <E٣DI)|1` 5@`-K}Qi_pC"NR=Զ'/ܖpJW+uFBrj+Zºuwb`j>ҮSW]#!u?qJ8h0! oߢk`%U_a(>~?a,qk95ZP)9]S. 2h+;AECӢ0#2:a9,mE&Za2"M4xL*y l)kCXXaU'llQHyyǺ !}+?ѯˁka:6R`gx5*C \"tq4 VAǞk0-UGWr{64ɑܙxGZ/K<6~P3|8Zơh-nqP 9tF4wM߄Yl]P\O-?JO2Uu2瘾hۜK9IRZ8m CP2a/d/B Qu+`~ɨ$uqNwm.8I$$3eeت0Pq鰚ϛη`8CZ75OY_`9TtY"ѫp}t|נ- i>۝+N-@Z3gJ;_3C?f^^lDQRHٌ~RS>#5|9 kyR= DdwM$|MQ '仧\V[kkʇ2rU<DBeHi5 2Gew ,Y5,%?G{muMM)ޅIF{c_^?Kwt$A|!O ^~C/ 9 a1b̉YkRi=PbņsU-^}KlMLWG5έ\9(| bX(QTت\T>*Bq}^)[d_Tz2\ _(USߨ4Q+oH23 TUTtv ٍmV#Ⱦhhј̢%E닆?bǧܐ쏹R)*bQ(غCK\j}Bb@FYAٺ]e+R[B+l JGf5~I neEUf‚`W_$nkۈ"Z/Ej]*+>اz;wR番I O,=xSp}9q4+H>n-1+A;6[ͽ5 j;9]uUH0f#C*$㮨?:Ei7Վ>m˦.کJ'vT{9ڇ^(Mp׋k_%@ėyFr^ Frw|DpaoZ_xI;h_3൮JXU'VHT:Z0| W/>nH.;FQjTIt.aкҥ4h]U{ uQH\^^#*0iWb U|-/VfWf\s_E0襃.{n嫸XldoMlPʳTiu n8b笻tUV։˄_|mM)y+YՆ(Yzo-7&|%m _ȶёOt#[^mx f뫗㬮&Q"4gWk/&Kv+q)?fx7<8̡5ubF OC2(i/CxJ^ڸ.q_D:Π!kCJ"?{;%C@HP[,g$=$, RM]dG <8S6JrUIg`RjUi*\QW6ʡ޴ AECR"bJo vuSӲ-|1++<8X8z2oMԸPIdfPD/rJ/yoYbU r+/܊iPU+$R2i"EDZ9ލ\Ѿ4bAS;tT)_*)(J߳~nl,IWQs+3 OaSSRr/*s}i[SWߑH%W_fɚ˧0~15)sUC/zmlۥOUy忡*|`T],rWaE6E@>P棝YV_N"G߻W^_xڰ@c9yM-K)[XV/+$.f:@oHTOQ'_Vm;4`z[{F;)>J/2:[@fW8V x⥊ )"VHsb?W;iO4!*t݊)_F J0wt[/9G Z88y O0[UmUھZƋA9kD]]-?ksZoSb!("ޣ7Dl%f65 M&ghpS[\ÍQxRې*H1j_R ʗA7D`{86HQt:@ۉ{/0><.uY'S|,B`ʹG,3I lj~ De\y!Ӡ S\lOFVRYQ92aq1IԦ$Ȅ\F݈#5C s?f89@4Z~+fM=5A(wX`b7@E!7[ ZyS58yf!+22 I"915f.0~0ƥ S2'ss) :ͰGͩ,M@:ǁ#.ȀiC #=tza 0 L#"L#h>)FL*~S0YL( MS0h(􀧞djp Õ19:t3tP{1Zch|mЀzkD*ݱ9[tQߢ[Qk^s1wPK^GQq9`c Z'E`*VHKN5}coC PNs0˼5GRx&=d[[lmi34,iTVk"k{ ɬfW="k u ( ^C몇m-ٳmwmZ\@QIspjp+ܖ/@79j >__Xi<Ҍ>fvD)%9PiGAR_h;Z3W<]a0s{\/o F# LR@!50cϮI MeGΪg3@F "60DShDט~&pFgܷ7' na3?nIBQL4]٫̥E!Hº׍a< 7?S mH 5wV? 4dEmA=m{L>擹t{u?bӺDCw)Y͵[d9)pjڐa!fi{؊7_n'+W SMeDpg?f;?ʫ>-vx/_%mh+yf3N;YNwwwwwwwwwwwwwwwww7_z@8)OcǢ}ʏfOuW{?w~{PG!6GζYL! 7jҾlg}4ҕX6tGN&=OcM]m 'N;'5 6uҽa11>oO7̫ڊ|Ύߌ;o;,4AƸLߦ?H~?cjߺCYeG}5军'xwrJɂrw'A6@o4)/qf 3؈{otDsE(O9 Q]]hHA Lp-3~2sH2nk@t R]oYғiv9^|[U›|#!cO砼{#z~|>=Cl\g2q+Cx~_q;Ѧ}j2i?l@!AQe (D~ (0hÓW(R'8ʧbͫ-ȯzc~\PO,A4iA0) SyA eUAڀA Ά6 = +w A:xtR:Hw =Az>/HoD6@  @@m A 2d$$Qc`PD)B#@F 2d,@Ɓ@ƃA&D(@&DLFh * qH<D I 3@< d6H2 s@T ) l9y sU|^ u8~aܽZ}zm:,*^%|l2* ^򩾊aOT]W= K*RO0 3Cn|1&s-]lS{IQU*lTU͝*ng-Nwqz;n4eԬfUgl%kd#](JCrs!'S!s'A;=aWC@SxV%FpEߝN~DYzRE:+ΖzT@5#M F ȐcI=n&~iע7ʷ*- kנ ԧvԓr@4ʞ{4ŞzR"h O( t M /5T_ j}PK VfdR6X ukQV ^U-vՊS&F)Lǣh 7x> ՈcQI-E Sy}:N=NMbKPV~BzC!zub”Q[!= APs8[s EL|b f)i0o(nm~֎+1Hn =r:T{G ءAGnX};Rz6TGVuUc)?;*^:-afX].?4،7ndg꫅0>1QW-P8^YO-F?rԄɊtD{dÞשf[ȳ+h{LѢM20Z7~C$._B jk >철JPWFX-)ctɫ⮺E.|*5RQ΃Pނ vȽٟ\J\(qe7mYmb#wLE'%'D)c}-6]lK:ozP]{g{|ݨ^bzфzrk_˨W<יomדKL0>Q04^6,4Q_˯?`(Y~#wbm ۖŌZ<6ՖWE̅D6bV0bῈ#օ FںgBmJM=lf43*\O0_Ildݫ>Kq`2\CGP څ6Tۅ9o]&L4L2z}Tϟ~u|_®M9̶=pn.j|{^Oޯ&!pG^^YK3C:? ;C;Y)M1Ҹ'wTr/lxeΛm5lIgLtL3rj Sj7YVnQHW5-bڢ:zmOo/8r]#ᭃ+L/DfWn^O=[rW1C<\Tvި/ƏP^)zJ탌3K~}*&Zoz0e)<S%&(Qp?doM8G* FPy۫W5&5 b{tdHaahf|499ӟי>?p̔n~bڏfOK;r'b}_?\dʵEb2{~^ǷN`UgGv S+'&¢⣔8yRTLaRAwO/A$4&dU<^_֬ԁ%QVd>_m,]RWc]?:)nwvvՈɣ D Z^pˍ2'm2eGQӁ_p]z/si5اd$u3nhh_ ݫԨǴK:,*x%=sl87t6|7o:[o>$ˮгB/;dޙ!6?͟ht֓=+[`=`K=ǙbW6ʥOJWwGsA% d!"ʋXQV9cBg,YBaxjj @Wa{g qNijmR??5t nP谍x*ELpŨ‹UO4a)m3;uؖ@7t.@nCET"14nU 79B);( D Թ ?( E'Y:;| :W#6EoaG{_Tpu>aVSCHF2d$#e(<_AA_B;GE&$TEB"4^9!: J!Ua!w/u[u .!81Y*%\ⰑJpj5 0\Bx.f w#Ic$#+&o[28>͚Ҿ:/r_QffPVwyk!8guQF~G yS8|w&o[FF6qX7q8lalauFF6qX7q8lalauF {֔,UA@ۅ: #_qtp7^nP>յ<&Ε {lw8`@|7AqO{888f Κ}sYnh 0`F)}!.AM: /2GpCbpx‚KDg0! d]?`&F#sCQ8ɀl !5aa@[<`I ٸNin8b0Y81Et2< C>)`4Z[Op ,2ⰱ)CMAm!pHj@؁i^~%6͍Cz  B{9v1P.41ZU7t|+@WMC )7?]aE擄 _l׻o'rړS|CuOgX$o?Bc/5IGj.]? 'lW?4m F,@}u!pH׍n#):@Dk5F[֖g7 CH5xfy G>8 ChGP$N@{E5 3nn횢:H?|'Guq8lalauFF6qX7q8lalauFF6qX7q8 8&T >}qr5o/ d#HF2PxxoS'P2kJ ªrJBB\'\'IMM0|w!E@Mӆ@AjmcBst+ðw)ж=Bc1xZNH   P`aa! )iJ5P'$萬V8nhxX@4 jj@ wC&UИ$ ۈ× V/ h+-ҠJϦiIFY@:<)(Ŏ"^ ":lhB$ tN[E1<ޱt1܅g h6v9f X{%8aE^´VfcTq O$E% F뛬ٻE M/?B7jHF2eMfnU^XT|R2/N4A^ng>aHؑvAh)p&0B&y,{7%)%v;$@(Dя?ۧC֭sF)h"9q":t(Jv튜%Eȡ7uR2rS#%%5 F#R$.J],fEalPA,]̘cq2F0sBKd7jC(x h-D.;/*%Y&n; HtFZfZ}ejiT &nsFpJKt&K&z I{XJV31;ZNԉe[hplկ(xY.# CD 4G )GwRK>ezͲQ}|~ئBM0Zs3xgQKlj:kVKyd;no"dE?rhJE:Q7v )SX*-hDm!F =x۹+ۙd 6&lnD+-"3]#ڥEE[E[z\\7e^zzhXs{.}BS%a$S5k3o=_#Q߄{)4v4GzL/ICsoFOCS!+FhS>9,>4+֦Պ4t"3>-5mMڎi? JrmqVNqW/bŋu.9USWZ ؼj#͜]2ٮU]d(tux\gc[\rkes"n$kywy#g~):)m 6wt΢UE,VYjҙ;3V'a Ǩ ޶*8z`S]/S>3R4c'E#zc>]cƵ=4%%j  F Mr!"\+x$v>3AgNf˾AIAgzd0J8[xӗb-&(ub,_o$v@- . 1zcJf|׫ (^I} >T0Gv9+u|PJBJοGN?;^}W=G&}bd'$k؍At7ܓxwǗ5L1")(eT_ eNg%;"0~wb#UaS&XH$M6Ui[ƒ3BV ʾ]qE%|홄#dAzfX? pL3Ս#bT޹?Pp\KF%˯䧊n(˕&*UDŽ3i>sP/cFocP5T" U+JPMW-Ru]oUU7T*4417긴iӶCiT6=3<5 :W2XB"9G E'}ac]eq4=Ds9eNQNPNxNbœ999e9lcԫߨkjXk\4=45hfFdi֜\ 晆5?oD^T,/3ooމyEy򐥮Nu ]n}S. t:SґDޤd*Q8Lf9phH/*~Zy~hbtlr()m!@~'O5;4 򂇖Ѐ<݃'<ט.([:"UwS{  rnp95a1tVvtf~iRiaB$M`Q֦f&ؘOY!{"(NQy( NLO@Wsރ1yLKHR?{)deX<*678KM xĸdT"B'1 A<9Ik$9 &(HAxb|rjԳYf "dd$8yLLA"R$c1 'B&)5L]; Q`Eг259ŀQ _ѶL/j5Ya7u#ثz->l `ˬۙlD6ٽyO٦;7^gj WJ#CuRt+IU(P҃;?cuD0Pm&wDi37&OSM*ĥxEN 騻]5ܰńYy2qDB% 6aH'>^ "!v}f]\bK،vFݼ뼃 [}jz[sԬ9/eBĕY!z}g٥Εw1SNINJwt!CHerb'P=)HImqOTj1σE,x) 4չ]U=ze%QZjG0B#ƣvDW\kOFXӅ)Ɛ{-t.`~aՅ !wg,"L]wsfh7STy˝>!Wr;}ے?p"ޗ(Nuݫo554,`eO"ar7<6jPTά0Q%0%XO6T΂X57{KR{Z=L1`JƽH~Qsn07R._GApGɔ!BN湄cn.t"Y +֋δyԁ`k&wQс럋ǟ$+0m-۲ȶ.!z~gjZT!4:bW.6\zAZ=L:ps^Nu+`omu-q9eXkm9m}wn׳f 2s >Z+nVX=?A{WuZii 9i~18qƣ%μn:gY=.csoo4X-BHݏ<8c)+# G$.{rMӋns_z3ӝ]Y;^Re\%T0Єu Pf 0돬a,vy.Q,+ZDOs$ɶﲖ;{2B ?tyHY¥oi6Cl=Š͐( lvt\8?&{أz|gz]~nJDk  Iڂ\o/V:^:)yv[:GEɳǣ5**{R5d{w R0Q.O !;-MS<"]2*⛹qo 1Jp0*S%~a*@ x[?.h3`x//ƥ#|c>-0/j<::T4\JڒDTZV`ΰtQ˯VjٗGr|X}^t>._!zbcVVcgxvhG־ \7eMϏ 79-ŊO0n.`.`Fn!e.y]#sfunC !4[MI $Dꙻ4f"=9۔47;Z9Y>gx#_|s5sf?5rQ缹٫:9۾6,o|ޜm)yЬe;7sDWC)i|t>tX7Y)Zlʛ&$gzoc/h 97-HK6wrOdaH:=uĬ̓8ireAa F<[x`FE쳉a6~ִ)X8NֻvJ#:6d$fIQ3Y-+CO$f>iGd+RGR"]2ɟ&ݽLD8- Ⱥ(:nS1Q҈R$|WJo &X7F(˹-͕8wIo#eȬd׫m N(,2o=q/hGV,GrN'|fO\lD+y9g;H4V>;OU"Brԟ”~'>V0JU&W#޽, XڒegeΰŚ#7_ʗԖN[:mL]fߣ'VvhtWxS*:~FJDvfPfDD*Kr#eTJ R>^7 >,o e,S!Ŵ~NL٤(qH!\ ., SR#?'+1:xo UFN^aF?SR[ciw~q4˰՝C>:dJ2|rNeOJ>iiUܚ`NUzjAq~R嫐&Zm]#UDk-}a"~CD`YH5 e3玕iҶ^ 9d;V'R^BHC;*yqr\u9D*g gOdUfn3GeNen5]3Ve7PaLV9O7u`b͉IY?L=nNeWV^֠d5|KU50D?M#H4~JR؞/J4`lCPRFz6EMs,|^m֙tua8"rH{px+7xdcNIܧGw$^7O~6+U&W5m"9+0mXA$^r_ sl jeS j,yCتD4L,dssp!S9Bc\Yvz1mېs u8To}WM&K 8P"%OʍBwC-rZڶףm!ηNV|]a? oDc"Le~='?zOI:|@́÷/^_"y|Xv/sNL%ʦ3hӈ9:ޗmSP9ln/ |'q|lUKrp+?l[~$.\wv8 9~rky${6wVjޚy~Mg['mWm*/>.V“2]:jXl5+Lӹ6cTcbTd&:SJ 9VQ+7+ԝPMhٛ|zS+) 6Эh0j(4%x>? )xe\Git%m^v&)a9u!Zj1"P; ʵ;V98AWX$KjEL/大CXB=zʼnȳߗ@D} Ƨ휈[ ƫzH\JVU$цЧLP!(P|fC7 @Xq#ʈc( 6`~|fWIt~IaE(@Ҷf~ yhovYiI$'?@ښ6Zgrt;R#љ榰;j֦+#3q‘c@GqG!QK"[,lst}C;FB"LR) @y7^+HpʸC(t2\]]zGVLREW_) y?{zQ#Λ^T;5zyPNND7Ĕ / q179'8M?y in pi8+'bZ1 1\1c!4 #t1 Ǭ?:M(M20Fܿ1GT+]&[ޝRۂͫl3oJ\TNDz[nΌdg=a>A1 TʸJ^,,1x2ޙYʼnxUHwJ aT"?B 2R6Tl>6$tj`^C ~]-FT B #k%ٿ35S~X0`0Ej{pFrU|a*q_@L.sdd}MI증m&Z3bVmQ8k"ߑxO?wZ@]V쳵/G"g~VZ9zGb`ٔVDHL.0cR_y60L,b;Pk> jZᨽV5{x @[SaVe+Zgې0 mcGdC`f;p7uC:9iø}!ȷ5q"Esg"@$ )vIu,g>'|َi[X1 8 $kay>Tx]@Sa&<,M@AT -Pmο (-YuGkV\Wl?PX/i"͗7w޻}{߻wy)*Z*z &LNC7ETSj_PP_ )hP[4>1J`ݴ|գaB)&#P7(}ZyD"~5{kL@kQ(PwXej4j ӸgFضa6 9 I4yCIR41i%q/ȟ ߬ȟL5/y\l@cSXXp +D; ]/Dc&  N]!D ;HKMjB '7-H; @:tC@A:#ڶ!$  ;H Ho> }ADD"S 2d0 2 $d8$$$D 2d$H+>IBA2aИMd X72d$SSwOm]ܾ5W}=mkSCW =  EmLwzh%x]Þ2&MפRhT1Lj~Mul`J$@tQ}%)ABj`>J`)[Bub2¶} |O2dLY A>\y Yt@,YBcx10fHR4-x$`[L{Ѵ]^*O7aNQjD?$h_'L;UYg쫆#wR؛D\/NY[Sr[pBPF&stVx#jss\џ҉,Lոy|wq>fTS#C@2 d !]Leg?ͥBC4: ԩS58 = .§K +yN! ֿߟ'jJ6@u'@A-psBb&,V 0$xZDJK3u/%Ph֌BpaZݶFո!ͤW[!^+@p_Ç Z-UTwO|*tJi{KR#GL_J Е;+8OlZ_L@8v5 0!?bFN pH=;pW}PSF'l0ՌVWHVYmV(z1%`Eh ryQ*ջիMCܿnnץBJ hB?IȀ=5goO=x0ޟyk4c5vlc@I2|(|rZiH3mkWl5!ֵocMr4z4؅5 i' zh1AH1*Ѱ팯@_zo.(/ iB6z>eƧ3'@-zV >ȑo7 $uye$TrV{rrr)ijv򼢴7%3ՅW\.O;ѫ~콄ޫ=5`Oޫcq{jcq{5{~s {=x@q8π:؀=}\:u2`M؀=}\`s ހ `/$g{ۨ^ޭG LspK`7z{,9swR`{up]؃-Lr_^F00p bWqatel`1oMgq'4$!/?՞Cֹ.콲RU0ltH3n8iAz ؃( `k!= 1b$o+;{R @{o'Z3k % 8%0}0Yc>m#pp[L]{W{C$`E@>Wҵ z:^C`kKOYX/^=u`x= S,ƀw؟wp2|Jwy؀=}{:胶N79--rv `b:O@ӱ7d^I[Nx}l'"s80cjkzэـ=}{O*jjߋ[xq@'ΰ]5p ǍGxQenxU3p@O00})7wiC-pwxڵ ֹte|/=}ȫFYz9^I>%abj1胶0D co (ikKkשwBr"^i^%.1bƉFDHq=+d78>#M˱1<Ǎ=* 8!='ew{xgp0Zu;ޱf khn.&<ë 0mk`rnRV{V]?&{{L S95ʣw=<+w3H$;^e Cnyu-I= V(?}{L׮3^ / ܿ=}l>~9~xsi!s p:~f˱#}{qvG~n#>hC:yl>ֻo5KE0綺o'4(`>g>֋c3{?]( Ku6h7@vd_m~֋or/ exnwCiu;stWKki/Hk%=å}8V`{$ k,=b5,<6'AW*վw"nӞ?Mu0}ջ_Q9~[Ӿ* +SZ7FTH{s/C :|J:5S^穮{ص(5h>+>~i:Muau~kpG t]NH`g*0`ua^{(mڗhZѾGb}ֿ |}:L0ƴ?}@l>{ ^{e44+Ҁ=}l>{ {6`O8Wb>6`O׏W c6S cՖY {ҏ~ =v[7C^{yyyr ெƮ{J9+{E{pR(ٍ]EM6ˍ]{nnnHtD;؅BCCI A! ϒ1Ba]tU7TEژxXfe.ce!r@G ю;T/tA(GCmm#͸٣J5UR;ݬx\iu^}|vCçJ5"`D  LI$`l)PAx!)Un۟K'Q$YڸRA^,%m2YZiQ=ʈD(|ܨcY"jTnVS,n nV p4BȁB\(Xf*XJ5]ޥr7+2˂eEU^K+-"A:>C!J[0bfjMJ#D6UiT/*~2I^`DUk;`JPiY˾xo6%5oi{99ē0;Қɰageg ⬲'M\Mb.[Q;klam$IsMIޞޞgg![O}E{z/\ZXao}5qݓɼG{xm'ښdؙk^5Si4h&8LmjF>AO6fvvv2v ; ;wuP?犾x.3ȋג$1r [ Ve n>$++m9(pfx\HDӬDM~z|l[ h@ŢCMm~Φ(]$cT''g^N(ӆVd+Իԧ:OA%;>u]ﴑVlDm|Z.^;rvo]YEƄfn:̽->⮻ \uKơ]=F؈N7wNI5D{?u.wV[~\T;j!Oyw+Ѽ1{>?p?9?rsӞ1\BᩬeI8rC_*ïO]UʌiDžɃ̡{#}\& u$w1չ~ &ϐ'vΊI7}X}N> W+ŢP nS <5Y*N\SEݦlJfISW̵dDsOb9{+Ϫ :. yV-,R<4OӍ ﵸRK8 Jf0rB#s+[o*tz a8!T8SpRXd$#D!=?{ٵGQH"~&~iQ\ۉ=Cq_0hglbtR|E|W{FщѓGcht;IL uEFxJV!Y ʝyHĞD9> rJ$d֓ ӟ*TR q|%C5g&+):̝]]{9],KOJqi,&I(R#%ฦPiXI FJ bSd'KP#F+$J 2*I0R(ez#4VfXn)vk|]D!*D{V(=wKA]^lHLe~iT(@ f~;v=@ѝJhCWh K]aealnzA;ƝЈlˣ yOƛ>2Vg*ˋVBCFBhq?w.#Q^ٷNd_v0I0PFwD9cQsQ,>zƚ}6}>pa4n,8FjI3IvK0~Mwg'VZ $6]f9vl;bUr y ![ s 2/BsgA&͟-WskެSpJM6z\Jjd#KMd4A72Z"I[[ LLTqMO?yjY j8 J;rKs?y;sY˚4jn؅՜`taDqĵG͉&fe6bdaIҞ!mG%fu ,?2eCInz2`z^%nJF6D|M?|/o?~vu"i GlY@W_ڙ(FW'OflSpV"&5nx 2T!D[I.߯N]B-z7&b$F*bIno^%[aٱ3>]B/=9݈Exm.`m*qљe8MNV$$U^m35#)vT |П5[~. "XOtOnj7l'Ic$O=R)tjjLt L੢IfWIjUB,/sD$ѓOL*OJvLyʒRdcL{hy3r#6JuhdO(/3MFs!Y~jW#6p4GҔve@T3Tybp!L>2XH| Lz1E;;"W"+jze; G{'W=Jc]w#ijzƩ l Jux:TYL,Y)r~Uή"2خft m%"Lg].&YQy^nQOL)L^>V9ZoӲlVsr&.{Z΃V{Z.o߷^߷.to߻(L'Vt'blo5o$_qI`vm1 s4eM{ ٓqV(lr jsw,X_VS&Ɍȟ`%x֙>\ko_r" i(Pk_X3J>ٱ ٍ?x5.j|<"d]M^n4-vaTAZ:bI~QM]с h+{A:+TؾIVɄWne8,'(AB@ HKRO2KQd qUIU)ҪA,Ha*6N ]'`3ZY9-l%.dQ@3Hc{'&%i\]D{rQ򉄬NJuQڳ-P׊,kw3&J nY^q._Xffo2x-_y~V7:ӊ|M1-[[\FS^9]kcek!m6G@(9dvl;B=2w@*G)nZ_RDŹ@oCt ޅ\w6O kCQ# l?@ @*ՕH8Uje[ P DRmKTSW'Q̲Zk]g-s>jEszHFؽ&{V6[p,~:inwedȺ[ ?S,+7cfO" b }/M=NA {9߫GVnž}?9h/Bqf(ԢwPw\NP!s{6]tҦAQ鸤 ++اGnV .ÙB+S~=dPӑѧRb} ff2OYY,Ff4ЕNHXRb: }$J~{ dTܜEg\ ʼnvtT'x!AQq%>"Xs/gܘ!Xk&U/^ r]3sѐPk\ -??_o3U, &wM9':/#cK{  QppppG%a1),%z,5LQױjQF|^tC^N?eDuVx x8_|N|]mKZ+s4O^0̪ŷ3铇ewK%!ɤF?65ez Kڶ>>1wlm7mz@hPB㳩g2ddhlYଁYg1|QlS乻Q<_$M9 M,+KELAZعW hr͙3khBYc+ճA*bCSEn|D ] ,?YoU7ӄn3`RC.{69s8GӤpiƜN-oRŁM<2E meii̼ܼy@ޙkyyF {Ek}Y@T>|kQ?/:ŗX = ,Qa$5PvXX8P(ZS.ХeM*K@ꮊReTWQ*:2c(U=ݨ6%-|ȹn#H!Vlr:pb[&S_ѓR3XR0ZjK FK`Yĉsa= 0!lUI}Icʞ1'zWT? .LVNlV>4'=Wa7[L4crAY1:umFPOd TRjZJzlZ%K4/<$,Mc-B@#ti֭OlkLDdcԍ CnS] J h2S.+fRԾ_]Kf D[t?rW,sd(lE+lͪv| v^.KD]"D6Ǻ[|!XXJWo ,I+|tlqxh|j&wG!G ׊^CrP]r 6Q$#EO3`((r*JY=V#[0i<`ŏmy}$ڧhv_7FݡV?BDe\zmDէ m…Nm-:OEV忠 M*a<9X}j厶R8~xkB:~6$썹gj.M̴}H?̏re[rMIf3*v5=9 N&Cedd%1OU1T.SA%#ЛP_ha0eq۪7 0y\'~d'$E+MRmQ^9ǎĩor/~x{~a(g{;_]S&[PYn6oU5Lڇ+غdo!I[=F{Sd]$Qhyf4"f2&EUg]atD_ OWoy(?uQZ끎3WT76Bt 5 'aa|禋]WlQ+~égO}eQΣ nYLQG`d94MQJ!unzWlYsBrJ-zTY`X$1U)=%e[}Hoꎨ3@;~RDjR?~\RSÒj6[/q<6׉!P烍PY,IVH~#=mEbʝ]Ǒk&Oǚ@Uh>MPq+y|t/wEr/Ba}/U0CZUtU*` *h%z-)L-,: :#&2FhU΀MI5>]9*QM,P5K#Z;߹ dXŰp"NvD0 pd;py_ R_8bZץA !^#tϥdՄaʆChIWGzBTXM0D2BYC*=iTzT,Ke,I$*IḾf^_Ԡӄ>qcd)qQHlbo_mCjNYMm4v&6i41Bgb)Ę#r&<w3msCFL}>q9 d@dCxo 1!91&-tTʝ y8 i& xkԪ$lZ ¥kIڒmrk;l5Z׬ΡnPq辁^NL>b.chLmjo˸BQ]Y]V}np'‘ 70\z[TUA'@/tMg@"gbk>Qk#qJ`^^42mXD}#M g"T[ͮ8LA!EUn`f)aA UԎ}T}SVtb$fǚ퇩{kUSXoޒlq0:?o[Zi7̚P;*Ճ]QDjRbFH찵ݜ~^T>ܕXjc~,t">P+7urRy}R8@wRW!YNMq^ `TJ)`G"(aR}="XY4-u&~]g"b޺UQu{fKɖJMGyS]H12dH| Ad,Y澴<Y_Y  d5\D|smnw$}\;ϴUemrρ'˼hN{5g+G㽚i.Cr;}f & v> w`jc8/i^;=eԬgRjR?'[3ghd#O۾n9׼6;j]Kf2K y+U ~8_1\:6&q5:zlL> =|t+ŖT#OSk4A0RӤ;SZ=_nW]rkuwף7+}ĖV#KGd}XhG_)h Xק&>4l&Ҁm}mOk 5KJ`W_ jJmM\S) 0zRՃR5V !7 @zqW"DL[6֋@ BAoA;zci|[҅-joB;Vh-o(=8WmtL,!n cCrjI5ؠw^1:h`mV7f#L>f_]09aGە$Y'7Fu^Q ֥7hu/& UgkNM2 iE0}'#[}iRfU ){306G+MB6_LlsOv˺=6篧x߸Y0MV~ۡŷuhfդA4Ҫ>l6sjPi]FXNFn(  H>ol8=/][~k6u`;cӞo[k--. ƙ"m8ƴfbo]սc@ZL-6hCklI}-Vf5 ccC͎C%hEf8]vK]CI$%;d4h.)GKEh%#h3 NEHt% 8ND.$ YҌq( g2~"1ldWNr[r-sy&Idg a %oIvoғݕ aHے_=|y'=8#{r+q9ø)y؅|jܒ&9M.5NO$9d$d"0Iz."n 7n'ϛ#&N!fgfuf3fɧ M/%_ g?Ol.2b+on\g<2x: Xݳ . .,Dn4QAC&s5j5hcԈT jBPk;%3>_b4_ѽ5]UsRRk2>8 p1W,BUJ@@sY( qXq.+CҪ # ?*bGEC%H?_=ux>K6?i>d?ߘ0*n#[ 6-: lI`uN We*HCV| <|!W y<; pfG"D$#5;gyGF`/ӎY??&ϘcCx Zb}=X@+7| AT^C< A0'/p? G|"@I.sb;+CT]zoxFsg_(p|6-8;le7fgGopY'v${*$cLU楨&xA̎7)YulK=Ete G7|q>CogISc"C&'E%EM 󘸰a1iqt4oVՍzBT0yxqnwv_}=jW;&N_lCa q@ȾHONǾ5oUQ 7hGp]idggjcl>u\; flӁ!XXH?sL9 !La27|^"k xs3,@_:=b|&.`~8I1(G츀iX9ʯP$sV8 R&`Ȟ}ZDBܵ&_Uq@yf )ïTޑ8w@].߂7Q}Ds'wMsm_ШЈ.hqcqf< #mL+{41}Sc2&Dݳ[b'17K%\_e-=}$W2aY>C̵m *Z6XǛß#3!R֭%d-|g{634c^/p1>!w#btߍl=|!wV c#KRTf #ތ]M*u_+8h1o/je&P€l<9HSW\R6}D}.+^#ͽI2#Q]itGgՍ:;틻VPN75 })i`۸q}_b/H<{,YV$i8_tD=jYSukCW7{Ԗחx:xAxQ+;Px.*'U.낫M̓ ("\iֹP06%WٚHɔCͭgf*N~Gz0aZu})7js%VWpIw]3TXY~M~ew`s,|ng.TSDM /!~E;_|U yĵܠi4 q]W"v nˑ4%幯]Eʍ[ҝnuUD^P5jǤ&o~byeѲ 9Q~EsbC}Y5]x^v,w}MwrJT<=rF]#OƉ\>?q(ݶ3}AVrm:B/]thUԢ(Et,Y6j`źGLN~w.}5S+ s o|I6[{,+u%W\>NS-TZE|Elz6?<7k{r/(0pJoӤ%@C֥[s?me[ʎ~uʽTnH=pGMV4>W& LVdgd2G&51qS_G$dmExs&ld]~#̚ Cψr]{^pLAyq2Kɮ1E%QkuP3 G+unf`&g:iy=J_d#Eγgd?[J !,q"2 87وoIE@G;BhyKrb::L &DoݓrGM*İ``{EU+JB"ܓaIX^ Npw SOS;&c??wnOƘ=LGU~:c r9f aOEO "-{]PI1G" &Wg' X5h;'Xz׷\gY{5)fB__a"eĢx+yKa] Lޔ20]0Y߻eᩭ N~:>Mn`NN:7JlJiecn\&Rx킆斥4XJ-֫6Tk:3HiMȡz:nӷJ?fݨP"7R;e0όTx_G _-A[T=;p5_#5 ouŗ;ˑc㬇(N8:7P0Zȑ}KG*/vbpI16HSMNs#B=@tjj5ǒ4=Q&նgUE. WPzx]9H_ȓmH4(ؓ ~"& 烱7H : o'ͭD,ERJB'6?QA”ЌyLX@$hDJV6 \l}OiYilxk>8;pW7j8Ņ1'0d/lYL/}pN g,3f, h`d-¼HVb&#^ ,xc~r,EG.Ұ垳 ۀ|Z/be'rbCq/Fc=da/ZGEϖvҁ$c|(Jzۂ[ F?1_*ʀ?Tx@}cd@UKxPtڻUkmb~q`x#5`Z2Kŀ@#] EIor ٰhخ%`DF~t,/Ed6*(_+F&kqE(FHuȳjtpQ1.ʇ—-M6s@ #>] d f1~LJ bpŀy[Kk{G?_~YkpO?~r02I`Uo ] #cl p Xt vNzfΝ=ِ2p DՂ }#_m#Oh+'0T hp   , 8DLChair of Software EngineeringtDepartment of Computer ScienceseaDepartment of Computer Science593Microsoft PowerPointr S@a@ g%@2 W4GSg  )'    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___www 4'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwwýý޼mmgmsÒsݒ¼sޒݻ¶n޻ü½՜.+,0    (0 8 yOn-screen Show.Swiss Federal Institute of Technology, ZurichC6{ ArialVerdana Wingdings ETH Light Helveticase"Microsoft PowerPoint PresentationMicrosoft Visio Drawing SCOOP it up! MotivationThe SCOOP modelObject-oriented computation&What makes an application concurrent?Feature call (synchronous)%Separate feature call (asynchronous)Access control policy&From preconditions to wait-conditions&From preconditions to wait-conditionsSynchronizationSynchronization Two-level architecture of SCOOP Future work Conclusion Scoop it up!  Fonts UsedDesign TemplateEmbedded OLE Servers Slide Titles6_㳉Department of Computer ScienceDepartment of Computer Science  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    !Root EntrydO)Pictures_8Current UserSummaryInformation(,UPowerPoint Document(׉DocumentSummaryInformation8