ࡱ> F7Y{n'}1JFIF^Photoshop 3.08BIMxHH(FG(HH(d'h8BIM8BIM8BIM' 8BIMH/fflff/ff2Z5-8BIM8BIM8BIM'File written by Adobe Photoshop 4.0Adobed@      `  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?:{]*n5-nOB7|mB@ ~#ֿrCu V liB6EGC ⫈"#b>X)Q׏%P7{tʣj۽1o7qƕ= {f4v5ğr*GzV4j(Mw|w4#Q퀭4mHPQh0]lC nW`llF8ET} ?ۮF;Pw6Ƕ6pJzq፥Tl|?U_늭:*qE7vzRqK|h~?,վCM5lv$7ÑZ׮v 8-G㍧{L)]ĵF?v(+xuIާ JHWۡ`ҜM7/ @*iJbߧч)t^- =CW-661W=>?*Llt v­jH*qv \ JTt'*k> ;S"ɮRJֻb0Zׯ,xVzk)OiX)ޙ= M*ё`*z`zZTm+% xՇTF L/%cS&p +_ -Sez}6r(im x@Zb eOM w2*ZkZz…>#P)Z7^x_ۊ6-^@ƌCR<0#1bJPɱR*Anabmn49 5Hn8Q?ؓ^ 풤j4** *0#CAQN*Rii;tkjSFip0p[ڝ';j5h XP_U@Z]\Ma$}ݪp.;1IT*MA=zӿ AkiZKej*:6:kҠn{tbv߷W(i*=Ov -5 eM)#pt;xo R{v*q 866AZ! ޽+fj;w­&mO½Jm . 44_lzmI|q;n@E(|i5;Ҽ؏ 9WƦ1R߯ROl)ҴP4>d}Zln#r\q]*ڃ}qUGZGF*j- Pmژ_ƛPZ-ޤP!i+TE6NAyWj|>?OH-Tlw I5oQdm.; Hh%>m*4~C1KE>-LQK n}RMz7?,Uܻn\REjk"¸kZ~4kjGjx|7=xt"v?26,I xZ |dNբnEzM;`s mZӷя4½ TG^^' \Tz#vnsJu<}Ϯ-6M>ҙ! S"K1@t5[!Hau*}v U{A=I :i^갧֫NRQ$0wqB>F  !Tۅb7 ֧z va,,w $҃?S`{{d-@"r{{4'}C*vk1My_TKXM44Mh60 ݏ]p2P}1 Bw rذ-dKv;HjOJ ZSz}K|JG^(پ"#бEkֿfAHofAWqSpwQmP|FŐZk;}=I6*) fGϯ]w}W)LU7_1Wq@kAWmZ=hGa֛[@iZVU+^_1*(;Pn+U ] UpZsSh/Oi'xZd5wn/|E{u8~c*Gu& Cv_[@E6;"B< ö0 7ljH+Mӡ]J'ZkClӧF>1U)C]hRCAQ߯\V6=qP턫u d- R xnkJ[&4ĕ zGV:w4~8m4}?` b7\m. m8-\Fƛ޸UaNmWP ߹~tWЊ ZR>;YR'mM-Bd ύ=-7>XP.v]7 5[-*(Z 1A*n ҆ыTȥiWjJ'¦, P*:f*";~ШiP~~AT+Vm|ULPinmA^U ^?v6]MAKJ`w`]g-SwGB]JQM޾z)Zu#m Lf Vȧٌ| ]SL Kg |En]がXHl뗈PANrGs^C|@ +%LRP})Zu!݉O5v;Zm_Hk0Ų@ 2V/ ;@~DrdYrmT뿉im+br [ï+K*I6 K*OqZvo %v=7KPU{+K@{bu)N|O};b)֧⫀ڽP|zb 4vjR*mAGO|UPh7|j*6QJ\iCM]hE76ȭh7Hh vlolh;W RRcNǚx]A_lSjZdv#|Pq4} R@\R5ٺ7(Snɥ>#Z$vlUs-JZekc"Z|R"t%i^ȥ~ث}z-q5Se]ZrҀ1~6Ɩ t<ӧ\+ VuFG B>4FaNmޛQ9}[!r- 17ʑP T덶-?gvG, ŬHV׹'˜-P5)v U=cy: )o]Q=ۿӊb9 @w&T R|j{`~x)6u$ l ;m׮XL V-<=bNe( )@:+A*U*[mO6[`({v´0)Pl6 ' V )\QNߠî qԒv?:aWq^;lu"t--)mNƕvw rrt:RG4ĆjQ{xֻ=kNޛ ąmGCI') SM_ۡɥ$wy5N޻Ӯn 'o TrMGa*"t銸nI r 9űr=8i!@^Fl'_M _넪PgX`:a uҤ?Q O@;jWMP꣦ر;cNaAGShSJqd4MȮYSt#`|+&F-lZfiB7lU޿\PVz֣m6Cwv]mA}%M6>-]cN T Չ,})\F8B_Ņ7rZ酮NIYCWs偅 Q)O|I,‚?CVIF>Y6$MjM==,IC5Q!IH*W 3JjW+ 'V@?2VVjQq6MjO6 vؓJ$^t >sE>؏uMNê|m&TJMI܍_RbnBjmO#L@+OsAm*,)=Si"=t+UԨ>*4)JC=+<:wu;m&mR+^ q p{Zjo}"@9 Ѝ#!T|?duc[2lm+خi}teN k^߾Pbv)RS|~, 6oLXhŒ⤍ׯM>6H 'Kt1O uq(Z‚OzCԌYѨt8["ztkQjV+°O|!/(RO=o= tjbEI=O|qeҥZ$j"N͑Ԃ64#[h-nD4m&`R#LPhjJt;p\V+5~,2hJSql GaP 0OP(*|~ia;(jUo_| 0%i:kU7_S«xA'q銶WeQR )v6X5xt1UbMIME@XnI<<~4S 13ƍoWþI* [`ASAu$bVv׿(+ {?,@A*d|[ SsR ޽A utkN*)C~kMZ9uȨ{wrjoz<-$mSJ| AJ;L*SѺ5;\+=zm6حA!&E#5wS^;1'H *VA=|*ﴦ=7I5vۦ O ]E+l+w^n{ lzb-T)^l@_Z4Ō xo^S 1O `0 lFˉȩm7#8'zy;t86|wjW|[W'\ToU1ݠk :׭|0J ߋTa+^+چPʟ=Z'ZoܑwcvᰚwCZwVִ$]Ii`OMH EyoӉFqWP(P6#qjn(G)튩-i?j > ]=\i%AwFƵ߆mI)6!v'""̤k{a i0h}\=q$?w\zK~=+ N\+=i%zoCnE|26CAZ;dwo `:{n{WŘh) tXɺ{b6eMv$ԁۥ|q%ia%-׵:-Pi' Z-hw_ "!*R cGp(qw@H+Jwْ\ 6w )knUCr kNޔH }URQ*hI#jOJU$ZQRNL!k mMž$ױ'JaCPz|LxZj= -SM{MRWpr7.5Ok@>&* |൦sMUA?c5 TDFH5A8PjS5+zt|4Oab)$JvN$|>*WƠҰnۃlUI߳NCY=8aZ()OM%z|=wQK6DZ%n)ƽxbh'@߮К ֛}<(h޵~Ua?,UiZB# cVƦS£儕lM^T#rEj-~šzzVvx\GJa7 lvm[ H\y.Z pG14lRE7PE@@>…3RœA߭>GB4NH I*}FkP+S1AH?C֌ ܎,*e:wֆCIZ`N( i=* V}FT:v,ix h|z,$T9H\׵>_<7lSڵ Ewq܀}J"J֧w \h:|Ai>uFպt iU)JևN PPx{i R"cɭ7@)CA ;SJAAɦ+'ŚnHW^ `P$J@l[VwZWpw5 xbS56OX_@vqvc}֕X֕$R [ڀP1WĚ7A+Q_)ƽ="u V}?^AV֤u?&AA[:n\)n+N5F;"+ŵߒEhRwN-7ޣn8ңmr)hڝ1@oN{bK( ;KwFE. ;ӮY:S<- nG l]#T7ĩ(5BDddЃӷz᥎R5-dT )ڹ*j&:4|/4)) V$H5jM3O0䴰P<:Zq=I5ceLv* EZ܏aZWbq-FF洯z{AP6ʽpْؒ֟U*-jMP+][|G] @;=|VEcC@< J@}鿏*, l<:o㊩dPlO!6R}@k[D6曓^rlE:4ZBGdVR*駆%+JE7灋l(kaUoPBU6xݲAW?=:cO.X! B:M Ϸl6n78xU] IAξAi\Pסhw%j"Wh;5KHC@WphHŒ7 ނM<(;dC.pvNud>tGqUS=Lq;r>E+ۡ6u$-6l€Fǫ=!p wـ'nbNp5;׍鹭{q\8&6_ iuE6'qOMZwVAk۠#õvK'/b֟o_mlmjSwF,Z`)B(P &*WC * '>v*צœvZ*v?LJow02u6ڕ4$U@EFŢ+M MzdPSS*إ:T.N*~+gau7sMS`,tp$s_P=fD[cJ? @\GSppD- u~-$RһA0hʴNc^ A'ֽϷH5J4Sھ0;&V:(*{Õ*1G%   É`Өڣzf&qV:b٪@m;$84؅ TJaG  tȭ5;PŋEI"|IЕ' ſsNR W~/SF(om2JbTuo[|j~׾$|)-Ga<.@+&zj\T` œA֋S2]Jq֦z~YUK8u]:liƽ{d6ʥէ jmpw?< 6;t P' [5nۯS_ +PfܒHq)5Ȩ1*j&VP48nwڟG]}RJjе6?*#}Mk ]xX ZJv79*`٥(W}xUmMJk h4!rL j (% Ԋ\Qk}2•_-$zw}#vɠ)MAhF昱-C۷^ؒ5wrEiOG߆ao)N\Qߦ) mi;z1?}q[ZץzNЁ-ghă؍BJ|[P~놖֔7ҝ{LmgܚZxӦrLZ 1=:bW)ʴgLUzt(]:ZoZp܊uAJ{1Ua"*qqN`ԨdШI54N;:2VJq 0juN$r& xL>Q6cKTQűp{vqUq%1U vnwZTR A=2hއA.Ƙ?1uOP0x~P:~)Q_ i҇^{!C$]{)l'b߅R҅z1f@-5~Xjw'O'w1":t5jچi)-*iNr y?jߩ*O ڧ"'mC@v5߿ъhlS}imL$75r\ y4:Ԟ^,%jTP nItljdM("m8JiWSڛFوfқ»E݈?,۸]E޻Sh8i`fctYҴ2LL)^+ }덆wѓ`B A܁׾Pz\Iira|X=AɵCmN57V.#s^Ԑ?u:)SL(%L()wǓ]M}(]Juɰ%o4O a.)ZR ;p$ MH"<7 $Mt4:YhDz=:6"GMuq`Kf/XQk8=~VӸQk ]v>AO8*GMm-pdw1h!B+N?/| 1%iS1A?*dn BBЊ*;}߯z|yPAFYMJt;M"7~romN;mQU*v'Z_w$cKMө)\WjxB{~$)U?#"^QFwMU¤\JP>;\SZRE1l׮;Ĥ ָۨNסZ@ś $ZZUʟy:NU܃Ƶ4A-xuQ.(+Jv׽EM)N)miC^RA_@{s }œ_`?jWw%zi RgM+i ޽Q N EEI~;8bj"ĖpɰX^ivĖiA۶I (FI.*hOAڸ'j-d Ȁ7Ҿd  Qn(~؀>7462h+xTXoөV-JBrL lEZjGLI\b:a6=|v#ƒ*/RE#\cpҭ*)JoEEރla4eA;xdoQba8Yƛ ۷JN߳_CLUM($wweg^@4jv!R P q "8}ƞª6F|66uwZ_߭+n+ SO+ZTs^[l(6ZxWڔ Ȥ{blSCO1Z >(lSj^ W{W; I Mz1JIߡ4AGCB75~¨CN,RH5ZlzS"J( 8RA=@\*v튴GcjYr\jP[St$VWې:b)t[ tӊ>-{bjiWءvɽ+^Z@zq׷ёU@'npOo3Z)#Ȩ;ېW*,hڨuRib`E-ncbO^xׅȊwdId=ǒ7oCMl==hvO?OlY/4$ >>-V~PӪ֟AtUrzkC吴l-@;O))Yc'ާa.jW=pC5-MEO\ƕoeIQ_A l(77 XA5:i;>;`Z6$ҟ;6TNk{ěX',)$hqth',dTۥrl Fn۟[j~׽(jЎ& oʼn;.Xj{v!kk.3i6#I<{ WH~-74ޛ؇p6Єvߵ{dڧ^p1Џ$zuR"~c"C"v5kİ_eEkNğ %mcS" I㺂T0zW#K*iޝA=N~_0+J?ˊ㏎Ǯ(-qU4=M)]o>'|mHRuR=A$Wza&G/+`UM<]Vثb U#q_WxS"}ޛo .zaJmO(^b7qUZ߮,h!p +{(ݲv6ͮ=:Sw:Ӿ* W:{$*iJN O q_zo{`lIojMT֛Vק#vM >^8 @p+MMC`aV7w x;mb=ێd֝J>5%?d{T6?VM.*)AA֧PH:Sl7Өw&Wm:oo#ORz|Ey$ Rnp5"Jbc<*қ2ֵrQU kUת|:Id`ml0)m"|+B] +%JRéȥŸqU;O 'f l+}H"Bjp)m;dHliH5&NX"Px-"=h79&*tjT N؜Xq5N{z#$A7:e+)]pk4Ǔa P#=>LJMd\"ďLB%"Pw`W,C.[w$J{cjK!ZPm_JR$ pƐץJŲc9#V0^bJ좤|pS |K܎jLkڛȲSa bIpbmo2"̕ၩk  Е:Zd?  Tɭz 6& wNȦ4#B?^<)=k/xj'1C`uUxqR@|UjҸ9/Ÿ Y] w46Nzqڠwkº؍K5ùRk؀iAWlWbkxx *oZt1n޾­Zv*C- }W !"+Wp-:)ኋ+M-v=H۰퀤EM+=1 !}}+O­m)~l^?* ZbsTG4V|G* +Oj|+KfxV4 oLUH{i]ZƔᑶ\+Ԁv=hE+ihF,QG]E<DʜpG eD SeV (%WDZH$]NS 1jvk)*,=?ϮIRQf' 5J$0dJm5, Z Ҕܜ!+IГAA*tКu@qbKtA߮M-o  Z7'jBL-N;%z~lO\UQJ֙:ck:w;ҝk0;R A6+^>cMU5'1%8ԁsH Rv 1O"gP z⮠Z+JPSaE)*ME:{~VzW>Xm*U` :B)Dw| z T*s=K T={{diLGL1w"HbkO xBt߾w•-+ڟۃw, P 0ZT㊐&*h 7܏ွꊓ֞Z)PmĞtӄ7^B5H ܟ*6qO *' A\*s_qU~{{`xռ:]Ѓ:tSM{R+Mzy( Jx]^U;ҕqEߍkU4}E<{vɢ\Hد8"kAt|  ;6@K۠۾К4ֻs]@<-nw:lGQ_7{|Sr5G\+l:NJi JoLUpjHĔNwaG]v>hM|;ᢴn}1Z9TvcGZTRbJ<~c$Wة|}ULxn!. PO^C;(li׹ۧIބJRW {{b|zo&)dS۸?$2?M?.&U, Jo`TA֝EO֪NPV"WQ":tPװv_ ,aQA;}8P֕|P7Z*{׊}|6)m)Z_!Lש7[ǯc*gzi~S[!TATHI7•? E-"M) PP `+@l5koMkJ0Wي$mOl6n] *O YRtޟ?+"nCG6štv5EQ1UiO+Ŋ}Bk|-|-q @?Op Ek^( ah&w*BJ:}LJ (sO㍱G|$VᆔM|E~~¤ vXCGm,Z*;}h׵}T8S߳㊴E6SX֟A*֛w"%MH+nتr:E( (k@+4A*?%li_:wV*EN}r!+~#qV@*<;SM/=M8\ sPLx6҃ xW.µ$xk¸Ҵ ,]W"-S_\64[[7*۠$R2 6lW⫆l;$ ԎlZb<-=bmNۊ@oi TLTTVB6ܑ@O\ * 5ت#aTt­q44e;~8nv^ @ҵ*BI#L1V>^@aP!Wp kUAۦK5~֝굠@$B z ^ç|_-56#cZb]B;x8jlNŸڣjbR@LXֻHCnT:BSǯ`1UNaaTTPTQҔik 7\!Jh>JdשȪ6|*Ij`zU6j TW} %Tuzb 3NT;ɁL -wAnRP ij{R;V7-DWwڛ=ZW֥{x`f98@5bǿZqoɭiNƒ_g⮫)1WT:;Xq7] ^&^&[x;5;)/ `QROnbZ>xfШ'pǥGߊ_ w[٨)Nߎ*7z UAq]*k_R+6Wֽj:vx}}? pܫ6ഀ-A7Ĕű?1ы%hjOjk[xlUjh¼N0ĆahIޔK}|1UեZmkpitɳWǩ>8R|MҘ_4a~iqnOOiAp֠$nv-p lECEGFEɄQt AZ*m;-fu$ Ji,v{a dO0jF8iZWr˶M⤞#$ZuN\,qP@܏;}rl.ۃSNljS'zT֢_VA JEHփ )6\P}> X6.LH toBҠ4z{a (Lk_c(wQPIآM ;֛TE)z1)PVx=HދR=hHR5oLUMS;N#z׿^(#eSAjTҝjS۶)֕A؟JocJ&jve.~]]B(+^[U7 TTܚⴧO}o[MC}>ʀ{cO,~==ᔾK v7o㊶:P:⪼H4)/Rv܂?^hu>8B { :+@ W} C"޸ z|Uǥ:aIOS2lnEE[k@A'HlriJ4]kЏmMzHw8t$oثCޣ@w"WĐ+@CLP`EH٩mIR:}8B){Wl @ZRiӊR(<2,@#UA'o|  ؊J"‡qmWiA늯 zb$WzDd TnZq5+Ӂ":Zp'n|(֟ ({[*keo- &I4 (|2<۹-v >׵0V֤TNv"D7BNy%O]צTfA.Ja-q"M2ǭ|;b qdON W| 1%Qc޹ Z55FME2:sҙ ֣c߮S]k¥>=EE+b۽X-^˜;ъvկo,V*z;;M+)D_a%XI$WVz]- VϾ*CFoآM X: ПB^45S1R=^)Lw?,Xw*@Ga^8T_ )47#=PS{ lzE:nM ~8Cb[aQ6†iJkU@R7>ءwz|LSeïSt$R$&gU4H 4$o HZS⡨5(+P}Sm͍*;R;JEk m@; eE=:abv]ĝqHAP=O6 -4ZH֔SR)u6PGxnیJb_i>;qtКP'Ė@{X .ݿ6ƛU?#lW zv0t^*5 TDvm C6a9(SDѩ5&]pkn=%Qֽ2'M=L8µ= bބ -k[: Uh^jN *mJWР HC𱥌^SĠ" Ӯ;폹[(Ax9a +pJ(֠X;M@V@j>&XhZznԍ+cK'G Ҡt0>=E,5h~فK`< >l`|aEè`7_|ʋgp*zԓ:lm<-M)CɽO=Å_ R.נ#m@i1dVT5tMPq,g"מi–JxbZ|?*⪠;p2ZSlPѷ5xS֟/-Znq*)jxd-QwxZ▉aCJAU$'QJ{&EJfo@?L@E.X=Qƒ;Wõ66E/ =d #nO\Y)ԥiПlXz ߶Aio5PBr:j*¦4&vxr#m6Ɩ l)mw[NvirLHZ+Bw}6*m+\X)aR1U3۷ߊMLjڞ'à:M>XR6[J5;V ڊ6؁tL'jnThONWSNǵ<1DOǭ1b( v1M* X}8B_|(h(A{Ƹ6i7j+@=}0Ep[c?F& ֽ V*M9 Jb (+%TN8|$n})|%TB#j) z݁\ KwЎح-G^Ja*CIQB+*x"R}1 )NUZlVrMic5N=ZivVXzn{❂A5ي+i ~SͰ HMWc֞]߉m~XQ%0$ SN ^Eڴ)kohzqUƞw8]jJv[vSh7 Fz]M:VN7٠ nxԏ8˩i#`P :{v}?`E ]qȊh ; [@@(!q0GA5#f9Q.DBU$)z \aOw>oQB*(1EێX,1UAXwC(6zPc}Aۗ" rM*hh,vm BíkNKuT:V^Wck[7;qR̊n6ĕ]ƔZ RbJ nF)zԍ)!Mէ@ G,8Cfw7ة;1S{ެz/}ln;.*RE)^"i]R;R҇`MScnzNTAuC QOH7| D"4P ԭzPv#jUyQOW‹T " 𹝫ק¤[$Tׯdi Qp3)}<]FDRvmZ @nbemN*4>=xwU"CJ0bԹJnAIcx-oZhiV׭{B{;ӹToZ>x%i4?@h(*M~퍱1XNĝޞ<6-a'МNx2w{}*'aS܎8',iNr8AYSO`( )(Sjxt24Sf=֙.!Iӆ!ةz|ܑN jUt?OӋ-LUiPz^*j*o~ Ǡ|R4?v}C vmS]N&RzE @oCr}{Cҿ (T4n eE›nO-7چn4q )4(>1`. G HڷQ֞(hlj4{ lWAZoňU: ln7A|riwϭv#>Auh*թq޽5r A ώ)Kl#n1-u >ý~jt?㍆UJ M" *_@4ڟ+ n(>/nk#ȕ\(A~xqwq^N]2QAZI8 ^*;'m*QJG .(4`%N#*f5>T#CvI酨E:\,d5X*B?zbTnp:/APhھ=ctZ;TxQ1C/ !PPl]jSÏr{Sj?6ZҲlI4'PBkZRvEFݰc?2!TmP D&ޞ,QcR[rr6;| TNgOqO5@¸-ii~XMMk6o6d υqUրH퇉 y|kSj5PT׉#q=qb7r6'c$NWuaAABڣ Zqc%o :l{S׵{lXIۡnb%3ڛ\ZS=6:$ ht# C֙"RVˡ2OR|{bN1UjUj65L kqkR? $rqB=EwxR+JW*kƻJXm@VlN~XQ2X~#lY)QА;S}* 8iycӭ|0I (A#݊퍉n[W*;\P6uF|qDhp>~+Ȇ1AvWL/ۯZ-q4{chu=(qlzY;cAZu7 R:lCgzv=ZJ ipzïӶ*8:_@:M6Dwh$A-MI-5vNvct ~'_֕Ojb\+Z֔C@6I#)i?|86#c\\v4]NNj;Sn™&jh<0ĆlG$w`Z\Pר;&J'n4'jS)YTMō*׷}"A醔z}vUn@퍣z5#j><+)wxUy҇BkA]ܑL iExl; ܃JumXI+፦!8LȊ;bŦkڽbgoo -J|^;|v*WnT}(/`-^@|TLi45 )ǡ| {RF}iLmn }Yj!5ӦHlP74RyF7хGBLB@w֔ QA=ӄ/ zWMZ|{·Mҕ˜--'}?\{ {wZPNJMASkS{銪IV>ft; 6BnEi_x-iCR*v,TZr۪ pƄ=1E/QΠo#mZ@o-T}[|E{TmdS|)$\*oESKBI4(+V$vR>i!vOWnCcBvipSZm HQJvm\zV|'BE ObT|FcePaG٩ɂ\Mj:šm6ƛ=Н W@ jH>mwI}7{x*t=a+ը '$m@IߩZRr5;vɒڀ)ph^Šl"ڛ58Ac·4&HxcJl H&W¢[MX瀔SZ26*,„C#;chN‡s҂-iD-E(Oڦ-,g;@~ݾci$,f]0SE^wĬ,wRш؏pXNھ'|kㅊ݃|-W|! 9z G5>{RvhqC|=H X kM SmBOEQ$yWj 0%k˥M(I;`A 9n=ANڦYP~y0Bh( ~b9Vdڛ(já]A*[Mz/rH%mwdvS1-|;z2h$#l,IS:lV4>ULFC|T+O Umo-,H%e/WzShGKɪFƝ: h)_V'f õqڒjӀZڵZv!yHW47uO"x=~ J@@|16JZIO%w\*6]7}"˼} a[SXi kni ;8 cOmk V=1I"PWc]:\YJbA ֫Sׅr:oJ=zYpTJt؃"PxޟG|R]1M. f=MZy.5;*҃GlYU5wڴŒݘl*Fk-kQCҵƗ{ vnح:` 4B1Jn=E;hiC獲mEOb= tj x$z#zcAZmJLڛ}&DzWRק@u#q\i )J@kM o2 VWcN+RmAv{bXkQN^f)CZP| tIf(i-Rv>4JQEN|P+vVjIMi偉 f5X&Q@E( jxևk+\Q_|PBwhN*b@4| 5J]M@;CDm'jcmW} ܐ mGrTԟkR&ӹݳ EiJo(t޼w5Io|_|AA۾*u?FJԑN `,*k޿l,;u>áރzہ PHJs޴Uo~(AZl(GOMHx߶+V76nҨ^1Qb@oы۫;jმ1r=H~iȬWy;'ы>w@'v.[kq*_J_ ʐ(>*=0ZxV0cAx6׵Gj~n mAZ 6ܑQ)$ͰJA ӿX>t_%UT(iNضF Սf<Ǹ;.IJW c'1,ňnlHIVdAS!AQy>g&{ T#»U:] 4Jr=կI ;[zw~ǯV~ժҿ )S_6TX)<@>׏|IT;P:m|29 %P~xEa^oXvQM'`hDT (7o<2VTqbGR>)+ЏqJu6) mUk44$P14>PE-%zl(ZIy-.ׅ*dN6(ZNVړRI=Gђ;\,Ka9_i4b)Q8@bM*6N x% :r|CaҘaO]8}wp1f]~y XAZz|PB~< hrz8%a;H YyQQ \B%6]Oӊ8^b݋B:m+IuZ ߎ(&rw_ I=GAu+Jn6&5a]ǶMAƠz}>@<@ﱥk׮)%~Miwb~+-MiC@O\TЊP SE`*ߧdN S`+ w ;⶷;XɵZbkO|X\nFǨ$w*NnZW9PПBlUY{LzҦeK|)zS` 1T }yŚu=+H*(M_YF+ P)4j=J LYlڛRTwڿ. ۾4\h~97qJ`b/R+2Īp ۞!pPSmؐ؋&;dMدj} \$i,(8(bݫf<Ama'!6j@{Vq/6BNT+oL. bwlOZQ&ZPi|idШwJүuխ0#5cӧcKT>8ޕŠiZ?(:P6C4V>ۊ)dK m RSWSAӧl+@H@=qU":|UFR%6W=GiLmoLl;PH4>&%a۹Cъxa4MƗa;oo> ;cMeGcp*4:{v \X-mvjoXwtm`wS+Pb45): rCtEӿŲM~ 60e+)?Θh5 h4M R [ N*@gcZVڊ<~(%aԟ,bCo'ƴc1 iUML*G;ޠ9&+*A$Ҡ;bV"YY.1FT"'BTRIjbwdNҠE?N7HjoS`n.-ELGڴ6M7ܓhF~_><WpHϾ(\g0q'UN"}~[V.=pZ)ZTZ@Ml`HOAڟr.K* GJ@m=[DcH&Uhwɇ^+ֻH65 ( TN'FXƛk,8Wm>>+FLJ Qzo$[PI;rZbCZT1$_67I0؟0d.;o)c8}0$ʓS_xkp,*ӹ4}Nw``VBkSBQק"PTJحmCLkN•A7MJ$ZHқx4#~a =ZOQQVoSN{} AP5I'lV{Jw֘ڿt@&AEPjz{d a֘ V>_"Ii^5Tᇛ Z+PǢ0-P`lkz|Zv4n)*%n-,ŕʢܐzT4̰ܞŚC}8-`u P=(zW|K*^Bz4Nm_׋0l)N" fL:ۮE.Qԁ[P d[AZ{FN¿F4i]#Nň(DM:}8m:Sl &]D-ֆî.%'u;r&_$ &_okӢӨl4{6=H[*l"۩^j,_ll}2 КLƙzM\:q>]r1ש#JەXI Ph@ Y csMӨ ;t;텍8Fh9&%RWŁ qolA WM֕=Xdio`V iӥ;q%iaᄖ<*d~Co)Z˯_#eI?* E 0SRfOQ܎b֦(A>tځޛTWⅭE&*u zw_%H2YQCSӶ46Wc EQ7m$]dž𰶸Tv,1+ׯc/n2m7ƝHG%LdR5:`bv POъ];CFjс W`h 7Z FRwelx׿"$Zݍx2]Ȧq 7Sݲ׻VJa& ŌڔZy:Ʃf4p)CZSUڟqU"iq_ OOboSM}t82MV(A؎< TCM2`1%a`k$)6ۡp:mۧ㕗T/ * @eO|Y:]]oWn{)fE7;b^uȶt]{8޵6,ŭ$"*OE(;boh@qdt#()އ:Nĵv,URpр^E+i* S +Ҵ䘫,gmmU#p6ƭIE\JI(mv5`;v*-I4dJUؑ㷉4ɥKٮ 4*-oCe+4]T@Aۧl b]\#f2\-ؒ W8Jk@w*<톒 mNǦIhoeW_*7M)3[@+10zGY OdE:% $=r7Qu 52z0;x(!M"HmXm*oZpZ=v –tU3m[5 +קӁVOoŸ%craƝv\ULU;`% ;;ڔׯAQM?<,$J*mQZ1 Vq |'ʼn+[jQ^/HZҴөd+ =-)P6C\ ,-I7\)[} w0<֝@[jaϚƇGbJajh@mUՇScE,T+ bT)E{l YPi]iŋZһ~+C`#/|,9O)D63)xi(U<\:]!xmB2Kpe,fS=YmZw&$RJ|{bHZ^Tov,;TԚ@h:)i۵qRSǯ-1`bֻЊS .B+ZWnv!a4݊8N|zR5GNa YIk¯hCJ>~G"K1Ġ^7wemGQ{l=z|UkKB{%\XN'M}H8-&oSK ۨقڱ٩U<oՊnV} qid^W,C>eTlAA=qݚڔ܃<$ZU4SB|Gr%!x rv2lU@fـ=W VSō"4z8a!1E8W,lb)}P|a(ҍhøپB_I _ JaUK@}>d 5 wHr-Iʀo|hj@zW Hu`7$Rbak&ـN@OA\-Yyw6);? e X`U$VLm"1F O`/lv n:a &*&Wmtp!E IiMȠ;qa¤'qs`E7k"So2jTLZO N$ֽ7X_SS6~L#Z~ɡ8H S䅖g"+]8.o˸ n #ҧ'#*Sjzqs$ބRFMOn`k+M4|𡣱mt+ɣQj'аWrGZr뿇l čmɋ GwcM`+Cc7^k;z2j 1~1bjw {o$aUqZ +z{테[zZXESmA̾-e" n=e2-J}åwR&L)aCIt>hG)4ڹ(F؏ j+ ʄi0MiLPvjrrTKmM>ρŦ5e;VlNoϦ%c_k_s)JbdT&&.zI@"w\3Ҧa ?^oWAmcvLʆn|}!"MjKY&;rkŐը {ď~i߯MOR6ofo~F 7jTf~ޕx!Ew#ڝMi?"ӿ@k1H+ĄPsPiҸTV4*nIȖ $z zv}WSȫv=}qE+*xN)PJ|@FA>6SsCZu4$rcv*vaSB'ؐ φ o#rj*lvp4 ZŚĒ!sQ%ڽB+I"Ƈ K6Ym =H.YS~*_I@ ?gL ZsRGmÐB3 ׸aj!Eؒ`k<} =hAO]%JmN1!Iހ}>8"فà6'u'r>ԌAA$Xcbzc%F3\PYkۢ7;: PJ57JsS([X_mkRƤUjvo,jMX[vX5w]FGsX; wJWoi ǭG^ߩDžp6p`ͻq [hjj `I@\⅌I˨^F(XƔ8H+*v=HW}8m++_ 6bZҕ 1%kZoq- {le\7YGh v<1^:RC,(BҰtyaeZRSlj/ON8c2ZM2Ό!Rwau38r@(kM $l>iibP[4#2\ mJڊʝzۓ 75ª$;{S` ҢmXR-LJv6KM7   wjR8XR$+Jl5ZӹV "k߾(qAǭ?*E赮Z> J 5IThTt৽]vp%EjҾ4#Iܺ+O165#jb'`o.Ř6 }'N Bv@)@V, nvڀ81-H=Nr#@N޽6ڻu7 ڵ+Sqצ)|Lj7)>&ԓN|R{T YeCe}{w @w؞+tܚ:퀪M_ .֣m%1)yW\fԚ$ 5֝:;dj!pn +㍡cJ1W$*sB66Džh6*+ڽO ׼R'IļoM`D xik%ӪN II#fDqDnsj=TleX1eExXI5>-5_FkZ"J*P-`5~r{dá>#*ZmThh|p2e+*: Wmja`Bym%a;-HJ@!=w4h@ف ASbIIs'e O\@Jh&! kN,#zR* YڼS U]5 ul[ȝ4)j aƭݫZpA Cl|?)]짯zSʦh߀\{fcggZ=.= _$+&f)%ubp-񓍻jđAlכ"H{*Ս(@@Vt"$@iπJqs hLӧЯj A6z|n g' k$lxJnqLB\B繱HH'olŐRj֛WXuIa4$޹5h_@im6oS+8Sz`QGw4 JGϦ6 eX~$b &v %;ֆ߯O 6 q3@7*3\M4gt]UPFi &\åwj=I l\Q١8c>&]O#+|}OP{TF@ۿ.$I+T E= w#dݪv;(GRp*@n]$֣ gem+M+װDMh:Q+qaNOY\ щNżk@ܯM=1V r'p:S`"ق k!LUڇj,zj`,P{t+˩ߨ^»R}0udw?zdI*bE<:x=p6eiNŒ)@Olc @ڂaC95"l>ɇkk ڟNIw&+mn7q B :0ڮV55JSBZKJ=,X_Jr ^aԗ>b5fFgSS/fi \ƿ=d,yQ31 5xZWf[k ȗPJ֧z8Փe5gAcď2ѓhFmrAW4N-eM44ʔ7SޣY*nkIhkau~6{o,c#)A]@z ɩMj)8ҬOc3A;ܚ X,ҵ?Vjj Lø*W|P0!i* SQңŁ+kP(djdКn"U"@,by,&׿qޘ9Z]oJA=m*&:~5H;nM܍鱦HZDb䰝n0,&H#)I݊$G* }:UpOQۿ=Ja-Ijڵ4!mh{t'J@FCfgp^[=.DLQ'Ǥ g0՘iB鐄!Uh4ҢqGYhx^'%8;mi#in@<,ݹR/;yAdz0TtͶ!6 =7ӡ%l/w5 ۯ|I1׭|qeDíA}d4<. Ym*7eGUɏf'4{עI" =;NvFyrmAjZGȍ~>gPO^Гm!ڵ z`icg—\YEȴ.4rZeٹa%O;ȇ1=FVG6 [*'jE+6I"->sR^ހĽݪj1UOR7ܝŐ /7MA%=hGزVY*65 @~, wZTzi>oq23ؚRG]G^F%lKJZMS; Iw8rw5 8Ur} e55cr{ U $3 RAL US{T`J}ǀ<35zn $ ߏdalI,za 3HrGj,qeKCmR>IA˪X%ב<2BMx lxҳjVqN$SfWQ&RleNYӯٖ'1ZP W sLd%h;q;ंFݿI%_BHΤī܏ d['/vEJeFNL"Ai_,?BAo>..wW 9ɘ×}QmZm7I՚^O7ai#ΞxcE5"(sv}+4oof5GdI*LHރrjS'`hwɆ2ڜ>k%LT|KWPĕ3Q-TVPJr@}S2lKn*O\XIi|@=?$1P~ ^q@Y˯򝽿ιc N#!u5ڤ Ai` I6>;CQw=*@qiJ]ZN?j1by55ĴkZĬ, v߷ƒHOMŊԐ6$ u8璶2ZO$~8X,OYZ ҇~aQҽSG=a5z 1JÇr;өЌO%?Gfz%KKS3DLh0ڙ8r(~929*XP}NF`o{(m14n$W잣[L[VFQ5PO|!Ⱥ~!0WIL=>Gi`zu6">Z@XҬ#GictٽEr4l>Rt-+ xM;l}laO,b|2)tBۯ^YBy">H %<ĈWq;egrNfep&_ӌޚGq e4{-sL}qoZCZG'lƞrIvQ YݙkʸiR%q%JVR- 50aAО_ j{Śh(Ƶ)UUUMI'?#*;]xtțUS~dcLU@r 5g5w)v&잀URf$Ocqd$043xGAȒ@}3U[ @+I2$2UZrvۯmfһ?-WF> +7QDa[I^u5nӾ ,,/.涖ӒZec!V yHۘ4]iR )Y+"z2F-Đw4cp;cƤ/_Nm;Xܴ+wV9i.9#"Q%2Kahҩ2Ȧ1n&QVWR[⩉Mv=w9qf{ɹngջY ;9-@654"6qr7#lY4sA)eEӡ?,'v#X?.oG[BjˎE6ʧwݟc8^@0tj2ֻe4]]c^,Y%ɣ2}~T٨T}N=}Z_t>[H )4g%ƻ9(O"V449 vfR_c:րPo:LƵ>8S&$ҟ I*$zP:ډSx׷Ŭ٪sZM!Qo֛0%Qڇ%lN 1bFR`{|WkШO|XJD_LRkֿ쮋& !LR&U0_@60`^$vJ"\̆>K*Qo'4pݏ_K$m}wp=jQp @`v fR:f {]MΜ(V<;<8)%@s֞25A zjK/"´qг$4F 㓁Þ+/hV!EA;tڤ|ɊD#IfVfcP5R3#8Տ50 KG^,^i/8ѭyQEH϶HGd $,N*R\%hKfrRMFTՓ44}\2+[8J/R9-CFPv_c\yX.i^  0  9ބ#wQ)NuͬMb0 p+:|=؍=W"^m<=)T 7k9Vss8xԊԪЩH*Zх>-҇cׯ*\;RWnDC|ևYA'AˑZm zVr7퀲9 Mi_c뿊~+Ӌ+T (x+-(m_0Ul VS `VF3~:f:G |>~[8ʏ /.^גs<ӞI$r ūԒzFh }<7o{7'rkR@)]<=I}6_=̶a > A:][q(_XҼH+]Icԓkn#Rw|,PR+ZÖ@=E_d"]gCX}a-VZj?݅39#^=-\ZBleH[|YTjrd}u8 "Tb120o'~_yOAm(i-8xVc>O_=SC,1=:wgr$_v9cD N$m#jFH4۞ MiB+Sƞ?F,Vjzxz˜X])&*ǡ4iOR6ƚЃP\,JT&lABr(jM>}1%ehR{$/Zs!{WrA)hiN Sֽ;}=~ZRXJ,ۍWXK БŊԩA>)l_4Nhi6T}FS-@Inl@"8XlVDqQJq]8H;n~քm(S-MZZ};PQ^_NwRQSSkq$?ed3 G41ehR\BjLn~'ڃ$f]a$IK= v2q)]ߧ12&ŏxiDKY>%@MzxW"CQVNKI#_nEFe\-js}ZCsB/cNcmprݤ,bZu\!ɔoly;tTJhzN3ӥ[Ym`ِGxaP<8MAWs#Pӏ]ve<ݤMK!R P*vNTvaOC0?Ok8g+2t&,?TEp#97'.[]Fh7F`9!$wnIJPn~'YDkvIZ),N [J*O5=CdGPkFZUr @=D~5.4%ci2 yQ.'91]N,QMʰ QVQ 6(GN`A ͦ,KM?BronT ֢$uq;]޽Ͱ€*PbR"oӹր]>XpS_\+À7=uWzq5]m-zn,%vGl Gr-lvqdĞw0`V4\;YնlivqMLYiN 4BqOl0(`XrD; Y 뺭4ZUp,:28DN @~lKU-mt Xf$)Fڝzdbe?y?.i|tq dȫ*:l vgPL ^ $ŲݲƢTr"i} \Ǹ=6TBMwU@iV8So!YRcO`~Piw=O$փm_P>4 ?֘6I7Is=6+(>.pbk˜ڭ$0"N}эOt6RYEYn@lRbw/O}5Q巓]Y>HRPF,H ,dԠ;7 -:P].-ZSTF,T|~jVR6j,V67Zvqe ~A$SGxt95y 7zuDVOB[6a^]M|n;7\pT̎lRΒ%D/bTi]ʮHRc5 xi{DNo۞;Ō?Nm^('"oXǏbwR$v=6#,P )PM eiu' ^d_2Ojt3 Jwp[HS:= YÁ.t>ap`bQN _ķ}GÀ5mq7eszuAeR|~b!aODѭPXD>'9XಚRRٙ(F~rd$ iUnPB<2x LJxjՊܰ&H7qj9#0#Y̶ %Gz+'A,bv .R*jO HG.ثB(JPփ嘃guce@*#-7bk]yj΢E,(@jPP$R |ՅkR 2P=sX:dv2u;xvkeb7S g`I]t߰0h)L *ՏJS`09TE>k{W%idWhI*GrF lUWёTV*I8m+ŚВӱUP;* @RE4 k^Ƙ×~bJmP<=3t|&zm"*T;֛vEVCշ ;mnFfR=RZN31Tx4rdջ;A$DqeyPϭG[SI$9e*u=ÎS:~7y6b/@`nٲǦ s۞dxEYnV2<'$W2y}6rBH$,_D$. P?q~(Y'a![Hq ⥘n-p񃽕J=$căFNM&*usjW,qƑ+"eAveK.A-:LF8$erOs6i7 +Gy~*%zKRMCVFn'{Yvcͺk(<^[)eءʞÈ3Y;JI|G|1ɒyG?}=5dmAWNϱ{H$x`޹~ki73)t?b~^W}1Hraj@ŞVW ȯ" p HrbAJOϿ| -LhOThۥrAT5$ڮvc|Ug=}i0DjtYqr?]-gbj:ji*ejhv:a-TOchTԵEzPEshaxbVו {׾BG}N=^jVJwA"zToBz05`xN8DN'5O:h6Zi-tw{dIVF}۶gG r['/ ԭu5tAFVs` }:\ܕQԑA֟2YpuycYXZA٭v=)d^;o- v{alo!""-3#8ՋC$W)!.ʹB\s )cU"dyO%|+LՐ(' 5>SN]n% mp)mDE%+zPiG)SZJ! .;G ɠ,.X q1 XK5+[k1\*KŽ:^H>SPkr!φ`Eك7I<@mE䴡5v\-́C(aS4;tMG-xL!r ;0 \%Ĉ Gl4xm/GNxQy֫ OMS\I[%ıщ Z^-KsHFA5:S{g.'!:"dI,=P~zTb朲5v^#gi(cpj^a5 w3],SNAkJ W: |.rjS"e h m`ig{ S=#YDWY"dThJ1(m?K/)+T5/0jwu4^1D샹߯n(:^CJ%ymMsڜ`TIߥ@0R6WZ 2q Z5dU&1e7(%:ei.qMVDޞo7ؑxֻCɌLQvZ|x?gg6<1m5$<>#~K5$ra8LzXe:ޕl/cVJ׋Hʼ9GsXzH)mb|0VNsz }†-Ktk4ֆҝ6PhBzcKnf'q1>HI s̑4;+qC,.1_qGłq2KєWjG# ů|{-6C3=(n%;J+p[iNDIDDbRsNeǨQEjypsZlEd&,&>=M(v=tѶ6{wmhNUTr`:f./]eΧ6RZH\--,Pz#M.6YeQFNQ#1uQ]e?ŔG_wMr` v+ q>i+i0ooUS |MSc˂>$ /d0X-t)+ . bܗJ}A5idõ2 ɶa|m:,W?Tƕv9Y:CncNp4Bq$mm]A2JAls5]!e,gzaG4每?oiF1sH?8/=+b*[%Jwe@!A{}(io#♼1|6S&zƎ6aD+Pjք<0-$Pda@ a.L㐤4:aR08:l1^GCȩ?`|;&D{T |S@bޛX'v^ۚlOLĈu:G?l u95&R"y&2Uh=3rAJ#O^IߗEK+لSٖte<wwHF.h LdemñJ*Cq TGG^J=]A+۰y17܉YaBrZ5Z@5*cBGP \][1fR| ? méM\Eu!T'=(0MoЎXT)J"H$8e;Ӿ$ ҷVA"bv|2|AH Rۦ*+eK b`xՋ6ף3 wpV"zl62**]ˉwŕ/R6sUŐ,t ƍB д"qN; 2dyաK0-bF(zULIrQ&?D)P;2İN \Ӎ-D GI|ۯB^^TQIʜ9|T|N99[U9W7O%ƦI\KT&Y癞Re#l@E+ڗ+@Fo׶C r4ƈo<UCpԭ `z_i;eϡ,h P1Zd)Q=ލv%[y#hV?p)JW6ݞxrY^Cڸx~/f@fNCߏSH>e9F:N-b ߾]8Ғ,Jok,T(xoc`e#^O(pw5VE7G6g^SҿKj ̉? ;fu>̽7}-VXn TpG۵>}3:Ā2*¥Dqvj}/rgE5v~i]m[qZwp)/2]V~LSX p!2TNG̬wpy!MXVHᘓJo@p<+Hk=IrjsIsظ%.ga=^HխDI,~pdD )fUCu*P0 g, T=xi㘳#.d(\I-Z/NI+RG$nyxj6v_n'ۋHxTxon-㷶x~mT币6w(˄UreuեE M{tv12BQ6\Xّ8ffcHj-~0i_X Z;,3;ia"Aq vVk (!n#j=)L#hޟfdP,~bb1Oo ")B|j)\41s7>nJ-Chy$ EA"0h?l~84z).\.9b%܉Mbm: *+'Ǡ=<2//cvQ*ѐ7$EJTڒ Rq~5vhrpd7*5mQ\XS|'ZX{$2iwS6=mQlƒ2;8crHd'OԴBPՎ.nPwRM91᫄HycK~FY>Zףt6%SPcrHc(jPux=۽Ԝ wzeeb^nr,= EU37q$99KGk;x!Ai"y-Øl P67~ǐˆ??vܴl "`  ͔$$,>m~O1yCq *{&c p )|'凪 eߛ֭;(ˋCsѡCRj6H Nu6nGl.LpQlJ(+N @1#Yjh:1%5@ J qb*X I֗^' w_ XM$+RtL#:'GP{V'{F#cM%ΆIH".^84¬(hGP:drƎS_B5G^ t.HވWgJGm^CJקXH4&8J6~7v3Ũvۢj$bzx.F pB JޘeQ&X,~׍}w9k'WVkQQu?hWrjCq OQM+VTRƝݱ4~-Y,o}۪PRokxX.BLI@.i1ibYq3\S=g|Kv9$Dž<,E1mxu$_95R܋*jvExd~ Rjp2Dwh!\kC^kIYזlm͙JX8vz+b.z1w"4 +!9iG&-Zr4f]fxt;F(%j71)Isp AzҥjZ mW͇yj FEXT<[LˆQt4PYZpxV5 9o"y"#=>,qƃM2'ZG&_ɸ2'~XKYUީNx95y֘]&sfVi4aoch%*Ҿ9aȽ[G^yRg[vH|rQsaOvkB匒b떈|ʃZ]iUW$$#ьCj!~ƓHa,CG!zuʆK:t ,=B*B0c&vrEMs:JGajr$*'/O}ucla8?S<`:&"Dej6^Gx62BW&XqƼ\$9 n>J91!ƇɃ21UEc1eYo',ʀC7CΔ;t˱qs ]: ! `Q@rZ8c _yydl"2 oLc rȜZ85=뒙<zT4S02^&`LfPv(|Q])Q^k_$mC "9(*8wQLEdƈBJ~Ԝ% '_Rza5[0PisCFɸTrޱ[I+`r'f=D>@y{WvZI nuřh+'6tHS1l梟q 1whPAWWF=]>D9FgnNk+Fu¡+T8 _KM_GizսʹfVQU H$5w|Mw}KH qolHk$Q*QS\g 6%gHK%4ʶKUJOrz!)V*ryi Q,XN§-Ҝcdűӭd^DҊF?, ɠyX=IK M]gɧɎpdvhz؃uuL$ QM'd5n/vǕD"(x6kroG !KG~;?mRCEi"ݐgG]}K`s ~lrHǩ*̑x[I#WgO:~S͟򰽂-5&liJXPׇѐ:p:^O R̫ѕ)_rwȜq1$3՚x4 /2+3VRc QOϦc(Vu @= H 2QYJj%6iVViqFM:R-dw+F?!piRdDT ;r?/W=3L!C tO]V;ZKΙ4` CJf;+ūq2c{hӂīrb4hkӯ)nBgT[k̨vԒTՠ;'>#a> aC *u$` m@E n%XUV-}9[|J ͕Ņ3MoX$L%\-b$U# *ĒA_iJ7+ܱj2%CSNyDQĖuQW@5kU$y6%bxǠ4LS"S dmKPNZ݅67:Ly+^vܜ㢺9YDY*T8v 4fU)5̫P'!'C6qq$R8#Gmp42#DPe.#eVkGLmME_56S+TJ MN1},Pens<;:Џ.&H ) v<ÁO$pCAZPby8Z$e(rzIskܹngj@6>sY$dZo$U% - je%t*b<YO!ZwŶvw^ڵAǁ޸ \' 8Eq04F XșI5s(9@K!ؼ\ ~\TUQUZ'*9yEȏ`)}4/B`i$ &m2/\[ժM|Jhv_׆[!}.w 5t2AOI=E<NdYGonx^ J&qS*@*1 vvȑ̷!zq!Ԭb(]ZhǠF) S)ϟG ݡg3(7CtV$ͿRk쯎k!#.zhb-2{ЎK.y%LE2ȼD;; bWBX<&sXgY2+N3 [*9=96Zkڞ{;J7mjSz|;S7z)BXĢ<'玫&p 䈷KҌjζ[} Ei%.s"Ȫc zٌyw _l@uZlR~1 S8.5.四Xln9,YR@ޛ01)1Sؔ"l+WO \}~(g1Zē8D dtٸ2-@#G?F2Z|R5ŒD4(HPڊv?2qka]p1PzHl]]w `$zdˎhm*% $w^ldG'& @|9IGUJUJԏ" {\)\dj'nYt%boZ aHfqy }!%D;9Q5Nx\zYgӝG YZ*zV0B>F54 ]sDKo6U_N Ix{ǦTm9-J+q)q(yͷzsOg;|2q2lGSi 'LVB^(H"e~N5DFH9.m&)J]Itʑq)I SEo"Y(ă:'fuJi E9LVOL!iCխtm2+xJ֐i#=ف)/UG ynD\#AI~JDT%#|r=̐&G.faJl8#1||1PӭU5Nn&8_1?G|3b,@yluke`f jWmQ_〇ΌlZQ$r6Rav(b+Fe@g P+x%H! WSV&f$^wM{Cބl%Ar"V d7eQ(ѻ;C ,5xcv"(SHr[4k/Ё^+e=!5 Ca IkxKoשc;ד}^& 72 v 8;pԭ-+ K3RE#®VjT}!1GfbuUčIKxӈ>5D+E2EIPjF#A,j*q4\=\y=Fwy@'sLDn"rjǯPLk_4g p߉-GJW1?4b9mdb%cdu҇ MhILb'%8瑽H6 e0 kj GqB98 e!>8qQebN6#NѰoKPnzÌ dܤ$SSҿ<;5e ڛԏ ̚u Fzڂ?N" y2LG<((;RFHi)oo 7YZE'7Ntu)4 A+ ͪ7G'ŏVʼnŹ@]꾄sGm3+LjӷV8b&WQ5KyK1<G͛xg~lBAu,|?_ɄQ5iͬM$Ơ$ {5W\"<=~j7=CUd)/*:ҹv<Бغ#Bz\ȇ*-q"GnzV@7.*IS\I=aAآRs}cO4-xǹjT&2` P=_dHUsoCDwcgFk6DF Б6 "1h iȚӰ87|3ձ4|XWDzSСaFbГcrQ.> ЊHo [$B IFCTP7"W (%"GJk$ H VjQ7Hs5E]`Fワ =&b$\@gdpT6m!9ZM&sМ)mq2^ 5ku1<&NVDTqZ2x<\<ǚp6-\kZ~N_{0x au<2 R񬛅p+6_Sr9 eD]ce䍝؃ץOȘ&9y_ ^5#sv0xiT$)K|lbCT ]e?5Cw,+dͤx@؈qp>(6vx_yt\گѾW9\ے@)&QJE'AZVNH2:y$ ) _LǖSBcS,\t7)6QnR&1!5N2$7d*TZq$z7">u"$Q6Lu1àak"Fl*G-0Yw(AEJVI\,Ԑz˹2p6C%찆$jxxc2;i2Fy)!5*=Yˏ4h"ZXH;QS~~i m1C\ż+$cajjT,`$!()޴#9 cdJ!"O۩I9,{IILn}(Y<[;;&jvn/4pDPh)~p[+1*$1sAt1(ir=sĔ^'L1a)@ipW jH`wbu"yѹbOTR99F#]H_}C2'm%U@;TCeFڲQ޽DHIWOP{$:f$QLq:ġ&qrA%9vȚ.&r֮Z BqGzf~,[&i/c;1`ǿM.8Gzr6k藭Ko._K:\: MzkD?\+Ҥw7Q0w >X-CTz*$} 1kZb$G8Zj 7%mvH4#%QէZ>ynLWT ~yD`.1cIw V. :d"ivlrOk45+8Vv^9-Q${щ]MVU(Gd"FM*INcQ30VQ{2; 2R6珕#9TQ Lw2̓8`$=q[4GԖX@6$aAk0(o)u$q$r T +McZa9W1ޝ Dr֒mQnF<"Q4|\PHTN9(i"PL)ݒu}c{CFr"<ylŔtA5X|-4 n[~0)Smt;uE,j>;^cnP&|_a) اuD&U4"$c鴽Ԁ#.D2aa@4=NbOS{?FX4lBV0JԪSG(\F&QscwVJ6`@ o=L)e˪G ^oUّFO8 ;Pn~Xmc2^e48@u:}f>9~5 a2 nD<@XQtƭ`ҰΘx\lNHLrB\J3ԭ)ߩe%eWm6:ȒcK߹ {rEdmI:|Jh߾`:@7oQ,aG:K@ H"ƞByrԶp'Z$liNVgp戎gJ d@99鐶 اDYlx|MZҟv茁nJ"ڐڵ=2`&OOЃDNDϹ"]BEx@dxwBJu-N2P\S,JNѓE K6$mb>,d,>v?iҕ>91'9FA'm?+S#~_gJnYئR]@#CȎH#2 X_I<ѵ>" ִR)|f@eH DeUw6rUax,H>' dswJc67Y+Ts0ƏzUbKnhЅi7\tqMam#/wG|2O/4ZV}tʈ 9xdE"+Ƈmqqz <9ޛPw b[^?z_lR2NNru9,PT.؞,ˆ9E!{J8$uVI Opիg+wq<8MPꌸʹʼ2ל{jepP!,ίq3_ZՄK2|4Q]k\n|$-m?KpȨU! 2&8x߂= +ӻSlF!{l2nv QGH81QJHp]Qȏè;CvQAn%(k׈Zs\2]!4?g%gH^ b5Y#*~h#i 6Ѝ-צ[^Ȟ>1t,rYpIQ874PEV;UcUc.}[OBS}ۮkb ^R-I|( ^d5 t>e3[e; P *8WH5GM K!%X `xdnxABChEQ jy7~$23x(=e5)A@F>U47 XnZJ~Xi_X; ڤR v(U7sp9W/QMBuǦ-nB#f~R~~ Rf1T#*;W+nXy)Pj@hq av * v|?V$M̖L9\)F@I:щ v"I0l :K|CIˍt)(YoK#IjH5bA"x S+dԈb7ާc?B}g"FPv'M^!*_B]Ҟ!er<r\Y QcB 3-9oOy5(6"&9vUIT糎;4$lKJh:mxK``SJ9bb 8CJ𫛶R >ɮy5 ohڅzNqMsw)]Q%40j5UWG>BiֻWl(9ˋLly{c-5cSjr;g;V d ;Xq3O.R!Xj ,:pB#ހvُ(|MRJQ֧;d N510NFYT,7]bo7dmNJ$SFR(A9-GdF᜷6` ΁&HP7?پ .ƄE ?!{<Ŕ퐡T'Z)RrD.O|InqU詮! vX`RW0K\o/[s+qjXmAȎLzraUO4=b5)־"2/w=PH޴J$`LSPAd5Jd}.g2_!cPa8qdeH_FKV;j5Դ(T v;6#h)$9{4[ĶQ]FgVsS҇! )|DAB5[݈I;ru20%Qe<Wg*DfFփY䏒1#)JWx \Wz>&i3ʢ3"յx&f%i6Hqt?8}E7,M=-Gsd\" Sb>y]1{kɭR zf3i4R% RBTˮQғ`$Z%Hçs\Ůoq䏦~h=};~,~ٕxyLzn2nVe }@ S$vo4Bl|j%p*mѪm45ќ,YutFmP>j|1f+bAdZ.bPW 2;D ,Yx3Lu#j k^vG{t"9D*'ᔭkRrjN ;B XFާ\ceV?UR46+PBY"j#o2+v\*>dL듕9qwm2sWXT tܚLDB2.LD蔛ɍzL1c+*op1u9K*-O {Z1 >4*zvPxlG[N?*@7ak$N?b¨% (nūZsc"?.2,k&65Zh?^SNnH+(s=ҙ.[Vlu4D8^Xd5WhE|21,$(1iP?p_RBۑǽRii!"t'r#`ZZGӈ|I޴9 0IF]^6J@+$$+vNs[,  7aLhBU d;!bJ1$PSwTN&~>)D9-O[o 4˄rb>9 NRHf(ѱ+) bN G./α?v o="b}̃MU{2)=#ڹC=\~_:MUHC;^ނ*/;@%~T~_;oBB|q0Q#cvZiEf3)"S]2[e+^r1wMgfS9FRKgb)R9h>]},;vLhIva2\GZ {4\ IVY kĊw 7%|=s$`6E㙌M}n?}om+E(wT'`XPཉ4Pb ;Q+LjeCv SA  HHp~6QG>i鲘Ģq, o93BVCrFq B >(5ݑ8A5>Mywzi:l;>,Ŗ(D7u.L$8yyYHkO§e;ҙ\t;dq'߿d7J!KIx_Bd_A^-Z2Dv7E͘*PO`іAPI]Y7S$_ZRCPs_ /"4@@Tr\@ 7+bR@Z(>5Ka^I5܋n)BT}7$c=葌 lחPå[{B']pI߹ɖf`@m̞䍚 ݉b}fQOE QK-WD(%5 bO MCnRv ])Q(E_+ފJ<%JÈqs;6<6UFK WUޞ4"q),L 7>pըY{sq(a ~^8aO&DQ̷&Yn0ԔJwNt8h~=+O[R&jJ9EnLEJW8ȒvIm5I Vkh̃ĽdJq~"," 76yd$~HM>#lT%wdG]H/‰ ЀSZQ](Fq&G ݴ~2 d4 Kjt c IXJP0pdLdT%*nR QTl"daCv=@oybK_UU4cj|U˿mz6Y 3*Af=H[x"PQ.n.nm(@iOZ[0VR_ZB(fش`Ċ8!# D1$Kf%I$1Nl}̈Qqa9/\Z܅R8t#ʲDqPrpоiB K  A)xĘL=4T|2dyfdf҉G-CJ&27g?TbZ)P+ҕ^1eH`7 wqn ꇳCOǧ}@ BHY}ZQ p1s 4VAIއ3/v.iJymsb(~7v Pҕ%߃p 8:5,ƾ-{ypD[$iaYV8{CWl:vfH0~nGw;oiOucu3%jQM>8T2ȍ>t,%iSPjWxœm3;Im>;֧: ͗4@9~MomUPqjZIΈ0HJnEElZa@~)vܐ{l?e'z?Lrˌ*'}.m%}֝DHEUWuf #W/D%y"h҄ozurP˪jt 2$R O4w mq!A :H\H'|csoRI$i ##v}\3zhIJ%oH^rM7 kCLaSA(Qޘ" rŋz"I/ j?T T,Drח0<|B,hRdgZW`kDnt2_u4@nh6;-V/lP0 Z0~"}r0-Cs?PĴG*dT]n_j+Q"J @4:RKQTjnH %eN6_X!n%kks(F4Z=|^E iJmH,8ujHK)aZu#*,rbAOߘ#V~J^54;Sș7 J@s  iw=?)UvLLRh/%wsVepaB|qB$ު54V %JWI~zL /&PvY7(9\"C$y ֵD*!id Dp D˩Po~ъ-z[|;F;J_,~z?.CU)ev$,FY6A U;m6_ښ嬌EJ]5еYc(9'$aiǪ3 '$^K\Xfw5>|`!U-\8FѾ{a 4G U]QYvݙA9/3{Ozb:rr}Frfw>d1cW(尭bn282U%t],TC9u6l rooG*+3m(r|r!i&$M ؏M ̴%+M@ߦg<>s)k cy,iZx֘ܫL{c+Ö\W"%6X,"rW靍 TTN=)=2, jM  d9mrp椷,lg1C*RF JaxAê++48nBԠ:d2xV*ԔQJvCcJݪV@A`,0 Q-A'_J@db~憺XKvpV>B3hwgs\8ꆖy5( COŽTRhܝ:q~ޘY#B'eX0oJրeY%h;Mx&#Qwd-:JH4S&qGp{{nzE}͚XiRE6~B/n >W3-ia"vHwSw rz\yy86Jb O:;w ǗMVI'4٩^,h>/]hH2c-eQIe4+JcdaPg;7~HN6N1VY=s;<YR@G\NoCPqrU52d-8I$F&ݑ'h}@b^¶vERGӖ÷`PgcÕl *ƕHK4ͮZh=i6HҒGe y[GXҿ)p9nG$X9'iGbTM|M:S1̥'*1VJX@6<|k$nѻ)r##Ƈ y!Nd8̀w67F-IF!ZD |A( g'ƷZ6G_JVıV(W"ЄzzI%%Ԋtx-EHji9UYO EVJ};$1TE#njWjaa[2(^D_J69[g ZI1_Sֆ؎Ԓ/pVRBfb8iuiޚKbRDs:TPmy5di9H#8˅tUfw=R+ֵڧı2kT(&/{G%rqIPO89xT׵<)1g~b8Y3pܙ̟ofSE^\)e4V¿ V4y7 F8t@>h)MRdv?҅r 3 o~Y)"v5,G`2˒@@Zp q[W&SvBP|&ڕr15SIePM|c|lڑSΧnWPvwa;2WW6p+)qJxx@u:H6fVJ(+F50 },䄋גµP{eI&v.)MzzP J%dXi}sᐔ-B&DHյdH]bR {S=qg~X\C"IܤKCF4 Lɫ~7K^;izMq"VNtZ"D|vcofm1i o]7QWˈa,$f D#۝k m[r;%Z>V5`c8x-ͯ&[gydv䆔0JZoƆ:n"j;:e0E'jo)po`zN~1Em (BO. u-AR}G'bySy={^hP*jR)rc4褕 >0iJxgqrՋcR_Gbҟc\?VZ }W; gY~#p,„4;V•k۱Ǩ\vB5$u&aj{9X5"rdY]*Rzesr>6#FjǏdН&2w.x^,7$7zԱT_l3ڄ >dxS9[|Y؋x#g,CERצYNe8DnJhzӡX C}E)C-&;d/uy1lM*@|^KFGCDfa"j\j~K.1% V[yJ`INOZkdxYh"@(6L죖>\tlŌb#e2t^yA9"W5C3k/e5/O#LJ!e:,b0Fwi @$rJ JH@Wzck  EBc M(A5@WѶ=PUG'؞ /U@yʤ\݈^hՒ6=i-:ӱHͺVKx*#~.roA:#|я(]lJ|ݰ3Re+=2B6KY+N)JCCE6-#BB49$ EL|ENq,I=.ayc9 I#]!uD"VҨV0[!ƛb"7+HB 9P݆CܾR%2@½pLqH+3եvPoGl2v'8׍;ZoS@zt2B#zkIIdxڻ%U t۷y_XOB(zSAT3Rhr 6$"b{PdonH㌥#J6g? PNY'/OD#ძqY:/mSLLFvԑ:=!D rQ^IdHSMjwnr\@00&;4( " (z)톺M9(po@ 4H;`MI'~U8Zwg54R(vR*qNatJډ ?, E7H*`QO @8qނr +&Fh8ޟu6"Crzh:ۣ\%2}FH*ZN(IZru2<T` &-)2|-'UfPuOtbbK1P|@4QEܬ+^_GL;8ö$G+Rb\]MpYp˒Wm i,.IY\&~)kƸ4v"veR̻ :\S{m Piݍ? zEχg(Ar 7D.!VS$uRw9o+O߻GFDzᑔ @YJ$w+w0r0a:as":jM륯$F6TKB2(#|0Ϛy.R̄|p !x)1\P _N,Gԧ3+pbl9j^&,DMUS^1%, {_.umγ=""J)#S#] 8݆}tHq)kIh7̘tgܹy77 B@ۚ7:afDVbE,L-.\ƻ8X)B|2_k-KeFfpC^T\_pvyAy-Gm˒ydsS~Q!R&3u-FTѧG4ܽ(V  (ͽ]\H=Ȉnc]w۶aHb bdRFD0Ŀ+k7:'jE[ZNGBCКW+C.\!)@e$ i^ 7Ͷq #KJTbfN,lCΑPmaV@ XV{Ozza 4pAG'oۦFWm"F&2*7VxqmrWɸc!:$y4F9E߶cH$zr,@g*$W, KDpzn>}<2ݪ[H\cf^J LbI2 mhEf 4n@ REzzm#cuom݂A ule>c$'( GaEN$N~S#"GpTH-B*wᆭ\ Ƭ( H7!MF,Z;ۍi*[`wsfpuH0 }ZS%\-F;Hø2Iw5JMwn( 2Jk^**ip^MVLWc<C8lOG6Kc_E!W՛aIAFC|aUT)'\fs (Qǁj (>F$jfP$іw қdK`*7ĭImN؋DKI=(YWeRUٲW:wAKnU iT7!д31"@E%'q&7ykDGA7ҡh(<7bҎKbf́uX $dܗ#H#qNƌ۠oZK!şWK]I$&c}oRVڒnmpƤ~a#S\9JĞIhdS~$sIn 6P"y4ZRscҩHdy9X;pId7~)l8ȣ'!A<יR#*4vV˻ [XYu Ai㈔7rC19O A{(t1+HYd<]jMBT>+r`j&IS0^"$q͋_6Ca X 6+/J֤~ErЖoLMEJa`3_5&z;қ}9 e˫A_?I2Сj[c,ɓk>pIw듧PӾ0#HQS9&ӶS=de'=@S)*\}>i)/zt*k1Z.AHJ4Y*M,(; "}eoCڙT\0&(C3uɍMkJ |&B;iVR. J);!G0,RHQ1=Sޝ O ko]A$R2VFj=DHAv ]԰*"*Of49t"d6eKRai0uxeDN&bC>2$:cBF7w1H]a:ֽ ?s-DdkLYޕĂF>e |'7FO1:+B*O[GQՎ*ԭ6۱4gP_Q#|Oђd쪾KK@x5Y@6@E}Ջ* fkᇊ0ظN}U`r .EVx{vZ"¤N5 ۊ7{{@q2J=+C ۫WϘWy C $QSȀ9{aھ*ry$.cɑ^ և5ʔ.bVXxGVY9H>]Rߚc^`R`7Nkl+|q4C" yL/?UDPU^@^7VF2 <40ImHu%ƱyOIj)>9 Y׿d^K$@Z-hcǽs³W=F8mR Qխ-TTc6,łCͭ ~$oR9p0ꘋ5Tǧ_Քv]<3"X[HUZ0$~ @bZwlFh*mJW3buN-Hi݇AOLZaл\=cd60!(狓ЏYd dQKq 6R1)@lՓK ޮfhk$Q Zr yW]sup'f=evUbCGc82Lׯ7 ;2^{T{HҤݦi#%~L6c ktMۿT5.b0fByHJv䱐c6c(E[|&dRv]v&Hj'U(;s%ԌPZ}xZ'4/XU<ኴfR*YG$a1 #R,RF]#HSF߿Q˞q?ARkeRCқdy5ee 䲾In8q_.UI44"&Yq\G>qHpw>2|ǎo`"֦V@6 ߁mGݳzn(H?v~c}GiPxE2hG)uAS⊡{k,S]ǚʜk XCN?Y̱bvj$%H$ŮK ? K  Ɔ( J/ 0|DTimes New Roman<8v 0( 0DTahomaew Roman<8v 0( 0X" DArial Narrowan<8v 0( 0X"0DArialNarrowan<8v 0( 0X"@DCourier Newan<8v 0( 0X1c .  @n?" dd@  @@`` XP :6         nn          CG CGCG&'?@ VXCG +/    CGVX&'?@ ! 9AktVXCGCGCGon CC ^     !   wA' " $&'() +, #*./:12    - %/X$R${n'}1?Y 0e0e A@A5%8c8c     ?1d0u0@Ty2 NP'p<'p@A)BCD|E?`@f@8 a ʚ;2Nʚ;g4KdKdv 0ZXppp@ <4!d!d` 0L(9<4dddd` 0L(9<4BdBd` 0L(9VN___PPT90('? %O =3f)1Parallel Execution Facility Configuration and Use210$#Jeff Maresh Maresh Consulting, Inc."$(2#(iWhat is Parallel Execution?The capability of breaking up a SQL statement into many pieces and executing one or more pieces on multiple server processes The result is that statements complete more quickly PX can operate on Select, DML and many DDL statements Most commonly used in Data Warehouse environments, but some utility in others PX SQL statements usually consume more resources than the equivalent statement executed seriallyZjCurrent PX CapabilitiesParallel Query (PQ) Parallel DML (PDML) Parallel Create Table As Select (PCTAS) Parallel DDL (PDDL) Parallel Direct-path Load Parallel statistics gathering (DBMS_STATS) Parallel enable constraint Parallel instance recoverykPresentation TopicsgOverview of PX architecture Database configuration Common PX operations Run-time performance monitoring*Presentation Host and Database EnvironmentConfiguration for popular host systems Sun or HP host, 8-64 CPUs EMC or similar high-performance storage array Oracle Enterprise Server 8.1 through 9.2 Data warehouse environment Single instance environment (not Oracle Parallel Server or Real Application Cluster)<'H'H,Nonparallel ExecutionpNonparallel ExecutionUser process sends SQL statement to Oracle Server Process Server Process does the following: Develops best access path to retrieve the data Accesses database and builds result set Returns result set to User process*]z]z-6Parallel Execution (one PX slave per execution thread)7$rParallel ExecutionUser process sends SQL statement to Oracle Server Process Server Process does the following: Develops best parallel access path to retrieve the data Creates multiple queries from original that access specific table partition and/or table ROWID ranges Recruits PX slaves to execute the rewritten queries Becomes Query Coordinator to manage PX slaves Assigns partitions and ROWID ranges to process for PX slaves.]Z=Z]=s Parallel ExecutionhPX slaves do the following: Accept queries from the Query Coordinator (QC) Processes are assigned partition and ROWID ranges assigned by the QC Communicates results to other PX slave processes for further processing via messages through message queues Query Coordinator does the following: Receives result sets from PX slaves Returns result set to User process\ZZ&ZGZ&G. z NomenclatureIntra-operational parallelism - a set of PX slaves is performing the same operation on the same object but on a different partition or ROWID range Inter-operational parallelism - two or more sets of intra-operational PX slaves are performing operations on different objects thread of execution  The number of sets of intra-operational slaves employed (1 or 2)iiw  PX Slaves~A PX slave is just a specialized version of a garden variety server process A pool of PX slaves is maintained on the instance for public use PX slaves are borrowed from the slave pool for the duration of the PX operation When a PX statement terminates, the slaves become free so that they can be reused Slaves communicate with each other and the QC through message queues in the SGA,Zx Requested Degree of ParallelismvThe number of PX slaves requested, per thread of execution, for a particular parallel operation Specified by Table level directive using ALTER TABLE & PARALLEL (DEGREE n) Query hints Embedded parallel options in DDL statements Order of precedence for DOP is Table level Overridden by query hints or embedded optionsmv:m;8:y Actual Degree of ParallelismlThe DOP that actually occurs at run-time, not the DOP specified by the value of degree Depends upon the number of PX slaves available in the PX slave pool If only intra-operational parallelism is involved in the query, then a maximum of degree slaves will be used If intra and inter-operational parallelism is used, then a maximum of 2 x degree slaves will be usedmZPM9( {A more complex caseSORT Step 4, PX Slave set 2 HASH JOIN Step 3, PX slave set 1 TABLE C Step 3, PX slave set 1 HASH JOIN Step 2, PX slave set 2 TABLE A Step 1, PX slave set 1 TABLE B Step 2, PX slave set 2 &cc&cc&cc&cc&cc&ccC'Implementing PXConfigure the host system Configure the database Configure the PX facility Identify PX candidate operations Configure and tune operations to use PX Monitor run-time performance Tune as required0" Host Configuration>Build and configure the host system to optimize parallel execution CPU  For a fixed amount of performance (eg. SpecINT92) more CPUs are better than fewer ones Disk subsystem  High performance storage arrays perform better than JBOD Physical disks  More smaller disks are better than fewer large ones Disk controllers  More high throughput controllers (fiber channel) are better than few lower throughput controllers (SCSI) Mirroring  RAID 1 (mirroring) offers more precise tuning options than RAID 0+1 (mirroring with striping), or RAID 5 Z lDatabase ConfigurationBuild and configure the database to optimize parallel execution Tablespaces Stripe datafiles over many physical disks Create at least as many datafiles per tablespace as there are CPUs for each tablespace, preferable 2x. Use locally managed tablespaces Tables When creating large tables, 50 to 100 smaller extents will perform better than 5 to 10 larger ones When partitioning, use a granularity that supports the desired PX degree of parallelismTLLt@  1   % Database ConfigurationpRollback Segments Stripe datafiles over many physical disks Create enough segments to support high PX loads Isolate them from other activities Temporary Tablespaces Stripe datafiles over many physical disks Create enough to support high PX loads Isolate them from other activities Archive log destinations Use multiple physical disks Isolate them from other activity~u=~u=  > x  PX Server ParametersBparallel_min_servers Minimum number of slaves in the slave pool Set to a value that supports minimum PX load Default: 0 parallel_max_servers Maximum number of slaves in the slave pool Set to a value that doesn t overburden the host Default: cpu_count x 10 Default value is usually too highTcc.PX Server Parametersparallel_automatic_tuning Presets many PX parameters When the parameter is set to false, PX message queues are created in the shared pool (bad!) When the parameter is set to true, PX message queues are created in the large pool (good!) Default value is false Set the parameter to true to place the PX message queues in the large pool All other PX parameters can be overridden by setting them explicitly.ZyZyPX Server Parametersparallel_execution_message_size Controls the size of the messages passed between PX slaves and the QC Default is 2K with parallel_automatic_tuning=false Default is 4K with parallel_automatic_tuning=true Values up to 8K improve performance if many messages are being passed Higher values use more SGA memory parallel_min_percent Minimum percentage of PX slaves that must be acquired for statement to proceed in parallel Default: 0\ ZZZfZ fPX Server ParametersOparallel_broadcast_enabled (8i) If disabled, each PX slave will access a small row source for a hash or merge join If enabled, QC will access the small row source and broadcast it to the PX slaves If enabled, more PGA memory will be used by each PX slave Default: FALSE Set to a value of TRUE for better hash and merge join performance* 0 0A Good Starting Configurationparallel_automatic_tuning=TRUE parallel_max_servers=cpu_count x 3 parallel_min_servers= parallel_max_servers / 4 shared_pool_size  increase by 20% to accommodate PX SQL statements Adjust parameters gradually as run-time performance is monitoredZ4Implementing Parallel TasksTable Level All DML, Select, and some DDL statements will consider using PX on the table Most aggressive implementation approach May cause unintentional poor performance Implementing Parallel TasksUsing hints Must specify alias in hint if table has alias PX will be considered for the statement Hints provide better control over PX implementation than table level PX directive.ZZ Implementing Parallel TasksUsing PX option clauses on statements PX will be considered for the statement DDL statements that can use PX have a parallel clause*)^) ^"Parallel QueryrPX can be used to perform a full-table or full-partition scan. Each PX slave processes a range of ROWIDs (Block Range workload partitioning) PX can be used to scan multiple partitions. Each PX slave processes one or more partitions (Partition Range workload partitioning) PX can be used to perform index range scans on multiple partitions of partitioned tables. One PX slave operates on each partition Parallel query does not perform well with queries that return many rows relative to the size of the source tables. The Query Coordinator can t handle the volume being returned by multiple PX slaves Tune statements specifically for PX before running them to minimize risk of poor performanceB_k ucQ?#Parallel Execution and AggregationAggregation operations are more efficient than their nonparallel counterparts because sorts occur on smaller sets of rows It takes fewer resources to sort four buckets of rows each having 25,000 rows each, compared with sorting one bucket containing 100,000 rows If a full table scan occurs on a nonpartitioned table, aggregation will occur within each ROWID range processed by the PX slaves Partitioning further adds another layer of granularity to improve the efficiency of aggregation operations<zz(Example Parallel Query{Table is partitioned by accounting month Partition range workload partitioning will be used 12 partitions will be processed|Z|R Parallel DMLInsert Works on partitioned and nonpartitioned tables Must use direct path insert on nonpartitioned tables Update and Delete Partitioned tables  one slave per partition Partitioned tables  multiple slaves per partition (9i) Nonpartitioned tables (9i) Merge (9i) Update if row exists, otherwise insert Follows same rules as insert and update Must enable parallel DML at session level before executing parallel DML statements ALTER SESSION ENABLE PARALLEL DMLZdZZZ ZOZSZ"Zd OS  "> &~Some Parallel DML RestrictionsNo intrasegment PDML with bitmap indexes present No triggers can be present No self-referential integrity allowed No referential integrity allowed for inserts SParallel DML TransactionskUses two-phase commit approach Each PX slave allocates a rollback segment for storing change information All PX slaves must complete successfully for the transaction to be successful Can use large amounts of rollback segment space Can generate an enormous amount of redo information A COMMIT or ROLLBACK must be issued before another SQL statement can be executedBZZZUExample Parallel UpdateThe job_summary table has 72 partitions One PX slave will operate in each partition Each PX slave will process multiple partitions Each PX slave will use its own rollback segmentVParallel Compound StatementsCompound statements perform a DML operation using the results of a Select statement Optimize each of the two statements separately Useful for Creation of temporary tables within load jobs Population of empty summary tables*QQWExample Compound Statement|First tune the Select statement for optimal parallel execution Then tune the Insert statement for optimal parallel execution}Z}Other Performance Features Direct Path Load 2 to 5 times the throughput of conventional path loads Bypasses the SGA and all of the associated latch activity, block buffering, and datafile writes by DB Writer process NOLOGGING Feature When the NOLOGGING feature is used, the amount of redo information written to the logs is greatly reduced 2 to 5 times throughput compared with LOGGING Use when creating objects that can be easily reconstructed if the object must be recovered Use with caution. Objects processed with NOLOGGING cannot be recovered!\Z_Z<Z< keParallel Create Table As SelectCombines functionality of CREATE TABLE and SELECT statement Used to create tables based upon a query Uses for PCTAS feature Creation of intermediate temporary tables used during data loads that will be dropped after the load completes Summary and other tables that can be easily reconstructed from base tables Employs Direct Path load feature Can use NOLOGGING feature if applicable Use the PARALLEL keyword to specify the maximum number of PX slaves to use to create the tableV|__| fParallel Create Table As SelectCreates a monthly summary table from a daily fact table Uses Direct Path inserts and NOLOGGING features Parallelizes both Select and Insert operations Hint in Select statement is optionalZ!Parallel Create Materialized ViewCreates a monthly summary table Uses Direct Path inserts and NOLOGGING features Parallelizes both Select and Insert operations Hint in Select statement is optionalIndex Maintenance OperationsCreate Index Rebuild Index Parallel Enable ConstraintThis operation enables a foreign key constraint Assumes table is initially degree 1 and should be degree 1 after constraint is enabledkPX Performance Monitoring3Are the message buffers in the correct pool? Is the PX message buffer space sized correctly? How much is the PX facility being used? What types of PX operations have been run? Are enough PX slaves available to satisfy the peak load? What users are running PX operations? How many PX slaves are they using?44 Monitoring the Message PoolMake sure the message pool is in the large pool instead of shared pool Make sure there is free memory for PX message buffers Monitor when PX statements are runningZ Monitoring PX Buffer UsageMultiply PARALLEL_EXECUTION_MESSAGE_SIZE by the value for Buffers HWM to get the highest PX buffer memory usage Leave at least 25% buffer memory headroom PX Facility OverviewdShows overall usage of the PX facility Servers Highwater shows highest number of PX slaves ever usedeZe/ ,PX Operations Overview2Shows breakdown of types of PX statements executed33PX Downgrade DetailsDetermine if enough PX slaves are available for all PX requests Downgrades occur when enough slaves are unavailable to satisfy requested DOPZPX Process DetailsiShows details of each PX slave Useful for getting SID and SERIAL# Useful for checking server availabilityjZjPX Session DetailsShows breakdown of how many slaves are being used by each QC Useful for determining who may be using too many PX slaves Useful for determining if statement actually acquired the requested number of PX slavesZ+SummaryIPX enables SQL statements to be processed more rapidly than when performed without it PX statement usually consume more system resources than conventional statements Before implementing PX, make sure the host and database are set up to effectively support it Make sure the PX facility is properly configured at the database levelJ JSummaryParallel Query can operate on both partitioned and nonpartitioned tables Parallel DML can operate only on nonpartitioned tables in Oracle 8i Parallel DML can operation on partitioned and nonpartitioned tables in Oracle 9i For highest performance, take advantage of Direct Path Loads and the NOLOGGING feature when appropriate Many database maintenance operations can be parallelized, even outside of a data warehouse environment& ZZ>3(B~SummaryUse the dynamic performance views to monitor parallel statement execution progress, and to diagnose performance problems v$sgastat  Message buffer configuration v$px_process_sysstat  Message buffer and PX server usage v$sysstat  Types of parallel operations performed and downgrade information v$px_process  PX process details v$px_session  PX slave usage by QCo ot{! 'E   Questions and AnswersP P  ` ` ̙33` 333MMM` ff3333f` f` f` 3>?" dd@,|?" dd@   " @ ` t?" dd@ %  @@``PR    @ ` ` p>>0 T 0(  T  T <q ?"P  T Click to edit Master title style! !* T 6t ?"  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S T 6ly ?"``  `* T 6~ ?"`   b* T 6 ?"`   b* T AF޽h ?F:\PDART\SAMPLES\SCENES\DESERT.JPG ̙33 Desert Serenity  @X (  X  X <d ?"p  T Click to edit Master title style! ! X 6  ?" `    W#Click to edit Master subtitle style$ $ X 6  ?"``  `* X 6 ?"`   b* X 6 ?"`   b* X AF޽h ?F:\PDART\SAMPLES\SCENES\DESERT.JPG ̙33P  PL (  L  L 0  P    \*  L 0,&     ^*  L 6`* `P   \*  L 6/ `   ^* H L 0޽h ? ̙33 s 0\ 0(  \ x \ c $yDT   D x \ c $zDT   D H \ 0޽h ? ̙33  `$(  r  S :T    r  S X;T `P`  H  0޽h ? TTrff  p*(  x  c $AT    r  S xBT   H  0޽h ? TTrff  *(  x  c $$HT    r  S HT   H  0