ggpubr/0000755000176200001440000000000013675562422011554 5ustar liggesusersggpubr/NAMESPACE0000644000176200001440000000613513675556132013001 0ustar liggesusers# Generated by roxygen2: do not edit by hand S3method(drawDetails,splitText) S3method(print,ggscatterhist) S3method(print,ggsummarystats) S3method(print,ggsummarystats_list) export("%>%") export(add_summary) export(annotate_figure) export(as_ggplot) export(background_image) export(bgcolor) export(border) export(change_palette) export(clean_table_theme) export(clean_theme) export(colnames_style) export(color_palette) export(compare_means) export(create_aes) export(desc_statby) export(facet) export(fill_palette) export(font) export(geom_bracket) export(geom_exec) export(geom_signif) export(get_breaks) export(get_legend) export(get_palette) export(get_summary_stats) export(ggadd) export(ggarrange) export(ggballoonplot) export(ggbarplot) export(ggboxplot) export(ggdensity) export(ggdonutchart) export(ggdotchart) export(ggdotplot) export(ggecdf) export(ggerrorplot) export(ggexport) export(gghistogram) export(ggline) export(ggmaplot) export(ggpaired) export(ggpar) export(ggparagraph) export(ggpie) export(ggqqplot) export(ggscatter) export(ggscatterhist) export(ggstripchart) export(ggsummarystats) export(ggsummarytable) export(ggtext) export(ggtexttable) export(ggviolin) export(gradient_color) export(gradient_fill) export(grids) export(group_by) export(labs_pubr) export(mean_ci) export(mean_range) export(mean_sd) export(mean_se_) export(median_hilow_) export(median_iqr) export(median_mad) export(median_q1q3) export(median_range) export(mutate) export(rotate) export(rotate_x_text) export(rotate_y_text) export(rownames_style) export(rremove) export(set_palette) export(show_line_types) export(show_point_shapes) export(stat_bracket) export(stat_central_tendency) export(stat_chull) export(stat_compare_means) export(stat_conf_ellipse) export(stat_cor) export(stat_mean) export(stat_overlay_normal_density) export(stat_pvalue_manual) export(stat_regline_equation) export(stat_stars) export(tab_add_border) export(tab_add_footnote) export(tab_add_hline) export(tab_add_title) export(tab_add_vline) export(tab_cell_crossout) export(tab_ncol) export(tab_nrow) export(table_cell_bg) export(table_cell_font) export(tbody_add_border) export(tbody_style) export(text_grob) export(thead_add_border) export(theme_classic2) export(theme_cleveland) export(theme_pubclean) export(theme_pubr) export(theme_transparent) export(ttheme) export(xscale) export(yscale) import(ggplot2) importFrom(dplyr,arrange) importFrom(dplyr,desc) importFrom(dplyr,do) importFrom(dplyr,everything) importFrom(dplyr,group_by) importFrom(dplyr,group_nest) importFrom(dplyr,mutate) importFrom(dplyr,mutate_if) importFrom(dplyr,pull) importFrom(dplyr,select) importFrom(dplyr,summarise) importFrom(ggsignif,geom_signif) importFrom(glue,glue) importFrom(grid,drawDetails) importFrom(magrittr,"%>%") importFrom(purrr,map) importFrom(purrr,map2) importFrom(rlang,"!!!") importFrom(rlang,"!!") importFrom(rlang,.data) importFrom(rlang,syms) importFrom(rstatix,df_arrange) importFrom(rstatix,df_group_by) importFrom(rstatix,df_nest_by) importFrom(rstatix,df_select) importFrom(rstatix,df_split_by) importFrom(rstatix,get_summary_stats) importFrom(tibble,as_tibble) importFrom(tidyr,unite) ggpubr/tools/0000755000176200001440000000000013571311437012705 5ustar liggesusersggpubr/tools/README-ordered-bar-plots-1.png0000644000176200001440000041247213571311431020035 0ustar liggesusersPNG  IHDRMW iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx UU?/0Ψj\q6sp+ EfױZCVJYf9ϒM2P@Rp$EA{g:sx9{^g^{z^>v. @ @Ԭ@37F @ " @ @j\@T @ @  @ @= @ @ @ @@5>n @ ;@ @qP#@ @ @ @j\@T @ @  @ @= @ @ @ @@5>n @ ;@ @qP#@ @ @ @j\@T @ @  @ @= @ @ @ @@5>n @ ;@ @qP#@ @ @ @j\@T @ @  @ @= @ @ @ @@5>n @ ;@ @qP#@ @ @ @j\ @E;zr<5uVg4ZWXpmk-TkE]o UPsڴiqWlOO:իWO @:@9nzM*ʻ6=b[X:繊_ٯԂ ⭷Z&zҥKھ  @m xm&@ @ڐ [%@ @ڦm&@ @ڐ [%@ @ڦm&@ @ڐ [%@ @ڦm&@ @ڐ [%@OlAk @@Yں  @ ̟??y睬݅ }  @Ԟ @%xcѢEqG&O6Ԓ%Kb /D߾}cРAk(cԩ1eʔXlYlV1`ׂ)k)+s\o9N9唬')ԩSv.(,dYΝsύ/8ҶR~:N?0aJ n$wߕB% t7 @@Mg}vZ̪͋/| >}2xmbf]};߉w}7nUO{ŋqGDǎf_%{,o"Zw TFI  @5*t)P#p 7dOU%vir3N8!s1 tIY,y'>54bĈ8c{O<1^{,**"@J {% @@ |٣_7lӧOqqœO>OW-Jv2RٳYN.,yl-r^f\}_y+?ig +6|ߟGf?~7,YoVSWr&T@<:F-0f̘җ`&eGy1dȐ뮻k׮ٽ̝;7nl;#FiɅ^}QlvѫW=SqWĦn⠃[/~of{i;l*Uڑ{/eM6:dBqvmW;Ԁ@50nּ@ w=|.7H&J%eXbE}СGKpS%=ŸTd?Q^B4^~{ٳllT 3@ԧAZC3iA8TU+ ڡqh-gyf 鑊4k$-Z{'ȑ#g/o (7IT}٬^?FMh ԰guV+q9d 斺}@eJ yR_2{6l͸s,@ߦT.m?&M=r:޽{T @@58n+=Rq7h׮J]wu@wqGns<JANoGJCԞR^{'Fs嗗bm\†4*-fM81[K/¡qƵqԴyz{z, ,njrs鮪%$P% @@UM_h+O=ԸK*G-RIP˗g#dJyiҸPs`o_W&pƯ~l?OkSF^U{ {葟og|i2jW@Tc @ /ѭT6p?UR@|N~z묳N8tڑ^jK|pO 8͔NoJ3" fRyYu{G 80 -<EiL?~6| ңRO3̠B) quW P&nׯ_Wij1g3!RiퟴR>뮻.{k+߅ M4die_O~28l?^bRYҥKSȖJoK3[ S؜GVs PuM$@!0s|G6hvGlA̘1#")=Be Ik8f\}+5_s5٫wmu]m.ghΑRozzz k)xr-W>o뭷^ôm??V~P; @5(k篖{%W]uUC=vXZӿԧ hZc_ .θ< /̎G@MR5{0&LhpiT+ GRIo]k١Xݻ @@ U:pM#MIuLr 6ՓŋgZ/k| R뮻C>2{=vCJ=Hc7Tվ,1cSO=YӦMˎFZt 7_n~nퟴR.|k P6&@Hu3oF,Z7F}󟏧~:[o'X_շje]o[@),ʽa,zHks(H3Q+)@iAczշe_k^??1gNL s}W:K)L3\~ s=YiP :=tG @dgқunFMǎ(a#ŠdiO.JoIr(jQ ͤҗڑGSLfof9l'7O @O<99XdIG?پÇ @xX#Fȿkȑn`PKnCc]fRiVQ*'xbjU+|[ou>zj 4({%yO}SJkQwYKoK3~:묬/g}v 2d˅ @` ֬ @@ yٝ&=^޲֋I^|HW/r{f۫ѳg8ó_ii [UZ۷o/[޽{n){r{7 j[~N?8ngώ/n喘8qblfU߂Z}u](5Uq4['-:jԨ,I3yRIk"=ƕ֭["1ܛR?5:m #2Jy:w]w]PZyƌ^ WRJ/K͙3'{.;"[guJ1- @@ TqCC P )IY iFPvnŸ}_f5>ׯ_!@[HNsO%ow T@2A)HsfR_d Ȧu9rofmbvh#=N#eM  @@١w PJnVTiK*'|rQm8 @@SkJ1 +SIo=ʽ{ \% @ڐ@mh*TK/nagRN:ӧOetR/ @jJ@TSf @똟x≕^o{} @(GJ% BoJ3|Aoij @ T3 @j ?O||plFզ  @4% jJ1 P=#ҧ^[:Vdht6ѹѫDmekիWluf۹sf@ hߥГ'@ @kUX) @ @(PQlN"@ @TzJO  @ @E bs @ @z@3VzJ @(J@T @ @# S @ @@Q؜D @P @ @$ @ @@g @ P(6' @ @G@T=c @ @@E9 @ P=+=%@ @% *I @ @UX) @ @(PQlN"@ @TzJO  @ @E bs @ @z@3VzJ @(J@T @ @# S @ @@Q؜D @P @ @$ @ @@g @ P(6' @ @G@T=c @ @@E9 @ P=+=%@ @% *I @ @UX) @ @(PQlN"@ @TzJO  @ @E bs @ @z@3VzJ @(J@T @ @# S @ @@Q؜D @P @ @$ @ @@g @ P(6' @ @G@T=c @ @@E9 @ P=+=%@ @% *I @ @UX) @ @(rRҥKcǎ;z.@ @Ԯ@.{{{g}YfzNވ @ @.V @ @W@T^_ @ @Z]@C @ @ u @ @@ Z}t @ P^Py}N @huP @ @+ *  @ @. j! @ @@y@: @ @@>:@ @(Z'@ @Շ@ @ @W @ @V @ @j @ V @ @W@T^_ @ @Z]@C @ @ u @ @@ Z}t @ P^Py}N @huVZm?ybMze @rPG ׏/]!J! @ PA @ @@9@6 @ @@0@ @(&@ @TA @ @SW @ @ U  @ @rj @ P ] @ @S@TN]m @ @*@@T  @ @r ʩm @ @@*`t @ PNP9uM @P . @ @) *  @ @ A @ @@9@6 @ @*P׌ydw0_cbΝ;Ǹq&9Cn?1I3|?X.]"뮻{.zꩬ<_۱ @ ;ddM_y \>6,>h߾}w}1dȐ<~c=bQWW~Tg̙馛Ƃ gϞY;)Dʕ4#N;3կ~5~O>1k֬XowiY&?B!elYikPAH!B @#_im4;gvhԻnJ^{1cF/=թS2xh׮]+]S!@ @T@M/šm&4mΕC9$|߷nvC)@z뭷bҤI U yKKwZ?ny ͱ.^׎ߞSQ: @4&PPc7]z}_hb8N޿vci5Ͼ}6V _,/^V-]^p;%G7 @i6ǹ?Ǵi⮻Tο"-\<%vOr%+LW @ @hsvJvlIjUI+sk׮F֯^-T8qŢr @(@M/ݐPZԹsαl>}zlWXi_ޥK5%+@z~ @ @)f]pqeE"׿uwy1{9rd̜93nyG–.m~u wwV#F… M @(J@zCZq'.;c,^8Ң&P*N$_gϞS뮻F4T*PC0 @ @ GzsJ!P#\e~RW @ @{G6P+:uuuk7Wq @ @@j˗GZW^7Y_>pyM%K믿U4hP4PSm9F @(@@-ޤ{w}7Ҭɓnn5,3v6yzXZWH!@ @T@>ֵks=3Yfţ>ڤ/ tE)9묳O2%,X CW\qEyWbөgu @ @kRM@9l'؟)I @ P5X @ @- *  @ @, jpy @ @@@> @ @@<.O @('@ @  @ @[X @ @V< @ @r k @ V'@ @[@Tna @ @ZY@ @ @r -} @ @@+ Zy\ @ PnPO @heP+ @ @- *  @ @, jpy @ @@@> @ @@<.O @('@ @  @ @+O@y"7wsI @TrBO%0c˜¢]>kuZu @ PAt  @ @@M8F @P [ @ @4% jJ1 @ @@ j` @ @)PS: @ @j@@T @ @M q @ PD@ @hJ@Ԕc @ @  @ @@St#@ @Ԁ- @ @5 @ @@50n @ Д@]S#@@sW?-^檵=:4EuU"@ @ Zn& ~a )|צt  @4+fT @ @TO  @ @ %R @ P?'@ @4+ jH @ @@u { @ ЬY" @ @- { @ @@fT @ @TO  @ @ %R @ P?'@ @4+ jH @ @@u { @ ЬY" @ @- { @ @@fT @ @TO  @ @ %R @ Pu}'@ < @^#`U?n @ дiG  @ @U/ !t @ @@M8J @zP @ @4- jQ @ @@ ~ @ @iP> @ @^@TC @ @M q @ PB7@ @hZ@Դ @ @U @ @@}%@ @T  @ @5( @ @@U?n @ дiG  @ @U/ !t @ @>(4%0bEMU)؞[]PfΏ-(蜦*:wuoM9F @@8jL@\1K֟F\P[ჯtNS~gNMUq @*ϼU8hL @(D@T @ @*U2 @ @P!Z @ @P@T @ @B@hK @BP. @ @ . @ @ @U8hL @(D@T @ @*U2 @ @P!Z @ @P@T @ @B@hK @BP. @ @ + @+bٿ?*D,C @m(Hڇ_ołiW߭* @ P4 @@e,ło(YgmY^nq*~ͦ=8 @@9*E`ق7b;˷ft(g-'[MW7m @BpN#@ @TZFJ?  @ @E s @ @ZT-# @`e H7:|XX4ob>EZ[6Wq @"LxgcԩoGӟtqgDN%|nNxcvw=>닛ETJ"죗I_+I[ۍ.(Z`zI\+*hj @Kb+ /sƍ77pC>+թ~ ><,Y=eʔH[n%n3fL; @ @j>;_zf7MsOq8p`~ncԨQqg_tsL1}x瞋z*{xcϝ' @ @Uj:zWOπ;vwuWva+_|qƏ~X`A|_gy&R\9sfX޳gϸ'w<.:;'ƈ#?q @ @V鷀@fܹpjꫯw97a„?mkp(}+W ҾFikc  @ @5j:z'󶧞zj~{Ս:đG߽jt뭷fǺwC׫Ѿ}8s]}QH!@ @T@M@lA|կ_&7p_^{-f̘}O4GviFB @^nkqZ9Wff<.ƺ)Hz뭷bҤI U @ jzPK5:Ag|3ɟ:uvۍmf6S @ @Z[g.wy'~DgΜ9fZj4 (W>HogϞ˗7N @ @@m>J]uU[=⦛nZ?ڵk~uϟXl_]tQu$@ @@~SN9%o^&俧kv.]ҏ&KΝǛ m @ @(f4'}ҥ﷾8餓>Fݱc\6i.0Jk@v @ @hХ^C%Kdh\rI1AZ+…6ٳgcղ7>~ݻw:H @h@Z(9ScԨQO?qvizurй}_ @ L<֭[y1dȐ&7|ӧIvڍU @ D{~=\FZzwlz:ӦMo7z׳C jѢ c мKbټWla׋iam @%Pٳcχ?[ou$@Ԏ@/}y'lqNJ@x&MʷXѣG4hY  @ @@j: c_ӧ`aÆI FYE4(tetZw @ @@#`/38#ڽ{4qęg?fY@;O @ @@EeЇ~ibJUӳg:Ğ{;CG )sNO)KW\}^}lA]ƀ} fV,[^d^y j+VtNc  Pe .\K&Ǐ~8ꨣJ6Q @)bX%v@ >J8"@&Pش>-ܫWѣGg,;GW_}uI @ и@Y[/f͚'|rYw_L2%͛e~G#Bm[_#-^}m\xcW6 @ @(K:jԨlNZ7箻'x">ǖ[niݜ.]ħ>㷿mOWk>cǎk6:wqoT @ @e -[_׳\|-Z'=u)ĢEStYgEڗo~X|y @ @M4)Ν]}_ޤ?~JO}wW:  @ @@ey 3<]qu׍ 6ؠr{oƍ~lI~*6 @J&0rl]R48p8cKє6 @u){w-ݻw.]iϛoӧJ^}nݺm @@zG/E[ @>.PG6|J+V_Wj#{HN;T˾o+ @ @q@^X@IDATѭ\Hs9ğ{G&LgqFW^1`9ifИ1c?h @ @I@uuuqEeNyk8 hƌf7y|ĉ'裏snH3}Rb6^x!~gf?A @ 2.^>yk;IK.٣^K,ɾ#GG}t~וW^'?l @ @4)P@+^}q-z뭗ە\paY>~{\vei=W^y%{Gz<6 @ @-( tI'GuTߟ Jc[lE'pBtqN/^8Ѓ ʯ)R_ @ @(kzc>}-ٵk2dHKC >c,W;3z}m @bHTwc @U+b)EYhT [ƍ?w` GcԩS" @ @͞=;[Em^#/d6tUN @ e ?G^]3gN?|On @Z[`_+I7zlx$mi4$Phĉq衇Ƈ~]sq!Dz{~.OoFq7_ @TcŊ%kKC @!@~>9SK.6ڨ>ļy'?I|[ߊEСCc0 @ @`گ K/ezg?k4Iuu)0,8曳m @ @@Y>UkmqO;iϛozwW_6lxgM @ Є@YEw˦@_>;;-[~cу @ @|L,Pc7Jc 6(E3 @ @@뮻nL> Q @ @@% mJi}#@ @%P[mJ @I<V_rʔ)-^y啘9sfXF  @ @@sǨQb2-,*  @ @ - [n @ @L4ÿC)m @@#e ^{:thva:DN۷oS#@ @}٘0aBIzйsgPI$5B=~.袸# @ @e([O'߶A @ ٝk.6h5WH @ (KN;Zk=V=A @ P@Y8 ><PA=S @ @$e RϮ8'8  @ @([mt!~_ /?xlѭ['?=ܭ6,G!@ @SL_.~i S*Ph…qgĤIv͋ɓ'7q6u1 @ڰ@槞zdLSCT@c9&Jg}"@ @)@iϣ>A3.8Co߾ѩS @ @(Kʒb.Z(ݍ7i6B @Zx饗W^)|sk?"@M %:ujo @ @@-L6-x≒ʞ{)*hH,u]ך5kV~ @ @(K[:묓#<  @ @ey]vկ~5Fb*Q @ P/SL)Uw}[nmo?| <{D^ F{ٲe  x@0  @ @& _ @ @@T'@ @T5m @ڴٳG-;[lEPe *s\ @4(07n\NJٹ s<Ve @ @B@O @2P  @ @ *> @ @@U6`K @(T@T @ @*Uـ. @ @PPb @ @L@Te @ @B@O @2P  @ @ +  @ @+x8qbnaP]%@ @?~WjHq8PqtT&@ @TL  @ @  R @ P}3=&@ @$ *Ke @ @@ o @ P .  @ @' 1c @ @@AT&@ @TL  @ @  R @ P}3=&@ @$ *Ke @ @@ o @ P .  @ @' 1c @ @@AT&@ @TL  @ @  R @ P}3=&@ @$ *Ke @ @@ o @ P .  @ @' 1c @ @@AT&@ @TL  @ @  R @ P}3=&@ @$ *Ke @ @@ o @ P@:h׮]\-F{cذaG=bQFżyZ܎ @ @5%P.TiO~=\رcq;gGsέ_6 @ @j>ZbE6{g}Sf[neAzyݻwC68X۷s9';GE  @ @@%|J > (O>9}l6Pnқ+Z̘1#;ԩScUc[R4#H!@ @T@Yz/8v}ܟ~|.ƺna[1iҤG @E.[V>5t;v%LcMqG4vdk>Jfg]v) -X:Ͷѯ_,Jk o߾͞ @ r r35,YLNrswv˷j>Jw$9s5[j4 (W>&z(\~Λ7o @ @Xy~an3vnl~7V-?a„曛  @ @`uj~:.]4\Νu m @ @(`P3;vXti~u kKln/b' @ &@ Zkђ@~={mhc=i\s5`#@ @ X3d=zר t~*?wj @ @֘7<_c6rubn @ @5& jzӦMo7dɒx׳C j  @ @5#F^cǎm3<-.Mu @ @HE<֤Ib1z!Cm @ @ZS@aÆkvi1{C=FʾnqI @hUP l,qžO.?  @ @!fg|ɑ>xW\}^}lA]ƀ_. @ @`MhuqS>  @ @<V# @ @&  @ @. ? @ @j V @ @JU @ @`5@ t @ @@ *} @ t: @ @@>BG @XMj: @ PJ!#@ @h5N @tP @ @VS@N'@ @TGH @ @) ZM@ @ @*]@w:6Kb!{/" hĊh, VĂ@Qb5Ѩl ,Ć ])=yvΖ{3ߝr̙?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@h @]." " " " " " " S' ԟ'" " " " " " "  H4.hOHP H4'@R E@D@D@D@D@D@D@D`RD@D@D@D@D@D@D@D` )" " " " " " " "0uRM )" " " " " " " "0@{a} V[mn1~tME@D@D@D@D@D@D@D`6'>:tAK.)o|wOW"" " " " " " " & Py{^ [=3nw ~8餓7/})N ׾3cV0/-,~1[o>Oc=6<)O ~x83ãx[V8C3bUX )28u bW'l6 }{Ýtq~_A]D@D@D@D@D@D@D@F@ z׻b\*ab7p@<_:H'1}6|+{6("H"" " " " " " " S PS\mo[~rk]+lYgUD HԂs)C&7)7} oOG?QS0." " " " " " "  #m[P,ClE]{oE_~C`¤υ5O~x}s{~1Wp;߹1G>fm…^83x]NnFaM-;?\rYoFaM㥗/5?fbMpe#/peƷܼ/;} ƒ-6۸gQXw%9AlEyx?\) K?ovu`B\xsCl,;}nwnMFw?ZlI>nK/6x:Oeq7c,xxǐ_ve'}Xnioϳ'c ĹҧʕkԽcIIw6hiƼ>yj>)kܷrֻb-0ou8v^~W*lƾe®[wm\(L76^5N&Vcʂ1GY:0*k6ioƼ48P؀ӇFK:`1`̴kM5v9uU% &>\ (,.'Ji(eB*~BaM(< ݀ H|+!~v34[o]^[堃fV?WU.o" " " " " " " "Й jCʗ4Lzm%Xg:ۦ ED@D@D@D@D@D@D@2 nv2_~oaXk\)~vmWW~ԭo} @u HB6M> կ~5.w̰:)" " " " " " " " P i@?:};<>/" " " " " " " "LRew}POyS_\_>Oc9&ۇvO(" " " " " " " K% P~y 3 ;S8[_p oxCc=>6xW"h "" " " " " " "& Ii'rE+zlfQS`_^׆g?O_W/6l.^q",2 SN9%tA?.u'8u1';/:n~󛇛&qWV]& UH@On LM )" " " " " " " "0@r:)?H@ uL@SBʟ $ @\D@D@D@D@D@D@D@N@ ?!OD@D@D@D@D@D@D@t|~_sNEыLAbYܨ0}. .o疆"X.[άF7 >MDlly= oxϏE/ m%eώ< =\>8G<>Koy[g>x#=wqOq{8Dp'|w1,RN;w#&y;!>,R/׽u1[}Xd7G}X{"u?" / 6,>,Rp'>L=yO|˿ } B޻\QB"e?Oc/-oyE&^;/=/w\h~xַ|ӟva_WK$o}k)𛵂^oeozӛUe6Xxp@>-Vb3OYXP=}|/:wӧ.XL׿/̚LJW~Vs<\z+O~Il*` OF7QŅo.e'timmңLߔ O}-ӷӷGG[Z=hT=yυꩧov O&@vۅo 2-r_tEe6^yΟh{ yO`[9\tqO =r&mQX_Bz~B~-;Wɲ ̢׽n`74hg6xkyɟk\.Wry׺ֵ>q2@vZ륧Eo\OڋnIj}6K./aWЕ:"%`aVD@D@D@D@D@D@D@D@uT#R[:RQo" " " " " " " "HnED@D@D@D@D`m`/dz6r)녀@I>D@D@D@D@D@  7MK^`[X }vw _W;*o}[ᤓN yC-oyU@>K.$| _woy ?#6 {GuieE7L}go=yOۿ ZD`aZO~@zL\Ns9nw$pnv~.XyCu{]׿n1Fqz^iM%^B3uw?!\Z׊m9zV|8uŠ"uc\~ω>WOzғb۝sM5̲g?[;Tİ뮻?__:蠘Mjt_zի¿N?ixc>עtV$/'ϭ?83=9>2nwmТƁ`4?Y)N.p 'Ć[*tH2A/ŝ@\OI׽niV y^hr8op3{xiQԪ6 ]>O;STǓɟV=4_|=qk} WҕAK_8 xǰ;> WBk\75_9;tR5?(|x wq}oTrw[.wKxvmUiV{WC}O|"*5SϤ~oAc3 7ij]x ^1}TQF*# wӝMBSS_:Ϥs?<)CY {^qTAàgKk%av} Ycm%|s g(xa"•&Y Y [ޯy R>+| yeHW~źzgmm2uܻ? f`@ GV&(ƽbBE m mٔߙT}+_g?q o{fF},owDhf '鏞r)>C. o}[Ne>>vt}Wl\8pm JyCg>"_a O Fa:+ҹծV`:+<[]^aVu_xsSXŴ*:?0k2)EVâ׼5Urͬ k{?S 6m32"t)ZWisuM6٤x]eߦ(zfqWX3;4O߿7g2 9-LYSŨ/MqYXG5;I/j,zUSa#u?q`lRҥ”ޝJ[4m2di}ϭm]J?i[\>Ɉ~St+~_vd>c2l+;G\qOV&c+ДhK_*̺LPq_El6Zw]F;7pxu}5Wh3X{ 2q Z#8"ZX-<򑏬$E'36 zh/ma6]Gakbo|#>f v7? +ɭ_XrL_hY<-l6\^Ͽ~]I*+cpl'\06/N<*6@2NИt@FVx[ w0زҊ!wGkϓuS3[%V`0TS@IDAT++3fһʊ&=(a,oŋ^ y{^y:f@M/PWY̚3Hbl,厙Tϴ*1)L1ʻ7GQRzIf] p-*C_rh' f2YvMyĚ̹"AuoLN?^R⨣*fmw0nMYpyKSx3/htk+B|x ,8WXgGN#9^'Xy^YaIWP8&VP]8e,?4gc**t}ЄUP2}[N638@P_ا󉥇w9-+w}5s҂ҁ,۲|T6r P/XLϾ7deZbrSXIɲ?d,w`=p($>l|EԅkYys}9O෩ -M9j)HEh7eMl9i9m zA?羅xt?"X_ueQӮ`1Tx=>>mys"EB''}oʤJ[?->M&?:Dܿ}eȲ eASm࢞5~[e/Y ?>.~ؕĊ?Xӌf*g']X&l xmwuh|8E7%E"Os%*x6=Y?gM,y#}[*`(|j ~z9Rv|!X%3ؠvj Sz^.GSgN]vQS]ip%q0 ;;DݭM]w G~>t_Ix)>! g1m, Ɓnsݬ0}9Eu8ᅬ-Պ?1h !;DG9 w.V[嫎sT/`LhTfT8J [E@HASUT4 nwqǨsVfO 9:qp̵m]xE]:2Pe^\kȖ Xk vޖLFE;Ŷɲoʟw:wilmbr@"8"(\1`|-J+[1:6[s6UIw&,WlFc8ʝMC3]-̺?U/s"7gqYvlEXXȢoBJWl5 ̪c;Tn4>puG̬qv-0`G|O(k𣜀7Ɇ/-vY],> -;;\ ]" V Y -r;g]4:UzU}b* >n/W.NS}SM2 R%86uRY!()7C60oJ &rf~v.+E#wfM4xT:ʶNOOQ.c'T؝8qg{[Įd}~fY_BLwTS>pkl?>8F勖>m!TS鎆斡لE?m 9S81زiy듇eAagʑe$ܲ۠Rf}C.Ϟ]w0) 1dTc nW/ױ Hx\~[`:fVEMk [vE"܏͠:ע,qyo tva{xWfyW|[1 >f\ann_is'Pǐ]w5 ,G(ĉ4ȱ? YvMyL7+n zA9^ACw/S;&}*2_:6<%+NBl3YR7j;i6Ņz͖&s(}s,AP ;ۇ?eA ۠)2f"%vc~mybMN<Ăɓ KwىHT%я~,x LYhIu/xʧtg{G{03^h=_ [gioyK%_wdB^ƒEGK^˖3*|,w\ÖPϞ:'~!eޜdݳ<_>1;I Y̯(18KœIǭ0g?|l̼頋weNJe_r*]lyMd@l+θόϊEȠʲoՆŵф:7aГ#棢VAIcHΧIg0usj&]e=T%cЃ>RrY)ʛ+C8*=.GUqDI{5? &+Ǻ|,"U{<L:.7(|g<=PX$-ZP0($%OkZJRqH*(<,j)_ }mqȽp2 ކ~mTǁjO=Բ @%?u fLt96wUYZD6\6[lU[r$f=D ֙N0v,hܕƝ\-qdC«vCzvYǦ[plVf褏]`>6O:d+.mmf:usNas3nhKZ6Ź#w)^Y^pk38TŔ?wz:&axSDl.ZnSMa7 ]]ءˬoUGVxGm)ͺ)x̾gLngi3U *qۥ~Nbg9q36mbbd?ܬbGjuoO؆|ڏ%G8?g )'f!-80 xn}aOù)ó2 X.ٹNaIza;o `Ͳ-X]/?Χ&oiv֢F-ks[.)[Rb 4xΚa6v)5YvށpHzu.b֕1K&MǝP&T0+ذ>f٩6he rߣswd v5KΛD"`p9RBBA j^3wҳYat54/:E74[l1qbQݒP؍!;v@Twi|03``v|˴o=ocK@[_1TrAg3{& 9:kXocʲӯ z}l; uJ1H HƇFoR7K`K4`w<2]΢# {q2ޏT/eډJõ}7ĴA/X-=nb|lf6fYX yhalI;[#QơYX%q5>3;ʰ؁-e,"1u}B dVn( P&ZǺxSQ(3C$G?:Š>Y eG&Tr0NCQEyJFĮU `sphbyI;,~Y>@GdYET6;}d mЬ|/z6 %TP1EBØRG!EBKaE@,|2p{ғ4>ضLc<ށ"XYD001X*Vke M{â2d-dwqѲAR퉱Lk)/X}ڎi#:LLS,2ĖqE_^?:p`?%< Tf)(XM"X3A&XNĨ&,J,y) Ue i5L)nI-_<~0ZTarkB0k"E JT^<,rm'Ū ؒ8ȤwZbv1GՊ XcE6XaE`lhQ]?{(3K$619WߙdFw0g,:q*{ƖW4J,~bڢ?i1#"e^XLGK-f82AY\O %S-s">tN (|oY3],+]ey9ʏVX^%h2ZWY7B+g,P*SXA~sgy\[ ʀZeׁSeїj:R"kV(mg8D%((wAeSI3F74(o`/;c` >ڄ5\e/ͺ ~3Vߺ*;,GJ}`qb;HQ)3BV-;zNeOV@X ) ծ4,c#tgf`FY@e4!(ύ(ꄡgʙN?G·%(YF3%@飳K:9UfH3xXX`]*7بKö}O}Im'sA/CqsN4Aߥ3q'.ed [*OMdzWKC!(X2 B<*ˮwQYiK:ʭq;CIC;^m;sQ6|f5߼DE_,uhy2ˋ  uV(~2{6 u&UGKh?$`E2-rc㹹W ,t6M|d5-[r8 n*PSG/h7E5|ci(>!ot{!ĨPvQ0@Cl }!S7 QFQ$~c]غߖ5Kc`@Oz~Q? 61:423llڹ|3Ef X`\zL _8͉oOn3#\IH VĦ *L_U5Le88xsyNSN)_kw[O\r,CX cœY+7n;wy8CS-8$li;ƫi۠`\[3$I\kY^s`e3Me<2zx{+>mY)#Qvۜ>JeYlmfe~LS.W SޔfYi72e@aNHcz֩,l)DSйΖ+mHY3G$0yLl[i_q?Lr~畯|eBSƭmHa& RKxl1e#iT{J}HA #` ȚW|Rs]ܽ-7s}0Ga> >4_U.2w)mDSe,-{mʨ2_b! SdKO(ö}1+– Ne+Bre@Srm⯰I& S^>7\q)\u87WWa \nQ):xGaY,bY- 0-Ӹhx̔0<,Mk]t߿osN\񾩜mfl(PUPc!'RR !9k0eeYc`c. a*hxo2Y\f0]:f4.P8|A:]6B卭^)l剎GaӞ# ,ldE;6! aG ̃m b/qtmafݴcsFb-/*π'J-,r|s6K;لy)b" /R Kg}moؼ|8LMf|P\+}mPsM#m3+,sf%^:̡`ksѬ E̒lm]ykR}>sV\7fQ&z3u1+w?q=%Kٯe`9RQveJc"bi,}w鯘抰`2}2k)K~ޖ96pE> boQ\xTǁ4o۶oyЖ*0XRe+s`dA5]ә/9lFYP/M3krbH狊mo{[oB` WyuRR>pXo͚Er9?3 i hKL7s8W`EBt,Oărᓟd5Ā Q;lLfҘaCFg ˏ\y˽Ɩ8p=J`1vub˙`1]v%s-cAa96aa%(u&RR`/[J\yI8$*wr  d+ C>j[z&3بCA?IS*Ї<.P-#+ߖ+(V:s"5-?-2CэeV3\&(w\F"ԁvU UoԾS\5ZdHm&p<~g\c~['P}dlEYݬde p m2q:*j vOM`BnƖq̝ulb83N2:q<g8b?jyo-lFS(f:]"3[ـ6c8ٞ;63DFgwE*8cTlOgw!8[6kUp3BY®E.hN1)4\aq' }$' SMR|oC3s |MwP B=dʄ"yA``jؗ)38eҶ:kYh\'5s?ܳe,Sak{oSgGzsuw3]Č.n6e 4V$~>J5VR f7Z }Ĺ"&uK=ВqC/8b*8Z!0fYf-JPiaqX~pl^;#a5e:8\ze,3V`#'&}5契 +0|OT&]Cs?>я~4f *Rgϲb^z$-p,XBC|9k]`;by*^`u˧OZ,"K&ˬԯw8Xu#e:cFXkI llX3R ͢u}=_]f,+2F`!c1{o_)mcCɃov@hU%Z0~Co֯.8vËu wZ$^? KyUVO[LGYen[2`Ń tZ!5+ZUfٺmoݮ5#nsV<0L)h(6_%qnLKsgff*ц<[3?i*l?fzY2)GX:ݣ 3nm`V+[g i,Z3^laKGzdVc6-=͌ڡ͵up3mPn,u_aws,M"Xr:O2&]Lxz-wÒȖA ,{]|) 0*ÎOs˲$6>Owvτ%-u.inul"i>#zYrK;s:+Kݬ-)lڂ `_1D\k?,BjbƘ:z&e:my'pB|1qj8ӳe 6*$Q$ŬbIml .}(66mqbBS`I;w}RóeMP(ps1Q9)=HbL;رrA>Oc0Et3*( YD~.iU&9 /zыF5u46 Ray+9=gʟ4<0at Q\n_R !ߊL,f ̡h\˒N} S?(\.*a(yr0˝%e%}(|ڄ<_D}}h&Ol7,IJź}[?l~QGU!@%u`(70./9"xoH]L\pC򰞯Ϊ~85$]{Wo+1Pʇ5Z+#MB]MqRSX~80m?Q#,syO,yV9@h+QS!,:Z%,{xkX˥/cޚ+V9FX+L ֑.XrY֖LY6]I8TYdSZe\ĉUZcP,",Iتxu drWZ [Z'oTq(:*^q@-nK8ùu_A f5Vܦ(w69NP1˭Xj ęJ}{8W!,f>A'R:$N3^zw1xQcߧu^W`6^g ^}97Xt㌻Kb~/%6Q6&fQrvW2Dv]1ɰPcxOiz>+ͺs30+9k2D6qQbIYT^řKf YJϲ&8u}ՆXj9e=Ǧ<,>Ͳ"{?ޑ.s`i0˴YM@L6){St,gG7--ڎ.8σLS{0fT,ޔWq:73ʦߧ<dWVm2Zo ~;:qIZ" !.-6\زfZӧ`~tz=y*Ҍ vll֩점_Y=f2!N*|EбBCg~(4}hlփ|f{ߒ$x(G4`C? d]E9Ӎq sЮiTÛc26]ЁR]a3So< 9v3e?q9Çg>ϷMˬjK}(]lIBzbѬ) 9lYOAA݃OWxX*=fb[*@xCyuPȀwI4qLr5I/;VΒt檟YUQ̢̟3?4ӿpVYv2K8qHB(-*]1rw+cֺ=_QGXIo1ϙNU]3<SrQlO.&bVgxwNHRDžH)-9Wd]cM3SKGP!3q=X ,`XR^]M73yO<,g \tZd/G rAYQo:dc:LD4ݖH5hs28FeKT43 S'i;3NF/I: \R2X%;g06DyN26%2fr WVb80C|RMy­*-gNAV `S%XڧcKd ;E9Ra}gɀvT >G&GْzC cJ<0ZTrR'm3 uÍl—&[&7hcxӉ{NQ?y:t>WxO;Xs1'.J}g‚U4X`=WKN&@} _Ȏ LQv(`fW`&SQYdwb 6ヅTK'Y iƓa3 3|1`r =f# .tfBf/!7zFuc ߯5?a2;WPָgxㇲ"U d^׉7WB tP0 ʨp1iǨ͹mtQP1d9&uLY`Z倁rEW_Z.:Ӎ6Ȋ*`v_al Rx?R1qy WSz[Qrg26IV>2ejZq3΀~ ;yX5Im[֐ XNWrv3|,2j9uug0)aYq3Pϫ-{S;n%`΄!U4Ztߥvک|7ZaR}el~V81dk3 r۫Y6Ǐ%ל( .~(48C s[ Y7-7a}` êY7E)f]~Mf铧Jбr0e)Kbbyv5zn sJ,#1-{>C)۶㿵m)d `Z2M >PiM6d?X?(lw3V1~1k)<_fp~W(|@"9TyJJg[頍<0hFU##ۉ('yZXP:ː&7YP_J*wMP.;Jt&>@#(3}(CP8BKk§aĮ*߽Yӗ%(}YYK'Uj <jՅ?6cwM?$uVo;˼)]O5>R+UI-=/w}[NUߙ8쓞nnB'}> (If}skZSfG[Wx' ["Cl& f̧C0X![y5_ֱ[\km=[dz}yUW6V`+lwoqty.B@IDAT TV?wi|湶2`E9W#1눘)%Y((ZYue1[^J0%jƾMl&#nSQ n^l> zZYIJlc? 0bqPU72o|mwStxaA;kVЁ:zM"RuN200Rc띃Ύ46*~J&'H0T^kUL׊ÿ!sÖƄ L`N[#9th#FNB4mb3$Jʌ)JZy clof\0v" 7|͢:03e?e;{f<63`VWvv')_(Yc h>u=:6Ox͌>^"?vƗsl2>7sKcv(ue P:8PLx`'H]k>xϹv=aFuk$eye X;H҃Jw=Pۅ+2G1*(-GAm)P%ys)v{7J(H# 7s2?(h`26vw .ޕf ,jVWA7'>gCkcD_1Cꁮn]8ô(lK6dOPg6'B~:;~ełi<W}D[fT #<20vW$3̟\ucs>,S#Rgnr}D[eݬ't[d,B߈X2qX[ިi# uxW d'8IqN-K7%x8uZ5t*:13= tƦ{M[yn?tAwf}M%fb'R_,+S uJ6ȼeB 6\|EY1RĎe{zl0`VchOvڄmt5 h?;qOx=7 e Up>@o,ڰ*(&aLnYFJ1fMTƍOTaS%uRmj\I|α[ }.s ! U%I1>ס$6 `]: kP(܇Me+:7zd',ޝ\I`{f6)y-ALhqi'Ș(lnew)0@ށcͿ3f 34lhZ-</$[Bf]C>=e^̜sPˀMx:v+1?2f+3EN/aiߢp̰{#'lˬk;Zm;2`enk=m(׳cJ,ϸe. ]ƨt|Mat[߹^od;*a"M6f90*vJ &١2`j~h<޻.d#còPa:v!~5fj8㌸SBlg'A |–tθ"Ce>T=ҍǙԢygPԌUocO%%m1.$|H-)mcv<40nUN)+K+N;*@ ٠~{ EȐH݊2y'Ww0xgIZq%%}>i{Eߑz9G@čH]e6p0_,. ax@5I`;pIh#gzKL{%yAV4ehV *>פ #ί}k};gΠO eX ,g elv (jָg\T@' 8zʏ` B[9 w;^#vaŮ/^fk|=1)8RHZPMY}/T(ZnX=98^z6Y: Ue 0˥:A>U232Y4|`Q/ KOM;}>Zۆ: FؑI0VB'% uV& Kxsؾ0|+&ePBx[D_ #OB ǥA’/ô#i]d6p0?䀅_mQS:s'@XWaĵM [ő ?ϷvaXɏӰ0J~ 53s !3JXC"-:LMe,/ 렦P:heo2 _:SGK೤7(mǝ8Ӊ2g 116̄3isˣ>fcO[~/u3'cԾeYw U>)伪GM|1능iNkC{< =3,]m%,(x2ԥη گ((hQ:ӟ^qMPNcq3DP:o Qrl,PR,J;eF.3xg>uq% :]q Ƒ7h\خq> z&I8’-ΘdN^qe3T(si=wcM*RiSTKO/S!2VqKP)ˋ!qzn$YUJxeD9fA71ggZ,C2Ѩ1cP]>thl6^5*/Gfq<6t|MLD.s3}.sy)\co;p0:TwWs#o)ˣ୦]fҲet)[wkfYpz:T\,wnXB2g_ѷ~g@;餓Z7`<5/ap͌nK<8L>7󸚎8:%n:<kYFZ7k.XfDi3楶$i3ֶ'pBYɚTz*n6O=%#@ƤK}\u鈟tK_ Ew8L(YjW Ky7A<|wX<-Y`ؕctd&4ڬW>68-Я3e.,bj چ4.?mRqG׹uj[^Kmw~ b'y ֍L1A:x>y}oRdKyݽ/yԝOSqjʚei~Hj0òTʣRu%/r%D_cQK"'%m(=J & y/{; 28`9#J:4wwXc˵XðRKVh\uzgKD:\8tt8MI0Iv+4l//E?Q3(eD1@_.P&+ :O&ϩkcÀe駟󅒩 wc=<[: @5k xO|l8固MXUg\L{ vU~S| XzD_ÊIV,񎎩8hcs |0g9,49}&:KrW_gRR|GWLN-@?5ژґ ,FىrMA7ɘ8}>p%pX*;u[|y{5. $PشҲ6iRqcsK)ü,ѥj+y:^ңŬq^;pLay`Pƌ? 2NA9<(Sg3~4V"~]6Ob$c6,cwߧ|}M ;?|^oq[DK9#T'^uBeg_AQ;WOK]u}q.6|Uu˯)KG}~8rPa;OvL{KѰq)c?4c\Sj!=G{)d'Ky6(m6kHMǣMKj2sK8hPVii@cP\qW.~YvۏCvpA5vq-=E-ìmg>hX f/cs?Wq?3tfׯuX e]1MR-{ V:<3c:ѠAdžWIlva=YG.4*X20Hy`4ELW,#yK(giA25fZpՓvD1K{5m`m @{|P %-7JҼ:m>f}bꬺIeodrak3z g{:k h<,`9e`x(r#uKxߩgQbYȮJ(vq<$*`VbĠyh[cigݺPճF }- } RPO>V½bSDofƞXMgfZKG%BK͚XƮA97XAiKdiΏMuZH ܓ$^!mA9~pְ k^!C:U 2jFJ,.jL. uhsW*e>>Dz:0Zl=cfxͦ}I֛t~Qbt("f6sD#mZͥokZ1UcJDQҪmL߮cR[ BR=ֱKmr8FDY/±$)X:܈X$k[ho^#團 RlO-i‡;Z"L=(p樞3c@\Y&%9aY\kаܻh#ڤ{ >i8gr/X([x)2DK*MxI1l4-|d)rѡ;ˇxeԌ3yJA,s-Ząc$? Usbm,kov3a T7=l)]RVo{̯hmr'a `d[X,%:}݆/xfvU nx^dk\ w976oyQ,%@fYV|}_8q uZ%GmASNm}9>_Mq~l8|X\*he5Z(-8ʷ΅w~R!zYm} oXif=[^XǮI`{}W\:a^@0lw@dHsg\UA/-$Oaf`Z[%A`&Bg[E1bvTaBro }NϱyW{XZ:Nw|a`d_ W7&ƴ[5uUa~oa?.%'a%Ngկʯ,KOA4YR잱$<5={H%Rqs K=UZ{nm5|MpxҴt;\Ս{J1Ĵq۴WHV\xrX$RT{/Œ{=J\6iwZKf곹G= :%Ee"n%6ru=` 2qfzh ~握5m<ۜ6+ԹʘcQc,!Y3 x/Q$mNa%X,L пei{ͽu1c|x=)7k8k!q登K=2Lj""B#)KiEBRlnZٻqGSֺ[2:8Z]}'$}EdNd t5z8t6֒{ m" GSaJ̆q/t~L vMjmk6蝛zҕAX7+u) ?l\;K^ƽe(M 9Z3zYܙY8db^gn]44&\7XԀ^gsi+H?~m6{gkK,r?,&&xE?^s 5?+ގ aᙅyh 8٨({♞12\R;"=Is~`Ӧ=&ɺ<ᬥ4ϥ0,iFg/;̾VSlçOjm"n`4f8f}ScuvJx @Ib=L^G)ߚ$L/XK RD05];n3wlMj|cbǽE"! $Jåޔ,~967-\/UՇ3o^(njK1% k Pf܎\(`pM]lZ2S̾&By*21L:5£ SusnKS͵zJlEh|'@,k-W[T7צ03Aơ'$P)Ty':ju#.:kg=7ܜ4"}x\3X>|1߽Ede`~y{w?>MNomہ&1hd1kY b4s!αkAޢujm?n}Qte|H;fxQa;\!=f1]hFX[6s kϭ}˷fp@ FwOӊSwKaX?eAl.٩ Zkc!\A8 i xv>;vN)1X~q)BY.kd Sau YOgxl-k_ɭ2E5T{:L TжEkX8o1gr^K\Z&rg]TGscTc ?[ ns%=̌dyI )toWFX纶\rlr{;yPEt Iu&J7z9> F]t-CHm=v hd\Q[o8߽-Ţ9;Y& x ֝ye ~n!n>J~345%|dsRk-Y3vf]wVx`\d4!;eεwOP֟;tѹ]Ol_FcCaV{fb<nu_(K@ N+5wM=*?=̦uR.@7&+MΉ?%71X5 1758pi݄uk~VxS?Yco-഍K ?xo~{O"@\_ˮMmoZؓSwL@'X$]SEx _"@2lŒ:V6?@>a,=HkaPkVG9N7fG>bw!(s-hM rEDùr ZXS[qCe @hMco|j=XcohgJX.4aѐ֯ɢ<.42]Hv;.&a59Z)L0"҈U<f],6],]vjB߅o|]L[֢gUbAQ0XT Sr;p+KzU|X^UUF=M_GU>w $c e zڷ?]Rt!I-3b6d5ru EH!$W7|2]aPu)$o]_&.@3.ә3fRuK'G=dy`tneM&Յ M|<.\y:| ro2mv ܲ6tַ1'Y;'h|^0xŸlh`tSG6kp"*]V~Ek>rDĢ2df=ʘ'# "XnY|TAeWS?S]D>Cx<@lkTo\~p]QOd0oyhu&8%i>:3a.1>6TgV>ߗ>^[QПn aambr--6Tf WG!6,(g2Phd +xO(s/н;Et\o "XCmnE(eux{~OI=SKJRDW,&;{@GA?A_t=(L,2F"gݷG%]'i|}s>‹tSwZ%áFhCdsѴ5s -|*vP&YGa7޿-!`?2f`tS-_:MhJ`d|k$_{! V0hDra@bĝ~"xg0*nb389&c4j{+ ;kN>/cF S_CUCK!ZCZx:bU+mr<̔{c1eӺ:Qu?.ʼy/|(‧ %nn3? {', 0 A=p;XbZڇtMSku'ߤw@dPsg R͔[B\``+Ix~B+wa,@j.@cɯZ mѶU@ ($$+ڡ(U7fW8#41zj MO[ ٬x616MD2e$;bi/6"XhmLk)it"XQ-7|>*3|_,gcr Ds-Y갿Zr@$,cK;9[^4 ` #0oB1[V}-FrDjp8Q>6OWfnRFvh;%2Wlk]O<ط$:OR>aHYЗ@ CG[XkK?,9d~g~/׷ܨއX{:d]#[mql ˤ>u*=)+2F0&VW$t/i.;ǁ͵ mLWtYC[LqR0r,sx_ʵ x-s5paD(~H`513`,4T6  uַ!/cwiPl[M㻆!Hw'!-M(VRMdsy2#bQ0|JͱdvGqLV`AI\w!m2k1hn gSVR]e~>Rʹ0xꢙ DY'8 ahrhh7 ]( 6 sq/W\0SDܐ3pA7vjΊ|ܬV+_⢵O+2ZWj7;P <7~#6"2.|7.pK&-.\y≌=w]PcZ>r,gxtSXaK:9Lՙo|0p~i!(۳n/`Oem]ҁ:aWݦ64{چ{~L{ [/yd0ejMu }E)]>ԙkg>7%;V1&,<2K_қ.%_KiS#PFmȗ{MXe'ck ^WcCG=-bcw/Nk[k}œF0bSړbEܖYވZ?sZcYB{k՜QK`J-Kc·QzF"%:Ώd;sZKwnNcskRkqr,Kc MIEy@{|: nco}d>fUW!rv5jlzK^!|xԌ) |d /  ]oaoe<!ӊ>۰JkO/q*Wϕ%%`|1'?}ǒ6]777=sD ,֘!?Q*D۵xiɗYwV#YZTu]f95V:6;Y 0fB'Nl)LͱAEzhCD :aO"Xn9^Yh#zN:縀"|ƴT {+=sKM`=e9z-79Br呦4a@@2V.'KAr-NϷTw=R3t  >uamtHIy0\ B5Iksl-KagK臔< pro,D (ap[!յ23:HVYc"es5[NAﮞ$Ow%DXZ%k_77M9[QE̽B$q5T?SM;+{Jm)ג0KbmVJ[BPD93ߢ)Me( .:<_"^BbJ={ !Lb`Tjs7\6i,v6K'Ah!9ݏp{{^ mO w\b}-ǃ-#{;x/zv,v'cr0oͣNɶb <{ ̾ȸh%L{nlsk6p)1x§%oAc }۷6 sX9ǞgԁlblXK%FRK^O ,pk\[s5iLda1/9 As%B^gZVly׉E5-+Mڃ|YDp0 كInK_ɱ@y>V)6"V`Cl߱^{ao TFXc i99~`,<^w xϙ+~*:_jQ0;%C*Z|]MXq@X:ua jY:U0^06]h߳&o&&..&؍ t!da#?E0L] 6ҧGlJ6Ú#msY>ZBO?ZCA xD`q{aq3^ZuM[MWcMt1J9g#GR/?O_㢕Q -ώ L &7vBW`~7〜 X[ƺx$k](H9 oYr7ƹG'CL)+!/gF0ehvz^7Ly f(BxT1|my΄@IDAT?u xvXtkFbuaU#(c٭ /\?g#LB_p9 GXLCׄ?y&>O |eEP Wu\oYWnwS-BxeهE5Ǣi[xck']yׅggw aL9m+AR,lwz=SEƄ;;˳1HW`m3:ypSp3 P\h͖Z\kdV`V]D4 M%/m)̵>V 2]- uie}l%ח L-1ԁI>e!pakGK4ivb =@o<2.%Þe'C=O7OYFBxjZS?sekLZg#/7wO&Y vJLf^ieg_LaΕF|0ŷL!,Mt 1gz-=cmsandBaes0tqbk>cŠkX^kERR?ٟ[?Oh;?o-}̩Ma8z@fK(٭)I8Y'0QCwۈOIN{#f޵uR+ 1B7/q&4 H!~gl IZ?Y3VA5%=vce6B ĎeM#F{7{+pp-ծ"p'<#0P ?^D\[] 7u1o.Cozf,Q0e4|3{^KͰ|9q bή)"~n\f-fWaYW\sc[B ]3/iZx }jβ^sw߹_rb bi/?,%}֓gՅ ga!qKƥ\ZGmK fa\΍CBp"%aލGI6wĥʘnB`UBsKGa[߃BY¸qYK~PBXj_^Wv!(܅,!T, [%a څ5YZY|O\%5K3[(BTܳ{` ԲW0 d-%` C]ouʲj絑3y]pXWyEb~O4s<#BԖ?3?ӗ$^,QoV4#~;jfc<|G} ( u7՟rZ~=r-}Qu`@m{?ZXWZ÷L;b=Jy {|v.>( ?d~sPMڞy!0ooA?jx>hf5t qNYF/Pbg kY6tKu-׬w NiHIIihXa.d2m4-گ>VF0W45#V4$_4rhu>O7M^VEnVZ&F#g ciH @/@&;?m0˫0Q/ ܠq i&:'f?Nj6&Z/ RCoOonEayD c>pi[oÌh4O~6`TݼޝNsckCoм}s%ZHb%ynJfGlzX@h9FYjpm/x^. b`>-c Msr!u &j3-e+o}7;dBC6K AV,ZB0_7簚j|[Ⱥfyiu֒òb ݣjfP#־mu{[[{vxʹrٸ>s] ֎+$=:rn)Ǚyݼ]ك~aቭIYR~-pݞ*(-8/\:^<'Jq P}82r,Y≗/;ls_Ko&}H 𞐁s/k$tq/j W\hQш!Z/5|{4[ G0} ˯uM9~@jױYsza^ڽKU[067 d/M`]8 sPB!x꿣,'69i97%gCC+bIJg) Ha=GXeaJo~k^ p-CxяUiYJi4;+sVWCg:S@Ru28B8B#gpRNAV)_=ϬU9).pG{v%h p1 9ȼ(D5֭k)s`)""!as m-5;a],!Bs^8lm0cVfB(=MX<[#` dkF+R{-g\Aw9z X- ޤDK/E䓔߆žQ &1ڠ0dз'iMc{ߘiR-\jI^1>O&G0[CƎu ג9gۇh jAb'l`\t6stӘfp=n!˷M 7'@L>F.1=˭:5Mj]T|4kZr{#7{cW:R>XX Z{7́T[ MtWR;fr]s&Xc6_b3u`nv>Eֻ5 =5@ zY@-~%t-TZ~E{}PՄ'+p쯟]t?+|nM4 > ~M^seJ|l !9peM-! c1h!xc]]#H9:צ4^ #[iciߥW2(Y04 – ~W{}$Ǯۘ~^.)ag~GngȦuhc^_{bny-R7Eg}b:Xln%}k)Av6zc.1pW~eIe>Sw };{ @oX?e]kNnvMuV2i"` ǥ`Y:O2/-N_{k 쯾_Ow.wnO7 |\s_Az-nnYT -זO*E<7[k> !}:>h9)Bew۸_;[vSo>T{\>i5|3ʅz~h=mP]Ćl%>\;Evn.*̳\,w,`ග۟6Ǣx kc)< cQ[pUт`9Wρyl-psjqna?7- V [xȺ4zKҧ~S `*kxd&\?"@FQbvL ?"&!Ol%/@'岪O^)gIw3[h7` k,z9SLMBCExݺ,|K^c _QȐH1!h@"D- L`Y1qtB.,May Z\&Fׅd^|.zߣg+w$jT+yO}/+>ZNTUC`Ji|1Zb1œy?'ND-m!K.Lo_9`ktXy.cC}ws[+a _\#6" lؐB:bgs\t~E3)4]XckYK~ k/-mN>qK)b rh_{lU͍xVwa3\]@tGJ$N>ᨻD)JEǥN/a]R"YQF/U%o]WB R%gCg3S)c c[ #$xDa9,ul `E^OaT%Ôc,/r;ss}H5k@ Xu!7!w Oٗn K4Ik=@a(nXL#,.y7gh n=D|0AK״ceޯ}W|EA^=xb\A >PNxbSx0 7(DH,CCK M_&a+Q䭥W$\P=QTF}؅+dc7e4[ [xZKoI6N % #񲗽<ll0\G (6Ֆ%';~_n2lZlK.Y[miiq|zaϱL  ~oy0!' Aý5fu;z c~?PYesgKM:}=Xz …qr*Ɵ~]w4 /˜+ڹ|Ι a &ga7[! n$ă"L~r4( I}m,__WR˭eO?񏗹]!j,/B)%&6\0K`qIҢ?e"{5mÁlNW?|96ܹ us`ӗU0=-i3cmM{5!%/9򿍖/9dKaGو:Ɣ,",qYv|W}Uxjd7 l͋4%mq=\VO|?>?Q~,j/ڇxcCѧ_#)}> Cn_T|B^ԡ1c?t򞐃aSs3i_{e!,a^LA 9;ڽiD n(\ oVҐþ{+C]2{-?'9ZʯyhG֞t{8`~ eQKW&zZ -yAZ}/VPxmw0 r=JC~!H<nуK|}P(B!tvIw 􏊕$ȝjI0U=Ƃf~-"S8tz__$&՗N ^E/uӤ+YP% L7+ Z:o:I7)rfètBKL̂aL{|̂/3m0E[tvKC#4B3`Ej+TV!|)}I@nH1j4dAhX=>Ua=}?0XVXK^ז%LaYS_޾{.2q|&z^[zN aXoh Ӿ`(bs\Og<Cfmqy%? \hɜz ;r?,Z@j%-:X|sKh=f8 5962Wc/0Bݙy,9ծ,Ǝ%#輔u!_9+k16rZ'ss?`p>S/_z$M_N.:u_I}%}w|G\}~Huk34XD,&Ȥ*>ZXD1YK|ґ `N R|C7a>,aMxhG#aHۜR0=rNάPjSBb>5m5m9 saqOj}7nC6`O&Gp<z]\\0ܱ`cJ:TX%ŭX(TKA⏕1uݼ~I,ߟkllEDrm smu.ʸ}>[%\V (n6CDI䀅h #s~a]"L"Nm (SD7`/3qKp6 {@NwJ\dN k{g/!0)aQzL\bC[ʺ\Oz޺C mHpr\:s؃rX1BWC[k bLT[(QJBh"Ôfk 3)4uWվv>'[;q41L ݿfpI:q dz6=:Jg|3*f3s[^S>`>s 4UH" W2܁cVpXқ.Wnb@\z돛k4 8M:| uT,\p\/qGp~|[(sC"GOo.ܓE?1,F}jP<(u3iJ/C@~X> ]GA ;pE!J06{PxTiZ((+aѓ WCX7"`q(ƔDk+s-k0+F- ~ ھ9sw){f%`@܋hUW}S3a( Z_md 3-*h @i5&sͿ6V.(Ub'nq}k5I} )voEB* {zBr -[ڕihB ǹ ֬[{`:Y%٨Z3Ξ!@p\֒`_Dp }ԙ Ϸl'?}K46oS3$8G8b>nk>@Y쓑x:@ҏq2jhLIڒ4[ %ؒoP_|?¥ 2?'@X wWk]e@_el JsV"6u5b+z7(mmIJ -?H v!a}; ;..\MjB`",$#>)cUCrHEt}1.w[RΫ^(yo3` .O&F,X039NXd\&Tpk-c aiUSMs aeh p_ T0`\9zڵ*3*!\ `|Iя~f,Y``qeK@o1In>I ]ACKp|9\,GKxy5L0$Ư59+`xP\`<2 !68 4۞.[x#\ ,"!Vp<]K 9!-lܶR/y@*n"s.P̜3ݹZ)9ϭڗs,{@ïvAzHps)\2̈ ƴSD䯱*L>q"*t{q]J@s8F?]PyVC2[<|&̦oIg}qky6O&K(4 7G7WSI-_:9[נl(݅E`)C3OQhMSuhnU쟥ϳ}_զs\[C׏SPd}s9v3nP;apnN |A/˅mD֔HZYz^Sn>SÖԌ!ua͝# i? $.`}vh?5Ff\0kBӒ!I>TA5oj'M7k(D1m ̟3ykofL]B4LgQDv)&se+˳Xh\欈).+w8ŏv'wX %\:KLimrfa[!-.hY-ɫ̩t4\떎?92F\XH1KV~ҲT+#0>jɢϷkkjmwd;8V9Ϗ}.Lxs0=ʚke 2'O}$}uK_˟~+ɶ?-3 ;nk+OYPk.\q],aZv0v׭#'y ݹX#[9|/A_u].D=O{S.Tx9Kg_onk0K }jr]w{0aDw6jŰxnOuTN܆CP^,o{ۺs^6*u}16iovBgpN-0!= >5 c\jTSnՂ©03&qs~Y7@w~:ʼ[ϯ}k(oM>1=s:ul`aHa Z^Y=.^ 2~l3ue)iGJus#eMg3$׾꫾{[Z\Eu{_sM~X1cgMX4d55zI_9M܄ ѵ yn56m v 5Ƨ"V+z.Y/.%P7Bp7r}>5;KSG:bs #ˁƟt9׬oaTp=]=(v=%8AKٞ7(OB`nm~f ֍:0߹!hVos9Ⓙ]b N`~ng ~E}g`A{gB WfNhO0f~͍磙>v NYG5$QRPlq9Ւ1K沁S S T帎x S\v aLYlD FeO<\­sH,]`[ K/կZ96}%`jKfQЩ#Ф;Q9w_a91|^~g\PB5>Hkur A!,0Z9WؔMz#ZI3Wt.mrC> ҵ1CX@}}<}(ǽxBs ʸ{ֺ2.N{5*ǒu:g~xP^xCB_xa46'\bKۅ-!Cŧ9v*uh,O.HטsǮ]qL4Nj7wramJ h>?V"-*O7A}pҔƌ5('+% 4u+B\XX'}7Zr.O[5?϶"0PZt%t!hagi=37v zK캉;Ty͊y:h|?Y 旄0,kR`!͘pLϸ* 2sL-P 0m\1ָnH!3\A QgqAؙJ#QC|Q[4йS%B܄|٦z^cXk}ϰ Au-Jw=`#L g->'\X#%׊S7p}XFDBdm ! sͼ5/ūGd!5)CĎ𿩜6lV^UArÛQZ!q] d/Ъ-] S4N8_y0%wH8 Jh(7P |ZR W'd=/1_;uO9!,u٥NMfa!\sbwmNNIa({xLB}*נP4~M#}u=pI :5\J2Zj EL743@(υ~lo8^pfxdx]8ko9EZ0@vX, ][p%?m5?U'oX* j:-0.CW+Zx8sSmwإivvqNZU(V.N,h >"9`7VO(./\r2\֡>˨K\Bѱ&drY8F B?2IKE{oFX< Z>瞇Y[BMo*ZS=ޙy"as,0gWh:Kn,?bkXyI7 2"F̸Syzw. Ga\da"s%s3Gp&=]]-#{~= mX-MlŠi))5@M\D4q=yBkwRpԏ.J}XU)cEK[\C&V,Ը6Jfnseg_j 9#0HO:;$iia 0[${ 1H歡.66p&x-6#و|9Lƒ2MZoT}`ϵ`!_ |)'O9&[{ܣP ^,,O! Q^^|6.Ê``r/§sbJr䮓>| | 3H緅5sa? HCX6.?^(l°`߆Xe8kϸ#RiLaE@hNLkʮ17 NY 2>"K2?_Zsrmn:/޾ K7{EA=$܆+] nkR.Xs`XWʔwB铄-5dҗ}ٗo_̞<12':A`J])׼5}2x${ñg\{kp7{a\\J̵rWϝ=pfsV5)&0 L{\%hL?t1BVq'?dmkS*ušSܟ_l aEVܞk Tk}>gʚra&A 0{BɲCZ\bҐm%aralS.6`^'pLp[ ]CXR$@IDATlD] m#Sn.i;mGp-pjz !>GB!iφ}is ֤p?4 aw^nՁr̭ImhxI,GsX{j7؀&@RKg5yNi[zm+QMC9X0{.Ǘ%w-ڲ9\s/o鞖spӮq-k >{cGaӽN59  ~ ~歔2,ҹi @hNaeп8XaXd0v"L[),IJ9ap9rn aRW.6c5EDrS厝m0{ˇ &xnrϕ7v?-0oI?ng5VS,A$X* hKB_z  Rˮ.ۺ|lցBh(ŭcpH3j%K=P`c8^u;biK :/e˼#:NQGZ@n<3zG}}K\߾E(:]Э<­uSZ>Ba[jP055X~W~;GͲ>= 쁚&PNbLNg8u,x3h:{~&%V`Sy.ǽIò-ʘqX'(dJS~ַohhQKg &d8n} ~k?$%"TOU }YZOg!3zwcK4>GP`TV<cUXgmJ@ sbӘ"Ytv 'U\.Xu;߹5)J!Z1f5L[D9(Z[h\7kA'53)]XQژ P햅ֆl{`e9{cnp]o}i l7\XmS}w)Ȟҋ"1zwаGU}|ѡy\G|}y4`uc$Vo%ϧ~g|s@ŢxJ0ۤ_S! ohcn ܢ=(R0ıXql͋1LI`MSdiҧ;r}%ODe::OҀi]p%D(N^եx2SwkN+{>zv/ "'1ʍ0s: ֱ~w?P4M { 4jaFηEf .ֶg SsQٚ=$nҥ`e0uwnK.1|jnC_ȶF$CbQJ\k/H@bJ)<aࣗ|{ ܡJo!c.MŸ=˿%vN1Է1T4lɡC&bl8Kv/9F >pǡ)Ê)tо= };"tf5F]Wn> rя~= Rfam͟!D2w!9` <F~̚ ]J:p)!aCXfK`x?gluң [n9nbTúmQB8RjsהXczctKsz>֤ǒф37<$@x?G裧BӅR."v2/J ֏ҷ^ȹ'q="ÀKV)7,JV<"aҽ][?'Bw8! EaJ.]expkK $N(X]Z3+),BkK1(Ùa?%0h{6沬SZܯkץs\ôrsz6elP _UJ@VihXK7lwvkg~_ Ly/:3D=yO>XArM݄C Z??/j }G߸ /lB {NTY5ðg3 74(nI[ASqeS)-kbsƬǞ'p=~߲0`It -1}N,9`dY-'}-gK`e׀AKS~QN!TJnVQݿSΣSϷ޻V̚E_E H|JU&xak-P鏌ת0fc.`wZ 0\\چaD:7&a tBsi)mfo3HW(vQ1uWDB[Q0Qf@3?Z.Gl:9bSέ e c%y#4Φ'>QܛM7 -oyKy&bͼٜ 4{^(f ~Rq]"PVkZ\:.ȾV[[҅F *BSKw6SܧBEd^xIow+n{5_ɕk 7IEK`Օ xqoEv LA(Gэ2 ^] ܊,GB]`7Gbs& .7d׿aօrɥ~Mܭ޷_iޓyDI P~DR[p Y’ k%=H'ONyB#[ 0XM&EiNW_)hLJ7l{O; d~~püwO:۸j#˸J"_lH BԄ9djw+fwi-Ip_?gߪ;YO}ڤ_}`~ ق ߛ6/ *v s<bZlO?waIX얬&'3غ|>!A<=Q0xnVun7JßDh9aK<3Wi}RBÕ?؅UF x>o8aQq0q CՋRd KXs5~Ɨ +"hGEs-G'Ơ: '_f-ڂ17,8K23aX MA]}k B^ 5T;=k k/%}{ًD~_=ki1r“Q!s*Ҽvt zAwx0 MLWp{j(C\mxV L=v9ǂp砯D9c bX90?ӟ!,y.YnNoEha\T.`u(m5DMK]gmn au)c5km]BT0CqV\,ym3ؠs._5_kKK?rgy .X{=3d;[֒o5}~A%ɢ켧{NYT+eP،~ߢ҆u)wtApK4tG\-P߲ .5͹ᢸ|."q3.3f},43͇aR8 (cMMu߭ !s B2vgy >c;oB80 ".6gaH pӿKw1 z,{x:aۏw[[CP&!qe؋:'g5ak a' +/a7o\D`6F@6~0 b +]|JH}az[i8c}m%D`>رOX~>>Z ˾~lQ`J-Dc|疬ϮpA%- òA @YG-D,/a%g?);=`J$`K0'ğ(>1F(i t B8dzNHQ! ruk<<懡,&g~ Bqb2F1kփk\;q,צ\ƄW oxjbjR }mu P`4U(PL)VaKR X<-3(naq~s Mb̧l.z;~EB(R2}ش;UX\"@Rpk{.Ի&dh;iEƋ90,kVg͵g<}~ngs|[kޭI=s;|\{`{pqMY;]]sBSaZc / qYij } 1˜.@ …i/2 F)\|0͉c<V% P6l ^5V:}G3y||]X=|vWW̋ysit}ED2q ki9{k~I>aBmԮg5o.E?>, W7 ^h%Rsp^wz=^/Y ~ 0y61/"yG4YV`}X$ł C0(:(I[\(&fg~oޅh$@LC8ڧDc9ְ][BLsGe᤭kbf{S|D[{I}h0;8H\ymrJrQpE-LohEi>>C,e3!: Ĭu59ieMV1= 5@h䗼%GkaeѴ9#!<Тv.k_ܺCF22R v+akh:9csu@C}(ÿKC(6 Byȵ(?W9?,=Bі1`Mg5˳:cskyyɲn?xܬ8JW=bӹzg h !v9 gl :a:z9 OේUzUzC;Q4R1@$7;L/Rg QuM J+O :\ !m-'DO$Q$" 7uG߻(,&99Llfˣ4Z#}\ʼ~x@9`kw2=bW_bQƥ1P(}+rV+ kAcPE b tĂ+ Pk)lWL]TfL֝~\R&q(1Ə&Oo|"g޸=s2[P6ļ ".Hy wu ]˨3A(P6y] 0tI9N~s # r:e< ^BW6oNY挹A2N嵆w @Vc瀾mߤ($J!;DBZ bk0l!2Rrs11x?fɽ]ړ@]e\p9߮rvPf1˂pǎfBbu01PE}@#+i4^ޯ\|LXE (7B>q b.lSx0!I')X| ĸRc!#0(@100~ᶈ?(xNUe?g)MMu35t{͇" y`]D}o'cl o]&V(u>+rjKy=-&Tɢ Qyu@)zE*?t).ѥ Se"X&N2se/GȂ†(VAڇ. zn4~/{b T@]2VJ7(XxNExA.pdA o !X"#']&~Pz(Җwߗ@M#./I,@k(xX8EtyY(4Aǽtȣ~+7vq>TA(+},G޹0PRd)h2~A.q=&#)M=f柡emCvWQcMǽelr{\߸⍲e  Α MuMq@$\Fa ?֫!µݥJ$a1`@q-8tov)zP (Aؾ4H1*6V /eh})bcH <OsNd\ jaA2J*ޗ}̽}mSs ~}(ɀeٶz6C|]XʽtPT*>v$兵IUnm&SPŻ:0Qd-d),~QZ+#x׭J5^=ލ}﹬IßP+e`nBN#t@6W :|e$Pq<.(dUNݲwwPzco3,x'$Ys+攕 FBF~'P.;U0ǡLr*gmۇ҇> 1cNXw!=x XEr%4F%r0e1J" %\IGųom !Zx6(ɭ!2[č(x!Ăe \L^\(qfo3k=C<(RkLU .pBHYR89هzTA6d9~}_f|oVI_qn]icHxP*&}t7.>9I^hB:h?%urizALEXP,c¨f*=3kj]Ăq`}Ϙ zj"1B0qN+o "rG1'J< dFZ+*U!+j*p-+.}o,(M@ΑSks(uo `8P`]4]|(}<>())$IdP&wqUSB0o Q^SuьXSw;gYܛsh/yD2ת]`5g:cE^r^K\K[uE(]Co׹;7|)Px{X(Zm, 7U2-cxFou<lc֭RZe3 }ܯLyB/rwQk,@By0iZn,cPUoe_ wQ2Ȑ{4]3v vY+ ʹ- ,IJ5?8ALrh LUqwX3] 9{$y]M׮-7w]}ARq GwƼ/s(}Ee*,i,$XLYuvJ!Ɯ/[ "{pbNU)Z,\=@Y c|:p a|Ut jRa nD{t, fnJ.џ=1bO⹹Gnz/UYC t>$.ȹk9!|*EW4P$U7 Xcy*~[6"r>P1N:U /mqҸ`U>[ y7wi#uEc 6AdL@xP`(!~1غ˱g2h׶_|Z^r﹊A``c~T_vbN/P袋"F $k'UӲq*?|{[Q<~8,/O8=￉7@cݯx~5ݯH]_~`oڅ7 {AAâ+(b9 J-{*'>qϵM q !3Ynz4eDԞwaU/ h*Xu+VCMߣc# unfd/0|k}{e' ]Ys [;8Z1>?F67z˿9ҏVvT%@i &yl k\}C";U>e,k^X!t2 ;d3=ޫKuV‹>eX܁rn(h;;Cu>`oB"uWUd!2pN/ng[;#M2WS_{-NK;]9=޸dn:]{NiSJ hW%Yr8BBFhҵ :[.6MbAǠ* xc=Y,-utc'0$}ଳβoP1\%Ku.QbRA HhK-oX-Hdw)ފ}d{IQ^eҬ[h@jxRC>m:`LX+/XyH,4.$`z]_.ǁtZЕO-iz z׳YVygw6R&❴QQV WZ̻ʾd[[=UI.ERթH+AAJ HJ@j)]r0R *{|'Zڿrg00qY` ~ii;s';e ZhN/ITo讔m.a&--zsJ>r &UKa+KJWB)OJ|Zږw 2N& c=߫mO t}t (ɶ|r;H->/Ƞx8upV CeOoj2~?h?2 ]R{VUew~F?0B \$*> s$j`_LlH,"?,h8 j_țha!>C)"W>?x(kJe[>̅n X[(,Px?S hh~P ׀}; _ׂPG77l?J]ڶPZOS9屦|չ!&YU]߄ :@Ⱥo\1`M$7W_ʎ+b󂨇1cPAcPmAAe@(졘Ǚ|>؆f v+۔f.`HnaWE MMY˜1f%J|b=:b!}r+6webGo&3`܁P ,a(!oNۈGnWR7Fdҡ̖ť(–5awe*;/>%:9+ 1Ue0I1LiY}/OMK&{G[;qA㊜#=f<ÍvMx_^pV'-KC,pqM &G^G>яn+pw@cHʅ(U$نqB?D3>W=s 4}F()fiLc >:?ܧL{_dTҕ!=1ȸ7(2٥^_2x-$rA)/m*Z\ȴ@`әqb0͑.:X b5e w^PfC} O~.oK!`,C*d[RN(m, xf65aY-]\i|@@ ԵK[q?I5TOu_UN -4ZUҶmWN)yHS6 { UPP3ɸ*+%L2 }1D$$\`XhZ4HBrs7hA\pTG?7Ŋm9u7-PڕmՄ Ƒ@]Zn+>*\sny'|NƼwO@2.R\@@R]&\*>!p#KYԗc3.Hٗ:] ` P=0G9W.->Tge3e1(X_]A#,r|*f/d U.s7pcq"6DP#(aQhsB@uKk⻿?U0N'1*#CU?o;{ja޸<:o^2 eaGB El_ɺwC(ʄ| EljL-gU3NB{{2m龸X+6M4`ei X=x:Rb@H( ͕mBuXqx¸[ !P`؀̿J%Dxeov C ON4xRV،#,8;2S_~_MU:p%8^m\ ?~mϋ"ز)\Sv   V\L U@9q͵`vq" h( \h̚ W~W l( \I|Ws1PPZGCۅx] Qpe2dT .Ϸ2qr]mWPm a f2kL (m Dnc{bw.495ҀrpjXRooTBmʈ٩K11b 4d>.n#вoGyTc a~V;2AbZ ZE/0ȇƛ[,3WYĸqō Jnً|s=ȮP"חhw՘ Me.elǥD!ޫ3% ]BK6n#P{ٕYϐ M h't`g=ٸC?O*r`xar2+f!~ţavEm6'>l 2`mj#caH*1dJzoX8ќϕbL |ӏAmw[>x6x5q9Sˮk}+"Dvnm(]2H֋k Ě+Rۂe:.X5֟Qk}䊟BlS c) 㠻<@pvSԌ!C1OpCei3Ȑ &Jҏ%dP= O4 b}?(Pzu!P]Ujg(p+C7 FJ MiXar&J26)Y( }ю MgSQذbFU@QOH6\Ȗd#];-OV%=Qo/}}㬋Xw*L=`!렜L]& o}\};-|'JUA ʨQɢ&H& HhRX&AMe-bG ,}s;(eA]'uޝH .S($JXl9AM Q[Q~SxN-SlC4HHvI0ZY?C$3>Hz('e|$Pڕ2ߠ QJ{XApz[O.@J(j Jr\ؔA,Oq,s܏Ko?Bo8j1G"vI )\ kJt,@xLg<#-ga" be== X=L_!p}zbo幎z].L6^QH=3eB0uͦ𿩱JeYൿt/#PD~ zꩧlȮBT=/g7 a5 0_X`ݏ8#H4u|WL;\4Bl%v7ƪA{{޳%X@D KL Yu;RhZ5-2}P}A>u"()dzȀE]w3A|X @=@ ^= åu,h a*&.-pjŞq "51+GdttR,HXDpepۄױi{b1yL>#L_DAǽ=ﱘ||#dS#F11s1^,CCªm{ T˵AaTe z0܍ Q4FiCI 鋜@TfjB]s5& 9Bn @2$eLXȽJnx]OB545 vLE?1؃A$ @IDAT`SaQ/eݟkS ถѶO, ~̺}Y p]Hx}pHە!^9G Sr˯ܰL @ N6$ Au~{*@x|v`1kԓu{ݠvj.qX>ͺ-u0Vuڣf gAmc lQ1dn? bSj{6eH*~KϗA)VAT̞(AmS4|XA_zȍ$bvy~&ʥ(҄$ @ˢeS^ 9Q.Ͳx7i{$rfhV~8gd`x9!F{c`喂d*G8"=|uCM',7}_EUrik stG(gkiMEam\*plç=iEJ/HdBFOϧ eƠ=ct@Ѧ#?~i&8$Dl8fX@WW]u d'B%t.Ty XnR 0 pog@uEx-کcxM{,/;g[bP(n"8r}3xc!_iҧ3r58e*O>g}h+h^eDZU;΁4 Q1FJ޶_ZĹJ3) ΕN4=5̡]Y2}l|! B/G^rZX<^r%]o3qw3{fP҄ɞž_ xަGܨ1$7*_Ř rPNgc]/[g X5cQCBeB)J18q&k_%{=1t!Z#?PSt|I (+9@(A1Vݱb̞_@z%ڵFBl Hm"z&ړN:)ځTp6aF =PfE7z4>)RFNǷA:qA4MhT.0=M>ʠ@v-JDkW(P|-h/- E@yQUɅ fnr(Y+M<71}1X7C7's+B2F苻2Z mq+y\xnIQ:6ٮOAp@U2my *?ofn}ckO3hD߈{0Ĭh(KpCTPOhI(^=xI <)eT$M < u+yK AKyY% Ǫ$yJRv)=ӟ였$@~ QP~O0>D )lsY]&?mCRژJ jTFg}v10&< k 0(dT˃!Uhc-+Νu$wyFNeՈL;)S/#@#ҸV9{ M6ųцwTW#}=V@b5eZ-nƨ{ܞim@|q"d,l|h;Wu]7@Ay3)oE )[_bkYhT7tRoMpY' ҬLU*Ao#y]ב[GeB ~@9tqhH0wsAN:h”S!@eM 1yb9?țze,$AP" mí7MU}Es?2Ex(3A+qQʓp,pSKl( 9EyڿJ]U6&([cko3]k;ОgatnYzm46bRrw9 %P]]6`LGn!LVY|%g S]G>\z >w(JwN_*VP]`V $1bۿ{ &/9(E6.Y]aP?b0;w_2y3t~qFx3z{ =0q`޴%s rpv>^(Q{ #qf~r]qa Szp)SU2yۺ#J]g/rfAU!o57ƞ_[,=<#̽Uk./5+pi9 TE |dYb$/0ipJ&L9E e_~\UJҕ>^RL#^W]?XA)Km!+-.3,XS,2~Y$ ռN91 `Pw Y/:<: A,(&FIΟe"J_hILe=|#uUQB T.XC.3Zzl?k[ Ҋ_0V_ ̺JP.2 ((tbMdzRabC5{d.Ǯ̚*qȣ_mJ[\ySd\7MNVV~!!qh>c5V+2ϙq}*7dߺ|K>ײ,+Kqw\1$@VE6ćz]Y@C)8_Q M_n8n꾛?eMg\ dxoc o*(N;ͬc!`dCLڞ2:P ͝]{{ˮC 6p-uк\G[Q z @ B1N$H=Pu4e{ORuLYҼm7I+~ )3s"׉KzvqAkkPG)U_|Z247,)O@a ( xf|Յd* >Z֕>u(*%.g@]fd C@.P ?vZghUnȣxdfۚP˱-+ }TycZm!tZqGBڎ ApywSss)baqJ+`3=S m#Jl{|aRd-m׃ [J"/|!쎕=vKmzalaY/|gbOq~L qHâte^R7 H BA,-GB[ -,,PDOIpCrw. ='}}ƏO_SW>m&R晢>ω>1s1SJ``(nR8Pg5rWc20 ZX Mk䈬A dD®o 4aP|n|{+'R_w)(CzƊ(n]э]ٰR/gt& ;@KТ~92h]8??Jq^TƐ ZT!TkP TSh^_a;3 r;SQ`N ܧj+z^ EF(1(jR40F5-H1iA x3ͭW` m\c,A(A !6A PdZ?R qCxF,r@ #Pb%~ 'rRZ]:X([JPm֯(8W>}?r^o2 ]؄8.ObeLXUs? G[)}lޖ?}+Ȉgߒ]$%)\dއ r%S>˱2UPA(X&A cw[̾ -nm.^(0?|{rm m dΓ$aw08>$ MCB)Hn= s!J!e\Ҧ!QmAB&xӟd BŤ B \sP\,u a )p}]޿7၌4>@l|<,2 >0>BLFr{ rY\"Lt7pQW:DĤ )PD"Tm$kɊAჀWPu.<(d@K(*4J(Jcr-$7 kjkӂ,bвQ!L0EA*Q i 1k3e ~PM)|L|( r@92wzS71Xo^h@/C(2<BYF1ʨ*bgb7RUv~c/WInXxHC16XHje9r (QVe)nk:VՍbٻL|$c; We#c !ϹrW"ۏ\,E_B+Zv Gɥk}> IQBzŜ"o)7+*4֘l31/~a"EM&*EƶeiAq§?^eP/vmga4,_!.3qS|8,XgBÿ bF,f@t]eԥQ|%kRY!Npy;R1R4]0ym6Eb=ٶ?t'4‰z!s&Y(rw!B桄%:u10633H 3E(Fٺ.mD0mXFPFca;bч9vwr,zQGT`;UAM[!hGx8ULbl~wJɣ@Җ!\tE5y>pb#eU^Lc5bo9E8LѦ:X(+B,SQ4تe!OM_ۿnv=?JЯ(>OϦUc+=Iyʟs?4x %2aQY~q 6wc !¸/eP_miyc X.5eFsP殥=. nd ()AM9BwkG&XY9Yx@{,A( ~A]VxPjA)Qj)[[ iB0`?@!! WwK :4ۦ1\4<_wb$(5I\pu7!mC)Ph  a( .( VEpZO3'JXA̦4v:=rq ]6 (_z饶tq]~.Jp}Q&V@d(P$8 9%Ŝ1y!.,XrwHe_G TU CbgL{V}(a~ϓ#F 3ƠQ ~ ^#9a2xtC֪鮢8$40 Pv-6HSlPc8'JSh!,~\W~~G @ؤD "W.q~,4/qWXڈųǛi+禾[Ke[Mu0n8M?S=x(QA"r F&d{dPgvw=ˈSnv 1n]#|jŽn`XNsX蝀vQPpC`BD `չ >?FC( x:(@`{mx"-h?8ڳ(B@. ֍ Ѐ K.@LE t O뻯CU4C*D7<@1<7b#+L̛l(ԕVݔA Pz=0~3DҔu5\cPeh_5 )qH;:ݑyY6Jdr|ƴ|>nY;R6e;3U@,FarJ!(Ĭ*suCLmޜYK6WaY$#ϲŏx'@lYFf`˂gNVO=%ψՔg.wKqy"XR,r J\R"r"#e !':}s{@(+c{ >N"rk/LJ5K.`@ir6*m[RwJiAxS'nGUmt#@4afZJ2P4[-1@bysN}="cmy][ [§4$$PrBrٛ"nn]BʴQ(T%$ flr?Y94DeT ޖ^ިd[ =m[$JB칥BQOQ{.ؠd*E$'T!H5EYXQը~! ڍ@P6ݵ2 w~rRHGYV9bZD)#H,Q(;QA(_$wq 9'AV11+ E_q˧y>n!A.q@J(צ7&trMmH `ܳ{ɋ |PrRS(Seڢ>"]+^nRa9Ss0=hI .oG6AhèvO,Herޔ^'E6-*xN,Xհ$u%4s^R`\x+QT^hj#h4MujMy _~O~NY+_kT;ɦ~u_rwRS$e!BDFCZhŷQ z5ԡ2. +{~h cHcXkU*ϯJr1W cn'Ye|wZЅJ&o&_~ 1|PIQ !m߇MM=ʨK;f].]m]OdځrL, 鄸)Fd$r?U*."Dq?jD{2ų+\soÉ~j}@q:qՂ$Zx:^{mT IR@}I|BE}fQb']y;dɏ*a.@WME{psHQ={³QVUse_7-w3m/UXP9#FMLu!b&xzcYqYqbJ3knlz=|~ްM 7łt+~B#}hǩ>;ø=P&(xӵ`2%'=܅gPc w&+FU,?K0moq/˄Re+j(^ }㿷G `Ե-L\δ"۷ςO x.p}bJ^zu !AXx'3EO{.E෧򭶀h*׾/^sv|gټRf|>&8.`@ v\܌|\Hϥ@]rGut&'2 C2DA2ޅղې޻|,ү^k, *+uV$ÏK+A,\<@6L\qE~cGmccC&==1AISmݶP'n$M̃/.3. i*BdCoNIFz4iE͋B/1.]&Hn-8G? Ncb,E!~iP¥*|堃>ONW;H w|g?;k4.gn oHu.{wX0vxAFHK-bw.=;*o)_{NpDf\Qqc C6t@,a0Rb|"N[(!g!GWBa|ba$t21 g- TcYIoIߐd!*TL]OWPb$YVE~G>H3 m T/1@x x|:ww{ۋ4(B2%_}C n) fdc0yysJzUJd(Q*XdѶr?m(feYmlZD,9sPAAv.U[ɚ2%lvz9%%^XwgOapA07+F̞6JOM A}_4D hC"ÐqbP'1>u;V]|9cxPF`m5H4X FzCs[pi17T>[r{p7OA ˳%YRh~_5?Rq`'4Ik؉?&Ba˴=Vj$\1aH8uY.bUspޖgXOu |w!Aij!% Ȃ2l?M,Qz)'VZ9WRUe C0!W 1Ǭp;"&o(ح]]_7e ,HD5 wO {o,F cEy4p!ua  !YCS{nW~W24dnhOwJj󔮻߲?Q=ӖM&wg;;@F,SA9OaYԧHYx9,XRb@&AFP?xesYd֓$ꁭ )fؿψũsس`m[>.o LɆ%{S @ Hm&z$T-,2saĉ@,A9@9_$,FOXÉǑ(4Y{*#+H>Ch2X6'd2ԎO5̦ZA- u(Ab.P]fF +*P^ :2(<6ʃ G>b?N)F!N"c(MWr3j@ЇE,=II~Fs߳hJnθ.^=Or⊁HpDlX=rJWNWBuyzabgAM '0t66]?﷓XxpAt{^Ȋ65+n>z&xwq */X)X,7R*^A,\9[αbQ@1W@͝Q.^ %J?ÌslCCg&J2>_ڋYsJga‚ҳ@My.uIkTXx"c,BdL h\jPqv?Moj͖^댲G.3 X%xX> 8}@(cHa ch䊑[n XBч3%J9@ՠɦ"T1׷nPfFɎ@θia p(-fI!s@  ^%Y) !<(u/ϥK+Mqc->F[ ͨ(? aQ@ GCj)jA5́Mҫ[QY>~e;JZD E9- #**Ϣ^~̸HSӾ91x|{ۅ2.7):?"!ՂIc|[}HT(7(cR_ft\ƍ;RE0@vQhע,c9ps=)EP{QTʨxG6qQJ(mת,/{ڮl^Oo5"'HR \μ Q({;'k$\#A=p BQ|)E8.k@?o/}l <餓FU'% ,ʛ%*oFPqQmTCVxqFm2L!` zrG9]p?Mg|A7$@;},˲Ǚ}X qs,[A F>B%&5uOyS tA3/ \rɞ}MP|{y+s܄ApRB%'|e1 X_; c%?Ć}.~7'${%s[!}p"țXAp -s+>mc2ܷmAI~>37"#P:]v\"T{,@$hղ{6Ջ!.8vT2ހbK ٽ-VeZ| \=821<1&!mBY:Ie%\Ƣ6AC,g_|K J)d9lcs[gi;ifRjL1 iCZ4eY TaJo.vTB&?L:}%՗X7a~b2q{)6}@`v 6⾸:Ec!  @|d L{v #gA Jbѡ0l*_UGm/X87ZL arA1ᓊ=RJB D G2 ,} .0~P΢;i9*PA;Ţ~? ,Af`@YLbB]5_5)\qgglj'Zˠ:ګă+hOrU*MZJ"h  M( 4@fE/r(AZ޼Wd9 `VTi%Hޗ8@`\ cqg0kv@s{c+ho^{8",r#XW.> @ar7!P hq$om$0:)oyR#PA(VSM.r% _G{fEYۦ Pw7T2UMݮ.H{!xD< pOmRP:CqNҤBqRʶoxSؠene((ߧd 5GaqP^oue M1AAyV%n(RB(-p7YPя LBfw*t\v:Ɂh`R`ֽp-my(PS=ՎL2J(< -1j(*P{PZX+gқo@܍.+m-; ,q'iI,Ӷ}ۦƵ|6q QEf9nUU1!{C]~/^뜷ٸ| ga< eZ}۵-Z{J0-ƸƓ&c#v9NqU 9Á5Q:Ea5rmvN@)7v8/կʘJ?A?C!E:؀zLE޷24_ƍ Gݹ*W=a| (O |C% i[]z|܃za V e:`U.:4By)pAW ȧ] х}PWҘĽ!V+je1S]V+x(PbuB@}2 ,@IDATLrnZ.*Ó=bD-;UB5<8 7 R F 9*c"!^*x~^`ae0^2(G+vem+ϻ4\sQ(a,* QH㡸c@Qy>Xr2w(4 W7 wһ4{)S*Q(eSq=2F1Ro8 PDRi^+*`w=x}c~!{Z7 6Y^ÜLvUAQB{efS?IR(8RpF5ryR.EŅjݐL;́\jͮ es@ȶ=>{ys/<,;r\vP@U@I߱P.^Q?M1_YXJca1i8P:\}%Wz<0%Jܲ́9s@P駟w뮋rRULB/q0G۳K\d~S|F[^ %/yIx>>BJE F/B O1p q߾}ڿT6C71JHЇ&%7)` ˄ۗ-}'&PLIطB+PH8Ҋv(Xor[8`_} ("04{[_"go .B5%Uq}8L1pmoYIBb[b;O(P-HA9OxR r+sqV/bd$%#ļBR)yڊ]Dc=mcDz{2>Vx#֞Ѹi]杵QmHn_{(^бP+ iZm%2e&>IO27DT2dX@p167*|Vp@)MNWp,םL Yћk8 6X"K|Sxgw#&5sLb-'7tR6Q73mw??⒜i<4Ȃo+YH>w [*{ey\!'D 6BR ;+ot ymQ)R1bJʔQ"'Ppr /,@W {^vR%NW/ `́sXZO{l+nw3`6?H:7#&JXXnLpg9n3%+ "Hܹќb $\\rLo}#??}v90y+khU@'/7Ŵ4k[@<&P$_ai /_"#OECڪ~LUܨ?Q:Ug$ A"3 7d &&|zY>ŁM@j x㍆ !;P*N& RЊ7 QQ|]͛} YLdds"CAl {_nk xlu 'H,@tuG%D;ټj8+??@A!+Ͽn<xdVzL;i-9҄2(k ӎoA H%[PU|ga~ ^" )j'zYZ0)߼)_ZN>|FUSW.>Ng *(eV[_vd?Q=4c>DH7j[y!eRP-Uz Zd[.]O(ݠLBZ>s'XIK2tM{2t*%SN|M gymd"'x9H ~~6@ ˿l,bEw8I%)%I'0 !ٻJb>}>p@e@~ ??ip ~#"77AlS ޼6QU)(8xP uQb"R R+OyS=<u\˃ o|e[#}vpw>>Pe \Pv|_G tO׽u}5@! +0dHMpE3H}uz믿>(t\h9n*VRUSaم((_6]GAM|/ȊeJe#IچbO7 |E^K{M,T^@xghG=Q7)P/&1N]W1uaE(f (R_%S r\ح߷\rVt[JT볖.ȵ+J?'=)JY 42.0/S?!^R߻ȥ7Jx@kZSӓN#?#5~TN ȅ*9!R{y#Q8߾Əl [gue#P2R#k;GX@u1{&sWkY @~+bk˅Þ H ˸H|ӟZtF$ .8xȂi&?,DZߡ +O}j>IIHs>9}Oqb/Ũ+ _:W#*3t/}scSF-fX`|4 @/ ep5׹*(a8S|+Zp__4X.P3x.k6! ďʴP0ߠ7k6z&of^G'NAĩ 16c{{f% $,C~_>śUPA> &irrx;l2 C,("G 5$itJ un&؞x'ԁ{ 'siU1{IyϼGb A.Cb3I,Ip)T͍ۛ990_EYLhaG;0Y*nq:-ܲ=sn#d? O((w+ .h6k^h+bq@c"") Kβ|R?|Kuekr'bEھѴ@ )s`(Cr }`uƠV>_|)>'m;9#C5y&94!Y us9vs)䅅-JO<тJwh17>kc[2FmseO4!NJdDbX̑hom@WD'~2V"ዘHU3B1@ iw85tq@o"Xi@"LIe$-giH@ ׂ7ו+NpbQd/#KJr5OZ'hZGՁA?ci*4v 9h1g(1}hskv߿ۏ;OO@19 ڽ;OjPʆŪX\x&ϴ;J #7p-GȆK2m7P !idCQB`4)_!%qŬ"W^y%H7K0BcgmQlMEE렠cZЯPncԄB%؅#_4yLMjpRZ`Q>W|x82 eօB~vᲷz ˸ _ևŕ́ f`5G|sg>||,9-S:3(կ*`4l&/,З,^؂tKlkHr5(0G%?́q%'>J*HDx< $e"M9)r`Sc D]c6]b 4ח/ŕ́Ak" dg=Y,,Xe`DcaWoXP.`& AB2wnmY H7M)@m3uPA}k_ &O42۔Xh*C 4vi챉1`cʴ˷=iYr#gd,ȓzԣen!|]tEIF!b vPltIoP5t4n9#{ULUPl<,Y$" =AZ`=(>G-peJԪb w(;8nizmS(+6Mvdl1pp"L]N X2edd8b&K Y2#X"zX_lm brJ" [Ė)s$` ݦ:G E0bbcx0: V 1LEvBX!C3'=Iv,r`b ~w(L!p~5fP?~ҙ8Utn"VBk=˂L6!X P:3>|͖q !C\!gg;_SW ox{Jۗ @}{sX,&z0nGuqd\D*a %+(Kpw2elxEK?y p衇Z1)7WۺMC-+dT|1NUog{81&x&h3 ;7>s`8p} P^{Ebt&^,?\@jBc@,b=ܽ7ɿd << >z%- ټȀ (wSO=5U n0FsWX\Ŵ]?HĴC+M7d@ȻUw~ 8ќ>q{X_Jp,eX׽uI .\vq M6֎Tq]O990O}ST~x ! X C~,Q|KLf /@d[=?D)J\o|;XeHu9ٿ+w75FyVbe  KhPy2cbOen[ǁ~=۪("oK_RC_ED Q~ m1+/(N}?#ʔ9V*f(rYIO\Cb~e/{k@VU0ebR8]͔999Ѕ'NY]kM@ɀ((R MFp`,?O__Y4*ȠN)P>U%;7֕v[qK^򒐕?;A@po|c`˴\; |ӁySR(@834,Fm}p!ʁ8 &{׻.$pCҙ~F/6V =m!X{5}C%.`mr@穞d́́zljx |xɎZG$y ^` uS}/nzsSwIYTɖc@817Xܚ5NҞF\>܌έn^dqzlLqS)կ~řAAp-X ??r*x4{=U <N[խ}2Vʁ׿}@}eQ|7[\;˸R3tI;BٿIp fw>|9dx+,I:w[99Пq'xbؿuEV bF\D@gdY0@})#r,cg3mdH0(@t1/~qxcvEq4k>)Ehi#(*鬳βߤ%5c=bw]eS2ƁokgSk)bJ??aAY}_]vY˿ˀ N8\]F9tvzc]YԅKL@(qpT%5Ȕ990O~:蠅 DpD,Crg.R44D,-}o ?vew~D5@0LĹ__lcxS eow\y(ocgr̗!%<]P}Te]9"C.IR9䐮B})+r,́?-S@@@{=َW) !Q@ )8o}+WR[X p~Ļ}{S{P2e̕q8,( @ ~-tkl88Ą1JLsayew\F0w8 Bou{d7dPᱏ}AaoNe.%Y.,HQET袢EYJYھ}( EHR(D,DW*u|s3Yf}]c>Yy9{B@ZKotЇk_~yD'{}ظ]Ν5jQK7*5{i>f~[鎼g=+~#[ o۴ia?1nO4)㪨/\)ҥK]t; %`DPRb'-X˕+Db -$P\}A:u1cXϞ=ݗ^qJSd|v zYD@PCݻ۬Y}YE۶msؔƛ*W-99̒JJn:שMZnݎ?Z,jUv7}ZvmV%-x(>G RK[vd%׾u1UhZ znN~Wc^h"tk^{gGU4iQ@z-!,9-Z+WonWFt\U}+ot̮]i`d9@̂,)\~}[@An/v&6Mov_]<+Y*0c wKiJ5o$[]f,v:ς&* _|kVXt|)R~0tx1o_9c@@qƹSix>j7s)"_'[曙Z4ln_(֛jjsO 0?tURS %ElD>=svcTB VOJ oFr(zo"տR%joKT O75UP_iz|"@q, $,7 6$xΜ9.aJ74j(?Q',TPGȄ2=8ƍPMPUS/5 E4%V+J~7Uӄ W>Tn& hTR۷o~_O8*x@N@@ 3%|>+Vt%[5*Es4K.W5Z;:GYyE^_}>}[BB U mCEFL0 ".p9O?6sLwӲF_F k?o:il)װaC-+.[,]A JxﺑN$r *Dj(%JpߊqZЇo`@ӧO=zge.8e]fZ# EzUَ  *vPT ӆ 941CޘLIF1d3֎* @pJ[xb[Q%h-U'Ոnzm-Zp{eSN uڨ %vWH{ʗ/X_ `m۶ul9kh@!Y Y%]tɪӥ;?:з7-Z7ⷛ\rO+Uϱ@^PoMӴH:TȒ%KgaM41U!@(r78x r+@}5kִ3f2񴯾媼^?'ʕU `XF@^u9¨Q"rxrv@(4!U7TpMڴicO= ۏ Y`ƍuVc4٥ieQ8ŋ7 ]6S 9!z71Dˡ&z}GP0M?9|pҔPX\r1yv*UZ5N(KJ2ݗ xsD~bi^O?4˗/_<@5OU@@ &… _.Tnrf׭[7vdlv.(KO믿_[%SN95jg9,0a?@f\2Z}(UIM6;ibzܲeK7Z5mԞ~i3e=CZT VZe|sĎ/w:\PXb[}ڜ  i|=i;iw&n~zZ߾}Ù_nzR( 5a5N*ߒ`jEiӦѣd|MиUSS?Ѧ)b~`)4w\WvO1_8 # 9%3MàK(6Ը{ nܸqZZZ`|Nu@^:xևk&!z^ p?N Qo/,a?mϞ=qu:#-Ak?lذA{" Y߿?|4vش@Qмy4oŞr:AC@R@S-,0~G{<{7}vw@^{yP  g4eԩ[pW/T}1 KYpe=%ijj$E#Zr 9uP#Ǎg*OωF{4xN1X;j]if +K$tp:vG3L%U~~̙qOd X>  T=k,7ELp> /Xt&:ME0R%9R(~hڵshòe .pFe8=@*Nm&NT=LUTꤓNJ,0͛shΝ;-0Ut0Le㳫)xjzO?䦆i:Z ]ve O |vz@Ш=M2z37k}#jz;8:q2HU%oUH,@pHK^M$JVZYQϳy$RI#u˭vgZ=LV^N >| ڵkD˱/Mћn ySf&Frs1߅o}YP< ̎a[ 'h+WOw, #Qb@1}Yh[oH.bSu0}h@*U\ QMbbɠ_jCC U4r[ou9T H^ꪫ\52eؾ}LHTKUti(ԏ~Uӵ`xVs&|T؎ν =WF@Pg.dч%}T:lٲYNAMA{ u5uL 8Sb}|VMMjl,%K_~YRW%w@ T B@L-F(-E@,>zӣ7^6-cS_/F:~}ӥM>5jwiJ- (FCoNl̘1ֳgOZsqǙhԃU{w4g=}nU!Zn “V~}kѢQe-\URxիw׮]`/ꫯڿOYmO4iӬw1_?(" @D}>cz׎;8FӁ4GGȊ<'N]یO.:u긟 d< @R YƟ&JoM=RDƎk;vtޛht/VNA*ը8}}UvvV=Ԯ];[bEOZe~a0rX'f# J=qDwlX+FI*V\9۰ai$->͛7:Z? 7eW^)x;k7y^.<]OE/T39[# p dLdx9*ބO;묳ԈxҥK6X7}K T 'FOF@_o* )F*5 F/]SgMҔ-[ Ff ('kF( Zbl̙GJ9 4k}} \>HQFnFbÚ5kfŋOO?G?Q t /Fi\𨅣1F1jԇelFh*֭[$%d *Uw0 yMӎX/U^# )TD ۽{С;gvC  Q,Ubэ@ l۶Re!5%1Wn͍ btoFk>4j YY)+~6J7UJ *`>$޽{= .4oTmUk<Æ V{kƍryW@h:]';UΉ  4Ԕ!TV(r{s҇=%<[nԗ>} jYQ:ꋳ#yTbŊ.ЪufͲ2eT}]Wf]~bRӤNL׆ =5n$*\p" {,9Ұ@@HL1cƸ-ZԖ,YSGj'|bJ6o<[n[O@#pV\yu?7u~pߕ|[#TM5o*P t뭷) h*Ԛ*Fev{'c?2(f2@@V`[Hk4"m-GGP3ۏt i~ .;bW>:>xMIQSez*Sq\(W)ࣦ>iZb6)%? r,   Ԯ]tԼo?lG eM7-u߹sgիK b4HL@IhO˗/͙3Ǯ#*iĎ7Qu~J)kcPb  ^*CYN@6 hի]r_UJ}٦*Di PBnJ{gԬǻ_UV-뮻L}F@@*y{W)Hh 5"cGgVսݻ[\)wB   )%;F&@XŢž   @ ZvpT]x '[@ ~nSwqM2 F@@@4}W\vUܱcGi/l[ *СC-رcxvS>0o}O<h!   @ ֱcG8q>w.\O>.H epۻw~wU [﯌q᯿3@1q   ?ZӧU.-Ϭխ[za)6i$۾}͛7 (n[ѢENsʕTNo2Q>V1G@rg9)'L2eʸe˖;3^yb9)(/{_~.s'Fl:d{̟[׮]:>v"L}A@R@G /;{衇a HK#" $_ۨQ>f˖-Qﯩ5e\۷o.]" >y TTN>d۵k+p={ɓUV9@@@ IDATRC@_*UP!:\rew.IT{/  B^x=zey9) @(Q{"wβ'䕏׿e̩)i {FC@ N=TwI%m޿ wAտʗ/rLiq   .M҅Ν,YD    @[  2$9?GӦMTY`PR@@@(Yhg٠A>6㎪h9ebŊּy$c@IA@@@G… Cܯ_??>ՁlذaֵkWKpJ'g@@@/B?OCڼylUVو#ZjֳgO;tܱcG֭[)Ly(   *p͛ÇO>}Ө{ժUcuIU5_{ -[1cxSPʽdt@@@bxGq־}{۲eKCk~iuN;47^qyaY6mڔЩ%    5kڌ3lĉ6g;x`Ȯ+V̚5kf^{) s ,.]ٚ 9WD@@@\8M6o>ۺu\@ ҥK[Jl$la    Eq';M+ؔMɩcmǤZ?    @P>u^+z   %@(.6B@@@RGPV@@@KP\l   y)    8@@@H@ZS@@@@ .@qq    :R絢    @\b @@@@ ukEO@@@@A    @J׊"   q @@@@ :=E@@@Q 1?Ədɒ6o<{O>uY*Uγ[o?_XwYR3t6mX:uB={XCm6{뭷l…?:ǥ^j͛7uذaM:,X`˗/[5G+[XrM2t_ZBf͚֩S'+]tCY I,pLZ%q  #/)ɓ_~!]@{'{!:tȆ f+>ZyڽkC/?`;vx6mj;v8\:> Pfl޽Gwǻj'x ` 3Zhr;+@@ y%kC@@ @_@W\aժU[afϞgfV(?餓[n38Î;8ۼy͜9Ӎ0a{{/B9{n+S]yW_C4*gȑvwnM4Zj~vZ7ǭ窫Yf5 oٍ?mٲe6m4#FX=f@]PB@rD 8 *Q@g}}QF yZi-YN" $@lI! 䶀d֔k7 y"o*]v7)[j%JWk:Fj嵌T.5h[ {ck֬1%rae $y-  $iO)`Iճ5%nVyy%^Ve1[#Hyt2pSRP-xTPfx4-\Sjc=0}'K($+@H:@I!@mbŊ%ԅ-[mܸq*ZZ \P%ۃ>J6lU WDXȘO(lF@\ \@]d{{VMӨt ~wT-Z4N@@ (B@@@SҫsA@@@B *@@@@ / K&@@@!@( @@@@$@(/<@@@@ (B@@@j\@@@@B @@@KҫsA@@@B *@@@@ / K&@@@!@( @@@@$@(/<@@@@ (B@@@j\@@@@B @@@KҫsA@@@B *@@@@ / K&@@@!@( @@@@$WihIENDB`ggpubr/tools/README-lollipop-chart-rotate-1.png0000644000176200001440000066466213571311435020753 0ustar liggesusersPNG  IHDR* iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxxUnz(U:(ME:RlXbQQDT,APқ^glv7d[2yegn`ϜsuJB$@$@$@$@$@$@y;Ϗ#      M 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHHHHH      p*XfNHHHHHH 0      Ge$IHH 0 C=޼789ǣ{C3R9H |["   v۹[+ǎ˱TY%g/Պz%KHrYP"dw5<˩s$jI=^ɇTsxw3$H5W\)P(N_8uRĻv[9_ēK*_E\wf⾸ήxn@!RoZ);XHHH 'eڍ dA +krwRD,tvS{#|#b|ĕ(ub5 q(UXFNx>+98%$M%{_q&,eap2*N^}ΝHHdҕH֔ӹJyq=)Wl)ɇG3IɆ$_9n+6`%cwECmQIKB*.΋J pXq1   [ÿ.nږf2- #/n$V! kS" # ;H\.Z'`=},ߟe HcUl K 0   q~X}MZU& ĭ ;])Ge/=^߹CQLk)tnxy1|zx*T\lr9*|9|   >|TGs*QT./oh" n*hΒ|?>I%Hٖ_KB+^;:xg3JKZ'=}ȕx R\6HHO5FE/쐇~Ywfq&Y=*/rhYMYi)ƒQ~^I» gtTp$@$@$C)2%DtowÙǮU?Euˁegt~>!<~a @zT 8@jդ\rҴiӨpb@T_WCG|3ئ1-S(dv;nY'Tc2l{a$P}k @ٳGv-Xfվ߱יQˣo:Xc)?,I@<=*ލke3I #&  x~9O;v簕U߰a|駲z5ZG7.;X+=vhRRRdeAJ7˻tSF |AYp?FEZL\I p\6HHr7MG`T0WXa?~\:w,\sV"=Û,GֽnBjcԑÑz<yǥhѢҨQ#馛M6R|y4h>"uK!t!/ؑ'O-Z7,Z>=$9lHHH  T7XX73) u"so{z=)fr⟙/:v(#F(—^zq\?X "ϱ.Ta8  C`ҷo_93ϔs9Gڷo9>z/"wy;~ZKuV{w>3w8wÑc%kkO*d4~R@^z6[zS{gRkF}_#qfѻwoAs_|./7Ws;DdH~WoF6{ty!XHUHHH?ի|Yz l޼Y[^y0atU7RjU⛚+%@2i$y7tvNHoFݜ4,Jcw^͜9S֯_aT7q6 7c$hx_eΎ;aÆYpE1]\ cn2y՘lcRNǺPH 1 `jٲ"1ct:t%8 =z%K2e_qw}oL3J.1/G/ αTudd&oǏZڵk'w_D7z4z{fvq!1. } m۶%8`lfBxP6kG@XJ{}eѢE: =xXHH%=8R~}dĉZa߿Vl_z%ȫwuvṷ~,Rl5Ƌ]'N5d_?,%J=qVF(pGFKtxꩧw@{㓷/2‹r-cҶ7{prׇ5#l-lD$@$@'p)9rnӦM5jdqdٲe cu` `cGX-ƣDj\E^X \BNߛw0R?.SwZj|::1KFn NvkmËdʕz;V ^Aڵ3ΐgyF.SH PUHHH@ĉ 7ܠD#=ܣ] ,([+8>A?}!СC5z?"0۷k=|CўW^#@CY>nݺYʰzyqYvyG!x!CA$@$@##CLiݺyncǎծ`>A(ӂPQ?Q$%}XP|BhНX$R/J,NqÇuP ͛KݺuO>z|B2BWq^Nꫯlسg ==Bzˌ}Ta8  Pvo^JŤ^zq<j6f[ͼh}W(fVSPxe[n{Q.B{"=ĂuOHHw͚5CDbxN@"u,ly~*^ޘI&Z{Wp bM :c=#O$@$@yavVN"7#5RXYJ'% +ڲeVưGK Ģ촗TfvՈ~ I`<*n(i"EJst(cBWK6X{!t' *8z q ~ŘFQ#@8j 'PT)i%do(R؋hЦQF… #F| ""nϞ=u2o_V:ѼyS*2`_֫0/dJZtzXOÇH;O`ׯއ@M87ǁը` ҂U W_g#"t6mKw)]twpbM rzfHHr!{NI;uZ 0jJ;gsNq?1-p4ݟM_h=TٻYU*H3cshY͛kei rٲeE]CarCNW17nG/fU+/Ivi'|oFڧ" 5>fI}3"vz3q4GS{$"GF[ćFJuwZ9"CoذA :@sZsߚq$@$@yTVnɲەߺuʬY2U~ SNAX`VU\Xt-c](XJdLx;0/& o:h"ʯ_E^N|-\F]-:GUUjժA7C ?B, S,YR B!#QyY[p G q/;!+x,Fe1R#2Ć~L%'M F΋]ra :q߳yupFQObxGmI.j$@$@$j=o۶-n-2Nkf/G+^ T ŷ3"WH;_RzNxv@Q @(@f$@$@$ 8{sܹkĊgw3 /:g*& ˝Ң"?HվRT+`w$>G|`WVwT~B IHH 8x9rDJ(!K,>}֭[%_|ڍ|q?%rjrxJ2ycLgXvxSkWRq))\)Q65] #mCY=" S/h X P΋9 8 e˖K/ɀ2sGeod]9&Yn :Rgd9O>xJ2\꘣[y$!i%ɧh?Fؑ1q= wu@2 K 0  #l"UTI7}ʛo.-7ݬR&o.GRRCzjH1u%4' o*R Β•oIbJ!szAC);}16:E}i7Ik5K `>$@$@$Gx<'+VG\ve",{;tD6;.GS$Y;ZXo\2>^/YB+-Պ#i xʡrj|I=AH# ;X+~/RhmNVؾQ ޿Vo8x'aE:5Ws!뒀C Pvs$@$@$@$@$@$4|U|IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     p*N[qΗHHHHHJ C&     |IHHHHH;t9m     pDM% p8p[N7[BB$@$@$@$h5Hr9sHӦM筷epIHHH9;g9S     p4*^~NHHHHHC{֜) ~16)ƶ b9$rHB*VB\Zq83 nTsq$@$@$@$xSŻk1֯t쮪uݼ; nuM! zK$@$@$@$%yy<;f!c(q5i#?.& ,%\,L$@$@$@$psN=PY}?J5e%$E}#uFiH$@0V 2L'   _$faQ~X{x_hO5 dJ pXHHHH  $@$@$@$@a%) yR%uHo L  _= @ xX*ok0$uX?L7 $@ p@48}T\9@\.˗O ( gu\|ҫW/]vzyfRJ]xᅲm6)^]6C~nI6m??dɒgyFvQ~g)S\2MF{۵k'$&&۳=nV$ H#`9()nII.IQJw%H K{Gn:dĈҴiSTbŐǪJܻ+;w0} 8@nSNydwzm'N1޻w^DL! 9ԱCDvmyCia?@Ifvj CW_.Zƍg-T+)#?,]v JB2ԋ-[ʲeˤTR43ΐjժe*iY$@$@Q&kxgLr~xw&3xG$@K-G}T^}U]K&O^38z8~x'%%zacǎf֭['ElРAۉyq1C$@"BMΩ-YTC\Ujq`VN{gqil 8<`1cf͚r}}2qDqsoN:U T7<)p˛ @×5W,IHDv5n%IC^W Vơ}:~XPKYݺ^ܕ[xA$@&ܫ3w7x$$$G ? 1HHHDZ*PHFNWA˻[t_j3sIvȱ#A~0~;-X6HL<|EO?giDŋe͚5:P:ut6mH}X-)S{*]̙3GfϞ_:/7|ۿ<`ڌ@DcǎɝwީaF>dРA2ϟ/SyÂ3gJ…CCIJ:HII &˗˖-[VZҰaCA䫮*]`76m_]~lwyҤIn~3ҼysLӰ{~vZү^ZF(u눗DC! 2mH[tW*,,J<_{"I~aoKmg.V {IH DSjO/Z S)zV>,CU!P2~+2ERZf}[5^~ (Q"`*FPޟ `RlcQVqC)ՆR5c9r֭[6c~g8i$mgVK/} g()Rꫯ |`,8zO&!Cd:˓ @&=y8uqqT"?'YsL1Y_{SOl^-L[u~S2Yc=zH$@$`'@ ՚D)r˗)/XI8;UV"&m)ܱc"BЪ.x WBp'AD^->|Sn69yWmaXCOӂ]}M7i-ڃOh 2(cdA4jX>!JZf͚%գGxXMx0%RSptb- c2[}2ՂE,q&?}z/˵>H?aySM۱Fre39rH=D|%n\`gB$@$3ƖE$$JB[ؽC1{) ]z,YcϪ]or6 q_&CNɀuU"+$@$ صa^XaSePkbUlٲ:YRlQfmRz t[PJ\svtiϟ,ٲծ]ۯLlC)f:t ur2vR3g`vP/ B( M fڨ㖴ϓr6`4p l])S^LXe mZgFXE)ږeYX}%Z`X7mdV yfʕ+唻^^vc`J1t(Σ6Y>jPH @^":XX7SVi =@7)ݫεjVor  -WrnO:$/ZVLőH{}w ,3jaQ:򫭨_iXqTRNԃgYe{h`ORpu>Âi[ aĞa_/B`1U[.{O(wqG(E3`pftv56z- X_X^aU.ү_?۷,as+ ~kρe]&ꅄUMy紥Jm3_fn| T{uu3tP+2ܛ|ew`/_"23g π+%YԻg1N->/ϷҶؒxI$@B p|Xrnv{{X}JJ{ckg A)vL7kS,e*kf{XtMiݺyV@p$* Zf6Hِs9G:,c,]y@H"Ѵ/?Ў x@u(*U6(we9{CHB](Box!  'q(%n+1IӎR:y<`.uH| P%\sPdImY7?qԑ)(JJ3f}Ӣg~ǂ`E3aP0fٳ'C)v2/ 1kah)x\PBj_fV߁P+}jkUv2Ɋcώ|{ RL`,}/ Gs`ߤthi)/ w n} ޵+$%%i sJۢe cPEK?J Ǐo(CX dLX'bpXM)_y')ׯxiJ{I(>l*gUT7_=ZWi=_IH /pU7#U/=7P#) Lcɬ,IHp˯m-Kd1LyI3]$j,.%lUq)K1H| 0 /<|eô|{GSQ b'ba*-jQ+8{]c ߈VC]jG0Ale}l`EmF[@%2)Lcğȕ;cb[$@$o{vp11HvӵK>|>1]ݢ$@$`l8nY穚rWaFP#,YKZ NӦMPq.6\o,k1R a7{?ѺF4pZL☨^z- DKó wrglϿH  Ȕ@BigZ8cRIsJB{$qd}-WRCDW\.I~D $@8.%ry@AKKAqA=z0܋zQ _K8Ɍh[}Szk;\GۄǑAFsǎM#FСCe~/rxwl>VHYqN) O>Y$@$@9$*UFa+UTR)%QIjI|yIh,VHʽ] \^%lS$@y3g3Hm $HhV`O$7+$ʚ|M#IAN_QSRnk-Eݒ!p<KuVn EgϞvE]XY{PVfN{;w\S{-w}W[bA,̈Θף>L5-K,ʿYg%8f `$MAnyP$!L$$'a@n"@87J$@$@$@@AIiITWܜ}EX)=T;K$s*X8pI@^T8    x%T]O&}ψw֧Y+~9u"Wݼ$F\%csJE2H V%   \@8rPcßb$r"/Wz+3ˊ{? +W:Uq( *"vHHHH uifFD@V7ʞJ̡ @v _c=    M8}J<"ƦYr%5E?)WQo{D]njeIB#YBR$@$@$@$@~x 7f]mo6Iһx7= #d$@$@$@$LoORR-a`Y&)ZGSSHH NlHHH@x>~9%rUnթCg$TSHH hD6A$@$@$@N"ƒU~m0=H^ @ }v' arӦMqF93lٲRB8A$@$@y@{wĨNcPU_~ @#@ k[oIrJVÇg {2u/-Z%JHjդ}ҸqcXTRE^8nd](qN$@%cx aOLf$@yĉ{n9rHVVcǎeS /\P?|>}z wꫂvז-[dܸqRn]ysg<6K.$ۻw~$Z3΅H}đ,  @D/]T6B/ <*V|yҥ3Ԋ,zP<(O'xB,G}Ԫ.Zl)˖-RJD}uH ~1Yc: Żgq7hqs K p]\3r(\.2߰@4Ȫ>(̋ѣGkwݻkWiLn>pBNv9? 8N]Wzq:EKr牫`nKdUgHq,r,@$@%)Sɓ'z%ثOEbŊرcSN<zL!  :/sB?Y4+IF 'H9$kHҨ^@IDAT%$UdTb A;d& @"@8O-gޞ̟iMnϙ ,=UlѢE5/HHHB'vZh SUlj[Rpmb-㟒!gdq]VF| |Q|f @ tD&Beŋ sg~Xdyr7ĉ=\;k~I`-<3Rti3g̞=[~goڵuP*əIJJL0A.]*˗/U4lPڵk'W]uU&{裏M:uZJ0@j֬ife +)_yoرh$(&!ChǓ&M~AsDp4D}wHѢEc a ߿+x>sxpdT2eFs 7ȅ^[=z\fH֤I墋.[71'x9uO?۴ub yW\!@~"  qs3q+I8V\-p{ImEJuY&I"lmg $Q(jϨ R&䩧ꪨ~ڵ˸[ eʚ [C)c~#QyucKک\z~ᅪg}ֺ72 Od(hԨQ6_o=ڱ35ϟ??]nqSTtgC)U4J~^$/fX48LJ֭[_jjJX EGQǃƚϡoh} $`TH=իF@h֜wul;_~f̾Mf^dV$@$x6ijR$'u$kN3&koJ:?'{?յ|=K0>HJ` 8%,K,] .@>-}ZdjȑvZjBpA]߀H| ˟Rt%m۶M`]SP5Z ju!~`s|JgV^kof(OK/ h˷h1zrQ)P`O4ע^Lȧ~J,)7t(Qׁ̙yGPƟbٽ˵iXc6l of&(C!&vm! I# ZcүPEr5njox쳴(pyk2 p7^  G!_~:}DY{n\Cчd_fӾyoHc=5d?lH\[ax%RVb*J!( @ZWMՁUd& VaP `$BH…嫯e3=c0,eP*Oעk ʫr6o`veJ]E6,Ÿ|󚜜,@C}P !PamX>-XHC E+;v찺Pނϸq`}ƞT(ث@+/@YrV${!^c=?3F)p,tСCu>Â)EL]0sh/_L#h}ڃ"Z/A! H(y ։B~N婲ZG\5 ieU @- }g/dZiW5[|.i&`+(Db12ii!4}a>P#(p(2 *^<'2/g&h ?h?/z\2xQ5$&&Jժioa @j.uzƌZn#}~ D˓f W%iۢ}?k𿍻;\#i *KX)$@$E֭[78pIo#J#)3LR 24cg(Y9 5Ů HuYf1߈lJ0, ^=cL8|/o7h ^Hsk 3xגڀ:IvCqxA4Ru-Z+Ʊ#AJL G ?*aL3u,3+*+P co(ّ[N>nQc)eZ)Qᚭ9ҁ`e'*UlAqˑ۷[g"3kl ֭[eh,'7Lʗ/,[_hGQa  pUv[IJ6Rcϯs+NHӊeyqmH ᵅ""PѢRgyyo~ۣ0iU7cgrj{(-܎w-W^y߈CDcc2'N.tVgZưcOE ,W ߈No9<39xU2'YHH tP*DoyUՂ[lZ?J)xW.'.WQ\뚝ޑ UT#8gժU͛7k#X(cJұs{cmb)0mF޴iS 0ƌhЦlJ`@Z\a%T~ҏ})]Mߞ{mtH02̢m7 @p"U( ^:܄;HBt\Q31}pn܍[w+ :IoaEʷiĸ3S6`=QJWzɰ믿ցB )xM7]a%]xu<12g @/,=́,pmJngTZ02= 2{랙(/HHp7=;8U$R+E($^շw_b+"i$@y/pӦMy=_)+ (fJ_i!7M{ꕮvّVZYG@ X&:uy+\ru{9SFiUUٔXӥKZ1B #o8(E}4w5T]}ˀ}\Pqv0 /X=  $\<' Nﺕ\S.>OH=$\pLgk(YF  B p8ڵu,_|oGRZn1'#F$ :TV^w8"В)]E t b= n=e9E]voF'2eߔXώmnDfDo3wo[fY|?2:d#9' na}衇!ӧ,_<]M0~eyO$@N'*s/.<OKʀktqW%}Jb*S^RU?*"t Iq dPbXOMEJ܍7(K,DW *Xϟ[q3vkc [qGu{bPlp(=8cM6%kf͚V+套^|yr7[E'Mfca߿D~@ٙ2eJ#FSK(a?SM?~|src&WX;ؿ2a=:uXb_u]] \F%;wl/^`30sw@eXap1;'O,wu\<"H `lxI$@$/EtRyV/**J.I}9ݾ$~$t$w"OjnTYIovC$@P E=zXRD)HVoO>PXЗjGڹk(6*|3Qk;vX3ﷲdZeBRp~YeLF< iJ120CuPGd(?nܸ e3KPLC2T$ cVPcܹ~رQ`A]Q{O `m\cڻ,-f2TDte)b(d+ s|G bJS/& :t`*ՋtJ7Kt7`xC)堂jϲUG}%3~O6kȐ!2Hr5ן1N5)OOr5?H hV!ݻw%N)!K{+ʰaôeVZRH}r RtkӒmwE#X"? *RfϞ-f#ZfM%>, K- $NO~ڶm @8 Ⱦ>J9ցvHs 4HLK&ƅH˼yё m%W]u5-Xw o^s0 /ȣ@FXKg>npBkϸ=~?{Y^ HJB1雝 .yg:c&@wM ʕ+ G|ߜP)4"EWZU!:v"rRn,1u910GgTw(@)@KPNl?Vh{]{ۇ'Dq9 ,x+pU #xc/wHpDYˬP F?[۲z?pp g'9K\Ҍn 8`5g@ OQ&@@Ta @%]HC:8߉T`= t++y @kYdEEnj7|o)/Hbf$(Tܜ, jɧuEL^U=Q:<f+$@$Pc@$@$@$@$-.&L|MDlRjtIzbȐ  *9Ǻ$@$@$@$pΟp͒ojIYEU&   h=7Ϥ cTR^|H>% %@8~׆##   HpId׶ۀ7"l{ KTrY8(   9Og"^o Ђv$~Ad :*QGIHHH R'$*uD{ @<ϫñ ;vL~g寿'N8N$@Y#Yx7,)ojHBQBesD2m4 -˗/2eXi]locĈ vxԪU^ĺ^`\?Ə?v HNnւ^/ZMqMzr*>-SN~x8ސ adC&wO?4Θ1C[䢋. N^/4|y饴;ECEA1Diժ’SPt(8 oNTR:,}KoifYxacO_~PE-ZG}$x |V  0/Bo$)+긻m #*fU3B$@#@8vs.]@ܠCM6t{U:AEcǎ y01s=Z`}f n[/:Lk.]C Wjy'UVm"=Mth rHjhq1I|@rx7 15cp|gVh$ *Cˆ(^28 Z,ѣGbҡ R٧Ot:B0" O>=Cy{Pe뮻:uZco,^X+yr9HufS󭓝{e۶mRdI=93cΝ\poOd vl-ϛ7/]Qx6Wƽz%JMHM4~a*"g'6JyMOb9">7p}$IH .Pep %> ح[`E5khWi(K4n8'nZuW3h(p~׵҉sinj#uG{ro-4~ыarT}1-oom>L/G@Tv4P΂rf,){P/p"Lc]($@$@rqP zIK%RZ/spSjoo ;J bs*]E/@lN$TcÝ*p5b_g01=DZnю 4Hz-m5rq.qFt`?2SkgԚ<: %y:b1 ’ vNva6#*#3PeE p͚5eZ1G+\H}﫯0څ sRRRa17/ʬ)~\~2{l9}o  LNYG2ǒ|sSYLWfpڲyK37$@$kw.Dtٲe3{4ܑ!?#ē'O:#G-Spd\'MaÆɨQ Pp+"p]bX{9+,|ԨQjhgb\GdUb mô#/жm[X GR: <"4C1ʺ g%53+EG%aNEh f7\:/c 8@mglMNq?Gl,L}"-`bB% $> X:w]n tFhejS}Y ǟr#g$#Bҍr #PtPt8BKKr$\3og73;;3y^;7v=yBB)uF (vP)wuN5کJޫ`QҚ]>e5oذA֭VJ:R"Aon#H4JQGeۜ`0^H|W2`u;X`ye/בyp=^ @$`}c_Κ.$@$#$(Pl|~oيzDիWΣqDDJ*,Flqߧne\u ,dW` ~_('|yU1`Ņ?轻p%ȷOǠÒ=p7$:fB|`!GoDcg2|/p_ DG,ʱ9';o̗#ePB$)s:@\xRP;8똈ϑڠt|ؗ 0 }ÇDK(ܡV"ԼxHJ#f;tE3T#y*TΛ W !@Ŏ@T8 kك,>7щqQwcp{N޵k"1:YtvQFw6܁?FG=(iEYvę FŹ8 tN{6mZ D @a')v'JoKR^VW.B$@Dxzt.JvIrA"k"%G |eݻˈGkoppч˕+gWwoO6Q⊨BCe{WYvV5jB9":` '|"-[{J .c=6vkDE>]H߾}6P8Ǎ9RF1AZ& A;@^rh`X|k9&IH Y xvyXGPS#cm;h *#%.g}V+P̞hݟMgu %'Щ}LYqԩv9mcuq://,o`XVk׮[  kQXSN:v}pBA)(їx `"2.˳gvUD+f Q vd~]Os$`,'(<+VIE[ܿ*ދnHbDAbܠ!P)j 3vX^*p~7!ko޼VPцs"Փ;.Ǐ 7M0Aa2lܞׯ_/'N 9uFv2E  r#CG/ nmGِ!C`] . EH4VtSG Hv䷏:˔'VFX?}ufݨ" Z4ljHM6z/)"䪫.B [n_X ay=ztQE*Xhh"'oذaW[oUWnovw6VKq*^xǪ"Κ5K.bw镠#4,`/, /0i$i޼/`>^D̆7=<,h-A'xwj|òۨQ#zxhN7s|?}Gvܩ<)S:˭' "H*\) >ae Tشd*Y });a> :СCeڵ"B5Po?Vvج/`IFy ^#<"͚5sUc?+3fpkm# F %tga26% hxT+CLܪ>HHWp}s^k1RJ kb2~[ "FcoNa |8t9ˆHxVdɒ^ 98!byybFʣ- DO chO??VyTNؔHI *!s$UZy?cɯF y?8G  :zVI$@$@$@ E ·U@{t_*y Ĉd7$@$@$@$Rz !oSZf$@$UI$@$@$@qD{V;)2+yj,^{Os;  "@8Hs   (@%Rd>H\Ov2nXMZg=k @`8x Ċw" b*-_2Q)4IGb}֬kbm"֞?TuVSxT`+-F]b1 @<OOs!   _Qj^)Z,+/a$@$P(~N$@$@$@/#n +Ű$s9͛K-m>h׶΂oV&M$֭/R&T^].bۥVZ΢LUP\W_}%˗ElJ$@%>߻cie([b([ $*rPvܙif͒|Pg̘={d곰^ 0@ +,(O=T:ºu*xqwKz7 >=<3dmu|ȨQ2\g۶m2ydygeȑ2t*#!+EˁݰHbBsɡPI3IH /P ӕ*V>۵믿oy,x >}u]EʕW^)͚5X_uGҺukY|vc5ĉeذavQ*UK/=X㏲pB Ç?d{*T ժU$%?ez$@yKu(Ԭ+K`-*VkKDF xZ$@$h_=/\ba@yV~u#JQۥo_ Y~]7ߔN LRd׮]ү_?}YtiYhVtM#GgwO[oM9{\jnM)b3'>V||I} .]HڵM,kF`SHH Q 7wM|%IH鲒FDRGOOv??aoTH@~ɲb@(-J{Q͛/Vђ%KF(r:{qDž/^RX]H8}06-Xp. ʕ+#.q͚5wGހ_} l;x„ 7SN.DMAիW. 馽arWI;îz $+~ |vy"/|"zU?C}G'dm'V;Ao*E32k}W%Z+S"&v˜H @JA 1 ' \7m$p~]AC4JUW]ZIQ|b тQz̘RܱcGgS|̙4(N#k׮v}D;֭Gaڵk~X(XKbv=AkVjذшnƍ&"Jw5C|mNJRJÂSOo7N.첈Gu`2Hqm%R:AC$]õn?j:_f99+H-qmz k~<"0$ZK.DW ewZɆ 0"rF yfڊ9MݻwPcL6mTlBk%]XQJ}NLBp1 I'$H?TfM%Jșg)O<lbwDa`(N 2gB$@$lm 6+  TTM,R3"GQK,+n맭LIH Q(O*IyWh%3,23,ư8|[Xr^N[rLu̅Qαvuҥ1ĸ1J(zA>c>P0gWN͐CiA/ kkC>ӟW_}Uwzb g[A}X޽[x~x)vwy:1\˕+gk!EHoNꞳܭpG#׬۵r 120\a66܎`B5օH)tFDP 0ʐ.<حJ?5Jի]aݥ @2-_Swo)ZRs'KzHoS㪽 Hi O1E.Xz9}n1ύ5 ̚~9ʊ|t}nE % )ڣ ԩ<@1f_m6eP*~myz{(aՆ4 0"bc0md(KA$q 0R=*H#_(6&guz-a aWp|s\E$R }ENjcI,_9X[7|tI2 @@+Y O?] ʝqEP!Ѹ?3@6*eĹmC) D8mz:x%h ,xYq*Z3Iu`FQFnFo۶M1Ch7k8`XB@-A~+xl557#H,זfʺ+{v~c>}OCeOќg2p%$@$9"`܁L:ݠ-[&H!ԉᄈE{J}N`u@ON[JgQLα / +R;!QǩŁ):bF+sZ@IDAT ^Y{}s"0!/yH/ŔH9!6$@@[#xѮu$?AG㇐ŸQ׵$@$hhN'$E4h8 AqnٲssubpFEDv |d,q̹gp(S#,?9rp!Ή8-KHUdĤ2סRO9yrx`pFyK8^`1Ha.)rx&FgK݅Yz'GY iG (T :pEb(np=|,ZHӉ \!35j\aݾ}7?*bNe4ԜblL ѻ8-i8;Gzo1cu 0EvFFH"eT*= I]_]/oI`2]gqX;w?¿'޳J܎$@$S)$s3`X k'wa5ľhũ=6PJVPu/pE\駟zK/Ižbq*SFE #h6,L#EN2E_@A5{7nxk钌5kK ˺)wLQҴiSg8imF@)?S (F# $lBP*(1)cpIaI>|C/?I {ѵbKuQCJŪi9M\ȶI$@qH p>2]jk "²s=WC7ZA##dQ%KVܩPM +Dv*eHGX#ϴioP1n@qIE'85z9on޼V4hMmx…:e[(MgzsXYzIK %fͲoVF֭X1cƘb#^XxTj޼k] @v;XoVR<*]DJOSVIƔ\dsl(Nt? @r`~q:5 ܠM_`e2 A\䶅{r(;(T믡K+(Eёςy2qĐ3ˇ~ecǎn ur 7ؗ7teV]+zr[r!C{`׫W/(͚5өp`Q$@$5늷MϐMKJZa[kVHzpv}[IkWUoP[]G7H-Ԓhp^jڌea(zfWy@ê97nE-\{ai;wx:mv1i2a kc=yzJo̙ ;4Ϸ#x" v(\c.p`X~ $֎>`FfX۴i#p_iAĠ܆6WBdg Ve<3 zg9{ XHG ~$Me-׻w=)Q:D$@B p<$'B{0WNxbmMľ\(P^* `/&M[9: Mx¥X?@#g w{]MXa6E$@ID p=L.HHH ڷG!S/)#~,֯?u`)^B\T;Q'!gG @a%@>yHHH n XۯJ`[XR SN-j%ޖʲwxVIH\@$@$@$/K X:W$=-iY?2n:_[ѣ)$@$@ 0Vf"   |'`:(GHgH൙+3N. $cD22kH 5*s$@$@$@Mw{ jnCpIX;9> *q(8   F IF6ҭ?ZI`y?;% D#@8ўK$@$@$+T>zS [H APNi $_JE2gQKUgNHHH 9 XIW*cҝ`$@$ASך7oz9 lٲ9n_ |MٳnС2hРl }a^z6G)"EJ*YgǬ[nvX?J5qjy6NZl?>˳1 @Ƥ"*QAg $@$P#:$;wqgem~6ky@Lo+VرcYf P]f2k,_}1﷿#ŊiHrK m7j>N|^#Ur @"O-œ˔)#k׎P+sqJJ*4n83u*o\|GұcGYr/^\ߋZj%k׮r9/ (ύ/YW<'֗W*^UX[7۽C1{{ @(ZO>L:ܹs%aDr;x`y't/֭oYfΜׂ/ڽ{ܹ)$@$@AV,n2+IEJ0 &:zx*RQ3fwxJr$@$+)++ 0]`X ~HH Q.Z\Rǿ(rÒXR)̑{{KEGI,! $%@8I,[\s|>}믿HH >|#=[K>oF*_I-"%ծic%}赺ƻERR]f>Y@$@ J. kO'|"7nի' 46mH.]\ˋ/z!%KG-wqRZ5B&۲eV:sα?ە6m*W֣u yY~lڴINN:I6l(}:*'{cKb2j7jH7o])~޻{7|c5;e͚5:,,Xa=X"2\)ҽ{wmQu{7[:m欢뮻N+뭷j%5S%uj{L+P~G)Yu]woΝeٙ5l0/sSo|#)߿v-(J%Ԅ rr#Rt5J"AYx QVj.|Pƙꭷ퐪 .gqy@B.Q1S$c(XHH PNZ^{5'2etMBݹs7p@ V~QW^޺u,\P[/L} (VH&3cGrVPA[/+"[`xuc 'n_%p#?ɩ(J/b(_BCuMF^.,4H ePv\X{- ӧOV`?VҧO :3+F摗`] x|w1 @b(u`_&*}ymtex&C׹$gHwP|L ?I @xc{JK.Ku6f ѣͥV\틠(hF *Ҋ.X5epve9b >˗A^L/\B 3<#ƍ ;Ea7A`0#]]8 ܎# PZ/v&kkIpmC[sM W)SGE.(`w}'j=HZnK@ˎ \4/̏k|BIA(×B$8*?VE=ly{sS/3I *)gcP֌H4 `xfNɂH$kds2E:"tǎ ֈjʑ/J2nQ9Z~o7 MX22}H$@@ +r6aEHyP5M 2 )#n8yΝ/H.]Vȹt>rƛ|'ڵkg 2Dc+ 6m D@E^p2uT9uߞ={Z\' #޺ SizTw}IcxϿRCZ%wu xtOYb6QvD$@qD p=x#UXofW>Gn✌6k^ 2D+tUS?cM&zPWbR(/"GwzH[ˆKƍeұcG !{ё߉-ZhhΝ!s7-bʔ)J  omybV'GQ5v-O.+ @lO4F"E=zɹwaA̩eL3ΐyInݴ9yd9ܳa1{MuK/ψ ʕ+ rSNp" l͚5zt9Y˗@օ4HO?f~]w >df=\\gXPdɒT^ k)'H3}.U~#}XH$@B.$lʕ^xAj׮m+F,+VU\R.B73S/]4S]Oº;tP)Z=Ddž(P6׭['-[:p-<ׯK0Feg*Iòl2_T~a{TQNv$@$[U%exۮ>>8S<%B^c& Q[ɱ"/ `/)"4ςHb^eӦM:H\+TWCŴ_m|֭P,=ؘϯZjb{|˖-֪UKBB=x\y啺 ^5*;YHd#Vh=/s.͟8 )*q`8- !@8qgJF?_))e(簾,)L! N.Ѕ _>2nHy3cI ]J$'CIHHERՂѱyaXv˾HH PNɓ $Oj諒K(WK4n%SJ)w:r5I6& "4HÒ @0OOƋXղ\{-޳/0o:A$@ @~&-_V(%^-i"96hqb%SLKpx*T.ysp HTIq$@$@$@II ioS59V>O|joqkN8 G!k @#  Hf5HƳcZ2{xA<5늯W  +2#    {~e_ &ɸA۾ *% @0*DxM$@$@$@yD nuk._Ւޣߜ~ $*D   $gDf~7Hy?{% $ =I   &d )DSSzޙcq H4Tqa 姟~bŊIڵ\ra۰HH@`|S~:OOHH@ tÇsTTIU&uԑ:Kw./˲BV=\Ud`̞=[Zn-EZj9#M6c=V9֭l޼95ҬN9唈uSO=e_yLÅ+T$@$@JڿWH.|Iƃ%Ӗ|Ñ @|ܹӥ$O>Dyiذ 6L.첸 ֓|{ٲe{9sȋ/(]wL2ERSSCߵkfC̓`Ce:\Y  (PSFܾ fJƘR䩥3>G% 8$|Q@nܸq^aBo>b Y~\~Z~饗ejNj5jw}j;ՑTpyO>YjԨ!Pn* vڴi͝;' |Q<t7/+|:H(g}Z+--M֬Y#{ޫ*ӖF׆,(#G߿~*T(ɨ7k%xڵ7Ux$  #sA<5X6?<%Ly~NQL5H .R4o\yl:u|U[o{|'P/*7 E, ks$_ 9TIK繖H @i{<y衇d…WXl"'xbQG'ڸqO\^=iРVԺt]oF+spF =khc3")#P,p>3uo߾RdI&MI7^_~Y/䨣$nnm#߻wz}ّ;S>s.$g駟 *UJ\Ɇ di&ﵥ |*ϼ7m6/lj*ѣGKߖ˗G}Sn]AlD+_| -[yO>]f͚%xV{׮]*]0K^ ?e'iZR$*5"U7nxcN}K ?}V>o @#:QWgd#^6kn\mC֟7ouK._C77nK)!)Q[J* iDY5k 梔K)ŖJ'(-S{sLY<",(K 0M}TʊI'hyJW铬y[ha)E*dWl!R]ۣ?m RTmULLEY~Gq}WZw6M2}Yzcup_x'NyO1<[_y,k^9 ÇG $@M ~jU:tf O6E3y =͵+v:|YYv߰JH2?o VZc-\p+Vhs V} a1]dرC[:O=TYv.{2x`?^Pzs: +)rݱcG&Y?нKu/lXa :(]x ]jmElXPa8:N0Anp݅,[=LtD* ucͥKv ŷ~Jò )֌TL)|M޲eʵ^+'p~`gg`+*J9!vA`7ԑ& &Q,~g=S/i<X"KU`|xkՓg+y%M' *jHXN$@Mj֝[ 3}XGQ?9,<[1BEde'7 w<~\@DF )oTPY_[{voTrXG V= IH DMr[{(zNYtDpыX 9sSQo +nn˂O0˯Q~*@ Dp6}T5EYwKYҔR] =/EYh(f< ~ɁP XoTr4\!xP c!'OQvP'l 3^ g(.F; 5Ozl~PE:#TII_-~>XH"^L;lw (h΃'=FJ*f]\rZȣr'#XՌ"\gũp:XN{W`r8{ Yٷ &B r=Q5 Mغr-PBhW :{O3`A]/!WTɵ. , b`r8#NE>޿ced*^0/LY^xy=%R1rҭđ'*ݪt75 x] Id}b%$@ =J^(s-/# 7rJU1]G`O^g7UyᤤfH #*1~g^FUsB&1r7Sډ*p*bzqF+Dvp oBBټ(ªC촲G6l|͑d9?:o\C u/8YCU˷{78H xWbUb+jPaO Sh/-Yص HHp`>g(0Hsd)UTb.u0*cCz"7i:F)rQ9^A2:B 'Wv-v*]k׮ug ֭['|Nn?*GCuG<':W\qEEv șa |2f4$ *W=RX!u%,c9Z( @oYeRYuGK3[[{N-)d|Ӿ|m}wg}^ @a#@8O9_J }p`?+3\F:wlN]W_}. >N%Y&1ct*g9uر2љ }17dB6d ).&Z2KqzHQNvYfak܌a:'x"l7SNEߞ={DdlC$@NV=B%rua(t:{#wJ{Jc/.qW> *TcaD;[n a G["5 24G5 閺mJ AoQ=z]eiӦҵkW} muSR`Ν.R+EJdpa 7kqk@[} %p%dv1_(ALDq`%ޟ,+mk0/6FSNj/uq1r{LXn$@$)ZL|]n%gk6K쳂`.PkF&MgN wд"^B3J7,PU`e޼y2j(Alw /P&OqT>jGf c(pg sS9{Zx |7~a 8 ^& H;XHQq3pӒ"BH$M%ILIu ٣\#*rAnY@)KxDB06PHH]z)%xvs+jr[Hͼ# @bYBQC@eB,E'ZA7|S+s8T5kط(\_\ +]zu)cOIX~X$@CS>P'_XJK7Is $@8Z,l,"t(A. C8T5# 7I o:rIX%XN?OM =W.H ďcK#,_]G>U 0#,Bw,JC$PX Q6ydOͺ:}*yB $ *$s(4ݻҲeKnp'FZΧLbH ;+ 2%2xHRYryKRrUJ0HH]DeFOvܩ#6C5J/ `/J$O?ݹP"cB߱`d'$@ID(s/OT}eEk%m\=قH !F.=Ԓ%xaٶmV+US"xCkV}ˊm~xvO#H-I8s޽{;`K@߱XL$PXXJ_[!ρ#ܚu{tiJ-_[<%uUuT)$@$@9'@8ؒHHH&`eKWſdXaZB:4wx$ !!86#   hX%E3%1>}/_5A.o(#okgL yA$@$L p0^ @~Noh'}_e1,}QҮh$T, @ P626    &=Zg+gơȝ>Z9HH zTgŚ$@$@$@$In:UT rP)bݓlB$@ܹj   <"Wncy-.ޕIy\H~سg_^yٲeǰHH AT2FߜD2%_`$@$'KyO6M;8_F[on>*W,{Q5kfO?oFn6P-[VN?t9s夓NbŊ)">l(ëC@IDATcǎ׀dz^+iͳ˞yLe  "`+\')"Mq9 $*tSL;w(7޽{v_W_}5ޒ%KO$[nrꩧʣ>*v2 6ȍ7ި?KXؿ'/I6:^tEN8% #%漨q#o\ۤ+G-f`ſ?ЕxH /*ʡz?_@XWlѢEuhݠs6mtpc!Qa-|&cVbSqeH$@$X+^9OT{\?4b]Oc)f ӵ\X@$@] 7 s#\p{b m޼]'Iҥ,X@>bŊv-˖-W_}=[.LG|v|UVrg SlRO9:^~\B;R6mڴI k)Wc?s߾}娣s (׽A EсȆ _pĉf4x\m&u#vNLlz̙W\!m۶ۯZJ2zh)_۲|r?<֭+5A7nl @w#7+^BR'n\|%s}+WfgknБI @!$@>Z;l G З\rb WaXXaNJfnW^yV!t}( -,nsεb]E)7n뮻< G;^>̚5K+eD؆J <"nǵ^+֭3PR'O,xG2e2Չt eS 6S^L 0\SvwO?-Pԝ~<2n8;yN$@!XQM%XU;$zj{ґߗ֦u"H|m:Fr (t›w .8` Bf.W]u<|L>Eu>Up%N3P ?Dr6r'Ө" ]ȕ EgϞA`H^̩w۾tblk>3lV{Gya /XP~{3tPWTI#[ozhG$PHXU_]E U|IL׆9_xcaZuB$@$-YN j[Xh9 k kOam4H]tsFXϑ (i^"'L xu3u|ԨQrYg|ʰ"B .PMeXg+ePxٲeulS)##CE~l /6c 9a#3m (؋GCjA?/Ǵ}轹ussǩ3|sνRY%%*BHB*iAE mV*(B6eiAJQBνsϙ9=w=3ge$<EVcaGHa}d]v 1 @?WICEE葽ٸ@>ܦU9$b]~^죂~t?IH@.|rv$4"9-Umܟj\]1Fl=x@3օDXFPW.vwfSގpψ5p07x#\׸ڐ-⎍b޽;kp @rB}F"鬟ΓЅ %S)JTUF.‡B.ND$@E-EAۀ"a,{G[i .b[.[(MHfyl%@hܟqd 6bW͹/S@&pO~svA²N;M[fP#iUŊ]8xHllF`q_f&ִ `d0aH5mٯ# "Ve|ԩ\r^^"p `KRp3/7M}N kJ<`O5[ ".= HfTҽk[,j'M3l4 2#׮g2+9ElX`ɆU ܖG-+Vp\:_ane5!`yP.&琠ɞX?p:s9H xQ$w͵k6UI,VGyD&kO fc:u{S9K'cG! "Mٙ}R(i(֞%F"%.mţlٹtXYuX @fA@Q0J+W.7F>S<ߑ:tЊ&[&+tݳ՞4ڻu({駟XUOnxG J ܽ8A,5ň"I$X<> dƌzoVREP38X`3މpk$ڂ;6kQHH0H936op_3Bgo }I$@$@ P΃r@`Μ9uV=23{)U_7}H4vE[1j#611Ȣis)k׮8ƁfkXƢkc(Tbϟ/ .z)nڨA BSOc?&N(:u͵< TsR,Of>2@ϕzpI{u\=PRn)^[(: Ϟz zHdxڿ~b Aψ{}r٪Uc:uXN/^,~kB)GH* O>4usP!PP7.\D i&?%/_x-0‡#NXC)51`bܟ ǐÇk>;1F = &nKrOA*o*3愡y5"mtSϑ (T$&ڲP~b^y啂ھGguvaH8e1zX=ɰk2õI&rXe)Uq˽z҉,X+̙3Qc f'9~xT?쳂c"åS(v2dvZe.d6flOJk})Hƍ=,&k޽{u$' :ܽ^Hz:;ՅxԨQ!@)dx@8aUnP^*nw}pTv+|wYPQ|4 ($@$P ~BY);\lqVE׈Iˈ؁H-x9q6˰Al4@6ٜa<]Z¹jժ@i!L+V 4dm{'Xu]٬Û6mҖW)y> %SN@q6׃CB|/J&YhwAY%7@I+ vzKrWQR~͗$@$P xKUǥ@!sN믿WOp6D,֭['p1H,vGD5=@yGY%JRd +0 wuQF;)|6l92_Ë /׋[yRe$OY(J$@@t 1 .".6ĸ %[TQ$@$@$@$oSb])/uXֈd.'PE {$ d @8r h˖-F̘1C\P֭[ ,q.~rA"3Sz #za :7xƍҩS'YbE)Ν+xy嗥gϞڃG!wuW47r2(\}ղuV)w%`o5\#=g DK s̝"v\^JoF @#@=[o ł@zz\uU7{/XYs* Q~5k&^xT^]+9sKr-|' aE]XVfwߕ;wʡCx <80.7ún,Pvj׮-?CyJK/${і񔔔\&({ư]N$@p{iGy۷OKmQ |xq#\ɣp0Cꫯ EIUҽ{w=ObYa7xv2߁J.]Zj٦ڶm{asFA'Р|Ir=e]co\,,F/pqvzgo&OժUef8$@$311E"ŊypHv;Wz4 i   5 (P j{ڢkZVR̛7OƌQҥ_(ƒyꩧj JرC&Nw1dS~"kp~MS`s_{2dGʔ)c;<=ǹ)"v?,O=>x7`s>Nc JھY΍zX JS|1iʊ[?]+cs^w $@$'Ïtpq-Q+Y4bܟvآ:L2((1]6w"ld0Wp6y%h t4ݻ=@B$@pvΏ`ӠM6k?َ}D:  $!@8It}lĕ*UƊp*;lP6 x6jH[Q'X-Z't N:r9R&JKʗ/n)kU{nn֐[l]`5-X_~rg c=Ȗ ["wqZ#IXm'L! xy$uXI}pr侕ObZ2.og> l{;[HH &֣ !4:7A;YX/ҀbW\C>߾}rX\TQk6X~+7߬3A 6믿ʉ'(_>ebvtO?TƍՋ/%cip 0\Q&xj(J… 87mTFF0ˮ0p I}Ql#r/^\>:s4Y;$C.M$@N?-v:8iJ,*5ڲ1+FTYg[F;"p+HJzH-I XԘL>=lg qrE#ki_ԢE^xA[n[.7o\'j 7)yF5}nݺaܶmۀ %0(}dÂxqЄ[ a2*#3PE+O?72FX/XB$Z3vA Sӊڵku~t=p"7>{%=9H :)8'_ t9Y sՃӴxJ)+5blm;K $*Ica CblfD;.(̨3I{92ɰ pABxV(7p4l\W^y%0lRAPBɆvW7?Ϛ5K[5zfLĤBynXq.` }:\tAŇ?<c5>,xٓJի\qM4ѥc+7m./7xCx\4nlذ!WK @k"*֢be\SRnӪ>>X)ź\p{qN?+ b>l$ $$@$|2$w qs6l\] |:B_ M.d-EŮGa;S+p+n׵ҌXaU W_ZFkB52`m51o=bvNõ.zWpVi `G2|؀87όXi{ jB/:zJ%$m%9taCT҆%UQ9d$@$PD\Ddn@(P>kټysGH̄8U &X׬Y}裏v+.~@sc=֭I[tM#,.bM#:/Y9/k &)39_"_few"i @*!Hx‰\`7h }a7\$HT֨Q#Ґ@{8ɥ nĞɜKZLC)y5c|8ėD_#Fn96{5fU4l$IKI$³Fm^(pKTZ50%2p@K࿁V$o $ @XG%hJ5u2ԧ Z-D\{T- @(^g(F1B]e]kgMvb>t萎)E\i͌ l("mwŅ[qɨ[7h df\ LLh7pM${#H0X'[%3WsC$@@r*\-a߷[Y%gSA)& PhkĈ’$Sv7hXdMhܟq1XqъQ+gSJ8xHedԨQ-]Ab(ZFઌð#[t$[UaE*dFr38#Td]$C q AXPh >2H?W_uUEnp-9XCJVE&6~ 5\O2H vWFjQO:5ٷ)$@$dly? g* zpEsU2GI=S>!.)Ux@$@$`e_ np9[ -C.?~-ġ#KM@?cӠ<رcu,dv('MVgLZ;wt ڼyYf(HL,P飭h2dH.pClu]cu3;i)-aZјgϞZQB$87n\w /L! x \sGCC?..UTR? n2' {q8ʓ$@$@1&n=b6m*7|ݻW[xmBDUHt;ٺu똯eRm\5`" GA{ァ"Yr;4j>:9v*34am}{0> (g| U`6<zxtIz lCB#Nk3AXdXn3~# zСݺkxg_l;wm= J{ |?8Y6[83WIQWlnHz}H$b}Xm̻&\ia{u#VX@`F3b#Qj(P \a ^zO1p‹xe(vpoK)լYSW e'R W믿^B|0{l8n\^q($hQ;)S8]Z6APQ?8Zٷo_HWd)}"5,$} ?܇IH {H9{2Wb-I1>$@$Iz߼0nИq)Sۥ`D<ܹsF +x\(99(PPTRz:OXq^(p2 ݺu)`"nz…alpI0C\d0Pre[C6jX`W\)gukD7 ٜݒu|oxG$||Sһ48*iMIT[N=xHH FTc$@$@$@$FڵC2n.#-laK+olcٛHH *p GIF6Г$@$@ny   *IAdӺ(GmIAlSHHb'@8vfA$@$@$@͒E8%:]]ڑ \],'' E pz\ @!"`|1:-v ly{]^H 9*tTZ5v]we8@ڿW|=)"p @"@`=|]͑G)k>}z ox-+VuvgyF/iiiN11b\s5c-Z$W]u|.kO )ђ%ERMu>+3S[1IR-#K;$ at>"6l;wމ zڴi駟 y']v\tE(p}\,?rr ((#~0rJ!i) U4hۭĿRe\EY;Ƹa $)*InJ xA#4|w~W\qEl/bʖ-+g}v @ "N7oV;h'X$F'E뭟gS2.o]>ED\; @bd+e*<洲˿_pײVHr$@$hVd'+ȑ#u߯Zڵk)u!Ѹ?]ֻC1۷( HkԩSuo&Ja+W{S_)6:ոڶnZ.BmC6>HM:eNƘ>@dɒzY[ο;w{Luh]kx)_~aPD `u6XQZ ($@$ Kƨ=EDY%%?<ꋧx X*C _z6'.vꫯCձn'|7N+,RtV6ΜYg%^y啀 [nžEe|Z l%In_eݹԩ+믿^v-O< IQoCA1cw .|PV(;v\#-0z3'Pye(8ݑb$}d\vu k6 aR  Zn W\XG!FFRJi7^xA[hG",#.m>sinHve//fϞP`2kDVHkvz\ykDw7,!OE"m!qYFOXWvt&#s9ǭW\n]z:Hzy%s1bMN?EqSgv#ކ1RxOj$@$PT\Td 0\!o^?3T)2e3ԛ9g9@):uh"+bp!foc{&e7>s"Vɵk׊JeoLj-uDݷyVUXscí2|9͡ uae`ۻxN…q.x׌XxU@ \''%aE/e}^qx?YM,Uֽ-$@$@`ܼysnO=T 2c{=7|PJQθ9~7gl@IDAT~!Ν;_(b*"y=%oĤX'Ʌڌ {o$(U6,_\GCYq8g\29j׮n*f F,@QscΡ$a]ü{>]cxx{b>UYQH򞀿qے7׶c^SVv6 0@#/XV?d%ָJ&[=Z[5C%)?P ή* nPa[dAXkԨqDwċC fXPa-K.z5E裏B;KY;x$矢\\$xwB$@nK}Tǣ*"{ByWʚcKV MB$@$$u+AdTpq5 qF#U8jFPH@(peYlH>ee nIN lpFbҁq(KA"&##F 4]eX;uH}ۦ-0 \!pK7 06nܨc$2KrHx ]Fh; #+5ۻ#HnPH=9+sRn)^f,FlsG,1DWv jۭw>8FVh#<ٳt #/,Sj@v␎aN$q {,s00K&|HO?i85jTE=pv|04ޱX0*pm41HAbj= @%̞@U({yb%$傞:pq_V^Ӥxq H2Tz5 ܠ}=E4ת^z8nM N`dΨ-Z71D{fZj%P!EZ7gPP^'VI}e,Ʊ- #ލv+;\ ;^" P^~!Ybf]J:v ~m<& ')v:zΗ)ZCe|vIo_EүhU%i帏zyHzqݭqF2#X̠$GNF "ǏuuqXgΜ)\rIkӊs{RJG}T/e 1p6l >\AߛoY?ƌ N4IPf޼yڢ eڕW^c1Vć~ iEȸqtL5^ɴ'bOhK; e Y/@I!#Ip2)2k<{E\CI̙ݦ (fHFcDnMkzرTxL$@NRTfO|NqHkJ~QDG~nnl' 0 % Czb7I(K2]z饎.],(R@fj,07nRƖR9eѳ0.u5z0֧J9Zl}hX%TlۜTqρq@% SJ9O}+-d͸OU9p]O^z%ٳgL:URRRryHHH k6M|0R\m/X|?6*B$@$*qan#F:_*+W3PnJ[o]3ǏopOIE!oO<17K$PxJ`t(: s\}FJ!R{;ZZ7i`wjl! GD_XuoU%O~aϐ=,}+}O;c $P ԪUKQHH XoƤQhI{zHFN{tx[:goc!Ŀ[XxbO @>` p.kb?/䒰ʯ} =3Ll'7HHH @dߞWUVݴO*z4˲Ŀ7HH <Zu2{l=cX}{9up~gdŲd)S]v.]:dyɛoϏ5J _r@9'(K7M6:f"@Xhl\sԬYtkap#KAҬY3СC9>Xu2e_tb~In3`s=C և~(~رCg ^)"8~_7lPǕÃi}sNAnA˱˗kWMʀSOe" b/[L/95<MepByW4ݻwr͜9S~WYFwqGB$@ p$ ^;BOլĞrſ~d\"r~L! HI0J4#8I&ڕf)wo;w|+t|/Z}Q,*[_gOt4>ᮇ6UkHH z!'ZϟxV[F&ig-'pZJgEV /PPI)S"k)Ȱq k{ァK}r8΁s Q tYÍ.YV ^XB`aJ[/b7?K95cZh!;vss d؆VEX,I`uNsz[nX|`$BS4#D,3fj6֢E/%wZ?jwժUoFoOX:$JtB?>PJ+Ж_R|e`m;v 4q)kAC瘫|QItmfwB$@vTIUwd>1D_/)rZ<5 h^!rqẰHH@2{FK;ZosOâg,z5jreC)[1Oz9sXJBe%\T7Qvݔr8/p~0z@,ۛq8 0vc=bU ukWX ׮]kÖRuօ w" 0\-eR}|٬K)RTS`EDXI\Xm:Ю2[CKHgJ1mܸ1OYܽu e{s8C}} gD pf BMbIx+eGn~TV gl~[7+㩡Vs,/ן:#DgL~PsIH 8տ(شiS`p?|m Np^Lt۶mgBZl7Ò K֭[e֬YJSxY#J4,Nӧ~Z`E%HĔF#=\wuq%JߊRu,,bgD}hٳg87; ݮ];L`ŇZ /h+}(x}< ӶryVaGY.āOX~OkM}ɐ!CYM?5ʃ44HwQG){C>\'C|7'1Űٲe~a-\ eG wK?p=Bڼ,MJen^U9G-d,  PYP4m`'4RLs:d,c7FuwPXAP^J(iXSr ÌwCq6CǽDVp 7R8 W5nXO^B_N(fP B K.:K QͥCPU^@-e+V,NnHWs9qn[yݺuu/å:H\իa>9<VP!0rS s(yN m7sBp(PkR A\)`~;)Wr۩_Mp9͹[gʶ\T`(CP^ P)({~H)P(L祀u$MSi ITlirmcQ*XV+W w p6|>*VZ2Lʄo=c&q< 3qm{?pP$OkSM]V}u\\P& ( ˉڤ%pND8 4ZA!PdM7$`rkĴ-p/Py䑨Z'lnP̣X*U[oÍ˩^]ǮPA4bggkxY2?$gx?pv-{8>FQH&Oͺy{cvsx$Et j$@$PP΅&@>䓘+⇤E,A1-zj֔1 0Wx5׸.ɺTђ%K4(0*VR2LĮ8ъ<^#~yuM$$vL1b]MtN$܂=[1Hw{ݢnqO$@x`ϖpݢnt,ϐ D$@8";@EJ2"2ZdEm\l85ܔ 7S$B Ap5` 0> P?s}.Zo.ý8ec5 CPw9?5^uZ;\(X# |羝'J/_IrE[~+,;]X,ڡ%yxL$@$L|gsB /POigy&п{}nFT}`pB} b'*?̝;  Esܭ6kQm62Z' s^bE ,F,z҂R=9 >Pꫯ\_$27Hb%m~R=*7{K)_IR2U)$7$@$@P(fZ5fa5Eٝh`5r7|ߣ܌I~?s 0g6;I'vKi7{d6bz*\W8q>n ;A!oG ӡLB5kkpF>ٳg 1TN .6Dl "%gۏu|*7TM%r@Ie{mx4ߧ3?{Ja)1 @ +(Fz)SZ'rܸq2`@/_PIPN!l޼>k׮ 4AVFH5|p]zi,ۯoԿ/ PM\7=؝UV2wM*}ձPaÆ XAo|Pr8X#0:j -1S.7oެKZ+<ۧc{#M6rׇ1cI&Ivd޼y>a~„ z,B hiԨQ&v|\;cI.G$P Ux7˔CJKzkw\~:=G]@;߫OFJ!aH$@$`瓣V@#I@{.jBtdѣ5rrPM &j _uUSK.D+'P!0DaWB4,|wyފ+bE^sȟ+]N`gkkxvK.3f8fKY C7bc|@1%.x$sܓ @UT s6I,-iww4Ǒ GjFҷqFٰa`UO(A^uAL3.]D;w5 ~;|GG=>#6tenݺRF mf|Q-7ڶm=|X|݃ ~<  t^ »g 4R#B$P4 XKmEvȻT6^W߬ ywa^H¡q!p ] mM9F .8%s~99 *y0_¸,#O>qp;E|k\; Mۤx;!9,s>>]RIHb#@x%]owmbXHH<1Jڋ_o#{]%R%!vH폋JDL9HHlha(c9&$j"0HHGNeXfU"yZ=[J7C$@Q8 HٓxYl۩S'Gp23*2\+sA7H 1ljwb@|OsZD$3#=uuGv!cF  sEzu=LUQg# DvEb_%߫]=uOSH%œ*}"JTT# SBHHHHHH }8MkAD%(UkJ]{AO*/HH P* @!#ߗߌEm҉,ۺ*McIHrLIr uߐ7ؕ 8I5gH;[V$ MTs.&  (,eW2QD&L~MN2o/?OشHH <*HHH I X{wIƀ᛹FA% :*   (l1XKZ/R)$@$@K p$@$@$@\ n{wKƭ]w{]W" $$@8 zazHVUVMի'M4Ν;СCeͅv}>lذPwnԨ,YRj֬):uW_}Up_ʡCdĉҧOi֬*UJ7n,]v|gQMҡCUuQұcGヒjv"H>g3Ʒm7uyE H"KI/oeԨQ10(PC ի46:ϟ?_n۷?ul"=zy湎 eڴiZ1v/.Yĵۥ^*(Q±ƍb Ty嗥gϞ>}\~zȰadȑ g_ DںIһ59?V:rt;% @%:Eۂ]`۳gڵKmۦ8 O=Ν;WZnmRg͚%_|q[Weddhu+{c=V[N*˖-ٳg9眣:ɢE .۳ԩ-ʰ2i$ٿ̘1C  ?|4w^F7>|W2sLѫW/H@ 5Wg^,ЇB$@$@Ǎ 7 ڷ~AV^-[nXƎ+K+hʕ߹p sjKQ~:,_drUWi;܍lB﮻r\=ܞ裏ʚ5kd̘1rʸq|x? Y|>߽{wRs7xcHٲe0M6$@GڸNMƽgwOFQ+Wo"ggMqog @Ǎ 2X $?S@YrY\ 2_ڠDNO:\w wrw^`p'_|]&믿ʺuO>=H.WEa*JKFm}Sf*=5_Ǟ"@5Gg @ό= !nV¥ЁR !6ah$y +V QYft\C *YۡC ]3)D4h| ۷ϥ<8rrJydт=ja}fnM ?/hj׮]h'G}n DI&!2 ~Aac9~嗺땓Onif0< =F3OF9|x,ֆPZo "5]^dV.ć=1H` ,Z @J 5X233E V?֍a/)I"4,*Cztpm۶Pbᮋu >պuwuHV_Xᒌ}ݪU+ #]we+‚ڵ%rS7UyH nϧ~^^VX!p3&O!(F|%ϝ)9_;bV3yBDR|-6M:ASHH%@]-M Eѡ!;X'X~9!&L`X<X#nN8AGXƋXa6MxPZCqE)DF0,Xo֐.p.p6H߰n>\|ImpܵkVqt^tFѤ!X:/*҅B$5Ua ̝!*WE;ə6Noġˆ E! p`w8rB@alr̺l㮌1۴ivh䭅3(X vc(sn/ + xu \)hF"n%NUpƳۭ[7m6lKYlTXfM^/7e-rÜRLč(sX_}6BrθgvQŻԿeWcV 8x<%"MQ@r[g}6l>XoR~޷zVz/7\`,s_ZN}9uT2Up)6o$.}/ ܽfܩS'm| q|0&hjC9s K/bQ$@m =s{p)tHVh귘h) 0HH=ǒ#9gc=B?xnpׅ/Uc" pFEi%{.jժnߑ&>{o Јd=gjHC6T qq 4VM`3X܃mbQ9\;(PSz9%""M"<)NwԦPIgh {ǒ#1_rVVU *"J@P U\~7{^uNL!ԡo}\ÍOU(U޷ܱcGyW}'o=Buˮ >A_XpBs:W7xg6kX \ѯpU)+w*S)@$]8w;ẈRn "bbؓH*E9. NPJ!Ĕ 0VDF]X= %]yM&1!r;’L! p@x-98 8'P9K.ĜMڐ )y"1&2UXn|M/?e&%(}?ڽD:04FۛW!g3s?p,9ynN夓N 0;Sٍ;qiذap5Ios\[ʁrɸqwd#OToE#G687," H@~Y%@x [i[- ;[ֻxbyM'Ξ=[> XggKX[u:xy~ԨQҠAu߼!(1iԨ9)aNʫbg}fW;مXmn)1^Z9xee GwyǴi(P)$@$@.O&Z $"O"N81HXI M7d+]rsn/Q>Ɉ\;nܸGX)۵ki)hp=h//BskT{Gv ,wŶDܳgO/\ÝLP#S0EncͧLx9~_~!mX@$Px[\-rdzu =1 G {,9R>@*XZTE ٳ`Qt!v.{It4sܹ/lRPe$4<>tM-[,(k88V‘n5 SOIu>\/YǏs=W͛PGС3F#F5(z p3B`Gu w!s3mEsڵkug,7iD,X4mT=Xp&'__H} / =X[n<I!ڷPר'>S{/0w) 9z] ޓx4` @ŋBދq}d)eޣRP-F[)ϖ&mTp1RQ6X/\e C}ĖJ-PsU|H;ܫRFsżsJA)%:>1>U'{. "^(ŞWW` zvXnj߾}|r c5`?0b}V)S&iRxP|ԩ#˗Oh.mqu@Dij5kJٲecg;x#nC ɳ 7rQ"6o'&r M$@Şb  d PN @zye/_}f'OLIHH t1{]   dt!>%' ^pd>>o؍H!Y ے @]U2Ǽ-RhW!1|x2K?>G$ !@8 HHHHgK_. v$dw  P o$%s"Z$gHi9#֬_IHdHHH %o?zLϖO$sO}x+R#|@IDAT|; * 3~#ڴNdNQ>"P\,5S T<oskuXRsT2Q=GUHH P.g 'ob}H qf"ez0(.+/$@$@."LE$@$@$3CZ2E*nwsbɸcx_8A$@$P@sr   T6o^WIS~hX*ٽZIv.9$@$@iL p?.HHH 9NM ;kj$ajYD$@$SHHH&ɾr-+nIEHH }PNg D }O{}{]10*t%rYF" HT)5dgg˪Udh"ټys1#% H%kZɾZ}&PkǶ" H+V.fϞ=ꫯe*De˖/\  5k, ؝ >\~c:lwyG^yDQvm[SN Yw^y'O?_~E6m$իWq7ls "@,xȿ[n֯wHC/ܜHH &TcFx뮓#_iӦ_/>dff&3-;wʆ dɒ!}w޽|ah|>3'~1B9䐐1P] sŋ(;vc ^PH[/daL_8W|*W0HH PNgRV4d:tmӶm[9餓jժ{nYrk믿 &Ȏ;dԩv3*U u[?2 O[j%?/_VR}woՊkNN=Zm&&Mm?֬YA=aÆҮ];X`~`1/]?}tgw RG? 3)p~  *d\!EnFz]Q|ڊswܡ඼.&O-a8k,+wYH-{G8u<Ϝ9STq6KEv9_ҴiSk~eƌr5 ?k/HΣ}b{UbEhi2KZmT8vr{D,);oڱHH  0V.6۫W/~᪊_4rҭ[7y><^ھI&M7ds)N8Q~ڲ~vwh۷O>#]=T~Qq1؊6gϞHϞn~@2GL9E=x{)1yd>:U+ۼ]>">< 3.3w}:M=䓱tc4'?K֭ƐJ{87Ȯ]tG}:9}]:8y4i"N5kf+p n?~k1݄֒qQ…9c$rĿ`dSJoO)YJ2OmEo-Xma% @Ƚ/E孷w7xA.3ϔUF$W)SȒ%Kt_D>OdM6!l.^[(8B֭\'袋ɧ~:"H?3ƌ$xfHVVVf,'($E^iҒcx[F)ߓQne]fA4[+VHzR W5 f*UJvaRs՛ 1, S9D$Q:gߍXk$Y/>סPo{tH}U.9א=ݎ?HH҇-/`&"E *SnݺU[D,L~Ft`EDƍE`D0^u\_U+؏ KS^/X1 Lܧo2 ;NBݵkjK=,p#F2h \EN8!i!gqFJ.S$9RG<¾b#pyF5}ݦG BJcyԕ{|%ϝ)9_;}K%چqQ"{oPy7A[s_XSp{^ 3.v3@2l;5V~ދk(}ʺ)˗/w}Wo4@PVdJ Y(אzH۷o0A22l0A_w+nyp!}J\2eg͛7k@.GyDz(@e(he`<:✬q|!C"E/0'2epI`^ X¹U#2u~ 'Pjj}_5 XPsgϡaJֈ?3-mvcz_$@$@iB p< 47:(PwCIĘNcbzYg C< v%]~ 0@)X/Wn٢ܠ'ۤٳgv"2c͈ KrW6$uľd(J71'ƽ v])#Z4, kx q%xp $pI!^W|[ dߝw4k׎Dc  gI9t&?̍ ܹs"裏Fy46Pt9D5uիWקºj$}<¢ e8Zm(^yiRG(q4hWRΰv"Kpxj_=h&%ƍ / @ ) =좕_ gX$ K$@$@.%:TH ј&ɤJ 7'}-ԣ,D8F]5)yQ8tN!;*( ͎;jsTFp>zӦMZ/8Ídɒ!B?s pokbo Z-`=e2,8ק/W@!O*yQϙ&^ϡw-RK%Nb(ⰞDl   |%@8_qɰT -^X~7ta2K 7ZTdpźE4e#RX/,|[DK!eJ %J؁MX^r KF<#H (s E|. |XO9Z nm۶cɏHyg̘ 0> krD֮ZjO~M>[2>*74M ooPl ۀ$@$@N{yџyM~y'B֩SGGE!ǾO1/SDm׮V{tjՌ ٝ<:ٱ;]zᲝ zS$#P?| \z2/es?pW.ČG BHSk_K|&:uRQK=f2Jk˼u[SIXA$@$ZƱ={VZ]5x( A_'Bڡeˆ LWc!4JqA~‹}yIvv`@ ϶jz=&#HMtm(ex  ~by$( ߥz֔ޏhϋ%pnȨ u]CMG  4!@ pcߚq%SLyJ$@$ * cl >+SNh+ .σO F]^Pp{\~}|(M uQ2h yu7 hs 9,PeO>yuy0aq41kGSO=5ZS֑ 90]ɝU*7gzAKS| Ӿr,^ IOky]pIHҀ4xEq 9X  )h \qgϞv5&M8T}?(۷@Sw삐X/,Fgڵ2i e#g϶^AYEh)bnZњ㕮]]Z ~8= pٿk9 ^7_R@`[գTdi vsd\Wd)yfd߮<32aCH1 HH 3(+53g=>.]3>/TFh G5J[~>c[#%_}g2a*i:'XE(+PVGiH?裹Gk;Lsxի''OPzSmI&9DC9寿ҁ"=pw={a~a t4¬#AS`Chb)WkT #+ bmZ'}K%dt_<%oLj֎u$@$@@@K!PX;_ 1} ,r_ &w9焌YkQnR-厫˔%B_#Ǐ۪78䨔<'Ro f[~)s^ 9ԋ{H'JڴicpQ.¹ʔi 2$0Q˕?Xfx4n8֬Ykmwvg{  9{Fz^C  k:=Z.]Eʹ\rv[~ҥK]þMXjdݖ *Ћ/9h/"nJ2XP-W%boĸ#,H+|m"$% oDwˆq i# @%k"GO)#C'&=  p r@@{}52eH5 3xdΝ|nJڶ ׋P0,z5uQz9ƍ뷲k7h;Gz:! eUOd!p4Q3dUJ9@ń]xP2'~&*5IHgIHHG)K7/c_Aw )ϒѩx A$@$6=;#  (RTt;D)YZ<*Z:$B̗ZƿE94J+j k$3ot+\ @']HHHDL>O_"[ɍR]P"'ӚRQy=%^qwO*g9'9 @9 ~֦6Vo,5H Rw ?q.$ko闏/HH"hyc$@$@$.kn;HZKOʰR޽19 !@8  (ݩ|ChzljHHF.~ϼqvv_zj)Yp R\B_ H'ؗ3G.ɲ$ghwT-^ xŊRBiذaԬY31 KG(&MՒ#/{rKjդYfҨQ#9#N:ɯT㏰+/N߿`KgxH@.7`W*'n~ ӿ1Ss>  OH+~_6lؠ?6mJi/ٸqccGk2ܾ_V*;wO?T@RNV"v{W<̰K.N? /&]ݻwFT,dC?E8Z[ݐr+91 @%@lĝ 2Dj+pyn۶tIZ)rJ_0aرCN*>/9s9wэ$T'y/U]Sth%KHHH ATc7n8Ck6qC  ˗ d[\MuZTԛͨ쉒!!G_kIH 9*1s/$##CN;4%J?W_}%ǏoV)Sxrg˝w)zhnvٗ_~)'Oe˖/"e˖O>Y s1vxNRq߾}[ n v*UUϊ$pk{1x:Rڵ5'(mڴU.\Ra䨣?P>VZ#:u Bӧvw [n5jC}Xcɒ%ꫯ tAr)I9?fupߵ|kV$P -==~oh2nG}ug|^YGQ)'HL0[?~o)R-Ghb{ֺ?\'*4s|\֦E&  PN]hGXа2X`]n8`X،5K(R:bo)VIW>C9D~m9裃-ʰc0bPGJ2 {u Vt#n+Pf7lؠٳg (RxY-Q e]fgܶs)h/2g~Qn 5aDׁаC`˓p?x((yڵKgT~G ,!tAz쯆58Ys}_Ђg=28#pJIŭZ_}{q;ZKWªNݻBX@$@$@'ŸQ"!hڴ]i&'%=I`] NՕ,P pkj"2Ӫ%6P` p1 M9 `V Wh(xFڥJ]\ {|4͛K:ut۩Sj^_~r.(Zj"B$^EPC#wTSzFnHKT>b @hN9`?a5ҬY3s+d%`#u/yea5o4 >&zㄻFDիW*2mFTRL*V @K,B{QLVNq1F <7,ʪV {~K$sLl-6rJ2CI>[JHSh>j8+] )3;NNwĹ@<z޸q>7n!1"mn)$U86Zozޟo*{TS݅'$@$@$,*?DҢ;,F*UdNc> =+Vg?nhJ2\Η,lc8,Vj8y!y^yC: uX^hF9p愗Jۤs^c}8w MSX?-ʻa,-YnpB"HOۂk L p̨R銛p'Edw"hE%`ĽV ,fڸq믿o|$ o6)(f~I0eߜ,U⻰d>3G|ߝK昷ģRٚ;5srU]<'  PNa /. #GQF:lѢ>+~H\@5a]ŦgϞE>}ثԩyw姞zJߟ)|9r5<;N(Ȉhܾ}p\)3{p|"sre4jHڵkk E'y" 3P3JN)yNb1Ǟ]\x5^#$"9YHoO&P㪋+#ֳHH!p`#i" QaItFKΫ}6ZտΥW^:ݻ1,X꜖~ZBqׯ,YDN} ۷N…:콸РA3gJ٥K9S%_ܗ^zΔxK۶m5kqRA{LG}TUs> "3wxwߵk.^8(U?brE'|+<"Z7wzGUV2aݧ F c"GV*'qsDE$@$@6ײx6X 1"VX>VREׄBY/o{A /D1F$g"P֬Y#_ *= 9q"Vx" !O^9ݚ9N4&^ZV\)[nZj;~s@mHKh@Q XdwW&rH鲒V;_$$@$@ŏy$@.2PV7O[];R2I擯nW8: @a Ṕ0H$@$@3%Ekrʤr_*)ĆIHo @TuĔU|HIZnHHH $,   &IlT\֩9m2^<?; @"LC$@$@$P x_ %xs3}әKwe6:. *E @";c%_D~^ kQ=)ux*VOH<REoHH\؞K$@$@iBZR&E7"Y{s y~Q <]F<Վ$@$@$_iC$@$@E@%gb-^-7g9n7?[ KÐ @Q'WG++l}wϱ'$3 @:fTlH$@$@ŗIvV~>Kb @PNZL$@$@H#%;U}оmD?, @PN[L$@$@Ҝ!7K)q3⎔ HH7*IHH "%nWޜ$9s{XG$@$@6R(n*l޼Y;8ZdffڐxB$@$@ōyt߶GS^ssB  OZ.]*{G!z\xRF )YԩSGƏ/i-xB OaÆf͚!u'pkҤI\u!Ӹ`6)-[{g^{5Q)L \D;X P( ̻O_H\ @$P[|jJ~gar)Ҽys9\rz2sLm?/>@YNxv?p;)Лo)W^ye<ʶ$@$ =%l]BW~?kvjSXVr.M^s_?&Z3֑ @\ kW\!w̘1r饗JΝV5XZo[ ;x Ǎ'WaiѢL:5ghc7x)$@$7qJ9wq㽒GP=UkJFqw=k$W_BNr?Y14$@$@$(bV~aOc [o%s㏲m6yG矏'*.tX@$@$P X99;#{/lߨ(/ѕ, ,#Uwuwɼ{\JS8imx6dID6  H@}YM17GS~ ;L[K/ʚkIHH(~BdTd3J2͸ sg ;U{Xon!H":}5$@$@$'bavjݺ+'X8 dcb8xhx6}I'Xtų97F%H2OTJme6m|A>%{Eg]:6WPi|wy'OySH  pHK T^_KҟW^y%ɉGoCfR,EKOuqT0.K)vڧ2WeSح{ܾ}^B*-5{5R0qD{k6.(e Zvps5X*RvY(.ͳ e4HLܭ{{a% S6mNS@/۾}{Qʛ'T?`={4 4ЁK駟9̑^[Cה8Ӟ!>֭[WڊO?ߖ-[sD9w ,ˈ~,]l;EzX}q}˿+̝;WNw,FieN{UW]%gy0{4>L# "`^C`B =ˆxMuoAC< __i^kڙ$@$@$DX(0\So֐ "7uiWU(zwm+c9{?LSy=1Bcp}Wz{ݶ J%XE:Q :^cLrΫ 9w ep'=(NA[zϤIlXY=@!B EJh8b(/a +Wʭi/^-[y3j}|פk׮Z }'Kpp+=\,pׯc]v۹d}Z~ ^!7$Pu=(BMh퍰ھEw=BMfYB$@$@ ( UXSݴ`l(q(_wq{ťV 0I"0gdɒVZ+Y~[eX$*T~@DN[XE;`|bI޽{,MuRp{a]{/nf uGíqxH+_jU./pg E #<R&T`(U٤[B^m(D `J8;X/ZrGΥ5yJ${wܙKϾ=߸oXֿ>@IDATݐ۷(RѠeϮγ=9=IH-҂EFblrD0!X^xAРhRF yt+E`״[Oj.=~:?1 e4o]FE|IƎk"gt4R¢j8 sHw…t3XDx.Kpʯ믗ڵkKKC68G}{uZ:x$L3\a/0Q`" E!  y QGer*va'p<'0h̙c7ASƹ 98X ib[f͚Ӱ.LIV.ixúq[bŨsmֈSsk3v#,CQKŽnm۶5HƒH^ X!k^1s? Hx䌠) N }~͹.Gy֦3`.%=,I+Vr2 6$h}ݨK:j.!*2<3OeE9j;f c^&Ar?{W<IFveaΒGzz@vݓ^   'bl?zgF ZpIF[ '|U899Zvue}FkNz B$ ؅ _#G] 5JalY"N`!sРA {p`\5s?ƍ!G2B`u5BS1 ԸI~@6c|#Ywء ?;T5*#Quo*JV$چuyM >>s[Ƭ$   c fUl޼;V{=;w.\1(QBf͚%P✂F'G]Er }2l N /`+Tz+K[yS}t#FGwPD 1ӧO׊63K)) o(7iKY~X e_,YRJ}a)B+uHRrtwsrZ,Q5R"vc) c,]"Q = N)n1^),!cq>cK W wn!mP<rS}v_M*rεmcq%XW_}:7dg_(OQ@>-sN  b@XZp `( ,,zMj,fm'{7+װr6mT1{,X ^z]lf!@:F)/'$ (6]<Ok  p`בr@  (z6,C)1;A$#3ֿ[$M pNrq[xN:]<l$ddoUrv@vb/ތ2=d!%/|Z8bS $@sj  ( Gwfs|($PXٳٵz6E_ 9&Rr9r[8,z{֒ *iH     Tٲsſ{MSލgHo`"[@`IHHH4-O Z#;VՓ+ƩmyK !@`sV    |$u۲e撳Wfrv%}eV߷ٵq9 @jPN WJ$@$@$@$&i jE]<@+Mn C p(,"   (,+ ,LO !yIΞS>' Hĸ @! ~{|[_Pڸa @~ RBׯ_\?cv6DD?TtqbŊs4߇pc9FN8W\z2`Y~}Rsw>}|?)$@$@$ ׾Ubhcfl];Z֑ A* 9ݻeÆ zUR8d׮]vߝ;wѳ4aÆɓwyZlWݫ$|觟~9s?.7tJJg=ŬO M M6acoԱ܇ IRO ps"NsΑNʕ+feeIǎm `)~_v!?jϞ=O?y嬳rv9 m*U`ߦ]ז%}߉+upr `3H-[t?ǓPh/K,$oY q Xᮌ6Pamٲ,\Pj׮_^͚5W_}U7_~^YO$@$@q(;đYx:Rrv.;~1G,UdoY}9sX.zM9\ (8T =g&͛]ѨL2Z![Zn-gyv޺uC>裄gRC!  TعjX[t^oRxy"~(;W/Kuٓa'/[UFB$PpsfH`۶mҹsg ҢE 4vgmR}:k,)Q?|($@$@$vJey2|ץtT,+|yrCk Rj7j#Ge֖Eʺ\Kp<%H-g<>ЫT  *PAخrU.AAHP~?3nfwgdYs,M0"[ŋVI&۽{w9餓/>coرL'p 2D^uT t"ÇK/T{VȾ}_/{{O~g_$::Z9e1by<,**^{M,Y܍7o,;v={ .0Zwƌ\322itApyoݺUի$XU-{5'|۴>Eɛo^vej(v 3<#E駟ٺ   jE({$!qiHAb^`סĒf>&JjeW@N2,%y.oݺr/@-#@=P-(?Pڬ`^PӧOWome 0ٳGe=mpao-۶md_b}iɺuѡT;m֭pn[(H2\y_~2m4IKKsk%Z-l/CĸWƜz&-^8ٹ@;}k׮5Y% i(۷o>H-S/ /Gti.kT~+lݓIHŸ@~^'Pz 9zư]( IlZ/9[_AJtbK)fXWKBCc|`N)@K$PiW{?\)zOH%Rne}F_(H/]w pyoYubh8 ,P4aYE#Sy־P7~O*}ֱO$@$Ps hX -m*Q#cRܮ'49CZᙲϨat@ pnHP:UrKC=P$| o+'xB%M^+P~*FZ [oUɟPv5dҤIrw*7X}믿s9G)P^7իC)S=.7(?^oP]dkpT7& |;ӰvAq&qJX)0#B84`|%Pf@FUFyᇪlO>QV>gaf?E{AL qI|Iu JU~饗dCoc ܷ=ǀEnΰf" )uɳiP ;555({&M 0\ŽI Q'OV/>37/fUW]gۧOz.UKPHH &R6waM+|Uwg=,~n-1=1  3A`L"W i3OXv`u*ƍ x*j裏]ۭ^Jt~rٲex\Ho Ka{@u ;3ܠės=[2, ;`DPW{I1d.Koҧu H `zw@={" ;IOO_$kYz-m׮]sNj X-,T ҦMrmXg-}"[a# vΝp! wp-p&>8 {xyѠA x͚5K#82~k E *2TUky\\\eߖ# '(R|)02?O0 ܕC!j^c D p@coZ]Wbd-˲-P,P< RDq^ꚵhQ-PB-ZK~P p(s<#msV`~=rH\s ZqgkUq?-#W2>  w{rZJގ'm"OKr\Cbd~ʶeOFD (QHvPb6Bل Yl=\B EЉ@TC$-f<>k` \ȵ.jBV ;3336pGF ʒM6RUe1ܨ-VX?{˹UZ}  #N}ߒfgIIAYx_W/G'ifaa ' @rޜ9R)mvӄҫ%%Ž[0v֩S(T*NC'-?O.S% uʯ7廢ߍ/XĂ%/ڶm}7j9poذٺM$@$@F nWBgK\>FV5 B'[H PPoڻZ`'pg1t.g[n%豞~is}(YJ{r x?-(PHHvoxYJ-XdX~/Ң>R|#_s =8 3Tqb+Hrd_1nhcq˛ :^ya5D!XOg˲ 7\ԵEGa[sn7G}$VRniժ]O@رcCr=AKƍUM`(Ng- @Nl!1ŵenf7(EF 7JeiIE p$$$H=d*j^r%^L4ɼvUը E:/l^d̙n͠ Be;O'm 0bc;vKP#7b Fi2'-^\wu2~xe…h"5 jC{s tlO$@$Z+K%FDՑn F%4gzl7ル/] P)$@A,Njuon[w>s A+zx ъ++Wa͚52qDڨQ}N8??_[$+{ꩧ:b2 Ntv 7(/Y'V- @"zu=Hlj7 Qq~"e;klC$8Zg'|.+={T I'j,SL1ɓ'{-c:°fggK޽e„ r ܳ<(w}*[5&_f^Sqq 1gb Vm1c,YmZpS F(c7hX[xSN9EsGt.|^o $@$@aM 2U}%6b~7 b{`C?M%MC3xH`w<*^zI)Bi:t.P 30,vVTݦ2= ӕxAr.k!iJoV];wXpVX(w[Wzzz¨3Lݛ%F.c  k"JhUsϕ˃>xP72{QVJv*Xk& m;曕X[1֒Ovs!l$%J~e+`tE):  In L7&_5?wS:ad]=q$P D|]5x}\Z@,,2>oݺU7oe=VWԺ|!UXޖHHHHHt= O H < PY [u${}#40IF4J-_ @XV!   6J݁AETB i=MxB$HHHHH &41ܔq{&Uqiv Il~^aG %PIPvA[nEv*[0PHHHHH #Cr̔=s^ FN%`& C${rw͇ vV|IeȑjLLL!IHHHj3WId,6RNJ 38G"$6$49M"JT\1[C.:Xb;mmǵ@M Rxƍ2tPYpOV6mXQ;sҥHBc(|BE    \ Fo4M)uR4?HlUQ6"!.../T~Q3ΐҲeKٳ%<    (-ʎK/J玕_ V%gw0IiQf9f.$@F d 0K,Q6lW_W\QeҴiSuRqe !PIv;U2~&}U#ksIO}7U '_BN?tyW^=߮#{|w%%%%ꫯ=#;vT?}%믿^(sΝ; ŀ-⯿RJlTaW_}@(iP-==]5Y~B nݺ[7$r (JFY֬Y^A_Bu9 \8ST6v4]p\|>{$""ˆrɎ;?b\2O3s޼H$@$P3e TbJeV[2kKX~ԺbQ!Tɿ~"믫9J~u=駟 ={(%/lsssK. yGNPN%'mk=ܣoٲE`y\xG}(ž?j?N;4s;$@$@$(]\>E6@s6HQ:#O 1ɝ$&nY9裕b`U~:,5jjSԩmV-?4-_6sh;8MyB .bmƁÌ3L2\RNnfP+vm=!d Ⱥ^Q9c̚x9ܛ|%Y]ꫯv;x1 &- @J K67q~-䤹踙% .*4>+iǿԘKC/$@UJ d 0Vuꩧ* b&a%HV2m}nװ/\M pKNbtWkL:K9܏a(>y 1mX0b!M6Ud(CU/UN?t#-Na 't:Dŋ2[eW^dРA ,:g'xCDwx1TS<=Rh2N۷o>W\qӧ̽z)Z悏-[L $ w^(G]w]NlpZ5Iٳ >\ P6lhJN6vXK0bdȐ!h"5 'X} {.hĈ*6^zk)l694 PfBl ܹs) %/*k\p_u\oNU|''!H׸qc?HHŸ@N2K;F 2ˮy /C!s qϤɠu@i-wzh5Mb:݅$O" B$X\J lڴ (ӻwo5 KqFr \FPͱ Ķq m[Cr/"\6gC 80,.C:e22c El5 NNɗ{N6u9mܸgm۶ %Cg^"Vj03@skk093ܮÍlcXi#IynMݶF̴xYvM{.C17YckPgXmzE|AnIHBH`g-]>Fy‹zy _ZRh;ݽv7sH < l(` I,X 'x-Xtd[[` .,ƽyfUgŊpE-ЦC-,[d&uV}pn޽4>\\K 4Hz:GمIX`iEuý_؂<ժU+C7o\eF+c=&Ҭ8F&d$r*`-xg5>"c'_s֖\xŠY[ץ`=K&OܑȔ9|wp; T?%;p-?3y່k|b}K ץUN! H>P5 FPтn*h2^ qR9.lO$P#?_'?2q I;w,]vU=\E۩huT~ U,$J@F'b+`Wdc֚eF +֭[~u jΚu(#$;=zhe1~WPʉ P3۳+W]u9<+X/ ΩL2EYy;[; A6 /0.j@0`E m5 ]gVWTT AC#~h opK(1IH?>v}Xb$?G)ZkiYj~rniqf؃HR LFo]M?FY*5ܯ2U4(p{U`YA*'$,!7)ܑaE#X$NvՠANtďn `Ai׋kZ%oYsenpE|,bU^M[Y֌g]VQ[I&ke-ÔwbakzP3ZczۇRmYF;0@L*M.HUO>Q1.J"IF `_7<@32@d+8`(.02Y ^ ( cmYrRC9`\;wsuGyvOh'(\)x`PsHHeGȎE~)~Z˰>װ|ًHDƏf}I(G2:XnP*@HĉU]d"> Yg惶#[HO!2J ܹ܇R"s9bOx9'<$iLۈ{dԩ^xA.\=qblpKT/VċhxP^ʬvUs}s8O}_u  !]$P*SJ}ߒfgI5z‹p}fh8q[6$51˵>> 1%k`5ҢݟRDI8.ӧOW%^pV![U*$1Zh ,{JC QsָV ?we((m_%#K/U/R>seY~1okɸj2 EЉ` 2dÕJV.qYeVC޳zgj4>cv.`~v.zkuKׯ-ZkW[=G ޞ[ T?Qđs[Fv}?0/&v9" @,` bb/`_U<# ܌_ IJA;a) Zq172#;F2B`ԛ];w*kXouio-e:T\ae{8j B+p!~%Q Ġc/=rY8pSA+ aopox̙`e$aZ/9-  I C1r[F4:~c^dX~/Ңn-}x2M!k!Q{-pDwz k2!V(>,6 J%\^{HEHE Z?ӣG[o 8#כ塇c2[b2*xqЈ Xa!YAg"(pwbm/z6XWZnAry,Wpۇ 3^@Y}p 0ክxP/sw oxI% /5CImI|ÁR^v/8_\PNgH$ !QsС/ʽޫ2M:=KBɰt*(X`ӱְyS~Jl-xႋ\(iLj7V/6y f獹Mr(MZydjbݡ(;w-Q 1({c-;rKNJ.V2_))Ϲ9<*2soz b`<x9d|x$|vz֗BvmxHH | -1ɝ(k$#HjGԹfC/G%kĭvmjӦlG$PB c.:!@IDAT]Q?zI9D1*hu/͚I7(Vъ aښeo1>oXF!Hz;m43Wn} 7q$Ub]>-8u~8q:ٔ'8_o߾*Iڥ\-]A.^pAgٵkW/W rm@]4K mŋX=ǏSe]=U2'X{_yGV%0`m*jQUHCEB.Mcp/Pm\PඌZ` qT쵾 w#AZ!mBo`IH@#k⬵yV[Wq"$C$!GȖ2_a ɼ*cP\m{KEe*."vk1\˴12f6^0Q9GP\{yPHXk Yn1 Ȼ{q p5Xn ed6~Ff_5ve(îƍЅun{x@ %ߜ'/TCu{ qxTa%5=Ãkxgg}ylXY%5U / :ers4fF92) @yMWgoyEH B 'u{23Zz*ښx (GSXՐ0d.|(wY1*zkG"Xw   墰v,ֆ+C 4cn\p}túTFYU bӭ/W.Zt\>=!cƌQאMxyj2Ȝ]q"wHH–@|%*_tR{IXܛ7%(h\WSSSU\D)F'2'bXn:c~zUsSN* 8Vl۶Me;/\5j4uAR.dJv 9qߧOU !PxA0PHH*|YDĤHA?Cu K$!юP%F ? C0?r7)yL/Ƨ8={Oy`K"W1HeZ֭Sʯ<& |1dg|QFᏨ4o@'hE[ T$KCVm$Zt"6B ڝkc^  {E9hPH[_78>$@!Yb߿_rK$@!'ЫW/\VA#s9ӯ:?HH7ȘditqlHW8i:x1Hz C9gΜI&PB 1Ff@m$k׮ :\:I T[ђm49iĤ:ii<[N,WP&AH*D $ 0bF&6ydU۴Bdg pHQs1{^QH>Sٰa:oRa% <qJS~ޕʵe8knOr͍HG $I0dAMOOiӦ,PQ>Il|H3PUJjbd1F`{TUYҝHH*J9[\>EYH$<)<.3|DTI$ H|ӌx$P DFvQFڭqqq%#FP~"Η7N @y  D'i$:AU"HUP"\LJ{M,qF; <!QQ7ߴ4P Ơ @E퐬Iw$סJ2$wFd3"q\In{a6g @ 822B5`A6%%F"HHHH*@iA9Ò?"O@rR^)ZO=HE $ pÆ U]&qHHHHH)sd.NlWw8FR)$@ՓSUY 8r )oQ*kIIA#VWɒ @F']ڹ_d׼ G ,]v_Uhr$@$@$@$@UB`wK+Ykeςr?ބH xB}veϞ=RXX(n/))|m6] xd{tH2W_dK88 @T[dRTTsE`֭ҧO5]wu㏻wO >Z(>9sX@n~e38z?))IepoҤ_?|֭/ {W^y<ӶmN=ZfΜ.s9ꫯ5+se\ /R6;w~IY+WtҔm*HK.e,zH$IOO-[Bo?/2eBKya?Fmj^;VdXoHӦMU3Nɵ qO=iwHH†@%"F$Fy;$}5rpTJP)y( {? nxހ$@UF $.P|!Hr):tPbv*PXA#[/Gq8o-˗/WJ-ֶkNٳr+sk(OV2 lNlR2W XúuT<+y e:x9j*͵lذA+kܮ!v٠KL6vX2?|C EIttZb+NX[{rSƍsZo$@$@G7K;F 2ˮy Wbm$wgd\I:^r̐]no4H&1uZwPx`dHTu  Gzh9qX=`]2ŗ(4(8j8޽n-4Cs7o}(Ԟ 0h$۸q[M6)O>QE((LP|mAEf Bd()ע]Ǟ[X5k&۷oBqv{I׸_; EuZ,X@h$\8q V,Ҋ;N$,(H UFT4}X&Xg&uܻnyf9];OX؄HH m7Jy/cBA.w s3$2&h[MSrw|\ a#$nݺҺuk5nE̞>Z)uGJ#B Pj'͂ */\`ӵ]Q_|QFQ)Xt J#k0aEYBaCUNSE&t(fȀn@AG)˵{!4ck1P[7jdXD.b ^S 5!xQ;︽5ʩ [}׮]}5wt ]>mmw4H!Ά!9 TJ`9[󺖈dkp(qfsJƲ[_q qŜB$p=񈳄3~x 72$P.>*]ގjΝ;+e;onаjB98رCf͚CS~qPtr| Ptc(nnP ɢGX5\+b}`GlSmAg^Gf`\A0ƫa3}IH<b7HL3FJDŦI~RlXlKdoxa9\Y.$@I d 0\:(O?5`X \zz)))2j(}m-$^(p+0ܕ% 1O7zk;$__^:vOnu6\ͩ}Z6h@ {K-Y #<_} `dOvP.SOk!& T^^ 8(x6t_cुg"$r*Q9"J{ @Hnw J 茥79C ZҫW/J(#HQ /8kЉp Ɏ z*qVR@| D$ꫯ&8D_/| ܗM_7n(^hTD_edsP1z.p52e3kN Yl[1cƨ1=52h~nv٬{`׽xH@iVzxj)02?OWi]|lriÈ$MَHTƏ_XroV7WFM6 F(`a_ExJ$|  VLn0Vnspk bԫV J-Z]ۭP$C.k nX{Cɇr) q$V_ds. pWp$CJ/^՝Vb=DZ:Ğs.1\+[Fܸ5vn^(NE'4wҌmH@H`.Y`M(>$+0TZݠe mE9 (iv[Xn@:(guiD-_Jyzz951yҲd˖-L5k'"P iEܲ`Cq D ƚ fN4^& '}=ԩS6zqPx < ;/ @x 4ʯ \J+|(=(pFY(NAESuWC=$cǎՇeVԛnZ?jA=8h$&I(@a{77cwm=v)9XRux#gysΜ9fl1b^zn͡dGB>lxX|Jf7E;nNK\p2}vxA@umX"W]%Ո]/܆5-H*DW:.%愺Me] 0>TAC{B &B}[6,hzآ<$`]E0?b eH"QU=84SpkR.X_1WX5U'pױol$@$@Շ@BS{~0'ͳغLu;kޟ;$@M $ 0\ 9UVo1ፇ ḘV<@ "]!^eox⃤MՊf.]{,XӥK".%.-ӧOWY-,:IfΜi(/@1.b{/w F,2>p5]7N5jdZOݳgO_S 5(C6tMf ?~(AOwޑ~)7,x  GʎoХ%CM$taI eq>c͆!/P/}Y K$KaAւS(>ct+zꩪ ,Bc K(jxVW_}vHk-(P~ccco=D .:ȕ)P'Md[X gR;[cwn f  G &;*YxaNn?J͛ @U{ru)N(;+^|N"U+dֵk+6"۶mS`!k4,N}kAN:܈v|gيHH P~=8 8:44W;f$@a@ $.HsBS')* 7t6on5UVc34O @!sgK{;E9Rovq5@H\W5Ok4HHHH DDDJ%ØN,6492'>j{ʲ%pd    ~}4?S"cӂ$Bb(sp OÑ T@`d؅$CKDW,fѭٝHHHHHl~4;OIj3Њ\Dlc^)hw'#!F&ڛoY-%K222cLMMUZ|q@|($@$@$@$@$(R R8;&"Z)mKB㓝cK &MQӛ?!^'   A$OJ 80KdL]huZI%$)E̗ƒ+(kgcfJSĤ%q H|A[=؈Hjѥ8GMHHHHf( y;yRxO)Vfa e7( MNǖic=m5[C!B7lPnZ{r$@$@$@$@@̼Ig_ )ػ@}=QIFqKdTN$PK , V-e H cr#nd;dWGIw `~ HHHHXq$):GPP[2~&{^(%F/H[ipHHHHR?eϊ3%   jOUR ?]4g@J e{s8gN$P PK$   p!oŝNtU5 .8}*-,G$PC R ae@>}].kذa2iҤϰz?sL=z o h!ҪU+}"""$&&F$--Mڷo/]vs9kD?uʚ5NjIH&9G7R%K*X5IҺ>T%MIƒxr{ݻwkYYYW:\sss˵@ŋߖ={/]tOEX?w(  C^ \$ZbW"9hX}{^![}Jǎτx Yfѣ3]d1 eҥ}Gr7K/d_XFM! a}&-.n%{Nίd1strGie(Kd<繓}ID'e'@m @6փ[O$PPE,HƄ-[vکTX'wرce*rI'IƍOĶk޼y8p@6o,#F&uQ* -oKJJ7ߔo]`mӦ㏗믿^}Y3nN/snv2@? ,u֙z13F2s$z媫Rq/W~OjOʥ^*]v [nSHH*@~<ŦzRL̵Os+ImSǙ;|+Z+>Ȩz5AсRRz$@]kɃ ,--U C=$EEEnK^~Rx{9yWwB邲g;%uaL\R 9rwyJ ֍W^-E&-^{>?j7m4+{:tnk׮5e{e /P!pj3fȦM$55Uz= ٤m&999iVFԋwyGm[nm 4غuy;PysϕӧK&MHH xJsbj7bia[qﱻl$Q#bR뱩=[xqs}h(Jb$CA61vt'4#> @\uy 2嗇FW^J c*|򉤧+7](^zԧ}뭷ˑk)SJ,d>򜘘eCN8"Iwj*ywuŒ{I ssnkxʢ=a9e|ǎJն~pB,se)''xЯXBfϞ-۷oexٲen- @ٜIqzJjB3TW[-9>ŹǤOn k1`[4(cyR +ÕYfe X!pӽ[%99Y+ۤN~mVB '@lRAȀ WiOyJΝ;\(pᶓ@f? ly!&M;SS_+6P-Z$˼MFFxx2/;y(h?zhc`]v0o|*[zo*;G$PWHy E'cTQGƦzl'iVD]3)-m'“$@JJ-oF`u"pUhy7Nn+"~r뮻ܬ1gԩSC 1;=Kܗ 3@] >vwPMusC;1+#&Sn6ۋksqS!F*|ZZr8g^ K!C|O$@&[>242<#tW$m'Z5dvrl[j >>W\ wjSڥKunǾ)D`}ʯg$qǓ'Ovl7b`}ӹ#Tװf-֡mK kp)dRN`0a>SHHBA 0oQɠo%&Η+r$ZJNmD@e _ ruX"ܑa'))`pMױuIqFA&;Ah',xϪ79_랾U5{! wyՃ[!@v qþjeG2vJ=,HVi7ʼ/E$@(2BM2:!U>&FV%}ѕ7%y<"%uϣg_kúL!}׾g+F 7E߄v{%33ӼvE19;wko→PAVc(M1By.Zנ["+HO9^8KISP)6D'w(S 8%Oޟ'" +sl[ ZD p-z5uHwߩ!uhEΝk*(c=u-3EkխL0>:K,Q3{)R?)**Rτ.: @| pd;yod>گ{R瓒ٻZpش^|s:_7uVi HpkҬٓ-[WF .bn#ڨQ#֊2Dj-N#Fٛlٲż/ 0vj޼>-,밞#bzFltR&ϛ @ &PerH0ZbV+Oc'\*FpraJh*?Z#8Q-kU+ns$@ Ղ\ӗlZ^|E҇e 1^5iRA8xbs_P(^0: CuugyF7m_eB6ԁK9~[M4ɼ~! .Ė27h/>YQw%wlOx\RjJƲQ 渞;%9yL$PK\KtM^f߾}K/>@3F^z%kn(ewV,;wlc?P ^y啂 Z' me :j7tkȑٵ+cSN5]QhX終x  .ѡZ.{_--/?_"Q S(ۨD`(nۍ>q @ &@?ڴ4(=gϖ\yWeGc9F$kժU*wUXj +J]w%Pl ّ+ ,^{M )ZVK;2p뺻 7P%=K.Qu̯gϞSOZM6Ud2eYnj* u @\6+oC' mk$@5pkP믿^KO?)jE!(} 9#F￯2<#+1bdiܹ֬Tt颬P`^tM xD6l(F/qN9eСCU7$"~wjNe  H1H50@q(N$PS0 PIHHHI(Sr},;gKA)-:u7܄gIIdl׶@$@NPvBmHHHH*D8wdyJ7)|Gc3%Pٷ|<İ:g# $$XDxL$@$@$@$49jl]ֿX-3CyQ?aqu)$@$(*c{    G7ȮU ۨP~\v~? ^9 `+ @Ab5x)<<(yRt//c J W4@$@$@$@$PdgLpUq=Z#?z^1 l'IHHHC(kYxW1\tfx_ u׺G @h 1UCn8Krz^1 솃ѣI&YfgϞpI6m1Z^HH!@WMD MTQԫkł" b Ҥ[Y'niy9{坷rJ( GC#+Wݻ=#ֹv7|o^ʗ//5jԐ/\Ǝ+.ʒ?Xz-jReժU.F$@$@8edzH*g6=9 @i$sK[&pCtX~~{ケʜ=@ۻwo&Kݻ;<DŽŋ+e_|Qʕ+ $&M$ٶ6Pz<(ޓVos!+dƍ^&O,ÇU  HeF:{Ww$mTF0$@F9s[ _~鱹K@r5Ȇ WTIY6m*)))zj6mdffĉ̙3gYn'_Յ]w%m۶|={@>| 2DVX![3Ϧ̀ZjȬY{XϞ=+P)$@$@#pv"9} l,Aѭ$|&i%=ass̖bO$@eo`LNNE)7h(s sU$'''.)p1k=ra}ʔ)J!7.>c6ƛ7o۷*u=}|f͚_ݰ[n2uTݚB$@$Pp2.|%NۆUR*]#Yv:uJeFgyF)ÎZ.ȶG[^pj?a}E+\tEG$,UZ}?0(`L>[.HH9So̔rbrjVE^즞\fLizg.xVꩋ^ ws[򖳄H\ dž2⚜v8::Ix̘1Jq o]) ,ȬΏ@*X!A`Ȓ jE>22RnV5ߛo)J K6,<:A{A6f >"I'٬4Ν;qQԽ?`1ׂ   d S6Os1}-%B1F&-&(4H 0 =>AqW^y TAW\9G3f1HѠA5sB"(Ky^z[o \zoeeՊ$,p"_ȼ*\j s1Xg<Á1@.b岍^dc3f5b{xX' 6XEi_g| S 5'cG+ɖ9Sxdptc8(_huƳ@D]jXVuꫪ0Z͇#~uQڸqc TgXq@K.m6+"xb,#'֑6qK.^ʼg۱=6PɢElU=z[?Oɓ'C1pq6[^!A\' pFjqak5bR=Vnāb4?1qEa^dlȑ'*UI9 XH>_N(DlDֻK0\z:9 jθY+# PpBnP4,Z`uǎ yՓO>鬹B_}nK7dNyE2*=Tuԑ lV8'0SO?)ܶnݺw)w{O)ST3mǃ+68*?qЕx.H=8QHH Er#^3&!:b$b TPoNys簎$@e]] \!, $WD+h$Fpu3Oh}CWVMz˫ 7mX;Sb]Gf (Y:?8ܦ|򎚱HH F"~NZ*+g-sHl;5`~gpRggO HV'@(2#1i7hXcudWݟ($k厮\Af m<}?k,UFiXjX{s˖kK0VnԸp߼y j(ƇZ:YxlT-HH[VOt½‰Rْ*G c#ܪ<|ÁZVc׎&t8+HJ%*rS$7h(f7h}05  A|/\): P&qqA>P`JHX'v6Slںk+;msӦM .棎t{}5o^J$@$&=g?(~ATja[ BWl$:n&wj?IJ@wŕfzСyQ akʊ+/TwŬ=q0Aծ][^{5&N>SBEl믿.K/qreVK&);J~HH /rn[XP+{O:MH\ϥb/l9.B8tD 1; fTKnO=PGec㏠H#~$ײ|\;%##CU=cML$@$&&#'S}&u|0yT9c=9s 9rpN=9Œvry\;mJ 2K~e7^ @9C,)bJnݪ 6@(scSRR² /H6mT($t?~L>]-dF' $T dp./B=i}*A]a+uu:Q03XÍzܸqJɅNn:u쑶֪UK&Ng~[ejp `o̘16 2,Ÿg  L $58(Go?g&|>DB+vc! `=  \kqwݟu5jٳnSnK.UJf1Offn,|&Au!33AXd |Af&P\Ν KYpW(>`Z7mEeu|Z8dâlgH]8ˤm^IHi9^R-0Tq !%$@%]K}O@AcfĜhѢի n{5Z" 7M6W\QytGP#n 1+pFܭv\bIAhVdk/O*~u$EFFzeVO1Pa=E0Q .p EtXX>W`ۨQ#rgm\ ;vngO:ó9˳c=bt~>$@$@(Wc2GI&Bwz 0&G.ХrG$@$@$@$PpoH%?TWAIJ*%5q$@$@$@$PVD^R«ê^%Uq{{t\F$P P.;$   "#T;}!,!qj!H%ê\ ZؙHl` p|5 /ߒ 9dq|XUg1|Ĵɷ= 3Ta @)"CNyD?@a *D[Y n%OZ"IMS$'HPD} j& ((*%~$@$@$@$P"Ɇ6w.YnKX^RHVVpe&a'O HH{*$   RB j9yI=[;#@g9 g6ȑ%i']pƹMrta/9MHHUT]%v$@$@$@$P_TW24GN$BN)99HHQPrG$@$@$@@ɥrl5"٩^YE B۷>'  M`MW   (2|jI{>[_ӏ P:bN@ؼyǫ_jĉuku]wOj X^=5~Ν ־}{UרQ#'G^IH{/' 4mTT"ǎÇˌ3\O˳g_|UW]u8~ɓy G.K.]R> :$J?XOmdaxC[WH 2H p|r%p 7HHHZ+dΝn->;myw믿:|5>}Zus+ۓ @"pnDɺԕW$A_#IXUbi/rvcOB؀HT\_/7Wb;p@۲@Y^tj8ݞ={c+ ɁHHlr:7RT I\R]N*u)=K%x kcvqI>4ޑ PTI!`vvG2emZA˦ oHH8'86wqx܅vOs$8Z=L GKlv=r?&O$@$a<@9 @^N:gٱc\R:tt؜ p``zgee ׭['[nU_4lPZn-{@cƌSNIxxL0Ha'$!!A:v(v ֗_~)˖-˗ ߦMjĈk=`X'$))I?)$@$PV?K[ $]6,$*]zF5\w0VE / TwHվ_~*Jl"r_yJ$S u~2m4Bі ' 8ͻO>Cy-pGB0Xq]zr̿֎TT}=HH,H=6qא̔qnv'8Ka6ɻ%oVR mP#tکZ{|  O). S6D Ya @Y!SIn7, .gṇ*$(F90!sV\6Sg p/jMH%PF 姟~RgΛ7O`J` oTUj`+_dk{=Z#p} @A d$Bu#'HwKӜ?2G)ȑJVa/P naHNǂB$@"@[d9. YAZH8V,ÇD(kf͚2j(y={kbF-`<tZcǎxmH6Il>3OՉ`iTrPՑ:n('WܜKgs'  *ɡHUXQN8!}y-W\)3bo<(V]vIF,B0˞o裏:\ܽDY  ;9vyL;؈+tC#淗mдHF۳D! o- Iً ](f͒Çu→2d[nzP|y0:fV[eo͏Վg*kr[u\1&'_s l1@TQA,%J  un#%$b9|{X 8 hT5 ^IEWǬ ^G:Q+m!&vڵ*{2b}Cd{EQm5Fa<1HHJh/ QVL]wU? @Fr99 i+M0>+Tiu5Ca PYK ЬY3DNHOdm֢EkV;_~Y6nhVEX###n   uq'$RO5LʡlʯysߒOIX뤎-HSHH[ݤTd9D@X #Atap>ctԲPESB #9 x\}u|_%8sɩٿ8֨ys_a?l kiT_W  ª]PKViQ#JETYYLOaU4Sޒ x@9 x… ԩ .f$ZbmY^zIk[1ܮ=!E=yɞڣ,# N 4qNo],ɮN3^TJxqO 7팤=c狨 YA$@$@؍|IK.Ҹqc5%3g{uzUf^~|Edh֒o u-Eڧ<,# N|Q[boK% 7]Ŵ/͟Qg'P,,9EJxl-H0؊ HG$ڴB\#""]-.ӏ=R  uQ/^,|̙3'XH )iͻrW*p=E! D -rvkr mLN-#;PF62?:cK Y7nzV ' |@qLS%$$1bt]5=s挌5JwlJdJűKPrj*5+s8kS[ꫯ#IC=$?7$@$PVHl=](WHfq^>oh冋_$ {T)(TjiѢtA?:+ ^hhÇUV|| vZ֭\ve͡CTCoz~e2f6'NV[a VH7cBwdnNJ$PR@%$;w]vIll@j׬YStlU;Ge_}-SرcsԔ$@$Pl dg&{ֹ"p{ 8AW$@ec* nZAQoի[HrR{ &QiNA$/@˂w$@$@$@$P K $(w9I\)QIH`; |$   L 0Mk\ 5$|)WcW$@$`gtXG$@$@$@e`Ta\BxDֻG^Tp-&0$@$`#` ސ JV$HmKR] 4C$Tk}؊HD rX   ( |QI=^R/̤%q$,W$!e `_\$@$@$@$Pdg&IډJ2wHvQqI!qX^tE ,WG"pq_[ê]r$@eW   ȇ@NN?<[NĢDžjXQ*.1c# {朑HHH%ș;^_viIU'1-1m@$mmHHH9rR~w\9<_ɲ3 *E @H=Hp1\n/].Yi'<;6G# \@pF$@$@$@%@ʡ N?嵭\*G%)6& W Pvۑ @)"p|9a<گw#qa >8 8#@֑ hgYh\RN򞅣DIĝ; Ϟ%a LA$P`T }M`ԨQoUZU?2Ο?/uԱ5o:HLLT\Yw.s[e`w7K|RF eر8YYYK޽VZj=Zʥ1̍?sK$44T֭+=z;J\\DGGe۶mn' 2C ';P~o4N7J}v8 IH@1D?Jřm&~i%{r*s_ː!Cr5Ydt5WYi}ؽ{Rrϟprˋ/(ʕl. 1i$ζlx?W]ue= :$W\qlܸѲM``L  g%3gtK/?ljj\s5aJ*)+pӦM%%%EV^-ӦML8q9sF>3ˍ=JqDeHHu]Ҷm[9w̞=[`>|X}lXbn:8hۯ_?6 jժ!fXsaa>{R b* Vdծ][q׮]7(/,ϟ|TO>]SHHJOPtFvC"]''(^w drr4.sU۔_CٍͅR.ǎ)S(JY/_.&LPEp^t4idȑK/OuyQMJX ͵RTlT|Tb|P1_/1-Nj_@U[YҞOl! _+ҜǣWGX\ܳgOesOiidRCjqAY&O3sKY ,zU,xgII,֖_sc-5RP^`icϮw!oҍmHHH;DriKt' '.#Q$ 9fdg&J%sϚ3y$NJ (*ǮEG **JxQ:X r;k ,wykN*V(La…*> iۧna0VVGB٦MY/2ߊقaf͚X]gcUY8qB6wX,pҧO}kyEvhȑ#G#Sp Gj$m SHH48|A ؋ޒSmmX{H%nS(p"d2ܠ]?y@  70 XlZ .%Aorh2 KmJ(߲e_]vmf'OTq Y˦Mlnwʆ %X֭[߮|뭷6ڽ{Ro_C)IrEɜ9sTO+wrXT*> ֟llR7-[ E^ ;G_+!!!O|HJ˜nP|kHfA#w_i18*kݒz7 |Ƕ35ŚB\{ ZEzc<8ƙhgXql~h"e)/cƌ?PYn[3 !FgKV~ua] )BT035W+}dÂͳj`{IXW^VE\ FfٹszD \ > sA>9WA` ( :+$ $!Gu+}3/| o_%!SfSg.Hf~= x-^G EqW^ynЕ+W3ܣ qK(y8ꫯ #%XEVgFV7oԫWO`KZDu."awij]>V-nHl~<Á18 9n/b岍X\Fb*H`"khen{k|f9Z \q\76G9 @#u|SO.y3Tg <dGֻG+YUMx*svfsvhWc *1ܠP g"4\P0CiO}2ɰ pM'%-OX!=#dY^lZ+ϰ޽[G*U8ݓюCБ XK=.yR uffّG)k7AZ?.> 6=bիec~n+p֙p~cK/dƶXu}[gH*'ӌG6lD5~T||`I;R+HD[$H XN,&Iod / P%mpݠVa(j kd~x^}d`+f=&v-ƠW$۳NJ@ɄK8ء~I)uUGD?2eL[J 2K||nVg{K {s ,uIvuW1m%qV-c;_8;$GyD7{Z|zͿ]? 3 x]Ac[ ,yРA$sսVQ$CpщL6[W˫ 7mX)XԩSm1uב jժ(Y:*#5f10mn{ (20䊅Z"67kNen{|72]#VLZL0VnԸp-߼y 3\J'ssx(X!ȴ"XfgϞrw5;ۓ @I V2ήR.~rd1ÁaUVެBbڙyO$@^'@9/ Z8bk,̏^7HWkyuBF\0ܤkϞ=N-ع:K.U9s܃HJ+XmXrNKɲk@X #Atqʯq],HE."q}Jgƪ9q.Dg:th3|U?EGG 6bd%_ԑ@`g Yٳjb ծ][^{5&Npn1<(p{wuI͚5rJ۽[&g8;X V8.]w-{Xq VaW_@ϹKViQ]% ,Ьu*࿞W*ޒ PZKp?8pRI jlѩӅPhau&,\(wzڵkQ4x: U$ɺիgaƍUf(pɆ2qrɮuֶ_vouVns)σum7d\YQI8*s_㜴s=W (^+ A$:fM[*R^d$푄s8UDֱHE r\Yx }Hdo5oa/"3ȦMܼm۶-Y#Gos&M[nQmQVl&\ZWZAVf}uq>CpSO==j([+|0HCF-?kُwy cݬ>\p~3Y l~뭷v٪9HHT(A'7rlF\ 7]Ŵ/͟ȆC9d{yFVJsIH' Hqp30#Tg6lӲe˖*Fߤ$矗Zl!QH3FtL,,]vu{.VLnc>(pMpƹ8~swή8H W;bClNԅ# p7nRr>n:u쑶֪UK&NhO߼* 5e|UnPGOa}-Ȱk oBG6kdxO?*eYs_|E#w1{ (Ix$|xfӳ3I;\(A6;q.14_g$ٳ0N!H+{+- HETgu?~ N4I%XzG?ڻ(#F J5A(jP2KHVXur- 7mEe|Ԣ)%''+ʿaN%Z?~\^yLe)cWYB (b[$uh-Ȗ^R>^ڲ x?y(+R @¦-Zh=p1F<.\1V/O>DcP 4?H#n 1+Ȝh7tAcO i5Vdk/O aAw$..rXaiƺ>GG:a}UGd!^X  (p,Qv.C*J\dnNJ$@ g  s8fpM5[}D/bXO' +qq| ez5l\]3pF+mԨDEE=O;(҇U)8 qZiөH?;V{n$@$; s?Q+ϑЊ <; @a P.,A'(@%yl`3+vB=i3V ۄ9> Sھ+=FHnQ*eN$**b;   (bZz\=)O]$!-]Ҳ%OIi]^I*bXhBؽ.HHH'(QH(o)?=$糲,7# eTiY}LݹW pϪj pQP$@$@$@$@$@$P HJZ/s.* _ 12CKiWBd'&$ME$@$@$@$@$@%gwK-kuOBm_g*>HHHHHHx0y[<:IJ=Er25P.2HHHHH$@IDAT4#woe^]К ra >rޫ8 #2,'     2@GXJ~;|'ݝ$C/>< `3 ޓ@1% ֭ Ȏ;$##"   (i&*鲷9g[霘 ϑfJ|||SL͂p{쎧޴i 8$e(2[Iת&BӓT=IըQ#IJJ\-[.| ͛[CaŊ֕ݻ˚5kB?Lܾ}\s5֭[K>}N:j퓵k̙3˼ysz(^IHHHH) gvebFaءRS fO;tҮ];U_~}믿-OV+ۄU󪫮m۶@}_~{o%K>jݪU^zYH$@$@$@$@fonNs>_Gj1{.w(HI#l,!x1"qHϦB]hCSAA={hB|y v'   ( ֞UԸqc=z:=bZ{1p! ,fꫯ فŲxb{wd2i$u2&]X 2 u!YF^{MyIKK]1P!o5J _p>}#fٲe`Qs0Mg`+3\k);cVе 5YAFo|xMOFlY9.8ZuY{*\mѴtRI>۾[ni3?}F:WpCJ4\RV_|֬nݺʺl+(䍧ޛ2 ymfww_#L7|o_~e{>O'd$@$@$@%s).YLѸ/UdInL_J&:;d{[Sɽ_l ̟?_2228K`+OܥwءႬL[p`,'0W庇矷aLwW1P.2 )A `Gv%q=džבYWjn @I دFAboND E#&eC ݫ N7ɞ!?K*Q23=ڸ8߿r-FҥK͢ݟ+Vk'NO[Bss Ktur,W&fmm¥d|(|VR%]U^ْ͂Q(}G3g-Z[fk@X +,eܸqcd%0 eЪ}9C5,H V|yfz<n0qWsً/ޛ|&   BvdYcM]]d_(8)4_ꕏI9icb1 ~8"4GEUq۫ śWOlP6$@1Idԝ;wӦMS-[T?5UWa:U*{,a"WP.$^*U$Z­ jwO? w߭'ޛxGV{e$@$@$@$P+X+iby/3^YI?no^dy֙Í_C !ar(VbElUGh(; 6 "vEN7k>; Z kFjb{/a Z2+v Pµپg%8xҤI#jE'Ϯ\jL-V+Ν;J{oM~GV{e$@$@$@$P\R>7`7}*A:g+.&&dXO3/׌}{~ÍOTU-Tt'!XcS'gX%YъM_VmBdرz YG[Wt(X[ʨZL#PuZ 2Ķ?qw+O7=/ߑ|ެ2   ( ֩a?sʰ[3W`g(ǐ;kF}|螺 oU`X4-TB+;;wlK/dS,m(ȳgV%HrԻwoSC; N+Snp?U8י⋶kvo 寿){xx}3mv ME@;%b޴LTߑ|ެ2   ( E/Xs=gxQ>t*z[;ׯg>uQ3YrUoih[v줼1w[ޗ Tq+H{*V%(%DA\m6lZEbWb3Ղs:s]kG]P܅fUVMߪc +g]Ǐ/:^'wE`v$ȖtmojkO#{s V @1&0E#=pX[,;&Jy] eEk7ɠ_aea(*\J'jcc s̑v… Վk׮mBeO[f-["jէW^2x`U֭[ \<,Pα6(~Z WrYEf 2|7O>Qep!xС/ںf0aZ? za!W'k3b#2|u7+kvF|YO7=([~kb= W}|T>%]{ytԝac WtW+W5W<^%3f̐{WM>]kڬY3eMG ۯ687dURna: Bׁlr~X(ż ңGo ˮnczVc!(k%xoVy׮] 7V= ~P {4:<ܙȝ֗ Gy%>#HHHJ'V-m%zFj|)T}Is!nݺzˡr, bD p1z\ @x0zs_ө}zƥ]]IZ$ lÇ/5pR    (.m!=ŧo*e݊D|)Z@j*Uȑ#2i$T B⩂x( OXAF-[-'R<c=‡O؊ ˼F`Ĉo1>l2>  ˪˟W"v!YUmBjEsQZlE8& Y?f5HHHHHK/o)4ov).OmG;דF"T˛(#;$<<\N>@ׯ\Fm dg4Lz%%BCrXs㭛cȦ h\wKi钒edrW1u o(Ag$ /~)W CuŒþ$@$@$@$@$@geCGec ٓ,Yݖ3ᖱQҭJ%pKn2B$j~.w* ×% @~O6;ʙKrf,?~J^5{ ȵkH_KC*-r$@$@$@$@$@e,l.oԬ#76lW: sOFlߖ bKP.mo!    (5g޶O9_dWa ~vt-}ŕ43f̐N>m۲y?V{zee˖I@@Ź5?(7xtAbbbrҽ{w{dݺu.*Ǐ}J:u$22Rڴi\HHHH( 3[}s5!۷!CH*Udƍٳg/ B$@$@$@ō6;]R6./ʅ3dOb,"kMLXk;vIhm*\# xӧx=z_jժQ]˗w![lq>6`5C=kXa0` <8W[)( 7l-#Gnݺɞ={䫯kV y%   "'iؑ YMoP~mMOWoJ!tr]bw_cšM2e4MK\:y^ HU 4Hׯ_"6wѣG+]VO?TsXv_TcIT;whɂ TQ57P16UV>k-$@$@$@$P,Lߵ:zW,]A*/ȥe}nx߭֨nA~2.2̰n1,OqwBqF;_$i WLԥA=@1 b iѢ[*py'UB0Wj* U+GoY fHΝ%88\m][ZM!   D.Վ22}>lqTҟʺx&bq=iU!FV8%M껽k6ʵ.L͔Bh9NOq, tq|+\ F[*zyf5klݺU 4P?"^JSN${j%ޫiQ)*l *MEQl?"`CĆA"-@B]77{[rӿ<7w̻As}\lYuolΜ9:}aٳIu%x7mRk}rÒt'7P*Ժa?a'li)$pJ{bo!QǏPB,|SՂ9rZZ`_/1 پ}Śd~0ɢPw[1H ^~eɑ#Nyl-[<1$ [\r1/>kqf9sm &Y2SW^ݓ۲ $ mwyl%y՞K7njbu9g#}v}w왜Ý,x[nQFo 4(Ote 9**J{ex5x $v=[ I#F{:W^yE7y% @@eWvME]MvGzRJJޛN5-w=vFKz|)pJyRg#ⰰ0 q欞{iӦK˗UVU‡~(C dPɆA͛'ƍ3.{a'N>H  aXFh6s`x'O6xݦ >N{JsʳKJ"V QIrH+Us}U `O 5f<1ԥ}=i۠=zt,Fsh\^x^\' !4۴iknРA ~ƍk'JVbd\c|٨s9 yUSk[t/Sl5"R0?:xBiAK}_D˝%FN 5?StL-Y2C)9µB0mOX~DFFC=>\r>Fp-+KO @6?S&!Z Bjr!T*+Ԫ"Uh.b&}ҍ!) rɖ@R\S+VhAŋcBeKv{$nP_ZdƆ0Yƚč5C!݆]^{5A1L@7|3X'RdatRAubZ|l=9ދHHH a%r>ԣC/)#yey{6vR|\kI1TI`V6|~:{Wꄫ$Yv9 T8TA⳧S(crJuՅьisHH{;D:tv͆Ş]^aO>CtI2ٽCXYR"#ۚn^HΜ9B21 ٬/_o ڵk|<Ï?()D3d…ioӦMu#dϞ:u.}tegذahOH @bULHT_gvJ _z9G `I @2bVt̙3$(ypJzu֭ԾZeԢEt|%LF:MdžE#d ʋ/ {-}1NHHH 4Z qURX Y_>tR`_P$Zh!/{}!~ o'€.:t0g7yd8SJϞ!)_L$@$@$@$@$dV!4#/W*`Th~t45nS'tޒHHHHH%OT_/zeE ʒv侂\K)SIHHHHJjBT-/9♤j\2i=Y>ppr|* W^ȴУYAok iX(mIvKK$@$@$@$@$@$ #/IrexdPaJp/s˚=s&ylIp ?+_ШKruv.eG-#[E2dWi(SIHHHH|B[ 'O+W]/׵cbR@^AU_Y%͞=%     .){W7:ȑP*=RN,f=V6qLy     TC`cֺmrrzSȃ4IHHHH- yN knΑ2x6#}H`LCSf̘K.]RCCC%888Y%>\!z)>|x# s#%'7H+9 uUREisX ܽZԩSO|W7uҥKȤI.ZK`.\H ,IHHH y^F)TfiX0˒TSHuNu4/QFi& L}iW.3z2(((?tHHHk$|ux.]") *o_کDDD)KI,Y"9sLi%   TG`Ӳ:u'r*k3rY%rgU$b:w^nzKH^nh^؄HHHHH mzwɒY>]U:(&S"{_\^.юV&gvS_#Ki|csuq횕s<;f;;$    H"\a'mWQE!NlRW-$.][w*csy2u# Tj?7w0jWWoޒVޕX:Qر&O^J5kt]vɞ={toժUg}V .kyDGGٳwBQ.^(P +[:l…=zH:uݏ>H=/}vM٦ ٰaTXQjРtٶ_Roe 6L sΕlٲI˖-_~9.`oJddԬYS^xǯ*+Wm۶IH>}nݺF7?}t;߳JL2յkW]@$@$@$6 ,>.7Υ^~;c\S_x1uc27wT *aU-C';$Tb+fMeP2yW{~xe١rUɓ2yC@}@#H8q˶.jJںuŋwTlA-ѩS˖-CǺqo7l X%K1mFngȐ!wdK   dIUoqkơzmza'k~;YNDYˣ>:YϻYfұcGߑqիWE}]ת:u>'Oyǥtw_Qmh$@$@$@$(̞[N Nw5;Y3f$Eq01yL-VXrxW$K_NzVZ2e)QD1 Zڶ}tM4P͛7O -gCBZ/9 u|l٢p55۷ eϞ]J*i8}>si޼ a}C2 !S7Ko^ȑ#G!O>6ػwL6M,_@4~Eyj0y"Q!N#  H=UNgG˫RSfJT8>ّidvebgWy͞=1ݻwСC? ib>5>`xz%SjXD *~[BADa1CW7lޣwQӄˏ?<^WmNg۴iSc-rZwcƌ1D=:E>i!3q˱cǒr 7 Z-eeтr jϱ\Y2g-^a}Vҩw쫲H's 1gGDX5nSO*V߿_'2';.!8a>!Б S!L ,=~aTܹSV^-gΜyꦽ{_lh®>1cF)YN ˵kDv>]47HHHPvșuSzXߩYI2[JV|Tf925\_J_a_KrO8 9021mӦh p {P! #$ 'ї7xCSՃ{.1 gYB<[L\y~ZC._\ aFng'Nŋp6AL$ B#  -Օ'ze˿+פZ`.y*2eC5YQ7j}:_iJ{;5?)o.P{CmL\ÂC)6 {:~m]DB&#W T sasK۠‚ ϓCBӱ IظC\j{?T"ȧG( \N99,}z&:v%}1EL׮]c¾\B(95DLg}]vfINFH)f*ʕ3.%ٻ/}l>|hC޿4fx} ^b[wz$@$@$@i@O%j u;.X!wHV^|X*VHևfsEcFo?GOH|~SR_Sby2a[sDPeod0%?hH:4p@رcu x $[lW_}UU=qW~R5%1o(p8>6/eC7SK͏-InڴI]{B ^B5{MfUQFiO1 5jO$~Xų5%K7o C 2n￱/hB/^ ే37СDg6?HHH*yrɫUnp׷'GD͡C`xXQesRSnhx 8((HMx:C0a ұ{ԕ+Wւ۱/l p޼y/!+t+D@ 3 W|K=: \7՞N WȊuO-!#H{Q5@ !`'S)SSIHH ݇Y&;TMİ*u%fRb8 ܃!i!s$@$@$@$@$@q']ŝֲʗ'xسCpѽ؞HHHHH ȝ%LUu{ JSVA7#3P%d5(&YK$@$@$@$@$5cԒoՑY$teU)T Q%ӫ#}ф G&     dOCpQi^L}@"WiAoeɋDq;iE H6ƌ#eyN6DHHH$Lw22 &+Okp!ҸP>yD1DNd s?B$@$@$@ɐ@ u8}l>!ǣ/%UJ3lTπlR[%B|YJƔ(s*IHHHH@(a{2O~'r2zh9}tݼySv%?K,8qs%ؾ'"  H懝骾oR٨{ui#2HcɑH طotAvmzҲeK)QÇehohh<`Wُ$@$@$@$ T%^-I2IC6l_OySɵ@<;C޽{(_|mv?P|IYbkv6lRb֯kҤzjժَד 9v\~$@$@$@ u\0˕Cnܺ%De%ʫٳJΝW|]XplSrݐW="@&6"O_~]x+V!gϞ-5۷˹sd2a„}/.x%% 1_I$@$@$r|ɒY>]U:(&ҥ  6 C.cהZq/vl)=h;WyI{$ _#ٕ5ʕK{?N$@$@$@)aj۹gT+MlRW-$.][wP*ss"eNFe?7w0b ߲K޼%.+6u o5Ֆǟ!GHf֬Y#&MI#9s攪U׳>+ v:7|SP{gyFΜ9#ZJV^-3f5kJW^9s9 aDRׯ0X4lP{1EٱH85}tz:x\Lk׮Rvmgݞ6Ab/d6 ~Gsr- 髯*׮] (}zǽy|g)S&L6k}?`ӦM୆{)761 @'): zJ |rM];DjXj3s۷A@_5t<_dȐ9؏?^_Pǎӂ%0_a1/nl1Ν7DEǦMs@/bM? 3q l=.]aL[V-C ${!C"֮]OګlBHcp7jmP9rhc6mz4H{qhf#ul̆@,_s6db2d~+.b\r}B ɉ':ǍgE/ņ'W^yEźAsE/n:p/GڵktxsرTƗ @hTlj)hy>W*է9n^;>>z1~_ y;¤ a=m1wG:>d8۰%KJm1'|"QQQ2k,ѣGixs6Wz0>coa\2'~wImW3bDH6\Dx[  HRn[ΓT,ZPU{an9+˝[g-^azsYgU|@ N`…rny샵$}02;5a ɞ 0x aVƥXL:޽{}˟~hY3 #7fIgovΌ0h;k35 _gX/"N;$@$@$@Mg fb}f%iP0dTםrU9O縛$ҙW]<z=V>&Loǣc}Y3":# 1 } ΰ֙Affj{ a/F^G%K!m j1wsB#!-Fh9֑7 /_@@G4Gëm?7ɽϡH"ދHHH (3{VXV7wfBq\j/, KpYhמ PsDa+B_G8cX! $U_$B%~ %|r o & o|j1g^Nc]v'N墰%1d6j0xqϟuOU!HHH!EάK XEǒ9Ý'zK8ٳa2I՜\㵘Z6Dɚ@2eYٚ'mU~{ΜyQ:ű5k{9/m^[kH6yb.co ې-Q+[7믺;ލl람Px6qXX.}n @'P%rfUJ7)߶IwrvgyA#C*m#mnͩ4v7,|NvyΞ=MA5xٶm&Vϩy2*UY1Į]2FvCbt=0xH-[4ֽǮʎ1>?f7Ž=hlk 3Z&M؛m>ƾZbەruL/^\7Wùr5jHddyHHH hT(8K:5n5*cgʕڪR {^j}yGrӦMX|ԩ1M{dmc~^S'+W6L?˞p#6\Qɓm ~iq/2j4Þx K}u-w ւzN; @$U#lGd=LTTʨz5 erzɽɬT{=?+quIYTfl$*jUi-S":|qqtK;_J؉( Dw/;rHۛDEEI>}LaٵkWmkm35;b[7T]xw_8I>3iFreǎN{ܹSPvȤ ѣwwؿ nd6ٸ/ňKn`^d?HHH4^*ή+n+dP^|X*VHևfsEH1.ݸ)-+=!JO55%,Ɂbw2{]84vI~Ǝk4h~'u,#LeO.w\ ٨5kvڂB, 0h7:_}n/x~1 @9vH QoI/E%RYvRuξƹkūjJo2q!{W*+3ReC^@FZ $sUVgϞJx4X*:ѤIGEѣGCn@#DZB 0FV'-Xu&)@W^:;vL[`P }kBdW^`0plda4HHH mzO\T9WRI1E`Oݻ'ړl=L %U[ _Cjprt_kqA#b?-KլYӜ+B㊽>\ lc-]㼧(>F90kY3K wͫᝆG}`k25qHHH m(UF֭$Ϩr|ݰdQST^2 .>t /)2W&jB!01'O kA/jY|yf Oe/o$*[$s} ub8([2d%2HHH'溭}ޏPiU[r4HPA%#'%Kŵzro/"+2^3O醐s$ 7>RI\"3Blo\Z7.<h @%^9$<٘߻ Ti C8arT     TD Cti .UҫZ[ p{& @2%}K5lJ[H}6&'=\xHHHHHl Ι]l(K;m۹:,m ˫UI<\55!LE$@$@$@$@$v4._:z1Zfe'N3ru[HҤP~iWϴ%@y7      CQe#Iȅq\qC2}9Ծ٤+Wj .bzﮱZr ALh6y(:oI$@$@$@$@i@?T~?pXvŦ3JH/^TQp&߰ʳ-N~τ3"    TI͛O.(嘆L կE J(=%v$@$@$@$@$@q&I|1;%KO,ת~UPcu@o7K#    H&=(gqmdn`J`qT⮛DFF3<#nr6. fϞ-+W>Ho9qℾ dĈRdIO24 !F^MTm)'/%/E,:J*I֬Y=6k,i߾}n)S&知Fr%Yz|W^[6[U .HVd߾}o&ݺu3VZUڵkEm_~ӧOK_L >l   qN8x4~ij7uvQjs$vOm(Sz|N`ԩ対J3 TҥKgz^L3f<쳺|jݺum駟o׊)"&Mww3'W_5ӧ92@wQ֬Y#|iF4ib @ |}΁Y2K%0K (.\QaYҧLɕmv1ہ2Z)# 7*/ #qG_ ?B yfɞ={eڵKza/^رc,:tq-?a ~`x˗//}1   ^*sq!_yfeR*(ƗpN22gW5Γc4AU>KC&=pr$4&L 8 }1N:Pi\xQF1X?]V Ş]$ C,_۲e!Gm;/^\ a;v={D<HHR9G9)}:Y}Zd[O}ir2&s׮QN_0=pݾCIm.Ɇ=Qp"gϞ5je£:}t- Ɛ9dv3[eʔ)1³ix3_u)[GȖp͛mU~{h~aS#m3_;dΜ9rНot}+-3ckzo d @?t& k3ůxY}dV¶lpJz=';঑A`I tE|ǥtK ͝;WgYPPF SkOux[c Mt^xA a]OΝeРAYa4Nf=IƽɅ&D!O)~.3f%K|MeELLǏ7&<<כoi~99p9X?zOq !4    }Wmt2w{lgx+V`U5'zM{t<ȑR.S1Hreݣ *퍽h=\!!!v +$аaCyu.m׮`2µa߿4kL6nܨßsv(ގ*K3SwwB̋c ]/9GN{JeU]Jr]Urxqz91}IrF?uVO(G m0H:txQIwOCX\R8۷oNn;x86D1?^СC9s۞8qiF8qۋ+-Bhp(]Ij=lߜ9sZ/;+c[c3^4  H.PwJ˰:r%%Z}u2?vt/OO*ה` g)ۥi!sɛ#Gty ݅΂5]8oȺuTꫯʸq9 [`~ iWOr˨l^md`r=g   "2gsNj-jB:ҪX!}l*"V *"7oݖ<F9 AK9(SγLS!0x/>lHTZ5ZԩSGתUKab$YlΜ91BFx YdGE&B {e%ڨ[l^LDoC$@$@=yȢ㧜.ٞOjvGIE+]==TIqڣw̉F `I `!0a.9d7k[^؍(C8dR0XE=]~VJλDFKq5F `I DDD=-BvvӵX2vm$vLԼys0`@QF$I¡Š/+VЉN:%oZ;wKCHHHGE彍)! T"Q<<ư=%tzڔ 4G`f z9Yt `c 2d`\r,l"7o^dkyɪU'-[$yb[{1-Z0YFvܩϷnZc    SF DlԾ߷UgX!jíspNj;~vKt<p{\Q !PHs؟ꬶ/2CwldY`1:`6lץnB <(k1kb.c}!IHHIorF;Nd YΣf9{V˧fPiQ*{j9Y1S^i=iIsɎ@ O<Vm^I&S"‹cCM`$s2@ơ|ɴPN!!fQCו(QBƎk駟ti$P'۸qcYtG}$KGs1쥗^쿦 @Bcyן|᪼}3MoVS&@p~\]2&5uDq44믿/poC*[d͚Ug1/Ğ"G$@$@pU7rRYe\Iu{7Hd S#"/~QriӦi&>|tBqL{n;8/ZHAdH{jǏ#svܧXhWP! b}Ush0F,fC ĉB?S5N}۩Z`.ybLVjWDž@ !ؗzKr$cFw)@۷O'uBQ64Q>j޽-< 2e IN#  zLgQb(OnDd\4#_v @ \o8a,YN(1Uvm"   %0nuUL KUɲhqoN7`t~~= $[՗_7-ϗ/s,=զN Ok     dJ":մ.wz8,z~)=]S^'/ @XBwɄFu${`h pp*~\ $'jOUɸ]!2C xWS/(WJ:(o^ݞS8 9}    H*oܔh%`dH/Tx˪կC'O˶srE9sܼ[& SF)MʩJ 䕦 Hq@\ PǕ @"c'Xq^*zMesJ6/R@ t]Y֌UBemw-ɤTP[\vEHHHHH X~VܹOw=vHn9uI ;!n.Kʣ%#gɵk3 9NUYw'ɺ7L{'ɂy$'$XIvN퓥Kå^zKb}Z{JXٳswÆ .z٣cyyU]v_rE7qㆫ^]3frܹpOO.ǏZ? @!k*d6VF9'xC8TΓKe$EWB|pJe;^$/TO6ZlYÇ0~AҫRCa-ZСΎ3~`x˗/=n߾ݱyٲess9Xd|zٳKTTT|20`@,/M{1? @j&=KoE{H懝mcgpΔ>|Tt/,-? ?+$3Pe#3c=&2d رcGY\X ĪaG6c#Y=yT\Y'5_~YN<={/Çՠ P޿ys $BR.d~V̱zfck׮Չ9o޼RD ߗ <+Ǝ/( !&Nhz]LA_!>N4Vtiԩ^ɓ'uwzɆ#wZа ;C+aس>+7njժm~sי|puՙ|\ IHH 5X~r dGի=dɏIyKU.VT=fGJJ"LKd rtR~ל:=O-i{Oܫ{^t^ 0HieC8U"Ֆ/_.x}:҄ tkܹSgK/$= Ȃ|Da֭[)vOG(*Ȋ A_ R_d̶7ȷ~+dfrذa{1:pa<y`O+ Ypp兝lRoAv=>TQ7N'򸳇 Ef=X @Z!pCM9V-db UBR'_`}*k7os֩7c\C3ḪfU cH  LrdMP؄j(ӥKm7Psh-u剃Tx{Qed86lס(Ń6"#pDaxKs  /0_%ϗ9:ubg!<3gNi֬^0<+Wx3煹~Y dH4c Il^m=aی/ {OxYuӮ _@f̍k|'  Fwo܍r\[ի2d6卽xI+nbs'eMVii;1xne9g@нS +Z*U\#<- C"!;4xfz)F{A2-g`}x`7oB+ NkEEkhSNaP^QBܹG{y &<Ԓ^ OCbì sx< /*b}87b>b5ye֬YJX#ɞ kpha f aB`"nO? 4=>{cUTbs DR@IDATֆ%3Fr\&;`^ȑ#WBxcؿ y ƿń& H]ARC ;sQߩ3hbR{]EDFP#[zݻ*!4Na3"ԙ{L8_FMo:x` 1]ڊZ-J d{g!R _k%7NRS m+UþW$sΚ:px f$۲ē7 aBl@6gaD1!+M#  D@/xJ$@7qA&2p% FhKS+]\Z+,6/ f.KwFUFF I8!бQ4>}ZŲ c&>p\ر >~ b^C9CLAȶnZ{ 1j;c-DZg<6~h! WDP QQQQDY."({^^ffKM}lvfnDÙӼ t'%݌$p=6W_XfKp=C)ݹs_ M4 Pp#'/,8f{ ,\ k42Rf /2vo(?z뭷l3}!R&)HHR'*{[cwV4{6I1*#\6Kΐ,<:2VAr1cƸ_$JlU/?0zh>>f,p7.N4Hg6t;7׽}zo'` 0P$hjmH"0^Uްضm%ɟ :P$ق|d6VOE f8pu=`I`id6 RM_7^8 8W޽: yU.bnꋛ龣ʨ)uk\kIC?lNvy%@8Pb鸿ĎQR|kB6k-۸'T!ĸ.]T1B_ D%M-YwHֺlݗ-24ǃ1>K,!^8{;:Ar0 \6ІrT(BݡCAq^X2?ǒ @j&:3HnjwKO徵b|?CgnX ڳ=D%#͢&:y9C7s(I Q PNTi{22Eq0B`]s5g %`(6He .3fL-`k|1Jy:zh^!!p:EzzÞl2ץƍSځՂn7 ӎDd!/Gq&  @i pB{]eν^,Tٝ^,7ohV :V:nɿemn<oXpYLT(kn}L,U5|#3ܞ6x_ٹsgA=^zI7:l[pŋ @XHQ %֬HK^r5緍vJ0!J ۋd&lܣ˻gkm\kt#cs7<zj ٽ9뾷F$@$@i=%@ӡ9־WdR\ܼ]RAt6W._1s̙d`2C; ,6*&GYA`7N:!C\Ms8(FF6冰Nڵ]Jȑ#u$'1-tҁlg_k#FNqȜ xE6hdPWp=[ovEti4_ nٶz\D-|| /b! 8KH:u˼Յn @z#8E JcJK* >vDXjt6];Bmn?v*sRFYGm٩drDxd(6^-Æ s߿un=)d2v17!pF 'Δ 4rgvDVA|o3W)՚Ѻo1=+K)k&`8T% u` űYfZـ%nhEJTTT<2|p 駟 J_~/?Zbm߾}np4ܝ$r('xyEkb(+5x`YNvbf`,, /G2bQ7/8 C+mO>.\u/=IB$@$@bs.YD&ϨFp+E+Tl$"@8Hy>3 x@=GYK 0j>S jQL(`n( A'J…% + J@ w}?pGg(~&Iğ2Ci ^7n6PX2!Kŋݦ^!̙3JeUZ}<HH#7kWi*ΊNkV/RE)beAem۶9`\(%جe(P\`DYUڮWb$֭J 1q 7Sܠq- :md4[AGܯՕ9н@"bU~Tb$2L]#%7 @` rG!-)w179Ч53|SMx %pYH"K贶O #GKR\s`%K4GZ}Ȑ!C${qyayg… ە+Wum&֭s7uT7ߔoF>vx2zh^_ڵk'2ds  HvWU'tBobۮ}rL!B pZy>~嗀1}ݲvZ  \R%9w,_\ƌ#PZ?#9u|w~t钞(F֭]/ҶmJ"EdΜ92aӧO r_Rvm.b?gϞ/O`1ݡCϒ)S&q|CnذL>]?\)$@$@$R;qJ֟O?ե{:׻|qJM6i=zKQ~>>~\~@Ʉ7K4!Ԯ3e5kV~cY_1fEC(UV5mm٢3֠A18\˖24 @bX\{wRv*$"KWʕC^-P?ݰMܲcƋ$Faaa2zj+W.o]ukRj_X&_h˭q駟F:QI(&0ޱcG= P:qP>p)}dÂp56 P'Ip?&33j #b#s,YC4HL1^ϜB$@$@MyUsAdfpuJ긻6DtIt<1l)$}5. N;ē7nY=ܟp J@*Ȏ kց4H}{ڴiRtimKի$B]A_ wȉF٢[zZ#"on_ϩ_t@,-^cU7sq-[6sS J_)xI.&XJ@$@$8NٻbAXe=%*vPG)LZinx2vr6ψ5.@!͡7RuS;)5].]*?N5ڪ:uX0W 4\r.KPQK%y]#وm1Ȇ]\3;kdg!  "%C3=]Nެ]Egj=wq,2Q-2"&KH hN O1@(P>СCn%ey?ϰq#+bR"kXq-p2ekӦM:C\IL M2(_ 6eBTo ws_bk>k5rɓ' =./堞}89 @]* ,ԭ.Xh{Y"(YdԔa٤r"nY찮cHýEnPĪ #SddQkB(DFALhѢE} q{S\@(F ̵`~#ܞMR*(Ȇo;PbGl o_bW)۷owM:v:RmuAwy|($@$@i@q3l/_2gϛԕV 1 dGh۶D?VcXt )xܭg.T}o0wc8~@J#@8='`Z(F-EU6۷%|MnACjySQk"',f}i锘jʔ)d\PQS \Gao̙uk3Ɵ>9r0C̜DY 2)lpd{Z3onzZݞ,( SQN)EڴeR=|&^'TE pz\ܬĈ}:ɔ Y)g̍DYF|SV^,uyWSϚ s<0ave6ًK k=C.#K.}7kj }޽pcMZsV{,~L.$@$@$` uTn@+K3KmDʿiV<Nj]?^yxR*q,V7hdS Z3)?Y'o>kqʰWFe%>c1;o ? ]XŲZT!J,7o,]TO"rKbMyHHH An)RP|#'D-% .og뤴bêrEZ;1#9T2- WtZ{C!ںsԉE ]AН:u;VJmwڵ:ٓ7.\dIAn|23[`gp/^,7ֱPJ4ٍ3P /i0ztcy~;~xٰaGu)Qkz _CPN .NF0.1?2X$)ͺ&  ; 痼1Uٕ_ vw=kD;rh;QP^&G p{$P|@Im׮|Z!Y~: 2܃a5LTEX}|׮][+PJ1 /8\XtҾvk_nK+pFx KGm~I С#ɒ NNqq>sSHHH Ȭ6uW䶥J*UR!IB9SY~ۗldžR'*q6  #<{ QV6g:{tt􍷭e7oRp6}\bE޽: Cʫg<3:bu+yŔ}?}W.Hm#4V ={j+\6l-xޫݻ?{4VyX}=ٳgu'[ G}dc  H`}z%G[rlhl'lr,5I h -'NjHEO?u-o2H@B[|,Z fBTCDr((e̎O?t[+Ŀ}FH{0r J-TCbccaҤI~q?XoXd#B$@$@)@ ]e1IP@Z"1- mnUT1}SNs V1_ .*Pܭ[7A\UEdǸA dLRE4n{ݟ[N 8jҤ@1/A٦DIHRqS]ɕ U./ H HTT:#'#4HV`U#K3P-U2>8%b~ȑC' +qZzZJ |3gTq8n^ 0@ *M ˎ{Ε Wo0 ە**5};Mm`ED&|B`9LI`fC!  @|y oD:5E792 t @ 4,W&vDEJl"Ȉ| 2qmɢ\)$V ;>Y @"PQަXYFo%_K2~>)=L\N+[2^p@fgHgvIHHHHkׯ'HS;R~={N_JN.l9 @PN<%    /Hi䜊M,|ly&l @ PN8C@$@$@$@$N <#O% 8Qj<1\ :($08 5o'Pvz;^dǎZ2^&̝;W+}!CH<.]ȬY'/O?cNky:7SN||Mo! &klrɳVJy%U0z`*A[@Z%@8>YW 2+gnP|ٳg?2dȐJ  &qc_?)S&WiVoVz*hV|~ 6*oh JUE̙3'|"rC|E4r R\xq7tlܸ=Zb}>&  ;_lnwY_˯я֒?nYkV_fBvl--e;m"䞖2Msլ:n%Uv7Qox$@~'(vK?N 7 7hĸ?7kL'gLZdRC.rX­!/ܕJ1\!xwgs#) \؍s.|2ɂ$@$@xS;ɒ1t)SB6*++KVK9u[$T ֠<]mh"˛Jl:Sm%Lqy|[ϓs G gΜrGgr,O"8"k׮^ϑu[СCc >ݽ{>~"s~(_z1P2})f N-Y-dio&V [/ZH]jUoSiFf{f IH9pBtkcNǤIR]);(ToP9}钌޺]f<"Up'ڭ'ռ[/H *^){,PgXMl/rHlf-,pE6e.,ȬO?8%PQ({ǎK+:2PıX]a>`]F `\ `g۶mB%K8 K x#cR)v]HDޠ*1wɫcmSa-qo󞼍c WT}{%8;Cכ5nаNz P!?Ca6/C!flY s_{5E)KiӤtڂ ^ .5w 诿ܥd#2bjaF٢[zZXgy͛7 b /% rOBon__vEZ!FSEK}l| ue<%1s @J%pJ^_-Ti6UN#sER(,:vRWq˾HBI,0xHVp5exډqF .܎}ɤI\J/ʕsxT$;Vl'HXp^  rd OFjFewܥ;{e+$DRJܪh!yhb[-sܿK|f$@/y.@#7h( R# C鉌Ԯ溷[W^qr?hXS΅ڴ[K)Y>`~#ܞMRRJu%ׅAeݺu%^~e?tc ǾǬm ^B ~𻒔rRTR˵HH tdXKN꺎9;ל%2us %0=/dr2NUi,f#r O.btH1F1BUsu $kӱQю<-Z5 +rR J5lХMV`(!|ɮa kX_8i#GnN$@$@) ,6 T~~yIjm'wju @%0bRDH2eu5dJs"Y$rʓFFHs۷S/[9u~k(q}„ B_ba!{Bɝ;v{^x / *]-XkokYH!ΘB$@$@TRxqcFq6ysgnsFHdJ5m\s*[AY{ O 3k+`4)CtbC($ .k|}.wnP|eȑ:[6XAZY5CݱcUڎLF*U`Xwa:2}̷%N:2IHH@䯽mPwtZ]zt@eh.ʽy*dVJ4dXɰ=QH'l:$4Muaq.dԩxΖ֬(7KV\)rp|,Y`g.A"%K{goV+P~zذa2b_LZĵk0E__`FWn A7U߈uo  @R*'Ag(vV_o/sQ%)NQݦTqo)2v.mvܒ74] 8I@&vS(L]Vʡ5\a!nܸѳs(PF!:RB;2+{n)]4.-ܫW/adkDPɈso(Clu_С;j); x,d(;u  MdDv?nRv_e{Ѳ{ZNw~.|Y,'k˴Je<R.WYp|nolׇH Pv3%`2BA|Gt$t j;v %s /-hJŊ{z\j;IX`!E@w8p< }$ZtGl7 "=.> `$݂d\ٳ\V?HHH*qBP(:}B-e{@Oㅫ獔AH*%L# Y^O+N凱^G*q//53I h֬%ELMu%^w`d.>w|ڲ;x`YV>7l o;V&C ZpݎrJ}ʕ+=./J24WF/mڴk8bM./JSO J8̙3駟1X/p)ÇY6j{b߫c,9IHH@b%Z)Ov5-Uuz: &J0:A*DtYɮnQH#j8O?u ,VL4Iz!͟?_+}pU:WT@#p7n$$Au!33AXt⃹Ԭe2P뭕 Q_1M&Mho~&[k?_8o3ԢLU= yψƳ$ۺIH_ىz⋏?R:GqJ:3ࠓiy$@$@$@$@N`JXuߌrڵDi5J =w\W1 `q x뭷?v=-[6 bŊIZO>R`A1jصk,Y2Xӧy'O,&L~{-uk I&)ǎkUFoc֭[̙3Rn]iԨnZj׮yZ%/; G ,x: ]vҰaC W'xBO&n7{삏/ B4h Çw7W_}U[q{ƄxA1rH=wݔ_`ƍeɕ+W?_4HHl w[vڶbЬZҹtq(?y ^^Fm;m"f*J s{ym\'A|kUq$@6 /.%J.7c rl޼e%Ι3../^,UT?P"+w_~EKyGׁ|˗/c   ' T٣6gɘAP)!%ל-) kPCH\բHR [<5ݶ[2gבGٮe.۹HO R6d%Ḙ\ A§| 6m^BYŇpg7J!Cs7Y5kL'ýXߨSpoFZlim[h!P<(3g_m'E  tC`ց#ڳBi'R=.m#W-U4q~qMrhe^9,jHFR5`Zq6vne+X^VQݼC떸? ]^OSH#@?N  KQ\Kڽ{wYti;:r䈠O? k#|)s*.\p6mMR(VA2Џ>H+Po"Wv͋?=uT'Bx*Pp+s=|H$6w\1bzϦ-A)Hz\/ ͏cxw9h"=5,UVTVՎYT]8x@$@$`C`2|M #>Xť);! IR]);(Z0,TN_$=\g<"Up캿`C$`ߌ#5/K,ڕ`3.XbyE}GPZ1@ 6Uc߯/A@F`(tH*>nȤIo߾}I +ܳa ٍW\i^n5+W- pE<5pztti XQ*<<~I=`m$כ F^PHHH-:6cTʮrxDޠ,%.yUpmq&) {ͧmH ^|o(V+Vﻔ_X<{8 $J!:[0:b<䯿 04X=_(P~ܖ*UM(e˖aE5j`„ ZE"*`Z&f{OL̠`C½ܗ 7YnFLvosn{:{^9%( HX4Jf$qÕ[/,//PóƓ}fyH@ 0  csS2 wa\;mzK/T#Y׸QC*f0`vE;`+x9nB .eֱʾlͽx9؂Fef}[ρ61מmI}wG$@Ae@jhɥJ#?tTHvS%-BadձrZ؍L脆I`[,Z Xfa 4Pof6o;ukc(P& %KlcxCNבD)UddVêxmt _%a]7u_bMtk> ]WSQydŪ},wܺX!^cOYo]Q/)$@?+Lveb\H%'A=X$ǚ2e *p!$Yܾ}{;kIxhbXY2\{ܹsíp2u1<;kfD^aM}'zda  !Y)P@=]NbKewed2@ R/4*ZHXc3)hcLtڭziu r˗ۭ[j VOdZF)+V,%nvVZNML eP7o2-㾓BxK}KƏoΝ;۶b\ @zdYA)mJ;u:ԿzY"SyWw\{^/]#^'+!uJ?g9$hQH'p#ٓR,5 2v:ԔE%XzKL8Qg 5qV|n.( V[(PG&fS(>2&RBm[{k6Wn_bԌ|$@$@)@&Ֆ] ,s&մV~](w=קkwߨM O29g7 pɽH 5_(Vy뭷tI"{,ݎ;j{﹆M9{:ԡCt=nݺũ~ziذ.OZ14Ngc).]$^\pai>xqA!  oylZ6V*w*t۟3ũo[U+;9o-oIF~P)$@pǞ$kOp3(o۹Z u*nѨ_lը+oD ܺ5뱷~Iن8jS nRѣb-u乾I:ukHFYwŮ[nuy8`k) ktq˖-eĈank, Ci6bEݼy{qv P✓Z:tZw{EٳeĄ(P IHH@np)Uoi%;ay|wFyy=9FYOזiJU3xޝ-\1`R/$@nIj"(SlY]{G9XX=X[q}͚5 m׮]u*%\C|/5g=۶mJ|W_ű9N<3Eq[իW7dȑi&׹96);`3wA3OgϞ1^|E.<'  [(m)"s lJ UF{@Oㅫ獔AH*%Lk Y^O+NIKo0H7fD`̘1.uydUZctaUtrq0qTPvBY _\zhc)D6mpѣzCg}ź 0DK/r_~GŚ \ݺueɒ%rEi׮\'u{F]hQ7kɱOI$@$ʗ[Y ev^e_*oӤ@P._q-PdTk)$@/NB͋/fXQN@V+SNI߾} u*+h_l2dgd_뮻t/#>Hڵk;vp c1~w? 2$rڸqߤ+# H}ԩ&Voba4QJ+ x lPv+ժUӖW$ڰaVH_d_XOa%D (+Wƍ˭ު YLwݧOmA4`\Du{HHB!7%y`ܥ^F Ak|AGnIk+ ܫq/8OI F#׬N: ܱkⶍgЯ_?ݎ' BԾ]Z Co,qZ6'"F ǿ/Ƅ jm67a(U (cg턛4j",ʰ8B1 ^'Aڕ߱w\WZCTTvf.@5ȀdРAcHHRgJ][JLܘdйP#@4HyC lɦ|qjGL7Aa_A,ӥğ@XXfHgȑ$@$@q WCN^$ ~>mW٢}B t ؗHHHH%IzҭLpe͔QkV_3{$`T WP?hXKޫ_]B,I3GUh|[1sU+̶ SHc#g!   Hdc2|g!`H幋r~RY)-@L9# @:&Р@^u}YsUOʾs9"~}VZO%[7H  wD$@$@$@$+w[9g*a<9QHR*)yp7$ \|Yv)gϖ%KIHHH HXvy>k\z-~p @P0 tP& ,v%x˚5k|8{OءXGz%Os   Eu^"erFHYe~&F.z!YafΐAJpU5lHzM;$O$@D xUo߾C _~uyK/\3f(={͟~*Vd?4kL_<f (SK,3Ș[J2%drkbXJ U/5!ODuئxazR(,Tܴ]z]"-Z)KE ɤn\!ι9&6OH-=խ8#Fŋeƍ:VŊjժZs^h|^ԩ#Pܼɞ={VPHƍs5J6l 6mdF 3fƌ?˖-[\mH$vZ}3Hr\m8@ѣeժUzeʔ}W.>dUR3gȤIPuFp ˥aÆ:Nil|k֬Y:yCɓ'K٥e˖Ʊ>5RՓzH;, .̙3 qp 1Cm{2a3ܱcv//[ӥK&HH }9d ZHYvk\Qqbkw[vf UBbJRY)sk5 "p.9?R;O?tXbf뷊1J ͫR_W 7o.]rkqywe!uqJsJ):T)ꅀXOJw[?{yի(QunW<#3*MP/?:וgM6؉_Wuq  Ak*7f~ޱG[W;aܕzDT>XF`ŵWުfQHJwo\= ?~\']6Po^d 6LnVk1jEEEk&uv ?+$ȊUj}@ [4p$Úf @&@ p~>ɶGʉ7b` E7Z@=A Sܠ^\4\!mֹUYwo][$ьVEfۥ9r֦Đ['&(k ✑bUdzb>7~$zFD\Ou_Vu#ܪ<9:wլo]>)Ĺ @j";ox'˩rYN=wךhl-tp\  % ]nFJ,ia%S" ,Մҁ"E2ɯb>PJ"ʕ+%=.nZ tu*a<fJ9Ik󌠈z[]sq< {|O9k9<ZFH>  r$X3,lFNP(9^ĭ̑g;#\ wpR%/9I%p!P@ʁzr*z?!(*($$A$D% 0~3;=3;a0UUnw{^y1O[[IBuH0>]WEX]t6FP`UbFi.ڢnRU0my=7Tu{+&5h̊*MV~խkh`uVIϊ֩S'gia9 =)VfquEJdϙ{d[iڤ#G:ʯҺ֠Wf!@ ZvpQvbFD]>UZs_8?h?gQʯe[­:@ Ǘ3UD TeG6VrW`W|Pb>bSiOu;u$q5ԚCjs֫9e;bu{Nr2ض*vJ,w?-g>1 @ee-gKm-J^;t W(+i!;](R)L4[<@u@b `N,vt1F}lEmUs`Xh$uTE*j!VPq+t"}tRkNZwmyǍv8W X MlJ"4G-ݺusR$x}'ymB@Ef͚}`Xd> @#pIJNnUMڔ/#4Gݧ}UMyUScm~dL+6pkH,|R`AHsܪVs^{סn\}v1[Sh+ 5qDVC?'n.ʳ>+=z/w\Um%V^tEιZPwf[4Wp̛7ϩСS-h,;_+pLs#iB/Ɉ#>j_߾}$9{ydZN_K=x~‰jєpMrcS $@b]QENTTYE^o6mlkJFiӦ*wSE\[w=(?([sEvGv[cקl d{}vNsϞ=EBN|:vU~ sy}ykjpЈ8j%ֽn}tAEކ3,~t)aU)h)%-dO]M[N? *RO poW׿X}ک4i"/ɕu6lx>s&BEW֪ۯ._~ٸ9p@Q}g,j3g<Ri&]S"{ XڊΣ )k |5{ly7eACg'ѐ!C &fGW9)o{U{wMJ&{rꫯڇw"3G!^cի'bj۶mf{}vf̘!O<:t(h\]uN ,[*2nݯzo%eޞRn5 'W.y)sh@ 'i5۪*WDL[*sj$M6>Motү_?M5 YnZ5UY#>۰cUEIQ|OŊ^Q{Ρ\%\//Xr6xs J**j ^{­t[{pe;3uCSu<&M)RİSCIٲe\?y鐙 @'xV^߭'JD]Iz5& .B ptJR~ױcJ5X ZIgΜ) ;_,nˬ]v5Ԣʌ-k[i‰*rEAV\i] HvV *zrDzU1K|r]cҦZ.'c{}yzk>}WC_NE\W]u3;=SIN{e Woh\8ߔgRxea[n1hAtF|޸q h̦RW^2a UYM{U)Zԯ_38VqtREQP*LvZ<~IS5%Ct*՛6m2 襜[7+yq23_=ܽ{ԭ[׼*psu9TEA @_wA' ٟr/lu_rluQ @$r+;KW?'NfkS-I e5'C'x9zM;*}Vs @Fp29rej|vl:x8sB9N5\)# pJI+U$C%KHեK.a-9W @h4/דwY[d19|ϓ[Z 6N/*, t4?] kb $d 4hPL@ @,[~[y{ȑ'futgZ6E %p ċ pH2 @ ,߽WzϘ':l*3.Z55m\C<ʨ @>"ٯgڗw3|w I:@%{ @@`_X]c]¿w}@("N8ș @ Yn&|P7pF4iO @ )PI @MD-#-KG6&r p x{˛? WZѸqc9g75j[n'}K.۷O4ibx/v)>tEuBAr5ȋ/(ǎW^qe{@'uG,dj E(9v5W^y=\~?SF ~[~7s7,s.EffYMݻwK^ds{ॗ^!CHh+V~&N(1Bڷoa:>Cc~at `}؃V,W_p^F8i(K/Tʕ+gUbkc tM1c8UvSZl;w,?sQz7NeDʽt⋥m۶RbEYfL0(jKdR~}hlٲRJy0*$:@8M.xnʈ-_jRiiir4cWV=KV/?9Ϥ ]{a}hK˛<q-s=gz;Rٸ^Uԩ1ա̙#`(xӦM˳~z;PUꪠ,_ {e cZ9{H\>-Ww דVH 2mKL >I^<ӝYt-[kz;e }'~\_Mp뭷R&"gP~A]ܲ?~GYh@9{k6e/w./ңfUYiYn5O^^b`MžkW^uYF}O?GnCI"$LZmUSQLXD(uU)^\wư7O9>|yH*`TI6m{ /8ø߮;fΜTosʡ յkWAAB쵂&{H֐ƥJȂ;o +Zǿl'--:pR` ՞;l{nHGOTL (O74СSnNZ`AΝ+wy QUVyСe nZ&:ϧ~{nɓ'cmӽSN~Z}p-](C==hժVP9]]@@8s~!'ZDW(g!%zn<$eݕI:Md[NtTv" $dfT{[([NR[[h~R%Z-gϞvsJ*qٲe"ZFǏo}HST)0`}RX1nQ=j귦>z':{UZ5j(Zw!@ qwq~5ŖNYU cRPAhFǼNMŠp-оC%wbbtD%PpaѣrqDSxQ={in֬4m4C'NW\a'iczz9n޼ݻW4_~itM&}ϰa2B݈u qt=ժU e[}5U;'rӭ[78p)R$\s?͊ϟcnns͜Y,s k^ ʖ2?M-h>5x:šbn@ $ďZqUVQm$X]/>(-Z0Cԏ>H4RK_/P"z*cʣ>49rĴi($z{G׫WڊDrW.?_Wm'V“X6k0Jj,/ 2;9M+Wv)@B \U7-C[#XΞ/<G$|VH=,  D{TYoqU~3%*\zv1췦QT-*znڵ իhN[`oi_$k9[VWU^~e9+d^p{̸GKJw%ZXꫯ:̙3qw'Abͷu06 (밬:}X=|]gզĥ+= z{ (]\y&b5kD]O;<=7n9[?gVf˽tt{$IDATժUCZ."cTXUyQL2re;Yk 4juH*^{m;w6 :U/= t9@`o{/t `c82$ ^TfY.7۹rq0{Y*.oO#83njAuĉM$ssѲ8R}<2?Ȗ 6Ũ߹-&uVٶmL69Gݩux㍒/_>M v[4it_֨j])lQ+~@pP^ *f+aĈαݏo@ZI;S[QW3w|zB_]KiA%_G;vt\k5 SjpS,YTє/*nOq9: e[au\ΗٱcIc(5kM0ix4_r%2zh=4A>c۷9@@,Z+zw.l-J/f$lϯ{zݏ2 x(g Y$VU[43_}i͎U[Gk hipԨQCڵkgB)TkZFe85k0O*TVvVIE3g. @1sJRV:prSjҦ|Yg9>;{Tp}YwaŲ l`p6qj Tsj?X5I+RW_{enoK.O5M ƂΚ5XUa/Prb+C%{gXSI 4()z꺬R~}kLٽTX{tNdɒ%JS`}D{ @"ۊpMOk+lԬP,sP%+eԪS&Y)](S*+r ( ʐ#4Z?cQUEXjժnґuNWѣe9iwT4ΛYѠPw}Q zUU;\bmKuάJ"E hk1[V͹xbܲeK2eu Hn]-\D2\R%"yU` VA@\{N{=gZY{($jUW3?CvA4ZUTQVmfE-ݻwQFe΍4*${֐: f۳DjM @?ŋ%+83.)8;gDɭuGF; D(ITY#pUWh׮]r%U_u7E4Oƚ[O7nl,p1yذa *j ~>9ktϝF뮻ܹͥsg߿}=i$YzuP],j 3 ?Mi@ o(lh 4ٳKR PʕcZj~jE֏'#K` 4>H2ڽ6mHڵbŊ$^c$mεPP|y.ׯdV2,KF"@-XٹeJ ω ˘!7&gC Bsj)ҵkWYltMt[Ue'[N,-7WFd1zݾ|DO NikE}NvB ey<_b5H}B{ 4Rq [PO5Yv7nl^X\8 s\6eڻ?)+K˓[&tl+ #)`@.Оhh8S h`ի_tX_ٱ.@@q+ϗ~'?n{=Q~N!?@Ǐ%#A @y+.} [Ytn'TL [<C @A7K @9@z26Xn+%/ K簌$@|O @ [iXG\sv%KR Γ5{X! @@ T-ZX^4lR_]|nl>t8t%+ 5JTǴ:A&id@ p&n ~YCYcENYm}o:xH񇜰2G2F-X@jZ}.)J|k;>q 8= UC đ@8 ̾\ @ I Wh@@ 7Nwnk"" @'uV)VXF2:N pUdҤIO@ {,et@ @ӦMeΝq>RM69VXQS@2ue۶mR\9o$z:)Ręk޽rGsLرc)S9ѣlAqhPH})m+"PO#&@,V@ @q"' @ @& @ @ NPa @ @P}X @ ĉBi@ Çw&N"xg $@>Dy莐(^+6fET @ :) @RM8w!@ @ )PI @ @ PS} @B8) @RM8w!@ĉ2j(袋jժRD ܹ<䓲`F 2O/M+|2j̨Ν;G.]H5PBҠAk_cǎ9+cڵkoM_9=z3c-P .4??z"op aiʔL @Q X.X[nݺ=tٳ馏Z7o2CСC#nuͷv˷Mße`V@@̙PԩSW*[n+@L.A ,kGid…ҸqcF$<@UVE{ v+S_d۶mXlz0:t0q{(I&=L4k;sjhԨQDneeٲep%˷~+Mp}xVP  &/Q~'G1:b3,0hZe$R9M_3"i\zv| oo r:|5d$q[MH,Gۗ_~)mڴ~} /C7 "AkJ}7n5j?9IA9{ϯ2*wX1YݲD@-cI޽3s q CnPWݛ5H`x= C'2S@,"E89r){}ӽQY;ROdX>s ^rNɓ'eݺu2uTꫯ^;Ֆ&o`V`ܬf͊HB$>Ϯ$~xVI{Ϟ=ҩS'YdHu37o4o8х Dihʔ)UzŊҫW/ϋ9D㋆\b%,8t㏢W.K:t@ &6SyX~ A,jVX=4@&`FZrh gH af%? pb2: @ |r#X @ $ pb2: @  Onˀ @ @N,_F @ @ɍ` @ X( @ (>, @K8| @|B'7e@ @@b '/C @OF @ @H,et@ @ `@ @%X@ @>!2 @ @ P˗!@ @'P}r#X @ $ pb2: @  Onˀ @ ț @ Nƌc=RT)/dԩ2c ٵk\pҾ}{kXbɓ'?oFO.uʵ^+}\re=|[o̙3ᅲCI5+}JѢE38zY/k׮cǎɹ+__~q[l)vtJ Wd @AF%~[n >|:yХKD[nEƎ\tE_J-Z$׿>;F2edF ]5K O>͛˞={G{K% d @b$p]wo޼yUVrƍeƺ:e4hZJ&L *U2nٲee֬Y2oU*;wt-XS{݊{>AHdf@ X1 K,va)^3m}>p'h$M˄@`?@R@_8*G1}45-v-=ő$Υ @ Ǜ(A ӄ?q˖-s[lԩC; 4@/Pr'X @H2_]>9aÜ)[=?N_*RJ8 m駟I&_|aj֬)]tqխ[Wzi׭['}q\N7XsoٲŮ@ M X @@t|AiР_^y:t^{MҜc-<2e䭷ޒyV+Vĉeڵ7o^BL4 @) L @@s2k,3fU]_|Dݤ;vawrUW… eʕؤI8p\:O1(C'\I @iD/ٳgKFL^^^[9իUTɜ /H=D]K,)zSO=%Kؒn XSI!@vmhM>h]͛˒%KdΝ2g\^ P`Aôڻwӆ젠 p3- @RJe]Ӓϟo֮][ڷo/ʕUᵕ^2۵kW9r(QXV1r,9c  @H`ڵ2w\ӧe˖#Gˊ+dÆ F)PIԭ[7Zjv\@q%W @ @~%`@ @q%W @ @~%;ú @ @ P㊓ @ @PzgX @ ĕ p\q2 @  _  @ @+N @ @a] @ W(q` @ W(~3  @J88  @JدwuA @@\ 'A @_ ؈'IENDB`ggpubr/tools/README-ggpubr-1.png0000644000176200001440000027543413571311426016007 0ustar liggesusersPNG  IHDRn0i iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx Es GAXPwWWq]WuufU<}WA@P@@\[,ȕrBB w2I&s=}O==3̤T?G=UjSU'%!!   o @@@@]     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@     wHG @@@    |t$@@@@    ;4@J$20(鴈HBfTb@R}7 @y7y@& ȟ K3/z/)I㕣j^M)} tvXIGY7  @Aj~z?'?RJ=Z_D0tgw_e*9ŧv>OaSw?ǨG}SnMo~S~ewK0;Sr@ꤦd/Ԫ*544]wݥWXjkoof}:__?z+VAZmҥ1'xȫQΥz/,*?lW [pq^)2{%աڠJHj?՗@|5B,}3ѿ | ?1XXP_Τ .ϯ-r'˷I9GBM6`O67o' P<YR @*vnU>F.^;| 5>$/ oFz5!*|e7p^={P˳eMzhf*3ψzMԗ-jćU7$(/djV/eW_ĩ;ꋲ<06 %@'!XQ@ͳW֫;j}D]gۥ^&۷]ٳgzȘ/x1u 5ٲeѡYVTRC%gq}mJίX84Yj݄N:i=UUU/d7 ɟ_HUI*ޝϩS>G WAo߿_}uuuS.@r ͉@l |Ek׊ _O?].RZXФj%yzȄ ꋂ_ _Nnf9}CwUܔ^VK Z"j}5}E%[A}@Ԟ] p}5LooyY5|͚5tZ˫㛓MXLZZZm۶ljyq'EB)jJjxJjZZ~@J#ҸR* @3x_%zY?djR@ wd(@{޽{ EԣΝWyt٭PW^чo&gppP%e CkF_@.?O|OCBjNe]7>}\tENl.mB,%@o2  y2|⋍`zM&guKYW_ d9眣g]'TAtR} C>'T@#S0f>u  \yzԓ$+ANoڅ ȷN_P@T eV[л٢{uQ=n-iꮿ?^RwռllV5L?_}yF cI8Q@=B=*OzQNeڄV ȷbP'@) `oa*C/Bimmշ]{jퟓO>YQW+?ﺫnZO-Wݝh7o޸_GƬY!G:Uڀ_Nj)~9Df]<@.M5<hCo7|n.O0AGghgSe@@@W    ]@@@)NIځ   z|@@@pASzv   ^ @@@"@    wG@@@;'i   ]@@@)NIځ   z|@@@pASzv   ^ @@@"@    wG@@@;'i   ]@@@)NIځ   z|@@@pASzv   ^ @@@"@    wG@@@;'i   ]@@@)NIځ   z|@@@pASzv   ^ @@@"@    wG@@@;'i   ]@@@)NIځ   z|@@@pASzv   ^ @@@"@    wG@@@;'i   ]@@@)NIځ   z|@@@pASzv   ^ @@@"wJC֎T*%Vқ]]]-˖-sE &Jg*Z?962cҩSQ=oH<ހcFC@T%GA֏>e͚59a   S I$dx|\O8@"ɯ;E+FOܻ}<MK4BrBc\:y R\ `ҿ=fjI~Rj~ UCɷis'ߦG(ݽկȓZ'r'|&Xv"Nl>!u6_Hf. 62qD-{z @~5yO^ k,?Hʏ^"?hm/S  `-=ʁ' z֨pb`vd`md@+0\ @@" ĒIk;F|>9eZ6<^3ISڒ,{nyMށ!ycu|BOB"зWҹ3Fs=}%ţ Ϧm=\RNI[;{?@ 0\_q&NNO[< PW"PKٗ_dlX{M૚̊ËW_Ԇ@' iw;@R5o& ՁjWyF_(  P! sY@YIբQse)h?|$wh_;ky7$ۺHp-8Z#ڰ{Ǵh-SC].LPG(A~ P2oK̑Sɼy58+˚N=@ ĠH҉~9Zl=ހ~G_MǵݞO@" BTr\xᅲpBillwo}KV^]rܬnUrp܊FSϙ9MN+$uLYڐ ۧWJi~!es. `zU"{/^u%|qx_d  PnW,"\rlܸq\_/z\s5/tM3ΐh4yfYtiAŲ^A|c;jEt'j" ߝo4x^y[&: m=,m/\1R_T/#s ߉zJ5>&θ8Ww{{{|zկ~Unfꪫ$H"|#rM78yx\j#@v yܼ #s૪^yQ-U6ϼ(?R @r T?yuq٤軎5+g_N"~z |5Æ W^)/>Dy睲|ru]'+j?|+_L CPS^-5rfoyE\ӫ]Kz!H%޵Z%F+ڽJ*֪_+io*l`陲7~(R 0UG\7Y`~ wyrow_c駟ԋ-(EҋeH[oDGvL16T/K3IŠu(2@ :Vj &s]{deE M?W{6ǐf) {̊^{a~~,YD쮼vwwSRڜV2M<%{,?@*Oj/>\0wxmrE+@r)XYRio_hI"Ǝ2^my2 @XpUOZu_SO=eړ_SٳG׿uQ%ίFNP}}+Fsm.ULjsFH暍?(%)(@[e'3hf!`Y]wIbSABa HG+W;ͫ-u'OځrUQsng2gNarF ܳ}l[ݨ͙?uZcY԰ZCQ @TL_#nH<|9FLK֟\ @" ?IͿWˍ7|r}VlpznL`=*,ǎ,WFϊ-qww׿*?=OJB,,NHxE%/$c$=F/=o`f%.@c|hgS$^}?O1ݙR3<ϿۤaKMiێ;$;`J'r08N Lɏ^b/'eȨ56uHB{OxX_+s @ Ov*N_xfL`z q4 }}}K86eB+ ڵկ~U/㳟\pFyd@bܽmҋRsՖyGk6YNa? Py_3l=M/hsĻ_.۵[ws#m>&/!QգN8wk]PdW7䪫2o"P+F  \P ԕ$RJө(c;\hc6_ wqLK*wꩧzmphGUjw6sSO0%M`P[.B79>Z۵:dh#R5=*r@q;'_-}>={myGD/oille^!6y  hm;2_6r\WNj[畳f?0(D(@}D[/UIhYPeS۳Y~"%plxԝ̐R}8ֳΪJAFn޴հPw!WiϨR jsоxxAmk_m*Rp@|JoW-~wFE<^@gHzX[E[:qqp+Bo=xO޽[ǝy2k֬{.:Rںu_wud. 8o^!1u*4 8zZ32ުjCz?qwjߗCxիW/< Pjxmi\mhS2u|1O/b}8W v-XQUz]"h%E%@Uxt:-G;;vЃ{N.y=sa=!j~uÎa Plu2O8ZCSz9C[+`;/&F}؏S{wBα<ꖎ- QO2 @jIR|E>h/jJ{<漒@+F5N]lU6d?:Hoi$@SHsm{. >yMW^)+W5ާ-Rv}05G^eS 0~YqC?cj&9g-[KBbKgwKT2jSI E'L'tK288(ׯ؞7zX^-ħ.Q/ y.Mc&̭Hv5oَM {(SPәE+X!c^VOGzU< +2UUU򖷼E>g}|.y@Im{6.e'MܼU?W/ P*׾gj:[coФIzv(L82 @q\s'8\^}u(_h^u;Tcq}7Um?-a?>}!C= Pp{_oPBٻoB.Ss5h h~;t*niEi( @E\w'\AcO>(zV`^$;#G\  }ՙ;3yVx^W-?gjR'A;#z=F9>bZym L w =d!N{=֨OB-@_lQC ν}5]= `ȗ֘[@p*XZwI믶t}U{4t,?@ Ǣ5@ ܻ}Q2Mo[/L 1Gwޑǧ?-5ѿU٢T#@o pu+v譬/mj l[*#.~fJPj_ϐ}E.v)oKl)Ӹot((@bhuLv+OCy2 @1H @۱(-gT~$sE9Gc@@2$_dhcڞՖ<65oNDL&  @tʫ]=CAiT*Enȧ͑gmV6!{Vk; ǫ=J(TTۮ T+0חuH@ Q[U?p?gof-УWJ90>a  * @ԣIA6K {2 T2w9rGB3Λj9>P=x2" `|!-@ azV*fϔMsxc{#@%! ./4auU $2=˼݄'y7`B}Ub$@P @Lw8`=31rfy2w"}a!@ҿ#.ԾP/ssPG>U+s)pA{!-lZNKam^q#&Sb^im= P:7_6]բ%d@@9(D`]55oܺȓArH ꕰ^h%7( @r: PûgvYPS%uޢ]HBr]T\?*d@8(D`Hp} R5ؾGL@ݯ^/N 6.]5`^~ᆔcz([gAA_]mk' 0@{ 's=}UD *E۞t/@ܟ+[R=\?ky״"@oJ ze`H߬#s'<;wռ}[`p#2 7$os_Yos2OEI @>q rytL;gۿN^'S]D CҵF3*^s%5zHFAMY~"S ȟ# =W'M Sl@ϦJbp^mv7;8G٭?&g^xFlC# و#@tⲦS/#sҋRM > ٴ6 {6jQHd%#'N~yg LMAf @Q*tEuE)ޖ,7F9jwI t:%k>-N6)HyQm 6}K2Ƣ:@ W\8(P pt(auR)ypWˡ,Ə%޹Jo_ZXa 0A;_*!D{ ۳ߨ5:@IDAT@EC˿$Dr t%~Y7,H8|9IUF  0Ad:CJ$eu[~v瓙P%1P{$!v#}oĨhd{l4ޓ/2[;!0q4 wor(KJ<#k /騢C#Gm{;}4' {^5h4-4=xOfoPɡ=w9 仯i1A[PY u%o3sߎF XO 5#m/\?W_XBϵ^EmX#۰Ө2 ȯppyp3GW_'M]@<ҧ-GBk خWN ϯ{#UFI7( $ GW F7tvf>~>*_<2d_M}xDOB l {0S1_i ֫Mk䋘|۴6e /+7C7&t _P/mGdB ֱR7~(Z=*i'S78M ]kǑ /@^x@qY)jk$3˿0D $]Ҷ#M 6&eEikk j}:/}[`A& ȟ ;0:Eg>C=Foq}n~2wwG tUfJ ٗG w6d@Sa jW~v}0 uIIP;ׁU<J'п72y_ Qz_o!(:LA~yj5ؚF YV꛱>pBۼ)U~ &B=08$U$(\`x`tQP"ﭒ /d V;tpC^m!j=v1dʔ@njѷqy~8 67F${^yʼn ||1-D2 |uT1[B),зkN?><tB/\l)@on `Em>>j \ڀj~VuʞbOY ߽Ƒٗ_m'SZ#.ZSڋQ:Z G@Jjx6ͯ߬E1~GH-iȬʻ` $йa/u'hݗN|.L6O_&g#l|g/C2 wTBJ!+н5JiS{^5bohބnIFGٹ]+@_\OJC !ɑv~.uwXך 6m,*r@@dh%NJL۱ة=DY|o"#@F O PʃK\wY/1A`j]~8!<|x{2>+\k [_H`ie}㗧̏һU˃U\#0a~Yoz.{״ 5ɏuC#Y \%0JNQ!W #wV+ךFm݃YJ*ҦՔ!`?5*qx*OMob_X8{ lрt˘3dbCuA:* }V}|ۏbER[fDykp@sڞhsOvNsy&(@ E^~/ Őrs=$v`yl<9s`Ka5'?ߜx:&!@!EZ"U3@@طEeiJԇk"`WԪYD4px|Lr_Q@_HbhK@er UmFc{żv-Nɨhq #o7(74M  Q@O ;_=;"mάqsqudKRiC{)Q$, WR̗clrD D|fLԐ9rjSiLQ;Sp@@ tFc_h wd2d$A_^h}Au@_ 6iX[g^|[ כ!C̏k;74͖0/ǐ}[v!@g;WWD'C^ F-(A~y 8L1Yt{\}xF*'SJW#` 6/TO_e_[21֪-U~ P&2Aspy>>UoՐ걆ϷUR 1Zz$pkLy#)޵>'\ SNd]G~b&mN>Ugw5$5]9Zp}|F7, v|h?LY`cgDI{:eRIh_Ɛ@`b]w;oP*s'Ne@tdpNe 7(*QO8XPSףSWSeу2t`y~ސb֕M, vfW#!J  0Es䓬#֨;[<+0"餾1Xwx<t=ީ~gMFK2jSK(A~Iy)(`~|쪰h6?!H*^rD 'z\t /-%#`W|FEe~}ԃ/ц/ߥ f?CǗbI;3h<7sؾ{o @U!% VueA1a-ۥ#~Ҳ,RNv|`^` (0ف2 2aYosD=1z 2{3(}h+2c~m 0A6AlꕡdSGyJ ߿!SXg rI >E$ޕyMݯRg,>dd*]p]**0a|Iw;i(R`-+Κ!ёV⑃Uڐ5UP:!/gNBĀD7$vmʔ̓p%9S:׎ Yaߎ]H(A~(),nd#23vrSڶuE-/**Wm>A~>cgh"ބ@1c /4M- 'P/imѽ-J _N0 㷼d@ J[4|IPC$f~փg7(g+m,Ȇ(T Rv""Ƿ:yՙY/k^k6NM;TLC҆o!dpphe,' wWZrG~V땦Pp%pjSѫpH֘`QJ%06?T\x5^* *-R=e /4A{ l铁DBrEٓ"gfPorH I}~_xNr}yooC9-@7'"֏Wm||[wq {hwfD8@-SI-ǗGsn#f=t+@`JS`p.#ý dl%P A`V (m}8_ȓq9ȏwsvci+@?. @vsv\s7I$0tW),nLI J\nHR3^ MۆS/+A>'ԡ4{]/.t\z^j}$o^<̗=tډ#|@ 6wJL Ujf>Jo~`WNe5C2]{􆶨Zp@rPD265ᆌ7Ҭ732qCi#d$ g>2޼hCo`qy>>Cշ4MRuѶ}FZ3ZEE?36!GeS)y%1gVQ ފ?i>hG x3wIFLJ0Q-=M;@ g{ϙm߿h$G0QୖԐݽzVQ,Rf>> nTC?%;zW#ռ૤G/vPh L$d؎iZYE 42=_Tֈ-&Jt%Evꛕ=2rM]41c8xl0-ǝ|g">,79ѶE|wt_ڸ1A>+q^ ]H@ NE">,,(xQzjQz"1_72'_541c8xn'!,犏1uF;LoX@b`ZK*u ګԶ$s NN p1%"e-T `?V蒒ס:9U:厮_ PlhvU}`_bOy6PeZ| w~B9c>l~ ٷyRX My| pA#$V'ȟa5 W#!`7Xh0nW 򻸓_JkF*V Hksudѽ+ H=O=OMݽ P{7m]g  x __PY ȷG?QK(H$+1 ıu5FXϠ cXJi>VշA^xuE^t2Z p5(A~ɹ XU3<,eu>SϧWkEkƇVE ;1nܘDC^kf|7>mG1 f$4foXO?ԚVN^GD+W! )uhgf"3"h+9.cf^? 4 ɤr-r… Qwȷ-Yz?E?OO?xD"2|KoUXSb>-S ' Uۻ}vjt_/2GO?=朽{z=cr=ܣc TTGczkKrjERڠ'[Z%e|j  :^4jP}!@x|mѽ!~E|'3=Cyp^y;)SO~r7UW]ۉDB>M7ݔw_n7 ;nSN9E/.H'"@wU/]J jsTW8;v>_D+ce{gg(  Q#Re)Cs"; M tPZd/\+a `e^+ WlN|}u (*mݺUdG |w}7}k_+j{{  P:y/d=P/x-}QJfʡtVu.$2pÙ+{Fzw'e?ىm 8_H$D+:۬ 7(\s׎c5y͛7 /u zǣ9c|n]a䛊MA ITI_(yڝ|8W\~e08@ Iwȏb"_KK թqt' T@B Î2bq:x8l'3ŃGV!LJoUR'}o P.kcSԔ|my(0Հ|^jhh? ҥK=\\dɒ1M8cQ@*#RОE<l6W&ph Lju4N*@VQ" ngbG(kg#j2{.8g+OUma^iG)lw=tuџg=ӓNuYg.Fh* ۧvBf}*#x}n󲜹fRdԼxI~<|lrύ|^x\~ecm`뮯uWΦlŵm'kZ=H/1y11 %vg2#Q2#_)8JO!jHF7R6-l .AF>O7gdSѶqF}?ø ؠ=>/#rZ;X9졞X}h]e[n}.Pc\"X#8Kϩl߾]}gb*<5kG#GrOǏCM#F>O#z axڽwXXRժr;* T" g|OE 83!ꪫeƍ6vZG@\D ~J'\m˲Y\> Tv#YFDjp7eBp/+RP++VXn;O}*zޢ]v<uRT@%7IE(u(=|+J &ϋ[G7ar[(p{VCX 8䧟~O><7z!L&Cwq-ZH|G?JJŋ驧"̘\>|wg9s&]}t!>P@G`&>vYŋ?lkY?4uU O ѻVRw:+=4QJFs,6VGWѥ,uD_z[pW'[jH+.~nfq׿Nq#^)XL e˖ XP疑,Q{@?#: ^nވD|@ˆmڴv)Of@\%,7P@\$XDd?TP `11p9R}e@2_@^X_+|eF UV9> #C, ;=xI# A@C}QA`P"^< !_Bk@\ ʃCwBB `'4^hM4;( H0@a=sdg;( !#9k M@J 5Кz ,`qJ.( `&mtf 9$_=y\^Dd=e3)(M@` A1</>ytٹ]g|O)/Px dqRxXҽw1c 2Ų죀8|g#(rt2hav"/t G;(~NNj;u 0P@x{ّA#e\x/|x&Co2C +FBX}$z1AIF= RT@`&>+ҮwWYx|v9 A@|}1$d  `*m=zOժ3" `'tGzc\$ot&A;f0K#neǛD'&Nej^hv #At#7W}*%忂J($J+uȷۊA^l$݃_JWw[&;*|}um6t"* P#U@]A:`[g-  ;͡ 3b '2d5"N:U@Y;h&B/B.%#ߥ A{\[jԁVe_eԝ|%BojDr (W 0򝰊@(h}m@+xqpA 52^11CP|o \o% 808L2룀@%f3w}3L%á/K@>͏:C#h[0 1A\0@H`s_>>*.C/c xJnh5D yOG M @@1 : P]0H`&>|;xWw8XSV-j<>@N~ʁLܙ! MG+A`;taX{E$SQR{;+ ]A`|yÒqC '$f(ǿgSƈ `ySa&.߄|SOPOM$ͤk甆 o6~_1B  `e"y#)V^+6eWȲ{ۈ2 EBC3 ;lDZǀ o,_ Pe[ɯbd{pwɲf2Ϭ/g6.R{ }ȷZAR 2Zg( `495!A]46^F:vP@`|"Mp C!1rbІ0t&] H|/X}D4mWU 7|-9wȰGW{o&yΕ(H#߾+l&ƒmqbNFꁀ[ x&#.[ջאַ0;2vmfNR1򹞉޵NWcwRB-m}yW}dגA,saR2eִэ9%?y| 6;@\:V_! Pm<~c_s,.&GD%㢯3 P6ɁIRtV{>眕&N'#+ @FWQb257mmтKi(Ǡ1K sP@F*%U㮏|pqp7=gID7Kj6)"DȦ(տ`~"/؏Y?\k|^)A&yF# %oX [1m8U`AsJ RbN⛊"eʹZ#$"#IG䣀U#Ur`O7AH0^*@fhc7A *L3=Z\:N@,>[W `.@@k7YNd}G9Pn掼tkwP|DgGчv1,Q &ԅHܽ}G}W$xO¯T6Z,  P#?JqU7ft{򕂝|޵MҽL-+ ykWDM#+'^ʦY?p@,L,8 @<5_Eҋ@%,&检@2I(#кZG0H 0.bE;Pvl糳*!qo ˾CVU?5tO?Hg W FoY  P=8usl߭qUI'$0&dDI>b"V\?1!el6ۡZBrdRC-g GpDc H{lD_.3btJȯX@{[ TFs3wĭ؝hB#SYR}ڸQz( $#U22,P$߳ޚ@":- lMɷ:UڰڛGಯpyI\rp*mU ȷ@$ (6t?+$zM@ ;zxɨf']G7OslKFm&0J!qys՗%nꣀ5LgW~w R RT@]_"TUY09LF'$) $z|o2V&#+At#x|P6O2^wx6jeOeƚ@t=CIfv'~U#DZJڕx/@A K̑ @hkb4a `M<~ `h\w+ [M\>saTҽ7>xv=+ǓCU 5 ȷ@*2h @.&C}a`dt*%SQbar0os/ kouT eM/ M`&;/fL)1 h|9| /D!O" `U02 @dJf}ޱ ;%Cb}@IDAT ֑!(r}ObHD;0-LLC@O'W}HA*X|K-(@{v 1& Y1m""`>Iȟn؃v'c %Qk8NDerkIP"9ApXDn'#m``Вo.5>L#<$v+‡! g$|Oe X|+dv':b+bhY]=N٪B Ͱ[9L7\a0)T@@gc$zVW0MFD14s6}Ϛ *"*gΩ],~9&d3lN@k ( !_Y H P~X&W2KU (;\Wu)L\/#i1$o-yub`Τ#EF~Y @*ȬoU oJ+OlG ݨ,:* `GrhNNl}Q $#ߑ @=F>vݳNTxhHT6E@2Yw}*6%P}.#v \Tn"57]Bu$W.YIH#&TeN>m`5rgF](  4ۣJAZGV:B#G]2oy5J!m;UC IQЇ2{ct"}['D՟@(eC-^dWaU&*/Ȁ K9s[O;=*^z뤱;NZٱ$M22L ╉w<:?{@r} U_(H`mf} I aA'O<'̗3h bѝwI{΅:J@{`&(8J1YMT8>OE pٷbB|0ȏ-ZDw488hP@ |[cQ EYF5:Yv-D Z#? eDП!F"f6W^ynF5kxuVJ#2+(nC <3 $"U@ O,A=/'wC3fO_x1}c;rjCT@@`>?#Re>u[c!c ,8QF.~ kl!3'0kll}koҶm; &mW_/~B_=KpD@`\é4/q9}e>kU(\> |{tÍ|-ʣ>~7+VЗe9shx'?I .{nmwA@@%* TA@ڼ XTfڬ^@lNj}G Pv{-BpX4ٻwxpQG/OwN0b[?Y/k~:$_ռI$@q {Oz!þ ِ@U|0=tGRnwnؿ}>Ѿ} { (@2[0'5a񲬐?xd(<s<%9<_xCx˲2O$)9Ǹ02r|l_t:- |1 x ^K^z)-_xvZv--Yz):3#ؒH* vU\Skkr뮻W^7xC(wPCVlϏ[0zNuyzXV" k%`[ii ˸>Oʕ+WWWGW_}09眢sW}nR)ڿ?xEECg8<4,bVw\,ьP:ct}vwxl~n'?'ȝ*d[e 8L@@4P e31Jc6@x>  q ^{5Ʉ;A'l{Œ !M׈x|ˬ ч@W v~OD7 ȁf 8-Tʦ)4؆!F ?!ܹ^z%ᖯ)n{x\bC;p$mҽFdwY)%>g|g|Ǝ@3 0¸wiK f0]Vd|_CN@tN8=gG7L22JH&/{9!F>ϰO8E0!;~$I+VP"(IG}Nz'J !#?>F{-}T=d-;ROm<H(P>v.x b|륔/}K}R-(1Ohhݣaitw=i"KyX3HY>[C_,I ?zM#\ixbL`8'/df~ZoH'y0:WPwcb `e?ctСzJ7Usω#x[71w?*W}*#!–&>vmD<._ S8TJb#?N7 '7ٍ3WFK}\n:~nXye'y(W3wL6KV*Z 1v^^%)9-74,Ρ@aڸDMƏ@@] .w]? @p|֑'%yur`*EX>Hǻ)?"!W?g3 ʲ -D%qr);]䣀O|.K/*}4o}[/KjhhPWAGq7  @@;<ށ!/w?qktwIM=9LJ#H  ͞nK@#޼yt79rD5jjiOP@@r@F'qGYTR5/gN Aq,.?1Œ`#+ Owy1 >@9vDrDa!#w}>0ה<Ȭ@p+Q:)wwCE+0reV,d7aɼ4V҃L3űv84E/ܶ%8 FVMgWJ-w I1 @vD5_9Q`u<._)o|{H*;y|'f&'M|(ѳp@@WwM6M9UrUC@8mf0pm\>\X;eBht'Fw%^6=Hna=A*rO$e*וk8TfhN'oD=/7chva+lR3:* rR{<.p[T PuX@2I_0H;m\~/s`@ TKk%]iݣ/3TD@9>;N#&"lek_?ڮlfSɷÊAF |{Vx0@EF a 4u)KoWi("&ke'p#|F~yYl, 4D|s#g5$},& {H@T7|ac* b#_>G{~)7_W 2+$s%Gb=R6uء/'<޳B>Y=a03@E$%co޼~g>'`Gl(?4@=/U ose5s}3"t  # 5.<.@h"z Z|9|t-O?M<}so>'z#P\B@xhv8mb PM $Cf}k/3 ŋA`B#."Z~|Νk,vtYlzꩴtѷ@vDTa(Pq VvwR#Nk3#鞕W ME 37)JcP@!`N߮<ْ$/virJ;ŵ[o6n?7f2N@ʢB6НuGjJ<>D4CacpKxd5/B&C햖S-o5;)F5k_:C=>'?Ia׋~nB@pp9]_9OCr7o7]FbzWorM2޽J `C|ywKT nJv=؂{ӧO+R[vwQt$y'\]p~Ya:8;Nҭ㏧͛7ӗ%{h``.]^ʛoIH 7Pp@K`f':bmExx^o98GOGeCChegPX@RY1]dt3 zZyϩ@.]F=>TCvBu]GڹKw95e]FvzHf2w I#/;BJ0.˭,w&=L Boy$ee` `&9B-&Xl?D0aH>\[?w円\2~K/|P  ȏ` wSn%_|} 1 ? " [T=Drh 1Փ3 ⮯ .ԧhŊgg4j''zW_}5?Øxxp>oq!fvD 3u]=]|'3 JB # Qzh^E@ \ٳg՟y睓=؁{.^}>òf.467nU"R ֢D򽑃AoR-*)0]jh:i4}t ?1^Q?:G[ R2j|UiFt%>g>Cꫯ?NtS$!nSb}׋3g'p њ5k料>˙ }@Uw}䡺Q<]ʂpdR{^ݔ y$;.5ΒYb}2F>/Us `CoFwuqCҢ}1UW]E<ٟϯ\R o>ќ9쟥|->}ccSK#GвeÆ+i\E'ޑ3֧ŇHtph<9↺ 9QM=؎7FHw9ˇo%6!`cf~LmVo+7o^|D={wSny|~z( Pvy d֟@kMXUM沏R}ڤ{2UA % Ṫ\G0!;vϗ%U~ϴpBγOUڦj2}&x㟱=XR}{+-'\~MT\<_vDp@7@jCvgN^F 93,%,R{Vy$}@0|cQ8u0 ߛo~StZu}azix8\@O?]{kL]bn<^IxpC @@f}.;Ao#7]rX&,y׊ِ$SLR;2qJ@әSmR bkwT V SN9eR6ܕ^)< )F>o[l{g1P;%uןēEVn}i#a+Ss0@],oށ!jg-}pYQɗ$=Ց|ul-j].0B  1uiI*{-[(Uy81˒%KtbJALB #Px^7T@zheS@U\ Lm^a_)׭r 0d'qcWUǼi!d1 3sJrOw O{?ӔCoc)Rp?%@ O&Dv e ?P3@";>%'c,N@SɷH#c&_|npxBS0js.\/on:@oy0X7S#^/[a|U *@`J$ݛ .8OIknb\۵my(Pe]FJepUW?f1w- t) =t&w#L/owm-:π!PYLW{\XJ]hׯ;!F>wI馛GU??< 0ؓ7<%kڮ",H_8:\-O8a]z=&oL۷oW/qjo[׿Nv/_{2dWywch]߀˾1'p'I&AeL fGXWJuw8ȿ+UDTV +_ eٹ<\K.=>A >G/Wu3EskꠈWQVImI76/&@jh _JQE@*}dz$e- XF>w7_W*;w6ziF</O>$=cFq_)L{vۘ6xիW/!wWH_6 %7thB3X\~=\eug7sυ*L'xLYe&RMx Z䏦Cw]ڻwz_E|w_*bٿ{C0s;7pkz-)gu]qؤ@mUhٲe]|>^ޟxp( yӃϓA al7Wtb %3we,)lhƈ'| Ͼ:CA0FݻŎʕ+'eϞ="1ޝw)v}Q(p/ q$hw/^LO=p/u7jϪ(j &ڝ|禕˒q##\SK5osU !* S0̯_}դ.?1B͝%],W]usy,R |O7|\ִ6m*:%b<߈ؖ q .F$NѸ1 ȁ&ȹ#,~&5@-O0#ʿ;B#w{9khNϞ=[IGڍPƅN:IÏ{/?cRYf w4\H$Rp_iW{[[[ڠ 8fF!߹ %0+TMa,sR 2+,֌dϦ(޽h  0C|y =566N B%Khb=Nӽ;iroa69rY=@%Pએx|}b4X\~[M.m0{fӔnHɛۍ4z^N# kҋw援v$`e5[>?+'+p t嗋۶m+ ڀ86PPm,._)ow)UD@ɖeDú7<_U3#_ T@8 }]у%>SD]vAA`'9cQ) a =:\U@r)6eӱ@Bx6OjW."VMawpܿ\&ikZ!2}^t&[>¤{Ȭ?+c@Ul5Ys(!F*߿1M֬Y#>Dy( #Kr@2E_2[%W{<* Poeqe1D'j?U:?'YM^y!|V }t(H ouLYD\ф֠K`^m䎠|wZtc't%1`(#k8|'e=m*W|/M ` +Zg8_~/><^jJ@ڤ{M)sbc Ȓ+P'_i.!gvARV?XH FK $-Z soV:묳讻"%)?C>ꪫ`?EفdБχl tC;|{˪n셮3 Â{g^)@w}.gSSbG``yRt|GK.o~gT@C`&ݳT?".ya.<.^@s~`$A A<> 7*3̏=0l' h֭M" iɠc+:* 0l'_eΜ9l2Zt)}v줅 1#^]v+ B N# PYX1 O^n&&)&f}d@ e@C {ňn" 𸶚Py0u]nRp]MIyo8nL2rxq @i*_v-=쳥Xds= @W}-sǚCK̯bd&q׋UF^T1xk(b/uT@J#P3/m"[G?_$+4'5#KO9z8lD{F0U.@0l(kel n"w}76t Wk :*  R@,>}`>b@~7?C먀O /x g{G3tMtqQ[[577S{{;ݻ^z%{)өJ?0#P@C`{4o7a'1 EH?61zY]~l_YǺFg;cD 5tq޺cWȠ0wϹT1@EF +_o[8]kk+~tWmF_~9[nV_:ް @lvDf!YWvTis_z -"{;I0̯$07IfG)(%It3B@ #ߺ,O| TA_wuH$hҥo{?Zƹs?NӦM'| ;wbc͡x=ޡT^$+ PWOQ4饆@T;wI_l?>^^b lU -C)w{?lvDug ȈǷ2Bn,TuQ(!Fʕ+<ߗRN8|ժUtC[(G=$DeL=y 1LH#裏dZ=Єyq}AJ`{$Ȋׄ|2ԪaWx!@3yd• g(-@>j $YCCʞ"wy<,{*AF \;^O#}Oh8]r%"k Od;/}ߤŋ˕W^IK,u@zj]P#8 '.e/o) (Wsp EA#|N<7n1s=G5U^˖-8]TJ# /(]b: %%zS5Ef}* `9J,=94A񮕔M#wa1/IwL~z Ix(<>/V|!G`.3?wϗR:|N=@4DޚS6=LKA L7HW]u-_}Yڼy3uttw5k8b.=wVtO蝶3w_RLLig}DkBtppXlɍ!E̤(5CH#a7"29'<ک xkQ,vd9f}‚RB$C|Ep8L]vx) H.+ x.[ ElºZas5^>tF~{y@ȡXh^PKc#yO $ `{Dؘ @`,e';}$ V P {/l,GFmi7;ҫ[mڋPB,~){)PeiT tOE B[{:O检LMFԌ@ ;Xf}%X2DÂ@.Gd&K|(/Z {^!18|/1ت9>){])H.,.8t͢[G7\\GЅȰy"ŎNI2.'Յn `q۵F~Y| ,@\~Y+`qnIBN PdŻ߮h2돇@@W gx]ױ:XwUFPs΍@`q 38@*]#;>/G2;@5%Nk#.Bfb( K@4I}(=cqctE `G)oF=;.!d!95!U3jef$bY#u5= xkZG@`,c  EHgqLDCJ8Y&Z$ֳ{)FΞ-nK[5fdlNks!>M lW%oI^@1۽"c(%+0^`qTW Ϟ[J'IaJ2b+%~M$sMIϼ 0v2l7]ՙ7X\#fM@ão㳆@a=kآ(lz2Cȉ x$/yk{čq\NF˿PE`f' ZB5,eK((4?08L{#.Pqmf⨡GWw:g:* `'dX½ќ~+Sȋ!c P p}<G),tHTVc_V&#ʫ@ R,Uߡ ,M(QHDto,\'\\~^vEA\u `=0&O@몏{_n(hA~͈;&HQ/pWY&~ۀ|,D(Hx|-/~ʁe{V @u 4.Cpٯb`vo٥` \p|sY u|?Q(" `ܳyR8%*k9CFuk<׬;yaI!+:h8U&ÎJF <*JAF^B}* @@ YY{$Y?(ďB0Wha].cp:M0_Θ]$cq x/8? `%cTq>QoȎaMe@`4%._f\>WB@O)(ĉuBd*AlYb 6'5NcuRBQ Zב=8LiOqᷖJAf}s3A%bp$O4qFx$-ddsIpߨfUȷܒ@ p6}0\3g69_Ik4 Ro\Ux$ CIMQ@Z`W<@f}.:T)p;!P.enf >1%ϪϏB6_CS먀 ௗWo2pL%(pgn,T u aLCO1ud `&4 DZ#"peIθ/~muQa0P A沿PH]cpٷjA474ȰXmeaQ@Cϭ :bqZiL$ѓ7t$t uc{?fȤ)Y/$xHYXHLRl6O^T =n|u2G\> eRcA@!#_!wC l%75,n#y`;$|n( 5`T (ON P@`u7H h ˮ `M>f+%1z^R{)˅&p#2G՟5! |8* n,Ҍ{UXL 8q4C.pُwRmj{-fBؑ唎wKH :H  01Ow@jBfKz#VS7oc!* T@f<|fe iqA@0Q@&!Yc IPX㡓(D'NI| 'ZZGDFV@l$݃_E P"3](Ν!_0oI Q"#`y! \r$zޡd8|.,+7b'JKY@`Bu>-Izzߡ Fg5sŋx|;/%dA{"NVi n  POmF檎4@4]uW)]m6*jU먀ؗOc0l6׾Ar(h   WҀ9-`G(wWPEZ^Rs&K~C|QC[mW (M$ H͡!Jp(8)8v򝲒,J`S_>+w3\-JƉ5n/fF؃S59l7?Pk<`Q(1n cK4VALYMS>Q7U PE{H@lC+>|ɤmdJdd#eSǃES1}  ̅Lx29AbkV1B  0ZwPp `A,ˎ<W}/\˃^ `Q9DctqCBF[Vz@l͹{4JR`ZJޜwuwN$u! 8gZGNFW@  SOO @J`W <8R*ˬZXf}4k,h pSK#YIL~zn&hkVdeS?-tb!pI$rd(t& j`/gAVH6BI4<qpQ܏>C`:u} yF #TtBy >$TvkPoei9: `60ͶtBF| : ` 76i&^5耀 ]-dww y/L/6^he#PYa P5̛=7?ͼ;UIӱ1J\Hap (;5耀7ۊB |68H1@JEֶ&->ߒqtj.zTscP}9WV`L n!XlJ/OHH% #1|(Md3K'tͿ @L#tcK~[Soѳ @|FRJ<}u `*Hg2 p7L\y=eī0[ ` JM/Ӟf!#,+ =@@Gdoq|@I (v;ޢɽtF{N:6bIJIOo"B2+ $֋Y2) _|3bx<gAdou| Zzrx;Dz3YMh}t@E@i(HwRZ|K,3x O~ec60smڬIGz7I4 PAoubƄŧUpvL'#1X@$jf)h &BH*M[T8:K I4耀؏yo[67^_h'KF~@J~x%{b$Y|d<#EFRW, 8d&ߗ]eg!_ %0?TF~yiٸYg9A3/A[J %[t[[ 5W[X_Fj/GEw^ms$GE$!s]Kə#Dq p_^X>g_Caَmpz@3?S7J7F.R>&${#|NJtJ9V:c]_ MSw`/ ٫F"IT ^q$qX'd~?+բciS9@@`>fDIE耀7ڊA^)`Bɔ턷L@~ku1>oA>q {i8\/9#_@F}@j8X&S3mnG@6}rM'zDfO0rJ)<%fjDAø &l|x"|#d8:פj~|;Ol6?ЬM-uy;Jn~=4H |/̓I (\vH6qY*t#O_$#_@xޚG=`y$NL06Ҩu" }]n~H$ˢ2/L|SőFt.$s6ޢI8 |#dȗszYM\ @DO&KۛS~g3 R9Y/\n+d">7p5^}uT `(0/(KW6 t@Jp-raJEz.=Հ, `PoNm, @Bw&gn>Og^@h)_„YFaEylv7)׫i y |(4y.,vq@(" ":Vd4˦~^+=oj}JĽ Pv1&883y~|34jxO{ }Mᩁavh*wbc/Q6Ool Pꯧ|47 {@b`W 5&x`?>u  pCs#}_Zv \e]J _耀 ?/(d9ÓӚ05::W+/f(2ߏo#ٷ R`HPo$tlԪ(7"AD+7y]zr$ S>'vO7I$ZC =d/9궩уX%#Q,8  p5AlP\V8-#՘uXS%1og^G_9] p%Φ[CL*=GDFVk"T_C@tG$( f"lUS'x߉A< `&uxY 1AT{:^ԥR=dwaSzS`<X1+F@F>tB=k@k> ,ǝ5A^ 6!P 3(ѨJGF~Xb$ @ oEvfݡ(4ޡZj*R^CŹD`$DTk0/$~{N iZ]7ޚAb*p2EBC׬BarK( ՟Q2K<)(o$(  P^Φ{ Iߏ;+FuF@S~Jb/ .@% ز)Zz^LC:mzlM,~B"< <#Gf1^6`%J_ = $p`|JӺ@% E+SNJIߏ uyr<=8L $4ݢ <-fDNȯzL $<# 1 F%|Z}Ʃk'rnj"X:2cBFx 2.1H:z"C?[ـJ@F~ b ^ {!٨@@G(uv 2dgkT_C(668  PwNap@ `~'gdxkwI}q6@@O/gcBCZj1I :@5dcyKQlR q@(14}ߧ|C }:T޴o>r>Kׁ. s: RX `ZkOik'rG)=4X9M"gM@3k0Щ KCCC}v@/" =swᄇ,ߣ L/,cHWY @`!Wjx=R6 /YyOwަ zex|p@!o'Ԩ㔊 3 0#;vLw>GnrJ<GIshӧOO M񹽬z)+&|/W~]c8*6)&255YUj^4hVa m)ζzjEk7X9ЁPx)&r0Ë͠Z@lٝ$ }!pgm! X"-҄q {IQٳ>,ɲLѱb>8qB&'$":H^sǎt"F- tCgψZNM~3p.'F;[[5{/ G=~wK$ 5.Lόo #IV[*SMOOw]pmiܣ]whA0}_+7zQ@< `㚁7,WVgI=2arP@$MblrBĴ.!`j#P($?yBܓ+Nq#?Lh۶mo|Cgoo}cB+e`u 㚂3EZ;IjON#2p6ެ]Ľ&tEG_Lm|?.ȳ622Bvw 'z): |El'm(7vzxIA>05)e(v琩= PܻfAG@l7Bg(6 P6/qu]wE\_z>Ivbj$zh P ˘# jW\.^ғ Tx4Fg_~|UTILL  `Rl$y~j=J/ `05U߯ig?**lZO~^*f'D"AP)10 Դ_C@t_!wzJ;(a/'l˴?~Ќ4ͼY[*!0+&^wfcնLc52R/>\],^SWW/W2|C"~,l<FB*x^{141²dʈx˧چه-Z[xkPI0ZfC)c Ev*JF(>Oёg JJ?%hk: 3( Ff} :K$S}'š~^⍸ _b"EeMٸ+jb[xKd2j{_&e%=J$'4ިM<-i|HC*kۯz=.+$Ta*@u6 Ap fea K—btlz"W,@@[ HiO YIp֭.PgΜNtMZ2WF=>[o@ H8K\O8bvy@^~x0-h^}UXg耀 x,H*T@w9rf=!jJk+"JCw #ZuLI@LI@iRWB^&2PJ?LmӟH{Zag``^yqo9X5,“o?( U"aSk~;v rG4&,@|$G-5Bl*Hͧ$4S۷o;w O<w}F/|ɤx///;tv䯽B8LOBV^JD+U@bǩ)~\(j{+Z.^RȔc.p&CȾ WX_*[w)JοK_W¨߳g}^ʭJԧ.Y)>K. 0 ]s=,Tƙyټ _K< _D:GX6CYܗ ظEp,|n?eVK_[N<{K6l'|$HgK@hWA©/` $L-CvW b4( zEb,PXN .%,;O|e-r/~f׵eS `21vJa?|bh  P =nQ6PZrUbE(*rpbBԢ$,RHRĥ')ZmM2EZ:x E":rd{ܣKuuuWpb`> cKgL-.Od5]sJu"ʦ)}LTKx {<zMgo_x/ `oU P}]ɓvMU"z%D|h  P,QM MٌTx#`Ob -H>8 'UEryPxE4Fb^ .ͯeX=x1.$㥲hv|t21 =F՟([~)fc GL@(T@b lkQcǨ9vT(|pэ]̛o)Y;Ǚvh~]-ZЛ. E+GF~Xc&049>:  PNkO;aeea̛ kz&׈{(1NC>X~>A'A*MQmu^;9FC/3$t]INܖs'4(4ln @$`#sHӻGƅ2F]K-I쥌,Ϸ#Y@`M>PI?08 V$|)vK+@g$9)y)#Ӷ":b蝀![ģz !T#\؏@@'%z,^^[V6}7{Ww K=Ӏ$#413Hg {l Mӽn79sQNÑ(h  P ٻ$Qܚ}S%`_'@@HM$jB(k #z|a1_Bkhլ^7? EPvhw@gE`nx TYXh:&W^P] 5љ`%<(,&{t|jYbXŨX/ :v1@e hAMcb䣀B3|zouA}fy@4XMڭMK7F 0GF @Fؾ#S~C&BR[8J10 nZ {tBXNÛ%R $gu'< d?a &`OԢč W"Tx5謜s‧s<2BM~/KP},,BBB:r"]GS `=,Lz_> %AM-uZ(5-9OԄ7iKȴ_%V `w6-TMF):Ԇ%$ p,  `!zc/uuDri4wf#X f5-{[|475E(Ni?H[6˞1ͮq!Es}#O'X<]xmmx`|Yϡ8T((D\Ly']l_=z_cOtH&&)$)‑oE6Z^=BK X[Vj-5-&!P߀dX PZӴ*O \ t:ZxNboN bn lvRJ[Y!ߚ@"(+S 9Z]Njq#18X/ZڬK{ *7 :M@iA7t/=GDF50!kZ]XR&/b44Zu?V3' |/]kl$EӥJ`oM @4/~$*j 'I-5poIͷ (,;,IF%J[CJV֐GFUz@8SS6>L}pZTqyX{J@D6'ďOdQU$#1T=gk"lk@) OwtVH)[ 3Y* %`cI ۥҕ`0uGLx=|֪ oF  `Et>,Tϲ's١c742[:& _؊'#k A@u,d>&4(-n+4XK |.a4QGo4SCTE_$8F"\&6dX P:R&N2/Z .I(#Q+˔`X U!=6V̝>@"&5X'H +"p>>: PnoLNOFrIW|[6El^'>›?G%cxU@% P66Ͳpo> )oe pyY3z_[c,ח'W@JA;,RbŽR k1zl&DPwIOv7VZmjI;yN@I 0cuڐ>:s7cSdUO@@`$G 5l* ,V\g10-PZzH(lt-Yڂ@t_bLB3kKȴo Άi}t@B胀>JAyF}W΃d25@ l@`gGĐca{e՛?ͼ\ݻ$Eͯyp5^*V]ymzd9s^sGsG@JE5rcjE\6w{=ZD{5\+߀W-IF%J[}g/llzV6XAm Pa[wk3Ng^||Ѐ\ȼޜ7ާg/s%NuױZ5"(20K/K'ʛ@*osFS&@C8GR67jBRoq77WdۛZeV@H[ŀL-`b'腋47uBC_g  P<Ӆ^mf;YtOVycRuA$,HE4m0MP˺ί}Jps+ t@JF6G]bMiU*XQXh  $g4:KrYhiOygB&)㣁@xPjɀyCgaM9 3іGJa?x doM,o\}e6qtW 8 }׀@r@\]b\'*Y忆kK NMQw1cdrm暪?K|k'L)VYJ@p]Kѱ2 ?EN A"ˀKA@`^|go}E| $y$QZH>Lie@-!r ~NId@ ?PQx}޲i IQO_oՕަ#['4 /FRpim 1\nV6mE `xZeEfKPwjzMLR{u ȷCsxo7[kM!{ɞUD87QJ+(CA g/lR\B '?<{E8cz0MPlYuBSdυuj'0y/~Ee$,% ׻Y|[2_ǁGI2)ΡeP4|S//3#8&EiZae@@ڰ.x5rz]6J7B1 ߯ռ<~&0>~`/ɹ~5fZv%SMR501i l_f^|o*+rNP"@`$G\9T ~F~)(b hLF4 0/=k0*i`yW1k8'*,0"y~F\be_,9&ߤDR=;+, 3y|/>\Bo) &ςjʄAM@&]PFo!]I /)N !18"wlZU0* 8oTHmu9I|ՑYA E@iE7pZo5'0_ůtRnj'蝹5ISэ%a}^i;HtC~pn!Z'wSCr]pk b%ܬ*oSʂ # 4G):.yo't?+2}bM'%5 B=2qnhc(kS F$:&&{mlH§5p PM6g7s2  zH\W~>c)(@}MI>#U6=nz!p l׋HW `Ȗ+M 5D\.%Au6ک`:  PB8m[q.\7$:! i,;@@`16lY{ih}tCFyI}4oimk@l:9Q1"rMq+@'yxDZ-D@rd%Yjn2YKhb f"^2JS] @@T%zX=2$Ө b [}, odh  IJMK'`#$ 5C`$;^KHV' aRMӇ`$|G73#klB6;}Aanߙ{e?3ؘ, -&T7H*E>:KuɅW[zH `t0]3}ư6h׻XOG9h PRMx!GNBF~UcR ~w~ᓼ$I zb5@Jn2٘} ;:$ -'^u}m6O:Ō}4XH@4}gn;kX`k  2W_Gƅ ا֮6ˀ@d#Xx#I#di `.Џo GN .7p6gV4nXHaRi=?'tRG&Uj脀+5A7L|UfiIݷDtֲ$|4-lM G1z%C͗ԄБ(s%xn 0 XU${?˅s^CBeѿ!G6*t 8ְ0^ENoqgG>&QR/̱fUFYWzU@,e05TNMb̓0DBWzeݝj8dﺕ Alv'9o4ߵ>:"E4̐tE`qKbv̯t] a@4 E%$ѹ  ;:+))ȶNPx5>jvg3 @`Ɲ~YJSx! O.B@_ D+`o톁o ``t;glߚw4FL=5^m.t<=G@l6;ZYKMǵ|c!.B: c])C! ز)z_PMr@hjh~V[$L+R&^ZKbIc@@ OQ{ ]tdg̿Go"d}Wi*u;zë&+ї@n2E 5~߇(#9ͮ6+Z)p<Ɗ ϡjt t`` |S_^9@huw6FPk X;i] ll4{?Fk(-"`~/۟x9>=[X @do75rT(go傰$K7ղT\u{+AM 5]H@lyO~]oejd[̚rS,=v"ES݆A,B@Rt_,{@?X'_#HXezbexi>NgQ[ ? &ycڬkisX*^6L(/KŇ@!\+LQLoUe!|h <~_P91(\{_>5~e-4yX;K#o,r Cׂ $USrR:>=GG`s] U F¸f烒x١oZK]>O V$`Dݣܯ?FTFbؽ̣ooNENQd:#&[0:'#_ *Oazߓ/ mrD^ KT t,ьh$ (?>oxs7MA"\ *c=ͤ"#2."iHe5tx~lF5M|,%Y)ۋgA4O,'Yr=>ʸyp?XCt @V~UU!~J aA.zoI] p<_+ !.:CaəB/ PIi gmӇih$#_*L`X OžOJ &wə 68:7VZg4lF%3YzUmP@2x}*^M/̱̕8]m0&cq=PX 'XgY A,G-}3q!M}rv(5Ű%fy P('0N1joQlbWu]HVF+ =w&]WB ?_d,e㔎 ?曾?A-,| /T?3/qf /}%֫g@@)QoOȑ@&wҔZJ #C43GXYguӢXͲt)>@߲&j #_JK?u5d9Vцzt@*E.~6<@=yyh+ͯr`+9df;'b0GVãnx Nj%W{A:Ɵx9|̮!oe})asD),@rna5<@H8s}ZbGMߡf{{ O@jR_' ?=7 <\jˈA*O@iR l*H?Gnlvg%Œy0$h'['D߼b| ̰RǂG2hMkORwR2yeN3Vzq? ~'fx> C{@Gƾ[;>N #?9؟ߴ[փ3񮬳8Hf239:Čfgo@73㾉| &K P_p\ 4;Ғ; kyC@~| FA8(I7(|^6E) ;fkJ0 oߙ t?l6;[q?B6+5μ }SK&탎nfofPB8aӣ.R0D=jkP:8!`^)Uݴ&4 f/}?JH5̰_O΍7T>f2m5 JDSh~iU n6@ wG)tlD<߾ΖY4k(ձ',mAQ?dx kXM dFcq@jo1)={I=.Tf׉DzQG[ PIzY=ŢvmK`InK3#X@&ɀPYNm{$GUBOX af#"Ȕ8;G6z!h  Pn~ ˌ6-@/M (kE(~X>r,=Ie?1oxO'~ @:>C| oN7'ؖlY+=G8ݟ5==8L/rZ;-+.G^d@o5od~emV=18xyCg8Q-t+n#y.HE(?K7ZG- a,jEf1M҃l]h}\ϖZȧ.t `j5>Z7 >E%zM"e. O(㦏|##X@*|?a|rCe_eG\ l䏱pں}Kԛ3;=$Y(#=eg{R6g.3~/K^ K d>}}<1-,@ O4`!_F~kxRq-/GbZh'@@Lchz?6!.^Ϟ$s%4Bȕڶ2oکË^}hsT>7}ٻfE蕔`F1gBhiNkY8~-V3% Rٯ *9aIv -$̻'̰L!jQD ?>Տ:X-Mt W수)j % <u{%X!`7辳4<<; fw0C @A@N#B/Ҫ=|ΘT/ FBrK QbL}"73oaohnK @&G(r6n59tVFuVw_@}G;> %M ;5ANMޑ I+ǿmJ\|R^ώ&-[cKa;5΍cWVcѪ^j&;| If&!wk/ѿmˇG{/{`|J$ƾt|R,ovjW3\${;Ek4܍TP?D+\ڋ0 W/ P5GPSmjK+YsC?`]Sc%;0>M,7o;K3O3}Q3ˈ}^T4dg ,GѢp*Hɪl!^ZoG'Ϸ`~S)Zttbc/]/$nbwIPt)x?,?pxÿNj`[l. HE_ר&9X6wojT^K|I8e9Z("d67YDD,ـӕQrxw'ɓ%ӣ6O1Z8'Zec菀!(@2ICMNavz񈒺[CH+!@@ёg(<)JKDOQֿ#GmJc٥ f" Ulzw9f&3/6E gy~RC;͌cض3ZM@'nJog{{ Cajxb3%Oa2"_l-pIeʲ퇒)Dh*?ws,3??jۘwZvJ$@$KտII=ϒş cvӟ2NB*BsE@-  zݡg 7m{̰/ic7xy%`R`#_IH"[xnxKIc@up~oh$Jcr}}cŏZY- %Lo=>}~s.'Oc^O'IK; GoEJ &=ӆه3(aiG;)/kcɴv8(/|5caOf<2@&Y~JD|A=hi#ϢN/A\lH7 c?|QqZ;K/?A*O&9^Rv|qacZ v&\6`FX$ /Of5'<O0`,+O·2z[%L4<<#?߳/,_-mGW\  _!g)Ӈ( Mc>q^r%%s,]h^bTG-,r @IxXX>ce㟌|8D]^p$cj]Wne0Rb(K#xV=j~w6Bks[z`W/sUX{wYfK B>XCӮkD麫 A@4,/?$؏Ry G R{yv,s"!K9j6#Q2xǶmIG(<ۻog;q [oP@taa'5>Oh^{][)%潆'  `58_o6 ~vLpS }G"ІZ pHE+׉#IQOE.P&66Ol:Ͽ`\-mk;[/FʀՁ4cf?*2C']XH&d/>pSȒ:}; EѨY{b}4[Ԉ[4{5PD@z:sܽ;;f`{=3Z+*uo`cDbskI!yKF0s寫Z'ʵĽj @,sBA>F~y$@;%uJs2#ShEzU ItwqS0n(5KI$3۲*yc_~=//3G:UN`z2Ə wNi#%F3>\Tߠ%0SbN%wUJH;׿3^zViT\~s^ F;MgfI@$keE5zHnTEߚ*W#lSe \chHv>]%S/o )˟icFO?Yd~'|{2~6|ٲerm/0@: ԩScǎ#ӇH0#Kejצu- F$@;{\X_>Z꠳c7ʇis K̕S~\H3ЅٞK e[nL5+P` h/*U/Tei;)WvnI$~ xG; 8Iz\-6#HUǎ+w_f̘!TUUYg%%%%r%l5Nt\s5&~vvr)~͚5[oɜ9s믿I&ɇ~({H} !eoɐҷc݆&z-ܗfHH`;;wHϑs8J^x> 6za:1SGs}۹ޘ @Sɿ{1cu]F4/RLb|ZJהT .2x`a'oQm4#_4N_|<ֻw#@ t tAeHM |}uz&t  h0 *֏ : c wOC$~p$VP jc„ sϙ:yo6q7 >q|e.?Y?sLygoN:H`g$,~_Hϥ[QLG?\SxDSTHt$ vJ֯S;F7>U򿠸\'W0l#Y,_OW9 /l4G뮲h"p F)iSO P=ܨSu+RN;4S.(۲< j&t$H(^zU~+}*`WR9B϶!. -' ~{wN(,1?r- yL۷C^9B:* @RHӍ߮NTu# JyTᏩ8ih3sftT͋H𵒿tR#3vǚ [pBkm}ɒ%nCX%ܷfXiӝH@7JF}^,ѫTŒ,kdy9Mҡ6_G7JzUؠWuRO>*  @E7|QJ݇ #z7`?= gtH\¦9z{vZ^iK2K1%H|WTTHP{FaZsTFح}m18Ϛɫ9%_/&ޱ[{7)LI!y)ҿ G {Y4t 0a\q3qą s~BAz[/oPQ_W@2TwՒ,{d3yGRvvି;_ɂ@TKuK_8KxW,u3ޕyQl ~_R$B= OBsqVTxk5=K78J˖qgw n3e$HoeeRf$@$@$@$2n}vӷJw ~gjxôS^":%/ϝfs-GN|5gTG?b=e"/J] ųɏ/^F$ O&DA#ӄfBӋH ddu<۷"Vu+Ma)nbQ,\ ڻ.>?|&H"7}(R̬:kS=E%M|t2QG $yEb$@$]vϨN:㹎oΝ;G6 M'V,ooXN$@$@$@$@$@$@![%]׬Y" o>}ڶ鸎&]9޽{/IHHHHHH`VwPyAAAg͆}ҥލ~ժUm̘1 xZ]Qg̘ڣYg{E ^{ݝ|;1I5|L$@$@$@$@$@$@^VO>dWӧHի?7Ǐ޽{GiM<ل7o̞=;fg}2ekHHHHHHc>cs5UUU%`=&apެYˆD\pR\\l;#ӦM3ϣGc=HHHHHH|y衇̑MPH>l[eŊF/Oj89g˖-uڴi1*oGgΜ)z|'֭['>p &Tۓ(zmIa,y%<<2oKXa[7{G^,o3k!w<mtsa}ohA0֯Nӷϰp1Άn7ԏuYJ+ߦS d4q^.- W_D&ϰ4 i Dž3慸6`",7Y2i&zX7ą-3#HcҲ`h󂿵;Ydzͦk!aU67nӷ3Yf8agoȰ6ڽmuǨvoN0Eҫl>6N}+7@Ba= Iim͖#rqڼ㺫,(#wvU%7s85M)){|}e0|2? |lN(#wClnN<0k|!v 4 {0 p3cRsy8cwie;d *Lx&#wc(CCq#ӋšVÆߞ|i y8 脶uј{C6O+gC\o<ڽ5ĵr[{cX?nP>oXkl\Wie厐{ޝ0M8l޶;oh˛->-/,wTTTpG._-=zpXK~~xw_vzB9>p"}'_~fk,ұcGuܸqoM2 \rtʔ3v")1痮Z2#[ X^e_Vzdgk[V^['ϩ,PNո=s5䧢Чثi2T&)lT@a,S925rX/CPY%//_-*C Nf4"_6QhM{7ueQ7V %3ȿYXZZ&G#cwWo JG=1eet"?MwL<)SהWJNzW)י;5n];˴E˥F-S;B9nΖsw&o$ݳ36m6Z'uQdIj- q![D^^F0Uu{f>8_:YE4(;#rL5>^ij7J/K.cY/yR=#:Jr h,MSDJi*/`-}\.KɌUW)Fv${t&n 3+KWR2|ȱ4uLvZ +:@9Ly<*̜u{{d5.uAۯCjzho?m)Tu2G7S};d3 euԀ>rs ӇcȒ2yhA;* H~UtֶrSP70U2}l }NˢJp0As~[SFO/~JFmC.I;pom5N Y#H}㬹2_uL{5/Sw2WKvfg`w\6zT錱KVIP+T x] `u각J2COX?xޚ\ht6ﯬOSݵ[B^_V6̶nZ7zdyʊ-+$r_hR5)[w&+)z,(.C\^꨼29SR\jIb}UPV6t:RJ2ʱKeqЙ; d:I]?oyr2YL阑m C,_-{|$G%G]0i]^t/GLOɪIIh9p+$u'RYI.鹻J}Inj<8,IS? ˊJ9`%wK%׾+k9RCȨ~cUs9ӥt yZgݥZ@Jz'0}!cXé| P\굎*Vh窜}5,68t~R/+07@ܟ5/i=.G{7 Kh_ڡ[6j}W zC:=WRrԿR*VN`>ÔjûF@Ʃ9ZHhs]]?}mayW; ԼwlWFqw5/*`SP M)5eO}? Q7o{D4җkԩ7ۧG)rPMoHe[nwߕ믿^`~mV`G7w|2לI?~QIisA^+G|[2] *[̼a6_(kMZ((K*<-ÒrQ 4nPGDv6IDATSkD1¸H?\),(i(E*7%* :  jge E\/4DPz낪8Wi&m(exޢr}qlZOkUIZT١P[4 U4ުJ)B<}ޤ Hw*-UiߪbXm^˾Qï+skʴV݊4-B)U6rCrBD.Q%i#RorPQ/CiV-2Hf+`[uB!F9j.2r&ߔU?$ ԏzٴ{yOThj4Je UDJRJE;d F(F혁 }^xO@VK@/ mCUv̟֩j5 5<0qmG;@@2t_ybmR(:P(ސ , ?B矵 謁,J㣞KˆMXc`H`T<囤Sp*&?t&gh ? dzFDk[qgݖgUyIy!ؠ/v5=݋=5\BR}s*OF]Ԩ234YhN+(?ސ/jdmvnMA4mtbI l櫢3Ô#P$[c0Kl—##GC 8Si[ xR# M'2 cllmxĵqtMUi-V6ӆϺ8މiڷ8yly[WnTu_k<{e;Zx6vc"ri!^NNN}j.ll&mu~jஒk~ݩ3(0eqip4]&^v`l ވkH`S^5gt)?9y{spb{<m{HqEHK4ok?^^.WIb#O\h6D@8F:juJwwaB38qL=XN|ou"y7žn2%qIaLyQ'-n[>v#ߖ#H6gMפe&1fZ7gtAiCmWeE^&K859ug {rj G<p`ȁTe^ ƉNmGuJMC<<8ppd5wȇܜ?F G0 e0;SMxѓ:4n;V{E2,5ŀj.xN,NNꍂBpa gwL"c> n]9 “m_&mo @(L[Ӑ߷mC7`gG~M(:t t[C5}g$@$@$@$@$@$@$%<^i'      JH$@$@$@$@$@$@IJ~r;&     !*>TD$@$@$@$@$@$'gSj      JH$@$@$@$@$@$@IJ~r;&     !*>TD$@$@$@$@$@$ғSlJM$@$=|@JY2 0UdSR5QRz $*IQHv P#Ph $/}"* &/JN$t8]?骜 |,"     H:T)0 _ PkR.      #@%?骜 |,"     H:T)0 _ PkR.      #RtR@Jر$%%ErrrڝTz*M˘W,S0n"iJ#޲k,G3gZӚ k"-a iRZy7h7},Xx/0mpݺ'3-Kh*dW.0r.(. =є3QVdw ش^-@!Sp&b:N}w0]&i o3lIѸ6ݠi8{pH+C#C>/uʢ!^zW2ҍ\uNi!P ]7 aLy[zm)KH;aI'Ք}m6M mqalhx?xC :xwN߻ }j,CSwaj~˧f{X{ ?}Z?tࢥԴB %-˔![~A>3 g7T9&55ME SMQyi))ZgFfT!^]]mҲ`&xB-T*ҫ^s ڜ釫8% ()BM &Oe2eh˞?-_&VX.݃2kWȅvE|6 p!ڜIr9+ gԐ(a|lX4 7|™4[#idi_y2uӐIcʩ63uIϖCr:uNߔI@ߨewֿS![1EKߓS'h256\LNԉhdA;eqGX̿[c{в#M.MԹ:cΉ/MP75M46 s7Vw ^E^nx4pPFA{~klqZj?'|<3[]*[nF{W^y5k֎- s'      SN9E^|ŭNqV'Èۛ@zz\{i&Oh:n:7KjF݈@;%P u]:tNKb@ KYY`ݺuk{"A@uuۨo߾, l5kָѾiOG$$G _rDjI.]CxJ: 믍tII!7L7xzF؋.HyR&O?T;0#ȑ#eѢEI!7LX3SUk hH%XDC$@$@$@$@$@$@$T}PHHHHHH@J> |T$       *l$@$@$@$@$@$@$<'H1233pb. Z|B+SO=H3vXHE1H!0eիys=|E`Ĉ7J׮]}%!7][Mk-)#      vNyx$@$@$@$@$@$@$ZT[KHHHHHHH+#      ZR G$@$@$@$@$@$@v^A, k-)-ov$qy{o̰[l1,YD6l C]wU~_%\"8xhe.--'ƍN{,Z0@B˥^*L:U;찘Akjj駟3gʬYdҥ2x`5j\|rnjKHxÿ;y衇dh"˓w]kSNi@o.0xN0AZV[J$ ? O>`9ce-%A?si)6ݪKAIG yͦ~O?=H վc묳r)w{y.3 GYVYYY߲>F:1S࣏>o~oaرO '*}٢ʷ 3]89㤬L^u믥@N=T팙3^hH2c vΊJHIIU0(]$rg[_,!^앟Dh!fz/&a@.s{ $@<󌉇M?L12Sc ĉmHnkQrHԒݐn|50I ywyԕW^)GMsl+Aŋ{WDg7w"XecUmmmt\:n$wڧO9(Kfڷo_ki!DG,O?$X oqj XC:&}mk8wntQtyV4/@B˱ v&FZ+$Pέߜ`;5:ZޱJ+[Z 5:8VKhљ+ӆ%d.\(-dΙ3Mr=t@"ģ}{˅8 47G; $mH{4Fu-[&^%VKHft'ImF{"chFDizq=- "`߽>|VK_M\,lgOJؕs5ҵo2ydsN!CD y6m5)[;iH QѾ:{-vgn v!])zN߹sge]Di3׿bŴ*67n4 .L>E7&3'DM$z>EM%Yb-Gyx;ai'xNK.5I !_~>W[g$_|Qtn~+q. MH^绛px7&[N =̻CGMi12 D >pwhFe?Eμ@ hTwZʕ+{96~;x'AHxÿPnv)W>6;6+,,L8L\Ѿ_=\s[]gYpO6nGV:%YwFٱrҤIiSyQ|=vɜifD]wxe6$lg6׿zrW( K !mXkLzgo ]`gϞ2n887o;ű; $}o7Ad"c"ڳvf[p=1B~םv7{W2Ex;#&{K,=QO>1K0 {krrr52f8z0(W_4z# T֏:7<#2NoiԟIҐ@ ij}FsÑD$ӏF@zwf ڦ1`fƌ!(tG'aDӾq~N r-!d 7|sHwy6aN6[oI !B{v:"%-!hu@7&krVyBcIM@Oqާh{Dw*ѣGa#~2[7-k1<zi^}ՐVXSj|c?uϘa#=Mf>m gHxoa~}&e#M!Ap2>|ɐl.ۆ({68ڹw)(lt0}I ^p,1MMy:Z5P|?xm6,hwV@:nP.]zl̫,C=EwwXN%߿uMciUZ#HJH`;վݯB7Z*Qбv~n?p=g(7w-P0 s|ٰqL$GXhP Rdy."pgFzF{x{fӾ;T 2-=EOrO:5V0w_MSc717 )fy'o)=-H`G־~ o]\sK chHQ6rݜet݁Hj'Xt'J VVIe|L81foP~NUb l {4.w5Xo7﷈{`,"@%?0@܄߲eKxx{챢SMlKp W76ñ0h8 OF^ޣ uZqǵWqY$$=: m}kj1Xcnϼ".nt֊kfʄ :yTt#%};s4cwEm Q >|VmS#yċAgDF41u#z#?C߷o_ѩqfGH $2ih3츼asws6aoȑ#UƌukeϮ:hH Q62\yu=͑|-q&فFmqVTs]ߋ7Xc5$x^TE0x{qLS壎:Jt@wޑF3 $@<7Futˊ-,G?'xfT 7py&&F'ͦp^K6-o-xÑ{GJw JoҏB^t;ZNs]G(zi@giox95@5>7믿%Dڰam]ŭ!2m$ij}7W|n%Θr߹cǎz|[XvF\ovs]-1uJ:@< #| k}̐\p6x饗ܶ\}׿vZ|^mD28 c pw}Wnh: tfHG#| #bD_t itHۓ@wKe!'@UUU3c}ݗJ5)Σ>qʕ+A~^ 7 C'xuF@hȐ!n0Qs9 wgG GGS춹뮻.j0VDZ֑f}1ap#C#HH\_}U;[FiH h[q㧟~jW^[#|4- 0yp &$dӍ DO :um}h̙ި{5 Ӓm@$5eJ (v[@w!̇cr@vvz}s=CkdNq%w#<# .ж?ã~U(&FXNT{78}ԊPt"FKRJ&ӿ7o)//ψ-]p7LϞ=7̚5Kt q?vhW}+aXB@x? z뫣ƞ.3<#:sJ˨$O?<䓂T쑩:jtE*sdK=ʃ$Vz{eʔ)m[g"_o}봵 O%wΜ]O/{ 4p}'HL/ǴiӶ9`0(k׮t l-*[KHHHJZUYYǗ_~)ƍ_ )+%  HoM !   M7ߔ?>v v"@%;f6$@$@$@m#p!ȫj"^mC9vZHHH`{3?   VjtSO=5j~4~'NO?=j>@^{5w˨QzJfΜ)?ZJvuW;vqr '4 }g1NSN;ge֬Yzj:txr' dO_6?I޽ݸ,~ e^bL>ZoFQlڋ/v_|E;wy+eȑ-$@$@$h)!5΄ ȸz~Q v'J>ch;8y뭷$;;[vnnlrgٳ]H)b:ves9ǸC$ 7 vDIMM/%W\qpB`.y|dӦM&N 34iR,o @ p$?H _={J7(P58# 6Tql~?\9u0Ǐ7#C y{'-^zI <?ʝwiC B}\wuҷoV%yM7Iqq`co;OF >1J3??q֬YcSn}ܷv" ’%KL`}L 1tYwߘ^l0؜0`]RRi!  DJ~{ HH#;;r;֣cTJwdۮ9WyY~@1nZ%ݺun 6kɴ& hiK3$@$@$^4k^Jr $=z͛w1yt555f}l*c=Cve?K.uU]e˖ie!dcii6 }hHHH`g'@%gAHH6˛2eفa{NN;Q|Cv]>:[ŇݨvL?3aminڽ7tޝav2;$@$@$GTXHHZAS#8g`=k`vLqzvzo7q/Rk}ĈnZv_!eQ\D$@$@$5WJE$@$@-8ꨣQvrWݩYysC?&ot.k%e2X2?; |U)"  z;-ٍƍ']vu"o{=㏗7p uz&'OQF εo7ʕ+e1!L鏙@+=ܐ8aHHv*;<%  v@?oaJX!kIiiGN7;0q|M7[ou[|bwdƌM`vƻMG̃HH IHH 9wqhݵގ{ XߎRcdҤI }=/<6GB!)..iӦ',|FKLٿꪫL0((gaf2uT9cL^3C3k`Dd4IHH &6K   ӷpB3};6L;%?YL3f͚e:jkk6e3/^,ݻw>}lm޼ |   wYFmFc M1Dvm74$@$@$g\ڥl$@$@$S_|;F3giDt}(0Gyd t#  _|_U'!  >bsϰ`5'0X'9; pk O TTTȁHI|/_ܕG#\GZHHHR) $UVɥ^*oVLqq~?,'tR0   ?ڤ,$@$@$~'s 5kHN2i$sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxU8ޒBBB-tD|"*v}DQ "6P (R =!NHnMe{rݛܲ;rggΜ9لfΜ KX @ @@ @$ @ @ #t0 @ @$w @dD@ @ @ @H3ґ @ @| @ I~F:R @ @@;@ @2" HG  @H} @ @@F$Ha @ @I @Ȉ$?#)  @  @ @g#A @$ @ @ #t0 @ @$w @dD@ @ @ @H3ґ @ @| @ I~F:R @ @@;@ @2" HG  @H} @ @@F$Ha @ @I @Ȉ$?#)  @  @ @g#A @$ @ @ #t0 @>˝?S պ>V4\c̹}o_g9;F ?X}c9sJB@' FWKǞ {m'.ŏ箍Mwt=,O?G~hU$ߗ 3tZh*:߽^F2Z"z5IIHj; @FI0⪚ @$$ @ @0֭j Uys|J]u\f\G2|07BmOY<[V\]J[- hk]^髴o]y飼\{[+$@r [ @ffן{ķl'ӈOb__$(nU1flcE E,mJkh8+_#  P%.iVIGi&_yb$ᙣQg]CG-rOi}nӭ"ƌ-ȡ-)֙_GQj#@ HW(sٳI~E5Jʏ˯' XVAnLlP? jT mmQiuY]ێʹ% -y%@.0cƌxcر71\s͕nqK… =>Xc~ˌ4^N;N#Y[^5yҥKc뭷׼5j H>$}LjU %{A.v-.dM:&>я[<%C=PeF{gӴj?ƭh7ePO#x:x#H?~P+<8cRxҤIo~3>ϹEK@?\%@U(SOž>ll=ҋxMozSxWzP{c*_W,| =vN,{[l7GQ KSSSx[m~gMib}qŭ7tS|_;~_UcxL@ H4O=ϛZZccӉ;t _B1Ow?w ?S br5 #JI(!MS)пh~򢘸šQQRyǣ>ZQ1E~zc[Gn?>ңUؐl =yO^9 H6RU#pǙgwqGqm6k?mWK,}wܱx}{߀&OY|uwJr3? VtĻkũo9_?Ob;O>?mH(__[v4J)O#^{큊W%^f]Mmk\c[%,Z(Ry9Gb:'?h=e16Ʋwgfٲegӟ ~:w!=ruNJ{kO H 0"_WwRbYZFя~\rIis/8c֬Y]ʕ:묳xG? 6ؠK҇ܧm^!_袋"ZoJu..|C{L-|pa2!\ʇo;~=jyn?WZH+eIwg6*ޮt']`I [u/tg{z+R+iڱ]ؾ|v,xXsow^)P|򓟌C9xRڗvu]pzޖw߽w}C*DCz  @p ;vIwҐ4zo[1׻U|F\uUĹTf=;6li3<o_|4뼤}iw{aɓ|0}Nr,^#Ou!o}[#N׿n1}Hwmn+-zƥ θEC;Y%=Ond=yQ.94 YZsoŴDzZȏc┏EG4d6;7) өj4dqbŊ>-(l}C% *I @`ҝO?x@;)A.-_N+\nܹsDccccz/};%faJŞ᧝t৻SL؝fNÈSfN_*.tIg?ۑোyIgJ`\pAqJdJ ʍO?s-/?:[8b m򗒈Gؐ^44H$?͞3bQZ@1M גoo}Ӵ..LϹ=1a-^y{@>KٔFUV|qiiϣ}uK;}w]uQ{|/^бs:6J}:|0DgT mcB MV'vIKx3;=%i9#z$i{-Mw{챸+"O3%%ibĽs_Xꫯ)qOS9?#-}cG:'c/OW iH6lөЬhz%I볳# 2.t?p䯵K,XKu\J 'J^×ߘ9sf|{+^8J#=6xs_=Go+S@  @`]4t=-)ԧ>g;.wûLB%%l_K˟fH/-_|qiX94;r%݅O;.EҳkiF4A_2;ᨶ",%5+w)ͫ.ΤҼ i·FeBrg\'W?V\Cct5=Vtg8ϩn;@*:ujqB®'N3޺8|ai8yǦxKR:R* OQӝ4^;ӈX]˿vz̪>)^1=dbzlyѸŗL+;m:G}׏x0dվwnGQΏOt_׷m9JeƏGuT4*n(>C^*3TƬK:_ViXS_2aCc Xtb#?,kWm_K&qrxF' #E,/FiGTjӭ(=tӨNo;IKE @`$$#&{4y%-OwQKKn%OsN8!;Ht+if4_@z](}IS&JCˉTp%^33e`Tv ߔV\^_Y{u4SO=qjJ3a@w4wDؔ&K +/$p;cƌkQLS4?ͮ~/]4ov$kʽj_tH? f[Zcqcp/762`i4wC9Ks/ V_3v7$NeF_ 7esyoX:F:>S{8rJK# #@@Q2s @,.ҐдaΥ5=njz^S4TZ駟.޵~!՟?餓"MXzUZZu. t1%F /ڤg%豿 )I3:?V$.(].ׂ6fZ 8&rO)gl匂I_|7oYoT$H  Ч@zo}{&z~u.f7il)ұ4>mHC3iⴟeIv?ӅRCǥͽ>sa4e$ywQB̡Z >S4L<ޟNw?KGQZ{/|;\|/Ҩ4#=ʼnƺx[_҅~@E M˴ i4Lz쥯EيJzI~wuSf+cŤ*%_i|f]ߛYqW۔4:eOOӝtp}{[vT&M;ÊSAcŋnri'LûST>siEzE^:o05Nu&K1ji;]HC!BAc6IĎi>t!&ͤu~馛"/pWt  %t1,]g!@@% `*ƴڥ- 0t}o8*%Si)=;O_9=)iNôO;̟Nw{{5Tz}`p-t%7.;/sLm}44_.J#:_ճ;t ap%-c__e*II˸Nmzi7UI7yHTgJwKysucӯ|[al(K ~jHS^nZf~[J F=r&L? p'"E ˗//>>sآtP4`k]hQ94;z ?M3l~f~|^_ q4d??="^SXMWx|╭"Z 3K^|BW>hǷ*/XhX0ȷ//n%ۖEŭ6,$+ߏ7uvE4LؼY_+PszC'1qJו[mb4c=+@F@_5] P7 .7Vk(5w}.e`}sM{ wmWyiB/ pRȄ+c3  @ @@ HkEN @gCC @+ ɯݾ9 @dL@Tj zT5L؝ecqn\-Pz P6>N|/đ;lS ^&<3':Ƭ^8tu{#񑈖Qw]j"@@B/,< @kEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @gG @# ɯ) @d\@ @Ԏ$vZ @ qI~;Xx @ P;k @ @@$` @ @@HkEJ @hx|Uޝwkơ @ 0r|a9SkV455zg.0 @ @ ׯ: @dK@  @԰$;_ @ -I~S4 @ P| @ @@$O @ @@ HkN @g?EC @5, ɯ: @dK@  @԰$;_ @ -I~S4 @ P| @ @@$O @ @@ HkN @g?EC @5, ɯ: @dK@  @԰$;_ @ -I~S4 @ P| @ @@$O @ @@ HkN @g?EC @5, ɯ: @dK@  @԰$;_ @ -l# @]`!GYQ >ir %I~-X  @T@~isĒt(A ׯ. @dW@ݾ @Ԙ$:\ @ ]I~vVd @ Pcp @U)|Zew̮ @/ + L n @Ԣ${] @ I3٭"@ P B-0wjM@_k=.^ @.POVx 5@ _}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*W@_}e @ @`PAq)L @*Wre @(O h^8Ȁ$?( @.hZg?0\ߗ @dD@ @ @ @H3ґ @ @| @ I~F:R @ @@;@ @2" HG  @4 @ @@ [-r0-#}2vvI~ @ u[c._Cv﷌]pjA'@ @/ H} @ @@F$Ha @ @I @Ȉ$?#)  @  @ @g#A @$ @ @ #t0 @ @$w @dD@ @ @ @H3ґ @ @| @ I~F:R @ @@;@ @2" HG  @H} @ @@F$Ha @ @I @Ȉ$?#)  @  @ @g#A @$ @ @ # C @@%bϔEn)A HSe @-v!irJ 0) @ @ HGޙ  @ @ HSe @ @`$g @ @`H$Cʩ2 @ 0zѳwf @ 0!T @=I;3 @RIr @@ڙ  @6=nvā 07U# @ mڈc!@"\^n( @ 0xIA @*Rf9sQG{W1iҤ~裏zy]v٥XǶn[|Gsss(H @Z /,C]iw ڴ &e]p@KO;8㣥=3Xs5l_kV455zg^*C @@'Cv/n]_wk@62?^J?OEZ{w;6/Yw#.?kϦ;sLq߸q"ՓYfW_SN[oX7믿~H @K w͛[ne,X +:=ozӛbɒ%i8fm֥ /oy,]4&O\']((-\rIqg>8묳JW;+  @} '3_~y1OGg;_?gyf1ON=/vۭ /Eu.b @ @}iG>RZ;MWZf̘QZ}yW_}8:w^I#<ŋGJ- @ @`$2Ytu{]'p {'/nKCnjeortN  @ILOwܱj(o/vmwyVҫEg}6O[ @ @ dN~9jiv'Ţoqor#Uxƍ벯2P_*7 @ /9oE}}}!裏wxEmZ\f{챱tvF @z$5耘8qb|7 뮻Ɗ+"MėgӒʔe˖Vݹɓ,v/V褓Nc @)Ps{~#ؕ2iҤjtcce:ۭ @ @`$/_/-RX{*n? @2ooo4?i==xEvێڽx'Eva겏 @ V I#%ks̉twص;wNS=?:rϗ- @d['0ZEor XUUyOk/K455şxg~tK4ށW^yeL>=e]J ;>tAV @Ȧ@u.0k_'PIlp}6g]w]*mY|(s9ͼ 7DYk6?i"mu!@ PM9FS-S7V&@B2䧄<݁q1c%GqDziҥKc׼5r4O.̜98 _/1eʔPrQ @ @M$%U*ԧ  @ׯh @ @- na @ @ @ Ar_]n  idju6 @.x#ҏ@_! @ @`U_UA @Ȑ@UVD۫,T$Ck @@nҚ~,TKooZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S@_ @ @$  @ @:$oZM @zH{@ @S: @G GϋWO3yQ?r_qlg+ 86(<g7l֊Xob @DMWG!A@7ܫ1VWEpUs, @r>_N)eԜ@E6 jQ @G݇ES.h=Јt"S @+o_1{XI[G_ɣF  0\;E @h[6'0:W@_} @@/-6 @l Hݿ#@5%XąŘwb.K<;@dFޣ vełkn'^h絑+X˭Qxp{m&=I~TD @&g>W>|fLrX4Nآv~?_7^6`  PI,  Q4=/̲4+=B2* h Ԓ‡~mKgg,LwSl$@YgGCjLuɬXF=oхW[N I~zQ  @ CKg_,yOşrj,?" @Lx/( y|!Z?R h/{_d֥e?oĄM?uc(B @ɯ^f @0>/2<scoWX) PWii6utp?0l'38q˲QT$zK[  @ B"  @"8&b츁[;PB$5B%@ Ɠ~~,t0^ @ @@ _} @@~3glh׾nrJI0 @ W c O \N  `0 @$4ԝ @ $PUI$Ϸ @FP@?NEjM>m+j-l @Q @l 4?}y,yX0Tt2$c +0~&UP @`tmˢiqF,zX}ODmFQN@+xW~ˤ=+Obrd9+ |Ը\wrJȘ$?c* P  >3ږ @hi~0uoY1  @ xo`#% @~)@IDATV<6{~J+cGlN .r4NR=R}S{/mz,~~I HG  @@ RR4Ϻ$=zvlߣP)Zm;;rnr@n*7B >)h*?rVzO @ .N(El4?G1NL`rk`YjS3_C>[4b| TU @?h_bY͟neWh /Xdfr @`$F @@,z$=Ӳ.Xk}FSs퇅F 44[ TSoȭ^> P$ $E @X6bB۲޺8&8 dU )o//, H| @oH? P}> @ P$L( @XѲV 9I~T@ @ WDS=}yepUI;9 PI Q6όeK- @,I~YL  @Yh[|,xԎ0Mr[:>[!@ ɯ^F @`;1WޕŏĢGZ7 I~UtF @)|]E=N1)Ѷm @*P . @H z[ cڻndFGn~2}ȭQ>v<~n|$@\I~R @h~X>>c[wӴ#߶  @Lh;' 0ŤpQ`g=nۮ*UOܼ\.OxrJ 0hI@T@>B5Ty Ԛ@~Ux T$Cc @bĩgG @ @ HV @ @`D$#d @ @`$gf @ 0&Qn'#@ @ +m9~i|Z  @`$Sd\`YdxZIZt @n>RVcy$b * _ @  q6?ょ(|~ @$GZH]mXw}y4w|m> @- ɯ8 02MO|'[^mW̏e/Rm^ 0hI@%h~>wхWv̟qr̻sooj#Xi4  @@6 I|D`ZL3Ϗշxe*yGˢccgBlE<&3\m+ΏHsgWIGnز+1%2P#ɯ 0O.ϽuΟqe+Ԯ;&l~ZLɺ@'SKΛX:5?56z @&޺0 e5}ŋ1)eBK>=CG[ 7;>[!0R]0iN<FnPw򫥧]mٜ]|mU 'huY-},zhXmaǬLWp6&[%=?Wz豟G)X6φ.8a;|@f1 ?[N|-Ɠ~>P1@Øȭ1!1 @:r?Vgŏ[^Cp|0(UW:#ǭxF3ܸ"62Ms^mY٠CQ0|YG5"7H%F?z;iHQ% P+JXmKea^u; ?}yMZrJ 0(I&@ZILõjfc\bW׸FLRݻ?zZܵެ`!0G! 06Ġ#@hyIHFbXF2?Lی#6B -{N_!}$0Z @/0ޔlb->\>W<XIG>+L~g!@`h$C6 @`l_g-ȷ..Fkn}#S]s^`! @JXsǁwig.+  Pj5m&@z{{n#I~8  @Xy7[x|nM,  @Ȅ@ODȾ@]C! @ I~m(  @ @$5B$@YXbyJ @VLy @`Tϻ3mĨI  @@5xzI  @@ wх/i_EOBnոFUN!'  @(4Ϻ$VwK2͹)ƭ() O 7n|4raE#@` f` @&ХyS wm]@D[@TOevic˂b>edK >"7v\Ye"eI~{Wl @ZkFLQ7f^H@ hʇ dGaYe"eܻb#@U.t{}ܘ?۽Ԫ$V{^ @XrcgG‡-c'%I~-X  @@W {3`1 @@HkIH`eZl*Ⱥ$?=,> Pe- bMSA0Ȣثb"@U,в8AGc̤8 @, Hԛb!@~, @ # @ @@E H+[4 @ ^p9 @{1檇;WN)gG @ZrcEQ6_  @ @`$CoF @ 0*QawR @ 07U# @I;) @zIЛ @$T؝ @ @WF*I`Y[[gƊzxMb|>yٸgE.]crfzk> @ 0T:)cV.νɻfJ}x~M.\,ץ؝>23>qq]@dKi~ "7n7ʪ\!zb#xzx7-=YGvO11޹&=w߰P{o9YϿ|V,ni_erۭ @|0.:?I~YV *zTSgwn wmΛz]?mڃ&\\Yo!@ @`t$]ڧ3#Otz}v PKg5ZwJuF @ [lh sKc# ]W:(=o!@ ;wcH @@$\ծƆ_xk/Ԣ,i-dC`ѣgEG_ywf#(Q @ H3ܹBm6`@5ǎׯV6.9 NF]mٜ?㔎v̻HҴ @+ ɯܾ2$pίn;ock`Ӊk&^v[-Bٕ)H ̟~R[_yƊyYj_TkL [0tneozl;P/lr*C@ h7??hom @2zeM+XEx=Ě;̋mIqȫ6Z;eӸmo\%^S`!@M=Dϡm˞klR) AI~;UH: SXK;w'q׿{X[LyNQ<hX-}6lg) Y2,0v|ĺ`A)E`$Cg&8|C"x|h,{5'u^jho[Mӎ?t_^2)PwD P"PcMʼz_Qh} ,|h[:ۗ<}y,{1nݽ:Y!@F_- @!кXnKk/ @ H @@U4wB ]ZL3/(r @?NA*] 7< oZ?fAW^IT@!&nvHUU#  @  @ PU.%@ @} H @T$Kc  @ @@m!@ @U% ɯX @ з$o{ @ @@U H򫪻4 @-  @ PU.%@ @} H @T@$s΍~qV[mZlv78XbEYcKL4)v??˪C! @ 0 Qi(N:餘?~͘1#8sώ-]tpi---xH?/sύk&\s͎V @ @H d>ɿ _B[kb6G}4.bC;w;xy%ݩ?cƍ|p1k֬cԩq뭷{7xcݫ @ @3gƧ?"`ccc\zw 'GuT?KƇ>#/-/B|-~C̹ݑo/onʌB @+No馎H?Ovw_}'w^qꫯvXG+uuuqG7-^8Ro!@*W 3c?܆j@ 6 czc6e 7Ow??njӱʾ\9ٷ @+豟Eka~Z} @jj>OC;lҤIqv ^?~.zй̒%Kz+ұ/K|_lTsITMM=^ۻ|mbfF P5=\O|}^馛v|N+Wqƥ_.cǎ{+`a[)* *`_Xhb4~ D#jbQ#AӨ D HK3vS9gf?uSygfYA@f^Gjɲ vi~ݾwQr"R>BQ|! O^WWk\.u]wXb; رc+_)xw9@ B@ 5)͕4~&u>ſa!Zu7J{BD:/U[G6@&`z[oɖ-[VO^oX .@njz_>j@[oyNeLvv@+\rO%''Gb qhUlxU-}ϔ_ F?nTmyR]#_k0@I'5kh;䫫yf$%%76K=[eLs}e@ WyJZuUC=#٣OVp͇1&A:#  `Ӓw}W~Z*O?۔)of/FC~~=؊/&99Yrss@[ 4WoM!?sgcRI~MHwC֟>G8 0%x /K7Jj!8  իW[{w-W/)k֬3yd/ '$59眣aY63|h'/@ 4KYjjq=,  S|km'tR<׹h"{nEZr 7OQ.߄~nγkڶm@B ]5B5|-׿  NM@*Oݶ[oKvUZ&V#r*/\PVX!v<r'JiirwOLLG}м XA@bQ3GW.1)=ӈE@ 5JY^%j5\fF~ŋE [n*cdQkkrW'|"k׮3fHJJطUG:{oXG@Z|>ꞈK:*8@/`Jsm&{ٳlǙ}; ~z{95oQ+ܦ' @gXQ@iIo~)**ٳg˘1cGO?] "ߺwDsQϚ5KڵKOEݹ0l0QY@@@)I~eeyx[>߽{wIJJ [ǪJՇ@@@744z=hvmw @LWcR `UwCUF@Bu>@L .΄)@h)I~^$??ݍD@@@\"7 @@@,)@oaQ   D.`Q\\,۶m?_Zݱc 0@҂~@b&.I[&f x=M˗!?ևh&󺪢Y$e!@ &{7{={O̙#oWORRRq  kJS?ug¯.Ғ=s27έ+o/ǿ!@ "SoߵkL>]V ~޽[U~X.RymF@3.O*j.ͬ@0M$rW\!K.ߵkW9s383 +  & x=Rwwj A$_]_bnpu׉Z`| / }O?+@@ ۟WV6uE@ 䫫9{}CrrrBL2E>3IJJ-/bx" p7KXx\@ o޼Y>?hc_uV.@$ :TnS')@p;Bkg:ꨈ?~sΈ#@D"Ojv򔪭W  0%ollԻj*ϢZ_'  uwje\(z Y$&L[ZZ*}ժUzq":`@@@S]i(Z. XB ٌV7e$z ./BoI#C  u7hWBRJBBRD y@#$ua@3䧥̙3孷ޒsѣ;yŋkM322 . @,&XRz0V5W~/ɜxkD—]>:)I.K.w߭'jo͚5`t2|p&?@@ :YKOZy LKsss_֯Ȋ+eee2i$ߦy'z@@@0&`{?KIX@;x\R~)˻Kfӛn,OwCuQ >|?p/QUVfP68@0&&+XR} @Hc%M=XX'#m]nT9k`q Vp7blq77HS9WvϫX_7+ )@o.e#`sCmmvi$+%9h @+ GoR*6<ߎJ;"OhZY@0_$|cj@Ϟ^@,.@oy8P['7|i}ekeՊ@؇8^j]7CX:q  `U| B vWC}SX"˴  aWAתY@IƋ"`}@/^wAKڽ(@I5DžV!V  * @˵ ý(׾!`@@0Y$d`G,ݲ =[WCq!]J;"ꦻ~Tmy2sF@ $ԧn: pňa^wΠ~a@ P5i*_qW+7WI".@0Q$D\FLYGԐ1D"sʧ"Iƻm^wx"@@rj ӧC?voYS&ȏ 'D TJ/I\- "ə]_@}4F󧓻Ȱ pcNK@jR֒[Ǎ JIge}{IzrR  mVPnWc!ZñtIMf"JoFh8WCq p%sO6_{e.8D A.'8tIǐ DI甹>,ؿpv'6C.oc@ 0"   L$? @@@I"   L$? @@@I"   L$? @@@I" !%z@@$-0XE@{x*xOvh0D@ F$1@@Yi*U) @ |i> Nh";ӻn8(4 @P4@@+ [7j_Uǿ  N ww@l&Pp4|Һ՞F)_wO}l! P|@l#lP@~MslԤD+W~4ldώ"` isUmx$v (PW]|}CD@vm!X_`掽M22w?+ @8EDB#)Fس_"J{mD@K[5몒 Y7jv,y/U[ V ɷ.[ &l! QzAA4I~X%42jSYK @)@D.PX [[-jeGUM0#14Wm RWvIc %x= R 6F@:$ ZI?KUMMB8DT&OȺKJ& hÃjl1D@ $t2%9!Pee#0[@%z\C8S 6,.Q  `U| @VJ5_OKzu G `@SFQYu{r˓FBmS_6CU X@IUGvZI}HNY=@ +_V3ͻ;WQW*H2sF@ VɱzpYK6 ʐOzd;"ETuMy> S,\M#>,MKZ#8P@b#@gjq19嫋ΐ/ N}#)D_ %T3)K-JvLx4UQ 1 ɏ 38U YKg j@@@@ v\N55!   `I   @HcgMM   *@o*/#   ;YS    K  !wc) .@o:1  ꋾr:GI~ @+|Ҡ%uw.=GI~L@*PEi^~ߊT   S 8ST.?KvTm{ڿ ?8@IDAT  ɏ(! 4'q7  ɏ$  -6K[9uH@!@ E@@%mڬ4 x tD$#z ;4~]eڌ, D[ 9R  _.w4Iö;d 2l,  7*E DKcV%U&О$&g'@pܮN  AwCTnhw~2p< J~8!# jWRF>PxFUIbJ#@@$T؇ CnaA@ ^ܮ/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%@/yE@@@ $Q8@@@%ՖxUNrrr\z-v$\fԺ\빵NUrZkM45e,  Hvvfk J㶵Jql[Fj_3qcO@@ p>  P[bMU  eo١a m8މM_=k   G*FerҺHOÂSSSu  D@@@ mh/   AH@@@ mh/   AH@@@ mh/   AH@@@ $ۭ%ׅŲF2eZ2k-  H BX@nvoU̡e kjJl   tnwoG*澳{\kQWY@@@Ia @"ܱlxLm<#  8P$߁N7%-֎v@@ ;v8QUmq۵X@@@Ia @")2gn @@L0͠@^i}l*D9g\;z̈ik,'3R1  t0nmKQ5eκͭڹXߴ]98hV)5|3?h5 rQAs@@' ;q*y,_(M7=MK?Fzu1H+xeۮ#|_nܸd >7S&m?M${k仢#R _N\ٵOOU% r[$۵/^1d\^QE=oﳦLI=,9l|zirlu!  ` bh] d%E]d_,//<2+@m˃E_=EuØ'VuR  v_vVe4BFoѮ`ȘX,mh2T[=`A@@ [wlh =?3طm y̓eH̶F@@ 0[`ZrOm`,y/UpV[.:P~طgl]ʑ.IIVk.A@@$P؅@G/#]ZY\_GK0ydڪKNZ%   S$ߞF-,]ݗH:5޹1}Ǽh  $@o,",g    3&ދ5!   `I   @HcFME   +@o/#   3QS    K   L$?fT   $R:   1ptJBB<3w!7pL4Iu&cǎշ͛'!@@@h $G@… #j9s{fy6m;w?Pz?    pd-R]w礥W\!ӦM|$//O[9SO?>}DT>   tTQw-W_}x<vr7/x?AVX!?ׯGyp"   -$K, &?.n;"?Ϣ Pc=_oY@JJk2yd}󥺺e   .|׫_?Se۶m:1c"]~^׮]k 8(rjjjD%,piw=+ɝ Ka}C8  I-_M}\j*ODͰlٽ{Beƌl*@]gA@m(RQIoZQ%L;y^K_޺KӒ|,u@@@ RLwYg< 'tRDF˖-O8ѿhW^ү_?9plذ!P$wy>j.IcAeK^'C,3 r]E@@ t$_FSw:yذaa)/vsه   L3ݺuGϿJ˘ c@@@ !1b?"??߿l,؏   @HÐ;}vzfٳg~cp*}   WgM0A1Q,Y2z2uԐ~0Tғ:^%_ܲS8_oAvWɯjKRbX 00ߘXC@$aFWMw9{'6l5kȤI5| .Ί9N:Zz~e9tWz;lAW& '[0c-4?p8qaL$ tzn707p?o o壏>yƍ;w8O5ɽى.ЬL|?@@I@uU^]Wˊ+N?\/O?\r%OLLG}T#B~3nt~tP铞6.M2.kR]feȌ}†_  X\y'ڵkeƌ'-x'ou Է<|1%NЮasvƦM%|/ϝ,Kgmj]ICo$PsO;UOZۢ&Lț3N,g&A  Hf62񷁢k.}t5j 6LU?Z ꋄrݻFXۗs/廢R.? qԧ}iR]ZY-]eE8VMwo75Rbwn5{@@C3{iB*W:J}_ׅ%RߣKjVzis   '}R28PWo#5\(   !q2KgZʍ p"  @H;t.2{:&'r h@@pI."6cDž!@@b/@{sjDg 'O( -_zwjߓ&iX4@@ 0SG~#B磇~e]Br(]B!@@I~< %[H@@@a@@@ th6   mHۊ   MHm:p4@@@$mEF@@@$68   @["l#   `S|F@@@I~[@@@IMf#   V$   T$ߦG@@@h+@Vm@@@l*@oӁ    o+6hlF;d @@@ >Z@N*nsij+Gn?FN]  tjwst\^pz,+, z   ;YSR\8xhؠ9   ɏ55!`Kc{"r{jJ?F)   TK `'OU5ڧZ2eRdA@@uƂ `y  v}k B@@@ b8@@@k [s\h    GL    XS$ߚB@@@X$?b2N@@@@$Z   @$q   HfhK%l%K Yu˒ $?;^M^@@0(@o0 WZ.W}7mQ}$%8   `1Z؀%P(W.U߲-oʗWou@@I /g7nb-ݲCԅ   Q$?T/ Wdqa "@@L|SX)4z%%Ţ*GԱP?_۶[6U%\}Ua0#  ɷߘ9 -z&crQ@@[oLhQɽrC8Ws;O@@ ^mob)//޽{Ka!@F*)fo?$v߭uAKjPd@ym.z]=c7mZNTy|$NM c}2dLnVjmA@ j' s5}x-?;Y[v$v-{Qz)_K;Z;V_ixWlfYc|WT"LA@@&@o=Q`@f|rީɾYZP,2k\4t3MZˋJ!lyOV@@ [mDhqPwK=sSL~mZVX}rǖ#  `=&޳ޘ"0Q '-Py||CT! XH$BAS@|zJFrR؊N'l   XM$j#B{@T!HKJ;Y@@IF"@n7Z~>jXr2埧 x%]@v" X[=>LP >~$t ycnZY-iII2UåoF R$   oL  `QaA@@p~gI   x;W/P('[eJ\9gP?IN{-@@IF" ؾG~|Ժ]nYҩ'h&󻰂  @8.8&r7Z%ʶWO.~"  @0@Fsv?/dEms6    ?lP`eIJ1lU!  `o|{Gk ]M%@@ ;7#'.] ՜,ISe @@ @ >{J-3 q@@I>   -k˜uiWpT"  a!@n>zxȀsO*cw x   p@{e<= @0y\  `):% \_V)7/]r   |~@R߸M\jܢWZ@@pI#`=o K 5cq #@@N"@In Yj u2G  N whWl 0[Vj,Pa!  IH;@ :Jvj9o8@@pIF"`qlLnZς  H[{qHLHN=A9Tڴ%K<7}mNe@@G$;tl%$Ox>~,-(*m2Y2_/H-[ &E@-ǔ@ AYr!B,  v}G?G@@L$i4    ]O/}y}l.II2wԻO$@@b.@sr*D>(O,MxAM@-HXE@@2$ m)s?>@@<Tn{+66!  @8B+ˤ٩ݧ  V$߶CG0OpMnn7E   & LQ_Ff&ψa,@@0YMx(p\'=͎M  8Z$O," |   `Y| C 3 ?M(]5o5a@@+F6 `QkGw-Uz?WlmnV,@@+@ܱ蟙!*7f@@!p}h@@@@H##@@@ [udh    GF8   V ɷ.@@@" ɏp@@@*@oՑ]   D(@!   XU$ߪ#C@@@P$?B0@@@@UF@s 4==RX }A%%;h@@x Kzp:odSEU^@m)8QO[d@@"Yd=^jG$2֕U5'  S$p۳O֗U ^UR&     oDt@^XB@@<ЁtD )!AZ`54;jyV'  H[qF~7hQ# #a20+PA   \p pѐJp8C  CH:tX ܷK/>X&΍U@@N+@i!`gN:^T"hjPyrڤ@؇   $h"<''G˥wRXȬ0֗U' AfWL   8D2t+]ԇ@@v}s\)@@@ ǜ @@@0G$WJE@@@ $1'B@@@ 7ǕR@@@I~ɩ@@@sHqT@@@b.@sr*D@@@|s\)@@@ ǜ @@@0G$WJE@@@ $1'B@@@ 7ǕR@@@I~ɩ@@@sHqT@@@b.@sr*D@@@|s\)@@@ ǜ @@@0G$WJE@@@ $1'B@@@ 7ǕR@@@I~ɩ@@@sHqT@@@b.@sr*D@@@|s\)@@@ ǜ @@@0G ٜb)5ZEEE(@@@]vn!I~=_-Z$uuuVF   hllP;H;gɷz477֭[ͫh@ii˧l֭[;K4@H|~Ir2AXA KII^FJJ۷Cq2fٳC&xC%p28N+7|S9s;pFt"MMMzv풡CW%#> >O4IV^Yg03ƙ^"  8@$L@@@!@q    w E@@@g;c%   x'."mkFM;}hOy p'|Rnp 7n/ыݻw4,,#+,34@@@ p~8@@@[f(h    g#   `|  A@@@c$l@@@,#+,34 WSKoȶmۤJL"'twyrw1G~_idO7J 8Dsϕ _Wtn" ~=oT=zuQ_R&NhB@|x^|ܩ ߿_9ٰaC6$''˼y䪫 x͛74SOmf48>|z/I;`=Lعsxg%))Ifْ4E+v)ډ@{uޗo/B0`,YDK}}\}RYY=UY=q _m[@:$ \r_^/wӟTƎ+uuuj*%O?TTT/ܡ:9+[ah1xGdݺuzmW^yE]MPr/]T.=WW/R߿ZvZyv &t-n!ԗ><䓆q]ENg }NNNRnvQ eŏ.U M6bv ?=xV ȓO>Y^}U}S} /EӗO9۷oOFFFuptu725o  wH-=zЯзM1N˿wΝv `k|[G[o%555 7t ~ԕ|5Zۆ%G}: p :S 1c@ʕ+V//>}-^{A8]H2R |:,z38C}AYxq8 EEEzq2 l5ɞJrɶ|'!!H"Py晢.6[$11Qj)..ƈ$3V ڂ˖-KW!?~|ȚZq& @|WSwgކ*j&[@'yWyh7/jݻwUtj9Kp%@#0_`z%j&g}z^K$ԨQ2k,6lF)YYY2e׾wA<tţ?&CJ/z< p%#H0 IMd4_Qz򭊚/ҥe?sLQ̵\+mVXy}b!C a"nş:uCzK7@jDu1B-K_Vk"A b8 |Kzzo5ϖ1=.k֬|5駟.ӦMӟ_|_ҿ5/wզc@0S@}tV7"3);f$1"'P]]L-E4Wuر_z9sY7|\~RPP ٳgC=?@@,zQU/4>E <KmB N-W 1@>L^|EO< >}>\^O@@ %%%2c /\D .w2FNC \ɏ6u!'5ѝoQÇ[Zdgg ou\n7\z2i$Q777ƍ K   XݢXM h"}H" p%ߪ#C@׮]J5#K_̪(@,q';N[|Nt֮w֑_P_ߓHՖ1} -_קncA@-[ӰX/o7֡h0[$laG"cǎ[i۶m|ﲳ\zmߖ-[dǎ2dQG D@@$N    F;P@@@ ;7#  tN3t@@yMډU$3!(B% 5ZFT=bKD־}j}kj=${s{ ~p    MSr!   .@w׏   4%   ~p    MSr!   .@w׏   4%   ~p    MSr!   .@w׏ h׮UTɪU/¡   q@H>7oիW`A"Z+FGzU    @ h   @< cP'@@@^A 8@@@x`xl @9rľۻw]xׯo-[={ZJJK~yٞ={رcnzYjjiƺvO̴ŋɓ']]yWթwVz\ϡ̃СCVpakР߿{S OB@X _R׏! @ 3ƦMfWDh";v 'Otɒ%_څ kgǎmQ7n|`z+.]ھ[!ZOmĉ1YBsN>@B ?!J" fFi_}[FF5oݻg[n;wZH" hA5kSNA5kf[6«'}ڵv%_\9ۿ֪U+۽{բE @bŊe6lGrʨAG}d֭s-j~8_mÆ s @ 'ZQ_@cÇ[Æ MCK,z;tܯΚ5Fe!WRd_͛nHիWPB6cƌ۷P{= PJOO+VS^>s3gN7fΜzj*>5@ARZZ-]}]c֭]v͊/nǏ*Ul>@HK S_6~xkK1СC{/r_L[lծ][_]z}ڵkߌ9o_߹s=z4*AI=:=WF ,X@nd`@HDDl5 $x W*[ 80/=4?VZ~zMec%O<9^paٛw=B2pi@an1=~-=[ Oe؁ @ /sל! ki@a>i>R&M\̙3/*N> q'@wMB@;+W?^Z`;F2zMO5j1?(0+k{xM4-kaZ0Z:qD[S T>"D@  { 99T=d?o-֧Y|yWdРAn#_ HOC0^ɓ'eԩS䒅 @| gP+@D@=>a{+2˜GeU#^?NӺ{ V׫ʿ}+V}8qb0Zev؎qܹY+؟={6jȝO<˗/]JzPUIDAT+2;֜y)`WOML^ ߺu׹sgwۼyq @B 4" HII8zh07>5o>֐v-<:<}Lb~zށlƍ9ݻww0}=r5"1?[{q+ub&@8 ȏFJ 䕀[ߦM /_*z}B}N4KU64u ;###95jdZ}?z*ܾ}<>͛7߿]Oшsf q*@ C@+!C?=fvZohqרg=.]|zpn|'M 2eߝsڵ M6nݺ0|p|^Pȑ#]kׯ6  !@D%@xsk5VZewu 7nlzvm۶5k{zŋ]}a5j-?4~̙VVt%J0`i~ ׺Ǐ &2*;xxma_~֭[۶mܵ(W=zisuǩlȂN@\ ߳uz  44K.e˖oϝ"vZɒ%nI+802έ@]{`ξU^ʋ͚5kOaZo߾ # rED@ OV aNSvŊݯ+ן^KקOPX+Weffڏ?hkz}` cǎ}Ϋ|:O9z_{^-94@遃PR?Gd=>3;rs]AA@ OƢ G\{Q[PϯG )xUVuWPOsmk4L_uhذU\5?_x)@B@ ?   `>   ! ICr   s    4$   A>   ! ICr   s    4$   A>   ! ICr   s    4$   A>   ! ICr   s    4$   A>   ! ICr   s    4$   ߋM^G\IENDB`ggpubr/tools/README-ggpubr-box-plot-dot-plots-strip-charts-2.png0000644000176200001440000020546113571311430024102 0ustar liggesusersPNG  IHDRn0i iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxEZr2`@̊é=3=#É;33׌1!DEPD~ٙݞo=2=ݟ*ɐ@@@@ 4iG     烀   @Br"9 @@@    H@@@|>   $D ?!'@@@@      Oȉ0@@@ 3   @Br"9 @@@    H@@@|>   $D ?!'@@@@      Oȉ0@@@ 3   @Br"9 @@@    H@@@|>   $D ?!'@@@@      Oȉ0@@@ 3   @Br"9 @@@    H@@@|>   $D ?!'@@@@      Oȉ0@@@ 3   @Br"9 @-pד/&Lj;e;3IC2A܌XP_ö1s~*NTA~d@g2g׻;k-0{ߘ^0s|RrX1?!/`&~V" !C @= ̭0/2dQDkӍbND0x(3 PJRj-@@@Q q)@@@R Rm!   PlF@ 1uK??:L]jbL&Uq-!XPM\;oG؟W벪4e~͂`_J{&MMUj}2X@$@KofΊ[\y X}%sɆ=JƼ߿NA~1I%R=kZ,f=l/ek{־ D4ɉb7@#ڏ?7_3߯ǔouƘL/9YjĢwN]3T?wf) 'Dr @>n>|i֬?~|>T|oKne:lQ6oMMݧL#pi|5˶p7e/HSV2E|,nyL0WfP)JCW ~})hP'O6'NtA~ڱF396/WZX}T&- Cu[u֏Ϙ_[Bͮ|4Yqufn˲m6K \l@.0b3j(ӲeK&ziӦe]iӦfϚ 5^c4>09ÌI?oٳjfV]uUӦMo@ ` @ (?coTUU 6<fe ;C9$kvC_}U<^8eؿLe6:n\])hj._xuO?9묳w}yE5_|9㹹"/\@q6lc~'˛wA<=M޽+bVYe>+(CyfoigkptI.WK/6ѿK]ﺀ/D k%rCoB>3s|bfϴvPa4y 0?p6ۙ`tSٻqjkjwQ`fSOu%y.3M;ӝ{fwX-@ۈ @/u]g>#7z~fmf5DYf[nŨȑ#`}kYgu\ ^{77t:t 0Tߦnjge]wGAرc]מ={=)_,osԹp抍z:4jOK_3W;p_tMW\qrM _-Xb\Y?=oZ_S8ߴYfӤ"ἆ41}tsРA%Fǎ|M~3Խbl>%Ssw&}g^ߛhmk usO7?CJ>_7lcn6ӹs<{5O]y 3ԩ_-U7駟W!CG߾}e@‹>1~;FiCIg饗vMK7ztE>oyzqYz2쬔}3LuiR77| (?Gyo Iڏ?n^qi 7tA_|y @Q Co]uUn3ERP@vs}D˳>gob-L׮]ݨj?[k\S-&-SjD}s|)8{̘1~k*KMwqGѩ_}ݺu3Ç7Im?\0+m_?yoz ;ޭm w0mG QYj+ZO T_ҿLqYg?z#}v>34n/NnFE" 3۰h7?S|j~l#;+`Wt'5_շT5G6O=QF`WRpٔG|7"w-W h4ҡ7t1}w|^ jGrgrĔ~hWX7ҷW_} C N%} _#O1|1fsWGj2ˤ^s'YN:򒢔B}X#rڗQ.U?qG8]/q|P7N87}х7k  5g+@Vu%_GuTƝ:Sj3jP(%ʛ)_#IW璘zZ\R-S~dQ_{5~Dk Ч&Z7mZ62}kv:&?nh>1mCL4_l|1_Uûj26U͚7C_>wT7XխHI70>I 5|@F,矻tz2ڵx4kZI7f i]v ٣I}H)5@T_5SMn3"sũK.ѢkLk0+|SsX+,~+u5[-?`|BeݬFtYt?3&fjnU }"zډZ/i\ P R( @&LϹEIJ׍Wy |~5OZKZ5^}ISԔ;ceWk%ڛ=V˴mmv~MMfLۑOK>|oZ.Шƍ oo2`^z5a٤4P\SɷA~>}gXuOϚ=.3M[dZBUa_clH3d㿛&+澡Q&la 7'nVwX4:S`{ hW@\sM&JjkCVֲLM-_UVV ,ǻZ*_/4?\rIJ_|̈́lI#W_}età!vA6l/8ݴXz N>}X7CFW<.\+}c323U[eVei˾}7~? _ #(֫HI)n=>:P_4F7ѣʛ-]zb^3^}5p-IР}l?.uc'_Coc_ êWc&&~x~:r).V={G FFԂCo[P믿 42SMftG;c͖[niv[t#/O_4hh勒nX5d7eAs )@ee駟6SNuA/5W3k$?L#Bnjjz5WM_yfW Ӡis 1ckʯnĉ.@Pͻ*)gFv50jUO馛unᣏ>ruP=Q7veo] t#F#mI@7[GB@`1mHž  =ӼkZ |y=ޏq4vzs}収̯Uh(=^7 &Zjeh:3\WLՄ;Xh  [DcQ~6Mr˕_vS?/6lk~fсk]H:.]J3V3 f[UMku_ϝÅY,{ ygoxf鷨\y9~HՆ[7O Ќ]B% XQ @YT /ԩc_]5mڴɺ+|AJ+5>W3z5W l\kqM}ϭj +YUk6ߏ?5Wp}ڗMRwhO*O Ͽ:WjI%^LlM|mIK,L۶Lfaj٧?w-1/-"Ǧ ۶*ߟnpKy@@A P O ;^`Μ91cL7Z -uFGh&кꛯȽLɾ.zLU Lev9sod6Ey6q[%K}ѬI9l3SG\j9s_M0۴U<6mYӶ#?1/?ӧfZl Xc-V벪ڴ3N4Yn=FdEh4T U@76ze-<&P*z'|1Ng/VKn^} ̿lယMO4 IG!WD   @ W@@@&@   TA~{@@@ a ; @hGޞG W5k:DqZe\*?aJC@ƽ=  _s2NŜ XEW9̟94oi~<,@-&}4f\d}W0%! z ?   @\r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   p`@@@r+\s     O @@@*G r5G   pf ?F{xC57͛77zj#  N*tcK tL2tL81ȇ   P4ׯϡ#  $K ?Y瓣A@@` >:   @u>9@@@  ȯϡ#  $K ?Y瓣A@@` >:   @u>9@@@  ȯϡ#  $K ?Y瓣A@@` >:   @u>9@@@  ȯϡ#  $K ?Y瓣A@@` >:   @u>9@@@  ȯϡ#  $K ?Y瓣A@@` >:   @u>9@@@  ȯϡ#  $KY'h}Y/LۦMs5פѣe]f>ce]l&fM75쳏i۶_JԩS͂ LUUi߾}^6sL3gΜ0/n4if͚e:twwUVyo6j袋fͲM>̛7ϕߢE Ӯ]ۚ;w1cF-[zg(9v,lܸqffVÍ=~B]K/{.@@ @Po߾%o(rUW͛7Xo؋n;:u*d5֣ꫯΉ {(s1 Z!d:}hIwPM;\ȹr-_or揖oo ̟oC=G˖-SVfQsfĈΓT#{c 70ߩZե{lKϫ5*gZP={S͕aomQ裏Fj2Ȁ Wqe9И}uݻۜq*~0=ύ [la^yRKyxYa̴iAr)Y[4#mx{ۚ;ؐ!C?ό;_Ϡߊ'f.jrK*"0e:0ģ2Z eۛ~,ݻOÌ9=_4f_:;>mC=dZn4  _M`ua/+O\S_~wqn=[ot!`ާ .tA6_|7Zagm. S(nFuwɺ# HB^z}VT~_%uմ?bqvn$4ie]̰aÊ!n@JKf,{ϸz ( \`I'_V[]R o[,Z[.ȬFnrW˷]Fx  W7kh68sku@8p`ljbh ^6͗L+U|4-D)yKl z>i]7۷?*Ɵwo2ˣ{&c,Msluj'pv3Pv[Xw}W+Z6 ^E[;,".GQcLp@`yn0@@vc0{UPg+.d⮻rׯ_j`Ke^cfrTûۇMʰxra6lvL=ՠuofm~嗍֋KoV8g0Hui\ 4gVXh`,h;h R n;Xx5?|hh馛[u]g6m];0c+rf  @~o_ wSML1SR`&~~M3g~r|uv }O9I /?ռ5SRX\RLsʧ+ Tw^{ZlϹAp\sͰxt?ռW}\O^eUܟ]5'W3믇O>wcǎFɓG}9SLu૯r:~ɝK:cu-N|;v+CF>vX7xeٳs0ayPk=-Aw=ij( e)H3fLQv{[F4RkݐM@tgH =#.^K.1&w꽞F뮻;h_lGPD.:&bWb& H|kI4`E(8L^_.%TX]><[V%H6wA|Y 2vGˣwolwsiF-I}{,%]CsN}7Wu|cYfen(K?nvAn^Zk:_7&݇rg".R}.؍S<3@JOu}^Ǘ>YF=6[nq3iФ5g}ݴУ/UK}Yg~m3%W~`MvU>2MR͔J  _7iu7_7Ôd2 "! @auAt o]BOJ_nVZi%7/.}ʧ)e׮]E>]o׆- B,huS@kGojj3;jjP,f~' y_w [p tՎ]}w4*nQnѦo@=: ˨뫶n3:.>1])E _],ڶm>S Ԍ&0OKDkږn.Xo5\Ջ:]_НLn)TPKgG74Z}!I-C)4ɿtitIjE٦eFM=yGYKvϚ]S}l뻮Z}}k3x_uuSq|6͏km{hZ .z[ z SF.NO ҟ.Շ>7%|YM v%l7jMj_{B|YΪӈRpXT*0;ݼٳgu(ȕ8@oJv:H x}m^ܫ_k]__1 W?u#ڔ_5 \_͓-}-$|M/O ;_t베aW fS2M}쒂K>3)HTЯfȳ 5H荨|-D*oii}O${q-zIOAO>\ve&h?=-B-yy>].^fFX ~Ν;VŎA-']W@S6Kl5DH#(`"Hgyf`kSR<4Jk, ĸ,<{H LW :m$ϙ>_yy sok؃W^y%vL#g^k\y~"@2)^t0}v)nt<,=Lae]6czl 覃lVfBJ[f2[[` e?yOl ?ƫFۿ?eys"z>l hX^]{XH-'4z7PcKzG|60PgXݾut}{+4 /0r{"}SHnk[,yr썽袼0"g~{s7Rfnmhh7 @ hb3Ml֒TUxgWޫ쓚!Gk ާh툟DL5 [lr߾}Aj||\DT\IMg4ҵJDt;j¯&m]TcZ5QGT#x7}ݗR-T.D7.ӪAV{%լGonJ#Ǎj١UL)Z_[ˬͫBE[JDг}CFUt>j"nYJjeo.H]MzG㻣iPBT~W2d4i%Lu׉&FGY_5 @ Ht@7"_GofCM}6<._A_/׆!m>/=IA4|S:>J7b[Ao< i\ QѤ ꟬,2S}/yZ׸, E]^泾ꮓdn Q10Ry??_ǗϫFh:蠃 Gilk$׭C|q|ټ" dD_y啍r%Զid8sSOĿ{ug/.ioNj 4UZ`]y|>Ѽ ɤ iTSpUwe(>_ƥ_G_kQq2϶mDշ_}y 5؟66wWˬ_f곯~z\`G̖@7tk%Q߲m#ײb\ɵ\̖4P''{x)~~WFo_5A>c 9_ynv?ZvmVh=`7_^w.z)7Z^߳hRo7  $:/CGJ>4FMz㶣,ʣ*x8HjfT_M}f< }1|=f5j+#- m+k{]w}To k :ojk3LR%}~s.}Zw'wIUts@-2%>&)W ʨ8}tsJ^|yE@tRr(\fGE}obr[@PXd3v+OVUp>|zרR,4VmZ"V_^mwyATpj/پ'&\tC7,oCPHzZѤQǥտYAn(h~Mٳ=>Mk;顑+pQТtG/>T _Q2꒼G2|w -uC S07ױFo2FA5&p> 9ߴ I!K. @@pDuPsa5Mo](F)zqYرcbm/WL0 (USWzUmsTN:T?U3i=]5jf檹NOtOIUzD;S&qGIj6gWK Z"eYި_΅w|KLA2+hh _|@{5׸ǡ?^-)t^m{I_Bjmkӯ\ԍoR-gJʩOJ7Zg~yWM|nߊLA΋O.'}&~nG5,# @f&ɺHE.6қh`,(ɮϗ4RNz~'O@9=hvlz9Z[6? }]]k4oΕЪٹff/S+TjA-ow;G2ӲԾ}{n n6T_\_w!j? 馈w#I^ykWV橦\:hGd9+{_î>>ϻԸIv\fJeMyfپwzO?Vfe0  $6W͐Ufb+Ek8\k~CWl]@O }-oGm~ғn*E]@V- Uwq)lnqYR)8֨>Mwo֦waucLS(䆊6ᄏۮʊ n&DoFhEuuTwLǠZ0$@8Ol߻?;s`4,g؋|$\n/T۬9eS*޴E^e۵"bؠ=ۛ5v{'tch[fhxv3@P&F.p* yֶ N]`|r]曱6?g,rW|[ئe2 #ۧ;P`Z>k* ,C3/^a'=yn]t l76?fmfa@ v@;a`Em `8];o 9^dka&lp[s?.kAu;`jlC7 uЍ;#,,A~mϻvXAn5~uGZ xASW=Ϫ`; }jZ膂nvL\e\j؎#x衇rZ~DQjm7p@d@@ @`\_!VЩSӠBz RQAn/Dj<_X 7xzy5ڹk]i65zN{iLGϯ'@賥'G xgZ5Fןkfh$ &[#cPƹ,k{0g6.q~?]B.]E$ hLcaoNAhB?;`ȑ 8︽Y"ӸC[ږn@|e~tBqO u 3bW.,t!QmSAW=W8Hb \#%rOmtLA~}+e# %O6JꚊUN]@b eoghC@g`P< @x\#;C!@@ o[ @ 8t@@ 7sǞ#"P_i% HB@(A~i h==A@@#@U@@@.@_tR D@@@<qg   ]    @yV@@@(A~I)@@@ǝ"   PtR     /;[E@@@E'@@@@#@_w   @NJ   G h3hРqfI:{r!f֬YaQOw??\ _{@@gqF.?w5cƌ1'|Q7ߘ8)1Ҽy(e\}a[wy̘1üfrۍnĥva.Wwa~W3}t3x`%j _I Kr.59X U@.˳V[W_}F n 0yG>쓵|\ve)Y]?m4MA}7|s/-[_~{5M65 r˅5Z~1"˭:eq2kaF7 JRI@J([;kZxꩧy>ppWm{CI@_k_wu]vEC\~@>=W,LxDtc @9ˡ6@gKYfnQ]G:u9]3<;ni{wupWw_פwZlƱũ l?}}R*WpG@J-@_jq @ n;״\zc駟J.I4|Ϟ=E]TPQ_~Yݟ_{欳rvs=>p2>Fm&'M׫0T6lX{npV.b@ 䗌 ! P:.]Gi^z/R6c=SmN;픲7fwiѢEޫ?n?5(kN8瞮]۩wь?/zySzswu#k|׍/[U-e @)K6@(ꫯnn!C㣻>oڵktv{vҪ?S^W=\^5/m۶F4G}dN;4 i)|jݺ}mժU8֬YᴟczYM׿ L#Eeag Կ[s5]z\nWvM5:>?=R믛[M ,p)rNO[| Ղ+tlJ3L:ttDt OI&1n( /̔ ԛA~R0 =zt[/Ш>Zr>رc" wduSB}ǿZs=z3eS ৑E [._eU¬S7 39ꧯ wG(dx @mk: 4`hSs^-E5/G)pΖԿWvm't>DU@|r~JڮTˆO>$kv\V]u0T=/۾zODX @>%@f R@A+ilIɬ4>ʫ|cv=шҳ>k4;̔/| @4b[! JԻwowSٳT /efA~Ti@R J  P""onkoy'c&w[6p|1I&SNqE&n݌ewQF5Ii{ 5^ӓ}w ',vmOnqI7?|:qy @} ח," PFA&!W{w TgG3lTMOMwFeZgM>ݕf^Æ s;0}^;~CC=4|ĝn"h0=틒{v۹ifmf:(w1}1~{fj_O>Y}ݍ @(@]vvw>G٩Sff.  YG1 }ͳ/w馛UyJ~]wrM\r%ah{w+]릃:m4ӷo_/UTj֧ܹsbeZyU{1tg1 @= P_ @Ԫnf5k暩뽂|%cRol u{ïY{ꩧjFxݍ W]]mF|1dȐ_kAYya=O 5h=H &\9KM~ #$k@wQ *3?ިjU _Ax7|pbN5 5ZG@}g!D^@$@@? İ[   @(|   I O@@@*J N7   dfI>8 O@Jy 4=ţiӦFHWI<%гsK96 U`„ #1Z0!Pf26@crwXF@ x뭷̨Q+9J ȯ1"Pzj TS$  P?Gu UaAB  ij1!  TA~Ev@@@ I<   @E Wi@@@(@ij1!  TA~Ev@@@ I<   @E Wi@@@(@ij1!  TA~Ev@@@ I<%2MRj6 E51ED%ЬA ;F?Ya  g:vh:w  lJ5С2eԩ8qb#?v@@@-2@@@@%@f   B l@@@M    P R( @@@J @_d6   @)K6@@@(A~     /2@@?`mo73eʔZ_}>7nꫯۼ_,X`9s^ @J@HSO=ezeZnmvjڷoovas7'Nh;8ӱcGKݻ#8" X}b9ҬꪦgϞ 0wyYguL6m/oڶmʸ 3ʱ ?8A+%%ion~g<ѣG.|F.dM̦njgc<2tԩJ$@@>>h3hРE+5R&1bݻw%\Ҽf˸ubCta-4Æ 3Z2gώ.1oyeUUU&z*^zɬ a&@Z (ȯtA۷oN*h޼y_׿nƁm|2;n;6';y@@ ^ؠ5xw3fn^{l_pZAE-+Emf ;XtE2@槟~ vi~6 @j׹7d!;yu]+[lmoxcn.>}zJ   IW_uRK0vlzݲoQ?33yd{[fnn̙3ߟX}iܥ}[c5̇~l7' h15k1S@ ZkcJdJ[ͦhN=Te3 I  @Cܮe ~oFnҶl4cǎs16lGck]y ɗm}ϴ~}VF}кzl`?|3tP7Bl+3U>S - @k;3 @hze5F7 ><̚m(򋱏u 5ڥKxBK_|jmWO7O;Sr  TL?ggy'Ezr*l<  @lpSK/t87ѹsp/NгYmDk/wڎdLmwYfe߼;QГN:t|G[nƎd:vXpDvI/x9~hG m>S׮]idZ?? HB@C@[>ٳg/o#W*o#Z__sW޸2r|5I.Wy.pWvDiuY 4 p 5flRs)t ws .%7/+hgɌ !Ze7o^5۴i5otFt-߯|~yttty\>OtN~wv-=5/l@j1.8PלG}[k)C@#<=> *?W>@(@vp:n"O|uqeDG׋N!?,x㍵d\)'c9  Pl:EtDty!m룂lo#Z__ʈ.+i{?~kv쪺qec1G Aw}gNla[/Ш>E~xEHd`ԫK,a.r>At/m͟ 8'n\~qUUUq0@34'|<\jּхс}~ZRtu/}^ N2%k1kOYWb! # _M}]w'O6}56pÐ' 'J+$%Wy5kn0r@@ NiĈfرJ^{-ݻwAcmak^x!|͌.lRu);TH]?5_4tpN3* Plw.o T+)1@ߦ-zt '۪}:<6lX'Md oƦW^)y꺏؇*M-oz뭷*̙3y-"&Zy @6f6ej~}8S0{i?=7Uϴ׏sUO),:,C@!~C=wZX_=+7w&ۮnj8?`n喔< H2~Ǎj4}ȑK .HYWou݇;UAIi!#]s?3wƌJh Z1@ M޵4jԨr?av >e{Y`:uOv   ؑ܃v!~iҤI` 3yݺu &L[ |ct؁|K.dˇu-fO]W3뺏*2ғWn[n/l%TxF`+YkQwq5e P/j>uQn>޿?wjv/@hNnW H W]]j2fȐ!sεZ)_+kEpYge,X}ȸsy.۷Vd/{Y(믿nn|Xm&u)3FOipMF䜮>crd 믿6K.FŸeU!y of3/rRG|Y&ȯ+!  -@sl[o_n{^}ꞪwQ9]U@Xl[mT'ˮ"Q[SNQ @j$V1ڋ ***W潥{ 5RUUEYH򛅙  Q;'L z݈C tM/W @| E@@@ I~8#   `1| E@@@ I~8#   `1| E@@@ I~8#   `1| E@@@ I~8#   `1| E@@@ I~8#   `1| E@] `[cA HKQ9(  pÆ K.D<̃<!."nݺ 8|Zpm;键]JQQmI@@@'H   I~sr@@@'@?K   @ (?'G@@@ ~$H   I~sr@@@'@?K   @ (?'G@@@ ~$H q())٤#Ν;t vF@$fV@c{s=XpPW_-zkЖ],**~X|M)..!GqtI2qD4hPm߾]L"K.Xvnwǎ+X]v^  ;W^s=2mڴ*!?^ҥ|2|[p\~~UԏZPb  /K &hժ\xᅆZ4|ӯviw-رz!O=\p'~qˑG٨ |>}碋.ۋcyO<1؀ X]+&At`h6>}L0Aɓ[}u~U͛Q˗駟.r 7ȋ/ؠ2x`ټy~_-}m/{? ̝;A=+  xH@;7n\ >C5i%>~s9Q*-J*{z׿6JvuWZ?\O H$FIW@kN2WWn^yQ?`Q37XBdOG^\r%zUUUnU(o<ꜩU,# |[ #@bPnAAӣ>*=z{5kW\!bڶm_ߨ%KBGX>pcL 5s-ꫯ:+-B~D}(  ]H: #uVy#F>gQ 򟒒"jb!Coq5׈W_ uV^߿`u޽{ˆ W fedŲqF9EKA@,@oѥo @_<<*=7|૫oymkzKf͚%v_jߥzlvvDܯ{z!aj=Ux0Qk^Mʘ1c|ޫ;PUVV |6L*555Mk+jR@:^zI6m$,ZHe_]WeժU2uT.|#  ɷp@ b_Uǎ6X]_VߵkWO^O``WE+֭[B7z&j[n2w\ӧ]I748 +  x&@@D=GUW]ׯԫY}~P8C~>^]V1зo_馛BF=pw˭ު3諉)  H4 GUW/Ϟ1 L;Jyu;GS֫222]d߾}z]v1Iz͞f<|?  `| %A TTT'|~ҳgZzU/2jo5I*l;w:#eÀ 1U;0[C ,G{?jRA   `7|(AB|WtpSpf?70*Rs |!CB/_6W' Pk׮gϞm޼9pY@@,.{@aC ,[P'3W{,X THm \^\ }u֭>_:𕀁 @@ [xh: `T 8rnOVW}ِUv]V>3Q3ZԄx^xٳeʕ'5jwq b&N`ԣ~; \2  ` |[ #@" gW#rϵ&M AJդz'OntL5ǀy}D.dQWSNꫯ6:@@;8D[zc>IsEEE6]APWϭܟzꩲh"MP o[ٲeJ  w<*ԭ>xxwꫯK.#O:UސGW DM/jA^U#_|?@W0 ~({QGEl\nWWɳzm:Ά Jܹs3_|Ţ+Px^͸oM*WWg̘!W0>\$: @@ p%ߤ˕| B -}}@ L퇘"  $I~4D@@I퇘"  $I~4D@@I퇘"  $I~4D@@I퇘"  $I~4D@@I퇘"  $I~4D@@I퇘"  $@Zt~"@|.2dH|@M`2rH &i%]n;键]JQQQss   X\+@  |n%"SRőv47  YcDvmz;5Ii+   Hm=t@@@ Hi+   Hm=t@@@ x/F"   Hpt!)Kb nW|,B@@g- $eԳ]H@@@Hc   MHm2t@@@  J mdmhqh!#t$I7t@@s uXM<84 @@@XHc"@@@ xph   ǢE,   & 74@@@b ɏEX@@@L,@oi   "@   X mi   a16Z}ĝD"$(  ߉sP@p~ 4D@@Iǘ"  $I~ 4D@@Iǘ"  $I~ 4D@@Iǘ"  $I~ 4D@@Iǘ"  $I~ 4D@@@H@@@^JOEw_xg>1J.@o   N$#J86GܮoQ   h$1@@@@&$6H x@IDAT   I>@@@IMn    @ϟ@@@l"@o   g@@@d    $@@@@&$6H   @   Qߎ-ݼ6zxJxN8"@ $q`  [mRNIqD @\]? @@@ o9{Ό   @\H@@@h9   U$? @@@ o9{Ό   @\&߳gu]r)H.]$''G "'NuFݸq\2l0gΜ)UUUC    Hx3f|yyyYFg;Ș1cOʤIrE}^~eQ裏Cz@@@h.'*馛馗_~vi)˖-ӓsuW_!Օ[uQFIaa|ᇒ+}~O?Tu8lD@@@ Q-ݟ& -xܒ9CLRRRߗq5hO?$'|TWWKZZ f޽ҷo_vQ?UWɜ9sM7|<ر8Nڵ1 @@x *cJGϾ1»)_\GgL9If<;BylLᆱ'[om?OjQnr?y=WۦM_OOOٳgˈ#ͳf͒@@M8ctNsrW}%//Ͽ~Wm5\;M}    )`$_ݞWWه5xB=z4۲e޽[ߦnhP2zhqh%IA@@@9l=Jȏ>h UM/Q{l`9Ԃz5`ΝzP!lC@@@ aoDMz!ȩ`zgUOA@@@l}%?믿 6[o%jv}UԤys5^p k|Qӿ{ƌ& U(   "tI_馛[-ށ㫠dUV ^W/>!   N nWeffJ^ʀW|VjPjE_%8@@@@]ɿ{GTQ{7eĉRZZ*SNuu^ ߾v-DQ෿92."}!+و   @K۷o`hӦ\wurq'&SgUQ1R[[_ Ӯ]q_~'TP ن  -/~ex,jCI}'LMH$?Ր!C;ԯz.6a"  `J _nmc.3g ZkU )@iH_~IKKN:E @@S ~!'2Ԧ/GJMeȆ ZJI5ަMD-s9_WUUp@v*W   $@7P0@R%fA  U WKٗjCFAs k/Iƍ'CA@@@c MqyGXkwN"   ϝ;Wh@@@$$u]h_p-+\@@@@ @B|}II~1cȻ+[qz6!   @2뮻H,    8$j}Um'tRZϑ@@@@ G@*Oݶϭo@@5;$!p&N1_Yw۲D%F Rw: - )iW%2[ vLHKNX>smG@@eyK9őeFҪ.'_']M:=nb24= 8tB|x@4iҹs87! ]YU8-KK(Ez)5HNw#9%%~ٳG{19#3Gr!3'   ^w>w*7iW5 q @@~.ddI߄D $,wr˲emVg ԻwG}$7|̜93@@@ևZԇ4wчy/O׮I~t%"$$_]'^{<ұcGy%/\rʮ]^I&ansX@hkq*΁I&2qvt5$$_]W٫2f1cD~ȑzG㑗^zIMc\;a/ %[rtd}z@RO+>h $ڵR[[詧[4x` wߕ7 p?}Uq|;FD_xO;:wa'E#ZF !I+ި<Șz$ӦM1G0 Gv"nWSS(*gh$ד[E6,#m >#}uדŷv`)OD [ $$ɯӱ222 _VTTM|# |>NluOI~WKZ^ ('NJqh6ߦc=0z!Cbڏ`@0@WUAc|\o   HHTj}?/R'7F ֗J.|Kj}g@l($?++K.bK2O>F[p\s5zL֭eܸqD@ Yk8lÜm>/l=  4$I/Co=#'p<⟔O^-Ϝ9S.293ezc=&z?@@uRqz;K"XR}U4f@B&Sh:uW_}U_YY)˖-?~В6l5}ymXg@!P{6^\>"IIo- /H߈Ñk'w$@5wKn]G"~Z"P g-֭+R_?ݻw2t  `.]SCIibuUh >(+r,37!@ih:Ng0.+Sf͚%wy|RPP+?\׿n|# E|^8s럕66}<,,T)]=Y{]ݝeb@0 @[|NJP@@^ݒscnE|W&)/x.goQI lcp,YOnq=k¹"i H7 'RwuH``efl-ڔlB'@@@ZvM\y6Ag fqvw€YA@uؽ;[z-Ύ@ $D@*PS9?- 4MIWx yւ0{e? @@E|Þf<)\Zu6 @)Ф$\6nܘ9-|{OBzA@@_Wy~.8WL#I͊x*@'Фiii&ܱ=##I3  OO}y$!]kbӋ3樱$@T-R=zb;=.DBoۆ5!66T!*d_O"^]c~4)ɿD}(  ]*6$9% |؝*6咚٩1XA@ -6Sa_N<Miq!"<_C4ޔ~ W,m|? 0^I9  XU[_~[}>oeyh ^v5G @ 4J~[@@({TR}*̒dvecj[+^w%ƘC0 @'PQ@$*_'BJWO^KJz_,  `Rn7,@h^܁zHY:  XA$ D@@ 5> L  A$?@+$W\ W*m I~ G@qWmDͮyRSyz*@0i4h  4n=zYg/G uE%}JDo{Z<_ϛ/>NEHF/u{|Rj:"=X I&Pz6^y^*JŦ%gQc @'+ۻK|+5tV#bvؼF@ԗJ晆{S'@ o uΉ -.Pn >J," ܮ@ZTJ瑯GjVo3a'2  O+E@3 8)ֺH@ޯ{ZOzXh7E}@@@0I    /   & 7`@@@"{Mc_@@(.0|X*hI~S@@tQgP@]93   q ɏ+'C@@@H[Ξ3#   Wɏ+'C@= @RμP҇o,iB$Mdw@&P$$vA*hQԇH4@/ekuđ-  I~,Z" `c-%zIgݑg5O5vC"qtb( 0.@o܊H@l-PXc'$U֪g`U qU̎#ڍ%|5U" 1G$1q =]~KDKIU uSKv$] 7%]5Oc];[Wx7[v}vݸ- G42;"=c5vRN|&_e.f_}ȶ ϙ#;۩qHfeO!Wa曵VڸdnWǎtJ׮](_P# PX+|? l!H@Hf ?'wsՆ:>g?Pl5~~3.6|h]Q#ϐ5% yk-^@s <5y:eeu`.]h00Ec"@ )2;(N_}c']'zn#CTReVKkg% "@ iԤ:^gp^[b7&G'rYDhnodN #P.vOsI  o}  ÿ_뮐vG=kGJFL H8* @ Tm}M,NVF7Wr;@Hdi +_w(Yg/Ӯ )MGr)Jǝݎ@"c"u96 El4rUM/JrlH=m0bhq \!ekޗkwjw[xPR/Q%; yt 6p^M\R)]t,#|dCJ=W$ߐA ɷ;@,-PSPj*^nvGf@lI3;z0G&@  L>G#ͫw;u~@98<%BRXg@0@*ϋؖ=_JF@d OѦ XDS2{#E= %@ ~  P{]NC wWmfP,A ]$#L@@}yTlz1V}\o8RIw=CG˘Q9 `v8rL'4Ln~X_7rݢ%}wTϿJ+x3 `Iͮmqj?h @ 77gCiի[#)ZVYZj[mUBކha#\9)ɽG|^~ijT@$ OҁX{n>ZQ/VV_/(\U@N-KܕR# `|1=LB* bh]S1dSyxbnrk^DT*@MmZ[xY@@ oLhMNOTC֪8@ |>8s'6U&4  K$\Ak^=K~x3FRQPؓ0@UߨIgJ}Fـ  78 .pϱߒ!?22dtwq^c Ds xKl#a瓒 d3 @ݷ@8%G`vE'JNu8d~dFEV2aaIWlunWR]v! /%1 ]G'v,K/#s6ne{N{ sCvm wqpvҩ#KþJG,ycI6#q D ԗIQ\'i]v؊   & 7ـ@@@V ibdر2`iݺuQrO?- 7n(_ 6Lrrrd̙31B@@@ IL>+'Oyyy>ӧ駟 &x'I& lyeƌGI,    \OgϞ-~{sϕSN9Ez)6lw}WO׭['w?/+w}%_~5J ?\NO?Tuv!XG@@@ N7o,&L孷ޒ />(wup!55U.W^yEk۶\s5;M}  W]S>!>o8Wgކ2@bu߽{w9dРAҧO,=zo߾=eٽ{0zhq8fue (]<ߌS?Rk6! `PI/}2kp.j<9=r.]ǂիW a yekYOu%ˤj[䝹wk}Z/4@`['>r@xAAA`p ;1w. X^|ZRgԏ%+&6jr} jl@@J]@<#RTT3FaO]U}͛jj탡؆ @K xjwkϳOӛQi}2tmK}Ґ'KvK$%='d=@0@''xB1cF1+++ j*n!8:\]/G@3 8JiڝRIi?dڠM^w%o^)t8/B؎ v>@nW;SYYY+b GK,  `!jk Z\iqWmm͌+j6}OM+/x^\"P YJ^vykm4Nm 1~8S塇 q/R[[ 3^C'2lZs!?1F#]Oz7z, L )|XO2%0'OnڴiX5tǴk.oO>Y'TygHC @E)uſy&1;^CX4Ε'#f|~pb@0@Rݮ?55UOX5*9} Ͽ}c@ x\u_f0kj,s#wֱ YJJ/ROΖ9sȸq"̀p 4ԩS0# `9uOfGvVJ"5w#([1.Ԍ1 @R$퓳:Krssu=zt㎋>x@̆ 'q\uIjhY@@mRZXzdT{ ] ,NA@ vR9s !Cdɒ%|5sg_xq?K.cD@JΕi[OJRh+ }?a駟1b,Zk"xoرzի ϬY=d@ Z'VVlxA{ !@.`?s{Ťn+;\_/}M7ɂ } ͛'3gԷ; XG@ip[D|"#>O9B+@bm___/rKm۶u#e̘1r뭷BUyu5?e˖g!O=xR\\,L8Q3)))2uTRc#>Wn&k?P@@l/\P֭[\~ҽ{7gϖWWX!Gt=>J?M,#   ,}&͚5qTϟ?_&M_]5G}$wq   4C{Ύ;|$|Z?\ߪ QtJ׮](d @'+?r$l$$I6]IV|qw? $}꿓~X'zTR>@ 8r$1= )&s9ku=R$qd'6#xА cM@^$Oz C p$a/W_+m#fX ic-&@ q}&?qd@"P{$dw[J~YF@*| B@ .)ɽ;9JVLg,ոD|5U"u5& Hm0t@b8]sJ}*#mF?q9L2VsoP!  'y5j]V@L&@o9  xS*3t"ON)_X@hiΏ *P_J*7όe*1C0 -!3-9@@RJ|~GZa0@ZH>աGsI~|9  XD 5O @ɜ&:NJj,   H< @@@ Hj,   H< @@@ x/"  `qWJ1'FPv1D `| $@@@ R&>p~ Jq{F@@ p%Dh.O wyY2#%E!"}f7W38  W?~HU^rG_HωM@ U[S:\@%@ϟbLqUXzܰxx1T V(Yy,MU /YI@P$9@vcTe客q fݳHjv/gJ}in›Y^w󅔭k @ %F VsRCq!fI:dfF(YTmٿ&Su9Ful@@\3>쫭+~ ])M,#,PWL֣-]z*@0IYGv!E`FqGZ}$b  @ |>)YqWn;s'  `%|+mE H`ѮAk j@{ +ڕh޹\-z@L%@o1(w~E:u ]*Q-UUa48@Z\$Ň ppdڱ8C#MSp/uE  @K 0~KG .K>ݱ;ޭRS="P\d7`U]bC|y_+P_ͧ @ 'q \ܿH7(*]4#po>.|3B x>JrnL?t,$-4X4`Cf>J.ђKTylrӑbdtvGe3+]2rL^zXL+0@@vzL?e9t,ڵG.ۦ}Hw阕2Dph?8s*iMD:{\<5)6Q␴Q(,T# 78 >GԇMpfJF{7M{;Ry(ð.a@@ ]?G># `q+{@J~xOh>  ɏ'GC@f//Il@[gh) h^W[/U ? G@,%PxŹ~~8y/;! `&|3mA@|O)_dmY*6Nu7@0I醄! @8g="W=-mvU^){Tf#jv*5?V+'RYS L:|n @IDATRTS۠:umlg&/ɽ;bXwv$+kv}"? lpd VJF"`u/k૦T ,: &"uQTRFS>KJVj7(^q| HXAI"`~OwT-@nWiTnyH[{RwTo{f@I%F"` %RPVm5@/QKWOJHE !UQ `Z70'PK6'A$vHF1)T+m]vS"p"vGx;CR ))F `v:pHTC!@r fug|WҕR,\^)izD%@pYFv `;H]$EK) @Ki穒UD#@3 i4h h& )Zn1GF!P2/5GcԊIޯ jl+Yf8@@ZZ[z8?6c RQ%olڨg6F ];5cKvwkrHc0W5>UoJzc[O6Id8'@ @Ha T\,o =}dlnd\ߞ2`++ѥt@P@*v귴ӷp=܍6:ߧDzjdGq>w|_}@@,$f a;OaѮh{zԕK->$uV9WQ XOjkR\>-N~z9{J<5} q~P:?h @ L~zs$P'eV@֮ٸMΝ'D+ x]ZRMݽ@jv}`]WՅR Wݮ_6V@0IYGvYZ`ڊ'ʼh٠6fWQ@0IYGvYV@'#Dm5KFoN࣪Ə?@BBAl@QV7(ԥ.ZiVVmѿR[uBE iM5>W8Ifdν{!sAPd@ {Z*y9eb_S]*:l S03+nKth ò3wr TU\/h['z8_t@h*ĦA 1d7yl~1'}{s?> %Is\øRsW->1:p9@"*hS2vi|v#oͺDN\S ֛"`oH r (@ ׯ;.A9K @d蔈ëʒ=Qaj uT@"Az kȚ?DB# @ GpQu@po3*YmVhl)+\JSC@ ȏخ  t҂OkU:-$@B!@ UD@.7Qϡr;$@B!@ UD@8RYͣͯ,x 4F 1z x*'GyÑowUz 4T 'r   'M(W~q2)H،1%eCf8  !X'<]29b7^`}rm|A  5!   .@ڏ   5 ׏!D@qe\ޱ<1Qk+mң @@F 7@ tsw.]%Kj]N#I$@@^[x|ƣ/hVU9T@@ 䇿(3w+>tD&W!  s14ղ ]T,5az%+j}s[p@@X ȏ!x޸mgv!8OTT4Y_Fx#K֭<g'  *Xy%|9NH0de˗ ;BuS򎝐|ʯLo#  s148^׽|u 6w~gc}+  qr1l_H   _ȁm^6.gȘm<&oB~KE!  W ?\=~ң53oAAҥE3%_z   |ga|ke=wRһ-v,Iy+0l`?{pI4#!  v(*|fR\YjAvjo['>'m5#ϐ 0K4^$9ID]@@%@Kc4@ ..N~s)SzrL: 4;?`ni,7mS@@@ Ώ8B(4n8р'}<4i 8PZj%{NlCh$vʑ+y#r""^  D@ɟ5k̟??ޝ>}u]RQQ:oyg駟yI6u   d1Ϟ=[Nީok*W\q 6Leܹ_ŋeԨQGIv*   4V 뗔.W_}TWW۶;pL2̟nxe?I/_.?Ok֬vdD@@@ X1/\P/sηONNcǎ5/ξ5lŚBs.*d9cgOuST,b,5L#ߌa.w   8dڴi2bk%K 0i#++Kڷo/{쑵kz¾(3Z-~~6)3&W,l?Qeϖ/j@@@@af ݻԥK`-YY/$>co16n_Ju  ;:,zȐ!4<:vk|+:tH:t>z_ZkzϛX]xD^KJ}׃p/2L@@@ |QWiiimoye3ϝ;Wny8]of/w{:yϭ   ] R~~g[_<ƂpF@@@  Ûʱe׶ ٱcySOs=>3BZ''?! 9W竵RZU(2ZپKu.o'ĮVWӿiI6V؟{Y$&@~N"7  @T ϭ_p˖-3i!C 5ⶩ?͠%mȎ2}䪞]%G楾552s&VI7#]r4+)Gfe1/K$@@a[޳V_v\Cow⋮c&Lpm7[:7ok%bϺ?ȣ_X>>JKH ~D@@~D&M5yd9r뽵[{9m߾}e!^c\MJsH٦D+yҡޱpe:tK3+.爵}$H$yqP-H@@)p}<Իz7|r=z<2|p),,7|Sn69|6\c)Kg½diA)1Jo%㻴t+PCecL3t$evx$)?5'd8|q@@ W^yEJeժU2vXI2j`4辋mL]XnTlǩ$lZw1o7eܭwЩIB@@ 0\&nFFr]wnkru5y7lD!p@@F i +*tXIҥEsى  M+شj i C{w츴0dzHHkE@@ jkig  8Wj   @@ĆrYZP(+*[rZ c}D@@*@ TTW˟V7lWٮ}l   >FEF|ZVvH.[H>޽/,u   `O ߞzzmؿ+k   @xp-;e_I|g|a]2?0GB@@ ɽu?_>ÝmtujN[yhy.<"njS$M+Iwg/%ܻm@@C AD ]1?<,}qџhMEŢ?xAE@B#3 @( H0"۷ @@F +jFȐÇKvv]sDUV6ί# X]ǯfO+8UFEPqu_m1wik@@`>d_ nJvf ~V-C]ZhPiv=7RCGmUU쟜RoˋL   wF?P !peϮFRf(#&ʏwIIgc*bsƤx@s.  @XEpiƐ 3+XU]# qέljvzVhSـ9@@ ^x:_s=uj\ !  iɏDƶ|yevd,ge }NmB]o݀\݁=@@*@t TTW˵-v]EOu,otmw?xJel=^$IƴrƾeLG`8S  @ 79WDb]1ۗSkkkjB|joA5JA @@0'?<\8Z^.OoA{lFyq01>?  vw@ 6 ]'g?98  A%+4J[+3җWUK&@@b] ??0 Ԫ+wl&Ɗ$@@/_ȁ!ZNNo˺BȀ  @HGL&+:P}h߳U d;im>  4kjq.}4)7+/*v׍ڶyRYS#)rqr[S$35V^   |@ gdɒΓE*}~Rf/_XV.lȓ{%]Z؛qq@@XM @.7c;>dftZJW b@@ 磀xr2J_<$c  ĤA~Lv;Fڪ| #  Q"@%I3j[M)VadB@@ J#i"лu+[M9f>[ @@( ȏDzv۔vi2c|d@@@ ci/8s{GLIZb<@@@ Vc |g޲C69&)3geHyuK-[̵kR2@Fd5dNC@@ i 1cw뒕XUxXnz(SQNs{Wɱ ڢhR6  /@]H]u%ϱ5Yblb8@@`N~t5 E@qeeF'@@!@n8K`y!)r Q@@&@Mİrۭ/   ZR:)ХE3NN׈m,2"  b:10#3#@@h ȏ^M4R@a<>(t@@'@_ c;?F 6)@RSc  _ 1U T ];(9GIJB ʐ/uZm  @ lp LN{tyѾ@@!p}g@@@@&@@@!p}g@ &.<,'%*tn/}3ZDi$  M!@\(,^!on˯%ȕ=#C:@@X ?`2N@@nX\9y;Z> ى  oߊ VqzYAW@@hA~8  kn[VadB@@ FOh@B\$?Wo.*v]'uo@@@A~- ;2RdlF&@@bT14!֥vhg+@@@Aw @~Եh32}    oDh@B|4fiJws=fb'  1djR 9|dgg\ PTTW˫y;}rTڥʸ䲓:Kb<7œ2@@bO ߡ}NЎZ   }Ρj   "@y@@@pA;!   A~ ZE@@@   @ h@@@ ;s   E^@@@,@Ρj   "@y@@@pA;!   A~ ZE@@@   @ h@@@ ;s   E^@@@,@Ρj   "@y@@@pA;!   A~ ZE@@@   @ h@@@ ;s   E^@@@,@Ρj   "@y@@@p@F i޼9   1 p饗 /7.'{{,š#  8BQ o_NB6mP2 (,,t}.Zj`Iwl߾$& h@IISo߾,2;;;ESz *   @8?F@@@1 *   @   8F 1]AE@@@hA~8@@@=tAT?̙3G6o,ǎˈ#dr72v_.cƌ< #ƍ_WI4f"@͛'g6ѿ}w@z0`@JGGǝ"6ݻw\ k׮XDyg?vwnذn{LnfɇQ.0k,2eJ(l@n*'O xJBB͛{"E;S {SoĉcǎpByDj9z\zʕ 9s@nԩS@%PZZ*]tY,';;[~ӟJnnW_}e3gʑ#G^h59';M$p}իͫ^z;[EɄ __|ҡCnժUtm]=mjn!@ 藌s̘1T⡩ m ?|3ȨU-"zl/7?.Zyx@ ^E'|\+Vx"E ?Rzz"HŋJ8\۞69s޽{O?={HAAgРA>rb[@i3ɺO񉋋m$Z :D{Njt)++ zޠ.P`ɒ%fY~|^k]ߗu ~H֭[7ѕlI %gMf>+ Pb]lxt4cJJJC/y8B;*@lb^DWOJJyAo%}^=իҽ{wz)-ZϾz #@t%|@]J+8h=tGzRl4k!+_sҬMMA%\":d=#m/_n[8]vu6Ĉ2dHf"tjތФ_:WrZ L DCRZZ=>G6дrJ)"ZcƌaÆs-[&g}f>OU: @@ ѸqGun&FL ɨ8~vVwhs]O?;}tp֔)S/}{u  *UkP]rhJ76B Ls{;_ w,X sL|   }Qe IɏޢYXt޼.wI'.~䫈c6n(yyyҵkW҂~ D@@ c@@@@FQӕ4@@@ c@@@@F ?j   ĺA~h?   @GMW@@@X ȏOG@@J       Q#@5]IC@@@b] ??@@@ j+i   @ '#  DA~t% A@@uX~@!p9HNNtԩp* K 1XQ Ğ@aa߿_"z#8Q;N   @)   8Q ߉B@@@hA~8@@@' J{:! u?.˗/]vInn9R*ӧZˬYdҥ7ߘ?~ѣ?ϲ7ސe.]t1uks>ЃV2ׯZRRRdϤI'-  8X HUC@0 }?Y<ТE yW8kkm&Ή'SO=1>x}٢_8xK[oTWW˃>({zfeeO?-^x"؇ @DGD7QI@VoGyļh||\|2|p9v|'_HBBJQQ=OA/я~СCeԨQwNydLYby:R:,YxkĈٲvZ?_. ?6󥥥ɕW^i޽/--e˖4͘1C~ߘ@H ȏ X`͚52p@!Z2؏7UO.wqrM[Aҿ~IJJz^|as~颋.~* MSN3gY?Y}_(!UGhP'lpBˤ@7o.6m:XyE@ bXx/b" 4<զM&u|ݯG7nɜ{nzoӦңG}kQ׻VZhu޾##Gu4|:P7c:Zॗ^Msd~AB@ #ר3 !л:^SFFL+k@ $:@N@[}gӻAnY|b}ZmrכsoVٸq4)wG|? ͸eW~vqC 8S ߙB@Q5lz$IDATVo%;h^ 쭤'}Qxn]_}@A~8Թ& qlΝmo;vx}۷{㾳BcJOOdîm3?>Ht{'.B]ho涞I@@ H@@>}$1{ׯw͍TΛ6][vrlS]]m^}1?}ʕ+?W-pWaVW_b^kҥJֺ^3s@ ;S ֏=ڼoתsϨϤ߿Kk^_p]Zi&4\:zdЕ4k,9~kIIy_ @*@ЎZ K`ʔ)K}RPPzomP?[>kw)wvw9֗)))K/y\ 2d\ve{p-\oݼ9u?6 !@D%@h:niO?tywѣt  $<{kHڍ3F ]W[wk.3^fq浬?tI⮻:iѢ^FAuM&sGp uCl{gdԨQgmр_qUWO*ݻw7ׯn ]{ABpGRR+? Dw## M,Gl>?P[wȽU/33Sx ={u 5Ȟ8q||-W4зFh=_'?1)2tT._8>{=jYn]fF @ p'?:" 23ݶmt\PZ?wlx;v4Wʲ]ÇEۧ>ʨEEE"H DA~ G@@@;Q@@@@ J#i   |@@@(H   A>@@@D ?J:f    @g@@@( ȏ   @@@@ J#i   |@@@(H   A>@@@D ?J:f    @g@@@( ȏ   @@@@ J#i   |@@@(H   ,MFIENDB`ggpubr/tools/README-ggpubr-box-plot-dot-plots-strip-charts-3.png0000644000176200001440000026250713571311431024110 0ustar liggesusersPNG  IHDRn0i iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxDEbI+l jl{ذEb4łؐPQQ`TTt}vvyvwgy)SpH    PM8@@@@@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9   @@@ 9    @@ƍgW^y Y.]lСePU/M0p;;8۷oJ*|wu=装q.1Ӏ(M%KܹskݾiӦ+ךx޳c9dMʽҥK?? , 76`[ar3JD䧁a1 U@{"*z?O{}vGFz`hҤIV{̙3֭[7D6O9r}駟V[ծ];KOJ5^ @%K g}f;S}嗶k[~,Hأ>jo6f[:w}7dΝYl=~J 7`'p_fY>}UVꫯ?oz;+@煕B@(OSN9j'.^z_yܟ;w_g}Җ @ ?Ei PT &qgo*;ygZM?]}za/KM];4eh{ݻvj)1bD&EqtM V[m롖d㡇ʨ 2e.n?`Ȑ!Q+-uO3 .cڣ@whɏa(gjAR^|E_o{oX\py|^{7oW-O/e˖U[.O?ϝwijԩS<ĉ6nܸ?jL/lAd&ې _^W_wO// )`6l%IZ|fϞm׿[² q?9߅<ǻ8'o{>K~_ѣ> ȻA~މ uꪫԊ. ];oj3j(85A̒&Ze¼ 84|а Mz/t_CtUÊt3|~J*O )GH{im۶M{naNwm5 Osh?-;.6M7cƌhM:駟|ХKhTO4UHyxcK C=Rx)4֭[ga\sϮ^!O=T|S#PդNaz/i^ PB} yꫯ.*)\ f¼ZՅYsGb&Dq$U@8ugxPOB %@K~ E!)@+9˓\v5]^#<ҏu!@R|͖XGiѢE~r6Ӯ'OS)C!OULXM2 h?0͚5SRY*B84VוԲ*ZI9mѴ\M6~bkįy.&LӘ~/l矸__d!5Wa!ȏ_j;uWRn-R]y}`]A;ca}ذau~v%DAnO'xb%,Zӟ~i??BӦMk1L2IsBzo?;.(7ӧ;^N_bM7-à P!tׯa @xM]B9кt]u0~񵖣GK)%ߪ/T_tE v?_uUM>ńڒfxW/I&.&_\>l4K~kS-P5cȑD3ܯ_yX@ oA^^z%R=Y F"@HN4)֫HI|)y4fmi|֖.hujz18g'&zb}AօB oaqǛnwU 5L@]$yzЅ?@]bj;SO5M2O~gmoV|nx[rojy@ >2T2 T&)CJ P!r"9 h Ϋ6=di\pAx1L+=\ߝ>UQFEZlirHMZ/ɭ!Y z W\qnjTIB'Ko ׈zph7\c|uƒWz뭶kܹsMq~ '`{]v4Y.\~ɛP&TKѰt?lIC /S @cнj~̙*_&n֡K~*3}UjmR۫]Wyj_2tWں&M;ꨣknB{=D͛7wW`7}tOOO _sWnjb@0m0oCwn E{=sZkeMt!F3=n{MӼ =PAV; 3E0#!${t6  PO;o?{gg݇^R;Ӈ7x]__\Cl̯ʞ\ /C=ףUVGәg.3BO-F /^/· Ś[Z=&!xOCK޸ꪫ:.],ۇm_s臄  ^mX   @Y 颲    Oo@@@J NE@@@ A~z    PV̮_V"R`Wl/r+GD"*חY6URz2~RNNlsRh hay爆b@+dr( X;R TU_8|i@_/)Su@_#@@$xK~*^" PW@` /vرcQ_;?ꨣO>XujҮ+ᄏk׮ԫY~={ @T+ݥ9hR9@@@ $@wA@@@-@oaG@@@@f7   [ ?”   @ n@@@ȷA~)@@@     o| S>    /4A@@@ |@@@ $@_ hv   @-L   H @@@@| [@@@(A~     Ϸ0#   P A@@@-@oaG@@@@f7   [ ?”   @ n@@@ȷA~)@@@     o| S>    /4A@@@ |@@@ $@_ hv   @-L   H @@@@| [@@@(A~     Ϸ0#   P A@@@-@oaG@@@@f7   [ ?”   @ n@@@ȷA~)@@@     o| S>    /4A@@@ |@@@ $@_ hv   @-L   H @@@@| [@@@(@d)[oҥKyֳg,&;   @cJԏC6k,ԩM>ԫK@@@J@%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p    υ"e    P%p   hBJQFc=Q5WXa:thڼ|]veovooxi&(o9sزeˬڷohѢ(+lMǵ… };tC!,_fϞwdV2mܼ]v֬Y{[d/EֶmZxb7o^V[zǽk(9Xú>,X`nac8ܔwe0}k[}&ok@E ApJiEDӖ&ܗg~?:uf3Q?'.ph/jBy{Clm[ ?FuwhAhZVm{]wչkr-/]@3>h_-[Vۤ6bjld/>ÄΓ#?կ9s 'ر_c=6GYgh6Kj w!.ѫWĈ#Bje@jjܸq mfgy/G>s{G3N;dcƌV[{a=s8j!RGZz5e] .{CM[ &pȠӧOjݻwؔF"0k,;}lzQo|J',w}Ӣ<; Br_1lĉ'xŲ?optR{}ov=X֭Yx YT|.b/wyg}kfuZȻ V.bb-6]HwWt]@~׾+;;_g]Ki7q|#8"rH.y]I>+]>a q 7WBtEwo9*O?_ ȣz>5Z+sqXn2 k6lXG]I  P?}+ozwM{=ɭ곻/0vQGT=xINr/)r»G]ʨxui;+IB{rM5i݋/n?SR^x!ZG xRDsn,u-gGi\ ԃE}_F'w}ix_8׿ZӦMc9|+  @w׏ǯO?e?8E_%2뮷+.?+G ]}!>4ꂫnO?|SkǹN6ȯ钺Ⓔ{+P> _QFM6٤^3[}cP7\78:j컛h믿ѱu愤qf}쮲*@o7|3 6ۅsI/RǼ馛:/A?c:u/CTÍr}몰=϶{ׯt4ZwK{e}i])z}QRt R:yT!Jf'^5G.HsxCs=υҾJ￿ 24Lw?Pu7ܤ})PuAEwH @@@DY=}P`F _Z_jKKR?~ڲ\}D*WuM7i#T뮻< :?V -jSOvv!Ouxkh"9M>7v&sB<6ʐ橸ڽj9*:][d^6n K׮]MH\Ja<.vo ]m.(mu fIbF+Z<'{{HP/Bo޸]xP 9uk_-s_קJ .7G6DIƯύ1Uh H~t <)@|v}S  ]] dZnWOSµGk_ g׶Nu>hT_sw!o梨3]n~ՑPS%7)}$@^gZ)JRu[T g[\5{j97=YG {oV|Uyu}^=4\DMK^I܅ ?#iC{<$ѣh6ۤI=⟕te;OgDI7SuIܭ,m̙b}H  @E DFiK~gR[l_/BR{g BS"uWp'>1ci˶|M鸞nJZgI!fLouY be[AoZWyda Qtœ10ROԽ?OX3l1 # y5?Yt1C}ǛuhBH!# ,Pc[o=O]I©@.b^z TI3}kvRi (<!W h |˨G3*(E&}V @׌ X5y=Vv%?$kҸ+z93 5OFC<߽ stt;CMqjt]}kjeV/3E?./W[i֖@tn%Q jG]ruO]uڒ&*U$ޡ,݇=>_JX^ף/֕?5A&s R8/g.k҅5kpCm mCTs07Z9'Zм!BF@@ {,!:E%/Kd/pzHBwTLhRF.sSRox# d&@Z--WAO&eyX;x+ꆪZ%'7 ?/ gO.ךTmfWWZ}Vkz"U__uaKryOQƓwرcSv}W.zb}$mۮKJO u\}\Rh su{~ԣ'~M$/zh|% \,] *Tz40\C ưA-&pm%}nC B笶]mÐ7D?>K!鶂$@^|:&uo}Q8p˭t NWkuOWW@W@2=*8-vakrjkoVLXXuֽբ!fI4^n[iOr )LVס]=}F|]Cj^t$n\KuOxn}tg~o9 d&PAZB07˕W^{」p(LΥw.;tHZC:+[@_NC/ C+oG~ .*o_@V= wR<~SeLu]病n!^.@Jjj t6lY灒66Ԩ7аa6uqQ橒nQ C1뼇zg.Z5c͚Jؒzz@X6A߷o_a,2i'#TMܧ'ՑLg_jhz$< 5lF#4l&~Q~iA `=H  POb YKscuEܭF|$Zᄄ$\jK/O>XԱ8:rP?'nwtKb77.@pA!mynbVkK֮뙒p_ԯstAC\PǍNֻ 7yϣrp}Ꮆu|</-?7wďO2]rC]p]:_nGt$w!ʣ'.`eCՖf5k箅8.7AcB1QÇGw$xDytn-c+ Je< pGN.Xs{_Nrrw,=f I[&Ruȟ\DFUV;V$\h?.hO컋5~@ǔJqKkl@\@*6)p-rw# ] (ϴ>ף}]lHr \ݤs嗧݅5lG3y{] @U||qվXPpKΜMpnU+' =-#h&oAjVP$W6 _1 }eэuO5OR¬b/CZRSuFIVK&Kqا>{n2KMluR|]p Q+dg_G7 FAW] 7BTn Q  uQݎ,*6A~}ϻ* _{^|uGR@JI.|;nz~ Un.ՕcFt,lGvsr}UF&UW~{"ʯ:zxu @j ƀΙ3ڱj1M*y ں3l>]}^kiv:w`y!egT2! Pep" ,0}zUUUYNŋۜ9s3gδ˗ʫԹsg_|M\OYv@  ȯa  P uڵnO}6m4;sl5״k6ڠAl׶.Ț6mwFi첋uϟBh_lmvv}g}|էI&6yd裏lj!CW^]+l~! PxR9$@ )+ZϞ=_VZooW' 7_ :um&/mV%??es@*E R$ǁ @.]jp}vꩧ-b .4~rzꩧLc۵kgO?F'g5  @_ gc@@&M &Vێ;hs͛7/ިQ|_瞹u־5?y|@&+3{%zb @J3fo~ܹsmܸqN;̯wݏWcZ^M65;c e.@_' DO B@@JX%|r   gE^@@@JX OUC@@@ lȋ   @ ɡj   d#@y@@@(a>9T @@@l"/   %,@_'!   A~6ZE@@@KP5@@@ F   A~    @6h@@@ /C@@@F ?-"   P%|r   4&3y@ о}{7o5o<,@(yK:~֡C/D [lȏ^~m[l  P6&M/7ViYgEVYEfرc^3@@ `7|5mڴkJcV   A~ɝ*   @V   A~ɝ*   @V   A~ɝ*   @V   A~ɝ*   @V   A~ɝ*@ylZjU  OZ#PpbC6k,ԩM>Cz:vhݺuC8@@|76~xӧO#8Z1 Y'/C@@@~    @6h@@@ /C@@@FY6ɋ  @nv;wOZ&Nhcƌݻ[~jeSv(AZKP%@@1 \uUv)؂ d,֙W);ɄA~ 4F-WYeŋmΜ9̙3m*u?nOٔߎ @9 Y  @ }׮]}w'x۷iӦ9ck]{4^{m袋iӦ~n?k)S.Y£ltwޖMپ@~!e.Ш[5oK&O>c=ֶb k׮mFmf?C&E@@ &pqٳz Ael>3k&Mɓ>ÇꫯK!C++Wʦl@2hAI'd\XJW_}P}]M]裏]wշU@@ ֳgO{UVomݨi 7NjlK/d[moɏ϶h}Y[h2.r!~?e:j@@@otYgI^۳(WxtVUUv]wG~!   P(F/Zozm4~+kEٴ]miUW5+ mY   @CM9e˖vw"G㏣ݺu{ZkUq$@@@ %ЬP;*~ƌc]w&ѣGф/!jiGwꫯ^xfW\qEZ0{Y   @:hy䑦YcvZ:̙-mYJ<ϯ5ZMVkV"   @w?}y^e nZs3  ?@@@\TtK?I]xl7oe_ti<ݓx. uQ뮻,J3/0B@@@bv'C=vO۶me^pa<ݓx-i&0rf*$*@@@r$Pe|P;_r"z/(}v"xhaғxIx   @*2ȟ9s+o[NxԻwo{gݻGϣ鞄`Fꪫ| ԙ?e׹s2 4:?1 k,g,@_g#y턖/_K^eUcΝ=}7s=LUUU֩S'G͙3'ʟϲ@~atUGr P p9@  ^."kڴ/C6rHe][nQO.o2r9ؚki^{mT|' xR@tyrXb!PUU)&0*B=k,o%#@ԂSLj޼-Y£l{aÆS ^vm7{'|+/@{_+U]FK; N:ɮz_T-p9@ GM4ɓ'ÇW_ݗ}Ȑ!+ ;8={oel>3+o>V$@ Ѫ-4-Ex@ .ム p }[ m&^ʷ+ZϞ=_VZooo1Qwϲk@$/Gji:5q\;cLJ\ OC!SOϷkΞ~i۷=wOҥK0Mhtꩧ-b .4~rg5 x"V1G KSO5"@_)g@r(0j(zAnkݺoO'dҤI6a?mwc9͛uՏW-es@$k1Vqmw'h"{%z&xDO B ~wcucǎ^zY6mj(̘1Ե뭷ΝkƍvکF^-g)wB@F+e8c3{+o78e3_A~0=1T @@;0|Gv`Q7}o6z *@wr=s@@j1<ͳ?w߶ CB+,r    PC6 !S}֮3ꇌ!y)A~Y>*  MVhj=~Ov$] G@@m`bfUo5hQܚɐ(wr?@@j\wuH8ޑ.oޤzWZW)*/xD,Qi@@H'[vm~kķ]e8K,CU<"Peyڨ4  ꪫl~nr-j{NBnt@ r֟z#  _~i?k;gwiKdVMLϟoC IA~ɟ"*   \x>PWCWif4{~]|7x}'umzJR $O B@@lƍo_Lz5N?/^8L7%%%@_R   @}4 '`˗/kZ- wԜ?^ E]_Ԫs@@@ ؿk~eUvꙷWu]k4ha5A~Y&*  >s;sW4utV1L2ewy(M(A~3  4P@>h;w/iھ~[_VUٍZF]ק(A(Eag   O?/OuZ6-434"Gasip@! >@@@ }Q׻s܄8绱mԩvG ,P~,|T  "dɒ쇝 @hҤ5mX#F͛gx-Zg>c3][޺-TٿmϷ #FX߾}muoL(P废,:t`fͲN:KzkӦ͟? @ o\r]py+@>`AtoYeXs$nNㅄ-[+b[nem В_T~v@ cǎ;APs(I3fثj/.Q)(_(wݽ^:c;5.-{Mr$JQ  uB Zha=zz jK@|Ic=|or7uE)޻gC@@@ 3tRѫ6V8t0om+=3:tY@Q@@@ M{̙3}_ib]dʳA&v/C^@̩"   J`v衇|W޼[iB=7ܭBL/Rx#%!@_J   @:u5j_K2 ?Nm Bw_OU\8&;D@@rk>u6E;Kdغ-m+7\@IggNV @@2w r?G &0&Xŏ>#ӭta /`   PC`„ vD3UTRg7\ ZY۟"cKzԣ 7ϡ#  PӧO]Ν뫷w ^6Yݵ^+ Aխj]vYU42~ld"  @) ,X*oԩz빙F{z&Lmv_ γ#Fd9ȹA~I)! +X6mr PPEgH и~o6hmVy٪\~t GqC~r"PބD!9С͚5:udDB&Nh+uҥԪF}@t^zY?~iC@ G5_W,LTgYª}̿^mŊZ+"ȇ@Ns˜BsoJ  +pwVP[m].,a}'./馛/lm۶ #y~މ  &ꫯqe9wemVn.^[}x@ L   ^`ڴi~٢E|}7 KVykzMWwk27_O<]p3<"@@@n}>f+4붲Ҟh#ٶ s B2d92 畗@@@ A7Wu3|:63v̙֬Y3ϭsey,T {6… }ja'vn~tr;?OvZ?w.j3ki¶0&/|s=5\ T֥\P E`>Η.]-Je)E@-x`ߡYA| {N?xdn½B˟F!{v7r ֓@@/uj+󀏢˵4H!{RD@EP@ RE,H *bDP)*zァ'e6]n~ݝ޾7a@@Gm/'4ie\?۠jiR)G?}S \?|\t @@F R|_oA{A`s̑9b;A%iʽ!VbZz ︔p$!Jp%NR\}8 #a^{5 t 7ɗ})f߹s'5ʛ|7F5   H+N29@<@^ի#Y g#%Hi*倀$%`V@@K+4:|EoE+Plllv5 *(bA \OmB 9#pu0`ZX.׻ՐJڈݻƍArJrJ׃8@DDD'9]xwҥK5Svsho/5QFMǎsQm(@;{n%Or; O`֭4c N?U8V37yx$CZ    RwIR۷c@@_XqMHH~C8ګC{?.K ,_VZ=4dʲ [ %? 쀀̟?6n(\\L]̦; 4rBJ~NZH'wje( @ebbbhذaj GsfBH#KxگggNfJ#'@@'p7n$%~X_HNnE#5j!Bj@@@%8ԖVk!  8*{WdŇ=F[ijv9/Rψ P3 Y@@@CڵkI*zj}x>SŋeC[`g}7n%wD2|<   CIrʕ$lrĉj#GjʩH@fz$j}OfL@BH_t=6m)ǭH(4idC~pB͛Ia@3 ߫v]jL<8ƒ%Y%%?Đ@@@%@mϟ"  82PBc?{7ms8BdB^` )?sLc8 YxN;?ճ4$絫igϞsh' wmSNJ!fA\!`:~~Z~Nn[Em&LHuT̀$#%?'N QA$@<|SD*ǰ,T3:t/^۫ @ۏ΃8zژ5(j$@<ʕ+iݲ=|}~xwycɃve cp8|u(<\Zt0378,q<՞߲ Xr˖-vZo4Z4@@@[ ߿_z& |Aw2gՁrIJ1+z  "^8 \ `U(a}vNtI4 H`رjZf, [PɪUhǎN(E|a@@t@ȑ#![Zr3EY遲 5fҥb~rAE*.똀Sǝ@A@@M@;;U}&J{}v}w`޽{gR^3f]qmD_~!Wԇ2OJ!z  'yf5?O-`S!-G P^6{N+ђh%K0o^@w%]    )6mRժ8_ʇlkQՌHv'.u;)qjC %[ӽ2E'64(gr ˾~1Zn,gϞٳgNn?HX=ބLԭAll,ӾOl |O+hxbbbdyZiXűZ2H@`shـB(| ` R#Ԩj]'4j>$@rsh̙rT*;-Z|Mă*,<2f1^ &<껚x-f%DM={z(^uYsΥ{uL&SJ>gx,9s5@=nJ,=ӫDgٺwI/;yQ/]Df͚Q…)((WNo&62n89[-[Y av$   ) =Z=L+|ѫ;f?c$ɲ#F սv`Nt{Dr?~zd|ṿH׮]d-;S$<<\I[e_޼y[nqm- $ݹsXч$%>m,Y"M][p/D|q޽{Ua@ g{=#fj1q+L0|X/SN+85ΝK+W`Oo~OY(o@fy6|^7| 4 9 3,p9Lxԇ@FjW߾}e1}t&/3K#GЂ ͑Xix=hM)=jga%ŊSvSloYDq9`/{.C/,뚩Yx{w]rEidllA[ 6!53\ʗ dׄWhGD\?|p2e最)W^Iȕ,YRSL'|?</=a%O/ ΁ ={x"#[ }s(\N1OrK/D 6aJW|fPT|qe_j/xg}F:u&Mo@ x>;%!8;}4+WN\޻g ԆSHWa   F&{Ł㷬Y|U&^ѣ(3g>33}6 h7ڭw "uJ!CCΊ=p -_|cǎ={&a5ό^mԩCb:uٌ}=׫WO߼y\Ͻӧ}WUGIƓO>I/yéJ*OdB/^L+8uꔌr,}B>|MQ|,}4jca I)eo2^I}J[#HyIGy뎻,<SΝ yuJCtU^ BHPPTM $sD>68  %_xRM.Q`j&l}3mXdSWb›W3^5 %bСC"T.PI7o\e kaDcX`ey0$v,fY }kԫPnz1.y$%[2P!!0(J!<ٱcG *dZzuxZUVUȰ{N*XOըQ2ZJ8  '>#ߵ͇>h%ı6KEH= )_rYr⣒6?]Tah|vY? HS.] %`X%ުU+zgI/۹o>pڵtZ7~>/s,w_zYq@@ Isϑ?X=CR&%)Ž6nܨb  H=UQtuuu?Q_  05k&2;YTO>ECmڴoǎʩ۹sڵko p8\vMvAeb3zwJ{ꩧٳl&pIHYhzY}Ŧj4|p'"HgΜ-,C* ,6&9,6FMb<VY!WfO8A73CO[nԻwoygM&l||iWٲe lْ֬YCQQQrv>3>~raCvRugZ{L28IN@fT!!!tŜA@@e$;?`g~zv08{.}ix^rںuk:wzQ^şz/OuFsi^T;iӿ~d=  m۶ɇ688X1W|V٬?<<xiC@K0`eO%} ?ϗL~R4а1ŋD1$G|=(z[h+xf57oޔoQD3߶抣of,}-ZڷoKtG'CsQ4~N Xo|Pҫǣ)&q7/7o|ǫmBcA@@sEU}7=WgrwPvfDF#w_k! N]7ڽvV-dQ8qҥKԪU+Y\|7Gu   gG~._,Q)̇fc#ޓ$BMg ph 6xr66ϯW 6f6Ko$O x1bhт8JD_~   k +Kwmdz|Mx&,TݻcdtIԩSҺo߾0`oߧ#..;F@ ό÷ ^Y&M>m@E9'%? Qɓ'i}Ǒ6 ɯ_Alq0{j֭[R9ڼy[ v*=uT^z0ϝ Xhsj'CY&* Rjmի=t(:Ih"&6dMVY$iҗ0C eg<AWa۷oƍ4/}Wޏy==COnc-?(Zv-qp^AG@@@ mǎ͛k2C F%C C?gje>;ӆ3 ^J{ $(45A@B&EDd/ ߍR؟ P˖-sF5(  (@@@NСCR,< ~Xc|>/G8}tנB@Д)SB 4m4y gaZ=?5p6g ZiW@( Vv^ʑV٣CM!7O".3gf/D@(B(5gG?ӓnݻG ,UҠA뒆#Ioe+ j@AqvX;zj]6+tYW6ege"d0.;wJ… %C|hT 3+ :>{o׮ɳbJ`ժU,g!9U1NM?*Kfs\ICm>}v9k,ie[o/).(Gشiٮ2E)6boF FUu;v 蛇X~==ԦMڶm&ZYُuA­>>j+H5Z"%22&NHeʔ#G;5r;j#n:bs7nܐmX҇?|FwmtMQll, ܹs,؂K `˖-e4 o2BbVA0wM@&,"8${kЋbZ_Q,y|@KQF).sL@9.Z;wNpx9vW8w(ʝ7o[Oxz髯R` N'y|V)&AYD>bFA(0~TR4|pR,ӧ?> T'ŋ{P0 fVx7S wu]* |?b""drf7 šr[8ssy SCBBŋ.x'ٳgSϞ=gYT}+񌶷KB=zgzΆyGy;?x?@ƍ$)gy+!VŞ;%=IIHh;2YO%Pf^x B*Un'||eP3 9A@G?2H}p$ 88^9LdS>}|v5%%ʽ;<ֹ 4\ ͿGڡ~vA*7NR&(ˠ仚0&0f6l C3Mk% qLIbEcBf2a壖) ;w>SSx&w9}b(nCJ~|XbG}j.ϭqUG'Д18NfK޴iS{?8P@wDW%TQ&`H>RZ3 *q485{.]}hJ=سgM4~'I£iQ`+4Z%G4cƌ$Ã<ŋv%_chX~)n:N+_$???lHY   g Jhg_BMBEXyԩS N9w?d|5kҷ~>CvZ(x$kσfeʔ &+~GldO/s[p&fY֏ "fr_wؑTBfR^8~%_w\"Yx&^ܹse!^S=w_mmYL3:uQv`7.ۺu+=STj$J (L]~8"Zdt hpwT8f'}s\ܽ{7ݲ$|o+8ŋ)o޼JN*ŀ8+X;?V(]|Y YČF:Ptt;\@֭[S hѢEyƙӧ{1:v3*V(+K*|[8@ τ{Ϻsh dLav(ǏgyFرcrؐ[(v6ZQ:@jٓ[&zCLsnYL6_r{*G-i`s5kҰaԵ-cq(ONQ/W*QQ3ׯO[nGo9Ay{ /ʘG}U}hr?+01TsV||ElŽ:6S 3;p0A(#BKqXzVZVXa@7-E@J~DD+D )'|N:%ϕ-C߲oL p }J?n߾-q'}5hjUE,w(*$@|D YޠP+)ygϞ={wxV# >ڗ |qGM %ƍ5 t}xp?^O !c8Ղ=hORgןܻw^~e5`͛7Wn٩|~08$0 :f/Z;o;V][@yf'9 R$b%K|h!wŢ~+xwhڴi%_ #PZI=4ZJذɆZ)]Qt^-(ӧmQ?Nꎪ ]6d@r%IXvu ) tiyFY3))Hfj)ΞzNxH/_,C)͙VƗj};¿GN1v \CA@C*\t)!8/q }cx%󒌟ss/&OL#؎tA@ @W؜Y֗e-]9< ^8 RCf˴k׎@\x1ER;"d@=ڛr)#["#P0؇yBCɖZ5sQa _55k 5Pw58O?D}EG\?^6(#Y! %?+D)jpBc8 s . 6ȂB xڥ?9o0J?i{t)2e 6,[eyEl5k XǠu4c ݶ?;w/)W [M]bn|M,YN  Z<Ԏe(dH{*zCRAS>£{/;yDOf ~ǎjZa L@ 4?;wqy*%oB6zW>ԭ[^{5*S e$%J( ΃3gΤUqdOW'pٸ|ۈ G^%ih6'͛7iҤIs<Y+IJ+_Y+A@ U{SyyftT sA(^fEQ@@@\EɓyNXc3@ x|̘1j)I8`qWm֩SҐ!C(88؝vB_%'"@@ }x2 L (E _- w\$r "tR鰖[U=<5JUg4m4TdRُ"'l@E NLhWgr\}hڴڎrALȑ#jT|^̀@ |'굽:N- "л~l>fOVZjo  |'u|Ҿkr\ p߸qcl^(@ >b-J"E>+ǏW! }_ j%?o t)LT}i@YlK3BPB+݊1 F _U[".rX"LC\H< h'dLj&sh1|E߯$3gWwyB3@$ѵc6_?(ra@ \Gs-- uY7l\s{= \rE7@P ۷O=i.VJ<6e!ےCcUҥK!=0`2b,l~";@2WI.]hQkl2%_;w*WL_~%,`ddG@@2&g5x DўSa  5k׮!zFUMTfF}>Ԯ]aP1:^/_^~eY{"Zra(@Kf^l61bz%㻾 2?]zKUT/N?^W X0:;wxJ>~d.YZΝ;4 #pBM]ghaš}.<չ:;,]+>'~$pEw;6~СzǢ/':**~4KqFWH` Axvb)UFnMd*B W.p_wޥ@q  =˗/# J^JUz&@8+DtIG<. J]7;L 0Q|.uyP &ܣDaj׮MÇwCrXKz&JpN/@clٲEmL9M,%o߾5kC@ KMV9* S3^NpآO!JّO>i:G:u֣_|RZX_]şbɨQOfz<' M\HӧHMԳcq(*$@ Kh S,3hj݃Es}>|8E>p?_UV&|=[Uݻwi< -iyYvhCŷQo=z[6 EsG{:#}2[R:uHJ ::oDa(I` /x.N:(N РAbGZDBCpBU(@ DxCNES[aA?'՚K-s}ӾK0ïRJYر,] 'zBݨVA d^ҽ'AٳYB :9@Q 9tٲe4ydp,DŽb{)F(}~7v]p,a۷SΝ٩,%J>J 3Jo߾-!lAr… ՚mu$lS.ZHM# 6 .'CI$@@%]¡}^ Hdj-JYxh{Xj/bV_2 <{?B 5u66l@'ҟ%J~Zd{^JOR۶m&W@)nܸA,' U2w(SځB@S}g`~gWiQrJvߠ+T1?T"^N zp=咛bNYtS|ycdE\䳂X~f~uP3K @58Plĉgك~Fb)VKl 13" @ %_a@ sq JO(+,<0'V݈gwG{߿?q(&MxVКڳ~I>?0%*U#ɱu&Oq,vڥ @D(0/G~-;" :Hz"&6̓?z*o UmaFdۧbP\ִiSm]3ů:< 2D*9_YKN1{6]r<㏩lٲ. n&3EҒ'0Ybf&Q?\< n޼=oCS"4nϋ׃q!K.ԳgO-/pEа6WJ6fsz|5قP"ix/Ɔv[Fmh. :}]uZ]z,eJ~GxFΝ;eO3uQvc=&M+H%7ʔHKd+MNÇz)HF֭[/[(=ŕ/.oxĿi:ݳgDf<)bŒ? e۞ ׵_wDXÉN6*G2.W:94 x6~I>>b.X,Pܡt9Z~=l2 ?x~65鑉`9XA7nL6mA W\h֊"fSjڴi҄#d8Kq\FYv3-s|' ^˻'OL:^T߯of2ՃHHvQzH$E_P`}ґ#G)?;b#,AUwGtaZ&8@#(iժUb (  o".rMELlw_A, .\ZЛBpLkO&@a-ʳ}^t 59_|rF?;uB=/<<+ʾ HzX_h-Zf̘!#=#i]92g^! ߿?,tߴ"ڙxXV} qXvH cX(O[ݱu1l2bQ)U\o4>.-pe%.刍 %NC뒂ڴiC[_~d="QTG(ʾKP'dV̽R=w]Zs4 H HWA@O`j'|W}g?jե>O;h!(07-uIG?30u fySO=E?}`Deg)&C@ |F(ڙ{vdٵkW9 !!9'{9g@xA߆d_b):r\0 onhr(όDN"V߿fϞM~_VIR<)h5¡^QTyW}1g_.y7JX$-;wұcdͥʐ9$i}ծG&B8 >Ngb^&`_o/>AG˪BSBfTSx4\Hu-P_SK/$[*_:BMBA,YV[y\jԖ߹s.$@ v S]o뿿fJ~z<OUVU3]PU8H;s_KJ'}ٓ:Ds!@n:BɍB3A.]oPM;+-E9 {ೢ.$(JSl޽{u9{;g؇f=z 824:Ge>}:p#2O&pbs}SH/jSU@nQD)ǰ@al @s>rrJz^X.!fym3<Yh7y{`ɓ駟R%:k_J2d4~$azӦM'NСC)((H9 @w3pTD !!֬YcoJJ?ncwv(tIj`&_D CܤȈ"Pzu;w.ZRoTEN*y3A$@ @ի "?~zw}TbE{VGBFSs!/݈G=/KD*,?v*_-[f\ r}۫E @QS}V.P#lP`d.8J"*p*pŋ @"}nRd G*у8 }!|?K\ Yh`*c^+v2V8ӛ''ggv^7o^x!h7\x7@F z-e˧̨u͏K eOkL>QNh䇒6%qܹp+ yO*%=G'Q+FƍӧOĉA&;9sRtc9HOi OQ--D_#MPR؂@J3HNiӦdڿW/21<<!Ͱ_}$p)6xiGw1tVxWjժ4k,:~8 2DƼWa{=B A%nst|ܦK[,%KlnzypVh!+,MId+MI G@Jhƌ2oMSs;:bv=ǧ3x^N'uҬY3q޽ԭ[7l7tJ7eR!cTY5<3qÓNs?z}M`Z,euiېV~`FK%$?J$P#槉 ' Ҙ1cG~6.^fXoc 1=Zņ@xD Opt*|چe`^-ci(QOh5+t RճZ!"^]wie_e;[p0실]w{OmGEU`x hH;l*B>iZT,ϼo.F>(b%Ժ9h+RcV9-$'P9>?a#|Iڲe ^7of" 񆟱+\`徽P*͂{0|p:y$M2vc^(Y `l8m2sK>~[qjR=״EǕ?Y)yA@KUVn:~ukB!Jbf3~G',Dwr_`A=zT?C*TG9ǯEB :!p!bj:D@' 0qPu?}`!R݃( l߾]b9Va &v*޵k%$(+kӼ'@ S8oF޶m۶5b6 ժ}_]X8SxRbpk,F/\q3Æ $'mq |U+J&p}"?1 7OԜ4]Z8l.hۢD N ""Bn*1o[(kt{t崂Q 6g3&@IDAT˗͛GU\k8C5ϡ`i cQTODԮqƩ13Վrt(<ѣGFfFr)Oɿݓdᰏf2*Cu|#Ǒ@A-]s `$VY2S<~to]ݗ:B~RW@ _ 6P˖-Վ'C53ni~H%#?m8W8RPlz?NC !(r{<{  T1.$3zNLT([5b.J~V!j7W@"CubQϞ=3@ 4iBk֬?yںu,jgD9Eil/{,r]c4r/%\s4~oMJkP4E@ =c 5sA?; >h*0WےfM8#*~fL&(+O&ͣe˪-Ou8*E=+oS#aAhUH ݻw'vP]A^ez͗իWwߥ6mPrCVVM111<أGSt^QjU?{lqtl"|)L#L-!jlRo"'U-ukoⅾ&%CӧOG);3j e)8XwH-,(ၗ;v7|Cŋ)I[!Jg}F˗?VZE|8L< ?cizzbccO('/M6MZԪUKp7oN/^/g}V߳g}ˑ"U͉vn4P[7@AN "s(k1lA #u+P<\ׯaFpޥ֭K<_qo ߐBQYQ!Zx޽4bJq s6gY;ͬ|JۓOd<[.-2Ν͇֫4x6S$ܚgLmYO#gϞbEp>{=C{fz}- Gzh?h<lk]vj/HZuanD" qaQ2D&5իO$`!`h%GyWdY8{ꩧɕYfsynݺ ~~;w+DPe-ݝ Qr>+Ҷ1ffcp*% pvl2i$ PoE{f$/":CY}_Ny@dPjԨUTBѢEgΜQ'N .}gg#iC=}x"+E*nX JM$@xeDŽjjJzԬI5ʷZ@ m,v׮]ԴiS5ၿ( E$~KGґ(;^{NW\IŊdH돀|^7Ϧ^r.^w`0.]U6n"`NFjME3Z(]4Uo~ÑXϷ3h4)880?h~.0Yn_;]+\L T,se@vMR;NQ) L lK@ f̘S 06N-󅀀%cƌ%KNFߣ#hąh7'N|8E9"oߞnJJ.74U|qs˾u֤Uoݺ"E27Ƴ\vMI^ڿp sD`۶mRZ]%֚EաX5N]ADm7n*YDUJ-Bxt͚5b$kol Mt#7D'ܣgGW}:ttQ ^&&L,Avjwg\'"""9,Y2z-'A ?5Ly5[ KYGm˭^p- ,ͮ>=1?uT8z;UVחmg'C^yNB_qn_5;V]Ҡ{$VgϞ=áX֊#D2#%?pM`Æ jtn%,+UkۦD @ ][;2t]eO43S{#8w%A U!!!vZjѢJ>N 2w |sqv8oXf>֭[3 ,$ h.3fZ`_J5?i [wL@f#1:>uK+ygB̙vG=-!]7nܠڵk]9O#+ .{Lc? t5y Bjhԩ' hȿs5lP]lYT]+V|䌘e˖G5%6PEg}mqI`ѢEpjuTerU)A(./һ V,9=[V9M˗=7zL$ټt"Ytsj.?ܴTyxb P"B hWO$VJe͚5m2-8^F:tHUbTw /T;IdW^%^wCP0Tta)ןEfРADDq L>8%A;v5Lɓާ/:jif|~ıP@@ ƏOk׮h }W9axj~g]9kѢE3ڂ0إD=(?ׯ/$d{Rܹ3,1i֬,Y_~͛쳷G x[A۷󉲑K`ر4x`q{P֡v gN13֠AASowyK>^N t+SĔ߾5L)7:x *Uba|H73^o| U2pJEͣLDp&s!aN$vA 5O@+f>CyMs*/u]n«^vu는H5jmVXA>7n>2=T|I:͜9S!Kr]i )fciʔ)06A'F-u+Uo[q4T9K&fMqV!}‹( 7ޠ%KPn?F 5.x&Fӯ:ts&/삁/AK4kǏO8A/=%~'oUSz_};N&MO>#_.\| ,i .?|GbϘ#G{˴uPv3\g4m~*7dx-h$Cb{Gq|"P^,ERnylT,(sW=Ɂ& &OL>|8w<9bsO?: G}Ͻzr+fO?T!W+)_PFB4E.L ޽{j`458a%sm«(  "Ņ}vɵ]TUE7 :thZ&_}!6ߜ9sRsvǜ{ԩSn)xuqƩއ K.GM HB @ I>B|@:\FAD}th'-Nu 0{忿i2Y<`YvJyUؐQ4xO{j=^&A |KKʑ[lI˖-K]h%)ʔ)C(#;;\+Gwދ3gm۶- |54,f5 (3qh=Ç w SNdʓB۴L` CPfժU4k,OA Tl2q.Tzmۜ!@@嗶pٻwHRCDnݺ6IڏυvQ PJ$b owI{雷hia0MowqШcǎǨL={/AEuxx| ݼySuz@`}|A]:ig"w}"""5V`+~ $p…)ZBZI~lᣠ_j;qqqolְPM ONGg᦯y OF~խ)x-:tuArIoEG}G7+m^^<5qf|FLkNNy_ag~4hD: )F!k:TZ* Up*#GZ}ϒݓr{pDe|Ppao@ ]` 2?6m$1QXiAƆ14Tڟߓ$/x4 xtj*'8O(H9III4`QA J*EXॳn'=P{F=LF{,{IJ2EeͬU׏2u!7Gn߾=n/]ó\{/=$"mW^M۶mKߍh>"0p@y)~;s$7})(5+rJ"#_IY@!4ű,N CZ{t+d>g2BkmȯhqqҥKԵkׇix<FDqs&*_Gw)@d>;ː!CU" TV4h d.푟#{$HgcFA{Eޘ+S)a=~g9Փv9… S@ Ξ=K7HGGxGrn0 O3B8j7҃+@ݺuVZ ##_qS@ %?M8) QktORGy)9 ( &L@N7(R=)Rܯ`AAرc,-DrU2=>w[6lMF@LL uԉx9f-ȿX cy@ Jݻws N'6w\q+.'#-L-9QU3|~BkU:u /a'd@`7}vb*XB^ihp)!$ThvZ7oF4 ~\\i #ˡ,1}K (@_v=/}+F4j~zDk|NمL 8ȑ#Ub W@0ؾ};͜9Ӂ?2~|DQʧKW^Q={ܼcc|dh@&O~/^ݻy .)&WgJm&@Ff:H~ȯ`amj֑l8y>}-;vп+4)]@R I {^x4E%Qq:;.nUת 89 g2ɓÂGӇ~at{DN?:L&tRE:҆|n{σ0@]p7'KFyt&~p_ի;?(|O+Wv]F"?MT/@E7Hau7l}̼zZ*5kL(p[ʟvWA$Msa G:@TNeQ (Q3b.oFC<8~\Qʊ{J=~&թh6=  >\{'_͟.=(FT" (|GKABxGWg0m;wFJOزe|a;|gq\8FRJ+8U|~P,Æ sV  q!$h8]˃4&SV؃TB~O#\|OеV޽[VRI|E0PO ݁ª"nOjܛ?[n\6mJ+WvP _p 1A@9B˗/)ZUkz~[k„ /pk +25F8E(T͡ j~ƍ ys$c=%f)]6JPQیA^?~2/d ׬R̿Sڵk4w\o qTJ̙3B@)el*Ub@&0 T(#&׉顀 †> @5^i)/駳*^?8w(|e)9sG0T2FDDtY2,":iݺu?z Z,`M%@bbb/ $GM@_}'+Vzj"&a!+h]zj-^#-S73 ^<\r+-:M-@@,YN8Ah۽$nJSW]{f{4ԙ\!}v:}ׯH1+XX7{KjQ̢yD j*{.EF[[2?IV+&EjyʙY?KwŹ}BCC}'F ݻw֯$=-#D6F;BʕZnQCʙ HS?y`:r#` ϊy'-v\߶#~Ćf\(*⠋(Wn9ܖP wy~mG9]$xM %|N YV6sr%P:%,:駟]v;zEŋ)Qw᚝ ҇q|׏N"Kr?SBUKygLFQJ񞔑O򋟽0 2@DDqؾzNppFi_Ν3Ut&#18r;wNaW}STVf&2Iz,ORC߅K6f;֭[ũ'wMU^H.9 e5,q#p]+^Sks *0U5]Vk+ ųKo۶ͳwUhРLw%UrYF=/G2ֽQ#d}{@+:mVVe\0y[JocP2%;wtc01Ǔf-4]K<%$ϠDٲe:u76M}@@h}:p,XVeu GS//,s^+|5dNEu)o>(%W(V˾}<;zW-;ʲ#CСgВK%K KgS>]-Ew_Y+|UOW3,Uz?H1p>u%$%Z]ZjEyBuF;A.m -dvZas nݺeh֬,ow\:i% o|ZEJǏ˛_Y<6?UI ~ɲYh!{e h-dN^d/M+ 4O=opIqItIg(Q v0>_N>-n̙[Y\.ּJӢ)W~R@@vL9 $0p.H/_>Ŗmj Ff͚&sF WAtur劬12\GųY_zճw5kʕK_r1ϵҩz$Jݱ+~-hs='7Vڋoʕ:* v0>__]nTj)|5 F gΜh"u. C?5V8N%腮)S ʕ+*틳~音_s+|5dW57o Cm#ds @R!P^=7n|e˟`MT@@ek&ZHJ6"{G]tQGcLsD2*TH_'h*!#_%1E ::,P2:21 B8ʜ#%J):w,Dlz=Zh^J+Ȕ>Gب3':ìӧf([+wܡ$i^їjР,]$CT:{qn;1˔)Ck׮x 3K,)k̕}gU"* r0U>_hLg6{Ux] :?SÆ Vɾ>Bq}N)w%Qۑ ~Ceaʞ=n@Q}(Z)9$y64z/_0]uiժUԼys!;`|s3ڐԂ'NP١hժUiӦM$P@@/ *􀪩{NWلA\m81*\G;ܙ_p;bM˗D͚$d\Ng[ă(gFƍ)kV||z!~ ϟ; (9$pYnS6G:*'`rM=}$`2h֬Y4f)a#cƽ6zuʿM\cwō4yGRlٲQ@@@ ɓ 00Au?.l̅/*\yN8!Q!0h ZlO]SsG@ǡ{2Σ6jQ":,1JE&NHg&"z%pܹs0\LviÇp(0]wAGEcrpM $ }2Gmf\w̌A믿R>}+8$/ȑ#^ÀG (^t8vݻwO\+cd ٳG jS˗ݻwSƍee]$V/#AŃݶSUT3#G ^Z!#_+3 =TC`˖-~\Z哨x+ZB\11>իWرcs9zNM۵Hwox/MmZäp¾  DEEq*%#_K~\GŻٳ+ d~4p@ڼy3,XPti>ccī( Ybo'1ʒ%1c L( .ƟZQh111n:_ղp+\REf͚tjӦ6j'~v._D2HIԨ~z?ծ][ZlA """)qZ #_ TC#p y*T!jdך~1g.޽{СCZS(-Y[rݍ!9B]?hXW4NXi:9B;ClܸqqFكDuA`"@@`t : 뤳=_Yūr}$~8CeuQމrkV <c<7q׮]4`Ty( '*_ gF@K ]M96c\_ՃpϟO/_փG ( ̜9gmWd}$U8;oEDwK`C3

@Z$#_ G`Μ9U9(M\qLWTɫ_'3P *Dk׮y3Gs|"VzetAxR!_ /p3!%~0+TI!{ 7H103 A .\@ }="qŔ#'7j&lԩS'2|g( :t#G^ds-PGbVL,u?csl5r^+@/^\n^O #_K ))z-s_JXr֩d!"cB{NyPFH ʕKD_f ?y5^Hkth{Q,]Jc+OVJL~|󍈜_dIH!A@;{9Zz5}pB(M@A+e7 J۷)gΜtU92H_~4qDq!4D\%v"_-޽?VyV*a;nQŋozpÇӤIj.oQPnd0Ԥd)rpӊ+|Fٳ&OLBD[Q_38~MN:>zF-?1G3t+9=8=J͛7OG/h  i6#GÆ V»D?*"`BF_bBpVZј1c7k6#IzhسgOۂ%;it6ޟN.JxӨjL{憷q̏c\D"#?H]8uꔈ֜%qs +N *~+GrD6 B-ZwX3vyEO?Ϊ6zQ>eP P*;||&ləKK,8> d6MثT߿ߡOmNVDPKMe-ylʕ|q7n b≆ϳ+RP̹u96j7Ld<+w M6A@CFw8c u۹k*vkHS$`0(mG ҃(9ɓ'zgI+t0}4`:rH}݇OEzOXlX̘-vJ/I1_Pxx7D  :&#_Ǔ3N[WPADv_#S|BEB1թSx @j9|ķk^Dbq밍^g/Z)'[l4ggysgp##  0" /@+"G5F/A2b<POl֭)S/SAW9j;s~xDZfp97w٩ 1L`;ǩSN•@`䧉 N_eԩSesg6B {cE_x~Pxdw2Az5k*@pp1Cjժ%˷qNoV[g0e0Y/6$8Mhܹ+(   m0M㩆KuԸqc:sCn.N~FQԧS(ZMyKd=l/ .]lBgϦ(!J|"ѨVzmsjM;ug-t39}`` 9Rc]T  "#_C U2ﳞ8qHml2Sdg| ~X"*%`V#>#Ljq%6zѣS٩3MYf%N.i.J%o?V.y'H9A@@`{/:Wu։#/fa*6 VJY>JA_6:?8 CzСC^À@rEK.UVQ@IDATE#hRthM}(2xkβ))$6nH%Kt   cT|,O@֬Y۔3gNzj*-p*3 8qKWNm@*N3eUJto$EM!fWxEzb?{rK+aNAe=sb&e,&uF#F>] *"M}}g"ҏ>xD~&qXqך5kF_}͛׽)   s0}> #?u.}֭[b3$5hac2NPF)bxTvJ/l8%n@?|G{ɛv%d"\zW铨6l qG$)f=h^8]c3-aˁKj۶!P@@@`+t`{vbf3M6F-<&BB)6TW(a:!.jmOh\\.)jR)~$WbŊѧ~*U $ޚī*,AҶQWIw%р,t^y5kΝ[IBHAF~ 9Uޓ:h :}k)j~Ћ/ _.]5w#֩SuQ?/4Qğt.Y@}s=G&LR\x$ywŋi5B? vJ߭s=)SPd6R O32-V) U(˘I֮zg:t5yx)bp2t_{^Ǐ{M hذ!-{F 409G·.  m0=N"Q͛4iBu֥ݻ]~R#(@ࣀ7.GYF~Na]-O?De˖\ Q0<@ **Jx;-XkI*o˭di7VﲍVj&e8qޡPt̘1Q zNR W@'&:vH˗_~q3fAazRt'@F pu(im2.V[xq:t(ݻw/]=d wyG+W٤s_,RO-t瞶 K>a_"Eh۶mbkQ΅  j"o.5dM;wЀDK+OȆ0>/)zmbC |I@!M^gPKMSҨQqHc?lڱcCV|~5`C]*\n xϪP#   D0. _h񔐐?ِ05rkFg( 1mG%V^VԽ{w*]4-[L> xgs˗/p10n1L coɓ|Ą,   i`gJt)G_|حŋac!M_'6P@@־ eyFVs?ԱcG( գM6QΜ9p~"Z1nJ[ p>^)]68qB G}6j! "`W[Q_|~+WMU} *"PH_@1kvj7Q9~ E߹zJu   "#_QӡoaK*U)S)o~d؃l 7 hi0M>n 7ݻSÆ ҥKi d .LBr⼝7Жw|u͗fgkJ&SE'ر~q'AKոa<\:sFty Ջv* 艀.^QDJG}D}W_1?^x^u{$9?@D?2 O0eF&C~Zŋ9T@ t֍t"MSt+:s~'Y^Cz*Q@@@@tes;3!WׯӇ~(#=85=vEo!iȑR'{Gs1JHOƈ߁ OJ`4Qh)Ewf͚ېP@SNJUT_tgƘK.O;˗/^L@@J@7F>?24pj{REQժU  W~6;{$ LPa_@ USEvY7Ϡ'Ғ%K@|\{d̝Gm4g;(leO9r?U:uп+&TRrן;w#w1I}bbb }vM͛7qGE,Q)@  1d0eOcGbŊ;Vvv?"\uʞz$W=м9\:uD{Ή7 gΜ+W> 6WQ\.\ z;Wo( '`ʕ"Iٲ9 }^W)11`D]С5iD-9gh3Weʔ#F#hwhذ!m۶̙C!!!i_r **"'OqСC591 (@2$ %(  ` C&ဘI{Q@CfΜIw>U}^~_?!>hg7z6׮]+LetR.|_"EҼ` ׻tR`}vsw,AAGSѣ?u0m4Z~'P@:tVN>ʸEV2'oիWO]h   u5 >jΕ+Wu͛p "ҟZZ(ΝQFɪם8F^8Q_#*C!KAEQ@ pٳgivZ+њ?mB,3v hٹ{Ep:KN+{`@˅ :3֬C+iY]EִiSE!E 딸OJ:V)倣&2Ƕ3fzv2+5a$qeWd>r~u=ͻ?  r|g;^v͕e@Z iVB/P=WП ^pd:GVj*Y/uT@K VܩRd-ZEo]礝Qw0~Nk\8Kǎ@xÿMl3 f^Tv;q:..ǘ_t9upBTZAz%0I[D E\Æ$&gk׮e͚5f8  '4Ŋ[?^?lG_P… Q޹ sy 4x6oɐp{fv/\y"D:vX*-p 2@>{qze-|inݺe @@4FF~ZtiQ}TgϞMʕ+GiT_jA' o4ԩ㍡6#Ky1Kٮ]7nxiT W߼ys┲ fߤ|-<7]\ L+V *4 `y5 D˗'g-[<Ν;)11QygV\+.@@=Y͆6Jo˲OJ5nۻA@@@AF~רQ#СCo߾ޱpBs,9e8(=>Nxe0aΝ]v;w/Be˖ƍ;/`IWuT@M@;ceK L 4i"THpNхÿrT@%BF~*P?ū]vQݺuiÆ "ŋiԩbO!7Jƍ/^/\@tْWgce>) ,Q@F>yJ#X^rޘ   ~09- z˟??ٓ2qDyEB?C{,1 !`>_V gP`}֐˾{q?v~_G@@@ %)y<#đ˝y=׬YCzzhz/*'] Lv?zvYҦTٳgߣkv|សdF?{UZUd":uQG~.?fy&:uVXAS>~جY3 '{v-n8PˑvJ*TxqEaMvڲN9;&8NW^W ͗/RD   h0==TR8(fW"6 n~ĸq($$D>FIL2p[$Q|㐽P@@@GF~89r$Ν[+ {=9G7^|ω%xꩧd7u껟   *b&IӦM[JrI>F@wM7믿mqe仟wk*@*` ZWLiHN^5Odb2 T@wSpʲ  (2G#i ?Ε+)A@@AF# :4h QdO܀@^{$OM6Q%pfbqʒ={vs@@@ 0˞!+3=,XP t<ݓVvgD sxA:rJ]\̻ypDt $bfMK~d2LM |w@`-FF#컗ݯ   2ϨI&f4n$Cr(|3SVZiF>FH 222X N[x1-[V os[Z 9%Y:Z#FhA5q)48E<@FHpWir>sg(zd%J$ $`Gw'!{lZj`2 Bݯ   2(TZ88ˁp% .v"ۤ|.ԥ #j"@@@ #$8kh"b~. Q[0_ˇA@6ݛ="^5k1Jr;ۢ   O kF'N޽{ aIFTV Y)\8va)\t_.O]V"U^2e@HHH ])N@@@`? .@^ٳ4yd!J73I*Z4E?i$E"w}ǰ#?~7*QvlXGh !VMT3i5jԈ,X@j&vكCzJ@v:^G@Μ9i?Mvd'^UF==MF=!A]V-Zb t06mʕ+dBk(T?Koc0<x9Ŋ+UDWӎyG    406#'M+YfmΟuO0 #{{lٲn:Tb@@@@ 4țyadɒE tu7cyfϑATRPlټ(P:J!P+W?Cw~Bwz. XϜMasJI5A@@@5 "Ͽ;cJ"𣀀;B˗/}*A<    20U6a7 "\xt2wd2])bcD秭[k#;ֹZ ( H(R{ӿq"(9NDi׮]TR%_1A@@@4BFF&jMbŊgS8(zhEߕϡ$`pN$@atB6mܹsP!#qȑ#_>~gˡt瓾d9vXzApuH1._ќ9sh֬Y% % W@8OWXAb۝twd$O >uL/m9bAd6 Ŋ;vPNtLd6M믿.+Wn#v߿;v(%ݸ= X;Nw%_dA[l){@@@@2̤TGګW/YvDŽQ}|({RŮ\BwG![C#vϟ1c-[L"hh    "#QtpMx/Ih͚53gN]r=M [=]pG*;j eˊ~ @@@@@>0Chܸ1?įb'ԋw;OJnSR ~d=}R3 ԣGaೡ    $#ߓtѷʕKKuHH~EOl {@+tӡ<"#^|hڵ4ebW}4&UI]8@5jԐOܾ U}*Ln6JmA9T@@@@@`{0W-ŋ֭[i(T{bUثڙ<.1Cɩ8g\hEEEe` @@@@AF~: ~ F裏h߾}s J?A?vV-%"YڴiC&Nψ     #1<Ӵ}v8q" 鞴wJy]u:A#`9/ŭlb abRDED@Q"ۂ,* ʾHn(EQTvQّEYd߾gz 7dOι?ϓ޹s3Tޙ35`_SZdѢEKj wb>  @1"6lϺCi_m>h̰dK 3)IN:</cs[Jm@@J 乮g.bYb:%ܗ?I] /axIL%=X|̞=[*W"  P G`fW^S;RNIl9o d;*':INed?f:&#G4+::ovV# A~-+ 5k?Oy^zg.)-91/J\1L͞wR6md2qD7sW@@ @Q ͮÇդ3fN6,8#04EGG3<#4k̔?  Q ߍB<)%SNu։:)uӺJE|^3lۼo][=K2OdF ǃ?i~u24|cɖ-[K.e0  @!BS!?JP 66V?.qqqrС. e˖}'۷o XIz Wwe^ɤ}Uvn3͍uk)WWnڙ&-I?n޾}{?!^z-#  ]:Z."4+%%>aѼD-a:E@rzsy{ի˔)So߾   ^ wt`Y::oS0C.vb2'?ᵹJ{Ґ0`L4Is$@@.@$wc,X Æ ;vb{MJ*y Ix}d%M6g}V*[F@@ t ]:0ܬ'Nȑ#^1"u;Jh} z4?-$2zh>|jºA@ |#AKG $_BHhj[F&Y;"ٛ9n}>  @ tT ]:0%ج`tSOIrrRVedrH߳+Jތ3q @@H ߥIҁ)fm۶MnYg Ξ~Xt {MD_~Ƃ?PG~! T bGՓ+VȄ $<<ܴ(rO?vA Y\9J8mN+]|Ms}Jb @@ \ߥr} vZݻܹӶ.RA_q쨜zffϗu22   pF|~_.6l^zٞ|RNQ8-Z&ۯ6x kI{@@JKҒ.u/ ՍY.󩩩}QRaRW-<%eLիΝ;{4@@ /m|^ ?PT;G`͚5rm 7SmW^\r2c ={DDD@@ ~h G 2e 1'IݸN'?) ;i |*~M3gX,^XZW  A~`/C@F! .3ۿ OH2I߻[g%{&_S͚5nreG@@#@"MgϞtR6]ط7;-'ʬwJ1uiCÆ ?-[Y0  ^ ~)pךgWZ|"Cge1of'Y7ԴiSϤA=   /BZ2>w^ EtgJ?)Oy'  @ /rh֬,[LbccMw%+--O_Rg^3jժE8  A,@ăO׃W@}G_wהV9$++Pqv=?0'F@@ h*_~,ZHQ{R$зJ23?fnFGD؄9  gM@ :u$?HS6+MݴΜ.22R{=6+.\΃  AYQ஻~v 3%!%7i̙#  /@_ L0A:vhڝ(f=-YEGf 9L{#FH^{2   P@rd]%齷ܗ/UW~@B@@ /9[ΌD҇v'.~S(0IJ{~tt̟?_ s*>   'nA3]^B?)_ǖ   @ deҽw6uTy$--o'ڶm+K,)u'{= (-UVz^M%OȐc)_>|Xbbbq2   PzZg~aWPA+>͛77gYz J5\}Rzu޴Jfv@ߚ_wЁ߁@@2 #GFb:CtR3g 4Hz)Yv]μyfy'qV P483SҶnOjw   @ |ƌdjN4.[v>.ϗ/͛7ON:l?Ҿo_   A~>_z%SRJү_?ЙaÆcO I^kJI=LvҨQ#[   A~{Gb;>#\$ 4h`q`dfnI۵C${&o  e+@_[E6/ժUڲe*!i6mڜiC9;m1[B@@J[ ?۷,- MޓA?5(BZػ[Iǜ2^@@@tJr޻ɓ'mkԨaenjcǎ.q-}wیjjjn2p H}^ۖf͚<@@( @@!fϗ޽{G}dޱcG 7oM&7|oyJRJˬLӯA@@sbcc?{L4Ig/YD|AWR@^NҠ  `&KǍg~vm6ዌFI fNGU<+Aɓ'M =;4@@  9 `ݾ l   ֟#I]$|GW@@^ ǀ 9 7﹎`@@L ? P*TB2   P&eE@DDoA@@2 /v.4ib;d@@@LBS\W 66V?.qqqrС -*-ҥKi_!  @.u1A~YG@@'r}-F@@@A_ @@@Aƌ#   W /    xO {cF@@@+@B@@@'@1    B!    ޘb@@@ e@@@ {oh1   ~P   7f@@@~Y(D@@@{3Z   _|,"   =|-F@@@A_ @@@Aƌ#   W /    xO {cF@@@+@B@@@'@1    B!    ޘb@@@ e@@@ {oh1   ~P   7f@@@a~K)tÇ%**5!   %'гgO;wn/@_hرceŲ|rILL,ًqv@@@WE+?&۶m+pf )pQSLLDGGL| 8W`߾}VZƟ+ I ))I~'spYfLJ( jժ!Y٩Hg t{_{ԩ2|3 Prj.{n_~]3#@P ҭ[7-[ʆ t68x/8ƙ^"  A~ 2]D@@gz   A0t@@@ 8c%   @L d@q WڶmkNۮ]>=C >}dddUGhڴ5+Ss.\##\34@@@ \h~|@@@f(h   E /F@@@5    @ǧ@@@psPJO@M5gydrIiݺ\uUrM7e]Vdff/ԫW/S: $7x,]TI&%Kdۧ|r%ȥ^*{hѢ)(W6\28ptEl aaa/{[ߚ8[駟|0թ.0k,ٶ!C I 99Yw.7o6牋wҸqcILLכޤ̙3ĉ2w"]#|7m@|Iꫯty+bi~[vj|UѣԮ]P۴i.m޼}/2"q̘12}|DU[vA9|ӪU >C7`_Ӏ}7G >D;wloP59rDRRR |=>'MA[(AYf{%?uy2g_}ǧ+ dKBѣͣ<2^@ Sn6gs)]Q9\!L+F P;v0ѝ{AgI(& QF2n8iРz 6+J֭ͳٻ^ ţ~ ?0^ 9={D>!!uf>|=iFV'9U՝}MA*d7#m֮]k~~m1Nz|G Хmڴ MpޚKǻmM=X d| 24'EFF:\_}sd 6nh?nuuI۶mͽk֬ o?S>}Vm  %)xzC$9w 5BN:e/}E+hڹs>vԩsK^2vX92  @I $%%_K88/)=͵(#{y%:R|:l2y3iMvN۵kgvv>A?W@@~'ر\ҜZ"Ztd,kr>JSZnt$>['&&&gU4??GҲeKiiiuV!_~>K@@.w6$֍/_n6.蹨[w.QRJl97|2utGLۼysI^s# @ gO>kךK.D){@(>[$44T4Gt@a-Z`F.Q{W>]6p@ӽ9ru7]}RjUSi&y}ÇeIVjA@ w}<x̘1ҧO# a.]euvo߾yRn]/D;K [Ϲg{N:^ d޼yҵkWs~Xv%Çt|N7[9  EпEu_ѿMΝk',S:M $Һ,pB߿$$$s{-lذyLjl's!q?gԛ8q<㒑~lkfȐ!2}t ;dz`x@ ̞=۬,RwO}ȇ@۶mEWO ^`WGv#PH^z~{gg} //%?Ɇ CcN}fD)9s&" !໱oqs %f4ZbHLLo^7ۻ袋D7)櫈c;ٹsԫWOtb'D@@ 7#  f(   @ oG@@J:   @@@@F ?`   A~@@@ #   .@@@@ `f(   @ oG@@J:   @@@@F ?`   A~@ ЩS'Yԭ[g  P\au"΃ 'pQ9t萄'E>=Fp3nڄ   @! G@@@pAG6!   PB@@@(.9nڄ Kk1c]V/7vɝw)M4w+e֬Y_7|c6KYfҡC{ y7رô /46WЃ6m2/R"""EgIy  X $+;}4 @H`ԨQ2aBŊ_κ~ZZߖ.\PF!{\ u&? ~kV Rʕ_L8q;6vV^]^x[2@}~Yj_h޽,Z9 MC 3gcNfɦ-^PxwCUWhPyo/~ UV.(ٶmԮ]9+ `=  E@tƏo|ѣ%gfsMC5kx_˫T"o\|̨쾓;\s?qℤ^*A9|=^y͚  @/ {qh3 %$^Sll 4(+=裢KsK~9TR%Ѻ%_bϟ?}gӟ}ٳx2k.ʕ+fz1]!_J4j9t_o7|$55:  vev{i 'Zj%^nK. =|9v9K]v[;$$ļe1c2~IzZnmwޝWu# :| B@~{u|ncT~}';_h`;NǞ|I .{un/m߾-cYW@.>@(=wRy,knϦAϭNsinZZ5S{5>\;1])Kuc>}Vܱc7[xΝ;sC S ߝB@(Qwly5NI9IoG>N]G_^> .|\wwرcj|Ys @ / u Kj֬i[|n{=仃={-LKK)_a{GvE7[xYb Sv-F{˖-3y'ؓA@ '?.  P\M43s[n;7ےvݐ0o˖-=[dffn槏۸q|G4AW 5eNr}w߰aS%W_|avwȵ2@pA &! PV:ko}F}͛77Ez=_?~=ܣGs׿}?r.]gGiYfɩS&%%~h<  R| B@l/=j(9|}dtO<:m4[裏ʁ{ߌC| avwdu9qs^,YbZhamڴoݼ &޳3<ײN:Iƍ}G@& @ =e]&Ǜt [j%<{gI]wu˽@{2rHs-giɓ墋.0`TXѼcEo#Р_G1cƘ:Z׌~l/JO?5}р_qw3u}Wu2  rT\F ,KoVY|rh虹yNw_p_Iw4hw};5P׀=gҙݻ{G^Af͚<|3_ 8 =o;&~" f0J@RGtF;..\]{u]&vfsk^ժU7ߔ _lgZnݺʕ+z^=@Y9p|;09tUn_8t÷}ME@ 0 @JJ ~w-79;=ۺ9^:uիWi?.>]mhٲԪU+ߟw*ڎs{"H x] #H@@@Y*     2t@@@|~@@@H   A>   A~ $@@@@ @@@D ?@n    @   "@ I7@@@ w@@@    ;   @@ @@@@@@@ @d         2t@@@|~@@@H   Kڒp;IENDB`ggpubr/tools/README-deviation-graphs-horizontal-1.png0000644000176200001440000045345213571311433022150 0ustar liggesusersPNG  IHDRVO2* iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx ߮G"%"E҅QO+NIOEJQT!)Bg3}wvvwvwfwv~@bL,>J,(TT)hĉM/nܹ3N0, @@%$@ @ Wx/C%7kW0 ׶_s @@ ŊduVB'ؼ>_>QǺ N X> @@A 4!|]uU֣GO:3fL}IZ_zT?p}~嗄k׮uk_Yf%\b#G YptR{Ǭ}dɒ% $X=N o{@®]O% }^_^'^,@ @R@J|vX Rrg>n6N+֭_Ýջwo'U^=t>^l޼ٞy+Z4-ܶm[S%R5pʔ)&ae˖yy @ @CՋ<۷m߾ݽMΝw%??[o9k\P%Z=;E]rof={pRJMҼ?餓\.8j| S / ѪB~tb%K'|]vgy^{5wZ"_^;.TH*Usٝ-A;pb?8 y$k W޽Vk}Ypzs1@ @@J p]W^y A%c͚5&G7lǏO㏻c{キ ϔP矛*;ԩS'7ĮܹsM^r^x֒/l/L *2ݹ5Ҁ?ۣթS'R4$Eʝ_ڍ7ڶhŽ?xGٌ3kx:4m۶͝U^L6V}ٮO͝@(S,3&V>O>=t=>Sx+mԨQ&/E;rӦOnʭwqGm5ei;]uVϺ9%).*!/@Gŋ.!תQA%4 # ?366E7{}EslGg4ݷX/D4lDC.J|馛Bi "J3g{챮jhdS4yITg<$HD*yJ~3#ϷXV|;XHa?#&:41r(1o ]r%!͟X#DV_MSyD >^z=g#;kh,Lߒ|x踄_~yOEn)O6 Nn:7 KA\NC|B`sq7|c~?zvP/t)tYB|3z{+9  @ %\F!\vSli(TtA)P^3orRq U -_dg}{^Kk )4ҚդTP "=V\5sH0Txh$E^6lIFN$B!2|0??y B#6HOch@~dKHFޓWXϕyb+Xl a_1uFe\kvZp ep|i*bQx{&LjL^pOƎF vǂ^oON8/I->t0?Dx켏v/JlULI-yG ~Nx 䕩@fyB+?V8<2}fq Dʝ/ϒ#|M]((2Rk'VRo&tΏ5Pp"f͚e4t\UV5c*\-(։X#|ٝC{YEsew`_Zu=z0[f_? @ @ :$2Sj׮{A**8Ж,Y7orH:%bl׮[rj QPN;+" 0Uhj|W_}۷owjW6|v40;wNwHa[2;s @ #֗]ve„ |p~>%WPW9;v|[=˳_t$ժU+%1cXx~3yIyrAWn]'cȑ0ZAaÇ7UYt>'$cES tD ܘߋX:tΝfx*y34  @ @ C BPnjrJGe.zֶm[{ꫯv!*GҥK]7y't5oܦMfjٲ)QE &J駟%F=#iҤI6zhPL y'qn`Oyrk޽mĉN;c]e#y>C|qQ/,X*|W[%h*wȐ!CúFnݻرcG N!STwmT3ΰ]ZŊɁؠA{"0Ty):ԉnƍ %O.]XӦMCru6g1cؔwN&1SնtHC[@(\gx^"Es[w? ŏ3#C T'w@k۹kwA@"hDzX7 @(( ʕbHQ?:>2/Ew϶!x|q}yfxO @)N eݵkر#/7ۇ @ @kI7w\ؼy]Q޷o__k{f͚Q 5\ry睦.HKg @ %ܖ-[lȐ!6}ЅD˿Y>c;sLP+˭Z-Zd6m ?p<1P;Y0tcQ>Y֭[C|B'Bs>ꫯڻgm۶k @ @A ?za/ەW^i[%J8&&L`GI&Yɒ%{y~5>` Ay>w,'{jժ~ez>Ns矷E+@ @@$;M,nv;ꨣ`)]]qVB??~m6C4ibztUV+X? @ @E 8xʻM֡Ct[Jt{Wlٲe.sڵkmŊzj+WըQ$8+V,][@sqo;0's 6P˖-koT_dwvBBBg;CbŊٞ;&g[d [VHLuW1hbO?C.Ӟu ɧSi<VZRoҥnr"efw9飹 9Ùu @ @ $7m4'~xO /{g._~ָq4$?wk'v_y~mĈ.- z=ivh c e!Ο|+;?G 9I尓篿꧰ڵkGu߇: @ #exE.K^$Ț7o*:{)J̔<ݼX]`o#GqT/nF׽EvǻʻZkx49飹{O^x~KSUu%bFcw̙*<[p~1@yI@K-yy+ ŖFWo0$bWBWŖ@'-F@VDEB $;rjoVԩcÆ ҒPs=>*q褓NrH #G yCvics=d/'딇D6]BOeڇ;^x!AOP4*N=T'hH&1 [˘1c҄Ϟy?t^Q%I+o(-()XZ.wqbޜx>0 <ؽ֭cUV)Nx7}Iv7ob~z(g 7|sճ-[F3#0̀?~`t?s p9GOă@ڤV!ǔ0&RJgU.atM~aI9C@=T"sm-֖uJ]r%!ͯKBEUfӧ;JV23yb}w. ?sX7ߘKdLegڃYr-G᫑rE;/V0|ٳgTV&Cx}eG书듑kQ™rIk#t8JDS;~k/IHTC&/8YNx.k}A"Uvz}񓝱h>yNQaO,s+5F<:by۷8 *{c $'wy$)1oPCL,>hWTpiգGhU$*V]ȟ򈩂?T{A]d4Ɖew߇ob܌'1Yf!p^,JLMqGd;wmhAί!(ֆ,r{fd43|nC @ b ^sVpIDk߾kD P~[n%](e^R5Qy#jڵk!OX[v)ajժ*q)g 4x􍗿Yz 7H\VcW!:]38uN8toɛMyؼըQý?|YNHܛ @ <&TEE#F*TRJضm[L~ZNȏ!a·L!'wApSKWrN_v裏͇9Fl&ꫯ"V[z.]kq—SH6ydС 4(t{jǥK{N\5ꩧL4A75V\#;)">_N{McE'XH"8?!@ @?I% BBBJn\.P!ϵ7x.GSNqFS4<|`E6mڸTEVل B܁|Ȁ'>^ = %{/ z/WSً/'7B/ ֬Y^p ^r3ѽ# ԷnݺBȑ#C,VÇw$rGUWP&(&*x` @ $ AZV>Cַo_ɥʞ 1=]./yyEI 3@ӢE :uIDQHISn0nJR5?)|QߨQ*LO^j[:%_څ*RGUBkuFnݻutх+dVduI &p R߻k%oEy]r%eh_.$ੂ!CBTAT^￿ xLme]{w6qD'f{.TYj1uol(h u ZNh-^ެg݇%%T? Nk@ @@C'ErzJlkJ0ˬL$f^aYP@SkJb4^9]K,)\sժU.$UZ4 9~>4'䉦b0$b Y͓> ս{M{OFOyɸ5$׷gq+h' / Bg/ ~ύ%=[b+2ED;32 #\ef@ ڽv@:ŊE p\L0F."D)t!C@ $ej_/#Pp!+W7 @ !<ג@P E֐\V7{{ֽ{X) T-!2 @@K˃w@Pe[KT~@,H"!UbO@UTRc;so߾{XpѢB/tʕ+5DI&}g%K ыaÆ+/^܉}M2:wlW\qE @ @  vM7[N^{ez-[:9o#F'|y3uQ> @ @ .̏?4n~H|ӱҥK;onAoMBя?^#:tA>V\7vۡ޺u=(Mׯow}{ozᮧzZ5,[?Mf M @ @H pqⲊM696 ޡC#m۶vPw}7z֮]k_|κd]mذ-[f_yf9sskݺuiܹy)70,#S8jvZS$d?˕O?kb `%aKt,VAmϟoլYӱBc??7sLq'Wx @ @  KTT)ꪫJW AGWД{>,xؽo_~ָq9B*RaϦ׻woO[om۶{CB^` zթu]gʅM+Vt! ߭[7袋\3?|t*пkР.Gq$R6jyo۷oֵ)PBXKӠ) 5 @ @H.{꯿MbEf}nbرf#Ѩzl֬Y&2.SNq^|E''O?xW0[oJ_'ڂ \3&6fN9E&qi+7^ժUM؂&aObrխ[yMy9Zha4裏\5kxLsx&.Г+p1@Ծ駟no[?ogq[ٳg;5^s¨3Z`ln@B1@ c!m,ESwpl;Z0r@a/Xҽ+۸q#b50N0F)˗*s9 !lZ`4M,[puq7UD@&JR)/- k'tRiKNi^k׮ƪ1خ]|#Niv*N֧Ok޼?e۷C:w hƍgeʔ1%P^tv͂q:ЪU+'I38Ϗ<b*Os/;&asԨQK.]|O?mv=裦<2}W8gL̾{-RT?{ ȈN6 3A`ܝӗX| 8|xQ  r^UTJU\ꫯv^|IT|7NO:Q,zʝ:f͚P6g*T"TP|i~KCOb/b 5 u*i]ժUUVuiNFFd(pPށ y9BÆN @ @CĹ1_BeD; 77;@" |}_pH^X5jpM$)7]мxr-h4 ( Ui~n˗/wpQQ'4o&M>WXFCE9'SURyeǴ}NQMi3fp93v]ws>^x_^9>l6ͳJ/9QQdWv. !١ET%KjN~Q\}+y+ -HKmݿŖF[ .H(sƊ$@ vb2F%SN(oǻ UB# X~yn\q}]!Ko'EHs~o!qO1[\ȯ+o\ҥ ut\E3 bSخ6dH혿O%> ;'r0RoqUx$l#ݱg'qxF$f7 b?nTzCHLpy]b*+Pn4 p7J*@lG}˯E,Zz*ꏢ)#8U&9sfpbg^%D{ (UkT0!#mPPH sD!@cM-ھ>px :kS BPM%1bˁѤ kڶm뚩ܺ:w*bCœ*2N⇊ Ȏ?t⛎,;󫢫L{͛Wb `х\VϚG"Yݺui}DG[pk[f$9@ @;py:_fڵSnݺĠ$7pSN9Uky0JyMcH0ISm 5({u̞=۞y6;p &!KFGFfSڵkg5P_tkO>//g1|Ma*ЦM,~ᦪZѣG mԨQ @  5u {衇\eMUӧ 1ppS2P%h¦N*y)ļ?~7Nyl˖-_tsI:]\/pBֳ}vZkҾšw6qDWcueHx*nS!|I#+Wݰal„ *ȔO¡IyiN}%J9sݚF0@ @\_@$Nw4oUV;ZVBo*2e$+#tX֭su aU/}V' V 7!**p NS֭[G5eÆ gu{Us0UB ß*0f:tIM1t$ b @ $BI Gcf͚Q hzj'ժUyzZjk׮uUF#Um+V @Cvȯ[n+W:S@` ;Rbf/\mO=]t?B"UT_ޥܭ(yz+uLȅ~y<$^ggݿ {dd*W w T#jWB  Eg@ \r. .r.Xa(C @ +W5BH` )$aбPm6UaϞ#ʻW @ 5q d6nhTa.>wÆ V|,+3gUUl6{'f @@ 531 @ @@*@K!@ @\gb@ @ T W=B @ |C @ @@*p# hJj`bL|1@ ē\<26 @  *d˗(tψ@ɒ%MΝ;3jq@ !Gg@ @ dNpb@?)?`$@l 9x> @ F. o!@ la#Y$_pdHw@ e(e[1͛nE*Udwht,?_o\޳ӧ۪UZj֨Q#k޼{֭[g&MEիjժִiS;3LpB{mŊVti7E:u2 @ |^P$A(3:u=ڮZ;餓2ks b-[.,nd5][nO?5-[ /`w5h 0~ 8֬YcJ>~fͲ)S?lŋOo„ CceʔqΝkǏw,84y@ @@@?f֭[ۅ^Z-[8hĉ?nO>dx_IZtḂ=׭[7;Mmb4vXիKN`۸q۶mf۷:{o ,QF_m nO336Os7p^qp @ <'@j#O U@bиq믿va~_~J@IDAT{[ormvUW MBB+W\%KPL$^b ޽91S/EVpa+HS`[>}\΍#Qj#Y*UlNcړaÆY?/^иqcv: QmA'qRu N;Q%0x @ @p=f=裝'Q-7&/0s1f*S^_*p=8IyJ*TqTŸ*j|ph 裏E]dkv9$IݠAB bz<իDzTA9mڵ{%Iwo5jp{?sMB7ƐItN|,Dˈ!@ @yG.X'L)]%Jhs⛼n ,W$TISeP%QFiE(|T[Ŋm̘1xg:?Љ{s?5B?} p1UUa #Ky*FJpJ\TW2e&̷uo~ #Yݺuh\A=&S/-$=_3HB_:F`Y(J,xj*0X.Na,>d3T7 8Z蕔)Sƭ_DOf91&\l ,_|h+>lVZXf/{9wZ$Mvi:8 Jˎ*ri^[b͜9>?XY /;8 ?SH*AYx8;-c.#Ӈ{.a(1 dW"] '`-9!=jmtr ƹy_f'Vg+$"D*pMޛKKp9GaS(_J*L^_i G\P,zN|9]EC/8{ @ #ffA&Mri޼y})B6ܼ\q׷_ ;V믿n'NN:eZ@^e&/ʨo{=aj'A-Z*WI\THk@櫙HcF~sNUL @ @ %N'0y]R瞛f; uכ~!1N\qIy֩D5-[,t; 8QH6ydС 4(lS &Il0 2R+AM$MJ;Ciq_)O? bӦMsbʩq @ <%c2%'|bzri5\c^p;1cCYEƏޔ+W`.\LӟPSً/hݳ>örʨ MF\N7 m>M{5=L%\q.##Fؖ-[LE(J(O z#PT^e^x{ @ @O a/RhJ*mӧOwE7ng͚駟n˕:(WËh>ܛoi ,N8*kҤmօN9;]?yI"XdrIDѣ7΅j/ΓުUT<묳cǎ֬Y3'w}֫>A;䓝G}*W^w U"[ѢE`^C @ ~AZ!AM!JEvZjՈۑ%qhȑ.Ta%Kt˜D-['O/U-}]ә3g2ѹstC[nmsqF ۷~6j(Mvڙ䴞X{1:tϼ7xC-0aÆSO=< %"ʔNBný 5|Aw}t\{'u'@ @@('_W)C`նuVWP@bQVh UIT 2 UȩQѠ]friҥKpbSF#Iܔ訾5ktdG9teVq6sw{Pl*U"N pD`u;wu>-NB{+y؍$u͚5ne\Sb\e^~/W{gzcr#GX9 }xe=rHz)4_H!P'ռ QFVҜWEUbHtU*90їRVH]e@ &ę@ Z8/=[ @&P  @ @@? @5SK3weZ@P;vի@ x.T Cըc8t>@ x@Yƅ @ @ @ @ Gpq @ @@ @ @@ .CC @ @( @Hl*TbŊ%" J,b[P @  >@Hi$a! aӋ;w$ @ AM[ @ @$\<26 i+V/ άcP=;]h @ l@6;ڵ/+^y@&Ɲ͏r=@ +k6Ȫ !@ kpD8w\=C[…~5klsׂ֭[g-u& W&˗ے%KlXr\87|c;wt*$TAN{ yI[fs2e˺k_+VիWu֨Q]bŊ7= @ @ F. 2m4SS" 2rw- g&_{,Mn5 7=UZ5EyקO2etR5\c{P<`sn6[re[_BjӜ5GXtipzvA9p݊+Z^l&N֭[ ҥpȑv 78QO*mԨQNhzf͚O={:DPl5KD8q?垏;84hS' Im۶9I<ĴMf6Uwse]$riw?*J裏L^:%HVV-qخ];;餓8>͞=ۆjrK4VQ PJ wzK$w]ǎD6zJu 0y]/^<g"RNd2_LDЗ rXO=&/rsz=2lcE7 Ո">#f!Y Rx } Lal C.K!AG&%&J^tW\qEh(yI2o޼t”7yg]xᅮD8 $-Z7|yt8 q87x;1&Q護TaÆ9MkԩSq)O24 I< {kzM"v {΅꜄G6mp$9 nصjʵO&Ͼ1c8tgy>C&,hg|:u8>V^a{ ]*0;&oEd>~dddL@_Xo%ר ]SK@o3jbǓ  c1H2\a9ٳ~ 7!w+)ܔL^Y޼4!ʼoGǏ'1MBJ33Q^u 7 \Ro6]zN| ty@⛺V\9vYg77@K_s9;!v,:̙3CKkC'~ov;$12^W_}tMiĿC=T/H^ @ $\'ԗZnM"y7FrV!S9s\XMB H#p9vX;KVFr2n\w Ca /U Xh-iDpSq{ 9pSnзF}g|o&M"L-Nﵦ` ڛB%r{ K.$i]cy"%)AdW\۷|Kȋ|" O섟Vp <\5\QZ<\RM<6+2>kly2bA. ^LK3=́$2s wTU\&S2ySGy%hzh^yQ{m>dw#lyM}=K?矃057 }l (CEpv9[o.7DtGq@zm޼y +T?LJ1 Q ΛYybu͚5n`}3g9rQd(=_"r6cD@%Oy)S033%4i+о}4Mꛦ?o2r=6c SN4?}t-[Ny^x'䨰ITBG{O7M4f͚E::)fuHcF1Ç={4 z)v5ל9Қ#1y][y)7hoO^?p،8 @ @K. ~Y!*q- -\9VR%F'HI-]%(ĉCC,UTixOs*~oJXuN|S Ua Q8̻j^Ɓ @ @ 2w\r4lĈi<7$OYfm۶ ?Ђ<|`&U;vl5(w–-[|ɾ+TJb]tkU -?4~(̛gJl֡C4hPQ۸qmΝӉoxa9"h@ @@L EQʣtR֭IٱcGf0 T sD QTL-p>^ŋh%)~!{&o;\pM&ϻSq C+ icƌq$4J:u4p#ݞ={WeS?܅fVe46ZB#G|5 <J$^4 @ '%sG_~ymڴ !hJRap̷s6mB\x,Qb*̇j qԺ2^*uСqB]#M!M6 +H/$b*37(-qGbŊ\4>Xl Oy0 9gA HS9DL^Y@Vm3;ڵkg֤@ӵneSUEUqL^5#_2ׯ_C ( @ @\B]sGիWw͚53-COE ! `_Ok4]lk ܺu[1@ ă\<;./sǐ@ ޽L7N @ O98cC @ @ !@ @J.x @ @ !@ @J.x @ @ P5@ OrV0ߙB)SJ.믿1cB @ @ LPBVH^a^ZPD+גC D&WA@6oe;w<'  R{?0@ ē\<26 č#wZ85 (; Npz<&Ol?:w߹nӼx {-<<;<\规/<4 L[6un|PTYO>Ć4ϕW^^zMb[nvEp@ @@@WٛEN pWre-idHvхJcK69k,lNy^z%W5T%\TUkw7ژ1cBKNB՝|!L{tbFzN*> uRo΋sqל,W_}w={ӧ_ю>hSx5D8=$!׼ysZ?$ :>xw'P5F u \G7Ug% Bh۠jʉ$CPTX*AOd2e-`'5Yb~5fvB_ _9|#/Y0S?WAL YB/yQ1&1V Vn^zt\,d- @ DE0%N-[zgI${%W0`)ɿHLy̼~&/z˅A~n>?/_JTY$^o%IdKD! m.oڷ/WVmJߊJ"B)Y#Yeiܹ3s3|?cΜ9y̹y/ /U8MfhG{xrMbl2c9ۆ-϶{7Cw7f5k}'O^reITU ZmaҥIeCd.R֕*H2UQdZB1d.:+OJ9эK@?@W*E73KXsEH+˝~ %=A ,pa̧~M7W}|uie9 ydˮҨD`aXgB* Txq_AIe֪PD]חr)\[9ca>f@ybFe>=CvZʕ#x׬hǢCz~ʕ+WTS p0W 2 8 ګ >g{"X_sKG*Y>_zR\j],g? $G}re'To߾.~%<ٔe˖ht(V>ۉ`?0LAx7|AS^9oRl"U!=~OUVͅjΚH2(h;34,(rF%$3u @ P W)S;Lԩp5*_t*b$Bʂ1 _ϦD&yw}n:0a+PR~} *VBСC3yJ `&6 e{\݋(\v,]xdg- @ aH+bʑ L^pʉ&Q-)DL9d^zi&Mœ!no֧OW]ֽ{wt9ny99"pB^]P͹scGuT&M-Z9G0k!MYx@yzO7駟~^ o vnyDk@ @\m$6*>î߬8y0GM<ԟ IիW7jS~^z)xWe =$aI E#Fr˗/OX,u|.zѡ*|ϻ~\=0'N;uݪU+SEY1*Į_ކocZӺuf(,<~@ @O3N CUQ*~5#AC{91HT͛7wE ?;QLy֮]R+ d< y'5傓8qO<^{S 4SNJؗ*]Z/'9VS\NRayI|zˉ~zgN7T}N`ywD v5k*q.WJ*EN[qc7 @ @@. 'cy!dǗ$J[W䱦J*VkX֩S'wO>iL5i73x'z 6m]Y>+SE M}ȩƔ8صkW'1NI'"{e9`т/ 1U!+hM6uWs9;w+"1'Po}F3!+o0G?Yμ=v엾![.ܢ9ĢE(Տ'wwG,:=\> F!sAzdW#O%h2'gˆO.(`pɽ%%wU^ %#%zEK[3'gpW@ 5 P!5  @ @($WH.$ˀ I@ ;WoV@rW%>N@ P W:k "OO`۶m.#ϗ!@&; @ @I$Dt @ @ 8 @ @H"$¥k@ @   @ @@ Hbt @@J(aŊ '&Pxq_  @$g27 @ $UV-pz<*T0=dv׌ @BP󄏓!@ @ ppҌkmˎlL4ۿ5ا|A ϸ @E\,@Q!0๯mmEe3tolc/@ AṀI&oΝ;< C @ #\ב/^lw}3ΰO>9s-Zȵiڴ]s5 7l?k:/͙3&L`sε۟xv=/V_ 8о{;KԴ?ر{n>;֎>hK |L @ @;K׷~/f)X"~֫W/+W\uG}9}ȶضm :ԦNw9xN[vM>N=T0`_^ᄈ%KئMMn:ǻYf6lկ_? @ @ҏ\]X!\ծ]ϟo_|h"˾c۵kN8ᄸt`ַo_'^JGvI'Y2eyƍgO>+['a`F3ϴ&M>@ @@&@B}y^ܴil֭vᇻG}ײr/M2%a{ p{hw⛎_]F7+_]tEv꥽.|Խ(W_m"eC @Ҋ\Z]Mv'q־}{SȧD98fe?VtiL^jLVr}(٩r˖-λM*aN8{w >gϞ<pUyM9^q k֬qm6oޜa^h6T~?~LmP[yM+Wt?O'N?8SylC @ P02%3FM~ ?%K6m؞{iZYfٛoi^xa‘ zQG<$* .t*\Ϟ=gz}]wƭZjca쐨3gݾk7tz|`Ç7w_ˏbF+63ƞ~iӶ7b.oXboI&٣>Bu5'o_~3zh߿1=_pv饗‡1@ @ \_@Qc9Ɖoҥ䕥Y'1*Zի[cvsuf):%v;4l ˭U23[o^}U׹sg1b1ǣA(C,*G@^@bקJ@Y{okݺud.vǻׯzd Hӧgh ?p =QF`ol6h.2#⛟>ؽ7/E礓&!MsϹMUz oک :urǎsBYh(S1@ @@j.5CRf!o/ġ|`*O/5 YLd0T/6S@2*x&I΂6~5X`Admʝ'O v￿[ YرÅCSU$A0`6 2OȋyP(̇\{ɛW_jB}vY֕*gڵn*zw~ύ&^8Ǔ'Y8WX0R"}+ f&oT}BQ\o"H :.?bEZ!>*G3"ل ̇JFw"d qdB%z > UnT4?Ƚ0m~[zˮXJ7[_z%{\3r'{Ѯbrm*58mȲr9 zQI 7wKx ?9Ǖ>+x]\ {g1D9tp{ XlCHgp|]5IȂ]4 jӔ/L^ǃ=X7LN g*/8[f%ک=裦|\LΘ1*U)o˗gRaj*F?ebSq1CM塧w2Ͻ?d(cB;<K*< ˮ?Y֓O>iݻww %|)ߛ}yC,:<,:W!D.o]s5XD $IH]Zj3<3G_!xYhov8e=zJVw-[65 @ R,kcY)L@B@xOڵk[Ŋ4c|'7 _L~" -M BN?Oa5֭[]B~sZUͮWlrfw=Gε7$1!wzy|zxM7i0"l7md͚wsx#K-:R}.U_K@lXVzHpG7@AԸEnŦ/Y=2tfSb kxTTɅ;~@ \{n@ @ A#@N @ @@"x%1@@Px]h$O_ > ʋA @ KU H`(n/*>$z @@ %,B @ @/p @ @ DpIK @ @@=@ @ $@K"\ @ @@ @ ʕ+g%J𕝌TTHbŊ%c @q7ϛ $ UT)gS+S!۵kWz/C ,BPS01@ @ @pY DEv3L l$$pZ}츦U  @J.9عs.]:Yl߾ݔ GO%o[H@^rp p @ ppLz/ ./2M7d׏駟ѣ!9j 4Ⱦ{뮻F2e?~~GժU/#b+؊+|֬Y3СիW/&zCcfͲ%Kؚ5k\&qnذ{mȐ!l2;sSNч|i&4i{rJ۱c]TV-رuA.K4 @ /Ѷmf~m?KߎSdȹ1vX+^U\ٴ_꡹J(lڴi%:nذ!켘1cw˖-׮]֭[gK.uqzA6 @ |{챇&o/K{ᇭTRvwرkn^}'y$խ[4D:]6yN:c<͋>Qs1֣Gi"qk#F0@ @ UP h{キtVZe^pՁ7y)2MzZD '[?l7o69묳SO82.qLm֊+fݺuݻw;1.x^UHp֭#թShz>^wg]um޼|ا0'|2Wcq @ @@ i{<g H\f?p^[ i}wm.9:c~"c5_~y)_ق a;ɥq0#<,z<gΜ^t99~ߛo4`ѢE.bxS;|>̟gnݺ*Vh~?VgSϞ=! >T5V[A @ A?֡$Ozʅ+S^$.h"H$l[KÂv8':TbW]uvm&NֻwoWt@ U~>5j@Ds H|:#7ۨQ5xzN|c7|DAPw}35iܸIВ(dгMi,ګw۷w2UCTT^TԛDװ﷛o9fw]y睘}M,y[PU8('o\ (_kXrCrVz ]=YF)=+1( :TINny6nhs̱?܅PSaHӇ^3Uꫯ\*Z Mŷ5kw}g#XAWVm [otG(SEm'NtU@%P>sN S!C"'\K`ӦM=E7buEVVkEl DgA\ȉhq Hwpi|ĈN+Ly$)8ZoǏ7 'tRpZy*By,OBˍKQsw<^w؜@ @@8X Jb<$(,Q{Or9眣]y6-%OU8kjײe˸_ c(ɴvU#z:묘}yt^7ESUX7l>zS UGBLǩj榄ȹ4_u1cFz/\>[@ @@@+kM̞=GPDiΛ7U] T!s" f~ߧ 7H<.nPYGe:6uXܾSN9WN2ST|N:&:*$^J`ge UXBbUTž7'13ΈxYsRX;snl„ ._ߤI\޹XIHTu[[,J @ ??PGTvM۶mɛ+z@Xb{ v kc>?Y$~;MTWQFS.lZ$"*O?tq$&}n zuM婧r^|E2ڣ6FP꥗^ҢI+ vb'*jѹT⦛nrBB%b @ Iמ<ׯoKm߾֬YrJ[d%?{[ <]Uk-h;mm= OC7~]+V4YJNSf]+DpbvZ7skUR% WS"#.ڕ3OىT$M?*c +#VZt]nFeT滋7Lj~-o>_"!P \6lJrQg&pd#) @ J!@ \v|J)59&@ I\I , @ @!\r+ @ ʯZ =|L> :QN͝;wp@ d.T ";v$PE+%_=0@ $\/ @ @" @ @I$Dt @ @ 8 @ @H"$¥k@ @  @MrV_ɸJe˖RJ+! @}z6` V۸q[[Æ #&ccݺunf͚E/r @ @ 繞tIvYgJ M˖-^{;{׿eGzEݻw[߾}mVR%ѣ'fƍs<ʖ-k})jX/ @ @IHWA\5h hܸjʉrO?uQ&;t1 ?ߴT ]voW|yZz꥽Nt/ @ qE.ѵ/U~.ؒ%Ktye:E!:0ZjYm.zoqʶnmذ8kԨ+~q*}8!LS9keݦ;,zN;^}U}]K#ǂ6m BS: SN`[m+L+VϝSd9~F} CI9Vwd_?1WB~yYm};'@ @ ?pgWΝmر6|'@FeoIh* I"^IGٚ5k"֭k={ޘ4i=}ȡkMN07I8p-]4r6$IX_vlʔ).4\r 뮻\j,1JՋ/h#Gt?G"C=d쳏%j}6s BtMv衇f:9et嗻)$qp .]q\Jꪫn'{)H+ @ ,Xn p~&![o5U$IHz\s_KxI$,Q"뷋83МTaV\co?:gJM?pa(3fpt񆌻?T,C9*oGIB1cf͚v)D맹I+oGiӦMd. y˔u(m)L?,|-k6X ϙgxNMg=c` 8|Qhs<:2u=΋xM! :VTRg2 l2ر D}$ kĈ\r2UKҥΝko|nMvwXǎ~өS'W@A$IA㎋>8W16lɕW%\9Gc*uᮍDlnwEE1uz-'ءCS駟nsZ6/$rɻOr} p;|͈OɋPn lΝqnun(Vba4~.kK5&:W^=Y Cg>;Hχ8{x1}'\JOG@ Ǔ $,(JȐIYzVةLb܎V^7n$759g}vߐǜĦf͚etW#m_|{ݑSO=yH}W2QFfy\s o:Adr"{eBlB-DZ^^P 7!7~FyM6>ᵄ>{'~_Q4W,pJ̾9ʕh,xnv%{?CTmUBP^2dߔ/oRxXs/lFY.5Ek@ @E05jm޼$ҥL⛯ C~4n„ ~3nyYtUUW_nzr\/I`ܹk裏Ɯ?>3fvߝg1_l;OyʼH^q>{cyQ1Sś!@ @?p aG"UW]e;*WCՎ=zcƌvs;g…/ݺuhʝs0b*՟Y៭[6y <8{EgDMV`kT~>@ @@A}쥗^ЎR~+Һvimۺ)S8O?(!Mo'pB< J ٸq\RU>]nVjU'ENƀ3y A.ٮ4ib_uD^{֧OS>/S>2LS.7K"DCbw!Ϊ|hV 5kfzkxKm$u$2>ΝH f2UUHq۷o6#os*\9 @ %P8Qnr*">ļ" _ݞx 8qk#Ka'|{DXrevw!1LY>S\#Gq^Xݺu3pB`]lDX;pرc#6lD6mDegCדO>ivW0o$O5?g|4%PZr 7n$LXCbMXxG*\Xsc @ @C_"ԟ3TE^l*P~}+SL*6yoILSYܘLC!? i0 97]5|MryVL^wL^y4y RdI_"Yc%暪/YBb6#e3V+ @fp).PM4ɉl TE۷]80bGzׄA@JQ4 @ @F|Cgw'KlS** Thڵ]眕t\#f S[jʉ!ɹĄ&z%5yl}\ # KkfB5rn˗/_~;0;#H~K+"!Tʯ<ʵ)/h,\7ovu sz @ [I&vwLb,\XTrB+msf@ 3s֜ @ @@N m!@ @ Cp9Fs@ @ \Nh @ @9$C`4 @ @@NP5'h @(5j԰bŊȅ=*ToB@ !W  =߲*7j@ Sp9%F{@(v6l]*+aKs;{ @ L._z 4$0uz;pL9toli @@P!Gh @ @ .gBiuVꫳ׀qnfGy͛g={6md>js΍ٮ\r.`;w?fۚ5kl}ͯ!CgȐ!l2;sSNI' @ $\YϷ~x۷Gʷ׫VrsݲeK\G}d>铭~npB:tv}R[bcaÆC @ C.> O7--椓N:+ú~7_矷/Ǝk;3ˏ'NK:.?c @ @.uԱڵk,r֠Annfm"Ŝ;!@ @@ %j~tn:[dVV-_^1^|.O?r5o:tcƌ~ڴMuE]d%J΄ wc+UL櫯ꮇһfΜ黋l|j*0bĈyfi ի[#S}ꩧ'tfzOf3fp{\μݻGцӭGb/1e'լYN9~ԩSmvGBb5joiӦ>$j֭[yI('916S 嵓[_%~ΣOӺ~Gw]%|=y]꽕n)b.$s׮]UvNe39"s:3f bV ݻݏ.z 4a[ߓ1V? X,\zU 㫿䀀AC<Ϯ68s2g%Jhe%FӍ<ҙnRH?a6t|H2`+n0o"pJ.x<(o ;I?VZ5S=DXE?Jd •S^P37Jt4_>)'ic<7߇F p5s.;G/;p^߿ _+R6Ga/APZ` Aձx,o@]X*k'qW¶`1u8]-t] XmBPsp;7w=#^)tߗ?JQl}A A `x= [p%yВp)Oa\yV_bk֬TTAS}I'Lܘ pque 2QnS1.KCM.r<ntW:,֗WQX8q6#ȉi]*nHS(jqƮX -ijX6L=Uo߾PT֣ulU| @ '&װFNTӯpJKmyz7B4͵n:}#ώ8f? @ @D.@5̠A_'x&NUbʛM$y_I$S>[n/^wܴW 6l 7!gwWZ׮]kubŝtIƝs?s裏tpv!8qKb2YwrReNHZje{mܸzb H̎K1Qjc6 @ C_NWT8ATMSej,7&ˮqϗpui}TZjt^+s/ViydXr$vCWs3-[8oBouqs䜀<&?9hl}( <=lvaX kȂsە'ucTYt6m}`B}Hރ^(UT)-sAzƺW,91֧aQq80@< !BK.0 p%FJ.9W.9\+\<<#%+BI" y] @ @@!!@Br!Y N r担K@i)Y9eKo @#X@HIʉ'&@q=?#@ UpEʳn@H:\f%aK`Hp{y @(4A-4#;IƜ!@ @9!\Nhi{-ZfߴiSk\7l?k:/]/ÇGa]vYel߾Fip'l 42gƍ?6nh 6C=NyE>p rV^0bݻwO؅BPex`v'k׮y~nm)ߎ;ZժU IU9@ @@ Xa)kd% :;v+6f{M$ ]xvEe&L`?yɃL&ϴW_}J\mK.ݹFM7ݔ!Z1^_hj-[ͷ^z͛P)2I)4I8|;]`;.֩&? @ @@Z@K$f)>$L\խyq۝$MU;LT@$EرcwB()3*_ SSyIӱ'x{.c~l޼yNTDr+Otk!1Q/OdZ,})_i 5D8wm:0֘9K/ȑ#cb>`c zaalȍ~ҏ~6.إ >篶"M( %po7nsJJ(2̥{Gy]΁Ƅ@IDATf)aW_} HTw!H\ |ꩧܳ?K.ֳgOL,h mU:' %\b=zpɛN"oXQԆ63wG[r;O*w߹-B79Yd^hFŊݖoKxCf~mP='I&yߙ*F7V:ϴ^JFt_+-J׆dM@b=9lsK.{IqXUP(5g('-}NΣ- <pc=+Rf'Ov9;wg043js{$I ~eԩ O['nݺEN\֬Yㄮʕ+y9 l(~e8AT4;d>% 2yo}anذa[o9qLTd{B !W*p QՍ.!ASZ2ij3f;ٯPc  @ !_gq;Na^ӯzD3LM`6&*hSўuryעiݺ>|ɳK]"+ؗ,7}F9i Fpf&b{+r|dNi+"ǿ8ߗOl_pb;]E;.h#?SN9y7P`X^(R<| p_"?~+6qI' (/>_b5n8ִ@ @@@KTv**//S 4H)I9VF|[tϔ3MZl}8b^peW^q $Bk)GL|7ƨpQN6=TDbѢEi3S8o?\xgL6}tOJ΍6y)CuEGoMa u0@ @ҟ\_\@Id۵k璞>îp~*{]^yWf͚CqUA99bg7VQF^z>\W͖.]ٳgCjժ91npUd֪{*R&ϷX~vgwu'i?; @ @_p;Fj6mVC{̉T#'SnݺT3&og}օΜ9Uչ TKVwWy &7=dkv"cE*x%X}kV](;zqva);(VtZO*U?;OUıp ڵk]gRJЛsAzz* ؊LbiDo \_f$\r#%/FKWc'n߾+[w߹9w\-D>] 6d @ Ի&I{a/;! E,Yb#Gr)FJ.D};Î=X믻 ^xgiK.oѽwg[*U;wݻo @ @G.Yg{[2eL!6lOoq/Ll;%j)DVxqXSm&>guV&=3?ڶmcM&8qW\qEӧ_)邏Nի5\cSN5x䆋c @ v݌p(?x|?A+V2* Hyn|ra'駟lҤIN_~q,X ]eoĈnN}rmE<0nyΜ9ܹsP}o Z*K5kگ0'g@ @Rp{m:;Ξz)ګWLcmٲʼnK-Z0gh `~+(ߣGnyUWm;ݻ{EF"*R]5kB;#SOQF=5ZSURy' p¾}7nIH7 |Iڵ)$8=SQ^{ @ @K.}]f.L h-2[A6mرcpwm P}q!ڵ3=1g96{,ڣL^]w} Tx izjr~zHxG<_cO< 0/$|iJ"9b47~ΓOyZn)<?6k/+ӳITU/)T^rL/B;3?24 2]xbO}~=9朮sqW3ճ+.h^4{]؆FĢףgg](ϊa.gIo\Ӵ=yE p ?Uδ,Ġ/aÆ9M^m\rID]pA J \wu&M_o^袋\*6{K"\[A˜!'rVS09잡S,֮]XGнbRZL:tƌqF3gʊ';Li`WI0Sုo>d^|[f}wVreSuޙK57%JJR#KʒdW٢H!DC$eo$!JYZ$YU-D3s瞙;3z?sg,9wfkK$lcǎVvǯM::t+oD hF> &(y'q;xX>7ܒ>q1Q.xa24CKʗ/o>^ښ7oBiqw* sBVB bFc^d CHd~`; %G xDTJ 0u$3Ly&ƞDt (dt#9y,ѳ1BYE@2@ɺ,Y1PݼG)ѡp 4>3-av\i6aE G(fAq2<"Y^qQ -̘SӦM]*!p>+,X^[q(SO=eF{x '.<ѣq+-FXEժUK˒t ϰI&Zlm%|Q͛7cXKtڷA9'WQY }b˖-Gy ۷O͂ǝ?=$ .+_h'E CFဃ:( ̙cxW%O>.Wƅ^T0>)܀x_܀+%Taƾ)Srێ?x7_*zOr{P pР!Y|vTJ?͚5+W.^Rԇq,ڿvYg\p؁cdUAͮ+-% {]e;,7WRZwy[lCX+7|- 4!(cy6ւH'x"G,b@-nݺLz-sϹ}A:~a\S7|p;v|w@\`阮/0@A]v) sWإ^jӦMs=傣ٌ3*x 0 zmzW^y@#8c 5k,&`+rʹj"x}.,c/]۷o|oϞ= 1vA8;< F9z!'z"|VTի窰R!O뮻#=i{<e" " " " " " " K@\Ϙ(w[* E(wDѣG#\g(k F^SN9UDK~Nк{ݸ~=8c q·װa{q(~Kx;36f%XG-7 v} ȒKtDO?G߭z,mK5je kIÓ|mT-*Tc0-~.0Xx^ *7I[Z㗰v%!œ G 'xʢ%[#Gzjz1mOnO1;aUSI W,zxvڞp]j;IUT':")7V3%1F3_L-HD@@z\ [xxq԰a(L/.t`ZA@A{e,H֍ QieuN@\RD@D@2@LD@D@D@D@D 3 NNԬD@D@D@D@D@D@D@D@D + .+_6MZD@D@D 6lM6؋b!" " " "P tZj$ݭTE@D@D@D@J@\ZsN@\i?~V\D@D@D@D@D@D@D@DW_D@D@D@D@D@D@D@D $:()~K`e˖^Z@W$5@&fmd5'@@!%ED@D@D@D@D@D@D@D@2<2D@D@D ξ}xmtj`Q'SyJ eN6l0D@DVÖgq6kD@D@D@D@2mwq-\ЍߤI۷oskmʕ9.wޱӧҥKm˖-VN;]v Gĉmɒ%[[zsָq̟?^xoB ִiSkӦկ_?1Xvkw٦M\rVV-;ꨣ줓N v@W̳fDġ ~7v&whx lݮJOܔwaw^yC,_|% :^|E*z}6aѣs99d̘1v׿\ٳg?oC -[: r-믿o^/^nG{4hڇ6=a(zY7"^]T{wJ?w>܉ox=k#{G5ky2K*LD@D@D@D@D@D@D 3Hˌ!gq!ᕳfͲׇΕPMq6# $ _~%O6J3lٲe[tσsƌf͚J믿n햫- /cvĶ[vhw|~1{ ?~P;(gϞn |jJI1LHCfjC9sM҇ Pf\O?=Nm<;]x{VJw8K.N;uAh(T ڵoG@CA!y?ox}W6ek۶}.i޾K'⑷f͚~so;D4Bt ߛoڜqyzUCYÆ Bc@Z HK+ޒ9:E/!!UVͅB&Z5[ӦMsag[]QD9(2oF]4B/t!?+^;E]>C ;/ DF5rUTU@8 O5`fΜ Vzos .px٭ZΫB*׷^{S`0̶~ g6QH Y818}|9ˏ_r?sѳ8<գ: 3v,l'wAˢ%d c~EC 񌆥zHd v@ $ B F2D5Ĭ0{7?|:ɩSNի>xBb蓜g;/0kvX_ƍ pРA6bC "7M7ݔ͇&|Uߖ cÒaF1  ɴ9"\q^{CaG&>^JxBK$J߫gȊq[.}gG<ƲéD !%/r·WUOgym!xyO10h\0D=Oon?ܹ|9BST'+\QDA -Qg"!tkfa̯ч/{Dj@f\f.9+򜑏0T_0 ϩDd 7h 0ě^#42̨o-roVߜsr itMo^{ ?e?j׮ 뮻N:$۷MpOd‹#Ϣ+VKG*[l腵e]\lؾl݆p̍ZY]AMU䶌ϓYUFOAQhnm|+W.Kyx8wR%]sW|uq0TC$~ߣגkG@\f6cȱF~gԩSyBq ۱PV*.4_|=͝; r~./8ol[sx5h  K;֎?xc`^m཯\Іsxr+-F8-e O#|i  xܯ#@Xz(dG pbV(DzY8DGh7" .^ %[':}NU̡PBAJuT!g͚l#jG`) 3! :Ft&j" " " " " " " EC@\p.1yv;ϭ+ Z=˗۰aÌ\jguk:f̘X>8,3 y=êgϞֱcdݾ}(V@T;r4mȑtRiӦ]ݺusq'^xҥ.ڵ{~E@D@D@D@D@D@D@BP C?~K+B /8}m…Λ$xm~yuۿ{<'aӦMŋ;o6<:p-GH(jT9),v# Y}}g.wmU/7nlC;#]bj"M6 +#uT]l#,ĵ &MCD@D@D@D@D@D@D@գ"U\WK/؃>rr!fUcEk;.,O7H :M7w-[~Y:u| o?<&MdFmB[Xp]yNC0dΈ^8_^ DZjSOD@D@D@D@D@D@D@@Br|4z)!@BN'Giٲe r*"H_ժU _~:ذa[ERXS]w*T򐌷b 'R5UkMސ{+Os G#[#ӡ~fNN(1TļZ@&2 ZϞ=m)7i$nJ}F~ 6ĚO?Ŷx" " " " " " " IHKG2@  ɓS/)OԈ1_&l?cۊ1bѣ8" " " " " " " )$5\[m{nxe~}[[j:uO>ٶ~|[~75jm޼]x H*^[d-Z($&Nr!;&m[z/*VXu@ $*%E-mKQ~GoaBKl9ԸQVV-SΡ7a8mMիWm~avVn]vmst/ؚ5kܸyׯ/VXaᄏ7|7^2#[!(hd(0;:2D?VZeժU8 XǏaÆYʔ)c'xlٲ n cƌ]v%kʕv|ԬYӮk޼d&LÇ[mӦM1š7oȁ=6n8\pg}{ Ynpp$D(;0'ٳG\0ĺx#GZJNf͚ڵk޳9sرcz֭[n|믿ڹk#!Y<ϵ!>ֶm[w,"zW_}=.ݑGiUVGyĭK/unB7}t +i|^u/W# a8 @//*Tp/ S"7 gYx;\r7zA==c?F7J)we1\(SO"U1c9<*!AëmڴiΛ .h\p!a3,o]v^z%'|D{לV~}:th삶M6.̴sFY !1hoW]uUY揠Waxl҅zK.nr=9s <8v6vi|y/U܊ʗ/{*1{d\-^xqoܸ1}gG@=Jx՛DO@ɡg֦LwqLoݻA/Ëb*W#LwBWVJ{ݦ O=ょ|er# {M4@{k.3(x1;%[þ;]_xA3zz_U\9~sV?GdV֕)/ *O |ʣJ ˕+gx Ȣ%:q-WzO|ˢ%@$8Hvl}*y5:I" .*'# !' pX#K֭CةS/^BC}(>/_Q`dN~9*h*&ǡYNy&NgsQX|֢9cDŽrU>!3?G`G*=#HťV-"PH+IbGudD o„+. n{7A ֨Q##_\`{6Z0>^zKn3BׯXQD@D@D@D@D@D@z4ټzxhc,,g@|Ch2d6voxa ߞ= ҩVSډa(5І!M6u놎駟Z%c…n?auֹu9}t7l?p@'­]օ.Y$[E@D@D@D@D@D@D@@a\ )G+Vիf͚{?8a|txjJ5DV"YeX|C,Z|LØg2yV7?0 [pJCznH{sd(DydG3G'pxWR%~=)<^K,ZiXUK(MD@2BP3u,2soa+VF\}*|}QQu~D@D@D@D@DTPj|ٵh" "qD@D@D@2!|[7VY92фD@D@D@DWb^J-DD@D@D 6l`ׯw=\E@D@D@D@D % AM @H+7%" " " " " " " " )&5PqQ" " " " " " " "J`͚5tRwz뭭YfVFжQo,α^KIOp%ZD@D@D@D@D@D@D K R)S&vkN:Ŏ> nxV[Yٲerʶ^{Y߾}mܹ9H䧟~aÆپk;>ֱcGk߾լYӪVjm۶{,Y7Wch¥ pEגE@D@D@K_v[w" /kѢE;vl>[n<;޼y_މho/[{oyvWI'dM6u>SzȾ{7nЛ:u5hW?9vA[W_}]D@D@D@D@D@D@2@ M6?ǭbvu幢: q}ꩧK.~yÝq~蛰8 Axc=zeݻww܏?h^zi=s85RV" " "  0l5!=ߠ\@ŊUVWav[~V\B;iDhO>};>l wC܆ γ-[x%w^z%lok޼yr+αsMFR" .%Lj$" " "P.r^aH˱5TD@D@ Gk׮N[xZl1cƸm=xBF/͜9.Xboyoy@ꩧ6!WK؄r{ Tqe 믭N:+!˗6=&az 3q`M4c{*Urx({QG oЮM\qY6>iİD@D@D@D@D@D@D ;8'0d?="Jc}Ƈ>s}C =N'rva)<@7܌3\UWϗ#tХe]fymwxtk߲ebǎ~^s9BX_5v  /=z8"OF6r*?4B w^6bvy5ͪ(׾; .>:,馛lXړ2 kR9 }DւcD@D@D@D@D@D x^!aɪ.] !͙3 ')^8Q9QQFC.j5FLdV%7%" " " " ":t@]"/8/t-_ N 5kܹsG5r +~HUVc#]tE.GmڴqK 39 .MW\q6.cAq S#ٔ.]~ ׻?\ʖ-\:Uf}uJ31 " " " " " " %P\9ԩ=3Nb?Љ@ߗ]weR1z(Gh0ǔdFXڵk]0c"ptIՊjlBkICo ؙgi7o_뮻c|CܹshlDC 3BgG5)m "7A뮻PՃf͚Y͚5]SB9gc?[Caa\%&2{}Qu՞sAv"QoUTB}E``͈+A$spmx0SsOT 1`suc(0;ċVZc2XH6ۺ7dF <͌[ʕsBL?ojfhL,6f˛\id0P|~GbT3Ȳ}`:%w.\5G4. Q/&QʉUjCLBō+mn0DA vCyfn]z饱aPQǏ\mՓ_&Xo$bm#w׺~1 2}%Hρ8pzbmذabIy'Z^7xuͿ\uUE\mI`I?8f$ 5zR!r(w}Łs}OڸqDk^D@D@D@D@D@ N 8(-(4S}cǎ0 nA>9î9vڱcixhdo}/|^Tc{]!~BA.{t p^Ɍ7osɯZ> ĭZr'Ѵiӌ$_|sa zƍow 2']06 Û y{駝)';a~qBϚ5˨҉ED4&=5SRaÆ= 74~i@B"?yq^σ$;ݻK|E̙3p0ޢd 3֋G/t!p9yp 3ѻ8vX^ 7l^K~P)+8нxQI<c:GJ= h b5|]Y SP=q qY{Czwp^!U=Ƌb2^/=PǘJNcGrMY\"CtoO\q-O\[c)XfQyEyZ<7=poD)E+uh2Y#g)d|Dm,È~#hR'cK B% {@B rCC[ U^ljMqx9 Ed],?/!'Ac"D|wqc{aܸp(fKdIo׼ys'* /8DF_(\7w7={8`/#B|F1UX0NL }CJvOH/}ZÎ 3ч_0Kjъ׸qmv!s8s ؛iDb=WcP(t-1gPk4#J xXZtϔTL8/p vQXqg'ǵ>H F^!%`ъdva,95 q++p++(vxOEx#1o{oCȯ 19q}H=\^@a 7AB!}~3Nn70b&[jX7Nq GdW2 zSX%)9td54Tcұys1΃-L\ZE4ҠBý0IJo6Wa {+k'maF8\G&MškF\x-D0ޠAbՂė#f .\hٯ-]s"$ 7!IȭLmYy>.9k 3oGe~Î+6^K0c *mׯw6oY ʼnE)D2%~ i/ɊD2X)cCT[냫0{JX09EKSፃAQ|v[yEm HaDב|vR\Y%?Ba9rGQA8&SI/JB%oGq{m ykf7xch33{챡mjcRrzA+ʦ)oþwspo%[2 Y&k}r#o§zF+5E-X+#UAF886yÛ:u EHD^x WUVqhN ׹6n~扙~%[ Ug7z8H#px{ 'qLt=czWOؓ}""q,'yN% /th8G$8׽B y5!W_$',ȳN:jCyxg_JWP>%"I"Cě0Q/O~?#Z2KB{w?D8{M p 0P'DL7.¼Y`JF_R(Ũ_Oě1cd ;w|'ME@D@D@D@D@D!8-~9pENyI]Evq-H:)7R/E|xWOwrؓQ`ɿsÍ"Erm*H]u 7fD k-N;4w]M?0jJg$Hԗ c?ԗN?*?X' IjWh2 o@m?~>l'l,JƛoqX"-49$*j(xŅy:z/ya}A V nc(F"  ;8N) ^\/",qKfws=֠Ad͒+hҋ.E7<0q~ 0 ]H1Us3):v '& iE }wkSq50ڵy!nE!le"O8j_V-㖉&. a.x!0El\+U0y6% w}F;wփ:(ۥ2ӝ=r4 yB1c7|,08KBBI*PV<:t(Nc\N9GDJFH^GZ2^z*}#GBi9! x qx N0F4Em7>/n2e;bn[GJsGD@D@D@D@D@D@@<.ѳx`B`Bc9xOҊkC !vx|fc݈('%a`eQ3f݈^}x Wx* 2}'g,8V u{?-lX3|yc>` c޻R$9w]Mֵy7,Z~F;\nfQ\2I&^ |-w=k` c06mHB_o8d_ ZY!CCP+*U5.5kV t50qyTųys|~" n<cakj+" Q8YU&H@\i|յfRDxG̮Ǧcǎxb={8hڵsC[`A@\{x VNvuW{7J*_c=v@6\Oʗ/'xE^ D@D@D@D *mN2eDխ"b7o`}1P'۷wdʹOD@D@D@"%P\9XI:Tzݯ/IpժUA͚57^2D=}y{뭷\T'{\mD@D@D@J[.OˊRˎi^--}S"<@'|ֹsgkР+ &} [ LE@D@D@J?_m|6-jYU" " " " A pW_}5ʾ{olȐ!v't[m#Gt=P;餓r C mƅV\9w#tqiֻwo۸q~N;w~.߿5j&OlGv;4/HË/6olwuUT).ϽjժS@ғO>iGu(lٲn%==Szʶ~{n"MI뿨`<%vwxj׮gP4GcڤIrtpB۰a9 S??掭Y]iDT3)֯OOVR;\#<}ӧgl2wmֆ gom==o۴i裏?l pBXtyxᭈW^uɉIfvU^=|A 'l{Wŵ39+" " " " "Pz O[NL3V^"o3/Zȸ!@!N;"13{gشiSWgϞF89s젃 6)ǽz* ^n\!ڷh"b HLuo#0'>ەۖ=tU,6)%#֨I@ZT.][zݽNH"ۼyB8Bu+[rժU_~Ņ[VbE_ڊ+1=Goc-Bl!7#sS1v2c|$^isIp~w뭷v+Yf=:`:y E8f|29vm7w\9չmy)vRa~޺H@ZԧQz[.N9<_ՅNN;4ѣGV*>(>@+ּ!xQW%O߸qn>=&/a\p#s6~x2?_4mxu-ŋ}7Ok&6;#z2qDcucnwnUT.̮K.M7ݔkj7pCy;Ӊ~<2p70Ω̍}?p1իgxTD@D@D@D@D@D@D@2@8f̘ċ~)U}֮]ږFx׏- l6{lW/B%K /`>}v} {pDn۪͛U Q /.*>{<}UVu"ޥ^PUkclڵ.29[n[|9ʯwc+J+kƳ‡U*~8k,7w|b78SqƄbn䯃A^lnxKy쳏+a*Fq f"jXlhMs϶qgʽ(cV]1z?w6j=A؟я=1$/fDH7x`[Вd*T(5bڽkx9DD47!G*:8O?ԉ:;v́ʎ?vڜ{.>5Ex Qw ەe#(,n:VZdchT:/}!gqAYtHLA]ID"d%pRp\b_~ynR;{Qrw;8ݳ>,W |hn?C?kҤIp7Eҹs:D/}AD ƩĿv=(^ p~[ ar+iRRJl_ 6z|3 n."#. mKAn㕅ys9#(-hm]%'獪Xƍc=r`9R~oX5X!bE5JщӧcF>=0./|BlK.? ȴmxfq+iμoycO"{̭XqOџa|7\lg W݋70Jg1lþcN*ѭڿ?УGǕtFS@"ȝI(`iG}4G܀TV|ȝQc!m8(.2 VL$LEyM:(Āf͚¾y.X!v@!m`٧O9kAChC\ 34 1fJṉ`*%u GETs.͢t<"F\B$5YȣtW;HͪəK 狆i\DŽ]Sd3H8 @JS1d'DĶP }uT<oE6B6jȸhs, #/j.˫`\_6{o. ?1O*@TC jݺM0~YA /)8Kfamxy\iӦ9 mȐ!ryэǵjp,xҤIE!2żw&ȏ!iJyW]}8vz." " " " " " "Pt"O&sG?E4^s oO[-옰m[ﶼXVrol_p!w1<' XA8ϟ9sb<ߔ~/().jߏip=ȵ? xbVo֬Yvv" " " " " " " ED rwv'ѣo hmY; F~|/s=瞞r)~s}8#^[>H|!DǙ3gڨQܡ>O֢(mĈ96n*Үm۶ezJy睹aBC*z|f5tPa'{8{\$#(RŸ>%i*Sǃ cAuֵr%]sރ.i"W{wa,x!P1F+O%4,I2su]r$ū?6(̀w•s ۫W/{W rIҊG5.]d+zWإ^y\pW1cQ%| p x R_vxcƌqXazjaކSNJDO`sN2%v (1SD.ɓ';QT0C)o6n{pܸqczqӎ;[8p+G%RW~}O.M})9N:$CBC\Czꩧ\|<؎_=ܺؖIF*w}HA7%k9Bw쨠UXd /aVs俞kok\4l0{{KjQx%zM&" %@ي_~O[5`TD@D@D@D /boѮJXD@D@D@D:/Ղq" " " Ksw}g 4p9s,X<͉*_|fAD"HF~Y DZu˖-.>C?{ " " " " " " " %!Su!Vꫯ_d{oW41iwyGq\!="s衇~陱z/9CLD@D@D@)X8|p_yȐ!F[o;}.<t'Mc9s6}tۼysǏwI&+ pLm۶n 2d"OsD@D@D@J>~mWO>qod^{VZF'xܛoD ?uٴiӬjժ֪Uv=H/޽{;nĉvꩧ:KP" " " " " " " "FAQK |]wwuWkѢ裏6x={mz؇8wǫRaꫯ_~6o<{2K>ڵk;`&6mؑGh@$ڢEڎ95Ó뭷vax!pɓ';.ȼW_)4m7F.]uU&j*7n\yldOD@D@D@D@D@D@DDXxL2N;Fv[>o5zM7oaϟo]v&M\r۸q-[&L`*Tvڅ!-=W8kpc3q|-[vQG{rS9uƌʕ+ O:Ɋ@pG ]^S{@nݺNT۴iXªWkY}]L7xW᭷r}Lg}iTԓ+8\%e" " " " ~د~iΆuh" " " O|n7ss-ނNL^# wqk=#Wǎ>): A-:ID@D@D ts2ed4FW9l;C_~Cgcؾ}{AxmٲSD\%Kl:ُF@J_6k֪U+]@)'p]'_ םl[7-}S(Fa7p= 6Nw-a/ߦMmu)>=)i਼1`:ujV竽|koUn㯴NE@D@D@D /ɢ/"F8~k͚53r&3<Ӹu ;Fۢ%?/,o5kZFsf;.\fڤI۷ok]YdҞHx9}t[tsS|֮] ĉ(7ի܂Iϟ~͸B ִiS+G" " " " " " YDFM"H7bq,_]pVlY{G])n/v9v' `o /0jO+o6l3j2W^y}'n;찃g'OW^y$/J|6aѣs91c{u<ٳԐ!Ce˖!y?ح裏7|ӨqRy<оk뮻F-xu!Iǣ,rÝB3y =#̧~jÆ ˱<߈G{mܸqֻwo׎~? g}fw;[o_yqF߿L" " " " " " " C rnѢEn%]vY!8x\nfIV2 h-,jժa3vzxmV\s=cs% ?~H(>S]'|yOhl=JSN96oD1z," " " " " " "P|"jcܹssl'|Cs祗^ʱOOJ%^9k,2B5ɛvG6$_bbk:a9sƋoO^@3f̰5k7I4뮶nj6DEKFBMj6ֺukO>pۏ9w!QiX&" " " " " " "P^8;^:Hc?~CĐL=kժD"D9|)`uaOO</ϳ>K w=֯_?Sj^v>焆oa]vu!x%34M66C "!c{k޼}W6e#gb|.n}NCpImc}w.b|=(Z pLpҠ'Hr!nxt͛7hӦ~\apժUs-niӦ9N3}FQD9λ[n%GvuK@ AvqGWq?t;\}7 q|"4i;+UdjՊ5C$O'Fex x"^}x%QET a>dV' #'"}9ypjxgu^JT|5pp} 2g1 ftM9<%|U→:nW`?)"q^?BЃ9$7RfE-!χ̠Pfb>֭K_" wY\4(ՋDF :,'0 .!y^zk⽄5hO$@8 J`3ϸMݻw! 5)[MoCN?6sv'MS駟+0r! Rh!ި=۪Wn|Xb#<5h;XM^ELArz," " " " " " G r8W`%K͸R' a~m}< |^rWP#[^{9oZ~믿j׮ 뮻N:$۷Nx(FD"^d khm_qŽmB-iʔ{[?S dJ< P~*-Vopoq[_S>.'yISuƍʕ+Wtl&BrCBŒ;<6{lO]"nEv1e4\cv{#%nw-㏷K.Ćŷ?=X[=(~AȱPԩSE̻q ۱PɖW%Ӿ&nǏw:XM*V>}s^p ˗/waAiӦMʀ(A*rPy|*Ɍs˃E>Î;&k>.B$wW]uUB#GK:ѭiӦuf WD 6X.]b@D@D@D@D@D@D@Dx ECt8p *xK0PV^mKQy(/;!"XpC|#T{ !0iӦŋ \r~9XdɤYßAQlXhkn>OɅ祉]*xsJ&Q;U1#_*vTė5k8TFY" .~UXbb,61l4O"I t_<{"IEh07Z҇/*S>f͚B8c8~۾;%]lJS@  *)·)a>[5 @ZZ 7΁ @H%Ü\}<0@ @ w pyQG9K,q @J`ƍO?[HNΗyA d&:8GL" @ @!]ꫭ[n6m4۷<|  @ @E " Z~k_~}6|p{ XZ‘\  @ @2@7lov5kwމvGrFۺulʕVzu.oB ?l?թS{Sk̙3]>mAd%Jٖy#7n7~In!H.w}Vf̈́^lKpYlYT5jȺvPO2T!cK/4x @ C`…vgrySqmw~ڮ:r̘1c7nt}|G}ݻ5k̮ZSd9g{o;wF5ni 4c#/cVy%5Xve˖,/0`l۶-GV3f̰_|N>d۷px7i$m@ @(:wljղoιC-?c'kW^ ID_bZliW\qըQ~m9rUR%ƍ[駟?o-;_m+V{>'<"R'25;3m~!5jM9yI\mĉ6i$'EJ!/³>ۚ7o^P@ @ڵkۧ~Shwyi[4=NӋfДsnذaN 'WeB]T؆ @ =.|R9j$sH c ~'Buna;1|8)\Ĭ :!HbD9Hmb TRl|>5w\1".]8O6y}'γW^q\eH_Tc;OET99*ߛDFq\15O% `c>ɄwlVER|{ lCRJ?J>t]$=SYNN3gδz(+-P^E6o\6klrHbrF)='h;vpp,x};dΔPdH |޸,}&#(xsO5rhzZjUHt^OQ?1嫛~GWXcg}=!c:餓.^&asΉb׋RfP|n3^\J1K|EvOl5z͟צv>3[rLLGs3U @ K@9͕MtH&Q.^St[p+Wr3A^]rW(dyXRT QHP'M -ZP5=x|fםgL߱PPY5Wxi_jb]?w-[]zYe U+]j,|bVCB+ȌCHt̘yzR^Yzk{8;q!Geʔ蘁KI)s>{WNޅLiРA۽kz~nk׮ /0[.LXSQ#\QX>B9Eo)zj*Xc%xRa Tϟ9MNo,t~cu -E5y3?♄hq5^ۢ2, kK5HxT0&7|#F}+xЏ z;xg7px߇6{oM 6rl}>!'îZjW_}SxSw޹KM{ҋBQ4ib*,o-0g63'_’7_ fwt>` @@$0`Wp_8N;}Vq pxG+\5Z5\^pGq7 mr=ò )8Y Xws [֭C}s}Eq2- @@PY9s" Zy~7=9WbtU<.R'Dks9ciӦn:{G K6lKܰaCS  @6hRu]g~md ;wxԩK9F gyg믿n}O<m̙Ҥ<e;vtb:ˎ;8W߬Y J,ʕ+2nN:w9$wW _=Pb+Nnr9~W݋kv<&#:G_dal@ @@P-={p]է'^{-cST'WTl կ_?WxĈ6uTwp*x /)a_*R? 7!]ӧuͩ/NI&Si4{ ܩjPKu-ZO?mC q"gU Fi @ @ErnԨQPK,qN!]t:}OW^up ݋gON3 2,[$D)TSaT]tڵN腙)vҥN#4#=eMo%ЬSN񆑂Ջ냕O0E˥kXA$\ۀ6zM- 'WD*$5kָgL2P{[Jv)!Θlmwߴo͓WYUv~L,} &#f/-[L\U*0a#/ A@v jUE;e?@ 000p @ @(^+^כB  lB @ p`@2-[lnիW%0g@ )B @2Տ-Nۥ(Y>mқ\z_f@ @(6JW9t PP]Q@ @ Vr0@ @ F]Q@ @ VV@ PJ,ie˖uCj @@* *}B ʔ)c+WΈ2I@ %O{9 @ @@..S @ h[a%Jkc@ $IA P.mLNٰ3\1 @Hoav @ @N.ܹs曭I&DZ6f̘aGvV礋-[ dk׶;%Zrr-q.UUXjժe[Ν;[%"wm~ְaC0`@㑆1b͚5˚5kf>yg˗]weuԉSO#^zl5Y /wߵ_|=9s @ @ 4p9ܼy͛7/Q{#稺Z:ouʶoYNcL4>'+W5/YwyvW~${1sYJw?{=HsL$oܸ1Fֻm۶ܿ/׮M6 M@ @$/veSN={=k˖-=^KVJ,ޱcY>#'i x h.b3f9?pkܸq~,YbC qnFg}>X`5*+m+駟lڵ{g;>3 իW7iժU1+wn۶m@ @.r%ymk֬i׷+VgI|wUӦM)N}Vӽ{wy)D4h]tl;ܽ?uV[M]vuXv[ti+[6w&۠A7|ݵ{>(TVGK6/V|y< @ @@ŵرk=K!g֡Cmt@oٳUIZxqM6E\Ο?ylؙkNp_.\/yJdSEc=9:o8 "EFmȃN$ܚ믳|2yy6/{jyi;/uoA!اb @ BPsq`رN4_?$ UC[6|pSj$ܝuY֧OО~i{Wbn聊xSn4 V =zf^Nyzku_^=;t N{I|ש(Ν;ǝo8spz,!yi 7`M=!@ @(pިQ#ME(;f^:ue<5Z9B0̙cխ[.w6h$:I͛G|v=xj?B9cYnS!'|ҝP}7f'|ɫlʔ)N`/*1 6jwM7mӁ; kXT 嫓)/: FFMB7/y/9?/}9㮯VUXrdl&6/Bedd=O3{ԏ<,)nP*9eݺu"^'x}_%0Ncgp,\ϭz]qx|Z)x0@ }k0ѣG;/hNzVB &W<꼩СCɓ#GmE'x9x%8!pYN:.2'˼'Z`}hCcL%<-_5hZO"Su]VFDM\|&as:As1K`<%zNkڵkGppy;J_9t)!OϋD&/B?)/VTוN ƩmQ_AV1Jq\sA=4Nq}^PTPcq`/pW@o(z+Eov'QIy$DWKؐ*A?ݦDDJ^d(9sS&Mo:&/?Oba+K}#ؽޛj{ʢ磏>DX}'7&Nh~z&j1_ U7~ڮ];|?]"? 9D?@ @@z.C!pJ5kzP1y&$ ?@oAئ*20TY_$(R)LUy͂0IB[c`1 c^Ҿ>ۅyIR\F)ϲdL|M'o95b牦h?^s5чX" 1x-VHUA I8fAN w>˂b?^( -xlXՕO7=' Zz ؊RH&WЦz~KAQO\UKPj}%}V2eʄ99uX9Eq @&@S8B^S>{ {&,%ޗH7to9cJ W\iw۟\/zceWݻgE̾v?S%D&AMbLȻMIL a:)V?MBBJظq,_(JbۖXXny'w}0WdکmQ0O5`+#M߂칸]G-n.T41>g{]\Xqag\@ 側BFD`ʧDF; v//Odԗ)_RW\qEȶt^wv[$X>t<+<3lk[oՅJRq%;ܺM&ak׮.= zrIH&!LD/6?ӣe{_NP1D% ?qUI&My$MqXIRUy>Ol{< /S(f*͘1U m,? m۷;MkٺP%_|] Huw`$@N6-MBgqmQIIx՜m+מDR|цXry" T @ @  z o GT͜J"駟ڸql|"R=*뮻r̗&G֭[dmҥ+rr>6Myռ)+&2;8oRm %3E)S86@ @ @P GuԱ-[Fo"'e]zg<4_[),k8[]tqTAf*{i k<ꬱ霼rWB=W$6*ǜ OK'w] @ %P(v4xS$$_Hx*U$ p"`أGS{\yʣR7>DK@lŸjժ.[m۶=[=l;7~ JZRSv J;TK\} Ut..zn&ܑGobG(qY%+BP E›n6;-+y%3&7ܿkEy衇Jьf,SH2@#Prw!@ $BPE3F+" * ^r@ @@z.=@RF͔aÆp˗BYM[N?A(ßʗ/OYqB~@ "p)KH]ځ/^l6l6mڸ* Ai/ P Nj͛7)9UfM @ 5`5͛s}'@ @ PW @ @@+FB @ <gΈ @ @ň\1, @ @ P3" @iBtVJ7mc @H>i*}B J*e+V̈2I@ %@j^;f@ @ ˀ!@H= L@{:J @ } af  |fLNو{)띎!@ҙ\:_mܹDF曭I&DZ6f̘aGvV礋 >̙c=z#<2%Zrr-qjժe[Ν;[c=οCײel{n߿5k,n={ؠAlv]wY:u @ @K`yh7oyE(ۑsʔ)976VX믿l:۷o?A&Md| 0ʕ+皷m^~e;'|*Wm۶٭j-nݺ%tsh @ @C.}ED^[vSZϞ=c˖-=^KVJ,ޱcY>#{ *d馛/UVСCn҇hķ<Юlǃ;,X`F b @ 4"@455kZMdNC⛼6mMq:PR%UV޽)T&/8z^wLbMs4XqVl,Siҥr @ @(Pp;}ر|w qT>:m%7|fϞmk׮v-^8ۦM+o v @ @G&2رch֫WlsP^5hժَoI;묳O>|hO?f1U@ do3gΝ;#{َXzw}ngzaEcyz9ck% 2&K.E9m10auQ?<6 @ @iB.M.DaOQFĠc9LWNlK3fUZ BrNS+Vn] yS۠ISg}f_} l޼k0NUO] z>},VQ \r^" +O]USF%疛mP*jhx/rޫyʩl߾}gyaWTS.ul"C9sczCUQ 竞a:b F  rL^S2G+=zœDjV|-_}! %@ ,pa,j NS;cbז6_ovy繢v%in>/_?餓\g}6+8q7nl?SF?[׮]Mb?>vh-*_~ʼnz_|OMO88u|CnXCNB+<0Nc}nRK VʚԎX{WR,jV&ק@g'QJP%*)8<~Vw_rT޻XY  kb5IjBbcydU-jqQ[WR85X^iS3j0s4fq_k+IK@\}N\=`._ma^Q_18k5\0I( EJ8*_|EW@›9+V~_ݳx_̾v:6y%.瞊A(wt۵kg *-tP\׬Yg$XYb+2=ټ8J.y UA pM5 Txjt }$N&1L}AĢ+"xJd[#^wv[6/}G97sڧphM^q˗/wD+Onַo_wkYP<٢E K#ǕNm`zz1yin>4gqmT @ @ 5H*o}wfN9/$%)h~79@ޣ><.)_)I&iҥ!Y nA=T5h۶msqK,8`nk*|~=~W1\t謊I+N&.ZXt@ @@ 5c.UMN:.~Ě7<.DW^D;y͚5UWUa3NǏ~:fؤBbUSuk6bٳ+RPfM?8yM2 }*j3gtsWHPE׋.UH:t 91c㤮g e\r[BN;vl.} @  < sƍP{UV9οqƮCz\U'xy~͝;cFr:R8\^gT|@ Dߖ,Y 'Վ_ƌwc_vi.87x7X'2*:}H tn~%^ve_n^tܹs*|AS>8 @ @ 3 =|oOfNY#RSJwWn< 6V o-wBR4h΋nK@^zH '"z+QByb[1ZppG(޽)%aY}yҏVLJS3A %ދ_cE`֭sߜR;rMl*ճJ@ ]WoV5<>UR|dϡ /^ie릮MR/xQe @" NlNp @@J.%X @ @O8  [=2+-@ p)J dرc*u21G@ AƬ!@ @2\\( @ @ 21k@ @ !!iB @ d&̼n @ @ CP5C.ӄ @ |e˖˻KcQ @@ bKD& @@* J @ @ P W @@6̾v0JWokھsa @'@@Q kٵ)-Vg洘 @\83?x`[nkyw_cX x ӭSNvj&NhO?~v'5={ؠAlv]wY:ub7uT>}Xvm׷:N:lWZe ȶ?юѣG':1@ @ \Na8_l6e_T_~e7ou!Ƕ]ѲexM }7|c<ܹӶmۖ|Əok}l穯ۗ_~^^Lu $LJPB;v8^l@ @ 12Rf%KN;͞|Ig[NҥKᄈRJ٩IA'-7`5jTS}Q'5lnk֬k?w\9W_nϰaìJ*1 @ #~פg%Kkڴi9;1cիW.Slٲ믿 Rɘ<zZtiyԿKRe˖]=zp⛄n-@6ȑ#™+u׮].^P|}i_ZLy-Zws@ @@./^S?/ىX*DOӹ 1(gرqeٔ`jUVn)˱Z]7w}O~1S~9=~+JJQ{y M瞕Կ85/0IQ={ }nS3R?ؿoSP埓5Cu >Lj{Ȑ!n:'ըQ#sb5mĈ+瞄ބ[n֪UXø}x1(ԩScɆDg: k`:z @&3;:lo>!.P$ .<Pύ)$ xqlڴi_&AF8l"/Xi^|*e] ~w8ЇGt瞓da''N? wu׹ SUkcd6kݾp߿b WTRP{>#PLz2~~cMs[]s595K[ׯOּysW5K*:jYJjwG9~[U\?,ѭ+].ΦMTYRtV< 7ol %?@ťB't3Kae 3+]xg<{\BL~FՇm&^d$6CAjN>7aO@KLR8yyNBӜ9sLE;,1iC2yDUVPXOn>M>}BO=.qgnLk4h+yMy֠ؗ[c5݊I fxM$I$ʗ/>l)"]JdU C :W/)u!}~Hzo)@|9Sn! !}&ѩS'>|͘1ÔA9T}Tv)d˦}>O8p7֜T5D>*M}=npl/X[+ݭޚwޮ}o8MOB_o= @ @Op C]~y3y,:TT@~矵+[2[^hS1{ S't&%F:OrCǏעo yXt7|_z.S @ PWg(&Mr)ܳe˖֠AlKjذ-\ eӟ&;]l v(Ryf͚BQ%`APKŸQHP\@g *<3gi"BUNxJўqY @ '\_pa~gg϶7x A)*s?vs9Cq%)T^cÆ sW\ mU}衇\"4B @҇ps-j&Fe TY_!$坦֫W/رZtSi߾}]X'gkZ5]vٚblc„ ΣPݎ3 %t5)Y/ @ @ \pOQ6zh NT}/"kfOY! @ q(Q"AKA @ oƍ @(v+^z.-X @@J&َf @ @@ @ @ @ Ypɒ @ @@.8 @ @@K @ @ TA4N @(QDY + @HKpiyY @A\r^{P@ P Z/>K @ @H=|UP!nL;|r5/}Qk׮]~IþlK*ee˖ZjQGe:t0ˋ]}o}g5kK@ @@@K sN7oٶm"mwޝi۵k=+ػロy6x`[zu~!5Lbcƌ+Ž?x?mٲrq; @ @G..YќMlܸqVt>CNs=7҅IJ͛7ۢEW_5y~6zhkܸq]2gym߾*VLs@ @ PO(XB! Ϲ߅_*vիW8 ?$z'؝wi=)S&[x;!@ @((PD/ڵkmƌoجY, /6nرÝ駟:/-ٰaC/'ܹs9ԯri:OEtR{Ϟ=n<)7+WCھk\pA=V.8S ؋/o{ٲenO?d)g7SmU'O8mn3N|ԟDGjP^  @ "\z]|FrY%Koݻww@omҤIw߹C^~eO g[nu $ySAe3ؓO>E<."#O=kKɓ'')!JyT@!>$*Ud;w_m^xad.jԨa\s"W^倛0akwUWƍmȑ֢EH?~Crw;; FiQFN ! @ @(0p:I[lٮ¦I [dKs9mذaVD,b 'YfY:qرvaf'),XT^b}װaC;M“D9%L־}{WaT¡:R2y%cZל9s'+tG8NlW96msGF7s'|;ty#yНp g9;|#FpП}.թS:)偙J{Q^0xzmG)=&@aQ뽮CjO˻9+T,\dr$hūʕ+g~VVj!ȋ* =udgQ\f2U.W@ڵs*M`cǎu$ͣGnm۶֭[[&M,ϋw/M$j.e5ktC)T˗ uuIJ\r 10R "k/;ciU=O.Hw:ur屨6‚K=W-:z~8u|%b膅KJ*v(o5֥>84:=,2Ԓ[*t[/Iq¤R_[.-^>7$pyOVZ&F /ݑ{ JsNq`$Qc6χ:JϺMjժvI']ˏIRXT!(^dΕ&s|h'/9]ә3g9C퐗Аp0;x w*a$)^ϗP(L^rw= @ @iL./Nn&aÆpB'OvD SUy|MWB[ܜG_y{衇cǎ6pzw@$u5d9Ob +̚5˅JShTlesqBBS.ѫW/Wa6@< @ @ Pn@_g dhܹϻ}jYCI *>OP!o>gBd׬YwŽ<{mƌr$pJT*Wٰa\wOzzaZ2$ȑ#￷ŋ[f;-· @ @ x1]ǔB"(qH` YT2y)$SQJJHtg믿;I&6|9sFټysr)lvݺu&O!{ 4*{y|--[4U8ܹs CСC6~\6mj={#<2 @ @ @ņ=;FOyRʗ/arW-[f*РSnDyI4T1,1y5X…m{(GzYBV\^% bD%4}ׯ{u;@{+]Um=.giQMWZz6Swy\F)=>[LbN#勭j׮zgLNK3A!>K<5DdI*U| rwB @A" 1  @ @a.,@@ؽ{mݺ[eA @ lpa?@2;lnիWG˘+D!@@f 5 @ @0pv. @ @@f@ˬl!@ @2\]0 @ @ Y2z1[@ @ #@ `L ,Yʕ+:6@ T@KU @ #)S*Wse @Kz31s@ @ \\$@@ lU۵eq*5ru,C t%lb+Vw?t@ŏO5nekvW A @PZ/檯Zj=ܓs ]lժU>ׯwyǦLb˖-[Zm}N:Yn J0 @ @ #?͛7/W#믹j_Νk{u׿| | << o￿].\nǏz8χ @ @@,px_ΝM6F۷tߪU,U-mҤINjlnc=.2kڴidدچ kF" ؀ @ @D@^mJrիV4իWې!Cܞ;.+Y2kAC9yۅ3n@/lB @ !W0S2Ν;ŋM,Y.r)7,ݻmҥaFnw16nQTjUQF~kl Xn<&L`6mrvm7?`*UG6.Ծ%>s_O6g.7}.Y_}ٳ]έYf{o۶͖/_n⡼w'9:a @ @)'?&C1@f̘B,%M̀yn}Xr傇؆ @ @  _Z]:t>yO}G6}t+ty$ȜzOϦ*21*Vh[7m4S:ʎ8'z?IKܽDm:oٳg )H[_Q4ٚ5k47n^^ 6oNH,[9bGyk>u$.JlVԩSg1$qi;R+.]8/zg>m,\JMai^9s'# qh+Wt$zEBA&1Ly$ԩS?p/LCu9M^V۷ow%Y^ƈtcC.r7_h7SHoHǻy\g]_'i>3}yͯ]b8yyۺu/Az"Ӈl"C1e΢t0NBrF(=L fY;~0$¿58|=8!F.îڴi$s;GZjD_XAN;4'3*( ?y5WݼáD%o]%Qdjժlw}ʳmvnuSx 6\h CձdX` @ @K۔E5g*3Ja6 )뫯rdA,cbk_Yf9((*E{: z*_?}~kYflS.>CpBON 7`ǠD7ŅE*֩o=OUEXV%+&.e[{gʼBL{S\}n\yGWOg)n:2aޙ2Gc~|NlyB@ ȀmyɂV>)oaSEOֹs,ovy#z \}զ\gYfvAY&Mu֮e1 (:;crlСSNq?yWxS|(ٳ8Qqd>CF1HD<y׍; 6ovE2ڷoἮ/ATcH9sd C߸qiɲ5 @ @!Lyo2kW_} Lڵs!|Wt>#\gI)ۨQי*,4:/N0qD]h=C6e`(C9s̙zjNy|zܫW/Bjnjn_Һ`'PI8p[^Ϗu>c<~?&w: \Hs`֭O%ꎵfA @2\^AIO? 2ĉ.>P %;n,U<#]4ymUR%&!:N>݉@ZCD&MrB8 c~[/bW^y;O-'տ;#l„ &0y&S%ke}}D?NEc(UE~an}jլO>֭[7Bct?< @ @➂&PåKZ "rc&qFĸ,c(T%%˵.TTHcUi.oٲVZeׯwURU-W&wߟݧxެ4W_\}5jbޣ>sϵKh[1ծ];&@..F^"Kaɚ>׶mۤNpRnl}ʶ?kԨQ$}Ǖ)͇ @y#PV'+Y.Wz { 3z @(p`n޼aӯg}V)ؙ0 @ } TlxeNA d4|M^K^ziq˖-sύ#4i-]vm{キyֽ{1qD9 46mGmz̝;^}U[hUTɝӭ[7k޼yS؎   ) ljRyK駟O>VbŘ:F+_6o쟦m즛n3gUt|[d BײsN[lڴin[*Ul…gȑ#[3ƞx rʶ}vꫯlv[<"   @X!7 [*s )?; 2ߚ6mj=7} :7nlfͲ縆gy6lh{ ҽkvۺukUV8oAYٲe9ַo_۲e~@@@R'@.uYrvjxf\խN:K}S[ɒ%mֲeP[je;S@rر.ȺvjKv~e֭[Cq#F؞={s(Qʔ)cz38vao?G@@@H߀liSNV\9LڴiSPM͛vQG@TԃqÆ .LA/eE;~ڵa:^Sڔ)S\6^M}P'OիWGvf͚5u)Y9;csڧ;.?V    ^9Rcǎ 8zSh)/ڿ/yv؅^#xo۳>k7x{w߹SeƩʹqFZhߙgi^z),^9]NkъaRUիg pϣ`9| ӐV [,ʶ緇?j2kET}@0\=֪U+rsFVvDpWk5g,Km߿wV) QRᭃm!{kk^I٫Õ#pqV TFZxQPKh4TTMu6,xO5V#UW/u''ϲe쩧rGknXקw} 6m}g~5UmwXY|I߿fZɼzbl%y*/J^@_>nE|S蝚[B3Ƭ@SP+Xr[+׮]}^+D s'sUTsi.8jXK/]_|q6*{n"2@/ꋊz*sN(6žz%T?GLs)(x'<t*h"7\7AC?+WΏ5@@@(22$p1ĉ0T`5,U󚅯)?MJ9sfPMȢeжmFq-_~믿Z֭]6]׳gOw )Ng SXg c4ibύ?{L_^?b"RJ䴐Fݐr}yPa8+ W}eUmlykԆ@P XPLSZ) s=1 D[@o4g |v-bzbKr{-*1i$oM1(\%0?D-^{Z\B_R4\vr~7Yq+DnXb dyC,g(/_( \sMpb W,zO mA3\&i>e) @q W\l^v}S`w/HB K[7<ކ>T rWei!},?_IYjZDAYzʈ  ,>8oQsx   _#y,0T4ѿnZ8E.AsGeva ŴʨIP֜. w֬Yn6 !M$KN =bei8nz"юV8Ugn}o@@@R(" )֦5$S5 CU~k֬#S.ZQsugGִiSyʔ)vO?mwq-X Zᡇr(-^Mi1cƘȢ`fPG mժ[bڴit Cr@@@K {v7l?O.kРA#h5ʔ^4?M 4h |Wۯ@ΟRZ)hh{̓ջwo;iԩaS=QDžg}Ç{?ⓍJ^#    @{=0wyV\i 0if^]vncZ߾}}͏l-[F9眼 ?Cu^z.Oj~Ν;:5\cڣG7|TY~K.unվ&E߾{S裏vtΪl;usS_    PtΚL^_-7j~z YfZ*oF7r 5zC*) @q ,.1 \eEfumOe˖y~@*45<+#9D%@@ Ap Bq o @@R&3 4    @ [ @CׯwGUZ54\@@| # @q"^E)  $C!PN@@@@'@o@@@@(@.T    8@@@@H$R5     d@ٲeB K*\8  @r%ח@@ J(aeʔI5@@ p@@@@ .mo C@XE/۾b|Q6mŪ1.# E%@i@[`N3}Q*1'B@ Ƿ?ifʥ 5Au:u#nݺYГTڵ~wkذa3eÜ9sl„ ucǎ֡Cǎ7^xmyܹsW_EYJM64o<9@@@@ Wi/b͋۷> fW\qu5Tc9?DOK~g{7WZb{mΝm۶3ƞx rʶ}vꫯlγ}1e   Nziz SM6… ]iɒ%.3瞳 2{=].h>9蠃즛nƏo+V:*q3gδߢ 4e&.]s|M_~6rH_~j؇   E$@35jX-ruCSN9=VL\fㆽZʞyK~M4q͛'cǺ%Kݻw8&ň#lϞ=vy2u8]l);N/<4#   @J]@wwZmncI裏vC#W\PO?իWz /z=yd:uoCUS^xѰŋM hi.5e䩽 V:N;4ܹs{Oqm֬YcO^wq~so{w̤ @@@HpI-~ky^yӰs=7E*3x`S((QJ+W ]pC3<Ӯj] CkI~zVvw}תTڮ' )ȥEo_.2Pi87t~5'%\RE'4oޗ_~i5k4]֙ /0wo7hEV[&3@@@@%Av d)^iV|ɦy\Ґٳg믿%;\h}?ªo\] s9V^=?}.L󭩽–-[E%^|E;餓 Ԍ2d;WG-:t}-~*ڷa+ߺVGժU{ve;vG3ҬGws %x}@D)~i>Ye!R5=k荷n{<ֲ&+{gMB F|xCI-&@.0Hx믦7#a (裏v}Q"PNYplҥ.צM?L8ѝ-Xv:؉'hgu?ؾW&Vwuzꩡ*8ei7yiX%ׂ*p c݋ƍgߗ-[4eǢ@J8yy/JY֞=)@징u|%v:12Z-7nm dJp#fpԄ@|b3ǶM/ y]bi^`eoVo^ _7WAƂQEW.LFtO(    z`zP˗/4T ۴… 0T=WL 9<#yݔ/qς,V/[kB&(;o޼yn&,@IDAT8 h>xCє,XEsOݺ> (/}J[4KߊK?dӬ<-UTfaތ3Vi+>W˚ۖ޻*X߿dkd>8X__6 bձl2wz_|i?V4D&h}i4 ӟdo >~#m/ZUE}V"uD;_sa>>0^ 4Q)x\kqT];pdaeh|UVJW@t M>;^3zpaV0 k@K{Fꇅj_2muq>.kM+ꪫzӧOwhQcڤIX 7kRhLП &O?tL >l*5jD6@@@(bpE )6 O?u7~k۶mKUfJ(wg/}B6c {mʕ,kU 6dg`24h`|paudW'|ynDa8@@@@@,P =iСn3 j̚5=رcv̟?)nW_}[--5SNn^k8_3k֬B(˜9s\s)Peڴi.룏>ri:jx؀   @J=s8ʶ:u6{7\ce={v,)S/S[x TOY^-]/*۷w/y̙3mᛒsm4k,)m}ٮ^]kPT-1j(W^IiJ@@@@  AͿY>cȑ9^k+ȹ͎9QH.]_0GSXȍ7-йsgݻkc6bSV2 Nիg|^hVe}v,uŊA5kz4}ޣ7=jdk}Sh=[3׍ @KS7?4&Zf*N_F%zhWtikٲe_@X{[:t%3Plf^" i @. n]@@ ,S#  R\\ $*;Uu/   A  Z@@ c4ի]kԨa˗ϘQ@@(9]    d̻g@@@@ e͢    '@.=F@@@ pt*    @ j3z  ,r檪D/   s d@rjժY˯VZrv@@ 7n]D@@@\22s@P`mώ5HU*P\}+Uyv~! @1 W o* 46۾b|O䌌(ߤU9ౌ7F@`j;z    deMJU|A?k믿>Ϯvm|rwyT>#4i-]vm{キyֽ{.cϞ=6p@[d{V^͝;^}U[hUTڴicݺus?ifUORlٲVNGm@@@H/pu?Ҫ7 ͛7駟~>}XŊcQ(x͛ӴܶmtM6sLW">zPBkyWlĉ۷G=v̘1O}+W6W_ѣ8_~ ݇;^Æ +ºv    jpо$ϬG1{'t1d|kڴ 0Zl麬L5e)mv7Ǽ 3<sv|76h v]wY.]lΝo#GZsӳgOիWh۴i-\x uwws=5.t"O@@@@HH3vڹkxf\ݐxǥ>e)ídɒ.ogVPR=w,VV2+] heĈawT+Q)S8 ۱c E;F֢EЗv!sYǎc:؆   E/@3N:Yrlڴi.*hM;ꨣ\*1~ۆ \^_|[a/vW{mٲe|m/e) E ΋.(Wʄ xժUF8L9v}rK}/J ?V!(Tap?2{3KN?yQC{U֮]eb[,X$_2)-sg>4+>cy~plŻ6-q( >L{=Qv24R+ʗ9s]FZlSن'p>W2‹((."|klS+֪U˝U@ԜlZ@V/ o/>Sne]MC=dVrA8#^J_}h*|sA(h}Fە̥$WkLN^+W3d=b*?(*yR+k4Jr[-V|+C 'WzӛT^‡oK/~Hi>eumR-ZѢ /* ꩜s9? {ꩧ_CSDXܧ jxix7n *_^/aƂ+#~ @@@@Ȁ+BLoc'a~a,|kC"?sݡڢErӆ;~mk۶m}ĻsmOt`ׯ)u..\e=.3O%RPOW}1zÏQ&/>οkh>0&ct.~C07U~_1G o\lZPޤj5? U5k):5/bTq]`}Vf,h]TO4A E3#b   q.6hpZAA7-ТE kҤIkT&U:o&CA1-̠/eVfr244,~eb\`_HA<pmGj-[oN;{:#   @% V! i9sf͚b E )0`@逦Mܔ)SdL/y?ep 4;>lԨQ.~Zs3/P3fLh>8_j&#V0^?=êwqoIdg>| ^s'^zqoe)x x w|>}B+ƭ    P$d sjDPy[riիk-0vX۷uQ>]6VT9眓g]<0T祗^j租~j?fmuQ؞z)7\(@vg9*TOQu*ƍ +M'̞=;t^dP+O} &/Nv({-|5zbxtNZN:ֶm[7TQ@@@@ JG-8!ONN˕+WVF2TR^L=\q*UJ.gl6ngs^l :a>V8t1MA/k8aN_۱jRJ(,ԢQ^bŊ}׬YuRAN۷Q Z+rG "cd .A] tCŴCRW,zcm5 .ͧ( !Pm  IEZ@@@@N %t@J@s{nݺ5e  ^^4 jD@_\#z Iرcmڴ^F pIp޼y[\p@2F!s(    @& ĻF@@@@2F\*:    2g@@@@ 1"   df]  @ɒ%|.=/PL6xWjD@ Y" @ U\9*RRJx@%j@@ |ԛlaG@@@j2s  .m6-/yD -=Tk}S  [\l  @ lem_1>KDeG@^\| ,^'KvsT^:uʖ-L8~x{WK.v}M<.\&nݺիPƍg/}ݶ'tΞ={^d{ Y>i$[t޽{o;#{@@@R(@.m۶ټy˘ \ըQÞ|Ikb;֬Yw}MYWeX*+V4Md7؛oiO=?Ν;M%Z^y8q;|퉞:NmtM6sLjժQC|[Z B@@@R'@.uQ[~g,c-Z}) M6vYg/*-ٳgdճ|r5jn4dɒ.NϯZ1цo޼eCu^EkSÊÃԾ2Ԯ7kժwy@@@H@уPqBqEC!5 wC駘ZڧT~WwβerT; -[8&"S$jW<$kԩS޳na6 [n]suڵ˚7on;v̵G.Puow6vX7d;f͚駟6_s5ةa껾muq׎   `jAz4y2‹X r·kboݴ@x⋭f͚.;pkUW]4TRC,}ΟyŮ:ٳz԰w}6nڦL3<.Raڔ! *ҰaC{'~~{1/ih ܂.˫kҹ>_[׮]CU* wq%\b 4_~9/ޓ3fؘ1c" '|BX?p԰hEAX@@@H@ъO@-X||d_[n.KO?ԭyW#=͙v嗻 -(feʔ.Oj;824 tĈneR2tM ,iH@S0R-]v=c>VT틗ͷ~zwLdjbZZjnnK`&LpjQF !    lp~ TV_jN: w}>{7y۰aLA# {Lu)LrV\٭Y\9]m۶DdSFګU2: 7Wȑ#],|eN4 /]6e) P@PE~ ]}9\=| *K,^QNsF^!b )` K/*Y_տݻ y8kcZU_ Sƍg *H>0uF;W#7pNׯxEܟɯu=8ywCNL^+Ԍ$3ɻ{&9/#Wpivg5XO08N|Qf*8Y4'ZvB Z=5oTg톈j; 5iȢOnud= %>ϝN!gEc! Xiȫ29`ʱsg9}4?&R֬Y㆐F,= VHh1 miXx04|_@@@ )@As&@VZU"]jO>zn(ӗixvi.L(COsԭ[=&O>4?[]+|mp5j8(Xj ?SCs RE@KPsyե1fϞ0+`Y] >)I믿-Eٗ2$[,qWcNFRlel!b԰= *FGEz=oH`8_wH~ĉP|ԈF\jcbۢWT ,V\D+PE4oۗ_~iSL1 uՂ|3gN(SXܮ?[9FBuoB]ȕX#Z~. Zd^]x'k ߇~n;vp+*Mdy    Wp8Ss(`R39Ք%رc7pWOȢpfɩ. T懲ZeARNx֎4Vׯ>2bM6]ʣ>vu:Njn<    @S:WTS TR RLs%RVjZ@nZ-3̝;eiSNe̘1?G$5Su&ھ?74dTuE~vz&2Ǘ2Llsx?i>e[p{ͷջwo7l5H@@@@ CPszd+UF5*إK5/2V:j7| <]L]9\uZSNqCS/R;cPO?ԵL-eŚo.t۷uQ>f3f̰-[HQ21bCpBŧTL4c0:FC U6lUdP    Z@Zb/ERw??b/_/Ϻު/v%^g￿iqfSݵ^[7_аPPG/S`3pC12ھ}{\Ru\stIuBjxc~1c   @?StR4w٢Ee~´l0 BM "UV\鲴4TAd-ȰxbmDUJקPWOH| ͅD(gW/HJIz2s{#[k1+fi5Y74۾b|n!_șM͵" 5x    @:@@@@k@@@@ Ju      9     >C@2FtVZ5_=/PB۳gOS,Y2@H_i。g  dRJYrJvWon+VL^Ԍ  QY`T    @n2r@P`s,r. R+߰W+@bzc,@ȟ ڎ՟$F'P H  @pqpƍK~YV\smٲxUVu:pɒ%ָqXCwmw}-[̚6mj~(Q"?SO=e_~lnݡƍ^xսG}d'O Zu֫W/W^~x@@@H$R ڵ͛xy7޹sgh[AC_&Lg3ϴ]57rHT 80!n7|c?m۶<.wp*|YAoo*؇   E(@i?~q96l) ʗ^~e+]:o8.B6l=v!XC}ӓz!gΜiwuW׿\J*v뭷ZN\>3r-sY5›9   H HD:HOI& W~W)y lƌ.oˢ+[֭[;0=zvGꣲ|I;vۧ: o-HY|5ʝ:`رc.]L{e=c} 4oѣ2ﻀ}Yq;K.1գa-/v i.8]?h_uڵMq   $@. H)Z 6_Wӣl~5jȾ+ʥkYr:uzW EeM:>BfZ4ުÇ8Vw۴ȃVU֯_v^:!V_& 3 Gq2 ZU ^"G }k@yU\oZT:) w\`[ʾ4\qz KS,{!(B ƍs7 |M`Tuf uٴi\Xm} bfO~%Kܦ?ֽ{w;czn/ƦMӾ; +VcD{#WX?yLt'tkx׬m( ރt`{\mk֬ 2j*'1@ڵL2qa'?4O[ W^Es]znUR|ԬY<@(S\Eh|oZhUֽ˖.]V^ՊSѵXZ+R@@@@ R_~ժU+u=P+Ѱ_Քߺ! 0tn?S.kNOWΔ, ׯp 6qDS&!↥i.<#;wl}'m ^2p4{]W܊,sWd8$UP@ Xun-kE'M{SedpXgIM%@.(IIX@ ě3-ъKx ).[-]aͳone'={vݧv inO>s=.NtAv\/l) AeGREy&+[+9<ֲr]=W@rn4onjΗoWMI0JHps/I>kb ѼeZriɓQcC]we6mrwc]vneS8Lk6~% U/ZQ':j(]~_~-r   $[\?)ZT+{>oLQU~{A~i;w9,pWE ƌcGquСM}фC!C"ܧ[N.B@@@ 0Ir}= ׯ /\c UJvy&24U[o1q*𦢠`WR=z={ڵk]L0k *9   H\ixꫯrT| 1? ʭXB,ylرcsn6p,5j԰ ֭[MYwesϹM]tQ.#   @ B|.iݺu> bfr h.3fݜp'.<Цմ&{j׮#ZA ,h͛W\8M:߿7uT;3ƾ}E FаWeN2 =m۶A4E    p RE xn*#om52R4iRhism it?6G-?}7wʠvpΝOv *ZdBvʄ3gzM+|ve%iE@@@c>=8SH e/nHj&M\,) NjIL-Z`B+jl:uAzM( PJ4b 5VyUbDHUk?EU#P|**6]3F\]l .H~ʘu^6&@Ztִe}j*5+ .Ӌʂ@[Z,(U,j.@%nő  PPKC@HsR@@@@ps  K@s_Zjh>Xdz=ݵkըQ#'sF\ؾfw'^zى  :{ZF@ h 1TX*97C)GI-UTrV@D!0R     Ewa+     J@@@@.@. [@@@@D\ T    @tVAV@eZŊݕ,ɸUTIFV>S(Q&I(S3f$R% es   Z.ۡ M}|z=b<[jFMwvǹ^@*g? @(Q*]B?@!@.X W`+ @XTֶX\ ddZ@@@@\ "'9s?n*TSiZ,Yb7sDoW=\`@@@@ pA(M6ټyB+% vC믿n&LHV3wǎ}"'    E,@37/+ 4ȪTi@@@D\|͚5իK@@@@ e+LW\i ,˗[Fl}1˖-sٳ~'I&Vd\m6wnҥs;Ӽr*M65թ슪D^KxsJ*e{キ6{l;蠃aÆΝ;t>:E@v]pժUڷoDzj׮ @@@@ #) M'_`Æ nNcݻC *vYg%\be˖uGao{.|n9w5T޽{+jGA/^ڦ' ]wuֳgۓ }⋭f͚vwꪫ:uTӐX\W`LFnor]vޫsnF[zuhvmֹs6wqol޼or%JN;ͮJ+W\}@@@@K{JZUـ쫯rVzrY 6rH`9G}թS]}.`Q~lժUv'Ga۷oӧ|`?\ K.Ȏ߲e=.H :tڟ9stMynݬcǎ&O?&MdW\q=#v衇֭[k5jYzlʔ)6j(8p=.KП4|p6lUV9* oڵ矻<-Q~};)k6mZڠz?Gݗ}I~\Ew>Q( @ d]}goJ0˗3JjA 0pQE iO?>u׮]N0ec͚5˔v'!UPPխ[۶mC*wZժUMrj;8 ~֮]tߝ Bʕ+*Lo~>wLxF6.`p, ﯆*3τ2 eԠAw^|E7U)9I}93G7xÔ/[9[l{4~nݺ4]wM"w( OԆE+P~}6%82e D\ Qhh‹@bڿo s fAVN:DWQ6ZPs7y*~ssE Tjȫ^K.ɓ' /0|ky(+QY5dWM([NV-<3LU70^G@@@R/@.Hzd~x6v,A-*PR%ӐWegyn*Z ;ts;WE*-T44`PoXh;6 Ǎ,p̟?oE6xF`gq5DVxъ-#DC=Xܮ+K6P>eRlJ~f!6E߷epԄ@PLz~i̳n+ N(XZ3؂|x3gδѣGئF RxQZUn:|WRyusΦVZeC ӰA96 }9-[!>#4{\SL_~uU@@@H}(p/rQGzʔֵkW裏O>v1Xƍ~SЧo߾֣GP}LUXROCY5vnۅ^2()C+2K?駟QZ}f9ʾ u"'zjGwM7d'x{DP70o֭𪡠|~O/TO@@@@9y 50|]矷{uF!^0M ڵk]p )h/ 9՗VY=S\ OR|y{gujTׯP|) =}%ホxp C`_u7;^{5N8|vhaxM6tW^7pk_?    :gb/~r\ { USZj_Lx E?6hh%ذa5k̪T"ٖ߾') ]h H@,^uSNio-Ͽ<5dUPs) J-l@}5h A)/Wg%K V@2^? =6?X74۾b|vp ;}neS8;ORn݄R @ .#nSr:M~7VN=kԨУ2xK߾'g pJj:TM_@`{``*@ I%J$]"Y!@.+n3 y (]Ju@@(q  ?Q(A.;`7BmfK}}qw!x[jDM\q72U  nJ5@"sfK~zhS~Ÿ25wKԬY_mj.mǎy[LtV@bqL @@@(%qu    V\ji@@@@ +7C@@@H:    @1`b~<@/P$G*%Jƅ3we_-g! ӃW  EʕUfVV͒K.m˒Me-[* PȷR.@@@@ ȀKA_@@ e;϶V}F(]p+YJ"r  @ KAW@@ umWO]hH@zϭd ! $t%c6oޜ1}    Z2R_Z|ᇭz1_lynB 1MiֻwoСCһvZ{>ŋ֭[|֨Q#;cO+5\c[lxjժk"#v8@@@#@.9iYΝ;m޼yozl۶-tݻ}K.u۰aC{1ߖo7+Wڏ?^y{ǬE93|S\^9NxDU@@@P\bT |v]ww.bw}C_۠A\0믷~eN9۾}{8L^AԑWG@@@ K-5grWѶm[{dɜ&tA./wCS fwqGʯ> y    Pxp74s@Bg}+n:[zծ]۪Tb6m~ww+SLLG /~]+Q-ZdUZk/kҤIvq̘1qFwË tMNL< U6ACx5dtJׯkQ"ǣ\t͚3N}#̙3ݼtjuVDx   ) "LnVs :ƎKZ:묳K.e{ِ!C_~.H{ WhOS3fCMfZ`iذz뭦l7qDwعkuԉ{J׮]g]v )W^=ӐV]GaZ#(XקOӂ2V.NЅA9]15jC߻=T4#`6 #^iO@!Ȯ]G+т~2N85k,{wOQo7|tI:FA3e)(0*`1GUw2^z%:qƹf?x(׭[77SOuاMfo!(TWǎݵ)N𢀤JϞ=7L"]G!+HR@AIbQD$pskkV ˚E5^T\L(@G1!Qr[{sy>}BUo+}M7@ݕW^Cx'uYv嗻ih o5kBL۷oO;Hcgk.Ӌ[PЉm ԆO L:RJl+6(@K\ZS^6ly+ h3/杨i^'TpGA38;ݽk7URμTLoޱK/ԭ%}UO]Iow5Rn_eƍNkŲx'v۶m_Fʅ+Z#N#鱁E=x`Ժw@@@H# ҃W^yP-#:`]n6WP۟F´[aZ.0C뛩(Bpɱ֭[iǎ9+ŧŋm֬Yn ]wu x)PҾ}{g?{l׷ KF^ǎ|6sh"Tvڙ^E:ѣGS4+Aǐ %pi@"FjTݔ XdA"-egm25@lin Q txGӠ/G\~%(<-"8_T*UdիW<ݿQp i=z*8:eU"pO%EhZKNk)D`00T?0 ~5M?BmG: )pYr^RgTr:M6Na   $Pp N|kܸ>,xíO;7oN[* yI%܎"㍂o;Weee_\sg̘a?=3   I tnrkjQ`o=JRN?tA4uȑe)(q7uڴina-|FN躗^zɖ.]ZRw뭷$:{8^ԇ]uƏFil&MyJveg8O^x)    |&U:ud'|M4ɮSGM$7K T '`^{=vW[MS^{/M )ץK駟ӧ ,~MgUJĭ^:n{TBcڋ/^JȠ4U;UV׭'t.dWAsRR4-WS>}x   I Dtm{qk_2RѺevkzŢ\tEn9{]UVotR2d!P}RvQk۶=#~z0`XY V∛nڵkgcƌ1MԨ7TT֜ׯ ^ɶn2XHnZGNECMZry    P2R)}%Y@IxAS'+V۷vӾg6mr4R/j,:t6lpYR-5ف.MUV 5Q)4Q_z^ h)נPb+ [W^rrrb[9)on5v  UzV9,i֮]xM?S@L OB8?E\6Ņ_)8?E\6pqiJ@  K@0dC@@@@RG5RY@H={\5% 4ӛFeB(N-q=B_ò1@ +! @ (-[}ԬY\O3*uiUq%{_jDI?d^@@@@.@.4    Mis      prD@@@&pW@@@@ 54 "*Ur!a|Jr.Z+UlY~=B֔ (so2e\ޗ@ :A@ (8TJ}MU\9n:AwE5Zv6&{|-5#@ 05 =B@@@ FeV@@voS @ fe*7J]Hd?G@رm۹ @]'/  a4n_?<[9ov~'6zhС]y]_I{챕+WZ:cƍW_}.kѢEs'Mdg{ oݻw{ԩSm„ k7nlz*q@@@&@.nT\\̉l PŊͬ[]פIn̞=ۆn]vK/X裏ݻmǎ!n~'wZj]رcg8*yv=*??~W?~.   $[\8k {\*U?p{lҿ d-XSjwy uO?o6l0k֬;]{ǦOnO>jo˗>jԜSO?Okժs1E51@@@HALUVMF|Gmz%lݺ՞y{]7J.7`?yve]f~ 8rrrqS֭uYn[9LR75 @@@*P:81?mѢEf͚j?^'Oۮ] uTƍ~MkgGRo oZ:蠐) Wvm7t…˗/_=X>oOtK.v   I`\N@ 4gϞv뭷+^j=CyJs:(K7:ʘ1cL?ߍB{߰ar)nz٨Qj iCTTQUCF]`ꫯ#8"p7    DpIħ lڴɮ ӻW z5hMfSLe˖״h_[3gtH۵kgZ_.K/Y:u"9J*e5k {ĉmΝVzug=z*k| ) րSCQSzxG@@@K3C@Y=|Wֹsu@*9S2eʸt⦕ˍ2SN.קO3Znmi4|giW_} y״h^~eaȑϻCJĠnȾ?hݹPE;>(Ua{W_׫Q#t[ʕ+@b)70:ʕ+Eq W^*/Pz+=Imo^}G7ŖJ]nFtV L]Qu֭벭jև}lb:?T)X2RYa@_+Ԍ @ ?~HB@ :pyqvZlisN;I@*遂T/Yf|ڟ E:t?(nM?;<@u^/p aobŊajʫfRv_<_<c[jEHLD/@ 6IFqz%Ŋ+쭷rPRrxSR|ה[nōS3M ,? iojhÇ$Bzg*ZNl)7ov-HSt^dnqj{ɹ;v$aZEX@?\Ŝyt#>s̱Aٶm۬lٲ֬Y3NZ&MM6O_ƣ?w]v ĩ~s>7    ¿ǿMZ@ a< u͍.S*\S>~+m7zU5JFET)    |p NpBW{߾} eӨ%Kki*Js~=#nmov駻vCu4]U}靯}gvM?@@@#(Cbڢ*noӦM+ж4OMT -捔ӺK*?vV~|S?Ct;viR%r Ukh } Sb+ZKJ*.|lk6XZjn=YT@L`\>Y @)pz+#>+ㄐ;wt.BdgUBJ^䭋j׭5q|RG\< z    2rK    #@.u=A@@@@pP%@@@@ :ς    d@ 'n @HlٲVzuwnr"1e^t2eľj4{b\UTU^T4B @KA7@@ B o8Z,_|mboU88)[bUN @ 05A@@@,Fen@@ZM12@l()V۳{G}S`ݶg @Rlki@ T>4o#@ŝ&NhoV']=A{S%K젃JXǦMf|M>֮]k&f͚%\bZJX_mhرWn .pm    gn:3gNTشiST'd<{w1]lbÇɓ'RM ZV^m_}uY6tPK Kk֬q_[C}l    @K:Sc)ԋ믿hG]xr |N7oQFYٲڵk 4͛R_uUֳgO2*)87f{398p`@@@`GH2/VfM+(JziӦ_*̬\]~VF {Gt߳>;ScyX    2kݔ X&M\)tFURŭxi7nt#mcٲe:h"ݨQ#7%kgǎ5҈9aÆVV-}^4M/.| @A~GbxmGr:qÆ ~zWzsm۶7: \XF!   @ /.UJ뭽w^W M:~Pn_۱NW^y{=wւl999n?'|Ҷn>{ls]wue/4i)۩ׯWMwݻ?UDy7d?~~SO֩)2ME@@@ +[J\fÆ 3eO>njn_w'x%ܹ1/^Wv )@Km'|]zk^^rU^%E8#܈)S،3\↺uڅ^ص3gt7nzs2F{=zl&OgI ?v, 52oŊ!=2(5)׼W0$bعz5yg@(QsNsŹA Sh+ׯo#G%שS';ꫯӧG}d~KLХK7niDZpNTB3hhӦTʌc yww}-˪(WdxS)IڎRo ՄL, @2eIF˴YbM;Uj׮mowGBU>3FFx8/N.Tپ}7\U4}3ԩ!)ia޽VPmNea6bmv#   @ CDVϔ@[-}oFj)ئ̪򩩘Vkwq2[rlҭm#gM;oE6M}]piJ``0mէ%}>%?9.is 5s ٜFT*D&=2R)0=ؽ$$zQb+mԆ y쟉O#*$*O"~(@ x*4 NA7\S`EESD@@܄ ܆?%ië#]}/LI,X`֭󟢾FS4MEkD d`{mʸrd6o%{k^@ M/  (@.P#Q 藳P1T[z˜k۶ms4O<%ڵ_$m+ P?>O^5I&ּys_׀+h>MUNkOk×_~icǎvڙ֜+y%{Y: kPm@@@b+@. M)sN7 zJ5MTS;Rj֭ Q c )QÇ:*ਹqiƠ:#Rv7@ @ eO@4PB?<xdɒ4=v!C؈#øqgϞNܹsYfgy;6zOW0;mɎbٲeV^=X@h1@@@@T O>    d}    @*K@@@@@2V\>Zn @@@@ S    +P*W21@ L>c˗֭[ǽ=@ yyyrJW塇jժUeԅ@\vakF֤IGZ`ܹi&WGaʕuԇyt@@@@ O{B@@@Hp)(    @& ħ=!   yt@@@@ eS@@@@RF\< :    e3'@@3f̰>.\hk֬۷޽{-''ǪTb 6-[I'dk.n3\  dlVF kժ~Vbŀ nvm/r|BRPT`  Pўx xeYgerEr =xAvmGۿݹsg۳gT}2 @&0sLmǎVN֭tAVZ5RmӦM~zolڴindܱk>*U*a!@ SV^m_|m۶P;lݺu6~x˳ҥK۰aì{n\!v @ 05]CE{qSJ_< ,߆ bg}>iwXlM4ɺt钬n =8˿Go]v7]t=so}g˗wS'4{`tHE+WFQHG˗۪UG֫Wonݺ~a2e 81|(%R`ѢEVLS.hl~h~ǬuցyTtH]Gy`_"Wf0=C @`޼yS5N-٬Y3x%dn,SA * .7kfr9-dv"),@.]CE@!|A{衇lܸqn1dBȚX^Bڵ_X =8ԕh9uT @ W_m9qD]z*!%(]@ (ئ4-ᄈ>BiӦVF {oJʠuT1'Iqڸ 4ie25jTmiG3hN%ġ $@tzZHn~.R]@#7փkذi2jTU/t + F|*Sd =8OXv]x2Px־}{à  XZ rssO3 rR!@ >Sk׮# &L`ƫ_")ʕs:-^jH."0H &Ol< ©ZeFBp?08? R5@H֭[C3f̰9s؆ L]bsSov@ Xt}6}t{&e{UBф\~Qp[d { {uY̴N 'S_IEH;lѢEּytV@(Eũ P޽{hů+@@@4`4{`t@@@@     i&@.E@@@H/p-    @ KFw@@@@K,- ;w_~J.mGuTG@@ #    SPT@@@@ #    (8@@@@hE+    D!@. ,NE@@@@ Zpъq>    Q\NE@(],//ϖ.]jVC9Zha*T(a\  K'C@@/;XRJ*ƍ1m4gϞ.֭[svٲe-''4h`ݻwW^yŶlRp;rsso߾ۉ'h{}VJ;+ppu@@ =s dmر={ضmlٲe駟`Yzl.q7ol\pu^|E۴iSwmfrA#8ƌSv  SPs@Z]r%4ϷѣGN+_|.ۻwܹM}lIDATm͚5.ֻwoI&M3ȺٳgcfzUWY۶muv衇ڢEl.oO>vM7?\Nv  @)mz $)rYZCZjERL2:t`4N>u }gnjib mĉO?>Br)sڴicjժyg~\N^+;ü# SPm@UscǎzOi>ծ]; >ܞ{9ѣ{nm;pi#ow."jԨ|  @Hp!Y؉ ,i^zizO9Ӛq.Ynި;hI'%|ۊ+u ~܇ ]XfMҥw#ŔnqgAeʔq#?ph:.|uLSr` .t8k׮ Pmݓc溑{wiweU-0^q矻uԱ;qG_cE   /Q5j(Wt@, w|_ɝ%bp} ]莩ߴBǃw* V^ K_)7͗5/;͛7wFme}Mu}|X|SF}PwA_~e||Uэn\}|_L?xI<| 7 kHAwƍ6lܻ_BT{Sݻw_  PI|?=Q@@ 4JJE4 5|'n:H)+MQ={xiFYFvWUW][@qA EԧO$:uk:{lwFO_w}nh1XtL*@x≁HowѦguTm믿~_~{;Tcǎ.مgϞnJNZdmMYh{ lȑ:w@(J)Ep @RV@ki.%P.+WoNM \:ҺbEΩ(xSTǻ Ton뾼`w8 0U+:UI1cƸ:45h :M2z6sO>B7oV^:xky9jpe.СCC*W^yŶn)ݣV ]sgl  '@Γ@JiӦֶm[7JkonGQ6LߴǐRvM_֟ӈ?)CgI2>**TT[u5ߔM믿;:,;S7ӭ Qze,UX:q ]ҸqcsWƝF=egU 3T_m5Tt*GUׯ_4O)]D  >p|  @ hd9zPk}[d_ R)JbpAA2mz~MT&\bz김wl3g>]S=5RP㏷^zPPJSx[le{UrMUb %>XvOujtZ]@NAOYoTMUI먅 itF+JXK#/Ӭ}e5:wi` ,p4\`@յ .'u/0VV-owD[ha FZ^y  ]ys d*LJԬY3OM+몂VU`Mk%h9ef *+ ;6"k襩>z뭷k6 $ U/覐jZ֜Ӛm iͼ}աvu 5Z0ܵG@(]A! .e hԕh$J/D r;UR_[ES[F-ZU3Xn݊[]ք FVc9]u⼌5jĔ_ӴbeG(545\Q>s522Zݵت@n>*I'dw@@8?   4'2КdWI*M)S,PZܩ ]tE.AHk.ժU3ܻ;^ה!p >̘1ß6^{%ws9u^R  Un7V422ҷo_=h@M U4Boɦ5~:}  '@Γ@V@T4 U ۴icvX_SЪC.?2*ڰa\Nk)uT:wl^ziq 7D 3ΰʍTzfZxWbM9Uy쩧]v(qiSkC"\|.j`0mԨQ.pk >lw2m+Aj9[ή h?;@xN: a{?}jTTq   VJ   ovi ՗%37#sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx 8="KT(*DؗآVҢoyWy[J[U%4^^bk쑐D6Iޙ;̽s=<<937/g`aJ @ @@n[a @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ < @ @ @ @ tn< @@U.ߩ3zvIxWnif-znpA겜>mbhC@m3T}>ysZlH]dr̟M{VqYk`*F%X%5 @X2~J @ @` Z;_  @ @%C@hg$@ @`%5 @X2~J @ @`  N7o^zof̘V\qŴꪫ>}MK[G @@QXR~n!;z*7YҀR4dȐN]t"ԩS֭[ݻwZkWմ>ݻ/O>$kUW]}/VviJVZirh+(G[܃ @r@ugi|_tQG-rЛ1cƤ7xc"s]}O{b꜈@TeeM_~m/ F5TgM3<3p kRf7 @U @@]?O%7_~)~3gΜ4yg1G?QZeU!R̙3ӑG~^z4hР}'F=iܸqKӧOςR'xbmͭڗ[oԣG{-뮻R}_l?8mFiuiuln=XO @0ur6iXQg5СCZ`AjO?`|0}_Ϗ.6d/v]L%\Z?qH.СKLs=7.Ovz4.kgw_9_mĉYD01P@ޞykfGK.T 1 K_RAXdx޼yiK_6-bN4O чC6~]_|1Hn0`@fmZk^yl8.tSѼV_@ @ :@cPBPnW+NQ,uSAK5r f=^~t5bX:Җ[n~{vƌy睬\ԷJ gnٚQ1!ꎝzSbAw.pQN{-@ݾgw@BY+ȝ^#})kϭɕX믿GP)R>tǧ_׋엿e[:FE "J, WJ1sΩ{z,v' @ A @ N`ÇOPnXL1bz=ܓX'0;;̶B#ŗyuf=bNؾ>^femݖbNQ|';/%ױt@QbW%SP_$cX.Xkwmyva]wݵY#n6W_M10FsmfV[mYa9K1ҧ~-AJ?=,P#u":iҤl]tIt/"X#XO-(}WQ  {X Fr#GbTIcD(>QL)5ŽcHb"A."mܳbA. s֨?Sv}nMo?aSpo^{0ǨJX(F?(aKgyfk"p`g9rd6,֔10~#=MPoQ7;{>yo/4cj+ rS1zR"  kb=:.vCǹrԣ{;O%Iu/vIVhP ]t>l1XSJM/) u׆ymʚ"4Rݩx`J+4r}}jhH12(5btP_"țSҾ6`l=X$Z*@LMY bs6(ރ:(QS c^|bH{ Æ THȽޛelI:묳>~=~ƏH^Cob_b}G> `C(G=sX^Z*E`'6]G/1M'F|b:S|щLTwjBSv/ާjVm[-?bwHeY]7饗^]ᔛЍcB,`kEPH*@Ff G_DD(@"wqGL7n\{.Ȓ\(~̙M)kW+_ )]"RcǼAnݺe;GE~Lc"}k["O߅W1e1wڎ@sks Q&KmYkbqE.kα\n\'W0c5^bbiK/mc=,?5u7$XOF4rMO>d:裳SÇ/+(s]uUX'b?8u/֬jr^ېq>l:mnW5*}oCUoݿZGMB<Ȭo-h3׿'Rt8lRWX rK4e866=Vqu)zDS^ar)7 m[Ε-zf#Oӏ~c=62dHs=[o~G '5of_|>rS"7*(^Žsre=re@cު";`ltW~7;"jhvk}ew1iҤI@%\h?!Z,?%w϶Nu HWimM uϗr c1"Ŵ &d;3WJїvSLkS-_"Q bh{dBb /l!FFNrSmf+Ԋ/ T}y/8ߖ#Ex_hcaÆ[GEJO~tQGxB[G"#8bg;,#_;K^cS=bX~"C*,Y(E`!J8p,}%Q+.PwTZ=r'F4X'FȐB)@[_j>X 7M" -AR,~E5[|ͭGq)`> &r2DD,j_fcRuG nd~-}1Ǵ8S>]"#"(;L͹{iVXfKqM.bzHs ho=[&/O߾}әgbq&UW ȱQ,SݚyZ%N:A~M7ݴUqo,т%^h@ul-og#a"0Ʀq^>}z6*v/뮻nɁ+ʔ)Yp-,bU'JcT|5#bכRۻkzm^M{.}6[ޛߜ8/Fz)h|,K1/ֆ)1*,F5%Л+& T @@h(Zj-)w\s5[0W @@AS $@ @1;HÇ@O,?vlGv-)\a @n @(kyV1 h)F:oq>i @:@q @K@LՌZG@Ƚu= @ P5#FA @@.4s̪V/ @@PuO @oUWa}W:`~Z^_,;˪Vc,"@ |m @ @ X( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @S{ @ @@QD  @ @j[@O  @ @E)@ @m?'@ @*J @ @jԞ @ PT@( @ @\կϟ??=YYfncԜ @h,LmrSLI+BֺC|T @ @0{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[@{  @ @0 @ @Z[skW  @ @"043Vݮ}vIW=lkF@8O @'gӜw~_lvlJU>r% @ @&jT @ |۹ @ P@5M*I @hP\I @ &$@ @4_@v$@ @ԄPMtJ @ @/ |;W @ @jB@&I%  @ @j+  @ @5! Tݤ @ @ 5Ε @ @nRI @ @@oJ @ @@MD7$ @ @@ͷs% @ @&jT @ |۹ @ P@5M*I @hP\I @ &$@ @4_@1cƤ}kiȐ!iK+RnwSO5pS @ @+йV5{ײ رc{~tW}{sIK/b @ @5ٳ>쓞}L߾}Q@ H3gLOtUWT @ @b@&я~nYg_OL:}_N#FX7 @ @&` =zʬob͟S? JF1L"@ @u=3͘1#뫽;[kk<䓍s @ fvŴiҰal\s:vb}H&MJs)X^& @ @vu)1uodE[oԭ[\  @ Po>z2_9˲~mF@%L`!Cx @ @@K~;іbk̝F}g]S<ȢWr-驧Z\l-/ @ @! D{x mE馛ѣS @ P)@7Av֬Y)v{駳뮻n~$P.W @ ЪF裏Wg%XctZȕvmS+_ @ @r 0aB6+^#?u]k:SOSL= @ PSa}GСCS.3xlP$ @ @@- 5[pN;&M{M+R"@ @mzs饗#FX9G^^Io  @ @! T,g 7鷿mԩSR  @ @%`s= ;ѣG;zSm  @ @ oc9&͛7/{w 4aq @M#W_cϣ>k&UW]VXa&U @ @ /}=Anb @ @ZK/Bk{. @ @F-$:ujš= @ ZF @ @$ T%h!@ @Pk{. @ @J@U @ @@k  @ @$ T%h!@ @Pk{. @ @J@U @ @@k  @ @$ T%h!@ @Pk{. @ @J@U @ @@k  @ @$ T%h!@ @Pk{. @ @J@U @ @@k  @ @$ T%h!@ @Pk{. @ @J@U @ @@k  @ @$ T%h!@ @Pk{. @ @J@U @ @@k tn{. @ P+;z/~3&<͟1]K).P@͕s @?Ks޹lO]0J }i' '& ɲmL+# @ P@5߅@ @(, TG. @ @j 5 @ PX@\ @ @@ |j @ @Pa @ @. @ @@a>r  @ @5/ T] @ @@} @ @j^@P @ @ %@ @ԼPw @ @ K @yB @ @*# @ P@5߅@ @(, TG. @ @j 5 @ PX@\ @ @@ |j @ @Pa @ @. @ @@a>r  @ @5/ T] @ @@} @ @j^@P @ @ %@ @ԼPw @ @ K @yB @ @*# @ P@5߅@ @(, TG. @ @j 5 @ PX@\ @ @@ |j @ @Pa @ @. @ @@a>r  @ @5/ T] @ @@} @ @j^@P @ @ %@ @ԼPw @ @ K @yB @ @*# @ P@5߅@ @(, TG. @ @j 5 @ PX@\ @ @@ |j @ @Pa @ @. @ @@a>r  @ @5/ T] @ @@} @ @j^@P @ @ %@ @ԼPw @ @ t.- @ Oʽm뜖z` O @-`󙯗cie($` X!y @ @v :Q @ @ #@ @vЉ@ @($ THG @ @N @ @@!B: @ @@@t& @ @ ґG @h@5 @ PH@οzԩSԧO&V @ ж:W:&MJǏ~O=jZuUSݫY&=?N~xϛT^! @ @@[믿>暩o߾i뭷N7-;TkdΝ?ӦMK[zWZ*O @h@E@zvm|F+otg}7͚5ѲxӖ[nj=s @ @Xh޼yL<@VeY&i]vY!zܘ1c1_3f?>m6_= @ Pvb4On̷|ntA-ֈQFG}4*Y5\X : 80׿رc9rdZy+d'@ @TN"D5t.체lŐ!Cرcݶϟ.+y뭷_~Y}>ԹСC% @ @ T$K/ٳgg?SiJ0`@{ウ +"ӿvqǦT[ @ @@hZd&j1W^帥{ @ @Z]_s\9sdwڵkG0}p饗ΝkStM7'|r۶ @ @@HhРAɓĉS])>Y 7ܰXњȿ[ѣk*I @OLMN2 oOsOVv @ @ݻ/OJW\qEZoÂtgѣGk*7֭bόE;A @(@E@Qɋ/8=K'|r  ,HXqmݖw9礵Z+_=?Ӕ)SxO @TDbNF}~r&l{s={ @ @ 'gӂ3so[ڱ{ԡÿ0i܀@X(ζ7g?5+ @ @HOO?t/#F(j @ @j_c%o;| @ @ T$4`|KN?v@ @ P}flh7ߜz  @ @2:u/mO>IL\pAzGɓ @ @TQ"@O6-uYi 6H/r'pBY{N={̿o &N @ @f T$4k֬tW4ZX@ӧOoz @ @MHCO>ME%{Y @ @JHo߾iҤIEy @ @ Td -  @ @) L8 @ @jE"Sj|l /dKiΜ9iWL+R~:e @ @PHsN={vh2Ço  @ @*:gMLvZOTgI{W:SJo+ @ @sgҥK1bDZSSӛo|魷?vaVZ @ @@*Q??|Vs^LFJ'|r6RcM_ٳg$@ @h@E͛7/׿jfoO֭[:L>=hz+$@ @hT"_~9+zE]6ZGydY>^"@ @h@E@ ,tD:vwg% @"@ @ PP߾}Ue @IDAT /LW\qE*[iĈ6;w__B @ @ T$O R.]qi-̶̙3&N :iYSN9%Q @ b-C#7XoR9-}lOxih7$ԯu]7}k_K] @ @LE=c-8LUv @ @R*:,WYf{7vg}6g?K/"!@ @(@EG:??OҨQQ@'O^ֱFȑ#w9]wu) @ @ ̝TJ 敥b:HP{ *g#_>('>^+ <8qi a @ @L}lxZ0ԦS=Q{ *6WU>˧N8ݽ;tצv)o<µK @ dO;L SO=" Իw*#bcǦSO=5:A @ P@E@ދnK;|+i7οw@ @ |tA+L]tYv12(yu5w+]{ @ @Z&P@*4]w5odlcEN1gF + @ @@ EuVYel4Pq @ @@`ѡ8-K  @ @ڦ@@Z6"(ۦZ @ @ڑ@ŧշ 7ܐ޽{: @mR`ާV.n:v]|'i7|z:\X1ځ& @ y4s[ܞ]7+i?orb|9Ŋ'@T} X;0 @ @@M Tw, @ @t\A @).%@ @. T+ @ @5%*uvԩT @ PU <8͝;ԙ @ PUSҜ9sҗXy @ @*ɓo y5{a}7p r%@ @h@E@KO?tzӎ;?6n!@ @(@E@u5{tAs9i @ @UxK.iSOM~xϪ4!@ @J+eW^yemҔ)S @ @TI6([:vt=*M0JM @ @-PPkz(m+rt/ZO @@@#X[.yCVKk?:vxrJ @X"mڵkkȑ#3XK~z{ʎch @ @U Eu;t>4jԨԹsgyf:CܹsS=Z*w @ @ +[|;iWOp@>}z62hҤIի' @ @//;}w_|n @ @-hP}7N>h8p` r @ @*ŞwagϞ =wsZzҰa9  @ @@*Pl~wT^z1cƤ?O)vA @ @@*jnt9^: @ @*28E @ JmjP+x, @5"0.Om;tI=tVy.h@mT @y4o9ђZZjJ@Ke  @dyӞIs>lV:-?3|&/Vs/nW|(P݂ @@5"4s|,ujiy3+#Tg @`E}  @ @\@w @ @| @ @\@w @ @6mZꪫ̙3}jV?"xC @ r6utiQFٳg}=#_ùswy'I{6lXC @ @4C, &vaϝw޹HCE`o;?>u֭hy @,&ߛ҂eit=SetyӞKaI*emR] G"veE?CMÇo'xb:S1bhKz8qb=zt:ꨣ @Hi`t5(-%k感9k ^aRn+*"Ekg?KofV~?=YP.RO>X7M/~; @ @h@@E]=cǎkMlM)6, tMkc$?$ @ @@i- ;6[9ӺvqҞ^?sw @ @4_E;;܃om\G @ PGE~;UL4hP.~Xl X\1x~ @ @@Z4iRZ+-2k ?G(~VYeˮJi ɓ,Sj:#&lz f(Ϯhg @ @BE/ҙԩSj驧*Z>.a;4r4w_|?W\qEҘ1cr-w@ @h-۷G裏R9l͜93M2%gٛ*#|N:,ӽ{o|#]r%SOOq{o>*c @ @-(K(϶& {Xc58lG;~+LwYg-J}Ae3<  @ @@Zz뮻=kj\pi֬Y٣=lOv%OoyvꫯNӧO[1 @ @M (.UW]5kد~4nܸf72]{W3wY~ >cǎO>A  @ Zȡ1M>hJixS9䐔[f{W+5b}]6w9嶴A @ @ 8r)uY'ks=-|w7O>d;-NyRt^;١R}~A=V'ui%etRR(ܹtJIuu>rCJz~ڡi%_?ѵώC ݮY:tZ:X}i%=CǮe}~e6,Q{ν|]>.sjq{бk>r[5LSeH9K{F[t#<2]ve5Y`*O:}ߥ~F}e bk),FUt?6'˫ 5/.ߢ? %/Tx{w]PFVzO;/~)-v׶Y-m^oD|\iZ˦j|hC9 iҴ.ݭS:mDio}tKZ{ Z?)7t]o6hъi۔F4 ]}aۏ]hPJމrI/ XYhjzlGkjjڤrΜι?7u/NojI_0'KݻtJgPm>HPc 3%xŋi w[D@E@uݹs}r 'k+={ghfez.?|p)jjsox-~Ɯ%obzcҬf?,׭}/NN-oZI>Y>۫[r~\[ ]٢nIg'N+kD дYC~,5tWޛ"}ZrAr~\+%4q>]J]|i6[w0ݺw\{6^wI_r@?NznC9RH\V}RRݏg*ǧ= @@q{{lKuΝZLk @ k.f VXN @ @ڎ@٦ź8C=yk 0 m騣JWjE=si„k|̝;7濦" 80[(w_ @ @(K(ֳ1bDiǻロƎ.lǯSO=5uu2m͠AR5gΜt}c=B[lE2  @Io)0+WTbz @%U?0 :4jTE`3L ,^v,o9ۖ~ܸqiM6iW_}u^{?v@h3:rP{o @v)5FvÇ =UYϏ nlʢ,a i.!aDAeEQY.in⒚fTVA?ߓg.3Ν{>}}gΜs;3gys'z+ӥ^9 ܋^'~'~뿪ˏwEX=[$  H@$  ,@|+{K^>* OxB+ҩ>KUyB>򑏤.KF+G$|N颋.J۶m[SN$  H@$  H`@ԧUW]3|ЃglȜoߞ.Y__oJ*~?='>?D:(qYN]X:)$  H@$  H`̥GӽuvUQ+L{n6,~o{zֳU6- H@$  H@V\N~r{' Bİ}k ˫(, ꫯN8}mo{t衇_Xo$ H@$  H@KDt"Q$p@s\U‡" H@$  H@֙\Kܧ9D&BXl[$  H@$  H`1R-J* H@$  H@$%uY$  H@Nf7%{];vo s;+eNL$  H@X}{NP$  ,;=z!6'($  H-%fz H@$  H@$f:?я~t]r%Ew\H@$  H@$  G3k_5ͩi*h*&H@$  H@$ \6 $  H@$  H@z訣Jg}B>YHf* H@$  H@v4s)y{&>$  H@$  H@p ^k& H@$  H@:!f" H@$  H@V\K/~ 9[V" H@$  H@$0@oy[Sj0?$  h/<Ӿ w,/3$  H@N`.Ъ$  H`eQd뜐g" H@z$Щh}I׽>#8b<@$  H@$  H @>G?G~G=q G$  H@$  HsEtUW%/| e/{Y=?tyO%J@$  H@$  ds)v]v|&}OguV:Cr.tG;N /LW_}u H@$  H@$ ~̭W󨣎J]tQV|LgqFsI{n:ò0$  H@$  H@b tW裏N˿>ϧ/<~iI>g=YL|z+^$  H@$  H@@~;S:%\-~w&|7N_}inq[O<1M]w]9o H@$  H@$ 9 ,\T;ЇWU+_Jzӛޔ7L[>6~9MXK@$  H@$  FWP[:䓳ϗtg۷$_u]o H@$  H@$08vCYuW??ʖ@: K@$  H@$ zUy{ߛ7d?uٶm[}GG=Q]$  H`x3vhg{vI@$  L&pJ}Y71R1 8`r+ H@R7M| H@$ #PQaB3jyvJs9k, H@$  H@ք@g >JRwwַ^DVS$  H@$  7@(}jyM4ngKnwm H@$  H@$ KW"~jxܦRy䑛A$  H@$  H?s)wȊ.^/?5綷mBH@$rMҷ{}g8vپSgy$  H@jK4|j3??3A$ Hଓߊ9I@$  @ [$  H@$  H@X&,p?~!?ꨣJ@$  H@$ \ ;.Q$  H@$  H@VKVX3 H@$  H@$ @`4 H@$  H@$Tf$  H@$  H*:h&$  H@$  H`u Zkc$  H@$  H@@'TuL$  H`G m۶N˼:I@$  lYs߲T<1 H@\[$ H@$ '_#k( H@$  H@"h.|, H@$  H@V տFP$  H@$  E@\@$  H@$  H@ y$  H@$  H@X}*VYC H@$  H@$0@s` H@$  H@$T5$  H@$  H`.*$  H@$  H` Zkd %  H@$  H@\Tͅσ%  H@$  H@PJ@$  H@$  K@$  H@$ 'h5$  H@$  H@sP4>$  H@$  H@O@_#k( H@$  H@"\G{$  H'G:;+#,/3$  H@PWI@@&p~{}m! H@$  @%`3@ H@$  H@$NTղ$  H@$  H`*f!$  H@$  H`Ze]%  H@$  H@ TC$  H@$  H@:PNW˺J@$  H@$ H@$  H@$ u"hu$  H@$  H@3P44$  H@$  H@D@:]-* H@$  H@f x$  Ѯ7ߣ3meF$  H@d*&q$  |uH@$  H@G%`wͬ$  H@$  H@hE@P+\&$  H@$  H@G@]3k, H@$  H@ZP %  H@$  H@P~K@$  H@$ V %  ,/otT1 H@$  H`=Zd-%  ]vh@$  H@ٸy$  H@$  H@X*RYQ H@$  H@$0@q( H@$  H@$6Tͥ$  H@$  H`6:GI@={쟎>fz{뀛 ]cZ3)unI@$  H@蔀 Nq$(xgYkD!7YV+ H@$  H`.. K@$  H@$ 'h5$  H@$  H@sp \;]zK_R-?w4w=Mg}G;mW$  H@.Js= .H;zm۶RS$  H@$  @CiJ|3^$  H@$  H@G%`kG=*uYi=m$  H@$  H@Xo*jwcn~uKo~Û_$  H@$  , `ٟY_$  H@$  HgI@$  H@$ h`}CF⋇7$  H@$  H@UO{7%\:蠉i݉ci>r5ר$  H@$  ,U}Mo'B&w$  H@$  H@   H@$  H@&ز@x3 ҁ8q;%  H@$  H@V e@7ME$  H@$  \$  H@$  H@[ -=A H@$  H@vt*v;$  H@$  H`P/'( H@$  H@N@Ў~x$  H@$  ly[6 XWs\ٙ$  H@$  H@蕀@0 H@$  H@$?-gn38 G7Ñ9t=Fp$  H@$  H` P/V<#3Q$  H@$  H@hO%`y$  H@$  H@X+*rYY H@$  H@$О 6|M7!۶mK{g;I??U>7 N;’n]wݵO?o~󛹨۷=أb2ypp/);s_zF ! b?k_/9];OYpCb`w!>eUxyp/"~7S!3[?k'Y@'oާ ?,9dl;Ys8<6Xs}Mܜ pG/w~F}s86OɭSN_{^ziUCҗT3@IDATp׻޵[?ԧ^>>)7iUOӽᱏ}lU^k^S߿cysU>a(zG]o|c/ғ{G˧ۯ??* .7 UsL*{w}k{/.'?Y.z/:蠪{Ó?7WwP~T{uxXUzU/{T*??OvXU}Kp(ݯH@$  H@$  K@P-M$  H@$  N@P-P$  H@$  K@P-M$  H@$  N@P-P$  H@$  KXUӟ|%?+C9$/F˧T\F»~= "`U` =oyS/bow]|:㫐wz/eu "WS9眓=D$矈Ɨʵ?}˺\]C= qZ viN~߾ww\.wKpUy GdtusHd38S#Uwnu'v9$ {'>1(M}{ߊt>e7ʏ(OgyfWˎ`OLx`.c#8}VbUwz.-OUnwg=YkͿ#BR0\6‚ o H@$  H@$ C)3$  H@$  H@kA@Z\&+) H@$  H@f'hvv) H@$  H@ւ LVR$  H@$  N@ؑ;[Vw}o~n6??C۶meBꫯN([9~.wK ˨J/})G:#߲nկ|3'LoxסnvwR3ۤ$#џrALd#q8ok6.pӛ4эn$|Mg}v~1啯|ez7~74l_&ufֶhQm= 0@z;ޱ3I^צٟd}??f?ޣ:̔|> Y}y̮Ǥ__ɝ7Wӧ>Ӎ{x__L{~} ׿Hm@aY@%S?s$˿LPrO }{NwQZK?j;m"$[` qNwij~~-1]wݭD( b06Yg?AL {~^Ƅ%s >o>xfQ/unG]E ½?==QJ۷o7<=vKLJs1|_IK)>e]0PΙ>O^>&#RφP?lQw3pcZōl1:i!L?>&1@"' 4|x9ճn;4=iO̿^X bۨhASභLyM~pvs=8/z\Lr?6EmHTUz}O(7k9x[:r)&G򛴅eJhe/{ J#³|Cw2Tba@2 e kYmQC }"h y" DksS?SPL;mdu;nle*Ys?sU}k`Ի5y ,0|2sl8`}Eԡ)s3dI_,r V??<ҿN8!ޠgil2uL--gYI?#?X7XpLft[*V (a ,(QO<1%/I-YM^k0V8m}`TX. 5E7e4/J< ,C39 Ci]pcR,[~\F]VLU.>\juVe>wX ԒO[آA,v,s+^d>)&LYKĻ =<|#X/butֳ[ߜV,7BXvenS0}ȧW袋r%ӄYnq{6Qb0e\fcQ3V M5UXZ;TH}`Q岼eůzի_\N7>,_X*K:a?,Xa}"b[wa 19Kp."t,a?Q(DUҟv>~(5{ɏ!)ںb E$Q?ޣX 1gӪooyyy8H}cj . oxCyP} =>϶Z ekqxh+-tf508aef-$3q =_gE4)hPs< e=x Kx ċ{o׽U ̪aZ<bP44fLl-rK ёMo?=pXkD`᰸JFSaPccY 5=<2  fN/+%ϻ B)9Ki*Iy]mgۚ:su=&<8moW9-{ߡ@`)..y@aYer~v( sK6Xѱ$Rc\bX =ɏ31Xr1#A Ha\BɅ)w4[|rA(1Xel0X)fi7ՀE(\\$OSlLXoʈ]>.XQ&y{bVx3rh"k0x}ˋ^z逾* ^G IαɩWiV_ơ58XR_eC<g~cvۢzz*;:u1p9fplҘD-9,N*7}sl8Y~PkSmQˡ3.tDi2J uPV@ҁH ~~(/&V5`I̼59lS:tAT%IdX>IOʊ2+VXL5Zr8mgkUE*߭>s|}+bƳi0APrWn/w*Qe4 4L11g K|. òlRxI&7iRo5{^k'+VKǝ@X6 $,wJ.>P( _Q r|Xm:0IF^`0^?yJʺgP6U.- ?S3?&^$*P'Mc9IQB&&Y7JJI&U'IvfMIQ:2a?~#/䵕LoC7klᆓg[T+vέ$OO7?7eYU:HyqƓI 4 $OOtۼ[L!w*mg }] p>P_G Ҥ&y2j3^?yX:2YT8mgkU, U}|,CVffs.+7W~X4P7,(J=jaK)&LdH)/ :d8}8VXP' 23_PԅkyE/~?bhM币tUmyVa>a~Euk:~*E+@ L67rc7[ٶOsQHQ<GQ7QĎ$6by.h+XfH_ce1-ax'Zx䳬v( zeIt?&ydrֲ!jƴPDc->RS8/JtҪ,fS<6`\Q%p(Y|__o8U~x.NEDe>w(OX- Ax{)}< ,r'|r岍A=DLU_X *!Ƙ&)f̫(^#&}Y%i撮w?ߓ&;2? [<+Ϙ?DDeFxF6ǯJ¨ ?TJX^we?DkR̸!/,ڲ" cfpPE~PML;?8Y`b&#v!^ UNFPl:$_ysyeX·m(B73iC,˻y,.rl@nxqx}Q`3;ίʾQߥ-(gT6 KjP~< K~r XF:_X4O:٤&ık_}>NP7N΋:NSlF$7cވT7L 52\ͩ'o)dܳHY AywȨZ3.ҷ:mΟ4]EUDP!??0P^p4J8.pܛbD&#!J/JMp'`T0N̬p*5M)mg}T}\Q#/2fΆ2l6: |r?6" *=3sskөZ[X]x twZrgwA` W/ x Siu#mg$2csDɑi܌pܮTmbXΗm!b Tgo2(E 줤+܃Xq>L2!>p߯{\~ۢ>X+uA&4((Mȴ:$&"|TEG0N$iR RF0.(cy,YQJaK#"Mrux X@2~C716~cg[Tmo#PBu2 gzM_3^4XMGJt]IbrY/=#oBMIBxCYqR4ygyf΂޼˙ι4re֠e&h~:eFs,,EPt!eC^m'ty3HKHQ&ysP΍E3yQ)N&3i_84Lʫrã0*Rb1_~9}7>82 7eF%۰Y`0=2&F@Kۚ*PbM0(e9ϺJF }R΍ a)t#e xۇ"^nb$)m9^7QϢ(O*ox_Q|1eWOO??MS,"c-r=6y eY%p!C/| S=[)_؀*-{|8K9>ڢ u M5klrN=cƕG(Y%: _/2&KX649Kt\ZB1CCQ/Biz1SPayy hץ.u', [CXo;^U7kkU1+Ɋ:eCttp}a<3DQI}xP]wɣ8[9Txgn=a3sMUFUY8 "j6zW r^#dw zF'nZ\§(`'pBÒ'ùiN Ab A J2q?AqJ=b7꘺ZP] 2;a\C4׺#Mկ>+mVQNq4[sLS'n9EY>p]|',hOЗ DG& eE}hlb#imo堍S7Mոv2GX~o']LDP"<,&.7K.b(G=9׈ aE} kW[TDe P@Ӂ#hGĴgߥ~=託7sw\Ǥk?m_ EiQ-!_v?v*'x2Pm˧(q\EDEꀢ== Bk6v3ȕ|yY %YXwQ:#G U} ە0Qc@LpV _F wL`,er3b~. 8үigU0 T6׻5$"Jiz[8~ v}dQӶp8?} *½X0<{zr4e 5Â-+T^+{(+؊ 2x7-.ia3^JM>Wz cPEdRa9>ۢRv; 1(HKt#}<'3|n sTUΏ>CLypLʻStHuֳn:Y oUlPhYQ(}|}67oʛaKr眐-4:X4)㞷6ԕ`Q,ɼ%ezpo/QUHeT 1a~@ԃkP-w8#yXh%%]|eo& I_(+*fMuʤg˓|<*l%we M~,_=Є!if­e6135-v̨vilS{~2J09]06a`~4,Di#w7Mm؀p>"hܕ؂Ҁ51ۆ6zYrL(PhXc1HzX»| `90;ƇY/~AQa-+ߘa3>Mx˥?餓fiY`T=c1yLeƻ.XYtO}SUr3<5U^<;|ևL(23VWviչsX~TXaJiRE :w/at&Ot~YA)ųAY 50{G J;7A(] as>l ӝX )y+lG!$EJ%|R@׀%`q(N=M#K YkP,ƕ]s}.-k3?|G7$g$lBf* nMyΪ"O(2n#L rg6B;]TS~C 3,,dlQ4Ln5Yؠkz]ۢm7!ζmx!sa:ǀ0hy|8)fWrԉz^x/B\9*ip&)XNq׼&q0ΨѦJHy N^vE58̻}?psƮ-^k<#R(+ eIDMy91kp5إ6sR ˽K$[̝Zўf9(9npN4$?#1 #E^OX1pvL NT$,pR̼߫g0eOaǻDw$~$OD];!M  CϰL8Y^N1yGD|! K"*W,m ˴/8%%{q̻:< AX W6h;_Ba#Dو8 _wh~l7B޻Qʇ`χ@L~H39׺p:9?n๧?2[Xv~pńlqߥ-Y1#ueL Ƹe8pIhgyv9>,s '8eX#Mz|0%n\ؠi1>S_m a9"Sy `mD1g3 SXUkC;?p yQ%%KX)3fYsJ:ntcƴ~H &y? *)Z0 N()8=:(ay!"fWή+;kz4o2Y{9|ȊS"¬##]tQ-(,h[M@9/ζŋ">ޤdk{&(O¯i>lmX$Ni,6ʬ| =ت%&3^aֹI6f?6Xk>fW6a0(aT?]a71(G853G%I]by`gݕ?(%4(bIbH)̒Y`Iu;.潴 >u8ŞXu&\Wqz^{ Kծ֫]0H?S?O>],ʿnzk{3Q֋ ^ՖAo1=d`eN8#4].`}!N8&͖u.Ԣ )|pvϢ#_id#-BH e;3w)p bx6g 8TZOO*cqPDhsҲTEH8]D s՞~1`2뢗t (@˃̟`~q; pH]w[eŒX5ӻR9,GǺΚlax\/|\.X}&fPu-]/?Ze9."Jn 1R.s8/@D4*nkQ̀4g^"`"C_<9aum%&Jt14ʮԍlс.#,s{+^0̠pʬV2Ozғ[jl*`h2A w@T*"ͤg>'PD~˝qec郵K8̝q&m_ՙry|LLb>|xb]"LOmb|#x՗зy`p;.Jm#Z|ro1»ko| ?c)KL N2q׾} &ZL%;%GdR~K:u!eѨL(`!L54 x8?v5_x4ڏ"S^=_C8@TdY &J}+,?#H?cٞwLWέS8Ox!6J ߻ҏڶ!_\/O+'?91e88iz ¾B|P/kB1SFa#Thr!@=R(6zy5CzMP/xO7b:i~W_=ㅒyO  :1γbta9, Gr eWV?rv A]E{d,o@$r7Q?hb8Y6L(A>DG7Gh^(ڕk 'r<߄u'Kpٰ&zML\e QxkاV1jI X2U]C4)y}Bʳv!F9ɩA88vA]{(`|>UUcq=~;|+[Gvry]߄an}d|4?5yt, }рhbv'&( 0x_<KALWH?kha1KЂnX- dp xsICRv]=_OQ~aa˚F +ʖr??=*ɖ1?]:ImcVʯ$!cu#\Ҝ@,1"mʀAHa<K%ЦJv^, tαL7[G93OUy#6JpˎFU@C'u5E):| UixOfwqrn:>6*{RUhQd{z^("wM; ?G7,6ԯ^IQDEy ˴66#u?_Uk{p0p0|kaឤ»'(Rq<wN*:ǻ!C* 蟆iO{Zn§`tߐل9>W/8:Ib݂щoS@5I TL*{{S 7ʵYR4`B)3,G}~l"a e`0BOt:"K۪g<@"rb |UuT+-ш<;(ciLE~*ޥ{]¯+?La&-bK_kEw9Y9y,Ndq?yܡe^9J=A9D)w]sP֊liwk J[~t3227Tn`[!L0WP|'bgY/P2_bn ()](cILl|wg`^qUMb0AUjJ5JX ՅI$ycVz*x"J[-:֗w`l6`9$I9C&a:FPTe74 bֱgFñ ԏ, _†N3 FI0jb`yL/X'؎T p 3f'}q~Xg`g%+=|b )w4`2^XԕEhh ?S:}c^Wí>#GeBKW,s7P)ycI?>I(!xGc0M=>Vʋ" sR>je鑏|ݍQalA8oo:V $t=؊ 9俞W JI4q73a[DJ=X}u6~w,eЧ%J3m RO}nCȽ~we7J+{p?5gluPkt+[DHD S{ cZډ-a'W"*.Gf 1U13 UM%9i8pΑVFK^Qb6|T |so 93b0JTq@3%XDTH") AN Q'âʐ~)yOK?nb/6iDqt{Pd?>rdFĀ"'ReKdP:+] ?FUYk* }B5m6d0?\kmT\+|)dPDWնE$SXn8ޭaȹ瞛ߓ;ty=7'XYa`A$.ڡ(w e4>Gդc=>TeyZf%H3K ݜ,[-y\p"Oʛ30J{gm?XJ K7$9@Ksam3QK7N D JE P"E9FG #Je˃}X?L1IsO٥0D_{pV!qꡥWI,b|rc'ҫN8!<8"bDS{qqRo6|p a 11-eHlAdb52M}c /FNJzYe;:%=Pw܎z 0;AI{=:OVK=RI9i˵̵n %s#,/AN?mct@MR^yuz}YhSGWq7-p=tf,+%υ+IY63uH]"nZw Pf(7eQvycqߥgjl͸`i97̌w pq ׽uLqq{`\eG=i7HRƳl~w~Ga5YOpxWX?, evE!|mپ᫯}᪍ )[k;7(aRE bPa}q)o:M8T)XPa/"@si"u٣~D!3U4&!ț}UӴV-*re  "03HmU,]ʃG<9x0,vhR. ˠS(q2 W*2X;.iގ#xX&g>E jJ}r&}8cT'\oc2B>&[J|fS8EgXw)QPfS-b\Gxk-K,6&Gu!ji//BDo/Dxxt(gsRUXQv,Td e܃+IqQ5ŗ4v P&BFpPMaK9<>'!{s9N&ª{MdU46!k&Pfxh g%M87n23ZVf]) KBg緥Ma@Q6L)7`eyFiyAs6f Y-oyeb ór*H[*yXBP=Wj܊%yҖL[F@IDATX9.YV&t(w g03nF emɓ茓>c@DpJ(/&6ɋ4 J}GՏwZyǕ]DXl`QD!ްSbw@ne$l^{9_|qk jdC}P媋f\=Qcu+9#8&*}PեYysƹ/M+<,RgӅE2A, k,)-(qOX`I3.+NXR\/V *Qq{ܼM<9 i ̉m(]cZW_{cCRD&a:FPXUW]Uh^8'/nBEeM_c |̸aʬg[GA̋&ztDTH/f3tXc?fD"c>S=1(END|of=<j̺>`M6±o[t/}K,V (H5nBig\e-B[ QUHI d0(*iYDRX$4:0xU&Տ:#xBb DtfYR(^ʹI} J?E2. xh-ǵEX"]]囶wQ|v{i!UYNYb3Jo2I}\,O6P0fٱ0.X yVG~X k}\=Mjdr ׀>"])y`!}>u,\}Z~onn(y5}:+F)}2e`'[^ۘ I*h׈<<N1[}1a3l8]1l!*GTk2Ϫ1+EQo:(΂y*S3 Q<WߏOR7]0B!e`L8*~rb~~4\T[ mv q!eqw]tE,PQ>RasXWRn^zxR,g$?PMtQjw!X%H(fI+>V`=eV 66T_ekdzz0 i*e<aT.ڢ\G'xi o 'oFǼXPIע5Zɷ|{%mԴ%帶,-EIYc`ȒY+2:;(7 Kr=ƂMLLz7ɧiA_+ C{wXD h8.j]Va|X2fִRNzX7<} vBѤB V9y,DԜΨɋoTYwofQuaYayY2ܩhpL>e/bgasr0e&xsά[}@ ,1ʂ/Ž=0 s2b]w\ݿ> q(: f`R7ﳶm 8|V[ :YۜpZ5i0: e(h8f,k,hcSo&,uJ(hJrn*( (Ǣ e0ޕ{y/:'73Acm&o~8U:Ⓠ{cQ#i^b|7m=QǏ*oѶbwըZEmN2{`UiE.C0QdHGyd~=fcV:Nc:`#y3r3k| щ#oְ6,fou-e>/6C,N{}@4Ϋi|PDd:\0e-Bghq6U|c'}gVYk:5HwQbC % )6ԙKS_%J%@u)׀(M8Re-BB|XN$,#MAryHQ(^ddJ2 RK[XKp,Ƣg %8J=ig_:e勂 +ם4e >yX"9oޏ:X3%bwX-ڔ\ܛɐ $R[+阤]T&[[aX~A9Q&WHLwI>&}AڼbZg2"'b*c8rhK` "-&Bi_j0M:(7YէnGǂ>OŢ0Ữ;n_m%2&˷[:,\e`&R|WL̙fqԄ|`ܵ8_ob4~GI5cjjXxcڥu_%Տ{`Tl> n[e)4v{xoQ3“jsS@A4ɋIPկ<9ӄq8/EFou\73m+LRw((5e+PLU3Ͼ&?. L+G+ߴu\+mߕsxLu2RB+@§E"& \NJȩ@F :\)0MO:s2h-Lf\F kF)"Ibm1Kb4S*p~aMPZlV(ÏB kj[hHA/,[̠ 5O+9E,%Y 3yL#I`Œ|}}RO)fuMZ%m~ EU5L\8cO;ߓ~D3TfVw=}XXmbu kzV7) @ذ}?3TV ˂ewXz&p0 ') S k~B"(@AZUL,H} zٸd#"-o9VV@ ZJկNz駟 %x&"M"Bxvb2aj_V9[?W߱:ń\ŒFe),bb!2(މyևU\:R,IaQTowc"YOIw6CMl(6#v)ץոa,練}jJɻt)z}5h@(t.Z(le}/OqGݤ}ocƭ1>s9xAϼyM:Z".QY{]fƳS>n{%4d3=Ҏr.X͔5>b;0ulXlLz>t ̸ /aJ,'eY-p ~pY׸0͒YH|\˥נlGӄwSd*q֏bP->LҦd R*:_F6_To8%}.d)/˒Uh`՟IY{g Y~X&i{t""X˩չv&4'ZUFmM; K*j;{L$py?y >m; tiOn5hGUxMIz vyhJ;ZԿcI,Qe9>ue2Z[0&Q#&,q:KrXxu)X}HB d,̹PB G-/ɢ~Is9,+0 U3:3u[f!Y sdL_prYfCvxTaQm4D"(xգ$s/eKQ>VSh^a't|zי%ˌoP}q,"jn}_0{Qi |0Rwy7Άܧ/[f,ǩu W\Qեjf21Ä.R,0fQJ,s Vur8`]o$$V^.$qq}eoO 崱(,O:6|:mOU1!e9_,w!|ppmIN"7ͪbtGT&i̗3i>7p:$%Ϥ}s8/(ڲg O( ?z'ˠ筩.ԅ_E;ڗy"2|w2dc &J篜7h{{_Ss[4p a[_$M%_f#<nrKb¤$ލ((i˹ [5x'Cw~CE0>P?>֞ 🉉&hT1QEEߤP[lCCRZ(jGI*D&IZZQ*"4D1Mk5w̙=Y9wf~={{$fWByKTL%;45ϵe/@ XkNQ<*?}:Hr@9= ǯ~(P{UK^[_EE,+ʜx)@K{pU 7ZR G9I8chӖ j=@JZB̗M׊kBnyMm CsSuW'N3ϫ}J>2 =kJ|Oa[}Nx(҇Pkvk =\\4׎S e8O>/cp _?$<S5c OKHD|7|lQh:ϕ}%S϶Xn.e_Xw 4eY=GK@6_a86KO`$5X>SD'Ѻ$6uf&QlA%B<YYH&?Mǔ;1MpT;0Voc67Y3s%>qf&9Z^O?ȟd8;%B=S:~OCGgt,:-,mCKoяx}}$5)o`u R_Dk?e ܚ?Nχ>*\g1ϵ*pI Q".sRySQzu |(Pxƽј45Esm;(b\9^ey8_?D,5/1ߍ5du|=\s"reO< .Ǥi֦swn :؆t([ԧ(pԥ2=a;l _%\8-L@Ixdi, Y߱3)7+җ^2‹a?}7aL^F,X5A&DaҨE8=\ڦsRG = ͌߉sIg6k VIJ6ɭc?c.Vus4[4`F|䚷|7.j{ yٲ8iEV=?gys\d*4zU !=5)p|>d~67sXk`gy -׎̓Sѵ wk/|'y xGaK9\j.Vر1o<@z{c,q3ru@P[!^+0E֛G&1'Z+ve|h"hwD x@O=j_5 Rkp9s>׃'p+1E>ϵF럽v=[1x)AGHbnDfRG8a k,ؙc=u#e[̷s v:VcZ:$fpYASm7M=k:AͺgdLmQE|ciLL0Ϲa-@ٷ|d{SهxGsH-tZ-}5| k%=Inl/gR7JxDE[R?7DyfRЕyi`GRٝ_L#B‡c<;s iI`g?5\*sϕ|m机MI]l"OZ K-M|(DYO&wT!jC4X:ߖ|Xx`iĢ{J$`R>x}G<{9MDc@< 6ٳɤ^yK[l 5Lמ\zݜVuokRo߹u V= s DLu† \,E(Ԃ[gc ׿}-c/-+|`@=/BY(?~?ჾK^=>v 際{OisN8n%9p>g;1\z.zmIs ?L7 W:Q<9yu[=ʓRne\&;U`ana .w1^߄f[)]"XZn2ʗ=IK^dJ1DB迩 Rc&2AObfמ3g4l͋R1&KKLq~!hɧ#uM*",_aHPUs9ך\ְLHXJ̜jD&mMߞ̺CMQ=/IGE%OggDlAL}u l˱l%C9X8\|XC@6ַc) z<D'Lj";ӎ=YYn&~7S:Qv"pfm]3s4Ymk9k=|r z蔜d[@8Dߛ5 ߗ,'6gZ"1n> !g-!dkMr9lRԾW";Bk~AaԻͦ|k\Ps[@p8sU_U-dGL-RSOfiӑ3&uVЍ̯Dczs﫵(0ٽ~v@7!9-TĊV T^K9DD!`z;,BwBzlCwxoT[_r.ʺ] ,u3eGu&GL0Z'%;EDsЭ’z 7u˵7γusX)R-.cy^PHKZn7HҝӾ]z͒p2J-s`bٟ%NM9m>n%>3=A[^33b@eRXHɚ7#BOб0)iw´l L0s:߉kS;[JТ0լڻf7E*?1"α3"{d@|8U ^B5ʑf%hԚx ٢a<AdKVj>5'tѩ|kIcM47f3IvS"KEN&XgJun eFڡ D%{sfNvԝz.,mKМp/Qbh9}csY>>s&:WO_Q9>s^9A-e]~t^C6Smf ڻ또=uLGԐ;- &L"7bCя~:H$9"wO&eUiJ3=Xf]6.Iw.:ed2aI}h D}} Jc>[)!oLHk353SfnbԃJ5HֶB`S|ciϺ2 aK|Lϲ`2ʺq\= Jhf`;(KkΉt<hf˽wȷ[9wLA^*jcn S+"H|/xg Z_tf22555{ϵri Jvi;jrK끑`kc"2Yr m)s('5g0jOV^dUmAhj'6sDbޘcΎMW?ǒgӬN"d~yB?N 0Vģ Zq\~'j1ӏ%MH&t{^{曅$C UBSFX^St;CdlROC .qYU"ٲ X#ڂzISp(<+h}-Ȁ\Ǻ~E!S!xT@G=r.'E5:hp^좥/4BZ۞}D}X(r]Nbgk("U^[yV$ g5|I#..?_򗟭7ٺrل@`0X"=UM<>εR(C$&%Ĕ˱UCs;u\RkKKZH_kJL>gZ5` 1!-2E޿zIK5Gtp i1F,U;CR1w /īMh% 6 {2.ٳ-sy]#,W3A%Zs+&)0?cJPf] Zj2*8]fW{|K ٟK-cIocgMRעy^#jϴ1]ߜP:gۜ "眴.~:m ~i 7 :⼷F"z;S(t tnKc.cq*hp_段 4GVҧSfY=|2-@7 [i䝦3j({MG/^yIDT#!DLikCKAa 1LJ`.5S DT)c2'Ȩa;4r#i[ð cM;+S9DZ{^('&ed{G}߱v]ý>01"3){yXy?U Fh|dZg *&rwkaSނ"Q&|( __kiK/QDBVPդbZfl]MQ+_{!0>܁poP"f过ZƩQ`ൣa/I5b,m#(C}}[p)<mO2 X@-e\kw~;Q|r]cَh޼Ҽhxs@AnAE:%Ysp+惠'˵QyS!m"y3$&T?C""Q EMdG j YwWYsjcde^KL9uLq #=S<M5sOSҼ9V2rfYq :>e6U!)2[_3(VDS>:"=[A~}]/f٩@V >VZ3{칩k"&z?J8Nl-\jɴ)ig%xAz H3MGI9$d#V{u)X95 ̸J j}KS!P-%x/J;t k]wmic_6Rr)@K{쁦'f}"^Mɥ{eۙ0oISV`FX?Wk~h9sbcQ8tβs1PnJS_L&3ps›yPe׿}Z"<޵0Y~~(.i93>xWK_9Po}KPh)&r$j; AY'sL],F眗될[@KCdl#4k[au:(dE֌EΠa̤&eN%]>K\=Nx!K>[cj7lO"{ڊΟ*9Wz*٣J5Ȱoa<[yxSCփ$DnaBy Iq-\<5Q7ڧlmhjB7A.a "я9_K@ʄl~^0_5_sYP22=mس6a9fxJCSF8sX| 1?+a f,;Ur1DC@2adϹ3Rاt^9tSCު&6ya;Jf6vWbmx+ilB@D1۹pJs|_"1O֍%\3|/J?xֲ XnGg\N jR #LoǙStD}1ytNs/VmjF3hV$@ ST r1vH^oG!`{F{k_ۏ#αҾo-I<._ъ7\db3-|P1gP'|T=僇mB.?zoB p @-|ϱ_e%|F<,c}7i*Zawpi={)^?pG_mfBu*FJ68xt)gstn+w7i\$;k 9d @/m! s^FZz:Zϙ@m)I}o@|wܕ#&.v/ '_gbiXK<G 3.$]\X-|Ħs{y#Ѐs97|7gcYO?].>?X.]ĺ@vѧY#_]@˱%Cῢ ǫSׅyl}_ h%Rޅ@q#%mvCH=}N.ûat}iߡ-Kd.e]ӅЗ!ꌁ0%/oҚJh >GӅ0c@w9cue> oyp^cs ѴË(L:f P|)T ib|;p\6BV8J8t.ZúyDXBBxylM`. -ܞ]|sK@ zDmĮ >ּ//>ᇪ#ރr7Au0'O,׷oT| !6-a٬<|i`OhBmo+1 |#WWw\ygfw?@ x ZG"P̚lgq)E ^ ;d@i?x寛he=0=[6cmL1&$Pǒ-FxcK`3B'}P6&]}|Ib!ں2ɝ#pIùf~-a5εfuA]Z_y<5 S>[6m8R.}Ȍt0<"$ʰmv#zP20E๋Ho%;3fcdLs2>iM N~,kN;|O4yp3bNM}U۸}6/$a1$$ԕM %*w\GhG-BH&Mqjɇ!!k:SDdr๶Qdó'5x-L)Rq}zsAyċ%DǴ>ap"3)/~qQZLfON{9ֵ({{V?Cajmqg># 'n%jSp\PZi;V|-$Wov-=惍!}0[y0)'!IqNVsd .~[d`wd」%Nr}I=2-g{"}}Qf?C9kӽ,?r~pB>ifW;Dvf4am0[[oGS!{g\d-T͗Q=?·[?`MxZɬ:cfnDB[PDio~3++$׃q;C}s/G|'th|a Z3#r]𽜁s/|+w&yP0 1!|x9=/|az؏{ "M:­0XZ=w(8TB~IdU2y L5@^>"› o*;u`Ԝ&wQ{ T0?~_c 'S}75<¸f@ѫOj"[L~kNil!LbTZ$ܴDyyF@IDAT.gނցؑӐ=S*o< ;ԢYaˇi1ڢYq ea\]u ޷O#N#BvA$i,jvG@Cϰ?§AD3 Hל a=)ցuw^;C}?J!D"m7S0ٍWPb|r̫&oǤIL$.'[X=mK!(+2jNY[|1n=M(=(|d4 k18!o)fz@cߘ!|:\j7_LLsN2Z묑0{5loީo$k7Jd,hggѣ(˚ 2$&LkI󶬉?|8VV lQ!PS"OY0yC6Ęs-MNρt %5eWuU{P8u6CC+w؋R~ Ϫk=v-F2MTuV.#̉t?QPZjB!sl%'S}Wxڥn,-=c&wöFIlѷ6!aZ0 !޵:,ol .uLJ8=0{. SgT{덒!ͫMZEؑ6xV;$$Yl% X.xGy@h^g­Eεxٶ)3ۮIЧg4Gs忧2i5!QgBJSy7B`oXv֋yHl)m Va:ڰK^r 7&}{_-EgZ1 MlAfjYO3s j3DNk.rVDwApe4<$e\?<"ρotn9,%-GGLt-}_{'B=N)|NӶaqM?s^[r@l1ݾS![KᏩTCqY|ాi5Vvaciq[lMcƊkF{Cy P8bn]J7{$vzށo<u=6Ĭ;\F42 ZIu6W$?#?RpvwTtR_7킾sǖä]YKXh^ɴ)̅h/RG,4Ƒ怠X@%v,c9'yK|n|[λsdND+0坚[$_9Sc rPfHꗊג1駟.hj-MmߘFN;p9_ YšdLe]Z@$kCx?HZ4 ߤCaV2)g皋RЅm|FՊص :37Tjy5wV}gZ9W_yhlE0D?jHm@Ǐ`=A"G_'%>ZJ7{11Imgq=dZZK`!BIȥkAu+|<JS=U-e ^ 23؄r3__8QáVktx1s&_\J"!$o9|Д8h>֯~0RǼZLKȲ1O "HZb0Dz`Q?w* μo/"T}d ϔECA^usHo`&ccM!yD/UH)sꙜovl}좮K .A皋j ֮k4^#/'*[K#'% kW  e?s,7跩ɞ})ߣ9Mc{c GD.ž/;CowADQ*Ragנn_3IJZ 𐩎Da"i!I2;d׵$ –cmٞpeyYJ90|e2؃u`ZGfS)^36DFlSnx0Vpw+5Ry"]8n^RMt#5{ RTvÍ9|jHO(w2T&|<m?6K:~l!# }{_1'`jh oMZ|HP~;{׶*Aut)s]}#%Xs@4-kpײnaǟ4 Yv]@KH0wB=°]ue%WB|c-ej(Xx0!~ Z 0) o0J%dk%Y$Cu D\*:"A/] ;ɷ{MDDr9.e܇]v ,LZ! +a#‹;PKM+xJT/&Z]>|E~uRnm09]\ʑy{r.BR wK!,BH(m0]8:cGpBQ*ą@?F`g0{+bBt{׆@t|!t sW]BXٽ oۿKYFWBkX֞u֤}cuC귖!26EaC Uޥr}[Hth0B%'㻮|caZ~*%O.%ꂏhZ | ۅ I皋0't[!ׁd??ޯᓦ<3 !kb k( .< QkT ʺz'ퟓ>.]]PzG Oc Y,ʌ}rs9LQ&-iJnff eMZDcc!' ;K{7}ww-9o5Ac&vymC&& $Sζi3-s6MqKj_iodҾG|&&n v,u9NͩMצR#qn\?3:-Č9QD{ QSe&c ,?}%{.,\`dL!*> 8^WhP/l-;}#9 N?wB4Ƚ4]7z=0 ov!^|jIՓi:O~Yt8zs8U L8SYVX.A[fLLGb94lѡf4n)^Jt/۾miwҧ߃K E?Ds@gEB ^jkqG|\A,g[uc:pd<2׵\ԔzI[w!vф3˫!Ìk i{-S@Y|0p%+Рtf+o? mk%_S?_3%[v^0-}ss^qh"֔|{l=0Mᔕ1pk'alJ8[=g%u&C>1tkUƞg,fcaHtb>D"⯅@4eƍ-ti#9> ~'KѶZ_.Z5N,ljYc} >wQ䴖ṙcBh[0Ba2Ծ/ $LW5y(/>'桫{0m~6j>\{g=D8 ]l\Fl!!G6{qF@&mc\좮e~m}ɹhK[>ÿ7fQ^E0ZqkhCE&;B,0rl<(€xwp?D- _}z=sDexb{5 Yߛ({1tH,,B҂ZRʥW~H0Lz @hml | ˜M`Af"lz@ SlcI/#N \ :1}#x5ä/J?zk$BWFơІ{ N<&]>GMwCp]"&}sЊ{{?KPC>c…I ر>+G?-=o N[>̽ahnRC?C#']{ NR%..gdRoKEkh׊.4pUm"L wZVۼ ۘ@0D0D8IW\FF&й3ӓh|ܷ/u}xL40!3]cPb |o6?GI*ӥw.kk$/=SLK;oMKӜb{Z3ӮZ{l! `*\t>CĕVʹ~gd.9u %S&APMpkg &8Mr^u:v-aÔdu^[ TM'л-e6]e6ܕqؔ!hUՅ$^yaەCh* \* +R]8L-DMux!|$cCYB [b)!-#*M ׾hm%$dlFKWz48wB:|$fڅo4.gr!Ј]8m { ^wqj 36^9\/.8M<缧Brܹx0s2CU5T Ͻ a\9pA?18r[o8:5Yr 4Q_1 RYG"a^w'2 a_wU .6mwGYcXZ(!V.+{ 6%<5.ЯwrPtV(sB}\\t~3g[.fX#hG]wnB mOxKQ'ysRY]~:V e "x\p?!܅^W"7ʏ衼zb;kF=yO"D[pǞq ݝtyܚɟ2ܨkG^uatdiCW7wNa5D&Yo{:ǩɻu )g?Pw{e00 BP(奣@gƁCTZAaReR5Eku+ ]D@+9E=o-,F+hiVԙPR>_ٻ{Q]pmPjOYsﮬC m?FpM V\uy=dn@J!ZJivM@@7qsVPD)XXLjM].RjMCnahjaʌDڄUD!pb*N" ]D(4'Y`j}3=aX> =!% ͪEuأ܀wD Oe@0 1ex7˻.˛Ӣ8Ea\v$ӹ|+g]Mo뻾 ]uaV2 _g]D3.hVOM4ORLvV€G|t2>q)זw)A5u(!sW>4p{O\*uԡTp=PcݣJr`#w,#Prw ׬C^.W Ӎo}E0P~`  :9YKq2rJ `a˿aAsc¾w묉 P F&ݻL8QF0^† 㦋 )%:NM6)HN]Jp!2 ! FjS(jf~!;NM6 I]&|EJ0lHkC'>|gg&@#D.=^US2&C@Fd.[]U[O]/!8ewx#)2IKK]M0$C_ : )ZL?߷?"^AliDZEk{nsP#{u{dM$Roz}X)QhekxZܴЇߝu}  ?G-4{16ILr`]=3M}ƘT9ƶlZ燿}4\.chүP#U8֒M'dsu_ukZŞP &/ )C~Lyy+l6-W’OiW~{l̺$֍F@Ka5V,[Ƥ#(C5A;<1Ct@7DOJXO1i2N$,h&Ȧc- 0ل|T ]ؤs{?xG#u(T r?2yB 1!`>H`~+hrDؔCyҖǒRfuռJ}}['}.Z{awֿKE4Qún#>A>JCkeG'`]Xe}I|FE/QIl閁⎲vk6~N>NYzKڿ$_ܙ2 #,|TXzMԦjHɦ<R~t(JtM31cR!e(06c;Pw bh£c4:}_^!i/l^CD FR~}~{^:&NHqaA% X{<1w;+К`@hͲO}-ƾ5COXc xS_í[B_Wޚ#Zs&ow0kL&j#yD sM!&ؿ!>K߾@1.ksMohM(wfo8TX*9ޖ>\nOJK?!ǸO{|/GoR!@o}h:Q:-dU>~~%!?r=͑ [BtZ_u}γ9W塀FCQ.%° 9o7zMyy8KBB[>X!c@mB[DN1 N=PPUr<3& F.PyMwmI17@;<au sæ9 mؽ6Kɼ|Cv<4PY?EdC~r}8@<<8zc Ω1eOȼy9@dy[53ᐿZRe]Lp.33AR~t ҥ@6ްz'_p~t3eeӴo 4A_;t& >F:֐0;X@1zC8=Z'cVYͅ$<\4RR@J/ſ8aPM/|֗oBBﶅr=/ԧ>ut~^=eE_ .J9Ixa{aRygy;oKf=؉M{]Kݗ)R0=I`LA@9?D E^%CLRv[ļǻ%s=T|`'m9t3f8 F !dS;f5<&LA8_g"RRFT^ZT=3MD!L* Va9Y"_j|cfGqտT[Z /ۘ_4?&+pjRSW  TF*ë26l .|wcv-G.ᐟI7ucphNl(z6A-o)WX=Ab'eF.\?FXj}7[mvQpbo_i看ZȬQ+dY+="NQZS<@:; 3Yff.oOI2A{9H2Ά5(pL.Q(>+70#|'R-Ȇ qcIްq=O!=*?^j`ڋ`khB(POI!+ɘ`K̍T-Z=DjkMlIObг ff} sϰ.O&@4J-v^ kl`~`YB}PPqc2] g ? Z}6Vk{8?qK vQ<`I ը|V]+QDa;f(oo>C0?f4/yK#U~l rϭ|AdvurNqLF{t/W|WFPSlEYkP>[@u!'/w{KC oA%2A+q1ѨL(o(zI#CI4h1o싆gsJhu1x|q@m1y qdz-Vb,5`ݳ][5$}O Bڑ//jyl4P7!v+Ar 6ONM fW:yD d&sCxx9Ku 8qEWs^f" ٩IM/8N3!"N|Spj,ȄH̢}ώ=ڟ~E!-G}}ߐnP@!l*J@o)F~7~gV$y(a5ii9^ç:Y Ni4s…MozSIfѷnsy@"z]kd\>{ы^T|d'΄9Y$C`73~P==rFǴfc߷oBPxX$9lG~( A /k"2k h9;ZJ~F[K/FOHNF ^r7jtLާnA=zQ!ٶ=d 'P#J(ŕb8ibĄ{!ޥ{,}jh\롆?yNP.d{GI;7CW=dzꩧʸX„C@{Bhl}}}D37lѲf?956!2h>NE=(e=Q|@ l!⇍otQX~cC~J4Z7ͽ@hW(HصZk:sd}|S k1|jGa~;|>@Yg`/AxܘO, dOc__("j_<dz@h Žos1@׀s!Og.[J7P'HH2T#N VتN2[/Zv IǴkL\w%ZFam^{<8'b%~yֳ5mUOhj=w$|*(c;G5jO5t=Ɠ;PP@cv{u<7C[MMDZs#~v?]E.! P4e`/gH YMM} oZ}tʯJAlcS"bAC,%9\ Us-dlm][ ]K8Dԝ 1 ̼K4Ώ퇙C_:M{k@Aq:yeܓN1;dqw3 e]DN*pgP8+P ~m&enkt{| ?Ihs(#~~XO+ҢЊ%GhNz~=V7-ŸWũpHۻ.pOdSdE1qR,HwRH%ym9%/}.[drksZ{(9(6{(-ŸT1?cEЖ^:ys3LP0QH79k[fQ,I(%qu|l dy.9JaKg w}mlG>?&!?n%mL{T_ho'ُ[.8)̛fx&X:3bhp,q0Xsy;v P5')7Y+C)ڝmsϲٔ~>Iv { T15υs~wm^.mN?C?T#0G^O糁__6nKsJn+P1KMh@4@aki>[sxKA(𞙃 ԍ{B+Msɷvm-Ư!=G4wp0lcױs~ _ǒ6'mR!;EBC*L Ot t=R@ML9'w ('s]O@q +% QM i1s7I?wa<1c:s #Z9Z3vu=Iq(.o}[gN:Ss`3@${c,*h%NUky,F]oCcU&^1 ƔYkR:8:'Nm˿WJIδ&C>KwѐC:"lq pGxuRD~W+i.꺆.a\&avɹ(ע=Icu-)+ B)Te, ="ʕ XZ*9Aaȳ=cgs^| χ_X!LR;y8&;籲B$2\*1x=m bqY=R5|VCO59̝zI1id@ T~>|5BStiSo蓔CKBy0nHKC0`}_k@)'Ȗ6.EЂ8<5ˉmƁK1 v &49CF:nZS0`ě-5ǜnRjS%N|ٜ0|v߬k-ui)#!6B}c-FG /!(B϶4Y{ԤEG4 1՝Ň`xr|"6dDo' {m֒pb|qX˾s{@:@A^tEPII斜_£rYUHc/נU~7yR1D;WY7\Uc[wi!~2x A3|̹nŇ`pC& k<~`ҹr}/ mOW>ތǽгS$q='D߬3 345ć1R-__%DN4(,mZC-!E[乱1}!%Xc ;6F%ceO]SmgyIyN;<'y=Q0e<[;+QG>[(P|͆еG;'W ]5 MC$X3A~1|`gP[kk:sT?G<Llp!)=(a$ s> rF8-藬39[(1>T9!-"Z֣ǎ"R?_JԞc7Oҡ?&> ؉Z4cmj>xN֔D$5jԹB-r($@/!)^iM|meHԮKS-1Du)JMӖ@`.Մ[ºC4@,v/9 - w:/}jHHCR ȊOs4k=",!n-.y*`ifI2Z sxˏ 젚|:x&ȪsZ["mIkEK3cg~ DSB}ZP~cy.ƯȳӢ .yb!x+h mG CZ4k\1K!}k1uu?zd5G&`lxKs7v5ls(u}~rIAg/y4ߺ 'hȭ)ѹ"Y4a2W뽆o4ɜ MWx][Wc_} 5Ǵ:c uH/~˜9MS8Eo$VXc0sj0TC(L/ؤl!9C-ȗ@˷`][`Mڒam1fò7w]{"`@8"sF˦wTΐ9BO5چ.e=Us^7֓8"dyN\B|L{A+B XkiMT TMLl6)@ y,#!9zfw ]yi/Is#n|&(sf% |R llʓ/좵gHw sQDr+L@anq11'"LgRn>Ds:w/yk0#Jjֆ"=)Z$|2%#H|zLUK>"Yow[io /̖YkCVG;QR y?Cضi/x]cI{cIEA@IDAT`rC,0}^m\?uENc3龂;ť7`w.eP2ǜ0ePgC 5wD,{6栁DPB>[n(`gv׭q| r=jwI dL?OQ|!Hλ"KGԋ=qc}B_>?}'H8ذpz@|oNn.o/p;= { ^$R+d4"4ncW7斋,ƨDVz6 I'rNo]\ {ʱ ?r$q>H~7 @eA*ۖB ϕfG$*w^w({% ;isιh~q-aK5{j T`uޓRH{P&SoP_r|y}3sut}F5d_b=̲ 0,4?P LkzR(3 !q ɦX In2 0pJu[[ll/lVbC?S>ԍ%[MPK0eϽvhN=0$h(-~7R,|c,;#ylk{[>S0sFZk|)0_ v{~M{w>ẽ*c.(|0I (/z${Xkr㯦4Mg`NYUeR.? L$DrǒOÃE$=ao^cmnc>}#cx5>E|ihP(_04-_L@P5/ BƑLksޓ9hj41Z|o;MY4CmsTf=|L&]@Sc~^K. Ad?J3pD4/c:ƣ==3/GxiID5r C0y?^VG$ ڌ-:;ǵEbNj?e cniE~n:`m! I?}9{8-?DHE4!)&Zʬ5Q] k3GxdʲoE]QykPHd<xӛԛ:U5UNDsb]BVQMS %&G6rA"Aڃ "cp*o6M6!Os׺Mgn-K5Z66;&kpy>4`~tw|݇{~fw_d>a"⋋1 t@G__qHc_3s{WJ ` ms-nsd\hB3v`6aciƮq*M8,eyP#JGU'!fh.3L?!sv/ ?f.ò OosIŠw `p,.6D}m6Euc.gD[Q@"XL_1P IbsM+u*⭕(Sxio(k5;w@+**$BhjWZz!* ;B*=~(Nshg[/\Jww|=ϧsCJ4C|i! 2qšw5lp~1U?d+3_ND2üگ-h 0;mo;@~g9G$ݺ7LzG]Nۜܥk kkcD;}GVҟ-DCsԻdž᝱U0;pX)@u6N9] 'f(O潽z.l"d/m~,N9ϴL{ٞp=) WToOR#ZL,;N'#"p̷'Ѷ4׽8vS 1tмN 9V"`o}[[Ჟ"{KMϒ:\icB;( {9`~Ox3 F(iCuPg{w] = ;N@Dv7toCF\r "~@)擖+S]?Iv27Ee f/IIPɽ2ixM:9E!"ZsD=9uQGwߕwmR0@R&X693s,{{z&{wMݧ??x zfH )'pMZd'z$_9h(Ͻ8Gb^iS86 tn3x?߃K^{g" KwLm$)C!dhfLPɛ(/r<͡18-J]]f9G(s]~$tZ@C15WoxG7'Y,-&O?]>Zlڶ.[s*RsZsizlS{8;; <:%c.w) 9pN1^ GpN%M"G?b[I0yw[__%df Pbǎ-_ُ}mȗP"ҠBnҜ֚cl򉵴LA3K~[.A ]]c/S`?rڔF8r!GL4L w%%U~4^4` ;ZC@49' ^<Ϲ4=&{A~4ǵV1MG- ywsit@^u!1s.ipkp>nХ-uu[RG rF{f|ᩧ*:GH1g|t }ϵ.[*LJzȟMd3mc& Ǜϊ~|4zO4Ղ0}AxջݍskFPq ~/0ݵ?-[K DNkk͙-])ڏB;g[xy7z=ڧ.ZVƢم={ V]8BӅ L ӂ.ua>׃qbP#wʊ{sՅ &]c;#-ۅ;w?{7C]zp87 v N.tb3}íVE'?u3dZ.B]wk T3a*iBc ݇@^>v+jx36]0]0. &i?|sa`u??مppYe蟗e sNpݽ%/}f;OhC0#|-|tk+NR;c1Pgj:GjhI璭o-x;?]:k]M Q.6%廏e=aqtocXyWs[c·I,c]6Pצ~ա=X#|vYb6胿[ 4z9bٽ9хЧD g{ @uw`l kiRGIP~5kZ|s5}Zt.M5#_4@_9EbujSOjѬ =1Ӏ=f_l 哎y9?c]{pݏ!ڒv"0ףц1.ϊ5G<*C044DX PlXhE֙/62HȗO A!ž;h=\\:a[gP W}cAE-d d?oƽ|Ğs.f!0ؑ|vhQ˸ݣW3?̱jar<+ ZJLHls"eF@Pnz_ϴ 0ҘS[д1&/E"M0˾ŀv >{ON\@X ߇|) H32 U"x'_& 8]K9]ĉ8J|>\k>t;&1%iyMt1Zє Hl1a6{~.9a(Ks"mտWKKk-5'7|3P&/D L\6eoOB))^[\?s z|&e%Bkcg!!QKr>z, XN w_jz& R,n쒐M}:.P(]MKbmI6LIl亿wn92alxpdv*&8 kYf~IۑbUd:o.N"FN7wSP?\L_jMg%.T:"k}sl 4k^UL䵔yPyi ^2ET.6]ź؄N6)Ӏд8vcUFxbH>"2fb`-c~0G{7s-PKPp*ݙg̍ZLZ9]K~-Hhz(.|>6o{17 At9&D>7 ] 3GRdn)Q^Wܽϝ.yIzytV駟>?Nm2^KnυR޽ycxp@\\s߷w2o#uxn+{!x.`־PHo6;wJý=́cEKMo2*634(@;)cE|-:/=‘a|LKHgG8P>O*sӏ xaa t j&Ÿ~,hupKm[mӻtSY@6(*1A|{!V %{ l DV| & 'A ."VMFYzVs^m.iAbo.>{ #DlCDx7v[0E~Xǽt2U8ͥͳP˘0μc$ge2Y6e=#ПO߄z5R->NBQB.t,L~noÏ义 ILl}{eG.+G{2%X~~WW 6"み->‰h!(:o٬{oK(K_%j}[ZL?!{|KKJ;xe~ߘm1F{Qm> ؁ol겫fxa.ݏz&` -8 Kw_a1ZB{3w>xhz\41P/yldBjn>Mf'"|H_@S Vs"8Y,s۾Ά|!{7+ӦZw/y|T!RȼlWk1"n4W$<0!S7 `nͱ5e|"kF]ۏIk~(}gm@sky0:F@uc*- Mf !pw.0Tٟbb[/Q)*jZ/( ~\E""z)bDZ/xK)^@i֊mhJ[i2[u Ι={{fϞ{g=Kw' G4*o"Dʑd#s c4#*[kiw0)!zj,OdЖ.AI$b) BW+) @Br3#\.<'SHF _ tB瓍I"ȦIp E] aK1LQb yژKkAnUmz:½B#8ָX26@0J Bޙ t$kx/dcg> !&ݠp;擄 8Yax㇐"[B{ 1JN1 Jv^^`TEX22p\WǺxBz 0HPGX:aܬjrgFh~z- |?s8 @gJ25ؖ'={ߒnSTe…GU$k˦I]4@:b/qM,0X!8PUپ~#6ɅO'^X(JKzcIyJT2nbDh; m1ƃ*bre\U>~ë'?6?gpq0rd@kk .\q#< CB@[M3,MOˍ1O.ׁ1Y F`D<R[~&t;pmFcjoTNNIOi_“{=& p^ ^sR'X3$ưˢ##J] N1R+Ѣ#@M唪N 1t)P0z@j< wspR0ݘ?-?'nO\52ؘcjHxY&evY `f3+a#c-b P%HSbiC>;4է<)CBXࡷt1]`#&@΍?x!. !BSxwbpRٺ,m[9# n@fǂ|D%+9X*źbq/4*oUb8ϫ#l C2K8c,b{_ĖHhBPxN4!I- /CE.y *L,d선,@<tɶ s0SN9ʳ\v|#)8Un\{UnK?Df~`A8 Lap:ꆲFЋ8I 2AR),%W^&KM?IfY4}! ԧ>UMagB]B;1Ȉzeb+-_VAxvd 2BB?JE!۝ĒMJ!AbY[fm 4!KfC[w)3yo Bdr~!k+KWF\Ys2E end$bSv GS^>QU&lC/{5) YQ:h/$KâhVE=|{ʰЖ>H 0os~gSr 2X<..HyW0 d2B]hP7')t$11+J%PHE΢fM^PZY~ sz%L:}2}6J>y, ɪ^>,-8悁;:ϲ%Oil<:PVX>V^lBr:AVq@P]OCcZv!HrTf(Qz`_vz,7~ʛX< , x^׼59F"5bއ0ð0Fqu"O*}Bn(D[yڤ&mZVcY7<؅n6U9FvBE>! bc<} _ڲ}]Uo98ĶEpb( @ ^]t}^?7B ]n +<[t)%̕f1z ^P%#Dx \P+ }XYD<3xg2EjF;+EQNJnt{iHJ@H3n+sql>OCq;u3 ="ȸ[)@VDu!a9M#B  6]b $%=@*ޱ<ަ? /X#:P8TaG_?y睗SRYXDęT<]P S?M\UVgr 1׸nC[ }~7>Xܹdū3{6*,(/jb,A H<83":"o*a 9E\ C;mBY@&ƈB Ƚs~prʕ928/))g{00Nrr5E{?'c=4LLlZ;>Tn$hi{[8-N,(BG&!> jٜr~kP2hJgG/Zk9dB\ېp^hnqAt<:!SCz |X  X4N>ԕ^i+M,X ͰHoߝQ >uDص!LE!)HD\'d0^ q2L yqy{%VRĭ8VW<ƺ*NAN6"MZtD# W虜2s[(wq9%&}pHSc!u${ꐢ_1o$\;Qu^p qp,Q&ݨPsTxZ^j(w~^d.L?ݰ\q/s ]fl$7YJ#!18x'E!rl*7>nH]'frguM B[C~Cr XiL̗sŒֻ$ig0~X#rg75$IkݜtM7='ab08GpdMXזفZFRD$hހk9x\q$yϪDDΦwzEs{2h"\ %GO2ԗu[@+o:Goj:ҡ"_z;4C k7ڱ\Nt,BGCMh2Wk6 Gur{e;|\sxAad[̧ITuk_kP_wKGib\*!TOґpcn:=:q~cɱ%cVUwgkR{h8h x)ekeDA# lh~9](Aم+5!%Vx. l*Ex Zo%'q5n#bs)"OTL_o7_ebH&/ ,♤"@2=x3+v 3q!8-1&>qY-<죲iL8Yt~6#w(xC]IK +r~&1i$c'0̑ Zh1"lWiYk嚰mTf)H)JxmRĊMh0 a E)/%СQ]& ^'ڭч<R(KѦJZ82 I𐘪F#uvU=!24vE5N }ݼ'wQzTT:yL1e| K:q0Ntq)e89buobPp9t=}`.2qQ."a"Nmǟ>eõqP'>"g 3F3QvcCpqx.ѷh"x_yZ3a8B#6=P}"kg0_$sT9%ecBڔsQY[5djAVk%pq5eӝsBo5nKoBeeڦgyŪ@`)|i+ЍquTG/@< B/ VK)uaeBH8|6)Cؒx"7 ܠĽGȬRZN\:v? a1VMdYd,HJs}6>5ml"D dl/w77s܄a42t @Z|e8_0T' zt(!Qw0_I.pMpv2FbĬ ٭kf< >0vB( 1}nF(\WN8RdI&x?N^S ۷#!U 52"8EvsQ#M%!jl +%! 6(&jph9Wx4p8ܵk5lz Ђ'v"^8$uӷ=ajHKiMKB\@1|r7dgj@HMfTzԞm]i y+^ab,nɰCP0m !o4B𐓽 *,ߨ?+PWUؿw>.c_b.j*u}=S.ad?T.@[!ԍY'xAxBאz)57dWͻò1 .ݚo, @H(; x1EN>2|~|˄Cv@ K/ʬCPQGm*Tc[P5H< C/(—/|שIs.t5[ t,X30$N̺}dئ={j>zH(Gޢ$I]4 #xuC I@1A xX!ݵN&Nʂxy0la8r!m3=Aɱe #sOl^/?֍L@h  5M]6Ert1aDڃ|3m,r.maA 7…0AG]djnȩx7B݇? օ5O=N7vE2%2mqs*~)FmxS6<dr nqyIސuvr&;>)K=L:,g~8gOWCd9(Klkא#,2։sI^GL/9&h7e!EH e!U0ԣKB Ąkpx!u!`]c!&CMh9tT2.óalw@ST:t^  z*C1ްT8b^Oէ6pM 9F CPҗ ܃e$g6qvCss&I@79eAb|dNFV4GA2fѤ>AiC.ف:~."} ẍHl&N,Y@pGZM&WlGL@2$p@^qIƓlI~W է]8V9yX`ģ! m΅pq"G0ш)[( 0'/J&K Y\/<-#OXH\߄т!~܉C}_' KE1GF3N~O8sI3'$ `B8Daab F.k<ij $ k @IDATGm ݍpcpCΉw#ԇsys^{kmGmpH2唉} z()UY ?=k6{>wL9UB)lba5 %<߱AV*/mb@5='=ޗ)=S>v c T9} ڄ 7d!x)cE2l껧ZRU>  c$v Fd!{Β3?׀4/qHlpXbd}q$,|NN1wC9$⋭ LYX&heq.&,'űdLn9n%['n @`2 sP8NG'P ]Dx~ȼc* >Ub˽ż??2.>s~8ZjM",Χxܢ`2G.B;^ s>:g1W^.C+?1]0sm}m\\ bOMs9sK; ƿ:".rB"R׵ɧE]0OhnqW65_ Ku{B S uh,|*2|+cd8]Tgs9r/rזr.*T[Y7^$[p9gdPFVM.x18 %zDS^3x ᧈa>5 + ,|¶#ڨs. <+} w[Fݑoz) YcƄF(>0IE-{{ޢ/"̅i]8xldQ9eV-)/J5OAercy6 Os{]aW^llp?לW俕G# f<FA+,{>;【 0s)TOLg}2aL2dQ bfFk[ s/I4'pĩD0ظ^p_w\\MN][c0(5CcOrq=kōUS~ _&K$)H+2\LX9ywV2sXmdhwq8c A&VW_}u; cje"㺱# ۂ!+i]vYgL+"pWɜm3$$W[sol:R1fE2P8A FkP,B+AX(}X{$; F /m /4c=)\ʺ9,w@[^xg\9Ɖm]ۜH!xhc9&jC)~' ~bE@yS ʨk[b OKw[g8,neׄO|32z7AsEͱܓShEm&~N3guV#ʯ0FwUmcG\ @"? םl,_ Jx8o $v:]e.װ teGA+ +I>2 ;}x oqo/YRO 'Mn5BIǺI}sbQ0}^řĤS=rPmK6vbYBo} /X%dYgdO)T ۉ7?t졟@CcX % e0HŸ9DPlRox zEoYpCRr]\Ƒr]KC{q!F  =E6=kqξ.߆cY!~7Sw7d:ֺ@VxO2>!]N,+uĒe*>я8WxM b6&)KMxi?uFta.UBu8da/¸>e!L}8i\.}XᜈP+8gQ1e.3FU <)c8̥w`a=_|2n͔@]N؎Uf Бa(%c``Npp;:\br?/,JaxLolz]W9 "B"qξ<9*nqo` uGNLy>ۈ'.EA. kK ^8x-LʡW>'c"&9,˙[sd!:ċN> O_'px}K$a!7WiO{T|2ne 9ub1dr1@:z}vŻmg !iWʟ\_dF8OG}^^Ikl~A+}^HrNpCH~W]uUB|s+` "d۝С=s01\Oy7`}}{_N Y@Cb_WgQ0S}Ku=OJ57 Nub}CbL{jSphg&l}"H lDܒoW| tk@,t19̉hc:27Rk@x+=B"cn\*ǖuEuc F]m2RM9kNCNx:W FJ$50O%PK&8 QgmbfBlX9 /PDž˄6dH4A]2dBdE}馛+NM23Y3AELLE]طO~%uEZqeqA\y3x>"hR,{F<B:2-L3e|Q_7Kc[\sڄY&ƞ 3'X:<E5~I ׿L)GHnX9?C?!>d30_ަ˳9QtRnHQ3fXO>c6h724NB1ф_}Օc+s 'YH1uoZ7s2 ck,BWzrۦ,e!qxO7g~ܙ"jn8/$YLEĝ @Kcf9vАw>A yۮ2u!bwٍBk,`U^ a A: 7&6)q>Y>sܵxn>BJ`/ٲSnw1'˟Y ೔b>&w]x uIĿ {qW^KNğw&p *w2sw_3dos\fOz,02]D(X pP!/&d+;hؼ2r6 &K ҅qWE_1D }2HwS-+%ww{'F[h_,'>c=LӷQu<&w ֓0.5jA'v*Sz8X^L)OyJ&2L@y5ŧR.J3_O"_^r%i"R6TGC gn!%@nC(&Z  ]Rwya3e3(oLEZ[駟^r+_Щ2El͌ OxBTK8(39.<' P au!s/sM (O}cU_ t!TcB80{`w [-B#e@b` E|U!!:2neBئlK6_xN۵Bx &씰_tuFQ'w㸌#ւg\q@B mg;*=xnDkdv!d!S:}طm`>.Cq)>-oy]0~:}@X r7";le?aʄ{0&4MgKwB &ݔEh"gtHa$ Q溄 #!O;4NjmȻ@Ȕ96ucN$C' Cf\l:OMm I! ESu$3-!)ǂ:ԠCY V!SOmU1!$:N^cV+~\FQ硐Uay;b !g*yX|gy_]gYø2-ZUB"6b0I@g @6\V6'EZ/JӺ)~2e -G?U,X!ċ|@PGC!`6$ԈFcb q(H52BY"rLN%.H!( 䮐] =aaYF  (!F]TL&Xsj*g| 0CaDü-]z1ڸ&{7y[!rub_^4% >h"D` 32 Y~@phBH@>0h>Uq?0,?';@Ȁ  $Hk7[c^q}A*2 `\ 6dĦQD#7M3^Vhz" bU{a \w,(j @,1E>?\w9bJ=4D [$#Tא0 e\+BF7@>3' s*ާ'C 5NYc'=\:~oa+{5謳jܸdjt: R𒒇y]ߙ3) 3pFS\wy* s9TY @cG!ن /Ҳ`xȄ!{|0 kc?<@>}f/ LbYJ{br}~<S` @b>*0'|x*vg\$!BYv(ׅB8 y%  Ia SyJ2a "$á }Dp} t*'+007 Gc7ms]waEb3O  ImYvՈB8Pbb`ʻ5I#[_B8P6vUT0N9P E\~h\@rsL? ځE-衇 ]J=űjJ$j/.^\]YßDoOjcu!}/)1TyPhbL0S8b t[~5-"Q7`QhqxQX_DTkX|چs€8ʌ@(pnam OLʉл#(mC @39 vvvql1҆wN=8D14=dSsSkW߿ A/B-F0\3? QwQa f! ![uu?:1 edaúM$ R.%4(U<Fg٨zr%Z?{t#f^P*].^}S9c\ȫ\ƙseۅxcD~dd_gZ u.i/ {͹͉m71ºȋmp;75#>88)޴ = n"sUl&5M8u{w (+Ε: CIW{A\Ɵ)@إlaP = ܘ;Rukr?`eޏ>*LKWi/^q- IcnemVQrX} 8PW>^)׵| diu4E.'6<̃eyWvb UHO~4jLxM0Et&l@F 3_.'98bvsmz:t by7=ƈ`x1m 4.{d ao ^!b׹)Az#y җK[URn=O{b. @UHvjiy2oX\!I/]tIE7r(dL;)axb CEfE^sZ3I{f dsbm: :I*!IeY^Q9~0RtV ޞ-VH5P]w9v9ntkMK9nPK_02"UGxM0U"H{<i[pԽ/pm M[zy .Cn``벉wc(G{> ap2C[H ]MdjOeή-OVJ3*8SA%m̹F2;n~c%3lXpUaנдAXxpG,τQd*a2Pf&wd}cD\1^&phNk^&/:2``lymH!nuFv9x.Be7LGEV&8BI|v̾.\Nл>FTJBΚ;N%I۝>:0`|5C4`,| fMry]{C c[ppݸF"nr^~i~~MFkDڸ޾`7I2xOB:e'i`p e>>6c !! s>vx{(_.t/ o\2OŧBly8mJfe_dDz)uC{++[Iq恌}u 4xH LZ4{p*Q܃l_2Tܔ:N[s3F2r~v]yl\i99hGxdsI i|,3[baSjE`Kuv?6Ē Z*4rJX-Zz)S'X=h0Oҏ>&3Zg]+{df!B(^*Μ)AM AS!X12 MbtUWeh6>vT ;}& $ j@j -" .B&@f4:ƹK@sFZvDx /$Bh.Heؠ)\WmCɼ-M>A.%NcU?um\/BN\wΝ;͘I@3.G>bMdY'##sD&f,d=eECXRYMDxbUMRl #ۺC,Cx,- wikRP"xY;(Ac(T-k `yv>*_̒ys_M Gfl;ss/d춗']&h`~թXA sOҕqVu#q KZ)"ԫ&Ƚ/x}z9/sN wqXϔʸoh@C 0;BV}~^w´ Rd3ۊH1¸}"/zS\Ρ &2O-mm_!(Zmnm>|#g\/G|.\|KB,J˒eu消(F}#3vw]W%n$يwh1j(j'T:40^YKI&BCCxrf6be? vLx)ۇ"ĵ4z x9 ;7<"}ܥ.W&ZQ&]@p`:s~˽'r!s blURpX=0Ku6@۴"D-Ř4SxijeFO|&b9D3%P:R^-4m }{njUs'^G U.T|9c U)AA#D9L8^msvC(ds߇cx A\rF=T%#q,. b8{tk38Êw8_`ep '}R"oNX`bQWW~H26^BX2x2PWE~3 /qxHـ<$C{Q Mp w:Bc **jޯ}fb;nGy" [1Ywc_b$'|A];8XxU c΢>}+IXV)eL CLtj 0>Ln??k5*=]+)ޮ!>;1.]>H椼0] O| J}ZVݔ;?Tԧ'.lٹ2>^Zݱd!%ExO䔹A{iW-xOVqçmp"dr*V/Bf+O.].cX{>|z }vu 锋\ߡZNX`!Xԭɦe[@Hy睗$I]4:Εs CCR RV)+&oҿ,YB2̘t0t؀o0moxoI<#-(ȅqۯU'k766$qmTvׄDz`/ >t^')"*,q00p +] '>pEh~L!ρ*CaS /+PE\^ů'G}t\@I8f({߽ӍQ 6`%^Yٽ )83~cz'nZ]cHy m"$-B69t1eY= A]Q$e>WHs5Dʼ)LvфͺHʙ]!roKb俵b8 K½C4|{:蠃2rexk}c_9ԅ =oܥ~xH $5 m}'JƷKUVe^zi䴭r-IFJIq,A#7a|aGM|{SrOM^9du;w]- L\?i#;!WLD^~8 y!si܇;9ݘgU; ;7怬 F` m_=B+za[QV"WU>ѩB+?O&lċ(Q楌EhS 1025Q_L{ʹ(Ae u TZ" J7 wQ%Z|ЍŎ_*;_Uk8W \4<9/^Zzdq1YU@ #V7HB`cKy6a 90x'Ƌc=֮]/Cml!UN2\;l2q5OR&[0I $4p>B3{۔"`USu=6)i a'c43 #c[Bz̍ ?UbB٘ ^k6Yuc(Ɩ~gʢ_02#׽ew6-ԧڢ^2b]H%5юu8: #C;4aA. &$4v&"Y8H2 .} ^(\/|2`e~O =W#P/^igClЂ ,~z!E0AH>`L;UF}tU]b+ A`Dv!, :EøA~hd=1ib f1 =#{c+QH}cF|Ao$IaSx:~st.mN`\dߍx2Gq9s~Ц9 t rl3`<,N 9g@+WOWb 4ۧҋS/M\vR`ׇVD2[;*NEJ?d*"o|Q Qm=eh'n&'ZSkΚ~р P!VD l _wl_UEC\Tϓ(ζ*Cn̶өa[I„;r$;@Err_+0NAd;}IrR n|~e_% $ ! Yo1闱/X9K/x^h[!U.,U!"M,y E^cJ~[-}ޏxzyg1HB"cN{/6wUMc~w^w%p9[6F'  0Tř <6t u{hZ(,?r'][w\vI'UjGm;5 MB8uoS#x+mi/p;d"C<,Zde3^^~Ywgx3zA4@Ujp"&0oZ]-~؉2eE,y\ Ou=^I16X%\b8ZspFxF:B3"tr[린&,_rVe k3戱s '4Uo])[/!,zSq1_wuݗkUg{N2wTU +fb#ȪѿA2o c1-'ׯ9)s__Cw~} \nݻ˧i{|C! kQx[rcQ2?k1K6C'dZwEw8& 0` g1 6Hi!]`XW ȜC'9/VEtqD["7u)r,Mןi9j}*X8 a I 5|WIL71 r#dr jP? q6 tBxyc€z-8q@A׈yI^ NPCKMyݘ@baI!aA`K8h z:o V1R޺0.:L6! \@I0c韤E0>ν :>ucBتu!\:㏟k_Z;'eXxȽY'7Elcn,M?;88L`B!?lK(NK#t"?aNpRK(z2nh $]_pY2I5p&IN9CcH. bdYGh#4Q4K\Zm-kJAqt!":afM%$=괼eRϐ0@Y|3~0)ac:B]^ iN;Q ;$pAr~@&|Hi;u]Sε|^g^.<^C<L@2 x~o %6x308-T"MQ;^@ ]ƀs2ICk#>\wB \v#@,9}s??옺rNQGa 蠃,d"acַe4vHIv="MEַƛHO[kI \9s\)s2.6Ui~]9m6;p.A/BqeL B׺ͽ阘+?W\g.cJ[ȗe+1Qp>95_iBdع ŝ#fQ'9&"c,`+;%멅sP韤mр"8llTv[B?O&yНE9yom/rȉx>HX]r0Ԗ 0vll("."1TE6t9`5NX;!^cS~4 Lq qZa 42^]tEx%Ts.ƍ# ~| 1 +hk-)N87ޭ;^{yrŽ"Ι\%n0mTa.R\q?? !y`sYߛV=HyBB,zbB ,Sдy{K_GCcPL}OW.FA #RHcm[xTag (2=Q<!ìs=f;o`࢟BJ0&60gnڽ?Wm.\$EY _;L5>M n<yCt8XߵWE3CEs Ttf1{$b,xFQ£ġTRx=.Zd{CӞMp'!BC&,-<1S~Ejvҟ4=@j. = p"D`dwOgN}stIAνM&+4 r;bo`nv#BK/yjy&BX9z%nkbͺ:kI)Wi'E<_wN%hᚄA". 3 C)/!|ы^lGsɦ>ZL%d,q::h^Raf0CGҎ% ad% , Z]pph~H $4{pH >"ɸCǖ*?N}htW"M-F4 ޛJ73e}B9ã$wNwGhHo|s 2}uf=0HH! L\ֹޟ6 .H2 c4ׄ;1y/ ,k_ 3H>SOia{d̕ &v~{ "6N[:ꨣrSFМ `v7&ҹreY e geߗOe ;"%aAЂoL9ХaKٶ?B.n 560(⸵cA5Tc ,/Mg Gnd3oo%rWcgVGcGqa{⡓7,r!2$zp}0 V-sl{B,jwGaoCXe;/vH\rW>be,!7MkI d~`bO:ENGF&\ri<,^Wx;]LƓte^rT)W V5Y>CZנiד>\,N:'Bg:64#b1% H`~.5 \L7x+_J l"xnvTvpG7EŹ[; Lm1ᦉVHMb4};Y=kv_8 r.,7)s W6&>Ao}1'FlJ-}3ɕfwSgM^dNԸ؆@YD9qgٱOzғ[2 v-i0N޿l} ?2{챖"dI.&xj.顐(d!?l,>'91ޝYD14dj˄ Oy' ,OW!v"s]ӮL7׃L~xNJUL>FCT I7 All3DIh34.]οӏ*b}ɡsmu!uڋ,C.hup-׀P CA32=#*'ShFqة/!3bG$Ȋ=EH~oi:A3$k@LțL3ywi>[9038?PQ6}[߲l"dNa׽uIsn/-P3IWN8c7Kcil(]m2 f3397O/)+O&^{+2&?/I { rܦ+b|;Vh$ 7ߜɃk\(8ySdBU5~Jd98Hgq 0kWՖ Y"x$"]V  !2EKd/x 2qdfḧ́ux|-ۗhY2L6cQ2T:77^*#U2K؍EJ38##%6BH ~r-v>I؂Gȯ #H(!.(o&bP- KL*r>Sb}٥ t v%>7UPLj2eMHQzTry;ai{41 RnbBV尔U&u;[B]pD()AhSF & l5\aNs HJW _pbJYtm:PyY0щQVQ x!3B[sRP̷exokktTJ< 1_t?]埣O(5-/8-qEQ@2aYǔ6Ї>BO?2]^t5I"t|:5zc^ne׊} rggԧkD<-Y׈Xm0sGۋ=?b 3+#}0JÌ>J[mzsM^ea?"iyWS\tIe?u8_HO~{1aQ1eGḷ݃<Y(kg{WW=#c< -Sv!U\} &* {va5 /GyVfQ3'. `KҿN<]e5*9Y)CJG|?ZiX*\ va/( AXB7hѶ܎[6.|O5 fý2jz²}spߒO(\Ȣn یH)[]ƚB'R\_}ՖO/31g}:Ʌ&WJTh` Vܿ':: !4.v M3u ܝN6#:\hNJߪƼL~6x4֯eڸet[~&' 2$Uau"+jx (NWp y9s9,a[lƜ]%!6)"һL+-l# y3;gϛ oIj%}4 xaJ< BB_А>p@=SK/.B>s*|ˡ΄(hZdp1!O3-D */Z5R˄yH(:t["e^TZwL=iN ᷃o n9  e}^']B9|WFCN}c2ޗ~b W6,-vzav(U=>`!^:q[ uOӁa~<,HC$?/ pə\ ʐb0wB> cr4@؍6|ֳAE HGcN3,B!|6>x`I\Yhbe~`8#?x3!a!8P'` r,0L?6281|M#+$ Dhc|o6! jBx{/ͳ ꯊP>Ϸrgfc*c+}sC= g]'3}k_[{Jla׼Cc$Sהe/ () I\B[(9˫ߒj.+%zJI)Ν40X@~$'&c/b0=}0@dݔx`X>К ``0 >a, Fb>z,:;8[ M4Зf~qmZL{H{쫯a=7nSJ0*0)U : ᧃkqwӝk{}tZ?\O?}' =c !†S^0kI[J_1Np$g|ڟ4 8UܝRR߲ؔsjF^ &lIi_:el2doWcQcyu2C a C]wͥ}pW&ܛ[=^7@k%{@@ 4XTԛRs}S5b'lLپEcT$[8kmo{[a$W^y80=ZI1Mbfd$t1 a܋;)dy̫qC{na]FXT`< *Iկ~u벡 ɖxuי1tM&#\rI۪Pv[I9C> p]U_@2-=C!CԽ y&ac!5%/{(;ˉˡGpbj*)jSI5k䤊',0 .fRif o0gޮZƻ]]Nogÿgp`]tE6s0\;s4 @[tEFyFE*ݚSU~?Ij &]̞B5\cqG.q|!;Tpg,3pM{Xv-whc($ƻoN;p?l`୆ ^̰=i`( 5> ISad!F,F]H ? Hu óĂ#)el}t`jÿ,K4H- E箰ȁxN*".|[jਣ,'{l!qglB D, =idDr =ApW40S`HJ=wz7h}7:5NRÃjI44^H]0\gIHR}Ĵ9bHb +3ىG>P)tWȄ/널 XWt18xb4]R>0К*x!{k7:#Ca1zZW_=3L脉SV/})x*44s xںq Բ4З^WUM*M&Je;k^*eb8_^~W~e}=GKQe*28菌Y@찏p0ɳP 'D4g?Y14amڿsL2b@"B,8VbǶA6b$ BO<޷ z׻f#U>#Α1bө~<[HK5H־oK8N?sΩ- lEo.( OmM:~v'MnnᆢSp4w3.iApaC'\rozӛ6lNH~ wTs@@@ ^ߣa'PPn4TxFaUpAe By*HIhIAmK8pkޱ$\Ga? _o{7 `̹ꪫ22.VeA-a;N"n9n4lr*4483'w&XSߤJnvL= ;=Y= ([$iT4fmMue]fnQUNXY(_j21ǀ |qz2^6}& E4+C;Ao2j8 wꫯNP95}(:쓞-I@@5~؈/Yh s#mH1N~ַf-o}[̑:|6M|9n,X}[t濄c&P6Si vE=:# zHD{o >fi'SS!;L25lu^'W\qEwvÿuqe}2R[&5\ٟo:']{b4b{suYFKV;HηQ" !^}ײd< 0/xFEX @lh__r'|(ys po'?)3|u@4 @s"[?k!j_eZEJegXr!F(wD*D `c~If\`nezЃ?XlE$IK#B~oo8|_'< lK !v33}q4_$pg< 'g>(xwg/zыjBkU %x4u1i N3cRFÊnWgycRj `qCL nd>_V],@xO:n>|`vW=.H0]Zۼ[ne>ӟԿ}mvꩧnl'p ?R5pM7Iw {}_nD!PZGq.(J韤$ $ ܪdUv饗:&xE[EN?􌭍Ƞ.'X2ik~=/|iifocq&0&k&}.Q `]a9]X]|+S $%ٟӗ4;()?TDd!d B4l"ЈEŰȢA H@0"HA""_U]L3Uz[~oŊv59W_})UMݻwMۍ2 dvY,iqeg$ɾn%@פjw8UT1-[4S/܆K;vz"X\gF#j虭.]j&1׉| l_.]bP EwyMAĵ /mF4)-T3+9@@iGrI{Fra%[ݻwۑN@ѦCu֙k6 !@ ^b8La˗?†uI!3fx=zs=Bvi۷ "U&+T4@_bҷ֭СM2/iɤ֬Y}?etd-iw{vZ~},"5$Z=E!@\0@|殻U3'':~0 Z9,޸%u.$ť*|xK*{rJ\TZP͛JAZQj(mFFULJ!@ݴcH*+{ECbɎ ßK/5_9P}7;,}'êU7nlFeKkRyc6_ReF_~itL`Νƭ_guV@ l9L]&R R4^jE{nL;P(Cjذa菋O@7J5P>ի'] JEN"釨4%M.?ͨs'FK"}֦MwXvv˔)"kK>R\ QSL1q~f.-&=,^zE${9t7bϒ K> WW^yKm۶6=.@Ϟ=m$Z a' 8R-,+Sըxd\ߙ#Z=H)2;ﴎhǏf#'1@@2HKZmΝ}2rJ/ ?r<<+ǽ}^,''һ41G! &AO$M@Yb׮]qF 0?IEw 6B K(FJRZ*-U^=Kfi(A}-#ݎ ('حZ?D2onlK?9wnTFNcaٳǦG?7-[4r<B@7_ߙ2diҤu UT*"ixu^ @ ]p$%p!{3zݛ2Z|yLdؾ7 +W޼ېO&0$C!kξpJfذaVO>1z߯_?o*THC0@ 68v?ymUQDf͚O>6JazʯPqĉ0W\afΜNr]珪0O{X4iIFyXb  ?1[4~m*C &9r$TW^uUA@(*!'}ɒ%EBD9ZܜXT DZx㶏5NժUժ&Yg)Q:m39, }GF6lNʕ+RR0'JuP*&-2Du5^$L߷C/bsm[p,1$n@JPPb!m/K9ur~L@ճ%ڧMf?Q)Iղeˌ* 1 SjׯQ@ǏӍ6@3j(3bSP/ܶ) :~C p>9` )`yyw7o\A=}#'NO?JW:AbZH"X/^Zw}iժݞ#J{:t06mJ8>m֊92a{@@loܸq)Gg- @@8#1W|Y%H5W/!I F-/9TfVO# ۷i/UjUڲ4볏"nv#'_ǎM:u.ifuom۶كxm]fA1#@ &}!PlYoGNV9r[o@(L8 vKT2T3E "/bl3JoݺԨQþCD2PiwVkrv}Eu0`YvyM2em,o[PdϘ1cLڵcг>k&L`6 KNNN@X W-'x"[oΝkf̘a~m# W޽mĭA7tQeF  i'ez_\!W=}E_SmsE$k7n" iu$ 揀?t]YFl\o4GuW;t_x;  Q#9$Q$߫ңgO@qO=l֬ѣg~V8 /4w A Rn?ݻwSi)Ri٥KSJf[oejXй))s{rNGܺu>bŊ}5p\'^\T#}N=\)Zlt:wl5$ AR&*>M\L·'{jWC2ɓ'{ҕh[ XwN^zn8ƏkCA_ROc֫W/hWC <#5G +שTYw6zVW˗u! lBy(+I5k}rA%ZRLW REH0KI:DW\i5T^祻%vc}55|pw 45kF,$VPDtnܸjTwlbFi5}  H Bu"z*S|fϞ=FU~2-[4rQL٦M̜9sŸtƂ/~aOn+5I7Vrew^8wy'C2F߹eJrŝMylzΓi{s!TɽyvL&M|OU)1Rd1%Kش 6xtz,@ _RŨvڵkg_EuXL֯_}m)b좋.Q#?㤇ȹ+'b";iqI`rHSJ12ia9i6iӦ$< &k.[QF9AL!@TN2XrTTSa$m햏PBd!4PH,ܩ2c$t:u +NbM$=a+C`v = "N@bzf(8AuHZNǏ,ɑn-z@T n a%EdJSnrR5UUV-ա_ͥ|Ц]XFRO۟''t%c_R B@ת|q9묳̭j>^{q <pQ.4rȑ|Obn[]eI*@iq_Gk1EIQ>-Zo@4 *Mҷo_3aQ'YU:p@WZj:uJr1"e?nY7K/((ӷvF]^xe V  һ/^#QTa tnY:ޔ)SSʶk'g6(Kkl֝ ]7|\j6l:J75k4[ߙYO@=;wy2AZX&xG>'ZYimڴN}ǖ-[X@H cv"A9k;QJB+bDZ1C ajrJ3uTw}7޿*( ENrʙRJ%_Xn-ۭ'{'H~LC҉0`WudرFd @@V?I:N40H@;w̳]źSM7d4  @ pen #_0ci<#g+}۽mAZ.hzq(I'Md"K|"0 4"VZGrhӦMݻɓ'{Y7`oRNz +!\9d+Vc@@鏱 Z9,z,ޗ,sQ! {Q[Q. @A J,uS7ڙ[)J+j dWst˗/7M6eG7l`<<6m;ms9ВK.v:J.#QuJ@61cq,tnǍg~m47.}>}0͸d]\ =z-zr"@鞎'A@ 9Lxկ~e>V)/])a IVO W\a>r}Ev,!E(K 7*k׮f۶mRѣMqv ³>kFoRdimJ"@%sev%Vz*>l6nhB"wڼysRzPӟvͨ4$;Sϛoi5o޼qUV6<](sƖl/i{zSvfymٲ۬YV o $$ ; A827[TTBN9{{teپ8dTꫯ… MnݲMn]t/fǎJPr%-G7M{a5Obi@SE#Fx7-'N#&LP|p$ *a l"@ X6 EO\)*$T]k6=\&yWLݺuM*N^xV\эMg}vHUQ ?`U$c_~'珫!tRӬY3?i"'b 퓉hV، @2IL͒!M @ܹs]_u͜9Ӗ wSt㧶2Eb"Y$O_wuVTT 5s?ArfQYDqHۢ$v<-9}g A 8)lfpouQOe_|->{l P%sS움?*`*G ghғpRDPnh1@ 1oj"S-{1;6f߾}d5 @ H3I{G\;:|HElڴIoāJ*YҘIlէ2}!P\4njϞ==gP>`/B%6lP@x9sO-2idqv9яk&_*u>l @@l8 4oР;vlN:Vjٲ9E($YJ $ZzŤ_y^_ip]W"s@*0hРD@BMPO_+Jz h .[L:զ)K@K(D"oJ6H#CyI+UlW(@ pf w6jH^ N7o9م1\MdǢ @ Pt.:@ zc|r #} @H@c#-^n3k,sQ_i@ @@8 y 5jϼF ٌ3̎;̂ Lҥuʗ/ojԨa;<4Dʀ  `OnV^STDуQy @ d)RNt ,$O`ĉgϞ} 8:v*Vkcǎz :Ըqƙ>}O#@h ?+#SN1z/G_:*ZG7y7a9;=  @ )`:_qg;{luVۦ[nK.qۨ42Wݻн , P^=ᕉ\uU1!@ B  .֯_G]P4@ȱ/h><㶛Rza@|76za(,YB"֭:ٶm[@FPX~vD/8-mU9޽{ƍuJc}3gԩ(l @q&Gam۶n9 v d4t6]ʪW@/"N8 @ @$@P8[YWTɮꫯbnOf[>B t @ 4mԌ3&#mҤIFeP@ i82M?$|!s駧͛71UX @( ]v  وIDAT@8A,Bk@ϟ,[h @)d@ @@TdӿN:SO=Ԯ]<3ffǎ޶ȅu֙ѣGucǎݻw7}l2 @ @!#@0?ѣkS?n> 𺪤{:u'lEU5o :t0/ @ D2dL׮]Ͷm4߿Y|yuojԨaڷo:ƍ*˶nݚ @ P *Ƨy?6o6m7o9zh#>3LVLv?P|L^ j@ @"_H=M.]?)a*]Z}ժU+!_HSc7 @ @:vc شM0Sc @ $GTcu @ @@P> g9B @ J]!@ @@ Yb @ @ 8RGW@ @ 8p# @ @H @ 0%@ @R (xt @ @a ( g9B @ J]!@ @@ Yb @ @ 8RGW@ @ 8p# @ @H @ 0%@ @R (xt @ @a tS9B{IENDB`ggpubr/tools/README-ggpubr-2.png0000644000176200001440000015520113571311427015776 0ustar liggesusersPNG  IHDRn0i iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx \U(z˾I }7TT."Ui쫋O_iƬ2LI~e @@]8K_]I >cUu_ h[roYb¬OGI @@U '*M @ @+=M!@U'p++FWZ[֧{[A% PqLJVp{xcv @@ HkwlH`bKKL="{"rPh5mՔ\ce>%@uM @ @5" ɯ  @ ;@ @jD@_# @ @@w @Ԉ$FR7 @ @W @ =SS• "ֹ7\jYkyt R/_?|v[{o1y5()+>:WN?39DG @@~  @ @@FR7 @@= <qwˍqa s=Ξ=;FYk{7;O?t̘1#vi}(z~K zϔ41"cs 'ĴizԱhѢHӐ;;;c oxCriGfv,/9&O^x+NőGg?яco۳}t" / J @`8^zx>zͧ;%iַ裏^L~#%{n| _q1=,k . .xߝ?-9iҤ;vl|ȶ_<cƌY\zڿ;gu=!&}{?_i~_IŋElٟ􅀅J+zU;H=ϒ.,N?*~j:%sLx㍽Fw+p|#YR=K\_̞oG/{o[~s)$|K_ڰmU'/[n_}Y&B }1`!@ _zc- @@ U?OYͧrJwo&]Og>lwJ7WD=]nW=yO }.RbV[ʤ{xk^V /0Khy睗8qb鋃R,cCz5]jL{;ZΡk{ʧ>HqS 4QX/>lMJ?ci9ꨣCBQ/t(Ϳ25`B{+>OfSS^{Ӓvgf 5\#O7ŕW^tP/ vewSO=5"ßnH~,ܳ%+_u}$&.%]j+Ci|~_'[6루*k_\tːw]~]?4ӻEX4e?l8e?̀b̙JK7 j&@z8l @@tݽ~|kHpIOο;%oE x;"%t%K/44 M[կ~=P? #[b\,ơ%ō6IF":^:7XْOOLLW- P>I~DEHw.ˮ)w}w>8^?\&ߒLI~JZxa;%0vuX`A{sҒzK19v8UorcޚBM> '?cl~t+E)1۬=\7֥lg0ur&"}Ak- @@bl*~dڥOz5]C?g#93.lttI~:  bOӕz4˨Hz[R20\KCˤj"MW+!Ӕ|3lLB(׼돖 @  FJ=ؘ:ujv}"tpJJ6YlYxWu>]ح}c?jH%=|/="-)Oϧ0U?(+e[`ّ>wqGdwr'wvvfMߥ/t~mـC|+O{#?_g@- .gV))7UFX_6I~x  @Wt|=]ɿ[tMo=ۗ^_:+wz3}ѐ-%MOW2l_YOY"/ҟg!vm $@@_3C#/ {'{=O䧤n}k*~>>=%?9ϟ%OӔ??-+OS7<6j>e+Ⱥc~ VI~  P{^q衇FmȒvz^~Ix{?[[[+iӦܹs ?__JwEz{!-X*c!Pd"vOkDJW舍8#cmmm=}L駟=?3<3movکH\|پ4M .(wMiIeRY ZfpV[b7/ ɯ! &pرcC_O9sDJCzs9'+?zU}[*}]-]wkɖo#Z&z_}QUF p%BFX п@==;%)1OK%?(W2o}[N:p>}O{l})OfmO:ےox @oҾSƂ :\1^=vn55Y1r _\νeڙ9ajyRW P6t|tަ4a" @|M\  @ PI~UA @*A@_  @ PI~UA @*A@_  @ PO/* @p ["Vut 9WHs-)loKVo꩕}^W[Y@Qb|}#krmC!($$@ŅEt⥑>:Z{?8yg;]tz  @Wkf(uMWL -E} m|VSb'=7T ;]mEmzGǪuw8#r 'Z)EWe PK'2 @ @`TJ9 @ P   @ @ H* @pI~ @ @@$R @T$Hx @ @`J)G @*\@_$< @ 0PI@#@ @. ɯ @$R @ @ W  @ T@?P) @ @@ H+|G @* r @ @$>@#@ @TJ9 @ P   @ @ H* @pI~ @ @@$R @T$Hx @ @`J)G @*\@_$< @ 0PI@#@ @. ɯ @$R @ @ W  @ T@?P) @ @@ H+|G @* r @ @$>@#@ @TJ9 @ P   @ @ H* @pI~ @ @@$R @T$Hx @ @`J)G @*\@_$< @ 0PI@#@ @. ɯ @$R @ @ W  @ T@?P) @ @@ H+|G @*4ЂʕW஻hnn޻kehmT&vX7k\㈺黎 PKvr{>yXhQL2%ϟ_CxMf5}] @@?0 @I~8  @ @@?~&@ @" ɯ' @G@ @ @Z$2R$@ @x^?@ @@NY?{i@ -{4^㸬#vB!1u' ɯ!aTEKcY@]H f]YgƼ6:G%~&@ @" ɯ' @G@ @ @Z$2R$@ @Hr @T$ZFJ @ @I~?@ @ @jWH @# a @ P-M8  @ᕯ},Xc.W{#Ue;,{k,'@@$8c{쳃h==6bUTU1L$@ @ H7R @T$*I @ @I~FJ @ @W0  @/ H  @ P&A @ @$)A @B@_$H @ п@$/B|S7[c]v38#z^N8!sϬv)۾cŊGAh쌶x @]]]ٶQGhȨ_%K.]|0碋.k6:oo~3>hkk+;wnϥ^[n%&MT8nxͷn~ân{&жܯ=b+V P5䧤NMnZ#F;3Kw]0>^*]?9rdV͋o9ӟ}뭷ԩS{N @ P*N.\sL744č7zh#H|7 rЇ>Ϙ1P&q'g&LՓ(/sN{qW_җ{^ @ @,5=/뮋%Kdrz ~^7[Yge*<󣵵5>kW㪫}'}WIJe˺N @J.PI~>|̯Ɨ_̙_-˲qqW}%8ӳ]˗/[ @ @@9j:Oӽ*^{էkm?|/MoiiYx<0r\+i!@ @{SBneٳgW]c= 뽭W/ }xz+b @(@M_Zz݅^}+^ozӛ;G)lϜ9J}[ @ @@jJ~oixGk{'+w 7d~^y-^_jfwuWڽXjUo#@ @} ]M7I'[ooSQҏ.ˤmlկ~g7V1 @ 0`7bĈ>}z!y͋m6{^WWzx_7r/%r~ @ @bݕ3<3/GcccW?38#/^{nq%l VKYfGkUiA[[[$@@vk]԰$7 @`Gψ^UMk-K'NXױcoޱf͚HK=iIe@^f„ S{yGL<9-Z! P3kKkc:B@E4L3XAr t`we8 R_Ə_+`{nP& @($p@kҽ%ݻߒ/mY'@ @EGZ;ޱQ[bEN;TXOؒ'"kwOr @ VfիWGJI& /z_˃>X8{w}iwqY{XB @)P7fv/7+O/{|p=ܓ?W\Qw衇֭ @ @rl𺿞Dλ袋?y=cƌx{޳ 'PNOOp~_~y;=Cٰm @ PRNSB ++W>?;?!744D5{@*;-qGz]3<\pAva{S{nr\\ @ @@oRQvD+<0׿Ɯ9sd=%5k:^wwG]ꪫ⨣_Wqfu677g}rַbwY'@ @e+Ip7/o;&Li tUeٔ>;zZKz-vZ~ @ @KY[Rr^7whmmw9~H`'x"{_z_c̙fkI_$N2%ϟ_jC= ӶpSE`T@gX##D˄_<-Y󳢣~O4~ mRsce玟6' @o8) _}6<6ԧ6];.^U1EKl3 P}cޙ=b+7,b5'PK5GC @ @$5^%@ @} Hq @T$K @ @OI~4 @ @Wx @)  @ P]/ @ @>$}8@ @K@_]%Z @ Ч@SG @%mήF;[NyNCk]waS@_iGUD @6r 4zFmvN Ї&}M @M@_m#&^ @ Ї$  @ @@ HmK @c7 @6I~x  @ @@>`&@ @& ɯ/ @C@ @ @-` @@U}jYؐ .бX%Yw1qcJ- /  @O&s/͎> @`ǒ9_=HI@@5 _&f @ Ћ$ @ @@5 HqL @zb @FI~5  @ @@/^P"@ @( ɯQ3 @E@ ] @ @$8jb&@ @4. PFҶ\,MjzhhQ[g=nY=\_ cI~ @`~7 w'@Zg?\=50]= @ @*$U9l&@ @=$=M!@ @U) ɯa4 @) ib @JI~U  @ @@OI~O{ @ @@U HrM @z H{C @R@_&h @ S.{ @@yNe+Ʈy룩w h[x,䬳#8 &q$@$u=:OŅ1w,ήEԞ@WXfkhټ:GE%^P"@ @(J~5  .|}n¸8reoW @CP (EK_$uo҃o)c @ 0]Gh @ @`0FKY cK,ok۟_K P&I~5Cl1rD6/ղpRU^ @2 _FlM @ @R HKn @ PFI~5E @J)Rꪛ6*bI5Иm@CFl`OWU) ɯa4jCs{R *Ri+c}X 0]T%@ @e\s @ @TRɪ @Y@_fp @ @R HK%^ @ PfI~5G @J% /z  @ @@$e @($T%@ @e\s @ @TMX @?|{Y$+=g8XmoNk/J @J$U:p&@@-쌶ή+]~BXKW[MW纟@ P"LJZ @ PnI~ŵG @J$ /j  @ @@$ @($D%@ @[\{ @ @D @[@_nq @ @ HKZ @ Pnr7= nb5fSC.OEqY]Mc-J*!@@ H+}GxpthYC(e @($tj&@ @e䗕[c @ @t٪ @U@_Vn @ @ HKgf @ PVI~Y5F @J' /  @ @@Y$e @(@SV3TB-X'υRttv'v>kb&E.+es&@:WF^7lc3%@$8L :; {o]7v)W&?}٬g9,Z%V7zh_H<n~dlߕFԡu8L @)J~m^ @`F66{}&?}@Q @I~FJ @N:jdI`V~I}UNԯ;zN @5& ɯ @_I~ @ @@ Hkl@u @W@_c @ PcP!@ @9 @Ԙ@SGw @77M)!WE jhCld64H! HLTƵὩ~#@`Ƒ2ar5&`~  @ @@ Hw @jL@_c; @ P{='@ @؀ @ԯ$~^  @ @$56C @+T]s @@m -,ɲwq䖱k/)i L-ym+o[h~5:V/qM+XI~ @&ٶ4Vp<Ƽjg5_ TW"֦*N@_:[5 @@?::|$+^ \?g8L 1It#@ w9?kYFK$*KqǨipm]%mns|Gv(ױXzbԖY+qt~C @b$;4#@ ] kCh5/ʟECӘ>#XY8k\c|+Oׯ' @G@ @ @Z$2R$@ @Hr @T$ZFJ @ @I~?@ @ @jWH @# a @ P-M8  @rk49X.mX PT5\WcCKQkV*U@_##.ԁ-1렧Hp4g}j8&Mta0 @($j#@ @& 6z  @ @ H6 @ 0la0 @($j#@ @& 6z  @ @ H6 @ 0la0 @($j#@ @&4l-k^`y[{|7.?`hjsR PD5uYMWUEW済u!\ήN PFUѾ\-k'k @U@_TN @ @  @ @@Q$ET @>Ik @U@_TN @ @  @ @@Q$ET @>Ik @U B!޶쌆 NT5e%Gn53!@@ H U+0)[N@e 4L13[AE0]Ƞ#@ @% .y @ @" H : @ 0\. @(Tu PY/=v8h-ޮ  @=j^1oʲsE{{  @@wF G-WvuE 0la0[Y-%kϿ5C*&@NnL @zb/ @:nLXzMl㛳=Cwϵ3zB`:V+Y Mv[D@ HK z[ =nD?-uW3:ZUٹU*I @ @`$S @T$BFX @ @`)O @*T@_#, @ 0XI`Ŕ'@ @* ɯЁ @$b @ @ W @ Vi'(O%01mVV]SCXժ@i\r`0b3* I~] N @2F66;o_hh#6߯R @T$Gh @ @`0FKY(άVT:phY[{LRضB5I~ @ƺ|m]+h!@Ԯ$vV PcJ*IԴ@ieUt:G+F5}qGkS, @vil/+V  @ @@) . 9Xx݃Ws̉~\tE79o~qgG[[[ܹs#}.Ҹ[nI&[!@ @$SO=w37V[m>h\wuYC!wuWvupWҕOȑ#}{_1o޼?OqĭSNݰ  @ @5?<lnnk&;@?ǧ>wq1w|~yO6'L7xc珧Y{l\}qǗ?' @(@Mߓe˖e* ~:tO>쓕{wg_;o?Ku:B鸅 @CÏ~ W#(0ɿ˲cƍ;PJCCC~ٮ˗GJ- @ @5O6-oabƌur- ǟ~xt}KKK؆+x`rlwo!@ @{2=8/n{QXme-e><@oE#@ @%$jW_N}G 3g,f $?ՙ~[ @oc^`úP}thh,ƼYQ<[qT$}_g#xAEd~ҥkp&- 䋯cmT@gWW_YntѲlF"@XhbUT@'iJ7lƏ_|zdɒQC{+Wm㳟lo#@B/{tVު  @M`?Ou]걏 @l@?]w.?y@ ~}#w5;bY}we$@ @$xs=>o{&oc{|pV(9W\qEaw Z!@ @E$nOViM7]N8)!}iv~lC9d"  @,]tf٧}^3  PE5{O5kO. Ÿq{^8ArJH*;3ķx^ ,k68H744Ĺ\p[WO?ehWgP 0hϳMcg' @j6o~=Pa<~H,ӦMQ쪫:*~_Žx`477g})={v]  @ @@Yjv>XT4?y}م)}~IOӿ[N @Uf~>\T|+'7jԨ~c̙Tb. @ 0M)eSR> @ P)5;]RA @% /v @ @@$%V= @($\!@ @%X @ @\_.i P2ūD[gg^qk{{a3 V6]msnp&-îXBI\S_,e? WJ/+Jo+ -~ PD] PGegxuu7Z}ZCuvyͯ,[:Z#{qԘYeg( u>_8}Fc91M?/GS @Lf4C @jAZE} @ ѣ"J8{UB8V Pw.i;V>4Wv }P3VlɪW1+ ^ Pd#-t< V.rԪ#@@4W[,oDt/ S #Աmi,{; PjKԑ @XO@  @ P; @ @$q @ @+ ɯޱ9 @XO@  @ P; @ @۲A,p˓d-sVѐ˕u PmKb uq+brw+~ @`X,^5ahh%dO`u=$=M!@ @U) ɯa4 @) ib @JI~U  @ @@OI~O{ @ @@U HrM @z H{C @R@_&h @ S@ @ PMU  @f3:K.W3]*EaD4~eMÈ)8 PRI~IyUN _9  0XƖI1Ui @Lׯ< @xY$Wc^hiiy~~Ĝ9sbw; @ @y$ .-Y=\L6-^??XlYx≒~ @ @/ TtH,X( @ @ Ju]>z +/q7zYw޹ϲ @ @=wtt)ҳ9<;F @l 0y{omcC @ @|%?y]r%q.]zj}DŽ  z[r1r;vlizիz+f @ $3f̈Åfϟ_H J @ @(JaA{ ~ZƏa @ @@ J=p%1jHszsŽƵoY P,/ƊΪk}bUT@I @{ujt M_q# U-]mK.tu(y|O~=PX"ۣ+Knˡc!@ @&P$_z|+_.ӦMMy @k%7pC|3k\'@ @(I|{W|c3gƘ1c"7+M>p @ @$ ftAquEz⾅ @(@Iᄏ>) ~A  POm.չnj_$I~z~ZҴ׿ @~V>sS,~JpǪ_  @bJU^_vI @,P+o}lf`C-Z#@Թ@㨭a%S\(:V>UUL+P$?us\viqgٳc7\ @ ?uaQ-<~k]m5VI~ƈߐ4RBZ(Yꩧ /_Wc֬Y/})ַ+_5jT- B Jw5sa(J@ 4MGN9{K[$I%KOZM }N;'N}Gșg}6ZA @ @ P$ժUqUWpec @ @@%Ib}:#Ǐ@)E @ @@I-"͛oO @ @  ehC @ @@$e@ @($ @ @e(=+Vo|C o~s @@I˗ŁEG\.'n @ Л@I&tM[{|Kso#@& tuuDWu皢i&DT@I' 7ܰQXre,X ㎸k5: Q@  P#ߟh֓w n P __<~=JK (@I#FĻA~'ǡ_bڴiO~rP+L @]b.~_2N;-z'@ @$?E{nj3"M  @ @@ TT#ڼ?>6O @%P{~lϓO> @ UPEb峷K[Q[T&MZJ{IidcD @@:Vjl[@_GKk3qA)P7k*fM7Otvvf׼ @ @(ɕ^z)[RBf͚XpaoqQG @ P\cL.ŵ5 j+A$@7$c^ZZZꫯɓ'[V @ kQS6 ?mɜj/$r1vE#G-2?8 @ P(I?eʔXlY+ @/l3#;Ԑ뫄41fɹ1V Pe%I@ 0ȯi5-kh3k:G *f @@ٮ/^8̙=PO^:b:ujpv .r  @ @Jd_z|_UVxv-+3{ @ @(t?vu??׿5=8묳b @ @@w]OW:xG#w1fΜ6'㩧ʝ{Yc={  @ @~J䧫>`|BǶnk87?AyO|qرc{-o' @ S$;Nk^kLS#F)R8gٲeg @ @} $OOO~7ZZZ ~{g~_v?d @G$I~z^Zګ?׽.ۑշ @ @(=K,"=zC0aB[ @,Zߌ'\.WC&mkhM.["@p $ɟ5kV֟E?l̀%+^g!@gN0a|4k@:ۖD37f-6Q_F{M 0|%N;z_aFV47Y IF"@ @$ɟ2eJ|Ys\pA\z饽4z*<zMMM/e @K$I~jϏN8!oUzs̉+WFggg̛7/~ǩm]<#Y:+\( @@IOvi?gW󑥫=\o}}sb~ @ @(ٕ>Hs={a?v8Ca@ @ @(ٕ|;s_}<1wxvmio}s1V[O @@ɓO7} CS @@I \e!$$BDA}}mq\fpbKeA|q 7"(bA6 k'TWs:u繟=>u_~w}_l޼A@@@ AΝ+z׻F}foUV[V9tЈ؈   '-ɷ?we7,.>7۷ooo~#yk    LL _|U>ľx#Tϕ{[SX!@% lgtMӾ]駟KO05kf_n#<"?яN(@E"b?, @eH%LQP^U=|ŋ= ˿YƕKY@@@@`$[nu=1c\xM4u_g^|qף    D&qIѣG@@@@(Ii`ߨcǎ tGdƍڵk'T   T@(IuK_<>[^W@@@@ 9nMH"8}//O/?iyv"   cw<288(|38Cr:ٻwٳGx{$ɸ|sիW"!   P%w|[ߒ뮻NRl78&e]&7pØ(    |~k_ZӨK,~G-@@@8A w^Wc=&[lO^~e9x𠻌ٲergK.Djjjj"T{uoZE-@` z6=C@@@HoN   @ W3l@@@ /9eD   *@_ϰ@@@O$!  TI~Nm#   I~B@@@$ԧm@@@ P   R$   @$b @@@R R@@@Pwy|_7m뮓uISS^ݿ;wq(   @Nx7Pwo&%Hb?wq~~ziiig@@@b Td}O>Mީ\ /ݻw}'<(sΝP| #   pg>W*tzvmmmя~ԕonng.X@{9>'o@${r7NR] "sq']EϋN<5@i(P1߰as9|ERԄ[n;A`˗c|?]w%n@N.P A x^D":EO<@`J }dܻ_|lٲMʕ+'tmWQ>8HD>O}===. @@@I|,߾dϒ}[Zyꩧܻ}hˎ;n}޾jr%o>    ($|.ߥ<|s=7>ٳenצMF*6@@@B(Ae_pB/K.3i&sɷ Y   !PI]?߀=wϟųwI7Mvuus;   %PIXc/Lkkk*.eNZCmv2D@@@`_Oe$l@@@@x' xy8b/\O    0^1%룭inn۾xb“ #g    /r/oJ";w]k׮>?R !   0Y191Æ '-+s,;@@@Z$ QK/ԕڴilܸqwuW~W\_g@@@bC˗륳3_/~!wyf]"   Pq0ۻO<-ozHݻWnV+>DK_x|C8d)   Bow}=x@~iK%7,_~y&@@@(䏓U~_ʍ7(nKaoߦ~z'>1ΈC@@@ X}'kb _p?۷ow_W[[++VKK'   )PI"ZRo?,   L2PȽ ` HLߋ5@)$@?& (p3*q، %g"D \@@@NI$    ɟ:sAO@@@8%>J|TF@>ewO_aG?GM?-nhtrAlL ·I ȯ @$Aj @NY`sQv'v˒ضlnT L&],!@O颳   .;۰@J,5gڃqt-^{%ٽ9F@H9@@` TEýox^LH׼ptw 0=m3=^#   pI $l@@@@`z p7zٲÍ\"!AR ۥ]R3Ruv@ @F6g2zC?@`!Iu#F 0\ZME@@@`tm؃    ɟVEg@@@]$t    0HtY@@@F ݆=   L+i5]t@@@HGa   J$ZME@@@`t؃ @jۢ,/Z'AjT-TI~N=G[<jt^ @ DMRBN&'a   HwdU@@]ȟNj!iY_|UH H'Ei@@6I*zɞI&@? @@@` 'VLZm2؇I~,B@@]'њ١ ~T=Z|#0YxorC@@@` O ;   LV$rC@@@` O ;   LV/ޛ@HgL )A@`: d7[=uo:># ɟ@.֮hAJH WpUR]@B\B&a"  I~1#D@@ h   P$?nj@@@BH+d&   @ 3B@@@  ɯf   /@_s@@@*D$B&a"  I~1#D@@Xa"LQ/p=xSt @$, 뿭  @_ @),pv+/5kʡdF&'~:'!eRDDkf۝پ̧\iXҺa6Ai.@?'#  02eW2V&=6= )Rv1G$?W"  q^-${ 8h^LhxKO\&%W)L<5*I$f"  PB/*EZ 7X*_0%;Fhb߮_ʐ@@@*S$2Q#  I~N*CB@@LʜwF   P$e8 @@@2H+s5   @ 'pR 0v.S+LqLzHR\/XDgO=@x'  p ?ܶK'9 TEFH ~lBO$!  TI~N   e"@_&0@@@Oq @(m)h"i3@@8r@t_-XUQ.RM   + d   P_((@d^]M5>h~yCt@/*^ ܋U CFJ ɯYgQ`FuCmknd&jO^^p"#@E DgKӊh'7@@@LHtb   @ Wޜ3b@@@2 /ӉeX   '@_ysΈ@@@T$L'a!  TI~9#F@@(S2X   Py$7@@@LHtb   @ *oȌ@`* h.ם-MK7hi>"-@?%@Bg2zC4@${{њ ` P\_Θ@@@R$,A!  TI~%:cF@@(KV   P|^%:cHdJet:N*mߦƂ_ "!C/M퉕dʤ&VyχC N0'YxnE@/083G:䝿p";H Pҟe;" {>lȵCă/Z{g!$ ?JIsh-@` pT   $x'pTC`: 4c26?xJw%#@IOn=G@󤵺j]lMGC@'@?#pKO9h3Kf; 0n]ow3S%Ls_5j[֖"8Cn}V='îgL[㟌lχ YARԭG%5x<&9S$&<:G_CԎ;@`}Kz}']v$Z3or𲗩(sgd!   ñM>яrw<r5׸=|sGT    I8ٳenצMF*6@@@B v˖-K.ͯri]}V   .ѣxn˂ '>r6}m|s)Y8,kC_z7S#ހ!ԶJO4.ސk&$XJl[@LVJؠ fbҐIi[U{csڲD{'SǠ쯗hc3a4Ό+*/)3VI9%jʹIOSrթ$b[PT۰FXͭ<9d{f;-i̴K"DTG~\K3R/k?ÓL~laU2o1Gz^t叏Lw| }<}߲!n(3sIx/~p@TN'B53[hЏ.ڞ{4\/9M\[D_83ރ ;xK{m$>t|[](2_ȹ?-'+Q'_AіwF7[O iͣL/V\irVt\$s`<&՚0;dIDgm)u:RQژZ!/+h8SϚ{"eQ-j%l\Ë<a+SPpC%L[e[Tuļt#,xpV:Vs;s)Hj, l|FhLJ5ZcZ,?a-G%-a?rEsssz Kg_8a[Xf \Y.cD_k!P8h a.p6b,LkC7cX}rn$-Sx55cS]ϛ>ƏAn@ 4'RgLcNyBk  @E1񸾭[ܻn ˌuR?QDn([#rIKp{wJ_J~U.m/f !Hg2"3CN#t%kx TJKҋ=g ^h^BY-, c퓞t MYv1%OWG"#2I_爆4:P5*{Jdqq#K&$ݹх[yto@%6KZTTT:)4IgӃ/YoT[iK e/m4XiU'\nox}۳N1 Dq3U3ixN\SSқHj:IoF?:T:Rdo6l6khqīgND ǒR?My2'U^zH^z1iޚ6=+q$u? u>"6WN$~a٪ͽ:]Y]/8Y_$#kHMIh:49z L6XTΙ"aGV,iN Ό'.,ܜ;_,3rmM$.X]@`rE:}r7HU4j!@`: u>#M\%k^y8`jj>_%|U+,SXwlG@@@ (1$8cݻwQZ/wg 1;B@@@ cW\֭[OZ:E۹s+vZ3' N@@@&(@?9#7oذᤥq .eى   @$c]z饮ԦMdOTo+    P q(_wuR_tvv+/;tw׬Y#]v[@@@"@?f{W7'-C?qw^[+L~D%L^ XD+L,KO;2Hy3R[?Z[kpz*}Ad:tu; ec˯-v͌Tޯgmؒʵe ۵}oŶ[;+:SdH$R:f5Iߋ/e1rtJ[lݶX?}C+?}aFjʌdcee(ioǰۑjf3,loo ֱO:f2cӏv 6fn{ھ{|_2y٭Рp^'߶/oscq~ؼ؋_J޶p{R#c2tu l>߳X,=xX,,o1mD+DzT*Q>Je߷G*о% be7v^nv-߿r*ܞ-->lα=rs}e:5旷c΅O&s>vOݟ1/7/'{lcHfu?ǿ?8٘evcJgyzsF-vy{#<@~tx% }M>OnzkktttȜ9s1]+K"Q3H}<6PwpsYS=jٰwl+U^wLOwyb>Y\_'WqڈKcUܹTG#7>rM9u}<YP_#s6][-o?WkΡE>_V"^*hgGW/{v dw9xXm_7]Nr}Onil_! O&%u/Z0[~Ƭ~Ϯ#Cvc3Ϯ'1=鷯o@FiqC|䏇:kϑsgȋx+egO}HAu ].Nk:Cs;Wv֌Fi>iF+OnwuڇXTc1|g[3埞xFvX-S[N ynׅ~yzi9uTˊK4j;^>yY>4(w]qr[ vs8ZV^*NO")wn~Qz)Dn}|W=Fӑ7:G[õCޯ󞔋ϖ/j~wTK9ڟZwYdMlCY#nΑUr㹫ՠ=6mPG; czl?vDO.{Ls,mb[{Iy\qr>Ă%/j_=O+\T_پ[M}˗HryIO yku{yzctYuz-ޫ'm鐗A9kZy5ܡݲeƌnroʮ*Ekdi]\&C]J{Tƥ#KPEb%ÒNKghћz8x dKE<|i8=ZF=7xLS͹X $\lϖؑ_I&qTǻRjfA&maDkkfF9#uM=eڷ6sDQ3 ڧ>m$KIDs ߩ6G$DI' $V3[A4RmZDJ{u4ki'D{t\Io̽D:e}yE/5| hu \R8R}*; N8ֹx%qIL P;YSKLo=FRCһ?R^IHIg#4>n;R=\ic9Zs+f޷8h<.}ӭZ+kz:?HÒyZ}HϮIYuNbҼ\聃Vn~3c[[mOO4xk_d/5s&}D|HNh#5.=jlN Ʊ!'zhǙTh8BN"vluSAv.Y] Xj{^=c^YL6}\}{_ _ݕr 7syV8KEMpf$qY_(ZW-\/ФT"{DkysSEx!uWiR>RonM:5y[ ɖ_ g+{X BM~N<}S:.M\"V1ŒvsɯpIN3F;M:4uZ]e-Iy$us}6Kb񘓽dc #Î Km|/kBf3K,I;ًۖ&vMO;j̗tlv`K^c^X_Z9=헶uP>V:}o% cncvLY"ksݡbq٪I=cXuپ˕vrCoЌmN_޵YW{vKKF}>!2#5WKeM+;[N;_ҚnP,r4%fczǎa;c/el53{nz<8jcyLOqX]̹Z^ ;zli!MLĉ o^G5b'=ψ[R:SqYUzRC~Xs'n'^Q#KŸדWAm{&ܴY;;Õ:MNݺCdݙg.uDiN=IWd>xPO 1bW"XrZX¾[ЎoǪ1?zNLw2ɶv-=['b'ln盹{NٲH{ozrivK,)$?$ߖl<2w%jՒܡM_ɭ1X/%_G浅b1fful`;;m{Bk8x ^I B^>IT阢{较c_kK,4)?+&Txò`zDϏFt t&s^^دI&LGok:Q6{!In&ݚAE=ِw%hiMpR=[%n.ᲁiP чDjk7V%ڈ)IQoK&}FjRoӎ&SϨAK"=$O&v~ZOev'!,FTX"m~v ٧cǠ']DN",߯ɜ& Xy۔& rƂiGt6i]AE4LlzBOT5-Cݛuu;4 <ѻM3R"\=1X+~kwądSwc0cN%`q&{i=\o yŝȰd>aWoMdgKzzB(鎅znɃwizrL4yN$X1iީD&OJ'-'l>vNVc)_`cm{X?;[~lv$뾁CѶI3_}w^d<;!fFvE$D_걣'gc̎;VjfQcڬrǘ֍Tj>7{T-w7{Ν񋕷vl؉8b[{IMOדyXronj)sD'UqLE:bh _p?۷ow_g+dҥWI@%$l)m/KUL+}11V?xzberv;ZFTa=o{mo#my`nZyuγٟlKDǼ'lƲ눋V6(oe,-?em;z~{eumʻv?{JRËmݙkbogw[~uS)_s}UsucڇJ ṲVpXv<ֈ׿ xSmus\~e-;i){ÎVVrճ϶cZ߲%Sf7fKv<?S6M.f ۱sU~/Z]Y?ZnƭG`Bv[r)o9<;[S`3W(oٽ c "cl嬏v7WZ}Pgg뚭*[֍ݳږ?.ȖZkp֧\¾VuK}[v5W {Gٸ,~v^;6Ҷ8u%M[VօѲ/c]tKOZA ݴA Wَhܭ쭭fF$V?m}-c3f9gcgΣmƶ8v}x=1XO Bl1zpLpWg"A[hҹzBٶ٧+w}m:'7ߦo9\vX7z]c.gc3xc 7룶Dz~njoߚ^?&~c }oFQ;4(Q0oe=$DqmYtKUB   AL   C$ʴ   @HL   C$ʴ   @HL   C$ʴ   @HL   C$ʴ   @bEh&@QڤcpH2'e؈LV 앮+[.xɆ 0mHTQ@iI۰2#B) LOҩ~  @\1-    P0    oL    E$(4   @$   E / 3    I~ƴ   @QHL#   /et Z@kktttjuuu>˧L˨IDF[YR-[}1kt hx|sR1F?=$Fn66 '?xG_vіقulöُ-쪻d! ө[۴ª~[}:iX>6󴟞9}V<*)7 W{b^č_8\Nj=ov~>1f-'zuk-jƶy-N1[/}?b/m+h76vIFEۢe=jʘU81vaB3hXXl^#ƈSo[R)Yjz<݌ϺhMq5u[*̎G DmwvvlOmC&bm[\sh!}̹`ǭwfVܺkj%׾t:Y*>+ύ_X|LVkj6-7l==WƖdZŶig4돭cIDri7Õ͵Ji_IO6;m+\rV>6 ܚ߷;.61\޽p2}Ύ?w?Wvg|jy{<ڰm+vsmܻw\vƇ <ضǿss ޵v[t[vJ'f1w=R}n6G,9sn];sSQi]c>F6m~mpu7. Q[c{c׾<9w{bnnX8wTUW]%1.O.܊z?76Dt@@@)#pW~ISCŠNA.jvum655IsssQۧ1hkkE O,*p{5k}C H{wOEc |oݕg?+gƬCW\!ׯwݻĎo_jٸq+v| 0]ϟ/vʖzJfA`: Xяve޼y]n4B@@@*@?Ug~!   0A Q@@@*@?Ug~!   0A Q@@@*Л3S&kd͚5n4{dT Rzy׿Rw|ӟCe24Qw(E<pOP 0QD(   r):1t @@@ OT   LQ):1t @@@ OT   LQ):1t @@@ '&*Vx˿??#G_HTG33cƌd?vlD ?_}գc;16gMO歷ޚƛ={v;i v"p*A?pfٲey{ߛv5[Vy;)D}QikkkƽoW_ @ݻUTw[ϟ/6mrWWuuu.I$0a yޱwصsu .tWs bǵ]Rq.Q!h?4+d] {How2蓘vBA6 pz<̴ּaѴ@OOO&cN>/Gl;+VػF^&eUYG K/4~#$cwތ~L0_F/>f?wB տq1޹@iUUq > !4P,5@L R&j-.eWFe )F@($",(#2=gf|3o5s=gs3w>/4KKWF*zE`Ĉa{ :'tׇW\?bty晌| :uѱڮO"EZ~2eJ떣N:rhÆ ku,$H=%'ݺue-X 며M@ZU*s=][=sg"gi4Sx׷_*Hq/_kvuNi=?aiݺ3fLH^lYgio{N;=c?ZjNR!۲ 8p`ʴƎsH'Nhdb9z??9.2֭K#u%F{֔fM 2$#aÆi!H@Zjcg9Qk)qo {C#<&͛quGd.] (Ib]H@9"+V0vKqE@ ~G/wƽquR ўZ\(+ve傹H@^//vMʏDQD+F~e?Zv[~:0㏯s9\l?pdgiӦKoÆ @ MV ,1ݼ{Dk]~͚5>E4QM*CisL(&F{uk38#Ν;G~zt饗F#GZ|g;e˟H뽪h]lg ֿUA}Z.6 (H FN9c?Cb?h"#%/uDSShuCH=o۶9!S>|KJ x[,(kț>V#?(9g7oÚMќvi:ϋ=0Ɔa2vs/իW]<_Ak H@Ew֬Y3{|j~@z*潗vuoߞS r/X>T?z^*,[z~Rw̝;5آ&f{V/ڪbfc$?'GyI4*ߙv*gl}4a„Pyw y_,, P%X6iK `;aO<1C.W[g}grB.zƿ%o]Ѷ÷> -F^%8zYy̙3o /Ũ=y}ӟg@jj޸k1;w}9KU|{ZAGHW: $v44˱QH@ўua?CjС:gdlOl7ޫq,Xk׆6ׂ͒ZF~~Mssg}`%B?Rg ~w1؄w 'jx␮wsM7k6I448\Y+CuX,NF׭[G"J%{u˖--2`5lt?nܸ(\x׷_4H;+hm9c?X6'C@v{gyjz;o{s|WxQe@v[u'uQZE4\Yu&]5_}Mk\/H@zˉWP\G%֫\y ;nݚX^B,0r@dgi)(BHʑYO<]g  IDATr=RAvjl$wj^E>=UC;ch,ڳڽ{URI/&[C {U8wIդ:8F-E+`Ǜi2+V8l>8I)zG\oN밅@CH=7T=)P b}ى؃:()zKl1?d&㍫s @ZhWq~z vjtg!{UQN$P'V>Q$/ l+!*z˓'O67|;MSEħo*^\4eyĈƮr [`ӭ[h0mϚu2eʔSgHSNq={t[~Au\iG!/{7WUUT:wҥnJr\H/@ZYm۶5 iZK2؁@^U9>deldBC*@u7Ek?1|tُO2˲=q M 8Gz-V7۹_gR}ϟ|Av&(@Zy.Y$o$@F^]2!P ޫ/bh'tR*(TuG#2]2srǎv^0ӦMK,O@=Рgg^ȐgFv @F>h iBu/D4YVjGD $կ"F|jkΤI2y󂎮ݑB.jϷ~{hvmtk%VgժUt,h͚5z$B.|8еSW%5kVl߾=R$ ߑ[]]]K"_Yϻw;H/< .p4(~ّu^. 6id߿|ZhȑE@۞ F~1Щ/>~کܹs#;9RF:!+C=)OG?x WoM:5#_$V{ַqr=w!DFԒ/r{뭷-Lԕ@Z7v~FV{wK얺֟ M ;Ԧ|߾keW $_>lEÇK6m~E3gL,^S -F~"RS P\̥1򋡄NZ4[JS۷o_]۹shرnU1ۼysu6>si$V{LC 0[~gV(@ZUIŵ+iu^|őu q86%Pk׺PKAk9%2ʄLը7k1ٮ5Y8.σuֹh(ڵ3 7 P1 dtb`<`w}rקR@"Iʁ @^njlbjjjUNyTGI&.G @ i+rA@ uQfٲecǎN> 4-r? fJ`ƌf _Bm\[jUu PY0+ys %p 'mݨ @`M~syR @ P# @hNj6nn[n1{g\|fΝ.o6ڵElzm.Z:˗/7w^2m۶5w??gZ'}0ydwL>=QMמ5k={yW'|b9xkĉݴy?s|2{>lc?hjƏ.| Zg+!@h2VQ+XFl… CGۇw4-^Shy7,2%:]橧2cǎ5555f=p8*Ǝқ;Zn{lSN9.M3gXze3n8xcmuf6m&L`~ߘ֭[4uhG}Ҟ|Iyqu3BC<}@@S^S F ptk/l^j7 u ~.MQ.̥kk-_2^"'?/{_F=ܓaૌύkTX9rd-_e%K}v @N#ܟ ԓr/zMI/rI~-~_|]y\Ɖ#Fnޥ{i^,;7 |r${w3$]M2%c?7xp2؁ !2|(T  &kD_CekuT.?.>;T>:dŧ[Gu!=׎KZ rKIw\Rrbӕ% ^ 4yi. L@S5]32Gr~d_4#4K.uzB S;4w(_K(W\CӧO8εoݻ?)VB #[;S~1 @l `b hʾ|J?F/ȗh$\F Wgd\K_rS^W^yE'_(}1c0WGD>| K r+>@h0[S @Y.r裏:cXF1d_{n'0gqSe[(Y\uUcǎ඘*D^9%h(d:t@@K "@(@@5^.ꫯvFNWbw_W!C\;yh,hR%k֬qmܸz9KVh? PpWO{ "0zhwum۶AOW֩2W^eO՗|/˖-9Zk_{|ݾ䓧~:_6y O#?bn JO.Ǎ|iz5[ɻ첋x3f> c7үstF39npΝ;M7ݔzZ֭]@ʉF~9= @h@ om5rRPgD~*3vXwyf3qD//27c]Yyr[6 ^{L0VQC/ujs  ry `O$/:u5~:i+6m}w: -Zd.O\Ҝ~ow:ҽEmO%̤̀I\'ďcӿS]]BJOPpFr3?4( P4Q@h}'S.8;=߭[73o}9S]gsǛ뮻to料 ɓ]@}ԯE RRN@ "2W^g*tZϟϫ +]f6mj&CC(T!@"  @ mrշl[p 7lذ5ߋ5g4 @ F! &' #_%rrI+ է555cǎIAZ,GˍAZړ?Ƀ><7[oO>? P)ɯ'}B1ۜuYڴicLϞ=ƍҥK'|_:u @*F~j@ @(F~IP @ /}6  @ Pp @ @(_l @ @$%B @ P0P3@ @@I0K…2 @ @| `ﳡf @ `䗄 e@ @@?8hoIENDB`ggpubr/tools/README-ordered-bar-plots-by-groups-1.png0000644000176200001440000042240013571311432021753 0ustar liggesusersPNG  IHDR6Z iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxU?_zBH!D 4a)","YaiB  ₂ M0"P"-@ !{Fכ}'o|;9gn @ ;@ @hpP#@ @ @ @\@ @ @  @ @5= @ @ @ @@ >n @ ;@ @hpP#@ @ @ @\@ @ @  @ @5= @ @ @ @@ >n @ ;@ @hpP#@ @ @ @\@ @ @  @ @5= @ @ @ @@ >n @ ;@ @hpP#@ @ @ @\@ @ @  @ @ @NqB<%̿VCw4 -+y;x_KcvB|;ٞs11pퟎ @@} s*0yx^WZGUkޢu޿&UN̙Z9MZw…q  @ @N$ DV  @ @)  @ @N$ DV  @ @)  @ @N$ DV  @ @)  @ @N$ DV  @1~Ɛ!Cn1n] @*=5NT\`ofΝ;k @@7]w͋<0v5yŦ,X&L'kniv*'hѢxcҤIG>h{wTNYKMK_W @@ \{qqe=I!PϞ=kWӅ@s9qWd![z~zwymx'Oq-o?b]w] XOwCTH^SO=BifiYf'[l1vH'N\sU}.A 1:th|3=zįlUbw/uU @@0JH,W G)#pUWeOUc[o]PaUyGN;T/̤??-ozѧO^fΜW_}uh4䬳Ί?6|8p`M{4JKbu׍o~O}Qnf?iusb۷v[;8L#ovi^;u- e6[ f5 X)o϶n_#=B4(mi-XŋG}t3}KG2R/~OH)Ku 7Ā`'mG|jQ '3Z,Dna1HknfbZ:-ȝ]  @n@u;t:NH5OB4S!=RfEk=9rd-_" RL?OYC3nhzDoC8Sbqie V}S 2I[ yR,{óW7bƌ,{E6k_Zӷgܥ>8vm ЀTD uy Tz__ѥK%.*d oyZ@NoGJ>=[~{=:[/bB†4*-f=3\pA=䓝\rfӣ`m`)t{#T+wU- @@- ji4B(m };^|矟eP0H[ /Z(;!+Mc%rz駟7|s#<<=mTU ;9YEn>zf'O6-e6h\P㎭;#@ѭū(-g9-?r+ %>!fH҂_iF-?Lz{^ڞ}m`iVݎ;lI1"{[zMy Ҙ={v6j| ңRO3̠S@Ԙ @ 'n_guJJkA;6 Ok5l 5*'>gqF~r&6BдmFzZه&>I'[@ :K{w _MwiFbzka JV!н> @6zbG\s~Gwۏ oFESQx,0'_XLZ)mi_D/rW\*{ۮxNZklm&Bm[mUv8-l\su[R?yv o'iUWb?.[ PCw@Q`W.^K@vw_[Vo~8"-КK}R QxcXV鱯sf5ZΧG@Ry2ƍkvB^Mҿ[yQm٩XZiZ*8ԩZ PhJz%cRXȶ̟?8grƧ(mzk=1u?Cc7w]wU4[lEsE@rw?b^x!;6Zdj׉Œo-/^*o-vR@Tæ P-OZ7#-+ļyZ}cԧ?x'6x%G>vmc@),*a,zHksH3Q[R@Q҂ޅZ*x/ǕW^~}.KTL sa8CRhf\⋛=۳,t @ @ |cJob?(a#ŠdiO!JoIr4@I>:(&MTo_z}zqqu3<뭷^yUKX(W @@ :iѣGgOɓFP+c\im}(++:Û]M -@#ЫW5jTPZ7ވjiͱh݌3Һci-WbZ$@0D @RIҌ.]d.?)WjO~:o;LOwN; |0(y K @F OF9sf(EZ(!Fٴ.GRÇ-ܲU8YKZI @N+ C  @i ߾&:({% @<֚s @`9W0-jpY @Dfuv P=\eoK=;cbРAI @h(PC !@zHc~jz 7%@ @Rv @@;+U0`@u]N? @:.`P @e WXa6mZWޱkզ @ZA`wU'>2(Vۣ&5W~өG5>WNmڮV-آZozj @]ch%  @ @G@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I{IT]੧ F=bz.@ @4@ no9 @ PuU}t @ (__ @ @.  @ @ _PZ'@ @T]@T! @ @@|}N @C @ @|@j @ PuPՇ@ @ @ : @ @ @ @u @ @@@U @ @+ W @ @ >:@ @W@  @ @UU}t @ (__ @ @.  @ @ _PZ'@ @T]@T! @ @@|}N @C @ @|@j @ PuPՇ@ @ @ : @ @ @ @u @ @@@U @ @+ W @ @ >:@ @W{k'سgZ >kOC @jE@T+# a^{?nxhJT]8 @@] xO  @ @m 6R @ P>'@ @- jH  @ @@] zt @ жm#% @ @u- y @ @@ @ @ԵO  @ @m 6R @ P>'@ @- jH  @ @@] zt @ жm#% @ @u- y @ @@ @ @ԵO  @ @m 6R @ P>'@ @- jH  @ @@] zt @ жm#% @ @u- y @ @@ @ @ԵO  @ @m to @yŋ?b[׮]*֖ @ @Wfrg;XOkXo-p @<VJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~@3VzJ @(I@TJ @ @X) @ @$PIl* @ @G@T?c @ @@%D @P @ @JĦ @ @~:M4u8cvUVY%Æ 38#}v1bDlYlIy1k֬v  @ @`y t_^u,1cݘ0aB*ns=8oqgǂ &M뮋t;VZiy; @ @j 4|N8!/^Yr!;G^'̂4sg믿>?f$93s{vmSL+?}jl; @ @@C@ӦM#8" vwqGEc9&?qcqQGe묳NLy뭷⤓Nʎ 0 k'HϏ#<2nxg /~ @ @*^|'/Z>_sύ  7ܐΧW\qE̙3';t饗f|ѣGtMJn9rdׯi14+oωf̫؝m9] n]t  @ P u} 2?Ѕmĉ~ t>;iivXYT5Դ}K[w?b7{wq];T¯`b֊8G @@ 4[#_im4;g-lqx./Q^7x#;ٳ?vm<]F @šÇg_aE >S~>ϛoyqz k1~8F @X ==kf|X?_}nMˤW˷M:5{m|ke#@ @+K:+ZkSL_?{ŋ0Mr޽{v[.lm@r~ @ @t3E]ݺu^<8㌘>}z92zHf-\pşM˴WoVͶ~6_'$@ @t@@,qƶn1Ϗ(tzD, T͝;Ϧe bt"-*MVq @ І@{9aÆiV}bvʌ}ݸ{[~V<\i+;7~;vl;7xcо[ܷC @@@ *~_nq竮*~feYg8Έ#+~ѣiQ{"> @ @"P k wz@m]6hٱpxg裏O<1ڵkY @ @ =(<8?_ Ȱ[ O qңb)JZ =&vgGO[S[8S $@ @Ԅ@C*>)9SO4)̙Gc6gK3._NM6=՞v!@ @,ON@Sd_cLO @ @j]? @ @@O @ @ @@y k @ PeP  @ @y > @ @* @ @-} @ @@@U'@ @- [X @ @* <.O @[@  @ @UUy\ @ (oa @ @, < @ @ oP'@ @TY@Tpy @ @@O @ @ @@y k @ PeP  @ @y > @ @* @ @-} @ @@@U'@ @- [X @ @* <.O @[@  @ @UUy\ @ (oa @ @, < @ @ oP'@ @TY@Tpy @ @@O @ @ @@y k @ PeU @,W͉f/,Bn]ćXO @4aҍI1oT=^j @ԒGji4 @ (TM @ @jI@TK/ @ @@9j @ PKZ }!@ @ U @ @Zh  @ @ P$@ @ԒFC_ @ @9r@$ @ @@4B @A@&  @ @$  @ @@P5I @%P- @ @r倪I @ @@- ji4 @ (TM @ @jI@TK/ @ @@9j @ PKZ }!@ @ U @ @Z^KOWfY *=6H[!@ @ maξyR<8j.[e}be.{ @(K#`eL @}P폑 @ @ŧ2 @ @@?FzH @(K@T @ @! @ @,PY|* @ @j_@Tc @ @@eL @}P폑 @ @ŧ2 @ @@?FzH @(K@T @ @! @ @,PY|* @ @j_@Tc @ @@eL @}P폑 @ @ŧ2 @ @@?FzH @(K@T @ @! @ @,PY|* @ @j_@Tc @ @@eL @}P폑 @ @ŧ2 @ @@?FzH @(K{YU&@p\LzufE5ŏOܼ"mi @jG@T;c'JxW*uҥ>D @-#@ @- *P @ @ @ @lPل @ @ԶG @ @e & @ @@=>zG @([@T6 @ @- ; @ @@ 5@ @mPm @ @M @ @@m j{| @ PlB  @ @j[@Tw @ @@ej @ P#@ @- *P @ @ @ @lPل @ @ԶG @ @e & @ @@=>zG @([@T6 @ @- ; @ @@ 5@ @mPm @ @^v  Pe_9lp$@ @JVokO&@ @!}gtb:UbmT=  @+3c*ro}="miXV@I]pQДyЊ=@hlLM\mPE$5Bt. @ @F@0CF @ @ wq @ 0J7B @h^@Լ @ @J7B,Oŋ?PKvVt[ahڛ#*ZᮽD7ls @@ xt{ܳb3X#ӡ^(CuZ*{tq @<V @ @@m 9O @sP @ @%< @ @@u>O @hK@Ns9^{+B||3q۲o#F[lM6$} ۉ'F/W_}u\uU.,Qoqgǂ 'M뮋k&Xi @ @-M7_WΟԧbv5X#^xᅸ۳g;zlVO¿v 3<3Իw8Cb)S]w_w9XmՖng @ @@U:zO`{zkpK@wyqwݘ3gNq1f̘H [o'tRqqwdAO|]tG-XN׮]NB  @ @:2dH|ñ:/Kod>={,[zgv.]dӌ  @ @z 믿i6|n<7߼*)Hzbq @ zP{5:AMg|c+V}C-SiLA @ Pm^܋.(|ͬ{M3fiϫ,6mڴuKkcԨQK>ѵh@IDAT7n$@ @S@1o}[WkY+~ӧOqefϞRԩSƷZI @ @@_qq ^{Sx|ݻw֫WbA; @ @: 4'~…s2=z(+-hfi;,jfZg?u6 @ @@2 F_s?vV\qǹs[iZf-ˎ7Դpq @ @ t(I~F9u- 'Т[Zgae-' @ @`y t(3鱪?3۷or-jO2NLcWn @ @&)~;v}_nilI /Pong/g6tv-\; @ @*)c=(?Æ 7˼%6,қ͛?pKŲcƌʥnme$@X?iR[a}ōKhN<;vl6blMs=1hРv`Zz;#Ə[4[o,oѲbA; @@I3~U}3; @ru~Rםw١# قiV[UTX\:2{w.3 @ @* ;hqI'QMfvs8䓋gl4 (z'c]w|;;v[qڵk92tRo @ PM |xg=\lC YM7vXw}1nܸmݢGYӴp g @ @*аM0iݠqg#K3~ [zwzjᐟ @ @h@vZJnK.$zmQ :4{ @ @ U6Rl @ @ZhGj^ @ @K %: @/Vsڽ_ @ /iӦŋ+|޽o߾iF@8G(pĘ-?zeYVS F-uf8C*Vkx5 @ @ jAt  @ @@8G @hP [ @ @& jM9 @ @@` @ @5Pk: @ @@@ @ @ tos @ @Z7o^\|;{WګՆ@:2E @4+0gΜfrpT:@^p %a# } <8vir-kWO @ r Ν?+jw8+֦ @ @E i5]tFuLW{7|3>_* @ @K hUWw}7="wqGL4)f͚gώ{.8蠃PZxCOo}޽{džn{G_<#ٱ{'^ze]~8իW,X !@ @(}|%y׮{L#^w\׺-HrJci/~-}#@ @h[ h1syG>J-;ul7 @ @r ƌ]yUV!C݋ׯ_Z٧'|rzkvkVܷC @ к@.PϞ=bЭwg̟W_}5;0hРދ/Xܷo @ @~믿~Vqq7Ǘv5tmEZ?(m[ousz}뮻9 @@gX01Ȋ"zO @@}B_~9N;>|x㎭q⤓N 806hb43>:4{[X I/sl%0h @ry{q9dO|";xG7ވ43(+cQGy:W_}u>ic֋'fO>o @ @ePtzm +[n%Wz=`so)8>Wl ;3K6`lv!<ѣ?~7tS ?/!Ԃs^ @ @"[tgß;.?Xs5Y?A{1o޼8cw0 @ @@y<sezRR'۷oꫯNk}#@ @(O @O?t֫nݺŕW^uQG}4|W  @ @ |[oUB41Ė@.ozM7c\;C޹  @ @ ̜93ow^KsN;^!\>|xֽ_L Amp] @ @%fmGo?U[8hѢѯtzwl @ @%ӧO|_q!dzoO9?~|Jq2 @ @mk??z@mY\x1cƌf3v8bȑ[cum @ @eӧLj#b…Yo??.u)I|^}lvԩS[o3fLC  @ @Z%7o^vm\6B/rH{wZ:G-t @ @`\]Zk*q`Ȑ!hF @ @N#K*Ĕ)S: %@ @Բ@n@M @ @3 :hW @ @S XSI&ǘ=P瞑 @ @,\Jѭ[O'N?6l۷o|CkVGF @ P@nܹs㤓N{8k֬0aBsk;{Wk#@ @h@n!wyg; @ @@^@iϽޛyq9~kFٳ] @ @/KǼy]}Ցf @ @#[|S*!@ @XnwF @ @zxG-lֱZkU= hN hذa1xH(8c @ @O^huoAu8Gt_җ2o~1iҤc @ @@% . N<Ę\4Ak)_*@.PS Va @G`ĉ-N:(.Goq)U!P7@JL2nt @ 57 @ @?@~  @ @ . jv{ @ @\J @ L<9&MT .ѷov|}];C 8b P I@'uAw @]'[o B hU#`8I @P; @ @* jI @ @@   @ @UPUm…hF ЊGZq @ FE@ @hE@ S @ @F5( @ @@+Vp"@ @4F= @ @Z @ @@0 @ Њ @ @ jQt @ @V@8E @hP#{ @ @" j) @ @@#a @ @g>३Ï JG ]4Dl1ƊŊ{A((BP ((c% "RDD)w3nٻ;}w˔s;S9s) ( ( (ka- ( ( ( ( G s ( ( tT_zgRիW=A33Q@覀nK ( (H:+?9NӁ[nX P[+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M 5r<P@P@P@P` Z+b+ ( ( (M~[owW:sx;7?}H{w:o?YP@P@P@X.u:/NOx 7K.Izh-5?t!׽u3H}c3<35iθ]w8G=Q;RP@P@P@@M7ݴC~؛8[lŰ4*=aziL ( ( ( 1@oy5FԧfP@P@P@P`ƀ.~~؛2Άnfa ( ( ( (07@cw}j'Ao<s=Ӹ6P@P@P@P@Y #z>/vk8{q ( ( ( Ki~:묳wݡSp հ>{( ( ( (0@:C_^}.oN>tq{GzCR ( ( ( ,TP~jZ@gqFg}駟 .HG}t:m#H뭷^9; ( ( ( (.kG'xb:蠃ҩ}7Z*}K%| ( ( ( ,T@ zt)?;wǦ}餓NJ[mU57 ( ( ( ( 5\yы^dMҁq{??}3I7{N;-m h ( ( ( ( XK.$zy-"}M|:C^tg>yg^4( ( ( (0JW_}uMozSSlժUOLw]'pB~W ( ( ( ( 5>lғSîDȤ ( ( ( tAИ,WcѾFm4t}7zy85L ( ( ( (@ Y 71p;Tvmӎ;uYF;P@P@P@P`Ɛs9;s~؛[ym6+ ( ( (sXin#%R<O8{ z>p~t 7.]tE뮿!v%CO:8vM'/D3o-7h~pI7L4Ͱwrtǝ6x_k8pؤ_nFi?jɾ_+niU^m=luoүvI\i?D}ߦ /D yٶ"m$~~;n?u_54F~ۦU67pEW啣f9Ѱ~t7h<^<:mqUFoVmyͷ4]oͶ~-6qon˾:n7|ϴdN^zzQM6e קk/\Ǎn6vF[2NZ͇ V"mM4k/95fs ZҪ- lf7Y}֧?}{_ _B7r<0}c|[Jw݆7!/:@#'v ( ( ( (o\ܹ33.գǍpP@P@P@P`1\t3ÖtחC_ tAw\Qz̪-P@P@P@P`04f5oo,ǥ8Qa KOt ( ( ( (0JGFİ7 ظT> ( ( ( ,12_ơZ7) ( ( (04f dI?OہtGw=3khLRP@P@P@1S_ȱok&^{ׁ ( ( ( ( ?y:+}: 'P {CZ ( ( ( (H@ >jC9$]~ONw\{mo{[zWj[ouo~ntEM5'R@P@P@P@P퀀)?{5~JׯN:i&2O_P@P@P@P@YXhJ;/7z뮻w9?5֘@k ( ( ( L)ӭϤ ( ( ( t]G,,@IDAT ( ( ( (RPK@'W@P@P@P@.`k) ( ( (- trP@P@P@P, ( ( ( (RPK@'W@P@P@P@.`k) ( ( (- trP@P@P@P, ( ( ( (RPK@'W@P@P@P@.`k) ( ( (- trP@P@P@P, ( ( ( (RPK@'W@P@P@P@.`k) ( ( (-6l9/W^^W.s.^P@P@P@,pᇧ7x"׋4Nlk e+ ( ( ([l1ua}lj?qz ^8wP@P@P@X'|ëL{G/L~^t;ܡ<'^tgI{Lz#<2qy>OyS҃d~ӗr[{ 'N:)gOOxZs|HG$}3I&o=>| wk0}-}9v<71gy["{gO~^,za /L{rT0tW=iU'xbpzotAUM[neyo':gַ5f7GUzhK׾L/~K^t;i٧׼5?aYzV=Yַrl \g?s~ӣ}(}ӟy3}LGr}yN;-YwN晾o:*gy6~׿>gɾ<ӹ瞛x\ľUFmT}Jsy'?%r.8g?;]|9Wivg/}i:r/zы]r׽.y9g>inntv0-{_;S澰W{p@13c[sSwbmaމm'ξoϾ`).o~;^Ԧos oxC{y{=U{kzUU;T&l2/*q3be(`Fs?Yg5o}[W+_{xԧ>5WsP>F ( ( ( (6 Z׮˦ ( ( (  7P@P@P@P`-0`OP@P@P@_W$Z/L`vH_~ys/vmW8=&Um[l1j*;EUeey'?y'~%NU(}uߺׄ)JT뭷s~+\(ϼS4~lf7i74<{`z^*mfޛtMvm?=h@zZey_ʟ} &ϲ_1\,|uױpG}QP@P@P@P`-he( ( ( ( ( @TNP@P@P@X E+EQ@P@P@P@ w ( ( ( (Z$`h-Z. ( ( (xB?Nv Z֧K ( ( (0F;.?3X;~X. %_V^nu[DGyde]҃th~sN MozӴ뮻6N;tgiP@:!p/}_e?w\b>]w]׾3?F5Θ~t>pˆP:9mVi7n~W*σ~Q~t饗=أs秫*Loyb-6lj&^tW\qEÒַu+\kMVJ뭷DYþ袋4'MTO~/Oou[W,6lih4go&g:ӳ5i*1'1<җ r%3X^wmyY&oӯtndgW?=.GE;tI'%JA>Cc w^W;YT.wI}%_ƥy#&MlkDO?ƨ2ٟYM_UF?KtPM³?ݳ͓T>IOJHl'|rO~ywl'>m}&e!;N~;!w\2)m3X$k[Y|s17)q OxBz{_%?O}<騣4Z2eZIA4iZ>z0~ސ3W~uN"ᆳ;uir{9@Ц62/}K< Q }3򗿼q0:H}??GLF3<9IL8g}؟ʅV=q#]zWo_O 'MO<d6{c/yC&{﹉6y JSN1i1m}uy]y+&|%qs$'YܬG?'&ڴIz9g/} /'u@ vX/@C89xCGQ'Fm4, 8Y5.QF^ʋD^0rE^\|"3Az41iҩڋH|z/j:u/("4 M=a-g[W;81)7zx+zni5>mӷ^Y,=yU"4|m5qdxM}cdm?U{\7p-R ~?-:b7t#5}{qXFEsAFMs.6^ԪǠ|.j}*;lЪM Uu:2Ǚ: nqSgw}+h?^M+Mkr /n#E)M L#@M"g4Q+nw[FIz B{+7c>T3fr K9w}ĝ 7MΟ`[N. ]j)˸qN<2B ;N(=ȵKp&AGuկ5xz 4JI&` ]ƻ;jQK$j?5j6}~M񖷼% If[GxZ2qq~ɗlBFΤm)M5YGZ?О w]QufP&ou>6y晹ͤ5fTLKm7>~ZlW< ܟ>>N oL|?p/Yx暨 q{!z-nQ}*5;껮 HM۬>~Mg#G+X6@ 2=myi"K"O-fBy9c*'$k481hS }58'fdgEt/yvp~?yteW>7} #B~^;.E~ǸCzDĮ]`@D/.zF/N'ZYu.w _\ N2͇Z { j4-#-:ij]+>""5"@d8[cQ_<򑏬Ǩzu;(H/ڑSQi"'9E{;XYRd&uE;W%qa\xW)5+$c|D*U9턉j>q~o_u޶>#7;Q>$j8`^^⑚88W#؋`Rc*.Tq‽dl?;SUx7NL(߸EpPawUqA"(C_ԏ%YNsF2 A/]#D>؏{8͵?DЦ5â{x)OyJ/9cTIƾK0ס{2Pӕ;ČGc?SZ^5umqeplslq{k_ۋFo{DS}ivPjp ?+7x *C`ţqչC#پʲpӺt |no5nZԚ7hMG{O}S{kMm -qw_Ӽf95{:nڴ&p׎A>6_cU?R(jVT;\. b~SE?AFd7͑p5MҢ'HPN\q Dc5IŝPղ>O4O~U=A/rOpA&f# wT)lKŽsMХ[˿<,چj +%D@$K2׿(xeZc<~y1/lsex%8)6u$.D>sL0j5~oR+^/h0w@!NR?`Vm@Mb_`c07txDx/"vFQ{sɺ:ѐ}J`z}2Ig^׎A+l>^\{~e/ MKu8fN0rعOqW8jjVH.hSa8O .$ 4F' ğwݳqiSz;6QXr$(èH9g/0th/24iSNʸ=(.v2m*'*$+'MѰyvay뉋Ԛ+'<3${\xGv{-Mq@6ki-KpaY#+RZ1AzITa7n7_E*wҩI$|y]SsO]pUko]~]?6pXD,{mE{mzؤƙ:`|E/`FYq Z?6 (='vx)]#ӾIDvPJ+KF@"Z$#? 7mpictQH*G.ߨNTzmh#Sn4GD)m=ܑ"hVhCƈvx1xlF#Fڧ'hD[SHQ6Go-9=7˞enQ noY8)Oq3E#K@y a4KޖrçL$?h!4ȴqw0wcͅ-;/qn_\qwvsc|4ȴ|)'7֦ζB"w{s7ӥ,A \n鸀jrQig塁iSY'~ܗzhWmiPƇne48i<4:H7$4_3J-wZ>p$lfܴl4ͅ6 8:qqfx<'vms'MI3' 6ַ?]%#K} iǽ7dMQ&O=3I*Ax|ɆKT!hq}[=FMX6RUue;uSLdLj-g0?nHsC6q_uy)]?񛾮 Υ8F6J)Tsܦ|E |U:Ivm<:'<@, a>=5@CPlPUAޔ5q$ZjcQ߬~dɾQ2Ր:JЋ .u9x.BygE6qj@ 3M ̒cSM9ת)AOk;}Ѱ}2mZE}53Ime) ~&aeABD1ԀOl>6)0/eSI^ocP\\>Yo6N&X?z7Ak| ܪq~ܺF3}֤E 'RNz IwsqRUO#MSs3<Wyv G\ lع^&ڕ <~ꃪ8rŅc4oJ[/葆ei1.2r 4:]ܥwp&j6Tʛpq],6HhSi3)j,Wz(FҞ G~дiղv,RjyaDCGS}VFz0*:Ih/~cWI)8s8`F{4.$uןAԮ0] Aq򏏃9ESq\T D <p4I%ى%.'\3.w=p6 o5EM zױqGODO^'$R&]O~zuƉ cD#d,׸ר߫wS?mw]KfSB೔~rdV~74J^/.&JúQgh7_f&cw,+2O&Nt鎹kצy/z<4^øD傅$=(I9QS"w^Y.)@/jgL@h\b$WMUPU_tXo醜iS}&hМOex8mbY `yq\l|O¨q֠)yܜra}1%1;_G?z\cJ(j8/&xWg1E~Z#8"{?iO"@c`YQL2l1” o}2qãVc蕠t.衖Tn\t@SzkԞےǨE_F;3]W7fSiYӼQ @öEGq-qqR@w%Q NT/|`Dpi9Q;tR;wj\DCcjpgci9,M"o.K=0tWӌ!]as8͖;DRK M'hw%=h9d+pN+a="q"vVNK_P-)Wh[fI%olрm(ph88տL3B8hݏXVw8ī'mҼBkE=8>?9X])uy.r8-xM.H/L%D-² ݨYO4hc533DmX/X~.S{~qTU3mHR R.ה/pO`,bq5sq^BKjo&x9쪛{&Q3,7z*='ܠ^2󨿧fپJ{"zdYׇzu$ <)sh(kqE^ȹX96o ')G}\̋(룤x,Ͼ^ڍ[h]sn~muyظڼӫa\@ܰ*9hR|-yzmzP5Irٙ$D @nړ0 +mr @[Zҹï1}y2}ā?hSqP*MyL>I;_9uwxkS^A({dz"Q'4IzO'~8D0S<7Qk2yexzm2җ:g">s!I?Aԧ a_~ąintDErE-ŷ?*20zY*e6תm,x/іI5j?VzꩧVAzGpOKYk0jR+Mb˼I e#Hך&j+nK}37W7O/P{j}sS?oƩԨcK1h܍&B}M^CQc>͕2o]d=[kPu?_#dK[ֵw.20.X×v:q{QlnXy8Я8_@4c}+ Ɲ:).8]2 O/˱>〟DMRNw|SLW'jFi#R\.$w=yUxS>׻bV&>}=l6Y,zK?Kmz2Ep9XOVsNoG)V%͚;mL+xD W}5nN/y~MozS? KM !? 9cѣAÑ5(Q`K+'h顑61mz3: ' wf?<a94Ņu oٟYAխA=!c]<)OIQc)Eeuy٤=ھDz5fY:>"j19璥S2ޠW:젡.E\|.]o4bs8\+sж!y#4;Np#E5 blsN*y]Sd,ѓS'AŝsXrq|p204?d-9fy*=M|́$ds''>bl5 8$yP⛓B5c:y{6jm^8Y/~i+ͅg{ r;^uO0-g.NH䤁='XCڒӦw9E̓|BEӼM+^fE@c]7 \7wxܬ Bo%Q>A˕Z=j1 ~},=y5vs2G6&~O8c3)״yqT}dtκ'F,)d"q5Oot^K!9NPw7ⱬ|1Z+\WEGyJiVºdC9<^f/@.K ,#Cr0@[=q.!ln23׵cPt govIܤw7uF-;~0M{0r{~Yܰ6:-YĴ NN p?qqNuTi|9[DZDxM\x 'Sh>χmSObr.,{4f\G$64Z4n& E#CcPuzK^2t@ !i^!Ӂخ핚&SbžZ@ nSf(;h;ߴ.)Ga)ꁧ&x6r$. SӑH82x,ɟImGCj\ˏ(' 5.]YMW@j~ˇ6/9FׁGOyz-Iƹ6~9H܁<yGGÃ.8eҸ]Yy,sǏXN>O8yPɠjqI=]aNf8Zɣ+T-U專;f'qMTmg^tD+υG5yMn$z5(E\ʾZ9п.qrp훓hP7c#&MMud?d1;9 Jx~F4=4ΤqQI(w/Qk\fZ= q~ՄedԔ"grmnGY?(X.9PIA}yJ{N];-پ&Mu ZJdHGM39o"7e2MyigqLiZ@MoY8z_4#P,G\eћI*AN@O<>'%`ΉF+#Y*: FdXd$mO3,-O'& qDԀ'G4ξEH}S=:nI \\hDyy, a>4 ]`O}=l޴[A5hQa ߰ U0paiT 3V3iy(mI~ƴOGP7ֿ͍{A_ INB%spLe;m}}mLs1y%MI+jzWq! w.B0L6Ol[t=׾wg{q2ދ^/n­q@X/;1ru3r%eo韶IƉߣftLqAҋQF^qًk-:]kZxl5)qQ>&_+u/t ًZhhm0c̤XwyFpjX)cyZsXi}n-9;~G9F]2,jy-ɟ=-^٣xL0wOO8Qk&FԄ걿+^#X_߳.G'~T?*u[2i^#Nkt<,n4,u0zS޸ydF RKƣOkLO@.8d]Iqc̏c_ž^<1u(?fBy$uX/v/Xh夓Wsr=@U?hߡ }ܥE^܍GVBn{q(/+'q=`.{ s/|U,qw "c=ژ'o +3.n\iHjOݲmGMRA⥌ SuT̓o:mb_=&ՏM@Nx?qHe>s? { ?)yE ,7$89/1}sWGz4Tlm=TwNUĊ4A?9e[D-r^"lUF:Jܵ-U֣Q6Fh5aFo9#У WPBvXcUae;7wqW'<0*q0䱏683⢃5>w&yn"Qa7,Dc[j Qh4cP|pR{,+_r&z[2'4(E[A08eIMVjEgځXuH~f͒q'yN:\('jQ5+YQJ<&@7ںeQAPX:et Qߕs,Ӽ.9WwM'Ѯ\=5YkM"_#Xۖ25w Sjozv\zŽTӦ:1iG#%) Q#A>g' s[ΧZ,i뿺_57w򌓜/p kP刋(g{`V[f^q"vL7G,;҅|IQ (&OgRiݩt0IvTRroZ+_~Qr46Oʜg!j6ҳVqcD|gQ=_H+$,ε[bK*ӕZQYɶα;%~#tM+)pa=pE-TJ-]y$~ OcJR *ƥ:*uz6me'zjFM0a DŽ$Q;7qf(R=Tf1LCoYtv"1{Pzg!c%^.Andv[Ϻ"EyQ^Yny Pf DQgmAh{'9< 4NSh.T1D^3>&q;~UͤKqѣNX仩˝R [ѓ|7zƏn㑎\S ˑ "S4Tٳι>%sى;k+ݖ GgS4>rq7(9޸f W 0.M.6 ~ Ԅ`P6Pq0.|leE1n6HRRwwLі@;kFf h_ Q{}=ݦFp2EP%QspQ5 `B~SL߁5é:v+Dx/ٸZ@> ڀj72p n9qᛌq&9S[ce& eW_-U>'jO2č=إxd+[tT"RT5hI{smw+58W:1ν>yO_i|:d"^]x{]]P#~U;~øY\*w!$Q']y׋r#MgmG,vZy>QI֎3@TwuL 4I/!Mݨ칳O#sӗeFѝpiqj{SI̤"(_W NzUY/Xz)51MSqi;v0Dt=O4 Z'̝9j{p'/.sÄI=ځb؟qh\%~#xŰ}cPeӋu9YDMΒ_Ȋ# g;OGQ#mNq_JyOVpX4VfI'M=,R_cׇ {9 wQurQ{?2 DZgPAfԀ*"APq16jjXPI+ REc𢜚;꽕%˾bmXG2 Ka|~C1+]vٰQf9"ѡ 6e^5^q}O'lM9sRFDv2Os_2*?=qs1q=ͪG.`6/w+H6рcBi\P }*4H[?HMLK^?x\q]K4 L/<"h5 %#a.:MM9f;7&GJϣMe+ ll2EwmY~1e0m"SQռ(ؠnKyǽ6]Wp{Vɋ}Bٟ=s4cP)/A f# -W$YuF/qq߲Ob]M,_Ը8,yӰOş%GIq,_<ʱ774Mq{*дR.JWLK0 g8A798uƲ7:]ꆼ=x42?q%HB*Ccp2.jy;pM9\Ɯ*F%ʸQ{pԨ/2q,[ٯv.E>];ID+qݳ릴%(F~o|3/Z_6^/oE4;zhzW*y5<Ϧe5QèT40j~+u^rU\,weY܉͆h;80!:|D0$.V3DJ@+!ۥ9<5 DM\;e~M_ ۠|=?ח`>be4mCMc=pEjYXh?EP,#8Er$.4K^i뢤zwqXfXoy%:d?RW^ ~ߨ_&+m۔*yGC9h(5 vqӈ8)elR^s]$ ;{{ݫG6.Q;}W)o}4D8֏_loC(5Sȋ}m?׿ %xE ( m%)VZ+6ڂJMIBRT%UC P4T F1OkX̽:ua<9{OS/RیNmH_>5SPm=<[wr1w] Yֹ 3ٚ3E t֧@s.߼w585&XP*e\J#JrUB9TrR! #Jz7- / y'Q*2oe[gs'ie48lys gg]h= o+ f֞0uZ9RƼ],4oYG u+e|EaauLZbVIwo._D*BfiO>9<2 ϯq œ:=Իʼg\vZkgZ~r@0sDtiFL3 ȶoE鬝{gZΘ8)3S_{t5i^Nm_#jaØsPx׊"ӊIfci!%p]us܇(Y+%0Q ;ż>u洛#8O% 6&XgOeδG3/z+TיւC2Վ.; HP[RkMs>cHr-g?;|@۾lRz(lDu]̒3_ck`>z޲~ڣvd ܂w>(9>Ioϋ/X6V[50޶#49/>2sQoLh*Yhykm~@g f;[$u=iw Bq̪ Wbz6MN["Q;&j&l+Aa6'D}@b5)01k7Icㄛ 3'8ч]z 3 AcJ1 Pe#I[F_5AnBsc5>(k%M]^3CJK{mDp[k9)YRʽV$3(|IF˶m9EsFHɷ:B@BaPPAւcypKktE7kZ^5B|p6k`AGe>澚~`v|Su^})ad׷Bx$JmP-ZO}SĺEk8V܄ۼ-Q- Ry}fB }mev!S&.\[XH2WB9dA}8k(D Z PMs\{Nbnd4 sZ~ѓfiB OR^)D:$KDj/g,/|Z'X* _W Gzcnb3mf~&se[|?Y n=w~o6\&6P(OL 3>"Ltp5(>l¡=#L+ɉfB( L0Eu 4~yxY`e Gk$#myIz71?!L7_Czjt}j-$QsTUisrn1CHI |nAZ:fϽܧYK=Nb;!04miM?RĉXT4;ݥo*S[IO=7czGk?\Ly{gv8޽-pz L9JA] rnsNcm:ϜCD'L1}&b?#km8|rp7kE@FN[0"PKga%O@"TۻN,=ʙVOfhK[:O.] .dPl+ MlӻtGf {.4*]H̻u1*p,|]va6DxՅ9bBkԼ6{]~ TZ.Y EAz'~{m P.4y~>C 3.IHzw~ꧺ|3]+i*ͻDL(.LH7]lχBE(it@?z?6 {!Y#4X7PBhk-?_k]8̃(xh:w)%37!OR٥"Fsi[  |y9 ] %%_#:fHT \ .Xe^" ]Š[H?(6V30(~S7]z.thl- !|Joj_PЖ1 4aªf?I-kOQ@- QkcAֺBՅxga[^c+@O,;AM 2I@3T {-sp:ytRޓF8;]9^@2)I?<]@8+KD)x9ISa3ֲQn]#@u9Yz&]8 ]ʺ#n]8&[[φpc †m{nÝ$YB4E[j悀NYCh!XKuMƐ9oc&/̘}1E, ~8%" Qp>#G J]r> B7y4HԅGϴ\Rs>4\=g"S#rV~CedH斝>Nu齣S>ˑu .YqY*a%ؒȺmZOĽ% ]goY3a隀N:@ ĐgG1ۘ̄M)3Nm󢇴Py ײpLQ= _Eu8JXhUK98 mEF, ç0MB?iQ_L uڛPy%R~V%IVhdMe#3Sv)BV@f3h353S@3d9&3hQܜAls _C--3A{6VKe5!^ ̂@Bz)y^]ׄNHS>XԬǦ;Ȟp ӟ浌#T$ ?.eEqlvJ!ppXPB˿|1VhmĆf69gVSk5󚍿hp~Y4o #(fp/a?mlh3}_>vj1=Z*Ya#xi2U4 8G޵zȚl{k>J[xҸ^sssD,37S'Ϭ;^L!ăxdLT筫K[oP)!=)8 Xϟ66^ %JHCXTϏPoBt5|S9'B}f-}#!c XCCٟYk"< *Y왲L4[wPK+=ϜkY k]% ̨)ρ-ylwuуFbmTC{hX~fY.SheyvT3kpnoޥxa?wLwx ܷ%`:4 y@||B)sEҾͥ}{uΩ鯯mmXKͿ7'HO3#z-oyT9Huk;LyG{N=fc{kJgϵgpS7e08u1Xk_םxoo-H.gYjI{h灄5fSUCҿ',t,:~.6py2갤Bf ' @ ..&L .;7 r Ml; Ep16vE]-T,t!bCӅtYq R>=4|}Q}96 %I@=OޥBR Lm~q|fBH\~s*lh*)ɤY`:a f$}PI o L]V}}[>v%n?yָn0i7' UB ;Zt}p-T_E0-G <ҏiysAT2{b.vrv! *R&!ʑ4Jr|؀w= Tw~`"E[ 6d]@;v (uݛ-R>.̑;c+ɼ0$ TLQqW0e>Pva.8ʇ OO]B;](JөukX@tx;0'{53O&%on%Rhc^'ASuٻgZw__2֥#(,wAR¼qiOc_jPzt.|ySؚTP?Ho?¬rOy^Z5dEv5ֳk%Ff ڟ򛥮cﮍQ +i +B@SʯW@×Hac664:\BWi@ s T9IZ}՟6mߝte bAV19~Ҽ ~s6]ӿy`H$H|b}Pjd?-!t!Ac =f64?4b98 |HGNwx,?1 d2l} D[[\.me]M48!7@ 1?N)1T &nByyg¹t5Vһ`K"4c_/Y&] 7}=@<-D~}-u?|lSw@=--uu:W{ӽ o7Fro\/3a'ua̤ T`-ZsX E\4"1:Ǚ~ϤnHgl&W]daƎM E/ QK8>Ʊo#50e٘F\Y8S}kyyjqg/br+xGd}֞;BL>8`m6W}^D,̿7~ ̗u^©#" đ1OfY S4uTd#G!˺%\ϵL23:ci+"o798_~~~s᱕*RƯuL]Ş Cobz1KGF1ADoL5&6'5zmXa~k@&)leo~\ ;xXx]>q0Ek˴:1su];`Ÿzta5I _9LxC7;3EMFNkk;!Xj b]hi:OLgsg2yK' !53Ld Kk cCjMn9w@&mK S峞m <\~k[AZ jce[h m$,ˣfi9r?@5 p0IJ Vy= ["rek9@+%b7\uԳlgL9VfC|r Z|2KXQ c90˜g4ݑǜ8uh|ڰ[v,hUkSfX>Q?Nh\aT"M&Y]Z6[@uALʜ3})|'B/`Z #_i%ɨEs689Pb!#5mra+|ԦS`Aעҫ_o{߇iM9?cóWk_,e:0Fo[dZfjg,!ę֖X}׮=fy qjM]_9689g75s ǩ҄h1Țh~PiLh#ʒ&56[-k\Y/L S߀PM-"&4wUqlҒS%ٌL ; 3s̃( }Ь{lޗYZSii;?geH%~( ?@>0v&> =no5M}|K)f`9b^ni¼[W~WpNy(n߹~[e ǒRs ,$ AXe00L|@ pV^*;[ @,9;̗6IZ&t+Ϲ)ݖr -B4u}h C$3A!h-n\e;os_HƂ)J?c0P9!r'15[ϙsYCyZH03$!PPb\-z;ǰs9mv_֜:tHNL׶=ez9ZPse2ܰЇ>4|}Kc~b]h{f@Z-DXԡwܻBex#jy;@pf]#]#T5nC_VXz֟i9'R)MpF/JukBFJGhec:4{|{h9ҝ_k`AjWZ!ִ=dh"e4Fs` 9lh5?eE5u9G)8_>{x~67&XZv"r |nYm@-y=c"I[ϬG{'EE: 2 [e;ol7| %h2g kHD_琳?"g"|N~Xg0kY'M1d ~eDziu1}<ȵ۴SX~lR mYk~'r,GנkmG>蹵nHs kV{))w:RBЖA )0XM6a6Ei{?Ӭ9* i`l_-|ϜvH~ >ISj/cU (^4C 0j!αgH8*yM|+ zќP)jT궋0Sj4~iC?As c:{UuZs^Y.ǹS),|*!m%Y߸[9JQ=o*a E8%;^jeG֐i>vc`z{[}yF[zZs?rsm4{- 8I>o%V%:y?Z<ǀ2\9ceҷkZ;%Yv :I2:GZVɜsoifG7fPk|9S1e~lsFG9DbzWҲn _o[@G~)[D[6ԟpYnpmksC`mQ moH[ nSQ@̯rhQL<SrkyMgzΔSew, *SNQX8G&b[i(!97%JgΝݣͻ-T+֠T`Q}Lbc5x\?>VN7Cim:/[uXBVč3܀Դ8hͧcP-PigB)?8otICF7^tˍ:2hs66k U2F !g)1/K2oB;;31T!]?ˡSBS0>)e,s.%h~gn7&T}~p=y:Q@O]wݽG j蝍ɝlr$By]knֺ08CAQ2i,بSy߸K"ebF]NwK8`ToZA drfVltǞ7m[~߭esPY#54^#[ ǒuʳ~?ƑNmF!7s, Q"̏@5K:d=圵DHh8u_^E!nҘ9i;Pr{s5g[ðgW 7` 3\{QPRxBZwy?M9uk`^e?ʾtߡ)ˎ [9uʻ_Ffy %G-u:Z;hSG_r-e lzsEV?㣎1!eKhsQc~tfSĖ|.,xRm谹P)T098Qes?kkJ&e-([ IWHS;3LG?hk7Ǚ T NLBW~WVsa0AOja]fOĪƹ{vq#O/AXAt.cT\2oVh|+u撏C.aσ 4jmZ@ o(u}M`y}JDtTGOӿKw{Qu~By} [!p?HAR_z饾\Y>1M<48K:^N][>[oo;/&|?q`|zfuT xQCL@ƞ^kq@[(t0CDd=F8ŘR:Z:2 aP t/'f&bY/jw,淙?4pH0Hy3=P ͖`h9w+!Z Z26%H“TJeP46gk}F jÙO^W?.M ahten p5L#df>Kk@2`Pcr)n2bK0s)2V =e 9D_vs d:pVLҋX?ũOlogPSfjDAq߽=JX .yk<Ϝ` u_6 DJ ޜȋaʂa*]ki,@[Mhs8YM`pto]iG9'&?lUTGcN{ͩI/&Y*s㛋@ii@{k^S}Hzo%c@IDATO~)WWsPeuw}/W qҥL+ut,! +kٙ`5PwJk@GTNZ & D.੝뻾/Ol»`~wZxw!BVw1wBh9PhغtPu!"*O5Iz6.]@.tDw9/.,Fɟ.v(B(.4M% uK_> !n4f]@uĺ S{ []ʡ]̻Ύ%09] HQ)WD] Xc?<v޳p›.ߕ?ݗw!*|XICa>;[‚VSvظwpK(sJ !!ksvLzcO' edWϽdtM CׅrlNE:KI.ИH'"Rf3ˇG2R(%w97µDg 0FBYPTs @>6g u9'ǹ~,T-̽?f`0LK|<~-y򿉒1 IS&ڿ7FNβSa"JHfS]hѦ3Sh; @7C)P]10Dw:0u<\E(HH@)M ӿ򬾹sKFSRkD4 ]Yvx%[$c<=΁(dPh|Φ*گZٰx8 M1ს01-BK&4wp89?3y@ ol PHQFı~臺0l{o_DRfO#,EӺ^>H`&/ǹ /Bh.]rOMN#\T+('cK8.|Hh[:(|=J߼?pu8< []&S[ XLLJu@І.ȷAza ',S!y1n^ KB{!=[ rDq w"Tja~23i!cpO.#"MteF% 1̹mú@g5ˁ q)r`m0u=Tzx9oZcC1E}F>[7~7B%" mEc3i :Ra[BY[њ5&Ao%A CUI +:5&wn?u~}5h4b3no;lqäb4@1_NLlj}$Wؾϥ6\ZYG׾}2u 4^",L١ Y::!mψ`3?3'J֐tD TʚW'ͤnlwC!Lg0ȉ`07HKaE-7$Z0h_vf6k~;sB0U>~0\D!Ⱦt`̢Jӟt_WUۏ!P`.O{+l-@r%duM?HyIi8|$@ /_F\ަ&9R8b+49i٧)(|8MWǐ79nع 3=@uXwYB!H=фSi]g\y= )V&/+gϢ4,e(лh<#8 ljG0!*a0`Z edhSk33g|6 @`LP~r0lROp٭166JÄL?ӿ|6//-fLN_ S&\8{ojsxH'|ŦO}ET*66v'>%_ur&άQd8Wn;ta,9NGFNjL;kK.1Fq)0=gkyt/XOx86[o!|;3N5Y"luY3xCֿ@] Nx]}.qk9'BQ2fYpij[!x"__QP.Gi)/GMrkS9҇ۧBoyR(F/&)Zz>sb(sjo.//[@޳Ii[~23$%!ڔw,,wzZ p0\#)IHb}ȉ9[L:=0SSAK!G|h$f[/D)KLSi(#M|oPb-;lOy B4SlK;-(nl|`V\[s<τyxYۧN ÉV2ه9 X'Ms[(wA8>`O!~N03nηDhݚm?ЫU' {[\;^Z?m)QkP0B\,仵6Py%ܜw"d?eα _m4wK`|"l>$6~yKr>^ 'LqgΜ^{ )R=[ʜ\ТSvC3ZrK&X!<wG EPx{Kн=B+W&cދ9u%AS&`KiR M$;=g-}GdGv3YHC ޗolFػuf?O=?*N/OaLl|6-DaP@X)9}>Y3aehϊAac0aw/{?"=Pk0q%/(cw~{cʖ'1da4\}ø{|̡aYobӝn@S=t )Cbs/oLw L0ſO{yN[#zI2٘#̛R$xZ<e_?H8mfW͡{MP gO[)A{O")"l~]¬( BNxİ*8dےRpE G 2ոG))пdԞ{JHI|}]^x=}k=w1P Oarko /p@ @ 0)'9nM@kej|aw-VENdau1Z: R@J&d> B9 n|{ڐ= H='̖fݮqVf@CLaώقD6*}wi:Eex_=5eo4]Hc}o}[v(cWm|6.5n-cZ@ygAck ǻ 3aCfe}_'_ן7z?Ńe="q/`CXskx|M!пu\W':R0U#0lA߇ػWn=ۓi@ც/ǘ0g=0ЎY`3WB%'h*k9Kd yxLқ "G'/AQtiP|8e 9kaWeaSb9ta{@!V%}5Ed0o{Q>mܻ&ϑ% Hb.2jY  @)o(G!%&bqG ;N.aHy\c8ǜA34ΥEޝ_^xӇPl|=z!} ^&`lc%|3[`?aA#coHI.ǡ?490.aW^國s>Ck>1尮}~aq)&|9zݼ@xs5rJ1-]1ӵ.[p8 ſ5x >ÉV|i*9$t%p}Ͼ| f[ҵy0fcZQl:ZE WҚnˇ|+Y3~PKyr4,ex>Ϭ|/e kEA,bį`ox)ad 퇔f,tm; L0s! H#/1~-o{h,=鵼y(*w{ \@'t4B`TB1in@tW/m#Q`!bi ἵ]zQ҈\?ȼ$6!i.Ryt54#o%pE o?ۿhl9&y xlcyb-6]5J\!*E4eZbvRPe߈Fh M_a~Jہ96\l7Qڔ1ޟ2!c͜"* x13s.5.9n)cZ ݹ dMaH~ͫ6`|~i}{RB3M96xK)c ]Ra'aO>fbLL^ N L׼5|܅"`"{fyLʏTLnBHTxWgR HJտW aL HG4g# $uhn_D[ކ#PDه\6tggA LKBE.Io]g&ywqMRSKUL{ocͺZ3\d|{ \ RZ?Y,{~)I_ ",Asc:ߎ]1q6mE ^VET?/%O!|Z( cdE9-[h?[ѥ^Px%s2Ga{ݏ1T= #pJ4tivV3$SChNg뼆p9p u'O~(,Ӯt9iݙbMs0ߖ[6UK^foj 1b@ AQ=J6d$x+IhW<< jH3cZZ[qyEœC)CKN5(7$iƬ)z""krH\I߆icoH!e RFVgv/E#*u{ \jtdLK"FXx"Fǹ%)Bu1y4KorDPqy3'4-1A"rLJ\rtF—K᧨" nvECb< OyT] ZH~l@QJB4v~-m Dž{,`E4t4"B9Ofř+q cyi8wF0jRˈn҅'Z*G%(VXvASֈmC 전h%e==*;Q0'SY *}Ds[ ЊO44>滵^ rd+%7vސ5ʍs-l ޳A h5O1#c @8` LZù&8CsaWy/oe |۟F~ س.p7:IOż]Jtc- m/_Cq<0Aw~5&MϥfQX|61Y0A~:Pyy\hCA'tq%Tҝ.-NJȟN0>}zs~\-hmJ 0_ucMdKY~IBxUPys0:a<)1G>]ϰטeBOB{ ׬-=Ԋ=ZS/k MiiccWN#V,opq{ —|m'g[!cBud-^]8B>| BVҪ||Cچ]{+Ŧ?k!Bq۷~9fK3W>xx{jJP?|nk) -p‡-es9BGm&$ 򎌴sg/B!tPкLa}|)Q *B).^l4d 0Lr $Ӣo#',O\;H;(=\op_sНmgyk)>Mr.9Vv.l Cį'/:י薪0?o%z7< r~(sApT_OvfTZI8Vח2=%.D+m p50➧36)s8F],,@[a \,΢r=EY% h5O$" [`I3->J6UxZ̷ˮ۟d];Ȱ6d"\aǀoO@OaqڋvwR}VoL5Z{4BHZ1੬t??KmjwECc!J" G| &5f;8fJ' 2||q0lAKKYotFMa[4y{)Qx/8&"o>V ~<<\yxo0*>58GA|;k LKF3gP:C~}=@uk_/kP110snloqGpA =LWCXH"Io}?N( 35X;aPHoվ(=k{߀)~JۧC<1 >?JGߨDۤ\܄>Y4$,9M_|WN[Ḱ6=4{$[^z\+9E5ѮG ^x2s%sa*Z ġJp[)_KA)Yy~:5>(g/*YtNӆNs~dyk +85(j{M6i3N~W{(D_Ԋe,罁pߗX̿kw4D?6)WƜCiG_ /!;G]ϟ~G~p|pA~? \0۽Œ|es>=o73瘀*: ~{`nJ*RwkGhO`n/l.5{oבj@_{ރjq/>j>ABh nQkFWQ{o yFdZF O5|<6О5 tH&<߽2LN뻾מ3-gX) 4ͷ/U8=E-Y̾C0Rf~3sHPep޼\9[F! X*ZzOe “)4d(?B5Qڻ^-<= X杮 bSłAbqxh>?"nVE*ۅs[lB"߅SGQ DD̚ Q)x?/P􈺀5_Yakvs2댩RWG/P5#!(Xs%J|uwny.ug#\ܗхRФՌcGlDVۏgm$NYDQ'8Ghc|v8yog?p %5H4MB}kh7Lva^;9o\ Ox+S. }ʴWz?T]F] V_0/üs2BAV¬D~ƛտE d/G_uD \CAԨO|%H-?a i@)¦gE6%k T uH{-vl-2=} QN nRh,҆EXg0I ^. o-#4]8+ݎ,B]hG-]5L س9fHDZS0({0aO"3?$c ghO̬Z@13Ἵ~tCaTUzUiܜ?x!(hϬ }9"PoB|\jT/ǐ0^0pe9_vچh0FמLڄht>a3yoF n/K{7HxE$A6f`Cuև@uo%ޗ C+/46WTEKD#;":ua qүɾ'|8̀[7r4SngAǞ" 7#)FQPvw]w0'G'{a`R3?g* ^8m.H5y=>Hӽg[4\6y}ٗ}YaˣBnH6Iz46yg___haP@x0)LA5S!sЅES""LYJ‡B0h7h+Mמ}0*\׾[IGhRkV)=10AP7t[]ȴl?/.|uG0/5/hGv$_7K5؃Eh 3A+4&7 Z:Zv&pF+,4]w w:O " 55yʄg>Ӆ#WAhzsX[ &mu}ԀY"ZOAjA%2 ?HoUu'E@ o!BKM6FTOk8jG;]S /[?>Ԅӱ%s('oJI@r` w=3@¼1"@6< 5Km&2-t̴L Z!} [j'9s`F0/ 26| o:dzFLbz kLy4'Q-!5=U-!чMH? GS6]na,4n?ǢPY_;9"6I&k-1B__*݊1%0~W6KɰOJyO΄#Ңt^xStJ x?(W>^G3nF\[sT;cPfizNQ̏u.çV)[G$6ܒ6T@3XgiPH>?wG %D==ksoܓhD0͞ *y 9 ӋϛT޽$ 5{`CCwS8;L'"Pl^0@ /`°3>$kTP zQ}f+wH&DLaMR8-|tfJ:6p}vPء*i#)@&檧`]lA3<؏hY[/^{4nKz}Qp DăD;a RN6fkm> 6+@ M tN$̬ş-Q17ӳYk(PG?]U-GD: oSt!y祼`mm{6—i:O-L GSTlKA nAk\u-n_NDK%bC " Rǥh;k$vϑ|@) !{LDoZkC=Jysfwo ƻo{2ОcLA9yӥ=vM}%\[T0mF<.y>w_if"[{D2'ݿwIq뛎E+b4CsyIB& L/B;\kρ-2:LuLgdc#ݞy+N^Y3ñGouҟzLf3'Q%BT螬JI~H P@wLYqg1:'s GYsگ9k!겂3 R{9j_=df-t5.$L+I(DJSd0 } '~=3fpma JCX9|?~ o8FSNG pCm9jt0QN\E1ǶE16Onkب>h[䟎2CL.>mAu8ѳ=RD/B[B%rTÕT[S1.R8jTO6<ͣG-;4%19z_߷sy굿??9!3`o?EE`Pڱ,[@*o&{# CTs2$s@σ> l6~i(= D|ݺh[\29mM =d"lL+⏚ 4Ć>oͺ=B@aO9|f>kS OXW}WoQ#ڟY(`ce@9_{Nl|ץ޹O)E7!/#"X|5EC'^JM{{c}l5|x@,B-4 T+mLєrn$L.%>xZw5h*o{H478x+37hآP?`ԎjUsQkPj%id&!9f[];?Ho}*yƴ%XFh1S?넚,Y5gH~PjV8_RhB9,k,d4*f>in&קxJA\d}d; {bK.5-Uw(l}E:m)zԹـp3xk@[-AA9{ZIUSxo|yk9'MD[/=JݖR&fxZx5h*߈F霄(y&~1D|;#l~aNS4^8{軿gm;~Pv˻G=#.(R'u|]D)!PR6tl(Nz=?U>3Ü3 T\* T0w~2n94ҋ/؅~ B^|Dlߘї/{",#S_0|M j?uD;~S[ ] ֆO26í|<~?W6s% ϕ+'²;m,]MMw](_7/8&*c=](s`](sq^|BP|3xZt5h*_ՙ??˔.%p7ᙵ$x.I=ݧȷH>Z?Y3>ZEW, Q^Wds:BvU8F ZJ+^񊵯.>)~E/=Ic5)Jg>nh$+ELԛo|4p-fF7Ж4ILk(=|Ɨ0:!0߱l io8̴|O<ǚ<{9lGMnle_eMf0|e'.M̟֬jx(mMgXGAô~/=rȵotRݱ7 T<'u0~1;^lҶHs ghҼ$ټ_ɅdCN>  >Yq0^PT3m92sfEԤsْͥ:cf#w|ͫYv݅r y=q5p9xS XB_:vL Z +̘Б%@ ?YC_X:nច(Mb2.?*/R/@[_X_JYNT~~nQed"[ K-J3ka?w&@IDAT=sԻJhKr&|oFhYkB:ƷqO o[G̐]2:v9`FЮwg}0 ^[f?y[LfF_;l/ 1pg`f#RD1Ys܈ȇ%Y!zk(":uዥNk{m|aЙf&?]zW ɷ›bd_:s+Go|Yuxg_u59>}V-cV#C1eN/P]8d7n})23euULSx{COaҐwЖV{ީ7;G fl>GtiL{)}paC-IUzf`< %{0(~ 0o3`B/BP7%7r!maG{ q"\ԃo( )L<싁{j-+,,k MgY 5`SZo}bӹh;07 $Rg RC]^ $`s *̴h}tƊ9xHBdKҵ&Eo^|Pf@Z@. 9@#Շ>.̫YwG/~cK544 #*\gܣ̻~ڠ&pc=_Z{Ym̷hf?^0YmKgl=uhI !fxBGA(BIyL 9V߭~amo{[7䑇nRwX'v3ֳGS 55in4ۺ̗&6Kt<үX(!K9[CJ#pM'd (3OJ;K aMA<. -Qib0,1 v|_n:@cab̆t^9ٖ,aF;DBCiJ(=P`jJrS{p`$K|0s=ٗh/Q:|;wDG_BŸL!9 M}stSh r{zk_{ M݇>>+*}~%>F¥$Wj>7{Lsx꼮񻞃[{\kw&` w~ 0!I,: 7v̡r (|ID٫ }Å3"`oG9(,4= h8Z5~Ӛ_:4{ XƉenjɌH `Pצ[E%j1#JV7~7Z8|^eA9/wz"[cBk{LC$E$wT.!P`-dͰn%9:$d Qf~(ќNXg.o 8Ea2rp 2nMX^L$T\MHsN9o&៦z{>+3} eWٷ->DdۋOK1O66e+B!)_ }͈\Խ=韛aYYY%tB6@ +^ww,Zsy3="#C^"NP,F4 6C 'L.fXFd9ЙS 61cZĬOXM&*¾ UGx|E4G0D:$ƭUHo/>VEs޵@]CTl\R\0Y&ie(73B>P`@v4=cFDL IRfUdzLZ2a'V (CgXX!sÜ9ya[YRiPLA(Ș.ɗ[5A'xm6$b&'Ĺu76ILSV&9uc#G)iQLCS6 T> ǝx9f@o@;ood6?6klCˇqުE"L¸1jܭs1},9#-R1SZ<4a*n[{?gmV65_5EXa  R}oHCڅ#O1sl,X{kdScN:a" Z "l!"@6M~6'䞵Yhܵ@nEԣ~K/ːS!6|E]hd  ˍ?%Ԃo8jgŒ PaIĉGk0ݱmv/T` w3D(`֦$}ks(^]nvUB4ySV>feM!/W&ߋ>39w'?P/V,r /yJ )5o0~E9trӽN[bs[lcs 镯|)"'>b oа= )B:.CBNߡ%Zl-{&40'~OBHV.{v/C}J"xܜ`BvçN,'vɱ90S0N!5Ϲ:ݓ_hiK|{k{o0_} D=^}d܏1,u:{~n%9DaԷڐY-gc96B'~( aIK9}xN!<2'I_}s`x>BMכq9gn J#[@!kH34] ) ɚs Ml8V?p*?YXkϗ!6;x8WB([z lG7*ZI7̡>³uįZu{|>uIZpu:Kh;v "o e,=|k&9 |q Ɔf( eZY($Z^&uJƔ $|꥽Y2s44L յFBʆV2)H;=n7kMpJ,%e@Vs90R͙~٘;I~ m'ڪ3#5@BBe6 >]1 AxMw&_bfПL {8$5L }ELֹ0 gLa sN=;ǐlI!%M~ $%_%ݭ i;%3-%%|ob݇΁\O-O~4\ e&POɺY3mq'p=mamOƝ5 }+܂ n |̅^b<*  eMk3;ؤ'~wo'uH|-|0 D[s|L6|0=cVB茥ssag.0̬=Go ;1]kYn0;k(_k΁? U\ B F"׎lG8+|#ᯉi 9@E?яs }Q%-C ^h!9NCǰk]%&X5Eph4Y[K%L(Rd'\$]ug?h2s7 9)e5{j 70.3C" ů1U$Zrdt9vĜϷgo|+>s&h]qB1z\@X?X5x&ЂcƵ%pY8 'ZՐ-^ 5G=-F΃h1: uZM^_,68%R諾جb3>vKχ &лנ0R)ԝҜ)SQ€džc6m&!)mf܆g[l̜&x-p$+]k CikU5ʚ`MV )1^ V5pG;w4|< r&[@c^t+<j!|&g?<ft!huͳ~>~/YwlW]HECZL!6R@#JKʯ)$,v@d8W\b -<i_Z[*O|O1/9:xLq)FHR [M>?ڐ>d{eߵT<Ƽ,/n9X8[1Rh1U9f34qb{h1~i?7@!*q"{ss y_"yKa # xGv2՞ײ'7KygWxz}c`gwncuڟfmJ>)R\gP;eE?R1B.>Dk E8BaZ$Es/LOmCB=l/:^ȖFxQ{BѬ+_.[i}9s| Nd喅)Wˇ?n_dw;U+Әz h>vqN []澦/}[82ȩv+Y t%)AU134xH<ݘ/8ڠ{Nv5 cw/%1 @ZhbL6[1<`,3<aBܪ@@Pح m\V&ͲlSnI[t% @í.G8&oA>c@quY}< a~8 5}2H_ &]}^";fozӛV7YD `]!PF?Ov D>~&Pn\0zd c / 2F5e!:fPSeCMmpTm™V ɷ.ٺ'D&v/}zsuSCoዂ4~n#ϻd{ y.ן=u(Kps7~[) ,ś2;%+՜Zk̼/CAj2΃ɩl\iِ">mӼ/|ε(ZLE_13F-KHQ?2@h!j[ zS#SxH>ZTB$2d( @[N`r\:-t)ܪٿ.k.Ĩuik)Bu}[tkO5l"Eބ{09-{2tBK퐒|4}Xr]εN&bH :xapJEn9ۄFIM` @ýr4Ʀ[D 6V _auL z0@s->*>owv `Թ4ѺSypQބ //5sx١so7 t?~///ϼ6eXFs$9˜]t"_igZW{@􅁜j[0z֧5lkPZwbD@2JyT@.*HQS%]ΞRw h*,N Эɖ>&[ M(<# mLiCQm|h|r{B/ hM(|t)#KOMjDN)8O!̑__k|ɽb}5PKI@Kz[C*$'E#<2ZMn1;ۭYK m҂ h|I?DJ}(m"䪜g: ,9vqC@ 줵6EI5?TF(M2 5<5Mp14CoT9BݛZiQKzA-k[АVDd m%V6;=* 񑌢 Tjs*i{1_%bK;w?31:N!ޯ]hdM.gG_J/Aa9v?YGk{{ &Sc"$܃|giӼ)<1*yGrWIGC#M~ǚ@u4\)pc'e9;AjӄR[B,],9?a  .Vs^-K0 Snn[\N,0X $ 1 ٨Тk>nX$!sŸ,E袄N &$kDrZ4)-EBli;f@,l@{(xĂ7 qN#`ۄ^  I*(amRBՄ1"F&< SƋ5+$Mz4Jc‡ԋ Nnc[C!*)M|Y̚pZ.¥CВ"8xʺdx7f̝cm}&Ű`A_ʼnwϤxhpKԵ cN7Qw=w}I?2ސ@1!۶-pcEg%2Xx8]7$_-hsqnwM _Rs%9x aAcx| s[rEn'-N=*3gXH끨.Y91~/??I9c!k8ܲnkns ,D/)'>L/3o*y96s4z>88ՌGxkğYԢ9 L8qcc\ҷ# b14A_tl286usn:Sp("y;Q&t-F\F` 7/Ã-88X9dNfmևm:{s n٭DD`p`\ҜK[i[߉lT}:W^J1 lC ͸Dž_@2\b"( }H2 u6H'ww$ ^@ipN*xSbN:B+|Ksd⩳31_U_ۖe0m|;JEaA@|fg7^}X<^(T#F vdoR=C 2T`Fv6C )!wށsDxhEJ* 9c-#*Bě}UzUIs98g='?&}dcY 2?Jx1D//2u\-l\\;K}]AajB{Rpt͋Ch:XϞ'~/z,ZG__hIxÅ&,ǚS8g'}<Mn FSP>jcxj+4XMHL kHL4JfCaXSa lc2h d&loL5K$r kF}ǂsg.i7ȇN[wςg)Ⱦ9%MuZrwX u En\=lG5pWʍX]"dd:c-ηcg ݵmȿw T#7%?A9йBlx;RJeu]|%m4Vr a}[aRFA.6]=̇Ks=)]]_c_]F^e=l^ctO#{_hSszMm:.t<܄Cbs*ih߶,`7\ b"ŋPeދFX(9('X>#d-v "b#  "yBdT~Hd,*Q Su CVaI&w7nGϕG{Š~>$x/ԢߥVWa<*a§nQ2jYk),7$pYeiCw<6lZB„ gWp =x<(Ӑp%rM .$\JH5Y_mrg,\󒗼yBI?ansΓXX2نB[s^ gc4f ٱ2 P&Gtѥa64w4TY䖎AӮxOm\Cj27m#hN9 ?I_ '?Y ; /Hc1%I_b-!ܗtc %oX^:EXfm-KVfY[1IiM",ȏHߧnModb+C1Ă"wNIf-Xb$H}\g}V}{Xo^;_/ 1O] F'DŇp_c 3E?4u-i>o4_i ZY \bC!gݺ =qX>ҕ/1*9=RbM'H-=JGy|1* -lsߔsJ#lSg?{鳎er//h˾8=#\}nck'멼ξ9c1ZXO9ze ŀw`ջf=//v))TRh8(Dͽ ́Ȏ!;~)1 fx9$֍"Q =˥>s@QCi+kYN0Y&ml s $%tYӶ2 mLw@]΍ξ?76Vz֚U[ `oL>Fr.c%ռ܆b@xnِ0 nwH$m(81 m N]@X/%P3/FlWQK1RѪ@zuuκm"?\z4$/{-uuBl>y䑖nfBο3 GkK"111f!Ͼ{sdkÀ,A_unZ 6W(&W/)<^W50k+_s: @Ε0uF˗jGa}}P#AL|RY!˷|˷K~? jp}JJAOR2+kKЖ|[>zꩮ2X>8F@uhߓ՗A5¾e߶ @ ̼odrJ }*fƴ@vm\(%ap>u I"~uxbt#РSO_xc,޿H'@:-eieԽ%Igz{߻ꁺSoE2)E:*6H_f]Fk%C'(eT!7k}"NPVtYoqJwkmt1 g9f hyyfʖضi}CA&=ܼ} s)2͕\0b"F~ky ĄFq$#MOc"ͩ)>%:fpڍ.v] 0N4'S4ɶlaⅷ_Q_?t ȁYfY ˂*? L(m[)E5n`A=VTC7$-;-t][X(;{ .bI8:PxN[^h5bc_dn] A~jA> E/|'{OI24%J}@=5N9(L};];- -7A$V97շZ۱(ԡzoB2nl=yz{:P^wzeU|| жdQPڴ0wSI}GH!/sOбg'וaD̩]|*#Pp u'FKρj{]2K=撩HDFُ҄)(/WSe3MmpɁ".8UwZ8!BuDaR^ N.¦>c蓊k:A~{^z?S @%o[m,O8ڭHK H{ /ۂEYcpC99pH]@\]ox;'֕ +\'GyW'~ ˈk/ ?৞j!o:,$" I7~d? OS5 ȟo 2A1@[5N,4~s1r=ڂed8 F9- |&MIc,$%M=رÏ fIC* x DM󂠶 #IT%<M%&}^8&ȄQґ@ڥ D&x@JJ(i3m_W/1 0&&r5X9"%6Z"MILc004ySO.6 R_$D/b|)#}tSbܮM))D:fsH(YMd)}׋f[]j!C-&&H1X5l>O,1%uhgL1ИOm)s!|kSX9m9y0d4 tD(Ф`s_I-~o[p 4hlc{-Dsu?ءCf MJ5(|Z5|/t\8 M,1!/EGVÁPށ}n}`4zG0SMӳNiK+t@gӌa-O c@IDAT"-G5$u9!ucr8:.;H&"5@vFrl:g0r6ޟ@5(k"4 ʑN8kvkTEֆ>f:<cA)< 2f OS1N0P0΄4Lc~w6Ap< #/EB6Kx+2u 1HxHB2 Cgx OqҗP&_m7UrDɩ !M IAbAE 2i01%0OmLRWK@#P^C_Q /5VAIOcyXT|_j{\'>nH(2ZPǚ0:W.5ﱅʘ2"Jw( oޏcșn!聃m@9da Ljyp(P] k]GЅ8tI P~P# ةsz1LM=8$>/ @?E>7s @ S6H'QcX5Oc&}1'>(☍pam.% X_Kɱ!?s)iJ֒^cq\G&PM~y@?+s'`/4x uSo֥׍*H )CʜjIhQ]-~GCs?s%DBd-isme~ .3)% c?YH&B+t]lxG?3̩AʨӠ#=B8(XdKQǮqh?t ~"[ `;cPW}wHꇐzl£i1_nښƸS#J8ȬڍU&̕!0L\r{{4c IXsd>zzg3y*KÏAz-IPP8< DqK#(PSgz cEZ"SBrZXX[doO-B|.%鈺D1,|p:2ZDRN13mdjٟك4^>c8-̎A/ YCY2 m# _#M?7:4w.FǛ" 6J;|9-Ra6 >TXt:옄)?~G>rJ{:q%8N!s9"8VOJ>f>V_<ٟ]~tO5^x'sG8x?} WJ@S>ɺ-@gZWpws`#ݣ?` :JƬ)FhIo  T B&X2Z4 @oAJAF[a.ء1Ḱrw),caXܘ9,^Mp `׏|<%KцRR΋qyk\cQwP,z2;4n_XlkuWl@p[.\Jd}mJ&U.ucJ Ţ w+1ۯ~xalCQsՏ ލRPV/f)oN~=;8+{Ҏ$89Z mH6Px$TA!AS&mpʴ66 oFR\9vl0t7˓3+꾕)gc1>Wq^p/}KKFI7 ; m^;x2 Q,ʳ0veP]IyK*t2$ Pm8ڠ9hS~ښԇQmw^>~,2=uØw]wȵP/9_,"pzt_9> 5}lYZW >9QLjh D{1;?Ѹ<Ň$ cxHxFxe@Rz@.%&=x!w'Ľ ϗ}`.k> <,aE14KUucG r8 $!?B܃EHqcqA,PxO9([m8 =/8'JПDk'!7rj2wwxp@əRf >rR_4ceWW}nhk ӔLda8 㘺KQ1FM}h/ADd"p{y1"sSu%@Oj]Rb98ې  $|Y5 =k5x :UaL6m'ܻt K e]iJ(4&Gڶp>,a'&{ pI>tTV~ZxbЏ5yM; 65Oivϧ:~[hX8oTw0o,f~{޻1 ]-[.Oo{g(ų6]9x>wk'=9s|vPD/-G8 " [$W(k())M0UmpҴ.Xiלw"CN}k#\ 蚉 ZI#Sϔۿc7mo 1W(XVug~f=D_п™3k;sy>!Ťfut0s1'[{`$m 7Gkۺߍ=hQ^@ʛ4%7) 6Iwbce5=l U4ޠq{`G{ȓi~d jibqT_; +Xޱ=Is")az&ȁc) 9@: >"hAKگڂ Qt}L6`F@>z64X6lqw<qLx!z[@e]/3тK">&υRrjf5m(EƖ§pG0б5!,dJ1zL@oz8dgI=\Yb:lP:SP?f\ Ge*b†& S/=Jc=I{RHӛ<ך3+ںe DbJDB8yqfrSG3i}`t2F9}3;&&M(- 2 Gllk4'䏏\Bkf\(mc>l#< r6T2RC#T񐞤(4e1Oz(Yʃ5¿~prxF)yhi/;H7mUzUկ Ծ1cXscZ}t'ƴoP V@T[q_{Yoy>:ޕgQ'\C).nT<^xε$ 0ww.(`m})@񼠶rIY/ysr9*2(Hv }Dp0fpX jꫣ]Dx68e-k(}di)yh ?0;FgߞcVPయɂ tIH~ \,-\:kHؑ}%m+e 1!79S'o!xvfʭ"cMdIHs./ yB>" \& אX"5vCc9Pk>szO>}_19GB6Y8: !:}$/¶Aאsd'+q ؾ0Z ǴHӣM@ ~vI-f \48p _L9to(D >V}?D폼V,hwgm+d[;?T(dO& » \@:<G r;D; !4)+Rf,!117~/{|~nI-yBa),po2DX.y]率ԉ'YȚ{1饽S;?$INa}ƊCPKwW"DԻ-\_ҘWf#d[/DfFxFS[v#LDZȀ HDIcɔ2Xs7~7IE^ e ~ њ+a-Έ}.s|N ]HhL|#'%L%6_QTBqH8.;r5>go/9F&JȡM@+L)pNFZke ~ؗ}8a\T O%CCF/忔cw.Ja,CX~ݾQ_Q7y-Ńx^z M^qCya1 = y ⟞m4ؽKy4~ i}}lɵ9'!P缾ӵн?&[\s/I>b*HUsAyP[k+p@BguXss!¸+aT﮵4|.z%(mw}C!`?6nXJ-ꍝ37p- \BC6>S$B 4H3[z?rLv,^+$Ƒp=L9p;ݵo˚ @4 ?GHyZҎ<'ݯ . PR'<}p !34rܛekp1ͭcRO;w-F62fZ@pggYZl>$7,$~4A//A1O4nxFDorCi^(FKd1gFH}F//) }5=4ӂfX988ܫ1?v~S,\-jXBdHxԦDdʐC8@%_|8 jeֻ&K}g|FVp@Kf+t@+ a3䙶\}W|E)OS ;N=^V`{1`> ޹c5#IS7}oMÕ!*hj݃ 5[ʏ1'S:HtN:_pxepe}Aƈ*\)xŎ7>H\jI>e l-Z'ϧU+cy2G*idLܒ,l>!7}7)UsێoSϡU4B{G?>F~ƈ*s ͕s1fNsaM N|?!z4@E22G{oXt%t8Imw w惜3~?@T蓉{c_Cךr\}9D`Iޖ̌yYZyJۜS΁ri/(|>gg;'.e8ScBAgQ>W `1 <X0Z KZ"BHhS\!Ìǎ_,Oű~Z 5 @"l1[ғ/tBRJcy1s?(z|H S\)@K&BuV:ؐdHjwHtR.Nש]#2M8rϡoC$b%/D PNдMЋ0פ8<4bOɜ6˭sQCk@MCk$ [[F,R%5A=~~M@*S @|ݪX̺^Sfa3A#|ы^4a7>!b_[mέ#[͠|l-ͷS= t g~_jRt@A~Wb]Kq7샧?fPмw7eos yһ_҇3<پ!`AN/Cx%9s`kPڱ8t:\B&SC=?g SՅԱK\E\.PVЊsÉ?= dk&&2 O4ѡ6*ަ&&MdLhbi" ߢ "r~,~M*+l@=/&U8%9pnj"6awUDM,%MOR.E<"B֗PZOh7a佳'b&61!ЀMC61Q]ƎuiB1iEi"Gaa{# q sG,e\fM-/`(-?׿0&x|0>97544-}$'is}(ē6nbqɿ~.OPf=cp,3Gf cA^ Vp4X,*XN 2& M,eL4 dXy&qmE׿k>fw2BV6,fH: T{)V9{R¡DxC#][9&Xh7Zٞ gNz.لѧ& tuip6ڼ\~駋rM8T@^4Jv{ Z_ʺojaXi֢3@)^{Z Ȳ;!tcX?)BCOX樁L;رִ֬>@ũHnƘ!`45dC;s} ;y/TG ޏ& Bm(`s\z|ƈE,<}JXpRRQoaK`@YCb(FcBd<8VFҼ7?oe"0&oǍʟߵ'k1EVy4[D]Ǣ/ if ||1@d!9:0ŮY^#w"TAD8Siz2!],6bwpե3"||O1zgy>bLcK@cslJaT3Ի\]pyi6?P2Apu,Eſ9+//k>˸ԖٽBtA:R Nr;EIW6p`8Ԫ@y7 ~ !ѵ8#CePHY5TF s߶Z,-&xűX_FނXЭs,x79TN^c31|@_ͱq{Վ&`'2>xjR;6321+["7zRsHpO- ?bVj Z}%)PKx K>˩ JE?7сʩCǬ=xAztC9|O,kՎ e+lL)܆! w@hACEΥK2]Ch~-FN q7=. yũ76N:,m#ZpgN\'x|8N!ЦN!_t`Zom5O=TAt+Odt(9!DP<];%\,3" bor"}kG!\e,Ô) S\=g . o0RwE 񫅇e/{YHcyk>3׻imc$D@6 sYIKγkm^M wNn KgLJҼI)&P+ JJel&U{иt!,ض_oq#cpȢ)ϟ $7WxOŁ2N27{4F_>2ʜJ,ȃ )t3 6s:IkA2dAgTp> [@sVkgʊ!Þ("I1^AB1=a`zCѳ10AeTlL4ktX0~113S/3c"" ܲsΛةX =@?<E%h,łӂ4zkR›x7,9ڄ)@_X:!DLq<)K PY9ȼO!$eg(cp9h J>$ -ӪέC*twK$BF3Vp21{FCe2/oSSe3Mm{~N՞66y:?%-Rp/Xf` JN}+,5y}?,I}Qgc[1 qrI1Q, `kw (~<oͿ,3 }xk0gB!n+Bzk |(K @K?sZϣ2($w5 )}B/]_k^8Ag93<$:P>8YkB℃PO&u>)K Jfp 4o}DC>:N`c!ž} |@4;Eq{@A)ĄdڄBQ&I)Jρ8=nexw W_-_)&ҷ_ǶbDi%cIqrmw.R.cPIl-pcaY2> ֘T[0$Z~g[s|7קL2vp,Բrߘ- ,g8SuOV:1ܡ{]PLj(O]\_Bcp8?;)Mɼqy-Tˆ #&}wHӿr h̬TNgC7Lɱ4|_2B !CNsD~|$_O{"φH\ },Υ/11 :KPmmmX?Ozݹסo2Bncn#P,R8[Sǯ mJ^66Bڀ{wj Oy b bm}3t6Bp82ٳ^5<]?C̱hcA]/q1HV ]rQFGW0@/ѝn_d*AƷAZ_bM)+`b ~T#v 6LwC}A.S^}c]\c@la޹n,~0ٝ-5mPc/[@;NFR3ØXw].ЗH6m{:b'.<=AdxՂkk%UWUm2 X{pjQP*a$STØT/cu=} nZ /mմ^|mFJ6䓭E>yW1p6{ nmݗ}PQ01DU3dc):~hn_NnJw/@ۍA᪵ Tœ&k\(cH.AQ q @l=)OearmS $Rڤo$ 0>d򬂓 6B[FOsbq__0#-!PJh "@hб,gh+ rP uB$~8$#2c3Dxu酅gj:¡߄^o:>|7#}D;H)'ѵ8/˛p~6Q/dgA@ݕD!Za,G9>+q2WO}S`?SL3.gRj'oN+#驧*?v}. aY"TdcLK|wwy<!bkvMS=6d[-Bd$BsR |ה)qMi{pI"C%~w!W4ħQFp B^g?lr]-p-*筍4d>X#Z.xU5Ÿ(śdG!O5yM!F3(,Q׬V@bcǼg eHZ"-kaeJ5.3rXk0\ýZIjg/ǩsϋ̢t1"7 V5<˩;D H c)h}es%}^'O}"1ZO$ iQDb 4Z Wk#%gxk_;NŸ|z0pie{*6b8ôP~.X6G@A}|Y(@Bn _ < >8_ 2>BkahXUNiF ]RCW(Y+xz"@ɢV%e ^mMpXsp@pe1Bc&L}jt?c y}ֳUR KqԴ8!0%ɕ*2/ T| a6W?"␜@IDATQzZuC)S-^-qs0G''B_34hR",Ct?Eu/%M arI@ta,ƣ"<ʲ̝B2 +:qpF3HEB {umeik}h)3[G\Rip wvMNH pEEbtO~Qtܾ~ DRbV/f׬GkypAXDxOA wA*YJ /Hsf:G+oX&Oi tD>}shME}` [Z$|:-"íձF#B>F  V$U_U7opbC4Ԃa|w1 Jf[r=(S- p\u 8dZKPB! %qrQ N&2"tG?Z0! sk}JN ɱ$6JU9IX?MV2) sJ !с#<\,u0p ;!!",ghae}W:wN-DD#1A/q ;3#Q40fp,Y_'r-mX^3z-RՆrD ]ݱakCYXzB@_o#FiPF1eaAZ-_f\kU*mHw/7}DFޮ}R߆wmdk# dD;X k9T*]o|cfPa`ʊmr~KTȠII\:Kaj]߆ 6/+_6m g]L-bp Y[$}~0Najcq^~P_ )[C8{F$ak bcP2l 2vDzh#^]ˁ(&<}K4;:/B>y"58&O-HOЖMZp m$z]:sG&ƐuCJ+3#DH$/TD(U<4< ܠr0Yaܴ~Rb [\*2c0C?>K/k> aMsYY_d $Ͽ$y$:BO"o.ED ὒdR2<Bŧ5k T5dƩҗTU@eˀQm7 #x̟3TՄ֝Bp:]GC١60Sۨc4ߩcfY[eK#`Ly!,sY2BL&&s?N <nH?:f=_] <Mx-Xɨ3e xyc14W.T%//c 4ĭk" (>hb4F@/.F{,|,.C1u tqܪp~@{F\AO$qߌi kIQ%c91o ضWOS ^ž]*5|d}6o;N޺̈mGj1 WE_?Cc C!a[<~+krͭǘ ֒@^7ꦜv-@Ai˾}xa2!ƚ3 omP~p پ߷  `0Hh)d l-pZ@c0YX i=m8NP,! clߑpnr,X_#qhxx𶷽1H>2p-sp6h*HկkRf7F~+l2xlsKY}9fZeaϘ#KTH"lNgC:cТۘ Y 0{}@)S c 4u[ Ϟ3u[ \g?]ν$rҵ _Sѯݯ%x'@$FV˜0W $s ^tj?N3%2f'A],|}3">ܫ?oaYkH~&N` "1u{mlk/?xɺfPS㻏uiv5{sk2!4gϓO>yʇd4yG|~c`f֯3uvf \xPZAYt1EvZ b9_ nŮe &$fjG)5a,4䪇m-p- |yIFMo}k n"+&4JRB|j}?^xOuBR,ͫ J[M_ I8 |TzmwܵN߆3]O?򉌣 ) RY7 ҭ?a\SD?s}?tFSp[N ]8A'5@͉~Z-ljmo--pm=. OI%Vo|bJc,Vq0ǫp:mX2IL0+Ag15|g}V]o7ĭBq1YGSX#QĢQ aTB %2rԄcP$\auy"picu44 V)|p$Uy)[}*P ZB*CG>.}!`d;sƮ){[^r8Ƅ@EBdkjmcPmch豍 Gm(ym(m^U],k Rl+aȭ6@ Xra9A@xgn--}m(p^J #kc[ \{ #\hh+ wD;駟 Ҿ#m97m [~aʥvd$ݵbq[@a\j#FX~ލJ 9s"ܢ{R $Ih9[cSa.*maةK^ܡ 4o_\Ri&aj0% q "+.@F6]h۾ܟG@Yl[?@kڍ*_TY=Mo~sK ~h$m [%@vϚ;E"F97SNێ]Ș xP#E9/K?f]MSXrnN9u;vkm_A>Yjpw 3 rNmgn)K!AAA0 pYf1~,Y_ ߿0s>~Wq2^ ڷ--X5 K[Ƭ׾-N&@\H"y2l 2=#m uyk\fZ ^K z~~ mL&Zw d[K2wRT\A `DQȈ^PA%((&P18#PTQQ1`QPL# *蜿=ӡU{VUk}iӦՆT5($d X>V̷6(*Զmo P7DBhEtAShzK=xainTLE9˝HsgW*v˺& Z&{챶GiYQn>K<_ J@z+;l p7KñIRWȥrsH%B#\w['['@ GҲR#SE(M39t Lvκ.mdsӔ*:?Jg?}ҨRzX.V</3fL']Icr'@%H5H}z+4WSY79y5*&A,_ TJ;mO͛7gc<'RkWZ?/Ǥ:@v,@ ޏys) 0ofm*"coTeŊ1ugKԀ\vK}z%\<@V0U[̋dB^d"COxw>voӂ*%l B"ZT ƽJ/xiGX ܫZ⥅O?x)$Ƌ&3/،Wx7mS޽{ۇyp:*yNs-؇cߏΕk~S-{(裏*GQy%mO<1:v&L0TFt->K(.DbEDkasVh+yÍH%0RusFriھzjBsXjTj/(/4k,a{Z\/Lf[a xWo<3gΜ?^ʍuaOIքԂ-i\C/B=y#F-7Æ KEaE'kđ'|k/*U ۋH!D.蕃W)*-3O:t!>h 2] Q~qݳ|:!m׫$=V8CNPE5LJ.hE{WE߱a/U&Z/˖Oc5ޚ~هʂ=q݈Pj}x:0K]exصTN/本2\!<(s1AƜh} o{˞4 F/v]k*ppס^r>PZ:v?rwg_aAb*F#F?Ռ+a Oҏ,ݕŢPTa YltW(YR뽔3zhfSL1N5OGӡCF!b>Q/cDCs9Fi\^DsIQpɑ>rz'J;O{lV2K&3In^r (j9T.BnT~D6FL/Øg̘aDf9:"&xNq6W*sw^UE%_;U.؟>)s̫L.\lYsZznUUQ4T)ˍ[BhܳWPZ|/Ufŗt>{9xnܺuk}>@UqxejXh gUOqɕ4w7֭[ɓ(LSm ,t#V<&3@z*[݀WEH 9<'B Vq {DZo!p*4ഀiyU7*HSHb^{5+8 c ܪk֊JwƱ%UQw P(E6Ja~n*`ԩfmhj.md_0Lwݨ2PPP Q|* L>Dw\zI.t HGyļ6!8/i^IN]:u2zSʟW^o)׻S-rG =B6s[m$OF}AF)5k-̈QQc:&-D]Լ/xgvD/="e%]=!/PBNӅ8&>d+-58+BUSʍ.6B($Qh O@ޝL#isX|ұELJ͕N[$^ g/ 2$ڲR"J4L*^]NjTJo>v$V[PEUN1;<ݕitDw@M `LE}c]$;ڙ.R?d{v?u1am+:9ӳgOavT#FջS)-z1Q$LT"޻aYťݢE*&T%09jMiETSF XTb/D,օrI:ӇW_m?xAP~{ /،J# ~NBҏLUP̥d\i\r=sힱ\`r#?*9dKm/{H>.+YdX7:Qd 9VHౢF 9πٳg[Q:"66PS*IɡƨDR(J6]tRP4(G"Cf! bJSTʸqlԚzm#pEEۢSX8qyV 5RJpO0wg؋#A(9tP9쉢1矛;( Gয়~J)GX$A;ȪMA/HNE8jIJ6zy:MW|d ciRiHX [={UU%eJcؽ'S[?:a& +`8S5OPZ4l($yTc+]|Jr^U:wyo~ 3<(Q^m]h" #3pt ޡ 7B1js;v!otAY<&DH^0K'~*GoU kҊthOnΝkMr2yC(*n+A6zΟs96Hz*T(H!/ M(yLrUUF֡C}]wu6$Ya Ptar(m!~?d**ӗ>Äfm ~pb,g>_}U[DesbDL~v'.̌5|'6E}m¯`*"/Tkr8Z-laN _NDQ[ z3Q69~m2!p 7X;EF5ruhNAr,6k,#yCq q9}lʯ-JYN/ܟ"ТmAGK!MyQ=?cA! a'|2>f(޽{q;؝UC+"&(Ěc ,5]>%&: fmRv1b=O7tގ=P)d% ZL9V }椪͙3'ann((ᶇym @@뮻_G&1T m6k_J5)%l&MdReމ~6+S)`Q8m1i_2n:âj%9V BQX< vrT*XMD9rV?no ̝;衈[O>䄂9g@QhѶ  23`!pg,9sL`L%]L@7N8+(h\\uUVc@?gϞm/4q)_e?=drss9F ip,gR_}Uk|rf;3L3 Ç2ŘbP-͘lРwK4{QDm8MPœI@w+Z; ( _ `*q3=Qic9Ʈ#Eտ>}t}"l>Ԧlr&)qKG2ELS9 G@#?f@JFO?RA@+v9 k:vh6d`j˪pH@Q&2q#H^Vr L8яK>JVR[OUKobF1.*6aƇLVlb]j L P$P_0r9tC` bCl2矛f͚D?2klwX[|ά ;,\vG[.buT,"ٴ闊իQ(]'v&u^R&gҥKZ>$ʯGS**|K -Zdj0`4hP fy( 6Ck 'xY^jrzQsHt_J2]ΫL%q9QTrTa4gvn]gqw8Q ޽e9C@{O=_?׵kהMikL^\sMyfuM>ynD8·ru] L0F1b93"'5Lt@A P zj q6.FT-Ir79~]ӦM*߭WF\Ȧm8]DʙspYgǛ~YspBrh.RRβ9˲6)9nE/rJE%"Ɣl&Gsdk(6lhٚ-+oFnz+2N3p]wY"פ8 @@<HHXNӧyM&Mo,$pb*(5%^P2=M^%}-OEt1g"ӽv{Q,?jxjiΝ C(8\h;Enڊ}"S/ͳ+;t`z{%'u]gobbeGuUVJ6Ѐ tg:wl{=ur'Uc|7*"S>K,mN/￿9S͜9sJUNHiX~ڴic"jwbL8PSL+cu")T xjúxWE9B&`d EKM7fekxb θ @M@w>n;IH#S.nsʤ}ma/RP?n+bDn6FJ;NyXa !A_]ؗ"0g| (sαHH"zt`%| d,zejWtZrΌCn @@%~բ}zk[[w$U1G_:lI8xwv0z”"2{1n7\¤~<;h8}%:u}hYw޳]K2/:·^]vYփPؽkYӠl ~FqrN<:bWѴβi AǑ_g@ @ 4U5 ػ3G{뭷&|W͸q㬮ҥKa~w셩.N: s}URVkƬX>2a[ 3Oql&5śy/4*Ӷm[vJ4@xV9&@ 'rJsGޟ"JT,hje,ŧ) ,'Pj*aHE`-4?Ԥ(0E;.^Fi76%lQ#O?k(BP:`zݷo_M碋.2z$b @z'HG~)W^6J r|w/wov[]=0L;p F?׷B7pwyH[ⵯksJ +⋳5e{P tiI9n(ngB ?~J/ g]He*,`1r$G2"n=X3`ӹsg[GM5lupLwy曧+G*uͦ :Լk6jX @ #Er%G[fb4f8vƘ/ @@@{nJgȐ!;YK9UVZeC)jL2:`>4E9cE:Jt0@AB,C w*gT0)Oi@ 64n9aAQF6ͯGhSiN3ge2lb8Т- @@EX`Q]Y;h(L)`䢲6d#]&R]4wܰhd 4AU7T%t&=]#FXPv@:<@M֏;ں)( !@| yA|-%ɝ~xH'97x#JN;b5LX慢d-r#ߪ ֲeˌy橚eM>=L G` 6H@UTVOw۴i? OT s~m6L_i'D… Vit\9sK-ƢP=cN;4.Rt 7:o9(ڌh]^_KCcǎV^a}>S)O>Q^wq6Z(05ɻ?O>V7oW ছnjڵkgG= 80jPoPyob  @ x?d<*/b!fm TU0i-< ҬR֭kuYiZe_W_Uy?v={f[|UE9%BaU믿^݋ʊ~G_z饬hP۪zi"TvKWڶl_ꫯ4]׻KKz @ P {64EtI62H%+ټ =+*W *Cwx3ʯ+:@;7|AuaiӦٱaҧO m揪kt4׆f̘a8? tf͚1;4>~ثzܑGB\s5+TTO6S{a>S+ܮ\8#N{ 5E\wuaU;@eu:  @(iŋ'm۶Tƍ'lJ푶39wT1MZ/JPz$z'̸qlJGq]szV5o4/*(ELO=-;^,}N;eV^m~{Cs̘1MBηc9Ʀ @Uˮa.]#Or5B9矜;Sخ+3mݺ"+gRuDCM.FꯈBRD/!@jOʋpR*R BԾ}*YRT . xY_{"U+W,'VyYWNtΰpu<[ղeuLjTX#GLj8\FMt@Ӂt1ҋRo:Sح꧉yU᪼tv}ql1O@ Pi[O |wgw6=] />FuQFl4vR$9aBE9)G)##DѣG+&&L%U~~ԩ!fY馛l ݿ㓥G h9R7dm,H]E^ԩc^?Jœ-b'G}F_;[Ϝ~F)nR' @ ?6ELpN'vm{19"z*Ge½;sG/IB%J-mj$m)`q;c oԫW/r7%@^J+5o?YErF`'ptiq| @9\`Sri @*.rfΜiӾ{jE`颩<1X?r(D)*]s1JK@[rRE>U߻ nTI&fŊFQd{z).[A hŽ9rDs)Kq3@q;c >uHS3AGKrtfmeZqKgժUV:xPJ!C^%([}֬Yfq"S%T;+!BejKO S ;T9x,Fa4aÆهHBAg;JK0M7ux!:v=+uLd8Qb= @@YpN9PDKI9}wfܸqFb5aJ):t駟"q8PWiذs=gG͓'OQrAN9s㕃OH9ѣ.e%ШQ#+h.3< R,)㏷ Tq@q;c H@NW_}FrI*Ϯw)%2_""T=_'x 0 'l{=[M-G}dy۽uF&,- @ PYyŋW;@+GmB\t7WJsS3E@m"O9}'@H*4{Q%6(e&,,KTGĉM=2 xSO>~vsO:TS+pb~ @ JoٳgtG9}vij+}n x_jCBOH@;I' 'Ӡ$j4XqH+MQKWrʚ6mjϟo!A& '񩧞j̙@ԩc.r0Z9,%H X a+@ Pjb;uWr葋m65"5Gk@/BvEtl& m¾xw_|1FqƎk\78+}K)?wu)-ٙ#]&*UO_խ[L:Z̜QM@-U$0Uҳ"@'7| W^y2dH>CX_Eou,p-X_!Τ0Uy衇RFWpr8a%:9r:([IQ![s5~]-Y(]ҝ'7;}8K_4&L0r&W=tG%珜@r^r%6=m(KnkVr| @H&ҭRN_B} $SZP&AYN(ױΫldSP?J?rԝq?9;cB@Qt}(3G#_|an6``LiB @ 8x@*R[%T۪UjѢ?3뵜3Y@|@rF4h,]F!tݎɟOzO@~ҙ"}TIQ++8Gi-[0}E~$xƍ4^+KSc-뽢g_@֝r @`~ό3qdT]K3rH>Ysw[@>N[nŊJSB?O E ɧ, =Pu89b (,C ~2 JO@4OmWYp9?3sM7Z/V)dV 8mbLR!b @#~4i[O=-.*T!Fd&OeaРAfذaꫯ6۷DlA.HA .0G[po6mRLJrK@\>uc֖ J,$㨃P!}Gv@@_N'j},A nc @ /bթS'Tl8 78vƘ/ @@^~PcyfҤIfա(/JZǍ[A%"D  @@۝wi˷zŋ3NH)wqҥb-Mԋ'M6>g"qs}X d#P6Bl @=w}ֹHZ1c3r"zL V2˗/M~'In2o!@6T>@j9?x3ydhM6o߾0r|Ah"3}t:dnmfM6+ĭWF\P@K2aI @ nvsg۹c^z?0\s1cƘ^zO#@4i:p7l3s !駟!_@m)#F @AoVy ^s=k׮9Hbmff6i,:A!@bP1kyW@ x'G޽{Ws} zBڎAʙ@|v @@^>#\ju?8vE矛.vCJ HOwfŊ +~9sC19#q2@q:[ @ }n"MոYfOYd]-[K.7]W>5a= }|EI۶m2n1TL @ PrK6\lyGտdoyc1 ;lC0  @Kk{s֬YVG'@@ *!lv@ PZ]t1뮻aM7ѡC@@TgA LaÆsζ[oeڜR%I&[oԩSc Pj8JMA _n6`O-<믡j*3rHӫW/E]d\> @ U B C@cƌ:tfm͢Em?Ќ5N_~?{azl2 @ PO @ȗgaK:}-[4kyVհ;83~xg@@lͩb @ꪫLif꫄/_nx㍄u[m:c.F e .,P@Zv9\@ P k̝;L2w}fڴif)ԭ[tuQF#q/9sle5 @tp5{ @(nڵ}X|6%LZ@묳iܸ}4k/!_f   !@LN:VG?0MT 85@K`*6 @ @@P>~C @ HpEEc@ @ ?8wΘ1 @ @DP$\4 @ @#(~C @ HpEEc@ @ ?8wΘ1 @ @DP$\4 @ @#(~C @ HpEEc@ @ ?8wΘ1 @ @DP$\4 @ @#(~C @ HpEEc@ @ ?8wΘ1 @ @D`Hi @*kf{t\siذ>}y믿n͛gZhav}ws)=#+O><㶯QFf]=38^zYl{Mͷ~k{13c ;qN:6mc̟?<楗^2|ͮj [-{fҤIFYoLV㬳27Nו 15<+15@ P&L0rp>3C:cnӧO3rH3dolk k'ޗo1=z0\rСYxq^0pu u,_Z 7:v=6_+իS5NǛΝ;J@ʗ=7  :9#Gϡjvi'__|1 l$t_͛m@ʇ9 2![fKS#UJgnVyy /-NKSHRY0*(RҙL.22s0I}qJ@@Tv A P֭+3tPswUJe[l-מd{}0z'>yY%s\0Ed=, @@ T5 @G`ѢEV0YޝI7hwve4*=Kgwޱ͂<3Et0]y&Vm0)c`; @!4  @'hG=ƍ3{ʣSeJ%Kٹ@+%<}t;S;v, @@9H^Nd. @ ZMUid3gLĠuMX׻ロu s1o3: @()@% @do{ӊ7)S̊+|Uֶm[v׿N^_l4n؊['5 @IPyf@@ 4mԟyLruQN=T>NhT{ҥYE]t-jW?vg-wj A P3p w @@hٲѡIN0ӦM3-QFN:+W&XdIRhoݴk̘1HHI~֭3f6Sd_ I< 8*ŮzM#ӳgO*#Gif>csa' @yXbʣ?]!@RO,E,X,[̴h4o('&= 9~gӬY3x0u@@ 8R@a @ @$UX @ @@ 8R@a @ @$8*lr, @ @ @)  @ T@t69@ @ PX@ @*J:  @ @HAP ( @ @DP%M @  (VA @ J"&@ @R @ @@%TIgc @ @)JU @ @ɱ@ @ p*@ @ PIpUX @ @@ 8R@a @ @$8*lr, @ @ @)  @ TӐN'IENDB`ggpubr/tools/README-lollipop-chart-1.png0000644000176200001440000044022513571311434017441 0ustar liggesusersPNG  IHDRÄި iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx\e8w[v 餐B R0WEEFQA,ȵQ/"\(/4A tIB($@nܹɖdgvv9fΜ=_y wNYS @ @b.Ou @ @ @ - @ @ @y J  @ @ @@g @ @" V @ @ @ @ @E@:/*%@ @ @ h @ @ȋt^XUJ @ @> @ @  輰 @ @$} @ @ @ /yaU) @ @H@  @ @ @@^$ªR @ @ @ @ @H@U @ @ 3@ @ @y J  @ @ @@g @ @" V @ @ @ @ @E@:/*%@ @ @ h @ @ȋt^XUJ @ @> @ @  輰 @ @$} @ @ @ /yaU) @ @H@  @ @ @@^$ªR @ @ @ @ @H@U @ @ 3@ @ @y J  @ @ @@g @ @" V @ @ @ @ @E@:/*%@ @ @ h @ @ȋt^XUJ @ @> @ @  輰 @ @$} @%$ӟ4FKhJ @@wTvG$@UV… ӍY{:U @JF@d@  @ -p7ڵk}{_a>駟gy&ƎӦM6,M| /ij> ԩS, Ё)t @ \~qI'oO}ت׆@=sK/M'C3ό둜;FSN9%Vn6$8V׽!@4 H@7Kx%@(*ں6R4 *uԙٳg駟QHѕ559T**OE\2?3ۃ:({5kV$οoǢE.k^RWF%Q6|tWt}lP~źubҤI?Roo> @t  @@1^".tף1I?GTŻƍe:dP1t>DZI' kߌeϜ/]J>tz1xGߑg~t9YU~dּK'[  P6+ @-[zjp1lذmc{gnW|ӟN4?Hp'.]ڢxO8薻_$֧Vewxy3gLE\Mun {NJ9?o|Nbѽe_RTHV^r}w*t4IN2%oT<>sx4[I'^~!t}hJ\,ǒ%K2n|;$%炙k.~ P<V@\  PBrK| 1${{챸k#ѷoߴ̊+?y;-q:9lM?ד?$\GG$'ӯEO<+:;V>OFDq]jH|Kjۍl?]<$>bܹqgؖX+nի7dt^쩬M$ɜ$8餓bwL87˗/g6;}}-L\lKIby{L7{upGO8*Kgʍ'zsIU2//s[+sj,*!W_MGy.ͿOe]˼yf_hE~ YGb'/^8= @$Rq dd3fLl$& } >^˖-KW%\ɷ wvm'xb̜93I:b9&oSWʶm~r*[o]] nw}㬳š_Հ dHa{FՀIY+"_$ԩS[lgӗ}~;ٵ?hhOWvyJ>555@&Id'ӏ=XzyߞbJE @@9` %@lo}7Ϝzraѣӷ%)\n]ɅO~=1j:J3wܦӸ|$${x'Gd5_Ih>.䁓rtTg)a;_y\"ƍniwAm[r@hڊ+FŇ>Ued뮻.Dmȑ#NWwwO@7"#e @@lf4o#Ieee|c.(ꭷ}{#y@XR19;C:,Xw1w#}k⚃>m7֤?я:Ηty;-Ta|Ţ??fe51|_E,/o6?oO_qr$W8Ѵlq4vRU|kQ񞏷U-ג6cvJǮl :0 @($6 P>RhFL>-J_iӝNq{?WU ~j ~!tkd;m>roN'.n|wTT+^~uKFSrQl&Y{-DGgϞ%IJe:/K%īuy4F 5|c_i{;Y87cΜ97ݜo7X Pr%7Lt@soj_~9֮]v=yO=v-A 韵d}S5mJ/n% t@~n*(+A[~:XMkZϽ}s??/wJC6oEwUYH~ƪ(?XA?_$+ΓΜm~o}*- @@K7Mk @ՍV_֛{qlՑaWڛF$3f̈d_pTYŘ| mIo|Mwg}63J#<;s1?h1SIOmP9P$L@OGuuu$0~ߤ}_͔9!@4 H@7Kx%@@sύd%tr\xᅑ<Ȯ_b^:]$:>G߾}EIɪ'>~*pDŋ;JO}S1mڴw{qM7V[m[ 6.立2V'NKO#8` s${\) ةI0N~uE_pz矏O O~Ikgyf#ќ|Nџӫ;B &d($I>AxK>\ @X & @-bŊWٓDԩSsJ%$+@wqx'z6 @ Ы*{h  =l{yn|NN8ap @%` |ɪ PVG Т& @ [$@t3fL$u뮻.ݧ?>  @tK  @"8蠃⮻jɓ'C=`T!@ @lQ  @,&L*rq7K>R @bḠ~ @H4د_Xxqx1cƌ|ͳS @ /` ›k @ @%!` f$@ @ @@$ oE @ @tILA @ @ @Ѕ7" @ @JB@$  @ @ Px ›k @ @%! ]l @ @(t͵H @ @.i6H @ @^@Z$@ @ @@IH@4$ @ @ / ]xs- @ @ @$$Kb  @ @.  @ @ P%1I @ @ H@\ @ @(  蒘f$@ @ @@$ oE @ @tILA @ @ @Ѕ7" @ @JB@$  @ @ Px ›k @ @%! ]l @ @(t͵H @ @.i6H @ @^@Z$@ @ @@IH@4$ @ @ / ]xs- @ @ @$$Kb  @ @.  @ @ P%1I @ @ H@\ @ @(  蒘f$@ @ @@$ oE @ @tILA @ @ @Ѕ7" @ @JB@$  @ @ Px ›k @ @%! ]l @ @(t͵H @ @.i6H @ @^@Z$@ @ @@IH@4$ @ @ / ]xs- @ @ @$$Kb  @ @.  @ @ P%1I @ @ H@\ @ @(  蒘f$@ @ @@$ oE @ @@eIGvۭ@  @ @(uQ8aÆŒ%Kbȑpb> @ @ @C[ptȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6V@zcG @ @ H@wȣ @ @6Vrcot @ @V`ڸ9obdMu3fD͔ۿ_a;EkeM#8!6lX,Y$F .,p#@ @ @~ G6RvMPTݶGQM @ @ @`Cb|'L>'k?چ7w n4 @ @:xsT˿ЬX]ߐUl!$  @ @l+L*/Z6FI@w  @ @ e\S]Ty9 '@ @ @@!Vܪ,WKTFK@o$ @ @ P̄s<`  @ @ @SsS9K@& @ @xO6'& 1a @ @6^g[ a; K1.. @ @ 5qnj#[NVw)/2n-ӧO&I[pI  @ @ #${4 @ @_@H  @ @ #${4 @ @_@H  @ @ #${4 @ @hhlg%SweɌ@  @ @ Ё__?{vv|VOƊuuY z[@' @ @W>G6DzTWd*>  @ @3K4,)ԃ%K` @ @JX`]ccNkntN` ^  @ @kJDwt2nt|m: Qֆt(. @ @ P:Tş'Ӷ1OWcQU. '7Y!@ @ @@/gN&!FGQٱq. @ @z@EyYlQSYUTVCK>o$[3i~&@ @ @v$ہq @ @6M@zM @ @H@2 @ @l @ @ne @ @4 Ms7 @ @#  @ @ iЛn @ @hG@  @ @ @`$7 @ @ Ўt;0. @ @ @ Tn&@ @ @xkIh$ƍ;wć>߿V"@ @ ј ;|^TB;?X< cTG٠̅/P֔:z0:e]guV,_$i|ǡfy}{կ~5/z>}zr-1tV7Ͱabɒ%1rXpT @ @^.̒eqmĊvG:a@w[?;>?FI:YĚձN;k۝?p$>};ܝ]^t>3磏>:~W\*V\Gyd\s5b]y/~1|O|,9̇O¸]E @ @]%P'P礭kWUTOCcS% _Y*Nc9-gЋ/ɓ'Dzeˢ'\z.g}vr_:}K/4|N%HL>'גUW_}u۸ꪫbŊs @ @ȇ^mֿ(λspzu:׹>|>쓹3dΛO~_Ow\V 38#}6n  @ @.XjMN-H}ǂչ1BG{ tO<^뮻cƌi7o޼X`AZ9Ի㠃tq"A @ @ _TTZ9UCrS.u^N;c|#$b;2?yrfw4#FDs @ @@W 9r+*o'xQvr t6FW\qEG?Jn^ȼ4iR漽&{@k텹N @ @`<>dbx!b-փ;FؘfSEܷt-Nٳg5kVlp9Fղdtx;vl ^o 'V\u  @ @$ɖO%Ngf w:..LԸdq=uXsՒ>Vm {@%o8[M#/y˖-˼۷o漽1Vj/,}' @ @t$xXQWA~}S{N ݠPy\<~5> V.i%N*X]]JGSSS+1eʔ?[l|4|tnJ @ @`c޻ŸoȸvK_ 1OSm:j**6./I3zd\7祸>V{>N}+]6X(8"68묳bҥqo_~yœ:7-R&'-c:KXpu$=XfM[E @ @h%04pv[n+'yڢULwy[Ůo1YȹV?sM(!C2b N8!smbݺu<0٢#:9#p˘7#i袋$ۂq @ @#PczǎqgdZHǠAO 3;i¼%@ @ @@~~2GWtgGsLeeelf+'@ @ @@[p466ƼΝ!$5*Srvm9={v漭x饗EӦMn @ @ [zmzڵ$סCƢE"YOgvyN;ɆI={oz['3gL%eɾ @ @@݂o߾>vɒ%yk2 !vXSO=fj.\;#2N @ @ P6LQG}s>Dg?YNN0!>fKNN9.]y|r뭷ƕW^~=zժUQ__O>dwqq)' @ @.(/+~e]V({@< @ @ztR"@ @ @@qH@< @ @ztR"@ @ @@qH@< @ @ztR"@ @ @@qH@< @ @ MMy_hK @ @|;/+.z3VȚ8`Q6CE/ ]S @ @kfEkus^J|g⸭'*]-` U @ @$[v!ǗzT56fF .yb=ceʺy2ֵ}F iE%` !@ @-py*{l|n)`8ꎿǓ\+_Ds,Z6>≷%) ]n @ @^[*ZUٱ1cYh/X:?;wm7 @@$ ) @ @}kfz⭥1VnK$9\,}3w%, ]“o @ @y#d9wXsE+t1͆ @ @XQWW-> εN. @ H@ةq @ лӀrϩv\ieX ;u:N @zAcGg=$qQYwUgDzc Ǯz ] @ @`?i|L?z>1_n+n1.& ̮21 I  л${ @1}*UyaCw0&_UIAUU61m;.0 @ @˷8 5|ԞjR}c@'I n ~@>~l-CK$uvIU(ZX1 @ @ l9x`:{"cQ@%/ ] @ @82(=d@s/sKZQ򹥎sD؂ç @ @" V @ @ @ @ @EyaU) @(^ƸEbٺƁcGÆozt6&@ @@ 45eDc;.L.:u <ӯoL􊡣.|3Nǣ⊕scO!Fǥw}kZyC6V@zcG @h[K>?j:Wdڮ0%o{v xlZwH%/͋L7& gM=ebZwڢ]G}cSx?6n3E =sK @"Pz~~>bZ%Ή>1z3ҷFZ3[%d4NO @@xaL @ Н+^ޚZ"*c[:ӝ]˴zߢv/bmˣwa1hjDZB${~Sêּ@=_Y$[v 5orΫS[}O)+:8j1> Ȗ[Ā֡?fdL2\&@ H@go% @9 ]pԾxE4Y<.k?vӪccESSS]0`YWYrTu|W=eBUM/Yktdl:HH H@ @ @ OmiQ3u˞K($/e+_M-&-y$ l?cYTWv$*ڐ]Vwv$u|g"-;:7OWG 6%ӆ [߽L?* @MU($@ @-y^[k(X1}{>ahjX^!NͯQVC鰞|~wϝ.8o~T%5nt兺b1/_+ctߚ! @]% U!@ @zMkֻۦ䡴'1vYEuTlc[IVfϊ[A(*Te⵸"؝XڲdXeEJr+c 菥Vlo|qvEU @@ H@7 @y?)=u;I|ǖ}7Q9rFcxט1k֬hH%m]K @@woVs9qaŔ)S_~KbݺuYϙ3'Nf̘=^y啸'x o;bԨQ6 @ Pe1b{5$MB,(K"quK7C1h3u @PW~SNIO[UUUzg}v|;/SOM$=بk5oF|M_8'|2=V{C @@ T 2?#'^T^3*?1|_FY7nP5`r9?mqΗnc~l^k# }{7$1˒YW^ye"~'.k/tm'@ @`־yNI0!{ @l@$>;bk68L)W24$[klf텹N @@ch_#UYiZ2bUmĐQZGú%9uqҜ @l@I$|8'H3&n nvٳgg:Ix饗EӦMn @JGq]󋨝{Eԭx.=sh +gݎT_ _e4vOMO?8*ro}}+ڨftֱ  @Ft8C2v!z衬 N;i{キC3gڵk1{g  @J[aXp!/fωHSX=O]x4-_üI֭{nK%/upmV׌7x @]"ЧrJ̚5+=Ǐ/yaꩧ2uUUW]@' @%)ƺ?Xةz乤>M|Vψnk?&%&eU?Nj[5{x%@JW'> fƍ7Æ Oܓ<0YUq뭷fn1c! @H cYtwV?3ʠMݕU|[Xghe,X5d㷳  @_j]VAk[n]|ʹ9phHqr衇Ʃ)IV3'ox/8{x뭷믏:+= /L=8,s @-V|m˷ΎuKa?Êr,lxun4=H{tQd~٣5z3Xpl (\U8w XP@A꟎"i JQH> tP!-Ifs9s̝wΜ0xM @t@M@z|pC'x"ҟRѣ9e]{tM[oYҹ}ibzmm_d @|M<64h' 7,۞&9H@013̗sZgG!bz{FRK< @!gЏ|x :hܤo.~)$@ &hWs[wE'+Ac$KK؎X/uU.yu!rm:m>1rm&@ Pʕr-oV~mVq5c=f͊ٳgg7cv*$f뮻"`z6۬GM{Q(B @`*bJ?ldn7V4M(8t~Ocw\NwFO,r}\өL?> @z@UЩÔ)SW]uUr-/|!\sHM0`@|&;n!{'>{G~qgD?B&@.ֻZΉw^5.?y[ [krݮfz[Ĩ-oak|]yY.[eŘ~qͣF @T%3%ݜtnbyeiYMnݳw @@M _}Kqw~:r]Q֏kc~/qΝ1:I>Hе &E\P$m uP~A:EkrҸrD;FIM#FƼ"?pjA @}P* {79rdz2$Ǝպ櫽+Ku+ @=#om9o?%ޚØhsrKq^[  @.Pzk/g7#1bDIӑ/^z6>l5:* @@mƿw^@bU?9r=뿴_ႈ|[wFn17*%@ @l^uUEW\Qr"?:]6htMƍo @'0?;-|Nchw9/߾m[޿GEV_7*x×ó? @K@UЛlI!I|衇Ɲw)>tPVo1a„Btd^=?~| 3i Y!@,-s_7]qWx6WGGߏ/qGcroWJ @@Enhhɓ'gΛ7/b}ݳD+|2=klロ9s#.]tQ*裏foeCbgIܷ3>7g=h-nIvRz-ph}9a=n͘OE1EkvGU  @Xr#<gqFp+#Its:FSSS?iz]v)|ꫯfW^yF+ @>(0畛--ptXj1bSaۺWn.yG91bOܦVZ=_;*YIFzw? @:}g? . [nܹsJ>/8 u$3<=r-{ 7 ,X!@iWܡH9=|x5WnJԻZKL @@ TmtzWwy睳9?ei8mZ6fm{g466{Ezc‰'攞 @>$~팯*+R444Ĵi^o1KRϞ=;K/;cfwh @@O4kqFk̷; Y3$jtw^5+4 Z)xv6nFVX7 @Lj ;|>cVX(ϬYώ>:͛O|S!C U{7fߍμί<|ߟb}#"jD @FO:XsSc܁[ƼD2r_5-s @ @{2+E?q.Ofŝw>l  d̝ݵ;k+\a 1hՃ9zN1pjދ @ P]^o_~.Gވ0]V]u.Հ Б@nm*Z3hB @(]* |#ӧOohZ[[mꍶ8Jn" @`u[|~[ش̨ȭ =$@ @ T%=p{ウXvuxJk1u1bD%Q P@ND,;ɑKea!@ @NC/_#z׏;.y睢>;I' 7^b)$@K 7xH4rEY|_O[ @ @@Wr3fY,c9&?Xar:_FGżnUVY%E  @j&u6~?;"Z~q%ӑ_{r @ @`7o^w[(4!g? mx7:ڜMF @'shhő쁈F^)6!KV%ӫkO?}尞>l'@ @@T%]y;vlUhnuJt(h:򫑿rϳt~ul=z$gIe|` @i$GӦMp_i 'W53-Ͽ%&Ll: @Q3'a @hw9on2S @t8@_.+9/\_E @U=c=?g^{-|ovX @h}.֯_~.Q @z@3gΌ|;1eʔhmmLzA .i@zFi^^M @RjSpqq,VWJ t@%stU]a,P! @E~s)x>;IJ.+/je̘1lXM)K"Ny~hȨrh{)-B/Z}29,zy-]QoοB[nL4W1suU׌7ݲcP @@UF@744Ğ{)M40tas$ ЗoL3׬sz3gD_.8Z=vҾ[XKZyR1{F˨R @@UЩљgKvm~6Z @@ [Z"wڼ|N547wZj @ @2GKGo9_sRVֆ?]i%I7+[=*=%Sk|M2gVFq4xt}d˞>  @ @@UI@?䓅~s+[!@@oh}"xMnג$LO=?8G冫Jo_wF՗"ܘTbˍ]"R$7jl%v]r%&sۣUF#Oy_;:kCV_;V`WE @ НUcXzº|rP< Z,Z]I}K;j.uAENQMWE_گubJ~c1gܚ:tB @ @UI@fp SQ|KK>pg\uN4_zFvü|2KOH&.eiRUNk.NL%_gWG^1u \4|ﴨ @ @^-Pt.yo|#9Sq^'xho..O;,Z:*J|O'mzmNh}UFW"jJ}+.#v>0b=y=}јM]>(F @$Ptc=6'yxsΉ{GJ%D@\e4cYxZ~qL4ۃ $ܥT>S(r˯TrJUTb\sȭ0Rr?aDN=}Q_ξ.`j.w @X~wbYfEc̙Y2zQ__Æ ˦H'9m!@o 䓤sE"5IRq"TmcQdRjUNNcWϺh ׫Bl~dtqKkd~Ƙ܊1w쪑A @Xqs̉/hWugKڇ)MtpS~;SRJV[#o'Vr%00ň䦉i:?- u0鬨ptl~Ӯwxc<+{ @ @=,Pt]2mرeС,' ,d:|{56r8H]7CXm}汨[eTfN8{zuM/<9|1n͵һ  8fux!a+N靨I @:L #Go csSq]4e۞;ꥆum=0r`ѿ/aξ6r×NnHF=7-3:%I| t/z!Ƣ+$@ @G*#'m@~/G,jqn>k[q[ÕqzdzKk$R{b~4\chh^1ƼG\b[a| vNK @ @]-9;! g~y}u+\nJN@mHodדKzC'SOr-W^'Co @ @@0G8M$P@Ϳ+r_wFWK_uۭƮ M, @ @S@w7Q(*#EuT቎6Uᨳn:Gnu @ @)` yDM@.K&.N~zs\Cc4y+aJ̝l~d^!u[}19.KW[] @ @ H@Wt@n"$[yBiuTn i5jT 7J{- @ @@w F˃wEUD㩿U֚o @ @4s@/ig%om#X(<_/>MBߘ>_ @ @4 %;޲Z" GN @ @ @@ H@ @ @t9 @ @& ]kgD< @ @#}D:  @ @Ԛt @ @ @H@0 @ @ PkеvFC @ @>" GN @ @ @@ H@ @ @t9q<@IDAT @ @& ]kgD< @ @#}D:  @ @Ԛt @ @ @H@0 @ @ PkеvFC @ @>" GN @ @ @@ 4Z@⩾@G>55)r+uoCOh}$܊RCKA5 @ @zZ`N@sn!:7Yҹx?q;66tlb]vOOUjh>^?AKE~GFW\.7n~Nb<,QQ# @ @ ,Sp}YJGezjZqă>3gΌ{,{Ƨ?x뭷:j-=/4FYGEգqh>biTsfE/~'|Gcs @ @JX"З_~y|[]KN2%;hjj^{sNL<9_L-2O^~7j}rj44U+;Uͭ<?^hN@ @ @@ ,Q 9s{g,kA6lX6r.<0N8ᄸbv˶?qqǕwwUl䧑tIkURŧ%1mOXRp* @ @ ,1 o=$ZZJKr~&OF9mK766e]GK.$}^oC?D_~z_K*?ȿlU$@ @ @|:g?OēO> ] / 2$gg.=lۻiV3gt)7)RW77ExK .p#.V @ @j t:Fz4._yӲ\.*[ou466fI{:bmm_d @ @K%^:4iR钎xn[&N^{mr!mE~ @ @ @`XbG@~teI8g}6!c„ 1~l. @ @. B @ @LQE) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @) ]& @ @ P\@R @ @(S@L@  @ @ @tq @ @ Pt @ @ @@q .J  @ @ @L 25'@ @ @] @ @ @@ejN @ @$(%@ @ @2$Ona :4^{)Sb֬Y]Mu @ @]{h?SO=5&MMMM{H.կ~^{m1  @ @T |:j0 vu>ӦM/;r-oQFسj @ @(ἾkqAe5 7pC\tEq 'w_n~8;zU @ @}[@{ǜ9s'|r6ʹ}Ƹ#HV|%̙3WN @ @%N@S~f Ouuuq衇f}H @ @,Н{.^y啬V:s~:l[G.˶#- @ @X$;9sOlPX/2rX~MSN-VE @ @ NNO>Y1~zG++R)^ꨚr @ @y>e;SaԨQVQm˛ocƌi{Yfuxօ+ @ @ @@olۅ,wҾٳ;q1yEֱ @ @U@3NѶ 0m/l,]+ W\1RK-t4ߛb|"H @ @Z4ԈСC !apuڷ]ZaՈbKG*#@ @ @@- YYuU 5MVXhN:2,Q5 @ @Н^P㩧*[ijj>4qĨ՛] @ @*- ݉mwоY{yeu6xEֵ @ @}]@3ބpmjM:5x[\r%mm]a  @ @D _uƌ3 V2eJpu׍m&@ @ @) ]iOG3b[n%Ν/by晱;D:t]]]tIJY @ @]\>YU|}㦛n*tؘ% ~8C-K/oV,r1}C# @ @% 믿>&Mz#ۖ'Ƶ^[s[~ @ @ @7 ggnH8p0aB?>~c1[ ( @ @ @ 4xk&4X @ @ @)8(%@ @ @2$Ԝ @ @ H@wQJ @ @e H@ 9 @ @. @ @.Ps @ @(. ]E) @ @)Pf{ͫ,1S @ @ L4)Krd)j(0a„xcݸW"@ @ @3f̈aÆ}P5Spt?~vg? @ @)8*NZwuXwu+a?ǥ^loXkK.ɂdM;Nm.믿>.袬d7C=X /̂G>j#vQ|qg%o6Vy睗ƑGYs9'+Y#L-v[}YX'N:B;#~gq:bgyfZk?k.ƻ;N?,5X#;{gY\zp 5vZת?яj.$kqI'\׿O7n\r)5>?񏳸V\q8Sk.Ƈz(N<,VX!~ӟ\SN?>k/<R>h{YHF*}z|Y\ qe\Z|⪫+b|7F!7ZYy뭷_z!+2r\q%W獲t ˒'QL^~v}Hbe]j238N;T1&B;CMƘ\b~k2$\qm BlMMƘ|`SӟtMƘ\Db'?Y1^~r˚1@+ĸdW_}u!Ə}c5BGk2kc!bMlP1&jbL>oBkvMƘ|`\1&cBZMƘ|[1`&c뮻 1&,d? 1;&cL>D,Ę|hS1>[n12,S1>#j2ïBC  1& 駟.Ę[1&,bL5i 1&Iݚ1Цckmm8ӠLQV^c @ @H@# @ @ PtY| @ @ @@G('@ @ @jqHa=]$q$7(Ęٺ1V欤wn{L^+sV\8Md*i{ce@ӻ$5jTe:p/b  zѕ½2 (fe½2M z̘1½kL~ V_X 8bĈ W¹6lXe:p/cL>~s>W>t1&7!pk5,N5(( @ @էO @ @] =7"#@ @ @@էO @ @] =7"#@ @ @@էO P Jt @ @` @<$@%K LJ?~ꫯ @@.yve,BPo-2|UWz t@SSSv馛F~JoxGc׏vءv]b1O(E`Μ9qo_qc5l: 4TwXcԩOǠACP5GiӦŬYtCưaòeYGZRv+믿뮻nn+zQo>_qKGy`3<&M_r?.sou3bĈ߿Y]>s0#MHV3)VñXz7|3j^~=ztGPy|4s8z{Cm8^$*{ƌyȑ#kW_r;POczݖ.i\B=n^{x'fvЩ + 8’Z؆׸m Ϗ!wy'{Id*#ޟt9/yY{KFʮe{ÇDz.V3RNGydwyoP?{Gz/[nzVН={-{:t׿뮫J[lE?.W\qE}vSO&MȌ3&{ܯ,&*/+r}Y}y5O9_F:3M괶vo}٧K ;]`Co< B_wꫯFzkOoou]qQGU<~i/N;-㥗^_X؅/H$!~x}w#?J?IJvmO^u[bPW 7QZI@_r%=s&}vѻw(I%}#T j8Gg']6:kۻ+Z{ ׏-SN9%~ܹs;lzeujCǟqg1}x-jCv4 <QWW,KX%O=FL<Zm;W߽!=Ir}ݗWi mitu։:(veoTicɾM~+*MnFO|";C=I+*Rÿ&m|6,KY:|<{:o.&Njo[67mZ{-G9.B7=>$p9ST'ybTo@75\@g|RO.<۪7:m/v|UhSɕ$O^;X\iY21'O +ߛuGb&BuXWbꪫץ^:_|n"Uz'O>Y(&ۗWqcK$Ŗ\7 V鵏̫$;IɅ}wX)PVku[Κk^bDP>eSH>^SQMo-pm$#Xב֓Qbd1{L> .Ğ>/t*#'wvǘ 'l7I@fm uIrܕ׸qQϏVzC;ٴnz= f{n'b:-};۳]Yß!CtggɈ|bU-9 .|;E'ɧ?O'ZzI_o{Cɨ%b+ޏ֓鈎Z*]љW{+Kזھ~u(d#;|B_ٜ׎+W~N5єI')Zi1 ]w5љ6Osiyz]~Yq QH)SʖZMCox~ 1&ɴ웭]vBoCCJLYFS8_,HJN ٶYttIIu^&%w\aV[-v.-}ϝ~"e߄oΦ$JɴHt$QiJ:*6'7 'Juyj~LSO?UWOYk?J[ou>MGN' Y܂S `{^>I'ӒL\Oޠ5IXԶWJ㶿MT>"ɧiyraO.H_IVO}<ɅK!b0L.JO7\LӶmǔ|[qAd^|rAOO)}ݝ$%d^|RQ{>Cr?ɔ(%+UctH_P 4uuZ1uo~L*%S6哛v<ЙgOY/yalhXW[,O:bm|'S*eA 'x"^Nktq^'|:[d/IBw|2O6K~tG>,ۖ$K"*?׽mf=}[ϏAo13#0a„|A[>~y%IfGnw2hjmHՙ$i.Qɴ&M-Rպ6Ks!m1?-49}<>%hןtt[?vXa{VQmKK]=j.=G9T61i iu֝RA(Zh(b7EѦPAQleVmqMjIĶ?ޯs+}NsT=u S;֕,nkvO.6)s9kFv(,v 5iuFt'|ʦq,,SV^F8KG>/ &,>ė7X#Tu. `)b j4G+Ah zcW{ݏ4&g:V{6TƩ?~kkpbg=*/!pp8_geX{ մ'R1 }}{ߥ h77bōo}[19_^4'p=K|40'w Hv!"KuIZa1" FHq̾*VpsCf<Ŋ8wEVC{ʎo_Kg|r{ i9cSXxb ~lqN ΗS_Kyֆֲ8Ro"W(F\y.nxMm\KT+T)Sׄ/)K vg o_rַ H,㨣 EVBpIԝ_ ;\xLnJV΋u%uSN<)1f3>y]R˃GQ(m"AV!Bm$'!ˇ8;]bU +aއej,狧<)vI V߼ O[qa,i9cSAZf]yG?і\Z>mV8Uuʊ" GaI6,LNL\ȃ!QgHZ!i FeC±hߺަuVVJAW7AtHh"C#(ަЇ>ԂO0che3]00Dޮa~~n5T)Sg FMP.ȕ):5A:#e[!Q Hp c=,PY׼ 0`~LM`Tr:ˁǝ82"8_G}tSwwo!苂("o7!K *`AL dz//B ]5)>`;ߗ9 :L YKc1Ab=+n|ٿ}s9{a,h9٦^F1(oTG=Qv %S,x?׉t\=ϭ{B^798}Ynaam]q)l;<㏀R,j qṓ{=E1nwΦcSz=kXPvo~uI2A*j3TĠ}KҸހ=XØB0ÿ)r E ?[0Tixd.Ɂǝ823P؛BF4<e7*z׻l^S8eC_,WtӜ銁6Ag0 PX[s1{ʎ ed @y1$4Y-rjǦ26]M-îϦPuh<1cQ D.wXA ^~  IN¥X@nQϮ{@3S8_ŧ>N US &cUrMoLVNhqoX!|4egoG,~S\ W*rk.ߦTkc)gMBgw <sXN0 4kB^mgYt24~U=rjǦ2]G1.i&XŒ(@IDAT<3Mr+)+ *9y$+P><1=O{ŗKE]HiXi–M(7 Y*]yg@ן_޳{-.]T@RA$\/dϤ+-y(?o vd ))&h;ua@@`y"ٔ Ր$Rv͙ +ŶCtC1͘6q9 m,@Roh9(~Xދ"y\m瑪0q@a!<,ȡ 2ԝ1PR^isjǦ2]uWuP5),M+70I# gʶ>ė7\,$CB(^oRqЬMׄ[e/o]WN6BH&*tR{Hᐅ2M mӴ{x>7+Ħ:aEz(Y]Xҗ4"s7ez:b2Y<&Zi}w'9˩i뵷A}{߂ ;QoԞ,^3sxZ/|dl h/0WC|; U~+& Bg3|{V-~ kasqLSs.c<o_P^1v1B#bXhϦu:xK{okmm|;KzeDY24,˷A9=S4}ڱ3fDl ́_L6}mnmIȰ`IcȒps>oϷ뮻K~%ҷx] }`I ]"{);ҀV&uKM`tIleo+E 0T@jYr2$V,no2"DN'o4 ,qU_Jdf A0!I 6f6yG&yVKq_X2)[ Dgd!Vvi d 9W" / O)#oIQHhR˧Tdeh{x~WRv|!13R@[>e ~ 3neRNTtoY4kȭ00"6aB5+,cAdIhWW l1! {< LLPM$\|Hir[aD ŏMQ XE ʷfJov? oOx<@Ia\ /$k#Bw m֨D gvDY<(k΂y9a"M\&$@(14 A6ayTǵsdٸcGP/.=\^㐪APDX!h0/ v!\bENZ )̏91N8/H*:$o!" mC,lJ>wI+B؀Arq,6W^yyC:էd>9lPࢋ.*R c4(BXZ`^ [ /x LxA7RsʹU)6y ` &6-Vи̥p'ShYr>$ދpMO aR- qŁqR"E@ ǻ: ؒb1%Fr-N,!\"h |SX$ayρ+&! EKM#69y-tջ)bZA,;X#(pm4qU!^x`v'*ۨ(ŀNhc%ǵp}R{go /l|}mw^cmBc'x_lp?wcPŜFبz Qv _ !479Hx@xßmBpIiADe+&xа/vL 1۫ftY ѭs*"X!A0{-`/cbgmH E`ý=@\>K~WC1QF <,bBw htݯPBGS:vqL257zxL?S4ᔑ@Pď̉ Cotm\mau-gt@ qDG>bY,?FHǵ1dkȏo|^1T?G1/(9%4NXU[XyC6C;׵0H0i[˫|.㦛n2Ix*$^a,'?i 61! }ϸ#!>Őh fe*mO0$˺wZ1no9}(a1?@13-W6 S:c8v0GedNfsb~D}['=k[ y%醄t'n)Szkw|Ʈ"0hvU$u&,D. PVcr)S<ä7..Ď.h!akX<&6NJ% Bܾum(;m{>X` .#2fd#n` "x0gյ)k'XH'g@W#rݵ,s@@swYهrfU1;&|6nk0f7Algʓs*A]y}!"<(Y=1aIGX$8UG6j0x޶!ik+x 4.¯Kxݺ}7}"=hډcC!ʟK\ڣK9>\pA>b`N>PnUBp*Rzru7zU]N㱉2 $Q\1JD4; y2({=gy| AxrNҔ̴KZ@Rئ!RqMc]bKʳ:`HGz$ ֤+mr)Xpg J1!?d]Zʪq}brKM d1YJ+:glM禄_ԄJV \q}mTK1=\K+ET@p%TS*!AA 66ZKb%⚬pKYwgOUy7RdRFYs~<$Mc9rgmdK1mVN16u]&[q{=EdeSpd^rMuⲔ ڎ91vCJAL<5"R*Y%+_j+o U R,a͖e .=/!a5e4PݼMX(K_RqLz. ߒAY'q~* 뼷34!+坲6"3@.cyݥ͜_[-?O,M K+-!鯂̫&CK`a r e̩᤼) Ɖ@K K}.%d.UJcJ)ȅ÷F hKK[z]'˷n֏~IOz w]׿RڦGvuY!0d!__,7ƐP?CƊ,J^PZn֥^Ǝ0Z*ڎe,J-ʠ`)y>W2co)ؐh)Gw)(6)#A[I/ <Ly}I'P 00@X%YņGIwC +D8/&{yxu7:# #AH%ZW݋B_`khRARk& 2k#s+n?𡋷?8F3ǘ/eecK!<>+}[os*_b5~Wx=# bPb ؏[C,dB{Y=RTƉ(ٗ!ײnɽ߭=gC`XRD {6XKiNa&nG7aŗ7?2m2VAUC=/"[k6'&xL%F{e#[%\ :7o]m7kXAm\ہmi0wF ᆠl3 7dc:nSq$_hsQȒ8[\NVھ~ "=ﶴ;6.:7[=?qf}WM*_ t >A\X5 6Ԃmn5q ~G7L5tڿ'A#ڔ-AXKVHW]{kmzQ.B֓@u o KG)?)K0 e͆z?jMY7qtNV$bYV\\BBB v}O 5>-^hdy\ =v)wYJmt]c< 7 !64fZrwkX̗6žCKYG텠w\VʐBx6; s2p ̊3C9rﳙ&"*Lg 4Q!ګ U ?̮HqC 1~4/o7e'8d(BgY ߔ6e,A!miZUSEd9Jw0{ 1ƻ0 ǥS>&u/u{/22wÏ  jFeE|)'9+]>#Hk){Z+0ћ-\-_*)Q<0 -$($ESƱˆ϶I >,n+`D 0>g4{`RcfYf, XY+pA5!Azha/X,+^cLBXʱS>WIn_n2}3gS<AUK"6X#HCº2BlMP AT˄977!SٰƊN˶;Y"Pa ʢWp[`V=?X c}X`hɳKZWFu5W Y 6-n!H喩Mvu‰5P.&ͭނ0q N悶yuy 0al?%-orƄ$1T!_D[d?=)# e=V9E6'+͓"2/& uyx 쵮z[_jD20ͳi<{ROjB0lnw{^`$|n7z͢[~ )<"Ş?3|_aR :3`cYw Keĸ@O &,]l_E/`GGvXŽ,{r_XNR#kpsإrqX"o",sHsG7%Y Y^W F??\S, b+|6P߅ vKB;W'v:oy^pZD@ `xDzz^'XMQT-fdݺeub~i"=(N:$[1xCbpTMόq=1'W_mcqz3M&(nTnYsN)lޯr()E`  ?8yAЄSMwW1|4MA޳#bg%- ahjnVY)aG:z^TgYu.C[B10(ꪶ $(ZR~_ 7GNWV,$V6X B>bJmYuj";I??F;KU ԂmeRJ_Z.c=RGY rH iwgyf)ˁ0^̝:DڠtguVS2 [c>7F4`a~J֚=h=5Z)ecϣ iYw_8VpBC⼌Ug jr3}8'ክ{JYomQy5o8)Yv>[I^^vex+"X,BA2wy%<6 ^'%$[(a )J =Ioѷ I1M XmOv]w V^ D:1KYYd jqȐTsKq)LRƔ[;O c򕯬WA_STǘ`>SFֺR"7'0.}QnS53BJiJK?M+J0GIKiL,1}iY }NJN;-ש[ʵz<ŪKhyiJ>_/6J1撇Ռ?Sz3!1C:uH_orN? s:MnC%>3?3r+GAfe2?ECJcz-8w,%p{'v@lc!3cGEy7a8홳&;빔eMNrhxqSVBm,}AJ$,oT-ǫ1ItX)SmW enB@DrE 8o+,!$`G:U, s޺ P$O'%O֞!)VXA &BX}饗E#xr5-Qx_όis M[ !R*˿NN)Ԋw/s-#} IG rE-(*Fʷ79VU}7 c&_:}kib;;a1g,*paxEKhLެ.]Ck|SxlW>]W/C*2Oѥ ftV]xHkTj9ED)xſ5bAɕڎSƀVMt΅k?A2 $k#|'H~kkgpd)n,7908 (M׽ Цق&vXLeG:u 2Hha[r$pCe-Ws=V<eϓA# .mliӚ) Xc{ɹiKg2 YD t)˖±5 tb1]L]JVHkA) &>qr &mM$aUs?n+$) tb6U?0X+DH #ǫNiM&9ǚ%xwA\9%kJ^L; F/_$MER 0Z<" c>KNX1g[%Ҁl~;^{ ~nuHkc&uM0>boAw53𾲔枡ۯZGH b8`D lgxI*CCh'Y|TL\V9yjƗ oE, .b7+;b]aSHQSHVa86I+HkS{^Wv4yOS'y}hJ j1-t *mlJMR`'C͑lb4>e&m+mLp(,JpaHk$h8T ROӍKC1v%Wz.U;ieTf,~ƓAܐ ElAU!bRR&puL#d[_ LaC`GwqGM @'\uJ_׭XeoA=O9fa݊ Y pMIHX=橈MpK7CRNIy2cg$ <`CB8Yn,7h$Kcx[00~˙'%Flv.up RYqfS=i$.YՖ9=޹ƋS9m`;x&R"{/% zm06X { } BI\Sl~e:{^ f?=f[O 831W^ye Z#,{7gZS<p;RomPy7 y<|[O30nN$X嫁FIAҲNRCã_B)KuŅzEK/d|3pmb/ֶh@o3x/8L`Q* dyh8,bl1 uU98@?0݄$tꩧڱI~/Cu+YgCxA@d`8(wa+ies{m]̩?6U(Dեv%Mc)?Y[>ũיkK6>23 6ޓ~C]F0j.)N,;DW³uwHE :x1]꺭}!kqT ־wK&9.B .]$+/7ەJ`G@qyPI!I K G׀I=pXmMyx{PV )gh\Ý-odp=NG_ŞBeFB.s¦J'GsT;ŦYoe_Jxg*pǠc]Y '9? O0x;`27߅)ebHJж~@&N+cglS:(XӟԠdXYigHVI!8AxY{ꁀb9 L\9( $N\Yv X%iJ8餓 93NA/ Ĝ(_k}̗9@)\# \ljo=T|l@v _‚J00/vY\@2uS)X;Xw>BR61?[wx߱O~H|qh\5)׹'v˗S\~,ٟ˖r7ǂP4ۤ:DRllXy֥XojSm"h-:Ek\Z:& ;J 7'ٵsv=m+w-CZd ]hj\5@aopI*^XZ 'ڶͻs1- ԁ7s{k<5=6_#pJn%¸&ks,x4QWRuᔇu71<[1OQ}z"Cgr%o>wovB.YCi!AIj.R Rgkex>` ko5m%c;ba2/-by:[)cu߅wKiО6,y6'^[ι=Sn~6VoΏgu=6hFoS0ӏq&h\JKE0.mĵv@b90i?? XS]u6\+Z dQ6_0&rK (nMxMv6Ϙ>je'&:fsȷ#ts ݢ8֔DUV<e`xΣFo̜ />S۱a.kK6mۢG-{0.oFZؗ_@{dIܘAc7)K SԽ+^Qލ^QAJ-i?6ތ.De3Zqe>_g7(p)2^,1rO%Li_ c@ PL3v49K{r^ᵁc.昉׳T뜧^9=`hߚڥbU-,bM [z쳏=wH8#Tt/؍i36f*r5i$J0SQے{Xϭ(WRndFL"ȈS1@מcgeNDŽgÄfB(ΜY%6nxSZ)LvXɡub,;$0/ltPzJW^y Ыu!M?EYt}s-('ta#i7CQFDK)c_W﷝Ros:At0!?;dӎ~e# LMai_X@S>3<Pis8|{B1$E]d0c9!4o]|伛bU3zn pi!m M⽪؆E ߐH4P\5 SNuw} m p!1G|UW%Z0!(S2jbX¨U\{4C)`bJxf5=96)ab+`!+Z`4%\IUUE$kͥNp4/{׽uřgY\|ţ`(Q >6چk*|E41&~1`KP/K/cIϤuO[B̙Ubql0+QD;( @߰2E70bbJ5xy++ߙ P@B 0ƞ]7cZj!B x,{>㷎~GumYZK7Եי9y{;>o*d%șpnt~ݾxYvmKk@E&[ƣۻZ0ƼJp`+uAm ۓ2d[o-da҂zֳʞ8>t)x\Y< 2?y16y՝s+oB>R0oȧ/RU3ٵ)aČGڼ-KBi#}U;oƖ5x9=-#f"hHB ]9q.]HWb=f LL:h>$(,Vb@ 35Jhbi+F%*91nXr4)4(k`o1X*?"@=cAE=q%Tf#n̟n釥U b9T3 ̃^6Xp7.O+dO9M\Q<3lppb߃+&? &9y p6#4UF C?uĢ.c pW>޶ۂe_:n`< z9甊[ hT)SVsۿ{0Is(^WB%ecȍuW߻Lו3<{Ŷ=? 7ji=>4MT{^P fu!d ht;xܶـdK^ _|q n..p-=/C nwDcL(sCe2Ɣ͌/$`H60N)ukj|8 aS`A X**(TwUGy}]s̹[`FG!OSu((zfo)#J#fb=C9rvAǚPA*K]o%-s9 b2Bȶ~? IOEwBA?seϽԊN<bYf@ƫ*ƻ(%)@p([u&.l)ʊloY\7m'(s £تY$[c e_/QOMosi)+Dq[ 1C/xZ2/e6ۿ[|{w/Ҧ:n1µ/y鵯}m]k( N@Z> SVt(|~Ӧ+a}{| h8Rzł>1MmTmhlEp\F7| zjK6Z>aBxۂm $/:W":l@: ZF}ƪ}Y5U3owq ba6x3ejlHm=8fK+4S2Fy_4š |b]ffU}oo kwNMo2n &f*B@a༇MÈ2L8!܈-_"JEfrVL?Ϛuw7 ~HrF|# n!5om D4o$oG/:T/m}"5 6} ~n- >0 Ϊu:xޠ a O n9{z5h!޲#c:WW&\|q?U>؞MHt/O(׏tmRO S "wIx Ʀ~Z_ εE=$ N@@}6-w0mZp/oA?ߖ>},2>A%k `C&x?<;̑(⹔XG(m9e6ꭱnmsO[t;%JTOkM8-#@юmL|R5&Ĉn8r4@yw;8p&\?cj@_wu?*:B i8i"azڮшnqJ0Cu56'U 2|~FNp6c0}Zkic+D;̬֧9T y @?%\c&?G%c |ءwAaUႛzK /_=OPtVVxun4Xy,:ۈvLw+2yw\V/e/yK [C#īV Co';EQ^r!B3X3a {MQ K_{ԣo=I{͢' \HW)\; +2V1z03]-!C,QNcYNκ1@c)D`uCՕt Ac Db!ynTW0DXgHBM]/@X~meċ>ЛM!ڂ7=`8(vnhQG[9F.W(b"*6[m-,== t|W\Լ,~FWϡ c=-ږC,3=V$g}= 0׽5XpLx,;?3?` ZBDž^صyN1Pzw!~cc2n36x } umש"S@W0:O{__ k9(:,fO~jI_ ~D^‚] i|i-̧I F&xU;!v"gjk4HKĬNW3/c _B+Y*r&oT4-Sp5}[l`#܊'OlؠEU~&u!=8OU,bY.X<>QGto?O5~WJjC{N K/԰ [o|rp/oۼpA^0Bk)6}rr3^/x 38??j&|̑Gis'|B&Ϻ4h/~zqX2P;?s1i} _?o[`-k`]JB8<gbr\tE+ 9 \ͱ֔Cs; T6mu#{E 1-"OHc4$sO֍ wJ9EZ>҂,yc&Q`Jb?q!: Q`ZT4@ͦ-|Uo1-S4,j"0)6bCFXoa8`x:Ds7'l[?4aK^`5wڦbmr,d:FpƈĶ1O;_e .8;R Hoq{`~Yi;-^ 꼭b;P5zMl} =] ^%WծtSf ۦB̑C^Y?S~dUQ~;T/D=V}ܳi }fڅ-IYb& *]Tq+.r;d T.s1Xk _!N`D\H#Y3s|Z@B09S|k_+n]Pt-&ЕwI25Ho#wr{MKFMozBzY^b G/lΓd!+BR YdX ve4PBB 6MI:s:co/H!bz&[?}S)< )6 lAk&7QHlY;11@V)'`cq{ 2*XN5-GA/1>eW(fA BŃs̅\4^h6' Td`kӦ> ~W8B8ЖblW[:ﱟb5ESjY\쐫]|}&!7,<;U@Ess|ZO|b1Ss <.^ 6+.L˂Nc0%(uF BּJ йPY>r AƐT 6ԲrsQ 6E1$W bd#(f Q, +, ]9:dfF4R.΍h6 hж `e!s:}$(a~W~@dl(V*\%\ Y"rY!sc@i Kj6')m̫v(-Xc amk n[o5'_!Bs[k;\B v!B2QO))}ͤz/1ޱp̔w S‡ *Pⵯ}m6 AAHgU5( Y?̅)` u}Wp <j#ܳv|Y?q qE%|l s&nOI$ GiFgin``قi&,a`dì./ro|p 0 1m c`7(c56[`YclJH[;nB|;f͂  v^t`M~cJ$3^Su  9d2_ռ9c )10-wfxwlBXh&/BZ6sF1ح#X$A$]eJah]$A5Y`h"m{4xO? < Q(nV \֞}/|` o믿޼0/S<0ɠ)$:Uc6ƒɲV0i0'xbv'X~XbGJ&*ܪHŗ..E)nFPL M(`\\}(hzoum>ar" 7-7Ml0'?1pF Ƕ|N*wlDŽ?/X#Nĵ*VNl8(z=Gq)w\@ixwmB)7yl} L/b= 1/aq 86,=s }pVPT3a/33 (!`Pp<ꨣɦ3ӹz'# h+ /:l|ʹKZvy饗@ՠ<r(nՑGkiB0AX^v-cx3R S}UBR.|%A/;VYB wSU߻BL^ީe(lA4.}_)I,ЗRԪ6jyeڏe"-+3}>֪__ U$ɪ O ׿%ľK셺 6;:,KDTJW_=ZɨT종>]|,ZoEn ,J>[4lj n{j.60p=:Jh$%tmJkc͎$ֆ`Jodu @FyKRHAZw&pz\08o o5*2x" FRY{_T-GV B2+7"`sO֩j…]^O$,7F ~es@!+zޔlz&0 !Wj^q1qd6pqN` =wy108Gy{EUG*mcÀP s ^I ar-~W&6:F l~- T0sWkis@VPzU.ajQA( DwEAl0>l#H:ॗ + at%`& `jEƩn'X(zWul0 H;4:oeVpK0Tk!LZnpR]KD۔RQ-ùk<,C0fjSg-l{>y-|>˔Xs6Ne2Oն6] !8)ɣ ?N3쩀9 XIs<|uqm``xZš+RN%do/ ÓSALd*E]di?e@_qfЙ,Y+!M?A׈É {3xEhAěUD^N^>zЃ0}{Y6L)tx-0"btKW4JM0&C14 bneX7ڍEm6x,cQNVrSYLWB1ȥ \aY h6HS[-ܿ˿KfBVaXiyEzd* d]U ]༔gZ)xe 3}-}s۸Ay rPpTopwp_S?Koھ& F2z-c,a qZ~#)e21.795;ֹ74ֲ,αt2 ֭m+3 -6 l4&bu9\ve+_J Vڤ),Rx4{)_9/GԶY];rMVb44ȶ^tMd$7:k;60o}H;<63g}Y;VSWYV7aQӘDD U~0egdYp&tI~޿ 3 v~&`0Jt>#$͸J+K>YNr ve. 22WT{"Kڐ245!#?Y vΟ96rZ^.ح+;(G"1=I+ƼOX& %KYYp!ƐC@y YC[}k_ W@,X {rAj/e)߸팲Ls m :et*o%}%y̗kV]sÝ?[aHa̴%u^O5fʂ/AtEh O.KFuߵ5$k1d>0!Aٳ^X3n%YvS(؝Z ,!qHTh\ȉrۑ@װp+=`+*w KR˒ ]Zލ1nZ!cP틃-.Ê{%4/?.Y1)#Kal˾,=ΙF>O@ }x ms̑ddmr'ye_,~ ,ec6 =>OŝlȖ069pr|*]  LcOЙ+_)H0U׮$MFn,6F~̘ sW[r\qD ;?KYzZH*C=.@3x?8nW]uUl(8Ryx!ea_3YoWkdI9 *9߶qL^=bOJD6|3-0f LUͼ~E3nB0{4Og`( ~C?1ࡦצZn-aP&o\瞛c_E72MY / |+ _T>O!:Ci7捧"shgk\)9ϊE&.U>h97h'ߑyS [X9xHW,N:[`~o|Y_~S,el٧ܬX$c*dG7N\+](eq!Ā[*IM磎:g6a~:YD-zքE:|Ls h)g$|9`JAN9QsxnᆴzֳOi4i3n5 pRauq!$#$2t 9㎝|1 4lmBY}'_$JM W ™r$}'d($jWR$9k;]^n֩: مQHү6y3 Fd9]ȷx1DuE¥7tSkKl4NH20x9+^ r@ [S[5ϲh B6]K_}sLPZ,/tGr￿|HoC B`)S7VKi {u;^|*0y|RyAݙFfBĴ] =tYp|BNODQel~r آșB{xfcWk׹8`)ʓQ,$ӎiR|n58T3͇_+?V\uj m4M+{n=(р:iSbqr.T÷n.4vV& R,G_ 䰚YL($-' ߶Ir?!;V$9oƉCr5 -okc[X8Uެ$\l} , &$;#mBu)+ |P-~!-<5P7ޖ8ѷ簦nֆFϬz^HĩAlr'J-դQSyۚ> <Db^{g"|Ry#H*Š)7T"s2!U(.3Lkq?B< ͩF+iǃ4ՂPPV A@RUHxxdz`^z%jMu-geTY7Qk5yM5,$ac=~h|"dhi x~9 Ɂ qDD ˡXbkBh `М}5q0,"'@b}$A1Lr4- MXے{/z}D2>H**BxhX\73mG :yTF]ܬ+rI)ݯsn-zEe9cU'pv>jC䈀#A?7d3N ]@9зC+Lmޢdۀ2"@F&A!m5&=,$s Bg?$aiZ@MP7g I&A &}\$.AׇcINlu#(b'9r [qA->x <{HQ6 I:%c_xN1IrLT<+ =PKt2Dh E cTXҔ$F9sQ܏r_"Dr8ô$iM?CdH̒4cqfwz=s^gPH/ѥ.PEazP^aMhN  rWT6'('gqVV~ `t\\g/NJ% |?i7zZ ڒJ^a7fVlv#+e]+^ S]Ux|@K3XbӅjZFtY#W>U|JUjjWcQKA:i`Ʌ|p+(Sj NWa3kr'nP,_z_вMy@#kH /px ]. Cqw|pc]ve >VMВ8Xpc%.t \=DC':zJ0`diҗԜ]ho|8]rP+/9蠃KY01}NxSY|b[dhO5rϬ`\`mxjX9Tf 9m~X1m jP盨;jdې})W^yErd3'*$:xƦh**ʟu5>qJO,%Mw.ϻj9F!p=uP$r;&2dn|K1$uGt5Y@i>CZ IކG?Zh}h?un1.RHuq=6k+bYzB^l\ʛAvePy[ ~>&Ƶkd\n/[ _`_hvκWkLKЛ}D?bȩ3Q($M}ξU?Z_ʻݗ[÷|flg-갴%CvmpK.,'tL^ɺe^9Ð@@ 0)S%P(u0c'ǡ3}lG{3 >-Gq;2?v9c;H%=1f cУތ́׾6AW;1Q`m&mCc|P(Yd'?ɠƁQl3ЂWYwo@+u]UjA&ӧ=jl< (l8V5}K[2miїְ<"ZBN(.9׼ 0Pa'@cYdLE^8Z(9~I$h7( !ۋ"zдZܜ{V<Мpa&p(VԅDB py7wuG\<_[|AlƆ2#vaҖ h=IIԼ 4>@QP?tM@4ͷц!;8ЩxXs9耞؆~Z|ӟހQsp C=U|N9FT6]c۰)eF6/Ķ i=}nMDp@f&kFsM?[qK=>#D=r Cr1gv>g}%b qzp@5 'EԀ~( K2WZwh e`%Il^\\LQηmQ ]N mנvJv5AaĉJ64*77r=e5sY,t^iY䀞zwFuJE1p{[b:(̩ڬ֌rhҦi!IUGo59H5Qe#e,_~e1?OőV'cƍ5 x߾П[N(sMlx7G mK}ĶAw,r:m("LQ"Q"Q_59IЅh n} [|{Qԩ>Swv-Seh`9i:+Ȅ"gG kqRSm%(&[f[ų])G.ٱf^*t8HǷs+USv2"gJh B6%$OAԠEt R trg9ۼU2|D,(r+&c6$m;>=&XߠVAf|g&@N6-<&W]}-W]uUo"(} $z#2$ ã>JuBJDde1n, I aO"j )ǡ5nLC :s7T$E~/J]{nEϫ{Pl3/--:>x4u;IoIo+2mc#S[}A, Uw[Hiiw "v,} $IhWO>dCs8̺2rj(6E!R< yQ>^n4Tk5j^}=\?݀F{Yƃ`D8k]k<cA N}C3+qŁIh"\eq1$Ann;XXjkSD? #;[·\$J\$|C!x$ܡ{mT̹B^U t1Fi'g9q(׌}s4mH]eMXSg<#D )ui42(Ngk1*EXY4 <}v1. ,{q263i4VP"_# 7!q[m]*헱{|Ԧ 6C. e_KN!/ Gm!%w9m5Ю@EO٤З ?}3!B=&6|lS{!eya.x7On @JMxi}#|)o9׌]!aFk=:Yka5}5L%%e lCH6QЀ+لy'C=t!}:9; #}I[rNQp3)7͹ꄒE";G9 憎2ֹ?5קc.TJ؊J*YM**ɉ~wc.C<NCyL*ʻSO=uh4R M/ڔ\Frn^Ctߠ 9(o5BECz}PV`,e^`oƴtËXq΅EI,3s5 =*b$*hQ^oRpA(n( J[qiAe^P}+pD׷~ѦS@x'!t`GR9KlaD$|_./cP^$NyRY]8F^) m|_AdIS├'xLyFg:t/ Jh2P+]veNNGnANqd a&co|rO<}moۮ 'N>H]wM\",+@2,?]Jƛ!;B.[a"74zk.aT>1 @>R·{XBĠ$JU~(tDGXݴl]ЎW py}|WEdhL΂&kSv} ]F|lykWk`hOO- lr^R}M$6$BVթA }!m; xG aJ!hB;<)74c}uе2QsGKl1d\gI?f dۮ+w^W#W㎁ +nL}_v Ip_#;0g<7׷nâ=D)i>`s fEU!CL8)@F⎌Ȥlق = E$ p|Aم@4m#W 6U^G/[kk(&i%EfT JdcnF:Jm dq9chë`6EszK_LN68ǡgLs`3) D% 0)L[>CFtZ鞠# ̸"NQGeIHdnj9̞*CNtFEB!, v[{MOg )e'KSC4 Rn2q\Dw;9ux"5]YyLFyO r0t ?GɟH"ʢԤLE~I:]|N>fpM-&iYϧBIlU' ϡK[Mc=|x~&&pf PoNb֎8Ul s͘8k5%.qnZ%xMD0b >&)uEX;zږ8]}U1DYN.\(l@2L0$fw/68GN$ }80 ;³y?޶Ѐsykbm gr}f:QڔAJx<!bʐݬ]OGG0y\̔c􊓩₶"YHjC: fNM;%d钞d3?i -$Y51A(">[^>Axac QJ !Mnpڹ>p.Q0?O[-I8y^U9cu'W= >06&k/kS}|L3r-Xm{S~0w)>1=ݡאx}loG[ 4];n~yk#8rz )"oHNy~>8?snݦ$g8 au.~-;XOH.gV@/4c# 9Rcɹn.~˹e!% ,xIjQ{׼E7wv"$Ws'w9wOAAeF } ]\yl;xFI!%Mzlj-@#euM>B75!ݬsw=Dq1ߝXS9ӑ".+"ߴ"J> rD! ]HNxgGMսd+i=*ׁQ(N+YgkdmKm3Mǡs &W}q~>Jȣ r?@Ǵ^4~fHkZV)#B. l:9N>w r4!7mRHIisEY6o]$K̥ z-gmӾ3i_(p`!yt"_Q!'n)-hޢl|Fr.$MĚ&$$ =uZ^ pmi_8˦3 aZFQ=m]ռEc [qUy _XYe:[8(hY0Tgt~^@@@/y~5h64-)2{ ffxPAxF63B7UPŮtwMx}YBQqЇ,Dy> M7(2Yͪ*;LzgmκƼ}P "@viDQ#7:}󳃴!pʺBBHi hֆ8/- H}!4D8!Ҟc` HDAB('=Z MV %D$ F{N]+.gP2HD[8 &E>K&CZ%2 i4Ն{;7DPPzu8s>}] Nsos)C@C^~K8 0ۉvt68J)8cMq9;duh.WG6myظ";h&[3XP]!pO"IhH;4t<b}ňC(: &3'A$oO*{y3i!4p,,}k k`bB0hMYmW0C@VgsR2DB#6 e[Y^./.{G?Mnsh*+B4](q uA~_Ls΄* 9Λ1|ײ۱rG[r;Ak>~+O3q\؜MmLƬ*q.תz>N mMFmQbcJCh'$8،or@lqPRwc&Q26<'bֻ@}B IRwu^]wH1$~+"70 GS+ րq|#sLHۮ0dH.)L CZEOumO]y= =<Pc^mQp(Kg"GQE:IuRF~9~+EyUk&\I{k߻N9d^KNrM=&9NE9FPK§X>4jV\(ğc c(BTɊ>Ž1" [V!O>9 a^jӟ'eQ_ 19 ughiDGixkPhB{u!ԙw=+,3g ksgO72?E1>oցƞu}]w{E?CN霔L9bC(V~BЇ@:a5Ox䬚wJ~-]۪$Zr3χ @l_h۠+ YŦUF(( haW)(t}`̤uߺ/ؽkB~4q?e>,ٹ+ڴ{?Nf}Rp IOa @*nx(#x;omlz P>c6P! Kئh#wc &C̪@x':fvOb:dίƻʋP}$zPi;0 Xrǯ:MEbNI]e'Iܨ/d J7 S[jӲnUzeBw݆BA$$ #,MX'sOC`Y eq*טuH6K;˽I+$E{J߄n75"[PP96\>isM?dߠHDĶІC*^DGmE/z}o WM0~{M!ϣpۼ*JMQNC['( Nu]sG$G  Q msQH>؅ӿorrp=?X>=1t?F3(n׾3!4dKmJ]LOqᖄG c#OI'CfB\pATM^+ ; ej3ЯĚ Ϣ$G|X;w]p8_zLlQ 7Q9VLgjPEʷ~7˻`fB\F};h:B.D94‘~YQQ(gPKxo 6ZV^r@EyS1G! .+-%oZkq9R"( j;q+#ߟ~顽Fǚ(cv/PSO4BG9VCeYȁdQN(g뺫o26YfSf5!fu<2]&6FC-5ɸk} MH_hwSDɩ}JTAD/ӄC=w)ѣuMk5/p ,I6d_jT5_E~-ߢ. 7|t hcl%f*ɟз`63 ?[NO|P!z;>{Ůk[҆nS IN9u.‰R2S]uiGy@Dr?2:.#$$XYýk \'\M !r{B"uJ_ zC)7 40=2=9lnV8}5K/\M]4qE)c8Kb,,>}4!>-9h /bw>6 t 0 f(J(O8y{^!og0 =Zs꯫_xA>hwm7 ;xyDpR_uU}{MpȺlq"[`POD |ČpD.!Eԓ)=3֧`^~<,P]!vr.ԕg8fj׹C)b|Z!@*+:*i@TPCI? &A(pCr.eC{DQ%m7eRٱ3S|5]SϨ/?=2j`(2j G81K9/"w6wQf_\҆}Mo; qmS+n!$u>?ǶC,e۔˜|m_:P">eXtF2&HҌv &lG<S/*Ns= zd*9gg4;3,~V2Z~FH(ETc*ҺsbNqQ/f&\I]⨎BN-nj>"rz∵(! (+T}{PPt+_|h\/'GWDxmC3~k_[]ІW=Pl i[Fh{* 9OvQU*XPirXy ~9xh=C`F{Qjj@HԢsUwHaEgQMpsoZ:S=3Y&aτg(kXQ򲗽,*nB);TH8(oęp_ )[!39^=-wo?N!.MΕ˂ccpt?ѯػI35FYSY&NW뉓[6ꑆbS-ȴ8 wA],OOK/5.~^ (zt/QD; uݽݝHo2*H+Q[m5̶+Lqt8*0\UȋcvM֦.Vv.g=Y%^ùa@5Ϲ+VUwEYf#u, ٷmrhC0.1¯HN"TEA_S<zD|āUʕcxa䦿g÷}M}}"\6U .uska}EEȊ $NBTO;sz8?AGҾ%##<:UKߑi6k/YrBѦ &@HC Nw7g杁ergXz$yN;"'9znv \w uֺma hےSq}?)G<+_J8kqGQk@9,A(<*(_h '>a?O&4p$vnYrAנh]fS$B}>/37  "7=:{owwdSC(u@+Cq P̹[Nyt)uZR|X\fڔ`kV)Y fFaC A8rW#e%q O.Uwm7lqQiOnƹ QGr믛ܵ^ko~M]섔s9`` nʯE ?fjE꫍:,}b3όgt;a94z1"F(1Ѧ I:%*LIpmG]r%ӞOgV[;Hic[g:( G?QETЛu~{ G3lK'RǾ?|S/ЄNb= O$I' g ~Zr&~dkcMl5r|הhrXqYo}CM̙_! K6;W|zk7L|ZH&;9OrPt E#@N2 _@Qg= $ H2}p CD H}u\ӎ\+Pwu]dt@t5рB+G{Z|;/2h,xZaQG% 64C?q\Y4.. ꍠP EV!]njPrAj{'My3)rؿBo}[O~r ' 7`qníh;)B2 &7.A—;AD𹋜@[M\%LY9;uDrsw-BU,TjJ鯛W*H'_ZDgaA$ӵA`7!hr'AM~hB&8NwėaY>eh_!A֠Aa˔f@>6S؆PGhpUWٿɚ!MpAh"0m, X nr Lπm[ڥQF ~]T-ff=EJݒd>m ܇2deq z#|}}-ۄ]r H&$Y{7n 4y ] &[ǔZQZ8Q^8)KC r I]DCY䴅 *N wBGɹzBUs?:;uQzqOC@2~eL=Ʀ0+T7:wjtݣڅakMtejjdlmt|Pͣi~{g$2B]fmzݦ`02Oor/). +|H B{G>2!Є8ŀauE&ZQku[>A>yo0i4!~}?m srf5@^wu .2)״'Ϥ'!y?UɡhuoU!veh_=}O0@[ԕ@K(:Uӎobׂ"Pֵ/KsBλyP`hdqw0Q yK_j413E%j ^ɩ8HuqB?6axBM4-|״a?|SÅ P)A('~`\5KCZr5L5wMb߬t]Rf9hdu9$ƳgiW,c$9h <(H ['n'o?|5-]9iO[B[$pNٰcbÖ'8EX[ 7)8SZ- 2CY;Oir1hM\S(0nkunPvgG8dSoׅQ "(qր3 MȄD3}-Nq??SNL:u^w>̙&d@Ugu}s{m#eXoGQOǤS] <sq>z%!7~hiO2W!)xcJ L]9=T\.JW.k@i嬳*}UGFc) n~O_C^mgv3lmxn6E:fvh,hE r@W^a_uERJe?q@±Lj@E/gꮻIЩ66o>y,f MHV~ d(Tq+Xu+>3Tٳ] IQxp*~fjpݲ9 D  h>*nKmHJ[,\$aF*$}ғTu7*#ǬCW5 yA_7_3(jҩ2KҁQG[la7ӌx?n8va ]T O:餢oPyzB:S~_:6(xpMp9MVЄ~'}^fǞ鲴u=}>=rrM)uЊ*ܔ޼s@pEs8qn[w(jf 2Ƀ%nŽ C{R%17“. MՀ uEG !24a{mP@A@ywVPjӮO:jC؜ѾҶ+EMlts'@O {7'?)Bvݛv yAQgdkB2sB|S2q\[·%ɟGHZ:muu/ַePs Bh9T ]w c;^&c be}O84;B^M.u mpڦBE!pݦX߹=;Ksi u!6z$x! mrC/TFpp 9#{\N]5ywGyBy]mo=yvF?ut|{Ꜳ1Cis)\1B(u(8%΢g5˿W~U(v64:*}Jz;aw>1Z1*%`C@%EBE^{5گ.!&`|]̔b*e?@IDAT.Wڶ)酅8NUܶh 5MPf-mi9Უl^ &Z@ZQķw)ڿA92 (Ѷ@DZex BEMߩQEhJ<:EŦiSZC9BYnC (S(455ōoぴlU.Ike$ $_{16Ukb倫zFC'HRsvZgABHܝm ^׵M8 h!ƮvZ7݆Oӷ&*vEtb&j@QT!ҏ81 4b}f̊dqavdZB^??Z[CO*4O<ȼϬaJ0yyT4~u%D2K<)۬c6˾o($M@%)ɺ@-$?i9۾;`HX*nϐ8m~>6Іxd- AѦk$ʤ }7Qi,⾷A W]uU 9g?Y[H<ǒl姦oI#.C3Mpq]oֆ_mɄ ǰ%nKoHl 224haͲ`CKzT$% ;523+ cBOdHYĩDh4%-tzԆC@WvSy4?6 / ҃{_I TdS6ьuoB- D@TQ S.^&˓iY@0i'|+IYm衫kMIdsd6}o|Fo8-@E1G`E~L`Ҍ(m mG@}y'BSNwR ~` d%,ڞ:HU蹴YaBCoyOBN&=& @TO9cIJL~$S̝ ӰXW~; ;6f2Ll# rNRMm"wh7\ЯO6zF_绳ʯ׺6|(6ovVΙ# )2}m#cwwG.R4w!P*_ P6Pj0YK8M_h 6ʨQ h@^T%Q3wTkӳ<`/]z2"m. CYn?euzA2Us-VsJ~BAď[ouik9 f>[;$+Ls"Z9IlKDp+mrYfX 8\0 2IJ׽.55jɏ-_9墜PɧQ͋rsh`wuH+[С:Qǹ%K6emϲO@9(_UE-AnH=MHAGrBd;BJO;mBFM|iIr&EXFk&XV)}J` ݏ37N5ia.e6p/S>n%4mS0v~V-$x6$g9~-5!CNB~m5mxI}I'R͡,V+Zd@_$,:\)m"j˻:t@w&j@3zܚ BaX&x/{ٕÈz$@.dQ.{:-͠ZDnmv>?wsn(y!R2,WQEIeBj2B'1Ҿ]dheۓ<0]~dNU.ع }/o7o(Ԑ+3 AS[8➌ 86|JpX08c+L,EU,}_Wn' VeJ۳̳qW_] wd"ϣNZ2:zLMZ758A z_ݲlelQrM;.gd29 {S7X](_{;m5q8p聪c_f$M Zi()ih 8K (% q QvTNJrKg1gn:}[`lzB߶@!O9} >F6y>ϔ?[o_^)/J5s=YM嬜VhWBiݖ{ È]w&S㓯PP\׿^DS:[H)8̐p>Ѧ_SM0o| !@hB)]vZE\c3 +Lh? OmFCǀŦEtݕFWYՄ!Mkgك@y.e/y *IZi(:]6}ꩧNC6{߄1`vmu<06=Y1VPrYN~DaRC-m ޢsrg>ƿy>\r8I8m*#,I7&:VX9|+bп۞Jt&`f I,&Rt<{%}mBHRtMrW3`:kv.ufmC)Lymv@@bY4"ɘj ۛJݬ5g}~cJѠߏ[5Pϕ'r`2|rQYh@N "àпfe9hXkP jĂ*Yuǽ[\BPB ޠ)L9Ë_ Aȯ dЀ<l-Z:7h^<؂<(̳9$γ t]B ݠ h41iW8cPb}nñn]A (ؖ#DN8ts#y ]ZK{SѶˋJ6(:ּ{YB;>R1D1dxT AAܝǭƭ-=}Yof;VTΙwP)+(,7lvev~-yc 'LP~ AhI 'qJZY:oqIP銾{>GAgSKGvy,)ofBu=9˭c+,xc1U5]B.2BK=hW(W7d J6hy˩ wϸ1l/}KA_[D珹V+_g5msc|Cԕ|GSެ"‚:3wBߍƒ\DCQ&wfgecaqt>7ʼnFGEM(ŭN0rt#w^0~_@'lld+WLP8y`{?&߮d` ʶ! rp։] xDA3᠃ rJ83>яDsV&ή !S/I=bBO=nՍB~z7P/]9Ӊo;>֔lbr7ݹL2 3EQA|flbpRw7iGDc^Qw}<!+cp K Ig37"DU5 nuhT `8)VKM @Q&f۔!=Ld韆=J@oh*}J@j5NomfE7!:V6y_@.0 m }/|9iiNL1kV)#gi;iV(}(>fHl"݇{!@)ii+_Tg5rYȕPKh}_ HrW{?e"%4P[ٽiC:BOXa}űP[ߔ4#^);0c$uV[]OswD9#T27!Xc%Ts Iemnٹ;wJC3-|;:_S;O?0ɒe t ,υ\Qmi ,Zگ.i?"uq#:g'd-"l47],BN =4޾K硇fJAaz7Szh%f¿@aT!4>"'ݍms̮%JHn^{e(?P]$u%ųWpϔp5qY0vdl:ƒBM:.e { r&!&7+,Q$L0{!Kj;  c9f[l$h&Fy@_c㢟T_U)}v Z(>[5vAOP\K ]w9mیHeaOC}S mx9i3H;oGdb`eq (ngu)΀Oҍ6]rp@j wa-?g>Y1[0þRuʈs! r=/}QF $yVu]T)BvDz3yPC8qn2̡XD6`xFZ%|856/'ۣ<=!gCiN嬳ΪI˵> !1tpqV$&m(SB>d́hf06,8I6[f U,mݯRJ82Qj[ NlBه>>sR&zpNYG XC*?h Ɛ?!"(yk`w0+lTQ6رmיܴ`ɹi3]|}kG Hn+| 2VSIA\s!1Mp!]Q&bUyHBr4oCȩqH{l>_W68n֯a֞逦@I9}C=jT,Hb. ș%͒C;#d`Azԋ@P?$#qxkCmT7!CF^@I6OhH@wDӼkOfoPUr뭷x]#xry#) <ͻ3"M!wwqpg5뮻6}ɩ ZA*Ϧ>C[B)8ꌿ!dS~YD0#p-mg=gyի^ee|D0g?[<6~;Ԛ񣑓 D(HifkU>XjUy\;:jy9Y (zH{zeD/II(x)DED!7Lw^ryľoɵxzc!hwWC+qkTAuv23Hv-&Dǝ."SFpqN?fc>ړw.6AiboעȆ|;{\o#ߟ{Q ߦ>wouZXC4=m$o2[o5EZ-W Ox!};k&7ZHQ9"CJA ?x%Mb4-Jj@XdAUlOIh4zxͼXgfrl\":+:E;D9kZ = b6Wy_nGEUC#Zf8d \}W^ye 9<ԠWR(гo~ECF AԦ,w},'K8fИ BVBM[V66$w 3C ˆr 8I lVY_gEwڝ.J =oM$E˼2nvN~ _0TB-(%*.Q"\@H9oYBh" >Y>l:zŖv6h[IIeˮ1]RFChD -Jٗ*~8l9)F]!:E d(N찲`0>( >Y>g1v3ufVmMCDg=y[ ًuK*uɸ(I[~ӟ>7J>]&M7O$2 {mF.l5!fB@vO T銙yAO6% )f:/pa; -lM:CB+C[5ƥD%4kLO]ߚ+tB>Toʑ rF>t۶ i[v}%%)MuMNM"-'gXwyA|f(롁!}GtK h[B9p.r䨃2 ǷGV*o'k(HCv@3`#BF9뜿19pEu7%D`h`7Bv, Bpto7uK"χHHG?\_$dEޣGԪHzn.-wP9:I09$!L});^ȏ*T`B & tAqBIJDp8N^֫+n|T|}o}~CU$M$ArRUw}~& _fݥe(W@6v:L|pQNQl̀ @(PkO"\l܄dЪy{?R>կF! ݸfznMLI4MijTl&ia|w4)惸c!IUy h/.R[#AT9 'P\rPT· E.3<(ע?N>@VDŠk>d~'>IF:o ]!)v:%.- ^+TI0$ķRlmfHFyB"C2Ш"ԘP*nf נchmDr&6!"aP#WGJo1O7!:8ULRFmAAKQ$:,\M{Bt(:"5 Hw[.׽%>݀L>t&TP͡ ;~o7H߄%rhp|DMJ3뵰ӄ~obIM}3P>FGYDU%%l\l-3 [1Tr)ӏ?w-xԓv8vB>'3j/(\[JǭÚ~mFOȉoԃw91o҃{eH w%ZINB' _.)jbKnFKIDe"'SQUm} /g%X oֳedyeH:"۽yk72{͠xiisFesX%)j*^q=luMN>@E5*B[֦7B"u3$>-hH8c6Q~zjow߈aPJI;knS۶ }\d\( SA@d`E]'67kC#Z+gX6w6/>^{  ^iX H8fCph?]w턒#P4T.Zc#<)כu~/2-ۄ=o7g&}hVxt\:'Nnhk\vXCW2tB-3lPiB!$)!=̕3{![@dFh Ed|6jc=vC3.oot Y9BXwQCȚ u'\Ya-=C~m]?`)~#aTcP Ir f.l^]  q8o"7w8j;Gʧ(0'MN T|MhSp0~#itP~=~ Ơu986)86@ gM+DѦ2 .'! JE8aw^xډI W% B4Uĩ).?^C%&̞P]Bvաusu9]ضC WeN6L&n9VBZN>ə~w~{yQuAn&/Y/}|<_s]BWeYnb{|-..hacQB;WOzғdv Ȭv"TKwe𒗼diWz X(K)cOwIF&$]=WȤBJ=2Z*Dnϐڞ6ٯ-p="&y\qqBxQGem,ٔ\·ic8}\8E Ka+*{J1!(Ѧ R2X+m25 2Ǝ.J@s4  UO<(j+eVTwQiFuPrM!rFt4/^xa:>hki'*WF=s5@}amjH a rBש{HLC(j:b9hne~sA+M+<\r?HYNvqm~S6?c{uD x{]U-}s?3[k {-)u^%? .YԉT%kgr6tSea|՝+߮&m&q:yڞ^ B篼\~1h]5kQ"zzg~rEr·(t (Xշa2v1-u]pnQ9:e٦>YGh]b1_+:":5NC Sxu$NWHob\wx#tvUگSM)5(ʏ-R.J8Yܓ3ΰ ǼO, ISg54λ,V6!7JRa)bn G~LZ20o(JcmB66P&&t/&`#E0ޢo\i%Xw;C/k! =3Ruۣ_aB%ym7o}w]?78eYQBr]M'hYXî'-|am3 NȾ,8";CC8C՚2&qub.56ˢć Ѳ<&x^Hbs!#(j@ bqC%+~/3 B鵗ެ:r٧L/p:BqZH D[?^r[? DݢJEN-ɂ?i^i> J煔B.-ci+ נB-laŐc>wqAKسrF[Й,"we| guw++EgcfSОx;F͘}^8}r(B'fCܦN=]h3Yo~^oC3dˍf=TgY]}&gfsTj?3Ht+=s5pA٬ 3nMym%uhO}5pr 7oؾ95q4z?5WYv{Êw2Oگzij?؍qS"D̲4$-'$^ .(mt{-C9V}z'+NImxmPU77J Q$Dp dķ0ʃl§?iCH%i3mu,wJU==Obf\!Ǹ%,s?m-p!X6vawR.s@19'X׌?+(fEAŀʊEeŜ#+fE1g]_=_=sg~}gn{::=DQ0-m +Q1S ۩"6`c~9#^X~{ߊ?z衇*^OX9 Ky-CT Y IGx  瞮Pߕ+2B$[B6QtޔIWDwL_ѯDS("(5j+"" dヤiKY7;wJ|_pvp+iϺx-Q IuM(DZ?3]$7l`CnG!bWR!r?̤04FD{%Ygs+)alemZ]-Wocowmn}dX4{ɍП`6@QfB E'n 灿(|;찃3f9wmsB#YHc Y&t-76^xh?ŵ\t\4GJZIeơK.ؼ@D GoR:KYfp:ۢ|F GwiT+>0Hpn6<h{]q8t ImZ5X_,/>c4j^PmT'fd]Ҩ_|E)t&mV=fH//d=^p k`kv^c2^ .Xҷm1pxnFR2‮g O'RԢh[=s}-fЈ@Zk^>9Of䝴O>vV0Hr ٘g >ׯfr@:_mWjpc:ttUE-o ђDp[ 5IҔ)S|!RȪ\3Q D+ZSiQ#yh& ^uW/"p3n8NhA_mH /k"f8%lq.Atq 4m \/B#X=7Q#qlWýgŭl59sz @IDATZ DpMe2gumfرJ>2;~hkJlDkd8i>,Ӹ'e2;\2fs͊+G?tjLik;'Ѧݻ8z>D9I2c"g9/p}$WFmXvks6QD Gf+'퓇6ZhJEMH:Ѡh ÅA.^GM;3%"!Ѹ#/( I}"FVZ.Oϗ s"viJߎFW"D4}-FYʳ+0޿ӧO)c Pdf0{qwIJAVBNd];d} i9eh0E|kA&OߪD0RIsRqh*{֍e**H8GA;QYyF:/D4mhK\Uc9ƽ$y ^9 vb$|pl1_Nb9Ǚ|WO?s^"Iky5:g _9IHл;6w:;qf3:!ʌ(.:8CHNHcN]IN$He2]:=灜>i"Gi@g3Hi$7"p_Jy%W@3ik4gy\'8vNG Q8[iӦ! N{:Ȋp%:kl.m{pLjN*kю|RAq62-Wk(w۵\)~N-m=o_g]2-d1Gπ$-viynjmon^@O;pJ߿}G҂5 A3 B(Hrzyp+ ['^J|gZEhhVw,8x/16@Q!g$QDՑ.Q_9{aB`3%@A.|[9 N|?m\[|a2p~\D @mkqJRMҝD#)}$4E4G:YݎNv5qϮ_:IT:_lHᰬ߰kN`!p.?RZzNu䀮Ԁm$*0]ZJCS4Lvzm]":^VhJ͋#kf%),5 sn24E%j|AC$4QoqX=G^ıIv\ٷ(6qDYQ$P|N +G#m $Y4/ǷO&7 x?$%JmK<~xAә谨)}>K_wQ.YW_}'i]F;0ήs`+ՐA",liu'䝯V{}ꯣt%Qbyh} ےyvL<eNo;ݳ'heb]w+ -p. w_Z+:QvML\,w],#9EV_^`%[3ys9={f_olѾT"7\{}UlcZxOwE@۳H Mvi=XEFO?ZHpj4QzR!Žz{뮻.{tl u|PqD8QotQ DW$ɷƧ^e=P@Ν]d;Gt2*dt/6%qׁ%5tBE;#Ҳ#wZ}R'MJmH?sE =\UBs5 TuJAzgx%y^}c^z I*ȑ#ݻZH>ZSiIJv:Uh, uwZk&ԩS Ό;Dc4~*a ӓd3]xj}Ok'` OFՃmz7-kQV>^tۭ}ɁMW9CT]hQ9Iolv4OV_|i,?D/QٛwxeG拀Eܲ@O9D::SնZ4Ʀhǚhb #zJڞ{օQߊp}iHDžhM}7""#d%"KD Z-7si&rj:#; 5_K\gu\!4ؽ/Qެvq8mM7uǕOd%i=5_,,Inu[Gs`;< >`w.*doZDwwE@>-SZh.e𿡴E@sDC16ʽflP``` <_A6q=q jt2^I,_y:&<>m؈믿Vm7nsd_u>Q36ɹ_j&Ј:*C6/ QiVd7ox~f+iF9l. ْm3׊zz=-СCskZ_5uҷk.O9yV-:1GM4mho[Ym~2OWH 7Ipأ fO0U8*Hw1jlԯ+VE .,@Atqmv@ZR U~56!"")1/Xyt"3H9!^knvۅh(;8?:\}1r(~\RNZ[=EZKD7܌;؎T-: H5V:\&/M>lȞTIau ŏd- AʳpE[RݣGùufH^qԟ#d!R-| W]uU]^7p=D>.RvlX#I4K-mrZَMy x#xޡՐ!C2d"?#[d'璐n}Py)T R5c56pC(|YڍۡZoq2y]~61lu I< )$Z3;6*e#}֡r&U(zAQ6bItӚ$g.9^+ :sh,EOm h?3YH*hW۞wCI/fOkSD&D /\TmV,/~>/WQmro"jXE4MMu/D8mhtXf}zj"H^tnjt}'/h% 3akp8Hd(dV=/iWDU356 dr]q󝕌>|G9sċ&ƵY8OB!C9* r-e:3m?i/̄ s1KjoFK^)ҩAgu>]ǿ'zN盧Wj@P[۶m]G5ԶY.7 +X-ptyJZ{76 %v6/s:}p 9{LJ*tú\s`j/^UJ& lK+l!ο[hΏn!>PV֙FTFX> ؇W&:M镗!i6%-ƈ@u$qUU#8Ea+nא  *ncBfHԳ[v=VsH{XH-4AmG]u% >.+>>l?7Ԫʜ*oÆt64f1 zkٟDS~n^a/HdW_: )DxjӐ *s:"%Bf{Hh}":nXK;\DЪjlV8Hc )E6ddmׯ![ϞGAG$wDۮgq%trdPI4QVbVhK!x& ~'l76& JV06i"F\mjW J":]ivKhdW2dd&ćUFeRѠ2QoeK1fZk岰B#IqմRw~>)]3?Fv-cfv*du=~̘'䀎hJO$4mуW+nVnbV *r *5pvtӨԜ{N4 ׿jnhsq&3W_mд.5[آfgN68i$hp hj-rlDsO$CXHLK1xk-TS#ㆇt74n8Cs. a:i{Cy ~FʧdZ#0CG7:|O8_%ٟq %ҿg7vE@PZt֭b>sP/G-]$r@NJ3+ÉG3/]t!T[.ʎy롘F1T<3fpy}1޹ZhFyL#*jQM[4ͿqoD<#?`gΜi(BCE rI|^E9 Q'oÎ;4q~8=8&" D"RlOtDu:З\r >c\a@ &mt$P ==3S$헺~5WnB`2v _J uܧ'瞨#Æв(ʐf%$k׮AVHǒV92<{QݺusG?D5ꛀZ_Miv7Ӷz# 1 }:7-8)Ҙnes/Z' e|g:\jT>VpZC RiqBZ7NH%BVx>'>]ħu߫.]/梘m^̞'d [em饗WSQKux/v+. m"qrYp 8|(pqtFSg}ZVd :"+ΪONg. \ԋ e?=*^"՟IYo %ŦYKU1"KqRL4: /=s4y+dn\B؅^Xh^/M{" L1^x!#(ge+މny6_D;so,'#l" y/,nᮎ{Z_ qGCjCI8iHA{֬YΉVU!>۞=7IjKsŞT& إ(6F雃:(FV.`F$8ЃC4’8) kO}]~`ÀDH42Ce]V4<s$Tp@i,D$1:(IR6pps![GGb-Wsidh'at$2NթT53NbЬ%:a<52ˋF +%Pc MC[eAB/8`>hxGϦSlep o-M,/hCX_w7IN8פÊFE;4qFS[6|F=fe&$4V.͋Q<(In߯;zMc\O~_IF&-S(}#.Sd&Ihf_3Yge>56Ux|'K/$ )(8+wSO==o<hS&nC)t2Lf62DC͋N$љL$\N:)ԋ~*vO<i{Im'ޟpFxYfeD{GdKdVJyX&@Oz pW:!Xo'M6KWMlh84>TK!GF Psaxh<3cYm\c,J*ш ~#'pTH3Jd#= ^F/h)#ϔ+5 iA7ϋm%(n>JG9ϞlǭwC:P-Wv3זRn `/ mw2cRtCm|ybg6..;mC([`ub%e?b-F6pH`,{^LV=)FZ1B,XK=buFu֑tM].Y+w2V6}<\QXրR IoؗI9?~|@4mm?3ockl`jD]4 B l'\p%H[.idi08blK˞Jf} 9$rIK сcϸ~IqJwN6O l4d` =:mw^^y1jZ` E>mRMڪ@ S~zh@'OZ/ŃtO8ڈ\P3 \ V^36gs#錒gj(ci7Qw?Yϝ6r@gˆS.6!Jn+CgObYr6I4y `~ꩧ;,h׮]PNDqFW&宻 H3wh9Vji 狭PWHoL'30|3}ZtWȸhEqY7<LȴU"nz✌>lNRĪ5L=6(i'!V.taN93e-]v8iҤz{=);Һ_!Ng}6?ׁ} :m أGU}D\tHpZaL):W؟l-Y}PR}'2(8֚[vv.֔s \zMɮvrbDWӈh5j@ ڷol.Hk2 [&W{c{ Bd=!(k\r@gzeM@͹t0qMv3V6z8/P}?> 0Ve6V؈ת6Ib Pps+ZH̨qRa7mN]t#0x`c]?)D?O>lV91_V6^FM Hhc qoBb %Gy睭iT5:Qmu2^Nfmgq57 69wec%/*tYtwnuf-zqd-xmӦXb Ǖ9Ι8j>VIb+qfذaeG:΃u[)H Vkxm|ijڒ:: Dzkc !!ֵ^-=>O6̃qD .fk][,fssYYF?>EikMr@!\m[ 5瀶ilO7>Gb:u O 1#G̻jCw@Ĭ> @ƙc7;J/18vp-O 8ZTM@27`;V{3dO?Btl.3L8mtXAõk_\fpIY:nWƁڡCw}ĉn^_2QERMflF5%Q;> YuQ.7&Oj;,.gy]Ի-qꩧ:2L*5E+UJP7"m1Aw "kr0qbC^֒[ 4ydw$x7os1.ꦛn2D] Z5`&)d]Zi&mT5&FLI4mСf 6pQ řBDxP#A`"+{?O/BT2 p&NM>xOZ,8nÇwgx€ ǃX%أ%F2:h#w_*%囑n焬S)i~F6h 'yDC>h'!{:2ҥyJ+T;VgWЌ?" $@Tv]촖$f6]\NqԘ:&a'ڙ辨8b~{G}:?CZʬ`uHfرc9 &TVR‰~\K}e"nsκIG|đR)ƨBe\;69wqLD?#A˵}81vk=+e6Ykd>.h>N6oL{]1דbo߾ /,vvWcٌfpy ;H_IcP8jDP=4|wt,dl}p !!Z<_-{?[+F'<KU29^k̙uYӔKVˉ@ ։@C@/ci}N4+"3D㥭ӥ_}Utc8vs=g(h1dJtd_o6W6SVunuI:gd7KD-Yt}e^V-ZNj/6MWg }K/e89*e~OA0Z"-8Z&JBE<ģN'Q _|˾#Z(`[oǁw>M~_| c=E㼒'@щ iM |Wau'uM?4uՠQEw}7rtz4Dy1iB]-v5zB!t=iM$UP~Yu@eڭro{>a!qcDqefX7$:zv׾k="P)":}TgjI+nᆮfb@D|"E~x5N$p8'4 9/p {o,vGzS4C4NRs;9飼Bn/M桇; D&ME@;]L^R05ءTDFv}e"_{13Ƅ|DZp  $;K;q⤩uFhؐ!CN>#\$4Z53H>:&@NNjUnpK/uXDF]A䛈N.@c1c]MPp! DZ~w5tl}ekYN#W`,h7$Xk7߼ՍM4̓4>iq}*Z).Z@k^{57_Y[LÙkqf.):d$Ј$VC70'OvnN){95js@-+hr@7αt{; ;8p!S -r[+0T\7)tB~]vuEq0JJtT|6l9rdLHaNdSиHE/ň"mڴQRi^Ce楃\w;Pj0 ޲"@uvqG7ioD@!d,ҦK."2! tK'.nڠCq\ 'Zk-WȆHԕW^, ڭ NqL~n;s6o-Tdo +؂Mr3v7sէK`РAN R^m6qtԩhD?ce'@϶*F*"nǣ>T E@jJo _] _bIED NQ ꭷrQKضm[[:gHA4?餓!jЃR +%8_veN~_~Uu'Yge>z>q 7dcG~y}@袋b>Sź"V&t4Ku %.ԩS nc \@3K,DEmAR&IXh~ROrK@Ȯ!u~]wet(_:֐!:u]g"ҐBh̙Nsekd(<_~Ys5j@]mf8D6y$?t>i7D-C5u_#<rHӺc"@D_|ڴ$+q)( RUD?xN s2&L0:CRZ%}bZ!\rZNVo-LZPOphl4IۙgRDݬ97{aÆoNc5{GA+H!d #%[lӽW2VYp u4Og Ck׮A&"]tq IqH~B`n,obD,+;>jQ9nV/]t4 ,R|.*'# tIӶT/6tSmhY{̾+*>bWD@8N;Tq梧m6~aX9C6|s3vXn</p&~\"u\0KNmIQҷduWYZ1 mᄖ>>Mպ/iF?{@mڴq_ut}?OCYMh7tz3I"20۬j}q駟Nqƙ믿el:fԨQ#3mSE@#p '"j ps=t,fKnufˣGvEyCA?OI)S۷o/& j[n|a|I'=zEY$:KYZk-i]ZHD@D@D NaiFaxLNA3>P<;Dc; ETBkz j!Q 6x`/~Ԗ]vYbzu] Ÿ8."PctjӉlF8dֶfɐVkO)荔yk%Ls*ׅ^nYbmFjB7pֱc_|9CfΫN tDހW^W_}SD@D@*#.fl_ZX[B /{#t<~BqhGqo3]wӧ{Х8Y"|]pVA}m%zdC2>K͠! Rvrzisό4-y7ɓ]cv[sǶh /e}yF$qp#؃ z行[9AKu,ǼX)[DD@D@Dr@CIT[l9]Ƴ .s5ʱ]UFI)je6R1V[@TcǺe02l&X*.^L8HTGZsC`joਔ5P`wҤI.kW_}^zx|GfwvdG̗_~\·FLNaFD@D4T)w}6/  BQx0&%PV }h?f 7P[++:\; x= Q;w5ƉԀСC1|]ظMM&o)NcVHq1µ~pʩ 5"d p>`qÈtFcԩ?h3:dPt6D4>i/#83%g2QRKŻ!M @ڇtbI9q.A:q *=c@YdM*l"UnzM6gl|yi юqeQM:o2dHu;yW{ʔ)Ak9:J_ uޝ]j?l^|Ŝ讒A.mx*:S.%U?͇3(h\+fd"?Ѡ~a7Z7>Rм."P=oرA3f[z -7*yu\Yp%kkoj„ .'thC}&Sz$^Jg]4Nɾ}C^r( m'N4vfs뭷*"R '4kibA!8 ϋt~̧~{nw:T(Zi@"(7n8IųڴsdM/vRhtD wmv b ],)W?ṃ>n&K,D?_O㏻TA}bIŗX$e"'^)c=IОϝ4ǒK.v]KqEo?|kwyI'M6O>d ЕKo'װ.ZIXq3?4N:cFUm[ĉz"-oѵ)>3~}Add"POH?r %s 7m<Ѕ)'Е3LVXaÐ˞~i3zh7 G/N\vFk SO5yWw5]r%nD,ڡCY~8I\pv.̉L#E@D@DiPiQ2h4L6-Bg]Z뉠JE@D@D dz~wa;k,NMCͷ ߻۬38wq&eZtuu>G &rr@G @9[[oɓ'lmd8rK![z@uk|Xm/r޽?~|8{ 0Ag棎:*P/欳JdZ@}_ѭw͇~/Wd=xgu@hEYt7'wD@D\4h0`}η^ͳN;EE@D. vmEk-8/r@ĤD@D@D@D ЇȤ\~?|) HZ'?PPK6|$VuI y/4'N4oLΝ\fN dMi ڵ<Ȣv _Evam ]hg1NFmd~':ߧOb"ƌSPᣏ>r^xģ"va# "54csm!n%Ss{D5 G<^n2C5hQR)=X煟W"P QITnӻzR8}g?Bh@ "&iOB@`ҤIM2Ff!j8;v" " " "P9KU3|G;.U;ut~W{9q`8p٤PuTM]"i3HtFp;y O,]1|F 0]tѢ|yg=X_uUwE-D7|Ӭn{l& &uѣGEDx` qXiE2J:5M'|qD#Ձ4LD@D@D@J! t)`N8\y% I5}X@V}70lmV~ͬ*.f94#Fp//瞗Xr% 0 ,@92"A(8IPȴg? 2ENK~>E@R@@:)8jB]@o5dV[h:_ (SD@D@D9 ޜݼ{Ë\ sg'xjg Z/bQr/!e95>gϞe;5> =i7RDL}[ R, "!H~W\qk dLug&j wq2?J%"P=L=d~a Z-ƍsmDB.z ԖD@D@D@ꎀ"` Ct?sC1-"K۷oobmK,\ :<2es:Ndz lAZNguΠuÕW^{GAm\ 7,'|lnS}lnb|"  N€$s8Htyu:Ӊ{5d" " " "M`9HC %z$0m4p U|fE8/C>i#-\JĤ,^{e0d" !#y/anv&LDv}w7|&ЀJdn>}3DH#C_E@%0c B He[2@v\"n(ZmdaAߜ@zHZ'=B-ihC#G!h2/Ғj4 @.XΏoѤ{./)w]~9wx}@%k*(&8طzEu~P̕~$~)ڑHV[5o1vXN8-̆Ov!Uu1ǘeYtImn6lk׮ꫯ6{l-$8R}xi̙3cYfb"-Fǀo5}0a߿Ys5&4wqywm vyg KDb $5J ^CJˋ@HzOkX@Ԕ3f\Z{_V$iVhbNg@p:noᆡD# t>2 8ovqsa:w"J]sꩧO)b("I*v@_venw}.6oy@6Ȋ+7VYes*+.Z$Did4tGZ3}1Ya̼k {ѣww9Ih"gqYr9Ygtg}}0U;ƈ ٬Aa]540۶mkk7 Zr%]s{Qc_|ь1Ϧ{GͷgD$v,Ncڷood!F4 vy9)rZw׺e9'Mff]22" ",p*{i}nMZgUvC60x|IBy h6[5BD@D@D@$ t}>E8uoz)'gjpZ_4鮻E38jxo:3XOwNh"ϊ1۷oXi}Ȑ!*tS <#" ">`-&*3sgO";#[ uӹZ5_Z4B#D@D@D@ {h3w΍$4v皳:l_X7nAKqfEɘ?#G4t[%zXnmu7fhoREwm89o^:uj8W^f"q@w0tȼԩ_tEڌ#"PpHZf8ps4!r3W_ #t"8_|qW_7A B $>#}9ĉ Zit>} rfIغ뮛jN 8Om߾9s9S%\GOr IN+UGgK,Xp}NYRq1"PuӲ7'p+lC21)˥GNh pH~ ץOxs[޽aTF@;v4 $:ᡇ2K/t?08{R.NH{7\&/~s Mnݺ9jE&E\!'8ٍ_4t|Q}wz,3HxG ]P-MH6NZ@3t},ؤIŴT>{q~}(82q}Abu8:ID8ѭ hD@D |Ǜkh3l۶շop1&\v`]vY#S˴veO>I/TBE+UBOˊ@c5槟~rR\pic1\|HY+B" e@ BDڪdY1iL*Bɣ:t` ̐!C2$8f}vWnv0SL@42I: m@Q.\(iv>}hӦMŻ7/gק ?Ys%_5:]E@D@D@D@D@D@D@ 4z_jF4MZ@3@ ls~/K(wZND@D@D@D@D@D@ꅀrh'ΖnɬZJ|IkAo4{キYn\qæՅK8|p"aM7 ~z]tQ>}-i@זb[czeFngqpD֗'|2駟}I&9'<NˬYw}V߇LJ#K믿fHIzq>^{ [V)[Ν;N:vm4v?}zh/" [/\z Ur-," " " " " "  B@9~7~7ssN3b~E}|g5\3!Jz,EC3@ !H&ϸ[{ٳgϒ"ן}Ytt>}\J{7֟zrM4]wKb{Ϝvin8d" "M`uuUoj <%u樣*j+;SaTF@niӦ6QtMJSNm/L2%7|cFֽeTold" C୷2^{m;4cƌ_z.f$M]N [nbkELD@D@D@D@D@D@D@D@D@%bI|/kW_}[ui&ujE" " " "P)M7\~啮&lI)" " " " "P9K_~yFOf篸[G*^V " " " qXk LD@D@D@D@D $cSV˼\ ;uD0afQ2." " " " " " " " "PЅ=ܮ ]vYm6/" " " " " " " " " "PЅmۚ]wյ^2~{@UѣG;vhvqDzץE@D@D@D@D@D@D@D@D@ x8 3|={/RΚ5\r%w2'|}v.!}(H@ło\uUa/+{|_ <ج暦O>w{e=." " " " " " " " "  YpP=P8 ܷop_ڴicV_}u3s"}o˞{i:>E@D@D@D@D@D@D@D@D@Dhr@fr@2kr-om>3rH#~-g[^xaӣG.^G:|'QGU@=Rm~|N-,Rnԩ{+ܚ΄\i?\+ "$2t-" " " " " " " " " " D`F@zc@CvFD@D@D@D@D@D@D@D@D@C@ DD@D@D@D@D@D@D@D@D@ u83" " " " " " " " " "r@X%" " " " " " " " " "Pné:=B-" tCN9j49pjgD@D@D@D@D@D@D@D@D@D =NϱPKD@D@D@D@D@D@D@D@D@DPS;#" " " " " " " " " ! tzZ"" " " " " " " " "  E@:H9DD@D@D@D@>kFy癶mۚ{<3'O6YAd6pÂ;[o-i׮Yyݰ~6(zgӥKӳgO3sLs]w'|ҵulfw4;w1m4sw'xL8t:34;v eҤIfцW_}3}z|{qY~%탕ݻwǃ> ,~m.%(OW_=h @) ݝ] @ @3}5הh1cFzꩱyx7[ji8kBGqDtMqI'A7n_~.[dIS @ \9w13g,c~b1mڴ8묳J;mݺ}QY\4~]q+#|pp eΝ;c͚5/^-ZwqGlU @n @E f9WAO2~ p\y啱lٲ=+|IL<93eիc-}-Sbw}9֭kS{o?\Z%?:uj},WMg;SxdYti\uUu{V}pzxKܯʕ+cΜ9!~i{U- @@ a?\F 0_<-Ecǎ-Z|y 47g裏y=ٷ7n\95s-U/W'g^fɹu]Cef9staÆZ;vz|~>gcrd*ᄏ @@ @w3v @(k\\U?cn^pa&L(G2Ů] fz`ɕUyU-ۓO>/zVrw2wh-.8Sʑgyf97NS%@_+7c @FZ 5U2sU38]>cŊm۶)x`߬dʑGYty)32pJ*]tQUm=bZ/bĉmj @x @`8I#;޽mpUʇ>쳒79sDg健] J^ǜ)EڕWU{v6W|Ѓ29H*zn @`;k 6m?/^;wtN8!Ϡ{zy~cƌm^mݺ|} @F{ffL Х_}U`ƍ;̼ѧvZqqGm~wJj?+C^n_ ;);j  @̐ @"pG|O{ @` wq?صkW߬Z*Ν@_wu|_#swɒ%u}$*SN?0͛Ǐ/Sȏ V |ͱ~9sHL5  @FH? 5BvY @?s5 ~I&ĉ#W?3 }0aB9CG͑ @`/ @eP @ @ @& @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @ @ @ @@G;jP @ @7Y#xg.*IENDB`ggpubr/tools/README-lollipop-chart-deviation-1.png0000644000176200001440000057603213571311436021431 0ustar liggesusersPNG  IHDRÄި iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATx\Ugf{$lzJBB1y_4EԿ/*i (C ޓ-f2S|>rށ>s9*BA@@@@@ Gw          "@V:E@@@@ g@@@@@Ц)     h>     6N@@@@@@@@@@@0E)t     @     )MaS@@@@@|@@@@@L m +"    3     `hSX@@@@@4@@@@@S@J          "@V:E@@@@ g@@@@@Ц)     h>     6N@@@@@@@@@@@0E)t     @     )MaS@@@@@|@@@@@L m +"    3     `hSX@@@@@4@@@@@S@J          "@V:E@UצA^S)v݇4En{M/Mi H9k&  e,Yu&[v-CERXsɬh铔 CNdZ4iQ|K%RL* KUQT-IGHL)blͷh%vM[VJeR{؏dQhĶKb5P,#&uwg0r  @,whuB@BWg{3嫓gƋ%mʥ;ɸ}Ye6)@ŚK]l:[,ŭq~R["*E*W,Y׉%&֋TE@BWtf *9ym-g~ ;ɼ#DjJH޶_HE~?^2)Mw_{qTTʷ}}Ԏyo:@BFtȼ & N*wvg5Q*OǯFˏkZt9jsY;&QG=%ֈ8:jek6,Gn9b#f{D^ @z3  Vg+*_y=NҔa-c{Mr7)%G6娶C%mմ1ZRǶH\^۵#޴.  2CU0@@u M|B2 LR'KBTmWIOM&/B{>V(`{a~/O16N|GjE4@hi֖6a  UU%|zMK׊NE+ouqZ]. Gnm NYV^&U<8 \-1s@@ d[Yvu~KOeɣwuPpߟ;A䬻^e/[JWM<;qFC@p @Z@߾}SN2qĠ<eёA ۝)KOixUW,~,XL =,c7נ<3b}36" > f  @Kʒ3gHNNS֛fij_*MUi5 y [ɑVcAl/F$?]5,y_ l   R@7<@@ _Yլ3=TT"of6O@ʮ]bPz<)(c^]&{)*/6w)5Am?v@jf3yө-?Ξ=++W7xC/_/. G@hz=s}n~Q̙3eܹF.cs0q;F7Vvm=+l߾]Ӎ2w aÆɸqdڵvﶽm3n]髠׿a=e(SN5ӟJQQُI  J@c  ->l= cc%TvPr6feno5Yߛ|ҭ[7{57o,ӧO{;2lQhC^cIbIV:ZOW\>(# M'f@@ <><<qW~>^z)6aw{̛^{wHii|{ߓG?/<رC*FPڬYHYY{ob(' >Cywb>#?̟?_-[&QQQtRIwA@0 @+n:dҾ}{ݻrw֛N)nW^wى9/XYӮUkΘɡ7T7}r-+og}mSWo,_~SfϞmTӧlzc;'z填ꫯʋ/hܾ\U3RV]mJ߾vzTr+$56.]*6I\Wq7֩ta~ )))Ɨ:11o m5'븩ҥK}/t9q"@@`tȽ& MR.sbb~g\\ryyyrW4钓#}qqCfxq=047$,,6qk|dr=S{[!w9JUOƗ4W:+2k,9$..YُłGu>m]֬YcnhժU%  @>  yd֭F/ÇM6ɿ/#`y}'|Ҹsy睵#tMMXzukɕҵt9h2p^ox+reݨ.?Muvzs۷$$$HFFͨQD@sb/Q_e/ӷ9_|uɰя~dsA؈ʗi@Ltp@+P^^.O<1j~[hLzO7o,:̙3EeѢESy8+zs0Gѩ>]U`*Kq9󪪪_Uݺu T^0Tm?8:ņeC?3fȽ+f YE}v#N4HG1cƈԈ#M@@hg*\C@$W <:nѩ9itgE;u.膥B.\h\ Y]C7y#ߩNbxSpr1cN}7dϞ=W_ծ}DRBy8ٷo_Jh}OozJA@<BdT  a"lٲ' k?{={. G}$gϞ57g=pBThmmƼVX!ӟk׮KdBG|(KT=sze-[k1̙6m˨WFgeeG|hzKs駟\ysn:=Zv\oJA@ v'}@@ӧ͉ۣGz6l'_]љc[|` 8]!]AA\wubۍz5ns6ݛcXcF>Iǎk}Ǥm۶}]oDX\\lG>IzK_lp ۥzdĉF_?Ag555XΜ9 h>  ٵ*hy뭷j'ƹW6G6+_;/ۑ#G<:G<Çi땢x}D!kl~80s_{„ No׮Ǹ{nuh9.+s_r9Vʃ>(FZ מ 4%+Ԍ  qzעSg?u]zC<]*:.:J+ͥQw$Q)ű!k߁unb~o.:&ug%cxݟ%RSx]_JRRq+""U[G';G[93KN:n؟k K.69  POt=N@@ ׯCfjZuuDF6h:ٳm&::`#}2k֬=ԪS:GGOoP7#M榆/"ѫm];WFcǎuU- c;~'152> VY<-k֬1V׽84'OqӤz3ӯ2x_]8kXqPuyu 4%4U{  ^ @gdd4Vm3ҹUt |Af`^!tY׻[H|]&1cP͛d]owJw>o7k㪀UW^˵^+ W98fcة"*o__^=8Fe/>c-{Gѣwo@hn@@Ы`u]^|Et9SY}t}67}tq#x ,%:KZ\LsOhr[>%$b$"{Jlwޫ~- mWm_:/YD>cJP]j^z8>|8V-V{H7Eq|mCxb:5G4QI!3׿JΝtZq_̙3G~&zV?n-.v=s2h )--iӦ)e+dСec_jtGF@F@LЩ_uG2uT)..6 ҦMqt׮]kiNA}g7kyvϮfuRƦ] q/k9YS%i`7ZlPw}.''GtsѢEs5oPKjD\S *1۶mkOd_pT'z#ԛoY#uS :!:G@-`QV-ј<  :_~ɓrlV{A?] ]zc'zժU%a^YݱcǺU'&&m,r^CO8-?X5ZdXyqa[WS{ui;qHBk<*EEEuV#_z޽ױ=+ʥډ"mzAV]?Ϧ:i~>,0G;|S +C0#@h_|ر@ͱZv!C6.k2u$w!k͘aa|KRǼPk̃=O2e vYmy|[bU+#:N)D9h  @l5Oƒ  !." ,h:H'%%AmںhWj`GAC(URY[ >F/ǤN1Уu0? ΌӺJKty@FA@*@ fy.@hz%Nn;v,dW$٪庯ȲSY珕#K(DQi*L-HʻWxli%# @HtrD@|ؽ{,Y@oH!o]4I >kvCUGߕ|gq7D)/]_YB]:E@`:ʌ (pY),,v[oGJttƣk׮>f 2CKScI]gk@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@>@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@>@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@>@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@>@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@>@@@@@hF@@@@@Ah4A@@@@p/@ڽ5@@@@@| M@@@@@ voD @@@@@@F@@@@@Q@@@@@H$ղaDIOO@t    ŮJL'|f'O4IVZ>ϓ"    @X#,^3    _t@@@@ r@|DgJFA/)bMjTH+eL.I,K+{z@@@@BIt( rX<":&GK=%5&ZMSFO @@@@@o@{bu/[Q)wsypTne/TG@@@@\ vmwtJv'joCύklYqj\?n0iǢW@@@@@["ފ5sj׉Ug?$kk'&{B@@@@03G>6'| _m^8e%'e@@@@@@{M< r+{_"'WYb/4},@@@@@+@[[Mܰt(,l /WI |S@@@@@_@6o#r<2gˀ     :@{s@ݹf6>#    @ ;noY>PҀP@@@@@o@{[rd马FD˄Tٽ i$1V_cX9M^""/P88@@@@@Wnp^$bcC媾=b;[Q)߼Kgԯ_[A b~pۻ{m_zC}ћ-P߫%@@@@@&@7|7+eZ͋&Ɉd٭B/8,2<%YnW8J#]m\D'ժťG$l_ܵ||r+$We[ndIKF@@@@ $Oܘ'6[tY7f.7y?PA=i52]s)+m j|R&|T~=ҩ2NZu z"     @S'nW-LN>.8zೣ&+Z׏HvW\_/#h7i8*]D˪ْYXKu brVILmX]c!"@@@@p'@ڝP3ݷ}1oO%U6o&wױFK\:SeAt8kDK#    N؄)K_ NaR· vxV%|"FT./"NӨVE|n@@@@p*@)K_Lq9 ~|HyxPi1n\V>;~envّW 'O+>[.rurq׎obN*r    (!16ڨ/(7 #92NrQoNs՜U@@@@F!QҮTZwOS$Ciz*n\շLwӹa9V@Q԰-     CC"~OܡތT Y0m|ސ+WZʨWӓmekYǪ.;u9S9ջ      @79m>mddjr[WrZIk|L&Rk=i?8*]tJEgTKNV__9@@@@@+ 5Tzr zt1md3\m{}3wyGHJ1/jgOIfV=;6?ܬRr&@@@@MС^Ďe}eE*-_3evUN}7{Ն     <HmOFʚ9P)6.SO/P^6Q'GYoxBY<*ߝ! @@@@<U.('F&MUVջdl]Z)չTq2>9In0F:(ǟ?o38j% InkC@@@@"M.A !*R.MK1jct^!V-ej>C*"~~6XU>tjs Ϙ     B ~9R訂(Uͼຬ\)[`<2c     *$6QfN@ٱѸ    `?MGv7=#c5PbHq._'EO)     oJFF-˝w)#Gt*Gyy/= s%1*JH1,\Kɯ|~6|h     ]r˗_~Yì,Yb+rw˼yU K$C8DOMm4aZtm&ʌ#ȯJhoSYE>    & \̙#;v0ɵ^+C Rٴi*fɳ>+kZZFsz=ёɒ-s=k!qɫ[ԜvXT    +@x6erRi\D@@@@ X7T莤W5 #䥗^2t\N{Jo3CǜkG֜|=xyy/u@@@@@;kƍRRRb͞=[:v<uF9k֬ϛ7ovV%l} K6rF 3uqU`Dh    @ VB>}˘1cHXVuΖ R"\Ug9U^xdI>Z @@@@ov9K.I)((ÇU(1114ku'o_tMJ*sAy:>@@@@@:/? :n7Z?֭z8 Oi'o^4I:ʗ'NK׉HП5g|"    9^|N:%=Bя~?./nTѵvD7TڍHYqXXE q(頂@@@@h~z.[O?|+˖-s[%V>}n=wOJ#]}uTw    `Bdٲm6jWB{мVi6]9>.wೞo     +ݼ+d͚5F=zȧ~*qq?eF)..(G!v{ɖܳ*F.y$B-}źmcuWQݳjG@@@@ XԆzdPwL#K޽eɒ%og'EL4IVZor!xIOOnSr+d仟HEuMSjd@ypqT[WEoD8O]vzi"    _.׮]+:0>3XДo=79S)dۢ@@@@Rp8y\{s?2sLYpUÔ$ ʪ7\/_ݠKT!-!    @3 /(sέ >y睲h" UЏZRPqÃ:&!    {u^}U皚X,O / ujqL:6|1ҹgB:;@@@@@Rp|sNDhZ_\樷^4FʖܳA{5Df@@@@<`7Vwul6G!gf|Tu$Ү  ?6!@@@@`›?X`ԫ׭['f^TCTSee3I 2D}@w}kA}{u{KRt'M    !"@:D^DkƐFtvrJNWVKJQeKʿanё'6JFO    -Ot{g-zQ*Zೣ*CڞJW     `h3T3t:_*߲KjL^ } D`/E碾5RCZO[Vt.- @@@@XTTl-ٴS`P'*}z{S>V xF7c8+(rTao@@@@#72 3:'x̝yr ]Vܛ_(.[uig\D@@@@|F C޶GVq;vZX/>p;@ʒvo@@@@Nw^n?_E*}c~z^9XTp>\ʏܞ     ]WV+鱓ʃfد?rsdt~ڜ    @ " } ٱ)h(CS{7YUr2ߴt**'qwz5tFAtCp@@@@7p-p\A7F{U5v@5~vT-!WHyu stfWo     F nlJ[P1gymFqA}JQX"Hqb۷ǎk0G    ?G!/P[?ΫZGX<|vP    -\t Li-ܩNLRcёMN,!y%|n"    N;!hؠoV?/8,.r?;&8. um|    ;ߢ%%e12GW4^t =~I󊎰Jτscoh֜@@@@u n7Ng=$/=uFN59^*\܌oƜxND@@@С.ISTnf˄TcnDDԫ7sZs3NcI    #@:t31IYo08K~nۧ{ ^vz8 3TڟzOOݨo_͆:    ^-S RkH&A#MsÀ6:i{pz=HZ     ீŮ{TLuW^"zcDW庯ȧNUSժq      _Aڷ6*;of냣ӛ >7BlPIQ >S@@@@-@u_]fm|Qr>uf{By⼑o|k8yb(G{@@@@p Nog5VATI oOuPߠαMd6׍ ' @@@@@ &}ۛ:t^|Tjx[jEjG&n%NBgo_@@@@< Z@ 3};tXLxkO.P:ʾ B?6NqRdWH^~OK t    !@B DZ edOSs1t5s.=]UϏO)]:U!@@@@4cEj"_|w|q}O8-v/'?V&M˘ӫ.JꗧN2'ƫaz%ˍ{ HB{Ge@@@@BF(0['?k 9\Q%*mb:FEH(&F.ûtSüá)SIqHʵT2+儚c~<5*jt5KՆh@@@@'p)j ƏQ~ǨqVKUν|d_ᄨ(]SUyMyF~3GQMt@@@@ 5TRM U9co!   %@*7O    MtШ@@@@/yZ@@@@@ hF@     @x "    A 4jB@@@@Ktxo@@@@Q3     ^}     @@@@@@@ ^E@@@@&@:h     z<-     4Af @@@@@ @i@@@@@ 5!    %@:7O    MtШ@@@@/yZ@@@@@ hA@ ,*eg^d2).)INb#"҇F@@@Zvy6IJ9!:.krəD[2>-UM樟&s@@@@enY"" *+寻2HtTCMȽ$%6.    ”h<&\cWZj6>\86    -Ht zYLP(SWn;Vn܊ʀM1J~fܺl7:`    @@h}*/VƒGM{U.9-rƠc@@@@s@Jzby+eCvϺ-/_W1MA@@@h9[λbnۖmAӞBR]cژ     hh@X :rj]VhF"o^4IF& dduP_yr(IweSRXYG^@@@@ @`6ڬ)/>2R3Tnл=O/ >oΕ?].6hߣ'K/_L<&gʍ{55TR)?(    )8jhΓY!@3 :h:ȪMȩ2Fu;mɓ5*stUF uB#   '@: 3B $5nK8y1٪6),@;LTHqi1DwN&@@@@&H$7@!`,-sjr>RjmO;/Y͉    C03BJOR<[`旦;KNy\dl=r̾jN@@@@ Gf@H Mik|"K猂"tMdғ͝L    @: ^2@ &wnnȂietِ+WZ *֭{qr'Tw@@@@| ;#*5k| hr;W:hvU0`a\dU\NR+'vl77ʍS+HQM*QcENF$KNRMA@@@HGLTBxۧmw3wyGH N xףӍmd3\=ʾ9KLD˺n@ʻ|wՍ rYruߞ2sGm   p~<;^ 6T^t]}mTSh~sOAcH?W՚_Q)O+;$eMmxfsZ\QQ;ӧOǮ] ϢI&iw>&:=w/ DSڶ>m{pxצ(@ P(@ P]hKn:5 >[f\w}HLL4&(H`?;9 *x2<2/Ɍ/Ι kao뾻jQvu4(@ P(@ P=JGMoO>M^zaɒ%={6/^,SPF뗬=_amA1Wס Ĩp0n4b\l;YPy;R3jwWwPR?k7"O(@ P(@ P`勉wߍ_;] P(}[$\چF bAl$9c|}َUedv`ӛ Au2#_>y}{uK P(@ PNX /e]  44PM P`N C :ڕ%Vy2#1OO~a!ya +(@ P(@ P8Y6*sgwy6lhmU'k tP`mN~{Pkh翵7W7ot`L6ϧ(@ P(@ P[h˖-âE<|vO (vAJj|>RQbYN @g"<|eQS P(@ P(p 0}_ `v],xMLbilj .(@ P(@ P8aKuYg!22U/g(~:KNV"~]9L3(@ P(@ P=Nh_~9þ2m} tPVR]tǢRpP(@ P(@QIIOWL*=?S_- P(@ PP(@ tMe(@ P(@ P*.n!:Q`(@ P(@ P''{@z}ߘ O P(@ P#ZN)FGG!̯{偞y(@ P(@ PdXO p>^8On5s&wp0(@ P(@ P+Jm^<~ 0/(@ P(@ P@ #w+(@ P(@ t]-Qq?@%(y"(@ P(@ P  @x(<ل8s18MJb(@ P(@ P''k;@xbr=3fbaWQ +hh-`XT8T3{'!%,Ђ(@ P(@ P0}|yU P &S'߭2Y$xwB]12+GpVL-SqnN (@ P(@ Pp"N`XM ¿O`_ސΜ|43> 7\fM ߭}U2s(@ P(@ :I t^ 042ӯWr>9{Jg&\H/)딱..ŅmFB P(@ PR(@&0("Lг@>/-& _̛IMWUs?ok{2p޲(H(@ P(@ 8(YG P  x\j Dk*Y%< iQxұ*[;}{SAI;G,(@ P(@ P+aW(@H ğǏ±#ގX58\k$2c:5i!AeD )å_BfYE骣r\!S׾y(@ P(@ 6jp8%|Z|4R˵olDUC#! 5೺~ܕe{Q \^9+/kQ(@ P(p 0}e PbM ^7eq<~t0+{ P(@ PNf>_};(pjj ?qJjkxq P(@ Pzg@חwG tSvE/C#ÑCY\F$EHmJ@/ڏŒ,(@ P(@ P"2(p TYڞ6w?(" Mq1:<kOՃRؤ4WMƽ xe>f`Xq(@ P(@ tН%~(@ 4$7gzデ<ơr,1V)t{Kʜ6G\Lf^Jp[5 󬣸o(@ P(@ Phy),h,won07 ZAkc!aӷ}ӡзѦ/fZ3(@ P(@ P)!bݝy@ΫscWh/弯\fD}Uj?9X8vRUX~M壱эd6gs(@ P(@ 8Hiii8q"֮]̟?]t~mGYE P_Zf~cTt`^X p/ly}z2?%> KŁrmˮVIV(@ P(@ PHb`˖-ذafϞwyz}yDTv_/90<$2*es [5 OW:!+)@ P(@ P @_]]+<򈱚NJS(@ P(@x<r@`՘9s6tL<}Gs)@ p}Bm|9h9(;YBC*MFL~=u Uoq=S(@ P(@S@[FEE/UW] soi3Poozܡ(Е"l.wytPz}G- ʶb- pE,kW'_HfO?y'|>Y,(@ P(@ `ڼ[R ۧOCRp`^'981H@Y9[-ۙ'n.(҂-u:ܱ'Kʱj\/v&Ia~6ug]P(@ PNDOWcziygji)B$qGZTOͪ^}85)#]in \mrIrA]C߂7lEccu u+g*|W|Z[0XM P(@ P@YK@7< Ǎm#?-*̖aBr=_fOsnǸQ&=]k꿺VRO?_3 <>X^(@ P(p>4(@WKo7oZ P+Aooz{/R0:8Ʀ!88Un;VY["UI'$Xs}C#X>XW[؀gM֫L P(@ Pv ܥ(dV]-Aܷ|ڢ˃hiݼsl >:d-R;kG P(@ P#^F(@~vK7 l-(߷jcI<£`(@ P(@U)@ xX@T˦ApU۰CԮIm=P(@ Pz=E-Q WwgUWC#1OFFE@OwZ {~G:[ի ܂V"$' ZriwVI ɉH Iѕm. P(@ P@7C(@&kv3Eṩlr2ᡟv_{2:Dw~d6s2J1/lʭƥԫWv}ר!cHll+uHaGrYIӦ`Tt$~)y?w=<9eMw(@ P(@ P'g@_ P;<ƒxo4-C퇍xlNMJm#9\U&~r;ZuVTS/WƎ@ł܎Wmڸ?9{&}ܗ6B >;;#q P(@ PZn(@ 4 |y]WH0ˢ7|ddቭqP&i:=#4rP)AecQA:Pe9KꎥfmBqT[*5ȯt%d5 (@ P(@ P- @XpVKne{{mŝ{jyXc~6:<&t)m7qj#N $?VY/Yo_} P(@ PI-o'5o!?--ެy EUק!e1Å.C_ܹe[upWqM=vbfivWT"J IMZ5rR4GYIEct٘)@ P(@ P''[(J#"ӳf}fWhC$lY1A˙k *eM8fE3Kz, 2~o7Z9ux(@ P(@MDx<È:QqR8!T.cc h\ 9*$4h; ?nI`[-fxHf' qԵMJٜ8Fi!Ax\XLɂf͜6(@ P(@,ppžZ(@ t zqȪ9 @%UG,̔Ϸbj1CiajFuvƦ?ط>Ha-ȭ$iާsunߞ(@ P(@.o())-Ҏ3? tDDDhX̘1ƍF<૗6ID,秝ܳv˶UjcQ_KcTjo`eۻyf}z`LM#v`6[v(@ P(@ tuu5~NIHHw\z饝';(@*TViz*1" ۩C,w׫Ph9}]ݸ8+-McSH{}6Hktk3UŀP߹ 26ߴщcp^n3>:" .Q73(@ P(@ P";Ѐ?: >뫙*`M7ݤնZ|7V}]-f(@dXW~9л m,g=4 Kucɾ̖ٽ1yvE.4(*~\hߜD--nFR̦n \n$qEW[Œ.VC~:},OcK̎VA(3 p?m~'ܼr=~:ܾj#q;-;:cL(@ P(̀޾};ʴr-uWnRtT'OtϪ\$&&Zq:W`լጲ $yӰTmv *Wթ)ZJ@"#'J0/v=_>oT*e6Y1X~bn<>) 9o;(9+qcJB,2d9Ɵ #yCtՈ]W(w^;mm{ ǹ}qW(@ P(m<^~vqqqnлwodeeaÆ 6>}Xю9VA P~) NRMRa~种N^u,K)TjTFR/xE7?‡!0Tסkd P(@ Pp,J~~aT?IV>|X;7:v&ׁz67(@ P3$67@IDATWɬg%E%x͊5PEBO1q$0ST?q?pC, 5٘}B1O;cTFaՃR$H}uKeBvyW -Ȅ1h/;%l4, KdilEE8չ+R-)W\]7tB]?O<\c(@ P(X#9lrS?q|e>ThUƏo/dY~d P@_&ns|V ΂ϭNjgd \LCF!YXWggW}s,R56{)+Y?vJx]5#|'bmiՅ2S~Ž3 '766l+80lQQsgՍ|/w>Mw P(@ Ph[omf Y}pT' !-j߬RnʯWGޞޫ$bv%=]8=']fϟ[-gF& 񱯧IM&0׬GBcCS*[Q(@ Py @+n wq&~]t)f̘$k1}t,^ؚzC/2c=\m?%%Ez(qP?_3gzyZ0sos2[zfRޅǟ/J?2ʭfՏXg}P*]ʕ>"H).SШ-rvjAv։!w%h5S(@ P8<V(O?4^{5Q'$Er~7CYU>茌 m̙X~= p@ $ᓹ318"̣U44,K%M}>_>:f_~;{&ami}?PN\4s2=Mݕ}}̶6⁍j14}T0On)oo$󝎺X]ձe^UZX*Ru dh;:oThSlqP(@ Pp&@gև+s=םSؖ<(7fO(jC`|PUiõtیť1Dc1*:ݴ*',H}tkr-䁻VE%]:Xcc[T|5+#Ag$|OP q3 P(@ PÑS#+%9}{]ho މkqtMNŊsOûxV):DK>wZWAmCVޗ |4S(@ P'@ 6h6rrrEѯ_?m!BUB P'@P3 9_>7~چ-(wTo:Cqz$\7j{}N[i+!l~_11Q㒽إ(PA;-DxƼ\b-rk6p|`_,x>^OϐkM[QL=._:Gsq$k26UGP "A2\_m ;t*\o(x!H7jX_Pofcu~\!}BG$X3(@ P(p /..\d rsϠ \Si P8qMF|-l%[" V74BM lM' _JBP)AC2k|@%|,c uLL v0nFPT#B|y0w,>Ld>} YTV}C)c.Z OboO7VYF#%,+D3rkC}ŀPTl}>&)1q.}sm/|KE.u?q؁^%_'$%=F]^WяZt+DOP&I_Ql#*[aTdo?bDGέ-ىW}(WdG?E|f(@ PzG=.b$,--śo-8snpٞ)@ P DIJ %Xe&K8([$H{FC[뱥䗞??n7Oqjv9}޲YfƧYGSZ 7sZÕUzyxn8(uuxHfVT $}j5CGq0<*8R=\y#c|ÆH`%ɏ/ Ie&A˚\1V=ޛ3 BCX} }eƺ z?6) A? 3=+_9 j/|p,xbQ:W(zQ>$`;  3>opoTH0gZ8,VD}FRK]m'_(}/Ju Ch, G/&,WSMwK0EWj ^ Șrל۝Ph-^Cܥ(@ Pz{5|M7@rrCʊ QSS믿sAX''(MڌlbbfW;%=Zht!s;C~$fGRfYf3Ӌm<7J~^C &ԋfcZ#i72Nkrݷkr< {)ZlV e䁶@W|֞#-Ђe_[UzI}zNySfVWyƫ{fB:5$ ,֋7`APYڶ6}|I >53[) (@ P(prx{6ӵYͪoL~嗝UK/55ꫯC,(@V ː~CĈ^me$_E C%謂تl.(骨eIw/NMv_ْ?ZU쓔"<̀JvlQZPl|{~GSi=0o@|7U-smts-e)K!&RdG"Ahm >골cUM -h[gS;T.-2Ci뮻ӧOگXylH Pe3X"݂xqs 8F) eHc̢VAcb^ @JRll/,vx @2O/i䯚q+^ d덭eDcY*^꫏A֋d`-ުzYK!;fk-@+ [/ IeG@!5֕`/A]]L|p}`Mi(@ P(@/cMb;j(hL6MS9p(@ PoɩfRu[nE U: XnjGD5K) kfvFY^ܹj2')V+ZoTd/|6u(YKmĹfmQkKgW \ǫA7]^"-gljPmaw)@ P(@n'ѣ=ze#w"TefOa; P@1_46u4`oəJNmO}`<4~d[jClhU,Y*Fh{V>r6Sͽ?t.^,C2{QQMUTj t`>nmi_6/u{ jY03xU7*c3A·_H;;Emgb}1Vd}>(@ P(?Ą '+`ʕ8S]n9 07T-GE P8b[*W] DXUujڥhЮ["NLCbM+;̹NSmUzX>?҇K yCgb9*z}Om05t*}1/`47vY Da+uSKӟv-3IC b QS/GCM Dz!Wzm]~E}!B]m7*JYc|ZR vU qOcCYB 9qÆ!~- [ոq s]O9-[>}8KJ;m]rаfؓqhA_c F'=n]I[/ fg#Ґq 4Zԕ@"o(ك$<msjyb}}G<69Ɗwŭ1q(@ P8Z~xq@3f |ASUuM6 /ģ> p;#~u(@ PkF˂~rJfۤ5͐* )gY} l*hJ?|1fisrǨ'9Hn@uU}ap|uz>}i뫚R|yk)6ͬzJ5Xdn=ƆZ0>UG#wEN *kE|9>4R W\?CYk Al',VD9})(*'3JPނȑ'0EMJY/Ϻ6lil=Ffܡ(@ PzGP3-gx111HII̙3JՑqᣏ>^qu8q7(@ PY`r|,| Se7N/Lj$<&& x{aIjS0.6r p:l9o 2Yq.)2.q|VO՞sxy`ȴ9V1-j#Im9 JULnJoW[?h:E֞%m,5jezc M P(@ 0:jjjQ<=ZlTk9 P@7P-fJ2Ww3q+3JY2/HY~vi0'I /tPA1M3Jq׫`\Ok:s92"*B [>6'賴νcx-_~ځg1vjOH0 3}9E?im-UGgЁU-; sb&*Q~Q3:q6?L+߳W;U٨- ND`TYɭKEkk 7::,12w붘 >NxKpQTsuJiOH:oZlPu]E6͔ ~vCMN1D{^^>(t:QXPoK5q )_w@yD3Tn>__k]~wcV9Lw P(@ P '(@ P cU->:xRM$@YSk8? `S֎ JOQRޒMWegGKfZ_`__,\v㵟u k^X@=a˴CzlTOt֮\r4ކop2BSo0 7#AfbG 歝/ >hۑ#pT+q~hkl5Zlg^>ZdzUU5_#\(loiMc]M]qQ Py.i3pP(@ P''KǁS"pXbƒ-7E-hvV${~X7SkRa~%oDL H޵6S%5t?ybUm~%Eƍڡ zb&GyV__~WwO@u~d J~a}mCfVXͬ7xyk{jt{J"rC2{NnС֧@jϡ(@ Pлvºu됑u.?2#]^QCNFh kaQᨐq $V~e.އe}n>tϓ2 zvy&31RE[W_qԶ:WUWYCRu[ ͇P_+yd2tl7-h (@ P(3`k >{`8(p꓄]Sf%&Zpjs 'uRëSi ]` I۶y_(DӾ†j:Ц^ mo֫\>{l愙˴s]Tgՙ_>lh3`P(@ P'iFLp /Dll,6zjg(@ PDJ E 7Xĸ,3gjėfLٟCU>O_'9<2rğ9_;::oXMY*";UǚST|"s|ls JDr/[l9Bd1 )X+3/Ŏj՘~;Qm')@ P(@#֭[.\~N(@ PoƕU޹H*2=i %s+'z >m |%ɢRqMy9+ϑLf^~1Bf,;)0aYE BG7VF䈦v Zn5}Ԃ*uHF{" f=^Z?xQ)0tiR!PHDRr!;!)P_;,(@ P@ xl]\wuec_jwޘ:u*M. !!\(Dy-9N PU`9x|Nk?;o_57l0,eMme1❏ fܳX3߀2[fE'Z0dl N>iТqdZ/rԃڶO;m1|e -8" 噗Bz_51j3o^uYp^q笥(@ P x$})hS3][?PWWg߮]*+O?QQM Yq(@/?7 綧݌,E-*{8w:mMp皟N۵Sq6"Z޾+J$+Sth?0 N| >q p#ھ[l5k0sL|HHH.C8(@ PP'`(e;9t ;jSWGC%W@ -SƣXG>͜O$ [qyGDE1=IQ$N:GwvJJo 8G~q{oX.[y}Op_%k3jrǍe^z|=Agc[};0~ߘ<ȌPx? *nQi5J<mxCWD%6<8w(@ P }}}1| l+Vt?qmݦEDD࣏>ͺ<ҥKm6ŸZf;NC:[菺I?m;kɃ'އ'*5IګevzI rFs>R(@ Pws=KpYgA-L؝3<]=MYo&LŋQVf=Msl(ЭesBV_59xD̏ GZp}[(~>#dL@v{Ft^ϔ|˟#iF݉Sa%lDmXGAsI|*)b]6vG6vvq#|{^-gѯujxYƱQ_}Xm P(@ P%K`ΝZ1chh97KTXXzgw}7J- B볦J P@.^.˛ﭺA]#3%h*~~]xop2.8PjCɻ%Eb@}~ViAb'!3'J*NQ y¶΋'mѾ m5~r2[}? M`Qm$輡FrMUE-7]xy;98 /o?Kc+fRiT@#q S}(@ Phدj?}VqڵkKKKn;ڈCRRӌcpQ[Q(p NA[|ZfZ{J7$EK=]Kߐ_?NֵP[,+Xߔ&u\.uP(@ PdHZ~^|{DZk.hyUuػwZ X߾MvT#GX(@ P0 %_'S'juBх$xf̞*>I _3ܺD{hê~o}5(@ P[Ifhy饗fCwRZZj^BBuنB 6zssyyu^)mpju,*k#RԠr}VV\n1('W VV}MյپC)XT/*ubzUu"%$$kaGV>R_fZ<4 LSSm oj"f. sףSmcmB-:g5TҖٯGR~P߷ԿE[پkLz5̾zy/p֏z &}uoC>u%Jv?S_l86?զNۑ!}n@E5lnuBƌנ)ǭ'5ђakeO$I@ $skCpd]Y-~e86"f,@kqÝo`)Ke6-eh*mo&FWHE$kmOgGcyu뽠6n4*d:)Hbw i?+}Rlq罠X|j.;Vv}דcy5ӖW8}upRw~*OZ{]O{AwyU_?0Ttbb{; _JMskssg}c+53[/f6MUyh"WM`ZCqxd(u{{9L ?KLQj?c}&&&BEoѶkG}8S3VǍg:cͫYN׈ZeY= XS]7={jE[՛P{2rTm2㫯3%&&L3kw_Ͻot^CZ)*hFfڻӦ٦NQ?ԟr)ڪFYYY(..6ޝw6M>}iܹF[m1|pӿA})=@t>|a,t@<,BhZN|QqhByt2d_)g Ӂy8)Y.:3U16#F+8OKiU"t)Š_ttU]wp+= V+,k?oTx3gFrōw|pEyUo&ikBue{󾫂{Y{b;;k"Q&;p@3M6쇑I9cwwGin[>j ]̧V[ww]uO'Nl֬տ3aÆii}Г4ֻwoCMws}w/nwd=z(rsszp}q˦Z5fj}LQuh3]kǸرcMOzqw~<+hZ;1bf&10VC^gg7d?t aYQD}`(7ݵO(;E>SJe+Ǫ/9w~Tu/ {S_{k;x'տqo]̔տe/P^{UiGn:d\9!}DpX)*|*(r(^NДdh[QFill@y(F&hJm|m#lo>NxwA>q˺sw9T@Շvfgwh:Kc%WqIff;""MDl(}g{ *.> b/<;vQ{El"[g&LF]>!ܛofۙ3{lrB 1yꙫd*#7#Zrc+|OꙪ7܊ 0}\=tKok+2*K=ZSMwzlڳvsElkG}K؍EݧU%;F}W76_3j_%(v7Z"?Æ kgzN1*2f=~NZ?_R§(e3r1[f|"䫮#1cyNtƪ teLY7{ҵҙJ:n&VM j1+]qm=ՅfBVkϣx'vBha*z8iHn_sag5׈$g:E}IdǮ^?k.yG4/( UTC9$?3FEe6~ 4h&OHHHh&N|P9;!S,W˪N@4ԶP-)zCk?fƭX'ݪtVJe/_*J^8Ӛ ݈"9L6^&iw_6XP"[^d-}Wzƻ.lg3’r̘1#%e&-e;uԴHU2w"jNE%ʏcRAJ]ԧLէ)ahT{RrB8n"6:H O)31(?Eʑ!"9Udq|9g" 4m*ڣr fIG>,MS 7tND4{Q}L9>mZ}[D6Un)ߎ?3p@<'zMY=jDH:/c"f*G O|Vc vU.|V}k@SwGC~'ݽ>V˸6=U?Dg~8!d3WtgukW#p0?zyn @hr< OWaLV0w.[{C'MtQf#x`*37J롋fɇݸ_GMq%   7՚G4dYh@IDATÆ 8qD3i۷/8∨~VHHHHF@CfW+VIikӨɶc㶯UߡbћxSkgls(fH%W %]|Q' a/9Ox,K».M@AKTu솲|xM$@$@$oݬGhfʔ)S?GUU/^Gy{,{if̈́7G$@$@$@Mt?qGne+̪Ζt_+׭ۭ:6qSmr:o8~{ Enμ8YO^ڀ:(,N=>AۦP⇩ı'CO`Tx\jg3:?s?a`@u @Z_ƩD?O6 x ^tGyddIHHHx6YͬZ ON辖^7NPO~* bղb+h˓\5j֣tX?i׍h  S/V.OfFuɒDF(fk\s*:IfF9!a'/þuұk})]GlIVn;/+F؇ŲdHHH @`$[Zj>7pԵ**9\ &. 7L$@$@$@$ЈhBb*fe'o_:͵>kdE;Yns!(TFE˓MOاh3uqҷSը:+K0Vge>v σ9i"~7UzmH?x5UJi8Ws GSr,$@$@$@$#c(y;9Ν 0''zBn) 4_a_XwV+ry]%EY-@% אJvW.4-ϵv/*LB7lھTmCoqC*6%4AoؿOIlu{Cr,猵& \0Άq0GݖFlOnlP?][E3;+nfr<OkW]0I$@$@$@!F@'y|G|NŠ]$@$@$@$4݃$4U`Ho,w4}-wh{@R&N_3r A<-Ql+?D\>w4YF>#/YE9|.|P%9Xg\;NM83y}<3yc8FIhI68XMMkmer7vyY<$@$@$@$IH&   DE˥8p3-DAKD#> 9X;sdNGx*L$%X>7\vt/ [4v:&˽yP `"TDDTGNYu#&Y4\]Hֲ {Du%{ 7?mX?t|':#Ԣ+!h|W,caj)   =S lr: #S{()4SBUn*~_!% fڑ)(jZ|^T=+4Dn%(IUf[t?״W‰HJdEz޶8݊tӬu֭;e2-ge!z9xH8(ג0pP'Q fCЛͣ䍐 A@ӽh*8Q_D qVgz+GAodj {_7 kl}-nCNEJir$wٵDVe$7\ BoPknֲuZ[p`_{/j딦nEzI'K> &DЛVIHHH`K!P. P]]BsJIނq#l;٠{[8DaStj_ 2%Oa]g͗j^r4ǎQٍ5CVcЬn]fPn l4h7B$@$@$@$&,Q!'$5twF~-VuPsxhY5 M ltѤe5޳v8^#}$,,mEQkGZhh=3 ' l(y>W lebo7Yh=>,ћt?q{ZU" 6ʥNHl Mi%!r^Vgն3#6<9r̄'%{7,-=ޮd)7K.gX;@@ ^Yz44ծJYrРZlWU|=yMc0_ - k\#?Wgܪ-< ~iJF&Tlq~hg` Z~~IHHLt@oϝwM$@$@$@.}Dyt3WG/"倄]q*FfV7~`M$a2KoAόG.e_D7\ٕ\kOG~`dK8nS$JU9+۹5[Κ8Y]Ǖš7Rq Qjb}=![9="|flq8c# CN N 5w>zh?{{Aq<+3#k   -[m BՀdvZtOAnQ K?G"D! `M'{Tƹnj_۩Z53nGIܺX4LU7I;Pm0 FVtTnV6!vi gϵdJy3V?i9m_۠|\lS]]Ɛ렢Cs /06;)u[ݜWƉBg9=P@dHNCÐN$@$@$y$@$@$@$DCxGQ&ӄE># i#QGXN#P:W.vڔ󷱊O"u_Q:2˿<&g&<υ[7zwE@G柿Ot$;^ J[} &J@ӽh"l3KޕHޱZ%l*Q(u?dvMi!4@@yh :6˱=Qht8v-zJ~Q*u9ήl^=+9VC}}]]Za{/Av٧UπX\ͮp (F_IڣًwWh;=[[(]#ZbNWkKM >g\oC &-!y;>օ]-&59V'yM,ѣY#  Rv3&?"xw֦#EW;`ן:)áUT$HE셛A|Y!Gs0;,ߑەv]%14N;BNx}B$@$@$@t@5@$@$@$@$PhܐL!|G d'"}b{ z$5mV)]f1vV,~G>嬯o)sl${K!v:Lk EْL;և%*rvE'k&qœ: 4卐$,>bYqi0Nƅ;I7 (MjU<Й l\~{٢yIHHHH mJ9)ió;hR,TKGL%[ V.@ɏg'u>k# Fӝ5sH}g^@oq~$TNFp{: \< +?&M&4  4@W=YmfW$֗tY+3nI:;`֌&_d4/_E?Q<5F9j 4@"ݵ"i\wqg\~de;ʥιi\]rZj8b3U' -n%ObM0j֡kT   -[s] 4%nwF2Ԍ-DÓڹD4=թs$9p5Oqv[G]W7֓]T.T"ɐUɆ5O9W~w濒xGSi[kc G]nyx$@$@$@$@$Fn%є(|!N^(N^lFٜIy z/h; t<t2It[gnpwbut:wt>jr !cܦEU8m*I*)C%zBwd>Ӵ"hyh݁}Ҳ_]vI>|X~l<.Ok5(hK0;8y/Bnc͹(_ QIY+=I|!iإ4!г2 퀌禜 N^yMhi}"ӑX duD8&n7>vVmkcςJh/#u5HHH@tC$@$@$@$@$ FΏCEv9eKv+FB^ӡc2R쓤C \ Ong$vl7I(fIr:;="{ӱk~c/|kh[Ph-UV*FWD65˵mV`ÁES;?ta8wU ޳rh{}z8 a'b7\gWzs= =gqӼw^n 듷kh\8b^[ $@$@$@=~qIHHHHr$Ukgl"R1Jg:Rjr)՜mӿG%b;&>cK[W";fs㰎ZZIvFo._&'wGmqD}_iKa}8G,&sjma}#3z!a% ?[@*xS.3'+%m.}$,Բs$]DED=j] )[ C SQݦ3l_Vr @s    -zsK4xq~%NU&f3w;d9"izz9"Æ _ƝU@ȁ7(sl)_tLJt` ,W #gǚ&T'[Kg7y#{ 굴VX y7r=?'~ {Wlzoqy1g]5&e}rV$^4X2x[E٢\=05g`zRL+0zy M[D* %Cbp6zx&  <nHHHH`&+'Mܨ)Xz8l+d;toDk4V\p}j/@]#:MSoZY(n*'+kMyqc*$9X>7=AJKdɒ!9xK9(- (*"t)e%aK.hPZ~aVqj3O> ܺtl9hP?zES|΁ukP$Tքqgb'vgwrf!  pp2 4 -EBr$IdLHHdPEza'aߏ9VE>.YTɢ(Xf%}?u?$g-z^f[^VPsU⋸M84g^٬6N:Ɖfb CDw3qn+]ˏ5HHH%8)- %ȹh b8r2 v NueFs6+bͯWrZ\V;އGER2J~t*.:󢆮sVcJr՟v]$9^:jn n*coǝ{3^^ sE+{f:T#YHHH#7W#    &'iH`Cԡgu6Bh҂ݐQH#v|9O9ݾ;0dSEfc\# [NZ/0(i(@H:ItYEUr+ #dI}Pdj򺜂NvAԜϨSa6Qps7ޝtޛGAiz 5!\mw߮!f8HHH  BWHL,:Eb$OA[oj举oAoorAJl8Щg"qzMvHs[j7׭V;=NBC1*V~{{ [5 ` Wl~(Yd8Ç4Lf $@$@$ez~{    ͔@n#p/D?tmu(܎*5=;nwv*iX;Idն %ݪ}N[uɷнQI+Yu_\F w{FlbՏgftDѳ7s'@Ţ7>[ϫ^b|{q>狼U+'I239Ҡ͗Ȗk6Gȉ.cܶSG}53nii E_j S7 س^/8R9R(mf-+HgKwh"USA&Mht9"QeW_wj7~ hx|-#XutřW3QFNd;*:\@YzXV( _HtZ<7 i;fktW %ɡ9Z~$+{J6}$@$@$@H    d jT-YxQxdʵ򻝅_-?BN>Q6y%IanǣqW6&`n%%w5=ln({J?-'Fkx~&aa%h5AyQʥK\hl385{ݚd B%uvzkY]Dž;\'w|@LR}ZLso2h1{5v(={pLx  d >:nHHHH2#95o'^]¿,6r/!U\p(;~8=wXanON''٪^7N5=9\;]K~<h=н.#(BR' mp!GsܸuuMPFey]=*OcnNT )@QkqU{#ْ2վbmU$x%9Yl Y:| xJI6}$@$@$Yfy$@$@$@$@$ڢepwQ:N0J=/EC~ f;8\Mx6+;$r>'[ z\bD +;tuD|D nF` 쯐dO s̽|e3վbVKV pNo)1C@5_C~yׁl$  ̓#7Ȼ      R4uWNhyz*Z2it u4|[;S"4bՐ~e&g^sjӧ4AگNM]QH9qxcWmb;I}GDcʰnMxo>0l'  M4wI$@$@$@$@MB !PG|\# qGa{ ^~gHHH`#&@Fp5    h.޼QrPkհV I74o GY3lKYf7 -!Ż<܎G6p4\gݨ"+8gswtklW\]v;.]aȟjM7|Ư"uKE  ؀ހ4 l _+KNnbI$iԝޭo>tgπd>}u{q'8ukڷQnmHe$"Y]Mh}#⮃xnsxaЊ8p$@$@$`MHHHHH`"U;:#7+~OsMmPă$Nq^g' [:w8j[n%rhEVm|3֔$Z~yIpc;|:X~ī< 4ͷ&W"     <9H]~DFu_1Z8I4{$&$8ULIh/ 0s1вsa>.kw#wݵ%}S+/N!ƅлm ӷHoKt! bm+Ds`WU4׊\HH%8/ 4@~ ˉ(_0yV$9oa?o}&h 34͉H6-B':尖#.QÓU^G@$8.ա]AZ6ǿ߻$4a>}7PKpPSv,[sHу)Wm  ht@7 f.B$@$@$@$@$P_',_;Bb$J\D$¹w yO8l?Sٵ[U'Y9zl7ۋ~GT[~ u(y6-Vw݌*'n]Qm6}Bv.=w@dD]|YIl{lG[I^ur" l @$@$@$@$@$O^WtiMࠍ%w"8|X}UWc]KDZ[[0_B1uUm4 zj֛kҺxb$F ϱ~.)W۶J8>Q ]'u*"VK'c>8š;L W-qw߂S䀶W.(|eH4F`c`u4p $%@tR<$     hl۞ I(ZYo^-TXyκ&|~Yﹴv%I ~c0}TE?Đy 9dUc}#gƠC`+SwGKJ$?5:,q-0<4>+$@$@$ =K$@$@$@$@$@$@ %K$8UCM=_?a(:gő$@$@$@$@$@$@D@ }H1N:O<Ǟ9-Mٚ5I;PIrwsN%=;ψjM|V3F*iuiH_KG @ :R       %kԍ$W'HhZdl**9Qzs݇,]kݶuh:lԬjR׏so~ܢv`vu [$? 'o%\x4InHH(HAmQ`x$@$@$@$@$@$@MO@k<6D6QdlI,3UZ?{j]S"mۮTֶӧSR ok/_mC`MJ 'a}&ȳ ^w4I%6jNB߿"g\V.QY]TTN۠@@vvnHHMÕVIHHHHH$y}6k熝͵ ).";IqҰ3M$@$nn\HHHHHH mZN~PM\VmW \:8c:Ϫ1DG{f͝Zwi/Dk8u=uWRnt\ώqZIk[Dן&ޟ5>A"ɭ_֧2$@$@MGcK$@$@$@$@$@$@f)ʐX=¶gaڊxuI[z$Nz􅖓 wO?$TLm{Nh"a[EG+ >I8[@*xԮHI𔭅.U\qb;۴Ѩ|a|=!g1j<_=vg`qr:cJɺ}"k'o0Dƭ ZwICҎbw6 HEISb? A@uJƹ ~+rEfm5xqz~щvwAƞpַCyڮK׳r>{ο(C[~Io'Ԉ%{XJx؋/]*Ѣ=׾j& 6o0ǿ)"p~hXY-}%Kꇏ;bEXvJ`YG\_Z z2" E=EtX3%f hF@7g l&eqB?|zG{/8|u{wh ѧKk.\l{z݉60 dE(3f<?|?wr4Q&,$@:F@oO'     h4>GB9۔dzNQf$pr?uI^Sw_ GZl( Umw1:?["^N[Ö/H3{1ixo-w] ,wc[VGG$Myy-0\nď^ݺfƃޱ}@٦Aaʽ˚$R4//sа&K^o++RhT{7ġ$'TUCLbυ93OG;uQ}Qm,7~&|O|o!y>-i&I'2$Z?=#_5pxPGqSeB6ٍ+$W :NUkzfͱCg 0|AYG`p쿧gd+*^'0?z##;L$a asu      {5Δ ׵}J׹V@unE6;E&fZ&nkD1$`Ϟoq$L݂mmn$#'{CRO{.wз9ަ$IJƦ|XϹTZٛ͂3[o4c2jka͘A[k[U6ZY"B$zF! @3r{P"M5m::ZvN5}Zh5n4$)b4Y.huR{Enc8|*r5eG[|YhqKֵ.=`Hĸ*sAp䕰Ć6'}~ujnpBcv\9I{2űAO(ɍW#(飧k+801pD˿$v G Ǟ+ l]}l< &/;}h:']z|;OqVp{Yd6k/GvRdW躨NIXX*8Lhm}=y3yisTDwbMюoSշYQ"ސEE[?}t opœjNIiP+(gyi[I=О9 (r+QhkjswW oob>*{I`#nwL$@$@$@$@$@$@P2g>CKz2m #^֦CʙZQ14 +髊rӯ:rj87:PQ([=HQێ:zDTM{Ȗ,ENrGﮎ~WQsc+N֩[(`DdV%m q-mLX^Ĺh:P*=?$~ImSP@%O]>vKtSk7͗qy ]n >sqcզ?ϛ' ]ދ+F5[IQ,oA<4{&fi&-[̣捒 ԇJ>)s|L!s"]cM<޴fK־c׆mt@,.?9Ziח8|a\#d~DkݥrB9mߧ.Y8 zVNh6bǨQeH.Wֽi6uؒ28VXo7u Gw F|βrGc͹G=MT)_}W&kWc7'OO]]-o 2N5_ )_ʮ0DmhqfءӈOa$Yzx       ހC2IR(Ʃ;V#_ȴ(G YD{mƉ$qMNT]x#yQXwD*9TAhuQ"qRB t{kAsc&'lӗN11rK>kG@mb}Y_O`091x$)sű(gzRCҩƪĖ#{ȁNCk$}"xnkHB$*ͽG:p),6d Oߍ^2/i)ڢK?}O_r,N HHHHHHrD{.ǜX;JV?D_ύd? 9 љMXı4x&Jh0doyh>wtcߣ{dpE*v  s5Sk‘Z"B97ROHrcNDb>W["O}c9yQsdѯ!JqdW"fiq"bN8Yb81bmD?YҘ&tD~Q{nqym/Ӥ*]$@aqE\qi:b=aɕe:TێdHSEm˧ םͧRm$Yfxys$@$@$@$@$@$@MMdG4s}~4q۳w5a5U\}?<\P;Ɣh`!%m\h5QN¼ /ihs؎DZ"e5+HQpI(:ESB}Me8=CosQr|gϨ{8Y]e:T$!jmuwGTU.|0ց[,,ё8x-Y32YP{Y#9E)lVot"Ý5WR%ᦊ(Woh:ryʏ7Z-+8JςQ̳= 0zcB DDvsDKrn/m߀JSן@NqoTAdvH]l ]緀&8T% Ua+V'*?m*="vs+NH׺L8Dʐ8W%k%SIaƿ".N|Ͼ\w9 둝l dp_r>{οqRr7(t{O@"Udq@9dQ(exzpY{.~-qxJ6@-fy$@$@$@$@$@$@$90$%Uo"RtN:G"E׭Q-R(`V+%b"9]C:SIcbg>jێQZX98;(Qٔ7R%޳Hf$JTQZno> ^l=Ɔ#֬؅ܺ>+鋄Eތ0\$T9VkIhx0;S7GݖDCE +)sA8*nϭO8TSi'u~^ , sZQFY.[ŸDiY<Y+Ėt)_6Q~k“50h Gq(      ب8-l=ݑPZ-^]iGs䡢2X~ 9?Kw[9ku(1k; u(aU*ʣqVN(J릤,y3`>>J;;hyC$7\l- ڣњ:)Uq̙P3% |ɼ1#CI޶IUZږ$ ;sJmu#d}U҆{f. FT̘߬a1]fU1'Ĝ3q99f]b( L迾s9mONs{{;Pv:]N;H%25'ʬc?}/r)02JV){o YaEbi@x?^ L9uu5<`X$BKC7w⮾8K~8gq.{5E!2ԋyu5ZQD J"[gbTvE׳&KLuQgO(&fn@-vԵϊ1'ؗd_,E::AUJ*Fcwy=TG;ReVUjC,mc/TpKL|oxJ{_mw*e$郶е$؝z_ҔPI%J{25q3 K!8HHHHHHHeeWWK]*{ˆ&@DjlL8X(ٛ4IvF'fo>w.W-;\jlA7:}.{Ә4q'Nq3e} eh3I&w;<< @q,cOHﶶx?|c;˄+:Q"5&@hAS!vy^%ViSgI7Kd& С`d!$@$@$@$@$@$@$5k]o;Ll mFCgS&fNld/҉JH+$GZOؽ3nSbZ'YL~$G%Ӱz@:Ib I۾TCsaB?t vSnt$8J`ϥ]/"j5~uP`8<5O{"1~W oC%[jHqt^sZ:"6V{"q]I0Ybb`<,K>l; Qh䁧m K=H~DX2#5<#LƘ~IwO!(UI$@$@$@$@$@$@-$:XRQ;mZ v0<jh-%1E2W5|AgL9V=OO ZJBCt\f Wˠz.óa:uMgC>r{P6v6Z*u8ޑ)#?RH @ ,sHHHHHHHM A:rH🺍ϨQ"<ן j+o|Zh(zӃZ ,p$112Ee;"&ë&SfDcqPFh %w%bfȠRʓ&I 8SMS5vtrK\0#$hO^IW#NQ o iٹ(aOoP՜xY̳$ IޫF)CJVC9edN?P\M2c9vȍϾ44L_ HO4@ɂK$@$@$@$@$@$@$mIxHRc;+) Kw+&3a%\5u`BCxɖx5eo6w쮹;5{"JNޫ~v^Y-K/]<,-F° .+ h :cpҿ\:>8K3MpS^ZD\o#M({vGb-9uN(scXՎp&2"=zlV(?qZ&g4̙k0ܞ${Yj?N xߡa$O?0eyQa9jtijn`cVԫiCpL3B$@$@$@$@$@$@Kr؉{Tr/>.zz>2ԳuYqV$ 5: n{jXM-]w+IrHR1DsGlĕ&<1>$6xwg*j Jɓ5ṁڳKrDp,,;3baC#:&1\nXIo|g5{ᅭd%cw4 /f,I>f(\>!kQ$r%Mr 1`qY=vGq*yE\L̪U'J6$se ۢi\x#h+5 `XNbD$8fWۯ(Lc3Oe$G\*$M:O'OL~t[:HbEStŬ95zMg:^46.T2!O2{&3vnht2!K2gx-]^q$s$̎+cwJ DCL'msNM-ťНnfޯJxL{ӥy,fg%E~M'KX$=d%jjĹNFllJăY-'9HU]PW=SD>n:uzWJ*u=q bT !9?}Pkl$=}_^*gޅLLi\ǾhE=/'NEQR!m!v =.)ƛ͎vT 0 [ XF^VGWΎs.އolmN IyA+fu*ƀV,HHHHHHbDQ)iylDүLVeWIba7lە}FcԨ$qnPh=&xgG]C=G+7{Ņ111fǵϘ w=$y(I]8ɤdBB jh'^Tg¤6VՍ]Cv}ǹKv$G^)9nDç JWP1&:\DY[kN΄$PCpT~'u]%WCJQM$@$@$@$@$@$@$` Lzؖ2=vȯF'K$ˏ!\{zN^C<)gk]հ[$@$eCqPF#IzVw4OC7;;yْǾ~옇%spr/S(c$v?sHHLݕĦ;2j.L$i^d9EtD)1Q&tWC@'\e‹0==\=q5Fe͖WR;XAnG4TT;D߿DA4@i,O0A[o=;vl 4K>Cc$(מ5!֯7N =Adk(kwNzCg\oXzj@WZřtLo"㿫5[S:u bbW(td?l*z v>83e~KH8բF%#;;4.ÈIKzјE2Sh\$M~(qcCc-r,&A* LknjK99L58P د1z<BF ML徳WH olᚻP gRPꨗ4;54M =罻o}3rbq{R*.3.WrO~ cLeֻEgsk dʐU%k>cT&@t݋/(K/&泫3uQ2B$@$@$@$@$@$@$0@|ގw{s' \<[SW<*I8a9[Rgެ3V[u=Ic:XENnXI*ϜznW0߰vĞǘbw_Sאּ8+gq? WqbCDO*iѝuJb܇j+^#V̈":+f {j#@t/|ү_?yO΢ wh?$@$@$@$@$@$@$@mEQT>N8KМ?x+\YN;RR7|m 4vմ!PAqyϚKP-;KrL\Ćەg :M3 JbݭL賋Ni ͒SOiwsn&LxI]z?&z]\ ӰHz iK!v)ݷo_>| 6Lf޾HHHHHHH- nnr:\$}:Ǣ^β%?0c< p1ީK%w}N/;,n- 7UK_~8%G\&5j, *wj8=qwrw\!gKic̙ՍrNJϐv {eryLNҘd88V֧q]zc%5a/\dJ9dGE8Ychfm={rHHHHHHH`z&yG](Gh,7#~AD IFN5:KѹԹp/"#W4&˽xƊN o޿;uu:xzG!S\,'{H wƒ<5oSډPFw\řx_/[e -#wL}鿰Ȥ&N$&sB‚]](EJѦb+j];$~Jz}]f}n=Uw86a4"ryC~_-F?]#      {5,X5&Ւ@q[M2S GL09Ilk -!mFUΫ|~)5GmXq朧h[ ɳoI-ڕ90=lAE=e"Ɏ>K_f DO!D2{S]up~#>ev\s tFکk܃7Iڳ;=aaL[%gY)AHl ޫJ[$"}Ygw=+a/&LS 9I,$;la`,xS6 v ;:ttuq6ɜ[r!S}MR&]HxgbDB$@$@$@$@$@$@$@$0p5,Fc$}̮UC_4Չμ &LI#L▋W=ܻJBjahth\qGSڃjRK        3\AIz]C5$οKRGy5m]]?cn{~ѻd :$QӬadȐ!Os]q?w L:՞⮿doTw\)7u~- ǮvWZKUKG뮿\'~5K9qTJt>$}C8Քf н{($@$@$@$@$@$@$@$@$Pӳ$.%%sfD28{^ +! Bz!CΒ);*^]!Ƀ7Fujyuf.bdN;rJ{k,aR/8 a NU         Jg$&{FKJY2$Z-jX&Oe|^Nҧ(9Q#rRcYw_6\3@WAkd-$@$@$@$@$@$@$@$@$@}a9D>g$7->SO`5.tt5X@wYI$orjIQkYנW-1Mdh - &        Offn¬\r6Wb kb ZIHHHHHHHH}O]gOO> . "t.~$Rq}w[TlsfגzXIhns tC;Gbr.g]X; еPb         dPh.IHHHHHHHHܕ5LL)eg5D)>|KdwuHonգv$@$@$@$@$@$@$@$@$@q $SpPUIzt\p˯^wMw;3 ЭgIHHHHHHHH- $ZŖwZ _ 8s-FUǑ{UL7epe%B :ڑ @$Qݦ'j @WHl>T1ԉ* )wIv{]r<-{7nx?~+27f=ř8wU]i-]Mj#@t92N$@$@$@$@$@$@$@$@$we?K!8s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/s#'         H )^N$@$@$@$@$@$@$@$@$@/{L귀YrE E         郀YFfyINPebIv]kSqz>^nw]#X|Iv$޶6Wx*u?~l8p3&?HHHHHHHHHB'M,;iЅԩRS^{Ib%4K>ud>Cި<݄o#]5vB&Zcy4@HHHHHHHHH $|q8%#,S#ɜ~x<Nɔ)ݏ[8eQ '! /̨xɜI6 &^{w[[ u) ubR         "M$#hȍs#S<]gpÖD0b}S ]KrA勤<!        hc^&#÷G~<FhW2W"N7[U~KW|\#        F rG[w4~ CO^*앧֚t&6//h 7IZ xdMd8&{I 6vBtԄY> @K x?~'iiʲ7](w^ n*Zr9ɜȔEZ{yvYU9bV@$@$@$@$@$@$@$@$@$JKFLUy9ל ;hcI]sHVCj*NRxNgPrpSuLl߻yVZ 7R4M#d$@$@$@$@$@$@$@$@$@q }qU5r÷͈3WY~Y`2Bw"'H{B Kjէ&fu)}Ft3HHHHHHHHH >~.ދ5_Z3[?ߴ>05^ DZH^]WK5/y83QɓDj+k\FPLF$@$@$@$@$@$@$@$@$o I ?Ib>ao"'bHb|N89`}N&Gѱ7b  #uK%VH86[zY @^3l@="VQثJhv]O܍DSxT0H$@$@$@$@$@$@$@$@$0mH$v<nbCjי{~ILdXS5$LOt*l94@E$@$@$@$@$@$@$@$@$@L ⮷MYjEIr]]ĚH:B= Mq=.ԲKFt (D$@$@$@$@$@$@$@$@$Fb>         hHHQ84Q^:.q|ν3IO(-hHHHHHHHHH`Z!n?I]8K,!!) :.]eqotY~=zJb^qon Э"zHHHHHHHHH2 Ix8 -Ѹ.-Ƀϔ_u/DN:ixTUHQfĐ7$>DޣZRf7GH`ҷogʘ1c"E ȽMr/=)'_ɮHwZO$[$G{U\|zĆZF EY- x/E~ Dzg9?KWMC>O:uLOQ#3s_Qc;_0b$q:BB$@$@$@$@$@$@$@$@$@U8fg镪N~m"4@D}grq@@$@$@$@$@$@$@$@$@$@8ꨣ[nns!8VY  &Lɓ'U,!         ٻwsɌMyモ-آrHHHHHHHHHJ]|f^|E7n\$Zs=rM7W[m5#B?1b)bYg."˻e_r%ҧO=. 8@|=p=⺄z2tP_\^{59Ӎ:?.u]P>`/L2˄\C]qcrKfm/4}Y5j)u%!WTqPm=MA[~'S', /p4W+/)dv6ڨ#CѣM+ >_ǎXK/ROuT@,uTCvRGuc9b#ҏW_Ϗ>(zb||#6:jgb-K'Mŏ?K=_~y_O5RGuuT#y,uԎ_Gu\_#\.K=\pA_O5RGu}|:H,uq}g}X碽otX{nI$F?(:ϲW^qTQ=7*3oF/ܱ,{ԝHHHHHH//l~u Aч:ƹQDHߗfAoZ:,Yhd֓=z   h~|ү_?0`@j#ߣ>*s^%L2fSfMn6ywee6۬|LH<32h W}QG$@$Fm+U7|#?,RTL&#o3[Nc"/{-\p8j(7n8rE;\&nr?\s ,u5W_7ݻs F}w2 Y/bT5֭[F2>S9rY+? 5XC]vY)K,Y<3}Y:AqSj#| Hо #sL$h#.>Qn7 4r2_l> ۣ^{d` нP 'N]vEx [4Wm8ߓ&M2 &qӅ/=x<z%I$EV[m5adW<}0wq/9x kgxW7|A:P^{<<odmpm뮓ot a$IYzyxe 7_JARwppJ <1\Nk5aHm ?\G^x1@{or)+;n|G-'tRKGe脀1:묲 :􎅡'G =H #G>ʱ+L+ Sf6s5W*߬;\veU{+0 :+W_}Uz!V;6PhtFJ͋/p;Vp .{ :n馼6:FGBۑvxw5Yhc2P|jD zzf.IaïK?ǥ0?O 뤞R6`>?7bgϞ~Gy(m^|EOVi[:GF܆ScVتhY#So?}Ptd oǵ\O ~=epK.$E?}SuꈋV 2*qx뇇nVd?]zM_G{M^x߯R~e+QY:ɻ[#9G#8"]PhAqډdp{e az6CevRj 7ܐ?u >'jIfBgr8]Cy묳V 60 NS_ϰʵmH5@-R=z}[EcYw:xh@XG6ulj /y' 3VYe<=jy4aRy?gQ;/̤;LSÔ?w/+6՚ , #Ι5vWp!xsm \ӓ V*e`vV.LMxG`F͡Mo-{R/%-ķ <ۭ{҈CZҎ0QybT# B,F-6(M(#zk\xL/06!;؂b߸ 6#mځl;k\X_5Y3z-L_C=K/ O_ޝw]y啞ƣ6uq ԉ<$ՠxސ!C<}.0QWW=V9u-,<Ӻ[~ؘ|ȫ86S~]9j7;S=xj@/tHb凷v!O/D0㗡 $OCvx(uĹwV[ÓJCԘK/iLl?8UDh/w_5ġ{Vu^^\aUW]կG;so8ya[laUXr]w\0 %\*[,Q10ꖒ ~B_9W0s)x 0)ز,1FFgkF:A}qzV]PJ~5nB#: F {? a)<[>@YxXn}{!snСժi?B425w^-1<癎%KMi,/>'큠#k\^nY㡚p3"L pQAGCr+僡:]ǿ봒W=uF*O)Eƪrn-`@/lۗ[J;d wCX"<-vmF v#*j3;*?Nmކ 2C#=v?DvwQ&=K!n+mkoAJ֣A4}5r/xa[}wq"֭<kwT=%kLQ6J8pCtPP;q Kt'KxϸR\0&e^o:̧T6W,CAMUc\PzQA=^?”wݔzt~WX,vбgyRN $ #dQ6(w$R/ pA3"~wZ:v P# 񝵷d eqr-gزof#g`L{E>mpx<#mfa6ٰD' 4EK"W_}uN×'f?y6㺔:$l5X3R="j0Z1!u'7\s2ekb67\XAF ~6 ֿF?SXt`qxvj0: xBl\Fey)SO:İ/Om6%kEC(fD4y}ruF޾FVlc^87Ic0,igށ CZpY9b` X!#WbH=цmd{U]d5η;h,f&0h,zabվU9(4$IvjݏԍLm^070kN:zq󹒠r-RfûCްz'Ɩ E`M ktX&8 `Ujҹ^O!:dpW`>5^`Z'RON ڃYo<y.իq&T[6ڿbm@aFF+hc[h޺a3̗3rCVzj~!!.0O! 33-U ^@Z0/D/m x5Rz@#>tB3 <ηz,^:71UC$ԉQ@ኇ4^^6>nhF(zJl%L=A/@wXh2%,Aorǂ=a5Ar<&r:v4'tzy%$[7:ἇ%о^8~礣Ip+{ 5?:Jiw7?Nd=>ionfttHkޑF>5政650vXb> h/[ckyQT=0Pu(pQ(6`;'CIG}4 u >t.zĊX1o_+U'aB\(N`~4p}!1vze΃Z [4,7yt&DuiC:឴BIú+#aI;XX,ow41{7} xF.VM†'KYP?κ^'zA=މ8& '̈́اvs1-WLdc?Q'Òv~y|6[#:lڈcۼS5 7vH( Rf5\}2,0 !uar<|a'k9'dV0i*#|/:;PC-Q ::5fyc;9j6o9=- '{sx<^fiNs==8> }IUvh_^  [ :ZC[ֶ$O<|a_ZksBt= =ߠI|jo^̆ CO>mf0?nj'tqap (?V,# r)߮`KQ/"1CXxn,#Xzp'ZQE$ԵRYo܄QaJ -T^XP/BoX zGqM|HYwR%c¸[[򩧞gA0"^VWKf%jc:-!5cgyd xieR: nטE0ʝ0CW<񬶺I܈д:cPgmx= `thSva{cjggŽuv<5+0{}^ܶj1*lCZ-֒0ZDXn5>KO# a-.A'89hQA{Ӹ.ؐ(:[i`j@K\C=#y/(|RJUa`wr:X 1\*M0l#YX^q& Z$zeOk_AXf9{|zz!fV#wWM5֙tx BLO{D}|H?pD?xD{'I{b~\}sA1SzzyMr3f-\)ԺzVs=עFiQR46]ECdf7lԡ2Q8Sz=T,&omp&Ec<$:fj 2" w`ʨ9c Arg9t.yJk'NX+1L>h #b&>[4sd샮xFGגGviHUGG\eQqP;DO6h οP& +Փ=:T/јKZk CGT -NSqA[J0S4s G z! c_|!'{+;S1bԓTZ|x9kW_5(OLc 0;4"4̋cM|Yq[z1VW+kV\bm[FxO⇏ZKщ!DC㙃0k$ӑ:uēᨓ8z3{?+ $ ?XV:F{O{ &pa䯵2 PF;<`9:AK۱Fh8".va IAtis=7ggpMcTrX]1Akv$4ʂb: ;bY`AA#?x~vGИӊw:t3 zk\\SPj}Ls+ۼ¢hoc6\ mӨyhXQvs$ۡ}QF"kWi(: |Gv.dsFt)*F$@]@ hCopaQ*HW՗G xMڈj||ѐE&7/c-oWHAo_E'slpa |c:5Ku$C2N6/ ܮF0CGʹ"8& Cg<5~rXU誈JNJeT2@# 1t2,G b c([lagE-2&'ƻG!o1̆O;<'5qPC{8 (‘=s]8=QH |M2GW˨PO&Om˷f `E#~>܄(H^*zZ-Љ4b`$<$YPx"amD'@1c@J h|l`zMQ# P8Q ]XnEˇ1<:iWJ,CV ݎ3ZtC^T% ͇4$:WT.mcNiFwQ_UaE'6gk J`AGMK2vXs88/ӓz M.&V/J inz;J648~S \q4@&fw1\U/D$$P#D)_b)-ZJ @Mi)*PF[l-J,FE@SC{N9{gy9T71C> hgUp+V $Sgy$FՓ ^63l|.TuG,z2c01`TIcUlxYspVYzdXM}#u"3T}>`<G ǂ!C.STw!$Pcu$2=غ$ѯؾGuT aSn(Qce>R.s?z bs荮<86ᕈ kB!1#"!x 2=RUyKqspY[ |3 *킴 t-RK*%79-@]Էy]^{<(83 ۺkxtuɳKx\`@uϠ"Xsd*vN,̦9)wFX#8a6 `@r`ud'V<4Վ.Vc;qɚE?AТ+;amBOqDu sW(8#EVvl6ܒǘ,x?|Cݷܹg24=p˘di:`u f qlBV@s^,`C".U6l\C` M+üb6k3(Q'P;'x 8kյGw1$S hgq~\"6`'r ,r%h)~᣽ rNF ,W\-~J*${( fQY].#+"ڂzR^nۥFJ9GJ]sYF䜱I۠jKhK[cLb\KM[εgRҷK!˻.Wp\\\Թ,<$gms90"T$h*Th6ѶރFB=&$%(l*b{ ~ic?~+ya+szY,Qƕx,,s !J]`|{iHKq3Ÿr}m)mA(mraoQpT)q~#a/ͲeIl^26YWid\<_"K'ʐ\!E߲KTblX-o](Wdܯe=U?[OʓHǼξc%S\M$((;˒|yt|6~j):`r2'z~jΦ 3'A~߳Ze Ɩ(Ǡ> pkMۙr[/:>dž?ԾaPEc Y"3c`dH2}{ߜs* 'U=Wح\],vI[BP B 7)Yۙ7Z4,bDZã!*}r~W̱eA@!Ղo*YVQb&,Q.Zda5*+>c\:# #{,Cd)ʩܔ[I~ϭߠTv@-T2,7Z',? ¼jpk:gEy' 7c(sJ񶷽-)?j;vd@Z?6!8y%n/W徽L?QU{^RPnyUI#e/! hE`Dyd2$8[=9$e];p%X+-?3ՙ54h9V{ #yv>r!M{ʄ?Z |k˂Cɳ "`6֦S# $+hg)X|+8V݇_x$ >N[-^ܟ8{GgxN %p|@xRs6 ETu*K:qL"n?q:spRZ{xй[nQ.yr˹{%uګx <1) +ǔ_0{SBy*\+`1lLIs7/Xo3 2^?yq/zwaqXJhi9UGa,(Ġx`r饗Z࣎:֟Xš +ʥИKZ~p؊W:Ev~<{_Bڗ!o?G%ǀ5II2\)hzx,L[i} 7I%P86˖dZd¹kR1Ӻ ;)n&7L2,&LSwDX+V4@fہ)֩ ^ lj [*[3Y/7o'G,Ӧ"#墵E86)JIaX<S CM-\L30ַeg{w&,LALerL:I9p|E53Yy)J&%VQ4Ӷq ku9 ._O>5e0c $lL"=VFe:]j]X H;X_ C;0$pd°4ml~ 3 *#T$R+Z56R/'{g~WEyF R /"%YUEP˂*%h%b>**﩮1`{.X¼8c%/VX1`-.(LҙcAn YxTw+cWzo ɘ1aƸ &$o/fX1+e#[G LdF +UsQ)(@S 3ϴ,sa{(aS[b+d1HJb8[Y(#5k]J^p1d1yB=d?y[8@:=Fuzk^Q<̱|ޛo} 29}`.ՏbP8ŽYڠN^|tȤlDq㐕 *V[ ;a}"P8Slqީ& 9gg,-_lnpg{3a> Vz2z]Qb\veB耛$er}jbƙ?0 Wtc(MM(_Wd,dӸNY"Vϭ3 `Mpc>0enq~+B=QXo,B8f"$1e')(#rb^v؃ ngyMl\O\ ~%,mt(qH2P,.}d̉ ȟ\c8f 'm!L7.K#hfg= ת % sSL 'u Bx^qԅ51aBX;LB1~~ 6=$5}$M ǞnltX6أ3۩+m`!oqb>~5 >썬1BR!u?`]^u@_q&bM}YgG8aK.$B@w`@jX 6 p 66Tж=:J 〬@:G&xC1H=(m;g' ;i3*Y \UfE 9CT^&lUϮ(Pm=Aع(MJmw#?:|Pe^+iaP,_]@]nzXS suꆦlA*ٷ>Xs,'s R0 `&O[ \օ[lFBESVG \FC#I‹"#Kc )/J_q]NH˲E 9*cqb#/ms z}o)V h o_uSdvXg 42E7DrHO3 Wڝ>_X$ ^>Xu쓏Q9w!˛.g7>YJ+aiZ@NC]@")sy c^ ne%]A#cE͞/P @Ft%ž~_|dQ^CdNE2@(b#3,9 [:BԔ4~)?YA ʐSO=5[~.\֨ghx쓝 B^lf "BN|(g쒝޲*7㍼Wr=5ք̇๻2E<eO/eMi(+"};T*Wk2ɚ=sF^f׳}˂.J=2a,yaHAE(zN7.E;}k"#[x&O!YY.o[hGb01HPmQ/z1o~8+T{߽z:֐M7)ŗ׍Qpq:?"|,ߏ3J|Vt5Q]I|;Sudմ Ao_wë%TRp V&aҦF0B<òwUe\W\ s_;xD!f C&r+8ZDI#+.VؑTC?ixIlQ05xv:ZN`-Du ~ƤIL,śwG0}ه>!_z;YZ!W}oKx)82[HjcKW9yb:c^b7#uMH>5d$\gy?<5B(_OYs`* *΁Ejes_+ӛkNcr+QV.4OX6Es<p P ]߱,9MNjSonD<\b%H߀djXWX3.* B (xy(8eJ8 TMp?/]j mM䌅fJ dOy1rgFrw)X<֘q%t{ bx^W,b"ˁ{r*Wrd;LHӻ|QຍX>sZ&چTfM85TX0Gݨ;~{.hW@LM>NR)ñ y2|='/oPf-̕?o?pn~ckt.GQ_}v`h}s\AXm \މX9RX4#_7Z6CiIh1p՜(VLZǦ{K@` O*}QJ+v~߅/}i񧏳iE<"X/}_9 h_lB@FeBPs(c:/du>+f( /*<+ dѶȷ`]eb%#pI>&]]Fz *JeJNZ53 d{K2,í 755%Wd5[2d"{~;BfgҤvr=q;$ w3mKM,2i3 2m{ ܆_kp}?z&^9-A2`#pet&,7OVyƝ#ޫ8$|LL  }Yrwf$J+yF_3'wc!VO\1~!{ a)gR-1а[UV>CP7e7. X)'na3`Lh"0t)S@ǷTP;@GfI6aԃ4Dc!M%i6K9zoo3 dfwhv>ɦ/R^o}qރ 5m#jng{sWP48xs*ش9x3S~򓟜!X3ĢO~򓶑;#2<9$Vk>wq` c22!,gfr/'%̋]_('Y1#{ķ`!q;ހd-iO>(ze"C'JGR$&ɢ:p&MS3'3 |߷h0 \j&yüQwY9*xkt'f2 x8a|y>x|Y{V;#0 1eBKbGNfz+\\>fe)q[n@|*a?w)ȬG=QAsōy )F14>}1Tcӗ@eCi)ւ\mA. YWl;iS &=ض)ujCMt'[ɵa.ˡ7xzefxAQ~vi?hSD7U&Drm RG%zak.9U=#q>vr)jdlm$ ӏwE!T6\9XRfKvrkvMsq=߳z^s[|PBkz2cnl=;Ŷwc, W~b9W\ɶݧx}M%, ZUGF`bRWo q+??غG,S)z#%=[ͮ/{>goѧeL"ud AY4F´س%Yu۳}WzX',#ά5;M^eIwP:z0^`Ǧ߀amhdrGv#\kkXRWq嬳*p 6tMRmr Z6ʚSp]ʉ (ni- GU޾cCȊgo,m|.\VUs(>D*F rS(,c FeUxi?,s6~w=ϙ[MoVP]nc׽ EF+oFaeU-kbnb}\ "J睟V>j,b.B!_ ok\)ؤUm2ޢ>o$ #CS]Ҳ>Ӳ¡Jețڞbi+ xYJR/CP$8€)YTueEL ДO0r]|l"h0{w@򎱎@|l;-3x}V"Y3OrM,dr97m6Z16hY,IM;Ġ`'s&󆉜ElHS H G[jX' Xe1|ꩧr~%;?Ls!r= m/pkx,h S?oXT^|9A)z8UG ˎ9.VIXC 3;猡7 ¤P**J16&-u C=4U=XA1\ɵHźw] %?K^{69;e=5!c 7r" rѦ_=sǨl@я!k1#w> &EcQd(ڍwú[oCX\gǬ+k{YB0Iy|hAQ 9b{0 NBh<Gϑ ic?:&A09^lк`ʚ"\g88|E.sd= J (]gE> *gz9FNhC$&p7zn 'pB,l7y[ Hcq\PYvI=g/)ƕc 7@lQ /3ʦ>ֆS׾5,}}&<#zhȿ)Zz-!ߥAln,wzé4~ޯΟ܄K,gxΥz~o>5~rd+ roۋ, ,B0`X'5y^@4dަ&H3(r5F%bqޖ՞~>V ?}N!8Oz'>ᗓW/~}my@2B+'X$ G1TU! sx[PO?Pd(҆bݚ> /M7h@ʘo~qGPp뻞=Tg,!}銵cq\:ҔR[BŪ?bwDx%h\p5? xuʘd.,7p==~DEQEc.|  6>N"4 !"MJO>,>.b"c/rcS-?xSN7OY __e;#`yO x5k[EZevهrHQס|fg-e,E֭ gP_2)%n!{/b-`xgWFT84ch֜K(#<(x;مeLl^U s6čNŴ g{Fcg QthXub}PWZa d[k_` {j P8uu#uk઺;f@C\sMN"IEhUr`}bdI-P,^xzN [uLFӦ>X䴓X#b[n*Ikeg sUW~݇2D76DzI_C]熡b7,Ңv`xAn^XT8O)K5 &V7?daKLQ"Ń9_:7X\Q/~7{ނ'ΛX,+6MIx3Xo?5> #Y'b=*1—Pqu%c`BD`M&Jƴ_ʆG>&fZSN|2a\+Fo3U&iyc!"|݅^kO?=VU:3/ a}s[TMO/F?u06 NM] %M~݇5};d@F=Muso@C@:Rg.3EՇ=94f`"#e]/\WGX:A+DeElZ)dfy'XG #ީ%AӮ^|E ō[8>ϟY:2 ,Sbո\.Ǿ ƻMVK/\ 6p~* bwCK aahc+u^XA>TA 26}DP:=~ArF9w1.\&=Xu1` ,+3:4Zi2䠯Mxq7%|Z(?HX໼\𪮮uV[r1_m*>?G %3bzipЄIdBJXAd4]#] ;}Ku@`BK4>Tg=?My/,XCc.|bBȇ`p ]kԦvߩj^?#bVF@P6@Pa{ 7lm2 QOkX.exF Hp5Tyca=~c~KhyQ{[ $75[mo}kU߸SA^}wuuU.8p>gX(S |}k %!itT'(Wjq\ 2_B,֩ 9=dYByL+d/9c@X(C4~6Ƅ2ql,haL8Me#3v%tG|}$ʸЬXC4r zdA8/N ,PlEWh,@=\#$n˳}ߨ02 NܶY 1A#+6 #kO2 ]q;^ "@ ȩ.T=[%Ўp!ĺkktW|\{sSª0j&SXu0 9b}SGDe 'nޘ3l :6QlQĖ)hc\DsX}S0,~y[2c<@zc2@Ǚ>x rL=cC|X#`,EzܵX98a0cdi+{&¬1o9V`r=u',YQ*;$^#XXc<2eoMAoe:mG@Q:}!/";ӂRk(àc 0K3Ό=czTcɌ(|* Q ?S?ewשd/fbש%r@4yqw6@qc)hIwHe2P9csƦo,Ě8\T/Rk.L olh@&7ٵ5~7k~9 b S}c>m oU?tsSb¦yn7oy_YmhRo`02&ؔ|g%H>EsX?K^67 pnU8fb*VoNCcX({0k,pFn r~ԣe߲mZޜL| 4w:4t=yxG%ݜe!LArc޹&|<Św_vN!,)- gSlCj@e=( wM7UMΌz׻jr׼]ДQ 78v.q{U=/2>k`ݘp f6!Bn`Ҏ&M=#|oܑ tجhC q]!ofθԕ?socl~cq\l}vnpJ>svfV [w}1&XR7 ͇'m 1uA$ƒ1-} J>y:IP'2Uj1,zcGj+?meBF~"!bb`B ^xGXpar^!|>s%Ƣt쇚!OEa֔W=jx̉:y,]=h1*CFIMxh64JDEaP ,]vMg?j-UĞvi8u6ƻ*c@! >Y ܡ.g}wqWkE&6cx;inTu2>h^q]oyP0 ?pj q+ ܛ\k/Jqb oq*"``Æmlb?}qlcB©-fS RG(Fz!gymT;6mxY /)<.y ja{XxCO0,tyWnp@[AʘDDTlEK {WmOS[#Caǟ(d|a-v`(A['Oyb<]mړ 0 CCy|i'GM[rwOZi~]o9x^a%'PƒL7k˘AunN~_~Y|Aq|iX]vec] n,t,0+lطNazosmcyLЂ?'<0nU_NY~w !4 Ի<E뒔h/oӣ>:'6봱 (K0<lz^|*hl@;VsJwyw@S2.uK1܈1_XLa YU]ŕ^C`s`3 fh؆.pp7FԄLDo^:.V6XgDo|OzU2cNm }a}9bixUo7 `ZG)?j>0o":xug_ -\ >ui_җ, Mex$;λ|;^K/5:_g.R{ uH `Eh MWr*,ϯN`2P}[7|܄ Sͩ bc]<[7 Bh 0!KnR7i}n`|ҏ<81UKq0t=ד30j PfoX" < ;*]Ciǧ$:2?'JcO&PkZt>@IDATΩ w!3.{G.) |Mh S`X;9k1a5DrFt( B;;EǏ- d F,ʂfX Of776. }a8D#DY 11@Rzf>`.׿K@_8-q2O=R?3>˹m]Y'^_Dź_;?\dQ*`q*?tFv?C`BcGaJgAc {&›ѕ(de}XfZ2+//:BhݪN+xxyxWEvoN3A6VcAK ,wMMaټzhS[o]E6 Va5A@27[Y]"EطDͽM_Y"?,e-XhGxyJIOza87ؓ&߈`5DS[@7Ս{X1t#'2V L 1$ ̪BzRU=:ɑ]X/Ê2%H8-6Yw` =PkJQʚC.ϰM=B}Û f1`-  s\.NÄt}9C }7<3\tEY Ű/߭ ~#DЗ/:aMpVű*B& X~x~9PyҗԮPXMzpWZXGȿGR?5rS\fbp(fw3vC_>qP[6> PM apu0EE8~v٤NYW6)^6NYfz^G!54b8cto6R(HAFk>.hh5l|uiק3dVg O8E@\s,hi 4q38 ʞORksPb|>#mArvo?G{0!};sG@{x ͡+J:BgzիCMsg2| Ћb's7#³S@09gl(Ie6?O~sX_(2Xx}^ uVwW`h ZSp=QK,w 7y{vʣPlYz_W}|,0BYM7[%(LV!SzXΊW8CXӺK9BhbcsH^#`SB8 Ļ;M*5_(ꎲ_)..s/EAXφ(֝0U)\aB\1KWoUg+-c$E1 s}DS(O;-atzsw xM!>x΢2 1k>C}{ Bf2>8Ҿvysc )/F% Z,8fX0m=W4ܠ ,c7%g_N@ l=VlƞqUz`CWZ90V +Ww[,׻fEO_ b Y40yc6\Wtdž&SR(WsL0ى_cJh1 z4ƹ4}Vo)e>0nzXzWkW^yee1g}vyI'MO+WpF[NԤ|S*Pw #ӄI+}ӟdI;X\r _B&wLq>d5k|&LLEdP<߇o$2"""{\"w[ LY.3.Kq4H&=B)3<7U?q*HL;:sy睗ɥΞ2a W!9 Tʗ?x}.8cֽ〔ə`2[%}%̋ae|R `X ".{#Ii#e}*!Y&%XS;kdUD/l=.\|fM=ܩu&,VAq̝he@Ji= OȸN )I.*0^?u{>`e1uǙ 8'b/ĺu^{1_ 2yld=,S0k?zԣ2`ka 4i̠/&)cX߿ث,ڐ`` Hrr=. wJbӏpXT|;ߩe"40m(uNr40b3Ya>8HvG{Ҥgȝ)E&h`O~ ǺWxGJߜqK5dR۷yGU /W`c=YmW4Y\ jYYlS\Y^>&zAg0C.L bSnYFbډ\BPPK.<.cXk>;O=Yϲ 03B2mNVC9$c( 4k&~Qƾ\G?JZL͞,vz&X3V"|er&h)gX"X.~`PRQ+豵=4P7%β?j#9¬>&xF)ʁ #:8rK>C)>& ȊSk q{QϫzTv_4 1,XX<2\@KdQBumek ۉRR) `vz 4ATLqesy1ǘm%9c!5EpaKq,Pܾ\.*8g.nc~E؊^"f'nC,D+λZYv)ND9J8Y,hl>yqJܟ3 {jEL* dta'n (oO2mk]^ j c X׽7+!\<07 [Bby e1ReU2~Oj Ӫ2k(hQOMQ2&Q 6ւ\1a3g<xNB~ʍvPWڃ8X`bqau"؏(>tUWMcin!՗gDU aɶxg?ڥn8"kP7o6zz.kFLR3 `^,3xy[bx`>~E~6JڌY~mAp6LD̉.&{lb8z ?&m:15$ w`Ƥ΋M8M`{bry3hw`c#H୉wbgũ^2nh﷟!0U>X`˿(,+s\V9AB~BºE*c3].;;M/1r[V" )$V]dML!5/nᆢ^r%c^-Ղa07j胣^ؚ~hvqDžpGeP /| lh]y$t6k7{8)p˖6`]'掆BFZ9W3ӢyW,R@N4iFʍOL ƜkUQ ZЬ`Us5)Ƭ(  Xq[X1y+N894V&8@]t+>F0 \B .}LYusBbA>'l&L 9`Gv~T5B,v/w3W%څX<&>IS\KvL 90 ,Zb`܃5X̞Kʇu/|衇fKA.RtwM,FvO|b&DeL% =\UøCՒE6%N%`"4Jynl7#5=Sn̏#oLvS}ź`]ȍ^3Yjb`I N,74w?@;j(oW~,=Ŝ* 6cߪ޵횼1N"F`a~<ꨣLF<(d+7x PJE/8UPAm<{م>ga8z{c1X'!@Md.bcMƞN\p]Գ*_aVѭK\ $gp$Z]8؋|\|eqU<'hu 3>tSG,l&WJ" 7gS>S"v+̱- /~,vNok7KAamC8sc=}^"-s)',J"ms8HM7EQh +Hg8/D.M.aP.n H%< X *Qw&+J̟fdL$L,-˫Ơ?%D`5\qO Xy9yN1i$EugRXJ>u9{-X = $Vor36]^\Gao|[J1S=Z"-k$ϋ/k.n1v2G;k(DedPX $;Ac{s0rŢ6ᮬ|'Hk::aT8u/0OKbR8=C1a<΂e\%Uc3el.Xq.kW3Q@boug.0YfpaЙ%؊VjH NI޲qIc+7ӏ:o P i2v#s^F&S a*/tohX!6A 8^%\yX&^Avi#<)sU=/֣K\Ejc–2}/6@A>,u^sPBz]Y*I6J Xʝ<]-Ǧpm+(-7xD5;>AaXĹߩ8__n~g$ sGy L8g]9`ʻ3ėaK@–"1"8_2W%-IFVu݅>@.5,|!%}ߨ;ײӥkw忍'fcww"$$ W{H<xZӱȝQO;s}ʐ?}'6g %33{I^if Lnv7/qX|CQ#}ޓ 'Ds@ uuXDY5rgSQ^Pf]iݡh"|_-G;pD@VxòTѡ,hpbҡ9lݓK X^>#X6JeJc[@Kou?t |a9+xD9]^X=n} yZ ݳX }<2a=,.!ỹY(a6u*h#R I&7hmͼ4')(DJ@o44 $N'|W%XSM1^UEZZSS >o$ |qJ.6dI VӹoJ } D;袋ryQZCU]\91(ĭDR|[Ƙ>/6mcghPnLH@ ǼVf-\Vy$C8qFH[Q yixJ'uaLFp@s>1ס(5O bm믏emaDyY.!n'=YnF(m<_vͣO: UY4S.ik?8*=qfyyN0C7+Z^!)^EՌ p뭷ZR\KR.5mƨMG&{6͙6&vRGÑ\zEr/2-A`NzWw]˙Z,;\1z"\ 7^YeZĊwS̓ ;?(EC-o>hsNϧ&W@L8i Ys_9Kdf︳k +6{hPؐGU>wy!森ckKdd?׽ep5kYk6m훇0"z64Ņ/_s(%8 Q> wX!ǐirÁ~J}ZȀBxAu-!<3 ?3adq=Aje Pѕ1 ;5ZCKڄX{e?Q"w ^u{kXg`t!݊ڟ<+Q) x,XH ;_Ҫ`GCSQSOе2Ii$*֯ `;۲: *rak9VG[B"w+N[& hx|g}{\]ԑآ$HxQ D v v`_s׿ 0EJ' Z  O~h8 /JCtHq Z!/;<3FPֹb)$SUQ7aݺC6PUZ_g/LA P:MaԚ֜X +E=dr˄mj,%tk!L^ F ogXۡ?` =Vcj6*ނho @krkV,^b Ar@EhQ>KeJ`,n<# V6 u\|cA;ά;h7|K@2` D=~~) +7WZk~U ZęUs#ax`\ʽ%ApkW撷^ y&-2aMz26-q^^("}lDKc}g? f'K{1x1WDc{OyuzTzl0Z/6hگE Еs_`)yt}S4ܢ p{w8 &{(U T$#,ܔrmz ̭1H t _4A e˪1RWVSnur~, A"muxu](UH6ۭ801m*K/,= JeX+K.X֓1WC*VOEx>ذQ!߼q>`XNI+!Y@K p_ w@RnykWKvI`uu#~/֙)y eZU!?<#TttqYi k7pîEω, OuǶ7nMup_$yWs]@3J1޵c1D[c\˛^EɊ#ϭ .{!J=[<ᘓiگ[_ǠZwp@VZEb\Y̑B=0xA|>ĝq^q/Vp!׌=] U,뮻.?-k2L )"BJUźz͍EV,ujSOȳI r7g(g_ve wuypbsdoyD(2 *-Ru{_]Kq5:/Fh_:{+/~^5}jasȮR1Qe%Xc@7%X+YKCEU pB\ HƁˈp,8 %$,2^>&~kc@҇K-H4t:cUuϕn_dbFR(>#I{J<Ƿ ^]9Y*7=Y{=-}z`&ʢⒼI ‡$ dgڌY @ R 4>{GfVpeڄ5>c$}5iGTjzqx+,[^Km FT6 |wa \3,\YWjckXk@ޱ.@_@cBF暹A ES`:[w^*]ku "n?hK _}:>iOxD 9 7>kͪ`L6?$`[{n&rgJ^B(SN$`π!0fT$r'{ 2P($֖r=bd5G`qai8OԠ["O ,g8rsz&]jD:+gY)>Xp Lک1)F=pFXUAw7#sȞ ^uUOv78&lQ+̮zAwR >H??QfX~ow1VWu'$P 7'؁mHR %bFt h}{cyKmY#S8=^iWO5Tmld VhD6 *=l :,[ 6B8c_4&Qw&;X! @p;-y`!6YV%ύgKϜ3mR`y‘d r;׿޳Kv Q:C6^~e6~ֆ_K nў'hl5QK;kϪ4뺄dW3䌡XĞ x(xpb+(V04LVey:6p&ĝƘ'o@sYGҕγ9Ѿ~-ATկ{u!s*bv>MX# iBWn\.މŘxq"blHD\pu}0.$[;kiϞԧ&|Zu*dNXAWM"IB7%w;Yiw莶jθU}W{6}W £*<8 U&Nv@ǡyZhI(i3S@xp Xzsr$r ,3J=nBy^Zx3. d_k}>:<lvZ;}^mM[,Ά1:W<`~qTubP12i\4mckO^>0 -ICY o. BXcЏ IKȒI}6X+bo:MuǼ"c9P* }d`cxƚRxvy߻5~ˠ'*:/_{Vʲ|+ 83K^WgRE/]*/좋.2X* /^ז'v*UgLIRh@/KԓAE.z>#xɚg?3?UE_iO@\_oL.`@âz3t)‘cDSe>U?KLc\}l!pCIjʫEUk 8|s'0l?w-~m"s_0w# s\瓣L?|6s9A(%,hmmqDoE̙ȲeݼRK.({Sb1N`?{u3C1ꕯ| _!gq1ǘ͜ea Y2> XtA.GPK;Wʌ#%>F4R _1"<-2 `Od*Bsgf jn۠NnxD:Vt60zN ,*!wbufĦ2?$>/2re  2uX@Cc !J`KZ9e,ön)@2qU܇[K"%h&J{̋)oY2vQxf^tF9]徜ɽtH]|%=Ree8vW>,A1b#9A(]?Lnf%A@څܕ{-F%eoYo;G G%AdW6èBhŸ֗BrO7^o)'%&eg>JAJ7Ż`nef`3}c7)g2$Qe##!ckj[ lJE %[޳@S曇d,5© e"{Z2|c5C3]e}Rzkt@ҋ^̽AG)PҚ˪;;,X.30n ݵJ YXr6#  0\RM"cl?ZXN 5(X@X: ڢraěaíz.5\B Ex+M#BI܌q 1TC ;b 7`P,".bðַe;òaB~>1aО3 KY=d,n+h+vR+%wy5M7 s.? Kԛ%C^/jl^\Pkc=ZA;Z~ JX  &1-r8Pu.`]; a~"&!co=.:o 6ނ}|gc u kDp`=]<@)׶u^X}T_,ǎ=G6i{KBntSN9ż>DNC_AD}$Qƻb`pK_"7d M%ACQ@vY3 4GOT@u}Zq14y^?8EY.wX&/+ha\]&ݢLYsv(%)ux 4m.׾"}Xy50߮kk[\ +fk7E-_fw-jqC $&mNr $r+}y\i.\[u80W`#E֗%b,!"UL89ΥQϥ‡%Ĭ{lb9yFIB %r):AndbJ鴡L<eAyu jz)'YC)eg oȥofcc=!X=A, /o菫j7rЪ>,IQo)rYDo皿C}˽KtA 8 y ,JC$QH&V¨|eK)sw^|Z[ Ro_|>Q^SBEeHeeɜ#:rN*v]⚂AR"g¾"%wvʟ/ ~ϑ$CCLj%P.4\@"HJ(}C\P28I K[W+/X,OM)CHl{M8BJ>6/tвh.xֶ0:~+-rT<rڟ\Ыn'F;Lraeٔ -BC)HǗǮ# |&RDvor-f *;΂iPcCPnB o]($Xw7Π}8'[c>xVJxjPﯸE]e ^]o Dy?StjBae*hgȁqV΁нJ 44](ĕo +8֠1  rwTunlSz+O~ɑGeL::9B[ کbseh9+MfVN\(DGi~qqMчCկ|"'}8B;sHT뮻\!QEK?q=1jxyڣۄf _ۈ@_ @C|϶5p}SsQ}]G݅A57"Uy>wP,զFL'Tww\h#d>' kź3'w՗`壂b7a:6EWJDg

sۣ8҆>t e`w1Q¯JD҄Gwq|Sǂbg X;89RJՄDejIF\w~8fOr= EN,g64W5Xh(4ӊuޮ~q;ʹ?VL]'\77tynuJO~{BMh=޵u`B%[*MA(:uַ4M|C9͢D'8pxWBJ'?ɖ ~/}KCn3_)0?q[FX/R[=78(A^p% (1yL_EκGrA_G,͐ 7Pp!nXzI5'܇ g_\h6D2t7rVPݐ@chńA >2T.9)42$?',@m<N*$)vsݪ (w^Ku>I=\,o~GycA,V)'?{&d$%AnRg*_n喢M&!ܜDcC)ht650z"jjA?iiu{j0+sH4m;AVNM;2DP,$ok~cTLbڝgk_,C64BǦC`hƀ;q;̚Hd.Idn&[A߶w +9\]Uq})#5.3,~?/~J0Db׷&AhhBw2NM$# 1{;W;ՀOٸkuk`]}{}M߳ |紱ia<!S]hfz@_m Ÿנ]$hP|ӟRƢ'!%4 B(:ܦBWSo?S׽ cVnVkϑ璻|ʊ>+1廲/@F*_92>XEip,I/8#(1UOu2]2}2~(ƬY{w>kjSPa9C_pL0暈hLkRk8A`Jh\p'K_R{͠oqO r\¼eB z[QTm/c 9,? ?0Oqpۺ}m_ jp1ڹ(|^v5cĹl1l\DuSrϒXL+ ފZqQ^ҷhsHhQH؝鋍4A3?D|>z $)x9Dk*[٦ݽ#ௗen[(S@ YHnFrqbݸ~"@@M$eܿ}@}m(.; hR63?s"l>D_Q&.sh$Q2mX--}Qyh)8dh2];\~qtB׭7?SL4 r"*vSOQM~h*k(xL @Lʰۛ^W ;d(>E^8UDΕN`I-:La?m"?Tڠا=iEvoH O_LǼ1Mc!ʟ7oˇ=aV/MF#lTw$c=oK&mg'JAݠ`L-Td$)/ `I xeȲc=غCG}sȝomYg>N\7]r2@wTJ(Isw` g--ʰlR O< n^~'Xj9& wg]%8V|Fu4> ޚC=4|s xH AU@I=\$G(#aaL dp.ԅGPLl0]G,(A=2?@ł&4;07 wx"G@">AUT EQX98BA%=)O ? ŠzчBB? 8mx7h^Z$C>x'!Z {B:AՒ[/MNdP] $ v!yQ\shSAe=q} 7}(PgBC|ꂶh;l"Z76 ԡb믯 A'Pl0!b 2~q j M(]f|sQGYdSMe,jњ/@E+D Jd P(ї_r%A-!x6D}IL܅E+a(㴍?|c<@>&sԯ7uJ)|x2D 8q N0pw/B=::T6:Sh7ՈP_QirGpcڏ(E5ߗP]5YsoFiHPӥRY@.tI'X\Dɵ̠FFyD%1Cݗ碧z:?P{B; _d烊^|GH2SJS܌Fr P):^&0Wmu0|횁=g@PIY7d c&baP;xSW 7|?cmύph%>p:uw  'xM@(( ߥ9]E·- m _|ql|:#q v9h[WUz%-cT4Vx+6oU^ۓeLe=D _:HFe*7qnroPucCh<аϲy.3j"9#c qk\Dfo}ΙN2g`~ێn ȉ嶲{muJ٦UVߴ`m\e.+1{0vW-J$wyA@Ksh Sl)axApSM̋V޾x)F!? '#pA:BAd𞸀}F<{wu*# OfHH2h 0H ހSoE^"V> RȽiG"iªo+R5MBaB !dJm0%V1db8_dhq]!tXEF7l̂#3Z9脱 FFST 2e|~ꩧ&,tOT"p3G+RwaAac=0GT2Aʻ&zr[y~NPU=~gT[cFchiׄ$YdoO80<kWo; ]|Ԯ6nmxV149ӺHX &XqL`"Q(E LQ>+ D#]kFzpax$p¢k0L Asٞ_p9Og)R$s|#b#*Bck}q_}'hH'/^h }D]` YqH1܂Qő@8 "Cp$/r& pOɶRTN3h`d E5U>uoMƘa{غSF MҺC؈y,>:g̡r8 aX~}4|(X;06؎sƐDDoa &<0'^F]'xg$m3HyjB5DMV|\!/ζ=:6+:BB(W[Ƣ\?Q[ Ur0FuQ(sT\S% A^p0!\EVg<]xud]-#_TRJ;e$뢜Gƅ(#}DrF| L۝8d? nZMrO~Wt$c_NE(qrF9LMY\A"+Rʥ v )Zr^1_˘wg\s2'p{B6I K+r38O"dA^ΥHz6 tvM@ᕛgnt= jk{:3G4cUhq1 /'"x?rfSXI*\hX7%c1d?|:-oy4 _uBw4Q>e>:Fȡu0h9ACrU|$' Ѭ]P̂똨m9=|"@\z饖k}{E_rT4Ta>^)>"FN졵Sl\Os[9閾:¤)#B l6']Eo1uNsn P w8$hhסrgRho*БA9^2Awg>.&F@ {qK),2W!iA'ܞ@pC8wo:?NB_џҪ6u";!:A-AԼ\d3ƹJA{o!}>cN:&m~c!I8k=,'aU\O(tv'|pAD]=zmP{YŜzlÄ {nqs 8Fi  csם*89Ur2Ly9mr+ot}7b8E1:I)=oƘLwm<\~I _B 7 a|˜iCf;sSE( lD"zP Fj!óFگ{/;!ҊMPUV: QS#sO&UYM2E]YFB"a-+Ί]vY۶ [%D]x0~3i}M$B̈́9Q(iNbhF{'Q>9ƺQ]qU2X5BWQAwS~4q|_eymySޕ)AYn8CS1&6>Eߏ$/̠Ejl.W攷«z FEFiOc)[@4s<)O}BmB{\o[]8}0@MB;* %n|_y8NIWC[7)D{A`;y~Ƶn{NreEk y|ҋ Bx]vwj[~/2 eXBE:F8y?yd VmeMß[Br_n,0j]oLSQb: H%TyQ/_y2>{vt+&p@viۙtΰTߏ~w9-+ L0[o. |UN?Vo"탻|Hz4.^kJb:M>~+j:O5N%}߉.TqTc9/;_oӯ,8q1EWV>l_Q>O蕜'˪q/謏;αΫKm%s̞%Om E*JNX[C/:,bGK)% 9MlK^ҝ5KGȑih`JZØ˻'?V)^=uPF 2`} sn xE%1cbrE5sd"{5PmsҀRgk40Yz{?Џ`O< >'EFATdᵯ}m$"N;{Esm'__E5A#;dCm)CuFND9PP0V<&R8Ks QT\1$\. $XaHTDP>HD"i+F8~zagl4sEOVG?UB*7ٗ;ei9qqձ}q̱J`|ca'ĕ}C18\,e3ERhbnϲwC 9#s' 0u:nӹs>XGQ98\@>o;|Qv$×50~w ibXIPs\uUwMn(8881ު-™HdK`\;t-t*Vb˻m,*t;lPۈcӯ-~ȜIRdҷ4i*ƥnO۽swiґGrQRhۇ=hd7N3hׇ5)<ά8 %]t(@ # e/{ڥFW\:R"y#mzJaeCںgQE ߙixZWH1„d'qv*pT8C6W^yuCuW%M'60;:0-O[:7qҮ.KC<1~SR:neEp8)1r6:-ׂmS9*K9]2O-:UN`3{n1^XquU݂m[ еܱݕjq.@ G}zÅyU!s0Vh給 %*]ۆ| Y ch}\s;>G<K9wO&qO|߷o. ?0xC췕 H? -MK[6jv5TeY1/2 0GBԀszcZL@v Bǿ7JB2DN_i5!7Ćg(H ʖ\inF$l;%¹ s cHëF! OzjU2}fS'rƁJ$beIcA@)DcI{゚-s1n 63.*/$ ;"GG+ue>@)cJ.h`@I ʰDQ6hZ:g  BƧ=iAa?;` Qy@"i@R=yOm!K(|ӹ/8 G?QsL xp炒mA@8c?m U{ʕsζ)%˿K8CW~䜴qʎὒ!.$( 'DU\6[A n{al}AN ǥ7:$MyS͢sb{?7o,?+ ;⛳7$oZ|O*"l*{bY96?} 2[M z?(?-ۿ1?%pZQn.\E"d,[b^d[ko~M@ }4 ۮ:lesS. 1ce Ġ]ӂpJzKLt"}ұU!kNVR^ @ *a]IQ 5Jtc~Hmoxvii&8|pw$O% B:Ӭ탸BxFg=YŶ 4pK׽uAFZuۅ0*Ax䔥 ʩ`9y}rBڝUYSF~5c|Fr'ڵuDgh6IcHَSlv|׊ J*gPG )if-Fi98kzU(5h2ҞV*SSϘoˇK"J8/S껷ϝ.~~P%,cNU { o1L+j}fn+zlW)P VM V'Ȣ5Rp*<|QIeju$" E.=_f:7-X~*w4cEA!h7CK~}ޤ>M -ѥz'z!V⊄vMy#wؤs{"NtEC&AMTW?ytFe"D$)K4k>+riԹ4i}ަz i c8͞2OuJ 1Ez΅Pw8+_r!)8Q9Uio8֫;V)ȟ]_!)=I|.MeLg~$e^$F9 '!m_J?mn]*#s/nh ;lQ4rJ1:N C,ݹ >40GɜM/݄ vt;|Q->@@Qo([pJ" $Io+aAȫ3hD;TP.&BxN:}~ _٠m:5 u9N\x"$W_>dv|;P[@w)v[Aerwgr/KE[˱Cj|`e DoҰުG$"w?;>Q'ePqpm[urLՁݴ=*j}HF vt-|׻eBƏN@"Bޠ Iī*^%D*ωsbzp xh˂l^'+ȐZ4#KCȔnPP)u>I(|7,.шpYA"ԏhEE^9蜗ݻJQ X }&4N0&xix0@Vyԣ2ᣅ^NB1(a/@5@tme%'Ds1}ޘϭS/!p0p'4P t1Xbb>%lgP CI[oznO5::?)p{]֭1ޑ;.6FE;Q1(*_Q.]` oN;S껙7骷TT@UG=c}Kwtuqc a˜e;ih@!{ r|t9e9v"ThJm~O}Sl =I36LXgf@H8&W:?L*EhI!-GZ!LX:s&cLd4$@yI "\ϩӞD{p`M0$kb14PPr HG:a :H^ŷUn[וe?(a82!$6B>>-IK7?>xCEE5[I o[ j~[I9i)@;9@&8rϛ[!ks8E}箪!xэ WV \a\U)oǁ+FޜIٙ)$.^lC?{[9 a{.1&: 6!@MJ0\[H1/C[py{cZ8c gq9s I3h@/ ΋ QawODF(KoYOTw<9_:B@mQ7xjot=EEQ(F䤩"\FoPGлQMn{r(JrVL]-,Nao{ke鮼^Z!+jR8䴋Ǽ,'Cw@ٿM'J圊6h O_C^KE?J]8RɕF3qXO!㩧:h4j7 rFEET:eܣ_EuDEi@ |ڝQZ(QIE7* pe)Ft9i}wXmڗuw]]iDƸtW jƎu}-^ X|}_zKvEZ @=A }s׿;xjA]dS dzn#Cz!L~絯}%޻> ͇cS:,5GY|iY@޵,}FVM(wGiM?@@U:x%hTM)CQկa; 롯nceĹAo/I bx,;aܙnsOOӟ6/d3wg6}EږyW+TC }r?ǜEIez#9dOeT]fkyYSn"K<Т@03TA2>f[w~)q+W\`mLis cI;Tuh(lqCD8DM[xhcK.@!;ļ{͔4x^UY/I?teG>3W4:EG]Q$cI.KV[į~QB)m;Yq9#Ց>ԩK/}óU8P/SxnB ڣ*n.nu,(^%0߉ׁ*ώPnumNVxvZǦ r N%w$bQ(=W9morPDG9m5nh#(<Q(F͏sMY/c ouДDV{B{'sq](B%iuo}46U\ʕ3+L]S]=+e ÎXdmK/2ǂ`w7h*tmyufPE}5ySN9{r}w:ޯex cDL;a.(;X{( [qǃL-D+ii )^O_c#6д4O\dG4f&B*d$g>tsxh/2]9f?CrGQM *Q^WZ6rH&zCC6 | .Rt69H>P}hS3O,(T" XHjzەɊ=:Aη˱HQ8f?!pZ dW<, IHv2z;l{/Xi϶lrgSڻTnvKCd &ő h? b{"ti*D/ R4 K@ԉ&n?=yL1}r}*kJb{%wY>+j$@415E٧sfC"KSMϘnh`IM=|}$GydDd}w.]l[.r>WܴѓԉTX"*D.05-cEl2{ mDuη7,1$@fdF0 ҩ`T!4]*$V JjǠ<`8KR| Є`r;o'P.#~ 6;d' I0Bb& o^Uh:>@Q%P!t$95ưI[F8m,9m1i҅N k.Ɯ)~?_P o\M⴮30Q%O~gGaA& Y<ߩ0Q8~%mٮG>1ks`T[[j塬I .B]81\5:7n'wӺnrHq8YnpDpx3b.LE}a>vx~~ϜJdhm?g5eϖC@F `dn|/7>~%$h᜽ 'P'x/OQ8mq9W6Zw.:y2v4M_HR egIm@O҇D*aʸ2vU]^|X{#F)Tc% sx-{ua#56>l@SL[^8][ڍ#.v>[ :0O 馛1; 5\c P@J,Dbcc!sH.yM>=u\ Щ6fC42J/Lf_׊ ߲O4B>tgo+%!}Yt~c`u0sLwSG) kΣuC!\:h!u4 HDŽ /`l:%q={[[)Bc{@roOx0:{C||3嶼N7ea9{1$4  ~+D@a3 F<ڟg?+ 9n栣)Uzƍό"^WX[ >~6@udhzF_G1&O֋>!v l"!U4!%Yysll#/q$-'NA@"HA#鸏>uyh:s(xWїbdHߥ\w،RDGEzЀ\ .e-sW$@ŢF@IDATaS{ig~pA>i`u$`*Bv5"Im2r琄P|D$$lԄƵҴc޹O5 az)_t4QF(|mϻ #ZTxKڦmy;iWT˞bD bH2Ar8~ٷ/XvI6>G(iǿsQ"2H)GDzž}^HnR%$Sێ#9! .#Ufv-u8^+GSjr_e6}MP"Z}l!(Z5ļ$-$z +LsΉ22G;ϒ[|g$mBHm(dkx[IB۱cW\|e 6(91z)k!r8(CQܵ]1օ\|g-0DDCL6 QޕW^9X!mz ]d4S:rfQyୁ!rڙ}@淢dc+!;6/$ٴ:i+%o oB-7Q[sXԽ<]7wmz†-/9GQq>Viu yGqBwGl_=BsBpoߩn(tW']r^v C(rm0n+:. S_QO B_ז%q]k C(Ȋ p+3*e˯jta^k}"}|3a?~BDRqxz (6h,EmSF- [ԁw!v~E T-EwIF$zn96 <܎Jv3ooQ}QQQyk's7z2($yEL&Cc壸.f@WNQĉV<7Nޙ3Jnh1R|| IEic-(:X?[kqM(Ny'nc̡ z͡_tg"(%Zzj1wCV87:1c>f|Dmz;s${YptV[ocz%xpD;9_(KJ'.bK=1+l! NcAT9nUԉ5+З+ۆ^z '}ըڠʛ9޾4ujo Brq#mE qT3ހ>O0xla%GU1y:n2HɓE:=U*#h sѹ&QeRţK2^l8oa>(,@H7Ƽk y/}v9{Ƙmzsros挩B{C{T ѻ.P3 }BNcrU[g>p)y* -ج {hGMˉ9.x# )VbJѠ<%0c.=wp Q2"qL?G @xϏU@uUs.Kϑ0%j4mE}nqzURnڗ6UQ\'*EOz"2dD#C.Rs! N9 &ƒOIO) TCmδ $+_#26hh}mriTbTuP[Sh&ܱJ^g?nYr˞ MH Ռ#$,BșMQ:[BSg^!e2LEPзU&Kة2V䜡u{鏶Nإ<3qZhDXmnB93!Fsgۥ~qCCLTM/.("(xkRcr * J + v&e0qĀEbE~x$`?j_PuJ &p>]@ y[?OiBG˺:UωLk 6St8u:)~1PȞd[w'$lJ&! I2阶ϱrH8馛UW]e!c ~~.{">B哌uU[eH}EfϔhBy:Z1h\ u-HXm(Ɔ0Z@eK3W9w-e49!6yg< ׿ЛNe8՜"L*)dt#'7Me,O61yQM2f9fz#ƻd%;%M _%DImڶD}߰ImO B}cts&zpº(R _% mKAC k&կ6.w:rѱ)O )n죓*` !ɭ׋{P }2q҇>ʫ+C"%A߅9 %b3C&6=/p^]tQc>"hAiC<#+?e3Gp.(0qD-vfdE}k*ڍkN\3i mm] 0us8_n6:6!WU"!xоD (mAۃP6B1u%m.MO[kJ|Q D->j~:;%s1d1@ TRB-,>7-2 `+{ubA C%4m> DVT8!-O/KNղ`@} z*m'4r2:~RŜYTew~ISn:b cN]җZ[(_dmДEnP1~C)p 8iY/ѕ2ȯɚCQNTcmTM|WBh>OU[/w"A1:=an%s+xFo Au8u}Pm3`ZKOM])9ST&Gwe>,15ivm"Gy&990S%`xaPW~Wlb +|tRKFua CXa r ! ~Aexm rsiSwO4! Dm0p?nk\֫NiN_m ?O,.U Fy9fS5'M]Idw4K #F!%&5y"Z$3/xATn(sxk%U=z11>/\G>R\v9"m{]ER+o/xo((jzR|ԑQuxOQȾz'iQJRaFcO+c{9GzE=|֔5XE2A!W\KN+:ORyY-_q^Gd_ڮua{y:(;m'E'W[gwg=5KϜ￙^V)QYd4ϙs69U"9!}$a+-iZ< ?U^xO;4/oꉩӶ!妛nb>)gp5:bڦ>xAjP~*|QhrjQ 龩F7<6fIn@@f&M4 & t0A`@o4}b/@.M?xJJ [+uwC0~jFs}y_ܳ#t|MN<DA9?xкeh R'!bu J:"g hc4!Uu6iB @o=GQ{ʠ'Yfs= |/uq ci _W&A?sM! w[;T59Q+Sס}~ _(74ԒHS^$9a/19#Qmt<=mۥcK3Ǯ<a׷՗.q#ʥahRe^-K BZC(Q fԠyCS -j$0h88Ţ jSj}"ޯl`>| :Nу>Ap# gt|pz-(Ps݀MU~gP79H{]A^Ҙ6KFP`˅f'O}SW`"xOS_)e z[Hmd5廊FN{|+DȐT^Ct7֝,7Gr%}WM@tW￉AOHY)8g\b?@ sbl *xQ߭@.~+oHJZk.~Q`c6f9+pʳ=`E.("G8'}O-'}=yEy^YьB(*( e&)Ȃ֗в,\M *_C\>5Pr48/~5l& '`@EO΃7l4I4:{ (rQ*CuQH“=%,x[( Loܓ:pZ!mAs=|bx , p(_L$!en667-\4 =E(> 7t$h1^i]50~61'}g/3\$bc@\d,(>#c\$!bb]1IH6eׂ˟TžvW &s H^Nq:2_ K~;iy ?)}s6) <Ʉ{&#c7P9Y7k:fhIw"D9s%B5m=+3Lt(,B.=@d7 )jo|{5#,m<d-.o1/b/8W]A@op2+R5(^G-c+_#51t1z^AQeGqDSy ^17͗ ;.( >kk0g~O]d싢]Yy7EBC p9iY^YZk6JL q81"TEXޞ0JEK9K[yЇS-!N&C*p+22})Qwzj]kŠc>h;`nM] YYq4C4!Sw4(OM/[f?JQ"obmNioķ\FDYhq'E0 }Jq/~q^/70aRńQ|Qh(~-3X`e@Dx.Ԅ2.- !$tHeU**=mBqM?~7ElU6'c+Q.⚮6kēO>eZ3gt5Sԩ;'a/C +B ;CD!ⱵcHHPD " .BsoPh#P,A)_ZYJsBSa' hAgbB;NK9MA "50!rmQk/=w=qnh fai{޴Gsm/~߶j#PaBc+ncZ|i7(>Z !P@Y{ t~NFk?%Zp1ٟY`$]¹ۇfy }C-!i% KB:Nq6ȿH8S{ʠ<ۨDhI\O[9N>@;~hG 7>;j!@5GiVSٞ½?ӛc !*k+ /AS6ӎ38tWK7O$"$wXVJϼdlej Z D_p"%i) (@My@ջ(@$QʙgY練=6aк(|.sM-ݻG>!v[eʼnL6݄P"+[-AE#,^򗿼kV[ϡ8uB[ǽ/;4HYC9gҪMHS'C=G>])W-|Ao3'!5T1~qyJd@.ATމ Q~n_1D>#Jޅ@o#>v%g?+m9El;.iT "Wn^)M9L{U%]i1jW\ƞq]dG4˥D00w{Gmx~c 6u=b-O u aVF%BN"*~6-cmwP $̸+/g.;_4}c@ȔMC(\R>Wl;nHbrMMi3 ^dw40VTD{Pch}W{P޵8eT'|+h 0 )KU5"=hBSF 1'\K޵2%,**|O.Ҩ~[[@wqE0\R^>r8`j^9-PnS~iO@K)a"cAo[~aN;PnxVrƕ}qkݧx{.O߶"q˸g}]v9w1@wď/V9ȺAǹ [wO' <#F&a kW:mgtSS#뛕~-B3@!LA|Ѯ71ƨɤmU fzBDX\# |^$c@8Wxja[W78#G̀C'D_[dSϴƕڱup{[᏾Q8bLaT33v*RIŻXH?ɻB,pCCwA0Ij $Z0J g vhaŷ ˊgNO?d Eߒ[G[yr @co~opY\2+7>7=# }, ZX/#R)BS_#/Ds7eh{zoUzR`BE$\x.XGqDϚ|FrE}K܁ _sSq?\3eUgtf"l۰a1>^kzHR5ӊ'M+lS4MIHTh:U]}g}R(T]gNxvS .GxۼѦހn tH#Ƽ~Jay :"!qO٧{~VkY\YH!?MV78J2%5> JUM4mG1QMKz)ӍD)lJoPDWVEn)1&QeySRԍ| e ʹ~˻zJV>$Ҵqg(-8jN7UhwQ#Ч!*},A;CXd4N"{v'd%p[2GQjJx -#n 0YY8 Y=)[vtmmo{[VƼ;y& l*#i꾏HZ^I=12VW=qeC u120|yyQ ;oKٵ9(nKtJAHַ(eR%| dbVeO#4PP Dٖͨ5a2o}[AqAuҪ[!Aז^]4 BXz% .][o|2!3mU*,rQEK% rtfMzg͡ [. ^h`b/.2F7}fnOƠݝc,3h$jp@?)S{lwq+]i{޵=~Bg)Jogq/ךk!;BYCl&"CJPrv;6vauZ'T(O<]JVh3{^֩(4j-l2qJx@t:ëYP׿^#&&[UEs9gv9)ŪHP$ )H &^?CVcZp}"xYo:nLr Q-h/6- Hb9D~п# Mo(kW[n)'#\}Wn`g`»ϙ9 |mI@{D> !pl't Pt&*C'%6;?;x \}v("B*z}?+o'爀oٟwJy1w ž4ez.>餓쾡KSWYvI@PxvKxo=w^2T¨YvcU^]& dAt^' m@iܪJ @+gA28 uShpEVh /0(t0VrvY[>f=bknפ< &e+ VU}P= P+ķ;CiCFtu ޕjW6)X[cKXwx~* 䐲H+9ö5mDo?(+("D@I) b$/c" UӇ8e"爸!\ ,}W*$4*4>~? s= HڃtfCs F]*E#ȁ`TqѦv\<䓋Uƻ{1##1._q"dѦE2oXQsOzғUᵯ}EՁ'}!׵6{m!}#qTr/\/0a@ץME=p衇]-|;MHBsIt2M|cL !Լ)O1@d2D-\ a;~{~2qm ΖEBAC}:%7іˣba`ؾq5&*VGcH׀vel!< !L1FC;3pS&aCmW~*1Bac !b(KW3q.K ЏϜDѝKƋ^"kІi N: .ԣa0};7_ԁz 盖uK `!C0 i>llFSOO3ř~ze3l7:l HTc0cdeJK޵nAhn3{1m|\s}f| i;f~ܖ18mx̭ncIion'r_v⤯۔s6-G"m7.>NIgJzpM҇P+\2K0e\qT06QtA9#> HO~hI6'OK`\rE/ 0.UCiY̧Im9ƭo|._0C*N, e@n[.T3PcmI8Ť:%CֆN g#,Tp)-vƿZ L,&]ί;㞣60u}LqvBWEP|A ()Brr\>RfḮ5s+v ʓ* !S?8jI/3&"FJluev?w˽<+"M(B"s h9zknnebIF )\i,.Ltz9BhBmX@IDATd2DY3M}Ɇ`-m!6s2@љA'Fg3U yC-8;5)$k_csT/Oi), `(q7IV]zHښA7L)YkJ@7Egq T1wⰀ h S=QyG'1Z DqINr_QuvMYMucatX}  bCC'P,7|`nkaNcMr4:uG}#Q(H|#w7m(Ln5" W뮻vJL:;Jh b $[硫j;hj}gXn䔈d@C|$U;=D:w+QˣRQhd̽F3/n:BۂZ*54խzUe/XzJl1G@yslo(a.w1x8є St6(j @ +S.C]eNvV:(pʵYD`_pQ)W^z饂fŷ{i6wܠ~n]KdA`9//CT?fo؂A۶m];0﹤g /䣙G kA4K܊ #\ h> [J;eR^[y5HlZe'h]r֮L6_LZeF ^nmj(۷w/>k, t hPHjFlxf7&Rdsy&͛74Z,RLrJ3fH${c5gs>['Ձpp:jWsNs+8sI+Fr otǦ*ar@g^w SdX4Yz`l#Jݳ.=|vکJ#Yg&svl~h´hFB:ujtvŎdb-w5$XXBf#: >;0Y";+:C>J!]PAt Vr`Nc RzB24{ȋh\i#㞏\Lwvs}Z:8op#Jm'mQTg~QGr C>k.͗T_dlĴ谑X(:k\*`S("y@lGo$HC@[ܫ -d>@V9P~_:(c2>؇Bc_\Q !?ĀFQTTV0+[dkFwV[ޥlG۸u҈XKw,:nb@6DWlmK>ekFiXk)-<+1̟?Y]ho3Xj'fl/NǑ@&:\!+b:ud(zLusZ{Z'@a YGɌL-YR(ȴҐݐv|nRn~-!m֮];3vX:M>\L|3ƍsr&|a<_{g[?6<\RFlg9ܹ㘹!9c S"fc;6h7GZF%]|/,Hps),j#MӦM.D6kP _~P+<3%:=Pqm2 BwXR^%>z\qpnؠ T8FD&`#]JO:Fv hptp1XA#[Vǟ^^d#ШQ#.Uє^,Mrܯ󥫋m3y Ź-꫆κxKk2:}#t6yF{:܎ SLq thCFѸ tc'z]iie˯*-q:{0נOp BT';^Uoys-ŸR:pTU|頶2o:z Ft`b[ Ǽ[;kvZG5mٯ$uhQCo_3VT׉bed}{3f7ީqF~\+VOё` L6;?IԉB+lZ>\h;2ex] 2_[Bȥ=Tzڈ?{*󕩔u 8ֹbDtx1EEu B)h{J:sCtfdɖtM2:ϓGd쟣_iC$-DJ.YKo i] :վuK= o <50Z" 9HEF19J6C<ڄ3[,oMcvpWۧ"XuI23F#7Jm[0yFDZr:%UY,3*9\1#|O cI7u!Zf-:+& d30ͬ' 2"Qg/De8䀎ϥrġ̋XV|G /m]q)ս i3g0z\ԯꪫC?|&?$$3(+-* )kwk1R"1^nNGxǛn)cg^q\TEMgαZU8幟>N*ysTÔ 8l/"1(nZApg8us fɻuMdMé3NiJ1+6 P,W/qts,#k3Wm,]g/sÙl+e:rt~|G9@Aݏ*qrZ ]_%&yϛ7/E^0^p[XRNF@"Xai{JIsE ;xEP^uױ -B [ٽpUm%ޛ:^g"raŶM(vQx~h*6#RGdI"[Aߔ(lX9kCTȣ,G+Yt~lloR~prQ#A6^dei Q Yk Fg9jDcat^6ǹaN(~:=c;/c2v~9~7jep{K4Ns/p5׸dNz Mm4Ob:Yj ?xzh΂әz?T= Drԯ_?%;W^)㫯P ,#)F2s4.Qu;q!ȑbLt,ٜڦlKT$P|=~/r྾;=z+ 7 xxOy}STZFq~D [p0b}~qw /2rSEgR*֊әmp5~kDg5tv5B$)ŜAp :!?DG#pR=s'\%/rOYL3YD6ݟb38i9V?9\sͰ8q@?裮KuU&Q4A|c$˨|%Yٰ(?\O:f i޼6ݳR@ :r+Y>+幱?2!`֡ۇOt39\/ζQk s17γY &L)u.bxN{!F hkͷ ϙqz6mZVl#6 #>m'I`km zlG^N銟WK#+Hբ]'=25ҤH#9Qx]9=h#bJA\2 P9% "OSˆ@EҬgϞf"q :M4/Ѳ4$"}=MQ >K*2I=%\pL$=Orݚ."`\tE /iN^Gm+"ji/R֩wC \e2bWd r¿p]N?9D#\)7DG]TEڐp]gaÆSF… 8> 9ou:"Üi5)`a9,gn :J*iСC]D..mGM}"R|Ot~tӠAKq(RِSN;9)%:H+tpl'%)oh #SxxFyH0^jkyUNIkɒ%Ιg&^`A{:J,Nr:: i VHI5LqplG-ۆ\ҍqҤQ CGg(i#t!΀cRt8[^R 83'*LjƀrfGȳN"-bs@#]@526޸^9E  jCG8j BCw߹]9GQ裏 ,TI2_sN(AL ٚa*_Fi7/|e^{mN~c)q9,x:uro4E6eizyd`*z1"xED61*)/<ị{ H".(EyAh-½ t'Y"mZ|:.xV4^p*{N2t=DeDRJ]jdj}uhhYe2N6TE}tk"[dmÕ4]w^cTp TJ夭st$r} bo I̙3ݡ7~;CwC;. z#}[H ">42:Zq$#A!Ny0`8;NQ59َ7D89\݇\/:Uc"ڦTr@"Tb5#NZK!)409+ZU7b^Hg]w2d+pL(Mo[&nśiNL3<>g؄X)q2vX,u2$c>Lp&h>RK76_}U5,"6iGұѣGv2o_\tEn rh$(獬/4Њب{M)."!WsovZڕ(;Thy[o :Q#*k"uA5o3Fŋ;-x5S +p,\}Kr)߫WhsJcHeeDV H :YYp-6-o py(\)#QX^z l'NZiE!GNk-$5%`1u6b%:th` bte-꾧*c}wь6Z s- 'NLy46r-N#Le"PI>wۗ /C/7c4hPvV!Ν;6/vm*恍slJ`;?̯ 6uF]ʄV7%16Cށ *Zc}}lsv`}d{7e=ΐ:^ 69a͠+(+_lmMt 9m;V[-l< Gb)S^{-sz!PxY#LNdC誀m:ZVn]jZV&@GW\v&zбwِv+eA[!}Gmt'}6ǭg#z SN$r/tysgyfر:Dؔ;SL?agG}zjШQ%Kdy-/i끕:?Vgu۬C7 NjpQg5׬POk5YV6Eȫ9lZ^N;&m:8mtj`#LClY98\8V:zzN"ṚD|I=~g]غn-79Og+ ijӄW+UR`u8 SV)G֑fڴiQnZQʗؗ-ӥKc]5pk=z062!%O&$߯ czrKVJj_vaG D͜ʈzhGӘ3ڀ&.Ze֥ơ7ճGhg4d:=#׻MEV&z!@2ЉVWU (FxV@fvV"MhZhѢF[{/s9.6:8v(~{`i]DdMצO?4a [нlmN=I$&/Vg[#T:Ƚۂ?@WXw?>%%m#pTb9鷃NWT6*dyI6}Ntuʣi\,gVt 6.B],g;l}^3 ll/F,31"KVRXl3:j6C3֐!l3-ri(yI9$䀮 )d%5L魷 uyyД@H?[$;:ӏL+|e" "PV 8ꨣ[UW]9qL' P&\_I_9n,g#6% W^yeͮdUѩЫW[x?d_N<ĸZ"tdRS&)Mcs"֨úhxn`_DC]Jg+E[HKH9_B^R >rJ"Id"-*-շCa~v/BFԊ?)J"@si@dh}:sDm;aeinnҤI"\#rY_"u_|QCwg"EE#ڬYL)bv=vV?W:&GZ <5]I FFFN=>01G6hD MV6|V[mtbyQ~kGZ&mҲ"/YgZ iS)h3;M;ͺD|J2{pz뭁-Df ˪4J#";=Z*mݜė-Wu"dw\}|c#B@7Q_??d7l|XK|c'+#'UƦhziZhaj-`6cj5ܺeC"idM4V[UC ׵QƦل-c ecSh[>цDp=YY7FP\&"@F̂ /Pslr ~k'"[nyuzZpn{Υh^'|3sL3fcQ xm: A hvygc}_5Vfȑ6*kܸհ2];OYoތ7X'i6Ǐw.5V2f7Y:0O>矫V[t0w<,5oenyxXri6t!lfx͘1qN*ӳ$J|[!4+eL f|&ɑcؼ2G5k{.hUn݃-a.Ycyʭs`µl ~͏yŝɑڋĪÖ}W~lAC3=V~XR7pՙ}6oE\gfmo6 /6u-Zi~Lk2Y엥Ӎ?#swEWpt"Pbp,!/7Vv##=z8q[V贐Bae]^cM펝3N>2v9s.Sl'pNQ$c#qbY}ttرVj=蠃܀o߾o[i͛7[OU:_px1xGL0> 3+)S~q0V) mtLSŁ( ll`'n ڈhT  Ts=(uUW9]9s9wtXD6 >\}|iv9uuɭkkkXgqVK1[tvm^ʁV"d:: v)܆u6j-U9Ѷ1Ğo3$+j#EՊ$;Ϝ!]Z:+^g}oeO}=vmdmx.8cs-Hhyq WPJaFc]z|B@D O)[p-:#-xڶmk{9Iڧ=Rȭsץ]:~&Z$t+m4v-Ϟ>ܾB(0^xmA[sj'P*V{&#1#Jc&3wY|uKǟ" "Pt'O8R(C9iHA<{Eb}aض'+ɋd7pC/O#FA%czVgٳg{%zB[B5 XFhRIdMֻwosWx{FmldFDH:qbHp I7|\ESYL~7xf:\A:4ͽ.wg:糍V582)ɳ3Q[n q:L!xN6m83>ՖZ5ͰjzfjcZ9prCb%jg-xE{P/% t ^ Æ +VADLD =T=CCصx`ի7@&$y˜muK2M>ݴnڍOj%zJVE=C3 Yo",G_WE uIrAAZh8egEsϹh"wdItF 0}|Y?C@Fa \8ظ& "X.zO>+p[o18~}gF'kfpTzh;)eM'gyϊ0K1w:aٳ58qН&h ye*xX{U dB'U]xYᚗ\?d'lf0.b&gN RqR^M%wovGt_ 2 )$x<餓eV#g9deH@nxV\QfXCGHiG 9t(U"V[* ?FG3X^^#Vք ]@3C1!" Bd>-Y&J$` `l?BЅ}}X^MZx}LrA@rJmN2(D*4DNDR бMV6hР(#4ꉄ9s+tot-/_Śa]t_ 0Vbkرntf*3T9ɗAXw:SK(6ɦYJ!\eAξѫZr@ל(!\c^!4=2)劬[(Tj=/h9S%\&JvNDsV2@8he"+ŘatNb}`rKӮ]f͚ewA:Z,{ͣpיM7ݔZ6X:@p쳏={v+jI(3Q~hF+KD?d%ru? !@ZʇtF/ؐ @A흣nh(lun0d .* !ǁN;䊈G9:>)LH'NY_]dQLn9[fwߝpG-yɥD QY& ,DOe ]HShF_D@D@D@D p|צX+gA C.O4C5={tUH 'jN1qqD~:h>ư<j W^qnȤMDsK&bZ6:(dWqOݻS.ᇔLD@D@*ZqNù6kqռy󸻽\d:x?SjX-']KZ]D@D@D fyHH3OontQ=~wÉ #@*|Iod Hq :(-kLm۶uIq(M<ĵ}O$"@R⑉M5nݺ|:}a֭[dW93 O9&9'tRQ倮 5#"Pz!3cƌ0iҤpΧ&M㍔raxǣi' 93'Fza抣@ԯj.rWi {vuW/3-)eJf;d86lhK/]SԖ2&0}_ver@SC[h3f= ʕt" !@hiYP lРA&9Z7DIDATO>EBu,tE@D GKΔZS )W\aprC`a2]vfر_~1t}.]\Jq\:u2#%?."ֺVZ$" '0j(sᇇb3"Eg΄MFͭZJhy;>t!LЅ}d@!zМ9sVR=;j&z2j:tpK-AҠ6V~ڬusLk5<@ܽP1-?Q 2Gq>v6|dcPpYVR?cxP< G| WK{ƍbG6rr-ST?wLF{"I3OZs5 LD@D@D@rM;O3i$CT7Zk-u;c sGYɓ d"Pn''}Ǻe }=E QFO?M)Qjǵ&E:SOd̥fwň.lI:7oj;&+HxCvj@~TQ䦛nrF3!mg`l/$eJ5o޼DQcy.'zԩUSrуzӧOtR^+nLD@D@% 9%] D}9<͚5EWymC֭yg… ~"0`-8JVH%sH*)#:g8\FVJvuWqKC st"1vXnl-7QD_i?1=V:vygs1Ǹ":qޢ&5"0dss=gZn]h%d8|Id:)"d zU$pɼB" }(8H4hP tnj ̙3ʑ }w\>hz%= 5sitm.%=p4 6'we\&)'fR{g}fFep!Qr> [Mt8rMKW&Mކ\ 泺]9S$K?Qgyfh 6P)Ή': O;4ur'U% [:uhѴW0`&kE"t7뮻n݈@|'tfF{čP$K4_ (F Y^\pa7x#SVo0~73mڴ"h#wAl|)~NDFE@D@D@D@EtXkذӖC_N&"P(8~x95}tW\/7mڴqi|e"PD҉yIPn]ӻwosETYI7MpJ)WA(+.e]4>@wΜ9?桇*hV=PkD@D@D@D@D@D ~GsUW7|ᇆsNUVY%Nkd"MttRqƹHEtM/^9Xc 'DZ{<ЬܽUV\qEwMЉ@6 /w콐 'o/C6Pىr@" " " " " "P!ʻ-Щ)(\@iwC>h7Fek|}\0޽@'/ГEt]w9izkO8|seov4tЄpAC(!@xnwޙrY^sN- $k>'jʖ[nw}-" "?,X-ot3z ꫯW]uUӶm[߄)<ܱcGFSBP>E@D@D@D ǃ-M7ݴ" " B`C1}Q#&p3{6W_}u嵀dB_v9LNC<-Tk~q<~z&eRKe.Ņ1.uSD@D@D@/_ETӞ9s9Ga~*AD[_vbI)x43|>#C3μC=Դh[n\/ N>|תk-s桕E9npѢ-2kfC]7 5iĜ}N ,Yi]'sgXt:fߚO?Ԭ@:6ѩZlovΧձ_ {D@D@D@D@~hy7͛;G4D@ʇ\P nϸn }Yy •VZ)&) _[n Eӷs=裫L3ի2]۷oISN9%#ѪU+Y|'seHt\hg:vmg~Wwٳg:eu9S 0k,Fώ9# 6 :K" %F h;$?p<ƱܺukZnݔ EtI)"Kh{"q=rM̓Ȑ`Cp T"dH'ڍ*숌& /rmڴqh:H=}nyw]ӕ;`aR%wP:Zu[kߗt 5QhG1"մ뮰K.PA2Fo+W\ajwl5+2D/|a>SMf͜. + "4j(Ao)F?3fd~d A9>vX3rDLBЅ}@  oҤI >y(.(!龰_D $wcbDvP$+g=zAӧ/i?o2Yf3|p׹1 |%;Xc <Ê+>3:r-5/R5}xAV>g15)`l˼lb[r" " " " eE;ћ#^pwZtǏwCDB._~)+:(|p%B*. ezgO;^./Yێ69GYp2eK[l]4g?y͇~Ж Ro3 69M\"<9!n:t:|/w0zhr- ';HG3DSO5;S+(oVj^8}tA 2Xtر\%\G$Ϙ 1 2 bϢm^kg~njؤI93D@D@D@D@Nɓ]Tň#:j+t>JYo6("S K6rC5={4-Z0믿Yn Q`~^pwH0%on~~'ͻk}7iؼys':@U<0Ν;"nD߿o1l{k N>.Ӗ.fwF2zt/_džg.x3\ꫯ_|EݑC4Zڂ "P2p*{F';~Xb,"PP' +BM;4Dcl;wYj)_ |ópF̷~v5Aa5XI!r嗻[6m>|Lǎ͋/&ǶUVzZ[q] TXgu CM|D@D@D@D jx)Tk9_v " 9%@1cbbw;[nl}%0{l;8g"q;'4 iΠAT9xEg}h[^{9y . 0 /;9 z!sGr1B6@x≬h碭۔:>@Fp?xfmҊH4i2% TR4ɂ.Q}͚5sѤ 4$:<{hSLGfmuNxŕq\J6G}[n{ ?k psOPuM ӷo_w-̘1fw4V̪Ze~6?<裏vD$^T0W%" " " eBK/4+GselL 4H7@!|뭷{L>= m :HwWtWe"-! 2H,ZE4*N#Α/p!4csq@.[a8FmD=mڴqoyGfbSimBB4c=%ZܧOC$!ΝD.]NU*-M 4~Ǐo]wj9)ފ$E[ЗXL ̙3ǍGt}$">ֶm[y{^:&MmKD@D@D@JEIͅmֹج)" "P}9 )Fi&M\/U?c/j3v9s2<3fzg7:u2￿9蠃/o1M+nkŋ]Vq[aD?-[\;q7l|7楗^2]vM(Ҁ.S@L:i;lku0D&:,Wͯc  b#zĉU'tsBmd ,pr YD *ʚMڅ\^j-Zgun;'qUR.3v@- 檬.}*8!_|?ZD2T}WK.1wueɓ'&j:ǪeD@G` 60 ${7kf?g58{R腯NHz*\'W#_|#ӭ.|i@jvE@D@D@D@D@D@D@@;{anlQFΕ޽{ۦLD@jC0l֬YNf޼T… ~gF22(:IQJKqu(>LfmH"8ʼnN6p-)ԵOqJeD3c P-e](l?._] 9VZiAA^/ kA$"P ^{m#>}87n;+k!R+Ti](bnaHeM}Z\E(w}k|f}hF0C#u̒@ >l7T01"~-ZM ؑ6|!|Ѕ?jT \zdc5ݷ(/rZs '#F8VBкD@D@D@D@D@D@D@D@D@*bwiٲe]_|љ{LΝͺ F;Ւ{׬nq5/^N35ׄ4I[((tשS\r%αܠAǻF뮻\y+0D%O4 2t=ҥaW_̛7/vrI|$N)" " " " " " E(Biv2˘Ç#8"&|e-"!JzmRVJ9:N`F2~#еk׌Qtxx_~YEO:ƍQ(SJF/ijg6zjZ4o? Ll֮pW&뤻lv]TˉT(wy'<^z5!h,n/}'梋.riΐo:ĵ?{yimi/k6Y- A&"  0w\[\[k֬A믿6s̩rw}g}Q-Z- ZmTD@D@D@D@D@D@D@D@DъYk&lE,>E@碩" " " " " "PvqGsM78ڴij" " "+ 6tomkUV6mCr@l0D@D@D@YofV5?miӦVn@zfu\" " " " " " " " " !/cdžk:2er@'(tb6#" " " " " " " " "P&:wl֭뎦>o1{k*9'2$ШQ#s#>}ꪫj|wy1b[ 60OU+]gX'" " " " " " " " ",%\b~,Y\{:{Yj)YC 1#"DE@D@D@D@D@D@D@D@D@ʓyog7on `ƍg-Z΋̞= 8lgϞvuf8!Lg}%pǛ>Ip?ܻwxWYeӢE K"_~~C1C?9d$p嗛v{fU~0zi믿>蠃2>g3eʔl|YVM7$tMi=%СC~i>7|'qf6rGanxWݼ~ ^x7L8|Cf]v1|_[1#F0Ǐ7&L0tM͡jN:$SNg͚[oeիgzk7x≦I&~QPukz:l1M >\yf=4}Q8~_mmzӷo_T',欳2 pm?w}Ḿ&{s=gp>wFeȐ!.:/w_ϻ/9#]yԨQq8Мs9g ! th@v xjMϞ=D'A~3fm֯-Zp_/hРA8^zꪫtg;Q:u]7\_v;'J+N&aly7y 3zV[mepl#5ٝ;w6/6+3gYkh\D@D@D@DBTϧa@?1Du˜}ѣGr-aM7T20#DCeڲ.tgAzv !D߮ѧOYj.7N3"gf5ӫW/T9+E@D@D@D@L;em o*Zݝn0{GtVq͚5sӐRU߇w޹9 ގ=X?G{? -y<1c6xc?47|s7Nj+k@Q6@9-qfd_ &'tz]aÆ͛#fx) ohj?-oo}]CyM6$v}(sr@ ቀ5X#N֭ؑoƼ7}MP :ʱL#]9o4Z*~$v盋.jo+" " " "P9䀮s#W^4t73Æ 3{͠?!jK/ti&̝;7\䫯 ՓNg-#" " " "P.s#(Q-r>4h`Zlij+[d,ߺuk3sL\49\#cs.3QITKG#64_D@D@D@D]zL-(~g bZjrɤ<⮜7nN:eiڌ@/VG"!:gS~}3iҤgR a8~47|L:|&nu h@O@D@D@D@D L>=tʶm֬ 駟6?s89ҦMpw~駟ϱ#f&M⊱@ϱPD@D@D@D a>dɒstW_5sLtRbUvtms=$r_p.;vh6lH(vr@RD@D@D@D@ʒ@-\d0afƌc34쳏_0믫|n!־뮻Lĉ 8gϞmtbnV,"&j_" " " " ED@Ed)" " " " C`饗6Æ 3{xꩧ J+d?8,!qwӦMfzjڴygqgϟtwuWSN>.kFinU;(<E@" " " " J`=0&LR|gu58v0`9CJ<@8^vͼ;SN1 4pMȠw>@?cͻk{B4QvB ^6ac F0L'  @C>8 @Jy%_1m ,eYptg$@ (  @ @ *77 @ @ 0x @ @ ([7on @ @a` @ @hP@n @ @ (  @ @ *nݼ  @ @ P@ @ @ @U@ݺys @ @ @ ,'@ @ @@u&@ @ @@X@O @ @VtM @ @: , @ @ ͛ @ @atX< @ @ZЭ77 @ @ 0x @ @ ([7on @ @a` @ @hSͲ(BIENDB`ggpubr/tools/README-cleveland-dot-plots-1.png0000644000176200001440000061676313571311437020407 0ustar liggesusersPNG  IHDR* iCCPICC Profile8U]hU>sg#$Sl4t? % V46nI6"dΘ83OEP|1Ŀ (>/ % (>P苦;3ie|{g蹪X-2s=+WQ+]L6O w[C{_F qb Uvz?Zb1@/zcs>~if,ӈUSjF 1_Mjbuݠpamhmçϙ>a\+5%QKFkm}ۖ?ޚD\!~6,-7SثŜvķ5Z;[rmS5{yDyH}r9|-ăFAJjI.[/]mK 7KRDrYQO-Q||6 (0 MXd(@h2_f<:”_δ*d>e\c?~,7?& ك^2Iq2"y@g|UP`o@IDATxx\ձǖ\Uܛ{qTcc$@ $@ ! ^)@zChpw{U%\뮯j%v=Sݹ3gF  @ 'P3 @ @` @ Pb$ @  @ $!@ @ @ Xf& @ @( @ @ -23I@ @@=@ @iA8-IB @ 0@ @H (iL @Py@ @@Z@Nef @ { @҂ pZ,3 @ ` @ Pb$ @  @ $!@ @ @ Xf& @ @( @ @ -23I@ @@=@ @iA8-IB @ 0@ @H (iL @Py@ @@Z@Nef @ { @҂ pZ,3 @ ` @ Pb$ @  @ $!@ @ @ Xf& @ @( @ @ -23I@ @@=@ @iA8-IB @ 0@@5'йsgiٲ 6τC*@f6O T4]v%''}@@&\C P֮]+ ,=zH޽+kΝ2w\9rt]z%5kXo}ҥKeƍҶm[uӦM++ڄ@R@Ne` &pqe,ܳ_;&ԑMmZJڵ:$_~ZJ~ӟʯ~wI19k\VnOjdo^h|+_e˖gC)O%%%Rp=YJvnɬ%5Zw^*5;La\x巿OW222īąsJ@Nd2 "P|DdQW?3C]5'SCGM1ˡM˾E=JvoH~OR |r7ÇM6rW)cV>o<5j̙3DZW0>`=c)Y8\Ka$OJ6We-"oԨQC/I߾}e͚5{aĉXޫrB;V%2B P)lҥ^Rcr2iΈՇj./&uUIFy媫 -Y-{/g̜nJf֡TjY#۷o/ru3Γ%KȈ#Ĕd_LjRNC[R*رckq_;+}=Ϙ1C.9qcu}8@*`3E*"s !0k,;\6m]ǎ˕̙3宻r?˜ bӦM/r*IUv߬Q)6OϜTwcQov[s-O5Jqi_]_r>׿Cb ftaÆr:/L(|>9=a$Y_N)ٵ*{ȑ#(Vhկ:Ǐ<D8V@@(,,믿٣Cϟ/{ 6Ȅ GqaҩS'_W{. / Vy=ꚍk7̝Cv׿[dcC1 R1]SO<)O>Ӵޚ/7t~ԩRGW蘋@c;G+YMvk7"Ln<D8V@@2W`7M쥻⋝qݻ 3{lueݻO>qCy饗S͚5s1 \6ak庸{9+]t)o6*%Ecnpc&lٲŹQ)f &5PW\`W^*ZV`Ys'?~CJ |]/&l2m4R p( J'`р-5I~-?0}{swyo9?z8[ӝ5Vk_ԪUw]2|mW\4,E+VǎEJ?}dĸ,:Vf0VΝ;Kvvq4`1 q´PNΚ_j1>9wJ|&*ֲeKw拊vVoL`4 ( @8zFĆoyJK׮]fc-E5%s&/ج,G5՞c-ݧ#ŬbvnXآ'qmܝz.tƍ2d 4߿!x(gJ Flm1}#2X 1c8ѮYrM21e뭷 }7rA?J3<&EAyUl϶ݨ5I/5lY&@l޼ gJ+"˗/I&ӟI!]k9wqogʕ+}`;gA"T\U@F>5|pqs;|ghKJ$7h oߩ}n9RKx^iWWddh-Y֭[;*Dffu3:~QG7aLZ9Bl7.B'/,ûv^ȩh!sm?={wk˻q(ydnѹT[Q@J`ǎڵk;o߾ˡ]cI\P 7ZKQmZ5x 8p@nf)))q\oY^Kf$n|kWA.jѢ ^Vn,ߵ)gU-5ωԩ'5_7o|b]vCvRs?7< ,:w4`R p*&s J'bV`k?#AEbue%v]UڸqHZ2Z-w OVfӊdhVX=:+h?MAlٲu*f3Ơb2KwHyGY &kE7O`J&Mm@*C*Q`. 8 ؏DWz~#x ڢ4%f.ҥA_QwkuZWZ[`T{غU̬/M>#ӿP굺\귉~ X{,$7{#]eu(O*Ľʞݛ8?61ϔO?T֭[P1x@j]X|B~[[w/jkY-… nݺ9 յ(:ɽh_9';}{V,YC4% <8T*)w4HIhuC^HNf5"o[^`Q 5k{nfRwoȉ{5H7uO%5wIAA70E@*N1@@*Wۛڏwj{\+{Aў}]_0;obSX_ /gh*[* -esg{U#͐7Gs0`sG&9n ʾE?c fҠO$U~6ؘ;8Kt-?Ot_k,XVݺu}KӤ虇wƃV1oݯoV6q|?84!P Wc P hYw׿} 6.k?:miΝ5Gl ;=&[=٧WԖMzN4>SZ 's;Ff)u#U(˟棝8q|{sRY^mSľ:ַB9ORW/J|9gRsHf-H5.5eUBwi,Л׻;7G]eO,C@ Jj߭Ts T<ڏw{L,>:s(YYYNWx@x G@_~[t@҂]FGBjxܸqb [2ZErzg?xTcm\\sMrʸrb 6LmD) 7}tz$#@8Q  )Bgr~hZU؏J{N)vεi7Ku ~es@ 1c8AL۽{c|ږO?\#N)nxn,jnn6Y|9/o$8%IA@e0+)fAq 㾶gp=Sޢc')(( ٳ6mrru֭S3 TWh #d9NY.`,@Erb@@k.;C~S@@]>~\ @(b1k… SNr饗:ጌr @dB  @  \SpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H8 % @ PSpQ @ @dB  @  SR9sXj׮-L25@ DQFi@E͕B˓[VT7 @ pNEeJ @ H8 % @ PSpQ @ @dB  @  \T@ @PP@ @)H8)A @@ @&@ @@ @NEeJ @ H 3/'OʶCGdˡR/3C:dgIu3 @@ @.b޵Gr"T)W]Tv%˪T{ۭۚZWWd>I )&k5u_ۡ$🗭)9 U2OK?Tv?)N^o?|Wl)X7|nԢ~ I]ֳkrwue[> @@ |ĉRU,Ӡu`$ 8Y9@r 7reCboq[K)KYr֭'7E6J]u&uvZ4AgkA7׬fwR#}ޡ.ޖZ,_;g;ǣ Ǫ[_toؽ9ߦٚQwo۷]kt2ͯke޼SQw˲[nː+VÇ<=VݻKݺz;vm۶yiF7oΑ#Gdʕr2/#?쇊91y۩·+`B9(XqRS/+(&jd5L~yZ{^r9Nt۹/ul=Z|R߸MҥScn⼴=ްfy,*vg.A_Zp-`Y:%bFh.7?uM*F+yYMaus>5U~22\=._|2sv*2wܰmW^D}޳g5}yݺut驛@A+)d5 _!K'0>q|)]#JOo߾(VsiZTM7k,ՊN.]퉶lטkLlZ-lkW'''ׂglF-=BIZ>ቺٕ"39(Mԑ Ԃ(Iy{2ۯ{\}nD0V69cǎ=:t81VBwڵdMb0?k!,`Ӎ;d~h~rվ h>l<<:_6,K3J;u$HݡmY^Kj[woi{>:']kOEv}ƶ+^J4hT]Ys@؟yydSxK$vƽhDX'[nUFcn3WXk-С{ƍ&>)kvܯ٦;$?D϶$Zh)Q,y7?6/ zKnYωCw*:o<;g b'sج gwTŷ5A51aJIFeR,yxc|(}جԖ;S-;`u"(ڮ[xn7,2Pk}u1 @@D ei"RO"]g?1r_v0lWNzt먞_Wjil7LsNԺ: qPkln  @ G]8T-|0:}~LfANթ>3ob{•W @*̞:@&PޥѸ:iJoW.ӻ̾b]*n j8A /ؼN`UwZs)7v>y N^_.Tּs\]:hO]ױ M^_zW/-X}zP:ۉh[x\?]ϑP홛_5w{f)w ^7Pω\P}+u 7A T>:ʢZ8|T!xӺX(uuȿh^WźE3.@ TfI* u\竣V꿟?Dk_u{S)sݰuVIyv5 vXHc< @:* _;S:dgF*6-Kw`_0_Q}WFy`,󕚆hUl9L1رYJ-p8`Jv0o^tWwkER61Ցg=}9\YLNr mT.P Uwl>1|nj{3O8zUlJ*bB'bܶbyueԅ @@ 2[ `{m-G*f9ma,~S%:FM\^\>X,ւ{Y%S4G u9<=&139y^wZ)ss}v}=H"-~F֭u͕B˓[OEs3 @B@E&˯?UlϗfP.eAങR@Ne: @ g֪UbHΦX@`@ @HN73&xUkBu'nPӨߟ1Ϲ.ѳsP  @@@N,3{'Sʔً !8A @ ' t.p oA5Eg̴ @ '8kݶrkג\+MI쬊hZn0M&m)O /9>=&^F' #Gu͑-;K+XVV(5 G5k,UkՊjW֩2al}wM}lp?",سO; u~p@2ʯ[>Wy,]qmg@ <,Y\lGT -v_^rA^so1Q8mʉAUKD@VjW풛u+Iҭ C-W?m6nx_Z{^4@ -;&kk7(vl5N|ine; `S^uQ=_Y ,ZBWk({9YY>L(>ob~4cslݭc!E/EFi/`/ Ӗ[7C%WSSW/1:vk$9z'Nnr,Ut5DY> ;Vi Vռ[3 RU]ը{<[@qz^yݣBStt> ,ƘD,l.?17K:O[/Rl:,nX) {l `~hs={ȠAN:2ǎM6E؎VvQ671}=`ko{kC=3֟?|;/IǤ,\C&꿃r$!o}]ӡ4];(-#A"mY_2b; iP/WW>ש-+oDB_־]5*juGCU~J?~ԯFM~XѺމ{p`okuG?uom(~H I{wBډ_annJ-dѢE~g_֯__.h$69s>t4|F޿lp4jHL 'm_jZ?p)v?>KKݭU )4>+߬Y3- xq]R=]&br߮SkWJkd>Շ+{_*w|ح*^` t0w|yaz'csױ)͛'.|NN#R[o$r66oڴ,DOg|osZ6K6Cm8ӕF9^Q؟C*% (f6KYM,ҴF_ѡܿ_uٳH\B @Ns{yFo pHO,X曽)suM߹[>yS먒 u hR?3CvސAV(C X4dWST:[vJߞ`߉$:=_pZ0W>|xTʯM{\l,X$XN @,ZgwzwZvBmL&!,vQo,K[ ͂s;s,{{Z| VNbҷqC_wwt?07"nbl# @2U %w,oo,v]G&Sze_V( E8!Z?iپ,0MZ{:[jthWg[kbG|r$5灹vas=3(v9z籭3ڬ)WFdi{З'mU $ @CFwOwO ̽MۜbGqM+'ퟝkysmQc˼lF6W'NQmZ}fo5@wpa^s4Ђ]̹O8I^R՚y2YU1 @IDATa&mgw@ &\Z{'zRp<8g0qi}rM)b@]O[]ֶ/b ^P گ7]؝KVϢ_Z%Y>#j~yaiLfCQ ~ @,\ @@(L}u~Mxv]y:3u|Hvrʯp6$qn$8pQiLB*R p .;%S$bHe7S]wmMAu܇T^y>ӒUȳe`ӾU~3m,سWٍ!@@9m ٜEʈ"ӄ p.'Sff7H[4Uj=GePǞ{oLҜmOVS֨4=M_n"45')C5vu U&nXBH LoQjIu ۮnej7rje:nkxQqSK/jKK{VDmz;V\2QRc1 @ݴ7\[;~>PSp393TEA}۽~UjLQsʋsꜧ =^WXWCW% X'w?,bV_[*LYE+Z2\d2obn";3S&n)C7u˻N#~Lm7?^;j]bynjo{pg=*fU%~ؗ}Ɍ/`. DC`KI[w%˹^K!?ѳsk Ԗ/Խ#۲]]Z׵"eϕk7.8~\˵JuEoLu^,]wD^ ~mO+:gp3+ɧ[2.&^lA0Ιg~[j/}‰P>,f?999reIL%=GɡCBU)S{/iٲer3gΔKIËYu& [q˖-R{zP bx%L^X UO?7pCu΅Dt%瓖De?ߧ{q֪YSK:ǩֺU=ߪ2X]%UcJFAkR,"ւr01z?֛$l: X%TP`mX׵Ȃw%JQ,ڱzѴgc/0(ֳ61q8~X>ZѮkl1[{;Ͽh??!?^cNs=z6(>O @'b ^ 4%6v^[~/;VuE ʰ"SM-m+3XzFmm}Dc)R`W 4  qPZE5FkYڠhīE8H_vj1o^-ϺBs_~Vs/ܳ_s tH4hoå=7>"E6ig5J-O,X,-w/tJD3s@AČ'H<uԩG,b~dgϥ텸}╾sہ7rV4eۣ{CMq x4O`I񊐁,*Kv[e]G;DOK=] fgt+۞~UtW,Or(9xzONR) @qG^֭rs֝bFFÎߒ2mD6RX2'c:T(}a<7X@m^ױmj= >w=yB-_پ>xTlJIcG.]ۧCpU~h}ni+OeIL{ٲPCrLs" @" ܷ4/GKS>V$6$]GG='!ylS7YV۲WOV(rA}y"kÆdMGdzMѭoonrZ *PfT:R|K犵N>ac'^]Rfj۷qF.|k,8~gf},Hz1h+ntTX:۲|kK*rdR=snyUsI[[ @@U@ QyTFHX #BlLA(c}6jxw9]KcAi$@Yl$iSr̝^۞7/:W7iuϭ:P}YҟJT\z-N{{ͪ<~r>bʰ6\ۡB'[5X摈gV[[^ sb=b/L9~jS`_yӧ=Zm~6Lr THkdǑ2M#y# @l54JH8:USYp6 *۷ࠣZ*Pֻ͚zi@ 6TPX~XoVwܭP7徺߷p%\"xYۗWol_n=2&lN^uu)r;'4Glb[L7SRXX(yyyuZ) @`? @:WWUb @ 9 ¨ @ @ P @ @ 9 '0*@ @H09@ @HNNuaTPl*>wMUh_4@ d!,+8 P:d=@ \i+ @ 4&Ƌ!@ tZm @ @ 3u@ @D8VB @Hc(iL @@: R:6sMz'NmȖC^ftΒu$  @Jqq )W]$McPz_*u22|ĭ;:ÿO7WפʑbyVyyzk,V\ܦ_ "YF/['ptчڶ zMbk9 @iMuU~]0N.j[sf .*D'8i^~{~P2Kvsz9Q?۶K>ݾS+JWm_N䌦B5[k{l"tlZKjq Vum%8cqX@9Y97[xx#cjdO6o 'M/C5 Q2Ck9Usishө>/k*/kkNmZ%uT{hq-޽j {DÇѣ'\ i r"&PPpM;+z ߿_lgy鳂?>'NyEz;?Y%j;XriԨQi=%Ռs%JP|UM9@uj x٠?R-%^RgIbʯUŵ/]8T+'.k6jùP(vS+t\ʭYn @d/ ?KQ/گ\Ԃ^:Y;Y&\XX(yyyuk.O04 @ ħeOoЛ(>ZQ3Zk^8eK"I5Zm/{mڞ<'=kvzZpZSqìK${Gus4zˠw|M `W2j)1h&fjKҦn"ӄ4YDLӂIIFKcF=6+oo1w╥n[}΁ewv>LO} qmy;Qq\u^rzugi*sEl=['TTseX&Njlm eOּH'mӕm9_, @013|C`<[Zʫ?j$՟3C'WR)~}ZQgku_?Piri-wt${Z{:+\-s.K[k|_.esUua8[sպ+ʀ>g+C ,/.h&A~#5TWi :~~ 'R pJ.kL )>7{k嚂;8 wɒ*[E%^e lj $R B  PB ?B`lwrf[e]V[f<ݝs;{Nm-KZ֗ 7Gq,FǚeO3<5`/?rbUS,g媗ztoqߗi`_˒r@oope33w8ISHHHH {dV~hy}ym:qlbHt9τr>sr<|ь ^U#r+oڗ maW²7S7+RvFhS}뭽e%G sJ䯮ϐ?/.)ҎQ5<}EMZm>mBBh]_9mbdm-   $ߪ bmePlR/Bv88 Oڙ-3Y=[UЌj<2JDFAr#k*WG/l6@˫xߒV&_w$]4 HB<5y[i;zLm,Wf;<ë 8ª1wKc.ekh#F$@$@$@$@UI@v 3tniK4"ZGR`Tл{3l-C9KRQo/DhUߵhʷţ`FT ٭!hIj"37I :ĸ5WO!9u?ڧƁ>/ջWo]eC{,צu$RmG 7G> `f Nzߠv.#    J%J[3;GƼ7F+#KRt^ IHHHH AS#caC O?b3V~;ڔg1h\bճ2Fc*v+w9(%[!t;4ԩ Al˷>(7Tcbb$77W$3$)Y \O$@$@$@$@  :], T+ V!     ,E T+tp0$@$@$@$@$@$@EȲ_      jEZHHHHHHPWYK$@$@$@$@$@$PPW T "~IHHHHH ju:8      "@\Yd/ @"@\NC$@$@$@$@$@$PY(+,%     V(`HHHHHH*@m%-Y天6. 5_KGۄjᎼ|itwG NȤog!}]ڱ<:~]J>߶jN8yd}Đr]Ύ e=vddIFҥi\$K:umIHHHH (CCHIOvuL,/<)_A>ܲC.??4S~_r͏ m_]!#c圶dNVƑ^A6a'N݋V fyG2JM$1 _ @Rܙ?M6&yT׭( ͖Շ=׺ieqk [3ED#͊O{k\VxLv?cu@vIR;Bp`֞>gy(;R:DWP' $@T m䵑CʽqQC{DZ+th}dsNP/8D:'Oʯg-Şmxi嵭YxL>jn<6-~" ߿U w"۴UXB;.R` 3tڞ/'5-QF_tMuV$@ `~j vэp˫Ņg_f~C~ݵSC{J򲎎o-յL*oLeeޣY 7!įYoVڞ);$|&  A-jڵQx]8#ES2׆\L T}h j}[6{u>Mfw3wXhKgP sR|i!Ǖjr5 Um>RܯHHH;d]#<ůu~KnDyQmH4zK0&dAP8)QFԛmTOךBsSNNJvR$ށ=a&{3޾` lwSo fnz Ay~}{hf_co)uUqf6Vm#%B=ՏE{}qٓe}I3+!g  (M`xb LC W 0?5ҾMa]5)#T.]\^Nh&9Q(= Y $[flBfڇY:!K/q[Ϯ(UneOwݬK]`B_F_Fc4WEL$@$@5@F9!eM5bd &@ T1?hM6 p;UE"=on+Ɛ63s%gR~Fb(lx57Vó_Q+FTUX1ݬ?# p/@Fꝶs@0۷ބHOOԲ&MH||˻v풣G}M:H}Mdϲee ݎ;ak???wM:^CNߧo'x^nJߋ+H #x8gRiْ}mfI4e/AܩaF!ԮEBm6 0.$f=`dx^^axQ uc%fY'N%K8. d֬Y2 @tbz}?:L6md^2 !W,nz_ ^kɒ]y&^;vH/ AZ--4BÈ<:V:)^&uu~̊6Ro_UYtv]C z#ce&—s\Ah"ӊf9V}MI x,::گ8o߾=خ]ЧO 4h߾$,|NJJcǎ)y{?Ͽ?^;yoTR[My^Wm&^’Tx#N.Ni)zTṎ́552> m!:> w*[# hbk;z{6mrkiVku x ɻLR|UJjTkX`čZ=f.pXHnn$$$%.e$@$@$P,:(da)[> x!h/PߪyH: $`Z_.:/x 88drTw]FB\hfEZ ~?F֫ݟi QHdQC&Pڭqzas#h2 @Y5*Qo(gwj0(ږr0a[w~9~vi?lK7K͢5~0?j t6y,^ `n*¢FJc[5 vfh k7Y<,%ADSY:wy>nPwƞw^q.1fSwCz`C[N^s#   ZL)NoE6]~ؽO p0-;$bJ*@Ea5]b9P\Feڕن 7Sdek ֑Kɠ_xRf/?7ؼC5$=5͋ i(/{@3+Ijry&$2}uueHR#/hKzWU3QwqRND_۵?e5RxS١ 7qίBKmd{98Kڡl+mkˍGJ“S_tiMϬmv,8Fھ2b>p݅ ƐkM~Z fms[ mo{d@`ca.Q*1douFNN xP͜-bu15t  w3ynLBÉᆈAې )w-ZH7XN?\ zM|yza bnwK-_k6{&`xsP04^e+|ݻ_5sijߩ26Us^̤&і7 -Rm\-{+K$jl}gv~+gs(mbj"t"7>ߖ)KU Ϛ<;pž)C{73"^CCP&kehXYQL[[ݻww7   b`U($pPf5Dŵ[ަtXicڡI=^ i8+7ɥ GE=VaY5)`+4_#~4Ծy*|6拲>5DAuV F?h='|mR!n)ǨŹ#peSdZBK'K2m^-~K9Ek/!S3#]U}jG]4$zv0>$^sz!근c)N3,4  %7fDm͓zӟF$P} PW¹N0O`ۧ3u$+0m*9z?߅(!yлcdh.G-蝚aKN<~O4| ٘7k#Iӆs o0ǹ2 u1!(KdW /~X H9W=ҡ'Oʖ-[u"TKZZLf͚I.eoxF/$w!ʼnvf[KB(x~\#'~~ 4غ҄]ԈWEW R7T 3IKwF[Ջ Sg 2!1^v'*%[CrAc_D˟m?pBT%¥U!1xwxVvZsg,q񚶾3k1O2/從`ra_Z3egYeL[̹_w6LϦ/xorOS36mlT 6M:uݙlvTC}#s9J=pqIHHLUE%gVsې T- xo2oB ?3ɧٓyT!9ԣyνV]GWcH0uּQq^{Ų3_ EB_WO0,S(^vO1$ Ev  4Yq1Ⱦޱ[az㣢Lq3>S4  p^hϥ~H/jz:ihzW􎼣DN׼WNˈIsH񈇕!Rt419D360\![ }eԦ+WUd} ĒtBs%B]@74*l ^&3~yLbe 7~1ٞW\N$@$@Սs&>s#u@j:b# J'@\˷NrHH6[nz.ջӤT%$T< Уa`daFa)Eh56oW@K5[;! C%x^YO >ZT!\#uSC1Aw-4NC|ԝ%.jrxg?K~So`h kM΅G0[wh-c[PF$@$@J7p3Lҏ(hnzO w<]wz'~(9F48$;1J蠮fx*.Abhfm>޲Cn2>0<0.02Uh]3Ge Q]E( :;`yQ8Tk{o+ /7E:DŽ1=c,n|oo':G<!vv776ƹ^?{i%5|TrHHH C5~<Hv7;T4)I6+s$PY|gD=_G&wnXV[Bvi*qam/R {'cR!͎єDUMrN]ٙ!ꗄ7{hY%N&Bmdž=jle.^Zo'!<7sp˛=5ؽZRHm77ew-ZiSǘot8V  'P͍&L$YθG ůlCՌ=؇~2v k^$MG{uw!dFC~ZC%w۶um{~SU`vs|7,?pH~>cݿbftHHHHBH80Cޱp5SSx4C ;:5>W*|Ü%F* t.n9 (&}wrPSq|f 㭬 kH ~KC0vx@gS'X-4ȼ y9C'?^^̱5ai>tP;Fظ=|& FHHHHH 0"<(W&E_~ Gnd拏#+GΖvE #~!zh*=dz AOVcFB_^l|4~tWO $M7aWܥok 7:u,pX1$Z8c$    :Z⦴+L-*xfEvB}Y:u$B%~}Il)}[6t,m"#|m$@$@$@$@$P|ڭapgՉ"Y*r^#'N8ݴF{m}6r-ܠ㛱{n\QЫī( $@|&Ѿ\Ζ*j}7 [}ڨǷĩ7^);v["xz1O`tmnʼnSrÜ%n믭Yn6yhYQݺrqǶ2X=dVҬCr񄳥u-qK{vO+<)9' `A͎:VxQq;uK3$> @rѓE֠ض˱LVۮw,\i~}# pѷ8H~i4=r`ujԛ4V|KlznV~~KGKe{cEErjwq(}$@$@5n.?pHwh%-uZMw<" 3J 3: @xjY@#_Bx)GK$PPW3R ӳyS--i ' H-:Ksr=*U?)/jP@fTǰ2c.b=F_Y ek*+t ]{9Kdh16N^94G/ dvɧPξ B̫~ZF#؉!^~GV p,$?K=%tNHHŽ$:w^2Y=kPknoɕVu1WWx?U&:DZ5[Lu.<0dGe;ީgbo968μ(LCMHP{Q&ÌDVQEB0Jle b~HH \ j 4_}>jA۱= l> \i Rƒ`^+(`4#c2B6_Yܿ\']}H!yl˦2vhRV£}%оAld^|nQRw}qفc ^.𜬡4  G`~ؾ!0mB0۰- PiOQML0"-[s=^ƿj!e/œ$Wd6/kb_6Vk>aNh2 J.ѹͷjV!Ԟ;k\<};B..Eki"x z|+ Jӆ%[{elΑy.Bil0nDTԎ?._}Un4i"#G~JLYѣCz255UZ|͚5m6G}Qrrt߿_,Y"ԃx<]~,(˜$eh0sm?^joĉRa5s=?Si_քA{zה*0!:s;\!fklHgdVG>:z %F\!Fmw^Y/'Eyŷ&W4,EwQMoB`[kY32CZDDL4)`7h:K.D y.m Gyؗ93%%Eu???W~lIIJu0끝;ˤɁYy׿ykР8_ F^pw[kL f}蔕[^NlKn0xpytyI*onN,/KCfdO}Us`2 :4il9a Do}&6k\j76MV[uAVPx5 @h6PdX7T$eowi!Cmؗ5oTٔ@6Ts5=.q̯7ַyLK<9p$[8xf~FDj ·ٷg{9&_#}r  M~-u8SoۣZ"M@r= @xqe&hzn-O 4l۝d6;Dfɲޢ8RG7x_rہDX=)Tkb;cI_WUw0e3OGr]4_Y_s\%gO> T_AƨT IՁq=RHng$ ƃg`z ^:7ǩ>x$Fv*dc5|^>q׸f[ޮbNW0_fWL͂"K/JH?,Gm}M .ۀ1VnǍpi[ BeSuFn@#%T]  0&0*|3q5M+YbHyBsLlm5 @(F .JJ5I "+堆SdYz}ZSdEr! q]F1#BҌ_΅+xO=8v G GL`1ۼU\F OzmӸ~=ycT%6p- G>.'T7,i֨n\IHHLG۰ ]2q\.PubgNIm>޲C[}HڨǷxa-zs`z1O`tmno^LߵGn_¼6Ұn]Yq𰼳i=Y$W͜// $ujnkn6yhYn{qǶ2Xof1k4\8m|>mc @k+JMzC3ȝ6?,|+۴5t;dO$@$P PWTNjZ0Vj&$X]{Hn>y}Y_ӥzu%Շ<MEz}! __~9zsol-Wwx6{  J {P.>[ k47C$ϟ[/FHj@״3fǃ CYm6Q3 -gB?֨j{xD1WWh&Wk/q"+ DDaW͐4qԱ% |ۍTT)o?;U 9rℕsv|\!TySNl8#}/'Dz;'V~3NomßkL# \7]"5{7c$6pҜmHH l Pټ퉖 M4EC;_l+{zV 4cgm* P1lLKk:=sWֱ+kY;Ɛ\9Kdh16N^9T"ut0dTN ɧPvCy$ßg{ݐX`4Zt ƏXg}?O #%'J=Tq{͏ &Ɗ >}zSn^5s[h\nؿ966Ǐ[4Tea[!YH ӞYQ{Q 0y<چIHG߮w0[FZF$@5=5ɱ]i RƒMgx{knǼVÅ>sNdLFv"+V8 ff2^!:u}ں|A^=*~8Ɗzo~xq!lY1Cٚ/_l%k4\dZZ*4$ZxO~eDI `do'yP V=nZזEN"sJ57:1'c44hP|ļqbN{5}PwA7g^x}^ l+*KzI\ ߜ QML0S-9U/_]i}}2}aKg+gd6/kb_6Vk>aNlbJ%:dP6P Oc-x뎐 t|¢4»شcMg1hoJcǎɇ~ W_ [F-%޶={YƾSN2l02m&+???:Rtwn _ ӲHvk+#"+ذ8!  ݛeyi12o`vuK#D9YU1*jj&B3< ؝}e!I)NSq0,wwrHcB/Ԫz6[H QFϦݓ~h۽Y`;6vUټ/3R_,22ԸGB1}O'̘>A7lXy<[o/~kz+u ?Mgsb׾'ϐY^Gq@ؙwT|Zg Z7|ϧ[YگxQ&2ϘT BLi+LUI}^>P~ڹ{Lsչ]pфRSܞ]u/}iE7?5ɾn{晭 %p<5W怱4Gy_;2`^7vYO8J111+ Y;IH@_|'p8Ul_$@$PSvԔ#qTk[w0ٲAٚajhے[ "%ɫmo 1cӾfi1ɼT?ߝ*~-eT:P5yָgJJ82L05V Gc1纚|& pN71l`8RdBbl˶$@$Jbac&0h7ٓwPGfXoٚ^,{2C*o 4T֛!ƁXMۊ>Ի^ Ljůqta7Hq~{v&6knަ+G% ln]Fhx3ntHH&(q䱅:G\Zߚy&sj떎6׽owiѨĻuuΩ/kި$ r-9X7~gj_1$I0gi֐$[fT˔BA}r w#[˕Z}ekC۳  p8Kd/%wV<,_k:@fiŸ9&9ޓeG >²ہDX=)s5ť0ä dt]4'3x!1d6feBTc7GF$@$PI/9'N7Q{Cވk$z-ב @8U Ɗg`z1^]}H@6iTj`!4f[ޮ"P̉ҬC!:J>;g4 #dU_"~QBqg9/4P W\ }v7^͛_2F#Ɋ=dbd,\smHH{迣Zi6]쮋VAxh`oЖs > l5](.[cKP.ujl" yYk69J\9c%`vq&B6ko/*#BEw.\i% ~pB#5T:MKC3u9mѝWĕ+eMl=V gDc[oCWm>?F$@UB7tktnrڏԁ-EU@ "3Tι$C lkvRj/ ]}/KH⓽_Up C_l{'|F몥uv{hY%~lR^m}͜h=aO;}7E ȰĨH ]~{lIC[ nd|A$@UF>g  U LrG$@$PE"܍s^ k_OpށÃz[ٷ3IۿUKAhk6kFjߪuVXQྚ̫u}WzN$dļt/wbLBk[ |NU-;ySG<kNN_/$RIv2V~95a׿қ(C/z^HHHHH (CA}޷dg*2[9/)DXbNq2cܾL[<#«|V"B;:UT:{5YudqĽt Ty;c ޟj8Dj}慺 ǝ,7ϯ,^,?w:Mr]ɹ<m!ZL$@$@$@$@E!ЕE@\Hw]ڱ>y3@`cZ@IDATN5){Y2؈_dnS{{L>PTqV&Ȉ_5lĞ1mPJk"|Ƥ-M\B׈_uz+B=ǀt{uf.xѶz{v-ߓ @UsZ*w}$yUH"20Xg^w8G0HCV@HƵM"mg#<cEv` hM>_ `\IHH`7g{    ZL|: # pQ&NQl[=3r9{z\oPܣك$iŏ/-*We^/jWF ܼ]SEy`w$@$@ Gob2oޓUf9{$y\s>D֯W  @M#,5Vn,oIUQS쏝_s=WoL~=Sv ^9awPHC\aI)ŸaQ,gמP|4yg' HN8~LQ?oTuHj:zk h#$/}e~c iSNlW/#®:꬏KJn՟o˔pb*D/g6Ә'nw[U D%GT,SHsڡ#ƭsɹKydy d{`lsI?e7 h&uta2 p N_hbcbş;XO[,z#/_ kF>#o):,1HH'pB~1s:Dܦ^9$PS' &@֧ g*% (}q]5oĩP\3Z=ɳ޾>C~=Yb{H,T4Xlmv&Y2B̍mn'KXMּ:7^^ɎM yGcj <G< afGu:溽f "̪<*gоX=l;tnI͐XMKϸdk_ﺑ! [|7B: T#q(L5%oPJ)Cŧf/)5k@~ҩ%2#2 #wm`=kKM̅~TY7WITw _9 a en'GNa0wz2p`٢β^'ڴd`x_~UwٯD=tXkz3e`qӶe+D;qzK{=zu띈yx!H y? {s<.9nC$.(LUqbN'D^30<0S:UEg{\'j +*FH5뗰 ]x!q Ma+-]dVȅ׿ܢoWf f.U*lU\]3,:z+~wmBYˈVEp&ڳgOJTTV-G 9r|@7o.gyJodee 矟Ȧ5sA8Nٽﵕ?^3'...o0u5'wDF# nm~e/V%r/j$mHX_h,ó6n s>I#/i#]blb+%-58TnAzaDY rճn,S{Ҫ̙3ve]WX˔)Seo*;w/*z֬Yr@qC^رc)Y.˖-+Y矟4nE:x[}ڊ tm~,?W\q4@E `s(j X]۵yu;At,+8k pzne'\M|}.>OPn#4D'cf^Vsێ퉿Pw/ɈԩS@F6$%%>۴i# =<~@?y {A΍RjEKV.7ᅭ^EJ-R)u 2gIolSk@K*kwչx3:!Q mܻ@՚cu9Ukݍ+EG ePp` ;hs t=2[|@h 6BǍg3~ 6B}x8%%E!Lz̘1 CO5X90=b[udig_)\;dδ͕חYdTHY}#lۗ#_^yO ',^)VoQ!<>1N&jb&*ޑjeXo ?PBa^%PBM@؊$@$@ WyY$4 g<㨎?>[rኻM7BB I$Z  ލzשKwϼӮ^N'}~N3oB@_|8_͘_`42+g&z]5o2Sw`wk-TKbV:{2^ kȮc a}}(yq$ɠofsA9:E+q64a`Q@z1(xk7|#˜Ľyيtm>JzqhlZrQW%~B;uYݡVoӁmYӅ*$Bf_I^F,:9t7u-ߺۧAsT^B p/Y4ۣͧ˜|M;ߟ=4ڱ*ت=v.~秓ǒY_Lo?EYSXBqTHͭ'(\>xvW>cZcۼo\Hp2@xپ7l|dR~s B: ~ JT_鶱~D;7U~[K-t(AVO,ba|HzatY9q:lz%*\l %mdjV`r ky{ y}T?Y %)  ! +.\11P$[y"uҚK҅kDc& p/noM^[M.˃ nR.ǚLD@IZ*YB21z5U$GB?tŦ$*\uXIbD]nXV49\eO+zaOn0*8$Ne%#&f'rT )?稸ghޚK#@j9_xmP|1.c+ u'b%ޚ-# ˓iME^6,s[f2]yPm;o=UZpTY`n;5 !9N}PM`5(_9D#,eorUkJ=voXwmcu|EQ,Cd- (V|AOwwNrx'L0&@%Mf&sELȑ-Z[q[~r4㵪HcGOK<C\-BOO0XdX\{%°JMW (7z+?hIy7>Nz]ʛj.:FcQˮc Rl?=&zcO͛NpR~5-_!D놀@w tw㦳W8պKwBV*  lW^|Fc%sM+!p)ȕ- UVkW6q*p*bI(|eX;ĺ,///CwE/cq~l!6aImG@Z}RChJrgkyٟ;b%5ݑŚ,r{-ulgkr׹nb,ʿqܑ L&C199, R^^8{K =&p-+ytNCcB poY)@@@@@@Sw P{Ja      "S@@@@@@[V (‡      ޲R'@@>4-|^$k0IttݰAPpp     `?fF?[Vg+~ 枫/1*SsЏo?:H32     `?)1*&e,d bWԘhuMVvWRZ#Zkz]eoϣV}'%sizv     `?mRF}|9n`eӅh٠~uC)tP>͘LKU5n[6{][>x IJts𙀍QtbM A@ &ݲ[W~橀Wf3@/s6-s{cge   :#Npl jMs#}2ݶC!@ cF@^=w>jSw3'kѓTRߠ@@xjaGJ>f+Ҧ8vdЭ_lz6t=X#l))Yْ@L_59:Ʀشdq`o221RXGioE5=g#Q".TLM:F\\EŔliuAm))Wk1ǝe>3T]fc@z*vG9 7uҹ< @' t470[ECںB) v$ M;Ԋ<0mqT4ՅD){YI@}l2y4-g|26syטּqR.쮝(o7_t-J;*2w8e4:+3ee J*>5o:]9d6EH&ҙuӺ$ n>D\OmW+Y#WR@p65Uk[C͝Dҽ|xT08dX,KyyyK8CbrsPz_mP@@?ǫju'i{2ѦӨ6USUl=Ut+|e ]~hO +mvFYqn|^4NQ\EVZ UȊ{cR\W VӘp} Qd5QZA}5qZ)cʊf:Vgq JyݥK)`*OOqdgMĚxR~;ns9RmQrQ 5lլ]#o{HӯNMzZSXBE ~ 22%Y]k8&A@7x`^Ծ#1ýzq1(O{ʯYzzL@LFyDݾn+հ!,u&Xsŕx'Wb$qh -ƚUPV:Y+J)ёEw6"'")u௼'JS~}`_g٤t&JJ<~(Եer 4 ,ݱۣQbd$/bk{@(s ůHk>^a){Q8X  HJDoMC?2yA\Hٹ_A/3_qk*$ܰV\P 5nރ+"j2NeH ]ܶ` sQ~\?p~s%HXZwŴ6+"bav5,Оr\X=(vb/(Z7cr|NnA\MbgOuP~e(?nc]pPC\5Kt0Qk3G޳gqbb" <5c_~IuukfĈ|ἴ i.[wzgWF:z(ڼ'LҋqXfS[ƎKXG pGg-=>]7l=SXF5U>;*ʊ bX]YѦ+2ʪ< luc(%cQ~΁$jܧ? *8f'Rkݦ%蓿". ]kylIW53 r%9r*i&AAA-]Xr|ڱcK?TGC[%TG؟7BO{XM*Id?ާ)  "OɾW;'i+6ƱJ[٦,NJte^;>0<$(QLZغ b&-bS2b-ܒ7usDv']FCfW`M4u9:j_:n'%%yT~:ӧO9>@rWΧMF.e_~.Æ S_+EpXOʯ=` {h|3~f3V\i5h(9LlWTlj,"Ѥ J.eWVeXr5K2DV> ^rNd}˲gJ%(XZK幅Wnڨlyvh\}bkTd|u4\G V\cfsr' pS>bGd{c{ %ʠx~Zhla+X.!ڼn|X1>嵫H"wFڂ@ gք(~ z\.M~6D\l]ADMMDaIq۾^q)~=X+QꫫqIN0]Tj#M˧}sdC^LMmF\O<8:>[A?cH@֧4O^#mN^k   M Jo}ۘ gΙ~4Z]tCYf=YSGc6NqeM2bWz :}i&'{HER&sDM$ED feNKاWG у+OtZ^$ϧbx_/S^]}>m/8;˟ K+XYt-9 >585[D;9:&Nh徼O`O?>,bʪz.kusI M~u:5ATB@b) /9Ţ>=du$D߶&VZN]Q:)+*Uu$ӯ TdtYf7+I.޷u}:㉔V9 rѻV*yОK|W\CO8 bu5i;Ӧ6nEH\˝%ܿy ȹoϻc#@O# < =]FH?~aJ)q%vvO]NcI_o5]~[]%,Qo[Eww[ 7[gJ v Vo11j(Ipe$y0IU磳7?H%`iq)YkuN,zl]Gmyk#֝tźX52ّZǎm@@@@@@܃8XOR~Mhs!6*IШ.ZDNMZc\OZ_V7'w!VsYLũ~ ł+lQ`_Z;75NA%ƫY-A@@@@@ 4:4QE8IS/3;A&A`A٩q$rڥH"7C@@@@@@л@r@@@@@@\]@@@@@@  @E-%      !H p.*n @@@@@@`W&(APCpQqK      2A @@\TOtڭq^螳{ڑ* ]su-+6>]H3GvWM9 בnztMetQjL4N_ң>= MN_yC#uY^A_VPQ} LLIG:5jEG?hyk S'xk     %w ֞r?GO k8Oy}I*a%JVfJ-VFUBJ*u[5wuݲmv׿?BO|z1)4oCQO+Ou0XmEE__'oc/Oo>X?Ɓwft-&fx~y>>lͤqtRCWJUkΡQz}wR~?!]W(.'"I\P{XM/OQPBu Գnf3=mt-K{*|ꄥ~aO/IuhIc5RЦ\t"u|J2r8 ȃcyXMrHR"%Fϯ3 Fֲ݆Kj_ms8bpD/Yf^+}% T٭Ou?n+#ഉvU(zWY%MJ}b   w$)/Dg"sh@@ HM;A >dH%}ﱛHrT]2/:[Y6Wv[1~ezGfRf}vs+*4r~| j *ts/!V8QfMaZާ^e80{SWb."UCz'-(ՕCP\di:HJ4%Z7ɊX3:+Y\d{ſ>k-54Q$+ur}gW@5uRkԼ_nGmK+] =]=U-k^y쩙Ts8j\I~];+g;J+ZKlGF7aNq@@ ` eN-M;[b*IYFk)՛n#k{6Xᖟb|.zȨliܽJV4 sh[?D#]DvƩ;v8} %ur҉;#ogeVsi^_ oZغ NG_%8AF-$@w`om.{~bwa9z b<1=&fT&]xC3&M#Ӆ4tumgN_6H/yX{$jp`T-ҕs4#ǗOۮ8~8atS크2.-.i 7o;M_rT}DbC<֖ݟv   1w[H V/>EA@M:ȧ Hݓy-y(,yc"̷uc4p!əSp[gGs.JaɮI++_E/g>x<lύsrr*gY=؜/=ySRqX_^:'NxU?/wآ:߶m6|[ec_V@݉;ljVqt/i~h^_Gp$i_r~WQ)0V=uh"cٺm̱9z ?*ȃKGkߪG.{E~ ݊ 9o8ʫW>"$625k=|A2U$*KA$|SNHdbiAFg\0s^<Փ _<ɏ79z7ϝGsfځ]տF?GF͠xDWWF (\k9k @@ `$^W8[Kel4߮mJrV(;=}Y$qacfcf Kɻ([y+ܟ0sϤg/{%rJZϛg-f Ћ <io.k6rf^lq5sH .={\D y|ŦԾ8)#9!@@ xui G]u2!=ghq$qF;>-r%AaA݅h dϔq#8C\Ź5n}>cw|N&?Di &쏩;7ЃLf7WQȼ  ?ΞJgK'NKeq>otD ':g5 % DfMm W\ܤ&+רjnKӳ2(M@,9+ H45bu- G{V{ڸ*c=]$ 7@@˧N3,t\80R9{.uf?; ؂,OEwV&ܾtj$˧I ۟]|d>euNŲ)f9#MVt}Dsu nf`ɷ?)%gQ+&(NJBWH8pTYeki/U<߶v [9o&X9ir:zJں ~]^=Gmz]S@ .dxLXV!     ln=CT70ܿN93 gS`WJY$E\$Hr6w9jv׫%qv@ pN`)d?0N)R0Gn Lrss)/Ͼ u&@' @$@4.(@@@@ :V      `J )\%PCi5q/      P"8V      `J )\%PCi5q/      P"8V      `J )\a@IDAT%PCi5q/      P"8V      `J .t@އ\枻"b|;/weL}ÝVUip^Xz% E5mӑ PKi J~Hh    !A pXBU^[m~nk,VRKUK'^/#j+6m;85mG Q?RoPSd\Xjkt38@>7n[f*wPxtzFר]wDlE8j%1`k*UZm d9W9,e{b3g; @ @8; 2kSyۈaY\˷ j&&[;uymϧ:V+=@-5jWRERThdLyl: @sQj,]GV J1q66@ @>sRٖ[IaJ #r)yR*tA.P)~Yas^ڣ1Xu5oti,REC͊p ?(pp~WQڤ Gʚ2Onm( !@&P}I*Zԭ+6R۩dУP# p/\Q[Knf"-Vn))&k%?Sid+cU| >dg-QWU5Ǟ{s2m ~} G)ѮY6T 8BE󑓎K'(^N@c+vħ-Rg}J  ' ڃj ֟vt-1Zڜ 9}ϓn&6\si6iwxUd;e蔉k?zݽT666t _`J555Jԏ/c[,jh=«H#?P:צ>P!T}1,0BvAov ;,\>݂mOjl9~^_%CpV4iekQ-Ә̳ci/w?_Tf^{+HupK$}cH{뫫ԝЇ;mjOz/ukNYX6..JGEEyT~Qll,]qm\Nf K!C_~>[qXOʯd|YY.2P{@ =/m9b楺5Mdoxt:{S +D+%*qssns-5b/rr綖jrt߫^ɏfvM+adyoupښ9@i}!ܐ%ؖ(U\R\MW-%mљtk+i=P"4qq7@Q[+$^{ՋNLکW{>:gnw(̚xju5",)lMel5vb:Hxd[ڗ͆IKqK+MEZJJm xkkS{%%z,Vp%Fz.HU~{̋SWtK^o9@:8׹$ ת  IP; 0#]%%/"ʯ&Qڡ++?]-)c'^b3L{Blk,՟ G}{N#>OG_cm; RJ`)Wʝݟ =%L{Udk % Xc.$ HC Pl},]ZuMy-Tu6h뚁BÏwRR v`WuZT9%ZD\S'Lk  2&cxGiGZO5ǟ%M:W6Y)#Tw50xeV,@5]@Q)F5=TaZ幕_+ǵYs[J9 $t=Wjm}@@@@"g7̲߶"y[a$GK5 NCt =јSmήYgbҧ ~WjV3{,Q]nP IxCifΦH 3"6b.8p     " F712g\빑IPymSRjءY" ?7K )ks @@@@^eXXuyoQ0LN > kIfxbm, 鷶ԺلlW WPx-CiϊBÏWX)ܪn]y_yQz}S?+o5WVcښԫEMՙ4`kS5~lP+)i7sw şDNrWe     p ;_ pݩWu. ɖ:j*HUKcv|Rg)%ss6=u_/wAXDϻuٚ*)<:մyC'|]\g+@@@@d!E+E6mkP}g{ <ER;n%>GJ-JP]'?Fe[oUU~K;9"V]eiRRwʷ#fc%k,@q9v%"Qi:=.]T܉ե>eJ-@@ سIKPKC!oI六-JeW@@OiOs˹Sgu!{):}OmP Y_?$~l`3i`˄&C@@:G@b@ǑԴ#نUj5t_I tT m}"FEZʩH % -!Dyl9?G-)\l9̮r)V4NRM"<[8r#)kiLu/)c]t~ dqj&Z v[/UﷅJ$6{:?Q@+ɾeƁq!U3ݟe̸K=6 gR8mn#nҚLF9qP/}S]إRʓ|l:(IlOs֟WRuSTRY€,hз9MnmR?P>V8lMښ+X:,ߧ ŊWsivRWYNHHkՏ3gޏPAj4J;ti~G2B," gg\"JnŮtzGLqPKq75;Vx*7|ٯꆯHbѭ; R_@q9^TDLp;_,s#Y_S+G͎PP@{5Ky*SկP@@Cڵ5ydpζP{5AfkH\y#jwYz(aul"p% aOc/9dJ.ښIoK檽Ti^&5Rh]w0M6VJpګT_vǝ}.׺n}˜:W ۡ,e[oS 0_?\+v߭4h}>8}4sQ%}//O q}(XI7ɡ.MeN:7o=AX` bL+1Q\e'EjOJJX`>t1S# ݠ E(}& +fqw֔HwjNsh:W~:;Un9gXܒgەnqG-tfz]5dF-qWJԻw%,>u.|-}el`X>ͪH3HCq$e/HľJ}*yBUO? v|k?AGP];va;+ _ kZqkWl8v7ϜOvKԆQs #R~#F555^PTHMMM$?HDDy*sZOOک)}"?7P'UM?|$&鍙!MJ)CV֤aqZVMZR'p,/"{4I+$N_R5q)ks<^>,~hT;\ICCoc"_Q W}YV/_7o 8իEҟI=J6lTD;i'_|Ug4ʝ_?|sx;IXE$(%n`-s\>H~+OZHVvuQWF&a7=ӲWI)px. W0opЮԩ`'v5em]}?.j+5S$7[iqSNyk}¨]evXd2[5C Os2&ѠkXf\ mcgr .ĵYg| 8%ArcQR3ZvK<%Gݡ#}WJ/߳KǷ%RB*g 3JRgz bRiά9oPfV2E) x )z$Htd+׬$"vhu iu!i4٫*ʭ}6[(mq#HuW+)U]cXDHDmyoI3*aW$]L-5pޭ@Vڬ|k,ߤ5Iޤ/{4H 0HWur% pT$(n1aP' ( *% Qܟ]Ry#jCT#ŶFlͬ0 U)"Jm֜M-Z!{]O#x'4kq 9zGTJnk ?K M[PQIoVh3.}j(S 9X6׮>S:{X)k:n Rn([WGgqm (k.rIKiyԗH:$Q%xv= Z`qVQX=bV{%]'߽wvxM@0fN}q=Ӎ˽D*@*0A׶023_Ej%HtJ$+S6ݶ֑}vM>mQWSڡ(Df1ryd)TIZNݛ*8&}:=ؙ3b+WxeO޸xOwM;i))&m7*I,9m ?zXn?7s`O)ZKqG8@Q$TnD\K7~MӒً8}V?&}:z@U5>ݡgjUe>RF\?7;rۚ/.ҋD& V/&c*| m]_m <%nS$rm0(Mg| K{ 6qݎku

t20IS9_\MTܾI ](GXغ]YD׷l_6cpe?}J;]leU|= vRwm@<D$("? b ZD7~wOV@X]e[rAnO T= B@%CU%"PY]@(p5ʞLCr{~XvJ[F> 7P[{K>Jvme%(̉`-rcWl9SB++loS]~ĒЦ[0p^ɏgchRZ@ݏϮ89/)m9؈JJR]5]ܧ=I) /-oɗ85ҹr{@4Owv1Z}Ic.*?֟V}q,3 ?ߍb{9V9G8V|\srΛ     H!O&-ՐKԗ>2gJ>K>0-~JnwM8۴Y _kzɺkZbU& ߔ?V ^A@@@@+wE=O ZIEEX,Xdi֮r^ǚd+a\]5=0`Qɼ-{z[ŷxvKgqc1$_\Ʃ׫4|]SQE;,"V }"WULK0 Px/H _Yd' GCE?l$ U ;ur{jZOXTvW*0l7u;fk|B=g ]ZzWh3v?`1 k^ 5p M{Kk>CףdX,KyyyP    &B;\,.ePу9YNbkOyktfŽ_F%Pygđ5FP:!U˹krn-']>3bpbD}7b5ǟ'[sÍP9ʹ==厈pi!HĿGBI[SKigc5UhIC[8 ^=t@"GomؿHڍeՏ~S')":Xc*X@hh6P-n>ߓp8_Рq{w    p0(c q9q !~=NAz b      >&TA@@@@@|"'L      @+D OP @@@@@@WWj;E:HRڄʼTU^-6k.ezQ?QSFGnèa?)":RG%Q#OPlsHYoR{e׏R'[zS~*3b2w^oPjoPHHHS^jf # w+*J45[TMrȄA﷌|-ߡ[("6ۡrʶV눘 cV[nzkZ@@@@@ xu1R7g#c>+^ٞCO}ZmTsy`KkV)Õ{vE8m#P԰XBg~lkcWTR:^͜_vPW\[5\^IjB JQJp-G¤A@L @ GL.Msj}J]O@J-J?O`_TkʊKa^ߵTYlŔ<=4LT@@W)X9,mdmȧ8DXW&  g(gjkFVgv7RA =@pxZ5 ƤM}߿ү?{FuٕtܰqWƔ5J'tB%^Czllaq힤Sk珬w$μ+ǒrT#?O'ڄ;s}Ƴ)Mcr  u󫣚a&ߕ;8v~ *@@:L;}Μ>D\sZ ̟)ϾW#o*]o7RހG_,'M?$6/$!'tw֎0궿NVpQ%Mlk>3_uiSXwp|ڗ^'%?pof#`}o)(]ZGgق|rwke3v kESߜM/ @!x6k'%G8T!&?B NQkaj? 5d-]|O    lzmĽtnȓa<= :6# >A r[^g'l9 p$O-W?sX)g_b_Qʫ~x(@&!%,&^Sيkm7WJU9{kYfTɎND7&% e ?`= lѮ D3]ĜJy{ӞAQnS ϿcʼnhMO%9R1[KwC?s9222(???j"N88p zdkj*))aGs-duAAW{^ڶm{, |JyB-5 :?>?|gС1 !(z_&)kreU~ÙA},KJUGly{BJ{U{Hi9"$l/WoG^'a'ı%Tul'r߶9(}O6{i!_Q7+Y!+e&/^ˏ+1m/DC<yotSxU1|Z>S"=)i޼dN8RRj LA> Sxڴi4rЕMsUpF~ٳg̮],YҲ"B '6QzwVʥ_RDB_ ͿD r58VR=]&VA)p/TX9XqR{R%N$&aΌa> ,VZVGrvyͦXi>w-xqkU+]+!a|٫+#l79n[|YC8ӆ>{Y>*>P̀> Ǒʖ9b6 ?Hha `$ r2mw??;K{g{A(;)g3>/ڇZ73Z#wGs>I4yU?r*1|OV K=yMvb}T>o{*l-͆-fa,=0KP(aYOG2@Ѽ^;ӐmNߜn6'~YZQQ;F͕J;fƆY;\j!K^AU?>XcMCf&{{ʡ+s?dڵt1v)++n@ؿ]>--Ҷh8aD}m}SK2y_h-0ؿކ<ͬרn+{ 6m"?]_~s' ޺δv>TbM ey2<ᕇ=J{?s%yH@PL?<}+|D_F'`+t-$ӮgkO+ _7o4ik,PCP4@@ @p] \BPZf3sruzORwy${XyR/{=k>Vr !ߝiCVsʵS< a ]W6@IDATzQ);=%~H<"ק ܽ>qh,ײYr*[qCPn U%ngn+Mm3}8-z)Tk.}ݕ+YZ],APr:{B5Se"h)Vn׆>m␌k3%R鯄nLJzrȣ"op;8B;㵀6~VcWZ3kH  $%SasCSd9^9ˑR wyIt<{dZ-v*Ƭt}} +J#lMoݞgOU}IݕK}'MǒJ\{?>5daqVUc4xѮ6%x.)a[\t.O"X:C<oα5lsw3hޱ1f޼gX-rIYpK ZD9cU/O~2ÅK1@x ~@tOW I3|:ȍ'9R YPk**[on 䚞B3^+Or}wkP4c{LOOwlm~X}pwulk~{%QԎYW[C-v6e%ԓs7`UxOp8 eˮƊU-ڡ@z3qH(a$|'Ahൊ3, Y曉͹׬G@r?6ݩZp*=HwB UX0Xq,uHCOaSmg?sR_i'T}&?K-RyhXDzF _T?X0~8P<@JV\_9tC<^3k0KBt&h*mDيk[KXu{JiDœq،Sd5HU|5,A@@@@[ܭ.W.Vʞ[KLp;{ʊkR O{:J\yithyQ#5ר ߱g轔,73AJ8+|4;=*t͒^˹GB Io˵[^cAw 9$$칵+kʛ;XSjQQSTo}<}!nΛ22(o.59v\}o.(.M&]$vq=8X)^V~I*by'j.c& r'FJ5ke]?SJaMvj~%lPd%~uv#_Fؾ3^`5V_9{g!aQMD^ϚD=B[J%.QP#}ɔXSR|~7EH      hggW5wirkIw{Z{xG+'HbI}lz{`)}Zf3jvTN ++n1@!\j( {uY@g tgPǜ       '81!@g1'@ @N8rL       wu       ptAs$#DŽ      ApgPǜ       '81!@g1'@ @N8rL      1)L,ͯP+[=iKȑ=Ofv ,xĊObTcaiN#_iHD9(sHUֵY@@@@z =JF8[OFCQQL3J[m(VlMU OM]w|H?O΢1W3u`yۺ@@@@)µvٺ+MƎH4dpWXL?F?O لcKSJ>c/'gdxkI]m:cٔ3xQW|-dzѮy'P?#W֘sm-Gt#9_mK@@8]ay]@@gj!eC;>;Y3\NK.~iD("`4SI[xgqe!a?  ݙn#  ڟ 8ӇR4ֹ~TWy7X9 m#P3:g,U#@Qݕ+iۜPm&BoK{i;LP僧|9{CDQ3RbM.K~z+k2+bT}i4J7$g*]v2M潮CO95le?@5Vo~JHO) W=3؉UZs^wӡ伩X򊚧zÿ)AsFZ[}T>gϛ|v~J;? Zf;ެQ-0v|]WEgޓv CuCD@ߢG^cv~q;JΝ-*A@z3],`$OPz"MzC(Fh\iUTeJU,&eO` Ԟ=^%GѰʖ_m5]SPFU'˝v1eq%U{2G^LoqmӋjݚ+)9dv-}&E&?k|xn[|MM>*n:@ICN Nڭo~+'wwE4u5J^y{s$*oAQD |I׺moRʚq|=Py5~ٲx1$I8;˾SŚ3 bVdk?V{K=Gϝpȃ@T?<]Em[Qy˗H   `l%&{,pKYsH4<%g *k$OK_4"ؖ-vS) a*N7V9uF3!ջh#%eɉ`a4Ch Ny sθPʿRŚ;U*QIumj'}YHݦfmo,¯+k,%IĽ諣YBI`r=+B}\YC-.`9c?HiObĉmp ֤5@z.=چgĉʷA adU65R= NU&5_q7lL󧇬 .o9| eNpԞ_g06Tdp=b-X!Zp+5)a\mq4fZJv>3gcͽIԡ_k=黝F?]siiU(5C(VWWŋcnFFE69_d }eJKKC̃lذVZ\aMWCkrhP]] ?|3!Z~O0pfbjI8lnIjϧoʒiC٫y/X en)R[17 5̈́ؤW<7[d!Nd0=| ;{ܬHdezwG/BiDϱxRj#lwMsTդ/m].M4)|_fffxӄ~cǎub0`@)3rHr:qiq5]דt,`͑Qp?/pbז p[uþIS6&yj6' y8Ėw" Ns(o~y M[yn15+ިLWvˋI~&N-t,=JnMrMOj7nUkrq-_;mM"G嶎'OI;撼3%%%E5n|8\7/1$$[cHӵ pJ pu_5Ѷ/{XcAr}3ZΗ 5?t [_!&C(RORhY ԑ:Xy(sh)ֵE#QU5Vjssk܎Kunݚ@H`a$@@@`G$9z$9+d" ~tGiF;>?/'re1Ǔ+g<{šcjIt'WB"3EpMMO5 <.Ȁ@ʨG}sVUٟ!]`k{˕n ޳5v(^;[MʙHy nj:~Jcl_&+մ9lFJ^p$Gj: sl9a߅IyTߋmmA{$!H.=eك)XB稽޺HM\'ņ83qXWb{jME5-[:G+Q&lXaxn 4H[w?g}E8,2@!\v9(Z*0U';6ھȠpHCulE[.<3B^Q2B-z4M_Sgm%cz!yPvW)?r^)KNx4%O s)t%}E**]z]n V/2MM#rCMpq<}dg$USZLq7QZ$fijEDFӣq(qOWғj)`Hjx݁F#Nk] xmͦ_-M~`m(& d~3ks<]{Vd=Ȋry1?@;j(YՖ.GʝpG+fBMoh.(Mph.(@ g-am dkՋ7q)}i;]O{:J!fls5u9)`ն; W-ցEHh}k^wGu<m}ŗz g~0+kFwe@@@@E{Eͣ;ө{X{;gtNèϔ'o,Ow;f35>ᗅdް Qj65kbFSG~[4Ѽ.'\kZJZI~¯C4eem(_=N ޙfNXdj-YH*`SHb-D ,ck'_@{j~&ZwME۞BVVUUUQaa!mݺ5E@%^z8tOuêA@@@+ tW X@1@W +\@@@@@@ @pĘ@@@@@@+       w8bL      @ Wkp;1&  w5t8tU@@@@@@:G @@@@@@]*`      N3t o:h&U@[]4eiZ Qu!tB]ϓ>tTDDNWj{j ?&٢CCH'iab-A@@ @1{GIͧM'/l sti8i_H ,G="@0=nю́gח']@^LZJZ`@@@छEG0W|cOd]Rn->@2~ Ԁ@V⣪X(T_ K5dn\˞}]#ƑWgVbqhGn"qSq,/&X_,t;ދ sIs%sդZeIu* AS.QycB/ÒOU>?1S3x̟LZniwW/I;9[cOs^"goDU;q9$f]!yYRRyٝKsp3>xo=KdI:M3qsD;kf,!}i"k"]kcWUyDՕy>2!-5}fiJ+I?sz\CB-e |'tk{֗K~FZvaыo:tmD+Œ\+k%Ey:2.<67'O !(*QӁw-Ƃ+ ZgYKƖ>(]?s,T4aTڤ`sӏ廍n!^/yOF,͍?1/=JB3-esq_6ז+G]dgAN90B\ ul˾;XV 41vb+,HzXkᲬd9ύ(*wsy ƫO1xr~ u?(!r7L{_9Pª#]kSp4 Jvd({:kGpƦu#lKu_CP @,k'<|{.B@@ZC tҚzigm "0`j s`}摤?cB2~šr<Zy) a&*ӶNK0*o8qi'jIbiDk\wk¾^֗3Y@ {v`bP087-~*yxVR)r7Mر۞PLkk,՚Pڍ_8'}gÊ!d_EY{|:5~-%=?쳛 y šxoI=n2;>KIgmtkA}y:k+e>I& s% '|sled|yz TP#M;ϑyG][oW`EшZI|Ugf "(۰X h!5kGL2rrr 8^f mڴIT8aÆȑ#C6ŋY׿KpjRv-#u{(>_ ٳYbMC>}'+攙CkbDsh#8kTXp5Ysi #ˬn-5R`*o2ImѪu#}LeMv󫱖[iXP{Y {V|pF&'YY''k#%)Z~+_ZInK0 < _ Xi7 sOy,ZL^};n{*jwUZZJ'O0SCCm޼9&A+FEݵk%*9EjjAEu{}q?j]|G~Bw7ut9kc"7^>!Jílw%/ Ļ2EMMwsp)W{H#5Y;n,T !O0yfoZlu6i6;\Xuv*EQkQDj ZlέkDYo+)GiAл%>8L8jM wN28."$\hoX;,¬Ԉ¯JKK>DKݼM: jMvF5`8\HJ28"wdSΈ1tGQwplQ&n+`"|,{\BgNi6`tvz%Py] je*M`C& ofaÎdG*5;Jy. 1B*wEe^~ ܱk;5 |S# #13fH.tB fi[VL՞)))](kC}>pk5qu_۪V|mnϿD}E V~@q釞@Zl g bc%?LRZf~PM:L<={uJ'd7Rp2d0{ J柚%| &sK8Dh 51=b-ee)!zQ$zFh r+M>H   /RW1G6EБ}zkn>l֔"$]ΥÛCxﳶ8GW})$gl*;e7A65gB#2LoE5&kK5n{ 8v9֡FT`JaOL@d3n$j5OcS{ I DjvLk?pS:KecIuC1Zej#C;R9R?ԁ\#K lAgCk   1@jMm42GK3Ə+fԃבd:fYv\n94MwU `S}A^~^ǯN[Iˬu)r__Kt~\G;>W}:<,SqJ3yty?W%a=ÔL^ My7EFE>)h_6 rg`dzx8уG4J}{\n>'է+`-lrA@@@@-n :XoH=L /H9Èo8X[{ޫ5JeNl]#1o+)npuc>vՖ˂&Dŋlnнs꼯y\ښw0r^(8NY8ƒv}"SҳswNqד>6EoC@@@@:f'ULJjl,_-R dJ&KêA<8oZ2hmH"ūrZyGf>Ju>(KIhV{7W!X ; ̣}s =k2u_>q6M%aըYYYTUUEu6    tq @   D&Нӂ$l      Dp'Ǵ      %81@'I1-@b @N,o      I wxL       Xtӂ$l      Dp'Ǵ      %81@'I1-@b 8;f oC U{G gnE)3(sIӓ0j]s] י9\c(cؙcHwOTnj([Bȑ:RK)m ;c@@@@@h&@0OFbGJi$lp+W=|>uP[tW=UgH3aJ;3l]_Rws6OIFH# &)oȑ>¬,Bںuk<]@@@@];k-n,beKԦzlٕ)?Li|)Xn}5k8CgMIY{h㋾>r'xUT)g+fdnְ?gu xY*_qLO>v m+t!P~H./?@@@@@ Q '4iA@sU[^YJzK5/Tfipce,>FQO ϤeshW@Eo)o}wm2Gv~6ٍ$קfX=ɮa珪LsfQul8猽9BJZZxSΏ5izə6RmC@@ڕ@6:-=0BiĄIN_L{R/VZR)X tsD+] /Qy?@ECG ¯T8S Y(nVkmu+=l)ȝp[+e}mfd @SvCW1*Vߡ| .Xm)w[R   n J 7M463uE4L FF>agi˗y46گ+e%þ q7<4gevzpvgiMo U 0oөvKaa6LöAC&Bv'>D_Aqّ:Xyد|lr&P氳ԾWeW+x3z ɞϱIr)/ V29Uͦ~\OzV<4cm)E{Iyh,#FJvhY%]d䙆;843v @YIdj$K@Lǟ!EQ!*i;:j{4H G'3^Tl+PC&r%%O̪+{Oo5V'O"6Z((kLkX5KW v=kJ}gkrKæs&ݑjU?Ivۤ=d\*IMo5~{yɑF\,8vle콬lwGr?dj/pF(5W@FZ,'-[?J^m@@@ D(v">g-ĆaGm(cnQC1T4x*_%jz n{ ni8Qn\&~f 9v_9DIyS)kQ %z`Y٧]lMdIg}ZXYk7gM/i?W˓ђ#mj"?d=uۢ5G=@% j6}<   O`w 'Pܵ[^kl9rR̗˗G\;>Pm\c GZp얯?4j:h(Qy)dk?C-jf1gϛYhQ֨?ҎOdNuCޣ_6~oH2-LaOjΞU{k8x_6g;2!/M5kZ%ZIOkeþkń@#P>=!%e}p  Fp@% 1j]YcYZ Zb԰()8Oy O-*_D[¯TxGL+i 5*Kw(u]/{T 41gUb gUhi[?_sf*n{~MwsMfI4ht^oq~=}Yl%1XᯢT_[[K/]AGy$9?'3:tAԿ>PϟO6}iԨQ4eʔ7oL#Ð׿whh?Lj7uΕq?}bU]Ϻ7N:)`ǭ  6yXWZ4ifE_(-"m\TWȀRpwj6{Lyc)#&b-^Vy/py"C1Ml2}Ln_8&9䀺PmLO]&qbBzc6IycWIJFcӚ;qcSzOYu߆{wyb]+@IDATM?E:ܚ;ֵw[Mwo! e x*)w 8gV,q}3O}&=0Rwgϰ4`|U'&?Gp͂\۩b-;zZxߞO5 _DYm65<0mo.iQ"@&6d GM53Ɛf)4H3&=hkz%Np ;*[z{ 1Ws߁*m]"ka~Y?swB4XEUUU4`ڲeKĶR)XS_mXǔqb]|l2kmߝ+\I7d?6a]/϶Pd0E9omoЦeo5S>ePPSi0.^[&]2jY.qbٓ]xXG-eq ׇY~ɹoۼLs$"ohPGzf4=]9Z2v5mM%5x2~Gp9F:vĘ8DuqBP*%qOrw ֶc[)\\|?GcmEB@bKMbm\t,'Vo/Ll%OMh#fJ:w2 YYPDWYjjpS~Zd~|:Mhe ؅A! !@o!`y>g\0TC#  8Jh\5[^[ޟr ԝivQHOcGˤ/tqwz)5ܕ$A$i4?TȈHTqfZۋƥlUƊv[gp;beni]YRqeLMM͑W,@o#LD}=gX@߂^DpP  @Dž ;e̠RS(mq1O|I~eK6sA4ڙ>Dyk7G[4F?>$ޘIFc9([Rg}+֗UjƲ%|ވӻL]YI9qZEJ F$9oj%@! <6i@@@=@1FHt<^ƫ$$ybMyU럤N o{{,$6q)5͞YS3w??X88287dp%/U¤>)w2;z ׼EMb|);f!Oo*Ďʬ;3GaTPK"$mUl|>NDn @' 3?;7Rݎ}?3~.C'  Ё@:~7ix~$},4xSٲj:˗_k N5¯LBigJkeS!\&"j>Burx"Ibwƫq ֘黝aexf=Tj+oUqA!cn%/f%Y]șsHթF@/ϣ S^w\@@#@T1f3k=f;UkYHRJwkcjTqcu@j݃1e-r|ܙSfsY.G}}åKhX[݅qL J+e~knbZZ/W1~S TadhWl Z[)eg6E.J/v1F_&(y@@@@":@l}+&sr!:-?;Mho,ܧ w:n uA)!z/ @ pǜ F 's261ˋcX>0vGZB2 hf2V-"s|\TIǤgu/%ϣN:<&8H7?6+|gim:_mrXGD   Щ w*9i}_űˤ v:v,/k^&I*@@z}6> #5'6:}y}/3IΫd+v=2   H8'ZAhQM(O# I!cwVA@z8Ax5 m3g*@BX Y_KW"1sְѤG`SpXy?zUU;YIՕy>2!-5}fKU #7&)8w${g_#c~}Cp*/m¾8\\IU#x.^Lܾ#I5㠣C58W_WM;ڐ<咐B)Muqo!#-3;│ʜ\M{w#c\2/$ NG㸳IK ꠣ6~璹i=8b҇$fyQ];CӹNrQq91{/Ƃ^>F:kZJjܡsUd66(/ |ީCaCUAlz\TG xŶߐ뙯~'6 Z@46wUIwi{ˆCPqB5,%}UR~:y˘K6\GڇB:k$yBuu=7W>rtj8z4ϳtr_zLhoYc2`As9Jx?>\bgPڤ)كY \XC 7!gY~)d'} !0X?D2ZHt]/"%f_lq~ן&]?ݥ1r(m9^ ʨ 6ag&_cja=c{u{ 9=N% M,Bں5x(hO}j L<;.0.h   m&4^gLMIs*gm 2}:S(?s&jy̳c$ƭx?NN%J|fIJP"q5քK瓹́yoF΢? +}D N3}gs,!d_O?V4ώEOc p=e#<7kIq왾}\sEd|&9Nw^m\,ֆB9Ma+}QzCYcvĚ\ i?}ޡlר䡃>`YYU/eMEa&{ OIS>n2;*ϘI.^ioFָ1</q@k0O¯!& wՀ@/ ج=YQbkq-l:~dkDR3O ;gDOE1׭`M-LtZ›qe9ъ }B0 %1ўxsV6$@82Y0J r^v=oX&h"fx3#17,Q]?$yQr ,ܱh?ŤWxpT8.y'xK2?yy <16Ki1wi߆[d; UDrA* b:,!}Ol;#&C${0I^!2>5u J(䞲yo@ ƍޗyMǞEnlIcͣ둷}B5 & ^yIkH~ 8d$9W(3 Oq%+ d|+u5.!?OPEbqJJZ /${i*ק_X1j\@ͼqCtuzx3gNԥzSRR"jM8}t6; 89WwϬ] I@@@wwqprA$hݸLwL̎lVf7|v~٩zUK)S˝!_CcƌIo4}}~~+{rY?%Z׍ܰ|Q ~?g„  Sdou8 (*!dõ@P _W,né`U~39eq%I !6je`N-'+H%dz5#-d'J6>:qE_GI4W{_Q?ԣ/ν=N{m=[zNb0Nuc7׫=Nf`*p!I8˕jXХA?! ;|?T*(q p<$%%%/ߢ`BfҫW̭>]q3yl6VJt##w?3"O]|_C'${ [~ٽYDpZ9%Z#6GM%ZAԧ H Ze[#5.9dLs%ڴ#Fs*$ǚ7-OxgDەe(oދ̮*ҳ_w?"ȫ%ڑ\ZZIROBv{DIDu|&U/9W.о$KvM2w-ܒ)EM9%q7Lٿ'4z1=x&8 =]~glY1sD5)|UivzEG>&c%ވo#޽ 8TT!fWں"Ao˵rfsmJ[M fM$R![GrEW\Jמl gb\vm{$}Ax۳P{K_r O]{>Nnd(@c([W}جlGHFdjLW zĔtsi=zsP,Λ9hhI{ĪEIc?bA`b/Zh~gWEٖ}'G&i,c75ZV":wS}q~X;I`"y|97p~\uKB_wZοFi:E횫ؚ>%2?̫Teof"n vl@B{(ݨ 4 DmdkzWd;\(aT(#OSi S@@ޜ^%LwRK&US_։]}9ڲ;ɠll=4On^RSKb{v M"^7$!Bm%W[S.Qi*^(XI@~FE{ФdJ' ~nBI >=᧹ y඗(&`  9I(j+D$:fJ'8*b>Z%hߟv ˏRC)yՓ޺~17lSri}:QMuWlϼ 5()|v{oĝUÔWe'jul;qˉ]ʽds9c^L'{F&cT\wJe|go'iTe"@'J럢Q*ny^ c  m@Qu]{'|{-lsv}6mnr,;g%A+18shΞ 3X:~G9JW/ƓѫNsWُ~ _s69A?^[s ylٵWeuTV"{ȡ_v3q@YzJ;ϑ-)Xvoúݳo-{ kNU 5N@`cm4_0  f4Qj3KoP}hz[އZrrj{LHO,?OEm8[(I?^x@YPC'Rss![rYS^罹WM2q1uWR1,+\ }7yjwd*HQtΕ\]1K~06Nfے6p(?`(WEd NDӘD$6h H;qA5|ݭp5Oz+{#)HzYữ [cԾH6[O-mYS\ 3oq+7:-v`K\^ZEVq?cɛ~_M5ֳ/$c9?%"$iDY7^A@@@@ +X`};yoRHm3|թHBWXy0NIn,~eYɧ yeɇ]OW=rPԱdwF:0op_'0yn3:{ROAǁKJJy,KJ J7w,p7gX6t}$xx.|ɤM~Y] *mb({Bs$[~r)' gbk>t+O=9p=5߁XuVgk#$?^e8xTXZmr&~q     E]@ $Iihq]K}w( pVXLAVwJDSDV["GT\v/+XFNƑqDGב4{8.^|K2ιpd݈b,=oR2F66xXd>(%㒟K=_#mXf52?OpXEقl9Tpmw%}bϑo>u{ :z/HÈhۍ'?#c!q`$ ^pP>QqM%14fisa^H\{Y9izRsaqi wmW-N+rY SM#l^`{% M=VNqaָNWug. n!QE$W46p3zQj{,ZЙS4%]mv3+[$]55inA MHҋYg֫?_7v$+a&~:meeeTQQA{r     @W3@!Jn$vu;q1    Тڝ t@@@@@@ (mVa      B X6C pUX(hwy76}]m}3@ PSAu"      ZZq^%Eqd      E pkyA@@@@@Zō(EhQP[7N      Zy@@@@@@E prRwrJO&륅*f)8;ӗiML- WSx U-|V8J*׸\5(ٶEUu{lr[F!@7hٔ?QhO 8&MPɀci[Ղ {S؝wu7 =):tۃ(y7Ŕ6U3) krTS[JZ?6>R&#=XKǺ@@@ -(i=(W^﷭"OZ({k@@U_AՋ^ήUϺYP^{pn w klbﲫ[ъGPUjTp?@reвi&.ڪ[I˧JU ~8\$ p.V"U G%xIdE~&(L9~TS*IP, W%KSIwL9>UCݪ/r^ ]*>&i 9/'q_IlJi9hZ:m#tSIPn9T9ǭ^ಡK %~7>agy6t'VЊ#$Y$Q:\In[gFkJV B,R1n*raH9?5Gl pSjy_9+Tm4-tVWt~`kKAĹePqq P0xV&Z?^nV-cٍCohEq"qjh.Ws +Ul)OAa>SyeǶIXMZvbe/lݔ4 fl Zߩc}Nz$MyPo=k(:.r^z&V_8a+*t~׭DR\΃Tew @5T-|Okg}jb EYh P[:ΙSJ؊`^DNJnwggps y⮹㰉l9ͼAW̾˗u$)t**z^fj/<<_խ%RDܲG,\7W8ٳ#tsPޙEQuʆaЀ,#tڵ|tˋkٳ'%B!?>Yؔ׏nq!U7QJ![% 3x`u=)c}oo}GPlK }5wp mgT~AX?677P~Q4.~ ~C9_k?E Vs GӾ].}Utnz>=g*++?Nٞ4M:4}?V^lxҺݻӸq㒶9ΡW\?Tf݊C?|'pHRM6 p#T@V$֚" 88/f]E$I)[8 isAɺ:($-j߆8f<}$vD6V b}2$sҴʯf,xIÇ<3Ʒ׏N JzGìEt >~8$TgG<6D4:egCΈ $7rD}*W}}:>{{awkoEf Lkf\ʸ~C`RWeNq+^tg=`ɀ`=vg:%b,t*u~qk v U܂p Ѐj~X)YfP&tz.  S>#+9#V?8Wq{ڬp5zI]En^=#()[I]YTlJ!KM1AZ@1Go\}/(tpZ8n {Sw:QagA@@ @n; ٯ+JYHZ歚tdZcӮ9\N;`GNuؚ@Q;R.+կ.m`D}~  жtZnևLD  mtf%i:+DZ:GjM^BYN?R.}Үcǹo^»]1k7pk?酢@ =h oFN[_iI-    G $P2xw*,"9:*Ktb֯=T]%XV*׶liYNgaBk8 (@NEy=؉G e6E6u& _$Kfɛ$JjIFQiSo%wٙ:ljo(nB@i']>[\iktB@Y֏A' h.Su~i\ͲhL   > m<$'ܪϩ(r,&NnD{z[]9VNڸYfn3 9F@9_Qo,@@qoܜm@QH\Dpn̈h-~ m 29/r[G6[}-Ȫ_wܘ>59wӚ&29on=     q6E@3yQT۽ ,/9E2^]wzz+nl67ˆVnfŪo926ϑCk?:mF׶*Z?FM3 )X:8ԁ@YbҶN 1o[z~mjQiAu~-=O{ugn3@@@@f409lOKܠCUsْP7psci'>qU!=3[{fSl2޽{Syyy.'łJ\%8W    O.йB&  b '8V      7DL      = A@@@@@&)@@@@@@rܿGX!@1@+hP"}Psa      M@ s`  ~ Ȭ[M~(@PsVB iT28e:X76Z?v[AQm3P0V9wRo)\5KY1HҡTu7*|:+yQԭNO3` mNwqi9CZ??T; WAFa*2JE}'=PkS_rcTdկt::KM%2@    -O@YZ8c.Wͧ7[QГ;imOtߓz{ Ckк(B] mϧ?FA/Ts8@bOW4a*5}$2:';Uj573SJy (++ ݻ7&' p< `.H~~qʯ1OҚ.p/xee5VW57\9v04+x+GR\_)dS͒7vGd.M~JyqƽV{xIt|*w$wٙՋx(G_%-2RIFAރPyڑV; Rm=3[PzKJSUs    A֠Z5lZtөvZ&q}7 pj-yZ+r.sP />U/ dŹ ׭~j׃)gDfrets5Vzn9lSFw{d,β_%NeӸe+\MK&d%~  Tk ,Vuj]{FAnYa :@Z)gO (螶?A@@֯o`flDm[^Q{TUyʵJpNԥ}ߩfN:nuUW6:Pdp~JNïS~NuݵT-@WLE1T~ep;w%^05usyQ вy{ʊ/OoovEo wu'@vA@@@=jS^QˊDܠfn7*t,7!c֡vŧ%r*4C߻e)ԯ)^nn)T}B@ <ީ{eJ6DQwln6Y9_ⱞ1sr^Z -D@.yoG^9[ӕ$1d+ @@now*rL-{: ,UQQOEN({FMT,{Zד=w|qV_$qɀIV!dT:XFG,FJbl+s]$B3*Rg\WYgGg8-J'Fa 1Ȟߔb&vg􊸳[uTܷtER"ui[0㫜;ӎ=WeFpML`ݬ[8eg5sL?QϱS7hB0(- -.*mOT-z]womԹ. *qZbiJ*ne//f)!Bqj.+s.;SʮUJ̗53[-TV/y BXaGڗr&(tz:!_SݾyrR-z[Us.;ŵˁmf{n}%Jr$CYNߍ^*Vh}Gk[ZL=#S74yȸ}nkO|AGu\EA5ng))̚E?S?OTʯP1vJr̮|3幥!HW"ߒG)W|N'=-B}z>ԍsysC)Y}^יt8hU:\Vם&H It߫U6T;Fg"5&[%#bUVfK Ai )ҩ:S= YNfԃ@#hs+Ƃ[@QiݯתsW/z9{*P:T/ׯv.}W vZ+ #{jW|q*W| {qVF(9]xT d _u7Ŭ[I;/]S$KCsh釣j<-/SM81M"{a 8">5Vg5hueX5Q|;\p,!.lza~"P}fi[$W`H̃   ]hk-yO/)ݠmv?/J">_I53.Uۍݍ_i]GkI=kx?oSvygE(%뺟VAV|FPceJ? p͒7cҬK=(RVCjseSto*Yq\4@IDATKrb!,{betSJ5a7gSv榔єZWpk)(7OIH.aIԅ '+ĹN1嫷qyi[ߚp8Lsq2d*(H+Je6ҹsgyӉ̹zu>:2) .׏ϑ}Wu26[ 91 dž% Eh tʬĿBl$EX`6cVp%&ba'(`q=IِJh[\̊ I,bJ)E.đ̸jA?R[{~阂*9~]I0{ ff=*{x1//v%$+ >cǎܷos5j l~{̑,~-~yJ>-(Cl[x?ũ>σL~ 6̆a3] qOrZ"IS$:owv+_U7o2fZʴz];%W`u)xs:<^4~=O-..s~-NtjSM/ЪoϦ?R$gםqblun9U6k&=-~dG:"~ jٳr&ciJ8p`SN`=9C1ԩkx&S_(ЙG@rH&qvfd+*GBت_LOpqY==ɑTA|TE+Q~u])_9wr_2ʯw}_\N+f=X施ʄsNւ܁hthiK'@N(ܨ5?Q0@@r,xWrxMxOV-zuv?KbRW^aK:%].1w4y{ƍoQW|~(f֌"STkg t-'+lk4n3Y!Xl1 Y(𸺰Ӈ,apiZy}[{7@ܿzgFsD22 E@ t_pY7)q}@@@@n.t^I#{q|\;ow;VU/A(wU$V"Q~ )s^L"nݚ[vI"J#2 zR^k> p%Fa/:r\͎6w#9rVz p4oGMN\@Z' 0KײVX+\13=, E& ƺ/-zyYy;̘@@r\s^8. zgT]6 VI&*{rS\{[rm;]פm(ꅼ溤w+=h;)9qû\WRH_ʯF"^;Rk,q8%U:[=RyanUg9OqXjH&sxhA=K+YJK~^O   Ж @nwU"BR ECׯwZ=N,Xf -`ZhZ@'<4<_'RŲ9'bwN)&kT,L$cDgkҺ<6HN1髸Y:t%Ts:!Tm*E;0*x|E>uǤ*i9ТX^!eg*ya}iڂ"JuqV~cAZg8+4=(Mϴ(\~tD~Y~Gfu]vbqĪ(p[;(q3.qsʞ<4oî`KưzIkf\̮ݑE}]0 Y}A t,f (X%њ&&/ߟ)AJ]YI֚%'U?,_Ia|Z1l 9YWUWZ١5,ySG@IgE{7e;)Hˬ g'=ϸ]Aaխ\EmVЃNoP t"8[vgqtl5V𑼿fDNa'n'TNϤ9wYLI,A:[ÕUZel?}N X㨌&"ۮ#e˾hϼ,,ܝlaGu+?UcDa-%{m zeZsvF*2]W 7&4<9ÒK˧+(k;*! RB]%*V<ؾdg^@K9Jk,Zk{bM˴B*JOxODv-v['vtS+{z?,+eX)YE!sY>W)B-?~ĉ-;])yG,؊KlҩAWvg]KA?7:(1Ÿ{P1eWRWHk'uFa_u-2    E.ЭE7r"hz'`XT󝻟5)k:AJ6M(;{8}M)nQJ偀ZgDՌb*"-?!Ҟ䷸`wa=ʆ#U\Ͼ?S)5{)Ϗh    -A@=13RK 5J,-MуF5YoIDcv)fwH@F{u7L\ŕ(]9ݙCU(ĥ<VZ6-y5TQuxl>g:QEEݛ33'loW vs+q!    qB 5      -N p# A@@@@@Z֠s8(-'h P[:       8r@@@@@@5@n 8'@qB 5      -N p# A@@@@@Z֠s8@')vu%ٿLuFZ~h Pba/[D'*cc)pquOA3wFQ'㍵`W{jcؖE'ĦH1:iTڋwd%{҆L0 Sul$'CHߝk HvϟIhԎ"!ոy71p    9D p݌&[ +]zEt[ϒqĴL>x:n{.q Xq)rk2!6jT{'aw=oɏړ8o{Nn{bAЅa/McӧPOwP[\{z[P#8nI3-+˞3X sgQ1'L[}hw]钗Iz'5m?}Ŗ}(xu`:{JD;:M%7҅dzH{jLÓy0@$M޶,-{9kIgV?bnUQ6sb pI :F}^7ww٧\LቧKʲ~ ^t'os_m)p39XMХ'ZԛZmXAg5+y/^-%Զ)tiD\T5;PP5OS%>n+ nGIb{.5Wioy>+Ak<+͉ ` q(tT 2Do&;+*@@@@n=-tf-HAOx^o8ؒ1Ȍ7&Y(cĎ*ڠ-H/H5e{x\~8nEbm-I>I:YRvWҶ9rNm @@>݅I%ۇn5]E"Za8%@h~Q-"U9G_a8]_oX;^х){U'md|b=;.!7}]/%!hv2ce3pz92?z:H?Իl2ǝK+~^hJU|;?C SU7-נSm2S&hfDې`wY:t&Ch-:P"Vr3͊r#({0Sw@%؅C".lϟM SFV$`gf' drj"\U2Eo>_Vxdϫ #7R|;d"B{ZgCN۴!_: _WPڿkziD3Uu1X*+Y?MwaB:8/uIĮ QaaZOdU8tө6㐓H~ G s})%8b   ȬltHN~V&OMy)vݧs#ɼn8sžu {š4`ዎw<4H ڪ:F-ƾG_t9W#' $ZvEo\lΣU&qz ?;dً߆|ͣ|kN+LJ@G(CNtйJ>@m^]d=l`HGLJl"ѲњͮiDQk{1li\(t1]ew`kԞd[/ol?M"cl,'ُ*"|7_ʲ8J2?U8T*jK~1YP9ϜH:FlqJ_G{p:bS}:ΓXŴOyl/ȣ|Ͽ\~Q x5#PB" 6y+7A(֧oܥEYg7TK{VZY@e)zqOcV{Zl佫2?[}2u; 4-cE,RoJ.ὸ'$XYK)"N(??VNUiKc6xds6%7{vb~ν=vs`  !ohJPTDrL +hC 62ɺuhZNSpI}%Hbx|vِr5cH; `szk*"ч`ŖZc?ݪ_!jqp$mm(-":.~,.sywt#78FBלAO翉C[7~k mReZGY%9'Rn&1k \ I$dXL,4aU%Y Y7sk19M^HZ4ph)d?C"n?PK͊ [U>>[NTǤ{kcu$oò2ϧgϞ4k֬S$bQM5$c_BQUUALgvUVV<#y5x>?o}?Eg>= )G n6d0ƶ-,;%8+  ZXNHo+FER 71zųUeŠ{`jUM$e7S򞍮9ju x XcK6b4wb9}!ηR?q`/%%.jtVoH~gDFYWs-˃mcmJ'u4PSY>N_uQ)nyo?~DsQX*Y{P \˟qS pp*~$OTEsb+zbLhN]iӺNedtSde)ȮJ ?Qw6l"ʥ#o?;EҊKݲ-)2&i ~o5g_Ky~yl>vS;@sxwP뼝A%q  ,Ncadsmr&jmY~ep^lTiیtXK):MvB_aC kW㗑֯&IUI,v_wwnx-ڶCwHrSQ^*٫=$q#gn;byUs^L@9xob_;:@{$=4פHږ;D\J>yS2|Dvܶ)Pu,*(ȲqntIrZ+ٷI#%=A:fk<ڦ+K/E@܏Oberνj)QRghn{}dqqRgH@@@@`c&x#m5 $)$^WQg}OAViD)5s3WFOx+z U$SkJBO 鼧x}NF٢mtQ>jؚ' {xEJDWHq}/Ir%ٜO9HZ%' Ui𹪓TW~`ҪeQhu" Ώ~!QX4p]GLl1lLoLw;zCbp:2?|Sk,6bO~E:A%?1ጸ=yD PtK}_%Va; 0Րdp4d"9EZX/O"_l:*2}\XR ""'d:XY8eW99Qj}>nY +U͗Qњ {\gρ둇#\'쁃"sstkdMHBlJ,!   :@l|d6<Wʗ&lܟ(:+JV.7M&/s_I8q*éDOJ67~HЗm]T -9=G2{w%ȾMmYW,{E?PKPD1Ojy _zw4Q>*]x2?)DAW09- [d1@ ^x+o~70ι?{'b} qNW(k!>7i)gN<IdL8=P.[Dʁ`n"}݉:u%{od>~ Yo=2hs3^ L| Pcr(I8.{-λ]tv!7F`ƨ}dde)xߟ6S(ʢ)LI6|)ΖaV{>Jl8[%mPX3ݵۼa(^Gmw>     d7ʶ5+ʗmMϼ+kr(tvlVCg"LE-E \"i)+ʪ,J#n|4V[CTV9[T-vy Ǽyy* ]~_~,ʡXQKzyL$_5Qn9GdO*q(Չ9?~JNzk7@@@@Z\[xOړvsWɺvLRG<ӫWҎ+eyj~XƕD ^~_DilGdw$֔ SɩjGh(x͜qJ8v\/inI[_QO1CZg_|i[,IG+ &|բi']*A@@@@4c1 W,!_8glGFDЊKmJA]sMd/C iC7:]>?+%@PNC"5X"[4IlUGu\p墔QEEݛ9@@@@|(q h       5(Y#H p[kX3@g @@@@@@"(ma      Y52 hŻ5dM p0@@@@@@-       5(Y#H p[kX3@g @@@@@@"@[\4  xm-Gv<ҎuNZ>#A@@@@FnTeo/źi:=9+7buJvm eGgIu/>HGnP|~$b~YSMm )ȼzl&Yo{֌ *r==U~![~uEwSuRx)D8Ԥ ?{7{<^}Һ"CYDkz{'As魔uLjֳw A@@@@d͵Ŗm"jܠłlM綻Akkc&{ΏWmT]Yc(xDzLLvY5cϣԱq~;]SHsRskV{[e*2:˝m}fz!Um7& ooVҡA=*@d kWV։ՖC@@@@o{Nd/"W|MeQ$]'mƴN7̝,*ujbѷډ.=$٣m[MG#7NTJ56_yir_ͷ\˾K]/]E{'߻#e`|.}Td>uY?>cWL CבNUaW @@@Dy ڏX│i;6?cs݁C^_ZǒjwK)GͷuYZrJ$"^81j_Qբ0 3!T8l @ H0'yEɦ f@ tpmY9xOvO&8Z_|ڍG)zD^{_D^C؝ؓ vM%ʺU+XOѓ!Rʘщb4Ld쥋KXD]Y2[OD>u,_}|Id[NƐi2 CmvQ Vځ #5d w]FVƞ̍WN]@@@%8[bm>H$qhЇ53XS^DI _ E xU(l0 v-؊ڼ8gX2:>R |)TkU5_W N)d{a{}GeS8Gs(ԕsF=rmE*TlVEVU:3=?~!ݣkn51V\%+h9w?dQ O2wO|e#Q-.!   MK.M3gfS z )y"':awW6ߎ/%w3\\ITndWK%|'*Y ]?H$i{ǔ_ޏIs$_CO"ո{O x"n?G2ԟ}ՏI .>erZ'uM?H'^ =ov\Wc TC6OFv~8h>&يA`-vQn K, ܠ=fVDgL"Z)xDGĞؒ]7Qk S_}Dg wSE]EԱVFbOplIg"SrFϝgv%塉N#+JPlf+sNp8U[S(k8">}D%^9ۺ;qǮnW4n׏B!2+@;L9SGp{/ssQ>N'? +>[O^^$3J6̀%R;/ :Qْv"ͩx-ˏ\I?8 {N1[WOWd>釜DUJOEa;(⾫}"^Pp듷XO~ kެ狎I|1離{pݟ2TwWlvQ6?||JS|Ndy{])XdW5% c+ Uu~~e>Pyw͐}kjj^H4AV_ݗB;zh7%~'paĵ?-Ah]"ڥn޼y4uj}ߊi{d~cr=?d\(!~?_OUoo?&LH. F{+껲r$9yRR،( =_ᖓϢ%ǫֻ/~eɺP;obk:[jT>TJ40X6B)pZ;qT9g5`>bt)`7Um8b /^}\ՇocHM՞`UHq$Ȟ]Gl"L vm_L[ϲ9Qbhzc)p͙ u~-NlI??ZvZ+s/+Dm/*"[gjp3?_|?7!̾yrm! %.,[^ # 8t_zdF{sN\#-G%n~SCPʩq߃5QzI?>~y痠\{j of (XMR+ҘQ2pP'O3'6[ew[CGn%]Vfm} 8LIr9v{'uwu] -IUT;ʨzMƠ?H6{d-E⬇a@z[U4hQ o#c{NX9z2_1!UVTS8-sۼ&(T)d(p _}d)P¿q’X9UG+)K+^Ka[SߍJHקyfp  HpA s@@@` 491CP-19 W,yσI y92S*JDG؋&jbs"7ksk)8+m4-H"Ghhu (%2O>g.Q_y D^'8qi% @@@ LsjF#s^\K,Zd-l*b:k[@ƾYȩ34uLS!-W $?$tKT+oLn[$UמD+3,G#֯ߒgDΖ^}ݜ>tSs4"ĉ-Xi~g0&Nz41   `t/ ښRXi~Dl4[#N1ktvґMSiK5+Tj*ef5JCY&4|N,w`/=Ҷ GU$U>"=sHO pD;wVB\:4qkS$.u"k~Ѡy5eu JJg2*EL{%f]aii\lNc?WԏLu3K*{ɦNSǩv,ES8guXؚZ,ӡsh=6+ 8qKl͝CKH;A&+R%|"%+dsivNlDg_Kz }k 8r28 ;@@@@n>93(z ReZ9z5V#b2&߯了PGɼyJL5evn9Q2;7~eKJNc`?d"ΛUZ8MRҪq]P{`Kj*qss=C|&5z)`m3 [FMA6op"% ?;Ri:+HkXcm%_8XDƟH/SΖL4)ahۓAwE8Igj|W zlqO&.N\m>yLVEn*DzbqWn:,U=rBU2-! MK@{RV}g<(>^={dT0#&D10 sP1+戯ń ̯bίb@*ۙ鯪wgvvo۞0=ݽoic4JhV ի/GuhVx`'iu߄CɛxƎxϬeeh ,v"9r+_{%&SIuf}*9/4rȈu2`Wu[l?{$ Jv-Y¾)_#w& E_)UCEE'T(Dy[9@X-.'G<ѕ/=Fߌ_I˶<_dצ1\>.lj]xt\G.T) :$a$(S((>s?Q r\l^& J֩(aXZ^&]뤌l9S6z97'{c>:?~Ek\^@>PSl@ԤYVj~Fc*&5:T=cU m?T/kU92     ld Q`X 0'(v Ds~7휫N%cS!Cə), ~FKO|gNptۈ%πqb   22\ŕͶ?## {T J Us=y+!_D3dk^>Z]C( D.+yek_O (@}мT#v>Mfo@IDAT*Uӏi߄w    P&`. !Xs'O HGF^TMH1Mm5;^Hz+ǡ>KuݐN0UM{r'NOI1T |;xݭ}Kv#;=[6Kb=ktR%v7v=ze.I~7ț2܃7#yZn2[iv}ey?k6N'k~Uy=~Q Yz ZǐZ}6\>}d|i9o&wH5kA6;AԚkk(||ApnA K#bB>"ռea} @@@N@̹IΘK(d~k͑^(9 +c}Q"Nxeʓ3k:Up!_;/'M9+UvbTՂ_C#{D~x>~هJWzOʊî+C?<&#(2䴠^ݠbfZ^"6+R5KG;FNG͛+2p ٜ*](Ck6wi&]>g՝}+9`+'wDQ2wrC.(.Tv3eN]THm[G?z- ȡ&UPLVX$'$k5+Cȷ:c.&[mM!ZObŏ{筟\agu$JEG VbmOXR(VQ-tNYnN|>Ys$Kc.&caA0 {y}S/X6&lf3?`Ql}9 ޟb8v=X~ڛ\ 3b鳮[3n$_xEHCٗR3;4F bP   P0+Hip.]I.W59`, (tFyb.*b9sҞI[qmbnH+m-_ t]wƺ굣_4[:}Wq=RX|)w]E7>,,ʧG-Y8OܕT{#_.c$`{dtb|eÝ® W\#<르>bIw]IY]5jS.~Y[dhzɖɆ̙w6͛7UVY%o Ҳe?xh׮]P)[˗ӂ UWߦMjҤI?믿Gjpp_zTK\gXV_;!?ϚkrzвJj1NTiGM^9k}q5mNћ'v)mdyϫuFz[1#J۴q?|JQ~`,#"͊kK&Dk'׌--r%oG܄} +u}v"^ygpȥcS_3N$Jk=2}jq5?DFG+u;Pt=F?^~O__o2V,6ފH^ Feb zHs*K,^x!X}n!o͛7/GԪ:;3mO?;6>q5fOS|dZf,?9)䬃OV4rPyAg`y8GFsXSK,DPW5:l\V]1g]KdunUZ"!Ŗ%kYmR%][E"ITU\ĺ8(fZ&w^$sٴ =S`,5#ޔ/T¯SW~Bm0 _6E yOZjEU95mڔvJK&•rmfI%cF֟HnޥK~E}ԩS'.@p%hN]wɪ֢&ߧī@ =krQZS =䋵n~1(ֶeXD8,;7Qx]bbVx`:( m{,EN*W9N'BfۤO7(5:iArphk>kDK=;]]_]m0.wq0`@I$ -%01HI^V[_! ^ޒdo{!6+[Ƹ#Rtr 4/WgxXYI갮_:vo;N)n]о#D."'ik,zJQ/?[gOмd7zŭ[^_Y/ҬypX ̕ɭ;hVPeqV9176ACE JAHAk-T0h- mYĤYo㜳6FP,Vol:wf$Vr_Y,,)$mT >D`g|p֜)v1?\K8(@nSRGT(7A|h7f`@D̐nu_\Al-rVW"^K0@ɚB~ kt0/cy}i @z'>%kPt\;:wikvR42W=EIeqa8x{vez-`Rp= YƳ^hjoj9Lҽ8Hw8++,eLоp kٝ4O!]/_Fa2:a* x/KFM@O舛I/畿'9Z{Ƽ 0Oh,`+mۋۛ+gٕuNPg&Mb '; P\+{U]Qn ۏJ\X*]9W\Ãl `V--Βչ@Uli2= [ =Z@! ƭ= Y0S0B@@@ʟ,|"DX 5헒هz_J-&rșWNEI/(J`ڑI(x& 7gFU85Y\xكO %ϝ"wȽZn]~JC|>~GzUvDV9r5TKfNs)ƹ#'5kAyS&7iFSG&F->n#ﵧ <E#(("Yq$jq\7Hڲd!Yf)T]6P!r;0ҟE,rF a7%9.v ZƯ+pjIt89(%Oy#jmܻ"Ozljʥz+)i\n4+'`s5bWl>ةHv|zUkHO$ש:+갮qm.i3%x믤ϹĹ~q\Lrʺo| ]Hu58VuE92nݚ/^L;vYfPăJr#ܮ    \εLA@@@@@j@ p +@!\+@@@@@@4PεLA@@@@@j@ p +@!\+@@@@@@4PεLA@@@@@j@ p +@!\+@@@@@@"5苮g3M~-R%6r*8}r%P s >16;F&H5(YlAA'Z}>T} Ů8>l 9fR{~g 'K=eZ|֞T+ܞ9VY*8uzZOKXL2\u)      P]K+/$-4+_Jh9"G 'ծc޾u@WH +S+eKȹL^f7x_G5g#E/KV3֢R]~"/?`6*ƿMjc'3͞-=    4(Ъmv:U<[,^HMg7+QgraRԅ*ƾUSP:Stm?0-J@ϛKΘ-rը_;Z1`-8^{@@@ TUu(zDa}_07-zC&Y#KAZ" j'.`w'Q=}?<LB@@@r.Vdy->7}=ɬq&ZB&ۘl%|"Aɏ$g"6돭-w$k#uEtqA=&{}M(Qמ2#C/킾vb:hO+^;0w'Ճމ{]^zO(v~ݬ\5y&IΘ{*uX}'=ؗV@P'[ZM|~wv=N0;/ȱ#un`E>uQ[7O|JJO-_zQmk(r-Z*]n71SKCQJ?$$+^$wN&I)SSGG?M$vuSd$Jf.Un)չꤡtǏNlE.Cv2Ւt ܗyC 6ܒ<@\vMve}rY!N5צg-Znݺ5-^:vHfJ P]رշ0Q@K4( ,;˘:.[ʢ(`s&E#-Zw%lپG:Cr5E[i"c' 4̛*Vy^ȑ|^"zn:]BCwk݋;\Q?{o(Ocw8lKr#[}vah?G=է򛏩H\%u2D9EU#X6Ӽ[a&ݟd^()vANe&ViS[@M;,4FoDS/c: %y8gqṉEH c|}IəHg]kֱg;(Cw!5jm^o=Jn<'̃9_rl|2f9cZ| b,CV~1Pp^Q+0yGK)0@ j%3Jrth#% YKGʯ(j֩sʴן!SwmqeSH0dXk75[zcr䟾5m̟4úʚ2#Fdv&wϔs0$ʯ}UdvFB'JװcP +,Z]+")e{LZ{Ӿ+ص:,c72fv6e}ETy?,abeҮ:;)W\#d%2=xa#^Tb}5#-[.]iE?ҥK6߫뭷UTTl?o<3'YٚSNԦMVXA?r tG ~q4Ng\/C~|UoSYÙq'6Ѽ-O&oky8)V*4+*VBY/*R^-Z En&z2띑kkgZ`SĻY IwιKlN\x<ZN~E~#?w ʵQق]Z@B8>>,Y+hV@X,+L g)xgZy=g{Dllv&P 0-L>){X~T5W0С5m!) )$=zHP:u*-X9͝;*'_dW?_6wUP>!䦈|/d?~_?lAV:UV.}H1em;\VEM(3zKsX2*7^h*)Xek GfmrZYӬgVgBNko=e 0巭@Bpb%o͖V[%Wq=e@"k[}8:s>Q|K`4٭<$SI8f]Z?ՒGQdMתUʯ mz,;w{쭶ڪ( Zk%ò ޭ[7c-ىl351`|ߏo?~=.^݇9VH cf09(h$DuX/f}Oˮþs"`gu m%e];K'0%QEw^xԿ" Jnk/,~j7IHEY9(K")U}3uF_DΝ#s}1}3)ވxepE%znEVf+{^[_Ӯ];W)E,={,f|~%W ZŌ_\/P2.j^6X%GC`Qz/MzJZ3-R+T;!X_ZrZ\Nq%5W(DK6c"w\\d91+Vc>CbOA)S;=MCI9@!аpTV>)rUbaZ/Gmp ռe){Q*Y\kU.&hNQ5vz42|A+-V͑%YsfDFz5Jy9|<{erXA<'Gޤr>8ޮ fRzVqNBEmeб]Yc5RP r)Ŧ+,d,kadU#E\!c @h -vWh뙜!y|zԧoH@J˺M=w& hN9Ik:ue;S[,9qCQ S`_YZ>~3>r;&sq5e fq_Yߛ)w5VzUd jűlzaAR䜛 jF   C=5LqY!Y9̔IQ~Mi?=cuO럿KvP W$DLDW /KZ Z["!,lIN#ѧ~-3WY*'sd.H*Vc_%{ޙeФ [J.}?U|JON*ܧܳS^\Q궑5l$W^01R30.ĕ(k<:*oN⵾ E~}gQZQ5&L6zlj8YNIVabfK~AW#zĚJie9X}]^})~Sx+ɑ;arXe>;0p-֑cX4 [\Qǒ[^ 8n 2v1Qbmݟ,v,4{0Ԕ>&OCM͢&oAћ'sA(5)ggȖGQ|i|ҬVEӨufy~LO$#ss([Kj+Hx֜s__Vl%Жxh}>y=D{/6KYP/%fDIoГlҌ",SiXI`ʌ`2Zft@@@K`QDe4-2:re1rxrFhQB"V0Q3r#(Ynd.Xt}EƢ 97 Wp.l)d<rzE݋EA>wL6R wG,)^D㼷y=M"w@ fٰzuq_Q;Im.لsJ$ՊI_cBֶE5.GC9ʯ̅чTHۑ#rd;59@@@@@%(A@@@@@9@@@@@%(A@@@@@9@@@@@%(A@@@@@@wk'9gs%7iFj.VYA(OPT{Vu)vĶ3cX qIMikyEN"e_ [}֠`;[A/_Fϐx_Oujaw?u{֕xK8V=HvVߓhR;SŽ^}I9TUb)uD. j0WWI=7e"+/ M(r)r+egw\se3={o`c{4=E47ǎ )r7mnOLƱ UL*܃sm:Dw>6m}~Ax1y?HJkOӦEϹoZ ꏀezOD%j*r~xXi z%X[uY $>kyN.LUg^c۩c,A>iM= 97٧\쨌ʯ45~RA{H@YZ#`o+lYk P3J^߃bmISQ츝r.TyM}.c!(u%Q#[(nt'(VPdojܠ9(UZ{׃&rIligۋ"ǜ4cx?v{A@iP}Ƚyl ?ӟK3 9@b    @> DW{}~'jމݝ6ܬ5-zϤV0 k>w/v_7r|kMζbIZl^i~9TO>G8͞Njv=z}JneUz*/GT´QkGrbf%zSdO1cUJtOW*SM}9ӯ av{>S9pX>؝p+O>GwDvǏ".~gyc)r^yNr* Kq[R}̓1< {/=na"<7'spQ}*uw؃lNX9RVs\E{!/GHXW(OOD?gZgO'Du/^ʯLԹQ~[FA'=^|+έ|^TQ`룥B/eՇz3wQ`-d{E\l}Q%6IbBΣeɑ+" b%նY WLZ$"l.TQ]kmX{6$G,v.9$X&XŅ;sWI}uU|!Wl~HD\ō[ĝE8Rw&1߄눔&.?؝ZD5z)myMG-Ҭ '#X EԱs}9YnQc,K{N!F1TN.   F p]j}n|Di2 0`XE)]7$/-\%o7hqsekA2oNЬ!*RKdU_SpA?~ *LT>k4]_y=(ࡅV `7hO"v(ّOZ?]P#y R:U:D&y)KHֲn۽obweKq\{Mnp= Q=boۼU5@ ]~B&: v   I py^f>PA257b`{|œJA{Kb]Q(6;V{NtF$Tlw^cMōu6kU+:kՍq4fCy{;ND{f-1hlv]7 0gY+8]H. V>wPxFA@"G t-[SdE5E#A pøNUfin}w>^[1K-K%M}(cI~.4sbBFɓ`PDGkR6YyMa>Ю"y/s ( 94mYolErGX%KEsʯ`s\0,~(!cY.j6|>َp'MS%k¡Lf ﵷ5T"@:w7o~Hދ2@'`57黒6ljvdrT*@zu꒲TR"#mDܠxS+M!bwjIc_1Cuu2o_/^bt8R?#!1(Kz~E(Fxu*  ++ > [-"^[,b;P_:;; L@D}c!D}Ρ={Ψ(kPdAǡA9_稠Eu9'Ǯ"NVkZrQ"8}J/Z:WP?Z3ۏ)^HTMlM6|#ryHwY܂/V`mIv;(am/;i鰥94H ۟bLŭim xswO>"RL^i,StT   bM^Y;XYnGpQ7Ut;ޛϑ˦Kq$m}&9OI4[ sjk86v!J_>}o%6)dI<;[+].9^Q-[[. yd3s&ԩɤq@7R@IDATPץDWU<)U<.E]أdI ps!@g-+_?vuVp "=s(cٔ+]7Jv9p>s%lHʓ䌻b&?5r ׼FνcZ6"k}/##N@_yL?M=hH1T)$GFqTrCcRl:y,!9xύɻswH (ORcɛxw :2^_hd]pbYO#U9z>MfB0wr:{3[GJn8RjuEr870?}薜CJj HE"i_wwGsY:q&\UST<1Y\mEo}X/qwN6W_+N}=~% /qb}DP+7 QB,;8q@|ZlŎ.$\p+ YK&,~N-I"ݻN cڻ s?ޓ>3:i~0<ގ ?=L@@@@:ŝ`sRҟK…A{,6+p1ie.hUZ/ݨhMћ#kˤSCb舛>@U]6L}.:hDsۥLMKO}}3wx }ĸ}cS[3 P;dͺ'߻5jKAE+j@@@ d_8XSk<v=~lx~;ܤwA}VFާi6oYz?&`u;+XR2r#~=ӯHQ~e" *r}6˛h lh}R빳(5k4l;7W&-&N]bKY_ٜQ|N툒z$7FPh/#;k?ܭ39@:C(!{ˬA"+L3իo2l/[XH@X%:j4WӬu.5ŠI*0^+khedm8(|bm)ߥ{~KM G}G{'ժ9wT{qtvuHe/رHO}#Q3莽bIzm@@@ t9\:vD֪JmT5>|lڻD޻/Uy ;G(U)=ʴ&iG:׶d[Lg>"!^U%;`Ivh~heݗlJ$%~wj,Ԣ(V$r-v(x{X&`ɻk˖]sA Dq_ZcM"vUֿ|T0c{U93qrXWmqϞ218(J,vLB hǡD$/@ԟi};@ 2NfpTYS&zX,sAwE?v7ٜ+y?"Q83b9ޖsDg41F16C* OԚkǛm,ЉEzcէQJ%|A%Jϧ]    LjւD 1ܠ=Zυ(SLS}>D cKG#;{וdE:%լ7N&(*YR87ڧ\FQIڇA0圽=%{A)-U;6]bڮS:Ӽ '$va7庙k-$@Kti4\WbjAAޫf|^qo <1IS[/MTJ4h@VԳGqڪ&m(q7NW~ьDALmP{({Xt;4l%y%ĝ4(<x E. v4Wze}i -x mx6VdG]V[FJy 2l|7eоŬâFo#GU[*-W1u^ȫ+y%I?QXlMьZlId'r"X^yZ4zdi-a]<>>}za޽;mYs̡><(@pgM/V&>05y]pq?|//F|/~kۏ"58[uv%X">QvL|SYc+-wV$=w(z$X;MrzAmM^xMX_H>T *thj/As{duMZ*=~(&XBDҐոIoDo`*+KǒA\^wŮk4b?c^k#wX|Q;z}+V4Qs)ҿK*{ɒ%Q+Ib X,zom\'?{!;?]:Pŗx'Ȩd'r.9(bexaZJTfn%oH䦤4vwOIQN{#}}ޓ|sHSæEO<Ļ٭9nɵv=Wޟq %gbۄϡԢYii {t;U, c#<YW0br1U:T"װ_^|EǾh㤗c8nPVϭӛTLӷcK4qڧtU8YDXLG9]4}i!uVnݚ/^L:t_~I>vhmOB`O'(DLǐy| ?wp ^# ?/!5~_?MV/mY'Q&&D :&'ŮV] }qF_DΝ#s g5}%8]Jn'Ɏ S$%gEF%VD#]]w\ŖXջI^ Ŗ$K`/#Z&;b iQ Yh r gݧ>"LtJJXȍ*?5 N (+zB򾲟BxmV[lU3_/RοSwQt}7b+pX\wfW\f}􌐅S? 3)]ǔNԕ}mv>Ŕ] %kYLabS^rXVzNR]ӷ~_CK@<n:Oj ~emқ"g^MOMjzr) s кdJ PLz@WHJ 8W@@@8ǫ[U?hs2)\ [u"ȗ 6▛ٝU"UR#g"r=##Cö12,.5ɫ鸪M[N[O\;SL}}.;[aww)Y~=9_P3AA@@@VPZ7hVnޫOgʮW i\ZglJzP+cfePkvb fXUyH'_T(T8'ۆߵ#=7>q-9r; H"akֲՍׅՕ?6[h#5Z{+ 09/Zu5*f+۟.KtTG0+cm܋`mi\{CZ"pn.<):u7󀓚dwOXP+* v { bEEEaEl`TRm7e{\n'd2M   PO Xt ~vףkdWbgP2#$fcoI{_qς-cg8Y64_78ws?Q~YaOmӉ-퉘e7>soƞvqp}rXO 6~Iҭtq'K(|@^,?ab%qu8vE}gtKJ[A; g``}R]y$8~־%_d/Mϟq[2u>X̋F}9oE}I)w\ @@V8XW8.8QIRQz"vף ;9WMT1ql"V8הX ISc)u^Y"0m7-='PΘFg8$"_zI%2Xf|Rd782Qw/eql${r3-v!* \.M?zXD>Hmɩ1{W?6s1[^DYU<@$ٸ9ڹdr8ѕdk*oKƤgK$E qќKDBDmEN($Ê6g/i~$b}cMB0~>!osxp=>Cn@m\ X Gź?'Vm8H_+(~Ab [YyY^O q_qv?r q䖧I"^b$[8[TRYe_uLO\xsxWJ;zݣtғ&({gجi@:9s_3gC.eGSEN/YM&-v$'a>0v`]xL>Xp^z5| ЄCIqqL p̦JmYAijNVS5'۶V+hǝK_XkS"]B'&f_~A8S?H^z;HwFKEpҲ&ɢrSq md(Kd]OOfE&R[d,;K,Wq\ٴ_Stی3;[E+G@@@@@ (RI"Ey}6iE zߙx`v#N"_\D/oU9v[}uJ%u2xl4P5X7;Q&-j$ 9c@a@3k{ ]yhт,X@[.@@@@\o!uZ(%@&[RX      u:{k01R\J @@@@@@\go &      PJPKIcYP@@@@@@JI p)ib,:K p5@) @.%M      Pg @(%(@@@@@@,HY1**)}6w]A7k`Au*'gef5dqz>v~Bd٤ZFdm#Y{JV;>GA@@@@MxќSu_{ 7{ OGϟ2&6JC@/YDܣ~:h>KϳG{np~z?DrB9)rzBuT%*g _}Hj |='WD-Z.@hԞ_,[Jz#];ET?4@@@@@H%DKaݷ^ PQ% L +} z:lO;\b]/^H#n{I>{sp@IއoBi:QJۈ&km*;   @[oLz<"yo&}mAo>ofޅqIZg=kEZE.?݇o2t_x k{/3J+=)Eɋ%˾|HX>A@@ƒOΚJ]JøAwNޔωf?:4<^Wxu@U0r:-izh`[l{Co7W ds%ܪ w5}ԟ_O%ښnh&kR ohe+Kqc=W9>)x?}M[/?(ZF[x+cT:sW?T6>xrXS6،#"knB]3 2IIgBǴe2r}3W6m{#G ~OFݒahbzwN7X-aw>"`}r'#-OΰMKISvޛ.mpyNƎ -Y?~2n ?gM񽶏<{__%o9J-?Vd5cOCؔk_H|zN9<@~!) hΛ͓uI\V}Ѭ9S) }y8+|K2^|l%ERR&+D6yYϰʧqF3S/? X1:hgzIr?38>TK!MYey?BŎi % /̌s1òd~\|k1g/@=#onFsfb2'V$)WfݟcגXA5V_iVfĚgXQPԦے}qE@cˁz9n+N38W&ֹ>x#1.'W?#N+NHϟ{b']}l9%Sļ,,"#d.Ƀjˎƻ@NN'oTqN{rb%7}LnV/I.~^K_q͏zɗ,i/R-"=_r1\ۃ}eO !M+XqzQ._~W³7w+ʞU'/_|0?~/+Jkc= F(Ȭ - v!_{:*)TA֎WgYW"R'w&ָ& r@T^+fd .zһb͔ZY]783QuXǶX9s-2*%/:yR5~#`v[e@N_ܔﯜ>$QxE5͚5{].%qW7\cb-2f!Vjܖ-[ͬr-Z7: qnػ!߽?3o7~ tN8m-@TĆbq21ۙ(' K^q\d=1) _qOrz?r}Eb1Y~-ɦ*@FTۍnuڗ;fTz]N\wٶ/9l,F];.VXʞ'ډu]g|"I /V3)r>|*mN]wk3dh=9ܑs{B.ېXr\=Ԝ.M]bKOhݺ5Ws֐ oVk'?Pu.N`{$11p U@I(2&J_ąz_}%~K.c 1U$.DJ%ILHJ#tE/Qؤd"8j֢P|-_DvofLƷA'Z6s5\c18ǜsxQ$]iXlOދ~=iurI?ۂ6ry&B8(T)_sUs&ϚKQz»RT=KA-]8   P7 @ŸAK\$o7-".9$+:NW2=;F%(Rk" &U[Sv(l}$N$uK$[}9s1;g\Ruz\N8=q,ۂBX_TufOժ5'Ścb}5Wk%Uv &= 'Jy*%' ^5#\TTtׁ{fsd HjZ8`((rDY-P$9QE+yW%\uK25ٍY>+NB/#sLeHl|y}j2:K/+Vwc$).dIeHIؕPQ쒹k츥\w ^,Kl gdʯ/MZ͡<5">p? ͆9gM[Fr.I֊U,? \uڗ_--h@S«[". @@@^\n$R; ]vzjfg_Jk[o{όr=Wlbq_Ƿ⫶-e}2+2'v$ bJ~Z2}n}/g,WS   LkfbmeYETGeK*9fGozASwIV65ܠYqR'i7ȘJ:[t ܷi|8s t fbeoI##ZwpMX-5Du_z2\zeKʖqP'oszIgr2Y6S \ Uס;#?b E263,[{gS7!l4gvEj.!E>GXYZ$eR: lv*׃}X'p\Oe&ƕpf9%(M}tBaŠ u1(Υz"7YsK2̩ЍR;0Rc.%WrLbbu9U{aqH)V=Hrwȅ8Dkmx{c9c3O_o0b>e\V`qO[<^{Ҝ[mޘ'eNK@@@@@`E縞ܗ&1Rg7SCFtpMTDUp/y$IN$PrNVI,nH#|D/ lݎ :\X%3tsfL#}\®["UGĒSu׶w?N%?}\".T# 0[}l97db9Ŕ_h8NKܑ8N!;-yY%f]qʗ(-WoJ+J$#w5']r-R t)(h Ŋn`4%zk KSb}Ee+2K'&Q)VDw~oiw9V营Qs_e+$ >ġQ*^Kʋp)@|X@թkp:R[ms6/ckSaXWf,L-=fV+妢7uq@¼yc)-!khx.&Hl|#Angcx6>d( {T 2Nh"}4? ~4{ȋMH=Z}-R[w"N rX@ W>'&j9D ĝwOS4{Kc׹;i=g&響%sXtH{I5k6@#$P W/>ܺ's*~G|U\vIϐF,i ?{WQ~-]I/~   @{c ndmMamי;Hޔ/HOHkRoJ:}VS;q<N9/ά݁sq/<4g;~95!u &oXRMdtf}Hq97yƐf2db`xׯ3O#×be]șWx.#nC"}1'cqDv3>/qu!ϝXƔR?9VjB oO!hKmosϽ?6$F|gLR4@2Xh^$/I!   ,u2n[dVu1E-GV6g١$ V\_d_/%.òڳr;NcEtrY!NV&ni&LWaBqg,6܃ٗcⲉU}穻ɽ*sZd#dp\!<ɠLU9a|U|/1?IDN 4evTcp_Z$>J+> UBbDx~Q(ŨěS۰;zgmƍ>1'Xב=A#S˺.wF^vfP[ҧBf.{Dׁ"ʸe{PV%@_&-ZЂ uT^^/6\C7h5V}x<%WhXSX9te)#?}Oe\&i rIjMܱhQZ/91\[83VI%ցM',V6ʡ{^!'ùﳒ>23A=+&ْ9O OQAr4a.[jzM,rL, &U| ŞcV:s7_lvV.*Y"1͟cVFI6Z2$4\tKB jWQ Iԕbj@IDATe/,Nڳ_}$[{+|'>Yl9MR܉7?ޣ+QtUw&kYHs\\ۃ1!nwip_{ p@@̚Z=Y`_yqíIe=a Y=N?k ٥V) feRkЛcaey5b]Iq -s2k}ڈIx۳(ԢtŞk;v8]ĥ1_Pk!֋>Oi.VbS%/K{Tc5qkO^S1.I7erQ7FJ\C"I2ĸ2=JIR,rOyr: j\s=wz2581YѤDWg+YR%!_7yTVVX]7l,Od̿Jqv<M6ln_02?W~_ߑmyߏFzBpҵfeLU|+n}NdL2KlŠݣϦCy~#X1Ɋ Ln2QbDM[XBsIj&_v"Iy }\ekc!WTx &nYcqdq.=9s'J|/kbKydNS)Ǥ$t ~bdu2?{BVe޿V?.)"Zb[\;R@Nʡ UXbe%Ю   4:*T+v?$WX\bcgMWZϷvJ$'/+n" qKZ|=~+Iuf>تd$PJ8YVG)Q7~QytNZ| ċU^2ku]lJ}csL_)×,X3Q-rdu=   oI4gb6#-ňpr8fsj6s-[P:wqMl{Jf{Μ6"$f/n&Mb)Cs+3ъY2WlyX)~;MOJR*< N! 2T>K W1{\f+\A'4@`ǜm:=?% rߍZ lzO`Jڧ[03]%Tb~V?t) ij&Aݎ_MI8?=kr)OjYqH~{C"N$bşf4)uq9~xϴ4[?FO.I;86%>6_+]fɗkׂeH+|Fs`_ۍ>3 =́/sNV    B+Sasc/ KYd p9}O J 61>kY4({ EuRɌyI¬6;𡔶Zeu؍=o J=ru_x}QȹqZ]Cw ZZib߬)/i_ \ָ P1rHGl%EK1S(r#4W(   @WD-q|}{q"EGW&aV[~,|aWeJZҞA|%ecbOW&^7ǀ&cI݇n$aIrL/qI‹wUp|bW 8;7'> I]b֬LTIjRɹtfR\X$aj!{lOU}y\@@@h XDq,o#Oܙ*?ܑeӎAv!G4Ll%7SkeP kNpyJk됤% W{'I:aXsLq1p)}䙤2gq#]KQ.p'p$ƘORK~Rn$\6<^chCo#yQgzҲwp_ERx?Mi+/X)     % ``:3d=5EԦfg/Ċ]bYGEQȍ/ 2_Q& 2 W~ڭ6ڔ?Cʉ)J[Ѥ8wfؿׂ\?yeSos} UFBʯ(RY^pdZdz1QR+tK!JNIkE϶<Z!}UʕWE%U2#4LJn1Z zi.mL&QbOe@7gE-rcMEieA.p蠛XZ2=kZu N"֞FM ȥw)[}1/#zTuMbF\|)vW}EK-hԺuk*//,ۊ#    P7 4LxQ>4ʯ:촢"|kY!5JiQgYI-(|A۶$)[ pT'Р\kgigbE3[^@%Р-yLjI'H]߸c     :t[.${3H~      P4@NPڦ޴[R'-`C>TV&?,.d?Zסb*H=i|\]q @@@@@42Ha(TÀ1<4`pn7K$Z       |s4JP+Y      Ѐ @n7K$Z       7[ݥeTqf9NWD(&D-V%vC=R|RճY9`ԟHjCVdѝv&o*)"?˖Sy{tK%DoH6lc ^fjE*-i#uWDm+/on^P}Yw h'N΀쳎AѾi@y6.{$8    $XՀS* hx{#I6!MP~y8s(rkm~4Yu}D;]^r8OXcR_9,rFC&NJ|wG/fu)ʯPlU\Ͷ7'xnmk2~S:eKkQʼn;zh@ ] #`= :;\( @ց'Z_?-\'B,č:$LmёbE6r3=%Nni^{&6A*7ȭjԔ;Z8f{n(@J  v髿_j`٩r[=݉,YHF|e-tdzߘx[kIm̉qBS]HnY2'[ 6#ȳڧ[Aâ,oߓt VVڡ#֋>\~)|71ڮ37@6:rDz1gh@:Q~M;甙?g>Y|#E;O?@VYyhc̡'NV6E2=HΝvOL bm\?R-47D $ )&-P7%KUEwFw!w ?;̺?{c%SuؒHr7ਵ[zʗ\6I [LDE{#;0nל^:[Y+Oسp@@@`<%'`ڕd`YꋸFˌW/YOVMfV]"q4NS=-K,dl8,bel%;-M[,\{ef}wgθreXmve.edw0*nduHm[͘LKj8_$_';"mZC]1(#IKqPRԢ\o5x'W ;K Hu^T{lݕRIa\xi׹;N11q5v"IȖSǡQڵkSY]p!}wjڴ)mfOsܹe)}vP7zF}Y(' c硾q7x{f( av 'Y Ix}pdO[XW&Vl!ɼTbiق8X&Qm7ȴ{٧\HvkL"]o}IJTQ^u_56+ıƒXbm9E*lӜ4Lܫ{Ϧ ufFOXzBhvaܝhfr*2X tRx{N:ь3;N:P pZjqգbE,nz~~C_Ͽx-xnXK;Tl42P rO\V=_ssI8p~ltlb&N -u(Xq+sYw/V1~M ]>/yOK-nlyI"H^2žm>^J"n~q~lK%?6\mpFL'`_%`^l 93/a5):DoBFJ.ЍIJEALX\G6ʁ jwL*bq&J_)$FzSOAjKBEQUe֐:gֳgryx HIpٕ{NgTk3N 4+NGO݊3Z $9yWlT<*{7,]sFj    bs1C ~UH3OV4bvE.=+hUGq9g%ֹ$:Xl|1CD|:!DfSŹl :?mUI-\nI*gV-cbd3edRGXƶ;\2&Ȗhv 8+r6DKln'Q)5yҧ[mWIs/g"ׅH4}^}*q]GӐLa0gS\lFQ'.{;ܷL^w_X$N,ִ9E.CO{U>}t^GWVj#'dkVtלNce/9y4ZhA ,֭[Syyyg $OBٺͩʔwؓ^#8!=cr*KEHvK9Ns!WqMQ9H     P`Y=I $^jCll3".ϊ3NJ%Jr"Y5+2,D;sEZOjU]\Mi,1Zb'SBϟ9cfMfu+k:i[M[^dxQx`N'mB @. Pm$@@@@^ tm4@K A@@@@@%(a      \,1ۆIK p@@@@@@^\/o&       P,(CzI pm4@K A@@@@@%(a      \,1"r֘thVmHnG*-|tB pCuxM!oPr>G߬nZv}B/> p*:<~+=PPl{fM__'^RJ1g2})#$Y RoJ>N@i~U\F%tyX-DY<@] >HZr\.{*;OC7-W嘿Cwe}Nt;cD~6E.BVE`jݺ5W{    @n cs Hu؊]1nϴꤧIǯ{E"I[ie;vCp{W*jb*%i=Ugɹ`թ5aKoMV`p{l)N֦ۑ^_#Ʉ1v>>O'jaI    L px ?sTqK {3NOIaxU{b% 0>Mu=Dn}= 8Dv"7=Aǥ89C$ݚEJt)n7)~־85_'ݞ 0%:dR_]\]r5s?~Iz,RDm9)C@@@@.uq5tNΐ~S쁱Y_AmO;3d|oRU_9hz1-v4Ģl⃃Ш$Tؿ==n/8*@='0oL p=&Ջzg{'uy?Czο6 fwkC>*>쳏8=h7mn%3ǒ+q9N4w?S"cE{L4t    P6qbu8YloLj8yڦI6`r*i%o?}MԟH]6rHqL}䙤beUΕqNdsi=o_}> j+H~18a)$#hcIIZ׸FX+v.1/}cyTR9d3XHX@N5aɛ4Td7']@j)g{|Lk"AYÖ6ڂN#IbɿxEeFG\e'n5f9]d=Sw%2R8><{_Ϯܑs%f)~DRK9$cTGϞI=WPX/YAўGӛ4.1z(~Ir_Mg5DnJvף1o [̶2L6P4Q%:Ģ^Ԥt"+n[2Wtۊhnq"''-wJ\ @@@!HϿ!!MqIW' /+]ھ3Y;VHP,#qtA>˚Hs}x8-&0+jo'#V^N3qMiXrN%v1YҬUVc#< /ӬĊW-+ԩM%bsf˕J&>OpknQEAi v?ΔLz[Dlw0q PEJ/3ʊj)_Ip yY&w}&}N(>%ؔH@UYcD=hW,N&r\_rGe7WծrVTS&F&U:鳯32]/}0V';|+rP />ŷ5U+9l^w Ŏ*Nt 7Sz+}MREӟ\Z>~-Jp.X͉"j_:?qGݳݷ_"ؚ$_.mxZv\H] 1dly*kSEѻ^%l%?'l-wr*LEaEod Ro xR{6-?X    I pm_kYJZJKf8ű_9(qnD$N(rL9H3m ). pR쳮LQ~eV_>P~V^AՒ4в+y8Y3^ Y#mΗd2I)E8b,ʷ\H~rlKb5;ɥ+1+ѫnc[[B-Ч- \ uLOayǓҥKiر黫l7oޜ:uDVK.['MD/r~6wؑV]uL}SL?3P_d͞=>s9"\?}G1*>6aZ)~c {dZvn_ҚTQ"ʝJ,V]_ Aey IJznNMҫ'd~"5]_#㆞<1rYFrz eEN&H-8=ARkN|Le0̝;vqG*++uٲe4mڴU9sUeYf9Se3gP+?,w-p'?_I+ Ͽ(/#+HU]ru<KRI6"};yUIzٻcC73/fX~ίTϸ"=8m7#X{ۛ:OժU+o3+I&Դi rƃi;Śܲe˴U78͛Wj=®nbMV~"\G6WG<璺~c nJ$o [xS`Li"/dLq\_r(aR9$ )}Q4Ms3XrYJ4e=Z]P>|Se+;BAK:7VVL V9.˾wնIecpi5slIg9/+gus-Υr}ʋEGV*ʯqL/֎{͌_~Nj!EP&6@PAbG}aDEDPT+`,"DDAE,PAPyݻ^sO'O${7yf$HJ2lD/8ghӰd K^[cQ9X3Xxir2G)t% ~lx pYۙHq>d.Ѯb!9 gq6}F`Jj}ZԱebjйqdjGk)x)gLz6e7sK-)` I?h4W򲂯?I?zғB <8OsuZbK[i?Śh:ƾV[s /.R܎m b> &[WE#=TUJ`ge鹛K#/*( J> q.q0yUe oiՒ+cI?% %ZVF@!w5H<;TcY`#DwA@@*3(>ޭH?(\ؤ;NI(УZ^{&if*(laOelMv qq7>x-rX=JZi}X$'r;^LV`k)֠ {WI_'5wٶރTZ*+ʢR :nRJZ#9,+ix%*Jc* /'`kXfEƘ5U =rx}ְ)ɺQcd\U:;阬~jM%],^[*oMֶ3I(KH[NIeK+kp;Y٠87;jNv[#~ReV%"r67:21wVd@s[UYyX۩>Î!_+T-ف!S I H9Su?LGc8    9#8gh۰ޮ3G=8`':R1$Ɗ.㇯p @aɏJX?i,o@Y vEW`#FS4%eמ.k|I%g! uD֥C{;ynwOнܦ~Dvb5kUQnEtEdݷ3m+k<2[$ERłDֆk3Dz{T]vgP4򫥤 *z(I–RߵwGqD" l`@IDATd{#q[,Wڸj(T;ʷ\z> :c<:4Nb\T^L.ãegp>rө*=R-/$ԛT|'qwS|=P_ީ;{XR~%Fpu=Ȓ,A!`\V*%PkДZOsܚ&I~9O+ʐ'_-n_8 ؿ$ђXA]_#Ѹ\"7|W+8EGi;q*-UFl׬Y6mD 4UV     PJ p) @ $t@@@D    &C2$`3K?gh #Zuw2\D7\"`3)[p}W ǫS^bs~]\@@@@*`mgxNqY䇀m M&+Jxhu:>a+\4ݸP]kW^)뙕hZ.ߦ,p)Lxs2S\ZE^ Tm@ߓ|/Ѓ* Qѣy-h6WIYT}O MzlSX]9p ;s^ʹbWRlu>Q#n%Zp5م6b b h!LИ%u~3t2fߺ)ImW*ه$)Jϊ6{>(UkPվ*Ϝo+clhby=AS#1$oY# GYK`߱g.~(cͼO\[T/K=D|(HDtae9@A*ȩ /y(dH|ʭ%VbEtUvŁ[Q+d-84z0C{}ek!.Y,nDywDwJkk,oN,lV8]L`vתZ'F rF3yr+XP}\MR{ Vv-Q͝b9xie1輞Ad-c2x9қ+x")G5g'7.tHAp0Q9VlB// H5褓N"h۷oӧӑ~ y 4mBsN?>-_ ܢE j߾cO|qŊ'bL' LvJz $:!>|?wgY$,<Ev ز1j/[&/f+WtiLDʯu!I+Q]Z,w@\IxvOO9H *%|ﱋq)O4Yju <4UeC*r'ߚ"=e z+mi7Ӻٴ+!z_6L1Ȇku3J2#5i7Ӻ_X{ -3r *qT7-4X9u=Ho"i3b5&Z"b jձ%_R])X3֮Vs(å;^(蝎 ?e~Gu\@l3X Zb?YJ8H`*זz)PXmj$.DDĭ\=z)RjU:^r*U3ΠhY _$JֱcG:3n.6nX;?ؙi6e??L3ロ/L?T= (/*aYc,QФ~dfm}i;v3X$);S.[L_M&&Ioā3QIJqsc|%Z/`b/,+sb/6Zũ{Zkmj孖~ʗ_yc?eP%Wns.-6A51 M ^E?qsф"kӴ rߒL]pP,?9]VWZǚI#2䵸bsClV")S]^|(&j;DJsbpV3se8 eOIc\$qsB/{qfI!    'P prK$ya ?X3t67kIY|j|N?l|1M~y =;tY)ȿ,$*J=.:S?YukV{jyϵʱ?mi*/:67q*w"?~p'NG5BzEZcl!xEBe}e|*TJx%InRqid+pca:;c ɶl+jm]N(,:k-r9DVVDXiVdxfi%O֦GzZcp0c%ؚjN8q^bNdK]kukVQ4VßQO, 2 tY!HdfcOuU) 5kQ *h/(w+d-ָ\{ؽ0}tIud_K"93ҷi.(ҀWYك+cAkQZla^hdyIe۶CQQܢ6%3eK`AA"^GmŅ<4#Z G5։"'&3EPn[Rz#s]-Y` d6X^_ ݙ#kń{b&b,~H7[o 󐨭s-nESRw=Th\V/ռ>@@@@&)ocӈwh"Y Y=XIя<>n]ʮ]ÜoV؍wYy^+٭J'KeǐQ⾜B p&V#joUU\=TD,F6Lv hm~왤UvYkpl"dnl?T.]qg ?q7 D"V0wVOg8Yuޡ.)M1&xW8rYjs/q?[}E1E @@@@S 1 c9fÌ뗷> T|aG Nm;q^\'&cR^-we]Ir^=Jl~wEYGr.w>YfƬjCVl%Йְ)rOx92p6KrZƱ    e#̖5c{ܶkS6kpczn8ҰXkY!|գ.A R 6аKg[zl GU.YqSoי]=cŰ\0BT5$1$˃"ʞzx Ij$''>Wc?]][1Ca!OXze7U÷˄|ZnTY9Zvo^B:++(=/##X9~Tj+R 3e,Zk%:J     c; 6pޥ-aq9-?e+)iP'GmQK,JxlZ'h*z3mwkV#}l)L%jK H۲^$XDVU0 sHo"US>;r]<-޶uJVɥ5oVTk<we.`(1׻?+ <)BHz"Mp ,󫹑2~GhH_*UE%}f:9G^#KsjL&K00A5i_2h,Ê\Xۣq?1QW#y2"-b \Ľ})i27dj&mVn0Ȧ5kҦMAjժlNE]A@.CA@@@;vHhGO@@@@@@E pH:      J pA@@@@@E pH:      J pA@@@@@E pH:      J pA@@@@@E pH:      J pA@@@@@E pH:      J pA@@@@@E pH:      Jϫ Ud^AT*iVN>kr۶ћ:Ef45I?;.&-UV'{"STo/B暕UEESu,ړzj4|GnOu̮TQh̠2/Gm= ڶM^.m.zo(xg__?j qT6>I69xU2>BIȆ`_U 18+<9R=긼Hv,7L}y/s޺j;|dr?Ot^˔@%~ 38=$[jl ՚GZ}mB_:<&2 2=G-%P:+w!a *:UP%x2\DTԂ]cAA@@@@`G"-$$ L7Vn[XDGoPv= ?v?x򊵺M&T`{is㿑 jZ~/址1 3_'g i5jw+2Oo&A@@@Gu\׆{r/ho;"M=רOyu8g}L_w />L,]͠1iu{q    3A rJ'T~vi:Gv~y0  >L O^]*5A@@@ub̆H+928N?pA?+z{S33U؋>!-P9    Pa\U g$֘g50_IS ӦX_ˮwYfd][$UQ;*]3#J'( ͅRX~^ywMH0G?'5n*n1 `?WA NewN{&)EYkeE.(Ԉ+KcσdbR:߬u qAjBiGgT;2|V~3*sd%<~12ݖZu 0=,?jE/h vzqZ(|}$/ Aԋ'S^%@@@@ke쳱h}XS"ɔ_i+tE@VY}YA0ZT0K6onϏ@FzSI;Λ7@yE;ŝn1 ~]!l쪢5+q^ D@g=4u 8OߏG"w۷(@Rhd^7]c*_ϥg9"~mH?IɘHnrYT|:wli^!h墘'EbV^ &v}NrY"ѤM-2Vu BKۓ^3߈E${N*z ӻюJnc$-HDu?-"c4cqπ\ِ pP@@@* {4M1غkYʹ&-(ԇJwPq\}Ң*ő6RЪ-b8(R4wŭ1?0_Vj%w(w~?*h"IEő ^R&-7#)VϨUIyKثsP UwlOַHP}m./@NFnPHNUj } )0\"X0+κ+_ڴ?sVJr.k-V8TRT%c(ԡa}LQAd5>jG^&Yʯ{Ҟ_՗KS_&dWu%x|jժTZ1{6oLW2u8*iWk4bqbwS„]UE (nJXIH9oxfYCv1F`T nJY* $U/1]{~¹6OMG,/^$ d2oo& Oy>Ϟӡ[z{IV EghX#A % %w8L^k~5LKuq_p|>KܣDz=.nN؍vyٗsuke 1=՜X+L';s/IQ/_V~1QscD P&kРAL uԡuvf" : 0Ə_,? V sJ2\Z窨i"3k"㫏&(5$ vc}*EdXj+c䵩&GVŠ#n懒|f%)l([Q$-y}m:΢(Ikqua(D6,)++1_Zɵl5]u-9, Dp^'+xVQϼXmȺ_VUNKwX|%b%6ٕv2%H\y)Nt 'Ҥ(t]v %EV smFqjՊMmsIjƏ|ߍw`vs9P7zhC/>H?u*):,溿Z ,Իۈ<*vP1?V9VYo6n-[mZzV =:L)n%Εξ^/sO}>: kb` eEIf=8(՜&Y_9h-%Z4av^N5B3RvxzYO_(TXy$WXpmx*{c VJ"{ q=;J-5+VGL'V [ijֶVQBogyh:X0THKsl\F,&b%8SȴR-YyQهD\riD+; \܇-%֒LhdXuɵv'ZcҧY1$و⒠sٜ    y'z?xdH$LԋlPǫv;sD[beZq,s0H%ckW)䛍9+cD̘Z8KkWvP˴ U;{ZrNT^~,ѤUJ$TvYDI-YlFH/q%μĎQub6 ZRfR;{-&uYg)Ylh;UQ32rgq9T3w`B$Q:"0UtLJY3>5(yO,"w7?L:&DȻ*%kl>ŕ1W2nGZd0ңJ}1[N&ڝ뒣)^}9):`NIND{bkd=ޡ}Mj w;ٮ'q8n:1۲vkͳ[F{ے3 u,eZk\z[eoʲ:݃/|F:f5O{RꌷWVmGz-aǺhu7|e׫")t'Sp8+Л -xUZsWX9VWtrgUp÷51łTljd -r>ȾS{G8D6*-*ERT-x;N >Uc~V˂iyO`ŖhGoنwOdϋSGK}#C5k@<ȉX.aK H?9Nnie30 ;IH$R鼆òW_Vvy$b$<hj5j|>Y Q|Gyt>GvK\#+(\ˊM""=8-~x BiAQࡩ݊5͒ߩx? yH|g]NWBÒ(@J4hK$呬Snq;Iy Ӳdq xlYN&ncKyHg [J"K"dݬx     PQ4vd/"zE-j"+WkД]lPTw%JN_aIMK)7j^h+ipNܖEGȼV(l+T*|5Sdf6"w՚HRh *E4k{40+ݠ#s+7Q/E[' $^fMڴi5hЀVZ@)qW((eS@@@@@/x`/      3Ps x`/      3Ps x`/      3Ps xKA_@@ S'U^=    P 5k,HNÇSҬYh˖-\@@@@Y+C.>  o]wm߾.]ZKP(ک[.Nn x5kԽ#=]6<;UlݺuKZjZJHN _6mڤQF u]sz=4^6nH6lPVթSb;͛QרR zVjAOp8@˖-~P9s&uQZp29 _}BrG@_T5j 80wCN@wѪ1t 'dgsϵ\ V8.fwڕfϞ]>O}.ץq2ƕ@@@@@@* Kƕ@@@@@@* K 5 1zVE6~駟=Cny@޽CU:#<;tml瞪ٶmۺ<?vXի}cCw& nԨQGr#D      @.Ѕ0K#@ @.7B4      P,      &@!\> !2N8f̘A?0]s5u5ӄ 襗^6nH:tN:щ'HH 駟RΝi]wkצôiwI[O*TVƌQ]T _|Q=l@iٲ%]yt0ﴈb%ׯ_VKXx;uX.5lؐ>cz7h֭Իwoڰa]}Yʹ# swO?EeUO`۶mtӷ~.^^=ejժ?#{(z֯_H=KěnͷϷ7٫`0H={yݍ7K/gVkѢE$:{DҠAԡvډ'K+V~S׮]>w=Q3ؗCnwqep!?X;<`>I۷oܹsMJb ^jUqlT v{6֞;L,b)u]'?3ի+f;UE=\n] Ϭ]oqu|![7x`0)oy7oI&Sv=G~nnڴ)j0ٮsG6֬YcVZUՓӳg϶bsα۹ꪫc#?ܚomyopq=9s͛7e?5jPqʯ{~ m?dk7>+(]w:;Xg yb)sdԩ|v=(pkwqꞐcƧGN9 ,QH$.(%W[n{,fU={^! agn9<߈@@ *wd^Cho\bDP)W\q 'ȱ'xĝ9p4vX@l%c;VCnv2 !_[TN;.lZmA K %qx JrDʪN!IXygԮwޙ.j[N_Ipsyf*@ 4~xhQWC{i]NTuA[Ee~vYf%E?IDAT% ~u Ї~Hw}7GK7Rɹ~ _nWn[Y,/aǃF[-?bx;R;w衇{uOCM9R7D$tݺuB,^L>h> ɪa5ҵ> F C@;C:ȶ}:E>ST%`V:9ec8XfKz5kfݎX& ""/Q~wXle|I`:2$TbwϷ[i=Rv秦MfVGڀ䆀\D 'Aj׮UzegTh<ׯ__)PV˨ưSn̷t7,9f4 {Lʯqҥ)Rv%_!$$(;\WrZPuHQ9XOIDRgϻKwq\搀,Gxy!ƑbQTB3 ˅:._|~^u0a5i: $ i;Zք?*ݙ,o4gW^ye\Ϝs[᲌Rqoiyo(7߸2G%a*&t֑<#\+V $kǺq 5 %q%9%[x=NPe<uokg\$ (ąVK@W_}UY9eI5j6>sKpNJv=iSrMBC@~3h=j>v(r&-#dd ȿ`<ˮv-dd^xI=77|)g~yqr #̷7ر 8B0uZ#-.OV۷/M2F\[jOKI>(iF[v-=qb|HDW: f̘AN 9bf:r]Jdx~ J'NѣGۑܹ `{tx>|旀<ewɒ%Cz!9]t7X=3n(ϲ̷7»Wc H0KuvOgZj%}' ApzIl VAuWRn8s8%;sO@Z+H߈k8xs?B6-},)z{=z_rI>e}-εJ|q]>}:Y֯_O7|sT'G(̷7MY\ȿ8iXb?u8=l{39=ܽ;v#KoQ)BwawYFg,{Dwy'js:8MVO |gۛD7l)>@# .VHNu$`ruŶu*`=>7xCY$UGT_|{|RSt,󝢹8RA\!# fӽﳽ3`Ց#;.&zgKA*%k N6Pg'& ,@ebѕ8&M=<ݵࡇq:DT5 6.3|KnQH8v5[lice9a= vG6%7uر /$}cK4ӦM$S)ŵLNINDN5n(=&[K-H ˲KPq3TZ*BV^#*ʰGzK-ʪ y`*2FG͵\TTq&H2hl?9xYܸ|!{Ĉre?2*[S/<c̸q&'Q~9YR2d7ۨ-s$mrO. 8+T(U l޸D1XR M@ XN`(CתU+&'nݺYgE .]y 9:RZ}&Rx0qeD.{ѢEGw4 x7s-nҼv7Ng-br8)CHpk|ko6@ ^K .$ |^{HaE)6+.,1~Gfm۶ԤI04! Ps'      9$ 9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=!(9A@@@@@C w=(07|3]q4qDUV?L={ P׮]iС`-]FIݻwuR۶mK._~%1oSۚk1l0ʶ9+v;cwc@*(b1& WMTT常-'-ZػW[˱J$ҾX-y뭷"mݺ{={k €H\!  P@l3Tq-N$uԱwKdUBb[pF#8-kz-[~$dRfM咝8@\3~xDLΉi8 s&ҤIĝHձXɆXM6I x@fߴ8   ^!ަKu8c⾜JDW"Q-q%UR:E 6@ djuc[lIڵkUl [c?W^  Pb   ;=p%Ö4o*Ҋ+rB$;A@{yv7!O?[Q-K ( Y>oN_u~B'gءԽ{҃\:t(~鍊n?8lH!C "߀a$ D5֭[/B?< >&0~xLN7ȑ#i͚5tGS^p8L~)M2LT&Lle(4P m_,,?bѵUH\=؄^jذ!_/X"̙3iƌjwi6  ^%h     r)4w\:I,NR/gׯ͙3G)]tZj)KѬYe9 'qTWY@@@*@& Y\Iv2'HEѺuhչe˖ԨQtwؑ'lذAЂ@e 2"   CS|]\k֬I?7lܸ~guEҜ.@!\H@9U _|r! [Z8Z'b'x{|=pN["Ѡ[kS}z'նԺ⋣`@ ,<{;dAo7|S)Xiկ__Co۶M_|#M66  P    !Ig4m4kVg+DӸqgϞQ N@cWa }?0e˖g}Fо}{To}]HY*?p׮]{*pyA@k{mF@`E      ^#k3`E      ^#k3`E      ^#k3`E      ^#k3`E      ^#k3`E      ^#k3`E      ^#k3*L*vIENDB`ggpubr/README.md0000644000176200001440000003126713533553411013033 0ustar liggesusers [![Build Status](https://api.travis-ci.org/kassambara/ggpubr.png)](https://travis-ci.org/kassambara/ggpubr) [![CRAN\_Status\_Badge](https://www.r-pkg.org/badges/version/ggpubr)](https://cran.r-project.org/package=ggpubr) [![Downloads](https://cranlogs.r-pkg.org/badges/ggpubr)](https://cran.r-project.org/package=ggpubr) [![Total Downloads](https://cranlogs.r-pkg.org/badges/grand-total/ggpubr?color=orange)](https://cran.r-project.org/package=ggpubr) ggpubr: 'ggplot2' Based Publication Ready Plots =============================================== [ggplot2, by Hadley Wickham,](https://ggplot2.tidyverse.org/) is an excellent and flexible package for elegant data visualization in R. However the default generated plots requires some formatting before we can send them for publication. Furthermore, to customize a ggplot, the syntax is opaque and this raises the level of difficulty for researchers with no advanced R programming skills. The 'ggpubr' package provides some easy-to-use functions for creating and customizing 'ggplot2'- based publication ready plots. Find out more at . Installation and loading ------------------------ - Install from [CRAN](https://cran.r-project.org/package=ggpubr) as follow: ``` r install.packages("ggpubr") ``` - Or, install the latest version from [GitHub](https://github.com/kassambara/ggpubr) as follow: ``` r # Install if(!require(devtools)) install.packages("devtools") devtools::install_github("kassambara/ggpubr") ``` Distribution ------------ ``` r library(ggpubr) #> Loading required package: ggplot2 #> Loading required package: magrittr # Create some data format # ::::::::::::::::::::::::::::::::::::::::::::::::::: set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) #> sex weight #> 1 F 53.79293 #> 2 F 55.27743 #> 3 F 56.08444 #> 4 F 52.65430 # Density plot with mean lines and marginal rug # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline and fill colors by groups ("sex") # Use custom palette ggdensity(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) ``` ![](tools/README-ggpubr-1.png) ``` r # Histogram plot with mean lines and marginal rug # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline and fill colors by groups ("sex") # Use custom color palette gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) ``` ![](tools/README-ggpubr-2.png) Box plots and violin plots -------------------------- ``` r # Load data data("ToothGrowth") df <- ToothGrowth head(df, 4) #> len supp dose #> 1 4.2 VC 0.5 #> 2 11.5 VC 0.5 #> 3 7.3 VC 0.5 #> 4 5.8 VC 0.5 # Box plots with jittered points # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change outline colors by groups: dose # Use custom color palette # Add jitter points and change the shape by groups p <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"), add = "jitter", shape = "dose") p ``` ![](tools/README-ggpubr-box-plot-dot-plots-strip-charts-1.png) ``` r # Add p-values comparing groups # Specify the comparisons you want my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ) p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value stat_compare_means(label.y = 50) # Add global p-value ``` ![](tools/README-ggpubr-box-plot-dot-plots-strip-charts-2.png) ``` r # Violin plots with box plots inside # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Change fill color by groups: dose # add boxplot with white fill color ggviolin(df, x = "dose", y = "len", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot", add.params = list(fill = "white"))+ stat_compare_means(comparisons = my_comparisons, label = "p.signif")+ # Add significance levels stat_compare_means(label.y = 50) # Add global the p-value ``` ![](tools/README-ggpubr-box-plot-dot-plots-strip-charts-3.png) Bar plots --------- ### Demo data set Load and prepare data: ``` r # Load data data("mtcars") dfm <- mtcars # Convert the cyl variable to a factor dfm$cyl <- as.factor(dfm$cyl) # Add the name colums dfm$name <- rownames(dfm) # Inspect the data head(dfm[, c("name", "wt", "mpg", "cyl")]) #> name wt mpg cyl #> Mazda RX4 Mazda RX4 2.620 21.0 6 #> Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 6 #> Datsun 710 Datsun 710 2.320 22.8 4 #> Hornet 4 Drive Hornet 4 Drive 3.215 21.4 6 #> Hornet Sportabout Hornet Sportabout 3.440 18.7 8 #> Valiant Valiant 3.460 18.1 6 ``` ### Ordered bar plots Change the fill color by the grouping variable "cyl". Sorting will be done globally, but not by groups. ``` r ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # change fill color by cyl color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "desc", # Sort the value in dscending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90 # Rotate vertically x axis texts ) ``` ![](tools/README-ordered-bar-plots-1.png) Sort bars inside each group. Use the argument **sort.by.groups = TRUE**. ``` r ggbarplot(dfm, x = "name", y = "mpg", fill = "cyl", # change fill color by cyl color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "asc", # Sort the value in dscending order sort.by.groups = TRUE, # Sort inside each group x.text.angle = 90 # Rotate vertically x axis texts ) ``` ![](tools/README-ordered-bar-plots-by-groups-1.png) ### Deviation graphs The deviation graph shows the deviation of quantitatives values to a reference value. In the R code below, we'll plot the mpg z-score from the mtcars dataset. Calculate the z-score of the mpg data: ``` r # Calculate the z-score of the mpg data dfm$mpg_z <- (dfm$mpg -mean(dfm$mpg))/sd(dfm$mpg) dfm$mpg_grp <- factor(ifelse(dfm$mpg_z < 0, "low", "high"), levels = c("low", "high")) # Inspect the data head(dfm[, c("name", "wt", "mpg", "mpg_z", "mpg_grp", "cyl")]) #> name wt mpg mpg_z mpg_grp cyl #> Mazda RX4 Mazda RX4 2.620 21.0 0.1508848 high 6 #> Mazda RX4 Wag Mazda RX4 Wag 2.875 21.0 0.1508848 high 6 #> Datsun 710 Datsun 710 2.320 22.8 0.4495434 high 4 #> Hornet 4 Drive Hornet 4 Drive 3.215 21.4 0.2172534 high 6 #> Hornet Sportabout Hornet Sportabout 3.440 18.7 -0.2307345 low 8 #> Valiant Valiant 3.460 18.1 -0.3302874 low 6 ``` Create an ordered barplot, colored according to the level of mpg: ``` r ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # change fill color by mpg_level color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "asc", # Sort the value in ascending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90, # Rotate vertically x axis texts ylab = "MPG z-score", xlab = FALSE, legend.title = "MPG Group" ) ``` ![](tools/README-deviation-graphs-1.png) Rotate the plot: use rotate = TRUE and sort.val = "desc" ``` r ggbarplot(dfm, x = "name", y = "mpg_z", fill = "mpg_grp", # change fill color by mpg_level color = "white", # Set bar border colors to white palette = "jco", # jco journal color palett. see ?ggpar sort.val = "desc", # Sort the value in descending order sort.by.groups = FALSE, # Don't sort inside each group x.text.angle = 90, # Rotate vertically x axis texts ylab = "MPG z-score", legend.title = "MPG Group", rotate = TRUE, ggtheme = theme_minimal() ) ``` ![](tools/README-deviation-graphs-horizontal-1.png) Dot charts ---------- ### Lollipop chart Lollipop chart is an alternative to bar plots, when you have a large set of values to visualize. Lollipop chart colored by the grouping variable "cyl": ``` r ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "ascending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots ggtheme = theme_pubr() # ggplot2 theme ) ``` ![](tools/README-lollipop-chart-1.png) - Sort in decending order. **sorting = "descending"**. - Rotate the plot vertically, using **rotate = TRUE**. - Sort the mpg value inside each group by using **group = "cyl"**. - Set **dot.size** to 6. - Add mpg values as label. **label = "mpg"** or **label = round(dfm$mpg)**. ``` r ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots rotate = TRUE, # Rotate vertically group = "cyl", # Order by groups dot.size = 6, # Large dot size label = round(dfm$mpg), # Add mpg values as dot labels font.label = list(color = "white", size = 9, vjust = 0.5), # Adjust label parameters ggtheme = theme_pubr() # ggplot2 theme ) ``` ![](tools/README-lollipop-chart-rotate-1.png) Deviation graph: - Use y = "mpg\_z" - Change segment color and size: add.params = list(color = "lightgray", size = 2) ``` r ggdotchart(dfm, x = "name", y = "mpg_z", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order add = "segments", # Add segments from y = 0 to dots add.params = list(color = "lightgray", size = 2), # Change segment color and size group = "cyl", # Order by groups dot.size = 6, # Large dot size label = round(dfm$mpg_z,1), # Add mpg values as dot labels font.label = list(color = "white", size = 9, vjust = 0.5), # Adjust label parameters ggtheme = theme_pubr() # ggplot2 theme )+ geom_hline(yintercept = 0, linetype = 2, color = "lightgray") ``` ![](tools/README-lollipop-chart-deviation-1.png) ### Cleveland's dot plot Color y text by groups. Use y.text.col = TRUE. ``` r ggdotchart(dfm, x = "name", y = "mpg", color = "cyl", # Color by groups palette = c("#00AFBB", "#E7B800", "#FC4E07"), # Custom color palette sorting = "descending", # Sort value in descending order rotate = TRUE, # Rotate vertically dot.size = 2, # Large dot size y.text.col = TRUE, # Color y text by groups ggtheme = theme_pubr() # ggplot2 theme )+ theme_cleveland() # Add dashed grids ``` ![](tools/README-cleveland-dot-plots-1.png) More ---- Find out more at . Blog posts ---------- - A. Kassambara. [ggpubr R Package: ggplot2-Based Publication Ready Plots](http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/) ggpubr/data/0000755000176200001440000000000013177347466012473 5ustar liggesusersggpubr/data/gene_citation.rda0000644000176200001440000000227413106505267015763 0ustar liggesusersBZh91AY&SY]EE $OMGhѵ =4I&i= h4ё2=Fjb`L&&Fbd0dšb1@ @4A&0i0hhb``&CH)je64621CMcHL$!}b!9pgEN!=KQ*'[\B;MT67gZY MT`Ah!aue,?-e(L00a>[1\bHMGklE!d]q>-V%#ΟjU $R(%ӧ#rWj:jGC93dʼ$$B:ܾZ eP.Cb1j_k58- tY[ 藛Dma{8M%"WCoWS†ZYl$em]h޼ MO6ԫgInEՈH>@41`$ "B #"a+!cClll1g$BE =ӿfns&E7b5`nެ`V-N/=н[dm'lJlj\M3E:[52LQ 2kՖi%oJf^M,gLi x&C`)';02vhMΆz~gٸ Ṥ47shR;vvZ|AUqznݯ юjޡKR֡R`F *+ZQZTc xK&Z()׼6q!Љ%1))k,"1 }EF-Oe%YYߛ%q2d,ȏ[WHlMlVm,xp#!C T}a -k8 ZLnc.mz9o$"_9esV3Vlvo4rJ^[v Ѩ;QO; \ivLr4Rj3 |#3=͆b(IA\ TǕ"JI[_w,Ӭso9MRKAF̢YB֦!vwy IKzuUϖ03|zNS` Sq7*X RJ4b_w$S /ggpubr/data/diff_express.rda0000644000176200001440000275544013023301500015626 0ustar liggesusers7zXZi"6!X])TW"nRʟbl$SJ !5?;9Ps7rݕ~8-IWecPZ#*iw͊G٣,RTȲPYic;˪_CFo2<[cBXj!_{x^X$.⚒aw$V8sR+:j+> 9n B"{s)!Lֵ$A]O)ڏ28b/  ]:w彵/q'!P++*H`W6jx9m,f Oy0Ԙm'v̦L\lMFLB`REk#dJewdҕD 1tK:o& MA*"-&"?'^ڒgHӚp_=lzMi';qr sB;X뙬Tq=|by#8KWFѦ>(faC;e0Bz0}0|/;zv>x8B 5*%!.ܦ/5ŴwN`zy1K[l'ֻҁP`虩)}d/vzPWuRlN Ef?}RJqU=x"cM4Z"6")'<<,qџ/]x*Q"F7O+NHDpp(w^RWXfJӣl;WKZE큒GI# ޻`5OL$Xf|\߱~eXD9Qgq#^(=HΆ)G/bkdC*I}Y'rx_~ܢӏ'*&)wl ٕ[VO!"hT I)@aW{_yΣ턷e2+_Olt.:hVſM'V?* RHFmq2}pbÀMQkhg2ѷŘ-> .ͷX_". VI?Pa V#VU_dיY55ߊ!\b|x:5:wbOtSNiJ{Y}7[kr뼊\/V)˩u1e矍uP\]#Ɣjdʼn7 2ݍAgQ }zu?qפپ+[a˧D5 tYG? ٯANJ?4)&v.2^"k~e}2RJ`F 2;KL󢜝JvUQj˱GQ+^'|2u_ޙ[)UV #"5c8&H@,5˫z hCzݬX"[9""M(7X'GX]z)i&m|#e{ "7lCr+@ipL IF@5oQgٟgq]ٻX]J<ImqIުW/60@`HDwjs (kY1DC+%P XdUHG9n;v{mpoDr<8?X(zZX[zOjp_V䱓tؓ<3t2"Yaid f]DiϬh.{-k;@鼑/oxΣ{bPn -Po@ 7ȕJtϑd+ ] sD(P^}ٟgѵtpjs˜Ml\ԇN韾i#J=@4O.w~(Egn̟epYN'a[m ~.]Y'}VJ%P :Jυ| v;ܻUFJw|{HRyTVrYapvUBkkcL@yȾ.otvr |)SuڀI1b׻>uٗОcyMي#eP}GK V}ń}|,JtЙf- Ͱ GGwYJ86eSgG%0GsjOb鷪U1sNu`~>JEq*Q)y[Gϊ]e$o:xDV_nMX]V(A㏍C[kN8­7]ReoAHփ| UsߦROFn@=ʄT{iJMfӂ ,c4ױu6i)-b^?tO5S +XAk'd?~󬏭fsnO]8#wyք bh;IBm>x a&HApsgv#.Z6fe6D\X@L3 E 9^Dˎ rwhL\$|ieCëfyh{~}6kCQvhz/K|PcM zum-7(ZɼDj܌NУ9z_z.u!aC\쑂^ ?RYb؃j>A[vV 9J @ȏÛQpi7!Ϟ5'Q3g&ԇ[0Q~.AAkr y?i``R3 yRX22j‚T 닚jX5@> }eD[O#; |Pb=q.65 @P->-w^ᚂ7X<hctKMMoF/uzc( 7MF@NE\e W^sW=`8Ο(@ʂV(+n_"_]KT׺eMZZ" <,;xPd̨: Et";jfwg~R U* OftY0fE)2Cq&C'޿^f2R6Fyh@(vQtx+b_mI;jalcMToZ`rv_c:NDWv4 "PBS0 nvC txfϭBe)ptAkNn}`/wHS94\vWWɧuՀFÅֽ (/pW(o;.P-WYUFh*c3kw6nˌE|Qr'}Ez0󀎿 &nh'ǽK>x'߸Rd7RV !EViX \uA. %݂cgLv\6Y,h-8{b~er^9D ;ple:ZJ!+C&_hoW ]OӗښpVH?_bs\_bggC?!H f&m Rɪ 羙67ޜ6ڏ 7J K`#%_"Dӵ>B [~o-j?fdw-04\ݎV=)S蕽Aj {:HH`D76˟9Q.TxE)Bmr"_M9oIȘ|I߁ryW1x  [[B1Ym =4zH=jUNs P5kq=onZK>#^֞ZySvx@l,5==+XUA{Ά#̳^[kJ331VP'l.T(b8RE:-GR+pMa|dRAh&="MQ8ֶ{Yf@JR ȆźԁqPɞ{JA~v0qt}GT^IA]k/6`F  7ůi:.3ǹ#onkNnUe9nEopdCLԱL@UyoHV['WP]RaY, |vz#׃ '_0ȒQa2|)VvIm@*'#6| LHWdjoU y}R:8KsɅ5 4I-rYEWB%y;8|lA^g1J_`kEf Z ^Y`XV#q:yO9mÉ$ZX \~b$eVwBn3!x}޹>@a6T,V>y,mJn ] &= @+frt8T逜KXKB3J= (+RJ%ۑfI;(YJݶ29G Y&ȢpIw5+Sg9sQ J'F:X+ŝc Kkpxm%+rB'")/2AQX'[(N?t٪sN]")Ah`xRy̜MZ$x疤Rwdiakf$K} ؞kSDsԎu(&^yԃwLH+h"cI`Řǜ}KX"9ٯ'+nԂ<:O++5ٸb۫K}a8%`HY}R[{J/xa`_*rpzջNbͣVNcBQx s/0XxR$>deaMK!l?{&%67s̖ʸ_-˸_Da$+JĐ?,r{ʰG*A(v!ι2+෿wnUЬrxĊ$Th(6s}句C f9;O,jA">croov  K[/'815^3Rr 襃Α69?e[1H~|),>h /t}+#Gӡ{2bcF9t7]8BXݛ˕ՐW=oMS*wAj)jC6?a7tA#jOP೬nsLɷnbfa,w3BZ3}){u4 !!O9QN%GP|8#160ŗ0A!Clq\TDu,U|UC!Au1eÍm/C0Up-v@'-gD $ . 3+zƫN|ܯπJ5PVSn#5dI}`+o&Qd `Igjbxѝc~.$ƘfWwG\b.c~ߢy Q5[qs`D1QB(>A2څkblڧ!d ]|ֳʠ5Ijձ!V1óbOYBZ9t-Œ1ʌȳaרsZ5$K 惽'7jIuJH$yqdC* ~iӏ󓽹A_pVA ՔI 'LOy4{ژIO S B9 xlv?j6IϷԥ0t\4"v hk%2Y^ۅQ>8l"]m龯mBcT@$h*:-‚ *j༊͙C=*jE@֜/Q;2CQ\\?`;.-HA4S:gZ, IjQŌzќ+w6к/*Jҧ?̬KQ0=ƴ-rZCwBHqE/5q(McuQchyg^gͷx&i8sԶaNwێZҩ3Ҿmx{Lo6H>i8ofwaGD0G #]9_*bqs):R]=1Qi1cZOoŖ\6v`Y X/$zs)W\[96wQ8:_dAT!O.[LXtC'k~6nt&x1c FVY\0PDҴ/=0Xj= mD;V+H8U:Qy̻*G]Bg"Y+A0?ibȾ>@"HJ7GH-)nƒ 拀e ^9'u?j:P"`A-_~G JDAah}s*$ ۹ń\B` j&GQ[)@|`Y>#-'ē(&-Kc C@- `ٟ}dPn~pr zy,ј=ܘ8Wp6 wN9?nq]֩{p.XacIgrAYE2, G/ee6:Hw^=J践.-1nF #VJ-Z^;hۊAo 3Kfsש)O=RYª۵ dCKB|<4HC t73H̋Ž!)I7͆tFJ1u{Ů0T2E͟P+Rh3wԞ#|*IzTQ6qHO bdR?) m$-Ukt_OJ!p4-1" ,x5?<&Oy})`fh)ɻ-q*oJE ޵ƒ\ plv2E@idejS㣿5G5cZﻣ"ߟ/+{;~WF{,Ў lUaci|qƂ f8EB!Т8[0:%0[t@mD l%,Β>{zE r\;=ɯ$Eԗ6^EI_[J1+xOl!ZEDUpI+ )xoj J=`q@LRF`Q7rJ,ӸA ̃Sj-ehRY&! 5Ql:c8~Fq^Tl6&!Ba'sI8F)%c%|jPXt| Fp\\6ύv#b,Mz()\"7Xt@f?IQݡ2}1ޓP,GD( b!)`i yh2ϟnؼcC,0.;^6Cbx\a JTib@Tni觬 os"w?O,~:ywFTҫ\S %@zb{fT~rUwnUwٯj3Hx7%OTt0 @ЖX?& !QRGl=+~MB1 x *$вǀjepU$kn^I"vvQ'NDCu xnЖJXWU-|O9+W J?h󉆛I̢]`B0.;dc{d52Zu Jg^Ɠ?^Szi"eۄ<= Ettm>(&4 :2 Wq/H$p~K{`Γv|BQ́MI͉X(`@$ F*HJ¸m@ -v %mG0X>ȉń/ƫ( :7 `,CF_T9NNrZ֪Ey.?*F {lxis`r[{cf,PO]]Q*-lfN_MJԮP/lCSz3B^Hx8w(Km-X])~Gu:Ľo SirrXL͏nhU&-T3SJ0\~BpCH_:/j0[89Bw7CrAP훧Si{̷{a/yxa^d%?BELOh:,PhE>C_4]A.hŋCenHI}bwenN-e|6Qm{qlj7JFr ~|T.9#怊YvO=_S]tAG%wÒt$.gS(4˜tPck9,Zz⳷꿂L msP4sp'˔^Gp3l0{uP)5&wǢ;P/.zS$$$4yGLe[Strs5j5$ںʳvmCGw4]Ԡf,e4IWU hyCMױ,L>w Y, mJBE}h@]?)w']r+ҫx)u bGe,ʂiù>c4k8Lӽlbxi/ZUϣօ]a8aGM2CfK ԺJT9P*Z8hVi.[kwKp"xF>,guɇDʡG%z@f`% U[> bLn.jTN6žXC)S+s(dD=$̩~n}4R{ʃ',-mSTvpK2ΪLrpO,*92$U}>G0[B_X wD^ EUB)(bгa' jBH Lpȓ8ήz@Xzj6x:&wwy0ElFd򴴮!%DB?l_H3Q ;ZD-ʬ g`4NO$(:GoΓڧx{ Br7re]mG+ȎjWQII`INltRQb8=3%|[b#H4KtA7x7 s{H*Kg%mt(CwA ,?k)L!ź$yMCA3ݏX$DIԱگT qo k-".D5inN.vl.i9o φ]L^`l H/g˵ɧD8 K4*5l`+5gO;+z:zh?K:2i4l Te`3#t,ݫvTx9+k/ {o#de:VI>)Mp,_e=n8J]*d*I`\A7XQ/?xG2Y6q&!Xna/&!JbIJ?n}Gg{$[I{ئ>ϼ[eU1;huiI~B[ wPRCFz&lTx2 # 1Mщis;Gu~ƺ0d Ju/aM/>eyS+=*/$sԵ_P~kx~ Gڡzō".2@@&|\:g4eq4E[NԾ"p便;| !*NA ]P qnAu' 2Q  x!w>Qf8B52`KXDx?V45p2Yf==R"/oy5ao64Uꯁ+βlRϺP/KDUω$Z\% ^B 3ڍO<)~ z]FpCَ^vͥ|-i @6V=eΞQOKxD~FmdDr϶@zR;pVe7bZ+$] _0k:~X@!Y]WbS eFdG̅%]3ךnx'v8X+3viK,VƦNCf lZDYǑ U*\)ٮ!7 'qq 2|?&$U7q]ȩ[cCsh;OZͽ1PU6䌯nNj2zw;u_g5p 4ft+ ~ʬ_M/8͸4^Z<ms*IU R}?qt}HULI4p,>vj͚{jt_-W|˖FX͜5D #A<~q2bcP11_mSFiw^,n]UdrYS`ײ 8=hl"d&q4 j28(oiDhhڐ@w8L`YL϶!_KTSU"Pln=UPms1i0?+bkfSG (c#h2h|{1B WEՊsBӣq'oQ<&1LNu q[ߛ]$3Jcr?{V38J5;ѶOGu/D ^Caݥm,ҴE1suYcb܏հwߩabNGE^tFHXwl{E=MrCc0 aZTo蔴0=`AÈZ| iУ?x1Ǝ@w E)duA?$d{Ҝ҇^o1%pEHSk7h] !)9JItS0Z' *70j|b/( ΰFS0p-zP|f,3mΛ"{T*!$Ubw+tn݀1V!Xe1 O]5)%$ {̶D8K u܊$2n4hڅؠib淁y,gK8&N P]ԸbsY?΁`.\D`jNŴ7+@@ըbJg]jz/&k +ޕiH6s]MIQoN?鼳&K]51{ïu*^e瞯^/)nvK~Y}FYDzo2zMdَX2> oi0<{?TC|IJwxq_`o-.O^~O(*bY^Åvhϰ!vNEOQnZmzf賤koDhU~794%&t¾"iXHDD\Yr 'q?׾~R$co,º#K%_xb5ZjbXN02|2Pa7GZ&s@zuvp+RFz|fM}GF:X]/ιȪ0G@j:$1 *S]D^Cƽ>sO|5=꼸le$Ѥ&<x1o3H[t-<41|Z~Îkw]:~ZuWfjz nK~az#0<1zᶛjʆt6zODM`5,j"1r_M̝,Q \A\ %IO0[+-,چ/EI~m$8S+*䗦~aPTD6*Юf(Ȼ n'ªW_&}>V'uFdhW0[[<*$tzyؾߵk!&1o3s~ꯢ eXȀ2ެVl f1@LmbE QT/_M@-]yJc!E1Y}<T*$d9aER^|/仏qgayd+:r mxbKE"?WXa5>VeOS._R'?& NVI!RVhK'Z :"$cBb_W- kg1Uhq0Nn3#-㫸Y&rj)P9wiQӆcoh6_V4ڿ?/7sdiWl!5ʔmjB`Dz!֑de[$m>U 䨂I?hNJ0݉Ks_YA4}u%$vajppZwGC7z^ǜ7JULq1w( 2#+4vG<=9q6'O]0\$6NYDQ4T0RSo0N>S`Qg`@U 2>hmrȥv^O`>1h_(9 "ɼK1-+JyA^X#:1Gډ)FCAU zy:06}ݩir%10Bc;#R rZ%}xzA̻'臄L Ysh\z;ks-})] nUJᝠ{w}̡lJKYPFiqmgigtߵ}|9#|a ~#fk -ZlBlƒ!6\*[AΌγVf$f~UI˿n%/#Qkz|:2? Ș [Dc 'ZI: ymuWE޷Օ,0DjU$t?Ģ~} A{ pҥ/UQuX1;<2=+xM[ߣpnÿO4vÖ挜xO^G*"{!%>gQyH/ /[27oldk⺗fM'jG_.[Zp]K#pA.&qGs_ +LkrqCYn,j-Hp`Cɀ!B[YK辂tudu;ȠZFXMz !oݠnz0gS,qsj#+Po'Iu]e4'Ua2}t?y+wd<(ex&<C9T-b;WW`Ee*.H@uAldqI/odhuI\SR(QJ:H+)~dAPܠ;z'tM;*)Y&Ff8ߩH.AƞI؎7-!cw Sf>VP#~-iWCV(閭 vobP:uF@˱gԾ(hOcGEEx-U0D3' E"A30To(׏5ce~W Wgas@I.KY`k,yH{ZjG#d\aE({i2#Q pxi՝ӱyadB5('ir%;[L':e|!*H.ˡB~g1Fh6|<(em{ iG+ ^ԇvבbTVgf>rE"_L[XF 8o=uajB|U5Q hi \2ojW9H3CG#:"# l 0v){U><@ʳjT TxёMFugRuESχ կ0X5(T GBrY, EU鼑y#kgJp;"Pz@0W 5ޚ^OaH6 o[t'}F/Ov+ktTvylS)#Vd|fP{ÖjEЅeoJUmф3CYՆx v'C:AY[vf,%_y9q0_A/ A'€?e}ْP7"zD<9>4H!QUI̚|ԗXɍEﳇcLf"Lj??Ƥ/^ZEQT7,,P?}mAEkBZw+jooACCZ = 84 m&KY/f3,0RyTؠš.f'@gZ$t@z 팃o-~Tx*\c7ٕsqj{"D"0)Ϛ+=Ȃ"] |#^1^pe,5jK5MteG83dc%45\ b@?el=oeH4b|*sy,78=t @vN龪߾<ί*HҪȈuiyr8.LeR"m/)5`o$ɬ3߀b$$qʧ:buep `f232hļ63򾱲IqB*[[wyc(Iw7 %҅F c:00eJ9HMTLjaX# 4gؗ.|cK%`Ln)VJC1B./^? ff͟;g)l <\B4:`*/c jBr]~7k8yO?ں@F\X9,^޳@w~²@(D/* ׶WJU-d_8BԌծ2u>XɿQ˧6nPeh{Pm i2Zgدϐ0=:\˨]ܐ:k0k'qp/ q2 ШCjwAJe$*&@Ң_qD_+DSPlaV)1hR/W@C(SS7&H!%GMSTv}=j^~Aُstuԑ%*0 ceo7^=-C/r(7,-c@'Vfҧ?%0upl`x~?'{ q{@U!UV@ijY>[͓Rbgѕ%֓)/DDZG~42Қ A&|Ϣ)qLudKPYc*odQXScRdJR# ]$P*>tZ絮Wy|l-(i-r(<`alLr u{Y+ԗEAs6ϪXUHwe01"(0Ϡ}vߙ(xk,Cѽ%؋ͫDeA&f0e]Fu֘i:y}!'_ڄHƴp݈M(U;w+= % 5)T\h{Ȁن$< ;_ki<:1bz /q=Rڭb3m4`>Ť(~d=7ID I!hHZ|!N hnn`tk 5LEhՅK*[l{ yU~í\WeMM].N:lbKRτ a[Ր!:K+$R䠠 ]S 5m<<Ä ͹A,(Wwm%劘/Mο$B7x/ȇ@op JY6B4Nԟwn&Wb|!u4g`.?kh]Fr EeUp?s@croz^ErBhX?y[9&tA լ2 Pdxb(/"8Ν#)9@$KMMH?.Oy\1;N@&61nU0KÑ3-z;!Q*!g1xׂd:$:ҒX7 mm9oW[5gzPTG[Tm=o 6}V!nl8nDx6lQ/tzO@r8~[,ƚfFpz^~Syafswp7{U`#ӴpLJaɼxg# K&HhES2عA{E3Ui|֨kyDzN±ge*. $ŕ~k)KӉ-pާ|Lw[Qpޠ*:Ѩ!_g5 %o&Ra]I>]zYC1ן{ǯdu?גTdr,.`WΣh[g"!;We(ߍl[>҈ E/^쨢\ؐDzfSMEJpEyq.pٛ[o>-2P`.na2Po# ኺ58Br_c>X=DN.#'ogu9aZ0 " ?ԬCKt*~SAlo^, 838ߤTTS. u hF.Jb(zxjBtrH9X:`g9Đ"/->Ҥj:("]O6T$ \jz@ eZ ߞ C>X&>8J9?ǜ<_kRw@FZ1Ia֒Ύ=|$hBB7}lN,mLzח%l@ώӐH9O='ѬDiTxwR@qj_hXlu^W %@#owt#M2(|sr_\3$h*4W)v=f yʗfl?—6GlKn4 iBy{rCCt,fy|Vc=QYn%xn^?QQqjŇc-JZ4kn zS,I'ك4o[ j5|pʔnmYicfdO(5uQ"nLAt6 ~+GGQV{ c:.9f u$ɲ%!}ڙanYqK/)*0lܐܐ9;` y:fs3R+-2W*.ՆFJW@4pXYYTD$6#BvD #m\"Rr( k=rYWX3NF߿ tN4AG mvlbKH>)Q)v bE C/Xa xlü6 ̵۠:[=q{wfK=X-yzS=Įgs/W'*nOʱ[bh Lq i#X[M_ m3D|$'c׾z53=1l)PrW;Iߟ2vz]f$@>XZ][/['}Zuk$gqBgN[0`h@&"]l/d>f}w>i)LE(o!Zlv@m;n֬>+u\MyUqTX!98&bh(W a:ݵT ƴ Sa} Q Ob`r9qPN$+hY[$:b9,Es|Zp+VNGfKذЃI㶱B޸̳uL56i:q1CjF8n72XbvXJbk?@fOdkm*;E ]Ꮐ G/Fb]bLX̫xѦGĻ˙M;L3HVN$q 2V85YD;?%P:˳&>Y/i s ݑ͇Kbù,.u+QtuE%_lSvQ]i66p)WsgNsNi oH# `-Z˭I-XW.fTo- D<52" YmZn z3j5Wcd5 C @1|u81g` ;^y@.}U׋jHQ[f$SB^1N^heZ?RA'7Uw$J**Zcss5E@pK7/euʂ5K _5iXF j4}sG+}0l՞FQ_Qڮf;L 햶.HЫ758mx_kMϚSD)c'3^o|"r68-CK`u qfOʒ XN?"Dv{ O>J;\|@4}T Z,PXBYvLS#21}%4Vw FQl>Bcv;d.U5Y[q%/Pѻm 㡵c^nnf\m o;l_ zU$i3{$/rNc™C;fK 95p%sH[>Yѓ & K_\'AD-A[8J$4h,1G<\ — ³ =Zo2򿶱 .,tOlfz)4ꔊf:dW}cjz)Œ/fࢎ KĨ$A2P8<)8x~-YbU,~ 6]m=\OtZ?-ȰةB^V$^)4/m*Xɖ{uj>4FJ#Vjރ&'T3.\Rϝ`ň\ y0 ph+:}v:uq"zVmG0@IvȠ(q(:?-81ZS}]y ?aQ$ @zxA(XX)j5G.謹B@/Fo<+Q&TW% Kw{S.q9],uq}e^ܸUtJO!C BmˎU|mQ>vpOX-jM/_rLoA`ըGz]YUt<"6"uuo_VǢEҵɖ`ؿXy]j׈Q.b7閮M~ &*9ຸx4RB{I0z7 uΞ69~'lp | 9(WfIz \BVAs0]Z7z8x\'G#+~O?dkO`ft%-O =F?EcLj}e݂;zd9x-*xц1$ F)1MolSdcu yh % Ff1Ʉ(։j :.ˋsQu^Y"%-k" %Dیc֧{ٲ֫˼󮲮P=lnl#*X Ȟƫ fP«@bZz0U<zam˿S ܱjQ&&p4ڃlb&Jt~z-?| $-e ]Q۲oC3WiO7e ʚضzZ"^09dPP ^^kxWۡ&/bDCnB2'm\Yc,?x ɚ\e2YCaDrct(zmas u+*G fْ@Xɕ"*Cy U,f+ifB-e,b0UjR! @p K WS֟^돆 i>N }QNh8۞sn`P]`BSf^(CўNB Mvh(Ox 3du4DbU/:h BF3-}:td<,Vr ؗL3; K N}7܀f$ܦ ozէtpyyHeGV`'!y|oşo%>E A87D}^ ₤R> .xd>j]?j=m7{[.ΡV{PG@P0w\ǚgv S,xx=[}H&%V S.Řso{yy|jE/a:F8G'EWܮ܍QD3})[ y2]BFǟζ֭vt{Hcwp6Z.4njvkK?_%HXJk2rj,:.&̖tW9bh/s}v.P5 I0G2 0n+T^+[VĀ2,`_4GrICH+ KEIQ1C` s{MykkAzcTɢtre_~oD GⰫ#; rܓw25Ѿaj=cɡKc&1}\'.3F1|)VypvR/\4 tJ.a]kY)Ҙ8n5zcn4՗ P~yh. pPCmÔlBL44kuk,iVZ0:$m yqfRc \4 2 e@m W>߼4#<{S t=g>5nJ =mP`{f} h z)䆑|O O6SPugEgϿw\_-bϏs+^?&&_;ie,GMtPM\U5vqG1E<^chvIGK`ou]E>,/34B{{ENSDɍ20ۮέf䂘!*imRRM'D$LKV)]{,~uתb5;؇b&}H'ŹIty"tC!UjY (oϵe خt׳b)3-bwO*[` (d>,Ȯrm\:דZETY R͛&"zТrЅGLٔR$< )xyUwTLZRF{"!|d =3h+HQIČvj,"*ާWUI4S,c/^r ޠ)O }jkLh>tpa (m}&紏C.V.6h u  j2X6F7㦧m*C檭c |qD wY+@WOv.@2 =#`Ē/3{}AmOOq5kF IE`ouY۷K,u{ }a |FAo$%P}3Ve,]G>)!k[(%.T OODwJ6FtF,pg ( ׮5 ӶDF+6JyYJL[_L1HDX1oA j4aL|"UH_bItkFh x@@[Zss|8+vC$<ⰆkW+nI_,u ŵP8jz\<\Bo?̈́/iG_I?gkP]@^cۼ),9,Lb V-6ur35S5,6*2΃ߑ? {xn-0-nuJc̮ 54_tDZ1;[FF0¤Z3/,)Y'}w;\s#38`fn>v}+No9X\}'V61~pYd7êz0:d4Nj+BOӓxsփ<ϠR81}tѯ{Iw{iV ~ӗf8bq7}"+(T`>΃yV<Sz<}n_1/]Փɼ:" @)H~1-?^lVa1I |Z+n ΊZŞU%,ZriJAʻ.n:;cB U]RmMjW2GagY/Og`2ntY3#@*{m[*c3ZUZ$tRq>]˝ 葔/A8*!;&bdؘq@{t(h tCַ`>Sa輏1EZ9;ҕ=TdL1 _XEH#&Uݏ8 X;8x|SsvXe|2Y-4DMns1S*uX%'bnH]zdz^ݴR-Pi*Gb yâb_g'30I 2kqwae/O}i*mUʖko4fB8Ga9=w.  Y_ ƒፂ$|FRqT`j:.q 5YA/>{w1(E~u5V%(,W6BԿ ~(j.qZBa-v4nwy1N's$(VXl6MP6F56؟N!&)@UoZ׎qKC5zjGӾw|fDbog~pՓߪkxb-mV+.AZ71aU3:MvF`m-idzaE[,x-5s/bȧ8 ?LV}ݴ%7=q"s\ϱ bv˧(}$K&UDSγ0E% }= tepWE额6] Ig{K :ޏVFZ0g0sui]zDhNcOx&I_a鼉>F Iɨ7d8||A3w3t#]@)!^7OAQ Wn}bO#JkZkGhw'y q ؜[C>c3Zʶ$' =](YM(0iُ;2UKKk^wT#f?$M8c@ !>Qƕ N'E!$ŗ&gA p5xTT@in>G]F96}^kVOTx-]ՅQD԰7S]t2e ڤtX5+BPve)[h϶gowPԟ\97j--nDy_ߺN Yh !TB%넾yF֞wk %qXnV}9 O fjJz*b$@'^n?A J=ubbO[]g];cɪyf(>6KmX#|MNaIXPʷ߆$XzC1o3Q;3\R̟OZA)ځ7XWhهTCzW߁,MTY|S-9WTjAR͝wr^MF¦( +*ifek~,R2GM o9v)5xعkj]ԓiv* vee"4tSCMlNǦkC2SY{=|a6b R>L{3]`7ȁ_vn< ~Hk݄Rt1Pra =ɪXpݓz0ϑEy8,D7nWwZ4͛}2ìZDHp56-ܟyMFd#Rϊo{U/茞Ӆz +.Aj*&zGfvs +Gg8׏OŜQ,MfF~-+=>֑)I+:Y(Hytb.!oH9 C5@ڄZi'}t ǀ}]J(NJ4`c(o)}%+Π0ӶY%~\0Vt"R|ƝW,a^”dN:ھ}8[lęHI._!Н.!'@WgĊ~ђIvǴ E6\ C2¹VIa% T/'9DELfzkbOJ-Z K佄&X5&a^ث ~Te-]Q:3͗JH{#MޜS(B|ASrPjhAGCzKagSM oMj60HQVI)X}&e;6I& jz&0ژ&~un0q,yq?1MX]sX^F!>JR`;JwTg"2f,PcѠAva!JM`% 0;'#ߘkYg,Mk/M[ Ӥo*U2'bK˴F|~~iHrWW{>~]}j26Ro[pzŷ`o[(s(b% Azc/pDK ;Lb'6c#qx>8@b"%FGY18(jt[6O/M( :IyUgu7~C|h[/LrIS}3rjCvp7# =:ژ)=y|쿌Ф78-iAؿ(?-Vt7qFƯf%,f,eM9M%\1J1>X!{|Y$R\{F;JkI$;5#5aHAx*O`+sj殑*9=鯩ouVĂ?0WRp0P?&MY#HJHѧX|'03zk0׋ _e%"C؀ܧ^00qlO*Mda fsl:GPH&I#yYP05r`4p,:c ţ7߫e\Tb +w %=a]P[;cd r^ T3yC dUUSUG1M;hmë|Wq0U}l^g@UR~:a@Q: xۓ@ Y0WE8k][*Rդ<@a@;t$"P_bп2,EY.~F-=s/-~Y~ !r^]m[MN8~pshAռN\F¬SH({!Q8mBHpM5)ʼp .eĆq",0s/?+*@6lC|!iVFt 2;k4nffɦxJh_xߊL* %,&ǰfp$k qizcq2K9,8HHR<|FGJsMuT@ w9ѱ'Z+zbz^eu5tnC _+M *3) ܪ(I(IehN>AWzE~`<&=\L~a \j-^~A/qJ^/t:ŘakG^5%[Se@_ZWlѩ=L:[`'ԞLD"FR-3|ћiđrH.O1"D gkî)Kc>?=\ d1G;z" Cgl]wkE4?ݴ3M$ uq2ZCoYj[!=lj{BJIކ$_> ډ0C*Pb CvSyNģWH rȰ͐YlvV'xI _na/DRwYQ徘G|lvyk@9ZUښX=V|UBT l !M~9?kY;BΗ$gX=Crh65RyIѽ(P~\׽k|%H/wx>V5#Y,P& o%L|:(3`I(djNm0/#_4Os;pP ŲCE՚&^G@_ܕ՞=)?bF\Ipt[誸cLHX }Ӄ=Sanw5Ԩci8\G( I`.tN#,GA8o Q02<◕|`?H0zq [gRNáHk=j#Hޱfc=&94NH(2IS'UQ=KNp,huqY_ܯjm\z㨰P"3hB-ܕ2%(&E i/v؀yu2AqȞD{`ljl\¢VRf\1wh,(KP w 6 .h] y6!(g_XA-D)5nvX Ȧ3(\nJx79hVϏ~"(MΠ"04!d̖ Idb#zƉE/^Y Q|8DIxȝJV՚vا6Dh'e+n52FxralG 5\ä¸3@e˱RlIH`H1iF8h=e+VC? }V 8:de3>{.ڝsO]ؽOoZ]Tj$09^[߆ǔYs/5eC{{)1IH0@swEh kF+u 6# ċqI}AKcuH\&TlHmb#4>Xga\Eb\Α)t @Ol )l(߉2^f35Z6BSFe/ DtXe:L3H(9,/"JM_e5i.,"pBJS]^f(ksP>_m-h4)*=OUҜ-Ru!x<:%yV\ ǚ2bc2-T׍ MXbYxtg1yXs>~L̮& ھuỵ3'=-Е0ȏW3=YUg&LAKB-a6': ۗ Khm LvhB=b㫀RG!X*8X^&"=PC0j|-uE: #?hG "aUyE?;X5T/lR;Ubo4$/l񋒀:6< >^mt:].Qb`lam&Ykn!rǝHqVd4^7 vqqdc!FOۙl-$%wvEڲB̦N$C Jn c Zsi#Z{(:]&D`* DrE Ś!)$䇮s Q4)jے2D]٧^xX}:2bg;y2$iE-5苈UG-ε71ks!C}khM@ =󐶫WK%,I1 }X'[.ծĖYhiKq'FMte(\ h 0#Fvr>!q`(Hh+urz܏hd%I+*kCc GiN1\xCT왿[K@IXj.Zsc B#Y/pGp y{0 LCjڅd!(`iWS.էqUæ v>CM]8@h(K#B'17xЖ"9o+:fg |۷?d8/HTVJ0Z;J1,@|}q4=GLQ 8k4s(QX<  ԘK888!,'臦~r62M#5kAGuh$1],Blx(c氼;)5a2.1:~-7c<1Kፋ RHUGkXȒHՏ1*Ja֣Gࢴ@˞iͱ cjc|Lt[ׅ}) ͺ~k``Z,AyQ&XqE^J;^%fM,OcNUsk^@cq3 呙\ٻ#'+4fdڝ=6ZmsT](5fypI0ZKx i%kg &Z?./]uNe޾bi hp vjVH"-UOI)D@Ƹ[a!Ss0+ \4y#9^3 1VFb:c[BհS;t'ցi~^f1Pu! |UOrv! c}WFLJ.VaSd&ȅ:R"ǜބEѲ\!_*n: ) ߗtڅ#(C/L;LjE&X~p -,лZׅ}3 !|MF-zJgE1~Ū]^Os8ݳ*7<@ N'#79NQ34iP-aTš&&@2$zXa.jGz} FuYDNuJ̇z"XK4u>GEtI[♕={pMw^F~vLzSV-8xհey %ͨr=ry"cۿOBoqcژ:0a}ް5I VL.9Κ$Lэ׹Gt{dF@)8+Og`#gy!'i<-v/$]͸@l jǑ$qkYEKǻh1cfh.ގek)iET͢H 8۶ o5`MYXg.[!0񶳣Hjeۅm?J%{[C2=k!cE ιd8m&.Nf;.ipn[4 آ%gEY8&WYKc6{n8];Z8)k'ȿ{rD`㙧b-e'F@mJJ"+%m9CLInZO$s{j Ic)Y U?O-!r:|rGs`qbJ=aɧ `qjwŸ` :NSxü{gO[Rœ\qE;hpb2m/=[MJZd*qg YS;S >7hFvߥR o^ 1QLY=H3W7v֏ p%(Ry#w|qj_3y-mމ%LE_#(n>-&2}RTQVnUsгRrYk*gx!P[usK .^k|R6y9;3.~!2Lɐp\'R]2:x,e~+Ejp{NIN Wk!]n+Qב+'#6&0AjMk ^rAzKld]e$6N_o1E\쬞ow:zĶru;d"K,>f4o54__u_R BKS:oX\Ee]c- -TqcJcoĵ ܩ P"̥/KV]qBFx9irQw^bUiT/Y7Q4icltg[D<`+QሞF'QbD(2\A*3J?KIJ$+UAϼ曄NΩy-_G9\"iW^Xs g,(-(G(F <XhCk\[戀f/8tཉP~TK ԅ;Ĭ(]LXG&tw@=Ĵo~xM|-SL `9Uԅapȋ'?»U&Ob/X3?G gլPr0;QlsʜXy)y }_KÀc=3+ !NTڸC Enh^G)B.LWT&FDAcm鮄"a0e!rƀYȏ;hӳyηj}K]&o[_[W~bq7 1*Cu!D% TmOjMPd&z&+E7DQ2v)_L@OQLot5}4vmSX-"褅e 3sJjq$xX2Ӛ{byFM"!ZtTZ7f,{Ԍeҏkd?;OvTMJO їiE16Lb&-ꛝBv7"Y><Da[gEG wnu?oLCK(&0BV @A#olz:nxG~cܤXv u}e?)̿v$%BRRB}7 &)XtzBB~n\ x әY1IeSh͍ѝc*Bz$B8y}zB>orX>vAaL`$n<C%Yh3 K`Le7R;6ǵ8,$LY+:>Ia9 n/{B ps d$nw}pxYy|ikYq6>E|Zia~EdJp⼂T_oiԫ^TR) C6Bb]0|F?hA])>Yiz΅;gD89u85b"V/ gc/8|Ao4i̸.GCɷ맧6:OU-J#'mZʍ.GG5!UʮqoWk 7ZzYnM b K oG+Fo!sS3 qnIN2Kupqs ;4nֿaC$]3=dWȲ{ytNX7y BO --j_d,/r{ДvoZgzx b;8/xFP@gPCY&<ںم5W+?b|/ig Pt!m7WJ!O<n3jOJzL)h.TAU?Xb)z(&asR3D9JcyhjL/`ׂE%aqa82$Le[ց:/(7?^M&cS s>d֧XhZp}quq7_ʤ8y0Ms&꒪m8nyR{wwߢ״ UH7 V~]-jj F8R<㝙(G ɆVgfqv5)nxt ^wr]pNOzϲ .jOPM~?j:{̕ct6\SF5זUtւ 1GnY!\|?,>|yuD4F `q!9[U+QSbT>:.].QԚuBu3φ0SyB@bؐSr^a zѤ\rZ2x@(@Ɲsp-X~{;0ב5yy+eleݹ~}#"y;mLGY=`M~n5t?e&-bVFdDU\݃k GS'RkvFT7í㎠W߼ať@I% Xa5NR3>Okim7ks/EAq!$|.m>]f :icI=: 5޼_<ć/\n} ?Eo.Y[zErc25Cs~BUM:b u񁘥av,X퟇&0|NY4}Y(c1+u؜Aې`BDUԅ]u]~+HC>Gi@#!dzVYp=rz.+ǽᜈ .ZߛAI:SVTXxʱhd~=gFAwV~Hj s/2B8Di=ɯ(_ w$]Q(W56!33c1\N^xy`E]P PxJQIW${l@kpNjFnQbläPh_:8ap[H:4|hG6#e;gPհaY+w,Bqڶur{%"eq ,zd `lo{eWV';Yfut&,A{.I4|CǬcJ)o\8pi1V<%㐼-$po$< o5"}hZph 4 .lfkTNy=TDm C|r=]+d,yg-?#",.2&}"5 j _%q_A:1 NYC%͈KqELb_W @5*- 89cB$̗gp+Olӟu{2{DqoƬ?T׬g͊ HKU@p!քQSc{4sb8",l.NN4-̈AB5AvG\oɡA( ۿda+ao{A*zbcc83?o]&OH*N6g(]<:)H(LWL7Z!nP|C Dn zzbIdޮ{.u.'ҹ'P[QUx?S&bZ˯ܴǘ3g[VAjcC%M]9>؜Өg xz|a8GO`3Y%w T.l6ޝslLq.ӦDpz2$YQޟ0%`Oq`z ]`!5t uFk"FCTslpbM'5;=2H~%UOd,vU.Rrxs\z!vH_]7"XOvS_a[N]*G%PGIC1$}FBь$=U[+jsb;T]cx# RNE\SoUm).ەp-DS|l<`8U~v*`:pm$<ڡ8tMƑF0mˮZeHmƐ(Vv?V5n1G|Թo5+m8(EX,"]=3Q 2Յg_W%t/i%8Zu*3P9|IN9_Yg+Q8 ؍L⅟zk;H*uKR k=g})'7XhI<|*^MK/%v֏%$=j Ɩ6g`Z"Uy@8M iRs#邿L"OenCd0l<bA ;Q[,n$,\̦X){m+>g"-&2M, Dx= ١iP/cּ[Qf!.e I+!ΰy#b?4Xg$z>yZBoC413Th{q8~j%9m_*_:-ߑQ0?dV&aυJN,CK ʇ;ɂGd swV*J~ͰM@VUܲ#0DG'w:$d0g XOhV\YbnJ,q65Ggg)&i Gzj:&cE1D1%/hH~97']/&fh%p2j ?` r,ipsUPNi _TuݝSVQ] 'KQ%Wܲ.ӓC7D#&a2o5لr@(xS/UE|z.*3ouHm 3h-74Ǘ JBLDn ,"W-P?!{۠%TT -[1b"AKl؝w5}&N %8[Ҙ}hG"9W1y9-x&yoM2l R^9gz+cf$W]=.<1l+:OCo {PO9h1R 8L2HCX a9:Qt:cgiʚ $->hΎ]'@D`+l輹)‚nV-A1ڙppi{>k ?FaÅ) V$o]e= vrΞ/eї{k~c3mKOckEcW177}g\NDUޅF+.^x/d-SBֆpnJT+:}_$cO\P7Rsgd<{+vOLgC&j+&TEWgg|k8`%uy'+qP.j,QL B*ٝ:#s yfD31Ye4Ҟ5 A>b?*BԖ; bQ:y;¿~~މa/jO?)"D2>8j=[@зƼ)#(XԔ8"@* ^?>Yi><@O^ωݚĉ?#n=ͧ2?Xm:Ͳy_A/%>]H黼+/o>CDrG_/V^N;6d#/oOI_t[z<C<=b*橆݁C27?6xF†fXv\/PRs}Ov*V囿9`pfxe$H=I\WR%fY{0 `F > (aG ^{gO7#o*/b&laKmGnh[osvXNl4̬:~#8d4S>:D`*x>jqu\~eeŸVДȽWzC}L(]@yCB@+|xa<I{YmZ 1DXV#z,fs+Hby:p;D4@B[CjIןEilb|Q={[y!S|#7>WTl8FIm׽(s/8 2oԿ _¾ȏ|Ot#a蝋UF Wig/џH2IgSfZ [L~`P9\ qZv\Q䇂35DiVOQ?!8&ୠic+py:7غkB.!\&5QL&+d1dV(b y<2φ <=TZACM0H5v¸y񁺳q_e1G+^-!SP$VqX[A_-/hYNE5Fn1Me ciP!(OvUbiarNN`A4 qdDHjU'f W9[oABALےdes2:W`xP4̯āf?yO ^Cw'f'1w;eB /{tYES::EBv~d`8Lشo4BʀC|Y ^ =K ɋ ĵZrmK~9rQ;c=y4GFKm^$tOW8eE~&qJe=`%d:B#V(INu6x߁v֥x2Ǐ}6vn4l,\ PkW6!jzR+"Bc8$_'.@㤖=ff,d3K\dٰ\T/0,>@ndpɝz3zHx殿$7j\zv0K.]Hn2|H 6|Ru+ .oIN"G 5>ƝʽVp$5+OWr }tb*ub':U'K&i sˍz4ƤTΡg3G.- ]pl=[8 LBV" WQ51wlF'{{@J<"Y3ٗy@.d@f<m!Y)a繜)|!D3x] 6H#`2̙{0=^d3 Va쀟iYе7L5 Q;_;*u7|\Ք:ѯȖFȻͤxfs< cG-G48j^ ?(ѱ,( TYlJa؟g_e-gM]bbX\gqsf`e.X 3OԺW0&7?%8ʌp ' k>HSJzlnM([mTFtG[^t:\e{y5):V ޯٹ%]* (}u?U[Hi Hs?[4Dչ|cMq9v\1d8o7{p >N69i+__QQ15y3` mrCI6  һT)uvNAV姦^4+; F1k ݐU)l#aE=ndnH1j9_2WFw"f{?0OcӍńxRD {(Åp_uJY :Z`P'wJ"}#Y1i;]i38B*a$>|78q@&l_ dʱ ZFB _Oْzb ;Y߲egpfq&B֒_**$͍վý.u郆l@d0ɝRP-f摼 K!K4ϟe|ATDT2RPeJvB_hjpӁ?}T考F,8f:&-75ӜĺjK6ȹXtȭ2j-whM_W\j` h0ГoiPچ"C;a/,ś{u޳`d^$Tډ2BT0R UMWq5 6 HhSMnݹCh;thLEuFiVLqdPʵHL T}L)Pt便RXX %Įjv8XBŞ g |8?VDS%jMY~FR62t٥p c|:òh nd*^ed[9Nܺ!r>0c>%8}^f2.q5g|V,o𢛦X _AY)",M'rc]<;ل=E<*ӠE; O80\WOҋIGkǪLl[c@Aa*b~puzCO)A՜@;ot.AjM^)`*h/߿|.*Qg*:NL&:`(`< O'u١hL S_OV@J˼" ̫srPAH0.Oc 2z!m|*xQjyvn0@Q 0_ cx)p m;!~68G;k`@9QۣMsHʔ~7l n0BT )دV7FkyzB[]eҝ]f]=wy*r)[afNBL˱ٔRNVT=ߐ+JL]<@f8_K EH96`#K֍6m5ۢVk'V}Sg $%ţ~昺& ` - $O>&sv܂.N_ZBgޖ'b=p.Ro aD+8Hk{# n$ qy^(s'7]{%EygL-HA5UTM@eq#MŒ/E\L}C잠_O>~z:rE"|h +n!PvBrj$V(M yǭ$wǸw)ֵ|+ߵr'\cKU 9$ErC=%E( w7O˽YF1zSzVdQT4>G| ϧH-}{r??+sͶ(+Û>J0I+K"k)co'/M6{XRCBt::a,Zi36wȰj2u<`6G> j5A_تG ԩh [C `4H;W!'$k0r61p,q&1HɻEsVNUo;ĭ*d9qf \[}ʬ=jpJhDU,#Z)jŠ6il+"j5^Cu b62陶el7\ dGz["#7e-m]8Q%喃l&ӆ9u*vuB&$6ie!i_ýes? YT+FR&5)b]4-ybSf^OChT>Mtp8P39~7T=M|G|1V@eTe|sWsCqjVý^7hܙoWa^sа8^N#4E o)Ҵ&kD#Ƙ̄b&5F@z'PG?ՠs3Una_r;B;N]4_U2tʅ9n] 8 7vCm25RapjE8*4jīrKYH%z_!^O_rDw0&P 6K;P,s y(3Y$q ^ "b/ 0Z-H$0$)'*_l2K]<?,E(G%bqUj㔘L^}X{ Rx#\@-g)&ϦV%ЩX|M9ݟ=+v~ҏ(!-ʃ$8<ˮԿ%X*]Z:JL)J`K*EVPӒ 3"621%|VjC^ jv/=dP)f'͍moybJm4 h`Z!ʧSնM=Fu~E HD: ͱ/ngJ)}+eT)N"gB1YTF8qIoThx4aCӶe@.eZX: m4az34˷%̀`cp, _q/>/һ'P>Y6#/ ghD͸ kF벤v)Y|/p|TŰ5` %ӧ[$j*H̍*X,U.=^⫸Zf*i^٭]PmyV~]W؃l6?$?DC F]ѐ+>$9V>o0 t(.[HꭝKFDu՝rE]85=!eo<($pt#[ Ghm:"[l߹pؽODOXi:-uDn塚Dw+kbj*ƜXvKrCv.9iBgbodɌ/[)io( ZwY*X{[$*>!a>С k/'* sMs8Cؿ`' wQmŸԏӑ0L_RUy~ڬ qP$h>Gc(7݉=wX'E +]CHBr L6vkɨ(s56; @Xm WZ45Ga#8VƐ0_v ,u7MWџ~EyU݊0 &^h*&kAD~an NuYM=uŃ խ_ϋו_Gđ/|:Cf8j9HU &UaP5-jli#Q>bQ3^q;UN&6Hs SkLbƭLx@*0 R}oްr'*^&H_jsOxIb0|Pm? ?0##Sh+ld:x$LM8icv$@Gƺ$lPTĬf( =w_23a(|K zhLg4=µMh;^$Sq Á@p0qT߬f7ǰ+SeZ\/I 9`.dqސ"^Iy?jp\mk+;7٭W2rpqQ[BOgm?{SGv|}^`"#w>7L.R'.()8[/62 9z$GaNM{&L7$7c.%1 !!3`7˪esrAÆL@TQ^+ߌcA}[\#z?}=u-f6XxqM p:P-E_ 뫑iRU)D`0*!Y%dT 'C+^t7@7lZK-~$nbN֑'ȸW` k!| kKB9{2(wdg>VhY/Lٟ)sBe+K|m+|O 7ֿ^^U5$ڈ.q"~LPr]%{BmtlFHYK9<}2YrLV!MF7gǘ Υ;bBzP0s5N^#=TC19t9^>ƓH!4[?bIq`БBl4?N 68Bga6f;2!l5hsZaQ "MeE[BtO!jWrngfh L/ <BK.@hEF(s`ٯ) Xj*).U)/5qKpہur"#<#˷ϠJ?>lqvl#4jQ 9q3;nB'hns;gl;c[T=vN"Dd műg Ve;&)g._PpPi{ȝhz +vlk$#%) ˎuv5sgE,3ec!IGNF[AhQ@)iz4VuS H䛸@BaK,C^h9*o';#+/B5xn0#M E0D lS~~NV.HLhǏu<;4MC4ˆMP5voZĐ4ZF5 N‡Z`)$؈FC@i¬r 0Z&ZM<@OJafeS`´ i;gG+tS-\_L!ɆtV|UXûQЍ$?J,.˿l0Ӫ56^SssbnV+=`<sѣ_nG:5ߒWp:]ҏu\o ,7N!y9ti]P"sXKN[h F'xt:_u@1hg EzJPxUS#"l'= |ʂjl yc5Zf$ը;Iz5>$x3[_=JhXuvPwș[--7)-o')ʁH ۼ^ LL4Bȯ]M"HŹ TOX`qȲ>ӱAUGOCiMKO K%bc>kJ%fvO:%(KcV3Bm8#ЖlX;:R? +v.L}*Zrl }+[x J1>˪-YCьT׸|os-EaʥYdEH4 Bk6%Xdܵ[J׬k [k4ƥO*.Ak|>ɵ *LWW>=nYEc9#b3@n[5F\^oaY.^Qc%ٻVdq6ThU`u@u%(&EW64}2I4~_L{wRҞyJ}+} j4eP!|5ԒHqw}Y@**a'rs[ϯ}[ѐgdI90(beg{ǡfGDwrG幏g$@nN&.AE&b]7q1FOΊ7II8xq ?J,"gmke؄NO y)ux mPW(Z튶MƦ^T@Ry,f{hHp BA֋ASF\nFV-PޤMp!jm66^S%dT/tyE| FKK=pWfXH?3 )B*QC*_QI:o }a.pW"(i$kf7O>ri?ВY/$ZKPxtuA1÷BAC#Mĺ)ݫoڴtIF@Ԉ}\4%u~gU-4ķ.=kn29 \>uxZaksņ ~R CxB~&r sSK5PU7 v-nHrbߴ3~t%Mֳx͋k-|LW+FR.@d]Bh )yc=~ջ*ڽ 1\b{Ūޔh鬪꟬N2PF!1WȨe\]7hk0H3 - LD=&&Y/cvJk'hØD ȪqD]2%4s e1sYߤ_1C9ˈ EºgaRVJыǪVaT> 5=N)<}?Fң7ͦ+#tKŠ_o] ϫDGGnfP;Dl*kf:LvWYeN`QaM6LSA&\ ZWhn*XUuN@^ G8`}g<@Uq`D{-4t#Nԍ]Â">C?HwF)t(k/Nk<ЈsL2G~KgNXAH[אґ"lXGx6Olq?`8:=g lW¢7;͓vPI9ʘɤסX= A=(ܵuC$[bQ.Ԑ"4m:z7$|Ngqye7>}0LCPG"nD tf%ʇ rS ~0 Ȅ:4joԏ1* F43R/jx2S'ҽljQTyyO >PrMg"NTP!i XGYݲpe\KS锑rlmK xh_T?(i.,pʹc>`mD|& Cm+i }yV)؈h٫8Ҕ(X,f]H}3ڎcHFm@=TW]3ZC^^5!"Y:3G~G( ߗN0 dD#HT n9VǨ\NB W^:oˀވHQ2}^bkTHG`*M*jhH Kӱ/6?:L%i6!#-I*O3N0b sP'/X)؆iX̼*dR'!f<-Dpoʻ16N;عw!7vNom*@ZGxdx uNیo]*ҹ0Y5ֆ3;'^J$YY.pjYWRz2^n3q:5$HKx!]F<\!t_Fs}F^}wv z['"Wv^N"P܋B Mnk Ӧpr9ѪD XⲲJߐh^u>4nl{Up3'i[@I)CnIHyt&)Gjef

6\ё%)j eZ rͽN\^\y.bF 0:W*]ϼǶHߋZ͠syPț$k[N>K&IqArUu8ohgq8Zgh5Qg-'}[kxn0#̟O\;q9*r\P%s:$E!D@DPI<o wϏ\1' ).q[Z)Y2U {x{u<."Tt9!Bz"H,\6Μ*A)7o?P$h S՟0zJcҫ/kσ"7xY$>k*!:h6]V'Hd4=Ua ozf. `>mBѭF|IRxA(DNI$ _ xVd>x[~Ma4ΐ1Mnh蕏DtI kuQ4%6>b.ѵdaQe[BԄG6Z+{CA KQ!#*"k}2">VόT_I񨾢TNըPĂ.*RhX.^Y-jGيگ=|pVٓfLBYB?g`E$J籜d+R?,E. ˴Z D0ЎT/E)_"u"nB+zXG0𾡬DٙbL%>96SƳF;KY{ϪvP =4x†==c=^&K $7Qf{/ū24߽<]K ! ,B:U -z+Ϫ=z T ob}f%gIIgG5Dy[C&ord#ܤÝ0>tǧF]_ηr}9TγŤ?Z!ݙ@Ktz}8MLoۊ:h9">Hup@xP!L΍3^W쿺]tJ)E'9eoq?Y|%`C4.xIg["%Jb5;(R<]a^ Alyl2ueRd7Qkyq@#qfT-6Z>C30Ш =u̡${tɽ9c& ѻBbs"6EtΈR" puA剤ʭxMO !0> -Vk-Yh @D.d.i:J p#nhҺZ<ߍk< kl)wX0C#>>ҝf!>uKpvѥsRC7@S1u ϬF1ٴg ϗw-BxheXtl"(8B ϋy?Vpij{5z̸9Qu$'PMa|).vlͿix0kZ𭥰,Hnaj8jLE ۯ&d{Ċ |&{D?W̍Cf0b6S3Uu9Z8a=3q"A\<+#hڰY/7xuEv ;l?)IWh[l ~ˇ4U۹/֤V@!ZTd) h[L>h-du 9քJ`U`uT ۱oU' =hXKЛmp(ʩkz=$HT::ɺx߰aա|Udk$gH51ix7zlO1}n7 ,@k=B%b>jPr؈mߑr\ϐ-^[wYBa-{ʎXH"/"4|EPmI)C95yE~nNчjdyV#]J-_[:B #77E-m6ʔ>8;~nݘ@EC{e`7+\)ns:gE5,].̝A0E-MGÏl< YS=gT:C{"j|Ww1hˢc0]uf#>M-XJٖx5ݸB鐊%)YY0lnsp`g`Rŧ_p^ƚxߗ)yjnn85/$yN@C)촴+Vi!ͬ+s0h wHw `9ͮWە9"g{YwAϧq òc{ ּp Ն`:/; #&7F*b!WOG㫮'"+rQAgjZ!"mF1Fl~[42 2)k-|Ωo sNt"fA|5@G(Y<)2(9I&_B* ,غ'6Gsnlܢ-=u:^҇B еhA?V\W=|W:Ǟ뜷Zl8;NW_ D/YF2CC}v9g OS6%pTH9mRĿ?Wر1: +Tyq{s-&N%G/vERyF2U)F`+y",#efHV&ގ:w$}b{R-Ĥ.!;l5+|! :yN=,%k=bОSت@4$Eܤ1_ q"#y@v% }||mPROW93o$=PdJ]3/|ןnY{#A%QIv!Rq/z{/l,ʊG.ް} 8x ?4 w{ @s6Nׂ PsfI@>-VDoMd}c/(|xDzsimt>ʊR|RMݖ3 a76'L!Ak JyGySiz?LSe7 |msi\MGVw LLqQ=5}OuX; |"9YVߑ#M;oEyV*Ϲc[ u +(G!΀=_"%LGK^%|ljGq?ƇixH aJ:WFF$|1;Vkge*.|f$*Vh.-o^gS,[.#d+ sSůZί,:[ F$#oVV{X{#v#gu©к[6qoUnWyfKs\ZE\3t-STƅw@\B@ou?WtkkXT^"~!Kf`[&Kj5Z*q<6նlL7u(HQ@v+iZY.Xx]~#p'YOV]trĩ rP&i>R=%׵zg/|4SiB|0D8ܕUEyҹ?e/{/2eqY`jxޟǻN}N?tdҗw*` ɋxp_ns@%d o<}Gp?;bbo8_MM \;-IՈ_o!ds@\Q*=H͸"u5{yLٸțS3Jp#ytSBk_җ S֤42dzbtlo7ď<.YԤ'l,,z)Z0cĝ;Ц~d]lkyk'ƪ~:eq.К7x"h aFg9QtJ AF?Iӱ0O1жpR{r ?2xO )̑e~}|Yijٝ}0 p,0HuNyF_an 2\ @eʁ8:)M0o ̞&U!d ygsR#wya@dVDb1Z`7J}&rG)6zc>-bN::XgD.B;x +%"[:=-{ZܕN 3;f1"Ii]n2zM^_H4FU}^Mt&,(+mʃmuF9K7BJ\Qh &թi-`0t\i@a7vxpgn4߄& G{ц3D%m2(1e9gᱦ$Ig #(c;N΢C{5U^5f8j x_ʒTWb T2ciؑ4!Zw?1Kh6ux}Y ꇾp2׽ ``Y =z b(}FL(hG9=1RX׳{Jv'0+  /yuPb^ !ڧ2ׂY]H:g ~\tF 8\\.dSy.V-Pr{!=EhK^ :0g&a S!y"WvH$*^|SkC( a* qmg9꽓praqKk>{AnC#)0L6蘍6!)^LJ #(<4'i]Ŝ,k'} 7w"zyjoD I̘eMl:qbs3oì h.W Y~.&"epOymrwM08w%lbԳHE)&ױ$z\0 nedklBِ$rzCRآ/}l[z͝"2*ШjÈ:!QĪ)~x(8֖ljq6euI7IfZ4W^ sGH [t럍^w07iqq7Zp$[5;ulŽ C;ߏn 1_+>WAδ,KEG)!.`>2Lj(+Y:@ .[V>bϠV;N% ok2:qy+,ܑ)J[,]x+KyL5x & y%X"h.Ibt^G~8icp_Ll¾gNUDyhmgЅse$vR]ؕbӿ3&׌Slˏ@$ƈ RoQ2_ KWN2X` .Sc]_O ZI)VuX{Bש@Bx= J^Pzuʂ䩅K-O+; ʇN^|)*'!5AǦd!U ?OA&Q^vnh?CA5fp8_];Cn#7f`xŢ)ˍ\LG!ξF.l]YgsEҷ$]U'?e,{a;ippʉբ#!zF 52I|[<|-I̤tt0wHmV8 IStj#l'1i2֏|;ћ ?J%M:ѤĘB `fT Zk}!МhmjeZw0!E]86ȉ Ӊ..OLr )=Q#A]셜v 88~aEXFᲒrUBcJEO7<7ˎx>*cdJQa(MzOZ!NoЂQL݃鎕=~bg-ɀ xvϭ0m`F}&+@׻zb08H3V"JS\{%;*D>`8@J~v;;J>f3/zz_:˪j"]E|RMIڷSS~:d|_x`x}oQ/ROhDEn&oOoAkK{G򇰹=2@,+@R0Cb9d!4X:Z^0lʼ^\ꈺl -wޜ60+4l@Ҩ;s\ Kb$Ff \=1R 6);Փ/j"ףڈ%2|:}N,E$I`7Mp+8S6ۅe}=G'OIi\,`DA n4%{e!JSv޵iPTHzL! ؾ+(؇8uxQ`y#"ޱy:zdG+7}O-k |I!-ziM{f OJt X᥿68K\~]Z_?U!Īqiuc@]iyUbϣYKŘL똬R2}([TEP1j29Z+B?{~>F;%?HQ e\`6C<2#vVߘcLfT,-z\#CiEԣ,yM~tsoEFZ*xv92U{=1g\8 x7K.&Tȟ.fNŮ RD+Ƚ{tZsNː7dYo!?9'9Z7@GeN:oި;#G—DwI+՛{<"OzIgjKCJqek-mC~InFƾ\qt˃#rV&8ɘ=NצF}d4嗢o=2?[ed eN3T;"&l-Nafj'Ԅk&[yE?:nD LC=<.6w+\F5s/>~I6Γ"0e<ҳ2H%;rtg&RF~snAGf!oo9NelSGȫ3BmbkLY&qPwڊ*]j۫vOX㌔Lg9i_H#Ȼ3[$В=^Ad6)q,VBi4A ^Z9^iUQG?y|Oh2Nz6u`D?[beYBk-\\>=B߈hQOpwxgoʗ5-W ^,DM5Tx܁&4~"Wz'J@!yE^ㄯ vDdكKa4vJx j|axkbP;Ƿ}kw7Pt΀߃HXZw+@)\.ƭ_`WyN1BnنHnO~Aڄ!r+O2!Ͻm+ -BH_Uu~ii$Qgx;Xv| vB75;nS 2ѶWg'\&<'pM7Lq ,ɉEÂT#3*AV3Ug"qy ޠ*DC]*Ѕ$Ҁ֪E Rb}]7Q>KiV ;rL17+ NbzQ7OCa<\*=&7Mo){s=xV2+My~v}&hL.@Q6TɆ5Z4D*QgjOVeYZɠ(7KpJRߠ+. E-N 溪/ʐ*P9)X)O>)#$MûT `MW3l F{{5A˽zbSa[i,ärgBIhYM'R4ԓl%]߳*fY "Q1DzNk>П,'G_Ȇd,5@֢: ?ФS ٰeJ; w(e]^H!`'hR-զ_#}S7`!WƄjG^j#4}ylY7Z2 v>7y u "ބݠ߁H37EFwS3DȥZM>0[*9h=4y;GzsD{PS΅mn}e@iy#s&6|ʏJe) TpMG%wf=<͙: }BSj<ׂf<@uQz#g-KX"SV ?;}Rta'f%2OpHSi\)=%7#nuLk)4iP')0y4WYrt>'.ÌZ}~PZ-!$=T\K'{c*sGnxM{/N :%HWǶ 0Fs#p؇U7!?~w`ħ )ڸ 륶U`A51-RQB~X'᪢$ ϊA B̡0)N rE0Nˆ}YODNb$:Ʉ%LQ f yvDݣ+@#K:BsS;s<T:ʳ ?~_nUk6BO+"|Q}t>i&^-[*x -yV"Wc>ea0rO&qzIgY)bR, ;ݕWjhf=61aYMpC>zw!QqJa h, ˈQc`w"|a +ǫS1Slr'S]qD 面HZ!*H2!  i{ ܶ:]!U?;h?}^1ˡd$n~3lZw׽55Kv(V3!AzIg3ȇw1/ѓ̌Vk+(tEX}Ӽ:NzO%G.ȡ$k"k[z +j}?_ΕIV@E׃F7xT@ޮ~S_X$Od=a˺9$Fqv >=G4Ptrh21w)=ݯ173jr@j1F+~D+ Vg' ٓC뱘SZg,_U 1(&$N/Nno <{H? &nwm)1sT2kȵ08(1X@dWo-\SaR$0l6xcYVk:R8qYi9d{,4hjbVB,/ŘBQs'k{É["%ޥ/=KW}E=[_J[8`:_mYyN< ٷ79M96 zi#ŗK6=|"[E.:jQ@6FY<9G̾lt +IN]_ol:eiEЗ*XͣmZy;8G&>f9OHs횰!5)_ !l<=-0tvwTevQ,`?mA y0\Y"`I5_?ȭ.n({%H7*JǙ{*jO-x Szosgqd̔W.ћY->2ivYNvI0AА$@~XGI?.&iEc?7@B6摻C(dC[.rQ A7P?u8_L͂=3,噏RVkC8RS]C#{d=1$<{f*`6=ᭃF=^WCÜd,Mw"EeǏЮ [XQ#%of|vDcg}p?,*ߙ7cCU"ښ@^='.xRZu aZcmG 7"v-S<I_#ڻT.-Q)<Ü'Q9tNpX_i pV!t*/eڪ?wB~( yuk2aj50Oh8@nS s@4jz1@ZmV<05 [H0S :{,v7noLu0=}3=wN&Z_> Cf> 9VSֽSvv}muj\;NLY+Z킏O)q'oXWf-Osv k%Qrҩ$*ҷDNO H]hN@+ODHh!Ƅ 4@3 )WX"Sԝhr|2KmwMY#U u*~b\n:2$%d^#8 Nppk `D=U9oD\8}?9:;Ӷ~8}ԏ'E{ѐx*509T]F+ iHVT$?#cklޯ{仁(1& %ThJ.bJ !XT_K[ V[vK&0!ay< @GS"HAj˵g$^cy:>}Kh I_TfMB -E l]ַuM$[AKȑL}o9wx%`:Ώ2/Ch[N]fE@B Ir~~YL{1\Ufky0SYm$e{#| v.;t0m-bMNg[oUC"kֵJaH`Y,!iot}+FB5\?r e(ٺy;;b9%oΛFkd͹Thw?iƚS #_٫Q>>lA4xg3 Wibe7չH#e&:NX( ;/d8()uɨQ+]bFp$ p~ I"۬Xq a0Ҡ{zl*".+Zig osHc莤gyJesc$uF [<惺 !yR{]tydn ז+:|s{#q)ʐSZ&8N/Ԑq4ӭ](qu@N "УN ڕ,K7#3$"V3oʨ(X'F MzԮ v>_0n @I=s7 mpy+`dN2k+UQ&gU-U8̙i֞nG[:4|3Mѥaƅ7FPMj!Vef dW VZ;J }hDvGgC$R'w&`O3N/ Q% 3Vl9J gS*'@Jؔ͐DT9`=}q/ѿM1uZלoU9GRJ , tƔP!YpˌJ{$8faŠ,I:5JCܜi|NFPJ:ą?REJ, ZH?1Xt䃏dW&owmJh3Px=]9F=@X E4;uޮ+}PuI\ǎ=4#]oAMc Jb{At,-C~J{4I^ _R=MHqd']^SE wqb-66 25+3d PrÌk/f]AE 1e\Qk/INRbnjIn$KӰ/伫Ž)< zi_ȄXFL 9$FׂW6}-:x+9[*9N=$:6?1= ;@_irk4􊀍4 Sp=P:z &ﲐv 9!r};G.{b948az77 mP-;o&R"7̫..33tMV`\h%7%-Qܫ𶲵9oVhki倄^S`|c g41⽉Ke|SN͔A,Е4\gL][h[OL1V"{s-XXqVgJQJ>whpغ#Vpt PJQ# ؂+0BXܛF`dDLaj`#:Bjk50);<ۮmܒ^l#kCNu5D v#/Fz;b9-c-\ƊD jeINaZkE~ K>e輐(.O:W 'VUL~ǥ1*ׁ| ܘZ?("( Sנp@ Zx?~C/:Hh#k.}+#{A߸Uo˧z!I]=W^@l؞%:.0Vx$!Dhr甋:}lv(@y&?C\:d43XKPn [(z`Ba_ӷSM*{t=M_bF$9qv9x96XMuZ-s_eou'GA&(Z!ʜԈIA_nWVbѐ冩+% j&?pKGK|zjOK)q’#:v9g1 zqz<\QSq, }H=⨭*MBa>f s%;me~ 0:+*\;eJ[ꜢCesypČ:`g?VDo7󗕀ſo*@3Bb^=q"31SPRPq&@T&> (8[NX 1 @E7s)TE+fՖ5;s-M(>jMΊo2X †lmTьIr) LmVehsG*{= pUPp/j\];=5av*}Lj Cv;6@sAT#zLWe>~|TGHpB/ g`8#&+s\Ez:vnPң֬]y9Nɰp#S} f$ض5ga ԁ$J';dSŋN~1L.(5#]i M+ZP\v; L”H>Fsn<K=YcRAZ}HNͪU ӅdakhExT.K}rpzTjx z dE lT IWsl~Z(䅔Gu>=)NjXeOB)Lа;?lf&'F$9Jى6!;UZRB:5=EA`:wrA.rj)PWxtԘik Wv5 :hؠ``kGBVd[3D|UH"qd,u1:}P77<u2&咡8S:LUSGе, u$#dt=޵/xU7CjTu R3Kk^a ܾ؋gpLNȚ2u*'1X,Y_\|4c#PJKb'\&6 qhOoŅb۪ ! $6u]MiE~y7'btvu;.i7Nlg v1S\@CZސoGoWJ[qW8F Eb0FCjzԹ7I/gx2 %t?[_f1L:~o[~JMIp!P9蠷T="vY݀p>z^vྋ@ `V > XrVN $]"5.̉N H? c9]$Gx2TV:nLr6Ɗ"L#/O*0-Y*@1MIT.a)O:vKmgN4gV\e.^KGMp\BS<;0ᥱ @WuV-ڍr 澵du(暦#ZT{U&+Mo@£G^n`l"^WF)Q`Mɧ6{X,7 p5zv< nE`F#X+Mf67JVw߼p\L(ݴ}4ttL)3C{YjpI +y+ẸRCMi@ܡ|=V$ לbrBh +FE}y 6+tDͿL}wIVI=դC$&}Хϴj3(<,4$s:rR >c_¯27Fm2qC8QkIT^9ffp`+P@:k 42X;{ǡCs6\L !],6^]5㇡D%{GG*j1dlOqH$gJN8I(PMuE#Dm61ԖJ`;K!SgfD?/ZJ,q[ZwpΞkJ#eLk+8~jJU`un|l+ 9]ѻl,_좏]!PB*d^fh:#6D0+^-'DӀ;*}ҩIC8wm8niQû]`69|)ż{o:<ګ[]nRvjS 8׬"Ѽ=#Tj|riȑR0zz7ȽOs Glx?In Ok71( 7`LЌqzF̜8vjd}r~6> W [?g ]ho|HKE 8{" 쵋 4q9f(p'H*d2DW[k$?DL;)0C8#6nV&GٞlQI Wl>qŖjlvb80iKNJ_vo$i"r%C+Ks;ZV'{zx$Ra)`LW1G+$+{-ѬphJ@Ʋ={/N?|n%'?N#Q]#BKY1ƺmL9bAd0+/M(}*#v5R1?jʼrn{zyTb#Ig F'jnM~4 C2{,KN]#&,s:-@ė#t!mDy rEWNq 7hqn׋7 ɺatidF >ZT]ԸO؋jbJȺ||; (m}& U~uR}.SRҽmz68 {ml4;p4Zs yT]I "n\to?t?{)5Ŷ.RFg.;0pe썯nL%aSC#f>$DS['K*A1C{댡wz5h]co,K)u4›%l+cV5hM~am`}0unsf؁բmKZ\9>:J(OLO*2qٖMfљ+x筮Х.A{HT%23N7JÁ*?,p:0Hdk CT0NPG݇@/S9_,mۈ^=o>[_* "Ka}f Ϲ]S.4Q+>ʄ5u,(7~bC@?Γ5z* Y_1̟oG=V G7m@H/6z9XDUDLpMT2G ~z4 s2ƀ~9zjZ #;q4,GڶdQ: HV|`Pr&A8h \'cΗdܭ@HֿB a4T^RI$ޡݣUQ-nW/ri5n$sq"\YZ3$u^0w5 A3qZ%"v-Gx_/i]YbW?{AL꧚3mB? \rod&By}Mk =jK 1EP3&ӏgp‡h[A;"f5B@V֏P;tcתk67xQ{a<1 6:CtQ 7jM|i?顣\`sa7[ yh'ÛZ`pG&ߔ!Vk3 v 4rx-16.!sfM;3,=P^+N1j,1YZ}ry߉ Q9yL#Ҳ9-=0Qc8hGqӐḿp ) t> 2Xؼpc}dak&Z#y^ūؒM Y j_TuʄteFw7F͆?юMjk„%6q߰Rr޶K.i8 m[ NUfQ9F{x~-/jbsx'A`aҪP,+{%H-FvGHLrE횊0uxOw.3o/ mUUkĘOj!(3$vω^Ƅ8Ʈئ&*4\¯v?G- BZv-ʵZnJMnhoM3~[W/$!r ]xkEz:,٣2BB ˣ1펬ǸOʅ.!'Igsxc^oO6Vѥ05 *ak65+!*mÚ( hJ O8Bfl`k_} yf-d{|nYp>dJ$ߏwE@Z{Q !uh!򛯃d1l`, {׮ԟ|b-l9μYe.A` ~8MwCFRXFUmG4U0`|?D.ZSc{Bkv} *JI#4Pw[eB0cA>;> ;}FP9Lϒ3. ]&)֏ !UفWkr -MnBI3ME^t]uR=F&]I8?GgdK/(Ec냶]s Ocسzt4⅚t+Fh)_ݴ&\Q6DO0o桝$G|!X^R}jiYQf$>gkܾ`srpB4Ԍ;Ua%׵X>$j䇊fX3Ս52cSl;{k'8n':FL.3ENL3=K4gyg.`tP[9:K]"RhefTzy!@i[f+Eroz'CVffx­v7X w!_v4-YF֌d=dtV\8TjVו[b cU9CX/rﶲﶮO0۵_bqQ>~-~ w_H6m>Y bF:ɱ׏kb@Et2V[.Tߩ OEǻ-VMWk#.@}\$+lXԴ{l v[)>j^P';øO }!PiY@,7GI( 8m+\[m-'m7jXJ!N%^]u)MԸ_A#RhXR,j`%|^ l}:K$'s>{$أ}Fa)s7Mu*혌_S9m6.άv~ 'rU6Uz߼wl9‚>a. x4]oL =~Dmdqnq`R2de zNYjͥ-*Ft.QAܥo|:a.J vxED?pmWkW5ȄN#E[8VCٶb1.ۤAB\*APi/Y9K/w/,1a0zϬ=oԉzkg[X#ApN =QQ6xFwu=iՐyle^A0'>c(8iYYVS:xqXl})"OoT0v탕MZN p ~Dcܐ6Tc@o g6\dD-Qƒ`RELpo+pejcG]+m"qmQwbAgZ)&Φ c^NǾ$WxK " GN,8 k2=0N $-!xs8 SV};{'WX]ɬ/@ׇmJ6@Z)_ ɐܵU&7J0enm/."F,A/ڎILY+'&I·"WXiRA/-:Fv85}B iVAO scJGڮut0\ڢjipU(1a#Q]Z}Qv櫡]K3C<= Lj:lRkHS_82[`O.TZ1Xd4lh%8fJvP,nHk͡OhMjq3UHBt.]k!޲k[ƵԊSf˓}{W@% s]YYAwx Ia:k2f>jF,`gXo #쥙Yѭ$ƶ'lnW5_Onm)t1d|KV;,ѯfWG2_IEMP{.ȏ7qu;D(ԍ]Rs DҬ2Ft\V,Pj,=6\β9 "1k &X8 I7R*S|!YyU(7Z,v(MmA.*Huuku 9.9.9isCĿNohu<$٤Hgnm] ) :xpGSCjRNϻWBy~xq~-U /~jEh@*wNjK$8 goo?p]+z\-F"1!undZxx͎`D$A֥O8: Y+%OMO9oܣu}th7k 72xŐ8=ɑ<{F;ݿ=8ꕯ{@.ɾVaaYN35)]pIe!4#ﴲd6ޥhkp8-1iPU:.u  ºТ`C&[k8>C DtH1( Th3]>qHk?&^pPftgPLzK#zXjDrJȾ/Q a~WŸmS}gHT4ZY!:Ȗ'9J*aꏹǠ%T,ޚ|5u6ʃY,WB/֕a_4c䏍5p4ګV~AYCvLxcɵ!S`\%j -iN߅,iGs&.,,;Om0OعA~s, =Q=o.+K5ЌvRԫ$QbeTH!7F^O9"6Y*ȤLa Pd ͂F+FF6Fm2'؊\(<&ϼ P,y"~AU؋ ,6W$]Q+.TЂV| "W .cqqy7̨Z\a ?j~\S7\~j6F@ L;u\x_9S6ߺAXÔ9OW!n[D!~iEScM|.z@[`MJᕤ:NBH.#<-J7 OsS aOϾ֖5{@ɓ6sp2>~,:X+͟?̗ <:({!x&8QF.HE8ȼ ?̩븙$)wr[{O'nRɓ CE Bw}n%dg[mk24bI m f ׬Fz^@dIkIc/y>Lقj"VOO5丌WzP6wt2TXY~!pXn7a]5Ȣi [GoyE[] QqܒL 6h3-c6|Uy{-{m =rn&q`pk!پJ d}ũX'ƟEUQ[+=L\lBHBۘRI}/mލk"hRQeER9NQuE㏌PJGc86z ?{- F3_E 0xVV>?Ȇ~>C#rX1M%baǟn +U6 1$pC!j~Ewݮ3'^䳔Gc3ʦ {!8ɏSneH;XH㬙)>HYx(\Z$ SAWl;og cAJr=o"4TC?̸~& `a٫f<ZJ-<MP xbXOk% 2ɕUT܌I Sd?2txlrGkXH;$R@M9ɦM|4i<+_~: 5,G@U!؂ӣ&լEs9Y+Z8z@d&: 1\d(*tnDD~Cgz2\WP+ʂX͂09.^SgFYy7UsxztN7Ra;ik*. >,즖b0 8URA"tNen'C峖IqR&'yWGp[J+h5-=lBّ_Ml_1%`Z>r0Uo76ط}崬 BF0˖cB(i#< C08;aݨ2<a+8f?9$;p3l_.(d &/lY(tHH~پ8kKx0Fەi3#ZY wއ#t*Oނc jR1奷|c8«#B4^%> paIaDTE+yM.<6aV@2,f)5-);mX *=Fݕݩt.]~ kf_ҼojoNwA/z 9qITR+t*hRDy 6B6Ap}^_f.7'uF\+׷U3{ʩ!w6n,'PײI0! *r*jijboIYyǂ׊b ojbt]Tl{e>l//AN_x=?/xTuh6N9FfM< ]l"#T&Ӫ61x2C;2˭B.UP9)^ u;J!O7R2-έs^|G7sI`xT#pGE5c}xz10l]Jkq}[1ґܢ?]A/~9-2PbJ`J){ffFC"iډ.70*/8ZPÖ", mL(L Iêbb -r(Tw0g@7w9syɏFP31C7VHTo:`^6Q z{Qi͘kއފCI%ikY]d-rAfx,Uꈹ-gOґ*h2(!_tI+I׿9} znr{"`4݇e#='7JA~ v a>O#u ,6oK{@.6b cS ˂%]`sVK$:%܄J ߞT=6wz[YY.)56cupa;-O 'em検u'icY0[ܡ@ k>8dR/`ڈDάs1 vgRh ̰c ޓs\ +"j"~O/k 48 7 Mw\+ʛ,(ڀWujGKn$lFu9}iXS}Ff,-( ϧ1(G XEHDZ ],ηjI NaR rv<6P醙A[\FUzkvUDКO]A?ҋ7*vtZ HNV 4ң*K.CtfKyI%wW4iCj5ߺ6IeF󐯋$ O ,[IVh;E2ӏB1vKk3q"A[:QM[Օ\u nݐɲ[J?fOo_$n!Dp07ۆڵ `ڛc!2a%`Wh0'D'兛E~JZh#/Լ=,3 |Ux+7"A8u{uvT?rJMdo3kYiv[5NHIE T]xYܙILGf2o8l֕9n-z94;G95ΜĘPM61jr ң5FTQPH#55^ ^#(.,"̒p57Tji7F-pӋw٢Ҭ3#3+B@$BQ?=[NWzES ?)#bnO>^Jn|4دŠOGh?)`U ]U}H$J)V jfGX"E#ێΟ0ypH[pdDfÂ~AޛIq4P8,k;(ѿ %ڹ  B &@C)-UA2t<#@^Ua!*+$!B:%y5Mj`jD@;TL߸rFR㪤 4lgȯچ̀#;3.}/jU}/?+-EGj󣏂vDt2nJ+1= BF? /S8t[˩crb>Q]~|8oE,_f۩ W_ݐP\U. ]/s}а;6B'dOבqI}+#R*'٨λŬaNN!} t(!vqSPȖiɇJ zs0V/ wtPlg ң~n!&QD$U6-ڴ :ux0(_Zh+%rwi;IGr:_JBBlP*ȇtҧzZTj赅/} ƞWr4W~qj%Frnrai&]sH#q*'Y*W0 /%UT9,t"Ud+MQ ]p2;sj+wɡ1H7s[iRߩi8.Qocbvu!,i}<&+./f֊Xn[ST~xryxnfPg%>Ϙ#RT/ܠ܇]dt78}dc(&br uolm-iȻ-l$D9gCFlt2mdk4ijPRpY&ҌS@mkd[Qm9Gx'!Zˍ2}vF{Sܶ#ax+dl̜./S94ѭ `P7*#'pY'̯xh_B购5' %d06'GZ_= A_ #h((B>!,KB){R4(N,90y|`9@.Oҹ<)ʇ=a*Zjwqղ˕e *Pk%q.[M Cmyq86u U$|qw> 0rj!7mYi0 ?bv0;bg Yb x2fSXv׏cۖ*཰9~*ɰY(UCJr||jogw\CP&Ru5E/_wG:DW|U 3L}+KM˗rpdI.~t_S4 D]{qgʐqd^ yg\p| }&mW ~xz;X!H~OdD Y \ E)|my/s7I2md6g۽DrI/w}y~ʲoņos1xNy*yYBS *`6@{]MU2,Fw':osAfiF 6*2"ڜMԾIbnK^eFNo j3h^u&q$>\>g瑷3LIYYR$ds]z̧MQ♳4O+ܞVm #߶ߖUb-~ e<)9/?~2,ٵnڋ_ AXך #1*pRz8}k:}ڸ B ko'AȐ>! d|58sAwl?%J4ٱM{#Y[i - `LG#׽8C32Vãܬ\DmĎo熶( PȠ^jt@:VnƱGE8e7$#ZfsRHB-l#bW%py"ϟŅGhZ-jf5Hd<@gwIdfF 2aAP3:J@0fk}5Ps| Z9ڇMe:҃`J\SgL &xsXfbu|" RZ",t%1][ӧrU8˺ ~LN?~.CQmמ!YC o &hwuoWXmJKs/^>"/A)vT rCW XWzmDAV<vj CޭN-\PX' kkIIj!2 .f<5!""⾋Tj|ߴ ,3MisyOdNBg8lEO@*I00MflKwf| v8t+/Yy:}]^S M&*)4 O)!]~0 O?@˹ UϡJ*&Ym|tb-2+ F41( `6RÌ6])^c(:!]ܿe9/`P]A56o),Z`Աܢ(K7IK!&J0 ӎu!׉ogK[4ςt )JYgׁĸ”} /TwAv}PeS3d㑼'߱R] O8zwVSg j~q`h)"v9VUHpƾ!oF3: -bXDJXvpX]Zy3G^)Aw@1_W/c5|9]>ޯq 23^ s\w [|zqR-N`l"j=7Qѷk%xy{Bux6NXR%d  ѨƙꦺɵwcԂ87eN6A ]HP%y }QJTM/7&a)Rl_ZQns7;#{U݇q1Yo=sKa,'}V@=,x Q7=Ʊ|N.'MTMlYǔFߔ-ڕ, # ȹ~d&tb_ l:58Lv(_R1ؓ2}X Z8+b!&`z#fu#Ŕ7 ! &V=6Pիz徝uEAi6e~!t ՜ AǶ}B|Ac 2r^p#x6r EWlJ}R[ QI=rLetbrQ->jw\֢,X]*0R^[CS 4 ~lX:Hn!.^RЍh OL.Υ ދ3KfUjS7FbγXx93-& =W!Ġ3e[B8wvEg`j` b asuP&IZgsD`/oQѠu:Kع$L@DΪ_^S(Xo9NvNmUk,8B9 ) "rWyA ]AbsN)Ƈ2ZTYER&$5x~&9̀;=pDua!CEl`KB #;:M_4zث6fŒ0jlYb2(qwV_(LqN=Vt)L,rN O7} N˚I|!r@J""|G*Uc,T (֋޷Tt6F%p "8?1+&n(o4I0 WOR ⊾w2ۇc+AȴʋKF,pmW!>m f3;LI9e6܃C>tVK<ݾIhwNNܫ Txxyx<@f~A%_: :gnu2 cftT0d-. t7$L 6'ʼD"j%_s_v&O_#OCLg^L7+HuPI{pJ %yripȺOD́ jrڡm mU[+?k'.4ՇM42'ScL"`"HA"tn*4k𺊊 qA@uո+;29ܹh?iS2};JxPM))GX@G`@"G mMZB" s H}. Ǡ?A0J&A_X󑠂i d'5HL"N&hp9:'@pe2NaȽC*ae0XMg 3[BFΏ[* A]=WBW}mLxiyT>Զ/(ŃeKX-҅(Za=sn܏wu9ٽ (AM:D Y$9k=a]]zנ0oX^,ǵ{=jvw$NΛƺ^igs2}?Š/HͲj=; ${h">LU_Ʃ)JKRL%k-dk,/ #ot(*J}vgkj!n1=XU.:r 1U}9V8ȴh3&F{VV4G yzrIQ?)G ǟS*zWxQ܁|[)%6'tN*J:ի |1mHHCBMȡe`up^(B;EQJgP'&M~B&밙27،+ѱ6 bӵoNEܺWLiT <⢟4uʯ@IB7ͺf"6{F SBWmWUAa)-: K*< 6}q ~ R -1y_s*Eox![lʔC'CyqًP$#ol Jir? -itUx9 ( A {E kanGX!wm>gMKc/;pd4؄€"bCM~LJv㹟\ rGJjIBdBDQڥ ^F[3RۮVgcbfdsy0몚Y <=wJ jͣ@Jqqm xCPxa5_ոeÖȣ a>D.:o+fB҉uM]!~@ Tڣ0  -IXGZ0C!W/"Bu͚w N)<+wOMvQC Byh[fչ[Jx4W^?3"@ KʋWff[ǹ_I?YK#Q4W bA^~ #Za7#.ެ=Ų.(g"󕗭cz?L _B ]NK<?,]OoO gV1q~ jf^dXMR;->356- ~%˽=@J ҝߧ],9xPI>i\?c`- (EC4)'`Z0Rۃ{sFK%-蒷?DYjZ,)Kwckڽ,A$pYY$*[fL!g``F)ik'qio_}ۘ䢉 K 鑞QX|ྦྷ%QSw");Ot; pȇzJe3i[<]Kfv6~!jˠDj;rC`07ZbWŖCzFE> ƫro|SQ9I}: XJNĸNjNJ(nzy(*wܚ뫫(/V1(#.KLYY6ȁ:dVuQyk'`71Df̕څ4=YcŽjvdpiܑʅЉbV!rcAVb~6N.eь=XbAkCp}TXMGG9R2`kD+>_ ys0_ρKg= , $l9ňuT਄!E6͜ 6vjAhiH۫9)'끚o؝P̱viubw`~bE`tucGe-n}U/ޱ $l@d>1Bn:K',9llHb̈:B+ |9!7Vγ8 0(_\ˏ*Ū1+xm+> 2B+&Jm8n>4uP*1b} !Vmn <-2aʣ$.~?v^ \+DS wm\l0E^\|9zz`cB|Yo6n+ѧIAVոՄVl]^p>os2F͊ &ɞF{Gx0#) fOU?32ژ^]U}z/X*rَ6SqIuMȡ Y߉vfeգҘ`q  T:!쒍ztbt[_xŢ*U:O} ^!a&@YMO\_eYJDd" zSR}> =&w v<'ǭ<~CFGd"8SKRh8 ChA>}gtpC*WpoU =U ԞXzR^A,p5Xk=7U/@M\|Ғ [/~;hANgSޡ;;iqg -QQ"KF˶+MufF= Ȅg,g7 r1N<;'#(e>G}XQh+h^^i9}̻BQ#k<\Gʻ~p G@LoLld+ǦT"$U^?3pi ־I  */y%#,24ܘ$<5/*X)?I;w`yJHB(]Va~X~y6k-NLE^8^"tѼc<9)NʮĦZ]`t"*hZME|R!*MJ24Mj9fAHPl&mTY>/ .{ >bG|~Yf'R2bIԉ-j^4 ܊&#R*D+4\B0'BW -~XHnDi4$D?GFYNj拚VW:'z?Zف##㝝 /[ Y'.`u|( 5k\yu*RyG)G8(xA*QB[?EEL*xP}>U8/Y~ :{IdN>tu'XB2+_(sv ~ c!= 2auO t? ݃bٟUXmND3e3х G[Y \icK ZMɁ@ʛ-P5X!_c +Wu}sIZՀ;sDs/B62A3@M1uNS0E{W.>E2o*}v)1B]cqlO $~"ޟ7G%'^w27s 5$`F|ת>*[aVPo]5PluU}%"jӟY,is&Up cz_:{k\DDeA/h xgy2IJqs(R5}k5?C%h!"[RGW!])m.CΎ8hVQMy㦇up۰A">\nޗ>vxd4?q %~s:-ǭbN sR%v ֶFlv6`(Mm_ sGx6'qѐ{9Q <nz`x !uo8fcNl9辢nc`ک\nUI\aicRG=Ln (`AI//heAzc@͕qSWq d*8|,צ'LU? !j'ّ o_A_8Tߙ1̄/q7o3vT {Kxn"ܕpDUΚ4u`}Cxp!i~Cz=-W^γ.aCQ` jC*$`x$5҄ |:?eP73-5<9H },q>rY wHBPD!o)d&@\ُ""#y핷7E rQ׎ 2`o!b0),XsE剹ᐢ<)F^^9R7?;a#߮y>CQ2{dC9@ph?jI$q"&С5xJe˗^SěuլC-+MCܔ^߱9V:RvЮXh%\YL}} B*dc۟oSKI:Sz|˰z8(s$W(1eV =-`})T2䖻*RE#vZ4elɴnizS"}流pLH` yOB7>F1ŝIhSTmu{]u+ pZ ~U8|Oŵz% wT*baf7'v. 8u =_p<};/\MUZr=c|RՑ"mmҁ45*H gң*5ӿkoY4IK&f Tq(:=;ReX)L]\ҭ rm':F[ m7zPu^%1c~TjEeܵp+1 $]E3I m.B3jR-J9׋~suX21)c HcVXj윒T:tʑ`N>n Qe*%eW'qݹ%WbVj=J(ŞdM]bfƐ#P~'@Vו y_yw%͂H&wlwCB=F(Nm z r H+/4yjqi+I 4#f4<]y$ cUm`Ԣ~5_a=b*Cpl 13 4dl&g,|ò*c^4tYL;m]!pvs۠,gOvF/9iziAQ))#gD*bIĥG3+^Ck]-Nʔ<0?6GU11$c>6Iqrag /{ &p[)jI_LQ~oML%_Sjq:EDClkƷnʫ|sx'}Ǧ,H*fwnbwjr9KW%'A3e0[]˷R`HgP!MX,x1 9%4.ewBf/]aX<.Kd9B|^4od?:z(:LbY&8gju%kXzYƗ#X/[^&(b;4\Cv{> @x^ KL?$΃3۵]KQ(?! 2;ENc> I O\0|"Mj>nE̛2i"`dX%C :GE%50Zk enYoUީ $?HFb$zxiT5=kBQ iEѦl s`5NA#x׫8tp{@@ ]?Wu1q>هZ@mO{ +zV4єlcM Z|~wP;c^Ԫp66!) ='6L9 Ͼ+N|q_XjoLi~BOMҭ-dNOVyCǭ޾4\e['"n)G9A)Il -J0nbtj+W8c<i/,T{76nuP4Fr|0eR vOܹYMib6!0g.TU(]I"wVc#XbF?wD-='Bnס╕tyD j8X԰Ko8 oCĽuP7C\bo-]:?ztws@/G@z7#m`ӵ٫.A fq6 #Z TonXvf>$ojnr֏rs%hzvꀲ`[ġ M&gGQ^d(11JJ4)8~ j7-g0VQ_+)*}FafJymܗ76ϬNG(C2 AP.T~vwnVf`#ͯ1`lv0My#($$]nR@)EEы桸?Lӕ$ k.)X͈BtW]\j9͋Hm4("Mq: g'vqhՁb]!\}}I'@iukiyZ3 HOC!Oeh%:X"UU|{Qedjk&[>?r9ORWe K^0q4_"K[@ci'3pDqOx/!dφO%co2/ 5D,>)X3*wg~d ɵ;zN$vj sÎ@^Dz`G0J`GCܽл@֠E:W`"5puqns3 ѷVI *ٶU:'~*KU -BRŷw\e[ZظiIU@Ν݋ص?*,@z6}Wb:մOM06AΑ )T0uZu%?w뾨-yOSzjpqwD<qFc6֬n=@Zw*!kZ ξ `~em~٬cukiRZnum~C*mw0ޔ5!CdMo@f 2ӫ=~afW>v&ObecOijXizGX7")HEXO҇-;T]*86OeM֌2X&mPkp,WSB]3߿kg-Yu$9'"61珢q\Wys:W GMÝ9fl\kP68U}ҦɁ&9\{|*?Sw(:+) {*Fơє+O76"i؏`D(o7=+{ xޝOn7=O=Q\l}* 1@BL gFNuv"TRF{Gntp`Mvo|R,mvttѻTӝOYjyUK\k-jJ!v.01M }hZ:UԯDtPٹglsGX[ 0}%yAsڪ}Ol3^d{qnqЗFo!Uiqd;x͊o'i tZ[(lc\ۻEbSa9\jQ؛Hb#tqWx{컱~wddljl??X erQ,,Z'BZC'2w.J: []ߗfH2b:XƏ_u^ӄR}h`plv֩D1L8c@9G+˵-(72  kCp,`8fD(u_$HL&ߨGo? ئ"3Ի3?d@rS إiYb(ӞR|wkWthz%$ 2 '?! L 7V7K[**HB9*'ASƀAE^n#xHh=+O -gG3Y%;[";geh96]I Cv\Ig6Bٽ(XH r+"`}ABI|UFE>Y'[~Itb(ħ_5 E7b#Iߡk,!8ފ_-,BBX~7Οz]"5UAт%h0u DuvR$;3+Pff~qNi UN{W9{kZ(~i0<& 1 G|\3ZØBt-%d4 Ff؜ h͍yK_>|;ؠEH_w/[5̋EiVX,b+4"YAV]&ФuiYdàpMz?=tGZݴ֋ebm׌3:?%[+;ҩQ4XCiKi({}4Tt+Bfʰս-ׅS|RxΎ qϠ ġ'{Ud+5[2 ^BBO-/'Z729g2؞ F[{r~ r-ea~Ʌ\YZA#|p2p.bC194N#ޫW&9;Li'tW Ԇ/d3W)~y_ yjږldHR- I<YC%LCҺlVG!wCND]"?&7J:W8Pc3GjGUg8'{{fDtX+{-6t N~(y7wR$L` aЇ4!Eu<[^cqlfːd/{|\z?J]11h&3?zzm쫽*"Jz f<·ݪu:/j -υXna.Tl ' = ŒФċ'R}"rfolòbب"JP#oI\C]Z\3oCOq4Y]Z׌eȯaU"-ZHiρb; p2U2VЅD,jؑrrJ" &L偑uŤK~A+r.8G_̵B#l啮ː~Mn!{[tCN430bҟ6UCR.?Hnn;$5'́jD(bP|'&FNkf@OLd}2I|7GI ңcB.-+9d>GN̯S"N.DQ:vc9,m6vPnhJK*(c{?؄h7rCY'3S[Au]*VN=s@Swf0A)_w*qpop}3h}y5M,P@F*1g7 TDlމW P%{ͼ^0w"cѨ xW /0~lh$)YAH,Dq5Ht(D{p;ge3? 24N4d5F_"6Hxnrn'N%LaVMYV!?&sA+I bMz7XX Α 1>IW'M:VU0"mL26 N}ljF .A\Ts +3)Ѕ6FqT\.O(CJET*xǺ~6U\)zcdt).f46΁"iM|SW{0'f<5"{?(NP坑 ^,#FA^3?f|# e8z^7K$uXGrL~N|y|f8_W`+cIj"TTECt(fޅҕl'Vqs9N'-H҂NOH JF|uWtϞlj9 B/F#lY8>>Nzo{g6)q.fBzQ\}+ )e^GL[+I%!%ُG&m7؄=$_ aD襫IGMŇiUԜ/B Q(φё8@̒/ ԮwC<(/۠&J:np֥=2W:*yJ왢_*յJA!~<|,d[h,;1S*0{K2 |>RBIrKne~>"AW!\"HIZoc\ ?8 ڂ`wI*W؃7G74̿j bik20n{@=U t(Do;@Ii8awLa*:.\HJ,?Jdh ƿ}s0l&څ 8onQmqr4FQyNuRR?ѳ/b/HTj z&_ 4e5:v܂ ˿{)Riz4M̴/i4~Mlbi=,غT='i>{Bj0\NޯMFWn 5m+S9M2KWieBiG NVuyT!/^5$KS|HET\9GCJH N'^CN;6znN2¡ŤL>4SB<2f`!$ o[ .;X'/ޭ¹7x=upprԇU5@RE,/qQ9fB_r%uu(R"h;/a6HyRv` v'*_Q›{h'/]؁RS_ ,ZR<9;DTqdZ)Xnw:+=]+Xg!mR2Ϭ\Ah.  CҲ鎟 OqXloy8_>-XІһJHҎ\$0 [oAr*zkWȴ+e@+4R3o2fS9C_!)p!9>COBwwGWo\#M d4h=)_715A9W誯 :Nm:Y &7*(0i#%sMrahx1E"W*z`!Og)xء3ƿBFl0 Uэ3_~ʈМrW4S~\p],Ob_9lŅU_N XF[N}WtBtG.xjqu%amE~qTW"nq⃗#s[L E.!J5RP2E"3H'&_gJ`:N%C.MQ)0F߷I.a3j% S6 _?80{N X9VXP8ZB`y{fS.@W=ӿ:҅\[ Ϥ@ReG%}=gU+=Mܔ~ ( HJR I%/w懵Z1\4f0Ll[7{?k1qaSZH)Q%'{T<=n< 쯴 ߘ*=>KDŽfS2|(A%OݭMˌ@(KаG /$8!R:',.Ma_ z۰يLYg2L`%GyS:jӚKuIPco-)]Ѕž#0FP\|40U Qj%&&o׻ fo(eU -TxH˫ 3LjjQwM0Dq7*T~yZtUNJ\QBdX)?JXfb%\BI k4:] *A8o6kM7юZSsl:g]-^8QoYf2? Z";-Mya47ӁLۯl- F Yf\:logFwNo,Aףlc*_#.ff/ ?H(:oQ L#Xp15ĻSΥ')Nm1V\}?gyJ"_/3.H1߿ &`d hL Ipo63{;SFk}6m+U|u(BKmUw^Rk[ #i{8@K`f$p?Ru'rVy«8@sOAFu!6vBXÝ2m&Jiթ&){:EMFe=IɅu3dI/*Ym hƪy*K>Bկ3"?-j<ՉE!2tB=--ij9E,9 i!"4nB)@hGV8P۾,NQ=WEI} ,~$cB-FNdXee!QдFrh,jteǜ5M%%Pfɑ`+;;s@ln%rBq-/wI\`iHfMUh>6U<-4[nj-QLD4G|b.1tY3,#_VnD?Yہ/P oNv 亃?P&%sLKT@عA1uHA)}員&Ԑ\8̫VEY;CPiߞ _E3V,U^mcohKhzs1z؉a4h7yB.9k|z-1R_n$uT<T }lx$y"|x52!k oF]ށ/7;]rAVo-:]orgt' moD#Y7HduMܦh'WhŊyUZdX&k^g2жA3ۏ>6DW%#Ey|Sr<CL t* +T;>t,xi3||D@~-z]%݈]adPjhmUAlY^!ZVnnr&ש C/nACG5 O[# =GVȉ?cmPmUji3q{ĝ0ΝIm[Xl |٠kmxH'Yk/I#f.L}("QU(x&$"{ m 'ս OwE02`ܥIhN1q>$X *. ch#ߋ>uֻoki(社*0Rh/6Q#I̼iΕ>\"S45N,DG|.boai|iYL1#W.Etd,aN7$B ʪʠqao؃2I& Fv9ϲT҉"qzG!q^nYQ{ըݓ ah#-ixdSn"H$)a}p\,Nl(pP4P)*5X46PZGk , I})C@-R[Zo69d J̷Sw)W )֒׶ 0Uv2tr Q4)ґ 妥-s-9 nob_!kte;>AU#V<8SlFu@@kEw,(K@=/!Iun͵ [)H6oj|%%ϤNOJx*΢2$c{\d ('d&T͐K3)N lyt`-3WxDlߵG;=8wiɳvϖ<@SÑqVo*=S4$"G8SjA?5].J\DE^Րp04Rp.ў^17mqaKDxzEfECxʊVXj ϼw+Pᆳ?dŬϹMں]/<[rL?4`<y\_,*=.]Ix-BL dhF0( >8F ʂmyyu g 6交JYCv2 ӮD--JQ.j5IP`[O;C]odÒEս88g^\3ivKCNQ?;n6 U3:=w;b J-A*0AQߢ-hsI]j`x 2p^( D PnkG 8ĝfk ML~$W/4LiQMeΈQ0#D(Ȟ\D<|8}u? =qI \L(ļu[STobnNBnsEUz#%|bM)hz G dz`-8, Hf=mO uTD,hTL㴽;".XeѥO&-TG`1 hg㰛-hmx4^Ki>u]ucD f\v%;Y?>Ot=͟\|w^{;~nUQvtJG*by*F`*32?f"ʦO]hk+'L1EkZ ⮏WkMP#\m`\ Pj!2Mcb kV]hx=B|^x" K)\ MW5=VvFnhG%@&tW!}lkK3k\µљ2%Cs)%=^5s8]D;&)%RdAS$U|pPtgqkۖHNQW-BJ5g}lC|Ώ/BM<{Ƚ`lkGW'#$iQIJ,]BHˍ` 3&ZA!VwD{֧3HX#I u仍I;O鯂WeXkD 9ljDϨ):5<&v(UqF{ JV; A;suEe_1EacPA4!:Vh +&9Rk0Bx<-Y̾[$ƈT&2nqtx˸p6onPT4 @VD%'oB\AeOfzxN/E#p,ҢW%ki~E,f\Pܿ~sށCs,C}cª~p;\KwN W>z"=|D*e‰|*[.m΄4{ 2a,RWY;uj G<Jl+ 3yo$<]^Fҝ,Wekt;n3k2!AOL^H,TM ڒ徇zV5}*L',[zW) H*G &EpeGcH$ oFqF#>Qrp|wz ᯡaT7qba"0(ox=.*E c66Z9pnf;52ĠL,JbȰ_{:ڰw };'nM \!ALð,`Şډ G&aյta L(vnW 0hyIYC@F<}csM+8yc)JRHI и;'CV6.]ۑ#4Q(#GE#F2 VvTvz+vhԛ6|Ub[ْe3A~aA::ճg6Ϛ')2 <|A`&J.چÈ<(nH{`ߩ22^B8\-tޗk(h B" .ڢKB8E;zu?"hmʆ ͋!%;*.Pux-:ι R݊db7m7Z*!3=ήeqd4J޵L ;Nh7uɔȨ_^ZbSh+oZ4}}Y*ٿRl D>#? LN(iPf|~|JZA4PPqus4pU7,A󊫉J (0>: ܯ$mVbrd= m&ZLj imA`VZ w✼/U=#d{3ڽKNؼvxkACS=Y;I~._.Hi`z6.n|EO ,&%F|ǥG5K ytK#yXީGG&%p~/s{w%dNJ7[̌ od%6,"/NbZ&gNk$,ގއ #,Rފ8,TG%j8)XNU4䃅WLsYxE"4I=2TibD2378.8W 6:tjӣϞ=C|/0&9Wyx~Ǻ?1Mݖ&)ΙØt6p:&׌Rt-*#S"_yQ k{>g*ZOu-)V{R.iUV ( xqa?|%NFglwG0Jl\DirWVޖk": MZhรi§dΥ1M"}̭N݈Ң05p0f@>Qvk[SFH r)ǾX,YI_@`4^e_ZO]/h`tО92RLM !.M :a]/!c>dlbpR=O LN#DsEpQFN<`f|ref0E *C28FT3yg9p*F+Yf ^H8·ξcȋg}e Fg>_>J[>9OY޵"- d<(kU;Xb|ID R'f7FǛT^5MvܨϳQn$kpK>*~*yF`A(_)fFۚ"j r`D(xb 8R@gcvD+ِ(+i[cE#"r|~kr^? Y]{ S ˲ E<ԃs([e=l"Vh3!MZГDbvX3 JOڔ%Wd* ")Z[VkaO WEdFP놮qU\DJQr{ެFKdjCvҁzSu$=r~W >4^11_Z?Klo4)Uݨ\l%!&i.4_++1BamxNeى"-tFfkeYR̈́#Ʋ?:(?F9ڒ%KH<.?z`.y0畧{ZF< a5!g ;1٠z.u/Tja{PBk0 =󘁿+_NW 83vE'׎IqtsGo1c "0${|N~ks%켢5ZZLI]S}KCưENg!Fgliyg(v/uv2M7 N;Nu5M`gRjE;:ԌU|sZ"! !-HY42ѳ jکTDl>4f'a<,7z%VK:K[FދBEo_beHs=ee5[ aP8{HV$<bO&fI{rTKJW6P K![b#>HYΣ]Mv R ѱNGFrIŨIP |-g/ps`1INfG<˺'F7ɪ(]eb u+`f n#k : 2:B ]Ye=LTi{y5'aFe_'n}~Pȅe~XyG4 wƃ tՐaq2}1A@4 ?G%Ι8 M7ZoF+>vL!G]!.I8g@X_`]*Q*9'VC5ޣB*/sK1jHHOCUdځZBHo< s1ãAeJJ 齏.IV+}2:ʬnZrD@˚?Mae\(7rI@3QqPybu{]jr4@'>ESQnOW1@B6#ȸf˹A ׉HIt 7N4NV(z%#]]'Ԏ1Q}L v/󻀈N/8WjF>i儹bDo0bhec =qe'ףCJ_hVֳ9[w *;U:Wp0G?S0.R C3U|aH9̰5R_ p0+\#9S9G3QlRn[(å}=fqh3{@x^ ev(e}܍B]]B eXY,N>[^_+j.-:xb I5{=%͋s­uӚ*eʎE̓0'9;dXKjM*QIH[%>)ӛΙl!˽cE$ +41O.mb;v-g7, C„SY7{8grfKUZP~k݊f!~\8)}yp8!G1cvsxA [e:II&p(.J}5(ZJ@=>21>;quqnL-BR%&~}[F 0T! mc2Sdʢ W7z0?G(SNKǭLJN >PY`Dn&Ϥ l=vI1q +2 L8EZ c9pRj$ ? <ϦN[r'e"2PU/|v&zG kw 0Ð )= C*4 PT؄2?(eTr=.V_U s_(4Us1;y%Eg@Yt5b{UeK |E)c/ :<_qKez߄|{ `ƘUVZVkZ,Y0':b`fڣp//*_/}T .) =~ ɲY7Cm^_-8Oedrz$;,qcUU`Iߠ8DITy n@ÑmVX%Ddh݁EʾE:]|`l%ik!gߤ*j|xh+ &+^yRI=Is)6臗4NXs_  Q>sfN&NI2EǤ5Oʋ-炤p4%T!ȟ,!PyQbӾ!ETlaڔ=[в(xvxw{!gsmp@6 E+#T6lJn&\PkLdžEs/"A&vKfwNo }9l v@ ;d4T9Xڈ^ùVLQFf~2ŷ@-h6 !0Ar c_[/, 6 GuPg&j'ufeBw4fxY|x3_.+ []D 4+sd 3Կ^0<Җtu״XAަX\sc]][|O^=`>zGqK3^=bwQSzF~j>$,` Vq I/JyQzgpS ?̏:MQr^Ъ6%"濍 Ti,k(I =qryj|qZ#-kqPWC:q)af1.N}*G1__ ~Jhgޅ겣h/50X]{BSآlȸT6P70|HS!arkdpޜLd m>FL;Pwp,d:P|q< pԊ ^$ٚ{K.+'J?)2nݲxx)17l*Jp1Y| }!`a̷L?7o?Y< N1w\:WIT ϹSw{\[~FcY/ oMsA'&5k]CH#A!MBQYRfpG,!7jHgq ڙTyB-@0^Q&U,~sdNRrc Bbt|v%RWXΕ@c"qXG<0cX"$?G4GluH w4dT+JmrP]ҚGǛBHn<Ԥ:;4֝rͽanyKΰ "3XʞR#_b?BJSp3Ï_LZ&ub@+vOyeus(5C_ KVi1 .Z6 ,U/KWGu!Ґ%IӖE"{*#%`LW)޺oDR<:ꢦ BP+ۇ"b$/ a0lFw˾}ho%1tcrRP=NJ 8 78K-Bm8K`~nt=x߸9Fȫӫ 6jz %f?)'0D*a˖=(X iX/Q{3 R"FMN+%tx8Zyf~rCPut=MJίyѹ/Aojl G%n70KݗG= s iϧBD2[Wpj)g=tK%Y 8ʬL~0#Bz4T/rJA4;ix$'Mu,9iC!m0գyǂn@Յ"A~(ܛAw\ C/(^pf394akCA-!5洁9 nAO΢eU[ct}`5 nnwF.쵂T}x)Qiq[d_"ռZgUϨ%cMpw)ee+u;-;,rB44{aK%Bz[Э}ߢ"E\iԬƄ伤}bCx+H،И&c,@f$V\ƚzhU'jE_}J :7vx@aV#x;w0 'Ay䂭V29dp /4O=Wt)%tʅ!U/hY,1H1BX rY@2-BY.,ha0ذ%etwYbZHGa[(6,cb))wq"30-ͫS&3)K;v>j<ɈI^TsԠ! 4yj&bET0795(h3NYUdJЦ) StzP4PsoNu1k ӴK[J'K=n`TA1k%@rf&E37I:z'ϣUaMW뉛6h O drȺ8$2QO$阰Ӕ^?4G)/BB?Bgq( N3\p^oR)Jx1wr[i׳ s # MU`J*'m jfs9%ǘB  K4s2SDu3Bl;|Y\ |gyG/%&?qp^6ۤnE޸1)$Q<_ݸ3u~`(9ۃkM;Je:x?8(Ŋsv> $xS::?]@oR9ҤKXv=M\ mʑSDƵK:$xcL1exdpjߌгh)lZiC~_FF{4CWn8ZQg,1 izRye%-d@ PofceϋD!ZV /%7G-,Z`L=֣(skɑ6"CD @J_k@''@ZϤo(D-nR?/s h;m%\d>&2eNtQ"Ĉt?mDӣ%s`OJNj+n4vjf K# . 33"H3+Bs-[MEYA Nl]ZDDI֞kF4>B8[`DH*ٗcp.|L(fne 9ㅽ{I/}SF@6MWʟU0aAiW Bˑ A*_XUW 57.Q"yaֺ WB|h8o_l0k {誂Ѭ߼&` !jn[ bza3ߕyF>ĈCE\xLyhx0e'B%:*cb:6V$@ Q[(f*"mA3+c}K,[H]&0O;T%$b8AB )^L{EI@`d3m(ME)TL9WOMi/ӎ(wnK^oB} e 8P<90J9%Z F&fBʗ #Ya^F0:]MY3"z{ԔC _j(7l/y uVb'O[>>rHVw64nm]Lg !:><>ן#ZgOWΑwхiX;ȶ#N dؓ9 3 vf5 d!z|Gdp&S` .{/?+{h r_xG%P;j)5O,>4SVOS3 m1Ⓐ=D]6+8MS ljYs 37q_.Du9y[VPE[頻k~>ۨe9bѫ.4Zlx,T[H…HQf3A9vuLF{#A#̻KNt&P[2fԹhKzV!FBľdyl|6Hz1&c\ol\Hw{ys$ 7F'r-bRG7 MYKQm`. 8@t͞ɐva#'x#!.#k5"DUa{hTIރIr|pئkfcc_[!WjqZd<$Tib&å 8C^4֘ 뮘cէ,f9<Į,yUmcd Γ<ɿ]1u?Ig;d{S6U 1)ϙIG1f% g;@R%r~zRn }A'(Y)p3[&fL {5T~oC"?U.w|Z# **fXI AW w-+=k06\Zz(3J?;5ch_'g(8mA9 SwQ>+ըOP5kzmA`᝼dEmcx #iʗa9&/ WqXy I;\_EpH,iGTokIj kiչQPk]Rk{c-Bkyi ӱhh 5xٝ0){PSQm,3 9L]cÌ]h~~O/2 C[͐OS&X&bvJ*FRw/)l+#^ ̻%\buvedW"ʂ+Db+ Kj-?Ob>xX!耹+ K@z?ͱYͰplAuGΘAE|N7W Iѫ1f}"B+d@.)}n~ MM'mRݲZ:AcUC92p99hi@fiXC0Cʛ>rE|{z/ʹH<+Nl17(9S'wkZ||-p{ +Zq2t&QH9ѥ.̨%74t]Ƕ(ޘ!g[f ܓ&Au}vӃ0F R퓺Vp$03& BN3;J {ILO'DE,{9;y)5W|1S! GMN*=̠3lf _<,cn(ƏsK5 QD+8F/( LI|HˣH"r׽cΑNhľL̄`ZQGaJj)$ԍ0G$u&oQQur)kt.|g\,q7}l. ̶w,4B9گ!Qo]թw +ff!re8=d$C"͉އQ z(dSdY415/|_dF&Yޘo G%΂ou ye\JWW-_;D*u @H?9aIA Iw8ga|r:AP% !;B?\]IvE W%oOSv_oܒX#Ē&@pbOɏ|} J{qT>c$paudir2!jj g~rlehfYfi#c5B7`Vlu>xxa&sGu#c3ZV>^ u9u24D y$Ί.}LQ" J 6q2ISPX 2͏ h/4dk)Ϙ]Jju UuQ1N lK`v7d/Qn+wGe0 @@_VT5T:Oՠ[\ d ˈxu#Aku0&\`Ħ2e"j2&HԢзG()O}5&߼eX؎$M\3O.RjTqׇq 5ƯHYPsn$NmK/ s8Vr M„[{ uŰ+wk[qګ}|t72G:Xpp=^  S+G8D%AknKgb_;nA0%q֊؛ hl<'vq̭ lmc26ч#N@$c&;%]8߃ w;GMTrAK69|Sɒ#- ^Xhff]J>`m"zFHܔ"Z\V6!G8-M{BѹnWa,bS[KvÃ"w41C'KeNvUD5Ǵ0;3B` R{5W.a@!TFc.^fo2DE>bxl_܎J?L췏pI:ϕ(ZW3*k^z0#R&fz 4@t I`RKVyqķVr &mQ% Y4xQ^cbɺS`!}r #?N{kHu6 I.ّm6}2JvR|*Tc=&MǓRD"޳;u)Vce(֍0a0?vt'"y@:ng"%UpPH "~;GNQrr0F8-&@ԾP{όqɯʦ"!4.Ǘ/ae)pӈ1g ͞{!&1b0,e#rͅON5__+aΦ#~Wyz)SSRoUM=Z_Tw,ŧO*/U;bm!lQtbz9l䆣f:330{x^~O`6#cvC|I"EyPmLG ŎK"$> 5K?[rYp "v^b$N; Tw]]>6%5B []bxD/Lal}/v {ޛW+"Qw6+]"d`ؓy|nQZj!!&B%J3P*XFǔ:8U%rw]|Pڑ& ާGV42IR֤nPg|T-b͟ hUy,}wHj"`DQYnˮE%l/vm|I,MfnXQ=TY7}Ͻ | !e@)>9eG=h$渤 v< b,ykfWsE&Ta&d ͚HG'ο YAfVg\-&ttUpN.{mq=}/|( @E ",MmV%L9:P5̷?n=C`$ 6~҉2S/V_s 2e&,%4VЫ̒mE 3utZǝ\`G.wd"!l݊F>s@mfO{7U FNL]Tbe0g٤wS3E;pɝhutVnB Lb, 4:d-#\\$̔ S_kcP}XXt9KK(05Ͳv98pcmUG/N-jAv [$ >L/G؁Y}8INk#9]2 }M+ 2\M;6L%W ɪ(nh,8.86HGc_r fx)_H}m$9SQ1$/43,ow.*KĬY)wIߛu t&)b1+NvEE8.ӑЭ5[-R⨓Nlyp FC׋ADV騂Vl H 5i#a<=+U79==4sE0٣z ~zl*}Mݺ;Jpdk|[E [?*{Vᴛլ$kX;G?P+T+NgFf 4o0"kG2?JUBO(QD[.WOpfNiC32+!Fǩ?+R}Kzw3$,w}QdǗzic.|y[lrOLۣ-ob%i@`+(R9]$g656;{b7|  @- TUVv{%%%mMcȥrRCTB՚חQ} {3Z1&Zo, hQ- .WW,:ì*^p3FT53C4z*Fkszj_e ?ctrZ؀d,Yx»JytTpfo4/-sSP,#Ox 6KLʲ oBTrVQwõ_t Wfh *ij얈t wY&jhji\KIcG&PY:IimZl>9Vf+]&)ʜ$%6ISk50T8.YM7i;%_|"KcRǀbq>|/4z/uKë́;2 q~r,-L6H8sH067 j\e ރ!%vR$I^Z&ğ~Xvkp̽A >4Qr:Q#jORs!(o;U'*vEM՗$ 3I芓䤌OF'FK(/zߡoD[o/sUv7D_%#"SE胘HV0tՔv38;:;Ä2 &Ѯ9jY N Mφ@r3JFbɩsT̉ZɸR0N4]?KlEN:9m- ML-x;+W< s<'rSw։jC5tiUZ (y ׎C"~0CMäONu\pk3鉩*01Xm}9^;o+'<-9' 9ŇV$r?.>I7tv">yj~.ƭ/iC#N8eߩʝNGe;yU)Q9!2N)IiSPgg|:58WX^@S"":/CDÇA.1DZW44QTsîrjeʧOEe Up2t.}0ؙXg޻vSJ$ZՋO)o2n'5gg@:vnUbSi-C|}lNhZ3gC%Jv6n3es_@N"Ji˦PV,ٰZ4$Dn*(nqd~6.ӻ|ZdEnTk 83|=(iCWr)U_e8 .ۂ"B72tF-sExHFq'.)#H<#Ը[L+uTA.rc`P|<O_۳%sz˱&]krSA0)(FX1'e6ћEL.tMv8E>Zh{f(+%r @z(>wsHeGJ#-5m[Wr{ zȃ2>qnD(v %c ԆkqqqI@Pe m p m"] 2t0TſAwgi=QTV:g ١PtL$`*D[dLxR69r 2v6{]K?/T4*hv%j8>8"5d*(+ mpNZ  xeW8Ljmat#ͷYyJq6LJ%[VqUPa]n'z&ȍ\hV>{a-AEՓMپ4jЊ'庥9X̳=HE7W{Q_T 2=fj '+ Bp(<뵣8LdA}#K4縻S)BT>GHYvgW JG|D!TzHFDhsM,JDg w$;tߡ9]Kp~D9J + |enQ4fLFp#SS|ވDb$pgW{CX T` V佹  o-)͖7J L0$ tBdw_ZˌnąLxAƘL'>.~tn椒3jfL0(7E7^["iĸ`++sW 1izJUH>z;eM@!9a:E7/&̆$PʁՎy G:uh*́fBxz~g%!Xe)lIfg7{UPs7\AbTJ[dW/?sI0t3X i_QلV֋R#d#I l(A;'}:f䮜 GT0pwW-qIM.C@GܛɪZZ@ƞ&,fA.>a^Uf<;`Zj63КA&ld)Qr'#Z<^`$D&ID * {!jZ<|u7i8^$h`0U{;SsU1Ɩ n׌p"6,B0Ѻn"20T ei +.ӉEu=l6+p4:j\烉XX7Dʝvo2rs.*6[ !w>oswjZ_.ܴ8`o#7J WLH@ h閦RpO搈a{)>ZĤmi#sp-jNa,El_ QQ V0/, ʥȜcNl^)@szl>)Dd`<%b5ak9A\@8i2;@D=g|ՔrYRMd%PI5 vOIWz?QgႴfk'ʫb2fU 8(sFD֝? B(1b1!cD cxsq0Y4x\ )Xwm2$Y~";$i%=3jWe壝K*P[*PYezBB1p!:(2Mr?CaތQrkɪ佩7}+(C}b%U4A. {-U9Z,+B a[ks _|aי;LZ>v;U Kψe1MYV]QڐUrp 7$wg}j.J];8 A=Aݩbx5lζMCM7Jvmg c?,и1rifTX^AMRU\5DqaM(ؠ bJy^|l rh4_ɻt2FT ||\&ٻo뻄?hv-%1Ū}wQ'13*m$ VWs:CIKָyߔ,^\VZ,iO]@S=;ګaqebm9 l(lę¿;6 7$66FA!H_>9zԒ灹p ֤}V};~iS PXوNJke)tR&;IV J %ޜvdD VL5Y  9W j^fPU*{P -Ь4}}|v`"6/<. RTvjb~(fH*`qC#K\c@&,:rc&HVes&3SSْAt[4QǔM `nn%;5 x!Tdf# !w:$e2m=TK<mi/wbӚ5̹{_=d >a+3,='=C`5O%g!o -"}@*5̬|qDTC>1_ 9! TYoo t~$Ku!۔C_L!sK1Ggw 8ԼW_?ĵ'fe~#99<, Ϧ(JHtT p-'hڵ/ZAh@=q[JO.s7=R=aаA(Nj%uH+ _@:Us+|ؿc~z^xD^&uKޒ 8V}juG1޸$p |(| b]Nx\܊%Z54 +) jJΥ:RwZo`dIB`T*)hQ`QEqл1k1$ETZ .jړ[A Zj!E\=|aK6{NwҐWIf&g`V o!'s}ǡfx_,@~Heu=&\t+iP\3@N|fDH)uZ̿>-5XK`E~xC_N8Hn_bs[_#5]N;w%`I:Q6ec w1iMpMc3;n F ]HLu%hZ{EرM W0Lk#nzsHVGRWb2\dCb@QiB#C -c[Թ9edJRXWb%etRa/a-@HxfkZ'lt߇ߌ{噽0{$i@#=ڎ1h[X&gluJ0.|:ZҖ~z )Mea42{qWC4W|ʹOjV;|g7TtI^zmD@$S\ߦYdYNG)9dp 7=/^n0~\RE)`R43PHr!D2(GM6~2Ac~A F )(Ea@ J̸M15`\۱a5A=)=vh `&?mV#e2@ͩ4tR;_5p |;(Eu"Ё FXL:(3S|DdLv d) IaHC.מ 3zyN)O 58o\i~Oɍ}VS>a vʫdނqL|0{F&HrfMW)eM\+3(%I5"ZTDy7@Ӣ@5VtXDv_R՞vsf"(VJzbd 1.9iupomx!^oYj2 pPl(kR>## i{xUYw,oI*Pkr){An07XiC-!>OjoVXOo"?% @>#ì]ZZ3W@PóCrS}گ]$ִmsD}q*m pZ}[Z#@ ^pT!Pn,TeӮX65^M6`9C룢fkhDèI"* e_-uʾ#ٹ@w w @fqCr6<ڃ֧b'7\Vޘ:u_V;tWVHːAsOƟ-,\^C]W}u!O4 T:SsYh/ vb9r5| V}ֳ(@Jc( эE }yZ[2KVK[i6u Hh6Ҝε/sdK ?50~ͮ~3|q#mHLSQ7xd\B\+.0ZRm/ 'Xh3Go/B#϶)#E0+h C yZFvv!ukRqq~9}46gXvO1;4}+$zdqHM!,b6+v34 .M $'!^WF8&gwϰ@)"ز& pxi#8E{PO S$n '^؅K$Odj4:ސ3XbGa9t^?,2iL+ޤL*Y A0T@"uvGml@v=AIJMвT#p0 ՝v^\,PM)GG8X0ضAe6Cis 6Sw>2WOm1nm RxH k :5`BPWiZԤ@R]gb*Z@PTL/XåCoF\7cvhdK9 O7]; P:o*x}[uXX֣ 8+ÔxS1|Vuroө۴K|{ q}}{RR}{xr!RROo6 -fllguXe3gee}%ef y> \:6,'(8F ]"~,;QM\W;Fʍ3kR-\x6P0 (̲P*3M@ybD u)"Q{))?e,wi~?y|ՇTY wGXS ݚHe5}Nd@ P}S Llhpavh*eiOD۾zrE<.]ފ,'5x (5^ZS1CehJ9 )`At`}51#b*~hM~ Lc( O>BIL-ijڅPګ85@G)gVFM= 0& ,߆w6iZ3L& Kb+ \d3V毞P>0ݬa@|\ DQ@և_d"BPSD_kmk =bvezf "c;蟩( j#}vTqþ#y(kMjPktƢGn :ժXR^Jnr;Uaiӆٟ+'=jyɣ{ GB@~`ORL_E:uȢ`ɧbr)glQUtf&b>1Z¯ya'VZݨkfȀ3.*ЀqL~ s8͹+ \ 9=,>tR>V[dnkR-'Ā$Vٴq}>e@;T xq|ß;v.B0CQжhe0Dsq5(|OH62ʲZԷrWJY&TSSm ߳Ts`EjlR6ɑjÙ1(>"^T//?wQNUN. ~v~|6SS H$?T/m=CH}p;QOu)_vpO[cam zO͟&by[^^^o.J7/鎵dB$˭WTwl(ꜻE6ɷ+*#c1DʔiJ 4jS < shNLd(H@!TQt-3Mbr-~?x5 j]HI9G$テ },+uN O#j!' j0(dIAMTc6G\Gf# ։@^A5Z+:f.ɮEY)@mki^y׶I5KNұTSAfHk>Voj#lyOpwL3 "';q298d \GbH>,ۙ͝ü1.a.+r[ ԐVJu%+6kʬQ}px83,cF))6Vi.% >E~ʵyZuq(I+ʮ;qU6=2̣ ` @ߝ&s€sQwEĽ$5NqpxR|wAgOo]q, a][8cHSWG'Ӝg՚'TOsa˺{,nfk u6'~y-@ Ο.6XZ,* wN }X-'C56T$Q/Fok\C@g9%oMlI >C9H7(#E?e܋_$p2RkEvpq)TȰt4x".xl KM0)TӀS7-,ͻUGc@ɯp(EED ?9$eh)B=e(ڛ}{X"!4z-V4PC9>'8V(99L7[ɸВI꿶q&u&ibn-; ;O mCf 4ူ28$괬N:n"$&wY"sGTR*k~ /,e -}2l,UTINWx:x )n~%ǿ'-d =ibEM2n2LSkV8}\pձ.F\kߝ*󏵎@KDG/-NRzKU@ބ?ُj>$DԱks̽ݼˢ% *dzR7 o\TPEL4GuƂC vZnΛXDIUe;_ 4mGf yw5oYl6i؋)$63vC H*V\NB3pT43 !4Iï9%N`o=y.{vC=Q~#eQb'y}a_,9Ui<l~޼ڡ>Y{%Ip:Q~+B;KP2 OrK)fw ,ȧyx HӀTEy L/YyC:zYл ;ҫFq| 4t|:/P3 14S4X|Bڮ"[-o13sM3wCh,YnSTSb:UzU8j7N(i0 Vsd-pe ]2Gψh[Tb9]V.92qjH2a_8427cFin,69Kߡv_&PS $>J0Rn]Z)+e1br/sQήNB;{ Z֟dIJc)q_~&_+}or5^TW~8mW%--5:>qԟwz=$2~@pjAdKT2*sfZ apo?!$#3sZ42EVy 8+ /Tf2PϽ]cLǦb/ 0qG0U)_}󞺅 r'KEldH`m)SL+-);6Vە8&fcBE*`~dEU )o6sb3~ބ:jI&+ y3*?Xd;gG]O_O#Mޥ| 4ǭ%)%7hD7W^C01r>-2bnL= >#N|vň?!@ZMdpȽwα\иD>h!r3n6/0,kL8*2Vp5OО ϶?;Bdu0 gUhNAtګjk9npU1E=\{j @hy:h`N!KqH~H$K::K|zqqJSI1 laMsd^԰X-acldĒp|K|K!B]}+cx=5pdMD'i?=[92߯7zt}<'yMƵEdf4b8qGFێ%")_xt/w#–}(D}ZY֗^HrIG(qEdl`6(&B\m !/9k`^>fgDO6{*xnFyo/˭0ΉBE Ŗcܐk/#-80{d+p~Tϲ{XS~B.ĪNZ뼼]3N*$U@5Z2Eze%Tǻ^]= ou?c4cif|jPb8 ^֐ӑ 9[c:Z/2OdJ $ 1.5G#bCZBs|Ĩn'N$*rm bPhPA`_fz2Y D%WꤣB]M ZD_YCgk\+wBL,[dcdg:As^U@EBK;o أhjþIe偂\sɽ6+Ul78f9;97s4;#mԉ2d >lSˏÕ؂eg9]XP dvj72H1d/XOlay >p1lqI8JI}(ى 4hQހJ𗃛C[ IAGh{( ְu hV ޕ}n#QSm=sBN>xR,|9M]|m;yBYߗ+[ 2.my  ȱz.n$iV\@>M_y0lK$F >(@X 6> h#E'DKXYcg}O>C\^h)bIubi@ U-̽8N4e@G ;"P{tCtRʔ"RgHW)y,UZ4+C%<(,t܍e@ [TN2zH3Ӯ'Q cc4iQ4Vr̬yW)"j'چ(g|~#<(UNϗD̥UDC.vR^;b!D <}}n' iyҐ0Ob#£!H^S쏀@f:fJvеj[of뉓m&?1~"ɰIgާqGrd)vrKl$Ox0vA az+|**XuxyZ%Iu?'Q\y*))Ot.N;@ 5ޫ8WG-9|GI~;D C*؈U0GfK@n*9 NIo?-ҿQsLn V,Wǵ]Wc\tq?"i+:>pLh̓)O`s",sdipȗݬ)*za=GƗ`+C+RJyZm3gWX׹֬6гo%˗Y+RV0k`SOdz92ZF7#Eٰ抿)Qy |&Cb **kKlnUA0l^]!v;OStD D]W@[~ YY;F0~-a?I`K `ockQ~mvzw`}"dCZUt#yZ7Z 0-]ڎzWjG|uTZπpc|* ۿA);}4Ϩ:^3f#n' f -AS+uVV"l,`%4ԄVka}ԠL )N#yW-!(I[T7 2U}~Ib]ݦ@MWS ^'Cut)Sy6 Igq>vޙ-h#vńּDUBKAxLޘlSYr/;|6Gc1*'MI^0}'8"%#J!YA|8Zڂ;,rc 붗W)]@٘"'l 钢jDx+`w2|ڳ>:WU>:IqHMbh௭7%C,b=c.sDؖT~ϕ<fnO knYFk MOwQa'M#EL_5@\+ݟlͭA)1 1j|IH8cƥX'w(U:OY{~{i /=SZ-oƸHZd(eҟmb)>m5 JTj׷*ja/яn<ni>5czmK+!jlq~>+ww Hr@>=+'Gj֮ڂ@CPԨC2`)8MH0zF2R=6bw1U& oR6 w #zlzu{8Ca> e;8knayR3U=桅:BY/T'xu5yx*9iݐ8j][HVxe.ovɂH{A%ą7Â:j^f/x)(A2Dޛp6INA`"S#oM9}0bHry&`-13 ug8J)H^8۠|$GK)P<-M8)bt,5V>̲sS> L>Sgs̷ڿq[,T>OP l9= ]4Q9ƯzC%07}}n+^}6ϺL()bʨ LYA:QGbBu$,(eRС`ϔ$좺NWƁ\@Ws]^cl WdK@gR>c\@tU.3ᩕ,F⮨ۇ˖ei'щ[k_>Z}S=[rܕx7E~[>.j4yG-.4P *p~'y Fh?6X,Pa-@cwqly/]SRS-GISL|!^7N% aJnїIeW '/ޢ%1B+c ri }i7EVw8Ls"@-sp<֌)X#iV-nC5Ƕ^VY=^lYrD= _AS#dUL8aG҅蘞)/nOëOq$Wݶ7z#>-`Du:Tv M>0i(`4:1@!RA)뻐V%8Cՠ |xz'VPq6Vv@ 0L(FlCoϪp@|]7VG1[qY6(o9Ve:S V}-?8>{߽͉ . x d@Z|mk,z ra5=`UmLTY`ZV7**81Wlj0j*T2;0 4s-Z)hYsSgHbW]_^vFEo?Wv$70 ߭kȉ25OGƺ &:m-^=:)AZ~lHb:3yf+$E6=jD ےg;-uTSC}Wri|E&4;Ll7 o/ErzD-'aX*q5#[-mK^Ee,S/T+*̳Qo=(i"%s,*j7%dKw~⠚i[mj8fx d K2{Q@v=/)yqW+hw-^.G@[KR|5#p8` &}aY^XyɦpIaA?1u!+/9D,#RZFM^ tgP FH*'g<+@Qb\pR\cyϘۨcLrs"n|Q Ov6(Fy`h, g$gSFGi2Z>p]m+w􊺪ΗcޕAgcr&nJ5F$Tǣ-*eKJP |3J w^C͓m(%\3>5*/dew'Piݢ4Mj~Va2] s syUcsd+ P[ddjiکQVX%Ĕ'z̑dX2n> *SҹW;@T{+vc3P_Há89[C'0\ސ bOUufڡɓDg}=nT6[. g&U'Ms}nǎޡ4F5^y\]1۬ă,F25!W[%qsIduc?McY!2 O&Gg[ u"g'Uo$@2JB>es">|E+V]VV=eD\,q]_1A~+Ԍd}-vƧ R?]ZΦRM@&q)sbߑ?b +W^@PW>AlZ=~2_s?k!LtUT u'+$ƆBNĀiW\$FC]lH>q9{odrKռy㝽r%MBmM22kB?Gw$>_=PLOSv]¦?  -H6ތ4Y܂c+6|Q\*(d\FL"GtZ Œg6a2xxi!ZU-!<^a_tIP5yНX(Q*!.q]IbE4_ӄ/$oC՛ iQ0|XYI{"fIMr9>;Q5!q3SEiMv׶$=Uhk{Ou/R6.:bmAB/[rOL1ap ۱#5l)ኺw :bYUS~VTL-`xAP+Ci\ ^̭J8Z&x+ds+9kxw:\8Q9w5n"URB% =?K_҃ƪdωe6 +bÙ5c[5N>\d@h]ټmBf 3%u-uLi__VB]zT B ə:bmݡKՠ]vUą䮕ԵOh-O G؀+B(ǎظ Q]4UAroڮ̖\32ζFg蛺NL\T^biwsf5%g &c[P7ٲX/ Sn@jks C(e I`($ؔ,1Rk0 +OpE!WIpVOXcQ;Q,v-4󷥩/TTg(SNuÖP^;5LΆL9CثyF >]ɼĢE lfo9f iQŸxњ$l-/X%?[lJ{glj>UևKtg'J>ga9TaX7EQ~i7Ve:B?{l!2Q*j[䭀q݇akK5`o*nI19T)q}[-9PP]WJ KTlSza+,\_$#5K6TTx?+OV?ʄJa{tFGܺ92ѥ{1$4jM+R֊k+mH X N݀~@>Pk|H}soҧϲY$8fTmzej#C|y$񧱪`W ~PM,2NW .R~c%;7k;k~^==sN.S.Gc%SuB]+)t 5Nԇ$0uLCoΝE7Ҝ1D>QL!Nsa:kFET!dp"lk&Dme̒L6~d~g ;QCwx>q-W52HG 8-1E$ҕoC: nCuc+o\:i' F:&1b.:F94b n4Ly eDܟ?1ᛑfit ed*ë=W6m )^CYiR6 97|_tm3PWr[;%K>)ި(hKggsWfȷSkgStKU,.8vmYТO; 2z*ppryk=2sHon;3yVkS \)%xS|uk9АasI{U>U|=J҂o55 s4#s \s]a%rLԼ9gL\ŽT)j/K-S:$ /7F }2=pd Ư]q\{BT3(`T*F 1M`*ZvBLp^6fJ_{Sr@bmý/(dOEw+]/9_ݫXrTFU<&@mӓ?nu!{#͵>m4)췪)S\qeƺ*:Rs0XpFE9sJ 8rB}ݗv- pe}ȭܴq#jY/grvo 4~_4pLKM^BiM{k0HrPO\ՎPsCD*G!w=|dg6G2a*w85c0M%i,VrV)^XǯKN&,Kwl{,@j75J+uqzd0i]7@W߹ ‘ .Zxqf>*HA:`- ;FOfG/|Ǫ z@]H35k蛩& &@dDsT-_pY1X$¢VbT?SKt |f9`bױ:Q"K0,6ھ?;~ύNUIÞ(O6ŕ?{vm)o&E镫 =% }"j\|`mcdS(3WS8EV&=ԍdDlu e!!V R%h.0du~rXĎ*$; ZPyYŪ 0"8 ]"VUFc]I>y2vHZˏs4|4ͭmonNl!/_m-DhbJW`.E}<))'{OBb+˦{"jM6:³B+uQ*݅4G(dxɆ>EL& Sjc5@n̚b"T`+  ( }oBxDųQ<kK|E[B:s|o Δ"8qcCqf ЃOc}(^; ~)ry{6RκsBK8~։Kv0Bּ DA*HfcvN ݲ*'5qhw(͒~O-=n#ӇکMyŃ!|*x{S#`dbL~LE!S, ٌØXՓ5~jzF:.=;R-ԏ.Y$ 'BE3 zhV~ӕ {N  *]w>&;H&*+7K(ϐ:ʉY"j:MS1cJNCf/rBަ@3AͯلzA=o%>+iX)Kz<:Mߜl{y/w`7 gۊ{}=`AR>lDR ]9k5~b"/eEa $N` yAa6Z)+k h۩` і" 慁eϚ$"0$.eM%'+ qGx?p\YZa|C7D ۭG\2H MGƃҟXnOsjԄ1DQ; IR1Muji\& eIppYrgQD%O9R'0 @R\E`4?} :J*EN'E5+zwWRKml&VRM+ngG;Vl|Hޱ{ G+; (c?ޥQqOx]&Fs!(3÷i\,iK&+nN[1lϩ1>ֵqҋSr:b!`9dVCm\IfE2"p{,y;!^9[Xp%95g<^; , ţ(P!ycm]HH.@yI0n"Gqzm5^e=6_yI&2A = i(G@VD)̀\~bw%w=CLtAm)>,oX2ap9@4rY"Ho+f!}+cvGmbxܐEO|\ ̮NO#w#Af3ٳx;8yԛkbw9fvEd@ǰG%)ttƢQ@E}1q6'6qBmf<-]koHt)3T>-tW$k6k8@#϶8|V\gŷRV"];4]ΛIR/) K<C)(5suODޜ% ]!gvοgf/BCp6r؃νjSwP0.$5H lL i5ϝ2Z#XʾͱzxdVҰP6C=PAG=2^hVFݦ oG!O ~sSWWgl# @ _MX&p5lCaw}93GxYBe=32o IfkVVl}ߺ8&Zxu^F]r1a{6k^139q*Yg&/Zg-?@ + {"_*g&ё_9z. \W-˜:̛36%и&j@ڻ$ Ԗ|?G* CegS.ɅIVlN3ly4{0dy.|:lxXIU89Cnn@w D[t *[w'=1z(rTVЪ[l-ڒ -y5P#/) i{ OLa [i|`טCЪhR(B|~a=%Tz!tm9_1J|hW! f=9]՟7` !d/ pDR-w:gTmuy'PGV:}Yd8%|z N )'kwh:TTnb;ŵT.+7LHY~T;ҽI lGtXrkCR3CNBZb XJ^QQgu9}ȼlzEVAHp f~_!`*qds$UP2^iqVAKy^f]hPϣb8"ORK'k'Ǖ샡P@ 8c_2DH -Ԕl\Gꖉ,oJ?+wW< %#]W[ڙ'ovilԨ̡ Fw&Y4u0g{};t>1 сHT=^q5l}?`n\$0t+Q xX(j:i 뾷#,&ގ"wtdK ԴށiCvX/o{2՜H3kO*ns AM^q,q2*6 cHޥAɰr4%ov? "(U@S g uϞ << VzvK"oWF>rj(RLiF8$8z9nQ&P SFﯿWFy&#G3x:][:x 8tRw!Քdt;/+$Ww_Kກ]08H`WtɑTy|+Geb$ \eFeҲZj/J*?F/ M" WP=--EVh+1UQ ?HByB7"@*EKLA pɒbw 4Ȩ02G נWH;-3F4s4$Y&9:e-S9˚!]S#j)Njma{1h7d3b_HY-҆)]YifL^7[0,D4n}xU,W,G˙aOڀ?bm@Zh>F<ƨPR>JEyܱC4{bY/2/T=)vrTALHWEPCA 1D6٪i; _ [ice[_Vܫ9*QuT'PxigcOx)%T]r7 k<:NV*+<xT.t+}FQ_ۋk4}UVUKyaſK'jӹ }Ů.6#k=[~ IU^HS [kv#0c?U*w&dj.ɤ8l}^o㬈8cA2 }.7 `4:DM8{1t5mμc-8Kn'_6߭&MTP/'J|K!ԭ B}'VpVSSxGMT`A_1)K\4/"fn4Vdκx~(ʍ:yj;O,UWS9BԜBDq\@@ݒTpG?V+4SԃEf_< n)Vw[:r,I\Dk7HP%V >0>\ڢ>QڷG:4_UHhR`"Uc o u'Ⱥƥz ]$-!?CQ~G,;,S&ҕ :bAxt>CxJqUr@ /-p(\4lbÍyTbm*aG&;X iɡD;b~- z/j%ۢ^&z'̴ABEג($$jLjqY01t8z>L|#X+[ }"0\<'S`h-3H׮A3TW/_=.BH룼izS@#]#g!amԖGa¦UY/<8QzSC̶>(pdWZ[P^^v^2tj͵g=,uRT)sr^ N*żVÕv&a3vk9Sy{%*5*_x+A#+9y ZZ&F4)%{VՎ"R*})U l`ͳ6 E*"ghz";?iX hFG:"v^  geRשi@lG5POp+e#@/}JȱK}6zͼW~(ub|e :踁@%G.svS|ȉ~iG_[ϓ8xy:eC"=̡R8ZfZ5tEz(IS(ST$(EW碲C.Itdl^ҟ>ojc,A\q߀}Ja-+O~uD| md⃱IT$(z(\D&&l\ii_&6Ikзʪ7*tV&V]1Q¿ TPeu Cwv<'h`2xcQ~ZSJ#մx' S)ڛ7Ȥ%PzP~UURM j4˾Oߞ LI|EC0>oSOv7"ɵ|^Gt<ja<uy{$ +k_tyW|Yw[EonPxoU}\q{J8(heGbCIob-^ ԑU7rcU@{2-7H؆oq3)I >޵&M˞c\evp{Y:h!RC;Tr00<:8h*$-]/&Ȋ M[ջ%Zml-鈨숛HW]cǘk1YY }lB !90&vc)3xl2OadW |Uץ;tA1DvVzVbõZS:Wrv{ CuFZؼ;:ѹO0+}`LE9=u20\p@xVqI\Z&9+jֹP(̡0:7ZxWȎ2$6EH &H/9w5䟅W)I> ÞoBu uÉ˭}'CTi<,JLB59 DQB7[Զ'GP:3aeUؙc[T.je@'g |'IWHL~8*xf|Ƶz8z={ kPNx l%"J8|+?p5RA}:7[cF"_5U*@gcYqg-#apރ7ADFCND)>J:aL~GzA`-4:𹖩0,>_LOel" [I/PZVpŸPl@@ieD?iw͌"&Ylaʄ]Ǫ|FDW=0NϪʋ # ).0&f䔴U5ɌDt:[JZs߹elq Q<4~rf- s~~w:|_L ?WtChaHLO*x'}2b.LA?'j;/p nh> L뫊{8 &C[ߜܬBZ V89qFR|Ha;4DԐ|i[R &/g0\9b6;TfQo{q&kI-wYչ tr#9*,,)vԘ/=I(K./Ϻk gwkz$$j 3_E{oxv 1HN'nB뜆 >&=I [  !e.! ^ACq>o5I.-7 \.}6j6 `Ot\?sVk϶{edl|W!vR@ǖ'vi8.-wNĆ0h4gËJOvsqX 怕.[?t܍(`rUzG.%+ P&U.? P9/9>XfYx9\(-{yzfAX]OÆ"cBnusP=r3 ^_/ J_kQ|œJjRϻ˟9]^ApUrS)T4 gg0LIiKeV%\eiXĮ4U i;-cQwS ֛Q n7Z"p(k-3abJ;جh'7#Q<wU% x}⺸R뽘s,W7)C0-dr-6i};eY>㋫(ϩudD_n[:CRx@NuUt!hq4 _+ ɒH Z愿DŢ}cV>+s,9uǶ]OYIM!quK(:TD,yg\-)9cTK%]zl(Mkc[(d v쇖zӪrOφMB, ?jAQk ݎI\%ɪ2߮9Qcܰf{ FQNAR"ZEyLunf]T( Σe"12ۡe0LThyTK=S ~yR㻬᪏;@a ?.<>B:ռVeC+?^bMP2Sl#W֙9]@%'8wv9 ]´8 - NϠVoXܒ\ݩᵣypݫUJrnmOcL ms*~J'"cqBsPL[,(ss¯Q>L MkƖC^(BˀA6j6]s.:BH!Tz~<10j.ې8_Z~^g0h@d9V6^CFX?2!IZ;}Zz5ZO){ x<"9^u#=]٬c4GWx#Y[~G!R${`lpaW<%,[Q] )5ĭߔEx .y|1V6!K2z6IYrbVݐ֒OGNǴn&gU>{QFU+r!W$`Q5a%]?V1N`ΏaHġ090Q Ft4E9.3"% \])8Sʻ :U˷>)HzY+߃eF!hP[9NkgL9 XgdAo#(%иݠ`]zŏ?*Pؗg (=Unw{/D1v\G (YZ̦-9EJ*g] \{AJC~ﴴm['؀&c3u+$::yTW_3D\]}5JԂ{Z`EiY|Wؿn#Gz]U1~Q~ Ҍ)uLVi&H@!SO|嫈F/Y^[݀K} O\b0\PR%pL>'%\DqaJ10_+sywJraMvXzQVig8&VBDa1gsk»Y-)++Ji,}o"wڹt6Uj׸` 2ǧ&mJdFuH ~{AyoX˄Z/WgT쳰!*6?ʺ[b\7|H[=WUnGaaB*˔,ͧ*hV"x#0s>e I \' \QV|ώWqf׳%e e~63NxT\N51;KA Q8L|,04#yd$_22Y77>LO2\A=\aԱ(3-К6WX8>[c%gڑ@C JGV SAɆ*:gd~X~l񹿺*+Vg hqv@4);z&Q*'w%g2}D}{MM[k >Taڊ1gT(R)Ȗ:8>CMe$үМ{# LP*Lr >ni{xmI\ˮk7:P3mT0I/>z>p?UeZlO -A qWb/&{r˅"0H퉁JhG2F eDKJ{^H]u癇DacpvNFi79Mz`A~˭VگyU .n Hz% TYǰǪG\Í*eGX)}RVҒr{9GT8^zx=%蘢E^YԂ3ᐐ!yrWCY'5 e|o=wǝYbݓp  ΪRaߌD789>((R㵲>bczC?!LA Ͷii+r@nZ7$&|22%tGelD+ߍ!%gvַg4G > 8PF^[!V9J4x=C2bL??&I-O*T-7U. C·6{y$tDJBk8+}<%md_k6`MXQE,Uй=j?rL[owZ)tH5{Yj5(j~tlЂV>5W(:9`oc5u! C)G M6;y0U_;T s,\Ub05"NJ^֟ز_<}$#3T&-3"m[$n{>O"M 0 X?}jA.*(}Gn?O+yZ8x$}lU8Xrl-CM`]P),=ZR 5J iq|Ϋb/֎Qet-0*דf&达& R+J _@?  7.RET;DcCs-`PZ}Cq„xP˝z~R~Qa$ˁZnQÚѡXSڕG$Xr~~|7g|&UTF퍹ѥ NZ U| \w FvŃ:ò(lk-.` FkgBY]j$Z$%=[b6 np.@ 0?jp4a,)٫zWL8c"ӕt!JBqKojds~O9>yۤJ7V5[Ң9Ss0pdU@$4;-uyQ7v;_'0=)" !L-,j!<>E+w"c'Ǚ%+&p <9J>-xij2c-t pA)8}wWR;Y?cQX8Cp^Rv77K\޿JE G+:nÛ[Zk@n ^v ARmNxcX#4>y).u6ځ@`}(,lR>>>TYne!tcπ;|z^)({>g苮nnm;<R \J뿅wXCwjԢ7T#8ôaD6R1Ĉ2{$>]T8㐾jL.}y@uy9@|1-Jx65&UD!9BvJ+4jFAo| rA@іy1`=gm2n" X'pN|Wɴ`ea3ķb47 ? `dEX4~#8046Ј 7s/Ty@E& z}xgD! t@9ھ[9:=P"T٤{Yɔ[B46k .j'NK1G@0kv_8)L9-Rs6;݆C]2i6MP{pػd!pD;FJ.*q(^Y2-QySL|7ř3%j!x/mxdiEDH}.z ViĖzEb}02en|0'׺F7d&h6ԝ ]ZȐӼOL/)?_q|EYkbM}Y&a#xHiGgX1K0MXC tɻFu"$6x$HD}:Yw% $o;y9C|!yKtб yէ5tCV_`&.Nםn3^%k518v"Ͼ^Tu ]WINk`##KL̷ a}Sd-e_;F(V>q\+ '-fM+gW( $(Xcyݞi$T9E!hD6 wAՃ?d710ϥY^nP*΋SV-gS  0[>xNKpEO!SМ9Ȁ>f-hɵ\rs\TXmo6kY|ڡgc) Q< DTfJơ,&땤! ǭǻ\D*&4!g ֲPNckF e{_Z#E1Rȓgr6H$ M]1BKh@.9$CHq9IZoY?qfE"0.3q=o &BCf$u|sQ#{V~ʔ*+ G|'L.n`/{I+3Ή:BotX/@ang^nu5\1  "P+N']C{l ȴbWF}'ZY)},8ˉt%zLVb2!= ':;WE K1vmÍdcN;sֺ\lX-l&~Tb~x"c͚w;=%US_@ g ΨP0 mw@gmVRRP*ّKQt3Kq4wOAn3J6(OD}/p^͇Rj'~]O˅b Fw 5UuBK Z?w>fmW&۹Vj&xj[IDcua1SZgRkzoԻck˂uL FXUJr G \ڷ8F-tG7{p(ML}-B1:3K'"=0Q[!;;qdɻ8+'̌TO,*/X@(/q(t5'yu)C}Gh|8?ň+jĐ 42!)`w&"Qk -tQןN|#H9Ë^U[gBIY'x> 0U:C1*j̉Jnw+nqD!~qDa^G0lW>|1>)gsFȀ7-{ G%iT`ou75*cGAR%,(R.  _ϗs36ҳM0ɫjI>U>7\bsnr2H'/1r9~q.Rln.(}ytXWLR|c!vT}Uͫ: lj0fnQrVNꁣr$2 w RURfNfjڙ8W ] [ݿġi=1S*֮]Ft21s D.9 ov~Ψ:R_#o?pˢG_1|>WN~=!x1p |h }7SG}?MouS\yT{?fE]l Yg@ȸ77Fmk: P2LGTෛ; SڷB&E-$g%O fhP:5$hT ^]^Mz(RNPNwkMYs,)areL?pf#$=ڋzhsVvx"'5ZUJkCY m{}AxyFB"&ctm,4F:p AQ×؈PO zM]Jgk{lYB8T J[+Di2,",)RcTZJEJa7yZJNY@ϻzIBQǯur::o$>Z83&o%%Wj8[/ʤª )V#Bkk{UGO_/Khc7U[L_ w7{.kWvA?7CVk 2YRQؼ}BC#]ɠPkpFnJaL# #Odr^ Z 9>7Ї`7Y8R/K0;.y r~&X7<`vysfSJI+ c ~G/ JzOLZŇy8W 1?wO2 KP9Fڐ%.&)ݚO@Y cOuSq'6 $ɓT{Rv*0ٷPa.w\>X"[b?/ Tba jF ]ekj@mmK. r^|HA4 0YyVYFZd`] r˸v%ۊHRLlMvʘJש!eJؒ+}oӱXCn+vimepfUAؾWo.x i&vُ[L!HQב Hz$ThWi#C #/<]4 h4vQTu E[)/<ѿٛXhw:(ӭZԗ!RiN*ᶧ!H{U K%lM?a=%o17q['pA(EF}a;Trs udJT c+ g4HmXOa!d>Zpk(L);ד%}|teia\IhU+mBd{'TJFtnٜ-=KG9T޺ʈ3ѝ{2ٝŎI%GaѢ1m|7_u$ʓ8yJH{UjB= 9 V ; tyEKxp՞gn\/_?zc+\'q-.&neL iDF[܆ATuʐ`*sgQO/lZ v ׶S(< 160ܫ!C5wo!1T0ba7nlESOakqzG5 C5#IOTplo4I}y`&?rP $NBJmZYG l 6C*XA[}lDSXqE. uʴ8﫹__HNА`g4]O8#tT9a7:$ Lawjk[{ e:DJ@cW9ԭ.E ȣEŵ^Tn.5vPw9 "gBWd/TsizKn*Vb0Х78[#i 򬥓XhC j p{Y\I sm8F֪tt&A`||WQ;|)#fUlͿȸ<؇oW)(ל ˆxß˱= M_n&05'N@Fg[k%vYQ#@jp#d*̠PTwF5 <P:@9; }i Ad=)+.AC,_:X /KϤ;rAp_4;dpXAZy[=j [ŷ e) 8Vpw`Un8HFPz6DJܡX},eRre/L/87ua t3w?<} sZ^SWC@!Dw}YPd˓XS|.[g Ww̤'E?_%5\.n%UiSXMbMU:.DZ|ը; 4"ь])ǕncCg 2*=߬ /WI%Ld$^tAuV%0|ECle<%${w vXϚ#"y6sKH /嬨? ڂ.KW$$[jA_=SaY8s~Ԉơ`h}@nXcɢP'lIOsD$M9BD`[@ĉZ@ >x2q,UAZ~姴oȳPN,Qz~8 +. dD_[yH?dHmTxQV3dWo5%FSPͰ@wJeӌP,7J[ޜ+,^2\6_T,&qÕlKDG(7Qy[ZyP9$Uc@-lr~G"xPgE ą 6'y&0_`ncE0ZP۞>7VԽ`}~ ٹvzQ-4]g6RKɛ9HݶPWa,J;WfWu"}nw\qﵦV'ܝ H "/*6D YTO;*;fk{5-醚t "Hf/~3,_ | &Zt/6JF: vʒga>Lk;q#Z4_V:V=OkE\HNc"7QA/$Yk5Vڋ͢  C0;ܶ_ڌhP-K9{n/U,@rI 44)g(cb3rHLqE_>7,}q^o]]ue1(7Z [/dnzK5& jJd3a(unԡʃ 9Az|\A"rpNS!N틛tcu@&Q$N%΁8,&p:wNjzVyQ9Js_ee>qV3 mmm;۶T7p Ex+©"وyx:|_ls*zKrW2!3. huՍѫ7oCswTY[6![r+ _fE 8_#fD\Q.9r\"ESDϳ&3Ct@dl9Gh#﫭hyBVaQ. PW)PWg~hE2!v/{ҘgU=8kC [U NQYԮr1 3RcK٠\O?udu#DU]Wzu\Go;Oаk" asgcmr8eaѢP/sQ1,#L`aS_kv(SA9t8jxGUnH(D5rB/rOtmn}z?cbz_a-8*ndKླྀÀNY@tBۢYc_:(dinc-Jg!9˥("sfe4u2#..1WD];2W sbUr~)P .&2qJ96/2{7ux^ fYmX@ՠ[ߖ*۱ׂ+ Jљ@WpdF W{^"{D=HM=ق6R© <u=tfu54nrJ'*c$LĆcExlٙX0^d [RR)x&xn4Y5 .̑3¾8 L~o1L+ jtQF@1Pǥ%( 1؇۟SV)zYU^s(nkk0>o+[vtN^8t83”_CvV NDšO- P''keE~8Mj7f~6z)M yc; v 9YU5mM@71< -.41c;Z_L_|33I@/1k/MyrCyNؼdz2+ <ˍBr\$sWy08 [=QŹƭiSvSZՋ:fG ύ3H++ ݩ+ _tFZel Ca3f'^!Tzܬ[%+,i֔J&nTj蕬ܚ|G1!=wh F4+ JnD[RΫNU~PO #_ -HCwUqt. io$>A1MJ}avdIzf֤{lˍKAN@HY tؿ 8j(5:p-"329FksﵥSn0yS{h|kQ>:8pBCt$PQ¶1yd5,<dg!U0U$W\:]|Ǻ9Z*R+ MV *JyfG7d>EWv뙗Fh7fs@fo,(Ώk혞ش߹} u&6f˷t؋$v@BHqӭ4NFEO];#T~$Ҷa>ML`%Dꍚ"3 |LV+afN1P}ɋzulOWI{(W K)NgP8XS^Hy1IT$JAdD3i0I$ͿεPB[F]U%8i̐r: .D8dU6Fcsg5ق[n kw{L 5obE_A̔2{=#uė.Df;z/-%0$0_Mr3:k}S/HppE-4S8P.+\*2<(#*dWAc~/Y 5i7tB`G&b`0ԓl߹6gBAA:KI)rYӂIͺ5:A|Oq+-B6R|aW r;6}+BhVM(˃5pvi"*=2jefm D}+˷\0OOf͘2%ᢱEOl4-A5/);dT]|@ӀyLeۍ&a&U xvU+Af຤GCɵ w`z<˯/KK~dd pi2jxc;y5ij%"uæYxk,CXh\`K1E8Hvww:k|=umn9Fo) -Օk|NњԨ#X욳 $s.hdqH%%+=b̴4H;@f}mZ=[l}l*V/08scܮ!@BAzH)(+ofϚ--V6FC ydM{Gt|lUSFWv9UD\쏃B85o'( ZC|3X^"X,Nj6C6bWm m"?WB͏e3HHd!E6=Ÿk~>M6bݶT.ғ ԻO KE`޺E{sR^^@>n4W!v,sVe!=CBv/Yw1 YwLn?1kU&cUP  5uVbM6B 0X83@h;ehŀc|ng8xT3'qvSiY|ԑ(￱9֦u0@~W0#iڽKW>E$(| )<,Ǫ)pUh_HrEɇȕviᒹ/?)On^nᆤƲ!bF O}5`JNq6[Az,SE)('\o6ٰٷWLl*+8cP}nMәa|M+JC ~.8c]@\G%BL+)l\3m!݉SP@yᦄd@P^ߠʉk-:N$ȋms~fWSajxDM$ ᔦ&LM zh1?nӻ_@$|)cLѺA󝆂֜~ W%+ R7;R BPN1{Ј*wHP8wHӢ|cQ$?~O$^9eIpޔ A9g&@1h)3+~ҎxHx}@ݺrSH.YP}~FiYns9yUk=@W2Qq"_Jwpr=H¬E*h %Ѿivk =6۞#k\Ss6 \`YW;T°,{Gva3$\d u3o12G﹍hzoZJbq@~9+Ve@%؞+bREPφZGA@eCZH`8*3יȋ{ovS\ e=ƣ% ]ق]4O4ȡks(6wsah;uLO f4{5Ngj@KD ś]@M4bKDwfy։0$їV [w M]Is+޽y\ߓ2 /<{VYvg; 6D6#dG0}hw_dZ \Q"T!ԕS~lA`F'k$l^"I(K'5G Q9]/sPmOky0viGMU]!#KE 4fGV**mD.tQ,M1!,K+Va@$KQ=-XI]u+i<vGcYt|ocg.A.R%#&4zHSJ%d#Sm kd3<&^I*II0@rMZ }ANtM.>e ]gK]U9@gg"}p[ 1uI;B_ K4&t&Iwp% ]Ӷah;q}6oȲO yhF݉M@qlpWAwp+/FZ>M1ǥU!vdߌ~_Av7dƑ@N씹G{H!EV}o< <ҼWB- '1մ D*WrX lm뙣=@j ݆r0nOYią]&xcQ}v/ي}zA/%SA E0^gI3C˽_fvόM# 2;(!ý6Ca,^D53LD:s_N>-2gzX^"h0ZoNSi0iPXZ[%(Dyy>Lv)[tBnAס>sUag !([h0Ƞ-٘w@$)8W#sHnc(`6a>?}2pIٱk6Xd(MPWnK)HZ 㤅\AE> 3۷<;۷ηxP O6mBG*|DNB)Wf<8&BJ>F_d{Yc$ O Ox׊hmub.;NKMyw3S _@};2+j'SqK|!;` vM1 :>X_侭l"R] ^v6 Ct{6Z̞~4I,b+{$;U_ng`܈`RN OމQ`)A@2ߓ|k[̋\̑kؓK Guy["P8Vydk^;c|I8g C*dzO=9Fr I5so(H0^ORIڕzUm"邿~.&ޤw _DU?w8m ݨo2 2&ڙ+jA%Jǹ.M7g .W@.FGmf?5f`~*q6y`4ݔb;xg,y{qv'BPc), Mʠ.xs+d\b{Wk'A F.#GSi!3{* cK{f=E*W0[aɬ/]sU_AUOHB8,ϳ~O s6yȢ5ʱլ̩~/BrcIЗ j-M LR 棼 ڮj*>~yƀNiEfq<7'O|lʏ"ڌ4HATGi}ށ7\o+EtE_/VXݮ0?)(xRՠ-M,յ'~bN:@M2 Z8qL) K>YÉa^Cs_ᴮfتv5RLA=?Lܚo;.> Y#<|8^bvQrPo(g\UHE_ޒsq/ɅMl#;ߟymY>q}kq;wӯ5&6ۮ+?u2FcEszv:8;99J&}Υft#'ٍ~yXo>"ᚨ0cx&j Ϩ8 2!<&fc/uB$t?,D xy.;!vfO#? 7{|eIbkQ*H1NF.0|1=GN_}`%Y.8@ +X@8}BP҃CD 0ZSM_SVOcWi8WdcKm/>‚qm8^sw \TI|pnZ1@#I#6[$rJ2C Ao @}o܈kL_C]$(M%: }t4ig "eo:)P9Q3iE}[6P Jp/Vn\E/)+_MiƄT蘺 |4^zaذLA2;jXnQx7!#HR3d/$e5 mǖZtD*o =a5;P*m'l՜ |79&v/R}췒B }yhSz4h$\m7D1N[SVz$~AhjVJ.t!nC&{E}s*{.`[jަٻx DjM-UA&k1osxm=r+M:kΈ@mn3 =(q W_ڷATu.miT?5՚T J}1)<O5Yl? 7Fߐr ޣAYk9jD4 g6O|Jԡ(MfV "ʑrG}RoY`5  ie>(m`fP6,?ۅw.<ЅVqc_"Fq.O``(ׯ/*2ðɪs|Q軁8;fi{b cy #d2ۯޙŒۗ.Ak_%dZ0[%xn φwVoK1k}4=nI볹R3ME+wS!+{HKV* I f461 $'^'`+mqWL0PαdI9lzN%|s( pcebyZ6QMȰu7/^c >X\j|: zfv|Q 8swI =`0viLCE!spqBw}Y,JC]5QxR{8 ̛VPX~6W  YT dg =] ZgBa f3fxbȲ_m ӌ[BDXAYmZ aboφhl/) 8Srt xFQ! h"8k5k6 ByܥdQ 킡DSA-g ń;&;˭

_O#`Eb̒Sgao[JЫ8."2u87)Ҹ:D0MxNa*z{3Ϛ/j2&Y*R3*˔{0f}Y7!C.SV/jA) 5|Y|})!4WN(Tޅ qH[(0ikG?^>jI’jzHQd笀iF6@ri Sޓic,#ۧc_%*Mitǔ)Ȗh#[` :]5,V Grq ٝ# *R#E=<}qᖰE;Egq:UJhܢ W3=c:o7bI\Ts+k#ݝ1)k,v#UٟeF壖jnR7[J4c)ӡX{K߼gq,{Nx@^vQjFjVT&%UaXQ wbW#˳U@Qs&ژd3>jB&eҠ`@c?#ylNߧCIUzWe7oTF#]ef;oS+mE0)>^y?U2=i~g沰HegEly`.~pG$Gic;m ,(zY}J΄4#7\i?^QAN+Uф]E}]oXX6W~?Uc{ l@ "pV8UZr^\ Pm?<^sOkKfno*ʾĕ+yZ+RMݕoè_ Cu+ T-(2z'¹{;Tkv}d8:I_H-Mo&6w0Y.:fcК-#u,b%mmU>]t(_;ô!zP,Z`hJ+ &q{z(0N/u G1D^:L;m q]; TBH||~q))(1f|TClLЪ-B>j?,] [~fV ۨ(!p1Ԡ;ڞ\ULvfV҅asGÏ*]{p<_s- ) ahUiG$~[u3rI >Nih~|2D ە aD؊wbcx+͛Ӕ%Ck?'|  C9lo !ąHNUuB^K~Wn`u=T-Ɍ1 :kI&3|ac*Kdز>?';G_G0 (KtCwE/@%\w_ 6Gz{s#:]I. 3~-]OKu.wA4[ѓJ ֓~7Q*BFmGe~R?=J/ħ4?qY'BES8s}R+0USdtNM.`*S1ikDAz={jCJBk9[\uoҰ+o"O{XN/頜|`dOS3n0UBjRj2(Նry8fu.HqϥQR"}1!7F y8/(}DŽO%Kq;fl|ܞR"\@Hi_<_D+:(tl,/ MD1_m 0N!l4o6K̟I6+͠-LCWP0<‘g!E2l4ȋ%~׋}1D!) `ރe5(XpI: f`x6R`G4Ɯ-]qAҨ7coﻧzHIGe} dxJbk@ eow3^XJH08f+DF;>*mRFg`YD 2#|Z~Gru/Z vsp͈w/;R/:tz*D5/YŚό152 Q."TF pz,9~#gytYԊ%aHD!$7 FUalTID-&ãV^CX_˱ KwZt2β!N2EmcUo["eЋsoLN ~s?ߖ(nk$SgKKx W!TS,3cpw؉2Ac^XMFTٔ*Ltzth)sf }V~$ TByh0ߴɒ<~ZiDovIRYAr. ċlSBq##zu=(<-Ԕu7X|&C!9?'~Ky ,D,/;FWjܛ}6pƚ~YݠlTVw#ZYׯk)D PW")k̯ZA0_ ?Xؽc=SU#b'& *֞TUM e\{h>(_Lko}HfYY9S2A72鐿/s MRH-PJĸ F1Q1vW .xh8yFtQEDL2#S OY6 %Qx)3hߝ x`tL v$mWSAO JW {B]NLgyV(1= 1 c-%~AoHLI=P:r\^,I EPU3e0(FdFo^ץr2> Cf*.>9|<;MbZ =ړ6&2wQ5RaaATh]a:^g+3/d@ʣMk=O {iOI [D 6&a '%شnr>1LF>FܠQTz`tE?Fޠmo]j:,L|88)FmwHX|Hh]M0dR *迟pT 9]NHbjVA $8+3\)v4"UIMK5 m:+LxYiQ᳓PV$E\=FlA/@r968 l]ZW7$oI 8(!߮R;0!R϶գC6\r8LNl.ueW-|wVLSv8X>tf0 @ЙN 8ck6~#z#&XQaU-ϕ p p8$¶l*cH\L:2xPh!1u=w@_rNMa{Ɨ!j :l{e '4-}'CH ȔzB%@ʡAPQ߮(jAŐ Omڒ I-ɞyebU0u>Q6VȪH<^X![sŤD&`\Gj{%{ XBJJ*+&Y^0]xtli JN8e`E~&)_uIԉ&̷ .':vtRwsu[a˙"1f9*#{( yUP݃ǩہ5X0a'W+LN CJ7)RrwY~Vb.qTF!ac*TpxUO[gjbt F?u6G{DMN,w ,M_}kR&$+Y-Ĺf]I'ٻ&EDz@= \D[($T ;]L;uvoF`N3z/E\Ƽ$8&'YcX{J<`N?P4G_IE6dzmsUwYϛ&]T"N="G*s']$X~(lהj(wh `VY3hp#UPdKhU 5۝0}Ee4p_'HdnWn'5;dr4o-h0Ng+dF|9!?qDrI`FC#Po$Ѕyu:aÒww*ݎY놦t(h1Jw iaڸ^:(ۛC9A&9N>+^lJcAJo//3 GM'G ⸠؅p6zۺZ!xvt}U_jQYeYtX{ 9 vڻ5u1INoJƖq*պ |PN2n6XD[p0u Oe/1cXug֗'eӈ1kC܌xⷌGyd-Q0? X8Bw;\$i$v wyDC}ӶV>B!?'m;eyGkz\6h . ,vm$ nECZ ;{X2X ޯ!u 9tZ]@TM"|]%jqա$^\bT5q$3{F2.֛ |M5?;QضzW̩ckuZDo{g\)\NĨ/|.H7g,xmOlQzɝ 3Q4 J7HV > ]8Q@$d\jbT!<{ zɈ- 7K@>_^4saH:7i$\$/|X;[&}R%zTYRRK` 7XAuQ%MXbĬ3a$_U$dF^Vͨ GAX;k%bR.W9񝐙Id~!HHTw/^W F$ڲmuj8|ܲua|т ~Uh)l㙾~Kl"q! #K+˾dekey{ĉG_wq/s u1b6xdĕ16\~1Ux቟jJ7kb#o?~žk >&('i:nNDuX{zG~Xg8++!rj#.KF{X"hO 8lgL8I8WSbp =Cy) 0bn);*Tcs Ed(80޺v=9dUz </}w2_8e<~>8+so{)ܾV C:&*.AFOt\%i>ĸ8`1?^hcQ,Br{i76c>TXIܙ7Et#' mB1Ia4 tܮrݢٛUkGk0( "pOtнi |7/EEqߙk҂.ēwI9TmHL}\D YK SDP'.lJ<4ennʷ B] {VB"G |*L^Œw*%LLK?ꌵ*LRGk²d ;d`Э`')EYHC',ܒ\b  8"3 Oĉ 41+F%0XmECgR_4y}[N0" 6UF΍ g7 bO}I;cXJGm c'!l_ mM A;%J[MzAm6=:vg#c#"؀a#J55i[rZ7F7BּY Pe, a=[ЭpGW(;X+13e:t߇9BT0Ԙ_t /|ί*͕1EGB$1.E)،3lޑʫ<$ ܾ1Ǧ16gAheS=>3>\s8C6]wa>K+U&;YyrK4Uǧ$ƛ-)+W}P5odHjSQ{kfK܏qxd6ža(c9W9nr>qlS(ߌ[KP>3b.TFeIZ"DcWma4&oNgSY9ڕ)Ny. [09HG'X𒈭<Ʀiy'oω Z .021vPUr);d=OX+!Nztd_\I8HluOs:n8?ٓ/6wi^*pZe5{+m$#ɦљb!y8pyX De=$V'UO`˞hՐKV65r*^dUTy!]g&A_+5di$dtE+P=F5)!ţ|1I@.VtLy$3P_]mYWFH|r<x:ċLOm4f(ҝ s` 97"" z*2:Wl9̚R8:voVL5cB2dI oa"o&oQW1f#!*qŅC<ǪlŌPZoW'R0/ֺBԱp3~ \i a!2pQMyfZ[}_2=eʼngJX T<Ӣqb>哿W^e4g9Uʰ~:ӷ S* V 'gaGxέUZ%%wke~SK|}bbk7ɰ}b9Żw AD%_|N4v"50Ⴕj)GN@#'szjGxw@$Dt;p22y)kNB{zO!٪pslg9N|rrTF4r.~sߔFz6؇|Wh,+џyOѼA1{ x 56)>$3>؇1G4>6MdHWpGjPr0ݣ:KY1E413<ڱߕR7*|BD^dQ_b}<{رld>(kZ<@T82%⋹=XpJny5> Զn_|`t3y^c>j LYx@Rs.a_ ֱ.L|޲બ5QlB/-qz\ʤUl!{8dw= 83mIGZ%el`VUl3R-,5T̘"^(6L |h1gȅ^Kmb"-Nxş,c,}x"Xu^0%cb# ծY`1\e)M9Tug |)OI3;9CPKwWg \敂Aoaa QD h7E:< RG&ݲE'}Wgg{C.=b!Gp'Z`RN?#@! nM(EP)1Zki.1#6܆PfJ]}lI1?< ;$,2LtBhZjFiD-?b- Z9Xĉx5uIިK$qTjuh>FVWҵ;G)T-4mgr4i Uz܌=Sdϙpd:R ̗=ƀ\IKW{fq9zlV Dࢦ$ᦒY@I1Asf(( ?]pBʎ,KUŸS]0yD]z|F/t%Ho\+Eo('ۦV6uX"ml9`Ndq_K6A8A4$Q&TAn]DM|3(y^M n]0YL(,g_?yo7:?S_<X\EYʠ"hinE#XԐT~ĵ?0`Uhi&uX`ayGp A)~!z&MdxIydMD˜mES\- $Q[rh[~*X&X piPyDPc PM&?}s8ҫm]s~ͨDug8Mf<Т/"GOpClW,w7 @V睲U+|Ɗl_`TxmhT,8:$ 3)bKՊ9ím#y4a-Qȃ:V -Fٙ~I`:P m|)k}1YO Gұ8T.=97{w|W=D'aNfHOI6Y-qS9y4* ҝ z`1ةJP  Y\0 v1!N$Bs8O6`(JK=3#0ojex@U}whJɶjkU%ϥ@"w~dA8]ѻݓNSS (jǮ'[ O8O=5G㞸Z~3 * zHGZcά-E6]DZ{33FY8 ڇa`@<,!,JA+ ƈLM K!xw .LKb^@jB{qf?%XM٢ufvm .u$^%#6f*xdMPor7UAv j @e#3>&:`:u_93Y8|#܍ $k>!^`xa8lKYf`XjQS+! ?8ƼUU&YJIE Gzhѣ(,r.=ǣQM~Vɒ :M\'9H*h4V@W+"4GێК>hD\;谅: BP q aE&@^M+ERڨ]~slK1VC G2C >. x\PmC`05﫦<-~&z)KdO3E{|wE;)R`G7uW/ @wi;~1EH,;N0(wIvGD^9TݹdְHeCfv}txUכu"'k83?LN6Nv5+ 5xjRc KѼJ &ڸQ>^@1h>Gsh~?x?M&0V4M{I (?[o^,wa,qt Q;>7u)+҂m٪ÄunJTb%2Cg+}Obgn8ĒoqcSJ)c[}j(ڳQNk+eU!eѐvEw" ~%'vWXUrxs| NWz pCQnHSẽs~`lX}w bĊMvcМNL,}!20-׸%.2 k THGKF_z9&N= msH\~94#ڪ<;ZÛݬ8klnsmD;zTn5Z]p|K( Bk#RWK5y\*1oV'T\" C9G r)1 ]9Zuo9iY( ?m)[t]V78B"F'L? EpS*N72WBs5uߪ6[}'/Rb& 1Y9/M8~ʹR/w vBa+{e@&L)˩.(܂ELA-ӏYc "ֽ(r+暴O4n"#䏽 +j=pu\A!H;J#H$Ac)ϗeйH]:!3cS_J ap{JdkWS 8͝pۈX@Y l3%knI@;N1Dؒqrһc3S <5=YHo4QYN€:(?KNtʉF^ゞcm2ڡT%.RBxP&{Lx|d2uV 2-/rZ8SEt+_enmϽezdbG۞m9c j CV .a* iw!+0vĴN#HV|-F.mqJ[P|f_2&kuX;6FHk.W*V1rL_ŰJm /mAP+W^ˀ*BKvos0e`]AY.T*SEJ5o*?JƷsg&R`|{65  ~ΉN|Tx`w}PrFJ{/ l4t?EIM~3n;@ /aprh `qU /|q㏾1u=a%j-ôU{c72e _P~{UO9?@sPQb: p7洜+}l&EM$bƪC3 H,JsSW\Ɯ hwZ)o[q}y?qvН0Jvˏj~ӷ>Tyə> ff$V7+ Ι[EgDG}bXh"`?3,/Gcdyf"yôu4U+jR[V2)HEo.8LegJ<]+2ƫ'CNG.D B텈Z㸪RtA`h6@-I!uOk&\֜h:KwנY= A;X4f. wjz ~嶤+nVLiy+p vb'd%)M9wb`= ɹ3, OHg7(d̜X|,x'4>S-M zNx%=i٘-| P'oQY.7FhߵID9 x*\1H+-?ZtW3Ki5 pty~,UuzY{&ZOo^vδv3QgTٗsf{ 4yk7cTimu|~~YRjc"}VC4O["+frs'*B-^X=c RKjb~{=!K;Awfga '*KC\Uˋ =dpǮ~ɶ^b/2&gZL.m8AT3VseL5OCH탟(Xp4HͨR ut[Rxffd~h)(3h( +sJ8#%Cm+=I)8橁C9\4Z-J~qi.{)61հP-1fZDDiPl:/2+Vk<Dž$*@Re\%O?6)WV%?V,J}oǦ}P뚨D:+JGPt8E7>2*Ӂ ϣ?aE%FυLw^:G];5upX%Kx[4YJnWZ#T)rÛ VŌ~S*=Me/bB`vwc;b<${'Ц.2F K&Q?odKȩ[`2)3$ ns Z%P]dxII@w: >< @//%N|nL PJ9I@#rHSǚЅ"Xx'TQəPĴbgy?7SDY{ev'` ƪp_ׂ >9O.q¬|nW #h N~_o sac+ 8YY1my0ҙ.h2G!;TsM_$MU6Yվ?'3Ba!bN&x hcv-9L!`5B;mrI `L^p3kAO(9ʘ zs/MLBD(, wro2LXdL =&=w oq<4ɀXCv&70'eG",:'_|+l^b557&̱oS\',gF 7E:!ԋLw8{rp^^Cz78òK} E|¸ALk3Ǻu0zL2OUYH$_x_Qh%&-}̔lj'`J04~O,N|&Gcwnc(l dʄ-*#Z$h?um-pɎ4I~⪣uYrԣKg8`AX _9Ǖl1ѳMS!r?ViĥtߏMP'8J&.ݎ۬LD\|MKE0hnb| LѤ!YE2}\bs_%X2Whgԇ^Eþw t$3<]3e\emˆ1lVUϵ\f`ۢ A Q\$#0$aFqw@{}K{g1_yjeV:M;'z1n;ZtkT %#Eͫ l^5D} [E/SSFaHRN0>cr5M NXev@s h{eP*\ K ޢ1\ $7:izӾ;k~KQ/zYqi""*`y=0wnp%ULB{7waeUt: /TN~3o\I0kg fy)w\g6Z2<+,oUdM]G$f*/ty⾍(Py ̊s$QeeJn%h,ژ ow 9Mp3S=FU;hT $mHɢ:$^;PEG*pcB|80d8LBU7ru6iqE1syorV "Ltz܈YEn-b>25PM+"[f ZT"3 뽻=,ۍyuپ|E4 ?GEb*pcSN_ȃȪN¡<š-)LO٩mY-NXrE@YMs UhDV?xCyb\b)H.\nϔڱb(aߕfK$G6ȲDs"qlݞL`G7GdZ9ryM;:'AVfV륺lE+>XCɹvЦŹɷ.IH^k?5EdX\{u)~B+pxnHECLdQi2ӏ~Ex~~$b#Ho>kEABq9ki߁*d` wJղ8FDQ7FػKkN8t;Da o0"/-9d@xբsMWG {QfV?hbx2Y-^P!7}2[igCћdɺ(6qrݪUI6* ܶL/3M"ʒ] /ph=B̡4>Dl{Tvv_Д& /د$'y9 /OñQzw僥g3 H>~ H:>A7} tŧJm@.^3$-ѱ#h7fERmǭy`.giZ2k?*ZUVCa?{l ˿svN8tOratBb7WSќ@<y҃D`E 7naʙGCxEc|j%-A¹FE\ϊ[)[D^>ΨIB TjÁ` #f~ѧsurС0wNT:7|AF "jKkpsFތވ GPwȖG:zfb:Uo Ā~#T{kH_XLJ &+[=hgzW=}e9ab5vg jFv~gm,aH8`)J̈́;} L,[L9-yng%Yawk3}ʋ!nig`lgMi2cE>]lqɺ+/7W~ 7*A{J*dEMn44º#5Ε(xC̱/'-'"$%2E-XLg'5~ 755^ Yg$Yb ڀou 5 Nt<@' "Izsߌ+O7yNhH8+Ò` e9|}Ia>pj)V&u=NIMgnXKn-$2v؃ ƭ1nap> MXvi$~1|琄胏F7(zhOma@*p}P mr/şR+fݔynٟtTo>@./ఐ9m'k),~6ӭ\ämPu;kD8u'ko9 1QU VUvg|}e?XQbo5n&ZWT<qhlb^Pr.p0C3DV=€P Cf tfABꖫ}dpp?t›)aBspV.:_P͉>0ޤM{*a0ݳ7y9>|W+Fu|]9HrQ$ V"h3Ь@95@3z7Glu\6u_|ÀonS1z5Y+/HBw'dXUX1rn~anˎ6 FED놸suw.2Z[>viIZ8wh|`(9G֣bqP}J5aXl)<5eu >3@y>v ')տp%J tKa9tL!eTmFG4yT˱Rf-U2CD 42N]EU$x"/}R`U8x(z_Mƃnp註Rg"`ׁ&>ɩ}خ 8XN57ֱl[\9|MN \.Mm"txmj׶}(t>֫?yw+1.=ךDKYq d`56KpL7aoowjޣtK. c \KDT >e>oܲBvU')۴}k!{Gr!@(Ύ8bce&e!-U0vM"l )j;]"(ڼT z 2 ;#IJowXOJW ";%!at4iT??ɕV? *5vtm_eiL^]|j誀p y/M#d]`O1ycv%2]-0O߬[l?֬$(6uM1V鐳j8,f G !7y< d%o _>碔`M@w;f>3+Y;otIֻUkZY%R]vɕ>6-o>w>6Q&X#5ap#!hYE 2iO3+'NC6yM_>1hR1pjJXrW6=̩w4~ O˵P|n2΄i,ƍ34Ûv)121;S:rshh|k,|Mm kkNWncb"+A[89~eܖTx .KBu&(Opbu;HRj\YG鲗p /$y=ʐ0dԺU2$W;A&C**(8KO]vp裞 ;9n (V7&Sp׽ʻ%*>Q$,G`¬[L ۜ9MSeݣmnW~ŤMG+ 㙹pX-# /[! v¢LGzt&%5 oeD,S{T#g_beNM~k%$LTIꊇ4R&`RBɋ6;:|N~*JGx+u6AL,;(NtK g4AtrRʋ%xSxQp&7ZzUwt,J,g_?K@u{ߏ; V$&?mT!۽W$Ln}sCEY[㯸Ai^ʸ/@[\or<̒dLSU-gjy?)_?W܂!5c 7 `m_" c3t 9*~=WGIؗJSޛ,ji5;N~-$<N2yZ Kܾ͉Z|m"T' E 3o^;^tkfbxnFMOnf54lLl, ЏZZˍu!=%AWZ  ."'_5;oSiApV,?h E@vU8*mQ,nG2at/MUۣH ~wҦ2*r]䔞A%D.ic|3S#~N ~܀aƛDҔu(],/tsrd0|PB]~m IԖU(@0F$jBλ]Ouo3eH>[FL@ Iΐ&TP£]ˉUBŎe>r!lWPkzܼ]h{.<ľ<](8%`E%E@5l>aKSOE߼`Dm J'ݟ t[kٲH{3iyѥWSYJ1Ug2Ӄ>2\BkYFL|4ɭ%]w \aQRfKH%N]7M4ax$qߤՀt 8}I??Y-:Og֡o*PVDEEd̃>U]Lk>RӥʯuFk9WGƕIC$# ,WF J_+x pjM53D2P92,D)7-wFg>xwkK_A^|o6o-Uݩԭv1#|J΍g(tv~G,YA>&Kc u PqPLRTⲾB &fo44v;[.a|8WBb&~>[N5Ƶg屼܍B15qd)-R Bn@P^d.L|aFiou!Gt sgRB)ljrz6s *(4pDog m/O<7k e,_MV1˼?V=+~)kZ@Px?§5O ȰܝkBY_33^!cLPo;joH#qw@Y똖9u彆>xҁJ'"yck\[p(oy8sKȥ"~gGՖ3)^o<,6 &J!c SBK`KvD* dD- ${.A>mq[RnDטGW6SB_RVr&On`0-ԙ~^;vC6y9lӮ蹳ӂK-ayϐt#|5N U+B3WiP9B\]z1Qs} mrJ~")K[]dM4j}J $~-M4vZtZx9!_ʛ"c1-`JP'\x8 \VvmP*u9] &7I^kMeR ^˗NsЕ~a[8z ]ڔo &sKi`(`ĉn xCMPD9U~~r"8R]kcjnRdb"i@np~OΉNX5FcL~*xsj#M!c?@3 Qr_Kqhi$ dR!revb@}j۱d^qlreʨ-G4 C>ztMPE$ojs.#4bBpMEl>dy>lF̈́0OvU$l_z|ysclPv-F%޳WPk C4R24g cѡz^T9^˝v?O1$sФM'egoަ"h+ܧ+c>ܐ8B;IB52<&S(R t ~OAQ=P`ӡDaDEײ`I${Ff O3G}^жY`t׌V$`.Q*l Al?w;ILuQYO%<o.VBB-ɆPbwlo"O@ک&nL%u9>_o".]UhIT澔_k? z>)(W7k/g^u0OX V1|KTw1P`릘SA.DV2#L/`9xHaM1< 1@JGo嵵Ќ(Q.吾]?]#@?yQ7AkK6w ZDMkLwi%^zclƣr ӟ0̇;LLT2ƃqYQ%T/Q@b:DKȶ#6zB_j@zb4v)aE&J`J3_z{'^^ݷtva#hk"-PvWȘX4LjP 4w8`mKL .a8*m*lC%Vu,yv??ʙ%R/d"nq)vQ0mYc'jjK91,d}Fkĩ.d2xg87|*Q~<) R,,Z¡SW9aQ,*uwhCtcsGl%J”|:q˂NH7P :%Jo` tQ W8D__UfUf:{yAHSj/)㕑lkbw`a[p|‚9Ζ_#'!L䴎7YǠ97c!|04̤*[d1-7+f!%Oۭi%JxVžmsk+fr$8w>H'e^%7Ȱ`Y*':dØѶXBXc.r5%inx@ƿue7Pf1NӐPભ?@q;ag꛻É0( \eĐnԠuT:v헿` b 2c@dwܹfh0"J_(6{5BF/L>u壭EU~>>F~T Qõ_ծ'9fU|cU }%ƿ< n #@IalC "sxJ8q]Mzj<2UXyEreSRa+'&jNj|oRaRA'ý}A BM` ŇSAJ_; D3M ).U`=+̡v`!ΎfŶ5=gS:\Uiʀ9B dC.0 1 M4 `RGBd YlŽܩ?F\ZC;Q؉$Li}C 4&Z@SpVZ{)=SiO6ZB&pb>/ P܇ާUi.Dz-*0^/X !fKkJ[эpGMli]^rφߦӅ 'D1RL ]I GSx G$Ve VRrN҈\΅&;[pleq{~ۈmoVU çɦaB~I,3 bwz,CL,֐j1HeX@}C?BvX9 ZZmCEB~0N29Td15g<07cq0ZzP#oų<#}tz[;oe]F{by05O}'b:qrҶ/@y=JUaXWJLXWsZg Kk'ZqCs)ΔL3p RL"r~#K 99YFXQFgm۵X p+7{$m䅧]aI1a(T7H6њ|/dר:ÙOyW}#.w4uYa`X=@ġKV̗83$Aaіs, Ȅ h2E\T{}9ON~My &vYri07u]PЄb.֠NӾkߜ"$|b"iAT QR_|uW :6~>yF?jQ@B1;sf.-A5;MJq-zpMCTGbkW ,7+Uقc|qZ{<]5̓Ii双@buR#%?/^Qa`pAABgwQzGS;״}kz$ܒ女g"^.|)wIяƼ?8K,52}ʮdeAd &,oAS&[CcgNqI| u;a Ida"ܞ<K $ j](7ӕ ;3TIghX/ aG]u]}EK>.L(*]>1 {gxbS;'˶5psarI.HV$MR=7Q/غ aGy$btAl,.g~GHab%N.ޑrcϼw֕sSQ&r*O-BnND*RCz9đyK4 X~ƂCDu(E^?DݙgY-T0FH($[72/P9GI!U,ղtmmBiڙ(@cqmxHƵP$ݠa:$W6$WʨVrf((OJqhѠZˬ;2ſŵYJ 1v8{-TGAbKyJd+"y).JNt`UYm U!I(}צ>P4#6M9LUV\ %1k$hùݖ LE2OWYN(\pmz=#8wJSI mB;pjX9T\\v,^:޶ލDyR et5JQّڈ2ѳO~ /SvE&2ᢊwfVc32oO'jTH/U8#V7zULi'֓g>rwu>KnlmGDIF_i^<uR?&QK',F@(\SDC%2FI'/X9(1d_=X,M쎖(B7<u *fIehu=Σ0<|i ԥ(W7?(u#PhLe)N{r."oF?9SqӃ6WZO;Hh&p[ z1 “/R(sFG;M3Lf<4Zj k5tz5 O2Yz3+BmVg4*;@V MZnv;3ګ"uBx(+t*Ԡ!jkAWpB,]8>t$hglU9-jÙ MB`+#W_w:UJǍ{z#>(}]z}M26d$PH—`#2פaOEHrV\'B`4`Ouydx+鸛 |bSNTMbd抲 ķziDA:я'R26:kܞqG:F Sj}lk푰Q#7i|d{SPoUMfՏSW9^[ 6)`,vCwI$_G-`ZZlZ~xH0<$RUǜfbHg]qїV}tD91;x(^:5ԪJR!E;U;] (YomLf%ĩR콼A2PmM4\b= %}w"Ȳ$#x0~ F&G %EXgozK& &H-|o C%V0O, :F/bmDͪd (JW.~r46ċ\ AX!MP~8̓vԶT0WN83@Jѥ͡ӌCMBsWZSsnx^RnVrѿk-C@GAX)̑b>ܐ JROVcL*is>I,~xT&mZH%^GAsT5H&J4AL )Eb f2ݣ0UDA,Fk/vUN#!il.B4Pb$,dw7ߴG 6x6pbڍI6l$[[.Uiك)RcH$!F{B?>O$W:/b] F װ!,n?F9}Rel ?)]KDːSVil|KYcY_!__@B~x@E2Ǵ|V?(u=]ѧ̋s4C=gh%SoYv.DW^s[g]?fok{m%chA`U:.m_XɅK`i"ݹ>)*s'HƸṠZ?J\5kĞ֍(u7k=׮|reU<'T'AD "HT>p3LYX@;DuMA0_t0{A Z/}UK)܍c=^'Ҡ88RpeKb/Z&,֡O.ZB-q;ta  ߋ# S𸉽(zy. ͔?N"{\{ Z|ۮ2mmN($5$L,Д}BrUYRj~_U }V Z}J23eL@x% usny2XvhJv8X~NCQIW8-xzw%f\;7 TA]YƯ|PN۱oY 3:;&4UC.W"[:#طZ?yUշ6I( :^v́p><!93*#Z5S`^_iWDk Ey>Va5? kJZi8)m4fnp~9đ0mlxR$oK{; a>7Md ƷWh$`?;h+uZZ!lxF8uk7?m<=AԔק&4S={_5ZegkM/ǝ@?0?Nc, O8-U^F] E岗ץK5Ɓγ}1 ʔ4K+p"`E2N*uJ[᪻ 3}Ji}0+"۶顺߮p@X% WE|gF\7gN,|22[P}HYh7h\|9+ 좸%1-QutHn B"p0m1},T^#{EaSJڕm Qe%uIJݠ-E\oOfS9=/Q>۟2GSF%5oF$#G?C :Vb\Υ乲}-j,CA* Чp_oy-fLs0"~B|yTB0(ٕ!+fQp>g=ԛkLE>@-Dʩϐ\HvP^?"co\xL@dHc 09f6YrխT ~ Yc$6fA}Lw,~B;_b0_}!X<,>,17*o1 wd/Z[`Ѷ8Wg3LJ3΁ ̛Ȅ{"҇SQkAaYv;7 qSpϮZz'00'ЫH5YJem TQA`bK!"jА:1 pdk%Q%UA2 O[|(8!;͗Uu9)/D'a3([6h@S'n_ +oBB塵Jkg0_H%#)K{!ъNJjon):t$& ?ETXjLuPa3ugu`Y|7sQ=_H>b R+~Qƣ&:Okfپ8a>JGa $'9HP?-U|fMLUpm,5Lb/ N].zw%&5%mlz0z\5vyoD]mYDn+Q Vk"Œ]"[PbtViHO$U2#{M'ڃ酲Vf@f;]c"˔L=[s{_k@p֚ ! <N4OU3щ+_ڞ2gtmoЙ T <蝱UxqjcP%ǒemxB7BؖGDgj8%'ʦe["."j$X^~9WW)kAۿQaArLWc Kz })M<4ڒ;: )(MQOb!SVBCIYRP)T`K={#}ޜQSK4v U-&A K9Ι2xv{mmg1hB5r[ /Z>XB7G0#D -ŇA1zwV;. άIDc@'g5q j>9ZgvYkVDJm|ۨpȿ@nqܱ{ِ|9G|ۢ}'cv:nG3"ǿ N63lI_[ ljZ/O|r_-asvkbkA. _Wӗ'.kVG2gCք}A MGpDG[//i7ά)E; XATe6vJ}t3Rv"`͖v`օN}|?0L ә4ٲ&h晻p;`J3bŜaznq9Vo'DŽ#͘-!hgX%KuHo/P`[n=N&~,Ioq{ 3F2጖Tg:޶}X'Lr[A$ EL^]a;VV-,Ƽ=?:Bd'!;VV^)k}S2ܓE;)ՎشOYČrz(uw .7,qR?^ixoS!x gcU!:ѝV7 LJ;KXp}I/ē6+C@\Klf$(5I #>=)4Ӄmh_lwǶzќEz|e6.OFXZ~o W  [;22oFZ4cBd* p[^ʱ <1 4x (Ͼ6r4isUU!*]>HΔ}' 9{>;q—L#rrVܴO 9NwGSpch RϝzfH\albb$U3$-{?n}*.T0)oC8)S°0wr=9{Ҥ˗oARwjF*qjHB T)dƁ!M|dlŃ8{&Y: *L(\rlH.Pb+6FCud ',=ȤwH:CEy5AT7y`FtAOA }--ʕdp1H>*B+x%xOT.^%t]X"# X6[Zy{oNC/3!x\Ji<)B~S@0s;OK/iƌIP8 `$VkWްY3J@|Q!"'%,G2S⢄f#'b_+ڜuո(:> B{3 d ecu8SWGmv9<ʫ|1+VB[lm;¯*0@v/ӱ9$Z ԶeG׽"y݊jK9W-$YBrRgɊ+VCF wP P93RzH 2WP) | ߇Z:e46F"&JטFMQ;K)8qlzH0'VѴUC;{1_VR?ũe -G>MN笉<&v RKYKOlef>{s?gL,FXE DN[$OHAZdjf2t?8 0'SeZ ?KGV>-[ce%˚ZȠ$<%z٥EF-r$Ld7\/}sIFrMpffӎ˒I{+_V>jsSTt{ Pޣ:4ow-Z*ٛTOXTxo ?rYLKGjO.0Kdd$x杇bR8;44GDS>#_o']ZcmR>0P>prn( R$GĘ]R[RMJ~i?V+'/UaBqɜۧ(nq+y{݈$5שr=Be:rn30l_+CXW$R:XUR{BUT iAObK&CIRTqyq,*}iC xi+ҝ 7 2v<v B\+d%8:5%bLǁtRggWqd= f6m} IX 4YCٙȮtE@L4D~ S4sXEC` Uu 0[MSےCX|Іv (Mol5gQ0YˤeDf Ȃ_.jA! ,>P4)ˤiq 4FP*ztB@%'K6$3967bvLM=^ .Yni,ͷ<ӨC)y` aDnRc2ߌX{3?w[6hyeP:l-[td GcpozOoD cC&>CЂ! IdMtP\(U;j(|q d46"޺md>Vٿq+2w%)a3Qm[]D;˜|%UccN#y<ǵ]3~mWHI "Jt]۔UP%ۅgK9}\Z nK!#!D+I.FIl/H m:hӾdOvoxNE@iFoMʆ4 wbP.o'Y` @ze[GE^ vÝ4 }gkrG{bnq>,mc;:mŐȷHrۂͅy6TUȇTnr$p-itn$\$Oi}Ey"\(QɊ}"-ke jv;̓y56-AD ]֩/ V>/:yg#00Pp_sS.^e0<9|KJ)I)u|D wfl nuxf}bӟ% XDZBءi0lKsR)SjFtn0|߼7M>'^zǩZL{A(DZkA96!*iKAiw}g\">/E u#8V} IC{\#314e;]va4^fXU6 `8"E;3[ٱ)"2B!kMdz[2׏u_EkOYNaFT^`M[y(Epn.X R[\CyTxbyX!l*ᇾ\$},4 .r X:ͭݸJvO,_*s ??7Yh>4ߥ/*p;@ q6rnިZt[]5 |^=c0's}bV/ ^8KA_ٲC!VMϽɮ kS5;MɭAC τʼnJ}ؽ W$Z 1 :7BOjܚjįN[8}u9hZ߻s*aso~JK[j"ӫfhjᒭY'8I!;KO[^UЇXJ O+= !ҪVXTuXÜNX\MHj|8Zj3>rs Lx0 %lr 75HLםLQKN7b[iQh|h'rܑ+95ܹ* RD ؋*wjl}ٞR,k8Wchcqyτ;&WFNE|;m{/MԽ#Ѽ iωs}t:ڱvq0liX" R,B|id>$Kb7{,XWVwhʆK,mؚPڙZdz\8%lyK\I Py]иq!v=kϾLM`y?Ƽ# [t pm]THe_A#TYdϔ Lss]ʤM-v˜7]kY|lǶ!"-a?$:) z_wtƳoZȸs)_zG!֕l\ LXTƁߣ ke߁.nd`ό |u$n{{Ik>gcTL#së2$9Ǧ9Uu=$7H% q[x色:rk)H~ px4 «u?~N{4vUს,Ce-gzJ=2”R،Ԟ !7I+0l8 fL']YvyKcB|.~sN,|4%Mϛ,.ѾlQ*_:MO/&&Ol7U{:uH;I{=6'Sop R9G]FYh>ɥ'`>#4KR i+erd{\i4ɯLVn` UrPhH)cvPDKKwi;ĥT{InۇJGz=94=sWX}qU8CER0=mj&W)92{`oћIoDŒWXKl 2vlL !</7 qIEK#SWbVXLC.k8-!N<!!X_k="ەu~gg![7M%Z;$ưwRJUFסueiCjJG,0eV}獵nB[pV4DeWvs,^c):UFJ7<BDOgƦŹ)í  Y^?(;Eqbu A[+U D):+0 Mg|2͈F>ޠהq{vWst,#׬ɠC3G@v(NѴC%GX&~V?, Oړ:![n-nOe#`l·3{v',(1AU֋`}o:G(< R3E GThHLըX15՞ǒbQRk}ߥfK;ܘ !YQ0 }@f=@0,B j1-Cz5'( i>g)lΪkO,dum^&a|D4ᐐB+y\|e#-Ei!^@3K<ܠq Vc6QرI0m~N$\oR;dd>ԑbuԭ.c8|mJ1T$A5VkoD-ReDmq]htpLrU׿j+fvcR*`^8cjhC[fNBz* ɢߦuBMhɋKeF`5DmdžhRh"]qEfl,.VL `2vkU!S`aPdC[s.f5}]oW<;C#kq,T|yl;2?D: >Y$Z .XM7p<{TU1%2O):wE6oD Fbdfx[<*~P{j,.j$~_ԭN)W@J( x@/ʼnH^?%&=8K7Υ߲8>_w`Uhx^e弹_xMGya:k+-֩T~5T|M#}g߀0?jƢQnС Qa`p`'i:L2U=;"#ČJC/:c;^{TEH,eطpO?Ѣl D3=F\ w >t8܉$=Kj7z|JCVA0p eW#E# AN#Y} m_:G#6,ѕcaT=Lx7lź/2ˉ})LN{Vύw$+Es2 - ޿vI`-,Hk*jMd) "_Ihga>Ŝx;65QqYB}5 3+);g)[=j&" SFg[n;G 8 򳞢Do*oYnl3O$B}V@?DF&SĸtC BNFG9F>*`;v$V1 gSbD؉d⊬X&kXO&O)c\7q}RO@ xr-%rUm1>(tQ=?3-aaϢHꂔ5,l>g;&RIAȘR3vYT!0I d "|xl+SCjmtu3[/^kbY:Ig5-;Ea9ŠsrSGBAϐl{*rn&:2t.sfrYMŋNtN9^uTɼ_aKIWrB0ԜLvdz.@=Eݗ!#%}9w>Mhf:#ƫUnV`]+9J"uܱJI8[ |c5'pttkSk7mfWR0")k@OXA:$.yssנ^Dc\c ikgU֐~_ t +-9`BSgR 3ׇĶYl(iwў>#j)E3p*|uXU>LхKsd9Ջ܆@kǷ*~A=qwx{'trG PzYQ/3/_X]M=*B ״KUY9 G$'Sq}eQPݲ tD'}2KTjD5W8YpGhdx`$h/sQ@3E>F~|E8OnK6q\0z$r}9ڡYuz,c ?2Ol#L҆(/8i[bvYd2*0 9+hI$# d!$]},lv# j^=hЯ&iDDd9iWF|] ,,۩q>ᨁ9dϜ0ayZQI|c'C#pF/54QpeW6B/ nZP?>ɬtx>($UJ `e˾xZ˪ϝ 7:!؎>"MpZBW,[楛C}VDVҤ; 1JkD*\,DŽmp1|h `5y,x3^H[HVOs >}*狆.oI/LN uo7}M"$E¼fzK`SQ&=4t$̶K9m~*Z֧jn(":Z[I&'P&`h"_h&Dџ*2z>ĖEzN{ 쥷H.J,p*J/0i'e{ͩ1rLiB\K4.C 9Tjr: bCln;qF8#^1%(Z' ƀeY*;ɭs- ~t%7'V8Ql̫֪4uD ujs9t TOZ 0@!~L3+[eW%߬PWO_>Ns\+) \1@5K1?ƍŵeč:jaC:u-X>Jp 2b]K).~O<|"R>ljy~)Ocz)Z@Ғ\P]3EZ{U8ÏNuӽhbX,] hjY1+:rrE6!\ڷ)+zlR8 ܌-֧pacLפz1QyT/>Nɧ#)MhO+x#r_+9:S/#b4:cn ⮭Il|RxL􍥬\ % W)qey^Cx8[Qt̽0/'>AT1#8 jn $P\zeaCԁ$k@yiI#of70M}IPwȱ/By6 e=#Q\EĖJB$@BT>\  op-aOp.SY5fkN g 5 \?hwt-jsB4T+3G4%]-3KvSZ)9|{zyD^sS2+/!Nev?sYrU/|~c:;8pu E+iF+]iJ#'rm/y-CCa_h]L,aNp#!A^|nzNOva@aꏌ[Ǡ6sK1w"2p,6q&w-uuK5aaiTD!bZX1@e':`uSQ|e5 pAH`gD7oFJQАfvSڀ3$03}/, (4W (X?\cWXb !܅wsR,PALxrj١xDʐ',9(1"}z~#BRYph(! Zs(C<MiCN'?ۊ^EqTq8a's*wۛpgh=TpmE՜õ#Sy׍rf۾^aB1ȿ #]q0e 3,(6ס8MpL?AjWˣ]~@b"y ԬPqڕ}6DI- d =T%\?}o/ݏ*WK F`|{  Se9~8J_B^MI$-RJB%n-H0j';X^ Z7{[^':+{an0|~I>]?E#v~.#40}ԜqQ{P"!*cѠ{AhR|R-+kb.HftVlec'=P.P"0d2,d(>gXBc :{>gPA'3ױX5 |l:W2Vt\+l] Xawprk#WwicWm8^78j-.8Y)6܌gWL_~^ɻ}%,j [ %峳 rj 2])=^Cdܙk:|F14 & ]! :mYtg@:Ld7d<UCj@(cQBҦǁaྫyi;ܥ;hNV[V|!I.Zh3"#Q_ҭ }ξJjyӟS5`&0qCL9uNtvB߻#OW_ ݮ@=oaҕFEQiHA۳=F4!diEX j;ZFE0a&hj,ڃr|k𷧢$i,|##AɧֿrUyj{"-wR,4*$ -m^FIL%XC I/mѼP a0m x@AɆٓ/{ԠFu\#W*euw660vO;6eL4f3>cԏ/u (u{Vʯ0)ߌp# .4}^QY%"܆l¢>MN.N GKt"P>nr^1=}NA~dVЦ"*oYQsY T"ia v+u(0gNA![ B-$m͕绳.3z}y-OXj g!xϮ`{0L17ǗXZxBt]HIVנRTqbYإ ?Cv*5|ˈ'SJ*HĮ=?^uA &~E@@$oWhk'O:Î^f(-K >ۣI̯S6c'8Y'/XW U U<9DqgN'X#288o2yHѻx` V~=!uosc|.5@ ܖUf'Y6hٹ#'7"Ƙ:QOyp]r uP5Pnsj c2[=L7+h,ޞ~Q)Ysܓ^y2ZۻRXE5BuS]jnmk+evTJ遼ȌvU7b+_QZ|#Fiܤfɂ *VG~wjHaG&SX-u h=W8Rg J0T,4ꭍ2HL$37x7ar(( 5NǛ3#G^9j[' VSrsPm'vl-dHQέY|#w]3v5]`JCsd9[%d]7rѱ p!:m\ ҆cm/GpCµ6\_pUD@Wǻ [=rpIXZ.aZ8E]50l4Ap)C1 8?[-{a[pwQI* Ct˷VL;O{ج  &TޏK"M A0̦cFdYBh3LDfL;`Wx|Gh-_oS9g AÞ \]9i6.협L:NIU/ʾ ]5~h9h+:홵Dwd.^h< nj6[+(Cد' Z*ZGD"L6&LnYu0ekawhO?{jZa4c09 11+qki D~2߼G H+J(NZ*9S&"8 hDñuMUi麯p"s&Ji#K!,ogZ-z-?i>#Lp_`UVz_ `iƙ!BWP>{`n38-c?)֌k 8H~+ nxj;Z1#R#y)s=XQ vX" XKV|D?Ӥ]CFj?kbL|7^[rZcS B ,&'% BuXF4L9vXG=@+`Bd~B+߭E]hE^铬z,ŰeoϖI}nI9>5:ثe0xrٯ?g>}Rܣ0ژKX<+#ˊ>iKV`s_ 2E7om;(sq1[5qGhQc'5RU~⠁(/B"t~&#i*"-8eMao!|8+<;:^3tlO9؉ Gt#H cǵ.8 n2! we!^U+Ӊi#ݲcxaIsNe4:ī\:Π:&ƫ"q|P>"/_xO6`|<FD+ںG&RQ]ܸ.(D}&+gx6oѫ߇gh󭼸i. Ĕ0\5]s1sW*G;yU,a2pۃ);˚fN<y+` Da\e0cknIZ7|>s4eΦlǫY.F{%2& "En:C9g)Hy[G؇.yeLE>)з(S Y5iحC|BmJ;˛u=lru)wvuqj%H'k)īD L f`5msJQ6"bnS/ZuH&8PT!ѱ>¨ǢXs0rW 8B&r([za*ƫQ>r6C,'>3h?8.0J˸ `o,AGO+ks-hl?VYJ':X%K Yhs7晷zgĀv,z|>Oh%w p壭m2,9O~P AU^2}K(,Nk'hЬwGnYՍ;e[u~^ .Tlw>Hꨁ &a0 e:\jm)ҩQ8i,ZM5C&M_θrIV->5A([켇G=-2ZLl7M9x< Lb| sаR!YsKw$A)unLP qJz?[vҰ El(_tY, {+_pÿ⼌VY5yY+ Y#>aEEGy+, ίLnLj@jr^Ăרhk}ېGb +JI;ZV)rNW7fþ(* KdYR 1Q`\NP+btm5Ʃ3L@ed8t&- h5S뢈jРSde s%A:6Ik@*UA$ ݒ7N"3Uдߧsql?z8fKVʐq%DLujD*/0J к;!-CfGd_O&teJ}>*;<Z;DzC*鼕gIKw8l#@oyWlM{ͭc^{eV8PD^+0 p?2j2 PMXq.o@BIV5py'/-)'m Db51>RM)zQ]. ژ`Jn4T r";=3):hjl-h;)I|׹F/υ4Ře1VMȓɠqEAZJD[%@rH4x^Y#'u>RoRK9.4{(ldÓ,[9e^lՔvQfY9ǡ@YTPOU+W?4Ȃ!z7QkUbI+:bgp+TUX(:V5/L3ţ:Ũ{$?b4Pݑs~ophY ! {XC%i!,Ցe h$j3=E,~}8cbC{#u-pJ;6eBHN aJJnA,낃`MPC$-Z6#<[N[.UgyC!? vk®a#I2lY%h(& BG"؟ʭؼTH/s?j"68qS/}mrwc? N[cR>ɰ$rO8؀\69B?$4. ko[GZl:F1kA|7zxj׵hd3MńUQ@DeO,QFާCvV6B)7[y~ [t@E^u0!!{< u ذ!mcZCgRg![y R%!tzH"BҀ*DޛjJ;Zek%V柋iz >voe"< j*/Ub;m*-R<OdUmj v5~ձc\D(xxaSuZFX yO3ǔJ|WUm\󝳣mfB-N"`qH`Yho["b6Ez 00KKi=?5.ń:},5] 28pO%.Xŗ5!d#w/H( `;b*JL5񚗣)҉6Fm0##js_njoc@lNv \88gB:-g_onߤiT~vod%5mL'I*;?]no@%{)Z>®W6kFϧr5Qf򔿬6J E>z'$G5}).Q5㔊 i[˶5A#83yBMꇐBOv agT\m2)X61ȇ?#oy1a?®o[Ԛ[(~1$t d:FK:i<:LĹV cax$>Q%ړվ.+Gr%-I+g ѺI܂~<3̬R͸u_5Pش5E 1Щ:E5 }J 5PǶFw U+bXce9#CG'{-dqKݬt"+MK֡II@v;E zjdQa(k*YhbM|U*WsqnX^؏ ]oFn)2 A/تy^ yg͵ʝwJLZ&%_d.͐^fzKB9mݐѲ{gjMxb@Sg\ 1_ n0e@MJQ/XJ`>r6Ju?o$ctuIUS#)5XEs( 9nk۷Chtۧl^ѳ9P-z } Fa _ * ;,Eg>?@j4H-4X^"}P>UM Mˣ.5݋k(T6SgTk3ƻMw4V9L[3C*1H<an>OrS]PW NdY .]))\uqMD~)W_N -,܅$rBh~NAH (݀ Zoܤφ'S;pEht[ۿFvxThY&! ^ ]P&;iN%9V$lGT;'FUHIl. hhyv ^b=Ti7ݤìh T}4=]﷉HV\}6n%Cʫ$gAyLi+RJ vώqñnENeA0T:U樰Ʊ9l9`(Ob;AEHw3ͪ1ڕPvC?cQR (jݹAհ 1y}NDD'ciAyMi=TZώV `.W#XF?Ǯ E1.ʹO=)%Ozd];3w.MlJl\>0R|Z#.}x(ЌΦ6yֺoNifevZ'ͦxbS@_D`kv3Cй_l$GA*c'e`g'BS6|dv I <:͗};~k-j}R, m) 2 LZո>RWD'À#hmF7LXS>aLu ?$bҋ蜏t&=}( /6l<bVT/ IKDTp YҚ/6Sxj)8dԗZiO9&s! K(J(M0گR`v}ʟd ;4|Ǿ,%DŽ.ut7MpkhD/\Io$+DJmfs+Z>VQpΧ{W`;ZsTsq ϻxFݸ 爾f5b6 e O:Hs5vȖSՓ6'´Lx{RIBގ i[k ;Eh$0JpgH$\ikh7b/TpPi 8ZJW#k7= BǾ_6_ik*įr_h՟o=[麱&HqIѮR|Щo[7s^^#wTHY/+un\vsC/=;¬$GMb!:vo)*?-`!lË%.h &:c&ALL")jfDdm(&#~K4yJ(E! (r"BJA~g B6-OvA2*l^3:eJCaSEI|=-Kt-n@ ت{2c| ^_UUi b갢T׮?|mt z,01 M.h"#nPLNT! ]u,n8qG-G!M 2j:7 &\Xn3SMD;cJ71QZw&/o_RRfod/v]jd!/]I68ٻ?I=3rE ~̨hI`_ r]hQj Z^ֻLez& ( =G^Ei|v Ip6b ~WFnCJyԴic~L|\MB /L/#gJDxqx_b;5XL?K5U*hID(Mz7$+Zy[^X}壅i(!t aw?hSr0,"Ķ ޲ < Ä`I-}bAd{0˹.y0 yG}WKg9:=֨wrIᗄWo}ԺUī¹Wt? sDі2EH1w U'PK mJkQs^B}. Y@>9]ޑ4d A͐s ^l"*IrV؅ C`xۏkgd(m)3 k:6(!D8]DgϵSj-ʒdB;`I7O"J|`:./Z*0L!Y7 ލ.ҌM95J;0~[T\hxa"d m}rXieġyyϜB"pNEU}6e&XB-WGYS  D' 9FYPz%dO27|Xc[9 0 jOMk/o;k=V`XYn'Crb >f_)^\PN K_IDᢐ`u8yߔ֔Y5O%%XnKțXJiZM=JE?  y˸Ga/q'ˆ(د#N6%^) Md,(,`0>y8#x(p3-YXL )f/ m*3Q ;(H/l&Ij)1SQ7qIQr ϫegN(rW\oVm^cKT:^p |8OIRx(HkicUX;t'?2wrwopX7M{g(Ho:3n'8Z" ]:%}Y:z8˔ּ=4^c@)N5: ܤ1B%oXTF82XR6DnvνDլ>MۥL!N 0{萰!ZEOkE]ge"=q:(͒9xXCoԞ|JrV!;..io@t-u^:1Uo?E}}v#0,2#SX~E@0σ9txbkvFwX%Hf+>1LBA1wQ4RIǾ7aV}Ge3rK^&<MF)=PtIb{ O.p)>U6Ԩԯ_C5@S৵,s Y@ ]\A:yR7>/rdM=hkr pC@kБ!>bĵ\}@':O #8x au *e ^nbaOz{P2wtWo 'K^g#;L5N _-oaKkRDj7gs`mf)g$ErC:ny{sKqfSFl>W13Y^S$.1#I,xrIl*HAO(ưK>f$"5F(3q{SB <:>xU mf;0tf1,v 뙣\<}&z?r](}1`,D8`@2-Ԡ6N#?_聍p_ls H֝zNrs& #.4 sE&,اyp)4T 骅/ZOHXz7G?(͎Jge* 3|ڛ:Xw}uM}S2Z>VjybB/P]W_AkμӀϙ"'zny;AϵRZg~6N|ۋDX{Yix`a4$a6,_ӫ4F? vJkbLxzK[W'~Jxt`cts{R qUM&01x#Arǝ/sqˀ5UW];T$YQ,*&[`jY2LѾ~g5t$9^6zXc˝F|{"׭CRwU_.l}Y阃n׈)x,>T evx9"v1}l,B%~bQ_m5W 5ߋu 4 =ᒯ6$/f>QPxӤ(CKM+W?+> ic5TG0_Yd]+$VDuiѪ^w mq]k,?5 ^-HPڋ-MZi]ɠSvֽ>W]\Wʩ9cH>^`bOnص]:Qmލ&h ܆/ْiHTCy!$#lLav{!X!m7Ba,'k} w㝱ڒ$2&"rH +e]c^Bg˛Էx=N9wjAUx$ `9Xo^cӟS١ȅ?w FHg]h-Z{b5BҸfl`|K>\pߣRVZF "@!/eد1LLwrC<<0LE雷*|! uo qGV˛r_|?YIwC4z%l6iYS t _Хߥо\j?Ύ LZzoT 72=b))e4[ɱ_USxJqvo%[ȗݿ"S8y+̈́>ĩޅvV l? y$"t.:߲`k3bW#ЈH5ݽ K7}߻=#7R=SLRBtV^jh+:{ks=:#4K_VJe8].̖Ⳅ^A히IeѬ<! P< 1굇Vf;-׋ |c 9̇vIAS1O][;D}SC4? *ԛYY+=(T⏹20i.S$:ׇn-{6*P? j:=/g}CyUבy7ZlwW%F>P=^Q 1L\{IS9n!I|BH@Xh˓Hԁu9>+9N{ޓFߡTYyZ; Qn 1JYqƗ1؀tKِ'۽qvMKS~xp켙jjM5\N(& @l8Z\K)j58SAc1ʔ 8.N etT e}'iѳzs5hp<Of&F7Mc2Ļ36EKdF{W&BWep_uxTF;/0>iYApzuGjߋbVlq䯨 KEi7c9+ b6% b[Vp^<_١x|FsuWXi?|YuKJ.S-e{Tk'ˢ_fqEy}*q)FsYwG\ JW'b]֠9E;3 +  IKj0AC`{.c$ <#"µ& (Ֆq%ܻgxHz/*Z|=]I%1|Ke!,"$Ý@kNEFɰ3kns2*mZv.8NgjntDPc"p8;@{0IXcB&T$Pݬ:9H rNTvl8+ah2>v*u=Yԟfm~x|l^6^iCS"sůx.1A/#uC<>) <=Ns/;ZιEr^*t:XY{\7R}Gech@@UHot 'XH T?`P ZNp1m(?"iR)XNG^]"}Qw)G/jǑ:1'meHߎ|*dGٰxn`P;a3[((&6:$jdmL^ji>轣s) nrǥPz6͍1Ġ3pM1ĤF!#[0 +eՉ/0 9cA+R::*Oiz1'YH΁I~gx`4G̣ W"@N 6Tn׳Uշ(D7δAO4-sUcw̩*s&#胐B)6h8:¢EPS`ȭlɆY靨omZEOW+ҩR])r۬1*cX쳈^4L+_ {-T fG@D;SYprNq>Z\ݮ&!UZv 0 ^}DIAx<\S2q^Z]{ʽ:P;9{# =O+qoop']jd4F2Dj`pJ*Xp$^)Tv_;#Y-{v κppIm"wމuF+s^Jw]P'8_"SH+{ZPpx;wQq+M!yCTM҇A~°\Z차l,H4= ;X. )bνa}9l5dg>ҕ/m¹i 2!76 eHuAsq8Ky2OWK$ ˘Jkǧ*$$~yxMAdˆ%7l2ȑ}f/. ؛c} I'!Mp,*UrŏC9SFKɢ&]s_~7zU ;"s;@+E|K=4|WwrL/a#4G%d×JVJŝ?mԓ $v]h^q L^DHKۂE\udbGAR׶i;iO]ͦ!##d.AU{d\I/u8||coSQ^84~f{]WЋgVIzPM#*PWXν|WȘqѼc]vMAjOEMHSiSgbm=7cQbHIZL3p-f̮2ґ2-AH\4>[Ƈ׻q.itT~q~]xE$V>ˮ; 7ɰ[v-x ͸okPgiZRK@(M*>ygH[.0'np !X s"75f_yS1XPU:IRJwo˟'44(<_ykJա閘s=N_jR_FTa)U&'3g$n( 5ϷQV ?H!Cm B;\z72N5ďAB\>6ww/MA7wEE]au?_`B5>k5hAg[޸Sm>/tc;ͦڮɟZ+ ==W6"c(qp E$sJu?@58M̢HϭXBF - Zf^=H΋JLPnEpvtJִ C K"[,_ǔ0gjo0u{ l_] }!+gnחĄ=7":Qe'=QzRʃw“sK?Jі\/> 5p# HT/IueL*_8FBώ]DP !ІI6$ퟆo|YI]ʯvOrI9 ]cXj#NЛM[uԻUd#~HL>3U( 3cm_zՌ oAAeEq!ReUY^A2J[ wq8ub>OJajY Ąq% (v)Li3#Y"We³ ͊ c X-ߊAҽ{rsL*/wFK55C?An'Qe)ҭ.V"3nI]$vƅh<~ k;Y-#<5Ǧ|gQ>P<: offjE j4^./N$ÿf.*UsӃ5J;ٻAz0 kLlto*e)sX'6sWO/5af+=PzޟGRTe J:rWRxDiִ_O4Hw6Mqmʞ6f%؝؈ C]>CZƍ I#Es4[W\ZYpuԾ.pBjT?U")M(ԟQK$֬q1d7;Âp#zlN-=b7fIeA/^pl˒yT(UUN4fZ+ѶFLqfe-څ[P Q|25-~=Lwy^S$][p<_L:tR!Z^m:9ˮ%99|ŵ1 3WwJ@G>%到!$3rI_XK [#q̋a6{#: "1D""US,` c(¹{̋HX:LLPяnEL@*1dxS+,iOd/Zm ,ZQd"F6Z:Cs:@D!! 4 k<{U:Y[̷쀤{i_!r Qy8A/XZi\ߖɿz*ɋTbG"m.<$)Zn&Nf+B(cc̠= rfZIhޙ'%?N4y>%ܖE\ɠ]{di ߵlg;bH PdU3\Ԡ`a~~9:V bKx"r7cq2ﱼsZ 7/¢8}\jC&}Wiy/4jdx;ORr^m[7Y/_sQncDx_#6kTi JmBPw*_î~O4RWwc{ $(T;Tk1)nI[I4yJ> %R jkB7סT9+̣wl{:A?+ z7w Е0j0U?4>1ko$(`}ntTy8IN`PhI1W.+ @*g)+f@GH²FcN@A83WM^l`Y0*E&R2I3vAµ@rh[ 7&HNNJUҺmFAP}ϳK7HFuj$@in~1@d]ChDRY2O#ݖ@܀MƜe`m꧗=I]6Ra׏"J?QsI$%>퀓c["{ KF#1@+ <./2o yI|=5R1b1e7= Oh-S|F߃6(O4m-S/HВlKD6e9p <7lBg>7zϾClfE0{?LȷΘcܓN~'?daUKD~tTȪ;wfDm@lI QQTĀ_q; BXTAЕ1B$CT8 ?3M/s]z>:F`6+tOJ[b1͡Q :I|F5B%)N@<6Vvnsu6;}i_&|+wBa%s`Ҳp1f]W \&"ͮ]PvTś9I*SԖXrY{֫#9?~d }뙺DcN8Q+<]3]YEa+3S!z[Px.yutWcw}G/2"99Ϋ[e" ky2]T_WnVZX= 7ʨH;$9  >n;ڏ:A>g~7h1"ҸpJw(QfW J!1"smg6dBSY7ˈ%{т!2no9bt.*>&H$"N[ L&L[BW-}SE`eO!]2ig[ w#myz+ a=4Qrr /`o]ćhmڙhkT_G&~kL~2IZ`Bڋ{2ȥK'#y}?Ù\^U k$оڬ#,qNuP  vT !?e~V ? w{ :=6ï!e3uϟ{ȏ UE;6΋ŧb[nLkGr+&xIwzWF~cgBũܳ>؛/?c,Zi6:1*>:H|`Y۳Uw0osJ~J.A$NUʧLdia$2t1O|Ҟ2-^ vzbҌD0Q{p:FAK"/FUKVEh&Ko/gV?3Id$>1gch kBjr96NTҫfw$zoTB ǣp z^)]4JmC V"z%Yk.,6E+e.ӛ(o6F35kF+ njB UYIEȰJm^^wZ%x +X g stA[CЙffF3jL 6i%֥eAl.eʳrIK>kC#ho, Lи".[y9C9 j:Dr~O+#0eL cI(sxv%&8$Ʃij ?as=@^ ?n@[s9WF…dXm%I/qs(m^:S|S&DcnYR#^/hK;={씰NEͶ [L a)"D-m-XӬ)tiċ,0q~ߨbax[)tN%Jeg0aYwyVQg jU4~~0=:`J Ư!O{J];&SVCMg%%~n B3lO[<,`!iijeMy[a꾻Y*Lǔ!4y];8T~Dԏ\5 vFc9Fx 쩅r"lxQKanיnGY5%)BqS79if&K)Vx مI3 }%⏘%Wl`bNe }ʔ6([ȓg׫+8x(ZAcc]ʊ3C!PC$6nVl\FiU'{8<{/ۊ')KQik7}9|I"ZC?dXſ;1Nx:%ĊY^e4b̛&.9EH|%&:+DWJMx?K͌%Nh5% EsLۃ5f{xm4i.W~C 3 ~X\{c#E8iC᥋:*M1| IHn폭UCrL;>yNc2iҟOT th@WZb0h]YRVSp&t[ zV 0 ,alf՘%S@ʃ,{*"U+cS˅dp9E~2P?~73 #}I.&,.&OMV"ŢCtg"·m u(&eZ.g<8-AEMA'9{(W71ie]E戕h-[}ɺ8ھL#b\yc#JO>\dKנ2iGl̠IL^gfmuXNzp!NW× $&q IU*du)pNߧ[T;a]\qRمiɐ$1ڧ9aڪ W m JAc7.21烰+& ;:!<-U4sƉ3hUkoYPƜV!|(L\o8XXfV=Ly(8D<gRO_ײ_| e| ݗ2i9HEa1+IQ߫BK=,tqʏuW N'3їIa, 9Hs(eD@f&VI ?O/"k̰ SxBh*;0Fe-e_˘J 4["Ao^415,s blo٫܊ *joe5hXP\x5v2+LwIY~/K ]#S;I#3EoZK`D\(]Oyi%W(SF^N,]>)ĸr-ӀzVzd Q) U;DSZ\d%x3ǚ9k0LIYMka*Q ft;jGC_e4RFV5$'MCQQjy\5%Z8M4uG۷e1ZuPߓC*xgNWt)PATHï>]yZOޞ X}J 5BlyWcDDl4a'Z)\ȱ]tm"Pma*J'&$8B^8R\/c/ș:‡%mzR_7[Lȥ tB2WNbaln][5fF('zkG׹960+"ȜU !%QX6A&e^蔌Jf]z:]Aa¸K3R`W(y>3+vb&s$p U@pʠ_4߆ *2g5$Q?RG1dU\R͂m7H҆`NF= T۴a W.݇p;euFD9/ UuZהolLkѕվ3 N27O4\݊N[\*vL kjX_Տ'*#?ֺM!76 h1YxJincaݮb?疁':U6~twwKB`>OߐCü~p?^"ɿY@)Gw^52\uvÜޕJ25]b2v>+Bq>v I] s6\dm{@4$cӉGfY0YƘĨ}":Lr!K_clf_•kؓ 1Ωla'*+ tg׀-xUd>*mPTDثH䓔n,^葯3SEltSV:{fF x(bhQ[&ZDPe fh"wA߆b [^~+EL˳͉KD /wՃHChh+P1ݤX_ЬWD#X7n,)kwX1,_Z6cjut/!eZ؝WHK yN,}BGfNd@0t1NdT}Jvƹ/,ǜVAaB8L7N[4w2͜Gi?~P 2 Y7&#ٺQ%d99GK/SIh$ TEb /hB kFws<᳑6kdR^xecH̳o5kV5ν6ؿZ$"bԲt]$Mײ飐 տjLˏaqbbmNDUS\TicelB8vGa'}\Vz ;R)$r|<243Ϧ:9[@vJE_(A/L&G4]eunjNC3gWQLa?ڋ2 .uKI`{7~^E P,1iX28h\<1؏϶L^СU^qd&G{[VPXGľ>#[3tc|kbtlOE_%s6oX4`?=Zqi5݌Id|Zׂݫʗd ;B6ӈhtr'";G8`nI]>|0IÍx!۽s8Ss gP%EJ?D@s^;wc{G ǛXY:7B6hCڼ "քz~Q?. *pCT}+&}:{abN\Qs}K˦AR9\~޼?y1= :Oej'[wpD 1cB) b|=43wjl3|w!S&,%2M,8[eQ0JWz:g) mC3K'^Ѐ&D !ipPu6[c?O&X=r4NB{eB3ߦPVG.gEpBE G%^#0R7QS, ;'D+Eٓ2U 1iެ嫦 <SREw%NYyJ)RDetȪf2;]|OUMē è  r{yf |ǸKQix- <v`!;VDh Jà =6R=l$B*&$Y!yhBq>9:W酻("aԚvVj<dq+Tщ|z?<cY8eBvsUP6/y(vJŮ(A:Esᘗcϼ_ts+QPwn;W-Mdrk[.~hx(pN '-3?2{#C!1ĆF`QPqNWGԞB,fj?=a0Jط:A~j ] *Vʰ%>r`Ҏ~Q_tEo}vָFǻ6ZP`*`Zp_ԓjfC! [ `={`$пʒ5or LЄr,wm\/0T;[Q󷻘J6LFV߸UsU,"?RR 5{$!*W{{iU:C +.NG,Gl\F݇ALs(7Lv35J&w؜,)`^eUL7Ļ8cS%@G'Q)?&sI]]52R?)wƚI@;ݕ" :8ՂkYt;lǘ+Ij}衎oOBjj$i H24-˄NDDgp@yG/HSiyp`5̤J#Q _.Q=-+ڜr.}8<⿥_0FYZ7%Hf3p]rmFVqa`3qȘ9B4&*S#`ceW*0zYׂp?12y]ITJd& ߖ`AUEg k YV~@)s1z-L b{91VԪo0vwqHǵ0v v^,^4،d:Qv|2ow 1W Kwk-A;WR/[G]SQڎPtP p!PەTYlᲴ,}~C%̱KW:暼MۼR $QtU}Ry?Kczw6) $r/yK͇ǙUMƨj[sG (2ZE)XgHuJ(pn Ctߣgn325nUN)B2pi-hxXgqƨ*;[Ż\4F8LTs9R-EnK$MܓpX^me*` yBpsҒH' 4/yBi,@EGjxzΌ/Vm)4T烴RW0 PZk5{LJG^yK㹒Èwg hWgX+}\*{~[ӵXޒQތ}t ׏'),Jxӵ桦;f;ihl\) zdf|."n$/EU J5!D}b@O8$lc54A/:tR@n\R:7 !Ǖ8VVV9}Sf#1+=܈qҺ Ҭx4 0T L7fm]QuB \u)?68xlojӴ{\`Ԏ~F,1˷4d}֗(=I1㰗q ?ZY#ܫ;89roiC8Q0VǥF ߟ% xN~m'&zZfLZ,4a2d)x#p2i4 2MN9y'UkAt [z%.ʉhF2~2P'Lgۧ*\§;*!9IYCsC$m]%ܵs)j??< J "[oѹlm"߿w*%"ÅPY*9~?]3jS|l!B}LIZn?2DJͶi#/@!F纮 McѐW;'SfL+lB/H&E#"8&y<=^a y" xK JP;9jkQAC#5U4jDl]עlEkY4Kcr#A&I]iАit%-"Ԟ;0LpѸ EK |he:;t%e8qKS7-"uOW:Ie%>%G!l*N0pYM' !9]WTo@-涀j*U(iǭ 1]0ycTay^0)fo֝_qk-/s[:?tsuDHU)`G=~ V!+>7i=j/,~)r}/adNA.2R<• {]j},FAL(;t$w69lV )VQ[1և9\cTB|d oϷ?6ʻ Էq~Z,6h#ȓη,H՟Y}{zv(k4Y i?  {5ŷu6x^d>>dP(WU\80lX0NXhl V%y Xϥ鼊S|V]&!cEnJz*_϶d>"#R"S7ڀS*sD_q:UOiuadCiy$%&ai0=w=f.]sL҃fжh fVLa>?{4evd ^绗1CsB{&A`I^ib~Om[<;mXAQ/v4{ne3 ۱.q<3fU #p;q ^g`nOC,Z<0ܟ?1I N(1zg7+P5Ц\svtض=8 mWž O$'$$1z#<6J@1G=[(tf Ҁl*1BH%Ƥ" w-PLv}'T NNӸUD u<]%Cx 9%RT>A .' 6rJ{h etT B!\Gf`\[4K1 G Gg,IT#3[#;}j>R{(] ʊiƙ8^R='~2*cG&ᄿiq}>q{Ѭ#cNDDp#)vp1'9©9q 4}e<4wTceА:kA7.MX*K[Nâ1oH̬]`vtg}pJsY@K̋-=+K!bů@^U3_j;?[(!́[rq2g!|S ;fJ.p vjGaɥzBDjd2 Ux"t[x.S<:5 gq&6, 0'iK×WʓD\ HPòKtX7o\E6y9ڸw9E٪R35k6ȃ s$&aqO걨UtAZ=e],`g\Ic qQQS a֖oC|'b;uUN^1Bu,&5 F!ހ _gP }%a7bb~/X<#bg+|4AM=- 6kY*&d r0L#uZЫ \Sy1Nm|Z"2!6y[Wo@;J&8>fG:(zPfì< H\ Jx}R>Ch`K$CxMh]jך*zu7X4[g]Jw. $(v̿&Qɹ{Z1kv4X~]sTܯzdq@ B /kC j[TAܲV^_d~C˭v∝ $2.`ޡ8>濁*BUPX=c<Ĭy3W+eһ |Nu YNș;3QOj',@hJ- [n8Wh^DqgK'Sm8/5#ܺ~qJ݃F= UU6IJGMt}ܪIHT6lU5f8lEHbq];o{ I؍M"ZfrSD*nEׄ/. 92&KDJtmiH5ofW0QjȲaeV?HiRBe$ϙm0 }$X"nfAb{5(1m3KWW:Xo:يpr99v,-@f/FvAȬ|buo+EK Bkgq-Fx;?B'ϕ֠cvEChzGiLJ0pxy(P<|4R8UdiS|n u_ 2x { Ujڣo~@Jgt؟<վw>E:MCvKGVg--@d-Xj; |mjzሠOQ|ONM$yti3SPZwX 6F-.L>Gn!W3zq/*L2˱0Cܿ3%U:Mj:3т6"Ϫ8wZ?%]X(!ξgeYд# :d4hsQP }%Tv}a! k2:df@]5 -mWIa:wN8N'4M?XOh:6S !ߩ/Xj{+7ި-YPo'5G M~<wx-E"E;g1XצBKN [ڴ7T<7l._2[BiSٯuH[{vA:Sº -YU8tZo )`?9* ӵD&ue$M^mh&p .pa7(CʧV=0ID0 /ʰ811K !b)V@aw?S NH_8PO;L1!bVT2&N0W;Ge2ua0!*oEB>,OkgFoԼ|S\10@Յ]rFՠxDM*BϭSa:p kYKZJ"k~ԩ $B޻&R4B֧ (fy|_@D-*w :qKűxҝw/(3oƑ9C*y#Kj7[f {c.ߧkeզ5U]3~ukFl6ԲYV.M>^ujLF׸/1W!vhb]jX"DCva/; cPS@UDaӟ"&.ȯMr|٧8)Yd򙷻{[yN➾E˖0ƼۭpsTNf0 NDS%)=Dљtvoߴaוì n< +]cA[AA y%xlR~ТB jyCZ3$j,+ ,csR&r@LJil?#,,nq;H=?p.5 _A> Yt4ah_KoJ_l&=mUltX0sX0:k1pw:]1S'IJdˆTRϊ ꎢᩇb?M g?"pA/:8ɡ/#m]c9 /ifRpGzxFafr'QHQܱYqizVJ;Uk!bcf?̸*t= ٤}^W T*CP8L%0`jM:{ʕP1jya4cdF&A/ViVne))" P eiE73QP\NU8L "#N!ɓϟ/ k ḫ\).ZmMϋRVzreLUwj#hOMq WI$>sɤ,rmՖg%[0|1I]G$pMH9vk`0kJ삥u77y>SG#:;=37n9˭@* #*$J0ųo<gG) ]#G<=>AnPΠ):mY8RajqwYS-ka%yEMpEKT|%Z-8U@%i :lG"3aU5Uidax$@!̂:Y1a<> _"̚1 MIADՂms󱯹Tae$rʄ-: @nS 'S@Wu*x;΄W/tPD2º TӰ|L{z=&ٷzHwH,A=wzJ> 8Ӝ ?,ۚ}!Ug_NrHmX#ӈmK" _XUC;(u\4C}ML}'] x *pVN>p na Xkqܠ|(\- 'Ϸn-82[^=Axs΀5kpR-O-Ruމ.(Dў2R 'Rҹld@JqUT ndEJ-L4P6~ 'w *{yўu: ds`0TFͮ1 X<=]2dK4 hYi6=bz;{1>~IGg2s*7*,+J/X+2t?VJgf)أM6_d`NM./Φ9̙Vm W hT-WIe3гh@W59?,b7 .܈̃DYQ2W QqMI0TeAWYvG|o.BJKS[ ;E! f#|F$2YO},g<15A] Uꃓ*tndjF89F'ñ`X趾3[aR^9s% yIiohr<ϯ\QY-d쓍Ūg1#r/V24[U/MIF[uQFDI @pwz.CFG1r„^ pRRC H=8NWƌwmtJ|hH 8 o垖*A=Y+?~ph s~;m/N[ k^*<L^]Vx,Er,MкEBƐ?2޲w4?4x>M9@ D &%18=^fVRMJ Zc_f$*]{GVHH@Ct>N3YRrhԴn,{>vV`dhUOK ydBbKZ@$ő M4YLjG˞[|w6`H¹eG PR*g3vBm7Fv pߑ+1l߻FD,]I-'lk{اoYoc;IڕK_8oCជzD#љ* ExG\>&QjXk"m0x[ #/D "mҬ|[9-a3aviN\HZYr)Rٳqx@T;AN5P2PNAI9>1T0#*\`W ,\Tjŝ>*/ A2STGk%eS:DR65/9ɓs\aK]OT'Ӄ7;7J.o@ )T d뢔@ Vmwtǚ el\]T;ۗ"s;s;mޭD gt'G?8c8dP'Yz\."級ӯ\vLQhgQϭź:ٽJH)w#taB֛7w6jkwwʔf~c|dlrjmD.i ﹏UfrO %` .Vgt`d=rPO [Uws`m.STɜJJWyZF\ 0MǑJ<)4-TErX3 3D۱r/: Mzmli"EX+/  qlL3*.6bKo`/0+!%\%p>HHfh-I,#.(C3謤 :bIqH ,$vƟЂFv}Yi*KoM^V>^8?@`jo²7]ONY- -?Ǡ& ۝Yb0g,4إ6aNmi>d,늱h.aSfoFl9V֘,dnԳ1\ `߫,#ߕfVELXCu\+lGt04]2>+>sܸ%l1vqN3xCtI ?-x;r9*21?FD+|XWG,uYtL 5!!y >P`^.s!x0}1g `dǯ $3(ZbV,N#bboǥ9xJy ORVO|%G μ4's-7sM6ghben(QF(aR AHWTX1wL[CN^Kif ݉ձ<b=n6m|+ 9$>y֍kv ǖ12>|܏cb\:"߽xr\jٖO/2 saX{E*Rq'i[:薈'Q]""|lAcZ$@O}b ϔS9OVf5( ,G{>0EJ8k>O3yATY˜:^l+˚Ow`>nI#wo546E^M7̂O5U#)&&+ xNzu`am݋ W!+i6m{_Q~5%KO 5g?c\2b_AA]?IS9.= eK/G U2g@ϞSE4tšꌿYN/BA-ge&/YPށ%„ozD150au`Hk^EW)z">e5V(ert +yI)ײnY|e.،ȑ,B5 ::͚(- $љڦr&3[sťHysQGï|vK*|t 9qJ'Sp$PI޷ ‹3 OvxO8h:[LEVVk>&5"A*(/{0Do(g C!?A)H>-s}@Q6;xc(': y->3}rƬmmlUaܗ5E׺,V$~c"N:!rAsT:N~|x ,x|C#a9֖%`E#)8ttP8ȩNQYIͷ*cA2д$L@0w qB^)/@SJGMf*m gg\u oUff^',j)uOt$;C &f`IKx:XGrppؿ2_ @ xUx].x}{PGnWiʣMsHh 8ㅵ<ҹԗC8P3ROtF+t$Hqm;RἭcaXɍIQm7N|>.(77i :sh*IƝc$aPa8uu fb#Y@iBUh &w?0zr1.)9ƅX(OE6 0%`e,[<c~Sŵ&,{Vvµ6zEzKP7F.M,$+NWn.F=~OMBіp{b2{mCF!z>2~^dMQ_62zoyX`sݍBH \W_vg8݃iB; xŒL[N Nf7>8?)r{kU]}Nm;rv0Rx u0gM<{݉S ~!l6,Jtt #]1Hmf~ez78lJP]_tYƑ !Z.v:&Ro_,t1gfNtrni>4U廎 jڷڟ>ZlF Q~)^ʃϖё-8ϕmYBo> }zm.:FSlN}蹪.r"KQfC6eɎT3Oq q4.elBZja*6+{m3V {BKF^}ٹ'%:9> 4bJڥM<Ŋ&/n= [AΕ>4$[5U‰f-CFKI 6qJRb2?-52+TP ӜTce1 q8CצNVzq^.`y8{ <%kҡlS <$iڼE8_U|MU@ jI'?a5] n-5@6&OCQ9ddtzN;/45e[xJx}Ӄ쇳9kF݇Ѭ]E 蠛CO^fIW$qOVs ?1 +$eg>C;üf bHNX#Ae A&%^@w J.IyVZ[NVVqG xJã(H;uUӺrP}TyR~ pso 1e຾Wg! D<hҳ4: f<n,0S$D2B\n84lxżaϡX'ؠ9#W.0vW4NO5A WD8ڴe5³rAlM2=2䲺ނ6> p4\AEM(K^'78 ؏]`}|%O ) Kh"B9 !u=qy栔iiZűAZ "g'& o?v,uX*foQ:qj2מ퉲:3$$@ X^p!#0'1k p %1( nu/ENꙪމgѽf9.U3x$lAgwvq>dI+M%ݬ3 {R`!|{6[wSl&q<47(x&XutS o,9]#kI2ZN ?oCm4:$jEp~?ӼD{/.&o;"uC)ͺJJ_\Mu|3,ZkW9>&ſXHA#hΙVS";+-:Pu兂ĵ]H< UKRj#u׷ n1ņ_L@N#V%t2R̺GmbԻ4DsuE~Xy<߇k)Y)1UYwf f2sjXqL(ʍ<墱҆JB5 ^{= $.3!\&Y\}h-D4QsQeP)K k((d:\[i [|S(nxxI+q0q $Әc_Η|(s.@=Y+PM%0K60$٨=41H 8X3j!l ߫!*uƹT15.@buVV8ȄsQ7"0@,Oa.*`eD(B@ 7/GxR[?zKf]X&HwEHC5D404v# E恲v'v ba-^LrZߘ4$}SAjtizf]遲 oGd`e1:C5p>ˣćam8&X5d6+] ·IZEӣ&@l`ULo>5 ! E~Mtq-`$5y"@<7sC$Fu6s? 5su3F.}dQh:o-ث@AaOF?oH " uA W. -Sgׁmڳqc]^Oؾ;sT%2R;}RW7ԛ1g ik Ł.qZn@>3 .KIXӨY^un= 3~pz]jҏVik;p$p:Pջz//<֤SKJq̸s8?U j8}5|{䗫GYOt]'K6QK"z˝j0kHkn ЪdH0$Y W@e֜ûzZPc,X"ŤI=HRnim#_ V/p`Dc_kG@#Wٝ,*[Ɔ Jks1" D&dC2U 3 ew5rV6iM2sR+ +H[c{3*?K#\6iFcӋFoT[}*JDN Gh5n| El$ט%qc 1/pyE:Ek SW@GC@}k &tW)"aյ=ۧdd_fg|l)@V=Œ]UYP.^^tUd?ϲM:~)凎} UC*Z]hLՃ 4YC\ v&*%EB~Nr\㨵 ݔ?'ȡVq(o%(niW.[@ O׻YHRuX{:{3b>e2h^Hea SJxb6n_J 7ДHs(8d;Z}/5uwksHOnr܊y֘>Yx##"4>7b 亍 s*,oPK WO"?x΋ո(=?_)=wzT: !IGDƄC3bKU38ūe_.39 σ㉯OZաޖZZ]a,{+Y34-;DsهѫS#@LUYQIe02pպXD\Sj('&( ϶W+ Q;/PvIU [%^jA6xWgqA8? 7+ŕN5dwck|<~^ J05=3٢ЅcdO L!CU8 CJ4 6wBrB IXXibɂ]WnN$ zX_ Zvch`ݖ9)NYK#S@+"?Qkλȓ-wq֔Ĩr€zh^O? աlGLȖ-7 I" \B0(BO#~0v>PQK7~=M=Ujw)+Zq 6S [7s 0T !bńZUbY F|6cgUlٚ[ c'XMȝ|qp٘!TXu;e[FC[ G"z2:'bW7獉6Nu:u~!4Z )9־5EтVs:CJ/\l /j\:zє&ݝḍ,șWlN2`Z5Ӷr[W(`8 >&+^X@y.O^G U"TlkgeFz$\U3 gmC*]b{ Xt؅@/zouX୧Hqt2w+&5 %4!ϟS/s (R|c+~IHxoZ}uW:*P) $^~ UOmJ)yOG~~TKw@4Q }ݺp>iOU=!i=ZL+,GIڿ乊E(r~jpwB$ O#ew~ !g*>vב**Femd?H}%x g:Pby5Z *b Gr uDixK c?0rscO2FCf###o}>Ldy@kVSKlAҎBZ\NA,+^L/uq/ƱC׈B.@1geyzϏgުrrRi+ff,*G΃`o:'&PީR 907g>5S^}K]W{u"ǩt67ԩGTmp=6~ 簍z4XjZu&FUmo8a_hoR*(CF'xRLP`g07ff3"GevD#̃v :\f }D=dQ'C6mgmhX^r,&/gPg4|!<Fsw)z/+PW3`w$auÖ8թÄUoeroI sKR[N.R F]'A 4|Y?6 ?a7i$辕憊)E(;2 Pߗ}nƼ54%J:.$8r+&#٦Џ0jȠZj^$gŠ*ץ(Tr4 @R,"QRr{OɚѼpG:WӬPz֮ w{tӎfA)shv(攽o:oԙG=@}ң kE{jIfC*5p}*_K|YmЋ.ay2[ToK#X!Ə)rn0~~e8/,9 XAbd"S1|C6,V% y*mHI4.. }T$WOSr\~^됐 .h_ZV9%=rP(()ʰX0FkD4?S J9.qIu|"b13]kÐZ!}nx2IS*Fy7UmP\ro"g0~߸5kϣi!bGWO܉5 xbJ S6&#׈LdC_Abq.$}ǹ0'2$%F%0Pk pGf3"Z#͊`5LV7lM!> /.|<9YN3`5Uݘ޷OFYx.*=l/wրT؇y8OQ( qYeY:ЍC6W J^$Kb øi-M?-o4d!}+Mpx_i6-)K w_$;]Io*.p~*NozS UGR?UA~q4h|Nv͡JB!in;kT\51f!ђU\ߜzp@61\)㶈<{2nrTU҇ZvXl44.^"-tW 8Fj&@5$l$D)Rccw3Ԣ>$5yR}IxE"rd~(t ƄB/Z[t:B(Y1:LgR\Xʼ!sCtga9) s"I8-EjUYNh),R5* Șޗ'+;ĞezJ곂;a d Ԏ3=}#+U\b'ثqˋQ|iKC)%.le,q$Oa3y=*Tg hmhU2*є6ڦlrx=<3P$ֲ#yjBjbWIQsNf6a\ m14|OyZw5†j퉏Uk~t8_ғ8Ťvft$jl$H"w;>¦K:,و@).`cO[qE-g*9Sgh10l6=vʘ{˜vGHPf/sC^ P۞m{4v"%J+L*v}:K!tyC2Uз68Xfݏ_/s!1}.>q%*N6KB"Wo3i\"kZOJ3uu$,{Ѓ\frhUDF QuQrB3KI -(;Dlkzf }'鰈c:3>]*ާ+ QRfS]g=!'sTĬXMTB}1oekuNr'{/ yt}(z8OEAKM/Q 5iss'h,RJ82Gm͛2LP"}}gG4VH J៩`.PٵSQRYk:g]p=l`Ϝpa$B7N֨M 6Cxm͡# wP5֡ |L_]Hr )ldni1m#ܚ}+6磦X^e+Ta.TT#@s3kG(E0~ 例ċiϾ̷ȇ Vdq (jbay`LaȳaRi+G]%\&)Pϒ9!S;kx@pVMEo yZV<6ɨ5)}`Tl 'rm?]9 ܠ-c;@؊@(QTW@qaJ^'w͂ ͕FCkSCwD6 L9$.RfT-`ѲB dOWN4mk 1(bp2Vw$/Fb~&A.xh%gTDSL: q,Lr J›Bmup;=s턌Y;yu殟4|cI9TFo?4+16'Jm*ߺPQ P,$)ׅ{ܪ E6 7Yvt˪t^;ٵkب#$Vg)%0WQBad t}% 8>Cm6 $n؅q(ƘGLQqha ]@"ZQHv&W\E1^EeV+9[':gMSȩĄ="n &ˉ^ 7#(Yc{toO*ryMF׆NsҤUltDu ~oqf]Uu F ,I _nhuYA;?iz٫k'0\_Vm` v < {PèɴFudŨI:#C KrBQ` N|LJWL3= 3в\b Gn;z%9n,]Bړ[xUִ'H709V"b&/}_CQ߹'"cQ\m`wۦK!ڈu'I2-.3 FV/@aBMެ6I99 f3CYYX=7̙8sM/(,MWjWt i|>{nF]^#Ulwy^WJ۬x-!*OAI8 na(MB], :X 4<:oȑ#؎Ą)} \ hкSR(xx҇LH.9EC,|?Ϟ# b_i@2>,_[5~.=gttt3{b;)\x%B稑=jgCp^:v KT2mA2l `vV4V @֧3!*/8 \@k4bڙ/뛿>9}hI8*CWC_+n* .+9DU/9{=Tiޙ"?{~C,O뉋gw3bp1͚K[dto^9a3GUټ'uD_^Dy[=y㤃 rZ)m | UW^0 ȮT Xu8ݨJ4pA'~ ZI;tHca(IMk/"MqrǶ>Lx+ ly  #"thtਫVWeIw+vOv }N).%$rhFСf=\]T1+(71׹ A=2u&x@eu+lq KGǠ­^g e>Y[&M=Hc4;vIץI'|V. HX[ЩlX u$X&ʴs*ѫ<`^K>Q;  .CǶjUw35?]'6]Wg.JB@Zp-%Ωsb䊤Vo DC3BڵM< @~:h! $cۃSjkd0rF8FP{_ 9=&e/6<9w%̝>sM][3qAf# )Jf:4ƾ"Sy%Y#J%츊mj{8n~V#˱lb'0;Ӯ4QRU*?s4SH9|XRxVQ2krR ݃/Wׅ!FKܞ $$7D5jG4R훗 Oa(QtdQasͧ#dXI>"CP% jNVQ¤r=~( ];?]' sYo0Wl۷u&VhB  ՟13BQHEW< %[!44SvR%ǯ}߻ r:35 to YD_Hf'H*۞q7X K? wUB.|eV)2-axqAȽ|@EN} ZY1.sGxdм@|*sT0K(fNob3o=G s zvNMADNq\>֥ͥ6\BYPRN, RgǦ6!xbQɃW/V5V AݴS{wOa@QvKՔRF4$bDӃJa8u7SwBsʠU.ݗAY&vJ_"-K7p}w/aim)9qYz೉x.b(PQE?z]_w!,5WXC]H mQt~ b#,pp]D/|4)आV9 _z"jmqֹVnrO 2t;Ӵϫ@ˁgdF޿M(Ho+oKgObrl6PV`-»8P G͜C?@K3Ֆ5\9e *"cӖ,.SQU+ws #d[qeOkXe.hU26AMܐ_Aq"gDȳ;\b{;M ǡy.ts8qMhXWMI7qU. eƦ[113z#=&ڷ2薃7,^%g#tNPjOT%]8eF"y1:{թjPc}UV4=O2H\v?u .DP굿ˠWL!q҃E٥\Ib~2]S$ Jn3 aKwUxԈ'bj‹–rgY;Cv`s;/*/piIp!v2AJBDnrWee %bX{ꕔ f Y}r5%@8ܓ[`uF!)[~v撼vOVSuV,0uiB/2Tad@W؉AʣBWސA֬xc6G 7w}IE#‘ 1rb?g&r`cj9A2robCcx2m zBm/Ғ7)FVd(;wTx^2n%/l}<)A#‹2[b70ǥmGut8+.fCeYVuZڟNR\<xVPsE3\p V>/bpɁ[|H"ǕZJxWa VHf"f{Wi1N@ù@t">182M%_0By{Aé|ܔqDh2/'CP3]w~l52,{esQ3Y&yZ$ jDevsWOt4ĔܰEPiFmm*b'Y0(Al›c桽"$ĕ+xs$h4U#7dU>C`Ք@*\]ҽ 22\hvܝQ8EY`4 _1r 27@Ŗy%1c),bOXpYk+bbvC?sp+C-R"j;EI{S~Lu)qT-HpHQ8x,NZڵTe2w6xK4|$ 7)rEp*:c2xz]daΔ:rܴHz7(o 2/Ke PӫzwU+F\=Z @ KS!gъFI1@EVh#j$;[nDcr .+M-apF"~meu3}L:7Vs@R=VC OwM%6+rM!g<~j%jb ;LEϜn{"<9|tvcWlL i]al } (ߓ AØчM\s[t)N(D7YqYFk8S{$UV׶Ekztfz;|*[ih߄J=8X+M>AcD?q~ p~4nb"V[ml|ZK6) t +|%-Ge6[,5w1! d.:XCfG%B<A0i(Cw!+D=A¼כJ~j.e R6菮}L&VşAAQ푖 Hڴ{c=-tI%4ӆ%kiBo+ʣ8~D\4r K(= zm*wftUX< "7i‚Ѭ$YSLIͨ"Sfk$4UqcֽWe(YFVz=6YX.k-IHS< YRs.թwvFP؄o7CE! 1 %^'x,W(t|û|r`#ʪ2X>9((_fz{ yZBpF0H(/ڂ8)zGC%]'l(8OsςBG',.ytY7*u=3Wd5SLզ5L,zĸ6<<5e-k\Y+Dc˗An]5ČRB>:KnϦӦPnSZF֕3ih Sg/O|<KvࢲIJ/ cxYdcs28K e֠VVjHFwk$b`mOFLsΕCѕ/5QsݪL7Q]yͭg/n-.֚Ԟa?UѰ3r2VҤ?L-.닊Gis Aq\}ճS@bP|3MS?n^>jz('N=O#˧D%E"""(hoٖ>1ͥ9y3 ;bWM4pESiLpIl}\r=@\7={ 1 .YVִc0uLqJZRX7].9#b0: f'-1 Tgw<;r; Mk+T!98_ 鳱|%ΰr/k,A*f?A u/biw*$[|Xl3 .uPS /z68'(>1ߛ= 3\BNZwk,X8)hsM,UeqmW,4G+:ԢW' G ԕx شI>pٖ7p~u1S>W]Q,K*,iyڍZQ|&\۶ғ^Z$ȺIL )t"')V2bGxjȺo/) #UI<9{O%p'sh{78*fCH (TEfVT$(`ScD֓@-K;a#v~`h=@ub|ӌ_Y J>u$8<q]/@~^(sU]VH֒JpU{, ED ^ .-p{?at7fbDGβGiԁĀ7(x8U0̶ LMҌvI/ӊ?0C7=J 4f qwD.l]Kd(Nʥ`*3Bjܲ,rhG,~Iڗs>jN8wVxd#^0+Kա۩{ h1MI#WH>b z8-$bWӯη;h)eGm^ahD6>51|+̓N語X9 {͜}ܙp*/ݣ+&W$I8s3@|0 2U|.SI~ 6R!(B\i$`4<uT VFސ+&oR3Ohu0vNX~"wIAH9AՐ:l‚3͘ӻ $B5UƃfNkg-0AXXYœ{'sHjڬkP~'>k\F27}K%`Gln4Uqcə_Nug>'[B ߴWֶ8@'ӞKM9sEr=9.^h\4 ÷)"r 1эki57#3aKZ(:48P[΃IXfR"R(6橨ZU!4p~Հ+\SmA/"tTs0 vYDUf3|bAӍaPiQWVnƲ1]2=8SNtm$0?NA@X4G FM!g3S$&?2Y$"AV~adWӈ0 Dg>«ғ>2ådq|ˏad1 !fDXZKI$*qh$SZ#'2cX5匀(h7GC6E ;Gm2rⰡSdi`$~&L'^#Wv/U:3Y#Nzk,$vZڍzGLԜ6Dw-x,CaO4m4\x Cl~iXo. fJiUi^5Dz׀>k?|*^#V(]1bml|8Q#eJU]EL2nTo~<6ݗ%g8%!.'>vT'[QTzrZbgÃɳA7̓۵z] 'ZW"2k],`5W2 P9t@-@o9h۝J W.vSËlx8_3*ΙI`B=eV.S}# ~-|OQ\S|H/kXL76>(P1 G;jB[6J!np̖$ҿz 7<3s 0G%Ɇ\K>!,:g۷FZif?S䂳` y̳4Wf`IY,O8`I`SblAH@+\ro Jnq3YqJF#Z_!00F/' $m XnT@:zZ Cy*GjW\r[C ~lզZRA&Ÿ4ҞZ_T-eEȁ@AHq6J<,yLqY0'2,?GL ߷LMDX?g "\"uj#D(Uw~5Dd#Όc{'c2;:'VpPԬg*[ p-sfQv0@>`R_.IFqׇp k+iW<3Ltn^7'jٞss;dȆ t%X~Fu:`&W]W"SS?[0nVDU!?%o+{øm*`,!ɖ&-@O8n >wd#X}/: -9+Uȇ}1ƒwQL99rQ%mxdLuY$Zu"29Eh{W/M!H]Ja2Z,qP6X؊5q%AlrO !- zա[/7H*$4Wz.sgES+~G7_QZԋ2 k&?\[ "ܲ4QR]whF%R9)}og:itYޑ[7s8A]Y^VfKۡaރʟEttcUзkv}UT}u|)o%bps{K|iIȤg+rBQ7'Q8QZxFo j|+%Qxt]YenYQy[\AYgIVn@ uZr-䔦"TXxdS,rnk )10ҔlAq|l=zon*GHHL,[c9尃Td^R(Ʒ5nUƑ [AT$P~M'-^ {eͮv?Wd1 7l[ -@iE궩Sך&|>sgӱU'ꇔ\(<`۬%x%8S5^| $5 ^u&=M۷~XLݟd"wWC1܇pbe:+t) K(R@չv AGθZ3 BږqgI,B/Fګ"./[R)mxU3^l04R>A>)bj(ͥ|DLjiOW㨫i?v*3ܔYe^ž=a?fhJ+[rY}{kwsg3cwIA #I3PK/0/.eNx@0>|V>YbҬZr{$鲋*Qe][mk5u{JW@2zD̓$-FGx&%D(.z-}QTk1ѳm̮63SV_޽k6FMR -Gny0}ٿw]} Mf8mр`b).,nbpz+!^ee}!'c[3J9mr$0{$@b&qR/bk}gT19<^IȎi-7]B1L6рºcv&'تM}][T I*/c%73ۼKWT|! !LobfQ)Ò\V ?g"IdY*r3s: 0A٬ëg_ˍڭ.`|}D_ ags٬:#1= zQF c' q5 Ԋo8*{}PyX:n$12m`S ˜KaWi;m7̽M;X>}Cqӂ |rH9 O_hkS9G# r4V6H ›ŌDR~0lt }X6B $`35ᱞgFGd[VT;<:2Q$S) bҠlF0v%,I Fi_£`L1U& ס Wb"YkTGr%WH#sWZX4li|~JjD xl CAϵ]nZTZs[x}']h03*Їxb}@EA!6s:}<+??nmc⎁/`m7y[OVX{qC191xh?!{,a?ci:KG =Imk/2@ia*ۡl" ?Iw"ӢXxF)Xs?2*Ӎtk@Yo<xG2Wʢ{/92gnzq1ᖶOY3.}^@]} REڿ*;#_# ESd].UՐGsB#} [rF5mm-`]!:?j`d7QEx:kIB^[`1P/8\;GQ4u4X3lt ̔r1ER@u+ P_ 7J+$'wt0D kѧ>A $s#6 V!l %GvQ 2w23]m9_ c s|F+͛7&0Uk[!T8+,-ُ  rhH?W@`u"'dOcZ!v}%tAԸyt,Y}݇2o,.qwz-i*IٝRL!Z_EJ63yVe\)&[IJ!Me5L-[3pV [xLP$;[ȒRq(բ3v }a Stmr4J!壗B*K X<&vSÐuZýH ˟a4?+#Wlbpd@Gejtu;IG15Zٽs6ˬ]aGުhip|a#%E~&L)uep6TJE9庨7\֬#mg/m?<\WLTn5;%=Z̠GqZ?E$j%k=Jk5C⹤j>4ڽ*ToZk]=Vo;eLzxqTYҌ_ (Z8ԭRx}fL2R>~ }!|oU5o_/kn<D?v twajm<-sߋD7]L7dDF 콑rޣ-]z ╄PbJ:g 8<*ͫqJɣsƣ!lt:tyjr3Dw\0awv&X:Gi}&4D#Bxsk37c4J + oJdlf OYSV&XnBsL%Jݛִ:φC}=BmJ\3#txDڼ!Rix|5A ?5!e\Y+fV)$6)Q&<_(O(m(aY|! ' x9{ي{NNj!J:}ptޖeӼǗiLt²1t㰵Rӡ~s[3`.ܖ*Oi!24u1 o$ҘW cNKIu@Tzmn817\ep .>@I7FR1G.\4$P8V:LX7،Y`mO#h DCuy!t% R3gfhECEw"`.hUA,(#hjHDj`2^îA3bS@~!=7o8/G\`x(FzD\֊і* Oy=*f!NFm3& ̮i0Me_yXDv1>S>, kRjr'ֳ!0fvrDDiu \]6 pYZɁ78`;04%`{rO4Dkʎ?C5i)22X\I`ܛyBḠyPmU'f&\9.i9fϏ[}n{ԞSYkseeeJ yNԫ Y曤zO'68 fA4_#İs [X2ey Ɛjs$s&?c˟j`>%fypVQ8CJ;SpF`.!1qؒR<0U˩Q2"#B1"F '/M}}r{{ _ sQx;Wyű(Bİx I>l5tB ԓ7׃+gMsTnDz&ƮzxOwX-Bu\PD!ֲ:,U:Tˑ!ٸJnZ)mC3BjyAXC'A8Tg>o)YkvCq ٪9|}#uM=2 3fe8CX;`L,^T1]_Q#2 oYL =_'GZsh V:DnI>CɇGߌHqA>O8Q<Uzp0;&xp+F#.mBeR$K .?v.r]Ga?qP :0ZЗuvjj,4иQwO3;D=P+-ܮsf@O2dvMdJČ|!T<4H'-zfwDF\HA#K+M7R]Z}ԽxOO+ʞ@5# k::%(6nj<$tٴ~5YۃALM)49ٷƃhZjӴ= |^Et/2BXpơ* SSףBG֩ sj6*a$k"9E>Fh,0ܪc4tbڅL~7=:t ]*1 | 㶮@@1:vuD>ii`),aX܊*OylJ#hQZIArœgWgg1%+T^/Wch>5@z `e8Z/ rD L 鬻-U:;ߌ+~rna:~kY#׹h@vT[E/zz}GlJ_|W69". YwĊے/4IID$s->}cCsU |ۈkQnF{D6E +tz>B4I\Հ )r-y"GIk%LFbxj晐n?߷+TiGo&6Xf! {Բï#7Yrt~2i78~QQ'-t!}.-~:.Yhd7 2U_՞+Ѹ)PSOi:AKN$he? `ے>l@&;)QdiE€ }~Q+ DLqd Wμ?֨ ݟJ&9AVXJ'|ᗐ*rbE21t `ye+!*I^}W fY 6@|4r`PJa6't>K u{SK zBS㢿Qz@鲽h]l'Ǘ7(}VUh|C`@V ~1fDLe,q2Gp'>z6 I*Hĺ" # VU]EG< Fy˼i`eFX'Y fN?D~xѭ!_.ۄ/Bh%/wYw*{'I%?l*ZG[ߢnv$&$,̉`u%ʏ38+8_ 7NjJ6HͰX'1$ycRx#QJ/Dž}Ʌ!~}뵜HuRup̨(_d}*Q׏2$dߊ0"$\Dh2j$ssiyeXeF{%*FOpJ^_g&X ~³m 4"%LNT?2-[+j'xi ڲ|~ aěFMx6sVB 9l^^{)7f#!TO{Hqs/Ҷ;+IGK-%rH"UK` ~H_f)ݙ jǎ#D_wK r3{//̐i+l89. !!:95IEf /QQ1SЬJg /3=׭K0\q>u3D2!O)%'z, nsi[`"»ή31(_)b#P wfRt|c s aa }xbڤk %XW@*6y'^swħhފ7 њr>(.p/ $u=]D|fNT.v0nx):4)gJ(ѳyy?O;Qocڙ$ $gC@>gx- 3yt*na|\&i(G|Qw.!g} o&4[T9JK=|R,{2׫"OOxֳąZ6X]'`W&e @޹qoVHښrj> B/?eSh}eyQϳe5:j@̻hf4P'l裏%#k9KJztF-2 VhfKR?ُ@5e@318ҋ%C Iu27| 4NP=3یQD>3xI0y=s,Le`g_iϾA\dObEmG QCݟT N.T4dfn(CXU^Rrn .t*Q;)[X zOH;XXX~1Epgb6n,6Fn.c {rGO# wA\Ǝҹ b %#ediaFx\"dm3uk4LsJM&-tDzȨc# ]VN?̳sȇ*)Ϸ2bBp vo`s@}w ц/ƒM-tF F#~S7I–;x@Eɽtg:6/4ž*. :*uj~Cg:VV5Fů7{#hyn"ھyؕ$HʵD qH]Ǧy*6#UՒ. 3p`Xx,&?(ѻB6ٿĭ6*{-o\_vt#L`)Ǽ(Y;oxk!3Q!8_Q76?xYYfPoGe\h3Ћ+koqL(3ۙnql 57s "׿-q̯wDnJ[PbKWEr1%d8{+X?5+(6֍* N"Az0#f@E((&%`X:_0s?{`wO ] IpW%53^d@J+Q'rH@BM@1aMA>*0@LѸ)bʴ=ZTh_XQ&i*K&ZdV31*FƉ&Wxl Epw][GE:$C7j1 Z|R}|1nzjNzt(^3e1[=yD%!+p ?RZ-1 ~ԺHXp{;emM䱑nZk uk@FOY9>峢Y*1|<=Hwh*m͖!I~pS)%9<\H p5͙16 94.;1r`4 EjʏQ2 w$jH˂M$r ; ZeCHd>Wߛoâ~t]V:>HW!7jN9(.idPۊ² e韷X*4Љ.e_ѥD1oKAY44vQگ2H~qoZx̜Y_ 3e<OuB14Cū9L6s6+Th BНɽ (|fGUݬoM 5AaG;˰jvh?2bӣtLPO[9-r=Ҷ*Y 2{ @`e̦,<")+nbR(Bk4]K:C̔OFoT;u@Ko62ehxS>E5V@n'yxO])$?ZpQoḣͿ3ᣟ;eᣙ 'jiUKP9%(<==nBj{]rUvoVtYK8.Xy4tVCpV1S}nɏgݴSv䛤_Qu9&Fcu.F?H!A"ۙ  2O˂BU1?ouy"R0Ϋ?TqS;*$AcWB?Jݞu8jsϜ=T9ř)ZCג^r:^vD-KM_P.l5_`e^v{f]0`r?Vzܬ76P7.6#aEHrIW8+|U+>N1jި@V @YU$c[tK?E2gZo&:;׷s/t0/-}9k&|WK8/.*0nhE]9y:@B[7q' Ѯיo/1ԅ 1t)}JvᘥcE>tV u[Bz7=RTR/{v+S5@bن\lYת"6vD4nh9K݀֯8^Rbj(媹#_v, @R/Vl ݸwDbjkf[cKc쬏eP451@uxK֞TRs$=a-$n^b{Nf8hr=geRd!FjŗK~e$/ۻһMe&}J7wT$QB$մk)2LQqtѯ`E— 7vCBA`yf`KeYlS`EBa"&aMc/f b֙"//ltW+d̺pF̔2?&zj@?CJ ~FLy4&v0Qt[2~'ypDU?۲!5Epon4"C>P:120-tb.~u@H>JqWgOC7ǽm|$ڱglNa%)tw36;o͵pqm! ͡Vl;gՒE:җ3v9P&BJ<6`ܬ/Ȫ(@"L$JL `{yΥ]]#u>|.0EwQ.eWËE+g ]3ߑh崍,5M?9co_w9PRt+L0  ╄Η-F˺jrwbAVss[\w6In =|TGDУ"lUn]7Wf5a|P@׬IΎ6}8DЙf 8X}yXu,'Bk6SL&^_[Ҕ2BAң{o)m6D{tjzqypy|K.cZ _} gd5OζX 3JF6a$80zak:d#1B1Bh')[Zs]gXGgJXD?(7d<]|L_ZlB{q|zSA) +~lv2O4Ⱥ2E݊}Twwur O/@Q+yZ#9p;^Y rZ&"S0ms2QjzO!B,ܲٱYLS\nqw]/}݆lTY0&1hEOdNXDP^3<"Xh$&? ~\r;%0!-` b59S.*ύz{5!m.#l\fTA6腙"})<)&tnmsˉubΥ)c':Wx:jCe*2!ys9WoC@%*{)Ϩ}G1'WF9O۷8>6 -߬Φ nx蜾yZ>(~Yx/`LJǼ<4)< |:Zؔ/&:`H3(?G-Nh_iV[ q(2'Ye 6aR+qܵ(b~y?Zmc8ᶛlsSX? tY=|U2.FDMWƕ\ %QgAq?zCz' RjR#Zn%F h(rki4Uw0 y:0;vm=T[֎[O:-ď]󉐓\/ 2g͆$ 8Z6]6fT0@@sIv*JƠTYxS$yʕF3>k_lyfꍐi|i|f8`")W@0g*]ұW|>{y dFbō}9u}QE1ܔJtZTCLlB1B|$l{/g8 #QfޖnzY nNnb H^>Tڎe9Ƕ%ܿ/\ )Qy]nZ'#{. sMI\rSU [ֻgt5=wr9ӠquVr=n[ :)$ja$&I. bY؅d2:ijSM[j>FOPQMܚy \zrq߆ dzO}Ԕ5ҏؿdDLI s?h΀ú>‰bo7)}~U O‚MkYl8*#kosovgM &]qڇ Z:_z@JlicJ&O},o*w?xuo=:Q -ncr?Hyӌ&8S_}*Rtcn4.]޲cR9]ε`[s%Y3}i@۟cm"oξ}Eldt͂~Aɖʞ)K21[On GT$OX{ xB-JЙ5}WAX:F(bɞuGxAijT@=X_q+'mZVȈA(LCZVId\YUB~r+rpڬ.{g'wl-k?1d%1Ebc0m7dE0;Ṑ :IdB<7E$X=u>>UU R; y sqv.w]i:!1ԦWLƝf'#_OH(ϽfmJoR <!x (@Y!:TU~ts苃[֓^et>Ls7<~m3z{;U"^ ~;*A7&ߜ_-~#$unm܁HLi .)\-&~;9edgӯ#wc,%O3:Üc0[}aƷ(UOs֮Y\CF CZهFO w_JlR4k̅qOo|g1c]Pu̲73=S5D3fOU8<;v+6H)h`uծo$kF|ӂhl%:6eu7YwAu#pt>Zk ?2zɁhr@3+w;9jZ9wDr_`_Z;InœS^+f6ʌ˜|RgOGenOZ+8o6^l;=M.glLzٴ_]R0\VQ73z>UleecKs׈Re뢯U*H.t4Mq'd)7Vhni*k 3ڃŶEJADLDqKhnyh289:%T'd1T?M;o'3K V?(}8 D㪏^H I8ysdži]ڱRz|N.p[X${-d STE{ #?;@J,/k:X˳^ع/@tv'vͳ#Bu\@R+/eZyUxC_6»!Թ4aaxG 69A׍yiӝo ;=#Y"V}=nDP-q'Ev0Lgb=2)P߿|KZ Y.:t4x㝥GlRk=uwc_EpWI& VuZ.p:~˒kXgPS9!ӷO^ gT)t\=U+JAgM/뗃ۤ6O/->*ԑK2AÒ]j`87`u8kbT=xCT]!k.ۯp`pq bX3E>WqeD!ם6åV_AWՠ2n_n7p!ήҠs?IgLq3GˣqI.*5,S~ 卄?WBԭa [^JFQm?榸W)VNB[d[N֬Vjagx2?#"(2b0ҿ2S큷-(pMAd몵9[E+4|U<%2K1"2tب"Q0A+̀9qX|dʟvJ䝑.ל ΐ'~ܦwM>]E6/2S@%7FH?DQ4FL&:4aزVDE+iuQx^F ks'pa9c-CHiV:`HkE#qGa]Pi>4u!(fJ/]!xIQ| $tvT4}`=E0?L1g_HfüW8`&NZ3W"ɚ8RН*q\J% ҢKj*|mxs@ijYT<3]5q8flB).ZxzW"gD9P- 'D.e.H{$4M]RѮRƯɫfHo pR\!M(*<r^t,Ju<TY/fa[#aWmV5y0B{/ȗ_gu4`%);gRJPN以*7cx.ӎFwM *kƜBO wMb٭{|yB8Fb* }>?taDf(!8f`izDS>OVtͮ>yqnjJXo.eml@ߝ{8=φ_g|Z:W% Nt 5e kLzrk7R0l˔6@K!*$Cpb< !#C>%;ن~_{M}Xu!ɓo{$W"^!p x+hc\<686o&VZa ~[ \9``o*MWbnw+[̠4sTe+Nn^mBc=A$&rM[ilsƼ[f <ˍwt]@A;V*~'D"g0qN%`Rpa9urL- oră!t]%V`VX&SHaN6žUE,'xa>ƫ9&+AI˙RbZ|yd":-F۾!=4hs'op%cG@ fj%^^H-25 cC0r^hCٰG4*'+dq1{_2 z/5[@]6H-n- ۞[Ԏ_ReB/3hϷDz|R S0(PJ0@i, f3̈*1/-,ufm)(pooYD#1̆[ P/\.JMK7,Ʋ'sGK^T`}ܡ7!4>T;V vQLg֞6BX0V)-1g@tD'[$ORpЦM*}cj+6 WK۴+<^Y,B*^RxXmċ5L-uRn 7MY("!Y1ZEIc!5xQS@nygm ?\-gAiޜ;>{ޫչ gc#H g([^>$y;#.NWȃiԗA$K.y(1EjɱCc׬q, E?swhlfƌ\A#G}5x6ƅ8TU6 #8߮)p+Ϊyen(ISN.,brR"  nVwQ͇[nF0-=AϏZ|y+{\xY -[WX5 KĶ\ܳ0h <6$2݃yPS`R hi:2>&V lC[)Lv_6yͨt2VTi;l/m!P["șYJRN1YKzuMJHdsxV<ZC%`|R[Yv "є1cAr\V卮tU+'z1Fsm6a0KzA5zdBJZEgS0 ,-77׆bFBJWt-jvo a8a}ZtI^|GFJfU u0΢ηG؋e\ze2I0z@v9>^Qvp౮;[zT6TcITNӫ'a _k)|hL  =OEH# m1qEsPm*oOˀ4Q3LrŶd`ĨU `kj7j} pD4Y\~-bE9l&|*Zk@P 29a/%.,:gH-fD.Qb|T &%6 LAJ i $$니e4.[_}]^'wRj0dZ.PoLzJWL99*(ղEvckLu4[%Yƒ4 /l:EٌDBѯ(O(jqG&9 Lbx21U&=D95`..:u/ UMG7IƷsU-W~*]wG 7n(^aڅa)l8C{z+Ocp 6n&5?UYeݭʰ؀)#=|.f\[c:SY'K m^ćGw;/YL*CQ gۧݼkUճөξ!G!wX^kNeFCj#u+O8:=[KbTgx<;N/aBɓ]jSJjbܨ8>gѳy2wMtY4&OθHvT7aGbd*TgAx2)^Gw Uibe]GAS씡q٫]'F;{oqn_ w&ev[!=l;L./K2T'd2YTJh0? 3kn{HrvmGbJX\.u 8KX.6[΢|a! m-e8XYatK'X+Jk{~S ?k^fp{8SVfBlTX٨Vi>s>_ShڕtBF;tF`l%!ND. #Q6zml"NH]Ky6Ɋa[BhIr$!3<à\?ίiHRʉAeNc4eD}GìH5b&mG}Bgp5}#~Y(k-,co[5Y0r Œ~旂H9CxFKg/bh5u-%e]qrMz;G:n\-ïvUy.Xm51^" Dsug#"nbFUvW~āekQ. |d W%M]A_͂|4}'fܔT瑃yJC3@t Ѽ(5@$J܀#fKC)1Rkޱ 0\֤#wDs\WVE^kY0;vwh={$B ѯWtQ>g$M&f w+7ȵ d )ʶM5 E4bRBOx,s%Ѓ !ѣċ 5RY Q,8æu紌'KD׶ SumFx@ `_tcEi$l&0zmmmoj+˘YGRp%&'>^*XeYn `Ck3 \f u2 |eԨ(WVBw!JQ6+WWueCoKnh; =o ]<7z7z 4q~@#%D^SA|[uK2ߧ#fd5?#g%l^O B6XN,atE ϣ7QNGܭ1ޡs-XQ)lL=u[Il,s!eO2z[f7&P,k%bH{e[BҰ8]zU ˝fH2 Xc隤ݝ܊%A6ݾz]l Eu6wN@anO\y&Xq[s%iִ@ҭ[HɅCbY7:!k1SϿ%|IL#I*؄|•Qo(|2#3{=I*[0[$SϼGAÇn=sݞƓSh=sX7 xF41;uQ^oC5Ϳ޲Y:G<*cDFl54?r8`ē> ȴy੩L(% DnlsLx><7GO|FFyy*i=4()#-oN!..}g[2?=[ 'QI0(.Ph_y: תfY$,d-Iz(יJ$5d ^8"k2.hCJtG-1@2>NimX>?sۺ&6.?I)Kن]4#r|S\MU1:֬T+XT?2$ӝstP8bGj;y$U~Pvm*<(/]7.5yM/EQEjȁf.܋9TDa"ZXp ˻';J!Y(J#ol$xc.nuEI!l3W˄mX ct瀕alNc>.yA}/{JΊP$YeʢbYnNVuX0^Ŗx |qcLkL\vXNz|51" 6!"}~?X뭋!1h1S#gC>hx@Za9|8˴gLMAO77">|e(UxU\=(Y:hf>'Qn|Ľ8 #ئĪ7o2GVt)HL>va=5̼< 8a43z1|eU-TX%-+|&]Q|] gZXO8SМ>{C0 A-4>L>Xp8=E*M_ #ۚH`)bCԯqږ1dǦ:C=̹t(GBVJn:*>w>uxvلP8'rز@6.qnC힨)pƑ9 ]KMvР 7BC yе"._Nv Ć,' dޅV(UF|2' =&ְ*sM֎Q/%/ʅ%6bTwsY- OBQ R>`sϧpvJl}g,%i#TK "O){8Tم,d@Kt]}nJ!cRTfYZ),bNCKz,P*Hu2Ỡ6rKCyYj͆lE6}Fr ]20o~[h?OEqAWz VD8lVx4x`/9)$Hl4w+CbDf&zg}1##p)ՏYC"R?Q [Ic#&Ȃ~]NОbn4%<}i#7\g2f<:Ob)t9ULt>8@Ïo=v3&+)>Khu28A(܏o4)a٭xMl')]v\M.;n MwCl<gpjY{AюjC%be&rkk]"qo3U@ƾWq#P`UAC!(NU^鷂+ \0͂ B\ {p]]6vݸw?2|U[$!՜Fb%I1#׀Nǁ1XBT{v0eJ)"H$X͉/,蜯Gbňjʽ)Fm/|e/ s*@5~}921 SZ5E;-8?Emo8 G?q7ZsؤZ^pBԱ,f+#^/L㏳O.n5! k]GR梞l5G I(gk: вarb0t513S$b|?=Q0h[8e`Ⱦ/6p⿑UxlrѪlK-.GuE}jEB?IgJy! ^ot.pTZ9'mD7?Umj&6`Tfxx oܥC*7{~Zfba(.MK! 9i#u)b{ J~Ra,0`>0vlpjp?a/7Yp4.3̛K>fʀ߁L˝~,DXI$IU5]^y϶"?YIn |ד߱ȣG\aMH+-9D`PUw Z* IBHm #:Q:T%;ZDl(#H~2[R# lOfZW۸E-#jct"$N:TL^4_ȯԊZ,h*w4BVE~sbh-ڜ1-fX/.Z3IםQETvIwֶd! -v1.O#C2o`roO_җ|.%՗sd2L.F o[Sn  cyeJ.*/ 9 v#,#s+K%> Pϟ ;"%<Eplb0'}672^,)T`1,IMG*}rU58d ѡ~[07 ۮ919{ h- |6>p,DϫRqS!%^G&ƾ5O.H3mU?>A-^"Hۙwf9afsZxfCY?,*Gba9D%H =y3Dz`$S:r(:aXc^]/]e9$I`t;LO6ddK"Ot΅l"|jOmYA4]NԤƋ|Pi~@.xXE6X?D}]a n(+SXe^Ưyr}}մN<' sKtm`4QwϷ_;jn7Z4-Lg3R#$sv˗؊?DZW_uH5M8@Wߘ|<vwV3׉h`X-v: 53*J`ᣚ泮uDB *80ݶSg5_˚UE)=:lr?>'€8||`VCƙ+|$J֧ȴJ㩠Q.h#Z!}l6fw̨ף,R9ȗQ`B}"ׇ  A;{e6\ȷHR:$3,歷?8JRS,9ɲNVdő+(B%p2^'g& S}?7Cy y dxڬ_Mw# m_NbV|%;[qяrtt#{Zgppm.<Ҵfx{&wѫ#)]Q*mlf̮5W Gq*XhA_}*i yT.:0 /,.'h|oh5\2L]uEF [HFtXiׯf'Qk5ݨJ(b4,g.a/0p.N. ۔`ِ-̕iBn1~ ;B݆v v(9#WUA$XX +8#T$+r,ٶOukkAr^Xx% wlļڿx{x1"l+_ n4L !GCS侬INFfWc}{vIyJ2{X_PPeF3л$퓭q#i\'[ɽTZ2-,ws`(fț34QMu~a&) $h~Hi:V>YMe2$]!GMmQC%a4i/Y:ZUBK1sGP3G(r-Rz26Gqn4^ CثKiSo,:ւY$5| 0Ȇ=S3*LPf4~TrJբKy[S!ɀI *JdC nc~P_6s7fWad~|\mU;` 4>H*;!*arO>6v싋.'}]w5X8MLirDRω» r7r#F, VbTw5v|فk܇N3#h&;2zO)hE}xky 8ans!,=#Jj D\Sv{Sܑy+rl+]oʺ GZ=K!Ut#tY@^,s $*6暏A eg7Ce!d{GMƸbN+'U-~ጐ+d3=##yyV­IqbyH0gڲEY%FlIK-II=muv\ >o$)WprfҠOEp "aȤU)YPgY F+%e&RHߺ4QcwS \((";x.M#(4>j༈[ԹYE\@u8 foRDKGu" k#3Dkg]TpHP"˽Iw"ц5:ҏ~It=˨(UL/y@ɖY55.KΪtW⵹F,dŹ| ;q-_+]OyVڴ%RD{ :W,?d6=1c(9P7-Degfu&Gt5.ԧo/\;| J1p~) kWy;=!GUuB*m'iHlweDǻjXR&EIfu72u8)bI n[[\[Օ-ǫTSCz^z;ySOQC!s =E˅6L?Qvt{ }B,X̰ko"\ HO,?[CE1IP%$oPr'kSD%$(s"xg'ᇨo*Km?8y!tM 3C@ xe}G,՛c:vz6YdvYNj *P(DqBD<Y֫n=pODH.ы>D.(vOWOǀiiz'5@x!zX} 8{8\UE'J(KA'xdr.Mw4m#;vQan+f^47?~ bk"Hs+jV(.#A;͕9>愪rU{1C_0CA^ZtIpROq3K5i+ >7%߅Tj4E]>E:,wpY-C2:Fu aK0 )!8唠. kQROw^.#Nε/|WrmnRoaǚ]r^ƕSˆh3Occw[;ބDVl(A6M4j32Ed| P4k_[uZשrW%"1D2jKȾo J XI$(WBqBB ʱ@qs};|'2{tIPę (q-;oգ\mT07qP uTf,ds +"ܘb)g*@b80Zƨ #!ٮUd},P2;ܥ!-+ ~LKp 6?,}X'RAu= tDg[!F7(S 0 83  {1-,وWm^Zv! ]9n#k 2  [{C&BlB=+?) ڲJM=p#2%bLPbYveg."Ճu#_3Pq 5 8z?iv_pא A?5.7b~p@u|;XaG7sxTn˜Y2U39OY>+)`7`>;ǬZ\K^CL3P5b]M}שg?P(/fݹͣU#mC]fElh'm1ٟILTyr' &f-/H+UѸtę>(K8T4"Xe< PI^$^&8ѹ\#UkЗOC[FɼfZ Ť|ON*eš/G'rhyc}8>4'g0/H]q–>8 uF?{ PP@;2ISDcBJE//XJ49n8xUv,< ^͖%!qC].iX*|XDe<^un{yvݬmZr\nNAe|/yg SnE$A3jȎlqiyQK@(yC=]nܐa^ $ l5ӴW=H$'vNCK~26ԩo&`\"L6SlwGƱv*66e bQ?Gj 3q Z/d`2RH%x}-" 󈊺=@QT-oC#̇ODp[@BW }gD HdT,( 6hiշCx4mS9QG룄yPlA蚖iGE لF:O/1=SIO7X_;?Bx$an+be7h=G=,$c iu%),o?H^!be6׍<\[w;f6h̫{F6O6U s={]07EIKfUO$9 Q|n]$kiP2x10% ~GڭQAkCl05HRuge~9^Ēػԑct׶w\04MZv[1 z^ @pJXt_zK@4@vR`w8jh^#b~JS;X3["i>&.j"IgҞg~ZoHP#MYG*=WfnM5$;q?@\jN~ x&5Qc >ߵtW6umb#&/Y09ϤH3O)ɽZD4F5b%_#$~n^}5loke9=b"mkRvxJi<2rA&P7)=+Iic b@񺌉@.؇c08H8qh s euGsūä,rS]oƮ{|NjMZ4[o)3NBeDViDwOcxc Vrу2q㖛2Iibe4r6Ux-/Y3omeaizqxQq[pF3W K ajo!kZJ<DXHhn^sxWQ ]Z^:>q566vyf>J1@RvcZK'rD2yA1Uv1ѭ] # P `x B>@,rHI[|SZ:1sݡ|05堲OURj$%(\NT3T!Ҩ,T$ \Y:qV<ݙ5kpkY1rں4*;7EE 0\B*ш Ĥ,DVҽ0fn ^2z#k| 4 MPo5V7;!Ėg[QQX|ԕѡ` n;l>;t?*UD֮{.KNR65<1G 7e`O@̍HR<3Tw^!Exﺵk$tohzʩ = u|(gdO/wBgh|;lM';f;+A_坌rv ZUd%uv:=ˣ!*H{=m;TBmL{ /@"nbJ{_壞%D31hD,]C6Rb$Խ!~03Gɖxdks GכxUۺet ㅼ"Vܸ&b^89=iX|bjaEod{Rvd\-v=怓[~;=yAN8 ѩ,G5L /ܠk&z$ h)) [ĖNe ~LZ٥[ oruΌX! ;!ʫMaU;<15R~޸^dU 1/<l`r=zS]v?a !O5Zis=`R~&$Wkg , ﭛM\n6x vI: MSyJrÈ8l 'I>n0sD t._ڨoRɚwEȨnL.sQ.{{_Sֿ#-Fx+2`Xj;0 ֌ Ltjv[ ko`Ӄ.+KGYv5h:IDMbZn硔r򨖈HBgdn y}$g0Di+ԳX!+`;ES/PDJ4>h^H'3niX+-.o}YUZ9<:}^')'(kC@42GP־+A{76׸45-Gy-R^܎y%nxG85ڡ(bf\Ճچ/uz&S"?S!?K9z~PB4apu^.)3m5s"| yM-g^i/EXe4U4@> ׬J@ 5~FmpD#;r-W"3ovU%PX*Oui\Sgf"6> X'U= 7} o늫4 { )wj ʣ4\{JT#[:v a|Y7ߠ nTy_Y+'n'۳y;]ЀG} &ք>l"K2T>7NQ{?W*ہv 'P(U$/KK`܏j^b=|qL40[|Z\*֋"Ǘ^-Rц8sA--Ⱥ.fU]_!|1#+7MvN$]xjqv>TxK^sp?G'ab\$ut<܏y+~KRa)XYJi \7L#'LR"RZ;hĶJ4-'6?y[xȮ,-y3_ϔKuƤtr?j63:H'0R@1_i{jܦEn&=W t40oj?3'zc PҺ/PC3[4نd-;# -G(I`UEF7=YD~ơ="ty4ZO~Hpȳp2~@;G\- P/I gWLlC0KPzXio.[l0#nW"4tVߐKuPx{ÂrP,{4Չ'g8v -Rښb1j~A-7Εw*"=Ow!8܅[*xuP`GwӔum1qdNaD(0_ 0fiQ)^oHs}$lg*E@гҮ9xmu)9Iӕ$3zMY j);eT"[DG Ǚ)Ǚt5OTR9&&nDOMBֺ@9RV<RU {/_ 0E<a7#c,xCVfuz;TԴCʢR %vƌNx*cl6JT V峛^,fv^^ϾSbĬB(`l`,C;B=ңxӜ[4j,PL}!eTnѫCx$H$ld!ӐÊ,h !Gjt>IFc0VHdxPc<j%5eZ Ȁ퐽灀"1,y<5]K. &`tЦMnvm@ݔ60@PI150>b))$iP#a l*=Nkq2r*y;:o/|T#Lk̴S̿n:/ xRڪaƩ.oRQCTLo;\jÅzcQ1 1ថcdos:Һ0ҪϠW_:ϋ#o[eX/x=ޕxc"BF,X֖T&WS,~]X< _'} ZriI ĄbWXOs2Rbx틏R+*ztJ%?\ђ:lFyW:a\ǫRŁCWtKK.#/  I9Y:ՄB@e+/,"5GTekV\I3}R7 q}{Pr/ m>,Ee C]"E-}IOQ|mBM|]b^^fǞ/M̡*m HbxRq^B,vnY!~f V^}m!6 uI"u8չ Wv1(dr=0tUuܢR`bH:Var?&Օ2|1{8Jt\πbNrn\͎7/Z莸' |A1t aXus }^&Ѕv_![]d'763uC >`rwϡY0M"ՖzOs,A=ĐEЎ*N4 1HM\v(a6a򰠕quBōRRg< $Gm;S7'CVD|M<#!7r[@#^|~㡩*eNsТvaUAsiSN._wA缃{8{6g]ϕrkVE4=0%zbari [jԠ8Ҫ WN);%I:[?lu#1%:}q=R Vө3 9q|wOi Nj0^Z;%ᨈ֝\Z2mF'ʤDŽks.jDWMxa <-b;kk 덍=Va9w{ iJ2.?\\D>V;! 5vj4x1J8d$̅Q _ ts ?|Lẍ́QN.ۖV{Y4ʄ%K%zKU|Qq7to\Rg^$T_9,igG؁"UL̺y=bp $ )l',M^NL_CQY΍t%$_? Z8(QղT$R}E `[=_>tdo E0^;[V-S7e#wSA.>!"tU>-s110fG\K9$0YM 3I P YℛGY ]X̽SFs8*@0\j0Qes!K>lGU"wb$bne>4g,Y\]lZJ[1ntwr:W8xkl*~:0Ώ-x//kPczȃZ9I4]-`,ub"r„Ĥ 5JyaF,QS؎X3pYЬ?t}"csen!xtU:Dy:W􎐇،]ƽ BcTV2OI>=傪 C*im# z5a}s^Tbqhr䤿q`7R&<2/1zѹb*w|y7n M5V|^JgH@g'( kz~:$Kpfl7k޽VAZyW)e2qxv7p*[ ga{=$V!M+W7nwaX w]N3?t:w^qPyc-붨͖خ`.;:?[2Ays!2ޫVGR)1SAꝹN^2X,FNҌ&%خ7$NwK:۟ yl)Iвmq&:?cts"8ELP_Jx0d\8@C%jDK5Qa1{]zuampq)Frk*Kڊnw˕kO>%%ɩJq@xEO4:m/6@i`1E?Oskh~EEoUOSm-J4R&ڶPiklHO!G{f^xjoFZhdk9=zVٞC"SڂwAeݳ;:ZFwvJ*Z(^rCĠբ~vŻX]͵n,uT/Hp 8=9wpR} ߴ1>I(1SycgDixjVԧetc'kY kWyO/p .00yy3u/E f&&^舷-ptЇ/>A7ib t^%8*4`qz=D!?GØ^i v VvB^߮fMRnqM5F$ IS %8j h6YL3'b61yq Ȏ5Z]D,TuYIP^^RU 'C2{1Ոk'pC-u !;H(j}>|"[A3ӢSjAO$ T3Ö7-Y\PjwWvUDN1"b 0#4mvےM0A;E9< 0$s|Ա֣4UZ|VJXdq)$6~f'g}uK52 Rcw ` C&Ճ $+{8S ʒDZ\FSZžwj?XtH\K6x (@wjg+}֠u"# J@vXҩ4לC4TqΠ ,HT6q|-6_p$LlG}fXAc>wr&lFKD]=~BD5#\Táٱ137|G 0,S  yG(J԰UjEhtFr)M| ȝTJ%Xl砧NmPDan6>X"P۔a'JFP}9, I;x41Q6)i%ny؂wEdƝ6V#$ l.Z ~>krl$QP~p\dh' gs`Z' zsj"}tu!$5h;*5;0K |;}wn/ŠV$Sf-[0>GS3k_$&DaL3oQX X| عE4S~=:$UɰvsD {Mi|(-+3B>Lo o_%CYz>fS,?iEPVYm/X \vliCMr' ?ϩ3\SO10׋ׯIX&^2rKGUg̒\4EH[͎PM}oLmByZpgw(Xg؇]y1>;lOzoJa0]8 J\tC|FRCD}JwnU2~bMGǹ輶86, I,Ηklч+ceg)u }i\;[Ნ>o{E3d`T,@ %ݙNhԣQF&1J}X~L8ūO._] wXL!n/u7()9׵. 0#?C$Hy=i=xW<&Ar5Wa$: fs@@^:"d'D9. 8fEl_~ܮ19m˂ihSX-)hOR  gl3JA=꽪FfE&1zu(1?DO~֣yr*$_ȃM5Bx}Z+{5<+m(iYL u< ĸ4}<7bNu"h'#ce4LǨ[5Y_#!; |[7il7m41/:"X9 &b,銊%<%Ţ\m]jGQcEMm ʥv$uT͉)X͖z;@mpסa7@Rfy(@E #ϩ)au8VYAS4GdO/54{X;8 `G9WuSbpDgK?rCY廿Due~b8iG—LçMkE`;[lE VXb_ ߩ]5egtW}rBuy0f\ޗ^hsW,[̆;Qō)7js5&drs%G%7)K. b^g ^"bš@፶=@e1Zyoa]޿wD(\|% Q>@S9K< \=2c]~%QCs4OXNDvm{Ac[f@JKǴQ`*Xt}q !W)kAdNSJ[GZ}]4-bBaUGAAt3h=y[HŌހFr$ޖk]0{_ *vUE_z0 El Lrbg|dl2- w2FoI`xJܩB|ֿb9Yy<[7{i{>+ h=fL%t?u锠Jq_]PK^y= 1㫇hWb[f#ĽB8_>POWp.*W%ڐU۝ZM薊kL_^|lF-gC!.0}pqj'in/wv DxL])8+C_Ys_Oy: catN,sM3{;qkZ}Vas>a _pN 5mӻZmjr <0kzy ެu"|`$ujog{UG[&uB8BEF;<*|m$XJC_JGpB݁]<ΝUչ "h%轄*xQl (s ۶!O0X/$2ܭ6_tYةtX pVcKDQ~spF@ d*޹ڥeT@r||bb(pcˎ<^ZkA%KrBd~8E8m.+yK{Yzeјl;El5E ya6[UVnҍ# Re|Ct?~<5T/#czq$Ƥ800=>I6/F)F5id*C$F ]hyq Ѝa/Mt#LJ<8JXK?<aWdu*- { n(Ϣf' +nU;F"}͏ڰ\Aad>WȞy#h4Z ھbO[h8}#K2;IUsh^21ɹ䬸[6~[fSw%a@yiǦF7XB 7MU5Jr@◰ nsDXiLb 8`xX-HH ҩS}&Mf<+wxDum]Di@a;1~p6W9ZJ-$2=@|bBS@As+Y:hN(D@ dqmQO"(WqJFo~ N6Oы4=#4`)AX1T(Su 346 %׳:JY?2^q_ xdk/OkB` >k*<`.n!jp埭$ťT3T+Gw5ug~ްʤ үn $|y 59d^ǿ+a:sZL^\#ҁ;!N)s |uf?T0B& 7be'Iϗ/"Yu::@˦HTwAaYC'BcZfp{e]2ߖG"RH^;fH|&?YgDuٯG6:(P(NƴA~|fUwwj=ݣNE&s+3Ҟ+l<Q\P6=V7 S%5X'1l|]@4J/TK85 [EB\-{^8tU$=4!. b>eE"uFh)RBsmwr3dğUe+sjւͥILJkH-*Sfs8ʊb0I$GzYԨ(//!Q}vmYA3]V0e9~?+ܒY8,Tex/&@k|A:;b?r 7}#ܴrOl& 1N/Y AʼnH-} @VPEh|6ыy(q #p_Pul%-bM-&TM~néʹugt~(&1GwHAI~j 2 MSvLj Ki;8ҡBh'0٤!TLeCgM <,-*s97']׬b>;zQ%^/\?(BE.fR !.֐Mri̒K[M dst uY`k,eܳZ)յ)Q6L"iE2؏DnhM^r2@((AJ"@d' ~B/1r3p">MbY7T2!nDzP``fDK驑v?cO:JiaocHQ>zxnu'UV#PfЄ:(l9Iye&_(VۋJ "=qPA2ҴqexNSB6 YI:M-SR(tii#uK˛[:L"Bd DNȎ;$Rq{_,q8v&#^aLP5Ѝy@j$Vy|#:A7j9mxW}7a@mgz~:GCo,+/o)9(I1:Gꥰy#deR`FE].NPk)^l#K{?lGNK+֣ҥf64 $ b%vo/*& @HQq|MD3|2Ru*:.>4xOE9No6Hk+ [Á ڧJk[cdae#5*B1x{/I] F*DСXI|ׯ,4,\\RHvw)-PG m?O'! N o$x:x:B':xM~Ǘ3Ly\Q[W\GgRzmt/Zp~E4B?o-\]q*JX-im8br6. X*֦]F ca*Z|nBlm/apZdHA=Ta5O哀SfD}r\JI͟zٽ_]jŚqt C,P#4vHSuxPHD*}?8֤wI=`>0z r}m*TkPHYWX_VlMeu.x|_(3Ci^wߪů!bSnprbEhtD.6)x *MfV驗,3 <y_QزxThE>&E)m*(]}/gHKƈ6. Q0a--pbM.:ViڲL?f{P˳Um>6Y#ci|=pXܠS$Pa[a")x-o1tcPkJ惫x(KD[\])-AaxRgIZh06xcԾy(i=/qA*X?NLUjLy[4hh畝hICMwUtIJAG^Bor% &y:'י"LՃ!C_5q ϋ6|}Ws"\RP/Zn[U4 ƥ$gHv,u5}pfdr/"2xvgm5]Ll]mC_nh_l3A@ƿ &ȱ I&c!4?+\W> $yޠ xEY1.rB𙛵IӘ< bd[/$$w:;#KR8cv u8Ii(ÕE[-2J_zhET2[ 5ro)恃=7@boO< LO[Mt^ kNPYU2e\3bP}e9f8E7ovy%Q[Bc Y?J]kk#_>s%eQ@I?>*,Ùd\x,d{CgJaR)Nl\مo'{=- #3;U{^{ טGE7 x}c 5(҉HU4_bu47%udG5j[*N/{prOB]? S+2ar`bmaG WF34Arrr3Ws 6E"wڽ;fśgnlhҪ @#mʒ!)`ẑz>L@I#T/|Dxm-+s }a z ,(Q_=(=\9 ~D͟EH7uulx;AhL]o(PW(lޫ~V^=c;~U/efs(5; HX+H]3i.\'K*{d ;=C\գFK y'6_HYI_цro/xq*PXT׷p%1$1jRBn(kS< 9typ1꿲rEqmLx0+ZaU?9#o4pțFj_Ǖߠ_^7JioIBw//bDzQwp92jG(yDm88CڐWS]l7> zfA՗ =X-&Ʒp!vf)"xnQ 礿g!/6@+@#X4i{C,*Om7Hz]ɧ`!'AJ*T 8 BqG{Y:;ڃc(3 -,ҙ㩦 /U{'I:`":OYꒊ3&YB|Q1Bj~]Z4uJD.,Os;"s4ղid/GM]RAqglRxbAvR܂Hb-8Bsݎri|ъPuۄTwU8:i YanԭDuMPX_I $8({g!cKʎЇLk%^(O\~~s+8N͒D4 %_/buv/%j~!lC"o] :z fyvjtR } YBE?BzʇNᐺN='wVi5C"ߡpIOk l-2u,*Ԍچ>buC.aW?\^Z~#h+ZxHYCKM m)n=vJ3jS3Uܔ$QUc¤W1AnFi5: $onIT͟)E>)zO7ۭ PX.'I2VH&/p4y~A-?vpnzGs$v1S2_2tWUvreE}!r~M>Y4r/4eS?]am@DVVD;#G&Z61wۡF+E+C섉 cF}Tp  ]siϷ/,d9?X gQipߕa= *s\<ɴܘkPnexjk]F^Lsx" s~8>wHhz(P}͕nwZm [=VFutжZ앥ξյ?!bmITz4Ht-X2Egn L&0'M/7 +b)r^9JNoC º$Z}2K}j{b I%t+^H5PّtKisw`MI #Ok*LE7HHe0SUxӍmJw uU9XW z&-uH.n.2@T3(6U7r N,(d?3X vaIĖjAr3|:~cu2V2vO0r sѿ'2, [˸y9YVTeHT9,.?Y8}h},3ԩ%ub ~.,=yh%Y}%|h= 'Q1TVxSV>d8d#:ǔMwL`.COyl2hJ,AR=eiP(nkv` i8M.YߗĶ2c;L72"6Ar:W:̓3韤Cц8M5hn # N٥eTEbL,OkA5 k jYe=@y/F}x19]>zвr3 D W a uQFPș2]cLjPϦR hH@m"PrYix=ɉ |dpYy<\qaBL'rϡgwB+!7uNP>(f g!yD@?6܁!^P6Q 6 tD{.X/7@+ePB,.%6)V/Wm\KQN\#z;î鿻&EKo]pSa[ T2}*]Ӵ\qѤ.m8pVFHr.Ѧ. %BP(X| uXߠH3 ?ŝ=T/UOAFx$2XiXy*/j }Ҕr'dPcle߻ޝFה%ҨXQ$*NaG,ˌH}Y:ި4~gQON"gCdjz^uᙸ~ 䡢1֦*5=2/j1mbȢי0U eGqX-`'{j,D),=mthkME9}?Ic͎ (.y=.YQJb狥Uk ?w+ElBxV6A8'B P~sIYBoR|Wi.Shfpv7%f[!Ku)M &=13zPV\xsE:i5"GeM9hHgUeO|U}W l?4|5Xx5 ۉKI #d~.) (~n_yExEz. Gp^<%.fax"na0pp/6q'x(`oeh e-i}`cgJJiHr։C6β + D-Rs~˓iY5HxaTUVNO/Ӛ6&jla6pm!y)3$[wUEuyd(S9:eupb|AR3W>fC+u]\"% F$jM8oH$:3r{a (veեe_dǟ#Ft:A@oVwoRZa΢fm8`wuջԠtBj|m1US[ڜ| P0 k euelSWV 3"LQ#򻘟* T"RKsG\ 1FqQ}!qwmsGa>OhxzOq͹VQ7A~!`|[=Ϻ#{xRga$j`HZ_yG^<{DZP M”$?? .눒+;8ҮSYx,r2$h zYQrA&RWȿ"b4P$QwS870 8\`)KlI+6Db {`%NTɁpoi.f{RIMm)-W*Wꈽ+V;).W:ƶ'ri,5[nl -yZ5Ve>B+ib8PIRݲqHgjҟ/,`_:Km(WLM'yɌL+'La]ƨ([f R8G>9!iXLɕ?nUH11pީ; 5jEeif$_ xÑ}P!ΛfK D*. ɾ&q0,Q"O:(iKLh4S}h?!f;8aX*?f>7Y5R, \k-G ->], .RA"=#3IM_/IZg Z.KO[xXEZlF2 2p ~M%wO%xQ'2r3idާ/`8ÐeI't,~,yN:&!=OF؂WG]W.n%%`Уg+I;ZBÖj jYgjՔS,(= S2 4䗀'Lu "<82JY >^kmII}><&R3P9Ս?pleܒR!K瞒 OiCh8~WJ+Z68A޺-?bbTqy<4y)ŘS%4A} Lp|٪|[wZ_Pv]3Cl=ۡq OnBV2l35]Ҏmޝ\MnU0ꠤ@H'x 327?x˼&鰢fq4`JA_1{;ycbGmjڵ>a3X($' | hiq*[^?f8aA>VfLPG?rPQ`LF %1?!]\&ʨЎ4jL\>!;>̫5*[-hk}kfn[FLqNa7#Z0xzl/\7bf.6d)&|ίdM7#CBLBRF+ ļܪ"Q-NJ*~U;9#k֝d ŭ|Lǀt$[- kSflb6ZY~Lj`%~vc܎jq(>eQkVJ;E')) ELYa(;1`<Ş<A'#~ւ;4DtObW W* Elqb+zG 6CB0XyŀO |q!;湺*R+i?-Wlt/[H*.}`|5#|ۅ/Bs,N8ܱ `RN'~*aegE&ҸC{ɄOAQrghAj^=q& Ph7GƬ_?)[o(7ܞ*h~~ǐVgRРEudC`y cRQ0~izujW.j&'I>-WQ:'xU"EqĀĨRiFW4@(98Ҫ a'4T q?fٌy/W~B}Ur{JRwW[a(U󄘽61+[ b4Zwj{Kfp9V% m2귃c v'OW*x8T9$FXU'Z-M=18@L"1cPJ`s}MFAD E ]NeI K;Sy`^x΢q +2X~Njb4I*KW3rpH- >uK`; b,3x"P4WS/C cXe[3[ wK^e5f7Jz1`93U KfsE+|VXAQ?QH-B A+x֨ƧvH6wjc Y XhƝ/lvI}J3VBS*WG텱,x(x唀JrfeWR@x̐%0 [20]HBrd 𲧞)&5w U\(f~s/(chO&D>1Lw=&~g_ Z۲3~.S<#J.V/=SW&P)ֳV2-M'mVvǔ#eX$ $+$jyE4o3-ȴyRa[kŠ7ަ(7Sa r* &g)9LYPҸ]o;ykLN%5_ܛѽ"EoK&mE.,5 w3. gժp%)\MW'6v4o428pZ_Hz8JuɻUCy3“|s6Ae&!s1EǏ5[ }])crl)R5ܣϜTApvN<)]𨳏DvQNN2Jl#p4mw>ص@v{wҦ6W4.ێ?Nc}_-D f*j2oL B3*EGWCv y͠81mMohXۯHS$5b`a}(3CKoe'x #K&GZ?A jSm 7^볶'3u65 4]kFZ=-ax(iℾ!摆#of7Cu1ۼt;޸yǀ:2,mwUcKZxXޛ'XݒQ 5 *=C׶;G[VaP#Kx,Bd8G[6QqsV_~'jշ-s:3Hojy"Z0_Թ i9(#OC q9AiОtL0.1M'"%"^ҺBdHS~`EL ? hQ&1׍𣠦IjH :'nm8u-li ._P 5v+&Lt&#Q XVA#(˻v715i!ȶr'Ֆq^uCQѤUE'>(L%=gB=`Dw .kl KS{kvTk0)aJ.cX"VSZ{d8̊7+MLYR{̸ѩ5I]Oy:]<͈tV`hMUZ#zclz[i,~SɆȟ7߳..6=ᢔu] K6I1e-?FHck$c7B5 PͰ쾻]3m9@IjH*gS>P`=+GH-[&Դ?oꇇ7sx><,FhqH{A${|W(QXl}vζ/b9wR@E-lt 2EJgDw6>`\?,v:^af xȓ }B k3 2;;zӛ9aA(i bV ḙ̆}:"0{:?TNVABm wdœT׮E< '+`&)1Ph >̽`WId(B[(x! g.8ο ߅7-M2=3s] 3Y)F;ӌjA: \77D cb\Huk:Bڶ~G7*ލ5XlHxjF DaYp<{%Ɛ ]MȤ(ܢy>qzH-M2'K{g5ƪe ^?$xc\yMm6"R@n9J: [; ~cs?jX!V cN6#GpHDS1j*@.n 2OB]P5;3"fk3CdƴwbAZYWR;դK^e};HVHeZ̽2-J=EuxBRQ渟>Wr{-E`-dgD}1}n&Oum#Xrv(scYKP@?7xFf~#T"W,?FLB~iP:5[a)KiƝ';@wvLLmr/k_̲Q.69F=\rn@W=>4dVF'?Ix&BaqSMdQ C..BpUb_QE3k{+F⛖L`$iH=bm{?L6-0(--3q:ku&{D-䜚gn.̿)c =D%'Lv"vLz挢ǧSUO-Vܕ7;uulMgd@sZAyOs._l{ bkTqINj"&X;ӗLBy׈Ͼ/ 9{Q Cfy}f(աQ7h""49s&FY`S)2E="2\Kgu)&.웆`:h7o6Frn"iZ=vL[ 44#4]va.K{2|:d u ngʍɁhRgJ^6 -~6qWDK3"ٍ=zz}WQ{IQe`IT/dݿwCT݉7^czUKjD-9'޷^nJ|+HN\kL|*?ӒaJ`a7Z+z5(kPډӿ 0US,ykPERBVaB\T~f .yO0DeXQ`zvE$ؕbϠ _є߀5(?4%ډ 蘖BQ݁ NA@$ ~@/\eOR}S=NEae]3Yޣ4>C4b[Kq0WWf,Ml5DR3@a] X#vjɀ'kI+bJ)Rs_q'^k/2E(5$Ţ(3 Vѫ\lI.LʉXTҵ + (&Wr#*C?x_>M ^/'-t4#=D2tz^8$4jbPغ=$|kdBI  ^dS+GߵV3a}{LP٣|J)i!T &lQ l,G qhm3ra|ٻu 'rNb9QCq-?ZIQ״cvxSö+*"mYUCu x"Ĺ8@h=B]lx|è>X^{_\-$&7-džydkXsw܎r寧 U0VyKM,3Fo9gq˴ʚL6Vf bn)`tV9#Z{wKde'?+7!E.k O< _+8?>.X/9ayaoDV"H,}C#m̫-'sہu]ԇG: Uknvloc-q ٥а M{(sWf/S!|°牝UBs{Y1?wz'Y"cMH$n#5h\bڣF_* %K莀^_/HƣD}4O6ârjQ (3)A07aݭ#5dP6͢wؐFq-1-r?Icm t݃~嘙U,=We֯#IUf":l_XG̮}:-ӫ"ڶ(2&i }͏4/]O53DrXJFkmi$S7Qd[|8Sǣ9 N15ј`gW6:4r w x8mnxB+Go_jtb/{;moGX߶Xnو ۈ-}= &qT8" K!;]}J1}`E3oܟ>% jsQm\ z-(HV}V, @ezWD\65Neَg`9ɢ#J &feo{S*k2ȇ2P(mjpJLڬs+@eaQ߫zkz.vT965.H:}NGsTYq:HWCY-gIU,7{u޽Ae#rh3d'۶X Q|٬u OA$`vxk+ez}K؏/90Q(I%Vbi3 Xe&K*qCH&%ӆ) G@d, ^Q>-zJm1@->0>]ca.z~-?MPB0U'mfe)ta;)#-T# u@Iq m0@mOK\ߟv\VA@Mki-mY<҅ F#:F[qKhܷ|*pTHэ&P{sa0; DzS |ԽE-F(0x<6n;tl|{ƭp\vCVЬ6sp2؍wޓ@|Sw-e l\S xWxl>#cstH̱p\a强\ކ-Fdۿ,mO&aƴh ʐQxwKiDʭТeL .@0d5#yI{GOFkw;soʏ򣫜4T"Cg$y12B0uH]or5N.='*'لxw_ @?ni2xc*vT;G'Խ(c>08 +N3=yZK/Dq)9pѰuM$~XұO׆Y poY;HQ0yT0Wd5,eECD5RnFўX@> ;*"AfItzy"RO"چ\Q_5#Kx&?` -'$ HS᜝}~ I,7][k^W^`+F3'',~Pwj1D4=D"*I8Ūm܉M~dFzJ*",r8mf(&ѤmIh~wIhFiѕJ}Iگ6W%Q:ߖ:@4ןL-qIXXtUj&svI;j}N!$|`l6g_jݭC"EgHfߒ@F4us,U-8w2DBWȕ}O>a gTt >m09 \DdTCuHJi=<9+$brCK$&5tZOym±_L{`61Q>d[ a<)ѵ ۇئhXql=}پ4lEjx{E|^x=f3*񶗅:1#!п2a\G;\ם!+uCV cy&`2$ fL: +-M \8-%NGYHT( 4B +(yY?߬2gr4FN܆!9vʝ#ţa2];6җh}xsXLr^OyWjGԑƺP{/8er]'ds|b.WZk=tIU`Q6 %C%aImϋ% }Y­9u)X@o{Ԃ^^ΟkX+9mM T//JK(Ԁ[QS[qd}h"jH\O"3®O{ gܘCp'D<.bvmr?[|ņm|MW49xlq3oGv+'@'CuMLA,6 -f\>ujśf@d6Afh-%|a@C8·*Zjvܨ",>e=t69iC\7EQ PLa6aj{_; qV̰o\WKt-!_| at_02%@Ⴇ%0[lo #n] 4!3)O"JF =/bŁKJ$ض2X:|(l2z$TK0v 3Z"3ȓ e)43nľQO} VsjNʴ~DȢhIН( /mĻX1{LRV%-˹`a]O>0؎azX$08kOQ!I.AfGDl#:\eW6t]Ӱ@X{.Vk.Nʨʓpb,#`d?hI_RS?K>2Ax"{@<  vvYbo6~Ֆ/ _Kj}t6@kz|G̍8}%QA.Rif"k`EzjWz\k,y>n4ht? d“ f٭ F.97bK|dN5nN^V>#E^G詩xߕa~ǧam dl  m#L"/Q{Dpf-1^p-,[Aq9nhB`:s7QG,2>9ڦ&[`z Z'!`@2FCv2LvZ7 $Tk'%SџUF9DyviT [ZcWsMȴ$S%E;mih 1 FNv [x ~t8D0^nakυ".Ʋ" ce'_g+ۀ$̃%tYAZ1RX fm7$~>嗲_q3lP`̵HKY:ӮC$Hz+M .zVTzG_b`~O^P/Jqףdr-xn:X"ճ F{;9q3~z!ú01<-} H\ -Q\yqX"CU8 c"& I-#rExo+!2tCYP?e,.bZkk3\$*;FŊSI k: WܺzxQ >F d[֌d(bl}ᓋ^ ƾaOј -`0XTV'w YHfb,6BJծ;E3 7GUb<}(F?o|.fS0!&m? PK'n\s0A#gG=poJPK? f6|OmKW/f혡a21}]so9Цlʖ_Aaz<#'~B$'F_H)%ՁSܕ}+A'R&dd9*S9wV@dH_r&TrqƋK̇˜\($TPso&yc,<~|1cc2~ ;6,gBg+(eEwd#qiG |\гiSvC,(տS.vFNGI{95 V3zNL\i!ND*ZYs) GF4A$¦D.0uibgxaB IRCA7Ƶ -*j;<@ ٞ9k`?ɪ C,΂J6/v/0_;[pL><DݷQXYNBtAtoZޔq&C" YN=Ih|Ϡ?BS"UNDzS'?JbN.% aҳreΘufQh7ndʚK1Z!t8wH t'UPOʐWqCՊsõ8ࣿI4S,̇̔ՋjرC DeD-CE - 3eMHHҹ&7`ɯ$hs$]Gv]'1^O524ޯPU%d Z CK!ۇFrWr-'-%B?ҭTںG(\\lr2^W|];qU{ IwD4;&"XKD\fۆUat">GH^5EjvC3 =jr3)=2ƗnVzIJF}}ҋ.AzdmLAiZJĖB^S1gNb/ޮvacm~}שY0{c9/F_Nn`:L_/sXt?q.1U H Wd|$͍olr&PrQe-rvW>J龮./"D+^u`*$GIlBޝ'|ʌxGHx$BR/h$(V QjƨlȰd'r >ɩZ1Yg&*`#T6J,#A;`=زx0R@p,#$]mݤfn7·z34ݭvZ!` MwpeɛμR&O~?C}<e`bY n30|ږẴv.Mͤ냟m+c0vIPQĊZlT( Z?R 4Mpӂ>*o 5K`|>5w@L#쎺s\֠5L =dĶejն>&[C#.-QuʍgEv-ۖ\쎹Y- z>0M *|)lB[kIXYq!ӁZǕh2W<Я|510h\JFcqE_jh*:D u!1刐7FY\)U#j')N/sꦬq*Q^B#'7*͛?~*!\K&vx̔51;FSW|=pnG-f &u%fi3G˰#Q 'a9CEܜIjB+v\;`߇za#>B68tpJ"'Gѹa$1tF=mA6epJ RM*2S~: ;O+sg@Z2 x⿽nc9j4@t) ;#&#ރ#~MQ+ub{k<bOWT$Dqg#CB1a{?ƨڛ3YJd/:`6 8KT1!elO]~IyxPORv& }ҿ\h ZjuZ\n$H9a@s` he3&CZRN#zs+,YfˡD5BΒjN2iH笺ovj3@FvFۂ*Q<Ů6HY4Pf3y}!F\Ԝ\ {S4򭃍rd9y)eGƞ^C|pba5%11,Kw H;(DN5 %-/Yȿv#=#k##_j Ѱ|=B6;}P賭;rc뀔rykݥ CuJ@JGuFEN ۠J"p8KOYV?i֙rLY}T%zdGAjhtDzw &w5ӂH ^ێߩX!Y5 nE%e1aB'{%.5|Zģ=7dAѹT+ҸED3B󿚀q.n4͍ Ky~}cZX_<oõL)l(15A1dZOnIw8[ Pu²;v%Mu U˗Wк)g6`KӬuN|6Aٚ GPf3թ& @wW2d;hi|`D@iyݰ!K]X"_04(E ݇[/fJL)؛Ŀ>]|7تC6"wqiUq[O v(8m_6 jLg.(4HDXa@r6}=*Į/u+9Nxo " &@Ӿj0LNB<:dE^ ٢G6 ^ %^zFtг,L(kOuUf7e_kM_zadTRDU׏*4U}{7) 12%Ut3҆d%ٽė{A٣"=ߨx'2١(KNm$T %KjTӠ FFd0=w_2QeTjJeG!niLI-? 9<:.JҎN"6Lwi"f =%+#QJ9]lˋZ\~}kSa,w +BۇKuU H/vk2,+ɽ `W6s 7lvgzHaIXi=QçrGCH-3)!g!Y濵g:_ЃZ+Iv>[B^b挿tY\DJS/0 \E%9,R?W^kojo'At ju>µ:Ÿ>T(/FYJ:lUe!y(p>+Œ93YJMpvhMֽƇ#tuhVr֑{"7 ~ƓSUwsx75 [(|ɹz3-:/~E!:ZNe"NJR*Vc3? 2`hdwΞ=ŕgQ}-~!Cmv@/k7%OEY|m 3F9΀\Da?Sjܴj] z.dƢўI wĦ)kWccHS]1͂ PETxGMUmߞ{zT=D -y'.cux$ /]*Hd1'IP̕ʐXMu9?SσDͭkiV2 vH q #zzf|NvoF݋1LOH<'TcyTө5H֑; r?U@rp; kObOZлerx*#܈kpj"(߭U3o%S`&BI7! yX&_T|Uz/i.cs[v*o-tMǴhDS z9 W2`񍳺;0-} ؆(s$(=x'FVM7j3$-[; wؤ|[V0ɏ XP]H/SA2|y>U->Q(scRe$Bvu}Vp4rG`6Ezy3& {-c1^\V5w6U0+w6GA$QNt-K&M&^!/#\(h揚UګwC;&i`"HԨK5 X'=.P/X(A/µx I}fB (^| ijmGVwᰪkQ@- gP.0 N~qF)3\s ̼q jUQ>T?Α}5~{qB& ҝG5 xx<=l0)BkaU)ow:r6Rc6h7uz?Eк$5lڭ7o&琑jĒf/u=9B#0<(tї䉎 (<ݙϏN|۩ux!Tb-pRF"s EyD&'#<pē3G $P{7p ESˢηٞӞ'K fXC6$rp2pӎP1؈~W]KƔ3bg}٥$1,Iq-Dvp9Yqb^$O5*_x|̭TdܣO] 9+P,pV/Sj4<JHGμb([p7 \vCuٴLg(Jnu`:W1k RpR2a5;X3M͆/]28qЋe7T7APt\Qk=[7SߟI;ɽ !Z$'@pkc#bAi˅>ԜPZ.R1gDik!~A^E(0բmKǖLQF4ԄrX<↊(bu8ȖJ djbp 彄Ujgۋ"&H |` h|\Fv *SD2 ^W >NQ*e"UR~d%׶9ZVRU3 \rz9αY6au `AYNK;E,q<̩i3d9}Jo ?SeXmuD螷G,}ѝ0`sLCR_VG-rWU17g8hc@0 cd.S^X)DvTyݶ&Al0s&[twɟ] K^( n*2ށBx]#ճ+" ۋ.hPJbc*mRx%]➁(j4XoeN;} =v:wϠeϤ Ra[Ɉ IU'U\PLe]چ@I>~|D+̲dO>"RY;]v/g&MOJhv_ fkn6Z沑vBiKޏ{J ߻}pBǠ2½qr9"!7ag_HĂVi|0u  c8mZ DOꊓJf v-7 qїJTa*T`jȬ`@95j0]DrHS׌38 o~$R>]$f2޸Q\܇kz M&`=5>gaUm Gr9<_2O rTHjM !mJRPM1n``ֽ1 t_CR)8cD)&wygk:4h3mjnj953 ė_ b~pLYαz ZbcOzJƌUYD@.t( Jדh#Et5+'[s (p~˫+~fo3?pf_ AV`,~utfe֡wdn LL/)Sa2PkW2˳O)sNgj|K4:oeQd2bُ(_H&K=ig*ӗSt8E: ֙[DM2y^,*,(7H3ˡ \$7]:X|4+\Gh`_(va>?K M*͸<`?,WFmhHU6aJ\Gӡa|JH}]&v5@ 8G(v7~5˥0PGŕx֬> a=ܹGi~c7H@9V*=epCց`۷#,*&w;,$)wSEnl^OsG8hBNz},=bO9 h]Rs9!٧3'K 0΀~=+NR;B>j^wӈՆAؿ5nYu2ljaj(;敍̧4;y*!ֿC1xuتq1 NLiƩiU˟v !c@ T@o'ĭyXpmĄs}c Ȕ~80X]WL!6nZgxIx RF@l@[ k :C:wZv+UUBis8dKD\l!5.A TK+rܔX@htU%-:QʩA|5!=l g\=3֫hcCRr`.*7$}Xt#[+#|u>(JisE@1H y5x`?&%ѕ;ZD{CV4lq fۣo  s )t3!ǁ0)EW =^ 7CuDAwa PJ*W"3 ܥooG.cگP9ω |+x3=['h%ͷk@҆ҸcP78>T;'STlUCNt~y_vF pʹHY}edcQ(Zw㫻=|X7ҙ@aNĮ~jU| 7ʬj>ե'1m='b]w ,ɭ!A+Ph+s,Nq힮;'t:Wm(rN?2LM}/-ĕ7\Zˉ&u#EYJ82 aFe?7h`Ipў w$D=vHΛ~hB.~|;j% 2.@7AjE~x-?!z|U[(]4 "F`RP6—Ű֗Sy'Ƕջ^+skDO[aWl?All WJSW2=F:)%'ZbK1v% Yt>TJg`w0|T0+PnGD/ׇ򮣯>AF)E SrmC`D0_Fend2c[#NK$,};vL-Є.;4tljoS-*ZU-\6pI)%{"UY ( tܒW *=0´&c =^ %jw̬(J'1!'z8Pu'{9 k!, h(&^-b䧎JDxOj]MqToD2 vvg`T^ɷ;iT L_. @#,G'bDlSk-d8YL -+v>ʱ1q0GH}WAaj5@G^Uf rhdU hLEPTXٸ8dȈ 3!|\}1PFQӽ]`pl)wy3*(9 Vi(|C?Fƒ1lltuoe9y`8UHI)MGniV՘uf{4V[0oE:7'O; E:B{V^77א g>?[+:ŚQыc2EW0 cr'yM _|V&=r٫9aՀ LO}tGAD2oNJ\C2I񈌻^_iWRTY*znI agC[rA] #8@6'ʥٱW8tPx~[mHlԍ!ASH0wsd䗓;pɖ/|qQ8 p!Hlt2qޔ!CgV%9W'H} `B,1^ >|7wQ;OPLk5c"o`I,S`&ۋ*} sys/yƮ{=32dKH?,Ս&o^qSy(2ǽ,s>ud":z)r̿}Axc1Ʈn@BQ`;LTBHBdb(?/ρwR)ƈ /C-hN ۩NG(XlGM( TI\I&PK{ &\3tLT s}rkև uu' EY& 7mVRu-xִ(3a-6EٛɫHәaM%z44B2j)P THAZ^ NR}\heiaA-PwI @J,=%.x/ݙeL$<ֻyHjhʴV8%(üABI$C{Eޅl:PIMδ+w61r H]ZwtCu1]xط~A$K*=^:88xg*^ J[by %x9 qYՃM}z^٘p ~=VꄐEã!U7PnHe\e1ht/<7jIeT7ģdO\lB܊#vF@A?lEoh7ށq9 ܳW()|0l]=u]mM'wn*r d5S6W˼ KxgI sFj &FU{UT Q4dRUn1ZKCmBDc_V(3O;0x<PAWL(QP  w1ZKAxB5EwC֩Ql^HR穨pCߴݡ%5C{Vz(&Ol~{VU9q}VahT6XR5-o?')|*_5x ]{d!Wg.M' D aFQҖƢkG!MӨ-ph9+{m})υjoty |nM%3-qm1 U06]NG$Lz`.w w{bpo1TMI;`;*Lb10:PVEYGx\ޙ$t@mQ&'Pj [zn_hz9AJmK ~V724Eጓ|>Ql]veS uӣ@d:Y8^UO%:)i1<ͫ.y?mPO)gTټox0'6Bqh+;]hx'E yt=HDk*9Hϖ0_s_PݷqEEt3^zINvZhNl]HAS$Z4bS8/vMWv[iw1#Ѥ͞|FG*TiBbĖ *VN#nFׅ&,mr@>1zZa%ua 5~d~6 qSxo@|-TvΛy&s [PSA542z~u(!g0h,4ߡ944Bw*N~tY"gZXgV9Py)A68Cңyn%|kֱ62WS[ ߀= *uEX} *ndrF=pjj7ERc1I2z9;$2V@ ߯"+.$`m ŚW'֡\J կB|"D\d Rhp𦖰CSU^Ƈ8ƕ~3FIs}DZ޸gH>L>;w֐Υϲ1x}ĵ*0/ 3o-Hj iTAP)W&lӈK;]R` -hFhJ-cƅ Z?Hk gĴЩ`whJ]i]MS /M:,D;,|\hEwo0t40rѪC$tipWmfNOP(H,3Cpvm 6%Ba6%ָۄ8KIZ'OPc" E/cԐŎoRki]9;< ].rq<"H oIA(S/)WKRV8S遃w^}Aߌ:pI`L m\y@tB UH"mrXm5~uNmgA[f6#6V`/ Q^l }gQzoc3W2Ry`e[@)M ބe1. {2MrK_ʦOQs-+QhmEo|%Qgg0vm64S i ,p_S!aBr_䑗B'LX62T=yns*wN;$t7+3B/}䆉%[r7sJpIH6zUCH0q%ĥ([mCy׫KoH~ _ZkXPDޔs&=JxgwH*sã}n5.Nƕi9+"֨###Z蟁NvMVxA17|c=ؽ44q$D?hV* b'My enQI`Ӕ7+BaM/{nyiFԤ5~p ,, JL~W~K݉+m Z;X"Nҟ*,cI/'-PL+@NW?/: ^ F&*~c%N&Fv?HGm}<|T&H(ʈۨ`"Q[ /`-R-;ԡHbEHP#!QNkÆ8vX `AfĶ|i-ѧye(pxn5Op͍e-16*9)j|$9=o$0x2-r y{e47rZKnP#$oH@+d@5zE%)뢾׀y 2)'@Y..`\Xc|) U ʽ;ڥ9Ք 8 %?UkcNeRM>>^E?!K,bqɧ-1[mqvclpBH_B:mIf[ O耝fJܪJ(Rd, FF}W d}l]#ۋX$SH7WE6_וOpEipe0OHѦrbw`0˱ox3=O HdP3,P"vO4{Yz'tSCF<2轏PL>AE &,$\ ۿ㌊?cֵ; `p2.S!Jz͸ (VVG+g8@VQ˯qx@M7'Q,Kl@:~"DI(/{DdUaaQogżՙ[Z#1X5z.752e4f ՔBa1.;=Zx ,i؏"'_Ӌ~n  Gz'ZaiEp\y1ِsZI5A{X2Et_yk0y]F2 !ue) n7N{+i(zކΘ'W3mYE-ن8 Y>|t2VTx@mZ~R&@V-և1]CnU c޽$+%\?qyߙ:Sl;S"3 w b7TJ6$BWgV6K'yȴ9B%F6Oj-*YZY/H^&*&aG?|ߒB.1 $F]I\g 5ؘڬ:\ q+C{3"*x;![HS!6z=Z3ǶD/cP1Vc@%-M%$̎uj-: (tyvf, ]nx%RF!q>SR(]hCK?γF]fK'>D.Te}*:͹rgoIe:z?iAlB6-[tjy5d5%5kRr\ԫ\l5HH}>dZ?q˥7l&vo frS!IL}@FktWX=¶h_f+V~k{S yH*-n芭ڷ8n&86qE&9q_N&×C1*QB*}d`58FŕQ"x+h@Ł))deh9I>W;6O2Gfc^L36ue&aAw/'u˝wf 3O,p]%9զ:*~+FSol1*د:hO @hM3) B)' Bf ,Te/Z!MbfʞbYfGt=eϾ~78 j mOh{LZsw*/ޫvk!/3OHx5Hֆ֒\̧ϊbH* oZeaآ\oJ3}Fٺ3 3nTXI׼d>dzf8cF/IV 4dagMB1o|sMu\xe6cT!JXs‡f,Q~I1yN]"=H; s}FDg+q6gA߫|M5epI?Vt@1_[[<}󠪠MoJGuup/&cW{zmg ZC%(驖7if [joA\pC BLYCt/O:Ѐ"o'-l;]_kNG5,ueXH8Y%RtY14KF&q?Ŏ>k<Ѐ܉+HOB5Wb4Zـ?@صAosٕD͎Qy~b}} }W9|=拔EGڣ/;NX_?uն,5;1 HkEcYu-K Rw0(1qt{F[3\Tyhya/Hhv?]:LIIC쮧_8 wR0 R- l Q[NqŇEw %?AbX¯`Ɵ8r4o"m mF1[.:y]4`|M8P)P@ ' VZkW@ꄡjTYӎױMų>V$N9!f3/IyAX'.? ){^;>|y5M:yk~ԑͻ|8CW5G)NX3hv[_c⍤!tlW_dԌTOEWfXFrEꧨɨB,MTSEi8z"Bxg v "֛+5b&p{evd p /DU\dsz*t*$\ |@N>1a΃M?;8xd_A%!4FBL[6ѕoJy"\ѬduoYYѪ,L<r_bvVlAƏ%s?O=llO 170FSC[ 4w|JƊ8HJ M$ltc]_l̕JvZBb ,+Kct&v\3⇲>BTWZ|*s&E:ݗU 2* LO4F/K鸍3jQSjc Y'IDTWӱNAj򍕬8tG;L@N zŌ ؄pjsN4ߘ՗EԴ2]8ښw~;"@Dý%.#:^C$#ҐuFW9vJ!ޤ"=0{e҆M )Ψ\4]jl5ifkdXԖvu^&f"GTT'v&_mryo9uŴWPDlٌ-#vI䚏ʐU*Ֆot ΎEP~|3?D: \5I䨌I 𬨤 % [kV|QS;t1m`Ӈ lʱ`}Bbmh l?#,5@Y/Ay`;_,!A14!t&^Pc1ҳ%~Zg4#w4~0*dP%x^ 2fibwʰ 7^=]]Z$˺,NSTNt$bۤ:\NPH8' ӨMeذ*&t9Z^v@.s_r8ΦQ8eW}L9k$񽳎 bT)gh`.jv$. ⎝:=&; )]_ 8%cjmXɺ&6hU5ɈFkrBbV}+ЕV[crB@>xDhT졥x&̜yeCo x cg0>dssj˜X*v 596yJdhBbbG^hg$|bVK+0:| r}dYme .{bE# f+҇'ށ"zGCJ|~Q4t=aoYQy┰>)S\ bT5,%AMSTUјI~$/8k'ڸqɱ[9sil7T@G8gRnbs#'F 9w)mm]dEc&64䱛T?ڵdh)r!)zL'; TM1W}O1'9WfbgE:fLdYbuf8 wLI'm{ `X"7E1f.KbbvF-]ޞX";BcUE*P4}vVe<Ɗvel@\LmQH{\`S)ƺwVMgZ`kYET௭= D *Vggu\9 hnҍD6 M9뷕\WdI}ܔ;c7)$R6E~Lѿ:>NeUz!t@=e#6#QˍtM{T{kϵܓ|7Fkq)V1*U8njmkQ2)w=|+7wQyށiSdLﴹ4B$ے,iwS'v4 m{]1z _u(^\cIiGbc:j5z 97(\9?}jhg=$㕊\*iRXAe̺Q**˳t&M؞Ύ.`F˓Ԏc8(,r[E(Y`YDƺ1a#/k*&}et|v5O鉨g?v]T5A%E)!*qLJ@>%:EV[N؝X+Ӂa;jްdJ FPq)V%5h@ @6 ʳkw]>COgq,r{?[1l*YsA2S?kQGD Goy*];S\Cw/DٜE;|VsFF_ ,ԃLLܼ '2lL: vQtv F(:>g3NP`M.hFJ)Yku4*4̴ {NajNl?iquz.j 8=~Q~JP7W()~˿~Ux pTQO!HOi{7bG9u/4_)_!2*Mxg !KQo@Zs &Xq f{5I +M1Ms7=d,΃ yl;,(z,qLOǠ0Qō+uNKҎ!Mvz,$?~3¤埍#oێa졥Mk7QfrT[)OnF|%~f~r+,!rp جy#cvd~?X u#Af&oj@–5&M:5*~O- (ֽ|/5q%IF*GW_<]\b"3̋xGDZS &QJcE"d pzwFyRt.:V4'P_SĀgq[ 0'ff"5T8YΆx`PSsTeX0c[ń,O> 9cWS X厗:c/OND &`E]ՆA=x$q5KT,jZLJû\;%K̳XכFq J̝y`֟{ ÍҶE/:9uy{ "NHw-l+4hGdno Lj +^v( Wx KA]<(kf.iArⰿe$un[+QߐI82)E?#?51=0= AHvHdbx(;̢CjL@%菊z/mv6qպ= ~ =`Q H㖵jȘIV {ic +/OȺT &PeZv|8CU׳,ܬd`aV3!8z3$A2΁ u+O W2Hй,*HLA[7 b!رF8QR̊Dy?̃iECv6v3iZ*YTA~/λ6,^M ɸ84"!31 +K?;&bRWQkQgA&yiYm,bVQ`j< ,w5>L. .ЪbThM?XỎo. *-u}#Xn=Xu {h7/^^"]œ0SRjJ/l >?{J>tg0uOMƒ/Hep/ɝ$pZ?."0֨D|~eR-lIIPW-TC+T:Y&P>MIYCDJ\lvv({!֮zjW8v4,䐻וq׼Ae^vЦTk)4s";>#/o*k`.Dx2m^s#Ko9$ RyAKh1 _XD{MUgoM|Tu׳c'FS"ZzE]-A7ocH9'ǎth.~3"; X@8q`%k Gu6 U24i  םʱ8>47Wea +??~?n~odD6ǃMˆ tySLq@ňiޑOl){6K4qΧGH ö$m纁 6Bى%hy2}ƛ츽x޾[J8Y \0~*3 +j"1=xjR:xp_^FndΡYw?唰Gl*⻻ҙ G*|)NQ\3[( 5R[8ApnTxfw&Mԋ$A( Y9Ewz13VۖځKW:<9z|ף]vro N9ZQc02/[cwD`2IJ i*eeo+ʼSxedXzᲽWe8!%dSEEf7RƼ@EMZ@kCEU2t9J*iż 63<  FѮ$g3e=)dڕL~=.#~*gpMq܌?I@AAnV2ڌP"9FFmL~:Iֈ/Z]1 ,u:/pD?)$gBUQSuнqp2c0"ROCbլb;r9O浆-77%H䇃k 1XK>hw,IInJzGPhHU9-Ug)7_P{'z ?P/0 ilor9gļ9[͚>/Ӻ~Hm[' f\eO-Wm<.\J}3^rU07%Đd_@|G 1I m}8cr= `NVѹ0sf(6E}`4\$A>)8s.ςCqES+R׿$8'S=T1GlJ^XA e{Eo{g<_;p]"FCp&89aE-̆YnhI kݦv kw%HH/ 3WD pC3W QQ!!B[i{[ ` FiSH/HgezMW ֶBчXĂ8Z-˰ypwY= qԔOmK1kacJ̚Wb/wWHuߛ/]rAVof!9=Uu[HJm(q٩7sٲ{RF6CwN4:%?Kl|aG7M˲27蛌vv? 麍r۲5yOߛ7DlEBݛC)%0Hq J'jPg4lυ}?k㢁;o8!0?\fn>>Ȱ3*BtbW]uP!4| W>(zp{hnuڛqih\R^ˡ0 αY|5U#'Йkp+Ŝ*~ =jO"t|Πs%nyZe^?Ĉ k.FKѯ 46ü,37Ղ) ? r%7^_~bC(>Ϗ .NT]$]4^jL^G]5iL5<+%sʍWkGCd'061&[ Z,!׽ܾ~"dM{_}3Ly{4XhmO 񸉤5\MeхŽXq=ɽ^E|tE۲aGBCW'Z |v(J^Ȟ|NˈofYοwkt"ZIP;Ǹ2iglzYhٳqW!iS3SE-9h^Y,}k\_J{i0rCա #ENgrZP,sSJw&!{Ka 5'|Ѕ%a˽4#=*œھ Rg ]1,qtUCBV"1%KM(.-:CJGXfBmi`gۨ0$dDV~%_AkrB~'* ƻ)R?jc 'V#(`MAe)GWn*''NW[6إ0)b. ։IZt|:rNڼ% P(5Mdǚ@=xyڻb"%W?=AfMϸX4u@2mT0BZJ4r! ,U;=܁T|g)4DwCLAhS5y#-p{DҤf+RDmpa ģNs景N8:jʘFT6WJ態s(co?L vG4dF?{.@W==Fj-uF1:`8XF ^5 `}/euy hE B23*XS :ěF7 j6blN}y16mXkeq![29ER;y2 uvOt@\^5;o9(̦bzoA Jq?^m$ljضɭpe -vMY̒,ي ܀Džu 9)(Poc`q^`^ٌ3IZ* a^@#}W+'rXFx$?g[k3Z^5$ g.:0_ #.Jtұ. RZKRK_xm08^Y3lV-y7n68=H:& Aefŝ5osA0q l{O1<"UIZOͺS4SD.,'5lp;pbSZ9ܔwzqdSе0sFW锏04%յ@2g{>9H"OcS-Zt(*AU$p8yRQ[KXJ P 1{w <}~^DoPp- C/%=!(FZ>s͝1_Ȏy ŇP Cߩ}Vl9z̡F ߍ \6Z<5! @dwWtEJ3cl}.K zBU|=wy:)`rfYS(n>j*Pe(0|xiZW&0%bP]:f_`l}6AmVA-G`KnVNXvjtKjՖZv%Uݧ;w`ӷ}c bLWbiZ:6h|X b]ȍ)xtɮ!8VXm^yՁJOͰ>%YǙtX-A0"iwoTnkn[/ X" 6U!MϽFa1_,HNB]>hE1N+G&q+:fح 7q,qxfxD)k5V(0#@Qͧ $SQW6]kӨѓʲ\H'#(ͫoP޲1WD 2I{'nf7 䖦"un]ppxuϏm{DB6ZNh =0!*=%5|kXeX8fgz?byӁy{U%pj_5FD\ok z\jl}3,FJaiO_qtt{wlVH@.q e1uO%apvVb{0OS;fo]C^X^y T"$L "}߭uT>bHWS姻֚$ɨQZNL n*2ފM{/{oUC6^>^VŖ?ϙ}ri:XvtH4`2Z!3Euz #e*kd6?t[ݒ l]Җr3Vސ OLAͼ^`u ,?c"M`q ?ckhĈyg[- *)l$/ c?SS3Z…f[Z4\Xn%12v?:]/ony.^gŏ+ץOtPiNL|W$<ϰP(ʩBqVhQbȟT'#r>oY.!{5@avŅ?(AaM LMa4 >JoxS7%)aEV. 'VIJ5^+b}q\X:pIj8BVquO0">CdAՂ~0XލS:q_]DƃFaʑJ)78mJeA#2.W>(SL*+fc kPFhtsjm-;^8}w Ửq:4tIq2>h0Bn0vSإeH`;/fY .W6B0u9i{ߚtp8@3"ئn)`lz&)s'@x`:L%u^3qd7=e*UWIhl 2X Xz9瑺(< t-6 |0CMeq_ nb[㼉gch/ҰV53tBhml% B;VG>YtНǍ쀿~7& 0E"WhUk8KѺmIk*d~sܸH$Kn-o&Ҿjv2NZ߂/dr#kF]n>KAL4*վP)/LCOY,/ DG؂xxNT4/(?IR-~3|^@ҹ\`\H1T)Ӧ5*I?A#+ ~NȊN%d;̽?q@RSJ;/ؓOoTzJMVA{pǒDz-F9Cj' nc0OUЭGiQOMN3U7FOMܚ#;W 0=Y}D݄lGQ1# lPFO a"ZEm2C X yT[kw!&8@T+ʗ:b-ƥa/彨{\* a@>H]jġz =c@ JNFk3ƨhJl@+KxuJE _ԃXP)5̸դ G> XX nv:NIbFt*/?O 99,=SGk0`tQid⍲?aWpykts(oޠ^q (%4X++Ošod2&-@]¬UG6hk"Bo N?Kj A4p<.r9/CE`(̷!gt ~\ %j%vf*I DJ6cU+yXsM#ݙsXdorztPͤ?[5†%[LSN&̯Jb9lCKfxMlQO~T8 EFފri-)LSAUlʶN~燦wRݖ^|;Hp;aD`.$i6Peh9g9 LDM~&`":ck!c1<кՂKORkt vY_".J5~t4oviYNEA1>)LxJk qr}οk M@|-"u'hwr0 ۣf؏jF@8ԗT[zc (]5_NFٳ[^~ KFЭ䁝^Tn7x] {4ȍ]5CQc3kGcB"غ b7%3AWU8-þ8+c۔Y9Z8#ڢh1-Ȑn*odCJH//DݵSI/9yܲ:[ʐ\AvG--/u4NQpւm1y;H{K--`"@`Ru6\ Z1;e(US :-0 l)$doVAWNP\_ [rЏ53N1O_sW`ZCx>vX_{/Z0u`ߢbIZ#Uk#5F& Iy=_:LQ\]r'۫m8Ps}f̼ kgZ4=orHa٢:6a7ǟ`;Һnikg"ϋS eSN膩_sl8I3k>1)]>1= !;F 8[뭏-+  Չ?ϲ"/.#*4x؀M}A;y 1b KP#4n'3w]E`c!ۿYvuMjw !PNҮEI~ ˡIel FVv uĔx Jr. {n$*>C7:LmOL>cZ`O:tzfdW9H0BZ4d (h"nfn |Ilo:h(V#6Z;/M< ڣxL:G]HWcHpUq#ۥ}Xxubad 5O>TaYk778:s+-$暏iVgahSBAºD\bIMqh-\qJ]!51k+|J1UiI`[l4aY k|kt4¿|m$97aȱI\/8w%o,.P1J4Ȉ?Tt?|_\P;pS%3LVM@ wgVrқ5F#!(weӖ,%ȯ+iRé`x,gB)6_ d:nK?}Gt.Oi$&JeGD׮S/+O#WIu$ԁy?`mS/ڷ8Z=!H1[tŵ#Z%s 4**IیVJСTX9ܬTL|jF|(XKw-oꆺ aވe)ZdqҁX;cg OqKh|`rꁗLR:d60UBFmݶ)_nLM9=>R0f4*tCXlg%kEN0-hAWQVt)`"\Q.VKNo,S-z&/ͤ`{c_]юn5va ~ՊjF 6L3Jwy`+nG=b^bxW2hpɣgvYֻG]1t͖1-1)M|՘sŮ0MN_ueP FV:ˌHlxGc|ZZev1l}w04Z;RaXɚpz1#EzfNi1cYF*}B\6٭D74F|hmɒ" F 4b nIiߑn΄8c>y''w@JO2:|mrj# +2 xvP o _ B|QZSnNQ(d[SǴ>_[Oʈuf^c P팧z1fsA U/Fe|s5~uGbfO&3+jw8^`S Trֳ)2I'bҡxv]+%U,* +n{DE bf4[%e@'ޣhQ0!a+K͌:&YX6J,Iș#ܭm .0bR 1Z*^+<6봨ܝb!wjL7/zOm7``7| MF 8ryRY ;w[&I@jݺk:rWrʾG Ѯu}/?J0ZU!rUT{L<*#>qZ$9;D3toܧ|l6Ȼ vjηB@DO_Rej+[i3hQc+0waC R8eI_H두n7@%!l MӉDyKCB:ԪE,O-e'&Vs|=>qY(bYm82KyAw<=a#=K-oOPjN/u_xRގd! 1@!6y[2A{3A2jNqp!L60Mr-_k&|:VGv&;a'Dꐌ_r:DwHr>yg*/5o @|r ɔe`{4=!]eslX\X"2S#IGX‰i,g ꐖ=Mx<_A*o6{VG4^+{h.O3cg Q cʟT0ZXJ<`{8]Q#lbp^{6s 21k L<ط9m0ʭ=aVaK>C8S2g f;y2X. R$?rG{B~0ˤ|tµGZ]EÛ>>PQ0x^42,Fb'йp[9p6d 9]xfx AY8d#ME>۩C^j;"cr]' T%H~X^ ^Nd}9%jr[ h@a"ty'Dߔc~,w]lV}b)l؀3ufWUAOx%q-P^8UaM v_2dS]ە]ցa;:z9kT[n5>t~ KŵwvƧ [n.ܳ&_C8u1q1EIp tdW3 4%},($l+ UIBH9|8lltֈH}e jcnm =ƾ.+B N†V_8Z};Z !E.@ _༹h=tXmB9A?HV Z\I|G'B > gpC +2\,u6nj9N,71+(a!Yh}\, ކEFA|%btlױ^1C>/x=2x6hk& >n15!RHqu4ܣ1`.LUvtޏ1-yYd8" ڢ|ߝ$'Kە9CҺ̪;0|4#}=E[f|%\{m[)(Q t|حѝ9RN {o{sjuz~Tt~!7/3n4mGam0='Ζ\ ,r5xw?bR(/T%)˜AprȢm?m&;^Do{dpYբib;)v*8}0GULJգxkz쫥uO+<\Rؽ-jS?9wfi:d* 8H;`hQjy,o:oN\?ː)Q@+F][PeUGRQœ%9&k7o B l| 4}_)2"&ڎeLY0K!Ctԏ6yM | FKѡJr.lNDr5 mg|QAs,>gA44zhXAJ0N knH¬uD APEYگ .KU<,HXB,>QA1I_cuW %l]'̤Λlq+!K1h [ I-\ Ri8܀!iUy(]*OS#eÅoX4GB=:~|1ω߄*U5ڶxM*Sz"+)P )=-C3 -I ,柼0!D f_w v cUSo?[$E<'0hK8;87lAX=,w?=ZӀEuǖd>3 }, .Qt }"]\r2[tП= *DJZnxEsC77Ty@{*9 ֒V0:Jt ֫bx5lت@9)3*1F\V{Nj7RG2Vg,[w G; &֏7<$Z-CR<{+OMB2 }$uGex6ZUVrb§݃zNo 72<7hP~iOFfOCG)rl uyaD8 ~j2Ö^~UcRNDc1p 4!UķW^"3} */Wv]4e4l D<[.voHʟMy%'Ҿ- X{< |P;eF(H"n߮qRG<ϙkW eQY^0qh.a0oY\ <2)?W)RmT1^ 9B3(>3+twc6? !T53&VrW2b0y|^*| ?ha?Z({>^-g&smoEPa~9Ljf qV;>eE3=ݴon[Ej$?`g`I_#tjV=za>2mW-6/ BF MkrZ ^kػNWȖf_^ءI\s16i16{o<Mix1Ȭ5tdZnAA]rS-dZǠzv-RPWCmU{ڮS,O2 +o4_S;DO{z:g';ym)YA Rj6Cs'v p[MgVmt [XP :TγgV02d"Q;ya.,4=rҐRlR5y|zD}HH~\gXU]꠬'tܪEx_v,wKaaj@^d-@5_ҍE(J#f.~W ,^}nū2i_' 㲹fIf!]R2ǽNY&A$29hw-ОٯM]Jg.LMB-DV'HΠ{@*!}W=*2qQgU9$+cePdy*T$lCMdC^Y֢ :q|5EI}\!{LHDn^{Sgr,:/5렋ͩP<?a+SK&^fb )vl-3)O4 >d3r3<9oA4؋a>NFVl!M܍dbxEm@4f+ImiqRn&/J7Z}3 90Q* >|~.LY YMv"9B~?Nvrwc{EL#e0fTSiY/j k7gjO#ۚ$l%v+lm/NVj٥UzH +UP~ŻUMd _$C|̢vVian?FWKkKB {`ĜO}"ݪhu^C-Nu 1vv>?(R;'#c K*?FjΈrB' MqA*:Kj/8HOEnQ@,$)RBMB)J76QR~ :/ⲋ\}}ʗqj7M\{6$az`Ns%5n3B㎿噻]4f qvVW*ç@BP_:׀]8敲K&d \ aG=ڍ;REǷoME,$6A{Se rezɵ3Ink\5%~f=?B~ 73Gnكb=R=q(u @'B"XB _:gS9ƼF8-UlX.$j*\PA+ Rsl("Z`-Capv϶T窺)p E@ps,3Eo9qy "̓{ʧ)fJJNf E0-$v,dŨK5BXP˟݄G.ʂJ.â]‚? @(2!pN1Pe^D8"md IP|< /a.$=Shd0GN%V^ʠU8)-|& ̙0!iݒA渀`NJ zZ2Uo/It%pQ&o@(sE./P) nG|ÿ(K찄4|hY1flցhZ1@f^ĞQIiۭT)OI]Zzơ}zZ}?ܤ #Fu3$_"JxMʮQf15O=Kuj/b,c v=Ӟ k.;)c:b~E`Y%TӦi/[ǠfO C^2-DҨS =6ٔ$qW:g'<~4Ty?f \ٍo}t9UF&býQwu`J̤t4s E=4AZDJGQnO,LSWM:&[` Wx/:qC 4k(O֠qZBCHq5vCua%lW}"_hhwKJޖũ͊opJӬ'6ț13\"*&Ͻ 4ɓpkG{bHBܢ=7Üm3Q3tjŹecWSD9KF%5r}YY{A+|,$@]7; :zȗ{$m#7ƴ1֨w%L RUqCjsdo!ʫR:+gԹ%p["άLrBmwiz\Nbp.JCvnBq(# @ D/MӢ'~',g@ZrpcXt$eQGܡa)a)z@|ՆMW v8?@ \6S'ڠrby$ɗ_3|e>Y ks$'?O &jùOZ<`%VյU1 xc_"j mֵw7zs +'>q#Ir9EU}(:glxL,CڡR9'mΐUr-?]%~/q~5,`u]IEE%nt= x|r] 5KpGd֨im{GܖTFލ _kj1W-Lܛc i v?#1M8mur)Kg ';ly5S'$PH;T P&I30ErANi7ɳ}9kҹsJGnwa=,H癝y̙6/"ީ^Թ4}1A|.⛹4VL>J6cߎ>6)$XQkIޗ*r4IJ:E{w-欕yLlJX @$V8UXzV_J%L:;e}Y-k# SpZ u"-줚8vLX _l92"ra9\peR_,`10O2(`CDC vCwq_mʓTqzCۅxeьsyչ$"x41UL }YBPT0O49ƹrD`T= =o,OJ? 4 =u{πnJ72Uב4 Q w~umes>8]-(2Th=̵qHդmZل!{'wKL7Tpִ[Ac|PТE}rgyv;ʒ+?r'o. r6q]>kApS!HPN{h6ZzCl 8IBVz1^gnm'P3DJ' Yh̐o%+%EKX(R }5΁h*ӕ8_WS&"je[08YTEm/sQ!+^Lq,p D:ՠizX|cƥ=O2jURg@v4*C5nk:kCuMI- =,HPaZBsG[]N&@ųQ J[z䜶b{@3d$ְ>B 98§-.䷟axkBXʌ۰DO@zq#"FN+Y>$v7C~iJck`P]u=C֫L1^i0fOz'Y(Yr`m1Vx)QJSt^}~袉CWy/Jg@ Jm/PńH"Ԋ, (^V̶ g tֵKN#ƕ~drRٳci+ضgE$-$Y&­pT,rn<Hv 7Yy4Y731Cbhlm|. Aᷨ\x5EcR3}\ɔl`͢?:v+3ܙi5$6B0Z(#X1b4IT+im37=({%l&M l&Rlx7?(HG']9]Qz`r38c@he aУ#bldʊW19!Rh?l:Xzᇩ*i zJmm6N{2+:<[ЖI+.9(ҾІj`Y(Mz"w8 n6UQ;VzQ`rЖ=> c52۔fBioasuytuqgf";?-WxflWat/(%W|̈ը\փ 먨aQjXFh_:h+PmM2ؾ{ ~16yqS8Qw.1f|sQBc B'/<fڊ *nj6cv(Kb.8/耈>0[nQ\AHWMBVuBa{ Bw_Q ߘ {I.ay tlc2%m3lO9yT_'.{z;bf.H#C{KCx u.}tTa?ѝ;!c1Eauird;8sMMz>YLNek|3mR¼j"2# &MHD6iF`@+KYmIj882[0c|w25?6ɸrR6v7+Jq^Vpa9фz|i&b= LM%)YR)p*a=|rdL]3i)dLuR޻0r {ƙbb^>_'WaשýYWw mr33xcxRtIlΨȦP00H+{zg֒&gfZTId*kNt4m~ۃ7xKPw-EvATеj_ʦiK pl+lbp < \m4r. Sc>?EERk\Ulw/Vc2ZPd90OI0/W0r?[ս1X QWC<͕0" 0V "˲)$HBÐ^ǰ5@lZ0ǴIݿ`%E ܸ|"fz9 !6g2-(^zht3Y[oܞČZ_ 5c2*EL C5Bz|vzޏWF*Y'vУJu3> Bʕip|hfpyĽ0kPڞUs:BcP@ZR|߸8a[ET"pbs$%x'9 ˕}_2!1N\`\d{SpjNl 4)|O1HW@yB+^-.xBi]u—YQ^"36;IF%oXtw"],+4^E _f K1@(I"Z|{z_!?ӱv ŁmPM'ޯ-La(b4sL^,f`a(4>"׹cEuķ`ݥBoDT ?)c-PqB/bX~gDՈPs= .{̘'T.G,3lk-4xyo]D2Vnpyd)eU`JxφoMglwzx2o!=G]N P09 \pn(hϓ`N.){]3 8V?b$:ntJNޛB+aÛ~p ~u9B6<{YB׌Eĭ,\ uIn:ęRw*Eq@;`_rca>M^̸ϊp`y}h3/k (ATL_mWmrI><3^1[jЬVR17Vi1Y$mF=l;fY;b?G8}VF< ]+![,i ?s~RMNt K* *s8FSGr%,9N5*wYwOf;s3ツ|X@Ysfs^Tԕ wVb>'8,.\lPgojd+dE#-R is+270n7-&o!}s[+ Os:e@YAY%DHJ NtsF yTh:T[Iv ϕ_VekS йxdP >^*]K0EA17MfSHKEi}jrF+_^QoꮫsD]\VGq;v8!{^Bj ϗ7).]BљHYT]>!%ex OޗKk,D9rHx`ʻ_Z9=zT|w֝F^1qx47$o#9Ԋ>+(n9K7-z%p ;˓2Hq- r* )r7{& U@f 2Sj'Rp!|z2({1K;`>BjP^s၀teI1~]S$WX%[A Zr*e0B^b}։CXͲ$Q) M|-5~vمƍ L\@':E{U-B ਢ8w6ǰM}X}GUD ibzxn !}|\|Jh%Sv; ňslŭdpf {-oyo*:Z=elQCJBK8 ?UI#GP@?x[_A$ K8rYFvjo{r=.y.<= vhfg@#)8,NxQ Wc_Ihs-6T^x*<ɤQ@%sJ=76r }jJ9"a7I Zz"KL1w< txdv^. (d 7 'f kvX79q-o6K "l#b8J6x9fw)f(fM>Nkx$>}n1,˺MM>=tl؂6GiD5*f _FÉKw:` SN ZyJcIwEi/7J5C[V'*paj!x<8dޙEkRrAGF*kyGHU~16||_xVu*ɴg[V'sݷόmg yEx:Sx69g[̈́M"G}Z3Hkq̕lպIngN/rڛ S{anImdvU2>nZڝ K,WQkzƇj8zr>S) Myۏ4\,~38Ш} _l|2> W-"/Ы6)ЁH8O6Tnt %(i#Y η0 Y|"a5I> "ҹ.u:ɮ%lev:XoQ>5J)6([ DM} d5m<\ԝoTlb+#Ҝk8 E)Tn)8ЬZo[!؝z}N]ʁ".v]LP4pU^-\. 2p)3^+t TrU,OUL`aG.]8n_a90F Њ ){ѭ8f85y2㪲XY??yKQ,r4He޵3Jn,Z dFo~?8` ]΂XMPɪWH 2'ɺ,oH4TMYAHa[~RΧ0`p3up4m;j"i?\smJ#tн#9'xvf?pʶ7^BTu[] + lrdQ\EdNV3q?', k*3ҳb!S;U =R~iaA$62/an)ś3rnx&KѭDYGi`YfFLh8iݍo|a~fLː4}Cmd>6=5}W^r.WzC.#b?ln6b8*0MFB ``r]ay+|mCgS1(@-v5{6Sj'֏}԰$ly@ERh#mPfh>>yֆwlYb;,uFȰ |LK:ޭEP\ # iAi ukƭ]LVVͨ t-!fH5H}x=}F+y>[i1^"QQ1 ^uSuTcC؃¯!fuGi_}'UI[mCfiWąV@(ěяX3h#ejY3.,֟o] -Jc7OM;@1%_[4mp@|ZB Hj 36RJ.36[j;q&ܬ8@e}S\ N kObGv6yM2؂M%:Hn}[-5)h:lAPS}f&)ۡ2%^/tNEtVA5bjA&z hAk c#xga(v$b]mzCňE1)*A4NjL` ]@ng-7͉C<glPsWn@XÝJ= ( %D_y*Fu|:/R3Z8k$^?n[,&[/_pwhA8[0%$1!/QZhlyd+;=MBPO2сQmq7U 0]an23D:Y "K{Gv+ <[v:I zC :5{zy@eBj%%@UP6Q ~6rQ?{#|4g0& kT2.\ 3'>mHpsށp}kCpsקLxt /2}I$AOذn^~dI]XvR!c5\ iԲ/,(Ƭo#aJm,Q9ۃEᯍ4\׎$za_ Ɔ~iRD+u5M[>?(Q։0kTO,.첏<_aBi{Ql/f'DMvtMꥶڤOdxm||!*&/ӔU}(4/dQ ~]zFg°EpY MN k]tb7 ne7 HW˷ ~r#UX&-y+dggy䀈#Ӣ.G ]L{cW/c/x8+(PppD3_z{  %ʸJ')Ukjƶ&Ϛ}I$۵[ gjz5ʾf,}D9dk 7 ].rC6XHsŠ-oGWvvЋjR"-?nLGJa\#n"C__/5}ծgEr&Ln:u7!˾c,jTL`dpv;:b_DqR(4قLF i:#ڛWpks.yR!iq?[W(~Aq q{*x OO8gW3s )'MY7Z'*ep+FţggWe2/irAq< S/5Ͱwe~bb6 Ċ#줇&nO!ZvTCp4]DŽoīn~և}Vr̮VwD׉gF\9 iئ8 c/es~;!0'6esZt()6Ҍ^2?(p6:lYߒpg Z̈́fyESRW2As<60q7x6 Qu#=UJ' 31^q>|\D}ư~@vI|ްa6*K1 QCM3 ϯAy9k_6&Q,uk<#Ihi].fִLaCL7/.=,tHP+ ^v'_ҟjW"BG7A2MI&G ("Y1ïRLD;QpHڠ!LsAޡ%8̐N2p*FEh'OcdOwP9G4QOD5 =iGx#}Ԍ E^΄b b#Q_esxVcMP?7z〹$]5Vz/;<"Znaж*(+p^2[gt;|ңK%%m 7pp/L;3LS[l#P{,Vť܇d h:\3ZNrIyjϪħVDrJ:( $ӫO A2d k覒(P@aTDȮcLCnsOjsW:>)x}Z/lc(eSKO/UMȮh(OR3IG|iǚ#7=&|&} Hh8whw3cWLЧ'RdxO]/v#3>UAgTlenq[UqHۙO$Ϝs"Otw<㍼HGƐg[BGAi:YE %C*qJ4Uɏ'gDHUUHpt~տ8 r4`SU,^L tG5x;SC]jy3z=tGGWQ] 0U):T3]4[HilμKU_807^,p'8 ںwτHk;B'&QUHV̮8d07jh~d_lNeMFys3F\Yۀ׃"NZb^ƈ/Vظʀ5ӑ ǡa8s/F xA7U \a6-;f 12[j y&t?;Јؤ#^L Zɚ .jdQwpNd1w\)~^B8ǃ*c(Jzx >2(AKvBkbS7#`@$=FE {)6_Ps$qXg\Mн,&64!}.8emʆ4rԱfKjwsԕ4lPj_0Ke-%ә~| `̦B/[l\ l-UF?$*%wZ2ҏVņ^S<3.TáLrld;RBxi/+g9cِgjLc /g`< %(:5ljƲtM?. &F\G"%X<1BIxi3C3gݚ<" M`>~UT~ V %j${b[95q\Ę X^[c:V(Xe,cP@q?ibpdtb' ѵn^FoRT'4@GanR_'*&fnAY+`y30 8euY9IЀfjk&bN//WFn{YDIPpN6+93Di:V< .hAfL#pyl"g+'ߜudsG);*֐ב\b qŰ(mΠRkha"@.~j؁C`Š^[Q4C}rdn665"D7J 6蹯8,<Η3Uq߰t]݌oj!*%.TZzA$f8_7Jr S&&jK%Ei|;E[]>9:fPhWS Oc<^\3f,Ҍ旎3[*OW0[}٤2}CRUxSEXWcw,|.X۶L`\t{IO7r;f Ʊb˹ },RsPpەA%ك+tH'е](#̊7ڂ~̺WA0Yؒ]\)VR+BMY=:Qфb7 p(ٴdBaz R|乇7js'c!fi'jNmp82pMH˂FT_܉J%ϰ|.@RxkDU5tZڋ A5 8̲Y}Q InȢy/^5 7_}7߽tB XA\e?&^Q8|>jF)ɦ{q[~.{>ZG`SJݱe\>,ˠ_խeC/Kng %FG@L (yJBSNdG~cUyrBd_4+Fx0j:kyȜp )*},Pdi/ZB ` wZ/l%N}]ϱ}WʱN@')3bˇ#7ԁNe9V$%\]PV 9T5Ym%d ?8~)V U-/S=ꍄRHinW5ɫ=ƓpgV^kG32%7xcMcl/q(Ka;euIC@ {qJdi2NÞZ S%yo̘q]yGI =Ii6K?LY2^K10v.6oZOtޠ:)AU~gqҨ%@sjeIՂ0; AgAL8`ztM[9ߣCm6Ѡ`4y'(œn- -"_]^/\W,AwU6sろ26."O=9[8>n#ȭ*.p aSJv\\E-p;ΈG˶h}f# l ,1KYWŰ(PрF~Ia/zƷ-Lq!3](\T`Qcw5a7Oűe>3@n K)Xa$%KeORP"Y?'1nޯ:XOraF][]eWY YO'KRĨϜ/^TVl! ",UO[/=~r‚˟0ˁlrߞ-S BܷFmxɜm2LREA8f Ȍnƍ*>rbخ0,ȳ Bˉ6(Y/z3imbyr7b İ#|ynUgN(±"= \޷B}wk.h+M?⾹00Pf ;ںb_Q9k owEVE6ed0u/U)I8+yʺqٕСrTrs xfjlibcl~i 6O1tP36|WW: #+}@|Up!!qA\!⫞e7<=Tz#F >gkJ:=F+t?리uYbC 2rm{KCv҉LWXL'℡*Ⱘ] K\WupֱafKʍO[!DYd b&&C4,F|2 4EךfBRC“SO}ڣX$oeEZN~jenUG^<Ĕ4[5'Qvc*yr /W9;~YMK~ %:4Il)͊'8ύXXd8EqPq?KF]DChJ൷Š7r|#/`Ū8P9% )u(r&KrABٱְM%vǪ >5Fûw\!{Lw(UGMƠߠ|6+5f'#cB.6-ED 92D)Gyp#´ӞKrfB0%Gn 7Kv(` ߓF9sZs3n>)B>;"Cevpg )KO^ us@GImjC:K cAoJ>Nl%[B<"1C0CEnŚ iRٲZcLfX`_a`sT-.ə}r#-HLIs}yBsG1Fv=KR!?`;E(]?AA*~X[Ʉ3=gc YK+}jciSry.6&'$qz "SDd}.ʿ@À~]03_ /og/6|`/Z20'DX1 9V.7ƃ=d5 mҸ'9K4% 7L5֮YJA`wS3^{62y3?߽E"P>hX4hVַv\ œs8kq#+E1Gep]AIZ4pf M:7ɞ0TjsB-\cC:U'_pZ9]:He$QE[C xCif>}OuKs\mj1G *rےc\p6*^7Q,4.*,u~]]gr= _>V؟6zsk_s3;;خ.1/13ǑaRefo$+}ϊ[.ڏ/)B'@<'F-ݮv6uw ֠E0"MZ~{;abnuL4}#`$FŢ]25xFe\#aCRןnxYLcXJҤbcŐ2/U!1رzŋkE*(tw>>k80l- ;oN7K="ѥWGvL{E㮟PGY#?\C nЩdӬF 5K8B@6/ȹ#/0=P%Eq[@_G;|o44p!%oSf.OEhc7X-ۯj ]D)_ٌWXL <_i#0geIS;5έ,rE=Dug[ Ob/?}QLdDޛzd-4\y&P[~g{BT5GHr&n#sQ43F]O9yPk1Y@XƺtTxLֻO>#]<"`Kb+ s"@Hܵ>GBM?;<*aC-]>%)Y1৙1&Ls@Rz19%θPK8Z=.pw)g/P{s# yuUh̡H̃MעY[Mbei jd-D뫌8SM3 D)pFe_Ȫ,cvqPA NnH0HG4}$G߫EjsZp(U㴀oY(bʇ0G1OB.p\M=n xPnçE)? , $~#teaסD@[%^;U \B!HB(Z ~ 8KHwG? dWRH&'"-.V]h0Awr-)+st $j>D pFilȓF҉cWrD8EU,`*:a_3Tϴ8h]`xϚ"T0dzH#zdS]|a0(ɝ*'ehZ ," »Iiߊ{mMU Mcf:YYݷ:I{y!#1E֔`x}6Ԃ:So_cBu{t0l+dDV5`u|u,MwN)ji73 EyG!\Ո V 7orqiiZ3`Ô$sa'Kt#(x8*LVjZ"}59ٰ]Wto . O+^v̠IBǴ"=3aboJH$9e4wJ]Wj%A6G޾x6XkES 3A:Oc<*=zSg9x|MYCPjv4WD(.2eL 8I!_xM-#ZpMa`zfKQg̼+$ɑb28cEbh7q&ށo/ifq\ԉ1%]n9 Hw'@|a\TkIR$Tv<_Jv`AU%5\*T\ki%w⁣M%(\ʮ:WXPQ'j83:HQG- qfZ :[R^9zM=OaLaPmK@v*vԇuA1ܧއ@0) N?oDž`KWdKdC9o՗'`s^7hHҐ6M?MDjNf|)@ [Δu/#p\Q(˩ﱺC8X<ު6-[#5tӃXn urC1 [Q!Tw_+s} '{x˝Q3S+ տ͈>5Y#I`9j8Y&)yU 9Kz~){\P4xABtVvږ%#ْ>9rӒI.;$7B`tzZ08 " N0"R R湾JZΝZ09b2?YԖ*`Wm/Г%8` "'g`ҬI2\S__ 햱7۰ ۍ_O {CK@LD DOpc@M$=U+ aW7Nң I7% /9ƫ,ol.;o H/ߒjY<[@#Z%v0T"PHz'9c& B|ZkJ~9U xU9*0+J6֒sIx/ Y|6maiuE oYnh2k4tGѮg w< mdVZ>uZB a?n{T/](4=o1\qrmvZXر[Ԧ9#VAa6No铍duW) Dfۧ?3gxJxIӛSG~`.Z4m BĤQ]OIXOLLA)qBbpQu_hP>?Gzn7d|$j#42h1hɹQ;K[P.KoO(FJ-Vp9A$tYSiiV(uN6n-"a۴e*@#R\0d/ |m6N(BgLܗ$9k8KXMcW_U`%jU O ZFㄆS)'Myӫ W}ɝ{Ԧ5'bcJvxB@:Nl5}=`ENwD88 FԸ@N_ܼWFH˨VU_}k8WpJDVRZ·3GPظ1٤2WpgKWɑE 9Kꁈ'+)RI vdž~XF@lr\@ PfĬh]K4ץ!<  SxAPp !M14focfH0"@ 44uf o',0]ܤs^إh`g<'D0+%IRc;ξnK,Έ^C /iuVxMn|vbUŊ+pw/<,ޘ->ɔ1W]n!ot?9 "_4NK5_# 5~LϤTofC=YI4#Ú+3q!?&Ψ p_Vψd1NBMI?dNGd;8몾YY]uZ9+h~N#'8prs+O4 ydAMD | y7}Gop|-l0V\0r 4z\+7HɑtcMBR(+>5-:w| Bb)z[/4^~[>Lgz<^4Mkzt;$b~Zw2r^8tI퀰Wz2 ݍ@5/NYF#ـsD/)T\8Ā_$cPx.:20gFg=%Z}ur+C`!k5S}n[pc`IQH".덮25亂I.P9J >`rk|YXgvDiPw .(nX`Fst<p.Zp TL wSXr9r(gT ;;[>{[1< oYIVl.^3mAuqS(^u")+= j,ݟh]b6A"vػC:3'WƹŒڡ'XX-J"dW¦T9I?MM ]ŶWw7x]g8f'#6؊J?rH|)܈-9?]-$cA'.N~G$~$ Y+soL'e#ϲ'@2?l-䜍.Cg oKYJ@ Rx3(]%!>FZI_ufF)=)DzFI+ hcHx HDKjnzldX4[ Gjәqqx?"P."Ca[BMs\Ut^S3]XN1,y_].̶ShL؉/шzGWa*Eesyuݛ~ͩU!1g]cC;aɻ]j2\4檈'K:0f Ԥ.JY3e?C.ßY1MP ;Ax+rvRM#7Jakd\pkK8gQJY ]JP=YvuUKn?56'6:;ej~̕ _kn {. [&'lB<17w| `vѻ W34@l?Qc)9fZC'˚#TP]-@lo@,f01ȡ^WUXG9L:pr Gu]ѣ=Π/!"T3*g㴡@+{*WBdai0RndC.Q"@adq/ SX K8&lޥ. H9vo|rHIarvIgʥv0d 10IOv@Cq7RMg=S^NhzT-$6S&`VVN#f0WDy=e*$y?F 4[:D{k^zY&&i\i~~t -Z/P5SQ(E`]W萉VYE.XqN$.+1G\KK䴾}j?"`(2aM,LS8@glʱՈjOu.z:G/t l5 &לÍe u4`Զ]Q]_A] e!I h0J: -r@/6QovD^i  F޺Cu3ZE],Y.TW_!GYo&)Bp䳸۞6J@@٫wҔ?_{*=Y肋F6k_g*_ qէ0SX;4+dwHW Gv`7h>A-"2uXp\X)p-8DV~Ah KbzRrqhd iܐq^4u [ k2b)B^!hK/]QfG#O滱R~S)Ύ.M 1Iޛ$SDhj`,6|cV̂+oZ=nc:QwR74`damG]nTe Y"e`D>`bM- #)`zcy|b-p]Gl GߜJR%6t=V^D>ƕ_NX$][,]%'BX٩&Nǖސ|oqKzTSMקiVVaKgQ${ܝ.T(dʳEx᝘[SF+5}"Ɖ3zٳcwd)B^pVUl/T/Aו)2#|Ţw00w՜Sۯg:'8E_E0+K'~|R@KIzߤ M`ꎅ ArdJ$jWτr=N锵>s/%[yRD24ed.T%tNjIGMә1+̙lXQeAv2jf E$ CFzڨc(BL A*3UP & Zʪ}4+v;ox=أ:z6$B1Cd~n̿ ԐU)fMG"@4himvۈ"'ZUF#zMF^qD"t\rȢnOBCF3_vE-7'!<ԺGT $s ۊh75'7:̊0S.JrsO]ly- 5].5.Jw3lZ3tDgF,7{R\mK-'\W!,#NӃN==|-Dk<Djj B%aJ6YuE&>"(hTV_Nc2 ],~k杌{-cEa# iv4ٯopG aqRtR5gHu5\^ =*m).=n`ٻIHM?*b7]JB?'jzs=<NX׬~)AcaSt!BfHىG'&8P>q%*sGګPby圜<&|7apM̨D*@q^KFtdD[z>L ˎW}Ӽ裐7 1a"T:j1VSG}4WUN_/G&^wuL>=3H9sɣy~oDk@ܺR кmq Wyh&(%t!2XS&AC8&ɄLyv4JMZm*E {YxF~FVν]&* {0P%I qA;,-wuqm0rPlx;=|({t Uv8)ޯ3;nT욭}r9ȕz@ ѷHחgā]:⨜!]8z吔Q|b"o04L*bǍbC G AٱϙWkqJه.NMcɗbf{aTY.nIXXX%5 p 8('Rf`x֝t .Q8{dA#%Siq߶Qr0A9ւׇQ dq (IwRG4'ّ0C9v'Wq 9\ccAvz_`6fP".ٖ¥kGZ̓jN cY}ׅຉ=!^5cHu8@z2Uώ C>E3π,%Kj,(L啽s8]!Mx}]TuB\1j[~^7.] _ĕj Nt;4~ p:Y1{[)#8 ϕ$gNJU`R:y(0H0=cq;guرbѐ`;4h*Dk;,եCy+JM[ G x#TU:nPmZB |*R{qj60 ]ދlpqlT={E^ c28el #Vq^LrŃW6ϸhK@31f@5j'c%yWa)^ 8~k@DzqAN }~h^ x8;t\ Ұ]:ۀy/5~= ~1ɴD:04Jn6LT) 焍z&k%ʊOJiqXk'.9(ʶr_i^fB=?FMQ_ 8LZv,l_\LdN80*ƽfi|ե2p|$L~մkˋ| Fa.?APlMޤ`Y7{oh=Yf"4n"ܘ9R0I&ևJM&0n'/;AlY> > MĽ>fo߯:q0zϙغ#,'OxLc_r"as똰&l`<#'{^=%\#a9uoT}t:6k3ʀeQDċ;M:g_ގ-y,hPZj7] uf|z02mjl0Y-f.2f#0TIh_+{/LJK~.`%~&o]=)H wc_$dzOtmJ2>jJ_4,-WcvEݯj +㜻*@9 o|[#BJLg 4ʹw35=? Wh}.~sFuqWp%3BJ X+h^kꡣlkGRbu- t#8VPJ.L?24Z#b8:*qKlkM"\2HKqxN;[cڞki.S`ߪ+Y0=ofYsVye5~6چ!=ݛa LJrhŘ+dbe{(Ɇ$P1EVϦ-+yoyч9jRk̨הvMOYgAT[&E(e0U2FX]NJ3M}P3Wםj&/WܝЂ̐5f][VƷ"һVЄ@+q #W(TN l$dqRgBjsk+VrxkFyj"Hz9- XhU4 Ec9g;މ7|X|ԪHI!w(5]]CM* tEHw6 1ʈ\CK~GZ9 .z"  %HP㹧T~a4zdO, RB!Ebs4 Y~F ,ap;]}qSJ\i`Vo43r(-^$vm:[[ᬍWaҲIZ0'>xW=bq7L;W3%2UM+Ňɋ!'`ߌLuP X?[Z18 /i;`]UY"F0P J #^Gx&smk`|ٸYVA" 757F8G8)<7TszhX󓉥P/Ʈ QM#`"H:@k{*^::4}٪YRhf9ݲaT 9AbDO l_Ց?:dp[+*gwSMuͳsL[8Γ]? ڴ`"4]Vsv$eXJG!9j[iMR)jHa  2[9&33їxpԡQ|:pE.>nOYR8/d \.(Tgscb_.˦Rg18amVdSpQ3(&pЙg͊͏H]#s,|i@kp*l{y(Ia6.!ڐyJwnY;Y*LV\v!ecSSr0ȧQ%A#Kښ-D?i]Wf~~W`N5IL|"z/喤R7yjQw3ΟE`KP0sHU JԪ@o4Ba{~nX=e0C̸q{ ,@2֘e I$ɐ.Ju7f¿-}Ąs"n~~/Oxv#{+e+8HF,=^2NZ Aҥ#S>j6m1JclH3<#2P콞e]7ޫX[?8+3Va6'JOQrZ0lS\`yQǀ3%  2Y7i#^lgn| _E6TT 8<33r.H*j"Kk(NȘmGMZ4LnuM p6sS'褢js8D7yKp;e}S`;b͐ȧ9炈N|"]fg iu!+:T bpz]^eOR̀cG : h8& B?蜩@g"WvO^bOcƍHj5SDͱ.c7 t6D\!p VG:k`_[+YA|_;]!rFb>8U} ģ`Z['Z 's+e=*Є~ԯ LhI>Zl3HI sE[ 5EV 1MĄQBlDE0{o`^3Fw̘Df郷.O-⭒)C(84 D|fXz+4vw 0L $6ܗ?-|\i`4,p{v;J!2܏'H@KE^.oĞ-bM7*iq.ZN$s\[ {vO~gU˰!GxZ 3UN{i1UCt!rn6O !joՉ4^.rT Cgg9(C_<"R 0$lDtX^RNRNN a%HLz!'f-KCFY+5TeED/DE9 (W9^lKњ!<řF ?+$5:_un|홁ؚj<[ e5YgJ^A~pk.LH@:[j^BT}'V#&9 cVj>bD9HYOvq2|[ 1 #W^ p$"/nltی6Euy>EN~jו)SbdPT۞h*%iLrArv7d?l9WY}tޢ<Π-: 5C =v Z1uv$=c@K鶨K G@.yd)'RI_.mh\ԍ' \}7… MyV_Z~Gi,y4̨pq"V;ر2I[k @o$6pݼ2ۊu ID%)cղD˿,S$N1C_3dAW3?`wXoGn=_luMA,x\~зAmYiQqA^b/n #m $HJS?U5$ Bn(|5jW Dz gIrGNx,wH9:yM({4nDcNQG~%'$NȉE]xZm@/O~@ҹ@jEJłԜd#n/WdzJ)UL"4naЀOvK=5-~h嵛?ģ7yiP_@xt?o<4j2~iHyi~FP<wK]%Kdza90 \\;q-J gњݶ9W@tLTpwxi :% 1B}$|@0)(VAhhɻJ@Rk\W=5, g~<-H,Ŀȇumy LecMUo|Mb*Ir:=]a[7fZ8F}'nLj׼(a+-0Jl!>-1Q%]ěqz>>.ƚu/^d6cޝ! $K$gF֞u)Vl,Be{vO0%%뿿[i?o@LX}hpII1V#tTΰ4?kjO:{ckH+menLR0L'*$Ti= 6aߗVg07[?DA3hzve`EԳm_9~K@ -^ZD3xQ9דb#͵N֓Ž=0vSo~.+67R3{i{hZq<;-r1wKH[}IDl1Mq9 3"$t կm9Zy+1`! !3Am] AFZluaXRK>mm+q1YYZhTd%Ѳ1m<(# m _1\ڈuFİ 9 qW [K ˓cIQ Qev]EwLq)/ɳ gtÊ3} 0v$XgJ.58K^{/P x_D-1y,r9&{@ig~?{ xc``V:Ibz3oy`slƌT1&ijx͇tHr/K$u?L;MJ$: V`SF*ݲ$%cK^ԝR׺A30'uv[?T4 89bc]cYz#yЧ[WgMEX7tXpMA q#:i WG_,߈̉*&׭B_mmW௾U=h6E<2XϤ56QíTc8zׯ& /K|$Ce=U-C&bf6L)G0Т=e6Ԝ-L-˛X6$OAr=[8O=95'偟n84%dUhq&aD499`"9pX=e ]4@E&N ZwM $ꃐ\Hr.~]Zs VcM( -%>E-'^6_ bk P\i$UE%F9.h*H[]Z$T9}xz ?5v扽^Z> 28_&_g>8К֥C`fSAGX8D9ֳ(GKo!`)Ny:Ju3}AV xdH0]x)TrbW Ӎc$؀RMnnWMlѸF==&\ d(L]qI7YK&ݭWIPkJj:o{ࣵp߳t:a#G[LR(PR%踈WÚMDh)0x..KH[s3fEuײ<--t y< `d'!_Y 2.Jnldv)VDe_I$'~eM+'lLбhb{c^SQbN(VN1r8@-RAJR4d4֔XAO\ZgE#О|i9+ZXp}߅`$? V';k^UrQ 5RS{{s-6RGXSԟ}q=%GFR2L†XЍjX6=Uz=QP/l\ZeBZCsHx͚170,7Wи5aY?FITTw_fFJ7S;2RVFH_monMYާ qvr7.2 <"!f(rg<RsrpXqm  qucYKW7 1&ܘͼ#ixz1;J|N=kƲ:0En$ )V#-$HHU|>߄)aH *x2tm)Pi+)93ꋛ ODEU;ݖEJ^4'?,6ڀ]BdzjTKڧ[/AndQT\h7!v7}iZO&dfgni'dxqtitƘPglGUQiݽV CG̺g x"kP66pPFqo[g-vɑ'\dm!P*X Ԙ5&B|a&̬)jG}ϳq5o8vyfwWbjcBiEiȴ= ' fbCB022'bJ|ڙS!LaGw/_.k<1XL䤖SQ6!^C ޒۃZIO(6s\Y.N8<1؋֣Ï>Yk֫ q4uU|P~zk)>Ki -N*nwPs"Mj `EY 4w1;fnFw8LCPÙ9XSHc]_ ,-:ׄ:X&94L:HUp)g7뒃1>u*Dcť)c{{0I 23nBBhvgܾx ZX:RP!_[6Ž\ s ifi6gU+ߜgJ';&2Ǫzzu IO-DK ˓.h>4$ݣ)'WgoC1E_{}d9,80QVCvQ&D]e_ <*:ŏ*fX ;l\!9CaC96DCp5AtQoESߗ:QĈߌ|#$ڃ-kzHΣXm_cLjILuWd Tu1==fhM}6h&].HIşZCz^Us1A,fW@-LF1ic[5f<\mtA)OHF8(ܨ(LXɴH_'4f +(N=[2)D.nIzA[8}ϗS>(1 ZSL|бahiVsCGD,LXT k{o*yVW:qR{Q*+x1M+;8!KEꣅ{db8,7(9q15uMckp`ݲuW}5r '.]MC XʺZ3Ţse>RC]#=hm-#o9lRC4ѱPP_Y{‰Ս?,&I@r :]gd\$:F(&Ī狆Bͼ]E(lR5Cg!Ifg.`I!٪4nKD7)7Յ7 BHS'^ ֙h}rź+< `kY>o#?hƯYL%3 :ުƯAeڋ~22]-zajNhW jD[)-?e%bF2Al7c]2\[c0v׿`NN mxQzs}sv4Yb +;qe,1@{Iwn(VԬMt˃ 馩eG8'(M ?7TY"K1j46z~֚ÿ.fe^i\ pѫoe bb9ڴ+FVgb}P0͂)Z]m 7b}(D^Z'V" m FQ?{!߯u҆z~=u/k-W9Z,*D'1h30 ?ُ$5bS-R#"&]=?~##_ )/&)nÍԛtW?WQ^J%sΓE;/QXHrgLhO{JYkg,ȏG,}fP^[5 g"riS~#/]JWQA؛&*LϭF#GJ`}. L =NgjϮw^Wˀ\&R21(ۿ]{Tɫbi*cޗdVtǶ:…0#D#Hw_>;j@)&7oYUH؃ 2oP07Zf9M`cZ2k\uW1_"@G/(,J#/@)~)ʪUfD7j:!5|7j91M\:K!=5җoELX;tFr C$G~HAϭKlŕKmvsuhQ5*'x"YHt3!P&uXNE !*b0ǁU~k' mo<ڂ:\zgpGGnJ[Q!+T4-@&P 6_b%Ih4]URG/oUcmF*Qc$}@>z:ٮ<]9*Q.f0앆u.NHͿ1."iP>v6u/ꘇ._ woy00X+X)gd~07ae)&b\rj?ݩ%<LQxע f 6j"Nw"=F-kat"/V8Tc. 5bsJD[A,ȐbJWXeQ+@b `#Mg .I 脀5R ƪ=6 9zKskxe''RՅOcpܵI?wȍJu ,3L})%Srfhx4}S$MZ[Ã_KRˋL|`{EkKS$Bp@2D= Mk5W=U[[?J-Szb*IYzטI 4۔8]آMS0)iJLHC5Z E)?ecR3t#go`F`VJAk1eu,B=h3'^PXSZx6_1lTԑtA-friTUk:Sۑf9 q4ٛq Red*UBti2,c<\cB'oPN>aܾR+_X>ɧzyHK*+_eu\@- \yy;{&GEJQ|0.d8f33sMhEUcn:apR˭,]|Pԙ)ف! b( _wu{5<j!ў5B{l9(f=d\m֞0P$ 976cpwCVM+8Z@# ꌝg.:6+%L b;fv|={:a\?יv* |G>WPXc\Z'\^]JRhxQ#8Oͦ*\t._>jmt]711/RCgkAӭL 1d#, j,嘡K-K/!KL\-6XXW{g#*DodȶnQG._t07EDPp@@-=*&E[o-!`E]R3ڳsl+JR'GԩK8PqTC.A@)爏AB-1lP)~i=dz: 3e'.\xWuioP+lGK^Nf:=g*T5?cuj 芬>~Hշ=e֒ծ2^d//LTVBQ枟+1yI}E G"j"kط f솋 Ue6!B~ K#Z ]W"|邰fZ8[B .2~ U/G~4z #(辖{'/bn_'ў|EUetpqvb|H2dQ<[j jZSt7k4) G P8XoB \s@X&q!lJP qbTϒ7΂nEuSh٨ ~Љ(}?567hf&s?e}bņOHpRݠ5h>E`{j ]v[ɩD>P}j(qQТ2l-Me&A)33"y /<ԉkuQLk؛w- *1YÌ&5UcęWxv# Ig {DNbCEb= a5@R&_讫7`=K;n=ZSj6YMrԿs!4 #wD-_xY4Ld ̠"/ѤN,G $_^`2)ϲWh1y-!_b(2/ZƈAOA\7f&&wPJϊ3;#E&lx -@72ꗣ~C窲6sTŸz,.#U^;=;'o.zz>)괚Ֆi.B =oŌӹW`9|j( $hf8Ņ3&hBĂl fciIN[.mdo^Sh}{Y)9]ޙ$|0a\:̤b^hƠ_,B' :zy(υXuu(B @K$J mCg(i?HƬa~l<8qD}T5Fktչ\e=ذD\ӫX!4j LU>JC = s(`;g nI5# j9"׮$G^fW 'SS5+CUUb@$F:7֨U}I6AGQ7 S4B3Li~ejb.G8^Oebbw gہ#oQٽ)F 4nvqd@O@ql~\68# :I qŻHS8X{m,/Q*E~B`;kgRL5,A,no-Qلg 20*|c¤!oJg#FK?{;kF}xV-p`g^G"My8ֿ\~.>!5Ԟx֪$cjex9^axo9r1ӼOdcЇBHs1iC]s}A,y9Ø5\j&JDZG? X[V]~[.s,5)7b<,XnF(u+]ܵeBƨjƹu=e+b&W43S2+k/Mlq0Gb70n 1 a7&%pL].oF]߻KQR={}Q(ot PÛtvS`&o 0ort@|,-ߣhnLj;򉹴”l}~ y #i_pU^ݢ$TWu uk=P2^gXK c5,8qYf|k6X߁N`U)T~$ޜj SlOT~weE+aQƁ9&So_`%ޑ}*aE3O2(ި(u!|F\ 8wRfDTZ}8qCӆE%(>=?rFQ z6IE/_ >͞hߵXQ]o HLr[sЌl_GнE ]֊ԳV54`ytuM6n5PP 'g 9&p} N$ĮfcYhdbfTёqm_BN8޺.UE ^|$K,0" &Tڬ [[L&>BR2_tg VDd :iû FzZp6k_}w"Tbaɂ:qPG- Q2uٗKۓh%GCk?VVR9=9>.t{Fp@wT~f{jtزv#f'E>Z,rܡY͙¹h =9󽋥,>30y+T[?pG= '7dq)aW5qϨS|J34i%Ҩ2ԋO%M} JΘHσb̞VIz3`v[\xyJٿ)qf"'>:vqIvM2-b%苲4P2!+fv"1g&Y=;f"mmX5Kucl㥏R=G755ᆙ; 6؉3u_)r dIp8W$?b1˲ (\T?FosK !MrvlQoeIY '&O'{9=17ڇ!L"BJI4A mIfBַ{sRW1(\h" xUH7 z4 8Wȥ)D=+RJ>KxUs|RDhf HJ-.>lgfmUU@B.õAA 5vt2 `E boʂ3{8î.8J gMήy)g#&WJbRx_k;O.m팱P5nZ^6Xdl?*a#KӓyzkP7ybݦ qc>8r L<ݫ}~OئY}"W\ .գ:V*0lܙRo٠H%F i7tTۣi 6){|+/˪c!xƒQRmV!XPȞhnI+M}n7-j/-m΢ULK=Z\f-Auث_tGB4z 7Mf$|]'Tȗ,jCoh| \áڏ@D8YkY l^[ ]yQva d?~@٢j|Ycis\p7P/taNe\aJ_ß;v9z:Kvgsu+<NnSzyzKz) }8Cr}:9x߁Sڲ쁋rܡ оI6Qͼʽ\DGGs[]LTߛPf}? +h [5FmrDk WhVq.*l+qCp<ܓMijz6IAZ<5YetA 0FW_Aȩp hdTH$+)2k ` >lFF"D.ٖCnݞ9bUVY vN/yiC!QQ`F\fл64'5cz_oQ (:h+&SviـqС5ٿzG} [nZT8\i6ÄSBoDòUiw*31a..9iACD@m=A2/OX9-Wims-iHW<#I{/xa-f0T*qr>3]Wz.-!!y}TÔ9i ( 0t2As[y`,hF-? )PtWVj2Q3nSY.S81f!`"}.nRkOlh#BUpdXӿ4ாu5d)|Yh1#P Y>vt[ YRc`,3e40z8@`K [nļZ[";’괿l;MƟ( gf(JOL5#>.`( ϩE l`@}N>i4ywV/?P$lbԼ|D'WStlOR;Y1v3?ci7u޸f1S④ ^E[dX(c,ܤ셔]P9ފp+_QL8דB~.Z#DE /R =&Ҏ8ɨ tPI5(\7oX3RK۝\vWCsɗ;-/B^R)L⵶y)}[g(6{n4[~Č*gͧƇZe;gIy7+1+oh8P/m\qgbwTk6&gaU㸓M=6|=Ym`~[ՆC|E:i7qy+vlL.ZZlb ;*33^2,M  OHBJYr!>YSLc`ԑwTgeQ_'_2؈1bBp̒`eՙ YDxȣچs~Qռmtedۈ lqo}w ؅gijB J99Zw򊔁Wb“5 ~"~jZcئUu_⭀;kOŻ &)MZt BK90(Y(Υ8k;ixOfZ~?;"И(b{R s29s|y{)\'D)U[J/^ 3CdWG y9dZB_:8&nmaQE^>qa\4# Ggȴr%>G:9]2#>i|%:ɛ=lMN=cCҶ $طZ3 P>cw4^]L!y~ Cl=9uhxpj4'@mOT~ya!n?IVg)$:`k'`t`;Jg̾J%%THKe&;gxJ Ǻǡ H/S|N)E4* &@Tñ":Y·A%(^0o'pp~8kw\Ӡ'sJDd"Z6k70>_:U0A&1)s&.G۲X |Э Jg1i8~5n*h"Ml+Z"9a4`6[Zidvtlm$Z[hK@iR/t :E. aG"6l o5M$«[y_OU.a:BPY&52;l@oʛZGGƱЖă6|yϴL.'a/"{3bY~F~>Q[U m^: 291 V\}F:7'42P,lC#1Op^PMս",!H:1d3I "J Ѽ[3M>[E8 F3H(e6h6'=[u(5b-hOv7_HlȁԻkQ4kiD5äjNfD䪄l2,!%!)|~; 3'4{o]i#Gs\J%](6C: Qqx'C+eu9O:u , QM*.G(hu<t7fyKEhʩqć<otFsRo AWL^E3~e$o)7IG(7[ 8"4~sӜkr%hJ1`+]yN4fFR][h V/īX:T]xOho[yZ|sQw4f)!3ٷ5Z{ͤR7|50̡]uߩGk߿I] O13CyQKrtuAhD!JXĦt6u ܛJg]Uˌej#*Ht]89Wbּ.PRCl}ze(#/2z?jOFt=`q%3dHTmv/K$_aimՍk5k!AP^j ew#^qiI{?{7cHWmkPMѭS[ygd@ȆBN6eAqG6]Q , FѳD줢]‚MظM(pY>0b`_Jr5T+ )/T=B0slvܳUBBTˇ$Q'4ytix5ZH4л^9'UJ*E[A՚uC|#4L;n^7* 9gC8\ 0~:GAlGekJ?|Јt &bZze+7b ▍W$,>MGiB?P84Vk٣ĥw,\BzƠ4G@qw!LǤ='udmYs40C I jOgcQ1& R8dq'~cn09!E!~M )oI}U\!XֱDms9/zawҋE $"@l{[S!F{턨6)n V _mK'_QFz+]~_}hVl&[$H, 17Ƙ\6:(c;#E8>B!lP߹Jn,䓤HD˟I 6u{-MŖ I5wpOټIr0 &A^ܸPseD1I92 YVC Q@,p6Jȝ;E,L@ ;EK00DwUu\n6iZ,Εvӊ8m8ʀrpW"W 7r+Q'_ ]4E ܁#M}@@Ԁήܛ*D 6bxKF/{ Y3;xW/ 4kEj},&j2y~9bqA5AzBPxw>K邥eJ=|@B4 tK}w2ћpYlvi£7 Ӏ~ K>,p'cfv0k ӊw  }a8QzSM,VQt+$zUÄ=s(wXOƘm~!nN @%XKp:. ;f i:!kQu/"kͲKzo&<КrUWu?յ$pkQʔ*1/BMϭh΍$)_}P6){:))K _j'{$4٤j0-{YsΰfTflH"Z]8*(GtH\tʏ3۩mr ό{&T?WYD9ݝ?3P5YqRYޢs# r=9.iǙRqUrMBN)LlU ы(bAaᵊd`KT 4V87QT@Qٺy6x#\g]* yDvIpⶫϐPs`ŚoUBR%?ƕrwP1}q8⡔~;^+ɐQ.NٽsH7(֕3=x`g #AXW48qKt_0yr[zx.'evAD`~rM/' /<6T1B $ _|m3J m\5̾ mvWXV4 >/8!9=B_SEQv_FdLzTˊ4׎iuoD\kHnuaŻ:*̣̓[>d5>WT ad[hC| F1*a!f\dKJCT%I`0DGh ϡkql+Rj .vh[=r(=Mܑ4OX̥XV8tXi[Sk]0}_csQ?F7B%b5z g^]z-ߡ&e_n(ECA9ehCJKbz|b1yo종,Wͯ@nGQ'. G)vbUIp;&U5e04|mkQmW`ڍD2t4}Z䣽g/hFdB -MC]\*2tB(W#>zN?u" b0<5ER3)RM9.<|9gK`wt"cfTi.y-Q$V%bKÔOe a2S6n55Kѱ~@J[J.Y]RĬ3N{=Dygk_ ?H&fyr£\`oR$ s:8>.r 0U7S,qi(#p>,TZ,u6}~0Ot+q.H *z :P0l x~xU/ 1=ґYgHݗgA$dPW \7E cGl4mu3\ѫMJ(`< ;ŋ=wѮMƶn(P!y%R [U͔j!{ys6JD:(Ft C>\1o4X/BGb)y6A99IAZ7W޿εhL< $~ҪRIƱ~ϹHpSUUE۬-ZX0 =8WReU̺[?GuuP ճlՕ-&K_%Ә׋G|o+$cx7'eͯ|Oo5k#,6Tvm=49*;'3QHy?:Yx-.hp}O M#eD-6`g /j1]?N*lH21 g9mMUdN$V11!{!5ӧIkgg; AУ,xf'#|pVk\7cp'Q|5tvSmls>#Nhr8VN|RR^?$ٽ8Ռot% E~o.f{d+A(WH ^l>_Նa:T_ e4v Y')|kRGF84'JΘ>i& A)CiN~qHx lOs$-q) cA ayOy*_,@ F|-FlFk7'44U r0%g(%x p'Z3+:t3dxgg3m7> K/pwXq-4.l3&=A\ ~y7i]PMZ> AGovd+|УüqسD}$.4Fx׀uD}yL&XG 2.VdrwL1k\-R.\@bueW- U;K/iY yVVQ*vS!qiwcR6p,,P@.w#yV#@2Qz9\ZEƟg θCN +߬c ;|NwBGmTMm#vC/ Ԕ&bjY~7MIF,.E{ñ;~jX C${yFE:9i$9|d32.~lH590,* Dʓ} ?'tTW\yVy{/ 20[RQ)yROrmY +ȘO6ҖN<. =nʓOת^0A}qb/4K 2{by|@4P.<Q>uqe3E})C0Oe,yЄA4(!8+=/5ьx~t&ϯ P~eEbR8*|3o3µXKd+mv&)ŪtOplG]}顿_.ڰIQ%6 )Y{T iilޯȇy>Iu&:î]ƿb@~]2lDe%[D: n;-uTVbaev$ tJ36Mw..fϵ3'~w7GjvVyػ4q^]+فrJEg!(1NZugօ4Шr}ޘCTE J%kK,B.):%}Vs ,ʛİ̅(vvzLH!>IOLR*},cAW02j87A T> qt$N@y]| $}{W@遤:CU.V\ MIy 6< i2-"sbA{sCG*W^L?ߘƆM&3.L.isבvf,ltK2@ Q.%e'{n<9q+k]E݆l#|_B_4QaKLۢrd5fb yz4*m8.aVnI_/}h(>\] >&}u6|@*i#zÝ6Fi@4ݫ{T~P@lɒٟaP8-:ݥIZv}Y|i-iټ름On_jEK KCͤ2k5g#s&yi,gU4`[g|Ӝ"fWG!́nBݲ%-g?[sAL-JHkx$LUg}]z!<4E|$}>u(Bw{IɻD3(ϖՇ#]hNFX;NggBˬ;NzH-DY]]EEsҜal^gKէdcTyi3aӷsXKpJ׆#UvM伶SK2.nzOΑWqV]e5LM [XvHchmtjtAT/Ԙ?Kd_Ab.5U|v=7@0l3c;ж>Ze @i&ZmIuEf8w`#Tl$Y:ݛ8k]ژ[2ϸ44OZ0_|n@2D%Y5,Ku?d T]8$\ ɽG1:Zg9~ ^}/ܘdiY𞛔,peI\cP&rU Ń9JzcHtܖml%}@N'~(`&Ug~Vf y u ږ1+R=$>۴4N@$&3 3d*~W`Ĩ0. wUL{uWXkMod?)X|QB92 @"NHHe;pvπ`5Y0KO=ԪW:MEᅵPA׳I>ɦP3ocL^:~[OR4J T='@os8Q!)hҸ"oi+k>YU.mJav.q)XYycoF}oI}bQ4u 6>Xa%I4YҰHPؖ/ETT0sz_:O5تr(1 TDY܌t QcGTw**/!S@I!;`|„r {7t ?UZdW)Nm.B35a)3a c7$mW6 X6$Y'6 _=16'6;ਸNwQ6cVw n$]t[Cp} =E<}YKF>IsoMO%X}Bɽ&&^ B{$˔9\K=a7RۇVJ(~.͡QacG"uדMU4u4u mR5:,ī(ҴzJ^=.u6v*k𢘺2^[9mH N[}Ĕ?LْfX BfG҇5wNjX&{eLԥI )Î/8MWUݛeWo9尟di @ɣK`9_v t1N`+_*ke "QC5Vfe{:И^"GݵOԽG QfM8kZQ,9HDJ J5Z :2|L8qW8P-*ZNXR> Mı2ƕz>EO~6,|k!o".$'1gv{/ Sxք֙@ ?3eqK 4ܡ,2¿%(pME|t+T$r3ā35/b9AWP?_0[L <,8vBM,9 ͊~-lrlf7π+pL\W` 3$ R!s%R Pbۄv셀 .M`]㟣[}%_x((pDaX7]# V!HY8zVN1Rek3cPl]h Co$}8mCb1:vM-cKHԟ.MT01s/N{l0 m1&[;B?LR`N<"@Iz oϙp- LQ3d#\Գ'odfv0>2\Qգ7b4~!5p b/a>ni;M5g$r-WwQU8FWQ;}4ؤݛ n+}0S$=Zf֫5xӋ)/_WP{f~zG < GDbŪwu0zC-@R  6t+"P@!Jr఑ث[w .e 1v11]K ? O),RT UL#*)+zMp#W6J^m|#&ᴹgYn =*0(eT][o~ o[܁cQQr9,[vJb)O#v/ A,!/!ZY4oGl@hBoe3"GQZ[ċ?^nF1Fȗi./o$Jv*མgf~3,P>)pjxbܭZ&e],0VrL#A4 <۱ÿH[FdA],3耷\IH.op)UR*ǚ % AG{"'M%+LOs8:^ ٯr Vy.-Ҥ "dAk(V&J@]\jc<s*T̒ EHԬuK֨8tD h? h;ĐzI0tϵfE&=r٥Cɜgl'D/R}ZsGt' շ75 CBۯrr̶ܾCK&zhӠɰYyꐀr1ךJkshHPuZy5 K[IW F=yL, Tt%:ϢuhzKi+CalD1@h7hnj5\tSɏ:ED6zlHIp&:cnZ$:OZx]fJqU`߂lB\k*ڣOq~u?Pa}URb`FPZՓֺHyv{ |܇Z. @P[6' ¾j%>B]nJo^8a/E?\ǿe(yQa+"_38+1֜\k}#ʬz(:QƐeksTl5ƒs]ND%+)zԌPǽܲ%܈F PlQ`;t%A/ԢQ+-Y zA(D2o;/n0 uwU81 \s:cȬ; C97;iltB=iJ?9A@qS$"en-th.2k\35oUuH&y|jA@jOVwNp{߶ {22{Q`KΕs1,[^@rN,K=󎜓kcED#s[ akۃĝ6m)6ӊ{5ԁ5r\C}\찖ǭ[u c:n>2eBe2T-&Y*ҭ m0# ˇQbg2ފ-bHic~t'^$@Bheb!X!WfkHk:*st'ȓp&:KG1P+'gFws V!qPt8L)j[% WI yGTcT7y*PwPjÖVP]r3Ox1I4$O*i5ŬS|V>ҭ Q`{c=6{i*mۣ(椆ZŷOߩȺ89N0Y\7n29_ d[m(btqВ#YBxyl?[RZϦp;;9JC%Gq4P& j2y7 r8}j8<0 Oڰ똳NʾxdƘEZԩg7}mEI92jA=+C_HFO OEn n.;ooIVhClk45d0wrĿmȹ UrKۧFE#(SC:èCfA^&s*~.ΨB2$9K,? :Xw9;4JwI:H*ӉkrfjIb AyW".o+qP >48MG ΃USM Iʙo[_UDs>9B߶Q,~ $qe_ۘq,wjK϶:]aLk^5B,ۡ()DQq֡h4/ Bt7#6!zɔC&|Ol*6+JSCϰK.5VO-&]Q)}Ę`WR+$YcSmnyN>LTN(8hV(xU4wBjJMezK a$kT;k1 'Ӵe foHhf~%`߀^=;;?Mԩuk.q\9I6Do2FC7ag Ő_i|,i RJjXzqC>K؉# ЀSϬJKЛsI:?ٖn)!HosE k™rB&LF5^F^PMs9ͷcΣ*?!V/B+}}HY/”cP,5 2̙B wWNX~խW©IFk]NHqXɀ^[MCct4 =G. jvFx7\QL./s4MrZZy~dCX~nR8^1d ]7vFVEX4oP Gu߷vFcn@ ٢4mmsȭWlSrc-tX-#dEMQ(M;jS7j $^iAFZ6Ӆf$.̦|Éd!2m7܃y6SYbF;n+BՁEWì!^^Z={;֊/)?y, Z7@lvY&W5x<936Mބ;%)ڛ*P<z]P; ?`M64Y3 u}k5Aɸ cP.zyp1 qJEDv\MT},(H'bZ#D]m[KF\g4F1ž;#iDs"iMK/'Jv)u5dP _p`bl0UiY}Gp 3h/T boF4T(t­S"Sfjx/Ϳ7!Y̵>pAÀaIqng&0>,(~0đm> Z4^c}:ΰ%&z7ae'U_M6`FΟ9my1Toy4G D^L sN(\]T=c8po'0{@Yֲ}T* c[S"rvdXC$8ljwSC0d2wG{ Y,FᣊPw)[9 5Tw(^;iA `K[iutT#/Gr6j|5Q=/Z UUj@,k/V~*>ZBHș>4:HN::.KD_2`h)QYG <u!^Y}liJؤ&[ }عκiX%VbBZ^1"//WblFt'չd 5* LjgUVGn}rzé9%h*GD ;qx8ԅ\E`5m 8ꓡ=đNwfbU Yԁyv6K/H=eX7&JIύ+\LuSKN,O13/jNK;b FIfA N,`-f$lgs<{-oAL{T# 13okݗ2v@LwLk5+͒#NJI&5*?14';G% ժ/K`iyu5 守|Y"ݸ&ڷ( 2Γ)g=/`J p\LG ܆KvOW SDmdd 4I/޴k u;cm{TSTuG2zgo=7ue28Ej6fig_}U71g{M(SЬI]Vg(9P8ZdGT3}}Yh+ռ(FXp?/?$ho.9йlWڤ9{}Hmc$.e$duӇ ?'. zML_|(p2˰H%АQ:-ihlF0$1GxvAnrsW;|Zĺ 2ҙ= ѾI@-+Kh^So`F3_9  ǡqV@#& |AdUIX#ZsDo=!,Dj¨/ ը9Ђ,'V)N-S7ZG:0 pp\ ikH$5wGH#*])p,pŭ5CвQR+dngWK#ᤅ5 .TqLjvK  1!L Y(K\vNc_~Q[:Lm[z,a6-;6c3HkJV6MJXo3]#-y cn9Yb!@P 2 qZ0H*8[j+,}h0H`̹Nͽ>| 9Tu^R.5_z0+p7 y WE<1SMf @` ;fU)~ei(0u)\H3 I<ɔ#΢/NW+NDmn늺E{C>>AR_`ḞyL({|}-ss@gfnj'B3dK1iu [7ל)fc&Tv/!&X{lu*}/dтGtעKQ?m|elV%a+"܅1$[tCTu4Ճ:3HpJ}u"sʿUn)=ш@Zk)ko70Q0, ä沆#7a洁:G:gUx'apu}x:x^n:b[x20Q:Z< Y&EV24oƑ^(g ڹ(1s0>Gb\;; ie=ƨ$Oәʿ/ydNn?3KTB& h#nZ=8z'-vqǐ S` ~.q`6hH^hmU "lYSg[HLz@f1ώO$r( w.%XL 3l`"{âP))V&oWdk)ٔ*gb)V%УfIO)1Q .l X:' !sQSnOo`_z 5_aBhws5Vt k1Fq$3B&]}t &n-?^e`#n:nj ڶ'jwD~qNOƸSLyl&kQ'xc֭˸4 \~U0_V_|ί΀VJmN4k1K.՛7 O#\`N>q40f*>>UC\@QӜxH RXт9ā9n:M|:ut6rſv~M;"'x*5%O/.2u_avrqm\x6.×l\ueC~qwSs?c ^>м}9jک5w#kU`#-(l-T"w5Ep7ƇwFXJ3UiGMcG>9zί=pl䧵豫;B:J:\˽ΨCP.4;2Q59ropPǽ!70̡}20XLl]s1ޏB P_/yO@)|>^un,H8FWҠp{ lj̲#KjNd,u:j)NN3IkHʬT]6|I,җ "w͌(!`WFh!бI g;ksxV `8m@!ShUky?.Z{9ωG$c}@*xߊCsmg$<57)$^(BAGW )ϘFwAKh(Ndjfd} %qa6[NhRIM'}/Qetzn RF zീ S9BH;*tA9@dήgB_'iaƎ[oL+!Na ӺY(:qW&"^Hti)vy^'HFAPw٭%Ӏ~͛iOW)Z+L#`"DM7@.6#ʃw|4Q][*(]r+R|#{1D)x%8wDsJ= dYnWĪ"Aմ*EXe9 ڝDA%;i G7Hp15=tX4KZ2Z':*}]]d fJ@O Ɩ5 jh%X7zl m }O.A>SgCW&.($ g 7i?{Do8Dݍ]tZb%ihږhqq[+W7T[08Ŝ!Py?C6o tw}EotJ~ @#8hO9<.m$ ^-ul`4>)%<\0߂;dXENtl]Ro1#^ޏ$/} >M!(D9*4#ofV/(c_:HwDhHRB*qnC4T@@2܋V8fK[n-|c7winқޔfLznSdi:RCOz4ȼ=ZfTp 9hqFa "uia|;({,#>IN0Vչ'w<03xAVh;jpbhjILD+޿1wyMk#Otld$`߆oըW,򿶗zӰrW}8JzV5sGj]tg WH BV,ŐDuK7GzWdKОYm_7ހo4D#'AC[hNCcPķzyO%݋Ԓ9S)5Anr h,QJO+Ҿ#oq+F:\^kzdZ@&: ^;^o g=ڛж4HL&!N.(/^c)ֲlJf^3k3< Mnۋ]\a}oZEQ+Vv+~wCBj[ ՁWs:w{o9aѮulgCS1i}D/ @nHlZoG)} h$-_v$BѯJӨH_82Y_=xq4cd3'%V$(Py7K !6TNu7@KHSa#{2yRjlJ>ߠ~GceN#_[=̛lbVMvDe>ss̵ .ECpqvEqku8djij#K(av'+d_ъ*m9\x0ϪE|,FUQ>ڽJOv*ijLjfe HK2 *}EW1$Ђg~C6 Z`Z`aJv~p.+i!tOCA rA&/Y4/j'8IY2Lp>л`B<sU2 a˭eu2<wɁ &  |Qɛcl&,D{!wyjDǥYm x;,,iL28qcAEہ:-$䊹^C/2u-ju^x?lv.vdi@lf.l= L!?ß'hi/) /`El{vwho 5H64x_P$JI/@Hg @A ]6 %ae.bf|SwaR,i?BْbאEB#He6uQiYPIDh$eK4cRpHq)n-PFV&ڗwp= bi9?s.Od\e* `?~)~f?@ /jk[mAң*7+VkUr+@Q IQ vzk"jjc6{yX9sA?:#%/0 -od7{[e\;d󈜑8U[$*\8Ch>#`ncGk C W߇VުokOqtZ5>xJgbffcBO |A[\\$U\ys/$ݘPFmIC5:vEO3mA; ٩Jp씌+v9r^S,UZ! qJfJMy^[҅o>~aG-b V`Lb짔ۻύObتH,P>ZŢ?*tIRG;G,fvۍG 6Fs%9n{๼Ӡ1s2XX!+ .0EqMu\/Ɣ |4Q"sV=g?W.bk&K>Ϥ.) c[뙧IJ 0# P.WG3&cʹVK_"߃Ι`+N!SlQ!|˙^12͑ ~?..h&k4!E<hlAUB E<7-m筈x$-)cC/Fz8,4~ dfF'YNɃ瞠A[>ӑ3D[uPc=y#W qvzhOşjF S`1I|;~GERjZWRe&aZ[ 1sI;Y"u`*g% }\&[D.}~S:IL:tߒYQלd)Pŏ_9QNg-_?{wiZTx;dbk0fﶊa09p`D ;TnLIG}F1`p7!Nɠ*|U 7O:WĬXq&&Y,+wb֩ĊQvS=)E88q*s 347OAǯW8 rUMvm(i b%}7x.S8FJ;uy{Q0dmW{cf ÃB;򛮩 ^Cj击m&~)Bkb"Wծ ScaVZ]<ŏdW'.x7VUR`YsqmgeAYIK`6p-ƌ={J>.tO3 ۶n:zH^ FRvnD)3rD3v1{LG0e -ytRo,*^~\KOm,>1Kccu ޡpIn(SN,evok h:E8LiiW+φ)~ GO KLFxp^My pZ X-{"ep7rAuzXbWKGԄHNTMjf_8_B ւ"kܳ+Ŷ(2 Ϗ-IZ`Z 7 u^mb*LܲsD"IzJy0 ykYӓm fS|@5J|+Ҏ*M֫J!Wٺy97YȔ^:9~]r̈t~t %*&B#.; Iy Aܰ9&u eLX B@jZ<5ǧeJҥFt{uN/܀uosOQ#20 iQSJ\s>"(i4)yhx7xf'WsX?eHXy}/\ US {;HWT*ژLty"eZkQZC!P˦4=/* P]6C ᱇gT:8T" Erd!PZ8K8UGo"*F\suɓX)Q[`eL_.0?'YrDpx%P;l;a:5'B+ƍ*ۭ {Y@ %t:e`6jr?ěz԰g&8ZQtĉK!r_H~"QiQ^DZw(B9+J]UTkgS-,mMKXr\![B6dyLLh\jwΚg-3E/HCb>ݢcH(-tp.gsY)u,in:I:,И>~zcZp}vZ$)%,ÑFu,kE<\pAG1ꆆY?eB v4 c6vΦpPz Pp^OƟ0FsWZ`~kJMvl+gsqfH_"\ _=Pwx@S?qk- mҤL0D 3kLZ0ؤ@[!$dC!ݙ>Rͼ*v6a~G֑EKYΥ\cJꖁ>x&BiNlnSDNC圅QwVbSk$Dw<$i&vxV{?&>wǹ[^B~sI4cjclvOMY}fFs~ c9fg1*j6Q(d8e @99FﯻCM^y.x' u6J׀˨ O|ӱiȟ %c&KQjB J;ගȬ>I]eS".YbiA7Hsqv q:nf '[T \*D,UKJn/dS~j,g$mW^ʟp!ڂR@ze븝ԃv8B-DvGyy/4a߶Tcw`746lJ kb_,LQ 7-"r'yry-E8rLV f9 `2}.wHҖjQT$ 'D! PAg gыZ(&JSgiʧ8UHm=uꭼWRtQ8Es9-_: G#c0&Q?L6*N˻RC]Kb1ٹld_tjr0uh^2"̙XYi[\rPCSGnV<}NhA>ͳmY;oVĖ?F*(41H<}\F16ډ. f KZ,d‚A/*5V őba\yyj'=@@V]>_nr3X) D10i%K%| "P t(efyBUrz`29sԋ6#nOhḴ.]C,OoO8hLZu1QBX/p-ϱ-v :dƎZQ"8þ]Cy*gMK:39A,,}~O*uNJX&IU;/T[Qك 5rl݂5lѲV6z^t2#qGxTBoAގ31P Ovl2D9EQΥaMi#G7dOA5ȨnI?JCa V%ҷ322r-XwTi? q0$0ڊF6- aԢ!Kf8oeٍ~{IJ2XNn0T\ѐJ83;B1:u^aSW7YԟoP9-kDLfS9>SGAgXj-ƺqkշ~+2T+.yu3hS Un,#DUPP]>VS~R!dȕnTx>MgBtq|S.oQ^"-7D׾FB֑*BpG>>!8X[qZ<-Ɗl"Df\XtT,Aա\Ĵ) vMWS}Jyƈ>J6; t*GWr/? By-,`(9' &ju!㣐uySr fR]^ɜ/ǚ'/<O (ʰcdJO4Ίz6z֋VNd9'I'-[QC, RbdZ%0" 4ҋPSY xq0IZX"sxrjr~DQ5ӔZǗhR,K`; alUB:*A\xSh4n%Sf8-_ g7{CR4P=:%H?/ V\Vn*m礬I@6۰ Goj {[יܰe6 Ȃrk]جWmL,ZKkU1,)V~}iSU,`kVM"f:}0.3Fuy}3W-3U;eCQCTqE(b7I_=ܴ~Gb 0uÂf8aݷ(> ^vM{Tס[\di@G\΁΍ݪɖ[yǟv#|`ژ[;HCYW nG!kΦ/!W+}^tlPkz&w~UWPҁZ6(P4G:D HJ}}&ͳYMLC䅈M-̘Fyg >QX A5GD_t RDи@p`hQYF jEґGĠQ[xAqg$xń4F"tMg@~<'n]׊ɃSYxq5`̌L VʎV9LQ>W{"k tR~0Gga'o K* V4XyI~_+&'m\ol\_VŐRZϊ& F"`=)_> }Mu6P/-idOݚ%OMS%axU(3q—{AӶP$~({35c`َ&sC"@8%2/z=O`N8,޹(Yz_(e °joVO*l?- 7)y4DVdfYQWՂ;8k>Au2Ձ{$c0K4`; 9_3Ig~akWOvA+-*2Vq$ׁQm4> < ys_Ы\_AݪbÅ+Qᵞ!9DOҋ6]! dGơK)Xc) 8F+є?}b2XҵR@)p"%AAB2ˠmagߧ 31^6U'I>.|aơ0U1c;x)@1[:Rk~cy૝cItXPksU R,^y,@εVI(qAXȴ."ra ZVL8RoCX[=AYuQJSIn:*I2cU_^Ff\Mi {㙟<,c[&5>LDq=o~2 uyydL/ê`#n@{Q.hɟ &H1F|Wgl NDo< hYK;)B.:TDEE#w [7ku/x7{J`8tfL& &;6 @\s `s!!B;#U,¢N3z0˓(h2_biYl K?ˎ:m jޞm}fnEʜNsF2o)?,[^#KUL]SO4yβ5D˹`$ B^kop1 145j9c1\;[Iѿ=x3pŀ+V)K•أ>n;J cLɅuHE^NqܺԻW]P;iXy2Ȧ%!v@<.w=u$Xr7 zyG~;}dԅZz$/d:(oQs\" ٷ]D{FdeZUhr'*wRv*]_W9X.Ygaaxo&kHжj'iI!R uiZ,w! t FQJ!܍1_եIZk2:GkՍ* AW]j8KU|Oj[8?;T/K5yKy%_<(j%wA6wc5@8.!yLHIXVP_o4 iҹ/тh2V`M]ݞ &H6UM6<+fP q0@E%"w=Ѝ*-I>Һm 0L 3iwgGm=v`+vӾ hfƳfS)~Bs᭠,0?Z} q95#l 6P"rE(G8^m8MU3?aQ~ؑWiᎲ7q5 ߈ v˜@NB%ᓤC'k.b-+}GAF9=ـaCiZn1I/W]}[볳/i.]nhnt`@sǻ{oƖWCd)6»R^UryC"BT8dߨml3I^w3k9wZY݆uF(N(~Yj&hdYp]+A+M..5f&L]~M%1rMd(Q>~ p^3!IW2yCFGgC},vll(H%[^_|e7R1 B5p|TႣ5Bd_ڮAPQgx!Zrjf@f<7 93ߟRo+r o%eėz`/ ^(zʹ~Wjjz hTV&&ޖ!rHیa|8Zykc(<_oҬWJ[vmh_Q*^טIup20lpЕm6qՑˆZ_CWju&cW_H4jg;A )WǩBǾ+Iaƚr'ߤނ Շcx3"~&CE%vF2d‡c /1ΧYb'X&Px#`ܙLx(7|1^y wb1"%c)CYjb)Qa=Fz,4ՠTм# ڢdZm};3=z[T5; S/Қtfd0whK[Ѯ FVY})HMfM-Ƌ[_^& 6e-2IyK 1f4!OR|rR+puB䟨7C^F0?/j;I.,fQ(] ay0kMr nOUv7z˰~E Nv8O5ގx~<0>ڝpF4wnw5+yN\d #~θWswM}rt `/^D5W̖*\ #)^oirywԧeI Y-)n&kڻL~e’oW H޹-ejjGW%D/~X(M'mι-ރţ |--Ekn1~ܾ~/B@QVϫd\Ju ýVz6l[d1phOx-^#r텢4^6êh4u>c$` *8yn'6ѢDSAil x Rѻqy)3砥 РZ\򛾛Tp%+wY_׋aOsBMH#j%VlY`f%Oϒ7):nnbݣWK)0+qUM]!)Ѭ|[*W:9VGx8`kt q>bNG=:5މ(GpT 6g+7Ԭ)TfAVC:o .Y*giτd4-cަ"˧ޣ|_'[QM|$ szy'9MD)+祊<Lcx:SagEmn!^"`)ҧ@CwZΫ^ G!b/hc+&%HTḆ;_1ԓ'ϼ'#>I$H!Qߐ?Z§(>q~« Q>-4 y;G5Ӻf&5%M.DOy->F(.` զ p g$QfSlM)Kw^4&Pr<8Nٹc7D:~d0{P^ʼRv4[yB[½㦙0L컱bQؗH2hnam2۶SJC1Vݲb\6\jR=jX0Q'J sDx׆j"ѡVǶ 𑴾͗@}*3FP fg)u%R ~_5$wo<Hؽ y5"M.!HPC/),U;d]aa?E^ qtR[8OtV($ۑ9Rg%*[`~L7΢_ ê%L( TkB#(mq"v*Ard(ijm 1:kWf >A ]<$Ӂ"dfS5gl |Os+?jn,Vu\9ϠsR9Mx|3I;ȷ'Lڊ3ޢ$I|MSgqowh3 EgΦ#y#7vZvC_ U (xh~_A0W%KςN6CI98RB]l37o< -̼n:dG'vPʏur'O`XƻNFF/^VH; KↂFmsk8f͗3f9VJB4O=wE7]4aaъv^m  nJt{dʋ(qv3_Fȁt s#W`xe0bJ. Ŏ9+ʋ  IU&1lc ∄ɻ6Vm~5X/ tl#x7=QoV|VNl2-o/2Ż4fٻҘ2N騢 i0ړ;J(_Ѳѣh'Ǡ=3LxM% Qf[6~~oX;7@ǧ$frܽ]قۋ/pxD! Qd粥T,rVSM7mn,Ռ^aY~g$Tu)c##1Wn%4SʱܾRi#Y VZ/{Q1V!!D)r_э4L!$PK;А~C Y@) Gz'G& '@,g|Gz^Gj¹ 6b>u> E@ +fSjhFϮMQdc")Xoknp0j"K f:)~5<egl2QtXN_h%XzPT;TAÝWT9-p@rKV>T"! j ލ -^nDhbl|G1Y,қ# fonܟmS ;\]/&k4% V3G.Ah0ɓ)e:!-u^y,S,'߸ʵo-gUr =./=5 &J/P MzQœ4x lZ6|r"+mL/rp&4H8SzI)Z &׵>ɰb.~)w_5bbxKW=+%-]wLQ㚒-|d$')~Q5 wCe٠Pq+ȕ醗62"X=K^)_.nLŠ7ASJQ#E0tdw+ʑr91/zZu4ю~JjE L6_'#[hSMٖ-NN-pa <98΃}R>jI-?k%{{kڽo=KC_}ڟ 8v턯b_Vc CmUm3פ;V+KO ~IaLNomF䴩?EX4}sC!8N, )fk#l i(30a=na4Y! Yƫk+`l $3f靋<]F VٿLd11wHE.@{[&eyHN$N9B i} 'o;]ܺz 3K]9Hȓ!am62a%ju0[/Ayݮ_„ٮv8:74~xBdìn'ߧfSKif"ߓNeߟ*j_Gz:9ȨYF[Jj$B 3Z}F_ӳEMz ì⮔~ Nx+5w ֞`<Cwaoڶ! !`Aƕul%@̖r^B4R湳#3ˬA`~)f2yzb#iIp(tjqqԕ6_g5\RC LՌ̒s+ Wˈ%*Ħ:%G.C,.OI%哿z> ƓEy$M*IN@ yFZΞF!@(e}(\?&0hbÏ=湭}ʘ߽5PSʌlæ]';` ٍСG#<gBqx6}!Q&0y`u#isv?~AƨI==)26d_2L\3xsn5ʪ2/kq#tJпi&a GpY7h~_ .ܒO{Wܴx a+ >X'eiЈ:`N0,ddzoaK)$gvl,1QBPcg%U58sH3r!_z]\vĉ.RKDi5~J䐏~obT1ݹF0(PS2ɗW˥F=kڻ(EI .eF>{`ƴNu&i-_<>"z?ʼiho괻ykFR CUu,#S)Xڧ'.GܥLu , _苬  FoʰkN )ֽ_T_9m=ao8kv=V`Qץ[R/V?5}2 DZhcs3؎"B'R(Q'yÈ-%0ﳶK1'HdF`:t6K/\5e>ޔ$nd3y/>$y|xf,bs2WZS=eH'm0|P;^> _ g< |BC$ x;V'ol{yʔ7j41TEô,-M;H}7OE֠' c#oL94ElB8Ԃu%(!js5PFB60ԣi~{<6珙ciB O [F LO^cK)*ᝎɶp]訫1ɰ׆ ~еdǴT ux{Tf ~d[?\.\ WCa7H.hzʨ$|RbLXRqwlUv]HςaH#$QѲCcwXC\!hl6ٛmQ~sqٿuD*=)|jU4W@㜬= %aҖ8\jaE1)2S pCzwR I@$?P\%1|* s!:%,E wɨRx =rjʝngN~MJ06:m!̣PH?n״8# _cXk85=0 0$CfF_| j\dוhΘ))1+D E׏\a'jkNrL$TKW;c-/X<tV/f&':NIW4"l f[gi!b/y0(U Jx:5tC-SL0Z &f8U'xo&D—h4g$9'g ʓtQ6s(: /PXǨ4Wot\ M\㘟ikl}]zR]+ Կ?--X^XB+ ~O6\cO-ʆ'%oPj-kwHnjzې$۽ !kz@$FIЇ^1"X#k^ kǩSF)G "nW7P[NgԜ e;-q6p[ Te\Q?_.c.>OЬ^Eb|R _~˹Q{['g VE_YkI_STtW\3Evm7204R_<.j 1Th= j٫qp0Hb%H2˿ I߃PpLTAoxzc-biÔÉ8cC|KT##ຢ[;,+$56qȳ{&xvL7 ݍ2RΉ '4ZYۭ`_k]FփrSi]Ycu/Jݑu{tyt4)Tmk"_ a q_Mȥ -$Qe2{5]t9NEF3)y޳&*qH2Hy0eNrYq]̫"̭2kR'AIz g2o>z$b>E}~h[P ˈP0X *JFر, $ e"Hfo1HȊc7,'.9Y^}-w(]m! V=vqtƺN{dRϟ)jWӀɯP2ʚ˧ +p655yZDMa;EfʹnAàץ?ԃ/(Kп -b5B.7<5םBl8ѓ*g;p?&HCz,_Ҫ:×! yjQNƫʔ!1fl%d,jʦi6/6TZ(kB)J"rF\ݫ82! >nv?RkW~J/4~ t u<1?꣤VXEz}>n:kD憩^0p)U/sRi*Y:Z#[ ".glH Ux+h֜r_g&Br.X]w R7&iz1אi&\f9iu^%lIhߚP"gƀV@PSXJ-*(5.vj,8/OS} %']B͹<&њ?&>ɚG`rY†Ww/ Uka&JL=no#Qr&RT% Sei/XW㾆mCiWo58,C;I1n5Q!1,&$LDYB+dOQlX16X۷z?I>=`p׶A㖻hZQlu/f2' 3;*hjYj|x+&.t]/˔kӥ:ntr:W]k!ĢCyJV79u,rsMye8fXwf1V%NIQ}װ@(wK 65Ûy-ݔ:Q/PeShԱKlQK=C}XdHw&1ߌ'3w)Gkz󩿥Gv6HXaOzlYLnyWJ>lH75 ;(հSefq =҇%?Uh3ޡ;xdW|moۄF]*ڸauH2@_F]&,x$* "YJbI ~xc-۝z,1bg{[wLɔ%a) Y_BQR8~Xq~q62#sZ-@C_Xgڜ/3g@Ru!LQ>p62]}@U .[ށGYrLēGu%"T= w6L] o<"`a95"Hv-Zⶳ`˃~Pvuw8<6= VDr`cqڿk@Tž&]菤ņh8l,oRqa%"p=`syU#4̲Is.C<7 GUEe$CTvv:fDl?/Q϶ 숪XJ}h?cי&ovޥ?k0cgB >B8%#[vS;(@1m01*] 1K̇/$-g.CM,,Uxֶ&I7\; g>]1CJPdB )XMdEu|'KAlv(9|^S$s`ggJ?q)R;7aB|ZUa~E*0/UPMP+2yx hv↤P{d[2*fsn71Z17+ kdYr+ǔt_HHQ/2{DyY3a8-JEp^Xnܻ{.7/21ٖmSD % bKR50S}K6L+@aq>15{ Z[ a~ ŗy`7iCkD~4TFW'Xd`9`$Y]bj;ețڎX~r,s` k.o9DN f]gk&*x#3Ҿk4' J294fm24R2O(Hݨx\ViiEreEHi&A9_LeYzޜZ~~K9 9/L6A/QdpuSKGԀN1(0ei4QͣZp 9㣈e]\gYV'#an;|:16mj"55(mvdg&ek#‰O3UU`$gsiJ&3_|MZ ZNYa1-bQJCL #ѸXF:ZpVP(jҦ,PVrs,Z,eSEw߷$K`aumL!9E-UsT`>TߢR.gO)ycK4S.y]Nz>]Q&EsDLgؽ~.r30?:cH3h[n1\n u  "?Sk56^ *Tr0CYS2B]\p/и<,/l5WFԼ˶MZ>7|$ȶvA)]-> ګay!dnh(An=L:NZ(,CD8Jh &%h<m<8٩;>'8Li;(f1-0-M_::C/'@G&wE'%#Z2pQ2 (q A۰-L1α7Н HTMG{5(}"\#g</GrnI+r7Ӎ!eIGɾA_1[hFgf{ õcUGt0!sdLM*M,Wѝ;QrgTxL-a2$|_%Eƍw7b ~X^o5X)5.%SЃƖP:Q%$)R"Fwm>kdߞFX-.a1cΙNp[ 6cIWtHhCVOS0!N4MZόb3SgvETnzV|v] p[DKnNYĉ#"82$^qG6ma)q@rM JmL6GvOӝUQ9``JU 9U ʳZB,u3 +J9mrG;ci+>RVlœDRHAT8B9wT^uDĥ㓗' #)M?נ:>4op;X61ʎ= nߚgeKUăU V?S(Ӭ&_8ULɥZM}[-#լJkF^ 9n'TSmO ԭbЭ-ŵԐd3zZ*l?4172p++ fm뱂&]@ܥ7 KZVAIG(\-:^MD AcbN F/Sk oQңHNcl@`UoYV)<%Q:x[N&olVVaqۼlN<*TزUbCStWm)b|{/ۈ+ ׁ9[}Z0t,#XSδnaedOlU,cm uXNV-EurБ7X\F1˞pX^C pqg"b*%SdީeL[Δr} }Yk3xim~SsC9V6XqmO gaTT5Ytk:6޻R^ Rm_ O`6u8):~ @!ʸ ` 2EО65gp`kNBã<1뒺RI;J.5 XXN Uق٥w&J:D_Ɯ[cD:1oZt'L%_@)zЉe;T4%*^w[ f[~40)XULtAig[͠ )I|cOj!"^x\F;Fחijҕx~^;:gWM3N0V߻+(y A\sk Yd9kaA``HmHg ûK\PPk/YIm$Fп!Qq/*#? /Bj.jlY[ç{ԃm&FdTrSd`EaQ_>_$ P=Zo:g{BZF[ qgPo6$NqNa8 r[vn ȑ40 `aYPwTD*l@Vc+-Ab n~^^XN:R.f4l[r%²beWB(M!| `LѐQ+/p}༐ b{ r`[>=-S<^*Y,b{,ԕNɟc*x߷ [n/9rHp}7p<06R K] 13J_*yOUbS gR8eӏL7@#HO9nCc8O9f8\rx\._Aq[p\i Ɇ[auJ=n|Fjڦ(3@9K|: xy+(qY ;9 ?B4u:`]ia.a7^?IV@5Zk2sK! =NV6yig[ʦ~x M$cu!KŐ簒J\ĥW5P"%o!ʂHehǽ8I{ KT^z=T@z҆3,-~0c@ 4x $u(<:MێH&5aD}'|$oM?$c%Tyxw#g/\|?)b(;Uc|P>+2iJLUZ/[AUA {A k98{ilڿomo.)l:Jû"4B|;FI)oN8ldj&5;i=&<%Jgn~VD@9O@V K"  Y[x04$(CۧdaM_7UFT$)MƯdyB+4BUlF soO)09qXZ]tn"G~ UR< Mx{T$ɀAǧε5؇䵝Yz$CӒ[5?hN+\FL* K]nXD1~ly?U@,4cR/jBDUoQq'91EF G7xULPقna 褂 #4lHC_ 8j]N2WZF517 kaϸ[;tX]DHl2Qy6b=3ƬQƔxKM 6Y׺bqTܬ[M}D\kBd3rcŮJ p0dԐ@хo~Mal:#뎵Yd:y:9{|x ;ba2!g90ĮSws*-O,BcA9qqc;*c@T1.Gɛ5Rgb=' & Ds¤ɇ.6[V8*7 HcXְȓA׉T\K\v<Ң7+ӂ|m%/fi10}myPJ/pGK|BZþ°>Ba^"b,GdU5l1&=D#W -%^tj rQ<߅y^)eIMIke =>°q~ӬYJMVT'`eKC)}L,)[]z}Su>B> >9#L w?'}b8vT|k/ӡ Yڸ ځo7=NMA(TlhKi$mOSRudhx͘T~ YOk?*z 7m+V()En= I;Gk-%4`@3ivX&m6/Xr1yrމ|%gM:JMZ 1F$ӈeၤÒ$<J9_k00<\p Kj/:E~j#FO]q{-F`Dwc'5v7Xw>[ԤoL@(h`~ރYb7#Ms9jCP`L]D;Y)e9P $`K#_]tY|&uFDC&zX$Qԑ0z^(>*^ ϠQϪ ޥ֔w*sG$/g4k<_ BMR}'f 8_s0$6RfW6c B ڧ\$`^g4 ꂃڎ5O ! 4rV ]BL ޢB%)s|j5Kr{䪪V?c+.09p,– -6,Vd k;i+[ǖX{^xxOCI1?"] |J~~Q!q}IaNr,= @X*82 [a:$O. t^Rc~/C+dK<ʲk`~wFqCÝBw ,2Ԅuw"Uou W_4I9ӹ3w8): Pk,+д߼ Oۥ>&6Nr"?n>'_) [WϿ/|уjX=zu6t:,$8x;%L Pj~ o5&z:#.C, ' <|0w ޸tq4'ӁӴYv{Zaq!͐ӥ1q|<4ISY&=]ڣy,zHL磆pvf `$A驎ftsP1.K>yom E2٩2!/;QI'+8[( bDT \"/a>{U|k>Hy(u Q&>S]@&kkX i)򵛩1!̎+"kυF7KA8+6&mOiKzV!A+2Z:NŅCjE.TKLD|RlPX\-dm4r0FyP.mWkލKZ~'̈́fF|UdTZ~^ܰ#j5yWGmv(7 o*k2]Sxȟ1 a^nI H1Ur5E#W) C n Eݓ(oX9*|;fC6|ȣ}矗מB}/-X 0MQpNMX'aLZ[("DP=VǂIvEtkQNTĪF}a\H۫jN:FtԵ&[HSjx4?TZ-ݾGRl1On!Mer;Sm!*3'WvLti!_nwCdJ xV|K%G=H˂55_qs Ga<2U@E~w<[} 5cd|QT*b?ݗ5ztdNS#q?8&Xa˔g=" sj3j?\d>AU 0 -M:&4084c ;_K9GF"\O4œ +*;%~ %' ga1UꝞx^~٣*zuN)͑<%9 HU w8K`t U$ !FsF0߸ɺ} W#WwMŗ #8 Y| Cv$0Fڏ')=zL; &A_^*8)DBeݰU#*L; qv. N2S#3`U7 8u*cz%!MI[Ҋѿ"8.pGUK"Ьwlh]D=B9No-p3z{dy% EsN??nyC1|-?{#@!T Xӆ׬LCe2JH 4``cL_PX9d&uYZnJX2±f0.+!24bˬalN^S*ٔ{&W{?oQ?5 =`N٢yv |욭A;!>H_󙵗CfNp`|C/b=| b"qt^4Spdxz.ɒ$%|fNǔ.h-@`ϥ|qFBu Sw ovOYكd㘒 RU0zEb5 N6ʏsR}:(ah –$W9lĆ4$B ;6@՛t'h6hG-8K<"':6:ze>F`O +YDO+,:  GZ 7o#ڜ-Lm_6FYa 霡v6'&:<]Qe~r}n=E4ÒДzd(yibINbBΚJʫHs-J8OJ7FTr (T-KtB~&,C(r΢B:"A*egvsWsxݥ`u4rKԫ>AUPԸ>TjPNgߣPu5oU~Z\Y8_>Ҧ1 Jx:-.jF{S%{cm}v^ȯǍ;O5R#͸=j)h,9h[.Ch_+Bꫂ t}f2Pe>'S{y 75I>?pE6έw߂r몗+0N FzU|Q">A_O.z^Qw{K[9+4to:Ŭ$RvJ^7(\B}.ܓ'K iaجA%rZHe&yJ~ gSjBix%QNr!&(< |C|QW8)[qQca_,hޚ){w TgԆ+~P V}:Tdx$$4݅Dѻ_7hk3m8C[_,G(4,N2i~rOO&(c Y'#n$ $XemI{KrȠBPof>zdS4;|V ׀ 2>u@  i3Ux2+[Uoa@˻@~(G@;0˯jYz.bs{+WѐBz/)M {+4܋9V1?z4 ɗ.-۪뱢4e FX+%cH'/.7 6ڞ[moqaV[@D14-Np^ZC ߶y8I,!gL(}3lܛh9n "/f1&H9Raz(Xp9K^Jp"Y {&F4v=:v'׹V"#ozT_B؄ UY*X;;*J>\n*J_ȽҀGPO{w@.-n+RL[Q$D@qZZɞ,=Fc+K*gvP\Xnög_PDdu6D41ywm<9$:P:wn=WXt޸F8LoSlqq V5VO@VQ?ugq 6=:8ޔ{kruJ jEDڮ#`; N2҃bR/޷f3UylaE=t#Н$Vč(-*yzY=cG"ЋM؛k$1/rO(')cjAMf:C&gU&QEɜmxrD:3|ϖR?Ai r!miS#'@hסh |H#HWift .:.f`~'(9F W HdOdx6H@wo^ΟD 1q)lW^mhw=vP G{ \r"BE!@ga*KO/KT,)paC_Gb-AbU2⯢9MHUN_NI+L_ z{^\t)؉xĥ5|(pa_E:4FEoiwYXJFAouF#>i1wBr!vfO(s_Pk lE rRєmXpr ":4VB'(RSnkQB૘[xTXQ{, =lN!T1Xj[(Lu \P 3,NQ'PMVR2CkVjzVfcGHm;ɸc @ b[~$ p!Y*kh)ۜ .S 3U}^䅷řc=;9lO].Oڲ0r9;Dw/Fd ZMh߻4] KOsMRZs]X?rP=BOc\Uz`/5Nz?)7!%7aEA}ymB"!ѢǝXj<mNu o&!I#dF(Ҏ1K(}}iŞMɜa&p9Ge~;!/evkAi+j]L##7CNT~\&5*`z%Qr77RRƇ.R@07"J~W1 9Mą6|LF 9|h6HR2Qn6:yǤ3)tc):-e]Yh;!'z }-%nC!aت&@b?{B?}z$'K؛[921vigo@ۢ2Lvb.8,i_ncLb5r}v A:[ 竗&AYQ[SD,t\NF-`0iXsCCVuu|P~W#[-u?B6GuqR,-cy;5t׽JTG~R/,5VMiM[>:7ȆZQ[vvJV#Յ1!qҷaC]k黙΀pt? :l ~9[l6VyHpđe/v2%ZH3})v_ &b. dSEʮ-EQvT*1E8kYuzCV F^a̻W@TA̒=- cg]Y7ԑrY9C/Ub'Ss\cA_Cwf1/؇nqU_?H~+ l2rХ:leR< `R2S͝ZU4zpab$UΧ1w WjhIsnn. ䷦ "/듻UճLF^0`D )@%¢@>CV eW=ngcGh.(Q􊏭/@9 &4^}n5rg0Q eW'w¨j N7EK!Yh\: clWQP&y-МXױK?~EJc0 ڒ2OeuV%NuXh|¦DN) 37/ M5ΖIq"}RUFu""Gekvu0^#O_1#x2oҸ 0;#+f<^i>JDQU _|pɔLUN VuQ` \" fT`#kAXK~0|^opJuMi,WA^3gvO%m\B'Mz$em҄L w{ }Z($dXW-~[4 Fmogۑ22?Ly,ew q +>J@EG~b!FVR1(*{T2ءz]Nl4]rXM%ˮo+ʡUHѸ{ߓ1*N##v$< GpX\ V}=9P`[z4pTCTi)x?mm{8@/Z ъHiAbWJVT@nDdYX=?-0e}xF~3A !/:]S]PLݼ{BZx~ĂO*#3ɤJz8c9J LNnLUu v|{6VV%W4D-ֶ>$Љ}6}Rh]ieS(JZF 4XΰmZ#5yA,[O-F "oÆp 7ܱw3kDè#T ![+%{2-,hap[R+#-/7ՁwQG r[>iĔ<~`V'rbm`Ii^c߀ItV" *qa݌85H Ϛ*@4P\+Y6_]qZMu $Rcú4&hSDj*/(T,f=E}^Εq[E5<n}惫]m}K9+ ^CFrLphL〼:8%6F>l-;ԍÄ~#~$뜺%[u[`5|IXI]L+[qs[\FxC: 38y߾F?.KsPT܇*D|0ӖLO@a&&QFǾs2O)*=TFb[b,0(/SF"kv0f:͏%[CpK_|cV/6ήC[sw WT*vZ_)$ڧQ8OFƖ<]&+`N}g4 q_T_ 8B.Ţ\Q)>>o[?e'ǽzU֪h$pIe^;IyMe57J` ,ߖ)y'͗ JU$>Ds}1k<)9whyFsu qc:Q, w]a2rl^/ʞ?͖qo=N|rrEW3g4Yܖ BZPFmb΀wDq6l^@6(@yB @0J.QN`J"4}QyBp (rkZV)Q ]&KS ~9 ȳl#sU{葉}<]~%}06X:Y8t,cs15,ۈWNvoR:jDxVگ<+FAOmZLl*G, T*&8\ihrY$%  ʸV*o+?ڞ XH<X숟;eAie/ I|퇰X[U*xC21(j|Kʐ3oD,/5eaQ{ϗK C\7o\u󍼷%DTܠ vqHM6Slɪ6N(h=!wDgO&jIw`9k$mRT i YdVY[;MdƵSٔV"nJ&eI<džQ=t `2O^]_ 't t3RYESqHZ0yHP;"އhnϴ,@5>6ײF $pL }G-/) + yٽJ51Q-ۗ a9nnd`nvX`k<*o'RzV1xz3xZK2ޥYlO%3 ~scN꣫KX&?8Otް gԸ~AƣG+ƨ\w>gA >(kh%*-p %%"zSRc|4}ޱ4b,"}Y}CYTi S4ii!~~ǝ҇@s:|NɶٓDgڂp">;Ay dP:ZkjIa/G瀆` ]_~|AP3]/"]$<C- u8b<оP'u-f;ٟ Zdĭ!F`UqBZ~$UAq+}$o|U8_uJD3VDli 9øͭڳfM3t?KZ}҆_xaeWhNîRKswmfL= P ^iy|/LՋp#pwڼG.ZЙոѾ} JlXҰ rApY:2ߌ;մg OE.eU:.xA@u0WOVěx]&S6j3!'[0^rc+ɇ!Nwݏ hhVSznRmM+ Z`XN]WwAz%nxڼx5iڏZxBL$Q)g%mL<=(dQoK MOB`s5dz7M1߿QΝn H'gVm7qk{z І-isO|h{ᠾ YWl0,??ӊ}biM\yp٘Hx*?> ݙtY E| `gg=>ρ4 W`^ {2!01 J̘y)pew0ʢmc1 P ƙ70 Nic)uKK-P߹Tu/w =;c`Iθљu rӀsȱ6:GYY>geufj>!vhx (?se1-:F-h;0# !R2W :@v+o $+,.15?1;lޞm1[yQ|s~+m\g+T@[KDWd(,g7RXh |[>ɻ3>mB/ '&L8?dJq7/;OP[!bkw{2_ക OwUKՉ~_+)ENPn*HID#< A_!ԚĚ'sapI f;- RN|()Š7_cGWR%I L p.wR7&TZ=G,Svj̩X m5]1 ӇF!Ѭ>Eט{ >Sr2MRݜ* 3QWi^y 9YCgmKŖɾD{ ɬ2 mAOHtw.݊=3q,/#:eVl߾ӈ]vȿ% =1Mo#7H >ŒǾ((`f G]lWdj5v`ΥGHRC7#/RLŬ`D7paRY  e33!L0˚^E{HI;F-;RxWῚڈ!،0տN.>a0=+ ߻blU/= ;=\kQ5s9΍zpӚcqa^r%V4h6L٫',I ~VU*G[˸4͘~ MpV 򛉷 ',eFs)&H#_oW+ƓCY@@"#NXӫå_~0A'7/OVtv/9uW1mq<kLK#<63yyψ ʫ2!HkA " ¸'h'}~cqP%vaQ+C((1jDu'i>eMzFIM MZ58n0%Ni>ǭ,0)6I ,5?#\_eTuz p=8mx|vwF]b pQfQXH|M߿;76^ɸ؆K]qC{n0Fn~]ώGP9'D .>ߴT #?ZyG@:> &]I6 b0JoS*fC@.́Ok_FY//v]K#D+1ڕv[p0(M!HOZMnC9KY(G3;V`G ++<baK{dȂ%gt?{@ |D(c1EA(qJnsdYmG-͙OX1{sbGJv %haC(#9x:ӦAC 9fԽÕ%yn皻(oGC qdɀTq6 R;Ɠ}Ӊf׎*iy2b*ΰ1Ic"҈k! FKwЋ_Z[KBDx N.DׅٙݮYb Y.S\%Us$%U؈ջt 7R{zR}Cl*h^Ge %2ʺȗ֜r?Nu|!lkFt~yo<>ƪp| [{\ʱyĂu{4({3Oc 4Q}JhMoĚs|40T/FuzP BwvVDQv=}$8>KTLc6MGl,8I&X>#4ץ21 븰+~x4%?ԥ9Y%ÿOۻEطͬ#q A7 j8'%18rk Pp|Gv,< 4s%q5%j0M;2f q  xfy_%f+VW +sX^p1<~nx6ԓSg ++]{N߈+Pv_6gRش*3+cP~t#]dvEKlY){ʱ5I%+,zX-wDnK+OPͻW} ۥ$^(e ٗwJR5 !,XQtc1YF gZX  sJ+<á~м;B~ >/Q%}GAt A Tn!ezTUE/U=? c?}< 0^B8ޮҋ$ٿdܝJOibꘊ },{ I©JsW2BJZ(̷#w%4crWY݀/HANZ4 7<w@nM$OMwv ڣ_6) ?-01mLLbࣞV7x(t5)BMhџK'o2QMw磢= >ýmԢy'B* zjK0ycqO[Q,LӤz~@eFUj H~RS@bԚfZYݸ@RU_ ejڠ֥`DSX*#nc*öyt-lk3mO*;!9 2z7j\q?u|X( !A~s2ogT+$ %eCacsu=BwJXN)S٘u'vJ(g/8ʞ 78T򜳄۾ M3GV -HW+AޚK&JS{u)f7LX1;@wƦ³~3^ڧ_i#`J5GWjPWgW|\M+?ZlJ\)5R~2~yN)e>XGX{]VM1]WK뫿vIlՑ+q2,gk'u%BkЫ,_j_U|UQOB 뽐alrxx0h.$)Ded޽2o?LmD1*i z m2g,I^>p1*!uy{ U/fӄ2۱1JKqpZ*% y*$LtCM@ ]CkyxI"n@wjZ'8MBTe7ľ0-H\e"d˽2w,`C1-GtHS9iiCUAh\ kzS]rpGkk'ӌlm3BJ'!Ic] |KG!R1/޸6ur{v,7\-8 1eV^JgLm{: eZ>6V6V)R]j"I>HpeS>MsȎWrZh5^n iOvqxb ˢۚlZ9< U9[\,ŽwܐlŰIīpv<aB\ *Np`:OT22>wM c我bϣ> Qnz㸃ȄD9~N%7"Tuf?pȔ,DVRסǹnȘ%@zk|1eZ#;{Ր>(G1a̦Yʂ>W3=L7ۻP  #"O<*Mk%yNBcCRc83U M`,0L!_?7`tH g&?0 [Ie$wĸ|&Q Svr)OEs|%@Xʙ\)3VZ0ˠAo6{O:9 ?sU,6\?byˁ܍v ZE6aF@J1.W7pĘ3n]+܉Zr^u̾҃% !1tcC.IP5APzh6qBrVqhBOO;0qdDmMي N@fVdLej4=ғ7͒+YBCEMr*>aޗ'ƢI?C_k7i/kj,zQ}-+KvSH_@|^3U3+d@BM~ L. fo4K`f07)=a J \ZHY?r!Tg a"%'t{vXXm(\1aW$K1fSؒsn/ʧ[H閘-r -7A±CawԂ$7XfݥVPZ^W2ًje( rÅ% Nƛ8A84t)T|3X/S6+~OQ"U^EDž4EOvlo a,_c#(^^uF}&K1jjo%]&bPJND& (֭yhoF|=NI ~R5Ŏռ<|Vֲlt|2bwSf&},voyTuq8\zfvpQn!ze5G(ub71l1\}r`F08ޔD!$ yzQn䊐/t6_PVZ vZ2M.NZ-eJg$j@@\HN*x63DI. ld̔i]}8;_.OِI7Kv^PWZ^{=q72GK(sc硓; /YSNҙJ+AG!Sú Ws)/ei[Gf@ay]x*3}cS"GUG&U4W&5ciWxFEo!Yp0e~k VX(%~lϼ {U5Vh?nMNO`$hQn^W~'<-i[*lrrĈEYyhVN ܺ̕qDe.d"|,U0\QKX s[ 4Sr_R$Pm Dq5eFs#{y9 wLelXFjopU⪶=ηU8g&S$AM:*ߺJ&B@[jAYnx3{ TN[?]*o:3cO>o^fZťڪs(͇v9iZS{+\u*,eHBNHMP hag&fyITY)F}ǐ%Sx"9\X*K85l f-\H$So 02Qe}Bt<})" e~i`|`Y<fzӚ!A%jU u7_ FlK"UJKfo@8R1BrV7t:XI$)z^7Q#쯵f5Y [NK‹!u$6)+ÇD%S%̕HR\JB!SfܹjFs-SiBۤ$G)G,F"$ki7}I)87u~v +B IEТ9]"a7#V,Kl@m4IZ;# lF!_:Xf‰tYFZy(i Q86-ҙ9ju-][y>M;/1-}A6nNTkgW-KXI mzv( i`mKYe)_("γ;, TOfS[pD EGW2j^(5 >G=?BM7ֵմ$9kg#.@|7>ccF -d4 .ڸ,n/IPX}Թ~6 5;Q8!CO[ ?[b:pAgLw`=\TL0iQ?YT_z@Q_ј}%@E|怸75ٛbG2k/>4EDSL ʆyCԐ0z-CJߘSS phY['.v`F >*u  n,D{F^~?﹤j/G 1_OґAR(H>79@~( (*aESfQ"/7 79orӍ.&8m,ȇ ӄ~cʒ=:8K2qeoFqZq9Tq\qЫ2xQNbxD3`NALk}m9%Fdx3zBce-^ H93;SP1jjTuyGΓYO^N[jn_$_ut#$Q&]1Ɇ%K{.JYh]1ʞջءՐ>Qsv:j.d([kOtJX9FZp1,_Kf{ !Hֹr OlZf#m2d]pU);'a H^ Zs.A)VX;* W4'dB\.> hXDT۹Qrf`qcp 0?2KӾ}d ˬU,rQ.@6 >V;>Lӊ:a#Ym[); 8e}cRޯ9Y7D,ˏ 16dXf0Y> #>EKwXZ(rCmOtA"`ϟK n59ª PJa8.<[/00#Q<`TbC(%XkpجV'[>l8 Pi\Ƿ"ҭU3QxYG8U |%T(FpKp9[U8,Ӛqx"ӡ'ʹDHˆދwŤl9i_W+ˉfhr'cW=xLDžjp7dKqA(KQJGoKc eWƪ ĴøQC˓{J}R"|$ښ;{0O+!%s{[aYH%X[^Z)M phjڙ3f(9Kc392;:{Z5Wjg%K\J sȪ&U60=Sl:t01Faj1ώlXoVz !tz; u^Wr71Px)U<G-pTOfÜr۽54 W6bIL*@&&vۥr; WwJ/LΈ7\VT r> ο~9#ۓV,x7@>0۔E.Z {R` x1eF 4%Resab0f%{6ilV{W:Ƴ%"Ϡ`Sxp)OIr8+3߹"MI +#[ ]hnjvR e sSrv%YXnqss(MX,{,}!ST.˹F{nACSL0ZHBn(/2&n]3D DiҕQ0 @yVy/rHpnqp?s0=Xp>'mV icee4I `Ie2^t%b~ #eZVʺZ$^7{Lc^Ȓ]& 3y)>0yWj e7eK9~DIKЊ@|hG׿ktwpdq$>Yٌ{s9c$/8!qL wB8W9v>]+)sm)X2V퇧E*H\Z} &l=xn[NF%31׹; vV?ʈ3.a͋+ͦS|i68x!L˳5zgEd@(,ŏ 0FG;_> !Z; 2}M\//E0sk{#ӆʂA[ d5H:H {PU 袧 ZIn1PëSoMaTЋW,n(( ګo$0-CU|/ovr0!}!^NlxJ|/:vXGnOuH9o C#,L/~ ]X-.~Xk[[n|c]*>iGiǁ}K72>хL1\=iSׅQd gi9ɣ / ] ^_>;CH\ pmmOăN E%l-t'}g+9{$炪[aVErQ!3* ՛ 2K˶wL}IDo{pP\_$mbj#5lH)Ϧ[|zWQ |n[- (@x2bEYÖ>*Gpl$ϝ]%S(ANc>4MeEmN\S2t?#A /?iږ*eIZ@SL"]֍1Msr%}0u1xqͬ}X^Wb#fu kA,F-FC`h0oKE\%Q1rlk@8@ !lժQ=B(Nܣb7ԝ,l̮73aZ^!yuJmdrMnA=EВi3.BѤ&#F@k RYLCԮH9ԟzS[{j7s/o"L_+fƝqYA[)иa# h9$K`d.y/r0 '6Ԁ^Ο%mk8&r-cπQ&[~|9>Y*#tYm H"`Se~:r%.L)0I:黝PlX.I%Hc::h=qBy$ B;]"= c۠%U:k3 .J[<6bcynxk 5bӕ:5QHoxgf QѷG!@\i=S3cXpkFWޥ泻Tu#vҐ/qx&s ! yWe#VG(:}Uo*:D9\!™6|}F6"%#8]ҟmVBO&yɟR)vbK׬~WMt!bP~U?1@qu ~ 4 ; gT 6,5^//I;%gxD6^*K}ݠ2Iϫ a793BC.G=Dwپ?2%&33 cG}r' ,+2=Xl8{ZY"rH)$$yV?"efg(!u1WQ0'dH-f] bˤ^UsQ.Jt-IoԒrЊ[hh6? ~𳫟6/,ǏZ1nOa@%}X'kOT!EA RWy>[bDU9O)w-}S_Y|r_pWQ3Zۘ\EZ)ԋ6;9!)zvQ`iz*.ͧx+uմ4ܹ@KNᲪXh2th% NG789 9:)i?8i M z sEJ6fH|!uL֎`7JkϬBYrBW{+CC8J2If{xi>(-S[W41/$9rlJNyԵy^uG+g(d"'YG-e럡0 ܓw9,&?Tu..!Wٝ ‰6x#]#-L.kZZn\0<9  +OneNޞ*~CYL7]8a =kƇJV@{ӻ[OQk&\kߋ&@):"0w+j *fe[TzYfGK VKka|ov?N6xz~0TJU~o Fu v[biA<b -?;GG^xs, i%H)~!&Zu_jbv@7[Z^^sgvrͱ|$`H'b3h*Q2Q^-}mkuQ/&SGҶ_(h˼$U'Th' qv;G&lq`n&ߛtvQl1F+/><2df\ؿs* Ti1/i2>ڭnŧ0ˆJie)nUi@2x3tuOR/*HxoͨAg#R:N~Ӓ@RGU+ՐX_XGew}ȱi.)J#VYm ZXzx:=6m,dzSٕO!\] rS 0| CѿZ_MooKj5Ԅw$("e ]H3X1Iս)[A9.ˌ"篃9EVfJ~V8QNI0SXZSF\S҄|μ{-&R], GsH=aQ3m@sL詫(Mx#W=m! o88;CKֿ<ޒ<?Y؝7Ϊ,%& 2lfIId[U0#'\d>N IEhgR]"'ܜa cN쐭40켥66FZ3 S 攩=`or ^]E:uR@@GsiUA{@C4 '-sJe wX{dqrq_F7œP$dq=/>%vh$LUӗg˰1/;?T` rO>RÃn1<./ -;>-ec[.gn](X32E3:zҠ:6.h3d(VX riQ,b$$3\, 8v# F^c{_gY3oܦF/<9'"갏I*?7.Ul:ݤGL_)CYgÝc 1껦jp9ع\瘯Arne»]V' ֜vCa6p ?nM :x ck: O3ɋі^&_ETA-z2<\b5e K#Qx-)P򽄕zg=u6>҂_!:Ou:!M&GϤ#SyM*[oԠvkڣoqz-DRkl!BzB9YTo.5!KS8!ڡ(^b%Vঌh3vxqtMB-) rm yY4;M hS& $f)a`Yuɷ;ߟ /BD:dKQAZ$(% 44Nt<֙+PT^ӧT9ht5~n]~nTcADv3gNpzm~!nM/{ɡtZl)0S7Q-sRu[GŜҽ@/_$OjF>јnhdQNjpGn{,cؽrp uk of\3̩O7-S "~RYjK[tdSy9* %2=f29%QƔ ܇%ՑXCY; "^BLz7S4o vlRtv7  | rõ96봝ڸcP*yU$َ;/F#M6GC;";mnǮK7CLtC OM+H<8OU5 yD;dNwI_Zb0mSG̍ƣ˄3|pojL2#DJp+$<8>;@hx11Sʮx*қὖo_1SڌN{ 0!#I=V)Ds k \Fl/U4 #j˩+$E3-jhe'S'3Z^ ]TYHԻvoH XBVlw?6y<]-!P&La9d>e%oA 3 9PLBӘ깭ؘe+n葡K2OEFn:TzgBc*0~)Qs;m+<:|N hE.3<ޫ?D{bSb&D m "~^~.ʡD~>@{^]3cRlGar1Cu@,*%H.p#r´QQwm],M4}tʬ =޾EWsw XZw$l4deUȞ}GYc 1!^-EQFB/jW(pFǤ09zzz HᏳAo)Ag:{.P JܻٺXyhbM*{W}ʫy[oRbF!YY<ӓD>WWoYfBx.[Ovhortr~)\LƸ Vƍdr:}96Bݛ^ϝ:%3?593lip e-5N`V4g.N)h`*hͲlɺ y0nDswq."\ ]H xk(G\֬W'N愙k bnB1/d^o@^`oĴ}Y*@۽I6*h}l0zZJ#3*,ndf6^$exVѺp"M!Io-.njl0u=TIѫ?:d}Y)z_o&efk"G݃n644fSp~!zw4nG^&:I.5P}-7/ pK<-Ƅ(7e_{>$}L[@*?ֻH6×z3%11=RE*2q~+)dk*jsO>wJHw(w贑|b Yw{\UD*:eu7k6:.E&+!ZR,șnq=*4՟f1{[$rJji#љ_-xsO.p5Z^1.+kq^pl.5oT 5ߨ- -Χćkuuqe͈hU_VuN450EWy0s.SmϙaS֯/$){NBj'0ye2.ycУKX0kĽ P=ǰnhk+4o{V_~ѢaUbI?,L>O1`Aa ɢj>TKT̩qJXcZ<1A,H7&WU g!t|gq>Q|EҚa^_[Cd,Bz g z7mT)X jx ½Ş( k!ڨ?.C!~wQE܀u W\Hö$sϧhldH5oHj#g~8w]ZvEݾ cN`ZPlSTUurWNeI'%41dD?D!,ݼp Y$yRACdoZnn `r\qT}2~nIjڛ(;|?|Б VOЪp v^9u_ja-ػ$lNҨAr)ݛZd+5..Ʌ-7.$Axy;eV̓|*)m}X.M"9- r R\)l4q3&aC#]%ƧuM /,mJ 3Sx(JQi=+nM `VS9GCkx71HAK^Ʋ) JOQIĖ'C( <֕iZOn* 0[cMB^@a57xm0˭991ϩkX*jUzń, aeGy.F![!#G!}eX4<%3+< ̌~rj0[ls0lV _n,*;Jo{Yyq;%c%X""-[8BKZ.8[٦;?Ua 1mEtT.\/L= ojNleM:#FwjVIð{nuSgo@Pny%-#*`'ǭH5M(XhO~h u!70_#L!H OpS|u%o-tMx,fn4Qf]3#1ݑu6jҚyz&RezIg"OB[e-wѢnuR9t 0c(XT7HCaZ'VjwKm@/A?Sv=%pF6 [K;L34b Nm d7&Diž/_Np.C`EXB):~'AIhq@ȏ-B^UcF&xS`-0F~z gg ZCPxp8&˧Q[ї.-^MmRt鄐Ew}J+PM QU[2H=ރz>quC0XDr7RHҜ+?[1"]w?\;R`PQ To6NlYpEȂy]FflEYUG)ƅ %ޫZz#-GȝR-*j]c*WxvȨb$h{S1 tw $Pn I8dϔk<Mk,_}(D](\q{?jHVywIz=қ$ۦ/ +6A(ǀ]I_JbAKbNɁC!HN)cL˦O^nv#sA𳽑y3S.M]ìa>a:Rӈ ȰZ oU̓s jFsJ*F ^@oaV N61Ԅ(\u1`6 !9E DVSLRPS5Pߖ1_fNw# %Ẵ~:|зU73+bZ>w;0'YM랶1IJLH%[QOSJds/]ՙԌJGMfޚ2=D.g ԙ) 9zu<iH aݱQִӟ@ȧjCܻ 2( dvbKnbnQpx$7VZ@Cғμ~lf 7 CRTeMep1yi('-Qt.D/DR2R:xe9'󪪿WȆ1=92в+C"o^ó*a08bh|έE-*HIn..j>`pnnxEIL1_VVWnPJ*\}q)D s<ʄ=̆7TCw"VQ?́+B#u>ݺRw#>lk>99x+:H&/([[#/l/Z*߼/I#p3g}@Nf":oڏ;[e)."N#{ 3ɦRĔSZn`m/~V-;[ >n;9ϝi wp7eL?g=N0-2B~' }o>y)̏⩎m5[dCf1 #DUJY8lɛDI4`yl9np5pflؿgXo1CzzrO_62Ә#4n80@}ArckPɳzS G\[v%CNCyC M}2G/zqw8ĔpJ>40> ~y\ HǗfPhJiR3Z} \ZD%1L#GM-p)6 PQb_7 l59 bC@*=0=d]`Sz1b=o>Jc;;7x>PQ{"h啋) g1; ;a a+o Hbheetq c=,(1{b%Wq\qfY~woplTr'ヌ鮜{)-I;@I EbeBҗUK ')i93r8w!iq#wa R Xvwo/(NU4w3o7.o+G ʕf KRyYRUe`A@pyqȘk2OB;G\)83pJ04R= Qx QVE΋wym1RכX.aZY,cLMx(D %CODTAbP/4 pQ%CRS.d]oL_@/NhO,=z#.#-cD-SOE1|,"Jkq&BAPk[Vṵ*bp25ȕ.;.7 iASY4T`1bOAu-KYN߮^eEmTbt-gCA 6'Zqj(Y)ؤim7N$z#b$o9b'!RFw>}u\ ;s5f!Cʧ!~^IJ~ @+i;FHzm)~[ @>?<0}t̖I {DKnPrpy"{Лr 1/ V$|WnY/|QKVyͤ0RNK7ecqfexA$]yrᇃyeq85SM{8%f ce^$.W{kW`=B5{D ^¡GynG?d]ʬH}:$Ů;> &aȨl8ڛᡜIԇ+u| 2noz %R|:'uR* WUgjSF1(xB\9['wE3/G/#VʧydSpnG{ ?g:`M%>A\q8:BI mĹFY-506q8DT)\"M*E(#SP~N 'jIpMD ͓ЮJ+oi)pt2Hc]&'#pE=>p6#o Kb'Vu3 L:5>#ś!; EUOx gJV-!]yz*LYvXq vKԀ>?"E+V%cEz|sN,iRD:>ɽdq/ox~%KJz&^L>r0,(@+R'{\g[Dz_55Iy_n?4EHTJi@̒j.dں/6D4(⽊072H{΅I]=!W]O4wwWqSɈr%ʹ{_=TwQrܩyf9rJ`YK9;".t6gfnݘЂbۇ)vT$# 89OpFP!ݮ] DaJ Y.&Pfׄ<xBr.'\D&7 ox[2,}b`.d:ZZq+^D/S&bej p$36F 0wr留*Ĭ?u~GL?a? aam,#`>ֹK\^#%4ztq*X;,nVI&EXy$67b?XD?&9t>TI"g 66&`hR>B6S̏ W E@CTuZ,o2zQy ΔW!gε U/,ҋukVd޳Qb.]ϽQ h JL[t^ͻT&"|&^6'B" 4v+I^ <'.0 %zir@@=TWy\৞vQ0!B#gegh|)-I%Z5adZ%ΐم_f&.#{pT&{.hlX  %t4yQbl#\2}zo V?pZy4ܥD]P9IIu @ 躂Oݓ;ş wE4Doң$EVDKl Slzha1 n>U0'eQpjS>7Y~m'WUm8+ܠFMXP&7HFDmX*nY57fJkE? .Z柵%M4Eesq aBPK5ꓢ՝\ ._~DM g.ڐӫz'O (XjZ/xTPֳe6b$ݖ^N&+eIB>tc(8²MȵVCp` !e BSΪ>'kԜtI KǗ]P=? &гzN6Q)m, xʕpE/.g$ SNP[AO:1ZHT?`eB]i(} Y/q(4(I?Ѡ]cUn!vD j= Ê7F=fRk$Ќ"@3ABúx"aT:⯈E8[e-|ݿ*u$~\ ~5ݰWJe%0N(i!dĝ~N\R51J'۔0Rzw•6Uj[g19/d[{nWmxcAba33ZBv=WomgFwI$u3;s)AÌpV/0Ck6AC %8Tr+جus0I5%+;z0:}Nn,"e> C]R- Jπdϼ-9;}`=~] 1,?'B-t( A牽*'mpⳋ3׳NIB/vm!}cmҼAF1=)*0$3 ҿB{isn~ }iH֡Nl Z#B93\O δ 6?Y϶6Zvh8!Ӵx.*l2Ë},ql9¤Kbq:6$`hF0j$sӧF&ב,89<]}q^Fqw _10;e#j~٤cQ6loe|AVϷ] Aifjj|U yV(]#Yg)lӇHJ&1['b?-ge~(O呉Ol9'(2١`oOԃA948Ɲ|r bM%;݃/7l|4!w]q(wkvr=Anɟ +cpEHg[K$XL\2h0*-dJtb:~,Q0j-bj-_gw90wv0ۊ(`#R<@[d1|j%,: JEn.Q\ ,^4]—qb"*#EiJ]\"myE[EHR R f3c=W:iZRE^X`()7GoԚi 7Ʒ52F'gvh,.>'+yG׵WX=A'4.yzFxT76塵Jb8՘tY@j/',KW%t9J8,Ygs.w@ V. I>:3|r,']Ĺ#+i‰忪oCz|/)6v_k-ž:O&cBr 0zqF^N`yniahAV{ p"j\X @JDŽJT{$ypJ &o?H=.]~#ZҐ? SV~Lt`!zI4uOXQ-[xBژfpPqG=)`ZZs*iZi+ia(hɳڰSbtqtRtifb+؍pb1>0}~n< @xϪ+^K?\0RA>g|8912b>ȟ0?V-VlLJyRo$i"?@`bwYaYwM# { XY{B|8]Ƚrwo[Jqkuo,2h폓 x厀R:b院(▿5,,[daz.0\ސfL$u - TmA>(8%_(3!wZxgb'BbēM*{\%zl/:ŴGZ#ܰ m4]A玵Ef1ܖ25iGEi1z&V%z Qs1|P`H&>#x`op6]9 TU2nu %1:~JW\- ڙeݿC j0vܯ58EݓX"B2q:{;T̬MyTMMwGG@ir.URO4ym"ٲvn ԔZ.*G;?3kuž-w4~0|܋%!pktw[;u|WsĆ,VIh\kSr5<@#CɈj{n,8w3+V|UFs ∨RN0Oȏ:*}Ar֯_WC)ք1LzcUWM"Osa9S ޓ\>HC qW!;qAFN Gyg#=J\sSֲs"z$DZ^cY"y eZvYxٽ4撹zVODM4mcRdG :)v-ZzŮhJJS{5% 9Uې MϓLe6vU(qdC{ "w*%r0(؇=LT;ϘԸ@?@wmD<ҙĿ gE㑽|O(h _Q#X:ٯ&i=+ކ@8}-T׍QA1 t*/%d54ڂZ:[Z`xsg%k:RTfCxx E`>92^Tĥ8u}F^ 闪(+n!zf>?n1ȱ[  }gE}ƼED!,v]X׵9uaQ_:5Qõ@]mg=^?7Č`֘ȷ(Q_s<;#ٙ'4Q7Kx9ȷ&>w5:Zk~Z*ZL24Ex:4jy&~9/cU&Y!(CI^B˩k/_,y1o~_bqw pbHEz_'v6+H݈3 `LJrS: <@h3[6ʲ4KzHDPlFWt.:<ַ&S󺷻3PLΉ3Í/4G:~k ^zDVFnXRv廭 W@>JhެvumЗ>MAu>dL: O:2I*TD&|M<nKW+)h. #mm5VLj\XcUqŝ؇-w~-C44ZȞQU;˛?w˳E-% cOl'WhbkأߟO$Ek<ˬ:6 f`9OWrPٚ^F e|t*M6zLpۢ?݇?u#ֳPDqbǝw; QIB'۬*6f;m`2?, $ĝvps̯Mivc`3ι̺DHƨz59.i+;}![!Fȑ(#"FxscuObT? h8 gQQd?H~!y )p>ڀ_t)|UR,<=Pҕ_ETor<갢um5-\Q3jzWE2eE k3O&Iض PHu@g4דy# )ì|X8MpP:ň)>'[Rk*GXk.6؛܅LBv޴I@F0[RYeT2>̰{G(Vsx?JZv$>'#ˬ(&ruaeB Ÿ|sr3H.3.WUX]CKʹfW-1~=P>鐺nME~*N  #VgG W6*AoN]']aF> 3h4ѼA'7n+J#MT{e/9y\KCLK{͎%т6:nW7d6~ 4bCF!`}ݖ27ͱ^cuEߔL]`8l sîc<1~x="ˬp@i-;p44}Cvw-P*e`AHJ0 +CbPiNܝ)VV9K\@`{wʇ}_3LZLDJxf@20 |Dnx?kfe,1G7V?Qj/㏻;C&YXOe7e_Y 3:8Q[&FbZ)6ȖfF㸨>veba6#eͅ<8Hɢ\8D8lWyIѤ~s`!@oN`̴5=wO 44"_Q}Fg2YItM]pQk|VU_g"Dik\&^ olg JI0TɢVw[q,Bv\WaE;&K|ʺK4ۀ=Zc<'/wF;#-`kOu q=JkIBYzF:pF||컀=NsdFXh#$?.'8,Ǟ?y9bh8R!PyD/iieX`g4C(&@ͧ䦜c=e>Y2y߫c+NzVMI(ݿnlԎ--RNUV" isXbшVyb"\xZ6f8:q&Kc2jArG'pyj;0R1LAnT .a!1pUn_µ(n45͠ĕvj<|#>YIxTy8[Q?GDt08zF-=rt ;[$ç0>! 6cFyb` mwqx28RKTf'Bs"mlTy !3ᦘgw_G/[WI^)0-h2wJaE֪! BʤE\FSgmwK ^VuL-"t[)vjR;~:TV̋bq`\_nTS~sh~|GԸy|I~&"Hy<\p0* mcG秤Қg#T[.~~qߎ2CqF>=&tP~0 Xld]9鱬yI464iCh/q>I} q4-jkEW  f{7lf|qj-?X]=yB:@2|UCWE`=WwP*>["+";j+#QHwi8RQq;& }z">{BtGƐ/NjdY_*qv瑩=si]T"8-o3$0ˮ+uΒG4bӿ_xjZ dEP bqfUDV{ V!ڽ{،^g4Z\mdR={J/ȑжnJ[zʲ;>۹O:DlCA>u 5q5;U% &h#|4&=)%L}4Лjf# [zu AºI=\̨AbynGٲ Tv.:/N&q;'+n"aC H̃p'-i0`-5JKхC )Kuf*nWܛYR%7~C:8ʄJ osKˎN`7s;~:;H8%17"㩑o>7e-(&&JG-&]xʅJahM~| QlեEzxԘs +*K:I70z%_T<,kqԐshnX'A `s?ˠ] + ޠ'Oc]OJ{Ia zRLbq~rk/P'kh~hS= D$VЖnu>L@ϔ'! 4(rxO>;,Q BS j1mB~oA˵8xࣵP2if88ynS[ eڴi$PSHp1'sϖy+mT8V XZ?> ҷXv¤л"J(m ,5x,OoOu%cԾJX1{Mo%};[!mj&NAN}]& }13TKPOmyN̬B%s֘grt+s.:(q@O8)rㅛEa8} ܚJX,cI'W1p'_Z_f_&uNZ3<@gߣ2Їp`Qw9rap6A݌PP#Rp"oִoJњj͐҅xVھPl[L[z^Zſ}bKOԛs-0;{ob,cpN59 bWz(z}lG۷;@6TԒ.~ bNnkĶaGQnB<104\Ҵb7[`_Nu9Ra!DJ 倥XI3"ڻFόL%F-*K @3'ǰx`>A*(BR ݯ0p\Em4O̲Ԙԉ<ɚ&6Ѡ)L1\_EP([*aCjQ7H EuQukFũ6 S@#YCߪ~; aQ, Tlùj fCbs=ΩdeCwa*"KBx}d4_ lm1ߜhq%q׵ro[_cI#e ɉtB0U4~׋J ;c}̼Q_Un/Pc B}PZǼ-ej_ȳ9aaЊ1a+WjqkN:qPU1^WFфDI7s#;lJP߀Q*[e0 |McqkXx\IX?XD%8%1ctLy. s5\pYQŕ)KOˆQI%B&U9נsEFCtXkXy3t %~PuWPu]*_!1tJG˻; <$̰de׈S<}} {?/#䐖^]ߵXh}+<{@kuX%]P$=jӄ$Oxl k K mC*#,-ϩ{X7~g *!cĢ[Z91pZhtENӧؔ%NUD ޞeCy>O$8kp#ha]uPF9 [ӧWVZ'|eOrcWe&Ϩ9C~vX/ ƍ[`5vzEbOx2=LIߌ/0T[L !P Ԍag!a,W] -.}bF(_~b",s tZo4 %%Fz5:]ު9plij $ JYD%d4$ _~xzIN0ŢQJ2v_dء1٢n32|!rfy[A8 y' `KV"l_L0>'rVz{;ڙM;`Pבq=8Q 7oKZ5R[hb:u&D9순*o5C~u+[^:(P.TK-.Jr\ViOe6Yz:f}'dK"b&Yr";lx*/J+6pRAnmJo;F5QvXdQt[me`e ~lVv n r}[>XuRKEnpEr` L >@YAVe.R_Key2S}sZe1pHqt)s*(ڣz o4iu}zM:1>%VM5cr&)WD%dXMጬ>v]:E![w%uKQJ(mx Q_L/Җ a0f!Mo:%2B7hwBQɥ.`|JT['4&.usџ6u@Cn8pdܬn0ۨpѼBl{ǖM"%=tPIMtL'<j&IӮWS#h/zq`5ľ`4)z*= bT JUm.qE{~Nz N7K^8.q Ϻ2_"< +ĩy}A>qd,V&:mgtdܮxe4"ӣ|OnRT$UمDGx6)!Ńv&ytO,lӛsڋŮ7:6mq=?W|ءJ!}::Ǔ}׬ӌAb}v63(%{:N>0QVez?Fdb.ާ}g%&?mEp'KV?k[ԋ.Q7^5mj3KAN = ZEdjID3\np.ŮF"ULpZ.Zz`fu}} yliB&T',.,w)~zIvT*<>qb׷#_AF V>A͹>:=R {WZ33Y']OU^*aIϏ-TP0()Vy1J!YjAbІN =(*1؍1~8 r6h??*CO׍~@HZ<=ǐjnth6R?S bPy'b֕ᒅ7A/:M ,#ZuP]z~s[ND] q*4}/$ԫ )\D\ 75 FQ,ANX5fnU]<]xTNyA äؿ rXQ˭ȋ[Jh7CR"-gS\4|m$m?pSoXidh:XBjn^8.6qOHp 0|X`_Q3AUǕ vߡ%l_\Fqn]A <"Hlѭp4-_(IxtlUSQԼ6-fmCH_K tzVC:"8HGL|M,7g6s91JI꧁Cے~iK&2=1KTwȅ@c,P݂dI2|>v; )X\k95+3%os'brJ1p6sZVg!Ql}< PMv g,>D5\₨0``zw9|E7GaY՜G=iLc2X¨юX#g>4· 2p2< q&,F>W)D<3k &OVcc'^vTj Sп1y,^u\ZīfJ)F9)i/)Nx|gj>|2p&>&+lAu4P0#t.IŞ B[k iy;\G)G`|&eK F+rB>p!V/h {JAjҒ3qy/@vZZnO#?>'9Ϟ^w!)RxM=3%Ftg®([5paqꓥq$j"1QT(p&Xz::O|n[ <򴚎C=%`A =i^Ϋ?x0eno&ZAlA\zM1h9Z.q915L)6scG (qtFABW|O鰎7+ n.P#abԱFY[[}dn׺r[Ldк1zp}|R956| Ӹ,pyWE%n}grw^z}GkbpoX{jl-/T=@m\LlBFoԀ3 x(1ڸ/eZw r(]xj9 V'Y @lBvpj  mӔiAv|4T1ݜZoEk7;L+a a^Y9>K eˮd8 eoʱZm#^F*[v(O9碾#2.IG-?(ـ3*ĵVNZ1ӔI)QVVUУO{6Pb\15ҧ$%HZؾP^gc2BI~лLn |9|(E ?sMi„5xbP02+6*s/WJ74:TWd!F1DL=x(90ڗ^mƊIm-I|-DuSԎ (z{ewH nu]$3 \K6XehyHh%WeA1trr4fSg;Nv43X)&p)l&z%o?@|"U%,lK4G'3#pQY._;MA{e2nz“GClEߌa9uH:se:E D ԉ/zsuź})Er(<{qۏ9?8m:Zu9,Jݘ)=+5^HڊUj PQrRcCKsUƹ =IL﵋  -1r2%^KptMSUd3Djg]PaZzZ'sp5O'x$>(^Ck v[w^vxkr_{@4R)5$8N|h7FWB,eu$4M*))  :##㌢^^P%tK<ˇ!$$ItVf hiDc+#w4~G`%7ue-[dJT{yDq {IHVa?jb3xJ=Ķ{% zs3&KY[`h[+WcY+ 6^Ya@ D?}EU8}YT*X9 x<~`V3@GEhk ۳/~ܛ6>aKD""g.L:DDGdL/+,[dۅzzEܿ/2sd(f-H7l iyvR>I㊵VyQtpۇzR/H+Qzh_ƙt,#{/P7mUaN€akT^߅98z|,` 4h*$Tv6rt9 F'Ν)ڠyM Sav6qg FA!vʫ'Io{57?~z5(.f9ĘM$}MuG \qiC݃d^g]ؑ-M8 `vjuyvG*&(Vl+۲@A/+<\HŽ#le,Ih9Qst[}^9gQwdtc%3}ŹFv1 ! b/O+`HA/ Γk<9 BjKlSASE n}k \0n&U}K9L@͖O6@^=ÎvFI;$nr+j7=F kN6Q1wӦK[NxqO!7Q*;I]7/)]:J$g z>hU;>//a8H+,&t d^ж6>;˽,3s27ą7ktuOZ=wѻ>#c%Wږן)h ϙ+&, b$jɰ٘B@!!OoG=),7kҠw,1&&4VװSPqǪ,4O:*%PW ?_8\_ݘ|?Un:B:,h/CFC0uG8z~1QGdzl¸zŽ@j!:v7ј_95<4nOes&Cy! $7b|Ʉ:7Ӈ[ДZbnقz7*NB͙jI'piZp0"è/X[Z8%w;S-\sϞ2q's;!#xe3b,? w!+ lԬ]WRDІ L:5Y*؁CˁQÃ"cZh4 OccsF.;E7 SicQu--rFB9z6UاXQs@ rHX,tl FXp .0wͲ-I5+m\{-(?Mp㡋ad إrxo,,,zSlP=ZE&Ryg 3'Λ e'U)T敖O+xPIsY8út!b} PjHVQ.: 1?Z: ! (\r5 DZAM'~"a)'\M]M3\@ mXd'?JeJm{g([-z z5dFM-nMì0F=mwy.0I#K%`tA n8zjsrQ1yu9ʁmR-6<Վ!rH;쪣"9ڎ2XaqeZdNbx!=#}³ę0|Kq6}I1 \AvRR'^aVEZDӒq$^=Z 0  p7 `"_M.0Y)̦kaӣ[Y WBұ4#J]"BKl``cb'!u{V=g5b$A,Ew"!Mmpv_\x-ѽӀV`&"ܻh1Hh@-`\Ӱ%m `H%ˤSD&45˔Gm# (( ;f&&/aP8|M >~,#%̣]?DŽxiMfE-sl B2DT0w1AM#Y1V;߃CoCQ`m[ZK GA:3CB !ۧ9(4X ɞڲC 8!xgxx,G"th Tɭ <-M|c-f*-HB5(ܮz$*ě2Wӈpu0nOXU<)1IauJ/6\1HHhXzNnd4j u|z]# EUdU] -VxJe}R.]M1/nL7 LC|907 9]rW^W\9PK,uOJ>?)?[zfQ5+ܜS?U|AalYbCv!͹m@~*Vg`w0M N`*ED>?ICfdԣFJ )‚#ҫkBcVqp#}7i{Q%Eގ`B8AXS54%H88w ;i jCVDBbwI/[i~j,Ai$ F&TG4c жNuCd ݁hG] ͼU3xd݈n(ŧ |>B8Âjgv0+&3QahAv Z+"xށssK.Ze&IdžadDíĎXr\h$}}>k㮚jv:hxԪcceFMJf>ꐱ$Է>ؗp4Ҥ"~9BIb˰-ϞAb#{&LZNfS͸FN /(FSaDPo {QI$vN"~:y eD#ˌ4I`l#>-jgI>66l'xH;SA]xNnظY nez,ƪ`r1hV -(Y(|guʨA>9}ȻP9o&Ohc @^L}i,crj8%V#`Vc{e *DviIzK +1@(\vp.1RDZ RDprJR7ɂ'Z*`d5N Dl۟;K.}߅p9~x^#bbwѤdDaI4̜M\$UĂKƒ"a5xˮ TX) QzBx&[ L;G Q):yWM&g-'Q?W?#0^ݦ?[޼o}ӸM=Wnf[Q-cA&mC`/{[6n~>AZ$s[kyO 3mG+]]U"ҞƎ'O&ߗi.?L-F𳢎i_d=DWzKR0ɒ&D̸1ql}XR2_b=^w>4@E$(\uVrEn(&?}.ȐeI TiJ)BoH;EJ PTĐT?5N.1SATgÑg#{W>  xνӗUt'Q eI]j?!"p_4 0!8$Ft ľ(&ѿ$0](:ۼEM;>jO$[u,MվE7,ERJ8iĚb\-dhNW3\( ugF=a)K[y]VxǁC$ 쟄@۽;.b֔s G*l:$QVNu3׼- LBl'kWkm˧qhƜ.NTm=Zۣ'!W]|0ߴ✂ĭPuQjt18NlxZ zqn'&U 3{o|LAn * }L#%A>wG?01mo5N.2UJh/z(bǕ6i~7g^^yF! 0=QɌąfTXg-e(kI'J0'CAٷEp T$amY]Ԧ5A1ěc~śrx8H\vY%0kurRY4@a >YGQ~%3DcXQP"GxPॖ_ߜ(k*AOY]m.A_&7LY1e|-A3;(hHq^J\vc"2+<#=9ABJWBHR'G}\Oqxu9 ⸬Q Jxot#4IOwZH}XҸ,(a++ $ܻgӜK6 >wvP Zd3+n]ɽ^U)" :EaYpu]wzTLaG$rIbv 9`9 *X@v= jV&;KOաI}Gh_0}4 [h8@}󚙓6?OSױehOk -O=xF-<1)*䀮^鄔T3>f kx-O=Ե_w^;8sdz 9&lX4v,j1 7*+ }S;%|%[ DBSh[4dz C-Qfyz;. INy߶~;i5Cldx ȽIrt Vw%mQ0i~tA2̀:#䷗4(ǃ U -nynR0Q{;dl%7?C`7מːe <ӁL*IqApi/_(ܾm,M*ѐN z0ɡܖ|xPboe}t μQVȚHmŏc%g>t;aO =L8ڼNw^yY74& r V)KW9;8Г3lXa3dAj,Ϫڋ;~ٖ[b/J"=%Dz&毑̀%Mޚ갲֫bF! RZ/ LFrthѾ1JKc#PfmsJ>rYwcV_HE{g;g5p~ڔ9ZWP܍P05;`9Vxtr3>$n}9_ d.RpUWUR~2SvD_H}pJAظo GXEJL-W;AU"1aPcHLHc}%8.wmufwz! V/y8r^yÖG|hS9N`Gע&$X)g%egVJ8d?࡮Ln= ׊8+lp..RGOdccò@u2~Id̔H_4%1!ze欬gV˝+*TհIz `Tf9 <*21-= ]+C\ d&}-"'<hZڷ%w ZWmP|5ISW3i"9&X#v01s#9hxU\\#I66Qa[IJ1}w TCqC¤kHw Gk~qR8'zu%!ٰyk JI|#$_q< o92$. :~Rր{6SZ5Z@vq28qn-J]ی* _U}N08YY)I5$vg1`0"KB"yknRD5lB*JCZxxQmᩮW(h!vҜo*GZ~=$nΪ͍3/Hgr+ ڃQ.7^P{I3ߒ\5g*DZPcɠ^Gl5:KcQaC=2Lqp1˨JJ-?WɏپWRvq of'/y}F@uxO Iuv}n֠ldؕxWFkSDrD4;ٞ5vߚ3Զ1?I)R8=A(0mGy Jʈ΁!" &w uImw'px}smhgsv'( \P@b-փ<"sfb@{8+ Y{dL۩FO~}9!krKo|$e   _;x^u:[fB/Ȇ_2ѭC;~Tz28/?Dؕ: sL"*,di~*tbBF]{ɹx bw3u[G%A"Tˬ/6]cgU(Xc#BCA"u2U7̒4>QiA5 7*Z})쀐1óO+U'꣫Ȃū}P02te|an'P ܰݰ:rHԉ.tZSCӚ@qGϵ4#1:Ngrֵ<k,*I,RulE6A/~:%'3N{Cc߁AJAYm0oAe:]0qRrusI|gFJ l-(ol# 6[.@(?Z}iAVOD-(O|^}IėtAC@NX&֢PH΅ҜpMb e̥ P)!GK9H/~SZbgO+x3 !M "OzQ׏ xmPԨ#/e3=dVzt92I ?oh3$YOjG :-i$UWj`~RC'E/"gD7|<-4Pilv%Z7+B&CJ'~% ^'&C4n'#~VCpMs 6rx[z^ pʮ1`I:o2Q묝\ O ZZti?24?1̭S#o ?P 3#7^Ga3 ˒iɗKĚ.(4P\pw"5{j| +2oL ƀD.ta a™W ^ӎwbB?TbTTOBR~ށ$Ԟֈ}tj퐯}?gݹ1&0?ڏ1RFy@-_4 !tM4Vuh;f}څ+hF+ -mVZl3 <'>+՛| bd//mOd~ p9."A N[&uv;@|f']G]DQiXM2*⾢6MG <=,0q>>渘__҈Aa2lYDkY!xQFW5?rT{H]/=ʃIF}%0m&ew i-.gxDM(ƍ 1uߘfbSRWd O=4jQ24YbABpM+9LvD+|1Opкk4^ኅ;Bj2ypPn F]mʑR!ŔbsWYXG#8pZ {ih}W]6hASя> B~| ]GtRev&}67\)n@>yF8.\W(%n +'%($zɛ{e٣mnک fH\< G"_դ̯a"Xu(mD#5?V4pw8 JW7-͎cx#=#=bEc ў W|n5[ yL㺑لlsQ ڥ-+Rg2i#L%hcME=2i{\us2DŽ#e‰K6&N nLl]$.HM/pmhtQ6⮔hv&SW9=1Lڞj\lB '`GP#uzX_:#a]LNg>wS[^ߕqS+z1j\-< cCs51QP# wB'~;xfL[Ct)䩐}(YS:t+fTF*+XXVɨLP˧υpY5B`* :R<|ҦNeIvCao'79ʦWM,V2w;*19 dx@E,dh,HyՑ\vS`:,-ӽioY6fQ ROFM@AFR6lӠC  dSMbneA{{G;K)|azhZ8KϏ_AR9VMը3{y\*!:*pL*4/ 8KWnKڻĕtSjqvuA>q6 1$ $\\B `yGngVWrp+r1=,;4P|Յ,ˮPdJ褠Оe/B,Q]ꦮ} \:fMuWj8/E]&![9 .#4̓F KqU-a޹.F=$OTqܞc)2rv@E Xh8 xcm0|9٦ n-xoA_Rn]& ͦ,>N]H1A>R=koțƊ~' (]TcN*_^eJNڻ7)3򀵈CP fux ƣ**޼189֌b{/ka*Pٱ9DRFO{Mt,2> "oBe,48$y5eм As;m;=t魇29Cf7lq2_qUc8[.eL!;|[HIBEdz6dlk~|Ɠ4͎=PL_*/$+/{$ix7A:[H `@OPU\fGQ\?$+e, JKEk^M7Ytп]t}cD/ WQ|xb!!]p<4 Rx ?^?D~\GNpkKHf57aEu -<[;\=hA9MucK*䝛o&ÛͪeÊCdeGd'ٿ}@F1hOp7da$)R\xzЙVLuPT!Ԯrk:}vjUZڞJ=ud]xIQܼՏٯc\Y53R@x=1FFq씺4'h5쟖^Go(hF}sM9p6VUJ5_jS}*/h(β_ޠmc+dI+vC O2 IciYqm_CjQ0s_](%Hܳ^t&P:m+04V'R+4mZgb@܈6ψt+jftI~3XB#5lM܈ۅAD+}~>/BT.Ab;Gu@{I7-r]=N_AZZ"ZBiv ʃ .#. Tu7e}eiWM&TWz 뇮n*^ݤ{fJwҋ"dn-[_W$4%}9)}+ޑYyZtL3ᅻS/ `EOxߚ*Xic;!`T݂y. `Z,QvJˆ)UH giuzC`0RŔ<™W u۪ik'0zz.\nzhDߣ_uʿEl6.`PGSB2PRʑz>I2p1,{`+LEa'k( Q^Edcm=n撑XD}uۜcX̵U!p u^SQIV_Xj픎b mr,A_VIX@~u*ݩab hNި˅Q۔䴖sdsRkڞ݇Tb]x;6]yQٴ\t $&G?vUigUR(^G&֜ T ]GB!AE6Fi)*3VvA=z~BOvAi`M:4TC /pI ,~d!L\n9[;+s)~@-dcwгtr]kh5QX/!%, Y(cm'&r^VYi3L7fHsh2AZ DA)9 MktQ6$c2\NDML2ґs1D/(7`nǷ $?Uecml$0 W@`g(*Mr&p l_WI*xyNX@7,ݟ"mXS)HƱͣ0<cuɔД4wWl&?ǩ˸ml*5;Μ2e'ođG,Gw{VOm#2зk +~5Y($ ]kq83so8_*fӊq*A>t- UJ GM"9dѝPЀ0'_)ɂsFi0P 9!ro(]eceM3ˈ5}nNU4òCG[xM-(b9;+դNj&v61MEڽ(ŧ/(x;VܛeLvj+1[xJ޺}/L|vkKCU}_O/'+ɓO  CVU|N"T.0,!D@ϨW8""۰Սzi c`sϤHby.jU3吿|'q3 fI)d=/%0O;ۨylIS -(svz\ wVQގ/R+u$LI2n$,bJ-KӾV/,FC]u_z*2& ʉ.9R~ȫUύ%Ԝ|(aa^sxzthˉt,bqTVj+Pq,x^@#FCJgTc$$BuX,2Ax/_ZWpEi?Oi 㪂FSR/qi)ˁL9mpd$ ʚ;YwnT5]-Tcp PvYN)kHoυ7ֺ$# Ps'F/QZA>vd΁) nU3QŜ~,#/O,4TxXcd7` 4dușKsLG=ۮm~|ވ~tJ|)t= ,3rlu {w x#g f냗vx F~znm!*Y8QVW .n8OrLkp=. (CNulckGz6Q9:UHV&̷1@a}*1l{xYJ^eZ+ITKM>27ms+g:@Cz~\pC F'  fϜG/5LP wŗMA=B$N!N!% +Pc=~% ӓJG̲h8WRK,Q+cXpgPWMc0 @5Ï/6MDX?, Ek|+MH }+\ DK|P@=_HS U<22[:zןg:&r{7集ngj?QbąZx$|\.oZ$6EZ-ȧ]P[$n4,d}4 wLѼIh Sp0QnEȃ^s~o6P@0Z0$M4M +,H"I]Vy <(^%vM X5%EzhtzPN/1&$)JKɳ3KH%/A3%ݵ1azL',#s`cp'T҈.{gUٷR6dd {g,X.) J[vTZcni%&v<*m׎Ya(>tf+yΜz8i@p 6^vwbőȞ z"yig0?{9@lA"/q87.)p߈ d(ՠ |ĵ希Hjd:CvGa*"$DW*V8(>MdjŠLUzJ>boÁZ9kD`-dɎL8 5SfG r 1픔 eg[: Rpe9DL3u24Y, ޽ ~Oyp]&|B#{* O>zU% hpk{ =0Zy~*ѱߘ论WcδAWZHx^|1x0-P ^OMg^y7*JlfRH4NZȴZ)2U0Ċ SbK!҂8=%oRRfշ}!^m#}%oY-WB: xCvYnil :6h(PN& 0:y-PņlpKcefE4\ZC, L`ܓF/荽%ʙn w|̟I gܛF}MM1mC̩j /DzU & Vl轺pDfvN6 fEeJ]:UWBe{wnu6X\deZpopOQ MB_gvCQ{O:-:2<`s/T_&o87 n8k4ZMS掭 $ YۣKxpa} g\#BVYK^e/ǘ(,{,&jL/6tL-ۚ*R5 #K.R;ugUj,lcaZLDb(5O! Y}uC|p >U~tѲK(  w l3vo1aYW8sՙO.]3&B#P!ŢߩpD>?'DcL@lzΝq/v+6D@\%=aۑ)Bӹ5o˟mASka#{HB"G6X/Az=u:m" pk=G3'ϳo[<]`Ka%!!"H 4Q5T2ud75@mފA>6j8jEm]J)+pXw7ϱ%M-QLFlq},[R+*d&`Hf EuRZ< 8}Vt}lN)YCpԊdMj<I-v%Č?V>t"LjcݸOgeHIR<(ri2 FHHkeV$).\^ 6Uʔ( /;h},NlWScH$\_wFDžǎ( or+YnR*[v[a#v5SզB%VN9^T})~I{C~-2<"56w&q8ÑI(SxpC|xθ/ \8: /Kk &ߧ'dҒN/gĩ(r:!r O֡BE ^f9o&'ʓVuo>؜ A;UL=Q ,+0mDG>9tP6\J o-jpp@,ҍ*sk}åduuUhsy=?VܥLE8ݠeB| w-gslP}"`^Ъ]'ʸJ5^B*4PmAju7$WX=)x$OIuї_z[詖֧\z&3oe&- 6 e]=ߎRy͋Z\.wXv OG1H?˙9?_- ?A s~i1w0B8ƣeˍvD>}/X.H^m+kػz2­) GpX06w). Mګ9[id1`)u<-;z YaT.ה 8>d;H9]Q,EﲕPPHhz^sf5|?\ų 9R/w(h&b/uO[a E &o)bXR6_ d7(o6vk#ޓ&e96m&=2>p'F;)xnȑ\-Q]۔Rk):4E:ۆ<(ݴ|\jMED?J9r~ 31R}$^.9 qQi:YR*rbI]52S]b[w&pM!HCS+Yk+nf~VYJ;b7 PFsQY%%vBwݿG~=|%,pCtko']1ap{vB*ڙCcCmD$=j!T'|ƿѹU71B0Pv'q"]x HLMv>-c3K,U&8\(y-Mb-ތ1:kL!;!NqtudosQ/tr12RCU@4{x%vAe&Vd[O Qo,"L' uGWZx sr?]Q=K'SF3,b uCxlD8Xt;N"d޳xgx|q:ǩ$It0ݱJK8ԟ֦tfwD ]m;ڗwtV]\v@xWbAvb)] -tF4qӜw.ȆxUHb]?-V+AnUOnLs~Pٳ"NW`p{1?SYۯtt1մ@H-D^D6&::GûM$A{NnJZ9;Ѐ}"H6Ǚ#R-COzc&JDb9'vp_BzEH3&J>6dG|C-L =GjkT7NV$@[!Єl u>L€#zsnx8 :7׳tTGᾇa/ocI^NiS<-~iQ@b'ro͌4°D(:a\p #0[fxݟԃN%kM]vӦ! 6 V--P6U->h;>;DN!;4k"Ⓞȁz"bb_N[r*W+g\] azZ9+'(pB`ٯCr DƱrb+.fII u/rld a3BT<~4<3 rB*,bB;We8vυA%aoQ$lt1FŊ\-C]8(<'[@Rf術5u/w .5iHޜCtJdb`́.87fqaV1˥B|sJm,e&j{Tޜ+?F 1g_ 9*rR}gin rr|c.?@)Q>{LJLpɚ1b*IpO )t?ޕ@ͧ:3uֻ6Tq~56"sE. xo@Jޠ* J]k0>pCW%4e'=TULYKԽt[u6uoѪҍT1`!We&]I@lRZ_ wnx@R<=|H⽴$Ƹ;5ˊJX{5r,]2(N#BHCb9=zNSڂo@뽇s5);|N[2yIyw.LicMYڠDhCR)@9QFU@ҿos eVXE`q\Կ$D|-uWK:.8J >w=!&J|"w `&2l5AmMKY|zgmw {s hqHEv1=ߜ"M8rҮ{uq߾`<09BO<)*Nj𔜙o@Dc*pEQϊAsRޝsE 7Trr0xUTfXV,~* Y|QXOh]Vl =HwOf`Y8s!=nkN{Kr}hا W907iٝ\ [eH+h(ZpBυg2g:VTL䴧E&c$* Ū6/"C3c1*N `i?=%'0XzǟfD2\’[Dž_Rʁzd>3Y֫le-p(*ŋ>SEk8SPAfnhd)"9=iy ^܈-Y2"q.i+TnYWXq>5B燆q2~}'[ڢ@ck@r]G4z¢]%[!V|l _=.QY}`N_pLȞ8ח"DY;J)(:Pnh+6X+{wmPl$C3RYFij:o09-z+) !z%g) u-Cdb#^3S4~AFDˮ6yŶp R|p*VV|:睷h۔?/fMl6|L}#D<$>܏!45-DyeT+[ܨzKflOf vI??Ț5'$f>Rð!sY`%Z<7!|Y? ]=|I׋am n=MvUհt|twJ鶖$8+>0Ք(4~" auw[f|PUw8">Cw\rqkk;xpZȷ7O)&ż @A(X%+}:+RUE&ȖB4§h=zk9d!~q-EUd}34Y;rY kͺZ}.twGjA`n3Yo/vj3 |Bw pB_)Tֺ9th(ws4e|'[{r쎺kb6(_ru`p R}ؓv[z wܳGgo*4$̍w]y O?@ sxGV;yO`E:XOgt/8f5͞X`mo{5A1W '^n *^^U cFi%{,OSUՅ|ewZ3WV ( N y%k.,yRjzWj(:N~#&RN;`r{ƚ@~e5Z^zc~yUw 6g,mk8&7Gn \W8 )Q^pߏI~60ݶc9ŁxKTTqrt Oq ڜC;cRB6Uoٽ ?ʧ>Ly4N #k785lڲS?_Yq8"+Vi|}o KJj^-)vaJ+ԧYxN3C0Ke"vI,ɑԱ $lҼA /S] bwXHCy$}Epsk6 ViXxQ#v*PE"ɺ 1EL,ؿͲ_Q|V" \_)mS9/!;ίi7[2ѲvVNog=e+ 7PZ얧=lɶ9<>,"yi\^b.KcJ*u-seaGTְzn۠QkU3]/]9ɵ_ݥ|zGyb|/i3CqV}Lgk(a"u\,#:E}/ e}-Kd^} ҪS]r%Uf}TXRrbf2:w>]hn+J0a5 5±Q5Yئ%=b 15 g5h0Biٰ<7ϸ)KnVu+B[JĻ/N|y,_{ZGu\ZI؇bp]SHoui TT#7mP‘S> E]TH+减:#%}ՆtCvNF`e^ؚݡBedzL/2/Qi0}cMa6~ !1|^-yR!ě>Xj{@+wAԍl8;">P-*C|f7sWF~h#;31 Ǫjy?@"o*61֍DS yԾ ׍@/Ea@*XJMQPgPi JkK~%6ZW l'@)%M [yļ[O)k-֍L(an?4w4:BO5$awU-}Ixq꜏uqf,c4'>r$g{\)"`xESXq4O>z~s0 -ܰoVBع P"vvM?]%q 6 ,d "aFƒ;RBNH1ڟixSf,&bQmޥ \ ɷ{$.ZHAaﶞ:j tkQƫQFc-;BjEFژL\ut=xvmXgYcHw=!ߚ@xk%EJc<_ JR8pZTW675O]o<ɱ Jzހ!44z Vݺ-ъ":IgZ,4]䙥r85GvbEh4Ma$AL&,>  _\~ ' <**7uk`~x-o[9 .m[0wH˄H5ԟ \€H:r oon o,JLWbؐoc"V/ LA PPUFkviCI}A5Ƿ|.T.u!3JMپ!ݧ]f-nivJ`(!Mi 5gQi9Ϩ"%$ EPe$eRkE)E)=:HH? Vc$\$rTAIJbz^ԐyX՜Ŧ%SG?ClTֳ*,r޷6b~n܇T)#Z#6 :\| J.>77av\[beq8v797>f.Tm.&٢JݰԖBʻADUzkPs7y,~j.o؎Ɏb"l˔}'F|شԐҤvCNaqDo-ݗ)xII%ԔyV Pn$ir{[T3($z&mθ_ mJ6^sУ&E76$Ĭp+\ʣK9%gw`,.l=+?Sľ iP3kE[&Nw+O: {ڟn!luAe*&F&1B{Pӱ."k~?ЁXbwphxsHу 3r8Ė+T2xɣ $ *,g94uDŽ0nG)zVW~n|By%8!'Ook1>W0jrf[xy]e׼ƁfBuoXPOU+0UFHMl+7^}I 3qrlr^w:yAdh^ |RkK&(~SiXE3R%i}[abO=&FnUU9j(Tt=`K)Rd4}oKx&E6˿y @@ELWaoHtq86?9zǑACE4R/m- oϿ2Xt' meOYnBG3gׯBKo/FQMIς߼>ϜcB`6*B鐂/Vzƃ!xQ5I%ҨQ?s5kgO\0x p ^PLB0hE*&rj*fDfuN3pyh_KiZ_R'$MGw(rB%V?նlki8QϷm6WY@&i C]~[E:N|4@oU;`R%c#:vn/[ )^砡kF8^p#&mq.Èc+}{~YXv.܇!e++c!C0 GKECUۢ)­oiH%D٬uamVAu#SM|T!.w V#o.<;CRP¸m=?1ڲpגR:/f:V]IWu[[iRlSʆyę1dFJނ1'>reO Wg}Zbr]bܬiViEۢG]f{+ρ QеI3ezOcpfkI7=0'Өb# q .dBՉBTGuUa(]H1jKR@IԽmq S:3 lm #4`$6euԵ db8=ZhtSW3y+wѹ.ѭ#`*NHw/lTI<-L*h^\=!GZL]V f6d4*jyvprM%nI :Uէ; VczaʰސK+܈M3u(_Zj/\v0IΊ7d~&Z[ N_=1ܷjo{HQf1`ϤUB nvε7K{0WYQLxKBީh"tyt@T[R@bjn䞴 Y-ø%+@xf3A< gxNSJ=s 6ߒFKPpKHxBouJ^f.9Yc"۵h(s?fqއP_*nJB/nTCc'U qHA.p35ϮPCD;h saz93ʃ[F ?USpJL2 ♲K}AA[WS@OM­]"nqwnāG]4}ٗ(e cdd CT|"٘.(`?F^C̡߈q LH-DS}F3VZNt Β 2Z€/Oj?p=2N?Cw)sOl{&$gzW_rX1?Z3c'&K<=smq@4FJa?luJyĨ[lDNMe *mP0`g/yqltkxwU|hk)\mVS_4MͶoEnDֻ ѓ&q4Bp+ٔ[+0̅ BTvڲ~FY6ME*;"}]o@&g[Ja/(|Lk+4d@)(͚as~%W=8ꖪkƃ_p0&S%3zxY0gs<4Cf5gld`b3-W>L[8xYѥyQʄRƛt|}\OTӴ  kUԣ0NW p|OOa+O,][̫qer"Vꚦh豥/Dz_i3ϓm=K @°9tϳI opi;ˈ3Φv0iP?jΘ!U*+U؛6RKrX5 r"دxWh 7~ P`.)h b8@FPxTh !n޽.>d+cNo:_#ڇ̴U7$)1ϟq"!@oHpV`C)~1E=tCP a#0g*u"F=}NȀ:pJMr̋΢6~]6c 1kW1X5{$ ܼ˜ci0H  +GV~OkȺ0P-3f(E!']8@%қQ{Qb_,Y$YE`g֍w6|h[aԻfWe'L>ڼ[A_p$2XvUws}T4> #Npp; x9XeУA&ݯ}֟n.6&7{1Or͌ކ0((?oU&$E9 ߊ9g`QnG%&3A06<B"׹W`hץѡJ$ixC%@ף4&+/C5jCoebc;tccPztf2] <%jNOtֆ *‘j 0=^^[I~F|?@.hܪCgq_M46}Qi&~`G2s kؗ1E/]5wH<·]l :Mبh`u~Thmb'+Basۻu#s5/JdNidl.[@59I|<)ͧ/@Gz/"婡p=_Q4+Ɋmp)(6˚[jJ% I"Aܩ&CokC >J֡N^EAt'%Wtt=@ (:VDBg ar2G CѼ?ʡfvB4e^E>f,x Ds\M${Icn'R +?yPnAi cŨbi$GcQ<>4k 1yhJlJᖨ>9nPyZ8N`яUyB`96FdC8T0dPUPy1S7 fwNu#\VXt86$M!L~Byv.O_H8n[Saol|4L DAЋ{WTZ8@ *E&#{.OSX7x3Vِk2!3m0xz3±y%PPLgV v"OE(n#p8m.vLs^qzwѵeiDΏQa-yϽ*yx6:\[0R1"U\8DiApW:$E"N;_L/L'1\AGg~+:u5cK6]}&[?sR2">s-P[$[ %u? L s9{#^@?W]+%ڌP=ߔ{y_6 dBa[G%Jǵڨ9 c)XO((g^L>?Yޣ̅>JdY~ r#2"p(&!ZnDWl3C4Zt:a"v:Δc^𥤰LkqJ"Dka`c.Oʙv;S[+=qV{+N"I97}t! sCW*$2;Rt1О@ːI̲1' prW0mLCYULZXWJn]ޒ52ܟ 2C6Pn6]rnEĢ,J4duu} )cW{ LӷlJ'}ѢCSZ`u\AT>.*a^{V{ڄ7H+F0\yح$:Un5 T,ŊT8W/sVibV+z>iu7'춆8j247b5}AomlΧFJ? σx|^=MJ &Z'ԮiF/2><ٰG,8M]͢Nb1]v)1-˒/y|R#IT*i&/@[%EU2I?6pnk ~NX^֋>L!X[2I~RGE\j#ot8'y2\{盻ZP9)UFBiϹD~ءMm do_li%k_٫5+;5͋B[cj*R'( n$axgEy#z'gm<9|qKF(!b`r{xǸ0KP*=X5rxKߪ%[V. _Τc+ *^Zdq̥{x_T WrϑG»N!)vpT TW ]*(" rZj1MD)BC OO] e]ۢR0XQU̳/fRm%6mBˈƹw4 AW<Aͱe:(=a uik)2%|axQ(Z*5ou/ ꊑ`YڢaזN䇇"f/A d{S@ [T )쭚;w$Cigz@g&0oxEt`%Q@J(*"%"zmMWSf-'ۂR7yBAzݖ22fQo S!ol 5I\R&zTt|ʺ|ML:!f>~dـHn#hxBu \MmwX7UƼauC]$)طCM/<}m{^/vX醘 cwKfkQYJ=UWDz, rB]e/#\J ъk ('W /t71xx~K9]")fAX+XWI6D hlu |@xCQZ8ٱo^ptC<;a _9E&7k8 q8u\[ ^sQpnA8y~)⥆K& ݏW|@5Gi9G-8W}[I RJUzґi3b܈G&!t(Nvsaє$J%߯*~9+[&tlFX4M}:ׅBO1NO[p4dM/~^EΆo*@NOqg,'#ceo,cǛ?ş7ElWQ~zd8v)qVc;lh8aRMJ\]KKMʢ`xDӝ>gYK6=NM䒪k{XT*xwJAe6Č oA~Fwkޏ9ӏ//)Ř(xɳE[H7$V RgEJwz 8b] }'O"jPZJn?X'Zj{2` Q kq:MnDeaOJP.C|# ě:BYg7Hw=tޘNS+RZ.w4;O4z>aX*Y++;_A?SN3)fɈWcp#>ɀ#먩TW'r#PxZ$=رZc 3h\w~R(4l!"lrI ւ/e+@shpF$5V ќ$rw7ChFJF4"}+B=$\ àc}~'R#/4Oua\($%rdYӱLo*!}OD7mt}žM?xEk7 wކYʨz2Ag/DXX|񛠙 ~`L+q&{OJ4hNWvx+_8ʻLM {jĔ6 mW`Bhz\gBDG\9kHUyǮoH;a<~<*6ٴWzd؎ށ_vKP<| {1zo.,c\?an%vPQRghMfpe? S}iDx\lj3 S[e/aeVH,!=Ð7RX`/% gQ^h#L~u$j9jѷvi_W ,+t.gWoD_TmǠ‹ t3Ϡc dMr<Bݙ93ţweaQ;N;Xml50sD%[ژLq9mUbWV4=^R, Ζ-Zhԃl+S.X^yO+E/QE*䜱d!&["pւc@ 1r,O/w=0_\nA*ϚoXD.B_x@PƷ;Nf;4l$-}عZe=$XsKB2w7" M7\-9}/>jaE۸ۡjsJ(VuE}_PfI$ Y*e nLjO KڲE;ݴxm>^ޛT#+Ɉ L_OڳitB֣k5Bsk oe gPF QUN7#Ȓv")AɼouPwpo}ޮ,Hh@/7[)̘|[[¨4Ak )plBkf K*%x5QQ8J.$Էl6fr^ pT{H"pBl|FRRy'? J|W; cH)0+H-hyԕ;f%;qz;데k#wL^gR>%SXqG`)aC)OTbgܸ V t$:ಸ[C2 66 %-{ߔ\v@ě=Κ\}$ {0~DIl.h ?$5%FL{UYkCֵ5OL гW!RjSBF0J2(5ؓހ'=8, VT;]APK,%4¢nh%kvrkI72 ( z"O=^3q.?H4IG<hvzk0VHςơ{a9V:ۜۃD.G L(k wsRE =7 ld38 NP:3HesQơJgOX"6skUoT&c괎xQst$Av;s>Y&qwg2ip肸:)!MϕY7&>Hg&th6u78Ă)pMb ֵ'~xB!Vlz"++AG +߿qaq% kUIYhR/z)95C`Z%BXIKås7O['_ 3'6:ﭡgpwTΌ;!n[no cvxv g&"M8IߡW%#'n7bk"`(ȈSBnu֊lա 8?gh'8KUVc)2QAףZC7e?'q0M"3`-h qA /߬ݟ,B¢ܟ`,5 [GNrRύ".dСC<+, |+f#QJŔ0`]yt: K԰'i_s8H~fJc4j-@WEBhBtm^14g{'e\dM?gAN%ڨ(D[iH +fxQ)? $/峇Oc"4M65^7zC{hQ C3HGEod%_@p4YUvy(6XkM]A ҮZХ${*,A6$d$lP+\rpGxe!V4!ÕxuikYBIUcP2>߶uffRFArmhu Vhq%hw(U|~ݱhSEub2/+(5ZVXV{ ͛ 1/dGe7RkTҀ1,3 J֌Z+p3uἮwH}z!\|N\. 㺽,x la6"1(#⊓Crz|H^t .yvAt<^(NƯAb"'2q )Z 5|zg76 +hjfj%Oe!BM 7彰_(=1KDa(!E;lcf>TeH?Z)~LzR#k8Ţ\ 95D)%t%(ɢȿo~`=H#6q$j oQGOv〴Ӄ-ܹE?|DßwLlquˎsk8PLvVn$ ) CG鮸5rIp 5pU)Noį cWZu_ LdIº@/)/c42m?G߮( /rٷ"lk-]#&Cx7ߴ,pP aE)Oy:P)=v~?T'ZiԃnZ1cU~Xy):)hz:|411jē {LgxdxD͘ߙ3qBnWV PLA=c&bڽ #0\]#ETF01aO]2sܴ8KC஑,?W2G,:wb,M3 v]|6!wBU8 kg̝Nt rr7:fbf1+OZ79im }zIU+@F(B e?*N;Ax%ueFU=iP,S BEsaI9.JJ9Kir1`_ap*f(O^=WlùiAz`>Ri^<̅cQv000_*mgkA6ՀrBg[z %J谟ZK0)(yy.uQ;uqu+k\-mThJL۴)rK GgFVbwDU7_#ў"4in4-Xx}>Pͼ. K:Ss5wUpF})e9!N tBCr9$AS7ijP{tU]A(ɞ7,xck< .gEj$_mxU蔕ξK#OgQ*=oǪ;5-D@ihȺzkS/H&(B8C~j&}8K3?Td+D^MRSvb% ttC {e  -9PWz!^Uh69{.*v&ZtNK6!3m&}]eIa!HdxXBA0ְ1zXN!yT 5(nSЎ.cס.?\\ )h'+NC\ֵB(:%ᶋ K'4r}"CBeb Y3cGH͈m=4йPW@(v2<-XzTeًOS9 x^Mҏ2F IƆ-Ӆڷc81LzkMև%2a:D\1ҒLʝ^;Up7[փB&+t%>L҅[l閌pLT|#Cl<"Ԙ\"27{q8%f[i\RŇ}3J]/$b\X-pjB@"=q+>p0Aqbː+ɴ#DNJ̻~f#<4S%@S> !OP]lj=Z@o] ?j 2ØXKynp*v!y̳7ba1tlNkh(ןKT^͒8XCgxF tvT =U'x~ Ksä5[h֧H7q"tv}_"# :ؤE=G׃FLDVd۱1YҷΛt>B@be:SJ4i6ԨYxaBԢԂd WΡc=ο7ݥv!D4 s(pҲ,'9c[1̢iHXq8( #R#g߀MB`KgrwV %\fJR4*;OX#8vk{^~~!4opxyۂ+@ ӬJzkDf9 >ŭINF9^4\2(J5l8Ԟs@>YIBlq=DcZ#CԈ<뭝8u7:rKKY/@ф1HV@ֹF+jt=7wUrã\2Tf%$vN[#xyo,_F~/6h'ZJ~1D [N.=ԊYy&cOa9/'g#[񈩹kjcoot\ߍMA`u''Pd8J o}B< d<@ɮ>Z$!=տRໆ=)f 'Xj%DRPBeW|WMUZB8M"{MfZݖbO+evaD^f!HNtญq*hrnmNi,^t%U. fъtńB kGr]ʔ]{ )  8=IA{c-U=6`W5wZXKh$^ȉA+\/Va7?nN|DQΙ><2[QF"f0CFz)d3T"#=P7 %~J+)DJ>qs]Wk血m#l(5 X.fr?hz~9{C.4]N\ ] ՗ ,@ >.ޯ7c D IluU8WŒXwY =Pf10vdI$,Գ=5vnmH #T>>i괺M,ZSd.iobbrؖZ2Q8SN]h_#ϰd,j[&c*s'69Fɗ. wƷ_=0c Pq2N1kcԄPYym0mD1L/ňD52gzW% ߃&R7$@h䝖wų"Blrmr/ PY9e՘0;WxD'۠B(DȁKߢ}OrE!(%#X(vzd86N.Y!zG,b;# }&$wURd)?/zzu3c&=}ff|97w_E e^~ª! o(ufXb܎  ɟwҶC>;p@vk#AIVHt&0؀$,Eĸk{+jh$jj/u} C%}\·/" .mYTC_pݓ_/m &Zl!B;L[=\簔Fj I8 v;qc!N3O'fwHr'=+ஐe\Z-ӗ_&?@2l9 yKW5mH^ۻx 3G$\£Q

S",F~qgK e:^qԎ9-Ăk=3g5Z_BCC6*@L/ ()ZE!pw GQcr cfj к*=54Ch$QG\DSM7 xmXU*NXNYF_NX^N 04;OD38s(UTmhJL+;-pC:-^ge!oL?xذ("[; Ə뉊RҔ*;YW&Z[~H㔝 4`9"7h zHp;h:\07| ~19HBSԞED+ߒ%jh@:uD>-B'>ۄ}T.L.4%vߡP@܊?iڛRrV)f*RTLbQ1{Q:'CB!4A֗(9K8C #щ;јVS߸Fw܀)|4Dpw M-+Ijv=YZq#~^hRJ0ː)f%3S[$6j?ϯdI6*s޳&vBK싍Xuz"۠FW!F6!PQ@q7+"n-?B,d^2zt'8\]=ry`v#}8$i"b;B7lTF^~HS۟ PzRiX i\uKwj?X\h`GI-MS{t2ʕZf3\kD@lP) RzG(W GHt=+XO~jl?\ex86(E.Yhqb4a+Ju+p1xsQ0rz'>ٿ³J2R}T{Q2h l1 Pscy3a]k9ZKPt'+%Bc㰹.['$ag18pN*SinEʎ<<43j{l-OMӭQ&>yX`ܐD"]Wfn eb%1NA9HF!cp@qh=`qi^7y`(-N@ҮR_Gc|ɓyWݯ[~E:}XKΜ4b8Du{`J`ܛyN*y7W2\JQ/+Hu%UDslμ8`3{n\\'w}% 29jMP(F8}>i21ch Zj+!C^FP= h$ iGrXNԿ6t@L@IY;bmy#O(Y8zϕg}·P6{`MY-j]m5OWȜ&ye$r<|yo`u!r}z byWKaɑ/8L_AOӽVYfw<7BQ4pl:6v |7oPsNM*zm]z1A:Into#)K Wr$i} û[!!ȱ7HL1QWk(}㤳uO/4 fs).4 pJPVթBQ'tH/Ӊli)WPu:* ZΞ=ۥ1vئd}0=tNR '6BD>L+dg@?<}"9@27X G9 )P%W'fwĻiNЄ @~ s`V?""w)ӘRwգ.Jz SSxK6#"#^t&a|sh͔'%+MI^U GYKκ3!G7>B2H"zTC&O }sfvXlNAxx<0WEAc%B$Yݦ8/P]a3/LP03Uz)`)RZ, \%g-`z?_ZqG mŁkW0KpZ!{k[Lu~ p˔I t )ToKl>/: ']v\RG8_} «˃>v>z+1U gk9/9nY˯ [wǍCkXl>p£w G]<5cH4N=MqL);ݍHuAx`өs/4T|=j嚶˨~4E>i|^6F{R igf?VV. hS9q=| 2AT@?'gث~$ljA}GOWU~ݠ7l Jb:bZ"Ot7URd=zC0r!J˧BڸJa_ttr;gICe;ܚA)$-+QN^L_L|Rh:JLV(dg)\/9<‹^W.h b AJFV> 0Lc+za lQD>rtMFwx!㓶BXlۚaU;'y-P'tfh )LF0hj.Nk<^ m8ͫ0O3,@|g~C"jqvib}Idsn9(Cky|s>+򧸴͏[W$Wœ)f85h{cTI'#8[ }k㉙t0AksV4>ƞH3he`&kx tyiсL eGSAeAMi柰E+'Ç&= Ԗ;F +VR1+AA E=ģNNa ME_eΨ{B-OL9yI'0 >Wp,UIfìʥ2M 'i"LIx}+V¨]W>9VWuN'>}j!:QG@쩶Cw6F&@<_rB lI}&_~([ s4,IkT-j-Q8Mס zڻ R `Mu~!2Q'Ui0`7;T&+/*ߒ[ڮ$Fɱ~֟;@*ؙw({O?{C`#MMB )3qºu VescY.اJ5b&ߝulPHVq=D)+ʀ:o^5h]a0t%xP"D6oFuNA 5CsVJZS@U>J'4fwk_ʭȽt?aRI1ә^Bac[Dr~8=|,C0h<7&-_1-tUbi-$m=1kch?S!w!p##'zMąEap.Y\ݥl9 =/|v&Af} F&NT%SFq&ڗQwƥP<}3B:dpxMׇ$7̋1P GՁ E~V$mv3ZE.4;@-I`֜)ϬKEɇy!Qbu>ʭ]ͱ$ ˠEĜ4Mm"uDt#GXë}Ms|@ظ%||KkӪ&.c*AG 񨓷SlwEBT̛Qvc/nU OjQIzhBEVѯw}͒a&ARS2xiWKLV:&#a&T M>YVt!D)1fϯsʀK1k-meb鋇`GC]zկ:5㿄LnYvcåWߒM|@Dv;{Iq k.. 6u0mݚ-t[@ /%QRӁҮp Օ\\s`z'/^6Ɍo©I:r[MZ"={sHH!qc0'"|ɰugXu鱯=1nfT|VBqd'Dk/)qo|zCݖAT`In Q fv]qDŽvKD9DFk]'\Kgnz(թU:tXmr GK]^X+Sq; ,{&xvp)V؏_>(1 <@XNQLTjSP%RZ DL禵GG d]5j'TI_'W [^ݞ,m ̗XUIVxeݭU+a )|5/inE8(tڝj#a?Z]'Deh|+V$l;o^A? ĘЉX"g)qJ$QWV 7>m ~2jLescu; Ǭ()BX N܁bIWS"zr1kjqo}1]@^+V+3˘jĵ\E5h8;n&}Q }{iQ.f'}_yI,Dk@P%Vٕlh4B*Z珋_c_T;it((y1k\dzm$ G2 ZJDUCIe ŝ9FmH("t)6f++?rT*&eۚ{EK.[qSd"-HpāWßeY6|#w>jKPHu$JQ̌;I'Y Y@0|Ev^=>9glcD%O$,p hnԨmޤjQl=l< 3^3݄mR*5 =V>i< `fe]ᘛ-i.; Z@=2%̀P*~1-6 ڸ}?1ؐ!u.) j`y K;$S/ bG‘A|V ѽ]EwUChZ[Q_#dUKt%|^Q=Jk_l95n O/oIZ-녍b,"-)x Rd~( 6C49M0gUTĒw!mB5 R?P<.p pzrq\-]-|1Y)NMME tT@\IʗzAj^4Yb!22TI2zCm:Α Z1:EqXjS/ ܫ5)_a"d,HBU6Hbr2!+6:e:Tn+2;:`dP`p2婧:7=$Lc~-Nl]YqEMWdꔗ3ʩ6Qۚdpf-0T zɢE]xReʿ {Uͣvnr}W߰)C!h-"XfpR7@dDOkD#2Qm >ݴ"5XQ7& Sg,?gr 9gGjrm$.aТ&gk}HŞʟ ^Uz{Zk&򔲒 OX5?˺ǟR7xx,?DB9ewNFy[ss$3^ǨuZ7 kBݾ3W 7 =GFǁSky:_.+<PᱻP s Yu 8z=^CT }2ݽ]W?ln1't&5Y=Z{P:;h,޼yC1;ނtsmQCl }$QV@7I 9kFYV +͛hf`s9 fY|bPRVYaeKJC' ar t|O&;LV3uM U/ F}#'$?0!c6(`нu#|"UXAp+52)m);RqD%,ڊi#fؤ=G^)Yam*|@^^x/Oȍ!.ηX;"1pr^.㗨t3cH6}X; eHEcZVkQ멼u!6X*!kܹæJl.n%˺@Tݘ.-6;c eheAdHm jfv> U ݀j0,< K e\OY [ 6LE|N̴AS.=F=@p(4pʈ(;YL$jhff1]6H*/KlصNG,ff)-STS:-Ų„+y.N*9L[jkzY($ٓRzGgf5.kdk NGx*Yu߇)̓(K"h 3BI*#~@;_Vwxa>I 퓢ZCn3{n8VІ֠ MHSщ; ʯ''ݓ{d~n8p~|)x̕p~;Ʒ3xpO@WF0qA:>XsVZբ f7V;+"mvFO^]Me6w > ""m(7eWh} ä~#RB104+E.ɳ'E6_)@ՙMP+L P Bx~VuŸWTEYi7;/Dɉe_SNxKaJ{x:^g(8U(&t ZYûu1*U@f@t9 A˾זG+ [fO#t\>x4?B&39?QkP:X1e2,sm?lPCnwaHk\m)1Vrx u 1h84q\ > ~'jYSHAGs> #CSF'Xw/,y03\>4Կ߄Ts%Oq=`ᥡI6}*h0`>E1?h3u1r(Q:אBlkWμVb?صAdةH5#a䒟9{K t rzw2-Sr$)//2c\%k ic.s\"Fe&f ~_!x3_b0Rj} "+\|0Q1ׂBz<_ sP\*B85E,jhwz5{gD׷92NNHEɜzpNfwoAFEzࡊ`ߔ0|Z7y|/u*q{=|B~[aݭZ8ˣI$]E.[DH W ܁Uwm!9xt'''4{i zR+BЗnTLT@1̑gZКmӍ t4Z0y;fPVE|qʒ5M6[eSUрz3d-kbAQ]"}098TYaG[qEӵlpGkH}#RhƸw{ڗ+u!9f=~GZa9rlXTo^W%/¹._ŅH=-XZ "Ԫ³!Snl C0PA!xB&4 ޲!)hJg6FU f8*p-rf}Y27z-'"mJ oꄆ7R@%@x+ 7fY]^-_LP|d;bsj X?cR 8!p/EļlԖ_R8szOZZ HPIO 9Z38]eV50ۿVoY~)CâC[,e=\ 5Qy|I4XgB[3Ъ3}3ʾ3`jy}pKP+:*O?p%MķEIa+"%EMb.ؓI6oX6}[=DIR덠E@n8*/ Ư4ݟ]#$_y=ܳʚxzߥ9} 0m0ת1iu~=KPc^;~!DzU-;H5Q#7'HZ˃Ņ5EZ&-d;vaQߔ#%t^ e"ԋS4#@DԵ=?c߇1 *ʱ blpN9ty{t,(Q0C^dojq1l^d=8ᓣMl34-V­q mUX?G0|Tt =Q=< '8W% riOgW'eF4}j0)O%<5Iry`]IEb7{9R]RfpTHTWVgux2d^ nRE.=5ϺC ׵>>o s}ߊQ)*v?M(&D&CD} {/Oq+}Rl%8Q(7\ {֧*OpP@S}/^d]d€r&坁bVu쫿ی&3Z@ifSZxt[-Yz߭b/=}H}ǧkWwL[ϺHdIVt0pjmƴ٤x ;ףC ]MS@;DG!$9 nd}BCz/k?ϯT[钔pNCErai8$'[5f?W-Vv2gD ‡`_a8qᎣܻa YbV*xKKCP͞Š2C:]+ лBVt@@j@b 񻖯n-H#OYèBhf?k`oj`uaP8g>HnI`i7'i06_GԳȀ@>ӐQK}BȬ8T?_mNJ~#V,L;p `c3b>KL4pE~][YBR:©=+7PhӤAQ*lCʰ|qdd3o0HE$J1ڻGx kvI,`S-Jn2:1Lر]w4B(KȐ.m.dtfE상Go1k=@!Db?c  "-"b ROt*(J=@/rD,)?ru1&`XDiLA|`qDAD<{X[`CcV(D 鶃-z;*18ӫЩX idE0#!ɑdb#ay7CTnJ JIڈ0r{H2kW7KMlp ;`I{㠓EdFkPMLbszeJXp[nC=d,aC~tY]\ o6[gv!7ftmC9'#H!-ymWw~~jVT,Jƿ!jFxi0i²5h%{U{=qC(S3myy+7fyx"EB&9BenrR6x еoGx.,|(c ㋬cqTU|z˕w5Z8#{CvV1j?tdUW?< ɲM-ޫ O1 OWQ*w2mcE[Cetc3}N)m勢kK!ګy|7zq12AZe@ƱϪbn4-ϊc"Lkz?g'gBO̥">qď\_ijv3N幸%іaoyLD74b(#:`˯s#i !zC !?C2H%TY?w_6_jD^ʆZu;PVϑ&{*z*j5%\{(*XEoTh0 yƀ=Q᳓3m8jICΟ߆\NU l(t xuj>q JӱFNoh⃌mN9 n sQ-  Rgםp8NŻ's.,ŌY&cI1[*ӿ 6c2TO9go5b CM[4<2kdiR#<1d|#Ld'-,%n. m{{Y-. ~0VWBXk8R%Tm=X7?9N,n}[0fr7.P>|GVg Z$<zU×.gzn)`inB5ʜ Y{BMԉ͢E>U" Y:NvЙl҅!{ noJ'TB__d>2dK}bK,ǖOWsV3Xmņ l̹f]HQNz?*$Ț`=oX8bSgAʽY9—)tN gzu?wТ m2I䪚rw*V0f (lFu&V;??TRhHډ{&"Sz}*BxΝ%!QRU'WGWˆlӈ˰njԪ0S(傽66*R%0qҨ;9gBPy/Y)q}ky &`@CoPf˲c N롴(kOnV8%&qBmQU6tcT=jo !Lc(1*Vje\j" VZ ͪM$}a 2xJ[R1*3p.=8?!J-z/^d,5ehr4|p9(AR UH>iTi:Ű hYG =M[ iJk٥qN()Df`Q0DBRfp2Sb*& 0fM`BfuoٷRK!En$(AcjoȮ \$HNfEiSS !O CET* t6IKJEG_vo:dFM? 4U<=cAd66$ S3%g>/b-ܭ؛?X2_3)so%ѴE@|LVC1J,`ns/|>ֹِP^mEr:g==,)؞5鹆-h,#mgFAw=3asw6j1$ۮ k#LtaY/k̙ט$G ])]ƮqwzÐ X} jp)O^@TߞF=FB20_Obbѳ'^,a=yo"T\% ^(YD=(TXf/hU6(R߷>LlXkZ f+UȌ3+qI0L%S>):kk}xT0L}ݥdseۉ\T{ܷ_Ls" iNDݚ$ &r'R@߸7 7/*ۖUQ}ZGmz#ëOCc$2AcNjhއo3;4U5bѳ5(:Vt&MG[)h*iK๐; V[LPLF|COCAד%uVŅ_}ի5[sTlXjROyX@׭0/c^q檗xj h6|.Q|ʁG(ӺsGE儤Y\p =p޲5}*ȕ& ;R\'LRhb{%?[긶{Cy7ⲟIkT#rޗ0 ɲuu~~ ZdMbml*+͓ujdZ4ߛ)WܚFƥVsceu?'7I6Y1ώsbR!/x4@ ;~|wBuGǦxJ#]g!rǫ9 EDg+|mՉ#OU}Qd-uwb 7 k0 {1H?ZFe._X͊!՜xzT"쪻5y7O'?sYVg]Fy'([wCg!dq$ ␿bSc"{C[n\ \f+goCaoM4vWIҺGYߚ6iP.:G>cKñq˧hPL(;.ƏƣYkдVuPi^\ |-~1'wj!*l޳,M W6O!;os 0FBL,Fx]eI+N,MiT7a07׈LG7 "1p9Z&"AhHC|TH)h=>e8EY̩h4 V,Ϥ,x l h76ՊNiGc8?kAC~3t=*8rENfb Q-zZ`cs҅d,O'@#9n$XzcsnyCc/DL7BҺ[<+t4ؽcf͝(c@n f\gU B5ax,Cԓ$ ,M⫡wPHkXn1HFW'vRne)&j+9Gj*~3)Ĕ{dZuJ1eƤg _a%lՍm!+R7.h W+9LVIN;s f=D_=Od >"PLi~EJX[X2^`3L`(9Ae?J gDЙdvEv0}Y,~BPE:R Yt^BAXؚRK!eO˒u/8ig"U]K48k{뉴UP9Q=ϹEi֯e*!A,)}UL=ћ2cb&l6aߓ{XB %>'8J 'c[z`Jgo{2!+^ҏKūA#ޱ?md J,ޟ>S+rc'qI}S?b?I&GԆMnI)*5_h a`c-Fgk9g#Qt'r3FqڒfM8nD`[ii>WJb\ϟbm3MB72'.,|rGmAEv6N0S[M}:}LqP6NJemdN|YuHN"xؼ"99KSh:&7%۶誉"16k?&T𢧦L v%6>%6¾,`)by7bx{tPi~ ނUS'`ׅ My *uEԿ Sb-(!x  )żSQh%bt^s~ID][Wp2>J[,7)ihAB;ݜoF\~7/8tes>[P%lt*Q\'Ϥ.(Y uKCk`@ަ"ak:J*/"$.zmHBVd!}ȇYR8/wj ע2Gf.}'yRpį Dam9xnVd*B[k0%|(BHtI!j>jw+-9W?L%MԸ6z̹Zv.m/?V'}5;K4f< BjУ(GKi^mj8E\mZgI; l4л{P+Co3wjN؆'IWkuM: &#["cj-@_U ~l:/=^us~ Cd6LcWRa<6HȥRƘV4 e,!#֨6eac4¦uH}/L2֝k G3 g%@ :b㪰jj2Ex"&aV`Ei!֭h8L~85O"Ӳ6LHX=wjch;xk=$L6%H+{肱R}_Z١b@6oS^[:d p 0ÍI"W >9%-ze$mdh 0M B” s].X/H=^2]*m[0kg5 Ya4C/ iUOftv =sGCV~ОcC-47N:RՕj| #LiaXѝOl0av܉:cvUد}nj]#^w(UcW +ZW]q3Q ̟:$Dg\?f& ̧%6Z~b*lvaΟ` ~5NҎRKKª`pbc?6]M˗S^:[ +$wU޵w8'7]5-mjK#s8DfIg?wG*z.)da+#H[IBhB%i.tz&zgzkeNR;ջIT^D3y$w7& ZZjrPVeq@pdN.2Iڡu-z|@C~4+$6 `j 4\[{VUX!ҋY˅4ƲpMp;JF0z(0D` Qa0L0^sO8z8smǧSZsdbCZN ߡ>x,S99c >P1 ķ^| ^Sbs|_m4z4\ZUfvSE1}88*9coi$|1E[ȁ{*F=6KCd/,z i> QS_unsl!ݙ Hř<g)X}3ڵ Y8<5H|LLJp#!dfu_LUy@%<DW쉷smnZZBftՎǫ5Ii IUN'2 j"b`R{WtڧL-[r4co@d*E^.mTsYJٷʞׁXbM~QSiIVo0EfY] Wg\n;Lhweҟt>?'2Ȍ!_.~ca¶skvԤb鄆(QYZsjPD&'{7}"pE=ow\M$+E/p" Z#~,U|uY{zlA 7C{bZ dPG8 /nE~2"Dp[[šKМ չj=mmq;\*Y} K^X@/v.D?Ti2jt%R n8{Fun6s7N (2fVE ubǞt;b ]HjjD^UMqTy]]/c sl83!nJAkzW}쓒2,;͙$ұ@gEx)` ѓ-v.%ԜA ` Ѵ// T7\ P\~վX.ݮP"{QTv* :jQrʙAŵM/f*SPXey]@< *ape&.F0p>ʠf_ӛɶqFFsC ȅ{炡i2ږ[Gl8R|.,,(.tV?=0|J1-Bj19c2\1L |I.f;G$QQ%t Z!iYrax< lʔP02 񊈁0 ^3ݶЗz=s^J>{8?^L/ G=lSiыpy\q:APabʧw3<β&wJ;zHkLf[9$l2u\/GiP::0e%hM~ȳ9= Fʆ$3 z,4ZtJbӯ4躅 %!*nUq$ $Bd\zlc61hl*cf#d`|RA(꠯}T4kjƿ5R{2V$KKKƼkѰZҩhs$ͮܦ?}| " дf^\oEm|ŴsNYBNc0$ oN S&j*_#(pBzxLy[soN n8cpig38 `HE(M#0+QK?RPG/[LA)1*P{x6g!8T>MbD(DpmȲac{P*ޤeez WfM쑳9@˯Z&2cdI.9+/7W9^oTi 09 ,eUiD5O hjҕj(~+&p&G%d/^1˝8t2R\{PTR dÕ/ U|v%6rrG,  k:d\!!9F1^p67Qyz*Q9idVyx"-~ըoOf}+-z}}-vgK˱>*{V+)l'@'m`A}Y.:uz&ȃ ҷ]Gkvût\E7W'0sxpϲOQ?b,||ڬB08c~1X8w'YCr#ʯ[r "`4@د&/r)?|u6Rj R'0613r,}`dɓC\n_{m 气JV9 !"F^g%غB][﯇kł[_M±QHTZVŋ$&݋G+ ڳnY7dh~;ƲtCqwKhI-k׳)٢`q ˶ ?ɃE>(gMY)BNJ0Co1F=%+ɽN/깩ΎԪ&,NUQaG<^A:X-zE;imϿtz";%hj;ujvLywPk1o:E+k)JUCĉxqP8:1=vec: hY$#KmY_Ysjrhf"w+2T3=VDBt^}t(( qP8ӿ7nAR˯WgF*HD/4i߀_ӊzM59=Y1f F[ Е]ߕGq_:Urx%w33b#+X9[4 o|ԣp/oFj01߅Wݬ$Ժ,w ^  [(>/DBO;Tt'ptL,HgHu*Q"!ă,*TC _[E6h2J,॔?Xyu}&j蝄\diMQs}e: h:Gq*M7%2.-澁IWHEkq<ŶƋ_8|ؒS6/ 0/j0uyè̍ ƿqѰz$ {Bq/k T;|n1b#C,$ WmJ彉W3ؼƳd+'ΆC֏'⁇vQA9TCC x? y0Yuq5ɮw=SU#+%.GIz.Y%xo2)t @%94)kҮK|߄">"6 ?3skM9Tcoz3r}a&u[Rd~5o6z 0BW.Ĵyrr4m̈쨽XUO,7&`;Pku[=z7 ^@JY-LnAUOFxYqFmʲ!8 RG +!f4, Pܶ=0^  oea [s?3FIjb"_? #+ %81’{ī"*.57Z4>i/o`r^? [zA<=Z{&Ot*f,g&صCJ$Lh~.we{yMJiՏBIYRG1am-hr`ҏ Ǝ Gs3 /Zx9!p{ E-Tg-P *}Q`w9;Khqt5=ɀ3M"1QqNy{E2J>&ZU(2Z'FU٥bK~ #؋܂,`/,6jVf }ް<"],~B\ 3}Nr=M"Xorr w% s d&&FiʒY.*x^%쬛-im*8Y yLc.fjѥh!][zQ0- GHcQf ] mASWbM 87Ș \nק C\-{`U.I+ LJH' 'CR"MCv>@lk  6B% [6w&t A'I9 ?.,]7$y`EsMl"/.af-204C-[!.s L"a~u<}tjqr{WՈBݿ.S$ȁ3z8*=]ܳp^Z|鸊0y,7Tߑ{R)fE%#L=Xxm|.RzxY0-4$f/V9Opܚ`wSZWH9:.mP&<$1GYun%E$F踢^hH=-R]IB&zۥ&a Ώߕ)"+`;&kFؼm3w Y:6 (}gˢ/Qĺ"i6)jC9ey4Q) q^ uK}e߉'7rg .D-e 4#M]:n-ޭEJLRìmIy9\ 9t%d~t?=`` !l2!p7X4}[|nnb1{K2tH&ݽ* uT &ۣ^O6?|k{J6DhG)#(([c~ɱ hEWId_0 VH4Tpt,EryK7gaptZlM<.SM;;ry`Ovm3SϺڽ]8)q*RRxߙ=z9mȌ!xI% Om9g>68y-.tAnҭg7,T)x ?z f-gx_KP<ez$Qّ9rΙw[):ͪ'j>2z}8OrF9uԫW^s& (ܩf}{Hˢ"L_ֽ':Cͥu3Urȭ}vΌ@1w "1ˎߥcz@D~9 Z #K|@udosfgrV8NIGP4V)E36\td׼!̣JC߿@kzݚ o/k<$Փ<{9jmjp8qq)1SQ)Cu*% =qQ2 EZ򧓭VuȾ`E#ʙJKeV/X.Z*7(QP=ho!Ět2рXnǟv%5*(ݬ;KYL'y\&Zn= a{j?bkJ\(GM_E{VJKyVaJeU%zW13A!4FTfd?rkڪ2Z W'ڎr:* I8"fV'HwmsєǃWcN,lJ,P/m Epq*g>>*xG% lַėX)hc6_v)egrit}ORe!T݀Po^p rRH 2OYŤ82)7C䬯n࢈'С1 W.$;B,R;6KnblMXVCBS%aJnu(Ē-j StK__PQѸ a\qI7N0rNz"[rEqyEPn⭶ F}8?rnB(碯_eLqZTSŬԤcHR57'EO9U/}<ع^Pk6ؖ͂g :^h{&.RbǾ5ny?I8$#*ZAiHv7'lp^_Z7NdGQ6 k4}Ť y-dj\cK3*Uɚ!ggҐ =uq:g([Ѽw#س  ՜? i':ߏ 7PЭWBӶBoTM/-J;-^q!ǰ&?0A-:ķH強### a}4j.G'(gtjr qY\4< 4AR#겅|P+-~y4F)B-3~3AbJs1a16&V1*䶖dr>=R4C; ;0y:pIМ,YK9 pm@*֚hbk r/Rfʻ:Z4IEVU  :'{ $-T9nx9>T/s9 Wrs̢q9;-112S$ WΞq"jDUf} )GP9httP>SvԪa @`ç#Bqɔ?PBG<Ìq&1>`$-8XDl s M.3BVʛnq*隦B/JOε'$S!TY\8g_KOƓ?u|S9oIISk3bY+)(wխyI 1WU@rgbQOl2=r@IL2߾\k :'?(Q% GHSfPGzl:/gVb$ccPAl gd])%!dTU|0EF@`$D,t \FHIFŵbIPD0oF>d[KOU1k|/KS#(dٯOBTG6x%& M]da2_Pѻ"O2@-j ڈ8N+Ѥh|V "i-1d2\ BXO㵟 ]Ff4/bo!6@$b9ଜm] ^|븗~%'*'mJ<0+ۈ Ӱ7nd* ele94+>[ hjؐ}Uȱ-4.|P<r&'ݡpW1_Sb}!w_*Iۇ3|SyY23/Mp*1P^4_=Oo} ' P5=sgyVufmgWϏr$zxPkRܘ%!W041pJ} (V\,=% 曄ăBp `:"P |\50U15ZI(U8 CcS)&y u=eky #,9o5 A]ź}R}4Fie]J_HDf Ȩ;g-kM5HYxg){z'4s}8rMV ꨦI rZ;-3GWFaLphVG{5:LЅ5W]쓓oReXUzRYK1/8pfV|],ykufB r,s34w^>1Hڻ0p$ xX;`D4C^VA޵H~OµoZޱע)P9M\[kQS\McEZƼK*8CO3qTSi~%S?7ҩy_<73YE,KlsǧDSRSfjs)BϧQ{q&v"IІ3emnXvǖK7 m𚵒=yJ յ&RCR td_`a-MagHSEGf爦.~UQ’ ;VPzjY"_ge'.9y0'e.PD35n%6>ӎ҈Yy?tVĊ]\E~s~hEzt2MQ{vBM" ٴ&yo춠Wʭ1qc+nהm08eDDǘw:&(cvx|ڣ2T;"qR0% )uIڼ?ɴ_KRw靎8zcϻ A/qŶ@7O\Q&ܓ 8٤9+nt(4[IhᲳ J[NngpXtL#H]:>nr a 'e5~3€Sy$%s;s:w-h\hNejE^)w[D= >V~ըw7(?e f;Χ9=vi_%UgzgY\|f\+sQb H(LHC-P濈*#̂%}\tS 1tW24HUJa56\pVE*kuC m?#qd^$yI9o$.6;F ΖVR\u_p* 2W cPպ~`0Y~z M*Y^6"+Z>ط"ɂp˄?C$i6ۣ91D L? nN!Q&^NLo](;p夿,og u4eHtEn5\{6)-*`U慅mqSq99dzf']û·ډd[$Qְ~tgWY2zrP/ Lr9I@[ܿ/0k) q,6fO&-?2a6\JߔvFfx+l24B>I T~N2^.`;'W"MޒUyxX7qx~C 縜pXlV,M6MOADrk*B7<@ زwlh99Co*kQL՝_[i::o[D|nh_ɭx!?p'6 iDT I|GD7])tzaO`w܈O!kAGK<ǽNK! mq[jeL@f2on? EBőLK5Ds( &ɔ3I$ _aAvvދ\ryq"z\@0DGX 5G^ F21];ܚ؆DY[8Ffo-CJbۚv.х-I@7nêJ:' {IU !Okn{:aіltD#Ѱ,^ZG&I fTi&L/RŚJ.nYsv`SjkjN}U\Ehu K\ ~ ='ր1p-Xkg̖ts*30*]HhzeuŃB>;v;IO/P]]|:B'% /ggBHOXG5]En1Im^y$Z badC'@SKrOkWo$~y3ZLUlxiSw,9vNX9kevGQG٧.I;B": 7G?C[5mAF=˾$j򀥘u8\'O\wDo"s5R0? hܣ l$-DR&Qe2}g;X)$:+BK [ebpwtW>rPfpMZ k9DE3ҝ1ψG^4MZߙUUJQқD|w7Fu;Dg';u~;t 3d<OXStzT(Úɗ>[߶mV(6ɴIY:9MV9^T(#Z`2+ʵkkSҺ7׃)U4pܧfh7$7Kqo2f\ޭ &Q俗@{eIPSS'R'pHf{2&_ IWȦ{Prs=!96@76ɷZ 4Xָ}AG5eݕ36is٥ 8͗]&}_Y $s@s3L-y 2n2L* o8#0tv Quf}M|.DP9+^9iZ~&#Ej~?}{>O7ͮ@l\PɐOYwB9^p&bs{cnZKǯH+7]It س. 6rJ#8McbxNbTыC3D}R@r J&y r}ٽ}a{qR:9⩀,O [ RUS$oV鮤BOa|=7.dn+Nj\2H0)SOErU-N`'" 0̬W.M&I$H䧳io j;:J]C{+K;F 46vۑü.hhB ,F #C{qȔk37V~?]F01DZTf8ߢHgƮ#AA pP. y7Bs]`,hsc8kaNe|#ޠ=Hj$KZU=18ƱT!e,yX/gvhOT=l9y By@$#2b[ң޿*Yd-Β\/@kڸA-WGхyϵ/2-IFFAGur%|]Y}~Ҁډ'"J3Iz)A,~,&O2[덊I D4/EUNj<N+6}`տt=R-}KmqlNVrԂ4c{1vʀ6mFd r\r]D"AZJ6 $g:z W} (ShZH_ְOHC>8ɗ@XbGL>[Yym`!F6Ncmo\5JkfFFsNjOD7#d7Yb1Z|t9&щygꗷql!9+@h+s>%b+qvAZn<:yk6d+L:ܛouu ׹.υ!x)ft_?( 1hw|_xtg:ԥs> _fk&j'K4䡇83vv-N |-%õ/lH:3/%dm?- 2cs+u<%1aŽM:`o @ml` %'7P ;.U!K8tP)s+<"vc@@W11VmFlF6 H)K٤xkFb4$F)B̋bQ?ZcQ7DMB]0 EcUqM<oBr59sAdoojk: cy=Mغ>^=H&4;ҴmAl@dފ%" ;0SzyPʠr\w /v !!g(ط!nj)ƘA/|4jj(p$,93n@+Wވ ! <_{ /B wMI}6YKQj2{keu=Ɠn%Wc2W@nyUbϰ1?8WhmjibzvymR578N \X ȷBסpjLZ]Pp'[֯>Ϝ]WfbY:I-ՔLVysQ) [ It>1 @|lSyz1&QaYqv] )lKLE)Kdtl#^^v0 iӈv0>#:\T j\A/;1v,@)6&#w팛+Xg9"Ĭ$s54_IJu3W-ExIIy. >_J,i.vZ%U^A)"[Re ,ho5*[`akv;ʣ ֵ %|;ґh4xc?fc= z[$96sn&4%F=٥ē/V/(u#ʬXBs4$aO u`8=`I/qy2ã~1xRp)jwZ0>_9u}V$Ql7ߢj_0'XPUˋEv镚DuRbs!Nq ]9 ˁâjBJ}uQE|YD ߉4E1ԝ'ENs Ma\Bd6i;hG*)m."Ð:s{( Pʭs%GԊiބz1j0 1W5ema;06 )Ӓ hhw/K8E> 73tXJXwѲPruNj 4SMѤ2DDDdLG 32BZa6k]Ho"u!L,ȿ"Cֳ$] P6/ǧ }zי٪˺d\f {@m'P]*{g,\ԢeRv,뜲A9 H 9eWO6ƆV ?^1 yӼA) GL< vmPϊfK_:WvQ]X D2ޘ A2`*rxͅu-3ob2@7q>~eV6Ne:~5pQtN>>ȸ-!uހo(YbX՛s^WXJZ:y̹ "7$?' :we$mEjq8n#M 擁OΠ5(7khS6tH@8lhne-ٲ|֜ҩ3|;Bpƿ5 )BC7H ]ء1ׅH"CcENy<(NSw9lC1)Ǐ;bZ9uє!\-q65߉yTR'D1?DCk8e&kS0?rU *A [߬uft/@Gs_.ga|Qpꇰ⹅HPQ4tkuW* (6N~HSՁT=}bɕޥ@ĪՃ+4bC~#Lf{{o0F5|,v(3fm@Lgf<\^nHu?jȇ_,(Ye'Q6AÑ)Y22r~!q|G-ط)K8 +%"U 8ǵ^L֢x__ S7I=! J$sONIF^F{N3vmj5%̕kv.@D=)C2,E\aʜ0WD7-zKu2%i3@ӆ^bcY2SU5?.p)i7!@gnBko[ks2r#=meemOcVvƱcmHe bq4DK`x@U;(/Cq(x<3yw!i"W.O³byB7 )"2 H1m*Q8̴=@%u}bTi8M[4>ZIL @r`?ʴ~S=)g$%F B[K  7ɓs<,J`mjs\6I:I)J+"A |2>e4F\޹ֳ{;LC":dd;;-ӁOagacmjKThZK2`gxʨی'2"Z,EA 8.Nۺ z6M ~ݦ,1rkvYd܊rTAjIML'G0٤nӗ&X 7 fG=iE*9k%F_ψ1 (O8Y{"۟4֠~A0 cD:6rzKflŮ Şd$ȁk?C~-J@=~Q}mf7'+LKlVF+p ,m\,rR(v%f 1q1vsoB׮U*y6o,MK6qT5y& ehuzWu{[nT)r{gx~e{>|*`7lO~%mt3!XX*4_(+vo3o^)~s% H5!"L;3CAa%pߑq JR<~3YP( RqO߬[=m/li|Q=Lq'7?(*%}oufe]{@f'RHiƄtVVT=I:I@JYߤ:/1Yz԰0`*/ޞ ^V~ґo$y?,([VܿB>߀iUM\"p`9jZ8ۯ!.[ "7ϔmlY 1a/ӎY=JFq<51(Nr$mYvY+ |jotvr~H~(B]Tk3@w|(׫ؚ0k},GA Q6%Iޏ8-W\I4nVHaڞDi)mC N&NEg|r(~Am|eK}5 B,k|]~n1EJ"5}dMla+0:J\>(mz`x&V]J`PҤ{n[mmc|!;͆HG&LY*cKuVAj2-e)- CjCWft hAbVJI@ y⭬6Dʒ*#\& V7)j[OzC2-/hwr_Hlj&  肪EimqZ !]|' e"8)qSSQ:>'Mo&;X.dN2#K1cW+Bzi,_M%6j;QQ9\ $/ƱYe52+e*YhVWc_3mgWxײst%GdO-6ZL4 񺬣11=JWCKJ|ml'1(#)9e p$Y /&kX86S?TGiqq^T/" vǡ ~]c~kRV֬Y4{ryo{I} R {*ə*s| gOH šҞm061]X僨 a8ѷhZWS_%y@LF ଳa|ZQw`Ag tC[ :]ײؖCAnǖH uKaUx_wB<R&Kyz4&SŵK45 3=KfS,r^+II AИ_q<3cP h2)(? Ƚ8t/ 9Fl6duX%Kک(Yvo,VnؿKh:2[e{myDxg6r 츊2`w,=j've;/r*lCdy B[~zaz"#X6B02PoӤAU*oJϊ6@(HP"W/[id:zX-Qd^[`,7}NHUuЃ5qQa,Mʤ)2c=Q,H:ae|H[( O@,B6ęסedo\w.2=#`c~z!Q a _X@3mHN{mϵ~w5\2VN_{8u讅V$[|&e*;ƒZ][2_\}>~g 7"h}\ػ1zGPH ]My*W pD5Īb8TV>u 7I}'jԺ<l8cVB7> `HuRXMzrfa"FGtKOPM/C\֬Y3 =Z;spLU5r=^H6P€X,-CY:K@ oai8#F9agd%v'LJ tb P@(1:l? \p -DгG>@BꏅIfJU3}4Kp$/W^"yJExNj}mFUQdW`B;VJϯJ9y oJ*v6H:sVQ.j`*_/ ݴgLs{RU>7>z (q}ǔ,zo5wKGi xIm˱+#)zqSI8GcF95 ǝ*ͥs63(1| pȜwNТP9aqYL%YqZ+iTT {)y2`_F37Zo>1##vX5@ 9cO23ӵ'4Ɛ9LIUD+n4~Q@S0vZsXGi^K6dl;K%Hb~P=D1Q FEhX{d Pi9O@h ( iĹ.U~r#E,RPO#KD4݃5^PpLyIs߾ ܯPwX9:Ҵ%p2Y;21q~PkF_?J1Ӯ4!^EΔcxl.6T#U)RW*5iMN*=Iu_Mk\ *U}p;o:,T[).8 -B@zƧ갥q|o|Zsw^\ج4Y.RҠRLQǹv67&ej}ڿϜdnYY&,"#WaYJ(6&WZ૑:zFNvbdʙ?hN5 ,uЃ j-ViXHcn38(0@c}X;!֬٨0XM؛xynVS(Tb_{9H){}[F0~H2} xw1%҇v?lo&$̸<&y$'rec! f=ErR 2KM0( :i} 7뼉bΜ<lp?fX̅m?Dݎɯ&f9n~/.n)mڒ3u+}g5&apɯ6-vW)^1NRLdl+k6gȚhwTCGXPzu)Y[TL ûL ,יucggfj>  kWD*:EsLK:Z3=vv)J۷ h\Q<%~Q(T!qwf"FIC8^;O Kaϔ#\p{瘆+ە5NF1rRY '`X[OwUR|gXVS ".p/~#=z #!lmvkl|53lޠj`;As,G bQSb(Q=ҋ@:t t}]œ 9g{B~?ҳita*:Jvl @ii{߻7%OupJt6cDpVpJȓmaTj>%HMғr\]8ўXƯ2Π 0%?.8~ˉwY:W":D D*wlb> fEW/GԒZ#jӣz)T`E1mڐ%ݧ9C肂ɓSIΩdq␵>kk䅜)QTA㉗B1<:= Q=s$vsMƷ-Xhs,= l0RE Q?DkB@v`@:Nm;:jdk+Q1g΍DW6y}65ńz/]/(R8"R&"[%Ԉ730 sv/kTYDSMcw'!å6b;1JhEzyQ9ez>^Le> hISio)CRx<̉tyKQuݫ7!QtfhC\@rz"՜z~a= i Ϗ%NIȫǭ]pmzǞfpm%%|&;p=v{-)dv5|b~Q_>V\m19$_d ?d. aa#X](af7$/WDk^F$ sr7'*yA :%3}Dߋk):cxJY8] \lm> N,]&^ X4yxbaH=$\Gug2,)QL;|865&#leXN—vwҰ4MA56ZvbV4V!ޟ.d)G*}ѤEIIXYYc$krKw,¹w_Z!л-P9o4[f&u(s2gjH8UjŰb(Ђ p^ʩ,R1y Ediy_1_{67n&)Cn/ylUi qTQb~WjvzDLV/Z^&ZU-Rf[#8i`O^smqDۛJ?+x4#Nu>~x؝7rx>8OJ(􉔿T`,6$mj+)V3*hOt0{S`Q@l2"}# f5waHu|܆g+|?Ba5-Dνw{GO޻5Иa . y(לˣ]Ԋ'v];=ɒqLKX,Nc^o%c70 щv\YH%C2H 2åDcվ4;(l?c3gAj~(wzg~@Ԧd? ' ;L'ط5`}ٻRqYֹUA$[1f? sjF.<=<&p;-+tLwD,տ ;l_/^$4D#!QSgy;Jk:) '̠z!90q9 Ety̐X RGh9I` w86rFnIpS5}-I "S],N3?193~.H9yr(BvpPu5فlXkgV2V&? 1Hޱa- OTs}wjk@ݼih)O\DÏ\r4]8R $vU ;^3COvXɃx0Z9R*&w*8-x5 &5?kMꪼA-z]*3a;kLp^4_g 6T\]ejpK%j=$0C8glTL7B쥎px|hļ#iiI͞pԯߘ i4,{wBd͛-NŸE_ME;ë>MуybșgAWɴz6VeYscg35#z&XX~򴝗(d'N(>651)^I pLdh sj#{`_{W.a=?o_L 30/'YxO<¥+DcY f4T^aT4٘ */vRUanvN!? Qpoyv<4Y˕:f]R6EvW9s %jz{Eb(PǓwa{/kĿDJyN8]0* h9ܚ%E׍-c^(>Jn/C~H+a _͢d0O(!8_Fa H夢y1l6G}U$ųLΰ,a[% %a͌l6@ǜ8#b4"_C ®!kFrFMjKasx23B"WT AS|5⻐u|kCZ|A}[̜Vj coq&_A:^]49ތQșvM9Vq7xU<4:@.<jq0n7Җy]zV.zagдtp~lhXE XT(lH!y@$@T%b9BNcF@Kԧ1/fK|:t'#++VU%Ɋ,7_#KƁZ{0;S< 7tn6F.pt]m7>X4>x~@?qU#шT*So5sZ/0"^9}ITHH>H\rԎ! ̧ ǥ1O:1F'v#LB<-̥"={ i2X-:S=FiQzkrR)@>}X2&_L,im·=Co^?ģ_i=>nFI.h5+9l‡V`嶒 MLX#}0^89qىD|͈ni,l-LLE KL_4X_ 9GxZ1thDJNɄ%8S z<q>9ɣeJ}|Hkf.%zlquD8zO~-M(3Ui$T>F$fBM"ϦoCv80oQWQֱ#h`i,7L*aQwQQd4ş~Y_T7[ڮL?y/C8}y+:SU&fʁG6sCnQFQ~(}?/_b#c\G|_O.%k7!fihn-]eƭB%Ɋ;{?b$;r~50ud|B`Z(DZ\ǘIfBPl]}-BҧI7A˅Z^kp닳ģFF\!SOoW7=F% zm%&֏ǺF9Vcxcr`fHIE:u S=aƢno?mk;DT"d*Co%dgGwhi-R;R*? u.J-cL Ir44?Q4`n,ҫR=4eȻyv%HI!qDpڞcXN~̓䓁ZI%]!6USu>eH?} 焚6"B"Nvy!5L 4S0Jit0̓ Bl;;S;XskUWA^:3D{zgߦHRטU7|T?Ga!Ȁ:InSh^r2J%\ *'T3-j$ho^!k#wW/CuL, U~׆&&u?>kȅ;)1G܍R2b wOuVIЌ֒϶& pܿ*d _8`bBѕ-wdM$o+߱8Ehh!H6m?i -԰8JZm/0|9M^Bڷ{'FvWPD b+щ&P[uxu/ë"箾 dE >{SW ~=_ զ wksLL#pzqe~8A[K]rYˋY^%&JwskWggmӗ+`5m&Z=Oq% E(wjpGo겭]d{7Ҵs5LBy>/|u~pɹ`EFm"7:%P=TƵD5ą4H,aC}Mx\ޖO5(\\t#x/̲z ~EqInV+:-&'׽4ymի!Gq }+"i#NxC(ؘٗP͗g,B>an=s S?$rO$6Q]vP-Z,ɤة:'~(4Thצ;kՄzFEN%WP-c>S KAd*v92^bӜ־~ `a;{ldQI@mz~3sĈ=l32?:ka%Y'Kլͻ[ iDplEf쉓 QR;f[7U+pI?ꭏv:f"N}xL`pNQhVIZ1h˸Azqwd=; ~c':D@"_i΢|aӚ$_BgdYnƹvǐ4t<s| ksӒrrV"m,'sQː-Qv+_ \Έr:^WtjP6ڐQO.hZy(O63_D P]z(5Hxx|erIjH@G%4%7 [b<j$ kge󯉅id*}eqPyɢwi)?)x^%m,AN" Mo[R=5*^8>`K˘)x{mA[Kt [7$DJS"h[]_=Gԅ y*׭Z: 낒$ c >_ !2o]g nĻb].z֒U ovhLb堀Ԓ\AgS\+Fc|PwUV x`W!jHRrL34ډi۱ ȧK+!zo)Ֆl*6,x!t~$;}Gby_AdF͒47L\Ksp$X` ;k%QHAMT(Z)O[1>YURkڶ"j+wv%\.e$ztj,YIMŞXoΞv\6jÛ͌[anc0C)`8{^q<)o=1 n Pr҂PyJd$!~'U" GL0+^ cKQ(g pYmϣّ6jnԌY~uԝ< CN#$QvPL?i0ͷ-7>{A"꺩T:gH7}db;o(*ؠ3.Sb uAyβ.9}\۱}Ru}4$#<#|(,e>.-$q|fz*&U9?ItOm:57zaWݜEFӹ.q!=|@CV *CaV4 3줐( IkF)55^elB^lJ؅sc?i 9V7L-vq2q`HD4*& ?UŠڠ7  Ja"sF0زlzXupr'p?CQ=G=wj7!~aݞdjZ3dg׿Ŕ ]-YFUᦦX%iLW%c,biidOHCL8֫I)LDeJ+U^ąL0Γ}QMu|k1_0i:9[QVEh^FV0!>"ȳǟa6va9Ah{f[?;ՓIJ1މQ`-&B8ϫip7|zrBHn`l0λ<;{r(bE ZO'?Q`c@RSQ%Vv,K 9|F&M^?5kʺ,:!zƬ¦npzWǡ!&k Cc;hٕpEN'xۘDt5u%HEy2tY EƩh?=DspZJr;gI|1j?Ho8&d) c@lU,G5J — HȔZٵ_p7o-4  xv\zN^RLҧ2Or޹/;xb'#@X- b @!:Pp롶y^#MzYw܄XjEVx^3qD&2j"9xP[B@i l_5 3{R,׼:L ĶSr ΠTl5`,b4b3O9n/ͤ՚O!StQ%\$4x\L҅1B_"; ppE蟤.uWvN1U$G̺RLΗ;Ы,^aߪN4BG9fF?W]Y_~SQ{2B\a( /]q=Vf`.^ї l_) eem;v\d0."`:an) wf^^!'ECet)\oFNyI#2U| ZA͌iĊ}g:ņʎQi<'{904t|mq1j ;#9P,t3)I Ra_8r>W&,f:*$G`r\>3K1O pX[j$NVUQ^/Ҡo;XP[yhл );a+Qk@Hp+MW}cN}g(JCZlld/jq\[D˲P]9|M[0ŴJҴIrT.` nL:osu}s*gà 5A^qچ6|4@8PldR{FްtW+FS~PKM=@ܳv/BO>b>'ۇkj+$r/kV,wbʎb\hzNHe%!m ln@ڥH8C$0Ԥ*ކQD Gc4U"Ś.Z([O߸TA$ ~܈/ FOKd$Ąz/k1)H@'CD|ߊz~#jўV=y?)?+Zd8 =9XPS1fBո]8n ui@<"Y y?e;֫R=y*%4U^Z+}XbpZD'n['|[Zis'iՑn}MsSf4 YM^A)RРZ_^#*hzih:W@# 7XttF\$TqtXI^R]la{25_yE+.#{mj:d}$`[GDO B[*(lw^$?郥72U?nmxO7JUzjHcy`ȂK{j{PH=QNgMf5Rk\3K#] k@+jviߕ!AK*7fy४fT?U '©ߙ@ 2{Wy 5X7p춆.av `<:u&ժS$bgLz"zcbPlXL ; a>8ETٙFA;zb3;5^k1L)?P$zwY;eo lQ3=w bl,j׺>>mm^ӡ>.Y3҇Ii٢|Y.NS4T\)/I}:YGObldT^/H؇D'̻7$8 il X5L 'uя l; -d2GI,IU}|@j( [ SOz)s' K"`t7OnǦir VenT>.0Ut1%T:yZ&CJrC$Q9Is5>) e4VRn}o ` s:Kz:)G=W V'+ &L$Xe, >H)Ao (de8[ӹ-ix2_5ywu7N9I7&kH9hzz\nuN`Pe _-B%[!#'о/Cyo 7BG U0Mdd&fuע|pKdBZZSYpt۞\͛r=1[}_l4j;)Z^Uz05FXi!8BI% zՠwiC3HUPB@bƂ`ݢhԴ,?~i5Oq r`=v$|nWFREUdBpc[8>njw,WsHc.gA&rvq? oNԫ memG=VX|*m" "u-yc$Iu&`$}Z44"1*M [w,N͊2݉"24sS'o+CE ! ;@x]E,YIzCRk ]_^GR}m Ayz94 7Yg-EM\}I.dLbWt:+ϭ`ǥܳ1aLP󴸊HYA5%#=bϜ&郙%JbZvBtu#i1`k즽:-3g6Z 5\q~X@yI'!=ϡz]jLBlVnC\c@qT-rU)akSykVN l<3ctJ@)mFgQ\A!L #ݍ3,""mp 2wӆK-#lK{fGw[P=e:F=b@v㾌IMrDV9ܔnGȻ x |e7ҥJuБ;edρ;rV?{Pm%:/:%ە k"_'eCR' [ˢѡIsۮPw6v(x= if4 ˰s)26{Qeˬ} m?,ĭI?c̙{ :uJ8IY.(zHJ} Vƈh~h?֬"OPJ(PHToxKj&"YK%ҐDVh~=J^?X٭ZGQ/DshȜ$DZjy<Ř[ؗ#~b?Ii"z@Ԥ4l@c>,0 s(tzxvv*y-'ֲĊjM鳄-NJ;;]u9Ypc~>Z2!"ֶ'2QSot.4Vskhh$=mJ 4XFy,6BH0GbяƔ%nJC90aCh) #Y+MeAnE5)Vӛu|9ѻ"Xn K\C[I#[~ !9: 11qj oV߮6?qP}-RWLe/q䫒/xl23P{ٺ-h)`$Pk[Wk݃'(21e7m%]tGFE_ΑυŃu03"z}Mt;gpaԆ1hL:,AQ&ihjޭ1N75`Z숔&lrѴTo1@?IĆmL& H~6Z!zu]bf#Zu~Tv-WgT#/F pL~UCbq{Jfď|6)L)VnJRBA)>sJj'mNbqDDƺ}u9Y.KT/YA=LSVig9P';"mWyf$6߄&v!& 4DFE]ZwΕ'vj]s08a`*8Wo2EO6R,3y fF}I~chF&5#8 63!iRs+Nt% wG.=޾h`u6@)(2?39EZ^iʭqWhǕZM u*#R|~nwөunu? @(.#zY5$o/ӈ?VE #>kZ;LW_G`ٕ~yVH;#́5XL6U@Z y[W$osqqB҇e}W,1|`#q@VF.wݢ̟:l30c"a'w`T#nG˛ZR }a35&udVOC+MA.(_3U Hgۗ 1.ѭUOĭo (%"I&iCNϳ37(av/~(jw2=kd0pGza|TPZ'(suE1;j刢/ ؁HppnQ+8%Zy-HYjtNֺZPE<"tYD;~ Rr9~E$HNge^..qXp S!f8` Q)Q"SKџLd́xp[ňpe$,{[y~'ï儻ʎi>zQr%.0Ol`CKZ2s^TPS>Ԧ-B2k, -;iDZ$⨃BF)ͼt9z84mXܡ4KY&*ɂZgFc.%j2JDЁzG݊LBR͓QW %<#= E^[Ǿ >[)$7ސa{_G%F $/ *=ږ sq0GFk>RBj4ɽ{.lQ0>S=}bb$#jŸ%PG&W4,7:MJl@[iH3ZB>[J fa bv},".f8}N!x o~q}[J#3d f5XN=cd $4YY={8H ˺2"=6ybŬ^[,$`(-E܋ҾMfrnLEWˤ]jiIJY'_7P6N[+?nN^ U@[hV$s'`q:_Qxjm7eG9^Mq8KD9, K0 p9!ڐ xzHF8HGxM=$SHﭾQ(eLj(Hz? @6CC!FcفA0!Y觡܃AV<-:TV YyxyRzhևA!IW6P- Wol.荲/;MJnS*j{|b+UrLٓB?4mCq<8Ct8]C^n25$󲈲]w6:vݍ]@l ̹FJ8c^li^ӛKWN}Es3_P3EX~gy4r9ZrRjǔRN3)Cc؄~d*<\߶l$BIT?Ѽ‹I [ +t2?M?DE.>,rGI(Mb5A}n.VnWx0/o{l"q݌ 6qBrB!Qॳm>\lj3@mO>l5@fΆB$[)ކYV1l$Ar7Dڂ[ !ԅz <2v&Ve0-c1}gV{uv%7P c-v5*giCZx99\v n vQtvqo-HռWB=U(:CNG̠:moG\doYY+nV{A MVڕy_OwMPX~ɻAkTX|gwes)⊦߈]nϐ(Qj$ yA50HX\) Xg/_3+$Y_gyw_S;:9x:ˊ θJL&H/NBit Q#ICwBQ{HLe k& wh [rҘ=}9Tt$)|p?WN ;#K1Zj[LOsi_;rrdyDiB1oQzIt\-j&2e{ ^hyP EG?T!n] #O,bdc։ q6m@Щ]HVJBbP&A+;(`ڗޝ*I'IQi< VA"#r$\"L:BЂl,M>(cU1mH<6 bRbږqO3&V {g̹ﴖEJ1NҮDs) ӊ|##v~ j-z%qɫOB{?H̺0Vo0FǤMPgI6]w4=Z3f9˃R)& *H/!4 JշA@SHf?U$j 8N|-bUFv;ds2U9Ү]*4AA24>eޮN[Zv\YRxbQgmdq(x=WSJц@؀ vuB}j[caާ}R)WmRђkLthnMִF%t$&C3(#i?=.BF };?ݫMsGTj[U36h4Jm{p͜K{,*mfV y;],A ? /?IId7}y.U׉axV+h7?AJ. %z4 Ѝ(M/r/H8J˻R]vTN!KfepMxҫaƊrL*dZrsoM U%^㖺x7o,OQ1TZJ@+^Ś=x$1ڍA-ưOޮ+j }wwLuOk{slQ۵DTWBk*]s$~yG]?W(r KJGPKh\fm}lOBVIm/azdj/e0n^Gj$=?#[r|S|dž?]\S V8j|ܚ%'8nLQ8G zl9@Oo90 ﱬx 쾥@eA~w[awA2cs#F<$C5n9A]@^N:}⅟1Tj޲xNs%|7;@7!ftPG-'Ԧo)&TjI\ۘɧ9kįuI8Sܟ>FyTUΐCv>8ԁb~m0Vl&2%1鮾O@2nv U=|މ^h a$|ܥXd㎊zCRO R3'}\ oZaJ"N|z\UkUP/v%7YCI&gvJe?=~VUҚ&ڕ]z2ҽY괣Ro}\7 p5VKf5a8"h1sC'uFE}..!ᯕч:6D; ֊;ʟo5v"Mt2}bՒ_1چ=DIHK"I&_m/AF ['0n M⡖u%|hIe+8|_aq6\HYXMgK:F݆u5M-cZwD7b_141yGᓈ~gտ~+Gszj*]~Fg)1 Mp@WɾPwC5,F|5X~.Ks ˉz &GJ;ލOp!BA* ;hڔy3G7S785} sBfekEˣإLǠnXB@vRwunzՌh~5}L\*}^[Քr}Fs)ɪ5RpkmuW>dHF]:X s n @h+D1D>GUu*Pg ?r&Z:̯[aP-.B;ԞhE]JV$|m@rε$)GgA]?[_e‚JHX?qحWcʆuz{S]RA^I]8&ti{jH $e'8dImʊɩ ݪ5HuCZH>>? xG?)6/_3[۷VA4+ZODz  +E'~xgeWeN;8|5nAPHFγ,c/8]8M!, xEIz2W5o"j<ɰܤ{U~P Q֏SNv-g9S~v(`+V:s+KKa }*[U\]UT [I ?9YTg  2ǭ;;f2N(U2<_9]ŸV3MxK5j{C-^l@LnQAPpn= l}j|(cޚpNSyxa Le:^!XjZ fEV2P)g E7J/2ӆ.kca8V~J hm`|bUdքS`Hj0}vхx>$Ss V@)&h KʦpJ'x{ZjmOSZP#9aIpr?XMF0M >m'FoxCx͛-0~^辣Lf5G\ 2z# ®?)|iSY*Xu.,qX~3dfdD۪5eC G0/"RԪъ-TP7h`ՔdR̤JeЧk=i]IIKQ3 {EI~W k:##-8iHڿ 1?_b~qT.?14G\c$413Yȹ#Z|ԧ: 8'*&sP2pq-0,wo -Aɿ8,tx7i4DMk`z\&Ύ*Ȉ'xϣj'r>cx.6z؟\8!3"y*T߱Z M>)=)zb㑘j,uzoO _79Q~s )f1;e}cLCP: "70/ywZU?8jjc~V:VG9L(Կ5oTs(UB~,GH.^PDt)8$dcS*q"̱8mr;Q2%4x}<{rq2}_O}jkƠ<A<#AO{ډ@~PzFuq"6]FZOu vQ1%x#)/{I1\;XJfM兝ēCVL\E[3x.tivUkIkgd'Yqu=A"7^Neoӈ>qWv߃h_WF}uxU/  ǟb@bu9Qd^a%-ʼu^AYW ^|'b4!KXbLfU})|tkYw4zʃru0iY}Ԑuc1f["H/eA۟ o/.W)JWhv3E7bFm-P>>9J^otnRXTU J(v}8dQa$-DFRU6ˬpuAEmru!\Ų  !XD>^ a1 fd*khF;x_H컯9<J3VKÑSIB8z 3~1 iZ!p9reI^K+f>-O#Y6;V50#*U+v |>:zWP_Vt|駅_*5;)R6`BVԟ.'ʈc|22K[/Rk;±1Yٍ~i@DZ!_<7۬2f̴^)C#sq{qs0aE:=F* jYԇ*ÜTm~gp4 @e sa CCDg:k4W-'rh[ L,w8nJC+'؊/ PyM\|AD/C0ArSoH8 <: IR64zMeo鋿Gk19O_y¯3/:ME oEd->'ðYy? vt!b1tG@ Z+hޑ_m)UiņL&`@|Le3r0wa@nXnoהO==;߿0Rz$ONʊ&Ⱥ#GApհx"Ȳ78OGsi0;vǥC6|$nWlW',0юn/qܭ!g,[~u74OϏN*k?!܌J0.)۝9M;cqQLj0NKYCaD*ׄ94b1e᷆P)'CplGFJPK1:2l5-f~c~c]*\3ruO+`\[ dW~}1&?kxq {͂`(`GH#{.`*(T >~5UfX *zQob1C0b8 ,Tygc[t071!C[M(kAJw-S@Qr5,ggpDZAa<I}j_3M'dvD^D [ O2#oq׹1'>?p;zv9ϳk 04m}>ҚsZ䘕5DV2bc"֕z[ @OR&TSfE%(|E>{mkn'^o3mM ~Q[-_R1|)TVy^WB*DH`G.%M4LEmjsT@, GZ?[qO~@#y'1F tSE}YUab#"16VTRqNzA$35.q}&כPn> +! AԽWea'qw1bѡewDJ2_&Fkaf#,[5&.PtH&R {B8ke?)fZ'FL VYcp"VodH QK3ek=CdL5ᶛLþ"l<3y|YDY9_ Zmx 2J(>Vo  ڰ! +ѷ'0K f J5̦R3XYΪ=- GSzZZ{m(WL~w '*w62v;ԣ) b\,k*Nqx$'UPvfJ^J.{^>"e$Pb+Pݫ 8a;|*\#`?'m^gq8f%K-Q]b?CjX^RJL;h(@a}*(bw( -uIG;h4%&4W'v:|j@"L~һ:r_glYy0jc(o2};q">;^s¹.["l?5=xͱ[}bӪ'zb|+|JbX+]XWj||.._ƿT#u&i> B0s\to6&XRUq2)aH0 2S݇f(w i'HG>c9ns;F e| +x1uCX$ ts|^Qs}u@pxFHSZ` VOZ1Ŷ TVp)>P~kf1`M-a|U( d-*S詖l>7|7K׿<$ѡtb "6 s1}){+Oԍ@M?`OSO{plSZ:ď)䬬ڢnHt;S῟BH^ r|=y`+m_略T2_7<)S/= @Nw⭼Ց/!cX0|~",7o,L9 a(!u+r8xL:.b{yRy0kw]߾[l7hFp]KF+V(Px\k,g,銞"^Mu& "Kq7׫_լpl\-L?w/ qROJ.3`T}a8Q?) 1v@Gl$ luueOW"ԔkѶ҅dBd?Dˑ<Ľ˓c:y80SunemFޮZ.`)27:L¥֎jCpz.Ե<.B?[Mks~,+p D¤L D$9ۆ管][P"mwd^"?sD|sBrX?Pw,Q7rb.K@(}ѾP]چE14}RζͤZphiCq[ s֝W- l_gNt$vWi`k栲my3)PBjܓ&k˵ A2GY7qz 9;6 WprpGiYA+c(w)A>}kSchx'pi/P\? +F.iyGX80hyd@YB3>]`Ӭ5KZap^ NGh'MSv@Dw:4|x"i{A6Zk'M%BMeCz#6G]T1| ' n#=i^dn>#Nk++P5ߊQP{R/Gd>Oߛ8^S[vTޢVZ(PCZ,s::ANjq5@jdZ$1; m^~v0ԔL Rkh@%Y|f-]{+&vuGtoG%o gw@NjYU0ȇ&o6~PW/n7KJp&Pܰ&nNx4 ca2yq2IY&~dPI-HVg^`>1*/4%?R0.txkQh3 9 GiY~Fs0"%Sa}i Ol- FV*&pAj|)g6ƶ7lOt2BOfo7a")"s7R22$ӭ۞+y,RQ>$k}%/4Ͽp#6DcsJPC4(o J>.Ts]!!aMg)yMZ0ZQZGɹ4}OUȊ*q3ߨ:_YCҧʼn==2g4]')"E#x{um<(2uM8rO5aej!'yꈉwׇS;7~H_T=Vv㒞] `!Υw8^3{ha Dch~Mfk3hwU6ӂ}F[Bb,}t}P;loIpjQrLE^Sw'PX 9͑YH6RJ RCiZՌ*FAjCz yNi׉+6<6}.u^q;!;6 qAUp*ꠓ ><ڷ<[Ìjи:SsAݙ}&G4ko__>t/{⋼8#B WOt> " (li}T8d)2.Tw\>g=UK:0"ϿZkIGEZo:n" n|=Ҳ{1u!TOPa夶Cb`EBi2 C5u V<8qR *h 8oR A}o Im8GO4Q &'V `y pQ$ [9L1@#2 e}7fE~-eEq=.|QRԗ[գB'fq .,VO*4kwI}ʚ#R!u1o-Uuɣӱ峬`K%^c!xԈ,tvKхZo|P1s,xU!u*oh`т 3:֝ɳ5cL ڥT_:$SW <a(E45LҌ(g8;6`ON )gw*z0K:fPCQlȠ48[V:8;߄ o hЂVXSDkMK'~yaP D֚.`4˨PKBSl2mV3U-+#c’+N,[u?$ꐸVө{lg_ە^mebkPO $|h̏0kv%Ld1q9o0s8C],p! Oc*>KVǨҽk6-ܕ)>SO+d~LH簞1]b;*dVIIӫ^xI׻@L {Si4gXŜ@Z!vZ!# 9Ʀ:v{n&ouYh!;$7ǎqx@i)`.tdں m˾Wgmߘ @|Xh=Hg;t^!cX ͱyL N0U/֨Q!#bHqKm//:8ȅ-OVtoP膘6"{ܹ lTGD]#ZNcL9?ܔUbCG#SayJ@, Y=[`mW͔` yFw)uӉkq*m$`yi7Xp/6eL߉{p0n|.U7oqoqTycWLbX[Uyw2[DĬ@e/8 :1IC?1 1]F}uXFV\?!)<>!UTD;QY(a?U3x3{\h+:ʪǷ_? 5+D+Ѝ;{L -˳/5u5Qujir +A?_O;7ն*dR•_~Ya}Cg 9>#"zjl*)}BL<1w Wi #2%mW.cQb>2~p?`}vG> ";??B=sͭ7!`Tah4 G+>7{cm' YE}=#c']wZe^4Bnۢrr~9ޒ6T{J3(>K|BiT R35o-xPnR{$pgO30!ߣ{n/U6`}̯$n++o1˲np)AӞAkTēܳvFJ6%hni cGUQKPz]]m]^:|pxr&w|IəwIs+abDX4P4 Pomn YԸnK#_ >5"{ek_m70yi~r5_L+گ !&2H)pKNZy,f)b|>,$g儨\Z2rGR:Dg"H{J1pƽ׏~ѡ hVI˪p9{\[ERߧ+\|d#Dޮp+YB] zrωO`֡*A:]EK/a'.2q8aTAjo?w p Td6nXf~SfQ>°L-[lz8bڅzuT=G_xJӋONĤeKv(fT{R~s{Gv?&9Ʒ|p0us2_ǫSM/p|D$IGS{u 4jn72/oh(>gWTLy& (e_6r:YMaqX mY k4"CfR_*ĹG~XU.K`A¡ۗXz ^B\G8}JyISWВ9B6"eZg "b (DۛAQV_Oe9 {ᘾi PNw^ho/?4EELhX3; VY721LJ,(7%Oo;R !YT漅_Q[ =gO]\DVP]Ah}?#?xdX6+d:Q!r4Dl}t/Sx?OCXrUr#C,W=]4V!(ȭ_n!ED?g$I5-$&;*io)@!Fo"tr`3CoM%?#B̂TǍKԑ l(N <̚fo=HK5bFˊZc{41|RC<öqz靃=2-0 n|%(Twғ$y!et |@|d6YNN n9sZW)a5̳K9Y!x7"K+wb.DzȮ+WN.SWǶ Pal9&Ǻ~cq(~| )k6B-O"з-!]»  x [a>/Sx)oGEhHbp`{FAMQ)M\3@U->- *M[ .ytfFҹ"H\|Jw#GѓM>~B 0Q%[FbxܑiØ:|!F'yK2Cw74m_{qT|gXE:폼{}B7EhQb)U@c0RYGUUk]Y1xysS؃MΓ3" g`Lf]6c(e$1{l d~)-?ĩK-.qW\NO w '6I/o+]a=?#Cx: wƶϝi8v%8<$48N NUYGQo +q?tC3z%ۀ `""itF<S-t(tG G%ࣶ"ɯ L!Sw:DՅ_jp"tE bH5;2z3/;9}Q7Q qxlSNekY -ү/\"+qd<}T [֘?{ !_| N4A]tí$3M/mY\ϝS2Ь.&~zW Q0r.F[@YG.&sݜ|*< e?avMW Ykdц͚_ V0Qqz+bZgct!ub| z>4/UNjOV=Uu1ta]AfDhs__ƑO!sT#9ITFؕ@F̊@S79|4r ':fuiDg94BaWƒUk8M:n3}zAyW/EG+d[]3JyL^M:yvX} z2jJ182V[C/n,1Cq'_\x_@3̼,n59F$;~I*&]I= gŤPZ_oHM1lRuz{>꡻ 8#PXOQg}M =%$tj` }N +avuK3[Gjɟ陿yбi ~bD-_)  DDe!Hi_],n; l8VeKO/?-o_-r`FϹfJrL _fdρA9"_,Cp+w#o#[F * >_WYՈ|ٻVïk0P܄ J9o$'L]Wo+HD0d#j1/OAA6hCϯu7dS /,a3[g 9Iqa{ 7 @# 8j %TφGFECf؋R4 ",3Tu0|k[GR54OOٍm^H4H47EWҙtgq=}vKBd>//kRQe?>yQ]gϰ[M~ 21}go [F[=K> `8Ϛͦ0$ MD⢌!MƊ0u%a"Lh݆ QHjP@fIC˾X"RT5mΘ ? +`Sf]`ԟ bh&|\{SnF;W{_lŠǎn淴HRh04 9e+Rzzh~NqjhdIm-636a_n#VųrQiֺä{-^2 7cS"EC$5\%%]OհeHԍ/xuP̠,O*e:B'(l}+&ݼ[KE.xgJ㗢P Q"!]p,/tCaHy 5Ys;\ PiHv*-,MY HxM?aih]VĶ%?kb7lkl#$(")$Hs%r7* bEwQngF7{ʾkQ]/^!' Vsi %Αygo_a:jTLYvZiH٣U>)!Fɇ]1Jd{2iC?5:mt/IN*AUS`jK|gwWRW9.{[EŲ%s΄O;=-D?Kl-]νAN ƫjuy],2з [~ +ikU&zɉVZ ǟDUԛU696˗G؆f'07M&FlTy`67-2ģcMXEv+|euZwQkHmeb\G9]Z`mH -i>WCVHEϝz^#TU4)y8Ճ&߷Eڠg.ihz?y$*ӄG PχtَRom%TD4$0>'h⚾BZp 6DTihBL<wL*;foq@^0OLE&;[ r|i.k87r[M1Ӊ=lq[fzL械԰;@b88EYRlH1K[ вu!C8OnVrnذ0_aO O|"d=鵤4i>K`ӌAU ԇ SmH=3=ZLqNQ"6S\y4DZxRwN="1\:m|B1IܥQCPsn%h;dbA{H#?r:!*h @4۔}Un&MTir^ zkR6)?)AemZL_DWY@'KKp*1M#4e M_l[T/u063q0@㫴T`AEB.>_T) /)KEߕ2{0gKa- Ro1Crzӯތg\T\}͗ tT/|MgF-Tc}_<N LՒyV+*dV*Ђd3m4ݪ. M ҪlѬ3NW+xp^G$RCR>9(ErȓZliȷѭ=1Z0(F|t%S]@J.̜r@xع3a >Jc i{5wxx{<$k{^SS2mqǸ'mM,57{o;O(KG9XOLƫ S q YYt{cpC#†HH]o:q #!\aJӋBqW) Gdb,OR44UƫMқė8i%I v50wZfΧNCi`dv+AޟhNX|Ps<`aaTK3;ɴw ^%1BH4! {۱\_kVa¨I32oB=;oL<һ.n<DlFX}pE#W3]ToPfJH 1W,Q2ZgLK`>;Q:mՇ̇zEktSllG"iJhR @tlN^鎄jzjdWپ4q\moa1Sq1-( G7-|4r}}Ȍǿ=E[9/G+x(=y!o|hC!慍nѠA [xa9庰ۡl{3&*| vc:Sr-aޭ8xl|{QX(0ڍkл4R.sC͞ ohWH.d RIor8Yr8K_3cxw۞ ݓd`'S GgS彛k"&Բpz 7Hxs9)ˋ~#uA@inc +(g_?1,g,7M6Z:v E0;*|"=Zф`KDe^u\}^q^vw'Dh|[fKViebQv^+7Cԧ)tʅӺ̽)JQ$e}2Wpqbvs 7E`o;üx,~;ݍ/7i*k8\z^18PìnZ4[ڎw^k3C8LҿI6XN`kzB, I}5vUc?d|JP&|A_v| /2>f 0K*h )q am2_? K[?hm.^KNrEJW )%eh& \l^rAV|0ϧU4GB+x9-Ȓ$dfVKѫsL~Y;0uWh?!/'j(^Su}_Dԕ7KK)ўY^8Wө ˒W'@A[:A3_'QMz!iiB@RaEc/fQA&$E~Q 641Еc-`$1IG7"98L XG: ԑ"Pf[xVȻ-T>Iϛ;^Edr{Q?1"5$jj Ku8P>/v^s`ue Te4<<*\7-u/y k;x_RiEx\i}*%2v"(\BbX?gݲS,ͬ+ж: \ԏ+Ntڧ&7YUs!E&j(M\hvot R0FP~ߌ%XtJaȡхyD- uDccZ$7ta'I~!e۰ll:(k(Սbc'LN#OgqAɳbz*_@D4{̒-d2 b)HؐTtyɼ [DcBj Vj }^XTUK~Z[2wLRĘb g- a ɎU7#=wj?"00U` -rNF;a#߭ISv>ًF L#lU~6VB .t-Y2_:mm)U7[ûw5)iBمBɣ D8qb+6|#L|.;-C(\yE@&GgIM;n futֶ?"+VY;p$U?H{@=*|({%laɅ<=wtߌФݫ.T:^;{0q @kQav"H<̻h2RK1ZfMF.bP*R[:)=ԂdB[%C 5ӫTlyYcӃa*Θ\؎]4pxEn #]/trϟ п"gL~>5sLuv6~0}4%̣iAhC/*3WwׯݤNsE] hs:DUw`?s5 D">{sM(.TYm^_Ρ%E;ǤZg%cqZy $9+2wWIu^<#%ϟ 1i #?\(#[f&][ܵ/۰م4y6١hg@AS& Xй́7g; @d89G.Q$Dĩ|B>apbxBs{+?=on)A'9Hkf2έZ"42qjBY ER͓w\-Z:7^t+vРVᴳH^ѿ1C1 uyw8PBԼYZ[&Ezo `XiS;"@LǜuzXCϊ+BqT$/hfF3ߤu!މZߋ0ƵXkA^@`!egmUv#O#{d/ᵳn_Ƽ}פ|NQ0 GתL,;Yg+{ J}wR=T9.iJo_*tֳ(V%gOelX|G8!5|T+oOi6̒vKuh]|۴Isз i6a}<"_p= iNA0j#iT8@ b_l;>f$YPztNXL] otAMہW9 j~"4%Ew2.k%>={Zn:g*H@FʿCg3faeW8'.N )ˢd7m^Xaex7U]uOR~:E!ru{ b$hd{Q"e8nqdaR O - =Ȧзkcvƀo|# ?!dry5G ?O 8t7gyg;  Fu4jCԧX/)S28En_*d%mi3[PK5i4\JJqDKdESU&fF\H>fƭ",sanQ8}d7R Sd @ꏋr#Rob7َY[A/ՆmhMoP˛^|c ""]mM5splؖ{/ yLd/pqOxCѲ8-̭e(X&A;|)~urWu\t1h)/r*dwFB;C3L$C@4(Cm =յ,2|#2U0ɛT霒J2[T{N(^ / ge%oș{+, w "&2z?=Jf;݇ތU)_R9:,A.m),Z~}I~`['!km[9@0qQ%(&zCT qu^(FXY |g)@dtSW_)IQSd XydjA)9$˭tIe*Tx(L6#蓳uHA +Da.Q_1ro ,HAyjԡ lkR4M5= g\iPvj~D)K;*玨O\`(rUR8`@=1e&}@CgQ5%_8MӀy+Y?^)dl:($52 ~UĵFn_Pl:B-'=? Kݺo7~\۾>|XhrQ3j(37$fynj473 qH-.)r9>.zV녪s:Tw:(mV·@זN21;vs !2.. ڽ@7-R.!݃!8T kpYDvhlv+  +&W~Q "tIM(o S?G#[_ X2l"7b,E./lEx0'gM pՙt# +>iA9B[LƦ/|hvi>i wG1jfIGGD)ni5'0j9}H6q /ᶵo^ Iܒ:NZj'q48H3)D3lx$Et˛N C_ 9s4Pdz"pgC޽3tZ`o=&$ldop)q:F+$ aGK6,݇[nKxJFBnP?=p{zⱳD`veCSFܥ3m^qp T0PU f!6 Y|L (A ٌi@574rn?-LurmYv_؏Erg}4msBҝSB\%nOe@o ׭¯vX2Stfx^3Q\_q6>NY.sP%oqib/ Bhe<(CaztL{!ƄT`3Dz<o;8ck v! 4Ĭ=H Y$$iʖX#y!$*g9MQB5!:MTܴ"Dt9ddx#N/KHE'=BAbk>ߤ͗١Hbvjb~"b% d$Dڔ3'ITsK\nR?aLLW6<ڳXK+`8SX*zò2\<=;eO@9]RK$ $j^v'Nʎ=~%kR\MdM}$i1bA>C$5$ד!_/Z d8Ic'0_a`l.ᜧ.S  \½v>bczqGWE;81ɛqO^r'+'2>\K@F sZTtO:㳂nb&]$j 2I; 9G!890\'8$U~D'RT5] a`wfAy 4UHHTT\V k<)M7Eq'Am-*S3>yOS:KRDIV!7Rqm) ~nRerNc=U; `ƴ,g糋3}p,HK YMz&Y[ %owFG˞4~JVehmp ?MP{XhڶRvqgXT?}> Aё|:J2:pn8 ZP27y6x dP$7DGgdd.0̻Pc3H7^\U&SZfidy8EOKV ^%#5ϤQV:+o^_"Rռ᫜MIEz*2?nc[VDȰ\,BsC@;"Chb΄ $\Ll:9 T^nƒ(s0u 2ZKL\Dd*l3rTP_=?g(es [YQnRDSQ 5HHW3E3Rh䜂lJ5dF?]K 3s. #2Q9ZUֻlrt蠸aܞNp?0%h(+PDۀ%eBRwga][O~-Q~葟$+}"\;N,$>;\GcuഊnZH|ΡE_²Ɣ -?F .7S'S+HE ah5*i& uPѮ[]J{yae,] mWrLE_-qR( m|k͙? ן%k(@^x)c=X* ,4}-کwholXA.;j4W8˭fMDK)ݶ޳)ǔRNZ VvnE :̽yIFh H hpj}•h\Gz EofnZϸew2kGSR9X6ۥcUD`,*5Y떈&"qלzMRYXC2)9ð:1x0D7&w` +;G- _2nHq W? t mf$0s~ 0{Z./j^7~ |-'=`H#5&B\7L+G*j<ep+jE-'qȄy4_*J ̈́(J+SmX>0y,6Z\gD@FVp Dj0Y#Qe:942f`9ʹìSbv ˪nda@2s 장7pڮ>ydv*@gֻdeb<#&۳q@t^>XĞF@f_$+ ivz63)cjZb_'8p$'NrwLlg_gSI#%L??H<}}'\Ր{SupJ |ۺ ĵ F%Q7uGnGi]_=;dob%Rm8ޞ(Y,ACI3e=aK%%-"; ISpټ4#.3sFis{lK@ގmK,(c+2 G1gbz eϊP륑 廷`@W{{X^],Sg4X\NT yބ?bv7:nR=Bzd4f_?˺n}C6p OU f)f@gv ʷ*فx|sǁ8ZJi6v^d4$`Ab8XV REL@rWAa;YR;;z62/SrIJ6)m7HGy̪':% | \ݮw̯^* 8U6& F(mo ee8f&=G]`dϗ!4i#x[Ϡ Z-VM>sjpɿ2=vR= rR[J20QsSփtтG+qR~.w1yAoӖK:\*3/yg~ m{gl<`!ԋxQ!itlK,^A#m @I9i}#e,6STϧ[哀ΣpP Bmm;߇ 8!Os]ۨBT^y=) Ԋ1ПJi]\A{hl,qU]Ok3W. d6n@V4H(D{]@I{ɴ{{OKҷYl@xbe3(CzK;K Rwf&ڔE~"9dHڔՂ1*|aNӇF:JiJkbo>}ܶٺYZ. AB*jQŀhbIbt\ESS*fn⣮dss,+nif9$;ng%&/Vq:j-7`m1ӡS.ڠ}Hk&i?Iiψ: FL@>G; b'';`n -SAjk;o>Ls.1VTrjT3DR*GAԡFA5[_jҔ߳lǤkԗ< s|ZS9F+= Qg.hE_4lx=u=2: Yb;eXxf9[͹N)T1$w+x|=Z(:)t !l抾,èUu {yd@Yp€椟>p'3!'Rp,kN`+qB jҐ/Nn$y<ݢF;?LBIZ~̒^ZB⒉̡q`7@ Q[hҳ4pQ%eWBxg ~+8bP ՞xWmZQ@bg%/4ܹ(1q*&e_o E,Oޱ~I!.|/B_wt@PLA!nvMX{6E͸U0uD:Ij<A)}? zYFgTKGsJW M™@+4,uB9A1 J0piV$]0bX2IM^dmEjV%ޔtŽ؞i!Uv/|s<[Wv \"gټ7~Y~+,fQǖmׂ/ã󵇮SSC^3Q^0{`'AƫryVnWneQC7ނL~|9a̪gVzxWRΚT[ jFDRyU-I*lRj_uj MT}&'3wR$%A;F/>LBX'+vG)ln{ E ;7"C 6m)6uV] ]c{yfR3-2+RTni߈f0l-^W]<$P2Fszbw:OKk ]Yqz@<Լ2I☼=G, V8كy/(x^hi:l?y<(e 4M1uBD qV\k8W yjspvcCAM6>f7\, TpZˡ}=tR<ͷΠ|bկqe3%%mUC:?-&HE1vG}"{$,M?הLwS}-:C7 㩍0j)b4Ԡ[ M0$*v~91\(^b=|ψZvz˩A:"eMn-qc#/" 3lgUcw%pHsH_h7uL4.ǯ$OrlQ OJrFsezڠ_++ Oo~I"C4SFD!Pj[9|8Z :54,]7A -/Ij4$SF-*f y @/VG!ɡWln2&黇Vv+E5)@pQ`XMAk\ jUWF a_:?[U^&lGԇ,޺d &|mahFU{fJVcf{W0H#b:3F@]4KHeAY #rt th8Y^zd_ܵ ^>Gp鰲st*j1[K Ɲ&WAR >vf&[jjEk+U_-Y] (GIh/ >kMgR7",$CgͲjl4 =ZJI7H%Jp!Mo j1ς0a{ZiL\.uj"1?atK 6T8Q믱2&|Γi՘S3TQWIrwGy(= uGȻ52Qi9zcxm_CtsN(Qv"&4)6R_n S@F£)WHV*Usy"ȫ#pk;ﹷyeNPՅS8B`oiB"`%QA0=xn|fzRt;/%[QpֽC2]i?&}6D=hGsdp6mtA׻A <цk{H2 =i >"' krdyX^`]S9s:K˰2)e #]#b$~UA0<n` cfGJ̆L%nswE8&SO (3Yn{%Τ4|~f&<)y PVkWoh>l02+ qݒJ3&FD_"CL^/_C!冫U^w#4&}u:HQA"o7|+A "%ۆTXa` oӎ Ī3I^LY˸eٰ"+jU A`#/ ZE(omsSjߌ֔cwQ0:eQ-gwE-CW4B;{Ȧ֠]Ψy<}ABO]W Uc VA3dދ( .H̒Ǘ12K GyЉ(ghܧIiU0`-֨"]DmM%;΃la;{f6ЄZX=[%˞`Dq.vNn+{=Qlqrp aQgD3j%2 +߫bT0^Jn ,!Zn()-$8H `ɶӿgQBD4&c{~%se%1Or2%Mnt0NJ?P-*ֆj= G(ϴќHOBcR=+@* k<Heϋi5kR2q%/܅d`f4H#ZGLIW>Ys-ry|8/_qa|b$j(1T، kj홋A֕pWTײm:Wԁҕ0^OR^n؇l)0uT?bpRG95/o|Z`:T8yLo!I9dtƵ])M `Fk64JbTKt9s2G\ R1'oEΉ{MOp;sY.'>$Yxѧ^FHwȗtsgK[ ɍT2362V)=RL*IrPc8L;U[1^1g'JU O]bBS3" ~ +_B7pX[ F-{NUiۅV02>A,717Ż Ɲ7+Y b:e"-T<.<0xnl- @z b6Bpn5Hݖ3!7EY_7#9$. W4DpУHflIj8dvs >mqh*6!sb7bE 6lV Pm",ލx~l؆.^wtUH} mpon Wwkvҍ\Eu"4X#mcDI@9e"ђOi;Uڼcwq =ݺM Mm,0r*g2ڜ[1!p(u/NgU 8/c{4KK5ifc"Zm~iHf6D@Ӫ:A!.UYc3zwc O*9 V߃"gDPq6BPGlKr7c@VY4u/2 #@%쪼ogδw>Do~@LH2ԇ汖DnPV 8zƛCUKR3^qeA+DK&g[qgBx z Hﺂq{ i;s8L`UW|b ^Κ'o80|.&8iL|֟HF=|콳i"-xJ;FvPL=OzƁ/ϩ0WiAӭu dFeod笥~q+/bdvH8ACMCU)/?<*BI 2VX!,w7b$X'Ӱuv?SmN|+Xn?ϟh'~5C̟[g2W8A\R^"N \b~B Gj僑}7X<96WJ?=>󰬭:HC eWp 1zy)|娖`/Тe#Y珛)>C0 rM0 ?`ZN @ց~g`u^;Yb j"3Β䕎Ӛնh(oZEaّz*"Cʉ4hy~Fވ|C7TՒ׋F2QG U; zAE2g#Dʎ~.S"qW;2Lᅑ4LdN2fZ6zSѹZ} \2= m]G'\_݀gG4` kt;\F;^#(}#cw SkE#]x4ͬ@D=D,r.Wo2ٷZS^I%6`!E0|I Jᐄ P{t>%\J]6> h^3xW)D%)9❂(OMc*707Ǣ;tC/'ʾ ÌC C  \4[ \idع"džIK+MnUBEi$sgelm}%'u"HvqfceTڴ5U˾0˙#‹A~"\Mie=|[p@>/&:zp Ym@,2obe񸃄'}=]b)߀ z$jx87Y/ʪ=їPA8cL)@;2Cn[K͟FKR%lׁ#$7??*䍞_V#Q^+复"\o,\C 3ʻUCBJ.;(o? >}%*1a."I'T& 1 D]9Re$ {#m{j\op ;~Gc#ļո*(kЮTҍGmg;Z @qs 8 p8Ogz9_{0R@d_bV1k{A2<Mo!lˋz*blG3Etb.ܠ_zB3Lvtۑ}(X`$%k$;H'明s*r&sl2bVHw8f/y bVE,>ƌխͶ[{žRxmN6kťj* \,*4/$Tߥgco)emмGC랅<+s@mŇ>y/d#I3d=95I ڮbHOrE&(D2hOK+7@B~J|Xqɛ2\^Yρ ؝䠸oBvL4Ǿ=vqa, <_Yb>]IDk-Q{>4ؘH"뛆HA4a?eJ-si[۽z*0;qx,nUDCk)H@$S/O[UNqEq,!!0cg׵_a ݏTyv > X-M#6q蚈꽃yGAmVs!\Wsxh'pni[-x ,x^E3&YSD(L ,FCjg֧TF :ꥍEȠUST#J-V$U"pS'DM?Tm$n;U2&r@B `%¿s2TxjbM1i ;OeBzP^ v,wb"ҳ -2%Sjy(s!+5+ טE{ƞe@)Ӏ$"}#~c4(4uP{2K-%-O+[cfvzăW/(mtdi+ҝnWeа/Lrco{)"˛9׶3 VÌHHV>q+|p%^mv<eJ %wGĂL@ BwP[hj~H\`2+ie9[7??0ʷu B3ZۉCGsgg\ҿXH00c*N 1wgƢvFJ`G*o9C#i]]sf5VX;' p^7XjȬ%~?q6ݡ;ۑ1d(AA>EwlAY rbI*6UnnTEtf-w|d{]"Rb\Hu,ƨ9:Pj; V6R55^GaHxih L AdYΆ //*5KZ8(ea|9([u:5 \ճ+<v'# [F:Ԥ@ӸRѕ ܽRRysinj m ĞɅHuqu{?YYk0. aBȎ$4[]{RFKmyl]LsTmI_P\h"u vIܬrc1dl1e\E"_LdqZ[t G>V~l'v/Wz@QT&ڸedl\=)\NhDpFڹU#W!VBia1Wk*C}O!>t𳣾Era=`1Eڼ%KIdFs^5_ysXmI$0an")idEirġ, !nI4~EPGMXiom4?@͹.\*lz-OLl&H/C-^;M&'5ΌUHmm*H7q*'LYy ٧)f&fd&]\-ef0Ufk}AM2kV7r"qHzmĉ}/d#X [WՃM^Dt} ǰ6h.̭OT 5ʵi@fDniZOdA5Y5Exi`󟺴"-usLn+&P\^Z',qNLt\rw&e=` C_;bK,AG?@HDg^q']a:W=3s 1hSy_0oјXi /q̮P,u&sA,Gb!'rR)ϠԪ+λ`ӥE^8<3I -ygUKe><;Sd$JO! Z͑,x`sPnTf!b Z_ܯ I 5&|ls4mK!J m&hghFYQOA% ɫAP6HJ~mhE5&x`"1nJ  !6uX5-?)SQpSrvv3ə|eaDM?:AEٖD_(Qc|=䉒ם?0]0h܍K#%7xߗ5{Ke{G )5Z*O& {ļh80Za<2˿2 兩UV.,-̆f)%eK婈$ɴj5?I+63Cxv yYZkUfµR^|F_08]0YRAAz;E]p< G am}̤ t;Zq3uO%6nZ mX$]9Zsڒ߾oTh=o XP>tͰFONIa/ZM;&#DqH L6όsb7MRMzP#GƦA4Zu%"'cpZ i`v{rEc mp3" O65Ax1<@\vu]NzCvj V'b)vKkV3'O%93F\\ojxl+E݄pnƻVBrFNvs >^m;wI!7kc`xBf=+. { !p$l4〵% 8Vө?}G 5lFBK 5x1Y_yI_$~vrxιC:g޳=g!nЉ"*lVF1iHjРNID(}^ }=aW"S.H `xs1_O[$є-1lV&OR ʑ_z'tWCc7cڵ}D`@>kQs_FkBF6f:ڊRsH =2`Aび_k=!s7=zxW#ZWNܕiy:}2JCǛ T/jdpˆO3Z5팎 }yDoN--TZ{}B6a︆WX f'W15` Dk :_ D {{bFPWŚ^,Dv1xpf{n(%T&բP0=2wY%)s9Dd ׳Чc6+nXk/>,#dBsf%qOL' p+QGUq♞"~AC`kTfpv _pO1Oh>l/Y~xijTNa(o 1-PNE̷?[+NԤuⵢ-`!!t_7!7n  _L+#(7_ᑟll qy*9EzBL0Cw-M=9W(E@9CwS[S;ƹ*&5y &rnjcմ*"b%a0ڠf*lfEym DD.`TΎň[j4S&,*9lE6)vdMR_&G3RS1# 3 {r#q > @̺zh@ߵyK~V}&=6A`*5pw@LV{ߪc1؝MᡋP\>F*fpR6974VJvrI b^hY@Ы t?J>{dnW7ԫEi3S%Y3 W`Z}@POçĈ2-hwfG>Qb vKߍෝs>פ;c*`ں h% mGOTKW@)2$R<.CiCXx+w^?%{R˚T͚N_}jt? ^>.ESN¸w[q@.%o&Z;b$=A WI<@ 2Ln$URxt~HYsgQ H$տ!xf*-u}B'hCx; Ѐ X܄L}b4OdGk?Xb2KȒ zQڱ1]d/qk Q-ܚo9͝&{N36;q0~.ځi5N\ ZׁN N0kF4w6:dgLa{=&oA<)Py<ʥDYɒ MG% Iz !K+{ʦ^ GA<cyh'6ggӤ߼ c2!n#Ur-0iDsNtZ-n{&j~A'BV^j|o0ͧSl&h4?·>5cL~G$vfzW?~:C^ )@HV]2L/3 IF1҂{4M>av2H;8>95>ٳj`UHg<489cհU5f rޮ c5, /AM`QHXw8]YeAĘ}jOjw8q^pKLIؙnv8]DNBbτHϱ@| 4 q*5#1 , ꧣ\n8X#ՄUӹ8)አ u,i5D$k`YJ08[w9u8Xĩ |П~.5IpU-6=]'cc,p,V:#O"`!N.f8x6 ':o`YR@d MW5nfvWV0 rVɟ!+ `\šy0U&V{hbAs_v\L+@8Ɉl8 xѿ*"ebh*\kQhyijI.*e4k5q9L=Ҩ|ԄJL 7lynp<[oYGX6ה~rSíHى1m Xm-RǠEW߳w!cgTjiG'wu6g]n:D݁)$7&' Z{G0ufm?BKqԋo֣0tݠģc;+HX˚ iEFZ 9CU}`rNSTd0dh<`;1)X(^!0Lk] Sp݃5&`h]Ѳ!!fGz_5O",(݄iRF.zX)׎) ŶX7 Ԋe|jYnY9|t&M7%&,;/$p7g>Q&`xN'V(:Rn(jKv8H_K즀 fÃȀE ?&!7)Nsci|U~,|kxhj8uK%i톳 R̳LS&c z`+ Kko0]+K!.zYG{rfm~r^;L#ikIz,^ RZz== Bc.>f.-{RcypG#Mo寺 }@nS=Vv7pf_ȘIߍ>'N`T]))xzJ=~ui /^<ܖTNV:tդ) B8aAP$s6ˎw<jl }ԳelrDžD*F&>$EE ŢQ!OjI}_N. ,ʂ#Y*SmU @϶=[i٘Tc9tOn@JALN L|> 놛׹u vv6gbb *kS^$Jes暖fYwi|!XY1+6KZé:YžnNTwwsßbǿ^#œSbS(ڐ+&Oڲ$aFMa8kqce"cl(P\Ubƒ)Z㶀3c.\}ԯbyJVcBl\7 >>j7 ĒirƐ[)ۈp M{=kX>➦@XV o%C&Rzĕl!2 R9- zj1څ2{3ߗh{񯶼R9 6hb/4o46C!t~V9w;5л2@cx;:57==?UjT,x^lN'JpK`]\9:MvF81L &y,sT&Н{QM$0li/\'& JR!ygr#%Hf%{ӏH.YG8:;w{\'NxxLrK#Hȅ2:dxw gk~P7Dy6{|:p<޶%q"vǬ[>5dd'Elí;Oyy%}՘W+A$E".ozaoFr}{C-۬oM?meH׎ĆNVV`j?ynhO: ?θM28av'_|8DnbIP:t$@l6}> \#fHZ*ॾAY5ˑW_IGfJ;. Bg񝚼cR 0hO:HyE XiK!.H@f˸cEC UD(53-'x2V_ͯÛ0W#] ;m\1 DYK0ʧ@Jxz@ |a'{ɻ+B r5/`['$ѢSul3&US\kn᪂3QѢm@/a!0)C2W?zhv'rgVXHWk՟Hf`qP@Tt뚼*r1_1$ד&C]e&b3ҩxݐ\w'5e<$䛎VFL*lέE*rrD_h=2:0(ަE\ ]裖"yI5G׿=z u(xڦH Is&b.ġe(B$(ݫ7Xf2D,"VI&eC ATV4PgW [L`bAS0T*\U|.U(Ǫ iK|zSqe;#8_>kf ~>n'0kէ686.dó$E#f|X$c]pSB{G&@\`&Q Ͳԭ;U6LZda҈Wc ENi'(hJ!A"Iwkؙ36mѡ;ӹ\_$ E]۲u3pi CAPiQh8SP U>ݷ1%yȿK& !LTuZBY741h-DZy<-8MT.6ʠ䍼)Z"Zp["9td g7W Y+j\ B)09p7j݅a,ta(CȔwr7ʢ}=ڪEmi'ԥzeP|!p2/BtVVVe% Ym]V\IU;Lc % CST<$):xfؿ5C6?ӽoH-z{ `.ttȈɅkAjbKo}Uf."qyvL,nݡŸtpO=ӈe*HO\U~ۏ9-HԀ P.IUm]ku"[Uq-PX[]o*d9SpUO5=oGm~:Ji+kl`ʅ=1B<4N4rMK8ȣf/_?GS}vmT4T!G㍃2*KFx G;3}QbJ? HP5\G |<c>䈝JUlp`-J Ӯ+.ꤶߢIjҁaL n&0QUKi>*YWK:s{M-Rfg\X tct5'D>AuIb(v4ƿ p.N0#8{ =i-q)qBDE KS<@qzl*!Hݐs-2 (;pr{ yQW< fr3g? Za3s*Igsr۵g[ oF,T8$2̱*\_W˕"^rh(g4c/򼄣dJ0$(l 8ʰrLŽeIiVɞ{L% hĴ %~)ɿpˎ- W*䮜[@$=N DŽ1yIm,N#c֮A^4^-ZO#"ϔkCB`n}ˬeTH p:/89h@R:v?DuWu*o|ʥ0(#Ʒv" :eq^]O#l;N禪B5$Hwځ6{nU"K?QqɨEhM^q6ON~ZgH ^Q8wfx;}$4Ձ6ɻ]֓k2Gǣ% :$agRѕ({NfS@X0PxTo<& )ޑAtÁ Q-THfB|KJMldm""44ٍdՁԲMU:˕,uVD~X2MA. |!)FM׳Uҷ5NʵgSp rbS,[B#B ߶O:vzҹ1׳TƧĞaJ?x8D ~_Mo+d'U'# Dkhk< 61͎KwK1p&86CCbt>BHiNĆ)pRѺwNkkwEc5nз&j׉47gM;{V'<,iC6_YxDLgK!Jzkƙ`翜"$0B[92ŶKIU~QN P1 p@?F@߰&jńoVoY=͓~0Xe T +0) !?n5OL1b"I%nFpN^;?&8! #@qvym0l'$j튋 m9;VC dy4}X\OE5&é&l#e?wf*rc7%PZ`'EXE~Lac'r,&uF?LPES8EpmpD&Vf~h3qVOK]HP.G1 D{9Zcyȓq9[16ym6v4ԿO,  [ ?ש)OG|3Zu )ck9~2;6lpn~8M{?fn|xb8toAɧw"(26fNtI0pذBFʞt.gP|:´! (Lb^nJ\"T%]B8輍01a5qo,8ҋ/T4)F 4K0޼ fk&dp\Pnrp>rNv.M򔏹mdn;1([VBpݶΜVw|J*AjIڒ6o fGWa?PCy"k~/^maz`M\hT%r,{9_ZAwD1Ft6X!L2#] ̿m@6 }PxT/&@Im>cY5fA4a2mLn%ozʩ\;59PĒ㹄2>l)_Bڒ8\t&:7κ@^q஡[m_n4I!~oqOh f;᳗|n-9v6[s%lV6c :-yrx/}pHP qs5Šń̏di_Pw6U]=FvdVy7Yj,˰`Wm#uو{[IK{|lIy@.˞:u9Նvi5vL&; YZsg[I-~ 6PNRV(i ̧b%Xee> O-Ϭ )?(Aec4kÌ=s6ⵂLW5 4N>| ^)Ndie˥!MɻC 7lJc> +,jK)s&YL0lcP~5b,͟8fdK_ݖҘߟuUӼN9eVmb8t˱0߱N`/4 bz7~VFM۲?pAb@iTշzGk|A&^|hs:K/j?U aF)֮w#8W*uT$Ȩ"a&(7@TF0u٧b]N.ʀaN ݽ _H`qK ,^TZ=`i#ߩ"&LKe!ږ8m/;5$N -!wZ'D:9_'Hb!5AIB߾z /C4Ewax/Pd <J%E#K~;i@B&׌K V 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_violin}}, \code{\link{ggpar}} and \code{\link{facet}}.} } \description{ Create a violin plot with error bars. Violin plots are similar to box plots, except that they also show the kernel probability density of the data at different values. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot # +++++++++++++++++++++++++++ ggviolin(df, x = "dose", y = "len") # Change the plot orientation: horizontal ggviolin(df, "dose", "len", orientation = "horiz") # Add summary statistics # ++++++++++++++++++++++++++ # Draw quantiles ggviolin(df, "dose", "len", add = "none", draw_quantiles = 0.5) # Add box plot ggviolin(df, x = "dose", y = "len", add = "boxplot") ggviolin(df, x = "dose", y = "len", add = "dotplot") # Add jitter points and # change point shape by groups ("dose") ggviolin(df, x = "dose", y = "len", add = "jitter", shape = "dose") # Add mean_sd + jittered points ggviolin(df, x = "dose", y = "len", add = c("jitter", "mean_sd")) # Change error.plot to "crossbar" ggviolin(df, x = "dose", y = "len", add = "mean_sd", error.plot = "crossbar") # Change colors # +++++++++++++++++++++++++++ # Change outline and fill colors ggviolin(df, "dose", "len", color = "black", fill = "gray") # Change outline colors by groups: dose # Use custom color palette and add boxplot ggviolin(df, "dose", "len", color = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot") # Change fill color by groups: dose # add boxplot with white fill color ggviolin(df, "dose", "len", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "boxplot", add.params = list(fill = "white")) # Plot with multiple groups # +++++++++++++++++++++ # fill or color box plot by a second group : "supp" ggviolin(df, "dose", "len", color = "supp", palette = c("#00AFBB", "#E7B800"), add = "boxplot") } \seealso{ \code{\link{ggpar}} } ggpubr/man/gene_citation.Rd0000644000176200001440000000253513640143350015416 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gene_citation.R \docType{data} \name{gene_citation} \alias{gene_citation} \title{Gene Citation Index} \format{ A data frame with 66 rows and 2 columns. \describe{ \item{\code{gene}}{gene names} \item{\code{citation_index}}{mean citation index} } } \usage{ data("gene_citation") } \description{ Contains the mean citation index of 66 genes obtained by assessing PubMed abstracts and annotations using two key words i) Gene name + b cell differentiation and ii) Gene name + plasma cell differentiation. } \examples{ data(gene_citation) # Some key genes of interest to be highlighted key.gns <- c("MYC", "PRDM1", "CD69", "IRF4", "CASP3", "BCL2L1", "MYB", "BACH2", "BIM1", "PTEN", "KRAS", "FOXP1", "IGF1R", "KLF4", "CDK6", "CCND2", "IGF1", "TNFAIP3", "SMAD3", "SMAD7", "BMPR2", "RB1", "IGF2R", "ARNT") # Density distribution ggdensity(gene_citation, x = "citation_index", y = "..count..", xlab = "Number of citation", ylab = "Number of genes", fill = "lightgray", color = "black", label = "gene", label.select = key.gns, repel = TRUE, font.label = list(color= "citation_index"), xticks.by = 20, # Break x ticks by 20 gradient.cols = c("blue", "red"), legend = "bottom", legend.title = "" # Hide legend title ) } ggpubr/man/background_image.Rd0000644000176200001440000000160313124426725016071 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/background_image.R \name{background_image} \alias{background_image} \title{Add Background Image to ggplot2} \usage{ background_image(raster.img) } \arguments{ \item{raster.img}{raster object to display, as returned by the function \code{readPNG()}[in \code{png} package] and \code{readJPEG()} [in \code{jpeg} package].} } \description{ Add background image to ggplot2. } \examples{ \dontrun{ install.packages("png") # Import the image img.file <- system.file(file.path("images", "background-image.png"), package = "ggpubr") img <- png::readPNG(img.file) # Plot with background image ggplot(iris, aes(Species, Sepal.Length))+ background_image(img)+ geom_boxplot(aes(fill = Species), color = "white")+ fill_palette("jco") } } \author{ Alboukadel Kassambara } ggpubr/man/annotate_figure.Rd0000644000176200001440000000442713675462644016004 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/annotate_figure.R \name{annotate_figure} \alias{annotate_figure} \title{Annotate Arranged Figure} \usage{ annotate_figure( p, top = NULL, bottom = NULL, left = NULL, right = NULL, fig.lab = NULL, fig.lab.pos = c("top.left", "top", "top.right", "bottom.left", "bottom", "bottom.right"), fig.lab.size, fig.lab.face ) } \arguments{ \item{p}{(arranged) ggplots.} \item{top, bottom, left, right}{optional string, or grob.} \item{fig.lab}{figure label (e.g.: "Figure 1").} \item{fig.lab.pos}{position of the figure label, can be one of "top.left", "top", "top.right", "bottom.left", "bottom", "bottom.right". Default is "top.left".} \item{fig.lab.size}{optional size of the figure label.} \item{fig.lab.face}{optional font face of the figure label. Allowed values include: "plain", "bold", "italic", "bold.italic".} } \description{ Annotate figures including: i) ggplots, ii) arranged ggplots from \code{\link{ggarrange}()}, \code{\link[gridExtra:arrangeGrob]{grid.arrange}()} and \code{\link[cowplot]{plot_grid}()}. } \examples{ data("ToothGrowth") df <- ToothGrowth df$dose <- as.factor(df$dose) # Create some plots # :::::::::::::::::::::::::::::::::::::::::::::::::: # Box plot bxp <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Dot plot dp <- ggdotplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Density plot dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") # Arrange and annotate # :::::::::::::::::::::::::::::::::::::::::::::::::: figure <- ggarrange(bxp, dp, dens, ncol = 2, nrow = 2) annotate_figure(figure, top = text_grob("Visualizing Tooth Growth", color = "red", face = "bold", size = 14), bottom = text_grob("Data source: \n ToothGrowth data set", color = "blue", hjust = 1, x = 1, face = "italic", size = 10), left = text_grob("Figure arranged using ggpubr", color = "green", rot = 90), right = text_grob(bquote("Superscript: ("*kg~NH[3]~ha^-1~yr^-1*")"), rot = 90), fig.lab = "Figure 1", fig.lab.face = "bold" ) } \seealso{ \code{\link{ggarrange}()} } \author{ Alboukadel Kassambara \email{alboukadel.kassambara@gmail.com} } ggpubr/man/desc_statby.Rd0000644000176200001440000000257713052274626015130 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/desc_statby.R \name{desc_statby} \alias{desc_statby} \title{Descriptive statistics by groups} \usage{ desc_statby(data, measure.var, grps, ci = 0.95) } \arguments{ \item{data}{a data frame.} \item{measure.var}{the name of a column containing the variable to be summarized.} \item{grps}{a character vector containing grouping variables; e.g.: grps = c("grp1", "grp2")} \item{ci}{the percent range of the confidence interval (default is 0.95).} } \value{ A data frame containing descriptive statistics, such as: \itemize{ \item \strong{length}: the number of elements in each group \item \strong{min}: minimum \item \strong{max}: maximum \item \strong{median}: median \item \strong{mean}: mean \item \strong{iqr}: interquartile range \item \strong{mad}: median absolute deviation (see ?MAD) \item \strong{sd}: standard deviation of the mean \item \strong{se}: standard error of the mean \item \strong{ci}: confidence interval of the mean \item \strong{range}: the range = max - min \item \strong{cv}: coefficient of variation, sd/mean \item \strong{var}: variance, sd^2 } } \description{ Computes descriptive statistics by groups for a measure variable. } \examples{ # Load data data("ToothGrowth") # Descriptive statistics res <- desc_statby(ToothGrowth, measure.var = "len", grps = c("dose", "supp")) head(res[, 1:10]) } ggpubr/man/axis_scale.Rd0000644000176200001440000000147713126004244014722 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/axis_scale.R \name{axis_scale} \alias{axis_scale} \alias{xscale} \alias{yscale} \title{Change Axis Scale: log2, log10 and more} \usage{ xscale(.scale, .format = FALSE) yscale(.scale, .format = FALSE) } \arguments{ \item{.scale}{axis scale. Allowed values are one of c("none", "log2", "log10", "sqrt", "percent", "dollar", "scientific"); e.g.: .scale="log2".} \item{.format}{ogical value. If TRUE, axis tick mark labels will be formatted when .scale = "log2" or "log10".} } \description{ Change axis scale. \itemize{ \item \code{xscale}: change x axis scale. \item \code{yscale}: change y axis scale. } } \examples{ # Basic scatter plots data(cars) p <- ggscatter(cars, x = "speed", y = "dist") p # Set log scale p + yscale("log2", .format = TRUE) } ggpubr/man/ggpubr_args.Rd0000644000176200001440000000641313105034145015104 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggpubr_args.R \name{ggpubr_args} \alias{ggpubr_args} \title{ggpubr General Arguments Description} \arguments{ \item{data}{a data frame} \item{x}{character string containing the name of x variable.} \item{y}{character vector containing one or more variables to plot} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{outline color.} \item{fill}{fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{linetype}{line types.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} } \description{ ggpubr General Arguments Description } ggpubr/man/stat_overlay_normal_density.Rd0000644000176200001440000000577013675462644020457 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_overlay_normal_density.R \name{stat_overlay_normal_density} \alias{stat_overlay_normal_density} \title{Overlay Normal Density Plot} \usage{ stat_overlay_normal_density( mapping = NULL, data = NULL, geom = "line", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2:geom_path]{geom_line}}.} } \description{ Overlay normal density plot (with the same mean and SD) to the density distribution of 'x'. This is useful for visually inspecting the degree of deviance from normality. } \examples{ # Simpledensity plot data("mtcars") ggdensity(mtcars, x = "mpg", fill = "red") + scale_x_continuous(limits = c(-1, 50)) + stat_overlay_normal_density(color = "red", linetype = "dashed") # Color by groups data(iris) ggdensity(iris, "Sepal.Length", color = "Species") + stat_overlay_normal_density(aes(color = Species), linetype = "dashed") # Facet ggdensity(iris, "Sepal.Length", facet.by = "Species") + stat_overlay_normal_density(color = "red", linetype = "dashed") } \seealso{ \code{\link{ggdensity}} } ggpubr/man/text_grob.Rd0000644000176200001440000000417013675462644014622 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/text_grob.R \name{text_grob} \alias{text_grob} \title{Create a Text Graphical object} \usage{ text_grob( label, just = "centre", hjust = NULL, vjust = NULL, rot = 0, color = "black", face = "plain", size = NULL, lineheight = NULL, family = NULL, ... ) } \arguments{ \item{label}{A character or \link{expression} vector. Other objects are coerced by \code{\link{as.graphicsAnnot}}.} \item{just}{The justification of the text relative to its (x, y) location. If there are two values, the first value specifies horizontal justification and the second value specifies vertical justification. Possible string values are: \code{"left"}, \code{"right"}, \code{"centre"}, \code{"center"}, \code{"bottom"}, and \code{"top"}. For numeric values, 0 means left (bottom) alignment and 1 means right (top) alignment. } \item{hjust}{A numeric vector specifying horizontal justification. If specified, overrides the \code{just} setting.} \item{vjust}{A numeric vector specifying vertical justification. If specified, overrides the \code{just} setting.} \item{rot}{The angle to rotate the text.} \item{color}{text font color.} \item{face}{font face. Allowed values include one of \code{"plain", "bold", "italic", "bold.italic"}.} \item{size}{font size (e.g.: size = 12)} \item{lineheight}{line height (e.g.: lineheight = 2).} \item{family}{font family.} \item{...}{other arguments passed to \link[grid:grid.text]{textGrob}.} } \value{ a text grob. } \description{ Create easily a customized text grob (graphical object). Wrapper around \code{\link[grid:grid.text]{textGrob}}. } \examples{ text <- paste("iris data set gives the measurements in cm", "of the variables sepal length and width", "and petal length and width, respectively,", "for 50 flowers from each of 3 species of iris.", "The species are Iris setosa, versicolor, and virginica.", sep = "\n") # Create a text grob tgrob <- text_grob(text, face = "italic", color = "steelblue") # Draw the text as_ggplot(tgrob) } ggpubr/man/stat_mean.Rd0000644000176200001440000000517513640143350014564 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_mean.R \name{stat_mean} \alias{stat_mean} \title{Draw group mean points} \usage{ stat_mean( mapping = NULL, data = NULL, geom = "point", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2]{geom_point}}.} } \description{ Draw the mean point of each group. } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) # Scatter plot with ellipses and group mean points ggscatter(df, x = "wt", y = "mpg", color = "cyl", shape = "cyl", ellipse = TRUE)+ stat_mean(aes(color = cyl, shape = cyl), size = 4) } \seealso{ \code{\link{stat_conf_ellipse}}, \code{\link{stat_chull}} and \code{\link{ggscatter}} } ggpubr/man/create_aes.Rd0000644000176200001440000000144413666545014014712 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/create_aes.R \name{create_aes} \alias{create_aes} \title{Create Aes Mapping from a List} \usage{ create_aes(.list, parse = FALSE) } \arguments{ \item{.list}{a list of aesthetic arguments; for example .list = list(x = "dose", y = "len", color = "dose").} \item{parse}{logical. If TRUE, parse the input as an expression.} } \description{ Create aes mapping to make programming easy with ggplot2. } \examples{ # Simple aes creation create_aes(list(x = "Sepal.Length", y = "Petal.Length" )) # Parse an expression x <- "log2(Sepal.Length)" y <- "log2(Petal.Length)" create_aes(list(x = x, y = y ), parse = TRUE) # Create a ggplot mapping <- create_aes(list(x = x, y = y ), parse = TRUE) ggplot(iris, mapping) + geom_point() } ggpubr/man/stat_chull.Rd0000644000176200001440000000553413640143350014752 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_chull.R \name{stat_chull} \alias{stat_chull} \title{Plot convex hull of a set of points} \usage{ stat_chull( mapping = NULL, data = NULL, geom = "path", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If \code{FALSE}, the default, missing values are removed with a warning. If \code{TRUE}, missing values are silently removed.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{Other arguments passed on to \code{\link[ggplot2:layer]{layer()}}. These are often aesthetics, used to set an aesthetic to a fixed value, like \code{colour = "red"} or \code{size = 3}. They may also be parameters to the paired geom/stat.} } \description{ Plot convex hull of a set of points. } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) # scatter plot with convex hull ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ stat_chull(aes(color = cyl)) ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ stat_chull(aes(color = cyl, fill = cyl), alpha = 0.1, geom = "polygon") } \seealso{ \code{\link{ggpar}}, \code{\link{ggscatter}} } ggpubr/man/ggdensity.Rd0000644000176200001440000001373113640143350014603 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggdensity.R \name{ggdensity} \alias{ggdensity} \title{Density plot} \usage{ ggdensity( data, x, y = "..density..", combine = FALSE, merge = FALSE, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable to be drawn.} \item{y}{one of "..density.." or "..count..".} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color, fill}{density line color and fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{linetype}{line type. See \code{\link{show_line_types}}.} \item{alpha}{numeric value specifying fill color transparency. Value should be in [0, 1], where 0 is full transparency and 1 is no transparency.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{add}{allowed values are one of "mean" or "median" (for adding mean or median line, respectively).} \item{add.params}{parameters (color, size, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{rug}{logical value. If TRUE, add marginal rug.} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_density}} and \code{\link{ggpar}}.} } \description{ Create a density plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Create some data format set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) # Basic density plot # Add mean line and marginal rug ggdensity(wdata, x = "weight", fill = "lightgray", add = "mean", rug = TRUE) # Change outline colors by groups ("sex") # Use custom palette ggdensity(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", palette = c("#00AFBB", "#E7B800")) # Change outline and fill colors by groups ("sex") # Use custom palette ggdensity(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{gghistogram}} and \code{\link{ggpar}}. } ggpubr/man/as_ggplot.Rd0000644000176200001440000000170513675551604014600 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/as_ggplot.R \name{as_ggplot} \alias{as_ggplot} \title{Storing grid.arrange() arrangeGrob() and plots} \usage{ as_ggplot(x) } \arguments{ \item{x}{an object of class gtable or grob as returned by the functions \code{\link[gridExtra:arrangeGrob]{arrangeGrob}()} and \code{\link[gridExtra:arrangeGrob]{grid.arrange}()}.} } \value{ an object of class ggplot. } \description{ Transform the output of \code{\link[gridExtra:arrangeGrob]{arrangeGrob}()} and \code{\link[gridExtra:arrangeGrob]{grid.arrange}()} to a an object of class ggplot. } \examples{ # Creat some plots bxp <- ggboxplot(iris, x = "Species", y = "Sepal.Length") vp <- ggviolin(iris, x = "Species", y = "Sepal.Length", add = "mean_sd") # Arrange the plots in one page # Returns a gtable (grob) object library(gridExtra) gt <- arrangeGrob(bxp, vp, ncol = 2) # Transform to a ggplot and print as_ggplot(gt) } ggpubr/man/stat_conf_ellipse.Rd0000644000176200001440000000644013675551604016317 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_conf_ellipse.R \name{stat_conf_ellipse} \alias{stat_conf_ellipse} \title{Plot confidence ellipses.} \usage{ stat_conf_ellipse( mapping = NULL, data = NULL, geom = "path", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, level = 0.95, npoint = 100, bary = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If \code{FALSE}, the default, missing values are removed with a warning. If \code{TRUE}, missing values are silently removed.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{level}{confidence level used to construct the ellipses. By default, 0.95.} \item{npoint}{number of points used to draw the ellipses.} \item{bary}{logical value. If TRUE, the coordinates of the ellipse around the barycentre of individuals are calculated.} \item{...}{Other arguments passed on to \code{\link[ggplot2:layer]{layer()}}. These are often aesthetics, used to set an aesthetic to a fixed value, like \code{colour = "red"} or \code{size = 3}. They may also be parameters to the paired geom/stat.} } \description{ Plot confidence ellipses around barycenters. The method for computing confidence ellipses has been modified from \code{FactoMineR::coord.ellipse()}. } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) # scatter plot with confidence ellipses ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ stat_conf_ellipse(aes(color = cyl)) ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ stat_conf_ellipse(aes(color = cyl, fill = cyl), alpha = 0.1, geom = "polygon") } \seealso{ \code{\link{stat_conf_ellipse}} } ggpubr/man/facet.Rd0000644000176200001440000000630213640723012013663 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/facet.R \name{facet} \alias{facet} \title{Facet a ggplot into Multiple Panels} \usage{ facet( p, facet.by, nrow = NULL, ncol = NULL, scales = "fixed", short.panel.labs = TRUE, labeller = "label_value", panel.labs = NULL, panel.labs.background = list(color = NULL, fill = NULL), panel.labs.font = list(face = NULL, color = NULL, size = NULL, angle = NULL), panel.labs.font.x = panel.labs.font, panel.labs.font.y = panel.labs.font, strip.position = "top", ... ) } \arguments{ \item{p}{a ggplot} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{nrow, ncol}{Number of rows and columns in the panel. Used only when the data is faceted by one grouping variable.} \item{scales}{should axis scales of panels be fixed ("fixed", the default), free ("free"), or free in one dimension ("free_x", "free_y").} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{labeller}{Character vector. An alternative to the argument \code{short.panel.labs}. Possible values are one of "label_both" (panel labelled by both grouping variable names and levels) and "label_value" (panel labelled with only grouping levels).} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{panel.labs.background}{a list to customize the background of panel labels. Should contain the combination of the following elements: \itemize{ \item \code{color, linetype, size}: background line color, type and size \item \code{fill}: background fill color. } For example, panel.labs.background = list(color = "blue", fill = "pink", linetype = "dashed", size = 0.5).} \item{panel.labs.font}{a list of aestheics indicating the size (e.g.: 14), the face/style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") and the orientation angle (e.g.: 45) of panel labels.} \item{panel.labs.font.x, panel.labs.font.y}{same as panel.labs.font but for only x and y direction, respectively.} \item{strip.position}{(used only in \code{facet_wrap()}). By default, the labels are displayed on the top of the plot. Using \code{strip.position} it is possible to place the labels on either of the four sides by setting \code{strip.position = c("top", "bottom", "left", "right")}} \item{...}{not used} } \description{ Create multi-panel plots of a data set grouped by one or two grouping variables. Wrapper around \code{\link[ggplot2]{facet_wrap}} } \examples{ p <- ggboxplot(ToothGrowth, x = "dose", y = "len", color = "supp") print(p) facet(p, facet.by = "supp") # Customize facet(p + theme_bw(), facet.by = "supp", short.panel.labs = FALSE, # Allow long labels in panels panel.labs.background = list(fill = "steelblue", color = "steelblue") ) } ggpubr/man/ggtexttable.Rd0000644000176200001440000003144313667753254015143 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggtexttable.R \name{ggtexttable} \alias{ggtexttable} \alias{ttheme} \alias{colnames_style} \alias{rownames_style} \alias{tbody_style} \alias{table_cell_font} \alias{table_cell_bg} \alias{tab_cell_crossout} \alias{tab_ncol} \alias{tab_nrow} \alias{tab_add_hline} \alias{tab_add_vline} \alias{tab_add_border} \alias{tbody_add_border} \alias{thead_add_border} \alias{tab_add_title} \alias{tab_add_footnote} \title{Draw a Textual Table} \usage{ ggtexttable( x, rows = rownames(x), cols = colnames(x), vp = NULL, theme = ttheme(), ... ) ttheme( base_style = "default", base_size = 11, base_colour = "black", padding = unit(c(4, 4), "mm"), colnames.style = colnames_style(size = base_size), rownames.style = rownames_style(size = base_size), tbody.style = tbody_style(size = base_size) ) colnames_style( color = "black", face = "bold", size = 12, fill = "grey80", linewidth = 1, linecolor = "white", parse = FALSE, ... ) rownames_style( color = "black", face = "italic", size = 12, fill = NA, linewidth = 1, linecolor = "white", parse = FALSE, ... ) tbody_style( color = "black", face = "plain", size = 12, fill = c("grey95", "grey90"), linewidth = 1, linecolor = "white", parse = FALSE, ... ) table_cell_font(tab, row, column, face = NULL, size = NULL, color = NULL) table_cell_bg( tab, row, column, fill = NULL, color = NULL, linewidth = NULL, alpha = NULL ) tab_cell_crossout( tab, row, column, linetype = 1, linewidth = 1, linecolor = "black", reduce.size.by = 0 ) tab_ncol(tab) tab_nrow(tab) tab_add_hline( tab, at.row = 2:tab_nrow(tab), row.side = c("bottom", "top"), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black" ) tab_add_vline( tab, at.column = 2:tab_ncol(tab), column.side = c("left", "right"), from.row = 1, to.row = tab_nrow(tab), linetype = 1, linewidth = 1, linecolor = "black" ) tab_add_border( tab, from.row = 2, to.row = tab_nrow(tab), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black" ) tbody_add_border( tab, from.row = 2, to.row = tab_nrow(tab), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black" ) thead_add_border( tab, from.row = 1, to.row = 1, from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black" ) tab_add_title( tab, text, face = NULL, size = NULL, color = NULL, family = NULL, padding = unit(1.5, "line"), just = "left", hjust = NULL, vjust = NULL ) tab_add_footnote( tab, text, face = NULL, size = NULL, color = NULL, family = NULL, padding = unit(1.5, "line"), just = "right", hjust = NULL, vjust = NULL ) } \arguments{ \item{x}{a \code{data.frame} or \code{matrix}.} \item{rows}{optional vector to specify row names} \item{cols}{optional vector to specify column names} \item{vp}{optional viewport} \item{theme}{a list, as returned by the function \code{ttheme()}, defining the parameters of the table theme. Allowed values include one of \code{ttheme()} and \code{ttheme_clean()}.} \item{...}{extra parameters for text justification, e.g.: hjust and x. Default is "centre" for the body and header, and "right" for the row names. Left justification: \code{hjust = 0, x = 0.1}. Right justification: \code{hjust = 1, x = 0.9}.} \item{base_style}{character string the table style/theme. The available themes are illustrated in the \href{https://rpkgs.datanovia.com/ggpubr/files/ggtexttable-theme.pdf}{ggtexttable-theme.pdf} file. Allowed values include one of \code{c("default", "blank", "classic", "minimal", "light", "lBlack", "lBlue", "lRed", "lGreen", "lViolet", "lCyan", "lOrange", "lBlackWhite", "lBlueWhite", "lRedWhite", "lGreenWhite", "lVioletWhite", "lCyanWhite", "lOrangeWhite", "mBlack", "mBlue", "mRed", "mGreen", "mViolet", "mCyan", "mOrange", "mBlackWhite", "mBlueWhite", "mRedWhite", "mGreenWhite", "mVioletWhite", "mCyanWhite", "mOrangeWhite" )}. Note that, l = "light"; m = "medium".} \item{base_size}{default font size} \item{base_colour}{default font colour} \item{padding}{length-2 unit vector specifying the horizontal and vertical padding of text within each cell} \item{colnames.style}{a list, as returned by the function \code{colnames_style()}, defining the style of the table column names. Considered only when \code{base_size = "default"}.} \item{rownames.style}{a list, as returned by the function \code{rownames_style()}, defining the style of the table row names. Considered only when \code{base_size = "default"}.} \item{tbody.style}{a list, as returned by the function \code{tbody_style()}, defining the style of the table body. Considered only when \code{base_size = "default"}.} \item{color, face, size}{text font color, face and size, respectively. Allowed values for face include c("plain", "bold", "italic", "bold.italic").} \item{fill}{background color.} \item{linewidth, linecolor}{line width and color, respectively.} \item{parse}{logical, default behaviour for parsing text as plotmath} \item{tab}{an object from \code{ggtexttable} or from \code{gridExtra::tableGrob()}.} \item{row, column}{an integer specifying the row and the column numbers for the cell of interest.} \item{alpha}{numeric value specifying fill color transparency. Value should be in [0, 1], where 0 is full transparency and 1 is no transparency.} \item{linetype}{line type} \item{reduce.size.by}{Numeric value in [0, 1] to reduce the size by.} \item{at.row}{a numeric vector of row indexes; for example \code{at.row = c(1, 2)}.} \item{row.side}{row side to which the horinzotal line should be added. Can be one of \code{c("bottom", "top")}.} \item{from.column}{integer indicating the column from which to start drawing the horizontal line.} \item{to.column}{integer indicating the column to which the horizontal line should end.} \item{at.column}{a numeric vector of column indexes; for example \code{at.column = c(1, 2)}.} \item{column.side}{column side to which the vertical line should be added. Can be one of \code{c("left", "right")}.} \item{from.row}{integer indicating the row from which to start drawing the horizontal line.} \item{to.row}{integer indicating the row to which the vertical line should end.} \item{text}{text to be added as title or footnote.} \item{family}{font family} \item{just}{The justification of the text relative to its (x, y) location. If there are two values, the first value specifies horizontal justification and the second value specifies vertical justification. Possible string values are: "left", "right", "centre", "center", "bottom", and "top". For numeric values, 0 means left (bottom) alignment and 1 means right (top) alignment.} \item{hjust}{A numeric vector specifying horizontal justification. If specified, overrides the just setting.} \item{vjust}{A numeric vector specifying vertical justification. If specified, overrides the just setting.} } \value{ an object of class ggplot. } \description{ Draw a textual table. \itemize{ \item \code{ggtexttable()}: draw a textual table. \item \code{ttheme()}: customize table theme. \item \code{rownames_style(), colnames_style(), tbody_style()}: helper functions to customize the table row names, column names and body. \item \code{table_cell_font()}: access to a table cell for changing the text font (size and face). \item \code{table_cell_bg()}: access to a table cell for changing the background (fill, color, linewidth). \item \code{tab_cell_crossout()}: cross out a table cell. \item \code{tab_ncol(), tab_nrow()}: returns, respectively, the number of columns and rows in a ggtexttable. \item \code{tab_add_hline()}: Creates horizontal lines or separators at the top or the bottom side of a given specified row. \item \code{tab_add_vline()}: Creates vertical lines or separators at the right or the left side of a given specified column. \item \code{tab_add_border(), tbody_add_border(), thead_add_border()}: Add borders to table; tbody is for table body and thead is for table head. \item \code{tab_add_title(),tab_add_footnote()}: Add title, subtitle and footnote to a table. } } \examples{ # data df <- head(iris) # Default table # Remove row names using rows = NULL ggtexttable(df, rows = NULL) # Blank theme ggtexttable(df, rows = NULL, theme = ttheme("blank")) # light theme ggtexttable(df, rows = NULL, theme = ttheme("light")) # Column names border only ggtexttable(df, rows = NULL, theme = ttheme("blank")) \%>\% tab_add_hline(at.row = 1:2, row.side = "top", linewidth = 2) # classic theme ggtexttable(df, rows = NULL, theme = ttheme("classic")) # minimal theme ggtexttable(df, rows = NULL, theme = ttheme("minimal")) # Medium blue (mBlue) theme ggtexttable(df, rows = NULL, theme = ttheme("mBlue")) # Customize the table as you want ggtexttable(df, rows = NULL, theme = ttheme( colnames.style = colnames_style(color = "white", fill = "#8cc257"), tbody.style = tbody_style(color = "black", fill = c("#e8f3de", "#d3e8bb")) ) ) # Use RColorBrewer palette # Provide as many fill color as there are rows in the table body, here nrow = 6 ggtexttable(df, theme = ttheme( colnames.style = colnames_style(fill = "white"), tbody.style = tbody_style(fill = get_palette("RdBu", 6)) ) ) # Text justification #:::::::::::::::::::::::::::::::::::::::::::::: # Default is "centre" for the body and header, and "right" for the row names. # Left justification: hjust=0, x=0.1 # Right justification: hjust=1, x=0.9 tbody.style = tbody_style(color = "black", fill = c("#e8f3de", "#d3e8bb"), hjust=1, x=0.9) ggtexttable(head(iris), rows = NULL, theme = ttheme( colnames.style = colnames_style(color = "white", fill = "#8cc257"), tbody.style = tbody.style ) ) # Access and modify the font and # the background of table cells # ::::::::::::::::::::::::::::::::::::::::::::: tab <- ggtexttable(head(iris), rows = NULL, theme = ttheme("classic")) tab <- table_cell_font(tab, row = 3, column = 2, face = "bold") tab <- table_cell_bg(tab, row = 4, column = 3, linewidth = 5, fill="darkolivegreen1", color = "darkolivegreen4") tab # Change table cells background and font for column 3, # Spaning from row 2 to the last row in the data tab <- ggtexttable(df, rows = NULL, theme = ttheme("classic")) tab \%>\% table_cell_bg(row = 2:tab_nrow(tab), column = 3, fill = "darkblue") \%>\% table_cell_font(row = 2:tab_nrow(tab), column = 3, face = "italic", color = "white") # Add separators and borders # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Table with blank theme tab <- ggtexttable(df, theme = ttheme("blank"), rows = NULL) # Add horizontal and vertical lines tab \%>\% tab_add_hline(at.row = c(1, 2), row.side = "top", linewidth = 3, linetype = 1) \%>\% tab_add_hline(at.row = c(7), row.side = "bottom", linewidth = 3, linetype = 1) \%>\% tab_add_vline(at.column = 2:tab_ncol(tab), column.side = "left", from.row = 2, linetype = 2) # Add borders to table body and header # Cross out some cells tab \%>\% tbody_add_border() \%>\% thead_add_border() \%>\% tab_cell_crossout( row = c(2, 4), column = 3, linecolor = "red", reduce.size.by = 0.6 ) # Add titles andd footnote # ::::::::::::::::::::::::::::::::::::::::::::::::::: # Add titles and footnote # Wrap subtitle into multiple lines using strwrap() main.title <- "Edgar Anderson's Iris Data" subtitle <- paste0( "This famous (Fisher's or Anderson's) iris data set gives the measurements", " in centimeters of the variables sepal length and width and petal length and width,", " respectively, for 50 flowers from each of 3 species of iris.", " The species are Iris setosa, versicolor, and virginica." ) \%>\% strwrap(width = 80) \%>\% paste(collapse = "\n") tab <- ggtexttable(head(iris), theme = ttheme("light")) tab \%>\% tab_add_title(text = subtitle, face = "plain", size = 10) \%>\% tab_add_title(text = main.title, face = "bold", padding = unit(0.1, "line")) \%>\% tab_add_footnote(text = "*Table created using ggpubr", size = 10, face = "italic") # Combine density plot and summary table #::::::::::::::::::::::::::::::::::::: # Density plot of "Sepal.Length" density.p <- ggdensity(iris, x = "Sepal.Length", fill = "Species", palette = "jco") # Draw the summary table of Sepal.Length # Descriptive statistics by groups stable <- desc_statby(iris, measure.var = "Sepal.Length", grps = "Species") stable <- stable[, c("Species", "length", "mean", "sd")] stable.p <- ggtexttable(stable, rows = NULL, theme = ttheme("mOrange")) # Arrange the plots on the same page ggarrange(density.p, stable.p, ncol = 1, nrow = 2, heights = c(1, 0.5)) } ggpubr/man/geom_bracket.Rd0000644000176200001440000001464413665771630015253 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/geom_bracket.R \name{stat_bracket} \alias{stat_bracket} \alias{geom_bracket} \title{Add Brackets with Labels to a GGPlot} \usage{ stat_bracket( mapping = NULL, data = NULL, position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, label = NULL, type = c("text", "expression"), y.position = NULL, xmin = NULL, xmax = NULL, step.increase = 0, step.group.by = NULL, tip.length = 0.03, bracket.nudge.y = 0, bracket.shorten = 0, size = 0.3, label.size = 3.88, family = "", vjust = 0, ... ) geom_bracket( mapping = NULL, data = NULL, stat = "bracket", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, label = NULL, type = c("text", "expression"), y.position = NULL, xmin = NULL, xmax = NULL, step.increase = 0, step.group.by = NULL, tip.length = 0.03, bracket.nudge.y = 0, bracket.shorten = 0, size = 0.3, label.size = 3.88, family = "", vjust = 0, coord.flip = FALSE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If \code{FALSE} (the default), removes missing values with a warning. If \code{TRUE} silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{label}{character vector with alternative label, if not null test is ignored} \item{type}{the label type. Can be one of "text" and "expression" (for parsing plotmath expression).} \item{y.position}{numeric vector with the y positions of the brackets} \item{xmin}{numeric vector with the positions of the left sides of the brackets} \item{xmax}{numeric vector with the positions of the right sides of the brackets} \item{step.increase}{numeric vector with the increase in fraction of total height for every additional comparison to minimize overlap.} \item{step.group.by}{a variable name for grouping brackets before adding step.increase. Useful to group bracket by facet panel.} \item{tip.length}{numeric vector with the fraction of total height that the bar goes down to indicate the precise column} \item{bracket.nudge.y}{Vertical adjustment to nudge brackets by. Useful to move up or move down the bracket. If positive value, brackets will be moved up; if negative value, brackets are moved down.} \item{bracket.shorten}{a small numeric value in [0-1] for shortening the with of bracket.} \item{size}{change the width of the lines of the bracket} \item{label.size}{change the size of the label text} \item{family}{change the font used for the text} \item{vjust}{move the text up or down relative to the bracket} \item{...}{other arguments passed on to \code{\link{layer}}. These are often aesthetics, used to set an aesthetic to a fixed value, like \code{color = "red"} or \code{size = 3}. They may also be parameters to the paired geom/stat.} \item{stat}{The statistical transformation to use on the data for this layer, as a string.} \item{coord.flip}{logical. If \code{TRUE}, flip x and y coordinates so that horizontal becomes vertical, and vertical, horizontal. When adding the p-values to a horizontal ggplot (generated using \code{\link[ggplot2]{coord_flip}()}), you need to specify the option \code{coord.flip = TRUE}.} } \description{ add brackets with label annotation to a ggplot. Helpers for adding p-value or significance levels to a plot. } \examples{ df <- ToothGrowth df$dose <- factor(df$dose) # Add bracket with labels ggboxplot(df, x = "dose", y = "len") + geom_bracket( xmin = "0.5", xmax = "1", y.position = 30, label = "t-test, p < 0.05" ) # Customize bracket tip.length tip.length ggboxplot(df, x = "dose", y = "len") + geom_bracket( xmin = "0.5", xmax = "1", y.position = 30, label = "t-test, p < 0.05", tip.length = c(0.2, 0.02) ) #Using plotmath expression ggboxplot(df, x = "dose", y = "len") + geom_bracket( xmin = "0.5", xmax = "1", y.position = 30, label = "list(~italic(p)<=0.001)", type = "expression", tip.length = c(0.2, 0.02) ) # Specify multiple brackets manually ggboxplot(df, x = "dose", y = "len") + geom_bracket( xmin = c("0.5", "1"), xmax = c("1", "2"), y.position = c(30, 35), label = c("***", "**"), tip.length = 0.01 ) # Compute statistical tests and add p-values stat.test <- compare_means(len ~ dose, ToothGrowth, method = "t.test") ggboxplot(df, x = "dose", y = "len") + geom_bracket( aes(xmin = group1, xmax = group2, label = signif(p, 2)), data = stat.test, y.position = 35 ) # Increase step length between brackets ggboxplot(df, x = "dose", y = "len") + geom_bracket( aes(xmin = group1, xmax = group2, label = signif(p, 2)), data = stat.test, y.position = 35, step.increase = 0.1 ) # Or specify the positions of each comparison ggboxplot(df, x = "dose", y = "len") + geom_bracket( aes(xmin = group1, xmax = group2, label = signif(p, 2)), data = stat.test, y.position = c(32, 35, 38) ) } ggpubr/man/stat_stars.Rd0000644000176200001440000000516213640143350014774 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_stars.R \name{stat_stars} \alias{stat_stars} \title{Add Stars to a Scatter Plot} \usage{ stat_stars( mapping = NULL, data = NULL, geom = "segment", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2]{geom_segment}}.} } \description{ Create a star plot by drawing segments from group centroid to each points. } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) # Scatter plot with ellipses and group mean points ggscatter(df, x = "wt", y = "mpg", color = "cyl", shape = "cyl", mean.point = TRUE, ellipse = TRUE)+ stat_stars(aes(color = cyl)) } \seealso{ \code{\link{ggscatter}} } ggpubr/man/stat_compare_means.Rd0000644000176200001440000001713513675462644016476 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_compare_means.R \name{stat_compare_means} \alias{stat_compare_means} \title{Add Mean Comparison P-values to a ggplot} \usage{ stat_compare_means( mapping = NULL, data = NULL, method = NULL, paired = FALSE, method.args = list(), ref.group = NULL, comparisons = NULL, hide.ns = FALSE, label.sep = ", ", label = NULL, label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, vjust = 0, tip.length = 0.03, bracket.size = 0.3, step.increase = 0, symnum.args = list(), geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{method}{a character string indicating which method to be used for comparing means.} \item{paired}{a logical indicating whether you want a paired test. Used only in \code{\link[stats]{t.test}} and in \link[stats]{wilcox.test}.} \item{method.args}{a list of additional arguments used for the test method. For example one might use \code{method.args = list(alternative = "greater")} for wilcoxon test.} \item{ref.group}{a character string specifying the reference group. If specified, for a given grouping variable, each of the group levels will be compared to the reference group (i.e. control group). \code{ref.group} can be also \code{".all."}. In this case, each of the grouping variable levels is compared to all (i.e. basemean).} \item{comparisons}{A list of length-2 vectors. The entries in the vector are either the names of 2 values on the x-axis or the 2 integers that correspond to the index of the groups of interest, to be compared.} \item{hide.ns}{logical value. If TRUE, hide ns symbol when displaying significance levels.} \item{label.sep}{a character string to separate the terms. Default is ", ", to separate the correlation coefficient and the p.value.} \item{label}{character string specifying label type. Allowed values include "p.signif" (shows the significance levels), "p.format" (shows the formatted p value).} \item{label.x.npc, label.y.npc}{can be \code{numeric} or \code{character} vector of the same length as the number of groups and/or panels. If too short they will be recycled. \itemize{ \item If \code{numeric}, value should be between 0 and 1. Coordinates to be used for positioning the label, expressed in "normalized parent coordinates". \item If \code{character}, allowed values include: i) one of c('right', 'left', 'center', 'centre', 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', 'middle') for y-axis.}} \item{label.x, label.y}{\code{numeric} Coordinates (in data units) to be used for absolute positioning of the label. If too short they will be recycled.} \item{vjust}{move the text up or down relative to the bracket.} \item{tip.length}{numeric vector with the fraction of total height that the bar goes down to indicate the precise column. Default is 0.03. Can be of same length as the number of comparisons to adjust specifically the tip lenth of each comparison. For example tip.length = c(0.01, 0.03). If too short they will be recycled.} \item{bracket.size}{Width of the lines of the bracket.} \item{step.increase}{numeric vector with the increase in fraction of total height for every additional comparison to minimize overlap.} \item{symnum.args}{a list of arguments to pass to the function \code{\link[stats]{symnum}} for symbolic number coding of p-values. For example, \code{symnum.args <- list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns"))}. In other words, we use the following convention for symbols indicating statistical significance: \itemize{ \item \code{ns}: p > 0.05 \item \code{*}: p <= 0.05 \item \code{**}: p <= 0.01 \item \code{***}: p <= 0.001 \item \code{****}: p <= 0.0001 }} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2]{geom_text}} or \code{\link[ggplot2:geom_text]{geom_label}}.} } \description{ Add mean comparison p-values to a ggplot, such as box blots, dot plots and stripcharts. } \examples{ # Load data data("ToothGrowth") head(ToothGrowth) # Two independent groups #::::::::::::::::::::::::::::::::::::::::::::::::: p <- ggboxplot(ToothGrowth, x = "supp", y = "len", color = "supp", palette = "npg", add = "jitter") # Add p-value p + stat_compare_means() # Change method p + stat_compare_means(method = "t.test") # Paired samples #::::::::::::::::::::::::::::::::::::::::::::::::: ggpaired(ToothGrowth, x = "supp", y = "len", color = "supp", line.color = "gray", line.size = 0.4, palette = "npg")+ stat_compare_means(paired = TRUE) # More than two groups #::::::::::::::::::::::::::::::::::::::::::::::::: # Pairwise comparisons: Specify the comparisons you want my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ) ggboxplot(ToothGrowth, x = "dose", y = "len", color = "dose", palette = "npg")+ # Add pairwise comparisons p-value stat_compare_means(comparisons = my_comparisons, label.y = c(29, 35, 40))+ stat_compare_means(label.y = 45) # Add global Anova p-value # Multiple pairwise test against a reference group ggboxplot(ToothGrowth, x = "dose", y = "len", color = "dose", palette = "npg")+ stat_compare_means(method = "anova", label.y = 40)+ # Add global p-value stat_compare_means(aes(label = ..p.signif..), method = "t.test", ref.group = "0.5") # Multiple grouping variables #::::::::::::::::::::::::::::::::::::::::::::::::: # Box plot facetted by "dose" p <- ggboxplot(ToothGrowth, x = "supp", y = "len", color = "supp", palette = "npg", add = "jitter", facet.by = "dose", short.panel.labs = FALSE) # Use only p.format as label. Remove method name. p + stat_compare_means( aes(label = paste0("p = ", ..p.format..)) ) } \seealso{ \code{\link{compare_means}} } ggpubr/man/ggbarplot.Rd0000644000176200001440000002137313670251462014577 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggbarplot.R \name{ggbarplot} \alias{ggbarplot} \title{Bar plot} \usage{ ggbarplot( data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, size = NULL, width = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "errorbar", label = FALSE, lab.col = "black", lab.size = 4, lab.pos = c("out", "in"), lab.vjust = NULL, lab.hjust = NULL, lab.nb.digits = NULL, sort.val = c("none", "desc", "asc"), sort.by.groups = TRUE, top = Inf, position = position_stack(), ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color, fill}{outline and fill colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{width}{numeric value between 0 and 1 specifying box width.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{label}{specify whether to add labels on the bar plot. Allowed values are: \itemize{ \item \strong{logical value}: If TRUE, y values is added as labels on the bar plot \item \strong{character vector}: Used as text labels; must be the same length as y. }} \item{lab.col, lab.size}{text color and size for labels.} \item{lab.pos}{character specifying the position for labels. Allowed values are "out" (for outside) or "in" (for inside). Ignored when lab.vjust != NULL.} \item{lab.vjust}{numeric, vertical justification of labels. Provide negative value (e.g.: -0.4) to put labels outside the bars or positive value to put labels inside (e.g.: 2).} \item{lab.hjust}{numeric, horizontal justification of labels.} \item{lab.nb.digits}{integer indicating the number of decimal places (round) to be used.} \item{sort.val}{a string specifying whether the value should be sorted. Allowed values are "none" (no sorting), "asc" (for ascending) or "desc" (for descending).} \item{sort.by.groups}{logical value. If TRUE the data are sorted by groups. Used only when sort.val != "none".} \item{top}{a numeric value specifying the number of top elements to be shown.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to be passed to ggpar().} } \description{ Create a bar plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Data df <- data.frame(dose=c("D0.5", "D1", "D2"), len=c(4.2, 10, 29.5)) print(df) # Basic plot with label outsite # +++++++++++++++++++++++++++ ggbarplot(df, x = "dose", y = "len", label = TRUE, label.pos = "out") # Change width ggbarplot(df, x = "dose", y = "len", width = 0.5) # Change the plot orientation: horizontal ggbarplot(df, "dose", "len", orientation = "horiz") # Change the default order of items ggbarplot(df, "dose", "len", order = c("D2", "D1", "D0.5")) # Change colors # +++++++++++++++++++++++++++ # Change fill and outline color # add labels inside bars ggbarplot(df, "dose", "len", fill = "steelblue", color = "steelblue", label = TRUE, lab.pos = "in", lab.col = "white") # Change colors by groups: dose # Use custom color palette ggbarplot(df, "dose", "len", color = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Change fill and outline colors by groups ggbarplot(df, "dose", "len", fill = "dose", color = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Plot with multiple groups # +++++++++++++++++++++ # Create some data df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), dose=rep(c("D0.5", "D1", "D2"),2), len=c(6.8, 15, 33, 4.2, 10, 29.5)) print(df2) # Plot "len" by "dose" and change color by a second group: "supp" # Add labels inside bars ggbarplot(df2, "dose", "len", fill = "supp", color = "supp", palette = "Paired", label = TRUE, lab.col = "white", lab.pos = "in") # Change position: Interleaved (dodged) bar plot ggbarplot(df2, "dose", "len", fill = "supp", color = "supp", palette = "Paired", label = TRUE, position = position_dodge(0.9)) # Add points and errors # ++++++++++++++++++++++++++ # Data: ToothGrowth data set we'll be used. df3 <- ToothGrowth head(df3, 10) # It can be seen that for each group we have # different values ggbarplot(df3, x = "dose", y = "len") # Visualize the mean of each group ggbarplot(df3, x = "dose", y = "len", add = "mean") # Add error bars: mean_se # (other values include: mean_sd, mean_ci, median_iqr, ....) # Add labels ggbarplot(df3, x = "dose", y = "len", add = "mean_se", label = TRUE, lab.vjust = -1.6) # Use only "upper_errorbar" ggbarplot(df3, x = "dose", y = "len", add = "mean_se", error.plot = "upper_errorbar") # Change error.plot to "pointrange" ggbarplot(df3, x = "dose", y = "len", add = "mean_se", error.plot = "pointrange") # Add jitter points and errors (mean_se) ggbarplot(df3, x = "dose", y = "len", add = c("mean_se", "jitter")) # Add dot and errors (mean_se) ggbarplot(df3, x = "dose", y = "len", add = c("mean_se", "dotplot")) # Multiple groups with error bars and jitter point ggbarplot(df3, x = "dose", y = "len", color = "supp", add = "mean_se", palette = c("#00AFBB", "#E7B800"), position = position_dodge()) } \seealso{ \code{\link{ggpar}}, \code{\link{ggline}} } ggpubr/man/show_line_types.Rd0000644000176200001440000000057413052274626016032 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/show_line_types.R \name{show_line_types} \alias{show_line_types} \title{Line types available in R} \usage{ show_line_types() } \value{ a ggplot. } \description{ Show line types available in R. } \examples{ show_line_types()+ theme_minimal() } \seealso{ \code{\link{ggpar}} and \code{\link{ggline}}. } ggpubr/man/bgcolor.Rd0000644000176200001440000000100613115324412014222 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/bgcolor.R \name{bgcolor} \alias{bgcolor} \title{Change ggplot Panel Background Color} \usage{ bgcolor(color) } \arguments{ \item{color}{background color.} } \description{ Change ggplot panel background color. } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot p <- ggboxplot(df, x = "dose", y = "len") p # Change panel background color p + bgcolor("#BFD5E3")+ border("#BFD5E3") } \seealso{ \link{border}(). } ggpubr/man/ggline.Rd0000644000176200001440000002151513670253443014062 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggline.R \name{ggline} \alias{ggline} \title{Line plot} \usage{ ggline( data, x, y, group = 1, numeric.x.axis = FALSE, combine = FALSE, merge = FALSE, color = "black", palette = NULL, linetype = "solid", plot_type = c("b", "l", "p"), size = 0.5, shape = 19, stroke = NULL, point.size = size, point.color = color, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "errorbar", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, show.line.label = FALSE, position = "identity", ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{group}{grouping variable to connect points by line. Allowed values are 1 (for one line, one group) or a character vector specifying the name of the grouping variable (case of multiple lines).} \item{numeric.x.axis}{logical. If TRUE, x axis will be treated as numeric. Default is FALSE.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{line colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{linetype}{line type.} \item{plot_type}{plot type. Allowed values are one of "b" for both line and point; "l" for line only; and "p" for point only. Default is "b".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{shape}{point shapes.} \item{stroke}{point stroke. Used only for shapes 21-24 to control the thickness of points border.} \item{point.size}{point size.} \item{point.color}{point color.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{show.line.label}{logical value. If TRUE, shows line labels.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to geom_dotplot.} } \description{ Create a line plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Data df <- data.frame(dose=c("D0.5", "D1", "D2"), len=c(4.2, 10, 29.5)) print(df) # Basic plot # +++++++++++++++++++++++++++ ggline(df, x = "dose", y = "len") # Plot with multiple groups # +++++++++++++++++++++ # Create some data df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), dose=rep(c("D0.5", "D1", "D2"),2), len=c(6.8, 15, 33, 4.2, 10, 29.5)) print(df2) # Plot "len" by "dose" and # Change line types and point shapes by a second groups: "supp" ggline(df2, "dose", "len", linetype = "supp", shape = "supp") # Change colors # +++++++++++++++++++++ # Change color by group: "supp" # Use custom color palette ggline(df2, "dose", "len", linetype = "supp", shape = "supp", color = "supp", palette = c("#00AFBB", "#E7B800")) # Add points and errors # ++++++++++++++++++++++++++ # Data: ToothGrowth data set we'll be used. df3 <- ToothGrowth head(df3, 10) # It can be seen that for each group we have # different values ggline(df3, x = "dose", y = "len") # Visualize the mean of each group ggline(df3, x = "dose", y = "len", add = "mean") # Add error bars: mean_se # (other values include: mean_sd, mean_ci, median_iqr, ....) # Add labels ggline(df3, x = "dose", y = "len", add = "mean_se") # Change error.plot to "pointrange" ggline(df3, x = "dose", y = "len", add = "mean_se", error.plot = "pointrange") # Add jitter points and errors (mean_se) ggline(df3, x = "dose", y = "len", add = c("mean_se", "jitter")) # Add dot and errors (mean_se) ggline(df3, x = "dose", y = "len", add = c("mean_se", "dotplot"), color = "steelblue") # Add violin and errors (mean_se) ggline(df3, x = "dose", y = "len", add = c("mean_se", "violin"), color = "steelblue") # Multiple groups with error bars # ++++++++++++++++++++++ ggline(df3, x = "dose", y = "len", color = "supp", add = "mean_se", palette = c("#00AFBB", "#E7B800")) # Add jitter ggline(df3, x = "dose", y = "len", color = "supp", add = c("mean_se", "jitter"), palette = c("#00AFBB", "#E7B800")) # Add dot plot ggline(df3, x = "dose", y = "len", color = "supp", add = c("mean_se", "dotplot"), palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{ggpar}}, \code{\link{ggbarplot}} } ggpubr/man/gghistogram.Rd0000644000176200001440000001556013666230637015140 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gghistogram.R \name{gghistogram} \alias{gghistogram} \title{Histogram plot} \usage{ gghistogram( data, x, y = "..count..", combine = FALSE, merge = FALSE, weight = NULL, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, bins = NULL, binwidth = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, add_density = FALSE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, position = position_identity(), ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable to be drawn.} \item{y}{one of "..density.." or "..count..".} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{weight}{a variable name available in the input data for creating a weighted histogram.} \item{color, fill}{histogram line color and fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{linetype}{line type. See \code{\link{show_line_types}}.} \item{alpha}{numeric value specifying fill color transparency. Value should be in [0, 1], where 0 is full transparency and 1 is no transparency.} \item{bins}{Number of bins. Defaults to 30.} \item{binwidth}{numeric value specifying bin width. use value between 0 and 1 when you have a strong dense dotplot. For example binwidth = 0.2.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{add}{allowed values are one of "mean" or "median" (for adding mean or median line, respectively).} \item{add.params}{parameters (color, size, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{rug}{logical value. If TRUE, add marginal rug.} \item{add_density}{logical value. If TRUE, add density curves.} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function. Allowed values include "identity", "stack", "dodge".} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_histogram}} and \code{\link{ggpar}}.} } \description{ Create a histogram plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Create some data format set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) # Basic density plot # Add mean line and marginal rug gghistogram(wdata, x = "weight", fill = "lightgray", add = "mean", rug = TRUE) # Change outline colors by groups ("sex") # Use custom color palette gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", palette = c("#00AFBB", "#E7B800")) # Change outline and fill colors by groups ("sex") # Use custom color palette gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, color = "sex", fill = "sex", palette = c("#00AFBB", "#E7B800")) # Combine histogram and density plots gghistogram(wdata, x = "weight", add = "mean", rug = TRUE, fill = "sex", palette = c("#00AFBB", "#E7B800"), add_density = TRUE) # Weighted histogram gghistogram(iris, x = "Sepal.Length", weight = "Petal.Length") } \seealso{ \code{\link{ggdensity}} and \code{\link{ggpar}} } ggpubr/man/ggqqplot.Rd0000644000176200001440000000775013640143350014450 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggqqplot.R \name{ggqqplot} \alias{ggqqplot} \title{QQ Plots} \usage{ ggqqplot( data, x, combine = FALSE, merge = FALSE, color = "black", palette = NULL, size = NULL, shape = NULL, add = c("qqline", "none"), add.params = list(linetype = "solid"), conf.int = TRUE, conf.int.level = 0.95, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable to be drawn.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{point color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{point size.} \item{shape}{point shape.} \item{add}{character vector. Allowed values are one of "none" and "qqline" (for adding qqline).} \item{add.params}{parameters (color, size, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{conf.int}{logical value. If TRUE, confidence interval is added.} \item{conf.int.level}{the confidence level. Default value is 0.95.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link{ggpar}}.} } \description{ Quantile-Quantile plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Create some data format set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) # Basic QQ plot ggqqplot(wdata, x = "weight") # Change colors and shape by groups ("sex") # Use custom palette ggqqplot(wdata, x = "weight", color = "sex", palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{ggpar}} } ggpubr/man/show_point_shapes.Rd0000644000176200001440000000061213052274626016344 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/show_point_shapes.R \name{show_point_shapes} \alias{show_point_shapes} \title{Point shapes available in R} \usage{ show_point_shapes() } \value{ a ggplot. } \description{ Show point shapes available in R. } \examples{ show_point_shapes()+ theme_minimal() } \seealso{ \code{\link{ggpar}} and \code{\link{ggline}}. } ggpubr/man/ggsummarystats.Rd0000644000176200001440000001224513675446741015721 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggsummarystats.R \name{ggsummarytable} \alias{ggsummarytable} \alias{ggsummarystats} \alias{print.ggsummarystats} \alias{print.ggsummarystats_list} \title{GGPLOT with Summary Stats Table Under the Plot} \usage{ ggsummarytable( data, x, y, digits = 0, size = 3, color = "black", palette = NULL, facet.by = NULL, labeller = "label_value", position = "identity", ggtheme = theme_pubr(), ... ) ggsummarystats( data, x, y, summaries = c("n", "median", "iqr"), ggfunc = ggboxplot, color = "black", fill = "white", palette = NULL, facet.by = NULL, free.panels = FALSE, labeller = "label_value", heights = c(0.8, 0.2), ggtheme = theme_pubr(), ... ) \method{print}{ggsummarystats}(x, heights = c(0.8, 0.2), ...) \method{print}{ggsummarystats_list}(x, heights = c(0.8, 0.2), legend = NULL, ...) } \arguments{ \item{data}{a data frame} \item{x}{a list of \code{ggsummarystats}.} \item{y}{character vector containing one or more variables to plot} \item{digits}{integer indicating the number of decimal places (round) to be used.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{color}{outline color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{labeller}{Character vector. An alternative to the argument \code{short.panel.labs}. Possible values are one of "label_both" (panel labelled by both grouping variable names and levels) and "label_value" (panel labelled with only grouping levels).} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments passed to the function \code{\link{ggpar}()}, \code{\link{facet}()} or \code{\link{ggarrange}()} when printing the plot.} \item{summaries}{summary stats to display in the table. Possible values are those returned by the function \code{\link[rstatix]{get_summary_stats}()}, including: \code{"n", "min", "max", "median", "q1", "q2", "q3", "mad", "mean", "sd", "se", "ci"}.} \item{ggfunc}{a ggpubr function, including: ggboxplot, ggviolin, ggdotplot, ggbarplot, ggline, etc. Can be any other ggplot function that accepts the following arguments \code{data, x, color, fill, palette, ggtheme, facet.by}.} \item{fill}{fill color.} \item{free.panels}{logical. If TRUE, create free plot panels when the argument \code{facet.by} is specified.} \item{heights}{a numeric vector of length 2, specifying the heights of the main and the summary table, respectively.} \item{legend}{character specifying legend position. Allowed values are one of c("top", "bottom", "left", "right", "none"). To remove the legend use legend = "none".} } \description{ Create a ggplot with summary stats (n, median, mean, iqr) table under the plot. Read more: \href{https://www.datanovia.com/en/blog/how-to-create-a-beautiful-plots-in-r-with-summary-statistics-labels/}{How to Create a Beautiful Plots in R with Summary Statistics Labels}. } \section{Functions}{ \itemize{ \item \code{ggsummarytable}: Create a table of summary stats \item \code{ggsummarystats}: Create a ggplot with a summary stat table under the plot. }} \examples{ # Data preparation #:::::::::::::::::::::::::::::::::::::::::::::::: data("ToothGrowth") df <- ToothGrowth df$dose <- as.factor(df$dose) # Add random QC column set.seed(123) qc <- rep(c("pass", "fail"), 30) df$qc <- as.factor(sample(qc, 60)) # Inspect the data head(df) # Basic summary stats #:::::::::::::::::::::::::::::::::::::::::::::::: # Compute summary statistics summary.stats <- df \%>\% group_by(dose) \%>\% get_summary_stats(type = "common") summary.stats # Visualize summary table ggsummarytable( summary.stats, x = "dose", y = c("n", "median", "iqr"), ggtheme = theme_bw() ) # Create plots with summary table under the plot #:::::::::::::::::::::::::::::::::::::::::::::::: # Basic plot ggsummarystats( df, x = "dose", y = "len", ggfunc = ggboxplot, add = "jitter" ) # Color by groups ggsummarystats( df, x = "dose", y = "len", ggfunc = ggboxplot, add = "jitter", color = "dose", palette = "npg" ) # Create a barplot ggsummarystats( df, x = "dose", y = "len", ggfunc = ggbarplot, add = c("jitter", "median_iqr"), color = "dose", palette = "npg" ) # Facet #:::::::::::::::::::::::::::::::::::::::::::::::: # Specify free.panels = TRUE for free panels ggsummarystats( df, x = "dose", y = "len", ggfunc = ggboxplot, add = "jitter", color = "dose", palette = "npg", facet.by = c("supp", "qc"), labeller = "label_both" ) } ggpubr/man/rremove.Rd0000644000176200001440000000257113120576611014270 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rremove.R \name{rremove} \alias{rremove} \title{Remove a ggplot Component} \usage{ rremove(object) } \arguments{ \item{object}{character string specifying the plot components. Allowed values include: \itemize{ \item \code{"grid"} for both x and y grids \item \code{"x.grid"} for x axis grids \item \code{"y.grid"} for y axis grids \item \code{"axis"} for both x and y axes \item \code{"x.axis"} for x axis \item \code{"y.axis"} for y axis \item \code{"xlab", or "x.title"} for x axis label \item \code{"ylab", or "y.title"} for y axis label \item \code{"xylab", "xy.title" or "axis.title"} for both x and y axis labels \item \code{"x.text"} for x axis texts (x axis tick labels) \item \code{"y.text"} for y axis texts (y axis tick labels) \item \code{"xy.text"} or \code{"axis.text"} for both x and y axis texts \item \code{"ticks"} for both x and y ticks \item \code{"x.ticks"} for x ticks \item \code{"y.ticks"} for y ticks \item \code{"legend.title"} for the legend title \item \code{"legend"} for the legend }} } \description{ Remove a specific component from a ggplot. } \examples{ # Load data data("ToothGrowth") # Basic plot p <- ggboxplot(ToothGrowth, x = "dose", y = "len", ggtheme = theme_gray()) p # Remove all grids p + rremove("grid") # Remove only x grids p + rremove("x.grid") } ggpubr/man/compare_means.Rd0000644000176200001440000001132513640143350015414 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/compare_means.R \name{compare_means} \alias{compare_means} \title{Comparison of Means} \usage{ compare_means( formula, data, method = "wilcox.test", paired = FALSE, group.by = NULL, ref.group = NULL, symnum.args = list(), p.adjust.method = "holm", ... ) } \arguments{ \item{formula}{a formula of the form \code{x ~ group} where \code{x} is a numeric variable giving the data values and \code{group} is a factor with one or multiple levels giving the corresponding groups. For example, \code{formula = TP53 ~ cancer_group}. It's also possible to perform the test for multiple response variables at the same time. For example, \code{formula = c(TP53, PTEN) ~ cancer_group}.} \item{data}{a data.frame containing the variables in the formula.} \item{method}{the type of test. Default is \link[stats]{wilcox.test}. Allowed values include: \itemize{ \item \code{\link[stats]{t.test}} (parametric) and \code{\link[stats]{wilcox.test}} (non-parametric). Perform comparison between two groups of samples. If the grouping variable contains more than two levels, then a pairwise comparison is performed. \item \code{\link[stats]{anova}} (parametric) and \code{\link[stats]{kruskal.test}} (non-parametric). Perform one-way ANOVA test comparing multiple groups. }} \item{paired}{a logical indicating whether you want a paired test. Used only in \code{\link[stats]{t.test}} and in \link[stats]{wilcox.test}.} \item{group.by}{a character vector containing the name of grouping variables.} \item{ref.group}{a character string specifying the reference group. If specified, for a given grouping variable, each of the group levels will be compared to the reference group (i.e. control group). \code{ref.group} can be also \code{".all."}. In this case, each of the grouping variable levels is compared to all (i.e. basemean).} \item{symnum.args}{a list of arguments to pass to the function \code{\link[stats]{symnum}} for symbolic number coding of p-values. For example, \code{symnum.args <- list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns"))}. In other words, we use the following convention for symbols indicating statistical significance: \itemize{ \item \code{ns}: p > 0.05 \item \code{*}: p <= 0.05 \item \code{**}: p <= 0.01 \item \code{***}: p <= 0.001 \item \code{****}: p <= 0.0001 }} \item{p.adjust.method}{method for adjusting p values (see \code{\link[stats]{p.adjust}}). Has impact only in a situation, where multiple pairwise tests are performed; or when there are multiple grouping variables. Allowed values include "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none". If you don't want to adjust the p value (not recommended), use p.adjust.method = "none". Note that, when the \code{formula} contains multiple variables, the p-value adjustment is done independently for each variable.} \item{...}{Other arguments to be passed to the test function.} } \value{ return a data frame with the following columns: \itemize{ \item \code{.y.}: the y variable used in the test. \item \code{group1,group2}: the compared groups in the pairwise tests. Available only when \code{method = "t.test"} or \code{method = "wilcox.test"}. \item \code{p}: the p-value. \item \code{p.adj}: the adjusted p-value. Default for \code{p.adjust.method = "holm"}. \item \code{p.format}: the formatted p-value. \item \code{p.signif}: the significance level. \item \code{method}: the statistical test used to compare groups. } } \description{ Performs one or multiple mean comparisons. } \examples{ # Load data #::::::::::::::::::::::::::::::::::::::: data("ToothGrowth") df <- ToothGrowth # One-sample test #::::::::::::::::::::::::::::::::::::::::: compare_means(len ~ 1, df, mu = 0) # Two-samples unpaired test #::::::::::::::::::::::::::::::::::::::::: compare_means(len ~ supp, df) # Two-samples paired test #::::::::::::::::::::::::::::::::::::::::: compare_means(len ~ supp, df, paired = TRUE) # Compare supp levels after grouping the data by "dose" #:::::::::::::::::::::::::::::::::::::::: compare_means(len ~ supp, df, group.by = "dose") # pairwise comparisons #:::::::::::::::::::::::::::::::::::::::: # As dose contains more thant two levels ==> # pairwise test is automatically performed. compare_means(len ~ dose, df) # Comparison against reference group #:::::::::::::::::::::::::::::::::::::::: compare_means(len ~ dose, df, ref.group = "0.5") # Comparison against all #:::::::::::::::::::::::::::::::::::::::: compare_means(len ~ dose, df, ref.group = ".all.") # Anova and kruskal.test #:::::::::::::::::::::::::::::::::::::::: compare_means(len ~ dose, df, method = "anova") compare_means(len ~ dose, df, method = "kruskal.test") } ggpubr/man/ggscatter.Rd0000644000176200001440000002302113675551604014577 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggscatter.R \name{ggscatter} \alias{ggscatter} \title{Scatter plot} \usage{ ggscatter( data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "lightgray", palette = NULL, shape = 19, size = 2, point = TRUE, rug = FALSE, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "reg.line", "loess"), add.params = list(), conf.int = FALSE, conf.int.level = 0.95, fullrange = FALSE, ellipse = FALSE, ellipse.level = 0.95, ellipse.type = "norm", ellipse.alpha = 0.1, ellipse.border.remove = FALSE, mean.point = FALSE, mean.point.size = ifelse(is.numeric(size), 2 * size, size), star.plot = FALSE, star.plot.lty = 1, star.plot.lwd = NULL, label = NULL, font.label = c(12, "plain"), font.family = "", label.select = NULL, repel = FALSE, label.rectangle = FALSE, parse = FALSE, cor.coef = FALSE, cor.coeff.args = list(), cor.method = "pearson", cor.coef.coord = c(NULL, NULL), cor.coef.size = 4, ggp = NULL, show.legend.text = NA, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color, fill}{point colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{shape}{point shape. See \code{\link{show_point_shapes}}.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{point}{logical value. If TRUE, show points.} \item{rug}{logical value. If TRUE, add marginal rug.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{add}{allowed values are one of "none", "reg.line" (for adding linear regression line) or "loess" (for adding local regression fitting).} \item{add.params}{parameters (color, size, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{conf.int}{logical value. If TRUE, adds confidence interval.} \item{conf.int.level}{Level controlling confidence region. Default is 95\%. Used only when add != "none" and conf.int = TRUE.} \item{fullrange}{should the fit span the full range of the plot, or just the data. Used only when add != "none".} \item{ellipse}{logical value. If TRUE, draws ellipses around points.} \item{ellipse.level}{the size of the concentration ellipse in normal probability.} \item{ellipse.type}{Character specifying frame type. Possible values are \code{"convex"}, \code{"confidence"} or types supported by \code{\link[ggplot2]{stat_ellipse}()} including one of \code{c("t", "norm", "euclid")} for plotting concentration ellipses. \itemize{ \item \code{"convex"}: plot convex hull of a set o points. \item \code{"confidence"}: plot confidence ellipses arround group mean points as \code{FactoMineR::coord.ellipse()}. \item \code{"t"}: assumes a multivariate t-distribution. \item \code{"norm"}: assumes a multivariate normal distribution. \item \code{"euclid"}: draws a circle with the radius equal to level, representing the euclidean distance from the center. This ellipse probably won't appear circular unless \code{\link[ggplot2]{coord_fixed}()} is applied.}} \item{ellipse.alpha}{Alpha for ellipse specifying the transparency level of fill color. Use alpha = 0 for no fill color.} \item{ellipse.border.remove}{logical value. If TRUE, remove ellipse border lines.} \item{mean.point}{logical value. If TRUE, group mean points are added to the plot.} \item{mean.point.size}{numeric value specifying the size of mean points.} \item{star.plot}{logical value. If TRUE, a star plot is generated.} \item{star.plot.lty, star.plot.lwd}{line type and line width (size) for star plot, respectively.} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of point labels. For example \emph{font.label = c(14, "bold", "red")}. To specify only the size and the style, use font.label = c(14, "plain").} \item{font.family}{character vector specifying font family.} \item{label.select}{character vector specifying some labels to show.} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{parse}{If \code{TRUE}, the labels will be parsed into expressions and displayed as described in \code{?plotmath}.} \item{cor.coef}{logical value. If TRUE, correlation coefficient with the p-value will be added to the plot.} \item{cor.coeff.args}{a list of arguments to pass to the function \code{\link{stat_cor}} for customizing the displayed correlation coefficients. For example: \code{cor.coeff.args = list(method = "pearson", label.x.npc = "right", label.y.npc = "top")}.} \item{cor.method}{method for computing correlation coefficient. Allowed values are one of "pearson", "kendall", or "spearman".} \item{cor.coef.coord}{numeric vector, of length 2, specifying the x and y coordinates of the correlation coefficient. Default values are NULL.} \item{cor.coef.size}{correlation coefficient text font size.} \item{ggp}{a ggplot. If not NULL, points are added to an existing plot.} \item{show.legend.text}{logical. Should text be included in the legends? NA, the default, includes if any aesthetics are mapped. FALSE never includes, and TRUE always includes.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_point}} and \code{\link{ggpar}}.} } \description{ Create a scatter plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) head(df[, c("wt", "mpg", "cyl")], 3) # Basic plot # +++++++++++++++++++++++++++ ggscatter(df, x = "wt", y = "mpg", color = "black", shape = 21, size = 3, # Points color, shape and size add = "reg.line", # Add regressin line add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line conf.int = TRUE, # Add confidence interval cor.coef = TRUE, # Add correlation coefficient. see ?stat_cor cor.coeff.args = list(method = "pearson", label.x = 3, label.sep = "\n") ) # loess method: local regression fitting ggscatter(df, x = "wt", y = "mpg", add = "loess", conf.int = TRUE) # Control point size by continuous variable values ("qsec") ggscatter(df, x = "wt", y = "mpg", color = "#00AFBB", size = "qsec") # Change colors # +++++++++++++++++++++++++++ # Use custom color palette # Add marginal rug ggscatter(df, x = "wt", y = "mpg", color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07") ) # Add group ellipses and mean points # Add stars # +++++++++++++++++++ ggscatter(df, x = "wt", y = "mpg", color = "cyl", shape = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), ellipse = TRUE, mean.point = TRUE, star.plot = TRUE) # Textual annotation # +++++++++++++++++ df$name <- rownames(df) ggscatter(df, x = "wt", y = "mpg", color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), label = "name", repel = TRUE) } \seealso{ \code{\link{stat_cor}}, \code{\link{stat_stars}}, \code{\link{stat_conf_ellipse}} and \code{\link{ggpar}}. } ggpubr/man/stat_pvalue_manual.Rd0000644000176200001440000001473413665775523016522 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_pvalue_manual.R \name{stat_pvalue_manual} \alias{stat_pvalue_manual} \title{Add Manually P-values to a ggplot} \usage{ stat_pvalue_manual( data, label = NULL, y.position = "y.position", xmin = "group1", xmax = "group2", x = NULL, size = 3.88, label.size = size, bracket.size = 0.3, bracket.nudge.y = 0, bracket.shorten = 0, color = "black", linetype = 1, tip.length = 0.03, remove.bracket = FALSE, step.increase = 0, step.group.by = NULL, hide.ns = FALSE, vjust = 0, coord.flip = FALSE, position = "identity", ... ) } \arguments{ \item{data}{a data frame containing statitistical test results. The expected default format should contain the following columns: \code{group1 | group2 | p | y.position | etc}. \code{group1} and \code{group2} are the groups that have been compared. \code{p} is the resulting p-value. \code{y.position} is the y coordinates of the p-values in the plot.} \item{label}{the column containing the label (e.g.: label = "p" or label = "p.adj"), where \code{p} is the p-value. Can be also an expression that can be formatted by the \code{\link[glue]{glue}()} package. For example, when specifying label = "t-test, p = \{p\}", the expression \{p\} will be replaced by its value.} \item{y.position}{column containing the coordinates (in data units) to be used for absolute positioning of the label. Default value is "y.position". Can be also a numeric vector.} \item{xmin}{column containing the position of the left sides of the brackets. Default value is "group1".} \item{xmax}{(optional) column containing the position of the right sides of the brackets. Default value is "group2". If NULL, the p-values are plotted as a simple text.} \item{x}{x position of the p-value. Should be used only when you want plot the p-value as text (without brackets).} \item{size, label.size}{size of label text.} \item{bracket.size}{Width of the lines of the bracket.} \item{bracket.nudge.y}{Vertical adjustment to nudge brackets by. Useful to move up or move down the bracket. If positive value, brackets will be moved up; if negative value, brackets are moved down.} \item{bracket.shorten}{a small numeric value in [0-1] for shortening the with of bracket.} \item{color}{text and line color. Can be variable name in the data for coloring by groups.} \item{linetype}{linetype. Can be variable name in the data for changing linetype by groups.} \item{tip.length}{numeric vector with the fraction of total height that the bar goes down to indicate the precise column. Default is 0.03.} \item{remove.bracket}{logical, if \code{TRUE}, brackets are removed from the plot. Considered only in the situation, where comparisons are performed against reference group or against "all".} \item{step.increase}{numeric vector with the increase in fraction of total height for every additional comparison to minimize overlap.} \item{step.group.by}{a variable name for grouping brackets before adding step.increase. Useful to group bracket by facet panel.} \item{hide.ns}{logical value. If TRUE, hide ns symbol when displaying significance levels. Filter is done by checking the column \code{p.adj.signif}, \code{p.signif}, \code{p.adj} and \code{p}.} \item{vjust}{move the text up or down relative to the bracket. Can be also a column name available in the data.} \item{coord.flip}{logical. If \code{TRUE}, flip x and y coordinates so that horizontal becomes vertical, and vertical, horizontal. When adding the p-values to a horizontal ggplot (generated using \code{\link[ggplot2]{coord_flip}()}), you need to specify the option \code{coord.flip = TRUE}.} \item{position}{position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{...}{other arguments passed to the function \code{geom_bracket()} or \code{geom_text()}} } \description{ Add manually p-values to a ggplot, such as box blots, dot plots and stripcharts. Frequently asked questions are available on \href{https://www.datanovia.com/en/blog/tag/ggpubr/}{Datanovia ggpubr FAQ page}, for example: \itemize{ \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-basic-ggplots/}{How to Add P-Values onto Basic GGPLOTS} \item \href{https://www.datanovia.com/en/blog/ggpubr-how-to-add-adjusted-p-values-to-a-multi-panel-ggplot/}{How to Add Adjusted P-values to a Multi-Panel GGPlot} \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-to-ggplot-facets/}{How to Add P-values to GGPLOT Facets} \item \href{https://www.datanovia.com/en/blog/ggpubr-how-to-add-p-values-generated-elsewhere-to-a-ggplot/}{How to Add P-Values Generated Elsewhere to a GGPLOT} \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-a-grouped-ggplot-using-the-ggpubr-r-package/}{How to Add P-Values onto a Grouped GGPLOT using the GGPUBR R Package} \item \href{https://www.datanovia.com/en/blog/how-to-create-stacked-bar-plots-with-error-bars-and-p-values/}{How to Create Stacked Bar Plots with Error Bars and P-values} \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-horizontal-ggplots/}{How to Add P-Values onto Horizontal GGPLOTS} } } \examples{ # T-test stat.test <- compare_means( len ~ dose, data = ToothGrowth, method = "t.test" ) stat.test # Create a simple box plot p <- ggboxplot(ToothGrowth, x = "dose", y = "len") p # Perform a t-test between groups stat.test <- compare_means( len ~ dose, data = ToothGrowth, method = "t.test" ) stat.test # Add manually p-values from stat.test data # First specify the y.position of each comparison stat.test <- stat.test \%>\% mutate(y.position = c(29, 35, 39)) p + stat_pvalue_manual(stat.test, label = "p.adj") # Customize the label with glue expression # (https://github.com/tidyverse/glue) p + stat_pvalue_manual(stat.test, label = "p = {p.adj}") # Grouped bar plots #\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\% ToothGrowth$dose <- as.factor(ToothGrowth$dose) # Comparisons against reference stat.test <- compare_means( len ~ dose, data = ToothGrowth, group.by = "supp", method = "t.test", ref.group = "0.5" ) stat.test # Plot bp <- ggbarplot(ToothGrowth, x = "supp", y = "len", fill = "dose", palette = "jco", add = "mean_sd", add.params = list(group = "dose"), position = position_dodge(0.8)) bp + stat_pvalue_manual( stat.test, x = "supp", y.position = 33, label = "p.signif", position = position_dodge(0.8) ) } \seealso{ \code{\link{stat_compare_means}} } ggpubr/man/gradient_color.Rd0000644000176200001440000000247013120754051015576 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/gradient_color.R \name{gradient_color} \alias{gradient_color} \alias{gradient_fill} \title{Set Gradient Color} \usage{ gradient_color(palette) gradient_fill(palette) } \arguments{ \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". Can be also a numeric vector; in this case a basic color palette is created using the function \link[grDevices]{palette}.} } \description{ Change gradient color. \itemize{ \item \code{gradient_color()}: Change gradient color. \item \code{gradient_fill()}: Change gradient fill. } } \examples{ df <- mtcars p <- ggscatter(df, x = "wt", y = "mpg", color = "mpg") # Change gradient color # Use one custom color p + gradient_color("red") # Two colors p + gradient_color(c("blue", "red")) # Three colors p + gradient_color(c("blue", "white", "red")) # Use RColorBrewer palette p + gradient_color("RdYlBu") # Use ggsci color palette p + gradient_color("npg") } \seealso{ \link{set_palette}. } ggpubr/man/ggstripchart.Rd0000644000176200001440000002010713670251462015311 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggstripchart.R \name{ggstripchart} \alias{ggstripchart} \title{Stripcharts} \usage{ ggstripchart( data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, shape = 19, size = NULL, select = NULL, remove = NULL, order = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, jitter = 0.2, position = position_jitter(jitter), ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{character string containing the name of x variable.} \item{y}{character vector containing one or more variables to plot} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{outline color.} \item{fill}{fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{shape}{point shape} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{jitter}{the amount of jitter.} \item{position}{position adjustment, either as a string, or the result of a call to a position adjustment function. Used to adjust position for multiple groups.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_jitter}}, \code{\link{ggpar}} and \code{\link{facet}}.} } \description{ Create a stripchart, also known as one dimensional scatter plots. These plots are suitable compared to box plots when sample sizes are small. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot with summary statistics: mean_se # +++++++++++++++++++++++++++ # Change point shapes by groups: "dose" ggstripchart(df, x = "dose", y = "len", shape = "dose", size = 3, add = "mean_se") # Use mean_sd # Change error.plot to "crossbar" ggstripchart(df, x = "dose", y = "len", shape = "dose", size = 3, add = "mean_sd", add.params = list(width = 0.5), error.plot = "crossbar") # Add summary statistics # ++++++++++++++++++++++++++ # Add box plot ggstripchart(df, x = "dose", y = "len", shape = "dose", add = "boxplot") # Add violin + mean_sd ggstripchart(df, x = "dose", y = "len", shape = "dose", add = c("violin", "mean_sd")) # Change colors # +++++++++++++++++++++++++++ # Change colors by groups: dose # Use custom color palette ggstripchart(df, "dose", "len", shape = "dose", color = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), add = "mean_sd") # Plot with multiple groups # +++++++++++++++++++++ # Change shape and color by a second group : "supp" ggstripchart(df, "dose", "len", shape = "supp", color = "supp", palette = c("#00AFBB", "#E7B800")) # Adjust point position ggstripchart(df, "dose", "len", shape = "supp", color = "supp", palette = c("#00AFBB", "#E7B800"), position = position_dodge(0.8) ) # You can also use position_jitterdodge() # but fill aesthetic is required ggstripchart(df, "dose", "len", shape = "supp", color = "supp", palette = c("#00AFBB", "#E7B800"), position = position_jitterdodge() ) # Add boxplot ggstripchart(df, "dose", "len", shape = "supp", color = "supp", palette = c("#00AFBB", "#E7B800"), add = "boxplot", add.params = list(color = "black") ) } \seealso{ \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggdotplot}} and \code{\link{ggboxplot}}. } ggpubr/man/geom_signif.Rd0000644000176200001440000000045213675462644015112 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils-geom-signif.R \name{geom_signif} \alias{geom_signif} \title{geom_signif exported from ggsignif package} \description{ See \code{ggsignif::\link[ggsignif:stat_signif]{geom_signif}} for details. } \keyword{internal} ggpubr/man/ggdotplot.Rd0000644000176200001440000001611513670251462014617 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggdotplot.R \name{ggdotplot} \alias{ggdotplot} \title{Dot plot} \usage{ ggdotplot( data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "lightgray", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, size = NULL, binwidth = NULL, select = NULL, remove = NULL, order = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{character string containing the name of x variable.} \item{y}{character vector containing one or more variables to plot} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{outline color.} \item{fill}{fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{binwidth}{numeric value specifying bin width. use value between 0 and 1 when you have a strong dense dotplot. For example binwidth = 0.2.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_dotplot}}, \code{\link{ggpar}} and \code{\link{facet}}.} } \description{ Create a dot plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot with summary statistics : mean_sd # +++++++++++++++++++++++++++ ggdotplot(df, x = "dose", y = "len", add = "mean_sd") # Change error.plot to "crossbar" ggdotplot(df, x = "dose", y = "len", add = "mean_sd", add.params = list(width = 0.5), error.plot = "crossbar") # Add box plot ggdotplot(df, x = "dose", y = "len", add = "boxplot") # Add violin + mean_sd ggdotplot(df, x = "dose", y = "len", add = c("violin", "mean_sd")) # Change colors # +++++++++++++++++++++++++++ # Change fill and outline colors by groups: dose # Use custom color palette ggdotplot(df, "dose", "len", add = "boxplot", color = "dose", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Plot with multiple groups # +++++++++++++++++++++ # Change color by a second group : "supp" ggdotplot(df, "dose", "len", fill = "supp", color = "supp", palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggboxplot}} and \code{\link{ggstripchart}}. } ggpubr/man/ggmaplot.Rd0000644000176200001440000001243513666022545014432 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggmaplot.R \name{ggmaplot} \alias{ggmaplot} \title{MA-plot from means and log fold changes} \usage{ ggmaplot( data, fdr = 0.05, fc = 1.5, genenames = NULL, detection_call = NULL, size = NULL, alpha = 1, font.label = c(12, "plain", "black"), label.rectangle = FALSE, palette = c("#B31B21", "#1465AC", "darkgray"), top = 15, select.top.method = c("padj", "fc"), label.select = NULL, main = NULL, xlab = "Log2 mean expression", ylab = "Log2 fold change", ggtheme = theme_classic(), ... ) } \arguments{ \item{data}{an object of class DESeqResults, get_diff, DE_Results, matrix or data frame containing the columns baseMean (or baseMeanLog2), log2FoldChange, and padj. Rows are genes. Two possible formats are accepted for the input data: \itemize{ \item 1/ \code{baseMean | log2FoldChange | padj}. This is a typical output from DESeq2 pipeline. Here, we'll use log2(baseMean) as the x-axis variable. \item 2/ \code{baseMeanLog2 | log2FoldChange | padj}. Here, baseMeanLog2 is assumed to be the mean of logged values; so we'll use it as the x-axis variable without any transformation. This is the real A in MA plot. In other words, it is the average of two log-scales values: \code{A = (log2(x) + log2(y))/2 = log2(xy)*1/2} } Terminology: \itemize{ \item baseMean: the mean expression of genes in the two groups. \item log2FoldChange: the log2 fold changes of group 2 compared to group 1 \item padj: the adjusted p-value of the used statiscal test. }} \item{fdr}{Accepted false discovery rate for considering genes as differentially expressed.} \item{fc}{the fold change threshold. Only genes with a fold change >= fc and padj <= fdr are considered as significantly differentially expressed.} \item{genenames}{a character vector of length nrow(data) specifying gene names corresponding to each row. Used for point labels.} \item{detection_call}{a numeric vector with length = nrow(data), specifying if the genes is expressed (value = 1) or not (value = 0). For example detection_call = c(1, 1, 0, 1, 0, 1). Default is NULL. If detection_call column is available in data, it will be used.} \item{size}{points size.} \item{alpha}{numeric value betwenn 0 an 1 specifying point alpha for controlling transparency. For example, use alpha = 0.5.} \item{font.label}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of point labels. For example \emph{font.label = c(14, "bold", "red")}.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{top}{the number of top genes to be shown on the plot. Use top = 0 to hide to gene labels.} \item{select.top.method}{methods to be used for selecting top genes. Allowed values include "padj" and "fc" for selecting by adjusted p values or fold changes, respectively.} \item{label.select}{character vector specifying some labels to show.} \item{main}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link{ggpar}}.} } \value{ returns a ggplot. } \description{ Make MA-plot which is a scatter plot of log2 fold changes (M, on the y-axis) versus the average expression signal (A, on the x-axis). \code{M = log2(x/y)} and \code{A = (log2(x) + log2(y))/2 = log2(xy)*1/2}, where x and y are respectively the mean of the two groups being compared. } \examples{ data(diff_express) # Default plot ggmaplot(diff_express, main = expression("Group 1" \%->\% "Group 2"), fdr = 0.05, fc = 2, size = 0.4, palette = c("#B31B21", "#1465AC", "darkgray"), genenames = as.vector(diff_express$name), legend = "top", top = 20, font.label = c("bold", 11), font.legend = "bold", font.main = "bold", ggtheme = ggplot2::theme_minimal()) # Add rectangle around labels ggmaplot(diff_express, main = expression("Group 1" \%->\% "Group 2"), fdr = 0.05, fc = 2, size = 0.4, palette = c("#B31B21", "#1465AC", "darkgray"), genenames = as.vector(diff_express$name), legend = "top", top = 20, font.label = c("bold", 11), label.rectangle = TRUE, font.legend = "bold", font.main = "bold", ggtheme = ggplot2::theme_minimal()) # Select specific genes to show # set top = 0, then specify genes using label.select argument ggmaplot(diff_express, main = expression("Group 1" \%->\% "Group 2"), fdr = 0.05, fc = 2, size = 0.4, genenames = as.vector(diff_express$name), ggtheme = ggplot2::theme_minimal(), top = 0, label.select = c("BUB1", "CD83") ) } ggpubr/man/ggparagraph.Rd0000644000176200001440000000326113640143350015066 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggparagraph.R \name{ggparagraph} \alias{ggparagraph} \alias{drawDetails.splitText} \title{Draw a Paragraph of Text} \usage{ ggparagraph( text, color = NULL, size = NULL, face = NULL, family = NULL, lineheight = NULL ) \method{drawDetails}{splitText}(x, recording) } \arguments{ \item{text}{the text to plot.} \item{color}{font color, example: color = "black"} \item{size}{font size, example: size = 12} \item{face}{font face. Allowed values are one of "plain", "italic", "bold", "bold.italic".} \item{family}{font family} \item{lineheight}{Line height, example: lineheight = 2.} \item{x}{a grid grob} \item{recording}{a logical value indicating whether a grob is being added to the display list or redrawn from the display list.} } \description{ Draw a paragraph o text. Splits a long text into multiple lines (by inserting line breaks) so that the output will fit within the current viewport. } \examples{ # Density plot density.p <- ggdensity(iris, x = "Sepal.Length", fill = "Species", palette = "jco") # Text plot text <- paste("iris data set gives the measurements in cm", "of the variables sepal length and width", "and petal length and width, respectively,", "for 50 flowers from each of 3 species of iris.", "The species are Iris setosa, versicolor, and virginica.", sep = " ") text.p <- ggparagraph(text, face = "italic", size = 12) # Arrange the plots on the same page ggarrange(density.p, text.p, ncol = 1, nrow = 2, heights = c(1, 0.3)) } \author{ Alboukadel Kassambara } ggpubr/man/reexports.Rd0000644000176200001440000000102013675462644014647 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/reexports.R \docType{import} \name{reexports} \alias{reexports} \alias{mutate} \alias{group_by} \alias{get_summary_stats} \title{Objects exported from other packages} \keyword{internal} \description{ These objects are imported from other packages. Follow the links below to see their documentation. \describe{ \item{dplyr}{\code{\link[dplyr]{group_by}}, \code{\link[dplyr]{mutate}}} \item{rstatix}{\code{\link[rstatix]{get_summary_stats}}} }} ggpubr/man/ggboxplot.Rd0000644000176200001440000002073713670251462014626 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggboxplot.R \name{ggboxplot} \alias{ggboxplot} \title{Box plot} \usage{ ggboxplot( data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, bxp.errorbar = FALSE, bxp.errorbar.width = 0.4, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, linetype = "solid", size = NULL, width = 0.7, notch = FALSE, outlier.shape = 19, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{character string containing the name of x variable.} \item{y}{character vector containing one or more variables to plot} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{outline color.} \item{fill}{fill color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{bxp.errorbar}{logical value. If TRUE, shows error bars of box plots.} \item{bxp.errorbar.width}{numeric value specifying the width of box plot error bars. Default is 0.4.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{linetype}{line types.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{width}{numeric value between 0 and 1 specifying box width.} \item{notch}{If \code{FALSE} (default) make a standard box plot. If \code{TRUE}, make a notched box plot. Notches are used to compare groups; if the notches of two boxes do not overlap, this suggests that the medians are significantly different.} \item{outlier.shape}{point shape of outlier. Default is 19. To hide outlier, specify \code{outlier.shape = NA}. When jitter is added, then outliers will be automatically hidden.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_boxplot}}, \code{\link{ggpar}} and \code{\link{facet}}.} } \description{ Create a box plot with points. Box plots display a group of numerical data through their quartiles. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \section{Suggestions for the argument "add"}{ Suggested values are one of c("dotplot", "jitter"). } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot # +++++++++++++++++++++++++++ # width: change box plots width ggboxplot(df, x = "dose", y = "len", width = 0.8) # Change orientation: horizontal ggboxplot(df, "dose", "len", orientation = "horizontal") # Notched box plot ggboxplot(df, x = "dose", y = "len", notch = TRUE) # Add dots # ++++++++++++++++++++++++++ ggboxplot(df, x = "dose", y = "len", add = "dotplot") # Add jitter points and change the shape by groups ggboxplot(df, x = "dose", y = "len", add = "jitter", shape = "dose") # Select and order items # ++++++++++++++++++++++++++++++ # Select which items to display: "0.5" and "2" ggboxplot(df, "dose", "len", select = c("0.5", "2")) # Change the default order of items ggboxplot(df, "dose", "len", order = c("2", "1", "0.5")) # Change colors # +++++++++++++++++++++++++++ # Change outline and fill colors ggboxplot(df, "dose", "len", color = "black", fill = "gray") # Change outline colors by groups: dose # Use custom color palette # Add jitter points and change the shape by groups ggboxplot(df, "dose", "len", color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"), add = "jitter", shape = "dose") # Change fill color by groups: dose ggboxplot(df, "dose", "len", fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Box plot with multiple groups # +++++++++++++++++++++ # fill or color box plot by a second group : "supp" ggboxplot(df, "dose", "len", color = "supp", palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggdotplot}} and \code{\link{ggstripchart}}. } ggpubr/man/ggerrorplot.Rd0000644000176200001440000001452113670251462015161 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggerrorplot.R \name{ggerrorplot} \alias{ggerrorplot} \title{Visualizing Error} \usage{ ggerrorplot( data, x, y, desc_stat = "mean_se", numeric.x.axis = FALSE, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, size = NULL, width = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "pointrange", ci = 0.95, position = position_dodge(), ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{desc_stat}{descriptive statistics to be used for visualizing errors. Default value is "mean_se". Allowed values are one of , "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see \code{\link{desc_statby}} for more details.} \item{numeric.x.axis}{logical. If TRUE, x axis will be treated as numeric. Default is FALSE.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color, fill}{outline and fill colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{width}{numeric value between 0 and 1 specifying box width.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items. Considered only when x axis is a factor variable.} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{error.plot}{plot type used to visualize error. Allowed values are one of c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"). Default value is "pointrange" or "errorbar". Used only when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, se, ....} \item{ci}{the percent range of the confidence interval (default is 0.95).} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to be passed to ggpar().} } \description{ Visualizing error. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Data: ToothGrowth data set we'll be used. df<- ToothGrowth head(df, 10) # Plot mean_se ggerrorplot(df, x = "dose", y = "len") # Change desc_stat to mean_sd # (other values include: mean_sd, mean_ci, median_iqr, ....) # Add labels ggerrorplot(df, x = "dose", y = "len", desc_stat = "mean_sd") # Change error.plot to "errorbar" and add mean point # Visualize the mean of each group ggerrorplot(df, x = "dose", y = "len", add = "mean", error.plot = "errorbar") # Horizontal plot ggerrorplot(df, x = "dose", y = "len", add = "mean", error.plot = "errorbar", orientation = "horizontal") # Change error.plot to "crossbar" ggerrorplot(df, x = "dose", y = "len", error.plot = "crossbar", width = 0.5) # Add jitter points and errors (mean_se) ggerrorplot(df, x = "dose", y = "len", add = "jitter") # Add dot and errors (mean_se) ggerrorplot(df, x = "dose", y = "len", add = "dotplot") # Multiple groups with error bars and jitter point ggerrorplot(df, x = "dose", y = "len", color = "supp", palette = "Paired", error.plot = "pointrange", position = position_dodge(0.5)) } \seealso{ \code{\link{ggpar}}, \code{\link{ggline}} } ggpubr/man/stat_regline_equation.Rd0000644000176200001440000001266713675462644017224 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_regline_equation.R \name{stat_regline_equation} \alias{stat_regline_equation} \title{Add Regression Line Equation and R-Square to a GGPLOT.} \usage{ stat_regline_equation( mapping = NULL, data = NULL, formula = y ~ x, label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, output.type = "expression", geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{formula}{a formula object} \item{label.x.npc, label.y.npc}{can be \code{numeric} or \code{character} vector of the same length as the number of groups and/or panels. If too short they will be recycled. \itemize{ \item If \code{numeric}, value should be between 0 and 1. Coordinates to be used for positioning the label, expressed in "normalized parent coordinates". \item If \code{character}, allowed values include: i) one of c('right', 'left', 'center', 'centre', 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', 'middle') for y-axis.} If too short they will be recycled.} \item{label.x, label.y}{\code{numeric} Coordinates (in data units) to be used for absolute positioning of the label. If too short they will be recycled.} \item{output.type}{character One of "expression", "latex" or "text".} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2]{geom_text}} or \code{\link[ggplot2:geom_text]{geom_label}}.} } \description{ Add regression line equation and R^2 to a ggplot. Regression model is fitted using the function \code{\link[stats]{lm}}. } \section{Computed variables}{ \describe{ \item{x}{x position for left edge} \item{y}{y position near upper edge} \item{eq.label}{equation for the fitted polynomial as a character string to be parsed} \item{rr.label}{\eqn{R^2} of the fitted model as a character string to be parsed} \item{adj.rr.label}{Adjusted \eqn{R^2} of the fitted model as a character string to be parsed} \item{AIC.label}{AIC for the fitted model.} \item{BIC.label}{BIC for the fitted model.} \item{hjust}{Set to zero to override the default of the "text" geom.}} } \examples{ # Simple scatter plot with correlation coefficient and # regression line #:::::::::::::::::::::::::::::::::::::::::::::::::::: ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line") + stat_cor(label.x = 3, label.y = 34) + stat_regline_equation(label.x = 3, label.y = 32) # Groupped scatter plot #:::::::::::::::::::::::::::::::::::::::::::::::::::: ggscatter( iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", palette = "jco", add = "reg.line" ) + facet_wrap(~Species) + stat_cor(label.y = 4.4) + stat_regline_equation(label.y = 4.2) # Polynomial equation #:::::::::::::::::::::::::::::::::::::::::::::::::::: # Demo data set.seed(4321) x <- 1:100 y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4) my.data <- data.frame(x, y, group = c("A", "B"), y2 = y * c(0.5,2), block = c("a", "a", "b", "b")) # Fit polynomial regression line and add labels formula <- y ~ poly(x, 3, raw = TRUE) p <- ggplot(my.data, aes(x, y2, color = group)) + geom_point() + stat_smooth(aes(fill = group, color = group), method = "lm", formula = formula) + stat_regline_equation( aes(label = paste(..eq.label.., ..adj.rr.label.., sep = "~~~~")), formula = formula ) + theme_bw() ggpar(p, palette = "jco") } \references{ the source code of the function \code{stat_regline_equation()} is inspired from the code of the function \code{stat_poly_eq()} (in ggpmisc package). } \seealso{ \code{\link{ggscatter}} } ggpubr/man/ggecdf.Rd0000644000176200001440000000726113640143350014026 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggecdf.R \name{ggecdf} \alias{ggecdf} \title{Empirical cumulative density function} \usage{ ggecdf( data, x, combine = FALSE, merge = FALSE, color = "black", palette = NULL, size = NULL, linetype = "solid", title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable to be drawn.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{merge}{logical or character value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, merge multiple y variables in the same plotting area. Allowed values include also "asis" (TRUE) and "flip". If merge = "flip", then y variables are used as x tick labels and the x variable is used as grouping variable.} \item{color}{line and point color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{line and point size.} \item{linetype}{line type. See \code{\link{show_line_types}}.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{stat_ecdf}} and \code{\link{ggpar}}.} } \description{ Empirical Cumulative Density Function (ECDF). } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Create some data format set.seed(1234) wdata = data.frame( sex = factor(rep(c("F", "M"), each=200)), weight = c(rnorm(200, 55), rnorm(200, 58))) head(wdata, 4) # Basic ECDF plot ggecdf(wdata, x = "weight") # Change colors and linetype by groups ("sex") # Use custom palette ggecdf(wdata, x = "weight", color = "sex", linetype = "sex", palette = c("#00AFBB", "#E7B800")) } \seealso{ \code{\link{ggpar}} } ggpubr/man/ggarrange.Rd0000644000176200001440000001014413640723012014535 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggarrange.R \name{ggarrange} \alias{ggarrange} \title{Arrange Multiple ggplots} \usage{ ggarrange( ..., plotlist = NULL, ncol = NULL, nrow = NULL, labels = NULL, label.x = 0, label.y = 1, hjust = -0.5, vjust = 1.5, font.label = list(size = 14, color = "black", face = "bold", family = NULL), align = c("none", "h", "v", "hv"), widths = 1, heights = 1, legend = NULL, common.legend = FALSE, legend.grob = NULL ) } \arguments{ \item{...}{list of plots to be arranged into the grid. The plots can be either ggplot2 plot objects or arbitrary gtables.} \item{plotlist}{(optional) list of plots to display.} \item{ncol}{(optional) number of columns in the plot grid.} \item{nrow}{(optional) number of rows in the plot grid.} \item{labels}{(optional) list of labels to be added to the plots. You can also set labels="AUTO" to auto-generate upper-case labels or labels="auto" to auto-generate lower-case labels.} \item{label.x}{(optional) Single value or vector of x positions for plot labels, relative to each subplot. Defaults to 0 for all labels. (Each label is placed all the way to the left of each plot.)} \item{label.y}{(optional) Single value or vector of y positions for plot labels, relative to each subplot. Defaults to 1 for all labels. (Each label is placed all the way to the top of each plot.)} \item{hjust}{Adjusts the horizontal position of each label. More negative values move the label further to the right on the plot canvas. Can be a single value (applied to all labels) or a vector of values (one for each label). Default is -0.5.} \item{vjust}{Adjusts the vertical position of each label. More positive values move the label further down on the plot canvas. Can be a single value (applied to all labels) or a vector of values (one for each label). Default is 1.5.} \item{font.label}{a list of arguments for customizing labels. Allowed values are the combination of the following elements: size (e.g.: 14), face (e.g.: "plain", "bold", "italic", "bold.italic"), color (e.g.: "red") and family. For example font.label = list(size = 14, face = "bold", color ="red").} \item{align}{(optional) Specifies whether graphs in the grid should be horizontally ("h") or vertically ("v") aligned. Options are "none" (default), "hv" (align in both directions), "h", and "v".} \item{widths}{(optional) numerical vector of relative columns widths. For example, in a two-column grid, widths = c(2, 1) would make the first column twice as wide as the second column.} \item{heights}{same as \code{widths} but for column heights.} \item{legend}{character specifying legend position. Allowed values are one of c("top", "bottom", "left", "right", "none"). To remove the legend use legend = "none".} \item{common.legend}{logical value. Default is FALSE. If TRUE, a common unique legend will be created for arranged plots.} \item{legend.grob}{a legend grob as returned by the function \code{\link{get_legend}()}. If provided, it will be used as the common legend.} } \value{ return an object of class \code{ggarrange}, which is a ggplot or a list of ggplot. } \description{ Arrange multiple ggplots on the same page. Wrapper around \code{\link[cowplot]{plot_grid}()}. Can arrange multiple ggplots over multiple pages, compared to the standard \code{\link[cowplot]{plot_grid}()}. Can also create a common unique legend for multiple plots. } \examples{ data("ToothGrowth") df <- ToothGrowth df$dose <- as.factor(df$dose) # Create some plots # :::::::::::::::::::::::::::::::::::::::::::::::::: # Box plot bxp <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Dot plot dp <- ggdotplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Density plot dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") # Arrange # :::::::::::::::::::::::::::::::::::::::::::::::::: ggarrange(bxp, dp, dens, ncol = 2, nrow = 2) # Use a common legend for multiple plots ggarrange(bxp, dp, common.legend = TRUE) } \seealso{ \code{\link{annotate_figure}()} } \author{ Alboukadel Kassambara \email{alboukadel.kassambara@gmail.com} } ggpubr/man/ggadd.Rd0000644000176200001440000000665513655254071013674 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggadd.R \name{ggadd} \alias{ggadd} \title{Add Summary Statistics or a Geom onto a ggplot} \usage{ ggadd( p, add = NULL, color = "black", fill = "white", group = 1, width = 1, shape = 19, size = NULL, alpha = 1, jitter = 0.2, binwidth = NULL, dotsize = size, linetype = 1, show.legend = NA, error.plot = "pointrange", ci = 0.95, data = NULL, position = position_dodge(0.8), p_geom = "" ) } \arguments{ \item{p}{a ggplot} \item{add}{character vector specifying other plot elements to be added. Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range".} \item{color}{point or outline color.} \item{fill}{fill color. Used only when \code{error.plot = "crossbar"}.} \item{group}{grouping variable. Allowed values are 1 (for one group) or a character vector specifying the name of the grouping variable. Used only for adding statistical summary per group.} \item{width}{numeric value between 0 and 1 specifying bar or box width. Example width = 0.8. Used only when \code{error.plot} is one of c("crossbar", "errorbar").} \item{shape}{point shape. Allowed values can be displayed using the function \code{\link{show_point_shapes}()}.} \item{size}{numeric value in [0-1] specifying point and line size.} \item{alpha}{numeric value specifying fill color transparency. Value should be in [0, 1], where 0 is full transparency and 1 is no transparency.} \item{jitter}{a numeric value specifying the amount of jittering. Used only when \code{add} contains "jitter".} \item{binwidth}{numeric value specifying bin width. use value between 0 and 1 when you have a strong dense dotplot. For example binwidth = 0.2. Used only when \code{add} contains "dotplot".} \item{dotsize}{as \code{size} but applied only to dotplot.} \item{linetype}{line type.} \item{show.legend}{logical. Should this layer be included in the legends? NA, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and TRUE always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{error.plot}{plot type used to visualize error. Allowed values are one of \code{c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange")}. Default value is "pointrange".} \item{ci}{the percent range of the confidence interval (default is 0.95).} \item{data}{a \code{data.frame} to be displayed. If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \link[ggplot2]{ggplot}.} \item{position}{position adjustment, either as a string, or the result of a call to a position adjustment function. Used to adjust position for multiple groups.} \item{p_geom}{the geometry of the main plot. Ex: p_geom = "geom_line". If NULL, the geometry is extracted from p. Used only by \link{ggline}().} } \description{ Add summary statistics or a geometry onto a ggplot. } \examples{ # Basic violin plot data("ToothGrowth") p <- ggviolin(ToothGrowth, x = "dose", y = "len", add = "none") # Add mean +/- SD and jitter points p \%>\% ggadd(c("mean_sd", "jitter"), color = "dose") # Add box plot p \%>\% ggadd(c("boxplot", "jitter"), color = "dose") } ggpubr/man/grids.Rd0000644000176200001440000000141113640143350013706 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/grids.R \name{grids} \alias{grids} \title{Add Grids to a ggplot} \usage{ grids(axis = c("xy", "x", "y"), color = "grey92", size = NULL, linetype = NULL) } \arguments{ \item{axis}{axis for which grid should be added. Allowed values include \code{c("xy", "x", "y")}.} \item{color}{grid line color.} \item{size}{numeric value specifying grid line size.} \item{linetype}{line type. An integer (0:8), a name (blank, solid, dashed, dotted, dotdash, longdash, twodash). Sess \code{\link{show_line_types}}.} } \description{ Add grids to ggplot. } \examples{ # Load data data("ToothGrowth") # Basic plot p <- ggboxplot(ToothGrowth, x = "dose", y = "len") p # Add border p + grids(linetype = "dashed") } ggpubr/man/rotate.Rd0000644000176200001440000000107213115311113014066 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rotate.R \name{rotate} \alias{rotate} \title{Rotate a ggplot Horizontally} \usage{ rotate(...) } \arguments{ \item{...}{other arguments to pass to \code{\link[ggplot2]{coord_flip}}.} } \description{ Rotate a ggplot to create horizontal plots. Wrapper around \code{\link[ggplot2]{coord_flip}}. } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot p <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette = "jco") p # Create horizontal plots p + rotate() } ggpubr/man/pipe.Rd0000644000176200001440000000040513675443466013560 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/utils-pipe.R \name{\%>\%} \alias{\%>\%} \title{Pipe operator} \usage{ lhs \%>\% rhs } \description{ See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. } \keyword{internal} ggpubr/man/get_legend.Rd0000644000176200001440000000157713640723012014707 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/get_legend.R \name{get_legend} \alias{get_legend} \title{Extract Legends from a ggplot object} \usage{ get_legend(p, position = NULL) } \arguments{ \item{p}{an object of class ggplot or a list of ggplots. If p is a list, only the first legend is returned.} \item{position}{character specifying legend position. Allowed values are one of c("top", "bottom", "left", "right", "none"). To remove the legend use legend = "none".} } \value{ an object of class gtable. } \description{ Extract the legend labels from a ggplot object. } \examples{ # Create a scatter plot p <- ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", palette = "jco", ggtheme = theme_minimal()) p # Extract the legend. Returns a gtable leg <- get_legend(p) # Convert to a ggplot and print as_ggplot(leg) } ggpubr/man/ggpaired.Rd0000644000176200001440000001126613660543465014406 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggpaired.R \name{ggpaired} \alias{ggpaired} \title{Plot Paired Data} \usage{ ggpaired( data, cond1, cond2, x = NULL, y = NULL, id = NULL, color = "black", fill = "white", palette = NULL, width = 0.5, point.size = 1.2, line.size = 0.5, line.color = "black", linetype = "solid", title = NULL, xlab = "Condition", ylab = "Value", facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{cond1}{variable name corresponding to the first condition.} \item{cond2}{variable name corresponding to the second condition.} \item{x, y}{x and y variables, where x is a grouping variable and y contains values for each group. Considered only when \code{cond1} and \code{cond2} are missing.} \item{id}{variable name corresponding to paired samples' id. Used to connect paired points with lines.} \item{color}{points and box plot colors. To color by conditions, use color = "condition".} \item{fill}{box plot fill color. To change fill color by conditions, use fill = "condition".} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{width}{box plot width.} \item{point.size, line.size}{point and line size, respectively.} \item{line.color}{line color.} \item{linetype}{line type.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to be passed to \link{ggpar}().} } \description{ Plot paired data. } \examples{ # Example 1 #:::::::::::::::::::::::::::::::::::::::::: before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7) after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2) d <- data.frame(before = before, after = after) ggpaired(d, cond1 = "before", cond2 = "after", fill = "condition", palette = "jco") # Example 2 #:::::::::::::::::::::::::::::::::::::::::: ggpaired(ToothGrowth, x = "supp", y = "len", color = "supp", line.color = "gray", line.size = 0.4, palette = "npg") } ggpubr/man/get_breaks.Rd0000644000176200001440000000315113675462644014731 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/get_breaks.R \name{get_breaks} \alias{get_breaks} \title{Easy Break Creation for Numeric Axes} \usage{ get_breaks(n = NULL, by = NULL, from = NULL, to = NULL) } \arguments{ \item{n}{number of breaks.} \item{by}{number: the step between breaks.} \item{from}{the starting value of breaks. By default, 0 is used for positive variables} \item{to}{the end values of breaks. This corresponds generally to the maximum limit of the axis.} } \value{ a break function } \description{ Creates breaks for numeric axes to be used in the functions \code{\link[ggplot2:scale_continuous]{scale_x_continuous}()} and \code{\link[ggplot2:scale_continuous]{scale_y_continuous}()}. Can be used to increase the number of x and y ticks by specifying the option \code{n}. It's also possible to control axis breaks by specifying a step between ticks. For example, if \code{by = 5}, a tick mark is shown on every 5. } \examples{ # Generate 5 breaks for a variable x get_breaks(n = 5)(x = 1:100) # Generate breaks using an increasing step get_breaks(by = 10)(x = 1:100) # Combine with ggplot scale_xx functions library(ggplot2) # Create a basic plot p <- ggscatter(mtcars, x = "wt", y = "mpg") p # Increase the number of ticks p + scale_x_continuous(breaks = get_breaks(n = 10)) + scale_y_continuous(breaks = get_breaks(n = 10)) # Set ticks according to a specific step, starting from 0 p + scale_x_continuous( breaks = get_breaks(by = 1.5, from = 0), limits = c(0, 6) ) + scale_y_continuous( breaks = get_breaks(by = 10, from = 0), limits = c(0, 40) ) } ggpubr/man/add_summary.Rd0000644000176200001440000001200513655273776015132 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/add_summary.R \name{add_summary} \alias{add_summary} \alias{mean_se_} \alias{mean_sd} \alias{mean_ci} \alias{mean_range} \alias{median_iqr} \alias{median_hilow_} \alias{median_q1q3} \alias{median_mad} \alias{median_range} \title{Add Summary Statistics onto a ggplot.} \usage{ add_summary( p, fun = "mean_se", error.plot = "pointrange", color = "black", fill = "white", group = 1, width = NULL, shape = 19, size = 1, linetype = 1, show.legend = NA, ci = 0.95, data = NULL, position = position_dodge(0.8) ) mean_se_(x, error.limit = "both") mean_sd(x, error.limit = "both") mean_ci(x, ci = 0.95, error.limit = "both") mean_range(x, error.limit = "both") median_iqr(x, error.limit = "both") median_hilow_(x, ci = 0.95, error.limit = "both") median_q1q3(x, error.limit = "both") median_mad(x, error.limit = "both") median_range(x, error.limit = "both") } \arguments{ \item{p}{a ggplot on which you want to add summary statistics.} \item{fun}{a function that is given the complete data and should return a data frame with variables ymin, y, and ymax. Allowed values are one of: "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range".} \item{error.plot}{plot type used to visualize error. Allowed values are one of \code{c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange")}. Default value is "pointrange".} \item{color}{point or outline color.} \item{fill}{fill color. Used only whne \code{error.plot = "crossbar"}.} \item{group}{grouping variable. Allowed values are 1 (for one group) or a character vector specifying the name of the grouping variable. Used only for adding statistical summary per group.} \item{width}{numeric value between 0 and 1 specifying bar or box width. Example width = 0.8. Used only when \code{error.plot} is one of c("crossbar", "errorbar").} \item{shape}{point shape. Allowed values can be displayed using the function \code{\link{show_point_shapes}()}.} \item{size}{numeric value in [0-1] specifying point and line size.} \item{linetype}{line type.} \item{show.legend}{logical. Should this layer be included in the legends? NA, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and TRUE always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{ci}{the percent range of the confidence interval (default is 0.95).} \item{data}{a \code{data.frame} to be displayed. If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \link[ggplot2]{ggplot}.} \item{position}{position adjustment, either as a string, or the result of a call to a position adjustment function. Used to adjust position for multiple groups.} \item{x}{a numeric vector.} \item{error.limit}{allowed values are one of ("both", "lower", "upper", "none") specifying whether to plot the lower and/or the upper limits of error interval.} } \description{ add summary statistics onto a ggplot. } \section{Functions}{ \itemize{ \item \code{add_summary}: add summary statistics onto a ggplot. \item \code{mean_se_}: returns the \code{mean} and the error limits defined by the \code{standard error}. We used the name \code{mean_se_}() to avoid masking \code{\link[ggplot2]{mean_se}}(). \item \code{mean_sd}: returns the \code{mean} and the error limits defined by the \code{standard deviation}. \item \code{mean_ci}: returns the \code{mean} and the error limits defined by the \code{confidence interval}. \item \code{mean_range}: returns the \code{mean} and the error limits defined by the \code{range = max - min}. \item \code{median_iqr}: returns the \code{median} and the error limits defined by the \code{interquartile range}. \item \code{median_hilow_}: computes the sample median and a selected pair of outer quantiles having equal tail areas. This function is a reformatted version of \code{Hmisc::smedian.hilow()}. The confidence limits are computed as follow: \code{lower.limits = (1-ci)/2} percentiles; \code{upper.limits = (1+ci)/2} percentiles. By default (\code{ci = 0.95}), the 2.5th and the 97.5th percentiles are used as the lower and the upper confidence limits, respectively. If you want to use the 25th and the 75th percentiles as the confidence limits, then specify \code{ci = 0.5} or use the function \code{median_q1q3()}. \item \code{median_q1q3}: computes the sample median and, the 25th and 75th percentiles. Wrapper around the function \code{median_hilow_()} using \code{ci = 0.5}. \item \code{median_mad}: returns the \code{median} and the error limits defined by the \code{median absolute deviation}. \item \code{median_range}: returns the \code{median} and the error limits defined by the \code{range = max - min}. }} \examples{ # Basic violin plot p <- ggviolin(ToothGrowth, x = "dose", y = "len", add = "none") p # Add mean_sd add_summary(p, "mean_sd") } ggpubr/man/font.Rd0000644000176200001440000000463313675466301013571 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/font.R \name{font} \alias{font} \title{Change the Appearance of Titles and Axis Labels} \usage{ font(object, size = NULL, color = NULL, face = NULL, family = NULL, ...) } \arguments{ \item{object}{character string specifying the plot components. Allowed values include: \itemize{ \item \code{"title"} for the main title \item \code{"subtitle"} for the plot subtitle \item \code{"caption"} for the plot caption \item \code{"legend.title"} for the legend title \item \code{"legend.text"} for the legend text \item \code{"x", "xlab", or "x.title"} for x axis label \item \code{"y", "ylab", or "y.title"} for y axis label \item \code{"xy", "xylab", "xy.title" or "axis.title"} for both x and y axis labels \item \code{"x.text"} for x axis texts (x axis tick labels) \item \code{"y.text"} for y axis texts (y axis tick labels) \item \code{"xy.text"} or \code{"axis.text"} for both x and y axis texts }} \item{size}{numeric value specifying the font size, (e.g.: \code{size = 12}).} \item{color}{character string specifying the font color, (e.g.: \code{color = "red"}).} \item{face}{the font face or style. Allowed values include one of \code{"plain", "bold", "italic", "bold.italic"}, (e.g.: \code{face = "bold.italic"}).} \item{family}{the font family.} \item{...}{other arguments to pass to the function \code{\link[ggplot2:element]{element_text}()}.} } \description{ Change the appearance of the main title, subtitle, caption, axis labels and text, as well as the legend title and texts. Wrapper around \code{\link[ggplot2:element]{element_text}()}. } \examples{ # Load data data("ToothGrowth") # Basic plot p <- ggboxplot(ToothGrowth, x = "dose", y = "len", color = "dose", title = "Box Plot created with ggpubr", subtitle = "Length by dose", caption = "Source: ggpubr", xlab ="Dose (mg)", ylab = "Teeth length") p # Change the appearance of titles and labels p + font("title", size = 14, color = "red", face = "bold.italic")+ font("subtitle", size = 10, color = "orange")+ font("caption", size = 10, color = "orange")+ font("xlab", size = 12, color = "blue")+ font("ylab", size = 12, color = "#993333")+ font("xy.text", size = 12, color = "gray", face = "bold") # Change the appearance of legend title and texts p + font("legend.title", color = "blue", face = "bold")+ font("legend.text", color = "red") } ggpubr/man/theme_pubr.Rd0000644000176200001440000000447313640723012014742 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/theme_pubr.R \name{theme_pubr} \alias{theme_pubr} \alias{theme_pubclean} \alias{labs_pubr} \alias{theme_classic2} \alias{clean_theme} \alias{clean_table_theme} \title{Publication ready theme} \usage{ theme_pubr( base_size = 12, base_family = "", border = FALSE, margin = TRUE, legend = c("top", "bottom", "left", "right", "none"), x.text.angle = 0 ) theme_pubclean(base_size = 12, base_family = "", flip = FALSE) labs_pubr(base_size = 14, base_family = "") theme_classic2(base_size = 12, base_family = "") clean_theme() clean_table_theme() } \arguments{ \item{base_size}{base font size} \item{base_family}{base font family} \item{border}{logical value. Default is FALSE. If TRUE, add panel border.} \item{margin}{logical value. Default is TRUE. If FALSE, reduce plot margin.} \item{legend}{character specifying legend position. Allowed values are one of c("top", "bottom", "left", "right", "none"). Default is "top" side position. to remove the legend use legend = "none". Legend position can be also specified using a numeric vector c(x, y). In this case it is possible to position the legend inside the plotting area. x and y are the coordinates of the legend box. Their values should be between 0 and 1. c(0,0) corresponds to the "bottom left" and c(1,1) corresponds to the "top right" position. For instance use legend = c(0.8, 0.2).} \item{x.text.angle}{Rotation angle of x axis tick labels. Default value is 0. Use 90 for vertical text.} \item{flip}{logical. If TRUE, grid lines are added to y axis instead of x axis.} } \description{ \itemize{ \item \strong{theme_pubr()}: Create a publication ready theme \item \strong{theme_pubclean()}: a clean theme without axis lines, to direct more attention to the data. \item \strong{labs_pubr()}: Format only plot labels to a publication ready style \item \strong{theme_classic2()}: Create a classic theme with axis lines. \item \strong{clean_theme()}: Remove axis lines, ticks, texts and titles. \item \strong{clean_table_theme()}: Clean the the theme of a table, such as those created by \code{\link{ggsummarytable}()}}. } \examples{ p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(aes(color = gear)) # Default plot p # Use theme_pubr() p + theme_pubr() # Format labels p + labs_pubr() } ggpubr/man/ggpar.Rd0000644000176200001440000001462313640143350013707 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggpar.R \name{ggpar} \alias{ggpar} \title{Graphical parameters} \usage{ ggpar( p, palette = NULL, gradient.cols = NULL, main = NULL, submain = NULL, caption = NULL, xlab = NULL, ylab = NULL, title = NULL, subtitle = NULL, font.main = NULL, font.submain = NULL, font.x = NULL, font.y = NULL, font.caption = NULL, font.title = NULL, font.subtitle = NULL, font.family = "", xlim = NULL, ylim = NULL, xscale = c("none", "log2", "log10", "sqrt"), yscale = c("none", "log2", "log10", "sqrt"), format.scale = FALSE, legend = NULL, legend.title = NULL, font.legend = NULL, ticks = TRUE, tickslab = TRUE, font.tickslab = NULL, font.xtickslab = font.tickslab, font.ytickslab = font.tickslab, x.text.angle = NULL, y.text.angle = NULL, xtickslab.rt = x.text.angle, ytickslab.rt = y.text.angle, xticks.by = NULL, yticks.by = NULL, rotate = FALSE, orientation = c("vertical", "horizontal", "reverse"), ggtheme = NULL, ... ) } \arguments{ \item{p}{an object of class ggplot or a list of ggplots} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". Can be also a numeric vector of length(groups); in this case a basic color palette is created using the function \link[grDevices]{palette}.} \item{gradient.cols}{vector of colors to use for n-colour gradient. Allowed values include brewer and ggsci color palettes.} \item{main, title}{plot main title.} \item{submain, subtitle}{plot subtitle.} \item{caption}{plot caption.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{font.main, font.submain, font.caption, font.x, font.y}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of main title, subtitle, caption, xlab and ylab, respectively. For example \emph{font.x = c(14, "bold", "red")}. Use font.x = 14, to change only font size; or use font.x = "bold", to change only font face.} \item{font.title, font.subtitle}{alias of font.submain and font.submain, respectively.} \item{font.family}{character vector specifying font family.} \item{xlim, ylim}{a numeric vector of length 2, specifying x and y axis limits (minimum and maximum), respectively. e.g.: ylim = c(0, 50).} \item{xscale, yscale}{x and y axis scale, respectively. Allowed values are one of c("none", "log2", "log10", "sqrt"); e.g.: yscale="log2".} \item{format.scale}{logical value. If TRUE, axis tick mark labels will be formatted when xscale or yscale = "log2" or "log10".} \item{legend}{character specifying legend position. Allowed values are one of c("top", "bottom", "left", "right", "none"). To remove the legend use legend = "none". Legend position can be also specified using a numeric vector c(x, y); see details section.} \item{legend.title}{legend title, e.g.: \code{legend.title = "Species"}. Can be also a list, \code{legend.title = list(color = "Species", linetype = "Species", shape = "Species")}.} \item{font.legend}{legend text font style; e.g.: font.legend = c(10, "plain", "black").} \item{ticks}{logical value. Default is TRUE. If FALSE, hide axis tick marks.} \item{tickslab}{logical value. Default is TRUE. If FALSE, hide axis tick labels.} \item{font.tickslab, font.xtickslab, font.ytickslab}{Font style (size, face, color) for tick labels, e.g.: c(14, "bold", "red").} \item{x.text.angle, y.text.angle}{Numeric value specifying the rotation angle of x and y axis tick labels, respectively. Default value is NULL. For vertical x axis texts use x.text.angle = 90.} \item{xtickslab.rt, ytickslab.rt}{Same as x.text.angle and y.text.angle, respectively. Will be deprecated in the near future.} \item{xticks.by, yticks.by}{numeric value controlling x and y axis breaks, respectively. For example, if yticks.by = 5, a tick mark is shown on every 5. Default value is NULL.} \item{rotate}{logical value. If TRUE, rotate the graph by setting the plot orientation to horizontal.} \item{orientation}{change the orientation of the plot. Allowed values are one of c( "vertical", "horizontal", "reverse"). Partial match is allowed.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{not used} } \description{ Graphical parameters } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic box plot # +++++++++++++++++++++++++++ p <- ggboxplot(df, x = "dose", y = "len") # Change the plot orientation: horizontal ggpar(p, orientation = "horiz") # Change main title and axis labels # ++++++++++++++++++++++++++++ ggpar(p, main = "Plot of length \n by dose", xlab = "Dose (mg)", ylab = "Length") # Title font styles: 'plain', 'italic', 'bold', 'bold.italic' ggpar(p, main = "Length by dose", font.main = c(14,"bold.italic", "red"), font.x = c(14, "bold", "#2E9FDF"), font.y = c(14, "bold", "#E7B800")) # Hide axis labels ggpar(p, xlab = FALSE, ylab = FALSE) # Change colors # ++++++++++++++++++++++ # Change outline colors by groups: dose p2 <- ggboxplot(df, "dose", "len", color = "dose") p2 # Use custom color palette ggpar(p2, palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Use brewer palette ggpar(p2, palette = "Dark2" ) # Use grey palette ggpar(p2, palette = "grey") # Use scientific journal palette from ggsci package ggpar(p2, palette = "npg") # nature # Axis ticks, limits, scales # +++++++++++++++++++++++++ # Axis ticks labels and rotation ggpar(p, font.tickslab = c(14,"bold", "#993333"), xtickslab.rt = 45, ytickslab.rt = 45) # Hide axis ticks and tick labels ggpar(p, ticks = FALSE, tickslab = FALSE) # Axis limits ggpar(p, ylim = c(0, 50)) # Axis scale ggpar(p, yscale = "log2") # Format axis scale ggpar(p, yscale = "log2", format.scale = TRUE) # Legends # ++++++++++++++++++ # Change legend position and title ggpar(p2, legend = "right", legend.title = "Dose (mg)", font.legend = c(10, "bold", "red")) } ggpubr/man/ggdotchart.Rd0000644000176200001440000001541113670251462014740 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggdotchart.R \name{ggdotchart} \alias{ggdotchart} \alias{theme_cleveland} \title{Cleveland's Dot Plots} \usage{ ggdotchart( data, x, y, group = NULL, combine = FALSE, color = "black", palette = NULL, shape = 19, size = NULL, dot.size = size, sorting = c("ascending", "descending", "none"), add = c("none", "segment"), add.params = list(), x.text.col = TRUE, rotate = FALSE, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, position = "identity", ggtheme = theme_pubr(), ... ) theme_cleveland(rotate = TRUE) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{group}{an optional column name indicating how the elements of x are grouped.} \item{combine}{logical value. Default is FALSE. Used only when y is a vector containing multiple variables to plot. If TRUE, create a multi-panel plot by combining the plot of y variables.} \item{color, size}{points color and size.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{shape}{point shape. See \code{\link{show_point_shapes}}.} \item{dot.size}{numeric value specifying the dot size.} \item{sorting}{a character vector for sorting into ascending or descending order. Allowed values are one of "descending", "ascending" and "none". Partial match are allowed (e.g. sorting = "desc" or "asc"). Default is "descending".} \item{add}{character vector for adding another plot element (e.g.: dot plot or error bars). Allowed values are one or the combination of: "none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more details.} \item{add.params}{parameters (color, shape, size, fill, linetype) for the argument 'add'; e.g.: add.params = list(color = "red").} \item{x.text.col}{logical. If TRUE (default), x axis texts are colored by groups.} \item{rotate}{logical value. If TRUE, rotate the graph by setting the plot orientation to horizontal.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{panel.labs}{a list of one or two character vectors to modify facet panel labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies the labels for the "sex" variable. For two grouping variables, you can use for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", "Lev", "Lev2") ).} \item{short.panel.labs}{logical value. Default is TRUE. If TRUE, create short labels for panels by omitting variable names; in other words panels will be labelled only by variable grouping levels.} \item{select}{character vector specifying which items to display.} \item{remove}{character vector specifying which items to remove from the plot.} \item{order}{character vector specifying the order of items.} \item{label}{the name of the column containing point labels.} \item{font.label}{a list which can contain the combination of the following elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of labels. For example font.label = list(size = 14, face = "bold", color ="red"). To specify only the size and the style, use font.label = list(size = 14, face = "plain").} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link[ggplot2]{geom_point}} and \code{\link{ggpar}}.} } \description{ Draw a Cleveland dot plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) df$name <- rownames(df) head(df[, c("wt", "mpg", "cyl")], 3) # Basic plot ggdotchart(df, x = "name", y ="mpg", ggtheme = theme_bw()) # Change colors by group cyl ggdotchart(df, x = "name", y = "mpg", group = "cyl", color = "cyl", palette = c('#999999','#E69F00','#56B4E9'), rotate = TRUE, sorting = "descending", ggtheme = theme_bw(), y.text.col = TRUE ) # Plot with multiple groups # +++++++++++++++++++++ # Create some data df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), dose=rep(c("D0.5", "D1", "D2"),2), len=c(6.8, 15, 33, 4.2, 10, 29.5)) print(df2) ggdotchart(df2, x = "dose", y = "len", color = "supp", size = 3, add = "segment", add.params = list(color = "lightgray", size = 1.5), position = position_dodge(0.3), palette = "jco", ggtheme = theme_pubclean() ) } \seealso{ \code{\link{ggpar}} } ggpubr/man/stat_cor.Rd0000644000176200001440000001456113675462644014450 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_cor.R \name{stat_cor} \alias{stat_cor} \title{Add Correlation Coefficients with P-values to a Scatter Plot} \usage{ stat_cor( mapping = NULL, data = NULL, method = "pearson", alternative = "two.sided", cor.coef.name = c("R", "rho", "tau"), label.sep = ", ", label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, output.type = "expression", digits = 2, r.digits = digits, p.digits = digits, r.accuracy = NULL, p.accuracy = NULL, geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{method}{a character string indicating which correlation coefficient (or covariance) is to be computed. One of "pearson" (default), "kendall", or "spearman".} \item{alternative}{a character string specifying the alternative hypothesis, must be one of "two.sided" (default), "greater" or "less". You can specify just the initial letter.} \item{cor.coef.name}{character. Can be one of \code{"R"} (pearson coef), \code{"rho"} (spearman coef) and \code{"tau"} (kendall coef). Uppercase and lowercase are allowed.} \item{label.sep}{a character string to separate the terms. Default is ", ", to separate the correlation coefficient and the p.value.} \item{label.x.npc, label.y.npc}{can be \code{numeric} or \code{character} vector of the same length as the number of groups and/or panels. If too short they will be recycled. \itemize{ \item If \code{numeric}, value should be between 0 and 1. Coordinates to be used for positioning the label, expressed in "normalized parent coordinates". \item If \code{character}, allowed values include: i) one of c('right', 'left', 'center', 'centre', 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', 'middle') for y-axis.} If too short they will be recycled.} \item{label.x, label.y}{\code{numeric} Coordinates (in data units) to be used for absolute positioning of the label. If too short they will be recycled.} \item{output.type}{character One of "expression", "latex", "tex" or "text".} \item{digits, r.digits, p.digits}{integer indicating the number of decimal places (round) or significant digits (signif) to be used for the correlation coefficient and the p-value, respectively..} \item{r.accuracy}{a real value specifying the number of decimal places of precision for the correlation coefficient. Default is NULL. Use (e.g.) 0.01 to show 2 decimal places of precision. If specified, then \code{r.digits} is ignored.} \item{p.accuracy}{a real value specifying the number of decimal places of precision for the p-value. Default is NULL. Use (e.g.) 0.0001 to show 4 decimal places of precision. If specified, then \code{p.digits} is ignored.} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{...}{other arguments to pass to \code{\link[ggplot2]{geom_text}} or \code{\link[ggplot2:geom_text]{geom_label}}.} } \description{ Add correlation coefficients with p-values to a scatter plot. Can be also used to add `R2`. } \section{Computed variables}{ \describe{ \item{r}{correlation coefficient} \item{rr}{correlation coefficient squared} \item{r.label}{formatted label for the correlation coefficient} \item{rr.label}{formatted label for the squared correlation coefficient} \item{p.label}{label for the p-value} \item{label}{default labeldisplayed by \code{stat_cor()}} } } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) # Scatter plot with correlation coefficient #::::::::::::::::::::::::::::::::::::::::::::::::: sp <- ggscatter(df, x = "wt", y = "mpg", add = "reg.line", # Add regressin line add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line conf.int = TRUE # Add confidence interval ) # Add correlation coefficient sp + stat_cor(method = "pearson", label.x = 3, label.y = 30) # Specify the number of decimal places of precision for p and r # Using 3 decimal places for the p-value and # 2 decimal places for the correlation coefficient (r) sp + stat_cor(p.accuracy = 0.001, r.accuracy = 0.01) # Show only the r.label but not the p.label sp + stat_cor(aes(label = ..r.label..), label.x = 3) # Use R2 instead of R ggscatter(df, x = "wt", y = "mpg", add = "reg.line") + stat_cor( aes(label = paste(..rr.label.., ..p.label.., sep = "~`,`~")), label.x = 3 ) # Color by groups and facet #:::::::::::::::::::::::::::::::::::::::::::::::::::: sp <- ggscatter(df, x = "wt", y = "mpg", color = "cyl", palette = "jco", add = "reg.line", conf.int = TRUE) sp + stat_cor(aes(color = cyl), label.x = 3) } \seealso{ \code{\link{ggscatter}} } ggpubr/man/rotate_axis_text.Rd0000644000176200001440000000205413675462644016212 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rotate_axis_text.R \name{rotate_axis_text} \alias{rotate_axis_text} \alias{rotate_x_text} \alias{rotate_y_text} \title{Rotate Axes Text} \usage{ rotate_x_text(angle = 90, hjust = NULL, vjust = NULL, ...) rotate_y_text(angle = 90, hjust = NULL, vjust = NULL, ...) } \arguments{ \item{angle}{numeric value specifying the rotation angle. Default is 90 for vertical x-axis text.} \item{hjust}{horizontal justification (in [0, 1]).} \item{vjust}{vertical justification (in [0, 1]).} \item{...}{other arguments to pass to the function \code{\link[ggplot2:element]{element_text}()}.} } \description{ Rotate the x-axis text (tick mark labels). \itemize{ \item \code{rotate_x_text}(): Rotate x axis text. \item \code{rotate_y_text}(): Rotate y axis text. } } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot p <- ggboxplot(df, x = "dose", y = "len") p # Vertical x axis text p + rotate_x_text() # Set rotation angle to 45 p + rotate_x_text(45) p + rotate_y_text(45) } ggpubr/man/set_palette.Rd0000644000176200001440000000271013675462644015134 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/set_palette.R \name{set_palette} \alias{set_palette} \alias{change_palette} \alias{color_palette} \alias{fill_palette} \title{Set Color Palette} \usage{ set_palette(p, palette) change_palette(p, palette) color_palette(palette = NULL, ...) fill_palette(palette = NULL, ...) } \arguments{ \item{p}{a ggplot} \item{palette}{Color palette. Allowed values include: \itemize{ \item \strong{Grey color palettes}: "grey" or "gray"; \item \strong{RColorBrewer palettes}, see \code{\link[RColorBrewer:ColorBrewer]{brewer.pal}} and details section. Examples of palette names include: "RdBu", "Blues", "Dark2", "Set2", ...; \item \strong{Custom color palettes}. For example, palette = c("#00AFBB", "#E7B800", "#FC4E07"); \item \strong{ggsci scientific journal palettes}, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". }} \item{...}{other arguments passed to ggplot2 scale_color_xxx() and scale_fill_xxx() functions.} } \description{ \itemize{ \item \code{change_palette(), set_palette()}: Change both color and fill palettes. \item \code{color_palette()}: change color palette only. \item \code{fill_palette()}: change fill palette only. } } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot p <- ggboxplot(df, x = "dose", y = "len", color = "dose") p # Change the color palette set_palette(p, "jco") } \seealso{ \link{get_palette}. } ggpubr/man/geom_exec.Rd0000644000176200001440000000174513115256641014550 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/geom_exec.R \name{geom_exec} \alias{geom_exec} \title{Execute ggplot2 functions} \usage{ geom_exec(geomfunc = NULL, data = NULL, position = NULL, ...) } \arguments{ \item{geomfunc}{a ggplot2 function (e.g.: geom_point)} \item{data}{a data frame to be used for mapping} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{...}{arguments accepted by the function} } \value{ return a plot if geomfunc!=Null or a list(option, mapping) if geomfunc = NULL. } \description{ A helper function used by ggpubr functions to execute any geom_* functions in ggplot2. Useful only when you want to call a geom_* function without carrying about the arguments to put in aes(). Basic users of ggpubr don't need this function. } \examples{ \dontrun{ ggplot() + geom_exec(geom_point, data = mtcars, x = "mpg", y = "wt", size = "cyl", color = "cyl") } } ggpubr/man/ggexport.Rd0000644000176200001440000000341713640143350014445 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggexport.R \name{ggexport} \alias{ggexport} \title{Export ggplots} \usage{ ggexport( ..., plotlist = NULL, filename = NULL, ncol = NULL, nrow = NULL, width = 480, height = 480, pointsize = 12, res = NA, verbose = TRUE ) } \arguments{ \item{...}{list of plots to be arranged into the grid. The plots can be either ggplot2 plot objects, arbitrary gtables or an object of class \code{\link{ggarrange}}.} \item{plotlist}{(optional) list of plots to display.} \item{filename}{File name to create on disk.} \item{ncol}{(optional) number of columns in the plot grid.} \item{nrow}{(optional) number of rows in the plot grid.} \item{width, height}{plot width and height, respectively (example, width = 800, height = 800). Applied only to raster plots: "png", "jpeg", "jpg", "bmp" and "tiff".} \item{pointsize}{the default pointsize of plotted text (example, pointsize = 8). Used only for raster plots.} \item{res}{the resolution in ppi (example, res = 250). Used only for raster plots.} \item{verbose}{logical. If TRUE, show message.} } \description{ Export ggplots } \examples{ \dontrun{ require("magrittr") # Load data data("ToothGrowth") df <- ToothGrowth df$dose <- as.factor(df$dose) # Box plot bxp <- ggboxplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Dot plot dp <- ggdotplot(df, x = "dose", y = "len", color = "dose", palette = "jco") # Density plot dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") # Export to pdf ggarrange(bxp, dp, dens, ncol = 2) \%>\% ggexport(filename = "test.pdf") # Export to png ggarrange(bxp, dp, dens, ncol = 2) \%>\% ggexport(filename = "test.png") } } \author{ Alboukadel Kassambara } ggpubr/man/ggdonutchart.Rd0000644000176200001440000000665313640143350015304 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggdonutchart.R \name{ggdonutchart} \alias{ggdonutchart} \title{Donut chart} \usage{ ggdonutchart( data, x, label = x, lab.pos = c("out", "in"), lab.adjust = 0, lab.font = c(4, "bold", "black"), font.family = "", color = "black", fill = "white", palette = NULL, size = NULL, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable containing values for drawing.} \item{label}{variable specifying the label of each slice.} \item{lab.pos}{character specifying the position for labels. Allowed values are "out" (for outside) or "in" (for inside).} \item{lab.adjust}{numeric value, used to adjust label position when lab.pos = "in". Increase or decrease this value to see the effect.} \item{lab.font}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of label font. For example \emph{lab.font= c(4, "bold", "red")}.} \item{font.family}{character vector specifying font family.} \item{color, fill}{outline and fill colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to be passed to ggpar().} } \description{ Create a donut chart. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Data: Create some data # +++++++++++++++++++++++++++++++ df <- data.frame( group = c("Male", "Female", "Child"), value = c(25, 25, 50)) head(df) # Basic pie charts # ++++++++++++++++++++++++++++++++ ggdonutchart(df, "value", label = "group") # Change color # ++++++++++++++++++++++++++++++++ # Change fill color by group # set line color to white # Use custom color palette ggdonutchart(df, "value", label = "group", fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07") ) # Change label # ++++++++++++++++++++++++++++++++ # Show group names and value as labels labs <- paste0(df$group, " (", df$value, "\%)") ggdonutchart(df, "value", label = labs, fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Change the position and font color of labels ggdonutchart(df, "value", label = labs, lab.pos = "in", lab.font = "white", fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07")) } \seealso{ \code{\link{ggpar}}, \code{\link{ggpie}} } ggpubr/man/ggpie.Rd0000644000176200001440000000656013640143350013703 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggpie.R \name{ggpie} \alias{ggpie} \title{Pie chart} \usage{ ggpie( data, x, label = x, lab.pos = c("out", "in"), lab.adjust = 0, lab.font = c(4, "bold", "black"), font.family = "", color = "black", fill = "white", palette = NULL, size = NULL, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x}{variable containing values for drawing.} \item{label}{variable specifying the label of each slice.} \item{lab.pos}{character specifying the position for labels. Allowed values are "out" (for outside) or "in" (for inside).} \item{lab.adjust}{numeric value, used to adjust label position when lab.pos = "in". Increase or decrease this value to see the effect.} \item{lab.font}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of label font. For example \emph{lab.font= c(4, "bold", "red")}.} \item{font.family}{character vector specifying font family.} \item{color, fill}{outline and fill colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to be passed to ggpar().} } \description{ Create a pie chart. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" \item plot orientation : orientation = c("vertical", "horizontal", "reverse") } } \examples{ # Data: Create some data # +++++++++++++++++++++++++++++++ df <- data.frame( group = c("Male", "Female", "Child"), value = c(25, 25, 50)) head(df) # Basic pie charts # ++++++++++++++++++++++++++++++++ ggpie(df, "value", label = "group") # Change color # ++++++++++++++++++++++++++++++++ # Change fill color by group # set line color to white # Use custom color palette ggpie(df, "value", label = "group", fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07") ) # Change label # ++++++++++++++++++++++++++++++++ # Show group names and value as labels labs <- paste0(df$group, " (", df$value, "\%)") ggpie(df, "value", label = labs, fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Change the position and font color of labels ggpie(df, "value", label = labs, lab.pos = "in", lab.font = "white", fill = "group", color = "white", palette = c("#00AFBB", "#E7B800", "#FC4E07")) } \seealso{ \code{\link{ggpar}}, \code{\link{ggline}} } ggpubr/man/ggscatterhist.Rd0000644000176200001440000001032313675462644015475 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggscatterhist.R \name{ggscatterhist} \alias{ggscatterhist} \alias{print.ggscatterhist} \title{Scatter Plot with Marginal Histograms} \usage{ ggscatterhist( data, x, y, group = NULL, color = "black", fill = NA, palette = NULL, shape = 19, size = 2, linetype = "solid", bins = 30, margin.plot = c("density", "histogram", "boxplot"), margin.params = list(), margin.ggtheme = theme_void(), margin.space = FALSE, main.plot.size = 2, margin.plot.size = 1, title = NULL, xlab = NULL, ylab = NULL, legend = "top", ggtheme = theme_pubr(), print = TRUE, ... ) \method{print}{ggscatterhist}( x, margin.space = FALSE, main.plot.size = 2, margin.plot.size = 1, title = NULL, legend = "top", ... ) } \arguments{ \item{data}{a data frame} \item{x}{an object of class \code{ggscatterhist}.} \item{y}{x and y variables for drawing.} \item{group}{a grouping variable. Change points color and shape by groups if the options \code{color} and \code{shape} are missing. Should be also specified when you want to create a marginal box plot that is grouped.} \item{color}{point colors.} \item{fill}{point colors.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{shape}{point shape. See \code{\link{show_point_shapes}}.} \item{size}{Numeric value (e.g.: size = 1). change the size of points and outlines.} \item{linetype}{line type ("solid", "dashed", ...)} \item{bins}{Number of histogram bins. Defaults to 30. Pick a better value that fit to your data.} \item{margin.plot}{the type of the marginal plot. Default is "hist".} \item{margin.params}{parameters to be applied to the marginal plots.} \item{margin.ggtheme}{the theme of the marginal plot. Default is \code{\link[ggplot2:ggtheme]{theme_void}()}.} \item{margin.space}{logical value. If TRUE, adds space between the main plot and the marginal plot.} \item{main.plot.size}{the width of the main plot. Default is 2.} \item{margin.plot.size}{the width of the marginal plot. Default is 1.} \item{title}{plot main title.} \item{xlab}{character vector specifying x axis labels. Use xlab = FALSE to hide xlab.} \item{ylab}{character vector specifying y axis labels. Use ylab = FALSE to hide ylab.} \item{legend}{specify the legend position. Allowed values include: "top", "bottom", "left", "right".} \item{ggtheme}{the theme to be used for the scatter plot. Default is \code{\link{theme_pubr}()}.} \item{print}{logical value. If \code{TRUE} (default), print the plot.} \item{...}{other arguments passed to the function \code{\link{ggscatter}()}.} } \value{ an object of class \code{ggscatterhist}, which is list of ggplots, including the following elements: \itemize{\item sp: main scatter plot; \item xplot: marginal x-axis plot; \item yplot: marginal y-axis plot. }. User can modify each of plot before printing. } \description{ Create a scatter plot with marginal histograms, density plots or box plots. } \examples{ # Basic scatter plot with marginal density plot ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", color = "#00AFBB", margin.params = list(fill = "lightgray")) # Grouped data ggscatterhist( iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", size = 3, alpha = 0.6, palette = c("#00AFBB", "#E7B800", "#FC4E07"), margin.params = list(fill = "Species", color = "black", size = 0.2) ) # Use boxplot as marginal ggscatterhist( iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", size = 3, alpha = 0.6, palette = c("#00AFBB", "#E7B800", "#FC4E07"), margin.plot = "boxplot", ggtheme = theme_bw() ) # Add vertical and horizontal line to a ggscatterhist plots <- ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", print = FALSE) plots$sp <- plots$sp + geom_hline(yintercept = 3, linetype = "dashed", color = "blue") + geom_vline(xintercept = 6, linetype = "dashed", color = "red") plots } ggpubr/man/theme_transparent.Rd0000644000176200001440000000125313123705573016334 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/theme_transparent.R \name{theme_transparent} \alias{theme_transparent} \title{Create a ggplot with Transparent Background} \usage{ theme_transparent(base_size = 12, base_family = "") } \arguments{ \item{base_size}{base font size} \item{base_family}{base font family} } \description{ Create a ggplot with transparent background. } \examples{ # Create a scatter plot sp <- ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width", color = "Species", palette = "jco", size = 3, alpha = 0.6) sp # Transparent theme sp + theme_transparent() } \seealso{ \code{\link{theme_pubr}} } ggpubr/man/diff_express.Rd0000644000176200001440000000302713640143350015264 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/diff_express.R \docType{data} \name{diff_express} \alias{diff_express} \title{Differential gene expression analysis results} \format{ A data frame with 36028 rows and 5 columns. \describe{ \item{\code{name}}{gene names} \item{\code{baseMean}}{mean expression signal across all samples} \item{\code{log2FoldChange}}{log2 fold change} \item{\code{padj}}{Adjusted p-value}\item{\code{detection_call}}{a numeric vector specifying whether the genes is expressed (value = 1) or not (value = 0).}} } \usage{ data("diff_express") } \description{ Differential gene expression analysis results obtained from comparing the RNAseq data of two different cell populations using DESeq2 } \examples{ data(diff_express) # Default plot ggmaplot(diff_express, main = expression("Group 1" \%->\% "Group 2"), fdr = 0.05, fc = 2, size = 0.4, palette = c("#B31B21", "#1465AC", "darkgray"), genenames = as.vector(diff_express$name), legend = "top", top = 20, font.label = c("bold", 11), font.legend = "bold", font.main = "bold", ggtheme = ggplot2::theme_minimal()) # Add rectangle around labesl ggmaplot(diff_express, main = expression("Group 1" \%->\% "Group 2"), fdr = 0.05, fc = 2, size = 0.4, palette = c("#B31B21", "#1465AC", "darkgray"), genenames = as.vector(diff_express$name), legend = "top", top = 20, font.label = c("bold", 11), label.rectangle = TRUE, font.legend = "bold", font.main = "bold", ggtheme = ggplot2::theme_minimal()) } ggpubr/man/ggballoonplot.Rd0000644000176200001440000001200213640143350015437 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggballoonplot.R \name{ggballoonplot} \alias{ggballoonplot} \title{Ballon plot} \usage{ ggballoonplot( data, x = NULL, y = NULL, size = "value", facet.by = NULL, size.range = c(1, 10), shape = 21, color = "black", fill = "gray", show.label = FALSE, font.label = list(size = 12, color = "black"), rotate.x.text = TRUE, ggtheme = theme_minimal(), ... ) } \arguments{ \item{data}{a data frame. Can be: \itemize{ \item \bold{a standard contingency table} formed by two categorical variables: a data frame with row names and column names. The categories of the first variable are columns and the categories of the second variable are rows. \item \bold{a streched contingency table}: a data frame containing at least three columns corresponding, respectively, to (1) the categories of the first variable, (2) the categories of the second varible, (3) the frequency value. In this case, you should specify the argument x and y in the function \code{ggballoonplot()}}.} \item{x, y}{the column names specifying, respectively, the first and the second variable forming the contingency table. Required only when the data is a stretched contingency table.} \item{size}{point size. By default, the points size reflects the relative magnitude of the value of the corresponding cell (\code{size = "value"}). Can be also numeric (\code{size = 4}).} \item{facet.by}{character vector, of length 1 or 2, specifying grouping variables for faceting the plot into multiple panels. Should be in the data.} \item{size.range}{a numeric vector of length 2 that specifies the minimum and maximum size of the plotting symbol. Default values are \code{size.range = c(1, 10)}.} \item{shape}{points shape. The default value is 21. Alternaive values include 22, 23, 24, 25.} \item{color}{point border line color.} \item{fill}{point fill color. Default is "lightgray". Considered only for points 21 to 25.} \item{show.label}{logical. If TRUE, show the data cell values as point labels.} \item{font.label}{a vector of length 3 indicating respectively the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the color (e.g.: "red") of point labels. For example font.label = c(14, "bold", "red"). To specify only the size and the style, use font.label = c(14, "plain").} \item{rotate.x.text}{logica. If TRUE (default), rotate the x axis text.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments passed to the function \code{\link{ggpar}}} } \description{ Plot a graphical matrix where each cell contains a dot whose size reflects the relative magnitude of the corresponding component. Useful to visualize contingency table formed by two categorical variables. } \examples{ # Define color palette my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF", "#E16462FF", "#FCA636FF", "#F0F921FF") # Standard contingency table #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Read a contingency table: housetasks # Repartition of 13 housetasks in the couple data <- read.delim( system.file("demo-data/housetasks.txt", package = "ggpubr"), row.names = 1 ) data # Basic ballon plot ggballoonplot(data) # Change color and fill ggballoonplot(data, color = "#0073C2FF", fill = "#0073C2FF") # Change color according to the value of table cells ggballoonplot(data, fill = "value")+ scale_fill_gradientn(colors = my_cols) # Change the plotting symbol shape ggballoonplot(data, fill = "value", shape = 23)+ gradient_fill(c("blue", "white", "red")) # Set points size to 8, but change fill color by values # Sow labels ggballoonplot(data, fill = "value", color = "lightgray", size = 10, show.label = TRUE)+ gradient_fill(c("blue", "white", "red")) # Streched contingency table #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Create an Example Data Frame Containing Car x Color data carnames <- c("bmw","renault","mercedes","seat") carcolors <- c("red","white","silver","green") datavals <- round(rnorm(16, mean=100, sd=60),1) car_data <- data.frame(Car = rep(carnames,4), Color = rep(carcolors, c(4,4,4,4) ), Value=datavals ) car_data ggballoonplot(car_data, x = "Car", y = "Color", size = "Value", fill = "Value") + scale_fill_gradientn(colors = my_cols) + guides(size = FALSE) # Grouped frequency table #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: data("Titanic") dframe <- as.data.frame(Titanic) head(dframe) ggballoonplot( dframe, x = "Class", y = "Sex", size = "Freq", fill = "Freq", facet.by = c("Survived", "Age"), ggtheme = theme_bw() )+ scale_fill_gradientn(colors = my_cols) # Hair and Eye Color of Statistics Students data(HairEyeColor) ggballoonplot( as.data.frame(HairEyeColor), x = "Hair", y = "Eye", size = "Freq", ggtheme = theme_gray()) \%>\% facet("Sex") } ggpubr/man/stat_central_tendency.Rd0000644000176200001440000000734313675462644017206 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/stat_central_tendency.R \name{stat_central_tendency} \alias{stat_central_tendency} \title{Add Central Tendency Measures to a GGPLot} \usage{ stat_central_tendency( mapping = NULL, data = NULL, geom = c("line", "point"), position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, type = c("mean", "median", "mode"), ... ) } \arguments{ \item{mapping}{Set of aesthetic mappings created by \code{\link[ggplot2:aes]{aes()}} or \code{\link[ggplot2:aes_]{aes_()}}. If specified and \code{inherit.aes = TRUE} (the default), it is combined with the default mapping at the top level of the plot. You must supply \code{mapping} if there is no plot mapping.} \item{data}{The data to be displayed in this layer. There are three options: If \code{NULL}, the default, the data is inherited from the plot data as specified in the call to \code{\link[ggplot2:ggplot]{ggplot()}}. A \code{data.frame}, or other object, will override the plot data. All objects will be fortified to produce a data frame. See \code{\link[ggplot2:fortify]{fortify()}} for which variables will be created. A \code{function} will be called with a single argument, the plot data. The return value must be a \code{data.frame}, and will be used as the layer data. A \code{function} can be created from a \code{formula} (e.g. \code{~ head(.x, 10)}).} \item{geom}{The geometric object to use display the data} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{na.rm}{If FALSE (the default), removes missing values with a warning. If TRUE silently removes missing values.} \item{show.legend}{logical. Should this layer be included in the legends? \code{NA}, the default, includes if any aesthetics are mapped. \code{FALSE} never includes, and \code{TRUE} always includes. It can also be a named logical vector to finely select the aesthetics to display.} \item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[ggplot2:borders]{borders()}}.} \item{type}{the type of central tendency measure to be used. Possible values include: \code{"mean", "median", "mode"}.} \item{...}{other arguments to pass to \code{\link[ggplot2:geom_path]{geom_line}}.} } \description{ Add central tendency measures (mean, median, mode) to density and histogram plots created using ggplots. Note that, normally, the mode is used for categorical data where we wish to know which is the most common category. Therefore, we can have have two or more values that share the highest frequency. This might be problematic for continuous variable. For continuous variable, we can consider using mean or median as the measures of the central tendency. } \examples{ # Simple density plot data("mtcars") ggdensity(mtcars, x = "mpg", fill = "red") + scale_x_continuous(limits = c(-1, 50)) + stat_central_tendency(type = "mean", linetype = "dashed") # Color by groups data(iris) ggdensity(iris, "Sepal.Length", color = "Species") + stat_central_tendency(aes(color = Species), type = "median", linetype = 2) # Use geom = "point" for central tendency data(iris) ggdensity(iris, "Sepal.Length", color = "Species") + stat_central_tendency( aes(color = Species), type = "median", geom = "point", size = 4 ) # Facet ggdensity(iris, "Sepal.Length", facet.by = "Species") + stat_central_tendency(type = "mean", color = "red", linetype = 2) + stat_central_tendency(type = "median", color = "blue", linetype = 2) } \seealso{ \code{\link{ggdensity}} } ggpubr/man/get_palette.Rd0000644000176200001440000000517513675462644015130 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/get_palette.R \name{get_palette} \alias{get_palette} \title{Generate Color Palettes} \usage{ get_palette(palette = "default", k) } \arguments{ \item{palette}{Color palette. Allowed values include: \itemize{ \item \strong{Grey color palettes}: "grey" or "gray"; \item \strong{RColorBrewer palettes}, see \code{\link[RColorBrewer:ColorBrewer]{brewer.pal}} and details section. Examples of palette names include: "RdBu", "Blues", "Dark2", "Set2", ...; \item \strong{Custom color palettes}. For example, palette = c("#00AFBB", "#E7B800", "#FC4E07"); \item \strong{ggsci scientific journal palettes}, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". }} \item{k}{the number of colors to generate.} } \value{ Returns a vector of color palettes. } \description{ Generate a palette of k colors from ggsci palettes, RColorbrewer palettes and custom color palettes. Useful to extend RColorBrewer and ggsci to support more colors. } \details{ \strong{RColorBrewer palettes}: To display all available color palettes, type this in R:RColorBrewer::display.brewer.all(). Color palette names include: \itemize{ \item \strong{Sequential palettes}, suited to ordered data that progress from low to high. Palette names include: Blues BuGn BuPu GnBu Greens Greys Oranges OrRd PuBu PuBuGn PuRd Purples RdPu Reds YlGn YlGnBu YlOrBr YlOrRd. \item \strong{Diverging palettes}:Gradient colors. Names include: BrBG PiYG PRGn PuOr RdBu RdGy RdYlBu RdYlGn Spectral. \item \strong{Qualitative palettes}: Best suited to representing nominal or categorical data. Names include: Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3. } } \examples{ data("iris") iris$Species2 <- factor(rep(c(1:10), each = 15)) # Generate a gradient of 10 colors ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species2", palette = get_palette(c("#00AFBB", "#E7B800", "#FC4E07"), 10)) # Scatter plot with default color palette ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species") # RColorBrewer color palettes ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species", palette = get_palette("Dark2", 3)) # ggsci color palettes ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species", palette = get_palette("npg", 3)) # Custom color palette ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species", palette = c("#00AFBB", "#E7B800", "#FC4E07")) # Or use this ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", color = "Species", palette = get_palette(c("#00AFBB", "#FC4E07"), 3)) } ggpubr/man/border.Rd0000644000176200001440000000123513115334442014060 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/border.R \name{border} \alias{border} \title{Set ggplot Panel Border Line} \usage{ border(color = "black", size = 0.8, linetype = NULL) } \arguments{ \item{color}{border line color.} \item{size}{numeric value specifying border line size.} \item{linetype}{line type. An integer (0:8), a name (blank, solid, dashed, dotted, dotdash, longdash, twodash). Sess \code{\link{show_line_types}}.} } \description{ Change or set ggplot panel border. } \examples{ # Load data data("ToothGrowth") df <- ToothGrowth # Basic plot p <- ggboxplot(df, x = "dose", y = "len") p # Add border p + border() } ggpubr/man/ggtext.Rd0000644000176200001440000000745213666027726014133 0ustar liggesusers% Generated by roxygen2: do not edit by hand % Please edit documentation in R/ggtext.R \name{ggtext} \alias{ggtext} \title{Text} \usage{ ggtext( data, x = NULL, y = NULL, label = NULL, color = "black", palette = NULL, size = 11, face = "plain", family = "", show.legend = NA, label.select = NULL, repel = FALSE, label.rectangle = FALSE, parse = FALSE, grouping.vars = NULL, position = "identity", ggp = NULL, ggtheme = theme_pubr(), ... ) } \arguments{ \item{data}{a data frame} \item{x, y}{x and y variables for drawing.} \item{label}{the name of the column containing point labels. Can be also a character vector with length = nrow(data).} \item{color}{text font color.} \item{palette}{the color palette to be used for coloring or filling by groups. Allowed values include "grey" for grey color palettes; brewer palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty".} \item{size}{text font size.} \item{face}{text font style. Allowed values are one of c("plain", "bold", "italic", "bold.italic").} \item{family}{character vector specifying font family.} \item{show.legend}{logical. Should text be included in the legends? NA, the default, includes if any aesthetics are mapped. FALSE never includes, and TRUE always includes.} \item{label.select}{can be of two formats: \itemize{ \item a character vector specifying some labels to show. \item a list containing one or the combination of the following components: \itemize{ \item \code{top.up} and \code{top.down}: to display the labels of the top up/down points. For example, \code{label.select = list(top.up = 10, top.down = 4)}. \item \code{criteria}: to filter, for example, by x and y variabes values, use this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% c('A', 'B')")}. } }} \item{repel}{a logical value, whether to use ggrepel to avoid overplotting text labels or not.} \item{label.rectangle}{logical value. If TRUE, add rectangle underneath the text, making it easier to read.} \item{parse}{If \code{TRUE}, the labels will be parsed into expressions and displayed as described in \code{?plotmath}.} \item{grouping.vars}{grouping variables to sort the data by, when the user wants to display the top n up/down labels.} \item{position}{Position adjustment, either as a string, or the result of a call to a position adjustment function.} \item{ggp}{a ggplot. If not NULL, points are added to an existing plot.} \item{ggtheme}{function, ggplot2 theme name. Default value is theme_pubr(). Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), theme_minimal(), theme_classic(), theme_void(), ....} \item{...}{other arguments to be passed to \code{\link{ggpar}}.} } \description{ Add text to a plot. } \details{ The plot can be easily customized using the function ggpar(). Read ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels and position: legend = "right" } } \examples{ # Load data data("mtcars") df <- mtcars df$cyl <- as.factor(df$cyl) df$name <- rownames(df) head(df[, c("wt", "mpg", "cyl")], 3) # Textual annotation # +++++++++++++++++ ggtext(df, x = "wt", y = "mpg", color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), label = "name", repel = TRUE) # Add rectangle around label ggtext(df, x = "wt", y = "mpg", color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), label = "name", repel = TRUE, label.rectangle = TRUE) } \seealso{ \code{\link{ggpar}} } ggpubr/DESCRIPTION0000644000176200001440000000531413675562422013265 0ustar liggesusersPackage: ggpubr Type: Package Title: 'ggplot2' Based Publication Ready Plots Version: 0.4.0 Date: 2020-06-27 Authors@R: c( person("Alboukadel", "Kassambara", role = c("aut", "cre"), email = "alboukadel.kassambara@gmail.com")) Description: The 'ggplot2' package is excellent and flexible for elegant data visualization in R. However the default generated plots requires some formatting before we can send them for publication. Furthermore, to customize a 'ggplot', the syntax is opaque and this raises the level of difficulty for researchers with no advanced R programming skills. 'ggpubr' provides some easy-to-use functions for creating and customizing 'ggplot2'- based publication ready plots. License: GPL-2 LazyData: TRUE Encoding: UTF-8 Depends: R (>= 3.1.0), ggplot2 Imports: ggrepel, grid, ggsci, stats, utils, tidyr, purrr, dplyr (>= 0.7.1), cowplot, ggsignif, scales, gridExtra, glue, polynom, rlang, rstatix (>= 0.6.0), tibble, magrittr Suggests: grDevices, knitr, RColorBrewer, gtable URL: https://rpkgs.datanovia.com/ggpubr/ BugReports: https://github.com/kassambara/ggpubr/issues RoxygenNote: 7.1.0 Collate: 'utilities_color.R' 'utilities_base.R' 'desc_statby.R' 'utilities.R' 'add_summary.R' 'annotate_figure.R' 'as_ggplot.R' 'axis_scale.R' 'background_image.R' 'bgcolor.R' 'border.R' 'compare_means.R' 'create_aes.R' 'diff_express.R' 'facet.R' 'font.R' 'gene_citation.R' 'geom_bracket.R' 'geom_exec.R' 'get_breaks.R' 'get_legend.R' 'get_palette.R' 'ggadd.R' 'ggarrange.R' 'ggballoonplot.R' 'ggpar.R' 'ggbarplot.R' 'ggboxplot.R' 'ggdensity.R' 'ggpie.R' 'ggdonutchart.R' 'stat_conf_ellipse.R' 'stat_chull.R' 'ggdotchart.R' 'ggdotplot.R' 'ggecdf.R' 'ggerrorplot.R' 'ggexport.R' 'gghistogram.R' 'ggline.R' 'ggmaplot.R' 'ggpaired.R' 'ggparagraph.R' 'ggpubr_args.R' 'ggqqplot.R' 'utilities_label.R' 'stat_cor.R' 'stat_stars.R' 'ggscatter.R' 'ggscatterhist.R' 'ggstripchart.R' 'ggsummarystats.R' 'ggtext.R' 'ggtexttable.R' 'ggviolin.R' 'gradient_color.R' 'grids.R' 'reexports.R' 'rotate.R' 'rotate_axis_text.R' 'rremove.R' 'set_palette.R' 'show_line_types.R' 'show_point_shapes.R' 'stat_central_tendency.R' 'stat_compare_means.R' 'stat_mean.R' 'stat_overlay_normal_density.R' 'stat_pvalue_manual.R' 'stat_regline_equation.R' 'text_grob.R' 'theme_pubr.R' 'theme_transparent.R' 'utils-geom-signif.R' 'utils-pipe.R' NeedsCompilation: no Packaged: 2020-06-27 05:43:55 UTC; kassambara Author: Alboukadel Kassambara [aut, cre] Maintainer: Alboukadel Kassambara Repository: CRAN Date/Publication: 2020-06-27 06:20:02 UTC ggpubr/R/0000755000176200001440000000000013675556233011760 5ustar liggesusersggpubr/R/ggexport.R0000644000176200001440000000615513231416105013726 0ustar liggesusers#' @include utilities.R NULL #'Export ggplots #'@description Export ggplots #'@inheritParams ggarrange #'@param ... list of plots to be arranged into the grid. The plots can be either #' ggplot2 plot objects, arbitrary gtables or an object of class #' \code{\link{ggarrange}}. #' @param filename File name to create on disk. #'@param width,height plot width and height, respectively (example, width = 800, #' height = 800). Applied only to raster plots: "png", "jpeg", "jpg", "bmp" and #' "tiff". #'@param pointsize the default pointsize of plotted text (example, pointsize = #' 8). Used only for raster plots. #'@param res the resolution in ppi (example, res = 250). Used only for raster #' plots. #'@param verbose logical. If TRUE, show message. #'@author Alboukadel Kassambara #' @examples #' \dontrun{ #' require("magrittr") #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' df$dose <- as.factor(df$dose) #' #' # Box plot #' bxp <- ggboxplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Dot plot #' dp <- ggdotplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Density plot #' dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") #' #'# Export to pdf #' ggarrange(bxp, dp, dens, ncol = 2) %>% #' ggexport(filename = "test.pdf") #' #' # Export to png #' ggarrange(bxp, dp, dens, ncol = 2) %>% #' ggexport(filename = "test.png") #' } #' #'@export ggexport <- function(..., plotlist = NULL, filename = NULL, ncol = NULL, nrow = NULL, width = 480, height = 480, pointsize = 12, res = NA, verbose = TRUE) { # File name and extension if(is.null(filename)) filename <- .collapse(.random_string(), ".pdf", sep = "") file.ext <- .file_ext(filename) # Device dev <- .device(filename) dev.opts <- list(file = filename) if(file.ext %in% c("ps", "eps")) dev.opts <- dev.opts %>% .add_item(onefile = FALSE, horizontal = FALSE) else if(file.ext %in% c("png", "jpeg", "jpg", "bmp", "tiff")) dev.opts <- dev.opts %>% .add_item(width = width, height = height, pointsize = pointsize, res = res) if(file.ext %in% c("pdf")){ if(!missing(width)) dev.opts <- dev.opts %>% .add_item(width = width) if(!missing(height)) dev.opts <- dev.opts %>% .add_item(height = height) if(!missing(pointsize)) dev.opts <- dev.opts %>% .add_item(pointsize = pointsize) } #width=800, height=800, pointsize=8, res=250 # Plots plots <- c(list(...), plotlist) nb.plots <- length(plots) if(nb.plots == 1) plots <- plots[[1]] else if(!is.null(ncol) | !is.null(nrow)){ plots <- ggarrange(plotlist = plots, ncol = ncol, nrow = nrow) } if(inherits(plots, "ggarrange") & .is_list(plots)) nb.plots <- length(plots) if(nb.plots > 1 & file.ext %in% c("eps", "ps", "png", "jpeg", "jpg", "tiff", "bmp", "svg")){ filename <- gsub(paste0(".", file.ext), paste0("%03d.",file.ext), filename) dev.opts$file <- filename print(filename) } do.call(dev, dev.opts) utils::capture.output(print(plots)) utils::capture.output(grDevices::dev.off()) message("file saved to ", filename) } ggpubr/R/ggerrorplot.R0000644000176200001440000001453513666557257014470 0ustar liggesusers#'@include utilities.R ggpar.R NULL #'Visualizing Error #'@description Visualizing error. #'@inheritParams ggboxplot #'@inheritParams ggplot2::geom_errorbar #'@param ci the percent range of the confidence interval (default is 0.95). #'@param x,y x and y variables for drawing. #'@param numeric.x.axis logical. If TRUE, x axis will be treated as numeric. Default is FALSE. #'@param order character vector specifying the order of items. Considered only when x axis is a factor variable. #'@param color,fill outline and fill colors. #'@param desc_stat descriptive statistics to be used for visualizing errors. Default value is "mean_se". #'Allowed values are one of , "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", #'"median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"; see \code{\link{desc_statby}} for more details. #'@param ... other arguments to be passed to be passed to ggpar(). #'@details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}}, \code{\link{ggline}} #' @examples #' #' # Data: ToothGrowth data set we'll be used. #' df<- ToothGrowth #' head(df, 10) #' #' # Plot mean_se #' ggerrorplot(df, x = "dose", y = "len") #' #' #' # Change desc_stat to mean_sd #' # (other values include: mean_sd, mean_ci, median_iqr, ....) #' # Add labels #' ggerrorplot(df, x = "dose", y = "len", #' desc_stat = "mean_sd") #' #' # Change error.plot to "errorbar" and add mean point #' # Visualize the mean of each group #' ggerrorplot(df, x = "dose", y = "len", #' add = "mean", error.plot = "errorbar") #' #' # Horizontal plot #' ggerrorplot(df, x = "dose", y = "len", #' add = "mean", error.plot = "errorbar", #' orientation = "horizontal") #' #' #' # Change error.plot to "crossbar" #' ggerrorplot(df, x = "dose", y = "len", #' error.plot = "crossbar", width = 0.5) #' #' #' # Add jitter points and errors (mean_se) #' ggerrorplot(df, x = "dose", y = "len", #' add = "jitter") #' #' # Add dot and errors (mean_se) #' ggerrorplot(df, x = "dose", y = "len", #' add = "dotplot") #' #' # Multiple groups with error bars and jitter point #' ggerrorplot(df, x = "dose", y = "len", #' color = "supp", palette = "Paired", #' error.plot = "pointrange", #' position = position_dodge(0.5)) # #' #' #' @export ggerrorplot <- function(data, x, y, desc_stat = "mean_se", numeric.x.axis = FALSE, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, size = NULL, width = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "pointrange", ci = 0.95, position = position_dodge(), ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( desc_stat = desc_stat, numeric.x.axis = numeric.x.axis, combine = combine, merge = merge, color = color, fill = fill, palette = palette, size = size, width = width, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, ci = ci, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggerrorplot_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggerrorplot_core <- function(data, x, y, desc_stat = "mean_se", numeric.x.axis = FALSE, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, size = NULL, width = NULL, select = NULL, order = NULL, add = "none", add.params = list(), error.plot = "pointrange", ci = 0.95, position = position_dodge(0.8), ggtheme = theme_pubr(), ...) { if(numeric.x.axis){} else{ if(!is.null(order)) data[, x] <- factor(data[, x], levels = order) else if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) } error.plot = error.plot[1] if("none" %in% add) add <- "none" # static summaries for computing mean/median and adding errors if(is.null(add.params$fill)) add.params$fill <- "white" add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) add <- setdiff(add, desc_stat) if(inherits(position, "PositionDodge") & is.null(position$width)) position$width = 0.8 p <- ggplot(data, create_aes(list(x = x, y = y))) add.params <- add.params %>% .add_item(add = add, data = data, error.plot = error.plot, ci = ci, position = position, p = p) p <- do.call(ggadd, add.params) # Main plot add.params <- add.params %>% .add_item(color = color, fill = fill, size = size, width = width, add = desc_stat, p = p) p <- do.call(ggadd, add.params) p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/ggsummarystats.R0000644000176200001440000002072713675446713015206 0ustar liggesusers#' @include utilities.R ggpar.R #' @importFrom rstatix df_split_by get_summary_stats NULL #' GGPLOT with Summary Stats Table Under the Plot #' #' @description Create a ggplot with summary stats (n, median, mean, iqr) table #' under the plot. Read more: \href{https://www.datanovia.com/en/blog/how-to-create-a-beautiful-plots-in-r-with-summary-statistics-labels/}{How to Create a Beautiful Plots in R with Summary Statistics Labels}. #' @inheritParams ggboxplot #' @param digits integer indicating the number of decimal places (round) to be #' used. #' @param position Position adjustment, either as a string, or the result of a #' call to a position adjustment function. #' @param summaries summary stats to display in the table. Possible values are #' those returned by the function \code{\link[rstatix]{get_summary_stats}()}, #' including: \code{"n", "min", "max", "median", "q1", "q2", "q3", "mad", #' "mean", "sd", "se", "ci"}. #' @param ggfunc a ggpubr function, including: ggboxplot, ggviolin, ggdotplot, #' ggbarplot, ggline, etc. Can be any other ggplot function that accepts the #' following arguments \code{data, x, color, fill, palette, ggtheme, #' facet.by}. #' @param free.panels logical. If TRUE, create free plot panels when the #' argument \code{facet.by} is specified. #'@param labeller Character vector. An alternative to the argument #' \code{short.panel.labs}. Possible values are one of "label_both" (panel #' labelled by both grouping variable names and levels) and "label_value" #' (panel labelled with only grouping levels). #' @param ... other arguments passed to the function \code{\link{ggpar}()}, #' \code{\link{facet}()} or \code{\link{ggarrange}()} when printing the plot. #' @examples #' # Data preparation #' #:::::::::::::::::::::::::::::::::::::::::::::::: #' data("ToothGrowth") #' df <- ToothGrowth #' df$dose <- as.factor(df$dose) #' # Add random QC column #' set.seed(123) #' qc <- rep(c("pass", "fail"), 30) #' df$qc <- as.factor(sample(qc, 60)) #' # Inspect the data #' head(df) #' #' #' # Basic summary stats #' #:::::::::::::::::::::::::::::::::::::::::::::::: #' # Compute summary statistics #' summary.stats <- df %>% #' group_by(dose) %>% #' get_summary_stats(type = "common") #' summary.stats #' #' # Visualize summary table #' ggsummarytable( #' summary.stats, x = "dose", y = c("n", "median", "iqr"), #' ggtheme = theme_bw() #' ) #' #' #' # Create plots with summary table under the plot #' #:::::::::::::::::::::::::::::::::::::::::::::::: #' # Basic plot #' ggsummarystats( #' df, x = "dose", y = "len", #' ggfunc = ggboxplot, add = "jitter" #' ) #' #' # Color by groups #' ggsummarystats( #' df, x = "dose", y = "len", #' ggfunc = ggboxplot, add = "jitter", #' color = "dose", palette = "npg" #' ) #' #' # Create a barplot #' ggsummarystats( #' df, x = "dose", y = "len", #' ggfunc = ggbarplot, add = c("jitter", "median_iqr"), #' color = "dose", palette = "npg" #' ) #' #' # Facet #' #:::::::::::::::::::::::::::::::::::::::::::::::: #' # Specify free.panels = TRUE for free panels #' ggsummarystats( #' df, x = "dose", y = "len", #' ggfunc = ggboxplot, add = "jitter", #' color = "dose", palette = "npg", #' facet.by = c("supp", "qc"), #' labeller = "label_both" #' ) #' #' @describeIn ggsummarystats Create a table of summary stats #' @export ggsummarytable <- function(data, x, y, digits = 0, size = 3, color = "black", palette = NULL, facet.by = NULL, labeller = "label_value", position = "identity", ggtheme = theme_pubr(), ...) { if (missing(ggtheme) & !is.null(facet.by)) { ggtheme <- theme_pubr(border = TRUE) } if (is.null(names(y))) names(y) <- y df <- as.data.frame(data) df$x <- df[[x]] if (color %in% colnames(df)) { if (missing(position)) position <- position_dodge(0.8) group <- color } else { group <- 1 } df <- df %>% mutate_if(is.double, round, digits) %>% unite(col = "label", !!!syms(y), sep = "\n") %>% mutate(y = paste(names(y), collapse = "\n")) p <- ggplot(data, aes(x, y)) + geom_exec( geom_text, data = df, label = "label", size = size, color = color, group = group, position = position ) p <- ggpar(p, ggtheme = ggtheme, palette = palette, xlab = x, ...) if (!is.null(facet.by)) p <- facet(p, facet.by = facet.by, labeller = labeller, ...) p + rremove("ylab") } #' @describeIn ggsummarystats Create a ggplot with a summary stat table under the plot. #' @export ggsummarystats <- function(data, x, y, summaries = c("n", "median", "iqr"), ggfunc = ggboxplot, color = "black", fill = "white", palette = NULL, facet.by = NULL, free.panels = FALSE, labeller = "label_value", heights = c(0.80, 0.20), ggtheme = theme_pubr(), ...) { if (missing(ggtheme) & !is.null(facet.by)) { ggtheme <- theme_pubr(border = TRUE) } env <- c(as.list(environment()), list(...)) if (is.null(facet.by)) { results <- do.call(ggsummarystats_core, env) } else { if (free.panels) { results <- do.call(ggsummarystats_free_facet, env) } else { results <- do.call(ggsummarystats_core, env) } } results } #' @method print ggsummarystats #' @param x an object of class \code{ggsummarystats}. #' @param heights a numeric vector of length 2, specifying the heights of the #' main and the summary table, respectively. #' @rdname ggsummarystats #' @export print.ggsummarystats <- function(x, heights = c(0.80, 0.20), ...){ res <- ggarrange(plotlist = x, heights = heights, align = "v", ncol = 1) print(res) invisible(res) } #' @method print ggsummarystats_list #' @param legend character specifying legend position. Allowed values are one of #' c("top", "bottom", "left", "right", "none"). To remove the legend use #' legend = "none". #' @param x a list of \code{ggsummarystats}. #' @rdname ggsummarystats #' @export print.ggsummarystats_list <- function(x, heights = c(0.80, 0.20), legend = NULL, ...){ # Create a common legend, if legend exists legend.grob <- get_legend(x[[1]]$main.plot, position = legend) has.legend <- !is.null(legend.grob) remove_legend <- function(ggsummarystats){ ggsummarystats[[1]] <- ggsummarystats[[1]] + theme(legend.position = "none") ggsummarystats } if(has.legend){ x <- map(x, remove_legend) } # Combining each ggsummarystats x <- x %>% map( function(x, ...) {ggarrange(plotlist = x, ...)}, heights = heights, align = "v", ncol = 1 ) # Combine the list of ggsumarystats res <- ggarrange(plotlist = x, legend = legend, legend.grob = legend.grob) # Add legend if exist print(res) invisible(res) } ggsummarystats_core <- function(data, x, y, summaries = c("n", "median", "iqr"), ggfunc = ggboxplot, color = "black", fill = "white", palette = NULL, ggtheme = theme_pubr(), heights = c(0.80, 0.20), facet.by = NULL, free.panels = FALSE, labeller = "label_value", ...) { groups <- c(x, color, fill, facet.by) %>% unique() %>% intersect(colnames(data)) summary.stats <- data %>% group_by(!!!syms(groups)) %>% get_summary_stats(!!y) # No need to repeat the panel label on the table table.facet.by <- facet.by if(free.panels) table.facet.by <- NULL main.plot <- ggfunc( data, x = x, y = y, color = color, fill = fill, palette = palette, ggtheme = ggtheme, facet.by = facet.by, labeller = labeller, ... ) summary.plot <- ggsummarytable( summary.stats, x = x, y = summaries, color = color, palette = palette, legend = "none", ggtheme = ggtheme, facet.by = table.facet.by, labeller = labeller ) + clean_table_theme() plots <- list( main.plot = main.plot, summary.plot = summary.plot ) class(plots) <- c("ggsummarystats", "list") plots } ggsummarystats_free_facet <- function(data, x, y, facet.by, labeller = "label_value", ...) { labeller_func <- switch (labeller, label_both = rstatix::df_label_both, label_value = rstatix::df_label_value ) groups <- facet.by data.grouped <- data %>% df_split_by(vars = groups, label_col = "panel", labeller = labeller_func) %>% mutate( plots = map(data, ggsummarystats_core, x = x, y = y, facet.by = "panel", ...) ) plots <- data.grouped$plots names(plots) <- data.grouped$panel class(plots) <- c("ggsummarystats_list", "list") plots } ggpubr/R/ggpie.R0000644000176200001440000001655513666560514013207 0ustar liggesusers#'@include utilities.R ggpar.R NULL #'Pie chart #'@description Create a pie chart. #'@inheritParams ggboxplot #'@inheritParams ggplot2::geom_errorbar #'@param x variable containing values for drawing. #'@param label variable specifying the label of each slice. #'@param lab.pos character specifying the position for labels. Allowed values #' are "out" (for outside) or "in" (for inside). #'@param lab.adjust numeric value, used to adjust label position when lab.pos = #' "in". Increase or decrease this value to see the effect. #'@param lab.font a vector of length 3 indicating respectively the size (e.g.: #' 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the #' color (e.g.: "red") of label font. For example \emph{lab.font= c(4, "bold", #' "red")}. #'@param font.family character vector specifying font family. #'@param color,fill outline and fill colors. #'@param ... other arguments to be passed to be passed to ggpar(). #'@details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, #' ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette #' = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels #' and position: legend = "right" \item plot orientation : orientation = #' c("vertical", "horizontal", "reverse") } #'@seealso \code{\link{ggpar}}, \code{\link{ggline}} #' @examples #' #' # Data: Create some data #' # +++++++++++++++++++++++++++++++ #' #' df <- data.frame( #' group = c("Male", "Female", "Child"), #' value = c(25, 25, 50)) #' #' head(df) #' #' #' # Basic pie charts #' # ++++++++++++++++++++++++++++++++ #' #' ggpie(df, "value", label = "group") #' #' #' # Change color #' # ++++++++++++++++++++++++++++++++ #' #' # Change fill color by group #' # set line color to white #' # Use custom color palette #' ggpie(df, "value", label = "group", #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07") ) #' #' #' # Change label #' # ++++++++++++++++++++++++++++++++ #' #' # Show group names and value as labels #' labs <- paste0(df$group, " (", df$value, "%)") #' ggpie(df, "value", label = labs, #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' # Change the position and font color of labels #' ggpie(df, "value", label = labs, #' lab.pos = "in", lab.font = "white", #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' #' #'@export ggpie <- function( data, x, label = x, lab.pos = c("out", "in"), lab.adjust = 0, lab.font = c(4, "bold", "black"), font.family = "", color = "black", fill = "white", palette = NULL, size = NULL, ggtheme = theme_pubr(), ... ) { lab.pos <- match.arg(lab.pos) lab.font <- .parse_font(lab.font) %>% .check_pie_labfont() if(length(label) > 1 & length(label) != nrow(data)) stop("label should be of the same length as data") else if(length(label) > 1){ # 1. Add label column data <- data %>% dplyr::mutate(.label. = label) label <- ".label." } # We should order the data in desc order. Because, # in stacked bar plot the order of factor levels are reversed # Very important to have the label in the right place group.vars <- intersect(c(fill, color), names(data)) if(length(group.vars) != 0){ group.val <- dplyr::pull(data, group.vars[1]) data <- data %>% dplyr::arrange(dplyr::desc(group.val)) } # Label y coordinates when placed inside slices .x <- dplyr::pull(data, x) data <- data %>% dplyr::mutate( .lab.ypos. = cumsum(.x) -0.5*.x -lab.adjust ) p <- ggplot(data, create_aes(list(x = "1", y = x))) + geom_exec( geom_bar, data, stat = "identity", fill = fill, color = color, size = size ) p <- ggpar( p, palette = palette, ggtheme = ggtheme, font.family = font.family, ... ) + coord_polar( theta = "y", start = 0 ) + .remove_axis() # Annotate pie slice #::::::::::::::::::::::::::::::::::: if(!is.null(label)){ # Label each slice at the middle of the slice if(lab.pos == "out"){ p <- p + scale_y_continuous( breaks = cumsum(.x) - .x/2, labels = dplyr::pull(data, label) ) } # Compute the cumulative sum as label ypos if(lab.pos == "in"){ p <- p + geom_text( create_aes(list(y = ".lab.ypos.", label = label)), size = lab.font$size, fontface = lab.font$face, colour = lab.font$color, family = font.family )+ clean_theme() } } p } # Old version ggpie_1 <- function(data, x, label = NULL, lab.pos = c("out", "in"), lab.adjust = 0, lab.font = c(4, "bold", "black"), font.family = "", color = "black", fill = "white", palette = NULL, size = NULL, ggtheme = theme_classic(), ...) { lab.pos <- match.arg(lab.pos) lab.font <- .parse_font(lab.font) # data <- data[order(data[, x]), , drop = FALSE] if(fill %in% colnames(data)) { fill_d <- dplyr::pull(data, fill) data[, fill] <- factor(fill_d, levels = rev(fill_d)) } if(is.null(lab.font)) lab.font <- list(size = 5, face = "bold", color = "black") p <- ggplot(data, create_aes(list(x = 1, y = x)))+ .geom_exec(geom_bar, data, stat = "identity", fill = fill, color = color, size = size) p <- ggpar(p, palette = palette, ggtheme = ggtheme, font.family = font.family, ...) p <- p + coord_polar(theta = "y", start = 0) + theme( axis.title = element_blank(), axis.text.y = element_blank(), axis.line = element_blank(), # panel.border = element_blank(), # panel.grid=element_blank(), axis.ticks = element_blank() ) # label each slice at the midle of the slice if(!is.null(label)){ if(label[1] %in% names(data)) label <- data[, label] if(lab.pos == "out"){ p <- p + scale_y_continuous( breaks = cumsum(data[, x]) - data[, x]/2, labels = label ) } if(lab.pos == "in"){ df <- data y <- df[, x] df[, x] <- (y/(length(y)-lab.adjust)) + c(0, cumsum(y)[-length(y)]) lab.font$size <- ifelse(is.null(lab.font$size), 5, lab.font$size) lab.font$color <- ifelse(is.null(lab.font$color), "black", lab.font$color) lab.font$face <- ifelse(is.null(lab.font$ace), "bold", lab.font$face) p <- p + .geom_exec(geom_text, data = df, x = 1, y = x, label = label, size = lab.font$size, fontface = lab.font$face, colour = lab.font$color, family = font.family )+ theme( axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank()) } } p } # Remove axis elements .remove_axis <- function(){ theme( axis.title = element_blank(), axis.text.y = element_blank(), axis.line = element_blank(), # panel.border = element_blank(), # panel.grid=element_blank(), axis.ticks = element_blank() ) } # Check labels font .check_pie_labfont <- function(lab.font){ lab.font$size <- ifelse(is.null(lab.font$size), 3.9, lab.font$size) lab.font$color <- ifelse(is.null(lab.font$color), "black", lab.font$color) lab.font$face <- ifelse(is.null(lab.font$ace), "plain", lab.font$face) lab.font } ggpubr/R/gradient_color.R0000644000176200001440000000371013120754044015060 0ustar liggesusers#' @include utilities_color.R NULL #'Set Gradient Color #' #' @description Change gradient color. #' \itemize{ #' \item \code{gradient_color()}: Change gradient color. #' \item \code{gradient_fill()}: Change gradient fill. #' } #' @param palette the color palette to be used for coloring or filling by #' groups. Allowed values include "grey" for grey color palettes; brewer #' palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", #' "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", #' "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and #' "rickandmorty". Can be also a numeric vector; in this #' case a basic color palette is created using the function #' \link[grDevices]{palette}. #' #' @seealso \link{set_palette}. #' #' #'@examples #' df <- mtcars #' p <- ggscatter(df, x = "wt", y = "mpg", #' color = "mpg") #' #' # Change gradient color #' # Use one custom color #' p + gradient_color("red") #' #' # Two colors #' p + gradient_color(c("blue", "red")) #' #' # Three colors #' p + gradient_color(c("blue", "white", "red")) #' #' # Use RColorBrewer palette #' p + gradient_color("RdYlBu") #' #' # Use ggsci color palette #' p + gradient_color("npg") #' @rdname gradient_color #' @export gradient_color <- function(palette){ if(.is_col_palette(palette)) palette <- .get_pal(palette, k = 3) n_palette <- length(palette) if(n_palette == 1) { palette <- grDevices::colorRampPalette(c("white", palette))(10) palette <- palette[c(1, 10)] n_palette <- 2 } ggplot2::scale_color_gradientn(colours = palette) } #' @rdname gradient_color #' @export gradient_fill <- function(palette){ if(.is_col_palette(palette)) palette <- .get_pal(palette, k = 3) n_palette <- length(palette) if(n_palette == 1) { palette <- grDevices::colorRampPalette(c("white", palette))(10) palette <- palette[c(1, 10)] n_palette <- 2 } ggplot2::scale_fill_gradientn(colours = palette) } ggpubr/R/stat_conf_ellipse.R0000644000176200001440000000671113675551565015610 0ustar liggesusers#' @include utilities.R NULL #' Plot confidence ellipses. #' @description Plot confidence ellipses around barycenters. The method for #' computing confidence ellipses has been modified from \code{FactoMineR::coord.ellipse()}. #' @inheritParams ggplot2::layer #' @inheritParams ggplot2::stat_ellipse #' @param level confidence level used to construct the ellipses. By #' default, 0.95. #' @param npoint number of points used to draw the ellipses. #' @param bary logical value. If TRUE, the coordinates of the ellipse around the #' barycentre of individuals are calculated. #' @seealso \code{\link{stat_conf_ellipse}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' #' # scatter plot with confidence ellipses #' ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ #' stat_conf_ellipse(aes(color = cyl)) #' #' ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ #' stat_conf_ellipse(aes(color = cyl, fill = cyl), alpha = 0.1, geom = "polygon") #' #' @export stat_conf_ellipse <- function(mapping = NULL, data = NULL, geom = "path", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, level = 0.95, npoint = 100, bary = TRUE, ...) { layer( stat = StatConfEllipse, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, level = level, npoint = npoint, bary = bary, ...) ) } StatConfEllipse <- ggproto("StatConfEllipse", Stat, required_aes = c("x", "y"), compute_group = function(data, scales, params, level = 0.95, npoint = 100, bary = TRUE) { .coord_ellipse (data$x, data$y, level = level, npoint = npoint, bary = bary) } ) # Compute confidence ellipses. # x,y x and y variables for drawing. # level confidence level used to construct the ellipses. By # default, 0.95. # npoint number of points used to draw the ellipses. # bary logical value. If TRUE, the coordinates of the ellipse around the # barycentre of individuals are calculated. .coord_ellipse <- function ( x, y, level = 0.95, npoint = 100, bary = FALSE) { .ellipse <- function(x, scale = c(1, 1), centre = c(0, 0), level = 0.95, t = sqrt(stats::qchisq(level, 2)), which = c(1, 2), npoints = 100) { names <- c("x", "y") if (is.matrix(x)) { xind <- which[1] yind <- which[2] r <- x[xind, yind] if (missing(scale)) { scale <- sqrt(c(x[xind, xind], x[yind, yind])) if (scale[1] > 0) r <- r/scale[1] if (scale[2] > 0) r <- r/scale[2] } if (!is.null(dimnames(x)[[1]])) names <- dimnames(x)[[1]][c(xind, yind)] } else r <- x r <- min(max(r, -1), 1) d <- acos(r) a <- seq(0, 2 * pi, len = npoints) matrix(c(t * scale[1] * cos(a + d/2) + centre[1], t * scale[2] * cos(a - d/2) + centre[2]), npoints, 2, dimnames = list(NULL, names)) } center <- c(mean(x, na.rm = TRUE), mean(y, na.rm = TRUE)) tab <- data.frame(x = x, y = y) mat.cov <- stats::cov(tab) if (bary) mat.cov = mat.cov/nrow(tab) res <- .ellipse(mat.cov, centre = center, level = level, npoints = npoint) return(res) } ggpubr/R/stat_chull.R0000644000176200001440000000240013023301500014205 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Plot convex hull of a set of points #' @description Plot convex hull of a set of points. #' @inheritParams ggplot2::layer #' @inheritParams ggplot2::stat_ellipse #' @seealso \code{\link{ggpar}}, \code{\link{ggscatter}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' #' # scatter plot with convex hull #' ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ #' stat_chull(aes(color = cyl)) #' #' ggscatter(df, x = "wt", y = "mpg", color = "cyl")+ #' stat_chull(aes(color = cyl, fill = cyl), alpha = 0.1, geom = "polygon") #' #' @export stat_chull <- function(mapping = NULL, data = NULL, geom = "path", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { layer( stat = StatChull, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, ...) ) } # Convex ellipse StatChull <- ggproto("StatChull", Stat, compute_group = function(data, scales) { data[chull(data$x, data$y), , drop = FALSE] }, required_aes = c("x", "y") ) ggpubr/R/ggscatter.R0000644000176200001440000004706213675551465014101 0ustar liggesusers#' @include utilities.R ggpar.R stat_chull.R stat_conf_ellipse.R stat_stars.R stat_cor.R NULL #' Scatter plot #' @description Create a scatter plot. #' @inheritParams ggboxplot #' @inheritParams facet #' @inheritParams ggpar #' @param x,y x and y variables for drawing. #' @param color,fill point colors. #' @param shape point shape. See \code{\link{show_point_shapes}}. #' @param point logical value. If TRUE, show points. #' @param rug logical value. If TRUE, add marginal rug. #' @param add allowed values are one of "none", "reg.line" (for adding linear #' regression line) or "loess" (for adding local regression fitting). #' @param add.params parameters (color, size, linetype) for the argument 'add'; #' e.g.: add.params = list(color = "red"). #' @param conf.int logical value. If TRUE, adds confidence interval. #' @param conf.int.level Level controlling confidence region. Default is 95\%. #' Used only when add != "none" and conf.int = TRUE. #' @param fullrange should the fit span the full range of the plot, or just the #' data. Used only when add != "none". #' @param ellipse logical value. If TRUE, draws ellipses around points. #' @param ellipse.level the size of the concentration ellipse in normal #' probability. #' @param ellipse.type Character specifying frame type. Possible values are #' \code{"convex"}, \code{"confidence"} or types supported by #' \code{\link[ggplot2]{stat_ellipse}()} including one of \code{c("t", "norm", #' "euclid")} for plotting concentration ellipses. #' #' \itemize{ \item \code{"convex"}: plot convex hull of a set o points. \item #' \code{"confidence"}: plot confidence ellipses arround group mean points as #' \code{FactoMineR::coord.ellipse()}. \item \code{"t"}: #' assumes a multivariate t-distribution. \item \code{"norm"}: assumes a #' multivariate normal distribution. \item \code{"euclid"}: draws a circle with #' the radius equal to level, representing the euclidean distance from the #' center. This ellipse probably won't appear circular unless #' \code{\link[ggplot2]{coord_fixed}()} is applied.} #' @param ellipse.alpha Alpha for ellipse specifying the transparency level of #' fill color. Use alpha = 0 for no fill color. #' @param ellipse.border.remove logical value. If TRUE, remove ellipse border lines. #' @param mean.point logical value. If TRUE, group mean points are added to the #' plot. #' @param mean.point.size numeric value specifying the size of mean points. #' @param star.plot logical value. If TRUE, a star plot is generated. #' @param star.plot.lty,star.plot.lwd line type and line width (size) for star #' plot, respectively. #' @param label the name of the column containing point labels. Can be also a #' character vector with length = nrow(data). #' @param font.label a vector of length 3 indicating respectively the size #' (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and #' the color (e.g.: "red") of point labels. For example \emph{font.label = #' c(14, "bold", "red")}. To specify only the size and the style, use #' font.label = c(14, "plain"). #' @param font.family character vector specifying font family. #' @param label.select character vector specifying some labels to show. #' @param repel a logical value, whether to use ggrepel to avoid overplotting #' text labels or not. #' @param label.rectangle logical value. If TRUE, add rectangle underneath the #' text, making it easier to read. #' @param parse If \code{TRUE}, the labels will be parsed into expressions and #' displayed as described in \code{?plotmath}. #' @param cor.coef logical value. If TRUE, correlation coefficient with the #' p-value will be added to the plot. #' @param cor.coeff.args a list of arguments to pass to the function #' \code{\link{stat_cor}} for customizing the displayed correlation #' coefficients. For example: \code{cor.coeff.args = list(method = "pearson", #' label.x.npc = "right", label.y.npc = "top")}. #' @param cor.method method for computing correlation coefficient. Allowed #' values are one of "pearson", "kendall", or "spearman". #' @param cor.coef.coord numeric vector, of length 2, specifying the x and y #' coordinates of the correlation coefficient. Default values are NULL. #' @param cor.coef.size correlation coefficient text font size. #' @param ggp a ggplot. If not NULL, points are added to an existing plot. #' @param show.legend.text logical. Should text be included in the legends? NA, #' the default, includes if any aesthetics are mapped. FALSE never includes, #' and TRUE always includes. #' @param ... other arguments to be passed to \code{\link[ggplot2]{geom_point}} #' and \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{stat_cor}}, \code{\link{stat_stars}}, \code{\link{stat_conf_ellipse}} and \code{\link{ggpar}}. #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' head(df[, c("wt", "mpg", "cyl")], 3) #' #' # Basic plot #' # +++++++++++++++++++++++++++ #' ggscatter(df, x = "wt", y = "mpg", #' color = "black", shape = 21, size = 3, # Points color, shape and size #' add = "reg.line", # Add regressin line #' add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line #' conf.int = TRUE, # Add confidence interval #' cor.coef = TRUE, # Add correlation coefficient. see ?stat_cor #' cor.coeff.args = list(method = "pearson", label.x = 3, label.sep = "\n") #' ) #' #' # loess method: local regression fitting #' ggscatter(df, x = "wt", y = "mpg", #' add = "loess", conf.int = TRUE) #' #' #' # Control point size by continuous variable values ("qsec") #' ggscatter(df, x = "wt", y = "mpg", #' color = "#00AFBB", size = "qsec") #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' # Use custom color palette #' # Add marginal rug #' ggscatter(df, x = "wt", y = "mpg", color = "cyl", #' palette = c("#00AFBB", "#E7B800", "#FC4E07") ) #' #' #' #' #' # Add group ellipses and mean points #' # Add stars #' # +++++++++++++++++++ #' ggscatter(df, x = "wt", y = "mpg", #' color = "cyl", shape = "cyl", #' palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' ellipse = TRUE, mean.point = TRUE, #' star.plot = TRUE) #' #' #' # Textual annotation #' # +++++++++++++++++ #' df$name <- rownames(df) #' ggscatter(df, x = "wt", y = "mpg", #' color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' label = "name", repel = TRUE) #' #' #' @export ggscatter <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "lightgray", palette = NULL, shape = 19, size = 2, point = TRUE, rug = FALSE, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "reg.line", "loess"), add.params = list(), conf.int = FALSE, conf.int.level = 0.95, fullrange = FALSE, ellipse = FALSE, ellipse.level = 0.95, ellipse.type = "norm", ellipse.alpha = 0.1, ellipse.border.remove = FALSE, mean.point = FALSE, mean.point.size = ifelse(is.numeric(size), 2*size, size), star.plot = FALSE, star.plot.lty = 1, star.plot.lwd = NULL, label = NULL, font.label = c(12, "plain"), font.family = "", label.select = NULL, repel = FALSE, label.rectangle = FALSE, parse = FALSE, cor.coef = FALSE, cor.coeff.args = list(), cor.method = "pearson", cor.coef.coord = c(NULL, NULL), cor.coef.size = 4, ggp = NULL, show.legend.text = NA, ggtheme = theme_pubr(), ...){ add <- match.arg(add) # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, shape = shape, size = size, point = point, rug = rug, add = add, add.params = add.params, conf.int = conf.int, conf.int.level = conf.int.level, fullrange = fullrange, ellipse = ellipse, ellipse.level = ellipse.level, ellipse.type = ellipse.type, ellipse.alpha = ellipse.alpha, ellipse.border.remove = ellipse.border.remove, mean.point = mean.point, mean.point.size = mean.point.size, star.plot = star.plot, star.plot.lty = star.plot.lty, star.plot.lwd = star.plot.lwd, label = label, font.label = font.label, font.family = font.family, label.select = label.select, repel = repel, label.rectangle = label.rectangle, parse = parse, cor.coef = cor.coef, cor.coeff.args = cor.coeff.args, cor.method = cor.method, cor.coef.coord = cor.coef.coord, cor.coef.size = cor.coef.size, ggp = ggp, show.legend.text = show.legend.text, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } font.label <- .parse_font(font.label) %>% .compact() font.label$color <- ifelse(is.null(font.label$color), color, font.label$color) .opts$font.label <- font.label .opts$fun <- ggscatter_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggscatter_core <- function(data, x, y, color = "black", fill = "lightgray", palette = NULL, shape = 19, size = 2, point = TRUE, rug = FALSE, title = NULL, xlab = NULL, ylab = NULL, add = c("none", "reg.line", "loess"), add.params = list(), conf.int = FALSE, conf.int.level = 0.95, fullrange = FALSE, ellipse = FALSE, ellipse.level = 0.95, ellipse.type = "norm", ellipse.alpha = 0.1, ellipse.border.remove = FALSE, mean.point = FALSE, mean.point.size = ifelse(is.numeric(size), 2*size, size), star.plot = FALSE, star.plot.lty = 1, star.plot.lwd = NULL, label = NULL, font.label = c(12, "plain"), font.family = "", label.select = NULL, repel = FALSE, label.rectangle = FALSE, parse = FALSE, cor.coef = FALSE, cor.coeff.args = list(), cor.method = "pearson", cor.coef.coord = c(NULL, NULL), cor.coef.size = 4, ggp = NULL, show.legend.text = NA, ggtheme = theme_classic(), ...) { add <- match.arg(add) add.params <- .check_add.params(add, add.params, error.plot = "", data, color, fill, ...) if(length(label) >1){ if(length(label) != nrow(data)) stop("The argument label should be a column name or a vector of length = nrow(data). ", "It seems that length(label) != nrow(data)") else data$label.xx <- label label <- "label.xx" } # label font font.label <- .parse_font(font.label) font.label$size <- ifelse(is.null(font.label$size), 12, font.label$size) font.label$color <- ifelse(is.null(font.label$color), color, font.label$color) font.label$face <- ifelse(is.null(font.label$face), "plain", font.label$face) if(is.null(ggp)) p <- ggplot(data, create_aes(list(x = x, y = y))) else p <- ggp if(point) p <- p + .geom_exec(geom_point, data = data, x = x, y = y, color = color, fill = fill, size = size, shape = shape, ...) # Adjust shape when ngroups > 6, to avoid ggplot warnings if(shape %in% colnames(data)){ ngroups <- length(levels(data[, shape])) if(ngroups > 6) p <- p + scale_shape_manual(values=1:ngroups, labels = levels(data[, shape])) } # Add marginal rug # +++++++++++ if(rug) p <- p + .geom_exec(geom_rug, data = data, color = color, size = size/2) # Add reg line or loess # ++++++++++++ if(add %in% c("reg.line", "loess")){ add <- ifelse(add == "reg.line", stats::lm, stats::loess) if(is.null(add.params$linetype)) add.params$linetype <- "solid" if(conf.int == FALSE) add.params$fill <- "lightgray" .args <- .geom_exec(NULL, data = data, se = conf.int, level = conf.int.level, color = add.params$color, fill = add.params$fill, linetype = add.params$linetype, size = add.params$size, fullrange = fullrange) mapping <- .args$mapping option <- .args$option option[["method"]] <- add option[["mapping"]] <- create_aes(mapping) p <- p + do.call(geom_smooth, option) } # Add ellipses # +++++++++++ if(ellipse){ grp <- intersect(unique(c(color, fill, shape)), colnames(data))[1] # NO grouping variable if(is.na(grp)) { grp <- factor(rep(1, nrow(data))) grp_name <- "group" data$group <- grp } # Case of grouping variable else { grp_name <- grp data[, grp_name] <- as.factor(data[, grp_name]) } if (ellipse.type == 'convex') p <- p + .convex_ellipse(data, x, y, grp_name, color, fill, ellipse.alpha, ellipse.border.remove = ellipse.border.remove) else if(ellipse.type == "confidence") p <- p + .confidence_ellipse(data, x, y, grp_name, color, fill, alpha = ellipse.alpha, level = ellipse.level, ellipse.border.remove = ellipse.border.remove) else if (ellipse.type %in% c('t', 'norm', 'euclid')) p <- p + .stat_ellipse(data, x, y, grp_name, color = color, fill = fill, alpha = ellipse.alpha, type = ellipse.type, level = ellipse.level, ellipse.border.remove = ellipse.border.remove) } # /ellipse # Add mean points # +++++++++ if(mean.point) { p <- p + .geom_exec(stat_mean, data = data, color = color, shape = shape, fill = fill, size = mean.point.size) } # Star plots # ++++++++++++ if(star.plot){ p <- p + .geom_exec(stat_stars, data = data, color = color, linetype = star.plot.lty, size = star.plot.lwd) } #/ star plots # Add textual annotation # ++++++ alpha <- 1 if(!is.null(list(...)$alpha)) alpha <- list(...)$alpha if(!is.null(label)) { lab_data <- data # Select some labels to show if(!is.null(label.select)) lab_data <- subset(lab_data, lab_data[, label, drop = TRUE] %in% label.select, drop = FALSE) if(repel){ ggfunc <- ggrepel::geom_text_repel if(label.rectangle) ggfunc <- ggrepel::geom_label_repel p <- p + .geom_exec(ggfunc, data = lab_data, x = x, y = y, label = label, fontface = font.label$face, parse = parse, size = font.label$size/3, color = font.label$color, alpha = alpha, family = font.family, box.padding = unit(0.35, "lines"), point.padding = unit(0.3, "lines"), force = 1, show.legend = show.legend.text, seed=123) } else{ ggfunc <- geom_text vjust <- -0.7 if(label.rectangle) { ggfunc <- geom_label vjust <- -0.4 } p <- p + .geom_exec(ggfunc, data = lab_data, x = x, y = y, color = color, label = label, fontface = font.label$face, family = font.family, parse = parse, size = font.label$size/3, color = font.label$color, vjust = vjust, alpha = alpha, show.legend = show.legend.text) } } # Add correlation coefficient if(cor.coef){ if(!missing(cor.method)) cor.coeff.args$method <- cor.method if(!missing(cor.coef.size)) cor.coeff.args$size <- cor.coef.size if(!missing(cor.coef.coord)){ cor.coeff.args$label.x <- cor.coef.coord[1] cor.coeff.args$label.y <- cor.coef.coord[2] } p <- p + do.call(stat_cor, cor.coeff.args) } p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) if(font.family != "") p <- p + theme(text = element_text(family = font.family)) p } # Add convex ellipse # data a data frame # x,y: x and y variables # grp_name: grp variable .convex_ellipse <- function(data, x, y, grp_name, color = "black", fill = "lightgray", alpha = 0.1, ellipse.border.remove = FALSE ){ grp_levels <- levels(data[, grp_name]) if(length(grp_levels) == 1) .geom_exec(geomfunc = stat_chull, data = data, color = color, fill = fill, alpha = alpha, geom = "polygon") else { if( ellipse.border.remove) color <- NULL else color = grp_name .geom_exec(geomfunc = stat_chull, data = data, color = color, fill = grp_name, alpha = alpha, geom = "polygon") } } # Confidence ellipse .confidence_ellipse <- function(data, x, y, grp_name, color = "black", fill = "lightgray", alpha = 0.1, level = 0.95, ellipse.border.remove = FALSE){ grp_levels <- levels(data[, grp_name]) if(length(grp_levels) == 1) { mapping <- create_aes(list(x = x, y = y)) stat_conf_ellipse(mapping = mapping, data = data, color = color, fill = fill, alpha = alpha, level = level, geom = "polygon") } else { mapping = create_aes(list(x = x, y = y, colour = grp_name, fill = grp_name)) if(ellipse.border.remove ) mapping = create_aes(list(x = x, y = y, colour = NULL, fill = grp_name)) stat_conf_ellipse(mapping = mapping, data = data, level = level, alpha = alpha, geom = 'polygon') } } # Add ggplot2 stat ellipse .stat_ellipse <- function(data, x, y, grp_name, color = "black", fill = "lightgray", alpha = 0.1, type = "norm", level = 0.95, ellipse.border.remove = FALSE) { grp_levels <- levels(data[, grp_name]) if(length(grp_levels) == 1){ mapping <- create_aes(list(x = x, y = y)) ggplot2::stat_ellipse(mapping = mapping, data = data, level = level, type = type, colour = color, fill = fill, alpha = alpha, geom = 'polygon') } else{ mapping = create_aes(list(x = x, y = y, colour = grp_name, group = grp_name, fill = grp_name)) if(ellipse.border.remove) mapping = create_aes(list(x = x, y = y, group = grp_name, fill = grp_name)) ggplot2::stat_ellipse(mapping = mapping, data = data, level = level, type = type, alpha = alpha, geom = 'polygon') } } ggpubr/R/border.R0000644000176200001440000000131113115334434013336 0ustar liggesusers#'Set ggplot Panel Border Line #' #'@description Change or set ggplot panel border. #'@param color border line color. #'@param size numeric value specifying border line size. #'@param linetype line type. An integer (0:8), a name (blank, solid, dashed, #' dotted, dotdash, longdash, twodash). Sess \code{\link{show_line_types}}. #' #' #'@examples #'# Load data #'data("ToothGrowth") #'df <- ToothGrowth #' #'# Basic plot #'p <- ggboxplot(df, x = "dose", y = "len") #'p #' #'# Add border #' p + border() #'@export border <- function(color = "black", size = 0.8, linetype = NULL){ theme(panel.background = element_rect(color = color, size = size, linetype = linetype), axis.line = element_blank()) } ggpubr/R/desc_statby.R0000644000176200001440000000511113640727735014404 0ustar liggesusers#' Descriptive statistics by groups #' #' @description Computes descriptive statistics by groups for a measure variable. #' #' @param data a data frame. #' @param measure.var the name of a column containing the variable to be summarized. #' @param grps a character vector containing grouping variables; e.g.: grps = c("grp1", "grp2") #' @param ci the percent range of the confidence interval (default is 0.95). #' #' @return #' A data frame containing descriptive statistics, such as: #' \itemize{ #' \item \strong{length}: the number of elements in each group #' \item \strong{min}: minimum #' \item \strong{max}: maximum #' \item \strong{median}: median #' \item \strong{mean}: mean #' \item \strong{iqr}: interquartile range #' \item \strong{mad}: median absolute deviation (see ?MAD) #' \item \strong{sd}: standard deviation of the mean #' \item \strong{se}: standard error of the mean #' \item \strong{ci}: confidence interval of the mean #' \item \strong{range}: the range = max - min #' \item \strong{cv}: coefficient of variation, sd/mean #' \item \strong{var}: variance, sd^2 #' } #' #' @examples #' # Load data #'data("ToothGrowth") #' #'# Descriptive statistics #'res <- desc_statby(ToothGrowth, measure.var = "len", #' grps = c("dose", "supp")) #' head(res[, 1:10]) #' #' @export desc_statby <- function(data, measure.var, grps, ci = 0.95){ if(!inherits(data, "data.frame")) stop("data must be a data.frame.") . <- NULL data %>% as.data.frame() %>% df_group_by(vars = grps) %>% do(.summary(.[, measure.var], ci = ci)) %>% as.data.frame() } # Helper function to compute summary statistics .summary <- function(x, ci = 0.95){ if(is.data.frame(x)){ if(ncol(x) == 1) x <- .select_vec(x, 1) } if(!is.numeric(x)) stop("x should be a numeric vector or a data frame with one numeric column") data_sum <- data.frame( length = base::sum(!is.na(x)), min = base::min(x, na.rm=TRUE), max = base::max(x, na.rm=TRUE), median = stats::median(x, na.rm=TRUE), mean = base::mean(x, na.rm=TRUE), iqr = stats::IQR(x, na.rm=TRUE), mad = stats::mad(x, na.rm=TRUE), sd = stats::sd(x, na.rm=TRUE) ) data_sum$se <- data_sum$sd / sqrt(data_sum$length) # standard error # Confidence interval from t-distribution # e.g., if conf.interval is .95, use .975 (above/below), and use df=N-1 data_sum$ci <- stats::qt(ci/2 + .5, data_sum$length-1)*data_sum$se data_sum$range <- data_sum$max - data_sum$min data_sum$cv <- data_sum$sd/data_sum$mean data_sum$var <- data_sum$sd^2 data_sum[, 2:ncol(data_sum)] <- data_sum[, 2:ncol(data_sum)] return(data_sum) } ggpubr/R/utils-geom-signif.R0000644000176200001440000000037013675462543015445 0ustar liggesusers#' geom_signif exported from ggsignif package #' #' See \code{ggsignif::\link[ggsignif:stat_signif]{geom_signif}} for details. #' #' @name geom_signif #' @rdname geom_signif #' @keywords internal #' @export #' @importFrom ggsignif geom_signif NULL ggpubr/R/stat_mean.R0000644000176200001440000000267713111515734014054 0ustar liggesusers#' @include utilities.R NULL #' Draw group mean points #' @description Draw the mean point of each group. #' @inheritParams ggplot2::layer #' @param ... other arguments to pass to \code{\link[ggplot2]{geom_point}}. #' @param na.rm If FALSE (the default), removes missing values with a warning. #' If TRUE silently removes missing values. #' @seealso \code{\link{stat_conf_ellipse}}, \code{\link{stat_chull}} and #' \code{\link{ggscatter}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' #' # Scatter plot with ellipses and group mean points #' ggscatter(df, x = "wt", y = "mpg", #' color = "cyl", shape = "cyl", ellipse = TRUE)+ #' stat_mean(aes(color = cyl, shape = cyl), size = 4) #' #' @export stat_mean <- function(mapping = NULL, data = NULL, geom = "point", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { layer( stat = StatMean, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, ...) ) } StatMean<- ggproto("StatMean", Stat, required_aes = c("x", "y"), compute_group = function(data, scales) { res <- data.frame(x = mean(data$x, na.rm = TRUE), y = mean(data$y, na.rm = TRUE)) res } ) ggpubr/R/ggecdf.R0000644000176200001440000000667013666557031013330 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Empirical cumulative density function #' @description Empirical Cumulative Density Function (ECDF). #' @inheritParams ggboxplot #' @param x variable to be drawn. #' @param color line and point color. #' @param linetype line type. See \code{\link{show_line_types}}. #' @param size line and point size. #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{stat_ecdf}} and \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}} #' #' @examples #' # Create some data format #' set.seed(1234) #' wdata = data.frame( #' sex = factor(rep(c("F", "M"), each=200)), #' weight = c(rnorm(200, 55), rnorm(200, 58))) #' #' head(wdata, 4) #' #' # Basic ECDF plot #' ggecdf(wdata, x = "weight") #' #' # Change colors and linetype by groups ("sex") #' # Use custom palette #' ggecdf(wdata, x = "weight", #' color = "sex", linetype = "sex", #' palette = c("#00AFBB", "#E7B800")) #' #' @export ggecdf <- function(data, x, combine = FALSE, merge = FALSE, color = "black", palette = NULL, size = NULL, linetype = "solid", title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, ggtheme = theme_pubr(), ...){ # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, palette = palette, linetype = linetype, size = size, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggecdf_core .opts$y <- "..ecdf.." if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggecdf_core <- function(data, x, y = "..ecdf..", color = "black", palette = NULL, size = NULL, linetype = "solid", title = NULL, xlab = NULL, ylab = NULL, ggtheme = theme_classic(), ...) { p <- ggplot(data, create_aes(list(x = x))) p <- p + geom_exec(stat_ecdf, data = data, color = color, size = size, linetype = linetype)+ labs(y = paste0("F(", x, ")")) p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/stat_cor.R0000644000176200001440000002601713675460140013716 0ustar liggesusers#' @include utilities.R utilities_label.R NULL #'Add Correlation Coefficients with P-values to a Scatter Plot #'@description Add correlation coefficients with p-values to a scatter plot. Can #' be also used to add `R2`. #'@inheritParams ggplot2::layer #'@param method a character string indicating which correlation coefficient (or #' covariance) is to be computed. One of "pearson" (default), "kendall", or #' "spearman". #'@param alternative a character string specifying the alternative hypothesis, #' must be one of "two.sided" (default), "greater" or "less". You can specify #' just the initial letter. #'@param cor.coef.name character. Can be one of \code{"R"} (pearson coef), #' \code{"rho"} (spearman coef) and \code{"tau"} (kendall coef). Uppercase and #' lowercase are allowed. #'@param label.sep a character string to separate the terms. Default is ", ", to #' separate the correlation coefficient and the p.value. #'@param label.x.npc,label.y.npc can be \code{numeric} or \code{character} #' vector of the same length as the number of groups and/or panels. If too #' short they will be recycled. \itemize{ \item If \code{numeric}, value should #' be between 0 and 1. Coordinates to be used for positioning the label, #' expressed in "normalized parent coordinates". \item If \code{character}, #' allowed values include: i) one of c('right', 'left', 'center', 'centre', #' 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', #' 'middle') for y-axis.} #' #' If too short they will be recycled. #'@param label.x,label.y \code{numeric} Coordinates (in data units) to be used #' for absolute positioning of the label. If too short they will be recycled. #'@param output.type character One of "expression", "latex", "tex" or "text". #'@param digits,r.digits,p.digits integer indicating the number of decimal #' places (round) or significant digits (signif) to be used for the correlation #' coefficient and the p-value, respectively.. #'@param r.accuracy a real value specifying the number of decimal places of #' precision for the correlation coefficient. Default is NULL. Use (e.g.) 0.01 #' to show 2 decimal places of precision. If specified, then \code{r.digits} is #' ignored. #'@param p.accuracy a real value specifying the number of decimal places of #' precision for the p-value. Default is NULL. Use (e.g.) 0.0001 to show 4 #' decimal places of precision. If specified, then \code{p.digits} is ignored. #'@param ... other arguments to pass to \code{\link[ggplot2]{geom_text}} or #' \code{\link[ggplot2:geom_text]{geom_label}}. #'@param na.rm If FALSE (the default), removes missing values with a warning. If #' TRUE silently removes missing values. #'@seealso \code{\link{ggscatter}} #'@section Computed variables: \describe{ \item{r}{correlation coefficient} #' \item{rr}{correlation coefficient squared} \item{r.label}{formatted label #' for the correlation coefficient} \item{rr.label}{formatted label for the #' squared correlation coefficient} \item{p.label}{label for the p-value} #' \item{label}{default labeldisplayed by \code{stat_cor()}} } #' #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' #' # Scatter plot with correlation coefficient #' #::::::::::::::::::::::::::::::::::::::::::::::::: #' sp <- ggscatter(df, x = "wt", y = "mpg", #' add = "reg.line", # Add regressin line #' add.params = list(color = "blue", fill = "lightgray"), # Customize reg. line #' conf.int = TRUE # Add confidence interval #' ) #' # Add correlation coefficient #' sp + stat_cor(method = "pearson", label.x = 3, label.y = 30) #' #' # Specify the number of decimal places of precision for p and r #' # Using 3 decimal places for the p-value and #' # 2 decimal places for the correlation coefficient (r) #' sp + stat_cor(p.accuracy = 0.001, r.accuracy = 0.01) #' #' # Show only the r.label but not the p.label #' sp + stat_cor(aes(label = ..r.label..), label.x = 3) #' #'# Use R2 instead of R #'ggscatter(df, x = "wt", y = "mpg", add = "reg.line") + #' stat_cor( #' aes(label = paste(..rr.label.., ..p.label.., sep = "~`,`~")), #' label.x = 3 #' ) #' #' # Color by groups and facet #' #:::::::::::::::::::::::::::::::::::::::::::::::::::: #' sp <- ggscatter(df, x = "wt", y = "mpg", #' color = "cyl", palette = "jco", #' add = "reg.line", conf.int = TRUE) #' sp + stat_cor(aes(color = cyl), label.x = 3) #' #'@export stat_cor <- function(mapping = NULL, data = NULL, method = "pearson", alternative = "two.sided", cor.coef.name = c("R", "rho", "tau"), label.sep = ", ", label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, output.type = "expression", digits = 2, r.digits = digits, p.digits = digits, r.accuracy = NULL, p.accuracy = NULL, geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { parse <- ifelse(output.type == "expression", TRUE, FALSE) cor.coef.name = cor.coef.name[1] layer( stat = StatCor, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(label.x.npc = label.x.npc , label.y.npc = label.y.npc, label.x = label.x, label.y = label.y, label.sep = label.sep, method = method, alternative = alternative, output.type = output.type, digits = digits, r.digits = r.digits, p.digits = p.digits, r.accuracy = r.accuracy, p.accuracy = p.accuracy, cor.coef.name = cor.coef.name, parse = parse, na.rm = na.rm, ...) ) } StatCor<- ggproto("StatCor", Stat, required_aes = c("x", "y"), default_aes = aes(hjust = ..hjust.., vjust = ..vjust..), compute_group = function(data, scales, method, alternative, label.x.npc, label.y.npc, label.x, label.y, label.sep, output.type, digits, r.digits, p.digits, r.accuracy, p.accuracy, cor.coef.name) { if (length(unique(data$x)) < 2) { # Not enough data to perform test return(data.frame()) } # Returns a data frame with estimate, p.value, label, method .test <- .cor_test( data$x, data$y, method = method, alternative = alternative, label.sep = label.sep, output.type = output.type, digits = digits, r.digits = r.digits, p.digits = p.digits, r.accuracy = r.accuracy, p.accuracy = p.accuracy, cor.coef.name = cor.coef.name ) # Returns a data frame with label: x, y, hjust, vjust .label.pms <- .label_params(data = data, scales = scales, label.x.npc = label.x.npc, label.y.npc = label.y.npc, label.x = label.x, label.y = label.y ) %>% mutate(hjust = 0) cbind(.test, .label.pms) } ) # Correlation test #:::::::::::::::::::::::::::::::::::::::: # Returns a data frame: estimatel|p.value|method|label .cor_test <- function(x, y, method = "pearson", alternative = "two.sided", label.sep = ", ", output.type = "expression", digits = 2, r.digits = digits, p.digits = digits, r.accuracy = NULL, p.accuracy = NULL, cor.coef.name = "R"){ # Overwritting digits by accuracy, if specified if(!is.null(p.accuracy)){ nb_decimal_places <- round(abs(log10(p.accuracy))) p.digits <- nb_decimal_places } if(!is.null(r.accuracy)){ nb_decimal_places <- round(abs(log10(r.accuracy))) r.digits <- nb_decimal_places } # Correlation analyses .cor <- suppressWarnings(stats::cor.test( x, y, method = method, alternative = alternative, use = "complete.obs" )) estimate <- p.value <- p <- r <- rr <- NULL z <- data.frame(estimate = .cor$estimate, p.value = .cor$p.value, method = method) %>% mutate( r = signif(estimate, r.digits), rr = signif(estimate^2, r.digits), p = signif(p.value, p.digits) ) # Defining p and r labels pval <- .cor$p.value z <- z %>% dplyr::mutate( r.label = get_corcoef_label( r, accuracy = r.accuracy, prefix = "R", cor.coef.name = cor.coef.name, type = output.type ), rr.label = get_corcoef_label( rr, accuracy = r.accuracy, prefix = "R2", cor.coef.name = cor.coef.name, type = output.type ), p.label = get_p_label( p, accuracy = p.accuracy, type = output.type ) ) # Defining correlation labels if(output.type == "expression"){ if(label.sep == "\n"){ # Line break at each comma cortxt <- paste0("atop(", z$r.label, ",", z$p.label, ")") } else{ label.sep <- trimws(label.sep) if(label.sep == "") label.sep <- "~" # Using "*" to avoid the space between the R2 value and comma else label.sep <- paste0("*`", label.sep, "`~") cortxt <- paste0(z$r.label, label.sep, z$p.label) } } else if (output.type %in% c("latex", "tex", "text")){ cortxt <- paste0(z$r.label, label.sep, z$p.label) } z$label <- cortxt z } # Formatting R and P ---------------------- get_p_label <- function(x, accuracy = 0.0001, type = "expression"){ if(is.null(accuracy)){ label <- ifelse(x < 2.2e-16, "p < 2.2e-16", paste0("p = ", x)) } else if (!(accuracy < 1)){ stop( "Accuracy should be < 1; For example use 0.01, 0.001, 0.0001, etc.", call. = FALSE ) } else{ label <- scales::pvalue(x, accuracy = accuracy, add_p = TRUE) # Add space before and after: = or < label <- gsub(pattern = "(=|<)", replacement = " \\1 ", x = label) } if(type == "expression"){ label <- gsub(pattern = "p = ", replacement = "italic(p)~`=`~", x = label, fixed = TRUE) label <- gsub(pattern = "p < ", replacement = "italic(p)~`<`~", x = label, fixed = TRUE) } label } # Prefix can be R or R^2. # cor.coef.name: R, rho, tau get_corcoef_label <- function(x, accuracy = 0.01, prefix = "R", cor.coef.name = "R", type = "expression"){ if(is.null(accuracy)){ label <- paste0(prefix, " = ", x) } else if(!(accuracy < 1)){ stop( "Accuracy should be < 1; For example use 0.01, 0.001, 0.0001, etc.", call. = FALSE ) } else{ nb_decimal_places <- round(abs(log10(accuracy))) label <- formatC(x, digits = nb_decimal_places, format = "f") label <- paste0(prefix, " = ", label) } if(type == "expression"){ label <- gsub(pattern = "R2 = ", replacement = "italic(R)^2~`=`~", x = label, fixed = TRUE) label <- gsub(pattern = "R = ", replacement = "italic(R)~`=`~", x = label, fixed = TRUE) } label <- gsub(pattern = "R", cor.coef.name, x = label, fixed = TRUE) label } ggpubr/R/theme_transparent.R0000644000176200001440000000221513177363412015616 0ustar liggesusers#' @include utilities.R #' @import ggplot2 NULL #'Create a ggplot with Transparent Background #' #'@description Create a ggplot with transparent background. #'@param base_size base font size #'@param base_family base font family #'@seealso \code{\link{theme_pubr}} #' @examples #'# Create a scatter plot #'sp <- ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "Species", palette = "jco", #' size = 3, alpha = 0.6) #'sp #' #'# Transparent theme #'sp + theme_transparent() #' #'@export theme_transparent <- function (base_size = 12, base_family = "") { theme_classic(base_size = base_size, base_family = base_family) + theme( panel.background = element_rect(fill = "transparent", colour = NA), plot.background = element_rect(fill = "transparent", colour = NA), legend.background = element_rect(fill = "transparent", colour = NA), legend.box.background = element_rect(fill = "transparent", colour = NA), axis.line = element_blank(), axis.title = element_blank(), plot.title = element_blank(), axis.text = element_blank(), axis.ticks = element_blank() ) } ggpubr/R/text_grob.R0000644000176200001440000000306013675461066014076 0ustar liggesusers#' @include utilities.R NULL #' Create a Text Graphical object #' @description Create easily a customized text grob (graphical object). Wrapper around #' \code{\link[grid:grid.text]{textGrob}}. #' @inheritParams grid::grid.text #' @param color text font color. #' @param face font face. Allowed values include one of \code{"plain", "bold", #' "italic", "bold.italic"}. #' @param size font size (e.g.: size = 12) #' @param lineheight line height (e.g.: lineheight = 2). #' @param family font family. #' @param ... other arguments passed to \link[grid:grid.text]{textGrob}. #' @return a text grob. #' @examples #'text <- paste("iris data set gives the measurements in cm", #' "of the variables sepal length and width", #' "and petal length and width, respectively,", #' "for 50 flowers from each of 3 species of iris.", #' "The species are Iris setosa, versicolor, and virginica.", sep = "\n") #' #'# Create a text grob #'tgrob <- text_grob(text, face = "italic", color = "steelblue") #'# Draw the text #'as_ggplot(tgrob) #' #' @export text_grob <- function(label, just = "centre", hjust = NULL, vjust = NULL, rot = 0, color = "black", face = "plain", size = NULL, lineheight = NULL, family = NULL, ...) { gp <- grid::gpar(col = color, fontface = face, fontsize = size, lineheight = lineheight, fontfamily = family) tgrob <- grid::textGrob(label = label, just = just, hjust = hjust, vjust = vjust, rot = rot, gp = gp, ...) tgrob } ggpubr/R/utilities_color.R0000644000176200001440000001475713373112245015314 0ustar liggesusers .brewerpal <- function(){ c( # sequential 'Blues', 'BuGn', 'BuPu', 'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu', 'Reds', 'YlGn', 'YlGnBu YlOrBr', 'YlOrRd', #Divergent 'BrBG', 'PiYG', 'PRGn', 'PuOr', 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral', # Qualitative 'Accent', 'Dark2', 'Paired', 'Pastel1', 'Pastel2', 'Set1', 'Set2', 'Set3' ) } .ggscipal <- function(){ # Scientific Journal and Sci-Fi Themed Color Palettes for ggplot2 # ggsci package: https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html c("npg", "aaas", "nejm", "lancet", "jama", "jco", "ucscgb", "d3", "locuszoom", "igv", "uchicago", "startrek", "tron", "futurama", "rickandmorty", "simpsons") } # Check if color palette or default hue .is_col_palette <- function(pal){ if(is.null(pal)) return(FALSE) else return(length(pal)==1 & pal[1] %in% c(.brewerpal(), .ggscipal(), "default", "hue", "grey_pal", "gray_pal")) } .is_color_palette <- .is_col_palette # alias # Change color manually # possible value for palette: brewer palette, "grey" or a vector of colors .ggcolor <- function(palette = NULL, ...) { color_palette(palette = palette, ...) } # Change fill color manually # possible value for palette: brewer palette, "grey" or a vector of colors .ggfill <- function(palette = NULL, ...) { fill_palette(palette = palette, ...) } # Helper function to use palette from ggsci package # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% .scale_color_ggsci <- function(palette = c("npg", "aaas", "nejm", "lancet", "jama", "jco", "ucscgb", "d3", "locuszoom", "igv", "uchicago", "startrek", "tron", "futurama", "rickandmorty", "simpsons")) { pal <- match.arg(palette) functs <- list( npg = ggsci::scale_color_npg(), aaas = ggsci::scale_color_aaas(), nejm = ggsci::scale_color_nejm(), lancet = ggsci::scale_color_lancet(), jama = ggsci::scale_color_jama(), jco = ggsci::scale_color_jco(), ucscgb = ggsci::scale_color_ucscgb(), d3 = ggsci::scale_color_d3(), locuszoom = ggsci::scale_color_locuszoom(), igv = ggsci::scale_color_igv(), uchicago = ggsci::scale_color_uchicago(), startrek = ggsci::scale_color_startrek(), tron = ggsci::scale_color_tron(), futurama = ggsci::scale_color_futurama(), rickandmorty = ggsci::scale_color_rickandmorty(), simpsons = ggsci::scale_color_simpsons() ) functs[[pal]] } .scale_fill_ggsci <- function(palette = c("npg", "aaas", "nejm", "lancet", "jama", "jco", "ucscgb", "d3", "locuszoom", "igv", "uchicago", "startrek", "tron", "futurama", "rickandmorty", "simpsons")) { pal <- match.arg(palette) functs <- list( npg = ggsci::scale_fill_npg(), aaas = ggsci::scale_fill_aaas(), nejm = ggsci::scale_fill_nejm(), lancet = ggsci::scale_fill_lancet(), jama = ggsci::scale_fill_jama(), jco = ggsci::scale_fill_jco(), ucscgb = ggsci::scale_fill_ucscgb(), d3 = ggsci::scale_fill_d3(), locuszoom = ggsci::scale_fill_locuszoom(), igv = ggsci::scale_fill_igv(), uchicago = ggsci::scale_fill_uchicago(), startrek = ggsci::scale_fill_startrek(), tron = ggsci::scale_fill_tron(), futurama = ggsci::scale_fill_futurama(), rickandmorty = ggsci::scale_fill_rickandmorty(), simpsons = ggsci::scale_fill_simpsons() ) functs[[pal]] } # Generate color palette from ggsci or Rcolorbrewer #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # pal could be a brewer or ggsci palette .get_pal <- function(pal = "default", k){ if(pal %in% .brewerpal()) .get_brewer_pal(pal, k) else if(pal %in% .ggscipal()) .get_ggsci_pal(pal, k) else if(pal %in% c("default", "hue")){ hues <- seq(15, 375, length = k + 1) grDevices::hcl(h = hues, l = 65, c = 100, alpha = 1)[1:k] } } .get_palette <- .get_pal # alias # Generate color palette from ggsci # k the number of color .get_ggsci_pal <- function(palette = c("npg", "aaas", "nejm", "lancet", "jama", "jco", "ucscgb", "d3", "locuszoom", "igv", "uchicago", "startrek", "tron", "futurama", "rickandmorty", "simpsons"), k) { pal <- match.arg(palette) if(pal %in% c("npg", "aaas", "jco", "d3")) max_k <- 10 else if (pal %in% c("nejm")) max_k <- 8 else if (pal %in% c("jama", "locuszoom", "startrek", "tron")) max_k <- 7 else if (pal %in% c("igv")) max_k <- 51 else if (pal %in% c("lancet", "uchicago")) max_k <- 9 else if (pal %in% c("ucscgb")) max_k <- 26 else if (pal %in% c("futurama", "rickandmorty")) max_k <- 12 else if (pal %in% c("simpsons")) max_k <- 16 else stop("Don't support palette name: ", pal) functs <- list( npg = ggsci::pal_npg(), aaas = ggsci::pal_aaas(), nejm = ggsci::pal_nejm(), lancet = ggsci::pal_lancet(), jama = ggsci::pal_jama(), jco = ggsci::pal_jco(), ucscgb = ggsci::pal_ucscgb(), d3 = ggsci::pal_d3(), locuszoom = ggsci::pal_locuszoom(), igv = ggsci::pal_igv(), uchicago = ggsci::pal_uchicago(), startrek = ggsci::pal_startrek(), tron = ggsci::pal_tron(), futurama = ggsci::pal_futurama(), rickandmorty = ggsci::pal_rickandmorty(), simpsons = ggsci::pal_simpsons() ) if(k <= max_k) functs[[pal]](k) else grDevices::colorRampPalette(functs[[pal]](max_k))(k) } # Generate a color palette from brewer .get_brewer_pal <- function(palette, k){ if (!requireNamespace("RColorBrewer", quietly = TRUE)) { stop("RColorBrewer package needed. Please install it using install.packages('RColorBrewer').") } initial.k <- k k <- max(c(k, 3)) # Kshoud be at least 3 pal <- palette[1] sequential <- c('Blues', 'BuGn', 'BuPu', 'GnBu', 'Greens', 'Greys', 'Oranges', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'Purples', 'RdPu', 'Reds','YlGn', 'YlGnBu YlOrBr', 'YlOrRd') divergent <- c('BrBG', 'PiYG', 'PRGn', 'PuOr', 'RdBu', 'RdGy', 'RdYlBu', 'RdYlGn', 'Spectral') if(pal %in% sequential) max_k <- 9 else if(pal %in% divergent) max_k <- 11 else if(pal %in% c('Accent','Dark2','Pastel2', 'Set2')) max_k <- 8 else if(pal %in% c('Pastel1', 'Set1')) max_k <- 9 else if(pal %in% c('Paired', 'Set3')) max_k <- 12 else stop("Don't support palette name: ", pal) if(k <= max_k) { cols <- RColorBrewer::brewer.pal(k, palette) if(initial.k == 2) cols <- cols[c(1,3)] else if(initial.k == 1) cols <- cols[1] cols } else grDevices::colorRampPalette(RColorBrewer::brewer.pal(max_k, palette))(k) } # Set gradient colors # cols a vector of colors .gradient_col <- function (cols){ gradient_color(cols) } ggpubr/R/rotate_axis_text.R0000644000176200001440000000265313675460372015475 0ustar liggesusers#'Rotate Axes Text #' #'@description Rotate the x-axis text (tick mark labels). #'\itemize{ #'\item \code{rotate_x_text}(): Rotate x axis text. #'\item \code{rotate_y_text}(): Rotate y axis text. #'} #' #'@param angle numeric value specifying the rotation angle. Default is 90 for vertical x-axis text. #'@param hjust horizontal justification (in [0, 1]). #'@param vjust vertical justification (in [0, 1]). #'@param ... other arguments to pass to the function #' \code{\link[ggplot2:element]{element_text}()}. #' #'@examples #'# Load data #'data("ToothGrowth") #'df <- ToothGrowth #' #'# Basic plot #'p <- ggboxplot(df, x = "dose", y = "len") #'p #'# Vertical x axis text #'p + rotate_x_text() #'# Set rotation angle to 45 #'p + rotate_x_text(45) #'p + rotate_y_text(45) #' #'@name rotate_axis_text #'@rdname rotate_axis_text #'@export rotate_x_text <- function(angle = 90, hjust = NULL, vjust = NULL, ...){ if(missing(hjust) & angle > 5) hjust <- 1 if(missing(vjust) & angle == 90) vjust <- 0.5 theme( axis.text.x = element_text(angle = angle, hjust = hjust, vjust = vjust, ...) ) } #'@name rotate_axis_text #'@rdname rotate_axis_text #'@export rotate_y_text <- function(angle = 90, hjust = NULL, vjust = NULL, ...){ if(missing(hjust) & angle == 90) hjust <- 0.5 else if(missing(hjust) & angle > 5) hjust <- 1 theme( axis.text.y = element_text(angle = angle, hjust = hjust, vjust = vjust, ...) ) } ggpubr/R/as_ggplot.R0000644000176200001440000000172313675547673014075 0ustar liggesusers#' @include utilities.R NULL #' Storing grid.arrange() arrangeGrob() and plots #' #' @description Transform the output of \code{\link[gridExtra:arrangeGrob]{arrangeGrob}()} #' and \code{\link[gridExtra:arrangeGrob]{grid.arrange}()} to a an object of class ggplot. #' @param x an object of class gtable or grob as returned by the functions #' \code{\link[gridExtra:arrangeGrob]{arrangeGrob}()} and #' \code{\link[gridExtra:arrangeGrob]{grid.arrange}()}. #' @return an object of class ggplot. #' #' @examples #' # Creat some plots #'bxp <- ggboxplot(iris, x = "Species", y = "Sepal.Length") #'vp <- ggviolin(iris, x = "Species", y = "Sepal.Length", #' add = "mean_sd") #' #'# Arrange the plots in one page #'# Returns a gtable (grob) object #'library(gridExtra) #'gt <- arrangeGrob(bxp, vp, ncol = 2) #' #'# Transform to a ggplot and print #'as_ggplot(gt) #' #'@export as_ggplot <- function(x){ cowplot::ggdraw() + cowplot::draw_grob(grid::grobTree(x)) } ggpubr/R/get_breaks.R0000644000176200001440000000466413675457533014226 0ustar liggesusers#' Easy Break Creation for Numeric Axes #' #' @description Creates breaks for numeric axes to be used in the functions #' \code{\link[ggplot2:scale_continuous]{scale_x_continuous}()} and #' \code{\link[ggplot2:scale_continuous]{scale_y_continuous}()}. Can be used to increase the #' number of x and y ticks by specifying the option \code{n}. It's also #' possible to control axis breaks by specifying a step between ticks. For #' example, if \code{by = 5}, a tick mark is shown on every 5. #' @param n number of breaks. #' @param by number: the step between breaks. #' @param from the starting value of breaks. By default, 0 is used for positive #' variables #' @param to the end values of breaks. This corresponds generally to the maximum #' limit of the axis. #' @return a break function #' #' @examples #' #' # Generate 5 breaks for a variable x #' get_breaks(n = 5)(x = 1:100) #' #' # Generate breaks using an increasing step #' get_breaks(by = 10)(x = 1:100) #' #' # Combine with ggplot scale_xx functions #' library(ggplot2) #' #' # Create a basic plot #' p <- ggscatter(mtcars, x = "wt", y = "mpg") #' p #' #' # Increase the number of ticks #' p + #' scale_x_continuous(breaks = get_breaks(n = 10)) + #' scale_y_continuous(breaks = get_breaks(n = 10)) #' #' # Set ticks according to a specific step, starting from 0 #' p + scale_x_continuous( #' breaks = get_breaks(by = 1.5, from = 0), #' limits = c(0, 6) #' ) + #' scale_y_continuous( #' breaks = get_breaks(by = 10, from = 0), #' limits = c(0, 40) #' ) #' #' @export get_breaks <- function(n = NULL, by = NULL, from = NULL, to = NULL){ breaks <- ggplot2::waiver() if(!is.null(n)){ breaks <- get_breaks_number(n = n) } else if(is.numeric(by)){ breaks <- get_breaks_position(by = by, from = from, to = to) } breaks } # Set the number of breaks get_breaks_number <- function(n){ scales::breaks_extended(n = n) } # Set breaks using increasing step # Adapted from scales::breaks_extended get_breaks_position <- function(by, from = NULL, to = NULL){ by_default <- by from_default <- from to_default <- to function(x, by = by_default, from = from_default, to = to_default) { x <- x[is.finite(x)] if (length(x) == 0) { return(numeric()) } rng <- range(x) if( rng[1] > 0 & is.null(from)) from <- 0 xmin <- ifelse(is.null(from), floor(rng[1]), from) xmax <- ifelse(is.null(to), rng[2], to) seq(from = xmin, to = xmax, by = by) } } ggpubr/R/compare_means.R0000644000176200001440000003447413647503410014714 0ustar liggesusers#' @include utilities.R NULL #'Comparison of Means #'@description Performs one or multiple mean comparisons. #'@param formula a formula of the form \code{x ~ group} where \code{x} is a #' numeric variable giving the data values and \code{group} is a factor with #' one or multiple levels giving the corresponding groups. For example, #' \code{formula = TP53 ~ cancer_group}. #' #' It's also possible to perform the test for multiple response variables at #' the same time. For example, \code{formula = c(TP53, PTEN) ~ cancer_group}. #'@param data a data.frame containing the variables in the formula. #'@param method the type of test. Default is \link[stats]{wilcox.test}. Allowed #' values include: \itemize{ \item \code{\link[stats]{t.test}} (parametric) and #' \code{\link[stats]{wilcox.test}} (non-parametric). Perform comparison #' between two groups of samples. If the grouping variable contains more than #' two levels, then a pairwise comparison is performed. \item #' \code{\link[stats]{anova}} (parametric) and #' \code{\link[stats]{kruskal.test}} (non-parametric). Perform one-way ANOVA #' test comparing multiple groups. } #'@param paired a logical indicating whether you want a paired test. Used only #' in \code{\link[stats]{t.test}} and in \link[stats]{wilcox.test}. #'@param group.by a character vector containing the name of grouping variables. #'@param ref.group a character string specifying the reference group. If #' specified, for a given grouping variable, each of the group levels will be #' compared to the reference group (i.e. control group). #' #' \code{ref.group} can be also \code{".all."}. In this case, each of the #' grouping variable levels is compared to all (i.e. basemean). #'@param symnum.args a list of arguments to pass to the function #' \code{\link[stats]{symnum}} for symbolic number coding of p-values. For #' example, \code{symnum.args <- list(cutpoints = c(0, 0.0001, 0.001, #' 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns"))}. #' #' In other words, we use the following convention for symbols indicating #' statistical significance: \itemize{ \item \code{ns}: p > 0.05 \item #' \code{*}: p <= 0.05 \item \code{**}: p <= 0.01 \item \code{***}: p <= 0.001 \item \code{****}: p <= 0.0001 } #'@param p.adjust.method method for adjusting p values (see #' \code{\link[stats]{p.adjust}}). Has impact only in a situation, where #' multiple pairwise tests are performed; or when there are multiple grouping #' variables. Allowed values include "holm", "hochberg", "hommel", #' "bonferroni", "BH", "BY", "fdr", "none". If you don't want to adjust the p #' value (not recommended), use p.adjust.method = "none". #' #' Note that, when the \code{formula} contains multiple variables, the p-value #' adjustment is done independently for each variable. #'@return return a data frame with the following columns: #'\itemize{ #'\item \code{.y.}: the y variable used in the test. #'\item \code{group1,group2}: the compared groups in the pairwise tests. #'Available only when \code{method = "t.test"} or \code{method = "wilcox.test"}. #'\item \code{p}: the p-value. #'\item \code{p.adj}: the adjusted p-value. Default for \code{p.adjust.method = "holm"}. #'\item \code{p.format}: the formatted p-value. #'\item \code{p.signif}: the significance level. #'\item \code{method}: the statistical test used to compare groups. #' #' #'} #'@param ... Other arguments to be passed to the test function. #' @examples #' # Load data #' #::::::::::::::::::::::::::::::::::::::: #' data("ToothGrowth") #' df <- ToothGrowth #' #' # One-sample test #' #::::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ 1, df, mu = 0) #' #' # Two-samples unpaired test #' #::::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ supp, df) #' #' # Two-samples paired test #' #::::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ supp, df, paired = TRUE) #' #' # Compare supp levels after grouping the data by "dose" #' #:::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ supp, df, group.by = "dose") #' #' # pairwise comparisons #' #:::::::::::::::::::::::::::::::::::::::: #' # As dose contains more thant two levels ==> #' # pairwise test is automatically performed. #' compare_means(len ~ dose, df) #' #' # Comparison against reference group #' #:::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ dose, df, ref.group = "0.5") #' #' # Comparison against all #' #:::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ dose, df, ref.group = ".all.") #' #' # Anova and kruskal.test #' #:::::::::::::::::::::::::::::::::::::::: #' compare_means(len ~ dose, df, method = "anova") #' compare_means(len ~ dose, df, method = "kruskal.test") #' @rdname compare_means #' @export compare_means <- function(formula, data, method = "wilcox.test", paired = FALSE, group.by = NULL, ref.group = NULL, symnum.args = list(), p.adjust.method = "holm", ...) { . <- NULL method.info <- .method_info(method) method <- method.info$method method.name <- method.info$name if(.is_empty(symnum.args)) symnum.args <- list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns")) if(!inherits(data, "data.frame")) stop("data must be a data.frame.") variables <- response.var <- .formula_left_variables(formula) group <- .formula_right_variables(formula) if(group == "1") group <- NULL # NULL model if(!.is_empty(group)){ group.vals <- .select_vec(data, group) if(!is.factor(group.vals)) data[, group] <- factor(group.vals, levels = unique(group.vals)) } # Keep only variables of interest data <- data %>% df_select(vars = c(group.by, group, variables)) # Case of formula with multiple variables # 1. Gather the data # 2. group by variable # 3. Perform pairwise test between levels of each grouing variable #::::::::::::::::::::::::::::::::::::::::::::::::::::: # ex: formula = c(GATA3, XBP1, DEPDC1) ~ group if(.is_multi_formula(formula)){ data <- tidyr::gather_(data, key_col = ".y.", value_col = ".value.", gather_cols = variables) data$.y. <- factor(data$.y., levels = unique(data$.y.)) response.var <- ".value." group.by = c(group.by, ".y.") formula <- .collapse(response.var, group, sep = " ~ ") %>% stats::as.formula() } # Check if comparisons should be done against a reference group #::::::::::::::::::::::::::::::::::::::::::::::::::::: if(!is.null(ref.group)){ group.vals <- .select_vec(data, group) if(is.factor(group.vals)) group.levs <- levels(group.vals) else group.levs <- unique(group.vals) if(ref.group %in% group.levs){ data[, group] <- stats::relevel(group.vals, ref.group) } if(ref.group == ".all."){ data <- data %>% mutate(.group. = as.character(group.vals), .all. = ".all.") # Add 'all' column # Create a new grouping column gathering group and the .all. columns .group.name. <- NULL data <- data %>% tidyr::gather_(key_col = ".group.name.", value_col = ".group.", gather_cols = c(".group.", ".all.")) %>% dplyr::select(-.group.name.) data$.group. <- factor(data$.group., levels = c(".all.", group.levs)) group <- ".group." formula <- .collapse(response.var, group, sep = " ~ ") %>% stats::as.formula() } else if(!(ref.group %in% group.levs)){ stop("Can't find specified reference group: ", ref.group, ". ", "Allowed values include one of: ", .collapse(group.levs, sep = ", "), call. = FALSE) } } # Peform the test #::::::::::::::::::::::::::::::::::::::::::::::::::::: test.func <- .test_pairwise if(method %in% c("anova", "kruskal.test")) test.func <- .test_multigroups if(is.null(group.by)){ res <- test.func(formula = formula, data = data, method = method, paired = paired, p.adjust.method = "none", ...) } else{ grouped.d <- .group_by(data, group.by) res <- grouped.d %>% mutate(p = purrr::map( data, test.func, formula = formula, method = method, paired = paired, p.adjust.method = "none",...) ) %>% df_select(vars = c(group.by, "p")) %>% unnest(cols = "p") } # Add response variables to the result #::::::::::::::::::::::::::::::::::::::::::::::::::::: if(!c(".y." %in% colnames(res))) res <- res %>% dplyr::mutate(.y. = variables) %>% dplyr::select(!!!syms(c(group.by, ".y.")), dplyr::everything()) # Select only reference groups if any #:::::::::::::::::::::::::::::::::::::::::::::::::::::::: if(!is.null(ref.group)){ group.levs <- .select_vec(data, group) %>% .levels() group1 <- NULL res <- res %>% dplyr::filter(group1 == ref.group | group2 == ref.group) # ref.group should be always in group1 column # swap group1 and group2 if group2 contains ref.group group2 <- res$group2 res <- transform(res, group1 = ifelse(group2 == ref.group, group2, group1), group2 = ifelse(group2 == ref.group, group1, group2)) } # Formatting and adjusting pvalues, and adding significance symbols #::::::::::::::::::::::::::::::::::::::::::::::::::::: symnum.args$x <- res$p pvalue.signif <- do.call(stats::symnum, symnum.args) %>% as.character() pvalue.format <- format.pval(res$p, digits = 2) .y. <- p.adj <- NULL .p.adjust <- function(d, ...) {data.frame(p.adj = stats::p.adjust(d$p, ...))} by_y <- res %>% group_by(.y.) pvalue.adj <- do(by_y, .p.adjust(., method = p.adjust.method)) res <- res %>% dplyr::ungroup() %>% mutate(p.adj = pvalue.adj$p.adj, p.format = pvalue.format, p.signif = pvalue.signif, method = method.name) res %>% mutate(p.adj = signif(p.adj, digits = 2)) %>% tibble::as_tibble() } # Check and get test method info #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # return a list(method, name) .method_info <- function(method){ if(is.null(method)) method = "wilcox.test" allowed.methods <- list( t = "t.test", t.test = "t.test", student = "t.test", wiloxon = "wilcox.test", wilcox = "wilcox.test", wilcox.test = "wilcox.test", anova = "anova", aov = "anova", kruskal = "kruskal.test", kruskal.test = "kruskal.test") method.names <- list( t.test = "T-test", wilcox.test = "Wilcoxon", anova = "Anova", kruskal.test = "Kruskal-Wallis") if(!(method %in% names(allowed.methods))) stop("Non-supported method specified. Allowed methods are one of: ", .collapse(allowed.methods, sep =", ")) method <- allowed.methods[[method]] method.name <- method.names[[method]] list(method = method, name = method.name) } # Comparing two groups #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .test <- function(data, formula, method = "t.test", ...) { test <- match.fun(method) x <- deparse(formula[[2]]) group <- attr(stats::terms(formula), "term.labels") if(.is_empty(group)) # Case of null model test.opts <- list(x = .select_vec(data, x), ...) else test.opts <- list(formula = formula, data = data, ...) res <- data.frame(p = suppressWarnings(do.call(test, test.opts)$p.value)) group1 <- group2 <- NULL if(!.is_empty(group)){ group.lev <- .select_vec(data, group) %>% levels() res <- res %>% dplyr::mutate( group1 = group.lev[1], group2 = group.lev[2] ) %>% dplyr::select(group1,group2, dplyr::everything()) } else res <- res %>% dplyr::mutate(group1 = 1, group2 = "null model") %>% dplyr::select(group1, group2, everything()) res } # pairwise test #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .test_pairwise <- function(data, formula, method = "wilcox.test", paired = FALSE, pool.sd = !paired, ...) { x <- deparse(formula[[2]]) group <- attr(stats::terms(formula), "term.labels") # One sample test if(.is_empty(group)){ res <- .test(data, formula, method = method, ...) return(res) } # Pairwise test method <- switch(method, t.test = "pairwise.t.test", wilcox.test = "pairwise.wilcox.test") test <- match.fun(method) test.opts <- list(x = .select_vec(data, x), g = .select_vec(data, group), paired = paired, ...) # if(method == "pairwise.wilcox.test") test.opts$exact <- FALSE if(method == "pairwise.t.test"){ if(missing(pool.sd)){ if(!paired) pool.sd <- FALSE } test.opts$pool.sd <- pool.sd } pvalues <- suppressWarnings(do.call(test, test.opts)$p.value) %>% as.data.frame() group1 <- group2 <- p <- NULL pvalues$group2 <- rownames(pvalues) pvalues <- pvalues %>% tidyr::gather(key = "group1", value = "p", -group2) %>% dplyr::select(group1, group2, p) %>% dplyr::filter(!is.na(p)) pvalues } # Compare multiple groups #:::::::::::::::::::::::::::::::::::::::::::::::::: .test_multigroups <- function(data, formula, method = c("anova", "kruskal.test"), ...){ method <- match.arg(method) . <- NULL if(method == "anova") pvalue <- stats::lm(formula, data = data) %>% stats::anova(.) %>% .$`Pr(>F)` %>% .[1] else if(method == "kruskal.test"){ pvalue <- stats::kruskal.test(formula, data = data)$p.value } data.frame(p = pvalue) } # Formula with multiple response variables #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # ex formula = c(GATA3, XBP1, DEPDC1) ~ group .is_multi_formula <- function(formula){ x <- grep(",", formula) !.is_empty(x) } # Get formula variables .formula_left_variables <- function(formula){ . <- NULL x <- deparse(formula[[2]]) %>% gsub("c\\(|\\)|\\s", "", .) %>% strsplit(",") %>% unlist() x } .formula_right_variables <- function(formula){ group <- attr(stats::terms(formula), "term.labels") if(.is_empty(group)) group <- "1" group } .update_test_arguments <- function(formula, data, group.by){ variables <- .formula_left_variables(formula) group <- .formula_right_variables(formula) data <- tidyr::gather_(data, key_col = ".y.", value_col = ".value.", gather_cols = variables) data$.y. <- factor(data$.y., levels = unique(data$.y.)) formula <- .collapse(".value.", group, sep = " ~ ") %>% stats::as.formula() group.by = c(group.by, ".y.") } ggpubr/R/ggdotplot.R0000644000176200001440000001371513666557411014114 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Dot plot #' @description Create a dot plot. #' @inheritParams ggboxplot #' @param binwidth numeric value specifying bin width. use value between 0 and 1 #' when you have a strong dense dotplot. For example binwidth = 0.2. #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_dotplot}}, \code{\link{ggpar}} and #' \code{\link{facet}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #'@seealso \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggboxplot}} #' and \code{\link{ggstripchart}}. #' @examples #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' #' # Basic plot with summary statistics : mean_sd #' # +++++++++++++++++++++++++++ #' ggdotplot(df, x = "dose", y = "len", #' add = "mean_sd") #' #' # Change error.plot to "crossbar" #' ggdotplot(df, x = "dose", y = "len", #' add = "mean_sd", add.params = list(width = 0.5), #' error.plot = "crossbar") #' #' #' # Add box plot #' ggdotplot(df, x = "dose", y = "len", #' add = "boxplot") #' #' # Add violin + mean_sd #' ggdotplot(df, x = "dose", y = "len", #' add = c("violin", "mean_sd")) #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' # Change fill and outline colors by groups: dose #' # Use custom color palette #' ggdotplot(df, "dose", "len", #' add = "boxplot", #' color = "dose", fill = "dose", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' #' # Plot with multiple groups #' # +++++++++++++++++++++ #' # Change color by a second group : "supp" #' ggdotplot(df, "dose", "len", fill = "supp", color = "supp", #' palette = c("#00AFBB", "#E7B800")) #' #' #' @export ggdotplot <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "lightgray", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, size = NULL, binwidth = NULL, select = NULL, remove = NULL, order = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, size = size, binwidth = binwidth, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggdotplot_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggdotplot_core <- function(data, x, y, color = "black", fill = "lightgray", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, size = NULL, dotsize = size, binwidth = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", position = position_dodge(0.8), ggtheme = theme_pubr(), ...) { if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) . <- NULL p <- ggplot(data, create_aes(list(x = x, y = y))) if("none" %in% add) add <- "none" if(is.null(add.params$fill)) add.params$fill <- "white" add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) # plot boxplot | violin | crossbar before jitter if( any( c("boxplot", "violin") %in% add)){ p <- add.params %>% .add_item(p = p, add = intersect(add, c("boxplot", "violin") )) %>% do.call(ggadd, .) } if(error.plot == "crossbar"){ p <- add.params %>% .add_item(p = p, error.plot = error.plot, add = setdiff(add, c("boxplot", "violin", "jitter"))) %>% do.call(ggadd, .) } # Plot jitter p <- p + geom_exec(geom_dotplot, data = data, binaxis = "y", stackdir = "center", color = color, fill = fill, position = position, stackratio = 1, dotsize = dotsize, binwidth = binwidth, ...) # Add errors if(error.plot == "crossbar"){} else p <- add.params %>% .add_item(p = p, error.plot = error.plot, add = setdiff(add, c("boxplot", "violin", "jitter"))) %>% do.call(ggadd, .) p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/geom_bracket.R0000644000176200001440000004030313673600076014516 0ustar liggesusers#' @include utilities.R NULL StatBracket <- ggplot2::ggproto("StatBracket", ggplot2::Stat, required_aes = c("x", "y", "group"), setup_params = function(data, params) { if(length(params$tip.length) == 1) params$tip.length <- rep(params$tip.length, max(length(params$xmin), 1) * 2) if(length(params$tip.length) == length(params$xmin)) params$tip.length <- rep(params$tip.length, each=2) return(params) }, compute_group = function(data, scales, tip.length) { yrange <- scales$y$range$range y.scale.range <- yrange[2] - yrange[1] bracket.shorten <- data$bracket.shorten/2 xmin <- data$xmin + bracket.shorten xmax <- data$xmax - bracket.shorten y.position <- data$y.position + (y.scale.range*data$step.increase) + data$bracket.nudge.y label <- data$label if(is.character(xmin)){ xmin <- scales$x$map(xmin) } if(is.character(xmax)){ xmax <- scales$x$map(xmax) } if("tip.length" %in% colnames(data)){ tip.length <- rep(data$tip.length, each=2) } # Preparing bracket data data <- dplyr::bind_rows(data, data, data) data$x <- c(xmin, xmin, xmax) data$xend = c(xmin, xmax, xmax) data$y <- c(y.position - y.scale.range*tip.length[seq_len(length(tip.length))%% 2 == 1], y.position, y.position) data$yend <- c(y.position, y.position, y.position-y.scale.range*tip.length[seq_len(length(tip.length))%% 2 == 0]) data$annotation <- rep(label, 3) data } ) #' Add Brackets with Labels to a GGPlot #' @description add brackets with label annotation to a ggplot. Helpers for #' adding p-value or significance levels to a plot. #' @param label character vector with alternative label, if not null test is #' ignored #' @param type the label type. Can be one of "text" and "expression" (for #' parsing plotmath expression). #' @param xmin numeric vector with the positions of the left sides of the #' brackets #' @param xmax numeric vector with the positions of the right sides of the #' brackets #' @param y.position numeric vector with the y positions of the brackets #' @param size change the width of the lines of the bracket #' @param label.size change the size of the label text #' @param family change the font used for the text #' @param vjust move the text up or down relative to the bracket #' @param step.increase numeric vector with the increase in fraction of total #' height for every additional comparison to minimize overlap. #' @param bracket.nudge.y Vertical adjustment to nudge brackets by. Useful to #' move up or move down the bracket. If positive value, brackets will be moved #' up; if negative value, brackets are moved down. #' @param bracket.shorten a small numeric value in [0-1] for shortening the with #' of bracket. #' @param step.group.by a variable name for grouping brackets before adding #' step.increase. Useful to group bracket by facet panel. #' @param tip.length numeric vector with the fraction of total height that the #' bar goes down to indicate the precise column #' @param na.rm If \code{FALSE} (the default), removes missing values with a #' warning. If \code{TRUE} silently removes missing values. #' @param coord.flip logical. If \code{TRUE}, flip x and y coordinates so that #' horizontal becomes vertical, and vertical, horizontal. When adding the #' p-values to a horizontal ggplot (generated using #' \code{\link[ggplot2]{coord_flip}()}), you need to specify the option #' \code{coord.flip = TRUE}. #' @param ... other arguments passed on to \code{\link{layer}}. These are often #' aesthetics, used to set an aesthetic to a fixed value, like \code{color = #' "red"} or \code{size = 3}. They may also be parameters to the paired #' geom/stat. #' @inheritParams ggplot2::layer #' @examples #' df <- ToothGrowth #' df$dose <- factor(df$dose) #' #' # Add bracket with labels #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' xmin = "0.5", xmax = "1", y.position = 30, #' label = "t-test, p < 0.05" #' ) #' #' # Customize bracket tip.length tip.length #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' xmin = "0.5", xmax = "1", y.position = 30, #' label = "t-test, p < 0.05", tip.length = c(0.2, 0.02) #' ) #' #' #Using plotmath expression #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' xmin = "0.5", xmax = "1", y.position = 30, #' label = "list(~italic(p)<=0.001)", type = "expression", #' tip.length = c(0.2, 0.02) #' ) #' #' # Specify multiple brackets manually #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' xmin = c("0.5", "1"), xmax = c("1", "2"), #' y.position = c(30, 35), label = c("***", "**"), #' tip.length = 0.01 #' ) #' #' # Compute statistical tests and add p-values #' stat.test <- compare_means(len ~ dose, ToothGrowth, method = "t.test") #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' aes(xmin = group1, xmax = group2, label = signif(p, 2)), #' data = stat.test, y.position = 35 #' ) #' #' # Increase step length between brackets #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' aes(xmin = group1, xmax = group2, label = signif(p, 2)), #' data = stat.test, y.position = 35, step.increase = 0.1 #' ) #' #' # Or specify the positions of each comparison #' ggboxplot(df, x = "dose", y = "len") + #' geom_bracket( #' aes(xmin = group1, xmax = group2, label = signif(p, 2)), #' data = stat.test, y.position = c(32, 35, 38) #' ) #' @rdname geom_bracket #' @export stat_bracket <- function(mapping = NULL, data = NULL, position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, label = NULL, type = c("text", "expression"), y.position=NULL, xmin = NULL, xmax = NULL, step.increase = 0, step.group.by = NULL, tip.length = 0.03, bracket.nudge.y = 0, bracket.shorten = 0, size = 0.3, label.size = 3.88, family="", vjust = 0, ...) { if(! is.null(data) & ! is.null(mapping)){ if(! "x" %in% names(data)) mapping$x <- 1 if(! "y" %in% names(data)) mapping$y <- 1 } type <- match.arg(type) ggplot2::layer( stat = StatBracket, data = data, mapping = mapping, geom = "bracket", position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list( label=label, type = type, y.position=y.position,xmin=xmin, xmax=xmax, step.increase=step.increase, bracket.nudge.y = bracket.nudge.y, bracket.shorten = bracket.shorten, step.group.by = step.group.by, tip.length=tip.length, size=size, label.size=label.size, family=family, vjust=vjust, na.rm = na.rm, ...) ) } GeomBracket <- ggplot2::ggproto("GeomBracket", ggplot2::Geom, required_aes = c("x", "xend", "y", "yend", "annotation"), default_aes = ggplot2::aes( shape = 19, colour = "black", label.size = 3.88, angle = NULL, hjust = 0.5, vjust = 0, alpha = NA, family = "", fontface = 1, lineheight = 1.2, linetype=1, size = 0.3, xmin = NULL, xmax = NULL, label = NULL, y.position = NULL, step.increase = 0, bracket.nudge.y = 0, bracket.shorten = 0 # Added to avoid aesthetics warning ), # draw_key = function(...){grid::nullGrob()}, # for legend: draw_key = draw_key_path, draw_group = function(data, panel_params, coord, type = "text", coord.flip = FALSE) { lab <- as.character(data$annotation) if(type == "expression"){ lab <- parse_as_expression(lab) } coords <- coord$transform(data, panel_params) label.x <- mean(c(coords$x[1], tail(coords$xend, n=1))) label.y <- max(c(coords$y, coords$yend))+0.01 label.angle <- coords$angle if(coord.flip){ label.y <- mean(c(coords$y[1], tail(coords$yend, n=1))) label.x <- max(c(coords$x, coords$xend))+0.01 if(is.null(label.angle)) label.angle <- -90 } if(is.null(label.angle)) label.angle <- 0 grid::gList( grid::textGrob( label = lab, x = label.x, y = label.y, default.units = "native", hjust = coords$hjust, vjust = coords$vjust, rot = label.angle, gp = grid::gpar( col = scales::alpha(coords$colour, coords$alpha), fontsize = coords$label.size * ggplot2::.pt, fontfamily = coords$family, fontface = coords$fontface, lineheight = coords$lineheight ) ), grid::segmentsGrob( coords$x, coords$y, default.units = "native", coords$xend, coords$yend, gp = grid::gpar( col = scales::alpha(coords$colour, coords$alpha), lty = coords$linetype, lwd = coords$size * ggplot2::.pt ) ) ) } ) #' @rdname geom_bracket #' @export geom_bracket <- function(mapping = NULL, data = NULL, stat = "bracket", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, label = NULL, type = c("text", "expression"), y.position = NULL, xmin = NULL, xmax = NULL, step.increase = 0, step.group.by = NULL, tip.length = 0.03, bracket.nudge.y = 0, bracket.shorten = 0, size = 0.3, label.size = 3.88, family="", vjust = 0, coord.flip = FALSE, ...) { type <- match.arg(type) data <- build_signif_data( data = data, label = label, y.position = y.position, xmin = xmin, xmax = xmax, step.increase = step.increase, bracket.nudge.y = bracket.nudge.y, bracket.shorten = bracket.shorten, step.group.by = step.group.by, vjust = vjust ) mapping <- build_signif_mapping(mapping, data) ggplot2::layer( stat = stat, geom = GeomBracket, mapping = mapping, data = data, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list( type = type, tip.length = tip.length, size = size, label.size = label.size, family = family, na.rm = na.rm, coord.flip = coord.flip, ... ) ) } # Guess column to be used as significance labem guess_signif_label_column <- function(data){ potential.label <- c( "label", "labels", "p.adj.signif", "p.adj", "padj", "p.signif", "p.value", "pval", "p.val", "p" ) res <- intersect(potential.label, colnames(data)) if(length(res) > 0){ res <- res[1] } else{ stop("label is missing") } res } build_signif_data <- function(data = NULL, label = NULL, y.position = NULL, xmin = NULL, xmax = NULL, step.increase = 0, bracket.nudge.y = 0, bracket.shorten = 0, step.group.by = NULL, vjust = 0){ add_step_increase <- function(data, step.increase){ comparisons.number <- 0:(nrow(data)-1) step.increase <- step.increase*comparisons.number data <- data %>% mutate(step.increase = !!step.increase) data } if(is.null(data)){ data <- data.frame( label = label, y.position = y.position, xmin = xmin, xmax = xmax ) %>% mutate(vjust = !!vjust) } else{ if(!is.null(label)) data <- data %>% mutate(label = !!label) if(!is.null(y.position)) data <- data %>% mutate(y.position = !!y.position) if(!is.null(xmin)) data <- data %>% mutate(xmin = !!xmin) if(!is.null(xmax)) data <- data %>% mutate(xmax = !!xmax) if(!identical(vjust, 0)) data <- data %>% mutate(vjust = !!vjust) } # add vjust column if doesn't exist if(!("vjust" %in% colnames(data))) data <- data %>% mutate(vjust = !!vjust) if(!("bracket.nudge.y" %in% colnames(data))) data <- data %>% mutate(bracket.nudge.y = !!bracket.nudge.y) if(!("bracket.shorten" %in% colnames(data))) data <- data %>% mutate(bracket.shorten= !!bracket.shorten) if(is.null(step.group.by)){ data <- data %>% add_step_increase(step.increase) } else{ data <- data %>% dplyr::arrange(!!!syms(c(step.group.by, "y.position"))) %>% group_by(!!!syms(step.group.by)) %>% tidyr::nest() %>% dplyr::mutate(step.increase = purrr::map(data, add_step_increase, !!step.increase)) %>% dplyr::select(-data) %>% unnest(cols = "step.increase") } data } build_signif_mapping <- function(mapping, data){ if(is.null(mapping)){ # Check if required variables are present in data required.vars <- c("xmin", "xmax", "y.position") missing.required.vars <- setdiff(required.vars, colnames(data)) if(length(missing.required.vars) > 0){ stop( "Required variables are missing in the data: ", paste(missing.required.vars, collapse = ", ") ) } mapping <- ggplot2::aes() } if(is.null(mapping$label)){ label.col <- guess_signif_label_column(data) data$label <- data %>% dplyr::pull(!!label.col) mapping$label <- data$label } if(is.null(mapping$xmin)) mapping$xmin <- data$xmin if(is.null(mapping$xmax)) mapping$xmax <- data$xmax if(is.null(mapping$y.position)) mapping$y.position <- data$y.position if(is.null(mapping$group)) mapping$group <- 1:nrow(data) if(is.null(mapping$step.increase)) mapping$step.increase <- data$step.increase if(is.null(mapping$vjust)) mapping$vjust <- data$vjust if(is.null(mapping$bracket.nudge.y)) mapping$bracket.nudge.y <- data$bracket.nudge.y if(is.null(mapping$bracket.shorten)) mapping$bracket.shorten <- data$bracket.shorten if(! "x" %in% names(mapping)){ mapping$x <- mapping$xmin } if(! "y" %in% names(mapping)){ mapping$y <- mapping$y.position } mapping } # Source: https://github.com/tidyverse/ggplot2/issues/2864 parse_as_expression <- function(text) { stopifnot(is.character(text)) out <- vector("expression", length(text)) for (i in seq_along(text)) { expr <- parse(text = text[[i]]) out[[i]] <- if (length(expr) == 0) NA else expr[[1]] } out } ggpubr/R/ggdotchart.R0000644000176200001440000002311313670075756014232 0ustar liggesusers#' @include utilities.R ggpar.R stat_chull.R stat_conf_ellipse.R NULL #' Cleveland's Dot Plots #' @description Draw a Cleveland dot plot. #' @inheritParams ggboxplot #' @inheritParams ggpar #' @param data a data frame #' @param x,y x and y variables for drawing. #' @param color,size points color and size. #' @param dot.size numeric value specifying the dot size. #' @param shape point shape. See \code{\link{show_point_shapes}}. #' @param label the name of the column containing point labels. #' @param group an optional column name indicating how the elements of x are #' grouped. #' @param sorting a character vector for sorting into ascending or descending #' order. Allowed values are one of "descending", "ascending" and "none". Partial #' match are allowed (e.g. sorting = "desc" or "asc"). Default is #' "descending". #' @param x.text.col logical. If TRUE (default), x axis texts are colored by #' groups. #' @param position Position adjustment, either as a string, or the result of a #' call to a position adjustment function. #' @param ... other arguments to be passed to \code{\link[ggplot2]{geom_point}} #' and \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' df$name <- rownames(df) #' head(df[, c("wt", "mpg", "cyl")], 3) #' #' # Basic plot #' ggdotchart(df, x = "name", y ="mpg", #' ggtheme = theme_bw()) #' #' # Change colors by group cyl #' ggdotchart(df, x = "name", y = "mpg", #' group = "cyl", color = "cyl", #' palette = c('#999999','#E69F00','#56B4E9'), #' rotate = TRUE, #' sorting = "descending", #' ggtheme = theme_bw(), #' y.text.col = TRUE ) #' #' #'# Plot with multiple groups #'# +++++++++++++++++++++ #'# Create some data #'df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), #' dose=rep(c("D0.5", "D1", "D2"),2), #' len=c(6.8, 15, 33, 4.2, 10, 29.5)) #'print(df2) #' #'ggdotchart(df2, x = "dose", y = "len", #' color = "supp", size = 3, #' add = "segment", #' add.params = list(color = "lightgray", size = 1.5), #' position = position_dodge(0.3), #' palette = "jco", #' ggtheme = theme_pubclean() #') #' #' #' @export ggdotchart <- function(data, x, y, group = NULL, combine = FALSE, color = "black", palette = NULL, shape = 19, size = NULL, dot.size = size, sorting = c("ascending", "descending", "none"), add = c("none", "segment"), add.params = list(), x.text.col = TRUE, rotate = FALSE, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, position = "identity", ggtheme = theme_pubr(), ...){ # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( data = data, x = x, y = y, group = group, combine = combine, color = color, palette = palette, shape = shape, size = size, dot.size = dot.size, sorting = sorting, x.text.col = x.text.col, rotate = rotate, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, select = select , remove = remove, order = order, add = add, add.params = add.params, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, position = position, ggtheme = ggtheme, ...) # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggdotchart_core .opts$fun_name <- "ggdotchart" if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggdotchart_core <- function(data, x, y, group = NULL, color = "black", palette = NULL, shape = 19, size = NULL, dot.size = size, sorting = c("ascending", "descending", "none"), add = c("none", "segments"), add.params = list(), x.text.col = FALSE, rotate = FALSE, title = NULL, xlab = NULL, ylab = NULL, ggtheme = theme_bw(), position = "identity", ...) { add <- match.arg(add) if(!is.null(group)){ if(group == 1) group <- NULL } # if(is.null(group) & color[1] %in% names(data)){ # group <- color[1] # } .dots <- list(...) sorting <- match.arg(sorting) decreasing <- ifelse(sorting == "descending", FALSE, TRUE) x.text.angle <- ifelse(rotate, 0, 90) if(!is.null(.dots$y.text.col)) x.text.col <- .dots$y.text.col data <- as.data.frame(data) label <- .select_vec(data, x) . <- NULL if(rotate & sorting == "descending") sorting <- "ascending" else if(rotate & sorting == "ascending") sorting <- "descending" if(sorting != "none"){ if(is.null(group)){ if(sorting == "descending") data <- arrange(data, desc(!!sym(y))) else if(sorting == "ascending") data <- arrange(data, !!sym(y)) } else if(group != 1){ if(sorting == "descending") data <- arrange(data, !!sym(group), desc(!!sym(y))) else if(sorting == "ascending") data <- arrange(data, !!!syms(c(group, y))) } data[, x] <- factor(data[, x], levels = unique(as.vector(data[, x]))) } if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) p <- ggplot(data, create_aes(list(x = x, y = y))) if(add == "segments"){ seg.opts <- geom_exec(data = data, color = color, size = size, position = position) mapping <- seg.opts$mapping %>% .add_item(x = x, ymin = 0, ymax = y, group = group) option <- seg.opts$option # mapping <- seg.opts$mapping %>% # .add_item(y = 0, x = x, yend = y, xend = x) # option <- seg.opts$option seg.col <- "lightgray" if(!is.null(add.params$color)) seg.col <- add.params$color else if(!is.null(add.params$colour)) seg.col <- add.params$colour if(seg.col %in% names(data)) mapping$color <- seg.col else option$color <- seg.col if(!is.null(add.params$size)) option$size <- add.params$size # if(!is.null(add.params$color)) # option$color <- add.params$color # else if(!is.null(add.params$colour)) # option$color <- add.params$colour # if(!is.null(add.params$size)) # option$size <- add.params$size option[["mapping"]] <- create_aes(mapping) p <- p + do.call(geom_linerange, option) } p <- p + geom_exec(geom_point, data = data, shape = shape, color = color, size = dot.size, position = position) p <- ggpar(p, palette = palette, ggtheme = ggtheme, x.text.angle = x.text.angle, title = title, xlab = xlab, ylab = ylab, ...) # Change x axis text colors if(x.text.col){ if(!rotate) p <- .set_x_text_col(p, label, x.text.angle) else p <- .set_y_text_col(p, label, x.text.angle) } if(x.text.angle == 90 & !rotate){ p <- p + theme(axis.text.x = element_text(vjust = 0.5)) } if(rotate) p <- p + coord_flip() p } # Set x text color .set_x_text_col <- function(p, label, angle){ g <- ggplot2::ggplot_build(p) cols <- unlist(g$data[[1]]["colour"]) names(cols) <- as.vector(label) # Give every color an appropriate name p + theme(axis.text.x = element_text(colour = cols, angle = angle, hjust = 1)) } # Set y text color .set_y_text_col <- function(p, label, angle){ g <- ggplot2::ggplot_build(p) cols <- unlist(g$data[[1]]["colour"]) names(cols) <- as.vector(label) # Give every color an appropriate name p + theme(axis.text.y = element_text(colour = cols)) } # Helper functions # +++++++++++++++++++++++++ #' @export #' @rdname ggdotchart theme_cleveland <- function(rotate = TRUE){ if(rotate){ theme(panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank(), panel.grid.major.y = element_line(colour = "grey70", linetype = "dashed"), axis.title.y = element_blank(), axis.ticks.y = element_blank()) } else{ theme(panel.grid.major.x = element_line(colour = "grey70", linetype = "dashed"), panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), axis.title.x = element_blank(), axis.ticks.x = element_blank()) } } ggpubr/R/utilities.R0000644000176200001440000010567213667141463014125 0ustar liggesusers#' @include desc_statby.R utilities_base.R utilities_color.R NULL #' @import ggplot2 #' @importFrom magrittr %>% #' @importFrom rstatix df_group_by df_nest_by df_select df_arrange #' @importFrom tibble as_tibble #' @importFrom dplyr group_by mutate mutate_if group_nest arrange desc #' @importFrom purrr map2 map #' @importFrom tidyr unite #' @importFrom dplyr do #' @importFrom dplyr summarise #' @importFrom dplyr everything #' @importFrom grid drawDetails #' @importFrom rlang !! #' @importFrom rlang !!! #' @importFrom rlang syms .data required_package <- function(pkg){ if (!requireNamespace(pkg, quietly = TRUE)) { stop( pkg, " package needed to be installed before using this function. ", "Type this in R: install.packages('", pkg, "')" ) } } # Unnesting, adapt to tidyr 1.0.0 unnest <- function(data, cols = "data", ...){ if(is_pkg_version_sup("tidyr", "0.8.3")){ results <- tidyr::unnest(data, cols = cols, ...) } else {results <- tidyr::unnest(data, ...)} results } # Check if an installed package version is superior to a specified version # Version, pkg: character vector is_pkg_version_sup<- function(pkg, version){ vv <- as.character(utils::packageVersion(pkg)) cc <- utils::compareVersion(vv, version) > 0 cc } keep_only_tbl_df_classes <- function(x){ toremove <- setdiff(class(x), c("tbl_df", "tbl", "data.frame")) if(length(toremove) > 0){ class(x) <- setdiff(class(x), toremove) } x } #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Execute a geom_* function from ggplot2 #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # geomfunc : gem_*() functions # data data for mapping # ... argument accepeted by the function # return a plot if geomfunc!=Null or a list(option, mapping) if geomfunc = NULL .geom_exec <- function (geomfunc = NULL, data = NULL, position = NULL, ...) { geom_exec(geomfunc = geomfunc, data = data, position = position, ...) } # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Official argument from ggplot2 # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # bar plot arguments .barplot_params <- function(...){ x <- list(...) res <- list() res$width <- x$width res$binwidth <- x$binwidth res$na.rm <- ifelse(!is.null(x$na.rm), x$na.rm, FALSE) res$show.legend <- ifelse(!is.null(x$show.legend), x$show.legend, NA) res$inherit.aes <- ifelse(!is.null(x$inherit.aes), x$inherit.aes, TRUE) return(res) } # box plot arguments .boxplot_params <- function(...){ x <- list(...) res <- list() res$outlier.colour <- x$outlier.colour res$outlier.shape <- ifelse(!is.null(x$outlier.shape), x$outlier.shape, 19) res$outlier.size <- ifelse(!is.null(x$outlier.size), x$outlier.size, 1.5) res$outlier.stroke <- ifelse(!is.null(x$outlier.stroke), x$outlier.stroke, 0.5) res$notch <- ifelse(!is.null(x$notch), x$notch, FALSE) res$notchwidth <- ifelse(!is.null(x$notchwidth), x$notchwidth, 0.5) res$varwidth <- ifelse(!is.null(x$varwidth), x$varwidth, FALSE) res$na.rm <- ifelse(!is.null(x$na.rm), x$na.rm, FALSE) res$show.legend <- ifelse(!is.null(x$show.legend), x$show.legend, NA) res$inherit.aes <- ifelse(!is.null(x$inherit.aes), x$inherit.aes, TRUE) return(res) } .dotplot_params <- function(...){ x <- list(...) res <- list() res$stackratio <- ifelse(!is.null(x$stackratio ), x$stackratio, 1) res$width <- ifelse(!is.null(x$width), x$width, 0.9) return(res) } .violin_params <- function(...){ x <- list(...) res <- list() res$stat <- ifelse(!is.null(x$stat ), x$stat, "ydensity") res$draw_quantiles <- x$draw_quantiles res$scale <- ifelse(!is.null(x$scale), x$scale, "area") res$trim <- ifelse(!is.null(x$trim), x$trim, TRUE) return(res) } .hist_params <- function(...){ x <- list(...) res <- list() res$binwidth <- x$binwidth res$bins <- x$bins return(res) } .standard_params <- function(...){ x <- list(...) res <- list() res$color <- ifelse(!is.null(x$color), x$color, "black") res$color <- ifelse(!is.null(x$colour), x$colour, res$color) res$linetype <- ifelse(!is.null(x$linetype), x$linetype, "solid") res$size <- ifelse(!is.null(x$size), x$size, 1) res$fill <- ifelse(!is.null(x$fill), x$fill, "black") res$shape <- ifelse(!is.null(x$shape), x$shape, 19) res } #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Graphical parameters #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Set plot orientation # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_orientation <- function(p, orientation = c("vertical", "horizontal", "reverse")) { ori <- match.arg(orientation) if (ori == "horizontal") p + coord_flip() else if (ori == "reverse") p + scale_y_reverse() else p } # Change title and labels # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .labs <- function(p, main = NULL, xlab = NULL, ylab = NULL, font.main = NULL, font.x = NULL, font.y = NULL, submain = NULL, caption = NULL, font.submain = NULL, font.caption = NULL) { font.main <- .parse_font(font.main) font.x <- .parse_font(font.x) font.y <- .parse_font(font.y) font.submain <- .parse_font(font.submain) font.caption <- .parse_font(font.caption) if(is.logical(main)){ if(!main) main <- NULL } if(is.logical(submain)){ if(!submain) submain <- NULL } if(is.logical(caption)){ if(!caption) caption <- NULL } if (!is.null(main)) { p <- p + labs(title = main) } if (!is.null(submain)) { p <- p + labs(subtitle = submain) } if (!is.null(caption)) { p <- p + labs(caption = caption) } if (!is.null(xlab)) { if (xlab == FALSE) p <- p + theme(axis.title.x = element_blank()) else p <- p + labs(x = xlab) } if (!is.null(ylab)) { if (ylab == FALSE) p <- p + theme(axis.title.y = element_blank()) else p <- p + labs(y = ylab) } if (!is.null(font.main)) p <- p + theme( plot.title = element_text( size = font.main$size, lineheight = 1.0, face = font.main$face, colour = font.main$color ) ) if (!is.null(font.submain)) p <- p + theme( plot.subtitle = element_text( size = font.submain$size, lineheight = 1.0, face = font.submain$face, colour = font.submain$color ) ) if (!is.null(font.caption)) p <- p + theme( plot.caption = element_text( size = font.caption$size, lineheight = 1.0, face = font.caption$face, colour = font.caption$color ) ) if (!is.null(font.x)) p <- p + theme(axis.title.x = element_text( size = font.x$size, face = font.x$face, colour = font.x$color )) if (!is.null(font.y)) p <- p + theme(axis.title.y = element_text( size = font.y$size, face = font.y$face, colour = font.y$color )) p } # ticks # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_ticks <- function(ticks = TRUE, tickslab = TRUE, font.tickslab = NULL, xtickslab.rt = NULL, ytickslab.rt = NULL, font.xtickslab = font.tickslab, font.ytickslab = font.tickslab) { . <- xhjust <- NULL if(!is.null(xtickslab.rt)) { if(xtickslab.rt > 5) xhjust <- 1 } else xhjust <- NULL if (ticks) ticks <- element_line(colour = "black") else ticks <- element_blank() if (is.null(font.xtickslab)) font.x <- list() else font.x <- .parse_font(font.xtickslab) if (is.null(font.ytickslab)) font.y <- list() else font.y <- .parse_font(font.ytickslab) if (tickslab) { xtickslab <- font.x %>% .add_item(hjust = xhjust, angle = xtickslab.rt) %>% do.call(element_text, .) ytickslab <- font.y %>% .add_item(angle = ytickslab.rt) %>% do.call(element_text, .) } else { xtickslab <- element_blank() ytickslab <- element_blank() } theme( axis.ticks = ticks, axis.text.x = xtickslab, axis.text.y = ytickslab ) } # Change Axis limits # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_axis_limits <- function(xlim = NULL, ylim = NULL){ if(!is.null(xlim) | !is.null(ylim)) coord_cartesian(xlim, ylim) } # Axis scales # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_scale <- function (p, xscale = c("none", "log2", "log10", "sqrt"), yscale = c("none", "log2", "log10", "sqrt"), format.scale = FALSE) { xscale <- match.arg(xscale) yscale <- match.arg(yscale) .x <- ".x" if(format.scale){ if(!requireNamespace("scales")) stop("The R package 'scales' is required.") if(yscale == "log2"){ p <- p + scale_y_continuous(trans = scales::log2_trans(), breaks = scales::trans_breaks("log2", function(x) 2^x), labels = scales::trans_format("log2", scales::math_format(2^.x))) } else if(yscale == "log10"){ p <- p + scale_y_continuous(trans = scales::log10_trans(), breaks = scales::trans_breaks("log10", function(x) 10^x), labels = scales::trans_format("log10", scales::math_format(10^.x))) } if(xscale == "log2"){ p <- p + scale_x_continuous(trans = scales::log2_trans(), breaks = scales::trans_breaks("log2", function(x) 2^x), labels = scales::trans_format("log2", scales::math_format(2^.x))) } else if(xscale == "log10"){ p <- p + scale_x_continuous(trans = scales::log10_trans(), breaks = scales::trans_breaks("log10", function(x) 10^x), labels = scales::trans_format("log10", scales::math_format(10^.x))) } } else{ if(xscale != "none") p <- p + scale_x_continuous(trans = xscale) if(yscale != "none") p <- p + scale_y_continuous(trans = yscale) } p } # Legends # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_legend <- function(p, legend = NULL, legend.title = NULL, font.legend = NULL) { if(is.null(legend.title)) legend.title = waiver() font <- .parse_font(font.legend) if(!is.null(legend)) p <- p + theme(legend.position = legend) if(!.is_empty(legend.title)){ if(.is_list(legend.title)) p <- p + do.call(ggplot2::labs, legend.title) else p <- p + labs(color = legend.title, fill = legend.title, linetype = legend.title, shape = legend.title) } if(!is.null(font)){ p <- p + theme( legend.text = element_text(size = font$size, face = font$face, colour = font$color), legend.title = element_text(size = font$size, face = font$face, colour = font$color) ) } p } # Set ticks by # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .set_ticksby <- function(p, xticks.by = NULL, yticks.by = NULL) { if(!is.null(yticks.by)) { # Forcing ymin to start at 0 when distribution plot gg_mapping <- .get_gg_xy_variables(p) is_density_plot <- gg_mapping["y"] %in% c("..count..", "..density..", "..ecdf..") ymin <- NULL if(is_density_plot) ymin <- 0 p <- p + scale_y_continuous(breaks = get_breaks(by = yticks.by, from = ymin)) } else if(!is.null(xticks.by)) { p <- p + scale_x_continuous(breaks = get_breaks(by = xticks.by)) } p } # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% # Add stat # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .check_add.params <- function(add, add.params, error.plot, data, color, fill, ...){ if(color %in% names(data) & is.null(add.params$color)) add.params$color <- color if(fill %in% names(data) & is.null(add.params$fill)) add.params$fill <- fill if(is.null(add.params$color)) add.params$color <- color if(is.null(add.params$fill) & ("crossbar" %in% error.plot | "boxplot" %in% add | "violin" %in% add)) add.params$fill <- fill if(is.null(add.params$fill)) add.params$fill <- add.params$color #else add.params$fill <- add.params$color if(!is.null(list(...)$shape) & is.null(add.params$shape)) add.params$shape <- list(...)$shape add.params } # Allowed values for add are one or the combination of: "none", # "dotplot", "jitter", "boxplot", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", # "median", "median_iqr", "median_mad", "median_range" # p_geom character, e.g "geom_line" .add <- function(p, add = NULL, add.params = list(color = "black", fill = "white", shape = 19, width = 1), data = NULL, position = position_dodge(0.8), error.plot = c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange"), p_geom = "" ) { if(is.null(data)) data <- p$data pms <- add.params if("none" %in% add) add <- "none" error.plot = match.arg(error.plot) color <- ifelse(is.null(pms$color), "black",pms$color) fill <- ifelse(is.null(pms$fill), "white", pms$fill) shape <- ifelse(is.null(pms$shape), 19, pms$shape) width <- ifelse(is.null(pms$width), 1, pms$width) shape <- ifelse(is.null(add.params$shape), 19, add.params$shape) # size <- ifelse(is.null(add.params$size), 1, add.params$size) # stat summary #.mapping <- as.character(p$mapping) .mapping <- .get_gg_xy_variables(p) x <- .mapping["x"] y <- .mapping["y"] errors <- c("mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_mad", "median_range") if(any(errors %in% add)) stat_sum <- desc_statby(data, measure.var = .mapping["y"], grps = intersect(c(.mapping["x"], color, fill), names(data))) if ("boxplot" %in% add) { # size <- ifelse(is.null(add.params$size), 1, add.params$size) p <- p + .geom_exec(geom_boxplot, data = data, color = color, fill = fill, position = position, width = width, size = add.params$size) } if ("violin" %in% add) { # size <- ifelse(is.null(add.params$size), 1, add.params$size) p <- p + .geom_exec(geom_violin, data = data, trim = FALSE, color = color, fill = fill, position = position, width = width, size = add.params$size) } if ( "dotplot" %in% add ) { dotsize <- ifelse(is.null(add.params$size), 0.9, add.params$size) p <- p + .geom_exec(geom_dotplot, data = data, binaxis = 'y', stackdir = 'center', color = color, fill = fill, dotsize = dotsize, position = position, stackratio = 1.2, binwidth = add.params$binwidth) } if ( "jitter" %in% add ){ set.seed(123) # jitter.size <- ifelse(is.null(add.params$size), 2, add.params$size) ngrps <- length(intersect(names(data), c(.mapping["x"], fill, color))) if(p_geom == "geom_line" | ngrps == 1) .jitter = position_jitter(0.4) else if(ngrps > 1) .jitter <- position_dodge(0.8) if(is.null(add.params$jitter)) .jitter = position_jitter(0.4) else if(is.numeric(add.params$jitter)) .jitter <- position_jitter(add.params$jitter) else .jitter <- add.params$jitter p <- p + .geom_exec(geom_jitter, data = data, color = color, fill = fill, shape = shape, size = add.params$size, position = .jitter ) } if ( "point" %in% add ) { p <- p + .geom_exec(geom_point, data = data, color = color, size = add.params$size, position = position) } if ( "line" %in% add ) { p <- p + .geom_exec(geom_line, data = data, group = 1, color = color, size = add.params$size, position = position) } # Add mean or median center <- intersect(c("mean", "median"), add) if(length(center) == 2) stop("Use mean or mdedian, but not both at the same time.") if(length(center) == 1){ center.size <- ifelse(is.null(add.params$size), 1, add.params$size) p <- p %>% add_summary(fun = center, color = color, shape = shape, position = position, size = center.size) } # Add errors errors <- c("mean_se", "mean_sd", "mean_ci", "mean_range", "median_iqr", "median_mad", "median_range") errors <- intersect(errors, add) if(length(errors) >= 2) stop("Choose one these: ", paste(errors, collapse =", ")) if(length(errors) == 1){ errors <- strsplit(errors, "_", fixed = TRUE)[[1]] .center <- errors[1] .errors <- errors[2] stat_sum$ymin <- stat_sum[, .center] - stat_sum[, .errors] stat_sum$ymax <- stat_sum[, .center] + stat_sum[, .errors] names(stat_sum)[which(names(stat_sum) == .center)] <- y size <- ifelse(is.null(add.params$size), 1, add.params$size) if(error.plot %in% c("upper_errorbar", "upper_pointrange", "upper_linerange")) { ymin <- y ymax <- "ymax" } else if(error.plot %in% c("lower_errorbar", "lower_pointrange", "lower_linerange")){ ymin <- "ymin" ymax <- y } else { ymin <- "ymin" ymax <- "ymax" } if(error.plot %in% c("pointrange", "lower_pointrange", "upper_pointrange")) p <- p + .geom_exec(geom_pointrange, data = stat_sum, color = color, shape = shape, ymin = ymin, ymax = ymax, position = position, size = size) else if(error.plot %in% c("linerange", "lower_linerange", "upper_linerange")) p <- p + .geom_exec(geom_linerange, data = stat_sum, color = color, ymin = ymin, ymax = ymax, position = position, size = size) else if(error.plot %in% c("errorbar", "lower_errorbar", "upper_errorbar")) p <- p + .geom_exec(geom_errorbar, data = stat_sum, color = color, ymin = ymin, ymax = ymax, position = position, size = size, width = 0.2) else if(error.plot == "crossbar") p <- p + .geom_exec(geom_crossbar, data = stat_sum, fill = fill, color = color, ymin = "ymin", ymax = "ymax", position = position, width = width, size = size) } p } # Calculate the mean and the SD in each group #+++++++++++++++++++++++++ # data : a data frame # varname : the name of the variable to be summariezed # grps : column names to be used as grouping variables # .mean_sd <- function(data, varname, grps){ # summary_func <- function(x, col){ # c(mean = base::mean(x[[col]], na.rm=TRUE), # sd = stats::sd(x[[col]], na.rm=TRUE)) # } # data_sum <- plyr::ddply(data, grps, .fun=summary_func, varname) # data_sum$ymin <- data_sum$mean-data_sum$sd # data_sum$ymax <- data_sum$mean+data_sum$sd # names(data_sum)[ncol(data_sum)-3] <- varname # # data_sum <- plyr::rename(data_sum, c("mean" = varname)) # return(data_sum) # } # Summary functions .summary_functions <- function(){ c("mean", "mean_se", "mean_se_", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_hilow_", "median_q1q3", "median_mad", "median_range") } .errorbar_functions <- function(){ setdiff(.summary_functions(), c("mean", "median")) } # parse font # %%%%%%%%%%%%%%%%%%%%%%%%%%%%% .parse_font <- function(font){ if(is.null(font)) res <- NULL else if(inherits(font, "list")) res <- font else{ # matching size and face size <- grep("^[0-9]+$", font, perl = TRUE) face <- grep("plain|bold|italic|bold.italic", font, perl = TRUE) if(length(size) == 0) size <- NULL else size <- as.numeric(font[size]) if(length(face) == 0) face <- NULL else face <- font[face] color <- setdiff(font, c(size, face)) if(length(color) == 0) color <- NULL res <- list(size=size, face = face, color = color) } res } # Add annotation to a plot # label: text to be added to a plot # size: text size # coord: x and coordinates .ggannotate <- function (label, size = 12, coord = c(NULL, NULL)){ if(is.null(unique(coord))){ grob <- grid::grobTree(grid::textGrob(label, x = 0.3, y = 0.80, hjust=0, gp = grid::gpar(col = "black", fontsize = size, fontface = "plain"))) ggplot2::annotation_custom(grob) } else{ ggplot2::annotate("text", x = coord[1], y = coord[2], label = label, size = size/3) } } #::::::::::::::::::::::::::::::::::::::::: # Check the data provided by user #::::::::::::::::::::::::::::::::::::::::: # combine: if TRUE, gather y variables # return a list(data, x, y) .check_data <- function(data, x, y, combine = FALSE) { if(missing(x) & missing(y)){ if(!is.numeric(data)) stop("x and y are missing. In this case data should be a numeric vector.") else{ data <- data.frame(y = data, x = rep(1, length(data))) x <- "x" y <- "y" } } else if(missing(x)) { x <- "x" if(is.numeric(data)) data <- data.frame(x = data) else data$x <- rep("1", nrow(data)) } # A list of y elements to plot else if(length(y) > 1){ if(!all(y %in% colnames(data))){ not_found <- setdiff(y , colnames(data)) y <- intersect(y, colnames(data)) if(.is_empty(y)) stop("Can't find the y elements in the data.") else if(!.is_empty(not_found)) warning("Can't find the following element in the data: ", .collapse(not_found)) } } if(inherits(data, c("tbl_df", "tbl"))) data <- as.data.frame(data) # Combining y variables #...................................................... if(is.null(y)) y <- "" if(combine & length(y) > 1){ data <- tidyr::gather_(data, key_col = ".y.", value_col = ".value.", gather_cols = y) data[, ".y."] <- factor(data[, ".y."], levels = unique(data[, ".y."])) y <- ".value." } # Combining x variables: Case of density plot or histograms #...................................................... else if(combine & length(x) > 1 & y[1] %in% c("..density..", "..count..", "..ecdf..", "..qq..")){ data <- tidyr::gather_(data, key_col = ".y.", value_col = ".value.", gather_cols = x) data[, ".y."] <- factor(data[, ".y."], levels = unique(data[, ".y."])) x <- ".value." } # If not factor, x elements on the plot should # appear in the same order as in the data if(is.character(data[, x])) data[, x] <- factor(data[, x], levels = unique(data[, x])) y <- unique(y) names(y) <- y x <- unique(x) names(x) <- x if(y[1] %in% c("..density..", "..count..", "..ecdf..", "..qq..")) list(x = x, data = data, y = y) # The name of plots are x variables else list(y = y, data = data, x = x) # The name of plots will be y variables } # Adjust shape when ngroups > 6, to avoid ggplot warnings .scale_point_shape <- function(p, data, shape){ if(shape %in% colnames(data)){ grp <- data[, shape] if(!inherits(grp, "factor")) grp <- as.factor(grp) ngroups <- length(levels(data[, shape])) if(ngroups > 6) p <- p + scale_shape_manual(values=1:ngroups, labels = levels(data[, shape])) } p } # Get not numeric columns in a data.frame .get_not_numeric_vars <- function(data_frame){ is_numeric <- sapply(data_frame, is.numeric) if(sum(!is_numeric) == 0) res = NULL else res <- colnames(data_frame[, !is_numeric, drop = FALSE]) res } # Get the current color used in ggplot .get_ggplot_ncolors <- function(p){ g <- ggplot_build(p) gdata <- g$data[[1]] cols <- fills <- 1 if("colour" %in% names(gdata)) cols <- unique(unlist(gdata["colour"])) if("fills" %in% names(gdata)) fills <- unique(unlist(gdata["fill"])) max(length(cols), length(fills)) } # Check if character string is a valid color representation .is_color <- function(x) { sapply(x, function(X) { tryCatch(is.matrix(grDevices::col2rgb(X)), error = function(e) FALSE) }) } # Collapse one or two vectors #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .collapse <- function(x, y = NULL, sep = "."){ if(missing(y)) paste(x, collapse = sep) else if(is.null(x) & is.null(y)) return(NULL) else if(is.null(x)) return (as.character(y)) else if(is.null(y)) return(as.character(x)) else paste0(x, sep, y) } # Check if en object is empty #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .is_empty <- function(x){ length(x) == 0 } # Remove NULL items in a vector or list # # x a vector or list .compact <- function(x){Filter(Negate(is.null), x)} # Check if is a list #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .is_list <- function(x){ inherits(x, "list") } # Returns the levels of a factor variable #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .levels <- function(x){ if(!is.factor(x)) x <- as.factor(x) levels(x) } # Remove items from a list #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .remove_item <- function(.list, items){ for(item in items) .list[[item]] <- NULL .list } # Additems in a list #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .add_item <- function(.list, ...){ pms <- list(...) for(pms.names in names(pms)){ .list[[pms.names]] <- pms[[pms.names]] } .list } # Select a colun as vector from tiblle data frame .select_vec <- function(df, column){ dplyr::pull(df, column) } # Select the top up or down rows of a data frame sorted by variables #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # - df: data frame # - x: x axis variables (grouping variables) # - y: y axis variables (sorting variables) # - n the number of rows # - grps: other grouping variables .top_up <- function(df, x, y, n, grouping.vars = NULL){ . <- NULL grouping.vars <- c(x, grouping.vars) %>% unique() df %>% df_arrange(vars = c(grouping.vars, y)) %>% df_group_by(vars = grouping.vars) %>% do(utils::tail(., n)) } .top_down <- function(df, x, y, n, grouping.vars = NULL){ . <- NULL grouping.vars <- c(x, grouping.vars) %>% unique() df %>% df_arrange(vars = c(grouping.vars, y)) %>% df_group_by(vars = grouping.vars) %>% do(utils::head(., n)) } #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Apply ggpubr functions on a data #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # fun: function, can be ggboxplot, ggdotplot, ggstripchart, ... .plotter <- function(fun, data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", title = NULL, xlab = NULL, ylab = NULL, legend = NULL, legend.title = NULL, facet.by = NULL, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, font.family = "", parse = FALSE, ggtheme = theme_pubr(), fun_name = "", group = 1, # used only by ggline show.legend.text = NA, ...) { if(is.logical(merge)){ if(merge) merge = "asis" else merge = "none" } if(combine & merge != "none") stop("You should use either combine = TRUE or merge = TRUE, but not both together.") font.label <- .parse_font(font.label) if(is.null(label) & fun_name == "barplot") label <- FALSE .lab <- label if(fun_name != "barplot") .lab <- NULL if(!missing(x) & !missing(y)){ if(length(y) == 1 & length(x) == 1){ combine <- FALSE merge <- "none" } } # Check data #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # - returns a list of updated main options: # list(y, data, x) opts <- .check_data(data, x, y, combine = combine | merge != "none") data <- opts$data x <- opts$x y <- opts$y is_density_plot <- y[1] %in% c("..count..", "..density..", "..ecdf..", "..qq..") if(combine) facet.by <- ".y." # Faceting by y variables if(merge != "none"){ if(!is_density_plot) facet.by <- NULL if(is.null(legend.title)) legend.title <- "" # remove .y. in the legend } # Updating parameters after merging #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Special case for density and histograms: # x are variables and y is ..count.. or ..density.. # after merging ggpubr add a new column .y. which hold x variables # User might want to color by x variables as follow color = ".x." and # he aren't aware that the column is ".y." --> so we should translate this (see from line 1055) user.add.color <- add.params$color geom.text.position <- "identity" if(merge == "asis" ){ .grouping.var <- ".y." # y variables become grouping variable } else if(merge == "flip"){ .grouping.var <- opts$x # x variable becomes grouping variable opts$x <- ".y." # y variables become x tick labels if(is.null(xlab)) xlab <- FALSE } if(merge == "asis" | merge == "flip"){ if(is_density_plot){ color <- ifelse(color == ".x.", ".y.", color) fill <- ifelse(fill == ".x.", ".y.", fill) } if(any(c(color, fill) %in% names(data))){ add.params$color <- font.label$color <- ifelse(color %in% names(data), color, fill) } else if(!all(c(color, fill) %in% names(data))){ color <- add.params$color <- font.label$color <- .grouping.var #fill <- "white" } group <- .grouping.var geom.text.position <- position_dodge(0.8) } if(!combine & merge == "none" & length(opts$y) > 1 & is.null(title)) title <- opts$y if(!combine & merge == "none" & is.null(title)){ if(length(opts$y) > 1) title <- opts$y else if (length(opts$x) > 1 & is_density_plot) # case of density plot title <- opts$x } # Item to display x <- opts$data[, opts$x] %>% as.vector() if(!is.null(select)) opts$data <- subset(opts$data, x %in% select) if(!is.null(remove)) opts$data <- subset(opts$data, !(x %in% remove)) if(!is.null(order)) opts$data[, opts$x] <- factor(opts$data[, opts$x], levels = order) # Add additional options, which can be potentially vectorized # when multiple plots opts <- opts %>% c(list(title = title, xlab = xlab, ylab = ylab)) %>% .compact() data <- opts$data opts$data <- list(opts$data) if(fun_name %in% c("ggline", "ggdotchart")) opts$group <- group # Plotting #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Apply function to each y variables p <- purrr::pmap(opts, fun, color = color, fill = fill, legend = legend, legend.title = legend.title, ggtheme = ggtheme, facet.by = facet.by, add = add, add.params = add.params , # group = group, # for line plot user.add.color = user.add.color, label = .lab, # used only in ggbarplot font.label = font.label, repel = repel, label.rectangle = label.rectangle, ...) # Faceting if(!is.null(facet.by)) p <-purrr::map(p, facet, facet.by = facet.by, ...) # Add labels if(!is.null(label) & fun_name != "barplot"){ if(is.logical(label)){ if(label) label <- opts$y } grouping.vars <- intersect(c(facet.by, color, fill), colnames(data)) label.opts <- font.label %>% .add_item(data = data, x = opts$x, y = opts$y, label = label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, family = font.family, parse = parse, ggtheme = NULL, grouping.vars = grouping.vars, facet.by = facet.by, position = geom.text.position, show.legend = show.legend.text) p <- purrr::map(p, function(p, label.opts){ . <- NULL label.opts %>% .add_item(ggp = p) %>% do.call(ggtext, .) }, label.opts ) } # Take into account the legend argument, when the main plot has no legend and ggtext has legend p <-purrr::map(p, ggpar, legend = legend, legend.title = legend.title) if(.is_list(p) & length(p) == 1) p <- p[[1]] p } # get the geometry of the first layer #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .geom <- function(p, .layer = 1){ . <- NULL if(is.null(p) | .is_empty(p$layers)) return("") class(p$layers[[.layer]]$geom)[1] %>% tolower() %>% gsub("geom", "", .) } # Get the mapping variables of the first layer #::::::::::::::::::::::::::::::::::::::::::::::::: .mapping <- function(p){ if(is.null(p)) return(list()) . <- NULL layer0.mapping <- as.character(p$mapping) %>% gsub("~", "", .) layer0.mapping.labels <- p$mapping %>% names() names(layer0.mapping) <- layer0.mapping.labels layer1.mapping <- NULL if(!.is_empty(p$layers)){ layer1.mapping <- p$layers[[1]]$mapping %>% as.character() %>% gsub("~", "", .) layer1.mapping.labels <- p$layers[[1]]$mapping %>% names() names(layer1.mapping) <- layer1.mapping.labels } c(layer0.mapping, layer1.mapping) %>% as.list() } # Call geom_exec function to update a plot #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .update_plot <- function(opts, p){ p + do.call(geom_exec, opts) } # Get ggplot2 x and y variable # :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .get_gg_xy_variables <- function(p){ . <- NULL x <- p$mapping['x'] %>% as.character() %>% gsub("~", "", .) y <- p$mapping['y'] %>% as.character() %>% gsub("~", "", .) xy <- c(x, y) names(xy) <- c("x", "y") return(xy) } # Add mean or median line # used by ggdensity and gghistogram #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # p: main plot # data: data frame # x: measure variables # add: center to add # grouping.vars: grouping variables .add_center_line <- function(p, add = c("none", "mean", "median"), grouping.vars = NULL, color = "black", linetype = "dashed", size = NULL) { add <- match.arg(add) data <- p$data # x <- .mapping(p)$x .mapping <- .get_gg_xy_variables(p) x <- .mapping["x"] if(!(add %in% c("mean", "median"))) return(p) compute_center <- switch(add, mean = mean, median = stats::median) # NO grouping variable if(.is_empty(grouping.vars)) { m <- ifelse(add == "mean", mean(data[, x], na.rm = TRUE), stats::median(data[, x], na.rm = TRUE)) p <- p + geom_exec(geom_vline, data = data, xintercept = m, color = color, linetype = linetype, size = size) } # Case of grouping variable else { data_sum <- data %>% group_by(!!!syms(grouping.vars)) %>% summarise(.center = compute_center(!!sym(x), na.rm = TRUE)) p <- p + geom_exec(geom_vline, data = data_sum, xintercept = ".center", color = color, linetype = linetype, size = size) } p } # Check legend argument .check_legend <- function(legend){ allowed.values <- c("top", "bottom", "left", "right", "none") if(is.null(legend) | is.numeric(legend)) return(legend) else if(is.logical(legend)){ if(legend) legend <- "top" else legend <- "none" } else if(is.character(legend)){ legend <- legend[1] if(!legend %in% allowed.values) stop("Argument legend should be one of ", .collapse(allowed.values, sep = ", ")) } return (legend) } ggpubr/R/annotate_figure.R0000644000176200001440000000577013675460712015262 0ustar liggesusers#' @include utilities.R NULL #'Annotate Arranged Figure #' #'@description Annotate figures including: i) ggplots, ii) arranged ggplots from #' \code{\link{ggarrange}()}, \code{\link[gridExtra:arrangeGrob]{grid.arrange}()} and #' \code{\link[cowplot]{plot_grid}()}. #'@param p (arranged) ggplots. #'@param top,bottom,left,right optional string, or grob. #'@param fig.lab figure label (e.g.: "Figure 1"). #'@param fig.lab.pos position of the figure label, can be one of "top.left", #' "top", "top.right", "bottom.left", "bottom", "bottom.right". Default is #' "top.left". #'@param fig.lab.size optional size of the figure label. #'@param fig.lab.face optional font face of the figure label. Allowed values #' include: "plain", "bold", "italic", "bold.italic". #'@author Alboukadel Kassambara \email{alboukadel.kassambara@@gmail.com} #'@seealso \code{\link{ggarrange}()} #' @examples #' data("ToothGrowth") #' df <- ToothGrowth #' df$dose <- as.factor(df$dose) #' #' # Create some plots #' # :::::::::::::::::::::::::::::::::::::::::::::::::: #' # Box plot #' bxp <- ggboxplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Dot plot #' dp <- ggdotplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Density plot #' dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") #' #' # Arrange and annotate #' # :::::::::::::::::::::::::::::::::::::::::::::::::: #' figure <- ggarrange(bxp, dp, dens, ncol = 2, nrow = 2) #'annotate_figure(figure, #' top = text_grob("Visualizing Tooth Growth", color = "red", face = "bold", size = 14), #' bottom = text_grob("Data source: \n ToothGrowth data set", color = "blue", #' hjust = 1, x = 1, face = "italic", size = 10), #' left = text_grob("Figure arranged using ggpubr", color = "green", rot = 90), #' right = text_grob(bquote("Superscript: ("*kg~NH[3]~ha^-1~yr^-1*")"), rot = 90), #' fig.lab = "Figure 1", fig.lab.face = "bold" #') #' #' #'@export annotate_figure <- function(p, top = NULL, bottom = NULL, left = NULL, right = NULL, fig.lab = NULL, fig.lab.pos = c("top.left", "top", "top.right", "bottom.left", "bottom", "bottom.right"), fig.lab.size, fig.lab.face ) { fig.lab.pos <- match.arg(fig.lab.pos) annot.args <- list(top = top, bottom = bottom, left = left,right = right) %>% .compact() lab.args <- list(label = fig.lab, position = fig.lab.pos) %>% .compact() if(!missing(fig.lab.size)) lab.args$size <- fig.lab.size if(!missing(fig.lab.face)) lab.args$fontface <- fig.lab.face if(!.is_empty(annot.args)){ p <- gridExtra::arrangeGrob(p, top = top, bottom = bottom, left = left,right = right) %>% as_ggplot() } if(!is.null(fig.lab)){ p <- cowplot::ggdraw(p) + do.call(cowplot::draw_figure_label, lab.args) } p } ggpubr/R/bgcolor.R0000644000176200001440000000074713115324262013522 0ustar liggesusers#'Change ggplot Panel Background Color #' #' @description Change ggplot panel background color. #' @param color background color. #' #' @seealso \link{border}(). #' #'@examples #'# Load data #'data("ToothGrowth") #'df <- ToothGrowth #' #'# Basic plot #'p <- ggboxplot(df, x = "dose", y = "len") #'p #' #'# Change panel background color #' p + #' bgcolor("#BFD5E3")+ #' border("#BFD5E3") #'@export bgcolor <- function(color){ theme(panel.background = element_rect(fill = color)) } ggpubr/R/utilities_label.R0000644000176200001440000001064313675442521015253 0ustar liggesusers#:::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Helper function for adding annotation to a ggplot #:::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Get label parameters for each group #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: # Returns a data frame with x, y, hjust, vjust # group.id is the index position of the group in a boxplot for example .label_params <- function(data, scales, label.x.npc = "left", label.y.npc = "right", label.x = NULL, label.y = NULL, .by = c("group", "panel"), group.id = NULL, ...) { .by <- match.arg(.by) # Check label coordinates for each group #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if(is.null(group.id)) group.id <- group.id <- abs(data$group[1]) label.x.npc <- .group_coord(label.x.npc, group.id) label.y.npc <- .group_coord(label.y.npc, group.id) label.x <- .group_coord(label.x, group.id) label.y <- .group_coord(label.y, group.id) .check_npc_coord(label.x.npc, axis = "x") .check_npc_coord(label.y.npc, axis = "y") if (length(label.x) > 0) { x <- label.x hjust <- 0.5 } else if (length(label.x.npc) > 0) { if (is.numeric(label.x.npc)) { x <- scales$x$dimension()[1] + label.x.npc * diff(scales$x$dimension()) hjust <- 0.5 } else if (is.character(label.x.npc)) { if (label.x.npc == "right") { x <- scales$x$dimension()[2] hjust <- 1 } else if (label.x.npc %in% c("center", "centre", "middle")) { x <- mean(scales$x$dimension()) hjust <- 0.5 } else if (label.x.npc == "left") { x <- scales$x$dimension()[1] hjust <- 0 } } } if (length(label.y) > 0) { y <- label.y vjust <- 0.5 } else if (length(label.y.npc) > 0) { if (is.numeric(label.y.npc)) { y <- scales$y$dimension()[1] + label.y.npc * diff(scales$y$dimension()) vjust <- 1.4 * group.id - (0.7 * length(group.id)) } else if (is.character(label.y.npc)) { if (label.y.npc == "bottom") { y <- scales$y$dimension()[1] vjust <- -1.4 * group.id } else if (label.y.npc %in% c("center", "centre", "middle")) { y <- mean(scales$y$dimension()) vjust <- 1.4 * group.id - (0.7 * length(group.id)) } else if (label.y.npc == "top") { y <- scales$y$dimension()[2] vjust <- 1.4 * group.id } } } if(.by == "panel"){ hjust <- 0.5 vjust = 0.5 } data.frame(x = x, y = y, hjust = hjust, vjust = vjust) } # Get label parameters by group # Useful in boxplot, where group.ids is the index of the group: 1, 2, 3, etc # Useful only when computation is done by panel .label_params_by_group <- function(..., group.ids){ purrr::map(group.ids, function(group.id, ...){.label_params(..., group.id = group.id)}, ...) %>% dplyr::bind_rows() #%>% #dplyr::mutate(x = group.ids) } # Check label coordinates for each group #::::::::::::::::::::::::::::::::::::::::: # coord.values: label coordinate for each group. If too short, they are recycled. # group.id the id of groups as returned by ggplot_build() .group_coord <- function(coord.values, group.id){ if(!.is_empty(coord.values)){ coord.values <- ifelse(length(coord.values) >= group.id, coord.values[group.id], coord.values[1]) } coord.values } # Check NPC coord #::::::::::::::::::::::::::::::::::::::::: # npc: Normalised Parent Coordinates. # The origin of the viewport is (0, 0) and the viewport has a width and height of 1 unit. # For example, (0.5, 0.5) is the centre of the viewport. # coord: should be between 0 and 1 # axis: should be "x" or "y" .check_npc_coord <- function(.coord, axis = c("x", "y")){ axis <- match.arg(axis) if(axis == "x") allowed.values <- c('right', 'left', 'center', 'centre', 'middle') else if(axis == "y") allowed.values <- c( 'bottom', 'top', 'center', 'centre', 'middle') .message <- paste0("'*.npc coord for ", axis, " axis should be either a numeric value in [0-1] ", "or a character strings including one of ", .collapse(allowed.values, sep = ", ")) if(!is.null(.coord)){ if(is.numeric(.coord)){ if (any(.coord < 0 | .coord > 1)) { stop(.message) } } else if(is.character(.coord)){ if(!(.coord %in% allowed.values)) stop(.message) } else stop(.message) } } ggpubr/R/ggscatterhist.R0000644000176200001440000002350213675461462014757 0ustar liggesusers#' @include utilities.R NULL #'Scatter Plot with Marginal Histograms #'@description Create a scatter plot with marginal histograms, density plots or #' box plots. #'@inheritParams ggscatter #'@param main.plot.size the width of the main plot. Default is 2. #'@param margin.plot.size the width of the marginal plot. Default is 1. #'@param group a grouping variable. Change points color and shape by groups if #' the options \code{color} and \code{shape} are missing. Should be also #' specified when you want to create a marginal box plot that is grouped. #'@param margin.plot the type of the marginal plot. Default is "hist". #'@param margin.params parameters to be applied to the marginal plots. #'@param margin.ggtheme the theme of the marginal plot. Default is #' \code{\link[ggplot2:ggtheme]{theme_void}()}. #'@param margin.space logical value. If TRUE, adds space between the main plot #' and the marginal plot. #'@param bins Number of histogram bins. Defaults to 30. Pick a better value that #' fit to your data. #'@param linetype line type ("solid", "dashed", ...) #'@param legend specify the legend position. Allowed values include: "top", #' "bottom", "left", "right". #'@param ggtheme the theme to be used for the scatter plot. Default is #' \code{\link{theme_pubr}()}. #'@param print logical value. If \code{TRUE} (default), print the plot. #'@param ... other arguments passed to the function \code{\link{ggscatter}()}. #'@return an object of class \code{ggscatterhist}, which is list of ggplots, #' including the following elements: \itemize{\item sp: main scatter plot; #' \item xplot: marginal x-axis plot; \item yplot: marginal y-axis plot. }. #' #' User can modify each of plot before printing. #' #' @examples #' # Basic scatter plot with marginal density plot #' ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "#00AFBB", #' margin.params = list(fill = "lightgray")) #' #' #' # Grouped data #'ggscatterhist( #' iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "Species", size = 3, alpha = 0.6, #' palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' margin.params = list(fill = "Species", color = "black", size = 0.2) #') #' #'# Use boxplot as marginal #'ggscatterhist( #' iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "Species", size = 3, alpha = 0.6, #' palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' margin.plot = "boxplot", #' ggtheme = theme_bw() #') #' #'# Add vertical and horizontal line to a ggscatterhist #'plots <- ggscatterhist(iris, x = "Sepal.Length", y = "Sepal.Width", print = FALSE) #'plots$sp <- plots$sp + #' geom_hline(yintercept = 3, linetype = "dashed", color = "blue") + #' geom_vline(xintercept = 6, linetype = "dashed", color = "red") #'plots #' #'@export ggscatterhist <- function( data, x, y, group = NULL, color = "black", fill = NA, palette = NULL, shape = 19, size = 2, linetype = "solid", bins = 30, margin.plot = c("density", "histogram", "boxplot"), margin.params = list(), margin.ggtheme = theme_void(), margin.space = FALSE, main.plot.size = 2, margin.plot.size = 1, title = NULL, xlab = NULL, ylab = NULL, legend = "top", ggtheme = theme_pubr(), print = TRUE, ... ) { if(!has_cowplot_v0.9()){ warning("Install the latest developmental version of cowplot on github ", "to fully use all the feature of ggscatterhist", .call = FALSE) # margin.space = TRUE } margin.plot <- match.arg(margin.plot) margin.params <- .check_margin_params( margin.params, data, color, fill, linetype ) if(margin.plot == "histogram") { if(is.null(margin.params$position)){ margin.params$position <- "identity" } margin.params <- margin.params %>% .add_item(bins = bins) } if(!is.null(group)){ if(missing(color)) color = group if(missing(shape)) shape = group } . <- NULL sp <- ggscatter( data, x, y, color = color, fill = fill, palette = palette, shape = shape, size = size, xlab = xlab, ylab = ylab, ggtheme = ggtheme, title = title, legend = legend, ... ) # Type of graphics to be added in the margins geomfunc <- switch (margin.plot, histogram = geom_histogram, density = geom_density, boxplot = geom_boxplot, geom_histogram ) # Define the x and the y variables depending on # the geometry used in margins if(margin.plot %in% c("density", "histogram")){ xplot.x <- x xplot.y <- NULL yplot.x <- y yplot.y <- NULL } else if(margin.plot %in% c("boxplot")){ if(is.null(group)) { data <- data %>% mutate(.xgroupx. = factor(1)) group = ".xgroupx." } xplot.x <- group xplot.y <- x yplot.x <- group yplot.y <- y } # Create the different marginal plot xplot <- ggplot() + margin.params %>% .add_item(geomfunc = geomfunc, data = data, x = xplot.x, y = xplot.y, alpha = 0.7) %>% do.call(geom_exec, .) xplot <- set_palette(xplot, palette) yplot <- ggplot() + margin.params %>% .add_item(geomfunc = geomfunc, data = data, x = yplot.x, y = yplot.y, alpha = 0.7) %>% do.call(geom_exec, .) yplot <- set_palette(yplot, palette) # Flip the marginal plots if(margin.plot %in% c("density", "histogram")) yplot <- yplot + coord_flip() else if(margin.plot %in% c("boxplot")) xplot <- xplot + coord_flip() # Cleaning the plot .legend <- get_legend(sp) sp <- sp + theme(plot.margin = grid::unit(c(0,0,0.25,0.25), "cm")) xplot <- xplot + margin.ggtheme + clean_theme() + rremove("legend") + theme( plot.margin = grid::unit(c(0,0,0,0), "cm")) yplot <- yplot + margin.ggtheme + clean_theme() + rremove("legend") + theme(plot.margin = grid::unit(c(0,0,0,0), "cm")) plots <- list(sp = sp, xplot = xplot, yplot = yplot) class(plots) <- c("ggscatterhist", "list") if(print){ res <- print( plots, margin.space = margin.space, main.plot.size = main.plot.size, margin.plot.size = margin.plot.size, title = title, legend = legend ) } invisible(plots) } #' @method print ggscatterhist #' @param x an object of class \code{ggscatterhist}. #' @rdname ggscatterhist #' @export print.ggscatterhist <- function(x, margin.space = FALSE, main.plot.size = 2, margin.plot.size = 1, title = NULL, legend = "top", ...){ sp <- x$sp xplot <- x$xplot yplot <- x$yplot .legend <- get_legend(sp) if(margin.space){ common.legend <- FALSE if(!is.null(.legend)) common.legend = TRUE sp <- sp + theme( plot.title = element_blank(), plot.subtitle = element_blank() ) fig <- ggarrange( xplot, NULL, sp, yplot, ncol = 2, nrow = 2, align = "hv", widths = c(main.plot.size, margin.plot.size), heights = c(margin.plot.size, main.plot.size), common.legend = common.legend, legend = legend ) if(!is.null(title)){ fig <- annotate_figure( fig, top = text_grob(title, color = "black", size = 13, face = "bold") ) } } else{ if(!is.null(title)) sp <- sp + ggtitle(title) fig <- .insert_xaxis_grob(sp, xplot, grid::unit(margin.plot.size/5, "null"), position = "top") fig <- .insert_yaxis_grob(fig, yplot, grid::unit(margin.plot.size/5, "null"), position = "right") fig <- cowplot::ggdraw(fig) } print(fig) invisible(fig) } has_cowplot_v0.9 <- function(){ vv <- as.character(utils::packageVersion("cowplot")) cc <- utils::compareVersion(vv, "0.8.0.8") > 0 cc } .check_margin_params <- function(params, data, color = "black", fill = NA, linetype = "slid"){ if(is.null(params$color)) { if(color %in% colnames(data)){ col.val <- dplyr::pull(data, color) if(!is.factor(col.val)) params$color <- "black" else params$color <- color } } if(is.null(params$fill)) { if(fill %in% colnames(data)){ fill.val <- .select_vec(data, fill) if(!is.factor(fill.val)) params$fill <- "black" else params$fill <- fill } } if(is.null(params$linetype)) params$linetype <- linetype params } # Helper functions to insert marginal plots #:::::::::::::::::::::::::::::::::::::::::::::::::::: # Use cowplot::insert_xaxis_grob and cowplot::insert_yaxis_grob, # when 0.9 stable version released .insert_xaxis_grob <- function ( plot, grob, height = grid::unit(0.2, "null"), position = c("top", "bottom") ) { if(inherits(grob, "ggplot")) grob <- .get_panel(grob) gt <- .plot_to_gtable(plot) pp <- gt$layout[gt$layout$name == "panel", ] if (position[1] == "top") { g <- gtable::gtable_add_rows(gt, height, pp$t - 1) g <- gtable::gtable_add_grob( g, grob, pp$t, pp$l, pp$t, pp$r, clip = "inherit", name = "xaxis-grob-t" ) } else { g <- gtable::gtable_add_rows(gt, height, pp$b) g <- gtable::gtable_add_grob( g, grob, pp$b + 1, pp$l, pp$b + 1, pp$r, clip = "inherit", name = "xaxis-grob-b" ) } } .insert_yaxis_grob <- function ( plot, grob, width = grid::unit(0.2, "null"), position = c("right", "left")) { if(inherits(grob, "ggplot")) grob <- .get_panel(grob) gt <- .plot_to_gtable(plot) pp <- gt$layout[gt$layout$name == "panel", ] if (position[1] == "right") { g <- gtable::gtable_add_cols(gt, width, pp$r) g <- gtable::gtable_add_grob( g, grob, pp$t, pp$r + 1, pp$b, pp$r + 1, clip = "inherit", name = "yaxis-grob-r" ) } else { g <- gtable::gtable_add_cols(gt, width, pp$l - 1) g <- gtable::gtable_add_grob( g, grob, pp$t, pp$l, pp$b, pp$l, clip = "inherit", name = "yaxis-grob-l" ) } } .plot_to_gtable <- function (plot) { if(inherits(plot, "gtable")) return(plot) else ggplot2::ggplotGrob(plot) } .get_panel <- function (plot) { gt <- .plot_to_gtable(plot) panelIndex <- which(gt$layout$name == "panel") panel <- gt$grobs[[panelIndex]] } ggpubr/R/ggbarplot.R0000644000176200001440000004025313666560075014067 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Bar plot #' @description Create a bar plot. #' @inheritParams ggboxplot #' @inheritParams ggplot2::geom_bar #' @param x,y x and y variables for drawing. #' @param color,fill outline and fill colors. #' @param sort.val a string specifying whether the value should be sorted. #' Allowed values are "none" (no sorting), "asc" (for ascending) or "desc" (for descending). #' @param sort.by.groups logical value. If TRUE the data are sorted by groups. #' Used only when sort.val != "none". #' @param top a numeric value specifying the number of top elements to be shown. #' @param label specify whether to add labels on the bar plot. Allowed values #' are: \itemize{ \item \strong{logical value}: If TRUE, y values is added as #' labels on the bar plot \item \strong{character vector}: Used as text #' labels; must be the same length as y. } #' @param lab.col,lab.size text color and size for labels. #' @param lab.pos character specifying the position for labels. Allowed values #' are "out" (for outside) or "in" (for inside). Ignored when lab.vjust != #' NULL. #' @param lab.vjust numeric, vertical justification of labels. Provide negative #' value (e.g.: -0.4) to put labels outside the bars or positive value to put #' labels inside (e.g.: 2). #' @param lab.hjust numeric, horizontal justification of labels. #' @param lab.nb.digits integer indicating the number of decimal places (round) to be used. #' @param ... other arguments to be passed to be passed to ggpar(). #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}}, \code{\link{ggline}} #' @examples #' # Data #' df <- data.frame(dose=c("D0.5", "D1", "D2"), #' len=c(4.2, 10, 29.5)) #' print(df) #' #' # Basic plot with label outsite #' # +++++++++++++++++++++++++++ #' ggbarplot(df, x = "dose", y = "len", #' label = TRUE, label.pos = "out") #' #' # Change width #' ggbarplot(df, x = "dose", y = "len", width = 0.5) #' #' # Change the plot orientation: horizontal #' ggbarplot(df, "dose", "len", orientation = "horiz") #' #' # Change the default order of items #' ggbarplot(df, "dose", "len", #' order = c("D2", "D1", "D0.5")) #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' #' # Change fill and outline color #' # add labels inside bars #' ggbarplot(df, "dose", "len", #' fill = "steelblue", color = "steelblue", #' label = TRUE, lab.pos = "in", lab.col = "white") #' #' # Change colors by groups: dose #' # Use custom color palette #' ggbarplot(df, "dose", "len", color = "dose", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' # Change fill and outline colors by groups #' ggbarplot(df, "dose", "len", #' fill = "dose", color = "dose", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' #' # Plot with multiple groups #' # +++++++++++++++++++++ #' #' # Create some data #' df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), #' dose=rep(c("D0.5", "D1", "D2"),2), #' len=c(6.8, 15, 33, 4.2, 10, 29.5)) #' print(df2) #' #' # Plot "len" by "dose" and change color by a second group: "supp" #' # Add labels inside bars #' ggbarplot(df2, "dose", "len", #' fill = "supp", color = "supp", palette = "Paired", #' label = TRUE, lab.col = "white", lab.pos = "in") #' #' # Change position: Interleaved (dodged) bar plot #' ggbarplot(df2, "dose", "len", #' fill = "supp", color = "supp", palette = "Paired", #' label = TRUE, #' position = position_dodge(0.9)) #' #' # Add points and errors #' # ++++++++++++++++++++++++++ #' #' # Data: ToothGrowth data set we'll be used. #' df3 <- ToothGrowth #' head(df3, 10) #' #' # It can be seen that for each group we have #' # different values #' ggbarplot(df3, x = "dose", y = "len") #' #' # Visualize the mean of each group #' ggbarplot(df3, x = "dose", y = "len", #' add = "mean") #' #' # Add error bars: mean_se #' # (other values include: mean_sd, mean_ci, median_iqr, ....) #' # Add labels #' ggbarplot(df3, x = "dose", y = "len", #' add = "mean_se", label = TRUE, lab.vjust = -1.6) #' #' # Use only "upper_errorbar" #' ggbarplot(df3, x = "dose", y = "len", #' add = "mean_se", error.plot = "upper_errorbar") #' #' # Change error.plot to "pointrange" #' ggbarplot(df3, x = "dose", y = "len", #' add = "mean_se", error.plot = "pointrange") #' #' # Add jitter points and errors (mean_se) #' ggbarplot(df3, x = "dose", y = "len", #' add = c("mean_se", "jitter")) #' #' # Add dot and errors (mean_se) #' ggbarplot(df3, x = "dose", y = "len", #' add = c("mean_se", "dotplot")) #' #' # Multiple groups with error bars and jitter point #' ggbarplot(df3, x = "dose", y = "len", color = "supp", #' add = "mean_se", palette = c("#00AFBB", "#E7B800"), #' position = position_dodge()) # #' #' #' @export ggbarplot <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, size = NULL, width = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "errorbar", label = FALSE, lab.col = "black", lab.size = 4, lab.pos = c("out", "in"), lab.vjust = NULL, lab.hjust = NULL, lab.nb.digits = NULL, sort.val = c("none", "desc", "asc"), sort.by.groups = TRUE, top = Inf, position = position_stack(), ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, size = size, width = width, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, lab.col = lab.col, lab.size = lab.size, lab.pos = lab.pos, lab.vjust = lab.vjust, lab.hjust = lab.hjust, lab.nb.digits = lab.nb.digits, sort.val = sort.val, sort.by.groups = sort.by.groups, top = top, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } if(is.logical(merge)){ if(merge & missing(position)) .opts$position <- position_dodge(0.8) if(merge & missing(lab.col)) .opts$lab.col <- ".y." } else if(is.character(merge)){ .opts$position <- position_dodge(0.8) } .opts$fun <- ggbarplot_core .opts$fun_name <- "barplot" if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggbarplot_core <- function(data, x, y, color = "black", fill = "white", palette = NULL, size = NULL, width = 0.7, title = NULL, xlab = NULL, ylab = NULL, label = FALSE, lab.col = "black", lab.size = 4, lab.pos = c("out", "in"), lab.vjust = NULL, lab.hjust = NULL, lab.nb.digits = NULL, select = NULL, order = NULL, facet.by = NULL, sort.val = c("none", "desc", "asc"), sort.by.groups = TRUE, merge = FALSE, top = Inf, add = "none", add.params = list(), error.plot = "errorbar", position = position_stack(), ggtheme = theme_pubr(), ...) { sort.val <- match.arg(sort.val) if(!is.null(order)) data[, x] <- factor(data[, x], levels = order) else { xx <- .select_vec(data, x) if(inherits(xx, c("character", "numeric"))) data[, x] <- .select_vec(data, x) %>% as.factor() } error.plot = error.plot[1] lab.pos <- match.arg(lab.pos) label <- as.vector(label) if("none" %in% add) add <- "none" grouping.vars <- intersect(c(x, color, fill, facet.by), names(data)) . <- NULL # static summaries for computing mean/median and adding errors if(is.null(add.params$fill)) add.params$fill <- "white" if(is.null(add.params$group)){ if(fill %in% names(data)) add.params$group <- fill else if(color %in% names(data)) add.params$group <- color } add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) if(any(.summary_functions() %in% add)) { data_sum <- desc_statby(data, measure.var = y, grps = grouping.vars) summary.funcs <- intersect(.summary_functions(), add) if(length(summary.funcs) > 1) stop("Only one summary function is allowed. ", "Choose one of ", .collapse(.summary_functions(), sep = ", ")) .center <- .get_errorbar_center_func(summary.funcs) add <- setdiff(add, .center) names(data_sum)[which(names(data_sum) == .center)] <- y if(inherits(xx, c("character", "numeric"))) data_sum[, x] <- .select_vec(data_sum, x) %>% as.factor() } else data_sum <- data # Sorting #%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if(top !=Inf & sort.val == "none") sort.val = "desc" if(top !=Inf) { data_sum <- data_sum[order(-data_sum[, y]), ] data_sum <- utils::head(data_sum, n = top) } grps <- unique(intersect(c(color, fill), names(data))) if(length(grps) > 0) grps <- .get_not_numeric_vars(data[, grps, drop = FALSE]) ngrps <- length(grps) if(!sort.by.groups) ngrps <- 0 # Variables for ordering if(ngrps > 0) dd <- data_sum[, c(grps, y)] else dd <- data_sum[, y, drop = FALSE] if(sort.val == "desc") dd[, y] <- -dd[, y] # Sorting if(sort.val != "none") { if(ngrps == 0) data_sum <- data_sum[order(dd[, y]),] else if(ngrps == 1) data_sum <- data_sum[order(dd[, 1], dd[, y]),] else if(ngrps == 2) data_sum <- data_sum[order(dd[, 1], dd[, 2], dd[, y]),] data_sum[, x] <- factor(data_sum[, x], levels = data_sum[, x]) } # Main plot #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if(inherits(position, "PositionDodge") & is.null(position$width)) position$width = 0.95 p <- ggplot(data, create_aes(list(x = x, y = y))) p <- p + geom_exec(geom_bar, data = data_sum, stat = "identity", color = color, fill = fill, position = position, size = size, width = width, ...) # Add errors add.params <- add.params %>% .add_item(p = p, error.plot = error.plot) is.stacked.position <- inherits(position, "PositionStack") stack.groups <- unique(c(x, facet.by)) nb.bars.by.xposition <- data_sum %>% group_by(!!!syms(stack.groups)) %>% dplyr::count() %>% dplyr::pull(.data$n) %>% max() if(is.stacked.position) add.position <- "identity" else add.position <- position if(is.stacked.position & nb.bars.by.xposition >=2) { p <- add.params %>% .add_item(add = .remove_errorbar_func(add), position = add.position) %>% do.call(ggadd, .) if(any(.errorbar_functions() %in% add)){ p <- p + .geom_stacked_errorbar( data_sum, x, y, color = add.params$color, fill = add.params$fill, group = add.params$group, facet.by = facet.by, func = .get_summary_func(add), error.plot = error.plot ) } } else { p <- add.params %>% .add_item(add = add, position = add.position) %>% do.call(ggadd, .) } # Add labels add.label <- FALSE if(is.logical(label)){ .lab <- y add.label <- label } else { # Add user specified labels as data column data_sum$.ulabel. <- label .lab <- ".ulabel." add.label <- TRUE } if(add.label) { if(is.null(lab.vjust)) lab.vjust <- ifelse(lab.pos == "out", -0.4, 2 ) if(is.null(lab.hjust)) lab.hjust <- 0.5 if(!is.null(lab.nb.digits)){ if(is.numeric(.lab)) .lab <- round(.lab, digits = lab.nb.digits) else if(.lab[1] %in% colnames(data_sum)) data_sum[, .lab] <- dplyr::pull(data_sum, .lab) %>% round(digits = lab.nb.digits) } # pos <- "identity" # if color or fill by groups .cols <- unique(c(color, fill)) if(any(.cols %in% names(data))){ .in <- which(.cols %in% names(data)) lab.fill <- color.var <- .cols[.in] data_sum <- data_sum %>% dplyr::arrange(!!!syms(x), desc(!!!syms(color.var))) group <- intersect(.cols, names(data))[1]# You should specify group for dodging text p <- p + geom_exec(geom_text, data = data_sum, label = .lab, #fill = lab.fill vjust = lab.vjust, hjust = lab.hjust, size = lab.size, color = lab.col, fontface = "plain", position = position, group = group) } else{ p <- p + geom_exec(geom_text, data = data_sum, label = .lab, vjust = lab.vjust, hjust = lab.hjust, size = lab.size, color = lab.col, fontface = "plain", position = position) } } # To do # top10, visualizing error p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } # Stacked error bar ---------------------------- .geom_stacked_errorbar <- function(data_sum, x, y, color = NULL, fill = NULL, facet.by = NULL, group = NULL, func = "mean_se", error.plot = "errorbar"){ stack.groups <- unique(c(x, facet.by)) legend.var <- intersect(unique(c(color, fill, group)), colnames(data_sum)) error <- .get_errorbar_error_func(func) error.value <- data_sum %>% dplyr::pull(!!error) desc <- dplyr::desc errorbar.position <- data_sum %>% group_by(!!!syms(stack.groups)) %>% dplyr::arrange(!!sym(x), desc(!!sym(legend.var))) %>% dplyr::mutate( y = cumsum(!!sym(y)), ymin = .data$y - !!sym(error), ymax = .data$y + !!sym(error) ) %>% dplyr::ungroup() geom_error <- .get_geom_error_function(error.plot) args <- geom_exec( data = errorbar.position, color = color, group = group, x = x, ymin = "ymin", ymax = "ymax" ) mapping <- args$mapping option <- args$option if(error.plot == "errorbar") option$width <- 0.15 option[["mapping"]] <- create_aes(mapping) do.call(geom_error, option) } .get_geom_error_function <- function(error.plot = "errorbar"){ error.plot <- error.plot[1] geom_func <- ggplot2::geom_errorbar if(error.plot %in% c("pointrange", "lower_pointrange", "upper_pointrange")) geom_func <- ggplot2::geom_pointrange else if(error.plot %in% c("linerange", "lower_linerange", "upper_linerange")) geom_func <- ggplot2::geom_linerange else if(error.plot %in% c("errorbar", "lower_errorbar", "upper_errorbar")) geom_func <- ggplot2::geom_errorbar geom_func } .is_stacked <- function(p){ inherits(p$layers[[1]]$position, "PositionStack") } # remove "mean_se", "mean_sd", etc .remove_errorbar_func <- function(add){ setdiff(add, .errorbar_functions()) } # return "mean_se" .get_summary_func <- function(add){ intersect(.errorbar_functions(), add) } # Returns: mean or median .get_errorbar_center_func <- function(func = "mean_se"){ . <- NULL func %>% strsplit("_", fixed = TRUE) %>% unlist() %>% .[1] } # Returns se, sd, iqr .get_errorbar_error_func <- function(func = "mean_se"){ res <- func %>% strsplit("_", fixed = TRUE) %>% unlist() if(length(res) >= 2){ res <- res[2] } else res <- NULL res } ggpubr/R/diff_express.R0000644000176200001440000000277513115255755014571 0ustar liggesusers#' Differential gene expression analysis results #' #' @description Differential gene expression analysis results obtained from #' comparing the RNAseq data of two different cell populations using DESeq2 #' @name diff_express #' @docType data #' @usage data("diff_express") #' @format A data frame with 36028 rows and 5 columns. \describe{ #' \item{\code{name}}{gene names} \item{\code{baseMean}}{mean expression #' signal across all samples} \item{\code{log2FoldChange}}{log2 fold change} #' \item{\code{padj}}{Adjusted p-value}\item{\code{detection_call}}{a numeric #' vector specifying whether the genes is expressed (value = 1) or not (value = 0).}} #' #' @examples #' data(diff_express) #' #' # Default plot #'ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"), #' fdr = 0.05, fc = 2, size = 0.4, #' palette = c("#B31B21", "#1465AC", "darkgray"), #' genenames = as.vector(diff_express$name), #' legend = "top", top = 20, #' font.label = c("bold", 11), #' font.legend = "bold", #' font.main = "bold", #' ggtheme = ggplot2::theme_minimal()) #' #' # Add rectangle around labesl #'ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"), #' fdr = 0.05, fc = 2, size = 0.4, #' palette = c("#B31B21", "#1465AC", "darkgray"), #' genenames = as.vector(diff_express$name), #' legend = "top", top = 20, #' font.label = c("bold", 11), label.rectangle = TRUE, #' font.legend = "bold", #' font.main = "bold", #' ggtheme = ggplot2::theme_minimal()) #' NULL ggpubr/R/ggstripchart.R0000644000176200001440000001576613666557714014630 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Stripcharts #' @description Create a stripchart, also known as one dimensional scatter #' plots. These plots are suitable compared to box plots when sample sizes are #' small. #' @inheritParams ggboxplot #' @param shape point shape #' @param jitter the amount of jitter. #' @param position position adjustment, either as a string, or the result of a #' call to a position adjustment function. Used to adjust position for #' multiple groups. #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_jitter}}, \code{\link{ggpar}} and #' \code{\link{facet}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #'@seealso \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggdotplot}} #' and \code{\link{ggboxplot}}. #' @examples #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' #' # Basic plot with summary statistics: mean_se #' # +++++++++++++++++++++++++++ #' # Change point shapes by groups: "dose" #' ggstripchart(df, x = "dose", y = "len", #' shape = "dose", size = 3, #' add = "mean_se") #' #' # Use mean_sd #' # Change error.plot to "crossbar" #' ggstripchart(df, x = "dose", y = "len", #' shape = "dose", size = 3, #' add = "mean_sd", add.params = list(width = 0.5), #' error.plot = "crossbar") #' #' #' #' # Add summary statistics #' # ++++++++++++++++++++++++++ #' #' # Add box plot #' ggstripchart(df, x = "dose", y = "len", #' shape = "dose", add = "boxplot") #' #' # Add violin + mean_sd #' ggstripchart(df, x = "dose", y = "len", #' shape = "dose", add = c("violin", "mean_sd")) #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' # Change colors by groups: dose #' # Use custom color palette #' ggstripchart(df, "dose", "len", shape = "dose", #' color = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' add = "mean_sd") #' #' #' #' # Plot with multiple groups #' # +++++++++++++++++++++ #' # Change shape and color by a second group : "supp" #' ggstripchart(df, "dose", "len", shape = "supp", #' color = "supp", palette = c("#00AFBB", "#E7B800")) #' #' # Adjust point position #' ggstripchart(df, "dose", "len", shape = "supp", #' color = "supp", palette = c("#00AFBB", "#E7B800"), #' position = position_dodge(0.8) ) #' #' # You can also use position_jitterdodge() #' # but fill aesthetic is required #' ggstripchart(df, "dose", "len", shape = "supp", #' color = "supp", palette = c("#00AFBB", "#E7B800"), #' position = position_jitterdodge() ) #' #' # Add boxplot #' ggstripchart(df, "dose", "len", shape = "supp", #' color = "supp", palette = c("#00AFBB", "#E7B800"), #' add = "boxplot", add.params = list(color = "black") ) #' #' @export ggstripchart <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, shape = 19, size = NULL, select = NULL, remove = NULL, order = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, jitter = 0.2, position = position_jitter(jitter), ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, shape = shape, size = size, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, jitter = jitter, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggstripchart_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggstripchart_core <- function(data, x, y, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, shape = 19, size = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", jitter = 0.2, position = position_jitter(jitter), ggtheme = theme_pubr(), ...) { if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) . <- NULL p <- ggplot(data, create_aes(list(x = x, y = y))) if("none" %in% add) add <- "none" add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) # plot boxplot | violin | crossbar before jitter if( any( c("boxplot", "violin") %in% add)){ p <- add.params %>% .add_item(p = p, add = intersect(add, c("boxplot", "violin") )) %>% do.call(ggadd, .) } if(error.plot == "crossbar"){ p <- add.params %>% .add_item(p = p, error.plot = error.plot, add = setdiff(add, c("boxplot", "violin", "jitter"))) %>% do.call(ggadd, .) } # Plot jitter set.seed(123) p <- p + geom_exec(geom_jitter, data = data, color = color, fill = fill, shape = shape, position = position, size = size, ...) # Add errors if(error.plot == "crossbar"){} else p <- add.params %>% .add_item(p = p, error.plot = error.plot, add = setdiff(add, c("boxplot", "violin", "jitter"))) %>% do.call(ggadd, .) p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/get_legend.R0000644000176200001440000000271413640723011014162 0ustar liggesusers#' @include utilities.R NULL #' Extract Legends from a ggplot object #' @description Extract the legend labels from a ggplot object. #' @param p an object of class ggplot or a list of ggplots. If p is a list, only the first legend is returned. #' @param position character specifying legend position. Allowed values are one of #' c("top", "bottom", "left", "right", "none"). To remove the legend use #' legend = "none". #' @return an object of class gtable. #' @examples #' # Create a scatter plot #' p <- ggscatter(iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "Species", palette = "jco", #' ggtheme = theme_minimal()) #' p #' #' # Extract the legend. Returns a gtable #' leg <- get_legend(p) #' #' # Convert to a ggplot and print #' as_ggplot(leg) #' #' @export get_legend <- function(p, position = NULL){ if(.is_list(p)){ continue <- TRUE i <- 1 while(i <= length(p) & continue){ leg <- .get_legend(p[[i]], position = position) if(!is.null(leg)) continue <- FALSE i <- i+1 } } else{ leg <- .get_legend(p, position = position) } leg } # Return legend for one plot .get_legend <- function(p, position = NULL){ if(is.null(p)) return(NULL) if(!is.null(position)){ p <- p + theme(legend.position = position) } tmp <- ggplot_gtable(ggplot_build(p)) leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") if(length(leg) > 0) leg <- tmp$grobs[[leg]] else leg <- NULL leg } ggpubr/R/gghistogram.R0000644000176200001440000002025313666557647014432 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Histogram plot #' @description Create a histogram plot. #' @inheritParams ggboxplot #' @param x variable to be drawn. #' @param y one of "..density.." or "..count..". #' @param weight a variable name available in the input data for creating a weighted histogram. #' @param color,fill histogram line color and fill color. #' @param linetype line type. See \code{\link{show_line_types}}. #' @param alpha numeric value specifying fill color transparency. Value should #' be in [0, 1], where 0 is full transparency and 1 is no transparency. #' @param bins Number of bins. Defaults to 30. #' @param binwidth numeric value specifying bin width. use value between 0 and 1 #' when you have a strong dense dotplot. For example binwidth = 0.2. #' @param add allowed values are one of "mean" or "median" (for adding mean or #' median line, respectively). #' @param add.params parameters (color, size, linetype) for the argument 'add'; #' e.g.: add.params = list(color = "red"). #' @param rug logical value. If TRUE, add marginal rug. #' @param add_density logical value. If TRUE, add density curves. #' @param position Position adjustment, either as a string, or the result of a #' call to a position adjustment function. Allowed values include "identity", #' "stack", "dodge". #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_histogram}} and \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggdensity}} and \code{\link{ggpar}} #' #' @examples #' # Create some data format #' set.seed(1234) #' wdata = data.frame( #' sex = factor(rep(c("F", "M"), each=200)), #' weight = c(rnorm(200, 55), rnorm(200, 58))) #' #' head(wdata, 4) #' #' # Basic density plot #' # Add mean line and marginal rug #' gghistogram(wdata, x = "weight", fill = "lightgray", #' add = "mean", rug = TRUE) #' #' # Change outline colors by groups ("sex") #' # Use custom color palette #' gghistogram(wdata, x = "weight", #' add = "mean", rug = TRUE, #' color = "sex", palette = c("#00AFBB", "#E7B800")) #' #' # Change outline and fill colors by groups ("sex") #' # Use custom color palette #' gghistogram(wdata, x = "weight", #' add = "mean", rug = TRUE, #' color = "sex", fill = "sex", #' palette = c("#00AFBB", "#E7B800")) #' #' #' #' # Combine histogram and density plots #' gghistogram(wdata, x = "weight", #' add = "mean", rug = TRUE, #' fill = "sex", palette = c("#00AFBB", "#E7B800"), #' add_density = TRUE) #' #' # Weighted histogram #' gghistogram(iris, x = "Sepal.Length", weight = "Petal.Length") #' @export gghistogram <- function(data, x, y = "..count..", combine = FALSE, merge = FALSE, weight = NULL, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, bins = NULL, binwidth = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, add_density = FALSE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, position = position_identity(), ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, linetype = linetype, size = size, alpha = alpha, bins = bins, binwidth = binwidth, weight = weight, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, add = add, add.params = add.params, rug = rug, add_density = add_density, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- gghistogram_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) if(missing(y)) .opts$y <- y if(missing(add.params)) .opts$add.params <- add.params p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } gghistogram_core <- function(data, x, y = "..count..", weight = NULL, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, bins = NULL, binwidth = NULL, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, add_density = FALSE, position = position_identity(), ggtheme = theme_classic(), ...) { grouping.vars <- grp <- c(color, fill, linetype, size, alpha, facet.by) %>% unique() %>% intersect(colnames(data)) color2 <- c(color, fill) %>% unique() %>% intersect(colnames(data)) if(.is_empty(color2)) color2 <- color # Check bins if(is.null(bins) & is.null(binwidth)){ bins <- 30 warning("Using `bins = 30` by default. Pick better value with the argument `bins`.", call.= FALSE) } add <- match.arg(add) if(is.null(add.params$color)){ if(!.is_empty(color2)) add.params$color <- color2 } add.params <- .check_add.params(add, add.params, error.plot = "", data, color, fill, ...) if(is.null(add.params$size)) add.params$size <- size if(is.null(add.params$linetype)) add.params$linetype <- linetype # if(add_density) y <- "..density.." p <- ggplot(data, create_aes(list(x = x, y = y))) p <- p + geom_exec(geom_histogram, data = data, color = color, fill = fill, size = size, linetype = linetype, alpha = alpha, bins = bins, binwidth = binwidth, weight = weight, position = position, ...) # Add mean/median if(add %in% c("mean", "median")){ p <- p %>% .add_center_line(add = add, grouping.vars = grouping.vars, color = add.params$color, linetype = add.params$linetype, size = add.params$size) } # Add marginal rug if(rug) { grps <- c(color, fill, linetype, size, alpha) %>% unique() %>% intersect(colnames(data)) alpha <- ifelse(.is_empty(grps), 1, alpha) .args <- geom_exec(NULL, data = data, color = color2, sides = "b", alpha = alpha) mapping <- .args$mapping mapping[["y"]] <- 0 option <- .args$option option[["mapping"]] <- create_aes(mapping) p <- p + do.call(geom_rug, option) } # Add density curve if(add_density) p <- p + geom_exec(geom_density, data = data, color = add.params$color, linetype = linetype, alpha = alpha, size = add.params$size) p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/ggqqplot.R0000644000176200001440000002036113666557135013745 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' QQ Plots #' @description Quantile-Quantile plot. #' @inheritParams ggboxplot #' @param x variable to be drawn. #' @param color point color. #' @param size point size. #' @param shape point shape. #' @param add character vector. Allowed values are one of "none" and "qqline" #' (for adding qqline). #' @param add.params parameters (color, size, linetype) for the #' argument 'add'; e.g.: add.params = list(color = "red"). #' @param conf.int logical value. If TRUE, confidence interval is added. #' @param conf.int.level the confidence level. Default value is 0.95. #' @param ... other arguments to be passed to \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}} #' #' @examples #' # Create some data format #' set.seed(1234) #' wdata = data.frame( #' sex = factor(rep(c("F", "M"), each=200)), #' weight = c(rnorm(200, 55), rnorm(200, 58))) #' #' head(wdata, 4) #' #' # Basic QQ plot #' ggqqplot(wdata, x = "weight") #' #' # Change colors and shape by groups ("sex") #' # Use custom palette #' ggqqplot(wdata, x = "weight", #' color = "sex", palette = c("#00AFBB", "#E7B800")) #' #' @export ggqqplot <- function(data, x, combine = FALSE, merge = FALSE, color = "black", palette = NULL, size = NULL, shape = NULL, add = c( "qqline", "none"), add.params = list(linetype = "solid"), conf.int = TRUE, conf.int.level = 0.95, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, palette = palette, size = size, shape = shape, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, conf.int.level = conf.int.level, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggqqplot_core .opts$y <- "..qq.." if(is.null(.opts$xlab)) .opts$xlab <- "Theoretical" if(is.null(.opts$ylab)) .opts$ylab <- "Sample" if(is.null(.opts$add)) .opts$add <- "qqline" if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggqqplot_core <- function(data, x, y = "..qq..", color = "black", palette = NULL, size = NULL, shape = NULL, fill = "white", add = c( "qqline", "none"), add.params = list(linetype = "solid"), conf.int = TRUE, conf.int.level = 0.95, title = NULL, xlab = NULL, ylab = NULL, ggtheme = theme_pubr(), ...) { # Check data .dd <- .check_data(data, x, y=NULL) data <- .dd$data x <- .dd$x y <- .dd$y group <- c(shape, color) %>% unique() %>% intersect(colnames(data)) group <- ifelse(.is_empty(group), 1, group[1]) add <- match.arg(add) add.params <- .check_add.params(add, add.params, error.plot = "", data, color, fill = fill, ...) if(is.null(add.params$size)) add.params$size <- size if(is.null(add.params$linetype)) add.params$linetype <- "solid" p <- ggplot(data, create_aes(list(sample = x))) p <- p + geom_exec(stat_qq, data = data, color = color, size = size, shape = shape) if ("qqline" %in% add) p <- p + geom_exec(.stat_qqline, data = data, color = add.params$color, size = add.params$size, linetype = add.params$linetype, group = group) # Confidence interval if(conf.int){ p <- p + geom_exec(.stat_qq_confint, data = data, fill = color, alpha = 0.2, conf.int.level = conf.int.level, group = group) } p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } # Helper functions ######################## # from: http://stackoverflow.com/questions/4357031/qqnorm-and-qqline-in-ggplot2 # qf : qfunction (e.g.: qnorm) .qq_line <- function(data, qf, na.rm) { q.sample <- stats::quantile(data, c(0.25, 0.75), na.rm = na.rm) q.theory <- qf(c(0.25, 0.75)) slope <- diff(q.sample) / diff(q.theory) intercept <- q.sample[1] - slope * q.theory[1] list(slope = slope, intercept = intercept) } StatQQLine <- ggproto("StatQQLine", Stat, # http://docs.ggplot2.org/current/vignettes/extending-ggplot2.html # https://github.com/hadley/ggplot2/blob/master/R/stat-qq.r required_aes = c('sample'), compute_group = function(data, scales, distribution = stats::qnorm, dparams = list(), conf.int.level = 0.95, na.rm = FALSE) { qf <- function(p) do.call(distribution, c(list(p = p), dparams)) n <- length(data$sample) P <- stats::ppoints(n) theoretical <- qf(P) qq <- .qq_line(data$sample, qf = qf, na.rm = na.rm) line <- qq$intercept + theoretical * qq$slope # Confidence interval zz <- stats::qnorm(1 - (1 - conf.int.level)/2) SE <- (qq$slope/stats::dnorm(theoretical)) * sqrt(P * (1 - P)/n) fit.value <- qq$intercept + qq$slope * theoretical ymax <- fit.value + zz * SE ymin <- fit.value - zz * SE data.frame(x = theoretical, y = line, ymin = ymin, ymax = ymax) } ) .stat_qqline <- function(mapping = NULL, data = NULL, geom = "line", position = "identity", ..., distribution = stats::qnorm, dparams = list(), na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, conf.int.level = 0.95) { layer(stat = StatQQLine, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(distribution = distribution, dparams = dparams, na.rm = na.rm, conf.int.level = conf.int.level, ...)) } .stat_qq_confint <- function(mapping = NULL, data = NULL, geom = "ribbon", position = "identity", ..., distribution = stats::qnorm, dparams = list(), na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, conf.int.level = 0.95) { layer(stat = StatQQLine, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(distribution = distribution, dparams = dparams, na.rm = na.rm, conf.int.level = conf.int.level, ...)) } ggpubr/R/utilities_base.R0000644000176200001440000000426213640733100015072 0ustar liggesusers#:::::::::::::::::::::::::::::::::::::::::::::::::::: # General helper functions #:::::::::::::::::::::::::::::::::::::::::::::::::::: # Get random string .random_string <-function(.length = 7){ index <- sample(1:26, .length) paste(letters[index], collapse = "") } # get file extension .file_ext <- function(x){ pos <- regexpr("\\.([[:alnum:]]+)$", x) ifelse(pos > -1L, substring(x, pos + 1L), "") } # extract device name from file name .device <- function (filename) { device <- .file_ext(filename) devices <- list(eps = grDevices::postscript, ps = grDevices::postscript, pdf = grDevices::pdf, # svg = svglite::svglite, png = grDevices::png, jpg = grDevices::jpeg, jpeg = grDevices::jpeg, bmp = grDevices::bmp, tiff = grDevices::tiff) dev <- devices[[device]] if (is.null(dev)) { stop("Unknown graphics device '", device, "'", call. = FALSE) } dev } # Grouping data by variables #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .group_by <- function(data, grouping.vars){ . <- NULL # used in pipes # Grouping the data ==> list of data sets grouped.d <- data %>% df_nest_by(vars = grouping.vars) # Defining names for the list of data sets. # names = combination of the levels of the grouping variables .names.df <- grouped.d[, grouping.vars, drop = FALSE] .names <- .paste_colnames(.names.df, sep = ":") %>% apply(1, paste, collapse = ", ") names(grouped.d$data) <- .names return(grouped.d) } # Pasting the column name to each value of a dataframe #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .paste_colnames <- function(data, sep = "."){ data <- as.data.frame(data) if(ncol(data) == 1){ res <- paste0(colnames(data), ".", data[[1]]) res <- data.frame(x = res, stringsAsFactors = FALSE) colnames(res) <- colnames(data) return(res) } res <- apply(data, 1, function(row, cname){paste(cname, row, sep = sep)}, colnames(data) ) %>% t() %>% as.data.frame(stringsAsFactors = FALSE) colnames(res) <- colnames(data) res } ggpubr/R/ggdensity.R0000644000176200001440000001423013666556623014103 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Density plot #' @description Create a density plot. #' @inheritParams ggboxplot #' @param x variable to be drawn. #' @param y one of "..density.." or "..count..". #' @param color,fill density line color and fill color. #' @param linetype line type. See \code{\link{show_line_types}}. #' @param alpha numeric value specifying fill color transparency. Value should #' be in [0, 1], where 0 is full transparency and 1 is no transparency. #' @param add allowed values are one of "mean" or "median" (for adding mean or #' median line, respectively). #' @param add.params parameters (color, size, linetype) for the argument 'add'; #' e.g.: add.params = list(color = "red"). #' @param rug logical value. If TRUE, add marginal rug. #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_density}} and \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{gghistogram}} and \code{\link{ggpar}}. #' #' @examples #' # Create some data format #' set.seed(1234) #' wdata = data.frame( #' sex = factor(rep(c("F", "M"), each=200)), #' weight = c(rnorm(200, 55), rnorm(200, 58))) #' #' head(wdata, 4) #' #' # Basic density plot #' # Add mean line and marginal rug #' ggdensity(wdata, x = "weight", fill = "lightgray", #' add = "mean", rug = TRUE) #' #' # Change outline colors by groups ("sex") #' # Use custom palette #' ggdensity(wdata, x = "weight", #' add = "mean", rug = TRUE, #' color = "sex", palette = c("#00AFBB", "#E7B800")) #' #' #' # Change outline and fill colors by groups ("sex") #' # Use custom palette #' ggdensity(wdata, x = "weight", #' add = "mean", rug = TRUE, #' color = "sex", fill = "sex", #' palette = c("#00AFBB", "#E7B800")) #' #' #' @export ggdensity <- function(data, x, y = "..density..", combine = FALSE, merge = FALSE, color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ...){ # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, linetype = linetype, size = size, alpha = alpha, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, add = add, add.params = add.params, rug = rug, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggdensity_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) if(missing(y)) .opts$y <- y if(missing(add.params)) .opts$add.params <- add.params p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggdensity_core <- function(data, x, y = "..density..", color = "black", fill = NA, palette = NULL, size = NULL, linetype = "solid", alpha = 0.5, title = NULL, xlab = NULL, ylab = NULL, add = c("none", "mean", "median"), add.params = list(linetype = "dashed"), rug = FALSE, facet.by = NULL, ggtheme = theme_classic(), ...) { grouping.vars <- grp <- c(color, fill, linetype, size, alpha, facet.by) %>% unique() %>% intersect(colnames(data)) add <- match.arg(add) add.params <- .check_add.params(add, add.params, error.plot = "", data, color, fill, ...) if(is.null(add.params$size)) add.params$size <- size if(is.null(add.params$linetype)) add.params$linetype <- linetype p <- ggplot(data, create_aes(list(x = x, y = y))) p <- p + geom_exec(geom_density, data = data, color = color, fill = fill, size = size, linetype = linetype, alpha = alpha, ...) # Add mean/median if(add %in% c("mean", "median")){ p <- p %>% .add_center_line(add = add, grouping.vars = grouping.vars, color = add.params$color, linetype = add.params$linetype, size = add.params$size) } # Add marginal rug if(rug) { grps <- c(color, fill, linetype, size, alpha) %>% unique() %>% intersect(colnames(data)) alpha <- ifelse(.is_empty(grps), 1, alpha) .args <- geom_exec(NULL, data = data, color = color, sides = "b", alpha = alpha) mapping <- .args$mapping mapping[["y"]] <- 0 option <- .args$option option[["mapping"]] <- create_aes(mapping) p <- p + do.call(geom_rug, option) } p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/ggmaplot.R0000644000176200001440000002177613666022530013716 0ustar liggesusers#' @include utilities.R ggpar.R NULL #'MA-plot from means and log fold changes #'@description Make MA-plot which is a scatter plot of log2 fold changes (M, on #' the y-axis) versus the average expression signal (A, on the x-axis). \code{M #' = log2(x/y)} and \code{A = (log2(x) + log2(y))/2 = log2(xy)*1/2}, where x #' and y are respectively the mean of the two groups being compared. #'@inheritParams ggboxplot #'@inheritParams ggpar #'@param data an object of class DESeqResults, get_diff, DE_Results, matrix or #' data frame containing the columns baseMean (or baseMeanLog2), #' log2FoldChange, and padj. Rows are genes. #' #' Two possible formats are accepted for the input data: \itemize{ \item 1/ #' \code{baseMean | log2FoldChange | padj}. This is a typical output from #' DESeq2 pipeline. Here, we'll use log2(baseMean) as the x-axis variable. #' \item 2/ \code{baseMeanLog2 | log2FoldChange | padj}. Here, baseMeanLog2 is #' assumed to be the mean of logged values; so we'll use it as the x-axis #' variable without any transformation. This is the real A in MA plot. In other #' words, it is the average of two log-scales values: \code{A = (log2(x) + #' log2(y))/2 = log2(xy)*1/2} } #' #' Terminology: #' #' \itemize{ \item baseMean: the mean expression of genes in the two groups. #' \item log2FoldChange: the log2 fold changes of group 2 compared to group 1 #' \item padj: the adjusted p-value of the used statiscal test. } #'@param fdr Accepted false discovery rate for considering genes as #' differentially expressed. #'@param fc the fold change threshold. Only genes with a fold change >= fc and #' padj <= fdr are considered as significantly differentially expressed. #'@param genenames a character vector of length nrow(data) specifying gene names #' corresponding to each row. Used for point labels. #'@param detection_call a numeric vector with length = nrow(data), specifying if #' the genes is expressed (value = 1) or not (value = 0). For example #' detection_call = c(1, 1, 0, 1, 0, 1). Default is NULL. If detection_call #' column is available in data, it will be used. #'@param size points size. #'@param alpha numeric value betwenn 0 an 1 specifying point alpha for #' controlling transparency. For example, use alpha = 0.5. #'@param font.label a vector of length 3 indicating respectively the size (e.g.: #' 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the #' color (e.g.: "red") of point labels. For example \emph{font.label = c(14, #' "bold", "red")}. #'@param label.rectangle logical value. If TRUE, add rectangle underneath the #' text, making it easier to read. #'@param top the number of top genes to be shown on the plot. Use top = 0 to #' hide to gene labels. #'@param select.top.method methods to be used for selecting top genes. Allowed #' values include "padj" and "fc" for selecting by adjusted p values or fold #' changes, respectively. #'@param label.select character vector specifying some labels to show. #'@param ... other arguments to be passed to \code{\link{ggpar}}. #'@return returns a ggplot. #' @examples #' data(diff_express) #' #' # Default plot #'ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"), #' fdr = 0.05, fc = 2, size = 0.4, #' palette = c("#B31B21", "#1465AC", "darkgray"), #' genenames = as.vector(diff_express$name), #' legend = "top", top = 20, #' font.label = c("bold", 11), #' font.legend = "bold", #' font.main = "bold", #' ggtheme = ggplot2::theme_minimal()) #' #' # Add rectangle around labels #'ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"), #' fdr = 0.05, fc = 2, size = 0.4, #' palette = c("#B31B21", "#1465AC", "darkgray"), #' genenames = as.vector(diff_express$name), #' legend = "top", top = 20, #' font.label = c("bold", 11), label.rectangle = TRUE, #' font.legend = "bold", #' font.main = "bold", #' ggtheme = ggplot2::theme_minimal()) #' #' # Select specific genes to show #' # set top = 0, then specify genes using label.select argument #' ggmaplot(diff_express, main = expression("Group 1" %->% "Group 2"), #' fdr = 0.05, fc = 2, size = 0.4, #' genenames = as.vector(diff_express$name), #' ggtheme = ggplot2::theme_minimal(), #' top = 0, label.select = c("BUB1", "CD83") #' ) #' #'@export ggmaplot <- function (data, fdr = 0.05, fc = 1.5, genenames = NULL, detection_call = NULL, size = NULL, alpha = 1, font.label = c(12, "plain", "black"), label.rectangle = FALSE, palette = c("#B31B21", "#1465AC", "darkgray"), top = 15, select.top.method = c("padj", "fc"), label.select = NULL, main = NULL, xlab = "Log2 mean expression", ylab = "Log2 fold change", ggtheme = theme_classic(),...) { if(!base::inherits(data, c("matrix", "data.frame", "DataFrame", "DE_Results", "DESeqResults"))) stop("data must be an object of class matrix, data.frame, DataFrame, DE_Results or DESeqResults") if(!is.null(detection_call)){ if(nrow(data)!=length(detection_call)) stop("detection_call must be a numeric vector of length = nrow(data)") } else if("detection_call" %in% colnames(data)){ detection_call <- as.vector(data$detection_call) } else detection_call = rep(1, nrow(data)) # Legend position if(is.null(list(...)$legend)) legend <- c(0.12, 0.9) # If basemean logged, we'll leave it as is, otherwise log2 transform is.basemean.logged <- "baseMeanLog2" %in% colnames(data) if(is.basemean.logged){ data$baseMean <- data$baseMeanLog2 } else if("baseMean" %in% colnames(data)){ data$baseMean <- log2(data$baseMean +1) } # Check data format ss <- base::setdiff(c("baseMean", "log2FoldChange", "padj"), colnames(data)) if(length(ss)>0) stop("The colnames of data must contain: ", paste(ss, collapse = ", ")) if(is.null(genenames)) genenames <- rownames(data) else if(length(genenames)!=nrow(data)) stop("genenames should be of length nrow(data).") sig <- rep(3, nrow(data)) sig[which(data$padj <= fdr & data$log2FoldChange < 0 & abs(data$log2FoldChange) >= log2(fc) & detection_call ==1)] = 2 sig[which(data$padj <= fdr & data$log2FoldChange > 0 & abs(data$log2FoldChange) >= log2(fc) & detection_call ==1)] = 1 data <- data.frame(name = genenames, mean = data$baseMean, lfc = data$log2FoldChange, padj = data$padj, sig = sig) # Change level labels . <- NULL data$sig <- as.factor(data$sig) .lev <- .levels(data$sig) %>% as.numeric() palette <- palette[.lev] new.levels <- c( paste0("Up: ", sum(sig == 1)), paste0("Down: ", sum(sig == 2)), "NS" ) %>% .[.lev] data$sig <- factor(data$sig, labels = new.levels) # Ordering for selecting top gene select.top.method <- match.arg(select.top.method) if(select.top.method == "padj") data <- data[order(data$padj), ] else if(select.top.method == "fc") data <- data[order(abs(data$lfc), decreasing = TRUE), ] # select data for top genes complete_data <- stats::na.omit(data) labs_data <- subset(complete_data, padj <= fdr & name!="" & abs(lfc) >= log2(fc)) labs_data <- utils::head(labs_data, top) # Select some specific labels to show if(!is.null(label.select)){ selected_labels <- complete_data %>% subset(complete_data$name %in% label.select, drop = FALSE) labs_data <- dplyr::bind_rows(labs_data, selected_labels) %>% dplyr::distinct(.data$name, .keep_all = TRUE) } font.label <- .parse_font(font.label) font.label$size <- ifelse(is.null(font.label$size), 12, font.label$size) font.label$color <- ifelse(is.null(font.label$color), "black", font.label$color) font.label$face <- ifelse(is.null(font.label$face), "plain", font.label$face) # Plot set.seed(42) mean <- lfc <- sig <- name <- padj <- NULL p <- ggplot(data, aes(x = mean, y = lfc)) + geom_point(aes(color = sig), size = size, alpha = alpha) if(label.rectangle){ p <- p + ggrepel::geom_label_repel(data = labs_data, mapping = aes(label = name), box.padding = unit(0.35, "lines"), point.padding = unit(0.3, "lines"), force = 1, fontface = font.label$face, size = font.label$size/3, color = font.label$color) } else{ p <- p + ggrepel::geom_text_repel(data = labs_data, mapping = aes(label = name), box.padding = unit(0.35, "lines"), point.padding = unit(0.3, "lines"), force = 1, fontface = font.label$face, size = font.label$size/3, color = font.label$color) } p <- p + scale_x_continuous(breaks=seq(0, max(data$mean), 2))+ labs(x = xlab, y = ylab, title = main, color = "")+ # to remove legend title use color = "" geom_hline(yintercept = c(0, -log2(fc), log2(fc)), linetype = c(1, 2, 2), color = c("black", "black", "black")) p <- ggpar(p, palette = palette, ggtheme = ggtheme, ...) p } ggpubr/R/stat_overlay_normal_density.R0000644000176200001440000000427313675457745017744 0ustar liggesusers#' @include utilities.R NULL #' Overlay Normal Density Plot #' #' @description Overlay normal density plot (with the same mean and SD) to the #' density distribution of 'x'. This is useful for visually inspecting the #' degree of deviance from normality. #' @inheritParams ggplot2::layer #' @param ... other arguments to pass to \code{\link[ggplot2:geom_path]{geom_line}}. #' @param na.rm If FALSE (the default), removes missing values with a warning. #' If TRUE silently removes missing values. #' @seealso \code{\link{ggdensity}} #' @examples #' # Simpledensity plot #' data("mtcars") #' ggdensity(mtcars, x = "mpg", fill = "red") + #' scale_x_continuous(limits = c(-1, 50)) + #' stat_overlay_normal_density(color = "red", linetype = "dashed") #' #' # Color by groups #' data(iris) #' ggdensity(iris, "Sepal.Length", color = "Species") + #' stat_overlay_normal_density(aes(color = Species), linetype = "dashed") #' #' #' # Facet #' ggdensity(iris, "Sepal.Length", facet.by = "Species") + #' stat_overlay_normal_density(color = "red", linetype = "dashed") #' #' @export stat_overlay_normal_density <- function(mapping = NULL, data = NULL, geom = "line", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { if(is.null(mapping)){ mapping <- ggplot2::aes(y = NULL) }else{ mapping["y"] <- list(NULL) } layer( stat = StatOverlayNormalDensity, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, ...) ) } StatOverlayNormalDensity<- ggproto("StatOverlayNormalDensity", Stat, required_aes = c("x"), compute_group = function(data, scales) { x <- data$x .mean <- mean(x, na.rm = TRUE) .sd <- stats::sd(x, na.rm = TRUE) probability.points <- stats::ppoints(length(x[!(is.na(x))])) res.density <- stats::density(stats::qnorm(probability.points, .mean, .sd)) res.density <- data.frame(x = res.density$x, y = res.density$y) res.density } ) ggpubr/R/add_summary.R0000644000176200001440000002353113666554410014407 0ustar liggesusers#' @include utilities.R NULL #'Add Summary Statistics onto a ggplot. #'@description add summary statistics onto a ggplot. #'@param p a ggplot on which you want to add summary statistics. #'@param fun a function that is given the complete data and should return a data #' frame with variables ymin, y, and ymax. Allowed values are one of: "mean", #' "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", #' "median_hilow", "median_q1q3", "median_mad", "median_range". #'@param error.plot plot type used to visualize error. Allowed values are one of #' \code{c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", #' "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", #' "lower_linerange")}. Default value is "pointrange". #'@param color point or outline color. #'@param fill fill color. Used only whne \code{error.plot = "crossbar"}. #'@param group grouping variable. Allowed values are 1 (for one group) or a #' character vector specifying the name of the grouping variable. Used only for #' adding statistical summary per group. #'@param width numeric value between 0 and 1 specifying bar or box width. #' Example width = 0.8. Used only when \code{error.plot} is one of #' c("crossbar", "errorbar"). #'@param shape point shape. Allowed values can be displayed using the function #' \code{\link{show_point_shapes}()}. #'@param size numeric value in [0-1] specifying point and line size. #'@param linetype line type. #'@param show.legend logical. Should this layer be included in the legends? NA, #' the default, includes if any aesthetics are mapped. \code{FALSE} never includes, #' and TRUE always includes. It can also be a named logical vector to finely #' select the aesthetics to display. #'@param data a \code{data.frame} to be displayed. If \code{NULL}, the default, #' the data is inherited from the plot data as specified in the call to #' \link[ggplot2]{ggplot}. #'@param position position adjustment, either as a string, or the result of a #' call to a position adjustment function. Used to adjust position for multiple #' groups. #'@param x a numeric vector. #'@param ci the percent range of the confidence interval (default is 0.95). #'@param error.limit allowed values are one of ("both", "lower", "upper", #' "none") specifying whether to plot the lower and/or the upper limits of #' error interval. #'@examples #' #'# Basic violin plot #'p <- ggviolin(ToothGrowth, x = "dose", y = "len", add = "none") #'p #' #'# Add mean_sd #'add_summary(p, "mean_sd") #' #' #'@describeIn add_summary add summary statistics onto a ggplot. #'@export add_summary <- function(p, fun = "mean_se", error.plot = "pointrange", color = "black", fill = "white", group = 1, width = NULL, shape = 19, size = 1, linetype = 1, show.legend = NA, ci = 0.95, data = NULL, position = position_dodge(0.8)) { if(is.null(data)) data <- p$data if(fun == "mean_se") fun <- "mean_se_" else if(fun == "median_hilow") fun <- "median_hilow_" allowed.fun <- .summary_functions() if(!(fun %in% allowed.fun)) stop("Don't support ", fun, ". Possibilities for the argument fun are: ", .collapse(allowed.fun, sep = ", ")) allowed.error.plot = c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", "lower_linerange") if(!(error.plot %in% allowed.error.plot)) stop("Don't support ", error.plot, ". Possibilities for the argument error.plot are: ", .collapse(allowed.error.plot, sep = ", ")) if(missing(width)) width <- 0.8 .map <- .mapping(p) if(missing(color) & !is.null(.map$colour)) color <- .map$colour if(missing(fill) & !is.null(.map$fill)) fill <- .map$fill # Error limits #:::::::::::::::::::::::::::::::::::::::::::::::::: . <- NULL error.limit <- strsplit(error.plot, "_") %>% unlist() %>% .[1] if(!(error.limit %in% c("upper", "lower"))) error.limit <- "both" if(fun %in% c("mean", "median")) error.limit <- "none" # Defining plot geometry #:::::::::::::::::::::::::::::::::::::::::::::::::: geom <- error.plot if(error.plot %in% c("pointrange", "lower_pointrange", "upper_pointrange")) geom <- "pointrange" else if(error.plot %in% c("linerange", "lower_linerange", "upper_linerange")) geom <- "linerange" else if(error.plot %in% c("errorbar", "lower_errorbar", "upper_errorbar")) geom <- "errorbar" fun.data <- fun.y <- fun.ymin <- fun.ymax <- NULL if(fun %in% c("mean", "median")){ fun.y <- fun.ymin <- fun.ymax <- fun } else fun.data <- fun # General option #:::::::::::::::::::::::::::::::::::::::::::::::::: opts <- list(geomfunc = "stat_summary", fun.data = fun.data, fun.y = fun.y, fun.ymin = fun.ymin, fun.ymax = fun.ymax, color = color, geom = geom, size = size, linetype = linetype, show.legend = show.legend, data = data, position = position, fun.args = list(error.limit = error.limit), group = group) if(fun %in% c("mean_ci", "median_hilow_")){ opts$fun.args$ci <- ci } # Specific option #:::::::::::::::::::::::::::::::::::::::::::::::::: if(geom == "crossbar") opts <- opts %>% .add_item(fill = fill, width = width) else if(geom == "errorbar"){ if(missing(width)) opts$width = 0.1 else opts$width = width } opts %>% .update_plot(p) } #' @describeIn add_summary returns the \code{mean} and the error limits defined by the #' \code{standard error}. We used the name \code{mean_se_}() to avoid masking \code{\link[ggplot2]{mean_se}}(). #' @export mean_se_ <- function(x, error.limit = "both") { length <- base::sum(!is.na(x)) sd = stats::sd(x, na.rm=TRUE) se <- sd / sqrt(length) .mean <- base::mean(x, na.rm = TRUE) data.frame( y = .mean, ymin = .mean - se, ymax = .mean + se ) %>% .format_error(error.limit) } #' @describeIn add_summary returns the \code{mean} and the error limits defined by the #' \code{standard deviation}. #' @export mean_sd <- function(x, error.limit = "both"){ sd = stats::sd(x, na.rm=TRUE) .mean <- base::mean(x, na.rm = TRUE) data.frame( y = .mean, ymin = .mean - sd, ymax = .mean + sd ) %>% .format_error(error.limit) } #' @describeIn add_summary returns the \code{mean} and the error limits defined by the #' \code{confidence interval}. #' @export mean_ci <- function(x, ci = 0.95, error.limit = "both"){ length <- base::sum(!is.na(x)) sd = stats::sd(x, na.rm=TRUE) se <- sd / sqrt(length) .mean <- base::mean(x, na.rm = TRUE) ci <- stats::qt(ci/2 + .5, length-1)*se data.frame( y = .mean, ymin = .mean - ci, ymax = .mean + ci ) %>% .format_error(error.limit) } #' @describeIn add_summary returns the \code{mean} and the error limits defined by the #' \code{range = max - min}. #' @export mean_range <- function(x, error.limit = "both"){ .mean <- base::mean(x, na.rm = TRUE) .min <- base::min(x, na.rm=TRUE) .max <- base::max(x, na.rm=TRUE) .range <- .max - .min data.frame( y = .mean, ymin = .mean - .range, ymax = .mean + .range ) %>% .format_error(error.limit) } #' @describeIn add_summary returns the \code{median} and the error limits #' defined by the \code{interquartile range}. #' @export median_iqr <- function(x, error.limit = "both"){ .median = stats::median(x, na.rm=TRUE) .iqr <- stats::IQR(x, na.rm=TRUE) data.frame( y = .median, ymin = .median - .iqr, ymax = .median + .iqr ) %>% .format_error(error.limit) } #' @describeIn add_summary computes the sample median and a selected pair of #' outer quantiles having equal tail areas. This function is a reformatted #' version of \code{Hmisc::smedian.hilow()}. The confidence limits are computed #' as follow: \code{lower.limits = (1-ci)/2} percentiles; \code{upper.limits = #' (1+ci)/2} percentiles. By default (\code{ci = 0.95}), the 2.5th and the #' 97.5th percentiles are used as the lower and the upper confidence limits, #' respectively. If you want to use the 25th and the 75th percentiles as the #' confidence limits, then specify \code{ci = 0.5} or use the function #' \code{median_q1q3()}. #' @export median_hilow_ <- function(x, ci = 0.95, error.limit = "both"){ quant <- stats::quantile( x, probs = c(0.5, (1 - ci)/2, (1 + ci)/2), na.rm = TRUE ) names(quant) <- c("median", "lower", "upper") data.frame( y = quant["median"], ymin = quant["lower"], ymax = quant["upper"] ) %>% .format_error(error.limit) } #' @describeIn add_summary computes the sample median and, the 25th and 75th #' percentiles. Wrapper around the function \code{median_hilow_()} using #' \code{ci = 0.5}. #' @export median_q1q3 <- function(x, error.limit = "both"){ median_hilow_(x, ci = 0.5, error.limit = error.limit) } #' @describeIn add_summary returns the \code{median} and the error limits #' defined by the \code{median absolute deviation}. #' @export median_mad <- function(x, error.limit = "both"){ .median = stats::median(x, na.rm=TRUE) .mad = stats::mad(x, na.rm=TRUE) data.frame( y = .median, ymin = .median - .mad, ymax = .median + .mad ) %>% .format_error(error.limit) } #' @describeIn add_summary returns the \code{median} and the error limits #' defined by the \code{range = max - min}. #' @export median_range <- function(x, error.limit = "both"){ .median = stats::median(x, na.rm=TRUE) .min <- base::min(x, na.rm=TRUE) .max <- base::max(x, na.rm=TRUE) .range <- .max - .min data.frame( y = .median, ymin = .median - .range, ymax = .median + .range ) %>% .format_error(error.limit) } # Format error .format_error <- function(d, error.limit = "both"){ if(error.limit == "upper") d$ymin <- d$y else if(error.limit == "lower") d$ymax <- d$y else if(error.limit == "none") d$ymin <- d$ymax <- d$y d } ggpubr/R/ggadd.R0000644000176200001440000001434713663004750013147 0ustar liggesusers#' @include utilities.R NULL #'Add Summary Statistics or a Geom onto a ggplot #'@description Add summary statistics or a geometry onto a ggplot. #'@inheritParams add_summary #'@param p a ggplot #'@param add character vector specifying other plot elements to be added. #' Allowed values are one or the combination of: "none", "dotplot", "jitter", #' "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", #' "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range". #'@param color point or outline color. #'@param fill fill color. Used only when \code{error.plot = "crossbar"}. #'@param group grouping variable. Allowed values are 1 (for one group) or a #' character vector specifying the name of the grouping variable. Used only for #' adding statistical summary per group. #'@param width numeric value between 0 and 1 specifying bar or box width. #' Example width = 0.8. Used only when \code{error.plot} is one of #' c("crossbar", "errorbar"). #'@param shape point shape. Allowed values can be displayed using the function #' \code{\link{show_point_shapes}()}. #'@param size numeric value in [0-1] specifying point and line size. #'@param linetype line type. #'@param show.legend logical. Should this layer be included in the legends? NA, #' the default, includes if any aesthetics are mapped. \code{FALSE} never includes, #' and TRUE always includes. It can also be a named logical vector to finely #' select the aesthetics to display. #'@param alpha numeric value specifying fill color transparency. Value should be #' in [0, 1], where 0 is full transparency and 1 is no transparency. #'@param jitter a numeric value specifying the amount of jittering. Used only #' when \code{add} contains "jitter". #'@param binwidth numeric value specifying bin width. use value between 0 and 1 #' when you have a strong dense dotplot. For example binwidth = 0.2. Used only #' when \code{add} contains "dotplot". #'@param dotsize as \code{size} but applied only to dotplot. #'@param p_geom the geometry of the main plot. Ex: p_geom = "geom_line". If #' NULL, the geometry is extracted from p. Used only by \link{ggline}(). #' @examples #'# Basic violin plot #'data("ToothGrowth") #'p <- ggviolin(ToothGrowth, x = "dose", y = "len", add = "none") #' #'# Add mean +/- SD and jitter points #'p %>% ggadd(c("mean_sd", "jitter"), color = "dose") #' #'# Add box plot #'p %>% ggadd(c("boxplot", "jitter"), color = "dose") #' #'@export ggadd <- function(p, add = NULL, color = "black", fill = "white", group = 1, width = 1, shape = 19, size = NULL, alpha = 1, jitter = 0.2, binwidth = NULL, dotsize = size, linetype = 1, show.legend = NA, error.plot = "pointrange", ci = 0.95, data = NULL, position = position_dodge(0.8), p_geom = "" ) { . <- NULL if(missing(group)) group <- NULL # Checkpoints #::::::::::::::::::::::::::::::::::::::::::: if("none" %in% add) add <- "none" # Adding mean or median point center <- intersect(c("mean", "median"), add) if(length(center) == 2) stop("Use mean or mdedian, but not both at the same time.") # Adding error bars errors <- intersect(.errorbar_functions(), add) if(length(errors) > 1) stop("Choose only one of these: ", .collapse(errors, sep = ", ")) if(is.null(dotsize)) dotsize =1 # Data and mapping #::::::::::::::::::::::::::::::::::::::::::: if(is.null(data)) data <- p$data .map <- .mapping(p) x <- .map$x y <- .map$y if(missing(color) & !is.null(.map$colour)) color <- .map$colour if(missing(fill) & !is.null(.map$fill)) fill <- .map$fill ngrps <- intersect(names(data), c(.map$x, fill, color, group)) %>% length() # number of grouping variables # Amount of jittering when add = "jitter" #::::::::::::::::::::::::::::::::::::::::::: set.seed(123) .jitter <- jitter if(is.numeric(jitter)) jitter <- position_jitter(jitter) if(p_geom == "geom_line" & ngrps > 1){} else if(ngrps > 1) jitter <- position_jitterdodge(jitter.width = .jitter, dodge.width = 0.8) common.opts <- opts <- list(data = data, color = color, fill = fill, size = size, position = position, alpha = alpha, show.legend = show.legend) if ("boxplot" %in% add) { if(.geom(p) == "violin" & missing(width)) width = 0.2 else if(missing(width)) width = 0.7 p <- common.opts %>% .add_item(geomfunc = geom_boxplot, width = width) %>% .update_plot(p) } if ("violin" %in% add) { if(missing(width)) width = 1 p <- common.opts %>% .add_item(geomfunc = geom_violin, width = width, trim = FALSE) %>% .update_plot(p) } if ( "dotplot" %in% add ) { p <- common.opts %>% .add_item(geomfunc = geom_dotplot, binaxis = 'y', stackdir = 'center', dotsize = dotsize, stackratio = 1, binwidth = binwidth) %>% .update_plot(p) } if ( "jitter" %in% add ){ jitter.opts <- common.opts if(!(shape %in% 21:25)) jitter.opts$fill <- NULL p <- jitter.opts %>% .add_item(geomfunc = geom_jitter, position = jitter, shape = shape) %>% .update_plot(p) } if ( "point" %in% add ) { p <- common.opts %>% .remove_item("fill") %>% .add_item(geomfunc = geom_point, group = group) %>% .update_plot(p) } if ( "line" %in% add ) { p <- common.opts %>% .remove_item("fill") %>% .add_item(geomfunc = geom_line, group = 1) %>% .update_plot(p) } # Add mean or median #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if(!.is_empty(center)) p <- p %>% add_summary(fun = center, color = color, shape = shape, position = position, size = size, group = group) # Add erors #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if(!.is_empty(errors)){ if(missing(width)){ if(error.plot %in% c("errorbar", "lower_errorbar", "upper_errorbar")) width <- 0.1 else if(error.plot == "crossbar" & .geom(p) == "violin") width = 0.2 } p <- p %>% add_summary(errors, error.plot = error.plot, color = color, shape = shape, position = position, size = size, width = width, ci = ci, group = group, linetype = linetype, show.legend = show.legend) } p } ggpubr/R/show_line_types.R0000644000176200001440000000142213023301500015261 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Line types available in R #' @description Show line types available in R. #' @return a ggplot. #' #' @seealso \code{\link{ggpar}} and \code{\link{ggline}}. #' @examples #' show_line_types()+ #' theme_minimal() #' @export show_line_types <- function() { lt <- c("blank", "solid", "dashed", "dotted", "dotdash", "longdash", "twodash") d <- data.frame(lt = factor(lt, levels = lt)) ggplot() + scale_x_continuous(name="", limits=c(0,1), breaks=NULL) + scale_linetype_identity() + geom_segment(data=d, mapping=aes(x=0, xend=1, y=lt, yend=lt, linetype=lt))+ labs(title = "Line types available in R", y = "")+ theme(axis.text.y = element_text(face="bold", color="black")) } ggpubr/R/utils-pipe.R0000644000176200001440000000031713675443415014174 0ustar liggesusers#' Pipe operator #' #' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. #' #' @name %>% #' @rdname pipe #' @keywords internal #' @export #' @importFrom magrittr %>% #' @usage lhs \%>\% rhs NULL ggpubr/R/show_point_shapes.R0000644000176200001440000000137513173543727015642 0ustar liggesusers#' @include utilities.R NULL #' Point shapes available in R #' @description Show point shapes available in R. #' @return a ggplot. #' #' @seealso \code{\link{ggpar}} and \code{\link{ggline}}. #' @examples #' show_point_shapes()+ #' theme_minimal() #' @export show_point_shapes <- function() { d=data.frame(p=c(0:25)) p <- ggplot() + scale_y_continuous(name="") + scale_x_continuous(name="") + scale_shape_identity() + geom_point(data=d, mapping=aes(x=p%%6, y=p%/%6, shape=p), size=5, fill="blue") + geom_text(data=d, mapping=aes(x=p%%6, y=p%/%6+0.25, label=p), size=3)+ scale_y_reverse() + theme( axis.title = element_blank() ) ggpar(p, ticks = FALSE, tickslab = FALSE, main = "Point shapes available in R") } ggpubr/R/stat_pvalue_manual.R0000644000176200001440000003116113665775506015776 0ustar liggesusers#' @include utilities.R geom_bracket.R #' @importFrom dplyr pull #' @importFrom glue glue NULL #'Add Manually P-values to a ggplot #' #'@description Add manually p-values to a ggplot, such as box blots, dot plots #' and stripcharts. Frequently asked questions are available on \href{https://www.datanovia.com/en/blog/tag/ggpubr/}{Datanovia ggpubr FAQ page}, for example: #' \itemize{ #' \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-basic-ggplots/}{How to Add P-Values onto Basic GGPLOTS} #' \item \href{https://www.datanovia.com/en/blog/ggpubr-how-to-add-adjusted-p-values-to-a-multi-panel-ggplot/}{How to Add Adjusted P-values to a Multi-Panel GGPlot} #' \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-to-ggplot-facets/}{How to Add P-values to GGPLOT Facets} #' \item \href{https://www.datanovia.com/en/blog/ggpubr-how-to-add-p-values-generated-elsewhere-to-a-ggplot/}{How to Add P-Values Generated Elsewhere to a GGPLOT} #' \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-a-grouped-ggplot-using-the-ggpubr-r-package/}{How to Add P-Values onto a Grouped GGPLOT using the GGPUBR R Package} #' \item \href{https://www.datanovia.com/en/blog/how-to-create-stacked-bar-plots-with-error-bars-and-p-values/}{How to Create Stacked Bar Plots with Error Bars and P-values} #' \item \href{https://www.datanovia.com/en/blog/how-to-add-p-values-onto-horizontal-ggplots/}{How to Add P-Values onto Horizontal GGPLOTS} #' } #'@inheritParams geom_bracket #'@param data a data frame containing statitistical test results. The expected #' default format should contain the following columns: \code{group1 | group2 | #' p | y.position | etc}. \code{group1} and \code{group2} are the groups that #' have been compared. \code{p} is the resulting p-value. \code{y.position} is #' the y coordinates of the p-values in the plot. #'@param label the column containing the label (e.g.: label = "p" or label = #' "p.adj"), where \code{p} is the p-value. Can be also an expression that can #' be formatted by the \code{\link[glue]{glue}()} package. For example, when #' specifying label = "t-test, p = \{p\}", the expression \{p\} will be #' replaced by its value. #'@param y.position column containing the coordinates (in data units) to be used #' for absolute positioning of the label. Default value is "y.position". Can be #' also a numeric vector. #'@param xmin column containing the position of the left sides of the brackets. #' Default value is "group1". #'@param xmax (optional) column containing the position of the right sides of #' the brackets. Default value is "group2". If NULL, the p-values are plotted #' as a simple text. #'@param x x position of the p-value. Should be used only when you want plot the #' p-value as text (without brackets). #'@param size,label.size size of label text. #'@param bracket.size Width of the lines of the bracket. #'@param color text and line color. Can be variable name in the data for coloring by groups. #'@param linetype linetype. Can be variable name in the data for changing linetype by groups. #'@param tip.length numeric vector with the fraction of total height that the #' bar goes down to indicate the precise column. Default is 0.03. #'@param remove.bracket logical, if \code{TRUE}, brackets are removed from the #' plot. Considered only in the situation, where comparisons are performed #' against reference group or against "all". #'@param hide.ns logical value. If TRUE, hide ns symbol when displaying #' significance levels. Filter is done by checking the column #' \code{p.adj.signif}, \code{p.signif}, \code{p.adj} and \code{p}. #'@param vjust move the text up or down relative to the bracket. Can be also a #' column name available in the data. #'@param position position adjustment, either as a string, or the result of a #' call to a position adjustment function. #'@param ... other arguments passed to the function \code{geom_bracket()} or #' \code{geom_text()} #'@seealso \code{\link{stat_compare_means}} #'@examples #' #'# T-test #'stat.test <- compare_means( #' len ~ dose, data = ToothGrowth, #' method = "t.test" #') #'stat.test #' #'# Create a simple box plot #'p <- ggboxplot(ToothGrowth, x = "dose", y = "len") #'p #' #'# Perform a t-test between groups #'stat.test <- compare_means( #' len ~ dose, data = ToothGrowth, #' method = "t.test" #') #'stat.test #' #'# Add manually p-values from stat.test data #'# First specify the y.position of each comparison #'stat.test <- stat.test %>% #' mutate(y.position = c(29, 35, 39)) #'p + stat_pvalue_manual(stat.test, label = "p.adj") #' #'# Customize the label with glue expression #'# (https://github.com/tidyverse/glue) #'p + stat_pvalue_manual(stat.test, label = "p = {p.adj}") #' #' #' # Grouped bar plots #' #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #' ToothGrowth$dose <- as.factor(ToothGrowth$dose) #' # Comparisons against reference #' stat.test <- compare_means( #' len ~ dose, data = ToothGrowth, group.by = "supp", #' method = "t.test", ref.group = "0.5" #' ) #' stat.test #' # Plot #' bp <- ggbarplot(ToothGrowth, x = "supp", y = "len", #' fill = "dose", palette = "jco", #' add = "mean_sd", add.params = list(group = "dose"), #' position = position_dodge(0.8)) #' bp + stat_pvalue_manual( #' stat.test, x = "supp", y.position = 33, #' label = "p.signif", #' position = position_dodge(0.8) #' ) #' #'@export stat_pvalue_manual <- function( data, label = NULL, y.position = "y.position", xmin = "group1", xmax = "group2", x = NULL, size = 3.88, label.size = size, bracket.size = 0.3, bracket.nudge.y = 0, bracket.shorten = 0, color = "black", linetype = 1, tip.length = 0.03, remove.bracket = FALSE, step.increase = 0, step.group.by = NULL, hide.ns = FALSE, vjust = 0, coord.flip = FALSE, position = "identity", ... ) { if(is.null(label)){ label <- guess_signif_label_column(data) } if(hide.ns){ data <- remove_ns(data) } data <- asserttat_group_columns_exists(data) comparison <- detect_comparison_type(data) all.x.is.missing <- is.null(x) & missing(xmin) & missing(xmax) if(all(data$group1 == "all") & all.x.is.missing){ is.grouped <- length(data$group2) > length(unique(data$group2)) if(!is.grouped) x <- "group2" # labels will be plotted at x = "group2" } # Detect automatically if xmin and xmax exists in the data. if(all.x.is.missing){ if(all(c("xmin", "xmax") %in% colnames(data))){ xmin <- "xmin" xmax <- "xmax" } } # should stay before (!is.null(x)) if(remove.bracket){ group1.length <- unique(data$group1) %>% length() if(group1.length == 1) { xmin <- xmax xmax <- NULL } } # P-value displayed as text (without brackets) if(!is.null(x)){ xmin <- x xmax <- NULL } # If label is a glue package expression if(.contains_curlybracket(label)){ data <- data %>% mutate(label = glue(label)) label <- "label" } available.variables <- colnames(data) if(!(label %in% available.variables)) stop("can't find the label variable '", label, "' in the data") if(!(xmin %in% available.variables)) stop("can't find the xmin variable '", xmin, "' in the data") y.position <- .valide_y_position(y.position, data) if(is.numeric(y.position)){ data$y.position <- y.position y.position <- "y.position" } # If xmax is null, pvalue is drawn as text if(!is.null(xmax)) { xmax <- data %>% pull(!!xmax) pvalue.geom <- "bracket" } else { xmax <- NA pvalue.geom <- "text" } if(!is.null(xmin)){ xmin <- data %>% pull(!!xmin) } else{ xmin <- NA } # Build the statistical table for plotting xxmax <-xmax # so that mutate will avoid re-using an existing xmax in the data xxmin <- xmin data <- data %>% dplyr::mutate( label = as.character(data %>% pull(!!label)), y.position = data %>% pull(!!y.position), xmin = xxmin, xmax = xxmax ) # vjust if(is.character(vjust)){ vjust <- data %>% pull(!!vjust) } else if(missing(vjust)){ vjust <- guess_labels_default_vjust(data$label) } data <- data %>% mutate(vjust = !!vjust) if(pvalue.geom == "bracket"){ if(identical(data$xmin, data$xmax) | remove.bracket){ # case when ref.group = "all" bracket.size = 0 } geom_exec( geom_bracket, data = data, xmin = "xmin", xmax = "xmax", label = "label", y.position = "y.position", vjust = "vjust", group = 1:nrow(data), tip.length = tip.length, label.size = label.size, size = bracket.size, bracket.nudge.y = bracket.nudge.y, bracket.shorten = bracket.shorten, color = color, linetype = linetype, step.increase = step.increase, step.group.by = step.group.by, coord.flip = coord.flip, position = position, ... ) } else{ if(comparison == "each_vs_ref"){ ref.group <- unique(data$group1) group2 <- NULL data <- add_ctr_rows(data, ref.group = ref.group) mapping <- aes(x = xmin, y = y.position, vjust = vjust, label = label, group = group2) if(missing(position) & !missing(x)){ if (is_grouping_variable(x)) position <- position_dodge(0.8) } } else{ mapping <- aes(x = xmin, y = y.position, vjust = vjust, label = label) } option <- list(data = data, size = label.size, position = position, ...) if(color %in% colnames(data)) mapping$colour <- rlang::ensym(color) else option$color <- color option[["mapping"]] <- mapping do.call(geom_text, option) } } asserttat_group_columns_exists <- function(data){ groups.exist <- all(c("group1", "group2") %in% colnames(data)) if(!groups.exist){ if(inherits(data, "rstatix_test") & "group" %in% colnames(data)){ data$group1 <- "all" data$group2 <- data$group } else{ stop("data should contain group1 and group2 columns") } } invisible(data) } # get validate p-value y-position .valide_y_position <- function(y.position, data){ if(is.numeric(y.position)){ number.of.test <- nrow(data) number.of.ycoord <- length(y.position) xtimes <- number.of.test/number.of.ycoord if(number.of.ycoord < number.of.test) y.position <- rep(y.position, xtimes) } else if(is.character(y.position)){ if(!(y.position %in% colnames(data))) stop("can't find the y.position variable '", y.position, "' in the data") } return(y.position) } # Check if a string contains curly bracket .contains_curlybracket <- function(x){ grepl("\\{|\\}", x, perl = TRUE) } # For ctr rows: the comparaison of ctr against itself # useful only when positionning the label of grouped bars add_ctr_rows <- function(data, ref.group){ xmin <- NULL data <- keep_only_tbl_df_classes(data) ctr <- data %>% dplyr::distinct(xmin, .keep_all = TRUE) %>% mutate(group2 = ref.group) %>% mutate(label = " ") dplyr::bind_rows(ctr, data) } # Returns the type of comparisons: one_group, two_groups, each_vs_ref, pairwise detect_comparison_type <- function(data){ ngroup1 <- unique(data$group1) %>% length() ngroup2 <- unique(data$group2) %>% length() if(is_null_model(data)){ type = "one_group" } else if(ngroup1 == 1 & ngroup2 >= 2){ type = "each_vs_ref" } else if(ngroup1 == 1 & ngroup2 == 1){ type = "two_groups" } else if (ngroup1 >= 2 & ngroup2 >= 2){ type = "pairwise" } else if(all(c("group1", "group2") %in% colnames(data))){ # filtered data type = "pairwise" } else{ stop("Make sure that group1 and group2 columns exist in the data.") } type } is_null_model <- function(data){ group2 <- unique(data$group2) .diff <- setdiff(group2, "null model") length(.diff) == 0 } is_grouping_variable <- function(x){ !(x %in% c("group1", "group2")) } # Check if label column contains stars contains_signif_stars <- function(data, label.col){ result <- FALSE if(label.col[1] %in% colnames(data)){ labels <- data %>% pull(!!label.col) stars <- c("****", "***", "**", "*") result <- any(labels %in% stars) } result } # guess label default vjust guess_label_default_vjust <- function(label){ if(label %in% c("****", "***", "**", "*")) vjust <- 0.5 else vjust <- 0 vjust } guess_labels_default_vjust <- function(labels){ labels %>% purrr::map(guess_label_default_vjust) %>% unlist() } # remove non significant remove_ns <- function(data){ filter <- dplyr::filter columns <- colnames(data) if("p.adj.signif" %in% columns){ data <- data %>% filter(.data$p.adj.signif != "ns") } else if("p.adj" %in% columns){ data <- data %>% filter(.data$p.adj <= 0.05) } else if("p.signif" %in% columns){ data <- data %>% filter(.data$p.signif != "ns") } else if("p" %in% columns){ data <- data %>% filter(.data$p <= 0.05) } data } ggpubr/R/rotate.R0000644000176200001440000000076013115311102013351 0ustar liggesusers#'Rotate a ggplot Horizontally #' #'@description Rotate a ggplot to create horizontal plots. Wrapper around #' \code{\link[ggplot2]{coord_flip}}. #'@param ... other arguments to pass to \code{\link[ggplot2]{coord_flip}}. #' #'@examples #'# Load data #'data("ToothGrowth") #'df <- ToothGrowth #' #'# Basic plot #'p <- ggboxplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #'p #'# Create horizontal plots #'p + rotate() #'@export rotate <- function(...){ coord_flip(...) } ggpubr/R/ggpar.R0000644000176200001440000002110413145035761013167 0ustar liggesusers#' @include utilities.R NULL #' Graphical parameters #' #' @param p an object of class ggplot or a list of ggplots #' #' @param palette the color palette to be used for coloring or filling by #' groups. Allowed values include "grey" for grey color palettes; brewer #' palettes e.g. "RdBu", "Blues", ...; or custom color palette e.g. c("blue", #' "red"); and scientific journal palettes from ggsci R package, e.g.: "npg", #' "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and #' "rickandmorty". Can be also a numeric vector of length(groups); in this #' case a basic color palette is created using the function #' \link[grDevices]{palette}. #' @param gradient.cols vector of colors to use for n-colour gradient. Allowed #' values include brewer and ggsci color palettes. #' @param main,title plot main title. #' @param submain,subtitle plot subtitle. #' @param caption plot caption. #' @param xlab character vector specifying x axis labels. Use xlab = FALSE to #' hide xlab. #' @param ylab character vector specifying y axis labels. Use ylab = FALSE to #' hide ylab. #' @param font.main,font.submain,font.caption,font.x,font.y a vector of length 3 #' indicating respectively the size (e.g.: 14), the style (e.g.: "plain", #' "bold", "italic", "bold.italic") and the color (e.g.: "red") of main title, #' subtitle, caption, xlab and ylab, respectively. For example \emph{font.x = #' c(14, "bold", "red")}. Use font.x = 14, to change only font size; or use #' font.x = "bold", to change only font face. #' @param font.title,font.subtitle alias of font.submain and font.submain, #' respectively. #' @param font.family character vector specifying font family. #' @param xlim,ylim a numeric vector of length 2, specifying x and y axis #' limits (minimum and maximum), respectively. e.g.: ylim = c(0, 50). #' @param xscale,yscale x and y axis scale, respectively. Allowed values are one #' of c("none", "log2", "log10", "sqrt"); e.g.: yscale="log2". #' @param format.scale logical value. If TRUE, axis tick mark labels will be #' formatted when xscale or yscale = "log2" or "log10". #' @param legend character specifying legend position. Allowed values are one of #' c("top", "bottom", "left", "right", "none"). To remove the legend use #' legend = "none". Legend position can be also specified using a numeric #' vector c(x, y); see details section. #' @param legend.title legend title, e.g.: \code{legend.title = "Species"}. Can #' be also a list, \code{legend.title = list(color = "Species", linetype = "Species", #' shape = "Species")}. #' @param font.legend legend text font style; e.g.: font.legend = c(10, "plain", #' "black"). #' @param ticks logical value. Default is TRUE. If FALSE, hide axis tick marks. #' @param tickslab logical value. Default is TRUE. If FALSE, hide axis tick #' labels. #' @param font.tickslab,font.xtickslab,font.ytickslab Font style (size, face, #' color) for tick labels, e.g.: c(14, "bold", "red"). #' @param x.text.angle,y.text.angle Numeric value specifying the rotation angle #' of x and y axis tick labels, respectively. Default value is NULL. For #' vertical x axis texts use x.text.angle = 90. #' @param xtickslab.rt,ytickslab.rt Same as x.text.angle and y.text.angle, #' respectively. Will be deprecated in the near future. #' @param xticks.by,yticks.by numeric value controlling x and y axis breaks, #' respectively. For example, if yticks.by = 5, a tick mark is shown on every #' 5. Default value is NULL. #' @param rotate logical value. If TRUE, rotate the graph by setting the plot #' orientation to horizontal. #' @param orientation change the orientation of the plot. Allowed values are one #' of c( "vertical", "horizontal", "reverse"). Partial match is allowed. #' @param ggtheme function, ggplot2 theme name. Default value is theme_pubr(). #' Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), #' theme_minimal(), theme_classic(), theme_void(), .... #' @param ... not used #' @examples #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' #' # Basic box plot #' # +++++++++++++++++++++++++++ #' #' p <- ggboxplot(df, x = "dose", y = "len") #' #' # Change the plot orientation: horizontal #' ggpar(p, orientation = "horiz") #' #' #' # Change main title and axis labels #' # ++++++++++++++++++++++++++++ #' #' ggpar(p, #' main = "Plot of length \n by dose", #' xlab = "Dose (mg)", ylab = "Length") #' #' # Title font styles: 'plain', 'italic', 'bold', 'bold.italic' #' ggpar(p, #' main = "Length by dose", #' font.main = c(14,"bold.italic", "red"), #' font.x = c(14, "bold", "#2E9FDF"), #' font.y = c(14, "bold", "#E7B800")) #' #' # Hide axis labels #' ggpar(p, xlab = FALSE, ylab = FALSE) #' #' #' # Change colors #' # ++++++++++++++++++++++ #' #' # Change outline colors by groups: dose #' p2 <- ggboxplot(df, "dose", "len", color = "dose") #' p2 #' #' # Use custom color palette #' ggpar(p2, palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' # Use brewer palette #' ggpar(p2, palette = "Dark2" ) #' #' # Use grey palette #' ggpar(p2, palette = "grey") #' #' # Use scientific journal palette from ggsci package #' ggpar(p2, palette = "npg") # nature #' #' # Axis ticks, limits, scales #' # +++++++++++++++++++++++++ #' #' # Axis ticks labels and rotation #' ggpar(p, #' font.tickslab = c(14,"bold", "#993333"), #' xtickslab.rt = 45, ytickslab.rt = 45) #' # Hide axis ticks and tick labels #' ggpar(p, ticks = FALSE, tickslab = FALSE) #' #' # Axis limits #' ggpar(p, ylim = c(0, 50)) #' #' # Axis scale #' ggpar(p, yscale = "log2") #' #' # Format axis scale #' ggpar(p, yscale = "log2", format.scale = TRUE) #' #' # Legends #' # ++++++++++++++++++ #' # Change legend position and title #' ggpar(p2, #' legend = "right", legend.title = "Dose (mg)", #' font.legend = c(10, "bold", "red")) #' #' @export ggpar <- function(p, palette = NULL, gradient.cols = NULL, main = NULL, submain = NULL, caption = NULL, xlab = NULL, ylab = NULL, title = NULL, subtitle = NULL, font.main = NULL, font.submain = NULL, font.x = NULL, font.y = NULL, font.caption = NULL, font.title = NULL, font.subtitle = NULL, font.family = "", xlim = NULL, ylim = NULL, xscale = c("none", "log2", "log10", "sqrt"), yscale = c("none", "log2", "log10", "sqrt"), format.scale = FALSE, legend = NULL, legend.title = NULL, font.legend = NULL, ticks = TRUE, tickslab = TRUE, font.tickslab = NULL, font.xtickslab = font.tickslab, font.ytickslab = font.tickslab, x.text.angle = NULL, y.text.angle = NULL, xtickslab.rt = x.text.angle, ytickslab.rt = y.text.angle, xticks.by = NULL, yticks.by = NULL, rotate = FALSE, orientation = c("vertical", "horizontal", "reverse"), ggtheme = NULL, ...) { original.p <- p if(rotate) orientation <- "horizontal" if(is.ggplot(original.p)) list.plots <- list(original.p) else if(is.list(original.p)) list.plots <- original.p else stop("Can't handle an object of class ", class (original.p)) if(!is.null(title)) main <- title if(!is.null(subtitle)) submain <- subtitle if(!is.null(font.title)) font.main <- font.title if(!is.null(font.subtitle)) font.submain <- font.subtitle if(is.numeric(palette)) palette <- grDevices::palette()[palette] for(i in 1:length(list.plots)){ p <- list.plots[[i]] if(is.ggplot(p)){ p <- p + .ggcolor(palette)+ .ggfill(palette) if(!is.null(ggtheme)) p <- p + ggtheme # labs_pubr() + if(!is.null(gradient.cols)) p <- p + .gradient_col(gradient.cols) p <- p +.set_ticks(ticks, tickslab, font.tickslab, xtickslab.rt, ytickslab.rt, font.xtickslab = font.xtickslab, font.ytickslab = font.ytickslab) p <- .set_ticksby(p, xticks.by, yticks.by) p <- p + .set_axis_limits(xlim, ylim) p <-.set_legend(p, legend, legend.title, font.legend) p <- .set_scale(p, xscale = xscale, yscale = yscale, format.scale = format.scale) p <- .labs(p, main, xlab, ylab, font.main, font.x, font.y, submain = submain, caption = caption, font.submain = font.submain, font.caption = font.caption) p <- .set_orientation(p, orientation) if(font.family != "") p <- p + theme(text = element_text(family = font.family)) list.plots[[i]] <- p } } if(is.ggplot(original.p)) list.plots[[1]] else list.plots } ggpubr/R/ggpaired.R0000644000176200001440000001215613666557511013672 0ustar liggesusers#'@include utilities.R ggpar.R NULL #'Plot Paired Data #'@description Plot paired data. #'@inheritParams ggboxplot #'@param cond1 variable name corresponding to the first condition. #'@param cond2 variable name corresponding to the second condition. #'@param x,y x and y variables, where x is a grouping variable and y contains #' values for each group. Considered only when \code{cond1} and \code{cond2} #' are missing. #'@param id variable name corresponding to paired samples' id. Used to connect #' paired points with lines. #'@param color points and box plot colors. To color by conditions, use color = #' "condition". #'@param fill box plot fill color. To change fill color by conditions, use fill #' = "condition". #'@param line.color line color. #'@param linetype line type. #'@param point.size,line.size point and line size, respectively. #'@param width box plot width. #'@param ... other arguments to be passed to be passed to \link{ggpar}(). #' @examples #' #'# Example 1 #'#:::::::::::::::::::::::::::::::::::::::::: #' before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7) #' after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2) #' #' d <- data.frame(before = before, after = after) #' ggpaired(d, cond1 = "before", cond2 = "after", #' fill = "condition", palette = "jco") #' #'# Example 2 #'#:::::::::::::::::::::::::::::::::::::::::: #'ggpaired(ToothGrowth, x = "supp", y = "len", #' color = "supp", line.color = "gray", line.size = 0.4, #' palette = "npg") #' #'@export ggpaired <- function(data, cond1, cond2, x = NULL, y = NULL, id = NULL, color = "black", fill = "white", palette = NULL, width = 0.5, point.size = 1.2, line.size = 0.5, line.color = "black", linetype = "solid", title = NULL, xlab = "Condition", ylab = "Value", facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(), ...){ grouping.vars <- c(x, color, fill) %>% unique() %>% intersect(colnames(data)) if(!missing(cond1) & !missing(cond2)){ data <- data %>% tidyr::gather_(key_col = "condition", value_col = "val", gather_cols = c(cond1, cond2)) data$condition<- factor(data$condition, levels = c(cond1, cond2)) x <- "condition" y <- "val" } else if(!is.null(x) & !is.null(y)){ if(missing(xlab)) xlab <- x if(missing(ylab)) ylab <- y } # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( id = id, color = color, fill = fill, palette = palette, width = width, point.size = point.size, line.size = line.size, line.color = line.color, linetype = linetype, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, ggtheme = ggtheme, ...) # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$data <- data .opts$x <- x .opts$y <- y .opts$fun <- ggpaired_core if(missing(ggtheme) & (!is.null(facet.by))) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggpaired_core <- function(data, x = NULL, y = NULL, id = NULL, color = "black", fill = "white", palette = NULL, width = 0.5, point.size = 1.2, line.size = 0.5, line.color = "black", linetype = "solid", title = NULL, xlab = "Condition", ylab = "Value", ggtheme = theme_pubr(), ...) { if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) grouping.vars <- c(x, color, fill) %>% unique() %>% intersect(colnames(data)) # Add paired sample ids if(!is.null(id)) id <- .select_vec(data, id) else id <- rep(1:(nrow(data)/2), 2) data$id <- id position <- "identity" # if(length(grouping.vars) > 1) # position <- position_dodge(0.8) condition <- val <- id <- NULL p <- ggplot(data, create_aes(list(x = x, y = y))) + geom_exec(geom_boxplot, data = data, color = color, fill = fill, width = width, position = position)+ geom_exec(geom_line, data = data, group = "id", color = line.color, size = line.size, linetype = linetype, position = position) + geom_exec(geom_point, data = data, color = color, size = point.size, position = position) p <- ggpar(p, palette = palette, ggtheme = ggtheme, xlab = xlab, ylab = ylab, title = title, ...) p } ggpubr/R/ggballoonplot.R0000644000176200001440000002157613666551070014753 0ustar liggesusers#' Ballon plot #' #' @description Plot a graphical matrix where each cell contains a dot whose #' size reflects the relative magnitude of the corresponding component. Useful #' to visualize contingency table formed by two categorical variables. #' #' @inheritParams ggpar #' @param data a data frame. Can be: \itemize{ \item \bold{a standard #' contingency table} formed by two categorical variables: a data frame with #' row names and column names. The categories of the first variable are #' columns and the categories of the second variable are rows. \item \bold{a #' streched contingency table}: a data frame containing at least three columns #' corresponding, respectively, to (1) the categories of the first variable, #' (2) the categories of the second varible, (3) the frequency value. In this #' case, you should specify the argument x and y in the function #' \code{ggballoonplot()}}. #' @param x,y the column names specifying, respectively, the first and the #' second variable forming the contingency table. Required only when the data #' is a stretched contingency table. #' @param color point border line color. #' @param fill point fill color. Default is "lightgray". Considered only for #' points 21 to 25. #' @param shape points shape. The default value is 21. Alternaive values include #' 22, 23, 24, 25. #' @param size point size. By default, the points size reflects the relative #' magnitude of the value of the corresponding cell (\code{size = "value"}). #' Can be also numeric (\code{size = 4}). #' @param size.range a numeric vector of length 2 that specifies the minimum and #' maximum size of the plotting symbol. Default values are \code{size.range = #' c(1, 10)}. #' @param facet.by character vector, of length 1 or 2, specifying grouping variables for #' faceting the plot into multiple panels. Should be in the data. #' @param show.label logical. If TRUE, show the data cell values as point #' labels. #' @param font.label a vector of length 3 indicating respectively the size #' (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and #' the color (e.g.: "red") of point labels. For example font.label = c(14, #' "bold", "red"). To specify only the size and the style, use font.label = #' c(14, "plain"). #' @param rotate.x.text logica. If TRUE (default), rotate the x axis text. #' @param ... other arguments passed to the function \code{\link{ggpar}} #' #' @examples #' # Define color palette #' my_cols <- c("#0D0887FF", "#6A00A8FF", "#B12A90FF", #' "#E16462FF", "#FCA636FF", "#F0F921FF") #' #' # Standard contingency table #' #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #' # Read a contingency table: housetasks #' # Repartition of 13 housetasks in the couple #' data <- read.delim( #' system.file("demo-data/housetasks.txt", package = "ggpubr"), #' row.names = 1 #' ) #' data #' #' # Basic ballon plot #' ggballoonplot(data) #' #' # Change color and fill #' ggballoonplot(data, color = "#0073C2FF", fill = "#0073C2FF") #' #' #' # Change color according to the value of table cells #' ggballoonplot(data, fill = "value")+ #' scale_fill_gradientn(colors = my_cols) #' #' # Change the plotting symbol shape #' ggballoonplot(data, fill = "value", shape = 23)+ #' gradient_fill(c("blue", "white", "red")) #' #' #' # Set points size to 8, but change fill color by values #' # Sow labels #' ggballoonplot(data, fill = "value", color = "lightgray", #' size = 10, show.label = TRUE)+ #' gradient_fill(c("blue", "white", "red")) #' #' # Streched contingency table #' #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #' #' # Create an Example Data Frame Containing Car x Color data #' carnames <- c("bmw","renault","mercedes","seat") #' carcolors <- c("red","white","silver","green") #' datavals <- round(rnorm(16, mean=100, sd=60),1) #' car_data <- data.frame(Car = rep(carnames,4), #' Color = rep(carcolors, c(4,4,4,4) ), #' Value=datavals ) #' #' car_data #' #' ggballoonplot(car_data, x = "Car", y = "Color", #' size = "Value", fill = "Value") + #' scale_fill_gradientn(colors = my_cols) + #' guides(size = FALSE) #' #' #' # Grouped frequency table #' #::::::::::::::::::::::::::::::::::::::::::::::::::::::::: #'data("Titanic") #'dframe <- as.data.frame(Titanic) #'head(dframe) #'ggballoonplot( #' dframe, x = "Class", y = "Sex", #' size = "Freq", fill = "Freq", #' facet.by = c("Survived", "Age"), #' ggtheme = theme_bw() #')+ #' scale_fill_gradientn(colors = my_cols) #' #'# Hair and Eye Color of Statistics Students #'data(HairEyeColor) #'ggballoonplot( as.data.frame(HairEyeColor), #' x = "Hair", y = "Eye", size = "Freq", #' ggtheme = theme_gray()) %>% #' facet("Sex") #' #' #' @export ggballoonplot <- function( data, x = NULL, y = NULL, size = "value", facet.by = NULL, size.range = c(1, 10), shape = 21, color = "black", fill = "gray", show.label = FALSE, font.label = list(size = 12, color = "black"), rotate.x.text = TRUE, ggtheme = theme_minimal(), ... ) { if(inherits(data, "matrix")) data <- as.data.frame(data) # Check the data #:::::::::::::::::::::::::::::::::::::::::::::::::::::: # case 1: x and y specified. we assume that the data is streched # if size not specified, then take the third column as size values # detect fill variable if misspecified if(!is.null(x) & !is.null(y)){ if(missing(size)) size <- colnames(data)[3] if(fill == "value" & !("value" %in% colnames(data))) fill <- colnames(data)[3] label <- colnames(data)[3] } # case 2: x and y are not specified # - check if the data is streched: # If yes, then consider the first 3 columns as x, y and size values # If no, then strech the data and continu else if(is.null(x) | is.null(y)){ if(.is_streched(data)){ .cnames <- colnames(data) x <- .cnames[1] y <- .cnames[2] if(missing(size)) size <- .cnames[3] if(fill == "value" & !("value" %in% .cnames)) fill <- .cnames[3] label <- .cnames[3] # Reverse y levels so that it appears in the right order on the plot y.val <- dplyr::pull(data, 2) data[, 2] <- y.val %>% factor(levels = rev(.levels(y.val))) } else { data <- .df_strech(data) # Strech the data into 3 columns: .row|.col|.value x <- ".col" y <- ".row" if(missing(size)) size <- "value" label <- "value" } } p <- ggplot(data, create_aes(list(x = x, y = y))) + geom_exec( geom_point, data = data, size = size, fill = fill, shape = shape, color = color ) p <- p + scale_size(range = size.range)+ guides( size = guide_legend(reverse=TRUE))+ ggtheme + theme( axis.title.x = ggplot2::element_blank(), axis.title.y = ggplot2::element_blank() ) if (show.label){ font.label <- .check_lab_font(font.label) text.args <- font.label %>% .add_item( geomfunc = geom_text, data = data, x = x, y = y, label = label ) p <- p + do.call(geom_exec, text.args) } if(rotate.x.text) p <- p + rotate_x_text(45, hjust = 1, vjust = 1) if(!is.null(facet.by)) p <- facet(p, facet.by) ggpar(p, ...) } # Font label .check_lab_font <- function(font.label){ font.label <- .parse_font(font.label) font.label$size <- ifelse(is.null(font.label$size), 4, font.label$size/3) font.label$color <- ifelse(is.null(font.label$color), "black", font.label$color) font.label$face <- ifelse(is.null(font.label$face), "plain", font.label$face) font.label } # strech a data frame with row names # returns a data frame with 3 columns .row, .col, value .df_strech <- function(data){ .col.names <- colnames(data) .row.names <- rownames(data) data <- data %>% dplyr::mutate(.row = .row.names) %>% dplyr::select(.row, dplyr::everything()) # Sretch the data into three columns .col <- .row <- NULL data <- data %>% tidyr::gather( key= ".col", value = "value", -.row ) %>% dplyr::mutate( .col = factor(.col, levels = .col.names), .row = factor(.row, levels = rev(.row.names)) ) data } # Check if the contingency table is in the streched format .is_streched <- function(data, x = NULL, y = NULL){ streched <- TRUE if(is.null(x) | is.null(y)){ if(.is_numeric_data(data)) streched <- FALSE else{ x <- dplyr::pull(data, 1) y <- dplyr::pull(data, 2) z <- dplyr::pull(data, 3) streched <- ( (is.character(x) | is.factor(x)) & (is.character(y) | is.factor(y)) & is.numeric(z) ) } } streched } # Check if a data matrix is numeric .is_numeric_data <- function(x){ all(apply(x, 2, is.numeric)) } # For tible data. The first column should be row names .is_correct_tbl <- function(x){ ok <- FALSE if(inherits(x,"tbl_df" )) ok <- TRUE if(ok){ .rows <- dplyr::pull(x, 1) ok <- is.character(.rows) & .is_numeric_data(x[,-1]) } ok } ggpubr/R/theme_pubr.R0000644000176200001440000001343313640723012014220 0ustar liggesusers#' @include utilities.R #' @import ggplot2 NULL #'Publication ready theme #' #'@description \itemize{ \item \strong{theme_pubr()}: Create a publication ready #' theme \item \strong{theme_pubclean()}: a clean theme without axis lines, to #' direct more attention to the data. \item \strong{labs_pubr()}: Format only #' plot labels to a publication ready style \item \strong{theme_classic2()}: #' Create a classic theme with axis lines. \item \strong{clean_theme()}: Remove #' axis lines, ticks, texts and titles. \item \strong{clean_table_theme()}: #' Clean the the theme of a table, such as those created by #' \code{\link{ggsummarytable}()}}. #'@param base_size base font size #'@param base_family base font family #'@param border logical value. Default is FALSE. If TRUE, add panel border. #'@param margin logical value. Default is TRUE. If FALSE, reduce plot margin. #'@param legend character specifying legend position. Allowed values are one of #' c("top", "bottom", "left", "right", "none"). Default is "top" side position. #' to remove the legend use legend = "none". Legend position can be also #' specified using a numeric vector c(x, y). In this case it is possible to #' position the legend inside the plotting area. x and y are the coordinates of #' the legend box. Their values should be between 0 and 1. c(0,0) corresponds #' to the "bottom left" and c(1,1) corresponds to the "top right" position. For #' instance use legend = c(0.8, 0.2). #'@param x.text.angle Rotation angle of x axis tick labels. Default value is 0. #' Use 90 for vertical text. #'@param flip logical. If TRUE, grid lines are added to y axis instead of x #' axis. #' @examples #' p <- ggplot(mtcars, aes(x = wt, y = mpg)) + #' geom_point(aes(color = gear)) #' #' # Default plot #' p #' #' # Use theme_pubr() #' p + theme_pubr() #' #' # Format labels #' p + labs_pubr() #' #'@name theme_pubr #'@rdname theme_pubr #'@export theme_pubr <- function (base_size = 12, base_family = "", border = FALSE, margin = TRUE, legend = c("top", "bottom", "left", "right", "none"), x.text.angle = 0) { half_line <- base_size/2 if(!is.numeric(legend)) legend <- match.arg(legend) if(x.text.angle > 5) xhjust <- 1 else xhjust <- NULL if(border){ panel.border <- element_rect(fill = NA, colour = "black", size = 0.7) axis.line <- element_blank() } else{ panel.border <- element_blank() axis.line = element_line(colour = "black", size = 0.5) } if(margin) plot.margin <- margin(half_line, half_line, half_line, half_line) else plot.margin <- unit(c(0.5,0.3,0.3,0.3),"mm") .theme <- theme_bw(base_size = base_size, base_family = base_family) %+replace% theme(panel.border = panel.border, panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = axis.line, axis.text = element_text(color = "black"), legend.key = element_blank(), strip.background = element_rect(fill = "#F2F2F2", colour = "black", size = 0.7), plot.margin = plot.margin, legend.position = legend, complete = TRUE) if(x.text.angle!=0) .theme <- .theme + theme(axis.text.x = element_text(angle = x.text.angle, hjust = xhjust)) .theme } #' @rdname theme_pubr #' @export theme_pubclean <- function (base_size = 12, base_family = "", flip = FALSE) { res <- theme_grey(base_size = base_size, base_family = base_family) + theme( panel.background = element_rect(fill = "white"), legend.background = element_rect(fill = "white"), legend.position = "top" ) if(flip){ res <- res + theme( panel.grid.major.x = element_line(linetype = "dotted", color = "grey"), axis.line.y = element_line(color = "black") ) } else{ res <- res + theme( panel.grid.major.y = element_line(linetype = "dotted", color = "grey") ) } res } #' @rdname theme_pubr #' @export labs_pubr <- function(base_size = 14, base_family = ""){ theme( text = element_text(family = base_family, face = "plain", colour = "black", size = base_size, lineheight = 0.9, hjust = 0.5, vjust = 0.5, angle = 0, margin = margin(), debug = FALSE), # Tick labels axis.text.x = element_text(size = rel(0.86), colour = "black", face = "bold"), axis.text.y = element_text(size = rel(0.86), colour = "black", face = "bold"), # Axis labels axis.title = element_text(size = rel(1), colour = "black", face = "bold"), # Main title plot.title = element_text(size = rel(1), colour = "black" , lineheight=1.0, face = "bold"), legend.title = element_text(size = rel(0.7), face = "bold", colour = "black"), legend.text = element_text(size = rel(0.7), face = "plain", colour = "black") ) } #' @rdname theme_pubr #' @export theme_classic2 <- function (base_size = 12, base_family = "") { theme_classic(base_size = base_size, base_family = base_family) %+replace% theme( axis.line.x = element_line(), axis.line.y = element_line() ) } #' @export #' @rdname theme_pubr clean_theme <- function() { theme( axis.line.x = element_blank(), axis.line.y = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank() ) } #' @export #' @rdname theme_pubr clean_table_theme <- function () { theme(axis.line.x = element_blank(), axis.line.y = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.ticks.y = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank()) } ggpubr/R/ggboxplot.R0000644000176200001440000002445113675443034014110 0ustar liggesusers#' @include utilities.R ggpar.R NULL #'Box plot #'@description Create a box plot with points. Box plots display a group of #' numerical data through their quartiles. #'@param data a data frame #'@param x character string containing the name of x variable. #'@param y character vector containing one or more variables to plot #'@param combine logical value. Default is FALSE. Used only when y is a vector #' containing multiple variables to plot. If TRUE, create a multi-panel plot by #' combining the plot of y variables. #'@param merge logical or character value. Default is FALSE. Used only when y is #' a vector containing multiple variables to plot. If TRUE, merge multiple y #' variables in the same plotting area. Allowed values include also "asis" #' (TRUE) and "flip". If merge = "flip", then y variables are used as x tick #' labels and the x variable is used as grouping variable. #'@param color outline color. #'@param fill fill color. #'@param palette the color palette to be used for coloring or filling by groups. #' Allowed values include "grey" for grey color palettes; brewer palettes e.g. #' "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and #' scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", #' "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". #'@param bxp.errorbar logical value. If TRUE, shows error bars of box plots. #'@param bxp.errorbar.width numeric value specifying the width of box plot error #' bars. Default is 0.4. #'@param linetype line types. #'@param size Numeric value (e.g.: size = 1). change the size of points and #' outlines. #'@param width numeric value between 0 and 1 specifying box width. #'@inheritParams ggplot2::geom_boxplot #'@param outlier.shape point shape of outlier. Default is 19. To hide outlier, #' specify \code{outlier.shape = NA}. When jitter is added, then outliers will #' be automatically hidden. #'@inheritParams facet #'@inheritParams ggpar #'@inheritParams ggtext #'@param select character vector specifying which items to display. #'@param remove character vector specifying which items to remove from the plot. #'@param order character vector specifying the order of items. #'@param add character vector for adding another plot element (e.g.: dot plot or #' error bars). Allowed values are one or the combination of: "none", #' "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", #' "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", #' "median_q1q3", "median_mad", "median_range"; see ?desc_statby for more #' details. #'@param add.params parameters (color, shape, size, fill, linetype) for the #' argument 'add'; e.g.: add.params = list(color = "red"). #'@param error.plot plot type used to visualize error. Allowed values are one of #' c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", #' "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", #' "lower_linerange"). Default value is "pointrange" or "errorbar". Used only #' when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, #' se, .... #'@param font.label a list which can contain the combination of the following #' elements: the size (e.g.: 14), the style (e.g.: "plain", "bold", "italic", #' "bold.italic") and the color (e.g.: "red") of labels. For example font.label #' = list(size = 14, face = "bold", color ="red"). To specify only the size and #' the style, use font.label = list(size = 14, face = "plain"). #'@param ggtheme function, ggplot2 theme name. Default value is theme_pubr(). #' Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), #' theme_minimal(), theme_classic(), theme_void(), .... #'@param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_boxplot}}, \code{\link{ggpar}} and #' \code{\link{facet}}. #'@details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, #' ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette #' = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels #' and position: legend = "right" \item plot orientation : orientation = #' c("vertical", "horizontal", "reverse") } #' #'@section Suggestions for the argument "add": Suggested values are one of #' c("dotplot", "jitter"). #' #'@seealso \code{\link{ggpar}}, \code{\link{ggviolin}}, \code{\link{ggdotplot}} #' and \code{\link{ggstripchart}}. #' @examples #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' #' # Basic plot #' # +++++++++++++++++++++++++++ #' # width: change box plots width #' ggboxplot(df, x = "dose", y = "len", width = 0.8) #' #' # Change orientation: horizontal #' ggboxplot(df, "dose", "len", orientation = "horizontal") #' #' # Notched box plot #' ggboxplot(df, x = "dose", y = "len", #' notch = TRUE) #' #' # Add dots #' # ++++++++++++++++++++++++++ #' ggboxplot(df, x = "dose", y = "len", #' add = "dotplot") #' #' # Add jitter points and change the shape by groups #' ggboxplot(df, x = "dose", y = "len", #' add = "jitter", shape = "dose") #' #' #' # Select and order items #' # ++++++++++++++++++++++++++++++ #' #' # Select which items to display: "0.5" and "2" #' ggboxplot(df, "dose", "len", #' select = c("0.5", "2")) #' #' # Change the default order of items #' ggboxplot(df, "dose", "len", #' order = c("2", "1", "0.5")) #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' # Change outline and fill colors #' ggboxplot(df, "dose", "len", #' color = "black", fill = "gray") #' #' # Change outline colors by groups: dose #' # Use custom color palette #' # Add jitter points and change the shape by groups #' ggboxplot(df, "dose", "len", #' color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"), #' add = "jitter", shape = "dose") #' #' # Change fill color by groups: dose #' ggboxplot(df, "dose", "len", #' fill = "dose", palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' #' # Box plot with multiple groups #' # +++++++++++++++++++++ #' # fill or color box plot by a second group : "supp" #' ggboxplot(df, "dose", "len", color = "supp", #' palette = c("#00AFBB", "#E7B800")) #' #'@export ggboxplot <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, title = NULL, xlab = NULL, ylab = NULL, bxp.errorbar = FALSE, bxp.errorbar.width = 0.4, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, linetype = "solid", size = NULL, width = 0.7, notch = FALSE, outlier.shape = 19, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, ggtheme = theme_pubr(),...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, title = title, xlab = xlab, ylab = ylab, bxp.errorbar = bxp.errorbar, bxp.errorbar.width = bxp.errorbar.width, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, linetype = linetype, size = size, width = width, notch = notch, outlier.shape = outlier.shape, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggboxplot_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggboxplot_core <- function(data, x, y, color = "black", fill = "white", palette = NULL, linetype = "solid", size = NULL, width = 0.7, notch = FALSE, outlier.shape = 19, title = NULL, xlab = NULL, ylab = NULL, bxp.errorbar = FALSE, bxp.errorbar.width = 0.4, add = "none", add.params = list(), error.plot = "pointrange", ggtheme = theme_pubr(), ...) { if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) if("jitter" %in% add) outlier.shape <- NA p <- ggplot(data, create_aes(list(x = x, y = y))) if(bxp.errorbar){ if(fill %in% colnames(data)){ # Important, so that the fill grouping is taken into account in the errorbar p <- p + geom_exec( geomfunc = stat_boxplot, data = data, geom = "errorbar", width = bxp.errorbar.width, color = color, fill = fill, linetype = linetype, position = position_dodge(0.8) ) } else{ p <- p + geom_exec( geomfunc = stat_boxplot, data = data, geom = "errorbar", width = bxp.errorbar.width, color = color, linetype = linetype, position = position_dodge(0.8) ) } } p <- p + geom_exec(geom_boxplot, data = data, color = color, fill = fill, linetype = linetype, size = size, width = width, notch = notch, outlier.shape = outlier.shape, position = position_dodge(0.8), size = size,...) # Add add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) %>% .add_item(p = p, add = add, error.plot = error.plot) p <- do.call(ggadd, add.params) %>% ggpar(palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab, ...) p } ggpubr/R/rremove.R0000644000176200001440000000530513124436553013554 0ustar liggesusers#'Remove a ggplot Component #' #' @description Remove a specific component from a ggplot. #' #'@param object character string specifying the plot components. Allowed values #' include: \itemize{ #' \item \code{"grid"} for both x and y grids #' \item \code{"x.grid"} for x axis grids #' \item \code{"y.grid"} for y axis grids #' \item \code{"axis"} for both x and y axes #' \item \code{"x.axis"} for x axis #' \item \code{"y.axis"} for y axis #' #' \item \code{"xlab", or "x.title"} #' for x axis label #' \item \code{"ylab", or "y.title"} for y axis label #' \item \code{"xylab", "xy.title" or "axis.title"} for both x and y axis #' labels #' \item \code{"x.text"} for x axis texts (x axis tick labels) #' \item \code{"y.text"} for y axis texts (y axis tick labels) #' \item \code{"xy.text"} or \code{"axis.text"} for both x and y axis texts #' #' \item \code{"ticks"} for both x and y ticks #' \item \code{"x.ticks"} for x ticks #' \item \code{"y.ticks"} for y ticks #' #' \item \code{"legend.title"} for the legend title #' \item \code{"legend"} for the legend #' } #' #'@examples #'# Load data #'data("ToothGrowth") #' #'# Basic plot #'p <- ggboxplot(ToothGrowth, x = "dose", y = "len", #' ggtheme = theme_gray()) #'p #' #'# Remove all grids #' p + rremove("grid") #' #' # Remove only x grids #' p + rremove("x.grid") #'@export rremove <- function(object){ blank <- element_blank() switch(object, grid = theme(panel.grid.minor = blank, panel.grid.major = blank), x.grid = theme(panel.grid.minor.x = blank, panel.grid.major.x = blank), y.grid = theme(panel.grid.minor.y = blank, panel.grid.major.y = blank), axis = theme(axis.line = blank), x.axis = theme(axis.line.x = blank), y.axis = theme(axis.line.y = blank), xlab = theme(axis.title.x = blank), x.title = theme(axis.title.x = blank), ylab = theme(axis.title.y = blank), y.title = theme(axis.title.y = blank), xy.title = theme(axis.title.x = blank, axis.title.y = blank), xylab = theme(axis.title.x = blank, axis.title.y = blank), axis.title = theme(axis.title.x = blank, axis.title.y = blank), x.ticks = theme(axis.ticks.x = blank), y.ticks = theme(axis.ticks.y = blank), ticks = theme(axis.ticks.x = blank, axis.ticks.y = blank), x.text = theme(axis.text.x = blank), y.text = theme(axis.text.y = blank), xy.text = theme(axis.text.x = blank, axis.text.y = blank), axis.text = theme(axis.text.x = blank, axis.text.y = blank), legend.title = theme(legend.title = blank), legend = theme(legend.position = "none"), stop("Don't support ", object) ) } ggpubr/R/ggarrange.R0000644000176200001440000001653013640723011014023 0ustar liggesusers#' @include utilities.R NULL #' Arrange Multiple ggplots #' #' @description Arrange multiple ggplots on the same page. Wrapper around #' \code{\link[cowplot]{plot_grid}()}. Can arrange multiple ggplots over #' multiple pages, compared to the standard #' \code{\link[cowplot]{plot_grid}()}. Can also create a common unique legend #' for multiple plots. #' @inheritParams cowplot::plot_grid #' @param ... list of plots to be arranged into the grid. The plots can be #' either ggplot2 plot objects or arbitrary gtables. #' @param plotlist (optional) list of plots to display. #' @param ncol (optional) number of columns in the plot grid. #' @param nrow (optional) number of rows in the plot grid. #' @param labels (optional) list of labels to be added to the plots. You can #' also set labels="AUTO" to auto-generate upper-case labels or labels="auto" #' to auto-generate lower-case labels. #' @param font.label a list of arguments for customizing labels. Allowed values #' are the combination of the following elements: size (e.g.: 14), face (e.g.: #' "plain", "bold", "italic", "bold.italic"), color (e.g.: "red") and family. #' For example font.label = list(size = 14, face = "bold", color ="red"). #' @param label.x (optional) Single value or vector of x positions for plot #' labels, relative to each subplot. Defaults to 0 for all labels. (Each label #' is placed all the way to the left of each plot.) #' @param label.y (optional) Single value or vector of y positions for plot #' labels, relative to each subplot. Defaults to 1 for all labels. (Each label #' is placed all the way to the top of each plot.) #' @param widths (optional) numerical vector of relative columns widths. For #' example, in a two-column grid, widths = c(2, 1) would make the first column #' twice as wide as the second column. #' @param heights same as \code{widths} but for column heights. #' @param legend character specifying legend position. Allowed values are one of #' c("top", "bottom", "left", "right", "none"). To remove the legend use #' legend = "none". #' @param common.legend logical value. Default is FALSE. If TRUE, a common #' unique legend will be created for arranged plots. #' @param legend.grob a legend grob as returned by the function #' \code{\link{get_legend}()}. If provided, it will be used as the common #' legend. #' @return return an object of class \code{ggarrange}, which is a ggplot or a #' list of ggplot. #' @author Alboukadel Kassambara \email{alboukadel.kassambara@@gmail.com} #' @seealso \code{\link{annotate_figure}()} #' @examples #' data("ToothGrowth") #' df <- ToothGrowth #' df$dose <- as.factor(df$dose) #' #' # Create some plots #' # :::::::::::::::::::::::::::::::::::::::::::::::::: #' # Box plot #' bxp <- ggboxplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Dot plot #' dp <- ggdotplot(df, x = "dose", y = "len", #' color = "dose", palette = "jco") #' # Density plot #' dens <- ggdensity(df, x = "len", fill = "dose", palette = "jco") #' #' # Arrange #' # :::::::::::::::::::::::::::::::::::::::::::::::::: #' ggarrange(bxp, dp, dens, ncol = 2, nrow = 2) #' # Use a common legend for multiple plots #' ggarrange(bxp, dp, common.legend = TRUE) #' #' #' @export ggarrange <- function(..., plotlist = NULL, ncol = NULL, nrow = NULL, labels = NULL, label.x = 0, label.y = 1, hjust = -0.5, vjust = 1.5, font.label = list(size = 14, color = "black", face = "bold", family = NULL), align = c("none", "h", "v", "hv"), widths = 1, heights = 1, legend = NULL, common.legend = FALSE, legend.grob = NULL ) { plots <- c(list(...), plotlist) align <- match.arg(align) nb.plots <- length(plots) page.layout <- .get_layout(ncol, nrow, nb.plots) ncol <- page.layout$ncol nrow <- page.layout$nrow nb.plots.per.page <- .nbplots_per_page(ncol, nrow) if(!is.null(legend.grob)) common.legend <- TRUE if(is.null(legend) & common.legend) legend <- "top" legend <- .check_legend(legend) if(!is.null(legend)) plots <- purrr::map( plots, function(x) {if(!is.null(x)) x + theme(legend.position = legend) else x} ) if(common.legend){ if(is.null(legend.grob)) legend.grob <- get_legend(plots) plots <- purrr::map( plots, function(x) {if(!is.null(x)) x + theme(legend.position = "none") else x} ) } # Split plots over multiple pages if(nb.plots > nb.plots.per.page){ plots <- split(plots, ceiling(seq_along(plots)/nb.plots.per.page)) } # One unique page else plots <- list(plots) # label arguments .lab <- .update_label_pms(font.label, label.x = label.x, label.y = label.y, hjust = hjust, vjust = vjust) res <- purrr::map(plots, .plot_grid, ncol = ncol, nrow = nrow, labels = labels, label_size = .lab$size, label_fontfamily = .lab$family, label_fontface = .lab$face, label_colour = .lab$color, label_x = .lab$label.x, label_y = .lab$label.y, hjust = .lab$hjust, vjust = .lab$vjust, align = align, rel_widths = widths, rel_heights = heights, legend = legend, common.legend.grob = legend.grob ) if(length(res) == 1) res <- res[[1]] class(res) <- c(class(res), "ggarrange") res } .get_layout <- function(ncol, nrow, nb.plots){ if(!is.null(ncol) & !is.null(nrow)){} else if(!is.null(ncol)){ if(ncol == 1) nrow = nb.plots } else if(!is.null(nrow)){ if(nrow == 1) ncol = nb.plots } list(ncol = ncol, nrow = nrow) } # Compute number of plots per page .nbplots_per_page <- function(ncol = NULL, nrow = NULL){ if(!is.null(ncol) & !is.null(nrow)) ncol * nrow else if(!is.null(ncol)) ncol else if(!is.null(nrow)) nrow else Inf } .plot_grid <- function(plotlist, legend = "top", common.legend.grob = NULL, ... ){ res <- cowplot::plot_grid(plotlist = plotlist, ...) if(is.null(common.legend.grob)) return(res) else { leg <- common.legend.grob lheight <- sum(leg$height) lwidth <- sum(leg$width) } arrangeGrob <- gridExtra::arrangeGrob unit.c <- grid::unit.c .unit <- grid::unit(1, "npc") res <- switch(legend, top = arrangeGrob(leg, res, ncol = 1, heights = unit.c(lheight, .unit - lheight)), bottom = arrangeGrob(res, leg, ncol = 1, heights = unit.c(unit(1, "npc") - lheight, lheight)), left = arrangeGrob(leg, res, ncol = 2, widths = unit.c(lwidth, .unit - lwidth)), right = arrangeGrob(res, leg, ncol = 2, widths = unit.c(.unit - lwidth, lwidth)) ) p <- cowplot::ggdraw() + cowplot::draw_grob(grid::grobTree(res)) p } # update label parameters for cowplot::plot_grid() .update_label_pms <- function(font.label, label.x = 0, label.y = 1, hjust = -0.5, vjust = 1.5) { .font <- list(size = 14, color = "black", face = "bold", family = NULL) new.font.names <- names(font.label) for(i in new.font.names) .font[[i]] <- font.label[[i]] pms <- .font list( size = pms$size, family = pms$family, face = pms$face, color = pms$color, label.x = label.x, label.y = label.y, hjust = hjust, vjust = vjust ) } ggpubr/R/stat_regline_equation.R0000644000176200001440000001674013675460233016472 0ustar liggesusers#' @include utilities.R utilities_label.R #' @importFrom dplyr everything #' @importFrom dplyr select NULL #'Add Regression Line Equation and R-Square to a GGPLOT. #'@description Add regression line equation and R^2 to a ggplot. Regression #' model is fitted using the function \code{\link[stats]{lm}}. #'@inheritParams ggplot2::layer #'@param formula a formula object #'@param label.x.npc,label.y.npc can be \code{numeric} or \code{character} #' vector of the same length as the number of groups and/or panels. If too #' short they will be recycled. \itemize{ \item If \code{numeric}, value should #' be between 0 and 1. Coordinates to be used for positioning the label, #' expressed in "normalized parent coordinates". \item If \code{character}, #' allowed values include: i) one of c('right', 'left', 'center', 'centre', #' 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', #' 'middle') for y-axis.} #' #' If too short they will be recycled. #'@param label.x,label.y \code{numeric} Coordinates (in data units) to be used #' for absolute positioning of the label. If too short they will be recycled. #'@param output.type character One of "expression", "latex" or "text". #'@param ... other arguments to pass to \code{\link[ggplot2]{geom_text}} or #' \code{\link[ggplot2:geom_text]{geom_label}}. #'@param na.rm If FALSE (the default), removes missing values with a warning. If #' TRUE silently removes missing values. #'@seealso \code{\link{ggscatter}} #'@references the source code of the function \code{stat_regline_equation()} is #' inspired from the code of the function \code{stat_poly_eq()} (in ggpmisc #' package). #' #' @section Computed variables: #' \describe{ \item{x}{x position for left edge} #' \item{y}{y position near upper edge} #' \item{eq.label}{equation for the #' fitted polynomial as a character string to be parsed} #' \item{rr.label}{\eqn{R^2} of the fitted model as a character string to be parsed} #' \item{adj.rr.label}{Adjusted \eqn{R^2} of the fitted model as a character string #' to be parsed} #' \item{AIC.label}{AIC for the fitted model.} #' \item{BIC.label}{BIC for the fitted model.} #' \item{hjust}{Set to zero to override the default of the "text" geom.}} #' @examples #' #' # Simple scatter plot with correlation coefficient and #' # regression line #' #:::::::::::::::::::::::::::::::::::::::::::::::::::: #' ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line") + #' stat_cor(label.x = 3, label.y = 34) + #' stat_regline_equation(label.x = 3, label.y = 32) #' #' #' # Groupped scatter plot #' #:::::::::::::::::::::::::::::::::::::::::::::::::::: #' ggscatter( #' iris, x = "Sepal.Length", y = "Sepal.Width", #' color = "Species", palette = "jco", #' add = "reg.line" #' ) + #' facet_wrap(~Species) + #' stat_cor(label.y = 4.4) + #' stat_regline_equation(label.y = 4.2) #' #' # Polynomial equation #' #:::::::::::::::::::::::::::::::::::::::::::::::::::: #' #' # Demo data #' set.seed(4321) #' x <- 1:100 #' y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4) #' my.data <- data.frame(x, y, group = c("A", "B"), #' y2 = y * c(0.5,2), block = c("a", "a", "b", "b")) #' #' # Fit polynomial regression line and add labels #' formula <- y ~ poly(x, 3, raw = TRUE) #' p <- ggplot(my.data, aes(x, y2, color = group)) + #' geom_point() + #' stat_smooth(aes(fill = group, color = group), method = "lm", formula = formula) + #' stat_regline_equation( #' aes(label = paste(..eq.label.., ..adj.rr.label.., sep = "~~~~")), #' formula = formula #' ) + #' theme_bw() #' ggpar(p, palette = "jco") #' #'@export stat_regline_equation <- function( mapping = NULL, data = NULL, formula = y~x, label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, output.type = "expression", geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ... ) { parse <- ifelse(output.type == "expression", TRUE, FALSE) layer( stat = StatReglineEquation, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(formula = formula, label.x.npc = label.x.npc , label.y.npc = label.y.npc, label.x = label.x, label.y = label.y, output.type = output.type, parse = parse, na.rm = na.rm, ...) ) } StatReglineEquation<- ggproto("StatReglineEquation", Stat, required_aes = c("x", "y"), default_aes = aes(label = ..eq.label.., hjust = ..hjust.., vjust = ..vjust..), compute_group = function(data, scales, formula, label.x.npc, label.y.npc, label.x, label.y, output.type) { force(data) if (length(unique(data$x)) < 2) { return(data.frame()) # Not enough data to perform test } .test <- .stat_lm(formula, data, output.type = output.type) # Returns a data frame with label: x, y, hjust, vjust .label.pms <- .label_params(data = data, scales = scales, label.x.npc = label.x.npc, label.y.npc = label.y.npc, label.x = label.x, label.y = label.y ) %>% mutate(hjust = 0) cbind(.test, .label.pms) } ) # Compute regression line equation .stat_lm <- function(formula, data, output.type = "expression"){ res.lm <- stats::lm(formula, data) coefs <- stats::coef(res.lm) formula.rhs.chr <- as.character(formula)[3] if (grepl("-1", formula.rhs.chr) || grepl("- 1", formula.rhs.chr)) { coefs <- c(0, coefs) } rr <- summary(res.lm)$r.squared %>% signif(2) adj.rr <- summary(res.lm)$adj.r.squared %>% signif(2) AIC <- stats::AIC(res.lm) %>% signif(2) BIC <- stats::BIC(res.lm) %>% signif(2) # Build model equation eq.char <- as.character(signif(polynom::as.polynomial(coefs), 2)) eq.char <- gsub("e([+-]?[0-9]*)", "%*%10^\\1", eq.char) if (output.type %in% c("latex", "tex", "tikz")) { eq.char <- gsub("*", " ", eq.char, fixed = TRUE) } # Add y if (output.type == "expression") { lhs <- "italic(y)~`=`~" } else if (output.type %in% c("latex", "tex", "tikz", "text")) { lhs <- "y = " } eq.char <- paste(lhs, eq.char, sep = "") # Build data frame with the output if (output.type == "expression") { eq.x.rhs = "~italic(x)" } else { eq.x.rhs = " x" } if (output.type == "expression") { z <- data.frame(eq.label = gsub("x", eq.x.rhs, eq.char, fixed = TRUE), rr.label = paste("italic(R)^2", rr, sep = "~`=`~"), adj.rr.label = paste("italic(R)[adj]^2", adj.rr, sep = "~`=`~"), AIC.label = paste("AIC", AIC, sep = "~`=`~"), BIC.label = paste("BIC", BIC, sep = "~`=`~")) } else if (output.type %in% c("latex", "tex", "text")) { z <- data.frame(eq.label = gsub("x", eq.x.rhs, eq.char, fixed = TRUE), rr.label = paste("R^2", rr, sep = " = "), adj.rr.label = paste("R_{adj}^2",adj.rr, sep = " = "), AIC.label = paste("AIC", AIC, sep = " = "), BIC.label = paste("BIC", BIC, sep = " = ")) } z <- z %>% mutate(rr = rr, adj.rr = adj.rr, AIC = AIC, BIC = BIC) %>% dplyr::select(rr, adj.rr, AIC, BIC, everything()) z } ggpubr/R/ggpubr_args.R0000644000176200001440000000635613105034142014371 0ustar liggesusers#' ggpubr General Arguments Description #' #'@param data a data frame #'@param x character string containing the name of x variable. #'@param y character vector containing one or more variables to plot #'@param combine logical value. Default is FALSE. Used only when y is a vector #' containing multiple variables to plot. If TRUE, create a multi-panel plot by #' combining the plot of y variables. #'@param merge logical or character value. Default is FALSE. Used only when y is #' a vector containing multiple variables to plot. If TRUE, merge multiple y #' variables in the same plotting area. Allowed values include also "asis" #' (TRUE) and "flip". If merge = "flip", then y variables are used as x tick #' labels and the x variable is used as grouping variable. #'@param color outline color. #'@param fill fill color. #'@param palette the color palette to be used for coloring or filling by groups. #' Allowed values include "grey" for grey color palettes; brewer palettes e.g. #' "RdBu", "Blues", ...; or custom color palette e.g. c("blue", "red"); and #' scientific journal palettes from ggsci R package, e.g.: "npg", "aaas", #' "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty". #'@param linetype line types. #'@param size Numeric value (e.g.: size = 1). change the size of points and #' outlines. #'@param select character vector specifying which items to display. #'@param remove character vector specifying which items to remove from the plot. #'@param order character vector specifying the order of items. #'@param add character vector for adding another plot element (e.g.: dot plot or #' error bars). Allowed values are one or the combination of: "none", #' "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", #' "mean_ci", "mean_range", "median", "median_iqr", "median_mad", #' "median_range"; see ?desc_statby for more details. #'@param add.params parameters (color, shape, size, fill, linetype) for the #' argument 'add'; e.g.: add.params = list(color = "red"). #'@param error.plot plot type used to visualize error. Allowed values are one of #' c("pointrange", "linerange", "crossbar", "errorbar", "upper_errorbar", #' "lower_errorbar", "upper_pointrange", "lower_pointrange", "upper_linerange", #' "lower_linerange"). Default value is "pointrange" or "errorbar". Used only #' when add != "none" and add contains one "mean_*" or "med_*" where "*" = sd, #' se, .... #'@param font.label a list which can contain the combination of the following elements: the size #' (e.g.: 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and #' the color (e.g.: "red") of labels. For example font.label = list(size = 14, #' face = "bold", color ="red"). To specify only the size and the style, use font.label = #' list(size = 14, face = "plain"). #' @param title plot main title. #' @param xlab character vector specifying x axis labels. Use xlab #' = FALSE to hide xlab. #' @param ylab character vector specifying y axis labels. Use ylab = FALSE to #' hide ylab. #'@param ggtheme function, ggplot2 theme name. Default value is theme_pubr(). #' Allowed values include ggplot2 official themes: theme_gray(), theme_bw(), #' theme_minimal(), theme_classic(), theme_void(), .... #' @name ggpubr_args #' @rdname ggpubr_args NULL ggpubr/R/ggline.R0000644000176200001440000002623213670253430013341 0ustar liggesusers#' @include utilities.R ggpar.R NULL #' Line plot #' @description Create a line plot. #' @inheritParams ggboxplot #' @inheritParams ggplot2::geom_line #' @param x,y x and y variables for drawing. #' @param group grouping variable to connect points by line. #' Allowed values are 1 (for one line, one group) or a character vector specifying #' the name of the grouping variable (case of multiple lines). #' @param numeric.x.axis logical. If TRUE, x axis will be treated as numeric. Default is FALSE. #' @param color line colors. #' @param linetype line type. #' @param plot_type plot type. Allowed values are one of "b" for both line and point; #' "l" for line only; and "p" for point only. Default is "b". #' @param shape point shapes. #' @param stroke point stroke. Used only for shapes 21-24 to control the thickness of points border. #' @param show.line.label logical value. If TRUE, shows line labels. #' @param point.size point size. #' @param point.color point color. #' @param ... other arguments to be passed to geom_dotplot. #' #' #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" \item plot orientation : orientation #' = c("vertical", "horizontal", "reverse") } #' @seealso \code{\link{ggpar}}, \code{\link{ggbarplot}} #' @examples #' # Data #' df <- data.frame(dose=c("D0.5", "D1", "D2"), #' len=c(4.2, 10, 29.5)) #' print(df) #' #' # Basic plot #' # +++++++++++++++++++++++++++ #' ggline(df, x = "dose", y = "len") #' #' #' # Plot with multiple groups #' # +++++++++++++++++++++ #' #' # Create some data #' df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), #' dose=rep(c("D0.5", "D1", "D2"),2), #' len=c(6.8, 15, 33, 4.2, 10, 29.5)) #' print(df2) #' #' # Plot "len" by "dose" and #' # Change line types and point shapes by a second groups: "supp" #' ggline(df2, "dose", "len", #' linetype = "supp", shape = "supp") #' #' #' # Change colors #' # +++++++++++++++++++++ #' #' # Change color by group: "supp" #' # Use custom color palette #' ggline(df2, "dose", "len", #' linetype = "supp", shape = "supp", #' color = "supp", palette = c("#00AFBB", "#E7B800")) #' #' #' # Add points and errors #' # ++++++++++++++++++++++++++ #' #' # Data: ToothGrowth data set we'll be used. #' df3 <- ToothGrowth #' head(df3, 10) #' #' # It can be seen that for each group we have #' # different values #' ggline(df3, x = "dose", y = "len") #' #' # Visualize the mean of each group #' ggline(df3, x = "dose", y = "len", #' add = "mean") #' #' # Add error bars: mean_se #' # (other values include: mean_sd, mean_ci, median_iqr, ....) #' # Add labels #' ggline(df3, x = "dose", y = "len", add = "mean_se") #' #' # Change error.plot to "pointrange" #' ggline(df3, x = "dose", y = "len", #' add = "mean_se", error.plot = "pointrange") #' #' # Add jitter points and errors (mean_se) #' ggline(df3, x = "dose", y = "len", #' add = c("mean_se", "jitter")) #' #' # Add dot and errors (mean_se) #' ggline(df3, x = "dose", y = "len", #' add = c("mean_se", "dotplot"), color = "steelblue") #' #' # Add violin and errors (mean_se) #' ggline(df3, x = "dose", y = "len", #' add = c("mean_se", "violin"), color = "steelblue") #' #' # Multiple groups with error bars #' # ++++++++++++++++++++++ #' #' ggline(df3, x = "dose", y = "len", color = "supp", #' add = "mean_se", palette = c("#00AFBB", "#E7B800")) #' #' # Add jitter #' ggline(df3, x = "dose", y = "len", color = "supp", #' add = c("mean_se", "jitter"), palette = c("#00AFBB", "#E7B800")) #' #' # Add dot plot #' ggline(df3, x = "dose", y = "len", color = "supp", #' add = c("mean_se", "dotplot"), palette = c("#00AFBB", "#E7B800")) # #' #' #' @export ggline<- function(data, x, y, group = 1, numeric.x.axis = FALSE, combine = FALSE, merge = FALSE, color = "black", palette = NULL, linetype = "solid", plot_type = c("b", "l", "p"), size = 0.5, shape = 19, stroke = NULL, point.size = size, point.color = color, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, select = NULL, remove = NULL, order = NULL, add = "none", add.params = list(), error.plot = "errorbar", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, show.line.label = FALSE, position = "identity", ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( group = group, numeric.x.axis = numeric.x.axis, combine = combine, merge = merge, color = color, palette = palette, linetype = linetype, plot_type = plot_type, size = size, shape = shape, stroke = stroke, point.size = point.size, point.color = point.color, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, show.line.label = show.line.label, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggline_core .opts$fun_name <- "ggline" if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggline_core <- function(data, x, y, group = 1, numeric.x.axis = FALSE, color = "black", fill = "white", palette = NULL, linetype = "solid", plot_type = c("b", "l", "p"), size = 0.5, shape = 19, stroke = NULL, point.size = size, point.color = color, title = NULL, xlab = NULL, ylab = NULL, select = NULL, order = NULL, facet.by = NULL, add = "none", add.params = list(), error.plot = "errorbar", show.line.label = FALSE, font.label = list(size = 11, color = "black"), repel = FALSE, label.rectangle = FALSE, position = "identity", ggtheme = theme_pubr(), ...) { xx <- .select_vec(data, x) if(inherits(xx, c("character", "numeric")) & !numeric.x.axis) data[, x] <- .select_vec(data, x) %>% as.factor() error.plot = error.plot[1] plot_type <- match.arg(plot_type) if("none" %in% add) add <- "none" grouping.vars <- intersect(c(x, color, linetype, group, facet.by), names(data)) . <- NULL # static summaries for computing mean/median and adding errors if(is.null(add.params$fill)) add.params$fill <- "white" add.params <- .check_add.params(add, add.params, error.plot, data, color, fill = "white", ...) if(any(.summary_functions() %in% add)) { data_sum <- desc_statby(data, measure.var = y, grps = grouping.vars) summary.funcs <- intersect(.summary_functions(), add) if(length(summary.funcs) > 1) stop("Only one summary function is allowed. ", "Choose one of ", .collapse(.summary_functions(), sep = ", ")) .center <- summary.funcs %>% strsplit("_", fixed = TRUE) %>% unlist() %>% .[1] add <- setdiff(add, .center) names(data_sum)[which(names(data_sum) == .center)] <- y # data_sum[, x] <- as.factor(data_sum[, x]) if(inherits(xx, c("character", "numeric")) & !numeric.x.axis) data_sum[, x] <- .select_vec(data_sum, x) %>% as.factor() } else data_sum <- data .cols <- unique(c(color, linetype, group)) if(any(.cols %in% names(data))){ .in <- which(.cols %in% names(data)) group <- .cols[.in] if(is.null(add.params$group)) add.params$group <- group[1] } p <- ggplot(data, create_aes(list(x = x, y = y))) # Add other geom or summary #::::::::::::::::::::::::::::::::::::::: add.params <- add.params %>% .add_item(error.plot = error.plot, position = position, p_geom = "geom_line") # First add geom if any p <- add.params %>% .add_item(p = p, add = setdiff(add, .summary_functions())) %>% do.call(ggadd, .) # Then add summary statistics p <- add.params %>% .add_item(p = p, size = size, add = intersect(add, .summary_functions())) %>% do.call(ggadd, .) # add.params <- add.params %>% # .add_item(p = p, add = add, error.plot = error.plot, # position = "identity", p_geom = "geom_line") # p <- do.call(ggadd, add.params) # Main plot if(plot_type %in% c("b", "l")){ line_args <- geom_exec(NULL, data = data_sum, stat = "identity", color = color, linetype = linetype, position = position, size = size) mapping <- line_args$mapping mapping[["group"]] <- group option <- line_args$option option[["mapping"]] <- create_aes(mapping) p <- p + do.call(geom_line, option) } if(plot_type %in% c("p", "b")){ p <- p + geom_exec(geom_point, data = data_sum, color = point.color, shape = shape, size = 1.2+point.size, stroke = stroke, position = position) # Adjust shape when ngroups > 6, to avoid ggplot warnings p <-.scale_point_shape(p, data_sum, shape) } # Color palette user.add.color <- list(...)$user.add.color if(is.null(user.add.color)) user.add.color <- "" if(.is_color(user.add.color) & !is.numeric(group)){ ngroup <- nlevels(.select_vec(data_sum, group)) palette <- rep(user.add.color, ngroup) } if(show.line.label & !is.numeric(group)){ xval <- .select_vec(data_sum, x) last.xval <- .levels(xval) %>% utils::tail(1) groupval <- .select_vec(data_sum, group) label.data <- subset(data_sum, xval == last.xval) font.label <- .parse_font(font.label) p <- font.label %>% .add_item(data = label.data, x = x, y = y, label = group, repel = repel, label.rectangle = label.rectangle, ggtheme = ggtheme, ggp = p) %>% do.call(ggtext, .) } p <- ggpar(p, palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/R/stat_compare_means.R0000644000176200001440000003312613675460167015754 0ustar liggesusers#' @include utilities.R utilities_label.R NULL #'Add Mean Comparison P-values to a ggplot #'@description Add mean comparison p-values to a ggplot, such as box blots, dot #' plots and stripcharts. #'@inheritParams ggplot2::layer #'@inheritParams compare_means #'@param method a character string indicating which method to be used for #' comparing means. #'@param method.args a list of additional arguments used for the test method. #' For example one might use \code{method.args = list(alternative = "greater")} #' for wilcoxon test. #'@param comparisons A list of length-2 vectors. The entries in the vector are #' either the names of 2 values on the x-axis or the 2 integers that correspond #' to the index of the groups of interest, to be compared. #'@param hide.ns logical value. If TRUE, hide ns symbol when displaying #' significance levels. #'@param label character string specifying label type. Allowed values include #' "p.signif" (shows the significance levels), "p.format" (shows the formatted #' p value). #'@param label.sep a character string to separate the terms. Default is ", ", to #' separate the correlation coefficient and the p.value. #'@param label.x.npc,label.y.npc can be \code{numeric} or \code{character} #' vector of the same length as the number of groups and/or panels. If too #' short they will be recycled. \itemize{ \item If \code{numeric}, value should #' be between 0 and 1. Coordinates to be used for positioning the label, #' expressed in "normalized parent coordinates". \item If \code{character}, #' allowed values include: i) one of c('right', 'left', 'center', 'centre', #' 'middle') for x-axis; ii) and one of c( 'bottom', 'top', 'center', 'centre', #' 'middle') for y-axis.} #'@param vjust move the text up or down relative to the bracket. #'@param tip.length numeric vector with the fraction of total height that the #' bar goes down to indicate the precise column. Default is 0.03. Can be of #' same length as the number of comparisons to adjust specifically the tip #' lenth of each comparison. For example tip.length = c(0.01, 0.03). #' #' If too short they will be recycled. #'@param label.x,label.y \code{numeric} Coordinates (in data units) to be used #' for absolute positioning of the label. If too short they will be recycled. #'@param bracket.size Width of the lines of the bracket. #'@param step.increase numeric vector with the increase in fraction of total #' height for every additional comparison to minimize overlap. #'@param ... other arguments to pass to \code{\link[ggplot2]{geom_text}} or #' \code{\link[ggplot2:geom_text]{geom_label}}. #'@param na.rm If FALSE (the default), removes missing values with a warning. If #' TRUE silently removes missing values. #'@seealso \code{\link{compare_means}} #' @examples #' # Load data #' data("ToothGrowth") #' head(ToothGrowth) #' #' # Two independent groups #' #::::::::::::::::::::::::::::::::::::::::::::::::: #' p <- ggboxplot(ToothGrowth, x = "supp", y = "len", #' color = "supp", palette = "npg", add = "jitter") #' #' # Add p-value #' p + stat_compare_means() #' # Change method #' p + stat_compare_means(method = "t.test") #' #' # Paired samples #' #::::::::::::::::::::::::::::::::::::::::::::::::: #' ggpaired(ToothGrowth, x = "supp", y = "len", #' color = "supp", line.color = "gray", line.size = 0.4, #' palette = "npg")+ #' stat_compare_means(paired = TRUE) #' #' # More than two groups #' #::::::::::::::::::::::::::::::::::::::::::::::::: #' # Pairwise comparisons: Specify the comparisons you want #' my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ) #' ggboxplot(ToothGrowth, x = "dose", y = "len", #' color = "dose", palette = "npg")+ #' # Add pairwise comparisons p-value #' stat_compare_means(comparisons = my_comparisons, label.y = c(29, 35, 40))+ #' stat_compare_means(label.y = 45) # Add global Anova p-value #' #' # Multiple pairwise test against a reference group #' ggboxplot(ToothGrowth, x = "dose", y = "len", #' color = "dose", palette = "npg")+ #' stat_compare_means(method = "anova", label.y = 40)+ # Add global p-value #' stat_compare_means(aes(label = ..p.signif..), #' method = "t.test", ref.group = "0.5") #' #' # Multiple grouping variables #' #::::::::::::::::::::::::::::::::::::::::::::::::: #' # Box plot facetted by "dose" #'p <- ggboxplot(ToothGrowth, x = "supp", y = "len", #' color = "supp", palette = "npg", #' add = "jitter", #' facet.by = "dose", short.panel.labs = FALSE) #'# Use only p.format as label. Remove method name. #'p + stat_compare_means( #' aes(label = paste0("p = ", ..p.format..)) #') #' #'@export stat_compare_means <- function(mapping = NULL, data = NULL, method = NULL, paired = FALSE, method.args = list(), ref.group = NULL, comparisons = NULL, hide.ns = FALSE, label.sep = ", ", label = NULL, label.x.npc = "left", label.y.npc = "top", label.x = NULL, label.y = NULL, vjust = 0, tip.length = 0.03, bracket.size = 0.3, step.increase = 0, symnum.args = list(), geom = "text", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { if(!is.null(comparisons)){ method.info <- .method_info(method) method <- method.info$method method.args <- .add_item(method.args, paired = paired) pms <- list(...) size <- ifelse(is.null(pms$size), 3.88, pms$size) color <- ifelse(is.null(pms$color), "black", pms$color) map_signif_level <- FALSE if(is.null(label)) label <- "p.format" if(.is_p.signif_in_mapping(mapping) | (label %in% "p.signif")) { map_signif_level <- c("****"=0.0001, "***"=0.001, "**"=0.01, "*"=0.05, "ns"=1) if(hide.ns) map_signif_level <- .hide_ns(map_signif_level) } if(!.is_empty(symnum.args)){ symnum.args.isok <- length(symnum.args$cutpoints == length(symnum.args$symbols)) if(!symnum.args.isok) stop("Incorrect format detected in symnum.args. ", "Check the documentation.") map_signif_level <- symnum.args$cutpoints[-1] # the first element is 0 (the minimum p-value) names(map_signif_level) <- symnum.args$symbols if(hide.ns) map_signif_level <- .hide_ns(map_signif_level) } if(missing(step.increase)){ step.increase <- ifelse(is.null(label.y), 0.12, 0) } ggsignif::geom_signif(comparisons = comparisons, y_position = label.y, test = method, test.args = method.args, step_increase = step.increase, size = bracket.size, textsize = size, color = color, map_signif_level = map_signif_level, tip_length = tip.length, data = data, vjust = vjust) } else{ mapping <- .update_mapping(mapping, label) layer( stat = StatCompareMeans, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(label.x.npc = label.x.npc , label.y.npc = label.y.npc, label.x = label.x, label.y = label.y, label.sep = label.sep, method = method, method.args = method.args, paired = paired, ref.group = ref.group, symnum.args = symnum.args, hide.ns = hide.ns, na.rm = na.rm, vjust = vjust,...) ) } } StatCompareMeans<- ggproto("StatCompareMeans", Stat, required_aes = c("x", "y"), default_aes = aes(hjust = ..hjust.., vjust = ..vjust..), compute_panel = function(data, scales, method, method.args, paired, ref.group, symnum.args, hide.ns, label.x.npc, label.y.npc, label.x, label.y, label.sep) { . <- x <- NULL .is.multiple.grouping.vars <- !all(data$x == data$group) if(!is.null(ref.group)) { if(ref.group != ".all.") ref.group <- scales$x$map(ref.group) } # Guess the number of group to be compared #:::::::::::::::::::::::::::::::::::::::::::::::::: if(.is.multiple.grouping.vars) x.levels <- .levels(data$group) else x.levels <- .levels(data$x) two.groups <- length(x.levels) == 2 | !is.null(ref.group) multi.groups <- length(x.levels) > 2 # Guess the test to be performed #:::::::::::::::::::::::::::::::::::::::::::::::::: if(two.groups & is.null(method)) method <- "wilcox.test" else if(multi.groups & is.null(method)) method <- "kruskal.test" # Perform group comparisons #:::::::::::::::::::::::::::::::::::::::::::::::::: if(!is.null(ref.group)) ref.group <- as.character(ref.group) method.args <- method.args %>% .add_item(data = data, method = method, paired = paired, ref.group = ref.group, symnum.args = symnum.args) if(.is.multiple.grouping.vars){ method.args <- method.args %>% .add_item(formula = y ~ group, group.by = "x") .test <- do.call(compare_means, method.args) } else{ method.args <- method.args %>% .add_item(formula = y ~ x) .test <- do.call(compare_means, method.args) } pvaltxt <- ifelse(.test$p < 2.2e-16, "p < 2.2e-16", paste("p =", signif(.test$p, 2))) .test$label <- paste(.test$method, pvaltxt, sep = label.sep) # Options for label positioning #:::::::::::::::::::::::::::::::::::::::::::::::::: label.opts <- list(data = data, scales = scales, label.x.npc = label.x.npc, label.y.npc = label.y.npc, label.x = label.x, label.y = label.y, symnum.args = symnum.args, .by = "panel" ) if(.is.multiple.grouping.vars){ if(is.null(label.x) & length(label.x.npc) == 1) label.opts$label.x <- .test$x .label.pms <- label.opts %>% .add_item(group.ids = .test$x) %>% do.call(.label_params_by_group, .) # Returns a data frame with label: x, y, hjust, vjust # .test <- dplyr::select(.test, -x) .label.pms <- dplyr::select(.label.pms, -x) } else{ .label.pms <- label.opts %>% do.call(.label_params, .) %>% # Returns a data frame with label: x, y, hjust, vjust dplyr::mutate(hjust = 0.2) } if(!is.null(ref.group)){ group.ids <- as.numeric(.test$group2) if(!is.null(label.y) & ref.group != ".all."){ if(length(label.y) == length(group.ids)) label.opts$label.y <- c(0, label.y) } .label.pms <- label.opts %>% .add_item(group.ids = group.ids) %>% do.call(.label_params_by_group, .) } res <- cbind(.test, .label.pms) if(!is.null(ref.group)){ # Set label x value to group names other.group.index <- as.numeric(res$group2) res$x <- scales$x$range$range[other.group.index ] res <- res %>% dplyr::mutate(hjust = 0.5) } if(hide.ns){ p.signif <- res$p.signif p.format <- res$p.format p.signif[p.signif == "ns"] <- " " res$p.signif <- p.signif } res } ) # Check if p.signif is in mapping .is_p.signif_in_mapping <- function(mapping){ res <- FALSE if(!is.null(mapping)){ if(!is.null(mapping$label)){ .label <- as.character(mapping$label) res <- "..p.signif.." %in% .label } } return(res) } # Update mapping with label .update_mapping <- function (mapping, label){ allowed.label <- list( "p.signif" = quote(..p.signif..), "..p.signif.." = quote(..p.signif..), "p.format" = quote(paste0("p = ",..p.format..)), "..p.format.." = quote(paste0("p = ",..p.format..)), "p" = quote(paste0("p = ",..p.format..)), "..p.." = quote(paste0("p = ",..p.format..)) ) if(!is.null(label)){ if(!label %in% names(allowed.label) ) stop("Allowed values for label are: ", .collapse(names(allowed.label) , sep = ", ")) } if(!is.null(mapping) & is.character(label)){ mapping$label <- allowed.label[[label]] } else if(is.character(label)){ mapping <- aes() mapping$label <- allowed.label[[label]] } mapping } # Hide NS in map_signif_level .hide_ns <- function(x){ n <- names(x) ns.pos <- which(n == "ns" | n == "NS") if(!.is_empty(ns.pos)) n[ns.pos] = " " names(x) <- n x } ggpubr/R/set_palette.R0000644000176200001440000000452313123734400014376 0ustar liggesusers#' @include utilities_color.R NULL #'Set Color Palette #' #'@description \itemize{ \item \code{change_palette(), set_palette()}: Change #'both color and fill palettes. \item \code{color_palette()}: change color #'palette only. \item \code{fill_palette()}: change fill palette only. #' #'} #'@inheritParams get_palette #'@param p a ggplot #'@param ... other arguments passed to ggplot2 scale_color_xxx() and #' scale_fill_xxx() functions. #' #'@seealso \link{get_palette}. #' #' #'@examples #'# Load data #'data("ToothGrowth") #'df <- ToothGrowth #' #'# Basic plot #'p <- ggboxplot(df, x = "dose", y = "len", #' color = "dose") #'p #' #'# Change the color palette #' set_palette(p, "jco") #'@name set_palette #'@rdname set_palette #'@export set_palette <- function(p, palette){ p + .ggcolor(palette)+ .ggfill(palette) } #'@rdname set_palette #'@export change_palette <- function(p, palette){ set_palette(p, palette) } #'@rdname set_palette #'@export color_palette <- function(palette = NULL, ...) { brewerpal <- .brewerpal() ggscipal <- .ggscipal() res <- NULL if (is.null(palette)) palette <- "" if (length(palette) == 1) { if (palette %in% brewerpal) ggplot2::scale_color_brewer(..., palette = palette) else if (palette %in% ggscipal) .scale_color_ggsci(palette = palette) else if (palette == "grey") ggplot2::scale_color_grey(..., start = 0.8, end = 0.2) else if (palette == "hue") ggplot2::scale_color_hue(...) else if(.is_color(palette)) ggplot2::scale_color_manual(..., values = palette) } else if (palette[1] != "") ggplot2::scale_color_manual(..., values = palette) } #'@rdname set_palette #'@export fill_palette <- function(palette = NULL, ...){ brewerpal <- .brewerpal() ggscipal <- .ggscipal() res <- NULL if (is.null(palette)) palette <- "" if (length(palette) == 1) { if (palette %in% brewerpal) ggplot2::scale_fill_brewer(..., palette = palette) else if (palette %in% ggscipal) .scale_fill_ggsci(palette = palette) else if (palette == "grey") ggplot2::scale_fill_grey(..., start = 0.8, end = 0.2) else if (palette == "hue") ggplot2::scale_fill_hue(...) else if(.is_color(palette)) ggplot2::scale_fill_manual(..., values = palette) } else if (palette[1] != "") ggplot2::scale_fill_manual(..., values = palette) } ggpubr/R/gene_citation.R0000644000176200001440000000245113106515501014673 0ustar liggesusers#'Gene Citation Index #' #'@description Contains the mean citation index of 66 genes obtained by #' assessing PubMed abstracts and annotations using two key words i) Gene name #' + b cell differentiation and ii) Gene name + plasma cell differentiation. #'@name gene_citation #'@docType data #'@usage data("gene_citation") #'@format A data frame with 66 rows and 2 columns. \describe{ #' \item{\code{gene}}{gene names} \item{\code{citation_index}}{mean citation index} } #' #' @examples #' data(gene_citation) #' #'# Some key genes of interest to be highlighted #'key.gns <- c("MYC", "PRDM1", "CD69", "IRF4", "CASP3", "BCL2L1", "MYB", "BACH2", "BIM1", "PTEN", #' "KRAS", "FOXP1", "IGF1R", "KLF4", "CDK6", "CCND2", "IGF1", "TNFAIP3", "SMAD3", "SMAD7", #' "BMPR2", "RB1", "IGF2R", "ARNT") #'# Density distribution #'ggdensity(gene_citation, x = "citation_index", y = "..count..", #' xlab = "Number of citation", #' ylab = "Number of genes", #' fill = "lightgray", color = "black", #' label = "gene", label.select = key.gns, repel = TRUE, #' font.label = list(color= "citation_index"), #' xticks.by = 20, # Break x ticks by 20 #' gradient.cols = c("blue", "red"), #' legend = "bottom", #' legend.title = "" # Hide legend title #' ) #' NULL ggpubr/R/reexports.R0000644000176200001440000000027513675462563014144 0ustar liggesusers#' @importFrom dplyr mutate #' @export dplyr::mutate #' @importFrom dplyr group_by #' @export dplyr::group_by #' @importFrom rstatix get_summary_stats #' @export rstatix::get_summary_stats ggpubr/R/background_image.R0000644000176200001440000000165313124444367015362 0ustar liggesusers#' @include utilities.R NULL #'Add Background Image to ggplot2 #'@description Add background image to ggplot2. #'@param raster.img raster object to display, as returned by the function #' \code{readPNG()}[in \code{png} package] and \code{readJPEG()} [in \code{jpeg} package]. #'@author Alboukadel Kassambara #' @examples #' \dontrun{ #'install.packages("png") #' #'# Import the image #'img.file <- system.file(file.path("images", "background-image.png"), #' package = "ggpubr") #'img <- png::readPNG(img.file) #' #'# Plot with background image #'ggplot(iris, aes(Species, Sepal.Length))+ #' background_image(img)+ #' geom_boxplot(aes(fill = Species), color = "white")+ #' fill_palette("jco") #' } #' #'@export background_image <- function(raster.img){ annotation_raster(raster.img, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf) } ggpubr/R/ggtexttable.R0000644000176200001440000011330713667753227014425 0ustar liggesusers#' @include utilities.R NULL #' Draw a Textual Table #' @description Draw a textual table. \itemize{ \item \code{ggtexttable()}: draw #' a textual table. \item \code{ttheme()}: customize table theme. \item #' \code{rownames_style(), colnames_style(), tbody_style()}: helper functions #' to customize the table row names, column names and body. #' \item \code{table_cell_font()}: access to a table cell for changing the text font (size and face). #' \item \code{table_cell_bg()}: access to a table cell for changing the background (fill, color, linewidth). #' \item \code{tab_cell_crossout()}: cross out a table cell. #' \item \code{tab_ncol(), tab_nrow()}: returns, respectively, the number of columns and rows in a ggtexttable. #' \item \code{tab_add_hline()}: Creates horizontal lines or separators at the top or the bottom side of a given specified row. #' \item \code{tab_add_vline()}: Creates vertical lines or separators at the right or the left side of a given specified column. #' \item \code{tab_add_border(), tbody_add_border(), thead_add_border()}: Add borders to table; tbody is for table body and thead is for table head. #' \item \code{tab_add_title(),tab_add_footnote()}: Add title, subtitle and footnote to a table. #' } #'@inheritParams gridExtra::tableGrob #'@param x a \code{data.frame} or \code{matrix}. #'@param theme a list, as returned by the function \code{ttheme()}, defining the #' parameters of the table theme. Allowed values include one of \code{ttheme()} #' and \code{ttheme_clean()}. #'@param base_style character string the table style/theme. The available themes #' are illustrated in the #' \href{https://rpkgs.datanovia.com/ggpubr/files/ggtexttable-theme.pdf}{ggtexttable-theme.pdf} #' file. Allowed values include one of \code{c("default", "blank", "classic", #' "minimal", "light", "lBlack", "lBlue", "lRed", "lGreen", "lViolet", "lCyan", #' "lOrange", "lBlackWhite", "lBlueWhite", "lRedWhite", "lGreenWhite", #' "lVioletWhite", "lCyanWhite", "lOrangeWhite", "mBlack", "mBlue", "mRed", #' "mGreen", "mViolet", "mCyan", "mOrange", "mBlackWhite", "mBlueWhite", #' "mRedWhite", "mGreenWhite", "mVioletWhite", "mCyanWhite", "mOrangeWhite" )}. #' Note that, l = "light"; m = "medium". #'@param colnames.style a list, as returned by the function #' \code{colnames_style()}, defining the style of the table column names. #' Considered only when \code{base_size = "default"}. #'@param rownames.style a list, as returned by the function #' \code{rownames_style()}, defining the style of the table row names. #' Considered only when \code{base_size = "default"}. #'@param tbody.style a list, as returned by the function \code{tbody_style()}, #' defining the style of the table body. Considered only when \code{base_size = #' "default"}. #'@param color,face,size text font color, face and size, respectively. Allowed #' values for face include c("plain", "bold", "italic", "bold.italic"). #'@param fill background color. #'@param linewidth,linecolor line width and color, respectively. #'@param alpha numeric value specifying fill color transparency. #' Value should be in [0, 1], where 0 is full transparency and 1 is no transparency. #' @param at.row a numeric vector of row indexes; for example \code{at.row = c(1, 2)}. #' @param row.side row side to which the horinzotal line should be added. Can be one of \code{c("bottom", "top")}. #' @param from.column integer indicating the column from which to start drawing the horizontal line. #' @param to.column integer indicating the column to which the horizontal line should end. #' @param linetype line type #' @param at.column a numeric vector of column indexes; for example \code{at.column = c(1, 2)}. #' @param column.side column side to which the vertical line should be added. Can be one of \code{c("left", "right")}. #' @param from.row integer indicating the row from which to start drawing the horizontal line. #' @param to.row integer indicating the row to which the vertical line should end. #'@param ... extra parameters for text justification, e.g.: hjust and x. Default #' is "centre" for the body and header, and "right" for the row names. Left #' justification: \code{hjust = 0, x = 0.1}. Right justification: \code{hjust = 1, x = 0.9}. #'@return an object of class ggplot. #' #' #' @examples #' # data #' df <- head(iris) #' #' # Default table #' # Remove row names using rows = NULL #' ggtexttable(df, rows = NULL) #' #' # Blank theme #' ggtexttable(df, rows = NULL, theme = ttheme("blank")) #' #' # light theme #' ggtexttable(df, rows = NULL, theme = ttheme("light")) #' #' # Column names border only #' ggtexttable(df, rows = NULL, theme = ttheme("blank")) %>% #' tab_add_hline(at.row = 1:2, row.side = "top", linewidth = 2) #' #' # classic theme #' ggtexttable(df, rows = NULL, theme = ttheme("classic")) #' #' # minimal theme #' ggtexttable(df, rows = NULL, theme = ttheme("minimal")) #' #' # Medium blue (mBlue) theme #' ggtexttable(df, rows = NULL, theme = ttheme("mBlue")) #' #' #' # Customize the table as you want #' ggtexttable(df, rows = NULL, #' theme = ttheme( #' colnames.style = colnames_style(color = "white", fill = "#8cc257"), #' tbody.style = tbody_style(color = "black", fill = c("#e8f3de", "#d3e8bb")) #' ) #' ) #' #' # Use RColorBrewer palette #' # Provide as many fill color as there are rows in the table body, here nrow = 6 #'ggtexttable(df, #' theme = ttheme( #' colnames.style = colnames_style(fill = "white"), #' tbody.style = tbody_style(fill = get_palette("RdBu", 6)) #' ) #') #' #'# Text justification #'#:::::::::::::::::::::::::::::::::::::::::::::: #'# Default is "centre" for the body and header, and "right" for the row names. #'# Left justification: hjust=0, x=0.1 #'# Right justification: hjust=1, x=0.9 #'tbody.style = tbody_style(color = "black", #' fill = c("#e8f3de", "#d3e8bb"), hjust=1, x=0.9) #'ggtexttable(head(iris), rows = NULL, #' theme = ttheme( #' colnames.style = colnames_style(color = "white", fill = "#8cc257"), #' tbody.style = tbody.style #' ) #') #' #'# Access and modify the font and #'# the background of table cells #'# ::::::::::::::::::::::::::::::::::::::::::::: #'tab <- ggtexttable(head(iris), rows = NULL, #' theme = ttheme("classic")) #'tab <- table_cell_font(tab, row = 3, column = 2, #' face = "bold") #'tab <- table_cell_bg(tab, row = 4, column = 3, linewidth = 5, #' fill="darkolivegreen1", color = "darkolivegreen4") #'tab #' #'# Change table cells background and font for column 3, #'# Spaning from row 2 to the last row in the data #'tab <- ggtexttable(df, rows = NULL, theme = ttheme("classic")) #'tab %>% #' table_cell_bg(row = 2:tab_nrow(tab), column = 3, fill = "darkblue") %>% #' table_cell_font(row = 2:tab_nrow(tab), column = 3, face = "italic", color = "white") #' #'# Add separators and borders #'# ::::::::::::::::::::::::::::::::::::::::::::::::::: #'# Table with blank theme #'tab <- ggtexttable(df, theme = ttheme("blank"), rows = NULL) #'# Add horizontal and vertical lines #'tab %>% #' tab_add_hline(at.row = c(1, 2), row.side = "top", linewidth = 3, linetype = 1) %>% #' tab_add_hline(at.row = c(7), row.side = "bottom", linewidth = 3, linetype = 1) %>% #' tab_add_vline(at.column = 2:tab_ncol(tab), column.side = "left", from.row = 2, linetype = 2) #' #'# Add borders to table body and header #'# Cross out some cells #'tab %>% #' tbody_add_border() %>% #' thead_add_border() %>% #' tab_cell_crossout( #' row = c(2, 4), column = 3, linecolor = "red", #' reduce.size.by = 0.6 #' ) #' #'# Add titles andd footnote #'# ::::::::::::::::::::::::::::::::::::::::::::::::::: #'# Add titles and footnote #'# Wrap subtitle into multiple lines using strwrap() #'main.title <- "Edgar Anderson's Iris Data" #'subtitle <- paste0( #' "This famous (Fisher's or Anderson's) iris data set gives the measurements", #' " in centimeters of the variables sepal length and width and petal length and width,", #' " respectively, for 50 flowers from each of 3 species of iris.", #' " The species are Iris setosa, versicolor, and virginica." #') %>% #' strwrap(width = 80) %>% #' paste(collapse = "\n") #' #'tab <- ggtexttable(head(iris), theme = ttheme("light")) #'tab %>% #' tab_add_title(text = subtitle, face = "plain", size = 10) %>% #' tab_add_title(text = main.title, face = "bold", padding = unit(0.1, "line")) %>% #' tab_add_footnote(text = "*Table created using ggpubr", size = 10, face = "italic") #' #' #' # Combine density plot and summary table #'#::::::::::::::::::::::::::::::::::::: #'# Density plot of "Sepal.Length" #'density.p <- ggdensity(iris, x = "Sepal.Length", #' fill = "Species", palette = "jco") #' #'# Draw the summary table of Sepal.Length #'# Descriptive statistics by groups #'stable <- desc_statby(iris, measure.var = "Sepal.Length", #' grps = "Species") #'stable <- stable[, c("Species", "length", "mean", "sd")] #'stable.p <- ggtexttable(stable, rows = NULL, #' theme = ttheme("mOrange")) #' #'# Arrange the plots on the same page #'ggarrange(density.p, stable.p, #' ncol = 1, nrow = 2, #' heights = c(1, 0.5)) #' #'@rdname ggtexttable #'@export ggtexttable <- function(x, rows = rownames(x), cols = colnames(x), vp = NULL, theme = ttheme(), ...) { style <- attr(theme, "style") res <- gridExtra::tableGrob(x, rows = rows, cols = cols, vp = vp, theme = theme, ...) if(style == "minimal"){ # minimal = blank theme + left vertical line res <- tab_add_vline( res, at.column = 2:tab_ncol(res), column.side = "left", from.row = 2, to.row = tab_nrow(res) ) } else if(style == "light"){ # light = blank theme + horizontal line res <- tab_add_hline( res, at.row = c(1, tab_nrow(res)), row.side = "bottom", linewidth = 1.5, linetype = 1, from.column = 1 ) } .grob <- res res <- as_ggplot(res) attr(res, "ggtexttableGrob") <- .grob return(res) } #' @export #' @rdname ggtexttable ttheme <- function(base_style = "default", base_size = 11, base_colour = "black", padding = unit(c(4, 4), "mm"), colnames.style = colnames_style(size = base_size), rownames.style = rownames_style(size = base_size), tbody.style = tbody_style(size = base_size) ) { style <- tstyle(base_style, size = base_size) if(!is.null(style)){ if(missing(colnames.style)) colnames.style <- style$colnames.style if(missing(rownames.style)) rownames.style <- style$rownames.style if(missing(tbody.style)) tbody.style <- style$tbody.style } .ttheme <- gridExtra::ttheme_default(base_size = base_size, base_colour = base_colour, padding = padding) .ttheme$colhead <- do.call(.add_item, c(list(.list = .ttheme$colhead), colnames.style)) .ttheme$rowhead <- do.call(.add_item, c(list(.list = .ttheme$rowhead), rownames.style)) .ttheme$core <- do.call(.add_item, c(list(.list = .ttheme$core), tbody.style)) attr(.ttheme, "style") <- base_style .ttheme } #' @export #' @rdname ggtexttable colnames_style <- function(color = "black", face = "bold", size = 12, fill = "grey80", linewidth = 1, linecolor = "white", parse = FALSE, ...) { list( fg_params = list(parse = parse, col = color, fontface = face, fontsize = size) %>% .add_item(...), # Accept extra parameters bg_params = list(fill = fill, lwd = linewidth, col = linecolor)) } #' @export #' @rdname ggtexttable rownames_style <- function(color = "black", face = "italic", size = 12, fill = NA, linewidth = 1, linecolor = "white", parse = FALSE, ...) { list( fg_params = list(parse = parse, col = color, fontface = face, fontsize = size, hjust = 1, x = 0.95) %>% .add_item(...), # Accept extra parameters bg_params = list(fill = fill, lwd = linewidth, col = linecolor)) } #' @export #' @rdname ggtexttable tbody_style <- function(color = "black", face = "plain", size = 12, fill = c("grey95", "grey90"), linewidth = 1, linecolor = "white", parse = FALSE, ...) { list( fg_params = list(parse = parse, col = color, fontface = face, fontsize = size)%>% .add_item(...), # Accept extra parameters bg_params = list(fill = fill, lwd = linewidth, col = linecolor)) } #' @export #' @rdname ggtexttable #' @param tab an object from \code{ggtexttable} or from \code{gridExtra::tableGrob()}. #' @param row,column an integer specifying the row and the column numbers for the cell of interest. table_cell_font <- function(tab, row, column, face = NULL, size = NULL, color = NULL) { tabGrob <- get_tablegrob(tab) cells <- expand.grid(row = row, column = column) for(i in 1:nrow(cells)){ tc <- .find_cell(tabGrob, cells$row[i], cells$column[i], "core-fg") tabGrob$grobs[tc][[1]][["gp"]] <- grid::gpar(fontface = face, fontsize = size, col = color) } tab_return_same_class_as_input(tabGrob, input = tab) } #' @export #' @rdname ggtexttable table_cell_bg <- function(tab, row, column, fill = NULL, color = NULL, linewidth = NULL, alpha = NULL) { tabGrob <- get_tablegrob(tab) cells <- expand.grid(row = row, column = column) for(i in 1:nrow(cells)){ tc <- .find_cell(tabGrob, cells$row[i], cells$column[i], "core-bg") tabGrob$grobs[tc][[1]][["gp"]] <- grid::gpar( fill = fill, col = color, lwd = linewidth, alpha = alpha ) } tab_return_same_class_as_input(tabGrob, input = tab) } .find_cell <- function(tab, row, column, name="core-fg"){ l <- tab$layout which(l$t==row & l$l==column & l$name==name) } #' @export #' @rdname ggtexttable #' @param reduce.size.by Numeric value in [0, 1] to reduce the size by. tab_cell_crossout <- function(tab, row, column, linetype = 1, linewidth = 1, linecolor = "black", reduce.size.by = 0){ required_package("gtable") tabgrob <- get_tablegrob(tab) crosses <- replicate( n = length(row), tab_cross(linetype = linetype, linewidth = linewidth, linecolor = linecolor, reduce.size.by = reduce.size.by), simplify = FALSE ) tabgrob <- gtable::gtable_add_grob( tabgrob, grobs = crosses, t = row, b = row, l = column, r = column ) tab_return_same_class_as_input(tabgrob, input = tab) } tab_cross <- function(linetype = 1, linewidth = 1, linecolor = "black", reduce.size.by = 0){ reduce <- reduce.size.by/2 grid::grobTree( grid::segmentsGrob( # diagonal line ul -> lr x0 = unit(0+reduce,"npc"), y0 = unit(1-reduce,"npc"), x1 = unit(1-reduce,"npc"), y1 = unit(0+reduce,"npc"), gp = grid::gpar( lty = linetype, lwd = linewidth, col = linecolor, reduce = reduce) ), grid::segmentsGrob( # diagonal line ll -> ur x0 = unit(0+reduce,"npc"), y0 = unit(0+reduce,"npc"), x1 = unit(1-reduce,"npc"), y1 = unit(1-reduce,"npc"), gp = grid::gpar( lty = linetype, lwd = linewidth, col = linecolor) ) ) } #' @export #' @rdname ggtexttable tab_ncol <- function(tab){ ncol(get_tablegrob(tab)) } #' @export #' @rdname ggtexttable tab_nrow <- function(tab){ nrow(get_tablegrob(tab)) } #' @export #' @rdname ggtexttable tab_add_hline <- function(tab, at.row = 2:tab_nrow(tab), row.side = c("bottom", "top"), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black"){ required_package("gtable") row.side <- match.arg(row.side) tabgrob <- get_tablegrob(tab) separators <- replicate( n = length(at.row), tab_hline(row.side = row.side, linetype = linetype, linewidth = linewidth, linecolor = linecolor), simplify = FALSE ) tabgrob <- gtable::gtable_add_grob( tabgrob, grobs = separators, t = at.row, b = at.row, l = from.column, r = to.column ) tab_return_same_class_as_input(tabgrob, input = tab) } # Create hline at the top or the bottom side of a given row tab_hline <- function(row.side = c("bottom", "top"), linetype = 1, linewidth = 1, linecolor = "black"){ row.side <- match.arg(row.side) y0 <- y1 <- unit(0, "npc") if(row.side == "top") y0 <- y1 <- unit(1, "npc") grid::segmentsGrob( x0 = unit(0, "npc"), x1 = unit(1,"npc"), y0 = y0, y1 = y1, gp = grid::gpar( lty = linetype, lwd = linewidth, col = linecolor) ) } #' @export #' @rdname ggtexttable tab_add_vline <- function(tab, at.column = 2:tab_ncol(tab), column.side = c("left", "right"), from.row = 1, to.row = tab_nrow(tab), linetype = 1, linewidth = 1, linecolor = "black"){ required_package("gtable") column.side <- match.arg(column.side) tabgrob <- get_tablegrob(tab) separators <- replicate( n = length(at.column), tab_vline(column.side = column.side, linetype = linetype, linewidth = linewidth, linecolor = linecolor), simplify = FALSE ) tabgrob <- gtable::gtable_add_grob( tabgrob, grobs = separators, t = from.row, b = to.row, l = at.column, r = at.column ) tab_return_same_class_as_input(tabgrob, input = tab) } # Create vline at the left or the right side of a given column tab_vline <- function(column.side = c("left", "right"), linetype = 1, linewidth = 1, linecolor = "black"){ column.side <- match.arg(column.side) x0 <- x1 <- unit(0, "npc") if(column.side == "right") x0 <- x1 <- unit(1, "npc") grid::segmentsGrob( x0 = x0, x1 = x1, y0 = unit(0, "npc"), y1 = unit(1, "npc"), gp = grid::gpar( lty = linetype, lwd = linewidth, col = linecolor) ) } #' @export #' @rdname ggtexttable tab_add_border <- function(tab, from.row = 2, to.row = tab_nrow(tab), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black"){ required_package("gtable") tabgrob <- get_tablegrob(tab) border <- grid::rectGrob( gp = grid::gpar(fill = NA, lty = linetype, lwd = linewidth, col = linecolor) ) tabgrob <- gtable::gtable_add_grob( tabgrob, grobs = border, t = from.row, b = to.row, l = from.column, r = to.column ) tab_return_same_class_as_input(tabgrob, input = tab) } #' @export #' @rdname ggtexttable tbody_add_border <- function(tab, from.row = 2, to.row = tab_nrow(tab), from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black"){ tab_add_border( tab, from.row = from.row, to.row = to.row, from.column = from.column, to.column = to.column, linetype = linetype, linewidth = linewidth, linecolor = linecolor ) } #' @export #' @rdname ggtexttable thead_add_border <- function(tab, from.row = 1, to.row = 1, from.column = 1, to.column = tab_ncol(tab), linetype = 1, linewidth = 1, linecolor = "black"){ tab_add_border( tab, from.row = from.row, to.row = to.row, from.column = from.column, to.column = to.column, linetype = linetype, linewidth = linewidth, linecolor = linecolor ) } #' @export #' @rdname ggtexttable #' @param text text to be added as title or footnote. tab_add_title <- function(tab, text, face = NULL, size = NULL, color = NULL, family = NULL, padding = unit(1.5,"line"), just = "left", hjust = NULL, vjust = NULL){ required_package("gtable") tabgrob <- get_tablegrob(tab) text <- grid::textGrob( text, x = 0.02, just = just, hjust = hjust, vjust = vjust, gp = grid::gpar(fontsize = size, fontface = face, fontfamily = family, col = color) ) # Add row at the top tabgrob <- gtable::gtable_add_rows( tabgrob, heights = grid::grobHeight(text) + padding, pos = 0 ) tabgrob <- gtable::gtable_add_grob( tabgrob, list(text), t = 1, b = 1, l = 1, r = ncol(tabgrob) ) tab_return_same_class_as_input(tabgrob, input = tab) } #' @export #' @rdname ggtexttable #' @param text text to be added as title or footnote. #' @param family font family #' @param just The justification of the text relative to its (x, y) location. If #' there are two values, the first value specifies horizontal justification #' and the second value specifies vertical justification. Possible string #' values are: "left", "right", "centre", "center", "bottom", and "top". For #' numeric values, 0 means left (bottom) alignment and 1 means right (top) #' alignment. #' @param hjust A numeric vector specifying horizontal justification. If #' specified, overrides the just setting. #' @param vjust A numeric vector specifying vertical justification. If #' specified, overrides the just setting. #' tab_add_footnote <- function(tab, text, face = NULL, size = NULL, color = NULL, family = NULL, padding = unit(1.5,"line"), just = "right", hjust = NULL, vjust = NULL){ required_package("gtable") tabgrob <- get_tablegrob(tab) text <- grid::textGrob( text, x = 0.95, just = just, hjust = hjust, vjust = vjust, gp = grid::gpar(fontsize = size, fontface = face, fontfamily = family, col = color) ) # Add row at the bottom tabgrob <- gtable::gtable_add_rows( tabgrob, heights = grid::grobHeight(text) + padding, pos = -1 ) tabgrob <- gtable::gtable_add_grob( tabgrob, list(text), t = nrow(tabgrob), b = nrow(tabgrob), l = 1, r = ncol(tabgrob) ) tab_return_same_class_as_input(tabgrob, input = tab) } #:::::::::::::::::::::::::::::::::::::::: # Helper function #:::::::::::::::::::::::::::::::::::::::: is_ggtexttable <- function(tab){ !is.null(attr(tab, "ggtexttableGrob")) } is_tablegrob <- function(tab){ inherits(tab, "gtable") & inherits(tab, "grob") } # Transform a table grob in ggtexttable like object as_ggtexttable <- function(tabgrob){ res <- as_ggplot(tabgrob) attr(res, "ggtexttableGrob") <- tabgrob res } # Extract tableGrob from ggtexttable() get_tablegrob <- function(tab){ if(is_ggtexttable(tab)){ tabgrob <- attr(tab, "ggtexttableGrob") } else if(is_tablegrob(tab)){ tabgrob <- tab } else{ stop("tab should be an object from either ggpubr::ggtexttable() or gridExtra::tableGrob().") } tabgrob } # Return the same class as the input data, # which can be either ggtextable or a gridExtra::tableGrob tab_return_same_class_as_input <- function(tabgrob, input){ if(is_ggtexttable(input)){ return(as_ggtexttable(tabgrob)) } else if(is_tablegrob(input)){ return(tabgrob) } tabgrob } # Define table style tstyle <- function(pal, size = 12){ allowed.palettes = c("default", "blank", "classic", "minimal", "light", "lBlack", "lBlue", "lRed", "lGreen", "lViolet", "lCyan", "lOrange", "lBlackWhite", "lBlueWhite", "lRedWhite", "lGreenWhite", "lVioletWhite", "lCyanWhite", "lOrangeWhite", "mBlack", "mBlue", "mRed", "mGreen", "mViolet", "mCyan", "mOrange", "mBlackWhite", "mBlueWhite", "mRedWhite", "mGreenWhite", "mVioletWhite", "mCyanWhite", "mOrangeWhite" ) if(!(pal %in% allowed.palettes )) stop(pal, " is not a supported palette") style <- switch(pal, blank = list( colnames.style = colnames_style(fill = NA, linecolor = NA, size = size), rownames.style = rownames_style(fill = NA, linecolor = NA, size = size), tbody.style = tbody_style(fill = NA, linecolor = NA, size = size) ), classic = list( colnames.style = colnames_style(fill = NA, linecolor = "black", size = size), rownames.style = rownames_style(fill = NA, linecolor = NA, size = size), tbody.style = tbody_style(fill = NA, linecolor = "black", size = size) ), minimal = list( colnames.style = colnames_style(fill = NA, linecolor = NA, size = size), rownames.style = rownames_style(fill = NA, linecolor = NA, size = size), tbody.style = tbody_style(fill = NA, linecolor = NA, size = size) ), light = list( colnames.style = colnames_style(fill = NA, linecolor = NA, size = size), rownames.style = rownames_style(fill = NA, linecolor = NA, size = size), tbody.style = tbody_style(fill = NA, linecolor = NA, size = size) ), lBlack = list( colnames.style = colnames_style( color = "black", fill = "white", size = size, linecolor = NA, linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#D9D9D9", "white"), linecolor = NA, size = size) ), lBlue = list( colnames.style = colnames_style( color = "#2F5D94", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#2F5D94", fill = c("#DAE6F2", "white"), linecolor = NA, size = size) ), lRed = list( colnames.style = colnames_style( color = "#A3262A", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#A3262A", fill = c("#F7DBDA", "white"), linecolor = NA, size = size) ), lGreen = list( colnames.style = colnames_style( color = "#7F993A", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#7F993A", fill = c("#E8F3DE", "white"), linecolor = NA, size = size) ), lViolet = list( colnames.style = colnames_style( color = "#67417B", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#67417B", fill = c("#E6DEEC", "white"), linecolor = NA, size = size) ), lCyan = list( colnames.style = colnames_style( color = "#00889E", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#00889E", fill = c("#D5EFF4", "white"), linecolor = NA, size = size) ), lOrange = list( colnames.style = colnames_style( color = "#F15F00", fill = "white", linecolor = NA, linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "#F15F00", fill = c("#FBE5D4", "white"), linecolor = NA, size = size) ), lBlackWhite = list( colnames.style = colnames_style( color = "white", fill = "black", size = size, linecolor = "black", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "black", size = size) ), lBlueWhite = list( colnames.style = colnames_style( color = "white", fill = "#477DC0", size = size, linecolor = "#477DC0", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#477DC0", size = size) ), lRedWhite = list( colnames.style = colnames_style( color = "white", fill = "#D04042", size = size, linecolor = "#D04042", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#D04042", size = size) ), lGreenWhite = list( colnames.style = colnames_style( color = "white", fill = "#8CC257", size = size, linecolor = "#8CC257", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#8CC257", size = size) ), lVioletWhite = list( colnames.style = colnames_style( color = "white", fill = "#895AA3", size = size, linecolor = "#895AA3", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#895AA3", size = size) ), lCyanWhite = list( colnames.style = colnames_style( color = "white", fill = "#00AEC9", size = size, linecolor = "#00AEC9", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#00AEC9", size = size) ), lOrangeWhite = list( colnames.style = colnames_style( color = "white", fill = "#FB8F2D", size = size, linecolor = "#FB8F2D", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = "white", linecolor = "#FB8F2D", size = size) ), mBlack = list( colnames.style = colnames_style( color = "white", fill = "black", size = size, linecolor = "white", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#A6A6A6", "#D9D9D9"), linecolor = "white", size = size) ), mBlue = list( colnames.style = colnames_style( color = "white", fill = "#477DC0", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#B5CBE5", "#DAE6F2"), linecolor = "white", size = size) ), mRed = list( colnames.style = colnames_style( color = "white", fill = "#D04042", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#EFB4B5", "#F7DBDA"), linecolor = "white", size = size) ), mGreen = list( colnames.style = colnames_style( color = "white", fill = "#8CC257", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#D3E8BB", "#E8F3DE"), linecolor = "white", size = size) ), mViolet = list( colnames.style = colnames_style( color = "white", fill = "#895AA3", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#D0BDDA", "#E6DEEC"), linecolor = "white", size = size) ), mCyan = list( colnames.style = colnames_style( color = "white", fill = "#00AEC9", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#ADDFEA", "#D5EFF4"), linecolor = "white", size = size) ), mOrange = list( colnames.style = colnames_style( color = "white", fill = "#EC8C2C", linecolor = "white", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#FDD2AF", "#FFE9D7"), linecolor = "white", size = size) ), mBlackWhite = list( colnames.style = colnames_style( color = "white", fill = "black", size = size, linecolor = "black", linewidth = 1), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#A6A6A6", "white"), linecolor = "black", size = size) ), mBlueWhite = list( colnames.style = colnames_style( color = "white", fill = "#477DC0", linecolor = "#477DC0", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#B5CBE5", "white"), linecolor = "#477DC0", size = size) ), mRedWhite = list( colnames.style = colnames_style( color = "white", fill = "#D04042", linecolor = "#D04042", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#EFB4B5", "white"), linecolor = "#D04042", size = size) ), mGreenWhite = list( colnames.style = colnames_style( color = "white", fill = "#8CC257", linecolor = "#8CC257", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#D3E8BB", "white"), linecolor = "#8CC257", size = size) ), mVioletWhite = list( colnames.style = colnames_style( color = "white", fill = "#895AA3", linecolor = "#895AA3", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#D0BDDA", "white"), linecolor = "#895AA3", size = size) ), mCyanWhite = list( colnames.style = colnames_style( color = "white", fill = "#00AEC9", linecolor = "#00AEC9", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#ADDFEA", "white"), linecolor = "#00AEC9", size = size) ), mOrangeWhite = list( colnames.style = colnames_style( color = "white", fill = "#EC8C2C", linecolor = "#EC8C2C", linewidth = 1, size = size), rownames.style = rownames_style(size = size), tbody.style = tbody_style(color = "black", fill = c("#FDD2AF", "white"), linecolor = "#EC8C2C", size = size) ) , NULL ) style } ggpubr/R/stat_stars.R0000644000176200001440000000305413111535467014263 0ustar liggesusers#' @include utilities.R NULL #' Add Stars to a Scatter Plot #' @description Create a star plot by drawing segments from group centroid to each points. #' @inheritParams ggplot2::layer #' @param ... other arguments to pass to \code{\link[ggplot2]{geom_segment}}. #' @param na.rm If FALSE (the default), removes missing values with a warning. #' If TRUE silently removes missing values. #' @seealso \code{\link{ggscatter}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' #' # Scatter plot with ellipses and group mean points #' ggscatter(df, x = "wt", y = "mpg", #' color = "cyl", shape = "cyl", #' mean.point = TRUE, ellipse = TRUE)+ #' stat_stars(aes(color = cyl)) #' #' @export stat_stars <- function(mapping = NULL, data = NULL, geom = "segment", position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, ...) { layer( stat = StatStars, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, ...) ) } StatStars<- ggproto("StatStars", Stat, required_aes = c("x", "y"), compute_group = function(data, scales) { x.mean <- mean(data$x, na.rm = TRUE) y.mean <- mean(data$y, na.rm = TRUE) res <- data %>% mutate(x = x.mean, y = y.mean) res$xend <- data$x res$yend <- data$y res } ) ggpubr/R/axis_scale.R0000644000176200001440000000531713126004220014173 0ustar liggesusers#'Change Axis Scale: log2, log10 and more #' #'@description Change axis scale. #'\itemize{ #'\item \code{xscale}: change x axis scale. #'\item \code{yscale}: change y axis scale. #'} #'@param .scale axis scale. Allowed values are one of c("none", "log2", "log10", #' "sqrt", "percent", "dollar", "scientific"); e.g.: .scale="log2". #'@param .format ogical value. If TRUE, axis tick mark labels will be formatted #' when .scale = "log2" or "log10". #' #' #'@examples #'# Basic scatter plots #'data(cars) #'p <- ggscatter(cars, x = "speed", y = "dist") #'p #' #'# Set log scale #'p + yscale("log2", .format = TRUE) #'@name axis_scale #'@rdname axis_scale #'@export xscale <- function(.scale, .format = FALSE) { .x <- NULL if(.format & .scale %in% c("percent", "dollar", "scientific")) .format <- FALSE if(.format){ if(.scale == "log2"){ scale_x_continuous(trans = scales::log2_trans(), breaks = scales::trans_breaks("log2", function(x) 2^x), labels = scales::trans_format("log2", scales::math_format(2^.x))) } else if(.scale == "log10"){ scale_x_continuous(trans = scales::log10_trans(), breaks = scales::trans_breaks("log10", function(x) 10^x), labels = scales::trans_format("log10", scales::math_format(10^.x))) } } else if(.scale %in% c("log2", "log10")){ scale_x_continuous(trans = .scale) } else{ switch(.scale, percent = scale_x_continuous(labels = scales::percent), dollar = scale_x_continuous(labels = scales::dollar), scientific = scale_x_continuous(labels = scales::scientific) ) } } #'@rdname axis_scale #'@export yscale <- function(.scale, .format = FALSE) { .x <- NULL if(.format & .scale %in% c("percent", "dollar", "scientific")) .format <- FALSE if(.format){ if(.scale == "log2"){ scale_y_continuous(trans = scales::log2_trans(), breaks = scales::trans_breaks("log2", function(x) 2^x), labels = scales::trans_format("log2", scales::math_format(2^.x))) } else if(.scale == "log10"){ scale_y_continuous(trans = scales::log10_trans(), breaks = scales::trans_breaks("log10", function(x) 10^x), labels = scales::trans_format("log10", scales::math_format(10^.x))) } } else if(.scale %in% c("log2", "log10")){ scale_y_continuous(trans = .scale) } else{ switch(.scale, percent = scale_y_continuous(labels = scales::percent), dollar = scale_y_continuous(labels = scales::dollar), scientific = scale_y_continuous(labels = scales::scientific) ) } } ggpubr/R/facet.R0000644000176200001440000001336213640723004013152 0ustar liggesusers#' @include utilities.R NULL #'Facet a ggplot into Multiple Panels #'@description Create multi-panel plots of a data set grouped by one or two #' grouping variables. Wrapper around \code{\link[ggplot2]{facet_wrap}} #'@param p a ggplot #'@param facet.by character vector, of length 1 or 2, specifying grouping #' variables for faceting the plot into multiple panels. Should be in the data. #'@param nrow,ncol Number of rows and columns in the panel. Used only when the #' data is faceted by one grouping variable. #'@param scales should axis scales of panels be fixed ("fixed", the default), #' free ("free"), or free in one dimension ("free_x", "free_y"). #'@param short.panel.labs logical value. Default is TRUE. If TRUE, create short #' labels for panels by omitting variable names; in other words panels will be #' labelled only by variable grouping levels. #'@param labeller Character vector. An alternative to the argument #' \code{short.panel.labs}. Possible values are one of "label_both" (panel #' labelled by both grouping variable names and levels) and "label_value" #' (panel labelled with only grouping levels). #'@param panel.labs a list of one or two character vectors to modify facet panel #' labels. For example, panel.labs = list(sex = c("Male", "Female")) specifies #' the labels for the "sex" variable. For two grouping variables, you can use #' for example panel.labs = list(sex = c("Male", "Female"), rx = c("Obs", #' "Lev", "Lev2") ). #'@param panel.labs.background a list to customize the background of panel #' labels. Should contain the combination of the following elements: \itemize{ #' \item \code{color, linetype, size}: background line color, type and size #' \item \code{fill}: background fill color. } For example, #' panel.labs.background = list(color = "blue", fill = "pink", linetype = #' "dashed", size = 0.5). #'@param panel.labs.font a list of aestheics indicating the size (e.g.: 14), the #' face/style (e.g.: "plain", "bold", "italic", "bold.italic") and the color #' (e.g.: "red") and the orientation angle (e.g.: 45) of panel labels. #'@param panel.labs.font.x,panel.labs.font.y same as panel.labs.font but for #' only x and y direction, respectively. #'@param strip.position (used only in \code{facet_wrap()}). By default, the #' labels are displayed on the top of the plot. Using \code{strip.position} it #' is possible to place the labels on either of the four sides by setting #' \code{strip.position = c("top", "bottom", "left", "right")} #'@param ... not used #' @examples #' p <- ggboxplot(ToothGrowth, x = "dose", y = "len", #' color = "supp") #' print(p) #' #' facet(p, facet.by = "supp") #' #' # Customize #' facet(p + theme_bw(), facet.by = "supp", #' short.panel.labs = FALSE, # Allow long labels in panels #' panel.labs.background = list(fill = "steelblue", color = "steelblue") #' ) #'@name facet #'@rdname facet #'@export facet <- function(p, facet.by, nrow = NULL, ncol = NULL, scales = "fixed", short.panel.labs = TRUE, labeller = "label_value", panel.labs = NULL, panel.labs.background = list(color = NULL, fill = NULL), panel.labs.font = list(face = NULL, color = NULL, size = NULL, angle = NULL), panel.labs.font.x = panel.labs.font, panel.labs.font.y = panel.labs.font, strip.position = "top", ... ) { if(length(facet.by) > 2) stop("facet.by should be of length 1 or 2.") if(!missing(labeller)){ if(labeller == "label_value") short.panel.labs = TRUE else if(labeller == "label_both") short.panel.labs = FALSE else stop("Don't support the following labeller: ", labeller, call. = FALSE) } panel.labs.background <- .compact(panel.labs.background) panel.labs.font.x <- .compact(panel.labs.font.x) panel.labs.font.y <- .compact(panel.labs.font.y) .labeller <- "label_value" if(!is.null(panel.labs)){ .labeller <- .create_labeller(p$data, panel.labs) } else if(!short.panel.labs) { .labeller <- label_both } if(length(facet.by) == 1){ facet.formula <- paste0("~", facet.by) %>% stats::as.formula() p <- p + facet_wrap(facet.formula, nrow = nrow, ncol = ncol, scales = scales, labeller = .labeller, strip.position = strip.position) } else if(length(facet.by) == 2){ facet.formula <- paste(facet.by, collapse = " ~ ") %>% stats::as.formula() p <- p + facet_grid(facet.formula, scales = scales, labeller = .labeller) } if(!.is_empty(panel.labs.background)) p <- p + theme(strip.background = do.call(element_rect, panel.labs.background)) if(!.is_empty(panel.labs.font.x)) p <- p + theme(strip.text.x = do.call(element_text, panel.labs.font.x)) if(!.is_empty(panel.labs.font.y)) p <- p + theme(strip.text.y = do.call(element_text, panel.labs.font.y)) p } # Create labeller to rename panel labels .create_labeller <- function(data, panel.labs = NULL) { if(is.null(panel.labs)) return(NULL) if(!is.null(panel.labs) & !.is_list(panel.labs)) stop("Argument panel.labs should be a list. Read the documentation.") if(is.null(names(panel.labs))) stop("panel.labs should be a named list. ", "Ex: panel.labs = list(sex = c('Male', 'Female') )") variables <- names(panel.labs) . <- NULL .labels <- list() for(variable in variables){ current.levels <- .levels(data[, variable]) provided.levels <- panel.labs[[variable]] if(length(current.levels) != length(provided.levels)){ stop("The number of ", variable, " levels in panel.labs ", "and in the data are different.") } names(provided.levels) <- current.levels .labels[[variable]] <- provided.levels } if(!.is_empty(.labels)) do.call(ggplot2::labeller, .labels) else return(NULL) } ggpubr/R/geom_exec.R0000644000176200001440000000604113673057432014032 0ustar liggesusers#' Execute ggplot2 functions #' @description A helper function used by ggpubr functions to execute any geom_* #' functions in ggplot2. Useful only when you want to call a geom_* function #' without carrying about the arguments to put in aes(). Basic users of ggpubr #' don't need this function. #' @param geomfunc a ggplot2 function (e.g.: geom_point) #' @param data a data frame to be used for mapping #' @param position Position adjustment, either as a string, or the result of a #' call to a position adjustment function. #' @param ... arguments accepted by the function #' @return return a plot if geomfunc!=Null or a list(option, mapping) if #' geomfunc = NULL. #' @examples #' \dontrun{ #' ggplot() + geom_exec(geom_point, data = mtcars, #' x = "mpg", y = "wt", size = "cyl", color = "cyl") #' } #' @export geom_exec <- function (geomfunc = NULL, data = NULL, position = NULL, ...) { params <- list(...) mapping <- list() # option to pass to mapping aes() option <- list() # option to the geom_*() allowed_options <- c( # general "x", "y", "color", "colour", "linetype", "fill", "size", "shape", "width", "alpha", "na.rm", "lwd", "pch", "cex", "position", "stat", "geom", "show.legend", "inherit.aes", "fun.args", "fontface", # point "stroke", # boxplot "outlier.colour", "outlier.shape", "outlier.size", "outlier.stroke", "notch", "notchwidth", "varwidth", # dot plot "binwidth", "binaxis", "method", "binpositions", "stackdir", "stackratio", "dotsize", # Violin "trim", "draw_quantiles", "scale", # error "ymin", "ymax", "xmin", "xmax", # text "label", "hjust", "vjust", "fontface", "angle", "family", "parse", # text.repel "segment.size", "force", # smooth "se", "level", "fullrange", "conf.int.level", # straightline "xintercept", "yintercept", # histograms "bins", "weight", # rug "sides", # segment "arrow", "xend", "yend", # stat_summary, "fun.data", "fun.y", "fun.ymin", "fun.ymax", # bracket "y.position", "tip.length", "label.size", "step.increase", "bracket.nudge.y", "bracket.shorten", "coord.flip" ) columns <- colnames(data) for (key in names(params)) { value <- params[[key]] if (is.null(value)) { } else if (unlist(value)[1] %in% columns & key %in% allowed_options) { mapping[[key]] <- value } else if (key %in% allowed_options) { option[[key]] <- value } else if (key =="group") { mapping[[key]] <- value # for line plot } else if(key == "step.group.by"){ # for geom_bracket, value are variable name. # but this parameter is an option not an aes option[[key]] <- value } # else warnings("Don't know '", key, "'") } if (!is.null(position)) option[["position"]] <- position option[["data"]] <- data if(is.null(geomfunc)){ res <- list(option = option, mapping = mapping) } else{ option[["mapping"]] <- create_aes(mapping) res <- do.call(geomfunc, option) } res } ggpubr/R/stat_central_tendency.R0000644000176200001440000000716113675457706016471 0ustar liggesusers#' @include utilities.R NULL #' Add Central Tendency Measures to a GGPLot #' #' @description Add central tendency measures (mean, median, mode) to density #' and histogram plots created using ggplots. #' #' Note that, normally, the mode is used for categorical data where we wish to #' know which is the most common category. Therefore, we can have have two or #' more values that share the highest frequency. This might be problematic for #' continuous variable. #' #' For continuous variable, we can consider using mean or median as the #' measures of the central tendency. #' @inheritParams ggplot2::layer #' @param ... other arguments to pass to \code{\link[ggplot2:geom_path]{geom_line}}. #' @param na.rm If FALSE (the default), removes missing values with a warning. #' If TRUE silently removes missing values. #' @param type the type of central tendency measure to be used. Possible values #' include: \code{"mean", "median", "mode"}. #' @seealso \code{\link{ggdensity}} #' @examples #' # Simple density plot #' data("mtcars") #' ggdensity(mtcars, x = "mpg", fill = "red") + #' scale_x_continuous(limits = c(-1, 50)) + #' stat_central_tendency(type = "mean", linetype = "dashed") #' #' # Color by groups #' data(iris) #' ggdensity(iris, "Sepal.Length", color = "Species") + #' stat_central_tendency(aes(color = Species), type = "median", linetype = 2) #' #' # Use geom = "point" for central tendency #' data(iris) #' ggdensity(iris, "Sepal.Length", color = "Species") + #' stat_central_tendency( #' aes(color = Species), type = "median", #' geom = "point", size = 4 #' ) #' #' # Facet #' ggdensity(iris, "Sepal.Length", facet.by = "Species") + #' stat_central_tendency(type = "mean", color = "red", linetype = 2) + #' stat_central_tendency(type = "median", color = "blue", linetype = 2) #' #' @export stat_central_tendency <- function(mapping = NULL, data = NULL, geom = c("line", "point"), position = "identity", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, type = c("mean", "median", "mode"), ...) { type <- match.arg(type) geom <- match.arg(geom) if(is.null(mapping)){ mapping <- ggplot2::aes(y = NULL) }else{ mapping["y"] <- list(NULL) } layer( stat = StatCentralTendency, data = data, mapping = mapping, geom = geom, position = position, show.legend = show.legend, inherit.aes = inherit.aes, params = list(na.rm = na.rm, type = type, geom = geom, ...) ) } StatCentralTendency <- ggproto("StatCentralTendency", Stat, required_aes = c("x"), compute_group = function(data, scales, type, geom) { center.func <- switch (type, mean = mean, median = stats::median, mode = .get_mode ) .center <- center.func(data$x, na.rm = TRUE) n <- length(.center) if(geom == "line"){ results <- data.frame(x = rep(.center, each = 2),y = c(-Inf, Inf)) if(n >= 2) results$group <- rep(1:n, each = 2) } else if(geom == "point") { results <- data.frame(x = .center, y = -Inf) } results } ) # from rstatix .get_mode <- function (x, na.rm = TRUE) { if(na.rm) x <- stats::na.omit(x) .x <- factor(x) .table <- table(.x) .max <- max(.table) if (all(.table == .max)) { .mode <- NA } else { .mode <- names(.table)[.table == .max] } if (is.numeric(x)) { .mode <- as.numeric(.mode) } .mode } ggpubr/R/ggtext.R0000644000176200001440000002237713666556700013417 0ustar liggesusers#' @include utilities.R ggpar.R stat_chull.R stat_conf_ellipse.R NULL #' Text #' @description Add text to a plot. #' @inheritParams ggscatter #' @param data a data frame #' @param x,y x and y variables for drawing. #' @param label the name of the column containing point labels. Can be also a #' character vector with length = nrow(data). #' @param color text font color. #' @param size text font size. #' @param face text font style. Allowed values are one of c("plain", "bold", #' "italic", "bold.italic"). #' @param parse If \code{TRUE}, the labels will be parsed into expressions and #' displayed as described in \code{?plotmath}. #' @param family character vector specifying font family. #' @param show.legend logical. Should text be included in the legends? NA, the #' default, includes if any aesthetics are mapped. FALSE never includes, and #' TRUE always includes. #' @param label.select can be of two formats: \itemize{ \item a character vector #' specifying some labels to show. \item a list containing one or the #' combination of the following components: \itemize{ \item \code{top.up} and #' \code{top.down}: to display the labels of the top up/down points. For #' example, \code{label.select = list(top.up = 10, top.down = 4)}. \item #' \code{criteria}: to filter, for example, by x and y variabes values, use #' this: \code{label.select = list(criteria = "`y` > 2 & `y` < 5 & `x` \%in\% #' c('A', 'B')")}. } } #' @param repel a logical value, whether to use ggrepel to avoid overplotting #' text labels or not. #' @param label.rectangle logical value. If TRUE, add rectangle underneath the #' text, making it easier to read. #' @param grouping.vars grouping variables to sort the data by, when the user #' wants to display the top n up/down labels. #' @param position Position adjustment, either as a string, or the result of a #' call to a position adjustment function. #' @param ggp a ggplot. If not NULL, points are added to an existing plot. #' @param ... other arguments to be passed to \code{\link{ggpar}}. #' @details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, #' xlab, ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: #' palette = "Dark2" or palette = c("gray", "blue", "red") \item legend title, #' labels and position: legend = "right" } #' @seealso \code{\link{ggpar}} #' @examples #' # Load data #' data("mtcars") #' df <- mtcars #' df$cyl <- as.factor(df$cyl) #' df$name <- rownames(df) #' head(df[, c("wt", "mpg", "cyl")], 3) #' #' # Textual annotation #' # +++++++++++++++++ #' ggtext(df, x = "wt", y = "mpg", #' color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' label = "name", repel = TRUE) #' #' # Add rectangle around label #' ggtext(df, x = "wt", y = "mpg", #' color = "cyl", palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' label = "name", repel = TRUE, label.rectangle = TRUE) #' #' #' @export ggtext <- function(data, x = NULL, y = NULL, label = NULL, color = "black", palette = NULL, size = 11, face = "plain", family = "", show.legend = NA, label.select = NULL, repel = FALSE, label.rectangle = FALSE, parse = FALSE, grouping.vars = NULL, position = "identity", ggp = NULL, ggtheme = theme_pubr(), ...) { . <- NULL .dots <- list(...) data <- as.data.frame(data) if(length(label) >1){ if(length(label) != nrow(data)) stop("The argument label should be a column name or a vector of length = nrow(data). ", "It seems that length(label) != nrow(data)") else data$label.xx <- label label <- "label.xx" } if(is.null(ggp)) p <- ggplot(data, create_aes(list(x = x, y = y))) else p <- ggp # Add textual annotation # ++++++ alpha <- 1 if(!is.null(list(...)$alpha)) alpha <- list(...)$alpha if(is.null(label)) return(p) lab_data <- data # Special case for density plot and histogram # y is calculated as ..count.. or ..density.. # we should estimate label y from ggplot2 output .is_density_plot <- y[1] %in% c("..count..", "..density..") if(.is_density_plot){ lab_data <- .hist_label_data(p, grouping.vars = list(...)$facet.by, x = x) y <- "lab.y" # hist.data <- ggplot_build(p)$data[[1]][, c("x", "y", "count", "density")] # hist.x <- hist.data$x # hist.y <- hist.data$y # break.x <- c(0, hist.x) %>% unique() # label.break <- 1:(length(break.x)-1) # lab.y <- .select_vec(data, x) %>% # cut(breaks = break.x, labels = label.break) %>% # hist.y[.] # lab_data$lab.y <- lab.y # y <- "lab.y" # lab_data <- lab_data %>% dplyr::filter(!is.na(lab.y)) } # Select some labels to show if(!is.null(label.select)){ lab_data <- .get_label_data (lab_data, x, y, label = label, label.select = label.select, grouping.vars = grouping.vars) } if(repel){ ggfunc <- ggrepel::geom_text_repel if(label.rectangle) ggfunc <- ggrepel::geom_label_repel p <- p + geom_exec(ggfunc, data = lab_data, x = x, y = y, label = label, fontface = face, family = family, show.legend = show.legend, size = size/3, color = color, alpha = alpha, parse = parse, box.padding = unit(0.35, "lines"), point.padding = unit(0.3, "lines"), force = 1, segment.size = 0.2, seed = 123) } else{ ggfunc <- geom_text vjust <- -0.7 hjust <- NULL if(label.rectangle) { ggfunc <- geom_label vjust <- -0.4 } vjust <- ifelse(is.null(.dots$vjust), vjust, .dots$vjust) if(!is.null(.dots$hjust)) hjust <- .dots$hjust p <- p + geom_exec(ggfunc, data = lab_data, x = x, y = y, color = color, label = label, fontface = face, family = family, show.legend = show.legend, size = size/3, color = color, parse = parse, vjust = vjust, hjust = hjust, alpha = alpha, position = position) } #p <- ggpar(p, palette = palette, ggtheme = ggtheme, ...) if(family != "") p <- p + theme(text = element_text(family = family)) p } # data: data frame # x, y: x and y variables # label: label columns # label.select: select some labels. Can be a character vector, or a list # with the following components (top.up, top.down) # grouping.vars grouping variables .get_label_data <- function(data, x, y, label = NULL, label.select = NULL, grouping.vars = NULL) { if(.is_list(label.select)){ expected.components = c("top.up", "top.down", "criteria") if(!any(expected.components %in% names(label.select))) stop("If label.select is a list, it should contain one or the combination ", "of the following element: ", .collapse(expected.components, sep = ", ")) } data <- as.data.frame(data) if(is.null(label)) lab_data <- NULL else if(is.null(label.select)) lab_data <- data else if(.is_list(label.select)){ lab_data <- data top_up <- top_down <- . <- NULL if(!is.null(label.select$top.up)) top_up <- .top_up(data, x, y, n = label.select$top.up, grouping.vars = grouping.vars) if(!is.null(label.select$top.down)) top_down <- .top_down(data, x, y, n = label.select$top.down, grouping.vars = grouping.vars) if(!is.null(top_up) | !is.null(top_down)) lab_data <- rbind(top_up, top_down) if(!is.null(label.select$criteria)){ criteria <- gsub("`y`", y, label.select$criteria) %>% gsub("`x`", x, .) lab_data <- dplyr::filter_(lab_data, .dots = criteria) } } else lab_data <- subset(data, data[, label, drop = TRUE] %in% label.select, drop = FALSE) return(lab_data) } # Get histogram/density label y coord from ggplot output # grouping.vars : facet variables # x: x variable name .hist_label_data <- function(p, grouping.vars = NULL, x = NULL){ . <- NULL #x <- .mapping(p) %>%.$x hist.data <- ggplot_build(p)$data[[1]] data <- p$data if(is.null(grouping.vars)){ return(.hist_label_y(hist.data, data, x )) } data <- p$data %>% df_nest_by(vars = grouping.vars) hist.data <- hist.data %>% df_nest_by(vars = "PANEL") %>% .$data data <- data %>% mutate(hist.data = hist.data) lab.data <- purrr::map2(data$hist.data, data$data, .hist_label_y, x) data <- data %>% mutate(lab.data = lab.data ) %>% df_select(vars = c( "lab.data", grouping.vars)) %>% tidyr::unnest() data } # Get histogram/density label y coord from ggplot output # hist.data: histogram data. ggplot_build(p)$data[[1]] # data: data frame # x: x variable name .hist_label_y <- function(hist.data, data, x ){ . <- NULL hist.x <- hist.data$x hist.y <- hist.data$y break.x <- c(0, hist.x) %>% unique() label.break <- 1:(length(break.x)-1) lab.y <- .select_vec(data, x) %>% cut(breaks = break.x, labels = label.break) %>% hist.y[.] data$lab.y <- lab.y data <- data %>% dplyr::filter(!is.na(lab.y)) data } ggpubr/R/ggparagraph.R0000644000176200001440000000542213621157441014356 0ustar liggesusers#' @include utilities.R NULL #'Draw a Paragraph of Text #'@description Draw a paragraph o text. Splits a long text into multiple lines #' (by inserting line breaks) so that the output will fit within the current #' viewport. #'@param text the text to plot. #'@param color font color, example: color = "black" #'@param size font size, example: size = 12 #'@param face font face. Allowed values are one of "plain", "italic", "bold", #' "bold.italic". #' @param family font family #' @param lineheight Line height, example: lineheight = 2. #'@author Alboukadel Kassambara #' @examples #' # Density plot #'density.p <- ggdensity(iris, x = "Sepal.Length", #' fill = "Species", palette = "jco") #' #'# Text plot #'text <- paste("iris data set gives the measurements in cm", #' "of the variables sepal length and width", #' "and petal length and width, respectively,", #' "for 50 flowers from each of 3 species of iris.", #' "The species are Iris setosa, versicolor, and virginica.", sep = " ") #'text.p <- ggparagraph(text, face = "italic", size = 12) #' #'# Arrange the plots on the same page #'ggarrange(density.p, text.p, #' ncol = 1, nrow = 2, #' heights = c(1, 0.3)) #' #'@export ggparagraph <- function(text, color = NULL, size = NULL, face = NULL, family = NULL, lineheight = NULL) { style <- grid::gpar(col = color, fontsize = size, fontface = face, fontfamily = family, lineheight = lineheight) p <- grid::grob(text = text, cl = "splitText", gp = style) p <- as_ggplot(p) return(p) } # Helper functions # Extracted from RGraphics package # ::::::::::::::::::::::::::::::::::::::::::: splitString <- function(text) { strings <- strsplit(text, " ")[[1]] newstring <- strings[1] linewidth <- grid::stringWidth(newstring) gapwidth <- grid::stringWidth(" ") availwidth <- grid::convertWidth(unit(1, "npc"), "in", valueOnly=TRUE) for (i in 2:length(strings)) { width <- grid::stringWidth(strings[i]) if (grid::convertWidth(linewidth + gapwidth + width, "in", valueOnly=TRUE) < availwidth) { sep <- " " linewidth <- linewidth + gapwidth + width } else { sep <- "\n" linewidth <- width } newstring <- paste(newstring, strings[i], sep=sep) } newstring } #' @method drawDetails splitText #' @rdname ggparagraph #' @param x a grid grob #' @param recording a logical value indicating whether a grob is being added to #' the display list or redrawn from the display list. #' @export drawDetails.splitText <- function(x, recording) { grid::grid.text(splitString(x$text), x=0, y=1, just=c("left", "top")) } ggpubr/R/create_aes.R0000644000176200001440000000345113666661662014204 0ustar liggesusers#' @include utilities.R NULL #' Create Aes Mapping from a List #' #' @description Create aes mapping to make programming easy with ggplot2. #' @param .list a list of aesthetic arguments; for example .list = list(x = "dose", y = "len", color = "dose"). #' @param parse logical. If TRUE, parse the input as an expression. #' #' @examples #' # Simple aes creation #' create_aes(list(x = "Sepal.Length", y = "Petal.Length" )) #' #' # Parse an expression #' x <- "log2(Sepal.Length)" #' y <- "log2(Petal.Length)" #' create_aes(list(x = x, y = y ), parse = TRUE) #' #' # Create a ggplot #' mapping <- create_aes(list(x = x, y = y ), parse = TRUE) #' ggplot(iris, mapping) + #' geom_point() #' #' @export create_aes <- function(.list, parse = FALSE){ if(parse){ return(create_aes.parse(.list)) } else{ return(create_aes.name(.list)) } } # Ref: https://rpubs.com/hadley/97970 # Parse as name. If x_var is "a + b", as.name() will turn it into a variable called `a + b`. create_aes.name <- function(.list){ .list <- .list %>% purrr::map(function(x) to_name(x)) do.call(ggplot2::aes, .list) } # Parse an expression. If x_var is "a + b", parse() will turn it into the function call a + b create_aes.parse <- function(.list){ .list <- .list %>% purrr:: map(function(x) parse_expression(x)) do.call(ggplot2::aes, .list) } parse_expression <- function(x){ if(is_parsable_aes(x)){ x <- parse(text = x)[[1]] } x } to_name <- function(x){ if(is_parsable_aes(x)){ x <- as.name(x) } x } # Check if parsable aesthetic is_parsable_aes <- function(x){ is.character(x) & (!is_numeric_char(x)) & (length(x) == 1) } # Check if x is a numeric string "1", "2" # return TRUE for "1", "2", etc is_numeric_char <- function(x){ if(is.character(x)) res <- grepl("^[[:digit:]]+$", x) else res <- FALSE res } ggpubr/R/font.R0000644000176200001440000000742513675466255013065 0ustar liggesusers#'Change the Appearance of Titles and Axis Labels #' #'@description Change the appearance of the main title, subtitle, caption, axis #' labels and text, as well as the legend title and texts. Wrapper around #' \code{\link[ggplot2:element]{element_text}()}. #' #'@param object character string specifying the plot components. Allowed values #' include: \itemize{ \item \code{"title"} for the main title \item #' \code{"subtitle"} for the plot subtitle \item \code{"caption"} for the plot #' caption \item \code{"legend.title"} for the legend title \item #' \code{"legend.text"} for the legend text \item \code{"x", "xlab", or "x.title"} #' for x axis label \item \code{"y", "ylab", or "y.title"} for y axis label \item #' \code{"xy", "xylab", "xy.title" or "axis.title"} for both x and y axis #' labels \item \code{"x.text"} for x axis texts (x axis tick labels) \item #' \code{"y.text"} for y axis texts (y axis tick labels) \item \code{"xy.text"} #' or \code{"axis.text"} for both x and y axis texts } #' #'@param size numeric value specifying the font size, (e.g.: \code{size = 12}). #'@param color character string specifying the font color, (e.g.: \code{color = #' "red"}). #'@param face the font face or style. Allowed values include one of #' \code{"plain", "bold", "italic", "bold.italic"}, (e.g.: \code{face = #' "bold.italic"}). #'@param family the font family. #'@param ... other arguments to pass to the function #' \code{\link[ggplot2:element]{element_text}()}. #' #'@examples #'# Load data #'data("ToothGrowth") #' #'# Basic plot #'p <- ggboxplot(ToothGrowth, x = "dose", y = "len", color = "dose", #' title = "Box Plot created with ggpubr", #' subtitle = "Length by dose", #' caption = "Source: ggpubr", #' xlab ="Dose (mg)", ylab = "Teeth length") #'p #' #'# Change the appearance of titles and labels #'p + #' font("title", size = 14, color = "red", face = "bold.italic")+ #' font("subtitle", size = 10, color = "orange")+ #' font("caption", size = 10, color = "orange")+ #' font("xlab", size = 12, color = "blue")+ #' font("ylab", size = 12, color = "#993333")+ #' font("xy.text", size = 12, color = "gray", face = "bold") #' #'# Change the appearance of legend title and texts #'p + #' font("legend.title", color = "blue", face = "bold")+ #' font("legend.text", color = "red") #' #'@export font <- function(object, size = NULL, color = NULL, face = NULL, family = NULL, ...){ elmt <- element_text(size = size, color = color, face = face, family = family, ...) switch(object, title = theme(plot.title = elmt), subtitle = theme(plot.subtitle = elmt), caption = theme(plot.caption = elmt), x = theme(axis.title.x = elmt), xlab = theme(axis.title.x = elmt), x.title = theme(axis.title.x = elmt), y = theme(axis.title.y = elmt), ylab = theme(axis.title.y = elmt), y.title = theme(axis.title.y = elmt), xy = theme(axis.title.x = elmt, axis.title.y = elmt), xylab = theme(axis.title.x = elmt, axis.title.y = elmt), xy.title = theme(axis.title.x = elmt, axis.title.y = elmt), axis.title = theme(axis.title.x = elmt, axis.title.y = elmt), legendtitle = theme(legend.title = elmt), legend.title = theme(legend.title = elmt), legendtext = theme(legend.text = elmt), legend.text = theme(legend.text = elmt), # Axis tick labels x.text = theme(axis.text.x = elmt), y.text = theme(axis.text.y = elmt), xy.text = theme(axis.text.x = elmt, axis.text.y = elmt), yxtext = theme(axis.text.x = elmt, axis.text.y = elmt), axis.text = theme(axis.text.x = elmt, axis.text.y = elmt), stop("Don't support ", object) ) } ggpubr/R/get_palette.R0000644000176200001440000000631613675461352014403 0ustar liggesusers#'Generate Color Palettes #' #'@description Generate a palette of k colors from ggsci palettes, RColorbrewer #' palettes and custom color palettes. Useful to extend RColorBrewer and ggsci to support more colors. #'@param palette Color palette. Allowed values include: \itemize{ \item #' \strong{Grey color palettes}: "grey" or "gray"; \item \strong{RColorBrewer #' palettes}, see \code{\link[RColorBrewer:ColorBrewer]{brewer.pal}} and details section. #' Examples of palette names include: "RdBu", "Blues", "Dark2", "Set2", ...; #' \item \strong{Custom color palettes}. For example, palette = c("#00AFBB", #' "#E7B800", "#FC4E07"); \item \strong{ggsci scientific journal palettes}, #' e.g.: "npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and #' "rickandmorty". } #'@param k the number of colors to generate. #'@details #'\strong{RColorBrewer palettes}: To display all available color #' palettes, type this in R:RColorBrewer::display.brewer.all(). Color palette #' names include: #' #' \itemize{ \item \strong{Sequential palettes}, suited to ordered data that #' progress from low to high. Palette names include: Blues BuGn BuPu GnBu #' Greens Greys Oranges OrRd PuBu PuBuGn PuRd Purples RdPu Reds YlGn YlGnBu #' YlOrBr YlOrRd. \item \strong{Diverging palettes}:Gradient colors. Names #' include: BrBG PiYG PRGn PuOr RdBu RdGy RdYlBu RdYlGn Spectral. \item #' \strong{Qualitative palettes}: Best suited to representing nominal or #' categorical data. Names include: Accent, Dark2, Paired, Pastel1, Pastel2, #' Set1, Set2, Set3. #' } #' #'@return Returns a vector of color palettes. #' #'@examples #'data("iris") #' iris$Species2 <- factor(rep(c(1:10), each = 15)) #' #'# Generate a gradient of 10 colors #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species2", #' palette = get_palette(c("#00AFBB", "#E7B800", "#FC4E07"), 10)) #' #'# Scatter plot with default color palette #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species") #' #'# RColorBrewer color palettes #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species", palette = get_palette("Dark2", 3)) #' #' # ggsci color palettes #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species", palette = get_palette("npg", 3)) #' #' # Custom color palette #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' # Or use this #'ggscatter(iris, x = "Sepal.Length", y = "Petal.Length", #' color = "Species", #' palette = get_palette(c("#00AFBB", "#FC4E07"), 3)) #' #' #' #' #' #'@export get_palette <- function(palette = "default", k) { # Check if RColorBrewer, ggsci, hue or grey/gray color palettes if(.is_col_palette(palette)){ if(palette %in% .brewerpal()) .get_brewer_pal(palette, k) else if(palette %in% .ggscipal()) .get_ggsci_pal(palette, k) else if(palette %in% c("default", "hue")){ hues <- seq(15, 375, length = k + 1) grDevices::hcl(h = hues, l = 65, c = 100, alpha = 1)[1:k] } # Grey color palette else if(palette %in% c("grey", "gray")){ grDevices::grey.colors(k, start = 0.2, end = 0.8) } } else grDevices::colorRampPalette(palette)(k) } ggpubr/R/ggdonutchart.R0000644000176200001440000001127713666560271014601 0ustar liggesusers#'@include utilities.R ggpar.R ggpie.R NULL #'Donut chart #'@description Create a donut chart. #'@inheritParams ggboxplot #'@inheritParams ggplot2::geom_errorbar #'@param x variable containing values for drawing. #'@param label variable specifying the label of each slice. #'@param lab.pos character specifying the position for labels. Allowed values #' are "out" (for outside) or "in" (for inside). #'@param lab.adjust numeric value, used to adjust label position when lab.pos = #' "in". Increase or decrease this value to see the effect. #'@param lab.font a vector of length 3 indicating respectively the size (e.g.: #' 14), the style (e.g.: "plain", "bold", "italic", "bold.italic") and the #' color (e.g.: "red") of label font. For example \emph{lab.font= c(4, "bold", #' "red")}. #'@param font.family character vector specifying font family. #'@param color,fill outline and fill colors. #'@param ... other arguments to be passed to be passed to ggpar(). #'@details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, #' ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette #' = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels #' and position: legend = "right" \item plot orientation : orientation = #' c("vertical", "horizontal", "reverse") } #'@seealso \code{\link{ggpar}}, \code{\link{ggpie}} #' @examples #' #' # Data: Create some data #' # +++++++++++++++++++++++++++++++ #' #' df <- data.frame( #' group = c("Male", "Female", "Child"), #' value = c(25, 25, 50)) #' #' head(df) #' #' #' # Basic pie charts #' # ++++++++++++++++++++++++++++++++ #' #' ggdonutchart(df, "value", label = "group") #' #' #' # Change color #' # ++++++++++++++++++++++++++++++++ #' #' # Change fill color by group #' # set line color to white #' # Use custom color palette #' ggdonutchart(df, "value", label = "group", #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07") ) #' #' #' # Change label #' # ++++++++++++++++++++++++++++++++ #' #' # Show group names and value as labels #' labs <- paste0(df$group, " (", df$value, "%)") #' ggdonutchart(df, "value", label = labs, #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' # Change the position and font color of labels #' ggdonutchart(df, "value", label = labs, #' lab.pos = "in", lab.font = "white", #' fill = "group", color = "white", #' palette = c("#00AFBB", "#E7B800", "#FC4E07")) #' #' #' #'@export ggdonutchart <- function( data, x, label = x, lab.pos = c("out", "in"), lab.adjust = 0, lab.font = c(4, "bold", "black"), font.family = "", color = "black", fill = "white", palette = NULL, size = NULL, ggtheme = theme_pubr(), ... ) { lab.pos <- match.arg(lab.pos) lab.font <- .parse_font(lab.font) %>% .check_pie_labfont() # We should order the data in desc order. Because, # in stacked bar plot the order of factor levels are reversed # Very important to have the label in the right place group.vars <- intersect(c(fill, color), names(data)) if(length(group.vars) != 0){ group.val <- dplyr::pull(data, group.vars[1]) data <- data %>% dplyr::arrange(dplyr::desc(group.val)) } # Label y coordinates when placed inside slices .x <- dplyr::pull(data, x) data <- data %>% dplyr::mutate( .lab.ypos. = cumsum(.x) -0.5*.x -lab.adjust ) if(length(label) > 1 & length(label) != nrow(data)) stop("label should be of the same length as data") else if(length(label) > 1){ # 1. Add label column data <- data %>% dplyr::mutate(.label. = label) label <- ".label." } p <- ggplot(data, create_aes(list(x = 2, y = x))) + geom_exec( geom_bar, data, stat = "identity", fill = fill, color = color, size = size ) p <- ggpar( p, palette = palette, ggtheme = ggtheme, font.family = font.family, ... ) + coord_polar( theta = "y", start = 0 ) + ggtheme + .remove_axis() # Annotate pie slice #::::::::::::::::::::::::::::::::::: if(!is.null(label)){ # Label each slice at the middle of the slice if(lab.pos == "out"){ p <- p + scale_y_continuous( breaks = cumsum(.x) - .x/2, labels = dplyr::pull(data, label) ) } # Compute the cumulative sum as label ypos if(lab.pos == "in"){ p <- p + geom_text( create_aes(list(y = ".lab.ypos.", label = label)), size = lab.font$size, fontface = lab.font$face, colour = lab.font$color, family = font.family )+ clean_theme() } } p + xlim(0.5, 2.5) } ggpubr/R/grids.R0000644000176200001440000000227413115336576013213 0ustar liggesusers#'Add Grids to a ggplot #' #'@description Add grids to ggplot. #'@param axis axis for which grid should be added. Allowed values include \code{c("xy", "x", "y")}. #'@param color grid line color. #'@param size numeric value specifying grid line size. #'@param linetype line type. An integer (0:8), a name (blank, solid, dashed, #' dotted, dotdash, longdash, twodash). Sess \code{\link{show_line_types}}. #' #' #'@examples #'# Load data #'data("ToothGrowth") #' #'# Basic plot #'p <- ggboxplot(ToothGrowth, x = "dose", y = "len") #'p #' #'# Add border #' p + grids(linetype = "dashed") #'@export grids <- function(axis = c("xy", "x", "y"), color = "grey92", size = NULL, linetype = NULL) { axis <- match.arg(axis) grid.major <- element_line(color = color, size = size, linetype = linetype) grid.minor <- element_line(color = color, size = 0.25, linetype = linetype) switch(axis, xy = theme(panel.grid.major = grid.major, panel.grid.minor = grid.minor), x = theme(panel.grid.major.x = grid.major, panel.grid.minor.x = grid.minor), y = theme(panel.grid.major.y = grid.major, panel.grid.minor.y = grid.minor) ) } ggpubr/R/ggviolin.R0000644000176200001440000001500213666552714013717 0ustar liggesusers#' @include utilities.R ggpar.R NULL #'Violin plot #'@description Create a violin plot with error bars. Violin plots are similar to #'box plots, except that they also show the kernel probability density of the #'data at different values. #'@inheritParams ggboxplot #'@param width violin width. #'@param alpha color transparency. Values should be between 0 and 1. #'@inheritParams ggplot2::geom_violin #' @param ... other arguments to be passed to #' \code{\link[ggplot2]{geom_violin}}, \code{\link{ggpar}} and #' \code{\link{facet}}. #'@details The plot can be easily customized using the function ggpar(). Read #' ?ggpar for changing: \itemize{ \item main title and axis labels: main, xlab, #' ylab \item axis limits: xlim, ylim (e.g.: ylim = c(0, 30)) \item axis #' scales: xscale, yscale (e.g.: yscale = "log2") \item color palettes: palette #' = "Dark2" or palette = c("gray", "blue", "red") \item legend title, labels #' and position: legend = "right" \item plot orientation : orientation = #' c("vertical", "horizontal", "reverse") } #'@seealso \code{\link{ggpar}} #' @examples #' # Load data #' data("ToothGrowth") #' df <- ToothGrowth #' #' # Basic plot #' # +++++++++++++++++++++++++++ #'ggviolin(df, x = "dose", y = "len") #' # Change the plot orientation: horizontal #'ggviolin(df, "dose", "len", orientation = "horiz") #' #' # Add summary statistics #' # ++++++++++++++++++++++++++ #' # Draw quantiles #' ggviolin(df, "dose", "len", add = "none", #' draw_quantiles = 0.5) #' #' # Add box plot #' ggviolin(df, x = "dose", y = "len", #' add = "boxplot") #' #'ggviolin(df, x = "dose", y = "len", #' add = "dotplot") #' #' # Add jitter points and #' # change point shape by groups ("dose") #'ggviolin(df, x = "dose", y = "len", #' add = "jitter", shape = "dose") #' #' #' # Add mean_sd + jittered points #' ggviolin(df, x = "dose", y = "len", #' add = c("jitter", "mean_sd")) #' #' # Change error.plot to "crossbar" #' ggviolin(df, x = "dose", y = "len", #' add = "mean_sd", error.plot = "crossbar") #' #' #' # Change colors #' # +++++++++++++++++++++++++++ #' # Change outline and fill colors #' ggviolin(df, "dose", "len", #' color = "black", fill = "gray") #' #' # Change outline colors by groups: dose #' # Use custom color palette and add boxplot #' ggviolin(df, "dose", "len", color = "dose", #' palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' add = "boxplot") #' #' # Change fill color by groups: dose #' # add boxplot with white fill color #' ggviolin(df, "dose", "len", fill = "dose", #' palette = c("#00AFBB", "#E7B800", "#FC4E07"), #' add = "boxplot", add.params = list(fill = "white")) #' #' #' # Plot with multiple groups #' # +++++++++++++++++++++ #' # fill or color box plot by a second group : "supp" #'ggviolin(df, "dose", "len", color = "supp", #' palette = c("#00AFBB", "#E7B800"), add = "boxplot") #' #'@export ggviolin <- function(data, x, y, combine = FALSE, merge = FALSE, color = "black", fill = "white", palette = NULL, alpha = 1, title = NULL, xlab = NULL, ylab = NULL, facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE, linetype = "solid", trim = FALSE, size = NULL, width = 1, draw_quantiles = NULL, select = NULL, remove = NULL, order = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", label = NULL, font.label = list(size = 11, color = "black"), label.select = NULL, repel = FALSE, label.rectangle = FALSE, position = position_dodge(0.8), ggtheme = theme_pubr(), ...) { # Default options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .opts <- list( combine = combine, merge = merge, color = color, fill = fill, palette = palette, alpha = alpha, title = title, xlab = xlab, ylab = ylab, facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs, linetype = linetype, trim = trim, size = size, width = width, draw_quantiles = draw_quantiles, select = select , remove = remove, order = order, add = add, add.params = add.params, error.plot = error.plot, label = label, font.label = font.label, label.select = label.select, repel = repel, label.rectangle = label.rectangle, position = position, ggtheme = ggtheme, ...) if(!missing(data)) .opts$data <- data if(!missing(x)) .opts$x <- x if(!missing(y)) .opts$y <- y # User options #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .user.opts <- as.list(match.call(expand.dots = TRUE)) .user.opts[[1]] <- NULL # Remove the function name # keep only user arguments for(opt.name in names(.opts)){ if(is.null(.user.opts[[opt.name]])) .opts[[opt.name]] <- NULL } .opts$fun <- ggviolin_core if(missing(ggtheme) & (!is.null(facet.by) | combine)) .opts$ggtheme <- theme_pubr(border = TRUE) if(missing(ggtheme) & !is.null(facet.by)) .opts$ggtheme <- theme_pubr(border = TRUE) p <- do.call(.plotter, .opts) if(.is_list(p) & length(p) == 1) p <- p[[1]] return(p) } ggviolin_core <- function(data, x, y, color = "black", fill = "white", palette = NULL, alpha = 1, title = NULL, xlab = NULL, ylab = NULL, linetype = "solid", trim = FALSE, size = NULL, width = 1, draw_quantiles = NULL, add = "mean_se", add.params = list(), error.plot = "pointrange", ggtheme = theme_pubr(), position = position_dodge(0.8), ...) { if(!is.factor(data[, x])) data[, x] <- as.factor(data[, x]) pms <- .violin_params(...) p <- ggplot(data, create_aes(list(x = x, y = y))) + geom_exec(geom_violin, data = data, color = color, fill = fill, linetype = linetype, trim = trim, size = size, width = width, alpha = alpha, position = position, draw_quantiles = draw_quantiles, stat = pms$stat, scale = pms$scale) # Add #+++++++++++++++++++ if(is.null(add.params$group)){ if(fill %in% names(data)) add.params$group <- fill } add.params <- .check_add.params(add, add.params, error.plot, data, color, fill, ...) %>% .add_item(p = p, add = add, error.plot = error.plot, position = position) p <- do.call(ggadd, add.params) %>% ggpar(palette = palette, ggtheme = ggtheme, title = title, xlab = xlab, ylab = ylab,...) p } ggpubr/NEWS.md0000644000176200001440000006742313675444454012672 0ustar liggesusers# ggpubr 0.4.0 ## New features - New functions added to customize `ggtexttable()` (#125, #129 and #283): - `tab_cell_crossout()`: cross out a table cell. - `tab_ncol(), tab_nrow()`: returns, respectively, the number of columns and rows in a ggtexttable. - `tab_add_hline()`: Creates horizontal lines or separators at the top or the bottom side of a given specified row. - `tab_add_vline()`: Creates vertical lines or separators at the right or the left side of a given specified column. - `tab_add_border(), tbody_add_border(), thead_add_border()`: Add borders to table; tbody is for table body and thead is for table head. - `tab_add_title()` and `tab_add_footnote()` to add titles and footnotes (#243). - ggpubr functions updated to handle non-standard column names, for example ("A-A") (#229). - New function `create_aes()` added to create aes mapping from a list. Makes programming easy with ggplot2 (#229). - New argument `coord.flip` added to support adding p-values onto horizontal ggplots (#179). When adding the p-values to a horizontal ggplot (generated using `coord_flip()`), you need to specify the option `coord.flip = TRUE`. - New errorbar functions - `median_hilow_()` and `median_q1q3()` - added ([@davidlorenz, #209](https://github.com/kassambara/ggpubr/issues/209)): - `median_hilow_()`: computes the sample median and a selected pair of outer quantiles having equal tail areas. This function is a reformatted version of `Hmisc::smedian.hilow()`. The confidence limits are computed as follow: `lower.limits = (1-ci)/2` percentiles; `upper.limits = (1+ci)/2` percentiles. By default (`ci = 0.95`), the 2.5th and the 97.5th percentiles are used as the lower and the upper confidence limits, respectively. If you want to use the 25th and the 75th percentiles as the confidence limits, then specify `ci = 0.5` or use the function `median_q1q3()`. - `median_q1q3()`: computes the sample median and, the 25th and 75th percentiles. Wrapper around the function median_hilow_() using ci = 0.5. - New function `get_breaks()` added to easily create breaks for numeric axes. Can be used to increase the number of x and y ticks by specifying the option `n`. It's also possible to control axis breaks by specifying a step between ticks. For example, if by = 5, a tick mark is shown on every 5 ([@Chitanda-Satou, #258](https://github.com/kassambara/ggpubr/issues/258)). ## Major changes - The following enhancement has been added to `ggscatterhist()` ([@juliechevalier, #176](https://github.com/kassambara/ggpubr/issues/176)): - the output of `ggscatterhist()` is now a list of ggplots, containing the main scatter plot (`sp`) and the marginal plots (`xplot` and `yplot`), which can be customized by the end user using the standard ggplot verbs - An S3 printing method is now available for an object of class ggscatterhist. The printing method displays the arranged final figure. ## Minor changes - Now, when creating a box plot with error bars, color and fill argiments are taken into account in the errorbar function (#105). - New argument `alternative` supported in `stat_cor()` (#276). - New argument `position` in `ggline()` to make position "dodged" (#52). - New argument `outlier.shape` in ggboxplot(). Default is 19. To hide outlier, specify outlier.shape = NA. When jitter is added, then outliers will be automatically hidden. - Sorting can be now disabled in `ggdotchart()` using the option `sorting = "none"` (#115, #223). - New argument `weight` added in `gghistogram()` for creating a weighted histogram (#215) - Now `ggscaterhist()` takes into account the argument `position` in `margin.params` when marginal plot is a histogram (#286). - `ggbarplot()` enhanced to better handle the creation of dodged bar plots combined with jitter points ([@aherholt, #176](https://github.com/kassambara/ggpubr/issues/282)) - New argument `bracket.shorten` added in `stat_pvalue_manual()` and `geom_bracket()`. a small numeric value in [0-1] for shortening the with of bracket (#285). - New argument `bracket.nudge.y` added in `stat_pvalue_manual()` and `geom_bracket()`. Vertical adjustment to nudge brackets by. Useful to move up or move down the bracket. If positive value, brackets will be moved up; if negative value, brackets are moved down ([#281](https://github.com/kassambara/ggpubr/issues/281)). - New argument `numeric.x.axis` added in `ggerrorplot()`; logical value, If TRUE, x axis will be treated as numeric. Default is FALSE ([#280](https://github.com/kassambara/ggpubr/issues/280)). - The option `width` is now considered in `ggadd()` for plotting error bars ([#278](https://github.com/kassambara/ggpubr/issues/278)). - New argument `linetype` in `ggpaired()`. - `geom_exec()` used in `ggpaired()` to add lines between paired points. - `ggmaplot()` now supports two input formats (#198): 1. baseMean | log2FoldChange|padj: Here, we'll use log2(baseMean) as the x-axis variable 2. baseMeanLog2 | log2FoldChange|padj: here, baseMeanLog2 is assumed to be the mean of logged values; so we'll use it as x-axis variable without any transformation. - new arguments added in `ggmaplot()`: - `alpha` for controlling point transparency/density ([@apcamargo, #152](https://github.com/kassambara/ggpubr/issues/152)). - `label.select` to select specific genes to show on the plot ([@apastore, #70](https://github.com/kassambara/ggpubr/issues/70)) - In `ggadd()` the `fill` argument is considered for jitter points only when the point shape is in 21:25 ([@atakanekiz, #148](https://github.com/kassambara/ggpubr/issues/148)). - New argument `parse` added in `ggscatter()` and in `ggtext()`. If TRUE, the labels will be parsed into expressions and displayed as described in ?plotmath (#250). - New argument `stroke` supported in `ggscatter()` and in `ggline()`. Used only for shapes 21-24 to control the thickness of points border ([@bioguy2018, #258](https://github.com/kassambara/ggpubr/issues/236)). - the `stat_cor()` function code has been simplified. New arguments `p.accuracy` and `r.accuracy` added; a real value specifying the number of decimal places of precision for the p-value and the correlation coefficient, respectively. Default is NULL. Use (e.g.) 0.01 to show 2 decimal places of precision ([@garthtarr, #186](https://github.com/kassambara/ggpubr/issues/186), [@raedevan6, #114](https://github.com/kassambara/ggpubr/issues/114), [#270](https://github.com/kassambara/ggpubr/issues/270)). ## Bug fixes - `annotate_figure()` manual updated to show how to use of superscript/subscript in the axis labels (#165). - `ggtextable()` now supports further customization when theme is specified (#283). - the argument `font.family` is now correctly handled by `ggscatter()` (#149) - `ggpar()` arguments are correctly applied using `ggpie()` (#277). - `ggscatter()`: When `conf.int = FALSE`, fill color is set to "lightgray" for the regression line confidence band ([@zhan6073, #111](https://github.com/kassambara/ggpubr/issues/111)). - Now, `gghistogram()` supports the paramter `yticks.by` ([@Chitanda-Satou, #258](https://github.com/kassambara/ggpubr/issues/258)). # ggpubr 0.3.0 ## New features - New functions: - `ggsummarystats()` to create a GGPLOT with summary stats table under the plot ( [#251](https://github.com/kassambara/ggpubr/pull/251)). - `clean_table_theme()` to clean the the theme of a table, such as those created by `ggsummarytable()` - `ggbarplot()` now supports stacked barplots with error bars ([#245](https://github.com/kassambara/ggpubr/pull/245)). ## Minor changes - New arguments: - `vjsut` in `stat_compare_means()` to move the text up or down relative to the bracket. - `type` in `geom_bracket()` to specify label type. Can be "text" or "expression" (for parsing plotmath expression); [#253](https://github.com/kassambara/ggpubr/issues/253). - `labeller` to the function `facet()` - `position` in `get_legend()` to specify legend position - `legend.grob` in `ggarrange()` to specify a common legend you want to add onto the combined plot. - Maintenance adaptation to dplyr new version by removing deprecated functions, such as group_by_, select_, arrange_, etc ## Bug fixes - Now, Barplots are correctly labelled when custom labels are specified by users ([@sekharcu, #234](https://github.com/kassambara/ggpubr/issues/234)) # ggpubr 0.2.5 ## Minor changes - New arguments `cor.coef.name` in the function `stat_cor()`. Can be one of "R" (pearson coef), "rho" (spearman coef) and "tau" (kendall coef). Uppercase and lowercase are allowed ([@andhamel, #216](https://github.com/kassambara/ggpubr/issues/228)). - New arguments `digits, r.digits, p.digits` in the function `stat_cor()`. Integer indicating the number of decimal places (round) or significant digits (signif) to be used for the correlation coefficient and the p-value ([@raedevan6, #216](https://github.com/kassambara/ggpubr/issues/114)). - `compare_means()` adapted to tidyr v>= 1.0.0 by specifying cols in the unnest() function ([@Youguang, #216](https://github.com/kassambara/ggpubr/issues/216)). # ggpubr 0.2.4 ## Minor change - unnest adapted to tidyr 1.0.0 - `stat_pvalue_manual()` can now handle an rstatix test result containing only one group column. # ggpubr 0.2.3 ## New features - New function `stat_central_tendency()` to add central tendency measures (mean, median, mode) to density and histogram plots - New function `stat_overlay_normal_density()` to overlay normal density plot (with the same mean and SD) to the density distribution of 'x'. ## Minor changes - The option `exact = FALSE` is no longer used when computing correlation in `stat_cor()` ([@tiagochst, #205](https://github.com/kassambara/ggpubr/issues/205)) ## Bug fixes - `ggpie()` keeps now the default order of labels ([@WortJohn, #203](https://github.com/kassambara/ggpubr/pull/203)) # ggpubr 0.2.2 ## New fatures - New function `geom_bracket()` for adding brackets with label annotation to a ggplot. Helpers for adding p-value or significance levels to a plot. ## Minor changes - `compare_means()` has been adapted to tidyr v1.0.0 ([@jennybc, #196](https://github.com/kassambara/ggpubr/pull/196)) - `geom_exec()` now handles `geom_bracket()` arguments - New arguments `vjust`, `hide.ns`, `step.increase`, `step.group.by`, `color` and `linetype` added in `stat_pvalue_manual()` - `stat_pvalue_manual()` can now guess automatically the significance label column. - New argument `show.legend` added to `ggadd()` and `add_summary()` functions. ## Bug fixes - Bug fixes in `gghistogram()`. Works now when the x variable is R keyword, such as var, mean, etc. ([#192](https://github.com/kassambara/ggpubr/issues/192)) - In `ggline()`, error bars now react automatically to grouping by line type ([#191](https://github.com/kassambara/ggpubr/issues/191)) # ggpubr 0.2.1 ## Minor changes - New arguments `step.increase` added in `stat_compare_means()` to avoid overlap between brackets. - In `stat_pvalue_manual()` x axis variable is no longer automatically converted into factor. If your x variable is a factor, make sure that it is converted into factor. - `stat_pvalue_manual()` can automatically handle the output of rstatix tests - `ggbarplot()` and `ggviolin()` now automatically create error bars by groups when users forget the option `add.params = list(group = )` ([#183](https://github.com/kassambara/ggpubr/issues/183)). - Now, `ggarrange()` works when either `ncol = 1` or `nrow = 1` ([@GegznaV, #141](https://github.com/kassambara/ggpubr/issues/144). - When method = "wilcox.test", the function `compare_means()` set automatically the option `exact = FALSE`. This is no longer the case ([@stemicha, #141](https://github.com/kassambara/ggpubr/issues/141). - `stat_pvalue_manual()` now supports dodged grouped plots ([@emcnerny, #104](https://github.com/kassambara/ggpubr/issues/104)). - the argument `position` is now handled by `ggdotplot()` ([@Adam-JJJJJ, #178](https://github.com/kassambara/ggpubr/issues/178)) ## Bug fixes - Adding points works now for barplots grouped by fill color ([@elenichri](https://github.com/kassambara/ggpubr/issues/173)) - `label.sep` argument works now in `ggscatter()` and `stat_cor()` ([@sbbmu, #150](https://github.com/kassambara/ggpubr/issues/150)) - Fix in `ggscatter()` to avoid freezing when the `add` argument is incorrect ([@atakanekiz, #135](https://github.com/kassambara/ggpubr/issues/180)). # ggpubr 0.2 ## Bug fixes - P-value for multiple comparisons by group (stat_compare_means()) are now correctly displayed ([@elisheva100, #135](https://github.com/kassambara/ggpubr/issues/135)). # ggpubr 0.1.9 ## Minor changes - ggsci palettes have been updated to add new palettes: nejm, jama, ucscgb, d3, locuszoom, igv, startrek, tron, futurama, simpsons ([@cbrueffer, #118](https://github.com/kassambara/ggpubr/pull/127) ## Bug fixes - The option `ref.group` was only considered when the grouping variable contains more than two levels. In that case, each level is compared against the specified reference group. Now, `ref.group` option is also considereded in two samples mean comparisons ([@OwenDonohoe, #118](https://github.com/kassambara/ggpubr/issues/118)) - Now, `ggqqplot()` reacts to the argument `conf.int.level` ([@vsluydts, #123](https://github.com/kassambara/ggpubr/issues/123) - Added error bar color is now inherited from the main plot ([@JesseRop, #109](https://github.com/kassambara/ggpubr/issues/109) # ggpubr 0.1.8 ## New features - New arguments `bxp.errorbar` added to `ggboxplot()` for adding error bars at the top of the box plots ([@j3ypi, #105](https://github.com/kassambara/ggpubr/issues/105). - New function `stat_pvalue_manual()` for adding p-values generated elswhere ([@achamess, #81](https://github.com/kassambara/ggpubr/issues/81), [@grst, #65](https://github.com/kassambara/ggpubr/issues/65)). ## Minor changes - `alpha`option added to `ggviolin()` [@mtmatter, #77](https://github.com/kassambara/ggpubr/pull/77) - New argument `bracket.size` added to `stat_compare_means()` [@mtmatter, #43](https://github.com/kassambara/ggpubr/issues/43) - Now, the function `stat_cor()` supports R^2 as an option [@philament, #32](https://github.com/kassambara/ggpubr/issues/32) - New argument `position` added in `gghistogram()`. Allowed values include "identity", "stack", "dodge". - New argument `ci` added in `ggerrorplot()` [@abrar-alshaer, #94](https://github.com/kassambara/ggpubr/issues/94) ## Bug fixes - Now, `ggscatter()` can remove the letter 'a' from the legend, when the argument `show.legend.text = FALSE` specified [@atsyplenkov, #106](https://github.com/kassambara/ggpubr/issues/106). - Now, adding a `size` option to ggscatter `add.params` is supported [@retrogenomics, #94](https://github.com/kassambara/ggpubr/issues/53). # ggpubr 0.1.7 ## New features - New function `ggdonutchart()` added. ## Minor changes - Significance levels can be now customized and passed to `stat_compare_means()` ([@jaison75, #45](https://github.com/kassambara/ggpubr/issues/30)). - Editing pdf size is now supported in `ggexport()` ([@JauntyJJS, #45](https://github.com/kassambara/ggpubr/issues/63)). ## Bug fixes - In `ggscatterhist()` the x variable was plotted two times, on both the plot x & y margins, instead of having, as expected, a) the x variable on the main plot x margin and 2) the y variable on the main plot y margin. This has been now fixed. - In previous version, `ggdotchart()` sorted automatically within groups when the `color` argument is specified, even when groups = NULL. This default behaviour has been now removed. Sorting withi groups is performed only when the argument `group` is specified ([@sfeds, #90](https://github.com/kassambara/ggpubr/issues/90)). - Now, `yticks.by` and `xticks.by` work with NAs ([@j3ypi, #89](https://github.com/kassambara/ggpubr/issues/89)). # ggpubr 0.1.6 ## New features - New function `ggballoonplot()` added to visualize a contingency table. - `ggdotchart()` can be now used to plot multiple groups with `position = position_dodge()` ([@ManuelSpinola, #45](https://github.com/kassambara/ggpubr/issues/45)). - New function `ggscatterhist()` to create a scatter plot with marginal histograms, density plots and box plots. - New theme `theme_pubclean()`: a clean theme without axis lines, to direct more attention to the data. - New arguments in `ggarrange()` to customize plot labels ([@G-Thomson, #41](https://github.com/kassambara/ggpubr/issues/38)): - font.label - label.x and label.y - hjust and vjust - New argument `method.args` added to `stat_compare_means()`. A list of additional arguments used for the test method. For example one might use method.args = list(alternative = "greater") for wilcoxon test ([@Nicktz, #41](https://github.com/kassambara/ggpubr/issues/41)). - New argument `symnum.args` added to `stat_compare_means()`. A list of arguments to pass to the function symnum for symbolic number coding of p-values. For example, `symnum.args <- list(cutpoints = c(0, 0.0001, 0.001, 0.01, 0.05, 1), symbols = c("****", "***", "**", "*", "ns"))` - New functions `table_cell_font()` and `table_cell_bg()` to easily access and change the text font and the background of `ggtexttable()` cells ([@ProbleMaker, #29](https://github.com/kassambara/ggpubr/issues/29)). - New argument `numeric.x.axis` in `ggline()`. logical. If TRUE, x axis will be treated as numeric. Default is FALSE. ([@mdphan, #35](https://github.com/kassambara/ggpubr/issues/35)) - New argument `lab.nb.digits` in `ggbarplot()`. Integer indicating the number of decimal places (round) to be used ([#28](https://github.com/kassambara/ggpubr/issues/28)). Example: lab.nb.digits = 2. - New argument `tip.length` in `stat_compare_means()`. Numeric vector with the fraction of total height that the bar goes down to indicate the precise column. Default is 0.03. Can be of same length as the number of comparisons to adjust specifically the tip lenth of each comparison. For example tip.length = c(0.01, 0.03). ## Minor changes - Now `get_legend()` returns NULL when the plot doesn't have legend. ## Bug fixes - Now data argument are supported in `stat_compare_means()` when the option comparisons are specified ([@emcnerny, #48](https://github.com/kassambara/ggpubr/issues/48)) - Now `compare_means()` returns the same p-values as `stat_compare_means()` ([@wydty, #15](https://github.com/kassambara/ggpubr/issues/34)). - `stat_compare_means()` now reacts to label = "p.format" when comparisons specified ([#28](https://github.com/kassambara/ggpubr/issues/28)). - Now, the p.values are displayed correctly when ref.group is not the first group ([@sehufnkjesktgna, #15](https://github.com/kassambara/ggpubr/issues/27)). # ggpubr 0.1.5 ## Minor changes - In `ggpar()`, now `legend.title` can be either a character vector, e.g.: legend.title = "Species" or a list, `legend.title = list(color = "Species", linetype = "Species", shape = "Species")`. - New argument `ellipse.border.remove` in `ggscatter()` to remove ellipse border lines. ```r ggscatter(mtcars, x = "mpg", y = "wt", color = "cyl", ellipse = TRUE, mean.point = TRUE, ellipse.border.remove = TRUE) ``` - In `ggscatter`(), the argument `mean.point` now reacts to fill color. - Support for text justification added in `ggtexttable()` ([@cj-wilson, #15](https://github.com/kassambara/ggpubr/issues/18)) - The function `ggpie()` can now display japanese texts. New argument `font.family` in `ggpie`() and in `ggpar()` ([@tomochan001, #15](https://github.com/kassambara/ggpubr/issues/15)). - Using time on x axis works know with `ggline()` and `ggbarplot()` ([@jcpsantiago, #15](https://github.com/kassambara/ggpubr/issues/17)). ## Bug fixes - `stat_compare_means()` now reacts to `hide.ns` properly. - `drawDetails.splitText()` exported so that the function `ggparagraph()` works properly. - Now, ggpubr functions accept expression for label text - In `ggbarplot()`, now labels correspond to the true size of bars ([@tdelhomme, #15](https://github.com/kassambara/ggpubr/issues/15)). - `stat_compare_means()` now keep the default order of factor levels ([@RoKant, #12](https://github.com/kassambara/ggpubr/issues/12)). # ggpubr 0.1.4 ## New features - New helper functions: - `gradient_color()` and `gradient_color()`: change gradient color and fill palettes. - `clean_theme()`: remove axis lines, ticks, texts and titles. - `get_legend()`: to extract the legend labels from a ggplot object. - `as_ggplot()`: Transform the output of `gridExtra::arrangeGrob()` and `gridExtra::grid.arrange()` to a an object of class ggplot. - `ggtexttable()`: to draw a textual table. - `ggparagraph()`: to draw a paragraph of text. - fill_palette() and color_palette() to change the fill and color palette, respectively. - `annotate_figure()` to annotate (arranged) ggplots. - `text_grob()` to create easily a customized text graphical object. - `background_image()` to add a background image to a ggplot. - New theme function `theme_transparent()` to create a ggplot with transparent background. ## Minor changes - In `gghistogram()`, density curve and rug react to the fill color. - `ggarrange()`: - New argument `àlign` to specify whether graphs in the grid should be horizontally ("h") or vertically ("v") aligned. - New argument `legend` to remove or specify the legend position when arranging multiple plots. - New argument `common.legend` to create a common unique legend for multiple plots. # ggpubr 0.1.3 ## New features - New functions: - `ggarrange()` to arrange multiple ggplots on the same page. - `ggexport()` to export one or multiple ggplots to a file (pdf, eps, png, jpeg). - `ggpaired()` to plot paired data. - `compare_means()` to compare the means of two or multiple groups. Returns a data frame. - `stat_compare_means()` to add p-values and significance levels to plots. - `stat_cor()` to add correlation coefficients with p-values to a scatter plot. - `stat_stars()` to add stars to a scatter plot. - Now, the argument `y` can be a character vector of multiple variables to plot at once. This might be useful in genomic fields to plot the gene expression levels of multiple genes at once. see `ggboxplot()`, `ggdotplot()`, `ggstripchart()`, `ggviolin()`, `ggbarplot()` and `ggline`. - The argument `x` can be a vector of multiple variables in `gghistogram()`, `ggdensity()`, `ggecdf()` and `ggqqplot()`. - New functions to edit ggplot graphical parameters: - `font()` to change the appearance of titles and labels. - `rotate_x_text()` and `rotate_y_text()` to rotate x and y axis texts. - `rotate()` to rotate a ggplot for creating horizontal plot. - `set_palette()` or `change_palette()` to change a ggplot color palette. - `border()` to add/change border lines around a ggplot. - `bgcolor()` to change ggplot panel background color. - `rremove()` to remove a specific component from a ggplot. - `grids()` to add grid lines. - `xscale()` and `yscale()` to change axis scale. - New helper functions: - `facet()` added to create multi-panel plots ([#5](https://github.com/kassambara/ggpubr/issues/5)). - `add_summary()` to add summary statistics. - `ggadd()` to add summary statistics or a geometry onto a ggplot. - New data set added: `gene_citation` - New arguments in `ggpar()`: `x.text.angle` and `y.text.angle` ## Major changes - New arguments in ggpubr functions, see `ggboxplot()`, `ggdotplot()`, `ggstripchart()`, `ggviolin()`, `ggbarplot()` and `ggline`: - `combine` added to combine multiple y variables on the same graph. - `merge` to merge multiple y variables in the same ploting area. - `select` to select which item to display. - `remove` to remove a specific item from a plot. - `order` to order plot items. - `label, font.label, label.select, repel, label.rectangle` to add and customize labels - `facet.by, panel.labs and short.panel.labs`: support for faceting and customization of plot panels - New argument `grouping.vars` in `ggtext()`. Grouping variables to sort the data by, when the user wants to display the top n up/down labels. - New arguments in `theme_pubr()`: - border, - margin, - legend, - x.text.angle ## Minor changes - Now, the argument `palette` Can be also a numeric vector of length(groups); in this case a basic color palette is created using the function `grDevices::palette()`. # Bug fixes - Now, `ggpar()` reacts to palette when length(palette) = 1 and palette is a color name [#3](https://github.com/kassambara/ggpubr/issues/3). - `ggmaplot()` now handles situations, where there is only upregulated, or downlegulated gnes. # ggpubr 0.1.2 ## New features - New function `get_palette()` to generate a palette of k colors from ggsci palettes, RColorbrewer palettes and custom color palettes. Useful to extend RColorBrewer and ggsci to support more colors. ## Minor changes - Now the `ggpar()` function can handle a list of ggplots. - Now the default legend position is `right`. - New argument `show.legend.text` in the `ggscatter()` function. Use show.legend.text = FALSE to hide text in the legend. - New arguments `title, submain, subtitle, caption, font.submain, font.subtitle, font.caption` in the `ggpar()` function. - New argument `font.family` in `ggscatter()`. ## Bug fixed - The mean within group for `ggdensity` (`gghistogram`) are now shown if data have NA values [@chunkaowang, #1](https://github.com/kassambara/ggpubr/issues/1) # ggpubr 0.1.1 ## New features - New function `ggtext()` for textual annotation. - New argument star.plot in `ggscatter()`. A logical value. If TRUE, a star plot is generated. - New helper function `geom_exec()`. A helper function used by ggpubr functions to execute any geom_xx functions in ggplot2. Useful only when you want to call a geom_xx function without carrying about the arguments to put in `ggplot2::aes()`. - New arguments sort.val and top in `ggbarplot()`. - sort.val: a string specifying whether the value should be sorted. Allowed values are "none" (no sorting), "asc" (for ascending) or "desc" (for descending). - top: a numeric value specifying the number of top elements to be shown. - New function `theme_classic2()` added. Classic theme with axis lines. ## Minor changes - `ggboxplot()`, `ggviolin()`, `ggdotplot()`, `ggstripchart()`, `gghistogram()`, `ggdensity()`, `ggecdf()` and `ggqqplot()` can now handle one single numeric vector. ``` # Example ggboxplot(iris$Sepal.Length) ``` - Now, in `gghistogram()`, when add_density = TRUE, y scale remains = "..count..". - Now, default theme changed to theme_classic2() - Default point size and line size set to NULL # ggpubr 0.1.0 ## Plot one variable - X: Continuous - ggdensity(): Density plot - gghistogram(): Histogram plot - ggecdf(): Empirical cumulative density function - ggqqplot(): QQ plots ## Plot two variables - X & Y: Discrete X and Continuous Y - ggboxplot(): Box plot - ggviolin(): Violin plot - ggdotplot(): Dot plot - ggstripchart(): Stripchart (jitter) - ggbarplot(): Bar plot - ggline(): Line plot - ggerrorplot(): Error plot - ggpie(): Pie chart - ggdotchart(): Cleveland's dot plots ## Plot two continuous variables - ggscatter(): Scatter plot ## Graphical paramters - ggpar(): Change graphical parameters - show_line_type(): Line types available in R - show_point_shapes(): Point shapes available in R - theme_pubr(): Create a publication ready theme - labs_pubr(): Format only plot labels to a publication ready style ## Genomics - ggmaplot(): MA-plot from means and log fold changes ## Data - diff_express: Differential gene expression analysis results ## Other - desc_statby(): Descriptive statistics by groups - stat_chull(): Plot convex hull of a set of points - stat_conf_ellipse(): Plot confidence ellipses - stat_mean(): Draw group mean points ggpubr/MD50000644000176200001440000002131113675562422012062 0ustar liggesusers3623de723fea5e6dd76aab0dbadabcf2 *DESCRIPTION b2533964f24cf78e981f818ba3d3b06e *NAMESPACE 40f59f81b42777314ed920eae30252a3 *NEWS.md 125098a60f62c2550dfbd33beaa2edd8 *R/add_summary.R e57fdcb77fe4dbc9d71b325b47355cae *R/annotate_figure.R 38727d5ef66cc3bccf70dac7289d4b6c *R/as_ggplot.R 26a7fe18609d3884b39105579279d47f *R/axis_scale.R c1932e81cf6ceadbadf77bdf1eca857f *R/background_image.R 9a9b8226b2cc87dcd94a2e59dc15bd29 *R/bgcolor.R 114cde034f4d99d743db0bfdf5905ed0 *R/border.R f6ab771af995cf261580f78aa91664a2 *R/compare_means.R 7f17add37751a8b3551523bd747b770b *R/create_aes.R 3c44f3b36ab5208f3462c125c36a2498 *R/desc_statby.R 275ec2e7c56ac0480750a2b44a91e7fe *R/diff_express.R 7a13ee14623c035bcbee128ad3fa8744 *R/facet.R 407ce69412a97c5a250f7f63a617dfd3 *R/font.R b1679e720e5682f64dd2033a77742dc2 *R/gene_citation.R 10036c9caf3f6b0c0d715f99bfde94df *R/geom_bracket.R 3a8f6245e13d50916f83c92b385fe201 *R/geom_exec.R e3c3e70812f28ac125a37c81e10f02f5 *R/get_breaks.R eb1387a58a404ac7b4d1182f07fb03ba *R/get_legend.R ec032bd6450f01654a46bb9fd14dd2b0 *R/get_palette.R 5785a251b5fa239ce0e51f24d1917a29 *R/ggadd.R 2bdaab8935aea6bf400b5ddf6d6f364a *R/ggarrange.R cc17a2875300e1b09dd281c373040fe8 *R/ggballoonplot.R 86b918d87c3c0dd4d6bc271fe973953b *R/ggbarplot.R bebcf3bb579cc27d28e6912b8871f4c7 *R/ggboxplot.R 81594dc8eb8d2e079e2d7179813f03e5 *R/ggdensity.R 2b6433922bd9803e2cd75bf5804c11fd *R/ggdonutchart.R 4e61688716ea663c17f4c3bed4037e17 *R/ggdotchart.R e70e8fd30623b47849be38f90ac0a5a5 *R/ggdotplot.R 4eff1601481fc67086ab0fd48b6d9381 *R/ggecdf.R abcf2d705dccd2123facfb960564072f *R/ggerrorplot.R 959d9a22a249c3e0d27f1aa9788b26e3 *R/ggexport.R 24e012cbd8ed243da6e95731496932d6 *R/gghistogram.R 1d4a2ad2246128bfaadaa8be259d4a45 *R/ggline.R 9646bdb32c036727ec6aecd3e3a99c95 *R/ggmaplot.R 4499a8a28a13df610ec2dafb8a1f8fa0 *R/ggpaired.R 948b3e64fbc7752430f5e63ce2e49986 *R/ggpar.R 6f1690cc7d21face7c6b1f8c6dd84577 *R/ggparagraph.R b47478deac0d06ccb838f17c85215575 *R/ggpie.R f5c78594a97dfc8162b4e5660d92bff0 *R/ggpubr_args.R b395dcd6a570a72bd507b80e289171cd *R/ggqqplot.R cea5c13593a73c34b8afb5b936a4a89c *R/ggscatter.R 6e44afb0608f997aa7e37c1a44dcc427 *R/ggscatterhist.R e3291a3d50d69abfd97470701ef031c7 *R/ggstripchart.R 65d95474b86fb2ebea31d08ef530d0a7 *R/ggsummarystats.R 719fa516d23923235f783b420c0897a7 *R/ggtext.R aa0123ce66a2aebc2638a22237610902 *R/ggtexttable.R 95f6641e703b9f3fb26d1848c7b4f4f3 *R/ggviolin.R 8ee878cd07b7a62f32ad9e101d429888 *R/gradient_color.R ebb5f18b9dac96d34566abe36258f37f *R/grids.R ff27c5be5da8b85d52eba404a0bf2686 *R/reexports.R b5e1e020823d44ee399904f993f59c3d *R/rotate.R 4ed6e9393f5878eb83ad918ca9259693 *R/rotate_axis_text.R 345b62b62f3606dfc9371a8ae78a06f1 *R/rremove.R 70d669b417100b87627e33a0bbe60986 *R/set_palette.R 2e971952af167291c1986fe4414c90dd *R/show_line_types.R 2a9f66cdb3087b37761c2b75ab62d3c0 *R/show_point_shapes.R 1d425a406419e84f2c885ad8398d03b6 *R/stat_central_tendency.R 85dd822871eec1de68d71519b2e7e7de *R/stat_chull.R 27df0609169a3bfc272126ccd43e4437 *R/stat_compare_means.R 7b52941e7611178290445593505fe537 *R/stat_conf_ellipse.R e4e47afc5d7ce4edde3310b9323c785b *R/stat_cor.R 8381fe01c14f1860726af5af0c5c39c0 *R/stat_mean.R 8808d0a9f75867b21eca62a06a4e91c9 *R/stat_overlay_normal_density.R 95cbe1c4660c1191b680fa1ea361b37a *R/stat_pvalue_manual.R ef2ba521894cc55eb64943a062e1c4ac *R/stat_regline_equation.R 3488a4ab96bc8c8694d35edfc3f63f3b *R/stat_stars.R 1ce96e10f61c3b44330f9dcf57c05653 *R/text_grob.R 8098b5e4e0ce34a138c0ff544524f882 *R/theme_pubr.R 675f281c880755a59765703dea24a112 *R/theme_transparent.R de5d9a010939dd1b193f35a00f2b8ebb *R/utilities.R df157c90886e9e003aa7efdd32095693 *R/utilities_base.R 7d8842da561afbcc063beafe5ab75069 *R/utilities_color.R ee5da2d9755af4c6efd30d7a6af7c0bd *R/utilities_label.R 4fd516686d32f5265ec9fb8d853e5700 *R/utils-geom-signif.R 65cef5e0674056f6fc07dd2b3ca85c13 *R/utils-pipe.R 890e15041380f8edc314ab634bed45a5 *README.md 54735e15f7e196d7bb48504609e34b72 *data/diff_express.rda dfc984ddde23ce99f7f91dd4738c818a *data/gene_citation.rda f74ed0de009c0309006735d08f20292a *inst/demo-data/housetasks.txt 61ce47096380514bb9d73f2c60ac3dba *inst/images/background-image.png c2e3905bbc373a03d0c12117f0f3b287 *man/add_summary.Rd 11b255f7313c5f48bca95840c0c3400d *man/annotate_figure.Rd a2b62a95537cf433f58cbea96abf352a *man/as_ggplot.Rd 7f895ad43977a773de629189d10ef890 *man/axis_scale.Rd 4d7bd77a4fca0c1c1f70a85bfe9e76b6 *man/background_image.Rd 044b15d855b96975f04752a6b4e11dd4 *man/bgcolor.Rd 175ed36d928d3f1bb6f4cb233d6a5ac3 *man/border.Rd eebb181cc6f07a9e89115280f8d70c30 *man/compare_means.Rd e298ea356e3c9adb82a5ab432cd3369f *man/create_aes.Rd d6ae88b9eb9b02ded6db5e94edd811b5 *man/desc_statby.Rd e2602aa9dda2ff3f98d6d9698f0152db *man/diff_express.Rd 5d5886a1ad649f7999a201be7cb5d836 *man/facet.Rd 5f6008ca9934c2097d4b71dcd76ae1a9 *man/font.Rd c2a7bdea8e84ab8b18ece0be21f36f90 *man/gene_citation.Rd 6436221a58645f3c2c097eb6188d9129 *man/geom_bracket.Rd 196319aa72acce32fe21e62dfb859341 *man/geom_exec.Rd 45d9dad30606ab08aa50b974db90a6dd *man/geom_signif.Rd 4e0fe729227ae8e84328acbbc9a9298c *man/get_breaks.Rd 80780b64aab25f62f199efa7d8568be6 *man/get_legend.Rd 7a1204f9e01a4eeeb1f02f1c3610c172 *man/get_palette.Rd 0b1d646840c0db051c4048052591d552 *man/ggadd.Rd b58b1b33df5f3526a936f27aa98282f4 *man/ggarrange.Rd 360e85605af5766b0e4837129d04df8d *man/ggballoonplot.Rd 76d4a8a7188ba3a62d5d0db36c1c59dc *man/ggbarplot.Rd 4b005c01f1d43adae8a1adf9a0c88cfd *man/ggboxplot.Rd c70bce48b68db10553686a5aa3182434 *man/ggdensity.Rd f68e77eede2fb2881ea78e7d9abad5bc *man/ggdonutchart.Rd d4cbe3192c93028ab6cc0750f2218d30 *man/ggdotchart.Rd 94105cd10322d5a9c96795e47e9e086e *man/ggdotplot.Rd 3c5d568b6edeed60b3747012ae3a534f *man/ggecdf.Rd 90c9d42d9251ceac1b01a76988895b22 *man/ggerrorplot.Rd 9cf2f66bf5838f600a1914379831380f *man/ggexport.Rd accbef7e435aac5808daeaef3d01247f *man/gghistogram.Rd 00c9fab571230c290798566c70c366ff *man/ggline.Rd c8b993349404273b91db0c6c329df5bf *man/ggmaplot.Rd ecb02b1bdc8b5aee5de891092d2a1d24 *man/ggpaired.Rd 72d7405071b9ad09cb46ba787f6d9784 *man/ggpar.Rd 9a333f1acfce9588fd66cd3b2db58999 *man/ggparagraph.Rd 64db1a2b7faa2e1e20717db7cd549096 *man/ggpie.Rd 1caf5e9ade2da3d7880162b959405d48 *man/ggpubr_args.Rd 75a4ff01456e48e7dd30212d3667a269 *man/ggqqplot.Rd 8cf02f562db51e24d62fbc5c287c4ef8 *man/ggscatter.Rd ee1e2fea5076df6904f01a9810ad756f *man/ggscatterhist.Rd 93ee00bcbc314a2768d43213b932dbee *man/ggstripchart.Rd d59476f1f255ad9f9146bf0af198952a *man/ggsummarystats.Rd 3186129357a0f4ed9cb459b4209829e3 *man/ggtext.Rd f4533714819f634e01cf7b70b0238371 *man/ggtexttable.Rd 7c275d2d9cde533af35be0e42d5861d4 *man/ggviolin.Rd 97a222ce3d3c6c7edb2e1dc59797242d *man/gradient_color.Rd d1754328d307fa955a3f580d843dad74 *man/grids.Rd 4894ca10756199e25f914bfd34f517b0 *man/pipe.Rd 4323901e20ae0bbe7322d9f3c2097691 *man/reexports.Rd a7b102bc3bf73c40fd37e08fc1447be4 *man/rotate.Rd 6e3ee3838d370c79c5601e654ec57603 *man/rotate_axis_text.Rd 4da4a32f19c8b50ff752a8a94af4210f *man/rremove.Rd e6f941c6058527f25f98352fc18168c9 *man/set_palette.Rd 7fe1ee9654a94ce521e56ac65cf0af3c *man/show_line_types.Rd cf1a0effa04a6dd023e052dc0a9c62f7 *man/show_point_shapes.Rd d2af68f81e47a7846ca69937b2e6fd25 *man/stat_central_tendency.Rd a043354d8a2aa0cfc90aadff2c8f6280 *man/stat_chull.Rd a83c09d8cdc6daef1f4dcf9cebf163c9 *man/stat_compare_means.Rd 6dd86401cccede741c751e77a33c3366 *man/stat_conf_ellipse.Rd 93ac5cf47626688ef0b21743123bf686 *man/stat_cor.Rd 44ac085bfed0a30d8d6ae56c0e760a44 *man/stat_mean.Rd 54fc5f46fb00bea98ff6e45e9ebcecff *man/stat_overlay_normal_density.Rd 4bfbe8b13c3e0d15165ce563c4cc6f5a *man/stat_pvalue_manual.Rd a1f573fba00a6bcca76ecebc8cc16335 *man/stat_regline_equation.Rd 1d79f047917a242503331f040ff7234e *man/stat_stars.Rd 133484c41b74ca68cb74bd76006f33bb *man/text_grob.Rd 33ddf065abc6913970cc6ec1a3f836b7 *man/theme_pubr.Rd dd7941a6f7541c9999701585a3dd4280 *man/theme_transparent.Rd 56e2d5b7426cda4cc398dcf2cb641a43 *tools/README-cleveland-dot-plots-1.png 8ace7fff6252235a4fe70f7cb2f2a95c *tools/README-deviation-graphs-1.png a74dd9eb3d3f94d89d07762f3a3e3438 *tools/README-deviation-graphs-horizontal-1.png fc1a0086a797205b1aad5de0fb90e7f3 *tools/README-ggpubr-1.png b0e353a260fa9cf3526e7d70a42fd36a *tools/README-ggpubr-2.png 0daaeae4ffd354c4dcb98ae1d3980380 *tools/README-ggpubr-box-plot-dot-plots-strip-charts-1.png 4030dda2978efb6e7b435d0cb65555e9 *tools/README-ggpubr-box-plot-dot-plots-strip-charts-2.png 4885f98bcceec934eb0942a2cab6942d *tools/README-ggpubr-box-plot-dot-plots-strip-charts-3.png f800d01630fde18b58261c5d2a5578cb *tools/README-lollipop-chart-1.png 5acc4cd02b19f48c88235aa9c1034f13 *tools/README-lollipop-chart-deviation-1.png b8c8fa2a6e008badc1b36b5f61e20263 *tools/README-lollipop-chart-rotate-1.png bb5502127c63ca00e049c1c490dc104b *tools/README-ordered-bar-plots-1.png 0c1bc440e2a0aa74f0bc705e0c5250c5 *tools/README-ordered-bar-plots-by-groups-1.png ggpubr/inst/0000755000176200001440000000000013675556233012534 5ustar liggesusersggpubr/inst/demo-data/0000755000176200001440000000000013177347475014372 5ustar liggesusersggpubr/inst/demo-data/housetasks.txt0000644000176200001440000000050513177347672017323 0ustar liggesusers"" "Wife" "Alternating" "Husband" "Jointly" "Laundry" 156 14 2 4 "Main_meal" 124 20 5 4 "Dinner" 77 11 7 13 "Breakfeast" 82 36 15 7 "Tidying" 53 11 1 57 "Dishes" 32 24 4 53 "Shopping" 33 23 9 55 "Official" 12 46 23 15 "Driving" 10 51 75 3 "Finances" 13 13 21 66 "Insurance" 8 1 53 77 "Repairs" 0 3 160 2 "Holidays" 0 1 6 153 ggpubr/inst/images/0000755000176200001440000000000013675556233014001 5ustar liggesusersggpubr/inst/images/background-image.png0000644000176200001440000061572613123723633017713 0ustar liggesusersPNG  IHDR5;<sRGB@IDATx$gtiC!Bx#@x3Ioʮս]fZcܙۦgB& !@$%+3A>■v7N\n%'?GZ~?QumG)6#Rwm۽E)q:I-ۺN^zJmDϰ Tί7(3/O/+TmuM!U]̳;TPHS 7gf*#?S?]Ԃ 57=j|B#cݮ$g]難ZX wKUvBAxnZ#O^Mk;~IZG ،:^Ե嚛v|'`X49~|_^*;Q;459{UڼezG+MLL+8"DCoTOqm*,,VYisVS/UlcT~VoZ6ʭW\ξJO^ݛuJQUZ~p_}ت ];wF%{hl­;i/z_y_@׬8ϩ߷KVw-֎Bw^>?FFFtum`:qpou/yx[٣+ KuS] yx~֔ǥ5*T/;6gfW?l҃[*ZBn(یTZZ\[#^UK=LZ3~z7 5ʭtgZ^k UyF6V:?vQƟv|OUOǠwhK1 ?bRe_}[tBm:ٽt{TqS9]]U-K/?Qg*ܰR#=)Qr`ⓢtcz,Y0UUޒ-޾FQ]]x`^rYaOI6mZ~7*޾Em *?uF=*]9R\b)-kp{p9ՊU?7n*>%FWÛO-VJ^Ns*Q`ynSYi kvVOڵ^Q%ڰ{n\* Gk`t6T -+YwԇS|BR`8K4Z\_+&9Z>xBc@VhhxHkmGW416lSW[/A% U_Tuq]d+9#Yg?(=/K9 tVOokiݮ =\8@|C49:ɽkǻ}-|\n]QXT gLk]wwq_+行a[Ϊ'YXswZQqQ[?rV*ڀUPMi6Я9eE:5?C)[ViM3nu+[BĤV=Ֆ8L,IWhhwQ Ϟpl&YW/^SGS y VKsVp~Reu=OPLEu[7?}ra gt]P29`^U; S-/P-p ASnЛa=2pbQX@]>o[$ ]9~Jy){uy6&vE}vv=Cy5A;ihT_/ mD# $((O2_HBA98?pF473!w-H6<<%p6Ƈ̹xkl_3SR ANQr9A~'كۏ#57,N6 AY} ?&ͩ^y70@6y923i <3z8aS K@ϻgy>@|/'`/AĠB"y3 T3]|Al>r:İx0ПCqM9BB"| \qv2<8*;21΅{A+N`kge/H#2 \x^HC̼S}d(-sWhT,SvPƇ4 qNGhk~=\^ޜ C7*L}O>Qrf 2b9A%2禕zl^:dVݿz[7S֢, Jjw^qVf($[B*@|5 ڴi6S2;gkJM,qo+>6PgrTiZU%˔_08)+_o:[>Ѓz ߸w557nNpFu꫓Zzo)Q;dAe.Hs2¥yR2S0K[|]l];Ty2^q6gsZy(-k5ѻL~AZy=ϓ75Mp\spZ_h'ҩ\{*wQ:H˩+ttft3fSR8|JK+61R[ g 0GuڙjjƷ6Ueaت<(\vKMQjoR\ksLy $8VCg@'z^i 3e\kJ_n]ַ@|$kuZ]\LɢDSVVn\U r lA{?xKk5f&A},ܰ\qѺr2hmf+$,P_yH8Զ6±r`?h&H iݎ֝>\U^ee9I0}OÕBǹ>įŧ%wgxJPJUV?d*es=z~ﹶޣfe2 :iVws_P)>+SKHɖ$_W~8K ݩE Z\xҨj|Y;׵r{<=}(js?6h"ٗ3ӭȨp^<&СuVvGPPw׫h{Mݟ1&j|d CMWWQFi|_ +4lDɤdsg.*>5Ai: 1'\ONPc] Yq]uϴUAd%X귯Vj >`7/HozyUtY(B/'jՖMznJv>@d |e'OM̫h#Z1!-UsdVQ=J"fukZ_jޭ*?_ΫS+7mPR{L_™R¥((ji!r=r17gqR4?}޾~m<@4ºq||mz7鬒3M`ekZ o{Ý\P \sU =9;PRd&yQdu2{VÓgkdI6PJv2rRUq:⩋WZ U%Y˳WAj{Pna]zhfJYnP=Uh9e.ƆڵvMLe-ELb(nJA]wLroᲕ:wjilp^vv|=MQ_գJOVc<{6ȑ\~p*xPϵZ xD 1ҨxYQWN*X@~tK)S5 p/^WSB2( ^\!MtUE7sP8 ";gb!FP-R8U"U˨aG7ax ef-h?ȋ=(`` 1~8DV]/E=GWuS6èR< WϞɃK%[^`  .O}q7CJ4bLjgXLj$;$㔛X-m/9^琢(INݻKYJ(@8*sq_v'u\x~O~Kh[]vЋ#.gkMDJV0{_Q=Ő$E*T/xR~ w>}WӞ 60EEdlpc dORʕ1QUu۴,3lá7a њ?~<^zd ķK΀4$ ScK,z:9~m10M(CS5oK9@l߅ b!w&9Jtұ9dM;([uÚ9l?l/(5'].wV "`_c@VqJOj~V)/|wB8dA/ćs<,E 05a b=o8H"ccUq&ud}' (AD{t9TkF60Ȩ؄dC <څ?+2&8|H)5іl}LF&(?$JLәo'>GM'{ sԊlWXLf Ԗ[.G~:P Բ3,F?*"/\x݁=V 273F@LĬuړ+9S~YJu%ZOo#PFU41$8zovelLQ{횆!srlnE>1Yp M-G~XAiglNחj$c/]Nikb|H3|HIsCPI-H?gOurqlhrrϨiFR[ n7$gR,\}o(o^2qztTWN]Ү9: Oۿ~GZVq{IdNSr45=AɒNiϧoSjɁd!pb#-Vo+&yVgUDA\S:[d R&_Pj>(ą~y~kV@zr8hR8Vub%3ӳMxԓAiFut"!YfAjx:(+p%۶ 春T;2dʻ9oCrax\ޤ v20׻ "+PS6sR@bpaԏ)c╒SӀ|]SFG))0LȧmGvY_4VȷPZ׷Aݟ];,; 7CmM]Coz\Dãc8^Y Z z@r$i6 ]S,<(Eß9ߵ8O?p}=hdmMt2 m*Y} <=`[;q&D)ʩJٿF]]oʀN-/YGO+:6Oo[G)\ 6? ΏߖnghМkb:,pw[ ǚHD:ScD- ťF&RB|-N1 ݩ훚 )D疟ovUp.ZzYc4oPTZ$m|KuQ#ŐV TTPÙ8LMAaҬy8>0ZȘvDamKxA(cSR!AZ1AQ.://2z}-C[**ZXdv|s  D%C[1`C23ZZB֎qSΐM3GF)UKD@S JWmw2 *jksӔ G.|.];MOqd%S\EQƴȢ jPNDt*O k(Iy  5>8mC=p$ilFY"K_V'D1<dpayǷ*@}Us:\PVn.& @M2r)sH *zBe$5tBɽzBJFG!mZn>̋nK}^޾G'){ɦvȂa,1%5ҰT =$mZ;q'0 g OA \8C;Y4Ɍe!N\3M|oչ {q-CYAҙ䦲T? -[ORIn`AY"'W8o!11M6iWΓL\^Bȶ54Pd*4փ;D$eZ|?)JJFеqȱ7uX塿?kd.2ez;p Ar,BPl}IR027~-X zؾ䍰zQvnRE6 -&ay rP`"4~ˆ^ ӓkslCbiThAQN_,ҵhvDd –3p옒v8p/ uv5-Z!gUKGa6ryt>Q0δN'Z0iu3zщHh;DGÁpƵ~k1 ݴQ\Fn#m1tiʐ(tѪ8u`=αҳ`7Zx[eٺ8t/{{kTaHQww4݌E6b]{/~'xGEY[vNB kqjlfGA9IQ -$8VvlDTLbub6 )-s9bʹ lAWuѪZiČʏ&y^ɡ 9z d_Q<;x3c?ùs6yCuN'g$fi%V|NDCiU•TLF|I^{gg]C޸LJC,dƁxMl@ʳF@/=TB#:@'ˤ| *d 954`I0z r騄0TZ; T-.TPN)S<0«'!HGnc5+k4HȐEȨ&jȪ&9@?GGt<5\N@ F ^ÞA偱I!l˩ߌ._Dh!;.[`vK bi,R\n:ONY\ZwU0;S5mΙ`kY$`O=yRVnYkiMhE@ss&xs&[ hx K9EŃAb&Nj2xݽjCMyMHJE,X$Xǒ* ]85yr|:6)2yzy=y/C>9G-r{:Q$g.ƹZV5Ɓ rv" gCbr pz0̚4kɊ5:Ë`DrL1͋am&wrF:w`WȇPΓ C6O3B[bZ -ngoݬSU"#vR)99c|3 yӎ wuooW-6hnp+8agp7w9`e$K֭u1Ҷ/)'PBVE4 p6k"DI,^voyDSӼ_]E&)Do㯚뙆粩=@ N1; لns 2HQ,j.\翦3V09Z^>LmSEd %C"KiYk!dG&Ah0 EK"1}d,*^ Vu8] ́h7ZՎVPěg;kЗ4xߏ~AwcK󠌘3L>0mW[ͯP !r(!psA& ( MC\sRf5&#,}$CmyϿg"Hn*@!P 6PlS"$<ajx)kByj :9i>(?dV,Ó`3V@| \v.+ǔNsisu\1NV.AK0ptr(Ղub|3s=]tZ>1Ƀ vtݝy}@!Bl]>tlgC7W;[ܝd%V%?|;NctVF0dtogr[KHg g֠9t&q2)h}::C$h+ Y |(:s5@oHc~Ϧb NY2j%L/+hwJL^N|sg( h>pWvC ܉ ;srJg;Ɩq*ӊDK!-EcD.DOEFLpoO.[/Q:g"nbiדyQd0iY UK k$By 8qb |U313xG/Ĺ JU^pF`3q1L~vtYۿ~munC!tdQߪRdߧ՜@8frW7->jbF|UpBT@G 36tn^=xhӨs A4TB ՘&TL)=yn6JNwZAi 2mI ٌc ㈤n2ixt==. ^{$=]:Q2%i˃JLNU5r_ϴC>U2Je/PO0?$:') T[ZLDLtJD)Ѥx'EL"DZ\#_l.& Vr~_eKչqs;{L0e&ԁi6>hpMCplK _EkSbn!ma=?3 /޵U 3dkݹdj&^\XRV:e~\@Dvd@پMC MPYDLJOGl넉~ &LRYWu/K`f' W#͇ 2z"v3IFQӹ0ʡBL[`JjL3F{nRZLuQ'<Dm J9hcŌg;QS6RlO9˅'g*F_Ȉuq?o/0۠h&->)6 J y s>ep&9ÙQ~1 &-\m![633p<*Xxvd6ۄ\\cQ1i?ʒzt>- lӬpP6b qhe#5#ld$ }lfsQ6ܭdSlN!k(hbbǡ$^5A3{y9{08TvQA]Z_4jfQTՄMhkA!Pު"1l}=I̔!]W^G}1Vxl/ mdjZFO9d݌@3G´P]Giےp0(JY͍7~UǣҒ̸ddOžZu5 0}Ő Ҧ'n36þauug l sa6ri;4VPHt` dTw?A BhO 6E.tYn_2k=@QwqL^a`fpZb*k |P/_ #y+hf g';zOɰECD޴ #@." gG`0K#G[ٻ:5M]'0;k3N98ǴS/lhݲbGnyIG!0%g!J&Ŕo:ͷ,y c_@[ic.ﱝ硟νܠ_i5 )zzY4C~vq?ଜ%YZоAz@dcojnS0.ԟY^ 2λD l8" 9(]| H9{ETP2ylH`kh022QR+`EO%{!U{oXƤܰNĤ!79v ̭Giftd" d(C\֏6j5qSSh1ngR3±HabӞ,>i2qlh ≠7.^fiGP47OwxkokƏu7$'#O~Zd_ck#N /ji@fa?\Fh#M} EVә\(dJ3h yT^~mZE#+*TΒlKu)fhuDd3ݶ<(߾CKKB:޴jR|9 9=o֢7]Y sA:ӬSlzL)jRf}Ze~}LF9=VCǥLm$;ыОl:ppa1)3;aG|G!P8ttЦM6ZuՙZkn ATctsQ:g/nj"ɀq ' F ˖lcҵu## Z!EmFQ)YzZ^a\̷+)6X/b{zP nC\Tnu9Jv )$Ǹkvk<Sj;)#N?/b{֑mxgJFt%*[JL랽)_xi%ꋗL !qYOV;WEhUq*u{:-˜h^bٺ@6}74t`oo݄6ƒ1OQɟm>i/ '-=T.! ",fƉCiYȤe$:i2TTt' `} k{銄UWA a~t=`3 o93=7ȈkLIf3,JƦǓґts )Єt3"kf~oq$/`iM4YܚH`Nu`8KKJ( ḨyHnњ݃ .L]iuQ4(L40)9`gBhKGY;8V]%&ZAj=%b=›H}Ha]tJ{E` G Bԍ#(;̒ãx T' H|kuS-3#7/qK(=*k|р!ߕ@IDAT.VlP5&!V|O,Fkɿ[^@v'-1Yc6͐wkd (̍h=8}/y]FGDHvýIT llB2AzN7_ѫoCrx2`2Zoz3.}O_jѺּͭ LZzY5 eJ$$^YeAIPd]Z'm+.=C1Li),gzR8'Zn=RK!9{`PB{vi=t̚AP;Zk#cBD O=Ѫ/ P+uE 2`͵dmcX]ᅪ aLgXxn;[ Mf@u17F8ݬ# fFXD.{65x-nciIO8Îϙ(KDC2yxy(t@Y"5=Y cNUifw/;; JAנ@0ul 72[iK]E%9ߋ!2ҶClsz\%i$r3q~?޴v+<% r UcF͂^fgW;D+1ќ0y 1A7g-Rnt__ R#c<\f%Z׋f=CvkEaF (N>XYTeAt^)fY ;I4$1 Ȉ6*h@YJ'uJu{Z(щȔ+oAM03l׀Ӭ66^Eh ï he^|F˭3Kv1yTоkV||6U8vW h3/'1?Ss? EVϹCR%M,MgZ{uD>{efN!\;ц.2ejK>3sju/˾*姠 `Hnϻ?cݿ@HI?_DdO wkcW d)4pҪ`Gw*kۯt?ELr浈 2qaf# 8!s0 L:y8A4F8:pDe,/o,L[Yc&`yfɜa[ða6d3skb^={1ĩOs.>L_#k@,c,2i6-1:9~3S;F7*aaG45Q0qb)yHktzM:@Ǯ{ahXszFOfެFcF]qhB؅vxE0, "<])s5P;bڛa$9jﳂ%#gb5t{^ZnmVG 0j\b! zJ{#26aF~thW5aqn:R&iQpoEYxd7] g. r3Oix0O1o[]Ö,\Hh6wz.2alB–ỉtY3kiV){#~LNbUNc}8ETXyl7 ~_}`h֘饛PQ| 7? G|}PO;wCP&^D2x&}F:M{DUDd⋖xfţlD4K}C rNeƋ_3oPD $l12f4B_^%nD8#|-O>CXEss_=ctw Nܹ5=`]#6U8[,|"u3n~ rd.̆8p$!OkXF=y |͗~s ([@VLǥS7& ƭX+ܟRR#Oc$_J-Jpi֦5^mkz1'1#z$o:A|gOޣbbmyz Fdڡ qu յet._QB@sQz{FHCb֠S= }#3;^q6JYtZi[;{ P,-u1Cv4WA FmHʺwZukbزd`튛C0۔ށ~:% Np'j4t.8..,?6J/HAk ${ľ8c$dء^foKy|]]Z7?RFehhѠ '4 4p[)?v!4*TK62&rvC.`Ă8M6h As+R⛒E7dz{{g{> ?B‰ؘT* J0Y 4I+DkLMk2V\+@4O 0zR dѲ"~X {lلH,@] M|%]B"[N{5[mqRHN0mV q`)?Zՙ'`͘o~μYoa$unjff@ mtۅ*j@3?$"ALew4Ği#7}O0-YRF¨(L67͐9#qq:=PcB xȤ]j @d2MV4cFjjy>,f?@"qZ5tk4)zSqAsEL2НWxDd1$QXtK$' e $6g45Y3%$FZBf&{4XpCZ3Dn - D؈84,o,nicHZ qՖ[ְ$%zc^@i _j>Z2LY?}=!+tD^'&%ΖJЇ;7h3Ӂ膀%PT Ne2[rKkM^|ϬQ~b3$B$qGR{XyJ翻L>|:1 Lׁd.8^QlaE&*6?ux?g"4C3(D&'|,t}[(uwE!\tj-ӗX^Ԃȋ0mT%76n &E@$ UڍkiͩN"31L݃9c>pnӁnpȾ,eS17.umn>Y 6!f!L.?dއOeōތ'J hgn0S&esdڀX[7>ְ~ΨJ3= y̰ 3fg٦9΃?"`"{cK%Y\4.o.ʬ]pZ- -i~ 71̜ -I.ݔX R~Hlˌ9p*{,^Rs,!A&-Z⚘FL3MD1ctA4(XB0ސ}/?E,d.^x,27e 1Ee7d6ra~pR !6!l |ㄸ,s&[ Cj7 )V y󳕜jܖ*o1 .Kgq~@{Γ}Z?iR1$0UYWNe>?L%缟 03Ɏg2?5Ũ>L>=w0{Cx::Zc6j~pXL 6=c".v4%㾴S#1Lؔ5Ye1  s?M;FAXc8^DGB8ALy s/'@`Sl1q Q'®TPq૴yĎ)Y ΍$N"5kɶ&Xg1Um)M&Pyl e\q^2`E6n/anWԚ U;6TւbІ62qk`&@MAwem9M=3.S.c؎'%Y?wM9YhD& ܄B6(Ad )ӟ~DDTjg)/u'أ>4 ̟nZ3!\}A^Dq+c "A5eD#wUN#kRtElS% ԸHrذ=2Ӡ}"&oi6*9@a^0F3 6Xcs\'u]$q1[ۖu#-Ј( {0d˞'㛺iMV^JI2<֚uat·مPTs̘E,wPgG9H@ @Hl[mwggwOU[jkk3nٖeeȒ! r9縿Μ>=ypu݀;.$3 r_t Kj)8KQfȢC!DŽ"U#ؽdNaaC.M>_GqRԤW۵5ud8ʟʴX| }|ZeaA[4il gEZE8\Jֱ̚A>{6Y&? kPQ`Iث%3/0U5AcΙQ$`] bˌQ)٨gu&}ǔ \Σߐq.N xuupfAg$٥ٟȲBj_=X94ܚ)-wK(}kV%d` '^~?<Prj(8y x<~()@ 8[9at&Y;WӀ3E%INZHkmM;ҼUw7CVodwA<ߐ%"4VHb:2s1awzaB/H{&;n]meQqxy(ΏX͒ QP$BL, k~0j$seH("ؑ4CD'J:?=&wa%m"#SHO@)38wnV!#78t@H۟`L[K3u7", pZQ;2 E,1%J?+@2%\bG_\P5V"=oS LB s.(3,.7N!yi7*PJZMX,όȼ p%" ʹ򘨌㋱Wg0 '#0NBmA*l/?G)w^R9<T >AG @dT<R\gٺyI[K(aMPFp)[?o?OֈF@X=·g=H . þ pk& !ArryO%[33R8*nk[zƿǯQ!ķ0Y(<=4!mIzsΛF{ŶΑVSF HIn">*{@, RH3˻N2dwv;8 F*+·*)yz1񓇳 d k"i/ חS=c_a.ؐpE$Hd#UX'?~Y倳D[Ƅkݫ>;MJK0JUJ;0~4W%3]9Yu %?9l|82G.~LNLlTE0mYH+]nGeB ȽxDzUgv3%$Ђ`(Kyxlт sF3PWɤ\Dt3ʆ @tomP 5)G֭@۱Njn2 A tR&/t[ƛQwh|!*}"kQ1ޣdhY"}w_h=&9%L$^XŪQpfW~DWyse(P6-YtrbR+)OU}>-(Ĉ8nl$SXAD %pK(PmlߊQ*|V[8N*DuAeFDRJ%(lP<`[~I{`$@2J4cO0Kf!' MTƖ xϱ+MVOL6`%=AhC&ʗs& Kǿd*L)ⅯhL+zG561xFW~p>TD%X*V[;CN\ik/NʮdJv CJpُ1Nq&ӌx˴NWB)?EC#TF@YUdB- 5:;p̺Ƃ$l0>}aStޮ8'/pP2z,N"`$w@a3略#$iRJ!S*J,T[Oԋb ?/_QSK⻯3"JPV=* 3+AƑ8m/(+x(iq DV7Ke""U"114Mp#%n'Xb&ɠS0}#˴ÂqdY{ ~ @u0%Q6I9`w. /} zpsD-8~ vkTOȔ &4.SFezgȨ4ö1بZ|7Hevʤ ~mޗ-H.kK&-L\8=R]ȟN#SfKIB[WOs/mGw1r5R}ivIݿz&0.u?k31I{?܂87.k5LЬ}QؽQZiE9|BJ=;ynƨ:z0ɭL1NTRd{pn 7t؇jzwR>?+e072(ݍi֏cQKx 4cOԲš$<'d@ S#Wq\Jvq;NjȉWepp'&T٠h@YhK"+IyYC}r06%Ztt(ɰh"۠uoHg_?oMG*Gn B^2 AD"{Mã"Vh]_y$Y;\CмPֲiX\'=ɐs5g[BųOQuo[3x e3P1*)iXg*2Ҝ-#V@n#325Aݑ;dh< 6 u bݔ'::cS)7wq4WV1DS~N,ɓ_2$r+و1"i甭a/#pSՆ='{=cslゲ ѮO171)dL=G5sP޾~I tu%I@Rz!^w[ A/AGnK~WoHw0 *Cw}xpQH7= ,RAQ3 :mjWuvh73¥/D%$L S2:IV=σD/Fp+EJvޟ^sL@ס.&At#$[a2:i U^3&C 2g@yAC}[!zcazY'*gDjf d?riGIjAF5>;a.AW,zyYӝBlF2ADnQ cV>%}~?Lg {$Hi%  ЧSBY%|(?6iM? :_k9P\aECiDaX ͪ3Qqy9%xÈξ( O|Y.=u\Z2b)8&<<.]I @\4Txy0xO3ܩVdt)|"ꎞ=OaF0Ϧ8Q"ʁ;ْz2ٯ>_nc I!Fd Ez'7RRW칈Q#~euҺJ N_S> \wﲧȳןBpz>}$d7_blDNDrL5BȦR7pDrtsÏbw1، n VI۽?*L+d ''ҙV"Q-2l s[wukC#C٩Ek=.stC 8 c[ZL7MhOٟb +fDq(Omh*hU9ܻjYTbjvsYmW,רl-x.>pp"a696`ֺG>*Eյ)UYz:њxJ/BUG\,Qk8 v|G`O*;(\in~wj[po}eLb T\~9n7/4;23Yc[%,6e/4Ӑz+~x@G'NMU /`8%/2(w'DR ]>ӊLedF1/5 s 4ZkI !سƙTԛWp@80 >~H3z[A)}a-$!MdŜi1 M 9H,mDJ=T0C!٨YL&]V39W)q(*/Yp-b&Fo_2eL4 y4~K&>țWHfP"G{L?Pݦ3x`\88rwm(Ռʾ4+8#!b:)2u| 22i|j{&ۑPٱ(DŽs.p#.0ZeL'G=g~ rL4|/Y=6`UG Ш>~'H"g<4>41S|-D0&We QB XEWсm5VӲJpDy2V{B5|8tA{ALu߅g:ĂЊJ%2OT,Ӱ{y; !bR~WO 'N` ofp*;Ȭl'֋ꭞa810ssاR=%\pj@7lCpo%l[`NS("UҪF +k {,R  ڣj鏷ԞCT*|RH$9ݔgNJN2AӐR sY sn bdo#!u;XcΎPj!ĚUS="HdLه„/^Q>\+xB^dB}w_J&#"R# lvu` !Njp@joAzKFl$ WokwaC篺ZBU;; ,iYm%L)obLOu1n#Ce(!Gmhx uM%K/Ϫ$kP@wwk8;2N\a> XS-2$H3^-x qjn`#> :vNhlLlGKb ~/;$ɛ^BJ##Z$Fzy^^$~nyx~&I mډ=&&]z׮}"A*K:Fbw욤f'P\k*k3h0\qKŽls UU*|ǞLw3mt& Ш[aO{A!M#NS&&`X$z`^ڊE8Ke,!ʥR #,+]TՅӍH) qIdDx* *.+l'En2Z{px*537!ʉMJ`\Sn4N#R27Q);'Fޮ/EqA]Ŕ3ޥ@FnusDf /)W¹1FVh՟]xX7a\V2U3%.s]Dk m@%X$ T>= Yk?譓6!Q\PVO( rX)wEYqEq '@Jʹ'<.J}4WY6-=ef0Jo[-]j?̻N* _Jjt .GkUض6wQBnQ_i1ƍLl,UY'bƥ$:0 ϏaSV6zYVme kjg TxLЛޛ.z;;@"Ae፦Z+f+&bxYv@WC0&t9 WS'1(B4`ҷ/pvuڕ{QvPzԟK5ZUE,eӺ/߱+OE(NǘG//uv Yo)hY/ŝ\4> w)j6o[xTz#`i7?@NA, b04<Yn^HA$@#m.*g0`՟#^']wpQ$*|LfIjƩPVԿWޣc/K6 ( D!>=,!=HW5YMwĖ4JnL6_x0;qx;KT|ȃBXtz2Q<%bZaJ%XZ9fGfbVG=b o-X!P;rӹ=4@=N;Rb6AI!gB2 _ [ O@PABt!.К{, Qo!=́/% Ս_%oT|%F) 8,<Y=L22ԉO#wƊ^SLx~m85"к!j@fV(ɻ(_o9٭S6>қw,ĆjWwܥyv@s.57[b:wQt/@5o^,>me1鷲u6cy :;H:hB,ߧh5_TϠ_\f;<3)){E{4CJ"xqW>jCnf3by.p(rRngM+#,ZKj m':!!W3a~]wD=Ѯ}E&QI[:c[[Dt/:{b&Ced= ڝNLm1 TČAƈU XebSxyNPwg"\mWz/,',G;\G)k˜ˬqrd-!ǀFPX_2EZJ+ BǧHg:͙4>~.06ٕy5Y+G63cxD ]N hMƟ%Pzv\yfp, ؈,ui88 a*1Kf%:a QGcrgģ72 .+3RFy"ip\am/DM ImogD0Z& "Sx ³XtKt4~!8%К,qŎh;rWKXS]繈6Ewb!ӄ-xSJina.x@ikpYJ2؅=dHV}{аk b[{ԣ"$)wFF j 7Rn32گ|2,{Y8A2FpxdC(qAfWbb~.;w鱇L{%s1L  0lJ?D[P_F +XcoE Va(KLW&gfrlQu1*PP ў:26S 0aIAHe(e-/L "Q:Y L2 Vq,f`X1pFn*)kz a)! Albnh0%hJR&e3\mڏ;YK/_TBw} !C\=,w0B'XJs 0K{~rD\ĬmEGET -B#޳ tvEEqowt1hs'Vh70V>9LaTV*z퐰,ɨpٞD^޽`"IUɂPد'8ʗ)5dj/6w5' K BUL>B>840FА8ogS4 > P-f??Dߋ (“x;[߫Wsx_dgz5x h h+1!Ỳ1Cψh`Vh6h3\dZ GYok  vF v#{C/7`7YNӿ&TUV`$Mpjnחp['/ LHb>!$bxv#wX6C@cb~W@V9Xҋ֠9pZxNXQ'>?fE]mtbFw?죘-ՂeoWV-NRya1`] mSTL-_* !?!V+kK؅&)MLN]CP=<<g4F5 t̸Ȃ\6h#%#_a D1m4#Hĭ;TS]-8>k^8e'V^W~{nL&pZBΈ0dIT֥OК : +}!S'FFͿ?`0 ՠU92!5ER`.'1UDUL/0{!p&XIJb]b\"A*WsmNMzblIPa5O{le8]_e8/JD}6 R̳_^ۥ$sy,] 'X\}cVHJ\QP~[P9(%oHS繬c>8s98#$d'U;0p?/1 ֽA'],/Oot]Fmrۆf9zx+.FdDgo7U9JLL+J GdmD{`E/nT"Y5 4 EE@%\W:diXX\a rm_@x ZO`7NŴE̢Xg!pV53UA6 .U;Ѕwf$`$JfLZVuuS!e$GÂaa m#Jdrq!#VMn%jxmR0F%* h/?<KB2Ok`Z]_ Vv0:j:FbWO@ONbLY.T̤#[ xa_ k?x<<OP0E+1;>\ɻzu'%{%FP0,"?G?$*Ψٷ90lM0\3#!M (ƓՉG5`.!,,a|p5@s :w/9ټg 1)`Z_ 569tcFvyBEpf6*9=E wxdsRa ~]ڼ.E@&xt$NUǤ .j7`}MT6,ZD^ơl'"񽘶d 3*{!4?_L:!%qɀK?s{2q$L@KqzhdhiaXhKn)pN͂3QCp=ܼږ7Q2&*! Y -©w?; _<\%ꎈ:ի/s@IDATRpֶ/1k.eX%.Vyp)@_d]j_SΝbJV?0G$ @(}Z/ objN۔}hFeq>cuq00pj [  CZw%P(&VTKAؼhӎiF*-c=B4 |eRcF2"+B*2&Kbsw|G9iTʞ8Ջ3J:{锖B҉EhD2{y{T-qNb $۲dx٣XY~1/=g 0"9dnܻd87c[Vϝa!\v2ja@RCظ>L~ (o;SN *d!0`߁:v)H,RFCvnRδPi9{ӎBKlbB2QzFĐB0CȃU6 m%t L`ʅ VpwW".Jd^UW& PwCE}WzC}K%~}5F.n|~5aAݭQxfoYXQ|t`H>-009p5DqDAIŶN^.1{ ڏA=wF~O7U}]';'P_#cKx+ ߜL%TC}/i _ )i( 2@y-UOBa8HMkfy 1!TF8䥕x V RNQvIaۓ>H6U=$+TvZzZ>"#T -Af0ۂYI>&zbLfgGoU?$=NR _&3!0{5& ;4OQ@q_RNUSa;US(Nkb.tM@H ,LR 0o?3-ҖG DG"Vu)S̆!Z'QZYTV[TE +O\AdTSUZƙ%%صEY-pbqe2zzx}';σ>B]H)2Ik)݄ZFd$YydbzXGYe-+p.3aGu T\;t<|bF\> Red^4Ed |' i<)hiޢ4pn ~߾4#| D1ba඙"HB&:H*bn:cv\)e'F1eoo&t7Փ1HN$4JFASL`H0! Ğ@eߛ:23`} + ^:0ǂ2X Aj :3X\r@+]߇ b{Zn, C´ߌL?$ eڹ=[}D*IUJ'z#e  SS%gLfUgS}_+K s~ Y0  bR~ƞ[,h!,!]h%Z5SNe٩ e_ù\vKLU!a"(b"oH(љsMx#men*}$SKH/`Xw<"")=*.WoMy|SAJ< Vʶ~hƜ᧌{5^1̔#fG$s #W֯_ޏsCI`g"X1F}KU"}{OągVU߁)> Y\E5e| ^$D8G"1AS7"QU0- :{II'-7.Q+`1i[=BQ" ^y96s7E]Y&H!!^(Wj*ި=99:"Ŧ)D(s5eZ,X[:kw1y<sOzk0+37jh3x ]Q?!Ƌcx({OzO,N`rӬB`@ D%*C+ţQ6yY5{ᦫwqYdl&3v{ʹ,&!e:p%8.38ʜ'U F~Y#ʿ.b@ϻ-TR껃߹w•s&@&`d*U~Kb2BE#,KIg2峬"^&b5Db&;;, v+ Z#U,$WwW)A"*@p]K(ƸTjYdw͟(<,-z$!:ŕ0jT6@Q!bVyG⪲dUT` M,‚?>RV SM/Ыa_j*ZXB(d1x}ǒ2{< "#V+I%gvĥEv X;XsF!Jj"?O*=355u5vivL! 8a+<:K$y 0,.@91Iç/}6=~PK_it:`Bw E1,A25 _oF-A3c$%ܤ}w[҄l( (OFtBy09EC t~ƹH w_);n.Ms`My %&H:FBE{'EU(ӺWMpAS0C@?Iu|x~J pr| S>Y@Lo W]P@}ȸ"oKJ&s-iFg^WB/񱬧]&P)dSC+t+\ґU# k`,.'LAkPq>W4VP3e_dz+> ;1x~^uؑ2u'L ~.|M% K6~-dUͿȹ\ہ2R92rE";E4lP32;NT0A͂yzh.R6ɹ,ÓĎ؀Fn']B,ՓohLNՆpޑwM倸r`|l#|( ϔJArt]mR99}I c=܁GV`o&F){; +V~Zʗr'!=U[ vYHe uKa(*_'u5|p3R\X/Edڛ9bEK頮xٖvjrn~yD hޭj.mT[0sEl(M^\ mY @U*gt%Ҷk/Q^RH/KlJ(꠿+\3eW\^Nr@ŲŖB)>PI4h̅6jgo~Wm+"y5^Sz4I$7L)zaz1KzjG! @Z"%z>+.4l,7'R #RlĖeC-1J4 e6b?n[|)ҧǃx[`ZYXJiJ#HwbIАHL+-'9zӿV+Rlz8.O$8ԚϤ $vZ3 z|$[weRasA84Z2r%#6@'?{]|@H/ux/2B[9_9IP& ʎH %>y3)kB{%6eEKCH_3rx~%xT)z HgpV=et.J p\@З8,8Rhu.K]w; Z:M0wf>Buj/4+&܂Ɂ\^au0R9w45^GGQ]tuSWjXځ-< FP`=ofo6XJ_Spq얩xIZ;-hٱT@ `EU݉ ީ')HXPK 18qO@"y"GwS^e3kԤ}g!)YCv*wں8/l80i'޼l⼘2b3[=%粗ȗEx_vuPUWa7nZh*f4 {d ʆfLŜUnjt>YY9EŽwŖ5 v̩Eh.OV?>Zv-"耑P1>L7'sx6@hFpoo9 I3vl!ٰٚKsǗukv䖷&+%/,XM K4;-8D\0S{ZѾK͡g`C a;dԾlsOp)ZYYM(ŖjIeRzY<;hK@  a<Sn8%'fHEV,/Jrl`@9 h my gC)Ŏs/Z ɬQ# p-* ?xgT[@[fh{~Fa&Za3V TY3);M1$R !p@ڙEczdTͯiT(]pyYFKm0ffT4kL6,oܬC=8  #a_@Yhl]0l!I!k3Xs´Iv[x`!O}ME5(NͰn5pgP,08`)1m+T\|jnPFFQW<rG/w;zUK%6Zi,[62iA@fǘҐ1><6MMxV_fHLL+T#}=$RZt*@{1G$lDA<*"@wlzZ{%L&@8>CJ/g!lXΡ,8~fp>PXٰ {Pi ]2K#b`݃}{;J_1b3ǿD.٫eD^3h9Ƙ Hx]A9 &r^^cfaM[ȸt\"loWh4g~oB\w'/YmAb;GVݍ 9@e3CJu=ߞp?Y#4?D!1<mws"{)YQzڏ9-`'wCU.QT`RӔ yE7uq= g/]|yvR :ʹ18N尴"+xC=q<*VzPMu;[ D1W7*UN#XǽPIkHvf.r]*4Ÿ1x J@oYZ'-TKuxq@^O{x:%{*(+]-$ QgUa`Ts^J V[T®.Ba 3wdCWC uq!;]:JxM62  Pcb ODm'*E؀6c =| !ȅjjMt&e27P1u"+AAC7'^Ao6,$ӟsP14yD L2g2kC|\?7~a>c)uqS >fÔLM+ԡmU;RS)u$%^43wN+jK; 7?Ս?>OŰv'[{z!O<pZģJSeݜӡ~KC# ScBJe,VgB0(pӰ1d&p/~Ko4r!$%1W }o)ECF;j('nyvZ-򩇕(~xI)7`$2E_??Q 0߯ jV.,l~" $d;M|&wc]!L ȍo,|ti2 ݫ*.*Ń{먦hW)(&8/_Rд34ÒV 켦.G;b'r]-1la*F@| A`$%T0V|ng WfTOO2*vsGxzM3,pN}XBO"c431WPe[X`'@t fv65 >¯nm]&>}#kX&$ĽzVd~3P@&ekxmK{Rgv?{ð'jt9`Ϙ'|XI&,)xw`qD`b{k0Pd2@;Cc?~4cD< Cp85Uo8԰nuQ;d{V ϓ s(?;|75oQuEpch>9sj6RiQUI7 Z,.zf;ybPbpA+,8|# (Z %Wۏ}8]dy6IOm .;*=]bM~C6%A\J:zJS;X3SxlG* s:W_^˿_?y☖Ӳ3 && L.(;mT +Go2j;%/r`߅_A0^%0R}@ȹS6ZA,ٸ sL?x/-k=gOA$󿑔D@իLx|##74~f'g)^3xW=t}K Zqn*,Qgn*nl 7b YόnFw pw;X{yj}ßoR/Wpė*,LJ f-xT i;dT rHƑ+Kd2,OU(&V@ۜ:Y~ ̯>q)׆z{ W2)g6BN)(qJNܝe,:K:!\7E3 O/9d|uHJL9g]>08@fL\@p9;w!~'t󩀘6ڗ×s_G8 Klxˤ`6h L%<4*%Ή<~w__uuKb&)a=S k,Ɖ@]N&\=/# &IdPRXaѱ<(L'lڋ=w.>=t@ݽ~K;Tnˮq2+O7zg^$e||k峅J +ZlQN.S&fer9 d;B=[ԅ|0d TTپL/+ލղVok7 !u==9k2*C'"~t;XxmFSsm]-DO'f!MYȼس2?Ë'X|S{a"595zE8EZl/a觻`3<P]{QxS՟߿f ԐԼŸ7=|, #>.횘zd@X4uLav簁 PYel?90!}[0bk(~G#*srPXOO~1RNwaP %nM{4_D@^zkO ;DžfZap[BKUFժltkSF,saԎ -\ܤ`K޽GV|f܊roAf,$|Z B# \Lm5{)Q, I 26!HA&&0N2a%Ro u4BB,u.By.iuq:m8\z{)3"w $KtkkAۛ1! Gmz:5mQyj.,s/ YHRfQqK53a", -u|!d;H[y *c>f.zA-dBjyq ӳzq"> B0Fxg4cCWZ:~3 n~L!T+$bZJYn`(}s~˗W$|8D[Lp ovs'gC > /A'd!X~ x&">u."GY9ʌi*gCcB"L? @ Uڕ1e LVӦʟE/4R~C~Y #j5㣓(_ͅ ? Gg5vgPjA3|rA$ L3y9&']:G{ΒFV= p/f^H{Aޢ*PwƟ _` .W$aͯn[)P m$ȯMooz{O0Hd\D ^e g]dޚfmr%bRԉ/PSݾ~KMa L壬 'FfĦS |//81Dh(\f~^p}ul%26Q_OjQ=刳jWW[,\J G$37!򭨹xFTt<8&MFdr{UT>juqzzJS1 5 8ʚL$l%$VL0 p61 Ծ2fݥDž;f %IHÃÉwƖ#+>#? +r-DxE%;-X&d $EUngI]7`VػX_v3PJ. #IhdiG)ڀ U? ! ;{<ʔ~y{=\2d@> NM]IC$ͫƮ ua457UD0i?S #CTxd1'wNySJV4HcXp)]geluAuao=i;Z]/*2Ec^UϵkE Gt} T~1uy,L: 6Y$XZ!=\r\taZMzg;Qvӕ'd`܆a29CոE/37%V*ښG0b.xJqWT@7s*P7:9nv&W.99݃{7_`\Oro=}azÿGǪ ‘`9dT𐖉={iY܁6cé2@4a*Qe7C!ʼR=;S%<2q"]TYg, jeq'X"xsw{Mmbi UB/$)U#A4@(.!< sVꚜ8xy9z6rʆ|k.w4  rh#jg}.; aaK=gcA!"ul\]Sɧ lKgh٪PZd zb 疆&0`$芬Vdy&XQ] gNH`}UR2h*AYzO&,Dމp-*e.G9ǵg0 B%r|_ZA{8ejnN٤ ȁ} w=NSٻ<@ܧCyY^C|}踥<8tȱj(X%p@zb}e]Qh} K$1&Pyik_Gk[f8m]ݴfC2L`J.)hHD&=üsq/5PJ9斖PP?sJGFU t$ w5p LDNN,P-*6+/V0y@\>NJO@8)m VhZxK,jGjPQKA+,XYgڔ.4ʼn *)q[\M:I[HJLnϲG;a& ANL6`xNfE:q.<.dLR"qN M!207Zh58 OsB* ˓۝)FXsʜ ڔ}|*N,2e,bD5#s#%(Rb/#x 0! T]gNX(tyNWߵLx|qfsz9$`2<*sWN$$1$s|.)Lkc7=q kp@&m꿊GNF+ $ zW+[G"ŁARf_ɤo0%vYuJfx-p57lb0 =MR]Gg+2l.t',nb3\\܊Md-Qka:{s<@IDAT <,`2 y@Jsa.iy`6+55=tTSVB#،ܧhIs_Y[7RK;dP -,^xK٤aVzyQgn񊢋᩼<$,!6Ńg-:=ԚgfǙ#ZU%A78Dȍ% _!c:n A/0+XZº7#,E_Zinal#|R}o"!]$d's8d OPU"Cޙ9sog)ZmLDsmm;'Cy0gxp,A"sUZfFQ&s?~*sqfT6Ԫ99Z8#;79QWXƒSSCy'YP:_V̳q'K4tCЩH0|͠{G2*բ=MT\_K; ?u)]~`g9&ܥD6RH$L9{Ń^Vj)KyuL|94!3Ҕ̺aeؓ@W Ge1@J?z3baCDbHH;qɬPƟ:` ERBw VM2b /ئ!Ym$%XC0s+c֙#NM\ ȳc(;K'2,yܷ! 5aCfY$,WHA|?8WN~Rig*P1H;D?Og@v&Zծs,)J' k$,<vi"8#MMoZ@%<7iY-&czھ8Ȣ8@ԆSƢȅk Aᇿ~A1scN [0nNnۻ:WA{ww.Em]2DG2$}+B1Z"bxDGk&nCc^<]/Pڃ|;MwNbaK42TEwL}?E-}a .hppI(ҋa N׏ G-ݧZ/b C 5?a>9װSXH=NU6h ^}/̇?az ìtARP8*x|  kk痔">~4~ߊ:$Ⓐ<9c^=]eObah7z젯v]r_NkM+pNe0%OZ hƳ)3o420z_B-HW]i]C{ GѰJRo࣫~{Njؕ1D0Pi!PNd9*pԇԊ ,mֵÏRpBƉ.h|g=cA&:DZ\]7{a6f8KY#@eZrZ|TB¢);U# Y1!R"$xjd،ʬ lH.\cc tk}`0NZ52J NV^Μ;?ڏ1ʀ9鎼@*}ȪTL 5W6OqӢ #"={HМ4]UsWG;ޓ~V xN],ŏXMwy|48ΛtEԃ^"&1f>xz gLAXiS O;l['3o $#ZrD4`Z$< "(ɣrwĜPJ@P ꠜk>1[{۲{o3s =XsL7;? *30%{'s U֦79:ھ8.@Ճ<[eRai9-#6@7b V̼,ƞZMg"CL2zM5B[Ev փ_uTҴ 7@DzhYfn/> [ovi2mSߗ2,M6%/{4#2EU*Uw(}d s5bv^~jy^Q &x4 ПXxCNjX7^NĢfVdT+ AndieÎ ͻ@p7w+o"^Kew(=kHʼn3l+hʪ_e% .xEiՁncq*9_~1 'bU 0\mm"YY.,H!Kwk&-4'P/-":Jm3wl4餺Q}9 SM<[TWK]BUCq[feF(Fj~şL+J2Jucn{mJz~+?2T! MwIb<% DJwmﰖw\Clxad\s +Kx|ܨe!TP E[`~ =9G*G.94@[s18,R 2NEjdVN>=WqjhY)KaC ggm;֋Є%1 Z/R/DaHᶄ܃V8 щN˸L<nIڐs-a)^d2;F֕d.4: < =_5%IXx"^ƅlc0Y Χ$ 4[Č;0y 0hWpnȔaJ;t!#ُ=f;5[)&Zt3iMO-R ΢&.Q %E4(q:Ct>sLR5ep)+a8Y(F<0t$4͙#QOS8T@N`%O<fIyeo*)й̇!Fb ౗,8WB1IBQ:+hA8j5Qj%/ ߃?5Ђ6=hXMb<@#c)@4t>Np:>934|꺟!W~-5GK;чE^'=UNZ ⃷@nUB4[co!҇LnakĬMN&A{oڡ9k6{)[3,Eِ)kw3R =Ic'd$9kԅ[ #{&90 i'M/6Cp BMYyo 90Q)CFè}ًЉ/GɶDse, D=G]ٶg8+y&(gcNhdTK +uߌ9NA\(j39(bf"}~|'kNj5p`eE{:#lz{Ô#)ك2Q-&C+7,&9>Npx/BZ>>^70@v3Ѝ7!"HbN 1=5li۳B;0QQeA> 僥8Cї]NH#cG^~Lef.Iw(;#9eYIc9sD1:W쩏^c!.(\]?8\vf"rOR˓/`8t'w<`1L!~yzuO |5̶56Xer@8"d saG&Ϗa)l.{PSZZU%||j,X-~4 LyhFcҌ^Һs_BO7]@ml >Ǧ P c'|_ǯpdVNGq^ $AVH;R[.3:|\ngSv<@\ vQb,Zz܂e e(!- 7-(֗f2mXD|s>}d(cu0=01ڸH4 LJn3 oO&mrS_eD' D$s+6i_QGjW褡ebp6sGFLd p6<,?Ѕ|.srdBf璻!Z9# RgGyb1/!z7sj4lrTrfup+X?iΡN0g+eW6NYva74 .{Gg?Ǐxw!qhajkT2Jbmxm;RaSqi{WdJX &q9cWȖMj%@1hɆax,c`Կ}Ȫ❷ pqvl#gS>ݧHo`5ɦ W B/0=_|ȁYIN1*tCˆ/d*X֍9J-IM w l  1.g^5q^|m?#I7$Ӭ6lRHzhྙILʛͷBͰ eAA,k'Ŏ043q]\c",Λ-%v_67i462~>x!ϤO.oL7lǡ"}xK;ɻ\bbH$&D uZ#$,Fd?`1p):X~]l6u"Dd` 8]8=vI4M6!0F.B'nYLsBDWGZBgsRvRJJ jxы@24@7-8@W6A5-bR 5}^ed>&%Pbgh$rx?>8 jdGf;(D#9ެ4QN[n0XK]>֞^w(%97WPco2hdq1A4̓,JEւZRP`9c17`\VE'&Uegs1Gu+H-㒒md-3jYȉ.aw`5ʥL utЅk{!{oo.-\\g w;H8INk7֙CPcܪ|G_'`W}@*l_Li$Ơ9#|}شLedRoj|YюRcLǦI9@voePNZ02 S\1XDA~l5FdCM"s7%mx90A8ښ.yWraJVJJtq`? m}} ?:faO3cж2,Rs-XIp!h>k \t ut!v2s?oy̰b;|2΍` 9"Mw\`\C r׺-KAMK nn݂:"ONJ DD?W 0)h.R[nfR^w<KKTOK 5ʔctƗx)ePƉ+gbWϭzL[қPw6Ik)K-/p׃UTyha2M8G22>ȍ_=p/6:tPm[Y|_Lj"Д܆ MџYkʋn|-W;WB߭Ño׻S4iaqFMS(cLzF}!'*| 4 eye?°ߟ5 tB`0ڡ ^cGƮ OZ/NG{ B4zUZ'R{k'NRx52cSmXȴnB4)Rs$ tuڡ<2-&C;K o?̛8aIB_Ȝݽ~2ĦY H<|ֺ]btx92lN{4d)`'Zg$?!چ.n=]v#"zyt] \oi{dd5_=[RTItM,}o {<sMn6UgC%߮2ӻUf3%._'$sߜ}BpL=N$":u֬VXψuraŒR2 :>, y[7qK c!"Vs*iZ9yKrO[MzoZh~F—5N&փ)P7@%oo:ELl՝+!c}-ލ4+Pd\Y_.Xس;_>\ m?,]>GY(knDh!U6eyJ mTxӾ&7H=5݃toNvq@03qi>ygr%c[0Z"89{Z'bo/Wj@ϣK㔒磦hc(PknTZݸ#^+Zy+P6#Ÿ1ے:4Q?xB ꕙ*6R .`&9dd㯃$wil4}ߣ/nð)q=!XRc(&ڬXC;-fЀ}16#GL'SM)0v:;18X: AT@*¹y#1ڢ/B(;Ϳ1G{ 8Yh-e͎ܲw;42RܛR2߇ç$ɮQjt QSn2/;BJW#>:)x8F wnp'z_njr&ҋ6&o! /LYsvSq$'П y75yŧ'9yrz滣ʬ:w ZSw)  ^?qD>KDnI w(;w ZcOZrCz *; `95w ɭX#ƩɃS+;0L!@DQG#=T˳P~ z5'PsBspwY"-KDYg1E >M`j.^! 0!w"#"*%45`tqL4EY !99R@}M0W1C {OI [5—VC(bPw嫯07Hq:9ʊ8n̋Xk{wqd h'xNbm\:ր/zI"aQ3qbKd4E͚&IJFLV'ZKY&`>MM[gڙ Cmt~JM8j^èE!zAƯ? #4:`C zeIɤc0c]¯Y{ TS0dz$i}q̅k 9q $ɯTZё ݬ _ܦ9486 9^ \*/F&Ÿ 6mFL$7;~eqx;>;>?`MYİ;eMdb%WMd4j6vk񹛟B %i!K=,@AgCޙ_5Օ7|#8ipQ49-hnr*c [~&k\#xrvNL*EEO2#=mS1!ݑ)` i4򾝹إ8Fj`_ȓt,su2>?JW'Rd/_o7+x'@S棅\.%9<;y޼Km p_\_]ǐ a"" \cT㱠wA훩y6R̀'&c fPffܭڠ9zit*ъ! H+7_c9}&ПƚǦum~nܥ^1oHq4MZ>Ggo.8ǔ!l(p_@l7FZ!}ä l%p@\:!.^%GZNE'?y('*rqm_?}mhC:r!;֎ҋe59$&)98:燼@SKb2NXvێdVIʸE>΢zp7,!sOBM(A"GA\h,s x|ϩBN:C|Mk_obDN)&%>3a/ cmB %0#ŤU&WV&Π0eafKLQ9~-S*7`vO'`]Az@G'WWY";ˠBD=dR? t#hyf'c@nW4'kW?09[7@F BEdn0Pjك ]Q͑t- ͵n.*{*KZ2l1 th NY9MQ(*)(xe2lÓ`51dkL~ q{$j,[J}0BTPxT6!P 5VN7aa_fX–_,a"mLHӋ7 ]@viNp6I1=9ƪXu D0)A`޾x -’Xoܞ~͖`#rC"q Y7@)"rLn'= yrNFtY>tf6;@~Nf_":!<8@Uݠopf&NOr <:\YdO@<@%0+6U8R&|EYW+uy Wj$ܐ:yZ[s7"E#6?!9=jN2L,"?7pYv]A;LSOW%`Xd s$Zϩ?wcܼV eZ#W%m2uHcN@$XB!]uq%s}V ({ۏPv `/]_D>Ck2FEB$sU`fD'#`b4-jua`ZouVj :TRxPj%cC-\r޹X"iz*:KXPi/g:VT9N}W֝49:LTfv%]O =< Wep#,\dKDCB9Mi10#Ⱦ;)ԱhFsf)* mN\À՗Q>Fy [Gl'о_d]TeٲX2_d^$ⓢ$w71[LZku7*$GPP½W;(9%{XdtWMlmFi˜8}4m*\-2=!FhĶ}h?5XZf_HڞC+K2VЬL%`"dev̶NK)%9)MڵqS2TJtBݤUo|xH1V!}'qv& ˙:kCj($(I[灭BcAy/^`5d9(i)(Y<-vZtgad퍨VcY%j#P* y89Z42=H $uV0$ҭeօ?I+yJzNNDNi>O()r]A6zpdlF/+|Y}B<[Es/>Ysן_>3줉{C33>ųgzx^=Xwh`5=CoK˶F X@O[%s`D]Q+T bsz6P¢f&,%$+[\/H9CJvm)@0̶sƍ@mcKEً1 T7#dbU8w7<:8TY-iuۅ;bu|7j5Jnoo'hg.FNwHVKU0t5P;Z!̾ x f79^}x^gҸ]6r{)5%;:ճXY+YJP_aj-/*: sxg0nR?ǡ0(,{:t N8ҩA6`Ȳ<r%<7,7@Di/(0XKsHB퉖Fؤp2P:fƒXw]1*MRqm=RDgV]!S᧱5NaV62“)hm<@8pPC#t .6^In:,>E@IDAT"=Zd;\1YKf5~f x18D ].U%~U76f6pSn$Zɲu: P0M]=;]].j7(zT φsYbELOODglx!ʄNUj Xg3I@ZQθH܁ %(Jf)lyyhG3&r~Dk]eCٚ[C`ׄt2xpd;סЭ3`Rb݉ ,~|ϚJId)N lqvT`e.JAu{ĖdAsih5Vݦsj,xngDT:%'ZR%Ҷ!J<ÿ|K-,D>NKTi/EjښLK gvoy@>7Rk7vqpzJ:ZVyHSHw0> <5'b Bo /TO\v@:e[0 Z:Ff!]-b6Ee$i9;;Pp=kzuY|y )s FWYoyݍڟSe@C۹ v|0pGWNtNOLSiݺyKP?F?p2V_EҶ>/ٱ4e lM?4{7ݙMNHhOyJ\M[K3jքՉԝ֬NW 6' ZrՉwPwv!z; ʉ+\K]]]QNS ( 5t NMLY-f>ȸDnK6z~=<$0B|iQ n@I^81VXbvXv' :!񤋎Q;deJbu0 5x!U־aٓrm>XR @!Bw[RlWB>jVɫcb. =k>ӫw.IYpR{4mG:;IIO>`x],T']  yjz"s39:VPL4Q{NW3rUҞ~ôd1_fAgzPbtf1!&#%#zy&);>CZwg|25+k^ 0GfNAJoob_)rwGnz]DvEw~)> 2 5zLGwPtߘ:tv"π,bANz}]nf+Yr;]9G6>XHxfoɋVZ1)Q#yA+-lP~Ut ]GYYiUރ~Ԓ.rv[;`6!FDݏq،r,`ahB"Qo1i,(}gEӝ Ԏz6.eR̮q&0q0c̅?OQ! La<&`jCA|S@mՠH ϳ9RE1ڞ:8a<l.!ݺg]K`\B#LtJrMH!{!u;(@r]uT¹Bh`җiIK=(o4uzJ-r5<4|h|Ow/y st/j(,ahj>O*5YnM?a5N@9^'Gwu΄/'ˁO?`dLS B-"w)pQJKc";U"V% "]apIzDeT6I>fh4BZEwV(KE n^ c.NNLRbYZC-yw Q/Z}-ݸ=B#{ȁ\˃q3yl|V(W 8焫O:O;e{59ocOET7Wy8C39@f3 vNUdK^tMbSS8\@26b~,9o_NI†{lx{DGKT8R]Wż>KWd~%5}})b!Z~?c"j}aR|޽06 iːW~.,N/-WHd-Vy$l&q%@,Mg^^ -ˢՄ߂?$) K2d&9L֒6` 7IȪuLC> +Vd&ȶ>A.0i:-n;ЁHy::?HH_o.%FfA>CvJTEˆK+f'A"6=󶕱֧xKx.ڏ%:`hۖ X#s$vqʃխyx.k@ՙݶ)ك.%9 1qV {` u2ʎϒgCC*抨w'>Oo,kTTD K 9`k&b!;o0[GIDh!)zE1/5&'Tţ¼5W>+r4,)=de3<:fcܻ\n_D24}1NKu  `a)[ jau ctc4/҉3P`gPFnɋdV2) Dlu&1=gYw602݄ PXD̉sM˱ߧ_φki,mݎ(mpN3 C@)^WoJ7EJj" E$%E>{'Lߡ2I=T -КEa{ cU@۴ 8s1DM=fn~o#yp7Y W`|㛐lhb\ {yViP I6?g %D=mpT$ONZ6$3=t.ڿ%EtbH"䃟CJ`btR,NV{xKa$sM΂"rJJ@!V]O us;0 ((ñAHHQlB2qx J;_,*c *6.+;qޏp`tvud2 @RZRqNdsħ2R %@ea#^" p sz'/>d[6y]lbQ0IS'st]VCV)rM֙6tY8YUjlBEnX5̢ > i_``#>1ٿ"m F򼽑,#Ȍ YgQ%cvb,0{YAc5 h8/`%&߼"{m4m s~I*9(DSB=pGN / U'(+@= Ës5vwg75N1ؠ  ƄXO@i1s&fO%u@tR-;Ef RNNrS&gb # 0$A41S@1c(HɯB6Izp&+:!=t Zv#z\y^銬2 <ϜSa-Z<ً&BXS'kq0{cu:g<$ 5ָE 'U)@w1M&") KۖC`PʀpijD{(e(e߇7g.ZC͟뵤l.jE6Sr9Esd/1m<[O@' d8RCJ[!+b%qj$@ł~=/g|F!FJ}nQR޾A&$E $΅ G Bҭ"?a(s?hy 8Mv.C\Dg~ p>O 0ݡKOz O!qLY'&LowK `2yi7yu`[J.h/]x%sn;"f*"$ fGD ĉ5_ACIf},L1^`#ȪzG [A4<l% ȤTSD!j|vIBlssvFO/3j}ڌQtp8je0-CwB4:`ycm:4Q{ZG-OYdߔFzKkɍ12\ eIj^ݚnU)@xQ5 ;7ho?Y!n(rg k22֋PTP lrL?fm#Fw7)/OB+#6X3"8*@$j@W7/woy0gԓIMB:2m _.`# ;,hxtv }>J ntFNpijYwuBCm;ZP|4)yg'(fiRs:s nDi'j.?+<e!%P@  DNE*ͬb֚5JP$AB,$5}v\ = {?9n|a;FMSLuIb-q6w?w?CfCRK} O@,z<9w `64%GĶD;9mWN*0H%0 t,tKa ﶩ1c!xEթٔ'͓arѵF.>eMS+"!aUu-Xޫ&A2ѮRD,w]d)r #Bg.Si|dc:_9/ Hk<2 qY /^#ƫ/vq Xx,Q7K_Of'y&/IŇXqAl2M8 #Ug] ۓAGWD{L19WcX]漸s'&F͡H.&8z2McB|kޏM$Tn_P80 z;^<Vɇ Vr HVxLt_=&)wb;x a 6aŷq="6&<}TAɄ堩`¤3(NuGs%3*i;Z)/Hf\"yhsٯ05S :qE;Rl Y h.-< cЄxcl NjX{0B{(1>Y񗟗]{b|\v =2PG+B9z։%Y\H3oɖR f%DV*<=D*^/}#22=݈(ر(3]Pʳ1jB[UKPzֳdPo*T+>ϧQ"S D)]?^Oӂy!H }}|ɭ2H})ę-_ cŪx:jϱ ; `5 T'3 A!e3wAՕEaFo[mNk!1b[?'a ‘.΢s$ yFH+^+˯"J?Ӷ͘XOE³в8{x:q `>` =^"jG@En6g[F6v2~ؒ83L|"[y,)}@ 8; <ކ,̎~.gTQ y*/Rj`.. ~/QjVF-DH. Y{-A_ٽq畠Z@ǾOHCW}1R'\ެ h\Ê0͏0чwx1nml?ƮYKG变I<\^}.A8K[KTUM 6[623Q"'̓DOr>WW)QVT;HnoӬTKͪD`TCTG66]bwd3he.pw@#3"5+= Kha}|=1tiўEd61V]"#>}DiKk)M4x(Ӝi  09߆6T1x#K>*\s9{>ixR&J6IvXt8' ck ЃuΔ B 'e-1]varWD x<`L |>`S|15 J،f`J6%0WNn)7VDu΅$.ڑQ"(`;P~hҠi@GgҭVs ](fLeZ0e%xF:=+G ȉik-z2 iU{d4YU.ׁu4Rt`iQ#=ދLj .:G{-45\ FDՉ8,KU)$QrAJbr&߁ifx'3/s^R,F]T{sYb#2?72.ֆzÔ n0 -86>8V6 T!;]eEs/p>aQ`F%}YzNn%"稱 D-qб8COEi#~oB-ӑ8і%dPeH* \p?ٛ75}WQr{63^^޾~t"hzjLϧuƁKLk!:B^:?g<2ہIA=6+Aֈjva/L=+%86 /`գ-dW;L/B͘6k<VYĉx.ڬ9]VCpK΍Y{RwDSJ^ԝRK{D1f\mT֕8?0\o{` ÔdkkxPZ:2}tNRƕ2H 3uDP)AaCLh bӸ3~o[ oIYk_^c i=*yZ#w1`E+,SY'O{Fp_Cg]eP;\qM@! wI=)?LQs fr/7sQJND1IVȅtRZՇYB+/Ycs:!@O>ϙjAȒL](U <`\tr#vYӌ+ْum^<%/i/+x9]G1ƚcKeDC ߁<L`Acs=h\b8ۂy1q[q j)T3U,$#S![N+(!gγ5G0K.\2 6II@*,ҎZcyooYy0f7f6jTho7|iȋO8ɯQA䂥ߙͿbՆA<{{1^f:h,-Y[6 wdQݚxA#1Y+dG%3&! b@sZ%3q$gUj?LAñZd;g3Rz}!'[w-VD>:&b-)G;P=+}V9^"2gidqWjf0Tʴ˲˹)+xh/Y$~n~z ;S"{3s:}8=#K}OvS,`aXMAmAtoE;TXWLMbvD)2ҁ"-?_⻬%Ք= t[ATLl;;yvE"Rrx:AvpO'8yڿW9_ Jb8*Xvj|ZYv*)߁! C:9{|qd J_C$Ggp)n:۷/P ʾq.Mʶ{XJ`2* t^嵂g'.+Shg~Y|O }%b;ek68w忕a>4FHG $V$f*6<^$ G' o/a7!9$'hh=(Gi_=ll~9i| NSq7r:A"h8ޟdeVܽ~ Ӷ/mr84\d21M6gdoe8- ^ݕ񼡲AQ}Q^adQ5G۲Ub6ʭ|8{BnZ HF3,t9OMz;p\: ǝ^? 6j`c_"-Լkh.cePs 2_Ms(-\ԖHWvۇװBuC嬢s>,7](sWg/AdШ`|Y\NHeJ1s\-.dXpa!7^.kx9ӌu;Q2@u2 Mw4%,ᅠe t1| /6(9w~xBRUZ~¬S7{3 !;I>G+e‘?Bd tp0 x+jLP5~8n"jTTÉNS.|"-Vo(]sKJS^\"f-PZŨC4DY`=o³dZrlIWw JQY?˝_W^f/K6 W _bJ&8G|{;YHqX/Y6_}J3HvV/3"} W;| 9 ӚySSVeﺓ3 IPjV{&M"J6q@gw !yTNxp!Hy2u2yFPw? Y-zHOdNUݼs;2ɜ}ޒ$bcұaKյ,HAܴ.q_1eʄqtiH ǯy0#Y(zx*REjr4= yt 98>^>Yٔ)v|i^ޙI#08`6 [n}(#a` Xo1no?}#aȩCׂ[em *S S[[/Z!-M.[fKF8 P&KIYʘPr5ȅzr` ̣v u/c"x% Ӥ ">0]u RՌE+*rGsL.!"ca*)ikgdr(Ё*Kg2A@ a@ t2 .^:&4Ҳ632_|BqMb5{|CO֪S{|f*crG'jo.㣒8{ل, M?biw6TEV>A2)|wj6Aj$AZg|O #5.L?<ޅu4l`!oٵU0\eyM&uegu3q&&eBli{<$q#wd[C?Z l3N>9KzXh̞WٔP7|A{F&`8^O@~HV&@cFwc3bf܋XVg-LX*Z~sA&s)A!DɡqXՐgU,$}~j6ݣI:y>?j\r tsTi%\PLA1IYj'o8F܌ʏ>:o؉ a"<XlBKp2_P6he@[E`/X&B zsK@9۞ C/pRvBcOiz7  sme"ޗr ImadW<)}b=[k[b(rP"C_JLyGom ''G#6

T!Vr^}QX1ݰG7lS=VY7`W5@xG%/O\5kCQvD _gO+dTs-30neR}W?8%B7pOW&$44ߡ ]vc6eai$'[kg43Y~kyMY*?ږCZoZ05+9gQߦN#ŶxmmuF1N}j/lD28ڽ'YomZ18OO5F8x<(eJ>-4M5h|5ٖ><K1^v#'^ʉm;4WOtUX.^b^tCM[;7n3&YGtr@Ir?"zɈu 2ǹi(GV"f"r%> S=SVYB@_\uBJ,yH9> ƴN[WMաp0;"eZ:H+\u6g'9 2hߒ@ꨶb8u1OT@mW 4ЪW[-B1N Mu(EwwI>se,E!Y6ewPf[NDqqcK}k%fn.n-x߀]|æ'jt`]{/~QStU8 $%VHO M[C4URb1̆U%;] ވj0~~Ô|s`P*\-g=J4TQi㳗8?c1k`ԲMiDbB|/ʎY7H)>ҝ4@IDATxs&(گ`![bKU}./*_ n"V0(sqq0]ٵ_rbSCVIo$}))EB7_~afs%A52G ֊qn1k;vof1zfcT2)}.sY4m{w󝝨Qj"CEhgp+U5M8 k#?{ݜ 5lL:vpN|)YjX;e:":obs] {j RS Y2Tзk*sx4.1f{a|s|?t\?dT4Up#Z$ -ܟKÁlgq˰a y.n7X k&ܒU~XӻhIcL\X2$"\mLT)WGdP(āRUS@[K77Wk&ŀ]M=LnG/UDe,b h.aU*ڝxnu#g4b~isH6S:/~}G1 U/Q9pyd5?N_>J"xCe~اPخ# cev`5xp#huH{<@vaAo_.fV( Eۙ@͙']u_h_[,>4 26f}n`c89< \pxܕq}$nV}}a'&. QQ6<}m :E+.Kt&pMn0rLO4^i7X] xG;^NM Wx:P<_8S9nr9?hZBHHpdR('m]*8wI^ͯ/x?9a>F ӗL A΅+ bZ@oVvX_3EuQ ظzMmYJ:&j,_ŸD{ ,dH.όlpqs\Li\YhRlN-AaMa1hxewlL]~ 7¸{j23*-gZ>#*1 2j[/3a)`MF-t_ςMd `0K@jy7,DSj緣 9-Hj-0 飲&iF\JT,l+S9OW_Y6K؆;L&n1q3%i͏X*{f7Y*&QjLY:W- ` b@@9+p߆]Qp.ÐV3eL/,:3wȳ_k}@K 14Gd֜%6= E4@!,>0h?j[Zd,%*Ǚktaǣ.f#Cg #~{Jv Rc &9@AaI7TU$Sc:^cCI>DF;muUNlLu6or[ ӨYH-sN.nQT.ev? ?5'prAg(,$Q9Q`-۴USv/VG簹ɷ։Jh4W04Fߘ}1||w#2j)'5`]ӷ* %Rʣx߆>Nj bM^%[<]GK&*Y- & ʡ X}Ff«)YF ?4m&^cY\4X ,l5y~Nāu=\(Mjainޓo""_0s{9FWxiezuɧ}kL"<{ `VKD~Opr7oFoQw7Gd\pAf>϶*VJMQmh$CVUuzyuuR(~JkaW|\Ub&66lͷx/.i3)߀D: 1vme{.p|O? /1fEoSd.u|?|oeb5xo7ϪYn#O9!`WA8^OP,hen*Cm> 6B#P!jVs[. uoC>5mb UR7~(#4J1Ő+#FkY >b< !-Si+x9"F(IqZ_~cW2]kw 9113=fG&˗ ~ln[E2PX܋D*|kI=6տ$LH9NCvܭc'~?}C"N 7۽&7G*߶Fp~澏Rp  ~<IԬ^d2Ah!$Zvj~x^6Ƈm“HZ?ZsL_e76]qZ=bή-Ī-LxH,>r>FnOT2Jm8N)ohЗj+\?& \\4KJdZh묉_D^D~jlHpN]z6shC돬xvf1㆘W޺eUaXtSwj#02 z?7tT*e3]YT@ɒ30kk i-\[cR([>>\vFွեXyLMEs4Pґ0)p$3-@ Tv7FI\&hR$8:DS}I^i ~7n0I z{{iN+UP>RZē*"6gW3-GK7 9/qzqo ǭ Y:Sh̶hFaJ֮*G>?8Gې%}CP +KP|C$+DeiM7 yVrĢM $eF =[9AJ8 >%9@тoqxD "t]|mjMWxd[(,X%;"4Ļ!v @i}~KKX Cƙ-1# !+izݚ;\2m0dGJ"{9ǿRep]_؍h!c*eX,hNUh[8qpTWKʽ.|ޛ ϐJ}Ӱ1}ANeCڿ&Z&ڥBB\ʵ٠Tk-ݬ Xdzϩ]{?<MZ8/ɰwI 3:oWXԨNڄiatFpC`SǠGڪK;BJ\EQuZZBJU"'6GH$~qڬf'(@אSɣq^oG+uK =-Ӷ:L*hl@Oo\>a\g}ABp`"v}HLgC*{v}HfYp#hyG\*jGDL* .:sG.yMOC<x _Jt1Sv)Nrv<ձD3 eprL=s苓@",y}`i.2(p2]^^ ۉP>0=p &hjS~e6wiI4sDwfzRjGޱCpQR,&ePi Nj**t֮h -ޕ.IxIjH9MA%r̶`F/pN Ұ(9^ Id,SJHĂ X[@@^ 3BL` Y|' Uh6:͂דe@ ž62OA*>w v*!z)7ղ}%Ouܻd #N;Jf*5Kmb":@^Ņw= i  k]"烀;;T1y V06W`%5a=1f,<ʶyYz`Z~9 o h2[BPXO=дs'$ ^~F#r Zp'  z,`X΄I?M\.H~yߊ6EPOOȌ ȤhoV+y7( ~| *-v9/ #φ: "{.Nբ;F}#D,#Dhty+h]L1 7#xT0sLvͽKWȠ4BϣF|E> Yes( qCyŋ 1+w$~pTZ.{3x"SXYq b*&ldZKh%S'Ң__2Nՙfftq(^A~i x= 0IPތns/SLX U,z-^H X% l JRb}ƥ:giLFaN}Iv&i[<$)%ؓ>\$FQa8ΠQٞ￞2!>KGӊ7Ls袵(-[ƩP788I,- F<ӘLSE5ɼ Ķ+,9K UR!c9-.ڰ{+ь8D:7oDL  A?_P8*&]74®D;`b3*aen KnjG8(&0ƕKZ6&68^vR]-Y]ܑot%!u r&qTœ≑tﺷ7oFsG{y/ZTЅ6~U$-TbCUYrWX_W-GK&3TeO\^"n3J7v|ds]e##iubVyx^`DZҤqo4C}zt es*a/>Qy3/p,} )%dM<&6d?U,KSLZʿ01FR/)o ̽||!H7G ?G)wCr/PHdپ{'1W##W6ژfTmf0qG?!7[R7<]v#O :'1-h2Y.oe:ݝW!> j"E}6hc_ƈ L'3KBC,U YZ8g]ʛ/ $-e6BS}_e%??hd&jp'yDfl잫ѥ$dEH^zMMTEyTih:9 H<y@V+e̳ s G:X](9p-e{`TPnr%)ބzP=7.,!pKDӱ];}̑k L;ްByYӊjw:[[C%%2Vn<XQarc{Sq>qKq9GM]}6GveYXKΗ͂ޭM_)ei^~Y rSBń:^f> ].Zo! .t{8 +ژWvL3l11<8D}&/w}l11TBo!yyPS71_`ѣNQz/0)FȶHDp/ZxpRvޞr@+ԜkQB:;m,. NH#f1|'oƟ`mt\H؂~Q ϿjӫL`o\ge^X2^ 'ݏu>A:?b4>Oυ;,g{wS9짤eܹ%Ns~TA(S P WpQ[";$!@qY uWX_F$R7yT~4f&kvqk w5]0B1xLڿf9sFH+o%J;a}8 <j9d>\#?{3 *;.t!x+Au P)ۥת}"O21fLYPGWNp]{Jϋeb I %V+ʁ D_1"M/26?(* .$㘮TZ7}wg1RHe5BiG֑/Ă^ *hT_^oW!. U| uN><֝M`ې{F"ϬHa*p]36tf%X{Z<1v2ԡmԸ#Y|uBW"tәYwGKXGF[PsŧR!ٸLEQ @ƕѬ47=M-LUv[C, $:Ʉn,ZQ?L Apڌ ᡈGi@Ry y3܋iXbX֫ mID#Y۫&?X"ם I%w{y'$5OIu/m"0@Wݬ<e^~):!:Z.;n</A=(ܗ9s2l[Wܹo9f56 &ˠp3zs7IWX }T4G6iUZLA c&#Qƹ7sN[j8ɈZÕw]1^WE1kϥT$C,Sc:ryd;d ~i=}, N\Sє<22#{ T^a 9 w؟_A= DK"\E`Źl!2`.y,l5>*cfkpF˖T~|JV ԓë- lGWZMŠ3+#.r Ds .!T{skV#{qx T)@Eg7>|-.㝯$1%NuZrYyی($ƁNFEڪlho&i!,"hlT:Qiy ԑJ0SO\=P"@d'$P֨W_ MMM㮮v/؉Go(,ⲳ֏ʖ+XYcq נٳ_1h`՘)?t-2Fbˮ{(qނ'#掖='y;:p}ˊ i&);:PZ,~ȃSNPk]:t40RxT%|)=wH'=I(A;1)Cp PisWÍO6cx`[B^᲍꽗y""\dX%?^ɻuYN:bDNZ{c.58wž !e=&MdGFq ),!5faRmf_385XzE f5#p|H94a7N<#|2 ->(9];S%-K2c l]* Q f^9P[PlGG5{l#G`WU"x~hX256^ *n),PGr9kC n,PAs?.6y[[բ Rkf -נTa.p}7E'^U6эw?Nywr%п̐XD4A+ߍ)jm4ܸ*%|󹄩Q=z&t錗gwPզ3K`4 Ɔxm$Ue & L AUוr^%/ܑ>B ոA&U;a)xi]bn{$Hu]H=2xxR7j/lRKۖ8V~p͢T6d |V%U!OX7L. bGaX*:Ɣk0&#|'QDfT=Tv.h \4ಎ̋4n'3r؀%}ҡw*8ۯv9#d܊(=w: 4%\W| J*nJ^-xh7lTE5#b"Ӄ4`xbtoS&P/*gnMrjޑew`/TAf[i,B1*#cpqs%NFQs^ra!w ^ 8DbK;@OE:<ƱqdZ7T{|/y>dGJ!ټSt3%`ev ݇.GpҎ> {:%ELa6b4NcSU^*qP ώG_4*2XI݈O'amDߜCb{" =Xu,0x@@)xMlGT m]rh/ALL䪎2ߝ6FU8i(+:=EE!@dW𕕆Ixܧ}Fӏ?ܥ )P\6۠3>5K#Kh~ؚMmi- CbsE(s`5XqG{a`8EK5;̚WD!2 41GoN-ǘBm,,D mE[Xh¦[EER7`2zȷx!Hg$6I {p.)濣TBC#ãu_\E%G>; ~|d{Cq0|>ʰ-g<\NW ]{--׏_#6.m@ Jxj'6=3 ~gEk:M-""7=dE}7;nLH3ey|`SnD &gwo#+^*bm̑QI8V \ny2 Q'8v$v qYw} b6q Jbv?[vl\7p mq . ŴN&0P¼%Obr矱!-2T^a-̰Dxގ\.dbp~?ogT\jUK͝ELT/nTu2Ƨ̞a[Mix _v5 XJ>}mm1 ucJ_ S)D0Iusٸw' ˳A]>3Qva̹u g>[{͍?]gK:;9!bCWf\o&`5qX*;:i˧>smM-7'{`CȨO6!)e_M}>km޳*w#a:qf& M2%KB p"chi0B!hz$.fiZMfqmʝǎ<^ <~|A roEjPEa"=h˦ kNgmWxgkywmT}7>%&܍$r,֥PWdzu&8y8aʍ[3\NIќְJ,(|5D\I܎Tڶ;L5yB8ȋVi(o^ a9KxOB$bp6jۗާ@)7olmV{n' SMnIJbwZ !7>IVP6iktl9èMKh7\s<f)Yd:HǥF3e|-8:KӼ$)(9' 1UVUWuUwMoK3ӕ TPT2* *9}gn-{>羯o?4#*9 &[m;2pu#4db+oxͷiq{8w=&ZXfmÂYVv4bCw  LNqmZdz25Bz;GZf)V~v,+d%Sv"˪IEJcDrTj[6j7שePrql{E5fRd Pxyk21XGh:oS,icQU=*㆜|C)dz_wqpе{*W4p16pѼjj?j`cs RR`!T&c}}=zSW%lٹx\c=L釡d7p͖[LN7o뜉O2FEXo M3#pp <;Ex}!(/ZO7ZnLw1ZBV 4Zv: `;< mEP:PeP;3Zɴ9SS`u֐F٧\-=BP&- _6q1 ,h\cuj*@n[͍<{>k+$z~^YÁ*w]j/?BW굸uRb=kXZ,^ < @]t4VFv1( a6ܐH:]픘aI᝱K2K8>gi#+ܞ(JcϏ >BcV[82 M}|XOћ!]逢Jˏmi]D<[@A+p :]!޳DcK-*p*^OHN5kCLKN!? "<TJWՒizx uY "rMԥ3h">akԝ;QC%iy?_{FIod5J"le7rW'jS0~ob˹06ѺfI%,e+3>|cJKf"Üf"2*AJ疝ȃLb `y%ߢe6/73'N Zj$sؗXeGG_ܲ1 0x!ڝ=Kh`؃%2%ϏY;tp 5o^Sf=Kث"d RɮIϳm[ac5+ `ɖf܎MJX.Ysԣtz4^Xa $=g >RwK{q#~Nkk!!SyyfH[!yu bYNyS [̶{ 0h/3,NblG Ps9aIv3)w2e'蜯ܼn:!ŧk#Ս J&7 i9\R/jKlC"$*؊CDu]7d5bkK n؟洞Z=Lf*|J Ʀ(uyMM"*_i-t{,t$(G70 a;;NmMZ}0x DE:V@c3w׎,[o;p]܅dY#s{9DX~SNaͥ5S_w5:BRuDE=M&L)) F$^pdbA侉i)iuvqs6-C=tzdlEyEߤx/էT|.vYeR J~t=Me}85?#MvcZ YNG`?jltb`+O0Ѫw(0ٕC!zM@>$^b#mbNO7okᛟL'M؄@`?EryδJ~RRMr GًDqVAPqXZmbD%22HHz5Zؖv j&./u{Q;xz!Wyi2[9"LRAP3gSSZB g;逕ߑ 'Jބ"o2pn~ n.؏هyj~\`^ѩwPvGW Fi|*4KL"j7K-ͬRw-eXsSa6|֛H-3=ah'W6Ŵ9o3oR”VdP+4bJFhs;z_gR֑4EZ25|R4gp6ypi$ЊX46g\x ye!lDB'C; _BwM >ā>H8s!T],-hsOM\FTt&q?aJm;ey,0J8TIyкOxI!xSV+w#}~SBѮ f) CW9LRxuY|V\t$Uv+[6<;n&nf+L}0˭@gԒ@:*>wL'˳`]yӋ+{YMyrh)=>M0|PtmA9 hJ` zm`PdE7Nͦ[Ltg :h}?]],7Cؤb%u ȶ5ׯ w_"9ࣣM֛?QhJ;tp[Yi9Oհ*,F' C+!=NPϞ/|x4Oʬj.(-S&XjݶEZ] Ibvnb|M^s@QuHvi͍adƹ_7I ڑy+ yN4J)}YT.a/9,ZIڄN@zi(|!cx ~n0Ϋ)}D >,,RnP1S'k\}C&s}`{9 C6qX'SrB&`~Qkt!UZbujEqSvC:'ی_XIȈh-ɰJo}E`yХMG-BWqA֣J @n&"]I:`^jL2c%ېy !j cxShxК BxZ4\t-pLi|?E_zГ8% PvT5ؗi}Fq=c" vyy|&fZ1ȱlR>0/]N=SA_hjÌf 6qdMZ|E16WJx:-jL% }=ȼ=&?q%̑IgG#.ۯfz8coiyi[ T >¤"kxސO$zWe aH.jL-ًr -7Ղb~S Ll9L.<(_1jg Li>rHƟQ=J,cmw^}hZ55.pهFcPPbF_jTl} [ 0nԲ!ȗصh|xd#p"Z/"vƙ^~)nv@^y<ݐI|aRduq:ۈ"!nP;[w3ߏ<_sd2ރpv.-?{f B@_Gm'Ohw!\ )`?x84dZ_psstC"2:)+# E[n1%2oPLN ;cQH3AZ+0vmŵ  35Ku_EpԀW]d:Ntncsvyl޵!g#Cغ$s|EaZj4kuڃ\z5%UЖqrOe-I"b­fك ÜyH6%Ss@м}(Nx Q| %(0Lt”f8I=p͒t-BBK3>xzY%YSwarZNY AŲ*P:K?P缧N0"aM,$kpSU=1IeoBh;6/4vsf9{R# 0S﬋M '[zณoQhzuS$ޘA|}^q؟ÓWo@vT8H̝܆ >f&˷Lxnع Yl:Ҳe8д0"'x:,:;_&3'X|?!-$jm阔[OXFچlj0ɘ&Mi~{Ʋ5yHT dSU3 (=f?$`J޽]{WoP~,n/'60op@ylB^~ImEig禫'l];?m$`]r㲸\G 9?8wdcC01 h<"Lq(`kbnYk3 ]X\ ݤ&%ܞ_x-7Asک&62 Lik2wqv5UI3Ƞ1>L}CIebp܄_]B$mi/"Ɂ &Pr[Zo}Gi>e>+u %[-Yv^f=լ)A幍RUQoyx+H+hi 7,$cɦ@Pg,7gH2v "ka0->fNtNȨT?Qy31,,`jv )"$۩ހK|3P/[948#L ?9ەBr=l?&]G>Oפ4@ ~{)%;ٕ;lX_[A9h"hW-&d3u\Tf d,z-<蜵5sTt/ˆW lۇ^ƸR֬l>ɗ߃ۯ(6Qz1;Ad _Zƥ2 cA/D D_!]dذ3\.]kjc=w%$(}6(4Ò)߸O }e38M %* `%[X 5iNcTܿMrqxYxz V /Z ~eVȻyLa'\P2*zCr9wMI?*+/]&5OCHH1OIC˘@ΈSWBI |8@&n>d<;QZfgEi3teKj07)n,\Ls})y\0 /,{݂$ʧޘ}M3 -j?{tUR>-)Ml~uy$Z#d1`s#rK9?s7 u5}SDS"DY>ҢqV:gpr@{eW>](+lʫBeS&BňDHʌp:V|tNMK %i;g_X (<.[9GV#}gm%=Qiv9$W%Ih"nT/B K?|0VneaZRUs0[\\&cK&ކ @bly0ݑ*Iѱ y|pU A{V3$+,S w%V `1Y2`bȰOjDD nO Nwh7Mf6(>C2:%S*QŸdN|zLgAp (g v?k]49HӽNƔDp@x8m8ۯoP %0,؁GJL |w3YeF$) (ͫC2J汌nN\ +@<5k=gKF݁ \nJz Լ>sZj Re?_z1'&غ,$zC~jp+ƜTT插p +|-RB'YNC PA6K6'KpqN?؂UQH)-W6]i{B?O1M0Z29+0.yAܖ d&baKspq77ꢱQK쵴3Len͠ 3C=."K'7d@AC=<~䨏L*X(xrԨ,|;XJܤ=fmeoԛ%O3n sd;r+e7%ZYZpqrha1NS:WuI XB!0s[Pf@TWLB 9QO753|v%5coesoG;j[6n;?q+wz%xV݄$/Qh ]pwkq:v|Ej^,ȄH{76s2AL@A}G_w"\ uL]׭a\I9E<#^d{C}{p62gzfԴ*۵@R,UAO`oƔ^Nv!(a1tIzg#:p8~?fL\[uŬUk3i!ç.K#i$K",ḿ}B 4ozL EySy TWYNJY7M@La|&&h5[kM^^k8n֬D 0sҫNA@TI%Q]dSzi~(E%*\@l Y^)u)ϚBZSI@px> -=FW#-Q֘z;d,2M.bZiYɰ8N x>$R7]0EG>$6.fݸv+lio?bܒ8eS.E$x?}k73>H65& (.Em]a] ^x5f&ԝށe #4 o[QH摾n$D"GyZNѹq`[cxdU{L >>Y/SSaPIswX厣;xylt |IU:p4zJ!m[fF $NN 0g,y޿66x*l6ȐDt E0:SAyVp6t Y_ODx 0"ߏ4~IP&a[Al9?vEwŕB`.}{r$!RF.*#;8>b\7:ˁTF3a>r L&8FP³ϔiנ FZc0f;4(HLr.| ?ѝZII{V\GǙ[mkw#V kXEf荙kp#0i}ڀR2 (žf!.n͇:_2gakUnj~&ᓿ*0*,`:n6 kM X7oaj?%p̼Uf1mzf {#[!v Ƥ:qy %dPOwH:A!XH@' MƔ{9zn0u* skFEfEzI#6jn16R)-4S!׶#6}nG2_bg~}ܫ6%2˶֥ɃHG~lֲG&X4 d)-ܐA0)3{{L |R.ח$2Z.&@ǤC6+x9B֙i۟ü_,Sõ6UtH}~>P1!El@Ǔ.%>݂<:Ĕda?qAs` 6I!,',]Zt3p>[QST5dT4ICuHLZ)x:DPd!P1;@yI XeM'ݗ,a ̀>kq \޴1-۔}Dk<̾US`lB)}@`ݼwS&oBܹ0 hS_~aop&Dij&MiVn&+ +7G޹ۦ2u&(6@]D{ Qu9٠{@+5!'Тvn(;,D0nb8{aVś0jRTdk7\OL ThGZbFѕ;ʭH+)=6lD㘜Eam޽"0e|ſa:mCĒם$.2QIf0E&,jm1oYQ׾6̤)ʿkP#<Ȼ|6q({d` :<JfUo"^ n^h!CKګC0,|_~B&Xd3&(() ZVNNd1U@ca}.+ č[^D t6 j߾5w5oRԙQpkyQC>s1ͺײq˵56noc.f|(S8˰,K,SPdEN/ H`L)s!M{w<)b;n8oaxK:qFt'75mhXwՔXiI;,"}I89sp1IGZF~s\ZOdž{8#it\L g'gvBy!9/ll [dwmjR'gstTbʡGH)C0-~aA,b3ޜYY}P+8\(v9{Tw15P'—=$rEUT[8T^`%+e!c@t] L b"-F"j1IěxE0tm f` UQTNY\@%fV%k3xFiRM)/2| W(OVi}u"OC6$COO:lpӑI&&?]%d2ESu$&Odz 7'iM[r(}b^{=|^,7csR6I鵑_9Q )lDJt#8 h.(ꛑVZf/ 7%tqJlwCNA 9A{8j}nxC9tU3>c,z "B.R&^[mص25+&ڽJ@IDAT^RIL'3LAs+ #I-?Peq2mT&!J.`771MF2H9Jǭ)7+qiXx}nSL^r 8, [y 3) C4x)@}Um|zĤI. NOCHRAo|^ˡ5ouFP|wBȈ[.u+;ŧIbyOb%y;6ihQInvsv8d'%z \ˏfxʑv,y DlE;[YFqhIvQk^Hnqm76C; ݑ`&?In J2\ ݆dMDx(0;9p;>`k3t ;v@00ѽ8a t csbIJFX )S3k=hJz@$ ň(1 \!B$bA*CzێS e UK/މ~?w2>cZ;~99S⍛@+lJJnd]?.t}yjiݐCj3H!>ӣ)xuxi6||n;-d(L7nâ 8;}iIvMB0<@у'+=.ڀ]\ (25#3RP U^R (L"?a8{y@낿)ݧIxhj 5&w^I Ud[![$!rݟl`h(3֐?'A2}QrZ}Wz+;_8ev9 ׺KBfW#<+X$_tbp-zaAL,]E3 L9䘈JP96[2~d#"{ԋyL^vI+SishFga 1f)mxEZġ@( nx7ȆX?ܵ9:PFHk_CVuμp9)=(z p$V \cOw?A^I`ٽe Nip@~*DHZ`&sh&X9;u!UCZ:CE(IAAg/rmu>BhavF</x'LU:zO%5Xבm[N'Yn`z姿,^}f1$޿us2Tey>Q4)qDD>0gGX`7Z6ՂuŅ(]Ddmbs!m~#e3\6s3\qRbK\"X 1'>H#~ȃ+7Ԥ"@J.maߔG&iכ`23k(dlcJ{c,4Oy)>(6i3ty6d2`(Ԯ }`hRR-#u*Kƍd>(WpN™{rͶcƤ%?̩O? 6ՋD'}3l C \ؔq`q;WpŮZI74K+xz'@R,rdr݌C+8jsP8z]-".lAIوx8i?'@xc cn%Xr=! %t4D! Xg}{LK}@`:(uJ ryKgRW鶞RGlj6k3 j|v7A5TV ilx % 3Ŵ@]1=Ev Ʀ DM>kUao9~Oph(oĝ,a8XDV y (sHHI j h.]| fւ[ ,z?;ie sK ‘QVM7:Dԩ!Ry]zQ~Θ6h&Ʊv,#œ6 VQ>cZ+w;+u+GTΠ X] R$U[Fb4HԮlkgV3͙&܁x9=fE=DT3={H;/Kƒ*3Xw2xe-{y٘E7Vqz3:5ȃQS1SZ8º,2 /M{4Jki'3!1SxC}^CA)]nbg y SYxE11j>&G4ƐV XbZ nuV`TTZ Oޘw D{5sd^1j&K\g--uާ6 ӇO g X[\ *nGCț$e5_:J7*>5E[4yp?<^َ1D5 Cܹi4:}PMM@ֲ]]afs"\a9$h6бQWgQ罙 ,a9&246Gtt̮լͬ"g}-nx?0o (Nһż-uF<i[PzHl/W_p."͚nׁVknCGoˇcHPסQ*([)m=d-=:R3hE*jkxi_<Wg,ATR1R9kq~^yRTbgyw"&9:OCA|D $B5`C0Yt@yo<1!cNm;M)RS$9xˆ) {펹5 K& B-dݫ=vZD.?DNjox 2GO\hq/gb?@R`Lh<56)Xа5xĉYimxC9w |>:i"_FU`_CK6ި?WВ,h} 4g'dMJ 2([/Udw\7OU@z͏!==)HL];y>|?WƥN#%ÑX pV>t'\Jv}Cn7/>'ǭ8^ ŕ0–rۚZ[xj-7t2`A\rMi !ߥ}g B_5SEeqǑ6jY?&G1K>zZC,Y:yWN뇸*svxL65*gHr'?=A,$" e>ûby*:p"OiTZc0W>!4Tfqɱ|^M8x;A0QYFst0=t[Oh 48O+53CڰdZCg۞ZTΞ}\1I7mj|0qrXDm7O0zJ!A_bOz-О3Q<,{7yPt\:q~PS4`{z[7#h_c׏gcZ^fI?{UyF`vCqOtT2c-m&:'e>UTmŚؗOEuSi/Z9O`RO7̿r6n$.~dQK8ljo6z䄢#qk.c.\ss04ThKc3h7Jɪv>Y|;enx**U6-+0kydlY9̒%/>=QGZO]<|@R~[ZꡱI:2^)) .]F+<~z)l? Ѿm]Ua ^GgGz2xkbMz+\ݟdڢT}D7GJ㛿\#}AgvR(5РZ8T/'s c] |2>FݎN&Ur4wadRJNj<e{3Y`s8Nr@:m[+hW6 ybVo[g~9ش;wY֬<߯d/ .2,Yr:{ U H=iE1~쥵KJ=tz^emKPФJ;і(#Hp)4Յ!*>&8)Ms^Cסغ7Df7DOf[PBolơ#PUZCqfAGޙ}R屸"@.L[zʋlj==NJO>n-/h' 3ĦBC;A~%LM `~/y60kfU)%Wsk 9,_ԬM~lZXom1 yiƨ3h%96FJl:Jcr394mP$dbRz3*Ko>ŗ%jZeNd@w2>TV5 ډTr3T/Gz'.s>d^a? MDoLa+צYk",pZsH۝y[!zG&gP\:sƼO=[8 j]'Aԭas "?:a޾tרE&cWq#PPޖ ^}!V%Ӛ~o{ ybNPV#Lv9i:K>G]<J*gfh 9n-o/sn_'Ys.k:4ʮ]G@uH<-zm'_.BQ4 _CP;Th/phͶ=ϳd3G/wmnXiȫb*{G\c.+hM["LeG?; Kn=TRYq@sV!,`up8=pWq"Mc(0v=vJ5!V܃.|s Vm-(wO2U<3DY~E<\6; jKKyP, -c#ް7%˸]G؀apQ@ 0L{~|@x89yw@!09Y*=~_qgͷYwYij1l}OZFWc7+f+N\qKEB'Ut <:M\`')\!IrUM?.IEgt k-n2bq=PގI'sLVDsp2}UiavTϼRk 1cHJ]lpEFhnÿW$>D>P=} 'YPdڛ] SfSݢ#='P $RTM'1\e-A\7h !DDD5XGLYD5& r*yg`a|pch҉_B}'OAf 0ߢ}K1gDZK^Hg؍|ztvUk$N>Dh9u8k93$e+_lǛ{)fہp0¸]!ܢ-@PskW t C {?fط}xb]m3Ƈ@uvAM8s&C1?SpQېԼ67(Ex:|^)E쌧-Q M4LӚքAb<{DXG0m.XdP05SC\-^Axev#Ky2>0ȥ!=,*M{<,ʿ*+@Stq HXb(d$ĎbF ԊˌS;-RPK' i#̓'}h6>U̼xu`0 :ʐInیO#(>B32f_o>\4 I^ej˖Gc^;E~k˟! qpa,h.4r: X,N} ǠlwYvys9 $D!r"Uhm5a xnnwWW$  B P( /^@ysg}:poَwۺ]cԅM$a͛:(ոIQ q['&%qQ4S39-М7Gg8N0?Ln'QQzӰ/{ۅ-8;peрse::>p3CÅ߅uP:(٠wZ&mI]-tEnbͶ ; m ?hD#$rHe fdAm|/ShBJ jkaoCW%|o>$*M&(uϊKVDܽcd}Y^[ />%GdM1Y{#G'ѣ5J9vWG]]iڻ9[.dai /3+1/–_MA vB=*hϪNϹ3\&Ъ8<Jgkُ;wC/5FF`˩_'ޫ'^DiY*<HۜQ9 E4t4Lm`)-&`aIqRJii$1$PD9514=Ƈܯ+t[֓vH.4<^-[sk>DYl%}G5 lޤL%J m1j0ɹGiV9+ xgVf~[4P$ 9 /ew!YL4b49Z5dǤy4hv5Ǿ=dcg6ةh-"ݫt[aހ YhH ҩqfE70Tvh;aH*=+mg])V Njߧ\Gg ,B*&=&'(ly: :;#G)rBGY ]~OD"p{E=_3&IqIv;"UW?d #|ߴ !XgXin)ECj:@ooM;4@ .42]wa :QNӄQVݥի NFn7f`^QX> ؼ #d]_%J Q^R,?{#4.Ì"*#*΃ )>æwޒ56vaG1>9fװvQդ>~ ]Z_2S$!i?XKI6bB|5ęFR9LP33Zk[;^iE}<=妣 (0Pnaq-̵F)WOx0ZuQyB\񢭦TV_Sdw@A&zp"N¸u42C3e#k%21NixBiEHpw额 -BAjW1~RvZ:51dsݓ&86 rӕ?djk DSδZNutW$uf18e^`] oENZ`]W-6C*[1mg]i$/W ]Bf:ʊ̪,+{aw<^o,'w1sMJA|!5xQןoa i L %<ڛ~^Hi;C'D]4[ k(!F(<pVրd}x&\FobT!Ug g@+.eEwҝbyOvt akzt9=]of5f595=;̃{r% }v28ޛK>BIx vl%{k.fcǬA'7,<2A1f hԤaNT?\|l|ƶEԾxmnA9O81^IIY_]Jm(⠈0:bϗ JӮF;˅!::>9Es`v`@Nf";nx/u+><= Hv+gQ5yf^!nT.wh@^D g_靰_EXj_mpNQ9Gf^~4xziIԢS-nsKLwn#HcE[w<@`xsVɃcVHE]`ހu9kџ}| p!SqΎsf Frڔ6$ I靻t*?6Kz5!Hb=MAj[nZK\.2.;c{'|1>|ezAVNI!8-u y!Ϭ1]]l#ujK@ SHV/ܾo\<\4T9vd|O`U\b 7RY@2.>xR޽Oj8N0#p0 dU+li(h/Cazt7(ho`zÔXvJ9fY&fpɂ(4R*Jt^|ìˑw]YW;K ޓ~YGpEhډ'@zȧ> i `ZоOmR66s?7B@ 8k}`^#W7;孄esƋǕO'N/XYHG[+p͡=)@OT7TJA8teQb̑ Цk. E<(aK/\A b^Kin,.SM徏?#rYn ,'8kS +J!|!薈5Ih7%֛u-+LmB/zk"ٰ*Cm HNʫ̇ų^#LƮ^4:eI_!;혴|I f k_,GPuYƩ?B2K^1qfxCS&t (JQԒz:i1f$HJjy.Z޴W k0iGVok%f=IEMVed2GF8Xd:0\9 >:F.u=NE+HHS`eCdFC0ZQw/Q/I1mC o-ԐIŋef'̂Ջh~oE2Qf$1)@9F⢟LJѦᦶ)(gR&PFFHs3ltSM̙86aN':{8Fߞ6"A'k",_J'>H$w8,H!: +Zn =ޒ$[)*Pu=i-[;GE^BIOIaZ䇲pJוmi^39 _O _4:n@;07͎OsҾyLMBXb`HV,2# t,Ch2%ц!,h3A^ⵔiC~![p~+z2\?B!Ւ0!{Eiy(3l9^m TƛoD+kʜyH BBY >}҃w/eųu0M(ox -nBc?;ًׯS r*}pIl1`e[6 BjJ]$WlQЙL*6nuݻ|47!Rh-~+UAoAT:PЎ E$%?\f^^i .& CU֐^oOei7Z(ԙ _]Z呏30alkqiGo +mv [|` #l&_k͢+f`6M\ os(@]. r,JW TvePYX9dz:ZU3sAdb8zPr(,xk;l,$߃8˲{P*XXDJH}Ɓ}ZDق a|-sr#1!ZUd|D BVH|z?:0(OoHc I1ˋ^Dc"zQ}*y%^G}$<8iJ_Y)3-ў /sp(Zj>g\_O^d65[fQUZ y)}HEJ>62ɘNYVpκ%x}>"t#.s(°'11OD{OCZm&&T郎#I`1&%/ji_j}+q>B/vڍlӴRfۺ l} /`Lk`7l5oLU*&%d/<ge ţ`&Wٯ)+(fߦ(jOh7i&>lRL ĥH׫Ղ;h?X<}%uh&|3C6FsS>sTvmv~ݡRq Ï@je2yUFF[MRnjAOaWY^?Xޗ{I]#^dg4}晖|L( 9$A痘 M<#t'ZWKN,bscmm6yi{}:v—% Od+2tX;vX !;ZH6U3!!n 6V{ >w_ :Km>/)pm;,Y 1F<pD>gyJu'=TJr(Hy :WN^06~! (;!t!~a9grcEARYPgwv><}|ܴіWL|/w`n!1v"@IDAT#呸XI#gJT~ꈽgRa(ji(|mY9d'2}A~ֿj— {/9:Sy ;o# H,sen4 nHܹ}^>y 6Fs@tYu3c酗/f{! `R9BݦLmEN7IԅM8a[o6<2hlJ%cG`Bw!vb֓^774eFOyHv56 :cv"cfw ,DN¤6_-@@mkKK/!]iu ב &xI R6VL\+y1.=(Ac!kX~M;3Xx ƶ#]%3 ,f 6VH0Y[@Y $ !,?D߲:1:2;==fۡ8d 9"*9(0gxRv)q cR0tqa^ ՛WـΘaHC.;A`קh'1q U`zzL,v=,)ljGJ M&dzX h@W1.lB"ԕnEt65 a>ˈ˜wIJI#y}d4#H&j p4WQ`bVunXWŐ}ٚb.aA=@'2 P7ߗ`8ύpj`dx Y[,q={ "yyy'H?7q+lфh\Ue-Dk 3*π7L N=g1ЏC#4dȂ޻Vlhf)iz3oz'&)]Gn.eHѶ  cC޲BEEBŦ⏫k9FPI.O,` 5Ljd+jLDEHӜkv9v⍊ҵ~qb|lݨٹ]ճ[B zR}k%*ڼ~Y9.4- m\m5k\]F> *'9=죃㈠M;= Нdh׶Ay'Mb9W&{]+8Io?]0=dܝ-ݖCo0}JrŐe.+v'z4 `ߔi, θL\ Gᄈ[&$Awb$! ?L^Ĉl<E[(1VaR41?C: > 6%x.9DRtXտc,- 叐(Gmx~eAW(ZwDdo^})xB\#y&Tr]qZz"{` RR-%&0/IB7ͪm. }^vٽѪ6yh z+KdtYk"#f\j%nqUϡH0) 0u.dHOXi ~щpP0:lW|E4p9l{L=7|tXQ#/&u7+gɨ{H'E?$)=8E#~MP ,o fo2X󰘜k^V|nCn9M% ͐jq<~;ZwP2)ibLb~L%&{`%ARҌ΢!<`Ẉۘ*/S >`}'4<#bl$]-2PFS.V'G!vѥZfiKPSi[߼.xhtXxD sIq#ruc/Llj< ^CI&V>Wp[(k2~*I4d W+1 /]xenȣWn?bYrN `,`>Ժ̇۠k!t\#ew D LR^ Aa6[UrfZ3:sp }*`]675Ue9Fn \sb nSO a]e bHAr Փ2lȟZ~nn7!5Vٟ z3T~; S)d&H ߼z#a&D?B4ºlO>Mjaf["t`J`y.R67ʐda Xr!̇$Z 5\V5`Bu(^L$ԟ?}f;DǛ$;Lpaėb^¤(muBv28\FRcD]f-<$لą꿶nSnoeu!T0݌YN>~(\:jkΒ*7ِGj  a *Dչjp! v,E"i#jhlݩtOXbƨ|*ʟlUgą8Xum qRFzAvlAC`7JTX0 Dݴ)Yׂk@ (5*l"j$@ܭXWJ=àc3o9ۄPY()x4lnCϛePm'}5m}b86ʌn-W%fQc_c6 LZv:SqKn=sGԔ }Y!h+"]Kg.cCW7WwJ@8o`|8,6t67sbzp JXH#pcrVR2Jy݂Zϸ19W~<T5>ߟOÁO$kXU"dR>k44JFp?7PʼwV@mt1HLWIC.,@\]鈅RyyA,Xwiz$*4Њf;Sd 1Ԗ*2W#fMDj_vsW_Q\1~ټk"CaKaLbä%O?Cl]س]o;35sܴ~. "uJ=]o/(.Mwsx{L[f/?#أ[9D"ڵ*%z ύV~g=B!&9t8~P{@I Ȩp_R.d 8o hn ڼ"ہxţv~qL}5 X}n"%85hzb6>GYi1Bcu i_I٣eIˋ3K<Ŗg4mhh?XjZ~x0mI4;Zq]Y-7̕\@1{f zB:Xk"`6/0"`-oZ!k0>0a]v syZ¦ $!4ˊ`ԒT5ĶXuy@?Szps`J1]̟bC-@x7)`6pRS6FJ-aFJA0FJNΊ[޼ӚI(Evы H ,s5<,lUc褞+A *p)gX=8(-(ȤH>w'zU5CDNRqbm"xMd /3P4#hx=Fnz5ɍa-`h7lpdma6h40=E;UNDRw~>ӷ1 ,~Rx;I \9'{ ,r{?;N07.A2DL ;[m=[j`MW3!48Շ(R4د9Wi"d{@E{/_tt"$64D ^8\\ÉX!k-ՂW4}Npǹڛ wyʓě?R0e6^WCӿ>8`PǑ6WО4ܗ`*hRb:+H7K--bd۱@f Za\VT#zԿ%sB ^ ZyLGY+x!0 m?< w#p#?;lBQQ߂u+J(eZC'.6eGWa~S6Pd/,MT3k042^شg+-Ei)^VZenbv:5T4nvQ憕0C;nSd5fp!΢Mp3_) U[w 1ը(@# [zmǀLZz U*3зԺ ׳SkdsMC޻hehœ&ǛąƏt ƭE%[i6]qk}+oӑAe~mVѨΞ%GC8uBto5oZMl6Z3%u6d]DzΆ&&[^!w!KY~-n*L6妧/>wS5Em-a :!P?6ȍ3yBQ]dO ^-?la}K͒xU6MnT;֛;!A<.gxa8o)ur!^ӕB KUU؞&lt0"b4=""0 4rQߵ>s%~5]Rp'7^32@!R5F#%ZșdB2C v~2hT?y̸WOG?`c3oi^RFǹ1崁x!1f=z (_@ާxY/Tݔ|M/e gmUsxaIAdT#k ܹiu8C yZp_kAm_D8e`L?? 1`԰Y B7[aEoN~mf"^3m>)}dJפ3HwۭjDho7,+ܚEOIRo.]Jow@ۏ?C_ mAs69$,z) 7v[ LideMg[Ͽ@^Z4բ j1IorJ*v/Եh\ZxT%F jt [d}þXi8e>8A;+adXi=o'0ȶo/dP;'i܋Hu(ؔ҄g#:sDa U+skئƜ4(cr.[7t.n3dM7T&[i3yLP\{C?'m"6ʣ!x/KDd,d[۪D: $*A_J ; z q۶)8t"'%q &o d*ƥ>#v}|sNf=竑__=/Ι'x3R?߿#{|5 m 9Fʮۂt@h,Mvs=v&&3=A"-i~Vb2H~`0KXiDS/]t3Ƹmi.dR(6c 8#%;!3 ݕChc`9'hnDYӈ^u`9݉e6Ҷ斨Vr+AםD`jF6Ho[h5es6g$ZҸn}a>Rtv "ԯvM`Zs䟿Jf4m<ֱ`3}|5z#<@,ƼN[I%+>!Hb'̑vƻaڸQ!7$"EFq+!mނ2Js7&@bƍJ$hPKqIcnMpx /_2H 7fXt"c6b'&$rbY9k$#dDMU; s讣拿X݄FSa[WK 6އ|$4z%h"dhn|z艬%cq2DitmCY CRHEPbxʍ|]m rƔ?|I 2sKw݄i!k!I ; NaMx/kBA3q%z6;7#!)X„` Y e2H0=0Y X%,tk>'C`'3**h79)!%o( @uwDru1-| ­xjڰiް1S4&IF.,Ҭ gv'"|ZKڼ#bExR?k)pk̹.m؍a 1Xjԟ 2;=kw vi^j"mߋcs]M5UZsa@~{|p) 8 d;?AJ!/H_:8PⶕnE #;qs {'5<2|"1oeh mvj-H {׭ܸUA1݀P3y(Q# IҘDGw Mc2hrXϞA}m*{PvV=)۬ٱjmRswݝ0@F~ϖ"bٌ)gNk,&;"b]dWrub\1m<n{BeZO](lF_wLTӶˆ0yRyD O?8ڇ:sҶlg"SK:ZCL b[ ,%j_a82x#C({ޚHgA>P)~_q ɀ~@gR$`f8x Pba | I%8q cWQ2oQ [sv3|XcMT Y!Ԗ04Իdev`9?(aHg3-CSZ[)drka")_B 2aKV !!]H 3asev5nusef긑},U\&%Z!9َLJ<b<:=f>S3öpt $$nAs줒32) sP#NN떑5/Is%^(^CMHs`WYc ^:4 \Y#Oi:dy.M510Փ^ ͟ 2Kf4ܘ6KYɞn1N ]NZj~#%#<|3lqDE诎Z5VQgfQ9* lG !67%@ .9",ZB,Sa]I "68HvZJdLSk8/zni+|dW?"jevV==nsq6ղ| +*jYsSFAy'$Lt]3͕mEE|/\124Ԩx%j3s{ȗav I"8F2|r90VQVwj7">|HO {FLUW`BļawCs7" _# A[NLܨk nZu ;v,0EdBY% Huae؇X]Q@h{ahd{A=Gڐe\܃n~ρ!F]VS6HOOS@GCtJ(=>2c)xJչ( /{(@W% {M\ Lhۖ^L]<L C:,gZَgG9;|2;=uY-㳰};;O.O.f|}z̭@fI.2sЊHdVPHna m ޝSd9X $< y@3fd"e4U mVx#NE7n0kD]n;nD1@ (ǗLA~e(;"PJA4(ܪ']>=$*;馚eKPPZKrpOaRUZRCF@(5a(b吖2fYCsOњm1{|#XY@_ExʪdHY97m\ dӦf%3ndK<@e$oD܎GE|L i:Zb>7:tʐZB#jB=~"H_&G)9imJzs]4JI&eqkK`$2Σ9l:0]XrW9zca[r,l:d<(AJYF. itޏIeVRx<aWT"%ex]{M>q9"@!I`p0!aNdGxxn4.^(21v@p$OGCuF(Tּo,Nӵ)`Ff&3&G\4g~ܮX.sK4 "aX~Y˭Bxo̞Ohwa)­%CTw|k@b_],uwQӺBȆՍNɡ~d: NDMJD JfKvpdGDHowyˬ $[ c=>CD77L[Zvp= I$/" wgmʪZjkؼs[)Ru0}v>FcfzºkA4,FW_*h ȵ:=oJ\r{T6ě{0==XOJ5._whzĚL'UXݎ@Yt(t:l^+# z\y!៣E.fnF~RRv*Q_|h2 VZ`.m1Y,F*WVrα6 0B6H0V> Hڼ ̈́)a\](zV:]KjI:CMmC*='Je85[?1](࢛]wumf io g@X㏾\<P:v+\.Bpڴ}sn:J2Sfkji]NϮ% M dlN1l ^k9Qvt%vв܍򫀴y[)j @֝9PJKu*B)oR/2iCiƆ-3(Ƈ,c΁fI)F^HnKߟuY΍+S<`PM ܍cnGk$)m {OaWy.. QIc@TԃeN*R-y")zbiƱZ]˙4|נh|:DytUm 1Gٽۦ c? ,,֢?. s M9ǓwΘ "mL6NJ*F [6yXgғҁv4[!gj7mR{ل>+t|m*Cx]2iwu{G02 =$_d5/gLUy*( CyT0 V>sA<)EP6]BD}m?7`0|L^yLPwB믴9R pV;G@t$i-5,Iޙ"ܠńj؅ŗ͑EqXCaA7,\u uK{΄W\6(1J`JYXy9sZ` .[wJ^ӿ C !-(Ug!rrnxr7)) kYŞGΨ3h'nT70^C??@Joonyծ85HPE}XLbr6qf.1LL(Y4a 3@Kl6> R MlƖJN7β&((1JTabdžM݅_<+*DlOl[しI mg{DOn2 &a ܎2Pvr# &ik ]AFpm>(o>/ʏU\mlfOLp565 xgZ2<L[C\={Ǥ#K9 ءx-FGGڮxN!mW|<K/b %'m  3-2AeTt1F2\tBo@IDATLk `^vW! J7. ^S00:dT,,n,Akʕʋ_KJ&ivl72ltt[8P)h?"pF7fk*Hq2d8X3sehnص8˅ <~=/ Dfx "GCo.7|E!n1+zB3RvG 5t&<I";$˂sݨV.5}]AZE5la 88k@BZ`qfqC@ʫ== 5Bc)?5sbӞ a#́EepJ@GM2a'ι!>q8I9Mӊ=J6 O7d 2T܁[u+NI`І'C@r!{_rX1F ORVLv/@2+%ǝCODO r0+q UCN#(Y`w)o'2? ԇs37W{(e2NAm_RgJ?{0'ٯN>./nٷq'!"]O@7:I:)vPtsy9Xc_c_dOkʛp qHon3-`$=rlp[s K*䞏auhH4N97B_keΜS(3MڎyL Lb(0>. J`0KqA.)Jܤ㡊>!8啱iO#I c#~lHs:\?ӝ D Ze B`2\MnhR9R.s9lN| EᩋA xZtf{P>Lwh @Z|fkbr3&r^??Ogd-$W[JzHtI۸}*3W5Ds-[2W)ߞް}%VLoOSo.fl+VLb0R$2ҮL_nhYBկ9Må]/oj&KEEA+œs? rC"tIA)tRFRZ36/firR-r~ 2]P`r(Fy ,0a\"ڹj<v54t&gFBTJs4Ecp+Ruז: SЇ'ޖZza1+4聲y ]97Bn_%A23 oK.dt)1Kc;A0]MP%ZYc:[9tt{ -,+o⬟=<B6ff`m%[ģMwgJMI^ZͿ58Df,ES(DPOfr\d{0Y[R l^t?2 ((dׇQ d mm<;&)9' ~Fy#KTBOC;^-zk8(uB A$Np]ԝto`X˯ۊOn Y?g28hUp[:fMs)̨-&`Da ~.T r’i&KC)',y#1%+י<>".l(D=Ya|ʑl| 4$^К1 a%rJ6IXA2c f ^} 夃_`:;[_vJTEYDSA}jl݇l{+`E6 6z,gu5AșM,*E&f&ѭ7O[A#XZok1"Iz؈mƇzٗQ[åVA"\7ʛԌP1n_㽓2S|g'R,7B[>-DuNyp ^gbR.C\FrQf)09;ҠR gH4M[|<7W=>\4tS-@0x1 M%wpzp)Hkpݺ&ŸbCąҭʂba % UL(Mz$Ao(QpGMxMmɁܳvcɝGюK2%Ru<.ML"&,WdDk/pzŃ2)"\6CE&/?NJe z=?#zb܁wgځ/2#? 7lSY^40t9̭peMeؿ) 27IZ\Gʳq.&L 0ư1+>''K ,R22l碒`V.~JӥP%SۼP=Xƍk{)L~\ ]l%=aLa^R>o0޴?AMA( |,E MrÛŀ~\8x7ʚk"3Y 4reYY [y¥֓MSG_.)xG˿ZdK-#I3/itD|, Oo#[).Ԏ6!ARaӷqjbo Tǻ:)0n<b@sמneK7pkrW"rC qLgv%+>ef(QR6AJPCN"v'b6k=B_wCb32=:MfrKA&!U\0I q.xGB7Hi5ASfPiäE{k\|?LjlR@:z%d/sXʶc[I]Wر-!r,{XIpVf8%ad@ŅL8ry4̀\߫--g5&#K '3ct:>b?b/o,Yh>q.yp9K9axXؙkrvƒ30.uK WIpQX$+2X9 @Q:<[{혰 )26J~kl.ĕo4Q"oᒑ}`Xj$-k,"KrDž=3u XOXӤuAKNYtIG[2H;਒Uʄ̇<#v=0O#M8z1qȑ$4 :8>cdfo؊y#'ocUkwْyM&ޯAUImr$nlJh|Xyo'JKHf>@Mǣ;@"Uz?]{b'@Q f&e7h[h}w #IGs3Cl@2Mt TWkqWBGx *< h27BsQ?k{jmFD&n@ HwqQFɢvd4z58H 0i< ƑgM3Vy۴JRpʟXM\F+ hذ?gmR88suqykT?J Fyf? imjn{zD;dPԶE:z~? rp:7Oܒ<ζv.½ptkXK(ϳmH5Y}ZXje1d- }2]xh.Rfp17GUK˹C0gøЉ!(߃e}iP3vfPbj*j_Vܔ@~ͭt@qx4߸ϕ[!CĦJ:7mdgtjV}6 څRSCe%vd{WO f9Qw̖S1\P՛ 5ٛd@-({z;㚕_Dpwt74ɐ&.db.2ӝ$}:c#XII\ k,aI4A z2:{NTǝ ]P.]f)2x2"≆Fq+>98|ۋ9oԉKc8mt(+qo}sƬ&dtVw7Q,d$aV f.l:v"}74Rp$l/.[ l5szI=A- ^G9Be'YQn<:z}x))H8N!Fj0ШAڹ97D/kOa!DWwۗ!fv_!mHsx0&jQaW Ya^ZJ!=øUn\n641=TޙLyuaXj_U1\hq  !{.\8P^pL5: }i[K 0ƍdBL]$w]l J%v牥@O)HaXtv[4 eˬ\ )%x1"d}"G1ψ!%O<@M|D .Ȳ(.'.s =\rVO0C*[v'=$/ hMA`Q"v*?"l89 Y4 bpMCL<"{:F|=fd6'%[_Lj!ʑ%Q~j?j`|rp5ln>2i#sMTľlg!JO >LGmw\ڐXuF4܇Y0-VLe/,كȹI8˗59\W]3/‹l۳VҜ&$ɱf xMG=ogs9G`=? ';#6<fI}C sN Bj\/-&Cji>rfa~( qO4d|]ĕZ.1ki/&pqCd<Ǎy; _Ł 1$.;H+* yvz{n$kAXՆsDrOHJCԩ׬NJ܆;9).D: vQ[`>l5ۅב`59>2q 63 0x0^DU$N֣9hіW黋y3$)zz'j^.}޲lK̕Qw_XW $9^m'^H"!;$ZSn޹"B(Ln>[@"ZxbY.Puu0l^S|ORH띉 dIjqHYTh'=.A{sp F3(a3cItd2;ޕX[oF_8p3T'vػ̉]WE LU.BdR|,ME w(ʝp&; ;ʴ Zp _Z<߇g2p${*PψOs:dn:pϰ]*)Hv n7N7gݷ|+YQV12܍-Z}}!/ ud(B&!=% fseTY(GH,:"';6W7ʨ1fK\ mJgF}!AW&@h ?|H}!Ӵ xSX$ (茑O 0#1g':aBc*L=bqPEq5V:d+('9>lNN}>WɢŻx0FÜa2n\=ILZsiF_'ƅ ʓ^'w'bqL|603ԏZ)ku|4Ap($#w7ɑLWb'`0\ˑR2 9M*W ,ِ b,RyNjE >_l" jRj6 u .*5p#PEѢ)9 RlJ"Ԉx8|ƅ6 c΃N=6$(#dy(=(E쵎UT BI$*eX:"@`<[E,?_@CMzC{QKjBO}1 X32+/Zp{ظ-zM}y9Q3:hxrrbNv !ײpJ?\+0%`1?ӁCl6m^1IN5W\F8u4Y~Zُ*ap !|_>kZPҊMlm)\#{p 5MTą3`=.te^.'ݝYjJ3) b߱:zñ뭙,SuT.D~K&6bΟ9Cm(PZy|}Wh`,|_6`))U?֋U)k6+.%/ Jje_W M}}"5wnRUه2WqW$~/3Wj?C5;ۋ ? "27$#u}!@r s`morʉ4gltf4ˁ4ą^"-]-yR/A샛1~T lJY2Ɍ^{L,Y~5df 0HsϴB,VN?8Ry=(;VQj= ߯`μ:GygojYXuOJ`yoV3?!Oen24<#[8D< __%J,i)xE4A6 tn/-gǹ3Dvw~?:K@5FM"StsA×Bf *WV?i{=ANbAyy+i93K=˞ f [}Y;M mTR3XV!S4Byo4v?36,n37֒=}J,Pis@ MPZػ QIϲc:u J9(Y@6fZG2ipl\Qڴ umI5aܲ#P*N:\Zp9g*9@QQﵑa~x=) h8`~W Cg1=I9AwBMa3 RIoT.Z|37QoY–E.`$bֈJSH埁?g\G662ǍC%I{IR[7{lzzlL( DtxtIbü(_*+Y{;M9Lm&'L>4SQ"F5] s8}j ;h{Iio f@\B^hsRQ9_d3f,YQp 1hs]6E/V1mbj!+`9@f:M@/Aϥ)`L 0|,e%xQp,Ib΀"ڟ;A㱏,#::mǻw*/ʟɌT>E,TYL&? K[CIv*,FͿpN~ "> rNu; NЖ#(ߺƌMz+6grK:D'2~H iP{T$ VSu=Yj3Н«u8YR".)mT. _-3㲼,$SCrbJŒ;Vpq.Y\ӧk8:%e,k]8/.yzHX c0FgZFSʓ!VFE%J=w)1GF_\Wgp.ъxnZpk^{MΎW+mKRP#(Ka+8Xـ?*32.>< h7ܜe]z0]*"5HqK@WI^\[]N []Xr}|d5&j1h /,+]H"m=fnvVp -aRhƆ.ɜ{­ ='] ?i!-a֑ m'\:ˡnK$3nR'>l噚 Njzbj(J#ߥ D셎g{/>Eǯb Z9C"m#waŽ/`2CG,98N=КCI>&a!\|`3!['ZO0ob/"?c aDIm'~mC!g_v4Xu:ltώ)-XG+ ͈(66*; 5Cͪ?x .p%6$sF̧k.v0 bǜ\|Zãz J]Q)(jP#!;$ QR .g5`'wUVZ,t]\m~<3 8q!DvSӥR?R.e];Lsߟ&܃$qFX]o}j~ 7'hk 5 c|v4'S)ڡrbRdVe2E.ED-hPIzLJv1:F:{d[7_QL'd;Ol %3Vk9LywѮ!'{Q}F3ɐ6צқÌْ @$/gB4d۾1VqрtX%KqUnhO`Rɬ\w^W(fgUxcsx0-gM_5Wn? w^$5YMAH@, ? %ҼDL 1+0>??݂APV ǧNtٓ5yh0=xj/=| lW|<_f܉_~D#Sٙ`Ƿ'bKƴZxL&3Т)mGv3h# O{.XS0A#D?mTH] ؈2)EY]yȶ2V9_Ĭ5kw/bv@7u~97s:)#bWD*GDHUq0r7:a J^;UFwY̟_Y uO$i)ZtGV"_m 7 9u]bΗjkDpetHdNGG1w;i! PpsUq;S r{2nZ;oLg#Tg0 j?wJ]tgsy?<D!DU#[ZExgK63ҋiI_<6D)icRlGABݻs46X4N@\ [@uȋYaPˋZZ> 0 bj8,S9,G**I>3Sl< XA22Sj@Hf)uW q}02tcOGeQ᭤8HCǤʦϪذmvwqēx)9t}_"!\F{x `9sB~N v-@5ex{dU@5cC SWG 0s;!_k%彯+`$slYiE͛^кdQz6>=` kj@u9  ;!Si\XT8?U;̝s6ʿ<!ʋ eEH P4vsVzrԄs8/ P~H@XOJMsR.M]h   hge[%b.R"@=⫷ aVDucgʥyv }\RYgk%ھ{hCc|[e;6KT&"*rS=Gſe?j@}UY-va'U9$9c)\e]\A4̥?9\+l|s7uP]09Of̬NeVՀe$#N@#LAU3eny 4<`wkgu}mؠmG*Za Gx+<]A(076?H4 #e-&NzĊ>Vk|8V#h Q0b|;.a6 y?freםLo{?r"D`_K ͌{F&:$$$|(]\`kRΛ }gjnN~lAD,'p6:RUwP.[R2 UCzɾN:? ԳAb@bߑuʸd#!t!$jjLeゔ]EX9nV{?Hx)9DS~`]C%p:nYMY>gm0%i#mtuJͤŽv~/{ `Cdx\5=#SY%îc8cSNS3cak) (P#yEv,I.f,,xkrk_?ln-y3dr喇T5 4N7jHH݁݋#O5 ^B).XĀY; c)j?~n5IƬҗڕ/UHLKc>^PAԐX. d䍵5&:"F<hx楤}Ͼέ#Vh i)ByjЖ{7a)D V.!šg,1w (5H1NJc\b*JvmSYYBDcㅗ%@O* ^]iV2$u)&mqE] gR1(2ʭDRAbM eL_^qKglmX{ [B:hxжwYt_1tmN#؈b=KЕ]- - 8T ،af-J$-lsF5>cn@ ~eVc&Q&GO`ҌBu Yk󪣝 ]a\@VЉahuK^G"2U/2>0H<ļ8('-+g^Brќ#:( @ZH6LYH6?`]9q\uON(>,{Pĥp @M>i;cS:jQ[k|[sT |?QF@Fi/״i6 ,12'oJA E?K67;9ÞJ b 1e`R eG")Je<X_H)VB0j8: <h -YtΦIj$!H]M')8DG5@żx-]y_b!_s'~uOYOxP;Y4)*ݦ.!DY~u 1  St])+ZB/ȎʗŸa0PITzw$6dm.,$pܢmje>/Ogg9_?wmN<6eK@bʜuifˁt z>6V*j?~x ,z\<8^b5gn-yt`sWNh{v>NeBzTVSӼ(VQPT;N ֛!b$.4^-}~ǘP%}dV¯pa}7%R3ہisL۳Ë0_/_&j Nꭄ.H6[_d_ q$t/vɤx:M;it{G}G+;a2kI 0Y5o3),md!t;xE@+QeD .@GGpO)M*"Yɻt!.';:IJ6d?sohGykSgs;R.YM9132!-5̯\ǻMeA#mkiUО9WIwdͺj()4)-ι,׮#PfZ\i\d#2 馄!dW`u&w/J| /<,ܖ}S"X@IDATcJUp4H{OSK̈́=p y,BltQoҼH]MmC"cgYw G+.6jܔ!Kˉ&k.6ڀ L'Pb/1 _ڕL˾:*1X{!ɌJ62{p;)JG^^dԽdf\^t 9+v<sRӅeh ^ t2OwK۸P֓Uǥg65?_C!Hl(,:k/cc H19lݦU_aBQXlHi)-65pDݜJ̔ ff3 ݐ3{u<@I>Oz癆>EY'T$ p,5!pIX@a`]HER1qa4-x^@*W_oή5N#fЁEEl5M.׮X TTш`x{[3d/i@>ҙ8PNW7H<ӷ?HJR8M?Ov]m:\%C06\|Ai`؞vvARGy qSe.lxG"!)̢vDփxMe#fO#Z_b*k)I섴#/+sؠ3{!Zq!M[ot:D 89|~2>ޚL0zhY}W6`2d[nd>?'/t 2HD&~uMH1k~=JX, >HEWw1zmZ'52-f=?\HK{fr4]XHRрZDÀzo~{Vu}H I{(i&9Tu| {bk~ߟf eOIey Nz篻$2 #,uGk{YnG=|_I9eh[ ]J/lٵFn~?`zAL9' =ao7ˢ}k+w d ڙ釵-[JSbaЇw 7tiLϖp$ a;|n(jZV6P&?I lG^LEqp+YlK ӍjT4ڸJK5Op`>aJآ3R&CP;شKlO\cᅮ׃9=i,%p]t̂QB"K¬!'π,TφThT|"DT%)v0VJ /=mL G 4x"I-!M!-}Lvz" z$}8<8$)rZZnKxS [N}0LONNJ\4y~k )v|Y9;oȤhB/} qetxxx)$}PYKr+?;;;F@H%u&h`&Bߴk;m2}Wwa;ߩ4@=H&kli"%tL 7o?ti7T=ȵZCX\d'G'Dj&:2o*8$`d7.( :穣F Wa@bPBLǓ 6W_w[ܘ_|nS*nGM&%y OϺ|Y`.tŷKHPp yXiUav A F2}!̶Hp^+}:? lźGIhFےФe؂q_BIv Թaƅφ5#]fh1v(eB{^c[>>7aIox4tnDGGITm2R;4`ՓY!2ѻ\k3=}eV̆ 7WLXXa&@sݾ T2~= p )0 ^ U'%PXEJ AXJ_ pβRbC+Y[®Q4tt9ew/)km2}D,*pGyi?-廁^5%w ewFYKm0呱 ; óvS&d@ȨV'z9kH ։C ƳOQdHb+S!"o$dW[٣n8rlr͂axeշN EZNA4!;B5/ZKEuh މal s﨓zivv[Ԝ/p>PHSkhyD->@?^y// @qa% i>7f4Knhhys;zHSF QaSB߲Id)|p̥x @j_QxHڅatr. ᗴVi95q6TK][*[ oZX<| = m'vܤ Ztv;`R~s(# P5IujelR͉@hyG+f5G*;rџ.C'OPgjKxƣceApQyKIxoa.7GIG6dsS˩'xRR[Ee&f ^ CvQc] vd~ G:N@i06k{s8u %CxV?E6'xeywN1XfV˰岓]3!'G^b#i%:>)e ;7"")( u9n:Falz 5O8S|'[3A9APaqy#jpMVe[fFvZ-}gG8xY՛5+1Iɶݬ9lڻjÞ!C^b>-W(j&y +NV5 =<8B Ϟ" ,^D|hݐdlj?[ "0 RD@zcW7 Ҝut Z,so!W>N<qϽ:1/t3 ỷ}e߯i/IJ KHrMYi%$%l `PW.K[1%DPjDf &6-M(QOk%Yk a6n'AVF☔lق/aMOB@5F-o֙;E!I8idb/L~i )a%eC"b/:Mi柳YW`H:kBv/D:Jr}\ ("H%4K _Fɤ+ߖ] nt4z"n7m *t8T8‹so;nUY |.DKq%GD14-Zg?=Q>p;,x_j߆u IOySQ%)?IA!~vfH~?Aq3]C/I8L=6%}jnV{ЊE RgTۮ)9)cj\ AWlj-}Cą= "OKws'!.eleHګlAdUFVNds~p-xL; ǚ}%>)̙HL(=Fг%cϐxsCܲFG,,*e2rV#/' SE/{ a`0u5*Վ^ ͚|.Ek r` +8O)cȒTMz#E&+USݤ-Rĺ8!U:;A-Heq{([Q$m,a_*d]s'h[b8ut?I==:Lçi Vq̰gDPKhx@MP+_)nkD n Sxɴ"=I_dJB׆.IXy aDһSTjo\"5 SA۲Ne'i1fʐQbmPE;"CŬ6? ^?2NPM9=P!$3kX=3sd:qv#* %-PvA):R&i`ݼ~#c`@\ԈV/asN3v~,%M@\46۲h9Te]\=(s|ygDBRx.nœ80+dLխX|x7o4z(+5ɕZF(:k{ʦ|x>!6S p6:?cziAT|4{Cl6}ظ \xB S{5L+]LI-Z6-A<(U`CEie,r"c1>"L$jX\.Ϙn89Ɠ N%l7Sϒ;ڮVqT}M'[ws3 1$noXx _ZK.i03d伳{0U5' S1Q:uw%jcY d0.iσ}%n!'RCDֵvW Ueǃ.oB]6nݼkRi+BmM:JQDX~1 $.^C.0oOoӭKjT܋#2hڄ(JWǰu ]x0PxWp>jV\Tbep:<;( "92 h~Iq>^q#0FsY|Ɛt*ncퟎ0L+K4(@\h2r6ɑ<Q${QPFB:1+_{=3ټzIT8xFE3Kcu<-WW`gBz*gy4tz7<#JEy)bCJ\ʣdH%J 2#vO(j Ywi0i3hzo>/rqBT #(@Q~rpN$E~mZND8/ajq|.*y5ڬW}J87 \ny/5ژՔp,ծ#Kwsu+{v\=.M8%4W\lӼkr {ύ@6%HgR.2Lt$0]n=*n!2/񗦂6tϿ=}+Zk̥6ɥ'f`I J< PzB{}D^6kId_WQ >3m6|̌ W5EذhZ5o i-Xf(Lh:}IhI: Y-Cڨ6 +y3))Vl%M mYm:|(7M?֩/Φ$Egqd##K'|0?  Q7+W '[Ƨ- s俕/*#0rbP9~+ula DZm>CGB72:{uH 4هYL7naLxx8yPyJ<.|>-ȿQҚ1[%X5CwR2t ؂NH^@Ua/{T׌gs8'hns;emEjSj=>wNZ=LyYA."Qy}HCpcmؽm(sPЙqf-3e>?޽wDh-ȶ˷cnͷlP_8N.6;RNun("lxZ.*spƕЁ''}X#V?BjfZHi | ?v&|Oi'H/҉gAk"b/bU w {/\S%ЗH))19nhj.[Za_r49{ %~C Gvh_evLJMh({f$4cr/Q͘~wpivHNy.LE(e22:( D4Z>%;Yѝo0ÅL-R(%]l2ᔀ*\M\ie] Ca{1}<)CmfIZ0)~gs.rAλa*M"ϑEh崔O ; #0d(|%$. YsX7F^W~8o6i^XRjiZwF޿ㅈpy-{ԅSBYњLACPA:$:RKR^<wfX =+CNHD'X?g0\ \#|:?5}VhZ{1s75R^&u]{!i[Oi@Ecq?VN$%Z[& 0Ѳ= xn7U3.N`*5Sɚ&֩l|F FGɅ??oP19EJ/ߧw2mjSLeU"fsrRL`^ߐ8,ƌ{kKeN}u,25;ٖ"|.$8d@Y1Cp)9Rgy_rΥ d)"* qauqW{?\!N]p~*ÂӮi{|$ K0kJfoM!f]4P{}]tmޣm&%ȗ`g=D7"[w Mh|8JiRUy~4=E-890 ,=MzSfjԙg|2;oHc:Z^LQ0[g%℥7;9 rlE}O5rm>(iwdV@Pdx\v.洡lmDB=TH)hER2ՀD. G>1UL&c8g4;pR9F98X빔n߰N[>qs= L>~T:H#btTv;k8CDGkU=я[sN KT.fX~~B}_b@6 !sH&iGnq@zod@٫GͣX/$3`pH* ^pnCyOP ={n pDUR9v!QNH_+ZHI)l$as2WpL)0I)-[ڸpvL0)ZQtdoִ`e8&Rwx]N* lojgZII-I hwgH]O/kE8}=\І  %r3{/uI$ ~Y˔ >&=]6:cř%%t`4H`!+ [UQ&);9]]xld_:+;lZ|\G%Uې<>4_6jo'ڧ|gaCU&0@x wh4cXKѝ(_Ω_q%-?ʺ68-/qa^]F R]@tyϔi@'ЁLyHQ_0& ݼZ ܴ˴ꮭI(O?ɩ )G $bd- nSlx^;_V>6P]CIu3NLh> r`2aYC_c4z#ag0KZ^]_ԥ*TāyŞV=tt>8 0EQH(^l&m*7v%1HMƋ|.6a`Gk$.ރ|`K_ 83 dV*#;F(A aݚB/%ӿEcⲀ,7‹ /i$ NKBb<5Y.mےݓkX5L\rFt3>-j#[TQ1n-eR S.Wx~RQXV;_R3ЭC{э-XӍ$D*V3p fOpp6tC^}ljV_$ t6]6pp N#c.}} ;st%--NPxsJJ$0힮n5 dp{ 6$kqّW] NPYamJhz$VX=ԗWkcN \] b|Qx\|BYlA): D+cD51"HvEag=2;]*Z U-:Y3}x-ht 6ɣ?/6mCiHiml%Zt6l\it7fSN0[B,Inc0M& JiێMh΄ ,g'rfMٓW@r F(-8]`(g3ЮOEzZ]FJ߲ ,Vyt?HEuaVp]t>c;W^gЏl ̼`?IC0?_#CŬ-A)`V1F8a ٨Cg s˒e]'ss sU9=:AD ,=HRħC|/k|=\5 v}jxӨQԧ5aOD!̹ƭ'!:j1& &)ujFڞuG8C)zrѺ}YHggI_LUʂ'fDSo5uؤ<ľ + pZXBEF[ ĴO~? h;8@[*(b)RcNHEf,`X^A0ۆl;2b5O†(vatd#5["5cqtuЖf~~5O \C{S>KV Tj8GgZZ+JDJa є͚y&"&S×Ie&`l]ai>Mr6&?DMl`H0>"pT913Vޜx-mj!L=6(W)aUo8> Fsef$;BXF&#k6{pCkCU~/1xvw$ oφ-:mPKuF7юE2[-W U* 4RNRH6@r5CF566ev!PKS/5E| #(i mGBne1`*=LP76ԠLIBR*RQn/f)@ LyY<3lb6+<8h`fn>B.gSpIxVn7)A;! ON 6QP {ɔFgaHej'!Lj"!cI`M#Z$ gHL>·9i*ڈC{>.IKIw饓eĨ7eR{X}D2'p=D I ƜFF.1! ,Vi9DnL]D eAJ^Sϟ#V $ ]{Px D5Hm`FRO3Ku @'ݚx"2P0ApQrd', >RH+UʲFp%uO6CFrhru,I$|mjGTfQs={ц_#mQ;f~"(Ȱ%GM@f邈>;4uED;L+G`1;.Ei{v! )FBHWh<@ fס< T'aIIk X;&ǟRWeʸTʑjraBd  v0>H+o]4X!,AKwpP΀m؂ۅA 9t2G xS,y_>9S۵%3U@'eGNm̍Eه4HH0ѶRWRȸM5Ӝo;2@eɦl|HT-ZîjF <`w@P5͞S+ jv[זPLHE7~t>:Iݛ6,1Caڍ[;6 *^ T3҇c@ie@J-=Hƍ*vKp `[{L{ my5uYs"Hi2qsy FtܦgtZY,6k> ~} 3twO+` 2׮=D2S0CJJ͚,%~<ϡ" @zmkc [C`uZ9#>-^>)[r &P֗( qL,3R免%PJӍ-X҈*>ҩZ\MaLr}tTlD nާsVS9VJ )uWQB6FB]`Y )AJS҆c:n(^\ B@;IT/ J)9ė ]7%`χʨ@IDAT('GdoPӵ y8MݥdZV#]wl]wM"A]FgbH%ʱO7Aئ:!5t.,saź-(iS:#Zt+o>Vc A>p05laf.d|ƼI03=K_-kDpYq 1, ِ5ȴc:z Mp- =U M0IqLzZ5 $ BڞZU Ӟ /MR0t0`l.CGl ᦜ!2RypB'm ,-rܵZjF a: ?괦IUP n$k!, Z.ǿat/~wQ.`@yn=2YZn{Wѽk (Kz/H7x\dh i@>uUluQ ye;V:(wLR$x0̐pPȘu%: Sb53<#U)n| ydd1:8Y agu gS_}[]^C<υ%[J|tfղܣ=ڛT(t+2Iyrs֌ܫ;@ t - Ky'N>DnfA $@y`r2JhВeC+#E*o(w8@wJ+DZ! %6Ac#H\xHoFԽ0I}&a =lXu>gqܕ4IjqKS7B d/E&aLPc\d%cnC!R)))ƅ5lW2L ߕ!o1NP]*Syp5^ h઀[L %7"!3r sZFܿlq~wמF0i1f9{_o[ܓaҋGu_y&jwn5z3%"kdh2 /'-Di{sOpHִZXŁM %>X'2AY ٵ3`62Ld|f5鞴#5(^:"j;~5YhCi=Ŕ /5g')u&Hct'bS|"yo:p.mpC|x_ ;F%"yO~mpO|<|~´uuTT]x2#1$^a߼΄IxLd&vO'W ؁W( S#n<> 1Y )x:O:EKs^2ĩV^$1h(*Tѣ2 `8z򬉽V B0\ ^M Z o1Xd^p0 Q;. uR) ЈGln%^Rܞg I{h %w\6 `ĵ,r7m{قmxY,ySBV9tTm5  yNd%>e)/jr˂.~H6||n'g&Ukci'H ¡IL nI6sξ5-I)?r"i&_UmS WR5[{g& Y)y玩wMMD KU4 tgN~* J4e]n9dԁ~;R(⼊O +RMh\M*m':`mOɊtfEk؜}:X 'pϜ'D_+f#QX^aj,PBAV򺢚ᒀi=NRבC. `٘,>~9,Bv0}[c-,O!-XDޫp!4Y18JVƧّS $$q^bv %wm[Ъ5v`5wQ&b>DO.0#^K(R"뇵L9D C8SRH4{yKhݒD;lZnEz˼Z_#.U@4G`CPz6P2)50%WPy>\$l1ht?6&(}f* =Nو@+Z`?36oͰW $Ws0Zaʛ!A~N)!h1H4!Rp7¶Q^tp^d -Cwu H]Lo4~2-P7m+0:P߼, $hGgdQř ] g(MURrݭQ{Q0Ki;REf43 &遷Զvb. #m:'_{JaIE˛lrzFly#lH?(* 81kEn-NRoPkrJn3E.`LF=4Ƣc3A C< BӾo~]{+V+klH( h16c`-΂H.Y=xV{h̠b໿.Ui8xь eE6 #%)j'IJUѽn` ׆ܪ<`6JTKt|6AyO jdN#"w҈!%F9/+ӒpspBәP`$o5%Svx3/qTl!|ďJnܭP;Ycc=[9P*1'9Y)ƺ|D&:m#БMn>$j%fܚ%@^3';hC3ү+aKQ)\UYRZDtg-%8'o'X> :n5KV>x0-tnl]-$S[y1FܡܐR*uxqkq/* j]AK1;qEFqK-)\2GH ;MnĴ$Ԃ=Y ORF#b!H#u5%5!eD94iGn4E EM3nz3<%R/hm"֠QWp0 AԂ.pF6W|HO*$1 gH =| Wn ka˄ˎedid.//\wQʮoC S`T 33cUa7v|֚ ْ`p<(~ƈlMI=|+bD8wl|bc>@-B[ktD"I IO-Aꦇa7eE~ (?xL1xЈ#2 aFۦu%c#51 F"-%2A+= (oQMޑRǘK6"#EOn=@0ؤ%0b:)cG0$/0XIِ_j^)/?VtbbAWxH)&?>H"z"EprU4ڰc.'LETg#L:-/ey 8F_>%l5ݲ]b ނ1O :ݵ"bywm-'/awOOj&o[HGa9r@kOJ 4MB<JȆgod+t8du"'y Gh2ҜZ:[Vk;>StdHdkVZ8z) -??{xLzw܂28ۥw)jPpV4_{B,zCz]|քm>_G/ߠ}CEZO*d0߾[&M>".5%ei=mO{W{Ӌe] (3(*qy޺G)m;'jt"_suq'i>pIM dZmIĄ,O/޼B3.z'uz3WKҎ.~rR_8wF r?PGc"I߸с-֏ ox5n A&$˟ vD?%4뤮=`Sce2⾿MLld{s(3dc4{T{^h-tPW!>t|k?H=nnY V^uʟٝ}B()FTI jhtkaWS 3لrQNՐT]& =g,pnAu6cQqkC1?BM8G5fj!Ƥu@5š`HكPa'a&vn/z7^ؠF ju 8 ӊx"UxOΰ\&ņ+O0emJ/Κ:ɅqzL zb7)=bQufZQ'5%,tQ܅(T69Pa _io^pHMi1 pkeU+P7zK.b:@;#Ux >H0?4M+Xsd6|aq#YISVul" ~JGg{[ٔ d FV=d2UZq!#9_%^1;"`I>ʣ)SG?_!mp1q@,-n&k@綋H nĄ$ck$^Abx=!%p!̆A?Iab)G! Ɔ$kY( o?w3}yAMo !a$zZ&KEl'ae?Ǻ\Y3wdq;%,.2f,r\ܝ RYR '_XY]P S F#qlWjMXr =[دKxf` ʜΆ^0=.HO)s01Bz5;v¸uIyN `"A(u@eREo[NdQ׭ҟ;{`V~F޽S~{ 荲@HA*@ 3^&9y"}x!@/SܜmY](ўRNQg: g]P*)lj?1Zt6=Vh|u1Qӌ;qU=%QX:|Bʊõı5[2!q4/Λ~ Ɓ6JߛЉ? 'oP2NGQWYI0[f&TĢ5hJi,M^@m~g 8E_!0+ YC'a h (YBX m%āif+J!`Q>z>H 8&zh&?ąSE-+=L"XE;]֘nce/ 4Cz@>˳?πaI~hd $5A>k[zT)۱s պL k ^F7 ?|׹Cc-QRqeA `pٓQBԦZgu{[]3Ḥ'TukRo]#9'd(|)*hy hƮNPmǍ=%AO)e$f(bZq.nO/a1щ71ZA $m_C [tPѦ&m#k%섶.=5t\&B z=@9H+dĘ$#wG q#IlPx^#<mQC~p==j춶 WNcnK<ܴxߕQXpA4Ǒf.kub 62Coʐ.fb=@L S2磍`D~n(ʓ%559nl܀ۊǟ?_HVaBU%Ct_`'Ko<$< [@౓ _;8ᒅx=5[isadۮd$-LFHc?BNI!2}  Njk'e#oQi4=bF%Cilŗޟ`xO YXVcpZChیX&kJ,uJYYݟn̘kRQEfɳEi.2Ek[c!UNd hxlu۳$Û;4>F%7-͡~(JK0)5%1FXLktN8}^8CMLZ0yB N,ߖRu15ꞱiOE-iU܌a}\#YmIepO_D&ޤfC]`&9FXWt=\Cz:NY4Ny܅MQ2w?R>c2L_b#KMV]ÁsGC}Mz֠!im SJNiI1?7A``r7JP*phY@vqZaqxzנ=WJ0]m9~mZPrVO%RR&#uZ<9/"Įj5AρK/y裔MGK ‹Ur[jZgN^ Od oWhV &P!7Q3L@БRr?@' .Lk5auvLJ@m=L!3TD24CXE&Y ~l 39|:4mK%gGT"O& 昛b ]nhh"a8_tз#9`"V#==85S^Zp+O*ow/m]'ǧ0`iFmIk};ٜrDc}dw^G$\ySeHپcK\ E\] 0|i",#j`l(hh`H5Йp_ǷutkEr9?Oh݌SޝV2#أf#2Eq\erϟeuݱR#>AQ(ܮ{IQG]_ 3F i9D:Қ8 iۏEYF┠٣l0Lb^ D}{T_u&"C*Ŀ|8ش)8wYWB,uxȄ6;pj!H{? `Ԛiw0E:su+-!nD~ t] Q-ϭ@ T)3\27Quh V(qTQUdd%pV&c[{ +I;hQIi];9{?k:ewk:z>w =*s eRYZ_)nSťD~@&tG#58ϸxԍoETI !(:|$l/E}:O=/ěWokQ nUoY2Fl諟72گR )/moBjnlퟀR~bV H(ksm64s^sav$)4U|G![Fٛ͹LA};3/OCzdc.PLT#s<+CK?owZThHvy,}tGg.&wӳ7ge-+*)GܰJnxkX2ӑ މ oY=X29̔8Vd ot`c+/u 8>e0L}6_8=9 ܬJU2NR!bjusZup1~m̩dF(kJ^O5L7'UT8f']G37E)@). )9/F-'_Y`^qSªMZdHPNL! S줜5`fB,5'&$)ګ ك4L;;Fn_DSv&ޛ 2Ekm !f-7h-dyT=W!yimMϮIzp2L'S$76M0;ì<+T* 1Hd]`0 .p WM)xP24ރ[҄EGCvn%#2ǐ /?wRG E-|Z'wdC3n7YPpЅchs}-ٯlXP0܉j;Y&lB ӂₔ=%KC^e]FIsC3ֺ@[Mb};15to<i{1}znHZTX}ww ["zC~3?r76ݠ[E&A?݁E4"a2Q4L>,&@1=k$Z\]a4E0;Nk+&1A, Oh6-Aaf Ǎzy]CF092X.@mD |?.UXӇ#@-ʆ#4ond3t3,l,x=@]#%gh)Bf3oC9=Ϛף;ZƢ JIQwBV0*yZtmCKyo35}/ȃ'`.3@, F0{2PEv]X tҊurrT&tDw&1gdzA7-hsfȤ!kOrt9ƭ%X9O54٠\%3h?G[㔫 -`o9嚸5XЎ&VVKyp%pr R"q]EtԁS]lo+ ɯ(m i:؈IO1^;En*|j sd2A(Hnt٘˖;Ѫ~TveIH!0>gU_u@UKa rM9/a_gy_ hMSbmݦGmý=ȿaqC JmWNzF{?QԺ8?" P)iuin^ {6ώ1/ `S9kۯL!$U@ 8]HOҥ%pؑI17Kzm=G[I"Xd+@<~nA kz|Pf*'n܈Atg@*\~ff.SDqGᕻE)UXGZ7U g[X@{7 ܇<'1͡vw./J#MhB(>Ox SCvB=8M#5Ԅ=ԫp#"m-v ],bG2vn4UlⳒT]Ǵex;A'[a~ڭDP:  j\}}\JY0}=bCIK?]}J Pl1՝@}۾spl ؑdE *N.acKگt7xHi~XDv蹳-(&^*_EhK56[! ю1"j8ci1#7;F*M{׉I׊v_K-IEg tنO H }LÈu/H&ͻoA<[hW'aTJo &0+7:!B& "|CeBR@#Ey1ϴAq&w`.&Ѯnu?~ A)3ո%[A?nLd`\i{875+u`4 r԰h^WkH;;2`T>&ӇfQ!s23>sP25=55jU,UށAyC' hhzR:&AqK}߉C;p~ӌe<$ 2IOoa1^W`♯>Sũ4 Zg (wufo(wdQ7>|0m"(yXwVVTr:a32יN]l]nCt$nˤa ?L!ՒmN-2J x "*,(G09o[giF߷g /gt|x.,!UryjO8e.bX^~ ɫ >fԛu;iJHLAy+/"Ke1)o`<VvIĬAjRxtS*뛣}4Fn.;I<9*T6`MIbZsI:q!1I9 haֲ[xڱ N6?+Kd k)8C﨩a+ GjobpB9C)tZ\*Թ/lB Uw2 E:t2|!%D4rb#A=SvBNAJh΢h{g\<_Ѫڄ B)C 'a:z;_c@ajB汋a>/KNU3`f:YokU qk߽x!WcڰIdjggQ읹nRjNU0ߢ c5UpGd~)TۚkabAH'(/(ז)5YѪ"+3_x| mR9uQqV&Aa;ļAGH1x RWecqϟ3U7~@ʁ)ڴo`0[T>QtG+UUHVJ9$դ?"P?l ό0'lH=imvP>P.1 Bg V㙀yzoUȍL۸0S(&Fڹ"J֘9/ʊMs!+0/&pl ? PX!aNj]ifldZ<3d!);AM0f!ڀHOhwpj^3 ~k´xSOnZ65F@| /L{h0Mni<7\&c|Xmm!P;Q( eTpKډ|5FZ,6`)s(Pz]1 2PB"˻((c(~%@otfDz&R5s0Q{(kr8Pb=A^:e7.Ѳ݀H@z9mVÙ|ݥ+RptH5O wR@Rݾw9l :K!Jm1doV}zۤv}7~\7iāX 518TW{eE*OT]xh%^uzis=d(^‡ 7 e8b,ʴ}Ar^ƨ:H`'MZ}#pTZN xK_V.!C%bh_# kRhp/np$Q`C@䧿ei`kljfCXKǺ|=nN`e%J; 7(G_߀0w>lhS1}+ܤ\{? 0’{`ZuO#֘dn-hucN #ܑ8=gjEw//w7BBb%tğ1&iY 7  =iJvcF"VsRew)ZLr,,:> ` bH-vԁg؇: @@C(bӸ]0KXӥSvP%L߃ a`92T%Z=;D93mBt2O=0SHt'g-#ϟ#[tx}Nz{A89UlG'K Izk\eGFF-SΌa=g!FR$0* KgM^$(1_h {6>27a11'&F./eIR k v ެ"b%@es_Js0 >57ns[u"6Z @T@2z"7..L Β:n'ZBd}`o"9Z/2_E//8.^[/YzJxWiqdY3Sleү._b @rO@31{edޓg2}9y:@ C$T25$MeLq~PʏTU lX.9=`EMp+?W[^\CaCLEm]~aRw[ȂU2UȶȚ،2pY=ݏQH6wuć kLO0gܸ)x}UtC71&Cf-*T`C!g)#b9-Q;=u4}[y`.(e@pMii@! RhnPя.<GB`EQmPDQHL, jaLOq^W‡lÊ,{{:Xj27KfX~J*}}d1gr0pJؕ(TZkaM.G%ꃚ~؝)ic-y%¦9{/!(7芰d܋Fҳ+v 軩^=D!iMt S2#KK00I"ck"s=^bA*s  60Ӂ7.^d9| ;lUfu61::a6|89zҳ9뼆+Cu6e&k1NG;bp&`!,o2UB. zUA%']bTU:_NEU5AՆlFԑh|ymQ srWu}ܵ\$f;n\T1٣Njn=,mgNm''t[Jܳ/]<+v,aO vwx/PS?\mncJ PK8;X@Unİ K/"LF\}9 )JydSp{Vi 9v &΃P|#L@=A'ަ G&H`BpMsG&qA`4uiSiEtK:*!ƣCk-~G:)7t-JjxvFmbIy-!} #Bz};6 ŕa2'<Â}AI@a!)hakm2sQʢ zmj1@,k=0Ct\2)Fߓ7G 88=k5DΡ4,ei @\BP=#я Rd褬lmd\D.4 j*mb6$R9dYwW-^,i& p ZUX\q'#kDLV/ET䟢_X;r%8ܖhoTHP܀{R^ܔs7l5J~pD0QmdTt }FK<<8Uy-0.mU[i$* P&D?]NcC&MI57M"J_\"=gNDUP֒zܾ~):R\6o1HmE;lG/6׻BSOʨ%kȇBX &i bg+R:X q[0IP #ʹ cy%d~) sR&c6)>LlЙ S׼AO&i/yoC_'VaQb4,7xX89{[>y`maѡl$\3$&sqtHzl~u1GņF@Pc}*}R}t)RG'XjȔIX,X{Czq>/E2@<1WzVN&$ 0'*v]@tA,9l~r@=.@AC*7#:Syezٲkh$UKoiy qO ?erOAxurªn Ma~z^i1s6sSs~x-І= ȃ_9? Dk{[]o@ǏU:i2~L߀k(77O<8}9 CkjlZ/U$J]eC|9%Hɥ&S~O"At0ze #lžԨ[~2NF7^ U>l~!x%]ެ ܛF2װN +W-<:Xs =p "K)'M锕( <DmaZaYH 0܌z޶z6l-ڷa]wƋzE!(Ѓ791Ƞ5\1yNl~Dn5 ,1AI5%oUٲ7Mإv}MfFH Ea4+Yr(7Y3IܐfJÀK&qd (^{2A5Ȱ9g^iH#Z~PohsuѶ-y. [I6kܞ<0fsBA rQA1ʼnL'ӛv:E/{?7LΤqZQr-9 "7=KqQ7:Gƿyo1u'8~D&l0^#S&(8S<D!jL|RMsJFzk8y& (PWrD_x唬BW*!&jJF!zpS%>R>r/{fhN`4귺V׵#EMؔ31܋CԜ*<|;|1F1_1ٹ̘i X ![uqhRO(+3Nb+zp s!ąaa33SJvWNTWUe IYL^d2ω L6 ~QoKu(yJB^5cjoq4(JD6T86pb4Eͺyp~Q*) ֐ 8T`Xp2r8B";=D)x έ~E>iW|ش(-!/Pe(GJt]B1a}tn53zr͌mɠJz5s%# X1#bwE#8T\yU|l@Sǰ" (ZZZqOϱFR}26^#CQs9= Zbx]-ݝݦCbQC*tDш\anA.FcTA8H=Ɵ۽&#ҳlxCTM;Xk[Qpʯ`P[n 3P,Q NqC7*m$mЋگ E)`e7VaYE;] I<1*37HRXj|\;%4woLß[;op;_bHĂ?ji >E>%u6f~ YFr AUa1^cnƉ_4aή<#Sͣudͷ#I-.:? } k8@ LY`+a|R3h35