hexbin/0000755000176200001440000000000013776024163011540 5ustar liggesusershexbin/NAMESPACE0000644000176200001440000000432413171627112012752 0ustar liggesusersuseDynLib(hexbin) import(methods) import(grid) ## too many things from grid import(lattice) ## too many things from lattice importFrom(graphics, plot, polygon) importFrom(grDevices, col2rgb, gray, grey, hsv, rgb, rgb2hsv, xy.coords) importFrom(stats, coef, density, IQR, loess, loess.control, median, predict, update) importFrom(utils, modifyList, str) ## Generics and functions defined in this package export( "erode", "erode.hexbin", "getHMedian", ## document those; the method aliases are there: ## "getFig", "getMargins", "getPlt", "getXscale", "getYscale", "gplot.hexbin", "grid.hexagons", "grid.hexlegend", "hboxplot", "hcell2xy", "hexbin", "hexcoords", "hexList", "hexpolygon", "hexViewport", "hexVP.abline", "plotMAhex", "hexVP.loess", "hexMA.loess", "hsmooth", "list2hexList", "pushHexport", "smooth.hexbin", "hdiffplot", # but not all the helpers in ./R/hdiffplot.R ## Stuff in hexutils "hcell2xyInt", "hgridcent", "hexGraphPaper", "hexTapply", "optShape", "inout.hex", ## color stuff "BTC", "BTY", "LinGray", "LinOCS", "heat.ob", "magent","plinrain", ## Lattice stuff: ## high-level functions "hexbinplot", "hexplom", ## panel functions "panel.hexbinplot", "panel.hexplom", "panel.hexboxplot", "panel.hexgrid","panel.hexloess", ## utilities "hexlegendGrob") ## S3 methods for lattice-type functions S3method("hexbinplot", "formula") S3method("hexplom", "formula") S3method("hexplom", "matrix") S3method("hexplom", "data.frame") exportClasses("hexbin", "erodebin", "smoothbin", "hexVP", # could/should we keep this 'private' (?) : "integer or NULL", "hexbinList" ) exportMethods( "erode", ## undocumented: "getFig", "getMargins", "getPlt", "getXscale", "getYscale", "hsmooth", "plot", "summary", "show", "coerce" ) hexbin/ChangeLog0000644000176200001440000000424113171627112013303 0ustar liggesusers2009-08-09 Nicholas Lewin-Koh * R/grid.hexagons.R removed break statements, switch fails. Cow lattice and centroid can ramp colors. Bug submitted by Ricardo DeLemos" * man/hexVP-class.Rd Shape slot was not documented 2009-02-26 Nicholas Lewin-Koh * R/grid.hexagons.R fixed bad if construct * R/hexbin.s4.R changed xlab and ylab signatures in class hexbin from character to vector, patch submitted by Don Armstrong 2008-04-28 Martin Maechler * DESCRIPTION (Version): 1.13.4 * man/*.Rd: fixes to several man pages; note that gplot.hexbin() now is *deprecated* ! 2008-03-18 Patrick Aboyoun * man/panel.hexboxplot, man/panel.hexgrid, man/panel.hexloess: Added more information to man files. * R/hexbinplot.R (panel.hexboxplot): removed unused singles argument. 2008-03-12 Patrick Aboyoun * R/hexViewport.R (hexVP.abline): Fixed the handling of non-model objects as input. 2008-02-28 Patrick Aboyoun * R/hexPlotMA.R (plotMAhex): Require users to specify status explicitly rather than as the component MA$genes$Status * R/hexPlotMA.R (plotMAhex): Replaced support of Biobase class exprSet with ExpressionSet 2006-09-28 Martin Maechler * NAMESPACE: add full list of colorspace dependencies 2005-07-26 Martin Maechler * R/hexViewport.R (smartBnds): some rationalization * R/hexViewport.R (rname): dito 2005-07-19 Martin Maechler * DESCRIPTION (Version): 1.3.1 (not to confuse with the previous one). * man/gplot.hexbin.Rd: fix typo and usage for S4method * R/hexPlotMA.R (hexMA.loess): add argument 'n' * R/hexViewport.R (hexVP.loess): add argument 'n'; other "white space cosmetic" in file 2005-10-21 Nicholas Lewin-Koh * added Deepayan Sarkar's hexbinplot.R function for lattice hexbin plots * Added my Hexplom function based on Deepayan's code 2005-10-27 Nicholas Lewin-Koh * Added more panel functions, for hexboxplots and hdiffplots. hexbin/data/0000755000176200001440000000000013171627112012441 5ustar liggesusershexbin/data/NHANES.rda0000644000176200001440000047543613171627112014130 0ustar liggesusers;,IvW\pfZ2.,_o9R34v8zeѢ!ʢEk=Z}ZE!:+5Gʪʬ/ͬȈsNW8O^jVY/~[~ǿ'/|ۻV5&{w^1mylǾ?5>0 90w S=K;7ߜ:\qÿ->JwܝWԴ;\O33f:c˦KL)r29gѕbN8e,Ωcvʸ_>?uc=ٲs9i=o\\0M:1pkǧTspn4:wLnT>CKS;_v3Fs˔qZc|??5k>5o9ssxgX~ ޘb=S{l_Su,eǦTs_>7ƌԺ~ngڽKٜ!?_\𛎁c#yDZ]O9OץlSΩ8=GL9_L1˵`:)ejq ?Rҥt۹}vTv%5\g9WN%NǧysCuͫ9tO~)>u钼8MsڹN?5|s޵K1UxM|WjȻ׆町S_%|ה9׎E:\9ׄrv-nMy| Z/W7r?t)Z5=TZ,MO_z.\S}}ϗ E\=Rckt7s+tY.vZڒ)1)}\kg]-?q(3X.1;wǴI}5rڼ>/~[~?_ӟ|?yO~?eZ}.ǟ;KإKF@cۿL4c`>vc2UsҬ7.S7^nnk ٜץKk\sf<^ؽ%cO{N{5e oj?ZssRl%wYמ3NK*_~/Vqω3O 4ٟ 1h57-uzq._j6N]YRi zc<5.m7_.5_X>i|r< oߵST٘zεOiO~_K 63mt]]'Flڼ:s>RbNKx.K/zMޘߏ4[yv.wu|{.lz 4=5M%. ͧb %9w[wxmI\o]TEwcqX_tʺؒֈ>7aiSRa]F%|N%%646M;""K›] wskNåz)p\ uX-M[X/7k"wi{h_㔟n^< N0oo?\.? {-wa^LÔ =p<yl3z<Csj;hzO a7#Ṧ^ތ[1 'G?g̷ A/R?+#/C8y| \ЃqPso:x'I }hVצּ>|{CΩWKRB'}Xi>K=Tt_<;o}D%I)Cj~?A'tϸ]?_Z_.pp )>aI}~n^+ibJ~i'Ѕvq[d3~ivr>O#aI= D>s> }koAߒG/RvxWϯ@ڮ7qi|W~fY?Wr[葢!v~_'Ёz?;_3=`ONCnз -BOsZR߯diƑO BO8~ƍۛ!<ԣ}z){;rƒ\J{?R}Cyܴo=Vv)ϡ#픾<>c?shGwW,sz{[zߚR"MJ| 7i>}_?YJi;^}i8=;p=R}AWO#7#q6#+z^x tuJ8ῲ >oE׼@k? _>+/WgZ|WQooͰ_oۮ0k q)e_pBGo{@;zyzx<>>v>B?:e;oJ~v >/cWwܥoSCſ!7!q(߉gCWrm9L G#o;s_t Kya;[wk$c+J}ƻ]+,L =ϲ(x;|J'jG?7zW3^姬]~^n^Hsyc:JvjCm/~ 񶟆^\W~T,=Y w|zW|US +s3v/?7Cxv.}+I¿Ǵ~{kW/u?6Cji.^o= ݡkz5,ߡ缞b儏S_r߁罚gop u|qOxz92[<|3:pz5޶sZ Fn"G>j➛a{A?N_s|vk|C?Z KA=߂.t_βvQ;ha|nXn_Y?Ag2ncǽ+ƭo_x#x˟S.p>s3.%gz;У!{ UgO3^_B/T<0ϡ9jA;_:κy>; _"G?x=|nvz6ZIuISuհ=>(8!:1C\ b<_ʽ՜'g;yB|G){eo7C|=_B|?_/;~W*~-/=.ubZ,k}{yzozدuZET}5Ͱwxr+~|;~>=˟Ke|~>=s~^hx>OA?*o/zN޳?[~7qyHё_~~Vz_:|?C_DZl//㋌izS}[~z 瑠=[k8og|;^}TgއO=t(yܴa=={RY=u/=#tq;s_ya{enyoq;|xsq7})^Q5[ rLS)};/^C><_^u^4핿y|oy?yug'>;;&9N.x :{Pyz_{UmG+?<ϡwë^8N8K[W~u_+>t)N//{QRq6{vx?e)?޵.>Lo _?ٯqܳy<po}ީ}e{u}RIcǮ؎;;?л;paֺ/=v x/WElK;ؔο>ӏy==VUyO{;o[{}_meo{WD~1?q:$}㐵&֫aYys8r`;fOxHϔ&|G<˳3x;x?gC/Ǔ|QЏާLF oebs_/}7Cx{َӏ뼚W|2z5cyKJC+R@g "<'uJljY߇N>BG'؟qʗ_ ۩LN5T>R9O'x_>GN,?CȟکuW~~G;ctۏډ :ܕ=;Տ!}ng=~{|v5|u Ys_};5<;z>/rh냊Оڭ8~J)-WnWT=o-{{cZ?z~~9.S~;~K=Doq]Sz=Ny>۔߳<~uJW~zw/3wΗKsUv |^yZpg'.≼:Z=>{j?z!o ;xVq=_cǿI;yoYgywKd.ǃ-_;=~MɇUxc#އ[tH=ox w˱ƒ^Q;>Cu>3+uw5z>' a>7qη9~}tI?s)m?ˮqo 5J|cxr_nGlǩ_Rzu'oCy)xtܗR:ݴy~$a8|NfXJ}W>>QAY{a{_~ZW{x:>޻g{w~9}z5!)=^uC8}'sR'o_#gΧ/S]Y^ODZ2<ya׫a|P;7@/;swVw9%wo8^؍{w9iXPϥ:}TrFpgG*=oY~ ::|Y;^W὿sYSz@^GC?*Axk3,gίG%e;GR߿v=a7?ϲ穿νi<; )ws~cf·*s*>y^5z~[l)UqgBobާR9C8%ճ23y?bo{KjPTl[{[>nMJ7jGa8ydv+Mj'B} w|:5v~9.RX.xgsۃ:g"|eBM9ay8ԾДh'v-{ށ;ϻw|ʧZ\|3 x|N yyIO?޴',9RZ?~?8kM~yzX7r+ۮߝ76{/of8 ?aԏٕO8QQ+_a3||N|c{FRzfUa}_tx9zwO_uLw/>ϜxVp :'Ԯ{SR9'Σj}y<v\}ˤ]O}·7Mewg:{}Cw=ǟ-we7nǯNs;*͇>w귾״(Y/9$_=){,xs^ϯ8qyD;M>G#xc^q6q~]? ϫ|ބ3*WYwPi9!{5S=G9i<۴νz:x^쎋؎OK\<^C_Hw]W|Jſryn{}Z=#7?{c;Hi!p}~O^Y3su~>?;=y>ک8ڷe?n|J|y/GVW/_'/y}*O^o^͓y~;"zHz!y\x`?FrO;GW;7γ<㥟V~%T]sk}~sϳ;q#k9?2zsor8sΰswO|zۿi8=L8gq7v 6vWyO>73>:Y!|.m}[y!)}*Lﳶ_WfXcqӬzD~َ'r'ψow{]XOz]~syLIZ;ߵS!;lp8fo}|~Ѝ~w\fck<8\g_}shߣ|y;6C8jt>~'o<>w,>7ϽsO;y SwgSzq:3la'.t;,V~m}zv#7;w˝sW~|.Ù<;ɛa{YnUwΟS?|o>__8鼖&NE;~I{;q4捶W7Z?:/J?Λ9_O+T[x[X}ǿ }{wgsha={'0?Y^~7y?LJgν>!qUAp|q^ױs̿o~GoO$կ)}~Ak[8u.=_?S~zWcI١/ί>]=DZ>)mwʏ wVv=Vl*C8 e~w}:}nOy/{>Y߼V˽~w^ovs7g>:|IǻNNYYPOp9A{l߼/rRoc烈fn}/%:Za}k{o}8kMp?c/+?&e}o\{ݲS2u'zx|losj&g<wCٛ{~U?ɝTxn~{fX__m)q\S>ӝ~*NT>E9}./-γxnJC)}skhy߫!~umnؿq\N'\իu=^}30Oˑ;_tt^wcvSsqZLuބz_8<}vi?Χ'Gp?t>wQtz瑽u7ϫ!!|s獭Os7j;.ysͧi?CJ;e}gO9%xx}yz=Jy^d\塚%~_ 4j}"xVf3シ6W>^OJ[:.sy{٥u˗YG}ycNqHr~C^OÏ:Np.>A;|@{c6-}W^;g}Z}M_?sm5;[^:e u\v^窭= KGˎRCxw{uޚxz?PҎl=}>bsNN}a5ʯ^u>j؟!}|z:Nqa81eS9_)oRz>DWq{_76~Gf3,=/L=*5%tb=o:'__Qw{,%!!/^v~uw>8.|j{ϗ>V}~g9F^_c4;\^m ynO9v-7oKޗ}ާE?^fޚ2+UX?s|X{5?^/W}Y,]ǡ~ mwx?t=q^\'/߬۾z^yϥNs{{>P=x^gڻλ'X +Rz3 WGc}·NMxy=4!Ou娷iȽׁ/{^/*.K)yѝPRo-|fYs:^8 ;kӜ'c;>e<uJO^Ϗ^/qϢr;z묌}xwò)}7{->{;߸+wo~}i:6>vGێ| ;齟F|/8׫!?1 =owyoBWO.x㾎Ϧc; <}#Xq>B;>#8zq#o7?=>rGM[q=N}΢|e\gX 9,w_P=l'^'|Jw:~pFx\;9a5N<ǭ5]]Am{}\޹s^{w^[n*)yS~ρw4'{Px_={un<6G>_|y89n};,yot 9^u Ǖovwϛ׫)-=^ӹΙ˽Ľ=xfXqTʚoЏ Kso{SOvb߉+wGOLW߭v^Nš6~O;azn侗wu^GA^c Ϸ_0]+*>=}eg6Cւz}j=p7;y‡z\M:广yWσ?ޯzeHyMWG8E;_:kν#{#׽z=N˹i'3+?vz5xvrYy^ozp7ӎTP9Dzxwx~u:|x?:޵ū}a:ku'>7ˎzǝ}.y;ގ?8O~띛a==yTmzB'{}=އo=X ,Yyg9}x[7Rz~g98?>o{@9*jA.\u3ݼ?\x|\y u'}I :oy^߀_!x]֫a}vޔy?m^_yc>/DZ踈*k8U;siN6vϲa*T{=<|ZM ?|]S)|i3l|)[ʾwo|ߎKHzNj)yZ}{߻){?ܿwӳwWw>UU~oӸ:[}Ր4xSc德2[cNvkݷkmp[1^^}kLl]nleYiU---nv۸dcӒw?֖ _ {-3-YnѧoO_zO}Bm޴ٕ[cͣ0İ6]ɦulYnZ&mϬS=[d۳4Ѹ/jCpm_clײ%cgz{5.{yk̷i4F7덛ig|ZJ_ӽgK>[vų9-5-7,=ޱ.[Ӈ^ؘ--jٌNn飞q[[߸o렞LuO/ֽa~_m?mtpO[}oLw{G[}zm3/e.٧Z:}l;`j6)ճA-lg=`K-ù֘l?Sļ> -ѾsMseϰy4il3Ӟ]lm>?.lm{6i]lmҶhɼmlۖݖygզMWKwXNyz:%c2m;aybKFikzikǽ--;m:[wwWu5eK?ۮ5vo n@OZ>0[z-}7c_';=F-goz2ز-ccqheך?=}߻m'Zc`=o뉖\غn?ij#zrc+-xl8{Mnw-ۓ]m^1,==-0iۣmKߖlZӭzy~fZl۷e[ng^ }lgfk:e[`nc7-Zg+cL1 =,旞n%_:' -?;]9XgmZ;=5MO=Zxpiѯ5F3?-YOk?nܼgs[:m-K-}-=e<{cޚ#tFqms[t^H-=j_׾a}K}}=x<۸za۰oM}cF}ԣmGZ{2my㡖x쓹no0}mXzzƾ5=\-XZsOy=-lkmlZ<߲9cdb~EOӺ7-;O&[|nm[|ҁ-ݢ>u ϾO^J˾d-~1o{g=b҃}ۣA z짌ˡv{8m߳-$7ζ-݊l{~6-!^=ezzl[|>﫽wV4:$k-XѢGo,[kwz[cGY% -`}g[sVlmY84v>jSK7'=}V?7l㸏Zx7?1soNYo^iڶ|,˥!m}ٲՒQB~oQmUl_kLZ|ۼHW=۴7̭nUOݖ,6=\iВcO[`o=W-0>-zde؂g_O!zehqkp,Ƿ=hqw9û* !?t9ұnuKVT=[ Cϡg}̞mi?h]5›t`[m6=١G}}ٶТc?Zx֕5[|o<{1}k{1m1n>~?V^_xT}4oQtо~#s|v.߶s}sm}-oN8o/jO/ЊgOo0n:z1vs{ov-;O>Z39$۽hOnZ2qomy%87fc^ۖ3ik[nSGoLoǿ%[1}m_ݞ~81s3_!8ϴtXָ}tݧZrԪߋvt!yۧ7i}}i5f~O&[ynM}[cGk^ ool[nml/FeϭZ@K=nu6ánVkwz%-xZcO`'aXwƭ!7k7&c>z1^={Ohw'qx}L-湞[{~dK. ÷O7t>;gikzƻb_g<6-v^0x}d~?⅞n!_nN+nq}٘}vq~g>Ѩ'[&wڶӭq~oגV_z56UO[7w ^[wce-Ӳ7mz7nhnzHŨz|s}moHb>l6-C>_Ϗ4룥[П'z3泖niѻwtvݖ\y/.ٓ-L?۳m->LxhvH쓿ksl_1s1}j瘶<[g}CbXXnjݧͥt==}Z=lR!g-ncޓuچ5Ug_|:gO{m}cjӂCcks{X\ǯoN=b=c^Ѡ%dGyԡy~O[Ӄz=jq.eh_[[lӦNϮG⼽y؃o?%6wHbk{}l?ĪNiw݇Y;ncV-J}z>lu7ءC_P^ǶDZ폽ΥשkoKӹ|4u.sSM5S{)8k=5_[P;s+S]sۥ\=3u;^O3K՛:՞jo.}|w\=15~S]Ssc?u0?ySkX;rNm\Xy>=v*{Kũc+gsqJ΅R=?|ۮ굮SSS?\vhj_w:Un旹MS_S}]z\zt9Sw*;0|ӱkכ&KKgmpsS?wku~ͩtNw^}ޙއX=27<Ƕ{>}۹X{߱Ucʟz^6jT}m:]_{z~=wj;K kq׵u}M5:qjs?cۙK̥\ױcߟԼq.X~K?/5O}T<ɹS`j{k}έO]cc:߱7{ Tu.]ڎO=OO~Z7~^slKr|p*~Ω~pKѡkn{5|?W?KS.MuډST~gn>:/4>S٣sS35uNXy*|߱+OǎåKwݺ5xyƵ\ztNkn=4|*tk¥m.еt,cƹ:;/^ۿ\t6'8xLscssm]S۽s1ӱwl;qkM\zj{)}.y|Scӱ6U|sjy[z|uvOߥ)~]}:wux+?K]?] ũץq:c\xM}./usxo.w*=8εs+sO澦յ:v.NOYuun^׊;.u~6W\v)k]cNq/5k'约#/}M'\O=KKs}nrKTO'8w:]<ظȩ_꽩?kqkip]MTr8ݽTP{νo.Y|w\^O΃ ǩRu\cǩԵ8ϥc`8T׹qͱǥ~˹zhqi2W<ɩK۱]M.}]kan;8ךL.u+oF8˹qڱvG?v.});uxıES\3^ڹsߩc*{8W\?gj~4.8M58VߞOOġ.Sɱ_Z*\K֡>Zޥ|jylSǻN#. ס;Tqcj4{ϱRsZtYri{wi9~ӮKTϭ/*w?zZc9֏;\~q>6^rm*<.߯ew'ݵZzv.e>~)~8ןKk:S5ݕqZL޹T~α퇞ϝKKOt{{*?_[~~~ձ{~zj/vsϩcṔ^=u77^?s=7u.4ݺ58?{lֿ]>v~yl;c;޹ץϩ/EMݕRp.}4US7S] Nmn{qv~\޵={]ov-eZqk['>??:~95|Tqc۟گvqo;ߩskmk]򋦾t/V\<ko*/}ypmx ]X{ױ?CzJS=:֛sߛ ޻^rC\xZR=kw~_o*=M\Vumy s ߹OE5 ߡߧ~wi{<{Rze~Zp]k{l|p)c{c¡~ǎX8c۟Jn. ϡwn;c^7s;USvmPkn|R:7>kjǶ{Cxqj\s:N>~K̭ƶۻ.-S{躴9]߱pw)]צr{_ޗ}9wum84z:kc:׻?ޱM=~Ƕsl{c9TPc9c۽/UΩg:\~kw_.6wcۙK;{;7}Nk*|jgit?ߩc-\kipzޗ}9%snS3~䚺}4y/%ֻ/r%׵6~;co}*.ϩ] Ωx,ܮcx]ksWR|XNTxwX~~nKKmu=_o+2>oKuW]KccR|r.|77?|\|݃gl{}mr:U/˷wK_CO-colavշ>/ Vr][ͥt]׆lum87um8T \SݻNs,c;c;K?wcwss5^,Rƾt=07\\O%KTp,Kmvcu*]|l{9S]͡z?sǩwc%?c9N??4R!xk.?7=/TޡUԸ׿{MEc*cOSnk{ylSc`.q*?+scᝪK}._Sw)-pTki7Ͻw.o*8k*y6_NGk,Lߗ}\oK}y_ޗS\Wl^=3s*: g;S}m9Kש\O}o*=q*][oޗPSc;^wjq,߫?\t>sZr55,/k }f\?Z*n~on: Ϲxcۛޱ΅wjץj.~4u[v55_;nSs8>+sS?Oc,\Jw \pR=wǖ?۩\}xL5Ǝ/?~.\=Vz>:/VuWw-t}y[/ry%׵Xzu{_Kkñ4xPMkk{5S:?]ݩ|=8ӡzsj}vn?KxKk̅R軴vw/rY%\]\uz/C]7}y^ɵPFk}_ޗ}y_ޗwusSS=Uڝ/7ul{Pc8Cc/߮pܗwumxk)ܕw*߃$x>0Gtɟn88|<ΌU'x|^q!_ C|~Ѓq|Sq^0x|'_,%pA<OJϸ/Wѿ|$|$4p>K{Y}~x3^/ϳ:N 료giE1/Bc7_Їz5 ?>@/4^iiI{"iQ{iCOO7|yiڃ rC}Rz9|8>8#l{qȧßOi=>  |*|:`G~oQ0bG/^~?xzy;ǧ.> ߃ϓ }zPnћߠ/Гyϡ_9E^F7أge=\4!/ п˳2|w AQ2pC_aЗq_G˞CÌKєO"G_<"ɓ^wqz!ݡC5?sѫ ?|0Y G/> /C}>bsƋc7r:|H{y<"/ѡ7vq|v^O{a襗pb0^aYJ-㌼_z?x0OcމG|O#`oKƁW/ة)S}o3_>=t{/+#qދg񯆎){#Cײiz9{BO<||= e<@׌;ٓz_`W<^K.3NЏ\@y}~-53Ra x }wѻп3 ?};r'COC }<ʯEc|<}J'8q rN?s0h﯆|:o߳/R%rxaB~|{0"|? e'Cq@|: Ǐ)c_~ߞze]>{>F=Ů7F_e3 *cGs_9~ͳ7vC`~GџOCwEx?&Tq3]B<FA|i~B_~/5@N8+= O/ _Ў<{gCOR/_> At̳k3?/b+>sS) 1x5_~s3]v*]O?g]^f> G7~!t4xc'+. y^!*>= Oě~U_.a't/8[@Џy9ϱL?9[5x420 Wq<!Ndg]z#e|X/0pH=xOi ^2ie<2qƋZoH=[ ,|\GG~G䭰Uz/ԺWu`Y+~ IyE^>*>znbL| ;Uq4"qw/dh߈>Ժz8>8Y7xN\Ԍ'zZG Wاj~7ï&RٴcW |?_<|> _A'e'tf~||OO*^ ̫+?;#Q∥'UUb?@O'r0x> ۭxri80D_'_R/t@ϣoOBg8'Rocj9 T<4:P7By87v|Y_a}ա< ?G*2pNX/~7&t*~ ?b7i;2>}^ij]=p}?qb\*+9f]y"yx?C;@ vxF7 M;Yb7_رơiyQ~#^yyE~|7J~ȯ"?*=sA5Q{yno zq3 \5/HI?-=W1'yu}^~i%zA?_yZ q!K/XOd>_I|Z`WG'CU<$bj˴G ~9 }ȳ~$dg_O'{ =g>C8F'xgߕ|Ydyi?:xG1XDj卥?| }Goa_+!^y oE}#n]G_W^GUq/xBN7 Wxi?푟2UOCOχz }wd\YxP.J_f\`ߙa> _LkS`;^j?f~EY#;q+/|qAA/xbOik_;I??2?D/z>y3ɫb=y!"d}ס5 =~_A?Fbo*>v.#ׁrVӁk#k_$/1xoQsk.WmO$>|<Zii.v{><~^gYq(}*Nݥ}hā/='шy/Y/Nnz/~|~ ~`+; >~/;~ yaǡSͧЇ?0ԫ_2(\e/䟱'=  3zr'>ғ8W[SyOc^?Ty?y|1&/Bo'#_ֿg\Gbk5pb'0.#o_G'x}3yw;k^׈[O*2Ǯ8)xG`e?o/i/x^' վ>\|j/𰎀Ћ<{W|㏡Oޯ Bob3??k'Eg#gYݼ|8~G' e]Wv|v~[rEO=|k_7j~uґqkuc]yHwr_סI\T\"te;Z_A/wgQy*q͸'z} ~^O>*t7(/?_o_O{f|E~C7-$S-0PoA*_!᧐xz(/7w`? yv,GG)!Wr=_7ӹ| yF3*!>nz+2{Ƹy$ȫ9u ڏ0?u᠟[p\'/Cwz5]?3~+!~u |zɧy? /U~Pi8KB}7'y^#^1>KoƳ~/ ̿9g8wP8G8g\f]y?ҟ7hA'-{r﫭}u0OEV>6b8ׇy܇_z d_O'J/z*i7:w% eg"e2n< Ժ&rϡ7vTDgSC;|ހGxt ~uy J;}|ЗxaSŧfu!~xڅOC^ E~!~;y*yGܥ7g٩Wqތ NnoެӳYdEykŃ'"ɾ1v \+3G}y j_r4WA7~U|nTe\XOkf/'PDy)S`>F9y=C f]C=Xp7V~VV+&ZgC/ׁOgޣ?WkT+GnXǴ_ߨs::[qz=G ?jw.+ʸ־W{o@:WU1~sg|u~e^M~W9=o wF/qʫEoǡ70%5?H:}>|1JRwt=,łQ5T SyIv}g_Qd|xrR>;jGwa'J.CműC?? |>v?8OGG!>?v<3Zfv_:~Cd廦>I7/ *?ya~ʳN=m{j*g=y<?y({z_ㄟ+_? pOȼT܊*:W&W6K.|;Ae|98FWOק=GTW>>8kwEO/O>!]+#WWO ~3p~d~Qys4Vʯ }cãW ?m{5_z>2r}*1O9P/q7C<GAڣ(`?j597 \_Ny 3Gs>t!^Y^s|Cf*9?|/urq)'p[NK_=N\52/#c) v@:G`u^}RWn|^X%OyNγ='x+!^uƷkd*~6v-t%]矇ڴ璖ȯJ/0O3uoF؉uzēK3X!΂~u7K+3CܓXS ߩg}"sn|X^Z Iп/)kve *"87te3N\eɏs>\?~C: #Gu>F-}C ;U'C9#^Sؑگz]:~ |Zy! ԺNUxe뜹[^ӡxeWz@k؇xCrq|,p;Gaa?7):%%?A~t%NƵ`X. 腼}c1k,} <_= ʟCcScI :&xcϟ1)ˏp?"oac[%b>7G9G$yuNr=L7=ϸ?=jlc_m/fzW峄/p2zy)U^A/ T<y#k}5xԺ[A<:<Q]gGwg8wC:oS :_~~ugƭAM; G僧=ռ"ezLv 5ߋWZ2K@zuN^9tw1^nPګ}5ċ=%<+wC;ިЮaGּW[I}/"@~d_a_"ǧ1=+ kn0󉒋<'>VV9|>e}\W2_:VCM+|ǵ9^=uNeکMZ< ykSRyAwkW(K˰ |:8_.9^WqAr]Х]ơaG9yǸ/u.!x>q\N·r؏S2_#}y^?釼=ġj>G_r~3u_".ۚ>/~D0>.7 aw'pF<>彊D:?z{ _r^Tun_q>AϺ'G ~?]y?_Uf컬sӠCa,vЏ߉GI_og#_8'q7M~0S~ )=8 tccK?E?3O𓊾?{|[*4>>?=tCi/'j?S'}> S~ԏyv*>0 =3*/"|^,tETzv^|w׹./H}u\е2~#|v> U^G䎸#ECFN{}$bk_rƕ G*^<δG>q?~9niÔw r }k~by^yO1ƾT>0WGqbZOK뜕)p?^n;yCگy@/;ܥ=~ !Zs+q芿Aԯ򅏸/x.JM'|y΍/pfO`rV߳P~?/zs :C?#I` G7yj?|Az7_37s+";xAoƟxX~CGF~r '}]~f<ڿ?:<0C7 _3^?ůF 7Kz!ǡ;yD7p F>xVx^{U]O*o235O.E_o73>~}-g}Q7K9(8=y>3.>7Bcg}W׆8_ngAGCo+N8笻SscW_د-E;K}|q2_|.|qq|} ԏ\/7#ӵΔq7v{wuއ}ڸҮ-*FHD8|H<3CҲ˨e[ MwZeYiVh*@Z (xQ@EA߉~\:׹udgzY{ɟ_؇J7Ӿ}i: [>SS, =vÏ37_FT p칆]?2~yJ) l~=tq<2|Nވ 8;Z;=Nif\(::>G~?Z}!ߑw*~/zro[Ao|SO[v)u|C3 Ϳ6淩 Ih@ɋ}z=:7~rK=Ed\7=pk^x՞/| 427#̣$Oiߐ1w%}B)g?|=i)*xwګ/߻WÕ|| ݛo&pCx KsC[vSҧ$~Ye'G#_?+sds럮Rw6ޮ7g}x!h^aOK#a5 4g~ yktNbO _DJ޾Wݧ__+L^I|{_7|W)8V?aOW/j/!c./J39?ہs |]3yO?s/5i#9:hnӼlWC$YB:9JOWdNیŕoxO? j>cҏu|<o7_d|('oongzyCX6zoZY5^+7s#лxN~8~tt\ursO9PGW_o׮&_Bgi~'+I{7̣87~oǩW?5:{7_ou2pi~k|$ߍRjߒ?o󵄮~ |\o~̋__|v ~Iޗ|%72|<;`'p[ {>1r3諒7Cǥ=A9y/r4 ~y<.2/ uT޳W&C|o}E;GC7'_duϝ~"۸? ?V?7h.{?'%|q?8xxYa_2^:Lx='Ǭ?z%tcnqv>uy(Y#ߍߡcv<:~$c<|N H=oO?:΋`eͻy˳Ҽp{>$ugG:q;7YvI# =Wx3~gƙ;}DO;b93ϞwIHW{,6s|7x=ρ.ݣ7[k].ΩtvUyȇ#.=F+p4yotuc>ֱ= <0>r:gO_4eAo i |_ikW_}c|ȯ#MwyysE7A2Ư;Y[g{yd_msgy<\,?+6Pc/4wѡ)cx|I{Nb3>v87"O.iD4=~苔'Np~;ϸnN?R|m}sLnΑ6.(ݥWbw~&o]"~Os'ā޸_}8_nR?^c\E.=7z?MKy#͗yG}xC|4>-Ů W]"gn$~'g?9L7: ;pN,?d^b3=zN4ܼZg׸/1xy^}nxez_}_]#y}̇fGXwt:xTdW~W sv'xk#tlOu_}|{wi&xj<3ݴ8ڑ#A!\Co/&=OK/ܛyq Wyuȏ3r _e{W >!_ݷ4ΌNg!ǞqId<[r\{]U.(WJNxȗwV?Z|~Czwͻo/>U]%O4o`O;l{|K}ȉƃe_\C-7~A <{n"Ż g:a ~;iqKwK?|3pA_BgޛS_d݇(>=e\mmO&pw|7^yg]eݪ^聼 ڟ}oF.jDۃ<-3?rd]|]xghIWg\_|_H'ydtL>#^788]:k -ռ_;iMϋ~/UcC}N[5t Ӥ}+.i%6ϟKIyWw%z=>E6<+w|Ȯ;^${믏^9}_{$GU~tCM,=];5#a$2#x ?H;g=_Bҧppuyƫ̗^пͧGIk0\Ȍ!W׺wow4fڡ?ޏN^zwqFI_udХL]]ˌy6?Oqp_RaX3>8zʸyAw?/8ݟ3v$>!̟_Q/vWwOs9g빝׸?c?S#?q:2ϞS?#4/Yg߃ϏD\yIo_C_}h}d^|[꽿_2~mH!r~=xqSE>OazxHO+x<5|Ǿv*Wm_x{~-Glǽ͗4Gqtq>s9#q~H\Y^G_=k߆.;ACR/ \KJr<+w!(N]f#ؿMԮu{{ǰ8BM?wH?{nqoQf[v:WoM_]wGt87n8u2oEO7pjx -gpqoi̋N>r?v^YvPo\}6O_Lq4:>[|^/v {:z*Y?vWuܗN3Ny0z7o1KS|-m\~W0w)=>3^z|o]>vO)qj5uy^? ޛ2 ֍ /K8ܟ"1o_>A[/{WڷjKoWOoޣ>;mdG~?#4?c;ԫ >˴ %Ƴsut5KH}1} |z-"wWƇ;Cu8_ߐ#k9px{w>D&igSgUؗ3?&YCG빲'v+;ø9a!?%/}B_zOl~{AEHW@ٻU~֌|ϯW{>j_}-W딍HY{77~.ዞxz~o|f_s+ph F?uEG.,y5o.W~!w}Ml>T8wi ~&|x3Ϗ>='nvہsn|˞i|Fnԣy vuS{|O{E+CStsc.6'_%wk^ctn2 |\|ʼry2ϼOyq?ޑJI?NIqc4~<ԼeRNGG*p~M#/}؏yg&^#q5`gNGσ]O6z^-=߸ɝ}B~-pne7ҧ{;x/p6ȼޑWXԏyѸkN? ;P ﹤9)H4/ ~ OD>w3ot_?py{"ﹷqߒq\q nK)O >@+9.ɣ tK|/3?#y̳a ޭ_3_]Nߋ}ہ#O`ӾYq6㮽o.|] 's=ZG߆2鑟3šu)9{B~}w]e~`{}r<}^N#G=x2TVwG8د(}G~]߾=.bNiT~2ʇ̧f|ͣz+Cgs : ޝ};g޳8yv?H?boݏ ]ا[;ipϡ'#q5DEBe^[*M;=π^9~gŞ/?r[w;vG)gx67*L=_ݍH쎿O\|2Oĭg~F^ 7; ]u73o/~OiUq<*ȏ֧:g;ίsu 6ȿq~=^7?9APO韇^YeY[?z#}yYwГx= =3''zOɼjIwwpop^i>9z/TV]_ϴ~KiߐA60߁O/ݿ8>;gx8oqocUSNӸ_k 1Y g)3;8'άx͋{>z{G|Kϭ%?y |g/qd>f}.^z4xICyydiKk̇|z;?tTSqN_88 ?7y) ZztyWxg^H~A|e齃yFv3#~2yC<p+< Ѕ~*}884z_[Dz!`Ϸθ?;zO+Bo{K=4oW]Y/usz;|~Ȍ{FB+g؍>ٱ\W|_9<_Oͅjg1y,)9wXGy{`r= -a~@_WT??VBOáGqo,qۺ pymO<|/7/t;̃]qF-u8ygK_i|{~'rH{vu~|#_>C}ռ7kq4_zCGƅzoSjo?2^Co[qYG4v6 ecW*s(3>!{'#i~Y/W82 ~qp{6o5빊|)Q$]KRc'z~ȇ{!Eϛ_J)|oث|_|2C￑c_|+|7_C7Oq]%~}oa_;H}/{]~Oޤ}̼+Љg_K&w{"3846NyO_u,E۸D݋~~G3>hi#Gz`v1{R;j|s7 esoKO[VzZq+v^8nSzW2Wϋi3W|r޿Lr~2Bڿv^2>Kiv΍5~8KyZ3y>RrWJ(yޱ]px!qʴ>/xy!gݴ3ʹwܦ4Lug{{v+e|R]M;RW9sy=*evq2?/nn]:z-=𼍯2;+7NO?7'_"/љy/]yF?]ʻW|rt_/eG~ϼ'gR}ޚ:O~^89pgΞ?{>r^o+xp=;~g^/fw#Ϸ/fw.y CN^Ə.81oyn<{~3#QqS}:B 7&wk~xki/#zy~Hr&/O\ޑk??CWN3/?r=96xWyD?Hl>/vw~, ]:/} 7`_WL֙[;=GJ_v8 r:Wf~w2/xgϢ;v+:/|t98_<4pb|G*WG/9ws=]N/֞C~'x:e!7~y@״?W{Y(?v_yz eLc;|; {7g֕/dϮ'ԃ7zqKn8f?9E| +~V>uD^__go}zDW/>_:% AUg97C3߳dwx*gt=WߐxSp~"_?t}n;wƏr'헏g53ݗCG8u?rr+{/yfg?J A{i\:8;{pO/7]9~pu]u$~?Ae=Bn+C$&k^o|4ջƛo =_#gCz'Zou~Kg?'݁#w=qςi>Nf~p'Cy&jW'xχG..H{]Okv p?:w]>~Jx{ ^C՟:~ugw7.|B_J{Ky3x.ߟ~7t8n+#)xԏ_iHkGiqQh=>v!B %!'n~&|8?St( >$_[?9Nn߃nM9x#l#w>\6Avg~#_ \͗<ƣ_cGo;:i!B/|n3::kq g#|ɝ㞤)Ɓ;|l)36]Fݷp}Q|_7^yq'7Qy8̻ }7o{x?OB;qv~yR<[[\<YgQ G?79[y-{^+?GGk__K]>΃p-8/?+oƅwq(iy^kG5CLJyWrN~O6|V9:tSx#S>7)?tK:]z.W|9_jޜy/Jvy_>J4lK޳W=v|H =,xR 7:<sgOM7]jv?W;|лy|p9;L/>|۸z q)Ө?L;|8gCkM/x]hSyzy/%>~<>};p~wvOtvY]#/~3{ɔ9~=`|HNtQvK|~'.ȃ[_عN7W<]97? O7't ~YKe>{\-{<ΎF83v(ƃ=\7:?SwکFqf|O|n?xM;]P}r] BwJ=Zw~{L}q{3>l|>;߷qWH졎#97ίsjg}G#\{Gqg|ֻiDϐS^:#.#^\//=WߛW7ɉYMH;{zj| x}nWxU|?άF䏸]{r]g.qRw]Կo^Pn3G//sor4yC 3.ԏo]y^9U)ix|*GɧǯQ}k?՟=/<5yGD?i O^om=|_1rZ ^юyg\yN=z= !Q]S?c5/ t腞Orq&\Q/<u7D6(g$}8Ʊt9/p?z/Ncx G:nDk8xtݸqT.cB{= WNG9;~1k/ƃngpW5.= ʞ>V=i~Dܺ|gP+C.Cy ,}tni7WD|2}I9{_lo{]tGrqk5?CO{{ [~?çz#^IU7.# -8vDN=~ܫtw|~S<o!w={~?Uڱ?[=r ~4_y{Ǻ@w$/ZgqDL?Ƌ^Е+I=~/|霼K;{f||W/_5qG}(|6.|DPkEI8K|п}!t87xɼ{?5 9^(y)BN;j"/ tyb>? #wW7]c_\%/;rm><ԞCm>O{kW.GG?iQy7H!L `y|/~t݆>ϐKak|6pumԷI7> =f|sƓy0[u>>/_3ϞC?]~=9:_|WFV/̼vG^Vy{8@qowxo7qI?~$1pil#kǧ9ik<_ wRAo\Vڵy(90R;3nx~6΁oOc{6^|q]s533IoGgrM|M#7/A/~gïLgR;y'C^Ԯ6+;הl>|O~ |vo4.|}s?~ƿy`x>~r:ϼG4|G7'9rv-~q#͏uo|eA/ͫ{XuiӞoN60%SyO5_|{kT{(GJ?6;6Eiȭ3pYhzg73鹕o|0~{(C5pmrxR>?Յ'An'ld]ܬyNU9vg~Ɖt?&6l'tb|{'OS\ UYR8q|NMz>+_=#/]~ƙGOLw$'k{ey%<kN|}Ryn\]+vv{(x9-83Gy~KJ8~W{@)Ѽ= ?pj>t3q$Se~(wδ?iz<zy_9h96OWE|ޗg~";8CwGpJWj[t΍3+3ћ7 όCIOQ;у~L>MG?aM?Ox\)kqSjn 7ylgv|8_ ^ ݋y](G7WIgˁ|<>i{}"N;Rǧ>9.)2Nbډ)~2~6=1p\ ?_ڃׂ_W Ɨ Orə|9>G^",1kGNW2~r\x./|y{|>~0혿_Jy9]FOt|5|3^y9\>`?|5/;G@/Apwz#W;+n|13 n /uq;'I#x|`W?~%I3)}wloسG{+b<cB({~<%кaU+i^?BgGá{v;6QkSٸegͮG}Ď_կyfׁ;7;Km+)zǣ<ѱԝaG'%ebJr>xL? ?sse扞 2.]AǕOg{:5"Sx,|y[w_t5|Apzב3ciOE'9cyQ}~,'6oF(=?λOϼ ~iJNH[a\o;?˷yg!;um !oY?Et8OwBοYGk?WރxɁyٕimpJ?tfo c>y%'o!^3h%aOv@7%O{g=}g\u";?wэu"uxGt8޳)o7wH|mW;̟}qzӎuc?A|}*W?r2嫁ڏkf=ZzG :D[z}z<'<9y];>'Y_Sxׁ7g>k39/B.㞯wWvZ6~Co?igW)9HoW~<(7Eo/r#\^}}ib|b^k^J=߃7:OtHnw`GзqGD?+O~Jt^:Dʍy4me)^?S_y%/Lno)kq5aC3x?@#r;_gy~[q:ApWց٧/~:qLynH}xώ⇻'y)^?ؕ]|a>]W3tUNig~! >'"/o {O~qKtI ^=ux|/zE?|Cq1{vcc_C,ߔg>!q84|p4 Ë}W|6)կ|{z_<}zEg;|!!ß^|nl?ȼx?gvOi޷D7}S)w I'|@S)|v_<~/[f~oIO闟Yv}!477~r E~5?B?Tϔ8ټYh u>,zx:+9q[%D?O&ci|ڸ"r |댃w%KG;i3FN?ʹKN\~o3Ni>3;z}FCO~߸M!%{^#O?Ή4!ߓWH?*~# 0_p"W/.'򊞮'O vxB?|x!z\?G^~ӣ/;Hohb7g脾o7}n\}8]8;6:C/e<ߋy.Rک~W;Ʒ=JU:ܢoKs=LR 8oǟ8?zš_97ۑy>zRku/{3pe'{#<+q]1 \79.xJE{w>ߓ-:O@X\{,1'9J/Zes%{Ci#CU:\asYcoe~ ɳq{<߸w3:'ț~L=v÷ug}Ǟqxo!)]8o<O.? *طIr.A^qyoѝ_z~ri{ƏZڭ?? W71ƃJy-_b} 7.xWVbzOwe5 /W_rz^dݯユ|9|%DO<'lv7zqߨ,{>pƏgksOi?$kiiƃ9Qt% %t_[c~ ڸ| H >݇'of|gɑåԳsNaW=o~_n=r-rȫo>x=@ >_G<#8X9 'wBGo5wg~`깇Գ.; <7^,bG>S'߻—'o~j5s{_2/[k[{=A>~fAҟsčM) zt`uH9/>|u%5ߞ^i7&{=Cao7g/ ?Ӯ86F}q(O?:gl7W ~/+q1tϫ'ߑi!U=*S^Wp+^v!zv*9r\}>Ňn97#<\sڻ9n]xgȾ=אeXwt)gx&o}?pj<GÏ?c W*[N^!|R)^ɽ3ތёѫuƱg\x;k[GK byF/;z }O>×W><i<>{WE7Cv-L9^z9߿q~|>ώk_?#G|ԓO{LB7)e}s<%ħ#9g9OOiyS=O>7z~ə92J{?{ySfܷCGE>wN9q;i 0|M6=5^}0>YỴֿB#{ܬ;4'$?Qs7Ot=t(Eۺsu8B&I{v"}xeԗ=g)z_l~Kvzkm}ÜywS~iKkGp{~}yejg{h$7_p㸚$eQKY?~pk(r'U)k{tzIK(rk\pSOO ^+?n}Oѻ{a=?[k=Rc~/z^GY_~]~ٽ&oL4. =gyɓG>< >kMCG}.NOۏo*/_ž/r~u=E}@gk]_;ָGCDgN9z➿}_ {ͺM;cW#Orz qSG>Y~/:Jټx?Cx̸Mt~?V~e><`^I{-ɇͯey;~֏0ysG O78po+r'{OM?Ks~67xSO/Gߥ>Ϟbh^w}OF(>J3ٓ_޳s3G<9%|{{$z~ke7rSo~?eϯ/3/Qc1{g?NC\6<3w@GygG<8y8մy]ɋ)㽨|_lG Yl>0㶎bksc7=rH{|ظ"/ȿc]gίRv \ɁʍynyOo v[6oKLoS0?gmڿ?{*e~=?]̛^u+=9O ޛg r3GOwh}%C=}kk9g~߱KQ9<7Ny|9+|^AA]χ~wqyO.{S[#v#z{z]o)=/K~4J}e?y6>le ]6oeܞvQr}SUx{'*}TgZWXgwAƕ=__JA7|DG]=LY\g ^}=wӇ&ޞkO}ߑO]~`&O)Kioyz-<2j=k . Kys"5z>=/G]eEY;W{e)>||7NG&? 35>|Uyg\~a_7#{ W~K֑>Y^A/{4%WyFOyO \m͓T}L2ﵧ^#_^ccG~D3Myv?ߠ'z_ߟу~j<_γv멽w\g[ϙgyGo_gۇYd\LO_z?垗&2_-|D^UͿLGzIiBm_yÓs~|>1>EqVP붴q)ms3Ǐ?R̘7xΧg~x|~ƹyV럞j\]K5/k#IO~j_;{S}|/z<<{{Bw~|Ͼ@ugצ?o>s~zk‡M}p"|F3o?)o{t烼wks{~M9c \ӻg޳>}i?/i~tfvyȿKc+k=ON^P;b<qHG7r9kG=͇.{(/sKWͮt'R_A/w{Roq=o n/y8>=?!;>={7/C'/ Kt Ko? ?wGQYfG|߅D>7SH^ySf?^bSvVn[]=^"go>홙W<^9tu]ow#/>9ǧ W{vO\1/ߙ񰯭е~/l)ůw?=_zPzs܃\3IS}sԯ~:̳GF7^֫jhھq=}7ҥ}G/KA)k̷q ~Ay>9@p'OC{^l̷ag40\#ޛ '鏝K#_2ύp'߭/x~Tz+^{^^ ߚ⯑s_]l~}4~}Bnm>YO 2ϼSy/E㩿"ޑvE'Zӫs~ܺ<i%5u:G`Oys~dr^q8̓<7.<ȽH53B}bg}j݈/Q{6Ɠzd~dn(4>l^O.6'iMfzbm|)oR)#o.c_ĺy?_<}ݽ7jOcmkdww3(]y_^pPރajM6v;j 9߱噋7r %u4HO\Dbϸ6=b?~ޣ~[irrxX5p?O/:{Տ;cyO?>;zw?rƙʗw5X:Gi;v!Eoz[J~O8wq_W)ۋww!y6k o+{]+z3o'8K]ޣD>84-MgyC.vҮ]=|"O;'듔q\\ƥGGlt|KI+|M~7a5ӯy4NkIsm)7 \_YW67^8\zO^ >ە+7{qq9cܞ~Li|ss<{yxEVuĿvgތw}Oww~NC{vk2/}oơx|gѼ}vqG7-{юPq^ޒ=_CnqB5xSzJn*:2~r RϜZ{t}qorvߗx$%Y?"|M}CGN{Q9xO['G=v߾q)/ 6|!z!+~>??%}~p4>A/l~y쌣6tgv;yX{vk7?[x t}| ~q~R9p=?o B'5G`}ObyZ{G|>OŤ>m~h֑^EgD঴k^O=~.+ڸfyفo|vC'rǸ?7)ŃY779UW5o =?1?cy&O5? :Fgn6{W;ѼAw8~jsg~H7rٕOonMㆧ|~/~4|vڭ_hQiqS)7^4]xyݮ3zǯR/@Tsw Y?)W7 N;7JpO}H~_|s CpM{>l$y|B3_:Ji]W#goUXߓ=lx/H> ?Ưiyo#OۺGy۸ȏ=/:+1_ \*_8_M=qt_4o?$y(ɭTig ybK_O5+^ƣ^ʯ<?'ߙNo>ϕ?ޞoIaP-Xt¿gq)ꑼg?:xegA<7%;%y7>3'L?2{6K w~pKI^{a߭VyiXv?xib]7I!%;d5/ |_ z{f|>j[3rٛbh_[SOX4oon}Qs'6o>]`%'{yk~ⴏk\yŮ oؓ?O!9>_tN?5w| ƕzˁ.zn\K{7gv3ؼ7:,qx#wQ5AϻorMϕ9y_|Xgp{mFne1s6q?xclr37o);QA׽|_t||m}9vYm`w}0v|mc_?X;{FyOkx^FN4.Gьzk㯼;?{-wiFt9Ǥs; \{}@yF~uI=i|qzyUJx]#ǗOHi]Ot_"_z(ϗF>s?Aoo~yj 73ow9֫g7ٳWJv2|l>UJ>xWAN Ỵƹk/>{NWI|x;h7q#oy/ ߔz׼$y~zb^SO^yKaKMq/2t|kKy~j7e]O~"w[zvA?Z'nsjo}vVkh~oz[{YRt9@_։='z٣Gn29SʯGiaߍTyy뗞"O?jWdn]7,(?s`yf<C/zn||?yR;ntӸs*yOïqz߼k/ފ/s\ROaX7Oeoߡhg\E?TwuyL;r+Ѵ0obyg/zɯjiQ{~A~@ks׵g{I7]:w} 7><阮߯Ns;~\xc7Y?C;?D~ x+q#=j|DGSy*3naG qo?zj^&py1F> s^/Sɝߛ׿ ?m ϞS3CEL=zJ=/t|}ޓc+{nx6~|g|{^>oezIQ#8V@H+K#MZKMH^&<~3ʘz& _2fI2 {~Ի[A OzT.V[ZUH;Y{SB8ߤO7k.vO{9v)_ѸsOߍN{>>6?sUt8{j;/d ~?wA{Ji{'O =RrejJZ}=!N.Mڵk}oL9?yLyc/e{'S]\_ꁧ߂>W{Otޓg]݇wy}ˍC?d {yy3x;=o7ظCk /;?US@'wK\=_ ~w" = W")fp{O/^m9~h /?Q{Ol@2_̻ƃO#r-C3nϣ RBgșЇ9 %O܃C>wonRj\=ydwwLo?~^)qA~fb%8%N"׸=jo__?1呓O}_O_SGS떔}7;+;)csI{A%^uw1xyQƝduI3]'$m|~}>RύNoRؤ=&m|;vH 9x|GG}f>K΅ziyX#xbMt߬|^o~7H;#@!OUN 㤎d)t\O+>l"X^C.(r)>tߡw+~lqE~ȣƏj>Uw OH1~}]i<H.#~784>ڏ\gow}DnbOW>wǼ{~P>DB)"z}-z. n+~gκg!b<zBxv\{weމ)_c\SA ޻@?[8z~& Ns ]|G_4N~^RqcޠnA^gzW=x|B nǢ6%^TWs]޿ 7O_BNU?I9^*bWPya_ >-?v2½]|]]/B/)Znѻy zz]~*ߐ?/v<KWث֛e~/F9{)?*t)y}*e?/7"ߜ#IDOCOܻߙݡww;+~=K÷/o\,{Qggv~%{qZo:e>?Ji {m{ 9i9|1AE~r><՞O =3zV$ 3%_P9 ̸|OnO}?:Nf]_3ߥ申z{n+ g5vj?;~\Y/\Ko|=ッ|=^oDz :N*)yOr=|'`qw~'$ORhE7![-о E4){,߁sSV|}C{zDR-N o~{+zSzsDn2)ǾXϛt}W^?g}wR?oT NkYtr~ޏ^Ň뽣'boýAqOA ~Bϰ.AOJ}Ǎ!Ϙ}}}5ϻzzTz()b@ƹݯ{]i +ߔC"}oZ|NIFW1r|&O<݄΀ݷJ{Ѓ4xh[?S͋Y78 | pSu7G|^h ߎ,2շ{X{Cc_A.ԏ v/n<_:a{S!/5n=.iQ7?-^||ϋ\7_D|Zr&yd'>oTw >zQ%얾!g75^XWv-yx?oy8H^`9^J.<'ba_g][G t8Nߑ)'P|¼_rxY_^Q~o;~9qeޯb'Ct'2з,M_Awɳv>WG}^oAy08/z}w ~c=; =n_~a]U)wC'ɣokt߅D~sc"*9їєg>zNq%$7~\=W+_/>w?D)=xOW/ ;_i諟N|SNFnߜc_=y\NN9On|[E?OWzDCo?y߭[8 }UDszA{*7x{彯-rM_{؇ۼg=rl<ϝބ_ӏmxJtIAƋ<™qt#|؞r ?~z^AMG+grc%rLQ9|ϠOcsk1CrǾi $/cy87^?/( M_xnL^'ImqgOgM/Uo$oyq9ެ?6_wӅ孷dzI$eW7ɁOF;ۉ.ԫJPpLv,gi~Ni +ӱlr֗詟<.?'9bybP:xi}U{fm>Ӽw4?y? sͦwOhޭ›]E3{ޞ-6ukk?cy;лjhoNӹbZz7țnk Oi?K.{ |U mo~y|~/1M>U?[~kѯ~r3rQ3OMߔ+^>k{~ͫSո-׬6ew$<=|qOu8مG/0}m|7[x#?h牏,/y>qsCyuMO'yc_d9Auh ދ>o~jdo1n˙&:]u߰S5ӽO|ȥ}7\k֣и&?rh j{7f'MO:s_߹DP>4^:x<\=Kq[ӓ6lMjS\gˍɎqyww{uch?c~6+:ؾۃ[Yڧ?ڙcG5_; JQ]-[?KdOx &DcZ'/sg6`.[xw[oXN dsf.>9G\\N7t,9}IO~tNύ~"ünƃNJv2g}\§&mqg:>~S$xi} Ƕ!z@M~֦/DwSܒ %JggƟxMc>~AoANOި/~1:h =}\i>tqx ;lqG>$.g$K/lp0n֗%>ٝﴯp}Ǐ'=?nfj[ ^/^dOS< ~6ߌ &֥=a<<1L9^gֳ4o0՞CAMrpnit[rx'~$Wq?Eutn>R\B~&w%lML3_x0MGpn%[|]?T ? G?tɏ 㾉i_}:x'kGzcw䗜kӹImL)uǷz ?q:5Nϧle98eoɞ;o3|b4]L4$&ysQ.jK=ϴ?9~{Ƶѡ\F7{_q;SdN)>I=EBɏm&&`Mpn)n3Npɿn~97m4(?) '7L ovoKxk<1o [l<MS\;ӝ/][_Mvo~,|22k>Fx?DxMc{vzeQ ? ,ܿǽ ԟO0mLzoߍ~Rkwth}?L\'8&4';`\[ 3H灏'lZ^l'a?m{p]ÛN,]LtjNq㶮_ѕG9❓nOizb߅/lI5/cD[#q~m=' ץ5/g?9i<ӹ9 Oϱ4/ lorOx]777_ܦWKrntpɏ7уrLZqmm ﶫ?~g^eZwm~[5=soqj~~W3Kr~Z[mtt?h x_])0><ƨo:̯k2 c_\ƿ 7?0KƁ1)&vXqcaR;ϛP'=ripZ?]j?s~K2CG>:r:5mMqW<͋_O)k4 nd`^Ӻ߈Һ}ZN~i?w|~ [>{G?yKii{ݽ[{~^zg6h޶8ƤexڡO{?wHH)g![lv渟+:~;wuN.~%"z_qH/rΌ7 _;,_|B?~?smv^Utg]3lzG=㷽%Lt3ﶏ37޷4.xzΪE|p0>~~4ޏc צǕ|~u{cK~ʝWFl:hLfi.o>Η񳻼 ܝ'cGoC׶|un0cG+VnoflqbO]5AN<Ro=X6nCv :o)fl>LGfwom~iO>n=izOx|y6lЄq}>U>M/t =xnf'ߌvƳI,?L~^OAs䟚6N_d:@;lל7sg!?3?k{tϪi/ֿa_;й~Bqs96rbkl ~I&r#LOig<ԟAMe;tz|zv϶4&'p;Uo}?~\G^ovsj~M ivv䀯)`)e_~nGھ ϖc3_:.݇*? ,G,=g`|EO~mXy{-&؇?Aؾ ݏw&yyij>;4#>xO׾E?]ljNH,oHrsܟ.9'8=^ϏgՎe1M;5^1?6״:i_} LrlqCtg?2mWpLr|~|ҹߒr@{2=o͞]zkMzf/G1O0i;~7>UO~m#97?nq6dGA_X\:4osZny1ųl˛NG/șis9^&:qZlJ{H@qzg[䧙Lr{3~nY`ilKaJӧ׭}|/^/ǖӾaܗ޽hxi&9~}D>9z1vF]/0CzOxRa6 _/oޟU'x|'>)iۧ4NvzuZLq4n~ǵS^fzvuoK㰞? 8'?<ظ?4/96981W1yѥs].yF󴭟͟\`;{Ϳ1}i_bZϏt1ޟyWݸӆy7]?i>^&'8毻 &O}|uC0zXLpv?;\~/zTt9gOö (쿡ݯc{WrAk_{_5&kd{xkNcElAxoko;ۥ{6a)iI׉^G~6M{??sjݬcדWCa+'8ɯ1Xz5-M,8u^?re9'OEϗm_?&ǔsfp|or7s?Zm߃z?Mkc0 Zn7>wgM|pOW{S4ե8=ߴI0ѹb"|rip\Mr_Fo3ͯL96ɕɿqzc;2DgzA^?'u[ݍ4O:E>:QkW~He8|~n{MSut6z_a-~/KL7tD9Kc? a>D}cc$=S<Bt>{̇<=L5\c?ӾgmC[?v;_|Rztm%8|v7N0Nr}Z/Lqb֣Ӿ>G?wEG]N2ťLֶ:x<죞~~addol넁m;`)u´1&y%x'vSdZNGC}Ѡ4>oÏמ-Btӻ)7o'Ds-AMq+:x5}LfOoi'9a{k0xKo]8f'[YLxdg_P!#Ldž0̧y|b?uᆿ8)陉&9QDO0y[MqӾǶ;٣-Njf ~r;g}AXy8&&[tɾk׉^S#y;f<]0Ӽ_[<}K9Kqu߭_>m5=tԓ a7:>geB~ /uOrt;?H׃qN.S;cW7bo2~w<=P~7|&:zS&WK\a|SҸ>S+2죋睅M.'Oa˚ϕtqaz~Nb3Зxӽ0۶8K>ݻ;ş~JPoovS&?CMW$G?y~{~ԟ|`;~ϴgxߥ{>R;oo֡||Nv;մttj=3ūL/d?L$7c8K擉.yؓ:юm3ȣ֏S\ҶN5.xC'ˉ7?ߴ=Sii5{C_hÁ.Ƹ>Ӌh rc'Gaw^u+{\Z@/1]nx5HnOx1p}tI !zQ7.E1߉uFwjg#7فk|ݯ7#>'ӹoLmރONv$-5eKi>63^ G?gjw?Ҿߖ/᫟,?w:ayq~_~'}6ٟaڝ uvoڟ4>&~&t~#ÓD8'_\ү7~RIiGItyI/??acƛv|8ˁ+\Txy~ϣ;yҧ ?~+Bo5 b)Bo|= <3#ढ़|Ͼ4rQү&/)xb~or/ׯTjG=_}!Gg?ϿJ ɿ~q;r@rxg~X_BG;FB_ӯ]|#yzv; NjORbڭ7x3o7W?yO7^K}G>2:3I'Y{+mEa2Kwy">GoOz|~o=G~7$pZn3N?;O#K+ KY/tyh9}=r+>} ؟w#ߙwt~< xF2=6SBvvK x!C΍A_[ ]2G)3__QRQ۴'_Vܭn=|`z~k`ڃR p~;+#K:2+KIӧ+$xg9yw ףS|$2>$2NlGJoՓ^rj_?xj K$a#tNo^^SrR/TNg\ |>H_RiƉO8呗ro5Im[M]&_GK|G.K9[톤r9<`>o{v?)qW,ŋ辒HI9uM| HP9迯)ۇ"g凤1|g^ t~#I}9|' -םKת"Oȍkkz7i##r:GP|@=}o׏wk{-?#)E;q߮_ ~Cc1}md=_;:W>^㆟>C{)_:>2|]z>r߭?'Ͼ|1WSMSyBny T~4|oZ]FF^!g_ <'7xL59|7NƏI׿j>|9iq0#\G|}:K}zͳdi|MտI979xkq>8W4v}15w gq2_[5ꏾR>= ؗeN)|x_+r/ȹ?%Xc?5nmDn䱃T3+R攲g_B 3|3͞z1屻4~|NGq4i_w՟]]/;Ϸs}(XS$~'GO^Ol>/7Gz:>?ַa~|. xk9d{vuyHoɣQվAׄo2]ַ/ݞ껤~R'ݑR?:n g =g|ȫ]`Gqտ+/ve?D⸦5;zRI~KpCL)8~Ic+&ܟRC"iH}䱧+/a5" 9(rqJu^v$Kr @t<xw-|)g޸|GO/=)O| I> Oyޟ%=)qY ")v/v N?֏8k''+Bn3w't>.=d\_y^i^F=IƍZo_cXG$+v SFRz/+nOk|Hʓ r;?xANO}\b߅} xzqakWCW "Л0_K#qk ھg^|'85_ŸG. tƾe|mxO;􋼁Oa/@O3N7Oƛ$/빠GH ]#CF'I||R樯SH^wt.ߙ  wEޱO8|}մ;i:+{v~z~$)WixrsJGnk^Q;]/c+I3|qЭυ;T\W#<9y7]"iwk{?8p}+?~yB:HkxSA/ic3߯)e: ۼ]DɃw◠9]=A;j&~ZWIh^7@=q\?sŇ~FvDgmbR~7}S?_H@?GoWCo9ry<>G^?v$B+:~S3n~]Ey_{ח5Ӏ7faB5QMy#B7~kvyuϧ]p~>'~Uvf{8m@s{J#>qr;?Hyv@lxET_$/奴}g{?M=s<7'|CNX[>vxMٿ~y!xк3ߧ=gI?W}v=Xy#S%N5|)|Z` ToʷːMʸ ?/#~z=ulcúڣu.{=OcGAKݣHOg_y۟>A:SysV{I[`P<%Mlw#8'8qm"_g}\75)y'7;{[}>|r_f|)׸=aX ]uD꽨ZyD^|N}E^{~\'Sm\`@(=yF/OɳS{ K~H;!| 7NDO=6ȯKWcկra'~#wo>g=<|9p2ޫS ?Z:L;7ɳ_}&7tEq2[gsqIe:ΪPi|qsJ Iӹ'f>y;ri)mWBTDn0Iqk}痻H}ƞ&E_8/xANgRJhWc^#|ggZy#ox^Co<>灿[i:e_;z 8J7y5rq@O/uk-|eg,8? r{Xǃ՞SIg_Kck[4n=߉ðnBzoF8U;{2}:u/@ߍ7JGW+|)qi>s I\=O+<+oqIF^^'~?C9]{+{ cvlosXw}g^cǿurq%sG?c*0N~.'J{ݱ/iR]{zMSRP8|o-Xq"0G{tZ-z/qOo}6o#ypۯL }^+t~-^9g{p6ڟ8|_QG~ ϻQWk=ӀcЯը+&ʩ>M} ==7<>wuC;~q{+^𨿾r|Os=Q}\mB򾯭+}^R8;$;Ɠ'ubF.|38ooo>z5|>vRO~o<:ݞ?v̿Q{w.~[O< /'~'x# FtqOzߑ?}xeǎOL@/'*GJ=#z󢜣ߓGq"G_=krzrfspn$A>zsJmߋ ޠ'==w{I{Bʽbs\C?+}Y}! Igz>pܚX)stߤ '#<h'{@ʱr:3θcJ|:{?Vڱ~鹚 x.?|{RNҞ3^NO?lpW9G'OzCV}Hy煴~ynI?B[ߣIZ{juRƥqAH/}UГ{|Σ{{m|n-8}%c^l~~/iU9(nC~.zhßߩ=;\JF4&V;|/s~qެ^H>.~b=,,]Jy֧'VxW=}7!),̇5AO>þJ~ITy'ot'M)"?{gO b|^nU >'7 {>0ߑ{=yS>:{|G~Դs~}vvgb?p!YQ/i7{)R=,zls>{Ӿ#o_*SV/mzn&큇kq#W=Ӹ[;.(_C^׿v> *v3zU߿Sܠky;NC> +wU':y4K7{9 =u6.&੟2){G.vvoYR'O7y/$yӒv'M)"g: ޾sg~oH㘒~j>;/[a;bݱڒg z?CҞOHy'5}#?{ vac<|].|{rݷޟb={}cvg'3+`Xa]s~\0|JzqGげBĻ&|M{ Ozq),>?rXÿ>=Sxa|ƣ7T9.*z_MRx\?nQzOHgLy/`g?ɥS8jz~=+~tV=gqn3m?{9q,| g~ qR3{ڮͭfo#96s%E/xi/B. WݷH9w/ 1p g|c|}3d}݋>H}vSWy!)z#q1o q =_z;r 8z.?wnȽcL /}/'/ڏN)L^=k^} ~M)=zo`vJO97)%SȻvqz4/)tB̯Ewzzqm3]q>]z>/=ϑ/v^')Bn﹝||9:?3WxkxF?MSՕgq1M;K8t^S[@nznS?ym=7L78ƍ~:iRkݭ3.)6>zGG^#k_~Y_I}g~oB#W9yvE=Z?6t=D|̓w?[˝ԯ]-zo7w`˪߯?ty$7CLJn{>xޫ;}~5.~[LXr}w cK~}彟]=OJeoO}oN7i/k{ڗ\Dbc0'cwXN|EcAb'=M>WAyɳg_ R֏'C83 3}פn~|㸎V~Ӧ^kʟC;e/%)~d~1)"M{ou밎723RO{!7~jM{-yCxz.QFy ){uqwkfg{FkțoO*)t},o8˥r+"/]S^ F{#~H W K}+)5ŗlqfpR8ԃ^Ty{C}gb?yh g3.Ke]>t3{% :+J9u,C ?wmAk<؅~n򍻸[Dž2N}cOgOx~ ri>ʡgώl|HR\$hy3~ʧc3|*NL긁?Zǿc^Q~G]_zz\&z<'}) mZ ~þCA{{M|㘎kg=<|κ }oI=I .yN.붮zW_3or70sHYOo|bEuɳLrߞzK??lo^ǽizCPs ^}_=Lic/{Fa}s;Hn_ϟQ9q!i8qo5Y#Xw?JQn Lʁ'')_v 71~ac|Yp_ F~1\NCy6n~^q\/mz?}RK}-zSW^c]}Yg\IF_IgYWiOFQ~RO?vηnO)qGL`׼r|?=?yX8l<@ <70y5HGo܁ק,ߧqQs\Cw=~u\5"YL:?q}vI9M9sIY3/>abG㬏knaN'7븎d}@N{O—bۗЙ1oqܮϛZe~}Ω087 {Oqf&+\OU/kW)sJ![ʣ|?8ػS)ře.?ۏu!W=wo;̗U=ojg1d|r?Jha)ԾZ%7*S>J_'2 cyT^ |x9y|w2S#zھߋ=܇* 8뵟G*}uOճߑ v!:W6^8_v ޿|G|Kp߫Ӱs,]v_5wnM{s=f܌Sq w?7{OIR ^{n7wL{ݏM)x ρqތ3CRz${nKcgw̸(G?c]\=w+U^^<싔.}_\;߱|q2/ȁk9{VO:'vRk[zg}q:Nv*mSZ;p0-ߑ{˵'Sp|ܺЭ{>6L}vѻ^VN픴sK|BOt}|::߱࿞C}H89y\o)e?|>U}{W<> \^^LʼJ)]ew>> juv[5>X*IZqgOS=IŻܬ_gH=R]8LSt]&pk>a-?zOY?cw`}>G={W6pQN/?ݯw~?4~E> a?xz/ c\ɳ{@+;S?߻_q3&{?AOCgC@.#6wQ?p ``cr3G @?K1)|xL?Wyv6:[ w_9)T.Auﴗ|S?}z~v _co.o|B}Nv5>ޟqhݏw "^J}+)v󈞃W/Gz}>::}}ǁzG+<F˯礟N׸4թϺqG|#?=Ywt˞?A[a3nvlםG<@oկ|}K93X7!<{|*V.:~ |MSp\q_WּxܞRˡʫ%a/G_Nڻ[zDUO]z2 a7|}Ǣw'r@[ma4a}aF'g8Suc#6-)xrܤ}~”c_O[]qGWkӴ{͓I5LSݔsu<~w~_qg=+z?CB\WW>I9 ?tθ'r zbq؟Yge_Or谶4Zqݓ{AP/p!ggN!ű57r|/R\/wW=CgWLnq6=\RyոSs>|>.}_A"Bދw%]H=QXc' ︯o#HoI{]Q߇K _R?s?K)E=bݭ.Iy'xDϼn~}ƉIS7LJIt:ٰ׸ke<wzC5_{=)x"弯{ FQ{|0^:N~#Y߆_ا+qu_j}T|`ZPgݛO)sc'8GW#| #M#șq?O DI}og|CIܜ}}g䒯^7^%)x?WyvDWv;ܭ6帎}0?9%S<+}V}/^SSwnN黩F{3p۩O_Zi?N)mׂ7~I{oqgy?I׀/Riͽo{IymJiTSAA/I8J}n{7|ޝ?NʽvN g|kk{p8_n{y/:ηR}>?|eZ~|m8)wNCk<ϭ〞'|Cziɥgہ #>ya;i./_)go"ݽ1-H?xE@oENTާ}Ɲ)_K+~w? GO~+> #oa^KzBPyo_<qD~.\+/WG.A/W{a3c]y~pq2޻]9g]vzݮ깔?YotzrC =:^Iy~OS_tY8wk9ګy|~78sAzz]OIC9[wk;u-]f?Ҟyy#~RmN“zY_>;ʁCßkI~ǻܬ`C?OnW8􏾪۵ [s]'Ry]7̸@]=;o?7-~-C>uŸﻁ ^ᅟя鶮tz_k.|M>?1\ = ig?ȃ۵~_Dok#}4x@_r~+Nz"?f=&}-@2Wyzy+?Z=~-p"-p:O 㳾>xouW1P_:|y]zCFBFxi7"OkO"?SO~>Vw!r^[׻v Q9'r Ôz Iױ_k'knWYgvvGiIY5z?N?]??A;{tѳ#=irF+pg[TyzHSKʧM[kgfqm/w^>Z6pǎ@/؏w1X{!#G~U= Of>v ir8SVe^O=:R3svE ? ؟쟢w~ٿz[|w'XNk]#XwoAz*OSe@9> v#}9?aWWחi~G೼+ǻq2|/wܩ"W z~C d]n}{M}R91nGC~8VwxC㪟;g3GM/276^o~7?}Y{vGaSm|$ =yﴷU?'e WR[ Щ zq祿;vMJi~¾D Sj:6xi+|#Ocaúx9Q7(@imqǴ<3v~l.>~nY_Sux)Wruiľ~t>z?6wzN>s/X}?SmC.~ }cO09m /פiy3vor_b)e? C\/eް:i;y3m|hh[}Hޯviq?2 /N.^ pmy_J_>07wq]; Y ۵ ?Ǔz_'7͸ă+8 xYAkfT鏟^x#o}r(p_?wʋ o?r~֔>/[=?pg)g?~;[1y~}x, ^ȳ%ߨ}{ک[=wᾧ|ܹvuDi/_=8w_ꣵ\b}6v# <+r: y}gGZ>t^PB>e>xv}V{i~<v—r_;Y_inu,vsv"2껃_oq\L|_}zywT>k俍5~rFj\vxSqڙ+3v}1/~tY<]|}ێg`+J)o|j']rdȿeߥp6^<۞h-~x];{>wrSLa g|>z^=pOm|q(q7o9]&Sl:Lƕ>׸ϿI칍{>3sbNoiN=\X_5ύrq\k-|tkϿ}M7zr,㮝8I]q:A7OyvdGv3<^ئN^2B)_}2Tx`s+u޷ޞ4s^W1Ky~N3^tQ<<{k {ƙu: PɌ׺zWY+/vJ~f>:qMZR.)pw߆q-G#ه|i絛þc_c'C_ڭ侵Zxz [|YץNቜI/e\خzGQt||[_=E}+GQ?h>7nStqwbuy_XOdǁ}}_/a9?Ɲ~WhxݙzVly_~`A\HŷK5@g)Gߣ_o?OCxםܘ/~y~G<؟NCwk݁qOlik^,4~ _ݳq'y[H;=~$m_j=7ߞM}}5?8+Yus|kI{; nlG>>I~px;+c>OK叧x`?5>&e YAg|Z;݌뭓3q^xcO^h׺Jk3Rk/z"G#^Cx_wk<^8~kO9H. d_ϡlҾyH2Es/y̯NyN73OǮϓu+pwS!izZm8vx7+Gw8:e@>ωϡ79C?s'OzS1ԯ2oa['#p\L[x; '_<ɸ/89y$NC1Y~oK;=wBL> ~u|ݗZ˳zdݿ31xJjx*qt <|_;u\G2t>fAy^i/G5>_|_ƙ~j_iW۝tni+?ۮ|Gk9|O^׾=ƓcgJ'n+GI91ΞgOGk?NCK^c^uxeJqMfCgs{~|+uHEggr OBnJo kJ=7xg^w>sM?~Nuz^vVS?؄7_sgX'O~+;G.c߃ug ͣ4{yW^MGky.N(}vpc?i_Џ{vsܦ^7>ƕ+튫mԯt?|ώj|x7j7{o n~38?U؟sx'kON->˸}{qiqs9)!fshmO/sw}v#-ҫDG >ߟ=ؼp{f埃NwO|aO4X` >x~ 7߭~ً'yϓ9{> ͸f\}cݼO {to]ctlzkg|1cQ@o:<wr{>K}_~7*u?ow<ǺjGq:Iw3 >zNYʸ_(AG]U7~R{~ ?<sxkc5<+\阯M+8{ڟo8zyȗsg< _o=~6Zs1z~.7ܼ3u^N?^8OKik' <ݯI}Y7hʡ/<{zo7F##I(nco1o_k[r혟x'OCYxpSO|Cڥ6v2=Ǵk}4NݠCG}Io_vmow{<:j>dH/o\⮺N3S~w}:uQqOӟ<#WO7X{.;8Ob~g?O;[yL]ojtG7cwSzj>CxO~?6zV 7hŇyEWފwv_Rnu>-=7f}xxkI{=^>9^=Ɨ6?\JiކSg9hsig_$I{/y~OEog K|X\z=K|p<πe?>m;{.3ƝQzV||vC>yW~]: Yhuh/g~r~gp-̣gi筁:͛鏽ռۃ>O.w{u\c~4%/ãC:Y/<8})7)Mq'<˿[Oн?#4qp]ym<3>|]G>?z '8'OR^vƙy7y6u(iFu>Z^ϥv}u/yl؝IxexgrAsgnj}>+Gq4 4`CݯJ;yyOBqʡs~ЙqqbYgvw8f+w9w1_OwΏ8|o^|oky|ӧ{~w_mv'Vz8R?Ovc#ׯ<Oz9z]wJa<:~qVAxY#ǟ 8f^ 66lS.tm]8KGIɃO_xŏX9CghFf.kd}cg_M?8(y>"ޫvf>F|ByۼN>M8۽kaơݔÿ{ ~yzduqȋ3GhOs^J?Fvyssk97li~)xGyo>ytr{k6Ns8ןz ?j?}Y>_#|=m۟sLoS~ƭOlގ7g'+wMh,k +ow~q}ypwנM /w?|R8?]pWept_*rlڟOy?v|xdkMN^D]3ɯOoO)W0~u~ǟwʱ7ڏ}_<#yHng >v5}l|s7i#y/=Vqϼ|zx!=N7]gƇsnC9{gW;ֽySgry|%OəUowx9I{Y~/ qnv{&kwg>4>]I;Y Gpw~}-.52/=Y;q{ֿ~ztw:o\aڕoޤG'a (5r#聽tm'=W/>b|xOt/|-x/,snJ=PrS?y{Sk_^ssQo$?wq|P%/햿{|n7_{Ny{7y<>)g?i/ppK]ǁYO=읜W?]ާg؁/oe_;{䝔?yOGYP}yk}~i/:?+}򏚿Ǻ}2x)_zy^|μh\ <8iv}k Gq{}c<+Rܷ>/3'w0]Y^syy!?j/j>\ :~{Q/7?N,`ϒz#7Sk]Ywqr"pWg"5oހFiqֽ~}y9~?Zsq[yGZ$w^YO/{9M?_F7|>i+\zʷ!WS ;5O=W{n3>r@'Pf^1Nj|wOWON/gZϙGg}'99:k(яQoEwm>q=~S_7W f^Qy~'E ޛ_Z/WySNW8w QA~V}vx^Wwhn7!>8oxzo.ؾ {yZ^oz7_~cY۵Ji|2t)E}nzςzyV \}q6N= ~H <>=vh=Kk\z_AwzVBڅـ%i?7?Z>ƿA#i7ҏ&>io]>{φog;Zf|^<Տ N̸2 ߝѣwxGN :ޫȻQ}c27/JgO>wgɿ+~ynl2W%+w{t!x[>o=qj}\s7rSiG7oSvt:R\ъGf̸ Fvɇ[o߸AcO9|L8O ^OG7z8!''N3m)ÿqj/{{myz<|e/SEg{WߦոڌUH{G8Ǽ̳p7摿m浺wx׼4~ /[}?ZZzݷ1zjy2?bck~oc>yԙM+hA/9ԯ߆|/x><^.pE/g?yռ6D{yK? n=zؓ=WY*p߾zQ؛Ӵy!;z<;k Vk㿻~ ^혿鏪+M=b{!}s)g_yҿz:OvM1[>mn_鮝ݫ<Y_ϵOvz 8'`?ڴJ^Jڧ_sz0~\/~|<ɳk^g=oy?MFRnokYsrw}7oOgXy54K( O^?k}]t߭G{J^5ϟ_~>L?v/'+~ã78 9w|߹IOzc_+ަ_ɳż׸ K}錻 {O*f܌=OF>[;~KWG rO=}>qgi^5Yڵ.øc}Cy_=~x>m3{Xguq 9[ȸ'7ki35'+~~G< y2N|)]~Oo>4$ߛ98orW;͛8.D'v*:M 'zS}=ziʟ[Fވ=u='z_ȃu̫q~g7t#{OwƗglW>/8ry'RGYρv_^zjQp\h%Oć޳js󃄾/}:<"|fs|=TO8))|vTRy^ y,fmqś~;^zqq;]˃W/r{6UaU=w¾0Q;2No^ |kO^觍KKhxz{x\yz=]銇KyF]\kq>ɕ+Og'zc3ys~v39Կ=ywz< ,;޴t ܕ[^vT4?[+7no?K}z{J~.|~|x+J˒q?|Nʣ'~xG4Woׂ׼0zlRUA[ϳ[yiL}ʏ;_X~~W=d{6N-'_ԯrqGgsnv?~8٩>͎S~Axʞ+qM=toT{3ߧk;g$qƑz |zz<;?W{ސs ݞ|=Z}*>/[s8C{4r1wƅCq'ѧxn;gwX}tɏ}lIi~׸ԯ=y+{xrkS>8zn!ZY~ =^-z9[Njt8yN{&ָ7tsyϥyލ|;anߡ|V\ƽs)g{{ZNwOzMqR>s>Ӟ8o_lz3=s{ʋ[}D^=HǣG;)N~.vL}.o? ^;W(S_9ʿO_Ŀ{{{{eO7g(C4ɓ<8Oݳ=yr~oI}nW?;1pGk{W#{~`֛qg^ߑz ]?K_M{?x=)G/Cꝧ+<ͯ>7oqyzn6鹻bἯ'nݟr =zB?>m}{~5Ѹ '<<V|MͣvӞ3׫t7?_]O[{?5~<'y?=űk' ][ĺG5vOn`'Oy8Os[?Wćg??~gލJ=W|HyV/?Sym;}qi?ywovO~w}6hیj~mڝ~7voz罐ʹih qzDJR޼7?8hct} ڡߤW}<__knG3<~a<[z|>vHrj^<w}u૝ϴk?Ѻ}n}Gy/ޝWԮt)GnzRn3z_Cxٞp|o}_: ~jToݵ\o]t{2.󑾿/S_>nqi׎{Zvmp=~5x1埅܏Z'ƥ|:D7jJuog׳cAǏՌIr<=\ _+~9\H+'~%g{ew73ˡ ܯߵz2χ?_K'zs?>p]_Oޟ=|+}'y|.?y!~'q=:yfCrXhڵ~/fCۻvnccoRZ~/CyCOYm%b~q>~_}&tMz0 KG~_:wtn// noy~G@y>B3N~kχ :/dr*~K^x}O|!_\ <_SG|?xo5_8M=舾eX7Ox>AgO8^b~/_п+c+Ky''ϡ>xҿu9|џ{.WBn=LO?i[K+OvDOϥ5|#C:3kAwI=z΋H}6O~W{=|s^~Jo @O֮dSܾ~ًo>ٸ3x!oj:dO .g/SS{㕎<;' ?qg?oy&\g}|&<o<3=r_߃GW?XK8襏x?FO'+z^f{˺ ]y$蕕sfב;&?Og2>[ ?;:|4ѯ唿#_zy+?p[>LӃ#iu.y^<=zڣǼ[^W~_oV/S6ۺJ?_Nǭߔȍ̀bWmO{/v L}_ \O<}\;:%sS8إ1p=|1?= |^O*. _+ov{|,ѳzeeC[v'#Y'Wõ{9["r|++__'?ѻu~ |"߫׬ӓ~y+W??rqx&W/;ȳ|\dOo7>rO.Gޙ:OŽzWʡ[Y_[~~-a_Wg #:‡軟 tr:zÕOZw 9K7^q|_B<)AѳE/Mr~ݔߌvͯ}gƇӥ_xO̻} ;|$Jo̘'|ٺ :{C<+wso ?c] c_ⅼL,~DK Eѳ$ЏY=*nn>A; ^geߵr }o'9Py)2?3+. 6oǼ^\ |2vuߓ]A4O>>\;(pv/xg?{\~g< v{5~{\f&^;]17oӮu` _FXǭϡWᅵ[Xc`syuW>n&Gj7߳oC2 %,_ X5L{_wrx>;!"q ̃vg~Hd[c{td$W?~}=C^?M}^a\GIE'q/ԯ8oGߴGOgsf~7o^fXƺ7}ɕyGvpFμY@Kf =yߤ穽ޯ/^w7qgD2|e^O?p}#{շS]Ş{os'עߴ."%tY7w*?ˋc^à7]8W7Wvg~}v-3/Ů_[|>9y{l[yOt|"ave^?d>u7;W??vO3Y/[r ;]t/M>ŏuUȇY#9Yg[Ǯ^]}~JkӔ_ݿwFS_Gܤwt o ÿ fgta/_M n_}/WuàG=z kv>Gǭ0OuniγOKgqX~_ UOg7қc=A'_::gwJFzP/qE!e7w>zi''ZO|?m2gwNlu@;g4e|Ч+#Yo~iq}k ~n<}מ]댜eoz9*A6cy~T/B<}_&؏C?˯NNkvuD>Dҧ;'/ǴOXJqBa˺vnż˚ƛo>q?"ٌC:媷kaW4.%탇ݸ!/ї_~ HOz }=}v"z1n>/[x <o+~BG|  ѷ8Y+Q|q+o̸x3qwОf?g|z1βG&3^>NA?loyc_X>}@+9yg]G_<181y^Muez_-ܼ}_ԏx<.SqC wy9?|3GOlBG/u}ݿ!|8أYo&ߝ0/r2_ ?'/zouulv?B?'e^ ?Ok^Iԫqk]hփ}[uc=| ^:^Hp|B\ }X~KoWz?|B}&F#p3Zz!sd'y4(o?jR޺O%^u8<.uz+7ɱW8yM?F?[t1#>-K|ε<z2C/z>Q]t|6Nʸ~nW~9}~sWrZ|WȤuG ӳkz6|۹ G c^syx̻{?pЃwۮ2/c_pYg2~;: >7 ymvŌ x^et_>gʉ'c+kݯO3ݰsf>\-}eghYOog~:MigxŴޓE؟soew_W Cqf7O}~-]tt)߭|9jso<֨/c:M U}<?~3ϯ ~3_# _-ߴg= 77/v;~2'kp '|vxcqͫw<2?79~q~zG_!u[uNM~g-=?g5 7~5=‡98~̼>ťXgo?:&o<gn ϗo1(}|';|B*q/9&k0z6SK~C/,zEK/d;J9ñIj/8wyWr>0>+oyoV/Cfuqλxc ;Ҏyp~y~ǰ^?AAO=93tl~Ыx Lzu ?nn|ґq#^ߠ;q RǗ |h jO2.vR?xCzL㳿%1_}OYO}Sw|X+`_y]?|C+n_ ?A|j}7CEz <ПW'xϠKsDuu`I5FDޝfXl?Ygy죒~e=Q>3qyX?7}}rչZvq\eaƋξov;G,q3wڿxUaЭѫvųw`v^;9xa~ɣg=qEFगeexg/}xyͺybpQNov:lTys;I}:5O~M>_#:'7|5oUʓ#_ sHEr_ _Yw|@%?})߅>9uɎGħм)o'YWw->/??/D_cGs@#]N_7L'N_Njklc'5CNMh>աn;%z4=%?q|e"}ʟ%ޟ?RJ|s7xcr;^Rvd޻y"'/mxs z㊳_&}]~D:?[7r9}Y; YW/#_O/دl>yOɳi3SyC/v}%n~wP?w57Ҿj> yXr-X5~+7ᇅWFNәg.?0=?Cc9k/5>'Boo/OLNXͻlAuu_Ӹ?9oIn>7/?}y=߅Էb|_^%f|m7OM_ CB)Gu|%㒟;~/B?hst_ɼ N:hۏ;zOy5M&<['s\9Ms*N_DqN?io7/ +ocG'_aw7}ֹv|3 Ao /#Oؼ]>:t2kmM_FY1.'"ߛ/'ASObO~9i~aYiTOR_>bҞw~s7&{#'wo&x{5]GŦ?îooث][֕#v,^A|~¢SWv7d޿h=տgo ϲ>1ܷg]t 旰g(pn3"_gbEu{oԁ??m?ub}m~s*[kk}B?'Vs2G1o|- uD?eqO~`  Qy~Q86{AD7~y-鰫IvG~rP|6h!K+=;3" /N.ٿ'W.{7{*^4K{ξ;qV?37~oڍ'5OQַ+A~Js42lgo˟< zɟ!s[?ݳe|=O^rR;}\tsi߸Џ(O0Jf}z40?eYGT;ϼ{zyU-wzq)O<>xY= cfr@{~' JNN6ygԺC~7027`flf|z/ѼNu?wc!3xl|Ig~׃c=5q_y/s*:wi]qW7E\xu[n_d4&l/u#7G/N{o)]|Ah?v777Oz=\$gQa>z?LwߍwRO#jv~os4^l Fr<3?BGN{ijw͗/}~f}ޫ`|~Q>)vVR}gGAi~:cf]֩}vtݼk_ y?|wߎc_yg~; >}o^|G'շv嚯)|giz_wz;ؾ&Fn[c _B~O ]<9 } h' ~8ty Yq8;齩+\{})kOyvޠ7'GkUIo?|??9=]]W}?y&=c݊ץ^5~<Ɵ3~2r\g|w1?9|G?++l>_ZKKs:{.ܞ]?'<=|Wz|/t?#XxOi/ώql޳ʡi||th֍q8KQ|ov~G's_W"W9Z?kA?fsOf\=/%&%Ofdk~\;T3=qS">v*ݽ~~gUx웛gíȫ}b[Y{xb'dު{-8^BAii/B'ﴃz//|z`אo<xn^{p7Eڷkeuw g__V{`?=a><9| w ҏ#s˺wo)7{>80z+k˟d?jG/|h+ =7?nU\3}799^̸*Zd?TzOX_gqxPSc_y8߂><&[^e~)xƏkWYWΣ;hRhi뽪18(G\ o7"}i{z?o>v'k_-lϤǹ~l:{`3 yw5:L_O{| Ddrŗ/>㴏şߵn Q>+>':{`١2HOwVGwv]O8{'^ͼ󗘿m=K^gԧwygm=˽?jO2.w୾~ޓj}x$/NƧ3|\AKcWˁpo繷+gΫ {.oʣ~YűN{>$\_U|23]DN>}^]ϴ_}۾;9wob=yϾ/~}ȓG;xg_,YfRu߄Oa/?3?zx޴G⟪^rt_#ϔo'ݟS{ާ7s*1y_v{"yc^|ϲ/~2e< |gA3Ƌ<эy&+Qk6Wӷ+`;ׂѕ}#pgotc~{WoG<|9x _&G6*c=<_ n~wkݼi%x轾$>nޠ+~#.*oWz5߭}@Gq?y>>'xw_|*_o'Ίq _3<9iyڬ/_Y{BwG5nA_~Yg_ԼM}3~N;{+=~%G*"]}xp=I~ApEڥ_@B[/{I^LOO@7I?c': oF=~Vz3}}] l|wrm!]_\_7%w~2O^[ͼS)gp1tm]Iz8#{8k>|gv=+O o?wEv>`מu߬kzq섃=/ON?a_/֏7x]^zn(%]=}s|[|O?K@o^zb7O!s6}څqǪn~vw|8~sMrR|F6^wYlzn ?m_~X>_dO C?)C/?|~g_RyR1y3יǧ?/\<: Oī5o!wz/x Q^r?__yz_=\yO?͗]|N ~v|;.O=G#zL{_y^=%{FAwxWtO|ϓܢg??z|</  <S_~.7͐Ã/ԿzŇ|ǿ{]þ09-2yL^K2.5S˺/zn~Ȟ'MqЃ9J?米F=~[߯[+zzLyr|Owo=_5:zԧ5O0ua}5 nI>87{~'9ʔcg G3zq Dع}=ռ7>ϞFyڟikv~ ~ֿ.+vu?LϚ#!xM2n8/1R>h9}~yCvzI^1Ġ#3w-Aq9siϏ|߰ϟn^</3Ͻ_%x'Mh7n|;Y/ͯ?3f%ޣ6Bz?'z${;JrMN|Ϙ+CҮyoOōgؕۯExo^/!sON = >W$3}y>4r1pM}?=n;W#zG@᏿#:;i<Od|C7p-~i ߳W=g ·ѧg~#<艽o`}ًZq=K?'-Gě+_Nl)siOU*yoOq>3FQه3.-X+|A_s^yRçxthw[gžh+^|oi/~޸\O~~7=t)>Oo:h~qil=ӏizw_&f/ʋv%'9';M`k`}ޮ9;G,p>in>{~#r~g#nDyz5yM_bW;_`]ң/=VӼo͑ߍ_;魯|w%7ODwƿ;()q3z#E߽w<{o{A硝;?'_fw9{?8G{\.||ނ_ƁC_MD-~>5vt$g˽Ao"1 !y; ɴ+.9 z;ϑ6fЗW?O?aY8הv#K96dڡ7O]ѽ<1iu޻;=` fK+ ֓{o1s2r(y7]!|_% >L~o|X߶>S>7Aq>yBg][缿2N'Cd7fƬtj 4d=tߴ>82vtshLy1[\?{]⁓"kgH}j?¯w2J !4o\mKķn/~/_>A'm}k>oOK j,LJGhR/w#.[G޿/+ :p<ޅr2擾 /l~w~~b_۔; 9ò3_W>Bϡ?>JNGUo?_睇?ޟwv<'z7}i s?:_׸ώ_~#cWGBA^g\ҳO]{M𼇤/`9rڵW/~|YϹ{Qꉓukç3t\=I?og|7-#pзռ~{>uK^LK#i?/|?j!/A8z\Фq3p.̓gdK=D\WϫgRnԛg~[iza}Oo?A7 x.6.yO8/=noiޑtބr~ZKdw7Nçh]G?`}ȩ,/O?ryQֻ8Z''n/ =)^!y^);..uW?^y~, M s<+3:FA3nzby5_iG}~J0r }_e{Zz Jy~u~An\|K4otܾ3oi}{$xş7ѩ~d~{^-sAYO{PGƧ ~p9{wrJy?~ʼU|GWs+z @mNy9A _<[F5Ϡ+=oqg۞dzO8?^Yg3/K:?;=<'rzOXG+֣~?+.?ϧs{|Q^>E|2|_?Ad7>6M;z0|)/>i!p'J}{sn>o;o_ ūWweodjܳS߀^OF3{R 9 ROnj>MM{2;ϼ|87:u~nOK;[KٍNϛ;RN ?Xn?!\w8iۼC_!ҿ<3n_^D_wWp}l)ZƇ2>0>^vonX^ֳy◲?7zo>Wt8cDu^"!)EM:v47t(R@ DH= 9~>G ^˘6Y_U'ee̕yzsc#DupkOG)>ɇ_KOo>^ztuGoR<ҼQ077?Px?|ϕO*%gzp_Yɋu׿]O|ɷV>OsOz~^T|5%\|m(~}>h__\w=/}]_U|h~@˪>+y\wC.h?[*5~k4./ͨn{뎟:f{ݿ ||WG~Քoj'z<*zCzrKtܩP{Cy(H剪"ywrq*?o]]>Aߝ.Oh;^iMgw*_y|>C|OVh^RU:C?i_%N*}{+?~ʿ~ϓ ^GWW;|ר?~z^_x}^ͫiK;s<^1GqC~}W|8kTqwR=߬|zCZ+~~yCGFT>4o﫟*ϯpOϯv'q3_ch\S-W{oϭzVzu+睮_G~~yw{'|_7WߩtyUrzb\uP8Z]ꝗA+wxtywY-qזw?WSwz*V Gx<麌')s@yӼ5N4[x5?~_sx߫l>Y=uS>5>{r"?y'wy.};'z+(?<ʧ\/캕5^|U9S8bϫ|S9^-*_w}^j筋/㑮c~僷/^<Gy*]={KʧsG!ˮ;WCTɻ2JWcnuuOg{Wt9zgΏ>w #o'܈o_?yv¸ut}:W~Z>u2n^b=_v_U/^wv^゙{ GMïy+Onh.)j,*^k=v>cO+ʿxwT=O7OGq{zM-^?~qxgxwzwOˇ?פv}|^\K/^e;xiAS [e~E'xū˭~Tzv92>wzݿo[_͉SoN;8煅}ﯞ9VUy%O/W}sO]ߝ?}_W(>=|QT9k߼zj_#q74.W,~'>.QZyGk[,+=j>ORuX?}~ޣSr⇮Gҫs|:ʁ{!~}>>`ϧ뽥_CZ߯],ݗ~^D~Rx7>8͸z^||_7*nOu_?sa/}i[~jE|.>xnﯞ.ozg@ëRj|kY`13O}՟2V:ݏy3ꏷ>~ Gx{;%u}mg ~y_X~n'}Nk&w<}7uY+?yQ^Pqu/ѫx~^U59?Ϟ}ϽQz=s_tq`gϿu]]<=?u}3o~r_zK.qljzίi?\tRvq5xx}^[g8:}>lK~]V[9ynwzNoo81GP·7b=??jOzouU>_r'_ܟ7?⚯_e[㩯R#yb!ݿqT=m~'~X>->|G皧r%{^;vx~Y{^\y񌻼e}׿C[?KTUR9z;R}~L9e?~e>W?>_O{Ƴ GuKCK˷eǍ^>X։ܨQ\޺>_G޿}F>W]n}{Kj?U_Q8zΥR:(=_]O9ă;<>Բֱ~/}%y|^F8|1^)Ү?uXABu|Z7oXvt_ͻ-wZ|}.w|jסr.'BuJW?i[/17Ny˿^ve>\>(v齥{VK:,{}gK_u)}s}xQ/T9e/_?Ow? ǮcS|տ#^kxmׯt-ܲ[_W>I^O,Yg_웩p<᪜[ʲ+ݔO(N__m8ߧ^_r)J']ʹ3˾r*;oK^|u+]_7~^|U?پ-}v9|R:~cu|5_^y?~]Y}=ߏyw췤x+}.g~{}}n,oݯ7z:_=uJ+Ϸ7tOϓ[><˳'?C[X=Qso֩>,}ZxVc3˷>/ߟz;J⵬W>R|*:+>}f%e]-|ޝoz^?slsm@f/X-qP>>j}gw/ċ>gu(]>ϻzTy|/ث~_k>/I~u[}'*yFW?|>o79߾_s9s/vTYIe%_֧[x7uz}X9u.}l&]}W\n>^[˃myit_՗eMR_?Ƿqtqe]qhKǥ?z:7ޟÚ/}d^[;^Ϳ'8Xz/x|XKW>s}-|tz:Tܗze_&ʍ?ǟUzje_=WϽ u{_||[=Ny+9hJ^<|e~Wsc^+xw8,qps__~{_ntkK'KǞTT/m~#xǞOX瞉U˪̣}ݮnGJO )%姕gi|BwxT>k<Wwdz:\P{}'Q:)X:G9~r]Gc ^gp\t[}5߫s}:?y:ϧ>Rz*eަ9-~}^T.۫#ڗ?qOU^~||v c_g}}ko~-~,>N2Oo\_nX~χvGOR?F{?z(yɞ>6t?ʸuW3^9_27_yݯ_'q=)=ţ,ԽG;=>*W ߟܹL{]{m7VNןw}>Zhһ꡵Vn~ˣ~\kk)OƗޟyN]^UV/]w.]~o^V=t]O<N7_tp(_);~v>]e棥S^yо/xe[K__w7z%o]zʙWp+oNz~Y|~'ןϣW~S>u9_RV=y~6g~{1sخg7{?d \I_۟[W;^_O/^n-~*T|[8^W |J?\˽evK7|m J_ʏ{qgO\X: wVr]uvx*/+/?1nv:ޯYxt^_dcy]gv}ʯWzqusj}n74/u*JZ9Il=vdןןӗ~W=Py07Džz}ܨ%㜏U>su;g//j~~)?oǗ|o~.󟊗]2cu{|3js\k羃?ޢ}d<ρ|}J[g)\G]>W9',o|-8qS]·|~5.v/y;^ʓso'|!2N8tqǛV|=kxQ^>t>o׭.V:qpT*'7_7Ǐ<\7}_ヾZCEfʽD-;cWvV;ǹ_xzw^[?V|{[ʻ~Ǐ-]{Posv{d=);~i+>s׼/?t~ӝߪ?G,\PxõQ:~ǩ~/T}kFHҮ/;?P~~U(_s|O?,]o<_o^T?~?Gg>W9q[˯>UV^{J7e?ݿuzvz˾aJG+O?YZ}^NA/勾o}Wie帧#Ke^Qm19Ǐ<AfoV:UNW珕ߴ}\=5y&wځ*N7ONjz>T=˖O}^+oYp:rx{J_V}}fU}ׅ(s ϟ8WqO6^cVVo{>>9w3_/6~:.?JsW]^@!|ߍeVS8܉y8;ש8±x\*߷9߫~W>/G+,[oqXsΊˊ}\}ٿNx*W=e#K硕+W|Y]ՇO-|>o/n<;>+ݞ[q#}O[x>.GƏ7v<;}m~Yzg{~w;csO~oϳfrE_WU}˛Ѷ8DϳXz&ߟ*?>gY|_^OO(?8jq|K_Ky=3^.{]~3\Q(~ evtp{Jq]Nߧ;~VoV{~͇or}Ϸ5/Oz7_u<}?xrn>?>/_+߾}uEqx5~?#~Gߧqm^e|ZpoV}{?ۻ? V|׳83?:ߧY߯,V?/ }'<=?}?4/}y`hYhןeqHɛqfT^uO]?ߩޯ^/}|Gzpz\}͋\N}]R?x{.})tYxϻ}_dz~CsO}s:޷9[`x㝎^}œ?玹{}z}˽|GMy9ʾF{㓏#}]w(?UϽ_<'ʓ?_OpuJG+>/7.㿖_X>*:kNWquxzv鶌{i߷}=U?ƸYI*=3ޯqoXK>9}{>AvnOt^p{g +~V8e^_}xiT< 離\t9K=}H}->o+J'O`oU/o]^UNʏϿ-sr=?f~E~~)iig^ǫ˽wG oy7ᵯWC3S}[~y}]Fnt?Tz{/-]Ogu~Wg>?:s{{2jy?oT\RzZx>G1~E>~\Ox^Y>Jw;GʥO]֓),<Gߏ?I{-}y<>/G{{uLq2j墟ۡ:y.,Z/>^螏7wr~z~V_|/nt/˟r㷽uٯ#?4uV}}>_oӽ<׸`ozݐvۿC s_|_<J N1ߧԞcOK;k>Qw=iW1^qڷ}V[{->_(^O7ϙ},?Z}qyGVz V/:Z{.¸)>AvW{>㜚^,.x{׼)X5v̟㮽9~L/QGi_ǥ[w}NzuE=eGxQ~ѯ֍/Y}\~|>}zJ|Gv}}l~IJ߃kYZ/G?qܟ~ϻydˣϭg)hw>OeÊJGS<#<_A]tgYa='ΫWe\g3,~_pkz9?u{j轕W||] -{˻9Py^ϔgk._>ߵTZ~Y}㜗eݣq%}3[z9S|}-/M-\[i\պP#eg}=~?:,(ejyri ^~ݟGV=v~!-Ps |_y|O㇇ގyz/C}?К>o~R~mW:T\5~Ω]U9?^6x[ʵWP9= ןcW{[˼nߺ;}*߿@^s|oӿꫯBOK{o囗,?~#˟e_RqʷR-ߝW*:C?YӟS:wƲ~˫(}}?1ܻ_~}}ϟr/ϱߟeg]W~WbC/r(^_V޿z8,<wZp/s.ݳ]ó~ȧeYX{}Xz.;w 3^}e|WuCzU*},^=_By齷\X9//߶B==|Nu:|KOs'}=W]f_\ֳY|>(ݭ8w]ߟ޿~/Z >_qp7_?j٫,?|'q]_oM{*_ߏ'}6_/<~-랕JoU~[:=esٗU_яµpU=`e;\o/<>x~fxٗԾƇ幑?o<:f}~rfj{V/||cw|}yz}-;=?gi><ݾ_$>6|?xz7f짢x[~˲ʅ?XtJw_v캗c)|sV<ګ}w|^ɲ.qX~Az>e<ʱ;9/_SC>oz~/ʯߧ-륕#vޞxSpji?gɮ]Wܯ~_pzYkpգSKﭼf87?^;_^.ڟt~Qܟ_qן+jx/s=~_|۞U}_`>[6->[CI^+MK*kZv{p ʍ-׽|e7R뾿|1ݓq7Kh,]}}+ПwGj4,^>GqN+{K'ǯYz:oKx-ϯ?9N}ϟg׳}|X|I+>~SP?rk̳YGq/s!;y&;} co7䜶zޛ:,eeo ^ɗ}s֮Uţ/Ѷg4_zx:ʏT}?w?@:YƷTܟ`C|<? zyLy:YX3^b}aXχ>\gcGC~6/S=m;9B_8?}<9w8?/ωtҡs8|~n±p}|,uxje^Izwtv?ŽfoOt>ޤx~q-뭭|-W.|Oͫra|z$ݎZyy=re_Wa7ίo wjg|xO~7t}},_z\ǹgy^sMKyW>&oNϯ疎>þ{V93|?O>??~}>x}>x}>x}>x}>x}>x}>x}֎>x}>x}>x}>x}>x}>x}>x}>x}>x}>x}>x}>;?ڿ;~ww~?_o߿Ư?ǿOq?OO~ɟ۟͟?wwWQo~_gO/?|{O?_?_?O/rgſl{c$~|?Jlc8u;/GW_muaDFtaDFtaDFvadFvadFvaTQFuaTQFuaTu[u[u[u[u[w{w{w{w{w{qtGqtGqtGqtGqtGqvgqvgqvgqvgqvgquWquWquWquWquǗ_Ο3Ϝ?k},ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa>,ه%dÒ}XKa1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒcXr Ka1,9%ǰÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa9,9%ÒsXrKa5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װ\ÒkXr Ka5,%װj|e?w߅7>>>>> 7n @p 7n"Dp&M7n!Bp -[n!Bp7! nwCpw#wG;pw{ @=p{ D'=pO{"D½p/{! ^BzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW^=xzW* * * * * * * * * * * * * * * * * * * * * * * * * *J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J*J * * * * * * * * * * * * * * * * * * * * * * * * *j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6j6jvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvjvNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.................................................~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o=~{o='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO ='ߞ~{oO =^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/^ ~{o/6i8]E @訲7rh~)F[8?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷?|o÷~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?|~÷o?||{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{|{^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ^|{ŷ>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷>|÷O~v??,hexbin/man/0000755000176200001440000000000013775713071012315 5ustar liggesusershexbin/man/pushHexport.Rd0000644000176200001440000000161013171627112015121 0ustar liggesusers\name{pushHexport} \alias{pushHexport} \title{Push a Hexagon Viewport ("hexVP")} \description{ Push a Hexagon Viewport (\code{"hexVP"}, see \link{hexVP-class}) on to the tree of (grid) viewports, calling \code{\link[grid:viewports]{pushViewport}}. } \usage{ pushHexport(hvp, clip = "off") } \arguments{ \item{hvp}{a hexagon viewport, i.e., an object of class \code{"hexVP"}, see \link{hexVP-class}, typically produced by \code{\link{hexViewport}(..)}.} \item{clip}{which viewport to push, either 'on' or 'off' are the allowed arguments, see details.} } \seealso{the underlying \code{\link[grid:viewports]{pushViewport}} from the \pkg{grid} package. } \details{ A hexagon viewport (\code{"hexVP"}) object has slots for two replicate viewports one with clipping turned on and one with clipping off. This allows toggling the clipping option. } %\examples{ %} \keyword{dplot} hexbin/man/plotMAhex.Rd0000644000176200001440000001456113171627112014502 0ustar liggesusers\name{plotMAhex} \alias{plotMAhex} \title{MA-plot using hexagon bins} \description{ Creates an MA-plot using hexagons with color/glyph coding for control spots. } \usage{ plotMAhex(MA, array = 1, xlab = "A", ylab = "M", main = colnames(MA)[array], xlim = NULL, ylim = NULL, status = NULL, values, pch, col, cex, nbin = 40, zero.weights = FALSE, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 2, maxcnt = NULL, trans = NULL, inv = NULL, colorcut = NULL, border = NULL, density = NULL, pen = NULL, colramp = function(n) { LinGray(n, beg = 90, end = 15) }, newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), verbose = getOption("verbose")) } \arguments{ \item{MA}{an \code{RGList}, \code{MAList} or \code{MArrayLM} object, or any list with components \code{M} containing log-ratios and \code{A} containing average intensities. Alternatively a \code{matrix}, \code{Affybatch} or \code{ExpressionSet} object.} \item{array}{integer giving the array to be plotted. Corresponds to columns of \code{M} and \code{A}.} \item{xlab, ylab, main}{character strings giving label for x-axis, y-axis or main tile of the plot.} \item{xlim, ylim}{numeric vectors of length 2 giving limits for x-axis (or y-axis respectively), defaulting to min and max of the data.} \item{status}{character vector giving the control status of each spot on the array, of same length as the number of rows of \code{MA$M}. If omitted, all points are plotted in the default color, symbol and size.} \item{values}{character vector giving values of \code{status} to be highlighted on the plot. Defaults to unique values of \code{status}. Ignored if there is no \code{status} vector.} \item{pch}{vector or list of plotting characters. Default to integer code 16. Ignored is there is no \code{status} vector.} \item{col}{numeric or character vector of colors, of the same length as \code{values}. Defaults to \code{1:length(values)}. Ignored if there is no \code{status} vector.} \item{cex}{numeric vector of plot symbol expansions, of the the same length as \code{values}. Defaults to 0.2 for the most common status value and 1 for the others. Ignored if there is no \code{status} vector.} \item{nbin}{ Number of bins } %% << FIXME \item{zero.weights}{logical, should spots with zero or negative weights be plotted?} \item{style}{string specifying the style of hexagon plot, see \code{\link{grid.hexagons}} for the possibilities.} \item{legend}{numeric width of the legend in inches of \code{FALSE}. In the latter case, or when \code{0}, no legend is not produced.} \item{lcex}{characters expansion size for the text in the legend.} \item{minarea}{fraction of cell area for the lowest count.} \item{maxarea}{fraction of the cell area for the largest count.} \item{mincnt}{cells with fewer counts are ignored.} \item{maxcnt}{cells with more counts are ignored.} \item{trans}{\code{\link{function}} specifying a transformation for the counts such as \code{sqrt}.} \item{inv}{the inverse transformation of \code{trans}.} \item{colorcut}{vector of values covering [0, 1] that determine hexagon color class boundaries and hexagon legend size boundaries. Alternatively, an integer (\code{<= maxcnt}) specifying the \emph{number} of equispaced colorcut values in [0,1].} \item{border, density, pen}{color for polygon borders and filling of each hexagon drawn, passed to \code{\link{grid.hexagons}}.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{newpage}{should a new page start?} \item{type, xaxt, yaxt}{strings to be used (when set to \code{"n"}) for suppressing the plotting of hexagon symbols, or the x- or y-axis, respectively.} \item{verbose}{logical indicating if some diagnostic output should happen.} } \details{ An MA-plot is a plot of log-intensity ratios (M-values) versus log-intensity averages (A-values). If \code{MA} is an \code{RGList} or \code{MAList} then this function produces an ordinary within-array MA-plot. If \code{MA} is an \code{MArrayLM} object, then the plot is an fitted model MA-plot in which the estimated coefficient is on the y-axis and the average A-value is on the x-axis. If \code{MA} is a \code{matrix} or \code{ExpressionSet} object, then this function produces a between-array MA-plot. In this case the A-values in the plot are the average log-intensities across the arrays and the M-values are the deviations of the log-intensities for the specified array from the average. If there are more than five arrays, then the average is computed robustly using medians. With five or fewer arrays, it is computed by means. The \code{status} vector is intended to specify the control status of each spot, for example "gene", "ratio control", "house keeping gene", "buffer" and so on. The vector is usually computed using the function \code{\link[limma]{controlStatus}} from package \pkg{limma} and a spot-types file. However the function may be used to highlight any subset of spots. The arguments \code{values}, \code{pch}, \code{col} and \code{cex} can be included as attributes to \code{status} instead of being passed as arguments to \code{plotMA}. See \code{\link[graphics]{points}} for possible values for \code{pch}, \code{col} and \code{cex}. } \value{ A plot is created on the current graphics device. and a list with the following items is returned invisibly: \item{plot.vp}{the \code{\link{hexViewport}} constructed and used.} \item{legend.vp}{if a legend has been produced, its \code{\link[grid]{viewport}}.} \item{hbin}{a \code{hexbin} object built with A as the x coordinate and M as the y coordinate.} } \references{See \url{http://www.statsci.org/micrarra/refs/maplots.html}} \author{Nicholas Lewin-Koh, adapted from code by Gordon Smyth} \seealso{\code{\link[limma:plotma]{plotMA}} from package \pkg{limma}, and \code{\link{gplot.hexbin}}. } \examples{ if(require(marray)){ %% for the data only --> data(swirl, package="marray") data(swirl) hb <- plotMAhex(swirl[,1],newpage=FALSE, main = "M vs A plot with hexagons", legend=0) hexVP.abline(hb$plot.vp,h=0,col=gray(.6)) hexMA.loess(hb) } } \keyword{hplot} hexbin/man/colramp.Rd0000644000176200001440000000332513171627112014232 0ustar liggesusers\name{ColorRamps} \title{Color Ramps on Perceptually Linear Scales} \alias{ColorRamps} \alias{LinGray} \alias{BTC} \alias{BTY} \alias{LinOCS} \alias{heat.ob} \alias{magent} \alias{plinrain} \description{ Functions for returning colors on perceptually linear scales, where steps correspond to \sQuote{just detectable differences}. } \usage{ LinGray (n, beg=1, end=92) BTC (n, beg=1, end=256) LinOCS (n, beg=1, end=256) heat.ob (n, beg=1, end=256) magent (n, beg=1, end=256) plinrain(n, beg=1, end=256) } \arguments{ \item{n}{number of colors to return from the ramp} \item{beg}{begining of ramp, integer from 1-255} \item{end}{end of ramp, integer from 1-255} } \value{ returns an array of colors } \details{ Several precalulated color ramps, that are on a perceptually linear color scale. A perceptually linear color scale is a scale where each jump corresponds to a \dQuote{just detectable difference} in color and the scale is percieved as linear by the human eye (emprically determined). When using the ramps, if \code{beg} is less than \code{end} the ramp will be reversed. } \references{ Haim Levkowitz (1997) \emph{Color Theory and Modeling for Computer Graphics, Visualization, and Multimedia Applications}. Kluwer Academic Publishers, Boston/London/Dordrecht. \url{http://www.cs.uml.edu/~haim/ColorCenter/} } \seealso{ \code{\link[grDevices:palettes]{rainbow}}, \code{\link[grDevices:palettes]{terrain.colors}}, \code{\link[grDevices]{rgb}}, \code{\link[grDevices]{hsv}} } \examples{ h <- hexbin(rnorm(10000),rnorm(10000)) plot(h, colramp= BTY) ## looks better if you shave the tails: plot(h, colramp= function(n){LinOCS(n,beg=15,end=225)}) } \author{Nicholas Lewin-Koh} \keyword{color} hexbin/man/hexVP.abline.Rd0000644000176200001440000000303613171627112015057 0ustar liggesusers\name{hexVP.abline} \alias{hexVP.abline} \title{Add a Straight Line to a HexPlot} \description{ This function adds one or more straight lines through the current plot; it is the hexbin version of \code{\link[graphics]{abline}()}. } \usage{ hexVP.abline(hvp, a = NULL, b = NULL, h = numeric(0), v = numeric(0), col = "black", lty = 1, lwd = 2, \dots) } \arguments{ \item{hvp}{A hexViewport object that is currently on the active device} \item{a,b}{the intercept and slope or if \code{b} is \code{NULL}, an \code{lm} object or a vector of length 2 with \code{c(intercept,slope)}} \item{h}{the y-value for a horizontal line.} \item{v}{the x-value for a vertical line.} \item{col, lty, lwd}{line color, type and width.} \item{\dots}{further graphical parameters.} } \details{ The first form specifies the line in intercept/slope form (alternatively \code{a} can be specified on its own and is taken to contain the slope and intercept in vector form). The \code{h=} and \code{v=} forms draw horizontal and vertical lines at the specified coordinates. The \code{coef} form specifies the line by a vector containing the slope and intercept. \code{lm} is a regression object which contains \code{reg$coef}. If it is of length 1 then the value is taken to be the slope of a line through the origin, otherwise, the first 2 values are taken to be the intercept and slope. } \author{Nicholas Lewin-Koh} \seealso{\code{\link{gplot.hexbin}}, \code{\link{hexViewport}}, \code{\link{hexMA.loess}} } \keyword{aplot} hexbin/man/smooth.hexbin.Rd0000644000176200001440000000611413171627112015361 0ustar liggesusers\name{smooth.hexbin} \alias{smooth.hexbin} \alias{smoothbin-class} \title{Hexagon Bin Smoothing} \description{ Given a \code{"hexbin"} (hexagon bin) object, compute a discrete kernel smoother that covers seven cells, namely a center cell and its six neighbors. With two iterations the kernel effectively covers 1+6+12=19 cells. } \usage{ smooth.hexbin(bin, wts=c(48,4,1)) } \arguments{ \item{bin}{object of class \code{"hexbin"}, typically resulting from \code{\link{hexbin}()} or \code{\link{erode,hexbin-method}}.} \item{wts}{numeric vector of length 3 for relative weights of the center, the six neighbor cells, and twelve second neighbors.} } \value{ an object of class \code{"smoothbin"}, extending class \code{"hexbin"}, see \code{\link{hexbin}}. The object includes the additional slot \code{wts}. } \references{see \code{\link{grid.hexagons}} and \code{\link{hexbin}}.} \details{ This discrete kernel smoother uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of previous cell counts and weights. The weights are \tabular{ll}{ 1 center cell, \tab weight = wts[1]\cr 6 immediate neighbors\tab weight = wts[2]\cr 12 second neighbors \tab weight =wts[3]\cr } If a cell, its immediate and second neighbors all have a value of \code{max(cnt)}, the new maximum count would be \code{max(cnt)*sum(wts)}. It is possible for the counts to overflow. The domain for cells with positive counts increases. The hexbin slots \code{xbins}, \code{xbnds}, \code{ybnds}, and \code{dimen} all reflect this increase. Note that usually \code{dimen[2] = xbins+1}. The intent was to provide a fast, iterated, immediate neighbor smoother. However, the current hexbin plotting routines only support shifting even numbered rows to the right. Future work can (1) add a shift indicator to hexbin objects that indicates left or right shifting.\cr (2) generalize plot.hexbin() and hexagons()\cr (3) provide an iterated kernel.\cr With \code{wts[3]=0}, the smoother only uses the immediate neighbors. With a shift indicator the domain could increase by 2 rows (one bottom and on top) and 2 columns (one left and one right). However the current implementation increases the domain by 4 rows and 4 columns, thus reducing plotting resolution. } \seealso{ \code{\link{hexbin}}, \code{\link{erode.hexbin}}, %MISSING \code{\link{hthin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, %\code{\link{hdiffplot}}, \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \examples{ x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) # show the smooth counts in gray level smbin <- smooth.hexbin(bin) plot(smbin, main = "smooth.hexbin(.)") # Compare the smooth and the origin smbin1 <- smbin smbin1@count <- as.integer(ceiling(smbin@count/sum(smbin@wts))) plot(smbin1) smbin2 <- smooth.hexbin(bin,wts=c(1,0,0)) # expand the domain for comparability plot(smbin2) } \keyword{misc} hexbin/man/hexViewport.Rd0000644000176200001440000000355513171627112015126 0ustar liggesusers\name{hexViewport} \alias{hexViewport} \title{Compute a Grid Viewport for Hexagon / Hexbin Graphics} \description{ Builds a \code{grid} viewport for hexagon or \code{\link{hexbin}} graphics. This builds on the concepts of the \pkg{grid} package, see \code{\link[grid]{viewport}}. } \usage{% see ../R/hexViewport.R hexViewport(x, offset = unit(0,"inches"), mar = NULL, xbnds = NULL, ybnds = NULL, newpage = FALSE, clip = "off", vp.name = NULL) } \arguments{ \item{x}{a \code{\link{hexbin}} object.} \item{offset}{a \code{\link[grid]{unit}} object.} \item{mar}{margins as \code{\link[grid]{unit}}s, of length 4 or 1.} \item{xbnds, ybnds}{bounds for x- and y- plotting range; these default to the corresponding slots of \code{x}.} \item{newpage}{logical indicating if a new graphics page should be openend, i.e., \code{\link[grid]{grid.newpage}()}.} \item{clip}{simply passed to \code{\link[grid]{viewport}()}.} \item{vp.name}{name of viewport; defaults to random name.} } \value{ an S4 object of class \code{"hexVP"}, see \link{hexVP-class} for more, with its main slot \code{hexVp} a \code{\link[grid]{viewport}} for grid graphics. } \seealso{\code{\link[grid]{viewport}} and the main \emph{\dQuote{handlers}} \code{\link{pushHexport}} and \code{\link[grid:viewports]{popViewport}}; further \code{\link{gplot.hexbin}} and \code{\link{hboxplot}} which build on \code{hexViewport}. } \examples{ set.seed(131) x <- rnorm(7777) y <- rt (7777, df=3) ## lower resolution binning and overplotting with counts bin <- hexbin(x,y,xbins=25) P <- plot(bin) xy <- hcell2xy(bin) pushHexport(P$plot.vp) i <- bin@count <= 3 library("grid") grid.text(as.character(bin@count[i]), xy$x[i], xy$y[i], default.units = "native") grid.points(x[1:20],y[1:20]) # to show some points rather than counts popViewport() } \keyword{hplot}% ? \keyword{aplot} hexbin/man/erode.hexbin.Rd0000644000176200001440000000522113171627112015144 0ustar liggesusers\name{erode.hexbin} \alias{erode} \alias{erode.hexbin} \alias{erode,hexbin-method} \alias{erodebin-class} \title{Erosion of a Hexagon Count Image} \description{ This erosion algorithm removes counts from hexagon cells at a rate proportional to the cells' exposed surface area. When a cell becomes empty, algorithm removes the emptied cell and notes the removal order. Cell removal increases the exposure of any neighboring cells. The last cell removed is a type of bivariate median. } \usage{ erode(hbin, cdfcut = 0.5) erode.hexbin(hbin, cdfcut = 0.5) } \arguments{ \item{hbin}{an object of class \code{\link{hexbin}}.} \item{cdfcut}{number in (0,1) indicating the confidence level for the limits.} } \value{ An \code{"erodebin"} object (with all the slots from \code{hbin}) and additionally with high count cells and a component \code{erode} that gives the erosion order. } \details{ The algorithm extracts high count cells with containing a given fraction (cdfcut) of the total counts. The algorithm extracts all cells if cdfcut=0. The algorithm performs gray-level erosion on the extracted cells. Each erosion cycle removes counts from cells. The counts removed for each cell are a multiple of the cell's exposed-face count. The algorithm choses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contain an erosion number for each cell. The value of erode is 6*erosion\_cycle\_ at\_ cell\_ removal - cell\_deficit\_at\_removal Cells with low values are eroded first. The cell with the highest erosion number is a candidate bivariate median. A few ties in erode are common. } \seealso{ \code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{hcell2xy}}, %%FIXME\code{\link{hcell}}, %% \code{\link{hboxplot}}, \code{\link{hdiffplot}}, %% \code{\link{hmatplot}}, \code{\link{gplot.hexbin}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}} } \examples{ set.seed(153) x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) smbin <- smooth.hexbin(bin) erodebin <- erode.hexbin(smbin, cdfcut=.5) plot(erodebin) ## bivariate boxplot hboxplot(erodebin, main = "hboxplot(erodebin)") %% MM: This looks wrong -- both the graphic and the logic in "par" here : # show erosion order plot(bin,style= "lat", minarea=1, maxarea=1, legend=FALSE, border=gray(.7)) %% FIXME: {compare with example in "hexbin0"} grid.hexagons(erodebin,style= "lat", minarea=1, maxarea=1,pen="green") xy <- hcell2xy(erodebin) library("grid") grid.text(lab = as.character(erodebin@erode), xy$x, xy$y, gp = gpar(col="white", cex=0.65)) } \keyword{hplot} hexbin/man/hboxplot.Rd0000644000176200001440000000660213171627112014435 0ustar liggesusers\name{hboxplot} \alias{hboxplot} \title{2-D Generalization of Boxplot} \description{ If \code{bin} is an \emph{eroded} \code{\link{hexbin}} object, i.e., an \code{erodebin} object, \code{hboxplot()} plots the high counts cells selected by \code{\link{erode}()}. By default, the high counts cells contain 50 percent of the counts so analagous to the interquartile \dQuote{range}. The function distinguishes the last cells eroded using color. These cells correspond to one definition of the bivariate median. %% FIXME ^^ (bad style, content +- ok) } \usage{ hboxplot(bin, xbnds = NULL, ybnds = NULL, density, border = c(0, grey(0.7)), pen = c(2, 3), unzoom = 1.1, clip ="off", reshape = FALSE, xlab = NULL, ylab = NULL, main = "") } \arguments{ \item{bin}{an object of class \code{\link{hexbin}}.} \item{xbnds,ybnds}{global x- and y-axis plotting limits for multiple plots.} \item{density, border}{arguments for \code{\link{polygon}()} each of length two, the first for the median, the second for the other cells.} \item{pen}{colors (\dQuote{pen numbers}) for \code{polygon()}.} \item{unzoom}{plot limit expansion factor when \code{xbnds} is missing.} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{reshape}{logical value to reshape the plot although \code{xbnds} and \code{ybnds} are present.} \item{xlab, ylab, main}{x- and y- axis labels and main title} } \value{ invisibly, the \code{\link{hexViewport}()} used internally. Used to add to the plot afterwards. } \references{ see in \code{\link{grid.hexagons}}.} \details{ The \code{density}, \code{border}, and \code{pen} arguments correspond to the \code{\link{polygon}} function calls for plotting two types of cells. The cell types, pen numbers and suggested colors are\cr \tabular{lll}{ TYPE \tab PEN \tab COLOR \cr cells of bin \tab 2 \tab light gray \cr last eroded cells of bin (median cells)\tab 1 \tab black \cr } The erode components of the hexbin objects must be present for the medians cells to plot. When \code{xbnds} is missing or \code{reshape} is true, the plot changes graphics parameters and resets them. When \code{xbnds} is missing the function also zooms in based on the available data to provide increased resolution. The zoom used the hexagon cell centers. The unzoom argument backs off a bit so the whole hexagon will fit in the plot. \code{Hboxplot()} is used as a stand alone function, for producing separate legends .....%%FIXME for \code{\link{hmatplot}()} and for panels in %% \code{\link{hmatplot}()}. } \seealso{ \code{\link{hexbin}}, \code{\link{erode}}, %\code{\link{smooth.hexbin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, % \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}} } \examples{ \dontshow{set.seed(753)} ## boxplot of smoothed counts x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) erodebin <- erode(smooth.hexbin(bin)) hboxplot(erodebin) hboxplot(erodebin, density = c(32,7), border = c(2,4)) hp <- hboxplot(erodebin, density = c(-1,17), main = "hboxplot(erode*(smooth*(.)))") pushHexport(hp) library("grid") grid.points(x[1:10], y[1:10])# just non-sense to show the principle popViewport() } \keyword{hplot} hexbin/man/hexMA.loess.Rd0000644000176200001440000000304513775713071014734 0ustar liggesusers\name{hexMA.loess} \alias{hexVP.loess} \alias{hexMA.loess} \title{Add Loess Fit to Hexplot } \description{ Fit a loess line using the hexagon centers of mass as the x and y coordinates and the cell counts as weights. } \usage{ hexMA.loess(pMA, span = 0.4, col = "red", n = 200, ...) hexVP.loess(hbin, hvp = NULL, span = 0.4, col = "red", n = 200, ...) } \arguments{ \item{hbin}{an object of class \code{hexbin}, see \code{\link{hexbin}}.} \item{hvp}{A \code{hexViewport} object.} \item{pMA}{the list returned by \code{\link{plotMAhex}}.} \item{span}{the parameter alpha which controls the degree of smoothing.} \item{col}{line color for the loess fit.} \item{n}{number of points at which the fit should be evaluated.} \item{...}{Additional graphical parameter settings for the \code{loess} line fit; see \code{\link[grid]{gpar}}.}} \value{ Returns invisibly the object associated with the loess fit. } \author{Nicholas Lewin-Koh } \seealso{ \code{\link{hexVP.abline}}, \code{\link{plotMAhex}}, \code{\link{gplot.hexbin}}, \code{\link{hexViewport}}; \code{\link{loess}} } \examples{ if(require(marray)){ data(swirl) %% the following had 'newpage = FALSE, ' -- why ?? hb <- plotMAhex(swirl[,1], main = "M vs A plot with hexagons", legend=0) hexVP.abline(hb$plot, h=0, col= gray(.6)) hexMA.loess(hb) } dat <- data.frame(x=rnorm(1000), y=rnorm(1000)) bin <- hexbin(dat$x, dat$y) hb <- plot(bin) hexVP.loess(bin, hvp = hb$plot.vp, span = 0.4, n = 200, col = "blue", lwd = 3, lty = "dashed") } \keyword{aplot} hexbin/man/list2hexList.Rd0000644000176200001440000000066513171627112015177 0ustar liggesusers\name{list2hexList} \alias{list2hexList} \title{Convert list to hexList} \description{ Converts a list of hexbin objects with same xbnds, ybnds, shape and xbins to a \code{\link{hexList}} object. } \usage{ list2hexList(binlst) } \arguments{ \item{binlst}{A list of hexbin objects} } \value{ a \code{\link{hexList}} object } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hexList}},\code{\link{hdiffplot}} } \keyword{misc} hexbin/man/hexbinplot.Rd0000644000176200001440000002153413171627112014753 0ustar liggesusers\name{hexbinplot} \alias{hexbinplot} \alias{hexbinplot.formula} \alias{panel.hexbinplot} \alias{prepanel.hexbinplot} \alias{hexlegendGrob} \title{Trellis Hexbin Displays} \description{ Display of hexagonally binned data, as implemented in the \code{hexbin} packge, under the Trellis framework, with associated utilities. \code{hexbinplot} is the high level generic function, with the \code{"formula"} method doing the actual work. \code{prepanel.hexbinplot} and \code{panel.hexbinplot} are associated prepanel and panel functions. \code{hexlegendGrob} produces a suitable legend. } \usage{ hexbinplot(x, data, \dots) \method{hexbinplot}{formula}(x, data = NULL, prepanel = prepanel.hexbinplot, panel = panel.hexbinplot, groups = NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, \dots, maxcnt, legend = NULL, legend.width = TRUE, subset) prepanel.hexbinplot(x, y, type = character(0), \dots) panel.hexbinplot(x, y, ..., groups = NULL) hexlegendGrob(legend = 1.2, inner = legend / 5, cex.labels = 1, cex.title = 1.2, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, \dots, vp = NULL, draw = FALSE) } \arguments{ \item{x}{ For \code{hexbinplot}, the object on which method dispatch is carried out. For the \code{"formula"} methods, a formula describing the form of conditioning plot. Formulas that are valid for \code{xyplot} are acceptable. In \code{panel.hexbinplot}, the x variable. } \item{y}{ In \code{panel.hexbinplot}, the y variable. } \item{data}{For the \code{formula} method, a data frame containing values for any variables in the formula, as well as \code{groups} and \code{subset} if applicable (using \code{groups} currently causes an error with the default panel function). By default, the environment where the function was called from is used. } \item{minarea, maxarea, mincnt, maxcnt, trans, inv, colorcut, density, border, pen, colramp, style}{ see \code{\link[hexbin:gplot.hexbin]{gplot.hexbin}} } \item{prepanel, panel, aspect}{ See \code{\link[lattice]{xyplot}}. \code{aspect="fill"} is not allowed. The current default of \code{"xy"} may not always be the best choice, often \code{aspect=1} will be more reasonable. } \item{colorkey}{logical, whether a legend should be drawn. Currently a legend can be drawn only on the right. } \item{legend.width, legend}{ width of the legend in inches when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. The name \code{legend.width} is used to avoid conflict with the standard trellis argument \code{legend}. It is possible to specify additional legends using the \code{legend} or \code{key} arguments as long as they do not conflict with the hexbin legend (i.e., are not on the right). } \item{inner}{ Inner radius in inches of hexagons in the legend when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. } \item{cex.labels, cex.title}{ in the legend, multiplier for numeric labels and text annotation respectively } \item{type}{ character vector controlling additional augmentation of the display. A \code{"g"} in \code{type} adds a reference grid, \code{"r"} adds a regression line (y on x), \code{"smooth"} adds a loess smooth } \item{draw}{ logical, whether to draw the legend grob. Useful when \code{hexlegendGrob} is used separately } \item{vp}{ grid viewport to draw the legend in } \item{\dots}{ extra arguments, passed on as appropriate. Arguments to \code{\link[hexbin:gplot.hexbin]{gplot.hexbin}}, \code{\link[lattice]{xyplot}}, \code{panel.hexbinplot} and \code{hexlegendGrob} can be supplied to the high level \code{hexbinplot} call. \code{panel.hexbinplot} calls one of two (unexported) low-level functions depending on whether \code{groups} is supplied (although specifying \code{groups} currently leads to an error). Arguments of the appropriate function can be supplied; some important ones are \describe{ \item{\code{xbins}:}{ number of hexagons covering x values. The number of y-bins depends on this, the aspect ratio, and \code{xbnds} and \code{ybnds}} \item{\code{xbnds, ybnds}:}{ Numeric vector specifying range of values that should be covered by the binning. In a multi-panel display, it is not necessarily a good idea to use the same bounds (which along with \code{xbins} and the aspect ratio determine the size of the hexagons) for all panels. For example, when data is concentrated in small subregions of different panels, more detail will be shown by using smaller hexagons covering those regions. To control this, \code{xbnds} and \code{ybnds} can also be character strings \code{"panel"} or \code{"data"} (which are not very good names and may be changed in future). In the first case, the bounds are taken to be the limits of the panel, in the second case, the limits of the data (packet) in that panel. Note that all panels will have the same limits (enough to cover all the data) by default if \code{relation="free"} in the standard trellis argument \code{scales}, but not otherwise.} } } \item{groups}{ in \code{hexbinplot}, a grouping variable that is evaluated in \code{data}, and passed on to the panel function. } \item{subset}{ an expression that is evaluated in evaluated in \code{data} to produce a logical vector that is used to subset the data before being used in the plot. } } \details{ The panel function \code{panel.hexbinplot} creates a hexbin object from data supplied to it and plots it using \code{\link[hexbin:grid.hexagons]{grid.hexagons}}. To make panels comparable, all panels have the same \code{maxcnt} value, by default the maximum count over all panels. This default value can be calculated only if the aspect ratio is known, and so \code{aspect="fill"} is not allowed. The default choice of aspect ratio is different from the choice in \code{hexbin} (namely, \code{1}), which may sometimes give better results for multi-panel displays. \code{xbnds} and \code{ybnds} can be numeric range vectors as in \code{hexbin}, but they can also be character strings specifying whether all panels should have the same bins. If they are not, then bins in different panels could be of different sizes, in which case \code{style="lattice"} and \code{style="centroids"} should be interpreted carefully. The dimensions of the legend and the size of the hexagons therein are given in absolute units (inches) by \code{legend.width} and \code{inner} only when \code{style} is \code{"nested.lattice"} or \code{"nested.centroids"}. For other styles, the dimensions of the legend are determined relative to the plot. Specifically, the height of the legend is the same as the height of the plot (the panel and strip regions combined), and the width is the minimum required to fit the legend in the display. This is different in some ways from the \code{hexbin} implementation. In particular, the size of the hexagons in the legend are completely unrelated to the sizes in the panels, which is pretty much unavoidable because the sizes need not be the same across panels if \code{xbnds} or \code{ybnds} is \code{"data"}. The size of the hexagons encode information when \code{style} is \code{"lattice"} or \code{"centroids"}, consequently a warning is issued when a legend is drawn with wither of these styles. } \value{ \code{hexbinplot} produces an object of class \code{"trellis"}. The \code{update} method can be used to update components of the object and the \code{print} method (usually called by default) will plot it on an appropriate plotting device. \code{hexlegendGrob} produces a \code{"grob"} (grid object). } \author{ Deepayan Sarkar \email{deepayan.sarkar@r-project.org}} \seealso{ \code{\link{hexbin}}, \code{\link[lattice]{xyplot}} } \examples{ mixdata <- data.frame(x = c(rnorm(5000),rnorm(5000,4,1.5)), y = c(rnorm(5000),rnorm(5000,2,3)), a = gl(2, 5000)) hexbinplot(y ~ x, mixdata, aspect = 1, trans = sqrt, inv = function(x) x^2) hexbinplot(y ~ x | a, mixdata) hexbinplot(y ~ x | a, mixdata, style = "lattice", xbnds = "data", ybnds = "data") hexbinplot(y ~ x | a, mixdata, style = "nested.centroids") hexbinplot(y ~ x | a, mixdata, style = "nested.centroids", border = FALSE, type = c("g", "smooth")) } \keyword{dplot} hexbin/man/hdiffplot.Rd0000644000176200001440000001241313171627112014552 0ustar liggesusers\name{hdiffplot} \alias{hdiffplot} \title{Plot of Domain and Median Differences of Two "hexbin" Objects} \description{ Let \code{bin1} and \code{bin2} represent two \code{\link{hexbin}} objects with scaling, plot shapes, and bin sizes. This plot distinguishes cells unique to \code{bin1}, cells in common, and cells unique to \code{bin2} using color. When the erode components are present, color also distinguishes the two erosion medians. An arrow shows the vector from the median of \code{bin1} to the median of \code{bin2}. } \usage{ hdiffplot(bin1, bin2 = NULL, xbnds, ybnds, focus = NULL,% if(is.null(bin2)) 1:length(bin1) else c(1, 2), col.control = list(medhex = "white", med.bord = "black", focus = NULL, focus.border = NULL, back.col = "grey"), arrows = TRUE, size = unit(0.1, "inches"), lwd = 2, eps = 1e-6, unzoom = 1.08, clip="off", xlab = "", ylab = "", main = deparse(mycall), \dots) } \arguments{ \item{bin1, bin2}{two objects of class \code{\link{hexbin}}.} \item{xbnds,ybnds}{global x- and y-axis plotting limits. Used primarily for multiple comparison plots.} %%%------- FIXME -------- \item{focus}{a vector of integers specifying which hexbin objects should be treated as focal. Excluded hexbins are treated as background.} \item{col.control}{a list for detailed color control.}%% <<< FIXME \item{arrows}{a logical indicating wheter or not to draw arrows between the focal hexbin objects median cells.} %not yet \item{density}{fill arguments to polygon} %not yet \item{pen}{pen numbers for polgyon} \item{border}{border arguments to polygon} \item{size}{arrow type size in inches.} \item{eps}{distance criteria for distinct medians} \item{unzoom}{plot limit expansion factor when xbnds is missing} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{lwd}{Line width for arrows, ignored when \code{arrows=FALSE} or when bins have no erosion component} \item{xlab}{label for x-axis} \item{ylab}{label for y-axis} \item{main}{main title for the plot; automatically constructed by default.} \item{\dots}{...............} } % \value{ % ((currently unspecified --- proposals are welcome))%% FIXME % } \details{ The hexbin objects for comparison, \code{bin1} and \code{bin2}, must have the same plotting limits and cell size. The plot produces a comparison overlay of the cells in the two objects. If external global scaling is not supplied, the algorithm determines plotting limits to increase resolution. For example, the objects may be the result of the \code{\link{erode.hexbin}()} and include only high count cells containing 50 of the counts. The density, border, and pen arguments correspond to the polygon function calls for plotting six types of cells. The cell types are respectively: \tabular{l}{ unique cells of bin1,\cr joint cells,\cr unique cells of bin2,\cr median cell of bin1,\cr median cell of bin2,\cr median cell if identical.\cr } The \code{erode} components of the hexbin objects must be present for the medians to plot. The algorithm select a single cell for the median if there are algorithmic ties. %% FIXME: no 'pen' argument anymore .. (?) The \code{pen} numbers for types of cells start at Pen 2. Pen 1 is presumed black. The suggested six additional colors are light blue, light gray, light red, blue, red, and black. Carr (1991) shows an example for black and white printing. That plot changes the six colors to light gray, dark gray, white, black, black, and black. It changes the 4th, 5th, and 6th argument of border to TRUE. It also changes 4th, 5th and 6th argument of density to 0. In other words cells in common do not show and medians cells appear as outlines. When \code{xbnds} is missing, the plot changes graphics parameters and resets them. The function also zooms in based on the available data to provide increased resolution. } \references{ see in \code{\link{grid.hexagons}}.}%>> ./hexagons.Rd \seealso{ \code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, % MISSING: hthin, \code{\link{hcell2xy}}, % \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, % \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \examples{ ## Comparison of two bivariate boxplots x1 <- rnorm(10000) y1 <- rnorm(10000) x2 <- rnorm(10000,mean=.5) y2 <- rnorm(10000,mean=.5) xbnds <- range(x1,x2) ybnds <- range(y1,y2) bin1 <- hexbin(x1,y1,xbnds=xbnds,ybnds=ybnds) bin2 <- hexbin(x2,y2,xbnds=xbnds,ybnds=ybnds) erodebin1 <- erode.hexbin(smooth.hexbin(bin1)) erodebin2 <- erode.hexbin(smooth.hexbin(bin2)) hdiffplot(erodebin1,erodebin2) ## Compare *three* of them: -------------------- x3 <- rnorm(10000,mean=-1) y3 <- rnorm(10000,mean=-.5) xbnds <- range(x1,x2,x3) ybnds <- range(y1,y2,y3) bin1 <- hexbin(x1,y1,xbnds=xbnds,ybnds=ybnds) bin2 <- hexbin(x2,y2,xbnds=xbnds,ybnds=ybnds) bin3 <- hexbin(x3,y3,xbnds=xbnds,ybnds=ybnds) erodebin1 <- erode.hexbin(smooth.hexbin(bin1)) erodebin2 <- erode.hexbin(smooth.hexbin(bin2)) erodebin3 <- erode.hexbin(smooth.hexbin(bin3)) bnlst <- list(b1=erodebin1, b2=erodebin2, b3=erodebin3) hdiffplot(bnlst) } \keyword{hplot} hexbin/man/hexplom.Rd0000644000176200001440000000570413171627112014254 0ustar liggesusers\name{hexplom} \title{Hexbin Plot Matrices} \alias{hexplom} \alias{hexplom.formula} \alias{hexplom.data.frame} \alias{hexplom.matrix} \alias{panel.hexplom} \usage{ hexplom(x, data, \dots) \method{hexplom}{formula}(x, data = NULL, \dots) \method{hexplom}{data.frame}(x, data = NULL, \dots, groups = NULL, subset = TRUE) \method{hexplom}{matrix}(x, data = NULL, \dots, groups = NULL, subset = TRUE) panel.hexplom(\dots) } \description{ \code{hexplom} draws Conditional Hexbin Plot Matrices. It is similar to \code{splom}, expect that the default display is different. Specifically, the default display is created using \code{panel.hexplom}, which is an alias for \code{panel.hexbinplot}. } \arguments{ \item{x}{ The object on which method dispatch is carried out. For the \code{"formula"} method, a formula describing the structure of the plot, which should be of the form \code{~ x | g1 * g2 * \dots}, where \code{x} is a data frame or matrix. Each of \code{g1, g2, \dots} must be either factors or shingles. The conditioning variables \code{g1, g2, \dots} may be omitted. For the \code{data.frame} and \code{matrix} methods, a data frame or matrix as appropriate. } \item{data}{ For the \code{formula} method, an optional data frame in which variables in the formula (as well as \code{groups} and \code{subset}, if any) are to be evaluated. By default, the environment where the function was called from is used. } \item{groups, subset, \dots}{ see \code{\link[lattice]{splom}}. The non-standard evaluation of \code{groups} and \code{subset} only applies in the \code{formula} method. Apart from arguments that apply to \code{splom} (many of which are only documented in \code{\link[lattice]{xyplot}}), additional arguments meant for \code{panel.hexplom} (which is an alias for \code{\link{panel.hexbinplot}}) may also be supplied. Such arguments may include ones that control details of the hexbin calculations, documented in \code{\link{gplot.hexbin}}} } \value{ An object of class \code{"trellis"}. The \code{\link[lattice:update.trellis]{update}} method can be used to update components of the object and the \code{\link[lattice:print.trellis]{print}} method (usually called by default) will plot it on an appropriate plotting device. } \seealso{ \code{\link[lattice]{splom}}, \code{\link[lattice]{xyplot}}, \code{\link[hexbin]{hexbinplot}}, \code{\link[lattice]{Lattice}}, \code{\link[lattice]{panel.pairs}} } \author{ Deepayan Sarkar \email{Deepayan.Sarkar@R-project.org}, Nicholas Lewin-Koh \email{nikko@hailmail.net}} \examples{ ## Simple hexplom data(NHANES) hexplom(~NHANES[,7:14], xbins=15) ## With colors and conditioning hexplom(~NHANES[,9:13] | Sex, data = NHANES, xbins = 15, colramp = magent) ## With custom panel function hexplom(NHANES[,9:13], xbins = 20,colramp = BTY, upper.panel = panel.hexboxplot) } \keyword{hplot} hexbin/man/gplot.hexbin.Rd0000644000176200001440000001346213616020656015205 0ustar liggesusers\name{gplot.hexbin} \alias{gplot.hexbin} \alias{plot,hexbin,missing-method} \title{Plotting Hexagon Cells with a Legend} \description{ Plots Hexagons visualizing the counts in an hexbin object. Different styles are availables. Provides a legend indicating the count representations. } \usage{ %% In future: No longer export gplot.hexbin() ! gplot.hexbin(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n,beg = 90,end = 15), xlab = "", ylab = "", main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip = "on", verbose = getOption("verbose")) %% FIXME: This is the S4 plot method for 'hexbin' %% currently also exported "standalone" - for testing,debugging.. %% we'd really don't want to repeat the argument list; use \synopsis{.} ? \S4method{plot}{hexbin,missing}(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n,beg = 90,end = 15), xlab = "", ylab = "", main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip = "on", verbose = getOption("verbose")) } \arguments{ \item{x}{an object of class \code{\link{hexbin}}.} % \item{y}{(required by the S4 method for \code{\link{plot}} but unused % here; must be missing)} \item{style}{string specifying the style of hexagon plot, see \code{\link{grid.hexagons}} for the possibilities.} \item{legend}{numeric width of the legend in inches of \code{FALSE}. In the latter case, or when \code{0}, no legend is not produced.} \item{lcex}{characters expansion size for the text in the legend} \item{minarea}{fraction of cell area for the lowest count} \item{maxarea}{fraction of the cell area for the largest count} \item{mincnt}{cells with fewer counts are ignored.} \item{maxcnt}{cells with more counts are ignored.} \item{trans}{\code{\link{function}} specifying a transformation for the counts such as \code{sqrt}.} % FIXME: use better description of these in hexagons() -- or use same % ---- help page ?! \item{inv}{the inverse transformation of \code{trans}.} \item{colorcut}{vector of values covering [0, 1] that determine hexagon color class boundaries and hexagon legend size boundaries. Alternatively, an integer (\code{<= maxcnt}) specifying the \emph{number} of equispaced colorcut values in [0,1].} \item{border, density, pen}{color for polygon borders and filling of each hexagon drawn, passed to \code{\link{grid.hexagons}}.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{xlab, ylab}{x- and y-axis label.} \item{main}{main title.} \item{newpage}{should a new page start?.} \item{type, xaxt, yaxt}{strings to be used (when set to \code{"n"}) for suppressing the plotting of hexagon symbols, or the x- or y-axis, respectively.} \item{clip}{either 'on' or 'off' are the allowed arguments, when on everything is clipped to the plotting region.} \item{verbose}{logical indicating if some diagnostic output should happen.} } \details{ This is the (S4) \code{\link{plot}} method for \code{\link{hexbin}} (and \code{erodebin}) objects (\link{erodebin-class}). To use the standalone function \code{gplot.hexbin()} is \bold{\emph{deprecated}}. For \code{style}, \code{minarea} etc, see the \bold{Details} section of \code{\link{grid.hexagons}}'s help page. The legend functionality is somewhat preliminary. Later versions may include refinements and handle extreme cases (small and large) for cell size and counts. All arguments of \code{gplot.hexbin} can also be used for the S4 \code{\link{plot}} method. } \value{ invisibly, a list with components \item{plot.vp}{the \code{\link{hexViewport}} constructed and used.} \item{legend.vp}{if a legend has been produced, its \code{\link[grid]{viewport}}.} } \references{ see in \code{\link{grid.hexagons}}.} \author{ Dan Carr \email{dcarr@voxel.galaxy.gmu.edu}, ported by Nicholas Lewin-Koh \email{kohnicho@comp.nus.edu.sg} and Martin Maechler. } \seealso{\code{\link{hexbin}}, \code{\link{hexViewport}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, \code{\link{hcell2xy}}, \code{\link{hboxplot}}, \code{\link{hdiffplot}}. %%, \code{\link{hmatplot}}. } \examples{ ## 1) simple binning of spherical normal: x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) ## Plot method for hexbin ! ## ---- ------ -------- plot(bin) # nested lattice plot(bin, style= "nested.lattice") # controlling the colorscheme plot(bin, colramp=BTY, colorcut=c(0,.1,.2,.3,.4,.6,1)) ## 2) A mixture distribution x <- c(rnorm(5000),rnorm(5000,4,1.5)) y <- c(rnorm(5000),rnorm(5000,2,3)) bin <- hexbin(x,y) pens <- cbind(c("#ECE2F0","#A6BDDB","#1C9099"), c("#FFF7BC","#FEC44F","#D95F0E")) plot(bin, style = "nested.lattice", pen=pens) # now really crazy plot(bin, style = "nested.lattice", pen=pens,border=2,density=35) # lower resolution binning and overplotting with counts bin <- hexbin(x,y,xbins=25) P <- plot(bin, style="lattice", legend=FALSE, minarea=1, maxarea=1, border="white") ## %% FIXME! library("grid") pushHexport(P$plot.vp) xy <- hcell2xy(bin) # to show points rather than counts : grid.points(x,y,pch=18,gp=gpar(cex=.3,col="green")) grid.text(as.character(bin@count), xy$x,xy$y, gp=gpar(cex=0.3, col="red"),default.units="native") popViewport() # Be creative, have fun! } \keyword{hplot} hexbin/man/hexpolygon.Rd0000644000176200001440000000537013171627112014773 0ustar liggesusers\name{hexpolygon} \alias{hexpolygon} \alias{hexcoords} \title{Hexagon Coordinates and Polygon Drawing} \description{ Simple \sQuote{low-level} function for computing and drawing hexagons. Can be used for \sQuote{grid} (package \pkg{grid}) or \sQuote{traditional} (package \pkg{graphics}) graphics. } \usage{ hexcoords(dx, dy = NULL, n = 1, sep = NULL) hexpolygon(x, y, hexC = hexcoords(dx, dy, n = 1), dx, dy = NULL, fill = 1, border = 0, hUnit = "native", ...) } \arguments{ \item{dx,dy}{horizontal and vertical width of the hexagon(s).} \item{n}{number of hexagon \dQuote{repeats}.} \item{sep}{separator value to be put between coordinates of different hexagons. The default, \code{NULL} doesn't use a separator.} \item{x,y}{numeric vectors of the same length specifying the hexagon \emph{centers} around which to draw.} \item{hexC}{a list as returned from \code{hexcoords()}. Its component \code{no.sep} determines if grid or traditional graphics are used. The default (via default of \code{hexcoords}) is now to use grid graphics.} \item{fill,border}{passed to \code{\link[grid]{grid.polygon}} (for \pkg{grid}).} \item{hUnit}{string or \code{NULL} determining in which units (x,y) values are.} \item{\dots}{further arguments passed to \code{\link{polygon}} (for \pkg{graphics}).} } \value{ \code{hexcoords()} returns a list with components \item{x,y}{numeric vectors of length \eqn{n \times 6}{n * 6} (or \eqn{n \times 7}{n * 7} if \code{sep} is not NULL) specifying the hexagon polygon coordinates (with \code{sep} appended to each 6-tuple).} \item{no.sep}{a logical indicating if \code{sep} was \code{NULL}.} \code{hexpolygon} returns what its last \code{\link[grid]{grid.polygon}(.)} or \code{\link{polygon}(.)} call returns. } \author{Martin Maechler, originally.} \seealso{\code{\link{grid.hexagons}} which builds on these.} \examples{ str(hexcoords(1, sep = NA)) # multiple of (6 + 1) str(hexcoords(1, sep = NULL))# no separator -> multiple of 6 \dontshow{ stopifnot(3 * (6+1) == sapply(hexcoords(2, n = 3, sep = NA)[1:2], length), 6 == sapply(hexcoords(1)[1:2], length)) set.seed(1001) } ## hexpolygon()s: x <- runif(20, -2, 2) y <- x + rnorm(20) ## 1) traditional 'graphics' plot(x,y, asp = 1, "plot() + hexpolygon()") hexpolygon(x,y, dx = 0.1, density = 25, col = 2, lwd = 1.5) ## 2) "grid" : addBit <- function(bnds, f = 0.05) bnds + c(-f, f) * diff(bnds) sc <- addBit(rxy <- range(x,y))# same extents (cheating asp=1) library("grid") grid.newpage() pushViewport(plotViewport(.1+c(4,4,2,1), xscale = sc, yscale = sc)) grid.rect() grid.xaxis() grid.yaxis() grid.points(x,y) hexpolygon(x,y, hexcoords(dx = 0.1, sep=NULL), border = "blue", fill=NA) popViewport() } \keyword{dplot} \keyword{aplot} hexbin/man/old-classes.Rd0000644000176200001440000000127713171627112015012 0ustar liggesusers\name{old-classes} \title{Class "unit" and "viewport" as S4 classes} % \docType{class} \alias{unit-class} \alias{viewport-class} % \description{Package "hexbin" now uses S4 classes throughout and hence needs to \code{\link[methods]{setOldClass}} both \code{"unit"} and \code{"viewport"} (which are S3 classes from the \pkg{grid} package), in order to be able to use those in slots of its own classes. } \section{Objects from the Class}{A virtual Class: No objects may be created from it.} \section{Extends}{ Class \code{"oldClass"}, directly. } \section{Methods}{ No methods defined with class "unit" in the signature. } % \seealso{ % add link to grid ?? % } \keyword{classes} hexbin/man/hexGraphPaper.Rd0000644000176200001440000000465213171627112015337 0ustar liggesusers\name{hexGraphPaper} \alias{hexGraphPaper} \alias{hgridcent} \title{Create a Hexgon Grid} \description{ Creates a hexagon grid that can be added to a plot created with grid graphics. } \usage{ hexGraphPaper(hb, xbnds = NULL, ybnds = NULL, xbins = 30, shape = 1, add = TRUE, fill.edges = 1, fill = 0, border = 1) hgridcent(xbins, xbnds, ybnds, shape, edge.add = 0) } \arguments{ \item{hb}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} \item{add}{a logical value indicating whether or not to add the grid to the current plot.} \item{fill.edges}{integer number of hexagons to add around the border} \item{fill}{the fill color for the hexagons} \item{border}{the color of the border of the hexagons} \item{edge.add}{offset (typically \code{fill.edges} above) used in \code{hgridcent}.} } \details{ If a hexbin object is given then the parameters xbins and shape are ignored. Different bounds can still be specified. The \code{fill.edges} parameter should be an integer. \code{fill.edges} takes the current grid and adds a layer of hexagons around the grid for each level of fill. So for example if \code{fill.edges= 2} than the dimensions of the grid would be \code{(i,j)+4}. \code{hgridcent()} is the utility function computing the resulting list (see section \dQuote{Value}). \strong{WARNING! If using a hexVP be sure to set clip to "on", otherwise the hexagon grid will bleed over the plot edges.} } \value{ Invisibly returns a list with th following components \item{x}{The x coordinates of the grid} \item{y}{the y coordinates of the grid} \item{dimen}{a vector of length 2 gining the rows and columns of the grid} \item{dx}{the horizontal diameter of the hexagons} \item{dy}{the vertical diameter of the hexagons} } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hcell2xy}}, \code{\link{hexpolygon}}, \code{\link{grid.hexagons}}} \examples{ x <- rnorm(10000) y <- rnorm(10000,x,x) hbin <- hexbin(x,y) hvp <- plot(hbin,type="n") pushHexport(hvp$plot,clip="on") hexGraphPaper(hbin,border=grey(.8)) grid.hexagons(hbin) } \keyword{aplot} \keyword{dplot} hexbin/man/hsmooth-methods.Rd0000644000176200001440000000146413171627112015721 0ustar liggesusers\name{hsmooth-methods} \docType{methods}% + generic -- still use this doctype ? \alias{hsmooth}% generic \alias{hsmooth-methods} \alias{hsmooth,hexbin-method} \title{Hexagon Bin Smoothing: Generic hsmooth() and Methods} \description{ Methods for the generic function \code{hsmooth} in package \pkg{hexbin}: There is currently only the one for \code{\link{hexbin}} objects. } \usage{ \S4method{hsmooth}{hexbin}(bin, wts) } \arguments{ \item{bin}{a \code{\link{hexbin}} object, or an extension such as \code{\link{erodebin-class}}.} \item{wts}{weights vector, see \code{\link{smooth.hexbin}}} } \section{Methods}{ \describe{ \item{bin = "hexbin"}{is just the \code{\link{smooth.hexbin}} function (for back compatibility); see its documentation, also for examples.} } } \keyword{methods} hexbin/man/grid.hexlegend.Rd0000644000176200001440000000605713171627112015471 0ustar liggesusers\name{grid.hexlegend} \alias{grid.hexlegend} \title{Add a Legend to a Hexbin Plot} \description{ Plots the legend for the \code{plot} method of \code{\link{hexbin}}. Provides a legend indicating the count representations. } \usage{ grid.hexlegend(legend, ysize, lcex, inner, style = , minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut, density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, leg.unit = "native") } \arguments{ \item{legend}{positive number giving width of the legend in inches.} \item{ysize}{height of legend in inches} \item{lcex}{the characters expansion size for the text in the legend, see \code{\link{par}(cex=)}.} \item{inner}{the inner diameter of a hexagon in inches.} \item{style}{the hexagon style; see \code{\link{grid.hexagons}}.} \item{minarea, maxarea}{fraction of the cell area for the lowest and largest count, respectively.} \item{mincnt, maxcnt}{minimum and maximum count accepted in \code{plot}.} \item{trans}{a transformation function for the counts such as \code{\link{sqrt}}.} \item{inv}{the inverse transformation function.} \item{colorcut}{numeric vector of values covering [0, 1] the determine hexagon color classes boundaries and hexagon legend size boundaries.} \item{border}{argument for \code{\link{polygon}()}. Draw the border for each hexagon.} \item{density}{argument for \code{\link{polygon}()} filling. A \code{0} causes the polygon not to be filled.} \item{pen}{color argument used for \code{\link{polygon}(col = .)}. Determines the color with which the polygon will be filled.} \item{colramp}{function accepting an integer \code{n} as an argument and returning n colors.} \item{leg.unit}{unit to use}%FIXME } \details{ The \code{plot} method for \code{\link{hexbin}} objects calls this function to produce a legend by setting the graphics parameters, so \code{hex.legend} itself is not a standalone function. The legend function is \bold{preliminary}. Later version will include refinements and handle extreme cases (small and large) for cell size and counts. See the \bold{Details} section of \code{\link{grid.hexagons}}'s help page. } \value{ This function does not return any value. } \references{ see in \code{\link{grid.hexagons}}.} \author{ Dan Carr ported by Nicholas Lewin-Koh } \seealso{\code{\link{hexbin}}, \code{\link{grid.hexagons}}, % FIXME \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, % \code{\link{hcell}}, \code{\link{hcell2xy}}, \code{\link{gplot.hexbin}},% \code{\link{hboxplot}},% \code{\link{hdiffplot}}, % \code{\link{hmatplot}} } \examples{ ## Not a stand alone function; typically only called from plot.hexbin() %% Hence we should not run it here! %% FIXME: Improve hex.legend() such that it *can* be added to plots !!! \dontrun{ grid.hexlegend(legend = 2, ysize = 1,lcex=8,inner=0.2, maxcnt = 100, colorcut = c(0.5,0.5)) } } \keyword{aplot} hexbin/man/grid.hexagons.Rd0000644000176200001440000002045013171627112015333 0ustar liggesusers\name{grid.hexagons} \alias{grid.hexagons} \title{Add Hexagon Cells to Plot} \description{ Plots cells in an hexbin object. The function distinquishes among counts using 5 different styles. This function is the hexagon plotting engine from the \code{plot} method for \code{\link{hexbin}} objects. } \usage{ grid.hexagons(dat, style = c("colorscale", "centroids", "lattice", "nested.lattice", "nested.centroids", "constant.col"), use.count=TRUE, cell.at=NULL, minarea = 0.05, maxarea = 0.8, check.erosion = TRUE, mincnt = 1, maxcnt = max(dat@count), trans = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90, end = 15) }, def.unit= "native", verbose = getOption("verbose")) } \arguments{ \item{dat}{an object of class \code{hexbin}, see \code{\link{hexbin}}.} \item{style}{character string specifying the type of plotting; must be (a unique abbrevation) of the values given in \sQuote{Usage} above.} \item{use.count}{logical specifying if counts should be used.} \item{cell.at}{numeric vector to be plotted instead of counts, must besame length as the number of cells.} \item{minarea}{numeric, the fraction of cell area for the lowest count.} \item{maxarea}{the fraction of the cell area for the largest count.} \item{check.erosion}{logical indicating only eroded points should be used for \code{"erodebin"} objects; simply passed to \code{\link{hcell2xy}}, see its documentation.} \item{mincnt}{numeric; cells with counts smaller than \code{mincnt} are not shown.} \item{maxcnt}{cells with counts larger than this are not shown.} \item{trans}{a transformation function (or \code{NULL}) for the counts, e.g., \code{\link{sqrt}}.} \item{colorcut}{a vector of values covering [0, 1] which determine hexagon color class boundaries or hexagon size boundaries -- for \code{style = "colorscale"} only.} \item{density}{\code{\link[grid]{grid.polygon}} argument for shading. 0 causes the polygon not to be filled. \emph{This is not implemented (for \code{\link[grid]{grid.polygon}}) yet}.} \item{border}{\code{\link[grid]{grid.polygon}()} argument. Draw the border for each hexagon.} \item{pen}{colors for \code{\link[grid]{grid.polygon}()}. Determines the color with which the polygon will be filled.} \item{colramp}{function of an integer argument \code{n} returning n colors. \code{n} is determined }%% how? FIXME \item{def.unit}{default \code{\link[grid]{unit}} to be used.}% FIXME \item{verbose}{logical indicating if some diagnostic output should happen.} } \section{SIDE EFFECTS}{Adds hexagons to the plot.} \details{ The six plotting styles have the following effect: \describe{ \item{\code{style="lattice"} or \code{"centroids"}:}{ Plots the hexagons in different sizes based on counts. The \code{"lattice"} version centers the hexagons at the cell centers whereas \code{"centroids"} moves the hexagon centers close to the center of mass for the cells. In all cases the hexagons will not plot outside the cell unless \code{maxarea > 1}. Counts are rescaled into the interval [0,1] and colorcuts determine the class boundaries for sizes and counts. The pen argument for this style should be a single color or a vector of colors of \code{length(bin@count)}.} \item{\code{style="colorscale"}:}{ Counts are rescaled into the interval [0,1] and colorcuts determines the class boundaries for the color classes. For this style, the function passed as \code{colramp} is used to define the n colors for the n+1 color cuts. The pen argument is ignored. %% S-plus: In motif color options try polygon: black 16 white See \code{\link{LinGray}} for the default \code{colramp} and alternative \dQuote{color ramp} functions. } \item{\code{style="constant.col"}:}{ This is an even simpler alternative to \code{"colorscale"}, using constant colors (determined \code{pen} optionally). } \item{\code{style="nested.lattice"} and \code{"nested.centroids"}:}{ Counts are partitioned into classes by power of 10. The encoding nests hexagon size within powers of 10 color contours. If the pen argument is used it should be a matrix of colors with 2 columns and either \code{ceiling(log10(max(bin@count)))} or \code{length(bin@count)} rows. The default uses the \R color palatte so that pens numbers 2-11 determine colors for completely filled cell Pen 2 is the color for 1's, Pen 3 is the color for 10's, etc. Pens numbers 12-21 determine the color of the foreground hexagons. The hexagon size shows the relative count for the power of 10. Different color schemes give different effects including 3-D illusions %% S-plus : %% One motif color option for the first 4 powers is black \#BBB \#36F %% \#0E3 \#F206 \#FFF4 \#FFF %% %% A second option is for the first 5 power is black \#FFF \#08F \#192 %% \#F11 \#FF04 \#000 \#999 \#5CF \#AFA \#FAAF \#000 } } \emph{Hexagon size encoding \code{minarea} and \code{maxarea}} determine the area of the smallest and largest hexagons plotted. Both are expressed fractions of the bin cell size. Typical values might be .04 and 1. When both values are 1, all plotted hexagons are bin cell size, if \code{maxarea} is greater than 1 than hexagons will overlap. This is sometimes interesting with the lattice and centroid styles. \emph{Count scaling} \code{relcnt <- (trans(cnt)-trans(mincnt)) / (trans(maxcnt)-trans(mincnt))} \cr \code{area <- minarea + relcnt*maxarea} By default the transformation \code{trans()} is the identity function. The legend routine requires the transformation inverse for some options. \emph{Count windowing \code{mincnt} and \code{maxcnt}} Only routine only plots cells with cnts in [mincnts, maxcnts] } \references{ Carr, D. B. (1991) Looking at Large Data Sets Using Binned Data Plots, pp. 7--39 in \emph{Computing and Graphics in Statistics}; Eds. A. Buja and P. Tukey, Springer-Verlag, New York. } \author{ Dan Carr ; ported and extended by Nicholas Lewin-Koh \email{nikko@hailmail.net}. } \seealso{\code{\link{hexbin}}, \code{\link{smooth.hexbin}}, \code{\link{erode.hexbin}}, \code{\link{hcell2xy}},% \code{\link{hcell}}, \code{\link{gplot.hexbin}}, \code{\link{hboxplot}}, \code{\link{hdiffplot}}, \code{\link{grid.hexlegend}}% \code{\link{hmatplot}} } \examples{ set.seed(506) x <- rnorm(10000) y <- rnorm(10000) # bin the points bin <- hexbin(x,y) # Typical approach uses plot( ) which controls the plot shape : plot(bin, main = "Bivariate rnorm(10000)") ## but we can have more manual control: # A mixture distribution x <- c(rnorm(5000),rnorm(5000,4,1.5)) y <- c(rnorm(5000),rnorm(5000,2,3)) hb2 <- hexbin(x,y) # Show color control and overplotting of hexagons ## 1) setup coordinate system: P <- plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 ## 2) add hexagons (in the proper viewport): pushHexport(P$plot.vp) grid.hexagons(hb2, style= "lattice", border = gray(.1), pen = gray(.6), minarea = .1, maxarea = 1.5) library("grid") popViewport() ## How to treat 'singletons' specially: P <- plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 pushHexport(P$plot.vp) grid.hexagons(hb2, style= "nested.centroids", mincnt = 2)# not the single ones grid.hexagons(hb2, style= "centroids", maxcnt = 1, maxarea=0.04)# single points popViewport() %% FIXME --- this would mix grid- and traditional-graphics %% ----- would need grid-graphics for 'gpclib' -- aaargs... % # And if we had all the information... % if(require(gpclib)){ % h1 <- chull(x[1:5000], y[1:5000]) % h2 <- chull(x[5001:10000], y[5001:10000]) % h2 <- h2+5000 % h1 <- as(cbind(x[1:5000],y [1:5000])[h1, ], "gpc.poly") % h2 <- as(cbind(x,y)[h2, ], "gpc.poly") % plot(hb2, type="n", main = "Bivariate mixture (10000)")# asp=1 % % plot(h1,poly.args = list(col ="#CCEBC5"),add = TRUE) % plot(h2,poly.args = list(col ="#FBB4AE"),add = TRUE) % plot(intersect(h1, h2), poly.args = list(col = 2), add = TRUE) % grid.hexagons(hb2, style= "centroids", border = gray(.1), pen = gray(.6), % minarea = .1, maxarea = 1.5) % } } \keyword{aplot} hexbin/man/hexbin.Rd0000644000176200001440000000776613171627112014067 0ustar liggesusers\name{hexbin} \title{Bivariate Binning into Hexagon Cells} \alias{hexbin} \alias{hexbin-class} \alias{integer or NULL-class} \alias{show,hexbin-method} \alias{summary,hexbin-method} \description{ Creates a \code{"hexbin"} object. Basic components are a cell id and a count of points falling in each occupied cell. Basic methods are \code{\link[methods]{show}()}, \code{plot()} %(\link{plot.hexbin}) and \code{\link{summary}()}, but also \code{\link{erode}}. % .. \code{\link{smooth.hexbin}} } \usage{ hexbin(x, y, xbins = 30, shape = 1, xbnds = range(x), ybnds = range(y), xlab = NULL, ylab = NULL, IDs = FALSE) } \arguments{ \item{x, y}{vectors giving the coordinates of the bivariate data points to be binned. Alternatively a single plotting structure can be specified: see \code{\link[grDevices]{xy.coords}}. \code{\link{NA}}'s are allowed and silently omitted.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{xlab, ylab}{optional character strings used as labels for \code{x} and \code{y}. If \code{NULL}, sensible defaults are used.} \item{IDs}{logical indicating if the individual cell \dQuote{IDs} should be returned, see also below.} } \value{ an S4 object of class \code{"hexbin"}. It has the following slots: \item{cell}{vector of cell ids that can be mapped into the (x,y) bin centers in data units.} \item{count}{vector of counts in the cells.} \item{xcm}{The x center of mass (average of x values) for the cell.} \item{ycm}{The y center of mass (average of y values) for the cell.} \item{xbins}{ number of hexagons across the x axis. hexagon inner diameter =diff(xbnds)/xbins in x units} \item{shape}{plot shape which is yheight(inches) / xwidth(inches)} \item{xbnds}{x coordinate bounds for binning and plotting} \item{ybnds}{y coordinate bounds for binning and plotting} \item{dimen}{The i and j limits of cnt treated as a matrix cnt[i,j]} \item{n}{number of (non NA) (x,y) points, i.e., \code{sum(* @count)}.} \item{ncells}{number of cells, i.e., \code{length(* @count)}, etc} \item{call}{the function call.} \item{xlab, ylab}{character strings to be used as axis labels.} \item{cID}{of class, \code{"integer or NULL"}, only if \code{IDs} was true, an integer vector of length \code{n} where \code{cID[i]} is the cell number of the i-th original point \code{(x[i], y[i])}. Consequently, the \code{cell} and \code{count} slots are the same as the \code{\link{names}} and entries of \code{table(cID)}, see the example.} } \seealso{ \code{\link{hcell2xy}}%, \code{\link{hcell}}, % FIXME \code{\link{gplot.hexbin}},% \code{\link{hboxplot}}, % \code{\link{hdiffplot}}, \code{\link{hmatplot}}, \code{\link{grid.hexagons}}, \code{\link{grid.hexlegend}}. } \references{ Carr, D. B. et al. (1987) Scatterplot Matrix Techniques for Large \eqn{N}. \emph{JASA} \bold{83}, 398, 424--436. } \details{ Returns counts for non-empty cells only. The plot shape must be maintained for hexagons to appear with equal sides. Some calculations are in single precision. Note that when plotting a \code{hexbin} object, the \pkg{grid} package is used. You must use its graphics (or those from package \pkg{lattice} if you know how) to add to such plots. } \examples{ set.seed(101) x <- rnorm(10000) y <- rnorm(10000) (bin <- hexbin(x, y)) ## or plot(hexbin(x, y + x*(x+1)/4), main = "(X, X(X+1)/4 + Y) where X,Y ~ rnorm(10000)") ## Using plot method for hexbin objects: plot(bin, style = "nested.lattice") hbi <- hexbin(y ~ x, xbins = 80, IDs= TRUE) str(hbi) tI <- table(hbi@cID) stopifnot(names(tI) == hbi@cell, tI == hbi@count) ## NA's now work too: x[runif(6, 0, length(x))] <- NA y[runif(7, 0, length(y))] <- NA hbN <- hexbin(x,y) summary(hbN) } \keyword{dplot} hexbin/man/hexList.Rd0000644000176200001440000000305213171627112014212 0ustar liggesusers\name{hexList} \alias{hexList} \alias{hexbinList-class} \alias{coerce,list,hexbinList-method} \title{Conditional Bivariate Binning into Hexagon Cells } \description{ Creates a list of \code{\link{hexbin}} objects. Basic components are a cell id and a count of points falling in each occupied cell. Basic methods are \code{\link[methods]{show}()}, \code{plot()} %(\link{plot.hexbin}) and \code{\link{summary}()}, but also \code{\link{erode}}. % .. \code{\link{smooth.hexbin}} } \usage{ hexList(x, y = NULL, given = NULL, xbins = 30, shape = 1, xbnds = NULL, ybnds = NULL, xlab = NULL, ylab = NULL) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{x}{ x coordinate to be binned } \item{y}{ y coordinate to be binned } \item{given}{ ..} \item{xbins}{ number of bins partitioning the range of xbnds} \item{shape}{ the \emph{shape} = yheight/xwidth of the plotting regions } \item{xbnds}{ horizontal limits of binning } \item{ybnds}{ vertical limits of binning } \item{xlab}{ character strings used as labels for \code{x} } \item{ylab}{ character strings used as labels for \code{y}} } \details{ There is also a \code{\link[methods:as]{coerce}} method to produce \code{hexbinList} objects from \code{\link{list}}s. %% i.e., \code{as(list(....), "hexbinList")} should work } \value{ If it is a LIST, use \item{comp1 }{Description of 'comp1'} \item{comp2 }{Description of 'comp2'} ... } \author{Nicholas Lewin-Koh} \seealso{\code{\link{hexbin}}, \code{\link{hdiffplot}} } \keyword{dplot} \keyword{misc} hexbin/man/hexVP-class.Rd0000644000176200001440000000607313171627112014735 0ustar liggesusers\name{hexVP-class} \docType{class} \alias{hexVP-class} \alias{getFig,hexVP-method} \alias{getMargins,hexVP-method} \alias{getPlt,hexVP-method} \alias{getXscale,hexVP-method} \alias{getYscale,hexVP-method} \title{Formal class "hexVP" of a Hexagon Viewport} \description{ Hexagon Viewports are \dQuote{value-added} grid viewports (see \code{\link[grid]{viewport}}) where the extra slots contain scaling and \dQuote{embedding} information. A hexViewport is created my taking the available area in the cuurent viewport on the graphics device and maximizing the amount of area with a fied aspect ratio. The default when the shape parameter is 1, is a 1:1 aspect ratio in terms of the size of the viewport, not the scale of the x and y axis. The plotting area is centered within the existing margins and the maximum size determined. Extra area is then allocated to the margins. This viewport is replicated twice, once with clipping set to "on" and once with clipping "off". This feature can be used for toggling clipping on and off while editing the plot. } \section{Objects from the Class}{ Objects are typically created by calls to \code{\link{hexViewport}()} or by low level calls of the form \code{new("hexVP", ...)}. } \section{Slots}{ \describe{ \item{\code{hexVp.off}:}{Object of class \code{"viewport"} with clipping set to off, see \code{\link[grid]{viewport}}.} \item{\code{hexVp.on}:}{Object of class \code{"viewport"}, with the same dimensions and parameters as hexVp.off, but with clipping set to on, see \code{\link[grid]{viewport}}.} \item{\code{hp.name}:}{The name of the viewport for searching a vptree}. \item{\code{mar}:}{\code{\link[grid]{unit}} vector of four margins (typically in \code{"lines"}).} \item{\code{fig}:}{\code{\link[grid]{unit}} vector of two figure sizes (typically in \code{"npc"}).} \item{\code{plt}:}{\code{\link[grid]{unit}} vector of two figure sizes (typically in \code{"npc"}).} %% MM {FIXME?}: Is n't this simply ``xlim'' - then call it so! %% NL, yes it is, but xscale and yscale is the parameters used by %% grid. \item{\code{shape}:}{The shape parameter from the plotted \code{\link[hexbin]{hexbin}} object.} \item{\code{xscale}:}{numeric of length two specifying x-range.} \item{\code{yscale}:}{numeric of length two specifying y-range.} } } \section{Methods}{ These are methods accessing the slots of corresponding name. \describe{ \item{getFig}{\code{signature(hvp = "hexVP")}: ... } \item{getMargins}{\code{signature(hvp = "hexVP")}: ... } \item{getPlt}{\code{signature(hvp = "hexVP")}: ... } \item{getXscale}{\code{signature(hvp = "hexVP")}: ... } \item{getYscale}{\code{signature(hvp = "hexVP")}: ... } } } \author{ Nicholas Lewin-Koh \email{kohnicho@comp.nus.edu.sg}. } \seealso{ The constructor function \code{\link{hexViewport}}. \code{\link{hexbin}}, and its S4 plotting method, \code{\link{gplot.hexbin}}. } \examples{ library("grid") example(hexViewport, echo=FALSE) ## continued: str(P$plot.vp) } \keyword{classes} hexbin/man/getHMedian.Rd0000644000176200001440000000134513171627112014602 0ustar liggesusers\name{getHMedian} \alias{getHMedian} \alias{getHMedian,erodebin-method} \title{Get coordiantes of the median cell after the erode operation} \description{ A method for a eroded hexbin object to extract the coordinates of the median cell. The median is simply the cell with the highest erosion number or the last cell to be eroded. } \usage{ getHMedian(ebin) } \arguments{ \item{ebin}{result of \code{\link{erode.hexbin}()}.} } \section{Methods}{ \describe{ \item{ebin = "erodebin"}{...} } } \seealso{\code{\link{erode.hexbin}} } \examples{ set.seed(153) x <- rnorm(10000) y <- rnorm(10000) bin <- hexbin(x,y) smbin <- smooth.hexbin(bin) erodebin <- erode.hexbin(smbin, cdfcut=.5) getHMedian(erodebin) } \keyword{methods} hexbin/man/panel.hexgrid.Rd0000644000176200001440000000107313171627112015323 0ustar liggesusers\name{panel.hexgrid} \alias{panel.hexgrid} \title{Hexagonal grid for a lattice plot} \description{ A panel function to add a hexagonal grid to a lattice plot. } \usage{ panel.hexgrid(h, border = grey(0.85)) } \arguments{ \item{h}{an object of class \code{hexbin}.} \item{border}{a color for the hexagon border colors} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{\code{\link{hexbinplot}}, \code{\link{hexGraphPaper}}} \keyword{hplot} hexbin/man/hcell2xyInt.Rd0000644000176200001440000000254413171627112015004 0ustar liggesusers\name{hcell2xyInt} \alias{hcell2xyInt} %- Also NEED an '\alias' for EACH other topic documented here. \title{Change cell ids to 2d integer coordinate system} \description{ Transforms the cell representation of a a lattice into a 2d integer coordinate system. } \usage{ hcell2xyInt(hbin, xbins=NULL, xbnds=NULL, ybnds=NULL, shape=NULL) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{shape}{the \emph{shape} = yheight/xwidth of the plotting regions.} } \details{ Takes a grid defined by either the hexbin parameters or dimen in a hexbin object and translates the cell ids for the grid into 2d integer coordinates. } \value{ An integer matrix with two columns, i and j representing the integer xy coordinates of the hexagon grid. \item{i}{Integer coordiante of the rows, increases from bottom to top} \item{j}{Integer coordiante of the columns, increases from left to right} } \author{Nicholas Lewin-Koh } \seealso{\code{\link{hcell2xy}}} \examples{ x<-rnorm(10000) y<-rnorm(10000) hbin<-hexbin(x,y) ijInt<-hcell2xyInt(hbin) } \keyword{dplot} \keyword{misc} hexbin/man/panel.hexloess.Rd0000644000176200001440000000277613171627112015536 0ustar liggesusers\name{panel.hexloess} \alias{panel.hexloess} \title{Loess line for hexbin lattice plot} \description{ A panel function to add a loess line to a hexbin lattice plot. This function contravened CRAN policy and is no longer available. } \usage{ panel.hexloess(bin, w = NULL, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, lwd = add.line$lwd, lty = add.line$lty, col, col.line = add.line$col, \dots) } \arguments{ \item{bin}{an object of class \code{hexbin}.} \item{w}{optional counts for object \code{bin}.} \item{span}{smoothness parameter for \code{loess}.} \item{degree}{degree of local polynomial used.} \item{family}{if \code{"gaussian"} fitting is by least-squares, and if \code{"symmetric"} a re-descending M-estimator is used.} \item{evaluation}{number of points at which to evaluate the smooth curve.} \item{lwd}{line weight graphical parameter.} \item{lty}{line type graphical parameter.} \item{col}{same as \code{col.line}.} \item{col.line}{line color graphical parameter.} \item{\dots}{optional arguments to \code{\link[stats]{loess.control}}.} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{ \code{\link{hexbinplot}}, \code{\link{panel.hexgrid}}, \code{\link{loess.smooth}}, \code{\link{loess.control}}, \code{\link[lattice:panel.functions]{panel.loess}} } \keyword{hplot} hexbin/man/hexTapply.Rd0000644000176200001440000000371013171627112014551 0ustar liggesusers\name{hexTapply} \alias{hexTapply} \title{Apply function to data from each hexagon bin.} \description{ A wrapper for tapply except that it operates with each hexagon bin being the category. The function operates on the data associated on the points from each bin. } \usage{ hexTapply(hbin, dat, FUN = sum, ..., simplify=TRUE) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{dat}{A vector of data the same length as \code{hbin@cID}} \item{FUN}{the function to be applied. In the case of functions like \code{+}, \code{\%*\%}, etc., the function name must be quoted. If \code{FUN} is \code{NULL}, tapply returns a vector which can be used to subscript the multi-way array \code{tapply} normally produces.} \item{\dots}{optional arguments to \code{FUN}.} \item{simplify}{If \code{FALSE}, \code{tapply} always returns an array of mode \code{"list"}. If \code{TRUE} (the default), then if \code{FUN} always returns a scalar, \code{tapply} returns an array with the mode of the scalar.} } \details{ This function is a wrapper for tapply, except that the cell id is always the categorical variable. This function is specifically good for adding variables to the cAtt slot of a hexbin object or for plotting a third variable in a hexagon plot. See below for examples. } \value{ Returns a vector of the result of 'FUN' as in \code{\link{tapply}}. See \code{\link{tapply}} for detailed description of output. } \author{Nicholas Lewin-Koh} \seealso{ \code{\link{tapply}},\code{\link{hexbin}} } \examples{ data(NHANES) hbin<-hexbin(log(NHANES$Diet.Iron+1),log(NHANES$BMI),xbins=25,IDs=TRUE) hvp<-plot(hbin) mtrans<-hexTapply(hbin,NHANES$Transferin,median,na.rm=TRUE) pushHexport(hvp$plot.vp) grid.hexagons(hbin,style='lattice',pen=0,border='red',use.count=FALSE, cell.at=mtrans) } \keyword{dplot} \keyword{utilities}% at least one, from doc/KEYWORDS hexbin/man/panel.hexboxplot.Rd0000644000176200001440000000401313171627112016062 0ustar liggesusers\name{panel.hexboxplot} \alias{panel.hexboxplot} \title{Boxplot for hexbin lattice plot} \description{ A panel function to add a boxplot to a hexbin lattice plot. } \usage{ panel.hexboxplot(x, y, xbins = 30, xbnds = c("data", "panel"), ybnds = c("data", "panel"), .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio, type = character(0), cdfcut = 0.25, shadow = 0.05, ..., check.erosion = TRUE) } \arguments{ \item{x, y}{numeric vector or factor.} \item{xbins}{the number of bins partitioning the range of xbnds.} \item{xbnds, ybnds}{horizontal and vertical limits of the binning region in x or y units respectively; must be numeric vector of length 2.} \item{.prelim, .cpl, .xlim, .ylim, .aspect.ratio}{for internal use.} \item{type}{character vector controlling additional augmentation of the display. A \code{"g"} in \code{type} adds a reference grid, an \code{"hg"} adds a hexagonal grid.} \item{cdfcut}{number in (0,1) indicating the confidence level for the erosion limits. See \code{\link{erode.hexbin}} for more information.} \item{shadow}{number in (0,1) indicating the confidence level for the erosion limits of a boxplot shadow. See \code{\link{erode.hexbin}} for more information.} \item{\dots}{potential further arguments passed on.} \item{check.erosion}{logical indicating only eroded points should be used for \code{"erodebin"} objects; simply passed to \code{\link{hcell2xy}}, see its documentation.} } \value{ There is no return value from this function. The results are plotted on the current active device. } \author{Nicholas Lewin-Koh \email{nikko@hailmail.net}} \seealso{\code{\link{hexbinplot}}, \code{\link{panel.hexgrid}}, \code{\link[lattice]{panel.bwplot}} } \examples{ mixdata <- data.frame(x = c(rnorm(5000),rnorm(5000,4,1.5)), y = rep(1:2, 5000)) hexbinplot(y ~ x, mixdata, panel = panel.hexboxplot) } \keyword{hplot} hexbin/man/inout.hex.Rd0000644000176200001440000000132013171627112014507 0ustar liggesusers\name{inout.hex} \alias{inout.hex} \title{Check points for inclusion} \description{ Check which points are in hexagons with \code{count} <= mincnt. } \usage{ inout.hex(hbin, mincnt) } \arguments{ \item{hbin}{an object of class \code{\link{hexbin}}.} \item{mincnt}{Cutoff, id's for counts less than mincnt are returned} } \details{ Check which points are in hexagons with \code{count} <= mincnt and returns the row ids for those points. One can use the ids to plot low ount hexagons as points instead. } \value{ A vector with the row ids of points which fall in hexagons with \code{count} less than or equal to mincnt } \author{Nicholas Lewin-Koh} \seealso{\code{\link{plotMAhex}}} \keyword{misc} hexbin/man/optShape.Rd0000644000176200001440000000317013171627112014356 0ustar liggesusers\name{optShape} \alias{optShape} %- Also NEED an '\alias' for EACH other topic documented here. \title{Optimal Shape Parameter for Hexbin Viewport} \description{ Takes a viewport or a given height and width and returns the shape parameter that will fill the specified plotting region with the appropriately shaped hexagons. If margins are specified the margins are subtracted from height and width before the shape parameter is specified. } \usage{ optShape(vp, height = NULL, width = NULL, mar = NULL) } \arguments{ \item{vp}{a \code{viewport} object, optional see details} \item{height}{the height of the plotting region, can be numeric or units} \item{width}{The width of the plotting region, can be numeric or units} \item{mar}{A four element numeric or units vector describing the margins in the order \code{c(bottom, left, top, right)}} } \value{ a scalar numeric value specifiyng \code{shape}. } \author{Nicholas Lewin-Koh} \section{Warning}{If a viewport is given as an argument it should already be pushed on the graphics device or it will have null units and a meaningless shape parameter will be returned. } \seealso{\code{\link{hexViewport}}, \code{\link{hexVP-class}}, \code{\link{hexbin}}} \examples{ x <- rgamma(10000,.9) m <- as.logical(rbinom(10000,1,.17)) x[m] <- -x[m] y <- rnorm(x,abs(x)) library("grid") vp <- plotViewport(xscale= range(x)+c(-.5,.5), yscale= range(y)+c(-.5,.5), default.units = "native") grid.newpage() pushViewport(vp) grid.rect() shape <- optShape(vp) shape hb <- hexbin(x,y,xbins=40,shape=shape) grid.hexagons(hb,colramp=BTY) } \keyword{dplot} hexbin/man/hcell2xy.Rd0000644000176200001440000000361013171627112014324 0ustar liggesusers\name{hcell2xy} \alias{hcell2xy} \alias{hcell2xy,hexbin-method} \title{Compute X and Y Coordinates for Hexagon Cells} \description{ Computes x and y coordinates from hexagon cell id's. } \usage{ hcell2xy(hbin, check.erosion = TRUE) } \arguments{ \item{hbin}{a object of class \code{"hexbin"}, typically produced by \code{\link{hexbin}(*)}.} \item{check.erosion}{logical indicating if only the eroded points should be returned in the case where \code{hbin} inherits from \code{"erodebin"} (see \code{\link{erodebin-class}}); is \code{TRUE} by default.} } \value{ A list with two components of the same length as \code{bin$cell}, \item{x}{} \item{y}{} } %%FIXME \references{see in \code{\link{hcell}}.} \details{ The hexbin object \code{hbin} contains all the needed information. The purpose of this function is to reduce storage. The cost is additional calculation. } \seealso{%%FIXME \code{\link{hcell}}, \code{\link{hray}}, \code{\link{hexbin}}. } \examples{ x <- rnorm(10000) y <- rnorm(10000) plot(x,y, pch=".") hbin <- hexbin(x,y) str(xys <- hcell2xy(hbin)) points(xys, cex=1.5, col=2) ; title("hcell2xy( hexbin(..) )", col.main=2) %% __________ FIXME ________ \dontshow{ ## Temporal trends with confidence bounds plotted on a map: ## Illustration only pending access to user functions ## mtapply() # like tapply but for matrices ## sens.season.slope() # computes sen's seasonal slope ## This part does not work and commented out #hbin <- hcell(dat$x,dat$y) # x and y are in map projection units #newdat < dat[,c('month','year','value')] # extract columns #stats <- mtapply(newdat,bin$cell,sens.season.slope,season=12) #plot(mymap,type='l') # map boundaries in map projection units #xy <- hcell2xy(hbin) # x and y coordinates for hexagon cell centers #hray(xy$x, xy$y,val=stat[,1],lower= stat[,2],upper=stat[,3]) } } \keyword{manip} hexbin/man/NHANES.Rd0000644000176200001440000000365413171627112013556 0ustar liggesusers\name{NHANES} \alias{NHANES} \docType{data} \title{NHANES Data : National Health and Nutrition Examination Survey} \usage{data(NHANES)} \description{ This is a somewhat large interesting dataset, a data frame of 15 variables (columns) on 9575 persons (rows). } \format{ This data frame contains the following columns: \describe{ \item{Cancer.Incidence}{binary factor with levels \code{No} and \code{Yes}.} \item{Cancer.Death}{binary factor with levels \code{No} and \code{Yes}.} \item{Age}{numeric vector giving age of the person in years.} \item{Smoke}{a factor with levels \code{Current}, \code{Past}, \code{Nonsmoker}, and \code{Unknown}.} \item{Ed}{numeric vector of \eqn{\{0,1\}} codes giving the education level.} \item{Race}{numeric vector of \eqn{\{0,1\}} codes giving the person's race.%% FIXME : 0 = ? 1 = ? } \item{Weight}{numeric vector giving the weight in kilograms} \item{BMI}{numeric vector giving Body Mass Index, i.e., \code{Weight/Height^2} where Height is in meters, and missings (61\% !) are coded as \code{0} originally.}%% rather FIXME? \item{Diet.Iron}{numeric giving Dietary iron.} \item{Albumin}{numeric giving albumin level in g/l.} \item{Serum.Iron}{numeric giving Serum iron in \eqn{\mu}{u}g/l.} \item{TIBC}{numeric giving Total Iron Binding Capacity in \eqn{\mu}{u}g/l.} \item{Transferin}{numeric giving Transferin Saturation which is just \code{100*serum.iron/TIBC}.} \item{Hemoglobin}{numeric giving Hemoglobin level.} \item{Sex}{a factor with levels \code{F} (female) and \code{M} (male).} } } \examples{ data(NHANES) summary(NHANES) ## Missing Data overview : nNA <- sapply(NHANES, function(x)sum(is.na(x))) cbind(nNA[nNA > 0]) # Which are just these 6 : \dontrun{ Diet.Iron 141 Albumin 252 Serum.Iron 1008 TIBC 853 Transferin 1019 Hemoglobin 759 }%dont } \keyword{datasets} hexbin/TODO0000644000176200001440000000176013171627112012224 0ustar liggesusers-------------- Aug 10, 2014 o get rid of functions in lattice.R, which were copied from lattice -------------- o The new 3D plots -- should rather make the new functions "internal" and choosable with *arguments* from given functions ! o hexbin *class* {as mentioned by man/hexbin.Rd } -- done o find the references (on paper) and read ! --> "References" in ./Biocore-notes ftp://www.galaxy.gmu.edu/pub/faculty/dcarr/eda/bin2d/ ftp://www.galaxy.gmu.edu/pub/faculty/dcarr/software/bin2d.rev/ o example(hmatplot) is still doing many pages instead of one ------------ March 5, 2005 o Implement conversions between different hexagon coordinate systems o Smoothing on a hexagonal basis using tensor products + smoothing histograms + smoothing the intensity of a Poisson process o Family of hex apply functions o Hbin list class and constructors --- o Use standard convertColor() function more and and try to get rid of dependency on 'colorspace' hexbin/DESCRIPTION0000644000176200001440000000175513776024163013256 0ustar liggesusersPackage: hexbin Version: 1.28.2 Title: Hexagonal Binning Routines Author: Dan Carr , ported by Nicholas Lewin-Koh and Martin Maechler , contains copies of lattice functions written by Deepayan Sarkar Maintainer: Edzer Pebesma Depends: R (>= 2.0.1), methods Imports: lattice, grid, graphics, grDevices, stats, utils Suggests: marray, affy, Biobase, limma, knitr Description: Binning and plotting functions for hexagonal bins. Collate: lattice.R BTC.R BTY.R grid.hexagons.R grid.hexlegend.R hbox.R hdiffplot.R hexbinList.R hexbinplot.R hexbin.s4.R hexpanel.R hexplom.R hexPlotMA.R hexutil.R hexViewport.R HO.R LINGRAY.R LOCS.R MAG.R RB.R smoothHexbin.R License: GPL-2 VignetteBuilder: knitr NeedsCompilation: yes URL: https://github.com/edzer/hexbin Packaged: 2021-01-08 08:39:28 UTC; edzer Repository: CRAN Date/Publication: 2021-01-08 09:40:03 UTC hexbin/build/0000755000176200001440000000000013776015100012626 5ustar liggesusershexbin/build/vignette.rds0000644000176200001440000000041313776015100015163 0ustar liggesusersj0F)}>Ab &Ld zv4s|r4cFI˯e5dŬ89myJKBsB3;~B˫R2_6@n9 u *,;0!+(_6jWSQ6|CgEՕ2rtYGE#t1~] library(hexbin) > > ## a variation on Nicholas' post to bioconductor & example(hexViewport) > set.seed(545) > x <- rnorm(2^15) > y <- 3*x - .2*x^2 + rnorm(2^15) > hbin <- hexbin(x,y) > > ## > hp <- hexViewport(hbin, newpage = TRUE) > pushHexport(hp) > library("grid") > grid.rect() > grid.xaxis() > grid.yaxis() > grid.hexagons(hbin, style = "centroid") > hloess <- loess(y ~ x, data = hcell2xy(hbin), weights = hbin @ count) > xx <- seq(hbin@xbnds[1], hbin@xbnds[2], length = 500) > grid.lines(xx, predict(hloess, xx), + gp = gpar(col = 'red', lwd = 2), default.units = "native") > popViewport() > > proc.time() user system elapsed 0.368 0.020 0.379 hexbin/tests/hdiffplot.R0000644000176200001440000000160413171627112014775 0ustar liggesuserslibrary(hexbin) if(R.version$major != "1" || as.numeric(R.version$minor) >= 7) RNGversion("1.6") set.seed(213) x1 <- rnorm(10000) y1 <- rnorm(10000) x2 <- rnorm(10000,mean = .3) y2 <- rnorm(10000,mean = .3) rx <- range(x1,x2) ry <- range(y1,y2) str(bin1 <- hexbin(x1,y1, xbnds = rx, ybnds = ry)) str(bin2 <- hexbin(x2,y2, xbnds = rx, ybnds = ry)) str(erode(bin1)) str(smbin1 <- smooth.hexbin(bin1)) (smbin2 <- smooth.hexbin(bin2)) str(erodebin1 <- erode.hexbin(smbin1)) (erodebin2 <- erode.hexbin(smbin2)) if(FALSE)## does not work -- what funny stuff is hdiffplot() doing??? par(mfrow = c(2,1)) if(exists("hdiffplot", mode="function")) { ## not yet in new hexbin hdiffplot(bin1,bin2, main = "Original N(0,*) Random bins") hdiffplot(smbin1,smbin2, main = "smooth.hexbin() smoothed bins") plot.new() hdiffplot(erodebin1,erodebin2, main = "erode.hexbin()d smoothed bins") }# not yet hexbin/tests/hray.Rout.save0000644000176200001440000000246613171627112015455 0ustar liggesusers R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > set.seed(572) > > x <- rnorm(100) > y <- rnorm(100) > val <- rnorm(100) > inc <- abs(rnorm(100,sd = .3)) > loB <- val-inc > hiB <- val+inc > > if(exists("hray", mode="function")) { # 'real soon now' + + ## no confidence bounds + plot(x,y,type = 'n') + hray(x,y,val) + + ## confidence bounds + plot(x,y,type = 'n') + hray(x,y,val, lo = loB, hi = hiB) + + ## clockwise orientation + plot(x,y,type = 'n') + hray(x,y,val, loB, hiB, clockwise = TRUE) + + ## no tics and small filled dots + plot(x,y,type = 'n') + hray(x,y,val, loB, hiB, ticlength = FALSE, + dotside = 20, dotlength = .025, dotden = -1) + + } > > proc.time() user system elapsed 0.252 0.012 0.258 hexbin/tests/hdiffplot.Rout.save0000644000176200001440000001313213466540766016501 0ustar liggesusers R version 3.6.0 (2019-04-26) -- "Planting of a Tree" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > if(R.version$major != "1" || as.numeric(R.version$minor) >= 7) + RNGversion("1.6") Warning messages: 1: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") : buggy version of Kinderman-Ramage generator used 2: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") : non-uniform 'Rounding' sampler used > set.seed(213) > x1 <- rnorm(10000) > y1 <- rnorm(10000) > > x2 <- rnorm(10000,mean = .3) > y2 <- rnorm(10000,mean = .3) > > rx <- range(x1,x2) > ry <- range(y1,y2) > > str(bin1 <- hexbin(x1,y1, xbnds = rx, ybnds = ry)) Formal class 'hexbin' [package "hexbin"] with 16 slots ..@ cell : int [1:535] 16 20 48 70 74 75 76 80 99 101 ... ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > str(bin2 <- hexbin(x2,y2, xbnds = rx, ybnds = ry)) Formal class 'hexbin' [package "hexbin"] with 16 slots ..@ cell : int [1:545] 41 51 75 76 104 107 110 114 136 138 ... ..@ count : int [1:545] 1 1 1 1 1 2 1 1 2 1 ... ..@ xcm : num [1:545] -1.141 1.445 -0.493 -0.324 -0.995 ... ..@ ycm : num [1:545] -3.42 -3.45 -3.24 -3.35 -2.9 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 545 ..@ call : language hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) ..@ xlab : chr "x2" ..@ ylab : chr "y2" ..@ cID : NULL ..@ cAtt : int(0) > > str(erode(bin1)) Formal class 'erodebin' [package "hexbin"] with 19 slots ..@ eroded: logi [1:535] FALSE FALSE FALSE FALSE FALSE FALSE ... ..@ cdfcut: num 0.5 ..@ erode : int [1:71] 12 35 34 57 52 4 30 101 138 150 ... ..@ cell : int [1:535] 16 20 48 70 74 75 76 80 99 101 ... ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 30 ..@ shape : num 1 ..@ xbnds : num [1:2] -3.8 4.3 ..@ ybnds : num [1:2] -3.71 4.17 ..@ dimen : num [1:2] 36 31 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > > str(smbin1 <- smooth.hexbin(bin1)) Formal class 'smoothbin' [package "hexbin"] with 17 slots ..@ wts : num [1:3] 48 4 1 ..@ cell : int [1:906] 17 18 19 21 22 23 51 52 53 54 ... ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 34 ..@ shape : num 1 ..@ xbnds : num [1:2] -4.34 4.84 ..@ ybnds : num [1:2] -4.23 4.7 ..@ dimen : num [1:2] 40 35 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > (smbin2 <- smooth.hexbin(bin2)) 'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) n = 10000 points in nc = 545 hexagon cells in grid dimensions 40 by 35 > > str(erodebin1 <- erode.hexbin(smbin1)) Formal class 'erodebin' [package "hexbin"] with 19 slots ..@ eroded: logi [1:906] FALSE FALSE FALSE FALSE FALSE FALSE ... ..@ cdfcut: num 0.5 ..@ erode : int [1:73] 11 35 95 100 117 88 6 39 167 232 ... ..@ cell : int [1:906] 17 18 19 21 22 23 51 52 53 54 ... ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ... ..@ xcm : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ... ..@ ycm : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ... ..@ xbins : num 34 ..@ shape : num 1 ..@ xbnds : num [1:2] -4.34 4.84 ..@ ybnds : num [1:2] -4.23 4.7 ..@ dimen : num [1:2] 40 35 ..@ n : int 10000 ..@ ncells: int 535 ..@ call : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry) ..@ xlab : chr "x1" ..@ ylab : chr "y1" ..@ cID : NULL ..@ cAtt : int(0) > (erodebin2 <- erode.hexbin(smbin2)) 'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) n = 10000 points in nc = 545 hexagon cells in grid dimensions 40 by 35 > > if(FALSE)## does not work -- what funny stuff is hdiffplot() doing??? + par(mfrow = c(2,1)) > > if(exists("hdiffplot", mode="function")) { ## not yet in new hexbin + hdiffplot(bin1,bin2, main = "Original N(0,*) Random bins") + + hdiffplot(smbin1,smbin2, main = "smooth.hexbin() smoothed bins") + + plot.new() + hdiffplot(erodebin1,erodebin2, main = "erode.hexbin()d smoothed bins") + }# not yet > > proc.time() user system elapsed 0.340 0.015 0.347 hexbin/tests/large.R0000644000176200001440000000136213171627112014111 0ustar liggesuserslibrary(hexbin) if(FALSE) { ## the following is still quite a bit from working/useful : ## what should that do? set a palette? rgb <- matrix(c( 15,15,15, 0, 0, 0, 1, 9,15, 9,15, 9, 15, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 0, 2, 7, 0, 7, 1, 8, 1, 1, 15, 2, 2, 11, 1, 1, 8, 1, 1, 5, 1, 1, 5, 1, 1, 15,15,15), ncol = 3, byrow = TRUE) ##ps.options(rasters=600,color=rgb/15,background=2) ##ps.options(color=rgb/15,background=2) postscript("large.ps",width = 10,height = 7.5) plot.hexbin(ans.25mil, style = "nest", lcex = .9) }## FALSE, i.e. nothing done hexbin/tests/large.Rout.save0000644000176200001440000000276713171627112015610 0ustar liggesusers R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(hexbin) > > if(FALSE) { ## the following is still quite a bit from working/useful : + + ## what should that do? set a palette? + rgb <- matrix(c( + 15,15,15, + + 0, 0, 0, + 1, 9,15, + 9,15, 9, + 15, 9, 9, + + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + 0, 0, 0, + + 9, 9, 9, + 0, 2, 7, + 0, 7, 1, + 8, 1, 1, + + 15, 2, 2, + 11, 1, 1, + 8, 1, 1, + 5, 1, 1, + 5, 1, 1, + 15,15,15), ncol = 3, byrow = TRUE) + + ##ps.options(rasters=600,color=rgb/15,background=2) + ##ps.options(color=rgb/15,background=2) + postscript("large.ps",width = 10,height = 7.5) + + plot.hexbin(ans.25mil, style = "nest", lcex = .9) + + }## FALSE, i.e. nothing done > > proc.time() user system elapsed 0.240 0.032 0.265 hexbin/src/0000755000176200001440000000000013776015100012316 5ustar liggesusershexbin/src/reg.c0000644000176200001440000000134313227156346013251 0ustar liggesusers#include #include extern void F77_NAME(hbin )(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(herode)(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *); extern void F77_NAME(hsm )(void *, void *, void *, void *, void *, void *, void *); static const R_FortranMethodDef FortranEntries[] = { {"hbin", (DL_FUNC) &F77_NAME(hbin), 13}, {"herode", (DL_FUNC) &F77_NAME(herode), 10}, {"hsm", (DL_FUNC) &F77_NAME(hsm), 7}, {NULL, NULL, 0} }; void R_init_myLib(DllInfo *info) { R_registerRoutines(info, NULL, NULL, FortranEntries, NULL); R_useDynamicSymbols(info, FALSE); R_forceSymbols(info, TRUE); } hexbin/src/herode.f0000644000176200001440000001304113171627112013733 0ustar liggesusersC File: herode.f C Version date: Jan 4, 1994 C Programmer: Daniel B. Carr C C The vector erode returns the gray-level erosion order for hexagon cells. C The erosion cycle is: C cycle = (erode-1)/6 + 1 C Many cells may be eroded in the same cycle C A tie break is the cell count deficit at erosion time: C deficit=erode - 6*cycle C The last eroded cell might be considered a bivariate median C C The algorithm: C Repeat until no cells are left in the list. C Process list C Reduce the cell counts by the a multiple of exposed sides C If a cell count is zero or less after an erosion cycle C let order=order + 6 C report erode = order + cell count (count is <= 0) C remove the cell from consideration C update exposed side counts for existing neighbor cells C if exposed sides was zero, temporarily store id's C else C compress list C endif C Add temporarily stored id's to list C End Repeat subroutine herode(cell,cnt,n,bdim, * erode,ncnt,ncell,sides,neib,exist) C C implicit none integer cell(*), cnt(*) ! cell id and count integer n, bdim(2) ! number of cells and 2-D array bounds integer erode(*) ! erosion status integer ncell(*),ncnt(*) ! extracted id's and expanded counts integer sides(*) ! number of exposed sides integer neib(6,*) ! pointers to the neighbors logical exist(0:*) ! cell existence integer nrow, ncol, Lmax ! dimensions integer inc1(6), inc2(6) ! increments to get neighbors integer i, icell, j, k, L ! subscripts integer nc, nnc, nb, ninc, r, c !more subscripts integer loop, order, maxcnt C_______Zero cell ordering numbers________________________________ order=0 C_______Load the increment arrays and constants nrow = bdim(1) ncol = bdim(2) Lmax = nrow * ncol nnc = n C______Load increment arrays to neigbors______________ C C order=right, up left, down left, up right, left, down right inc1(1)= 1 inc1(2)= ncol-1 inc1(3)= -ncol-1 inc1(4)= ncol inc1(5)=-1 inc1(6)= -ncol inc2(1)= 1 inc2(2)= ncol inc2(3)= -ncol inc2(4)= ncol+1 inc2(5)=-1 inc2(6)= -ncol+1 c_______load working arrays_______________________________________________ do i=0,Lmax exist(i)=.false. enddo maxcnt=0 do i=1,n icell=cell(i) ncnt(icell)=cnt(i) exist(icell)=.true. maxcnt=max(maxcnt,cnt(i)) enddo C_______Store pointers to cell neighbors_________________________ C C A pointer of 0 means the neigbor in out of bounds C Also find the max count C Speed: Can avoid adding 1's to r and c C but this code is easier to follow do i=1,n L=cell(i) k = L -1 r=k/ncol+1 c=mod(k,ncol)+1 if(mod(r,2).eq.1)then do j = 1,6 neib(j,L) = L + inc1(j) enddo if (c .eq. 1) then neib(2,L) = 0 neib(3,L) = 0 neib(5,L) = 0 else if (c .eq. ncol) then neib(1,L) = 0 endif if (r .eq. 1) then neib(3,L) = 0 neib(6,L) = 0 else if(r.eq.nrow)then neib(2,L) = 0 neib(4,L) =0 endif else do j= 1,6 neib(j,L) = L + inc2(j) enddo if (c .eq. 1) then neib(5,L) = 0 else if (c .eq. ncol) then neib(1,L) = 0 neib(4,L) = 0 neib(6,L) = 0 endif if (r .eq. nrow) then neib(2,L) = 0 neib(4,L) = 0 endif endif enddo C_______Count exposed sides for cells in the contour_________________ do i=1,n icell=cell(i) sides(icell)=0 do j=1,6 if(.not. exist( neib(j,icell) ) )then sides(icell)=sides(icell)+ 1 endif enddo enddo C________Grab surface cells___________________________________________ nc=0 do i=1,n if(sides(cell(i)).gt.0)then nc=nc+1 ncell(nc)=cell(i) endif enddo n=nc !n is now the number of exposed, non-empty cells C_______The outer loop________________________________________________ C C temporary indices C nc: index for cells remaining on the list C ninc: index for newly exposed cells added to back of list do while(n.gt.0) C Subtract exposed-side counts from the surface cell counts C until at least one cell is empty. loop=maxcnt do i=1,n icell=ncell(i) loop=min( (ncnt(icell)-1)/sides(icell) , loop) enddo loop=loop+1 !all loop values are 1 too small C update the counts, rank and remove eroded cells nc=0 order=order+6 ninc=n do i=1,n icell=ncell(i) ncnt(icell)=ncnt(icell)-sides(icell)*loop if(ncnt(icell).le.0)then C Remove the empty cell and store it's order exist(icell)=.false. erode(icell)=order+ncnt(icell) C Update the neighbors of the empty cell do j=1,6 nb=neib(j,icell) if(exist(nb))then C Store cells for addition to surface list if(sides(nb).eq.0)then ninc=ninc+1 ncell(ninc)=nb endif C Update sides for the neighbors sides(nb)=sides(nb)+1 endif enddo else C Save remaining cells nc=nc+1 ncell(nc)=ncell(i) endif enddo C Add new surface cells if any do i=n+1,ninc,1 nc=nc+1 ncell(nc)=ncell(i) enddo n=nc enddo C_______compress result___________________________________________ do i=1,nnc erode(i)=erode(cell(i)) enddo n=nnc return end hexbin/src/hsm.f0000644000176200001440000000360613171627112013262 0ustar liggesusersC File: hsm.f C Programmer: Daniel B. Carr C Version Date: January 3, 1994 C C This program is an hexagon cell smoother. It smooths into C neighboring cells and hence expands. C The kernal is a crude integer kernel. C The boundary hexagons get weight 1, the center hexagon C gets weight, wt, which by default is set to six. C C subroutine hsm(cell,cnt,n,nmax,sm,ncol,wt) implicit none integer n, nmax, ncol integer cell(*), cnt(*), sm(*), wt(*) integer ind, ind1(6), ind2(12),ind3(6), ind4(12), loc integer row, cnt1, cnt2, wta, wtb, wtc integer i, j C__________Constants___________________________________________ ind1(1)=-1 ind1(2)=ncol-1 ind1(3)=ncol ind1(4)=+1 ind1(5)=-ncol ind1(6)=-ncol-1 ind2(1)=-2 ind2(2)=ncol-2 ind2(3)=2*ncol-1 ind2(4)=2*ncol ind2(5)=2*ncol+1 ind2(6)=ncol+1 ind2(7)=2 ind2(8)=-ncol+1 ind2(9)=-2*ncol+1 ind2(10)=-2*ncol ind2(11)=-2*ncol-1 ind2(12)=-ncol-2 ind3(1)=-1 ind3(2)=ncol ind3(3)=ncol+1 ind3(4)=+1 ind3(5)=-ncol+1 ind3(6)=-ncol ind4(1)=-2 ind4(2)=ncol-1 ind4(3)=2*ncol-1 ind4(4)=2*ncol ind4(5)=2*ncol+1 ind4(6)=ncol+2 ind4(7)=2 ind4(8)=-ncol+2 ind4(9)=-2*ncol+1 ind4(10)=-2*ncol ind4(11)=-2*ncol-1 ind4(12)=-ncol-1 wta = wt(1) wtb = wt(2) wtc = wt(3) C_________Smoothing_____________________________________ do i=1,n sm(cell(i))=wta*cnt(i) enddo do i=1,n loc=cell(i) row=(loc-1)/ncol + 1 cnt1=wtb*cnt(i) cnt2=wtc*cnt(i) if(mod(row,2).eq.1)then do j=1,6 ind=loc+ind1(j) sm(ind)=sm(ind)+cnt1 enddo do j=1,12 ind=loc+ind2(j) sm(ind)=sm(ind)+cnt2 enddo else do j=1,6 ind=loc+ind3(j) sm(ind)=sm(ind)+cnt1 enddo do j=1,12 ind=loc+ind4(j) sm(ind)=sm(ind)+cnt2 enddo endif enddo n=0 do i=1,nmax if(sm(i).gt.0)then n=n+1 cell(n)=i cnt(n)=sm(i) endif enddo return end hexbin/src/hcell.f0000644000176200001440000000251513171627112013560 0ustar liggesusers subroutine hcell(x,y,cell,n,size,shape,rx,ry,bnd) C Copyright 1991 C Version Date: September 16, 1994 C Programmer: Dan Carr C Indexing: Left to right, bottom to top C bnd(1) rows, bnd(2) columns C Output: cell ids for none empty cells, revised bnd(1) c implicit none integer n, cell(1), bnd(2) double precision x(1), y(1), rx(2), ry(2), size, shape integer i, i1, i2, iinc integer j1, j2, jinc integer L, lat, celmax double precision c1, c2, con1, con2, dist1 double precision sx, sy, xmin, ymin, xr, yr C_______Constants for scaling the data_____________________________ xmin = rx(1) ymin = ry(1) xr = rx(2)-xmin yr = ry(2)-ymin c1 = size/xr c2 = size*shape/(yr*sqrt(3.)) jinc= bnd(2) lat=jinc+1 iinc= 2*jinc con1=.25 con2=1./3. celmax=0 C_______Binning loop________________________________________ do i=1,n sx = c1 * (x(i) - xmin) sy = c2 * (y(i) - ymin) j1 = sx+.5 i1 = sy+.5 dist1=(sx-j1)**2 + 3.*(sy-i1)**2 if(dist1.lt.con1)then L=i1*iinc+j1+1 elseif(dist1.gt.con2)then L=int(sy)*iinc + int(sx)+lat else j2 = sx i2 = sy if( dist1.le.(sx-j2-.5)**2 + 3. * (sy - i2 -.5)**2) then L=i1*iinc+j1+1 else L=i2*iinc+j2+lat endif endif cell(i)=L celmax = max(celmax,L) enddo bnd(1)=(celmax-1)/bnd(2)+1 return end hexbin/src/hbin.f0000644000176200001440000000365313171627112013415 0ustar liggesusers subroutine hbin(x,y,cell,cnt,xcm,ycm, size, shape, * rx,ry, bnd, n, cellid) C Copyright 1991 C Version Date: September 16, 1994 C Programmer: Dan Carr C Indexing: Left to right, bottom to top C bnd(1) rows, bnd(2) columns C Output: cell ids for non empty cells, revised bnd(1) c optionally also return cellid(1:n) c Copyright (2004) Nicholas Lewin-Koh and Martin Maechler implicit none integer n, nc, cell(*), cnt(*), bnd(2), cellid(*) c cellid(*): length 1 or n double precision x(n), y(n), xcm(*),ycm(*), rx(2),ry(2), size double precision shape integer i, i1, i2, iinc integer j1, j2, jinc integer L, lmax, lat double precision c1, c2, con1, con2, dist1 double precision sx, sy, xmin, ymin, xr, yr logical keepID keepID = (cellid(1) .eq. 0) C_______Constants for scaling the data_____________________________ xmin = rx(1) ymin = ry(1) xr = rx(2)-xmin yr = ry(2)-ymin c1 = size/xr c2 = size*shape/(yr*sqrt(3.)) jinc= bnd(2) lat=jinc+1 iinc= 2*jinc lmax=bnd(1)*bnd(2) con1=.25 con2=1.0/3.0 C_______Binning loop________________________________________ do i=1,n sx = c1 * (x(i) - xmin) sy = c2 * (y(i) - ymin) j1 = sx+.5 i1 = sy+.5 dist1=(sx-j1)**2 + 3.*(sy-i1)**2 if(dist1 .lt. con1) then L=i1*iinc + j1+1 elseif(dist1 .gt. con2) then L=int(sy)*iinc + int(sx)+lat else j2 = sx i2 = sy if(dist1 .le. (sx-j2 -.5)**2 + 3.*(sy-i2 -.5)**2) then L=i1*iinc+ j1+1 else L=i2*iinc+ j2+lat endif endif cnt(L)=cnt(L)+1 if (keepID) cellid(i)=L xcm(L)=xcm(L)+ (x(i)-xcm(L))/cnt(L) ycm(L)=ycm(L)+ (y(i)-ycm(L))/cnt(L) enddo C_______Compression of output________________________________________ nc=0 do L=1,lmax if(cnt(L) .gt. 0) then nc=nc+1 cell(nc)=L cnt(nc)=cnt(L) xcm(nc)=xcm(L) ycm(nc)=ycm(L) endif enddo n=nc bnd(1)=(cell(nc)-1)/bnd(2)+1 return end hexbin/vignettes/0000755000176200001440000000000013776015100013537 5ustar liggesusershexbin/vignettes/hexagon_binning.Rnw0000644000176200001440000005225413562352572017406 0ustar liggesusers%% Emacs: use Rnw-mode if available, else noweb %% NOTE -- ONLY EDIT THE .Rnw FILE ! %\VignetteIndexEntry{Hexagon Binning} %\VignetteDepends{hexbin, grid, marray} %\VignetteKeywords{Over plotting, Large data set, Visualization} %\VignettePackage{hexbin} \documentclass[]{article} \usepackage[authoryear,round]{natbib} \usepackage{amsmath} \usepackage{hyperref} \author{Nicholas Lewin-Koh\footnote{with minor assistance by Martin M\"achler}} \begin{document} \title{Hexagon Binning: an Overview} \maketitle{} \section{Overview} Hexagon binning is a form of bivariate histogram useful for visualizing the structure in datasets with large $n$. The underlying concept of hexagon binning is extremely simple; \begin{enumerate} \item the $xy$ plane over the set (range($x$), range($y$)) is tessellated by a regular grid of hexagons. \item the number of points falling in each hexagon are counted and stored in a data structure \item the hexagons with count $ > 0$ are plotted using a color ramp or varying the radius of the hexagon in proportion to the counts. \end{enumerate} The underlying algorithm is extremely fast and effective for displaying the structure of datasets with $n \ge 10^6$. If the size of the grid and the cuts in the color ramp are chosen in a clever fashion than the structure inherent in the data should emerge in the binned plots. The same caveats apply to hexagon binning as apply to histograms and care should be exercised in choosing the binning parameters. The hexbin package is a set of function for creating, manipulating and plotting hexagon bins. The package extends the basic hexagon binning ideas with several functions for doing bivariate smoothing, finding an approximate bivariate median, and looking at the difference between two sets of bins on the same scale. The basic functions can be incorporated into many types of plots. This package is based on the original package for S-PLUS by Dan Carr at George Mason University and is mostly the fruit of his graphical genius and intuition. \section{Theory and Algorithm} Why hexagons? There are many reasons for using hexagons, at least over squares. Hexagons have symmetry of nearest neighbors which is lacking in square bins. Hexagons are the maximum number of sides a polygon can have for a regular tesselation of the plane, so in terms of packing a hexagon is 13\% more efficient for covering the plane than squares. This property translates into better sampling efficiency at least for elliptical shapes. Lastly hexagons are visually less biased for displaying densities than other regular tesselations. For instance with squares our eyes are drawn to the horizontal and vertical lines of the grid. The following figure adapted from \cite{carretal} shows this effectively. \begin{figure}[h] \centering <>= library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() @ \caption[bivariate: squares and hexagons]{A bivariate point set binned into squares and hexagons. Bins are scaled approximately equal, and the size of the glyph is proportional to the count in that bin.} \label{fig:compHexSq} \end{figure} We can see in Figure~\ref{fig:compHexSq} that when the data are plotted as squares centered on a regular lattice our eye is drawn to the regular lines which are parallel to the underlying grid. Hexagons tend to break up the lines. How does does the hexagon binning algorithm work? \begin{enumerate} \item Squash $Y$ by $\sqrt{3}$ \item Create a dual lattice \item Bin each point into pair of near neighbor rectangles \item Pick closest of the rectangle centers (adjusting for $\sqrt{3}$) \end{enumerate} << nearNeighbor, echo=FALSE, results=hide >>= x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 @ \begin{figure}[h] \centering <>= par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) @ \caption[Near Neighbor Rectangles]{} \label{fig:binalg} \end{figure} Figure~\ref{fig:binalg} shows graphically how the algorithm works. In the first panel we see the the dual lattice laid out in black and blue points. The red point is an arbitrary point to be binned. The second panel shows the near neigbor rectangles for each lattice around the point to be binned, the intersection of the rectangles contains the point. The last panel shows the simple test for locating the point in the hexagon, the closest of the two corners which are not intersections is the center of the hexagon to which the point should be allocated. The binning can be calculated in one pass through the data, and is clearly $O(n)$ with a small constant. Storage is vastly reduced compared to the original data. \section{Basic Hexagon Binning Functions} Using the basic hexagon binning functions are not much more involved than using the basic plotting functions. The following little example shows the basic features of the basic plot and binning functions. We start by loading the package and generating a toy example data set. << basic, fig=TRUE, results=hide >>= x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) @ There are two things to note here. The first is that the function \texttt{gplot.hexbin} is defined as a \texttt{plot} method for the S4 class \texttt{hexbin}. The second is that the default color scheme for the hexplot is a gray scale. However, there is an argument to plot, \texttt{colramp}, that allows the use of any function that excepts an argument \texttt{n} and returns $n$ colors. Several functions are supplied that provide alternative color-ramps to R's built in color ramp functions, see \texttt{help(ColorRamps)}. << showcol, fig=TRUE, width=7, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() @ The figure shows three examples of using hexagons in a plot for large $n$ with different color schemes. Upper left: the default gray scale, upper right: the R base \texttt{terrain.colors()}, and lower middle: \texttt{BTY()}, a blue to yellow color ramp supplied with hexbin on a perceptually linear scale. The hexbin package supplies a plotting method for the hexbin data structure. The plotting method \texttt{gplot.hexbin} accepts all the parameters for the hexagon function and supplies a legend as well, for easy interpretation of the plot. Figure~2 shows a hex binned plot with a legend. A function \texttt{grid.hexlegend} is supplied for creating user specified hexagon legends. \section{Extended Hexagon Functions} So far we have looked at the basic hexagon plot. The hexbin package supplies several extensions to the basic hexbin, and the associated hexplot. The extensions discussed in this section will be smoothing hexbin objects using the hsmooth function, approximating a bivariate median with hexagons and a version of a bivariate boxplot, and using eroded hexbin objects to look at the overlap of two bivariate populations. \subsection{Smoothing with \texttt{hsmooth}} At this point the hexbin package only provides a single option for smoothing using a discrete kernel. Several improvements are in development including an apply function over neighborhoods and spline functions using a hexagonal basis or tensor products. The apply function should facilitate constructing more sophisticated kernel smoothers. The hexagon splines will provide an alternative to smoothing on a square grid and allow interpolation of hexagons to finer grids. The current implementation uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of the counts in the defined neighborhood, including the center cell and weights. The counts are blurred over the the domain, and the domain increases because of shifting. Generally the dimension of the occupied cells of the lattice increases by one, sometimes two. Some examples of using the hsmooth function are given below. Notice in the plots that the first plot is with no smoothing, weights are \texttt{c(1,0,0)} meaning that only the center cell is used with identity weights. The second plot shows a first order kernel using weights \texttt{c(24,12,0)}, while the third plot uses weights for first and second order neighbors specified as \texttt{c(48,24,12)}. The code segment generating these plots rescales the smoothed counts so that they are on the original scale. << showsmth, fig=TRUE, width=8, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() @ \subsection{Bin Erosion and the \texttt{hboxplot}} The next tool to introduce, gray level erosion, extends the idea of the boxplot. The idea is to extract cells in a way that the most exposed cells are removed first, ie cells with fewer neighbors, but cells with lower counts are removed preferentially to cells with higher counts. The algorithm works as follows: Mark the high count cells containing a given fraction, cdfcut, of the total counts. Mark all the cells if cdfcut is zero. The algorithm then performs gray-level erosion on the marked cells. Each erosion cycle removes counts from cells. The counts removed from each cell are a multiple of the cell's exposed-face count. The algorithm chooses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contains an erosion number for each cell. The value of erode is \begin{center} $6\times$(The erosion cycle at cell removal) $ - $ (The cell deficit at removal) \end{center} The cell with the highest erosion number is a candidate bivariate median. A few ties in the erosion order are common. The notion of an ordering to the median is nice because it allows us to create a version of a bivariate box plot built on hexagons. The following example comes from a portion of the ''National Health and Nutrition Examination Survey'' included in \texttt{hexbin} as the sample data set NHANES. The data consist of 9575 persons and mesures various clinical factors. Here in Figure~\ref{hbox} we show the levels of transferin, a measure of iron binding against hemoglobin for all \begin{figure}[h] \centering << echo=FALSE, results=hide >>= data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) @ << hbox, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() @ \caption{Hexagon "boxplots" showing the top 95 percent of the data for males and females. The red hexagons are an estimate of the bivariate median.} \label{hbox} \end{figure} Note that we have added ``hexagon graph paper'' to the plot. This can be done for any hexbin plot, using the command \texttt{hexGraphPaper()} where the main argument is the hexbin object. \subsection{Comparing Distributions and the \texttt{hdiffplot}} With univariate data, if there are multiple groups, one often uses a density estimate to overlay densities, and compare two or more distributions. The hdiffplot is the bivariate analog. The idea behind the hdiff plot is to plot one or more bin objects representing multiple groups to compare the distributions. The following example uses the National Health data supplied in the hexbin package, (\texttt{NHANES}). Below we show a comparison of males and females, the bivariate relationship is transferin, which is a derived measure of the ability of blood to bind oxygen, vs the level of hemoglobin. Note that in the call to \texttt{hdiffplot} we erode the bins to calculate the bivariate medians, and only display the upper 75\% of the data. \begin{figure}[h] \centering << hdiff, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) @ \caption{A difference plot of transferin vs hemoglobin for males and females.} \label{hdiffplot} \end{figure} \subsection{Plotting a Third Concomitant Variable} In many cases, such as with spatial data, one may want to plot the levels of a third variable in each hexagon. The grid.hexagons function has a pair of arguments, \texttt{use.count} and \texttt{cell.at}. If \texttt{use.count = FALSE} and \texttt{cell.at} is a numeric vector of the same length as \texttt{hexbin@count} then the attribute vector will be used instead of the counts. \texttt{hexTapply} will summarize values for each hexagon according to the supplied function and return the table in the right order to use as an attribute vector. Another alternative is to set the \texttt{cAtt} slot of the hexbin object and grid.hexagons will automatically plot the attribute if \texttt{use.count = FALSE} and \texttt{cell.at = NULL}. Here is an example using spatial data. Often cartographers use graduated symbols to display varying numerical quantities across a region. \section{Example: cDNA Chip Normalization} This example is taken from the marray package, which supplies methods and classes for the normalization and diagnostic plots of cDNA microarrays. In this example the goal is not to make any comments about the normalization methodology, but rather to show how the diagnostic plots can be enhanced using hexagon binning due to the large number of points ($n = 8,448$ cDNA probes per chip). We look at the diagnostic plot $M$ vs $A$, where $M$ is the log--ratio, $M = \log <- 2 \frac{R}{G}$ and $A$ is the overall intensity, $A = \log <- 2\sqrt{RG}$. Figure~3 shows the plot using points and on the right hexagons. The hexagon binned plot shows that most of the pairs are well below zero, and that the overall shape is more like a comet with most of the mass at the bottom of the curve, rather than a thick bar of points curving below the line. << marray1, fig=TRUE, results=hide >>= ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } @ \section{Manipulating Hexbins} The underlying functions for hexbin have been rewritten and now depend on the grid graphics system. The support unit for all hexagon plots is the hexViewport. The function \texttt{hexViewport()} takes a hexbin object as input and creates a viewport scaled to the current device or viewport so that the aspect ratio is scaled appropriately for the hexagons. Unlike in the base graphic functions where the aspect ratio is maintained by shifting the range of the axes, here the extra space is shifted into the margins. Currently hexViewport returns a hexViewport object that has information on the margins and its own pushViewport method. In the next example we will 1st show how to manipulate an existing plot using grid commands and second show how to create a custom plotting function using \texttt{hexViewport} and grid. \subsection{Adding to an existing plot} Adding to an existing plot requires the use of grid functions. For instance, in the following code, << addto, fig=TRUE, echo=TRUE, results=verbatim >>= if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) } @ we have to use \texttt{grid.lines()}, as opposed to \texttt{lines()}. \bibliography{references} \end{document} hexbin/vignettes/references.bib0000644000176200001440000000057713562345032016352 0ustar liggesusers@article{carretal, author = {Daniel B. Carr and Anthony R. Olsen and Denis White}, title = {Hexagon Mosaic Maps for Display of Univariate and Bivariate Geographical Data}, journal = {Cartography and Geographic Information Systems}, volume = {19}, number = {4}, pages = {228-236}, year = {1992}, publisher = {Taylor & Francis}, doi = {10.1559/152304092783721231} } hexbin/R/0000755000176200001440000000000013775713071011743 5ustar liggesusershexbin/R/LINGRAY.R0000644000176200001440000000461713171627112013171 0ustar liggesusersLinGray <- function(n,beg = 1,end = 92) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,0), c(1,1,1), c(1,1,1), c(2,2,2), c(3,3,3), c(4,4,4), c(5,5,5), c(6,6,6), c(7,7,7), c(8,8,8), c(9,9,9), c(10,10,10), c(11,11,11), c(12,12,12), c(13,13,13), c(14,14,14), c(15,15,15), c(16,16,16), c(17,17,17), c(18,18,18), c(19,19,19), c(20,20,20), c(21,21,21), c(22,22,22), c(23,23,23), c(24,24,24), c(25,25,25), c(26,26,26), c(27,27,27), c(28,28,28), c(29,29,29), c(30,30,30), c(32,32,32), c(34,34,34), c(35,35,35), c(37,37,37), c(39,39,39), c(41,41,41), c(43,43,43), c(45,45,45), c(46,46,46), c(47,47,47), c(49,49,49), c(51,51,51), c(52,52,52), c(54,54,54), c(56,56,56), c(59,59,59), c(61,61,61), c(64,64,64), c(67,67,67), c(69,69,69), c(72,72,72), c(75,75,75), c(76,76,76), c(78,78,78), c(81,81,81), c(84,84,84), c(87,87,87), c(91,91,91), c(94,94,94), c(97,97,97), c(101,101,101), c(104,104,104), c(107,107,107), c(108,108,108), c(112,112,112), c(116,116,116), c(120,120,120), c(124,124,124), c(128,128,128), c(132,132,132), c(136,136,136), c(141,141,141), c(145,145,145), c(147,147,147), c(150,150,150), c(154,154,154), c(159,159,159), c(164,164,164), c(169,169,169), c(174,174,174), c(179,179,179), c(185,185,185), c(190,190,190), c(195,195,195), c(201,201,201), c(207,207,207), c(212,212,212), c(216,216,216), c(218,218,218), c(224,224,224), c(226,226,226), c(230,230,230), c(237,237,237), c(243,243,243), c(245,245,245), c(252,252,252), c(255,255,255), c(255,255,255))[round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/smoothHexbin.R0000644000176200001440000000253113227156510014525 0ustar liggesuserssetClass("smoothbin", representation("hexbin", wts="numeric")) setGeneric("hsmooth", function(bin, wts) standardGeneric("hsmooth")) smooth.hexbin <- function(bin, wts = c(48, 4, 1)) { if(!is(bin,"hexbin")) stop("first argument must be a hexbin object") cell <- bin@cell - 1 n <- as.integer(length(cell)) cnt <- bin@count xbins <- bin@xbins bdim <- bin@dimen row <- bdim[1] col <- bdim[2] ncol <- col + 4 nrow <- row + 4 nmax <- ncol * nrow sm <- rep.int(0:0, nmax) nr <- cell %/% col + 2 nc <- cell %% col + 3 pad <- rep.int(0:0, nmax - n) cell <- c(nr * ncol + nc, pad) cnt <- c(cnt, pad) ans <- .Fortran("hsm", cell = as.integer(cell), cnt = as.integer(cnt), n = n, nmax = as.integer(nmax), sm = as.integer(sm), ncol = as.integer(ncol), wts = as.integer(wts))[c("cell","cnt","n")] n <- ans$n length(ans$cell) <- length(ans$cnt) <- n bin@xbins <- xbins + 4 bin@xbnds <- addBit(bin@xbnds, f = 2/xbins) bin@ybnds <- addBit(bin@ybnds, f = 2/xbins) bin@dimen <- c(nrow, ncol) bin@cell <- ans$cell bin@count <- ans$cnt new("smoothbin", bin, wts=wts) } setMethod("hsmooth", "hexbin", smooth.hexbin) hexbin/R/grid.hexlegend.R0000644000176200001440000001375313171627112014754 0ustar liggesusersgrid.hexlegend <- function(legend, ysize, lcex, inner, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut, density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, leg.unit="native") { ## the formal arg matching should happen style <- match.arg(style, eval(formals(grid.hexagons)[["style"]])) if (style %in% c("centroids", "lattice", "colorscale")) { ## _______________tranformations_______________________ if(is.null(trans)) { sc <- maxcnt - mincnt bnds <- round(mincnt + sc * colorcut) } else { if(!is.function(trans) && !is.function(inv)) stop("'trans' and 'inv' must both be functions if 'trans' is not NULL") con <- trans(mincnt) sc <- trans(maxcnt) - con bnds <- round(inv(con + sc * colorcut)) } } if(style == "colorscale") { ## use own 'inner' n <- length(bnds) spacing <- ysize/(n + 3) inner <- min(legend/3.5, (sqrt(3) * spacing)/2) } dx <- inner/2 dy <- dx/sqrt(3) hexC <- hexcoords(dx, dy, n = 1,sep=NULL) ## _______________Plotting______________________________ switch(style, "colorscale" = { midx <- legend/3 textx <- (2 * legend)/3 tx <- hexC$x + midx pen <- colramp(n) for(i in seq(length = n-1)) { grid.polygon(tx,hexC$y + i * spacing, default.units=leg.unit,id=NULL,id.lengths=6, gp=gpar(fill = pen[i], col = border)) grid.text(as.character(bnds[i]), textx, (i - 0.5) * spacing, default.units=leg.unit, gp=gpar(cex = lcex)) } grid.text(as.character(bnds[n]), textx, (n - 0.5) * spacing, default.units=leg.unit, gp=gpar(cex = lcex)) grid.text("Counts", legend/2, (n + 1.5) * spacing, default.units=leg.unit, gp=gpar(cex = 1.7 * lcex)) }, "centroids" = , "lattice" = { ## NL Solved hex overlap problem on legend ## Need to tackle too many categories radius <- sqrt(minarea + (maxarea - minarea) * colorcut) n <- length(radius) shift <- c(0, 2*dy*radius) shift <- shift[1:n] + shift[2:(n+1)] #labht <- max(strheight(as.character(bnds), cex = lcex)) labht <- convertY(unit(get.gpar(names = "fontsize")[[1]]*lcex, "points"),"native",valueOnly = TRUE) shift <- pmax(labht, shift) six <- rep.int(6:6, n) xmid <- legend/3 inc <- ysize/(n+3) if(inc > max(shift)) y <- inc * 1:n else { y <- cumsum(shift) extra.slop <- (n * inc) - y[n] # FIXME? y[n] == sum(shift) shift[-1] <- shift[-1] + extra.slop/(n-1) y <- cumsum(shift) ## (y+(1/n)*extra.slop)-y[1] ## delta <- max(log(shift))-min(log(shift)) ## fudge <- extra.slop*(diff(log(shift))/delta) ## y<- c(y[1], y[-1]+ fudge ) } textx <- rep.int((2 * legend)/3, n) ## ____________________plotting______________________ if(is.null(pen)) pen <- 1 if(is.null(border)) border <- pen grid.polygon(x = rep.int(hexC$x,n)* rep.int(radius, six) + rep.int(xmid, 6 * n), y = rep.int(hexC$y,n)* rep.int(radius, six) + rep.int(y, six), default.units=leg.unit, id=NULL, id.lengths=rep.int(6,n), gp=gpar(fill = pen, col = border)) grid.text(as.character(bnds), textx, y, default.units=leg.unit, gp=gpar(cex = lcex)) grid.text("Counts", legend/2, (n + 2) * inc, default.units=leg.unit, gp=gpar(cex =1.7 * lcex)) }, "nested.lattice" = , "nested.centroids" = { ## _____________x scaling_____________________________ numb <- cut(floor(legend/inner), breaks = c(-1, 0, 2,4)) ## Note: In old code ## top breaks=c(-1,0,2,4,8), numb<- 5 and size=1:9 if(is.na(numb)) numb <- 4 switch(numb, {warning("not enough space for legend"); return()}, size <- 5, size <- c(1, 5, 9), size <- c(1, 3, 5, 7, 9)) xmax <- length(size) radius <- sqrt(minarea + (maxarea - minarea) * (size - 1)/9) txt <- as.character(size) ##___________________y scaling_____________________ lab <- c("Ones", "Tens", "Hundreds", "Thousands", "10 Thousands", "100 Thousands", "Millions", "10 Millions", "100 Millions", "Billions") power <- floor(log10(maxcnt)) + 1 yinc <- 16 * dy if(ysize/power < yinc) {warning("Not enough height for legend"); return()} xmid <- legend/10 x <- inner * (1:xmax - (1 + xmax)/2) + xmid n <- length(x) tx <- rep.int(hexC$x, n) ty <- rep.int(hexC$y, n) six <- rep.int(6:6, n) y <- rep.int(3 * dy - yinc, xmax) ## ____________________plotting______________________ if(is.null(pen)) { pen <- 1:power +1 pen <- cbind(pen, pen +10) } if(is.null(border)) border <- FALSE for(i in 1:power) { y <- y + yinc hexpolygon(x, y, hexC, col = pen[i,1], border = border) grid.polygon(x= tx * rep.int(radius, six) + rep.int(x, six), y= ty * rep.int(radius, six) + rep.int(y, six), default.units=leg.unit, id=NULL, id.lengths=rep(6,n), gp=gpar(fill = pen[i,2], col = border)) grid.text(txt, x, y - 4.5 * dy, default.units=leg.unit, gp=gpar(cex = lcex)) ##adj= 0.5, cex = lcex) grid.text(lab[i], xmid, y[1] + 4.5 * dy, default.units=leg.unit, gp=gpar(cex = 1.7*lcex)) ##adj= 0.5, cex = 1.7*lcex) } })## switch(style = *) }## hex.legend() hexbin/R/hexutil.R0000644000176200001440000000721213171627112013540 0ustar liggesusershcell2xyInt <- function(hbin, xbins=NULL, xbnds=NULL, ybnds=NULL, shape=NULL) { if(missing(hbin) && (is.null(xbnds) || is.null(ybnds))) stop("Need a hexbin object or boundaries to make lattice") if(missing(hbin) && (is.null(xbins) || is.null(shape))) stop("Need xbins and shape to make a lattice") if(!missing(hbin)) { xbins <- hbin@xbins shape <- hbin@shape xbnds <- if(is.null(xbnds)) hbin@xbnds else xbnds ybnds <- if(is.null(ybnds)) hbin@ybnds else ybnds dimen <- hbin@dimen } if(missing(hbin)) { jmax <- floor(xbins + 1.5001) imax <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) dimen <- c(imax, jmax) } cell <- 1:(dimen[1]*dimen[2])-1 i <- cell %/% dimen[2] j <- cell %% dimen[2] list(i=i+1, j=j+1) } hgridcent <- function(xbins, xbnds, ybnds, shape, edge.add=0) { ## auxiliary for hexGraphPaper(): jmax <- floor(xbins + 1.5001) c1 <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) imax <- (jmax*c1 -1)/jmax + 1 dimen <- c(imax, jmax) c3 <- diff(xbnds)/xbins c4 <- (diff(ybnds) * sqrt(3))/(2 * shape * xbins) if(edge.add > 0) { xbnds <- xbnds + 1.5*c(-edge.add*c3, edge.add*c3) ybnds <- ybnds + c(-edge.add*c4, edge.add*c4) dimen <- dimen + rep.int(2*edge.add, 2) } jmax <- dimen[2] cell <- 1:(dimen[1]*dimen[2]) i <- cell %/% jmax j <- cell %% jmax y <- c4 * i + ybnds[1] x <- c3 * ifelse(i %% 2 == 0, j, j + 0.5) + xbnds[1] list(x = x, y = y, dimen = dimen, dx=c3, dy=c4) } hexGraphPaper <- function(hb, xbnds=NULL, ybnds=NULL, xbins=30, shape=1, add=TRUE, fill.edges=1, fill=0, border=1) { if(missing(hb) && (is.null(xbnds) || is.null(ybnds))) stop("Need a hexbin object or boundaries to make lattice") if(!missing(hb)) { xbins <- hb@xbins shape <- hb@shape xbnds <- if(is.null(xbnds)) hb@xbnds else xbnds ybnds <- if(is.null(ybnds)) hb@ybnds else ybnds dimen <- hb@dimen } xy <- hgridcent(xbins, xbnds, ybnds, shape, edge.add=fill.edges) if(add){ sx <- xbins/diff(xbnds) sy <- (xbins * shape)/diff(ybnds) inner <- 0.5 outer <- (2 * inner)/sqrt(3) dx <- inner/sx dy <- outer/(2 * sy) if(add){ hexC <- hexcoords(dx, dy, sep=NULL) hexpolygon (xy$x, xy$y, hexC, dx, dy, fill = fill, border = border, hUnit = "native") } } invisible(xy) } hexTapply <- function(hbin,dat,FUN=sum,...,simplify=TRUE) { if(is.null(hbin@cID)) stop("Must have cell ID's to do this operation \n please re-bin data using IDs = TRUE") if((length(dat)> 0) && (length(dat) != length(hbin@cID))) stop("Length of IDs does not match the length of the data") tapply(dat,hbin@cID,FUN,...,simplify=simplify) } optShape <- function(vp, height=NULL, width=NULL, mar=NULL) { if(missing(vp) && (is.null(height) || is.null(width))) stop("Need a viewport object or height and width of the plotting region.") if(!missing(vp)) { if("hexVP" %in% class(vp)) { height <- vp@plt[2] width <- vp@plt[1] } else if("viewport"%in%class(vp)) { #height <- convertHeight(unit(1,"npc"),"inches") #width <- convertWidth (unit(1,"npc"),"inches") height <- convertUnit(vp$height,"inches") width <- convertUnit(vp$width,"inches") } else stop("need valid viewport or hexViewport") } if(!is.null(mar)){ height <- height - mar[1] - mar[3] width <- width - mar[2] - mar[4] } shape <- as.numeric(height)/as.numeric(width) shape } inout.hex <- function(hbin,mincnt) { if(is.null(hbin@cID)) stop("bin object must have a cID slot, \n try re-binning with ID = TRUE") tI <- table(hbin@cID) which(hbin@cID%in%(names(tI)[tI 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c( 0, 0, 0), c( 45, 0, 36), c( 56, 0, 46), c( 60, 0, 49), c( 67, 0, 54), c( 70, 0, 59), c( 71, 0, 61), c( 75, 0, 68), c( 74, 0, 73), c( 74, 0, 77), c( 73, 0, 81), c( 71, 0, 87), c( 69, 1, 90), c( 68, 2, 94), c( 66, 3, 97), c( 63, 6,102), c( 61, 7,106), c( 58, 10,109), c( 56, 12,113), c( 53, 15,116), c( 48, 18,119), c( 47, 20,121), c( 44, 23,124), c( 41, 27,128), c( 40, 28,129), c( 37, 32,132), c( 34, 36,134), c( 29, 43,137), c( 25, 52,138), c( 24, 57,139), c( 24, 62,141), c( 24, 64,142), c( 23, 65,142), c( 23, 69,143), c( 23, 71,142), c( 23, 71,142), c( 23, 73,142), c( 23, 75,142), c( 23, 75,142), c( 23, 78,142), c( 23, 80,142), c( 23, 80,142), c( 23, 82,141), c( 23, 85,141), c( 23, 85,141), c( 23, 87,140), c( 23, 87,140), c( 24, 90,140), c( 24, 90,140), c( 24, 93,139), c( 24, 93,139), c( 24, 93,139), c( 24, 93,139), c( 24, 97,139), c( 24, 97,139), c( 25,101,138), c( 25,101,138), c( 25,104,137), c( 25,104,137), c( 25,104,137), c( 26,108,137), c( 26,108,137), c( 27,111,136), c( 27,111,136), c( 27,111,136), c( 27,115,135), c( 27,115,135), c( 28,118,134), c( 28,118,134), c( 29,122,133), c( 29,122,133), c( 29,122,133), c( 29,122,133), c( 29,125,132), c( 29,125,132), c( 30,128,131), c( 30,128,131), c( 31,131,130), c( 31,131,130), c( 31,131,130), c( 32,134,128), c( 32,134,128), c( 33,137,127), c( 33,137,127), c( 33,137,127), c( 34,140,125), c( 34,140,125), c( 35,142,123), c( 35,142,123), c( 36,145,121), c( 36,145,121), c( 36,145,121), c( 37,147,118), c( 37,147,118), c( 38,150,116), c( 38,150,116), c( 40,152,113), c( 40,152,113), c( 41,154,111), c( 41,154,111), c( 42,156,108), c( 42,156,108), c( 43,158,106), c( 43,158,106), c( 43,158,106), c( 45,160,104), c( 45,160,104), c( 46,162,101), c( 46,162,101), c( 48,164, 99), c( 48,164, 99), c( 50,166, 97), c( 50,166, 97), c( 51,168, 95), c( 53,170, 93), c( 53,170, 93), c( 53,170, 93), c( 55,172, 91), c( 55,172, 91), c( 57,174, 88), c( 57,174, 88), c( 59,175, 86), c( 62,177, 84), c( 64,178, 82), c( 64,178, 82), c( 67,180, 80), c( 67,180, 80), c( 69,181, 79), c( 72,183, 77), c( 72,183, 77), c( 72,183, 77), c( 75,184, 76), c( 77,186, 74), c( 80,187, 73), c( 83,189, 72), c( 87,190, 72), c( 91,191, 71), c( 95,192, 70), c( 99,193, 70), c(103,194, 70), c(107,195, 70), c(111,196, 70), c(111,196, 70), c(115,196, 70), c(119,197, 70), c(123,197, 70), c(130,198, 71), c(133,199, 71), c(137,199, 72), c(140,199, 72), c(143,199, 73), c(143,199, 73), c(147,199, 73), c(150,199, 74), c(153,199, 74), c(156,199, 75), c(160,200, 76), c(167,200, 78), c(170,200, 79), c(173,200, 79), c(173,200, 79), c(177,200, 80), c(180,200, 81), c(183,199, 82), c(186,199, 82), c(190,199, 83), c(196,199, 85), c(199,198, 85), c(199,198, 85), c(203,198, 86), c(206,197, 87), c(212,197, 89), c(215,196, 90), c(218,195, 91), c(224,194, 94), c(224,194, 94), c(230,193, 96), c(233,192, 98), c(236,190,100), c(238,189,104), c(240,188,106), c(240,188,106), c(242,187,110), c(244,185,114), c(245,184,116), c(247,183,120), c(248,182,123), c(248,182,123), c(250,181,125), c(251,180,128), c(252,180,130), c(253,180,133), c(253,180,133), c(254,180,134), c(254,179,138), c(255,179,142), c(255,179,145), c(255,179,145), c(255,179,152), c(255,180,161), c(255,180,164), c(255,180,167), c(255,180,167), c(255,181,169), c(255,181,170), c(255,182,173), c(255,183,176), c(255,183,176), c(255,184,179), c(255,185,179), c(255,185,182), c(255,186,182), c(255,186,182), c(255,187,185), c(255,188,185), c(255,189,188), c(255,189,188), c(255,190,188), c(255,191,191), c(255,192,191), c(255,194,194), c(255,194,194), c(255,197,197), c(255,198,198), c(255,200,200), c(255,201,201), c(255,201,201), c(255,202,202), c(255,203,203), c(255,205,205), c(255,206,206), c(255,206,206), c(255,208,208), c(255,209,209), c(255,211,211), c(255,215,215), c(255,216,216), c(255,216,216), c(255,218,218), c(255,219,219), c(255,221,221), c(255,223,223), c(255,226,226), c(255,228,228), c(255,230,230), c(255,230,230), c(255,232,232), c(255,235,235), c(255,237,237), c(255,240,240), c(255,243,243), c(255,246,246), c(255,249,249), c(255,251,251), c(255,253,253), c(255,255,255))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/lattice.R0000644000176200001440000006742313171627112013515 0ustar liggesusers# the functions in this file are verbatim copies from those in package # lattice, http://cran.r-project.org/src/contrib/lattice_0.20-29.tar.gz # copied on Aug 8, 2014, by Edzer Pebesma. # reason for copying is that hexbin 1.26-3 generates # the following NOTE on CRAN: # # checking dependencies in R code ... NOTE # Unexported objects imported by ':::' calls: # lattice:::cond.orders lattice:::construct.scales # lattice:::cupdate lattice:::limits.and.aspect # lattice:::trellis.skeleton # See the note in ?::: about the use of this operator. # See the information on DESCRIPTION files in the chapter Creating R # packages of the Writing R Extensions manual. # the files in lattice carry the following copyright notice: ### Copyright (C) 2001-2006 Deepayan Sarkar ### Copyright (C) 2001-2005 Saikat DebRoy ### ### This file is part of the lattice package for R. ### It is made available under the terms of the GNU General Public ### License, version 2, or at your option, any later version, ### incorporated herein by reference. ### ### This program is distributed in the hope that it will be ### useful, but WITHOUT ANY WARRANTY; without even the implied ### warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ### PURPOSE. See the GNU General Public License for more ### details. ### ### You should have received a copy of the GNU General Public ### License along with this program; if not, write to the Free ### Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ### MA 02110-1301, USA construct.legend <- function(legend = NULL, key = NULL, fun = "draw.key") { if (is.null(legend) && is.null(key)) return(NULL) if (is.null(legend)) legend <- list() if (!is.null(key)) { space <- key$space x <- y <- corner <- NULL if (is.null(space)) { if (any(c("x", "y", "corner") %in% names(key))) { stopifnot(is.null(x) || (length(x) == 1 && x >= 0 && x <= 1)) stopifnot(is.null(y) || (length(y) == 1 && y >= 0 && y <= 1)) stopifnot(is.null(corner) || (length(corner) == 2 && all(corner %in% c(0, 1)))) space <- "inside" x <- key$x y <- key$y corner <- key$corner ## check for valid values } else space <- "top" } if (space != "inside" && space %in% names(legend)) stop(gettextf("component '%s' duplicated in key and legend", space)) key.legend <- list(fun = fun, args = list(key = key, draw = FALSE)) key.legend$x <- x key.legend$y <- y key.legend$corner <- corner legend <- c(list(key.legend), legend) names(legend)[1] <- space } legend } extend.limits <- function(lim, length = 1, axs = "r", prop = if (axs == "i") 0 else lattice.getOption("axis.padding")$numeric) { ## if (!is.numeric(lim)) NA if (all(is.na(lim))) NA_real_ # or lim? else if (is.character(lim) ) { c(1, length(lim)) + c(-1, 1) * if (axs == "i") 0.5 else lattice.getOption("axis.padding")$factor } else if (length(lim) == 2) { if (lim[1] > lim[2]) { ccall <- match.call() ccall$lim <- rev(lim) ans <- eval.parent(ccall) return (rev(ans)) } if (!missing(length) && !missing(prop)) stop("'length' and 'prop' cannot both be specified") if (length <= 0) stop("'length' must be positive") if (!missing(length)) { prop <- (as.numeric(length) - as.numeric(diff(lim))) / (2 * as.numeric(diff(lim))) } if (lim[1]==lim[2]) lim + 0.5 * c(-length,length) else { d <- diff(as.numeric(lim)) lim + prop * d * c(-1,1) } } else { print(lim) stop("improper length of 'lim'") } } limitsFromLimitlist <- function(have.lim, lim, relation, limitlist, used.at, numlimitlist, axs, npackets) ## have.lim: logical, whether xlim/ylim was explicitly specified ## lim: the specified limit if have.lim = TRUE ## relation: same/free/sliced ## limitlist: list of limits from prepanel calculations, one for each panel ## numlimitlist: (optional) numeric locations for factors (lim ## will be levels including unused ones) ## axs: "r", "i" etc, passed on to extend.limits ## return value depends on relation. (See limits.and.aspect below, ## where this is used, for partial enlightenment.) { if (relation == "same") { ## The problem here is that we need to figure out the overall ## limit required from the limits of each panel. This could be ## a problem for two reasons. First, some panels could have no ## data in them, in which case the corresponding limits would ## be NA. Secondly, the limits could be either numeric or ## character vectors (the latter for factors). When relation = ## same, the type should be same across panels. When numeric, ## we just take range, leaving out NAs. But what about ## factors? Is it OK to assume that all the non-NA vectors ## would be exactly the same ? They should be, since levels(x) ## would not change even if not all levels are ## represented. So, I'm just taking unique of all the vectors ## concatenated, excluding NA's ## Additional complication: Need to preserve class of limits, ## to be used later in tick location/label calculation. Not a ## problem in other cases, but here unlist-ing loses the ## class. #if (!have.lim) ## always calculate the limits from prepanel first: ## should check that all classes are the same. How ? What ## about NA's ? Arrgh! ## to handle NA's, how about: all.na <- unlist(lapply(limitlist, function(x) all(is.na(x)))) class.lim <- ## retain non-NA limitlists only lapply(limitlist[!all.na], class) ## class.lim is a list now, may be length 0 limits <- unlist(limitlist) ## loses the class attribute ## if (length(limits) > 0) if (sum(!is.na(limits)) > 0) { if (is.character(limits)) { limits <- unique(limits[!is.na(limits)]) slicelen <- diff(extend.limits(limits, axs = axs)) } else ## if (is.numeric(limits)) # or dates etc { limits <- extend.limits(range(as.numeric(limits), finite = TRUE), axs = axs) slicelen <- diff(range(limits, finite = TRUE)) } ## hopefully put back appropriate class of limits: ## FIXME: date changes may have messed this up if (length(class.lim) > 0) class(limits) <- if (all(class.lim[[1]] == "integer")) "numeric" else class.lim[[1]] ## (have to handle "integer" specially, since variable ## specifications like 1:10 are rather common, and ## class() <- "integer" would turn the limits into ## integers) } else { limits <- c(0,1) slicelen <- 1 } if (have.lim) { if (is.list(lim)) stop("limits cannot be a list when relation = same") old.limits <- limits limits <- lim ## lim overrides prepanel except NAs if (!is.character(limits) && !is.character(old.limits)) { limits[is.na(limits)] <- old.limits[is.na(limits)] } slicelen <- ## this no longer works for dates (R 2.6) ## if (is.numeric(lim)) diff(range(lim)) ## else length(lim) + 2 if (is.character(limits)) length(limits) + 2 else diff(range(as.numeric(limits))) } ans <- list(limits = limits, slicelen = slicelen) } else if (relation == "sliced") { if (have.lim) { if (is.list(lim)) { limits <- rep(lim, length.out = npackets) } else warning("Explicitly specified limits ignored") } slicelen <- limitlist for (i in seq_along(limitlist)) { slicelen[[i]] <- ## if (is.numeric(limitlist[[i]])) if (!is.character(limitlist[[i]])) { if (any(is.finite(limitlist[[i]]))) ## range unnecessary, but... diff(range(as.numeric(limitlist[[i]]), finite = TRUE)) else NA_real_ } else if (!any(is.na(numlimitlist[[i]]))) diff(range(as.numeric(numlimitlist[[i]]))) else NA_real_ } slicelen <- (if (axs == "i") 1 else 1 + 2 * lattice.getOption("axis.padding")$numeric) * max(unlist(slicelen), na.rm = TRUE) for (i in seq_along(limitlist)) { if (is.numeric(limitlist[[i]])) limitlist[[i]] <- extend.limits(limitlist[[i]], length = slicelen) } for (i in seq_along(numlimitlist)) { if (!all(is.na(numlimitlist[[i]]))) numlimitlist[[i]] <- extend.limits(as.numeric(numlimitlist[[i]]), length = slicelen) } ans <- list(limits = limitlist, used.at = used.at, numlimitlist = numlimitlist, slicelen = slicelen) } else if (relation == "free") { if (have.lim) { ## This is the only situation where limits can be a list ## (doesn't make sense when relation="same", ignored when ## relation="sliced"). Even if limits is not a list (but ## is specified), it will be treated as a list, and ## repeated as necessary (see further comments below). if (!is.list(lim)) lim <- list(lim) ## There's a subtle consideration here. It is possible ## for some panels to have nothing in them (or only NA's). ## Such panels usually have their prepanel functions ## return NA. When 'limits' is specified as a list, this ## will be interpreted as the limit specification for the ## non-empty panels only (this is an arbitrary choice, but ## it usually makes more sense, even though it's less ## general than the other choice). ## which ones are non-NA? id <- which(sapply(limitlist, function(x) !all(is.na(x)))) ## replace these with the limits supplied, except if the ## supplied limits are NULL, in which case retain limits ## calculated by prepanel. old.limitlist <- limitlist limitlist[id] <- lim which.null <- sapply(limitlist, is.null) limitlist[which.null] <- old.limitlist[which.null] ## lim overrides prepanel except NAs for (i in seq_along(limitlist)) { if (!is.character(limitlist[[i]]) && !is.character(old.limitlist[[i]])) { isna <- is.na(limitlist[[i]]) limitlist[[i]][isna] <- old.limitlist[[i]][isna] } } } for (i in seq_along(limitlist)) { if (!all(is.na(limitlist[[i]])) && !is.character(limitlist[[i]])) limitlist[[i]] <- ## preserves class extend.limits(limitlist[[i]], axs = axs) ## o.w., keep it as it is } slicelen <- numeric(length(limitlist)) for (i in seq_along(limitlist)) slicelen[i] <- if (!is.character(limitlist[[i]])) diff(range(as.numeric(limitlist[[i]]))) else if (!any(is.na(numlimitlist[[i]]))) diff(range(numlimitlist[[i]])) else NA_real_ ans <- list(limits = limitlist, used.at = used.at, numlimitlist = numlimitlist, slicelen = slicelen) } ans } complete_names <- function(x, template, allow.invalid = FALSE) { pid <- pmatch(names(x), names(template), duplicates.ok = TRUE) if (allow.invalid) { x <- x[!is.na(pid)] pid <- pid[!is.na(pid)] } else { if (any(is.na(pid))) warning("Invalid or ambiguous component names: ", paste(names(x)[which(is.na(pid))], collapse = ", ") ) } if (any(duplicated(pid))) stop("Multiple matches to component name") names(x) <- names(template)[pid] x } getFunctionOrName <- function(FUN) ## Try lattice namespace first? Does that happen automatically? { if (is.function(FUN)) FUN else if (is.character(FUN)) get(FUN) else eval(FUN) } trellis.skeleton <- function(formula = NULL, cond, aspect = default.args$aspect, # argument in xyplot as.table = default.args$as.table, between = default.args$between, key = NULL, legend = NULL, page = default.args$page, main = default.args$main, sub = default.args$sub, par.strip.text = default.args$par.strip.text, layout = default.args$layout, skip = default.args$skip, strip = default.args$strip.default, # argument in xyplot strip.left = FALSE, xlab.default = NULL, ylab.default = NULL, xlab = NULL, # argument in xyplot ylab = NULL, # argument in xyplot xlab.top = NULL, ylab.right = NULL, panel, # argument in xyplot xscale.components = default.args$xscale.components, yscale.components = default.args$yscale.components, axis = default.args$axis, subscripts = TRUE, # ignored, for reasons given above index.cond = NULL, perm.cond = NULL, ..., par.settings = NULL, plot.args = NULL, lattice.options = NULL) { default.args <- lattice.getOption("default.args") if (is.null(skip)) skip <- FALSE foo <- list(formula = formula, as.table = as.table, aspect.fill = (aspect == "fill"), ## key = key, legend = construct.legend(legend = legend, key = key), panel = panel, page = page, layout = layout, skip = skip, strip = if (is.logical(strip) && strip) "strip.default" else strip, strip.left = if (is.logical(strip.left) && strip.left) strip.custom(horizontal = FALSE) else strip.left, xscale.components = xscale.components, yscale.components = yscale.components, axis = axis, xlab = xlab, ylab = ylab, xlab.default = xlab.default, ylab.default = ylab.default, xlab.top = xlab.top, ylab.right = ylab.right, main = main, sub = sub, x.between = 0, y.between = 0, par.settings = par.settings, plot.args = plot.args, lattice.options = lattice.options, par.strip.text = par.strip.text, index.cond = index.cond, perm.cond = perm.cond) if (!is.null(between$x)) foo$x.between <- between$x if (!is.null(between$y)) foo$y.between <- between$y foo$condlevels <- lapply(cond, levels) list(foo = foo, dots = list(...)) } cond.orders <- function(foo, ...) ## function to determine order of panels within a cond. variable ## foo: trellis object-to-be ## calculate actual values for index.cond and perm.cond. ## index.cond can be a function, in which case it would be used to ## determing order of levels within conditioning variables ## Question: should these be determined at run-time? Wouldn't be ## impossible, but has the disadvantage that looking at the ## trellis object will be totally uninformative in the default ## case (when both would be NULL). In a sense, this is fine, since ## having index.cond be a function is similar to having a prepanel ## function. After all, the results depend only on the panel ## contents, and those cannot be changed via update. { ## the following to be used for changing order of conditioning ## variables and indexing their levels. The object foo already has ## components index.cond and perm.cond as whatever was passed to ## the original function call. If these are NULL, suitable ## defaults need to be computed. If foo$index.cond is a function, ## index.cond has to be computed appropriately. index.cond <- vector(mode = "list", length = length(foo$condlevels)) for (i in seq_along(foo$condlevels)) index.cond[[i]] <- seq_along(foo$condlevels[[i]]) perm.cond <- seq_len(length(foo$condlevels)) if (!is.null(foo$perm.cond)) { if (all(sort(foo$perm.cond) == perm.cond)) perm.cond <- foo$perm.cond else stop("Invalid value of perm.cond") } if (!is.null(foo$index.cond)) { if (is.list(foo$index.cond) && length(foo$index.cond) == length(index.cond)) { for (i in seq_along(foo$condlevels)) index.cond[[i]] <- index.cond[[i]][foo$index.cond[[i]]] } else if (is.function(foo$index.cond)) { FUN <- foo$index.cond nplots <- length(foo$panel.args) panel.order <- numeric(nplots) for (count in seq_len(nplots)) { if (is.list(foo$panel.args[[count]])) { pargs <- c(foo$panel.args.common, foo$panel.args[[count]], list(...)) prenames <- names(formals(FUN)) if (!("..." %in% prenames)) pargs <- pargs[intersect(names(pargs), prenames)] panel.order[count] <- do.call("FUN", pargs) } else ## this happens for empty panels { is.na(panel.order) <- count # panel.order[count] <- NA } } dim(panel.order) <- sapply(foo$condlevels, length) for (i in seq_along(foo$condlevels)) index.cond[[i]] <- order(apply(panel.order, i, mean, na.rm = TRUE)) } else stop("Invalid value of index.cond") } list(index.cond = index.cond, perm.cond = perm.cond) } construct.scales <- function(draw = TRUE, axs = "r", tck = 1, tick.number = 5, at = FALSE, labels = FALSE, log = FALSE, alternating = TRUE, relation = "same", abbreviate = FALSE, minlength = 4, limits = NULL, format = NULL, equispaced.log = TRUE, lty = FALSE, lwd = FALSE, cex = FALSE, rot = FALSE, col = FALSE, col.line = col, alpha = FALSE, alpha.line = alpha, font = FALSE, fontfamily = FALSE, fontface = FALSE, lineheight = FALSE, ..., ## NOTE: ... is currently ignored x = NULL, y = NULL) { ## top-level values x.scales <- y.scales <- list(draw = draw, axs = axs, tck = tck, tick.number = tick.number, at = at, labels = labels, log = log, alternating = alternating, relation = relation, abbreviate = abbreviate, minlength = minlength, limits = limits, format = format, equispaced.log = equispaced.log, lty = lty, lwd = lwd, cex = cex, rot = rot, col = col, col.line = col.line, alpha = alpha, alpha.line = alpha.line, font = font, fontfamily = fontfamily, fontface = fontface, lineheight = lineheight) ## override by component-specific values if (!is.null(x)) { if (is.character(x)) x <- list(relation = x) x <- complete_names(x, x.scales) x.scales[names(x)] <- x } if (!is.null(y)) { if (is.character(y)) y <- list(relation = y) y <- complete_names(y, y.scales) y.scales[names(y)] <- y } if (is.logical(x.scales$alternating)) x.scales$alternating <- if (x.scales$alternating) c(1,2) else 1 if (is.logical(y.scales$alternating)) y.scales$alternating <- if (y.scales$alternating) c(1,2) else 1 for (nm in c("tck", "cex", "rot")) { x.scales[[nm]] <- rep(x.scales[[nm]], length.out = 2) y.scales[[nm]] <- rep(y.scales[[nm]], length.out = 2) } if (x.scales$relation == "same" && (is.list(x.scales$at) || is.list(x.scales$labels))) stop("the 'at' and 'labels' components of 'scales' may not be lists when 'relation = \"same\"'") if (y.scales$relation == "same" && (is.list(y.scales$at) || is.list(y.scales$labels))) stop("the 'at' and 'labels' components of 'scales' may not be lists when 'relation = \"same\"'") list(x.scales = x.scales, y.scales = y.scales) } cupdate <- function(index, maxim) { ## This unexported function is used to handle arbitrary number of ## conditioning variables : every time it is called, it increments ## the "current" level of the conditioning variables suitably, ## i.e., it tries to increment the level of the 1st conditining ## variable (the one which varies fastest along panel order) and ## if it happens to be at its maximum (last) value, it sets it to ## the first value AND increments the "current" level of the 2nd ## (next) conditioning variable recursively. if(length(index)!=length(maxim)||length(maxim)<=0) stop("Inappropriate arguments") index[1] <- index[1] + 1 if (index[1] > maxim[1] && length(maxim) > 1) c(1, cupdate(index[-1], maxim[-1])) else index } limits.and.aspect <- function(prepanel.default, prepanel = NULL, have.xlim = FALSE, xlim = NULL, have.ylim = FALSE, ylim = NULL, x.relation, y.relation, panel.args.common = list(), panel.args = list(), aspect, banking = lattice.getOption("banking"), npackets = length(panel.args), x.axs = "r", y.axs = "r", ...) ## extra arguments for prepanel (for qqmathline) { prepanel.default.function <- getFunctionOrName(prepanel.default) prepanel <- getFunctionOrName(prepanel) if (npackets<1) stop("need at least one panel") x.limits <- vector("list", npackets) y.limits <- vector("list", npackets) x.used.at <- vector("list", npackets) y.used.at <- vector("list", npackets) x.num.limit <- vector("list", npackets) y.num.limit <- vector("list", npackets) dxdy <- vector("list", npackets) for (count in seq_len(npackets)) { if (is.list(panel.args[[count]])) { pargs <- c(panel.args.common, panel.args[[count]], list(...)) tem <- do.call("prepanel.default.function", pargs) if (is.function(prepanel)) ## results will 'overwrite' defaults { prenames <- names(formals(prepanel)) if (!("..." %in% prenames)) pargs <- pargs[intersect(names(pargs), prenames)] pretem <- do.call("prepanel", pargs) ## prepanel() over-rides defaults except NAs - e.g. ylim = c(0, NA) if (!is.null(pretem$xlim) && !is.character(pretem$xlim)) if (any(isna <- is.na(pretem$xlim))) pretem$xlim[isna] <- tem$xlim[isna] if (!is.null(pretem$ylim) && !is.character(pretem$ylim)) if (any(isna <- is.na(pretem$ylim))) pretem$ylim[isna] <- tem$ylim[isna] tem <- updateList(tem, pretem) ## tem[names(pretem)] <- pretem } x.limits[[count]] <- tem$xlim y.limits[[count]] <- tem$ylim x.used.at[[count]] <- if (is.null(tem$xat)) NA else tem$xat y.used.at[[count]] <- if (is.null(tem$yat)) NA else tem$yat x.num.limit[[count]] <- if (is.null(tem$xat)) NA else range(tem$xat) y.num.limit[[count]] <- if (is.null(tem$yat)) NA else range(tem$yat) dxdy[[count]] <- list(dx = tem$dx, dy = tem$dy) } else ## this happens for empty panels { x.limits[[count]] <- c(NA_real_, NA_real_) y.limits[[count]] <- c(NA_real_, NA_real_) x.used.at[[count]] <- NA_real_ y.used.at[[count]] <- NA_real_ x.num.limit[[count]] <- NA_real_ y.num.limit[[count]] <- NA_real_ dxdy[[count]] <- list(dx = NA_real_, dy = NA_real_) } } ## Some explanation might be helpful here. The for loop above ## creates a list of xlims/ylims. Each of these might be either ## numeric (when x/y is numeric, shingle or POSIXt etc), or levels ## of a factor (that's how prepanel.default.functions are set ## up). However, at this point, all x.limits[[i]] must be of the ## same type. Returned limits must be in accordance with this ## type. The only exception is when relation = "free", in which ## case they may be different. This could happen if [xy]lim or ## limits is supplied as a list in the high level function. x.limits <- limitsFromLimitlist(have.lim = have.xlim, lim = xlim, relation = x.relation, limitlist = x.limits, used.at = x.used.at, numlimitlist = x.num.limit, axs = x.axs, npackets = npackets) y.limits <- limitsFromLimitlist(have.lim = have.ylim, lim = ylim, relation = y.relation, limitlist = y.limits, used.at = y.used.at, numlimitlist = y.num.limit, axs = y.axs, npackets = npackets) if (is.character(aspect)) { if (aspect == "xy") { aspect <- median(sapply(dxdy, banking) * y.limits$slicelen / x.limits$slicelen, na.rm = TRUE) ### old aspect calculation ## aspect <- median(unlist(lapply(dxdy, banking)), ## na.rm = TRUE) * y.limits$slicelen / ## x.limits$slicelen ## if (y.relation == "free" || x.relation == "free") ## warning("'aspect=xy' when 'relation=free' is not sensible") } else if (aspect == "iso") { aspect <- median(y.limits$slicelen / x.limits$slicelen, na.rm = TRUE) if (y.relation == "free" || x.relation == "free") warning("'aspect=\"iso\"' approximate since 'relation=\"free\"'") } else aspect <- 1 } list(x.limits = x.limits$limits, y.limits = y.limits$limits, x.used.at = x.limits$used.at, y.used.at = y.limits$used.at, x.num.limit = x.limits$numlimitlist, y.num.limit = y.limits$numlimitlist, aspect.ratio = aspect, prepanel.default = prepanel.default, prepanel = prepanel) } hexbin/R/hexbin.s4.R0000644000176200001440000002700713562344314013670 0ustar liggesusers## namespace *internal* function: addBit <- function(bnds, f = 0.05) bnds + c(-f, f) * diff(bnds) hexbin <- function(x, y = NULL, xbins = 30, shape = 1, xbnds = range(x), ybnds = range(y), xlab = NULL, ylab = NULL, IDs = FALSE) { call <- match.call() ## (x,y, xlab, ylab) dealing xl <- if (!missing(x)) deparse(substitute(x)) yl <- if (!missing(y)) deparse(substitute(y)) xy <- xy.coords(x, y, xl, yl) ch0 <- function(u) if(is.null(u)) "" else u xlab <- if (is.null(xlab)) ch0(xy$xlab) else xlab ylab <- if (is.null(ylab)) ch0(xy$ylab) else ylab if(! (is.character(xlab) || is.expression(xlab))) stop("xlab must be a character or expression") if(! (is.character(ylab) || is.expression(ylab))) stop("ylab must be a character or expression") x <- xy$x y <- xy$y n <- length(x) na <- is.na(x) | is.na(y) has.na <- any(na) if (has.na) { ok <- !na x <- x[ok] y <- y[ok] n0 <- n na.pos <- which(na) n <- length(x) } if(diff(xbnds) <= 0) stop("xbnds[1] < xbnds[2] is not fulfilled") if(!missing(xbnds) && any(sign(xbnds - range(x)) == c(1,-1))) stop("'xbnds' must encompass range(x)") if(diff(ybnds) <= 0) stop("ybnds[1] < ybnds[2] is not fulfilled") if(!missing(ybnds) && any(sign(ybnds - range(y)) == c(1,-1))) stop("'ybnds' must encompass range(y)") jmax <- floor(xbins + 1.5001) #imax <- 2 * floor((xbins * shape)/sqrt(3) + 1.5001) c1 <- 2 * floor((xbins *shape)/sqrt(3) + 1.5001) imax <- trunc((jmax*c1 -1)/jmax + 1) lmax <- jmax * imax ans <- .Fortran("hbin", x = as.double(x), y = as.double(y), cell = integer(lmax), cnt = integer(lmax), xcm = double(lmax), ycm = double(lmax), xbins = as.double(xbins), shape = as.double(shape), xbnds = as.double(xbnds), ybnds = as.double(ybnds), dim = as.integer(c(imax, jmax)), n = as.integer(n), cID = if(IDs) integer(n) else as.integer(-1))[-(1:2)] ## cut off extraneous stuff if(!IDs) ans$cID <- NULL if(IDs && has.na) { ok <- as.integer(ok) ok[!na] <- ans$cID ok[na] <- NA ans$cID <- ok } nc <- ans$n length(ans$cell) <- nc length(ans$cnt) <- nc length(ans$xcm) <- nc length(ans$ycm) <- nc if(sum(ans$cnt) != n) warning("Lost counts in binning") new("hexbin", cell = ans$cell, count = ans$cnt, xcm = ans$xcm, ycm = ans$ycm, xbins = ans$xbins, shape = ans$shape, xbnds = ans$xbnds , ybnds = ans$ybnds, dimen = c(imax, jmax), n = n, ncells = ans$n, call = call, xlab = xlab, ylab = ylab, cID = ans$cID, cAtt = integer(0)) #dimen = ans$dim }## hexbin setClassUnion("integer or NULL",# < virtual class, used in 'cID' slot members = c("integer","NULL")) ## MM: I've learned that we should think twice before defining such ## "or NULL" classes: ## setClassUnion("vector or NULL",# < virtual class, used in 'cAtt' slot ## members = c("vector","NULL")) setClass("hexbin", representation(cell = "integer", count = "numeric",##count = "integer", xcm = "numeric", ycm = "numeric", xbins = "numeric", shape = "numeric", xbnds = "numeric", ybnds = "numeric", dimen = "numeric", n = "integer", ncells = "integer", call = "call", xlab = "vector", ylab = "vector", #xlab = "character", ylab = "character", cID = "integer or NULL", cAtt = "vector")## "or NULL" ) #setIs("hexbin", function(hbin) class(hbin)=="hexbin") ## FIXME: add 'validity checking method! setGeneric("hcell2xy", function(hbin, check.erosion = TRUE) standardGeneric("hcell2xy")) setMethod("hcell2xy", "hexbin", function(hbin, check.erosion = TRUE) { xbins <- hbin@xbins xbnds <- hbin@xbnds c3 <- diff(xbnds)/xbins ybnds <- hbin@ybnds c4 <- (diff(ybnds) * sqrt(3))/(2 * hbin@shape * xbins) jmax <- hbin@dimen[2] cell <- hbin@cell - 1 i <- cell %/% jmax j <- cell %% jmax y <- c4 * i + ybnds[1] x <- c3 * ifelse(i %% 2 == 0, j, j + 0.5) + xbnds[1] if(check.erosion && inherits(hbin,"erodebin")) list(x = x[hbin@eroded], y = y[hbin@eroded]) else list(x = x, y = y) }) setGeneric("getHexDxy", function(hbin) standardGeneric("getHexDxy")) setMethod("getHexDxy", "hexbin", function(hbin){ sx <- hbin@xbins/diff(hbin@xbnds) sy <- (hbin@xbins * hbin@shape)/diff(hbin@ybnds) list(dx=.5/sx, dy=(1/sqrt(3))/(2*sy)) }) setClass("erodebin", representation("hexbin", eroded = "logical", cdfcut = "numeric", erode = "integer")) setGeneric("erode", function(hbin, cdfcut = 0.5) standardGeneric("erode")) ## currently define the 'hexbin' method (also) as standalone function: erode.hexbin <- function(hbin, cdfcut = 0.5) { if(!is(hbin,"hexbin")) stop("first argument must be a hexbin object") #bin.att <- attributes(hbin) cell <- hbin@cell cnt <- hbin@count tmp <- sort(cnt) cdf <- cumsum(tmp)/sum(cnt) good <- cdfcut <= cdf if(!any(good)) return("no cells selected") crit <- min(tmp[good]) good <- crit <= cnt cell <- cell[good] cnt <- cnt[good] #hbin@cell <- cell #hbin@count <- cnt n <- length(cell) bdim <- hbin@dimen L <- bdim[1] * bdim[2] ans <- .Fortran("herode", cell = as.integer(cell), cnt = as.integer(cnt), n = n, bdim = as.integer(bdim), erode = integer(L), ncnt = integer(L), ncell = integer(L), sides = integer(L), neib = integer(6 * L), exist = logical(L + 1)) $ erode length(ans) <- n ehbin <- new("erodebin", hbin, cdfcut = cdfcut, eroded = good, erode = ans) #hbin@erode <- ans #class(hbin) <- c(class(hbin),"erodebin") ehbin } setMethod("erode", "hexbin", erode.hexbin) setGeneric("getHMedian", function(ebin) standardGeneric("getHMedian")) setMethod("getHMedian", "erodebin", function(ebin) { xy <- hcell2xy(ebin) stopifnot(1 == length(med <- which.max(ebin@erode))) med.x <- xy$x[med] med.y <- xy$y[med] list(x = med.x, y = med.y) }) ## Still define the 'hexbin' plot method (also) as standalone function: ## This is deprecated! gplot.hexbin <- function(x, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 1, maxcnt = max(x@count), trans = NULL, inv = NULL, colorcut = seq(0, 1, length = min(17, maxcnt)), border = NULL, density = NULL, pen = NULL, colramp = function(n) LinGray(n, beg = 90, end = 15), xlab = NULL, ylab = NULL, main = "", newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), clip="on", verbose = getOption("verbose")) { if(!is(x,"hexbin")) stop("first argument must be a hexbin object") if(minarea < 0) stop("Minimum area must be non-negative") if(maxarea > 1) warning("Maximum area should be <= 1 this leads to overlapping hexagons") if(minarea > maxarea) stop("Minarea must be <= maxarea") if (length(colorcut) > 1) { # a sequence 0,...,1 if(colorcut[1] != 0) stop("Colorcut lower boundary must be 0") if(colorcut[length(colorcut)] != 1) stop("Colorcut upper boundary must be 1") } else { colorcut <- if(colorcut > 1) seq(0, 1, length = min(c(17, colorcut, maxcnt))) else 1 } if(is.logical(legend)) { if(legend) stop("Give the legend width") else legend <- 0 } else stopifnot(is.numeric(legend) && length(legend) == 1) type <- match.arg(type) xaxt <- match.arg(xaxt) yaxt <- match.arg(yaxt) ## ----- plotting starts ------------------------ if (newpage) grid.newpage() hv.ob <- hexViewport(x, xbnds=x@xbnds, ybnds=x@ybnds, offset = unit(legend,"inches")) pushViewport(hv.ob@hexVp.off) grid.rect() if(xaxt != "n") grid.xaxis() if(yaxt != "n") grid.yaxis() ## xlab, ylab, main : if(is.null(xlab)) xlab <- x@xlab if(is.null(ylab)) ylab <- x@ylab if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp = gpar(fontsize = 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp = gpar(fontsize = 16), rot = 90) if(nchar(main) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(type != "n") { if(clip == "on") { upViewport() pushViewport(hv.ob@hexVp.on) } grid.hexagons(x, style = style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt = maxcnt, check.erosion = FALSE, trans = trans, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp, verbose = verbose) } upViewport()# plot #popViewport()# fig ## ----- Legend ------------------------ if(legend > 0) { if(!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation") if(verbose) cat("plot.hexbin( legend > 0): ... hex.legend()\n") inner <- getPlt(hv.ob, ret.unit = "inches", numeric = TRUE)[1]/x@xbins ##inner <- as.numeric(convertUnit(hv.ob@plt[1],"inches"))/x@xbins ##outer <- (inner * sqrt(3))/2 ##switch(style, ## lattice = , ## centroids = { ## if(length(colorcut) * outer > ysize - 1) { ## warning("Colorcut is being shortened") ## colorcut <- seq(0, 1, ## max(1, floor((ysize - 1)/outer))) ## } ## } ## ) ysize <- getPlt(hv.ob, ret.unit = "inches", numeric = TRUE)[2] #as.numeric(convertUnit(hv.ob@plt[2],"inches")) legVp <- viewport(x = unit(1,"npc") - convertX(unit(legend,"inches"), "npc"), #y = convertY(unit(mai[1],"inches"),"npc"), y = hv.ob@mar[1], #height = unit(1,"npc") - #convertY(unit(mai[3]+mai[1],"inches"),"npc"), height = unit(1,"npc")-(hv.ob@mar[1]+ hv.ob@mar[3]), width = convertUnit(unit(legend,"inches"),"npc"), default.units = "native", just = c("left","bottom"), xscale = c(0, legend), yscale = c(0, ysize)) if(type != "n") { pushViewport(legVp) grid.hexlegend(legend, ysize = ysize, lcex = lcex, inner = inner, style = style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt = maxcnt, trans = trans, inv = inv, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) upViewport() } } invisible(list(plot.vp = hv.ob, legend.vp = if(legend) legVp)) } ## gplot.hexbin() setMethod("plot", signature(x = "hexbin", y = "missing"), gplot.hexbin) setMethod("show", "hexbin", function(object) { cat("'hexbin' object from call:", deparse(object@call), "\n") dm <- object@dimen cat("n =", object@n, " points in nc =", object@ncells, " hexagon cells in grid dimensions ", dm[1], "by", dm[2],"\n") invisible(object) }) setMethod("summary", "hexbin", function(object, ...) { show(object, ...) print(summary(data.frame(cell = object@cell, count = object@count, xcm = object@xcm, ycm = object@ycm), ...)) if(!is.null(object@cID)) { cat("IDs: "); str(object@cID) } }) if(FALSE) { ##-- todo -- #setMethod("identify" identify.hexbin <- function(x, labels = x$cnt, offset = 0, ...) { if(length(labels) != x$n) stop("labels not the same length as number of cells") ##NL: Should this be a warning? ## -> typically default method: identify(hcell2xy(x), labels = labels, offset = offset, ...) } }#not yet hexbin/R/hdiffplot.R0000644000176200001440000003121513171627112014035 0ustar liggesusers ### FIXME: Need to check for bin erosion ### or fix hcell2xy so that it checks for bin erosion. ### --- Fixed hcell2xy, probably should do the same to other accessor functions ### NL get.xrange <- function(xy.lst, xbnds) { range(unlist(lapply(xy.lst, function(xy, bnd) xy$x[(xy$x < max(bnd)) & (xy$x > min(bnd))], xbnds))) } get.yrange <- function(xy.lst, ybnds) { range(unlist(lapply(xy.lst, function(xy, bnd) xy$y[(xy$y < max(bnd)) & (xy$y > min(bnd))], ybnds))) } make.bnds <- function(binlst, xy.lst, xbnds = NULL, ybnds = NULL) { if(inherits(binlst,"hexbinList")) binlst <- binlst@hbins if(is.null(xbnds)) xbnds <- binlst[[1]]@xbnds if(is.null(ybnds)) ybnds <- binlst[[1]]@ybnds nxbnds <- get.xrange(xy.lst, xbnds) nybnds <- get.yrange(xy.lst, ybnds) list(xbnds = xbnds, ybnds = ybnds, nxbnds = nxbnds, nybnds = nybnds) } all.intersect <- function(binlist) { ## This will not work if all the grids are not the same ## Will have to rethink this if we move to non-aligned ## hexagon bins. NL if(inherits(binlist,"hexbinList")) binlist <- binlist@hbins ans <- matrix(FALSE, nrow = binlist[[1]]@dimen[1]*binlist[[1]]@dimen[2], ncol = length(binlist)) for(i in 1:length(binlist)) { if(is(binlist[[i]], "erodebin")) ans[binlist[[i]]@cell[binlist[[i]]@eroded], i] <- TRUE else ans[binlist[[i]]@cell, i] <- TRUE } ans } ## colordist <- function() { ## } ## MM: FIXME : `` get(where) '' is a kludge! # EJP: outcomment, seems obsolete? #mixcolors <- function (alpha, color1, where = class(color1)) #{ # alpha <- as.numeric(alpha) # c1 <- coords(as(color1, where)) # na <- length(alpha) # n1 <- nrow(c1) # if(na == 1) # alpha <- rep(alpha, n1) # stopifnot(sum(alpha) == 1) # get(where)(t(apply(c1, 2, function(cols, alpha) alpha%*%cols, alpha))) # #} mixcolors2 <- function (colors, alpha, where="hsv") { # colors: an n x 3 matrix of colors # alpha: an n x 1 vector of color mixing coefficents # sum(alpha)==1 should be a restriction? # where: the color space to mix in (not implemented yet) # The reurn value is a single hex color forming the mixture # This function is purely linear mixing, nolinear mixing # would be quite interesting since the colorspaces are not really # linear, ie mixing alonga manifold in LUV space. alpha <- as.numeric(alpha) na <- length(alpha) n1 <- nrow(colors) if (n1 < 2) { warning("need more than two colors to mix") colors } if(na == 1) alpha <- rep(alpha, n1) stopifnot(abs(sum(alpha)-1) <= 0.01) #colors <- convertColor(colors,from="sRGB",to="Lab",scale.in=1) mix <- t(apply(colors, 2, function(cols, alpha) alpha%*%cols, alpha)) #convertColor(mix,from="hsv",to="hex",scale.out=1,clip=TRUE) hsv(mix[1],mix[2],mix[3]) } hdiffplot <- function(bin1, bin2 = NULL, xbnds = NULL, ybnds = NULL, focus = NULL, col.control = list(medhex = "white", med.bord = "black", focus = NULL, focus.border = NULL, back.col = "grey"), arrows = TRUE, size = unit(0.1, "inches"), lwd = 2, eps = 1e-6, unzoom = 1.08, clip ="off", xlab = "", ylab = "", main = deparse(mycall), ...) { ## Arguments: ## bin1 : hexagon bin object or a list of bin objects ## bin2 : hexagon bin object or NULL ## bin objects must have the same plotting bounds and shape ## border : plot the border of the hexagon, use TRUE for ## hexagon graph paper ## Having all the same parameters ensures that all hexbin ## objects have the same hexagon grid, and there will be no ## problems intersecting them. When we have a suitable solution to ## the hexagon interpolation/intersection problem this will be relaxed. fixx <- xbnds fixy <- ybnds if(!inherits(bin1,"hexbinList")){ if(is.null(bin2) & is.list(bin1)) { bin1 <- as(bin1,"hexbinList") } else if(is.null(bin2) & (!is.list(bin1))) stop(" need at least 2 hex bin objects, or a hexbinList") else { if(bin1@shape != bin2@shape) stop("bin objects must have same shape parameter") if(all(bin1@xbnds == bin2@xbnds) & all(bin1@ybnds == bin2@ybnds)) equal.bounds <- TRUE else stop("Bin objects need the same xbnds and ybnds") if(bin1@xbins != bin2@xbins) stop("Bin objects need the same number of bins") nhb <- 2 ## Need to make a binlist class, then can do as(bin1, bin2, "binlist") ## or something similar (NL) bin1 <- list(bin1 = bin1, bin2 = bin2) bin1 <- as(bin1,"hexbinList") } } mycall <- sys.call() if(length(mycall) >= 4) { mycall[4] <- as.call(quote(.....())) if(length(mycall) > 4) mycall <- mycall[1:4] } if(is.null(focus)) focus <- 1:bin1@n ##_______________ Collect computing constants______________ tmph.xy <- lapply(bin1@hbins, hcell2xy, check.erosion = TRUE) ## Check for erode bins eroded <- unlist(lapply(bin1@hbins, is, "erodebin")) shape <- bin1@Shape xbins <- bin1@Xbins bnds <- make.bnds(bin1@hbins, tmph.xy, xbnds = fixx, ybnds = fixy) ratiox <- diff(bnds$nxbnds)/diff(bnds$xbnds) ratioy <- diff(bnds$nybnds)/diff(bnds$ybnds) ratio <- max(ratioy, ratiox) nxbnds <- mean(bnds$nxbnds) + c(-1, 1)*(unzoom * ratio * diff(bnds$xbnds))/2 nybnds <- mean(bnds$nybnds) + c(-1, 1)*(unzoom * ratio * diff(bnds$ybnds))/2 ##__________________ Construct plot region___________________ hvp <- hexViewport(bin1@hbins[[1]], xbnds = nxbnds, ybnds = nybnds, newpage = TRUE) pushHexport(hvp) grid.rect() grid.xaxis() grid.yaxis() if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp = gpar(fontsize = 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp = gpar(fontsize = 16), rot = 90) if(sum(nchar(main)) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(clip=='on'){ popViewport() pushHexport(hvp,clip="on") } ##__________________ Construct hexagon___________________ dx <- (0.5 * diff(bin1@Xbnds))/xbins dy <- (0.5 * diff(bin1@Ybnds))/(xbins * shape * sqrt(3)) hexC <- hexcoords(dx = dx, dy = dy) ##__________________ Set up intersections and colors___________________ if(length(focus) < bin1@n) { bin1@hbins <- c(bin1@hbins[focus], bin1@hbins[-focus]) bin1@Bnames <- c(bin1@Bnames[focus], bin1@Bnames[-focus]) } cell.stat <- all.intersect(bin1@hbins) cell.stat.n <- apply(cell.stat, 1, sum) i.depth <- max(cell.stat.n) ### I will do this as a recursive function once I get ### The colors worked out! In fact for more than three ### bin objects there is no other way to do this but recursively!!! ### NL. -- Well this solution is like recursion :) diff.cols <- vector(mode = "list", length = i.depth) levcells <- which(cell.stat.n == 1) whichbin <- apply(cell.stat[levcells, ], 1, which) ## Set all the focal colors for the unique bin cells ## if not specified make them equally spaced on the color wheel ## with high saturation and set the background bins to gray nfcol <- length(focus) nhb <- bin1@n nbcol <- nhb-nfcol fills <- if(is.null(col.control$focus)) { if(nbcol > 0) matrix(c(seq(0, 360, length = nfcol+1)[1:nfcol]/360, rep(0, nbcol), rep(1, nfcol), rep(0, nbcol),rep(1, nfcol), rep(.9, nbcol)), ncol = 3) ## V = c(rep(1, nfcol), seq(.9, .1, length=nbcol)) else #matrix(c(seq(0, 360, length = nhb+1), s=1, v=1)[1:nfcol] matrix(c(seq(0, 360, length = nhb+1)/360, rep(1,nhb+1), rep(1,nhb+1)), ncol = 3)[1:nhb,] } else { foc.col <- t(rgb2hsv(col2rgb(col.control$focus))) if(nbcol > 0) { bcol <- matrix(c(rep(0, 2*nbcol), rep(.9, nbcol)), ncol = 3) rbind(foc.col, bcol) } else foc.col } colnames(fills) <- c("h","s","v") diff.cols[[1]] <- list(fill = fills, border = gray(.8)) ##_______________ Full Cell Plotting for Unique Bin1 Cells_________________ if(length(levcells) > 0) { for(i in unique(whichbin)) { pcells <- if(eroded[i]) bin1@hbins[[i]]@cell[bin1@hbins[[i]]@eroded] else bin1@hbins[[i]]@cell pcells <- which(pcells %in% levcells[whichbin == i]) pfill <- diff.cols[[1]]$fill[i,] pfill <- hsv(pfill[1],pfill[2],pfill[3]) hexpolygon(x = tmph.xy[[i]]$x[pcells], y = tmph.xy[[i]]$y[pcells], hexC, border = diff.cols[[1]]$border , fill = pfill) } } ## Now do the intersections. All intersections are convex ## combinations of the colors of the overlapping unique bins in ## the CIEluv colorspace. so if the binlist is of length 2 and ## the focal hbins are "blue" and "yellow" respectively the ## intersection would be green. First I need to get this to work ## and then I can think about how to override this with an option ## in color.control. -NL if(i.depth > 1) { for(dl in 2:(i.depth)) { levcells <- which(cell.stat.n == dl) if(length(levcells) == 0) next whichbin <- apply(cell.stat[levcells, ], 1, function(x) paste(which(x), sep = "", collapse = ":")) inter.nm <- unique(whichbin) #fills <- matrix(0, length(inter.nm), 3) fills <- rep(hsv(1), length(inter.nm)) i <- 1 for(bn in inter.nm) { who <- as.integer(unlist(strsplit(bn, ":"))) fills[i] <- mixcolors2(diff.cols[[1]]$fill[who,], 1/length(who),where = "LUV") i <- i+1 } #fills <- LUV(fills) diff.cols[[dl]] <- list(fill = fills, border = gray((i.depth-dl)/i.depth)) ##____Full Cell Plotting for Intersecting Cells at Intersection Depth i____ i <- 1 for(ints in inter.nm) { bin.i <- as.integer(unlist(strsplit(ints, ":"))[1]) pcells <- if(eroded[bin.i]) bin1@hbins[[bin.i]]@cell[bin1@hbins[[bin.i]]@eroded] else bin1@hbins[[bin.i]]@cell pcells <- which(pcells %in% levcells[whichbin == ints]) hexpolygon(x = tmph.xy[[bin.i]]$x[pcells], y = tmph.xy[[bin.i]]$y[pcells], hexC, border = diff.cols[[dl]]$border , fill = diff.cols[[dl]]$fill[i] ) i <- i+1 } } } ##_____________________________Plot Median Cells___________________________ ## With all these colors floating around I think it would be worth ## porting the 3d hexagon stuff to grid. Then it would be easier ## to distinguish the medians because they would stand out like ## little volcanoes :) NL if(any(eroded)) { hmeds <- matrix(unlist(lapply(bin1@hbins[eroded], function(x) unlist(getHMedian(x)))), ncol = 2, byrow = TRUE) hexpolygon(x = hmeds[, 1], y = hmeds[, 2], hexC, border = col.control$med.b, fill = col.control$medhex) if(arrows) { for(i in focus) { for(j in focus[focus < i]) { if(abs(hmeds[i, 1] - hmeds[j, 1]) + abs(hmeds[i, 2] - hmeds[j, 2]) > eps) grid.lines(c(hmeds[i, 1],hmeds[j, 1]), c(hmeds[i, 2], hmeds[j, 2]), default.units = "native", arrow=arrow(length=size)) #grid.arrows(c(hmeds[i, 1], hmeds[j, 1]), # c(hmeds[i, 2], hmeds[j, 2]), # default.units = "native", # length = size, gp = gpar(lwd = lwd)) } } } } ##________________Clean Up_______________________________________________ popViewport() invisible(hvp) } ## hdiffplot() hexbin/R/hbox.R0000644000176200001440000000517013171627112013017 0ustar liggesusershboxplot <- function(bin, xbnds = NULL, ybnds = NULL, density, border = c(0,grey(.7)), pen = c(2, 3), unzoom = 1.1, clip="off", reshape = FALSE, xlab = NULL, ylab = NULL, main = "") { ##_______________ Collect computing constants______________ if(!is(bin,"hexbin")) stop("first argument must be a hexbin object") h.xy <- hcell2xy(bin,check.erosion=TRUE) ##___zoom in scaling with expanding to avoid hexagons outside plot frame___ if(is(bin,"erodebin")) { h.xy$x <- h.xy$x h.xy$y <- h.xy$y nxbnds <- if(is.null(xbnds)) range(h.xy$x) else xbnds nybnds <- if(is.null(ybnds)) range(h.xy$y) else ybnds ratiox <- diff(nxbnds)/diff(bin@xbnds) ratioy <- diff(nybnds)/diff(bin@ybnds) ratio <- max(ratioy, ratiox) nxbnds <- mean(nxbnds) + c(-1,1)*(unzoom * ratio * diff(bin@xbnds))/2 nybnds <- mean(nybnds) + c(-1,1)*(unzoom * ratio * diff(bin@ybnds))/2 } else { nxbnds <- if(is.null(xbnds)) bin@xbnds else xbnds nybnds <- if(is.null(ybnds)) bin@ybnds else ybnds } margins <- unit(0.1 + c(5,4,4,3),"lines") plot.vp <- hexViewport(bin, xbnds = nxbnds, ybnds = nybnds, mar=margins, newpage = TRUE) pushHexport(plot.vp) grid.rect() grid.xaxis() grid.yaxis() ## xlab, ylab, main : if(is.null(xlab)) xlab <- bin@xlab if(is.null(ylab)) ylab <- bin@ylab if(nchar(xlab) > 0) grid.text(xlab, y = unit(-2, "lines"), gp= gpar(fontsize= 16)) if(nchar(ylab) > 0) grid.text(ylab, x = unit(-2, "lines"), gp= gpar(fontsize= 16), rot = 90) if(nchar(main) > 0) grid.text(main, y = unit(1, "npc") + unit(1.5, "lines"), gp = gpar(fontsize = 18)) if(clip=="on") { popViewport() pushHexport(plot.vp, clip="on") } cnt <- if(is(bin,"erodebin")) bin@count[bin@eroded] else bin@count xbins <- bin@xbins shape <- bin@shape xnew <- h.xy$x ynew <- h.xy$y ##__________________ Construct a hexagon___________________ dx <- (0.5 * diff(bin@xbnds))/xbins dy <- (0.5 * diff(bin@ybnds))/(xbins * shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) ##_______________ Full Cell Plotting_____________________ hexpolygon(xnew, ynew, hexC, density = density, fill = pen[2], border = border[2]) ##______________Plotting median___________________________ if(!is(bin,"erodebin")) { ## No warning here, allow non-erode above! warning("No erode component") } else { med <- which.max(bin@erode) xnew <- xnew[med] ynew <- ynew[med] hexpolygon(xnew, ynew, hexC, density = density, fill = pen[1], border = border[1]) } popViewport() invisible(plot.vp) }# hboxplot() hexbin/R/MAG.R0000644000176200001440000001437213171627112012467 0ustar liggesusersmagent <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0, 0, 0), c( 40, 0, 0), c( 56, 0, 4), c( 61, 0, 9), c( 64, 0, 12), c( 66, 0, 14), c( 69, 0, 17), c( 73, 0, 20), c( 74, 0, 22), c( 78, 0, 25), c( 79, 0, 27), c( 83, 0, 30), c( 85, 0, 31), c( 86, 0, 33), c( 90, 0, 36), c( 91, 0, 38), c( 93, 0, 39), c( 95, 0, 41), c( 96, 0, 43), c(100, 0, 46), c(102, 0, 47), c(103, 0, 49), c(105, 0, 51), c(107, 0, 52), c(108, 0, 54), c(110, 0, 55), c(112, 0, 57), c(112, 0, 57), c(113, 0, 58), c(115, 0, 60), c(117, 0, 62), c(119, 0, 63), c(120, 0, 65), c(122, 0, 66), c(124, 0, 68), c(125, 0, 70), c(127, 0, 71), c(129, 0, 73), c(129, 0, 73), c(130, 0, 74), c(132, 0, 76), c(134, 0, 78), c(136, 0, 79), c(137, 0, 81), c(139, 0, 82), c(141, 0, 84), c(142, 0, 86), c(144, 0, 87), c(146, 0, 89), c(147, 0, 90), c(149, 0, 92), c(151, 0, 94), c(151, 0, 94), c(153, 0, 95), c(154, 0, 97), c(156, 0, 98), c(158, 0,100), c(159, 0,102), c(161, 0,103), c(163, 0,105), c(164, 0,106), c(166, 0,108), c(168, 0,109), c(170, 0,111), c(171, 0,113), c(173, 0,114), c(175, 0,116), c(176, 0,117), c(178, 0,119), c(180, 0,121), c(180, 0,121), c(181, 0,122), c(183, 0,124), c(185, 0,125), c(187, 0,127), c(188, 0,129), c(190, 0,130), c(192, 0,132), c(193, 0,133), c(195, 0,135), c(197, 0,137), c(198, 0,138), c(200, 0,140), c(202, 0,141), c(204, 0,143), c(204, 0,143), c(205, 0,145), c(207, 0,146), c(209, 0,148), c(210, 0,149), c(212, 0,151), c(214, 0,153), c(215, 0,154), c(217, 0,156), c(219, 0,157), c(221, 0,159), c(222, 0,160), c(222, 0,160), c(224, 0,162), c(226, 0,164), c(227, 0,165), c(229, 0,167), c(231, 0,168), c(232, 0,170), c(234, 0,172), c(236, 0,173), c(238, 0,175), c(238, 0,175), c(239, 0,176), c(241, 0,178), c(243, 0,180), c(244, 0,181), c(246, 0,183), c(248, 2,184), c(249, 4,186), c(249, 4,186), c(249, 4,186), c(251, 6,188), c(251, 6,188), c(253, 9,189), c(253, 9,189), c(255, 11,191), c(255, 11,191), c(255, 13,192), c(255, 13,192), c(255, 13,192), c(255, 16,194), c(255, 18,196), c(255, 20,197), c(255, 20,197), c(255, 23,199), c(255, 25,200), c(255, 27,202), c(255, 30,204), c(255, 32,205), c(255, 34,207), c(255, 37,208), c(255, 37,208), c(255, 39,210), c(255, 41,211), c(255, 44,213), c(255, 46,215), c(255, 48,216), c(255, 51,218), c(255, 53,219), c(255, 53,219), c(255, 55,221), c(255, 57,223), c(255, 60,224), c(255, 62,226), c(255, 64,227), c(255, 67,229), c(255, 67,229), c(255, 69,231), c(255, 71,232), c(255, 74,234), c(255, 76,235), c(255, 78,237), c(255, 81,239), c(255, 81,239), c(255, 83,240), c(255, 85,242), c(255, 88,243), c(255, 90,245), c(255, 92,247), c(255, 95,248), c(255, 95,248), c(255, 97,250), c(255, 99,251), c(255,102,253), c(255,104,255), c(255,106,255), c(255,106,255), c(255,108,255), c(255,111,255), c(255,113,255), c(255,115,255), c(255,115,255), c(255,118,255), c(255,120,255), c(255,122,255), c(255,122,255), c(255,125,255), c(255,127,255), c(255,129,255), c(255,129,255), c(255,132,255), c(255,134,255), c(255,136,255), c(255,136,255), c(255,139,255), c(255,141,255), c(255,143,255), c(255,143,255), c(255,146,255), c(255,148,255), c(255,150,255), c(255,150,255), c(255,153,255), c(255,155,255), c(255,155,255), c(255,157,255), c(255,159,255), c(255,159,255), c(255,162,255), c(255,164,255), c(255,164,255), c(255,166,255), c(255,169,255), c(255,171,255), c(255,171,255), c(255,173,255), c(255,176,255), c(255,176,255), c(255,178,255), c(255,180,255), c(255,180,255), c(255,183,255), c(255,185,255), c(255,185,255), c(255,187,255), c(255,190,255), c(255,190,255), c(255,192,255), c(255,194,255), c(255,197,255), c(255,197,255), c(255,199,255), c(255,201,255), c(255,204,255), c(255,204,255), c(255,206,255), c(255,208,255), c(255,210,255), c(255,210,255), c(255,213,255), c(255,215,255), c(255,217,255), c(255,217,255), c(255,220,255), c(255,222,255), c(255,224,255), c(255,227,255), c(255,229,255), c(255,229,255), c(255,231,255), c(255,234,255), c(255,236,255), c(255,238,255), c(255,241,255), c(255,243,255), c(255,243,255), c(255,245,255), c(255,248,255), c(255,250,255), c(255,255,255)) [ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexbinplot.R0000644000176200001440000007317513171627112014245 0ustar liggesusers## lattice version of gplot.hexbin ## There are two major problems. (1) For comparability across panels, ## we want the same mincnt and maxcnt in all panels. However, a ## suitable default can really only be determined at printing time, ## since it would depend on the physical dimensions of the panel. (2) ## there is no proper way to communicate the mincnt and maxcnt to the ## legend. ## Tentative solution: the counts can be calculated once enough things ## are known, namely the aspect ratio, xbins and [xy]bnds. An ## important question then is whether [xy]bnds should be [xy]lim or ## range([xy]). Both should be allowed, since [xy]lim makes them ## comparable, range([xy]) potentially shows more detail. For ## relation != "same", both are more or less similar. An important ## observation is that with range([xy]), 'shape = aspect ratio of ## panel' does not guarantee symmetric hexagons, so shape has to be ## different for each panel. ## Only feasible approach I can think of is to produce the trellis ## object first (with known aspect, so aspect="fill" is absolutely ## no-no), then analyze the limits and relevant panel arguments to get ## 'maxcnt' (essentially doing a dry run of the panel calculations). ## This needs undocumented knowledge of the trellis object, which is ## kinda not good, but at least it gets the job done. Once we know ## maxcnt, we can also set up a suitable legend function. ## Unfortunately, this has the potential to screw up update calls that ## modify certain things. Is there any way to capture those? Maybe ## make a new class that inherits from "trellis". For now, we'll ## pretend that the problem doesn't exist. ## tool borrowed from lattice updateList <- function (x, val) { if (is.null(x)) x <- list() modifyList(x, val) } prepanel.hexbinplot <- function(x, y, type = character(0),...) { if('tmd'%in%type){ tmp <- x x <- (y + x)/sqrt(2) y <- (y - tmp)/sqrt(2) } ans <- list(xlim = range(x, finite = TRUE), ylim = range(y, finite = TRUE), dx = IQR(x,na.rm=TRUE), dy = IQR(y,na.rm=TRUE)) } panel.hexbinplot <- function(x, y, ..., groups = NULL) { if (is.null(groups)) panel.hexbin(x, y, ...) else panel.hexpose(x, y, ..., groups = groups) } panel.hexbin <- function(x, y, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, # default useful with splom(, panel = panel.hexbin) type = character(0), ..., check.erosion = FALSE) { if ("tmd" %in% type) { tmp <- x x <- (y + x)/sqrt(2) y <- (y - tmp)/sqrt(2) } if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (!missing(check.erosion)) warning("explicit 'check.erosion' specification ignored") h <- hexbin(x = x, y = y, xbins = xbins, shape = shape, xbnds = xbnds, ybnds = ybnds) if (.prelim) return(max(h@count)) ## have to do this because grid.hexagons croaks with unrecognized ## arguments: args <- list(dat = h, check.erosion = FALSE, ...) keep <- names(args) %in% names(formals(grid.hexagons)) if ('g' %in% type) panel.grid(h = -1, v = -1) if ('hg' %in% type) panel.hexgrid(h) do.call("grid.hexagons", args[keep]) if ("r" %in% type) panel.lmline(x, y, ...) if ("smooth" %in% type) panel.hexloess(h,...) invisible() } panel.hexboxplot <- function(x, y, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, type = character(0), cdfcut=.25, shadow=.05, ..., check.erosion = TRUE) { if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (!missing(check.erosion)) warning("explicit 'check.erosion' specification ignored") h <-hexbin(x = x, y = y, xbins = xbins, shape = shape, xbnds = xbnds, ybnds = ybnds,IDs=TRUE) if (.prelim) return(max(h@count)) ## have to do this because grid.hexagons croaks with unrecognized ## arguments: args <- list(dat = h, check.erosion = FALSE, ...) keep <- names(args) %in% names(formals(grid.hexagons)) if ('hg' %in% type) panel.hexgrid(h) if ('g' %in% type) panel.grid(h = -1, v = -1) if(shadow) { eh <- erode(h,cdfcut=shadow) h.xy <- hcell2xy(eh,check.erosion=TRUE) dx <- (0.5 * diff(eh@xbnds))/eh@xbins dy <- (0.5 * diff(eh@ybnds))/(eh@xbins * h@shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) hexpolygon(h.xy$x,h.xy$y, hexC, density = density, fill = NA, border = gray(.75)) } eh <- erode(h,cdfcut=cdfcut) h.xy <- hcell2xy(eh,check.erosion=TRUE) dx <- (0.5 * diff(eh@xbnds))/eh@xbins dy <- (0.5 * diff(eh@ybnds))/(eh@xbins * h@shape * sqrt(3)) hexC <- hexcoords(dx, dy, sep = NULL) hexpolygon(h.xy$x,h.xy$y, hexC, density = density, fill = "green", border = gray(.75)) med <- which.max(eh@erode) xnew <- h.xy$x[med] ynew <- h.xy$y[med] hexpolygon(xnew, ynew, hexC, density = density, fill = "red", border =gray(.25)) invisible() } panel.hexpose <- function(x, y, groups, subscripts, xbins = 30, xbnds = c("data", "panel"), # was: xbnds = c("panel", "data"), ybnds = c("data", "panel"), # was: ybnds = c("panel", "data"), ## special args .prelim = FALSE, .cpl = current.panel.limits(), .xlim = .cpl$xlim, .ylim = .cpl$ylim, .aspect.ratio = 1, #erode Args cdfcut=.05, #hdiff Args hexpose.focus=c(1,2), hexpose.focus.colors=c("yellow","blue"), hexpose.focus.border=c("cyan","orange"), hexpose.median.color="red", hexpose.median.border="black", arrows = TRUE, size = unit(0.1, "inches"), arrow.lwd = 2, eps = 1e-6, type = character(0), ..., check.erosion = TRUE) { if (is.character(xbnds)) xbnds <- switch(match.arg(xbnds), panel = .xlim, data = range(x, finite = TRUE)) if (is.character(ybnds)) ybnds <- switch(match.arg(ybnds), panel = .ylim, data = range(y, finite = TRUE)) shape <- .aspect.ratio * (diff(ybnds) / diff(.ylim)) / (diff(xbnds) / diff(.xlim)) if (is.numeric(groups)) groups <- as.character(groups[subscripts]) else groups <- groups[subscripts] binL <- hexList(x, y, given=groups, xbins=xbins, shape=shape, xbnds=xbnds, ybnds=ybnds) if ('hs' %in% type) lapply(binL@hbins,smooth.hexbin) binL@hbins <- lapply(binL@hbins,erode,cdfcut=cdfcut) if ('hg' %in% type) panel.hexgrid(binL@hbins[[1]]) ## ??? if ('g' %in% type) panel.grid(h = -1, v = -1) eroded <- unlist(lapply(binL@hbins, is, "erodebin")) tmph.xy <- lapply(binL@hbins, hcell2xy, check.erosion = TRUE) ##__________________ Construct hexagon___________________ dx <- (0.5 * diff(binL@Xbnds))/xbins dy <- (0.5 * diff(binL@Ybnds))/(xbins * binL@Shape * sqrt(3)) hexC <- hexcoords(dx = dx, dy = dy) ##__________________ Set up intersections and colors___________________ ## Reorder so that the focus bin objects are at the top of the list if(length(hexpose.focus) < binL@n) { binL@hbins <- c(binL@hbins[hexpose.focus], binL@hbins[-hexpose.focus]) binL@Bnames <- c(binL@Bnames[hexpose.focus], binL@Bnames[-hexpose.focus]) } cell.stat <- all.intersect(binL@hbins) cell.stat.n <- apply(cell.stat, 1, sum) i.depth <- max(cell.stat.n) diff.cols <- vector(mode = "list", length = i.depth) levcells <- which(cell.stat.n == 1) whichbin <- apply(cell.stat[levcells, ], 1, which) ## Set all the focal colors for the unique bin cells ## if not specified make them equally spaced on the color wheel ## with high saturation and set the background bins to gray nfcol <- length(hexpose.focus) nhb <- binL@n nbcol <- nhb-nfcol fills <- if(is.null(hexpose.focus.colors)) { if(nbcol > 0) hsv(h = c(seq(0, 1, length = nfcol+1)[1:nfcol],rep(0, nbcol)), s = c(rep(1, nfcol), rep(0, nbcol)), ## V = c(rep(1, nfcol), seq(.9, .1, length=nbcol)) v = c(rep(1, nfcol), rep(.9, nbcol))) else hsv(h=seq(0, 1, length = nhb+1))[1:nfcol] } else { foc.col <- t(col2rgb(hexpose.focus.colors))/255 if(nbcol > 0) { bcol <- t(col2rgb(rep(grey(.6),nbcol)))/255 rbind(foc.col, bcol) } else foc.col } diff.cols[[1]] <- list(fill = fills, border = gray(.8)) ##_______________ Full Cell Plotting for Unique BinL Cells_________________ if(length(levcells) > 0) { for(i in unique(whichbin)) { pcells <- if(eroded[i]) binL@hbins[[i]]@cell[binL@hbins[[i]]@eroded] else binL@hbins[[i]]@cell pcells <- which(pcells %in% levcells[whichbin == i]) hexpolygon(x = tmph.xy[[i]]$x[pcells], y = tmph.xy[[i]]$y[pcells], hexC, border = hexpose.focus.border[i] , fill = hexpose.focus.colors[i] ) } } ## Now do the intersections. All intersections are convex ## combinations of the colors of the overlapping unique bins in ## the CIEluv colorspace. so if the binlist is of length 2 and ## the focal hbins are "blue" and "yellow" respectively the ## intersection would be green. First I need to get this to work ## and then I can think about how to override this with an option ## in color.control. -NL if(i.depth > 1) { for(dl in 2:(i.depth)) { levcells <- which(cell.stat.n == dl) if(length(levcells) == 0) next whichbin <- apply(cell.stat[levcells, ], 1, function(x)paste(which(x), sep = "", collapse = ":")) inter.nm <- unique(whichbin) fills <- matrix(0, length(inter.nm), 3) i <- 1 for(bn in inter.nm) { who <- as.integer(unlist(strsplit(bn, ":"))) ## FIXME (DS): this doesn't work fills[i, ] <- mixcolors2(1/length(who), diff.cols[[1]]$fill[who,]) i <- i+1 } fills <- rgb(fills[,1],fills[,2],fills[,3]) diff.cols[[dl]] <- list(fill = fills, border = gray((i.depth-dl)/i.depth)) ##____Full Cell Plotting for Intersecting Cells at Intersection Depth i____ i <- 1 for(ints in inter.nm) { bin.i <- as.integer(unlist(strsplit(ints, ":"))[1]) pcells <- if(eroded[bin.i]) binL@hbins[[bin.i]]@cell[binL@hbins[[bin.i]]@eroded] else binL@hbins[[bin.i]]@cell pcells <- which(pcells %in% levcells[whichbin == ints]) hexpolygon(x = tmph.xy[[bin.i]]$x[pcells], y = tmph.xy[[bin.i]]$y[pcells], hexC, border = diff.cols[[dl]]$border , fill = diff.cols[[dl]]$fill[i] ) i <- i+1 } } } if(any(eroded)) { hmeds <- matrix(unlist(lapply(binL@hbins[eroded], function(x)unlist(getHMedian(x)))), ncol = 2, byrow = TRUE) hexpolygon(x = hmeds[, 1], y = hmeds[, 2], hexC, border = hexpose.median.border, fill = hexpose.median.color) if(arrows) { for(i in hexpose.focus) { for(j in hexpose.focus[hexpose.focus < i]) { if(abs(hmeds[i, 1] - hmeds[j, 1]) + abs(hmeds[i, 2] - hmeds[j, 2]) > eps) grid.arrows(c(hmeds[i, 1], hmeds[j, 1]), c(hmeds[i, 2], hmeds[j, 2]), default.units = "native", length = size, gp = gpar(lwd = arrow.lwd)) } } } } invisible() } hexbinplot <- function(x, data, ...) UseMethod("hexbinplot") hexbinplot.formula <- function(x, data = NULL, prepanel = prepanel.hexbinplot, panel = panel.hexbinplot, groups = NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, ..., maxcnt, legend = NULL, legend.width = TRUE, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexbinplot) ccall <- match.call() if (is.logical(legend.width)) legend.width <- 1.2 * as.numeric(legend.width) if (is.character(aspect) && aspect == "fill") stop("aspect = 'fill' not permitted") if (!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation 'inv'") ccall$data <- data ccall$prepanel <- prepanel ccall$panel <- panel ccall$aspect <- aspect ccall$trans <- trans ccall$inv <- inv ccall$legend <- legend ccall[[1]] <- quote(lattice::xyplot) ans <- eval(ccall, parent.frame()) ## panel needs to know aspect ratio to calculate shape ans <- update(ans, .aspect.ratio = ans$aspect.ratio) ## also need maxcnt, o.w. can't draw legend, panels not comparable ## either if (missing(maxcnt)) maxcnt <- max(mapply(panel.hexbinplot, ## note: not 'panel' x = lapply(ans$panel.args, "[[", "x"), y = lapply(ans$panel.args, "[[", "y"), .xlim = if (is.list(ans$x.limits)) ans$x.limits else rep(list(ans$x.limits), length(ans$panel.args)), .ylim = if (is.list(ans$y.limits)) ans$y.limits else rep(list(ans$y.limits), length(ans$panel.args)), MoreArgs = c(ans$panel.args.common, list(.prelim = TRUE, .cpl = NA)))) ans <- update(ans, maxcnt = maxcnt) if (colorkey) ans <- update(ans, legend = updateList(ans$legend, list(right = list(fun = hexlegendGrob, args = list(maxcnt = maxcnt, trans = trans, inv = inv, legend = legend.width, ...))))) ans$call <- ocall ans } old.hexbinplot.formula <- function(x, data = parent.frame(), prepanel = prepanel.hexbinplot, panel = if (is.null(groups)) panel.hexbinplot else panel.hexpose, groups=NULL, aspect = "xy", trans = NULL, inv = NULL, colorkey = TRUE, ..., maxcnt, legend = NULL, legend.width = TRUE) { if (is.logical(legend.width)) legend.width <- 1.2 * as.numeric(legend.width) if (is.character(aspect) && aspect == "fill") stop("aspect = 'fill' not permitted") if (!is.null(trans) && is.null(inv)) stop("Must supply the inverse transformation 'inv'") groups <- eval(substitute(groups), data, parent.frame()) ## There must be a better way to handle this, ugh. ans <- if(is.null(groups)) { xyplot(x, data = data, prepanel = prepanel, panel = panel, aspect = aspect, trans = trans, inv = inv, legend = legend, ...) } else { xyplot(x, data = data, prepanel = prepanel, panel = panel, groups=groups, aspect = aspect, trans = trans, inv = inv, legend = legend, ...) } ## panel needs to know aspect ratio to calculate shape ans <- update(ans, .aspect.ratio = ans$aspect.ratio) ## also need maxcnt, o.w. can't draw legend, panels not comparable ## either if (missing(maxcnt)) maxcnt <- max(mapply(panel.hexbinplot, ## note: not 'panel' x = lapply(ans$panel.args, "[[", "x"), y = lapply(ans$panel.args, "[[", "y"), .xlim = if (is.list(ans$x.limits)) ans$x.limits else rep(list(ans$x.limits), length(ans$panel.args)), .ylim = if (is.list(ans$y.limits)) ans$y.limits else rep(list(ans$y.limits), length(ans$panel.args)), MoreArgs = c(ans$panel.args.common, list(.prelim = TRUE, .cpl = NA)))) ans <- update(ans, maxcnt = maxcnt) if (colorkey) ans <- update(ans, legend = updateList(ans$legend, list(right = list(fun = hexlegendGrob, args = list(maxcnt = maxcnt, trans = trans, inv = inv, legend = legend.width, ...))))) ans } ## want a grob instead of actual plotting hexlegendGrob <- function(legend = 1.2, inner = legend / 5, cex.labels = 1, cex.title = 1.2, style = "colorscale", minarea = 0.05, maxarea = 0.8, mincnt = 1, maxcnt, trans = NULL, inv = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n) { LinGray(n,beg = 90,end = 15) }, ..., vp = NULL, draw = FALSE) { ## the formal arg matching should happen style <- match.arg(style, eval(formals(grid.hexagons)[["style"]])) if (style %in% c("centroids", "lattice", "colorscale")) { ## _______________tranformations_______________________ if(is.null(trans)) { sc <- maxcnt - mincnt bnds <- round(mincnt + sc * colorcut) } else { if(!is.function(trans) && !is.function(inv)) stop("'trans' and 'inv' must both be functions if 'trans' is not NULL") con <- trans(mincnt) sc <- trans(maxcnt) - con bnds <- round(inv(con + sc * colorcut)) } } ## grob ans <- switch(style, "colorscale" = { n <- length(bnds) pen <- colramp(n-1) ## rectangles instead of polygons ## pol <- ## rectGrob(x = 0.5, y = 1:(n-1)/n, ## height = 1/n, ## default.units = "npc", ## gp = gpar(fill = pen, col = border)) hexxy <- hexcoords(dx = 1, n = 1)[c("x", "y")] maxxy <- max(abs(unlist(hexxy))) hexxy <- lapply(hexxy, function(x) 0.5 * x/ maxxy) pol <- polygonGrob(x = 0.5 + rep(hexxy$x, n-1), y = (rep(1:(n-1), each = 6) + hexxy$y) / n, id.lengths = rep(6, n-1), gp = gpar(fill = pen, col = border), default.units = "npc") txt <- textGrob(as.character(bnds), x = 0.5, y = (0:(n-1) + 0.5) / n, gp = gpar(cex = cex.labels), default.units = "npc") ttl <- textGrob("Counts", gp = gpar(cex = cex.title)) key.layout <- grid.layout(nrow = 2, ncol = 2, heights = unit(c(1.5, 1), c("grobheight", "grobheight"), data = list(ttl, txt)), widths = unit(c(1/n, 1), c("grobheight", "grobwidth"), data = list(pol, txt)), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) key.gf <- placeGrob(key.gf, ttl, row = 1, col = 1:2) key.gf <- placeGrob(key.gf, pol, row = 2, col = 1) key.gf <- placeGrob(key.gf, txt, row = 2, col = 2) key.gf }, "centroids" = , "lattice" = { warning("legend shows relative sizes") ## Note: it may not be impossible to get absolute ## sizes. The bigger problem is that when ## [xy]bnds="data", the sizes (for the same count) may ## not be the same across panels. IMO, that's a more ## useful feature than getting the absolute sizes ## right. radius <- sqrt(minarea + (maxarea - minarea) * colorcut) n <- length(radius) if(is.null(pen)) pen <- 1 if(is.null(border)) border <- pen hexxy <- hexcoords(dx = 1, n = 1)[c("x", "y")] maxxy <- max(abs(unlist(hexxy))) hexxy <- lapply(hexxy, function(x) 0.5 * x/ maxxy) pol <- polygonGrob(x = 0.5 + rep(radius, each = 6) * rep(hexxy$x, n), y = (rep(0.5 + 1:n, each = 6) + rep(radius, each = 6) * hexxy$y - 1) / n, id.lengths = rep(6, n), gp = gpar(fill = pen, col = border), default.units = "npc") txt <- textGrob(as.character(bnds), x = 0.5, y = (1:n - 0.5) / n, gp = gpar(cex = cex.labels), default.units = "npc") ttl <- textGrob("Counts", gp = gpar(cex = cex.title)) key.layout <- grid.layout(nrow = 2, ncol = 2, heights = unit(c(1.5, 1), c("grobheight", "grobheight"), data = list(ttl, txt)), widths = unit(c(1/n, 1), c("grobheight", "grobwidth"), data = list(pol, txt)), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) key.gf <- placeGrob(key.gf, ttl, row = 1, col = 1:2) key.gf <- placeGrob(key.gf, pol, row = 2, col = 1) key.gf <- placeGrob(key.gf, txt, row = 2, col = 2) key.gf }, "nested.lattice" = , "nested.centroids" = { dx <- inner/2 dy <- dx/sqrt(3) hexC <- hexcoords(dx, dy, n = 1, sep = NULL) ## _____________x scaling_____________________________ numb <- cut(floor(legend/inner), breaks = c(-1, 0, 2,4)) ## Note: In old code ## top breaks=c(-1,0,2,4,8), numb<- 5 and size=1:9 if (is.na(numb)) numb <- 4 switch(numb, { warning("not enough space for legend") return(textGrob("")) }, size <- 5, size <- c(1, 5, 9), size <- c(1, 3, 5, 7, 9)) xmax <- length(size) radius <- sqrt(minarea + (maxarea - minarea) * (size - 1)/9) txt <- as.character(size) ##___________________y scaling_____________________ lab <- c("Ones", "Tens", "Hundreds", "Thousands", "10 Thousands", "100 Thousands", "Millions", "10 Millions", "100 Millions", "Billions") power <- floor(log10(maxcnt)) + 1 yinc <- 16 * dy ysize <- yinc * power xmid <- 0 x <- inner * (1:xmax - (1 + xmax)/2) + xmid n <- length(x) tx <- rep.int(hexC$x, n) ty <- rep.int(hexC$y, n) six <- rep.int(6:6, n) ## y <- rep.int(3 * dy - yinc, xmax) y <- rep.int(3 * dy - 0.75 * yinc, xmax) if (is.null(pen)) { pen <- 1:power +1 pen <- cbind(pen, pen +10) } if (is.null(border)) border <- TRUE key.layout <- grid.layout(nrow = 1, ncol = 1, heights = unit(ysize, "inches"), widths = unit(legend, "inches"), respect = TRUE) key.gf <- frameGrob(layout = key.layout, vp = vp) ## for debugging ## key.gf <- ## placeGrob(key.gf, rectGrob(gp = gpar(fill = "transparent"))) n6 <- rep.int(6, n) for(i in 1:power) { y <- y + yinc key.gf <- placeGrob(key.gf, polygonGrob(x = unit(legend / 2 + rep.int(hexC$x, n) + rep.int(x, n6), "inches"), y = unit(rep.int(hexC$y, n) + rep.int(y, n6), "inches"), id.lengths = n6, gp = gpar(col = pen[i, 1], fill = if (border) 1 else pen[i, 1])), row = 1, col = 1) key.gf <- placeGrob(key.gf, polygonGrob(x = legend / 2 + tx * rep.int(radius, six) + rep.int(x, six), y = ty * rep.int(radius, six) + rep.int(y, six), default.units = "inches", id=NULL, id.lengths=rep(6,n), gp = gpar(fill = pen[i,2], col = border)), row = 1, col = 1) key.gf <- placeGrob(key.gf, textGrob(txt, x = legend / 2 + x, y = y - 4.5 * dy, default.units = "inches", gp = gpar(cex = cex.labels)), row = 1, col = 1) key.gf <- placeGrob(key.gf, textGrob(lab[i], x = legend / 2 + xmid, y = y[1] + 4.5 * dy, default.units = "inches", gp = gpar(cex = 1.3 * cex.title)), row = 1, col = 1) } key.gf }) if (draw) { grid.draw(ans) invisible(ans) } else ans } hexbin/R/grid.hexagons.R0000644000176200001440000003221713171627112014621 0ustar liggesusers hexcoords <- function(dx, dy = NULL, n = 1, sep = NULL) { stopifnot(length(dx) == 1) if(is.null(dy)) dy <- dx/sqrt(3) if(is.null(sep)) list(x = rep.int(c(dx, dx, 0, -dx, -dx, 0), n), y = rep.int(c(dy,-dy, -2*dy, -dy, dy, 2*dy), n), no.sep = TRUE) else list(x = rep.int(c(dx, dx, 0, -dx, -dx, 0, sep), n), y = rep.int(c(dy,-dy, -2*dy, -dy, dy, 2*dy, sep), n), no.sep = FALSE) } hexpolygon <- function(x, y, hexC = hexcoords(dx, dy, n = 1), dx, dy=NULL, fill = 1, border = 0, hUnit = "native", ...) { ## Purpose: draw hexagon [grid.]polygon()'s around (x[i], y[i])_i ## Author: Martin Maechler, Jul 2004; Nicholas for grid n <- length(x) stopifnot(length(y) == n) stopifnot(is.list(hexC) && is.numeric(hexC$x) && is.numeric(hexC$y)) if(hexC$no.sep) { n6 <- rep.int(6:6, n) if(!is.null(hUnit)) { grid.polygon(x = unit(rep.int(hexC$x, n) + rep.int(x, n6),hUnit), y = unit(rep.int(hexC$y, n) + rep.int(y, n6),hUnit), id.lengths = n6, gp = gpar(col= border, fill= fill)) } else { grid.polygon(x = rep.int(hexC$x, n) + rep.int(x, n6), y = rep.int(hexC$y, n) + rep.int(y, n6), id.lengths = n6, gp = gpar(col= border, fill= fill)) } } else{ ## traditional graphics polygons: must be closed explicitly (+ 1 pt) n7 <- rep.int(7:7, n) polygon(x = rep.int(hexC$x, n) + rep.int(x, n7), y = rep.int(hexC$y, n) + rep.int(y, n7), ...) } } grid.hexagons <- function(dat, style = c("colorscale", "centroids", "lattice", "nested.lattice", "nested.centroids", "constant.col"), use.count=TRUE, cell.at=NULL, minarea = 0.05, maxarea = 0.8, check.erosion = TRUE, mincnt = 1, maxcnt = max(dat@count), trans = NULL, colorcut = seq(0, 1, length = 17), density = NULL, border = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90, end = 15) }, def.unit = "native", verbose = getOption("verbose")) { ## Warning: presumes the plot has the right shape and scales ## See plot.hexbin() ## Arguments: ## dat = hexbin object ## style = type of plotting ## 'centroids' = symbol area is a function of the count, ## approximate location near cell center of ## mass without overplotting ## 'lattice' = symbol area is a function of the count, ## plot at lattice points ## 'colorscale' = gray scale plot, ## color number determined by ## transformation and colorcut, ## area = full hexagons. ## 'nested.lattice'= plots two hexagons ## background hexagon ## area=full size ## color number by count in powers of 10 starting at pen 2 ## foreground hexagon ## area by log10(cnt)-floor(log10(cnt)) ## color number by count in powers of 10 starting at pen 12 ## 'nested.centroids' = like nested.lattice ## but counts < 10 are plotted ## ## minarea = minimum symbol area as fraction of the binning cell ## maxarea = maximum symbol area as fraction of the binning cell ## mincnt = minimum count accepted in plot ## maxcnt = maximum count accepted in plot ## trans = a transformation scaling counts into [0,1] to be applied ## to the counts for options 'centroids','lattice','colorscale': ## default=(cnt-mincnt)/(maxcnt-mincnt) ## colorcut= breaks for translating values between 0 and 1 into ## color classes. Default= seq(0,1,17), ## density = for hexagon graph paper ## border plot the border of the hexagon, use TRUE for ## hexagon graph paper ## Symbol size encoding: ## Area= minarea + scaled.count*(maxarea-minarea) ## When maxarea==1 and scaled.count==1, the hexagon cell ## is completely filled. ## ## If small hexagons are hard to see increase minarea. ## For gray scale encoding ## Uses the counts scaled into [0,1] ## Default gray cutpoints seq(0,1,17) yields 16 color classes ## The color number for the first class starts at 2. ## motif coding: black 15 white puts the first of the ## color class above the background black ## The function subtracts 1.e-6 from the lower cutpoint to include ## the boundary ## For nested scaling see the code ## Count scaling alternatives ## ## log 10 and Poisson transformations ## trans <- function(cnt) log10(cnt) ## min inv <- function(y) 10^y ## ## trans <- function(cnt) sqrt(4*cnt+2) ## inv <- function(y) (y^2-2)/4 ## Perceptual considerations. ## Visual response to relative symbol area is not linear and varies from ## person to person. A fractional power transformation ## to make the interpretation nearly linear for more people ## might be considered. With areas bounded between minarea ## and 1 the situation is complicated. ## ## The local background influences color interpretation. ## Having defined color breaks to focus attention on ## specific countours can help. ## ## Plotting the symbols near the center of mass is not only more accurate, ## it helps to reduce the visual dominance of the lattice structure. Of ## course higher resolution binning reduces the possible distance between ## the center of mass for a bin and the bin center. When symbols ## nearly fill their bin, the plot appears to vibrate. This can be ## partially controlled by reducing maxarea or by reducing ## contrast. ##____________________Initial checks_______________________ if(!is(dat,"hexbin")) stop("first argument must be a hexbin object") style <- match.arg(style) # so user can abbreviate if(minarea <= 0) stop("hexagons cannot have a zero area, change minarea") if(maxarea > 1) warning("maxarea > 1, hexagons may overplot") ##_______________ Collect computing constants______________ if(use.count){ cnt <- dat@count } else{ cnt <- cell.at if(is.null(cnt)){ if(is.null(dat@cAtt)) stop("Cell attribute cAtt is null") else cnt <- dat@cAtt } } xbins <- dat@xbins shape <- dat@shape tmp <- hcell2xy(dat, check.erosion = check.erosion) good <- mincnt <= cnt & cnt <= maxcnt xnew <- tmp$x[good] ynew <- tmp$y[good] cnt <- cnt[good] sx <- xbins/diff(dat@xbnds) sy <- (xbins * shape)/diff(dat@ybnds) ##___________Transform Counts to Radius_____________________ switch(style, "centroids" = , "lattice" = , "constant.col" =, "colorscale" = { if(is.null(trans)) { if( min(cnt,na.rm=TRUE)< 0){ pcnt<- cnt + min(cnt) rcnt <- { if(maxcnt == mincnt) rep.int(1, length(cnt)) else (pcnt - mincnt)/(maxcnt - mincnt) } } else rcnt <- { if(maxcnt == mincnt) rep.int(1, length(cnt)) else (cnt - mincnt)/(maxcnt - mincnt) } } else { rcnt <- (trans(cnt) - trans(mincnt)) / (trans(maxcnt) - trans(mincnt)) if(any(is.na(rcnt))) stop("bad count transformation") } area <- minarea + rcnt * (maxarea - minarea) }, "nested.lattice" = , "nested.centroids" = { diffarea <- maxarea - minarea step <- 10^floor(log10(cnt)) f <- (cnt/step - 1)/9 area <- minarea + f * diffarea area <- pmax(area, minarea) } ) area <- pmin(area, maxarea) radius <- sqrt(area) ##______________Set Colors_____________________________ switch(style, "centroids" = , "constant.col" = , "lattice" = { if(length(pen)!= length(cnt)){ if(is.null(pen)) pen <- rep.int(1, length(cnt)) ##else if(length(pen)== length(cnt)) break else if(length(pen)== 1) pen <- rep.int(pen,length(cnt)) else stop("'pen' has wrong length") } }, "nested.lattice" = , "nested.centroids" = { if(!is.null(pen) && length(dim(pen)) == 2) { dp <- dim(pen) lgMcnt <- ceiling(log10(max(cnt))) if(dp[1] != length(cnt) && dp[1] != lgMcnt ) { stop ("pen is not of right dimension") } if( dp[1] == lgMcnt ) { ind <- ceiling(log10(dat@count)) ## DS: 'dat' was 'bin' (??) ind[ind == 0] <- 1 pen <- pen[ind,] } ##else break } else { pen <- floor(log10(cnt)) + 2 pen <- cbind(pen, pen+10) } }, "colorscale" = { ## MM: Following is quite different from bin2d's nc <- length(colorcut) if(colorcut[1] > colorcut[nc]){ colorcut[1] <- colorcut[1] + 1e-06 colorcut[nc] <- colorcut[nc] - 1e-06 } else { colorcut[1] <- colorcut[1] - 1e-06 colorcut[nc] <- colorcut[nc] + 1e-06 } colgrp <- cut(rcnt, colorcut,labels = FALSE) if(any(is.na(colgrp))) colgrp <- ifelse(is.na(colgrp),0,colgrp) ##NL: colramp must be a function accepting an integer n ## and returning n colors clrs <- colramp(length(colorcut) - 1) pen <- clrs[colgrp] } ) ##__________________ Construct a hexagon___________________ ## The inner and outer radius for hexagon in the scaled plot inner <- 0.5 outer <- (2 * inner)/sqrt(3) ## Now construct a point up hexagon symbol in data units dx <- inner/sx dy <- outer/(2 * sy) rad <- sqrt(dx^2 + dy^2) hexC <- hexcoords(dx, dy, sep=NULL) ##_______________ Full Cell Plotting_____________________ switch(style, "constant.col" = , "colorscale" = { hexpolygon(xnew, ynew, hexC, density = density, fill = pen, border = if(!is.null(border)) border else pen) ## and that's been all for these styles return(invisible(paste("done", sQuote(style)))) }, "nested.lattice" = , "nested.centroids" = { hexpolygon(xnew, ynew, hexC, density = density, fill = if (is.null(border) || border) 1 else pen[,1], border = pen[,1]) } ) ##__________________ Symbol Center adjustments_______________ if(style == "centroids" || style == "nested.centroids") { xcm <- dat@xcm[good] ycm <- dat@ycm[good] ## Store 12 angles around a circle and the replicate the first ## The actual length for these vectors is determined by using ## factor use below k <- sqrt(3)/2 cosx <- c(1, k, .5, 0, -.5, -k, -1, -k, -.5, 0, .5, k, 1)/sx siny <- c(0, .5, k, 1, k, .5, 0, -.5, -k, -1, -k, -.5, 0)/sy ## Compute distances for differences after scaling into ## [0,size] x [0,aspect*size] ## Then there are size hexagons on the x axis dx <- sx * (xcm - xnew) dy <- sy * (ycm - ynew) dlen <- sqrt(dx^2 + dy^2) ## Find the closest approximating direction of the 12 vectors above cost <- ifelse(dlen > 0, dx/dlen, 0) tk <- (6 * acos(cost))/pi tk <- round(ifelse(dy < 0, 12 - tk, tk)) + 1 ## Select the available length for the approximating vector hrad <- ifelse(tk %% 2 == 1, inner, outer) ## Rad is either an inner or outer approximating radius. ## If dlen + hrad*radius <= hrad, move the center dlen units. ## Else move as much of dlen as possible without overplotting. fr <- pmin(hrad * (1 - radius), dlen) # Compute the symbol centers ## fr is the distance for the plot [0,xbins] x [0,aspect*xbins] ## cosx and siny give the x and y components of this distance ## in data units xnew <- xnew + fr * cosx[tk] ynew <- ynew + fr * siny[tk] } ## ________________Sized Hexagon Plotting__________________ ## scale the symbol by radius and add to the new center n <- length(radius) if(verbose) cat('length = ',length(pen),"\n", 'pen = ', pen+1,"\n") ##switch(style, ## centroids = , ## lattice = {if(is.null(pen))pen <- rep.int(1, n) ## else pen <- rep.int(pen, n)}, ## nested.lattice = , ## nested.centroids ={ ## if( ## pen[,2] <- pen[,1] + 10 ## } ) ## grid.polygon() closes automatically: now '6' where we had '7': n6 <- rep.int(6:6, n) pltx <- rep.int(hexC$x, n) * rep.int(radius, n6) + rep.int(xnew, n6) plty <- rep.int(hexC$y, n) * rep.int(radius, n6) + rep.int(ynew, n6) switch(style, "centroids" = , "lattice" = { grid.polygon(pltx, plty, default.units=def.unit, id=NULL, ## density = density, id.lengths= n6, gp=gpar(fill = pen, col = border)) }, "nested.lattice" = , "nested.centroids" = { grid.polygon(pltx, plty, default.units=def.unit, id=NULL, id.lengths= n6, gp=gpar(fill = pen[,2], ## density = density, col=if(!is.null(border)) border else pen[,2])) }) } if(FALSE){ ## considering 'hexagons' object setMethod("hexagons", signature(dat="hexbin"), grid.hexagons) erode.hexagons <- function(ebin,pen="black",border="red"){ print("Blank for now") } } hexbin/R/BTY.R0000644000176200001440000001420613171627112012515 0ustar liggesusersBTY <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(7,7,254), c(23,23,252), c(30,30,250), c(36,36,248), c(40,40,247), c(44,44,245), c(47,47,243), c(50,50,242), c(52,52,240), c(55,55,239), c(57,57,238), c(59,59,236), c(61,61,235), c(63,63,234), c(65,65,233), c(66,66,231), c(68,68,230), c(69,69,229), c(71,71,228), c(72,72,227), c(74,74,226), c(75,75,225), c(76,76,225), c(78,78,224), c(79,79,223), c(80,80,222), c(81,81,221), c(82,82,221), c(84,84,220), c(85,85,219), c(86,86,218), c(87,87,218), c(88,88,217), c(89,89,216), c(90,90,216), c(91,91,215), c(92,92,214), c(93,93,214), c(94,94,213), c(95,95,213), c(96,96,212), c(97,97,212), c(98,98,211), c(98,98,210), c(99,99,210), c(100,100,209), c(101,101,209), c(102,102,208), c(103,103,208), c(104,104,208), c(105,105,207), c(105,105,207), c(106,106,206), c(107,107,206), c(108,108,205), c(109,109,205), c(110,110,204), c(110,110,204), c(111,111,204), c(112,112,203), c(113,113,203), c(114,114,202), c(114,114,202), c(115,115,202), c(116,116,201), c(117,117,201), c(118,118,200), c(118,118,200), c(119,119,200), c(120,120,199), c(121,121,199), c(121,121,199), c(122,122,198), c(123,123,198), c(124,124,198), c(124,124,197), c(125,125,197), c(126,126,197), c(127,127,196), c(128,128,196), c(128,128,195), c(129,129,195), c(130,130,195), c(130,130,194), c(131,131,194), c(132,132,194), c(133,133,193), c(133,133,193), c(134,134,193), c(135,135,192), c(136,136,192), c(136,136,192), c(137,137,191), c(138,138,191), c(139,139,191), c(139,139,190), c(140,140,190), c(141,141,190), c(142,142,189), c(142,142,189), c(143,143,189), c(144,144,188), c(144,144,188), c(145,145,188), c(146,146,187), c(147,147,187), c(147,147,187), c(148,148,186), c(149,149,186), c(149,149,186), c(150,150,185), c(151,151,185), c(152,152,185), c(152,152,184), c(153,153,184), c(154,154,184), c(154,154,183), c(155,155,183), c(156,156,182), c(157,157,182), c(157,157,182), c(158,158,181), c(159,159,181), c(159,159,181), c(160,160,180), c(161,161,180), c(162,162,180), c(162,162,179), c(163,163,179), c(164,164,178), c(164,164,178), c(165,165,178), c(166,166,177), c(167,167,177), c(167,167,176), c(168,168,176), c(169,169,176), c(169,169,175), c(170,170,175), c(171,171,174), c(172,172,174), c(172,172,173), c(173,173,173), c(174,174,173), c(174,174,172), c(175,175,172), c(176,176,171), c(177,177,171), c(177,177,170), c(178,178,170), c(179,179,169), c(179,179,169), c(180,180,168), c(181,181,168), c(181,181,167), c(182,182,167), c(183,183,166), c(184,184,166), c(184,184,165), c(185,185,165), c(186,186,164), c(186,186,164), c(187,187,163), c(188,188,163), c(189,189,162), c(189,189,162), c(190,190,161), c(191,191,161), c(191,191,160), c(192,192,159), c(193,193,159), c(194,194,158), c(194,194,158), c(195,195,157), c(196,196,157), c(196,196,156), c(197,197,155), c(198,198,155), c(199,199,154), c(199,199,153), c(200,200,153), c(201,201,152), c(201,201,151), c(202,202,151), c(203,203,150), c(204,204,149), c(204,204,149), c(205,205,148), c(206,206,147), c(206,206,146), c(207,207,146), c(208,208,145), c(209,209,144), c(209,209,143), c(210,210,143), c(211,211,142), c(211,211,141), c(212,212,140), c(213,213,139), c(214,214,138), c(214,214,138), c(215,215,137), c(216,216,136), c(216,216,135), c(217,217,134), c(218,218,133), c(219,219,132), c(219,219,131), c(220,220,130), c(221,221,129), c(221,221,128), c(222,222,127), c(223,223,126), c(224,224,125), c(224,224,124), c(225,225,123), c(226,226,122), c(226,226,121), c(227,227,119), c(228,228,118), c(229,229,117), c(229,229,116), c(230,230,114), c(231,231,113), c(232,232,112), c(232,232,110), c(233,233,109), c(234,234,107), c(234,234,106), c(235,235,104), c(236,236,103), c(237,237,101), c(237,237,100), c(238,238,98), c(239,239,96), c(239,239,94), c(240,240,92), c(241,241,91), c(242,242,89), c(242,242,86), c(243,243,84), c(244,244,82), c(245,245,80), c(245,245,77), c(246,246,74), c(247,247,72), c(247,247,69), c(248,248,65), c(249,249,62), c(250,250,58), c(250,250,54), c(251,251,49), c(252,252,44), c(253,253,37), c(253,253,28), c(254,254,13))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/BTC.R0000644000176200001440000001367113171627112012474 0ustar liggesusersBTC <- function(n, beg = 1, end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,40), c(0,4,56), c(0,9,61), c(0,12,64), c(0,14,66), c(0,17,69), c(0,20,73), c(0,22,74), c(0,25,78), c(0,27,79), c(0,30,83), c(0,31,85), c(0,33,86), c(0,36,90), c(0,38,91), c(0,39,93), c(0,41,95), c(0,43,96), c(0,46,100), c(0,47,102), c(0,49,103), c(0,51,105), c(0,52,107), c(0,54,108), c(0,55,110), c(0,57,112), c(0,57,112), c(0,58,113), c(0,60,115), c(0,62,117), c(0,63,119), c(0,65,120), c(0,66,122), c(0,68,124), c(0,70,125), c(0,71,127), c(0,73,129), c(0,73,129), c(0,74,130), c(0,76,132), c(0,78,134), c(0,79,136), c(0,81,137), c(0,82,139), c(0,84,141), c(0,86,142), c(0,87,144), c(0,89,146), c(0,90,147), c(0,92,149), c(0,94,151), c(0,94,151), c(0,95,153), c(0,97,154), c(0,98,156), c(0,100,158), c(0,102,159), c(0,103,161), c(0,105,163), c(0,106,164), c(0,108,166), c(0,109,168), c(0,111,170), c(0,113,171), c(0,114,173), c(0,116,175), c(0,117,176), c(0,119,178), c(0,121,180), c(0,121,180), c(0,122,181), c(0,124,183), c(0,125,185), c(0,127,187), c(0,129,188), c(0,130,190), c(0,132,192), c(0,133,193), c(0,135,195), c(0,137,197), c(0,138,198), c(0,140,200), c(0,141,202), c(0,143,204), c(0,143,204), c(0,145,205), c(0,146,207), c(0,148,209), c(0,149,210), c(0,151,212), c(0,153,214), c(0,154,215), c(0,156,217), c(0,157,219), c(0,159,221), c(0,160,222), c(0,160,222), c(0,162,224), c(0,164,226), c(0,165,227), c(0,167,229), c(0,168,231), c(0,170,232), c(0,172,234), c(0,173,236), c(0,175,238), c(0,175,238), c(0,176,239), c(0,178,241), c(0,180,243), c(0,181,244), c(0,183,246), c(2,184,248), c(4,186,249), c(4,186,249), c(4,186,249), c(6,188,251), c(6,188,251), c(9,189,253), c(9,189,253), c( 11,191,255), c( 11,191,255), c( 13,192,255), c( 13,192,255), c( 13,192,255), c( 16,194,255), c( 18,196,255), c( 20,197,255), c( 20,197,255), c( 23,199,255), c( 25,200,255), c( 27,202,255), c( 30,204,255), c( 32,205,255), c( 34,207,255), c( 37,208,255), c( 37,208,255), c( 39,210,255), c( 41,211,255), c( 44,213,255), c( 46,215,255), c( 48,216,255), c( 51,218,255), c( 53,219,255), c( 53,219,255), c( 55,221,255), c( 57,223,255), c( 60,224,255), c( 62,226,255), c( 64,227,255), c( 67,229,255), c( 67,229,255), c( 69,231,255), c( 71,232,255), c( 74,234,255), c( 76,235,255), c( 78,237,255), c( 81,239,255), c( 81,239,255), c( 83,240,255), c( 85,242,255), c( 88,243,255), c( 90,245,255), c( 92,247,255), c( 95,248,255), c( 95,248,255), c( 97,250,255), c( 99,251,255), c(102,253,255), c(104,255,255), c(106,255,255), c(106,255,255), c(108,255,255), c(111,255,255), c(113,255,255), c(115,255,255), c(115,255,255), c(118,255,255), c(120,255,255), c(122,255,255), c(122,255,255), c(125,255,255), c(127,255,255), c(129,255,255), c(129,255,255), c(132,255,255), c(134,255,255), c(136,255,255), c(136,255,255), c(139,255,255), c(141,255,255), c(143,255,255), c(143,255,255), c(146,255,255), c(148,255,255), c(150,255,255), c(150,255,255), c(153,255,255), c(155,255,255), c(155,255,255), c(157,255,255), c(159,255,255), c(159,255,255), c(162,255,255), c(164,255,255), c(164,255,255), c(166,255,255), c(169,255,255), c(171,255,255), c(171,255,255), c(173,255,255), c(176,255,255), c(176,255,255), c(178,255,255), c(180,255,255), c(180,255,255), c(183,255,255), c(185,255,255), c(185,255,255), c(187,255,255), c(190,255,255), c(190,255,255), c(192,255,255), c(194,255,255), c(197,255,255), c(197,255,255), c(199,255,255), c(201,255,255), c(204,255,255), c(204,255,255), c(206,255,255), c(208,255,255), c(210,255,255), c(210,255,255), c(213,255,255), c(215,255,255), c(217,255,255), c(217,255,255), c(220,255,255), c(222,255,255), c(224,255,255), c(227,255,255), c(229,255,255), c(229,255,255), c(231,255,255), c(234,255,255), c(236,255,255), c(238,255,255), c(241,255,255), c(243,255,255), c(243,255,255), c(245,255,255), c(248,255,255), c(250,255,255), c(255,255,255))[ round(seq(beg,end, length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexViewport.R0000644000176200001440000002211713775713071014415 0ustar liggesusersif ("simpleUnit" %in% class(unit(1, "mm"))) { setOldClass(c("unit", "unit_v2")) setOldClass(c("simpleUnit", "unit", "unit_v2")) } else { setOldClass("unit") } setOldClass("viewport") smartBnds <- function(hbin, eps=.05) { hxy <- hcell2xy(hbin) xr <- range(hxy$x) yr <- range(hxy$y) dx <- diff(xr) dy <- diff(yr) lambda <- function(a) pmax(log(a), 1) epsx <- c(-1,1)*(dx*eps/lambda(dx)) epsy <- c(-1,1)*(dy*eps/lambda(dy)) sx <- hbin@xbins/diff(hbin@xbnds) sy <- (hbin@xbins * hbin@shape)/diff(hbin@ybnds) inner <- 0.5 outer <- 1/sqrt(3) dx <- inner/sx dy <- outer/sy #xb <- dx/(hbin@xbins+1) #yb <- dy/((1/sqrt(3))*(hbin@xbins+1)*hbin@shape) list(xr = xr+ c(-dx,dx)+ epsx, yr = yr+ c(-dy,dy)+ epsy) } rname <- function(n, chars = letters) { ## random name with n characters paste(sample(chars, size = n, replace = TRUE), collapse="") } setClass("hexVP", representation(hexVp.on = "viewport", hexVp.off = "viewport", mar = "unit", fig = "unit", plt = "unit", xscale = "numeric", yscale = "numeric",shape="numeric", hp.name="character") ) hexViewport <- function(x, offset = unit(0,"inches"), mar = NULL, xbnds = NULL, ybnds = NULL, newpage = FALSE, clip ="off", vp.name=NULL) { if(!is(x,"hexbin")) stop("first argument must be a hexbin object.") stopifnot(is.unit(offset)) hvp <- new("hexVP") if (newpage) grid.newpage() if(is.null(mar)) { mar <- unit(0.1 + c(5,4,4,2),"lines") } else { if(!is.unit(mar)) stop("'mar' must be specified in unit()s") if(length(mar) == 1) mar <- rep(mar, 4) else if(length(mar) != 4) stop("'mar' must have length 1 or 4") } ## in both cases mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) fig <- c(as.numeric(convertUnit(unit(vpin[1],"inches") - offset,"inches")), as.numeric(vpin[2])) pin <- c(fig[1]-mai[2]-mai[4], fig[2]-mai[1]-mai[3]) xsize <- pin[1] ysize <- pin[2] ## The point is to optimize the placement ## and plotting area of the plotting window with ## the constraint that the margins are preserved ## to within some epsilon. This is going to get even ## harder for cases where the complex layouts are ## being constructed. NL -- I think it is fixed now (NL --3/22/2005) ## Now find the maximum rectangle in fig that ## has the correct aspect ratio and does not spill over epsilon into ## the margins, i.e. ysize/xsize - aspect.ratio < eps and ## xsize < fig[1], ysize < fig[2] if(x@shape * xsize <= ysize) { ##center <- (ysize - x@shape * xsize)/2 center <- (ysize - x@shape * xsize)/2 mai[1] <- mai[1] + center mai[3] <- mai[3] + center ysize <- x@shape * xsize } else { center <- (xsize - ysize/x@shape)/2 mai[2] <- mai[2] + center mai[4] <- mai[4] + center xsize <- ysize/x@shape } ##fig <- c(pin[1]+mai[2]+ mai[4],fig[2]) pin <- c(xsize,ysize) mar <- c(convertUnit(unit(mai[1],"inches"),"lines"), convertUnit(unit(mai[2],"inches"),"lines"), convertUnit(unit(mai[3],"inches"),"lines"), convertUnit(unit(mai[4],"inches"),"lines")) ##pin <- c(fig[1]-(mai[2] + mai[4]), ## fig[2]-(mai[1] + mai[3])) margins <- rep(as.numeric(mar), length.out = 4) wd <- convertUnit(unit(pin[1],"inches"),"npc") ## (unit(sum(margins[c(2, 4)]), "lines") + ## convertUnit(unit(legend,"inches"),"lines")) ## Oy, mi stupido! This is the problem, need to get the bounds right ## here. Fixed, do we need to guard against others stupidity and put some ## checks on xbnds and ybnds? (NL,4/1/2005) if(is.null(vp.name)) vp.name <- rname(5) xyb <- smartBnds(x) hvp@xscale <- xs <- if(is.null(xbnds)) xyb$xr else xbnds hvp@yscale <- ys <- if(is.null(ybnds)) xyb$yr else ybnds ht <- unit(1, "npc") - unit(sum(margins[c(1,3)]), "lines") hvp@hexVp.off <- viewport(x = unit(margins[2], "lines"), y = unit(margins[1], "lines"), width = wd, height = ht, xscale = xs, yscale = ys, just = c("left", "bottom"), default.units = "native", clip = "off", name = paste(vp.name,".off",sep="")) hvp@hexVp.on <- viewport(x = unit(margins[2], "lines"), y = unit(margins[1], "lines"), width = wd, height = ht, xscale = xs, yscale = ys, just = c("left", "bottom"), default.units = "native", clip = "on", name = paste(vp.name,".on",sep="")) hvp@mar <- unit(mar,"lines") hvp@fig <- convertUnit(unit(fig,"inches"),"npc") hvp@plt <- convertUnit(unit(pin,"inches"),"npc") hvp@shape <- x@shape ##hvp@leg <-convertUnit(offset,"npc") hvp } ## Potentially: ## setGeneric("grid:::pushViewport") ## setMethod("pushViewport", signature(x="hexVP"), ## function(hvp) { pushViewport(hvp@hexVp) }) pushHexport <- function(hvp, clip="off") { if(!is(hvp, "hexVP")) stop("1st argument must be 'hexVP' object") pushViewport(if(clip=="on") hvp@hexVp.on else hvp@hexVp.off) } ## maybe in the future ## setMethod("push",signature("hexVP"), pushHexport) setGeneric("getMargins", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getMargins")) setMethod("getMargins", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ mar <- convertUnit(x@mar,ret.unit) if(numeric) as.numeric(mar) else mar }) setGeneric("getPlt", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getPlt")) setMethod("getPlt", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ plt <- convertUnit(x@plt,ret.unit) if(numeric) as.numeric(plt) else plt }) setGeneric("getFig", function(x, ret.unit = "npc", numeric = FALSE) standardGeneric("getFig")) setMethod("getFig", "hexVP", function(x, ret.unit = "npc", numeric = FALSE){ fig <- convertUnit(x@fig,ret.unit) if(numeric) as.numeric(fig) else fig }) ## MM doesn't think it's ok to "pollute" the generic-space ## just for basic slot accessors : ## setGeneric("getXscale", function(x)standardGeneric("getXscale")) ## setMethod("getXscale", "hexVP", function(x){ x@xscale }) ## setGeneric("getYscale", function(x)standardGeneric("getYscale")) ## setMethod("getYscale", "hexVP", function(x){ x@yscale }) hexVP.abline <- function(hvp, a = NULL, b = NULL, h = numeric(0), v = numeric(0), col = 'black', lty = 1, lwd = 2, ...) { pushHexport(hvp, clip = 'on') col.line <- col if (!is.null(a)) { if (inherits(a, "lm")) { coeff <- coef(a) } else if (!is.null(tryCatch(coef(a), error = function(e) NULL))) coeff <- coef(a) else coeff <- c(a, b) if (length(coeff) == 1) coeff <- c(0, coeff) if (coeff[2] == 0) h <- c(h, coeff[1]) else if (!any(is.null(coeff))) { xx <- current.viewport()$xscale yy <- current.viewport()$yscale x <- numeric(0) y <- numeric(0) ll <- function(i, j, k, l) (yy[j] - coeff[1] - coeff[2] * xx[i]) * (yy[l] - coeff[1] - coeff[2] * xx[k]) if (ll(1, 1, 2, 1) <= 0) { y <- c(y, yy[1]) x <- c(x, (yy[1] - coeff[1])/coeff[2]) } if (ll(2, 1, 2, 2) <= 0) { x <- c(x, xx[2]) y <- c(y, coeff[1] + coeff[2] * xx[2]) } if (ll(2, 2, 1, 2) <= 0) { y <- c(y, yy[2]) x <- c(x, (yy[2] - coeff[1])/coeff[2]) } if (ll(1, 2, 1, 1) <= 0) { x <- c(x, xx[1]) y <- c(y, coeff[1] + coeff[2] * xx[1]) } if (length(x) > 0) grid.lines(x = x, y = y, default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) } } h <- as.numeric(h) v <- as.numeric(v) for (i in seq(along = h)) grid.lines(y = rep(h[i], 2), default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) for (i in seq(along = v)) grid.lines(x = rep(v[i], 2), default.units = "native", gp = gpar(col = col.line, lty = lty, lwd = lwd)) popViewport() } hexVP.loess <- function(hbin, hvp = NULL, span = 0.4, col = 'red', n = 200, ...) { fit <- loess(hbin@ycm ~ hbin@xcm, weights = hbin@count, span = span) if(!is.null(hvp)) { pushHexport(hvp, clip = 'on') # grid.lines(seq(0,16, length = n), # predict(fit,seq(0,16, length = n)), # gp = gpar(col = col), default.units = 'native') grid.lines(seq(hbin@xbnds[1], hbin@xbnds[2], length = n), predict(fit,seq(hbin@xbnds[1], hbin@xbnds[2], length = n)), gp = gpar(col = col, ...), default.units = 'native') popViewport() } invisible(fit) } hexbin/R/hexbinList.R0000644000176200001440000000627013171627112014172 0ustar liggesusershexList <- function(x,y=NULL,given=NULL,xbins=30,shape=1, xbnds = NULL, ybnds = NULL, xlab = NULL, ylab = NULL) { xl <- if (!missing(x)) deparse(substitute(x)) yl <- if (!missing(y)) deparse(substitute(y)) xy <- xy.coords(x, y, xl, yl) if(length(given)!=length(xy$x) | is.null(given)) stop("Given is is different length from x and y") if(is.factor(given)) given <- as.character(given) clss <- unique(given) if(is.null(xbnds)) xbnds <- range(xy$x) if(is.null(ybnds)) ybnds <- range(xy$y) hbins <- vector(mode = "list",length=length(clss)) i <- 1 for(g in clss){ hbins[[i]] <- hexbin(xy$x[given==g],xy$y[given==g], xbins=xbins,shape=shape,xbnds=xbnds,ybnds=ybnds) i <- i+1 } mx <- max(unlist(lapply(hbins,function(h)max(h@count)))) mn <- min(unlist(lapply(hbins,function(h)min(h@count)))) hl <- new("hexbinList",n=length(hbins),hbins=hbins, Xbnds=xbnds, Ybnds=ybnds, Xbins=integer(xbins), Shape=shape, Bnames=clss, CntBnds=c(mn,mx)) hl } setClass("hexbinList", representation(n="integer", hbins="vector", Xbnds="numeric", Ybnds="numeric", Xbins="numeric", Shape="numeric", Bnames="character", CntBnds="numeric") ) bnds.check <- function(binlst, xb = TRUE, yb = TRUE) { xb <- if(xb) { b <- binlst[[1]]@xbnds all(unlist(lapply(binlst, function(x, bnd) all(x@xbnds == bnd), b))) } else TRUE yb <- if(yb) { b <- binlst[[1]]@ybnds all(unlist(lapply(binlst, function(y, bnd) all(y@ybnds == bnd), b))) } else TRUE xb & yb } xbins.check <- function(binlst) { xb <- binlst[[1]]@xbins all(unlist(lapply(binlst, function(y, xbin)all(y@xbins == xbin), xb))) } shape.check <- function(binlst) { xs <- binlst[[1]]@shape all(unlist(lapply(binlst, function(y, xsh)all(y@shape == xsh), xs))) } list2hexList <- function(binlst) { if(length(binlst) < 2) stop(" need at least 2 hex bin objects") if(!all(unlist(lapply(binlst, is, "hexbin")))) stop("All Elements of list must be hexbin objects") if(!bnds.check(binlst)) stop("All bin objects in list need the same xbnds and ybnds") if(!xbins.check(binlst)) stop("All bin objects in list need the same number of bins") if(!shape.check(binlst)) stop("All bin objects in list need the same shape parameter") mx <- max(unlist(lapply(binlst,function(h)max(h@count)))) mn <- min(unlist(lapply(binlst,function(h)min(h@count)))) xbins <- binlst[[1]]@xbins xbnds <- binlst[[1]]@xbnds ybnds <- binlst[[1]]@ybnds shape <- binlst[[1]]@shape hl <- new("hexbinList",n=length(binlst),hbins=binlst, Xbnds=xbnds, Ybnds=ybnds, Xbins=xbins, Shape=shape, Bnames=names(binlst), CntBnds=c(mn,mx)) hl } setAs("list","hexbinList",function(from)list2hexList(from)) #setMethod("[", "hexbinList", function(hbl,i,...) #{ # if( length(list(...)) > 0 ) # stop("extra subscripts cannot be handled") # if(missing(i)) hbl # hbl@hbins[i] #}) ##setMethod("[[", "hexbinList", function(hbl) ##{ ##}) hexbin/R/hexPlotMA.R0000644000176200001440000001655513775713071013743 0ustar liggesusersplotMAhex <- function (MA, array = 1, xlab = "A", ylab = "M", main = colnames(MA)[array], xlim = NULL, ylim = NULL, status = NULL, values, pch, col, cex, nbin=40, zero.weights = FALSE, style = "colorscale", legend = 1.2, lcex = 1, minarea = 0.04, maxarea = 0.8, mincnt = 2, maxcnt = NULL, trans = NULL, inv = NULL, colorcut = NULL, border = NULL, density = NULL, pen = NULL, colramp = function(n){ LinGray(n,beg = 90,end = 15) }, newpage = TRUE, type = c("p", "l", "n"), xaxt = c("s", "n"), yaxt = c("s", "n"), verbose = getOption("verbose")) { if (!requireNamespace("marray", quietly = TRUE)) stop("cannot process objects without package marray") if (!requireNamespace("limma", quietly = TRUE)) stop("cannot process objects without package limma") if(is.null(main))main <- "" switch(class(MA),marrayRaw={ x <- marray::maA(MA[,array]) y <- marray::maM(MA[,array]) w <- marray::maW(MA[,array]) },RGList = { MA <- limma::MA.RG(MA[, array]) array <- 1 x <- MA$A y <- MA$M w <- MA$w }, MAList = { x <- as.matrix(MA$A)[, array] y <- as.matrix(MA$M)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, list = { if (is.null(MA$A) || is.null(MA$M)) stop("No data to plot") x <- as.matrix(MA$A)[, array] y <- as.matrix(MA$M)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, MArrayLM = { x <- MA$Amean y <- as.matrix(MA$coefficients)[, array] if (is.null(MA$weights)) w <- NULL else w <- as.matrix(MA$weights)[, array] }, matrix = { narrays <- ncol(MA) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(MA, 1, median, na.rm = TRUE) else x <- rowMeans(MA, na.rm = TRUE) y <- MA[, array] - x w <- NULL }, ExpressionSet = { if (!requireNamespace("Biobase", quietly = TRUE)) stop("cannot process ExpressionSet objects without package Biobase") narrays <- ncol(Biobase::exprs(MA)) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(Biobase::exprs(MA), 1, median, na.rm = TRUE) else x <- rowMeans(Biobase::exprs(MA), na.rm = TRUE) y <- Biobase::exprs(MA)[, array] - x w <- NULL if (missing(main)) main <- colnames(Biobase::exprs(MA))[array] }, AffyBatch = { if (!requireNamespace("Biobase", quietly = TRUE) || !requireNamespace("affy", quietly = TRUE)) stop("cannot process AffyBatch objects without package Biobase and affy") narrays <- ncol(Biobase::exprs(MA)) if (narrays < 2) stop("Need at least two arrays") if (narrays > 5) x <- apply(log2(Biobase::exprs(MA)), 1, median, na.rm = TRUE) else x <- rowMeans(log2(Biobase::exprs(MA)), na.rm = TRUE) y <- log2(Biobase::exprs(MA)[, array]) - x w <- NULL if (missing(main)) main <- colnames(Biobase::exprs(MA))[array] }, stop("MA is invalid object")) if (!is.null(w) && !zero.weights) { i <- is.na(w) | (w <= 0) y[i] <- NA } if (is.null(xlim)) xlim <- range(x, na.rm = TRUE) if (is.null(ylim)) ylim <- range(y, na.rm = TRUE) hbin <- hexbin(x,y,xbins=nbin,xbnds=xlim,ybnds=ylim, IDs = TRUE) hp <- plot(hbin, legend=legend, xlab = xlab, ylab = ylab, main = main, type='n', newpage=newpage) ## plot the hexagons pushHexport(hp$plot.vp) if(is.null(maxcnt)) maxcnt <- max(hbin@count) if(is.null(colorcut)) colorcut<-seq(0, 1, length = min(17, maxcnt)) grid.hexagons(hbin, style=style, minarea = minarea, maxarea = maxarea, mincnt = mincnt, maxcnt= maxcnt, trans = trans, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) if (is.null(status) || all(is.na(status))) { if (missing(pch)) pch <- 16 if (missing(cex)) cex <- 0.3 if (missing(col)) { clrs <- colramp(length(colorcut)-1) col <- clrs[1] } pp <- inout.hex(hbin,mincnt) grid.points(x[pp], y[pp], pch = pch[[1]], gp=gpar(cex = cex[1], col=col, fill=col)) } else { if (missing(values)) { if (is.null(attr(status, "values"))) values <- names(sort(table(status), decreasing = TRUE)) else values <- attr(status, "values") } sel <- !(status %in% values) nonhi <- any(sel) if (nonhi) grid.points(x[sel], y[sel], pch = 16, gp=gpar(cex = 0.3)) nvalues <- length(values) if (missing(pch)) { if (is.null(attr(status, "pch"))) pch <- rep(16, nvalues) else pch <- attr(status, "pch") } if (missing(cex)) { if (is.null(attr(status, "cex"))) { cex <- rep(1, nvalues) if (!nonhi) cex[1] <- 0.3 } else cex <- attr(status, "cex") } if (missing(col)) { if (is.null(attr(status, "col"))) { col <- nonhi + 1:nvalues } else col <- attr(status, "col") } pch <- rep(pch, length = nvalues) col <- rep(col, length = nvalues) cex <- rep(cex, length = nvalues) for (i in 1:nvalues) { sel <- status == values[i] grid.points(x[sel], y[sel], pch = pch[[i]], gp=gpar(cex = cex[i], col = col[i])) } } popViewport() if (legend > 0) { inner <- getPlt(hp$plot.vp, ret.unit="inches", numeric=TRUE)[1] inner <- inner/hbin@xbins ysize <- getPlt(hp$plot.vp, ret.unit="inches", numeric=TRUE)[2] pushViewport(hp$legend.vp) grid.hexlegend(legend, ysize=ysize, lcex = lcex, inner = inner, style= style, minarea= minarea, maxarea= maxarea, mincnt= mincnt, maxcnt= maxcnt, trans=trans, inv=inv, colorcut = colorcut, density = density, border = border, pen = pen, colramp = colramp) #if (is.list(pch)) # legend(x = xlim[1], y = ylim[2], legend = values, # fill = col, col = col, cex = 0.9) #else legend(x = xlim[1], y = ylim[2], legend = values, # pch = pch, , col = col, cex = 0.9) popViewport() } invisible(list(hbin = hbin, plot.vp = hp$plot.vp, legend.vp = hp$legend.vp)) } hexMA.loess <- function(pMA, span = .4, col = 'red', n = 200, ...) { fit <- hexVP.loess(pMA$hbin, pMA$plot.vp, span = span, col = col, n = n, ...) invisible(fit) } hexbin/R/HO.R0000644000176200001440000001362113171627112012365 0ustar liggesusersheat.ob <- function(n,beg = 1,end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0, 0, 0), c(35, 0, 0), c(52, 0, 0), c(60, 0, 0), c(63, 1, 0), c(64, 2, 0), c(68, 5, 0), c(69, 6, 0), c(72, 8, 0), c(74,10, 0), c(77,12, 0), c(78,14, 0), c(81,16, 0), c(83,17, 0), c(85,19, 0), c(86,20, 0), c(89,22, 0), c(91,24, 0), c(92,25, 0), c(94,26, 0), c(95,28, 0), c(98,30, 0), c(100,31, 0), c(102,33, 0), c(103,34, 0), c(105,35, 0), c(106,36, 0), c(108,38, 0), c(109,39, 0), c(111,40, 0), c(112,42, 0), c(114,43, 0), c(115,44, 0), c(117,45, 0), c(119,47, 0), c(119,47, 0), c(120,48, 0), c(122,49, 0), c(123,51, 0), c(125,52, 0), c(125,52, 0), c(126,53, 0), c(128,54, 0), c(129,56, 0), c(129,56, 0), c(131,57, 0), c(132,58, 0), c(134,59, 0), c(134,59, 0), c(136,61, 0), c(137,62, 0), c(137,62, 0), c(139,63, 0), c(139,63, 0), c(140,65, 0), c(142,66, 0), c(142,66, 0), c(143,67, 0), c(143,67, 0), c(145,68, 0), c(145,68, 0), c(146,70, 0), c(146,70, 0), c(148,71, 0), c(148,71, 0), c(149,72, 0), c(149,72, 0), c(151,73, 0), c(151,73, 0), c(153,75, 0), c(153,75, 0), c(154,76, 0), c(154,76, 0), c(154,76, 0), c(156,77, 0), c(156,77, 0), c(157,79, 0), c(157,79, 0), c(159,80, 0), c(159,80, 0), c(159,80, 0), c(160,81, 0), c(160,81, 0), c(162,82, 0), c(162,82, 0), c(163,84, 0), c(163,84, 0), c(165,85, 0), c(165,85, 0), c(166,86, 0), c(166,86, 0), c(166,86, 0), c(168,87, 0), c(168,87, 0), c(170,89, 0), c(170,89, 0), c(171,90, 0), c(171,90, 0), c(173,91, 0), c(173,91, 0), c(174,93, 0), c(174,93, 0), c(176,94, 0), c(176,94, 0), c(177,95, 0), c(177,95, 0), c(179,96, 0), c(179,96, 0), c(180,98, 0), c(182,99, 0), c(182,99, 0), c(183,100, 0), c(183,100, 0), c(185,102, 0), c(185,102, 0), c(187,103, 0), c(187,103, 0), c(188,104, 0), c(188,104, 0), c(190,105, 0), c(191,107, 0), c(191,107, 0), c(193,108, 0), c(193,108, 0), c(194,109, 0), c(196,110, 0), c(196,110, 0), c(197,112, 0), c(197,112, 0), c(199,113, 0), c(200,114, 0), c(200,114, 0), c(202,116, 0), c(202,116, 0), c(204,117, 0), c(205,118, 0), c(205,118, 0), c(207,119, 0), c(208,121, 0), c(208,121, 0), c(210,122, 0), c(211,123, 0), c(211,123, 0), c(213,124, 0), c(214,126, 0), c(214,126, 0), c(216,127, 0), c(217,128, 0), c(217,128, 0), c(219,130, 0), c(221,131, 0), c(221,131, 0), c(222,132, 0), c(224,133, 0), c(224,133, 0), c(225,135, 0), c(227,136, 0), c(227,136, 0), c(228,137, 0), c(230,138, 0), c(230,138, 0), c(231,140, 0), c(233,141, 0), c(233,141, 0), c(234,142, 0), c(236,144, 0), c(236,144, 0), c(238,145, 0), c(239,146, 0), c(241,147, 0), c(241,147, 0), c(242,149, 0), c(244,150, 0), c(244,150, 0), c(245,151, 0), c(247,153, 0), c(247,153, 0), c(248,154, 0), c(250,155, 0), c(251,156, 0), c(251,156, 0), c(253,158, 0), c(255,159, 0), c(255,159, 0), c(255,160, 0), c(255,161, 0), c(255,163, 0), c(255,163, 0), c(255,164, 0), c(255,165, 0), c(255,167, 0), c(255,167, 0), c(255,168, 0), c(255,169, 0), c(255,169, 0), c(255,170, 0), c(255,172, 0), c(255,173, 0), c(255,173, 0), c(255,174, 0), c(255,175, 0), c(255,177, 0), c(255,178, 0), c(255,179, 0), c(255,181, 0), c(255,181, 0), c(255,182, 0), c(255,183, 0), c(255,184, 0), c(255,187, 7), c(255,188,10), c(255,189,14), c(255,191,18), c(255,192,21), c(255,193,25), c(255,195,29), c(255,197,36), c(255,198,40), c(255,200,43), c(255,202,51), c(255,204,54), c(255,206,61), c(255,207,65), c(255,210,72), c(255,211,76), c(255,214,83), c(255,216,91), c(255,219,98), c(255,221,105), c(255,223,109), c(255,225,116), c(255,228,123), c(255,232,134), c(255,234,142), c(255,237,149), c(255,239,156), c(255,240,160), c(255,243,167), c(255,246,174), c(255,248,182), c(255,249,185), c(255,252,193), c(255,253,196), c(255,255,204), c(255,255,207), c(255,255,211), c(255,255,218), c(255,255,222), c(255,255,225), c(255,255,229), c(255,255,233), c(255,255,236), c(255,255,240), c(255,255,244), c(255,255,247), c(255,255,255))[ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/LOCS.R0000644000176200001440000001306313171627112012617 0ustar liggesusersLinOCS <- function(n,beg = 1,end = 256) { if(beg < 1 || end < 1 || beg > 256 || end > 256) stop("`beg' and `end' must be numbers in the interval [1,256]") M <- rbind(c(0,0,0), c(0,0,0), c(0,0,0), c(1,0,0), c(2,0,0), c(2,0,0), c(3,0,0), c(3,0,0), c(4,0,0), c(5,0,0), c(5,0,0), c(6,0,0), c(7,0,0), c(7,0,0), c(8,0,0), c(9,0,0), c(9,0,0), c(10,0,0), c(11,0,0), c(12,0,0), c(13,0,0), c(14,0,0), c(15,0,0), c(16,0,0), c(17,0,0), c(18,0,0), c(19,0,0), c(20,0,0), c(21,0,0), c(22,0,0), c(23,0,0), c(25,0,0), c(26,0,0), c(27,0,0), c(28,0,0), c(30,0,0), c(31,0,0), c(33,0,0), c(34,0,0), c(35,0,0), c(37,0,0), c(39,0,0), c(40,0,0), c(43,0,0), c(45,0,0), c(46,0,0), c(49,0,0), c(51,0,0), c(53,0,0), c(54,0,0), c(56,0,0), c(58,0,0), c(60,0,0), c(62,0,0), c(64,0,0), c(67,0,0), c(69,0,0), c(71,0,0), c(74,0,0), c(76,0,0), c(80,0,0), c(81,0,0), c(84,0,0), c(86,0,0), c(89,0,0), c(92,0,0), c(94,0,0), c(97,0,0), c(100,0,0), c(103,0,0), c(106,0,0), c(109,0,0), c(112,0,0), c(115,0,0), c(117,0,0), c(122,0,0), c(126,0,0), c(128,0,0), c(131,0,0), c(135,0,0), c(135,0,0), c(135,1,0), c(135,2,0), c(135,3,0), c(135,4,0), c(135,6,0), c(135,6,0), c(135,8,0), c(135,9,0), c(135,10,0), c(135,11,0), c(135,13,0), c(135,13,0), c(135,15,0), c(135,17,0), c(135,17,0), c(135,19,0), c(135,21,0), c(135,22,0), c(135,23,0), c(135,25,0), c(135,26,0), c(135,27,0), c(135,29,0), c(135,31,0), c(135,32,0), c(135,33,0), c(135,35,0), c(135,36,0), c(135,38,0), c(135,40,0), c(135,42,0), c(135,44,0), c(135,46,0), c(135,47,0), c(135,49,0), c(135,51,0), c(135,52,0), c(135,54,0), c(135,56,0), c(135,57,0), c(135,59,0), c(135,62,0), c(135,63,0), c(135,65,0), c(135,67,0), c(135,69,0), c(135,72,0), c(135,73,0), c(135,76,0), c(135,78,0), c(135,80,0), c(135,82,0), c(135,84,0), c(135,87,0), c(135,88,0), c(135,90,0), c(135,93,0), c(135,95,0), c(135,98,0), c(135,101,0), c(135,103,0), c(135,106,0), c(135,107,0), c(135,110,0), c(135,113,0), c(135,115,0), c(135,118,0), c(135,121,0), c(135,124,0), c(135,127,0), c(135,129,0), c(135,133,0), c(135,135,0), c(135,138,0), c(135,141,0), c(135,144,0), c(135,148,0), c(135,150,0), c(135,155,0), c(135,157,0), c(135,160,0), c(135,163,0), c(135,166,0), c(135,170,0), c(135,174,0), c(135,177,0), c(135,180,0), c(135,184,0), c(135,188,0), c(135,192,0), c(135,195,0), c(135,200,0), c(135,203,0), c(135,205,0), c(135,210,0), c(135,214,0), c(135,218,0), c(135,222,0), c(135,226,0), c(135,231,0), c(135,236,0), c(135,239,0), c(135,244,0), c(135,249,0), c(135,254,0), c(135,255,1), c(135,255,5), c(135,255,10), c(135,255,15), c(135,255,20), c(135,255,23), c(135,255,28), c(135,255,33), c(135,255,38), c(135,255,43), c(135,255,45), c(135,255,49), c(135,255,54), c(135,255,59), c(135,255,65), c(135,255,70), c(135,255,74), c(135,255,80), c(135,255,84), c(135,255,90), c(135,255,95), c(135,255,98), c(135,255,104), c(135,255,110), c(135,255,116), c(135,255,120), c(135,255,125), c(135,255,131), c(135,255,137), c(135,255,144), c(135,255,149), c(135,255,154), c(135,255,158), c(135,255,165), c(135,255,172), c(135,255,179), c(135,255,186), c(135,255,191), c(135,255,198), c(135,255,203), c(135,255,211), c(135,255,216), c(135,255,224), c(135,255,232), c(135,255,240), c(135,255,248), c(135,255,254), c(135,255,255), c(140,255,255), c(146,255,255), c(153,255,255), c(156,255,255), c(161,255,255), c(168,255,255), c(172,255,255), c(177,255,255), c(182,255,255), c(189,255,255), c(192,255,255), c(199,255,255), c(204,255,255), c(210,255,255), c(215,255,255), c(220,255,255), c(225,255,255), c(232,255,255), c(236,255,255), c(240,255,255), c(248,255,255), c(255,255,255))[ round(seq(beg,end,length = n)), ] rgb(M[,1]/255, M[,2]/255, M[,3]/255) } hexbin/R/hexplom.R0000644000176200001440000002617013171627112013536 0ustar liggesuserspanel.hexplom <- function(...) panel.hexbinplot(...) hexplom <- function(x, data, ...) { UseMethod("hexplom") } hexplom.data.frame <- function (x, data = NULL, ..., groups = NULL, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() if (!is.null(ccall$data)) warning("explicit 'data' specification ignored") ccall$data <- list(x = x, groups = groups, subset = subset) ccall$x <- ~x ccall$groups <- groups ccall$subset <- subset ccall[[1]] <- quote(hexbin::hexplom) ans <- eval.parent(ccall) ans$call <- ocall ans } hexplom.matrix <- function (x, data = NULL, ..., groups = NULL, subset = TRUE) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() if (!is.null(ccall$data)) warning("explicit 'data' specification ignored") ccall$data <- list(x = x, groups = groups, subset = subset) ccall$x <- ~x ccall$groups <- groups ccall$subset <- subset ccall[[1]] <- quote(hexbin::hexplom) ans <- eval.parent(ccall) ans$call <- ocall ans } hexplom.formula <- function(x, data = NULL, ...) { ocall <- sys.call(sys.parent()) ocall[[1]] <- quote(hexplom) ccall <- match.call() ccall[[1]] <- quote(lattice::splom) if (is.null(ccall$panel)) ccall$panel <- panel.hexplom ans <- eval.parent(ccall) ans$call <- ocall ans } old.hexplom.formula <- function(x, data = parent.frame(), auto.key = FALSE, aspect = 1, between = list(x = 0.5, y = 0.5), #panel = if (is.null(groups)) "panel.hexplom" #else "panel.superpose", panel = panel.hexplom, prepanel = NULL, scales = list(), strip = TRUE, groups = NULL, xlab = "Scatter Plot Matrix", xlim, ylab = NULL, ylim, superpanel = "panel.pairs", pscales = 5, varnames, drop.unused.levels = lattice.getOption("drop.unused.levels"), ..., default.scales = list(draw = FALSE, relation = "same", axs = "i"), subset = TRUE) { ## dots <- eval(substitute(list(...)), data, parent.frame()) dots <- list(...) #groups <- eval(substitute(groups), data, parent.frame()) if(!is.null(groups))stop("groups not implemented yet") subset <- eval(substitute(subset), data, parent.frame()) ## Step 1: Evaluate x, y, etc. and do some preprocessing ## right.name <- deparse(substitute(formula)) ## formula <- eval(substitute(formula), data, parent.frame()) form <- ## if (inherits(formula, "formula")) latticeParseFormula(x, data, subset = subset, groups = groups, multiple = FALSE, outer = FALSE, subscripts = TRUE, drop = drop.unused.levels) ## else { ## if (is.matrix(formula)) { ## list(left = NULL, ## right = as.data.frame(formula)[subset,], ## condition = NULL, ## left.name = "", ## right.name = right.name, ## groups = groups, ## subscr = seq(length = nrow(formula))[subset]) ## } ## else if (is.data.frame(formula)) { ## list(left = NULL, ## right = formula[subset,], ## condition = NULL, ## left.name = "", ## right.name = right.name, ## groups = groups, ## subscr = seq(length = nrow(formula))[subset]) ## } ## else stop("invalid formula") ## } ## We need to be careful with subscripts here. It HAS to be there, ## and it's to be used to index x, y, z (and not only groups, ## unlike in xyplot etc). This means we have to subset groups as ## well, which is about the only use for the subscripts calculated ## in latticeParseFormula, after which subscripts is regenerated ## as a straight sequence indexing the variables if (!is.null(form$groups)) groups <- form$groups[form$subscr] subscr <- seq(length = nrow(form$right)) if (!is.function(panel)) panel <- eval(panel) if (!is.function(strip)) strip <- eval(strip) prepanel <- if (is.function(prepanel)) prepanel else if (is.character(prepanel)) get(prepanel) else eval(prepanel) cond <- form$condition number.of.cond <- length(cond) x <- as.data.frame(form$right) if (number.of.cond == 0) { strip <- FALSE cond <- list(as.factor(rep(1, nrow(x)))) number.of.cond <- 1 } if (!missing(varnames)) colnames(x) <- eval(substitute(varnames), data, parent.frame()) ## create a skeleton trellis object with the ## less complicated components: #foo <- do.call(lattice:::trellis.skeleton, foo <- do.call(trellis.skeleton, c(list(cond = cond, aspect = aspect, between = between, panel = superpanel, strip = strip, xlab = xlab, ylab = ylab, xlab.default = "Scatter Plot Matrix"), dots)) dots <- foo$dots # arguments not processed by trellis.skeleton foo <- foo$foo foo$call <- match.call() ## Step 2: Compute scales.common (leaving out limits for now) ## FIXME: It is not very clear exactly what effect scales is ## supposed to have. Not much in Trellis (probably), but there are ## certain components which are definitely relevant, and certain ## others (like log) which can be used in innovative ## ways. However, I'm postponing all that to later, if at all if (!is.list(scales)) scales <- list() ## some defaults for scales # if (is.null(scales$draw)) scales$draw <- FALSE # if (is.null(scales$relation)) scales$relation <- "same" # if (is.null(scales$axs)) scales$axs <- "i" scales <- updateList(default.scales, scales) foo <- c(foo, #do.call(lattice:::construct.scales, scales)) do.call(construct.scales, scales)) ## Step 3: Decide if limits were specified in call: have.xlim <- !missing(xlim) if (!is.null(foo$x.scales$limit)) { have.xlim <- TRUE xlim <- foo$x.scales$limit } have.ylim <- !missing(ylim) if (!is.null(foo$y.scales$limit)) { have.ylim <- TRUE ylim <- foo$y.scales$limit } ## Step 4: Decide if log scales are being used (has to be NO): have.xlog <- !is.logical(foo$x.scales$log) || foo$x.scales$log have.ylog <- !is.logical(foo$y.scales$log) || foo$y.scales$log ## immaterial, since scales has no effect. # if (have.xlog) { # xlog <- foo$x.scales$log # xbase <- # if (is.logical(xlog)) 10 # else if (is.numeric(xlog)) xlog # else if (xlog == "e") exp(1) # # x <- log(x, xbase) # if (have.xlim) xlim <- log(xlim, xbase) # } # if (have.ylog) { # ylog <- foo$y.scales$log # ybase <- # if (is.logical(ylog)) 10 # else if (is.numeric(ylog)) ylog # else if (ylog == "e") exp(1) # # y <- log(y, ybase) # if (have.ylim) ylim <- log(ylim, ybase) # } ## Step 5: Process cond cond.max.level <- unlist(lapply(cond, nlevels)) ## id.na used only to see if any plotting is needed. Not used ## subsequently, unlike other functions id.na <- FALSE for (j in 1:ncol(x)) id.na <- id.na | is.na(x[,j]) for (var in cond) id.na <- id.na | is.na(var) if (!any(!id.na)) stop("nothing to draw") ## Nothing simpler ? ## Step 6: Evaluate layout, panel.args.common and panel.args foo$panel.args.common <- c(list(z = x, panel = panel, panel.subscripts = TRUE, groups = groups, # xscales = foo$x.scales, yscales =foo$y.scales, .aspect.ratio=aspect, pscales = pscales), dots) nplots <- prod(cond.max.level) if (nplots != prod(sapply(foo$condlevels, length))) stop("mismatch") foo$panel.args <- vector(mode = "list", length = nplots) cond.current.level <- rep(1, number.of.cond) for (panel.number in seq(length = nplots)) { ##id <- !id.na WHY ? for(i in 1:number.of.cond) { var <- cond[[i]] id <- if (is.shingle(var)) ((var >= levels(var)[[cond.current.level[i]]][1]) & (var <= levels(var)[[cond.current.level[i]]][2])) else (as.numeric(var) == cond.current.level[i]) } foo$panel.args[[panel.number]] <- list(subscripts = subscr[id]) cond.current.level <- #lattice:::cupdate(cond.current.level, cond.max.level) cupdate(cond.current.level, cond.max.level) } #more.comp <- c(lattice:::limits.and.aspect( more.comp <- c(limits.and.aspect( lattice::prepanel.default.splom, prepanel = prepanel, have.xlim = have.xlim, xlim = xlim, have.ylim = have.ylim, ylim = ylim, x.relation = foo$x.scales$relation, y.relation = foo$y.scales$relation, panel.args.common = foo$panel.args.common, panel.args = foo$panel.args, aspect = aspect, nplots = nplots, x.axs = foo$x.scales$axs, y.axs = foo$y.scales$axs), #lattice::: cond.orders(foo)) cond.orders(foo)) foo[names(more.comp)] <- more.comp if (is.null(foo$legend) && !is.null(groups) && (is.list(auto.key) || (is.logical(auto.key) && auto.key))) { foo$legend <- list(list(fun = "drawSimpleKey", args = updateList(list(text = levels(as.factor(groups)), points = TRUE, rectangles = FALSE, lines = FALSE), if (is.list(auto.key)) auto.key else list()))) foo$legend[[1]]$x <- foo$legend[[1]]$args$x foo$legend[[1]]$y <- foo$legend[[1]]$args$y foo$legend[[1]]$corner <- foo$legend[[1]]$args$corner names(foo$legend) <- if (any(c("x", "y", "corner") %in% names(foo$legend[[1]]$args))) "inside" else "top" if (!is.null(foo$legend[[1]]$args$space)) names(foo$legend) <- foo$legend[[1]]$args$space } class(foo) <- "trellis" foo } hexbin/R/hexpanel.R0000644000176200001440000000267513171627112013672 0ustar liggesuserspanel.hexloess <- function(bin, w=NULL, span = 2/3, degree = 1, family = c("symmetric", "gaussian"), evaluation = 50, lwd = add.line$lwd, lty = add.line$lty, col, col.line = add.line$col, ...) { stop("panel.hexloess is no longer available") add.line <- trellis.par.get("add.line") ## x <- bin@xcm ## y <- bin@ycm ## if(is.null(w))w <- bin@count ## control <- loess.control(...) ## notna <- !(is.na(x) | is.na(y)) ## new.x <- seq(min(x[notna]), max(x[notna]), length = evaluation) ## family <- match.arg(family) ## iterations <- if (family == "gaussian") 1 else control$iterations ## fit <- stats:::simpleLoess(y, x, w, span, degree, FALSE, FALSE, ## normalize = FALSE, "none", "interpolate", ## control$cell, iterations, control$trace.hat) ## kd <- fit$kd ## z <- .C("loess_ifit", as.integer(kd$parameter), as.integer(kd$a), ## as.double(kd$xi), as.double(kd$vert), as.double(kd$vval), ## as.integer(evaluation), as.double(x), fit = double(evaluation), ## PACKAGE = "stats")$fit ## if (length(x) > 0) { ## if (!missing(col) && missing(col.line)) { ## col.line <- col ## } ## add.line <- trellis.par.get("add.line") ## panel.lines(new.x, z, col = col.line, lty = lty, lwd = lwd) ## } } panel.hexgrid <- function(h, border=grey(.85)) { hexGraphPaper(h,border=border) } hexbin/MD50000644000176200001440000000755313776024163012062 0ustar liggesusersb8c6e7f6b0230cdf61f0976d387c7a44 *ChangeLog a06cfbbc71f9d054145d069f167410ce *DESCRIPTION 9129a733a21f780d50b1c3bb85da0047 *NAMESPACE 98a77d0235bb074f09aa7675358b8650 *R/BTC.R b8083617bec9ef2a20bf2fb31d1f50cb *R/BTY.R def8a3ae791d6214f8093069780971a3 *R/HO.R e54503901b17f4b00ab192bef093ff18 *R/LINGRAY.R 9220834650597d3f9a3c2f5a38fb2fc6 *R/LOCS.R 47006284b4bc42824409e49cd3ebb6e7 *R/MAG.R c25363a22b3f824d1f25997179b74434 *R/RB.R 97262cc9f616661bf71e4686225f6c17 *R/grid.hexagons.R cd88d10aa75a6666b296efff0ac1f355 *R/grid.hexlegend.R 503b110bf985d5c12a0d514c333dc81e *R/hbox.R ad4a901fb8fc48deb4f76ad3d797ecd9 *R/hdiffplot.R 598977d1977192382b97ff947dbe2d45 *R/hexPlotMA.R 6c606d9e7d4cb2eb92eb985b922086ba *R/hexViewport.R 7a92115dc09afb29331421e3c4eeddcf *R/hexbin.s4.R 5d66d35fa92d45957684ee3375513e28 *R/hexbinList.R ae5724baa7c3661621ed0018287fc6ca *R/hexbinplot.R 53e8c6ea014e06b21e56b8e447a0dad5 *R/hexpanel.R 249d47000fdc8b641cf6ed2ee6f640bb *R/hexplom.R 0b7181a5ae4cbc780f46041886fc80e8 *R/hexutil.R acf4489ea175f01eb1659a420183e155 *R/lattice.R 887f080dcb908bb6b6491acb52cddc68 *R/smoothHexbin.R 53e586900ba0c452c12ec7aed3d20295 *TODO df805907fa76081e53fad956edb86363 *build/vignette.rds cfa9343134507d8eaf7386167ea1243d *data/NHANES.rda e857b573460b9eba00bdb571dfccfb23 *inst/doc/hexagon_binning.R 0f5af19e815f37b968733e524435daee *inst/doc/hexagon_binning.Rnw e5c255b1fd878236f31adc04abe88f6f *inst/doc/hexagon_binning.pdf 3b3cb098160c79abc4d739397d315ff3 *man/NHANES.Rd bfc5169b22c653bb5912e9c3e92f3207 *man/colramp.Rd 94a1639600897389f489b6b836362d82 *man/erode.hexbin.Rd 47a11326b5056014da626fe8c3c5b8e8 *man/getHMedian.Rd af748a6a41f4a7c7cb0265b75f645d06 *man/gplot.hexbin.Rd 4f14ff188dcc89ced1434511b0da5dc0 *man/grid.hexagons.Rd 6e12f30832b4d71515a91bb8c448049d *man/grid.hexlegend.Rd 5f2695c8af33d84b154a61e3463859e9 *man/hboxplot.Rd eb4f91c7c9c4482122d7c9ee209e93b6 *man/hcell2xy.Rd 9a215a3b0ff1077d865688a5d9a40921 *man/hcell2xyInt.Rd 29e7649124c53711586904d9c556f53e *man/hdiffplot.Rd f49d784dfab4e373b90f6399c511235f *man/hexGraphPaper.Rd cbc932856dc584b571a425fe4b7ec414 *man/hexList.Rd 61f104906bbaf5499386d589c769aa5e *man/hexMA.loess.Rd 15c9da95418b954cc0feeec69eff71cb *man/hexTapply.Rd 18c065f4f0c331f17604d467cf00b305 *man/hexVP-class.Rd 9c7707d15c10f959d35a0714dc65b667 *man/hexVP.abline.Rd 1f4b3a61121669b0bccb6fdc4e5cd836 *man/hexViewport.Rd 92c69549ef7b876c66bd362e17216c44 *man/hexbin.Rd 1d1b19028ce04fe352f1195993b8802f *man/hexbinplot.Rd 37d121666c32d6396a680761b201162d *man/hexplom.Rd 13241d553371e3923f6647b3a7deea77 *man/hexpolygon.Rd 85e71d3e73900af44b7e88ead81c033c *man/hsmooth-methods.Rd 7ea0b41a11cca81d2093012166c35101 *man/inout.hex.Rd fe9d76fede0a6c4727a6efb5c2e3c861 *man/list2hexList.Rd 087875e158137bd1494533ffc2078ebd *man/old-classes.Rd 6ed5394a980386786a41eaffd7dd5c8a *man/optShape.Rd 9f23953a55209099110283ec98343438 *man/panel.hexboxplot.Rd 3d36abbaab3ec18876e2288151da11f1 *man/panel.hexgrid.Rd d62970352d19f6785e76d6c68f3ba79e *man/panel.hexloess.Rd 9da0d7245fb3f734cc0f07cb4f2aa123 *man/plotMAhex.Rd fc017f52b40dc804a41ea45305c840d8 *man/pushHexport.Rd febf2f7e1ad56316da2058e260732d7a *man/smooth.hexbin.Rd 886e2efe62994815b8acfcc78c7ad81b *src/hbin.f 470ef863da306fb9d0955b3cdb0b2ce0 *src/hcell.f f8fb4b9ec5a1dbc174102d40377ce885 *src/herode.f 719cbe239d3f98da12bd7f489ab6c197 *src/hsm.f 9738cce32f70c2d27417252a78d5b14d *src/reg.c ddcf0653ed6863dd0260e1f58349356a *tests/hdiffplot.R 07c2792a31643ea08be36a8133f95ed6 *tests/hdiffplot.Rout.save efe67770786c28cc2bfceef357376f7a *tests/hray.R 24021c6251d46ad71065e3705e04479d *tests/hray.Rout.save 6dca74e0501c54cede56d657a1c0c632 *tests/large.R 98321f01b4ed346aa059aec1aa3c637a *tests/large.Rout.save f94ffad94528308a3483bf6f4088fa70 *tests/viewp-ex.R 53478aa4cafb6fb935b12b7c982a667d *tests/viewp-ex.Rout.save 0f5af19e815f37b968733e524435daee *vignettes/hexagon_binning.Rnw e95a649be2460892a58230b0bc7c78c2 *vignettes/references.bib hexbin/inst/0000755000176200001440000000000013776015100012504 5ustar liggesusershexbin/inst/doc/0000755000176200001440000000000013776015100013251 5ustar liggesusershexbin/inst/doc/hexagon_binning.pdf0000644000176200001440000332024613776015100017113 0ustar liggesusers%PDF-1.5 % 49 0 obj << /Length 2255 /Filter /FlateDecode >> stream xڍY˒WhI,LM$$uǕG$ʢtt7HPC^hHn̻O?ϳ-|l]_Yas~>f&_m?[§inO'O:"KEsW&,w_|w3kM煩rpj+~ؽù;Я鈴˓/V`bOtJSeRg|+)3i])_4LU '_]N>~ ,Bzk,K|L6r>:"/ҏg WPJ|YP,la Wɋn?V&Nٴ8(&a"#v5WfwLnuX?FJSAwЯc@o'/X\@Y#2cv2ELf*tk% $؁.۵عH9S%ǝ& f(m< ~ G݃{ne%<_eL'\<*^B`EdĪRe9Vau%` Y'~jk {K2fu Ve>5^5>2 "ʇ6'1/IzDwc Ԡ4OULzSz&MYYX@d,QCHW7!o ]Ѩ ,0D\@G]ľĮ[@ċB:+ƾ  j^ ^cPW&8)I68B) #,|T< BlHs|FF>Ne^;0 ". h%!40(}25U]IM;݀+.m \&沴xGGPE߽X@)M{gSgM"E8ګ `v1n%DʓKd9˔ ɐDhz2S[P5V8!yl}?whYҪ]T}]D];FMN,hT@~=JI~9l|e9@6$;xMS H8x.|S1nT &QU$#@$ippMXݵ+5@\;TSYђc˧}"mYAuf&&` YULLVԳE8[(A һ`J>z0zX % š]rgԏ2RW$m*'hk@g'bۅqKMnj+ET!Onpz㦀s jL} _%$ j/2?v1H4CѺ*طylɀ3#.p@OsPquzا-ː;1&nC!AMr*]p?jwG9$ob_ #* !HRW|IJ1oѭ6M\2 feeVɱ mٹ/ٮQI&zt}j^2$_c/7UCΩyfo.PbPAq6d"N _ר(9ErO_&}>H e7N1jڸ?.WG `,C͂NbMF9,@|e1mn‰ī43݇A1QՠB|c 3̄V>Ӈhv{wG%`Ns\O}n pY`y Nl`, 8*¶QկBbje(N‹&۬C(VЊqc7sŌRB<_K SLD:g{ %o$6?_~>(/gv[oVToNQLwPЧFh9Eq7tUwCSqTqċQ0a V71?^3UpzקI[ۃ٢aǭEh.ƈ|Qi?G?{~n?d,`P_m'K )vTӁ躇i ~ұaVCOkLF:;G6RUgxVp')Lun`C9; CCvyO'Kg+ޛf+<>}]:[$)#--MV0{w*C^es&-n3csSW WNKwWA/s'wy縆ܭe>%v"9J5Ojh{˄;oP*ggJ% endstream endobj 72 0 obj << /Length 2251 /Filter /FlateDecode >> stream xڥYɎS,k.84ĖR_,0WLJwLI]"z|sIYTQuy~+_U.av1YhE >74l"#%O8155 킃m?pP FhQڎ5G|aV̥AHBw{tsl/(DsPˎ!e I4 6LBt 2X̒s҈.sp'-] peFVu(׳&F ?_VdC ([a"KZdnK"&ތW4CpyxD81,€ȌwڲHc'@!0iOlUT6²1z7 80 yl"x>ςW&|[I}_`4H3EJ1P}L 'yOH~b9vyבب̿ irARͳDPy]RtCՉ^ Q:>G]؋C:H`tUb\e&Ol^G$!m=YxD ZigD;aE?c Q;f>O_VywEOp1X34 |[?Mᤵp<8 cY{-zaXlVK(3[/.B{;PҀ1Jv]slY^3ݛ/Hxgf,32 ZohU,aM-MLQ,,Z[شfbGxN[!v+_77+/mm䐆|,9xEpmÎ=Buתx ueZ>kfWf^a2pߛ^M52! 3t{=p "0Q |7v|e^ǯgǃj}W\-jQ|~0Z.|ifEHM%0. XRGO-D$E)[5Ps-4Y]}B6egERV\Ol27"1haVue̎Q6ɻFM u>Eh)y3J\ܹ OnZӲ;t< JJV/E9.k*^\&_s7D8$5]ZǞ"y +!Bz4ܕOP5 `_QEMP󯢺0㶨n.9Bx N‹΂54,mU^?@cpO.};dzpB?VNi6ߠ XqqI,YT>.z,3dFf4d8+CLAp#8C rx9c w? ~h-oQ@eq[]pk RXP)Z}۫pU䀲@p5 endstream endobj 66 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-comphexsq.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 79 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 80 0 R>> /ExtGState << >>/ColorSpace << /sRGB 81 0 R >>>> /Length 9847 /Filter /FlateDecode >> stream x}KmU݄FIff2H%u%@W@%m1lϽye'ӱ,Q>?o>~8>wn:_~_ǿqu~:ϏW?@Q*_Uu%&PPK90[tkA7xw Qheoj?Ut/>/ˏ?ǿfKN[ӖcߝHk̔|#cJOigJ m{Ny@6|3c HQK)R In0`*w ǫ_NLtQ; p피) vZr\2~v"q_!zW!hH&v"4D!jik<#%eS^]լ.mJ7)\Z?31ǏZe)֔8 x5CZ"kT<W`>eL㷵@:]ܗPUƚs.m+ժ}uQОCK`u$١m)o_M)ǭP;3M&t-Z XZjY9nU5n>⋽W]Uh[3k׫D5iyᎶ_Grd|;ʽ1 (RMb$|hajj\Fȃ <`/@Ü2z{TK"I,K\f!MTHܒZx+u{(,Ǔ\T~ca( I1,ň9K 5G>_R3pz_5Z(radHt`M/]uuY,c= ז@ù=1s88ɭtVYVS%wr.ZIF9DEFYƥ\\bցQeï.!u.wKCJt`M4IżJ=]5VFh @b\TP$?IuN/&X$I1dᐢMzt`M2C'-kNԌXwRCN'ʪb֜RY󒬢;%X`B1Li,^v .R6LļNX?kfXFL[q6iwf:OC,ɬLQ3%هIZ:5wM[.:kKC}[C Kcb':OuPc+IԠJJt`Vic>i5Y8ڈt+$rOvjp)Oz=M~[sO/ړrO?$,ô eg̸e֞qwUZkEXP}˥.z ?= 5m0gsPpok5VzȢk+YJՔg1J( !'+Pʩ6KЁQ:Ι@2b-:TӸAfuNu,P|Oq2}⯢l6w]+,#<OĬk6c >$T‡kSVW[ɜ̉@2b:`5z@y5OuX1$t!C/j@I1s0=$,SC¨j| x?GXX@pB`XH0o-ˑ%%ܘkP"\ݥfӧ[* JP5m0O>Z HJG|C; JT8鰏Xt(PЁQ|9a'kdIf ӘNhj*9e3%nLX#S5N6R=8u'-Yx‡#mVqJl J%V"ҚGbl0M9%?I6]0si@p5 DO'j̞q=Me@2:n_ʉ?0zP>1ce=ZرS}NϮ L>G .]fG-6E3Z̨O[%Tf%2e@?2wC0{S+Ӂ!Cܬ \0rTŴSmu xXk˝1xy׃XBK JDV$Kst`tȅ=l: qmt5JfM5 LXs.9Z fͅ`J 0T;X"XciYsOc1kDvJkSL5&l}Xm~7ofKB3 CŠkZ;G}^ :0G+c^V"f+Vt`-n1{0t78сYG#Ձe\jckXzam0:e"pOۢa.3mI{u]leiK4KPŒat8YxY5(GG}X_!k"|S$m\ <_iWkӁ5}/T󫁮j#w[ >n6`ev#oX2d3MT9bf:F$ $§)7Yw[5LX:Y@`5Y5jSCB`O'a5{Ot`4SOa9`%tN'  1 fKW1 K䏱tFp\Vv-J`Vt|3}i${=]3t(iGOϡgJ,4O0-t`ց^qcrr*A12%oH]DFO=U%y~Zj=}y]=-D~8 HYm0V;p 23TBXd&lZk+lp&&DV!8;|ڹ9pL>4?7G:y/|8'}^3X'~H1ߦX8q)/4|boo Ues(jUR]Dn+6 Ө]%.c)сOzWx.UjEtGw÷~ f;W~/tbNp UNӎAf+?ZiB-41{tBs:RO/_ _hn~ e _AU~X:PwP/SfC9"ѡ;%bxfU+Kw4mCl1UpP:ӒOV *maT2֞w-[MpTm+zyY~%6qk}jé)O0ljՒW# N LJt'ws I(Kbf:8%,m&^ Z N?|VXv5,8$ /eĶ/F9%4Gt=x`^3j?/~mx/eI&_iKm[O.xK%lvv:06`Mz5xSnKIߙ|:1R8ZWt`VѺm?b/%\W:0%?K1$UO:JIkn+7%3x).ahp1с)Iұ Z^ x1gt`U*矏$9,̞W A3a9ԣk|KZv%\:d 6ck]N5۩m 7]{woz?ՄvSO3|ڬT^7!R!b A=JM{&l-+Mv<&s7+'fyC̞RЁ!C6{I IH_E>xeqNtxO\qyj\:[ :pgW!9r ^L OJľdސRUt`sgyCk2?N/O>|-;͆v qU I=ܟ;CY6[o[UqN(\1=M̞7=*SsO=Vne(#q7t 3N} *QГFt;wMJoir=67y RЁ;oq{q 1t&wzRy(J]NLKc-oٸ^8HˍG+GZ4> 0ͪq:1@~ôCf^v$\BUQN3pAK 6kSUz0peg0vpڇT֙/dj8dN5ȼyˊTȜadqAݘsy][ub[}tÖ>Ɠ꿱g+|z_ep3с-}/T)԰Mw9IZ>7ydaKW5΍A^9Xy tÖ>⳷5W" DŽD:?a>KA/Ⅸ`(nUizUNѻ֓W>. NN [_/4}[XZM-nXWLM z'[X:tÖ>D}73ֽ/d4NÑ `W OMv=w)Cx;&n^m5Z^`/V:^:̑_rC5膹?8].k?SxZ.հ4vTnC̗ŰUt;G\ZZyn*! ,2_VOZ6cwK.a{Rtk"Qv mVN>ngn[Wýì Uz>#"='s4kI1 :p+/itG3p;[kb6fQ&0K3?Sܞצ/v҉/GJͺtݭPK"ݬ_&?l=2Y*fe5^۽9|qǷSnME[}٢/Na얔 e%*Yt`ܸua0 c6L[zep?0/ N33 8 :0gcc0C'ߢ{ 5 #41{TЁ䏞?u foyez9RuXzȭDD[/&:0%%ȋL|?#zT[e!v2.AyyzHO}&TU|ۚ5:ԭ0(8n};˅T#9s7wFO[tǖS Zbg^p͘Ry3沆f2.[a3qQ/SyVܼBL;ty0yS]/}‡LB.PuMzam ':_aDP'rP߰Mބf9;{?j57F,971g+N:cf;tǕ%@D3b؂92C% \}*@39p ON`vnHNE s:?TNȷ{8yS8Ӂmi>㜡Hu9à:? .qwg9G/ܡ:ЧbnTYLeO: {^G}.9w˞NX{RpkDw=Mie3WlF7+ZGUeF/?NcoIЁ/H-䗋- bo2&:GH0k\8Dyǟ:mmq:S>m0 vfϵAvJhӉ/[>qkh\<|bt #k=Xo%b| o{3ӁJVސK f-\L OnYt W- ?{_<XssiA&{:˽t`ց^K[(_ q+bkBL_3-\3w0n;$BNPZ KX1#l.KA.ؓ"71..GNgeqb'\0f$~諑%{.cAv Ɵ$T}"Eۭ.Ù-A}i\vy;gQc4mC}X7oe:?Mf,#-[A.\}8-[J$&fOҲeO \rN= ghYn|3]qyދO3Qk@v ZpHKSF 0=)/+rC VyzH'ﰣq)C0BodNwɞ=|L; ~5",cާ 0t`TbD'X#LX?|^V"f+ZV‹?A;⩕Z^HZ Z^ЁP{$]fVzܛ:0I 4" wR5kmvFA 7&fOZ>]:0{xG+3kG+^ :0G+cš xH0k.y(I5Gep'h]Fp=.wƒ$?IrHp\IE3wC ƻWRWGqcS\m*GfB29; DUɜr7{Q~&كKa؋AW`/̚ǻكAŠW$x-@2:ܠ:^\vFp/rg\qFxI1s=n!ȟ$X1-Vt`."$Zb3Ar$-cbvڃ |s11[=.^Nt`J H@L[bN'f+[ Go~]m ^$y*K 7 S[( y9^؄5L 5':~95V9xZc k%3Xk.\Ё).6E_66 l"s}5y޾DyKl^:te:p{@ ^tSUEr59(p15J76mn{/:@2-uRu,"Q{/:сYG^GibHԡ魯Dn[',@R fI<$ O4$v4D=-Cb`{!*k|2K!b`;!#?$؋yU>BpaT̶ >Y4сg|EoaH fZuK@<;SY''Wrjz'ZZ>s!O;@&IH7%?$`tŶt@pIqZ*Ϩt92i1% w+cѿ*-Z{n5a2~a+_a+w)7_4n0ѯ30%~! ):;j!` -RC%fW#~KM%S _"<_"<ٹ!F9?EEdhx~t!#HH~MBr䈯,!8w u 2aׯۄLk'w2/}Hk(l(}/?Qx.s 9LQK~4y?|uMNc75^FߧzCڲs*M8tY5bOwQWqׄ(DyD=>+k;"Xmu:ӷirn(QH4b^=Mix6%@Fm'|k`;4#$]i6%v/s ~B/-4}bX_o_.4+" ~1W˻尯쉗m=9n2ŒkORݿ~O}>nM)/XFӏlSf mv6=-}Ȧ?e]٧6xK5'}8Ċb n[Hțl g=["<޾aoa[KK3vޣmz dgea)ٗ)zpn;7UJ6eվ]JLoD [~>倽?^Sn16\F:=mJ }1m= *~՞}OZ_&z^,zZRc70ߔVu)ZEmΖ1Ҷ8 No8O+ C6luG!7^cd;==rޞ!3AZ x\sG6ҩeV#le c2n+/KF6%Vm ڶmJ{5 QVwDnۏ7ěOLY/طY!.} vc՜nv͹zj0X5۔:L;"ɶ էe+e]Jx:eMs&|a-9Ln˾\6|=[i~1s>wn2oR"'B!j2^۶7DsD8PoCA092ѿџCWMvBݾReaH)z[6 wLHc-sSm1~C.uܽ1ՠyvL/Ωuٞ(ڲՉو1 0Ŵq=LqoRJw-sB͞Ozw<fM'Zh-{T)7DDJdB1N ›Hԣl+ʶ@}{",mr7<&l n֟{"&Ҟ.Ǥwe}Hw1dq~vvOĎV&oӶ'Bol ?+)ُZm#dm'FȭMN&mw;m[|["ԞAYor>mޖh[EB> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 89 0 obj << /Length 1221 /Filter /FlateDecode >> stream xڵKs4_LZ p(YM$Cn~I/pa:>链4Bs"[B"Ym?RdCsYt^fZ] 5SG:}ö[F<.+^`= 埫_eԢ"<ɔU^1.!_ky FiN(| `$|N,6gc4 RuTp"wy_:ixPoTJQWLTkۉZ޿^n3IPO1{YFa~)ǎE+molV<==:8镩ӧ9{M7'o."VҦcܶ|@6=mX al@Smmea!R9Sx1}h&x{̮!?K)WPs,nr._f@oQ`9-."E%v_g7v.>On~x|+ӛ>5D.ݭDej!TPUUE>.^maFʿs?ui+yTiflZ-M%Je%" e '`\IÄ쨸|o)R3[`0siz;g$ܻ!ڌ>TUUeH-V7ȹpYf$Zy͌K/T[5n[ _2;eX#idnɍg_-JW[7zA*S7$2w.:;޷U3JAp\  {qM4-yfRdґ㲤˶ZgPF@ix:*N4YP&@Ql.\:"z{҈2H{8݌u!Tܻvvpb4D\lEaY5?ɅB 9zټSNe5O-%[dG)B,sd%L:K|Eͅ-L=lT0B`9(l`Ǚ* "ԁُC1A#|Ak}\Qiawzsf$W7/SJVTzla!71VzRg w=kߥj5 ,do5'wEP(d1i aY[ܼ? endstream endobj 85 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-basic.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 93 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 94 0 R>> /ExtGState << >>/ColorSpace << /sRGB 95 0 R >>>> /Length 17315 /Filter /FlateDecode >> stream xOo,mVSx L[HЯ4 f`X3~29q"Ną.;|"*m_\_~oVoz\^~_^./~ ^}z{o?U>k/Z}~~nG_o_>\K9u{y|-y|}%旚=aZ֗~\^__/__{^>|_~*m'{-ݚ_|r>mk)ǿ_<<~~fnkG@ º_v_t%^>_á8!N0Ƕ|8c> zqHqRz㵆CaPkްz:^%_.šu;h;R/Ҷ_3{ץuga;Uxmxu^mj{Pzqx,:`3|\_j.Pzk8^ꂃxS5J/xu^mj %AvK'!갮tu{V`R/x1 %^oj5ΰ(7y޶2t [EYxkO^~7;P;;&QZCa]}$^jiZ(!Pvw}\@ W/uX>ønugR/uiu'zqH;u%;AA8{2߳55ۡ}p]׺J[W3^zqx>ua\u;^ӵoMP`gd<^*D?_bqUN='=; t{l( = PBыCa'=kPtX 㪒WI(v@VCav%8uu%;`^>^6 E/ujy+ B8u%;+x=wMqEq=^k8@//u5H'|]o]Pko^;^GǕ*W*lv?C(!r** ȡppAH8TlP>k(!P;F;;L(!r'* c=lR/'QR/'QRkOܣr3AH8ԞGJH8ԞGJH:=s=!tߣ|K%^֞DGJH8ԞGJH8T:ov]6wIH8Ԯ .nҋCv@hsԫW0܇`R/R/~&'!qvuSƺJtu؇mcݵi>ڧk_^j_m>lPtc}p^jk .iPtc %};l{E7pm{혱N#zEݴiюiDg)lw7Pлi9o(švvk`M`kAMa =Ӹvg I(z:`߱^jnnPt~ ۿc%=+Uӽo=v}@ EOpgخ;W}}<^=k8@~3xS^Cq^ Ō^~6~gpMPzqA"R+saf(F0jf3v(:AA2 ^*se(AԋCev %zuX93Wd0AH8T6h %@ `Y!D(!갲fV,az:ɒ\#iuIA+2w8R|ZEh QV^A"R+saf(F0`$2J(!P,DF %^gt$p2MBš>h|&3Svp%^*մLA3gav1W#Kq9~c|^?>+#U-D 8t50RZI(z: 2Nfz L8@ EOnMi&šRS;)KQ@ EO&8XJ(zq3Ee2A(z: 5RT PB "e}V ifDfc ́OÐ@c,[4]t-iu7Mv,$?wHoAӈ"Lgތ`Hcpt-Pt@HoAJc0Y7#,Ez %=`,[(a}JFZ #_f>,E> %=SvgnPxiboXSxS+oXCšL;Xc v(8Ti6}@ We0Mf#Ю_i,EN Zzy߾u}TFjLV^i~~G"WvLCT婦|+huO>7U䯠iIe$:̔!t@Fg&TIԟ"#ffTNP/VFjL@ ydSMc*W4ԟ|+{ffjF;sS9i,E Zzy-TNkm@ W0s[:#ԋCv.zq"R/r[:|nu>5{|^[2P\S}0s[:#ԋC}jX #yfrԋ ,Fr %^* L`ROCi4"#eNCHH)3huO>7HM3SdLP/$A8X2JH{ u# ƒa$ǠiyaLF0y>_׼_Ŧd1huϽ:5HOIPةif̔9i4ԓS#,EF %䳏43Ef41 '}FX: # a$ PBO>HM3SdLP4R7&h,qF" Zzy0`3i(!P fDjzq>kad̼zq@eȼAԋC c;`3(2UOc8p(:|Dn:R/{j??#8Gk|pު5ԧ}v߻NG>n4+d01 Js GzEi?ܠGzEiA;̮]!t_$RݠifW.: & @c]!D4˳@ W0#ԟ-:iy`>2(!:Ryif~`ce^}8X~JH8  PBա~;!Pҷ8h0@&!Fk@@ ϻZGIvNj qr]~Z_mo"G+fazq6.}RMalF0j`"G(!t8y45h*AP/Vl>`R/C4 PB=HM4hAP4GAD혆M5&M%huh=&M%huHZ̓4dS11 fۮk=Mc%ZM4ԟ{nh@ P4ԟ{nhH3N6I;4h)`%ZM(!'j4 'юi?w AikCіVi E[ Zs9ifsfecY E[ %^=)55hVAP/VSlN٬`R/ՔS4 PBšR;XsfJH:DٜY ^N;Ժ0_vIH:MtXk:$8R :ffn7Z ⏽ W~mO:} Ϣ^gߜ@ EO18X?J(z:Y PBѷá~>4e31@AwuzAӈ>E %{5rvL#z90@c].^4Won.]/hu>e3A(zvzѯk^z߬iE ZF}1X?:c\Ɍ`^¯տ5\ɒV'ǚfoNӈuhE ZF@c,[4?ܠ5gߌvL#\ɂ@ Ej>g߂V}if?fc ͑Y 4N#z`].^(š[;.]r@ EOt78XJ(z:|_8z ~y_z]g_n?Gtu9nrq8-6jU>ܳzS΃<7z'N={+rj}~kR_W:0[hT#ԋCv-5zuXfK5AH8Tlk<@ ÙMc2g4+́X4fK51 Wlk<@ y4$ƚe4Ϡi4?ߍIf6lF;^i~u6hAP4BNCxnJ9scUflF;^iɯ3mkhV~<7?y*hzMZs4Tƚvi' Zg;X JH:&I,y ^hAԟ*I65hAP4G&I,y혆syMiYF Zzy-T;lk&@ yt$I3e6OP/Vlk<@ j`2g(!갚$fizq퀻8m'!갺*fwnJH=P'һuZ>֟sT=VCkX!WpO:]^~ @ EOt=8XnJ(v8vz!h'F ZF]fnhP2{Mc/a4zp0P24e741ϔƺ_tàiD/49ƺ_tàiD4?fvF;=_op>}/Pt@'upAY0{W2#oN]ʻV(Uql+{4Yp,Pz&NhVgw-;юiDA'upAӈsNhVif˾gcџJ@c}.^4]4N#z^CavF0EOt=8XnJ(z:_t PBыCuv/ BӡĶ}m>'~|}kP Jhpv8^rh};Zy?[[wк]e=mFrO +ZO/~8<8~aaI:XJzq8OW/혦:t~3c#'Ic2g44 UvLAsꞤ.]5huwW$uAӴ^_O?`~{}썘_WJ?Vi|{ƺhtՠiZ?ii[혦;uN+iFZBSzN%lpxTq5{$?^NKсViW[uZ7;юiZ?h괤8hu=]YXǍ:Mz8ޚaOꩤ6hu뼫{ht P֟̃=fvF;iλ'FW %l@w_=4[NzwTq5{ ֫t6n.u|퇯0hE ZFTw]/юiD*gvuAӈ^h߅%Aӈs4fo41=7茠3hu]1@ EuqkJo>>jZǶ"N /uLa:FG jtMc /`4˼0[[:#G:jtMc /`4˼Z[ PBuwёf6lF;^iTj5 0huٯڢR頫fluF;^itjiMc-Z]4+eEU+6huAP?h>h}E֖h4ԏMc-Z]4ԟN[íif8i4ԟN55hAP?7Wf6lF;~h55hAPn'DkkV4htt / Bu#}u5 0hu.4 0huٯFڲ \FKkkmV^ilkmV^jit-[ BP?bz3^ aYvo"'5ξ~gwo%k:`}v}Q/pN1zu^et%gk6uAP/z^ PBu#:`Nh4+Mc0:c4?Z4 3NCifF;^iC_AP/t@8X'JH{Vl 3혆z9):atƠi4oϦ_lV^^ u0{^@#ӡZ9xwnJHxFjM3[v;ij.huǕhE Z Zh4ԏ{1zhE Zs;V:Xϋ: JsVk혆z9vIc0:c4ԟKAc0:c4ԟ|nfvF;^pN1zq{u;hV: {tgXI{rp(:|=WZ'umo0߽=[}o~o{9V_eٛt\-湻ɽF^yCv6[ BTRO3#Jj혆z9~/iF Zz9bAc6Zo4+6[юiW#?\-4jNCHbAc6Zo4+́~Emـ!혆zZm PBu#Z,hF Z'hM3[m^P/>Z,F %~7I3;yvvPuVsN߳;NC=i:yt PBO>:yti?wG'ٍvLC=:xX': v~tN=huYgg7AHd^4ֳNC\4ɣNCNɳ혆zy-Toك@ `<:{(!thX VjR_k8@Or73^h-'d5juroL\Dg;^;5`rX^:3fF;4QN#z9~giF ZF|ea`^=[Mc5:l4#\4QN#z9qIfvF;=_ p4Pt@wuAgu;65vL#z9E;ƺdt͠iDX4%k&N#>fP^?Ac]2f4?^4Kf41O];ƺdt͠iD4v7uAӈԎݱif̮ic ͑f\=4;N#S{&hwF/ ZF]̦3{юiD+#KF %\=4;N#z΋wf/5A(z:vg9$=^r;`3v$5orV9P:׆xˡҏW}{ƭp[zp n5 Ù_nk{V^Re h4+{Mcm/`4ÿ4 NCa6lxF0y˴ /hu]^i44fs41 Zv R4 NC[e3AH@m`4ԏWjwm/۠4ԟ{'5hAP4GvjwMcm/`4ԟfݑflF;4hl` .^(!vh4 /huϥ46 h4ԟˎhlMc .^4k[;XJH{(ifˆgcejl` .^(!PE %^ a fԋCuv2z:Էq~ |?.M>@b_y.5_6X|j0h6T#o3w_h4ԠiDy8a6lF0E/]㦱 5hu ;Mc 4j4?ܠq6lPvL#z9NAcm5l4k4VN#zO8a6lF0E/qh4ԠiD/4Gejm6huGl@ {_ v kfVN۪٤iDif[6;i4?>v kfVMӦm5۬юiD4VN#v kf@ Ejv4f51ONAcm5l4#)hF ZFRo7٦6юiDW&)F %gM4lN#z΋&f5A(z:m4 PBыC5v6(Pskat֓PP~_߱\7ZǶx{i_WGɽfk@/emt PBaS:̾} zq~WRO34WNCyOI3jYP4GMc}5l4+Mc}5l4ԟ|nfF;^i~oX: ~WR)if_>kcdzTm}V^iMc6o4d,ifkcI~ g@ ?죟fNP~4WNCw-iX_>: Z~JW ܎~4WNC~4WNC4f51 riX_>: Jsm}V^'O0jY#ԋCv}6zq~WROدy{YOIסh-?k}TܛX45낽p.8TjIJ =м`M,Z(l&lbԌvL#z΋6kWѾ@ E/Ym 4֮}N#z9M5lWپvL#z9~oi]E ZF)X:ȝj^M3X65ӈ)8XJ(zH;6kWѾV=ECj٘Q {mkLѨVgTx:7mif5i4?ܠMUiDmifechES ZFn^&M-huџy5lbԌvL#6kWѾ@ E*uh_Aӈ!lL٨`^=MUiDyѦ`*W(šT;vPkCXvMC ;Kp_FZCۡ~qxx/r=ŏ}C3"ξ~gwo%k}M}}Q/7g PBaM: z:]٦4hue`3i(!:$fiz}F4!:etΠiyAIfF;^iܯ^4GNCOC6uAP4_fvF;^i=4?NCfX~: OofF;w }4?&NC&if~: 7Mc3i4ԟޠo6APOtH:N!P'F %4)sNCI)s혆zyCuAI6uAP/V9`R/!:et PBš:d;XY?k{/6;!Ƕx>F{'F F-zuec3AH8UZV PBաZU;̖-!t8vY4iW} 4ȢNC}Ph4k ȢR4ȢNC̋Vee 3AH{UZViW 4ֲNCh,G+Zz9a@c !D4˳3g+0AH8 R PB=ВAc?ZA4+͑^flF;^}|8XVJH8 |$ PBO~ܛf&LF;~|4JEIޓ~4ԟ{uo8NCT|XV: K @ WJ0|&}#ԟ-:Ri?vhAP/>R~;ԟ!K@ g] hue^v?[ B)R/uCfCݩ|^/x^zl? O`#['ЫJt< Bšx;X"JH=%y$iy+UaLF0J`);Rx(!4#NCHI3y&vP4#NC*%HAԫJt< B=~i,GbZAs ѯOؓVk 43gbsIT#R+UaLF0J`);Rx(!#ꦱ)^ePs꧜J(zqdGp%=` :B(@ E/aF0EOx8XJ(z: r} PBѷá43g71H/V=}ds8XV,J(s>r|\h4=4#N#sd~X:=7M3;@vӈsәhxGHZFM3B iDAuAӈ;{hDO ZF􎦙=${юiDA)Aӈ^h*tXgN:蛦;J;Β逎,i@ EOt8XgNJ(z:AE44t 50K6^z:o}[(tp% ;h8`OZfazq(qRAa6lF0j`"G(!P QD%^Vl8`ROcd5F#huej`-!ZD(!ZfKazqR/| PBUq Tz'LvLC[,G%ܻ4='NCg43gsO>7țz$i' R6fTnzq#iR; +97%HAP/VLǙ`R/q PBšp;X:JH:4L3= ^@;0}IH8Tnߑσ@ rgoᆱWxfʪ%=kd[KϽ~̿z4,YFlk8@O$I8XJ(zq$3Yf4A(z: Ie$ PB#M^*L&`k$IX:o#uRhԠiDABmX3F|- uRh PBB#^*IL<`+dx䙴:蛦a;̴i P^$Ac2g4?#uRhԠiDgIfiP}NX :=H6huGBmX3 =P`5m(˓7g5C}BX #gowSp)<>\c!_O),RZAa.:X JL]0SX4#W`),RZ(aa%):XJLG0R)#Wx` (R(aa%:XJL<0P&$#Wx` (R(a'M R44G3 LK&휦gHci)T4?ܬt$43-e21M녦,-E %l:CK@@ [?)FfcR ,D %l:CK5z@ [+RM|kMWb`&RO(a:>_>m;ץü2Ox?o)֧nJ(z: -S PBыCv)ӕ Bi "]HKp*PPifztePt@ZHWA,=E %8TZj2] =`)U(逴KO@ E/a&LLF0E]%D)iu ͑|W if":蛦S ,D %=j`)'RP( Q,A"^*s Q`p e}$k ۡ C u'#.vGXSݶK;o(!P{];{XCšv/ PBaut{_F0@ @ Wa}7 ^jkbo %ؿwIԫړ0&$^jOjۣb %^֞DGfzq=l= Ϳu;^jhAb= v(8TOov=0IH:=s=!P=лq.9 ҡ}tX?nUzs:Ihm{1E? hqjtp%^܇Nk8^؇5xPzu}> B*l}8zq gc%^j_m>lzq gc%^؇@ WWa ﳾ'Rgsv%^{8s5Jgs6AH|PWƼmF}Dfh{U;CA8{2޳vU5J/xޓ %^==Y#ӡ!G{p(8 {=}TIuTX H;TZáPP)k w3_O|T|'ssu;k-_+zu};BV`RO\}:|5qRk?CۡNR/x^z%^j?hq\PkDNw}3=SJW_9` E7a y|6ۡ}PY׺J/;ۡ}ڡ>^v(=Z8Cj2s}DZ~OO'뭮Co=>B)m?d }ZSz߾~nÿvwu s_;O߮/߮o?OQ}me[\?xz<׷}}'_^/vZ߿fߝ|럾opG [Iv&ZS7_a.(y~Qr рDZ~>Ju#GyoNخ7ʃonUgy?u,od{x귷We}=g9ӯ:>zk z=k̲_X.Yvy{/,l5;z=Ͻl{Ҷ"ܞ}Y(!p>o)\fV^β]sorl`Xխod;˖:.<,5"ױۖz=}Uc{ا_¯:˖7$β5;z=?_~ߍgu UgX(k/c{c()?v}OYrܧWe-o?`{z<{cc[LZf}EE0ӯ2}BGݫ}>1skcß?G]ҽ!_& endstream endobj 97 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 100 0 obj << /Length 2226 /Filter /FlateDecode >> stream xڍXK6ѮZkDܒJNJǎl9<)J{S]nI$ZVؤTz4IKڝ_|Ir(WRN>r6zۈ/>jU%U>H6M*Wqf|G7?V.cde 3v8,tӝ~fLr_F֧ >ͺf+tc/]?QhY&*. L`JO5&rʹI€MUR950d3mRw=u/4EX,"sj&Dj.N4`*M/4?(ӆ wb%l6['4/me<֐|<)bSL M-$ɨH~Cm"ޏT]|T#]ϱ O?"H^8Qg3sЈX lG]) WBWݯOPnX9QD3 wlNsMyϵv<9MSi+I6 jU)( [!&F@𑱈! 12FTwxB{rt6F3ל,%p;9rIi=pA0o$V`Tˉs7P(<~s=IәWHxI>Sa:lN: .}E]]M) !ުiZt`\A# VV$mXf{ HUVt.&Nw:,a\yMa7^|vO꤄Gu]&VjN :9gIǧcbiPq4#>nYgh&z|ΡX8R !'5+N10ȹ%) Q!.XDN `9"U%DeQ1*T`Sಌ0t(,_6QGDN \O XPLim\B:^D y3k7rFXcnq}Ka6&'oV#RKQ8D_dzwrt@BZ%wP|)b}5zЫ:ToxjB2Hw"`Nm,po1SU.c:GNz𡂣k?;) ;> L-|.VIqCPIْ;?Rqv_cڥQ#g7I.]w*fnS|yR%957w6^RB@5ãi4|.w#[͆F<<*"1*W>+W(TiNSt02A3] A 8D29̤9k9}ihVwhrvLVg-$EWYẉS@wEP<~UiE\wu .! `4 fާy|&2%c79`"bRH rQMbJI*WUjkLRbI0O endstream endobj 86 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-showcol.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 103 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 104 0 R>> /ExtGState << >>/ColorSpace << /sRGB 105 0 R >>>> /Length 79454 /Filter /FlateDecode >> stream x}K5˖ v Z !&40hQ-Aa{َ2\ŗN/|Dؙ{z~x{_7w|x~;v[x~}y|Ql}~~}xf mm_7FO?χGlXY{oy/?Ϗw}oD痯o}i|~~~|y5|_ޏ3ޟ4Ml^m_Cp >?ǽó _otݗ^_]_e4/[?sgL }q̜қs]Zv)~==GoǷٶF~B=FuWq>|~*b=}0}<?|Y.ٶF~B>>?߷+F6mkV uX׈{?l[#.XyH@[G(:/ڶF]Q{n5+a~|O|{r}nכyh`~Oý~wU6]7}йVvѱ#t\;ߏ;+F؊k{ 5:6a?+Fzֹ5+ú5:.rXyCk=s5B뺖ɺFs]d͊FH-ؗ7 om-76~>i׵h }_mn$k\%uِ@h9ľGu AMp pcoŹfXܟwt^#nT_s_w Ϸa=FԊ5+"u݉d}=ܜT\#.XDu_,#aI$m팯{F[!u'fܺvNж5:u׷X{փ9cz@+i9ľbkjGu\nmźz|7ceҶ5"BW X1žkM!+rn[#9*5<-c׶5"Bh9ľEEM@0üb>&95pcȽZۺظ?hP{<>?wU6]7Ώ,vٶF~BfW[Ȋ\kusH.GAV'Q^Sk>5+beںjk#.Sk}*߮4`^jܮժll/~P n%^XHk<ּو!Qsu͉9av]WESc"$u΋5iV]WESc2$u΍5qV]WEScB$uΏ5yV]WEScJ$uΐ5}V]WEQkFwϐ5vi&p^1Yay{O(Y]rU gm!Op/r Z m1fYps`6Gqx;wp)|1GN<ܘȝS\OUu Xܜ]s\̀]u x1;'rpcZ#wr=Ve5ƼFzʮkÍ9,X]׀ŭi =,ص]ـss o0BNr$ \f5UYn[+4U 9`+p T э̓@v?bz鋹÷YG{ƟC In8RnŐ.b䇻*7&|r߫CUv]nL9g\8$7ÍI9G ^]׀t;q8t|^}l:҇g8SG2Jaɞ9P]׀=s*7zrBUv]fy߫Bwi6~9_3U 9kB+p U!}MhV^]0Z ?h8&zcZ+4U: nZ+p H|WThxH EZ+4Txyt >*|?i0fgǒqHOb>Gô7tr ?}q+X\]+|]u x;W^rp#Cdk @t-p.;C{,nZp#(Е]׀:soC׀:soP]׀:soP]׀:soP]׀ŭ5ƗڮlƎ\칾VOu XU!}oV*~*peZ}չUxJrW\;5f|ThjmM+47'olw[=9<}NWϪ,n.Z5VZ=97Íܹ*+x;י^pca!w3 Ue5`qsaw3 ue5B\gzʮk>u+Vl:N<1E~V*_;Xڨ#W^K0KC+ +f 6 --Zğ^v}gxOr=V oUc1ȩV+*䊻ȭ~*peZqW1fVXUw_[+4U +r+pU}Ud_n{}q 4Ln ۚ!x̂VZظ̒;W^QCplXfɝnUu Tz[Nwޣ*.v.{te%t]ǯ>M .{JAkv:](ރuiR*/HҎTz_;2ަO 6Zx8iIg; ~ȝBʹW8k׀ԤٝOnHM%Zfv4D8&Cxh {xUH{V oiU | yT77{zw?VˤO?E_yӭʮk=w2]u xaOȝnLV])7+ClJa* uiS*ϱ!w:=Uu ұ큎rAZ0`q1PGH2zC#JaA+Ct6{c +ClJa| ):_:"0Rf<4;1èBzWhGFj잧z74HMzZsdH8UB[dh*`L>)V>LҗB[0UH_V ?X|lc }S}/!_V }~+ģ6n7+ʮkwyrn 97>`ƨ#Y;R= xz"wvcUu xaȝ~XUv]w`QGvc{t4ɝ^jV]nOrmZ]׀}ʫèRGv{FJ[ՖJaA jp|;h;լl_?ϤTK0K:ҋS-À/]4ԑ^j|xyBH;2ӻ#")%BwJ_<.pR.twֻ1c)5BwjÛ I&h[wcxCerB[8TUHǺ;R oPU!h[+4UTLG*?\8;ѦBë~yNV7so2uCnusᆉ$wzvUu xa"ɝgUv]nHrlY]׀}pBGr{tp;gӪl=0ԑi|XpRGv{sJUɖJaAs dxœRGzv{INpD;=e;Ϊ<ܰN*_!b;m=)?(-wZ_<2Rpֻ1BzWhx§&[wck#Քֻܼ1cC)5;w_jϵ'97*ɪB:WhxUټW{L[p+mF;.{MqlgCrll;g;Ӫ6e6ŝ޳iUv])/&u,g*]ljw˘JGv2zut˘JGv{yYT:ҧ-ރ2ґ>]lvok`ti=** ZZ+9$~4_`MjOŝzUv]nXpr#o^]׀ۯWe5ᆭ&wUu Xܴ.\+7/ WʮkZ: W.ÀMWV_H7^Tzv<`#p{R= r[0`頥%w:Uu xaSɝ=mUv]w"RG:{JhOA~lwit ʝJKͶV-*j+p~zxԤjn ojθ{8NI;Vڱ㤚rCz7kSҁB[8NUH;V o8U!P[+4$s+Ǿ~>+ rp;=b;Ȫ<0N*7L!#ʮk)wyr]u Xܧ< $ul*O0N*7+ʮk Fr[Կ](/WNUz7rkC׀{5=H׮Tz6oZߥ՟RGv{sSHAJa!Gve +uy] JI=@9GI';Vގ<ܠ*;c+p pxowގG56Gn oj<t{,э/8GI';V~:GUH';V o,T0{˦BO>eŀ \Ux!v8|_|~'.G\~8&xaSɝ=me Uԑol:~?RGʥ{A +JaAKt핫{FLWJa׎5l5un^*[tK0`q½‚CG9{tV;]v{<ܰNܾ*_:ԑι}ul:NWkO;JaDjtJ0`]w]u z<@`#~T= ؏-5 Pj[骐}*{BzݫWh@ w~nc ī m{'nc?>,npro^]׀M ӭsn&QWe5I&wzvUu xa|ɝ>]rUv]Q>\r,4Noη*[SGzv{xgO#m;R= t 0ԑ>]r^ :KnÀ/_H.TzYrm[]׀yf:۶-À/݋ԑζ}o|ㅐv[ahizv}gx iw \|*O}l+pRJMzZgĩ ZQiÀMljA@:JaAL9z濫W{#@:Ja~8#GR= 9WրMZaKsRdJSLk^ /5JcO&\T"5Rj_ZJ&SʞbZwcK@j*l)fS~& U'V oI.HRcO&ֻ1 2d3Xn iTX[z7h&؞Zwc2T!3֞Z+4{&!HM&=!eXj~xXОI1f'!>>}w3@ }y@]"p˯ Е]׀oȍ!l5Fd w&Uu xȝ EUv]QG&{t0RAel=pԑ3C<=ړ;~瀪l=pԑNs@i֞:w(ÀxACG9{8\#SAgT= @ LJ0`頵'w:Uu xaɝ}Uv]7ۏ]ڮl~v~i彥$SivbKs|Ԥo}}n KM׷Z7tI߾V\xSD57_n ojΤtI߾Rⱁ{hލMͅH ƪfO$ٍg6{VX R*oT!SĞ2JA(4U{UX x/ xo}GCl <<ߵc';CAʆ[1$7f8weJ287ÍpB*dp#;J',+$*dJ0`qDԑSOl:NeA5zZ0``!wN=Uu z<:2t)ÀM߆5zJ0`qӄ2ԑSOYA:*TiÀMm.M"\өTzt}0PGfNH{9/jKJ0`NRԑɪsW|(EAHN]-0(?sҞ3RHj2'9z7~uT!ϞZ+4PYGj2٨z7 uϖ6ލ/%egV~U]zv}uSH2ӻxq{:ݡgT7k;I;V ,Hw>jҭnz7w53jҭnz7k[ʁo}S qtC/]͙*kB J0`q#PGN{8NC:2tz(À,ITz6'Y#<@GeJ{t0;A=> PGN{c@@:=Ja~>{"PG{!":ePo~LN|Z AZ2Cz/4K)3HMf=cZ2e gV̩|!57*g |Tzrg>P]׀dz;J0;Te5Kד=4B C{"C!HK=7Vf5e gV\ 5!jKr*d.sC+p*PM-7ljO^=lFMz= Z/*߳@+p ^~*+pLH+{H HibO^8ڊ?9¿qJ7nŐ7nC9h2k>Q:2t)ÀM#l:JaD*BL6{J0`q}|[?7b3%u/"p+&X܌#t%3&x1ȝHUv]nrgQ]׀}udQ*RDeV= tnudQ*#SDgR= tH ԑ)3F:~#SDgR= X:]ɠrCWv]n{r,P]׀-{HYTzt=1 PG& {A:2tj(À>? 3Agm1QL{bhދ/])JR`O ֻ1uA @j2쉡z775#5j_JTS`K Z𗜄d"Cn oj.|Gj2=z775#5g=d7eU,gV ?]X̖u6W x =MB[|G> *=ڎ*o,8X `=WhIu/GߟCnz}~OOxǽ oTظWw&ΛUu <܈Dy/u q)L7ظWw&ΛUu l+;SbgȪS sBꨔXUzbtdJ *]lj_[XP:2%v,ރD^P:2%v,ރQOܙ:Ve%x"mXH+CJAсX(L!rظWw&΅Uu H/k璎L~ K p{#_R=|zbΣ} [w!p(9Nld3a*NmNc5Ljv+㍚|{&lG sTV mecnq[z7xFM=fsۨV ՜I+q{k]͙T2ި̷gV d/rWӕ]׀qܙn:Te5`qt#udT*O>$9*[tdT*ӿ%H*'Ja{:D$9TzrgS]׀dzLBJ0`qtdT*)1 :*5UjÀxSTԑ W :2au*Àx}(:Ja udU*}{aR٪W 6 }ULV{jދ/hJRRjO^ֻ19Z&S؞ZwcxSsM'Rd SZn iWꢚJa[Jz7𔺤&S؞ZwcxQRLV{j&՞ZwcxIJ2YɫB_;xs'5Z=f7v&3[wc9̀pό*|Y0ð+Nqc ɽݯ,+vc.}#ڊof܈Tۙ*TD䅎J[0`+:2-wNÀܙ;We5k:2-w.ÀM_L˝K0`q"i#CGҭ{8:2-wNÀܙ;KWe5`PȴYTz6R:2-w.ÀMRGҭ{8CȴY:UF_G*dٳN+p4^Bva^n]õ`ߞw"Uu O\!:PoЦL.CLy{ lދ/JuR)oOֻ1cT'5jÛdLy{ lލMvRS)oKZR d \/y%5'VTRLn{kލ#B&=ٵWh ܶd)p [bScUgThx, \'!Xg՟Y2qx;HpWΪ֕]׀!ܙY:d7B 3tʮkґM, R)+[QGfN42z8:2t)ÀMlj?"PGfN4{8h#MR= `7~Z0`?$4ԑO, )҉*[&o:JaҤ#P'R= =!*(Nb)T^jdT!͞|Z+4XIFj2ɧz7~NT!ʞfZ+4UPj*lifSPL6{)э3B=ʹWhxL+{iލ_UȴV ?NXʖf6@{fo^ q+Ǿnw- pn; Te5ᆽ'wUu X~/P:w(ÀM}& :7JaA{rx")SG{Nt﫲x7#|R= tHCԑ}l:~i١|V= u>SG{8a#~gR= 񀽧tJ0`a'wvUu {GCl{^nw_;rcȽ=mCr,n$pWjLՕ]׀1ܙ:Se5FL"wTUu XWF:SJa#3 uNʮkoAGT{t0;P礬l=C:SJa#3 uNʮkC:'Ja8J7}p#;K癬<܈*73YtʮkvOVTzt)s@Hg(ӻ(C=3Ş9z3''!5?|j[b !5)j_Z!2Ŗ96ލ/Rb61\ bEj2S왣z7~!T!3Ş9Z+4T``[B[dULgR o^-XX T o'UX * <?tP c_?_ 7B)*.fWe%q̓;};+áK 8O`r@V=:N))TzAJ:23t(ރ#ЉTz_>(#ER=:N| :*TRiރ_nBP-jJ p8Ȍ Tz_Nj#3N'R=| PG&?{u!:)Poc΍rdsRk^mfUFL{jGr*dsR+p+HM='ZfqMw3xWs& #IMf=SZfv-0B='W8xܣ \r*dsR+p =P9hIW8xܣ \#uL*G;ɷϯʮK`'wUu |<ŽSG{ye[w!pܽ'|=|/}{*NKMݷZffoyvI{V ~ȇBݷW8x@o 7/)p#zFMz݋f\|Ԥ/}{nG>\җᄑ{pUH_V oY|7p^a o#ۊَ1+?}!19/mw'wNs_ڊ!7nCieKk O 2qpHn}2ґSAl:Nb>uTP*oQ|V= t~":AJa[Ȍ TzvgߢHGN{A':mJa[{8gMeV= t[D:'a[D$9Tzv<}#PR= @LBJ0Kשrt:o$ҞRivbKsd^Tn ,!IM=OZa#ɼV^jyX2Ж6Ԃ#5Tj=* ǨB=Whx k \LJ˜WOv9<ۃ !wvUu xa6ɝ޳iUv]nMrlgZ]׀}fN1b[0`q˜RGv{8Cab#=m;R= 񀉥xK0k&:Ӷ-ÀMlj0Qo:~`b#=m;R= 񀉥xK0KM,um[*_;ԑn,r o4C_G%_[bxSsB_1&=I[wcG~Tjҟz7vˏRMͿnjÛ5ewjϕI ew \*ݽn+p xƯ Sd7'Xo)cV ~+Ov9<}>afɝ޶oj iP]~lWv]) JWͦa7-`P#jR= t0ԑ~ll:N|Z :ү-À] *t_-7*:үMÀTHnTz6ASGv{tt;=h;Ԫ|˝BH2ӻYATJҩN6f'9SUH;V iU3tmލ/}8SI;VJ%gJ5T7'n ?ݦ*i) psw*mBݝWhxUG#?Q`w~@[1<g^)1ocan7ƒC~vK`$wUu <~IH:ҡ-ރgࡣjV=<:h3ɝ=iUv]_;ִԑ=ixa3#]g{R=l֑$gVe%payǮwYRG{8t2 u;lX*]ԑN}fv'6#ulY*_=f 6}mΑtmKIV ~1B:aW8GQjAz7w5g0%Քֻ}KUHV .U!F[+WRUX w o8&? xګ ^lόUFmfc}Z1V7>|G_inǿv} LӵsnfYWe%q;pnZp-ܕ] SK퀳rx/|bY:.ރnZHTzy:[.ރㄿY[ f:;NуYK &wvUu |XSGv˥{xtтnvJId׎ܬԤonmt»Sn௞)8_I';V ޮJYV(wM+ţO+5w\j{𥪐>u5V SSc1ޝr*Uer›S|}|ns=PV }|&|Y'mVe5ᆁ$wvUu xa ɝ~fUv]O!SGyr{8)dHδTz6'|+&ulgZ*_;0ԑ޳i|٤LK0`q?lBGyr{t@;dͪl=~-=ۙJa׎5&ulgZ*_;ԑ.=l|^#v`[ahizݓv}gxߨ #w \*7ܽc+p47JMgZ/ +7ܼ*ScUpwThx >ww \ܦ*i+p x !N5fz;0V-n ͺʮkÍeCOp*Ϯ!cr`w2ʮkwyJ]u xaɝ~~Uv]nrrGo_]׀}*gSGzv{83`ʩ#=z;R= X:h]\yWv]ngrn]]׀=We5%wzvUu G;L;Ja?fi.ztL䙥%=[bxVŻon,5wj_ɨƪiw?p^OTc1)*W8x>1UDU7|_~ڋSYrc_dO_]~D9ɽ @ &rظaȝ~DUv]7}rhP]ƍE!Te%p_$u_(7*]lj0ԑޢGv'| uhQ*/H.Tz_>`R#=K;R=<::@.LJve_;r'Rnew34; ǡ @v \௝UIV ч;t+iB?Cј TX ?v*,U`َ*,Tۼ~`\{,ÀMlj u+f< sU*_;X#W^/K0KZjثe 6 --ZğkVv}gxLr}׿V oFBY \JSc1SX8&C1+o;|WMUxU`.~BCv|B腶bx;ܵn˭BE\zUʮk25WR= xzĢF\zʮkbZ[zCp/n wJ! 7WpZ[+qWv]n,εWk纠1+?1܎l95ľ߇O4;g-v#Z 7sB}LiÝ3\UulkJwp5ueEsSp _Uv];1 wp=UeEsSp _Uv];1 wo=UeEqc~yW=uq&t3 P] _i3' p~ kƙ 5m3Ԧ k|U}LGU1*W(8:j?=Wl{pWC G<ܘȝE%0a܊!7pls bӹq;s.[.^{4C?+}߇yk [UX >Swz*4U y'wz+p 1b.Thq+}we ܸȝF9HJ܊!79~Gowep#C4;'+7nbr=w|Uv]nrcȽ}&f5A/z6ʮk֪rEl1 o0;Bl \]U{ys6XW~׻lm_zy=[1?'r++791Gl9'nK51X]]׀.N< y낻ϻp"wm}/}!n^λŪ,nY ;Dco$c}߇shO_Q}Zb}Mw&z7~rcZݮ5%DzʮkÍKyEV]׀ŭ >ՀY\1 n.lki0\ |~%<}=`57N9Crl4;J65A 7f6n]Cq/ps.!W~5p{fOb *U_XS?}5&Dm>x}Í!{m_B׀ō9ro׶Cr<ܸLɝWm_yp?nkB7~ ]㽜O[1;~|{sAn7W{[1/75=9f?m+>8b ^0<ݗ_$n_k67+ܼа7'/jl]Cr<ܘ^^닞p;܄yY[1|Gt~Dk>rKھ>AZW.fǗg5;اuSc?o?y?._nqǽ޽e۹_x/oo{m6p~| ۼھ~a5Q7FOg`_:z|Ok~ޛ}y/?߿tb]UkEq_λzk?5 4> O !756 A8s|k⏇yk_0y;>ٓoY;[v>/w_poKe<ϷiA[_{cxgSO6]rosmt l]c8/w^lbx{nc*k1\ |[`/oebk۟kx;5u?}1w'2_wl]Cq/qל^C}ޭ3[א:Hcl5d5aqĶ9<|Ɛ{>([*!6>k(wW6]n2yz:yںǾsŗ7wqpcܹ7`m]cͫKrcȽqzĽNאjDuU6]6c5v6#ljuw*FŽ{ݦʦku0 GnL{kx;o>ClMںxq3C;ܸu q^CyOa}8ٺ^~{G[}ZrM>[W/1uo|ظ}+nl=^`^qqoMP l;u_ } Ž~e=q;=nٺ/Ùu_r7GZf^1뒝 z!6ݫvv+{;үbx;z.u{ q57#rcȽ25f`>^Cqӽb0[P ljcl<Cܹ֍kHnn^C}sTv\m]Crlw6k8 wU6]nLw?b;ghtٺǾMRrfm]Cr<˰CXWšEu q GqmWY\{.1voWpqRqnWpVv]6^Cmwvw7.xrO5$7q=^Cmwvwp(n!sݱVDm]O<:O¹АCDUt ظ$;*ZĽ{-S^ظ׺$5ˆ*7n&r罵yqWsHn7;+1Y'v(1sWB^e |LuDm;q8$;9l1v5ŋ| ;ܐNXvaZlD}-'"&L _ P/$*mui<:&L`'ǵITB&L _>]k?/].Y!8Wbj D^MNj'LJ09Ǘ[Mxyg3xS78&< |?/50fGJ\o1V `,\U>Zd)zf5f;U m=Qی (Sr>ݦۮCYԞrO(yTr^ݦݮKU mO(Tr~ݦ߮SU m Op/| >s|<  `+ghO(ArXT Wm1Op/2 4,fY`c8 cS_ O Lcÿ>*`,#XV o0BN \f@Uq1[+4T 5%nS*`T9B[L>iWhxYPrVgV o0 BN \AVyq77V*ĸO *`&TB[LS>uWhKMɰ=y}ێ1+?eg@0Ћk;oUUc1ܪ̯c [YUX 3 \W Vd[a6V*h [窐>WhxUxz|yQ?_jr-׊VjgiZ7ueS~> Uuc_WZ+4U: nJ+p X'T!׍}]iV*亱+~*p`Z7ueS oNB \ Uuc_WZ+4U@FP+߾rB[%IcЫ*Ci;ƪU#PthS!lbS oQUc2=J*4UP GiVC҃B[UH_V ? X%6V@+^B[xUH{V o T!%Z+4U7P hSހ+l^bS o T!%JA(4U7P hV+*J%4VW=VUp_%s֘ G<bu|_SUUuv_[+4qH7xD:FvS\guB[zJ:*?&BQƬ8{IgIk?E/a;UUAJ+,F4듙nۈ89oZ=,#p=IG H=jOQmBړ{TaЏCIÂ֧6-47>ͨN4޸i9 E>4CE{j@?Ca Cr=5M@BP] rWwBP|]}q]֮zq=^vh=jڹoBڥvꛀcǬ]y];wjz_;uPk wupP|]}pp]֮zue=^v(=jڹo~}:_;h|i9ٽ@MiF߻;4i!H8ó߻h< dZX6~4iar׎.3lKw7 Gޥaڱ G ]4gX6_A@MiFϳ_< dZ$=S 9ZG`<℣C_h^u?BC%9xijpt|!Gh#Z?(irydpt|!G6 GOsqĔ GN0M$ P Fh2l~%J0DgrsJ%r)fptT"O)b6 G3/߹J)bӌ۩D4R2lZN3sS F4h2lZN3sSiG4~2mZN3sSH42ImZN3z;77M%YI)Tr]iG~2mH42ImZN3ӳ_)J42umZN3zF#XLu;q'3& p}cj#Խ$9\2㵖ågި"d&ԥ{Uҿ?3?E<6 Ce9xL H8tiy" ýDSyH42?-Zzh<e~ڴzCr|ió_I42kmZN=h쩕feZAi?;7DY*֢iB!9x> Hٯ<$G6-WO@vn:5G@?Cr|i!ggh<e~ڴr!x>i9 8קVPk /B?z#dr$/3"0BPN2nBtrdoJ?g~|ru)wZ>l"3egzz8TjLá2vF]E6i?vL@4+O~7-TL@vn:6J~@vn:͊mEk@xn*͊mMi'sEI84< gR$~:J‘á< gR^F=*sjXOZˡpoPkI;B?sK98s֟Ncۡ}cnároOؙ7-47vNԢ |rM%jxi9 h|>g̐@?v&l#C Ǽw`Gx̼hmA+~z7_sfx̼i9 gΚtrZ)ϞM7 ǼwkeͦY3irϮKE95s좵iYS=3nBʏrɖgCǡo;$Iٳz9zuJL՛@Ou'L@xn*Qv&MiB'vX ;xz{Ei<4ПN~rAs'WR'L@IShh9 gSh H8tn#>u;i<& !p-O7 C%j9x HEv&Miy;%J͑cރ{ԜzrAxj"D9S4ЃN#D-Oؙ7-4wT'L@D4+aGZNO:%SsM@B1~T)Y43UoZNٻSh<5g޴I'jxi9 Z+5GBJrԜzz8T'LʛПsE9S4ГSwdxjTi9 s;%J͑áR<5g$=9ZGȡZˡ9V.^5}j/#U[3xvbC^]ZUx¯O>~y/c#o-=~q~g}ƻPvMiFy>3ol0[T76-ܾG"Յ+-n^=ih7eZ6Ouehދ4+Z8x˖ H8z:\O2%:{hH'=aA@ZPfSuѳUz?ѱy|P4náeC$^T5xʆi9 ӠP6Mi?<7xD (Ҧ4ЃNg4EC ZN=ho@ِ6-~'b&[& ! l=@W}!uRC&[Ϧ4ЃN.4D ZNJ6M@By___xWgWޗo5z6-^ ň[MMi?|-Tl=@v4EC ZN2[MM@Bn< irn< irϲE7xʆi9 ZD BϳUl=@y[MM@BP-FjlB?1au$h[f]tkz>7sD'Hzr(=c;GvE`^.!I6-4w:Ku xNi9 :hsd'ٴz܃j9-4w2|u xNhmAs>Kx?i9 9%'_6-T/@?W:Gt !dz5\=^J~e4П#~erqc;GvM@B쿮կ+;GvMi?Juh9-}D4O,Zy-tǐw$ПX1D#;ɦ4ПeΑdr-߃jO-~^ 1#;"0BϲTx?i9 ghdٴz#Zlc٦q;D>lSZChG:W! 8COA:_߿?/>^r~fT?yj7lZhrP H=C;evM@Bǡ[[;-;z8T7ln^&&of6-47rA71x3i9 974Es ZNٹ&&of6-4wZo51x3i9 fD,ۦ4h-orMV3$D,ۦ4Г}4x˖i9 vnVkly@h-orϮhښfhyAiI69x˖ H=w[\Mi?"'_6-Vǐw$c;-:FӬ$h9 3o9xȞz{'Wo@;zhGdشzD="{Ʀ4'M:Gt4ПΑd4{Gd$ & !p|/6 _M~4П]y ƻAvEk@xn ƻAvMi?vw@]narAsth ;-to֦i\rck@?W$ZlBdCǡI;M&H=jGKJuI׺Z?o_|=_Sg֥x53~=%Fj[u;}](1Pq EW B>r.]iz9R}D](Ҧ4Ѓ෺D){զ4ЃU{h7eڴy-tOj՛W ǼwD){զ4Ѓ_M٫6-4wgX=I4ޛWmZN=͍X=I4ޛWmZN=iޟ߿~T+_fUAi?{tw`@OG~vJ4DzmZN}jnrRD-ݦ4W;>}-Hhe_۴z[JޱmBvw`@-S;VvMi?]ݩfu`AiB$9xo^ H=nhj-7ly> םG~\qN]zqoW4]lC pqb^޿x{vi99A6M@s;߅x#ưi91o59F!H8z{[SWoM3z{_ihdcشf(041lZN3zT?l3WJӌiՕS~Ekӌh>W,hQ lӌhnt+lӌus-`r}R^+G P~h5l2ZCǡ~v~wZѿ#2~=_jT]-=^vh8toh#gxѺZ/ 36-4wUw$@;:hsd'ٴziP1fu$Ai͝;DGD$˦4#~er]C9lBy߃w$@O:FӬ$h9 sc;GvM@B]Αdr1o9xȞ H٫{hGdشz{uG4sD' ZNuhdٴ=hdٴyevǐw$П1D#;ɦ4ϼaA@Bn =cr1o9xȞ H=7{DM@BPwLPkM(B?La5h2A@BC귔~?ߐf] 3jпdj㵖CǡɴCuvJNIޔj4ЃX54ޛWmZN=hIޔjrAsSޔjrAs^QY)zUrAswUOU֦hwUOU@O!ݩD+;ئ4Г].xi9 Fs.WӬ,h9 $XEk@%c6-~v_r>}mz{ЪXMi?;ݿfkAi?uk֦l%c6-4w'X]M4ݲmZNYJ&n6-,]vk-FO^'yM\Ѻ{^M@BPK²yZn]ZX !ϬK`YxeZc}9tj²_n֏CvX'zjiZCPEelB#r~ez9/@\~erAs[YMI4Ѓ.hdٴz7GD$˦4Г=#~er]C9lB?aA@ByFo =cr^m1D#;ɦ4Пںc;GvMi_ΑdrMwY#:Ir^71D#;ɦ4П'1D#;ɦ4Ѓ7D#;ɦ4ПΑdrrHwY#:IrAsV~erIs=/Znlc٦|g'v$oK٦6 C#9x[6 ~{j8]vu^5'UrlP9Uzr(=~k!H=׷2>/ܯx[Tsw$s}=׽q{}Cpq֚vpp*ZJ=~j5["0j5[& p5q&Mupp^shfSݴf/_S4FS ZN3zWoTM3ziWoT7-=^&eM@s;]jCM44Ǽ<尚h4 pqvs~7-ܾ'.}-uxhmѓ=Mlӌj1& jC14?<Ec4ʠ4?L/c6Ekӌ4wc6MiFo47&eMiFIqvspp߆Cv\k^ˡt8x_]Gz\[nc+e|ߞqޔjq7E B/{N%X6-Vw`cxi9 );VvMi͝թfu`AiB$9xo^ H{;VvMi'C+;ئ4ГE/x˾i9 vn7ު5n킖@Oݯhe۴zܾO:4ݲmZNOhe۴z;7Tƻ[vMi?{wWkݢ-]M4ݲmZN=hu=prAsm:xi9 g){heܴؽiVϋI -& !ϡnr1ou59xwn H 94j6M-iVV923[& !p9T=q㵖CZ~5w<[;jo}z֯Cxq|;rzz9zvlᛖ@Ovoȣ-~~j9x \4ȳoZN=h%ӡF}rAsW7l웖@;w]7j؃@?nrF}!ྮhgcߴzC<4Г7l웖@o4wT4GcZN=injF}4Пy6Mi'͍oW7l웖@o?hgcߴzdf5hAi?{w7l֦Z \4ȳoZN]$U7l웖@/w7l웖@7j؃@.{Ek@{Mim]޳oBjrF}zO?5O[~=_ϋݗwPЏCwvX):Tz8TϑE^#=ً6-Vww:cQwxɮi9 9MzO4Ѓv#=ً6-'=G4{mZN=h9ޓhrIs/E@OyU4D/ ZNO{hd/ڴzI+C'{Ѧ4O84{mZNzhd/ڴs=iV^Wqx^i9 9/+=ً6-~RBw9xɮ H=]ƻLvMi?h]fu:Ai'͍.TE4elZNLvM@BPEelB(Zlc٦q;>B& !h[ux??6Ux_χ17vXm)kZˡpv$oK٦B/{fmjr1o#9x[6 H=7TRMiyj@ѐáZdYF=u:4jlZN=inj1Vgr-xֳi9 qǤZLӬV'h9 g?n1Vg4Гo*Vl=@O=ZhdٴWqxֳi9 gn1MZM4Tl=֦4wZQxֳi9 g{m7xʆi9 ӠP6Mi͍Y4j@ѐ@P6Ek@?eC$Ix[6i9 ڑ-e$~jKѦЏCޟ.M<^z\(vu﷩M8=^vh8t;jՖMu;x (& !rjGmjrAs/lS@_HޖMmBy|TӬf+h9 shYeڴsSMJ4ެymZN=hn|MJ4ެymZN=injRfkrܾ{4YE ZN=inסfkr~RݤD*צ4ГFk&%oVټ6-uSMJ4ެymZN\jKѦП]_RMiٿDRMi?<7ՎDm)Ԧ4ПnGmjrٍV$+Cm)Ԧ4Гo*RMiٯv$oK٦6 GS4z^y&Rw?7&8xɮ H8z:\ơUlc٦ppv$ՖM GOlSG?'wφRMiFy3ހ!mKCm)Ԧ4'$*ՖM-=i|WjGCm)ԢiFO;3jGCm)Ԧ4wq64ޖMmZN3zv44ޖMmZN3zgYm)Tr mj47jGCm)Ԧ4?I]hh-eڴfWo@ِ6 Gx v$ՖM-+x[6hmѓmjrѓNۺx[6i9wjGCm)Ԧ4?hդDU44?LPդƛU6Ekӌ\MjhYeڴfFsx ˖i9q}{^PtN8z8]89]9aptz8_7#߉i/zZˡMU>|vn*e7 CuS9xW. H=jvM@BpVmk-47LXx޻i9 s{mM@B~Xx޻i9 걢^wrw7mU Ǽsw첛@;ͻhfݴzrtz{MW짛@OfӬ4h9 ghf?ݴy-tw윛á:Sf$~:hSfܴzi!fuAi?ww윛@xnC;evMi͝UZR4)snZN=hߏ97-~޵ aA@BQBxOi9 g{h'fܴzr=rz8T/쑛ЏCzGM C5O9xͦ H=:ZeOly#~={r-oq eWu;}](& !r8C](Ҧ4c3r~gz{piVzwJ֦4w3ZG4ޅ+mZN=h4IޔjrM$xo^i9 <77NY)zUr]Gޅ+-#}ޔjr}lr'ݩD+;ئ4ПOS5X@?Irޔj!gWIޔjr1ou9xʮ HG4ޅ+mZNYz47E ZN>r.]i!N#Bٕ6-VwJá eW$-zC]ȞQx_χ3(9ZG`OɞJ?aA@BPA#glB/{t7{DMiphsd'ٴz r=cz{Toh#g-~. 6 Ǽx7i9 - ƻAvMi͝U]@4 ;lZN=in4 MzD4' =crMxȞi9 . 6 WenarϮfAi]@ ;lBv 36-4wD="{Ʀ4П =crϲTwY#:IrٽA#glByaw$@yc;GvM@BPoPk)[B?}zG;Fr$y̺Z?.PoPk/r(=Y6M@BǡX;f-H=Y6E`^&&of6-Vlccރ7ln@?vjն ǼD,ۢiǼծm+& !N[v%o[6-Vc7lXЏCvX(ZSz8T7lBC9x{v H=^wT7lB@f#o:ل6-~~vX%Mz{7وƛN6Ek@yKM@BϮVD%ͦ4ПVD%ͦ4ПVfh7AiB9x{vzD%ͦ4cj+rfz8T[l7ЏCvX%Mz8@{3>ON=wPk'$~z_ϭOtn~=_}vX"Gpt~  '6 GOr}bppP}brѓN.!=6-=ijY"Grѓ64ClZN3z)ӌuE4YlZN3zxgD&Ϧ4'͝}fuJAiFo4J4ޛWmZN3Wq$xo^i9ORՓD){զ4?|ww`ӌ'՝iVNJf_>}mr#%tw`?L ݩD+;ئ4?ww`ӌ͍UiVfx-tw`Cu*9x H8z:Tw`Cu*9x H8z8tjձ Gn<؟h@ِEx_cGvX$7$ۡt>"'_6 G?'44OlZN3zܸVt/ӌtiO-=^ 1#;"0s; :hsd'ٴfzGd$=] =crѓN4GDZN3zrnaP^l^4lZN3ӟo{x>i9Is/To-|/M3~wx7i9>|/6 GOr pY>2~r}`4|/6 GOr}`pt|/6 G"^ueu;F7j];qx_χ1\ "yr(={2Pk(;B? a5linֵhQdشzh$ D"Ǧ4ЃFcrAshVvzܿ34>lZN=ho*d6-'UD4TlZN=ho*d6-~hLa5h2A@B^ bD&[Ϧ4Ѓ5 l=@#o5z6-'U-F4jlZN2j*dП'LDM%̦4Пň[MMi?!xD (Ҧ4P6Mi?;7xf5hHAi?hݎDm)Ԧ4ϻۑ-e$Վm)& !pCukN8tjDz]wztwoWnWuWkz>??8xFz8TkCǡACu6lN=_6E`áZe$^:i6x˖i9 es$~]j[Ƃ޹VJ4޶-Zz[IޠamBy4jL krAs+Wc7lX@;_MV4Ѓ]jWml4jWmlrM+x6i9 gnWmlrAspGiV3k71x3hm~RD,ۦ4ПD,ۦ4J޶mByojWMV4ϼݘ *"0BPIޠamBjLr kzdJ/?z#ܭ? 7#O7 C%W9xͤ H=*l&M@Bp/WLś@;RnӬ8h9 i+r&Mi?<7E 94JĢ zrAsnT%bxBi9 *7Jȑ@vn:r&Mi?{t"'LЛ@xn*r&Mi}\9xT H5SnӬ8h9 3o'W9xͤ H;h ;& *?^4^o=4|}9H=[)rPb& !ПCs9ԺZ(rΒfz8T)á[d$%"& !V_>$ ;& !r+;@vMixhdGشzr\ql+GBr|z8TgܛПF;owMi?{v6g@vn:7僖@?r|z{#]W6g@x+ƳzfMi?<7E>s4ks|;\?H=*s}M@BǡzGT\vh=RJeD"A_χr9xˬ H=*{XfM@BPK2mB?aejA@Bp/iUNu֦Vgjá<_e$*& !|4+EV ZN=_A}&mMṩL'x7-~^ -s& !giܖnr^ ӚfuAi9M2-#Y,& !g?^,Ymr~f%HR+i-CP>Bީ$UZCǡ?z~g֥UEGE?G;jrڡ?㵖åCvX9&s')ۡt"1s6 GO-r9gpp,+Dv E$& S3xɜi99o9xɜ H8z:Tg.CvXy#Hp+/Dy#Ȧ4缕/y#& PA!2cl]ЙA4!2clZN3zۙV${#sU#ӌVfg?Aܘ24?=`D&Ϧ4ώڡ}dptOPk9ԧUTC}:%ZuY}O=^k9\zJ0?[؟H4xϚZ?'Cy#'pVވ<$=*_FE`Ce9xȌ H8z:Tfg#ӌhn|SYiV6fm*ƳIfEkӌTn9ӌuG4y2mZN3zO:sLM@8M2Od4Ǽ[9&s"0|;3OfMiFz+3OfMiFߩVʈrrt>Z,d ѺJOJr)lj.=3??M+|s9!p.'ZrZVc@+t׿P kz>?pzG5Fۡp*ZO H=j7﮹֧zr(8nkw7H=jnB!;fávH9;jW=^k9^G}iorIsϊw}7-~~r5wM@B~8wMi?/;w/>e˵náf9^{& !{s;: !pSN{z8)Isk-ҏCv=áv89;"0BP;|qz8Ԯ%r$wܹ6 ývY;S\Ai'͍v"Δ;עi;|gʝkqx;z\׾J+c?q_1k]ϗ8U^Ϫz.96A8Tx+Jo+ WM@Bu_ H(=+8+b\1қ "sPzsx]WļbnJo+ WM@BuU_* H(=+8+W\قқ+¡*AS [pxu_ʶ H(==vkJo{Wp{Yr$!H(=jQZE<< C]WSvh8ֻ> ~ѺZzyU$. H8ֻ> A@B;pu[yqBJ`pJXp$u_WW6Pqe'ޓ}d<^ww߾n7X擃'= H8tfk^쪒W'Pk9TJUaz8uD~]Ne<=^k9~:뺒םGzz8Ի\ϫ_wCPr9> ЏCa'=Wۡp4"ZU C*lBJ#rV^wz=i'ޓ]W_χ?P9;&Qxۡpl!Z|{ nEkZ6 C*,#FPk׭8!pםM@BǡB;ZGu+;ZˡpםE`árw}^J?￞ϬKQ}e%vu*yUкZPk9ήw& !pw]Wh-árw}^6 ~zO{֯ ZCPA9{2߳áރrdg+[Zˡ;y;`|jO^]Ͽt'^mj׻֟H}zn߶_ ZWr(8jWBzu_mj\F=%qq};BVj?n'}]~|?\J᯵|zv~௅|ԕN_qpO*~k9Of'?M@ẮC]gtJ7r+pP!9u`|ZÕ ơPYBHơPCHKWk~ߞT'^zx/>׿޿=j#('׵qj#(Pqo;s>sPk|G9!P#'X让#'Vx_χ0NzG=ljF9ԺZ?|~hpB?>B}9_||XCôC#x?7KPM#Wgz֟{skj#ԵSЏC] ߾?7qеSޑx??u^mrW_"-xZˡpksϗZie<^Sߞ_÷ޟw̺ 9By_K\q(_)~rS?~Ͽ^o6_#znpɟίÇxɿ֓]/gx#??'g8c_gX|}O{;)~=~.6S~q/Uy9ZsZkz?>?So-K뙻mky=W1{}q)o-ׯEُQkz߯+؟$3Ǿz냆9l:%c='tk.1}$YOk:%9zǻ:'ײ3Sמz;k8z3Ǿ:6~qFk8ױ};t kTǾz6ձ3F<~5 ѲxGkӳ̣Bc(^eEU^>vfcײ]̱_9s'r8ձmϮ]K?RǾ8ұϮ}uRǾ<;Ƕuw}-/1v}zsF_oyZ]"Iw_Ǯ|ͱ?e:%c_/h%c_/yZK<.;^sGisrصg_e]ǾvyZKc_#Zٯmj}Ա/صg_{ k.1}Fukg.s ϱcײ}]rMǾ}ϱx~QSǮe?QLUB8_>vqWc_K5 {;kszѲ+t?Oͣw_]~Ϋ"k. ,:v-u+Ẋk.1}ptl{ū^Ա/1}]tukg`^}lWv׈qgsk;+59vG̣RǾ8̱e?xw]9v]?->ٵ#k>:(gN}-k+ѱ3F<Ǯ7S[5btkc_۔&G}qk_ұ}0{9ksz3<{W]bz3ފwr׈:~_^'Wzz?~ ROZRq~Wu Lb.}ZW5$_~-鵝'~m :ӯ/kIl^:Ru&zmRx-ϛ.:xNzZ/j :ӯN/kIlv(Z鿟^/kĨ}cK}Ժ?w9u?(kzu݉PZWןk-W^"xmp :\e'DZG%:/Z%A_;`]KRFpA]?eӸnInu _S㒻'9 :뺺/O>͠2kk\z?$7q *%xOr3xZGx瓜Wq^g`Or3ASF' -b3䓜WG^Ҵu\r{'oϬKüiz>kT;>&CW]`!p M@BPW@91á.rKb^27 ú&53H="((Es!pWM@BPA9e1/árb^77 ú0ƅ3H=J(2s!pKҘM@BXjz#>z+ZˡYY̺x?H^߬BCPVW zr(=*ʡ:38lB1;H0ЏC_a];z8\~}& !rx5?ԿQ+6-4/j}B4o侲i9 s{hoľ$OW6 Cr}#M@BP|}ez8>!7r_$~zhoľ$OW6 Cu9ZGΗ;BXI^Baz8^'ro$~C{áj-J$_V8ZGW_}k-cD-?"Auzֿ[} rD O :=^vh=*B&M@BP@2AlB?Qۡ:3Nf'9$3"0BPCA2lBr\cz8T6gЏCgvXY!Dz8T6gCe9xV, H=*BfM@BP@2KlB? aeA@BP@2K,#sw=Kh-ҏCzv%}ֺZW֯C6춛|}xz8Ԯ's}Xk9~zOjGvIۡp=IG H=jOQmBړ{Taá$9{& !riF_M@f^'roܴsSh|}trM=5MiWfr=5M@BǡvX{jA@BP]SAN=jڹoB?KڵcW6.ZCP|]}z8.-ߵsW$;fүOڱwߩ+f\#X*]]v(=jڹoKڵcWﮬk-KOڥvG?>]4gشf|4iar/O6 Gx{o"--_42-,Zf8wLCr];wM@ӡvi9& _A7#-+wxȴhm/O6 GOTBg28PPkGapp+D /y#'ۡw|J 3G~=ϿQ/y#& PB72lPk)`&& V$8KD`D&Ϧ4缕J)%S& PDR2lg??~߹O)b6-ϷSIӬ)&h9M'xiji9OMxti9OM%#xR$i9Is'W2'LRӌN;O _ DI)Ԧ4?eDZCPGy2mw:ơ:BK)<^k9\z8'2Of"O]Z_)?Sq̓hz8TƑgDá2i9 gh<e~ڴsSyH42?mZN:GПC|i4П];QMiٿ>ZLxМz8\ZCuLЏCgvX/2`z8Tg̀Ce:9x x}7Z3ru)wZ>l"#egru;)2S& !pL'x=ej-ը3h+㵖Cǡsg95skZp?qpqsxr(8t.mS3zRֺZT3);!p+O™7 CY9x H8tmn# ý,+Ɠp&Ek@;ɲh< gR޴zJr$Iyz8TL>)?{_sצY6or~fE6i?{wL@xn*͊mMi?<7fE64ПNMmߠ4ПNtw4Ѓ\xΤi9 sE+O™7 C%_9xΤ H8tm#) CR9xNIYvh=[9ZG`Τ#緟Ϸ>-̱ZֿG_?Cu̱ZˡйVN$K95s& !p\*ϩc7 ýO+Ê3mfMiǼa63& !N 4+F ZN +ϴy7-TǛ@?λrxz{#?wǛ@?vmi# CR9xN H=*kgfM@B^5E34П;kƳgfMi?;75feȦAiBG9x̼ H==6h<{f6ݴBRxNi9 2hLN=*%SsM@BX ĿRdz?gPL噪pp +i#Tqt28x̻pt28x̻ H8q ;4i3nZN3zx'WϿ7-=id+fAiF;43/ZfʻC74'ǯkߟn7ƳrfMiFo47ƳrfMiF-#w-ṩ=43/ZfV7 Gz=43oZN3z{q\{p?ѢY:rwr^3+sg֦V{h~ďWKu)Ed G{U8x H8to Cz9x H=*{&M@BP[3oBJr |z9|.#-4wRh%jxi9 hyTwqU'휔yTUBo cϧz5w֕Y4>^_owk{'[|Yܧ}US'߮&ᘔ,uW*}VdԜSe7ȃ"5Q'7-ArD-sߴy 5QO9o"~O>qQwӬiai 93Rh| |Ӳ/EvN ?šc"Ͻ𙨚ESsN՛ )Y4>5Ti wEvN cdU9M@BBO]aM1U G|U'᜔7 ,s޴y\|F_4>5Ti 5%O9Uo"?zJ kj:H<*tT֪PT] xUPs*\sxUS-||Mլ5*yLމg~֝*?><ǟZ Ϥ?|O3puW<+C.hɳgM& /gqIٴf9G24BJLj^$MUAn&o^ԽfLGfYTpK$<+<' m鄓g {bz& Y;TM7M 'O*磊ñ~=_? n@iH`ZBBOWX$D^n#34n@iH *PҦe7_2Ѹ!mZv cƝ#dӲM;F,' ZvNT="=c!P. ȣB~& !|^h|Oش3O@,7wZvݾiAân; aӲAsqK4 + aӲM{C,Zv='_k;Jp Z)FUm[icuI׺*( >.6*T}T](]i + Wou](]iӲAs.Ѹ7WmZvw_Εh6-A4Dni Th6-A~ί_> Hi-A~mRwtM@BﮟTqJ۴٢J4X` 7wS+lӲXhO ˛«ȣ%ihj-ZbZw<&N׋{Ep;IzI|MM@ɳc S!bpP . gc CvhɳA& ɝƍ aӲɳA& ɧ20e77JCFưhɓ(74Mn&cS~Z& ~g_=)?-`Z7'͉иslZvЎ!wtMn'́%c4rpe7ȃиslZv)I˦e7ȃѸlZvC1T#dy{bPM#$h w{C4$ }s,qH'ٴ}S>"Mn9#q?Iٴ3ZH,?  Zvݕ}D4'/ w~mwLΦe7ȃиˤlZvi wgY>kOhu'X&wtMnDni we{h7-A4'X^4 ?g:UpK\F<*u[XZ{֪PyT(RM@BUAzw֕ń1j{?顭*l KK_㵮 ʣBy*i .]aLNyT(QM@BU.hO_6-A4wD~i VhO_6-A4wfIKвAs7#q?IٴyМEhO_6-A~^ΑN H<*7{Dz& !أ'syyC,Zv֎!wtMn;1DΑNi N3r$!Wtﲶ{2o\?yVx,u*nNK niuR?Q,U ' NִE`g94niL4'иnZv3yҜcY&fFs7 '~O\1ϡqMSݴf1ϩ& H8yT(TeaA@so2sZ7~cCvi/ɡqLܴf974niLSvƍ<}ӲLw/ye7mM<=h w6pѸ/Zy~' \4ni웖 w]nye7MPmq#Ocߴmi-Ano[{n m]7 G2pUp#Oc$DvXçҷ~=ݗUwtM@BQHܑҡ6 9]ayOxQyUաqI/ڴy[ 2:ȣߓov]&]gӲAs9qI/ڴyDji=EAn{sDޓ^i 9ѸmZvSRиmZvqӞ#Mn79qI/ڴ=i-AqI/ڴ]T]&]gy{C.i w3Zheu6-A4*2:AncEeu6 GrUpI$Dꎣ*Z[M9!PwUBTM@BBu+rk{ }coT)5US+,[ " WD㶔6hoّ*-Mm"~CuhܖҦ6-AP& !S-+, "=z[CVֳhAs!e1qIٴyҜ[MZϦe7ȃI[hjz6-Ajie5a=An'Ѹդ,ZyМxHYhjz6-A(n[MZϦe7_7e1qIٴyߔ4Ͳe7ȃĊbDVֳh﮵mv$eKaSAn&O㱣q[JZgC㶔6iIs~ RԦe7'7Άm)mjӲ۾9;Ͳe7'͉=v44nKiSֺ3Uv44nKiSLg2 H8sHи-MmZv3#H4˖¦L4wچm)mjZ77zhhܖҦ6-啰hhܖҦ6-V&54nVi^Lr*20e77eRCfhɓиmZv3y_T{`=2= ' ].*lNKUݴп /Ur~<箺]~=_'Pn 鲛ȣB*n" 妪ச. H*Lyhk{7-A4ئY^^޻ Ho{mze7ȃ3屢qMݴyrSUpWM$Drp٠e7ȃļME㮚.i 7U3ty{b团qL?ݴyМth?O7-Anߴo6Ӡe7ϱ 霛ȣB9*Ssn"k9h)97-Ag!ENιi wvȦYN})wtMn9e9h)97-A4#Ɲ2sӲU^ 鑛GM<1<2h wi{h#7-A~~{*'Gn" 兪 H<*<ޛ hiNTh DT~N#~=?_[\Z& !Sݧ+, WZ榵*T}T](]i!pC.i |Fo6 Gw1E.i 94˅• ό](]iZ7ȃʓDޔ^i a/g-пҟE -'T! WM%>_¿n7Z~_?v_K-=6 ' ]aBDpP~  W߆BĦe7'͉K"cӲɓWwtMn&o4h-GeHZ“gUp?IYF8p q?Iٴf9ѸlZv3}S>"Mn&c+,' NT9h9Iu3y[ޠ g'+o{DzƦe7'͉7="=cӲc tA@ɳB~"0_>=ߋMn&|/6-By?}`Ӳ_fAn&yoAân&I~& YfvU>gM@sn 3e72zo5-<~~"0ɳB~& Y{Uy?}`pPwXT׽ PPyTκB&x] eF|&n*T{2S( m]aErBUJCFƱi 912ѸQqlZvVv4˶Ƃ ?1T"0B1 * kӲIseLqJڴy\Vئe7ȃQU,  ZvݾiVآn7eWqJ۴J4n[ic gh6-A&4܂ L,mZ7]Dfi siRM@B'ʮD㶕6i oSWX$DʘT * k!PƤ nPiXc.)u7b~=_NNWXSoLA@BQ&WUI6'M@BQ&WUI6'M@BUl)W4>Ti 9SSh|ͩxӲAs2D4kB :h w'be7_ErNЛ Q5'䜠7-A>j"O9AoZvݾ鉸iքtвErNЛ oj"O9AoZv{Uzs*$DSh|ͩxӲߞ\šdc "JU4>椻i w{\ԛSe7]{O9oZv!i sdDքtyTX|B zyT{Pkm3~N<*= UPYQˢk [3͓1nj,@#u *D >!3]PS*ԛS& !p6ה+zs*޴y{m5TyМL5Ƨޜu椻 HݱSh|ͩxӲ!=Ƨޜ7-A~~O]aM1 +zs*^ w{\ԛSe7]zO9oZv<\U'ٜt7 =v5Ƥ$DjrUds]FTO| JS${z￟ïlU93zZZ<*{]׽suɳBMlN 7554>TiIs]ԛSe7ޯU|Iwp{'צYlLAn&{rO9nZv3yFUӜ^7 ' 5aO9nN{d S4>qDiIsم0fM1-ќ,NszݴfLL5ƧӜ^7-+Qte7*.55Tf9yodԜSn&O#Z4>aiIssMߢiaioMɪSsN՛|%,s޴f{YSsLAn&yZ4>ah_>S=Q'7-<̞U未7 'kO9oZv3ynWXo>k* ϧ,BN9;Y&jU ;'M@ɣBO?w;<^#7\tkyTiT|:uyTiT|:uyUl$e7ȃClN I&צYlLAn7='ٜt7-AU4>椻i 9krO9nZvj{UNsz$Ds.5Ƥߓh|IwӲ/MM7Mn{+zs*޴92{rUds$D~*4tkyT S|̉t~O4MnG5aO9n" {Sgy3lWX3m̼A@BQfXU6gM@BQyz*Z[̜3֪PPRB{ .tWwZwc k ;ȉg^׉biT4>i 9-4Mn&LU3'M@B;M&ΘH w,)8s"] &Lęe7_0EgN ojO9nZvh/MM4Mn3ZOgNȣBMgN]#zm5'W$nӨ*t& !{&W$e7ȣߚ\U'ٜt7 =v5Ƥ$DjrUds]F<*ԻPkmxN<*< 8,*T~*oB{ [SmũPPߟ;ܵDRbo~iST*|syTOB*l" .*Z[UVOv%&H<*w{Hz& !P. ȣB*[{l" ྐ> HT虿+,G" gS{qHGشyМCi 5ǫ9o" 59o"?z k<H<* >S̽ H1h||ӲўEz oj69oZv =ow5|$DL5g7-Anl.sߴ}Ssh|ϹӲq, >ܿ HT9+> !T*pϩ\kU\i Bi-MnsZWXs[uA@BQf/UY,gE`=={g6-AH4>)$峚֢~?+wjΩCxBUA ~^;J[e'u}umAw$U ZWΣB-]a19$uW<+ܢ >䜳 H8yVE|9gpP*l& Qgf] W瘜s6-C䌱 H8MUSNLio-]a11 '#yr&Z/~8'gMn&Ͻ_S*S9Z“GzgGz[)&BY U)#罩y֪yM'|)D#01 WpVO"wu+xyT+*:ȣB]eUyU$Dʩ ~%+& !p6ԕS4~%+e7ȃZPWΦYWҸ-A~~_ Uy$DnS4~%+e7_rƯyݴyr_IJ HTaWXWǸz G©_ H<*2ZD E[O~=^'pnU+^^˲xBB_º1H*|[phWEk ~j ~u̫& !PUQ^ꩵ*T~*5+kL\9pW(WֺA5EנM@BQ׍l" uPnue׉q] " uPnue!P UF^W6 GN_7Rk r]|yrBQ\Nj[+_^ Ϗ)N访\ϧZ߯'Q^ښFBQUj 姺rm" u5UշUVʣB]MUy$D~*++f\QȣB]!UyE$D ~+j*T^|V4~uͫe7ȃgf]]}5UwW^8ԛ *-jU}Ӳ/M]EW6-Anտi4Bв쫿*4& !P^ 8<ȣBF#ȣBF#Oy4myGÎ*`@^˵ G6_Z H<*ԵYZM@BB_9º֯ZwΣB]9Uy-VʣB] Uy$D~*++^\ȣB]TxyE\F<*UK*WM@BQDWrm" gWƯLyڴyМh֕)\AnW"U+S^" uW?Y߯+ZBq{zo|gZ+Zf*UeT὞ O*]mTg HUxQψy$T3TXg8c 3 *1Ϙ[gM@B ~˳& V}B?smPyVx٩mo'hwjTxV}B?smPyQ&nmSuu3; * Ug?h: *WYayTW*> ȣBU_yV$D~*tu^NyTW*> ~Ѻ+t~*> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 113 0 obj << /Length 2500 /Filter /FlateDecode >> stream xڍY[~_a2֚ԽoYti,PoMdY 4읝+ErZ <CGS-m&I"/yV6niR-WIN7kWQ`ma{Ǯ#~!^2w+r}{H~l9:]|UzaM{`^-s^LDmZ%K^N&WOeY@v ˚$n=ɡ\pڨ{2zÉ}L̚442Nw2Z8rآn`8~D]Xa= v +C[@}(:Y5^!O(jNlӵL25tm_&0DJI˘$yZ]!;{8k@|R^iȎD65< >o=aAY\dASw3^P^W?߹;: v$ 37DuHZWt8尢aw :4LRF)\vTƣs8=g59v"+~'Qpc%I]es͎67-Rf·>{ o%*"qT ,IG!;PR]0-iťMBGpR%L6,P&wt޶JaٯS9-9[] Ҭ2NjFd) 33qjS]XE-=e9c'|\JR ;Zx.ͪɤ#tPPVF 7THn"7Қhǚǫ,0ܬwԲX*gJ/tU>RFE@=,EjMlJh./yӢH ^iHI\t͕'I9GZ(%U'@N"1yʬ!R3y4(n* \R>~)p"^anc3^iqRgq6.1dqsЃ'WGq(": B4a@@kY~An0pI5I:?6ضcW ZFp8~ qr1ъJ˿89̿sIYtqPk3$D9p75ixx+ p\v$„C^sk B?ꍸ['U5|SゴwAzV">f:N}R2-=ϳ{9`}T~d;IA5Zft2o0f Ts;^sptԄ#rgǑZY:~ (n¶\"p\cbNe?̨$O?'H2-=CY%8b2Z3[%ȤݿȺqNxO8Apal~[J6݆% FO. 8psƯ654y] -"&:m:O98~ᘻԀ=n2k$R1a?S:qA`dž1ӸBevaAGs2.9]mP>2E?v8F~ֲM-1*UѝbpR}oOr{pvw{_6@Q_;ZvRW/fM(./N5;~p!mÓW3?wE |w7!"dg&gl"꛻P|NO}IzDӍȁ*?ܻXև :u5|}?.^IS}rI#j@J+4xY^_q-gUuxz1+Lο]RNmpsrro y qSgͪG?bӊێ?d~]%{"Ɏ28-—ITeE^qRgIImpWXtkDQJNWi. F;0g_~Pln-~ȿЍۘ~to6@mׁ'jΰ-cxiѶ+)K9ѠB|ꀅ*NrIC(Ce endstream endobj 108 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-showsmth.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 115 0 R /BBox [0 0 576 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 116 0 R>> /ExtGState << >>/ColorSpace << /sRGB 117 0 R >>>> /Length 49449 /Filter /FlateDecode >> stream xK#k7߿@{T-@ HlADZu&Dıԙ ,Vb%ꗧO_7=__O~=^.xW}Vاz8xO?yߟ{,?}yyyƓx^8xy?/8>{}}INٯ+r']~{'};ep۴_^{ocۋt||M<~kka?~Eگ_vw_oOGGsW|噵밟}~^PG^Ļmx޵밟~ ?飯{/SKUAVsG|;.٬NVg<8ܵb}<~n{gy??o\ux(ߞ?~պ}=ue qa-]8g:g'f%aq ;g>z>痺ޏc>xŢjZ]P]ص\+Nj4kk9kŻv۽vγu>Ny8}lzvmm>6}8Kxm뷿fO]כ߳qO#^>Kkެ]l4^XxfmymԲr%bd,v z TQs26jYx׸Z\X^.͜l7?g=GO<857od?x]}DҚk޽Ib^t^tá.q:/{' !Wr;ؕW~z8<zqoB=zwB}͵]q0z8e7ze$h:FЯC_`z/|ۡy ס{${u?^&#~Ӈ~QI-׻nN4~]ݳ^?C]W{N@Bm~y?owf'hbZV;8ΐ;z>M:7i5o/S C㠻H2q;~sxV>BڗAnj@CEqY;mJ8F_>{W+q?SY]fLڵںlZ=;j-;mMcMgu]sUw~N흽ĹS;-4o˦~*cgil':hY 9.=4knR {.;N$ĹS; _NǽJh_ȾᴬkgP=iY g3z8|=Сg1J:^>޿Cyۡ--v=Fێ@{MR~yb}?Bǎ;op_;;Ӳգ%vUggz.;-Y=ic]ݍsvZVBCc;wAjVsvu8wk#_<j]ݍsvZVz[{8^{}< _:n_ ߎ'~:|4ﴬ=3kzX:؟(!ۭn-Ӳ_ϟ|Ex˲8Pǽ#B=dxV8yX' !I~>|{L=y]dI33VkW쵵cz?5grx>7Tw,Me@=,f}ݟ|У3٢h贬k}Ʀ^4hY ^C2{Ӳ\~7?: wk@vi@CqО= H=^3=W⠱=/hY ~= MtZ _ǭfաqZV A}' !ݳ{sq;~b篟}?~]o}xojvdLՂ{mޯ͙\+c7V< {D{qj%Jٰ͉{h/^}廟A@BQ\thf5Zz[tfuBthfuZVW{oX/^zМ[}zhog_wZVצhξkM馱}=hY {t٫áz8h/^$~zvo>&2 (!P_x}wߟϯx}OvҾvk[$1>ޓ: ׈gm̙\#޵\CSgd #&ǙGhOe,wϯ7E@ge- K!ӲՓ]-T eAjV\4328-Yrh⴬f_Cc9#rHв_g:W,!F+լ~i:+fN@ճ304"[-YݵrhbRWXCÑ+AsF' PZC+HRʤC'o2u><~á_H%OSoϯsW~9+ ښ⴬};ce$A@BQch4sd&1Zkw瑡|iY d,YiY {.v^AX)%AR)' !wڡgLSs<zq/_x h>;Ir|޸huϮg9kXhuϮg9kĻvZReLw&׈wS bcshia8@+66HϘFFL3*3gH*FL}h~|Zf28h&$\{"7Ul˄լ4gneLh\72: WOu9/spr^e5xuuyլ~qМ9 Hz{bF\4"-Y3nh4etZVzA[f;' Y,E Z\742Tz[wơg&LJz8||qWx?[;|qv(=]Ǘ{iҲ#}x^h>k[*fy{C+Zښ9V͡IsQϧV͡9SQ/Zs*7'ڪYm\?^z=eф YY3Q'ф iYIm-A%H`AjV38h$\sh˴洬fυN_Mci,ZвՓ=ȥ4ih_۝& &LvNjV/4'_%.hYIs[K-J5'o.LNjV=S8h$\=:%HvA@ӡ8hrd$\={PdzgfG%\=8Pw- Hu;~3gD}sqqsWqoָ9kk>hZֶ݁|hѝɵ]B^9kų=C^shDha8sO`x:蜬bC2nV״iPݕzz"uM{@3*5HAjk8~˻K0J5_IuM@gfqдi HW]Xڋ4z 'VM{@mt742 :-'NwMci/`вAsh4贬zМy習h2贬zМXi,EF ZV!ASdL#BPq4EftB9;<~]m#T5y 4grx`Wk[γZ]֜)Pkų{Cs@d +<πFV 3Y_x,a<7k^9429-4'Ukw@3Ϸ·|h紬zМIF`fEe5_;o:5eȊAjks"V͂V;ȉd[oh4 fVtZV}u_XKfh̬hR vwУ3ٹh紬zМIƲ`dŠe5o^r=K]:|e5'͙\X9nh4esZVz\4"-Y=ھG8u+H2dCݵ:88 WOz{~:$\=b{w)2>|ĻoTkM{Rj19Ns84zn4J0brLph.ha8*gBό2VM3w%+&LZVO3WMլ4g^Ŧ2hYDڮ843]:-YLMwZlK.լ^hsP5XeYY 9iY 9%+m5HgAjIP㠉*z{kiY |Ofqh,}E: ZVshtfR ׮N[C+әӲgWe5Ѓw*m LgF+@M2Mj䜖@hR$紬:%HrA@Bpܣ[:f̊J=PdzqWpЏQ}=??׼sWy;Nxmf>[kW5qz5grx־Yiy)YÊcc)39kŨD8=%kX18iq9YŊArxl9$53*V=h$ʖCY3ӲAsgX֌,zҜX9th4fn5ZMС\iY 9^}С\iY 9^}Ц\5hY NʡC4sӲAsSCFsiVe5_:6ȭAjԝ&̭Nj&̭NjͅMc62nвf28h͌kB&gs䷧5r߷p-Y>sgrx>*55rJ)5xkkk|fZ1jց94y:3Jְbrvxl,jhd欬zМJFW&3e5ͤv4i+H==shʴ崬zҜmFT-e5Ѓ;֕Te5N88 rm況xܯ3UݷG#ȷg!Ϯm9kXw=ςLzmK{ݙ\#޵/дY(YÈqⷊn84y4J0brJ\h9YňIrK03j%'zi4fftZVzҜsSph,Ff ZVzymNS<2h&hR꯾6G^\͏/լksťiY:qȋCc1eв_|m*[.f̢NjVql453:-Yt^ˏ/ÑA3afF' ΋K1Ӳգʋ`1ep).g K"rqlBkŻv^[3's&׊gS"@sh"`a1 ͉5<._aYY 9s?hﴬzМY7Aj3{8hΞ$ګ=zhggOwZV=?ݣzve5}wg6!ڕ}whgvZV=hMc=;zzв/χF{jT?@gfq H:q^AJ& %uq8 !p8`C =upB?[ga=_>|u%u(Oe@ 3yhȼବLӀӲՓR}hGZVzҜy'HK J5ǹP}gpG^ᝀCuq];HgPuiYIsU^᝖լkS}hGZVMuniiYqfV^ᝀCuq>Hzj|ϯV?]10+xALWfZjʨezҬ=*{z8T;ٗЯCv^&H=w5N@BqN KNjvvOjQÂ@~qо}z{fR>34w/9-~K vu%kVV%káz8h/^$~&mF7LOsWYܬRk[?nkjq@zGW/1Vn0kwJ89F;Ive5o9:It !p1IB!z̙ FCve5_;s4u4AjW8hw$ ACv' !xEtMc!Gв!z8T7=ЯCݛ>^85q;~ϷރC~mzO}Xϖkcj9v OLmjq>ޝܜh?f}'oܟ|Cq~ Hz8th'oCq~ Hu8wh?~㴬f9sGX?~f_5C'{J5T_Sǜլgfv)Hz:T=ٛ@WO5㠽'{ptYkxV`G8f~_N_wc2GsӳNLcj8NLmjq>֜ܛd#fu 73qB ܮ_=chd1Zf9szh㴬f|N@áv>zAptzt Hz:~=$\=*C ۡr>^PzAui?3+U諺xժl͞\ zǓWzդJ:v.^]ovh==\wB:wA<םЯCY`gZzq;~:H<}~Sg'h:|<ůnO; /_;_dz>< oP=`xV=~C`qA@ыCqN@ыCqN@ӡvYWb^IJ8zq+cJ+pt}<+?:^yW艽@G/Cxky5Ǐcv.乢gáُ y8 GOc^>\seЋCAυ^qOO~?:_O鯗yo_rv߆{??_o3x_o?W8Ouqߟe~!'pg??oVQǯ_nui'oOox?v|ɿNP}8Dv q8nuL i1__EsY?O_{ۧǓ6V<2rO~|'_O~}'ړǯ? ۯsx?:[_}5dzm?N?7;'[}[oϽk {~3|[GsWuoVmx~k3VNY[Σ8\+lj3kyg9kŻ=k݇lq ׊~k 6gpk'-\ uzZ1]8qƕ'\+Ƶs\L__[qϰquL->0Ӭ-V\y ccy6vkųv_]vU3V u֖6js׊qrUmZ]j׭_ cB庍Zɵb}\\qU3VkׅkuW;kXPgmnVgrB]^׎\~U{#>kuW9k\qrUm]jm׭] sDžkuW8 ׈Bݵ庍ڜ5bPwmn6gpkꬭ׭_ sDžkuW9k<~q3y+~;~][:ԙ\+ ?kW9kX8gm90gpxֶ߮p׊qraZ1>NY[:\+޵Ýb}𳶜qu3Vk}i֮yڏ!ڏkL>.~mWu~ٴ/gm3gpkӬ-V\y }1vmٕZ1>.Y[YVi֖k+.Y[۸\+޵Bڝbwpn;px;!qϴׯm=]Wg kfms&׊wڼzm|3!5k^;:kXؼfmb3gpk׬-{Yt ڽyڶNZ1>6Y[\+5k^;9kŻvm^eӹ3Vk֖,v:u&׊yڲNgZ]W{t cce/NɵbyG>؁ccvp}(ѮmZ^Ǧro8&[}qXO㣩uKwwy݇}vsZx|@wh mԲcgG0s.7'ۨeen`d,ⱼl̜l[OsZlX^6h bl{=?:mԲcGs0s;.mԲcE9F-?},/} m\wym(ܜl?n6jY4hfNQs7gx@'nlxo!f{7}qj.oZ.}Sb7sZIǧܢEv:ǏCvT&&8hK˖gB=vzN@BסY;Xc$A{[>#BPlesBh.;qV & Cq>} H=lN@Bס[;Xn$A^6D#BP=neOtB^ !pN73Bjv/z8TЯCv-%}ۡp7K: _ǵס{iهzzC(KZn_q.] H=덃vN@Bס^;X.$A`vI' !p7K: z]лdq8VCvJ@zCvN@BQ:C5Ӳ`5oz8T7}á8hw$~uA@BPtfuB5uxV`>á8hw}ۡݴF B}+H>УwV~~{^=ux>?ǯŜ>ڿB;u~ֿ Cqz8TߝЏÙ<}hgpZVL.ߓá8h$ՃA{rl' !='GB=9{!8NC;Ӳ`;{z8Tߍ@Cq H=_N@Bסv^AH&%կAwwMs<_`;{z8?uq`У;vC)[m /Oðڿ; WO_N@á8X$\:Go_լzgw~_oI@;(pu Hzhto_լVovto_լ}gpFrA䆠e5GAsA' pu\ Hz8TqaND &GXMLC%q$Hz:Ic4yd21!\=~倷]? 27h2?~޹XЯCv\!H=F ЏùR9`h4dnpZV=0 278 sCzg~e iY r8h.$~: A@BP}g0!U09`h4dnpZV۽GBz$C sJ5У㠹 sz8TЯCv\!H=* N@BP9`4dnpBrA !p8CM&%"Ic|迎_Z{.#z8TMLЯC'v$H8\24<28-4' L1NjI%)SLz8TML@ +~۞۟+{J%C)%SӲQoqД) H3hLXS8hJ$; fh4dqZV۩,D BzdJ0C&ӲQo%qD H:tiK4xá8hcB=*&L.EtA0<gu+HmA@BP)l4ej3!ASY6' !),Ej B?R]ThAs&U Meڜ@?OD؆F\&43Tzy>43;-Y=iFyVrIjVO[#??o-F3|f|e5_>3pp# Wl>43Tz|>43;-Y}a}Xޏy hYehyh_'F~NjV,04:ബfj;߷ggFgլ,0:$\=zh bv5 9;8 WOAgǯ#C nr:Q3״r ca<^Ǐv}wj>r:1!\=j>r:q5mN98 W6N_sKMCGN'NjVOKOCGN'NjVO3Դ46}tf93Դ14:}t⴬f93Դ14:}t⴬f93/ԴQ4>}tfB87~kHFNVY̴1:}t$\=j>r:qϷ#e5vϴ14:}t⴬f/j>r:qZVkLMcGL'AjV/;Tմ14:}t⴬fzLCGN'NjVv# Y^FNVY=ict Hz86}t$\=j>r:1!\=j>r:q5mN98 W\^m{/9~<{{/렳AN@BP8luYl6!H=*ߏ@sBѼӲAsf^|4cZV=h F~F+@3BѼӲAyrhyiY 91/T/>$-4߷~|;A|eit6iY C38lk~McAAjz;ߏ@u98-.5i,<K;ѼJ5_nF~Nj38hy H==@вy?' !p|?spB~A@BP~4<$IQH<^ǏC=3BJi<Ӻz8TM֝ЯCv4i=H8\z/bh4gZwZV=hN|vhϴzМI󕾛xe5ЃL=43;-4h&}LNj͙4_h<{ZOZV=h?ϏWiVދM֕V4?O|/&LNjTRM읖@O?:7@,T?4s pZV+|Rh)iY IMc)?e5_SFS~NNjI)?' !R¤S@вAs=щ 'jW'qЉ '' !@;DCz8uz~o$bb0!~lO?;&>_>x?ϓ6$\=jrbp5N918 W&_sEMCAN F+լ4ޭrbpZVz\xil"!hYIb `ht"ȉhՓDQDӲՓϳLCAN NjVO3&'e5'ϭ oN[14:ബfK3~4$\>AuoK1-YsSh)h_N&լ^?XS@вzbfT?4s 0Zf{N,5 N918-Y<DӲ_,34M11-Y=ieitziY걿0:=t$\=zZhb8wR_pL5-ރbe_赿^8ӅP8Ӆptiatz Hz86$\:\ydit"ȉiYIsщ 'e5'wL&լ4g&F'լ4g&F'լ4g&'լ4~,N91(V `t"ȉ Hz:TM98 W/hR~LAjVlT?4s pZVzO|Rh)iYe:1ToK1-YƪT?4s pZVzҜ*լZT4c ZVzҜdi4`R걣uM98 WN`)? P~4`Bz? UnS?=|=u  H=*sfN@Bס3w;X$~G43T=hοG43;-4g~Te =hY 9hόnR 9C<3ӲAj2hόzМ𕹋3ge5dq  H=*sfN@Bסst;X$?SB\hy>4V\iY Mc:rwв/탓Fsunj#&GNj?'GNj-&G7Aj=s8h$C*sfNjz;seA@Bp|yxJpװ8~wKC Ƿ H=2|%;r&hsx>#Ro !p>hT촬zМ-JK7SӲAs( HAjo.,LNjͅC7SӲAs4rSe5Г}ф Zi/6Ftme5_|m*i&LNjI`i:vz{SOFtme5ГlPyh4MgvZV=w?nD禱4i;hY 99JCi:ӶӲ/uICi:ӶӲ/IMci:vвAshdnR tzMәЯCv4i;H=8q @y%Azy' !p|>3; _#=C 2qĠoޯ^ۙZ1#P3/p:sL$\=j9b& ܰ:GaBu^sӲՓ{ CcsDAjVO%,9gTzҜsӲՓU KsDNjV/4'| MsIjVOwX#rpZVY`t6 Hz8,06$\=|s0!\A'>qtѼӲՓ{ Ccy?恠e5v_9Tk=hyiYKy?e5'~AjVOKX rvpZVz!5 9;8 WfÑA{&{x=*%HA@#~|=nR~|guw㬟|/\h>>g88 _6N]uCMGN'N@BP8Ӊuil$H8\yOgitiY 9ӉӲAs=#e5Ѓ,UӉӲAsQ-N98-4g~kMEӇO'Ij'͉Y#jtF'd@O,N598-~hfijb B\)fhtɩiY 9bFz@=0Ʀz@i)fhtɩiY 9134:㴬K)a&e5Ѓ{:KSMN=F+@{HO1SMN=N@Bסv& !p81Y:d.˹J $3ƣ!#g㜜|?Yjh9b& B'5u+ԔSB=c93z8Ԍ1:sL$~zh9b& B?WK4:sLbR ̑3ӲAs#fe5Ѓα4:sLbR 9s,98-4uљ#ge5Ѓj9|&IZV=h.34:sL⴬zҜYj9r&qZV̌6sL$ګ3̑3J5<љ#ge5_Cfh9b& ZVufљ#gj{f9r&qZV03̑3ӲAs_9b& ZV!=c98 C3G$N@Bסgv#f !d{c"ȉAg9~<{Y&ЯCO`AN <^z80:$5N918 _N`)? !pnJT?4s pZV=hєSӲAswX @ߝYM98-4gJC)?e5ЃjO>$-4gJC)?j'͉)Rh)iY _F'@?4R~LA@B话FS~NNjr_XM98-:i,z @/OM98-4giK1-4grb0ZCzrbpB=M11 [_}W49(!G>ǂߑ#﷚xoɇuмy Hz:|4gwz {Ky=J5'(Fzye5'(ze5',F+լ4翣43;-Y=iGei4gwZVz9Ex^_睖լ~i:sfN@_|+AjV|43TzҜG>_睖լڎ|h,GZVz9h^_着Cqy>Hz:GYN#'%\=xMoX;&|/ߣXrb0!5N918 CMAN N@BסS};Xʏ) H8\.h)iY 9]єSӲAs Cc)?e5ЃwAFS~NNj,@YS}x) iY 9͔JC)?j'͉ &щ 'e5_|mjrbpZVLoK1 tLM98-2~h4ബzҜ~bh,KєSӲ/uIC)?e5_J R~LAj(F'V~A'ЯCO`AL A@BP8D!p83u<+pəD ߬3ǽ!#g:|?Ugi9b& B1AgIáfqЙ#g' !3F;3Iz80:GaB8jn#rpZV=hNLE=741g-4gF爜3V4g>GVssӲAssd57 9g8-4={n(#|HZV=hN|熡9" e5㠳AN@Bסgv f !|EOQlJ5J<1[,04:ബKMcAAjg,04:`R CANjkg rvpZV=h.46Cz rvpBAgЯC`AA@BP8lzJ~H)"0ǏCh~8hrdoB=*&LN@BPI}4gwB{$ !p=3; sE4iiY 93[TnKփ@3E4iiY 93[TM֝@B]4='-4'fJCi<Ӻj5ͤq4i H==S%iY ^NMc=}в话ԇF{&{e5_j'&LNjMRoK샖@O>43;-R'>43;-4g%>hY uRM@C%q H:tRoK샀á8hrdoB=}qYGJ=RԿ^/HmvoZM은ÑA{&{' PI},GGR_M@WWUXM읖լVKփggf#}/LF+լ4gf#}/LNjVO3:hϴf93[i<{ZOZV3; WO#Q&LN@áR8XjT$\3ShjTmRD>RhjTf׮NCc9Ruв ͉}Ԝh_ە;%/LNjVORhjTfj+%HA@H렩9Spt8R:hjT$\=*%HA@f9hjT$\=OݑG0q)@3?ߟ?x? ry !p>3B㠹{령43;-~υY;q\=_' CeqL H=f'C9Ӳ`9uKhQoeqL Hb2pX&38h&lBy2h&촬z\?433;-~_`82sz8Tęá28h&$~:eA@Bx+~߷ߑX3jf]Or,F BJ㠉5!p:X3: C%qĚ H:tBmKhá8hbD$:AShT' !p.SWlKR@vM<У3Rh ͔괬zМHDP'ڤe5$qĚV z8TMRáR8h ͔$~:I%HA@B/:FShTe5УJ2K{ФΦ)5hY [o'qd H==L+I&LNjz;I%HA@BPIr4Yf4!$Ae&O' !I,YF BDtd[KiEf*Mm}|</e43er2Sd pdu̔pt82:hfL$\=*IA@=9(s\n:h$~:%Hh㴬L;X$`AM&#BP f4dqBR~oEM_ϟqy$H=*_#F á8h<$~:_#A@BPb4od1!~.#G@z+3fN@Bar@9x.ܐ$AsA' !p>3 8 _`>@z8To@Cq^Y H:tn߃<ӝF+@z_N@BPzgwBݯw !p~=ڿ; Cs:@2A(!w"y~=Rd{,x?{;ᮃ&LN@áA;XB$\=*&LN@ӡ8hB$\=:%HA@ӡ8hT$\=ˏvLN@կtr Hutodh4!dPZf8hB$\=*&LN@áA;XB$\=*&LN@8;= LNjVz;%HA@ӡ8hB$\=*&LN@áA;XB$\=*&LF C%qЄ Hz׷׊ ߎz`;{pt~=ڿկAww' GկAww#ӡ8h$\=_N@կr=; Hz:Tٳ_shf9;7AjVW{8h,`Bz:TߝCv=Hz:Tߍ@WO;pt~=ڿ; W`;{pt~=ڿ; WO: B WY-jEt_sx>ݢu H=vN@Bסi;Xw$MAkv_' !pn:]: ջoz8T7}@ CuqЎ H=덃vN@Bס^;X.$A`vI' !p7K: _z`]0dz8T%ЯCwvF{CPcdqBݻۦkEq=' !y;z8~>oB=j?swBAЏI@BP8z8~>$~z?ocBA@C{N@Bסv= !p|tz8Ԕ4u<+CeQB豷n{;VB?Ǐv}gAwܝmAwܝC`oA@ыC㠻oN@ыC㠻oN@avrw$ švq7wg%PыC㠻oN@ыC㠻oN@ӡwv7v švq7wg' švq7wg' лm;spP8pPwơgpt xVl$޵>3_;??ۅ&; GOmvܝuv8P8pP8ppݶ|9 H8zqvt H8zqvt H8z:n$8n;lB8zqvt H8z:n$8n;lB8zqvt H8zqvt H8z:w֡{+e_}{E;N)8Nz8>2侣J=jWrqBGAwЯC#`J;A@BP8辒z8>2$~ziWb BAtߙq(:UvǮ$~&Q}=?|΄x?|u+t]z8>2侣;Car}$ ![Cn/b(ul=W_u1^ ptu2<'_aZavykǏvh=qjj7' *v"(u?ٹH֭Gy{ ňr!d~/ODsz[_ExkETVyyǭ~lB8~ٯu9}> H:ԩ7}=+ϤB['BpzP׳qJuSozV8NupBgI(\?WI"g H:3L3$̌>SL: C=3T>N@Bס8u |(!x:wN@Bסvg* !?i?o7{u_ǯ㏧]?r~sK3˃Ǎr//x_a{|{~wˍg>}|/쓷n|BNc4k, c&=;k\&=9k\-frg:-|{Guvms׈}ߵY{p׈LEY._kwq9k?\e?vFɬm1Nq9~Ek3F{縙Vy.W J| ][\#u3zo1>nY[ԙ\#4k˽w9kĻvL[v3F̵i֖{+6Y[1\+޵kuOÝb}l c3VM`֖=!v s׊gjmlgpk-{B cceOÜ]6^[1\+&0k˞;:kXfmb0gpx~u|֮y4v؍kŸ 76j]~ַ[U73V f֖&v#s׊w`zmo|7rgpk̬-MFLcceȜY7Zۍ\+3k~8 ׊ڲndZ1>6Y[؍\+޵kuȝb}l073V f֖&v#s׊q?6_Jw[WcG|쟅=6][؍ԙ\#ڏ fז&v#s׈cٵeȜ5b}l073F̵̮-MF sk~9kĻvm073F̵̮-MF sk~9kX`fmo|7rgpk?6][؍ԙ\#ڏ fז&v#s׈ 1oob7z_=.]Ϸ9ںnZ1>6Y[؍\+3k~9kŻvm073V f֖&v#u&׊ڲndZLmF cceHkX`fmob72gpk̬-MF ڵںnZ1>6Y[؍\+ڏkh쒱 ׊}ofv﹬y^? W]Rɱ#q9k]Ԝb}lC3Vkצk;;kXtgmكcVgrk-{p ccӝeڜ]6^[`ߡ\+Ǧ;k;9kXtgmكc6gpxMֶ=vp׊ڲmZ1>6Y[ء\+޵kuڝb}lC3VMw֖=8vhs׊w㇍v]Σqr/\+/e?)5k3V8,>g,_ܯǮoSŬ-gG,Lc㰘숓Ŝb}q3Vkak';kX8,fm9;d1gpkŬ-gG, uXzvZ1>Y[Ύ8Yԙ\+a1k'9kųvv3Vb֖#Nqc㰘숓Ŝb}q3Vkak';kX8,fm9;d1gpkŬ-gG, uXzvZ1~0~>.gmxqj ׊,ܵyٵ\+޵_~?k<$wms׊wxr6grxp~߾7e=xO=]^k?ݜlG4#;t3'ۨe)Ԏ36j.Ի~9F-?j,/gwj.l5;w3'ۨelj6j.ڻ~Ļ9F-?m,/xfNQQmXNYNs;Ül8={3'ۨeL6j.㻼~9F-?Nr,/'{j.l9=~3'ۨqzd,8ұ\F-?NM,/|d3'ۨe堏`d5?]^zOnNQo?zGHlGⰏ0`Yc_ψQ4zg0!uď áNqS?Su胾`$u֏ áq?u,DBB:AC@#BP8hȜ$~/áNq4iA z8T á28h&$~:ł A@BPI`4drpB  Ãu<"? CEqЈ H=*LN@BסA;XP $ ABf #B~bzV`ɴ㜮li1VxA~12K8 CeqЬY H:t6h %á8hV,aB=*fN@BP`4+dpB?g'G4Aiy;GN@BP9b4WdpB?#s$ !x~r2hɌⴜz[c4dFqB92Hd !p1A2B$3uA" Ceq z8T Qá28hɌ$~:se(A@BPc4dFqB'*?a2)!Hjn SHA3z]?-OVM9@CqД) H=*ՌLAN@BסSM;Xʉ$jASN ' !p*tMD@viK9áR8hdB=*ՌLAN@BaRM9x$TAK&%PBPIe4dqBJ*%z;'d)(h9 ;oqД) H=*ՌLAN@BסSM;Xʉ$jASN ' !pT3r29 _N5`)'RPz8TM9@CqД) H=T3u=+0eRB0Tt)QD W?~U)'Spt8R:h$\=*ՌHAA@H5)'S\J:Rh䴜fH5)'SppT3r" WO#լLAN@H5)'Sp|U^_% i<ybJZNkNKK)ӕr/Mu Hz8TKDwL;hzte29AS+' Pii,=E GZZMO@WO#-LWN@HK)ӕpp4"] WO#-LWN@HK)ӕpL.e^ϊ[jvȇ&z8T6}ЯCgvl'H8FeFMf4c2&z䞦9)h9 ;oq9z8TAЏdrl' H=*3Já8h^<$}6Yfh4dqZN,D ByϤ2C&r1oeql H:ti6}á8h$eAMf' !Y,D B2&!p,3m28 uY,ӕBBz]?oA@BPyl4e~sBc,u<" sh>f2 8h>$wdžFY74=Y !yyhˬ紜z[m4esB?g$ !p629 6429-19i,E. ZN~;fzF c3ɴrh\贜s^;X\$As_B#BP9o4e.tBy㠹/su" Cqܗ H=*獃̅N@BHa׳k&O%~ON|%L|{Jd;X$$Ae&O#BPIr4YftBJ2q8L+I6%HAiy;I&LN@B1dZIrh4YftZN=hJMc)4RjrI~?w?>_ASsh4fJ5Z}-tMRЏär)5 HwhbD: R8h ͔$5sh4fJuZN۩,FJ Bi94B3:-4g2u%ԡĚi9 X# C%qĚ H=*&LN@Bסj;XbD$PAk&Z#BP u4fuBJ㠉5=m*^YbD|0׏~\8X3: WJ`5mpt8:hbD$\=X3: WJ`)4Rjpp姽K54'͙{$ԥĚi9Is"VB]MhӬ^hN$#%HAiVOۙWyi4fuZNz'fAm_' סj;xbD$\h봜f^fFm_4w8X$\hk2ʝfFm_4'͉^wh, GRZNz*&LF Ñ|Ap&e' p$u$I Hz8TK‘Ñ|Ap&e' p$u$I Hz8Oǡ:=+0gW3IW~ߑ3?k^׏C2SIAvfq' !ٺ,kGBY;!pl=3; CeqЬY H8\X֎,zМꕭFvfq4ЃLVl=43;-4gqe릱Yl=3; Y۳xz8T^ϙ@ <43_;-w׉nRzh4kgwZN{}uX֎,KdѬYi9 ΈCY;r>l# ǼgI\i9 r8h.$~:A@B 4gn7!0Asyv' !pY3; _NC_ ,(!?>l?ۣx?08 C%q H:toK á8hf$A6' !p9ToK @3͡hf`2 9*&lNi͉Ih4g3pZN=iN4JMc?ArA~;HߏN_=і-i9 yRۣAS bhQdpZNL(o8_Om8@9 bhQdpZNvDXK;4Fhe/ FE64_: m4h'Ai߻8haB==ӏm l'NiǼ6AG' !m}D; Bj#ۉz8TmNЯCv$H=^;?eQB-X_W{Ÿ3gAM#ӡ8h$\=ϴ?A@ӡ8hcBz:T7_Sh㴜f9ӏ4?AiVO3h㴜f9ӏ ?NiVO3LXfBsT7VY=i>na}ŒAS}fhdqZN>So$ WO(㠝%;(꯽ڦ v4NiV/wVehdqZNkt&h9QF;Kv4vLG,iӬY;}iD ZNzܵQA;Kv' 9V}fhdqZNz}D gAM#ӡ8h$\=ό?N@áL;X$\=ގT<u=lhٰpݘA;T6^׏ǯg15hXA@ӡ8hʆ$\=16lXN@áS;X$\=16lXN@կùVihAerZNzҜi`՘T44'͉O~tcmPٰVY=i4jLC *rՓD44ڠa9-Y=itjLMc *Vr 7_~hʆ崜fC16lXN@կ4r + Hk4 i9}hʆ崜f/~4֠a-Y]jhʆe2e?1 6lXNiVt4֠a-Yh6f2IsѶmi9걣um[ƜCvm,Hz:Tm[ƜCqжm Hz8tjk[ƂCqжmp!}n/kEt%kcsxC](rAsKUBٕ@3]OXzҜR}FPv%i.~v|omi7erZNLO*Mޫs[>&[M٫Vkazho^崜z޵'Z`ޔi9 NIMc)zUr/ӓF{S*4ГD 44ڛW9-ҹ<=i7E ZN2=ih7erZN=hοg4ڱ9-~T`+:Xz8TX@CuqЎ H=Sv`N@Bס;U;XNJ$~AwOO|Gz]?ϯ{թ:Vt !pN5ڱ9 CuqЎ H:tjXáz8ho^$~.64ڛW9-4g~zRXo^zМ]ՓF{S*i͙U=ih7erZN=hNIC){rAzRXo^zҜ]ՓF{S*4ГG64_ юi9 7ө;w4qޔ H=-zho^崜z!'5UAizVOM٫VgωX=ih7erZN=h.4֛W-RJ44ڛWL=h.64ڛW9-~I㠽){u֛W ['u^$WvUN@B7+wyԧh5z^_WZM P-fd1!\=Ōl=N@á[L;X$\=Ōl=F _K l=NiVO l=NiVO 5h=AiVO{[h㴜f9ӊ l=NiV/4'ލ4j-Y=ij1C&[4'_^* l=NiV4L7$ PddQ%\<']5ѦMi9꯽ 6l2NiVO3IXS&fgj&CM%r_;O 6l2NiVf4T-Y2dhdqZNz\xkhdqZNzhbZM P-fd1!\=Ōl=N@ӡMN_RR#wyǑh5zW}ݨqV'Hz:Tm5zCqV Hz8tik5z_sZh㴜f9ӊ l=NiVO\ h=AiVO\-l=F+Ӭ4߹Zm5zӬ4'ZQVi9Is潢j1Mc&ZOrՓL+34j8-Y|+߹Zm@ِӬ~i7 oHI@_Om@ِӬ+shʆ䴜fi]((!>C](r/ vJNi/LiBѕ@iϜ34څ+9-y2gh eWrZNvOXK9dzho^崜CvJN@B1f=i7E ZN=i7e2!ՓA{S*' !p4ڛW9 _I`)zUz8qz)!hEՓ>7wUx?6ڛW9 Cqޔ H:tOjMѫá8hʮ$~|li eWrZN=h.4օ+-4QBٕV4QBٕ@ vJNi͙34օ+-4gTu.]i9 tBٕЏtr.]) H=ό?N@B/ ?Ni'U3Mc&OrM3C&4_ڕ ?NitbMi7@3mhc2 t.]i9 .hʮ䴜ѺuJA@BPg eWrB>](uօ+ Cuq.]z8|)wzV`6 ~ݿs݊{|>>~qwC] o{Iu8帟!Hz8TCk(8GC\m(C5q2Hz: q1f4!\:\y/qi1ftZNzҜ/qi1ftZNzҜ/qh1F ZNzҜ/qi1ftZNzҜ/qi1ftZNzҜ#GCk(Ӭ^hNni1f4Zf99vi9x7Ϧ&M5i9ꗦ:hͦJknKM4r+KM4r_Cy5hAiVm4D:-Yhͦ괜fnCcM4jr_,}4u ;-V_ocAiFk[iFk[4Ѓ]o@o@\o@Oӟ\o@?4W$ !p:I: {K4;ry'X'KtСNhe/AF;ivV4_:ݦ6uAi-vF+@sifguZN!AA;ivV' !Fg B㠝4;z8TYЯCwvN5H=vF ojv? fg}9z]?=㠝4;uI CuqN H=OC] lيuIj+vh=vN@Bס;h;X'$+A{fP#B;C4;rAsNi9 sX'z\xyhfguZN=h~vNi:4I-4aYV4aY@O0WIi5(!WFk[4yh~봜K{զ6h9 _Oץi9 <{N.Nit.O_mo@)L_o@ 0vNim;X׍.$mAnva#BPvfvBX~}G˖=r~{`-.Z^z8Tkmq@Cq- H:tkkkqqvh=lyN@BPmesBZ\ !pӡ-i9 9kF[\<4ЃMc-.Z^rAs}֡-heAs}֡-i9 >h˖紜z\xiE ZN=h.:49-4gmq@?4[$ !چF[\<4_zeNkmq@鮝4-ť-hey\\mq@\4-Rf64L=h.';49-~wnm-.[u ['_˵- H=>;i_CG*!ܫ?-O{d___6 WOlyN@áZ8XF׏u8t8Z:h˖gBz:mesZ\ p4ufppƥfi9Isƥfi9Isơf-h9Isƥfi9Isƥfi9Isơf-h9IsgMlies3ZfBsϣ-6lnNiV47$ puжmL p=ѮFV14ﷵjWKm+ۘr˾p7hv54ֶ-Y왧A\m[ƜӬ^Γ .lcNiVv54ֶ-Y=jL *pKm+ۘrcjW`m+Xpt8:h6fBz:jmesoW'/)٥w4l2;n~<wJ4 !pf2T8 C5qЦM H:t3ik*dá8hv$~5ڥi9 9ѥm4h'Ai͙.Umch}d;1ZzМR6FG4ЃL14>8-4gT$h9 9󗊪m l'Ni'͉fWdhdqZNL3)o*d_O3m*d@W扦SdhdqZN=MIXS&zh'N5ѦMhe/LFJ64_: 45h2Ai l=F+@-l=Ni[8h$~Ŵh=A@BP-fdqBj1㠭&[uC_ e٫MݓGwU|=v*H='UF áz8ho^$~'UA@BP=i7e2!~.54ڛW9-VBٕc3Xݧi EW ZN=iN4>C](rAsUBٕ@ͮOXzМm>C](4ГDϬ34څ+9-~hw!JI@BP}fdQ%;}fhdqZN=_ߏ ?Ni/Li7@iϜ>34o8-y2}fhdqZN|LXzМGgFM4}fdqBgM !p>3oB3&z8T7oq{Rvg~,R`#Iz8TmNá8hv$~mh'A@BP bQdpB?ޗmN@ K5h'Ai͙.Umch}d;1ZzҜR6FG4ЃL14>8-4'>mi}D; ZN=iN4jC#ۉrAsU3m*d@?4L7$ !LFJ64_zeN3m*d@鮝f4T-Ҏ6dhd1ZK4ѦMi9 i&McM%Lr1>By/44T8-V3m*dЯC7vM&H=6l2N@BPddqBR;]I ߄][][W^Rg EW GYBٕ@WOvJN@á8X$\=څ+GY7_sm3K&rՓL[;Xf9֎>4o8-YМhkGY7Ӭ4'Z~'h9Is}fid1Zfkv4N@կCwv& Hz:cdOQ%\WP=i9zhɞⴜfCc=$zJr_w,)NiVޱ4C8-Y;XgNf9hgN㴜fCv4N@á:8XgN$\=^:> i@WONOkw' ɵdq'^w{Β楟z]?wA;Kv' !D B(㠝%;z8TG,iЯCwv&H=v4N@BPcdOqB?ZU=%h9 9Ӫw )F+@3zhɞⴜzҜhU;F{H4Ѓ_w4C-~=${z8T!SЏr=% H=KvN@B/FK vNiyA@B/FB i{N? '@d~4O-4gFѾ}he`/dpB}!u~O Cqо} H=N@BnOn^׏C?]qо} H:t?h 'á8h_>aB=N@BסA;X_>$AB #BP`/dpB ;q8h*7uAi͙FShdGpZN=h4C ;r9,GBy3uVVЏdr! H=*vJár8h$]0hdGpZNb2Xw_ڟ'Ni͙^P9i,GZN~;ǏN@BP9~4gwBr} !p?3B㠹>szJٟ;Rwrsx<#@qԝ H:tnKݑʃáR8hT$ASwr' !),uG*BJ㠩;Sz8TMݙʝЯC'v$I;H8Ft&mi͙^Pyh4IgvZN=At&m' !D4#i-~<3i; C%q$I H8Lr.OҞá8hΤ$Aqg' !IMc8sr/AFt&mi~qt H:tmK;zC8ӳ4cJ8ӳz8TMǙЯCvt9H=* LN@B}x#fW;_heȶA@Ȫ5pdu Hz8TVˮmÑUAkf[#Ȫ5pt8:hvl$\=*ȫA@կùt}ϥ4"]-~42]BJK)ӕz|GϤJKMc)UrwNK)ӕ!p42]9 Cq H:tZjKO#Uk!j6J2`&Oz8T6}@Ceql H=*ˌf>N@BסL;X$OAJ' !p.}U6}@v>i+gá8h^+g@y+sf(N@Bס3G;X$9A3Hf' !p1A28 _`$2Jz8Ϩơ{IQ%;||}ϨJ)~&5_WuASN ' Щ,D jASN ' Pf4d rjRN Pf4d 2!\=*&L6N@ӡ8hrd$\:JzjRN4ǼjASN ' Pf4d r~&ՔOAI@ӡR8h$\=*ՌLAN@áSM;Xʉ$\=_gRRє)hesJ5)'SppTr" WOJ5)'SPf4d rjASN ' Щ,D 2_r+2h W,e(A@ӡ28hɌbBz:T QCeq  Hz8th QCeq  Hz:T QCv\#Hz:T;@WO㠹"sppꝞE3Jr/dq E pdh4dqZNz[d4dq92Hd Pc4dFq9A3Hf' Й,DF 9A3Hf' Pc4dFq92Hd phW)H W3mX~Q4^b q %H=*sf(N@BPc4dFqB92Hd !p1A2B$3z8T QЯCgv %H=*sf(N@BP9b4WdpB?#s$ !pl02K8 CeqЬY H:t6h %á8hV,aB=*fN@BסA;XV,$ ABf #BP`4+dpBY!ul"K )Z-"|sXO~<;4cs H=\=gvB}q ClN@BP89us윍s8H=\=g6!uy; 9WY?áqs6a%PBP89z8Թ:z9$~\m;gB:WA<áqs6a' !j;9pz8Թ:z9$uy; _>W8㌫s??Ԋ8?n:9pP89pts윍s8H8zqsuspP89pP89pts윍s8H8zqsus H8zqsus H8z8̹Z~9$8Թ:z9$8Թ:z9$=\m;g^\=g6!8Թ:z9$=\m;g^\=g6!8Թ:z9$@u&ݞ |dy)9׏Ǐv[@gTaN@ыCIgTaN@ӡϤv3*ΰ šΤq3*0' šΤq3*0' gR;gXpPg8gšΤq3*0' 0gR9gXpPg8g(šΤq3*0' šΤq3*0' gR;gXpPg8gpPg8gpt3쌊3,H8zq3i3 H8zqxtI8S6OI%@u&|o"0=%x⇃Qy9 _>Ψ8ÂáΤq3*0#BPg8gz8ԙ4zF$~Lj; B:AϨ<ÜáΤq3*0' !0gR9gXz8ԙ4zF$u&Qy9 _>Ψ8ÂáΤq3*0#BPg8gu3쌊3,H=L= 3!u&Qy9 TmoH"=ax?oH C{N@BP8ul?H=j?s7!; wáq=%PBP8z8~>$~z?ocBAáq=' !y;z8~>$~ϟ~|o"j$xoO:pt8u=#Añ; Wñ; WOc?_sw~z?o}O~$\=|t Hz8~>$\=|tpx-> m7wtg߈L`J;A@BP8辒z8>2$~.osW}gۡp|] H8]^~$u+(BAáqл>w' !wy;]Bz8pzo徣㎫;~g+ؾ3׏CA@Cw} N@Bסv{2YZAɼgЏ܃߳I@BP8=z8=8zO=$~l' BAɼg@סg*+(!x֫xQ_sx<_?;65& CA_mjT%} H=5jWuWW;ث-^A@BPqW[ЏC?Ͽw򵢯ƾ>$\=~' p<렯|8 Wz^ Z sZ׊o?Y endstream endobj 119 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 124 0 obj << /Length 3342 /Filter /FlateDecode >> stream xڵْ}BTq,$HLn|O8ud%Q%zh4w~7&mlagY^΋0a9!yݟ󤻟&Oiɒ։MwӑvuyaMnM?##t:pwشɹvԸd?,ۼI6 @IJ#A2|liS?OJd+U,e﹃lr'%h[sߚϭdEaK$/j}cSkYDюx]~tU|t6w2&2# ^+'ĜЭuVu3/x|G0&uSAOG Teā<;LgUgHAj޷L,˒Woh!kFg/Hж?(gbkc,j%HĥuQ/В.%Cބ sXw䳈Lfwz"P 2ΓdəIG#g 4TWru~Q[sgAUf^ !uhGooƯQrpw=>m s){X ;%0&"N>0;,QH&`Rʁ]Tm<e4= E9:0['֊k* *v(YIH0㦋M˒AϜ&bUU/5,Nw{%Qei m* M+Hl!hJ9kOA&6Kmg^&}!78`qKLSE,4$W(dL#_k/0.BC/̮`+Lb06{i(#[JHmB4;UUax#ڴ^Y6/ T̡`Lf))uHv0tQI$Ă=Sr!ʥYL]CT~9z6u E)Ep/_   `/K,ju_&Gڑӡ>9dUFP".djA<˴Ϣl#"QD@']B1r&a&T.GNYd!^*-t-׮i=l kmJ^ ,<ԉ`'xMqq(x.89z ˫Cr^v?<_kwZ:]lÿc ɗ#obq__}}*>c{چ H`"~q_CG O{;-F{` hξFFt.K0oCp δ3)?KDA#Du.YKܻV<8ol:cy0@tYqVH7 endstream endobj 130 0 obj << /Length 783 /Filter /FlateDecode >> stream xX[@~W4a{5d1bL$ ,lDZ){;Zq#>t9so'ӑ! =3&m{>lט̌rO[rd D|ۤw1yoƀRz~Z,S\F,wEG16*U{3  {EQ_o֋tx42RIAf*Qirlݬ' yŖ||`GG:64h\>^A!B&ZŔg8xZPw&69ڒT=1*8A|Uj 5c[)AVsʫSP%Vv{\1# ާx_i1(66x/IslbX.-ef ;csQI\JE\bYdXW ()yUo0p XGۚ<{l|xx ,9R@]]êJ?Iw)8EuBCJ\30szTp|`~.";妪5z9X6#@xVi]؎VN\+crouini 2hq  /jx{,%d_JI}K0ZG#H_>QD1rJ4hȿw$l4It%G~Ah>z,퍲 ph<.ep<5K<0O%]SnMs չ ls\bT9gl k endstream endobj 136 0 obj << /Length 1371 /Filter /FlateDecode >> stream xڍɎFr (c*()H\h636OO+?2޾[m} /mjO+/ b'%xrln6cvnB1~#kz:Ib;{VʩsY_o}twA8¾ ?OGnS/t:a(*,NY`-_Z!$oPľ>fpkɰ`R^j Hp'35:+swF tjڞ UI4 ٙp8Y6~7qҢ0}uّvJ{#vɩ%LD4'aH/9JՒ5ju.2y{fY?10DӌE6RѪn,kDisEQM_6,Qc5'X?9X?P( M "ztVHD^Ӷc ,BM*К]ç"Ȏ/J(U 룜f6|VH}gpfsOC fDCdg+uYpDʹnVb1bGzM H[Nix2d an<3^vi( |@$̝P UVѽYV3.2xd~vNqSIg tBf$O_YN i[Wx[OU6i{oJC JΌ:AD]?^N6v˷a"̶8z"MedA R t#Th9ĉ7 ԺD3:TA Uμ/|iLsA}4@A>n;-NG p%4X&_?DkT z=]fXmu&V$2)v8ĊZJܸ=d}FoVb<6lZ챞:ZC-I<8 ;TT8TB!ckVgn cYfaX8i=Hme*l%Ğ7W;ʕ&j[_KY?k $\[2l>dTJ:u|x"B̎Cj|b-iZ|,Z~cEI>±Jr\Z,L\0sxAR;A/Ϳ_/ endstream endobj 127 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-marray1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 138 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 139 0 R>> /ExtGState << >>/ColorSpace << /sRGB 140 0 R >>>> /Length 505239 /Filter /FlateDecode >> stream xKuˎ?b7x?**oDkW]A*7P}fxa\$Hq'kDx5gG_??wJͿ{??׿}?wj_g==GnK?/{w!yW}c}a_?+z.WϗlCly^50}~fWcg^?Xss_~ mlR?Ԕ[o/w`}!Ƕd+ 5׻?3M˱5k5vw_sC.}mK5m{[>ze53]^!VOSF&67 ؗ[>G=̷}ӔtBaE-jęs8nw ccnɩio13Ѵ2]צ(-mѵV`85b]g JK[!^z s~-aχʞy?SwB7{Ԅ%ecy-lbޮ8INֻ?xxE6 9gmtM Jnh'kq$gQDa1MVXRaU3 kQcU!^fsº<Vm4Ca+֧׺-,v{4Qzv7[X7<ϣ8s=h.4/j%6" 죘Rܭ+ n֎"F9o gF7.48Y{鼿yaeom$ iczy}ޜ}4P*lV]Z+s1j^cgz5eo~o=oަmRp]R2g;,Dbڔ-6J.#^zR[*`I˿N-4()XR-q= AcgT47ԋ[X:UI/_yJT$J'.cIc kV].M}鍿eUUjڟBƳc-qIU8>Jy| >9)zݺb[Ŷ5z5h:3=b"Rs GFGwqIrSj[Rjܭ+dU;IgI)jgK eXQ6qԱNJڦ!^me}MV,{ b`8. 6CMLall&kv6J!^z~b!ky6cpCv]3ڽj1l.bc{)^1b@9+Ι|wPc9Fql|( 졲M ]NM3qƱ)^z8mcVޜlfC4*2 ;/k%ec060 ׸ؤt8䦗cos YO߇7}9P7XR66>MNUj6J~CN%X;4/.Y/hgYYh>Uyщ°ll}zn[Vw W\]}g_;8v^L?Htz2o(56>6)+kz{]mp#:~G;z9:@ 2$l`VRwk; {s0:@;npkDlŭRdE؜V)_[;Y8.Mnۻ2#S^=hhnȥ/oMH$hKЖqD[rVT#fۉMwLһ˥/z pKpy'48E7˟6(i'N3_ռLJsSNEP>zp s,# c#r߷ {nY!6ؤnrjJ쭷V⡛WYf>ƙ,7(߻|+&ǒ~^+aIp.K#_[X %zƂsvgLsSN}gl) o!<߶ JMk./K c,=m \;r 'LK/Xڢm XR=l6rGΠ>v sC.}!ߛxeDީVWVC߁q ,CN}5\$=*+Lb8TJ~u]jvaIeı3cYY;)^zǩt~ߛmA| }(<ߝ”/q K*I6ֱ3+45|bo>g's3ǬXP[9'( \SZ٭|{!d{ g:n8˩Fɷ’ r3}EXpn7$֛|܅l19޶Дǖ`&pNVVG[r•hԢ;oi ic=зoX:qT,5RYgƑXQ/q|>6)mz[Σ[8foϖъࢮfIT-ElۂٗM9"[{;җ"g-?.3_; 9!쵷Avcܔ$ {8 N%i8{ՎZQrҕOyaI8JSܙKkGe^zǵıV>?aX6Wbb.oviR5Y%ԋ[:t/)tm>B[0;Ƕp;fuy8vv[Ez#X5v,rK8[ߛS \O-8 KCȉR`Eep'ص쌱Ay斜z{-3¤ X'$F܀џ( 8ȏ}XQaVX;LcM9wΫ{s:& # \ i|"T`gqp lUX\ZFJ;ԋ[heG~«cuysҪ(]rN<q9#MJ-ܯ, {{rsМ (gj8@iմ\Ējvcc-Iۥ)z>=| .=x!E颅!D&ǔq,A$mZñspnʩ_lm;{^)4O]q_qV^Ay,sp~,I|nʩ/E'uZpa._ckrnl9by.p5v_cJg]ccMeͱCm 7[ wz]2Ŝ%v7rݞk+Mꇚ7譿+bo Xp>Zns@(G=|)0İKA!+P'Wůd57ԋ[8, -ed6o=|d{2ѡVT3r6 l HM9Jp%aG(8Y +,p.օl[|zρMqϤ)^zG*AZ8 kѐ$!tMQҗrDW Kj:F6maS:)0Лz wA(%kAϷۭ8sH'v#~cܡ/=ҫf́}T郃lakˏXQÕām%,)]TܔS/`_zwA\#robJmij3VgQ1=|’~Ϸ^(੹)^zodaL;r22a2,rP{Š+3̀QM\',9(l OcܔS/bo$8NߛYx)TBh+,)[qY F榜z{#>֟A7Lܒ"/ܠn;C~*N7_ 7)^#~ ;<8m^΂2V:(ZKXRͭq`: [}ƱKdqnʩޱW@+W:՘9uh]w&f c@qGԪc±AӘ[rj^1t6LQF摅GFU3 QxjCG0gX}ΐĞ̋mHn[q gV|8Dx,ͷnM>uͬck٥t6pMyuWH;1-1XEW\b=G۪cjˁJcΪ)OZ[;7qԛNk H=yr+U+Vط ߲R;\V|ڟ[gV},>E1ԇϷXQ/Qv8ۆ{dqnʩ_>t.t,22o7%z (wʖl bXqyeKI)3KW~[Or@W[zڶȃOòKQGpNJ pQPDr4"1ՎYfzsDa 1KX4v0,Ja똽ޑrc/ٖbu| mVXL5_l9wbқD(V1A<9P>+yq|*FCG[QU T<UB>\qiqlgabl"3_؆Wq5+&OgU(O3?Vn=ۈʌ ~?Y-򒤎ybl{yIXTeaطsN쭷 -~p&Fd{O[~X@aDXX}]0˩)/#r䳯<]>R.Q#3ZDX&Ћ[8W\pusT,St#Jqu2R0]NMpT2q Lxexl(ݥbI Ϟmi47ԋ[om<"a|J_]!-?.rp$+ê Ov 5'[WO}doOhdO<3xD{a{$;f:UDr4κ7ѴR!nu4؛#1^j$o3(U^-.]ؤ~ /0W M}_{M]i?!5˲RU_OoZ+H anv.FmќvE1ܭ+UA388<3Λ<+LEyσXRqfaq&qfܔ= {{,E1,p ҷxHTEa™[W\sBu_[Wm}6yXHEYmFB/8K3JbAhf]5vbrE쭷.M ⠶nHOvҦLA%8yʗ Kj^)K`ؤ~5ԋ[oHVO퐚́{1,v2W.1iiC0pMi?ʌg-".Y:G_..6ݺFmCT8ڜPQYy7dXj v%HL==;Hr3wV'tɾZK >702J &K*G0r- ԂA+z{CzV̠KD$(mDc$$G-naite."EN^WsS1c[oڼLJ7l{ajQlL@ꎉ#ttXv_AҨ$~`tܑpzCxa Kט8M?~ HΚ0@}l|I0;57ԋ[+6u3 :W;Yo)M3T#Ch5vCh2f\[oټIMec5eyV6FEر,Ll"XIm)J`h$gaom=ew[|,GԐb{}(ۺUȳJ!GBybVDmzȡ/etXq],=&iڢtّV'b7O @4v\sSUư\'Bb%47r& G9"JUOKWk\:[᫸-g#AJ,Hf;eԦwt ۵+;Fd ZUT˳nz{ʾVD`i OƨОL dH,avHžS{`kTbhͼ˴Ɓ,%t"JkL.?9=WׅK]cWܔOGMq6|I~;P PC S%?3fh16jk7z2w_`y8{`Q$1m})|}q``sjJ쭷~*{q3Bbnzk.3|򸔠"dV0Y*aoeSᄈsg*~b l]Df36V9,K, rYrKȊ*tuMi<yZiy[mcmuqrv}lR?r_ {>v!g~M]/fRx ?~ qN~=ѯ147C {-v]׼@8D]V@ @_|a7&Uk$Kt53]z{Mۥ"ʫxt2, gI^>Y๰NNW#Q(g5'[׏1#":`?+=v$& $=!WA`E wGAk/MlCVmQ`ܔ{!`NJbYgGu5ӯdZLަQ7Zk#pva>IRʹz{GT؍d,ؤRrFlƸ[Q^Qp+j7wa-&CM9zG}[^V8ЭʨgSI!h=Mg5*4|lRM }}Ecs2 E`9̖!7}/[vɨeXTMB3|lR2rF ySZ>26ϊۦTfXTe>ڱƺɷ. e)vcG)6M9";|6(TeTGZ%5\:P%ӌk(ܔO8ؗ~>e v]F5Fm |;T4Z.vRJկ_~ f*5E7B’Z~ D8g?Y)]aol8#M Lę-KVCy-ƧjXęiCܐK/`_zGލꜽYO&-vΞC fyUԞa"s69S'Vr=̴bؗ2 %A'zXp즔&ymB˽a\POйٝnܔe֛ C|K q;+-q IsÞ5y'›AaM;AiNHu6Ha`uGڍjFu]4/ lSP΢~hݞQ^AjfX9!z t//]IyC0TZir(yʳMm}naFdK'|Yi-XV8napfkT75'[WW͒{~E8)&B#Jq˷H%| .YzGM=9)zݺ^xϙGɱ|wHd),3ۀϜRZ^H%ؤ_CO}}͟ZEΊQφRnW̎SDdXHFRjܭkT;789[=0E@ۖS[qʊgtaBZM  !^l:eޜngLϗ6r(߾./9V&a ;57ԋ[WqPk\Ol:3 2^%=S :k>MyչܰQbɫt'V-w"VɫtR>Ttv'J,h쫳 疜z{'teAs^|ހ?G2RlXRqtg-M9";|K{9g=O1+k%cq񨱓Ginʩ/*/8pt:>sv}NQЮXGy@!c4>6)/Kӥuc_c:BB bߍQcl^(ުVqaV\t2xiƎB᚛rE쭷ޗvߛulKϜ)~9ɳ[Ys +Cc3~#3r%Ke>5 #M9oX(,E1’*(*})&s Ko=c[%ڲm]Lx|> iOǡ^XRhMů`m>p=Uch|1x4^ Ek ]XR NvM,4vs'-=/Bں**ѿ6ۥX7Z=5hgfjԦܚRjܭ".q:=U*tne @>p$ lYFR|Jz몷b"xy7&qEsl4Q%q3S+jEW9r:r ؤL29w~M$4P`k(D 9;>p8/"ش2MTzǁ1㖠D9"è& n]Ei% Rt`T.z_{0blP:0r z="r#^e?5Գ.XuUI`Lxyz=sSOdz3ƄAL:,dWGvj B&8r`E8]-9v߅su}⎃zvEiG1?܅B^tCcHu/$N %Ǯ^PIsC.}xh5){N}mrT"VTBrz6ٻƮU}G`_zI,XڼvUruHueUɰq]lkKpmVK#44q^/zXP[߾|Y%MJ"P2Xjwq쐳Ii]uιnd5ģ|HAEF8HX)J;G:MySQ>b;wv0,VfiȢ/#孀F(|l9]% $8v=;Da[w 8 &g9Q[BȖœ+*QA04)^C50Oy!Ij(0TJOM!9XRݯAq8a+_榼+sȰuDu\Xgm#JMؤ~AboÁ/r~X!fv2}~-q&,b4v+%L&Vv;\Kr7UXZdwS%.4"օ]jS,Qw`-_Ǯ-ܔS/boo."eɘl6ڕ[h[ءD]DDaqѨ"RsW踰YY ^X*z u[.Yoy57f#^8z`_z_!ԭB\7kWPCġk*z*¥t ?Ek 47^ٰ$?)dx"^Iq{<&,XQq XX;)sSN ֍WAqTb?,tAJ 9vJ[}~۹O@N 8=;B}ȁ#!jmx9vwɩ/ƈ'.jW@JL)HhЯɗAE3qJcŊ\47]>?G)_oSYfpOŻS a= ؤ009"[Kyrq|qndgt$/SYC2EgҹDgpz{>%H)BN^cG`TR#<+Ju̠R3m9.HVV5O<ޑXl38MU]WWcBpQ>>T*g J؄S(NqKȹn łr#M'5 ϋJ"Pr#m=16(-gnɫ؞n]ck>8hU*p`GMv\C+U{'N>qK{MyW*zw,FbXymyVkuŒ& b1,rEG>%q_b}luSE# WA `E%)cֽc ֔^¾ VD[Uy׫9[;f&g*bm"NNy"keQh@sC.}>c.%J4SL^VTÝޛk؇57=ι!c~A+O,@5ɧ#+ɋ|Ju5+(a$i>X wc+n;r1s`Ysv )l#>f,k榜zز{sPLB7KQ5Щw Wr ;n ځE1 mvr5wM1Yű>g'!<'ş.~)2쭷J%&%),ݚ>d5Jqwkȫ>PtU7;0%ؤiRi{[ª]]֙Ml)묕1W/,T)^z:UV*xJ[X*hĒ.,84FrE7 9LUc~L[+❹Oq\ qea91^iytÃ{a#95xS'r%`PdG$bJƧ+Y(I=W2^zlAS8~~oj׆̢پKe(%UP 9YM9"[JjP- 4[L'PgV .oC/,5{rK:u w <sά;t2B+̍/vjޮK , 'sSU*σ,X^jK b,vqX.,hXU&%CmKӥ˦qg)l2awQ+1j R-cQ> |ZxWQC iCD;"tc y̶1nDK9(W4lU^>6)|:Wɩa Jys-d1 "H-j?cVaNΰ+xa=rKo>V7D {7[XôNwrj;E%?ȡÁX85T ȗ^ZughM,5n8W`*7,hgLıvxkÉ򪸡Q>f-G u_>hudTjʪ 5AZT4 (4=WYFQ [&TQw B+8yJJrJe WkPwNq:W3,1]cw9SZE7 6( bs"M#_Xkhj)چ[JFhiF.\uEKp 0lQ4[d .G![t ݺj?j@u,j7x|Z0c0M^tzJ0x1YYWbMOiSk*K,+¡" GM&w΋tB*\lnRfSuå]ҜH~BRP9*<)!0~~_:ٮ0u;%CXXRSI}9G87ԋ[oST ַjA[b]r!%[&zIqC+կZ-5^My#ۘtHn*N~^1 רCҪp䃻u nE1,m]4oւjtCyđHr.qʭun8*K q#4M{sPR w-j6׼;Ċ!]إN-=v7dhQO yrCo[e4uRYض:&Bvhut0VQ41KW|BbX˼mlPi{c;;ҩ1& [X;ih? jbH_ 't|pcCl4}S47.1Q '7T8KШ9!6ݺơűGzjġg[!Ct)'s0#Y8C֨rQ-1KWwؕһ,fC"3Șf'[ a??q28jrRjܭMfDVew3;b39H%% gˈFJsBJmu:rEKi=ZWڤ{IZ|<1"En!^H,&"*v$ E;<NDRP2 >J.:xmZu{1:7kHlʹজK#:7>bTnʹFkSfRn]uveaDX%-^-x)Ew^Hx'1΢g4jI9!6ݺG]IYW)*Np$2|".QA6LBn]2ϩeЗg^vՍ$eڰn.GKaI-Ğ16(|sKN?k(SO1.i5Q )aIe S¢NA)ʱ57$ w2?ȞG$Ȋp_5 :p 0} K,$ 8j㜔R=n],- /$ZT<ߦ_M](f*jF99t%+mwCȇVW/(܄ZqnO)&֕WiQU"t\XR]^Xűc+ 7q*GMץ7?J-Wg We󵊢&SWbI-O-!K .%Ѳ <؏ao#lG4VGc<`a<~ v\Lt1$sՋhNH^r[۲ZȖu:]k³5mSD4|m89>KQAn<3KWyN7Jz;TBMfhug2R%/5K,\c+ae`PD8K-isu3+{ġ8("lE}"r57 ؗXYC2,?|n8ٹ ҹ+te$BZNVM8+Q_rNcHýtvQቯ*./žnYJΒKڱ9Qt׀qvШYNX iUuՓQ$Ѷs-ngeu<)³QpBy'-#ǎɎmrh\z*5ŸDZH#8h̊୆zJ"R[CzW=#’sKN[%4*&BƥdQ^&gR0шE;eݖ5Ԕ[(s4`5N($^:{ё?z(i:ؤ06P>tf[@ӃYU l>Tyʽ"B@%>U'XT=߭#qk/o9KGiQF2zWU;rɻ] +eSUFϰEevCMv 9, A{^nMNADA&bZIu5vjܔgC] &]Hߙ9 IAtZ!AA}2atk57 ؗW3/-{sJ3-J~fꆗ?Zȧ47íwSοȒT$h*!Qv_XRWYq ,24vrrw:J #^.%g#v(p(y)ĒZW\"/ \(o&f3譲`Ct7&DarZ2{8SGPp ۰/MA[6PAݭdi?Yḓ}m VıgES=PsCKon`Aaaɦ,r 1yS9_Òv]TeH_-QMyc[(A_Ip7z]t֬,KbI%$g CMܒC/aoĹ8?l*D0u#9-l9 J9+jER9NB %\z;y9S*tiPi]oZ52Q-"vy }z7i k{MJN`zhA8!۵#ew.Jvyk!Gca&b!V=bV= ܒSSbo\nw\l kQ^+C[4uh5v3R5shz_jޜN,lm 䖱R4ObEEwpRVvCӔ>$YrS^0rRQ9N Q+NDPAM aQLc'%7yVzG^z x;8a:#,7[np"ᤔTE J/8xW(zFgu56e6t^kEQ}>*^]^Qޮ[9FyCnm+.'~*J>V`EN ڽԟ^Jzy }>{!%=#߳W[6h> DX ;nj}t*)ܺF%C,)D6)s2-t3U4vTMCwZ`_zpp)4Nl?ihI}:]:풜8.o(ƨ.rv9p|$+u22kA7 -kmҲνfcO*د]榜z[;KU/%F8lW&dQR)%U`9K2G,kea/쭷VS:=a<[$Q!/j`XR뜢lЮ=\z;W4~5gZY,V3- k|z lC+/wKȩ񷰌Gb۸faY5]e7 ;tK 6ekyɫJq,]i>xP'emTLN?)nY>6)a?zeQImP =PIImۢJSO!/jjP$[lŽrKvW o}͟q%P-ϫXQ5̒S^5v%ΝUrww(==հdE9MO[,BAF`UcߥQ\# /" n.O|_Q^=-Kť GGbA<5y\ 4+u9qʮ?,U:ف9U(Sc *_تnD<+;R}U:kzFEɎc]w߆ڿgٷ^cr`vw\z "(b [Qf] gGQA HJIgv5jU$ iUݺR}`oX%H(UzD !^g5TqNJ pq(_dg&Ns򊍋تmLN`q/,5vdknʓr;' @qLh<3sڛ(<Vq=4clP?:uK/`_zGj0KDj0 5WL "tCKuS2Nfjhf/ RR8*W7x!lS8u ץ3&iԳ%N$05vgKsSNjklw:lt+IW-gDW{ȋ x;Q#{#cz^¾Fx AEM0 3rD5CQ5yaI( id4An-9;l]VT8K-YaEbgyҞ2fxr˅_U8rE쭷DD4Jq6̗EjYdf؀%KgY Z JaͥZS!hd骊N-uGj&z# ;*RE[HYtU|) {3xU p (j3 i;ZSȧunD8Ǿcn7Oz_{y;1R弭pƜDSbwOW<Ē*[Fb3n9QR 3w0OnƽsW8VcÕ?~:s|99Cًh%Q?dWeM;y8e htFȗ79A@Na<]禼ao㎊5[krUyj1Mk.T dP>cةOO灰(k}knʫ}Ek–)5fBZ9bX;Td/D/%G8B;{"榼aao#aH68EvHs`6 :C>;r0$0rP16(YZ^K>bbyUn~eF 't(DeCU >9)-*}pC?QQYr6jJYW2R]^AVRnt+"5 |lRZZ yȰRpQy+А_yNr 5^0q@TX4Ž`rK︑87#* r ٢dpb՜8Kmiؤ~[QG.جXv(^:/*"t!]Zq]2|T^X񼌾* A+FuXwɆ@[+&C2Sj TIa+GcHWJ*iJzGP#݌iO|OefL+#)4_*;xF7c³e kUܐK/`_zS"#.H ⠴`ޭ 軈Sb/ un!.;y榼Ćao#~pߞ %]:]]EFȻJnWxeѶ>o`IKz{wV,1LFdz nYfl+4Ű{sT\DX_Hʫܭk'jnl ybj&JF!GWaI“; gzȫzߛrk8V$ SryvXƟ~L> b$;֮}'M9"ۋ2r{{+[n<+8SMkDUr)G+K [4#t9!mpM*lTzYr_hQ"I_G|zMPA5zܔS/bo㺱bZuFh]! ztm?w`QScGN]Չ^[r7#_+%˽|EC1T x*榜z{ZV]V(<7Q5_Tg]yfn]NfGV-.bEXʰ%v݉E z;KMuشYs7ZufQ!eze; a-#&O'>rKo=VhSqv $Igg8&{4*~'-,4v;'C(ẽ%_Ins^.J\^XR˻;g)rƊ74ܒSSbouTiKMҐwl)ﹶcoHݺ K7];GEM9*k5\KWA܈VPA^IA뺰ZՒS%j97ԋ[oY]]i?:3e1]H 2* ]4 4v榼?b[M8xN݊7[ߖwh~%NDX[|7Y6hc)+̞nfD[]!Wjft֮+|lRroVEwdY3uiNEȋfh:^ [iUuzQX5vuEsC.}u7'-96(WVwiTfħY21,nԍ]UưZǚk%݊Vz<;=Йg҅]Ztq57M:Fˡy8n+s5KW֬2A7yW5Mve+>LE.~ܔS/bo q]Jg]Knfcy! q*z-u]*HsS;H 6W HqP5,yݍYՀ27c{UKoE'0O̦p˴UmwzrUxΏ-b8 pҨI9!6ݺF"MT1r> LDɜ\ktB)^zG 5O2ubxvNkgS 9#v{ѡ vTeMz{f>[DzCFq`<x5)"MUV,;47CZ#?O^ʏmʏ-lt^}}t:[ϘE~V7|=ۏ*yXY 8 >r‡}ez7JQ41,mυPqeǭ#F‘(&"iT/X9!M[Z( 8SVЗ( yWUYv5m։+yTZm wKCN+na{sK7Fk:y7v=y jC('Ecw57ԋ[83+ J"i("2jB@@QaW4QYnrGMJg#ƒ^/X9J ˜Մ8EvY!/pj[/iK8\z ^N4&2|B!5(*9J ;Z!5](6{pnʩ\XJ /^C=[C-2 ؐnuV>8ӛaYYF$/w(*h(c푌Z),+Of~ Q9({榜z{2u&ǁ qs`Ēʞ j< ;yʃ\z;Y)Ypm")CR_!/]fyu4.SX;$IU^;~[@[hww)WHQD?E hҵԅ&-DtѲ=9h& glCMK#~iK0m-k[M7ߗ_P wO{2ctW2E^G_6w* m88S_[Td;"4V$]RȖ I[tqmʫ 8rc$ۖb#OWu`a wctʔgw*OHt%f% ;-aAF&zWw` K8>pK&ޔ턃axi3(H|&zWV4[/(4`7C8rg8mNȶS/~ czlQQvt:`OVX ~MySPtd_NN ]Q=fy~EJմ6[69W+_6,C> rln!=I߭ yck(B}z(&O8njpUPO& '<:W(g}^8v*G[?}ɗzL7 ř0q.ET8 D9;K*t ϥnxrQqM9n{:%fW@G%z&tk?k870Ypz%Gvwo}eE#banaѪc $,ƑȐ6q#XbXJzt!5!oL-㹼Osޙ|GUSB芊7`t-GimtvыSɯCj1W[N-λLt*FZA}"t o($;B+3yZt#Õ9TϞ;;(09]ɶJyEɕ]s(GJ1CR{Pgh7َֆg r 2oar2.E3lذ-I7/Eߗ4>!:u f۶enàlW?,jmʧrM7EDl PG{,TMyX4MZy,رV`Z.B~G>nֶ1e`dT|L y/ICWT0I%m'h!_~Gϒ^E,B{by#ϒ6խ6t۔ӇMQ3tn%-t9.W䰋P  %#.W3Z+^fP-b䠰CHvצ~Q7VA~XlXI3qP,]vjmʛ2>ёJw_xI)+Wt! й!8t*U+5t=MkS4N^٪1^zvIZvfլJs:L2$ݩj?}P|w"m-"jmRYQB,ۘo;լ6vҝ^7rTѤkMJC7wd:2B&3w=p w| C]Rq_?_CK|挘~Q7x%PK |,ѵOSR*IKTkQՅ}ҋkK^ϙn;. 5JWUSg6N:gӭ'`K\47q2YBEluE]nщҙtYx!ML "`$ ֚k֏Wr:/sPm |T侖^Z|芊K8Ԗ.jeFڃkSN㗎ӏ_9RfY_kdQ_#q~pۤ<C4a6&۾[4za Y@ۢ|[! cHhqY3= o(O-85om.on7y}.d{EXk/́I7)Xq^Oc݁4BTSɗCN.-q&/f[4cΛkqT- ;BU` ]Q34X\X\kCa nӢh IT7QąpQc t\mR0ءB{WH 4R`Qϴ+lO] QW| @yEW I+a~' A^v4 ( WnK*JSJNRLS~0 l؋~ww1tEMo2 Lq6ڔ/~͂H>nK.2=)wEoB%'Ht( ,s%5Mv1ml?vY#n[񊣦u%RbҎh"ҒE 8 J_Tq;YUR:pO w@9kqZP Mdysjuw茫vlϨڔ/fS35.q h{?"aIw %M8(/.ʋe;Fę1!)B- mLĽziI\nG]RKAtQ$K6kd[mwh#ȆB{(K9gKM~m#Hc)%]mRWxJe~7ʩyGQ3;_E( ?Uf 86)|5hQ#Tt٭'%, rʦMwDǩ|\)q6)-7w!haLt,v֛'P]zf=[v1 HzvܑU? iMH ?!|q C?>Wr+jy8_Hw؎*ZrEwdU j#>I۶(}Rد֐']I8.Ze{xHk*I7mxbM4A7IIxY;MOu,u ^g.smuYX[Aʫ=%%uk=y%U ']Dd;B6Sz0oG7[hM%8:8ɏMORh 9tXS؉օ Y* N(o߆kvFaJj@!L k^;Z5){˾2Y0nsak9u0\$b]̞2.xULOgDY ZҥAZO/JV%e_LRTRWðJgNU&z8[Uw8X|b s?l1׾Y m,낂m:>snel;[ 9=n;bv;b(G~ڼgý<(L#.}q@eKD6_~O^vgXmj!ʽ!*y} #_9ufֿpB`>( [`/&?Q)S|Smm{fqmQŹܞz!*GMʻb.{u<'6)1y֞w1&roR<x_H4 vGݥHZ>*h.֦~Q7wAO{1WR|UYϙ'lJ&WO3ƻV;b ]QQ//O%_;b]ᱮ hC3m(={؛tEE8H˲[6_}!⠿{|e{=: z%U=*%KdrIo?T=^",Uֱ,LCh/DMFz$ _.ԫNOa&zHV78tX@]QpbtmG֦|c{ߑf@u|UT,U %@b]!t LqPTmPz 9=n[[Bh88GԇPP]QQ*Nt @m7/%ڔ/f#8-b* w} `ӱ_.za5QܗGcM9߁šiOO\*3ݭ;=F4]O8Kَ֦܇wM~( #mgGA)]>j{K*#Gڒ/f!΂y-_Ab '5.x(?*==(`[khJM9n;:Ӊޚ:t(3 3tt]O3N7.3FLI7SS@s,E5 MFi]4ˮ,Nh4٨;crSt[]&_e(Z^9E2À傡#JZ14$9m_&_~-T-#f Kc˻eR;~9ҫպSOJ}M[-'&1zz'fTIC΃QWmpذF/eN 6o[cV 9CeK(͵`n4uI ^{ڜo=DkO^[~Gb1\ਠ*'=M~q.)9ev]춧6話zD f]EVcfћ8 M͂<fA~Q7pw>Z GmÄ<6MG]S(OLڒ/fS#euxQãxr7O]ǂӗEV)ow%Y?.M==%ghV 'uaE]l,ε)_~GeA RkGm^6l:_iZ?gv!uړsM9<^^֫-f@oSt6ÀfL$@ZcJbp3\W̅VA0CޗtQ?_N@òF˧kn#Y] H4%qŨ,=}j`ք@/ |H%-Soso9C +`{*>zWόBUny᥾*\ݱWC0+LQi&葨Q?ǭ8I $SA_#ڢ%+)?nPO/X u [8:hmu:T5D tMLU n }z: Iw[kTI*3]<ߑtߞUl)ڴ6u;ruax鉈LvQˤYj̺⚔e_ 2tt+XrB!5r1U@DTF9j`*5KrEwBugl(2Ё<=v ` _l;郼1E6t4ۧqmu߁!$\giذ=c*CqYOn;cd8[:A'r3yb^?~G6 Yu4>6=]|M"h[LTDr<ؓGCMyww`qV{BδD=5(]MHnC7m+^Mxr/dg jk)Zݎg<85$)U.Wq0hM ?vTt6OBco3gv]Mfg ,>qP0l_QM5nӔ~Ց]]ڑ hJ|bq0R E9~Q7`L8[}:@s<ƔR)(;6Zm AA?/fcOf>'gĮ/S_ωk$]R#r [uiCE7. 1s 7RT482ϡOe#~)+t ]شvQ'w48=LP^C:'" {諣1[< KFvJ&9!_jg$j8h81kz␅`B('ݡy'60ͱC]6(/9Gm %fCv>B+IԎ<19K.Y_>ybM9n[#9#Uۊ J)y+:!VabZ0g6 _~aUUӋyjpp*q+[芊jzqXO]VvTkmt$xxM웜4pdVK%q&f3Q n;n;ZU~GsefU~LvtIEnJ$ zٞ5pyRi[j?_DcwskIw(sUIQCAJc+ oL%lEfpbl2h+jlYq']\\d{UkSOE޲xpVePWjWT͹ԥpw9E|Z Vr4f2F*E0F]5}m닱JFqۤ19*<ɶ-Q+`,q9l8f|aD33ɤK:ȑ8 ]mْ&_~Gs& XB@<ʌMΌΝB@j̿n[?M{pَqM{ZʏYUXw%Wގ[T][̩|˷ڗ[;/4Jzc%} N @i1P0>lb8( ]6yDy>%_%KOlSmx8|i6F#8( Arp: ]κmR:r/WIMW܆d1 5/#ңS-#SGq !]`Xv㨥!L85쯂Ks"2¦77gIo K*;ӷuvu9M9j>d_é[d1;\__S^u f!c}z$bw|_Y:kMH ѹL CĵC8jM &oB2&?MvC UJZr5ԓmbDŽz+nWEGKx2e5TZnvԙvPpon 9tz>^7;Rr!۽j &.էliϗK l9( +`\D=S>1 =]zіծ<ք@/*໫O-ʈ~؞'9 uun ?}[+mO Bo_[yFǁM"iPuhNY@FݩzHEű=vcvۤK^Uhov<]0mu/a:/pEX%50x(ȓQ,@bŬZ֕kRQe_u"aq@V'A]2| 9 Y>*=vc9N&P GEw# -w밠Qx #N&JKCyipҞ[Q<4& ^1DNR)=$NoXqMRKC/ζt m_QKjEwS9@cYh+i)S0X;ɷFL.8_NsZME)Ou"ntQ~BW}L,G;T :Ԩeskojx7񑶿h]-;eS&ƺqu۹wvLu~Q7D/oznCHP BD.!.t;.])d){ 6wG't\4ҵO~Z+lڻX62C{l)?lQaߑSBZV7_7oNoL\)]l>:HiƳ>Egg^S^~i߃]|tk.>;TŇO .^ ٞ^v#LT¤,NBfW/H%Sf5ӲVв$,M9n;20ԗpG\|w9a$w|I|)9*+m~\jȋ.-,2Q ^Qx>'M+z8ժowۤ~A︮ ${=*E8Q*1lL!FkQx% ];mRr/w`N2N*`^u$ "'GtEe Yr>,QJ\q(ITI;g &4!&kzk*$`if,K#RQ n#uQ:oOt-Iyt|z{%L3{ 9@x[H(r։x ]QK(.eG צ;(&oj:'PT =Ҫۛ+* Rvh;]I~Ao=c>R8]ӥ6<.ԙ 7jSm/.ֲwoM9n[n~-m(~tI79~oHSkS>Գa w}4EF[gἢt'Ğn[1ޟٹ)*meXc" n`̰:Y,>z须0( b0_~V]/sm1y˘(,, ]Q%`9F,/1{MJ`rw:HH*NZ,nʂtv)KBt1Fq_ALQkuߑdAc$$$A!J;"|n%5TQ(%! 9n;ΖscQD 'yl!Lyy5=8t1CGĒ:֞\u-+]RˍűmW/7~jI7(:%;K33-Q!ʻVq];ٮwU93fļ]s:jdt1C"(VَV&_~yYjr. NJX)!GBNDnGڔӯYK'G_pf5r4#XD1LG'O$FvAmRړٌMo4sDj{j*"r_FyݺTB~4(ߥ3tIO)u 7sWSQ(vMo5nr5vlg[mI7grD-L([CZ첌4'Q~xlO?kmu!76H,Ę-UT.@kBԄ.s0E1fD@d$ݥP_z ݩr0v|!oQx c8w^>#>VZ:n| 2tBtpG8nGڙ~ ad[Iq$~q#8;|aޮ!iS#8AQ]" 'n;uI5&2]-mLMB=|T@AWT352w-lA gKF@ gK&I Ζ#nmq^Bwk#wpMyZdƉyEnϹgڙi6Q:XV"QU|[GHkS5~g@>lgzjNA; 䧢"'BtEN#)_;W'Gi<5,?Uo%5 Y@XJ͏kC.w*M"J,AC3QX;45tEEYIRK$6 _~286Ïˤ|)&ݣ?-] mRJ$~HB)}*}Dζ =~_0x󻓟cˑ. %䠎GÒ=kSNw u}MS:%@Z{ng LC`vb۫l5y f{1qEskO6ѣ=YؼړCWT @o٘-t R]"mA&_ړ#m;6bm/$|;P_h!G^W7SN"xEnkC.o%TZ1E*'SP 9,lН1 _~4BuExK.:ځmxVwN|1hۻ}mʇ;Rlp qO1r%1'K,|XKe*4"{"K6Mw[gVTV7+|gVh'[x%ۑHõ 'ہ[)bO~GiRVӿL4}^tIEp=oZkccL0WĎcLXrCvwP 0]zsna6 _~'J$Ӕ>5m ڴm {QFWP!KjxHdJ<})_~ Fyێªηu~↞tIm?clO?jmuOfÂ0Û^`xkEE[+[+*R3z#,Ytۤt`uю`A-tqϗjCLV%#*ݩ⎟V.HJ)6)Et;eδ?yc-p,ԙA^vHaHT|AtQ~!5ڔ/fcO.U|O.hChsJK-b!'-x%n;XގZXlDr8s` Qzj:%jIwBrGŅ6)=cc6'n%j3Z:2*lݫhb^+xj(v.{ ;vϭ{u~ dcl^M1X܅1XoI(r`. _J[RbhmueUalCbC 8)rFPdz\/ZmҗEl;c$1UKo$o-N'QYU܆[]Q"NQ>?&;+Vw@Z28ȡFWL)oU_.ȿt_ȿhmuˆꓻG&n ɺElܣENu >iD6׆\~AZ;L捿HNoϲSGn`T,NIs0vP .WZkuITSeuIS[qPGQtMg4骅qmU$%p[/f#2Fsw)aqvKj# yPtIM?3P͵)/i?~‰c2j+ \M3V\9N(8GHJTfjnz}Fp-?~>F%ÈjߤFOQ4q.ITq']k֦~Q7c.iD5q&pf*| iDk;&ⓨE?whWϬ =?PW (U/bdFv޴6 _~zƍ)/~ω+:>/3H/PW rʩ;QM>5׆\~AxS|B8A/4~^Ei|7FNWuTl+#}b%o'Ko_r=#./׻;:oLtyZtt9c֮Z;1v {>n4}V<5'tE>KNق궒l<},˯-V~ \w ]@v@imt #\a LnlV5._EQE+lwϢi.Ӗt bs߲dtLmS+NX#.;l5y ٮt/fS'Wiyos!9+J9sB>56tIM' IjmʽFNɶç!>ݢޒGYVZΐjRTLrp.2]:kS^֏'>qT8v>EG J]R!PK:a\Zk& o#_88[إb =P@uInA.m-t7MnȉGzN\=,Ncߏ(퐳cXݶ(h%t~-w_kC.wcW;Q6]]ߗ݃# uy8l>9'SF8#-Nwy#j%8(ꊊ:%qpȥ.>v:%M:d/olP8xMtEbC'r+y1qb CZrůr;~ǔę a@Y! Jw.|BFĔ:td<)_~P&17]A23[<R9PhJ=y` ~kR:5e_I*_ePrÃ;0EŗD!J*.W|qxpnᓶ_vt$7/ Q$1웼SПG8hJѨJ=U#1^z!բք@/ An]b@۾~8Ew[miWeqۤ3%o\HEF^kάMj_oEu cU[#QJ 낢^)Z?5){+?G=cx!=3[ I1up,g0Ur5!oLWŭɀbXG:(赱67]H4Ʈ9غJa3|g:uԚ5'vcZŒcpl1 Az–UvКz_de~S=w xZ>GHwj,`UWq_; Ն9j[z?g_+OދduئuZf@rHĠ?Twswo.w;rn3̳6ry?~+2_Uq -p,֎8kȨ]rH&OUJTMUJJce'J~~oہ/1 blv#lRǥ'/8lQAњƐ7+pkM0tcPf@خQ#ZJPz$02$;jMH RۻA x."S"$QjG'1_PCz_աsք@/ǂTǧs1`:R,d,䦩&j!7]Rǧvuۤѓ;BN&wIͷa .ܖzޱ̚16!/iaա&E}vW \Î1'{u̸~<=In?*׷ ]8M8;X?W6|>ȨAsƽ!oaq۪z ivlp4tۤXXUmuld\ ׈A4Ղ7׊ *j%d낪1@b[1k *ڔS~Box\˘`ݸy-7E;uIk)uqmP魑Y&_07_wtİX5wף95.UTTm5╙ P-G=KudbNzM!8i ycz_uc_b?v u{1RaKNM$КƐ7lnr9 lE67T=q5m6( ,;*"4n,kx z ZtI-m066onP,bo= p/n%YpG bTzUkhMH VՀQI툷[u&GH[h =~uq8vjmʇTM7YbOYUzʦJp-<:PjOS=mcȡ1MJk" Q5;捃3a4v1jY-BDwb/{a;ZRz+ m_bHπEv]a}`D(E1{Wl5)7˾F;HPc7aRptޡtI8MϹWwPkSNPoG\֊# wž@#(?Tf+8ҵ9MJGV|{E; Q{VZ\EeG(Hq)ϒ1l{sR [kCޘޗt[]1`73u᣾8R KDKzEl3tY-:"kMH pr K =\ @J,/Q'GgWY41/_BY/1,42,eW<'R"Q.=NCg e_*Nþ!b5SKwx^X:aoաք@/7,6[0s׹v8'[ެ#%єnKҳ뒬[&>kvo{>>s0B) 7Ȁ!n1 #Iz$CZҭGWR+aQg/mX!0. +A/ZI)GwG}tkr0s[P: RdMz$]R(fCWsa;C"]tal.N8t&J J>yBWTp:k^M &7n|7byoڠr*q[p}1[zvUךe_>uJ ]|l}B?6ҍ0f4I 3.=+`U;5!7˾zM O,̥Vf8Pnqx%xE=EUrdT^E5)%[} -ogi<ٰm7q'ŷлM]Wz^KZ=~V䚔NM%[WKuİ#ȻE0 NīO+:ıjk ?- )^vOFp$Cu/ 8U4RU涜U Lba YGV"Up=GVg\Sݽ^+9:JkWrtL kVu" ҪD*]j t/{T*A{˾izwMd bҥ'"bXlԴN&zWnChO|d+6P#KGb,o(Vju[vo}óū6'/|"؟a<q>=z=ܭ9;Ӟt1e_=\M(1?-Gyp]Q{⺂1VU\o!awu5*p* ^8hIǞ^G{1&̰A^YV*JOrҳr)yRz+ǣ[YN> Еjtc=ҳz^kB:[緯Xf F +Y󯣪xkFs=.SXmQe_7?aS5ZڧSx~;] OyDDn^Z]r > <\l[ 㹾?S$ +(1 Pz62]V*ڴ&zUtA ViqNMw`;tE lcR4#NQ QtLSƏ߁x~2QnZF_ C wn)_~mT/K<o+3Bw}GfİjCY:ք@/8@{AGy#c-y!ijmʇbL7G#Tm$u0uCz#̭ 5pe_}ZWgVYtnU{^ȉS  1;.=˪whMH n,/0u&Rx^$%]hS-ʪ1j8 W[$Ѭ8 Ec]tz$f! c\RzW8zbXɻKi?z"?Y {g0Z|Jȝ Ί)(j TPq0].ݧqimu45\C%C~ߔqE 4Ns]PJCFA)6K)u| m7ߊmO7˃EY<=6-&=Ӛ71-Yӑf 6qoDl >x~Oivz$] *=2eٵ&zW>M~>@]K!IyMR7OfYqՓQp-kűB5>IVݖ 74zAgiqs=Ҕժ2 )^sC'&PeEBqUOWt*z1twS1ti2nqICAm/V;w]pXF.=Kp~샨dGX/fcaۺu]hVؾ-ͽ6^z橬䚃|;&˔2/u~0'%*{gTF5!b}Փ7C5R rH:X[VN#X$ ^5!7jӺplcVb_D;c!EHvsG,$>UkBZ^;;78VqML!-|Dlu:&5!7 ʾ{nQ 95:NBZO@IGw\6x.[sD)bg.)Kf4vb*_K7 ^Gbz憬WkBJo}և^CɬAEa1@ uImB¥l^B)1}Pr2]^0z>d~ $ݭ?qIHJ=6)4s$p@}Kq8g a:L5D0K/'. ;]eoZRzkT1YU O>W30/{UTJ ]Q?gUY >?Q}%bXs#^[K#@J !JhL$#^Z\ϺGdӚ)zWʕ~0p%,xѥXkz=1 2Az 5!]QKAkIpê nK&!%R+ Jzm$ڼbkBJo}lz{`#]KsgO.dTѰGv]\`_dd(+]_]}& 9MX ˩*n%Lt/(ۥ~#Q=X9 K VApץEO߾zNmcoaD캰ޑmI.ő(׵cmuu !1/_?x7?!$# k7C/BSrtTo!?Z*NsqL,tI"Dzɮkd]<ש)_~vwAa7sZ } C O:5w'F/̥gwvY֬$ݡ}7L[/uݞb1=2K%ve_Rn exO.~]Was2PͩW 2VA0 1Kng'Űª %P[g^xJv╟Ut_8Yý^5C]{~ &BҭCvM_;ugY- ,jMH Ȼ{s/p\>حXӥ!ӉU&m9.=O:^}. \z)UY=SGȔէᠩZe_^VU=P̩Y.OP=i {7jhqp[]Jo}X"cCGt.BRШTz WhX5!7˾<190:nsޘ%_~'bv0 gB0 (@n[ Ա\POsm)t7=rh bF7C1#CWT8`<=#. *s0kXzTxʯF͞;5cOd+/Uhvm )o0ex8qycwT1oXb 8iȒG `@E]|Ƃ*Q\hz"bؙZzv T\ٵkLɩ+>A;t=+ Q~Ax:~1!f wΈqB*kL~\dfxȱ;Z5=|kYkM8W}z퍴NZZ.H ǰ\ 16崋n/r uaSQPK]0LWWtDіYUi`|VsRGuP/vL4}9vV*p> ǚı k1VF骞et?v ĈNV Nl!w못]N~6Xzvר$亚.7*kkի2SelS$z *][w47崋n=V%cIڏbE6Q9M$GB.uqQ_q,Eu-vHrElw81|y\|:>^Ha9XKVQPBް-TQHΰ\rjcȨZ’׍hGu{_(t{ʊa zfe[Uugn@yhM oLw˗ (xquxrqv(>Rf@y+ԉaN/ީl~rE*0*PѩtXVX>;5i)AƦGi!g)Tnj꒚q:•lvdp8r53o|Т]8.0Jчz$.$ުM[=\sBJkm XB$ qy&/E|Ipy-:=K8ƹ-iKM9rPuBS:k'&ReQЬrԎ Mr,k7o }nʷ<;n>RF u^Qr(Iש{禜vQ7۝S#8q* _lX Ay+\prN..5˶OqA)/yh9w_t3E&\w.ƞJ)]v{jZTOUlCUjW#-2XOb.'Zܷ9)5˶FRC$|;U%-@jگK @*!դg0"5J8'zDY90nG* w9)=+*B \,]5v57崋nm f= -2H Ś$mb7u+F؜sSN#V`Fc;ԏ(-}`.'gؾ.aL=禜vQ7лWC%vymTw%5sS^fYb2zz_)C׾\- |^mֻv7Q9Łe"*Et-2}BWp ֤k>)]7vⲗBn ?.ud{!K*rAtç#OsSN}^[r E ]_j^[[az/(=мcԡ愔@/۪c ;3[OX;Z6=ͫ#ĸ=Uu!ouI 2pTpiD47崋n"WxJg#ەFyoxnw}q]}5v57 ӱ^/ sZ(?os|r<r,[k([nȇBxSU gG_چ#,XO>M]Qiëj[vT?#He"p- D;nQya='K c =c'ep熥el()cFVy0ѬPL][ShICY *$iaלP5^8U $;=!0h%J S'[G~}U֘*P: -BH.".\u1'=Dר9!=*0kÀuzPQ-.ݓ؂0l;cԢWฃIiMe/ӕFō贪yr*\^uV|ȏnwh}3nw%.zQnÅ:F^>xOkU/tz"g-1BsC֘V0^ b1 \ӂGd;XrNDPA܅gb 朐e[m=bhw77-)81a;ѳQsJJkm86Wql4x J.Eny7OG'=j4 ^(K[U4֭9!uJ;1RfՓ`Q7#/ag'X: 9!5KrUU ; Lc*;fPڟ yWNyYA5rN5t .]M9n;%qw»HU!aի-+FvJyAt\MktܔOŁzc'wnwwC`OO`=.a(VObX=)embHHRGb8zQ6 )^UO {{q^j8tYEٯRbQI4#hnʷbVc5(oQ)}9v 'q icGK|kv+`k#8e͢O>OvPˣ #]B=]U8 SGg rS9mE?hQ_(#jA0u*;tǠFؤec+uQ|eyþB6^Q9Q\vgO7%U<3kؤ!6df\+3BTR!|(_Q4yCpfdF4?-zboԓ.~gAGTw4 2  ]K yWFvUA0Н6ƞJy)]v;!;Fo0pLGvW5!^H::0\35~jNH;V-]~O昏`jrd-!-u5"g(i^@= |Bln?(epD-NpQtY*ӥՓkMpb[Oz@oyURu[cz[V ڢ9M,p"Y^QuFg@`НP򡒺=.I#A@sI,LA\:UJ=tJ96({CFd*3mWXL ǗynlN8z/Qdt=kQ~E{5˶}NMux1 OeB{!V8P6 ^Wx}OJkm 2b'mAb:jE{‚`އBA|oα4T7tclPz9n;R ɥ<Dʞ's(6)bwIly!Ł :.;]P0-/Vum隃&O))]vDe|pZ=ymL>:#k3p0,1̏(.馢9!]:iՋ8Z%16 UOlf V:NxjpbԞZ%1une[=#z%ؑǼ :u^Anz?zqbC4tq17ќSmB/h|'1t[7+_^?hG=JY KkT9!5˶FaM ڶ*d)V媣kh-P~AUG ];ؤt+䴋nOEy鹕b s^|tZJKa_Zfna(bꡞ`\T1h >r&B`ȹ[QUaxt=SM(Y5jͭ1uYHkю VmaCvCnm(]T`UnϱK[rEl.D} >p GEw41r5&]R;oi"d_JsSNv{rqX"lط蚉*_T-8Rŏe~=q _};RbA!o@Q8KozKcOineR]Oc+y"\ęJ0y7Q8T褼6l&49@ĒnqneWW]LckhD{0#Z-"$]RѸřM!hOc4GEl/ oNHwj ,p^AڞR$Iz[iԥ' 쯭)[haʽ^7Ul釶˸.Uմ38x-%zw ;v%{BC mx-J[Z!#V [[ F{4MJ:!,nkpU FB@m.#Р詻T%^cI]wwvGBpa!KܸR$'LEq;q3GЀ&]حeQR 2{g{əB]R7 q 'uw4v HsSNO?7`cJTAqgAYG2F78pYNm?ns\vAcpg]jQᚇ4B9BhǛuC_Is`8(ᅮJx16䎐/L7\-fug.]5Ӕ9N:6VuÇ $N:Jv8|)ppjl)4VPB,'%r('@ ,%ꐀػ@ -t?vk*Ao3'eWwbYG'JS5\ .25vThnʛzטn;竹taVK4k%g!*K]R-vr_W]()禜vQ7)DC)b־`Z-0@h t*(b0\&t=+ը^ū9!kkjV ju\ж"ohGA-/jڨI[@Wض^Rf-Y3RAM^+$(!T8UTԭؤ2C^Cefa4x[q;K?.c|hAi7A{57űnGr.n[qDoo EN" uozP#^lI7ۭexy[+]6 lލf" xfl+B]itؤt0h́] ։s b7nx 3Ƙ|[kPQ!^j5+C&ʢ2lwtBr,\WYN&P(KW.fNIҔ|YI3-_`ն=ZWT7 #2}\#}Vsz9Zc%r.^0Ch$"lzNL{o>[$N#\mϖtz_+kҀm6|Ê&dr&$c{"[§^vQ7YY]qyiW5tJ֑{bIótVB<ޣ2oElw;C_ H5[qlSqtY;@lITdhco쒮eؤFrnSvn;~ƻ[Qn/eg=Ewa䎤e]qfn]&߅q:cw~)=_x;.ʯ_- Uݕ PuAb\vZ:ԑ9z|nV3@':JޱPTsq,knet?vyiG {R NQE1uRHY-]p+RgbۿITlKň2T# E]5RQ9)ef]JkmUh 86s1?仨d `VqS=|t*8B-G9_ŀvE8`K!{1]dե`{IwX=R)]vw9:_A0j]uJx~֤4!o@\˰8H݂~q].[ǖ_oHN5؁w`@zY"B+6L%tIH-Wp[%y`m)P mx+MvoE[A=ݱ9ְ(+X82V̽(ҡ݂>1)]^ؤђ3B6%v2LpGEe EQF{s)]ʽxzK ^2WI˗aԫ5˶:Bsju0^AP_WěwǥCpOoMC mJl֣3OꘓҢe[cx2W] [m;vs| UBW8s]kQWM9n;;$Wqƀ,yQ!߸S\ 4K榜vQ7⸨.@ַ BEh.q&V5,4p榜vQ7uc'shu%ծ(OȏV>΁S# -:^nz'sBXT{ܥ&xjvRu8hT}fMrݏzJNSYo}R_Skѝn '/Y-f%==`Xq8 U@t]cǨxvy Ox Ʈܔoa@8_&v?s%|,"o`D n'8eMnvwat?v}i * O5-{v5ޙp>驠ɧK*N W;N rElw/1Cj;"J򮬦SDqlt[p5,(pҏ(/\Bcw8$ىSMs:y(X|%#\dͶ=/CcCrw50lw8$ٰDk8hܷ oG.=ʭڑ<}ۤ=lx١^y 1Z-Z425o@2QWW8;E;xrݏݱ& oS e&kjr@֩c6A]cWh)*|cգF|E+m 89)pRT38b$]kc?hniu]55=c]/Wcu|B=SML<@Ιj25ؑ3)حs238 F }|7=*H]&Z LׁYj|Z͎tmI9B^Rcw${,c ]1٥`%]Ro⠤M;)N\#Wg]lpYsr uI,N/u 4pͅ8䴋Wd{ey<؛rwY^IS+E^Yn; xrT&r//]wSRؤ!BЕ4@2z89Ės+=fm3 :(sEj:.於n?v+(1 yb֨ESތ䮚tIH#[prlP4斜vQ7۝@c۬r,^tfbp$c&ݣj8@c§mnnc@8֙'s8`W¤%ec4S16(|sS.[Ϙ'`E$`LZeyr}yyJN|p%gH'ؠi-9n;y~2':ԑ&Gau,DW3J{2,znYcj ~-9<ҋa@3E:kNHi Cq/ꯧ 7ʹvY-CDu>_tW`)]vhJ9 ΅A#`ӑo cL4aJ ]Cinet?v=R=.d jx 8)N:ɜ w\4V|Ԇͩ-@\3_1.fӱ.-Uq[(nrLu |aGݡ-m9ccK yUft]ePU ۺ=gPyM^SCe?Q=VuUP*n}l NH8Cqȁ8cE6tEE8qЋ@U1JLsSN['(?/|<)v.ŤL:;h)bt]kcGLM9n;f\E+f[w ]Q1:!c~\yor(w;u;cX MVcĭu9iɜf\:Ѧ_kU.V%~-q P5c;57崋ny'mwr?hǽK7`XTMGeCn>6)|EEL7ۭe#$ZGy;*JU汰n ]Q:Zn7UQ[ 9@Aa#hCWn8L Iw B?qܟΜcRf#ՑaЏz,DxV].S+*zCu W9v $f-V{[g+_wl[8{c*\3 Kz:8ɑ.x:榜vQ7,N'h ~0Sfs0(=cc|#86)=cR7>}DXbv72[>Լ If0G*4|lR~;.Mv!:GU 砈cMx =stגQ!ב806)j~.fc#͍ulSPnlzD4]M_$YHI;57崋ț.̶ڞ7]C >X؛#78GXSs ^Ƚؑ)]vRr)Z*qF+颴%R>8pk9dSnWR41qpI :֑H@"uEU_1$RNcН斜vQ7gn?,d]yfT~-tE935sf!]ح+pd5hwrDi>FMΓ/u;>͓1zO c>斜vQ7۝|X+VNΡϷLx4W=oXq'rA`t53gSnJu;>57崋xGOLJp3c9V4wwFvB'pRen;by j`飯ӂoGɊoтJ٦;c*>ܔ.~y}qL bh+;'.TINCuix57崋n.|~|%2u9ъ=&]R+vBwWͱ57E v',so`M3s&NJGLz]Cwx-Nu`- `sSFl)4+0 em#hǍ\?IG+>|uBI;Zkniuݑ6Sz#NH!Eľx"='>v<D]NgV!J՘)Ǫ\6)woR~]dfEdfCK.3=.iVCE1R-!]{zQTAtAαSqplR >VXJlw ?4(ȉdGagz8%h$rR/MQ툒 ݐ.fS׆o:8Hi[ anG ﶫ_gP#Rrti#.!A" a&( 4O Y:hҽj8 N*WsSNG4z8$$LFOQz]jiHTJ(;P57崋?)#dr&&]A]t3S' *qNj@5v5sSN&t഍'160SCa} kHtkaElҳzZBsBJkm[=T8Hܘ1͛-17ϔ.4UKD0<_ eVFeyl+xCvDX=S`ӝލ*>Н1*"|NnT.΄?l3kc{nFԯw ;t%~O.~֕{=Ⱥ $򰪌1uZ#67mOǞ')oM7Y/Hރ8,l_ˮ 9C>q}r0.Slt UWIrwۯ{C3\gҝE51̕;{ 1˫*M7xWw"o`ʓUkv_')BL+=r_sC.;5ePQ嘨ˡ|M &;է/H؁!]ح&"~HXbR&_Wv"T^:<]1.f]<ɣ89 ;·(d@L"a&]R,Xk>v#knʛwmC(:/LJ7*!w芚fKa+tܔoL7sul>`F<+B|=zn]/pOMn;HDrMoMTGI/n }5-'[}H*.]Uo;]+*vXϱTʲKFۢt a%3Kݭӛxym&h;!^gg6𚳞ki~`|"&JݩfqW{xβ榼tQq:#?Y+\ܥBA:~^qVx96䌐.fFuNIݮ<èÓCXctIUS5ab.f#*7,rQb)(^}ԅ:tI>jg]c-]L^ԟ}?v)xּjxǫcA}q)5thnet?vGB'$_cfo;9ƩUx|(r"@#}|M9nOfq\gqYl-A^"=Ntv-o 4Ok cؤ'=tqGeOoFe EZq.ZRةJsC.;~LJqR@ϝ"Xu۝]XCtiF=^)]v}b#BQ6Ud[| Lcj8B ysS޽1c7[k$[FObXJZrV;͓6}"unCbX,/RA>-Z]޲>bARj!)%Hc}K2βe&ThrZJlw^X\e,oq~ ')(T鈧N7ːYc䄼[u->cN,dX_Q%q2~RcGKl9Bcw$:3hVM'E'AMc c;wjSDT]Y47 l(8p("NlAUa[Úp B^QGK]Q-z_Q5vq榜vQ7ąoQc"m# 639%u-$JzAESeUz3\%j=g_{Ξ~=/+jgW:aƞ͐oHc ]*8KκopKH F|hȪb'zAx9T6V9UR#]LQJ]R.s5{8UvM5(ilE$""ِBwp8d/S Aua2T"8SKiWEE܁oWi֔ESƪV芊rQpd]qrOj];6눿;o=\#^jIg]ʰ9ifc:tؤi%v+ ݉+qA`iKy]Qá{HʹWb;?%BdؑI T kZdn3(ƞ᤹*h+7byu;t-,:q}Uq".^Іn.=e{SI9e{8W^CV9(m([Ż?ݧ<͠z.!``ЭhnC ;A8 PDZWbӳ*<5#tEU_ߺV>6|W V֕ GV,dW@tqZnWgvA)U <ӵSvat?vGe.=x ¨˹N|W;7n 'ƞQqTǓa ݏ6"JډU\oRظquE(u CclP .~@A<A)3>]~7GglF=0`T?;0ˇM7[trоOEKׂ,8hon(Aˍn]jy"A.t,&o 9n;_:qB0alxp8]'+Ki.Y>c t?vGKA[鉃j>,aҹO4q}8.KD/p *[P̱Ar%lwÂ^I:Lw{،;%?lPBwnv.fpJpQ84>N)MJ)Mn=*n$i|*Y?v9WΎ>Z3N|I<{8JFJM9n;/ U(XVs =(H ^ jG#vr=iSLU`fدXxem)}m Uq})uZxl,ڋl=9B|{+{ `K8nΫvD fO.rD5榜vQ7~AɅFps )Ú+ |srkPSyinʣ)]vG*HI<׿|FG$ )#z抔D!.i%>7U[{%V{FfjdCk#@Q[1>jE݆Ľnp&]vw]W| *:/fжR)!_A+T$-c,عTHtݺ#OE qUiԔL]i&t{Eeh8qp.8v./PB_8ͶQdUfd|+a`V4%g.g=I-禜vQ7iI@+q#ٻ/' +ؓ+/;ԡonC=i-mW疞qsQ.f9 o,v;;- A+H|xĪ J`'l;nbnRz_ҕ/z\֣J׫J=﷢J'o^ItWl4kޡR@GqCܔo?ݏݑZ= R&0ޥd6DzȻvu4 / {IcG*f*n_/Ů<+pmeBkOQ#}o&.tՍtcҝ^K«[䥈*ř-­n MZʯ8W苃I4v }My@?v߲_-;~F^M@gѩيm 7J#]|lR~ϛ!gk7.":*%:@w&]R= .ɁCthV'sP;z}5(wuoHl+*WUgQ?g]u\I7bH{ +tZΊIl2|lRI!/ )o@\/nS;JfL$ݣv+>͛.e=M\nFf7xC-yUKQ>%W䜈T_4XHvODfG%,摧2ؚ{NXI\&ۈV6f3?`!ogb-6Ak4ř+Zzw[%U ͐;2sŽ!/{s+ tIȢ"M+qα47]fтQBā_hvUJǧ42*O Iw)7Ɂ_a`WQFv:fvFXȲmțe@i{ߦ˂%i;"dcx"b%lw,Ax6xհ ','黻lWؤD KZ4bO*m1 <+ ݧO%tEE8c]ՐoWS#F9%27VBvO<2sF9%a&Vٞtv{ޡ <2]<)]v˟*_nPL7wn]4BR>M.;8ծ-vrElw4[Qn@+b%TT\~=N ˻ȓ88P-ؠn;䴔Sb6N<%,S";<%yJ=v5DغB;@57 !\7Q/h9D3] m+>t34bϏw_"m.Jxe)t?v[ Q\@L7LWRnr̛H*yd4s|(Ou%ݭJaӢt[ainʇ2L7垳waA:?XU v7"  O*tԏ㎬Rwd.0\y,P׼ D JC{'K GƎ%#aY-e.4#ˊFx;#݇F5Aii t8~{tyjRWIPCq9]t4|o-I@>崋+ܥ} g|_I3/+0|_Ⱦ novR$(Eb1Zݩ6 t c,9tc5v˵Ts>%]v;E-­|:$MǺDXf$4pktinet?vYnǥٿ }GjH;O@RHƓըCA#i Ycz[Sd8@Β[kW(e@(K7tEB&Otti5MVUdqAAxyX@oyZ_^a9G]Q;zeK=fT#춐.fẌ́ \cΈ u|?-p!7zt"Bܔ{f ># /yF(XFt.5v einet?vG䛈4WM5jFU"QMޕU(7/Vt?>6)EtYKeK be+{"G㒱=Q,YIz@JsBJkLck#|' X8P]bD; @E;KӇ ()eVc7( 9{e=WM9~ַ@'[UO4|u븡\İY·Fi Ycz[c;> 3s5߶bڢQ6dCpM"c\w4'29S̜il;+oD4[s,hx1wuS;Z,0b16({vQ7Ǫ6ʲO1|P=?+"XJ zҭÏa5ҳrN՞RZl\@5]uS iC Q}Ҝxal$._o)t]5Q&9s1K*g.>7崋p^8ap CLɯyD)ʦ&Gat*rG`NbNʩ+&w4Z fhpLE0ajGV!0aPGjAcB꒪޳AJ{VsSޔh ^"wY[ac/JS[ru5!PO"#<;.Oc e>ɍFz Gj!?B]7<*Wz@rSMq RV6%nc6URY )=[y,bX^N%hNHi LX3_;3S PvR^23ۻ#'i9Dsu,E[?=E)Ŏ+vj S%OJhe['vѲŰ)Xai: Yz_GSq#1jH>NŰP=Ūq<'u33C 㣂s!kLcӳYv/. Mݙ nv,lA@:(uIMvm"6^sSNO~Kh|"/â7Ζ:I`GHϒ4gEiNHݼmOє3Dzrԁ;')Z& /,% ^dHw9XcOsnʛ/M7͟by*v#% ~ẇDؗFPCH5+=[iTyiNHi #u x̛ܚm-M~z"s@<ԓoF 焔@/hRW;q]gjQ׋pת4O~m2yW5%"D;*57崋n*qG 'b]"rK7y8$#úI|5"9!5˶I*H[$a󽮌 ^lKh"kBғ$ul٩Q?IRZln״Gg;TwwKOq}GǂSUi $CV~o:Q|&n!q tz#Ua3o>F%aҡ©'16k*vmMw?p77]zԗs 1Lq=KӨN:Δ@/%/~Mג3smXU]Xkl;HFk銹|[k97崋جj:|9 4ɦö+BqPҝs*ڤ*d9^}ކ[l+7`WXT %UzaCNҳ]5˶F.sVDr?f:2؇I gwT\A-/!gugkknet?vGa hbK0Puɗjޠ'Eݘ{?:MySf,b{qTR~TX7#2rEl7)H]&A\5{?[ ^ҫ^XObQJ .ЫcT\qTmb-=?aǙɁREMY|TD 6tcQn˶wİ)DȏQ]zq &1N?61СIsBFZ+QAj+%A3zfWT!L)sֺ=Ro0YHZBԎnh8BamStbyiL`ǘz0CVoB>!]*>C4a5XSR{#׬l7-MiRs-Z fۓp4]qֶ|Qw}D{@ hF ГWhgL ZPc5NXSJӻ}xq9U65_f{~5XD;`S*wpT ׶׶|;0߉2B? 3?u_(^utKK]"y0F+8;ö)^up0c^ 5^R()>Kr~.T/pZ׿{ޗ%/͓Wn8x7:PԨ>˧kjĀ8J}˺Ze;pdaTV?~Ij/_8ܛOU;aPfߙr vD']T-oo]a FÀʢ 0X pwEWAlx869:sG%zsJSW(Kp|nͶ]-_ֽDGc9q2m=9:zH8Gt_=88 +#VE8396 9z?&A3Rx8!hh,"{m\p?ۄ b-C%5#b3`\"hX&(y UGc ۛsy$ewT9R\o7;[YB<1T6 wEov^8)Cl&c;ܜyNn DտhyGD)n{>=.>retXpOf2u(SJ]l=C5x"Ԉ|?~w)SF~<;o:{ȧ?a=l]pnm|x?~g^ُcT= s:fszŒG-yG7Z@OwM;w@_23'ṕ1`D'/jt h5T1ѢOՅ>/:kwW~Y;wr7T޴۱nظ(EឺP` Ed#wspjsPvMq1{7M}ɔMH[Բqg߹jY3vUM2K{Wp:_=3A2M3NTrGuGMǛEEf|Fo>X/:Mjڣ~ O9ߐMqj&5̿[:Yy%1 M1 D|MZdJq tTemuo tl!Ҍҵ[NgDC̳w*`פw_apt='XbJ Uх n0/Տown[0jm6X Z8PYHjp  ֶ~Il c xm0ݙ @ؖJ&L̨'lzȶ*—A"TX5Y[㐵&S86y[PނmG}=mCܞJ0v-2گfFyگCnF0Ӌ}+l"G=DR'kQ\r72C6-FIm1Fȍlkɖn8K:1&mmSQTtb{Ix$8j4Sw5!Gg,9;ޘiU[$ֶ|!sto4.op\9@G@i'Kԅ ܗA/1 k[L;2 W=o'Y9MZ9]{tS  | ~S>ύ%]mk֮ WwT'ة#V݅uAUmH^z҅GEe$l=otyH)$8WHƐ+/B]J+]p{$t5 =f˺YU܉Iq9 #=80rOIG5*yֶf?~gaTfaTW௪0*(x6. rP s'ChKO¨SnwVy A 8H%nPfIyvxJqtl*5¶"[[VoE ̾Gs|;Էܣek*\s*{(aTnGKTּ]ٵ#m;!yP<2tz>a*Wng(=;KIygѽ.G#Ѐ-?Nj;B*03!gkƩ?^9G*X՚=ݾ^.Y )&H!p֡"R5ߤV4$et5I3iYre,Z@Z &ko: _- _kI*g]/9}P>.47幣6='6wUt){~z+l6/~@Y10im{}e6l e۬mdӱ.:f#Qe2CLS5ztȱ/Q߹I“=2<-w4,p^U%:*s|=<CԎ*NIۢx=rlRG&Ŗz;Ejx R}'Lm:FkԦGBrnƇ=s6ɩmC|丠{m˙Ǜnr}}"GP{gF $XNΔ~9p#oEXH-t$]K! H?N<ɜ~]}ֵov6KTpʹЭkD@9k#ܧ7Jf٨pI> J|S8N2wdJ]ua;bvevtofY0AP{qeo'[1A83Jjs+K9)-8'E\3ݕ4*/[jnV;ye0M][3%99 ;)N G=N( JO?+ )aݭm {m˺YnH.ݓ:jPUoK_X9TQ{jv.^>(2LɊzs|x\unv~x+cAT8|;uX5qw+~L&yӕXՃxnTo2Έy0N A8^R{#W6&.oQ]XvbڭmʚPzM-ݗ tM(ąs΃-% q˺߁95gEg6z[QcҰK=1 {wRXYSR{#-GPʠ y*ݴ(NW\kgtuUCbmuo3ʣwR dPĵ"]TxqSrRH.bbm#Kg쾇FeS^P, M$h]vmĹQ֕K;2n!p2S!/Y y Zy3l1S^ZRyc,I=u̿ӓH p܌<-/`E޸EY[ϔhI8Fi9 -Luq^iT̙P9VpC1 n'fUIe*ouodo7 dL#;TDiS9yBԱί HIۢ~ "3u@t{r#Uk7@iGWslsI{+%5s*Gqe!93Stx&QԺmQ'Jye\RtgfNy^w՟}NRbg#˵¶)}]9;w]y'p "KKES{.r^=?*37ϺyR[ږۯL~َbvp)Q &K1*V!R*bG`eҎ-J}M0"9c. }OD|ȃlu{ [ۦ@A? _ځm0j퀵57u݇;ϥ}/y;?~gC#n~O$(bkS/\۩ co Ǹq/#l#X=5{c0qa}p4KAMş9my00vpƉW|x<[g I㍡.1'ֶ|qE^ONi G9^v0/pk|MyT]S-]Abږ/~Oaڶ:s ZdZ<򥝭upt(mSĝ]p1}?~gKcD1sZ<&i_~vMF& %Z6GfZeLg?z2~Sى{w@E:MҮ6_$#ۦ؉:1iҽw1#tX;C?!GBy'5G5$Er!)B_vcmrTC%55HHZWO[l,R@goMe(dMPSX`Td4/EݬkmՆ ۅ#_8I5wG.¨_B<&/8CVz R{#׌_o#KάCϾ*EڈG=/{TyhӋvֶ~YLcF{F&f^B01>n2+-𥉉&զp7tM%0 {BWÞ=k[>O?~g'wv6/AFl! FXۀZ띺@Eΐ{<j/Vwz=\7]ugP )l>JC8v*d֮{KP3>.š,PuY#3UyvE(k N= \C3 XrȇWH_jLlv_|PڤFWQtzY >Q6>¶)ˮ7+=7ϱG\r67eC</]S9;`DӖ.d0utG;#B  sr[>Ā$DPP--GeDsk[ɟ&БɟJšO)A[-?|런yURW(:Nֶ<@g㷣[:FW)ng>[HuT9ƹ;"V+X֬3嚢`]/ 8|w5IƶEqyt`=$=(zqzm†܈]s>iN>;u:;ֶ~5Z[e[A~6Q4yQw:Pfy?=lf,5΀Wk~Y;jK.Vhon8Dm*DAPut jXXRty$bgS!^}[&7CvYA̘e8LؖV{ \|{ \L.޾n,_Or*8鋚)Wĕ6H⪩[8/Y^/~Gz{AKFhO3c?@NBߋItX- K' Lowy!}h^:Ÿ=;}U .*T |38ʊ(-HUp&LիlNȼjw0OMbKIxdigk[IL s<Xxz\ߩQݾK.jtM=qĀ#3莳#k[n{mV+ڬη][@fjW=|ȣZ݀ԮuRѪ݇#$Σ{R3Iէ)ӯ38'u=ѶmG^o:/C)QFo 0.wt 2SWYrekp$㓇2RJnOog Vj/[ԝ+ObuZx StrgURR)j4`8J7)ٛim%վ1Fp46 ]_&WZ)B2fMf}75Scږ/~sG(pgoͳ}Co־Rqcn ۼ챝mwB.޼S7zm>#i#Zˣdh ΉZö)}z~zw9qkrbȀ/3upgT}(/!źP]pԹn&<HZ#h?Up7G;2h q%{Ҏ| ǛԈl*r v^:nMem'{.HY;uUj۝deh[+m.Tp2"JEۦ}_;a" N19F v`a{ k&EΦ>[6\Iw~79 y]q>,z.nZ~.Ԋ]urJI]`]xޞ|0wfe(aȳ&_"!7qqʥ^M$ as.3{Mf ˺ߎLl H)X!:,=8(D(q O)U<#zy/0AO)p _WãnЃKg*Oi,(PIVcuwisH>l~fmuoRGs>*e'ι&Us9J:HrmS\<~9q{/pƹ|2θ_C[ޕ Э+aڒtNPWcX 6hN߱WO͢;r^|G誸y>cmuo32So$V\Fi&M1t;Ս?؝ԅzv$bmuo}j$z"hҩF1{\5-=joRY(W ,amuo-fsNUӡNFԅq[\7jѽv«6N2;Ig_*LhO:hD'M w`HS\ww>giUlT1r7Z7p֠;4y>GG[NFRs=TH-Рzct3*ޤFRh-n#)o*hBzY Y*F/P N*Քh.Ao87k[n{lެ țߦj0t & dfш3tUʉힽY&ޭ'uI8z Nz6~G# IyDûe(ԚHg-{~}ʕnΦV-thm{n.y5pu\U'*ҽ6p8Yl}hVȺ=?ޚSW-Yֶ|stoQbf!0BQw0JȗJ*8oZMQږ/~wG]L;4;^`kM{dTO[+5uv7hi%5jCaƒxS쪰`>T$բZb"K4Բ˺7U8٫hʢhk_iKі1vλ-_ֽ{1 Xxֶ<"'G;qd]U~_%P*d'uv#k%]d46@sfG0"A}X*Xd4xh7VXSFZӻ}۽QKW4.N#?:pNG-1ƣӰvgJtoh?1.\m5FEf_xgtz:<Th_gtw兣'gZ8͚3mܱyYʢs0|#*ayaXzEy ٱEth%B]dn!s;Ks~6Q@ -oV.~yԝ_VA 9~=ۯ6v$V6ţxM7{HPFхnm!i;dű3[~PA|Ӑ%lϢN`=vپ 꽶٘֕h\ эd߮꟟* ]gyӮú$OX5uaWזKy/;_.}}Z!H]!9\h|ؑѥy`OϘS~|c"Щ/,[Ҝ#!v]׼uMD=8#5/ۉڞƤY=e\8ZL6braAk* hTuU^F?&8z o&bKԻSK~ eľ-(8,9k=`~Y' ݺf6E@~"Bd8Fma;G %_1/GSk[n{Y⻸a򓰜M 7W#ߴA7oV8,@kYYA@~g&xJLm)3w:ٶ="7B.TNSԄ+r.9 k#_ֽNO7TqWy]>ΩajRsk[n{Ln Mk1k3 8n_=Or.tmSCaz/~ٻEcp12<7&59G c#c=X/)4D#ah&^):_.WoӚJvJ;8L<2/DY?nO45+;'lND)xoY)?ߡkfٜru+X 頼)_ֽ{W I䧲x#gѼ{ITR_BbqJQߘSj4oޏy;|ٌs_*g'|}MX>Ie1 ;AhD7^ȪfqtKXr8}}Eu62tOC؎VX[rd1TXz :$sa?),IV&Σ+Lڥ{[#v-QN۫Zz#-]5F9-%*yY[r(A'NCJr8BT*(܀BPk[n{}T!k(:!BjeP]ꊲ:}$>پ'imx*x?cL7\Ꚃ9%ZOMT8U­s;ږ/~<̙ BսӔdH ś n]S5j#@mϽ6reo* pN*ji/ͶS>k]S#B\pb"ږW{w6nOn G"3c{ s,ܴc;~j۵{pmyckqa5QXfC'XP\cIRD+ +1";u\"ږ/~'٫Mh3|hu[CG7}B%?AlmU`&8lAW辡t#7uMed9Khm/to,f<-P])Dv!](Y'κ(,`n}{Ot5% KYѽ+N㚎 #`]S%G`-PGH̋mofFůнγWn{to =q }Px7Gw̛I=YȰi}z"##P/~'zkVQU`uQ?.݇_:x*\;ֶt߹cGH:9,~#P` e-_ʺl1{)z3P^ {7ex s#tÃkK_;OUg9S?G'fe*;liO^3uUʌ,ufm+w6L;XBUTXAӨ%4egB%+ l_XB/K~K;z{< v%ԽB~BTqk(EQJuo/@p~SոvN5_H[.T'9EmӶ( [e!:C@ʁ*9Z$o.IՈt;ڶ8O/~'Bp3."92[Ew_w@)oXʌ9@BwLZ3k˳Qnmwp4= Md6u(dm:-_=nep C5my{;1k ]PUǫ}@En(JGw0"tqvmT/=tvd?ץ{REgFs3 ?D2ʥWCk qGn{ ɢ5Ҿ= in;Ԇ4/x'ېR$ }P֞Q{~Ln`y1vMp3<{u+[vY'Mϑ\͑Z;cF N?AY@,.='VG&բ N=It AbD :kK_;v#8WfvJuV+M1`˻(k*pTj4 >:?N<~xӲgk-8[#]x̐B$bVdJU2 3G^:߹G@8T;+`L(vۜOtM]0s|n-_ֽ"{w12M>/T|򩓕u' BqCDXfel238up2ϩꄔ?2ӿ35d7lN=k[n{{'{d;Q7Mт^9'ur^*!L*މ팇K?~g ~2T]'{ c{8ەrތ.d6T}Yuoqس 7u):lZ/yT z fKT}8AWU9.Qږ/~gd=W! VUpTj YUi]Sawz;`;7l-y޵UmwOwT꟔oOXT,qbDVlkްm*^;X;KE>OfUP|f])TY$XX3l"^ߔ } PP._PY},i*b u N;JV޳N]a^wV`ws\l:t(~MbB Y{tϞ!lh_ֽS0%M3Q8sR|GR3Fpѣ;4E>=Hq_ֽΒR%Qkzsã83V|tM,0'O]gexm k(Me%T-7a/'ߕa .T Lq$]8Q2ݠ~z}H>(_ppazדAf_8uG-_,|E9t Qٰ10QGI]DM#tDM`mWSy\IDiͩ+YtW:=fbˇ~ iH̪WESh_]I*/"ziSrK3ЦzDLoU'L;^}=xK;*߭P ̕GTSfŸ7uUoV֖wWn}~1φl+HyYs:Btͬmw( 0!eS03[Jr) !EWJLY[rYohۛ1V%ŏ 5>Dq,j&)̌yU.%^ơ}F+hX fTyM;8uͯԅJHp8^,ndmeG;^%hCs&yrNqUTx ռ!ST[5w"#˺~;.jV)k\QxtMO:{$l[om˺ǖii*]•~l̐o>IFanOn06(!_=W^UbTqQUPgɅ%|_ú.k#|&;H[m.~Ph o 1^%K1ub% #YfwFVdtP9j|w\|Jʗڌ)-:^vV~Y;0n_9,WRпsTxWzzGz6V/ד:l8OS6JϔY***JE;`/G޵ngO{tJE;1=Tҽζp~)偳>|V$h (vZ #jtUÃﳽRb#F`pUemk|ʭ}]~Kϩ)w%;6(Bö)'71Q) +~! ft;EN)(j#uk3* < ''UKwQ11ѳ}X{A݅ҽwт>3Š3[]ЏhAl"ö)SŤGJZ5C̺[Ѷ-÷6rw÷UK÷j' SHmzʍ+i]Q;, n 흃C6r{jo-<!d8UV|uaxB4!U7B!σmDږ/}!Y=7)M2 1Jh_PMGTLboօ*9Q!2oۢ|re]vS$YwOH % ļnistE-٧ =reo{WAWܣ1pIYbӣiᅨ3-lXre+Ei[Bĩ~ҦO-Ci6F蚒@ứ[Na%EEM=t4˶v3K[8;$Fɻ+kwZl:=u,兹G;Q"H{aS~_{˗7G\sr4uǃ0B rKwG8)}f`ǻ-tLS8)M)}x:<(9SKJmNrx:}t~\!/ͰA7Hp޳-1+j)1~2: HG|Gwc}=5lҧuȣ_~_.aշ=lt ]IR(tEG {XF;ў3О޶Ci͢!Uښ^i;8nNgO/[ 5:YB~s4˴ Gc_<&:M }O-zb;x˺Y>}F8;aenֹJybԼ]){ԧe3u, O8Q>8Ub K,/ijs'خ:ږ/ >wT{}U3(޼nb-I=a޺Bvb=y;S.]{:u۶P((\m;`XWN]֖7e1$om w_vb=-* sF. ޥlslX@ؗm]c.?XKyG(coپTP#9W%3F \5Yjn] JIM v L_HǺw|ڗW71M{.]S%q{/VGmb?ߔ/to9V,NSb{{U{E"08*y?Puvpfto3_g[|]J?r~&@|L->Rl(cm3q*<-gd3 . -;W]Aj~U:j/O O_ d~٦4hpp^UfA+ֱ#(tIjֶ0~gW牲.= O;&7z]VUK 兵-Dw"XzfˤE̜%ԨN䤫 BLؗ$+5}O&t/v[YFIܫG >(cFܫ~F| ep{=]{)Xi?߹|)|_URnp5( u16v [^[rsLOH.=K5Z.ȡW[JKɑTAhtϱ3PSee״5Mu~a.p]]Cg^?.=˺'Ge>+P+=ȷv5+q6彞sbF.нXuXuqj㸥vo|k47ڮ7WN!d6dW\UGX C1񱩚XW*K#A(f?VUi_jmQ<￵:{zw,xwsJv+rEVI$0dJܩlKږW|P6SQվ?JKIeN-QY;k<~h%/2e `Ӝk>3a_Xž;!_}8sL̾ϛ1 ;A'KKԈ N'(RlX1|/_7'S{zcc:]AcO؎Ƚ~8%{&e4p>Vݪhv(|j|u.wsn-hw /~k@͓sΞ;GJ{ =1%/u+5GNږȢ?~ݑq{bg}q|T>w{ ee+3w/>uEΉN,|60sY jѭv׶~Y;=!GY/jMT!G =a۔v<ѯg%91|R_p/ nѝ[ʒP+ kI]n/ۛ~Y;.|b𯱰`*F7@ͮ]g.0{1غرws/:=(NBG>9r+v[VNf펗^/~9̬їT PB_R[җ|pBaJ t.vz'}2ټlQ]3y3kG{~0{VB=q7HtULpBm8|&v m OٝJ&Ub#+ݛ]Jua!!fFm#@-Kԧ˺qsHr-B*7lT'0F@{z  -{x"sI%WTxB(mm6x8_ֽZsfJLHqNNoQ7 ˙"_zʇa[7V {ɠMmܞZ;a~w/ϋ9M!w~{@=: UsH9Wn94lMcmtμ+L zhP!b)){ުNeaNk[^B?*l7]{i/XU`7F4וT醣 9%/}z-1!ݵbܪ{"Vk5 ]S~7]Z/~=>/.V֗(O"AwOtzDsC@WnbmɟD-󷨬 U{)@;v-pYvfXreoXE+Bp92j#G7ưU^tފCֶ|p9<:v~zyyoY-;|ꀌ\atE?Ue\ܩli[{WSnO{{8察 &{RLY+Tb;9rCWzlQq28p+uOvzscKVu t'2cj=8kAeG-AG;U=k=ղyp_"NiNn77u2ܕëjd~Meww>ktL+^J* ųwmfmxK跍HöDQt3!nC7T6͔1̈́=jt"w%Sϥ(W'n2hqjֶ~Y'I͐._R?7)U-5P>]'h4Zaֶ|-oO꼮MQ#ԎbT9̑eO^M+x*^c`W/V,UeԅJ8FD,amK?~*9ɇQNGFʻɧ+oI*<iW[M9C owb:vN}}f =Zկ[?]ұ>l9KrD:(*Kdα#T ;tOQ6E֔79/d\y;2.F4-Eƥ)lPnj8%m_g~=de[oOތeMEukw՝VUΙ]=Z+'߰}VwX<3*6L&:<3ǻŒPXY;+ᢤmQDž-/OsƉ뭿tzLq-pkFK"ö)u|6UlG'+FZg2S+0+URiNօQG誗-똼mҧ"pyg3Te{ʗU,>?l+ֶTM}5[ӳns<%1гoԳm]S!G]tuvch~^#*P實7{6۹1SWcm3 n}?cIߌS3:u|aqS/Iz3G9~`59)+[<ű}u}.zZhL6L)ZCT^ ]ak[n{\I.$c<y}Kw2z7۩ -Rmy:e+ @5,C.Siwz;%\Yg3|MZOŕtz#چW05T[ʛaҭ~F\H.*#x*WKf&7jp3fBńnp3Wl׻)_>J{\4ptY] ~s1ddӑ/E[wQ"M5e$A%G(ymuoн08`*~s:ȦkD9d HۢHL2o_~geI2P~^Uv~h2`)XGKd2OOnٶxWy7ʂj.% :l];@Cϥ;^J=Pl,Z^wOJ}Boۖrn k? G08>Fl_G0mèѣ{n, sux(Q(*.~.)&1q_БO0#4* 4.p2&Qf-(k|PJSbz&a"G;A` zg Z,fһaKw8NgKes{ D< uOq-~mPg r?֍7DO ++a?O~to믍Cs AYS=#m07l_}TӺY;זw6}4^vyVJ]L1-٢tֶ|tZ78d;VkQ4J˺i/2n?lEzmC#ooq2\^®g\[!LCW-y#zta7îVe!km%"x؅[7 ޙ7ωo]O$;絓nl r~_CFfwCG,ҍTaޖHʯ 7M=nFbCCɯ&@/}RjD1"~ft_qAö)NN|{^ byנq5`dASFM'~pXhm S]T#Qz!Z򹼐8{S*wpUNۢr%`B4 &" Tn0tn|-j]l@&l_ H^reo~c3rA9]K?}hEkU>ʹW?kL9De{Dk2Sҽ澿MXt_>ŗq%/e7@yffQQ"SB_\11F@U#EEvI`5UzNV/%ݬ-9~e;߱Ѩ0+^jR3G4>S =nlmyo.FP.[RTˣFDI]1=ֶ~Y;JPf$ oޡ7C t$=$sB`xa5 XSܿT>Qeq{HhoДȧz U?-_ֽΐ˩hk9NXhJ%^'ڥ+jNݺVkFnO{ߋ{|U#@[iJ- 6#;Alds\j{ږט=Ʀ G]Δ {*n./Һ[H]~{}a;?vvxf˂QK(Wv8kɻq銒mK~Cwζwym{\,Yzpljm\cI\9TZ>yԼ_~'u@vNbmuogӅG9R=% 'o2OެiL]A [ v3@z(HTWcy <ߙ4 UP3 T^?ȷj"Jp ۦt{E:aȩE2Ä/Qs7`s/fVi6- M#Dd9 W\[SE`<;+y,o.TLƢ…@گ8u&#I@tE<櫪P@1RoZ(? G#dxYlYֶ YG'݉aVõYE}Ԕ?=(mͻ=ha% ׶~Y;pI94{2nϧa coPM,{nє@E)e;lr0HTTh\(YK/*s W%m*Y-SU~縀 =8x=1W3N])zC[Ԉ8ecE$-_ֽNx7P GS!Żf*gRκVm\]b{xmyA~y F7wGKa;Yk*}©g+?P%x˺SpT5MC]SYGU誂Yږ/~gUţFW]qtdƩd酉\/LtE6^?6=Ҷ(rږtO\T_썗TT"V.J0-TJmY {_Є"Emޛ}PcS,8l/~gk2PkQw:sa^k]5n]S3[QP]!8bGe(kK_;pbQs5 +H\E<o|r:WU'+'C,PFjoR9΢Gր󲝣Y[r9]T0siu <wÐ.uZqGk,#k2\\#HȜ V/}#kq7J]LYe{tl_K/ ):G~(T;G3 8˛EqyKuo y "޲1,WqPf)wfѺXb݊N`00y?~_U g>4pv˻ lMvt; znh+{֖|F76MH y3:߭翞X^3G34/Vegf_ֽ͙1/ -s*iB_C.~Qx^q4|Ӷ[DmX[=gg{Ԭyl0g*xĤ9y8ͯmI7IsnykQ_n1\7@0  HRJt+yma}8JumSߋ8OQHgq*,N?/sCnHg8t~Ɏ'iX2\*H ԊV-P$pc"燪8K=aa{F k[n{gN NeG/j#Ce n9%H>EKt]@Y>zzto3F9-_wYW}«o$UKoѺ{S}= 6^꺨v&ubJ-Rj) ].zW9ǩI#lp/(@+}(Fy ~glw';|y"H5sq<+g&<\ѡ[t޲A]Wmrby  { yR`G[͌/=!Xre KU5c}]YX_UVU0+=o# G:#<:Dq53F{K^gG*hږ/~g~P?s0VtR@>>褀3(vڝҽN39'r0bl7p;in"c\u6uxB>L_0{3قt۳  9ŇmS4#_ֽSCRrU+\㨢ȣgFP3Rji0¶)c!85S~_(lւS5KA(|g\U*9ZK3ZKm=m \~{iѪ9FFt"9g ;y`wKd.bF1E#UYږ/~_d;Zwyc/%޹ dɜ%ԏyٞP 4Ge0a  XkTOyOTZQGt~=kK_qEPߎs2=vKA#+SP5# 橦G#]C6g Zuj8#)O9JAሬmyeѽfF x*skk Ƹ Ec܌9g]ږ/~{̨XO(]\׮\qUnT/]S-D{ܺ%Dmww"M_HS.¡?P2gfX_Z%}L\pP17iMFzy:l-l-%ƖK\PAE[m꽶˺z1j֊i'38d'CSze]S5- t@d[ L*@?6 ])Ll.ֆXRP=3tMe;@wP'霺R>c,u9>-#= N -Gֶ?~;O]nKo_MW_ X&Xz險4ܵYapO">Nѽ$Ì4Qq:oIGLl{b;y^&'ɔ?pw6ES+Uj! Y[U4}Jp48fҒr4K;mlͯSoz r{mCHsXO[Rl}\2Ci&jm8p t >Go!Xw! v\E [ ۦ/GnO{%ssutJ|%$>N7*Io&#O6EHN)XewT.x;q553S@; c]7P6lW{w|{0Σ@Ͻ-&|v# oKjGtuJvrY{ﱮ{PPYu+LtFj:"9]Syx]'Qֶ~Y;KJNԔߙGnZُ%~t_B֤)j@W2t-_ֽoy(X4 vrwCv E) 3G wF&Bb9F33=p9=M \N#߈S<|KT[/bH¶)ϓreo-[YL1neHc ,;HASny%wX < 9z?VYo+1Ý>39p@}Tūғ玼ӡjR`{Ya1fע~Io ]BDZyShҡf4хG+9@;lէ^=de1Qc.^#{$,3/!m\ʺ/8ak[n{zEAVcɳٶoS[@R 8$ty aGk[G{]E7@۾-?j_Vqw(y7bjT݈uM\Wrre k[n{}u s^UH|>¯{cCq:ߵ1锢*$U=a;+6r{joȸ@6T10 Gdx!w'uvj6Gմ-PH))_ NzSL:~!*V(-7/Oۦ7Spm3$Oh(~?gũ+ԅQ%G`=W6{l:us&* P\oԀudZiс.emˣ?~Up9GWTmKS\%3 @<_&~umS\%W B|'{ W!WT{>ltMx^<T茰mwۏ11` Х8]xS1Qh\ZT$G8/%*Xѽv&RT^S5ShF'{_HOL =(=h;/V@֔H[ʣ\B}8M w}^e&,z%߅ْʲh8ӓemSle&,Ș|?~O[ºo5ar>-wV[Z>)ON .GqU~$ǒKwp}Ejuf|? t0 y}Uo(}BA*#d]S=//߅ ]z]R@+w^<ƛ2%])gQz :e1ȣ>1d)躎#Z!ٍXre M-{~(~e4?|RKW "I8ƺ_GxXre<W8yף UKH y 4 /KϳR7v~ ѽΰо]g]T A]ڍSj&x>+u;(ܗ-- h{uƫO!_ю;GR &sᰝ`¬mfw߹;iC*=.CE 3Iݸ?˺-ʓ~fsXpEM (5 1Q.3RǬmwvRUşT\_E0\d al7c fu|l{'؏Fn{^83lEin݂1$T7ZͷGwi}kn3uu6 mҽw !. <)~ #XP_g$Zvv5({}u L_|y>O_QQJF.T)芉햀^[r앋,/pŁ1ɷ䀦ē%|t_MO>֛xsN("ֶ|a~gKQ+x'5pXm-nZ i휎2/~si[qSn YlGǎv[pJ3*z@ƚP3pp]o}gTL3nX sKaɽ>)*bp@Wy蜜~Yr}qiq 0uv7&V~Q4Y.)`*a76+=w۟w򃅢*r_{QH]|'{]s_N,Nޑ9ɷY.j1FBo NuK1 O s.T͍'1$t,_ڞFp]{ǗaW&nG>5<Ѻ-ꐶ^7{Kc8Bν~Z%JDRP拏%{t+t%3ӝ[~#Zw9o:BW]tn_E)BWl_ ^r%+g4i(=ݝ$ ؑGKwnT߃@lJk[n{}W5pTxWؕ )?VFUΞ*Hk[n{wdGgClϨGyb`I%S}t_3gjVUV&R0ߛ vob=g[íKFt|Si@W ]s ɷ_z}{ﮊ(xo6l?)_פVQUSvѾږGZ<[[x֛c1_:Y)i>cBhZ| a hZږ?!1u%r^WH Afն"D9Goםjv!gm|~g ΕpL1UҺ7m ߃b(#D#d tZD`A{~gl9sElZ)P}+ظᩩ գNSOeNlץ;A4/մ;eލ~F+7c'g8\v',=#nWCӑop#+8`n9%q.Igmuob\d[]բ7ʗwCU&t_vh wK|1ں߹;Vy Фgi:kgU}.]S;cpRrmS쬎zxtonvcD%~ThM}IwՎn.$w9 Z .5*1QYɻo;?j{>g |#xYT33lQֶ~Y;ŮNי b#2 iKzG~v>"m w3$xj>W&/! [fږnq/>oZVUDu(|׺(_^p9v\"ֶ~Yn48W(sU#۔rx''RzgV;G֔H56W0F,iUik,LF% m#i7]W]:RKZöNt ~ ~g+^8̧8룶JʆR¯U/\gsӭ#z:kP'ҽĊ#B]u]%AY%g@GHT3!U5"mwTxv盍-nZ5O>>=Wc|Ұ(= mS$l Pkz6v=.s|ںVmYk.ϩ羹Sק7f+qn'JFn%}AcKMι\&4a;7Sֶ~Y;4l1ts1n+P[WC!kj1Q$ֺKŸdz3G \;.LIZMT Jۢ re}/zt]0G=|)!]yI \$=2F|X e֔H51^ӚN]=jԾ_;5pz6GSׁ-۾_^1^yl UB:4 w򋫗S;Ouo Uun rRCDurak*gH|[5R8㲝3Y[rc%,)OX.w P ]S#ɛ `e:yO{3"G *7cWR*h]SF'-owؾHZ;Y=E[)z A\vtMCUR۩+Jlڒt7{>e&tY-ige_YM2 ]6]fLPwz*s~'=#WJƪ7qK*'y; )!ۦ8SdK?~_#w Ǹ+FPWJcWp6L]ASa{$זwdžQtK|x4_οٲ1U7ɢttFƺFٳXreoJij"8U*{ݗj~])kk*w?sҁ_A^ʼnǡ>/h-0_eNMk);܏[țA_=yҧpәv@pN&)"CpUH'BOk;?W ۉږ(^Z0*OJ2"3RޙvR 9tOP6qrAp&9OzNnsQX(B\Mqfψ>t+[I"v K;0]H1JӜ8LN5W73{5L]v `mk0_9q7Lt0Y.~7yƻӦmmqR]XBrTrJ58{*]5:RȌ@mNMQw^Iֶ1v?~guţN)"F`\鸎NLg#\P^/;MtoqݳC<:vO{}@P/r;էxw$Y^R*c}pC2cwD=vz+:eNƂsjOPk8lRj Q\G )K?~'ϣQ͏}N}/bJyNuIe 6=~䦖~Y;q?۔㲑~|eY$ҎȊ/}]4ِҏId\~_ֽbOdGIU/H{g-|_Z&Ex.Kx^8so ~'f v>@Y>IFNocmuo :l4P}Pe6.]S5h{nQ}mDPږ/~gRD4xq n}pΈ]r OWmtkSomGT?~_SzOիyJS`tӆ"<)Nm݇w`|Z|RW7l@T`m{=NJ9nqt8a}XZOj Πeluڒz]bfb}p:z+}E;?X#HdtUHֶttoy^&'a,UZÔGE{uM-="ږ/~tP~c)0Y:rxSSG>3޺¹v`˺O7f<'d*7b⧞z9O+h*lϜVbƓ~IobJLΧ-pv:S݁_V9lY['p]xnnr0ř'b%oB,4gLZ.#onKy/}=2rQx v=&2{dg ݳv˺߹4M5xw/M~zFףN]8<a{F%/ͳ?ɨPG`]0+-e5U {E鞼C6gu|E;cvź@9S<].ݗρz8'v8"k[n{}]e LqEiYJR*`7ڡVjy:c-v[k=?gK_WQ#[c~I]1F%ߜc1Q-9~IowHчqm:;sީHI1C`@Jxړ^tM=YhzپR ^re, j686Pz4lV?8 & ˛.k,[i 5X[r߉mX\95v+;/Kȗ5]Sy9sjBW3=Ɠ%/(~}=Q)\ID brW[7jc3:E[mL]6/|/ ̾8xܑ֛::8}`}SF[Z ^8EyאtΒ/w\ਖyDa\Ø sL9Ow?$ˀ1_k[_؊k4ţM97Q w8ѭDe͔G{ ѥ=ekf7J:۫2ɻ}7c+K;W wemuooq)}8ju5`)0M!H/r]z `ᓵ-Rc9朘4 U1<7k -B!myafU{s\]H>9x'ݒJY\cyaHѽ"NW{RYoјk䯰+J9 >0W]>%mk.sY/oŝ4(p:KW (@7`+l:2G6R_#1bk?eVeԩFքb?k#Q( ۜJ|^ qMn5Jƥ{)W-S TJAJ-Y27iQJ^ L)Q/8{%2{py3>V)'_ڧS өKWm!]ꟁ9mSߓaEoOO{m"۴76Zϰ؀g1UtTMP^s6DSIs+Ce{;/7GI(=ly1gmź{zZ[y!&پlҳ7o:Ey8a .Iy<v-4]s'rk*pg>o)_ֽ3r!nU]yZʻ팗IOyWvY[ryQig[V3*`(c\Ө5uSTn]͠v.k[n{P:ie(ӊAс4_):A1۸z6GO^ږwC|Cx)a GPjܗ_p ^18Bn9ylpxm䓑G;Q{9= c2$)Y)Wr6ÏZց+&{gnƃxrW^l^HCv> Y,`5=no]gܔꮒ~Io~cz.slW?\ E~=!0Oj`qn`m>A4Ēz-mB;z39]ձZ a5CMe+šcF>cx1}F :Rtoa#涖Z;;O_ Q8Q2^f Jl]S%͝RSy.ݽU+U)H-_񛿥[Q4p4ȶUnx"RtBsm#WНJ:ֶ~Y+}˔F8)/)Z[v:a+O*aQum[T\k0˹]RNW™[ܺA[ qz>T\ G*>]2P/~_i5̂~|G uCPvKUmw%ƙעBO҆7Dݔ$72eږ/~gUtԿ9oYuӎH9}Q[șVyWr "=oٰm+EJMO7>M)us:wO<>؍fmos uϻ(lđW{f7ǖN$]puƅnugF"Ύè3%/8lg2k[ek;†[9}:-} &sIX))C⌤\9mS߃GELuULDBX,J3zڏ _;r,_՚;qrvnwBΔ/~;yzLr {Ϝo\8KD x0Fr@Mgȣҙh#ESh#K";wuGԓx,Se{Fk[n{NNw c}5IW)ۥkj[8[<ږ/~[E)}#Fu(Hm辠4//g}lno6;ҩgʥ{eVKRRpTb_wMu,̍#bk"}ZаXmp4C'9]FUwWk$PGRctDBEw1T $PϘ)EhS[Ջ[T/wFyG݃@wwáluStMe3u)?fm࿗mJ-C[ы?J\!S*p]AWY$l_=^re<-.,&<8K#@;s}]9iBW(̬mygѽt89evN*[&gٹi>JK$8]ydlػXc1/|NN%O(~ԯJkĎ7|S. PBh>vIH-9~I}غ9oM}2ֻ x'SP;npt##¶)sHtߙ>rp yҿwRÝ"u<_˸OxrYpֶԈC7b%Wgc)8 ۦtsrD9Ku߱t@qN.9uMi8Z@WX αӬmyg;{H^"V})pERv>`^Mс=%)ۦх#ֽv7#8lw:-@'`kIxٍ+ʶWs=/MAjԺYTʆOoӖ[Zוk5Cc~ sl1mFw">{'TN?'oC8Íza&^I(8L'k~y Wto}}s4SnJWBfBe |Ch$m(c¸Ϛ?~8 nՙ.!~e糾)ZD(n.U#v䑁;ys`"UZ ]s[O@~tM'UY/=[u_ֽ6rPÀ' 2?w0⽯_qnJJă[0N+zu֔H5F Lm;vG}It "W '8"'tl;jybmK?~ge+F\~eW<5ṫ0.5ѥ@)Z;ԺЍ(<,^6G5jws0}%uWgRtů푰^[r?GzyvOuh/)}:8xPlh.֮y. @[oy  9҅ʑp<-Ꭓ9ږ/zewv ;5tGNKSR?9W ϰЋ9ECal-_ֽ2+'ᄳܟOWB z`=!{ч6G0#xuz _MtаOLy p8 qӀ^u"g#Y%=2NuwmE\ݪ$eCpuMQtIՂ\EK;Sarx@"mGbnE[Bp8Ѐ;]Sw q})BstوhE-#ϕ,,j#0=tv i7#Vw>ptGq F@ 8`y.H6QG:c;)=n]ԢEqt{k߉ݩ,.&3އv ";Q;FPkJk G3KUp5KQѰ k*Jf&wk[nMEl[z>tbc;wa;gy險YUiNQee}toI*N+Oڠp:)jXdy,G7ʝRzR/mSd=\7v{6_J wssz؊7}&/@ӉzB^a۔͛‘/n|Eݴ`k0t(^Ǯ9W1=la#=Uaяs,<$wG8/#ʙuCވl&ZZ2w<E֭Iy:c&x挳//5ߛ쫕PD[ TyPFv4tXa:"\[r fkƎA!1s]wM!_VJBL:7e;;k2Oz\9/OxΣ}k]GA]/3|6=bSR/-c\J?~_uZFf&g*3iMك98c̞J9zR%@c{9gzyuo`dy c'ERGw#;4^t ~{ΆaRXw.Mwy wY3 .#lƙ;]ւw}to/עnXBb[gO4z kUuM{-6E8ܵoO{} 8>P{Cqq.c8u*g67okQQ\]wf7ME ^l}"v|1onJ‘,سpW GRRn{} ?{8ڇ'G)9}9kHk*0pAW{lkK_;; E(*=.*;0rtEZ>b.J(Uږ/~g*"]tUM\\(wLuRKwxiwv+׶|rto32 u)ᓁ]:]EG^t9!κR̰mO@7Rogr꿋qȼgq IY5ւs">g E.-N @t<= (xe^T,ߨ*4<>[R% QtrUco_x>5\5h) zG>.=zO; e;sm+(GJis~!_}0627n]g6@pxӯI?غlīsjn8j>^8kT*8M֭v*m :=EHe>f(iW("]sYtyiѐmQk#_y٦}dOFRPE-w%U#Tۿ[NH %H\re|^wq8:\TtPXɿYYkJy^\1kly|32]jDƺE1Ȫ])8ƌhuڶ(E9j5=MbxheFO=BrWE_HT6?{g#ޜ>-Ny ZjP<~rCSޜ>mf]y=6m=9,ֽlK Ff+%:ޚ2 eCEJ$Qj98G5+|Glk[>BM 9}t\%,'QM_KP_p<k6 :ܞZ(Ztf:wsToBI '鮷C1yX^_k[^k\=ۑ,7f GHiWҦ.T, _FmSep7u&Sy4ps`sY^uɢst]E<mł;m~v @n/4:ScƦs KzCwkAmQ=8BuPZYTSz7wG>t'j8zk˺zo9ԑ^zjf3$2'ack_RO.%'N;·?0N %ZaৢzS1+to3YV:F3)*J¨DTBXQu m{'~Y;[lu*ނ|H4-bY qvZڒtyy50cpZJ*sѢU;rZ9cޜI;嫗s9}Ato3(ihfgV%vo_l5;N;T7ӭk 釷].SʦǓrYyZLHaHHLZgRfݜyx]Oԅ5ilg;׶|zЂxCkώ x}3N= G1t59 k[^95\ǚ۹-bi;ɥRX Cq.5`nԭ:VjuoCn qL)h:$\`: ]y[Ѵ cwƁ-@2;ELh} box}ށ 5%zYю)TR5EģI.I>xӶ(=HB4([)8ZJC[fjg1=+=;$ |Os ˵%/5^s+U26\(dBTKy 67>}F=l"KFT?~{!D; ~Al*\L]hvCENV s~gI3{ԫNuֱH#uG~ȯR}P-":WꖨP6=/ I&#EV:!9P_O-`]&*w>V5%7һ}$7ǽW >_(E-l, ̳qGw#:Gk兖ã{E F;鰩YkcowLT‰0&z''הH|n_Z@}U-`ʰK7fυU)_ dv*xȰ_;n9oc} <$ h=,K۝3> ғr|19%z qsKO*$tx&FlmH/tڄ4pTZ:SMh(4NhQI 5"+Wv?׶|3%;( /ŀK[ܣxdQtzӯyʰSȵ%/7[W@_?=lucKQF_?a; ۦHHwaz~gU*p:1>5-&L5{Ɯ*{{]K&2 {k_ܚz=6<`K ]S;ї^dM]b{׶|Prtod2(/Ɏu cUUa#XWŤݗ?lkV7XGw_Y#.E }-!`oVx;|DxB?6cMԩږy~G['V#~\܊ia^z隺XI]`;Xw9x&ݑ.-ǹGŻuK+uE6i=ēmSܿN Z;|MWë3k~OYAnL8]e]N'!`L&UݸKy#Č@9ˉ F)kb 8qS+-7,8<9wLTH 'RjgvO@w(-xFJ*Q=rkC#S5D~ږG;{HSS&e—T߶R Mh tӯݓۦx^JKu?~]D,vܝp=&\J뚚Ń?k#ǵ-_ֽyzOj忛# J۽tKRtZ6襫^ڽtK:eKWS^q{隗mҥĕC" sZ'[hΘ81e^[Qq|Otos"bޥMtPmP,F3ڹh(}S]aΥk+pRwc> 0J}Bb4R>vC6Io77F_lOQ%j(M|tW<"S8\օ*QC[ :?._'٨[_7/}IP]uMGf ۹Fpmuou`9*. Us T<ʖ7X3oy#wptoZb+ABK fg`Y/ۡ`M`W Xe;aW~ p&oVBBsBn|V?;Y8ԙ/5a}m ɴ:U3YNNAִr_7C]H]a;pmK?~gyAG>k=p{\!,4OiбZ/#OXC m~N t%F&v~֑7 T''{chQMIyP9]|Hws55"EGM6vˡ˺މU<Q9޴hw2z3ffGU}cL[{l?k 8Mn~>*tQUsN(Ia8S!tX#Rǵ-/dw֨{Vs7jCֆt* o1=f.fYgR5B4ps6~"Dõ-uuݧ (7 gE'ͼ0 ;Y(lIwȹFz?}N!}sc/ߝ '98'6=;mg߰={W~|e7 Gs}1T[UԹ|͎ȟ05J4imS'm}G;>uFvݥZR+yZi,QPXɂ3tjƶvr^mD]5ٍ(kQk>]0hY'ge{$Dfϑo6};->ϱͿo2G@3`k.Q!]Qږ7~k:BK4CXJ_0Ԋ?2="ε-_ֽ"z.SDV[E&TDFȇA!:D;lնXw U¶wNcH=ff4H=4:l+~:7M eDC׶~Y;_2 nίzN_t. )n#G7vj G0L3vm*"#1~'6Մ\h2MV~=zIU4(sTuMUCYݳmSLKCql?V|E :vZf>)06Xڗ"aTTںtHڦ :=mk[nF.Ωeɟ=ضt+B@.DtEk,9:Xw/ՍbuoFxQ.p^g5#:W/t5 9k¯IF7Y.pdh@ӦX&>Ilyp"Q.Gږ/wi7vk=XMQ|[oOʥiyGzr.Ze;+7q:.o/c#XA$$5s*gu޵X^ $r^El^5K#=Atl;Av˺߉\wyi8H%%Eצ'卶ܣh? S!~ىK?~f+x՝׊._Je-u!C;}m2KGMʍ39L4(ѣ&%hIhRSV풀WK^K8fF%8TW4܏*Ȳq^SwCO3`lKlߕ6r5(&ivb3s*)=Cn_.I$zvI~=g%gXͽE55GqntvrXݘWS<~yY^K +$&/tN|/lhs]~q6U<yH:ы[g6tmoGE@i!/HgrVb]8p'}pkuZ-9~I #ȯFϡMtPPf y,:JROxן7tOh0lbVU+to3Hus:8#d=nW̤r'5.l\EZ^I~J‡`r4M&kq䭪v險qSTi]5a-%Z7K  Eb96NV#_`݀Q6]eñsmWnq_m8pmc}2_WbiNUI]Xܬi.,͇Ik-. kO58"6l)OX >Z=K7YYj"୕I],텣RxtU ,ږ/çB;C/#׿UW. ڗn]l'׶xto*t9Ж>>uU{2TSkȴU+_=wB%F e;츶k4.T{= қ[POo\UtMͨ/aGe׶~Y;[lYؔ/0Cq]#_lrml1'`F="[̵-o˷obYI8|6~Pu<htxVK]Id¶)c;q#yƝjyWI#]U#g{;ۦțj{U2 SqއЩ f{KWqpt>Vm">)ֽ*E1]G|fnG|WGꊲmn f ۦ?1ֽ滸Tws&ι3qU$o6kIٵM~en9K3K!Ztw񽲐@j`̼85>bvߗ]>~]R#Ƶ-W?~„d3N^t.. z:-7ٹ_{6ږ/~gHT1 u@'m_d|:no_~ }OeDFq )1e*pmNA@{`s=@#OVկv́8A G^<0]\c;;OkvhtM<{Yfq5we4g\FtQSY#IMA87e4{_ֽNZMTyQQWNn-U;zYYRSK?~{ߠd%x> ;?\z;R߇{Zު;kfߢ>]qbG;^J=7Gvc3Eh̦#oy=-z@{6E+\~5NC '+xL?2VVvV>jC;ltJ% jŻd{} v }y"oMT"X#/MjNP\K6vh O_;_bp㪾{:h([3w q'&ɶy~%0%Rs_OĀQ:tc7xtG#FU &{pm#%xto.Bmժ 3Y%I_"w1ҍOo%ںmQ|'~Y;cF`\!D2.s7HP->]1:5 T#rg;\\2)/5uB; wg y}8{ROx3tٶ(i\~{K΢G;W=6{gAQFEP[OeU!pT#)T<K4㼛ؖ.TNa.tU5̵-ǩwYgUws]'@P qkH)/D>UhfZZ{!O{{C gMmvWֳcfi/3yS[POtə"+ޔj2儓}XJuoqz_Ki5:dor\5=\2c|aD ؿ`M|v5 bq*q;+(Vc暒ݾfء9wLބY$p2 8x 7skI ׶~Y;>*|qbGK]H˿mv]] ]f]vK|_rev*Hpp(RB\˥ky黔v-֘?~#gU<Oڀ`qv~zwsʓzvvK;[= chtHT¡KKBҐO n̼%G P+!Kby|wAČOsKaY.˻Yw3>Jq1sg׈6}9:Lξm>l=Jֆ"0mh#o/Fx8@SD;@)we>Z$ #NZlOl[o#xsrۦK?~ӗ y^rgS3BMk$KRYsH+0 lg%?זwXBu ]P?4OSXΔUXzAe Ncx^#ť~AXF$鿟oL!w8eڣkjF  ##@Ƶ-K~2]ҡ;tVܭK>fm2^=$r9;XyltMQtcwe y9|yU8ƥ$O Q%/> #Qp)AWnx˵-R{G^7,=CG@`Zt ΋⚩+\l? k[_ߙ:$F(z "'B)\/t -p]2ف-^%wz /8rVPOd@#6`=?\L=/#_\re,ρ roݳsiDC{zncfD OC6'w2P({_l$|&EGxtwd$|Eb_>~+ltuost ]0d x8#~Ŭo+J &24mQ Or{j<+J\*7.qyuB̀9WAI\.U^=e)LV.) Hi+`Wzo J I]kCh]l #"2}9q| Adӑ/ [w1,Ƴ,ψhUa^#G:ȏy\O8QhHTLZ~n=.c3׶rVky%.*9X֙RPfG誒fȵ%/}jyΩ=N[~벙ny %y}bĶM{O'ŚG֩Q9|:=u7 E#ʑ/N,GwqZi魕頮,Z㲝I\m7%hgtc WY (;s]<&.7_ֽOPvGljY9oju8cd5t{sł%u-<O=ZF6:}uޞ: TDtMl?\[ ږȟ?~EkGֻkP 6nvt;@eԻQfF'Mu,pԺs/~q픯}*uJ@殑5s5Ҷ(bѽw5.p~e'PˤS'ENldu-:϶x^˺߹O倈gW>' DEft|$źP+VY8 BWْk[n7eS~ !UBȍ#[O*Q ̺F E. _ޔŶu+FPcolDw@q^z{gk̤vO#l2AMo5xۯMlóp ڇq6N9p9[w]V̱­1xoޏtͲ9g{tG%QWHzISO ]cD׶s;C7BEK'88\ _.]oQg|]MtrG~YSB>ڙ-[2G>VR#,pN/tv# ׶~Y;;=݋B8jk5Ici-wx޺)ΡZU`._>];w$)CM4WԔODݝo$)%fRmS!I{]lSGÅxʛtYp!KT -AW]#H˵-_ֽS0([VLۥl##3GwPMh f}6Za۔>]|yaѽ^4u[3>4N 4f+_&}s"3ATtvږkw_9PwsMTy;U>SCދb~҅Q{l Gnw:ij/.8gb Ḑt'-}8%#lq];Q9G;(⡤(ח[}e(!n.Tl,l?ږOPzw=pfu\F7uׄ;vGBl-(`Β|``_r%(WZ h8`\:qU(n8rAT8Yg${.Zى#e۳?St8|cʕf˚ʝgB=1K,}׵-_;_V. 7]pt}(5S*GҶm{g|wޣx^>tRt.Lnpfԅ%v9˺l,5Rh?~~YP(N!wD{cug_wsLnH]4c;9ujrRAfLbg ]5s҃WmSVO,saϲ{ZQޙfZst{dt PGa+!?~'r9[Q5]+\)tME98S*ۑok[n&͚lbM6R(R;;#xXtSTYXW.+rmK?~e7G)QExuu򩈬u'pR3Mek[^=Vs 6 8nu: ⥒=ȒP&GvIpm[,nsϿk'v'@׆"߂9b 8b–oŋk*Atf6:/ ȵ-_ֽ0BUљi^ѳF[ 8yY55@ᡢ; >)_ֽ=kP{-+NQ0U=Kw`6)h]b&Lmj>oLr&ԢL1ŮA.P+B@c3ռi]b;{%9h,p4ўxh/~~{~ˋvօ*Q#ͿmQD:NԀ7y^ůNۙNs5\oY˺vO\9J|~ E}_(=B%U6OsP*xE97/OtosMފS'Yg]:5^"?6K'x8+"\:mS8F~~̳KNb՛W;(Ss%v#x&tvB;qm e=Ꞥsf5]}G#T&Ԍ8Cq>/=ꅹ1e@!TiNtV 2ʶrw81ͩ4v阾v K;{X!v1]yj]g+#wэwez]1ҧ}/o:%8K;pu.w߮SZnܳkjDcU8-ꔸ˺䄅n"_mS9ޝ/d~ltS|Ml̷Wv }_ٲxu197!:]0NPeԓсSRWeIږ/~: +U?E5 w͔.TΞS5ĺvΞږ/~_azzG%E̥9:q{]S%@2źʑl[߼t8g|s?}-"3gʷ"ݑ^|1mO ?- zc~YnϞ{> u; ; }SgR={FQ$.-{F|FOIto_cpT7YGhWuaͣ.T@9>kJO;}mjmUC./͆fSd)_LT%Iia!x{N85-{һ}Ͱ ֛aZr(C>m \pFZWrmb[Meyuy5-!)-vA t)'\f ?H ]Uc>2זNW%10(ϦPPJRjSP.Fwy‘o??~'^58@^!e(QW:1Ny'>;傿CeO{iۦH`'ŜG;zN.H gECjǾ*Uk4-$n'M1a "{BvfKtl[t6U?ٶT5ιtMj[ܶpm [ͶehxdLPKQI:PI=+tE=5G-lgl_ݳv#{ 'QS7)pꡫU۹54?~gGEUP{N.#͐#iy8ӈ Got힘#OOw^b-5?3]ޞo_lhcml׫{PtrG[utvn˺ nzU% k]ƮtM>8!c2~bk#_ֽ5ǚ\UFauO)\7h l5ev?5bvk _)wpۺZ0p4]aa= ׶?~g£ ]|r;t+9Z@d|`h]QMqjGx:~Er{j֫FR"+iN I#@ }POySUFRaD;>[ؾ<[^@Mu(Q)2.rPThTxTY?/7RK 4[yY)k[> 8oC4pڷ(aX28#S)l&@s}Ϣm*6 stUq;D{hlEE˫֭!){ 'XB_;@MO$h[6n'"rZTMjsv~׶~YTt@7ǝϪuuFvե/N{>—x\~{:wuy?ͩ bg ]b{d|%~I,zU9xs ^y5"0B> a7wf6r{*yҌ (.l1K >dC>Uw`]S#h {˺^'K'u?B8aP|&:5UDG )hU:}fյtJ-BDϯA=CaF |1e? 5# g"tYz#ɵ-$~ND{Tw:qLZT}T)kOVږ?w^ZvICweR#VRl;Cv7tV\6ŻZ;;ExՙG7< PMdx;Ba': en`˸HFOpޢhEM]OÙ*jм'69CO'/q UOd)cSWm]|r3qZ6w0;g;'=xFb9dm|-f'~]5ju5%Em~&-{K8'A;l5ʳ\Nv~EnW]߲ږ7Àf}}whDd|bj09z³ cۦøvtn8ݜaDz;#71v53(6.9P xO }}Տfo G{r AeZpt[E,t'M}Skۦה7>IO(~9TS$`]S+ DW=pmuo3c'|َ*RdjLwJ&L 70Gw+hryö)}G; sʋQvt*r|-Ͱ.ZQi1{ ۦ[y{'~7H#~(dϋډ֥y~y+vll\˺߹%gǫV+K&6rXԅwCfwp\{B}m=oU?1Xs]0x(y7Y>U5l]SOTRt%lb,5M}Q/.nj G汄;KԸqU߉]=a;啉G% ٱ_ j }b; M%{uEvAƙEE.iO/6^xwl׎3xwl槽RJۦ~bGlѭzwq~w1r~S-UzbwDWΆ2-9~I<;Xh*Z8/&%Kw3߸y ]rв}ur;Q큣sut*;_܍5;,8*tv^_reI9 :u_sEغꢞ/b5rF$r(Oֽg,181 !RL\;ϥ{ :_{67PН wx2-"b0>^79s^b̝\YcfiYlie_ֽ=kR*xXTߑÂ4ԅ1 B={m==%߹|~i/91تstޕpWFI6'kj^YRO֬Ue55ɻ|c2uIMǥ,%=zԾ~ en%{K-!`"B9늲*)tE-ʊlimuߑ8 9io 4K,wi!蒅.@A]u jhD צ\Bwu>Q+ܠs%PtT}gs%V~JS+O. kT?Wϕ;nC.D#qW}no LJ#W1 zki}H݋ Ԏ u)0y:P&(PTW|-ںBm§/~ֽ0]lxM@ikF [&Z {=o,ֽ}ֽl'0oݻ_jĥE_Lt=iuE*HJT 6S ?0g o껾w Ǧ%Zk-ڦlK7QbmAVty8SeN=DkSBnL|sye418bѺ߀0vJ)%g3َ վ~G =?ߨw`{yKl%5(jq'_ZrEwCp_:"tt}Nװ5+jLФG|p:xI7GblHk7 ]<#u7.cYp\Zq9._-XR4 nB}˾(mp/ʭ;uI 9MC?#l;UkKNrXU(Ow@9pG}ʞa{ҳ#Y*FԚ^5nw=i/1,(=Kjɪ缴&Qhhep9ޮwЙ4ӌ+*JW`t1H:kmt?~i^F,JD6{Yw.Cޕl3O DHZrn8[E-4," qz͇NxK*^Xt*!_X>#"6Qwp +N%yqArO$︶zm ~9*kEw_VU{zA! ]Q1ES\6 #9XPHgq4Bwfn%q I ]Q1<\ q݉=7pc3HuTu4[Dh=J* !]vjmuHJ&!oǂݬtM!`pzmR:01vݏjli*%Vq8FՎ$TՁQ:oo"'2YEJ#է)o7w% MX*ʴQ` %FyQ~uI #l7/WڔO F_]TL5ygr \E\jRoKwGQդkEnE0Psf9਌mm[ڏ-pzj?&Τ.v4MPt4"exm10BDyLFzZҟL3tG(=88 Odrld* pnMb88{m0߬;t1MWG,ko]cK`Ix-kSթWOU$Mbzn_'p J}/{PEyf|魫ȠmL`]vjSC&_~wi.& 6ӕ {c.qE$#%ڔ/f_ט8Mظ856 Ng]@}+tE5&Nމklxs*8=q/~&ưwѵ^vq/tZ"|{6Z袩@@kS>ߑ-ffA5 i1?stTz%^VU+)_~G1z.5P;jҵmQ >+<є ]URE`V%Ut 鶕3Y_$3Z6 .Dt h}ճWi%tE)>p.*d8H֦|b?~GtwXq9jU0o#w*A .K)xQfDf==̵)_~ߨ3 ΰqZ0Nof<ǁW8b.?]<5 º|{sP-NWCl1ĭw =S5|jh[_ Ii>%O:{zΠϗ*8L5Nl|%]R1Gx1ul =M{tl^lW5+k:S[2 Bz$c-=哴&zW]VD.(`[( Kk%s6uv԰֦~Awl'IEll+–Si;In'K%uvN2e6)ޭWyFT5x:~FT~i % t#E%S*Dǿ8\MJin!ݧ%C/PGzڣ{G}D)5t^*MuI,*͵Po~G=!an 1Pb J5kV/+*$ݡib 汔F-KB=Ew<`/!vRB T~_~: {j Dvt3xRQ`<8 JNZj0ڐ/~kYʘ)-YsP&"͇XK(SjP1b;vѯH2~Q7=5/Ź 6w7}g;TUƧ98HsO۠tE%_~kTsu,n*2DʎMt xp=JMP YkIwCpq+@4]xu w eV<4 ׻D|gȯCKj,9gM[lɪI7w;/ͅz! }!z(wjB]P+U6)i~bfmBgb8c@;@ JAyDَ;Zqe;~.O\ ]tŽJ!g/uA6>MαHH})kKNOd&=U9ԬqAD#L~\Q' w˖.2i;bmOn[QaYVDuP]ުR,o[n[A.Nz) pv ֦(4t?~G( !3..̩` )ѓt3>M\CeyYkSNru.TJ_t ;}o=vM!qw< ]5}R\~Awq-4B6)!i-=j l&15PkǪLHѮD,"5iQ`CMI-4%]: jGMלvB5=FkC.;;:t2o@<HܳPkm纤F-tԧ{PB'J`XҼ'sj)YilO% !D^N%kSNfl I%~QnӴ81rt]RaĩZ\>m&%Ÿ6>t߁ϩU7&.2^v\M*s0+ڷs]YXI~LS b@0%>a[t'Zj55lgVN{[{TRmU/ Ie:)%8KhA?)еm§?_~T8,.gNN<iIw):Kk)SMJoV6`?~~ws\)3\yQ>cqM+j,MJQT~Q7)}PR4cE,~#ٔ"Wrv |L@ݡĶ(~R=E)nUAcXR޶ꔩtl(I+ɛ`L7%0ߍ&ƋIߚ*M}]Oȧ jHJ=m4|f'fj<'g&%d6=WF=4,'l覵)aY,DBԹ#"6D黳]-4}9a5Ŀq݃.@D:)R=0mx#t0h+j)q:+]4v4&imt?~9=uDw`Ȩ!JY;ε:`]omR._Q2pGhgIF=S&|.h5'W,ܶ"ļ 3Ƹvjmu:OЪd,D@ |o,QT.Ggc܎*]vɱ\[rElK &lxDGkRașz4MiDio)hUNXXc&֦~Q7vYS_mH&V` $oU^Nu6(?̐{d?~P@RqqT& q72%5<6.NK+'cZ8ߑG̩HY5&? 9nPѐ[ϴvۤsݓ/~N)=TmRc>kR)|]>QC]Qg"vN]+u)_`s&Ëw7F=K;Nw3+t mW;3.;I7 k^qP Q'5Vmu9ۈKx 9-(mP"{9\ēI}q`!JJH.W8}aWi̐/fپӰ>*ZW_mzֺtz$fİzzVi}kRJo};l{o$):(TTVZAAu<ŁӉ8HlA{";ZPomRa?{Ш3z$y\C].pQTCBJP=x'a7Cz+=_Z㺆t >ܠ* hUIO/[VAh8lT;.\ X@DӁOPQ!V8\ [\ TPWSj8(~:AUꈃRWZm§=t?~dh3ٍA܏aoY"xcI:򏞥`)Uքti,.__9fc|VpKw^W%g)\z[vİ,Ѹr{kTLNɜgL!{7ŕ gPbl^Wï*lWDo;SwVM4jӮtRPꐃ{Kעn>&~Гh[QRj)Zҡqe}}-âbm]c hc!|{8rtW(]24 ]Q3E0/(-] mM9n;:HSDOxv,Q0!jkz yG鱸4`7rj$a]$a**n$ij&RH(N,tez#֦~Q7mgcj~!7o&^oMw+(*{!MPx``cQU-  [Uxm}܆e n"\W 3(1FXCREaf+JϱrB~PCqVѲ36Ke`Ntm8v^ X Stߟuc*5imn%o|W+t1To[6su]c N ۣ]CI_cvgҽkLf׉t]C]ڔO}3grstHdBs/h${R;B~4͠bV8һmRNr8VEwӞTvI˟=D!2u5Rt=B2TdOM'f%pqK+'w3N wm$]Q!-ĩ.#W0zݏ߁TUc9QT\?BUvjd9]Q3JtHZݝf~Lf{*Ub~˛@ ,ZDmһR3n[AןcC+Y4\4)<\I{2zj emV=mTu{B)7Miu%}tQ+1WkS^=4AjEpSWaj8OK*5yFݓl&/M`%fgAdUZ#J+>y U9_ ޷dUkw;%8G}A_;Ҟ$<-钊dr뿻v)_! ayRP.TQ3qo%]R1\NŞAcO)zw:}N;&CN҇ߊx^c&VrlbK*&C.TTc2֦~uɶ7yM fn+EŹlGMKw-邂m=s4;>H JoV}Bwm'dNE`gA;=|ث-`%pl.}:HOkBKm;0Xu<CvHHeu#lnf>PMJa37n;}Bc/ Nh\x\Q ԻCm댜ڇ[Q(Aۤ'ߙ)t?~>}x/#`4 yE/1uEmO:u6$Zrݏ*k.h96j.yn.0`䠝NCI /ڔE0ɶGRee$3+tZff]d{SOkS|Jw@8葝W,6F:XUQ&aT8ԤKMKx*" u$9:S1 JkXҭkBծ ne{Q_t:!/Jn;Y LΣ$}g+.,Yj1 r xFpbA"Y0CkSUt?~>! " <DxB K 't&b&Q!_~&b<×V~X.:4($-^)Vٮ8 O=w kinJuFh{ﷱ+XDUK. ;ם(S\jbM9n;@NvogiqеkdUQ؊;4.1 KHOZr?~Gz]~[aen (]wn[;с\lpVrzJwbST#C)א&VJ!*ur%췞1CN6 [?C]`'&cAh( !7tѸ'ا) ߺ_7n%ȟ7Uޤ,4@nBGrtߺ_ ΐ}'jPmkZElrmTLua5"  H$&$& ԒHwNu_H H~Q7_R5n[#LKjzlq@еMێMyכ?~G:iw!5Pd`w:]LΦ3^Ƨ>nN0Zʅu:șYT5N&UoA lIM$3ZrݏPYU7VYLI 1ޮPȌS{Dڤt/)cZrݏ M.tknx5l 1щoNk.oȪڔw]P|7O.K!b~[w!o/:']Q%-6D]r6)]t?~G=g>U-@d*gG iH*YCR3)҈ ¶d{ZkS4?~G+x ؂2kQ |:kțJ4S|zED 8Wn/~ lWfm/΍ICR'tAѶ>ͨۖp6nu4ۡr]ɧBjęSd!1AomIw;XN!M).jegڔӯ h+Oݟ2PDx2Q>+0ݡ3v nJo%hm}n9NqV8 +b!6l cy*Ā|UA 6RpBW Y}8=%I("+!ͨlG VkC.; +xبbGe+#CtI)/~fW#2 *ŰE 9۳-|&I"; qpS)峥gnYLք@/Ić7q$0[Vȧ]A|8t(Η?֦ t߁r,m^`-`NJ 9d=*9i"t&mOOkmʧn`ڲxHl ྰY`@:gT/OX*XS0eZ]S6(?ڭSfB{ޓw9E6T 5V'+jyW8C}=窜6G nW~UX/Kq{vԐO*.FkvڔW :6w`9wq遭8c시@LLw舴TZOO q0KMmL륶 L^w;'JA_Bf4Q^P]^y *3Y0ilǴM9Co:l٩ƛv #6CWԎm~Q෯ ٞnyj x?3aT&nfٌwАýMTf4MnIC[ҭqOݏ_T[_Obwp̈́CUm见զ'~>1Cz։%ި5!oLkd+ TFN-v~mK !݋*⍜vPpvIoX[rzJwDWdU< :f ln<-4]ZZǥxpAW0vo[.l_k肢m=kk,MJ FM_T2C^H s!E)"V#መd{R ?8pK s ɜ5C%nI&z nّtIʔ{ bJ.Pڔ/fSt@a6Űٲy/V"XCe$@K HdQ&]HO/5̠5~b P q&u@KymAųm*n}H6Y3FݏV=9G[lV-tdثUS3ڹZe{u:2pK]5f"A`ЩQ4 vt`w,Elt֦vg?~G:{w) w[tѦ|^hntճޫw)dzMo AsQoYP>@xM@<&.Mq1gvۤ ?8Dz@Ԑ !yШ)Q`0]a7VLlh .\wMWL"=~A°%+b䎷jQVdipv*,6X{o;S\ěIwhLAo(JloK09dۇ0"P|r_ Gx=be@xu:P嶫hmt?~BsŘAXor(8/=D7Uhn }qtkic)]Q8h/{(DVʴihlɯ8tm|ԍH0ᴝ`Ĺ68OBa9!]!5x֐b,lڒӯ3+G8+]{bmRz1հNxJw Tc,isH4u_O>nnCxj̢}bOWhmt?~Ǯr#RSzq^ĵAꒊj#qP1$]TvTi)pםtߊny8۲;{ .&7ݮuIHtɐڐ/~Nq/TO/s3(oȯ}i% N/i{FzkO \I7)ډ& ݬW|h4KAU2+NQ2XH(<¾G ,^W:3J䠮 sۤtYuJCz8;m̎[n9f)<6%U[L{mP:I%_~G5k}ȹ|~`{Უλo\ݺ|u[ró`Ԑӯ@%ocX`kڬz+$G›*İ,+՚t^;V4bdbɁ+!?Eӈ."α;l>悵]Tghg` jzrmpvࣼ{@HE[^D}IW@GhN[or5ȏ("l$^)F{JZ '#a$cZF[fg]TFwXF64Q]XUpHA l/54RAb\%95)suf؞*JYBx+?nm}Yy[$:u1 )p:q0wxF)ꢔ&duɗTwp:q#ͳZrEwT4wЋc A5yvBE-n~<jȷ3M7ǯ`?w0n{QUXOQewn;C?bm/foqD{0}MnӝŸyFLMkSބ?o,0T lB嫖D7*=tE5 jng&%Wdrݏq,& -n5~G~Ey|V}[5<"pw)nlڔ/~5t5ދ&(gvy^NJ@B.Yose6(?`d5#<ӳ:(z]Iwko5=^~Ejm}na%KU^>]NlXw9jwX缑I Ƨ/Xvi\tQ9 J]^d^4U)`.l >:,39Zc}Z}%f~!xm kEɨluħ/~RCwkOǴ6U-n;5=VGɪm>SM㞦wi,ev ݪFRJSoKEw9gIT3vIxZmɫz+XQ1ݭ`rmR/!k祥@|nAo!;(/DѶB,\`&+ӣ&ۺG ~2WiӹWF#P3aEht|o4Bg vnhmʫ;ɋ{dŽMtOQDiWoȗ~`8M;W]pGkWV~¶jf'F}Ǘ_@*uIOc\MD[kSNV Q'BD+2"/\7F`Ss芊'q'"]ݛֆ\~AILMN| S>'Pev ⠭H8rv 6a#!cJv2q~NNPYCǰ1% ;١1N^NVEwga C?,b!J:1\ƧAXOC9Џ\{&w"l:N'tƩuFTW䩷QUqnUᬢtڱ)_Jn;}B;hޒL (RJț:- CbO5@}h`;) '^0%U^nlhʥ#).g1p:kYMJgCPLMwpȌ3:](d_J#z5&NG[Hl(ڔ{䏝u%ֻr3_]ɑ %jTW!: | ɭ$U ݡ!,hBMÈn; @و4MNHNSApc3Z"Tl/ڔ/fu~Q|Lu-PILNǎY|l#b'ttM>)0w'>)V/P0WE+jft1I6S; <UW' (Cɦ;Nh8 Ê;UtTճGEwBG Xp%{8钑EY3)(~Iwj\\j*{P(Y9=ɶ9LydqP7 ,-Q*!3 M%5.i<;HyQZoņ !-Zzt{ KKAM[S+g|~IVIWwQ(wꙪxe< +Slw<7l|ht:^d"ʰk)M Lu\j5ct4p3jt&: ]xvCo9 OhV!g=M&zD`5nqh٩h͵]u|;廨A-Iw ߛov/mRڂUHlɶH<^aJjz ^ʚ GUyŧB^=tUE)_ !H^O@dR!%ɭ~TސnIT$  PKz,>~Q7 !"U@ےg-dB3tExh㵳n~W0wn;5)*dρ+!AB+촐`Lcm]rJSJIUp#NmkWs4\e;dwHyR KS(=xm&~kk 8{<" '/L >nf[gNI{z;Dn}&Os83ӏ߱mw#hc]w W]sӱLb#̉OSk8U=+t?~G(5?D"B:;TbɧRKJL(f4!svLo/ iitwhNׁuj7Wd3Ra.9N`v6Zxmүș&oª4wZ08H#VQz+ގ#q.C#M^fP%Nf[v6u?~5"A I芪QlDlPimP rE4cjO ؟SAof|V-*ڻm>0thDO ז~Q7gdNe%[JcAگ&)73o]fޏtAE,iH|!iN]R}q ]ĕe)s2췎pcꊃ:9Rk/ZJܺ]_qP$]v_M9n;Q¢Ա8Vn!tQ.Y+ k t|9My=NSvuȤ+)qC0Lﻙ|w7& VUqlwhm=^I뵘g3Wʫ'%b@ v]b)צܓԒm<6xkZx%J6CJ.@q;"R'՟Z򦉄FZX8Ps_r4h`J-GEm1w[.:>atߩc4 hr(*2ݮnw ] *v .imuQǮ.uRSm>+xVjj:I #~ħ_\n*{r%ݏ9:9޳'c1A=Vx'lކVFIsllBYPPu`q]:c %Ub>#8=H=צ~Q7C # '1MH"d}cD1POReeduhք@/WʄzIqPX.E ʆR(GFL~uØnA_MJ6_~v'h}4= @,Wئ{U<o ֝tI0rqqnCuiWP8U@FX%B[I!`lZ&xMA9z5P]nv ݎZ?ڔ/m#L7܍HdtI1} 0 lB!B_^=o'ܫQZѻS'XKSmצ߫ҭҥ_ŏѦ:mDnHcN< HGP{4Q%q]կmқaUޱ3c'ۺi7YݬmNݬ7>Yeqmb&l}ڔ7=;wT3㔅tӧv4\ 8 F{{R~ yqtJhYn;P,VK {AtӐ+*FɞNWS&[is/M$0wixITqH5G~7MJ;O=;.k8ڴ-{PƓwItA$BECt[7j!J8,FYQqj81NӂK8&'7& J畱CV:<\А{{.R_())I7~8|݃mH}qmuߊ 4D|eb/o,; [1+[iO]d{ Mt1h7f1lTUaO[+tE(Yq0v{wM(YMX@\]bVq4ԫ>2nE皉V@JZ@R3{={E.Q5G&DWP)KzеMJhv|ֵ?~ldZMA@[I.k8ϻj$GtIdpJ ]4v@AjmS~ǻV/;;ـ8QaGŬ\ޱǡ.;]8DknWh}QzW ;q(UC ;K92%U#GNA|AwykS.pFq'Uq 0a ,(_*c:UT g-5n.,,~GJ2.0rP&:1>-@3]RKh]#َ]֦|#B\37b$,ma|!nW ؈|ŐkَKkS^70u~w8WX5V`M?-$$}T"Iq{.jQTٮލ)&n1 h֢JW1 uÇQ5I tYiH8@b+@!&^52l U8:jE`:ƒC[2j~N-N\6u'*Sm{;~ڷG?ҸU,㤗Oi,P;p=zk ~U7xr47c )]Z|t>C>In/s贾coD7)IPÍ~}zPH3JE@F飥>zIɶdC $+ZM vgu"ORŰўlxRpmu:MVɘ8Hr6W4{^9&$*%AK j79c!3W筇_qꭁS{T퍱&|Pɯ"ĦKjk5sPH R N%CٟaȎ$_w.O[!]26)UfSJ9vC` tx^mRG]/a9iپK0%^р1uq3ަ qx QTS<+*Z*a[DHG-ZQo=28?lWf[@QK+U#^͏M|;0 "7Щ݊t=DРk;,MJF}z O;~]|}czf͐o/lAM.ISn;NnZrEw!Vq P䵶(^ nc}Ƶ%_~G@^g蒃:(]GqY )GmՌv%INmW2\rݏ_&@3%I~6/XK*PAOv$imʧJw],"n Du׼1K١Y{IiT^ŵưrŰS.o.Z-֝(Bji q0~7XҳXkB= HO;Zmv+)=vy3銊eqɓ.v,kmuJ:Ce%A;`Բ: B?^PIC0}&wx~G'#`E';/ <؏Я(m QIR0u5\{*8n[A* E T-uk!`{SKDݢ8Ga;Usm)t?~H^'q*z@ruP݆{]@;HlaTО[0L>Һl+B|)Jl t؃Eg/=8CWU;^aHQHElOhmʗw ]Xkg ny#WAq0W$i.=t?~GrsO U<%99!V.]RÓtBSu1S6(4Vphs;'4;-M>I DRSf҇O::.odom|jiMJ,V{Rjr˗t}´tY85Y>g\O~Gؕpg0klǨ|h: [%5]aYWv{v֦tqL8x02$ ~A7JCKڒï3ٶu٩(CT$:/;rNnWq] 7ٞ~hmʋ N]NЌq̃%J*$ WCWT8.5Vdz'ֆ\~Awj:dεZ^͒/8ʓ5.)}qPBozmP :rշۓmWSQ#_1񺢚Y?) yS`[m2tߠ J^\.O[ F p_=>{~j@]g]ejL)p`0}9<]+m+y*LCt]3v*wڔ/~֞0G(ɜUA'y8j9-DԀF-N)+ /~W;%aB DGXP5^uH^~;"Γڔ/f}"!q nA,D?IT˻ōR[,!.Myʄfc?Vs"vm985SKc5[{%5wi^vR{?o^EkSNepE8N2e' OQJԝ ^5V(mPJ0>qNEw*IfVXrxA%Aj?Ԟ? Rk+<9>7֧ [[FVۄ"{ ϞtBO`(1p4[Dn> gϠ-Q#tUۤѰ%\7bJӚ/Ӱ[ 2q|\8{]>֖~Q7-شRa X/QN@,;,kY͢A)H.ڒ/fRY,ګG)\S^*庤7bSǍ{dxi֦~Q7w ށ~gt@+҆GttI a@P+l؃smuq~aQsAs3c%5/T_Fjh*]=tFL8rݏLe0bXGkWH,u,a /V7_OJo} )ȩVG/VQDz8mK!2Aڶu,}(=a-R7FoB\Քwk 7>79{ KDh_{}M<﨨.:H-98-sRp_鿡;}+zPגl'Z =t?~CHd)Y?*uD鸷T#tE. )+َ\kSN#e{;4[H*%t05wG:%-$q[!drK9ڇ9PNnEJ!8>&z F |O\`m'ڒoroF$-]èشk MQ>T:ZPIWAu!lGHw:ȜuQG59]z 4UϖzITjrz+z;ٮA͵)_~Gvۯ1q׬6qDH_M;,VS5;,q.2=ڔ/fcOM(L(ZQ#=Qzգ=҄ l3ǙNkSN!d[ڟ$$6&({ync-Stq (Fv;m'xe"5M`jBYw|\⠝x/!/\ˇP&L7!1΅f“?v)J@T]8CW'83ԫ.٤G Iwt^TE"t>) ]-UEC#!_~ǻrZPtɃE]ɠ۱=q8׉!%:\(n;]ippBy) Ok~TQ{)v4My#.aWun;طxWwv&ݭ>zoNhmu(V]\![byuQJԭ_b_UփIӈR.;AJq.}zە,s(G[t\)FfRuƆmP)^rEw sq썧FXjn !miΐoA TF"5 ň)&/~%|Uy8_^7T:/ 9֥KCߜM'hmʫ{L7X[P8(/HUN:5(i}&]RwoGֹ$IJx+g zFHi;*DeCԇF_N1J6Ow5Qxto]i\<!_>.k-v(~lGr rmQ!_w-,LX Z9gљ\r+t)ʗLXk|ѣ| !nbx3sIpS+'u%uVymOߤ/d[ޜ!BT~n?)'=IznU|> Ԥ Q{ xWf+`y.4w^oR~wR!n o襤_~٦<0YyNBq/Ao5SՉօƀ3+ZW /bլm\д7PQ G1F=7ںFƔrLݦrPnY.-HÀRbxPp)]u-QȅCIX]sY|E¶)c1~gƞ,ytuP NdPDVƓ%ﭻ"ݺୣ{vaqR>_~ggs7NَVJ1 2&Yt_a]B_7̘0o6E)ֽӎ#VVmkݠnהzJshxm.*>"]g ^3Bltƪs.T c8[f l(-u)F% sRaӠ82Ԕw9JOSNQ\cJz ۦi%/;?ۘ9 GE}}p)U!)y&Ԉ0N\vnږwɎ6׼=/Yc:k E/ ޖT";=aTB['67ð;P^Fjb1 5*fBT T>ֶ%7MkC8sKIn8/eo}c/;k (֧9h ۦ[m+=9@5nky 2vn !D5@d_Ksȑ;7f Cq4f*>rIljN;/:t'j֖|' hpO9 rD(hbm;}BLN{(GT]q<=>Tb)Yw2z]{f`LJe{{-oYBp{ $(XMP+ JC7ti'l"b tM(l 54.2Ogb\%ur1#+;lQoЄL㲭wP8|p}+C{ff=V5۷;YFw[@+oN{BHB{T둸%r Tkjf9>EW#ݳѯ)_ֽv:zj[@̓jq*j%h\B3waC?X,,]ҐἶqmyK{`8<.UND59lC6C& Mqmy@!l28r!wI> k8+WKD |s=+W 4'0ֶs= |A6tb9vs:+aH1sBqe*.tߜL}}rWAY]z8}8fݥLml@O$~toi1ʐ]z7c景DlSDt6FsJHBwI1|k[n{eM WҔ0NК`Kzpr S|% 陨ha:r땃a%?VO5ĆyTY&{ߖc,4K3*@ G/% w(Z5B߾To(Bs=G]5U[ NQ1$pV.%XrU ZR1 a sw9HBNݑDʺ+@ ՓیC^reo- @@0#a 0CIL i)^oR9BWXrePT G8B:lEzJ|}0z/ݗG8 :Ε k[n{})|$PjZz+0"LSnP.+xKl*3%~gێ =ѦUTbGGMD. ]S.0^+|l8j{E8%$'ݭ:3S5u%N9H;U,i3ֶ~Y;@H6O2"ow&=|+.Nz槗[us~4-_ֽVٝn^=PLDuwgw>=uuxv^~mj@8Hip4hpmH)@wK7J|z7qed'si^߹5v؝҃L:+ovX~ҍqpbWbGFG~g(+RšC WEpՔ?PԓCaMzٞw(7vj+y-x["el}JPv u_LO?Uws'xwozư^JJ?`;m?vwzbcFgY~45:TL E+(֧YjӔwOۢؓom!\owY se']_(t{Nt7upC~BtE{ ֶ/3 TĠP8Jf~ @OKwPrD nى{m&{_/#e7n\cߚr^%rpt|9 <6ߵude1<_mw"U'pZ \.ewv΁.;izeFD* (W%ϥ;DEA{n dy#J齶A{ʁ.NsyH^.J0c=0XW. EAҽ~QLFYrLȩht,(]K¸v(rkqw5}{wa߹c(F^<9EQ]F$_ywHto3]x ԧ>0ETuw$x>/]SoLwУ^|.3S^reM b%E`]l|E%Hj^~Lj4[tޱ{[{s4Q~qk`}niK !sn` vB兔aݩ^{y;:ߐ5}&MeH Z* 롄k^yWʽGg]Y0],6^ l.bmS+?Jѽ~*9 9t  G|]ߥ|h̜urW!޺lg-_wݽY B(/R~/z!_JYԛh l4Bp˺l{kk_ֽѩО1(#5̑^p)˧ 5W* ֶ~YBў(9hgMEsDSt珑t큫V8Qr5պ7M2ah$--$-n; b:M+:ȻZz*~_H6g< 3x}ɴyi!UxPLi]upx[quٮږ/; i σ\q u{~zW'!MqE֒~} d7GNjf %u\5Z>ORN9⣫QN(ֶ#~|~7g@ۻ$g;QzZ4y& 'm.~ۄ#sPUy4JSiƧ#p g QO_7C60Za8BWc|;>1900nni[q~Y;U IS>$9MGG0N緩ö)}ZY/=M_~_G9( +'W#B/w3!\jTl@}cmuoy ƁY=E)y)UuMMs -gF3Eΰ/~ҸRV(6 jP+%OUB]mU渭ʺ6۪Xr?۸p{'aߦ;aMl]SYj<cylkFnl>~E)/FP7F!E"BD*`-ymSz&/NgƉjDj;K'4}7GwtM7G,#lx޳˺*hwGln>yv|'7tU'֖@XqƩQ=fm;ot!Ӝފg [#&" GDn/lCno_7{h+[_4UJ+}1Ժzz ]m]LږJɎwWLts`3 5*Lq~O]5c]S那 0d#lb{vL=AT^_GƮ#MJ~U3 MZ6E'J߉IfMv C׿Ubq9F6`=İm*D+ ~gu8L}{h D6.ݘ`OSW?KԎv ]Y/n졑/2١@P1}.Tϓ9*0@xȜה? <84sXFċ&I.6tZͩ Eeē"̒~Us6#?B> NSNF=s# _)?[OE[ؾvuoy<UJ%/Yre )Mq/ޕp^/yJ0ޕoȻD>yW9iiii9]Ycn#JsϦ Bn*$2%ߔe;bcY=񩩫\73ږWGz&{Au;EGկdG'l2n_ֽκk2 z1.XU& j r* #|˸-7k)_~_ᵮ{; 9Pq+|TQ}EsJ]cFऎRn{qd#3JqdZ~3|3lGsװUmh2GW~0%dl2_J:ԤSΫJvb*̋/;Fdb !MA3;/bTOE,ݩk0 0 _~_(F>"k~ O"w $|ff=43Fږǽ_~3 <%u*;]+ tQ_e9k[>i"=߼+G49Ά|w%NZ-_?}>y{baPW쒞Z;~Ǟ:l+K|ևMK0ϥ{1Pk<Ǻ2̓еCd-ke9@F7&@^GҰ/ۜ_v_vܭ_W]#W erGU+JisHw"ۢxR8xPt|M{ ՛#t6 (A<-@Gn&>饫] ۦ">Sh7e̹ʑއ#W߆Oo yu6 Ndhimr;'ShR^|ތdƼu9kO\t2嵑/toyTuh5uӡa k3ſ7>6'qrU0I~go3ԌZ=u_=Fvt~5ֲ{D\#:_w_\yV➍ ]:cm0KyNK_ffU9c ҽjzKt TԟwUSYFzQږfG;ߕ;*ٵԫdរp=1יzˣgհ=lsgVz+X3녌=W%~go4q8vtv&O:&JjDWh-\\|/ۼ+=xW:yڧ~1!&nG{՝]pUlwx}J~O)֣bU'pOPu_j~KޓwnSK3{e_zQMWEc!_̬hoR3+gֶSWIWl+9;ߕ 윮yqq,H695Uoߦީ[D*r-%~iub0BbE?y)ֺ:_ H-9~I|8LEc^ q2jֈ媀BԈ8] mnvn ֶ~Y#Ti*r/Mxᚊrؕ|9 'z<)4fR9k[nMzs%|f3 M;5ծ\ʹSpwږ/~s TY7G7loܙg:ϒ 87dCQvFlYre]ϴ=2 jyN(ێW,ۦϝOzjv奉[є^zNnÜ thyS usG^xt5A9a%/~_u"/x޵kvGRWP:t2'Gyݯy}nZ(E=ۢv.(ߟ nݢ`.emuo/ 5Wĝw(ԅWe'.̢Sm/^;1~"'޵gݖ|w]nQξt_{Z~z;9SWݳn|#7D89EnL(be]5U#b GA tmJ~#~Y090qaT\ egwݸ"#0eZ&i)% stowPKw-~8iw'7WM˾t#F~zpU"?-_ֽ0ޫ&仧: G#z gީwPֶmߙs_pn."Fb yfSOf*C ZvQ Ԣפlfr9~"{r[Il'e{ږ/~Ol꨹)O6㓿8&+ 'BVѥϊpWXq>vdIn_TmJ#ئ-y e}=3G(alf WT7}WԝA(P{Cxqˀ>6G  -'ֶ|7m"n8BT.PgrR!ߺkjEjnmҧn#uG1A+0t`ݶ5wE b 5U|խNۦx\~gCwAY/=k5?xy|M5Uwj 5^!ܞZgQ3S͋[e77",rWivNih GpĬ Xre|#.hҁmZF#M:0H]z#6tzcmK?Ca mp_ɏc|Rztcj" ވiL啃ѽX)I*55}QҙIN[zkK7u48}-lM:Z;IQG;A }}Bv'E@o҅jq$S]N]Hږ?4~?pXRA^b{;ge҅wIјX@WAlgP%/;r6||͖ G}Ǵ(R.Ptw kL޲;[wiHm"v#(Ynf[uф(Y|u-np:*SJꞍmyTڃ?`[ﺝ[g;:ZSMP[)?CBBT'Qu]pk#_ֽ&_Q/J1f %o.e>4:a6rśsY[SNzjm䝫~'CϙG@12͘B''F[>0m*PzΰXy˺$'CCGj_c~_[Yi+ɦGw I[bۦ釙]G>88YK&{`)VߴӠHTqӅq7i걮*]es a-H;U//EntvM& NwGuEa͛.yG&"=o'ɣ{.EӘ0L/>'O$zR5p<1_V6Jy~9srdp;`)::oR>Xi]S=[:]sb׶YҜQt.mj6{G4)H-;}"\:nvK0FWl(Bx]uo{x;ӵ0λ]q,,POᨩ ]qa{䬐Me;J;~2 iGI&Bdb)_zZw ۦ0 e_ֽrϯȑŜvSCt`¡8P7BEv%!sg[|ilDuo]9FzA+β~z&CtGö?BLwԹyN^! w5]V8X~oA8Q3Ӆ Kji$"f>_.â.-Ōb㥦.T!Icm*=%~، @B1PΩM1{LI%&գLNL>:?nq6 p:H 9ADᐾ'i5:=X0V^})W LaDly7ΝlO >7^00wsKYSR{# -$"oFẢjF>47sq{.q\8X=z }t}/ _ֽԣt3eh?KhO5J(&=Ыgw2@~Now{5zavuu f4 [Xz%;=XA֔HgHkcvHExYYĦ>C^dHk+1 Dpwm_~g_ rnBPZ/ˏ4O](4fVS<:rK/I]Sa{:#ö) luoQqVL[~h52TLVw^pA-'`^%J{z/gQoV8%Zf7)LhuND^K"ML>OH}֏9F"5cJ ;jRoā{"{ҤpT[J~TQnw7||xtMe0J`jkpw>=#jfʟuJL~\W]~aX4T~ߪs1<" u Rv'烃vvzsBW`1-/oΏWTM}[Uu4.ӹ7'MqE2/tW~'iwj$Zi6e,sX^洳EW;+l6e_ֽνIqaTq'?**У,_zmu߰^Bn<ueu7 m)7u%PD7 %*X#ɾl{ijg:9rJהlYt~_Ŏ[r<]tv`fKW Dpn,Jyb5U%)Yw ĶEtGn{ͽc*ߓp ' m0%M#\w2nO8FWhK~ē%/;IkX`bMcL("3w|d0LhR(,5/MIb{٦thfNUߩ e'Ѳ3|ZOj53i;}nqvcݸto_ P.pnAMɫO]B6( -՘W/~S^}ޜG~ A_iG^tft]]a>%/;cc|G(_ vg}r=Y*Q=Xa;QY'*+/3nDmΰ93TD_L~#fs۠;mYFgѽκOYka3|}<}F_)iu;oDr'}ctKڍtoq̰/P_!NDuQd @n梆B5тnet5n%]mC~gv$TZlL?ED4B=lĺFmQɮ)_ֽ9](z&Oƻyy*!]"[ kmKf~ؘ=b>'J*V`1BX}hj};cu>{sPbWE.gT |a'tUE]s6׶xc9[Ce1FwtQPqq/M-Geod[J*D\-0LuTP.3OXioEX 4W,a;N;jHplM/ ֶ~U M-b́z->ҳF/ޣZgtOusn}bm{v_~4Z磵Ü.n@T祶R:^-BvxmG;cuLE J/O9R>I=+vΧcmuo/U JƔ*B ?.NOoUz͝'3kږGmܿ9;/p-ޡ*N֝T"\t<dv~sw1=ܟU5"f !/lﳶ(ѽxc}ߍ7ϥpqkS7hGzt7y#?mBdn-@/3s+jleiw~'Nl(b0Jd4]yjwӢk?L^wb1cV{VpIi AcԑIDL;uy/a{-_ֽޏ'ިt]m%g| &--)Kwď>S?63l㧐To~F>?8:2 ?lgUF'k$4Gtuv+)3-j)3f(m35 {P *h g~8pϲvHzD^:/9S3kJASqr險9=Vt|mJy?ߙmmd\8F-LY":&Y#Kԅkmk[۾q%~]=3Vf(#xSI x+@qdzY|ֶ~Y;OŎ_4hKȼY#l˄!jv k[n{טgQa'fNz +<練4j_~rf`C]V{%~gu:#:_nuϕjzuBdޝy)Lږ?D=o^re  i˫{[ xZiJ:> nw8Ajk -`Ly G=r:#qF aSDI]db$y~g7M|S'-˻/}[55 g1myo.psPi1 Bn=Z/؅)={eɑA Gl)&q.a>cs_q|^Q,]sSn<) ۦj ֽCW5 >uOh][7#t`V8Jɠ -_ֽ*xc D9d3Pň0sD4k[n{dM8li[5颂~{tEٶ>]i=xUaOSnOh8r/ G.;{O;!N-4zxtJ9 H8d4Fyng槷uq-Jږ/jDiv$[6!`Vo\f6jtդAq2_ֽqMwm+Qu)Y= m76M=G PiQI$ö?>>'7/3gV*F`>N;w@ RV1aS,epA yG\IHվT]/%4|2=1ƨ󒟦r{va۔>ⶼRjtoqHtf3C7\5n0:eq:llֽ֖sb G0oB=7pP55zKݮ1`h掕B~YQp 6}*81|ZBؗnb[_sN6O?9~IʤO3"4M}Bq.`]rx [џv/bm-GۨgCp`ڇѿ=Xx.ſ_Dķ{6-HO=J^^X- XSR{# TBO*'zD_|UCR.1u^@=Ǐm@E)/1ywl'?E0OOS'PI_U=HIa<8ߟӃݾN1 è]Nwc'$?=0SijeI {O5{ B񦣳ӑ@e+5U3eN9|ү<+[Z%~g>{N>79QYeeݳO7@Ĕut`7ãt1j^ ͡^ p_^GR)PKz'U2沆7G FQxe5Cz?5oCKT|ź޽kdj\]\ zu*U`ٺKh;-`V)/ Gwk`f35&VPz߾`b.k%f9ɏ=a;]ԚO axp> 2\8ԅJ/8Fne_X[v\.8K9CCjcvv^я7;HImPp;{{EcE?^*0;@`. |)h]S mS\c|:/T6o1)wͣ<"z^\\/҃qB, =rjhq~_gVi:[W`3)ey,=DltUHDdm{/{~gʧ+(s8.yK38*&]p{BWݾ{ڒtͦ~Q,,mOEpZ#䏲օzntu[`{fE׶~I9fS9™z 8ϸ16Ϛɰ%WjR93s k7ެϥ{M Lsp='x tM8BD@W΁5pg~Y;ߕ]T8YW1RhB_$䕔AI=1½=bH%kK_w]NopozϥbT*imy,)F,a?f.;?ǃ -?]_6o?@tmSݯ~Y(3z<$֗S,b7zz'U~}tUnmtݣw-_ֽN T;,zcL|tK 4ϳ*q姗Ęvem\ͷ4j$l(&E'E1yq"5LDG誏ږ/~g׫vd]e^SAR,G[y!TaHt=#˼\2ju{ֶ~YeO2aSWG?"MZ**iQB]%۱xֶ|24~ b9J|Z:W|5f1z]D5Gg S=&үIPlg=Crro~l|L(1R]<޸jή>bXE|)wmNfmvo. kH"m=}E:&_ֽN\Ǡ(􄣶1CGEτnv 5.,X+l(dm˳c;ɧ@9-瞅 zO3@ RɺP+#ǺKȶPk[_w688#uo@d\'xt#;֖G-J3f֥{]e_̱?Յ1N8r[wS(̑?ֵ}/^CBۿ)2YCYZUwwmx"Tb{uM{jKu+ڝHҽΜ9 G*.Kл^(bn;-<9z#G==#ږNu mz7vl(r$ vQՒ#ptMc{L홬ϥ{MbR Iexp3ɏ/G*f͚6fÒ|yto3>gd8J-_'+pk.3rs+M(=%~gZ8g2ZrLS/ Z֥;䧉Ttwa۔>VIO{}aF$n]1> Ŝ蚺o3w<<ﳶ#:{8굚BrN^3(|a9[Wo#l˺\cM5e/GN_'_ &T6Gn5pz VqN|yֶQwtoslU:M-Tp̿8*,fZ(1Jp /]SO"igݾ}᠞Ӛ0}j>sĘrDɯwnfVzXSO5;~+]AkѓI}QU/GwPB>% #my噿N8 G-՛h˗%bSX'nU.t;іۉߺKm[8oMU5ٯֳi~ ̶|6+n"Wf1Cl̕=k\+w.Es&+Q 2  O=Mtހ+^@ʬ=gwVp8`3ߓ%*g=U bvZL*T^KVƤwVVu7dh"e2{@Q5Pg_fgݗ-?}8new}87價m;>Ҙ'i3 irk9wK%'X70=;mSNKo-N;`ӊS&XS{U/xMk_ʥۉżν'ǻm T?4^xεFqe\Z1.wv ֖|0Ϛ:vߤ3{Q}{qw~OtPA{/Ryˮ Dcږw|&=KT7\2Y3b7yt; TkxP$]*ηmQ\!_wtN'w~j =gBrPQ6ǑBGǿǕtc@lH_Q0T*͸5~o['U/D;amQd:r7ƨ٠#E]Ǘc@-]]0d*/= %{;˻akW5v}1ږ/~;gF{s<d sANɜ)yԅJ,8h0kC[%o^. Aj+0NqR)s=ǐJgZKЖFz&60 39.k&|<<^E.ף=C< lY[vmQ<)/߉W1ф=WYpqeA-BG OTAgS mx#ڎ7ԗ48[/8j8DWlCVIџio%[I]@b{-)$t}5~s&(5`CdPjPF-Wu9ܣ\a&pK\ͳvӱ5V+E+atwBH]EO=08l˺ߙPq8/ o\1:Q'gXu|/鎮k q_<,U5Lu| ,)uӔk`H'?f)<y l'=u+OTMn.wFu߰?5F|[:3GG}.M+?uE3\ږOƇzpSlMb` d9j:`.]SYxGGf.#~Y;G3|QImA pU%qa# lR;>7݈tijgQ=KR5Myϥ5zv ]-A; rkNWs3qPmf~ڣOݺE y.ڒtsWk+ۇA}ynJzKܗ*;lÙ)?C(=%kFK;X@i뭴㜶J+Γ~ryW uM=1 U .)5w6N|YRnnJ!\M)J?k*(5Ҭmw<gHn/pcmqL?#uM rSϳ"HcmoYbϿU ȞP -Wu({#K?pucpUn)j qSو5U0)̶Eq(#_ֽ6b?*~vյkEy>]y.3 ejylwV5ezq/ߖ7U&cjfxɉANDTN._4cmuo/vG^]5Aa*7WɒJ>,.T@sوh 3Zڅ -u}Rd^ވj-6E[ 5WcTSRWi$lx걶EO  -Vɚzci4 :gg"z kJjowʣpWœ/=+@̔wAYWl饐ҚmQD ʛr{mPhA).Lp<4KkD̺tHw~ș߱3t%l(amK?DV'.8 3{tNo+圸u@w1 J|vɨ׶|P4/5)y⚊ܱt*US7x&&ѾKW]g"=~Y;oorN0FZ(r+}a75Yv!Y^eߡm]eRwԺ߉HEaطl{IjDz'+.|zp ۉږh8~403p[@Ucy[dS%>5uyWlxR˺WDh ׄEL:STDz#>tM,xUITjym;G~[c>֘O5Ƣ뒏?IѡRнw9,k[noGa}1> odć&⏂LHg0:z"d=]FgXe5-{һ}M `3Hj8qqqgE}$EClPwt|]CDFz>z-l02zR¡~<^[rqlc<}z\}ze UX.5;m)x}W+pc5RC)#Gl71Vn؈i]́^ֶ|?z<t`{oɰ Z=qW_VT5̉u;*ԊϘܐˮ#ێֽxvJ;T{eK@o|zuUIyLI7۝<:Ceh%o&c-uI|BڪD8v b-9n7ԔJx{7V_H{G}n,=Qٗ愔@/ 'N%?[Bah+ jNkiRGZ b5jU¾41E]0956p;{EX$vۀtKj%\!+ )̓^5\Rj f!NE\Ԋr$N1JMrWǏ)46 vĪn^]|S V[*=[(1l}-OuIsBJkm'hnʷ>;"1 ~`!žD\VRH4mbX, RmRZl+wVW֛]scRŮr=)LOVy޴P41_IMk[[: k +ߓmNX˶ʅf#JŒ9)5˶ߺF@ /⿯}-SMT&cW42=SȰq x um>F黈奡lN^ .JWwJ\Pq&O{*hnwۉ;Z(DSڵE HSurR3)z;T*`(vGgcFߍU)9.y]Tl q**D[]cܔ.f S8X6]c9{PTEXKD8(UktKɏ:X߃lw bt{u % ߝJw+*jĩBS`;isn:V}JZnkw-J' rKr]RKW(K57崋nG 6bAt0ChV0Z +Iw S+8N)Mc'/M9n;[p_(9h&VbAVHa>ugjP0oASvvI7".qrS4 GB ]Q!A*t _sC.;6\(q*6zJA0 IT8aMJ9B>c;4'ncL㊂ XgnE;v'rs*fۍsS&o0ЙV!wOtʡ.F(%qniuQl5Q)n(tMpo]5rj% Yhi1jd3t?vGMeqzq2 ?r@IN09{-ؠt+=䴋KK9{ G}e(|`ؑty;\Li{αA)жvȋ`jJ[Ug%|]kA@]ͦ &v.0qN}lR3CmOu<ܶt\/\_A#Lv{pM9U/bqgzp0jp5Y5tgMyUfuu&*Pb-1vKXSx3[:T@t#yؤ3cݰG1VH~EĈ 3@]R-P>AH5wx8ʇD ʼn}TdEnf4tb({&ݮ| ~%%#]a.G䁉t9;RO;S8Kx8U:ؤ^n펔VV Rf:CbbD SRfJͬHfmvU57 w 9iUߩdր$@t:R uT!J 5}XsSNwrr5T,e~ntE!Ba҃ZŰ<YFmZ5'z07tt!Ymݟq-q?]z 0_ ZR]}T2A/qCò !RAVGx J:L>*fҳTD^4'zV7_#oI[_\NO|#u:|Jπs5jV9!qzZR]iI ^jCgpJ/ICTS`| F 愴F_[iM.mz,~ܧtADY] ,DUQRZlk62 .if <r4~.ŧR.u-4w=ut(+4%Gbפ]JmxEUۈW{3asy]xtWKtt']؝)Uw˪;u}Dċ57VuW>Vn5>MVݙnL9kꮥ0D,S6(Qﮣ>uI tlvQ7W䢀ת%kՕ0H,UagtYF*mӜƐ5H/Ed%Bcs^[Bm2Y#_1ō,Q=9!5˶:bJŠ=|^3al6W+ӻai+mQpNJizqJsه7JF^Z-U .SLKxv]ck5/};rs/- cxX5.2UM֠K.ukrݏ, .j~ bzw޿;mp{W]:ЙzCmJe !Գ$[J>ZQ^ il0hA@1,8wbm2o! #q RXLO_Ű0ҳ0ܫ9!5˶%Ty :qY I-z\Qr@IjWH("a`L4ws'l7m^êRU½"Ca`\k@=M>1,Az̠Q4RZcz[#Oف4}mj7^t7;¨Fv[MMJRR7͟n-J}ohX 7g7`K C3iTц U5O/_$3n)%&n'wA_!^2*b . 򤰆zֈ#)qE $/z8Ҙ!:]TDAO+ƎhʁX;rsyWS`qP \{:P4N8a(_8PTh8qpѺi`rՄS̨TrTFrZn"l5SiGprlw `  VE.0 9f0rD̐tEANvu>/ Vܐ.~V8=k(CLz+nG!9BWa -*|lRAL@EN![,~l E Uʤ)4v] <$lwyKiIx񃘿<}j$@p ]<)]vA)-"L+n&밬H tIJι cЖ77崋!m_APp6J #>lj@]RU(͕nA|'zI7 ǒ3 Y }%YM5u3tΤIsSNwOףPKۨW݅t q &w[}TGfeڼ(]5 tItRoniMck(3Z}-y(xwqxg:Uz+N\atՓ47 i}iH 4UEa>@J֧%52f7;r-Xw-097崫IcIVUh@zcMs|4`i]^U ȸ &c>,?](^DR@4VBxؠ|?;!?Bt2]R3K>ܔO9; ~9XDxqݤK* AItQ.PsSgywaKIYϳRE' R(9LZ{PZ,5[i)蜛`}?v$\~rWP#? IɥRǮKO@.KOsS^Tz׏QtQY(@&2.t \Q< ]R%Y\pnؠ֡/KtC֑Bsl{oѩNJ瀧U[ R'Zuo)rݏt#\ĸ,}Ce=# g'[,'0ho喓t` cm1d}lՕꈹ =/'s _J yxqsS׳ PrH/1, #:TӜ҃|6\9jtܯ 0G!\V]k."ߟ.#(݂xz$$F{jFu[ )^576yƼ|lV0(,R/gͩ9z>.¹%vkZ:.]\^G]ᚻt̓M]QŷrU_=%ݐ/6l6)'bʶj.4u"%B$TC =#F30YZfhJzXltcņ *4s=;K:r q_H܏">㱺!oc1a%]ɵmLbz(V rc[gO: М[ ]NPȘ?}ғLşck#06…:oQ,l7!o(a-oBx"VAU8h']PSCFdG*XY" `J'БAGSz҃P<߉axҫvYfut(l8|t՟I4ۢPv"kR{XY`hi Z)46֩9؉3L  gW]J3yG'7^b'Smzkͧ<3-u! ;}!gZ™ Wq8ݩ^>*iC֘V?^<꼍a盽pWüK=Wߪ"=CӨ]p )^5A$;>聰)/>[*fH&YIwg gS ^|6 2WXJlwɨUo3HW;u/7) 玢7Қ8F-jNHԭ}meI0_/I dѦ㭲<=oAw,Q=x9!5˶ü?0Ζ클.=1ׯp=ʃa)z}d؍W.EczMc+mŌ/1 mZ-9D햝';kRө5бDf =tQĐ$S.[~[~laxQrQpE("GIal`J3cSV\Ph҉n͐_4{=Ϯ_nGV Wv[7n[KQ ΁WA- ܎Kj;8 )շ4GӮVGFAF< +p1 XYq."P{xMsSNcDX?FI*֎Ҕx1% SDvxPA0cZܒ51lNFR`Nwy&Xxc/.?D,Eu?-xO:ќتdG`QΨ V)ʧQɏN|K{>7+3lwlg0+VGq<;J(IԊRfs. kNQM9n; Rs ҎN: t*x ︈RTM,/K5vM|tb<3,n/89jt퍌5P(;l8%ka57崋~CGɇ̓|6Jɱ+v&tbV=ẖAӄR7ۭg祥&etD o;9@Hv%gᩡ.6<]/^j{n;K 6 ZORs_oT2_jniuq#$2\KGf/ ja&N,)&ginʧX8#VVwnd|/]VWA\1,u z^QIvKV=VިLm 7+{)-Ր=Ri*1Dt}kUJMpF\}lRXoأx>أP9Rأ3RZ\أChQƧ's Gc HsS~&}cw`٣6X雈WGur[ ]Q=,TZ+DʕƮqܔ.~-!AHX0I*RSv.O8ͦ.Sw9vu榜vQ7wl_ځB0=5KUݦ&8+o}lRz_Z9n;:uţ;6-"Ulhm҆Vȷ݊%cK.{ji)n V ׿Va{QxDyCMoV ƶnKB2UԽY[/-s'BTQu ,w9bT)6ݼ F\xbw3;L޵TSXxs5veQsCɰ-K(nUs,QkRXXz|҄Ku'DVchniu݄:dL"T4_7׺:r?Gb삡Q&9!5˶F[{$IաQ\ UIR]Qp.@ha1=1fu`1Q'PC m#Cli 72a^@hlnQxcdE@476p,`ؿN8 Ɋa=;VQAG1'zV3tc3ѿ Un3 KTD Tkq:£5i;P57崋nG.brW 33EӞwҮ8q\ʈaPгF%Ab<تYS^ O 5Vڬ (:UeM/ǎ_ ~S3!O@d sv(ɧyL3qAWuMys;V+&6vQ =5KISɈ;u9I4cni)uݑ@@ NU Bg_ 1nEc [3=#ہsOe;I0Ybu]$ z< HrDx W<^`}lޔTuh{'e;RnҝJhi&5.u;j榼)e Q:m@01r`JHxl_rEl77+;{C`yR%}<1yW t-t[&WOĂ9782T?F0t}U8eqc!T2'[vK{8ʵ ףƮܔwn;u.+$[s6F6<t&$"##}3n]tӃ  w ]a[S;)Qa󅳦 +Sƚ%}C]s[rEl{Uc89%&BDT!CQZ icg$J-@;'Nfd/t3Ix7Ujjt8 ]9vqoǓN;Ocwt lc+:B}W]}DQmALHgvV%hknit?vcWJGN[7(Ywv)l|lR&V< O A׎n>6)z7?u]S/s,U*̮IgGGvȑ:*]RK]@(Ó.47崋8c"5w64hִ]@]AEٺ8 I+%`*[oI.?X/Sb*(/ c ΠgPhHܐ.~x'uyxZKt^H`]ElRj ]Qȝ $HNHۚrݏ+׼#9S] XjlQ6d)?7#yFNGW/6q87Cp&v"%Fz4-n%a$|5;&d315^G-Ӝ:_[|Qm˵(~Wm"h~.=hS5?0]9D#RXCl7hَTex};0[/.]=C1 ZzzrԦӿ愔@/4+jFBEkoZH__Pj #bw |kFZ4'zVZݿ /O{VؓCyROaMciZsSN;"X+Ҵxg= EL>?5Sl6{fd.f8{p&RJeL/;ҜOcםJs"̘/M9n;i8zxx'Yů3l5ySRZotviQ DF;5d'^v5;Q`?KS'%2 :@؞aYKcG;fgm4]eb-oE7'osr1vd<^2V)Af׋xɇdu޸9;Qs(%#NCUN_McLܔ?vi+iпm{%J]A[ȷdgos\}16(<.fç4y(SMiV1mKz;&ݣwW04noz|>ݑgP/}Jm1\aP㌐o{K*Y8Pg!P 46~+X=cLHno3@Rtyu&wVu`W=ctͣ#iϘ\vuB'gKV8[b83>q.g3?kV'+tEy:s\cľKxwElw ³܈:lg <'oo<]L;7kjg͚fMMSKȅOIt>Cq֩];|+&̸c:,]I58wU[MnZdФbX [>TDf%.rt09֍*z]ފ;akP"'tcC(Gk])(ӦpM^AWTCUJ<[PQZ!]ap>^`;ɅۋgtB[brv'#$T`?i8i5f#[ cd\ *.i 49wKyB+Ʈܐ.~Ҁ8[iPˠ CwBSnPîK*@c<ԅVcKWsSn0[TFևYFDo2rKԂ o2"POmDa圐e[vUUS^E#x/ ygKX7K*ԉtq[qܔ7ec4M/@w+>f(S y O8!]+LƑY1:1OQZ g*0]TU#գT}Bfji97崋n~?zկ1dTʓRtnڳf# _ˠE)-' +*z~vQ <ߡ[)ףZGâĥ MσGȃHWI?^'_tth濢|hŠ̓ 8G(9K;ڋXQ+]{|lR KyzdmAX Z>&^$x$xy'}gq} RTYZVxm' STB>QTb%tAc9ZLNB.3}xN\kMQo*\ cU/]c ~]~5m'4x#Xoh厮6@ؙ^/WD4bwӐiԢ-TsBJkm{;aSF7ܦ Yܴ- _IwNcnjrtY>6)MO;P@QQ(ʛ%]+QL:HH+jFcUف%R ڦ!] @4%w":}ޱ. V.1uˉi1ޤ=V )^ͧwpp;ˬa}wmyxBϊ4*`.y˶يt}74*-Uj#AaI[fîR[ %rElVU\tHFvDSM>tfX#8HW ɕv)r7lwV?ZL P2_ͯ Gtݟ;|)qu>6)V\]vAT|{1 ܯs'K _z$IbXQUsBk^fV?Tυj dc!%t'{pؠ|?!]vB'9ALQ%kS"Z \wC]"ccYH^{][%-/coخ8o !Gvũ+^McjniWϱbIb/J-M'?֋ݲh*ݦ^->f(#]e4v tmǠlwö.pQN9b]Q dhxW]sSdabl8j'Y#{k6yS64k wӛτ!_9[T4ĩ&|xJ/_Mf*tIp\ǀn16(T:wۮG-Ű_X GՋk]O/!Iπ4jNW:: n%΄@8NΫ"ByDXI dtUhhݚrݏZ)t6ux'Ƴk _r`HT )PlR"251Hn旭kGÊk @׿7Ažk`tE&XJRM ) ^6WO}r-h}<{)F]U ]%;;XF.liܔ7A/n[u%+l(K<-yP<4tcrElwl<>bmb,ȅQrdۡڢYfV ]4р;ݰ Ans"_-NBxq&GzuE3"cSc/hnet?vG*K}*gTJ+r `>AN[/[=mx8ve8flio)/(53%O.yԴcM+`A ~)oޛn;jr*3TeES>W9u8|t)'樱[yN|[CЦ{[ʴ+MJMf%\7I ]%nX`c`%U>}Y6wkMJUnº\-P@n֨_Lw\.xs}nԳtJ.Uen YJ/1,) ;kʭ@xNRm(WY[ZBYC/Bsz/s60.r.\j]N<hе+M9n;ĝL) _jal[=@8{A8@.i^VElwT,O19>gJ#Z! &ptOJ_Vx1.;phS)]vǦW-q:w6'O$KjOIEkܧ)x_XERqk:|||G뚏sj9rElo{8ޭǥs@dY( 34ԑDD=-vQ7_VӃHTva&U[5&2󎏭OzӚrElF/sФlMo[]îrm&?A5⊃ȔtLcOPܔkw" m$N!HKRFb$]RZL[;liC>7崋p8ާ5}1/X ݐ_F{ҥc8.4v|MUtQ0 $9(Kȋ7NHU#_ɯ07M Wh5Qnٖ唎.fQJb b*mq n"{t-Ie\#X̛cs*ovG_l5]W#uCcgBW8'Z_sR7-?-,c.!ڝcʧ'YřHw6iniuݱ0䠶et -3n4hjaAb=pna0䴋@]"qT{E7YhU3J u;slP4斜R7([bōd (WJ yUm%WrO$j)ȭ!]H߻w!a+NN0mf٫jtY[>T>WdFv.fOe38WRc? ܞ^-t*tIal[%.}୆R7ͤR%Y + |^h*G4H8`*ZkNHi )>"qu ݡ,;Y+[fܼKjy8(.%4DsSNejIq"-_հauq9\ ͠[@ñ$57Mkk88@@!r{%EȎ Bc װ.%*o)Uex(nCtyRڛMM .F;pWL$_0]X$qѥPtAal+*$  g "+rwPrE?v'KvX` n+*M~bN+An3up>pW`nd} H:*"-*T2.8(ߪ#5qPQ&!P6E}]v*WLaAkU*lEg*uYgs8n_T6 lv ^W1xasʚSrHa|2wk)]R5{ޣAkޖ82T?F8!k4%;"M N|l|iXH5v4g\^ c [hX.k[Qn3?jyX.+QS[koM]=6)< 9n[XtgEȋ@LSr?<=;vP4"Gܔ.f#E}[ 2=uȗtG-zLi:caToz7c]؝UOg4+t?Ȫ埼=b>R(. &4vhnʷǝ`>yAc(1X-]dcc][1VƢW-.]bqi쀹ܔW-])o}[O2uJ!_j{AӘ[rZJl-Kymkv@^tQ銊fq8I8Z9n;G)/Nѱ.l :~ǔ&_ rDıF4P@ٻ亂N^#'q:vcNkOr Gݫ oħvƮNܔ/%Zcwaڌ,p9ckq U I,*"OTP.dsSN61p]1.ث)\k&MwК,NuUHkdMywl@aa(,p[ժ>kUX>H,+fKSyaƮ]9ݏZm`AjZ*|/660Klӓ.m`AEtڼL+%%Qn #&_-R&c*HCo ]QeM)-EZ$lw/j}ᩤ&o#[M:.䏂7d%]oK8۶ma}lRJ!Bin]Y-:EkgW [DQM0 ZEbM ֈ) DlkW(C|>ooC ; 5oNh1 ˅]QbP .R4vܔoDM7ۭajlw: W  #ϝ&~cVܘܛĐ mkH qM%CԔ!=JpC-3z ݩH q]Krv[C OLsz*ߤfӮK;>=t1yת_En=,La6 z$*İ2 e-ybr' 1w!6y;C/LW%%g/ u^&2 ]c79Rf8A:d5r.#mx^͝.c/۱H0ؑ)Z@TYV׺. U&1qpj&<纬Im-.M{rL7WhUWv\Uxk4rmv&]ߋ(vNvmfR{@Z$hvQ7 p Ϡ :Vn;^{aW)AvZii쭹)_ $HMc[ũ^16"nM8eΊab+1]RZcz[byN83FVuh oʻZŔԊ H#rڊz ;N2"@Gc)qZ+.JVMnPK* [ZHӏ-rElwxZ:}{Z bb%$S-Q(銪^)K_5vc|)t]dtf֫śk|#ۓW$oexGGcۣɫ7?v\0/s9HzX"le{T7|Eu$ymoblPz)] !E x]2(/ʂ^fk]R'6SqKP\}b3ܔR~rpXF"ݪrYEUk$ew~33vu (tcJ` l$ݮTV%.5vk7n^=1L^_xT=Aa_#tEE0q]sؤ]ٴ l HHH@bn)慴H@5Mcckr3ֱܑ.~҅Kh8Hl(Hlv%Z.%ۮ4kHע>>6)|z,]xIkY/*/VRheqEoLQYty,qtEGSEhO/֧Eﰔ]&wEG3Xp#ĊspG2$]R#C(֟d{qKsS^ ,1v,W:9 ^R,b{I:>ɧ;ot#iHҵ>@榼 tan NCɋrNβae%74n9V qkXqݲyWjN`E_wQUij Rk&:"\7a=zY4s~7=TU&^,@>fN]vn.Wا:'9n蝰|Dc~9ym/qmWo\ijlčSΪj+f}LdљzTKJ jFK"`3؁7)]vԞ#wx'" K]8%0!)^ cg]0*tȌ'Rf V KLm+ozE1 vtM25RcOIܔOAfcwdʭ6#T _8B,{%[C>rAE`[x 禜vQ7JkkF ۸ek%z8|J\>#|JLqcI{#Z ]Nl)rElʩU:"]VlrIT~Y$]4vu;M9n;Ζ]=^SkMtusVG8%b[)Qw)W'vQ7 f>۶^6Jx-.f%،8% 7ƞܔ.fW5fѺHU<,Dՙl:,diK*7QJFsSN]Y(% N%:6}Ʈ~P޾ˡnM>{WP޼VoꞋB.ALbv V/fZe5GbujR+=rrA.kh)n[KZVol.z< '7ՐopI){=inʻRw;BXيݏ𾓻&߂M5X{|[3= vt݁W>_:ÈsU/;wusyU/fН>_l"4va47 a>i:51 LIlO+YwQBu,R'J1 rw.핚r?H{8ZDp¢b.q u)=FsC.:a /lq:?Kz==M˫vې^&2UМƐ55eTӍP]SB[:@b:t7w$I ݞ=<vQ7ۭcKA30q*kD^KA-5`x)ؤif?:v*q,Š E~E'W nű j|lRPB>ح#صL%nEfU@tI8JǮ~ܐ.~2k8)݁ÃI4dZQrŠ^sS> 4lw+]QpT1 v r]j_Q&#MAcwЎDYqϼW16({ 9n;_GԊqg+FvU`+F[=nbD_ɱJԎV`NALsObI7۝\bacE@E p򣦘i>=;t)j ui] 95[tZwCVW\+*\7Q9)_JֻOrgnB.0 D.z0a\%^A!H^.W)šrݏݑP'`: %7T(5Dݩ n3t0aȻӤ'lwڤ*H,hu/h3 Д`_D芊UOTBJU;V=M@]tiL#l&4ۛ }`tI7›ѥiZc#̘^^)ouTݼ~ye"Hǫ(Nǫ(]XEy*kרz׫(?^Ewȿ^E}=WQ>WQ}lMȌR0q6DZG!NȻ|jy8n:{x\vAcwx/檘k-+jy8(ړ.4,1M9!4\:(} a,$TUFcM'p 8vfXz'ileDvhrװt-dp3{ &X̮MS99'6oՈЭvƎ.  /q'{'TQ!.鎠.(O_07ŒOdpni)uL`z~ ߬ݎ\=e\SfCutFɍTNȧ<Φ펌7ꨎZnԈj-2yS%śTw'cSx\vAcw`u@*n}*WPP/y-BWTCtqcQߣ)]s 8YKG~ёp(&]?<4Alɚ8N U]lTb6D|(t+]:IUfȋAcwBm'\pZA*΄8\>Y{{)>N%tSH䥘KU,<`TC~UwJP$ zB5MX펫ŚÍ7k=*\={yntIm?[Kt-57 l|pj=f&gSm_jТ^>G{:QM7g 6u,pb*JNYB>tIu_ie?ƮT䴫 tmױemт(֚Di3Z:sK_ֱCNK?46ޗH?JwԘƽߝtrm/! ۍ,knʇⱦ־?>:4 \qu%ٮr*oܵ~̿  vE(+?krGO5;@U1 'CTMNW$ )Hau`L31DEο.,b #\"®)p#p5Uuu59 K* t*%x8M=wn;d*ݗYP*Q+Vh+{8@j.>g#M9n; 1o]Àt$pwBi._(z_o})nc8J.uƏ$9J6Ӡ(]QO,ºQh&Q)_~Y')|RGS$]4,10 %@A,FFO*?fgOno?wNIn~,+:͇#2Z~9@X~I $'jSOP'&8YDVzy?~%wt5=mOm~X_xOtIM?!gMUo30՘6Y8^i=vƽEα3E(_o庤b8f$]vLڔwzXGƌX?wm;R]V]bdդ&{HH=QkSNN{~F7Zb:ı(On-:ͬ*-;t?~Gl|bwZ9ˆ9"+ǽ!EQRWqP!"]ڑeO])/fgݧOD vKQ"N]S,[פk(ïH1IjtL>w])&,DYN::vF%udtO4?dluz&W͂td.\ qp)*-"!ݥ3TI!o\\rEwNJe»:t"!\m~Ytn;vzL^ 4ʏߑ{eaOocMYGt2* xg%AOc֦~Q7$bܘH@;% QOpֽO9ȶ&%T#BSbYd[PE>#z;EFKZv  AÿA[.[sс @!4#J[)cZrݏq]v3._`YU#Lq{,NkK[kS(TƋϢ)r[so1>rkY-ӛIBwן2f9uLf#/XwX8Ϥ;Uwq"Ϻ3BM6Uug{atD 7u#h}IħmҶd;Fkmʧ0K;B%k'@m6Gp{Nt7*Ell(v"jt߁LS+WA"O0B5y(w mU"!cZrݏ߱~7ʫBwU h]-b}S2;DdK ۠?5K@o$2/O~姫S/WsG Ĥ̫RZK쑅h]XSY^~30Sc\BDQ)wuB~`JP=gѽZVbv8֦| 0wtZv7q.NW3zzK\=Iԉjӎ]>t,/~Rǎc;#% >d%]R=GKd;޵6Kw{MV4hZhژ3hoG9q˩K*fЈc8ͮ-)ݫ6TwUS"aY˳WQy(8!߈XST8F oNL>mR$e'ʇhM7 'Ϯ6DrPDT8/r/h? ]Qf[>8snl M9ȋi\ tLV.Q7M DXn[y1lsQlqBGIc&n[{cNݣU!y1\`m{Oaw LI B&-sw- Hq3}Ù$]R+t!@ZY~)/DlۚQNL_X1=)c/NOYَ֦~Q7(& m v-?H˷ f<=BnӮ94g4g$B&zw8h$&䣵hj5m:_&J._Q|lNs,*{M/5c.|Y.*ʧ)n~,j?q!V|4#8tCG>]3uIMֈ3H]BM#n;!ܫ8/|IȞ'[B)=3s ]v 7{`vHAnp5^#/͒PTAnK{vŴ6%4^q0O|!M{U7y2QaBWT=9El7l=זxO[׸!rrf= 4ɪvɇ2] uk[Ś&줛N|SgX\ne_,e+yzu/tEu)~. d[kSV+ $95lz]lգ|c;uIM%3,k'] tM9n༜F%8 ۘ+$688OIg-َ֦|M%֞ 2cP-j96I_'j{:oF%ISƬ>V5hxseU/~3\ydq:j/0g($&o!#Pq0\Ů.щ}5@&|֛PdO,W_{tVCGz]>jWm'4wMM nř%?!N:2Yutm{.q83xwgVM(K-?~aۦ ];Ǧ>6}RZm 0tm5I7ȧjzL]顋0_9MT̄gj6IGfx'1FkSN7bVADא\t±D5$ IkH!EyZ+Ь#$t5Rs຤JtSm1o=ykKwy `+6\ [G[B-=Gi1ߣ^?VAG&zWm 7ȎqiP>pPw\YȏBv]NO&:U+5Iccͱ:?4@8er#1Uc!x/YhRV ,&zW ^W8|dTkZXkв鶒{PGɰ6/"*(BBJ}Do\c`6EFțp\ܶ/rCbQµ aF~"7+BJq}/ew.o߫E!6B$\钊BJqP I݊<0m(ڒ/f?R6rpEPzA5hv5.8tq8jmuq0ya:X fh-@q$x 1mHݼXkSN֓(DﰢDű P5قKDJO^4;4׃Cc}-$ngjرfbYq0mK"+*BY,*^Fcn6Keb|QNv '̘5&_~..4'ȡ4Ǵ6M!k~~˯'ȩ46}ъowP fຠ`[% agp]kKNO ;(B"bP(+*_ 2+~!m+ʃx' %|:B 'SKx6 #ѰsШ3q0mWBf@)xm#]R+ʕșƐ.d;6؏qW8a[=Jl+M9Ii= )09xflP7ʃ{hOW5лpOK)O5]!ս:4&5\rEw4MY1܊]6e7tuBWT1⠧]iMZg?~8q7àdx\C(gQ#lV$&zxt2WJ߂ǨnQ^fJmBN,u `i ŵ%~GY)kLGRdzlڑ]ZҪ˾*j06or&tf :Qs|dj4nt%[dFkSN֮H/8,&]t*72y2HIj cNKU/1,G,4V64zG꒞j UQQ[]=!_M(;Vbs^348̪qp+?5]Z4az#vN)Dd;N)ZrEw,<1rL}# tnUsjn[J 혽)_!-72^#J!F|T@WT ,rq5RJ\rE췞cMC'4SZ 9PKrmg=.C}x+N\[+n[e(8UE Q Niz6$]Riq?ϢlOimʇO??~3y@{qm0zƴCώi7G__KjFaRTTkSN֞x6U# Ͱz.aw%U5OVU4 :^v>~am)t?~#*׃_Xe`{\ jNL} 1Cz(]@kBJo}d׷ ّq/0xQ\XZ 1C#>*pTBJ7imu~`Ql/s]I |ѳ +1(o tEM ]vimt?~ǣyQ&Ўkȷ`A\nۣ)!]sۤ',7 ~X<;8@ ε8AV;QEaC]R |vrmuߑKiؘۨق=Q'^̈́inݮy9- N5^T/s][ŋRY3{צwQ>ܠD_ i@ gs G>/;m $,% %фrm{t9 bGɧKS9m}3Bwigq)/|~Q7 aLndZTM}m5cC߼aT/#9Nl؏5M5yf(IHz(IXCO_֯gE\I"X/NѠLIwۤtl-MO5(ɶm}qۮ^ ~E#I!_'_V@ᄐE+&6ˏߑUԘ^] GI1wT+tոqܶ>:S`N|α齅o=-#A_eay9Pޓ. _M`۩Y~Q7g=>~xcwn_N]RgXJz6)89 u.%l88|ኤ.$ ,cَA@Z~+}t=̫aS 3bʛڰL)+^ӗa#1GkC.;)mI-8ln9UgU $Yۓn[q\bv?'jv",n;B E@J3p~PZ( lͫ'tKMt+ڥiKkSN[RI=Ϊ>8pa3 G%UYn[Q㠹|'۱ڔ/~4`T4l=e=ӯ!o*#'ͩzX{ڐ/R<ɶ Yl $ 1bu,o/Tu q0UڶAX[rE}`<%-ɱ.ޱêi_(&GFA t$=jevIpt n=D)FL]N?1 l/ڔ/f#c bljΩsy6ԮK*YF5Wll_l~,wX+bRz ჩ/NE.|kuIE8)ݢF{gb}8~F\|!GTKO'X :_u?EݛsfNDN>Oґr}RwyQOQ([5s(Y/sXwu\0J\^FU>]35TSbZ{*~N>/G*5|屾]ToPr6mX 9GP7,e[0+v~a#ʢoy^tJ´Cb˽jkZqp7=yЕ(EX ;Q0(E/;,U^MJCNO_{ 2XɎ}OayPE\5F։UۚnެS?kݏzW^oԿ 6J;]OCMYRiv8;zXP_SwDLbqDi_W HWeTENAѓ`mR~ 9n;aX 4 u m0G tD{"V.[d9s0*zL؁I#Oa;xIy4mR7GWvУJen6:rMEtI5(KGWhmʻ6w)@uT48]*cWipC2u Z-IwhpVdSȰ$cmU㷮1ԫArB3Pe1pY"k'NGG:u ei;jmuq\xj8W}y}[^{cEi7Zȇܗ7]|;JWVMJ1B^n;/8v}F`"+)Fߐ]M#砧iuۤfXvm5<1nwjP"0NGn;._~_?g ' 3+5bKcl ֦| rcYR}dž@xGPe@7Z$P {p'M9n;6 jgTk ĕAҩHmѶB 4fڔ/fV410`Tz7 vENG4CٿIЪ}t9t^ٟ'$cHR^/5F xVC]"l!V.Q]Ot22 _Kz%]I )^5-||*FB3wLoB3?ܓT̷gtmRn!odds'۪dGQcq8hAUUz8T_LՠҨsN]:CZZ*.qpܩ5; 8 EuJiU&U{p7RmRi-9x (*DxoO<+jxU4%H#ih;Z`rEwj5tXytF뒍4EvyO7o;~ɓtzkW&9A.O-l'(ng#Q+. W\Ez* mGu-a;Ccm/0M7*alyHϚ^B>ToCqz_/<0t-Ii7[ȋi?~9FZھuGv[( UUA-ً3p5f'Ĭ)_M0췞c7g5shM1H]ׁ u ]UdvڒS~GQ(*95#Y7&~U]PʰudPyk۽ +{h>ѭoWx7ۋXV%=j%Ϩ׬cVAG&tzW=0P,"󗯩D19ޟU1>J.\u lqJ(]TUGP6ֆ\~Aw+Ję,&;% L^x;~YȊt1ڔ/fUzЄqwUvQfh!NԙuB@e)²Y(>@ayҎMnEqэ| &j[⳺(nmmʷƏ.jm!b5\Sa^n!.%U[ Ic)m§ L/45 3\ l_ c*fr܏&;oallu+)79ZrEwJF xV$#n8  -Y( )=I6)OFO-M7S,Vq8sp8eV*X1.`t@Ze~C2\b "Z\fjiK d"]d"]6(݋o(+fC{r@*KP©5ٕ|hj"֧/JW )@!=kSN-{ɝ`ƹڂY h V(_w%ub F"6('^69E%ﭪLa=](p,Xn[\t7N E $zP48;f{֮R^'W.LKHi '){fj޶uQxJxcVpg("yiߠ'ıpv{vֆ\~AwLj!pPqR8KegJCT2B3t4.W%$l&1h+JR_ryC~0HݣoV-]`;'ˇL7XO8:Ul%qwlʛƦеm5Vt?~u||űq|qr9xg1qPpx)v֦~AwmAJq]Q ȖŇDQcNK7tvW"R,%9`WQ^MѷBZ2 ,[T*p9ຐ֧/Q[.vдvRO[wA6q7sjQ^k|x{AWl+t,^W ֦|8:M(<񇂒E{*t)Z|gV4Gb®ڟj Q 7dXxXx~ 5&QD՗E; >6tNO-Ɠ.)oDΗ a&O6G_ƖI ;"kհZR*P0nAiWBôKzΠ@P{9SAZy,+8#o7 Ȑ32ճտ-thڔS~kakJn%N/VZ5w/PA@#R7ٮnǵ)_~#rQ~SEZ1o9o;}IMϛ>ؤi)?~h,&/vW;vYt節Z/A. p,uk%nNG~n[1cwM˜-K QD)ujȽtIJ4J'[[rp/ɶB8 `F]?=Fgt/.2)~6m!JwyzԶT^x6(  uIp/u9їD_MyɎӀW-At6MG*]-H&HRTt ๛jɫn;p=Vݓ]!2ݩB|`h%fIq}yb~3oy8`(yCCwL\|A(vO)krhkSo=SQ8)ؼ[S7|QGԙI0Cq I RzO/V?~+_9ıt-,¶,HIA!uIH?q8F]ڔM7w[j͒r^oկi2#邂m+".AiK)u߱Ofl}2*2{Y',x~'3jr۞y3ǣ_}Y ;eXܣX=08[sMJ&*7waxw('δS`BrWw7rMp?PwQO*Mybh6$t`1U9So .wUty젦` t(̣ɷh4G\wq&@TjaF∦S֚S-"[Ѥ4ћ6ha7vYCky"75TM&_znVqS%^ڕ)#n;EY8Wㄭ  M&OWT:N z ʓ/~ Lj4`#='Zֈ2o 8LEl_ ]`\֦|jfL7,,dqr@(<7$9GRT'88?xqAǷCm!w#~G椫q㪖"2(EoyU]Q[9=0|[rEݏ 0(^܉Uo 7v|hM r NC3@Q} )PRYg̽'Ոao9Fn2mט-ӯlNi`ح04/V}-*=ka:fH8%qqKnAKao_ ` Px9Wxx#HT0pSH\kSNN7WfyO&Ѡů(W^VE{ڞ\ڔ/~N9>fSwb1(-5ԊZ;l%[߻ wٜ#lNʡ$ FĜSq0iŸ#QIϪd*z5!oLkRx\St$McGP =>I)9 WIy"`\~AwYTU$ŠaL!4s|ydj{8KCb9=lԓn;>7]arz= +D1GiOLP@Nϵ)io6N^ic5[H3QBxz$O7IoLN\SJ:S+AOU&g] uI Nu%E]l7[ڔOȘn;2ߓ; A<0ZJd[.uפKjxVRn!T__kSՀ~_ "?wi*}(O"wDcV @f[G颜r{ӥbZro4wdTw}KT*?\#f0g6 +Nէڼ#bOMkT4)TmeXGeNS,5M'M;ɆSyQM'dmXf+/tFvY,54V(Yrk5H"h̵!_,jʺg63TaDPB3T3tRͱkv 5/drݏߩiݢiC*{oXBRגW\)5u15R|JMBlk2)0|][ւʷ j9P8HyK=WkSN4\qPkx5ߢy>xRx+6Onn|4ߪ1?s՘Z;*9oDU%|4e "Ғ.g(q:&RYHf6SK; 9q:ˠbsĨ).ר芊8ȓKyrN?M\=?~G5n f% q_S>p{!dtU}֖|i8N;Tc}ߕMG:K[:ߍªٍ ].=1fE+];"U#W l.ծ;9K [|Nd{מ:n;wQv7S+#RԻ(bU]7F4h;ҵn:0 sқ^%5='#Mq]gv֦~Q7핈 #`mϴEmo,N{ EuIŌmqkvڔOAn;ŔKSoϘø1,K)A8D} ]KS館" : EVq"gu'UqL8rJQNَL֞:{K╨"AL&zUB2Kcu*jN]iF ]L5 M9n[߅3: ؁0`hAفВ.;9;W;^tS1%fbJ =m qE)JVțԎj$rHOfww_tw¥Nz5_cM[(ғCDv:$ѫ]r0Cg{% ޥ6BWZ\q U+)_~E+[5E].َEV]骺x LsR7S]h%lFH:=ж݌"SCwcbbh+D7"]ZvFB.|ٻʙ`%fSb!WV 81@+lwlֆK`,]le{8ƒvCwT/ Yvw9OYQ[HN)T޴6 #r@vS 3dt|+t&*kd6SoN~Tl`|,9;ӥ{luޅƸByHޗ KM"3"B_{'Ut UtvףmEuKqirP0]6)C/f#ί1wá8QOw՜j`ꔮs6)Ɖ`¢:O,β_z`<( rlKjzo8C=QWL˞vݏqSPS1;ήklm62֡@]fh]!_~Gg˃ڕUSA)k"'%գڕ̟.-ݢڕkS>Jٙl~i@(XqM0!Jw@i.h&:^[(YڎdQ/~~.sQ}33 ȡebbgCWT+sO?vV|̗99X_.X(h. y v'zPމ 2v!oZrݏߊ uJUmZ^Btlѻt O]Ui+lWfS(f!k6lRmī!MwNWN\<~;5ʉkmu߁Ld,mP3D!rաZ)+jy΢;3*]4֦|ot߱翸gi wT'b g%5<)NLHG96xWF Og uՠ΃ц5$<odwG芚QqBJ 1k=c u_C4'RY(daqJE^z]T t`9XYXkO%fSt ʱ͉)KyTJ;P/AVM])AT Q-mC)_-]Uh&g>tI@PȨGհ Jз6#6.q!O;c钣1y EX}DcT8M.ud;F5km|g2`_%zfWikҺPfM>pPNr5J`mŵ%_~Gk&S5](o3N;VkhCyQt6>LlÑabCLdH~C+~ 9\ ֧YlrC)_ َ:_\lzU߭>YqVUl+jz͕8%.d{͕&nQ}r;?~G[.F.u!t# ]S']R3ΐ3pmMv% R2y?WS q%L]`ݯw[]]}]kSuEw9N{hďxT2~PM6V{UǪ 9"}4xmPڏr%w$a|@մLU,Z 薨]}p4 UV1p/y= R>TaZl+>G)1Q4Z"ZQyijZE$']R1HZ|9sl-槡w.8qD삃b D Ίh!vqCW̑]$d{CkC.;SXzq~- }eFnk!}WPOT4|.!d AkSN1͋jG״`2*PeU߹}N0e$'*_4g+f#_:-\'o"c7q˛O4J=D]n'Vjȋn;pGg+zXsG90w? I4zElνֆ\~A+"ObXQQ3QMq%'!Y!_TM I"QZ8]pߒuJ}z-\ ] ڐ֦|z-\;Wa>ф:dL{y7\Mu=1\mP{\~Od1X,_o~h j" TaW'1mB҉e|'~ڔ/f]NA~~z/8 i q#ҕ~Q?FJ钚^ .6 Űˣ)/6w{EwsnιhڑUn5%]Dl5jXɶX%Aq0oU-hmR0Vn[{KTbΥc?nQzc:"ζ:u_~Ocmu9:,-eS;{YsDsl|cun*n)NAvZ=X]q~G5g7軈s55W%0iu8GMJ*FMM7jwjQ5tTk}Dzb^֡+jj#S+GloUZ:f]Уd^]aKOi@^%=0 /=ӗժքt e_$j~b pŐvԦ@IK|.]GvnE㥞\B]%AIE#G(\(h#|i钪~q*=/f]i&LVH8&FM[%a3>B//۩ɗkS>oW0-8,Ԛ*Bdvc+BtZIblw߂imʇZM7$mR$߿-_aY`9*3coϠ|s#]ފ-`oMrs|aKU8PJ8Cw#Tvq沈){9='V:2ٮUIS 2^\Z.EiUܽ 3vPK!PDOߋZrUѓmlrW[ME ^ɧ^ #>>&ÿ֦Ytߑ>]XNG4MꊤORhc*tIE8qLRkS@n} VJU,}t4C+(Jra`/B+.>E/ , 39*Z'z-±+$1iIT/qp.v ڔ{fMDi4PֻWe:mG 7>Mpۥkw&]Bi! n;J`xQpE ,SabG %0#n+n0\q[@\@kS8wݿX!;:cAC®߬~|v~bm/=eL7{ˍ=Cp48O&p݋&uIU/N)l;M{jY">q`hN!vE`7v54ˎ k7ym^ z~]cG );ȧhǀ{ TAçt9fKо/~e = W.EuܒnWewԬ跐퀃ڐ/~w%^T-Qzְn/Ne}^NC %@ MyU?O+&Jr3xCs ǭ2@ڐ0=M_B%ehMc P8#HO[I'=pzG߅blVUjMH<~z|u4i%;QSBYuCJK*V#]+ yU7Π<׮ջCM}YPg`rEw$T< ɐT_ۨ#ْ&jA]pNFOkS~ӎN8YĎ"Her:5KSq&n[! ZTocB^s!&Uc(_~slzǿX jl+J15.==UԵ7& O}p7::_v.Q m[TKH ]Tup.=4n$w$?g'~QEM=:Ƽw܇mRPo._0K E൴ڲ=kFX6ZIwktIEkS/n;a V?} (=xÚtBgi:!'ٞ1pT~Q71J\c# = f"(V!Nb[Zmz)uy]f SŰ6g#t;>Km\ÉaҳfYmҨ5!mBzh_3u1|DXkZW[׆M>ub[sۺbr-Ѻ+fNౝڊ^ƶ"=(<*&V1,o+-&+amE'f()j,T(WbT2EJ$GtI9SQ9,N9.M9n;ؤ+ިk-(Gx )[oo=̢uyWUea+S_&K2wXYp ]lhMԃhAZ]&Ԩa+hݡ/1=Kԣ"C_I7ﲏ˘w)68# ?xLz"bشSSeruoLk1)^mK^eSh;U`SuD&]`J8q_@e_s!fxUQrtp &$lo)BBTt߁g{({%r('F>uE  t1Jkmu1bcWeKN솉:(ۢHފuT w tmIȂv~6]jҁ8xn \hgrJz%-T-vvIZriT"zG͙w`uEʛ oi2w~ۥV06)]-ۈQ~ty.{@XG]A#sq.9cy<(_~_^^LU0 |x_+~f1ݭR//&'n;KX~n; KJ||(}8r@K[%% K jtٮڔw?~Ƕ1;P|B4Oz޽ꐉuNҝzf|mxZv~G:p!E88W~@aKG{mv_^x6)|zq_~GУ)`H_*➭#Gҽ:P(y]} ֦| gtqRcOךϘ|j[&.AŒkv/ZjUKoe(P7T o§VEᾀw!ur]qEe+ sv>x&~9FmEY]&vznnPN4irW-ޥ}rۤdSfmnpx`τE5w_ }CԧF 52X[ry ݏߺ_Z6 Y^\Q@?DY1ߜrJm=pIWEMJ76ش+ϧ;ؑ,4'qr@h;1lM~|i..͌J}Bd;imʛZn;;}hyMKSw|.s6qF8#k5z܉k+CS2UMJ=CNO1&݈ k8wgyZZԿl4HQz[b|bm/f}@'3^pxʾ EEfzWBBWɸYS3h6kt?~GFL8K.G"Έ.gc emDt1.D3M9n;i*Wt߅8)J߅݃2nWwanEёl\{;hyYsGHϜ5(]c(v UPJWu%*"xJȷQ Qfc 2~F l ]a;FVfrN%] ~XQW"^jW":SO['/f}9Tb9;-qsmʛ0ܨɶڽwǢD7ޅ:M(]trkBwݭ8DX^IC&JLn[h:MF|bomMyZ Afi鬖tcLj&ElOڔ751췮I>մ ===c&ۧN̖|甠jL5]^B`j)mjʵ֤c1+E)s)~=Tc R(]exԮA OQc5l'*SZ|fR GEjTkպI~yCɷśK*5CT!kvKOuuHayJ 9־j\WSK ;*;b33*D;l?;8\Q!J|OW=WK;.8snUiݢ Tty;9N;rVQzQO5BWplt? rï*l ̬_aaz]˂R3 IԈ9]3ehh濓ֆ\~AwaѹRYS܏Y"h?bcJJqj*fq}nUlg\Awwx s_,.N@Q1A ICX>y4.9m,Z y^f7wp;*J?M~KP':@:ϰ ڒ/f nsR 7KWɇ4O' u#ZrEw_Y񿰗p/X'gWE o$:qP"]vhmʇP m@)]%3CxX}T@%b9q-ysD6o=*:-=/sR6\((͐RTdA{tEItY)47K.ʋBbVNlu*2[ӐԪGQ`İ lG%5!oLkj9vae Lһ3& j{:#86)3/f#$V2+q8նbt(E5<(,NO/lr=m#M_Y><0^|M&!ۦìŝ"My;[lYUvG!GtIoQ \[@V6(]~I7i=Dn?{CJțk *1qpHאl5!_N1HoC?,l q86v|ۮ3:CXƲ6Gdx8`F/DU`"}frn^`Fܩ+*%6\x vmV("d&Ў NQnQJ:p&ݥ``Oʾ|Lc֦{QV;@V58λȀʀ14:+/Bħ6)|{bɧߦ5GH>w g0Q`=U#9,F>1^udDj6PX\X0'Fc;l}`Ʀ@!_m+Ft)_~2+㨌w_S KomJq[=z.d@ JZ|%w]9V)}qP =pdCR q'U#n H}$I]CUԲ]dh-u~g5LQ-m\qL.i']F84 &ٮ^)_ Q\92Wtonq GCZu9Ӑ-Գtq\>ЌHq`%hvd^{u70Rn]c׮P=I7U3Au4l(gЭޗq.Zrݏ]=`d <$_@p܍(o:$nSVO}];mRtɣt?~Gh!P8L.ͱzLIr;UHWTP8 e(_ٮQun%\ u A>8Bfa9Ed!uaO쪹o6.KJK^S8L ˳ dwwES jodނX^v7\aXL /R{,}RBom{DI\/OtH)uр1e P]hµDJnJ]PS6)XWxJ7,v/1(# ZEmOu>zz$>86zo [aŚe__jc%YH#|jPr*9koK*98*O sڒ/f>{bpnAFi*GR,Dn ]RES0 r軨 eAMJES;f3?> ƻ!'Rse}sa]k.f [Pp'ZAi~[*gJPV0+lG åtz׈]6*u  W7=tEE8 - -Th/fUz2ILDqn94ݒ:FtykA9Gm%dyI֦~Q7Gy /s0E)V$S`Q{N%84צ~Q7`;DDؿ9㷽`YIt1^D<_SOsmuB,^5h3gHqs 9C*_ԀǤ*/C(漄gv Gw|zNIP5=fMFZM}7^CEMc')>Ia ;Z0PTxe`tLϹ<[OcOOܔOcw3i*4L|k -(= Nx߰NKJ^)\7><~W|L}>"lvBB䀗.;rbp|3-9n[|s9W-&/x-y7~c*uEES_qP-]hh꫹!]~ˈa5,9]p&*y4]Rq*]`jrElw 0, 6#L"MYLOڴN~ ΪhTѢ!Lckd3Ibg"A:^4qu c q=OLNK+^#q;!+/8dy ;%M+ sY^0qɒ.\;`8BcwJo#|ZщmPDVQK.9G8ZcKt yԭMB qxuH (L~lu -tqg(DMĩ Ge"y/])ҷiMsMJW|yNn/N=) a=L)v=)勒E.r ٠'>7sKNK*o<IJ|+D|zA VGr铜J~N՞<]]x-.;_Ԫ$!#JNi碌t-kq-rgoQ$t/^\!*˳rLy ]vI Egj ĩU짰(jfԪTsĕ( ȓ҄ ;׈eu³z PRq *a5݄Uqܐ.~`7ֱ<؍1- x/,x v1+ʑaI&]K¨$^.y˶( oDY "9_Tȗ''~(sdCZkLGYZ@gn=V Y-0 >|T+@~I:\̰ Vn=cG<޲HW #_~P<.R%ꞣt`-䴔ny7JҊ3C3]5C!2\BWTq@Zp :J>6)%kɽUvG;;A Tf J\aQҦVV %cI>6)|=$/2lwm}:l tҕP~ۂg']P[t{ڪ"MX&!"+O8͢ugU=yZgE|t+vAD*BtEPNcG My%{?vGRoxR>,íaA+r'$?=pWtܔ.fpY%S#(SsT缨|Tؔ[ AV b7]>6)/r߱$0^q0:X)=E}Cޕ7`:.8S7QKc _MrJvw!Xd&7 nΡ@cKƧtһ'n;{sm\lc"ld+%P@́tcm;{z; މhbtsT`XBWT@CRzƌCHxZ)(??v3pnݟCCsAzcA~3/֞eL`yM_[|8@g.Y5 0B=0fr W?q~Y&ޗLk[#` &-t!J=C=؝"ytEn3]^4 qzѶ&#y5뮠Dz thnet?v3ƽ׫תI{ܻ0@&%ryu-ITӼ).G#rElwrrh'>~Ekɺ}DߛƮ/O'L\B(r_&Q+]~76%0ˑ.K9vIܒw]Z<{J8a-_G4V)cjRCWT(c;d:LN;  FFvz(|wUU+^A((8g|ͭ[!&jPonsJnъ~m3yZt] 4!=dh$N Ocw/|WV}(ÎP|Wv~?/߷TR$RPcܒ.fçnX:'#0ƹݭKuNu7^ϖO_&#@;m]NKNh̭2 :lx큇VO>ᴠFȡ&Y7w\F;j1ӁC5=]bJKH{x87崋XԾ~:Cc5Bf]Yq nx+9L><7fc˂[ 9zS=T =kۢvBEb׉g찋ޓH}CNm21\5y MPrbPPw pE; Ztؠt;䴋qEuݲ٫}7[wѩf^ j9Y#z!(8U8hp&X؃2ajH~G@G~򛘜vQ7~9Kj]hUՑ.VFW ˳$]1$;[g5VpVOF~$lw tALsS'dVtb,pٕrQ7!cYH*qlP_ 9-=jX婢 -O^ b_ {r {qF;.~ T8 vCo!V&aqOxЍ*.RARA9auzƮ*?Tw{~RǦǥgew&SztD3RvIcV4to#v۵T(A%qHz$M(]C#hnʧ0L7ۭg 9 d)= gYV8'+tj< ^sBw ~(y93?}D &P/-默[;ᷤbů<)o]n;ZoXQm7Q;B7ӮSL7 wM1}eo.t|t|]&]|lFCJc榜vQ7ۭ3&}"ڣݮj;Mb'j VplҵU&3Uat?v^νRsFۯZUo"[yuڰuؤd*\7۝PP)f!NE9`uy(jQƐSü뵤UMJZ!g?vG"ky;Ίܽ(5,8%̤;Y0ۨu3`U9ɋ"??<Ѷ?3ASS9+c9n *6Sl XѰIsSބ,jenU(ZUQx=wCۂ>m%7KW6vQ7۝|J8>%)h"Q)8Z+j7B;?4wScM։S;7]4-hjܫv4iOAOG ]5v45ܐ.~vvP8ptLz[Qʼ>WUG ~֯ȎƎ3BuxwlKZIk,gHðhA|u $2NᒭJB݂ ch4ʹ%]vٺiMlhGWCҽ:jMnEwG3tE-_řzMc@=*5VPzݑKl/ctamUqvrtEqGt_V=YON}jP 5;ǂ<-@Msg|fN#? 8SKDmRڛWdͦXg8?Gd*I 0+,e\;,q<8REoG-6}&~KMl%еMʳzȧ'n O.\WQAˤ6\X[ʅp]ϗ4nPcnI Q!_}ȹ"t9΍AzGuL'_ ~dSvIEuqg7(o{.[;euZ'2e밳IۡCќ}ldx_6¸BAN~s 0 .!u 6^Vsskl=,a@MZț\(_uIEbqeZCLisSN`XZ+kVP2JZm!+Zl7i{榜vQ7ۭ@ι m'\Vr+Or]J|sna<cWrnatP @Kh޹%as;)G5*Ms"S16(.k!Pv4`Qj9tK}I4LIхzlIra;G}sRJmSmUD< /։nWMtapa,ýȜ&OٺIO/۪'+Uټ"gu[{qkSl V[{{:8憼yE~vyuzȢ\,+kVZڴ֒5Hx 1,7FzQ41qi ;ģPQ:Ҟu$7z.QTH]v .zm"@!(!ZE,h+Vb.]s1ؤV)J-/F&]R]Lu0 { &lw$TWn8MLGH#Ga!_%+H>/5\586(%Tw1y/anU$x) JgSHkPW q&JyF{J)/ n;0xX_ j5)w3w6qݎ@8'&5nR~;d|H0MTpWXLK ݎ2Iqm5K ,ilr4<5@9Ttڧ:iJ3.tA{ wC^}[#q^N ʅͳi(s3]xul}l{6 msgIM*il.,N:UIFܓx]փ^8|lѭ\rk[nb*әZ03-Sit pW֚Y5a ]Q] )]#5Qx,܋Ԡ-rǗ8nllT8HiMWZzrc_rElw$*X2k[c XB-W=cWtIUA3.inʧ1#inKׅ%89q?' ?$K%nS}^_[yU)8_\|Jݏ݄>|c@ ۑm?7tTC:=Gw1,%.u)IIsBJkmkqUf|S MSguGչ>>}٢.hWU&/n;|hz[Sըk0[/t.;]M'KjxY!n[WzElwoeX@H͎9yӼSo|ѭ tj|ܔ.fEo㊥2/ڰ%hG]QgᓺTA%[vQ7M$/#I2,5u/}):$kK)CSD#FaҧWˆCI))]ZӨZȂE"\: lB 4MN%uډX-La 0˛n;vDK;\ɜ+?4=3Ar+ 49h!]47 uKih ܽ8 [uj5o*,-4 N 3t-HCw]514?G 1eO 2o.n{^,dAGzs2]zVϮQ7gᜐe[pV&A8[6S>.5$]o5vq榜vQ7o<7wWxɏCxOLw*VGYȳLCc˘O)auqQX.EV5GV3ZQ|UZ[]iᱭu]vj(T i 5XtQ$*\/n9 5v 1ح;UtV=}x^n,Q:t%ռ[oHV/xE榜vQ7XN vdՙHK*n'!]>4vN47崋n/ y3VAH17[ bRS~y}TH!E]䴋hs-4q}vQSP.C$uDk:\vAcw{&%8 +kr+Ӷ=q̓K89-ؠiM9_x,l!߷zw6ݮV /r5+6$BhT|K6QMu9r K*=Dd0svI7ۭ}ga=c?UIpv/eT)I-; ^ʬinM@r9pUK@ܿ+Z7W WvAµWvinʻ.6;9F:dLt+ZkU.:QCq.(-qvNs 3[BŰ̻qKKW]ދ ]dn^"enJR55CwhZHi{2-V\[y~mүf'viR(ܔ.f團kKT%9izϫ՚%UE}u]Tj M9n;v{3=k:&SXCo&k: YM5&o0ݦfMǜ ߟf_.-vtu_w+U9溵T5y6^4SfC5Z47 wQG߅kS.?c.;PqUqL\,@s ]k\Bn79ީKjJ!(bI3EcN8lC7BbayP0oU}OirPԖ*Eڪ<5\i-T%-(mXJk^Ԏ>TcvQc73-0a89j ěk[j)=GbXsS5 죘RZlO&GQδ+|-*ش"N!rrE%&+QsNJO/ /d\b1 l~a7qقMMl]jԫ-r?P/ Tu0KGVGE^- j R[`ZKjf8"]dQhlM9 ~4=I':KCmtX7=8hz=8oCރQAبRlV0ŠeQ_nZTt9z4ITTS,u+0 疜vQ7c@',/KT3Up+jFAsoݮYE\v %4<)>qݓr.^BS ϐ_yW><)!P{=9w$lwJ_t9Pj 5*W4 &]5;%5r" gNVcr@iOӻ#LڇciҖW>x -poAcǻ)_ my[[“DQ;u YQSW5tEh _Tnv|[owx.fӻ>U-+ E]Q+tə|UYG#~;s"I?EPAa?FP'EPxƾWq׽ 41{ `I7 y@5R SVC4=D}Knn銊dSrksؠ崋;0X8n1Hf*H?e ]Q3"%2x=0 "]CH+2Reꊊ PzsBB,ڶ̍ZWi)uݱLZ/6/ws<ĕ1z 9(*C4vM9j:*{*Hm#{1g|xUQF,gQ>sy vyNw1o=΄y X2:iQr2p]P[2,tV|-8i)u0J ̊uZG,FI`KEq1 ]$h6ܔ.f-^Q1Z(aPWԉpl7 %j wm+vAcwB뀗psԡiKqq$] b1s&JcG榜vQ7ث쮠~lx|?m6$?>wP+k)q]87ީu?vG\ W8H|1/Sֱ:B>- YS]t9KtݟlVE02Hl[6뒊 EVsu!ܡ;`VܛhѴ|ͳք{ ?6utO|҃zk]|lRV0rc&sg"a3ES yO TI% 6qu@բ:榜vQ7Q %r,N%D!p<69UIJ}lR:2&JݏZBJZ=%$ΰs+.J{Dҩ#f# 9ROX"}/glo%[x]JҮhɮkI8>vgLsSNֻ?7awNtm3n]=; A,Ǯ^PVtzƆ)eÎsD5cM`ԌKFr ]{|lṞNElwngo .MހVDeWօ>,HwALc/b)n;~ ŸAmF2qk[T 6KLȝU Wh'䴋(w R8q-\-TdT$^@š:47q*cwbGΖgA n 4ыCLOt.*AmIj3^齍e(NUN&{#3_'',jc7vn+>|r|lR4B%/S1l73l!5A8k$\-IĔNviFuM iwe[Ít|h8Z*-^W/{+'_EDŽ3ZB3;J{ )_jM'??j-δ3v+؀-m꫻(9 Yt ?S!(z- /=npZok~0@1xUBY ]QŝhCEvI)ɂ $ʕ]9'OAn8FkrP1]fUnbi)LSpLaZI7eYU}I9N5}{vZ=}{ܔ.~R^E2l1ew q  xc¹%7lwrCq4鐂_գ0ɥk>vCMV?vGPO`S*ؔw0B^+p+*gXƺ."qinit?vh|mwsGqa Qrvwsg /W<'M`i'>joQeǖۄ` 3XOPQ%'QDV)AL0W'%?WH._ek_[IW a n[=@z*Vm . 5/p1,Gz a-n 3H&r?aՂ>׼_ ƵUfubwNxKFМe[S*a’E9jubvl3 Mϋ3a! ݅ R47k c.Crż}K)Fȏ\cZneEñIKkG%;mB\~Mz~|l|,.o ZjI5jS愔@/mc 7"ZSv.(;rP"]x5ȋ榜v-e\4}/?ЂUz`?'g%L;.5Q`un/[kS,e 1&{Q1-#<ҵMJUV'֤펥q "38w9AkNűtTuaIRAKsSNR%rYMY|"7Yo ]Q&[W5G[K'p9bFw0f%]R$v(?ӮkCIc{~.)շ^tv(vpYE\?t.>?^ r9X젱_c47]9W\8K!m.v*Hn;pӝh8[6\Bcwr|wN/ƨoI厯=VDGEg=#9#JrCQ؝@-AL:)c| ]Q%w#,p!]ؤ<B5lwrkpoEVs^YT\AK cֳDG =sKNK; iՓSB33l:0W%"VvWz6X yW~]N އ8a]@wT3Ց\M=( oCMvII`װXǸ}UtZf_FSo |t}QÒ4\sC.;M@\S1̎{m|'钊'R4z.HrElwʟ/PA.KOQA&Tv"*LvF dc>iQALJ7t?vlCkYVB:X}pә(|8 %tQ7LsSNUSj i;(9=* vgtblP ;fS[1^-ϖ 3|]_A2"]XFsSNzk46ΖKuaā:* -Q &uI8!]_hܔ.fwtwq[.@=l䍘 .49VE]sؤ $aNc;d6)-ﯜV^"rXmy[[")Q@E6I M!q6nKZ-Qz? 9.ҽ h2˱C@0}!M9n;0֫p\(U%瀳sKjrnMyr9#4ӑՍPzu m)_]qI݂n]<)]XAU&Mп!! !g:݇oMJ!ookm5+D1ƽY&6](77\KvI.Fwa)uiM.A<{ôE\>P * G;tǽ(_Oit?vGrAD/0\?X p7PWT$B6u#Ps7iV~NN-cUcH+\k(=lR%ݮ&j-c8GMԜ?vĜOE ~::|޸$ݣ8n/N&r6ͥn;cc?0=n~䒞9iy}p ]chnʛ*kcwṆ8Ǟ_ߍE;w{EZ+j{O` 4|+W?vGoPwdqy$q 7ŭgmW.wdq$QՏ{YsUGΤN11WE}(>Oc#fu_ 8QV뛡+jNi+tU׷wȷZ\H}BX>%r%Bw,;DG%fsh!NJ5$/MSuܒ{fZ}_,_o`g"6ɾqfbrWF{q<=nV+U&5PLilJs&*Y=IXkDbE.ݥdqpӦښ4v5YsSNX=z2Q0OJ^գ'}']R^-ΒzB1MGcw,ew!"Xn)^/v1B~RL:ga)uR_q.f09֋8((~D%!j񚎱~C>;}47崋nM/4Ϸ{ 95/z(D!;L24jwO%I}pSj&O1lwsՎow[U%}3+GPӽi }WF#iWdwR,9ʱs e`9бeՐeuI:=V*9v 3vI7ۭ88V4?=ľu mQ]YΊˇ٥K*-ř JwRwVM9n;z lL\Asi75=~M^Qat?v!pS|צq}qRF˜b儮=u)!Kݣ\at?v}k"g;!IᙶMRvU|'툺 q("NŹ%_BM7lw*4^p߸8h#_qO@S$QRt7H+jo\n`频nܔ.~N>%g)ϣ8pUJșM]R32n$]FG *(I7䱅g9W}\:b-:Gtt~K*S)/I0M}@Oܔ.fܺ"ap4{z}.Pk%U {'u >%]v}_|DxjP,>Rta&@@>/'{lG^2V ;w~)/Gnz:ITufOC"PαAӘ['tݱWVd{eE[/~ _ Kga 9;0Wؤ|,.]o:~/.SFf^LZvc^-E?U=ܔ.~£5}GtG{;\֯nZ%]!hW>%p*:_gPS!_ym`S:sJq݂P JwVBn;cSbKOLdn XxXtz'p+;qT\z禜vAcޗno~[-Զu ZN%']RQ&פ6orEl~`]>A_Ei;mR(X tE4c@ܔ.~b:WGE]| A|/BrK :r07c-9n;r^g's:éLo+ ! #Q躤 W4݊_cWk'?SԔ9֡z4DPJk[}(]JDyuAiM~sK[>Ɍ80GyDO:wM溤g)Pcܔ.f#˶AH(yo#(|**]RoWle<݅7屝rElw_mq+`D?uZ Wmu|gT;Zgܒ.~:O7;F)}wo>-&Ấ]@ˁ47崋n/מRqdN;+!t'c۩DZBi҅RcϚܐ.il+o̙۟5nAݺ˧=C%5IMc7}ܔ.fuAC AigIΝv~"r>颜Ocx"9bMtNtG0&}X 9jt+쫘G17>9&榜vQcw:K*#gAɓ.ΰ\؁孹#ݏ1$ Ft#lWJvhUwAξd}8(/svQcwanġm'תy'PϞ_%5[˔8=sKNK*LN[kr9]؋VgE@wyϴ@1T=cJcܐ.~?̻{%9h`,N[~r(."~Gݎc+97崋ncxEA .'o3oqC.qན.5rM9n;5̔?2=ODTrj-uIn ;o9n;ʹ"g.@H!SUQzS#9oK cWpNAi/廨lWsP58qC@e(}P#Wv þ5]rl)]vwYFq!(qb ىw.gOoVQCN|z^ ]|oi o@o[W-B?x"Pc%Ϲ)]vBLF R#aQ6_YR:5^"q yuh^NM9n;. w}'s;<"m6d6Kj)axXlO >1c;cEP`&s#|!Y+!vlO%=&.B*IcϨy_Lto}ghmM|VuJ ZцLc\+ʾ;rHbS^6_:GL Kۣ-]Q)r}ѡ69n;@lQBnwʬn>Z%.o8u ձܐr* C"@}x7D! F!gsHwT4vhnʗn;rG.Eqc&C d8 [&ݩ()K*'tNsS`il-nRbnr{7>>C=^>>}S$u|]ܔOe[g%X*lLz{ %{ 1"ud+Wض{m*^Vc}ضv;;-WV|P8rzkq=2.|<>Ű,WYNۚRZcz[#5̷]+9ANohANo(ɗ'ZB~ʶTljHZǎ8M9n;`TX YKMe|}s/!*%sud; o;R4wS ݏݩJj݄ rXCm>.k:qo4{]vc Z !ܪriD(?/4qG CF{(WsSN;-,KZY~߅X7;L]L.^`Y_߅\C QVwz^Fi Pn2oMMp5>}Xܐˮ=-ƻ9 ᧎YDS4ݮu1r"̆fGNgpOZ" ~2i} |ю[u4zvP/.!aSK;R57崋7#T(kHd'S1] jyG1uI]%2][}lR:|rݏ)ws#j`Ǩ,)RxWM gV2p[@v};߸{ɽ'B72N~7%],I{OsSNV ?w88AC6r8ۉꛮEźn^椹)]vGJK"2!! kLZ!`/@>6){s}llSp@4_67_MbOotE] ;57 Xl>l:M"J.ԴӢ钪Q&B4=ؠi-9n;`!l\ ɛ-.{Ew;uVh؋{ ~zw'0˛V3z,vbS :7;ҟ; ],u%t>iniVËVk+[2a(JjE]峓Ϣ2' ]Q @JmCE_KunaAˎTgUeC=L>xZPǟΘ3k>l6H5T+7Ecΐ"]R=70nmVʪjniu) K78nvȧJ G?9@nEǮȹ)]v9`#wT6QEQx5+}]Ķs2"ƽ{RsS>W6"*Z5ZDw'yKjGkrZPwñWx8Rk#=a̮kM@aXhaFIu]Rv>6)=rnCJr.oz:ۛ{iuAal|`a8ؠi-9-n;R_ T q'y4K(U:DuiTRE C^OcG\vM4/ggXzA)f"[A$B` i&l~r5Xk~rDIj)hK֧cG}P16( 9-n;;%9D@ڭ{I?W'(u.D-9n;i S҂u^Qz 9;dSw>")gnQj6FR6}e]E);)QTɕ~rQT,AIt796(D rY ݏQ@bd&y/oR:ѐfy&]oH}ǽ}'iwv CMRnJ] U;>Zqp:Kܔ/50lwY驯+D+]E霼KQ*]Rӣv t.R5v{禜vQ7ۭߥ$xH< jvTĊ7 #(_Qެ)]vV%fKC{Q,]RoclP:5KnpK*A^FE!TEG#vwL8uW|=5ehrEly78HI "-jZ~'h%]Rj!%T rElc6ws&~OAҙioT#R)?sP ݍc§1䴋hRH(r0_0 jXP;P1fyuK=n}q𔾤4܇Sֶ(W*+l57 #rbv@wӋTqݢtgrLw?@cL>-ә!T<7K8%:P@xjȇn3LV]>ހH5nQD嬰/loyqQȬ|w걭bujMʍzenY]`M=bbXKv@}.#d[e Ҏ9#Hb|H)4`hNcH.Yl^) 97arؠ鮮4&]vk{RA[҅]g9~Ű_'rKSb Z6M vQ7ۭW+&??2s(i#xT(ALݭG\Ź%]vGKU#9ⶍnmcvMPlAGN1+u16(t 9n;/ l_ 9 Qڂ~lVc|(_ýWןSGnEdAbӭ{ Drm3榜vQ7I9hՇtRx 8)|i(;h=Ru㲦)]W4*v-1q?t}Q:{B4n88Iy{+v bh*/4&lH, aWQzv BruI-Oty5p榜vQ7WI^"Uq'm\Y5Yt9-9KyM8U.pU5vu榜vQ7HC wae?C&gv3Cae?@]k;a.fyr8ל\K>z#VmɛB=]QDciԵM wb к8֬Q٢t9<+XpO.J,P>p>> \.hEyn*dn/'.8ܭrhjmŧ/Ï1.Ʀ'b*eLdv1P愔@/I+zufIgWNA:?mN,İZϢQ=9!5˶θ ȋaE Xk<7zC=s:(؉Q=Fqkm^wg Nt%xjr).8q*]j8My=n?vY[k^{MvgU滸P~XbHHi9ּ-5lΉCTCq /yp(fg=-h{ tc§:vQ7T7O:Ӂ?H;IThqйQkkniu:.,%ٗ{CVD Q6*v%]<ع'2v9*ĥrQӢ؎EȫHU=$̝qP ]UNsC.;6uGJ&ʶt2Og;J4UA?A ?UI4vS榜vQ7Pht(@MQ !GS:^)ζ u5ؠ˫5䴋WT|xO*utQZeOs9_IWTtcҚ?k-ݢxsC.; ;agJ&`֢sj'إ5?$_Nc7inet?vG:kȌtuT.yUN,ZFd:.5Ϲ)_*E7lwVOOOߍUTJy.xmn#crJ 9nöV \u9{e"tg=.e(z$_ɰk+WlҨZY$hVqP+Yjh&/CC ufHi4Gr]c.:s0PJ ; PdȇCnȏ7'vuږcP 9n[Kzz[µ%[4z2FWz!%! EAGȸ#b8PBJnzZٿq4)zԻ>2ʼ> hD =SH1I/}uԜe[TE01nMX%<("PKzҽ[ B8I4vϥ[,k`N(?V=VU (]<RjS'Mɑ)]Rdzٖ/]h hrElwxcc˕}MY|,Qo̐KtIU?t3c?`[]حeZ''aMG& ^tcumֱG cҁ OQ7yNmC{UTX̀//tAql| 9gr54G~VRAf'F_[71VdWe<͋L1z Agږc; WtmS}b ;(EoP{Ԑ-cRd⎐aXRtW\8*28oDV:=C=p SCNػ(ۭ\ۡRu@+k'CDo.Uaċ M-aɇ'?v\CA∃#L}`X lQ?@K9PalPrEݏ<{^}1˻(ݏ؞4\թ/8u8^DMm et7EvM2|cE]R%ޔ (>6)|Eym7lw^*W^)D@OC!DKÑ{FLW$+`v%գRhfЭ5*Jw햣kʍ$LQz9NK7-Z9]sS^nȊ/Z}fZlDaD(8@nU'Dc.fr~UgVf?̀$g7{P,[_96(orݏzy0Opl?O\4(|G=rE#ꊶz{l5| t\z*SQxܿw4-"y@鞪Tq'8Mΰ۠t 8mM9n[IWd[1"p]zg.J7&_ߔ#cg*cxfqG 0OUF' }BV:钚 )̖GIcOܔ.fqUe@$E1Ucm oK#jbr<7o7u:slP4斜R7۝0K7ʜ@Y.Y%1Uq:j4vT57崋I2M0 18̣sB@Kjfx-] j˫WElwG\DO6Sd8%fP."ue1Ȃ{jZ o`찔hR禞q%p%v0M*;tEqEM ]ةgq5fSiy Ldrz&uyw'Au;tqՕ$%os#? أ H}$:47崋n]] zS5w?j kL2~}TѮ'y˶|}0M [O-T4(mu]Rկ"?2OWMjF{bs]^ B[f+Kܬx;swSwxq*o165-K`O/4*s-P4|_,[]Dql\v1vF ./ZxL7t %d/nSL G/>6>݄彵(Ԑpyq&w<WKx4; #tQB"`8%U&r&{Aaiܒ.bg-9%io)Ld51ޏ>\ѩ\ǖvEM ) ^67=Y(Pj8Ӿ*TQsߢZ!g~t}@sC.d#T;5QİUw"N%[;z)D\;5ع ɫoY4*Yi8GW?\\* 4.$*ʯ-3ճ_]4vgvQ7ۭ{%Sàs"Tդ]u(s!6.!Ʈ^ 8k'&lwU h&' )@X j(*v b}Wa9摮]|lRw~\2e\kS]7(37.7k T(}lR]^%n+qW(bw{?u6*e8[Y=Qz֏Xv9S5']O/ʬHY_b$A` ֱ;7ѹX!\OR R6G/sRJkm[E ^^ qXa,bE]cOwknʧzcjNpH1:UZo>K'NЛ:R C#h*LH iLm?Itf'2Cb@$kQ](=y֨UҥO/gRN%ى\m B ˕tN9, ]jiܔ/9TYqӐTHnХB -vPq[ؕCR0M[jȱ#xV4ڼCQU[بɇFMwnKF Z47Ejw )eb@%-΀\j|N1,z39jMI)^5.PLqw߸!JW"Xwup8 Vv**4!H=)kHx0gahNc)uĘk 317x!cH 9İFFm:hNH^˧mM[4;_*Eota;6ywCn&(.6BHch79n;/ʤ[:OVFhY5YE?'tEh8 "]=ZprnʗڹcwV?ā#Š t/t?|Zfyt={ܔ.~ lا8GT ^#EX:CX;'z]bORKȅ=)7lw SQ4<qSD)&o uAalW.\+p19-n[K~Q3.$̂ۑ`0)K +Gp.]sSx榛fVvՒps]\>o 9|%5=)ͥہs±{pnʧ7o?vG Ee76flU;k|؝tI5?tƌc禜vQ7D'9HrxDc+- MK3>My\>p%B(0lw,<ӪjFY[JLN펬ʧP+l~}Pza)M>N%j{Au\.KŚ@cHLLV+R "+k# TIb4榜vQ7g׫9@E1Q"̨p&':Ou(D_iE-f#Nť70\!DȡWƧAvt.^\)]v^Y (ehb-bhÂ3lr'jı*WE C=L)j|_ϏݑF#H(J +!oOdZ.zq vV螫\76(ޓQ4׬ p{j7w\LL"`CyUV1j|ow|lR Pen,Gx``ywf눭uV'rk6ٓC!:Y]2cܒGOcw`پo[̹j ^~"t]Vy%u3p(at֡f7zw"MsS>PmNn'ȸ0@j%qnV4 M9n[bP޶8=#l\a=8%ݥ5ng= x3CҦ*N]+ɽOf4o 7нxq#Q(A-ǎҝ3p#fElw'}(ɟoПD7f3W$r ̕עHNgMyucwܑ+N3*ə# ސCLݫ͓o ݮS-t䴋DcEA^b! jXMw8 -IqxgY6gEl|.mu27jɇVx劤8.$EiH%0$lnDFUObgkn yS=g@83%nGÇƹ!]Cl'?ݻ/B ^5N:OֹRˋtA vxKV&/n;P ;=yH u?VjUO,t蕼WJ^?P*{Oq_ܐ.~WvJ,pnQzsυ=-1 [l%097];L7UOJPM" xc ~.{qwSUc^2 n/["lZ#6-7zO_> %yR݁.*OewనQtq:=ptg:{UY&TNVO{`Q77j9zL?.4vzC^֚JܵySJ\*J%<[jt-iǮҭ)t5lwcn?E^;>g+_O+#Y!tVfyGcn%|f]b/ܢ8a,Y=+&"+&me"&$q5j "&_:n;"#mS'Dـo_F)#]vr6K!];?23T 5}'+v}q;t'JBܔ.fSA6=%%DRBS+)][ã'%\,NuHsSLzAH*a^ƪGz[_gˮFrhNHi X9nOy~ Z~+`G]Q320QVDh7ܔ.f#?bFHʀZK%c&|~d3nS@.k2orn0~}-YWQH ,vt!guY6vŹ)]vߛ8+&g ғmK//3S_[&:D<y& 2~V 8Olۇ?',|+ 8K{榼fl 9hU,d䳪/N=UñOܒR~$dթн7@2;luxs"cy16پQ"RZl^CV6p7"S~Gמ!;](?vs c{|%t?썱A)Rf쒙kayr8<}*jZ| (y D39V:V:|+mpWF|+[5'S$ӝ*V8in*SknʽAz[yG[y[(f>bmuCWMTDKl/c=|:J/#M'A*bC ݢZHw'ݡl i& nXcWhnʫRiM7b[T:w{p} K*\%`nm@@`sC.ew*cA kt?Fn$AJAjϤ qꊊf](]5v4S8%;t֭ \^7-q-7Dz"ى+nZi5x#om:blMkm{|7- ݑn4Q^œs3:d;! )8%c^^,+t94TMycY?vGtA F4nꊻ\pz 0T = _v 71J zkz_RnA H/KZ4wO8>6)]U~1ySfccD!Vpc*T-qeps HFU1d3B`"ɱBPm# SC]QWpqBC _~)]v=C.- [ܑUKQ&ݭ2+ S,IE^Eyi?v`*ɛ,QE0 L7]S[ȏWo*~řvDqI`*NVpX[y@ U\ O,.^q&9P Uΐ.ft0(mRVd#VTgi ,T`IDu݃c"Ocniu"M@1o*_^r4&`OE!];%_6E&JI FITM/7tܔOZ?vGt%ĩ笀~Y1'')EWj L]Tr r /Sx+J!'#uݑ%|WtEe>̐70K jDiuņOr/t}ΖTk)Z m]cr4. E[qG7h J12BR7.O >/=ctYI[x&]R}W \]XOP}(vI7~p? =9e HL8_ySQ&) I5bg-D1Ce X|?vǙԵ8]XP8A#OX 0\5uGc/zEV~t?&)ɥ_ )@K7ct~$F;L*fSZ>2{/Qe! U1dj!*,3ݩ3]R3e.fOԊrޠ bUad:PLTS8PJJ]T!];|MկZxpzkPC~ӛ.fH UUkniu_W0L5zYGi_`B(]R@%:_gFsS^UmnŒsbq(&WUl? ]QQl  PƎbM9݁!wڄnzxgbWD {%Uw[K/I7TO9֒՚Xk |}i5)N5[yKeM9n[g/\e:,"_%[툋1j#.BWT׊\#"HcG5ܔ.~٭}p֐/s m@-ہ1UXn{ma>2/{Ըc{De`Ukok/ 0"I$N3tQ/{r.HKĦtܫ;4cj=7r^5.rS@]ܔӮēVBp,,~I5ٕ' ݛ'_ e.]{}lR_%lwaJo>af7<+!J4 f/1ta}:҉[v@DO')'Xq%<+J=!I=8UhQ/i/A/1f#[\-f&n#+qwJU芊T DJo)];}<ݽLe]>TS%fITÔu2ct^&o:cw.#} gFO^%JDM^ugZU>Mۡf;47 _v *Z;29HGÁR18q-3KrZ^)-;p*9PaauݑwQpS?yӨ ޷R0)oŹ3h)Ǝr/S\%:'A-zqf̳ZUU d:+*^v]^X{ةsC.eGtU]1.rq#B@ ]Q;rE(|ܐ u;ܥ38ۖ(ݑ 9{yQ;{i'kؤtGf//foEf8Cp;ㆮ|)_tsZ|^BA)7MsSN편X\!7n  +Y rX򭽋u[[ s#W|qr:yBUÉ{ ]Q)W)[ ʭn;z.~٭%,GϫgȟiKaMTTtU>i8knʧؙ8i R%8뒊UVH;47崋't N`]MfBa *&ڄs4v@inʫNЎ܏cՃOv=QDq<K+gXտ'MyӪwݱZbR Jp)7tsҾOv.~=^v2łǀ1kYn<̍1KT%#cwQf/uv3|£TOy{2 芚~g YϭG*)atwE'}|n.,/\rJT5v_W~ 9n;/78YPiB %J7v\LIw{Yp0U0Bǥ VsSNUw[&VcYwި=;*U ])g/݂xe ^38n[zî+'Fta[ y9-u_K J^C'xXRCw4,H?!SWOm/16) `ɗIM7~mð{_ ߥ~=03.+0G>pG9'n;cW/bqm  Ux>A=/3œnƧy#t4{knʋ/u9;oG}k|8.fi0Uoܢ8;Õ|lR:UEi)tlֻj[D RAJm Ta={:ICq.<{:Զ榜vQ7ۭgl,'?"oȩRTNyQGaL~U/fWb Ջ4v|~_Qn;jE 8:Y)ʫ?VYGc+&Ztºi^M9Bil3RY0k|ӎv_0]P& "!Ocnɧvv3^qëV4NiG +$ݡ.r৑.5vauݱ&oXE~t]_[$]R3Zηd 9il]k.&N]0R \+ʭj.&[lA47崋X dJ,ng6SQfȯ<+>G!x.5MJk2O<&v^3Ӎ|~.r' c-J{Oh$(R}o.uFtvNtVV"VQZkj :J|lR θ8D*]}lRtJyUvǖPv"bA;K/C.J[h!j~jP-3ȩ*h!_5387崫D~ wV:&qתXAlG={Rw.?:^ vQ7)c )cl#ˆB>Qw "e5CF/禜vQ7i  S#vGV8S'O .)5 gJYnMܔWz;:(եF'ZÀQB]QщB*¶iԉn=;t7LZY-*KjA5{*WE8, ~YP(eE 5tl1M֬?vnQui 3;78N芊"9hJclP~";9Z\o{,Uet9xs E)tl_ʑW-]P[w_|sKNKPSP/tȽ 8>n~Dl>y"Lc榼_@Y?vX6 2i f(,w(PN:ԍun!8IcO;͇se awE*@&˙(kDb^/G9{nv5.yG%5Detb5Mv^Ie(uۏ݁K:stqI5RNk9tEBnе M cou`0RҪfjMkWVmej݊Sw37F: GɰU5+T 죘Rl>(^lA< k"lkNJ)=Eg2^.GaŜe[iui("u]֩}~~ޗRA+}qsJ;HxLj9Pz礔@/>=^CQ3y7ŋ@$7x$%ोƮܔ.fSO\?Ëqk{ ^_o)qt{Ì^7j ݛ Ycz_|+|$3(G|^mU$R9K#gaEQNКRZl|{l~Ľ> mzݷ(7鑨+9Lg˫F-rdhNHi [jÚilǷf%@Ҝw܆$GWa g%9!mJ{zV_+1)aIJ3CjNpϕ|44'UO/ '6gK U5x~r6m@`K1= u)mMsC֘ޗ0 HU(O 9oUD)(E܌z$-pBgF\sBJkmgگXV౻fǂW"mLHT(QAo.Mto[}Z+F}ض1A@?8[F+SOb7G-EpNJa l!vy71Dd!/P& BZz$U:4T7Fui )^( S sl彥s)AލR.1Sӳ{Fќe[NlUbXY{U\}6H/#QUY-,ݍbNJi \8G̴ң-JΏi{HS.5˶YLi}5/*ܭnh)n5;_QQcX$%qTv&3/[|a7Ͼ-o.5L鑘~&cSz֫L?[sNc5 6섗^w,aG|\QwiiRҋ8(]h)]vݥn.ưF yxoWۻEXpKmg*B%E(aIsBJkm哄V}%q5|Ǯfglr ɀ"Oz$XN `-@+9!5oKr V51 uW/ܪKVCzİV*қvSO愔@/owQ<u,B_z"ͼ-3F:ViNHi}oҹO)l+%y6-+>oc)#+%.Oҫq.g3\Jkmu7-Ufx˹T]j<鑈j7U SqT\,RXCl_5U|vL?8KU5RWvWG+~Ű]Y=Fr_͹x*munދbԷK~?tA^QDf= לQ] kmÃf/-ž+_DNbGG{)>*>g!kLV2a^E෿K-"/==d؆)=CӨ]'˶b|..mR{,KIoa+p[lgAQ1`~r869I.=!zHY΄F )^c5ynjH4eMX~N\* UtypclP`bJ2YQeeN\,3lE&%G>tI5c)<-BOT榜vQ7yc[1İ4Ga_]ȸuÐEgBusBJkLV4̩EO =$G&*~N!SclP ޲z86$MށT^P"^#B8v[JcOܔ.fy>E"} Qf_B o j)}9)5˶zham- }K^70^Bۖ^d 77'mM$Ńx5u sL]RLt.:i )]v뭰a(mt gႬc2(<^8BWT~r+k;sniu}2`&Շ,K2]؝.=O`<֐>*@wAkeO!휋M@VCx13,t(ψpH׼> ݾ={<=c{ц1K!AC=C(fڴskNHi Mlէ/ O{^Uioh u{|o/nݽ>EsS^ZjCݙ3*sXXe"/\ȅ)]vSV3bX'=uER[R?\dbgUzVQ{愔@/0%a!ñ8eYq\bBQP֧/L/yݛisK-v=Gb%m.NJy鎁+m7vmOD?zrTrX*1d};i:ȡO}Y$BCE#`iG(A7znzsBJkmMtŢgrhz9/G/-e5Vw]B3rlܔ.fS8L0%yeK#g|S3X:gӜe[#qK.İڛ~XtF@zDtƫe~_׳fz*焔@/γtγ<$c'sZ7EK7\/DlUWagtB.hN]՝g*0GI~e[KS qxyVKi ~H f{A1̃'b9tV9bAH8\@f[ܟ9)5QF#w^)r순3 IO=)rN"~E/"l/&fvWL5`̽vB)$:yIoҫ=kdz]"}+ρMQgَ6Wl^1;>*8!+hQ )^5`S$iw- "O.mٻdX,_iNcsv,*] KZ:;yT߆1vŗ,շ2 zŊS8*9ٚKi}f:J)J>lue {ˏp8J1 QRz6QRsB}}l)L` ,U8)F[LQ(]^ VLS46p.a?L+{Ue*rwaVtIh E̥E]%#8Jatcexxeue,:a swu5"վzUV 죘RXCl+Ux ^X')s^qEMGm0'b{|e UNUnkNHi}ymxnZx1oze=ݥGQ$dS2DFeI)^U1 k.8@o28($V7@Y:+$_wPTVcheȹ%vǭYmBҋPH }aXҳNc KsBJkm{ҐbX2Aư|cxA((T 4%ێK~z:e,[RXCl{'zU_b᳑ WAFj8.2R!9uD8Ȁ*Ĩ(ʂ}RZlkĪ&  %ݽR#-]R @0F̹)obn~Sv\sosXEa8P^=z3UӇ u+FtsS.ew.O] "{ :zƭ@ܻ yم`%݉2뛻A ?Z~&BPn;Ww9jc4dnW}r X QA*rmS&s9>Hg0YVuU^2O: =Փqtas6ze[iF6%Ee> yG|>Drٻ'g)R[(OҚFUcRxurY,' <=CFϖ^7l)zJ1Hi~d{0biLF;6̱H80V$ΌQ#EK6me@δ%G%N\$V[BTʨ.E.0?j [gY愔@/g[DFc=Gz\ ҍ3u^睁aQ8'pXiTzMe̷F}@C?rpb+NBD81w9%0KiMaJ b{#!JmAZ]:@)6&:EcW4O[rEl&ydc~RNEpͥu-==?Vܓv<7F}~L/|g/l隓7-Q;*K;Qi1;7[E\Jkm6j7^m!Yud_ΗY֥z"+֑IzsMzK6 )^Ui<0Z" K.cJ}lR: W]vsCX9Z#nCq:[ D(=;i.o41/[0gJZ1hW >ݧt(u'# :ԫ-r?P/.zuB:/.*/\fR7>k!oz"}`T{}Tt׬RX/[mz%-Hc: gy5vUN wGWʂ%j <W}z_4 ^tf G=Т}2#RÅ=Oڕ>%$v)b8628 OK"Oo*zYCSBzר9!$)֔Upc.B md QҭʹKCg|z?ĠM nnKcc^QE2uxhLElz605\1,PzKQgUqNHi}9a M[WfU`{Dk:U~GeqR/#IݱeRѓQ`r$7@ %ecL8;Q*A%onatrU, # 3 0sQroe`KGZmhȱGZsSNvjE  bX+cGwnH"[-@:Ue0UȰs_ )^;lrYh Q#̗ `hNNҳhF{.zVwͿ eLEZ9"RQ B2Nz~57圐e[G T!NgMo/{yj /%uI"d'O;ECN.kjc|hCSQUz_w&aS`c*uo|n ښƞQ'n[ΙO+x.c*n7Kj'β7Ic؁ר)]vɰhi~2,]Z=" o&ZJ%A['颭Ǝ՚rElwj NCoW˓"od>Z8h禜vQ7`B稳3_8:o8|d׼tI9*Kk~}=>7U}{M7Gފ@t!ÖRzյe"spTt*cy3RָOoi^67~ 48hݛZnrC-7m_[fˍBu4thdMyUˍ~du0 T(t{w77C1&]ިlc5~>vw9J%Q ;8^ :騿C7S@:[ݨblP]07崋_v{ .znw9"t;.Z uU1Դz\M=帨*(En^U?JU=8^}o[BtIEo!q^{ u6ioԤї979gRAAB *ZZC+]Q36AgS‡gljnetVӻ,?+&, h*ب1H%5= EaGevWh My4^?vEٻ't[i#%scIn`mK u5vM9n[FQ,]W 1-MX7H1E? ݠJ| 4e)4mX8vsKe4z)8^q.%.}A8Z[E_1M9nˋ"ټQ38ռFe l/D|/|tAHt<-8s0[rZJlwmf[ x[ԇiz<%"CN$uI-9Kf/)]vGG@5/k+BLw ,p"57jRs\_.)]vEו֝?-4RLo[# U򈃮Tԝ@8524La=Ɵ) bX ]Ӟg0-mPrz$bobXR,vQ.=RZl;KmܢMbXzɃGy8ѹ±=qDF:00*sR kmy EUTKt"a?tY*<ﺤܫαJj ]|ܔ57l(űʘ醁ͫz,eBWcUBQsSNew:.!&nd.[冼TL]R^kHk >6)j 9n;1P?clv^T5sp-'H򮊜RDql=|57M-aZr~k/ޅDقөB:(lGD ugT*.e6S>6)]{g 9n;Ύ U_5ΎƁ~?izAβ ꊊ83H73M9]C($α s l84}'g4Mo.qKiPc7շܔu 4lg l$坪,XZAM峺#)Q|P/bRWNzRGbRXY7RL ۅAᣂxU1d}ȔxbؾsQs- 3I\Z;omf3OF%ve[R,GIg[E ZYy ɇ`HT"q颯)]v륾ha[2^LwQآ9r%7;KkI鰰athPG79M^]X^7`2Ytu1p*Шmmbt8y7/~Р})}]]|Y869v W2禜vA_ /_AToGe[tE5SDݢ.~ܔ.~٭ u( &,f |uEUP(NAh "Ai4/ 崋k%ڟeBi*_J^K19Rz|&oniu񻼥=lkQ9џA.W~5LN[}Д.]d]׮>vDpMyW34v{cZڟwPxy xxLJ#H Eİ2tШMQ! )nj4Q>b˫Z!2MgWcF#m: ^ ;⛓RZ#Fex㼪xfxEa2ZDD#Q&pzvըEtY(C/*GV|ı9'Ü#ttR֧SkϴݽTsS>aQ88E_@;}-fb HOE 3-F & )^v\%0ۗ˻~>߁s<:"$Z =[?Ki^QsBC" j#: LS0;kNcUl+4r,[¿kڞ@V!Kn׭Dl}cҡ\&2lw8B2q3sےJ-#HgXBc/*ܔ᳷cw԰J9`k9h>qgj(l=ʷpMMq62R{2R06(|zްn< S tzj\x#U']Rqie?ǮUtzq)Ecm(q)}q a,T@_cGS6ؤR򅕀n?QrJ<iw2L@́.ׅ .j@ .-^En+AցJ%E9K7uΰt;X[/_lniu)q~?&Z2it < OԎKǞtiniҲ7x{~Lp;+: FeMg.Eb 3kiniumHmZE捬 ybuŅ.H,aa;o!ըC8RZl~StYs!WG.C)Zj?9U_ @;47崋n+g) İחcY/"HM=KmXcԡWsC֘ޗKNd sE99SKb% DH)~?vشQ _;1`A%tD5Wҝ j$XPҵimny+#u8U^5v $pS&AX]םOhvrEl%QX #B;CnuEEVDYƎ~]p=o"xǥ١թ}G/natj"  )^URιXY^ MF%M9 ;b+Tm"FuQ>ZKs\AXYq۲F"=f&ؠX%;^x:Į <}%V yC/~]5^{ƽsC.eՃ<|m~XA#rc2MSO_W-] ,ؤiVYPNv<ߥXu*)=^*r' ʏ.oꙫDGE!sy˶FmzCB\@.GEA*( 0AwcI_clP:ĕGs W`+ޅ QrrRw( ,l" [cAܔ.f㤢°'m;? eE*hSxzAہ*./hӧ .]𱗠@|nʛ ;d¢AbK]/;@ºtQʁsE6ؤr0lح88`EW ;hm!'uI5Ɗ  p>7崋nFf9 nMVEayݖ7K|:o=+艰Kk!ݞ/EƵd,M3OF1r#GݛPYBm-jŭ1/[zPg!^2,sPm{Lz!RPѪ AnS}sR)^Af۳o\ Kn]**\il,S)KT| ]D#nZV;I $`]0禜vQ7%+CΙ2?|l'}ȊU|Iϐo']Q94ZyI榜vAp\ksoUՖPU݀9(K+钚ʁp^b/]Wh[n;w\8 a%92l`3 w]TJ'K\w~'iniuz,OWeo%Zsk;rK{Jf>6t-rniu]/^Li/X]:ባ;(we;|lW`sr/o}#M&4r5;@Iw)r"q:C{=ǧn2wz$ {S7,oUCݽ~R!d.0w^5_"xRUc\x '="([n4'n^)߶FJ!^E"w!v(|Ua'I_=&dj;҅57 _vk2_g>4(ߵvȯߦ{dVDH;s+pvEl +,:oFGkP/6Qدʳ6I-:P]^xx>7wc#k = Pl ~ ?%=JϺKiTo>9!5˶ْd.i1GTE1p &]R5,tajs-9nQ7}v1,A~[JλM9XuVK]Xn7Cj9'zָW]bwXVsqu4OFFe[8 ّQ酺qztɧuv;0K.S=X޿;hDPK/A<vsNHi ˎ]9bX(e9bp/n*T((> ϡ٫Q=ZsBZv~o[? v@;:P 4sm!v.)jpaIVԓ{&l7Ub msFgDCWKJ=^6=?8v)^[EL\o1ȝ@SDo1Ir)GqúRg/5帔@/6܁0\w]Ɨ;s^+=W8>>ie8c;PsSN펃V)_acqmURa/]R6_",#l)*V5lwp_Ny@5E5jzUr> j{GRw[LPcojne)tA+J؃8*#;v o|{5Ӊ*h<5cԩt\ iԯo[ݹv1-8oNcw vؖn?Ve[$hp7Zw.Wڇ x%}scaEֹ>7UF71 m." OK.M*Ƨɱf[Pe±WMjnit]-%&rl?;F= wAr*jTc zQ{IxNepdV K e㿄YrLowy+(TC9c':%8,M"S@q7M5Dm>6>MζMO֋^!][-W|>:* utq?E֧մnE cܒRf3ҐaBxK5&ڰ -Zak \Hz 0I >9)y-FNJ\nbXdz$btZP:2愴yˊmf ~KgB n؍ZYWqWJՓ'==hTYb >:wrlX*uS ;ǣkMnڭ.CDT zPiTInw)^kd=U#3o6@|La~ Pz<=E)lʳ%VsgrNJa cFn_ݭMv!ʔ&Q͵Lz-@VC,jTj?Xv<0{ t2pV5yZih)1l7U+2*J:2JS=\g¬ҏ6 v\WTB6,6^U٢­;aT^$aS˻Lӛv|vJXAsSN؁zXhKW )l 3 =sBm?IbFyAaĵ%av|fsXNx5zŪ9jBqI)^5<%Q# ocλTƲ;k\/o~qpsnjșqv8Ur/|ȅ+gYJ 7d4J?F:hNHi hQY5pW~IdȆK2,]zFz9&z_\Q K:׵W;)v}<ݥ[ۂ')94g Z=]sV˶|VRqu(Iؑ^<08˃QыN3sҊKi ^|З1.1\y]? \2/$EzDTE(v:pTxu?b5#piͳ#슾[eDMX)JNm{>*{*e[ic;ŰzD.[DD.lc dB=)AoJ5vjzVOyj,Jyj,+kxK'ex葘1O{d˱ڢߊzӞ=ƭկ4`$ $23fpQrz:a kjP{CbDzD.t2H8ᎌx_8"RXCV%\8T6 @#JJhv6gg"9*ˠyc_݂[p|ZWt0,܋δt`9 l CqrBΒz$I-Fp.nwҋHHJp'RHqNJi ^[Vg:,Qч~ODqQQ}h #<[+ ICքޏvF[+y=ޜwtO'KBz$|'#bҫt*4愔@2c/"& {u1,@H4ݜŨߑBzҨEf )k!6ňÎojĦh?A-/KVĈp=*c[JkAiChbD(`?w`z$gb"mG6E4'z>0G9t`3ƾ8$aVnL/%z 0*ͩM顕GNҡM_[}`&, b ǂEǢ EHuA0@zq,Ш>4hNHq</Fڬ kq[?&9:ָ =^sBJkښ'N8q.j>`?"`cψ8U5QҭjvmuNÑm%42Z +YGXztznv"QI"junq9/e轶 a'#QVyj$8J G kID-G2-5{m˭"bDdFM#Sԟ&tE8^V5'z~u7%ѫK7`Fs">nz$RXo/Ҩ]))zmóGS8Ebrl.'ͱ^FiNH*ϊݼu2sZ7eq{d:NKn hS/rkT5'z?͌Ĉ 5q:V73b$( 73# ҋ9fFҢW_[ 0Y?0#ͷE|?"ftEZ|M!`^@z;G+h꽶ȴQtY$ZK-."1 t_CbDSB6UzkNHi ^[l|ϋ\t-Ʈ~4q\:\}<*gZJkBV_]bZH (XvEmׇ҆}1GWa‡hO:v5_~F0\XOV)]+Dy_ DW'j"x"~]z^vdK<&m}nl1__^}ܐ.MT\CG_-o wΑfʾRKb؁j(SO= 攔@_5(Vc~NC~KIxtҮ<32zM%T9Ϭ;Y轶̰pᄥe>,=}zW.MXd5z%9$!!5GJ`dTZܖ^G-cE2*kg_M91T'eGqM=|ňQ} )k^]n1[c~EȦc¹zK{t3Q\nRZVUW|}ltM6Q &QF=Xqʾ@V]GI7ڎx&(i6A\C"k i0j%sؚ C݈Ļ8*]N'%:Ht]Ĉ#Q.3kFޑۙ>>!y}^*Hg#Q ?zqШ$AνKϨ\8bAzx}#;12-HЃ D6CsBZXz~bupÆ_{URv ), >1|X[V>+0CMn 'Hi\]ecBI.Đyc6ûs19P@p[t_]*:nJ;yT|θEckڪ"٥ݢuC%0m{7>:rѺ]h].98EhڭɥF\/*MJ#8h*KSG:kw73{8j&Td٢UVѓMpsAqIs[sKڝ%S.wEv`RG#~-eb.Hc=6asm^I1'ϏQ`GnLqu[%N/)gE AbH7=v_sSNڝxtDWJ @ VL [p+hQ/nkUUb5 wC)@0[Bq6ɧnaK*IfЍ?M ݴvQ[wBG5wZDb Q4Uc.)H7 Qk {~p?HHM#<T *S dz]e-i0cX;9}EsBJk,ωեeM2]W4QYSr]5#!O,m`kkޞ6E1T*~xuq)@):3tO}Wo\˵N㛇Uv0s>`Nˢhٽ{ㆩLʷDVp˿fhziu_錎GmbȈף@TVAhR1#NҋFmp`Ț9p XQ?s(~ҋTpE1~K{sԮ{ )kފ膳]V0KϪUQr9K$N#ܔ.4^˴t! z$|# ҋFACsBJk&#=hzECABt z26ѓWꑘzb ߰^iTS՜%^[@\#DȔ;VDQG2S F'B3J^$hThNHm^)Ƈkl#RBrCszFINg?'%|"RXCք#dWHĉU P @FtU!g;ĉcu#c47 ?v;N0\!F e!ַt8 KYvte%O iկ齶&Xe+Mbzf*'`*R=kÎ8pEI(]}ܔ.v̋xSbnbWL,7$=@SףOo.MCݣMqN0dM~lKp=]/MvMA:|囪:$7ZD2:GTv"NdkwEƆ%70#2? QGhQNFd]yJlh@U&@9hົ4LKn}tIlӰemf{ܔ,SmiSw=D)%Gd˺Nz0uQ&A{斜vQ[~79zہTI(yIrvpq'˝57];OvgoM]&DRSpDݔ)ةKŜhaݢvQ;#,}urSHP9Ľ%'v0FcWG;57崋]|?C˕(!fVA5뛞>4At'j{fTsC.cwlqԯ{>R-B'eQq<ʎG|~gI"RN꽶R &_vc Q%pOwlDzR4!hX#^-ڶty%OpA~a9ݴ^aUo;">#^[})Ch@l"xӤoꑘB# C*8;9!5{mu߆C=Ĉ%QVogSsLoغXo~W:uSќVb_[ij%UboEށԼOp"l?TpLHfؤt"j=˺ N}lpGvG )J7=,tEkrQǶsSNc>K%QA/u :u 1}p"1榜vQ[(W!k(_VBmp@we,W X>\9 M"TG`6jXXgN'_a*'uI5kucExrEnQÏ\T.i ߉>#H/, iTi`ȚU['9n+>6mKwLs[ؠt=崋>gϫSbvwz=@E#r1"z% 8jqQ9礔@Vj=w/X<-mjQuE!p$6K<*gy@k[RGbBN}BD@W7ϕ'2R>DI]RϩesaI794%LvQ5sH-i~MenȩGngÍz,ӟ} $4l'fMrHTP~UW%1CM_{PʱAz-9k7?qK8 u|Fg}X3k]Rnk΀0cܽBixrǚ1Њ&R,1i)-t$++s7 x.lgp_[}d*5,ʬ%@.;+*}O-]5v57崋"(=@]M]=;)8OSwʌ 횺5B榼)"ug7)φhx#&>@>vAGԲP8Zi;"5Pzt_9eo#3C틨TBçRC>TV>t{4vw(ڝg,~}R^R'Hx=iI=uE-5At%}l"WI y4w㷹8Rހ8lh0MT{RNlrvs"I݀ؤ3e(Qa>cGrG5۔iRD ONAr}zSQhfk` ::9!5{mq…Bs:/{Xx=(5uE)T= > ܒ.L!\ k΀B,I>Վ$tI=9Y@ؤt!Z~iWQQ{ lWnN{NOұDs#r.%喘<0ybrEC} zbHd^(-u|u{&_]/5[Hk'rx 9kwnRKݜ>u:uW!jWw}+GQ47y]'ꑕl ^[ B4U@ɹ*jsK(i2@<\1K8-@VwQ( z?:|-ˁcZޚRv~7z@9UQ-5{mM_fl׳+q8^ag*$s"ɺⱝg!]۹SmKSIS>(ytΧwg n^$iTМ轶:{,eIWk*:c8K':ҥwWOjQCI)̓kQKc) Dq#Ujx⭨[QQ_{C)J^5jW愔@ ;m˵ '+[,-G)E%? V~loYXz8SY zF1b1E ~ kwȤOOEXZ3sBJkg#_d|xx{h 8=؍G9*֧4zԏLȖIȾlHGrA}z]K7LO^ zW )ki7Чz?Y4Σn57D& Dg50gUzBIa@X×lb52UUK1cb8-Ef~bok|0F` W~,$*/@z@H|y ]RMQy{PvϱOsne)tOQv)7WN).Xȁ#q//Wz(&$ 椔Ay_iٽ إ LNiX:xۦ W){.O՜xۿ=8,7'b|9w=OӣraA^d{uxq㜐V7pLus߉;vۢpG/ n|rѥ{6 +Wm[;[=>}%>~3傷'56L0)d,YQ©9'ؚ`kIf<,aq~ny,^EeWMtecAKGRZ3Y5Qyc q ˇ DH^Vl/;\JB?Զ* )8{D~˟XqݑI֧}[шQxd暣֜ڙzS_V2uHvGE%_TU(s4ECUnR+N\vؠEy92+Tcw;11Kb'Q"xu⩣"H8UJAnvWsJ#y=0/W( /tvcU.66CrQs朔!i{1ULƍ¦/ Sojqbq^H5rrBIjj~ )Prnj-^f"M) __3W(x?9,Sc]XA\=2HzGQf9!kBV~ګW. 7P!벴i =S61\#GpNXzd mN nAOwNtGKK}i9!MkosŨ< ]d#a(^LrZg9)5{m$>9Ή8Ŷ)BGa)שGb{O%# ϙIv|@ﵕ϶'u |cC,X8NQ"Q3pNHi ^[KY`.j~%N,bX/4udDjqT5Ki ^[˝3/w*V\X<@jSZwQ::sԮO )k#3Z* A^K>]i zu焴 "{_[]7[y"%Caŵ Q( |s!ks}m巿ZQ[!GVKϨ\8 ô41_]>(n7@\^ [qx٤WwGWLKa ^[y}y8ԛZR?yϵz?VM;j{(uF} n^59!m Mkk>]yZ@R]G^FpީGQ1Cz\) {m÷-GG9D-zsDgNꕈ)qTmMKa ^[J'!٫Wq7xyx3z!<7v叨4)υ_-=:QI铯r[[Ѩn]PQ2Sj$_jP 0.h+IGKNKyGlv.l('<yȧҥJKj:OzL0ny⚛rƕ~+&nYq3trkDRdkP~.7r73xt{mM_͗~nTD֙UE]FTM"歴zR%&99ؠ0VXat_3OKdm;9f6yA, IlʯHB d_IH;(qȗɇkэK|5ᒈl+ʲa͇^ 9.z{w+CUE|r.`oe H;uE&`t~cf9z" DkR8(#EG7uO4ؠט[rEn&,@k[y*oG!(.,EB|M9kXJ!Έ;hmq Rfar;RԢ_/!j'Nb|G3RR;uI9k]rWX禜vQ[Izq(]zv!r1A.T1ntr bnLTVn=d.]zBNڭe տ+;B ~Kyn|%to n`ylܔRێ:.ћ`ၠL%g߄db 8Իj4ѫ XSg(o]轶fFJڱ_ pгkA" ]Q8@Հn{lRxE- @x b\_`Ea‹+ss(ʆ@zGh;bQu:s: fkkNؤDxgBIZ)?hC]Rۈ/tTcO#"knʧZ*WVUl)ʢX:\4(j;vc믯j!ثU&Vȫ: kZ@@?axh!Cː) c)EB/ܖY OWB!q4Qǝr7b ]RLSw  )]}N8VD;;$?qi1EOޫGRˋ83AF|3:ZqЂCS ޾p[~_V4bQq/tS-5)j z_B'we2b&w}JF1Ǯy|i݉FԬ߅lJ>)&{o_LԽZMCd#IIɵ*SMnM(^4p˺hztt|ʍp[R[yU E{)5sSC;aC ڞ0;DՏBk}1ߩ&|{knI뭷 RwJ>[ &G8xFS\{ !>E)ImW+7{G@sSNڭeabjspV/" _Cހ-Eod'pϭƮnf)]}N.Q(A GN4pNqhyhm4T z6y9덣۰E@b͂('HTyOѣm*n:jnits2?l`ڥwpj/dʝz ty쟝<|~;[inʧ;P^~z_Fw|x8S)* \2Rd"xmAg9ʖrB{ɿ*&OM{n"ܔ.vw)jxgy {jz"= =<]-S#]4]Ҟw־Eqg;&eE_UI ]Q8-?4vK[Mcw#ҟ́K9O̮XȻS^ {BȞ5? 禼5i؝uY" rzq!# xQ_cO9S|K vUnαܔ.v?pT [q6Q6N~֚=⠩twW~V촋dit .dݡ1iQP~l )kk bB6Ō<L.|z]UFe> [v^_ҟnyzûaL-gDf9}~% o!)_H2iNo 8s0榼cw~sp2wx(ԣbTj 5uWK8wQ{aұCec=[J'ZHlewJ9-kwHwa0nK>cATŶΔ_UԴS_pH[ǪrE\li8-xy[J6jhtV?UBcbg˺gs87뵁 tB"WDF_WO luTmFbG3&%7=qMϲ+FMvF0k|Cm4FMӍ)]}wSBéx:_~C](߸QLG89,ɺ{:97]8QTZsCքޏ): 9Je}W ma.'`;|@ܔ.vg,*@!B]@,ƅ #ܶқ[ݎX:T_&\r|{5BH:)gG`.i uP.cw;-swm)ѪQr;֞dd29(OmqMyXP36-+#K? [!AFEHl?Zz+:n!s.CښINCG"6QT؅A6C_I5gi9"VcgsC.c7Q+@WT$Ro d>K];'az$쐼>j8hT{#5'>zYmrW/ʙ(6T/N]V 6=zKKڭժI 0 ߊQx3y}$G_%f OHؙ.)]}Wd20LНl~D; U3xNrRS^~-]%EZIV.sqv#.ҋ۷FJBҜ._ky>YfGi FHx?#Pu*>9!5{m5Jb<ƼcAKE-rDoVwCjD=&Ja赉?圐6U*k}o.Q[~[zuJn+QA' :{mM{]M,N!"&tɌLdk%rsڍ.Vڶk+͟O]{Dݡ'Pow}zquըCGJ xrrsn8ąhLÚ$4Q=;_bC:Q[=8QE<*`轶fEXGKeqz8Kн'BA;:Da#ij.SQjK݂]x]}~0[ЭƜ#]?\+JGsR6 5X8.SP{9ګ)][X2Q,Q"'_ ]{_|Xj%qV.܊{:GIsC.c 8A9kDsG-]h=E|dKG0ԀkJB=e/jaD/I)'G"&H8ˀ6- )kܴWH ,L@x/AL G6 'tx c4PqYV'ZbHkL9muKۊ29I]kDܒ.vgF%sTz/F,dW{'S8'#LJ@@Gt.2u4vhniu_3Ak _2Y޵=tIAGᢡ&gh3nk{ sS>3k s8ky>/4Qn|>]Qյ D"F6&-9=崋ݙqqs_ͩH"(?*"~pRRԮ?֯.{lR']tE Vpa*ܯz64T53nW}…y]}_!Dܣf HY(<5SL `>Σ;UO}g"]!o$`p=c}A mWgz-_^]Qյp LHؤ̔Ӯ[ՠ |̬ectQI8vWnawڣ{q!9~-]p*TWE'Ԍު*!VnQ+Gw+! q?uYϱIiM GMƪ +wE T;\nWQrӂ/zVKj iΌB6TqaP8My3[^/_Y ̬S|7X)K9D"-FL47 ?v;"BϏ9!xa=:^)A8uw L9k3Ν<7 ,1(=5|[/I`-u#c׬ܔ.v癿 ؎H-Wxz6 7a.'vtotd.%s\ɕHw:]SMpHS{ʗ*jBTÏt"ݨؤv4ݙ90BNCv|(с$k%uEUGŁD$禜vQ;jiW䨳ҩf;+*{3}J7<6)%kwBUyh!߀{E.MGwLOt!r5 ܿKI!vgl64I:7K'jW.՚/%5^*NWhiy^:TSYnEn}NJ#_~![ 7=Uw_w9v αA(NW &ڝ p/L?-05agNrCT7-8N]之߾;l{3꯭4bafFc*1tP0r5TY4tj/Tu\AJRU^Z54I.ת1eu_{9A@b|8=2.J'l}-ҝqӧjM9ݹW,q:* pVjѤ:-%u2y p?(%/ɋrp?v?ϵO&?CvPo]rҩ+9(P _\vACMO~1u,XRDwQ/{tCNdQ7nn~USnQ[A8H^͎hIys'ٙ̾}.2·38ϙ،%.m&0_s w`r?Js,] klܐ.حu,>&{y95v/CDK+۳$mʕ#&ug\cg/s-9kYc|ڹF݈;lHLM]SwR%|ɜ׺7SuO9k&#/D>qpkh)kHySלOWTLʼn H;TsC.cw>c&gN s0(=c#b E堜c36崋?vM%Cq߈M-ܥ#|>c$Խ;_ScD-Bݫ'kw̢Yk2lN%,2CH ]QSmIAIt{85v7ڟ\vAr3y ~N0o["JO`R3uE,*u_+u&cOwܔ/|& 8/HOd hPў6 a}M>n0SncM~ r ݺD ;3%.OE\.[sM:綼 }&t_Y0Z{(A *nͱpK]RűWp ً~M  atu2jwUb?GRjcYK^-P9}?Wv.vwY _ $%ȕbz'8#ٔ/V" ~_cn{nʗPZn,_5Vޅ8@]]qO(5u[> QD_ED+"7?v/jo7xp#JSބIk[6t\vA,Y,Ȓ4X\\۸c4xJ b(,Yn.R,r˒-bOjJ$DY kQj.''-@%87]c>P%Pm$JoU*,(kQV=G. KMJqR>Ts?vgDāW5'lֻ(~-~MZ>3㥖.{xܔ.v?dB*BOzza錺fÈ=uiaTM9r6~~ʝ^rr'Bİ遐a(w.BFhY*R%J(gloPY'v`bGehDY|O]Q#Y;uy7MsC.p3oDg,8X02V|X[G{rVXl5r{niu_zZ hZ)n\E}y;SlNgZA,IٗpSNڝSÏڎ"uҹe-uE|j wK7N έc|W W*^IjB86=c}bѽS60RsS>Qcw/~q'_!W*dZyte7~IW)/*o _~qztbSb[ךe5]47崋My'~/hgݏiBnٓZ#3cщ\rhWg?Yzbldǰ_k߸!GHr:2¨N}ܔ7uWc6Y%Z&̹"g#s~. ~j ~!3.Pg*o*tr8Ȝ+M9kw'sA1m䣱|5+7]R8@nS^t;崋Yˣʇ!ԟM(gy4h%Zs-J7qc`쟗t[O(.Rq+ݢ'QzL9kwfof+Z}ދ FʧN$ڋD+ƞRjnʫۭcw˔i꯱Q\^/{p=j^S9H"@3E:+C;<GLyO<%O'*㜫čhؠt:^5Kqev/{uWYyY+uEwvU;<6)y}gLޥgL^1n;T+v+WtbyW..;34y?ݙmP2y__®f]R/} %]}ΊlO(/je(EKMQBaAnlIᯝQrEU^1{ rC,>=|ZHY0yY]+eXSiߵ͢))wD~-uIgXs.rD{.J:Rڭ Zތz9Ѭ o\kU/W׹Q[}qjMؤ1?v<JumEddQ:aDN]R 㺑xӷrni)u_3Bt`uH*HLI=ϕ8bJjs)/öY]1)Tw^uPe/Se`AyV%mݙN܉! @@E{tjqWVkxlR>̔w߽B X 6VGV)tlKJ7`%_97Kv;]O1qW^9D PO]Q#&AG"ୱ[F97 ?vӄ@ ΄NUOE=cui)/%6q:nmh%#mrE̶`ʙY(U(e[_ȏB(o_HGI]d6-i(w{VuLwXX?v?, VOrM9.n;q57C{i؝w̭|܈]~Omܚ(|q:RS|M9ڇ3*\SRÎG1ˁl}D)@L]QGQ˱rsӚ۽vfԔuokC|^ yz0\&N\:N\+Gʧֱy/ױURk3G:oE<0&YB2V QE㝬U *Dgz4-y7b=cg ݙ5F)7j "T ^QZk]Gw(S?+nvJ7*)2*v?||ƙi%V)1Zldg4z|%5'NW ;4wS}zt_ljxm o!IhVݔ/< p#*V`n˛*C rdw,= SBFy?tI-J(tG4p榼C9t_sMKy9=!&q(wY>Qʛ87.r4v{߲]}3Ƴ@R}V(@9ޫ]!!(rfvDc*G?vRMt;ku4LZeה[{qOUg앸^C{HȻλDB8D¼BՈiQK]cVTu^kꊪMJNOMJ7>,]E|t7ynq:Mβ|I=XKonNoj.vg6_uIF*S5Cۄ1%NO]MjrvA!قOg~r0K{ߖ NPB.U59BJg~'|輶zR* 9tPQ5c,OU"R/F˜"+̮\,lWfhum0DШ9vIYvKIBә,:G}WM*Wpp\W9ϥR=c;3H<=^xF#c|W ʭaE^~t|Π<9%=]m,Gvl)Όaqכ8;s'Q3S:5lIN*FݞuBsC.c㻀SdqpeWOoZ͘4۾ ej+>eEM9kwgFdSL!Uznu=6)| ߅TUs!X`H7yx&>ytPw5NݩOºŐ.vg\HFkTbk\,=Q4{++uEDa8M+ݙsؼ1s;F"j$3Su|*ǭm96(rU+ɹ0m]s@YRCWɘEquO]t+^ꭰ |,5TrQt.}U Jι8@;ؠYfʗZ<퇁'g9w3 d*@gYa\=+jd}9=N<ҍv>NsSU:?v'z!-VEm(WH(=uE؊|~}՘j[Ub@-h=8$+(-,يTaܽלGqr|Sinet~QN?%yD<dl]-\Sek N<ӗe M5Q[թ =cRvΥV+* y :Ehcm8-]`s[<_}癟OƆKݷQ5(G[ʯz[ mKX={kw]4FS꩹mWiāKe7%3HpN{g_'G;:=Us hbk~cB^>]A P3=])]}~p.+AsF)dJm*zl|yrni>OʋjoB;sHx%53d6YGܢԧZ]uRXMMag9Wwvy^gKzΖk81["hrK*O>&[ydFz=݉X1{]FONԨ೰zٜOVGw)YqIhniu_^+;2;L@L|)ꏰvR],a,ܔ.w>Xت-Ł_ x ]ڦnE `dsS83Xsv5(5ZsEnҝʩZMbI3kw_(c9r6P<6Yymk-֘Iռ!lmVslRco]}쇎|r>]D}t9jlS|Gn챚Q4u7. kPnwaJ]8CU4G.mmE7 QK^b2/jl{Gen~/Y%Fmuo^-'QQvbtXk~&zp~PMyp{7s#_j?\8 _6W J,%|#R?t;hNnF#4ҹ|Wu,O(?CB^9W'\fe [,:?s (fwZڻ;dkTL(zܶGȏܖZ;}ّ<ӎ-UL:_dI.m`7pV{}oҽ|oCO}rRukK:.Ħ}.T"$QKtua<1%l9C8[XZWʮx/Od Йu:>s? ;gon+n3KmlH}#l@M =Ky~ƛ:3vrekߗ-aonjOn esYO}M]g9]!1Ȝ--വk:=đZʈ'G9PKԎ82 Tߜ-]ֽ3o/FyG3L~~Kɝ3۵N[r5.vYy?7= 0*[|غQW(t @+˪r#vYgD"{<4VE仠?6SOOEse:ylQcvY|_Q3Gu5 W; Ϫ2!5NdjF(Ǻ[)>{g͈F^Ymg*6{J3 U̫K7b~T5;Uk@7gR-}Ep"G>8Y4e6\cgs[^7 lm`[R]S`AW\c'jZvg;jFԼ.x&ӧƣl{j~K82tƮdnɱ]c_ FsstZ< L] !Ƀ=/y-yߣN֙ݙ~!-s{o)|TZcN-{Z7om ]s=}n3c̴˺W^ّU霪|*rv' Gw(=}ziyDs<#c|:U{57ƺtD>=Uu}u*EvYPmn#?ˈb آW źv/"N0򺮱suiuo3}p?f_Hњk_IԌl|)E1zY3Ej-u#7'Md/fd^KrNct7㵌=(/P̹#_[b'+ݳئ";R@BwۖX7My\SL6مhsa]KTQA+?5mwj=|MP;uDrUGjkP;n;~튱MvWiuoӧi{hddOS>VJl[sOk]cz s#]v@zֽ":R\9[h%|bΫ(ߣXͅ5Wi)!ݭ -̔R͖2H٤ 'pz 3-џM i/<yum:ݟ?h#Jo# ׇ҄򹓪SÃs~"1-cwIc>i.x8N_qp$uHK.N-tgbhHK؝ii%[#(ҡjUx?KʗF59]4)w0o l`>e 4^N1=N#ʺx _zn3vw-$+ 3gn ^IB'uv[ c]tit<E j'MOYPPG:mj( ] X4 ѢCbz^]bkjA&'`Ң)ct¥aȓp~Gܖ6mw\h7"B{~1BqBuP,­vh8: f\D؀-]ֽ.qhVz꭪}&.g[ y}4yv^ 'dcBCY[%M:_of%w%}V;߄pR[=; ?9vI]\ᨈ=_ɫ$WVYI<]16nZ<3gA7M)gٯ2Wva x0ޢ]1 *AIO =Ohɨ< 9z?Xt)t~R![X[;hWG7wGHc@f(ޟ˺ݙ(y3.=G!CӅJnݡsL?vBߥ di*r mheBMrc6YTH97/rn_߈0iuooR}mPa]M55f '&؇x)9 ѽc˫xyz8g7_f_/d?|_UJ .k0yG;Ĝ *'ӓqyGz Gїhܖrn2'TQQ*¥WI.u{^/y 54Gk=HvY;:N}jTmpE|?6N0\OOi~3U3 90wg]s險Q'/؇M ~1 '`{ٷ蝨j7 K&> A 'md$7p>0xs)=#JWzL;ئEMCx\ɬQF_i&P:YTC{lEɎW1(qp4EWznܖG]gq-DeFUuM]{9*=DW}QG^FeTUbY1:%8g;Hczy>3D`my!v_bq5/ĶNF9W~ۼ]!#~tؙP9:J;V5*\o(]&uUaz.ýeRtUOmyݙ6^.W΂M< /-'e^yrY}sW'c''s[>o9O:*1Rt9J9USe܇Tb)@eHen+ScwcWܛ@Mj d+VdQ:'2l2<;!؝Ov5ߗf|&aO/>?z_KwE|_֝UAm֔72x}5r7 ܬGrW9/뛷5v5 &{i+k`>sN/NV|7p/#_X|q ](hlSw@:Mr-uzpt#aP|K?jZ uzpwFW7ܖOkl`g+D'h-*%@ԊJ883Riʁ#<˺ݙReKRaNw+Pt']炦tuz")iBsbt Vîнk ĐGnX ,(cfZVC#1*d/mmw&$q?AmR'5_=ҝVs‚Ө{5nuƮ/>pwmJrNDIGAD6Z}XsvY;E9eb{Hx8ny}T5/oz,b{>$aNG=|~vtM n$V-/^)׾Ng|N^؛wʗk GIcn2{cwbsZpNj|^2Oʔ:㊊hLy%Ӆځv)SԜc9vILumDQWL6=NOQW; pI0ВX3iZ"(w6:*IMr0g8:ub<~Ǔ0s / GwihJ]e2v񱞞reI[Q(g=FXjyWcyodj*Gu-ǾF57rݹTٯhL[]կ]>}*|eo9キ'偢^ceNV?7Gݘ/}_'pKR+"qx5@u_yv'.c'̑(vW㬰(2Z%ƞz6ӵWm5v$z.P ƻa_*GO"w?~ߚCjhs[[}jt?lEm|H *r#Yԅ`1k|}?xؗmw-J-IEK2&goeC~ʣBT sN}N8,ܖ.v繒"CUbsa_Ya]ߙ:~2FNrS9-؝o#\vե*L'ԅʕ])Io{}aY Q]YfsvU U!8Gk0cU1嶫яWQ:q$8+,7>%;L]g78ki>g1f'nm=% 48^:S J7{{blw rN%ɸEܒctBož1(g>S6kr6ps6atF#(itץgT$ba7btf9/os.FW,..]jw'w]qq9Li8rhH5L{utؑԇQGDXJg[پ=xB̑rAkjDgC4Qܖ.v Z7[CjRر^j{sV(}e5x^{:ߗʌ:z{]yAʳyenɱK?vgd}@8_FݪzQx0uM툡YkfGqz- vY;ڎ~#0YNcG; F^ǮĎK>NK{۝UUcI:gu-%(? 9A0-%#+cG4ӹQi{ ږݼX<㡫P܍'v<<6sr?f]?v}Bngw*tL[9=,ty rdkU)d"EO,t|+~nM4_eDC盎MwҘݙga/mǏ3ֵvʂ"s^#d*o"q]N up4C8^ftŇq<1l+:,hϊz&Q;nF /_'oӻmͥU QPY@5"C^ 2q~GrG֗ ?{۝N oM[aOZqӚznS n!CylQZ6HGH>!n*Pjӷs J\.Jwp"p[w;qE<7r[jA*e9=7,F0-u9 d@cp0˺I8MCBëz R3ғ匞zՌkzT_56Ozvw0{c5xȩ%vA֚-Vkꉳ8+o)W;cto9E=W'R_)<Y 5 GUj`2aA쓺?vgR!; n&nT+rc[op8Ł3-]ֽNFR(y4&Eߴ%t+ 陘\a$6N~*) ӻmex%j#~^P~T 22z*y:,ݭ-Ł!#zH; %D +JJuFZº|+ b]Sg|[JJ=-Ф%sآ%oKm|G]yEN+9GY+~/+9bEqs#Kmw 6Ij<^igF A8L]IHj}-_cHjcncs;ݙ6eQWw;H]8"Ӗr;kYW]s[n{ۭϲ a]e98 =7c!9=1w++~> ~R[s~lX[\!OgCh8lF-}SR[#ּ#:HN[:mRqA(zVԅʶ= 'u/blܖ.؝oMsfݣ5iR[N J D@5\BJ3t$M[ܝvY;6񲡻y߫;Vo\i!"ۉ{h! gZΜݶ]'c>Z!t9esSA89N- ]836(ΫxQh<|xtF@ ȑ lN 5vJ1B%y\c7˭C yt:-m';&!3s~8 [u 1=NLύܖZ;lG4,w8kj$`@#clSy`p~OMڿ0ntƻ{#Vb׻~Bx"]H d8)J/h=vW;x'DqR/~噿E[Hn[s{L#aUV ݎ[`&qfV {fƾ<7FV?ve%Nuv%NNCrKԞPNG 'Nǝ?vZ'5f'~M/_lRDV\8cp1˺ݙS2gpQm.;\CY?kjFqs`9\mmSYnq:s!tIt TvhM鿳v-56Nx_mSν=U-CP<>82BRjc湑.to3WRݙSE=ϴ;K{4Ucȕbn 5p8Up U+kN8s[^=yN6 IqN^:ϖUxQ8'oK]1CTr^cven)}c|0R?1u?zYnP2~Ec T:fybvU:gpRhc){E;MJ_Կ *gmmw+NP۠}¦(vCXjEUyb0#r%/\y1}cAq*qOƄ_TCc(N-mw-o\Gx*OrߔO+jP~Sw?)lg]}\cUQ,3sWp 9;y'r#ٍGT-]ֽǰOh3nzjGs27rt2( G^{0dAI|lF5Qgүl>9GlUK7Zx߲n]c Q3<&hi>cNLT=ޔW>]~8S] {ߟ%.}%j͍&|CӤS-Eno}(ɫsz[onԺWI#T[(_π¿z ]S+<+p&]z2Ȁt~/|_Px{#S?e#..?BnG*;w#ύvI;4wxhKyG7}ޮc~5vfĕx<{y[BCq*Nl:_%6#@pTn7heM*-N56$W}#׶h|7>@HI9F)1vu"*>5/mfvg~8u},wfG>iKR2Q|-;涼r:#$j ʛu25up&k;enmW|[ 7QGJ-"U"qE厒Z7b@Wi$i&mmw:IFm7p_7Nsȷλ5Mݡy#ϝvY;==;<o9L1:166ɳGOcwx,G=nizI(>^(eڥk4cs`Kw}Vkj]Yf!=|9o'S0R܉he}ՓzȜwމ깑?ƦkΟs2FW_q.EW<'^~5d8:P݅ rݙ,9\S6ƨʝ2Zt*-Kvu6Rmn͍-]ֽNtWosi(/QA飜5Qrl[**c]S#*]2v /s[n{;yØO̶əbtηut;dMv֎:t˹_3v_-]ֽ | sTڢRoMGg#)qzvRWO#s @Wif~ܣ{}:Ucs qyXU'hzGԎo:ϼti16:6jmuoYҝM3}+މ0*GOR%*rwu"{gds#W|to,/^ K *ow-LeDֈ]',GZ g욧O];}JV+|J%u|F]+yblSxVe+RR^Rf^zWHE 9e}҅wLAZ{w5bH<,}Ι"*Z<ߔΏkGBwbm*%=Lvx h;Ra802C,nq:ƹo #3 ׁݶfXK #WP H FAKۂuP4ZY[ئF;˺t*b8M`$ռ\j!Toʵn/c3˺Ybp"zG7IPsU Bprg(ukfc7t_X]R`#_ߓM `myy9/Uw/>'䭰B+n"p*5vI3XJ%dwLvz7އ:Y}Q'0GwҦ_ι[<'1)ws;r[jA$$3ϟjz,no殴cwgƚ խ);#|~blN}KV476i_ߑGbZ؝)0:MBWRt7r,=7x8 EWy=y%];zWX*<z*nW#g ]S5*s@FPԅ'zuvYG 7/ \$jHਲ]ub'avYjQG_;N`o(בVAK gpVn18!?G;ٹWٴṕk! nsRjů Uc=K?v㻨G_?KׄRjP2S֝0MKvܖW`m7gw'jGmKS% ˡԅRQNtf[6ܒctRطܜ~濬QhFIyH|fja; ʥ{ϲbYGtt=y/]SYgҏrmmwdžVgylh;ьo˓A\2iuүůT#;ݹ  _X y+!֒ʤBCRW.=*)~? пνȱo :-s#݅f?fT$a:clvV" 5uٌ-oh[ 1r jJA]}8[y}=7$;nyyuS|tYI6ߴ3̸tW-ry"clSayyle:Λ)0-q.Ty%LR{_)0/E:;K]KVP_HsD9xz䐴AS##~bk*+!s[n{۝R~~8nKJMzJb\ Unow}.k.tpMOV11]`Np6ɥ>1).Ly41;3F1RzJS?;Afԛj}-RYV:4QgY `u<PnhtO{dRv2cGŬ*R3҆+QrtMrC]z_!~}ѪJ`vgo0MbOBD;7 ܮg&c/"ϛvY% rrj8j^^G;TL@PTn$誣7cgSucw..J.wK*/5rkeѢ9".wɾҹd] 6h^8=%_Ab{z4ݠ-SRW-]ֽ6t+㼚sw#*2ݑ/nnGw[>F.Ό=ܖ.v'Jx͟0H^pq6rDYu* ~MҠߋG>)?vgٮ߯7b݀Rq6 >\J|@'Z3-O|vY;40 ѻ4v|M4%}GNwg^uъvѓo]RyH"p64w5){UW$'>SRI9v"Qɇu<C۶@}-nZ|Cb.O&zz^tZ+b'Kn?vYO4?{Ow73Fxͱo-ֽΪco[*9rl추ߛz+~bos[>:6ؠKP jŇ~E;H#o:5[wj_5{@(;ݙn4x}/ttq!QDԅʺ{sNj]5'c F@tz]cGVQ|WB5{F!Q0p*ɄGp\ݠ7&?`[ Ě?#n*9;mwV:v%v{kŦ.KԤ'JQSהfǨJ5O[~E͍<;9/4WGx;ӵCx-vji3~꭫sgn;զGM;0HL[N6:yҥ48ܞao` 9%5һm<-q4n]v.ϐG(^1vx;(q-|-NvDe,3@IkS~ Q8DוTj >2mwz[W="h5*ޖYRbL5m%uK4ѫPj)]%]cs'`@6\[oyoZb>7&1etɓ^Hw#[K|)78uo/}U1͇g<Z;oԅq3Ԃ˺]Q@3V-];]Wݙt0IT fnmM5,GVk͈ 1vz-Tf%,`qȔnjr.(vTvntpUђ$ݒtoѦDe៛3bQaj+̀ot{lIwAskSdn˟hp;b D^5M]_mAy? rօJhp8<hNt]pW/ \n%wxtGOw+7uU^c,Yvewc8'Q[]X-Dq'͍_Zx8Ξk'J'UGn<56gKWmVU]r.7"0rXd^^1]e1vf1Lr3`| s8JIMJ]GܮPvSX Fh- :8yDs[n{۝wxsNmǝ*_(nWmH] :n=k cX#renɯ@%%8@s껕|>g~-~3H0NgԨCbNImn[m9-|Zg'QS%4O~ U]Xzj.31Yea!9Qʜݶ^ Ɯ-\?l~;dQgS.Ԋ ۢ+3NGפYr(pqf~U#NsoD]!?Mх8Znv4z 35~sxYfSE&\'}%?J 9 k |8ʢ {dKcwVTUQ G)ntWД9 mTmBx_clSB.vgm1zTFh4*+Pccsw+H*sbn70؟|Vv4eFhVȇ V#ƎA׭[X=G^«՟8PlMJ2q{ꐟ0tML1GN.ty"ĝ-]ֽ}B-Q:7; +ֱ]9 B Fcp\`k]3vu%.g9́N͙u|H`ŝt{5uE5"E@cܒct.rRQ|tQf,Kl2qg܍,o7Y$78<5 |;1wly-B: G>ѿԫ{S5ή\aˇV;@Q G>Qt/e2wO\Wa9мR @ޛnpQ E JK[h7vΊ^vY;/YdG , \)dȽ2Y izŞubcsEm3m7Hn{FhgDQ"ө Btnd)QG;5v9s[n{۝g˛ 3V/f޴?9T(N%i t%)g,=9J<(1lɞ)_TkI$9]p-,t~';uw7ᣖrm (k]eM2vvlfnn¯ccwL9_B.t1_`}A~7K n—T\kޘ*?FrÍd{ߕl*-- YTAW?]ܖ.vg(챣 s*rU(iw~\ ԅepZ[r$|R<'B wWQ mJ񌕖Wu53R7 '#63Fȓv-.zVڜad(;KT&$©`I3!-]ֽ0Ō?7Gimu(O:|yTLP/ 2U5 >.vY3оpdľ| U#ƁFS.Gm?;\8zOѽK^),Nɽ>SrYʥIɽ>wr3xY 2.UYORO8':rfPVUpUYT8?AW~pƮ0ܖ.v'aubߺn WhUuM,0GA t]BQ^&;Wjtr;%$n Tbҡ4_\wʥۢS> OGmJ|rWC. nn {6O>N=P=vr8BCcDܖ.؝+nHs68QxuLRM&ҝQ蛱oc?Yh);WencHyφ'9uV̵t(W}i%f#6-qjӑRvs\Ht7a[7ty>TސG-* 2AX~ t%ΐN .Uhz޳WCV5%pTFJl;KprWklB.4 r3!ITzs ěmܞ*[&5g-4564Oss} u=4>WYƓeF16,|+(Fx4O؝}h6vh*dj>krvmf%ukʀ9=AnͱE.`0]~mw)sS'雴 .t`J=C %⡇誝2c0^ucՅEy䢃UQ{4kJ'eyy`nᬣT >ŝJ_rIʶ}+k5k=x@~,V`)mkf$e "Kޝdq]gPQny汳%sKޣYi`s}F 88CG@@>`ϙKTqbDenmuo32q"P;"FpSelnֽT–ïZFFOM q.> xlQI[iuosJ]5.g0λaWNG^ɜ:%wZNé߱n.Y;%.؝S'@)ԓ Y_tB cyUbtJղN8!fʫh9)lyhL-樿ǩc?Qܖ.vgdb+kLxoc+SFX_|Zhԅ\+5ղ]c@`nmt注g{<l_#.(NLy>2NCrvgDY(R"(|7M!( EJU3ܖ?DvnsЯ ytc2/7 ޕ BLz9߹ t"^[*c?9՜$?]`Sp*|awCyB(UOP90jSR[#x>ޑ?7g:~tx~/3qIe?8x 8swҽ$]w2Ih#ZH]sb~HI+u֝mz(UIen//+YGZQԉ ((GבsW|9('c56o{nFJ,ڱP>ྗn8~xn<ܖ.v'v\8բMF(']\v]9Bcp0˺? .~W#۹އSh\kWjto+n${ U8> 8o{Sfi7Mwn=bݹ&{ͽ 'RzAʤHYeCĎujجz~]85MqD%r‰{ T@Ty<;Ns$UGN}~P/+Hs%)YqS:;KhKg$Z8HUUElQiݙ3Xc,_M FoWA@In#wޞz;;2˺WF&w'w%TNl-U e FN< cwF^:dL:uzPF?T4W8MJLsK];[]O։*PL0.KԺ.]HkI]Q2vv `nɱK?v_d 5qs\g V+.Yt8uN!ǮŚ\R<mJ+ɲ[ĺtMpbW.s[n{۝I*E'KL=kDqgS|MYkejOp^vt+gA+v'/'9#Bt9SZY>κP?Dt5tgmmw;9E _'m]!EL-B)yeun鱟-R؝I]{Y] '|I?n]JASv[=H~;)hO KDp'_G9{Ww5d\=ߝrEW{cܖ.z>ǵϖpHQ W{Pԑk"t7aΔu#;kxnmuoĞ%dQQuk紉b<[кEgG]l鹑GѽwqO`яE?ws7nUdqzߦZI1)F\vcwjJ[(gs$GE?csN>FWmmwb @Ha . UG{ v;u78gRWئ ܩTH UlDzǑGϲIw~(2%3 T3@GvkKy8t2@GO؇ ^GȱؤW-Tu_yƦ#e{Z^#&U2d=:[r֮bcpxZ}vSNQ$t U58U#qrvC@6g㡝:B>Cg]ȯnycnmtsH=#<'uC9y|=ZxTuҜ-g-].w$R8gk ߽;_>u2AU>cgvI9AB#870Bq)ϾtMe/Y8njo]e%ۣеit쾞1+,^iЭC7䋌kj^ GP7 ꆱ{/LG{,%30pݝ/kͺ]in{E@)]ֽNW1̑=|.*s<~({dq*ǿ=Rj)u/s[iq>Mج.ow(Fx=!? c16+ 瓺# kcG(2tbED`L(1RR<2cmGI]2v"3>؝1WUVu^ݔgujI%]pѕk-]ֽ}x& Gצ#<)_O7yn˦[RWW.N_vY;sH\`%H[X3hZx"KSW2lnWfCe_@~v:V7aKݔ_zd+,*MV@J6Es;rency8##?fsD\AtMG{?;#/|# 8 Y_ő/Idgʷz?ODǏPC㰐^#UvIoO7j6B7@(/,d=n;wcDXܺrM0i|f.P~cVӥRl+eĪX[v%)87MLVil-Oh1Ey?e2dŞ8N<-]wIid^]aQ]Mceknc^{J.v((cm*X+NoK;^{ ?ZrEvAcw2).mUu5"늒(; *quEO}sjvG애^Jʼn`dH%~ _urrUn-]=AsSNdzxE^[]`%5LFg%U@xpݗocOr%lwaБ}o]H%߅YF]/ ]\K]\kGv a"g)2\9MG kȷzTu3>EXq]gt_ /su (r1Esϝ|$%]RCEtsvyS4|JkdqP9>tw6NAJ7BH=JPTL@RwG<rݏ݊`}>S8/eopictI9eI׾wVɧY?ve#x'0W(l!Qw(>E#]|;'M9n;Y0xDK'_<娣. V߂c}"?sKU*կ\x)*lzހo](4;%U+u>6h {|ߒfcm:kB9Ҏ1Oȭ:ǐ{$# -y(cϨ:̎u>k W_ULWEe.(4vYhnʧZ;>C0`Lmx3y+ k'#`lw>6OJ1|lRHt 3eA45n[y PiAEv8 ]A|80^*I7۝ʨxe`a.* DELquq*;qU.{:榼S?vGJgA! i!ʭ!G r\c;#>ѳsKNgmu.q?*ݭUu,NDs)ؤ|! [nF[y8M(vz{u)i)i&)y:tkX57崋8'30CSxaa|t,F؇t-cha)uݩ^>]^"Wpɽ:eVMuD-0/+gU3~s24qd-B :FJђnWqX;W*?S1r&ļ.uCŊVҽJݨ2d5=iGMNXy7?S<۬b3LM_SJveYOffgqhCZvQ}ov KECZCZ۽&8Mcܒ~.~쎘jp^y'cmX;X[zfΞ!,"Vٙ^L57ilxIvtCw6n'+.݈Wx9NK@{حRŊ-o3RN7.8EƎZMR5fçlNO6 VX-ۆg3#NKc]vk),g)klr<8ԘtkUX[} 5yfff1K{%9J ܊ThْܼnWq5U=Y'`97崋</hjUCCc#UV4v4 pdFN~쎻؀GӠe9 EM>7o2*6\rW3U3}*Ke[}#[ț\*ss뜅ޮ{˱Orne)t?v+zO a\@IʚV\Aqi[dGchniuScN< [L_rs L1./P;f57ht?v;cz_]j;M=0iW줱edl/1"b*3\L_'e "݆*!>X"vQ7dR8'r6|q \)QzyO㈴h5%ѣKr8p=@ؠ׷B<%Ƃ# dEnw(5wujj\}\z{|OȫV!xjgs7=T:合l+>y@ s _\T p [-9KT;Կ=p@-.uG *~duؤ>oi)t?v-Bcaa=/T94%?ʍ0]R/IK5vdknʇ2M7۝0y_lmGjG]1IwQD\AhjΤt?ݍTeNtâ|VYo5*Ug]iq{ Gev il"8*O"i%QA]Q/NS=YCni.#t?vGQ}'gb[eSYBW}?*yOXKc97䲋݁=H TYbeRrgSN{@}uoVXzUkq"R~QKőo#mtQ:arQ O8G &#>ܒw!n[w䉻[q+q-u -ub$ȇ`{{ЪG΁/g7!]vkg{-q=1v(mG9)iGHqt47Sv?ue?yS<;6P=rnc=2V]G %?[ #]!vΎ/D1p_58"޸ɛ*Z~c}\ 4he3Z׺ilDŽPч0xÎ!,jI" 32]/!K2:Q+1q}M"ݙ~s?-vq&z5yAt#LsS^Onoj%&Pc ->EZ_.q*nG=QJF~ |_-l[7wԮ? ZCWT?ri#M9n;}R?ѪV{nqSޔtE-ډ3q.IcO}ܐ.~Ny}y8F̭ڢAۢܿ\:zQ|lD s{#%e;!]C#3Aę8rst7<'A5%t[-)1l)q?6~K`8AU&o֬⠒ANcY97?QUAd#'!@΍9UU" Y;nXFmֆU c &lwԉs88̚^89üVwxK*_i)KHrElww˜-l7fG fVGTcW{>'[BwVި,c@LV̂kẑ'BEy [I?OQ.]R'fMJ~zfLT)֏ᇱ}yA¦{-|3@yWf8A֐l샕ƞB\7n[<%p$frRԎ͏M>܇S0qnkuk݁E@c_bFzJ iʣsy_`7[}]+Ϊ)]vlX>/YĩWz7^5 R>Pʛa IWT񝜜blcH JQgbvI7>%f(pׁ`%d CC8|JTҵ e)t?vvouxk02hu8+:8xإox榜vQ7ۭs2^k2pU._V'r3*X;1;blPnzocع`BUߐҀ@yO]Rqű\ EƎme5xm':[}o={ouu3>6x#dfɧ??vk c^kL#w[uUYS KH}luG}AJcr ؍r|Ѡ)ڋ޵sz'mA^{Y ڵ6hNc] зhhÆਹ3W Ҏ"DH"98;Yc%B:ίd@=狃KtܐSzoa˅$Bg@@ d[G^T:HsjP]H )C[h.$Ma\(ni|LL@~GJBٚ¡&Jbgc#]<.y\vAcwY*WYxڮ3M6%3Iס NEsTX=(Aq9/eX>(]Q鞔:Gւa;.M+tݑ2ѡRAWŶSHd9jiIwꀓD؊z-ptBV8i_#`e@t>1,m w{#U~+6ei8t es{aXw,GVU2ȓ#tEm/[k]Ǝ@MRنfzԶPřvmSu@0qIbpq_ kniuQxȶJ8 8{h]7^ C|b&ݩ=OGuq*#+]YASauݑ43M"GL%( 4i@ڢT&uA @v4)=z_YJ`އB(%g|(%›/~Iް&M֐Ɠ6)9yCvIcw$$|G`n/]8 E.1&J%.NL_|_{[FF줛g wZ/1 a[yB(itu H.Ű+QAKmouYj(U')( apIpxGb)\)UI:hԡX愔@/۪ݽܩ;hXB+7!{| B]ob#w8hZOړ} KQt}wЩkYz׳U.9vѮwU+w ?1j{9!umHvYPw'9WwXӡޭo-ZU.-q0I6=8wWLnd^ FwkbnE^taPҳec9!kLck8 r D- ;\6эΆjJ9.ih)]؝qfZ?Jdj %tE8]&nqzܔ{h?vPFBt#Hщ A('uÈH%g ]|sSNF^s"HoE9M,O-jweXغWĨS5rU<5<l؎$fTB[ jy8HKyB}M$cwu8T-VrF6ܕȫOQkřB,gԽ57Ej6bX9Aku/gYB)ZPo~œo/;v,O^!zA!7)&Hw2i!җkQ ]RC,oR@{{sOݵfvhV\[ ^Aߏ0v+:yMXpDExM ) ^6n شl@M< BtQ j_❌)82T?F)?Iw5u 16(yYB7KElw ;q "~t!Eype^%<&$ g=Aܔ.fN<2[oϝHb9EN~"> NUэV;.ki *il%r+YWܫ >hԝ|V/4TН"0M Ik ]ܹ5v57 WFz P6^R`/oҴj&ڍD.D8sSN_ۄ FE_ WBHtj5a +)Z{r?WJeQI %O<N`G45dT?)]_6I(+{矶a4+ރ,k$%pniuዯ/R{xEq=tf}/s']RU79>Qz˹%]E3Vqş16cK8@mbg%ǞrĹ)]vǚI-&7xƦLJ+?Ii%%UybIJ*9`RZ3Ve)ҲrrIlߋNr۷fϳDbj.gt{ŨUOJkLc܂מ k%;Pt{d}HZK"ٔ۵Dz74 c O]J騎$ކR&LN\5: JڑGc׌|^au~__KİjwՁz5o-N@G‹0 \z4Ҝ=ʧ|moK%[ s aW!Í!hzİuRzQ= `kk\wٳGUiJ!~@]cQu8!煚~W/nyy"9Ə~/1,^߿l~x~ץW}iVu³İBzNhTOҜN^U T8}AU  JZ$9) rB]p¹%]vb>b(-DKh;b@6u']Ro>6)ݎYrl~]Y@XaQwA/c|h3]R5 C@&R Vc*vG26OM#?nBrHr ['Ѷj,vHm5QNEl1@ͿF`Sg~eP[%jw=Ww Tf"VO"/&ݫ3h+lm~s;/AݤjB[99?^V(CՐ7 R%ވV-]+I Z~eb2XDz#DSփLӒtIESHqƎrUՐe4osd_Z;nQQX!GtIMsFxm4vw?榜vQ7ׄ,:u_ز{̴TtHۋ<&wY5c=n;ryp;$޸g`7+*nH]Z'[wcwT̰Y U oU};筪@ 3+5wSHWٲ鍴aJH{Er Kԉ&/DU G95fS#<'kگ޺X3j39PU{NSx7=+3&KyblPz_|kWnx_Z8J\88PƼ˓vş1 b{HcGs(MyU6=K4Dz)mxJeSw9}W)预NcOܔQ1XlΖ,W8n{n#X_ ײӘzA6tٰس"V-ɗ,?v'UdP{χMX:Ber@V9BG{=ly۸=8I7$WbVwJTV8h,]4tXsSNA(w4!: 5thij+TC^:u'A@Wscw$lwT~lwϚSgLk|5|l59fmFcG榜vQ7ۭ5yz 3Sͪp-NA+$뫀P;n)ߛf WCXqumɍ v銊 l$]4|VsS[PKcڱa%d"`p4$ݭ.+t-I{x|xoI볘\Ĺ5H}E1E-vuIJݲ^wܔ.fL\k|͝l^`kZHZM?L0u?v'0O|ʲJblPr%lw–N([bf]NW4R28nEB x#CmgL8 p[i|g~tPvq}Q9}Q{ШV<vQ7-%97*3LE!PLzj嗘.At/5vZdM9n;y"8˾t*H%zD] $ꖤ;REr;t=w"U>n;j:Yw԰g ;m/rr]R#N;TM).fx[Co@AnfOr6yW;6-\>{U{p7'.[[OCjѭ9Ξ6Y5|&,ltdc_7QvQ75)P]fMNOTJ*Jg[B~]GP#ՏR ]f\rꚛ)_^?vV@V BU64ԳBpBȏa.ITB<#Tr#Sz榜vQ7 +j'=UT-oH#֤ D8zEOȧWbu>8'ޛr I+8B^+9+*"g}P9ܔ.~~j(`\bζ]F'NxU'wD%5?贿:aAFoQ!ܔv5b}zQPoeZb,,J.dK2YS[ ú\>ѓsɔtݑ;/q_CH&B~cjʛCTe]$S 1cC)@F}`lLAy놓`tPzEpyE!-uE-03DcC 6m+Vit?v՞&'' @F}Xa ۃ ^`bMJU!_M7ۭcV7K /pxWVAcU89stV櫄|#.qրszs'CjJ*XCW芊 qs(]j`ڜLHC޽+9C }](9 Eؑj}.a]Ў:O BvQ7۝jߺW}${M"`u=6J.[I)GʁtI&䜂?#r斜vQ7۝1ݼ,{v RDvϠ#IA.z$hHܔ7odtɎaebDVE:7?91AB >}%GX<=~3[=;'+E驙EV1<xSV9;f?[U"+6cYGoC-m ]m:kҍ+o)lEm6국7v+ 9v(=|:G>LϒQ^K?cz̄#"}s7cn#MNU$֊ZL]Vbs=x5S;1, I9T{uS/k~L֛R޻˿̱j6wΐwJST5]m'bIG8榜vQ71վ>VrDnC}Ǻ\ޕge]Nߑ+?)tCNJzP:7o~&bdZ12&}mDau96(ňwntYhg<2g!Vus:#\TT^E/qsSNN`{tղ^Docu;?ǕVd;k+8W߂}r2v zqb埮(; s+*\5o#ksS9u~|vK$9:z^~l^QK]QC3t_"5w%s a3儉1Y<9_E鴤KjyN8S8U*i513f#vDg.~bk85śUҰR뿂7BYez>Sj TcⴤVߦ{w8lN['1]x.5vwO||?ݱ&WX+NR.pR0 gO QTT&d0%*8M4;r(o:,],r6FDi-[Lwn9HMy׮lno|5(bX_Wr\"xWgGbCa4uhNHi S,b!nE (uJ'22% VX]^q Z.bܐ.fQ!5e:W Ym JH+LW= f{ıAgĦZ}]vkK9J0UJqP/nZ*8.zBWK8SI? .ƞ~)ܐ.~ujZPZF ɔoX.npW/V/] kPӚ6nw؝ _`!P;t@l;G8{sû\bBl 47崫4J˷r prZC^.װw{%]D%'#ؤ:tB>m1l> 6{zWOF+*ma.2I2IEIe==lzɽLtݑY9SmS}*h *XS;AsniuX|F܋ xWW6ߎ}l5 ]D܋sSNx9ygpG8HD]^E(0Wa ٫Ҧ =pslP!rcwJ+1'vjvg*L)!?jlGNM|EӦ57(?Hoc,Ł_w%g/{ɱY:t|գhAo..ݢhsSNp9Cɀ=QKƙt 9(5ubiU^6*J{l]Br-jXGuuWYBS| ʯv;nO= ]k.zv}^ AT@#ZSC{SCJLcptmLsa!w\ՙp6QXL^TtEU 7J7blPלrݏ>"O4PB=Wbp Dbg!o*5'^qE]6:ةsniu#$t ?lfODs}Y8mps3M9n[!zdkCo&|*\bSM4k5]I)Qwi)uܙZ~*E7(K[vB~=OP%NGP~KAQOat0viXFѷ!(u.dW$ 5_QsS6lwxnc6o[Ȍ:M>t =Sf^ȹ)]v}Xe:ݡ77#/AFk/z\uY(ȱA}3]kfWz#'%$u@\DBB幏;qTP8ؑ)]vT k'nJ6&!ݪ!ɇMwMygmyFcOinʫ߆׏t@,?ì Qc0wIހ AG =CШ$O:)?)̓^US?*tZzjM$Ů- #|_S_.t8"gmn}ǥKI9Px2) +NUk1g/BcWOܔ7Un[W.RKWF,"J׮z]>^q~T8h8 OUvV ^ :[H%‘#"Ar:H FP +98E53]E)]MZ::;{v4UD;K=Aύ!ᏺoˈA1Kn}*ȓ#8HwꌉYԷ2JȽt Q=cEǤHknʫ`OL7ۭ&`3@ 0z:*FkRN#o\!z{b\dTZǚ"!Rq>&JΔZCN8N%؀4v@iniz[G˂G0jJFw4h8,͡+*N ]@Xhh)_Q34>9SQ;sR#w%4[Τ[m9աG57k ^MnSn{F $M9pNشchc)KřI8SդK*=x8f[rElw )V9j6wmuFl$HCkoSEƞW2u*7>nH8ǪC *uAu86(xظk@B @JqЦH@^~ާ2[%B3]R˓XtEHsSNy)wK'NDs@*:RU2 %1 *ؤp2@#L:vGBDW-c"hBE](RQĮ)ގ؝[;T81SƒS{ VɏM/䠌34T M)j%J*_owGLbVCrYk \ãwl?DR+&߼On;})1yq8nV]Q=)%tTkx97ni)?vwqbAJc-"*ar6YtL kn>;ul3:z.p(Ls}8^hnRkj] (u87d3 )3KVon]mn8}lRVBNKϲ? S |"5ɰ|ga7Q͸vl`zcg#䴋{e Zy^+3*~Kt.hN"XJih뢹)fçĤLXaE?ϪJgB>S[&8u86(ŘFϖtlT%"':&P̓d*fwTU~F=hbP rEݏQ5l;&KZX%OTnm&wXY-ޫ!]t47CmL7iO4Zx긢t*'+O{P5WѬ3CEvvG,kَ_@b.-4_T0BCN m\vAcw#Ok8]Fg~P~.gZΤXI ]Thc*Gz๨2$UBWcw DX$1c$V_xa7.Iw8>J_'DOɋC}٬g 0E1*gwtI8';;aMJ zvNvKyi?\j>CSzx-ѣG򣛙)EKHQ7OFֻ A`t\5G!Jo3M&b_7slf8&Xh.]q,Bog l_ +ګA`y'b8 6O|j AȪv[:)|NP}qR.BJǻ@Tnݏ wv%ךu(ض(yiK*ZGԹ>?vQ7( 8T9@gE NIA`h^YQsSN;AT |s)9xJB# M@Wtq:';5?|Z?vG> tNqyZeysr*j(>ZI tN^6:Bc7?'knʽXt]2Um )O1ij|ly"7>ow Jw#c۬tQ ,]AICрuY[.;r516(}ݾvElw(XGM3s mWU?PFB5Mg9f "ݎ cvHSۇ[a;+c2()?:ՙ-,s.4"_=Yvg g-0Puc4eo^W={ySh+O| \tݱW#ZdӅuŮ]BnUKy֬8-sM9n;叡pPwdq:خyuTtyV*hYԱ-r cһxFiu)P89lY+7d vEWL]s*қvQ79Ԓ4uN[&?=v/}%"*BYVok-=!?^P&6, F{zA| 5::sr͜&JwSCxoTe%X>:]ׁ9^Zy3EBkq]amZ+{I7ۭw?uS"qtyFjeѡ0׼-^!7B$I1@kM9n; 'y#ʹ#ZJjWn*Y-辮8S{)w6j2{Jcu6Ɔ`73bBQ4Ax*I*7Ax1%^ 5&t+%ίz狰͎rqGCMђ;m:Apc^ܒᮙnH6G)BLOê= m-G}iUW'm#LOa.Y F i Ycz[h^x5+tc .BG%^H]nL ;_]@F%ͻtvQ7WX2^1+,5F{t\RrorElwŶɆ  !OP)9.;R,47ni)?vGσtBodp*3ChzG+nzNX#a y'tLa#=|HpLUpG4z$Ji$]Rì ):߆@9n;PFX@=>T`_{)or/_2]/j,#z&V{-4vTGM9n;@D1RnLNA벭 1W]Qݏ!m ]Tzhe4[vԤ2EWW4 2P$U#J[GlBWTw'8gHcWwjneVx|/K*6X'xؖۏd+ 9ƢnQ**ƹ)wKM7ۭRSPe0R|;"ԙZAu "NG 4iꪭ)/J3lwr:&. .}ɏ\5#]ȕm"EL M>Uc(2loe~RZɓ.Л$GFtI O o`IiɾxynQQ{ ~gϺP@TB>B/7*S% ;8pnɋZƘn[g՞< h)p1&ׂB9UoW?vOWbӅȿaV%5y&`7nSԊL{Іch¹)]ቃJA@:AQkhi%H9u]T |ZMJUCN.> ֱHbXdeϐoћ䷹]D!OnwikiƄ;ՔwWWA-tEK49g.9vDsnet?vS#'q6$UD)>w3]Qtinʗ}&Ȟ46>KX q:Jvinet?vlcguTi;hSp\+jF;rui Z-[kF쎰}~Ǽx{Q#JT=yS~ti= /+;H)YՓnu__85ݐjvI7ۭ{ˈCr&'Zfb,vZ-VV;Qh8eTc禜vQ7 AY]hCpQ;L3I¯%jAZ=]|y![KSR#qܻi s:U|)wP,\xpgMyStQ^$bVmogߌ[ MJY[vOiH 9:iecJ )V yG܋5^o}`XIVD8٧=S'9Ck6-.Qz? U1oV}K>6)ՐO51lwR ߛux?z%_ A);kQFNi17 ,z4X5]~ҍdԐu.5]R"/<ųSt#-~'yTgxiyB3ʐ9U5.bϖ'x̣s tEE8 ]5Pع vQsX|4D&t!7Q&=)B JcGSEMTtqa֡(sT1Yη9^,k~#Q8(R"=Gѡe[I7ۭe ^q6Զkԉ{oMא_oZZၺ\=t*8(،'li<Èx@/~p๧"g kBcwo%n;|-v5L;qc]VnƔ?3t}3&_gY\[Ps<\Qn+.6{-ҵ&>6 rodvˏwqǬ։puboAb Il3bS@ou]v"f!c)zGS͉ƸZO *b ]"bp섘vQ7Vv˜h}ݵS|)yw8HwQEcinKzCvG!ՠBxrC Z%RSt+R钊HY;v#M?v;Ggq>q8S&杛~VrAWT'J{VTson67 S~+5gu@B~Tm -=@ɫ*δt#_XsSNJ]l=SkEZE?֚OaN Loշt &z'1Вn[>}J}~ᕢaG ^IK t0 57崋n=cW Ņ!~Vtk௴(|wMj%F%5  v\vAcwT}"x^"Jo3,wS7ݮN? []VDiMn ")jq9zE@zS~|:3CmF FPҵ;M >iWMc XwՄwgg{F #sysk/|lx["FMcDf;mͿE%4[}̴S@꾑 ("PUf44𧺽 Kk(ޔxs2BWTu1qp[rǾzД_4 рkS?*SzP'ڌɬږ^>MZ;cj.39@)ogToQ)r;.rsei-`-X9v-9-n;jvW'sl1;z52%ST!c_S.Jt6y49n;W`dN3y:bnjX MK/A3Vc:ZCkvGM⽟Eo?+Z/k6Sm8mi_47U WM7gK@兇[6>]~^&P¸ll->f #r97sit?vG̢#0,Xc?Yѐ!Y(ΐoy xѐBhڸ clRz~嫾u݁`[/:; +Ju/C-EҎl-&}ՒWߍ) H r*x1{7-e%ߖe/]P[~ż{-]̱Ai_'䴔ݮFxWEnw)Iq˷2Zz|ln.5MJJ/R7۝p{-l(p8TJ.;a47崋x雹}.==Lɧ|J;SRF8Xmr6v/'vQ7df@?8ÙJo!N5ޱP>G]R{[`+.pnɋ2cwXFW<0ozx޸<Ư{]QƭGwU#to&5/F[12\йX#DF&@nO_tI;POi)uݑ?U+m---gITʜ[=3t3WyMg3؝1z!]]iNd`zul3F`o;vo`Y+pn;rG#"r['LR也Glѝt<܋Q|<&S#&_ʟZQӞ䡕Kĺ`]Ih7UeƖwyؤtJ`䴋_=ɛ4:S?#ܐ uIM%cD< 8IԤ펼AqNlnK|3\zP)8W wƮeι)]vs9'saҎ7&J =T"κR4t+My*]{Lhj὚UW/YIw5ff&]a\7=RktQ'nIHtb߯NA WB#/]RIHvO.:i$!]ڐ>LqkA, &s0y_BˇctW*YJVcϵܔ>쎜I?sq >Dj|C؂W;;jF J>~CN햟Eky,I7ՆT;f'SQNouI-%'EOsLn.׳Wz\T&-!cW=] MAt⣱7WsC.[MiAKsy tֵ,*u:O\ Åc7OUautemw ,[k*.oI]rS!O|1#4+snn;1gw=oۚUŹc|2t["g8Yo{s*;/'iV3EJ@z|_S'q][f'^Cߛcܔ.fw WA8tNsB3RuW$uKr3KX;.ꒊRV4tڡC>7S[ {#|s-rZJlwUN8Q=v Q)jnkiV3P~87[yOcw/}" fԮN(̓m]%ݭ|3nc)uؤtITElw'#v"K|f℥@旜g]NDT_d{[0('W=fNc{ލ zO*|VQ(!". c{:Bkc"ܔ/*NϘw>XesI.[3=c?h(?.Y~|卋d_">[>Jqb$ Zq*v֫FM9n;pl3b8Vێ3Ѫ:̴OytN:33G;:-jnet?v5A!^]yV7 aXSe *Pno@;PREe KcKc;ص(1k%q9 +|ǰ  cAysKN㏥w`Wn*nxBaV"x;.a0O7ü%]vyͱޏ8vܿo#;ixmFdrաk[a>3Sm8z<:ڑ1o9oiE9n_}[3bhW+ͽOދ w?Ɠ9ؑ)ߪ17lwZq[_DcWm_7WPсXBIсXsS^h87kflY#y܈r"RR)kŦ%iniTpwOD歸VZuC>AԍA=%N8W|:u|[`2?]Y׼y{ͻc;4n5ȤXߖpiy3ꋻxGD8O~3sObO$e ݦ>s(ON8EOpXGOn;32ETq{ʘwԒ>6)Ǹ?v+%x+qP܉PCCPXe"&'ubwgo{őcܒ.f"AjQ Qt"CWԎhMٔ 4}XsS2lwc\=Fcŀ׊ -L-`aIT6qP(ݪ;Dpgiupo 8v"ʣ7N\᫆BRѬ!]v>?#]+Z !Jρ/]iFcw}|lR䎭#^.Ex}UQ 8UMu;Iwx=culoC6QZny^,gj[cWq._`hj!g%+uIE&9zDWD&vI7֝WULLYq#aE]rAJlPq&PVLSM9n;azGwq D&4tVħ=-tDjWF){q{<&kej;2⻟zWrAI)vM>6ZIvoæ;8Ѩl֨Ƚc KCn ]Qѱ[c榜vu4x{ RTYk ]5ۄdXc+!HђgD kgu9[a94vFI|M^ic /s/(1IџgSm.24vhnʻ箵?v\Mr)!/=C};D ' I2}HD9-n;b @4u-JX!_CG]|>rǺ!_*n[TApgQS!?ȚQVv#qI݉X#Ct!]ˑq7H]9n6蟵fuR0UA]З=94ei_'ZMW[O9?Յ6^;vdu u[fbUsC.;UƚiFo)sF a#{MSudirZJlwܟ̸ۑλ. +Jy\{J+j{/q@D@F;xin?vUXS˱D2C~W5F&T%Ǝnd.fwJuxW^WW L^^Mifq@(30N a?vϿZeZE|4pZAVm5HWTuUDĻ+ZMVFd?[+ʍݖQI2= }Dql}ZU!XؤMk岔lw?& 䏱[Fttbieb:BwQzѳ{Elޗ>%qCT ĦD]+uKVD:w-Ky"亂30 C>,<#zz˺˟K*aANt*#FsSNN,Qw.^Ք}܉}ޏk#h%u49Lp\i}ޗ2$lwܑ+OȕnE^cNlpA"+DPRcRD-9n;S(8CisؕXkM.7Q-^.}ک&g]( V#NW&S5wNe9JroEl5ne9J 8{k!]v.\i>QXּ"J˹!ߊ}_6Nwy'zIaͬV+qx[ԽD[-EJ+/QTTdR﮹)]v?+ࢤגL娪ݜ}ԥc'??vI7۝gg0 3t=3-];}ݔCcwaNɁ<9lyDT~:%^!2j-x[<[3FZ.f+Ny>qdsGG}Yy}l}/nSdmrEl~zqv(zpZK k[F.ߙXA tqs^JrBcw* 'b|':ۛ1ĒrQ$9W*M>`^J o;#K? c^|;w;wcׯ#S̱47崋Z_D:fS>t1ݡcGn AcWUqnElwܑ;= UyFV<lI,"Ds“_IcxƊǔvAcw Dq&:aj] ܊ 8Kn%5"N\JcGސ\vAcn?+GC]}:GUjӽ[qP/]h=զE~2sݝw!P. ky >6).vn;=Z;" eEMHGkK^NfTW.5vԌhniT6IcN|L8⠊} Ʒ}c7ӂ7rSLSq}EkniuzƼ~Tׅ }fSuz_׽ڥ^-8u+>ͺWדƎe{Yat?vĜq-\YCE)fWȏ>c(OwhI3(aug@ ( * |~ W~&)Ͼ?N-];]0_ ;w8iwww1ytAwwN~U7AfvGk{!ߧ5/z MVe4f4&]RcY@zcrElw?Cʭkj{3);ig|j.E;gA>8Ȥ_0vƇ.ף[7T32۲.ExmDp({Wc?ӽ?,:.MQ(7f#&N1Nzę4PH\ɫ/I4QO06~K!R@POcw/ 7a(K۳MԵ鍙zWEȏM#A]؝0;& "ܲG} w䍹غ#sR%4v"ᄅ*[:OὛ]|%|S' B݃x$>ܒңVeaVķ-Ù;YUQ(Ϻ-"\U4vܔ.fЎ9SrwN::[c}TEՈOߡ]u+1ǽvElwc_/b>7p1tSm cF ]D84v7MwS!-AΤjO9Sʷ[&?'nAEeȧؑo)]va dM&jUc¤r\QG]lu d؁8AFN \kVy|[7>r zTX*VSqlGu39n;5Kz/ M ƧoI@Q[4v=/[n[kQv[7hO&?:d{=ᤢ8ח.;ݣ?v.n{=A)uEY(ݨ6NCUqMcRN{4YL|^ot{w*Y(&yʗMT:SQJ]85v:u.vUMc K }u:jv WUtEU_)>Df+i,87 Z] 0ZWgyi!|[*^n\}IMw5Wh3uE+|,iBK+K9lc*KQt?vofEe0zG[ /Kj:86:v˞k57崋WZmdAjf}ݲAɿ}$+ITnN WHsH47 u?^$zǷeEr%>7Mo,AUK ̰}lR yrݏݑԸF_цwpɁ1C!|)h}IS S}}sKNg0g71!WmĞ?0UQFaUܠ(oA8D-~Kc& D4bmKt\c˧"Oc:.2w]HQ .ە3hrEl7[<0m+܆Ҝ~k B$\w/D!P[1 Vz7֨M" )^5Ҭ`a4+mm5ͳHۯ{b̭ -F4nbRsSNWu9gۺuR֕ur:l3ݥu6vjt$lG9(|݂\R}Ӆ#GSYf.ziMy܌fcKa\b( wYgsyĚT]CTNn-*Ec~-,PbSUBi{1Zt9bf9ػɧ LwA:UD5uy~|lRtSɫ?vRJ&;c%=n},w'vQ7ep-upOk[\/ml 8PVܐ.~eTm_ #ʏ;G W *Zĩ*])4lwU8-UJ{&@b˾T m*,|ϼt@Vhnet?vBGnm18M"ʿ+]:\fw]-jl0=mzʆ,54uEG7N3WIq.ZFhh))]vGAOo&%8DEb|B5%5(K1cݣ(sS蠴?v'Tp(Rc2)3r;]iAАPnݕV4rElwUq˪t~\І̚b]|$*!kq݂3*ln#ݷ/;Kya'ݰz[MnƄ7/㸴+)e[aH&:j&"}j0~a?m4L z$.ObP[>*T'4[=Űھ:~C;Ėy#V8`WzAC p9!kLcE݀oyKy?7VQ8pԑz&ݡџёK;-57EM7ۭ3=@%E/T ac[tIM$3jL=ɚr5k؎[K}4"l4QZ>N {[^ ÚY%]svC^EM&XKQ]Vf$fuu#\Ϥ;7>=rUjGMyQtq̍<~%" <E.Wr^$!cK7%/Al77aSc~W{Փ󿋮DsM/k؍ڡ51[࿊Kl6ծRf{kS\A+C񵠎a`?eеɽ# vyU\tzԿ11ܱbB ڭr ?v+`u)ؤ ǥvUZ9iDp хήu+ q:˱NcƋ榼*ot_~wѳU kGOHrZU ?*a)r;Fu?愔@/|?_1,{ jBxg36bSKzը՜e[cWgL ԭAr>zb!tEMsR›ۯ)_n[U_qӈ֎gZ`ꒊ/8BW]#E([V.g{o=SW^kytaHt-jbwM^}FZ4']Wm*J x։q:R(-98Rͤ;Q2q"l4WNcw/JܔWc7Jȇ'1GRX(G f 5$hToe9!UoEw<auՌxB;2\ gm %TԤI=V$PsSկtr,e cqLw49똈r,؄3±P74wElwVW+fsvڄ.WtB0zIKеMJ_?=;a.K=#ܒ'pF^eNÖIVt4K_]v\1dcR47 #b§ u=QqE |zM*9^Xx5vr47ٚn;7Y}*U><.<_򣿧{m^5Ӭbjؤ*]NkǑo{9*FXHpϛ˥GwΧwtr'!6H47RZlk"gQ8R.G 洿^ІWqpV<]Q, f[3vAcwRfv-p; @gQ [=( }wA2n*Bh]57Ek;NE3[rt$G茺;Xı~}QcGfvAcwcw*8ZMlx,TPԔ{7%5=L7=[[sSNr4`l֢WM?֘ qE_;rݏ\<(jt6_neɯrM1py\领Yc|ސwG`9BȱfE~]> k *ڊcYE9 47崋(f-%ۑWg~HYI]/PUXؠt |Ya)uZr' RM䚓 '[뒊$Hq.VWIrElw赂Fg ) )<]M>tIՈ%]ؤRt}MhR='ss/z7u5 .! Pj C7,Qu`2V.f+kŽ;. WDn\ F]P[+S m=SؠUU9;fҌB1vk@SV]!ג[wU胜"x#6}iWH]n;chKvN6һw=j38()}lRߐn;)`\,:p#pH'JPQ9=&RZ2FcG| ?vR _Xg'f 6 .Cx}lq.3tNXsM9n;ck<0,ε=u(x»(ZșH]Rãl*gA@0䴋tMC@R!=5?uoq0{ єuq0/[Zн]7BilZϴwU3VY&t+w|ֆw)ꦱ#RsS$n?vO7@Xs{2ec/d:kwcIwu7-6@h kvQ7-6)t,n&]Ϗī/jk.Z +҆ nHL]wŰ aƨ]fS59>qJn(z˿MrY)V9 @@9rElw%IᱧT0 ;88TIcWTU7fwY {?Crh?tQ47崋nmXǓŹvKU 9V7:>+.w(&%u8T2tc6˸3L^hn=cVUB. qD<)|js7ݩƧ;BБ|rEl7FG mG)/FsSROs)b 5&(ΨؗP5%>sWY' HpK*i uWk㚦)^D+ Z$+>+b+t@[XጛtIE/dqyKGAY+䴋:BcBš|! wylj\vF6n7u(uAԝvuEw%Icmw8ꬫ#mQpT=5&o^ %q.b@ӐsC.;uL_;VʂRj5(X| tgꎪOa`>HB9-n;yרr -0["C <]$&{YKNjH/yMnP|tG^.ti=1}q$gdH]4+nGB&]73/sO7l0V.#qp.μBsSN&P? İ},b^ {_龜}(nb6rsݜRZcz[雘^;]/|I<œ`Fa*QIG*!Bgk+)p4!zFiԠ#y;=9)k{z(. S×#"G۶ðmi l[r6iE]ؤ#aXwr9;Y%_Z!whYZM؜=tѢ?crElw$1|H⠳B-@}HDVhtŠ~'G;"inʻ:b 5.zI=Ӽs)\IЍK*#M=AsK[˕SЯh[<.l C?^vgSv/B1clPڮtS,^j7"3yh$rM-_M-i֦kHdLdTKdvG 2y[$aͷQwtqېɯ(%2 c@"sɜr5*g5%}]LFe*%)j:ΐ/3ݥJMh}>ȻCN/V9B*rTE𔲋w-Uoq鶆(uR,i>AMV%۽y[߁f{FŞ-n+.mnpIYTc7$ܔO<2T` #W%?j#gG-lx;T;gݐ!쎳z6?[D2 *sSaɏ}MT}*G{WΜEnʮI7krH8[}+uK6G1)u?Z~CIEҮ~Cܔ.f-fʼnnٔK)̤B>6>?vJn\<wU"O;f#Jn STDž8;-j=xaKIW3v#~еMJQz󏰔)k=76 uʷ[P⠵tZAcwjnʷg?v˛x0nm;+$FWܐ;@:BCdJcd4t cMdn;eN:~w Ÿ$?ܬ#R8}ǹ%8}? 'ұW7yU~ݱDJ9nl4}v5ƞ[YsS^tK5lw#Ucqz\8oqRw!Orƺ %V\NElwDĈs8) ]L0Oxrj)vօQؤ<"vBN;<,]ƒ{hjyC\8l ,߀GTA.$ޫ Ǝ{vGTi aUa ͷ+)8BW\K{ YrT9#[-hB{n5*=KvtID >t-*87崋KT5`ۺIJ;̆ͺMZ棏MJ71|k;JOh{,Ts)}NF2Q..ۻܔ.fcoxtgقئr|ϖ #L.gKq.ުy {?rinʻ"Kk;J/<G# JOͮ!`{Lx ݪN9n;`[]>*֖3XwkvϊU$ݡfIs ?ݽ^sSNl+zxU]$NC*(U"*)c%U"VCX?_}n `niuc{ő1ЧGݨXU$j'xu]X'ؔ/RclPr%lwd*&{Hn"X=SM/W%<䠢ةsK:[F~_/c|Nt1aÑt#ƧOGoJ"*>6)|:b|#ڂ1ȫ9[ tEiOU5Sat?v< O%]>ءHxSˊ襺Oc;"=dSvYg9wmAilU1OcE[;Pˌ"fIc@Mgsص v'OcnɗW. 3o꿆;~Z{yTJƒt`ssn@ہ=N;CR=sNGƻX{vQ7tU"ε/]Yz(-3T.EqAlA9n; ZԝRȰ]uw3(om+tٛckkilocD{蝻bӨ)l_>tIalXn{g>1^?vL]Rǘcsr{oET'G=&1ݫeRceԶ=b+K=h ,YHΝeX;NMLpnfħ/- eXyIcjn,S~ xpu1ƚIZ7Qc*3!3 +t^ L U~jv;Dls3c]T:hWT\-O!eoTuUrògu[9!kLc gGtS{ccc:v4~km#.:K5vtSܐ.~W mpݷj8 Ry/Y[ȯCpmQE[$CW(;hw9PNK0 gɋ X@›'(QOG;\do+`57崋Hyն`OXG[#\;JW7LH(TXumEgrݏr0v\.^$\# ËT[ 'Zh&%' LNKN`;7%M%_Z(Z>J()(u(yQ #מ8Ѿ<Ⱦ⦳M=7GAMw3t<[ '>\.'-076T8ȶS-tmz=Lť÷g4 4&I7նƷON_>V^DśÓ5j9BEsyǶvQ7-^wOuMrCw& {(F8Nal|<䥎G=Ocnɻz+n[>KAl+:uUmnMiwMYd6Y U֊CM^t1lwMZCnM=f]MFw=͐/5{Kw榼_#-`J%^ӍOb'~0p%ݥ")%~3m.fhlosSN펻JD;Mۉ= ։N9KyLKu]$hah䭇] I삓(6.6lp(.|L&%`s)DcKcܔw$Q}PM^۔cz.9}ж&?g9(A>Bܒ.fKC.7]UpxCMtǕry+q'ݣ',:;t'ܐK\ӡn;u}\_L?HHEerDy{Ԣħ\֣x!i{h(^tzƪ܌ N{uкQa']RQtٰ h79&lwrl8e7*vF-`.H.ΈSlp`ihnʫ@vGzԣ?&Ml?.O|8c.5v47 Lt=Cf an֭dK>ԣKK:ܖ8!c^M>u%McuQut> bL;B< q#].k(mޟfElw_ <!wn7Ea ]D]R"'N-aiu`FUݠ6“'B"Qg':_XIw$Oq݃h$ MvkMf2$qݎJէ]E%Oޫe5{'򿥋 ᱥG `d{|9m{~֐/.({'b9]v+o@QBUQKP=:;<3[~=rx_Ϥtdq6s7b i˝y߹I%0~TQo? HM88;#9UaormQNpȑtz7wNcn)/?v(gŎЦr4־-* {qw*y4*`AMt95Q ͖rEld88n(]c.}f芪+SPRpQc»O0 ʷ"l]vLAVn h_7ƣm$ݥ}Ƽh#LFF(_#͢{BO<Ob$p#q0'i7tIal}zRtF+0F}ָgX ݏݑ6OaAS7 >& W{= ~qR'N[| IN5}ŧJ:y=#^zվ@ -ITju>%6o&_bUP^NAij7;+uIEq3,)oiht45fr<&9u FD$*P~oW:l|pTmRv^È̗ҧZm;0}?.~qIhvQrEl}U7ͩ3{Obo(UJշ;_5PtQݮEoŭOE.ӖtZ|pl'L/7iqyiZ f8~.jSn;L3&uS34@ͩHKTāNiiniuGfC-P:HK?GvogiHy_<-&6ef#]" vyS'tÈP70^5=fjC4嗺gT J7fR7ۭߥ+j>6p2FzHQQ[H"jQ\Tdc)Mؤܿ{BbP<VP90ȞI [}hbi]]Ʈ&lw-A8HKVEؐ(SVI[5EE{ܔ.fu\hB u~3dǫ\;C^銊y{t[l%ni)NqdSI!;5l=;v.EL ]ԃklosSNj4]iiG^ #zŠG^ IzAe~ rlR4{1Gfct`xXٰZMS']hmzK|wN;OuyZ J>uLZ#oEC痭Znul?ɂumNς"pϐ3 4<4v禜v5,ilOD9ĺXu$қ*e]R'arkێOqne)t?vt T"~eYSuEȋR?9颻|Oc\Jȷ"u;xy_agro²xҲY]Q9']$k !MUXi헲ᷠ_߂~ǃl1¼䉘{E\Mr㮿;m큻rJ0(T%PN033OEloڮOѸ} Rퟷ= Pt{E%My'Pr!>˃ ڡ\? ]Q/ }V;AoE |Á? AA[n.|v?Zm\.|c4T,Cq޶Th%jA- g 0' {d'lw@[ 4SQ YxxqNqmӚɷ8T8]CICMNc{j%cq@E`ǺBWUOb0Pi櫞\vAcw]fK>q4Xa;7ޒfz-zF6\D1=D Ŗ.ܐ.~xfXB7ŃܼRLޣE E,9]_աU|L<_7Q{M *v%/0k>v-M9n], K˿3dQ3T5Y@t m>v|;5yPvA>lkT2@L{Fo!9xJu4+IwTQq.] `i@ܔ.fܥǖ+L/;z\Wf /H+tEEQ8[uq'%-Yώ- # P7(vڱ[B?i*k]ranRfSZiܔD1-(@N^Ɩ`y\5%uײs ׅ sKNK;J 7(u k,SO#,/v^Iwkr십4*KY·4vgvQ7ۭwmbu աcSj;(V+tEՌb{PPN9vֻݽGbQԇʟH('AZ]xɣORcw(a'(/,ZxC>_JP)@A(n(5(vv 1E~^p.-/+] kB䠥.u96("~AY|q|DY˻ʅu'6j|`@礞nv"Bcw` v7Q(9p= uNR PrC1w]R-ȩꇻCIc(r erElw OLX RvõwiNr`v]RO.\O vwـ;^"IGuMM?o]Z]Qϼ%]4vIG}F; 4:?SQ%eb\1ˉmG]G[f$떣nDK]-!+|MGEIFgHvlL|V8Ҏck5|bPg;rnit?v$cq,`u*Kwy+_Ή WjnʫYJRN|=y*(3 x,%`.ܳ;R47崋4ʳt!%d4f{ u 3_~ݽK|kZQxܱ.jMĄ,Qפ֔r;.k8(]n5Wc_57崋U>8|K69oX(XK*]8SƎw_sSN|ݨil/+{ޭ's.?B(|L]R'lX$ Wrڵ47Q UK`%OuImYPwwM}5Rt 'mszmLQ"*dZ A@0qji)uq\x{1ǜYvCF% .0X k@ e# lT%5P`(&ؕzźpTQI)^աUzumʬȺXU7_?Eʌy0L[xتݦ'jG2t陓D:D3ޮ. \!-"|}do)9E[!ZE^ JV+ObGRZlkT:mOM]~Rx52Ёj!gu}'򌤋<#=})o 9n[A4d`ZCp`HiVZȁ"]R/T{ItA 7K^tX^+(ɴ^sb/n &+*tZ-0M9N^;v] 3"97XhJ1y4Tr8cFo\Bcw/(# dȂlyrҴQ$]RDFn4$;pnatBD ~ƽ1PZ ɻ3.N S5AӘrY ݏWds Ѽj}" A8dkrٜ[{îLГƶqPYU (yuy/AVy"Ƌ)eqHxhҜe[#sܣ2.Jdi.š{PO>AvAF2Ϩat?vG}< ^}:ם9ZNP^S-%\L=@k_NA⠁i'Ri'ʫV&[vg|BI inʋªLqn(Bv8S"L+*W`)]L:p筐8|Na"Г^EГ gǨSҥmOa ڑǃT.K3u%>-ۑYYr%lw8(kGb'8M[aറBWq8!><7 y-(8ت5P-@ k.=A*$IogEN#5'z(elMXPڤ.-'tEElF{HgZsC.;"9?鑜q]1˰{GGw/"ԽO K{H(?bސOcwJARħ%!r$ q[.c{zn榜vQ7"l`y'(VyC4;7:aؠ^ #g)9:CV:W{1(9S#.(OD//~>%vE~_A%ef"sf3(];G8%ꢊ\cGbM9n;G65 ɋQ܂ƃAi<[C~:[>ȕ)-tݩsSNvqzƟ 3oY'HGa @]R*b<gfhP{l1=Q $sVΩLBڼpb/Wv51d V?h:a0wbn.z$΃bFz4jaPsBJkm큙4%R╄ fȗXP/9 ;TK:q D(sSNOqmkwG k%#~M;\79V&)6*;bFv;>`Ⱥ88T+o?&& _TbɗҁH=XI꒮aؤ3}^E92 MW.`{csuI-& G=?榜vQ7ۭe 3VxSab.D7ʯJM8j?~5)|vs?uъa%L/FH i H3J z"REa^S̉Fu<i Ycz[" WO⸬ T LK욮z3#wA`}+vI7͟=K[jͷV#|ޢn_:ZiNHe[|K<|$sB=HxS0lŨ5|SC/ۚips_3i|CX€%/ɷP`եsrT*.f/}=#S׳62(y\X%sǚtiT-`9ujQť%]UlwlӽKyӵ䠕5yJK-s [u c9@AOcniq4r6.e7rk]FfѬ!߂=5r.iho;f#-Q&+#^ ~wŠ=blQ˴BWԊ'r;F]M9n;j&z*N#:MJ'IG"QP2A]RAOtj⠧)+g(~PG+$8F>+,-[ #MwOWmcg\rElw3.:>C'& DujؒiUXN.5S榜v-k\ilkUAxrOl(jN J]siZ;47: \"&[gX3xxƭ+j<3qBW ϬkkJOR{:9(KD]ij#TFֵ{gWlx](i7ܒ.f?5N];kޛ=;^a#xV6eyn;5\F5n;/D@z-Mgˈ6ͥtIҦ8@˔.;657] [R)3-8UcU厡aB.|z;rElw%o Yơj_kyZ5.@EFT;Mp_!/i a<"|TQ_F|nQTdbKSG5, OEG+-`;^}^JhScWOhniuQՉ`t0?[|X[ݤKyZ8k.4vM9n[ oLc^4rbw|&GD5S\LiFd{4|ܔ.f`E ZCWЁyĤ;;t0g|} =}`166)` V7f#<%873BN@=I-$]R;(~5t05TԠ6gKr g;E)2OB]Qo;4[k[>v MQsحu~2gsUL屯WTϋ swm5>?E6jH̷A=2=Rn;_=7/|b |JQDi)7K\/WyܔwQm>sBUY]U>zG00_Ř7~\}ly"iZ4v,47k w)8TJ8UmϕYBQ;Wcwv0ouiȜrElw\T˧DNWꗺm\Q;˭otIal|c>"\BcFFqh_Z^zX bI#D]QѤQ,H) ;4jnet?v;9r;:m(IPۈ@sGm>6)(dK;r }3K%WaIj+Hӡ tg_h.;:hniuQZ>Yw?…t4n ;6aNC+ǎmV i):Ȼ;qq.ƖVۯ602J>ſo3uI8Xe-ѥKqniuWd:sp|fwy'^U&gnuI9s0;9qܔ.fef"gW~q/̫ yIw(أhCwBJcUeǙvQ71w)Z~U%cևrJw =D;qI^"= *GU=u }EG7ʡ+S# {"KߥvQ7q۷or+VJ,j|YD 0q]0Ԫd ;_?v3 r_Cc^T=05FETʤc榜vQ7۝jvt9rkyhC3E[[vUExfblPzƘMfUGil-V8p¯:8ޠ>n꒚4<%MyOt秧T<8khWaGw )uKD87崋n-Wd9leo%\~u3ݫβ7>}YqCwXXc )_^rpl6){':vFuSjl#1?,Q*74'zX6UJ])xi(<|n=)Џ"&GtIH#@ blPZ̊t:Nnt4/:^:A%gU?^ zq0uE96sny}nʷz<ݏ銏Wj+>!\&p(ϐ{eΠ؛{xؠC_K[⍃y~-Q[0޷E黳gg..E]=MPsSNNnwR0 h23 v-I< ;q!ݪ6y6vkjniuݱ=ZF*w#nMAG TP5Ӽ%nd,gة܍sSN!< g!`{=) # i Ydՠf 怈{$0_ vAcw$!KqM4Z?#fW]UL9n}ҝ:vx@-c]رhnʫ>k*fOe,NEUjJyT(}$?vU"TRVr4/TAt8Ǝ|*?vKR%kXDcRWz֒.(~}t;౛Wj.t]wَwGao#tpo ]Q-ʱmգ.j*4vZ" ݏ,A9Z ӵ"IqcK*Iƕ+ j—ϕrJvos(V y8N%!]e)t?vْ -l\u[嚏_8 ]Ps>J29-n;Bv[z5AN`IyqotI%qr~\ƚƞ"!]SIc`F l]0;~UTKjǍ԰JХMMumZn;/J>38:&]Ζsvm]Oc v)O*Hhtf5]qZpݡ{Ncml10Ccw=i YyPZ j6t5uEBrr+]jHܔ.f ̔tI8EPֽ*7Tqcxfӹ(YzFy6xfOcH*>*#n;R_Hǂ渂@"s7wBw7n*!SȪcuս|.Ni,~N,)|lݢtN+ E~b0rݏݑ{3?9C6sDy: P%#9&w/IcWhnOږNQ4MPZحw* ~CKrEK'!tyJA]y/My2(AfdugT'VLHZ$f\橄 %]#1sWk82mF|1&1X11u4RaAEBoZcz?<PGuYil@:&@36DgoƯuL p]wVsS페)f1pêw ,jbLťc*ҵ<,cbtG'zܑ)L/ vc(#_Q*\o8L;J>6)=%=,n;*ʌ2z_wm(Tg ^ɛH]QEJ;|}{LHf aAwnD O}zTUOzT&FsS,: AIAC,˜NP%⠤9JcG9榜vQ7>6=x#Lc d ]Q%hM xK ؤK#.P@ AqP?+]H :q²4vX=jȢk~-xYj+|y#' z.tܔw W_x5ѿbKV&65XuqݦUϸj •k_I%LۚvhͰP5d5 ٍtc\vAcw+l8v˱s5)~ o*xpJӛS50_~ܔ.f#GbWHi,wkxC?=SqvzKk0 0gȫ|; ]3;1/ V]R~Ԉ rDiyr W[c^=׻(&@* VZj$]vO[Φ?c5ӟ1WPgR MD&SL: *A&Cch](QvNج.[nilo-o]჻2 b$FݤK*O#~rxK'x KؗbfkRz/3tEE"! $-rH@j ;|kq??E,M̀)I0LW=͌䫷1#?s fSwm˛rmsoVt;ڻMԽ!U48]tk9>6)?UOvwYzADpCldzF5YM3tEk#]6{)]v:5^)ea+S,2 O8K8gul֐Ӯ@il`|P0_G|ʑt f+i=pplPaZ+QqplSmwrɏKjdtyLP;F5w[MS״_SbۋS-x /'M,5= !bE_cwܐ.~쎒K<󣢌ð_={=.7T%Us}x}ܔ.fc!/`"t@i#(]R#tS.4v \vAcwlU7B^U ry[NJ#q Xfx% \O^ ɾD3l1[R\{2W߱rDsKhor<''uB7! ؒ.5~35t]5vdrԘgr}!~2cbYgt^TRf&op5E|^Mm euU88&AkK!jҝ^OO߭pH4榼zS>,w4VB*,>(JAR:MYuw)oM7#l! %q>.@Zԋ`b PκE-(ۼ1Ɠ6"lss_+\ j\RESxn++j?wܐ.~N xUtleqZZ8leA]R;],/!A {!禜vQ7; ےY{& *q!l2bg@-c;⺡ýYش@+f#C^[,VI@mqnsL|-{ Qݎ-{M\vAcwd~C}qs,}3={AZ~EY~ܔ.fW 8cԼ*PU<%t 7t7+\.;N ] 7m(ֿ&5=+Kg5qE?Kiuݑl^rY]6Q`6fޤ)?i6\6Qy3._FElw/~d':n~ef;DQMfWIWMcwhnʻ:P8˶{$A|]'Yg]kyksxClEN Khse]+@Oe衋j]#_sSݩkw .[n ]Q%M{vFJ~ XFGSшk8;–w ٪z[ +t4\ܩbOn_9rk8%Y>k7&=lAn斜R7ۭkUW8]mpsʴMlKMAF|DEvƎMyIu?v:Q=rf֦6V#`mݤUmxӗ('t wDtsS- ckzJq" XLM-@v.8c4 WƎӛj{n;?hV r )7U#͂zt-zjEOXfײڋ0{;brٵ.>-wY Rā~Xem-'Y'lK8y3&{*f$l;CT!WU*A-$jnS7Ƌ5$n{ym|u/ɫN͕7Vj{xLףUpި7n3]=t[I7ۭߥ1ppg>Ԧ6Tz_jWl4Ԧ+t?Iؗɋ2L7[qp!,o%}7&JJ)goSujCn+t͡!LcVϪًE{]hUAGGcO}ܔox:奱&zB}U^FAM>uIz=BaM4]&O/ᾘMff_xkk XUxoǨtIE<{kxfܔǘNnl jq<ճ5ϼmUN~?$g ]Q BPSfi쀯ܔ.~Nk("ܛG PZ6܇K7-N5I<QsC.;Z 0FfduCZMr7)U"Q%"8@nEUH #3&jxCðu;&.!茷uQ~j!VO$]R-*J!]X n/ P'1p,Zsl7b-;iUVU?Նw`;P1$O"]$I~ͪ'us !'qmm;u790>6>M:Sl5[>%v'<[z{YI*6=XK$  2zQSfrCi*[6|]d֚*eljx5+Jk<._UUhִBMߴ8ͳ[PU±#\sSN;N {e==镵!+T4OZ@;jng?v2蓏e;=i3x_T$ݣ#V e_񾰱au݁qр︩;FQ\8h xGr'QM9n;cM{Bh4q"K]Q1 fp%6W3]߆sKNb p'+V@WB*)wW9*ԤKx/9:-D˱A]\3KP Aؽ5 }Qcǜ#銊J\qoAc &w4[K3d?*:uF7mO FK*|AtqeQ嫹)aWQm*Y7ݢVg{'ݩ2s{vue0M榼i81EqG<0c)#-v_#{1B :uDȘ.]حsrAWjNۆWD6jknޑH钊x>6)]%l?vǾܕ}'27+HPq\=eϵ³Tv kvW^gEwɺ8&3J j<B&& Lb1{cwuA0ѳ̓suFSQB)]tؤSp#Kn 30uׁpn[ 9+jwˑr]4v? \vAcw~v9ў8W ֭+J:!G:D#=plPZܔ.~}×Ycp7, kIm*mA UTnk!]X kpSx*κ\vQ.;^|WdY$f42-2SuUcd`uUiO.5KOV*حM==ӱ9B\Ü,zkN(u!S|詨GT΄"t邱s&L^ &/@f#O'LXƉ*>E# >#7︹Bc_/¿о!]f S. p*IJ~!P%U懜Wk5?w.f# Èd .~x򉷋aAfuؠVvQ7d"dvs2E z$) =M[tVBNU}HMczuMȴd.pS-GkESHDXIww.yA 7uC}lR:'g@جٲ =kc!քxQXkWד 8-vԄZT?ڛnt)]vG W04B$ k)`rTG%!NJ%tUiٻԤ<(K8el3A}kZȻKűݯ0&M .=a)t?vG,IY6y/u:qAC}n 2uIȜ[BZdMJ'QeTdr:ZC9\y[+*sqp$.r4vwOݏq!}6/?{7P}*}qwKƎ}?# ֽrFtr({ iQ N``-tE"tAcWjnit?vjEݧΣ|*hLTI#.eHb2P9N(/;+n;JϨYX*"3tD$ݩ詪ܣd;ةK1qXYO^ԕTѫnr"Ƴi/ۙE-y et?vG%2Ns{̠QS?dTb+S ]QQA#'u6ow+auݪ@ˍ"vM5v׭A>=P3At'NT8\cݎ6KElw`GO䍌38ʼnqc̓"]/ﱆ|gNa({7:Lc8rniNc+G]nI9Bt ‹2y#\WUv6'I{`9wS#.Ftmmd}W|zI+NKy idBvﳯ&w|vG5babteu1QXk<vWP#OXT($5r9z3$lwvg3?u;G~9:g-OOAUjIܞV5ۣؑ)"j+tcP13tXcGw(M9n;1櫭o2^@4'X4:LpvAcw`YӺXvxQv(َ(otp?~.8J9V=n;ہ6Q)Gq߇7 PKCݎSCwe)\MyotzƮ_T}Xk{o(WyG1u]<@k ]Hc~rY ݏ݁0@T_NXP[ D159+LutVe4v~yM؞at?vcqdqx#[/ ! kw<[3+gѫ-I]@j( ?~~C#J~~ 4SN?>uI8E`nU;zm<ݺW.dl_rKl-JB~k.ne­/rElwBglGvnZ{nS>tO3_=hñO,+L;j F?pnQO b0.ieEMh[]\9mY!viV?LWcaP_ҽY TTʉtyQ))]qs.H}b"]\E4v!Mym?vǙuG\c{ݑ@c{<]QqG\㎬!]؝1x֬+)Ɗ˻8T@!kI3BHV~: vd9Y MdO.=4%dqp֕.3JN472'd'lw}"x;c?|)[\)}qq3knʋn;~WA*wbN8>PAHSoL=IcOUܔW!椱š^<'?hɷzRtv|l}cYl쒻dD.-f?='s$ >_8PzGteSh-JM{LrOvg]vܑmNwf@[򋧆Wܑ-o6ؤKM;,&d~qPV7C y*_ 9]Kl]+MJ WE7;5)MFĢ',U&w"TF"ZiIݽϥ榜vQ7۝pH = tU(gukuI*+PU`ޝܔ7uf=#yz#pOeuN{h!a+혐 WNℲn[*5,o;bacve>{ԙR;8qI/1]Tn;#wC\{5w?;NۉI{tIEowq؟α榜vQ7c4}ޝ0w'v#0*9%U#橻q|ؠtz{sKN7>W^Y?wH{eSuɛ2 jE?E甒k{ƽQo?vG5cegvh*rRRO9+sf(ƷKP+1 “Shč3Ptq{k8XW(b'_^(KX-ϠqRO];dM9n[~B,9WF N%w'83mɒ47崋nǦNI=ٛ;y9ʉ4:1OHU<榜vQ7ʋO $3cI=‡=]zE6E#nڍn~Nx}v ݑ(ht n#JX~wC띏ܽtsu^Gޮu].PHO[9WQB\Y+3uϪj]TE wQ7CQmuAڐ _^27tI 쮲_C/_ƽ.6sOaрM=;è+攴lk@O L:[8̮.JaBuS[N'J(()9-n;cE ;^<Uu4yc%;hc5Ys ݏQrBz2}I` ~s6(|}8$h*v҅NcGٹ榼***δs^P[~n"lIBWTjFNc6ihFZhd2|ܠ8۞Q<I6>}T6iko-'0P+rvzmp  dCmŽP`"]Rz/r[PrE>!]v'8[T*Nd4XUC[AdSn ]Q.N1$uAk[rUT;؂dfUzфVQ-!JY7YA"tq켳bn.f#DkT,$7}Ӕ62t,HTڈ8LpwIc_#O $u2P{v9PW orMA3vAcw*C81\YA' ;`XDl|2)j!zi[TfRJViuQZ1BrKnה׋(G7>qw˂ckatBԍ}q0L"#$4I7}vQN.n\ }KLjwIc Siu)wXQEB?q`w ]QͽT_b+ў.QJʇT /whx<^luەuqAM޶z &TXCcw nx9x~WkXVC h']Roi@5Z#rnet?v9/BÒ3nQXě xv8u$%vԳ2J>ZTˀ5ؚE O c͋LR(<,rC>qP.E&ƎLM9n[UQ"KrPW4uuQݐwtmnWWꋃBZCmxSsS^tQyؑ;UK2]xVWi,7Kf:!6Adؠeg9Wu6lwd1Ibq!m^YVR t =TAKU+NQ|8̅.*Us_]UÆLZ yR !K;E57[˻/:>49KԟuC{T|ŧ/b/zbOy #.5PYYTc>xՃ L'^$nKuʑzZ*.HHX>aqL0D"KY6 YbD *tyQܐwj'{]%tq<:6et?vzFTvؼjXz+{;ܤٮ3>lWlםƎ.ճ]w QMuFCצ-ȷKc(IT\)qV-Ʈ)rn;Z0vWX 8N%s[Ms]B-f]a] mFvG7qw.q/.[4v s@7-q.sE] ]QtrC ^ NW|83u`A#VEJRW8K\+-=L!]KxF[w;PraJneܳ*jt3<;oF &_1lwˆUWZ/k]c轫 $zjL+ǧsw v:Ԍ8MvQ7k2J5Y>}n#Jk!?=,5Or'{űAiM^7Ca-vGX2z{X2{!冮m7%(xx϶L3yxO{z:fOd`wG'Ͽ+ԙd]Q/4TXi@j^;ZEl l08þW"p޸E7 lD.ӝJRB`G0ia M9n[~A"qq.04_^/7Pڛ­%uFFV 49n[%r[i^a7x)-"*QެKuEt"^>x86(/rݏj˨[u6MoS, z"lbX z(礔֘7G,= 5]E6<|ZOWtuq >=dtÙauzp1_ ?^k]DO] F+FDstFKrt|'wV|ݧTN~vͩGb-|X51d}l ?F+p&,$ʶoMI;tvZ|I;mK0>6)et?vG0B=݃ X/5~=Ly"#tIal#xv.uC96(#xm=,n[ qM>EQ>p.<wёƞ^%)w9v*{DRW >Xը{Eɯ{O- uIO*M݅-4}a*(|C@~)D[8K&)'u2&JU]^%@ꤋY;zkGQ:+Hw=zsōhy5N?Ե]:k^Ys7Lح5vyޑz Y73Ev9n3FtA[mB]S榼?7lw/GluS;ؓ֗ՓFg[qԓ.EfSG wI"Z$V b-\IhWlwc q7(|DYX΄DGH,5UVJD(81r96(ckQEݏQhxy}rmJLeDW K΢|DC]Ry#E/+47oq]_̩]f?(09tIM?`JGcܻ(2f"ܽ^/xӯ^{TJ˵4_K[z\v540k:\:ūWzzCUL .u 'ne: sfZ/崔sW:BH; T4JDxUz~(c0Sn"#R\}EvGQ>`Z)T!wmV&EEƎ\v 3d1uvVL;2KIm?$J=#mq<+Kw^)~YuwjEw\,$uZBT`e:IwfOְSг[;0d47CfuNr۫EP/y _2>uIuQ ݊N#D{{Lg=\DJ3bAɿ`C(#j~]=)]U'-?1jw?u͸([Bա{8˶L!ƞܐ.~쎞Q8GHvD,L$"K(8cmiGs]Uf-lf?(2歘^)xJbV@J9_RV|ly sA<~Iكuǫ"R~T\d&Prq, =}ܐ.~fH_1 !LAo|R+(a?F%axҮQO/J˻ՌUbW.44( #nܐ!=kyQiRZlkx[D~2P?p.maoKMC[ ]x5vk473hI a 35= B\tJ3\FN0E.3ZfDA@V-9!23!#qt]Q9*(椔@/şzu 緩M)Jk)F' 'tdܔWnT'|M"1"~B{[G8qoJy # %fYJz4jHsB:RFF_ω"O-΁()OhGI/LN @Ɥs1y\vϾg85#pbCWT*@9B/Ʈ}#8'rut0'Ng̰58}AiuT.%N~;tE|Ö\=":M f>7KѠbY&veyݦڕZEW]vh|-DdB9~gz<I2r6V{N ?c#=n;PbuuR1dp-[H[^>w]tZ%vC.]vGr?cL"X4R+uI H3?crElUQR?|tNԓo,3IT!ā/A3hChn=tzƦz 9 /.CB_&JO j'];Q/w&\(j4?$I^Uv+g fwJ;Fe@"QjhuKACaq:öNJ(: Ϧl:ts4,ZJiXsޡ[ d7c{Л{#3Hn= "%_c6M?CObAxܪ~@ 2 `%ݮoZr^U ܔ.~ąM./w͎uϾD g<={-9HMMJ>{MNPB׭~}WDn@.ZVPӳ,8 ы#F;n;|]Kt<nfuckY,屢;zknit?vG9b6@"]~C{|y\T O\UBa]'X/{d:¥*%c{ikXrkhbHDaCԫ(:^UxS!!c%}g$݉W{)]v &qlthSP>kF]R$ P&Mr5{4/sОc\AoQ^!U Ͼ8U0 {Ic'>.3;BcwO2Ʃ\Vq,/!5?WzɷLw+ӼGk{G¦iI7ۭgl Dp* *EwPcNLUߓtAalłplP4斜R7E6AE5G8(,r[w\Tu qpnDZK[rElwϨR s5Ԋ і"3*HOt;!Cڎߤ57Se/>1dzs/d@tm]qGVMͽPjUy&/*9]w&힥|ws!_,iK刃'R(|6t)^~f4B_ݗJH9r}rpucI.׳Wn;Ru_tSnϴrR| T,KXcWinʧ{Bt䋃]-ܲKG5͕5IT^^;z}iniuqo},гA+P1 ߕ⾭e'gS7sZ16(loدs{e@pU7`NEtOK'졖tp$-*x]8=BsSB~׏l79D9RMݪEjJ9"]RWpqnUԝ6ƞknʽN?vG7H#B` snkL~qn)^7Dq.G|jmRauf%ΉrYŁ6!d9DoC>K+'egSsKcG.榼5lΖ٧0 ^웴[^fVܻgj :"?rݏqdtA1WqJh)-W Q`tIEƍ8B(]4шKsS>ny}rZ.+^^W荿^Wh^Wu^WhEƎ\km䩯&Jo3a5 ]QW qР\X4b Lauݑ>y,)QoLquQިHaq;&,q ydYHki9 ·(1VօW9ВV&q,B?| Jqvu NJOW:W(CtzA&iu1&%3-!GQƒ[q pZ\5A38_u5[ Sաq4wӤ4c0Aİ9f$T.-İMҳۼFH9!5˶& lD &YXEh.&]w4~67wiὄ47u0l0Fl(:;RAMt .hܔ.f= ] _\kٛ*]f1zۗOv.iТQp4'>u/( 6݄N8ܹ,=.֨u9!="}lݰ?ޒ e--ID́]OFaEC`Rl+Gϡb,=(5LpB1zժ8juBI)^")#$_ o3dPZa鉨ZŰ!tF ǜ`|CV?y;o׶ ,E=T?ҳ@F愔֘VW;^ou?A[lS +[)xFi>d?|Î?5t8C`Dx1_Ĩ7y}RZl?oeٟ|l"@!ƫt=MV/=ר7h )1qjlsԀPU`Q8rm?/!bKjgD!Ԋ (ϖ?)]v{\xz ȱ(,:f2+I/лr2F X%6;FceNjԦKq 街mo8n^pg mL'± ŘDP`Y4T(EsBJkmWWIMe |(W'z2Nbm8*}A/+emSP@m@.5,RjNHi ru //Yayn D|ZtI-Tg5K]4X357崋8ADz pL_,~#F;_^gv N kCbagGsR~mM8_buw3;l aHHبڭp3KoON팚RZlkt8AlktU҇vH!.>PV5>6>>sغ !M聦5`IaN KV|8`cCf㝷$=/K25kNHi O5d\27AH?w8:%]@uzQsEEb5* hG4zX~I l`9C9ئLf0)ecƞ2ܔ75 6lCx  #+QCOmA,#t#K@sS>#an % ^7R8l6mU:ڑ0>Ŏ#7[vn[⠸}6evFjw;7T[Ͽ6\L"^b䴫s󦱕|PTE]Jw.)68uXxM9n[KCTUMsoYBK%M Wev ?ZBɫ펬\Hx+a/B }&-ipY ݃^Y;l?vG&=k<4]tɫpx灟.o&j.o|AU}.fM8 a￵~k jKk }]榜vQ7۝2PP#U`k[V FUzv%Em]+禜v5e4W8\(>Ō(9ʭ_LuL RU~G=;n;a}q*\ܫ0޸0nJ| uI)$`2 c,}-9n[P8@`c?f¿Iy&/M.N-ؠ_y9 gi@,eA4bqmotN%K\j+Zh.:)]v:;Ru-V*)M~RT,qаj MJ1 v Ap#cI:/  $==b.5P*%k>ML7۝&Y!l%I1brTHûuoj|F7}lRVQNzv5hXӻkU/N;+8D:qMzsԧŠH}"h):+}AVS)A -=(W.f%k1z,rЖu0EΨ7/3(߈1QT3-\c榜vQ7ۭͧs8V={ˣs^|tIEb8nC'ǎBM9n;AQKΏǞu~t.WG7.fGQG_bݰn/ ]{WT6UT._'Z!_Be_b}W@cϨl|3n;ƻ_ 绳 ng%5C #]&3=47崋xƈ8]>T0)_++qঐ.W)Rv47]}5Q#c֛!W\lEڡ+jd6)Xxa`?v[>Xr{UQ:3uIB4|Uc_)47 ֈIm^=a+JL~UfLirؕ޻rElw`>XFi NWW@v!ӛ8hi!]4+|oMߜiu]MuSWNrY~GF8zƨûr.`OQ٬iԕsSNυ[oq}=yՐܻn< t']4vx:47UۓS?hRX=wo侂Fx9pѷXsS>Til/|KV3zP`Ӷ(/m|jz_ @J׺6ؤj%n;G~G7r"ƷuQnܐA]RO/^Zgb;vQ7ۭg[&iBd V*_}H΁iUR86)f=wMck> k`ٸ3Ľѡgl򜱓q8lV"ѡGsSN??zvu?&~; 1w@ic^ɉC|cD'|a{ϝE%fZ3k}]1$S1tgT7qulnVovǙw2C$ bAt"JLM"R+ecrnɻi2<7[:|غXW!k.tEyL"QP-1McbOD?ϖlIB:[eMJ>[_vsuWN<vI7 %*: "җ2QU@Ԛ5u fZk{-(ŽϚrElw: ?8K}7`nw0r̷t?8`Cݮĥ)oBC`wϩE7ӂU 'nq^&oKƖ7b2܉A}⾏=mu>xGw'] ]Q'砧:uzslP~ߟ!]ح% -+ bPA`gZ]Q'F еZ]LsS] =w!ε`̀yq"$6K:W4`wfX16(z 9n;Pf:Ntc^U(4N ݉#Zv V@p]U=x._-?B3yӾNPS6).u_N@Q eӑҎAcu 2}q),U /vtɧZ]x#߅}"}J+RlKQƮv{ݎ*\[+a *܏ɑx#]RGuGAvk'pniuѵ;7}w"Jz]mTRhsnlX|:=^܅YW=][k+MJtfY.\7>sjxY:+d)Jk!8Pw댒&. ݮWܔcwĒ-U.\t\X);0ho2;ɣcӍFDțNscMq]fc6+psq3(/saRQ)w=vBoTr?g{xrqCt KǸܐc鋛伡;ƞ%s;HOxet]:3DÇb_u1+_AO_;]4k=KXZ-6YtZ&8X0+N}_xQ$?HT}ۣ&]+L47崋/}M^@{`|m.8TRWT`݋^ϣKcX88_Sɣ)3꙼yOTN=4Vl%8ݺ _H@X6gigYK*1q iX"3C覛EQo=ñ#EpqcI:>}}.{ocקñq 䰶61 OqIKݮ97Oؠi-9:ilUܧԁ"*i 5WB0A)A,YEYr47崋n/WE_ĩ_E N7M=-BX+9K,`|vQcw[2ǰߒo +%Ύ|ƪvѴ~.n/%^sS1\lwvՊqg&髧.Mv~ir57崋n2.Ydm)AJtIM],vMh MP.fo5[-ݮzCP&j2V%5WG{ǟi 4[Eli%L!v!nQx? @ޅtpJ*blPx_0M;v{W+9q(xJt49#%գG %joƮ^塀)#n;/ Gx"|."gCLytڿ=#t*xt+=ȇ@ F4q;jKSUeb芊jiq5&݉>{}sC.;cc/sp7 ̈́pk'jpAY8X>v͸ 5y't?10 ';R\!wܣ9l})]/5v ̹+xR@cw .:È3SSD$!;OǨ;K38KU"̼)i#jniuYo{Ε82bq] t2ST6C;;vVMyScXt?8#L.v33W`{sSNFiFi}7̞.=n5v9KWw;)]vc;𓛲 GZg GKuIOiƞ܄s:Q/^L{nX-{U=vDZQǎ MR`Ok|)8TQS*!_<ɧci)v}ǧB)s*u,ā{؊:5*a US526u ck_auS>KX{q)U5rXaq1@:F>\ ̱AiP>MKךV"<b-R2(IK|uu.Ϲ!]Wrv->Z.·ycVtJuǻhnet?vG]T^ Ÿz1k+z1Y/6%Z16(_#iu?vGmpOT_YtZ|Æ/2̬& wAeЉۑN&]%k@ܔ᱘nS3b{r0-~#7.uP!9jB+G<9pHa]#~+/䴋+7X 3TJ._X+j  K{(I7۝Vx_z0QՅbTu#]]sC.ӑ2_V1!L2i}Tqʭ ƊM[hO ݂xҾ4f#tp&nz#ހ7piU5X ѣg4]7@pixO='3SO2Nƙv8.#{Bs{$lw+,"9L[$΄q%]P[*blPrZJl-ϻ1q26r, oB+z"E5CWTMEScGMVD=Vw ϋZ&;CkHy-%5O"Eݢ+ \vAcwL/?8g, 0zB+tEn8ށpy0v܎C7fn8RMU.B9KS9quc|'pJc',]UYZn;'oف6ou+0߆rբ.;rSv^Cֻ_ԍI#VuR{ͪNz)vn393|xjv ]'GsSNz19F- *v2Ea?|;q cJݗc>\ViѮ]*G*9Vp6[=jJuʱԆ:*]{ؤrElw-v?[H:\DQYP`+tE@vo,2L]k+\vAcw/ʒ_ _UR_5/qKޔ1֢Z ca%֕n=U(8:mBNeWݹtym h%]?U "]hOG贰,y-g8K/3KTॖ.^ctQPQˠ^3h(h=/a ,@qA]TiYrEl1V.ǵg0'WERWWVeQVLcG&u.K] F[}GKw+k:OJncջgF1zkؙ *(n!/=AvpҨ˧T+~*tݱ1u^te>^g]׉{ݖɧN1/>|ߖ뾷+%-:.fܥ \U&tgl%R tgqISUX禜vQ7#_sߤ;]ZO{,tGv9;1Rˋ)5q5su.~Ny~`]#,]ˈ=w?|JD{ ѬC.]vvvbTNkR[Y7(ETȮt-tEX*pF ]`NS5Wy.fc{x{+0culՙ_Nԁc 9n)ꚽyN `9x"൧(ﵖ!PTd̋Öeަ;nD +1|%* cFB̽:kr9\vzf>:s~G^SDUH˫87E.!]vem-\yt/UVjfaGfFݪC—|z;2ҬdԐJXYdoeVܻerɜ򮳧f#q,s\(=RTvP+r]9!O6B(f=7]nռ8|nA[]/.ܑo؏xrQ((LtTԈspQؠFXJlwĒ&N%0'N}B6*(|`eGZ:\`؁Ѩ)]v}{uÿ/:.mE!ifn ~.q) иMRx?*U=ԷAwGg81cC\vCALcWܔ.fS.S(,?w`Z7nQz\QG..]*6eN⏊ C8Z.ҧ!ALcqnau?vǙ"7+boq|~TQ_R a# 1tSؠR}qkvR/Bg`@&)3_eN0.fA= ńקg G,ZН!8| (iܔӮ(Nca5ҘQ_NI<:w!']<)!a23HA{9BEFMAw?MGY>< +Sm,\WknelIcToR}u+No;۵3(NϩyV}3ȹ)]b ^@NSmA $kMX+zBX@IBiuqaѭ~ao ߆x~%F.e좚&"2-j ;̔u &k<:霱Ckd۽fyNg"Kc|t݁^]:d\ݺ,'^AzPQ#eɕXU"&ߪwdtsSB4VL\([7#߇tzǴf./{zfz S=RXmy<.-/ *u] Jq]#&lޗӱY{{uWғVNoT;H;Fc?inʻ:n;apo\ [fut9Cu-~1ݳIOtܒ;bIߤb ]gG8UDmt*}#mfpFG"M9n;>NA_6 q/D^;ԵdSv /7p%Y}|Hb3|la}>v]i ϻح30SJq#狂A"?{|ף.tE^);b/^( ^erݏ?X۞6S>Ϙ|”8y?cid6blPٟ,nn;ޗi[$?#[Ej;+zRpJ bG+]<BsScwٿOu\uzG\Q`Cbust#34vN5߅Qy/wS'|(GR钊Eqg(]15v(jniu]X88^K|or7ıN'ku>vTjniu_U;HQ-E(dFM<3S׉O}EB^ӤsOctzW.o+KmNU:<%S.?9ǧF>ޑϹ%j&ˏ݁sc=K^mM 5c.q&Fݍ\.; v܏&bB_+ZVu7탬K]>6>ͮ#AU+@^e>yeW~}U+I74}RaΗKñYk2|lEυ]\W M"M熥vG/ "9vrښwapp 1tU6 E&o:QnxǧE,.~ qel]3ݑxybz;*\nތ^B>p.TS֘cEE3f~8LPu^E eGuI !Kq jϐ<*V>PFy:GݮUO>KqvIoƮ~_ܐ.n/Cg="5hg_SbkIj=jP-8<66~jܔ!ʛn;FkO.ʱҔ&ߪb5ݭZ1dq@IKnCܔwk-EQq*޽eZLޅeq/ӌn=Bh0/".v JT|Ģ<OշϟAMtYZRcw~57۱ݱWF8+rƉݖo"g&]R#ݯAT r%lw&CD/.ϵp#6#wgS+ jzGEqY'n>B݇)oM1lwʳ+r.U`>Uu4ҙtW7GsSN]T+]]xЭxm{oh.#Qa>M=s hTQ1S:'e[ZbTKdU_7oں1nח;I3q"8/ u$ȗ]eNEִM/A=iحas2yKC޲W(-|?.ۨ8!KC4vmTsSNԯhF`32R5Kǹo &Gڣtr"f6|vZ骏]}ܔ/Q=]E2*̣씒wsDuEGm<ˢI JY oni46ώLKnBP|b_ǟ7΃Q2wpjԢ#,<.˶>aJe D*aR׉VNquŨCtA˶~xƎIwy) ߃Ǥw~Zu#T7;}]vQp` X Vy!_.=˃xCbX F-jNHi BDt!P%sMg ӿT!QOc/i%ʞtqILxLsTXsw`Zu4)GiJ}HNh|(mn9:V p +^jؤNf#.<$&bIl{(MP jqۭu~QD\>LUt#>-X,ةsKNKNu85CjQ 7Ŀ.a{YqP -]i g57崋(A/vw-Q ^%%:e=؛96(y.MvM7L+Qҗ8@N(Gi2.W)4J,u%YRbQ\O.cɁ^85嚛~`vSQMQE@E9;O난 Yi[FkEl~؞E=˵mx|(nF Z.hniuqs?̳ Q<GMqUX_M=ړ>CeTE-Oiuݞ(UDo4*"S,k鈃"A*tVhjc(j 2c-^,B(&]dAVN/[rEݏE4=n Ou0) 0)/ ʂaRbSt0/ac+L:2LSt*9I/g&lw@72Tld=m(t"'/A|anЅUch16Z]MAƖOj*MkݥźY(lM/ ]QKAntrD]SnȷZcwzVeS *xqF)I)q-U҅Gc7OܔO%c#p9O[6J~gΫ"=Xr`QWT}rȒnog=m hΰ)mQӋ_޾29k,rͤ{WPr)Q/A;|Lr?&m]E0}ƯNoIwU`'شY5Y`^&su,7t?v r~H0lkEāyw6G\#ظ{is-lsCFK`TՂvQ7DQeÜ /*aF QLޅIdc] -KM *J\Elk`" 3X;R WQkI6R#L']\醀fM}_iu?vǚ̝\_һޒ`۰ʞivytһN 3%lwXFE#)6W;2`+t0ҹ k%]vGu¹!p̟HIǻͮww'r׊>~[I)&C]aQGvlYn*87G$A5vؑȮ[+tEM/8iQōDcwhneݱ&ۘ&uu4c{YլX63]|X?vhſE["-уŮ&8%Q#q4Cc@X2vQ7?ӉKeXҹRfȣ/ euj⨢ˬ^iI7۝um5QLYbx% UAEq]ݡV/a 3_6:K kyЀwͷ@͵JRJHQA {G}sRJkmOQ"̍^kHLΊs*:¤\zA󄜖R7Q9^}>t$K^=t"gb1c'禜vQ7۝Lјzժ:h R*qA8.}Qk[榼t0Ư_M6\ Ô.+TKj\jyb]|A!yoauݑ<6As;ω_Srȥti^i_S57|tz<^r|NIA yΓTU!79< 6Y16(^"KNح}n8 #[(%T䬒kJ>[⺬ةySWL7۝ q:Jrr 7ϋxFݔI9l|gtS T R$f a1xD[Iף vZ4#PBɇp$[>zU;]ژ"uRq_HK9Eؠi-9n;\bș%vڐz(NB&#ɉO+1gIZؤ6l_K(5ҌJgB@y=Zȇ :Fw*Ԉc'-9-n[ U]ܲ6Ѩ1rK caK9讍6E9+bne)t?v}8vUH4 AZ;.To76:;nXi^ie=tξ 7 R7AE+Jg`վ&{Hk'6Mw"vI!ʛƎVKI$4PBt}D֩b lb`W;J"qv `ؤ0F$ ]8ǐ$b:L> ;\ T#])^\3?ќGHjOGWnX xt!ғ.(n}ktG _cm;r?vw<38.;g5ͭD^BI:">}C+S5 cVsW%N*|y$BݸDn3=mw.0#] -fõϢA@s* nCJ;Kjy98I0=)\vAckIq߅8h~ L~ǍqD#*.{#{* ,Z49`˺&t:r]gv\k*ꊊ qjfonj AjdO~taKU+٢BhIݥ˞0y4v&s]is]vCdDKqоr"jb#Ȟ.h})Ҕ{̱O>ܔ.~` ߹ 7o/XB7XB5t+f皻вtn[Y±PU`×;j,ktB96(̀6yk_~be@Mފ =+W T󳂪^* x$]|ܔWc~*@?}pZdK~*WZ#14vqMM7KexVLS=`6)඲QNuqN(U+rqP o6M gA[.gE.8QS f9--_nӹ_0䨰L³g&;T)&!*Nl}^QN[Tpj} vy:MNnrRVF?pd ܒRfߘb_b"Nb`m4ɯwfu cpJW16(OEf[~ y(gւJt3:%LD,ߝm 6v.Lw K펻/s&*p5VCWrw]Ry#ԨK57rElޗU䥙"WH)Gq9y"^s'bϺK[:ȓɗ♦ z,>K}$5UOsST&qǏ%EZř6mőH[~V(#]Rímfn&knʻ< ()pt00(UVADX^Tȧ8reKcW .ojv00597"}o;SYRzj=Nalޓ絡P;%/'SLNK\WT 9hX]@s7崋p#10U5bV{sr"HTYpkH2QN;;*vJ~r Ӑ3+޻ݱ^.9t->6>MP#Tc榜vQ7۝ܪgCcYYSKhs3]>'Y BkSm>/3n;\̝UhHQL?Nȑc!ݮU3T#e_4wWÂc&*淖0:kQ!-]R3'ADB5vݕ6n;F]/]}2Pk8Ta(_7wȷ5V&wl5j=tV(wސw UDU.3یXhȋ+z`[\R\ܢeu.~#^q79X=ͶR}ͤ{M/ZTM^yff7ܔO4?vy !=a.W>j?GK4Q3e{̻\rX5jQ=愔@/p*@WxLꩣW2|y *rrAaiijbbZvx"ƣ8>t/hl^)5*jҽBrQr.&6{p9R..f  Ə{'˃emme{ܐ/?0ZXLl@=@|ؠNXJlw,G)o8{AV`JUv@ǎVٚbM+I2*ƚ@ zvwi/)18@7vï3I#9H8>_,֑I,p+͆?c,Rubė6kӺf +LJʡlcڹ5 ;mF> ٽ3Y S?mHqttʤJPsKz=TkLL|)f]IOtDe_~ֲI gtF9ge>~q)<R.~Vs!9/EI=Y-+P">ڤ`">?R"Jҽ-L*D|{{xS#pQ7N%-Iw-8S*h=}16_[V gߐܷQO\͸Z|$M%pb'Tt؋^ZP Jtw֖m:t3n/Eu-*>AHp-|&=ēJhZdOR.I7Q?!*k@9kֳVU^RjNĤMO:u"D[`eF{=bױVshbF#GީFvL5{?dC"LHu?ēسv$C;ȓC{_7$FML7N =^r0&LQ2G|^6_kxv?uHJ⧕o`+]d+Pߑ@YIM7 q<ޠxMU zɖ轖tǸ>Ch;fos­wFyxoXִhVOIѮ| "Hѣ]=Gsnx+m~ppwR&G;i{^cF"{QLO ]IGV tq>lFpAww)-YizPXnF{Phd.2֨hs?wwl/% i4L܏:4ﶣΊCYS|>1C)G';]7`)egfЙA.Wv$]JsJ*q=ہ})6뉋w< ~/D]Pt(Jcjߕ{.wl~s1}o}cc^i*ۢk=|_Uު'ty.>6}L#8}"e C\)IR;E'Hbbq]&r=}ǣSjw 9;C/r%2d2hcqKrN' 8uogߐg<)u3n_vepXFDNa}KK;v|w\ k%tIw=dXߕ,fv#'зnC&n }5¥nFߐv3ꉔ7ČH8Rɡ7-G ?몒Y=63g{^CTjP 6NHz;D5ժޮƶwa-6vcLK[qǶ.n-V?.fܱz9~5*̔Bi֑t/ky,Zb\}o?<q/(Zcg?~r?v$}@YO\͸coW.{ mSbஏ͞Z!$]Oɮw_%xw[}ǻ/۬5қn_O.c0Cgz\2ݦ^ >g:=ȳE~׾pGow^+M;/=8Bl!opz]{eE݌A;T>ZgAxW N}U҃^) ,s+k %fV:S" B|:KYzq˷~.WҥԜSIe wO}~>tvIGi}Uy.<8q@ˀ,TWtڪJlTۤ=O̢nM=b7˱ao:YŽKGQ"yh͒ nO;Sd4&rO J~K.shdhUL)Z%7H_ҶO\>R9ic)s#TL IC6 CЕT<}J,-' ƺ?~jW;y@ΎtDsmLR"T$w"h[DJ݌;] @%Tȓ߰5v]yjl;BM}BWb56);pQ7s K6sn NIX2(Hs`X\HbWtZ}Ss(ܜYk7T$Jh8ƣH]+j=Z$šN_ JQiGK}pacr'8}(ԢDPiU[D“4WlxlpXz3!]`>2hךet/%DK %{}q>pO͸ӤJT7ˉΛ> 0 ]Ii4QyBclo~l͸:XJxH= N`Nz_fD-@/cMn>yn>^iaX?~|RdW Dew wqߞvѣ'!qjQPN6u{dA pt3kq W lX[b,_>$ڞ.㬣oHr>3ꉋw$۹ꫝ9xzNE4qwr]j~vdVk!vfȌ!EI7d58*HU?n<7$SB_I:\'d;y%fܱC E-Scۦ\]Tu]IEƉԽqb64[S1D~pqyVS׺a}EUÊ .L}G{f=q~8n@m>@dNՉoȢOݦ ) gؘ)1BUYM7k^%8n:eLgP \:A9\IR^%E#*[7ŤqG|= HEYttQ}1Io~arQxԷIE- Ȏ"l#;|TqZS8QI6?ks]_>#E/n1<EYAsGd; -=Oi?SŅF&Y{:E%۬ω6|ץt۬^0n[E݌;gT#{^-%<5-u)EJ*vR10*{wjzjX%5 9$;< ._:V r \}t,۬|p1-1~آq8Ó𹂤Qg]-3TW.B< z;AqjJnr(XL{$ihן)+)NPev]lifZ<|O?ǿ/'^~濿xs??}3:bLGyoa8Mk.׶!eͲ̙xvL| vW4Ej l9mH[ľ?tu $  txpmYz-mC`w=_ k_2[Nb8gx6Aw }ų]|}WliDҶmZ 2@ų_Hb; L4ؚI"#i0M(,h Pۺ:uyCCr@? xm&B#L|.5~gGݽ+?b+oDcUYYE" }2_v vў+aeDi_#}zF ͑"hCo xe zEgi)göYbL.:l8u_Ѳ.!qMՆ.Z7$d^]n*MްGw&:)_Zˏz<]7|#cYw:05x|oYBj~|W΂0~$?oȍXp+WJֿv[~.㰘]y*ߧ`Y޿J+b;B~-;Quq?+R&7|oY9{YH^5n>}w'oek$Q+]yQQxwީ3k{a,}^/e!~W.7/h/^\I;]c| V+u2ÈEou:D Lmv|q'^K^-#܄8^޳2ykjn|N?;F0vxqOfNs^＀wF)wC6-`yL|. ZgMmxN"t Əύw5~5}s7w#WtnHBཕ[[x_|uqܞ.WF>ҭ{Y>n=>\>.[mn15a<6ݟ@L=]>,>sz? 6|o4;O.jۭh@Br-${oů?[_,|gQ?Fp~?וw ґҮо@$CKrտ[ U6CG ȩjrj(h9- H- hSy h,Jo[H헦]}׵Id|_umYӣ=Yy}]6-PaaFFd} Y=k5#}7-oFK}7-oF2h, YިAFCe0;;"5>KynaFFda=}*s-ߨD:'|$w/X=p[d}pTRZ8wr?vJ/ۄ`@' ۸~;gaj΂fY=una_ 0Ou w:2>,Wp <~aj,4}`@' ~g,[g?>aXKN8qXǕ p5}}na7qeFg|1ffjRƣeZ>㳯q{B -lG{>C8'}r{.~Ľd ˢz",nY dax=eYPd4# #L·QB3蹠Wj4t 踎30O@#GuI?efuQyA&Oh;@39>3|5}< 8B#} ea|AGd0>#Sdֱ0<#SStiaj[Qь:*hܩ}[ iaIבvFg9fIvA&싨Y,k߰դq5u 4ifajM/`Ah-y},l[$ž!_T)K*=R8[8u,-2h s4 oW3o=~ڎ@3W?7| 6_MO=߰0z«<#}@o-L.2hq0Υ]L4'zj}FshRgWOyF&ڧOo-L.yflPGZ=գ Qw*fnWwF&g433u4'x |5>}zaaWOyB0 ]5^vgYGh&{j=@3zث>&hFo|gj}z2Q^=AFznazA>8Vӣ4z3|5>_oC^=AF?L 4禄a>ƫZlѳ .EEıP~=S8 1yF18Vaj,JN +suN3"LÂ(0Y9 S|[¡izf]iD' r8+ZgM30 4+ZfM 0w ߛS1͠քv>]良i0ΊYӌ #L~,HhY2kZIz5q Lg M}o9qVΚfjR^fLfA3m>ӽ2͘fA-33>jԧ?}hRiJ|C4 jahդ 7|Dͮ8Zgc3|5}7g+彙JʊffmA&h,*8TWV83[gn3|5}|C4r lk=Qt;qs)R~2L3e涠Wg4{j_J31G3֙ی6_MjLь3u6Wvo4ifjR83[gn32'j/Ygq,oF&h'4ӌo.hդ=9qƷ'դ, :qvgjRLea?.AF' [qNgu|>?}9qF&Oh3Ph92g\I3?ьsu8&Ohjh9:gI3?Ph92g\^{h^y: S|za=ьsu8W'4-_KH˜qA&ьsu8&u _ޛtXt4p3h=QB3 96_MjS9qB;\MjounaAF,h^hy:I? 4[ g|O>n:+yy]w8e,PvkRW99'jh| R~0LOS!QOA'Ha-Pa"}sqZ}Ezd[D8_3|5~@'HώY02 |5>? bXȸ̌3ȚEYYAF;}&B3( ˲W q #32' hFfdeNfjo9Y^1!fdFVdB;\ς 0+2#} B&ca8hFceC&xO_fd;V6dF>!4۱! |5>? b,` DŽ`@S(ь phxO1fd0VcF,X3'hhFceCfjfd;V6dFXؐmoZ1nad0VcFzOg Ih(׬|x5ÙeLweZ;)[[stkawV!QO`6-2>,͑Y؟AF' dsό #LwQgsό6_MjhAFڧDьhդ}gsό6_Mjw_ ,L,yz?q4#c2:jRtdhجΌ #L~; (L,hդ=mbsτvgAlٝ㳯RbsfbwgA&'Sl[ٝ Sdl[ٝd}جΌ #LÂYY<31bhجΌ6_Mj#ьhդ1bhfblFgA&ވq4#?3|5̏)ў{1?B31A SW[+6-2/6ьhդqbsdabwgA026+3#(~GChFfetfjR^.00 K S|`qȺ8YY p5}B牅YYm1QL,,hWxĺYY 0OȤYYAFڻgGhafKf6eEzvWwBfo}[o`flݝ^03rY=,9IZAF' d$Lӄ`@' dь #L݂A0C3{"Sd [Sd[Yd}@-,2>,YAFڧ;,1AY3>jwr1q4#2,3|5gϳG32(+2W ]mYؘm>+nad[V6fF}11fdfVfF{Ͼt=h\ZyjRÓ)[w¿ffenFnH2;o}11fbffA&11aadfVfFFlLLXd>Y &ffanaĄYAF01aadfVfFF &FffffnVaĄYAFC ,ό6_MMh&ga OWӳ@&,,2h,q < 0 4#<j/@32>+#4=g'&gaa 4#2Bj}^6aadqVgFFlYYAF21nabffA( 4#3273|5'MY櫉q 307 0g N2hwbYY9>lKL,,hDtڄYYAF?|YYmh[XYd>[Fffenfe|'MY櫉dx,Ђ6_MOwMXY }p̬͌ #0-  gÂYqn}$Y9aOsOqO{b4M?sB3q W;(YƄ`@ڧC>ьhդq3da7cA 0+1! 0+1#S}[؆gtBfdE&w4} Y0OgXAF' (Yƌ #LÂxYxXdGosf,VNcF&hF~c?fmxF}}q0q Sd[yd}@-,K[XAF' -Ìϝ' -Ì #LÂY{Xd}@~-|'L}p #LÂ0q G gI?މp4#_ jRt󻅑X9AFڇea/AF֜Ph9:g. jy:/dg|ssƾ_}Ǚ˦ڷr?^h&~jR;fWF&w4ǻѯ_AFڇ0߿ Sd~[d};D~I0߿"Sd~[d}pׯ~ #LÂxY_snaW_~B0 LnaW|FaA,L/2>Y8giW|B0 LnaW|Fpϒڇyò0yǫ<.˂'  #L퓅g'xgaj /iO ;^AF'  #LÂ<\Y<#^d}p #LznaxWxFpϒڇɂd0="LnnaAFڇ=ɂd.0@YC_;]Sgo:.~j?gu4gzjR>VG3z;W;Zeab/wAz,u4ǻzjR<\G3zGYwFoq&gm}X& /z7,}@.-?z79"LÂCYś\d}@-MK}X& /z7[`d[}כ Sdɗ[}AFڇn0r _ZnnaV_oB0 LnnaV_oFaAqG Y= ꉹ, j3Z~SJfb6&G21yEX=Ճd>,|hFob6fj}FރX櫉# z30g !Č #aA,8FgQF>Y ļ0zdƺ0}8' 4-c #ƺ0}8!FlLKXhqwDunaq}%O8;v -)0; -Y-_<#S{_[ZyEfa2{Ќ2qF=eZa/ Y=p}, j,pp 036%o֯_QOY>%F7mKZoFl[[(wZ0ڇJЂn_ >Y-Hf)Hd|tjZz_eӏ).MAF|eFl%2|--F.~j 9RS\feA^L >,gۯHĪZ8ӏzטSAN['RV %1#dC~yޘ{// [`78<ٷ>l &,)~jo}r;^B;Xpzʦ?ʾ7O-QOS7 0C[Ӿ >Gwqpu~-iNQ*, `8G|W֧9mx)O-0zʦ?1s kD=dGK/bQOSϟ4O\`D;~K2闵Ϡfϖt)Yh%yDߐUHk?uTX?x֊W 戬SKoh͒>ҭFwoКYO\͸q-}?`5v[Ku3[: ٽ{t)Yj͒*>Dߐ~IzGj7+ۙg%B_a]TbO9$wJKoۺHmu3n.;v$d_K ݥ7{dwEct)=^/Zt۬'.fܼwuϫb_>e8v μ;ͤ.%Ygdz&ob[&ܼoV{Jd7ߟ)mU `KFk~Ikcm/"y'.fܼ>vWco;h_&A 3LR н}ִznƭ;W kּKM&]J7Z>R&5mqZnc[W.{.~;z=$0WzBWR'R%WξK<]tgjw>gvއw>%w+t)%|/O;/znƭqVWϷ~wgC$ømWwgu`}~+ym~ҟ٭tnRu wY}Cmޑnƭ!nFK{ۓ[ kvI7H]f}Wߛ.znƭwiy_C>KKKݥ Rtkດo?ͮkmffE݌?OE%{'z7Dt?0_;6.^I=tK6 in=ccXba~ydzGȼB꺤U%G \w{UYO\͸5oly؜|%xfu,.y}|YO\͸5CTnW.18˸>B3Hřբ9t)D;ї;u?oHh ۪wqZNy%KG҅Us㔤byŠu)Yj}c>Cv6IWnYO\͸u-*9{4^* ߚWҥ;o%GS/󖲍@uܺgyow_%`> ۤ>kKO.%۟^r/fmZ6뉋83*->=jv痰KNPShR.-X"/"u/Zöf1X4?ݥx$F>9"u9Q }}hQO\͸Z]>/1gLSҝn->KY>|7$ݶK|Os~2K.UxR!]J-dQS̾i}&݌;>x/SJjEfc@WATt)-Uum-]mu3n/'|+q{N{ ψѯdGQK)F?4n6뉋c /W[<|̏)6vmJ:}Fn}F-ۨ.]X̍%ptjC3qI3Wq]ITRQR߻[zGj6MW{}Qi+5H%GRCW3E}w]?MҜը'.lƧ JJ_PqcE1ྡྷ~]kҥd}k4:nV\w0 Gn[ ɏ (:ĹagͰ@2{OQ|yC7$yo*<0ӤD2Iszg9cvUc ,$Ogu3n}nDF5[6v?X`$cb+)Uumb[}5q5+tz_GWi *gC$$=|?G]Jַ.+ Rw"۬'] `HwLzU;7[%yXOO\֝fI{Z$_V#5݌;^ɺhϒlEb8 Z B)IkA.;VYb{K/dE݌[b;{Y%U}g7tin}9KUrٷAXUm~sznƭ;" h>lݻ"FY`\.K읗4ck޷IhM۬'.f)ݣ:d%sl$NiRJ,"u]^YO\͸y-:zS]Wg"+CB$Fx.%[YRJ'T#6i)nuD, }#.ImfcQ C*n5B}CR4G=R7?؜LKn='Y؁4󊺒S 8.6w~&?F\Mq{a#1ި\b]zppqyCGz0ҥԂ!HBo>m;R͸w]+D㬢gBG#(U{BB]XRN׽nfߐ47YH9w8f/*}8~%c/=17u)5UiltOFzn-߲ 곂a ҽK˽bUKuČ BD ->#ƖYO\͸ޮyKn﷤4!:~IUӪ/4R7$!&}%ۨ.u-V;~%}E#7C%A +uC%SjoH`mu;ӟտcF['VvIz;/dQR*>׭Xdr6뉋|cHAHwCU8bHTbo[cz;J%=~BzښIzb= }ĖR㢾!wez"nƝ% Vꨒ463cȉt]ϒ5xvE=pI7oyˬrew"WҝKxXۀCW t^b=mK}~n}pVnCXW#6\C(-[]H rmM$%}=S}m;ҭN#vh%>n d_zIxOO]Jř()g]m;rN#Bq,|yj{sZ%L\:iq$]|ۋD!)b?hl/QLbXŏ#}c=H+}Fmz\q,L#Ε}K۬'.fcڞ㔬?ٺuC\m6wJҽlץGqHFmW)qw[ؿC`z!s6IwP}uIJ6pЭXw UO\͸?7rm4ﰽcqjW삥.;PC i&Yw[=b{/]S~Q%]JQ-6VȲzG 7~V+[Uv* ۰qҥQ*uxdE݌;q}(mtNɹӓKZWkeE݌]Tb0yjT1 Q(]R|B% qm6boКYO\M1G[} d7غ.]& ~e+E $UURnA -.cK۬'.fz69C__tNI+]S=H,A4t smu3n=c")r %}XHih˶MjxuS`?BC;ֵK*Ճ}bW#Q;u/ J=K zn ^rG3v۞ޱ34{k1iV3it]:|NI{׸YHM7wl?m_܀/sI:T=Đ.ÿ*]lG}f=qQ7=_cɃyTC(97?u]*lv WF}C3xo%wzPҡw (q*-{aȠe)E5Ze:ljΣJb/۬wqߒ !tEk˥?\W%~+ρ}s۪wNu-?'}K4 K#GWJtKGd P}oYO\ؐ4|Jץ$FH]om bmZ6Ms^Xb{W?;-uēZzcv3(]wQ/\pw1|/J.|*ީHҽ f{uIk|,yg==7f I_=FqI7>Dѣֿr "ir@WTXMoҕtoƝKe9dE݌[%sCJ[s]|yn)eYYڸ.]S\{(PnE݌[KE~kIQg}Ǹ(H}-O! ֒TԵ {$f=qQ7ֻѫ.TbtCF`{:3/ԽKbV_nؑ|$bwzn{F.iJ.7Kۥ9{#$X;P=MҥbFK6\{ߧﳐmu3<7J vZL}f:.I>*Qo H\湡X35Kw_zgS<`D!ݯ PAI3Tҥu]J7-/ t&|cχa sA¼W!˗@ןiRjݦdŒ.˗&Ľ6뉋wO~M}TmݴOGu S$ߍ()R}T ֙[l,TJf=qQ7}WA0y%vH'']$]J\ Kwq5xu34o\j*/[-řؑQL"Jq]gފJ \pZ.dnGQ%BlqKw~ǀOA҈}ץm+3% [kץ%8 J=jYO\͸#_rɮCg2[w{S^ˡOTRdS};YH6R!*[ISqJOQ hDw1Kv6JxOEN3H'fܱO2JzLK4M|NXgm"{݈"BߐQO͸#.x,oW.A mGw遫ҳifnl}yҩ5Jk+#lc%7vbgFk|*y|/S HlS1[s*u:)}#抶YH1o|lS< 6|\Q$\ZcZ(n9;H۪w==V5/^o}&xnU_啘.%%'r{Przߞ=m^;ֵ0?t|,ؓɼ`׺!kzf }f̯t|ճ ofg6݌;/Y)y|]2uD}XݕKά)Oʝ>=AYO\MԷ#_cENMD`UwKP N)&$I/{u3nō:}FyzY>&]J6mz^þ՟J]H[o#<s7_DrQgpWg,Jnd|I<@X\b=znv|e=N%>vs {ʆЕTm ]DqJzGmnn!_i8p6[%)6Q $u)]ʭK2ຖVnGPY_n=~G%z Ȏ{[ JZG 3KvG];ܢqݷ=&4β6ܐ}KרG6ZR&'nw}X?E՚y͸#tֳ0'y%$ɍ9ߚ%`ɉ5@UGҸobcbs /wz;qjîf^$)n[_8.i4R%s}4mu3_nd[k/72}fz;lD($1/#+Ӕgz;]a}C8|l^/\gܱ{7gq$g?QL]WɎ焺Ukw$jq\0T_\'/IҢ+u)e-4 37QMzn~>+rĆ?ڍVO$m[۱fK9%[ S' 91PzG wp;VK{֥>me%8o^Kvf%JZu ZoH.'fܑЂaIYLm$aΦ1/ԅԂQɍ3< mHowDG?s08^uS;jȬ/]v*}5K(]W߻gano /wzhJ3Q_q:.u]R>XX`Iz>XFpAw땝-"J, "&]V$@>WWJs#]{ߞm#p![|Uw]wz1rɅ<YR}Fn3_}7eE݌_?:T?o_[o?_~~_bF` : ۏM;;S_AbImtWP v$ulTP᭿de+ߛ؝3 ٲD]ILeMrs{F!\fKӝM-tU)_xL.?:~(7rulkʐuǶ4U,xkY 8,Ed2Zqt.790dk.#nWsR6[|묵-eߔ^;xl)L|ޔ;2vَ|?nx3ByoۛsRoD]>qm2^7;r K0,zom=@]F>ƭSlx-jv(^P3vy)p? ֑6{|vSq 8}o{V:G ;~.͖|rE._z|U9ox o_x㙷&e[=jr^;ҰEѨ]-7bm|B]]T.d| /o‹!zi=:iBv^^El=‹53!)+_vz/ċϵOOCnlS0c 7<_x/ Z렬O#8~]M|<m|sq|(_voo"e\aW#e?vn79}\ iio~$u endstream endobj 142 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 146 0 obj << /Length 561 /Filter /FlateDecode >> stream xڕTMO0WXC"G$VZ] )7CMKZh}uh UOMfߌ',+-IA )g A2DIM,I%q~*`Xd20K-p4xop^pXrW&I;X`Mj' xLwQ z[!? >}lXYU\v#ooN֏$xmN=4p*׽Ee.|:5ՙMs)> /ExtGState << >>/ColorSpace << /sRGB 150 0 R >>>> /Length 20331 /Filter /FlateDecode >> stream x}ˮ%qݼI$$$@<8pQ` mknDܹۏǏO~??~×R7u?~_1|×?S-}|֢K%__l[᚟|耇^%C<_ß3f?G.$gc??WksY}q㾸b[/NنF>?K9tgx襬ϝNxGg /:^(|?Έw;.{~lI1_pm)o|vφ=/k,ï{m3'k7:ε=y/^/~?~GKsݠ<[3}_f?N>W7M?6-y6gXE_gϰKYNvsN'5;jk-nYJ)E-qgϪN7دZvgn+^n'UyȎt|):(g ;̙tb\lk8~e;/Όg* N>_m궕픵A8o;+lL`(< xۈQ7ב9JM XF%wcx_rym%nxܞ} Nw_ փO\!0î\zv=iq~W~/ge1cN;ϵ״> x0M4~f6$\}ن'~_;is2دMb(w .DzK8?8wzκXzxTm>]7> &w]xet`?r89 Ϥ#_oؗ]yw88[SzV5Ӊ׊bП3y懐}&~.|&yсqpgeӊ+d;ۃV\7xqn㎶&'<5}N_ˆBs_ZX___#tb}iǗ v‰6qρFw9[ş5[]T'Hv0fFЉ;l]⹢ ƈ X TmCɅ5Ơc>za'ʃKNC'/bw~>>k֎M{p[:_͹l\pWNgXvЅa|b\@ą}fc/7cokԘ;׃p>wC'n;Γ-T\|sEK6}ĶE;LoΗb:v6ׅbtb"c~T_7t<.f~C0Y@YXB$YNQ4oAe Ŗ'^} l+Ёghm|>ƾ|/=tbc@+9l.xӳI Sotg`Z0.В l:g yA5 3lgZwׁh;w\RgZ撱䙕 {/z?x#U=$cfuI`NͿL8I+t5;84A'F>$)dԪyH+z[ z L *ԄؤgˡgzowQ&,_E.n;@nɘ+AϚ;8o_ZRFw(Um,Vtb\;}vaտ,6ΰ`t 6t`\PCin/ yg} 9%Za%,Ka/T8!lIn:qT%FpfTXQФC'.$/*CMҿ(e.:0?׊{Ά]&N;͝O89;3jυIFw}'wګ9/fֹ:6-}G&#IT~ęr;4ELGTx=`X(tNjW܋³'ń9f&I}Ӊennw߫M;1wV+< $ݪ:bؿ$9*KITv{}0H\ eb Q:qC!A2! wIޑC'?o3T[n绳˵O8/.2zF̞2`Unz>6Ϳv[Vײw\f_]1.eȹA'вa&Q'hT*Y1}]t3N6o/2o}ӻb}_!߻{G^wIP(pA/9o:1m_CRxo庉p=3$#M'f|\#u}3r:zz?b,+az}DtQ+]1=8_ys')Kd)ZL<40NPЉ++1YPc 5#Љ#֒u- sL"˶o:1=~O=4ee\'_=M]G'J0c2³w uӉ'%Z񯣛Tb6VQ1JЧ:2kXYK®qx.BqCcM'? <}CF;Q1 Ao-i%{z6FDE͢]t3!:)P:wX]k+"a*7YEO@z;a#l01Pk>sIJta=u(Ar !+ސn:fA~F'|8e-QmʌA' 'LM% J Љ|R-oC1F;@@\֡/Ӓ u~)7gkDӾ3g }ZsR8CGtbzA y:w`0VZj"jjߑxK&%LWF./b1!a j; @3hz?9[̓RӒ/VyV: pN.74\>Xݦhà.:qan#мS X83VO=rщ BF' Qh[y tyFB2/rHiw2cԊU%n~Va}j<&d4+{EnfG4@eY!S n8,rm6Mu̼PnJ2*FMOqƄ(i`֮p-2(\}IXl)]wX#q_W,N- ,o. Fg2{=$;!oO-\Ҟ<|^W5J[o1^Gdv gi|en'?/:qGeg-m!,O 9g;ř@zL?2cM6U&Ȗ@FWFډG}+DDoU/0KFXiXUe#6t =Rwj֋.k-bAz̘(3Genz U gBWoʞ Μ}ni=h%qc74ª/Z;¬b_lEjClkЅ;Źٺ;UbwvFһVB? oՠ5gVAD}iU+6[y8XN8^Oۖy8[GNʅ*?ɟqާ5Tқ$y6\Y:EgzYAv!7Xz,eJުLyR?〧xQ_5z%gڰ^\zĚKg?U\~>f{]|N:M':9OBI A&Y~rl>pbJr;fmA]R^ۈ d>] >.6uNV/* #)!"Ư;gN͝L>eԴ ɧ X\v /I˧ u#,“9ԛGpIJ sn`y!Jkf]9_; ة+3Ӽz. ށw@񯨅b^;L^H\;;W9NxGQ4 g3u,Q8ҘPt߇NLVp iɣ^O>$mnʢ 3jL\-?֮И73Yy.!ճ ҃+7oѾ>TGĊ,7J:j5-l4rх>!5^]#[!.YxR;c7:1i:ą!7䕣Tkyt xN0tl֥1~ĺ//^ժFU+"צ*$YqӉ4*4SeTa։2nqJ'sNЉeT /ބ4x@ AAt'2hU`H}t9;Lp!aXHF\OVVP JMϽ|i#4|]9TB"7܍E AV^C8&,VK/afeǯbXaH}EN;-ZB5P +(A1gݥQu0chϪ:AĵlvFև>Bb[zA%dJ$m$v!FhdZߠny$Nѻ r;%񽱵,JoډHgo݁_4e/mП̳;0^Ԅ3ÿsH Z%RGr/Ruqg7]w^+R6Y~ӛ4)jJ߁+PmFI[kGdNC=1=o՞NWF@|^|L pIzƳ {à] >Pw::t3Q &p% 6h= ^UT *a'C9L%5+[UcT *! b[HSS58wiN:1wYvё-|6ySuaD*qwnC'DLؗz"#L +tbKlnlèLyǼd 8ű઺n5_\xxy#h(v_t*VS"e ̡co5M G YR]7h&va%n҅ht;p-8tbVL # wAm.T%5c x4]ψڝU鑵㍞5wFA`E)4ҨqSL78y>>Wj Q5L}Yoa_3ȼ'PVi”(El6֒n]/I˨%+SKyx¼.(4ي+p-LDO`~* ei[#[)Cz(Gt`K<$B']2!]2#IqpU3r~N_ѐ.6Utm}'Xv /X]aE2kfT< NwZ_$/uQ.LYs3P?ǃ^u#TU5lIiz={Qp$.YPZ1{nnu?x>NVҬxRy-e6r^Џ?HnmW-^TVf`U=j^n7b%׊n \ ^>l˽|Ҡ:b1IŊEkÏ&rQZ1T\~szF`/쪢:beަV;gg3qi`1~>Y.`AE` I|"wN، 1-wb>'Ѕ2my.OUG>Fz`;Kx [߅wX:Or~Ǽw-`^7}o廷s;Ч<6o!pRToP^}[UƗo n~щ+%`weyrMv0ӅCΜk+fbA=Kp9d0tD%dy1yVg*=\7 +N@"ċ 2nrl>=]|tʼny*jpu,0,AZh5X;uJرyOv*Aѿ( cbCSTAs! 2Cn00E%dGMY`M5?yE?yiڭnOĪ!j IqWWhСC /]8o:z-+<|NZo:q\!k¾7X3UIJ`:T,ZR>43V٥tщٹ4[ iT;0\5@Ϯ@_ ڋxhedz J_.~a`X?]p^tovPַ)Pǡajmf0C%[G $ώ]6fidEH"3zr0:r A7,f%3ʐo%Ƚ)abqQO35JH癘lkx%#dY]ԪAp㎘dx2SHE7%t3 jN ﰒbƁF/IO_Pi^8C.7{fqfyY>rb/j5)"{8AL>s8:M'-Y{b&F'XYԧ?4lT^4iWoBt^f`SuA8tbu^zETzX/ʤ􏐿™y 6/2:f1xsݮ׋?׊z7} NU_9:Xu@M'þ%vqdZ kEͩ5ߔ M'V DrNpfO|\'1G)n"Ѽi_Aq}%]XAU5IDہ+G:H'VWYfމ[U'tKOg恐_;W&$.LƂ|S gס4C|2| N0 a;(K2qRt8.,:aQe1jfϴ۽Fdcl/fQүu@+,Ad'j7f檫R$ o5u*>{+x΁^{yл$VEt4lLXlD9Eżd7YŞ&Jc c'*(y6jx\2xS1Xqq6JȖb;a9LidՅpTL x4;Q9]*!LżVOT!LtǴ [gmS8԰۷_х?}a%]2VZbw):Ǎ'⟧Z #7,{bYN'Fngt(T L [_@d {aɟ.5q\XāGo`.'~΄%0 hpYt?EZl_ZYct⩬Oսb,ϓ6Y_!F4i̥VaƅŘkhEqyJ}$Fa{)3JA&i_$%p g< GүuӉ% h bT~oy$w:1"BĿtzQ B(yAEGU?r(o;.o(2r PvҙZc+ L_[PfeT/:1}E";}/1m_n27c|&پߣZ!J h~/yܹGdÃΗFc׋7yRq U&ߺb78TŠMU'V.MgX  Y,s&*fhxOd֋)MuBbX/ R)H}d(:BzS ,RE'Y95^mBE%d[SQGXvu𰶋N\C{(}X=rLĪ+2Mi|aFN@Vnc0Y=I&+/}30Uuַaa>yPoI?7:_n+3n_vTT/1)s#fSQf$F'I֏SZf֠ E|;ɩ'p'6wwzng 芲_@xq N8.N!nq!b?ʹXyӉ+_k *=3P$V\L:ɌN5ƒU;sϊ.o_ZXkV( fv;3ߘ@5*ĉ]pG&_{sGg?g_fr@*2JU茎Jh9 80ʆ($ %C%G[x6 j .X 7d60JȂZbf |3jȟdV&Jg8T 3gWV>EVB|Ĵ;FKa'HရjzӉa/J)so,:X2lBXFw<w-J)^5==j,0AX0;1}:UwzFi ^wDyW(iP>m *a 蹾` ^`@UDdp׋96bзmœ c zщ'swjbN5}GVTِZW7 :t!foy~DqRh~?3wщ;c~ߣ0:M[% s3j,C'b1&V'ʝ1<;}SCNvw\ݯvc ]7z%z}a3w^6{; EŠGb؋NpEѸleM'!yajE~0Ye5`:kwq6W xaw01y &0p ۠+qT s~g^`E5h(rt! '(MYybQ bܓЃow>0dgKۨ?z`h\ _ջy-[Ì΋O!fĝMq3ԛ"wZߏE Sa13eyrӉ⺆f*dQ*v0tF>72=0_eKXSa`1X6 iPyJPu@rA$G$޽K%VW뛋j`?'SOVk L)S3r:yŜN˾70MTЉUD+"2 ɼu:yQ^/4b-F:cF{AGS;árx`DzzlziL;TCLSMK鵜\o\}\i;&e2GRcJ^ a]xs[N~kGUZbˬc]]1Z'v~z]h׍ã降Cc$/l'o]a0gYyxD 'Kٽ]t; ?pM~Ћ=#ue袇xFXZ'+͜ZUxS䟧QVol:XafLk2=F9 fios1^8O;Z. K0Ηf:1tǗvoЩ201͋T׸z5g(i>jR$ٛ^?//e˝Ĭ0V5נT7+R'c ty0c 9GnwcE[?K#=q>gE{uAivӉ =o:83 -#Ԩpt/w\<ʌN]:Ba?+|F'̥rel:.'ٹ|*^|jqz|Fi}zِ8O ;,xS`VԳ8ۧt鎋$%V>'fYfQ]^|*P|H2ݛX'7/ ڇNy_uT¬gؼX Qy`fqeȡ_O:]|{T~5Q1vQ莫Qa0儧)O^ ڡ/ELŗW׍yVp7=0Jר-7nֵ MJT7!wU[&DmH6=y³B6y4̥w¾ZT7x&~kLʅS.*qS.z`CﲶSs #s]GY|Z+jjԲ']kWiG{+qSMi 5u.:qWa43{Nmǰn1d#oPP3]3jsavN fG?ojiwd&^tQbJ+P^p/CVzȲ^ne:)oY+l3f]OU]ᇗj}7 `cP 76ncu2ST7-8<^['щ 3l ]R9e:>*RF7T↧G֡Ofr&6*7ݱ03< ?EY#dVAotnj05fM#"֍Wap?Ey_~??;ɿዹI/.#} /uz7Ifa^mű.:13V)O"_nױ'"0s/7:1kD/ZKactEUYOQA~45tEcDEntĴ~:9>q}T`$bZC?ow+ٰqb֟+xVԂ3za{eǮbY-VЉw[!/V340 %EviPO!t N<+ܚF.,/vd,\b7Ă딶_X @`V1ݏxB *=iM̗tFmM{wp XՊ#1Xu-L@7au;)F'GtvwU0X3/NC_|lX+vQnc^七IA |i8N ˈ?G_W?Gi6֤EǏ?~Hv\i=w5̿vu)uvzHʹխ~cWW{Py'Wr H~>Q_=)eWZ$zEʯUlfUk"_:)r]4h=j? &A)Hf׵s\u1y .[ i߈aH;]|E6''5aN`~FS) &k%FT:P/tRt:%~=HqTѕN,\ 1 zm }CLZV z\!?F$ =gfSj_h/3hg?9~l ,̩;UW`b<#> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 155 0 obj << /Length 144 /Filter /FlateDecode >> stream xMN= 1 +2CsMrnB7qROQ;GB$"p`mk$hrMf;0f)?'U5MG jsKP" Eg8Α\_OEN{b >j‡0jE*# endstream endobj 68 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-003.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 157 0 R /BBox [0 0 288 576] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 158 0 R>> /ExtGState << >>/ColorSpace << /sRGB 159 0 R >>>> /Length 5675 /Filter /FlateDecode >> stream x\FrAd$ ,`k ؂!u?UQFdTEc4٬x\~?cuy\Gٮ>٣ǿ>xҒ_r<_c[ʳSXՃ\K}?z.E6{NAѡ#>*U`9 6s߾kz9L4G[ ܝ[+幼hdaSF47F/gozLs~bkkeϚ{a&\9v¹Q/`wRJ]{L?k=O뤌ue=%J}!ܨj^s\-qUsZjh8  WQG` Gl\''L\j b҇R# .ms A*3`3pY2Wʂ#U-PUmƒV#uy ^2sU \B*e=L"L!6rs^:Y&\U*é2RC*ڶI8ˉ pFuޮ𽼞/ ZD guh8cTxOp84Rᬊ^9WWgb`hR @3h7rTQN 7 "P8BTPԅeaSF47b:{RL k{ >,,%3cg/u1X=)eLߡ2BWFT`a82rbC;QӁu^FGJ&҃,MsZȣ?S8`{זk7 >[hn X^v:^2.fK\k7yf^ >Wpn X='ɽ)l;4pv~eb9䎪usD(HIf ,!gb 4:[hnt`,w녙Ɂ+$i@Ed!6rs.gg/ >\p$J3ԋeaW^47b:{L^ Y!g`e/| ;{ܨ:o}o0Y&5SFAʝU8:+3@rIZ C"RitL5ܨ:I 3'$G!I%$t>Wpnt`$wEWHzdUrzL#઱ՋF]LyOr^ >!9r Iz/!YC2^2\9v¹QӁu޽<~S?} O??Fl6Yc?c0Fc`4cm k`̥>FΖ3Z"x^Rax3kvA10:Lj1br X\X\ \ oc4;vQ(߭\Gv~+e~ΈlD㎷eW^֯hF؈b8Zl6{0zinq׆²lmQڭ -ʺA԰:bS0-=A԰lsSc3!]я$b/ &h1jǜM\ot[#n{춨>vbU4-@`ʱz"yO;5KfmAqnc'FXEۂ|Wm`nփ{کqYd&<㫄+#v[T;1*<ˁ0su޾[2-zBnrt[ 0N(ǚnm*جШ -@ZLPj$e0-@5Fsn:+<[&Hf T)`bn v55Ws[g[/IB Tz(XEۂ|]mp:Y&̤ۂ>ThʀJYhv[,'v5sykur[v$E@ guh8 -jc*T8'FM}&t[ %P*al40pnn p䣫l*U}(XXDm:Vs[X#BX=){af7!*U}(XXDmA>Vs[x/BX=)enn xh>,,YNl5sWs[}?l -Vm cX;.)e[m-~ `B~L-{&TT-*#bn kDs/yO1KfmAgĞcEXEۂ|]mp:i?zL-{& TT-*#bn Es/yO1KfmAgĞ BlFۂ|]mp:o{]춨>=Aʝ!hmr[ԥAʝUѓB܍2- YՇE.,n 0P]Lm1^mA!I%$̤ۂ\9v-Tt[L@6֋2-^ YՇE^,n pP]Lm1^mA!I%$zșXFKfmAi-^ >-nmj8 -kK;'Fu'e^GJ2[dY9h-@Gֈm!n02B $zșXDmA>n^8fn a,E-^(YC"on v37s[g[/̼mAɢ9h-ȇ m!n >bCZr)PԆϓ32 S ?h2V,GH A%[! &Xx8Bmp3& )%k!A`\ès:g\'}%!%BcuH841я9Yl3@W"8CJvX$Y811' qocj;z JwGv-EUШv9MLw IH8 ;@UѓcUWy!xd=."RIjP]L1L5hz\OEd&ʱכCu1M d& f;xi(őwP{;TwLOo/Ӹݱ/is5GCQħE㴗hwh ޠq4t1 rs?Wgq_q{3ĝG[3Ni_qg*>ߖ8]*#OOQ0[2.mAr3m?d_q1D-1N5矜_qSǭͧ* ߉8#Oo0u]g{ڿ%Ӟ3bY$:3zBu]Ҟ u˪ɞQM_b pάPPa ˤ=L5rg.iϘ{ mx/gk{ M~3b %3i Wi3^ Eb pT]aˤ=\5rg.iϘ{ x/gk{ B&Qg+^n 4S/Qg{zliLCPg{FOȞ%L̞d@ɲr&Q3@Gb kDsgg[/lf WHzdY9Cl1{¹3u޳ܳe6g+%PETo =z:Y 33^ Y!g`՛=|-f^8w1{+3ylP9 f`tn fȸ:㛽oz}ÐHZ1ND_{cҋmvaeu]_@hLM חZ0 ke'8 sq=,?_,5_|ǽ7iֈ^n`~3.7E8{chd,|l3 -fu~F|4DD\(Mr݈"6"G:KA0h K!|, ;Kcyj=qm{۪{9GΗy>Z0t~{=׃Uҫu_# endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 795 /Length 1802 /Filter /FlateDecode >> stream xYMoHW1A0cǓ;I;3k@Sm;Ȍg~%[$c簈0Vwuu}z]dHdI &HHNTt'$YɫW}椡^,cUMɋ_b+(Oiin:߿I]oz],ƫⲩuUU}I}=H-\uɍ7}7M734]w07mu74=o|Q|QL6..F[#$;Vɴj'te388!5,@:V zߴbVU~ZE]-Y1W_Ɇ]g`2=]PBL9}xWIv"RInf$Mߖq9'U񺹢V0ʳ ZD b+GۿP2uU^Q5ZR# Ij6: #mR t8F$Z0YmʄxG) 1US*,]-ЬƠzcWcuAr[ k̉k 3mS~Gǔīn, '0A]7s.aޞzơ.ҋd.q *H4k'U7'-Ӫ\҇[uҗU`Y O4''>'E/& foK쪲H7D\i'mVw;eu|"GU/)?}Y2& _.-Ĭ(.feՖbMb6/ʶ6B[D~I#2KIȘzI͊i__m?}5SYY(= ވ?wx۴(g]vxʸV%.+[iʡS+*ݧ̋o,… 7i| 7R>Y!7+81z 9+kbljG^q66W{DJ#M$dDsNx99[w vS ~tu}uEoa}]2ȭ*F>~S/>Wm?+nI "J'S! 7fml8=?B/F|o-.:Q="^Qoah¼K^.uR=^{%WoKS# I)ViJUstʮ~RjX:J~v)󡀿zʧQʷ1[ y݆bIn5[nyc<_]3_)cr]4KX"uw JSqO]/׋{^Nb]hFߍmrߤ^cks%{=/ endstream endobj 162 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 165 0 obj << /Length 436 /Filter /FlateDecode >> stream xڝRKO@+6+/7fM=IZ;3 D{1dy|3;̀H~:Ī"w3]0ƍ֋>zor%Sdo!ʽh2BQ'y|ų~]lj i.T_h,}GLŠ\ }wx:S# :$8lGP&.=Z؃^1){݅3S;HӦ=0&fCj5XaAPhmX.JL62l,H|4}L6O endstream endobj 110 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-hbox.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 168 0 R /BBox [0 0 432 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 169 0 R>> /ExtGState << >>/ColorSpace << /sRGB 170 0 R >>>> /Length 13553 /Filter /FlateDecode >> stream xMouWptl06"@RRA~Wg92VW׳9U{Q/?۷t:׿9rzo_o}{^nz>_ˏߎ'.o׷ OG]Oϯ|y RG?C{8a?W?wnzǟu?c=^?O/?}pO7?=㗞O{/_NwAK^~o a/~/]_OW{^xG|/?@=z ֳ_cԶ=N=_7O~~^o_NY}|e^֋/qv[/~/?//=w_?877?~u؟^~=~xw/?3 c^/t<אag>k>^p9^w>1=x78=|^XWxqpޏKpX)vYojoOٟ/z?`ǹfo]׋%>rz~\ϿӵO$oĄ7XO4sՄX!݄1Oz#܎ nǗ[8ALz#ܯ7'rx}s˜'l}.#Pr:? bxXsHE7zw~, N޿zϓ~WT=^oǑ$>& [o~1a데߿"< &lWĄoB3cF_~wL+ baX9rȢw'r8RaN'r8* cMxӭ X]p?P6$PqO~=_oQ< se; &l)ΕqpFs8Wƹ3& [o:Gse; &l)Εq |7A&\3& [o:Gse;cFs8Wƹ bΑ"\Θ'l)ΕqpF?.Dg<;sqΟ7# b> ?G۶TYqvt8jNjJp6sL,g8;9ALz#P1a데Bp6ĄoBEȳsL,g8;1ANz#P1a데Bp6Ą7> E8NN,g8;>a데Bp6ĄoBEȳsN,g8;1ANz#\oF؏=q &lY(qv |a"lg'' [o}qcM<yv ba"lg'lY(qvrFg89& [o}q &lY(qvrFg8 b7"l9& [o}q &lXq9'l_ߝn' [:m?oD8qϯ?Vt1a데O[pәĄ7>mE;NgN u/O1ALz#Vt9a데O[pәĄ7>mE;NgN89ALz#Vt7>mE;NgN u/O9Oz#Vt9a데Bp6s=aX'崾e\dٹK9hI\d;aTM5N6NJuR5'8>F'u T~Hߜ_}%ԇfY]ȵm튋=յoi~vEҮqo>+d\{|D8־GiNu&*崎^gxpߟ|~(q8Ocflw`{e[yOS޾}fynX}l>CS&xk?発ayfNǻ0ssy9U7oA}<Eq(">.dM5ߛ}kRPϝ'MAӟIk̚ôd}=? p[}s WP|d xO ۾UC j-(>Rv s@fZPJh~6?[rC>Ň|5`9V-AF+4ӂ%5`'9V-AVx"vt$Yvdq} _ bf gU| jѧBZ Q}  +Q=3TA3QYZvodEgaA;H;hݷ6L5JϜYPNkNs@Ђdg`-(kG5`G9fY9| y zP0J;l;zĨA 3o(y5`9^,PV )v|>];;dA;Lkߎo?^?py~3D8mhG/?f M!JK,a!埍:$=mnFd+€v6KX|g/Dv IO%,[> @n.FKX0]EA6 ^[+?I{OT$ᵵ"Jk_T$D#jU$7~ިH9FxNHn !>>HmɍG*R&wz^*$oq=#Otܝ|=Z+q(FLR={%P>KY M@12gf?| bd,ȜYb83F--Nu@H#ͶX(wK~9HmPlWB!#13 v/B1"3I-ʝ_(bdf0b. XAl ve/r1R3ymPlB!#6c4bٮB2FnfB-ʝR^(Dcg f[,;UPH$̶X(w x1HmPlt< -Ǭ;ePψiB] |AlrgX  v.23 -ʝ](Ddh f[,;ygH$̶9ۅyGX-.T85PHHiB%Ff>Woq./}]u]އ;~ͶX(w[slrg6  vo.45 -ʝ\($hk f[,;͹P9HmPlWb|Al vw.45 -ʝ\($hk f[,;PH$̶X(wslrg?  v.T&hkF0bnQܝ SC&hkF0lwB!A#_c4b.хBFf-ʝ]($hk f[,;5PH׌aBݣ  vLz f[`v.56I-ʝ-tTȷ?"g@?3Jg\ߏ+~~cͳҋq94᳔pϾJ/FO,{Uz12.g?|WȰA:鳔pOJ/srhV[Zt1FmPlWB!%#Cs0bٮ҅BJFf\-ʝ*](ddh f[,;UPHЌaB] )**](ddh0bٮ҅BJF iB] ͸f[,;UPH$ͶX(wt9HmPlWB!%#Cc4bٮ )z f[YwtlrgJ ) v.R224I-ʝ*](ddhf[,;UPH$ͶX(wx9Hmq=sB!%#Cf[\ptlrgK+4H|by/ 0vuyޟߏGu<彯빺J/F᳔pϾJ/FO,{Uz12GgF,{Uz12GgN~,e1Ӯ I>(jW A#_#ʧ v.45|mPlWB!A#_c4bٮ҅BF aB] |AlrgJ*45 -ʝ*PLЙ9Hmqٮ҅BF aB] |AlrgJ  v.45|mPlWB!A#_c4bٮ҅|(f[,;U>ʑ3_s4b}]wj|(f[*]($hk f[,;UPH׌aB] |AlrgJ Q>̶X(wt2A3_c4bٮҕ)3_Al,ٮ҅BF iBο uGg@^H q9t~R/tϾJ/FR=*3J'?}WȸQYbg_#r~!hP]99S4F+Rt1FmPlWB!%#Cs0bٮ҅BJFf\-ʝ*](ddh f[,;UPHЌaB] )**](ddh0bٮ҅BJF iB] ͸f[,;UPH$ͶX(wt9HmPlWB!%#Cc4bٮ )z f[YwtlrgJ ) v.R224I-ʝ*](ddhf[,;UPH$ͶX(wx9Hmq=sB!%#Cf[\ptlrgK+4H|by/GUzљy~?oQ_Ju7dΐ >K)ezA2Igg)qӾM/HFو᳔i_$t }R7 JgF v.r4R6}D˭F],il&0"[ەXH٘$7v.46' b],IҬ~ˁXnmbef$aV?!\,kb1Mg$iV?Xamb!N#ls0߁ [źXHۘ$!v.56' b]Dhfrk[ Y.Lpf[rk]ק;BuFnNfvI"S527}o8av.b5B7&I}4b]\̀frrka 7˭],$knF0fݱњ7˭]a:$̶[-XH$ͶYnm%`%B|z/Fziiҹl].ȀήY]7)!~̓# {o :RgZ &Αf[\pŀPf[\pPHliŅ ^2A`Ņ g[Ŵ2v[\AY=XzMdg#K/b ,1mD}1Q:^EBY8K/b:ұ"-D`L1mD&~61Q:^CY 8K/bۚct,oˆ&21mD~Nҋxh"bcE [?t`G/ oKK0,c;Ƹ"fXzMdg5]$K/bZ1m9DFұ"(?'cE [TtfG=c镃Md!`aDp,oeW?7[\\?YMc?\x۶Ph$ͶPlB! `mqvBG iŅ g[^ I=l ξ((%J]tx1}!"#>+(K/bCDF|VQ:ұ"o0DdgDp,+ YFHҋ("#>+/bCDF|VQ:ұ"o1DdgDp,k YFHҋ"/2DdgcE dȈ XzW|Ggc!1}!"#>+(K/b6CDF|VNҋ`L1}!"#>+'cE _htEgc;o4Ȉ 0KG:+ YX:Xz+Š_a]?X5%a1:AJ~}"VP( #iŅ gj 5%l ζ(jJHmqٶB @I 0Bo5Fv[\h,,$p,[ YXF%Iҋ"o5Dd`AcE jXz߷"0&Jҋ(((c"8[ YXDXz߷" p"8^,,ct,[ YXF%Iҋ"o5DDaTt,[ 1KP0*I:cVCDNҋaTt,[ YX8K/bVCDQIұ"o5DD"o5YPDXz,, 1=b[<?ZұJzx9mQ(d}4f[\pF0̶Pl[B! p4Bm5 A`Ņ gjk|Β~.\VC+(Xz߷"2p"8^tcE j`L1}!"#>+(Xz߷"2p"8^tcE jȈ Xz߷"2ұ"o5DdgDp,[ }#̉ұjȈ ҋ`L1}!"#>+'cE jȈ 0&Jҋ"o5:"ұH߷Edg#K_,p,aEY FHҋ>`jg{o5|^+s:VP( #iŅ gj 5%l ζ(jJHmqٶB @I 0Bo5Fv[\h,,$p,[ YXF%Iҋ"o5Dd`AcE jXz߷"0&Jҋ(((c"8[ YXDXz߷" p"8^,,ct,[ YXF%Iҋ"o5DDaTt,[ 1KP0*I:cVCDNҋaTt,[ YX8K/bVCDQIұ"o5DD"o5YPDXz,, 1=bG@Կ3^/CL@k%_mQjQ(d}4f[\pF0̶Pl[B! p4Bm5 A`Ņ gjk|Β~.\VC+(Xz߷"2p"8^tcE j`L1}!"#>+(Xz߷"2p"8^tcE jȈ Xz߷"2ұ"o5DdgDp,[ }#̉ұjȈ ҋ`L1}!"#>+'cE jȈ 0&Jҋ"o5:"ұH߷Edg#K_,p,aEY FHҋ[8XP~m/pEP( #iBso5B @I 0[b¹B$ ν 5%l gjFvK,XzVi,,$p&m50*I:n}߶Md`ADp&m50&JǭobV,,[FQFA71m!((c"8no[& qh" '71mD1Q:n}߶Md`A$o[& p"8n}߶MDaTt&m5:O *߶`PXF%Iǭh" '71mDQIqh" '71mDQIqh" ([FG`9Q:n}FYX8eU[տ3Ɵ(z{/"lm5BG iŅ j&A`Ņ j&Al ν I=l ζk|Β~.\Vy1mDF|V1Q:^FYFHҋh"#>+'cE j4`t,o[ YDp,}߶Mdg#K/bV1mDF|VQ:ұ"m5Ȉ Xz߶MdgcE j4"m5`Nׇ|V,p,o[&2ұ"m5Ȉ Xz߶MdgcE j4"m5,"ұH߶"2ґ/bV,p,oaGY FHҋŶ{5%a1:A<J| oחٶB @I`I-.T8VP( f[\pFPPGl ζ(jJ*}Q,t6₥o5Dc`A`%cE j0*I:^,,1}!" ˜(K/bVCDNҋ`1Q:^FG@AELj0&Jҋ"o5Dd`AcE j0*I:^,,1}!" (cE j(O XzF'QIұc߷" p"8^,,cE jXz߷" J1}!" (1}0'J+o5Dd!`aDp,eU?Թ]z TVtQBG iŅ gj YMl ζ(>I-.T8VPHf[\pFFG ,W¥o5cg+'cE jȈ 0JG:^FYDp,}߷"2ґ1}!"#>+'cE jȈ 0JG:^1}!"#>+(K/bVCDF|VNҋ;">+(K,p,[ YDXz߷"2p"8^ct,[ Y8K/bV(">+(K߁}QDF|VY:ұELjȈ ҋ^V`t(x>^l~zO>zǛlzV[B$*mQ( -.T8VP( #iŅ gj 5%l ξ(K:Imq۷ "o5Dd`A$K/bVCDNҋaL1}!" 'cE j0 ˜(K/bV X"o5Dd`AcE jXz߷" ұ"o5Dd`A$K/bVCDNҋ`QIұ"o5'XPDp,BEV ¨$X1[ YX8K/bVCDQIұ"o5Dd`ADp,[ YXF%Iҋ`NҋPf@Ac镃߷"0p"8^ʲ*?wy#}|1 tBG iŅ gj YMl ζ(>I-.T8VPHf[\pFFG ,W¥o5cg+'cE jȈ 0JG:^FYDp,}߷"2ґ1}!"#>+'cE jȈ 0JG:^1}!"#>+(K/bVCDF|VNҋ;">+(K,p,[ YDXz߷"2p"8^ct,[ Y8K/bV(">+(K߁}QDF|VY:ұELjȈ ҋ^V`t(lq׷Ko5|^+qζ(jJHmqٶB @I 0Bm5 >f[\pFPP0̶P[b#,}! + K/bVCDQIұ"o5Dd`ADp,[ YXDXz߷" p"8^( ұ"o58 ˜/bVCD1Q:^,,1}!" ˜(K/bVCDQIұ"o5Dd`ADp,[ QFA$K/bVCyaL+To5: J"o5Dd`A$K/bVCDNҋaTt,[ QFADp,[ E`9Q:^98}!"  'cE ,b|(xKֿ YM>_k{2CG'D!#̐ȑ׉AlPfH@ ?(IY|? ?eib#0 D~/G]}"#,.1ˑaavgˑaauc"_#&舿>ߟˑaaĘȰ09OrddX$1&m921 Ordc#1&ik sc"_# D~,G)-c"# D~+G!%c"OeAfvf~V + 3O1Nfxqۗo6; endstream endobj 172 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 121 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpLCtXs1/Rbuild3f65382d518a/hexbin/vignettes/hexagon_binning-hdiff.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 173 0 R /BBox [0 0 432 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 174 0 R>> /ExtGState << >>/ColorSpace << /sRGB 175 0 R >>>> /Length 1378 /Filter /FlateDecode >> stream xYKo6WR$h H{sY?V)Kpb}"?Go7Oןޚw79#?o:O'uy| 0in4sh&; b!hܦZ)jWv0y&̀Gx3r}~s|4>Xpԏj/NɌ9nݕ9> ?Sa0vM2ydZG}˽Uz׹vV>d9L&WS\ٔ_Mà /mt&p uk箱՞.>q-''g:H.N^R١=9]j$g?%|H\x|o߾?>_VᕹyꕡgW0g{ng>.ev.g :gˇ50Φa3{ HOUv\EjS,蹼oQ,Wnx[G@\;-fst ϵ> R}Šc~/4=F*4 دAː!v8@@*^$4 9^ DgG' !>F Z/d$ cAв@F*K4!3B̡egm4 9^ .4bugA3hrP+|GǵUui_uY)8Oep::-iR-;p:A4i Cg8\<Xݣ~Fgѽ,=9Ѣy-.5_fw S|p<B*jf0x A3hR@΂hcD`#K,6UNDAÐj ':!/@]֩Q3hRDk!Bs^z )^j gon财Ԉvͧ8ysTQsƖ!KP!(ujT Z/@]֩Q3hRD"#MeHZZ!KP!(ujTzG ^ `|Npݒj&B}6,B=鉰c0x"5uf0x"5uf0x"5uf0x14O#j"4 9^L\͝uS7Q*ԝRw֩Sf u"hi5v T Nma?UTujԨEMEJm5=掭SVcǠa-'5wls@OFzn9u?݄|}#mә^=?Rf}:?[C:sX\L9dlO /g dW endstream endobj 177 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 178 0 obj << /Length 119 /Filter /FlateDecode >> stream x313T0P02Q02W06U05RH1*24PA#STr.'~PKW4K)YKE!P EoB@ a'W $o&| endstream endobj 187 0 obj << /Length 135 /Filter /FlateDecode >> stream x3631Q0P0U0R02S02VH1*22PA#CDr.'~PKW4K)YwQ6T0tQ`H``(`   ~$~K  dE@Yb..WO@.gC' endstream endobj 196 0 obj << /Length 150 /Filter /FlateDecode >> stream x3632W0P0Q0R06CB.#3%X"9ɓK?\ȌK(ʥPRTʥ`ȥm` *og`?: A u } )v endstream endobj 202 0 obj << /Length1 2028 /Length2 13595 /Length3 0 /Length 14831 /Filter /FlateDecode >> stream xڍP[ n {wwwww %h wsޚi}WzDYA(io Sea03123"PP\l#PhAv2sč]66 '/ /33 xn 3#@@!ftyO?jS [`b }hjlP7]/>֐mݲ(ER_?L-q!>eՈ,(4C @G7bD:ߓXRoMָ^k=为87'f(Ed+b6"GC~i)8T2dw仛f;hN)(yRTH'גV^Ւit1>HL]!5S􊗮?=q,SM@͸+[mVֿxSM4<ȻU ۴QBBnaEm]q/؅~yXTz©^[TjYwVc$z '4Ue݆9桦*R6ev|D(^=g\e^i'2?Xd Vr%IX1R-y*:>(orl1M'ЗtojQ 9)$ ǻxեV])ЍRw:zj i`f09Nnz;SYziI3P7nL!vPѢ>zq²dL/eoqW Fh%.86 XẨ>|MK^ç3;.Wjs~XW- qJKcB8l%EN|tH_!ܞ17sEgb)+깉E(rCcȇh58;M)s^ܣd (cw t?״-;T.rlkȊ0/`d3Yd[5S EBuzxSŕ~̢o1\,.) K Fbk_K2r\P*?0Cxt##"ڭ$ ;Tqs&>:!A3Gn.Q{p3>֎՛r 4e+gOv0FU1GtLyARvśzԲMs'̖~}0'%/WZj,&kd|0@Tʰ}Bjlıͷ*1\sS'̌l2^kl;\[hO {1olG!Gm8!ܧA_[W5xUu俶D7I;xޣV&òz2so =M [H.|8)AzW(F̡*-wsphͿ{W5U:B@3,ޥQW71Y!?9BO}9jw`7㐃 %uj܈Sg6'eJ*%ykeQ}ȟfചZ(Gם\N"]\ޞ 7@BuuԴיh=IsSZM&NA-Z'Cr;F8Y iT7k/7phnT&}a $2^'BDLh-mCjgZ? iJ/}r]3;͸Ɍfn6ԓ=qeo*/bۈkǧezǼν䶈}7]֎VQ9(O+L\^;V} Ea*=!zLJ&_A+\Hbۜ;^ZYN6x8'Ѷ7_78GP'4u1cM 88X`Hk|=Aȡ<3#6qC=X f_:o`=kᱼ<ǨB/O3[ċEmrX r 4/=ktDhޥX7a2p֫2^|ϻT2`,l !O"[=0*|'׆5ί:8AHn4K]хr}dVȂQ&gT"뚟=y|obf l,͂eP x!}@`u%\ٽ̭Wkg!Y[3@ =3]=[bZ35|7}D5ڄգ22"Zwr>O/.azr~":/t25jZ`a`ٿT84@¬.uSI/.p} +^^ykYz&<>o)aF;Q*o̊DCn#񑄑g6%Ϊv|@tP@waãnJ/}ee&2hg -o*{5Ale$bFUCI%yg1D655Y&[loT IZ_h=Q&B-Q[0~-r;p{9O!! 0 D<gj;tIFO4L-8a!-f"D Għ ];Zjx:+)QaCEҭ\#ӣclV1T\n0ft2j32ϓ*sE*fPb(t"gީ㕗;f)AGt4 &? qyp|S JD3Sa B~͚Ht'h==H.UAuKj̆\W5j9ȉ`*!szh)HI8JCpxq8-G@"d d -x##U)ƴI/izx-a.*SYgi[{RuHF{d^r߼cFl0 %0Fʃk.FB˾ޤ$UVJ^?"?(?/Xg GOôu#=/T@Z1aګhuQ3_x.&)>G_5։ڋ!v+bi=`"({)4N)gK7 @fٌ^,^vVď4!QcB;l *5x:z:nNmYj m뭩]6Lˋ>10W"/ v\Dۏ=krˌȑ͇GZݜEaum'kJ}<8㙉DPH$6!.p_f>.]bgg7l>0PVՇ#~)ξ✠jYĒ~0*:uʻLJN䝞c%ǧ$ʈg [|$]sF(\ E@ .j"㳠a%]_ΜƯeP'a}jb_#||3"̢>N)Pḁ̇̄қru/L()I/GU&C{Gfı+4EP(6 XNq`.8c᝞*%X' LIw@O$[V@xPKS-4ӈ$&?+C}d7EDHHS ax/\C8LtٶTM׷(t?Q!lq[/Z$O}'r2 :V_wk_]M}i^Zc5A8Z;9yB"wY< 9H*Fǥ{u-Esbbǰyt#26Y?>mϡ-[X: -IޢTV:\&e5\arPଵ_]".ЫsBhɖ|q6/oM?|TځE[PW7^cpMǷ1vZܒ>gȒo]/fcl˫:C[|}0t;K@4Uey0c5?m EؖW>\S"Ŏnպ+K,ZW99CJg$^H~! O2Hin};OV"14y*(V=(qCB4xWY|۲x" a.)l߂|'E,,*S38i g/)NEn{pLjX/63K=K )FK~DK!rl{RWvx>2usO#ST!|6t^xQF!?($7 lx ֺ3VCc]ZcY>naUJL{иCЯ#UAb0ҋ-o_.ATz-.ET&Jkq,v}z>mFHK0}zb2nC7!n&i&&ݸB!NgJe(g4 ՄapDU+0x4T;6".PQRq7y)xkݴL8 0OnԄ}^d:5=MS;T=wR[@pz h<157%{тp2ARakDWxd4EJ~ pHaDZܕ/B<.3JfxavS}Y˧$c J0af^;hF-gE:sd7Ep]T M~ƐFj O QCnL 4ZGJ=q⯿/,=1DY͊ÀE Xu7Wwy+p%B,P|=+= jQ]td"lv^|= ՛Y :},(G Ygx⋽n מlQ%هIh5$*X0 6ѬKI|3dFڽ- `ele XLS&QGE!۵;2M;҅J^7|X1CD[;EJ)%CL :C$8,B?ZzYHLܲsF2&aI+WkC^l7C ߷-Q?Oԙu}cZk[Ms]O|{a#['%A3sYl G*Dw9D*1$ӫC֣\U a ?l:̱TPg`,< ߚX!q cO2ZN͕"nQɯŌ1 ̣ck4PRB᫋4I):jd/:| !P]T%8K@${q?)bo+WӒ-QZr7G!)nF&!b~Z #[pƹ49(4jŅ"2}Txىtg -W_ᖆxͪ}ķ6%ŲTc6L,`+"vK}pS-KޞY(c$|se˹ p~5D"+8)mMMy"m/[N=ڪcc=sTA~/7PQ{=ZO-Ջ!?T -# zbDR[Ϯu1 \2cfOR},hWUɐgQ~m{2zf'!HPG&v5t0mzpv0qj|۝mNnG 4{Lj]kF|#FNyoOYT03g ={ h!d>'~fP:JWAMۢ$OhR3uݴ$iBJ\oS&s8<RZgȌM5r@"햰4 0I+|mǗ"wSnĊ98eM;f9Bac1h Y[/>8yjo&nW1 a&U-'H1 @|='Z.r=hqk*$Trn9nt VǑ!?d65Ku߷~{VYlVARZDkg%E0ƮQR@A=[L@4("ÛQ$A1Yё9#x TC,p^Y}S~ ɍy N]˝I2>fϖ]U4yU(jc7.P :Lyz?iaґH9O5dk}01/T,_#ㅧMl}jT_!1Kw!(3MJdu\Z{x)#Pl2d,̎ 4>!:O)ǡ/;kjf4Dͽ29DޠT6KV'"2_uf}o$-$^wDfpz Б Ӆ\ߖiw %w`~&{_xi%/x\A36):xN?ŋB F LR>SJ!sej9*WHf3}q0`Bڕ?fâoBcHNjSrμr[}3>yn;eh*>bҹQ{iiI=e=zhC.q!ʞ0>fSލU$= 7!!ĘO w=a %2`p搻YYk6'[V e\52v0άm[g޴㵑+0۴Y%B3se=PԔERkpj4\zS9[94 ϡ&|?Y֔"U>J$^z QeNHJ]yVQ`H w9qڂuΜ~S<%QrL׺YEnCdq[.2LU%|0[s'&3 zw\~yțpף:+r]ù'J]*_%$&ǛC0v\ 0zDAsԕq t76}Pę/Q÷1vf4?d[(xGCaà(>?erb͹r>&%e)c'( " \lÝ v-.3ПUbq~Fc1:24^[f7}FsKA= Ze/V8DB\CNZmӻ Ag.x/k.ڮYbo&XT8iKB>6`7 A (2y6⥰h؛;6hFŤ|ߌmF)9[_C>eI1sZĢU01kP4|D3zo 6>Pڧ%3ʻC}\0sc516E]۱򫶕$1#)(ʗҫI؂x\ei5b_ˤYzmE[J]HW>#ôE WݓdS;:Xz|ѧw-x~@\ v"s\/B=)\ 4~pPO [+oUԞ=vRD.YEf!fyyfeuMtƇɱgɼ52&j63vy<]V UAl\8\ +TĔqevS(!/p'q -VC&o1,sVxZi/ky{IF _Yq:2l*iKD8h%E6,u=0+w>J7j#u1"EB;jf.pڳ{@#7LiG:jhH{&2]V (9hPcvfV <vr>XK֛ޠmpQLӥv]Fj*RO7 XQތR^B^S,0[&pWWJǍQ-I}Ys t{&U.(BZU تS]Q%r #I1ťycn~ ^5u:kC7~r³( j]$;Ӣz`@I4X'ndEZ_!=~fY%Hb bSn92T3̟'DH,x¯2rj\+IPÌ0*Kpo߿8 زaVDK9fQ'~?T0K-fjC:/j(,9bjEw 456j G^Ae dOmLD@9S,m+m L%tdGRC?RD㹎PlF/[ۢS'ڇQM`j?zTaB)V}¤> {rrʫ6"+^g R\N" l ec,"-S~M{/HƜF$e)G~m#0DJ|`i[@/.zYZ)iHpPsܼa pa<_ݻ 7z:JVe TdXU ktt~ 3Ŧ@pBz-YqpLTjWu]o։_.o{tZݿl޶rB۝oHiϓ}aWgk iJA8*?vœH6߻7h}m98f&YW<Sk/=F"w}vѴdr˨аWQ [$HHk>pf|W3ʷ'P2RTgE侃 %,HYce56Ҏ]42<| X*8^tRE;R:E`eL-lJ[<-C) ՠcPΈ?9socZ/O@Cf󤟊 @.\A6#-}AԏuRHQ@^xɏH!c%CcBuV2' x̒h)F!ywuNóұ$؎0 |ӂWQ*c{3OUͩ~bs11V=TK~|7%u;P$A9FlQчP)DtbtḨ k1qrE? +fy%?D޹d fՔװ3 )AOɦ\Y@&3$_H+¸ ){^}Y"͋eb4=Ӈ{45<=+Z Bp r§LbӠ!ªnLDʥ[ʔꭴP"x.J,Q5W%t{4=<$M=[C@cV[h_Ajp{mVnG5] [a#/1@ m3y*q5p.0Ӊ W-*Ilg(Ds,: Ck>aqUnHe8U=aM%0ZFн+IZe>MbTZp/_]H" A`~Y*p'iyg| Jw5 K{$).$י3!)wv|)|8. 2 Rp*"9xL)k"Fg8 %/]-$8"Ϯπ{exi]nqwedbZ8qmw6;2.\jaTniފL%L΍sHg>nbSTVr B02$./5%e'#h%pȸ)qj6爙[xoD77G̼ވwאSX˘VG⏎ّUղ-dBgMZ)tS,O(/##bB?H{CU:&僽D( _Y|R)><#Föةk endstream endobj 204 0 obj << /Length1 1563 /Length2 8505 /Length3 0 /Length 9543 /Filter /FlateDecode >> stream xڍT.-CJ3tw4H0PC ] () J*Ht7grkf㺟kMV Xc` TT8 Dӂt.XH9A0L@v.  6: An @vA:z:Cas~038XpH؃!  f hhB!``@.lPg+QF;f %TAJcChYC\ThB-a g0.\.`gt2@,`'_޿ApCA+% PUfyX ߆ ;(؁J@ saswxe,` !`sx=od q]# \ y`'ܚZ?|Kx`_%r`ή`_T7BX@a3p1O 3`ӏ0 ]B_N_%zY8<@8A_K(wwn aw0U(`ÿL7_|濣_ɺgCŐv,e"25 Xٰ&95hÈT j%*ܕ~@EcP04*_%n{fr{eˌ)׵{FT I|֦I^7x iy[?r(D\t!Kk䶊a!J}+\R e`QIy(mq El}U!LŸk\0Hkp2ifݮ%~Amk$RгbKo/NIy(h#O5R^>UFCb v{oxPAe·ݮȷ1l?/(Y ݞ}#pFy!fTP>~.3e;T0(:x"ښm/jma"d. j[ n~QIPDZe%D>.rޒ8UrT$MϬs.gY"ؔ&fPǒd:E˷AOu)H73{W@;7.jo,8O[ܣU*E/}/Qd'cpؼ *~aْciSb|dn@I:CB'H&l )Gw|`ܵ5fM^q{m;htĀū|Ru!lMcC陒.\_lX2F[PA!&Ow Po9'6r8B":=DG,Pi\dh G3all2p7ks3t-, qxYoi̕f<]e xQ>> r4QmW¥ ߵli>Q;EklwDgrnOk.HC7t?^X&ď|f.X~nݏ XOw5:bBj%Z$wwCHJ;[&碿>҂N14, q$xJ=NzPͣK8尰܄7I5/ u," x^(9z}(rD9G1S\wwRB.H7__TR;x?p*Mtۢc/J&>', T"{wlȲfRgR14xJkꆰwlm16TI.+rߤ/-)Czw7Ɖc"[M+CMZ.}E\/-u.^ز'TW\`~,iXú>^ŭHTfڶ6Jo[]guPvje:@%VKla3=8%Dy!+E9cD 2JzZIL$7!.(44dWJHv,y=V#]ɇJDj (]oI(rɜ/5\k)_= y)@ۄHX| U-M ּh26M.o64}һQS>9TM#c;ʉB&) )} ߉5  ,gqXRx^pN0>iqĉbJL,{1+?ikˣD:~MRf/>DtNPb]5+ٞhj-blS jTC^\)26:(gcZ5:^g>gE6;!:"^s\Z~[ 3\nyژ*:3/~¶v+j9gN# k8M2"r[&MߤMqe5aXX3t RYq:4Cx`e[5&ķݰ&/h"]zu6 c# Wrj^fw - g(!BMc>LL6@ * +cb  ɴyRK 4gmSyPދ5*'o\f}Ѷ*o6-bC->gX*4MԡMպ,BW,ZQ0Ə[ˤ¢-԰e0(J>{==4dA4PSVgb_+,gƟ?0ۢr:}f x|X"aHe.;/_=EKxdIhFqLj%.!(l[dŞ V*_&g DQA ŕAZF0}WL=WB2!6-._IeJN\}+L`%;L~ lċW&q8 2ˋ_-M U]}^7kAeUb]N}K8IK;;bjκlx[޲Tè%kC9S' &Zacm.*鋣3)G <ۅQ -RNB!bv]Ω?vYaIه̈́Cm7L$A3}DZ/旣Ëpo7ؤr"8|pKkcBN+09rm^<*oCm_?pQf{3vg?RĪv/m^|rV-i7^ H^<;#dj⍿vƹ F mbLZ]=eV96c< Ց:0ǚʒ*pgZ>q4Z5Zpt?|a^x{)}qڝWZp4vobţGZFd($(ztwɹHRIU;`V>`z٢hF0s`W[vy: ;^Kn}0ܱ s\1 !kf.79]II#lQ: A-$ \PO5t w?9QX#1#ϹD\ewRQlGn6o8] $B?jErNj7#k,%]M(n40Ωh+]2[i; XG/V2ȑruavM#⣘͖L:泈BgCZN4Zo\{kN( Ly΀WCwL.d7X2ŗv%fgcB9 _B5Rm+|W )']IvtΙ 1H+Q؉(Q2=Ǩqgm޺UZd7w8hBX|X,L48lX +$5_iY24s{ʪ#~ r:;s`gk)Un%-1 ɫdU[qͼ[E syCO }Y&ݴŤFS2ێזv$ 4ehn+\zF!dqT7u䊘 ðmG( Onr[3S`e"tv,>- ޛfsvnVF S㟨|T`\v+ CKQE,-n@dk@19jRM`3Tw8cE$L-{9W 5Fr~_,DMix2sO餹gMh̢@)>x +8}4ʦH5,!N)q@6ibw 26Aၑ|v1tOD'K|Z <\PVgQ+x7BG`Iѵr ~uf}^T ! QDT"lVmZi骙Msyz$x;k&+W#49QBϽB3"*յwBv)L:y~T9^PW?==nAB4:" QY&׌ᡦ ~!++˨bKftw覀mH^!?44Cz<٩GW}lK$Ker+C=9d@ (]V<b[aNpV6SׅWA'RՇw~=N!N3. ^zD\ 'Gc2!R03fm93ȁcQ^ԿoV/H'$|wJwo}ݭA#k;ڰq̹')Gs#b;}-jE;4ÑT҂Qx!tA*C&ʩbdLa#N#>VnGLdln<9.fuF#FoM`6yǩ)Jܣ C? n}yeݼm9 H@Ȧn8)b :93Vf$h ?@<(mxDۤdݹ*Wu@:7;5atqCHkL `=OBFqT߹-ms#G7tckTJ1)Ȓi5ib}+φ0g{P|Sdxz =?!_yG ŪF="#/|OvKIeW(^(ƝQ5OR6E~9 #h ]ia"$Zth>it"6wPqA ~Q)p  Պ:iQIKg-̲llМfsʝV@*-|1#^_j!37_'n ~K¯-n̑vJ&<K{(#=.y ԛ0Uͽ^yLf>]2wosK|YioroM.7j"מ1:^6H(_ EQaAF]h79 }S9)ʱF9' \D:}]Ћ5{զ䠈PŶϨi(Cr{fu_Qժ}Ùg:((޺)@+/iucژ!St5Ke0~(=&gDvSb4#&| :#GM?TmI`X4}uxPA~뜅|'HrȰ4H6@;qal?fQL ̶m_y1ůцHv4a+O&Kxb4}ys}lh:XoLzu<3R'39OO#6Hgmw{'g }YYc>53Rͩy'M z~^QblQ%-1OnS>XԕyJCdשԡ,[Iێ| K'&hUw]G~Wzo^@e3?Pe?1jLb"'\:bV EAu>u(1 EC*:w5+V"b+n 6PvqiXm[KSv631 1SjWr]^z 71|_?-Ba zcW-2e}qUh5#eQIN˄iuƌBClMN`q^W3[yJnj:/FVWWV3:fssx5F㣝O8%cnf;_gqUHyލ 'V ȹBogeΐh: !s0o+R}L!bTA-WdsSE5<-xv%kp;&iX6ou \(pORN}!q@^s#Mo ;@յ֪RS8%V@ya $^G:yب+ȇ  /iΕ}V)+`Mp0(̡e~gJJTG!+rZw6͕aHdo("`Du:?i&Z2l?E#L{ӈsՎmD+h98fyupTYNJMO}a30+^1An&;qsj1!W#}rn}/:bH)7]>Vz]G ۏ( ;%"N.~ zCGhe [ʊ8vb;Q"ʂ6=LV8~L6s)[oޜ6n~^\X;h. ,x_< ̨nv$iLl}D |HR|f''9N2/ ")7q(DE*[ 5bwȑ%Ru .L UA, U=EۘZ#,wr賑-u;89x6Y<JwYZģ <5kJOx}>d?*ÚCx)ꍘɾ{319p8kV1esG;HJxZj24ݽq|l`eGV+6Wl{|<+T`}yA> stream xڍtT.)-H ݡ CC4t7HHHI ") )19߹w{׬ͷ~~~| :ܲ+򚚪 cf6!xFPW7.P0S#Q8M@Bb a1  p(=`MucG8{l퐨c `@\NPW hvP'ԉ#@A(&aD:zzzxR\Ouz@h&c6HO+r8 P*n uj?`?.߻x@.7W!w2A890-h+i \0@=0G s0@IVF w<7+s5"2[V[#pޯ`Pڽyl5l`pk_CX;a.PU ?>[( @]P/A/7j_g35fE=;i@k xrCmب¼O(_=Ew~y UMU8L p  0 zg0omOkW WBX f@A SwῪH );:a/EZw$J 5&QU$%Y- ?M ց!!v(oKj08TmAeC ~x'vC {l(JNCAX Ce |A(ZC~3G Q)+ޯ5(«B WC .~sJBiD<ľ6ZƓ{mT{/̄{4٫8a5A?3c^Tidnߡ%rew[^iӖ*~}2q -8YXk/]wm{ Xkg=YHB[Wghӊ! )YW{aQ]/r`"Q]gtG0$x?Nb.Uvkb_+e9'kXUN1y]ۥWC3,u?9 ZT; Wɿ/p'PH[SF0\ԿĎ_ߝ1e([nC/!Zc5a~Ytm7rW -"w,bHyEEu39p[? &[~ThKsc1N3}6Dž)iK7,[^lᾎ7UyYU"mr8?[X.+|J"Y+0] Nj{Z;0v$k!ѣc $zX6rlv勱~!!XLL P: Z.z=!gv_Eb4g  $ǂ(o ./5K{ް@ɽ{MVa+[~pސ(:#Ѫ~xS]d,7cgW|%C#ÈxX-"#w;n%G*` ]Vw{>Zpv4vmmee3+jsL;Ira:!pK%͌8p;J(p,Jz}AI=T5MSЎvRk ^⡋âؠ]Zb2$mﳌ snr%͋U>!F"pX䝟Geॉ{ ,2ޖۧLn\Lz6a6GF* j8)?6vR"Пe1*ѺReEv)EPל2t%H%Ff{B vůP\~Wȑ*r)g>xMkDrP=XՑ7ug&j[嚓01,݉Q+AtI151UuR>L޶zCP, ǯH!*liEMzVe \k~yHG$qmDG{id/ .jXlq&XZ9[Y;.QT8CCς!vG5"׮gCԍBF2MWN@muk?zZ_G;Y;KAự- g oC97)Y%m Mr ֚dm39 zfODBKt=#4$`N8!Rgiu$ 'd_"U`NI(/ZSx`γt 7!=kkG0,UwN~,sr[+]64l iN[5o ^L?y$'B{wX$C%󱫭t]=NZs8bMݓbQbi70VmBw9џ,8$0sW 6h 8pQi!߈M'6n,*wBx l~-T\hLtXtΔ=R?ƙf>ujRA2s˓` 77-fR(3?n |0;^()(qဟ=Gؿ/.qf/:9+O4Nc>; ZA8 fѺ$a ¾5\^u&f46zuxgUZs+-CA+=4ϳM J /B>ɭs֎Ƃ+6FcO>  L:>prc QpD:}gK0$>f|b@ }C%D12 1M[EU[g rg'. DW FXq|O=qN64~56s+Jq縯<^aWE?)~<를{YF ͊m3KX[~hSSfٷJiɦNYvd^κMI0L1AA5'V-&ÇY\v\fn^G"?6vS " } Kv51)/ކ780,V`^jCj(,Ii ߬IHS "F2f^C }w,݌տ2fp5ưT?5fS#"4m3ڳXƎVWƨl5.C™`($q՝+DGL ?Ro~"I0ۢvLQ$BQu]vSI7e:b,WǧWwam Τ&RnAQ=.;")tu;K+IHA [Gd0'2 ޏx=_*G8f֋}EQK!=kӪ"Z ?]eSg7($5v!O;˯c7mVvo Q_~j?SIy=Pj%ToW/4m+3P\±)ɰ )OO[tD(װc>f*c.A]i6MMnǒ0rrL=jPsM- m*LWahm6!~D<8zjhÛKq|ycZ@$iŪ6"'! hv&. e$WAœGt}%l ^.@A[=׋3mȊ7V^͠Ċi!w?tœXrZ EHA,Fs/.MIr]Y.0ęaiAx|2yswNTŐ{ ) lWx{/J~ޙ Eys}KaCBud6OQʮ=C[S֐ݍXN}R vTzchգL:,;i)Ӊf.$Jiv%ED8y)ߵl |<̠Z%l{;'=pHg|)1이\3rxR& '*]7Rrͤ0jBv0~Zq#a3F.a\#iuA\' ~e,%:vHW,o &pGʊX/le5f`=0Vͮt]s^3&3znhRQZA7.shw ~mf!iʫujP0גZaI^}QLcAk9!-Ae{t#o9oMܙ4,ыdKbxt#ZoKF)[ .g/EhXU'$yQ&YD@1C5˹myFзm2/USQɑVBlZF,̂ey\s,-7%W+ nKv<.QuŠ!]"9$ACp?ǕG-x!S>iÂ2=s-VvG_; #rA(wS} +nDA^C7"\Lfʕó AEI&nnv9&|38Hy鈄łum%.< ;cxa8 IMN}`)Ǖj$֙6"Y2H&2wVِ󚨗Ech1[V8zb;k Uv|IE2Ih I/^q ɝivE8 +qd[C '6dQ2TJM ?HZjip:6کpi7!K<17/UxJLF+ƛ׆d' n`)Ԯ aJ\U&6^ZLe0r Lx24w3yG󽽩|(ac>ɎIoljpyS,i\ׂmGW}F$Ve9̧yN' dI* ZG?ƂHk$J<⽾JٹH/m/CdާK7qI2−'jڷ?Q1_ Wj 4v+~dd>#-nVT ~Gasؽn(*jT\xts?!%v.9i7G\o)bN&´}hh,$kE;B vg]6#ۨezܡO "A<&Uk2o66tU&HZwt/:^ D4*-mv_ȈN}%=^HQؓx-Er7[0+32qErdѩC'%`udAu[<-DS1]GdžlXbV-✧~$fv>"žq}>u/f=F{wZ3cu9HGQkr.ViQSuEi{K{e=Ҹ`"}D2ÛwGⓓt#a0V[ tΝ~hġJʶYZa}hJWj1K"#™ݏi})KޕdrG g2#qZo? c}ncJ"KvÞzvW(9ه1V, S}MIޤon.1t5,êy}DQBrxIim7|dCJp{~QMbbeǑ9s#nd}UjfYTGaNIu``,>vUB:U^Րy2@hٶ%BGXbf +W\>-JA*C&:|SϓjCe Z"d> stream xڌP] -,]Bpww?݂[ Aǒ{Z ϒ2s0b^\6wے]QSl@6x[Z{;mMA.6[+lvB$r*M,-2k-P `xҽ۫m%Q.Sؙٚ>1VNېM,1֞D99LBEB&? $qD 3Ib0IA&? $Ao| Ao [?ueW޲k!?? 7G[bcdLo Dx_kַ&fmd>.o'[f_7 l_U۹8/O9oTZx[mx/˿V7Tzy#Od7W۷{K֬ݟbޜK֌[0Ϝ5,:lo쁎oL9ۇt~#?Ea-s[Wj6?ߚ_ayc=oNN@!o_x Y歯?ILv8g7q /V_ W2ַ7r<0T3qq|?ߠ@;ai΄/ز.Vߍao ŞF: גc# l MMvPP72IKlXkR/'婽6I>BxU}go+y.(n}+{J52O 1jѺ9s0 p73&^|Nc؊7Yc<*UY:q !o0F(SqʊW[?!ӧ21fՀlz.}cKSc&})ozgHUf HxLxV2`g0eqamh.4~ixGcGs7Z1 ,4 1N ;4e'h~Y{G 9T5^ۜE_v z 5vyYg&fJ%GWl `ܬf- MX1@^.%ѳP=aSx^QD{0v0(skz}>֑e[P*Wp~7eON BQ%w;s=dg®$6Mqw:K+D)düE{j#nY:b)W :WQ/ Y!!-emqDg@Z'P,g^o||1l^WsjX&58&`c~'0~* (*^-{:k#HIn ZՎ'8S>MK+|όP',L!Ȳ|DSGCmgr?Gn..2"X>I0t*͗I!iF:q0i 0/.x/d='ssIQL( nqn?Tɽk^ }0{e\44=,fY\oT56f}3x͕zh0]eĽ$2*2gFK ۯL50hP&vsUԌϭ. Ånk>+NTkAE}VI{ Wrr+G\87pu{2I>A&Nk0tH xh Kv zPDP*0ϨUsJ)[:zlfH= EÓ]d0O6 ˠwd\wI l-AF<}lcoL2 ݖ'*ʏ;?¨u$4g/+Okr;ȚNW۝3E 9K+an]Ea͹8 o# b)\]`:P,W֖Cʍd&W U.sԓcü׮%Rd XI9H*wzl+ؤ1Z[TejLMhyۛdvӓcA(ƚK.D",˴_}΁Y!+TqcW5҉HMֺ m+H hիCkq a,'m'h9?BЁ+w9~ǝs.1I>SlDd;&rr }k:6~0IPq>4P*+ < e f6ȊY){\qMptJy5Ȫ7AyaDA~II.?⃣ 鬽 p8Kn(Ny⩍a~{ׯbw &Nn?kb>J P]o1},|ZQ!wDy('4⛏2ƿZS[Ww,OWŬ4V̥΍n=?+Ԏ>l;7 LclQ<` x ds=b/+# *\EEIpKɂ^(l9=äeNNJbp]C֧ (4'(; d/xXL xҴ qn^O!OlW:y-k,B.U9HB:*nt&sy{\ Ѻ5> "|t\EnxZkbcIX V[R%.0Y W]]wH.<(j6!ӝ04X'g6/6 17S9zdiW]9 }e<XZ"U",dwe`VaQ2y3|dzI0ב%|[Ŧ/ݿО6h#KSv01+ :Kx%E Cԏ ,6;z)ŋ;zЃ+;HyxNcx wO5x哋Ofnâ 5B(Y0ʭ=gY5.0BOx_ HJ>aiЊc1zTD+}JUJXb9ԗܚP˷p)g̟8g= jai9}ڿ, G-j)>DW+8~ CkVGZt(}M)g1nHjvŨj*MGٍ &[Hi|lD8TALFyB/ƍK},nc_3CٚB="|>p ٍ,~6BN)l7 i3> ;\e3JG#!1czzAόcilbnJ0{[3>E)o ɻ7q7+GkAgpاП]g` oz4 IlRWpݖH`=T||Ȩz?L'Nq%a~8lODZxxj[ I&ci~KRt=Kxƙ =O+tuyWsXJ(:cIN}? ؝Wl!(=@u*jc\"!h1j@77g!yhYdԨ!+}sb j'd/9_Vk+'\7C5硱)V IwJ;Ab|X+JVT-h|.ֲ",Ii w&=YDT: Yz|C*clS喇S4l9d54=+FU-35.1j>zz~SLj=̂Kj|“84)i>%AxiTJ_@v=ӊn2*kQŰaSԒ(#⁊!Ѓ*Î O\ۘ~p 4$*iV辚-<9_S?aVlGZCY{12lhX#e&"I ݞxt $QRwmT%DѾc] I%tj|FjHDy*z,ڳmcSVoc>䷋(WXbQ|auW~ ͮ(uzdK+T"82Up Fj~&UgU633 =oqk*%[1\\1dp%6l{B3=|\#V~aP1`D 0W*BH uP!P\ۋ$ @f/o֏^Ϡܐ,Im]83N0"I} ylp5O6?ۼNfa #,H M=[5+3d5"G]`X *sGݿ glKRcQ:*e#J؞Avr䅌0|SVב~}ݧDg2ycov1KjScF. yS=k淯5Y$3 2&dvujg׾Hwʼn\4EeUB\G^Lr}?JYHiL4+,Ϟ~xET)vZ6xE9CJ+…ҹETGp}aLH9$t(Dy?{K2ƇT=rN:Zd+ղi&nOzqL%d*%^6zn-P+*=E˝Y,i5, w^ ^}gsi>S"8Bf酉Ɋ>|Б323d yM(wg C"ewz+Du{%]f9_'өrɚcٮUFy+,V(`^ϳ j[`h/>u5[<@r}C9ȟC,G~W꒺9IQLpQ@VEk %MŦ3^Xplj˞?\vų GBn7ʆiùQԊh/1#Gfy7M-Ɋ[jV-`۝Zd %vH& +WN!>s *żfs6Blq*uMuW뱉MNqPaFYLg 8DbUwNUJv{_5Lg#?e)7謮ui@.|4&߶*zUSK3ߛ]o~zԾo\B]GKv?N 'OXգY_J'd*%o` B}̖aO; ÀQ5V-T!AԋݻS?9=*v8)ՅSCt1P'>!&9(L+R>i_iT0!tLl4e9éwA` ; QЮjT,Sy`WYhڿU^`!PH}5΁ bH|H ]FN3f>j\RxWQ/h0J>mZ箩EH$¨.(%2׾O`O//Ez+ZL Yo 0J% gMm,P)`_ION;U4mHBc(寫,8"eeLB .[UFۈ®',麦 (BVPOPш_Wrh(C=+d/:xAr[~0t%=?0]Yp&6BHo[^Dy.񏪵h!ND3^[ns̟=xrY(nح)N9Lb[H-iJ :%3A^$ȇU5y)u)P$DWL`82 vd4#CD}4c %M77c*֠cu{dH(W1{J&U=tѼggdPd2,Zhr,$}gg s2\- CXɗf7O뀪ct?YhiP^ sӖ;ӻ1 )YCB w*N bzie1*L􅌾t*) ^d @s:FGš$V)NGqX/]A~g*)s¦Lt59*cle")Ʈ0v}tQTqB]j"?2q_V>C4w^8f5~ ?,vmԭg.eïFH0JgQh( &,eвObꆌNxvX#zQF *ZNJF^Q-Ά=F);^yJ3!c*oeG3gA/JL`,^f7ljϻ.0ܰ͠sKR4N[: 3IR/l5--9gzelȭH ܼ掴c?W8ԽH51עe;5b?|(..a:$fc5s;x?6}I7+ |1h4}iߍqTBL/d1Thvڌʣㇾ.m>k{ U`Rcv iL1 }KBxyW0[|ZW;<^]G N9TLK)%xLך=ZVpd+\u;RYC4GҊ6!L< M iU!CYGfHy6֔둷#OQU-15<-J@:EmΤa\y%PdؔUe\!8] Jz J&v@wÎ&.kɊ[m(OFs?6/:OLdNv_G$Y~ŒIس"榤Rq&g.B{H*ց}8 lвZ2VceΤHdQbcɇ/?}S){. ǺԒaXH{|tF\mB ɜqNvf|Hd%2l6|`֤l+¢Fʵy o*@'^1DC2GP%b sL0kr|*bx"Sa_Bi``lB4= {+{nAoT5|rK--aZ!_0yzP0&;J(Yd/u?t L+]b6)!m.<Ʋh?__V}," 2"\[Ŀ33j\rƳ{pR`r :]-#Ҹ-e7ӹWB;hoKpw~G?p ‡ٺT+qibeˡ'􀟺nJd#Kxڟ*M /d :NUYԬm^L?1 E*to!3e\Ÿ rnU_;h2Gp]@wHfq#MW"r`Ʉ<ӥVڤ X tFdL/{'݀b4:U8HtL_󲻧Bڏ 9:C^#Py;X,6*Rx%ߤno$zW6~X /(a-3O&IXO&2x=Զt00q<;3 ł=L}n /F-,<ȵry#;{ŦTs,p-T,2Ӥ :$Q/O.YS"68{Zv9JC7$ cz]Vې񫧳U'ڥHUWDCI)͊tm4#" /v]Ӊk=0 88%^BX8/7w:2D3kp/=TDd܈XiO @N,}^L/ЉeQ#-zU|+{}ah%fH ˆXXuN(;yS;;VqCyR'7Ogqp#]6So+/IR"X?V]> p7hCɏ7J*C6⣠T5EQ>7ijYM ^󱆹4#c WV<*`ᘧp;[rt'gDiZw;*tZEF9}8|?l:琄'Y:\6ƩՠF`W(>hWxLr5;| ~ Wŋ>n=A?Cږ_1b.ZBPqGK;&,R'4 7Qgƒ.wCO,1 OS.ڏB̐>wv 5#sZ{Pdnz]h&Gyth2({5ax!#,TlWfOv ɟR_R@̻%FRZ~R tΡSȼ%2diHmgHMtQGf{Vn ƄLd@G&Cy"5!*'Rď;_ Y0Š|(c> {o$,Kƾ>+Z ZHGDcD }Ϭ–lcy; sSkZ\٬IJ4ayM# ,a.rzՃ#Pco / ֥55lBwE`=Hbea&&oڪRJYҁH|5$SSHjK0 qmƸKa%ȧ&k.҄I)0LR?D[-]p#(^@_ /"8{oIbWd@,2A_h|XEL_?`2’7"W[E}ݧ*.&ٶ#'[' )޴N`D~?xd׆ָ̃YYq?= ڌa48y&H.,FynD>}3Tg7jբ`5eQCqj=G~Fuca]Rc^xhVzfV{0hXalr9R!g/Q}Y}zlG_9YSf9I2mIQ<+414EpsM@B󯅧mD ӱYrZar\H dԞl1U,E8U>qrʐOUv8ӘUq%.ll}`uj&#3{o' Rwmm]B#(hdG*p(29?$crg;v f{o:^8_t p9Yh+݌ <Q ?Q{Pknʰ3'3lR Qa{_Mt/DZ{45,ޒ04. \e;ȨT=hv_xAxT]lO} AnBl핪,@El/V(ϹBq|_9dr` 5v-]` á~y0QrM!qˀYh`d;kd+p =U4R tW59QJ]H:t1jAsfk[7K^9?.fJgrо~I;HbBKrr.kSc,}N c͎)ʢ,۲U[?ط2O{6hySvqQڼ`(f@\޺(A52k`8[ֽz : -,Qx-Qj2Ǘ&ArE-o fėHD):g; 4RAXH FN0 w+/t79\S[VH뾾 k!~sץz$FTRw9;PZ4* sZÙ{K'?VgsGCȰB;bjb꾀=~WVE2 yĥF6jJ'g`۽wL#!wvPK)/D@wzbf_ <@A"Urjٗϒ4Bc\F9FÅ2u;) #(>zNqCFȝr2Lb5E.B(K]ěb_CTEBs:=OS7jKVHOJa`Sj: IQXnQH˕ te L0Cq:nMzVD쎘[[1\EZ1r$ ґ&Mf%[ZKKvƸ!p;{eCy旄1KöE̽\Ttd,H&~|_ײ8 &W"3nEۃ*,6 6S UT}=iw 8j`R٠![Xvء8d3ڦ2ijw _y`h"<%ω ܵD'|"-iʟ}K,] NԺu5k"!Yެ= N/\ce!KwWr=>ʆH'>T)x\xcwhhFL9uGSNxHID)yC9::Pw}q֖?gBq"L(@/G٧"˰m%髃ӯ{ճ_qB|[a-CC˜@f$aK_3Tb?wxum|DΏ=X0 Gѽ|ވu.sd"ĿZM,%vJ5Pk˴uiR PZ^xIRЁ;7ef|q?#6WMDel h%HE|/W)ƁLm-`Sdٯtϟh`ta29ؘ#E:7͂ ˊ;d !,4t㏲^Z~kc"IAdTd^!Kb۹HewQ;I!(E0f^()<9$IԔWtCaH-p5wRS?r!>2F?g1kG*_;qL!;uFڿo ڥj1m3W "I4j'hN. hYIJ=|>e G^S@CZ, 'P 6& HSCJ@`4q6T|gL99Lµ4*Px3]To I$ 5\|SBhͤ! IZE0ُ\_\Q[4=SGq:fxi#'?'jAov؀w vTuOtݨԿOK' (9(\@1ae9 @\g6tSMV*ml-ZWG6] cדRزdCRiސh1Ԟ 7Jj3VkQԤKb `WFW ]KVF+"hzo(CKt9 6Y^ nh<5Rv!z"/ޝ=\EΉ1Bjʯ-ϹX{>oF y'/)N"3W&͑JYؒop\$jOR9a'*d-z JrWyG0MĖyF2.PC`şǧՎmWr/r-W ݾu19seHB2PhcDSd6(}& >0N%O8礇w߀6;ȽG.g kqz5ZSRq+؀!2mqrq߆dInWs}H;ac=LhR* S$t=̪gw ܮǽv8_<8Z{K`BOGa.F&j=k6ȦrAWs)ڍG}O*'xȚ3V O%.uy|hEњm+tך @4B_>{ oж@gX[3$-/ q;*C^a|LƏ|\8fA9(֤2b齯# pԮ[lK=-K[Pф7f=7vJFh(zN@ߧK 7OdIAs^M=l;C-2OQzê3&8t,'Kn. ScX/>B,zgEK\9߈n)볎 imkd1j9Y]?9ӿ( _7= N^ )W,qrWك[E40 hG TZ觱Rtm1a+Z"cnICf,re)lR`붏BY:Ie`e#X[>]Jˢ sLk8/Oh~sI!.Ag`+A--\Jy}6;>.8(%rGuGcHxwIg a*Xf i Bva w4YO߶O@ؒēv0I0}Ugƙs?4z= gVo٤Q,Z%IzfˡEjt׷.AlNL/ Sf1FD4'~ͩ Ӵϥܓ%:u""n1uÕ+ jA[\s=yS2Gh+&~<6 +9 (]$9L dNZ|t ވnf9VՉvsO1!Pakܤfm Rם/{X&{TYL$.όB˶z~u;ZoPY{BEø?d'[.+aM_Ü0#CD2^%m,UxY!CTj[xCD1K*haZg.7P2@I+h UE%dIrJQ"ƺ/LH-8$B'|wnTY93 ~|]3{ xc~@&f\T``BkCPiuܮjsQF7:n?`_>ͽ&9ѹB=H\q]6`oF5"0O?%_;|]d_F$)k~D&ODf~zV?z e>D8}u!a['2ҰU0ܭTSv4>)zPsb:_`<5ҼRCJb^SK>D}t<ۖU^9Vk5~w,F8"йIOLf׺:Β'ʉwn0c(G$2A\?C5kv0H5`_ٓRI+hYy7 6`Toѓt3>2Pi\XʛW](cߺ:5R=BylArFeH % hԌ\i ØɚĚ9+a5[c!Q˝J&AN ׉}rXwioې皂A|$KUKȺ6R1,cqYկ:K~fe.zuQ"R}k/.MNmޅ{kYo"#pfi$43 JBS}89 gl]_z /PJ.{p"[mV_>ʚ7NP,BȢTJomZh-A!3L +3rpT`y~oxcZꭄ0כeOOBu:LùƇJo:`$E?/AY}b ;֭|鞳-kshчXݰ`Ll$D}cy6Χizu;M[3&*f9H.rATYD "-~X@ҵP$Ƣd(0o!E:5z4M~ڌ̻!qQB7_ϯ׻<Ӟs}P#X?X- K)X#S R%6I} %3DUPA=;7^~-jb_7O6V{AQ!fv7 Wr)G^2 3kHHp۾.`ʋ%'@rU u45>s:} ;T0:g^5V˚/uq-rG!љd,r8U"R#t 7 B0k:p_H+u]\N lZ*q=lt4 MfCTw?<#SJKnkiZp @o23rՊfq782 _g{{8Oz@Mm,@ʑdJfA_Hxc`Pm[%ao,aM8>'8$Fd}r.#*/]~Q_z뼿Evf3(hIȶ_zFE>ꊞ{ޝv OC2 WPoLusjU͊Zb9XQlr4iBBT.OL d}M2TCmH{h4bSx#ҤyR ;v5/Z?\tsvj.;=/1$.YNcjr}K $Kf. )HeT&?ÒޛHyuc6s 1]@Ҁ)Bw"8: 7?KAUDMسS±|JX \ev^ 69=*It9X"UdbsܩA`wޮN ׂTk Sc;j0Tqԡ!UmY}ΙU̻t@r1IX $ޟ1Tj1G#[cH[7XuOd~긯zIrac."ḦOYi;"֜:6ޠT^I}küǾ /G0vCpu{NO]Jgb] #8d 'M˭yW[|yx*9ctOƺvd؜u#oYxe siA)խoɱ@lKԶ )擏>X*6 mA QىCzZuχΌS /C'P&('Ͱ'BwjXܦ Z5z:Q1=/烗ŅTȂjd+u5jLDH9x)*CDoV[tH|KF4x_R6w4@ J[& U@vWd[鰤%44L>Uy|!B#=O:R3d aaoLO2\wq:R+QGCq!}LEQT +xJ"&?pȔRb+YJdr5a/0jdNsaN rQ9Y ^\T@w*0LGI,AJ A=N-Ʒۋ )zL%r҆\D٪G8^Їy:hT[1gt&d:Ζ~AI@ mi}*S^l+YU!`%~3!gkLD-~$XyB^7)?{jdriÑdֽw 9z MC߶I阘^tFes"'\$%[,3۽Ho!W.m hskeuP4WL*5/RvR?=bPwRL ɦ[A `{ 1xjJ Z6+9(:Y l)@/ jɐMr JAs՝A&&- lhXK+LCyĽbx+HaQGdd {'a'u C\v6~}v%EHf@;[֐1foQ JXX> f; 'N+B0]bC>5+Cv8 Nk/LOok14@*^69F[:HjkEÈ)xOr.!C!C<76in_4d 'QPBDb]ەdQ#z$U<pzzxv~=@a[;ӿ*nu\xDmӣY/!~Y~|gct3$Id: 6{^83a{j=Ʀ\aDOu!̖bߨ6( #Ac2; ':QTG'AU8xm/tҕִ{.#(آ/Izj kLBZ_GͿjj"ZE$4Tׇ2rZk ߚ$W 9d=ot6OϓV/a T3X%-0-o&olAluEP;~dشǀ )[3QꢉY#5 㻼a|vn]ۭSZ l3taVbڦA4h3(yKI f,z5sRREȇx}]l_*y8,%v+$}VS uZ%`-o \Y)Y9ĘQf`qh _Yf mU)&`BА'#TdYlx9b˭^"< ֒++S/<}洦iP7k) ( V_W%:a&'r)aYW)KRW@hlUJC7 R [y)婒[a]jrO#H;ø} ]M0mWWaI^I_>"Us*+|#O endstream endobj 210 0 obj << /Length1 1701 /Length2 9834 /Length3 0 /Length 10934 /Filter /FlateDecode >> stream xڍP\.݆>Cp `apw'8Akpw $OBA9ܛ{WWSg-_w^h5u8, NP7nN@VMr< 7?bt}+ *.`ۓLd;y"܂"@ @qT`WtY' )̿^̖,naaAҎ`% Pق"Z:NQ0ٺD<==9AN.6,O-@ v[~ P9k q[d rK0jv<(hп_mlܜ73zC6kˍZ69:=<@œ_ ZSjrB~VN`+ .`˧cP'O?];K qv+c$B#@0 {YrRr?U sCO辮 0F+laOwxO i/*['#ps@h d v)+anKih?3n Z>='/MH/5_qifݞ_i kΪ Uv=4qUx4!nrK5\!o7?Ͳ9\&/iq;< @.. ot |V 8NnO.N.;*R-T ׋?Ho$,A.#'Χw~\.S\'? Oyzln?O2t@n ?6SzO|vju<)-)Kw]zj_#D_Yt kY'Mɱ?)>ǰ2wť56;dJ:uw}WRjK{jdGV/;$NiS_(9t{T݅5 ~z*z5UG,k bUr3X,>GqzƊ gj?oF% ko6O͂F.k/=!)% Q ɒoYɖxqĎn#f}u.?LDH _nu(%;&|_WR!nʮ yplk9Be&j0`Զ%JmGR52bG ől[nm6 cSw}n >Х]Q?S8eu ~a`ʑ>9D#5O5qcp;2y]jvf~;o&ưI ڣ!OQCw +*kєPoZ"w&܉wD6#wT# _VO??5)qV`;!0H|q:WOa*4@ RM=$w T(ϾE˹ Dh%Ak`$8< B9*Jm8yֆ[@,X;ѯOy׻Y:.9,xF@ I9C V :9gՙ! DP[$yA"|W̓;5T]Σ%67SqIex8g.g 5osAtbtfŝ# 6u'vkln(?S sԬdbM`5Y/D\OAmΨ*;QαϨ%3fIf ,)`wc}oq%2 YȣvQ ABLr3i Egcm7l6Ldg$mJA-fLZ+Q.39!lUj1E֧N_kN N;V0EHd闸p5\(G js>Y*ҸUɍmcɝ̨4DC"̤ҋG>#$ަwqQF”ƱU D:(:^DCnCHGY)ݧwU]J 'a` mTJ d;b쳭4} BAOY*UXoXϱV){oe%PG?ZNla9f l5O%Rn{]d~rc`nvޱTC/B?"Pp3*oH~BR'0ؔ;. h|ML4N~"+e|̐Ðz#ǜL) 0Ac;keJ0h|=ȋ'G%bڒ\0w[vwFO0ɲ:1ߧu05E_mp?nIw>CoTqI$$bDMVJ)jK^U"_=LĮ@7HPهEc`N2V#$R-\;2 HvO<;vq{%iu|i I%DukC څaUҶ06Ass~+)Cv5+K&arYd9]qɹv#5#[B'"mثfx4'*^%J}s*k0߅֍"aRWmlśB-ؕ3)I]/ih4zk\#1HJ}M%n-c>׬_b`8SuP :NݽT H#JH<E($7Aڸ^~C8=AKF[!q||\5_^!w8԰R~%aZ/7Jʤ6W#bNwRH+6Ί[MV`Tf3Y>JpϞA>N͐y}ݭpD[-?8iSI=ePZ]Uilg ϡ&" =1B]3*mLC7>G's+Js{o-2ZZu%Ζ"Lh)Mf.+J6!\.!G6 )UV{z- euL޽`cgeUX(vi-N~Wc\{ {WlV> ?TA <~(; tmhM/9G|0=W6J/UςB{O>ND[s1Z/7knʥ 3y=eV rKRwO%UG,q!xΘCut! )|:gmT0 n \/IUsPQ2w伝ӨsrbA** X@0YdX([ACgW]GN}H>{ ai|(z&6Iq/DcVkag8"^7o~'1#KXb/$Ĕ]K~+(a>BT[汅3_c8`$f j*(o/,f4Ds]jFgBT=0VuZr)zEgE硼B ObHms&w;B2 TK kI/ɹoA ϸ;¡IT};$6'/M&ƙWsV݄Hp.$gDTf'"l"=7oQ MZ%qԆw R[J>Bf|IOWfU=X̕%z0>w2wP#f"~nmJi\VSr:ILM Ӏ4rǁo)xPD~_E5fzUx!0$& *:j_5{{Eg%H+xeMIj.%W(񁻭Xn0 j`3Οv1yɄ]þAЎqh-ni!6=vEcAɣ>&  }X+bXx^# @g^,Iݺ%!ǢzEd崟@->+_4d[Y`ZO~<) ӢqP ^KEk5&ץk[j&V/dۘ=3F *8u~G^zJ ARR_3k6nBy6!.3 ^13|%O>G,')+; 3-3#71da̕-e% לSW0Nq$bnɊrָFo[\Y-m.=d6Ɔ "uaR xK!J Ű^Vb+CmG[U#p$Wt ;灤O㏬gʟep7~'YAKk 04< w=y¼/} s]ɈDvG> 9s.R2.&̸@?ރi$7=C&[_DExywpS( _@nw_ڄ!A-80}KSb^N3TTk#rKB2dɥ_l$<29>H&&lGA3aMȬc75j%㉑4k%F](E+S!+lnfͳLA5YVϧKs]Xv^Ö1(|8b[fBd)yΫo A~λV;s;fմo[9c)k1Enl~]W;`vZyD! 3o1-(6vah@ gNCXNmڏf/-܂hx KCuS PvpRM sjԶ\ θlT9KLAEh@,?ρ|kZDKyxR(\9A&mdTYCI9{o]!m$3غ_1vSKGƆ3 [kb>Wd~99b+hoa,.O8el^: 6ն OJ1o/WɚW󮕼b>:mwMĢT66; {-QL|}d#;$5:t9ضu̟/>'eHgI3R6lï[EHa򊴐Ѵ-1g(Xw\PMgi@GW72ZݹaSe)'N䜡zn!-)Ql wC ל̪;Dsll| ReD92 ߌ^ѴuD0ËM~t6D[RW~"fEgw]Y&먎;af4֛nNz6{tՔ޷@}f9At=M:R~O wVp^19oxFx 'X \Ⱥ( Da!bI21ͱxU@[Y[! |&['t9$l@;0`G."guTx_pċ?l@$Nr[nmr{11ܪdz Qf@VrꭝdRM,9ij{Epq!DZ0O{Ii|̝;3B+\Fr"<)WAG]L0qЋ;TtK\ ^/i>+[ҟ9Kc,][/TCAGھ%dQSX-dH'oǿ[7mIӷ-#ٻ#p>V^Z"&v!˷SIer-؁FOHx8_?0oWTL3iWҒ_v j9v K5L.0td/ᑒ ȨYJ_0:Y̖>8uxG rۙk:m{&[Ȟ\ӯKM4(i%ܛZJR6A+^-:sNO)EeٍnDLJ~[&߃{.HJQzkpJUyrA6r*4Fʅ40@>k)FwOIYOϝ& :O{V2'u_Y)Mgq+1YdX8S=C9cٍAgO7?U/` W%Җ5UG5k7*H)qEɖ TJq2'+&VGmP;0ݶLf l,|$cު(ۨX֚MxHa )SZ+{|ojyW.3;;7"V gPS'|AzeU텹^SMƻaSz)2IS B!Cփ{/kV݅E y} (:n/m.W\ dzt$u+kBptTq%3DelYpoYKzgB >j[ׄzcXO 9Ty|l-{?& Ԕh6NG~\omQTYW2i^TyOý-3~`?15TKfKyXtD̦hi!So_Pڂwi^|&_JW~0AJoboC!![Ԛ,=F6eT2{}x[s]hqkk_0Ǭ6jEԒ7Ա{L#kyCHA ^E.8=)d(=850F & gZ&FsZZ׷kjVK~)!gy4[62 e}:u7 n6LN>~*8-2Rl%zMgZ7uRvsh<5wNCHMT73~rDlIqYқ2ߥ {1}R%UkCgАY=MkO**5f gg "k?i7RG5T8+z\cYL'1pо-[o$uqXbP`\+ / !k~XiNk͢E|b*9~-{?<-rO} WeUaHuTMJQxG'VS<Wʁpr^H")nِ=9{$9` kfZ)"Q7zƅ EBbxlj8#z OgVOplx &Fi9OO)O]BS¶(uáoaT[k1̅)n1 r;j-rC jwTkS۩M_({ǗalDVW q3]j1<.f%Z&a#ɻV~6| rzz $4' @^p::}.?DBs5_&D$<8BG@McH\ 9&2aP gWVjïV7ԸR;NuRߗeFu x%T S&E%ϗA薓A_ 7rŏ^q}uBR^7\5tK#g3k.j^{RA%K6 `/αb,f=4@BV1?j`]3ڏEi@"@s{ TX&B*b;w-8O&zoz^6]#O?wjR\H$ \pZ)KY#pxIWl a +ﭪSmJ~U>dau%3}8Ph`z{ǎ,G).d:v? Hũ~^vE8/+Xa6>Bo}2Nɝ>(mWZ4חQ0uQ-um̤zmwpfFޡm[F3&cwM>!Qf(נ0+b}F)S1m}ܽ ymEBz* @l{XT&8$i4$˺a[ukVԃ`%j[3kx+nW{ 0s 8)QeFUuB /Ġ_ 8k.e+,VCOZUo?{L;Bml^Z6vK6nKϵEi]S,`X* ba+^?T<u<ǸbwOBYuUHn#TDᔊde*!>%Q*]*s Ϝ @. ّ4bQa;X$%a!M"jVgk?V.a;~! k:ݴÛe W0bcf OmkT2r}Ip|-ķ4<7Bs33Z 2GKV!tjwJ(vE$X~ᎍecm '],hYVNy/Vq`M9%lըW޶9d~2ゖ]ū)o`!CN:xIW\ƪD6xCg޺xqKCD^>ΆmW0QgA ۿ9Β`oSڸj>/gLxy/Q^*#g'exHҵ+/8ٴ \82\kr2Eʣ_j- [:r4[/^5BlLIN1sYj^ vT#i{;1s*G&>vkclb2;n N8L{A;j׸4J#fù(Ӑh񋃲%~5aU SЈW4sMm;xz4t=|ċ<hm00Bn6ωx،}|$6vr=&3~;<UҒ LU:Qê{*e}|I% SRsL@}g"tˢf%~ Nh9ht|8; PCD}&pd# ~._C;Eh฾]vԏ[4efgh쪺ZZYmZ)Joh&DYA%:32It݂͇ (YNi{?%iygV/FʆFKh w@)iu6) Y}}mà֩2׉Bpsx85^諊~,6jR 4Ƨ/ l_~ZƵFUirLqFh_-Uwϰ9쒁wT .O܏pV>͕ҐH ;g#ZLl/mo.Po| b2&yN2 «3uI|To{L]- s\|V/>Rb-$^|:/HBq+` )Kl7?ד ] endstream endobj 212 0 obj << /Length1 1557 /Length2 8729 /Length3 0 /Length 9758 /Filter /FlateDecode >> stream xڍP\[.kp%H. 4ҍE`!$;-Dp$ܙTse{kSkhI@@rP';P ف@.4zzo1 Y&cl <N>!N~!  &TJP^x^_&kf ?w3 lm Zz؃WthC  $b"nucfx=Z w`3:`P[oK7YAܟ=  _dK{ȜTq{,kT%e!PtsE><6 ?pC.P7;- A ?߈Wa uzN_gvrr88@N ?|'y1yyCkO7w/ |@h Pkڈ_Ւdl{{lnȩU6ܮ$S{Wwd.%VZꑣ[5Ж&$)Pt$<:·v)z `j/2OlnIh}U<1  ,nRKWF\o*tܻIH)/qǦS"Z/>UmzDdaBYj31:$ O]%~Oh&94e+׼tI&!*c ع- IH(m RQO]lg)CC YT3< \0FDrdN {eNzPdN֚}ndlL?cթDXgѱE"a%Wa.[/|d NHkg9uL,r,L>UEZk. S% 0a;9S-k$V0]MUY7)݁tvo%l[ KYۖ-﹠ա0f=tہ5Cy8 }F١quo 'є~m8{^f{,U?eǙ* 5R vPnpG[ r 2MYg 3S=99.&2(TOaXe5lF drb:5M3w++ Z x/{%;1 RKK uzwB=MDfa~X2-/Ʊ<"[w`Un\Mi^Txn[ %#$i!L+euLu?+R:0mJX6PB1U<<JPXMq\+(ZwaEI#( >=p@Q(rU]_H?G|Gm"qo[CV6߈RZЕ[(g?b_>q̩v'؊0!!Њˀ+:HD/nvm/YzO#\jr~GRSOa=̪M~tu0T8: DHdR1seb"QmBe̤4SٻHv|MqX6e#`9"uc~ÁME} _fr=39X_H %cW'w{2k<!?۞jGPiz-Yyu5?0$nhums]1DxӿLZj,G39]^p39fW |\ʩ˲7񢏅-W9-Z9oٟnI-8s) ҁywz;WfǸ%+ tw"GW"_EeX5Җ DY`o&&9i<Y0\;, 3;hZPFD.#rjo%*Bq^rHb> TMkdqh OKР)+K"TֻE 7":| 3sU Tvh>sȁdžUy \R:nD]VZmyi4op"||sOO +\{!?5K'Nj>T T~mYyk=I8e2> /7:S RcQE/Zsȅ!55#dLckC @|xRF hƟ5O\eR *K=C RFzi\jKs:Ӊ}19>r0]"#[rٱ{)nS;BHMN'"FKoq!nWMAZ\ԏ E/ \oɢ&v*R|PY^ĈwuO% X z4O/}BνĺDi/M-I槱]iPA9mg`:ઠGAtܜ3 B$? NEn]F> mm7սRx#-wF^t`v. IwIp|# h aܰUGt_89[RyRM4аe-\D\ >C+=wR_ߝcj+dA%yϹlUL0RqFy.{(.| ?v3,w,Hy.Gb9ۧ:">}q[- ܔkOH(b}ihZACoTkZ/ F`~GDTRO!Wql!34so i4 ]qٕWj8#mL8[ۂlQn?:G3.GNy v12aErQ|Yc%5= ȸ >Җ H{} ٕA "ߔGmH |E8¤&4&spO pE~[wColeZc``&87*XY{"ca״*idB~V'^=Z(%6bC-1pM1DE@xj8|]pnhkUi0L=IEsVڋ8M%hk ' .llkrƚp8*afǶoh6՛ënb7~|5.ڋZڏp"XP%m&+%KVLw Okm?]:4Weq[N0 2҂_Kn<+|YljRGms'ӅS b ¾ijR,8ɗ )+lg\꼌p4[Oɽ Iu?Cpp/?%WQxBe~P@]IncJ[HM?@(Pg#יf`J+\8e@:!3Hw9V–$ Qx&;h$V]Y~0O,,0Q>%AO6 {S^׉^k5< ;nbמ'q-*+>@(?|;AF4 Լ6<|a`H8:AJLpc~/𹮺)P7ޭ)70ߢ("ZDp*IGVkfn~؍ ͪ"=zWMoRwre_oh^I0NKQR[ܟ1v>s@?xŞc9B@?rgW+̹#fcC&0}ũi1PC  E z)j8ESsglN6㐺jeU%Jf钱{5X"^Vm͓38Hj!y|/G,k-Z<6:nUJq`{ٔa1ZhQ^r[/㚲}tZW6yd=L'kg۟SuC˒FcZ)LASSdY-lxN70;"NRV^8F\cMP.Iz:;9$'8IWf 3^us¨CNX^X76eWWF9tiB Q%;Hu_BLyidbhoWt;`+4 ftP(HŜ}|XhK2vSJIp*y~;_4`8 cx|\6++z02;l>" IWg eݾu0|;ǟ^:miUz'} Gg7^JFE( (^Y 'W<|t2ewko~Zjږ5k!8(yA"AVN>qbZޚ !XH#HNr~JsJ9E:RQd BTހic=@W* O_{p̦Y xx }i-đd׸tUU'Od9Kiʥ*Gr6ш"0/F҅ʘǗu©zC\̯\<(k,~N?TjjBЯ6 "c4Yor} r2Kq,jԨacB q"[6 $96l*/__?rBݴ1x^kL6_hpVʑUuHaOe+tȱQnbz?yLrU5uD?eF}劉j^qP3:huj.c#Ti\^wc9…&L\p0ӫ3h"T N[K%aS?|Ѐ| Լ KjhH RtQ̞=z|gntSE`ӡ0VE'큱}AynO 8A?)[{zZ|>pQU)K#{jxm9I)4b9$rN) fQ ;P&ֿ"5u_L{5!~(ĿC x8Ǘ>V#b|+A[7m+ӅPcozm aÕmExwݰlM,Cj96O/V9W zN`Kbeɞ2>W0Hu]I!ro0[Mv7G䵮IJ!Ko 8̦(RHҵ 1cAs)Zj싃ѷNɄkKlLe/>])pRsU.q, 0^ ;I_(f>:XU,Xu}y.5?4A72餕ʄuHAڐ3sZSL0 Dֹi x% a>ΦabyL _o\5LTROUԲ#CUP6ZaIsCi)^PKj۠IUAd!.*@ Q̵IGl c%ݍ'&:eb{~%o%HR)ȶ&L_;_Ei6. CXD(px*aޝp73vxfٛ^H)ߵ}4"18)fbV}u&+N/G尯cD۹tt/O؛АoY52Z7mB[y4l<.4 UlAx.?[ QD og/exTlxհ|&C Ë|ʯ?p{eùXgVT)gJ _R#}e^%nyDx!߸9Nvr潺J[ҶȗoVnHuuhE$83V*҃=m̯=+;ei_ b>Bd;?V_I׍Y"SrkFeH1 7yAuǣ""mjn6] F]`|؄N4^P|+?F6||ENAeqjDztL3N.+6E^x+'|#G.iVpzG*s[+V_ϼ< &~0m2r0?5j?  8eL-] _ى Sɩ R;ئ7BZ/mP[u 4V{CC_W^Z2atrr2Qmf_6֊G2IOiӿYHWM-GYg/M&jĉ=\`Vw_U@1Q-ty{b3B(-x܉'%[0 %<ٸK*)pp;w2͈>~f:A]uۏ`(Ki㉎C/' ٧k%:*1gk)F,^8RuS}[H 2@ck!dG2Nt8 0w,:@`!U)F5s+OH\/ va%8b߼<{\>;A8TسNRv?aaw -!}d]Sy XyOxTg}XxO}Z o-jj(e: 9`WZa?3+={AEpע$UZlǻe_Q%i&hW:I5p?ʭbHMK[x/K9X;#HG3[>QіIC\x(]'OZ笢L/6eJzB[ɖvkeT˱{m]9ߟ &(qfqLX~h86H[CV抔%R+9vND96 #Zp=g癔rbH$\ F7w% H0{@([`v䭠n.Og,D6f̮fBsP2+J7[Vj- kņ'KyM]Srw/!! xgcJʳP Sar>:J% tpĪgl{1a;Or`sقXxuIR]:UȒ)THK' Z zC\86[,Ƭ9hax9{ X#"2p_yA1>9fړ=|6]|3TxAl )E88™><9#K ͦŅ͎4Z3 ͢.ŒLi:֌ a(J\;YW#44NFx=RUak6!IٹVHK>q-~8GŨÓ+[FsC"Z&'>w~u噸j3R>_!)#QuT[ʥ:ȭ,|6C!06)u4B{ߓ sV'jB./+%$zD Ol!l[n endstream endobj 214 0 obj << /Length1 1357 /Length2 5996 /Length3 0 /Length 6931 /Filter /FlateDecode >> stream xڍVTS]I HG"EI{UZ HIDP MQA@I^(Uʋ[Y3sf}hf)q`xIX ile`ic8$pM,'ڴx1 4Bdy% *Hwš`,O<_KLQTTTGH 4=(0CH!rU("* D=pwjhE7&Zy"q̖>$ p,x6Rh Gq6 j)ȿ+; aPPt0D }@S#)|^Er0xhu#:. Q7BEqR8ϯA/YAh<>-$#z0Xј@4D#~ F#ZyMmp*)xK*8% Q?s`E&#X #> o+AG7* ( 'O1G'5%"q: C?v_Af ( # M|i| hP,  DÃ~3Bc 0 ,#Ҍh#1%k[pxzuA:ORCQI8*UEf,v_=ijQ[dOm5UL]yqKR=`l]5>^I+SPoH s0UvN~]2_~!oH{RQu͢a\'#xI>j1 !3~$q@]ÜÑgVҸf.!.N>=i3Îq2S$N 4 ׂIW^v_\D[ۃЍ-H{|*QvܗLnyui0WRJ䩂G" /r++]NޙWJ+ 7a0~ށ."d \Dd #XU:Ohܓ% ˪npQHl;E:BV88?Tz{ y6Ll{_H^vQxgw,@2Zuo66Y4+9m?k3wy!]ﶴT׍kR@-YizUS(oB>,vx`6NGߗrkA^+GdEurYj?0\*fKlEz'պzmlvmΨj.Po~ݦ0Ail2J+u_˝-zL9~%"_n58un~vDž\yT!7*<'aC7c';{`/X)i̒ܿjԱ6vx2a@3b„DlJ%&Dh@ xʿ˘AښN^=3{BC(TCN>Lh|jVs 6j:$kwK'N)%;7mk9Dk|Ydv{UDž:kqO:Wce6gg=o$}1%o˂1q/o힟Av5Adm_g?:Q l-mZJݺ;%m`, E|wPVB2?P}>*"nq=]Vܯ%2^Jܜb Mûyb2#qӪ97k: y18_tdEt$ s}2UF&7`^@b0\,fO]is)K^S}l@6\>MyVoflCbs?GS+Lk5bVƷY>tMttf>{|,^%l2K( qVH}iWoℱM\9x&~CS̗0ǹj 4߯3N;w)z\-R oNw08e S yV.>^nBKv[Ÿ}*e/Qvb C3u[ 9jc5a+Y92[s_?S/PMzdl5HJ.?9e/ DGm-V[ΫLӝ;tWTG&_/Wo|(L½P^E9FތLmgq4T;^MOQɟO}Ivds2W䥅KM9oY%Ab RA(Y:e6@֌7>2`CRyGmxJ,l,=Ӎ^F4 ,fQ@J( uIQcR L*m?S{a6]Dъ/ $ApchcGy iơzR ۑMhէȾ]WDbVQ<^P'è~e:sjJ()h_pP#Co`3n@,EncELyVӔpʖu%~q]W:&L!k1Q\x5lԤrEM;mN1Y/X]aS#WuTB| aؑ799U #绢Bnϙ+3!kli`q+6cDis+b,+'iQNIzOf1!EfWP[X=4Idu+X +z핗xBgQBroʍԕTFӃB@m_jǡ'NV2UUew!Э;9hžs7fn21f3_aPK锻٩ߑv&c KU1M[(*W#=/T[˧<W+>*;*Ye!7#Sa|n%f@zrơfX @KDx?)P ?J*R.ln<'9'YQ?$|RCoخt f5٢{QR½b|=Z[nݳl>׺fr: 1hd=H͙@w~0>5(24~dofw6&͒REI˜`h=7[@ȗ&0}OR6:=2E-j  p!^ -0`$:&IH潨/gK1N¿=d5ߔ(jI -u9Xӻ_ ^"ukO"s( AERc^̕4}iȇ_tk\z7ٌ>66}KХh;l/?SH{B[o:$ʢ=x"v;oӖh˿UfykiM1A lK5rYc[T1*l?m?/l=yOŪy  wH";ؔT2өmwf dP\Wn6QaajG.?ٙ%XBGRj{6)dw\z6qmAcД:6\ܸ3,jTLE~Oq0ʋ:ݨⰟ=4hxo}K@~NvH&o+؎뚠NJe_/5܊xyk>};WFS}`㎱zR-] d1r\a~"hOxժص<&eGم;n80<=HuRN_D>M]nbPf__t}N1v՟@W3 1עUL¨EEސGӁpi Mc3=S-Ob&JJT:_&kwH.1V3"kJIU~ƹ)/`fAf~5|c2,syTLq 7$ =6p Jdӡ&tfgkpL7cq;} YHcISǔ yn=CM]g]Ni l%-MK4 ƾО Ƿ, Ibpf[i:-#;AG c)]ʫOKXnl\UjNכcJIZ3oNN7R1I+3]Vpj##ė[st0^s{l+VO!YUO*[ը:tG]>mSzQ~~.vϩ8? 9! M|">\v v'mV^"k@'7}dU+ݾO"MveJS Eˣn *ŸqKBeݕ ѱ ̾lБov{-l144ƍ\~1쒶2[gi%-R Vy4`H@4Zl@{1LSexFqH@A(B:g5qZ/oʠy-zDYj%4ꒃMTՂu5T;:A,gpl Ov\JH[ [6n0u*]w"R} *%%ɢ`i#&'{i?P>=+0<[|$GCG+#R6<̃yۆg>S$)^!>>Oו "RTv:Odw P1hn{ju)*,ÏW_,WLL2b[\1ևBsKTӫ|a Ҋ/+#l_)/Q a|JspBC]UjrZC73Hr꫰g=2F W<2tV]p57`{s"5y V~v-6}p;bl[u7;!F3o 0Uh6m}16' +_׳?J-"LroLx"搆 I{f_0Kl+oLtqShn:JިNz-Kb\|ozЇI `E@R@V%#+=X@s{#AknLPba[o$9j9\)>Ww(gXڅ%1nNV+R͚%1ܙA٥DBk38 1KöBo׊5p (p9Y½^yVaUQNwFH;^ W_iRycUpENʍ_7_ z 2EȝFGf儎{6[B0|Y^ '}9֧ 󎂳jg鲂 =2bxhU1US!2W"yV/Ef#FyH>ᤘ)6DZ4>!ւ{yXF! elz7>@9'mqEH qZ[=t݋ 63'w˿[\v^It2r/bjdzҶA;8ru.ZPVcG4bIBcn,f)+!lEoӗX_pGx͟SE^O}>Rra#T endstream endobj 216 0 obj << /Length1 1599 /Length2 8829 /Length3 0 /Length 9870 /Filter /FlateDecode >> stream xڍT6 tt%50C " ݝ"]!Hw }Z߷fwVbdaP8S |ɅAG C@I1tAN`Tz)'Q&m4SA.+pqr $6s[T0(N ?#т c9-̠3 F 3@ f=Qwpssc7wf9Y2p& Njf;@X fw3s9h)(@п2`]o,,`fP0`jpw8+ j {7s5C n=wvN`33;C4EZJAP3N Ǫ{pilZZNŁC vt)Hm(prr  G†71~/1 l \@>^T7` 8d bQ ?v 0|< 'ٲA!1\-j,JRb{ `98|fQ7|V0_>V_}ƿ \lj3<q,xd] ?Z [8.W=nM_ZW% pZC]D,d[5*u~/ Üt[eah8?qiJvq̜<0[x^5`;t<9a'CxDfA ſ r9?.񿥏p8 ?#3ayGfHW)-\?X?Y}zU-Aƶ5*2E:kΩ5*ӅD`7 ;M!-7޷&[-IKR?gs CjBPvtQ%rs-]خU¼-dԉ0 (1JJgDc&8vǝ>"{x˂sK+Wϥrm.N2Z2}RJs z/f V'![WN{'tcdHD +qEq(Nj+ '|Mάjq5_-IϩD]r3vbzFR}cSU1Ũ/eF('7" /Rw2ם BÌ7 )'#ZW -y~I(H$jč#E5պ}imb njqݟ| eHdtfb_ ڰGf~&#*F2L"`~:&B93޼r|@[x|&7]$8gY^ eP=TÈ}MzTL'z>ut<&I)^+0 HAf y|6~):;1%J ;9/kz+_|EԚΔI-k]cjd<ޖ^y߽WK2? " iv^g?"̤R!~9XhxC8 5K(zwt3eJhz5x-h9.{>c9;IIWC>sڛRёh]on&y!y lBY4-*~vO2=$:XmYTD!Cx\,Cs]hrE_ӿ (%hbyzaDкkBEKk%^^.R<5υȤ6UI$o!v(q:c X*ت-mvSGhzғQ\PpSS-gfDP2#ȧj_Mf AL?ܚKk~&hQ[ HпHb8jeGe$\%*1V"]=+Hp2YC^|_ zB߽hǮR3[e*=֙k]C.{tվGwKq*^zOx_qLǴ p}V1Q:ב- .]No }V^rZO-֫t/())ȹGJlvb?Nű Yz1}]s@y]\[dM>@Hm 5F ^=m &YÅq+@5R:8)ED;mC+٦{\,Y6_W:PW؉Z"i􀝔7$U _~L Aχ2OSQ aDxzɍ`WϐcF~-9˭bTY+kj] Dmަ@C (Nx0ٻX{RF~8M p&s(ۥa D^m O0L/ݚc e(k=C70jўsDk%=zC3ߘsvoOc02#nl')b`ilFS Eڠ[TE]_38wa6RntYO}A}t#Rk MIϧE86xg9z8sZyNXRKt Fѐ~| S"2-fo⼑snR3A'&mrUo*n IiGG3 "iz:*3e}.e v V!mFix& ;e{3II/n7!p::x`b,$!"=o ܖ: ClGlo;d>/F$bTe|SbzʈR:iAT*, ,5Z@Fdq }bڱ/f~!h6/~"^hS8 eiB?RJgunvfaAHVm1ʢٽ4㰙'+XGu7 B( mQdbȑ ~xm¦5 Fgw%QMǂо""Bfuz)svKR'1&aB煥%'+3RS8#m܆llT>K^g1Y Ԩjƃ<{B+}= C)l}OD;Otp!G>3̒kIe*fdETGBZ? e5-2^ :LW ky|444@:wzF}ʞ sWzh_MXJX!uRklzE_FSP7tT_ޟk>A߿1WP"_bf#y9<1.< [qN{a:KBHayrNg' bٞIcbClp,ͻtv\@p=eM6i:nGA]EۮᗂD܇+\܃4?d_/+W(?0Kٗ<_t]`a~iNwBÝqס2*T˹1*e̶o`mfvVbuF@GLjܮM/d[I(Zމ f|3쒮J^#U 2 +K$xàZ>òi%3]\D.Ja~*ne&ډ"TP`IyUh GSZsC6ZF~2@3.niѭ ^Paߑ\d;StphƭMD*viT@Ϻb60MwbK)= G, ꦯ4*#|o,7 wes'l"uPsuFn,rE谥ZtMѹWt.dZ 7{nNb$.+G涘3J>:Ũ"x^[_~Xl2cUk:\J0n<,Fvܥ;U[Z\[֝y(EQ[R>+͛eYpKN0 (`S= UV{3Nbiպ,!( oGE^e׆V qCpPה;so|{vM z%N?r9:}nMP@+:LoZ-U_Tmrsl?X?Y%ГTyЪ (dHxy3&q ʴ /JW:2wفEiy ̘[M›lMAxLЁݺ{p|3I^ s~ u)u=D1yƪY;d P/nqGHmIb48 `vh̛mrZr?;:&5)G NyzI4~x#p;=V2(YLK;ʖob ofpo*C 2`ٱ׳,HYuߐ+ ꣗qs3)e )ԨfcWHΌ\ !2+¿wLƆz!RPtw Du(]CRLϒmPhRL5Vk[Jҙu0nCVjڿmRC[^k,eQI!E3=iqZ$:Az5Ű A{8͈P)M!3oP0<^N:];W aQjJOoĎ$nů"}C+  ˴N…I/wLr;k9h $!OFwi "~AaYYImՑt0GSw gQ2_%aP$ he:;=)-3yy)Zdi4c!xc0.}mCI[f4+ٻgZcf)lw&v;]`\2Z!Hj7m @pk60aC,hNVSKP0ַ|biYO.N"QU䂚`"lA[R9b{ij+za]$a_Ф_Xw ^ Y;C0"z}R)C=C5I)N07.?Av؍"?{f"brN3HH.9(oIoze)(ԃKO׈V /ͳ_y+O&w5K7^7}9&y):{J ЌhՋkqU9&LMPj%S`R 7{ <j=Cu-Α ? |Ba຦Н#⑝$6KcVO\J\OzxnKGĩʜu?1E|`I<_VxHg#9 j+T|edj嬿KQ|,|!)5}3{\NCk N]N"ONjLt/Av>fm]NI ַ'qEL8JkMS4_3_(;W"I{B{\>OV0CjK!%{hs=~n^% AⅥۯ>Au.]WQD섓gs1ĕkBg_*ba_TMj t(a%c׉Nxs]FE?<0!v0j--7bwʘ/D<!]\jx'3m0&`h/l+9 X.ءq6K|אZһYtb{ (!lԟ F5}`ՕMvG35V4 ~SC2ZiӰ뻀MLI*P&U0%c^qo#κXfyʂ6x g[yic%|TvOwE2C$Ԩ34&,ރޢPnn >=OQXjIA$LQNL2ZTl4Ҭ` ֳ \03:۵]BTM~fgY١s2qRi¥C*UFIY',G#pAbOS9B/X(aTD u]vPSa-T9h{2\'wN<};>D)ڠwc!厬$Wi ?5Bm endstream endobj 218 0 obj << /Length1 2342 /Length2 14723 /Length3 0 /Length 16112 /Filter /FlateDecode >> stream xڍveT\۲.N56w  Cpܝ}{?1+fUͪZHAN(nkDD UQQab02322#;YhԀ6q8dN SY[`fdC[n1@ mktD sw075s?FT&..ڿB@s#t@_fNNv ֎TWs'34N g` '9z2*e['W $278me)oc h)x&2`bnȋ;9 lX9ڂ \ ̭ AoRrOFvNVdM*5w|@#PbK?w*v 6@)XDd@'###'bCT)~Ayx{L@MOG o#&&hjn$A]`b5!:>3rcE3(+K?jaa[7'3#`bx7-xA]*sقڌlF/Y?$le_VhdmACaMՁO,k @c!dc jm:.zVn@cs'#oﱳ2*:^5:&F͚%h8/4J}cfc88#0 Nc_ `u@zLl~_-;Ao`q0 f`8 'A bQX Eb111FX ;qf/' h/1?L-Ne9 dbz t @P ƶVVl~#{g1 oA&AzO%M@T 3w;3Ъc _T?!ݕX=Dmlm{}HJd5be 4{ vs"Y9+fӜO ;: uL HZԠcY'WA5u_:/jfPz}`_,@݀FsFQ䆙eME4@!tr]vWLSݹ!FwwGO]EWECw2 >$|"?ENGnu\g琾XI(;cSd*G.3$O4TdA=bP2X*~W=^W^y6iiaOEZ|H)/=@ԋf2}1q-vVmłYn)*qI&' .,:BدHPt&g /߉Q1zTOϐ%[5޾ toB4J@{2^ 7Zc~90Sl3n,mtڢ1= E2xx5Y8f;Fz,hؽ܏Tj*ܴS;騋)üvQPp&z]G0#Q_ K"O}q6c[WYD?ޓʫ[vF o]?ܹ2vP%sd˗jԥzà3=3HMLovPDHV~WP`~r ]C˯o*n=s5iZD3(l*^q3<1MlⴤJ/Sk7\qX#>5z¼q lxlܲeqjQV(_}etDʮ/,].`9ŧ;-EuBaa% NYK+B^) ̰eTO4HEP&}Pv Ű>y#Hk:1Ǽ*ZF`*FQ&1~9RRPuzJqXk%: ۟e^EP*YOK* urM(ŻDįut *c4#Ml1ڏZc7?z눥z%.ܪ0nPPTO`}V 6)W9j N-CS+"] ,fn3'zhB#t{ﮌ@¨.ɿg,]juP1鑙 ?:{33+抟8i]R!*킘?f|9҅.AYbK"6\/-gG#&Lh 5. MWL. A(^Ht*(ɤdnlwpO,ɚ?7oR0-cQ-bk!`xVpFS5:1?!jVRg$DK&D~Hަ )v`X_@(B /dGihiFgqROxTuG4mCfDa)Xڝ=>Z/Q`21?5̰ ̏Eֺ5 _rO۞qNQ(J!AчxeҲn T<ԏ E-@zT9|P4Kq{I=E;OBqdN)?3c+ 5Q!5 7[ci)~Y/ۭCj13qЯ/QUkGNp.ʎz 4Ͳ9a$g«[txː#DmfW&OJ{-6F|oAc>Jmmsh ^u_&ʘ t\PR sl4J6f;3* `Qz͓ 1I5V1^˅DpG Bsb10K@&vqԢ_  lZ —~i!Qj|w_yt:l0E"%xGqgH~EZdž/yhen_]ɷtgpbYй-S ^4,Ow j &sU) ƣõݦ!,","}]X_0 Ֆ%gkVwa8.GW țm͗?pdwϲGhjM`aAv'mib0%]@h=D_i3o^Lo~٠bEq_ {R{mp˾jz0έ aIL%Ы'sIO^b!L ~iz); bTlz(cY&Wmw_PD"o x)7 ͯT'kb7v}bRZ[O.Nm9歯ڗ!m?R&_!(CԦ|e@ӇzDb/4>a]F=Gwܭ Mle3$ZI᭾>~V~C,Nڝ]cgⰧXfK6E" -˧{k+!+累 `ln-yPj:9R4K ?}]Uˁַjj,/t ?TIƠNэZcy{47E4׈:Į{Hyhf8 d Ȅ4`Ȗ=AdD0רTRxr`UR>WRIatLI{ kq"Sy,@~4ԯQm|lR$<>Ήc ogL7# ?S s*P4\_5 ξҊRYF9lbvO⽚QAs.lTP(mXgR/N1[3Gc{ 2_'$1t{N/t6})*-x};`=7 bfWF{!nw0];! bf5mșMv"- n Tڪ"@+pf}\3Hr!be1r@jCJ8>O<+byL5  {K\ޏ}+dHLlC.[2?Ao偊{|Yx~Utcv:s4qR#~4$h%+'vЯ^Rc$ć7MVF|1 /NёdR!|š@Hkl  O6лmV[5bԻْ074>V~;3Y珚FYRXc'^wh ;ȷ83Znwمwt̽bY*U8i1(J, jRhϺmnQFMSy)qu|{+yCc tg+P`sUF1uCfOYڈ$Eq+"]q,.AIgxL;oȍe)*j{H%:?K)bdc9qӄ$Ƒ2WW'΂Dr@Eh85n4K'jcಌ$j$SMg=NR@%M &W?KllBCE](ﮔw8!hXXGM k=!b˕.h'D*.' !E TW䖪펬٫2FUt~TGeı'-q[O8"Nԍw2a* K0:ײPR 45J]M5POS!_ڈ*g0A q}s&`wJ17\V*(DV⾾=aN(<d?HXcRFȵ_akyqdH]ȵO#$*ߍ t^qc1|&n͈]|n >_6XVLΠI52|8W4+tAiޝ8^iGGU%#}P0wJg=1ygp̚;h;I v[' d<Y3#Bb,+1jir5ߢOyf/1Rڸ;j]L0*U+.h̩7=!6~/߄<-TIU }atW|#T""xNN3p?6_7;AHT~>˞b1`!G;;ZK7Ũ:2Imuk2]o=Ea#?ؓ`Pb+IȨwifja~mR{-*JhN o9hV/RcR4n p!#1 y#\C~QJI_:E0-H]#L:ؗۧբqu [gw$>Fआ݆ 2ڣ^|2Z 3xCXޤPHr"YtX1鸶;'ßřFaKe?(*Z(^rvaN>uvf;—+9X8(F![s$x#ivtӱ<23= Kٗ$/W2kKފfg;I+RZ2D*Vw.6)Avd$"Rd:e砤 e@LrN1y syy=]7P2Ì$D#>O9m5!a.B,?l ȋ'qvFI{w2秽iu‘3c8 yv[G=NQP"L#E`k8?r} (+{_ۮ֦4ɻ&=f;=we! ,PX#?EGYkD<7 \6E @#_ V !q2j~F[+0ˮottvGFPz:i%(мG驷xcBc?hCPLjW+& n;8@en~^h[{^Όwl{f]8Mpt9ڊϩ&T,ěu}.\A@w$eM9lZ3?ڨV!R@ FA Y ]vnHbpi*p̸;ǬI%%.~b0{ifQnVB짱yf% {jkZh({|uZiѕkef՘iLHj_6#pcp Q $~<|F/bgp>.e}"QYad0@VVJ7hdeuN~KkQ>8(|S@ Z\JBS۞mMw}$2{ż,ܓ8Y i}h~:B– `]_-m#삎WK;`)TNÉBXM]/VxSR5T>K; P. Q->[ 4) xN0(x r0oD"ܕĢ_<"Fl{)%-G~?JUQ8%&WK[)4C!u*Wd;dEM^#(@RaM ]Y{G y:G)(s!E<%t{ wf׏:4K`46,.ԬƷ永BwEdLP o tϸ%!!Pv#;~[P/7YBBfaWWf B3_80C ]}ݚnTݎxw[1kZ._-Z 㪫\܍Z;d]◕L&( Tl[#vlg3`VtWYt:zZI}$m/[uST6$C4V9˯צjwT揺xsAW=##֖)38kZ$ab_h؉?E}jiD+2G+cB]=ϏZK -),Fi=.I= Ffe˧Uh>C Yfgˊ(=LGӏAN??` TR Ӎ jP娘0+E6^FwB(NY[Q5uu2|2ͻ2 =Mmyl| Jj ଁ"'J T2o"Kq%c{(EX$!>:CԗEY?/'jܞ/}=Π!I 5:OR=r$}iuľ}潗4i*͟ڏT^3af=-E{*UZ SgE}Y0Aղ0Tx( 쪧C{y02ĔM/ @K#r6RSc>&k. ^NNLtLbeGV4 W%s!e=-=kl7u5JߍU# .Ff}R)>4~p^uv:y6մ炇 Mn.zV6LK `3eT

YrN?/k4Bc|mymYg%FnP$<{E=brgrRoEH8s{u؎c7{Up0:z/&-8#[.AL^fގqm%evrfݓȁ}K_״ TV;}I+rsMf-d3-8}}aVezؖt>CA&KMa|,"}!|nV&F#7a?\tl.D-fnwsFap>hǟ[ƦЦv(2KbxY-~LP@(MGߒkѼ˜ < T$zl%T=Wa߈o]IDIic0L-buLY(_tQ& }`hQU9dNf;q\Ed(DlUϵAD: f@ idޥjho0%V^krDNQq|e%DAh(JBm* hTLrV0B _k2snCH,<:6g2Ǥ#-oJڐqZɛ 8_Kn ?X(7ɬj(&] Ӄh>:OA-z}/5!wjm !i֏{5-$^*bj4AB[TX cz_gEQ戒S;.A>/Ũ&Tg:U#1'`rfع\t5t 0OUHoA 3cR'~0I$Q6pQh2a^}-/K9NɲI C* [(7[t%si@UCK9l{vnyoYO9 ƔS<{QI"t*k'XB;vVv#"e WZy|s F@ ;*atzdY~V"̉*TƆWbg^pA {bR]-eзNQ`Q=w (|4KsAdyy PNq~3d>IJ$)k|é[f,#Xy Օa-+{Q t;m`A56z{QAG#Y_~ c.rG1n/q= ov 䎍'"8=A]fެZo5[!;V-_x' leʯ[[`(sTRX7C]؆6l?̫Tӳv-'^ﳀ>$B ) T!gC1~{Ѯòa<_s8Υ2\ i4;o#PkQiŭh OfPMXo})opERG*uk@OApub^RSVL@^+tͮbcCS럛f7~e4|qű{ R".lŇ׭ [01@My'y_@vz`8 "#1cQ$Z`?k GUHU`Vba0n1%TӼ;)9h#X.-])Rܘ`>4+04k=d!;ҝMj%ABqӤ9~D|hi>Ю? EgE'=^f(S]WЦk+ ՙ||]vfFHtLXʧx*xXǍE&q(<Ξ馈K2&Gbpa_`?ʼSE`s@ƤI1Sߝx@(|sJE3%%་DA2F!|U kT/P1xRːc>2Nv [0IN"#1Wp"^p.MG/tq2 PotrߚAl+ɡZ6~W fuT5.ǀ]hv/79cS/{/y Ű>r1nX巩jx åVr%=8NhL&^iS٬`}o͕9^髢!7~@L³ LS{(47O| ̤qxO0wz&CBi/W:n`SL>_eo,Mrm"0/q ؓ2,KY3*"[ 931rf_CT{aO|yE?8feM(l%}2K7o1w<`;xx9(nph:%W!ܷ X˞7dD^/1؛> &9gt#!`%i??Bs-7 8> stream xڍx4־ z  f;Q`3щ^#E !z D5ZѢ Ho7Z߷fyg5zPLEmCs B$Fp 7NasGQH`(,`($@ @ 1  MDKp(@[B$(Ww#ߏn$..v;@m0F Q8 R-rwc04*v)M`Ge0Dc0@!0$⁄Z]W/_{? @pog0rq#}H=h `1`$@`O0~ ԇ]1h4F_aǬ*\\`H W~Jpw{>Dy!^ÑP_e@=\p7"7D⢢" 8 rcˀa?4{ !$wt, k;`z 0( 7w5 Ut//$@ (@LL8z`Xz`S򿩦FW{UN<h~}p8Z 1ǿTnkp$La^@ٰCq"h4`H k؄DD`ww ؕJ(HGj ꂹ<]ZA8/@ x 0pWc uC A-"l 07 B2;H9k=g_{Oo%~E:` 5Lo$blʟwtmVBZGgEa?[ 0",zk>3WyX/@1k*|v6csV%̀%iF#OOZc~Xa:`RGC5()΅6F?o5&F;ޫzƮQ 9HZ)§cԴ]iOO̵p?> 2zIFH*EKQ=렽s #:Ӓ{_$!6ߵtFiǃ2E?P*b5Q6O}\%WIN Q}0Ovl!O^թE mihjTFk SӀؙyz2ʇyZF> ֍ndj|h֜?:IN7=1IyRyF{(–_xÄ(kzcXܟO TmFOj}cZgfWeFjC!&uӹfp`䈵 Wb%'vrxSrA",9RG;7=aNVuTr4=qYPLD=ܮ&2~tԅ&s]!*e߫<gC;!4jMJ^zi/(ܗ@K=odvs8&N]"&ac1[nz'W3"z] oE,OVגxI\U{+T&$B"},kjeݳT*LLMTARs m/##C^ ꔋF$Vz95fK~\.;ht`qWVv"֏W u2Uk.]O)~ɪPLF#WvVi7HZ4Z9 ލ}OQ18hN8%S 6xm ?Dځ^ K&K뎌c_gvggvەܟT-rgϏAWHoTL+zxm$v6ԉmWy.O8}%&; ]V,bC#tY/q]]C`&cdK\xG쏚*wSN}rTr|+e*bmgr'U^j蠫yK쯥o2~Β݂ CxKS)&oOpjbL,ȖT\JPtBH G3cRvUN-S]y+x .ldPTOr7,#n& #w䬯8Q\\z2KC6Te?^QkYwS=qv,;ebЪtp&{\?>a$Q"5W/՘@Iu-j}~^}c H^HUS=0au= {tSoCE%W!x8WUsFϱNE#VT"Ѿ¸=:Djry5oeeДW'vbA:ByC@ϥ@9S,a'%V?$L$oR{މJn,y=LN"qtMޒlQ~@Mwll*4Qz,"QML{6FG2w%N5yI޽:USr~xd&V0vh^C{+pɟ)mvh& Te p5'€ lecЛ ( R!sQO0ۃ"y&˃%5| oΙbj!Jz}rbEU D"rWu=JZ: yn%"=(te@m$m7jتGwVLc @˧i()_.Bֻ[A43o$P[j>LqKe#Vhgьr/,Y2*OLr8z5m5>[9PJ8 ~ .p1UԲn T%)D5Ɍ"U%d;13ƺÐ^ '!Eeb2Φ? Jp*B_1eQvJ֙{:͡)"e21~Kp@iŪuV ҡzb] F2~n~J[edxlA`z|y JsΚܭ\LEukIR|-CBYG q%I?:xHkB=-x [W96K$w,چ viegoW]cq\ų) l*;}ˇOYZe1UŠ{Y+ϡI)$dl[:6Q\ 9 ا4FO도1eW͹N]lE_Hr-h'bspߠA9.^&$TKĹW=D{eKhRF\XDPtV8˽1GC~Ӈ7(5nq5T H{=#J%OuEVülF1 ѣlkc?.ŁʽܒlҗiLgUvJ o۶7\ES5/$,0JeLQ(0;͋s{!sJBuNGlaI2#%m){<8N|4؅LX} ư>3ftzXF'y<ʖTҎon 3kE%M]Br^V&郝[cA*?6Y)=ˉu3=+o ]$#fԸs8k>#0P3-wO_uSU >r_z~KKM◺/`'V`k޿.Wk ?4cu=.ZV93`֗֓oL55UN2(~Mt'JKa4a%;mi+T3i<}V{6Y\' 4D@4K7s.φAR[Bu$iʰDS*t.FME>Ef<گ2Dq930z2P--?Թ~rBExof"4N-M3/1h<+4(~F١o"TX}^]߳fH$̜|q~ff&ngKz[Fw[E*1)YC1KV`@d .~B-\Uc'zf#h3LE-(zNe} ;o$4m\!#F4qs6WdjiLU1MO>D$^2} TpyA%_(k_Lkhg=/bymLv@ $lei4,D \j\}-QC(@Ϩ ^)Nkw"Nn[d:eu5w(:^ߨy \p2*l,oBȢY\! ? *Ʈw{hxZfW<,G6%c7Z ^>N}!w66{gXҀ+W~(]d؀!ݻ3Y tqҽ}'@Zm#B l'R-@!3Cl7X黎\jqE"$,թ2ӊp~e;'q{05xxjkX[.o >՟';@&CB/yO)F#+>3P4a3,۲>m3iтu,ɗ;Pw +1\;@!a3OÓMcϩ4Cx~2bc;J9*- lQ0Yb ڈ47ݏ뢏%t`@3vcyٜq*ē,˖fDOM~04cBH疓0x'aoE-$4?.C걗.)%+Sjny 3m<&Tp]T$n JEĈZ/VDm>smKSoH X܀[dT7Gz|snwuҮz=OJ߁p$ d3=k?{ endstream endobj 222 0 obj << /Length1 2089 /Length2 14576 /Length3 0 /Length 15836 /Filter /FlateDecode >> stream xڍT[ cŊ R];ܥ[qwwS8ŝz9畞1#\{$Ċ*B&F@q[Gzf&*3\h Ghf5t| H;YY<̜c0сdFƿʼm5/~ 0m}6.6A ӿd81ـ은Ry3!LLL\,=jlnv4xyLd@DCg "33d0lT3M rh33u۟𿏘QUXVLNߒuxгYXY쬜nVQ4?2lLm"K!xP[T\s~ AVnx['Ƿ}M@N+h6 B6fVH8hr467eVkά@6@E[_7 ކpxkɿ]lmM2v!lI,i4F[Ƿ:/-#`0 e0 AF?(_` Qz)qު(Aoy+Qb{?荵—?荧?ު:q1B߮0??h35_~{O_ f7oAoYv0#-?\6[#M$ck߈Cq?obۑ9quY]H%@Ϝ;ߘ;} O& h`k`QvW-B3y|G=c *|#mʶյ2ѳQs=\pKR~N+dP]?>糽?KfNil{'.܏w.}u?ǂvv8d?GE͑e:Ӡ]̢gMI"zGxhmDϻ8tj@_MSx'Jc(.X#b}sG[V  -1FZыb`GSkwE\"WOow(6Lk" '汻syt-stR;>m(*l!oVBVk1yl7>P&vꄂ-ñ5t[ tq~2_쾰i%s<7Y%LJ7YǞhaCsf/ ܑ J4n? ޻/y4A#5}8ܸ3lԘ&&ɮɸͧU;'6^=:A)m9l"*icvE:9exrLInx ʬS+jty-1%jR1nEסA?u Q4 􆝖y^n@E{i QIUHûYYWy]$1d;S&.O ^Cƪs)"e!j9ht _AgkOgeIx)ì12RXAXB+r (a Q1# L^ڸL]~MkNeDmy샭v?c 7sTXO%ٜvJlLƐ)slN.;,mڎS3#yW)aMF/4KPd&ad@P$%Q%jg%GذeE>̙$e.OKgC=Ԃ$qr:dTb>ʔAmL3sؤLj t/63no^@"}Ʒ˞B{8t(f3=6&N-jNԡ )\5)[JoCč}>Xtl.cǸ0#E>ݍeIu5DB6])Y9 9(|,65;&y])RQzD׎(D_/FX&'vo+|mg#[bO>|N:*̂}J-"RcZ<9p3M}n}5=_Zhn6ˏՑ4c,`V=U,EgDO݇屺i""0zUܤWB'Gd{+ԇqeb$iNK%ghzT*f)aSPl"Sgm({J(rdmПaiDRܿb7O}wuhoXZ2$_f7^dPQq*]KClȅx+ i͡oDu&B GݞX4o_Acaۃ-Uf# =}<27}fa/*.d3L&sMYhZty1;UDrc|*~cи wnd?G-96W}v쥖>"-+vJQU{DB|>W&ͭV;8{qnǃ9Fh(8oD͖ԑN h"i- 1U♇Ч)mRfèOttb"eN,9HE!/0Z>H9..r WoԬEݒS *{qcJw4M=\:L@aKSaHS9n>Q >K! toKo^<B?P'j/wmVsv0fŗE.omQ+'C&. x?%_%);B R&"7>DAq{Tڭ~&o958E6IƋQ@qJV L7&Q.Хq4$j*a$bKׅ] ,ki)m ofDiuYFц;"7dH7GvJLSg;\e#FMEƍ^nGCfV9T1ywIvh@Sq=݇]i74wSRifF& T<[ge SPIvWX>ztzqƺ-Ơ뜡rGxo S[~\dnM!`d_Ϧ](w^4_iQJMrD ݍ=Kx,4e,s&eaۺFC<;B)l8PN럥 U/*%C0!57l>NMz<=g:x)>'8aI}14s[ciU3;$)Ggl$/Mp>y-^aY^eEgR]z8u)/Iԥwɉ7J/4\qw1w?ÚJ2c |HҟfT4ԍlj85ozgfyˮY%3OeBQ0$W}^azsr%| Ӯ/^lVߦv:֛9q&=b`M8Ȧx9cD w?fnU2J)>{65[*{A,"2mKV ~m W.%+ />f?KK|CpQM?fKZ\Kk7u5i#bi3[WZvE4Du[F׭2&8pT曽SYþ֟f)D`N5o I'EwStb6{kQNI" Op(ث^VT`g8`9Ґ&زy<i>JvKhL si\%/K 3 x;(}ćjx$gWuF0D /n" 3~\x]^=*$onv@1zLhTI<A/ ?r!cLaKͿ1TO ̪\b(a!ziJhu %)+)ZnU!wc7 B'BRƢoT=htTߏ /dg# cJH}=y=OШA^^M07CĽ7(MNsbǨ:lIgb*6VA:Ԉ"xIM+VQ%{ا.YS] ,:%/٫j@-CŻO _p`݇O;Y!}5U>$.xa&OdMBb͙eνk:&0P -xߝmQ[VH4ZCyDŽhJ{1pp K~4>:k~ughu:'ӫ\ J)y-)Ԉ#QGs [%S " wZ<|kTefz=}uUz2[ks$wM dI˩^hqlCX)hUYwq #oNcg mxsDnyG4\@nV'/i_Dc-D Aa?_ϐBz;`y5 JT 1ʀhr>,B Z똜aa:qʻ߉2Gڣ Vl 'BeTƙJ .2mŠ64BL 2zރ(|ΑnfLE$':rH*hRsΗK"VKg+2 1y;+4v[A).b/90d-ڠxp Xbt"Pfs a0;\nGD*72i6"R gmQ{qN]6aM Mk>A9؄4]"E*:0oݘU sE\$HkRY)Hѿ9uX@LΒ]˶v~qV hoņfúPb\ C `P&XX@T}۞"`yk&:60PPM=i} B9\Hļ x4}rg{iF r2IF2iR6jMx.fq󑞱he%* R _t~T͆#׵-+^)\PBhx#FHfKJ|6 ]x'5 ꬑnk&gg%$F {~OZ6#i=1EB6gc׬wUY[<,q <""1 FI|?w y`<<ȍ}ݵq()`E{l!W?谘,lSǯ2>4ەu1`CSyc`5?t#)#dnS 9_8= 3syLЙh>Dq4Z"ia *~GLu- ]-;*5n8ChD*=’׵~Ub$IF&hm>R #CСZ|;Pws02uNkοǧ a{iI&E|bkS=:NjQ~43hR; fZ>gOʹMj$bV}9qwbՁ 1GF,|f4%C9%619x:zݚ"\V}Liy[3Ʒ/$ !]mbi4[r#7zN =O"&̤ U,#-v*-lGԫBf) DsDa9녪6COBw=Vg&7+faIUI'ܚ=6z^^D}5疩d#-NuΈctrlՏk{eCg]2}c)6>no/I*SFi~EN:7-(8u+#nVEbJCyif'@'C…[,'i!߭,Q/ArquLs&@R54ɐ3[l&<΢w=W !ყ>1f䒲W*Ӽ=J Jk䆎# nVMWe|\a(L4 ɄMUۍa=/LOhjA{m6?QHN|P^h'9٘ʶ>`UF\CKሄjzk>RވbVs>%+ H!&m_vэI{HQdOi{ f,JwKQW'9cşT",Ta޳Y}N̞ 1qR47c=-ř_۔zY.jD 7ӣ&+u(1a LF8y.h tRv![d=]O8?>[i'c5tI72/jV0yМCl C(N剕d=v_rTk>qKwݾ-Xܰ =\=Z6D<$!U?  f{5Dz1 kpCEAT},J)vGA.Ongq(5F`IA?k¢)GGe9-A! x;TrH׀u];; kh'u_sЗFtZA{=v➂6Dإ^x(Q a #QJ} t.۴uWRxY&otCT jbO9q~a%%Q4AO# ߎյ@FBD-73 s8ys*ð#F5vXW?ʇcT@:ٟكUI7B|VnĦ!SnC"AQHD>^`q88 ǫCBIo1QBGW-~FF3{Q>s<*uPwV輸Qx A;<9EK&}Ihq4\D>E䬌R@ެp( 4cg#.8!A p6Q0>(j3,"54v пȌ?JrgO4Abvd4{]MI:QXT.dE+=+BX(,oA=_؃@BIK$?#E,Y.O-=UT$3Ʃ%cF3]`B::A$g,Dxj\\:a<Wds<=YE%lܡqZg-_AE] QMt+nl{;.CdJn\H̎4 썡++Hbq&=}͛U#k,{WY8A&~9'+>.@ʣ %BvQۑ; {/&Uu<f  &Hzv ?)U'` sy}dx(  :Ћ&ozR˖ZD&4)[nT쫻~PZ B]ب@l]Soƹ_DCX=rUgzT胎} QVb5ݎ/QzeDbЖO^?l{&E7ϸ~ au' N孵 'x!BLԖb\lOP1(z@.›.<=ݫiB3:럽,))*y>-1BLAOOp{  M]$g]JQZ4Hͻ'ш.-;O~67XʳĬN簬X RX-dIHf'UR,WA.嬏ixpzݱk8xmƁh| -t64Qx)vmkk*!k50zwpɣ5[l䝟xK`>0{ %DtcTn|mpKD/‰{ln\CA{IS=e<(ƨK-V)rIA1P\² ʺ ʝd~~}#EԤ.‡ީ?wέ${Bϗh"aKsJΚ2K4bx&CR94Lu~;/sj^KIf'|UEj O:Mge%6~kzVM!b*.4ΰi⟰!yv Z]HhHʓa!-hT8>/Kᰞ >Ueg`%Iaݜ^6&+>ZHowA :lVHa|2Z8Xsr#0m(%*+AaԌxnNYzΖ۳/EUrEV(:VF_RiN[ī2O?9t*^$!8쿩_GK&md',/`>Md.+sW *N8WZ;s2-<1A.>+sG$X"̵oc>,S:UghI8CVߠJoݍkbc9]yꦎrd6+ټF]mJQ%iҦ/Y2"7^LDٱk[W*<c\8E}6螕NN'Ц" x[=ɤ &ĸ;_; -H[7N9BE*x shO?yzqgt-AXLV8HQL,ck~qAM8.|ÚHn ⾍{XjJU :a 8/t2C"U|~1WN><1F0 6;S H~jQ4싶BJV}H5dbF*60Qt˻[F*ϰEB G.f[E߫/)'Uݛ r<֖y+F^Bd;5IyBJ,KLД 'w ӶFj5,:a,fD'b>!L.yXX(qYQgԚOl0^+kBb[]8 3QA/{,aߧۈQV: R̖#cj |Jd: k| /F]tFֽLEX8y5RM9dOCM]_7G1͟)ždicd8~aI10@I8QKƖn;qDYf1^vL'i97e eH!܋#xc¡{ F6^B:SɊz?$׽j>KzMC_3*ῖ.ce*-?ZEwNU›Vw -zj#^TeQ)9v,(]VcOO|p{۶?S sa U2WCcT!5ePgnuz=9DԜ|sx\NQY{Îd>t3Ns3=a0|.6`ݍ4˵{B%yy-Օ m=^y{#͇ʤ2"è|氈ס8oGB# b%2$*tChTY!_SMXp%Rq?# >hKw%7ebU"*;Ilz``2_}'8LCE8S] )EqM]"]3'I"UKRbG^T(P2~jiPn;X%›yϐ^z(|":Έ `EYYT VY[Ge<בs8,Zˠ fB j>+5 q3HhP>AxLi&UDBH9%k Ϋ_V.[p{0[gbʆPw jǾ4n&uK"0\} !(|L0d2^3J3% 撲ոQa!x N| $v*žw:ȉ֯:-:-.Vnza믔7Dh9M_A]}s(l0 3܅b G 1eAFxW岓A芓vV 1Zmr@F'QQvV*dI[l <.ڡ] H~]n8<i~*(D=fpiuI j;TZ*aH:P|?cŞT C2L&rIǵcabn1 oHl-,;gs읝2Fc.Q@1]AWIo͚Z_Nn95+&I)QWQ1-рo,?&"6xD¸p ڵ&T!c8[%1VP7E;DHB0Udb](>%˨v"436$RVfObU ^[!$a\I*8/#&H1XL:mCUl3(Rfٻ̴>1qbĢ|QȩʧoP=z/eS$JOIi5tjwG8k>vG$W2uV]D勊!\)#:Bp$ w{ele{{p% ~Eϸ57F$#{oYxu0Χ߇"tHsi2(&y.v앴8}-toc;2{, a'? nZ~.]쩹2XPӵv#< MĢ'j֧v@S;h&܁ s~L^> |&{]A@MsҘg/!(3bAF* D2(48I);#G#,)Y('Óch f@1UC|6== 6(>=C׺Ԣ;n#2]VsT}0΀kߍ?ȍȵu ~_ʈp@ Pp/e<ύ~wZtKgHE(w-KƟe:x?r t-/zV}gRm.P/C|Dwm3qiK\~jf>-vݠso(s ǿI\vGFN Ǿ! <@P;_> stream xڍT 8mP^I<5b)D]dɚgc XEBBodˋYBQ $5%;>ܿsKUS=@#*VBivvh B)+P ? Q)0i  hIfL2Vj(A4 K%J)}O $2s~dqrZ]}Z8 XbD>%T2K!{`h JXo-C "`AV[c֔RwR , `:¤AؚZV> ;;AXVBn=z5DY pTo,%x VFJWX2 cJFG,zt aЕyGjx̆>0 \\O OXmAS _&hj΁M6OP 8"r@p͉^5=P} @D~uh4p (a3HA @~w VJ!]1bz8@"P(@M]=5Z3ҔBߋ`uȮ{TX S(UBb_ 415wc!r:-%ʿŵ^S]'ABt#([C qM{F(5,"^. ~=$\ ;hHQKQU46QU65H% pwJC^jZC @ $U$ _ T?!,z$g©@5 1pUkqL ~ ^{m@0!^4ý|.8܂Q0aaÐN#a>(gt_&1P$'YBKp<NZ[01#:+SB36tPH7>(]x8#S^Ge^J|"U{:-S1Ɨ1 on+CwMLl1_HNU1wK  Dˆ-<?R!͗Mf1$CiSC&s0mlt2tc샃N/B<}:$DI3 r|8'#r0:TP4eӁ2-LgrE^|7ur9G'n`nz'0ᔀ"̈_v\IG:v,qm_8!@بE4>.UMB>_ lm6׋K8C Cۂ端\]5-?.U~g˽=q wMMOGBYxF¶=)I={񄯳W`]}f>Uk`8q{k??|I"Z(ᡓ 32kv^s5;#!"p=wN\dmV O2IrZqooBQǞaW".]yhe-..i~yw</jg`hC6[ӰhsFxT߆fŸ~>E!҃;"K >iúqfE6W'HհPYT?2U`T_7Q.oC%BK3>yًvpÔ3]#S 2}B;mRcM.U9S,c`CD1[3UGWn03'՛mhpP @^DಀxR lY5-95]6f)Q}暽ns>:Su艘u]ިq@'xWɄQee7U h;sw&۫\aiNtW>/UYa>tVqL@} hTʃdo'i"X!hl`ۭ!ϐ6i( =zw٭NGS$PZ*i?h}~B8.ٳlON8Fؚ8V+BOFSL<$%_bhRAΞ[r ;hުgWzϐ۽[ġ ŕM:2b2VIA[51]:pj̗3rXp! 'fdOj4u*sU5~ƨp/l7ϓ`xS̓9/ۇ\# w6tXyZV*QA㙶cjU޷uʘ eOxix=>0NHЫ`pa/tds$BsBj4 f_m[J=UDYda*-Ls%5q͑o eE=(",eУ>iEq^5g/M9}fk͝Tl9oxbġ$" I״½4'ɗ4> 5+:Lv7ǒTol~mxG,H:/zo Ip Nf>cS?61 ^)>eHM(YU~̧vN/nl.ݳ82:f <&-I]= #-Kţ1r[/1!Dhɢ{MP{BߙYUN,I]e.-~xHE$Y=UgO^?15{sYDUxf׈F*'6&X_ q4}l}^t…*Yʇv\;~; ;+w%u Zm=D~5',,낝_7o5f&9pE`3wGjuNq?un$\\1ahwmN\'{=N(& 5H;%^Y'gqd^GWFhʅ@-2{,嵟Ŷj_*1Վc?'5)4TB~y#|)_Ț!i;)|90Ek*.RVrP!\g u=ncD)YiQ-| xNiBʮ M{||Oo%2*摆@O4%=Vh+&و3g)$\KoW$ d94shMX?vE,FES6zbm|ZR<(+y92n qQny+}lCJEJOKV@1 endstream endobj 237 0 obj << /Producer (pdfTeX-1.40.21) /Author()/Title()/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20210108093928+01'00') /ModDate (D:20210108093928+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) kpathsea version 6.3.2) >> endobj 161 0 obj << /Type /ObjStm /N 90 /First 805 /Length 3987 /Filter /FlateDecode >> stream x[Yo~G ,XVlY]kaLRכ_aϐԚI`Gu_UWwF&t))X0LEljQÌHӞI/i^2o@z͢sІ9"j$dRL<-P 4 Ad;@o@-4W*4j(#"Vtb6xa%$X *TAT(7\b\|TFq/ul:f%b4*' ~]y5tq]n9-fq\tRG?j𷿑Ō 6ȼCd9oCt`?3$N!?Q:ڡttQ.9~vxeeZgm9c~^ΧYNb} |TW -(f0+E5=;+&,,X,QGzedYpWtxX.Ȩ娜ޫeMkk6O jb=~,U?jT ,][dz ?~ky퐗:lء=q 0'v'd1 Ex|q)mFKIb10 줨?[կ>;\"`ʓ#Wr>"}|qpW̘ݜl_WDAR>c\Fq Lyc AXhEmpn-磍C8\=}(]- NZ10MjJ,%Iƿ#B=z,a`p1畂AbG.w{2pg"*Kȍ'16Ե2CߡI~H v&O42R[)i45}҄K mtU^}m7a-U7w?x ГӾQYFCXKq-GѦk-p!o/Z}O|Ǻ8H󰩃ۨLu W~kJ9 ۴`JFު'#^lH)`Neץ=`-mT& 2Uaxedcxu!z-J pE2 H;1TEX# :4&A$A/1$Qvؾ!iЊMPfi6 JjCǶc-q~pVBED]E{dG|ރg@)HAe;OǢF>NQ.*yKt)qd_P%^8:rI|aa%đfzx|0 @d899]&?`7Vb?x20_I1QziKbUɦ<|u|Sdk]@vYMVĬj9U͖#emRl۟Z"qMI*땊a&Ғ^Vq TtܐN|Rͭk\ MpJZY%+C bV{#gޣގOՊG ۥN:J0EG&R=mLNJznwtZ2TJI('u:z49z)bM-BaMR'۽N*EؤB"J΂ۙ%3Ȅ;"ſL2rV:>z z\׻$i))))SR\,>9})))^LX7ȥNRD(LT ~ρm|̼pppyi *mif*L O̚7m1 oGBaiZܭZ YMEqA}̒fTiLA%T_%uSJ9tJw@ԃpBU,傔@NO./ޟd_ sfdݝTb<1 ò.^45[Ÿ܎K/jד ۥԀI??# ~G|4O' .~xOO'%嬚^ߖy/nV|/g;K6U)~+}3g/6 u ~ 4(zeė)?r6`w5w^\Y[K_kjK~5bm3bM.>UpߴOuB0.bu1obo 8w?ҙTr#6#ް諎fq}riL3FDTEXWIy4xdQi׹a򚜫,LΕpǷvo_7߂Fe JpPb _Ė%uh`#5񫁰[:B@C`" %DcEVϒf_=J8j֙Io}-C\wM)^\;=GS&-y}Lq[M9N gp)T1LqtvpwT0k|'2옌dTo__$%`< *} \,ObD_ZrX\PO6Y_ObIYrnv,/`͛S9W?֘9ꔔP7ݮ嘝ˋ÷[{O1׮[=XØ/rYq]q\SJ =\MV)ZМP 0pwXho1J٤6);MTm?ZW~;OM@k9]mᆲxݸ:`;${G-RZxocG}/LzȿS c_uf;Kwx|vg`_ZБ.2rw݃Y_zc '}rnwǚkQ~wOX]'^ȥ<LbL'74Zm`Ӣ#lDf6-2ldfER> 鸭QVظpK񈰐@M {I܀| ̄&v-,gE1[1³c8%CVЎY[1'ك+Sֶvi7} k Q>]ksS.g%M4 Q*5O=+5 =(5{GV=Y9(`rq f}d)M̡6=>Q`Q#) ] Bm ^X븛/?sQtRuuaoT~Z5SZҎRN_TgkO&@A7 ūmf|B *mts[LKӼ\ɧiWFڿRae endstream endobj 238 0 obj << /Type /XRef /Index [0 239] /Size 239 /W [1 3 1] /Root 236 0 R /Info 237 0 R /ID [<10082EBCDD15932B6D6489F982A46838> <10082EBCDD15932B6D6489F982A46838>] /Length 625 /Filter /FlateDecode >> stream x%KlMQ:msQwU[ڢwU=EK^H 0015ht@1"D"HHIt #Mku9o((X|/@!|AoTMvy`3aR!vzH Ȁ@"|T JAz;H "p/%`)e`9sA]`X PV*\P2Ek,լ4J M@-A<`U ,d_lgd J Z@+hp=hJm]v6͜ f3ZR>oۀ^UE뛋,91hѓJԻ-zs_\]h未PNQ^0`⩗5rƸIpq>GJQ)OӔꙥrdT%y%eU#sВ1##y[|quu 0$ are plotted using a color ramp or varying the radius of the hexagon in proportion to the counts. \end{enumerate} The underlying algorithm is extremely fast and effective for displaying the structure of datasets with $n \ge 10^6$. If the size of the grid and the cuts in the color ramp are chosen in a clever fashion than the structure inherent in the data should emerge in the binned plots. The same caveats apply to hexagon binning as apply to histograms and care should be exercised in choosing the binning parameters. The hexbin package is a set of function for creating, manipulating and plotting hexagon bins. The package extends the basic hexagon binning ideas with several functions for doing bivariate smoothing, finding an approximate bivariate median, and looking at the difference between two sets of bins on the same scale. The basic functions can be incorporated into many types of plots. This package is based on the original package for S-PLUS by Dan Carr at George Mason University and is mostly the fruit of his graphical genius and intuition. \section{Theory and Algorithm} Why hexagons? There are many reasons for using hexagons, at least over squares. Hexagons have symmetry of nearest neighbors which is lacking in square bins. Hexagons are the maximum number of sides a polygon can have for a regular tesselation of the plane, so in terms of packing a hexagon is 13\% more efficient for covering the plane than squares. This property translates into better sampling efficiency at least for elliptical shapes. Lastly hexagons are visually less biased for displaying densities than other regular tesselations. For instance with squares our eyes are drawn to the horizontal and vertical lines of the grid. The following figure adapted from \cite{carretal} shows this effectively. \begin{figure}[h] \centering <>= library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() @ \caption[bivariate: squares and hexagons]{A bivariate point set binned into squares and hexagons. Bins are scaled approximately equal, and the size of the glyph is proportional to the count in that bin.} \label{fig:compHexSq} \end{figure} We can see in Figure~\ref{fig:compHexSq} that when the data are plotted as squares centered on a regular lattice our eye is drawn to the regular lines which are parallel to the underlying grid. Hexagons tend to break up the lines. How does does the hexagon binning algorithm work? \begin{enumerate} \item Squash $Y$ by $\sqrt{3}$ \item Create a dual lattice \item Bin each point into pair of near neighbor rectangles \item Pick closest of the rectangle centers (adjusting for $\sqrt{3}$) \end{enumerate} << nearNeighbor, echo=FALSE, results=hide >>= x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 @ \begin{figure}[h] \centering <>= par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) @ \caption[Near Neighbor Rectangles]{} \label{fig:binalg} \end{figure} Figure~\ref{fig:binalg} shows graphically how the algorithm works. In the first panel we see the the dual lattice laid out in black and blue points. The red point is an arbitrary point to be binned. The second panel shows the near neigbor rectangles for each lattice around the point to be binned, the intersection of the rectangles contains the point. The last panel shows the simple test for locating the point in the hexagon, the closest of the two corners which are not intersections is the center of the hexagon to which the point should be allocated. The binning can be calculated in one pass through the data, and is clearly $O(n)$ with a small constant. Storage is vastly reduced compared to the original data. \section{Basic Hexagon Binning Functions} Using the basic hexagon binning functions are not much more involved than using the basic plotting functions. The following little example shows the basic features of the basic plot and binning functions. We start by loading the package and generating a toy example data set. << basic, fig=TRUE, results=hide >>= x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) @ There are two things to note here. The first is that the function \texttt{gplot.hexbin} is defined as a \texttt{plot} method for the S4 class \texttt{hexbin}. The second is that the default color scheme for the hexplot is a gray scale. However, there is an argument to plot, \texttt{colramp}, that allows the use of any function that excepts an argument \texttt{n} and returns $n$ colors. Several functions are supplied that provide alternative color-ramps to R's built in color ramp functions, see \texttt{help(ColorRamps)}. << showcol, fig=TRUE, width=7, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() @ The figure shows three examples of using hexagons in a plot for large $n$ with different color schemes. Upper left: the default gray scale, upper right: the R base \texttt{terrain.colors()}, and lower middle: \texttt{BTY()}, a blue to yellow color ramp supplied with hexbin on a perceptually linear scale. The hexbin package supplies a plotting method for the hexbin data structure. The plotting method \texttt{gplot.hexbin} accepts all the parameters for the hexagon function and supplies a legend as well, for easy interpretation of the plot. Figure~2 shows a hex binned plot with a legend. A function \texttt{grid.hexlegend} is supplied for creating user specified hexagon legends. \section{Extended Hexagon Functions} So far we have looked at the basic hexagon plot. The hexbin package supplies several extensions to the basic hexbin, and the associated hexplot. The extensions discussed in this section will be smoothing hexbin objects using the hsmooth function, approximating a bivariate median with hexagons and a version of a bivariate boxplot, and using eroded hexbin objects to look at the overlap of two bivariate populations. \subsection{Smoothing with \texttt{hsmooth}} At this point the hexbin package only provides a single option for smoothing using a discrete kernel. Several improvements are in development including an apply function over neighborhoods and spline functions using a hexagonal basis or tensor products. The apply function should facilitate constructing more sophisticated kernel smoothers. The hexagon splines will provide an alternative to smoothing on a square grid and allow interpolation of hexagons to finer grids. The current implementation uses the center cell, immediate neighbors and second neighbors to smooth the counts. The counts for each resulting cell is a linear combination of the counts in the defined neighborhood, including the center cell and weights. The counts are blurred over the the domain, and the domain increases because of shifting. Generally the dimension of the occupied cells of the lattice increases by one, sometimes two. Some examples of using the hsmooth function are given below. Notice in the plots that the first plot is with no smoothing, weights are \texttt{c(1,0,0)} meaning that only the center cell is used with identity weights. The second plot shows a first order kernel using weights \texttt{c(24,12,0)}, while the third plot uses weights for first and second order neighbors specified as \texttt{c(48,24,12)}. The code segment generating these plots rescales the smoothed counts so that they are on the original scale. << showsmth, fig=TRUE, width=8, height=4, echo=FALSE, results=hide >>= #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() @ \subsection{Bin Erosion and the \texttt{hboxplot}} The next tool to introduce, gray level erosion, extends the idea of the boxplot. The idea is to extract cells in a way that the most exposed cells are removed first, ie cells with fewer neighbors, but cells with lower counts are removed preferentially to cells with higher counts. The algorithm works as follows: Mark the high count cells containing a given fraction, cdfcut, of the total counts. Mark all the cells if cdfcut is zero. The algorithm then performs gray-level erosion on the marked cells. Each erosion cycle removes counts from cells. The counts removed from each cell are a multiple of the cell's exposed-face count. The algorithm chooses the multiple so at least one cell will be empty or have a count deficit on each erosion cycle. The erode vector contains an erosion number for each cell. The value of erode is \begin{center} $6\times$(The erosion cycle at cell removal) $ - $ (The cell deficit at removal) \end{center} The cell with the highest erosion number is a candidate bivariate median. A few ties in the erosion order are common. The notion of an ordering to the median is nice because it allows us to create a version of a bivariate box plot built on hexagons. The following example comes from a portion of the ''National Health and Nutrition Examination Survey'' included in \texttt{hexbin} as the sample data set NHANES. The data consist of 9575 persons and mesures various clinical factors. Here in Figure~\ref{hbox} we show the levels of transferin, a measure of iron binding against hemoglobin for all \begin{figure}[h] \centering << echo=FALSE, results=hide >>= data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) @ << hbox, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() @ \caption{Hexagon "boxplots" showing the top 95 percent of the data for males and females. The red hexagons are an estimate of the bivariate median.} \label{hbox} \end{figure} Note that we have added ``hexagon graph paper'' to the plot. This can be done for any hexbin plot, using the command \texttt{hexGraphPaper()} where the main argument is the hexbin object. \subsection{Comparing Distributions and the \texttt{hdiffplot}} With univariate data, if there are multiple groups, one often uses a density estimate to overlay densities, and compare two or more distributions. The hdiffplot is the bivariate analog. The idea behind the hdiff plot is to plot one or more bin objects representing multiple groups to compare the distributions. The following example uses the National Health data supplied in the hexbin package, (\texttt{NHANES}). Below we show a comparison of males and females, the bivariate relationship is transferin, which is a derived measure of the ability of blood to bind oxygen, vs the level of hemoglobin. Note that in the call to \texttt{hdiffplot} we erode the bins to calculate the bivariate medians, and only display the upper 75\% of the data. \begin{figure}[h] \centering << hdiff, fig=TRUE, width=6, height=4, echo=FALSE, results=hide >>= #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) @ \caption{A difference plot of transferin vs hemoglobin for males and females.} \label{hdiffplot} \end{figure} \subsection{Plotting a Third Concomitant Variable} In many cases, such as with spatial data, one may want to plot the levels of a third variable in each hexagon. The grid.hexagons function has a pair of arguments, \texttt{use.count} and \texttt{cell.at}. If \texttt{use.count = FALSE} and \texttt{cell.at} is a numeric vector of the same length as \texttt{hexbin@count} then the attribute vector will be used instead of the counts. \texttt{hexTapply} will summarize values for each hexagon according to the supplied function and return the table in the right order to use as an attribute vector. Another alternative is to set the \texttt{cAtt} slot of the hexbin object and grid.hexagons will automatically plot the attribute if \texttt{use.count = FALSE} and \texttt{cell.at = NULL}. Here is an example using spatial data. Often cartographers use graduated symbols to display varying numerical quantities across a region. \section{Example: cDNA Chip Normalization} This example is taken from the marray package, which supplies methods and classes for the normalization and diagnostic plots of cDNA microarrays. In this example the goal is not to make any comments about the normalization methodology, but rather to show how the diagnostic plots can be enhanced using hexagon binning due to the large number of points ($n = 8,448$ cDNA probes per chip). We look at the diagnostic plot $M$ vs $A$, where $M$ is the log--ratio, $M = \log <- 2 \frac{R}{G}$ and $A$ is the overall intensity, $A = \log <- 2\sqrt{RG}$. Figure~3 shows the plot using points and on the right hexagons. The hexagon binned plot shows that most of the pairs are well below zero, and that the overall shape is more like a comet with most of the mass at the bottom of the curve, rather than a thick bar of points curving below the line. << marray1, fig=TRUE, results=hide >>= ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } @ \section{Manipulating Hexbins} The underlying functions for hexbin have been rewritten and now depend on the grid graphics system. The support unit for all hexagon plots is the hexViewport. The function \texttt{hexViewport()} takes a hexbin object as input and creates a viewport scaled to the current device or viewport so that the aspect ratio is scaled appropriately for the hexagons. Unlike in the base graphic functions where the aspect ratio is maintained by shifting the range of the axes, here the extra space is shifted into the margins. Currently hexViewport returns a hexViewport object that has information on the margins and its own pushViewport method. In the next example we will 1st show how to manipulate an existing plot using grid commands and second show how to create a custom plotting function using \texttt{hexViewport} and grid. \subsection{Adding to an existing plot} Adding to an existing plot requires the use of grid functions. For instance, in the following code, << addto, fig=TRUE, echo=TRUE, results=verbatim >>= if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) } @ we have to use \texttt{grid.lines()}, as opposed to \texttt{lines()}. \bibliography{references} \end{document} hexbin/inst/doc/hexagon_binning.R0000644000176200001440000002140613776015100016534 0ustar liggesusers### R code from vignette source 'hexagon_binning.Rnw' ################################################### ### code chunk number 1: comphexsq ################################################### library("grid") library("hexbin") x <- rnorm(1000) y <- rnorm(1000) ##-- Hexagon Bins: -- hbin <- hexbin(x,y, xbins = 25) grid.newpage() pushViewport(viewport(layout=grid.layout(1, 2))) pushViewport(viewport(layout.pos.col=1,layout.pos.row=1)) plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE) popViewport() ##-- Manual "square" binning: -- ## grid rx <- range(x); bx <- seq(rx[1],rx[2], length=29) ry <- range(y); by <- seq(ry[1],ry[2], length=29) ## midpoints mx <- (bx[-1]+bx[-29])/2 my <- (by[-1]+by[-29])/2 gg <- as.matrix(expand.grid(mx,my))# dim = (28^2, 2) zz <- unname(table(cut(x, b = bx), cut(y, b = by)))# 28 x 28 ind <- zz > 0 if(FALSE) ## ASCII image: symnum(unname(ind)) sq.size <- zz[ind]^(1/3) / max(zz) ## if we used base graphics: ## symbols(gg[ind,], squares = sq.size, inches = FALSE, fg = 2, bg = 2) pushViewport(viewport(layout.pos.col=2, layout.pos.row=1)) vp <- plot(hbin, style="lattice", legend=0, xlab = "X", ylab = "Y", newpage=FALSE, type="n") pushHexport(vp$plot, clip="on") grid.rect(x= gg[ind,1], y=gg[ind,2], width = sq.size, height= sq.size, default.units = "native", gp = gpar(col="black",fill="black")) popViewport() ################################################### ### code chunk number 2: nearNeighbor ################################################### x <- -2:2 sq <- expand.grid(list(x = x, y = c(-1,0,1))) fc.sq <- rbind(sq,sq+.5) # face centered squares fc.sq$y <- sqrt(3)*fc.sq$y # stretch y by the sqrt(3) nr <- length(fc.sq$x)/2 ################################################### ### code chunk number 3: hexagon_binning.Rnw:138-170 ################################################### par(mfrow = c(3,1)) par(mai = c(.1667,0.2680,0.1667,0.2680)) ##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) points(-.25,.15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1)+1 py <- sqrt(3)*(c(0,0,-1,-1)+1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) points(-.25, .15, col = 2, pch = 16, cex = .5) par(mai = c(.1667, 0.2680, 0.1667, 0.2680))##par(mai=.25*par("mai")) plot(fc.sq$x, fc.sq$y, pch = 16, cex = .5) nr <- length(fc.sq$x)/2 points(fc.sq$x[1:nr], fc.sq$y[1:nr], pch = 15, cex = .7, col = 5) px <- c(-1,-2,-2,-1) + 1 py <- sqrt(3)*(c(0,0,-1,-1) + 1) polygon(px, py, density = 0, col = 5) polygon(px+.5, py-sqrt(3)/2, density = 0) px <- c(-.5,-.5,0,.5, .5, 0) py <- c(-.5, .5,1,.5,-.5,-1) /sqrt(3) polygon(px, py, col = gray(.5), density = 0) polygon(px-.5, py+sqrt(3)/2, density = 0, col = 4) points(-.25, .15, col = 2, pch = 16, cex = .5) plot.new() arrows(-.25, .15, 0, 0, angle = 10, length = .05) ################################################### ### code chunk number 4: basic ################################################### x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40) plot(hbin) ################################################### ### code chunk number 5: showcol ################################################### #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"),"inches"), convertHeight(unit(1,"npc"),"inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) x <- rnorm(20000) y <- rnorm(20000) hbin <- hexbin(x,y, xbins = 40, shape = shape) #grid.newpage() pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = terrain.colors) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hbin, legend = 0, xlab = "X", ylab = "Y", newpage = FALSE, colramp = BTY) popViewport() ################################################### ### code chunk number 6: showsmth ################################################### #nf <- layout(matrix(c(1,1,2,2,4,3,3,4), ncol=4, nrow=2, byrow=TRUE), # widths = rep(1,4), heights=rep(1,2)) x <- rnorm(10000) y <- rnorm(10000) grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) vpin <- c(convertWidth (unit(1,"npc"), "inches"), convertHeight(unit(1,"npc"), "inches")) shape <- optShape(height = vpin[2],width = vpin[1]/3,mar = mai) hbin <- hexbin(x,y, xbins = 30,shape = shape) hsmbin1 <- hsmooth(hbin, c( 1, 0,0)) hsmbin2 <- hsmooth(hbin, c(24,12,0)) hsmbin2@count <- as.integer(ceiling(hsmbin2@count/sum(hsmbin2@wts))) hsmbin3 <- hsmooth(hbin,c(48,24,12)) hsmbin3@count <- as.integer(ceiling(hsmbin3@count/sum(hsmbin3@wts))) pushViewport(viewport(layout = grid.layout(1, 3))) pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1)) plot(hsmbin1, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) plot(hsmbin2, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() pushViewport(viewport(layout.pos.col = 3,layout.pos.row = 1)) plot(hsmbin3, legend = 0, xlab = "X", ylab = "Y", newpage= FALSE,colramp = BTY) popViewport() ################################################### ### code chunk number 7: hexagon_binning.Rnw:349-357 ################################################### data(NHANES) #grid.newpage() mar <- unit(0.1 + c(5,4,4,2),"lines") mai <- as.numeric(convertUnit(mar, "inches")) #vpin <- c(convertWidth (unit(1,"npc"), "inches"), # convertHeight(unit(1,"npc"), "inches")) vpin <- c(unit(6,"inches"),unit(4, "inches")) shape <- optShape(height = vpin[2], width = vpin[1], mar = mai) ################################################### ### code chunk number 8: hbox ################################################### hb <- hexbin(NHANES$Transferin, NHANES$Hemoglobin, shape = shape) hbhp <- hboxplot(erode(hb,cdfcut = .05),unzoom = 1.3) pushHexport(hbhp,clip = 'on') hexGraphPaper(hb,fill.edges = 3) popViewport() ################################################### ### code chunk number 9: hdiff ################################################### #grid.newpage() shape <- optShape(height = vpin[2],width = vpin[1],mar = mai) xbnds <- range(NHANES$Transferin,na.rm = TRUE) ybnds <- range(NHANES$Hemoglobin,na.rm = TRUE) hbF <- hexbin(NHANES$Transferin[NHANES$Sex == "F"], NHANES$Hemoglobin[NHANES$Sex == "F"], xbnds = xbnds, ybnds = ybnds, shape = shape) hbM <- hexbin(NHANES$Transferin[NHANES$Sex == "M"], NHANES$Hemoglobin[NHANES$Sex == "M"], xbnds = xbnds, ybnds = ybnds, shape = shape) #plot.new() hdiffplot(erode(hbF,cdfcut = .25),erode(hbM,cdfcut = .25),unzoom = 1.3) ################################################### ### code chunk number 10: marray1 ################################################### ### Need to redo this part. if (require("marray")) { data(swirl, package = "marray") ## use swirl dataset hb1 <- hexbin(maA(swirl[,1]), maM(swirl[,1]), xbins = 40) grid.newpage() pushViewport(viewport(layout = grid.layout(1, 2))) pushViewport(viewport(layout.pos.col = 1,layout.pos.row = 1)) nb <- plot(hb1, type = 'n', xlab = 'A', ylab = 'M', main = "M vs A plot with points", legend = 0, newpage = FALSE) pushHexport(nb$plot.vp) grid.points(maA(swirl[,1]), maM(swirl[,1]),pch = 16,gp = gpar(cex = .4)) popViewport() nb$hbin <- hb1 hexVP.abline(nb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(nb) popViewport() pushViewport(viewport(layout.pos.col = 2,layout.pos.row = 1)) hb <- plotMAhex(swirl[,1], newpage = FALSE, main = "M vs A plot with hexagons", legend = 0) hexVP.abline(hb$plot.vp,h = 0,col = gray(.6)) hexMA.loess(hb) popViewport() } else { plot(1) } ################################################### ### code chunk number 11: addto ################################################### if (require("marray")) { hplt <- plot(hb1, style = 'centroid', border = gray(.65)) pushHexport(hplt$plot.vp) ll.fit <- loess(hb1@ycm ~ hb1@xcm, weights = hb1@count, span = .4) pseq <- seq(hb1@xbnds[1]+1, hb1@xbnds[2]-1, length = 100) grid.lines(pseq, predict(ll.fit,pseq), gp = gpar(col = 2), default.units = "native") } else { plot(1) }