gplots/0000755000175100001440000000000012163336534011606 5ustar hornikusersgplots/MD50000644000175100001440000000667412163336534012133 0ustar hornikusersc82cfab5bbb130c1e2eaa444619a9e0d *ChangeLog e38cffc0eb42ff59a8180cebaa4480d7 *DESCRIPTION 94df5480b9afc0e8a153304a151755fd *NAMESPACE ffc9bdf7b9f49d353088289bc1aa4d66 *NEWS 4040a0e9adf5cc4b201e9d35ab57154f *R/balloonplot.R 4772437d361717fb85db247dd2c1e078 *R/bandplot.R 0a8af37ac076fafb2d055495ea1359b0 *R/barplot2.R 094d92ec0e847019b5b3f4daf7dc7a13 *R/baseOf.R 25b43ecc5967508d1a6ce3021611bf3c *R/boxplot.n.R a6370e76fc39377d1da08507b03e219f *R/ci2d.R 6d3d19d92abdf9638c5b5313cde8eacc *R/col2hex.R 36b2f3fe28745943577ad95f07142cab *R/colorpanel.R b9324d5dfd3a8a9d17f6f39dcf9f1447 *R/heatmap.2.R 69b838cf6230b0394a4ef3565a8c8d75 *R/hist2d.R b243250687022dbed682354421d77461 *R/lowess.R a36e8910568c8476351e5dd5c1ce56fa *R/ooplot.R 2478a13e42bcdd41cc954dfa05198d93 *R/overplot.R 581e65e661db428e262877ab73412dde *R/plot.lm.R aa7fcdda82d404dedb712a7f6a477f65 *R/plot.venn.R 0f48244eceddd19088d61921d2a84415 *R/plotCI.R c197f095c6750dda69b2c5ecf36bf291 *R/plotmeans.R 3b72bccb6f4d15624f8aea8f41353d43 *R/print.ci2d.R bc77c69c15391aef883b3e902d9df36e *R/print.hist2d.R 5d67f9fd015317c36be94d1570c23eb5 *R/qqnorm.aov.R f583369cc05bb20cca9a8d19effde4ef *R/replaceTabs.R 33bc311749bfbb7748909de1bfd2b6fd *R/residplot.R 9a4ac1bce19cf513efc3332a97d6ccd3 *R/rich.colors.R e24b2bb9b1db91aa0a2ba374fbcd7c6b *R/sinkplot.R 10e77fb2ee30995803d172db66a60826 *R/smartlegend.R 3996c273f3d9d6750b76a53955b57a8a *R/space.R dde8f47321c837268c65a37cc374482f *R/textplot.R 8addd9fe951be7fd1f121e9905ddc375 *R/venn.R 9dc3e18aa37028e64ad53b8692a0f789 *R/wapply.R e28142fd2631d8aba7e5b1ec828908f6 *TODO 8e85b44acb8b180ab2234c85ed73b157 *data/rtPCR.rda c82cfab5bbb130c1e2eaa444619a9e0d *inst/ChangeLog ffc9bdf7b9f49d353088289bc1aa4d66 *inst/NEWS e28142fd2631d8aba7e5b1ec828908f6 *inst/TODO 2c9123e15bef4d1c31aef40043cc731a *inst/doc/BalloonPlot.pdf db3835b477154387393e0896b865599b *inst/doc/venn.R 6b10e21c8e9d8b500514865ba83990f0 *inst/doc/venn.Rnw 30e28a8f46c565938df676ab7d1c7416 *inst/doc/venn.pdf 8ab220c517d11be940afd3b99dde33fb *man/balloonplot.Rd f2b4192ac81242619d03b725684341da *man/bandplot.Rd 9d3fdaf3cfff865c2db62bc07d51066c *man/barplot2.Rd 73ee83146125a86cf5d1c736a9622603 *man/boxplot.n.Rd 9745bf39812731af56db83c228dc8b50 *man/ci2d.Rd ab9babb4cca73672c7eae3e46325db28 *man/col2hex.Rd 1e6e7f6434636be7b28f98867b602bd0 *man/colorpanel.Rd 1a7d1fb6d6727a31b840a80c427c4be9 *man/heatmap.2.Rd 6c7736f75ad125bd5e5403ebbecaadb3 *man/hist2d.Rd 0ade122d73a9fc6bc847e5b7a4942580 *man/lowess.Rd 358b6072d9b08d11e2d4ec40478723b7 *man/ooplot.Rd f46f562c6daf8992b39a9201f6095417 *man/overplot.Rd 64ef2706197f34171c735173e7d561c9 *man/plot.lm2.Rd f6692d0456ee55bc29adec44c165b197 *man/plotCI.Rd 1f44d6b4cc178e538f222be450ee6431 *man/plotmeans.Rd 5a0523318ce97c93d7ee729cd6b95c22 *man/qqnorm.aov.Rd 8be9406a3844978e05e5832921e52279 *man/residplot.Rd 00dc4c29f2c0eed9d3557ff0c9ab6a9f *man/rich.colors.Rd 3e0736e6f89e7466ccbeb412135b01b8 *man/rtPCR.Rd 1ea26456b259042bd4fc82f00121768e *man/sinkplot.Rd bef75ba8b8a782a6b14b4219faada752 *man/smartlegend.Rd 752a53002d3674f2f15ecc8a87f0bfd1 *man/space.Rd 916acb7b9bdff298be18c583aaad400c *man/textplot.Rd 64482911b867f1b3ccc6e3318c801b15 *man/venn.Rd 5bdab99eb81d4c50fd63a9e5f2ab71f1 *man/wapply.Rd 056bcdd1925f1dcd57deb2491f4115ec *tests/heatmap2Test.R 2f44910b06da03954052ab20002fd046 *tests/heatmap2Test.Rout.save d2dbbb722254f78d9038ac8e7f1fbf8e *tests/heatmap_to_heatmap.2_test.R fd229af09f15c5f5e920b8a9a21ff0f3 *tests/plotmeans_nobars.R 6b10e21c8e9d8b500514865ba83990f0 *vignettes/venn.Rnw gplots/vignettes/0000755000175100001440000000000012163323571013613 5ustar hornikusersgplots/vignettes/venn.Rnw0000644000175100001440000000465212143472613015260 0ustar hornikusers\documentclass[a4paper]{article} %\VignetteIndexEntry{Venn Diagrams with gplots} \title{Venn Diagrams with \texttt{gplots}} \author{Steffen M{\"{o}}ller} \begin{document} \maketitle Venn diagrams\footnote{http://en.wikipedia.org/wiki/Venn\_diagram} allow for a quick overview on the number of elements that multiple sets share. And when those elements are representing traits of real objects, like observations in biomedical sciences/marketing/..., then this may direct researchers to further investigations/decisions. The {\tt gplots} package provides Venn diagrams for up to five sets. The R code to produce the diagrams is not complicated. The plot function behaves alwas the same, depending only on the number of overlapping circles to draw. Its input is a table that is produced by another function. The function {\tt venn()} calls one after the other and is the only one to be seen by the user. The values shown are returned invisibly. The {\tt venn()} function accepts either a list of sets as an argument, or it takes a binary matrix, one column per set, indicating for every element, one per row, the membership with every set. The common form with overlapping circles only works with up to three sets, as seen here: \begin{center} <>= library(gplots) venn( list(A=1:5,B=4:6,C=c(4,8:10)) ) @ \end{center} The names of columns or the list elements are the set names. To squeeze extra circles in, those circles need to become ellipses. This works for four sets \begin{center} <>= v.table<-venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12)) ) print(v.table) @ \end{center} and maybe even more impressively also for five. \begin{center} <>= venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12),E=c(2,4,6:9)) ) @ \end{center} The man page of {\it venn()} lists options to change the appearance of the plots, e.g., the names of the sets may be omitted and sizes changed. However, there is ample of opportunity to extend the functionality of this package. To mind come \begin{itemize} \item more dimensions (next) \item colors \item variation of size of circles with the number of members the set has \item density plot rather than numbers, identification of individual entries \end{itemize} The prime personal interest is more in the increase of dimensions. Please send patches for features you are most interested in. \end{document} gplots/tests/0000755000175100001440000000000012163323571012745 5ustar hornikusersgplots/tests/plotmeans_nobars.R0000644000175100001440000000032511277025071016435 0ustar hornikusers## Test that plotmeans works properly when bars=F ## Bug repoted by Alan Yong, Research Geophysicist, ## US DEPARTMENT OF THE INTERIOR library(gplots) data(state) plotmeans(state.area ~ state.region, bars=FALSE) gplots/tests/heatmap_to_heatmap.2_test.R0000644000175100001440000000076011201133301020070 0ustar hornikuserslibrary(gplots) data(mtcars) x <- as.matrix(mtcars) ## draws expected image testHeatmap <- heatmap(x, Colv=NA, col=bluered(256), scale="column", keep.dendro=TRUE) # to prove this dendro is OK, redraw with same function: heatmap(x, Colv=NA, col=bluered(256), scale="column", keep.dendro=TRUE, Rowv=testHeatmap$Rowv) # but it doesn't work with heatmap.2() heatmap.2(x, Colv=NA, col=bluered(256), scale="column", Rowv=testHeatmap$Rowv, dendrogram="row") gplots/tests/heatmap2Test.Rout.save0000644000175100001440000003243712163124260017121 0ustar hornikusers R version 3.0.1 (2013-05-16) -- "Good Sport" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: i686-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(gplots) Loading required package: gtools Loading required package: gdata gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED. gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED. Attaching package: 'gdata' The following object is masked from 'package:stats': nobs The following object is masked from 'package:utils': object.size Loading required package: caTools Loading required package: grid Loading required package: KernSmooth KernSmooth 2.23 loaded Copyright M. P. Wand 1997-2009 Loading required package: MASS Attaching package: 'gplots' The following object is masked from 'package:stats': lowess > > data(mtcars) > x <- as.matrix(mtcars) > rc <- rainbow(nrow(x), start=0, end=.3) > cc <- rainbow(ncol(x), start=0, end=.3) > > heatmap.2(x) ## default - dendrogram plotted and reordering done. > heatmap.2(x, dendrogram="none") ## no dendrogram plotted, but reordering done. > heatmap.2(x, dendrogram="row") ## row dendrogram plotted and row reordering done. > heatmap.2(x, dendrogram="col") ## col dendrogram plotted and col reordering done. > > heatmap.2(x, keysize=2) ## default - dendrogram plotted and reordering done. > > > heatmap.2(x, Colv=FALSE) Warning message: In heatmap.2(x, Colv = FALSE) : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > heatmap.2(x, Colv=NULL) Warning message: In heatmap.2(x, Colv = NULL) : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > > heatmap.2(x, Rowv=FALSE) Warning message: In heatmap.2(x, Rowv = FALSE) : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > heatmap.2(x, Rowv=NULL) Warning message: In heatmap.2(x, Rowv = NULL) : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > > heatmap.2(x, Rowv=FALSE, dendrogram="both") ## generate warning! Warning message: In heatmap.2(x, Rowv = FALSE, dendrogram = "both") : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > heatmap.2(x, Rowv=NULL, dendrogram="both") ## generate warning! Warning message: In heatmap.2(x, Rowv = NULL, dendrogram = "both") : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > heatmap.2(x, Colv=FALSE, dendrogram="both") ## generate warning! Warning message: In heatmap.2(x, Colv = FALSE, dendrogram = "both") : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > > > > heatmap.2(x,dendrogram="both", Rowv=FALSE) ## row and col reordering done, but only col dendrogram plotted Warning message: In heatmap.2(x, dendrogram = "both", Rowv = FALSE) : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > heatmap.2(x,dendrogram="row", Rowv=FALSE) Warning message: In heatmap.2(x, dendrogram = "row", Rowv = FALSE) : Discrepancy: Rowv is FALSE, while dendrogram is `column'. Omitting row dendogram. > > > heatmap.2(x,dendrogram="col", Rowv=FALSE) > heatmap.2(x,dendrogram="none", Rowv=FALSE) > > > heatmap.2(x,dendrogram="both", Colv=FALSE) ## row and col reordering done, but only row dendrogram plotted Warning message: In heatmap.2(x, dendrogram = "both", Colv = FALSE) : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > heatmap.2(x,dendrogram="row", Colv=FALSE) > heatmap.2(x,dendrogram="col", Colv=FALSE) Warning message: In heatmap.2(x, dendrogram = "col", Colv = FALSE) : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > heatmap.2(x,dendrogram="none", Colv=FALSE) > > ## above statement is same as heatmap.2(x,Colv=FALSE) > heatmap.2(x,dendrogram="col", Colv=FALSE) ## col reordering done, but no dendrogram plotted Warning message: In heatmap.2(x, dendrogram = "col", Colv = FALSE) : Discrepancy: Colv is FALSE, while dendrogram is `row'. Omitting column dendogram. > > > hv <- heatmap.2(x, col=cm.colors(256), scale="column", + RowSideColors=rc, ColSideColors=cc, margin=c(5, 10), + xlab="specification variables", ylab= "Car Models", + main="heatmap(, \n ..., scale=\"column\")", + tracecol="green", density="density") > > str(hv) # the two re-ordering index vectors List of 12 $ rowInd : int [1:32] 31 17 16 15 5 25 29 24 7 6 ... $ colInd : int [1:11] 2 9 8 11 6 5 10 7 1 4 ... $ call : language heatmap.2(x = x, scale = "column", col = cm.colors(256), tracecol = "green", margins = c(5, 10), ColSideColors = cc, RowSideColors = rc, density.info = "density", ... $ colMeans : Named num [1:11] 6.188 0.406 0.438 2.812 3.217 ... ..- attr(*, "names")= chr [1:11] "cyl" "am" "vs" "carb" ... $ colSDs : Named num [1:11] 1.786 0.499 0.504 1.615 0.978 ... ..- attr(*, "names")= chr [1:11] "cyl" "am" "vs" "carb" ... $ carpet : num [1:11, 1:32] 1.015 1.19 -0.868 3.212 0.361 ... ..- attr(*, "dimnames")=List of 2 .. ..$ : chr [1:11] "cyl" "am" "vs" "carb" ... .. ..$ : chr [1:32] "Maserati Bora" "Chrysler Imperial" "Lincoln Continental" "Cadillac Fleetwood" ... $ rowDendrogram: ..--[dendrogram w/ 2 branches and 32 members at h = 425, midpoint = 8.58, value = 1267] .. |--[dendrogram w/ 2 branches and 9 members at h = 215, midpoint = 1.84, value = 552] .. | |--leaf "Maserati Bora" ( value.Maserati Bora = 63.2 ) .. | `--[dendrogram w/ 2 branches and 8 members at h = 135, midpoint = 2.69, value = 489] .. | |--[dendrogram w/ 2 branches and 3 members at h = 40.8, midpoint = 0.75, value = 198] .. | | |--leaf "Chrysler Imperial" ( value.Chrysler Imperial = 66 ) .. | | `--[dendrogram w/ 2 branches and 2 members at h = 15.6, midpoint = 0.5, value = 132] .. | | |--leaf "Lincoln Continental" ( value.Lincoln Continental = 66.1 ) .. | | `--leaf "Cadillac Fleetwood" ( value.Cadillac Fleetwood = 66.2 ) .. | `--[dendrogram w/ 2 branches and 5 members at h = 102, midpoint = 1.62, value = 290] .. | |--[dendrogram w/ 2 branches and 2 members at h = 40, midpoint = 0.5, value = 111] .. | | |--leaf "Hornet Sportabout" ( value.Hornet Sportabout = 53.7 ) .. | | `--leaf "Pontiac Firebird" ( value.Pontiac Firebird = 57.4 ) .. | `--[dendrogram w/ 2 branches and 3 members at h = 21.3, midpoint = 0.75, value = 179] .. | |--leaf "Ford Pantera L" ( value.Ford Pantera L = 61 ) .. | `--[dendrogram w/ 2 branches and 2 members at h = 10.1, midpoint = 0.5, value = 118] .. | |--leaf "Camaro Z28" ( value.Camaro Z28 = 58.8 ) .. | `--leaf "Duster 360" ( value.Duster 360 = 59.7 ) .. `--[dendrogram w/ 2 branches and 23 members at h = 262, midpoint = 6.33, value = 716] .. |--[dendrogram w/ 2 branches and 7 members at h = 103, midpoint = 2.06, value = 306] .. | |--[dendrogram w/ 2 branches and 2 members at h = 33.6, midpoint = 0.5, value = 73.8] .. | | |--leaf "Valiant" ( value.Valiant = 35 ) .. | | `--leaf "Hornet 4 Drive" ( value.Hornet 4 Drive = 38.7 ) .. | `--[dendrogram w/ 2 branches and 5 members at h = 51.8, midpoint = 1.62, value = 233] .. | |--[dendrogram w/ 2 branches and 2 members at h = 14, midpoint = 0.5, value = 93.2] .. | | |--leaf "AMC Javelin" ( value.AMC Javelin = 46 ) .. | | `--leaf "Dodge Challenger" ( value.Dodge Challenger = 47.2 ) .. | `--[dendrogram w/ 2 branches and 3 members at h = 2.14, midpoint = 0.75, value = 139] .. | |--leaf "Merc 450SLC" ( value.Merc 450SLC = 46.4 ) .. | `--[dendrogram w/ 2 branches and 2 members at h = 0.983, midpoint = 0.5, value = 92.9] .. | |--leaf "Merc 450SE" ( value.Merc 450SE = 46.4 ) .. | `--leaf "Merc 450SL" ( value.Merc 450SL = 46.5 ) .. `--[dendrogram w/ 2 branches and 16 members at h = 142, midpoint = 3.59, value = 409] .. |--[dendrogram w/ 2 branches and 4 members at h = 14.8, midpoint = 0.875, value = 74.9] .. | |--leaf "Honda Civic" ( value.Honda Civic = 17.7 ) .. | `--[dendrogram w/ 2 branches and 3 members at h = 10.4, midpoint = 0.75, value = 57.2] .. | |--leaf "Toyota Corolla" ( value.Toyota Corolla = 18.8 ) .. | `--[dendrogram w/ 2 branches and 2 members at h = 5.15, midpoint = 0.5, value = 38.4] .. | |--leaf "Fiat X1-9" ( value.Fiat X1-9 = 18.9 ) .. | `--leaf "Fiat 128" ( value.Fiat 128 = 19.4 ) .. `--[dendrogram w/ 2 branches and 12 members at h = 113, midpoint = 2.3, value = 334] .. |--leaf "Ferrari Dino" ( value.Ferrari Dino = 34.5 ) .. `--[dendrogram w/ 2 branches and 11 members at h = 74.4, midpoint = 3.61, value = 300] .. |--[dendrogram w/ 2 branches and 5 members at h = 64.9, midpoint = 1.25, value = 148] .. | |--leaf "Merc 240D" ( value.Merc 240D = 24.6 ) .. | `--[dendrogram w/ 2 branches and 4 members at h = 15.7, midpoint = 1.5, value = 124] .. | |--[dendrogram w/ 2 branches and 2 members at h = 0.615, midpoint = 0.5, value = 59.9] .. | | |--leaf "Mazda RX4" ( value.Mazda RX4 = 29.9 ) .. | | `--leaf "Mazda RX4 Wag" ( value.Mazda RX4 Wag = 30 ) .. | `--[dendrogram w/ 2 branches and 2 members at h = 1.52, midpoint = 0.5, value = 63.6] .. | |--leaf "Merc 280C" ( value.Merc 280C = 31.8 ) .. | `--leaf "Merc 280" ( value.Merc 280 = 31.9 ) .. `--[dendrogram w/ 2 branches and 6 members at h = 50.1, midpoint = 0.969, value = 152] .. |--leaf "Lotus Europa" ( value.Lotus Europa = 24.9 ) .. `--[dendrogram w/ 2 branches and 5 members at h = 33.2, midpoint = 0.938, value = 127] .. |--leaf "Merc 230" ( value.Merc 230 = 27.2 ) .. `--[dendrogram w/ 2 branches and 4 members at h = 20.7, midpoint = 0.875, value = 99.5] .. |--leaf "Volvo 142E" ( value.Volvo 142E = 26.3 ) .. `--[dendrogram w/ 2 branches and 3 members at h = 13.1, midpoint = 0.75, value = 73.3] .. |--leaf "Datsun 710" ( value.Datsun 710 = 23.6 ) .. `--[dendrogram w/ 2 branches and 2 members at h = 8.65, midpoint = 0.5, value = 49.7] .. |--leaf "Porsche 914-2" ( value.Porsche 914-2 = 24.8 ) .. `--leaf "Toyota Corona" ( value.Toyota Corona = 24.9 ) $ colDendrogram: ..--[dendrogram w/ 2 branches and 11 members at h = 1475, midpoint = 7, value = 436] .. |--[dendrogram w/ 2 branches and 9 members at h = 116, midpoint = 4.5, value = 58.3] .. | |--[dendrogram w/ 2 branches and 7 members at h = 34.8, midpoint = 1.5, value = 20.3] .. | | |--leaf "cyl" ( value.cyl = 6.19 ) .. | | `--[dendrogram w/ 2 branches and 6 members at h = 18.9, midpoint = 2, value = 14.2] .. | | |--[dendrogram w/ 2 branches and 2 members at h = 3.61, midpoint = 0.5, value = 0.844] .. | | | |--leaf "am" ( value.am = 0.406 ) .. | | | `--leaf "vs" ( value.vs = 0.438 ) .. | | `--[dendrogram w/ 2 branches and 4 members at h = 10.7, midpoint = 1.5, value = 13.3] .. | | |--[dendrogram w/ 2 branches and 2 members at h = 8.6, midpoint = 0.5, value = 6.03] .. | | | |--leaf "carb" ( value.carb = 2.81 ) .. | | | `--leaf "wt" ( value.wt = 3.22 ) .. | | `--[dendrogram w/ 2 branches and 2 members at h = 2.98, midpoint = 0.5, value = 7.28] .. | | |--leaf "drat" ( value.drat = 3.6 ) .. | | `--leaf "gear" ( value.gear = 3.69 ) .. | `--[dendrogram w/ 2 branches and 2 members at h = 33.3, midpoint = 0.5, value = 37.9] .. | |--leaf "qsec" ( value.qsec = 17.8 ) .. | `--leaf "mpg" ( value.mpg = 20.1 ) .. `--[dendrogram w/ 2 branches and 2 members at h = 657, midpoint = 0.5, value = 377] .. |--leaf "hp" ( value.hp = 147 ) .. `--leaf "disp" ( value.disp = 231 ) $ breaks : num [1:257] -3.21 -3.19 -3.16 -3.14 -3.11 ... $ col : chr [1:256] "#80FFFFFF" "#80FFFFFF" "#81FFFFFF" "#82FFFFFF" ... $ vline : num 0 $ colorTable :'data.frame': 256 obs. of 3 variables: ..$ low : num [1:256] -3.21 -3.19 -3.16 -3.14 -3.11 ... ..$ high : num [1:256] -3.19 -3.16 -3.14 -3.11 -3.09 ... ..$ color: Factor w/ 254 levels "#80FFFFFF","#81FFFFFF",..: 1 1 2 3 4 5 6 7 8 9 ... > > ## Test row and column separators > heatmap.2(x,dendrogram="col", colsep=1) ## one colsep > heatmap.2(x,dendrogram="col", rowsep=1) ## one rowsep > > heatmap.2(x,dendrogram="col", colsep=1:2) ## two colseps > heatmap.2(x,dendrogram="col", rowsep=1:2) ## two rowseps > > proc.time() user system elapsed 5.104 0.356 5.478 gplots/tests/heatmap2Test.R0000644000175100001440000000401712163116461015431 0ustar hornikuserslibrary(gplots) data(mtcars) x <- as.matrix(mtcars) rc <- rainbow(nrow(x), start=0, end=.3) cc <- rainbow(ncol(x), start=0, end=.3) heatmap.2(x) ## default - dendrogram plotted and reordering done. heatmap.2(x, dendrogram="none") ## no dendrogram plotted, but reordering done. heatmap.2(x, dendrogram="row") ## row dendrogram plotted and row reordering done. heatmap.2(x, dendrogram="col") ## col dendrogram plotted and col reordering done. heatmap.2(x, keysize=2) ## default - dendrogram plotted and reordering done. heatmap.2(x, Colv=FALSE) heatmap.2(x, Colv=NULL) heatmap.2(x, Rowv=FALSE) heatmap.2(x, Rowv=NULL) heatmap.2(x, Rowv=FALSE, dendrogram="both") ## generate warning! heatmap.2(x, Rowv=NULL, dendrogram="both") ## generate warning! heatmap.2(x, Colv=FALSE, dendrogram="both") ## generate warning! heatmap.2(x,dendrogram="both", Rowv=FALSE) ## row and col reordering done, but only col dendrogram plotted heatmap.2(x,dendrogram="row", Rowv=FALSE) heatmap.2(x,dendrogram="col", Rowv=FALSE) heatmap.2(x,dendrogram="none", Rowv=FALSE) heatmap.2(x,dendrogram="both", Colv=FALSE) ## row and col reordering done, but only row dendrogram plotted heatmap.2(x,dendrogram="row", Colv=FALSE) heatmap.2(x,dendrogram="col", Colv=FALSE) heatmap.2(x,dendrogram="none", Colv=FALSE) ## above statement is same as heatmap.2(x,Colv=FALSE) heatmap.2(x,dendrogram="col", Colv=FALSE) ## col reordering done, but no dendrogram plotted hv <- heatmap.2(x, col=cm.colors(256), scale="column", RowSideColors=rc, ColSideColors=cc, margin=c(5, 10), xlab="specification variables", ylab= "Car Models", main="heatmap(, \n ..., scale=\"column\")", tracecol="green", density="density") str(hv) # the two re-ordering index vectors ## Test row and column separators heatmap.2(x,dendrogram="col", colsep=1) ## one colsep heatmap.2(x,dendrogram="col", rowsep=1) ## one rowsep heatmap.2(x,dendrogram="col", colsep=1:2) ## two colseps heatmap.2(x,dendrogram="col", rowsep=1:2) ## two rowseps gplots/man/0000755000175100001440000000000012163323571012356 5ustar hornikusersgplots/man/wapply.Rd0000644000175100001440000001167211404324573014170 0ustar hornikusers% $Id: wapply.Rd 1441 2010-06-11 03:11:54Z warnes $ % % $Log$ % Revision 1.10 2005/12/01 16:46:52 nj7w % Updated Greg's email address % % Revision 1.9 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:31 nj7w % Initial submission as an individual package % % Revision 1.8 2003/12/03 02:46:51 warnes % - match function argument defaults with 'usage' % % Revision 1.7 2003/01/20 17:13:06 warnes % % - Updated wapply.R to allow specification of evaluation points when % method is 'width' or 'range' using the 'pts' argument. % - Updated wapply.Rd to add 'pts' argument % - Fixed typos, spelling errors, gramatical errors and lack of clarity % in wapply.Rd help text. % % Revision 1.6 2002/04/09 00:51:33 warneg % % Checkin for version 0.5.3 % % Revision 1.5 2001/12/07 23:34:35 warneg % % Fixed an problem where \code was incorrectly delimited by parens % rather than curly brackets. % % Revision 1.4 2001/12/05 19:36:30 warneg % - Clarified how the width of the window is computed when method="nobs". % % Revision 1.3 2001/10/16 23:15:01 warneg % % Fixed unbalanced brace. % % Revision 1.2 2001/09/01 00:01:55 warneg % Release 0.3.0 % % Revision 1.1 2001/08/25 05:45:10 warneg % Initial Checkin % % \name{wapply} \alias{wapply} \title{Compute the Value of a Function Over a Local Region Of An X-Y Plot} \description{ This function applies the specified function to the sets of y values that are defined by overlapping "windows" in the x-dimension. For example, setting \code{fun=mean} returns local means, while setting \code{fun=function(x) sqrt(var(x))} returns local estimates of the standard deviation. } \usage{ wapply(x, y, fun=mean, method="range", width, n=50, drop.na=TRUE, pts, ...) } \arguments{ \item{x}{ vector of x values for (x,y) pairs } \item{y}{ vector of y values for (x,y) pairs } \item{fun}{ function to be applied } \item{method}{ method of defining an x-neighborhood. One of "width","nobs","range", or "fraction". See details.} \item{width}{ width of an x-neighborhood. See details. } \item{n}{ Number of equally spaced points at which to compute local estimates. See details.} \item{drop.na}{ should points which result in missing values \code{NA} be omitted from the return value. Defaults to true. } \item{pts}{ \code{x} locations at which to compute the local mean when using the "width" or "range" methods. Ignored otherwise.} \item{\dots}{ arguments to be passed to \code{fun} } } \details{ Two basic techniques are available for determining what points fall within the same x-neighborhood. The first technique uses a window with a fixed width in the x-dimension and is is selected by setting \code{method="width"} or \code{method="range"}. For \code{method="width"} the \code{width} argument is an absolute distance in the x-dimension. For \code{method="range"}, the width is expressed as a fraction of the x-range. In both cases, \code{pts} specifies the points at which evaluation of \code{fun} occurs. When \code{pts} is omitted, \code{n} x values equally spaced along the x range are used. The second technique uses windows containing k neighboring points. The (x,y) pairs are sorted by the x-values and the nearest k/2 points with higher x values and the k/2 nearest points with lower x values are included in the window. When \code{method="nobs"}, k equals \code{width} (actually 2*floor(\code{width}/2) ). When \code{method="fraction"}, \code{width} specifies what fraction of the total number of points should be included. The actual number of points included in each window will be floor(n*frac/2)*2. Regardless of the value of \code{pts}, the function \code{fun} will be evaluated at all x locations. } \value{ Returns a list with components \item{x }{x location'} \item{y }{Result of applying \code{fun} to the window about each x location} } \author{ Gregory R. Warnes \email{greg@warnes.net} } \examples{ #show local mean and inner 2-sd interval to help diagnose changing mean #or variance structure x <- 1:1000 y <- rnorm(1000, mean=1, sd=1 + x/1000 ) plot(x,y) lines(wapply(x,y,mean),col="red") CL <- function(x,sd) mean(x)+sd*sqrt(var(x)) lines(wapply(x,y,CL,sd= 1),col="blue") lines(wapply(x,y,CL,sd=-1),col="blue") lines(wapply(x,y,CL,sd= 2),col="green") lines(wapply(x,y,CL,sd=-2),col="green") #show local mean and inner 2-sd interval to help diagnose changing mean #or variance structure x <- 1:1000 y <- rnorm(1000, mean=x/1000, sd=1) plot(x,y) lines(wapply(x,y,mean),col="red") CL <- function(x,sd) mean(x)+sd*sqrt(var(x)) lines(wapply(x,y,CL,sd= 1,method="fraction",width=1/20),col="blue") lines(wapply(x,y,CL,sd=-1,method="fraction",width=1/20),col="blue") lines(wapply(x,y,CL,sd= 2,method="nobs",width=250),col="green") lines(wapply(x,y,CL,sd=-2,method="nobs",width=250),col="green") } \keyword{ dplot } gplots/man/venn.Rd0000644000175100001440000001034511404326500013606 0ustar hornikusers\name{venn} \alias{venn} \alias{plot.venn} \title{Plot a Venn diagram} \description{ Plot a Venn diagrams for up to 5 sets } \usage{ venn(data, universe=NA, small=0.7, showSetLogicLabel=FALSE, simplify=FALSE, show.plot=TRUE) \method{plot}{venn}(x, y, ..., small=0.7, showSetLogicLabel=FALSE, simplify=FALSE) } \arguments{ \item{data,x}{Either a list list containing vectors of names or indices of group members, or a data frame containing boolean indicators of group membership (see below)} \item{universe}{Subset of valid name/index elements. Values ignore values in code{data} not in this list will be ignored. Use \code{NA} to use all elements of \code{data} (the default).} \item{small}{Character scaling of the smallest group counts} \item{showSetLogicLabel}{Logical flag indicating whether the internal group label should be displayed} \item{simplify}{Logical flag indicating whether unobserved groups should be omitted.} \item{show.plot}{Logical flag indicating whether the plot should be displayed. If false, simply returns the group count matrix.} \item{y,...}{Ignored} } \details{ \code{data} should be either a named list of vectors containing character string names ("GeneAABBB", "GeneBBBCY", .., "GeneXXZZ") or indexes of group members (1, 2, .., N), or a data frame containing indicator variables (TRUE, FALSE, TRUE, ..) for group membership. Group names will be taken from the component list element or column names. } \value{ Invisibly returns an object of class "venn", containing a matrix of all possible sets of groups, and the observed count of items belonging to each The fist column contains observed counts, subsequent columns contain 0-1 indicators of group membership. } \author{ Steffen Moeller \email{steffen\_moeller@gmx.de}, with cleanup and packaging by Gregory R. Warnes \email{greg@warnes.net}.} \examples{ ## ## Example using a list of item names belonging to the ## specified group. ## ## construct some fake gene names.. oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="") geneNames <- replicate(1000, oneName()) ## GroupA <- sample(geneNames, 400, replace=FALSE) GroupB <- sample(geneNames, 750, replace=FALSE) GroupC <- sample(geneNames, 250, replace=FALSE) GroupD <- sample(geneNames, 300, replace=FALSE) input <-list(GroupA,GroupB,GroupC,GroupD) input venn(input) ## ## Example using a list of item indexes belonging to the ## specified group. ## GroupA.i <- which(geneNames \%in\% GroupA) GroupB.i <- which(geneNames \%in\% GroupB) GroupC.i <- which(geneNames \%in\% GroupC) GroupD.i <- which(geneNames \%in\% GroupD) input.i <-list(A=GroupA.i,B=GroupB.i,C=GroupC.i,D=GroupD.i) input.i venn(input.i) ## ## Example using a data frame of indicator ('f'lag) columns ## GroupA.f <- geneNames \%in\% GroupA GroupB.f <- geneNames \%in\% GroupB GroupC.f <- geneNames \%in\% GroupC GroupD.f <- geneNames \%in\% GroupD input.df <- data.frame(A=GroupA.f,B=GroupB.f,C=GroupC.f,D=GroupD.f) head(input.df) venn(input.df) ## smaller set to create empty groupings small <- input.df[1:20,] venn(small, simplify=FALSE) # with empty groupings venn(small, simplify=TRUE) # without empty groupings ## Capture group counts, but don't plot tmp <- venn(input, show.plot=FALSE) tmp ## Show internal binary group labels venn(input, showSetLogicLabel=TRUE) ## Limit universe tmp <- venn(input, universe=geneNames[1:100]) tmp ## ## Example to determine which elements are in A and B but not in ## C and D: first determine the universe, then form indicator columns ## and perform intersections on these. R allows using the set operations ## directly, but some might find this approach more intuitive. ## universe <- unique(c(GroupA,GroupB,GroupC,GroupD)) GroupA.l <-universe \%in\% GroupA GroupB.l <-universe \%in\% GroupB GroupC.l <-universe \%in\% GroupC GroupD.l <-universe \%in\% GroupD ## Genes that are in GroupA and in GroupB but not in GroupD (unification ## of sets III0 and II00 in the venn diagram: universe[GroupA.l & GroupB.l & !GroupD.l] ## ## Alternatively: construct a function to test for the pattern you want. ## test <- function(x) (x \%in\% GroupA) & (x \%in\% GroupB) & !(x \%in\% GroupC) universe[ test(universe) ] } \keyword{hplot} gplots/man/textplot.Rd0000644000175100001440000001264011367120210014521 0ustar hornikusers\name{textplot} \alias{textplot} \alias{textplot.default} \alias{textplot.character} \alias{textplot.matrix} \alias{textplot.data.frame} \title{Display text information in a graphics plot.} \description{ This function displays text output in a graphics window. It is the equivalent of 'print' except that the output is displayed as a plot. } \usage{ textplot(object, halign="center", valign="center", cex, ...) \method{textplot}{default}(object, halign=c("center","left","right"), valign=c("center", "top", "bottom"), cex, ... ) \method{textplot}{character}(object, halign = c("center", "left", "right"), valign = c("center", "top", "bottom"), cex, fixed.width=TRUE, cspace=1, lspace=1, mar=c(0, 0, 3, 0) + 0.1, tab.width = 8, ...) \method{textplot}{data.frame}(object, halign = c("center", "left", "right"), valign = c("center", "top", "bottom"), cex, ...) \method{textplot}{matrix}(object, halign = c("center", "left", "right"), valign = c("center", "top", "bottom"), cex, cmar = 2, rmar = 0.5, show.rownames = TRUE, show.colnames = TRUE, hadj = 1, vadj = 1, mar = c(1, 1, 4, 1) + 0.1, col.data = par("col"), col.rownames = par("col"), col.colnames = par("col"), ...) } \arguments{ \item{object}{Object to be displayed.} \item{halign}{Alignment in the x direction, one of "center", "left", or "right". } \item{valign}{Alignment in the y direction, one of "center", "top" , or "bottom"} \item{cex}{Character size, see \code{\link{par}} for details. If unset, the code will attempt to use the largest value which allows the entire object to be displayed.} \item{fixed.width}{Logical value indicating whether to emulate a fixed-width font by aligning characters in each row of text. This is usually necessary for text-formatted tables display properly. Defaults to 'TRUE'.} \item{cspace}{Space between characters as a multiple of the width of the letter 'W'. This only applies when \code{fixed.width==TRUE}. } \item{lspace}{Line spacing. This only applies when \code{fixed.width==TRUE}.} \item{mar}{Figure margins, see the documentation for \code{par}.} \item{rmar, cmar}{Space between rows or columns, in fractions of the size of the letter 'M'.} \item{show.rownames, show.colnames}{Logical value indicating whether row or column names will be displayed.} \item{hadj,vadj}{Vertical and horizontal location of elements within matrix cells. These have the same meaning as the \code{adj} graphics paramter (see \code{\link{par}}).} \item{col.data}{Colors for data elements. If a single value is provided, all data elements will be the same color. If a matrix matching the dimensions of the data is provided, each data element will receive the specified color.} \item{col.rownames, col.colnames}{Colors for row names and column names, respectively. Either may be specified as a scalar or a vector of appropriate length.} \item{tab.width}{Width of a single tab stop, in characters} \item{\dots}{ Optional arguments passed to the text plotting command or specialied object methods} } \details{ A new plot is created and the object is displayed using the largest font that will fit on in the plotting region. The \code{halign} and \code{valign} parameters can be used to control the location of the string within the plotting region. For matrixes and vectors a specialized textplot function is available, which plots each of the cells individually, with column widths set according to the sizes of the column elements. If present, row and column labels will be displayed in a bold font. } \value{ The character scaling factor (\code{cex}) used. } \author{Gregory R. Warnes \email{greg@warnes.net}} \seealso{ \code{\link{plot}}, \code{\link{text}}, \code{\link[utils]{capture.output}} } \examples{ \dontrun{ ### simple examples # show R version information textplot(version) # show the alphabet as a single string textplot( paste(letters[1:26], collapse=" ") ) # show the alphabet as a matrix textplot( matrix(letters[1:26], ncol=2)) ### Make a nice 4 way display with two plots and two text summaries data(iris) par(mfrow=c(2,2)) plot( Sepal.Length ~ Species, data=iris, border="blue", col="cyan", main="Boxplot of Sepal Length by Species" ) plotmeans( Sepal.Length ~ Species, data=iris, barwidth=2, connect=FALSE, main="Means and 95\% Confidence Intervals\nof Sepal Length by Species") info <- sapply( split(iris$Sepal.Length, iris$Species), function(x) round(c(Mean=mean(x), SD=sd(x), N=gdata::nobs(x)),2) ) textplot( info, valign="top" ) title("Sepal Length by Species") reg <- lm( Sepal.Length ~ Species, data=iris ) textplot( capture.output(summary(reg)), valign="top") title("Regression of Sepal Length by Species") par(mfrow=c(1,1)) ### Show how to control text color cols <- c("red", "green", "magenta", "forestgreen") mat <- cbind(name=cols, t(col2rgb(cols)), hex=col2hex(cols)) textplot(mat, col.data=matrix(cols, nrow=length(cols), byrow=FALSE, ncol=5), ) ### Show how to manually tune the character size data(iris) reg <- lm( Sepal.Length ~ Species, data=iris ) text <- capture.output(summary(reg)) # do the plot and capture the character size used textplot(text, valign="top") # see what size was used cex # now redo the plot at 80\% size textplot( text, valign="top", cex=cex*0.80) } } \keyword{hplot} gplots/man/space.Rd0000644000175100001440000000630611404324573013745 0ustar hornikusers% $Id: space.Rd 1441 2010-06-11 03:11:54Z warnes $ % % $Log$ % Revision 1.9 2005/09/12 15:44:37 nj7w % Updated Greg's email % % Revision 1.8 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:31 nj7w % Initial submission as an individual package % % Revision 1.7 2004/04/13 13:42:31 warnes % Add ability to space points along 'y' direction. % % Revision 1.6 2003/01/03 19:23:34 warnes % - Added reference to and comparison example of sunflowerplot. % - Added code to put example plots on same plot window using par(mfrow=...). % % Revision 1.5 2002/09/23 13:59:30 warnes % - Modified all files to include CVS Id and Log tags. % % \name{space} \alias{space} \title{Space points in an x-y plot so they don't overlap.} \description{ Space points in an x-y plot so they don't overlap. } \usage{ space(x, y, s=1/50, na.rm=TRUE, direction="x") } \arguments{ \item{x}{numeric vector of x coordonates.} \item{y}{numeric vector of x coordonates.} \item{s}{either a single numeric value or 2 element vector specifying the minimum distance between points in the x and y dimensions as a fraction of the x and y range. Defaults to 1/50.} \item{na.rm}{logical indicating whether pairs where one or both elements are missing should be removed. Defaults to TRUE.} \item{direction}{"x" or "y", indicating which direction points should be moved to accomplish spacine.} } \details{ In an x-y plot where at least one variable has discrete levels several points may be plotted at or very near the same coordonates. This makes it difficult to guage the number of points in a specific region. A common method of resolving this problem is to 'jitter' the points by adding random noise. This function takes a different approach to the same problem. When there are two or more points with the same (x,y) value (or within x+-s[1] and x+-s[2]), it spaces these out in the x direction so that the points are separated by at least distance s. Another method for dealing with overploting is available in the \code{\link{sunflowerplot}} function. } \value{ list with two components \item{x}{(modified) x location for each input point} \item{y}{y location of each input point} } \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{jitter}}, \code{\link{sunflowerplot}} } \examples{ x <- rep(1:5, 10) y <- round(rnorm(length(x),x)) prepar <- par("mfrow") par(mfrow=c(1,3)) # standard x-y plot: noverlapping points are hidden plot(x,y) title("Standard Plot") # 'spaced' plot: overlapping points are spread out and visible plot(space(x,y)) title("Plot with 'space'") # 'spaced' plot: overlapping points are spread out along y and visible plot(space(x,y, direction='y')) title("Plot with 'space', direction='y' ") # 'sunflower' plot, another approach, overlapping points are # indicated via petals sunflowerplot(x,y) title("Sunflower Plot") \testonly{ # check that missign values correctly handled x <- c(x,NA) y <- c(y,NA) plot(space(x,y)) } par(mfrow=prepar) } \keyword{ dplot } gplots/man/smartlegend.Rd0000644000175100001440000000223111367120210015136 0ustar hornikusers\name{smartlegend} \alias{smartlegend} \title{Place a legend in a specified logical ("top","bottom", "left", "right", etc) location on a plot.} \description{ This function places a legend in a specified logical ("top","bottom", "left", "right", etc) location on a plot. } \usage{ smartlegend(x = c("left", "center", "right"), y = c("top", "center", "bottom"), ..., inset = 0.05) } \arguments{ \item{x}{horizontal location on the plot. One of "left", "center" or "right".} \item{y}{vertical location on the plot. One of "top", "center", or "bottom".} \item{\dots}{arguments for \code{legend}} \item{inset}{inset distance from the margin as a fraction of the plot region.} } \value{ Same as \code{legend} } \author{Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{legend}} } \examples{ x <- rnorm(100) y <- rnorm(100, x^2 ) plot(x,y) abline( lm(y~x), col="red", lty=1, type="b") # regression fit lines( lowess(y~x), col="blue", lty=2, type="b") # lowess fit smartlegend(x="center", y="top", c("Regression","Locally Linear Smooth"), col=c("red","blue"), lty=1:2) } \keyword{hplot} gplots/man/sinkplot.Rd0000644000175100001440000000332012163113055014500 0ustar hornikusers\name{sinkplot} \alias{sinkplot} \title{Send textual R output to a graphics device} \description{ Divert R's standard text output to a graphics device. } \usage{ sinkplot(operation = c("start", "plot", "cancel"), ...) } \arguments{ \item{operation}{See below} \item{\dots}{Plot arguments. (Ignored unless \code{operation}="plot").} } \details{ This function allows the printed output of R commands to be captured and displayed on a graphics device. The capture process is started by calling \code{sinkplot("start")}. Now R commands can be executed and all printed output (except errors) will be captured. When the desired text has been captured \code{sinkplot("plot")} can be called to actually display the output. \code{sinkplot("cancel")} can be used to abort the output capture without plotting. The current implementation does not allow \code{sinkplot} to be nested. } \value{ Invisibly returns a character vector containing one element for each line of the captured output. } \references{Functionality requested by Kevin Wright \email{kwright@eskimo.com} in the R-devel newlist posting \url{https://www.stat.math.ethz.ch/pipermail/r-devel/2004-January/028483.html}} \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link[utils]{capture.output}}, \code{\link{textplot}} } \examples{ set.seed(12456) x <- factor(sample( LETTERS[1:5], 50, replace=TRUE)) y <- rnorm(50, mean=as.numeric(x), sd=1) ## construct a figure showing a box plot of the data, followed by an ## analysis of variance table for the data layout(cbind(1:2), heights=c(2,1)) boxplot(y~x, col="darkgreen") sinkplot() anova(lm(y~x)) sinkplot("plot",col="darkgreen") } \keyword{hplot} gplots/man/rtPCR.Rd0000644000175100001440000000436111367120210013631 0ustar hornikusers\name{rtPCR} \alias{rtPCR} \docType{data} \title{Teratogenesis rtPCR data} \description{ rtPCR data for experiments investigating a variety of markers for characterizing teratogenicity. } \usage{data(rtPCR)} \format{ A data frame with 1672 observations on the following 21 variables. \describe{ \item{PlateID}{a factor with levels \code{A0027002} through \code{A0054019}} \item{Test.Substance}{a factor with levels \code{Compound A} through \code{Compound H}} \item{Teratogenicity.in.vivo}{a factor with levels \code{Non} \code{Strong} \code{Weak / Moderate}} \item{Sample}{a factor with levels \code{Sample 1} - \code{Sample 152}} \item{Rep..}{a factor with levels \code{Rep 1} - \code{Rep 21}} \item{Label}{a factor with levels \code{Ctrl}, \code{Neg. Ctrl} \code{P1} - \code{P9}, \code{No Vehicle Ctrl}, and \code{Pos. Ctrl}} \item{Conc..ug.ml.}{a numeric vector} \item{Detector}{a factor with levels \code{ProbeType 1} - \code{ProbeType 17}} \item{Avg.delta.Ct}{a numeric vector} \item{delta.Ct.SD}{a numeric vector} \item{delta.delta.Ct}{a numeric vector} \item{RQ}{a numeric vector} \item{X..RQ}{a numeric vector} \item{X100..Custom..}{a numeric vector} \item{X100...Custom..}{a numeric vector} \item{Custom..}{a numeric vector} \item{Custom...1}{a numeric vector} \item{RQ.Min}{a numeric vector} \item{RQ.Max}{a numeric vector} \item{Threshold}{a numeric vector} } } \details{ TBA } \source{ Anonymized data. } \examples{ data(rtPCR) # same scale overplot( RQ ~ Conc..ug.ml. | Test.Substance, data=rtPCR, subset=Detector=="ProbeType 7" & Conc..ug.ml. > 0, same.scale=TRUE, log="xy", f=3/4, main="Detector=ProbeType 7", xlab="Concentration (ug/ml)", ylab="Relative Gene Quantification" ) # different scales, but force lower limit to 0.01 overplot( RQ ~ Conc..ug.ml. | Test.Substance, data=rtPCR, subset=Detector=="ProbeType 7" & Conc..ug.ml. > 0, log="xy", f=3/4, main="Detector=ProbeType 7", xlab="Concentration (ug/ml)", ylab="Relative Gene Quantification", min.y=0.01 ) } \keyword{datasets} gplots/man/rich.colors.Rd0000644000175100001440000000317711743412036015100 0ustar hornikusers\name{rich.colors} \alias{rich.colors} \title{Rich Color Palettes} \description{ Create a vector of \code{n} colors that are perceptually equidistant and in an order that is easy to interpret. } \usage{ rich.colors(n, palette="temperature", alpha=1.0, rgb=FALSE, plot=FALSE) } \arguments{ \item{n}{number of colors to generate.} \item{palette}{palette to use: \code{"temperature"} contains blue-green-yellow-red, and \code{"blues"} contains black-blue-white.} \item{alpha}{alpha transparency, from 0 (fully transparent) to 1 (opaque).} \item{rgb}{if \code{TRUE} then a matrix of RGBA values is included as an attribute.} \item{plot}{whether to plot a descriptive color diagram.} } \value{A character vector of color codes.} \author{Arni Magnusson.} \seealso{ \code{\link{rgb}}, \code{\link{rainbow}}, \code{\link{heat.colors}}. } \examples{ m <- abs(matrix(1:120+rnorm(120), nrow=15, ncol=8)) opar <- par(bg="gray", mfrow=c(1,2)) matplot(m, type="l", lty=1, lwd=3, col=rich.colors(8)) matplot(m, type="l", lty=1, lwd=3, col=rich.colors(8,"blues")) par(opar) barplot(rep(1,100), col=rich.colors(100), space=0, border=0, axes=FALSE) barplot(rep(1,20), col=rich.colors(40)[11:30]) # choose subset plot(m, rev(m), ylim=c(120,0), pch=16, cex=2, col=rich.colors(200,"blues",alpha=0.6)[1:120]) # semitransparent rich.colors(100, plot=TRUE) # describe rgb recipe par(mfrow=c(2,2)) barplot(m, col=heat.colors(15), main="\nheat.colors") barplot(m, col=1:15, main="\ndefault palette") barplot(m, col=rich.colors(15), main="\nrich.colors") barplot(m, col=rainbow(15), main="\nrainbow") par(opar) } % Graphics \keyword{color} gplots/man/residplot.Rd0000644000175100001440000000125011404324573014650 0ustar hornikusers% $Id: residplot.Rd 1441 2010-06-11 03:11:54Z warnes $ \name{residplot} \alias{residplot} %\alias{iapply} \title{Undocumented functions} \description{ These functions are undocumented. Some are internal and not intended for direct use. Others simply haven't been documented yet. } \usage{ residplot(model, formula, ...) } \arguments{ \item{model}{Undocumented} \item{formula}{Undocumented} \item{\dots}{ arguments to be passed to \code{fun} } } \details{ These functions are undocumented. Some are internal and not intended for direct use. Others simply haven't been documented yet. } \author{Gregory R. Warnes \email{greg@warnes.net}} \keyword{misc} gplots/man/qqnorm.aov.Rd0000644000175100001440000000430511764416553014761 0ustar hornikusers\name{qqnorm.aov} \alias{qqnorm.aov} \title{ Makes a half or full normal plot for the effects from an aov model } \description{ Makes a half or full normal plot for the effects from a model inheriting from class \code{aov}. One can interactively label the points in the plot. } \usage{ \method{qqnorm}{aov}(y, full=FALSE, label=FALSE, omit=NULL, xlab=paste(if (full) "" else "Half", " Normal plot"), ylab="Effects", ...) } \arguments{ \item{y}{A model object inheriting from \code{aov}} \item{full}{Full or half normal plot (half is default) } \item{label}{If \code{TRUE}, function allows interactive labelling of points in plot, using the mouse } \item{omit}{Numeric or character vector of effects to omit, the intercept is always omitted} \item{xlab}{Horizontal axix label } \item{ylab}{Vertical axis label } \item{\dots}{Further arguments to be given to the plot function } } \details{ Produces a (half) normal plot of the effects from an AOV model. The idea behind the plot is that most effects will be small or null, and this effects can be used as a basis for estimation of the experimental variance. This small effects will show up in the plot as a straight line, other effects can be judged against this as a background. Heavily used by Box, Hunter \& Hunter, which attributes the idea to Daniel. This is a simpler implementation than the one in S-Plus. } \value{ If \code{label=TRUE}, the vector of points identified, else nothing of interest. } \references{ Box, Hunter and Hunter: Statistics for Experimenters. An Introduction to Design, Data Analysis and Model Building. Wiley. \cr Daniel, C (1976): Applications of Statistics to Industrial Experimentation. Wiley. \cr Daniel, C (1959): Use of half-normal plot in interpreting factorial two-level experiments. \emph{Technometrics.}\bold{1}, 149. } \author{Kjetil Halvorsen \email{kjetil@entelnet.bo}} \examples{ library(MASS) data(npk) npk.aov <- aov(yield ~ block + N*P*K, npk) qqnorm(npk.aov) ## interactive labeling of points. Click mouse on points to show label. if (dev.interactive()) qqnorm(npk.aov, omit=2:6, label=TRUE) } \keyword{ hplot }% \keyword{ design } gplots/man/plotmeans.Rd0000644000175100001440000001202112163122722014636 0ustar hornikusers% $Id: plotmeans.Rd 1676 2013-06-27 20:51:27Z warnes $ \name{plotmeans} \alias{plotmeans} \title{Plot Group Means and Confidence Intervals} \description{Plot group means and confidence intervals.} %\synopsis{ \usage{ plotmeans(formula, data=NULL, subset, na.action, bars=TRUE, p=0.95, minsd=0, minbar, maxbar, xlab=names(mf)[2], ylab=names(mf)[1], mean.labels=FALSE, ci.label=FALSE, n.label=TRUE, digits=getOption("digits"), col="black", barwidth=1, barcol="blue", connect=TRUE, ccol=col, legends=names(means), xaxt, use.t=TRUE, lwd=par("lwd"), ...) } % %\usage{ % plotmeans( outcome ~ treatment) %} \arguments{ \item{formula}{symbolic expression specifying the outcome (continuous) and grouping variable (factor). See lm() for details.} \item{data}{optional data frame containing the variables in the model.} \item{subset}{an optional vector specifying a subset of observations to be used in the fitting process.} \item{na.action}{a function which indicates what should happen when the data contain `NA's. See lm() for details. } \item{bars}{a logical value indicating whether confidence interval bars should be plotted. Defaults to TRUE.} \item{p}{confidence level for error bars. Defaults to 0.95.} \item{minsd}{minumum permitted value for the standard deviation within each factor level. Any standard deviation estimates smaller than \code{minsd} will be replaced with \code{minsd}. Defaults to 0.} \item{minbar}{minumum allowed value for bar ends. If specified, values smaller than \code{minbar} will be replaced with \code{minbar}. } \item{maxbar}{maximum allowed value for bar ends. If specified, values larger than \code{maxbar} will be replaced with \code{maxbar}. } \item{xlab}{x-axis label.} \item{ylab}{y-axis label.} \item{mean.labels}{ either a logical value indicating whether the circles representing the group means should be replaced with text giving the actual mean values or a vector containing labels to use instead. Defaults to FALSE.} \item{ci.label}{ a logical value indicating whether text giving the actual interval end values should be placed at the end of each confidence interval bar. Defaults to FALSE.} \item{n.label}{ a logical value indicating whether text giving the number of observations in each group should should be added to the plot. } \item{digits}{ number of significant digits to use when displaying mean or confidince limit values.} \item{col}{ color of cicles marking group means. Default is "black".} \item{barwidth}{ linewidth of interval bars and end marks. Default is 1.} \item{barcol}{ color of interval bars and end marks. Default is "blue".} \item{connect}{ either a logical value indicating whether the means of each group should be connected by a line, or a list of vectors giving the index of bars that should be connected by a line. Defaults to TRUE.} \item{ccol}{ color of lines used to connect means. Defaults to the same color as "col".} \item{legends}{ vector containing strings used to label groups along the x axis. Defaults to group names.} \item{xaxt}{A character which specifies the axis type. Specifying `"n"' causes an axis to be set up, but not plotted.} \item{use.t}{ a logical value indicating whether the t distribution should be used to compute confidence intervals. If \code{TRUE}, the default, a t distribution will the correct number of degrees of freedom for each group be used. If \code{FALSE}, the a normal distribution will be used.} \item{lwd}{Width of connecting lines } \item{\dots}{ optional plotting parameters. } } %\details{ % % %} \examples{ # show comparison with boxplot data(state) plotmeans(state.area ~ state.region) # show some color and mean labels plotmeans(state.area ~ state.region, mean.labels=TRUE, digits=-3, col="red", connect=FALSE) # show how to specify which means should be connected plotmeans(state.area ~ state.region, connect=list(1:2, 3:4), ccol="red", pch=7 ) # more complicated example showing how to show an interaction data(esoph) par(las=2, # use perpendicular axis labels mar=c(10.1,4.1,4.1,2.1), # create enough space for long x labels mgp=c(8,1,0) # move x axis legend down to avoid overlap ) plotmeans(ncases/ncontrols ~ interaction(agegp , alcgp, sep =" "), connect=list(1:6,7:12,13:18,19:24), barwidth=2, col="dark green", data=esoph, xlab="Age Group and Alcohol Consumption", ylab="# Cases / # Controls", main=c("Fraction of Cases for by Age and Alcohol Consumption", "Ile-et-Vilaine Esophageal Cancer Study") ) abline(v=c(6.5, 12.5, 18.5), lty=2) } \author{Gregory R. Warnes \email{greg@warnes.net}} \seealso{\code{\link{plotCI}}, \code{\link{boxplot}}} \keyword{hplot} gplots/man/plotCI.Rd0000644000175100001440000001250211404324573014037 0ustar hornikusers% $Id: plotCI.Rd 1441 2010-06-11 03:11:54Z warnes $ % % $Log$ % Revision 1.8 2005/11/08 16:19:42 nj7w % Updated Greg's email % % Revision 1.7 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:31 nj7w % Initial submission as an individual package % % Revision 1.6 2004/07/29 14:49:02 warnes % Integrate changes from the version of plotCI maintained by Martin Maechler. % % Revision 1.5 2004/05/27 15:11:08 warnes % Fix spelling error. % % Revision 1.4 2002/09/23 13:59:30 warnes % - Modified all files to include CVS Id and Log tags. % % \name{plotCI} \alias{plotCI} \title{Plot Error Bars and Confidence Intervals} \description{ Given a set of x and y values and interval width or upper and lower bounds, plot the points with error bars. This can be a useful tool for visualizing confidence intervals. } \usage{ plotCI(x, y = NULL, uiw, liw = uiw, ui, li, err='y', ylim=NULL, xlim=NULL, type="p", col=par("col"), barcol=col, pt.bg = par("bg"), sfrac = 0.01, gap=1, lwd=par("lwd"), lty=par("lty"), labels=FALSE, add=FALSE, xlab, ylab, minbar, maxbar, ... ) } \arguments{ \item{x,y}{ coordinates for the center of error bars. \code{y} defaults to \code{1:n}.} \item{uiw}{ width of the upper or right error bar. Set to \code{NULL} or \code{NA} to omit upper bars.} \item{liw}{ width of the lower or left error bar. Defaults to same value as \code{uiw}. Set to \code{NULL} or \code{NA} to omit lower bars. } \item{ui}{ upper end of error bars. Defaults to \code{y + uiw} or \code{x + uiw} depeding on \code{err}. Set to \code{NULL} or \code{NA} to omit upper bars. } \item{li}{ lower end of error bars. Defaults to \code{y - liw} or \code{x - liw} depedning on \code{err}. Set to \code{NULL} or \code{NA} to omit lower bars.} \item{err}{ direction for error bars. Set to "y" for vertical bars. Set to "x" for horizontal bars. Defaults to "y".} \item{col}{ color of plotting character used center marker of error bars. Default is "black".} \item{xlim, ylim}{ range of x/y values to include in the plotting area. } \item{type}{point/line type; passed to \code{\link{points}}} \item{barcol}{color of the error bars. Defaults to the same value as \code{col} } \item{pt.bg}{background color of points (use \code{pch=21, pt.bg=par("bg")} to get open points superimposed on error bars).} \item{sfrac}{ width of "crossbar" at the end of error bar as a fraction of the x plotting region. Defaults to 0.01. } \item{gap}{ space left between the center of the error bar and the lines marking the error bar in units of the height (width) of the letter "O". Defaults to 1.0 } \item{lwd}{ width of bar lines. } \item{lty}{ line type of bar lines. } \item{labels}{ either a logical value indicating whether the circles representing the x values should be replaced with text giving the actual values or a vector containing labels to use instead. Defaults to \code{FALSE}. } \item{add}{logical indicating whether error bars should be added to the current plot. If \code{FALSE} (the defailt), a new plot will be created and symbols/labels for the x values will be plotted before drawing error bars.} \item{minbar}{minumum allowed value for bar ends. If specified, values smaller than \code{minbar} will be replaced with \code{minbar}. } \item{maxbar}{maximum allowed value for bar ends. If specified, values larger than \code{maxbar} will be replaced with \code{maxbar}. } \item{\dots}{ optional plotting parameters } \item{xlab}{ label for x axis. } \item{ylab}{label for y axis. } } %\details{ % ~~ If necessary, more details than the __description__ above ~~ %} \author{ Original version by Bill Venables \email{wvenable@attunga.stats.adelaide.edu.au} posted to r-help on Sep. 20, 1997. Enhanced version posted to r-help by Ben Bolker \email{ben@zoo.ufl.edu} on Apr. 16, 2001. This version was modified and extended by Gregory R. Warnes \email{greg@warnes.net}. Additional changes suggested by Martin Maechler \email{maechler@stat.math.ethz.ch} integrated on July 29, 2004. } \seealso{ \code{\link{plotmeans}} provides an enhanced wrapper to \code{plotCI}. } \examples{ # plot means and data(state) tmp <- split(state.area, state.region) means <- sapply(tmp, mean) stdev <- sqrt(sapply(tmp, var)) n <- sapply(tmp,length) ciw <- qt(0.975, n) * stdev / sqrt(n) # plain plotCI(x=means, uiw=ciw) # prettier plotCI(x=means, uiw=ciw, col="black", barcol="blue", lwd=1) # give mean values plotCI(x=means, uiw=ciw, col="black", barcol="blue", labels=round(means,-3), xaxt="n", xlim=c(0,5) ) axis(side=1, at=1:4, labels=names(tmp), cex=0.7) # better yet, just use plotmeans ... # plotmeans( state.area ~ state.region ) \dontshow{ ## Just for testing plotCI(x=means, uiw=NA) plotCI(x=means, uiw=NULL) plotCI(x=means, uiw=ciw) plotCI(x=means, uiw=ciw, liw=NULL) plotCI(x=means, uiw=ciw, liw=NA) plotCI(x=means, liw=ciw, ciw=NULL) plotCI(x=means, liw=ciw, ciw=NA) ciw.na <- ciw ciw.na[3] <- NA plotCI(x=means, uiw=ciw.na, liw=ciw) plotCI(x=means, liw=ciw.na, uiw=ciw) } } \keyword{ hplot } gplots/man/plot.lm2.Rd0000644000175100001440000000441711367120210014310 0ustar hornikusers\name{plot.lm2} \alias{plot.lm2} \title{ Plots to assess the goodness of fit for the linear model objects } \description{ Plots to assess the goodness of fit for the linear model objects } \usage{ plot.lm2( x, which = 1:5, caption = c("Residuals vs Fitted", "Normal Q-Q plot", "Scale-Location plot", "Cook's distance plot"), panel = panel.smooth, sub.caption = deparse(x$call), main = "", ask = interactive() && nb.fig < length(which) && .Device != "postscript", ..., id.n = 3, labels.id = names(residuals(x)), cex.id = 0.75, band=TRUE, rug=TRUE, width=1/10, max.n=5000 ) } \arguments{ \item{x}{lm object} \item{which}{Numerical values between 1 and 5, indicating which plots to be shown. The codes are: 1- fitted vs residuals plot 2- Normal Q-Q plot 3- Scale-Location plot 4- Cook's distance plot 5- residuals vs each predictor plot } \item{caption}{ Caption for each type of plot} \item{panel}{ function to draw on the existing plot} \item{sub.caption}{ SubCaption for the plots } \item{main}{Main title of the plot} \item{ask}{whether interactive graphics or postscript } \item{\dots}{ parameters passed to \code{plot.lm2}. } \item{id.n}{ integer value, less than or equal to residuals of lm object } \item{labels.id}{Names of the residuals of the lm object} \item{cex.id}{Parameter to control the height of text stringsx} \item{band}{logical vector indicating whether bandplot should also be plotted } \item{rug}{logical vector indicating whether rug should be added to the existing plot } \item{width}{Fraction of the data to use for plot smooths} \item{max.n}{Maximum number of points to display in plots} } \author{Gregory R. Warnes \email{greg@warnes.net} and Nitin Jain \email{nitin.jain@pfizer.com}} \examples{ ctl <- rnorm(100, 4) trt <- rnorm(100, 4.5) group <- gl(2,100,200, labels=c("Ctl","Trt")) weight <- c(ctl, trt) wt.err <- rnorm(length(weight), mean=weight, sd=1/2) x <- lm(weight ~ group + wt.err) plot.lm2(x) plot.lm2(x, which=1, width=1/3) plot.lm2(x, which=1:3, widht=1/3) } \keyword{hplot} gplots/man/overplot.Rd0000644000175100001440000000666711367120210014524 0ustar hornikusers\name{overplot} \alias{overplot} \alias{panel.overplot} \title{Plot multiple variables on the same region, with appropriate axes} \description{ \code{overplot} graphs a set of variables defined on the same x-range but which have varying y-ranges on the same plotting area. For each set of y-values it uses a different color and line-type and and draws a correspondingly colored and line-typed axis. \code{panel.overplot} is used by \code{overplot} to draw the individual graphs. } \usage{ overplot(formula, data = parent.frame(), same.scale = FALSE, xlab, ylab, xlim, ylim, min.y, max.y, log = "", panel = "panel.overplot", subset, plot = TRUE, groups, main, f = 2/3, ...) } \arguments{ \item{formula}{Formula describing the x and y variables. It should be of the form x ~ y|z. The conditioning variable (z) should be a factor.} \item{same.scale}{ Logical value indicating whether the plot region should have the same range for all plots. Defaults to \code{FALSE}.} \item{xlab, ylab, xlim, ylim, main}{ Standard plotting parameters. See \code{\link{plot}} for details} \item{min.y, max.y}{Scalar or vector values used to specify the y plotting limits for individual plots. If a single scalar value is provided, it will be used for all plots. These parameters can be used specify one end of the individual plot ranges, while allowing the other end to vary with the data. EG, to force 0 to always be within the plot region.} \item{log}{ character string '', 'x', 'y', or 'xy', indicating which axes should be plotted on a log scale. Defaults to '' (neither).} \item{panel}{ a plotting function to be called to draw the individual plots. Defaults to \code{overplot.panel}, which plots the points and a \code{lowess} smooth. } \item{plot}{Logical value indicating whether to draw the plot.} \item{groups}{(optional) character vector giving the names of levels of the conditioning variable to plot. Defaults to all levels of the conditioning variable.} \item{f}{Smoothing parameter for \code{lowess}} \item{data, subset, \dots}{parameters passed to \code{model.frame} to obtain the data to be plotted from the formula.} } \details{ This function essentially performs tmp <- split(data, z) for(i in levels(z)) plot( x ~ y, data=tmp[[z]] ) except that all of the plots are shown on the same plotting region and varying scales for each value of z are handled nicely. } \value{ A copy of the data split by the conditioning variable. } \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{interaction.plot}}, \code{\link{coplot}} for alternative visualizations of 3-way data.} \examples{ # Example teratogenicity rtPCR data data(rtPCR) # same scale overplot( RQ ~ Conc..ug.ml. | Test.Substance, data=rtPCR, subset=Detector=="ProbeType 1" & Conc..ug.ml. > 0, same.scale=TRUE, log="xy", f=3/4, main="Detector=ProbeType 1", xlab="Concentration (ug/ml)", ylab="Relative Gene Quantification" ) # different scales, but force lower limit to 0.01 overplot( RQ ~ Conc..ug.ml. | Test.Substance, data=rtPCR, subset=Detector=="ProbeType 8" & Conc..ug.ml. > 0, log="xy", f=3/4, main="Detector=ProbeType 8", xlab="Concentration (ug/ml)", ylab="Relative Gene Quantification", min.y=0.01 ) } \keyword{hplot} gplots/man/ooplot.Rd0000644000175100001440000002476511367120210014165 0ustar hornikusers\name{ooplot.default} \alias{ooplot.default} \alias{ooplot} \title{Create an OpenOffice style plot} \description{ An extension of barplot2. Creates bar- and line-plots mimicking the style of OpenOffice plots. This utility can plot the values next to each point or bar as well as confidence intervals. } \usage{ ooplot(data, ...) \method{ooplot}{default}(data, width=1, space=NULL, names.arg=NULL, legend.text=NULL, horiz=FALSE, density=NULL, angle=45, kmg="fpnumkMGTP", kmglim=TRUE, type=c("xyplot", "linear", "barplot", "stackbar"), col=heat.colors(NC), prcol=NULL, border=par("fg"), main=NULL, sub=NULL, xlab=NULL, ylab=NULL, xlim=NULL, ylim=NULL, xpd=TRUE, log="", axes=TRUE, axisnames=TRUE, prval=TRUE, lm=FALSE, cex.axis=par("cex.axis"), cex.names=par("cex.axis"), cex.values=par("cex"),inside=TRUE, plot=TRUE, axis.lty=0, plot.ci=FALSE, ci.l=NULL, ci.u=NULL, ci.color="black", ci.lty="solid", ci.lwd=1, plot.grid=FALSE, grid.inc=NULL, grid.lty="dotted", grid.lwd=1, grid.col="black", add=FALSE, by.row=FALSE, ...) } \arguments{ \item{data}{a matrix of values describing the values that make up the plot. The first column of \code{data} is taken as the axis against which all the other values are plotted. The first column of \code{data} may not be sparse.} \item{width}{optional vector of barwidths. Re-cycled to the number of bars drawn. A single value will have no visible effect. } \item{space}{ the amount of space left before each bar. May be given as a single number or one number per bar. If \code{type} is \code{stackbar}, \code{space} may be specified by two numbers, where the first is the space between bars in the same group, and the second the space between groups. Defaults to \code{c(0,1)} if \code{type} is a \code{stackbar}, and to 0.2 otherwise. } \item{names.arg}{a vector of names to be plotted below each bar or group of bars. If this argument is omitted, then the names are taken from the row names of \code{data}. } \item{legend.text}{a vector of text used to construct a legend for the plot, or a logical indicating whether a legend should be included; if \code{legend.text} is true, the row names of \code{data} will be used as labels if they are non-null.} \item{horiz}{a logical value. If \code{FALSE}, the bars are drawn vertically with the first bar to the left. If \code{TRUE}, the bars are drawn horizontally with the first at the bottom.} \item{density}{a vector giving the the density of shading lines, in lines per inch, for the bars or bar components. The default value of \code{NULL} means that no shading lines are drawn. Non-positive values of \code{density} also inhibit the drawing of shading lines.} \item{angle}{the slope of shading lines, given as an angle in degrees (counter-clockwise), for the bars or bar components.} \item{kmg}{the set of SI units to convert, defaults to "fpnumkMGTP". See below for details. } \item{kmglim}{logical. If \code{FALSE} the conversion to SI units is not performed. Default is \code{TRUE}. } \item{type}{a string indicating the preferred format of the plot, choices are: xyplot : plot where y is plotted against the x-value. linear : plot where y values are plotted against equidistant x-values. barplot : plot where y values are represented as bars against equidistant x-values. stackplot : plot where y values are stacked for identical x-values and bars are equidistant. } \item{col}{a vector of colors for the bars or bar components.} \item{prcol}{the color to be used for the plot region.} \item{border}{the color to be used for the border of the bars.} \item{main, sub}{overall and sub titles for the plot.} \item{xlab}{a label for the x axis.} \item{ylab}{a label for the y axis.} \item{xlim}{limits for the x axis.} \item{ylim}{limits for the y axis.} \item{xpd}{logical. Should bars be allowed to go outside region?} \item{log}{a character string which contains `"x"' if the x axis is to be logarithmic, `"y"' if the y axis is to be logarithmic and `"xy"' or `"yx"' if both axes are to be logarithmic.} \item{axes}{logical. If \code{TRUE}, a vertical (or horizontal, if \code{horiz} is true) axis is drawn.} \item{axisnames}{logical. If \code{TRUE}, and if there are \code{names.arg} (see above), the other axis is drawn (with \code{lty=0}) and labeled.} \item{prval}{logical. If \code{TRUE}, then values are plotted above all points and bars. } \item{lm}{logical. If \code{TRUE}, the linear fit is plotted. } \item{cex.axis, cex.names, cex.values}{character scaling factor for numeric axis labels, names, and displayed values, respectively.} \item{inside}{logical. If \code{TRUE}, the lines which divide adjacent (non-stacked!) bars will be drawn. Only applies when \code{space = 0} (which it partly is when \code{beside = TRUE}).} \item{plot}{logical. If \code{FALSE}, nothing is plotted.} \item{axis.lty}{the graphics parameter \code{lty} applied to the axis and tick marks of the categorical (default horzontal) axis. Note that by default the axis is suppressed.} \item{plot.ci}{logical. If \code{TRUE}, confidence intervals are plotted over the bars. Note that if a stacked bar plot is generated, confidence intervals will not be plotted even if \code{plot.ci = TRUE}} \item{ci.l,ci.u}{The confidence intervals (ci.l = lower bound, ci.u = upper bound) to be plotted if \code{plot.ci} = \code{TRUE}. Values must have the same dim structure as \code{height}.} \item{ci.color}{the color for the confidence interval line segments} \item{ci.lty}{the line type for the confidence interval line segments} \item{ci.lwd}{the line width for the confidence interval line segments} \item{plot.grid}{if \code{TRUE} a lined grid will be plotted behind the bars} \item{grid.inc}{the number of grid increments to be plotted} \item{grid.lty}{the line type for the grid} \item{grid.lwd}{the line width for the grid} \item{grid.col}{the line color for the grid} \item{add}{logical, if \code{TRUE} add barplot to current plot.} \item{by.row}{Logical value. If \code{TRUE} the data matrix is organized with variables along rows rather than down colums.} \item{\dots}{further graphical parameters (\code{\link{par}}) are passed to \code{\link{plot.window}()}, \code{\link{title}()} and \code{\link{axis}}.} } \details{ Plot units are automatically scaled to SI units based on the maximum value present, according to the set of units specified by characters in the \code{kmg} parameter. These letters are interpreted as \describe{ \item{P}{peta = 1E15} \item{T}{tera = 1E12} \item{G}{giga = 1E09} \item{M}{mega = 1E06} \item{k}{kilo = 1E03} \item{m}{milli= 1E-03} \item{u}{micro= 1E-06} \item{n}{nano = 1E-09} \item{p}{pico = 1E-12} \item{f}{femto= 1E-15} } with the default being "fpnumkMGTP" (all of these units). For example, if the largest value plotted is 1243000, it would be presented as 1.234M. } \value{ A numeric vector (or matrix, when \code{beside = TRUE}), say \code{mp}, giving the coordinates of \emph{all} the bar midpoints drawn, useful for adding to the graph. If \code{beside} is true, use \code{colMeans(mp)} for the midpoints of each \emph{group} of bars, see example. } \author{Lodewijk Bonebakker \email{bonebakker@comcast.net} with modifications by Gregory R. Warnes \email{greg@warnes.net}. Based on barplot2(). } \seealso{ \code{\link{plot}}, \code{\link{boxplot}} } \examples{ data(VADeaths, package = "datasets") VADeaths <- cbind( Age=c(50,55,60,65,70), VADeaths) mp <- ooplot(VADeaths) # default mp <- ooplot(VADeaths, type="xyplot") # same as default mp <- ooplot(VADeaths, type="linear") # linear scale mp <- ooplot(VADeaths, type="linear", log="y") # log scale on y axis mp <- ooplot(VADeaths, type="barplot") # barplot mp <- ooplot(VADeaths, type="stackbar") # stacked tot <- colMeans(VADeaths[,-1]) ooplot(VADeaths, col = c("lightblue", "mistyrose", "lightcyan", "lavender"), legend = colnames(VADeaths)[-1], ylim = c(0, 100), type="barplot", cex.values=0.75) title(main = "Death Rates in Virginia", font.main = 4) ## ## Capability demo ## ## examples for the ooplot routine ## ## create some test data test1 <- data.frame(x=c(0,1,2,3,4), lin=c(0,1,2,3,4)) test2 <- data.frame(x=c(0,1,2,3,4), par=c(0,1,4,9,16)) test3 <- data.frame(x=c(-2,-1,0,1,2),y2=c(4,1,0,1,4)) ## single line test example test1f <- test1 ## two column example test2f <- merge(test1,test2,by.x="x",all=TRUE,sort=TRUE) ## three column example test3f <- merge(test2f,test3,by.x="x",all=TRUE,sort=TRUE) ## subset, single row, example test5r <- test3f[5,] ## ## xyplot, linear, barplot, stackbar mat <- matrix(c(1:16),4,4,byrow=TRUE) layout(mat) ooplot(test1f,type="barplot",col=c("red")) title(main="barplot") ooplot(test2f,type="barplot",col=c("red","blue")) ooplot(test3f,type="barplot",col=c("red","blue","green")) ooplot(test5r,type="barplot",col=c("red","blue","green")) ooplot(test1f,type="xyplot",col=c("red")) title(main="xyplot") ooplot(test2f,type="xyplot",col=c("red","blue")) ooplot(test3f,type="xyplot",col=c("red","blue","green")) ooplot(test5r,type="xyplot",col=c("red","blue","green")) ooplot(test1f,type="linear",col=c("red")) title(main="linear") ooplot(test2f,type="linear",col=c("red","blue")) ooplot(test3f,type="linear",col=c("red","blue","green")) ooplot(test5r,type="linear",col=c("red","blue","green")) ooplot(test1f,type="stackbar",col=c("red")) title(main="stackbar") ooplot(test2f,type="stackbar",col=c("red","blue")) ooplot(test3f,type="stackbar",col=c("red","blue","green")) ooplot(test5r,type="stackbar",col=c("red","blue","green")) # restore default layout (1 plot/page) layout(1) } \keyword{hplot} gplots/man/lowess.Rd0000644000175100001440000000667112126512540014166 0ustar hornikusers% $Id: lowess.Rd 1360 2009-10-10 17:32:26Z warnes $ % % $Log$ % Revision 1.7 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:30 nj7w % Initial submission as an individual package % % Revision 1.6 2003/12/03 02:46:51 warnes % - match function argument defaults with 'usage' % % Revision 1.5 2002/09/23 13:59:30 warnes % - Modified all files to include CVS Id and Log tags. % % \name{lowess} \alias{lowess} \alias{lowess.default} \alias{lowess.formula} \title{Scatter Plot Smoothing} \usage{ lowess(x, ...) \method{lowess}{default}(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)), ...) \method{lowess}{formula}(formula,data = parent.frame(), subset, na.action, f=2/3, iter=3, delta=.01*diff(range(mf[-response])), ... ) } \alias{lowess} \arguments{ \item{formula}{ formula providing a single dependent variable (y) and an single independent variable (x) to use as coordinates in the scatter plot.} \item{data}{a data.frame (or list) from which the variables in `formula' should be taken.} \item{subset}{ an optional vector specifying a subset of observations to be used in the fitting process. } \item{x, y}{vectors giving the coordinates of the points in the scatter plot. Alternatively a single plotting structure can be specified.} \item{f}{the smoother span. This gives the proportion of points in the plot which influence the smooth at each value. Larger values give more smoothness.} \item{iter}{the number of robustifying iterations which should be performed. Using smaller values of \code{iter} will make \code{lowess} run faster.} \item{delta}{values of \code{x} which lie within \code{delta} of each other replaced by a single value in the output from \code{lowess}.} \item{na.action}{a function which indicates what should happen when the data contain `NA's. The default is set by the `na.action' setting of `options', and is `na.fail' if that is unset. The ``factory-fresh'' default is `na.omit'.} \item{...}{parameters for methods.} } \description{ This function performs the computations for the \emph{LOWESS} smoother (see the reference below). \code{lowess} returns a list containing components \code{x} and \code{y} which give the coordinates of the smooth. The smooth should be added to a plot of the original points with the function \code{lines}. } \references{ Cleveland, W. S. (1979) Robust locally weighted regression and smoothing scatterplots. \emph{J. Amer. Statist. Assoc.} \bold{74}, 829--836. Cleveland, W. S. (1981) LOWESS: A program for smoothing scatterplots by robust locally weighted regression. \emph{The American Statistician}, \bold{35}, 54. } \seealso{\code{\link{loess}} (in package \code{modreg}), a newer formula based version of \code{lowess} (with different defaults!). } \examples{ data(cars) # default method plot(cars, main = "lowess(cars)") lines(lowess(cars), col = 2) lines(lowess(cars, f=.2), col = 3) legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3) # formula method plot(dist ~ speed, data=cars, main = "lowess(cars)") lines(lowess(dist ~ speed, data=cars), col = 2) lines(lowess(dist ~ speed, data=cars, f=.2), col = 3) legend(5, 120, c(paste("f = ", c("2/3", ".2"))), lty = 1, col = 2:3) } \keyword{smooth} gplots/man/hist2d.Rd0000644000175100001440000000603511764435453014057 0ustar hornikusers% $Id: hist2d.Rd 1556 2012-06-08 17:49:30Z warnes $ \name{hist2d} \alias{hist2d} \alias{print.hist2d} \title{ Compute and Plot a 2-Dimensional Histogram } \description{ Compute and plot a 2-dimensional histogram. } \usage{ hist2d(x,y=NULL, nbins=200, same.scale=FALSE, na.rm=TRUE, show=TRUE, col=c("black", heat.colors(12)), FUN=base::length, xlab, ylab, ... ) \method{print}{hist2d}(x, ...) } \arguments{ \item{x}{either a vector containing the x coordinates or a matrix with 2 columns. } \item{y}{a vector contianing the y coordinates, not required if `x' is matrix} \item{nbins}{number of bins in each dimension. May be a scalar or a 2 element vector. Defaults to 200.} \item{same.scale}{use the same range for x and y. Defaults to FALSE.} \item{na.rm}{ Indicates whether missing values should be removed. Defaults to TRUE.} \item{show}{ Indicates whether the histogram be displayed using \code{image} once it has been computed. Defaults to TRUE.} \item{col}{ Colors for the histogram. Defaults to "black" for bins containing no elements, a set of 16 heat colors for other bins.} \item{FUN}{Function used to summarize bin contents. Defaults to \code{base::length}. Use, e.g., \code{mean} to calculate means for each bin instead of counts.} \item{xlab,ylab}{(Optional) x and y axis labels} \item{\dots}{ Parameters passed to the image function. } } \details{ This fucntion creates a 2-dimensional histogram by cutting the x and y dimensions into \code{nbins} sections. A 2-dimensional matrix is then constucted which holds the counts of the number of observed (x,y) pairs that fall into each bin. If \code{show=TRUE}, this matrix is then then passed to \code{image} for display. } \value{ A list containing 5 elements: \item{counts}{Matrix containing the number of points falling into each bin} \item{x.breaks, y.breaks}{Lower and upper limits of each bin} \item{x,y}{midpoints of each bin} } \author{ Gregory R. Warnes \email{greg@warnes.net}} \seealso{ \code{\link{image}}, \code{\link{persp}}, \code{\link{hist}} } \examples{ ## example data, bivariate normal, no correlation x <- rnorm(2000, sd=4) y <- rnorm(2000, sd=1) ## separate scales for each axis, this looks circular hist2d(x,y) ## same scale for each axis, this looks oval hist2d(x,y, same.scale=TRUE) ## use different ## bins in each dimension hist2d(x,y, same.scale=TRUE, nbins=c(100,200) ) ## use the hist2d function to create an h2d object h2d <- hist2d(x,y,show=FALSE, same.scale=TRUE, nbins=c(20,30)) ## show object summary h2d ## object contents str(h2d) ## perspective plot persp( h2d$x, h2d$y, h2d$counts, ticktype="detailed", theta=30, phi=30, expand=0.5, shade=0.5, col="cyan", ltheta=-30) ## for contour (line) plot ... contour( h2d$x, h2d$y, h2d$counts, nlevels=4 ) ## for a filled contour plot ... filled.contour( h2d$x, h2d$y, h2d$counts, nlevels=4, col=gray((4:0)/4) ) } \keyword{dplot} \keyword{hplot} gplots/man/heatmap.2.Rd0000644000175100001440000003747611367120207014441 0ustar hornikusers\name{heatmap.2} \alias{heatmap.2} \title{ Enhanced Heat Map } \description{ A heat map is a false color image (basically \code{\link{image}(t(x))}) with a dendrogram added to the left side and/or to the top. Typically, reordering of the rows and columns according to some set of values (row or column means) within the restrictions imposed by the dendrogram is carried out. This heatmap provides a number of extensions to the standard R \code{\link[stats]{heatmap}} function. } \usage{ heatmap.2 (x, # dendrogram control Rowv = TRUE, Colv=if(symm)"Rowv" else TRUE, distfun = dist, hclustfun = hclust, dendrogram = c("both","row","column","none"), symm = FALSE, # data scaling scale = c("none","row", "column"), na.rm=TRUE, # image plot revC = identical(Colv, "Rowv"), add.expr, # mapping data to colors breaks, symbreaks=min(x < 0, na.rm=TRUE) || scale!="none", # colors col="heat.colors", # block sepration colsep, rowsep, sepcolor="white", sepwidth=c(0.05,0.05), # cell labeling cellnote, notecex=1.0, notecol="cyan", na.color=par("bg"), # level trace trace=c("column","row","both","none"), tracecol="cyan", hline=median(breaks), vline=median(breaks), linecol=tracecol, # Row/Column Labeling margins = c(5, 5), ColSideColors, RowSideColors, cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc), labRow = NULL, labCol = NULL, # color key + density info key = TRUE, keysize = 1.5, density.info=c("histogram","density","none"), denscol=tracecol, symkey = min(x < 0, na.rm=TRUE) || symbreaks, densadj = 0.25, # plot labels main = NULL, xlab = NULL, ylab = NULL, # plot layout lmat = NULL, lhei = NULL, lwid = NULL, # extras ... ) } \arguments{ % Dendogram Control \item{x}{numeric matrix of the values to be plotted. } \item{Rowv}{determines if and how the \emph{row} dendrogram should be reordered. By default, it is TRUE, which implies dendrogram is computed and reordered based on row means. If NULL or FALSE, then no dendrogram is computed and no reordering is done. If a \code{\link{dendrogram}}, then it is used "as-is", ie without any reordering. If a vector of integers, then dendrogram is computed and reordered based on the order of the vector.} \item{Colv}{determines if and how the \emph{column} dendrogram should be reordered. Has the options as the \code{Rowv} argument above and \emph{additionally} when \code{x} is a square matrix, \code{Colv = "Rowv"} means that columns should be treated identically to the rows.} \item{distfun}{function used to compute the distance (dissimilarity) between both rows and columns. Defaults to \code{\link{dist}}.} \item{hclustfun}{function used to compute the hierarchical clustering when \code{Rowv} or \code{Colv} are not dendrograms. Defaults to \code{\link{hclust}}.} \item{dendrogram}{character string indicating whether to draw 'none', 'row', 'column' or 'both' dendrograms. Defaults to 'both'. However, if Rowv (or Colv) is FALSE or NULL and dendrogram is 'both', then a warning is issued and Rowv (or Colv) arguments are honoured.} \item{symm}{logical indicating if \code{x} should be treated \bold{symm}etrically; can only be true when \code{x} is a square matrix.} % data scaling \item{scale}{character indicating if the values should be centered and scaled in either the row direction or the column direction, or none. The default is \code{"row"} if \code{symm} false, and \code{"none"} otherwise.} \item{na.rm}{logical indicating whether \code{NA}'s should be removed.} % image plot \item{revC}{logical indicating if the column order should be \code{\link{rev}}ersed for plotting, such that e.g., for the symmetric case, the symmetry axis is as usual.} \item{add.expr}{expression that will be evaluated after the call to \code{image}. Can be used to add components to the plot.} \item{breaks}{(optional) Either a numeric vector indicating the splitting points for binning \code{x} into colors, or a integer number of break points to be used, in which case the break points will be spaced equally between \code{min(x)} and \code{max(x)}.} \item{symbreaks}{Boolean indicating whether breaks should be made symmetric about 0. Defaults to \code{TRUE} if the data includes negative values, and to \code{FALSE} otherwise.} \item{col}{colors used for the image. Defaults to heat colors (\code{heat.colors}).} % block separation \item{colsep, rowsep, sepcolor}{(optional) vector of integers indicating which columns or rows should be separated from the preceding columns or rows by a narrow space of color \code{sepcolor}.} \item{sepwidth}{(optional) Vector of length 2 giving the width (colsep) or height (rowsep) the separator box drawn by colsep and rowsep as a function of the width (colsep) or height (rowsep) of a cell. Defaults to \code{c(0.05, 0.05)}} % cell labeling \item{cellnote}{(optional) matrix of character strings which will be placed within each color cell, e.g. p-value symbols.} \item{notecex}{(optional) numeric scaling factor for \code{cellnote} items.} \item{notecol}{(optional) character string specifying the color for \code{cellnote} text. Defaults to "green".} \item{na.color}{Color to use for missing value (\code{NA}). Defaults to the plot background color.} % level trace \item{trace}{character string indicating whether a solid "trace" line should be drawn across 'row's or down 'column's, 'both' or 'none'. The distance of the line from the center of each color-cell is proportional to the size of the measurement. Defaults to 'column'.} \item{tracecol}{character string giving the color for "trace" line. Defaults to "cyan".} \item{hline, vline, linecol}{Vector of values within cells where a horizontal or vertical dotted line should be drawn. The color of the line is controlled by \code{linecol}. Horizontal lines are only plotted if \code{trace} is 'row' or 'both'. Vertical lines are only drawn if \code{trace} 'column' or 'both'. \code{hline} and \code{vline} default to the median of the breaks, \code{linecol} defaults to the value of \code{tracecol}.} % Row/Column Labeling \item{margins}{numeric vector of length 2 containing the margins (see \code{\link{par}(mar= *)}) for column and row names, respectively.} \item{ColSideColors}{(optional) character vector of length \code{ncol(x)} containing the color names for a horizontal side bar that may be used to annotate the columns of \code{x}.} \item{RowSideColors}{(optional) character vector of length \code{nrow(x)} containing the color names for a vertical side bar that may be used to annotate the rows of \code{x}.} \item{cexRow, cexCol}{positive numbers, used as \code{cex.axis} in for the row or column axis labeling. The defaults currently only use number of rows or columns, respectively.} \item{labRow, labCol}{character vectors with row and column labels to use; these default to \code{rownames(x)} or \code{colnames(x)}, respectively.} % Color key and density info \item{key}{logical indicating whether a color-key should be shown.} \item{keysize}{numeric value indicating the size of the key} \item{density.info}{character string indicating whether to superimpose a 'histogram', a 'density' plot, or no plot ('none') on the color-key.} \item{denscol}{character string giving the color for the density display specified by \code{density.info}, defaults to the same value as \code{tracecol}.} \item{symkey}{Boolean indicating whether the color key should be made symmetric about 0. Defaults to \code{TRUE} if the data includes negative values, and to \code{FALSE} otherwise.} \item{densadj}{Numeric scaling value for tuning the kernel width when a density plot is drawn on the color key. (See the \code{adjust} parameter for the \code{density} function for details.) Defaults to 0.25.} % plot labels \item{main, xlab, ylab}{main, x- and y-axis titles; defaults to none.} % figure layout \item{lmat, lhei, lwid}{visual layout: position matrix, column height, column width. See below for details} \item{...}{additional arguments passed on to \code{\link{image}} } % } \details{ If either \code{Rowv} or \code{Colv} are dendrograms they are honored (and not reordered). Otherwise, dendrograms are computed as \code{dd <- as.dendrogram(hclustfun(distfun(X)))} where \code{X} is either \code{x} or \code{t(x)}.\cr If either is a vector (of \dQuote{weights}) then the appropriate dendrogram is reordered according to the supplied values subject to the constraints imposed by the dendrogram, by \code{\link{reorder}(dd, Rowv)}, in the row case. %% If either is missing, as by default, then the ordering of the corresponding dendrogram is by the mean value of the rows/columns, i.e., in the case of rows, \code{Rowv <- rowMeans(x, na.rm=na.rm)}. %% If either is \code{\link{NULL}}, \emph{no reordering} will be done for the corresponding side. If \code{scale="row"} the rows are scaled to have mean zero and standard deviation one. There is some empirical evidence from genomic plotting that this is useful. The default colors range from red to white (\code{heat.colors}) and are not pretty. Consider using enhancements such as the \pkg{RColorBrewer} package, \url{http://cran.r-project.org/src/contrib/PACKAGES.html#RColorBrewer} to select better colors. By default four components will be displayed in the plot. At the top left is the color key, top right is the column dendogram, bottom left is the row dendogram, bottom right is the image plot. When RowSideColor or ColSideColor are provided, an additional row or column is inserted in the appropriate location. This layout can be overriden by specifiying appropriate values for \code{lmat}, \code{lwid}, and \code{lhei}. \code{lmat} controls the relative postition of each element, while \code{lwid} controls the column width, and \code{lhei} controls the row height. See the help page for \code{\link[graphics]{layout}} for details on how to use these arguments. } \note{ The original rows and columns are reordered \emph{in any case} to match the dendrogram, e.g., the rows by \code{\link{order.dendrogram}(Rowv)} where \code{Rowv} is the (possibly \code{\link{reorder}()}ed) row dendrogram. \code{heatmap.2()} uses \code{\link{layout}} and draws the \code{\link{image}} in the lower right corner of a 2x2 layout. Consequentially, it can \bold{not} be used in a multi column/row layout, i.e., when \code{\link{par}(mfrow= *)} or \code{(mfcol= *)} has been called. } \value{ Invisibly, a list with components \item{rowInd}{row index permutation vector as returned by \code{\link{order.dendrogram}}.} \item{colInd}{column index permutation vector.} \item{call}{the matched call} \item{rowMeans, rowSDs}{mean and standard deviation of each row: only present if \code{scale="row"}} \item{colMeans, colSDs}{mean and standard deviation of each column: only present if \code{scale="column"}} \item{carpet}{reordered and scaled 'x' values used generate the main 'carpet'} \item{rowDendrogram}{row dendrogram, if present} \item{colDendrogram}{column dendrogram, if present} \item{breaks}{values used for color break points} \item{col}{colors used} \item{vline}{center-line value used for column trace, present only if \code{trace="both"} or \code{trace="column"} } \item{hline}{center-line value used for row trace, present only if \code{trace="both"} or \code{trace="row"} } \item{colorTable}{A three-column data frame providing the lower and upper bound and color for each bin} } \author{Andy Liaw, original; R. Gentleman, M. Maechler, W. Huber, G. Warnes, revisions.} \seealso{\code{\link{image}}, \code{\link{hclust}}} \examples{ library(gplots) data(mtcars) x <- as.matrix(mtcars) rc <- rainbow(nrow(x), start=0, end=.3) cc <- rainbow(ncol(x), start=0, end=.3) ## ## demonstrate the effect of row and column dendogram options ## heatmap.2(x) ## default - dendrogram plotted and reordering done. heatmap.2(x, dendrogram="none") ## no dendrogram plotted, but reordering done. heatmap.2(x, dendrogram="row") ## row dendrogram plotted and row reordering done. heatmap.2(x, dendrogram="col") ## col dendrogram plotted and col reordering done. heatmap.2(x, keysize=2) ## default - dendrogram plotted and reordering done. heatmap.2(x, Rowv=FALSE, dendrogram="both") ## generate warning! heatmap.2(x, Rowv=NULL, dendrogram="both") ## generate warning! heatmap.2(x, Colv=FALSE, dendrogram="both") ## generate warning! ## ## Show effect of z-score scaling within columns, blue-red color scale ## hv <- heatmap.2(x, col=bluered, scale="column", tracecol="#303030") ### ## Look at the return values ### names(hv) ## Show the mapping of z-score values to color bins hv$colorTable ## Extract the range associated with white hv$colorTable[hv$colorTable[,"color"]=="#FFFFFF",] ## Determine the original data values that map to white whiteBin <- unlist(hv$colorTable[hv$colorTable[,"color"]=="#FFFFFF",1:2]) rbind(whiteBin[1] * hv$colSDs + hv$colMeans, whiteBin[2] * hv$colSDs + hv$colMeans ) ## ## A more decorative heatmap, with z-score scaling along columns ## hv <- heatmap.2(x, col=cm.colors(255), scale="column", RowSideColors=rc, ColSideColors=cc, margin=c(5, 10), xlab="specification variables", ylab= "Car Models", main="heatmap(, ..., scale=\"column\")", tracecol="green", density="density") ## Note that the breakpoints are now symmetric about 0 %% want example using the `add.exp' argument! data(attitude) round(Ca <- cor(attitude), 2) symnum(Ca) # simple graphic # with reorder heatmap.2(Ca, symm=TRUE, margin=c(6, 6), trace="none" ) # without reorder heatmap.2(Ca, Rowv=FALSE, symm=TRUE, margin=c(6, 6), trace="none" ) ## Place the color key below the image plot heatmap.2(x, lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(1.5, 4, 2 ) ) ## Place the color key to the top right of the image plot heatmap.2(x, lmat=rbind( c(0, 3, 4), c(2,1,0 ) ), lwid=c(1.5, 4, 2 ) ) ## For variable clustering, rather use distance based on cor(): data(USJudgeRatings) symnum( cU <- cor(USJudgeRatings) ) hU <- heatmap.2(cU, Rowv=FALSE, symm=TRUE, col=topo.colors(16), distfun=function(c) as.dist(1 - c), trace="none") ## The Correlation matrix with same reordering: hM <- format(round(cU, 2)) hM # now with the correlation matrix on the plot itself heatmap.2(cU, Rowv=FALSE, symm=TRUE, col=rev(heat.colors(16)), distfun=function(c) as.dist(1 - c), trace="none", cellnote=hM) ## genechip data examples \dontrun{ library(affy) data(SpikeIn) pms <- SpikeIn@pm # just the data, scaled across rows heatmap.2(pms, col=rev(heat.colors(16)), main="SpikeIn@pm", xlab="Relative Concentration", ylab="Probeset", scale="row") # fold change vs "12.50" sample data <- pms / pms[, "12.50"] data <- ifelse(data>1, data, -1/data) heatmap.2(data, breaks=16, col=redgreen, tracecol="blue", main="SpikeIn@pm Fold Changes\nrelative to 12.50 sample", xlab="Relative Concentration", ylab="Probeset") } } \keyword{hplot} gplots/man/colorpanel.Rd0000644000175100001440000000372711367120207015010 0ustar hornikusers\name{colorpanel} \alias{colorpanel} \alias{redgreen} \alias{greenred} \alias{bluered} \alias{redblue} \title{Generate a smoothly varying set of colors} \description{ \code{colorpanel} generate a set of colors that varies smoothly. \code{redgreen}, \code{greenred}, \code{bluered}, and \code{redblue} generate red-black-green, green-black-red, red-white-blue, and blue-white-red colorbars, respectively. colors } \usage{ colorpanel(n, low, mid, high) redgreen(n) greenred(n) bluered(n) redblue(n) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{n}{Desired number of color elements in the panel.} \item{low, mid, high}{Colors to use for the Lowest, middle, and highest values. \code{mid} may be ommited.} } \details{ The values for \code{low, mid, high} can be given as color names ('red'), plot color index (2=red), and HTML-style RGB, ("\#FF0000"=red). If \code{mid} is supplied, then the returned color panel will consist of \code{n - floor(n/2)} HTML-style RGB elements which vary smoothly between \code{low} and \code{mid}, then between \code{mid} and \code{high}. Note that if \code{n} is even, the color \code{mid} will occur twice at the center of the sequence. If \code{mid} is omitted, the color panel will vary smoothly beween \code{low} and \code{high}. } \value{ Vector of HTML-style RGB colors. } \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{colors} } } \examples{ showpanel <- function(col) { image(z=matrix(1:100, ncol=1), col=col, xaxt="n", yaxt="n" ) } par(mfrow=c(3,3)) # two colors only: showpanel(colorpanel(8,low="red",high="green")) # three colors showpanel(colorpanel(8,"red","black","green")) # note the duplicatation of black at the center, using an odd # number of elements resolves this: showpanel(colorpanel(9,"red","black","green")) showpanel(greenred(64)) showpanel(redgreen(64)) showpanel(bluered(64)) showpanel(redblue(64)) } \keyword{color} gplots/man/col2hex.Rd0000644000175100001440000000073411367120207014211 0ustar hornikusers\name{col2hex} \alias{col2hex} \title{Convert color names to hex RGB strings} \description{ Convert color names to hex RGB strings } \usage{ col2hex(cname) } \arguments{ \item{cname}{Color name(s)} } \value{ Character vector giving the hex color code translation of the provided color names. } \author{Gregory R. Warnes} \seealso{ \code{\link{col2rgb}}, \code{\link{colors}}, \code{\link{rgb}} } \examples{ col2hex(c("red","yellow","lightgrey")) } \keyword{color} gplots/man/ci2d.Rd0000644000175100001440000002060011764436101013464 0ustar hornikusers% $Id$ \name{ci2d} \alias{ci2d} \alias{print.ci2d} \title{ Create 2-dimensional empirical confidence regions } \description{ Create 2-dimensional empirical confidence regions from provided data. } \usage{ ci2d(x, y = NULL, nbins=51, method=c("bkde2D","hist2d"), bandwidth, factor=1.0, ci.levels=c(0.50,0.75,0.90,0.95,0.975), show=c("filled.contour","contour","image","none"), col=topo.colors(length(breaks)-1), show.points=FALSE, pch=par("pch"), points.col="red", xlab, ylab, ...) \method{print}{ci2d}(x, ...) } \arguments{ \item{x}{either a vector containing the x coordinates or a matrix with 2 columns. } \item{y}{a vector contianing the y coordinates, not required if `x' is matrix} \item{nbins}{number of bins in each dimension. May be a scalar or a 2 element vector. Defaults to 51.} \item{method}{One of "bkde2D" (for KernSmooth::bdke2d) or "hist2d" (for gplots::hist2d) specifyting the name of the method to create the 2-d density summarizing the data. Defaults to "bkde2D".} \item{bandwidth}{Bandwidth to use for \code{KernSmooth::bkde2D}. See below for default value. } \item{factor}{Numeric scaling factor for bandwidth. Useful for exploring effect of changing the bandwidth. Defaults to 1.0.} \item{ci.levels}{Confidence level(s) to use for plotting data. Defaults to \code{c(0.5, 0.75, 0.9, 0.95, 0.975)} } \item{show}{Plot type to be displaed. One of "filled.contour", "contour", "image", or "none". Defaults to "filled.contour".} \item{show.points}{Boolean indicating whether original data values should be plotted. Defaults to \code{TRUE}.} \item{pch}{Point type for plots. See \code{points} for details.} \item{points.col}{Point color for plotting original data. Defaiults to "red".} \item{col}{Colors to use for plots.} \item{xlab, ylab}{Axis labels} \item{\dots}{Additional arguments passed to \code{KernSmooth::bkde2D} or \code{gplots::hist2d}. } } \details{ This function utilizes either \code{KernSmooth::bkde2D} or \code{gplots::hist2d} to estmate a 2-dimensional density of the data passed as an argument. This density is then used to create and (optionally) display confidence regions. When \code{bandwidth} is ommited and \code{method="bkde2d"}, \code{KernSmooth::dpik} is appled in x and y dimensions to select the bandwidth. } \note{ Confidence intervals generated by ci2d are \emph{approximate}, and are subject to biases and/or artifacts induced by the binning or kernel smoothing method, bin locations, bin sizes, and kernel bandwidth. } \value{ A \code{ci2d} object consisting of a list containing (at least) the following elements: \item{nobs}{number of original data points} \item{x}{x position of each density estimate bin} \item{y}{y position of each density estimate bin} \item{density}{Matrix containing the probability density of each bin (count in bin/total count)} \item{cumDensity}{Matrix where each element contains the cumulative probability density of all elements with the same density (used to create the confidence region plots) } \item{contours}{List of contours of each confidence region.} \item{call}{Call used to create this object} } \author{ Gregory R. Warnes \email{greg@warnes.net}} \seealso{ \code{\link[KernSmooth]{bkde2D}}, \code{\link[KernSmooth]{dpik}}, \code{\link{hist2d}} } \examples{ #### ## Basic usage #### data(geyser, package="MASS") x <- geyser$duration y <- geyser$waiting # 2-d confidence intervals based on binned kernel density estimate ci2d(x,y) # filled contour plot ci2d(x,y, show.points=TRUE) # show original data # image plot ci2d(x,y, show="image") ci2d(x,y, show="image", show.points=TRUE) # contour plot ci2d(x,y, show="contour", col="black") ci2d(x,y, show="contour", col="black", show.points=TRUE) #### ## Control Axis scales #### x <- rnorm(2000, sd=4) y <- rnorm(2000, sd=1) # 2-d confidence intervals based on binned kernel density estimate ci2d(x,y) # 2-d confidence intervals based on 2d histogram ci2d(x,y, method="hist2d", nbins=25) # Require same scale for each axis, this looks oval ci2d(x,y, range.x=list(c(-20,20), c(-20,20))) ci2d(x,y, method="hist2d", same.scale=TRUE, nbins=25) # hist2d #### ## Control smoothing and binning #### x <- rnorm(2000, sd=4) y <- rnorm(2000, mean=x, sd=2) # Default 2-d confidence intervals based on binned kernel density estimate ci2d(x,y) # change the smoother bandwidth ci2d(x,y, bandwidth=c(sd(x)/8, sd(y)/8) ) # change the smoother number of bins ci2d(x,y, nbins=10) ci2d(x,y) ci2d(x,y, nbins=100) # Default 2-d confidence intervals based on 2d histogram ci2d(x,y, method="hist2d", show.points=TRUE) # change the number of histogram bins ci2d(x,y, nbin=10, method="hist2d", show.points=TRUE ) ci2d(x,y, nbin=25, method="hist2d", show.points=TRUE ) #### ## Perform plotting manually #### data(geyser, package="MASS") # let ci2d handle plotting contours... ci2d(geyser$duration, geyser$waiting, show="contour", col="black") # call contour() directly, show the 90 percent CI, and the mean point est <- ci2d(geyser$duration, geyser$waiting, show="none") contour(est$x, est$y, est$cumDensity, xlab="duration", ylab="waiting", levels=0.90, lwd=4, lty=2) points(mean(geyser$duration), mean(geyser$waiting), col="red", pch="X") #### ## Extract confidence region values ### data(geyser, package="MASS") ## Empirical 90 percent confidence limits quantile( geyser$duration, c(0.05, 0.95) ) quantile( geyser$waiting, c(0.05, 0.95) ) ## Bivariate 90 percent confidence region est <- ci2d(geyser$duration, geyser$waiting, show="none") names(est$contours) ## show available contours ci.90 <- est$contours[names(est$contours)=="0.9"] # get region(s) ci.90 <- rbind(ci.90[[1]],NA, ci.90[[2]], NA, ci.90[[3]]) # join them print(ci.90) # show full contour range(ci.90$x, na.rm=TRUE) # range for duration range(ci.90$y, na.rm=TRUE) # range for waiting #### ## Visually compare confidence regions #### data(geyser, package="MASS") ## Bivariate smoothed 90 percent confidence region est <- ci2d(geyser$duration, geyser$waiting, show="none") names(est$contours) ## show available contours ci.90 <- est$contours[names(est$contours)=="0.9"] # get region(s) ci.90 <- rbind(ci.90[[1]],NA, ci.90[[2]], NA, ci.90[[3]]) # join them plot( waiting ~ duration, data=geyser, main="Comparison of 90 percent confidence regions" ) polygon( ci.90, col="green", border="green", density=10) ## Univariate Normal-Theory 90 percent confidence region mean.x <- mean(geyser$duration) mean.y <- mean(geyser$waiting) sd.x <- sd(geyser$duration) sd.y <- sd(geyser$waiting) t.value <- qt(c(0.05,0.95), df=nobs(geyser$duration), lower=TRUE) ci.x <- mean.x + t.value* sd.x ci.y <- mean.y + t.value* sd.y plotCI(mean.x, mean.y, li=ci.x[1], ui=ci.x[2], barcol="blue", col="blue", err="x", pch="X", add=TRUE ) plotCI(mean.x, mean.y, li=ci.y[1], ui=ci.y[2], barcol="blue", col="blue", err="y", pch=NA, add=TRUE ) # rect(ci.x[1], ci.y[1], ci.x[2], ci.y[2], border="blue", # density=5, # angle=45, # col="blue" ) ## Empirical univariate 90 percent confidence region box <- cbind( x=quantile( geyser$duration, c(0.05, 0.95 )), y=quantile( geyser$waiting, c(0.05, 0.95 )) ) rect(box[1,1], box[1,2], box[2,1], box[2,2], border="red", density=5, angle=-45, col="red" ) ## now a nice legend legend( "topright", legend=c(" Region type", "Univariate Normal Theory", "Univarite Empirical", "Smoothed Bivariate"), lwd=c(NA,1,1,1), col=c("black","blue","red","green"), lty=c(NA,1,1,1) ) #### ## Test with a large number of points #### x <- rnorm(60000, sd=1) y <- c( rnorm(40000, mean=x, sd=1), rnorm(20000, mean=x+4, sd=1) ) hist2d(x,y) ci <- ci2d(x,y) ci } \keyword{dplot} \keyword{hplot} \keyword{nonparametric} gplots/man/boxplot.n.Rd0000644000175100001440000000312411404324572014567 0ustar hornikusers% $Id: boxplot.n.Rd 1441 2010-06-11 03:11:54Z warnes $ % % $Log$ % Revision 1.5 2005/12/01 16:46:52 nj7w % Updated Greg's email address % % Revision 1.4 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:30 nj7w % Initial submission as an individual package % % Revision 1.3 2002/04/09 00:51:31 warneg % % Checkin for version 0.5.3 % % Revision 1.2 2001/08/25 05:46:21 warneg % Added CVS header. % % Revision 1.1 2001/08/25 05:45:10 warneg % Initial Checkin % \name{boxplot.n} \alias{boxplot.n} \title{Produce a Boxplot Annotated with the Number of Observations} \description{ This funcntion uses \code{boxplot} to produce a boxplot which is then annotated with the number of observations in each group. } \usage{ boxplot.n(..., top=FALSE, shrink=1, textcolor=NULL) } \arguments{ \item{\dots}{ parameters passed to \code{boxplot}. } \item{top}{ logical indicating whether the number of observations should be added to the top or the bottom of the plotting region. Defaults to \code{FALSE}. } \item{shrink}{ value to shrink character size (cex) when annotating.} \item{textcolor}{ text color. } } \author{ Gregory R. Warnes \email{greg@warnes.net}} \seealso{ \code{\link{boxplot}}, \code{\link{text}}} \examples{ data(state) # n's at bottom boxplot.n( state.area ~ state.region) # n's at top boxplot.n( state.area ~ state.region, top=TRUE) # small red text boxplot.n( state.area ~ state.region, shrink=0.8, textcolor="red") } \keyword{ hplot } gplots/man/barplot2.Rd0000644000175100001440000003177112163122523014375 0ustar hornikusers%% Revision 2.1 2005/06/06 %% - Modified default behavior with 0's and NA's in %% 'height' so that these values are not plotted. %% - Warning messages added in the case of the above. %% Revision 2.0 2005/04/27 %% - Added panel.first and panel.last arguments %% - As per R 2.0.0, the default barplot() method by default uses a %% gamma-corrected grey palette (rather than the heat color %% palette) for coloring its output when given a matrix. % $Id: barplot2.Rd 1646 2013-03-24 05:19:04Z warnes $ %% $Log$ %% Revision 1.12 2005/12/07 18:48:54 nj7w %% Changed the default grey colors to heat colors, if height is matrix %% %% Revision 1.11 2005/12/06 22:41:08 nj7w %% Fixed minor error in documentation of barplot2 %% %% Revision 1.10 2005/06/09 14:20:28 nj7w %% Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. %% %% Revision 1.3 2005/06/06 21:44:51 nj7w %% Changes based on Marc Schwartz's suggestions to handel 0's and NA's appropriately. %% %% Revision 1.9 2004/06/28 20:16:44 warnes %% - Default 2-d color set to grey as in (v2.0.0) r-devel %% - The default (v1.9.1) barplot method now handles vectors and 1-d arrays %% (e.g., obtained by table()) the same, and uses grey instead of %% heat color palettes in these cases. (Also fixes PR#6776.) %% - Updated to reflect the addition of 'offset' argument in base %% - Fix bug in stacked barplots, which would not be plotted properly %% % % Revision 1.8 2004/06/26 % - Default 2-d color set to grey as in (v2.0.0) r-devel % - The default (v1.9.1) barplot method now handles vectors and 1-d arrays % (e.g., obtained by table()) the same, and uses grey instead of % heat color palettes in these cases. (Also fixes PR#6776.) % - Updated to reflect the addition of 'offset' argument in base % - Fix bug in stacked barplots, which would not be plotted properly % % Revision 1.7 2003/12/02 16:58:46 warnes % % - Remove '%' character from example code to avoid errors. % % Revision 1.6 2003/12/01 16:00:08 warnes % % - updated to match changes to barplot() in base. % % Revision 1.5 2003/11/18 18:59:08 warnes % % - Tiny fix to remove R CMD check error. % % Revision 1.4 2003/01/30 21:43:05 warnes % % - Added argument 'add' to allow for the addition of a barplot to an % existing graphic. Default is FALSE % % Revision 1.2 2002/09/23 14:27:17 warnes % % - Fixed syntax errors in barplot2.Rd and CrossTable.Rd % - Fixed incorrect translation of 'F' (distribution) to 'FALSE' in glh.test.Rd % % Revision 1.1 2002/09/23 13:38:53 warnes % % - Added CrossTable() and barplot2() code and docs contributed by Marc Schwartz. % - Permit combinations() to be used when r>n provided repeat.allowed=TRUE % - Bumped up version number % % \name{barplot2} \alias{barplot2} \alias{barplot2.default} \title{Enhanced Bar Plots} \usage{ \method{barplot2}{default}(height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL, beside = FALSE, horiz = FALSE, density = NULL, angle = 45, col = NULL, prcol = NULL, border = par("fg"), main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, xpd = TRUE, log = "", axes = TRUE, axisnames = TRUE, cex.axis = par("cex.axis"), cex.names = par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0, plot.ci = FALSE, ci.l = NULL, ci.u = NULL, ci.color = "black", ci.lty = "solid", ci.lwd = 1, ci.width = 0.5, plot.grid = FALSE, grid.inc = NULL, grid.lty = "dotted", grid.lwd = 1, grid.col = "black", add = FALSE, panel.first = NULL, panel.last = NULL, \dots) } \arguments{ \item{height}{either a vector or matrix of values describing the bars which make up the plot. If \code{height} is a vector, the plot consists of a sequence of rectangular bars with heights given by the values in the vector. If \code{height} is a matrix and \code{beside} is \code{FALSE} then each bar of the plot corresponds to a column of \code{height}, with the values in the column giving the heights of stacked ``sub-bars'' making up the bar. If \code{height} is a matrix and \code{beside} is \code{TRUE}, then the values in each column are juxtaposed rather than stacked.} \item{width}{optional vector of bar widths. Re-cycled to length the number of bars drawn. Specifying a single value will no visible effect unless \code{xlim} is specified.} \item{space}{the amount of space (as a fraction of the average bar width) left before each bar. May be given as a single number or one number per bar. If \code{height} is a matrix and \code{beside} is \code{TRUE}, \code{space} may be specified by two numbers, where the first is the space between bars in the same group, and the second the space between the groups. If not given explicitly, it defaults to \code{c(0,1)} if \code{height} is a matrix and \code{beside} is \code{TRUE}, and to 0.2 otherwise.} \item{names.arg}{a vector of names to be plotted below each bar or group of bars. If this argument is omitted, then the names are taken from the \code{names} attribute of \code{height} if this is a vector, or the column names if it is a matrix.} \item{legend.text}{a vector of text used to construct a legend for the plot, or a logical indicating whether a legend should be included. This is only useful when \code{height} is a matrix. In that case given legend labels should correspond to the rows of \code{height}; if \code{legend.text} is true, the row names of \code{height} will be used as labels if they are non-null.} \item{beside}{a logical value. If \code{FALSE}, the columns of \code{height} are portrayed as stacked bars, and if \code{TRUE} the columns are portrayed as juxtaposed bars.} \item{horiz}{a logical value. If \code{FALSE}, the bars are drawn vertically with the first bar to the left. If \code{TRUE}, the bars are drawn horizontally with the first at the bottom.} \item{density}{a vector giving the the density of shading lines, in lines per inch, for the bars or bar components. The default value of \code{NULL} means that no shading lines are drawn. Non-positive values of \code{density} also inhibit the drawing of shading lines.} \item{angle}{the slope of shading lines, given as an angle in degrees (counter-clockwise), for the bars or bar components.} \item{col}{a vector of colors for the bars or bar components. By default, grey is used if \code{height} is a vector, and \code{heat.colors(nrow(height))} if \code{height} is a matrix.} \item{prcol}{the color to be used for the plot region.} \item{border}{the color to be used for the border of the bars.} \item{main, sub}{overall and sub titles for the plot.} \item{xlab}{a label for the x axis.} \item{ylab}{a label for the y axis.} \item{xlim}{limits for the x axis.} \item{ylim}{limits for the y axis.} \item{xpd}{logical. Should bars be allowed to go outside region?} \item{log}{a character string which contains `"x"' if the x axis is to be logarithmic, `"y"' if the y axis is to be logarithmic and `"xy"' or `"yx"' if both axes are to be logarithmic.} \item{axes}{logical. If \code{TRUE}, a vertical (or horizontal, if \code{horiz} is true) axis is drawn.} \item{axisnames}{logical. If \code{TRUE}, and if there are \code{names.arg} (see above), the other axis is drawn (with \code{lty = 0}) and labeled.} \item{cex.axis}{expansion factor for numeric axis labels.} \item{cex.names}{expansion factor for names.} \item{inside}{logical. If \code{TRUE}, the lines which divide adjacent (non-stacked!) bars will be drawn. Only applies when \code{space = 0} (which it partly is when \code{beside = TRUE}).} %MM: we still have "NotYetUsed" -- the above describe's S-plus 6.1 (not % precisely documented!) behavior! \item{plot}{logical. If \code{FALSE}, nothing is plotted.} \item{axis.lty}{the graphics parameter \code{lty} applied to the axis and tick marks of the categorical (default horzontal) axis. Note that by default the axis is suppressed.} \item{offset}{a vector indicating how much the bars should be shifted relative to the x axis.} \item{plot.ci}{logical. If \code{TRUE}, confidence intervals are plotted over the bars. Note that if a stacked bar plot is generated, confidence intervals will not be plotted even if \code{plot.ci = TRUE}} \item{ci.l,ci.u}{The confidence intervals (ci.l = lower bound, ci.u = upper bound) to be plotted if \code{plot.ci} = \code{TRUE}. Values must have the same dim structure as \code{height}.} \item{ci.color}{the color for the confidence interval line segments} \item{ci.lty}{the line type for the confidence interval line segments} \item{ci.lwd}{the line width for the confidence interval line segments} \item{ci.width}{length of lines used for the "t" at the end of confidence interval line segments, as a multple of \code{width}. Defaults to 0.5.} \item{plot.grid}{if \code{TRUE} a lined grid will be plotted behind the bars} \item{grid.inc}{the number of grid increments to be plotted} \item{grid.lty}{the line type for the grid} \item{grid.lwd}{the line width for the grid} \item{grid.col}{the line color for the grid} \item{add}{logical, if \code{TRUE} add barplot to current plot.} \item{panel.first}{An expression to be evaluated after the plot region coordinates have been set up, but prior to the drawing of the bars and other plot region contents. This can be useful to add additional plot region content behind the bars. This will also work if \code{add} = \code{TRUE}} \item{panel.last}{An expression to be evaluated after the bars have been drawn, but prior to the addition of confidence intervals, a legend and the axis annotation} \item{\dots}{further graphical parameters (\code{\link{par}}) are passed to \code{\link{plot.window}()}, \code{\link{title}()} and \code{\link{axis}}.} } \description{ An enhancement of the standard barplot() function. Creates a bar plot with vertical or horizontal bars. Can plot confidence intervals for each bar, a lined grid behind the bars, change plot area color and logarithmic axes may be used. } \details{ This is a generic function, it currently only has a default method. A formula interface may be added eventually. } \value{ A numeric vector (or matrix, when \code{beside = TRUE}), say \code{mp}, giving the coordinates of \emph{all} the bar midpoints drawn, useful for adding to the graph. If \code{beside} is true, use \code{colMeans(mp)} for the midpoints of each \emph{group} of bars, see example. } \author{Original barplot() by R-Core. Enhancements by Marc Schwartz \email{marc\_schwartz@comcast.net} } \note{ Prior to \R 1.6.0, \code{barplot} behaved as if \code{axis.lty = 1}, unintentionally. 0 (zero) and NA values in \code{height} will not be plotted if using logarithmic scales. If there are NA values in \code{height} and \code{beside = FALSE}, values after the NA will not be plotted in stacked bars. } \seealso{ \code{\link{plot}(\dots, type = "h")}, \code{\link{dotchart}}, \code{\link{hist}}. } \examples{ tN <- table(Ni <- rpois(100, lambda = 5)) r <- barplot2(tN, col = 'gray') #- type = "h" plotting *is* `bar'plot lines(r, tN, type = 'h', col = 'red', lwd = 2) barplot2(tN, space = 1.5, axisnames = FALSE, sub = "barplot2(..., space = 1.5, axisnames = FALSE)") data(VADeaths, package = "datasets") barplot2(VADeaths, plot = FALSE) barplot2(VADeaths, plot = FALSE, beside = TRUE) mp <- barplot2(VADeaths) # default tot <- colMeans(VADeaths) text(mp, tot + 3, format(tot), xpd = TRUE, col = "blue") barplot2(VADeaths, beside = TRUE, col = c("lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk"), legend = rownames(VADeaths), ylim = c(0, 100)) title(main = "Death Rates in Virginia", font.main = 4) # Example with confidence intervals and grid hh <- t(VADeaths)[, 5:1] mybarcol <- "gray20" ci.l <- hh * 0.85 ci.u <- hh * 1.15 mp <- barplot2(hh, beside = TRUE, col = c("lightblue", "mistyrose", "lightcyan", "lavender"), legend = colnames(VADeaths), ylim = c(0, 100), main = "Death Rates in Virginia", font.main = 4, sub = "Faked 95 percent error bars", col.sub = mybarcol, cex.names = 1.5, plot.ci = TRUE, ci.l = ci.l, ci.u = ci.u, plot.grid = TRUE) mtext(side = 1, at = colMeans(mp), line = -2, text = paste("Mean", formatC(colMeans(hh))), col = "red") box() # Example with horizontal bars, grid and logarithmic x axis barplot2(1:10 , log = "x", plot.grid = TRUE, grid.inc = 10, xlim = c(0.5, 20), horiz = TRUE, cex.axis = 0.9, prcol = "gray95") box() # Bar shading example barplot2(VADeaths, angle = 15 + 10 * 1:5, density = 20, col = "black", legend = rownames(VADeaths)) title(main = list("Death Rates in Virginia", font = 4)) # border : barplot2(VADeaths, border = "dark blue") % lwd = 2 << not passed %notyet barplot(VADeaths, inside = FALSE, main = "barplot(*, inside=FALSE)") } \keyword{hplot} gplots/man/bandplot.Rd0000644000175100001440000000606411404324572014455 0ustar hornikusers% $Id: bandplot.Rd 1441 2010-06-11 03:11:54Z warnes $ % % $Log$ % Revision 1.7 2005/12/01 16:46:52 nj7w % Updated Greg's email address % % Revision 1.6 2005/06/09 14:20:28 nj7w % Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. % % Revision 1.1.1.1 2005/05/25 22:15:30 nj7w % Initial submission as an individual package % % Revision 1.5 2003/11/19 14:52:32 warnes % % Remove extranious NULL that confused R CMD check. % % Revision 1.4 2002/09/23 13:59:30 warnes % - Modified all files to include CVS Id and Log tags. % % \name{bandplot} \alias{bandplot} \title{Plot x-y Points with Locally Smoothed Mean and Standard Deviation} \description{ Plot x-y Points with lines showing the locally smoothed mean and standard deviation. } \usage{ bandplot(x, y, ..., add = FALSE, sd = c(-2:2), sd.col=c("magenta", "blue", "red", "blue", "magenta"), sd.lwd=c(2, 2, 3, 2, 2), sd.lty=c(2, 1, 1, 1, 2), method = "frac", width = 1/5, n=50) } \arguments{ \item{x}{numeric vector of x locations} \item{y}{numeric vector of x locations} \item{\dots}{Additional plotting parameters. } \item{add}{ Boolean indicating whether the local mean and standard deviation lines should be added to an existing plot. Defaults to FALSE.} \item{sd}{Vector of multiples of the standard devation that should be plotted. \code{0} gives the mean, \code{-1} gives the mean minus one standard deviation, etc. Defaults to -2:2.} \item{sd.col,sd.lwd,sd.lty}{Color, line width, and line type of each plotted line.} \item{method, width, n}{ Parameters controlling the smoothing. See the help page for \code{\link{wapply}} for details.} } \details{ \code{bandplot} was created to look for changes in the mean or variance of scatter plots, particularly plots of regression residuals. The local mean and standard deviation are calculated by calling 'wapply'. By default, bandplot asks wapply to smooth using intervals that include the nearest 1/5 of the data. See the documentation of that function for details on the algorithm. } \value{ Invisibly returns a list containing the x,y points plotted for each line. } \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{wapply}}, \code{\link{lowess}}} \examples{ # fixed mean, changing variance x <- 1:1000 y <- rnorm(1000, mean=1, sd=1 + x/1000 ) bandplot(x,y) # fixed varance, changing mean x <- 1:1000 y <- rnorm(1000, mean=x/1000, sd=1) bandplot(x,y) # # changing mean and variance # x <- abs(rnorm(500)) y <- rnorm(500, mean=2*x, sd=2+2*x) # the changing mean and dispersion are hard to see whith the points alone: plot(x,y ) # regression picks up the mean trend, but not the change in variance reg <- lm(y~x) summary(reg) # using bandplot on the original data helps to show the mean and # variance trend bandplot(x,y) # using bandplot on the residuals helps to see that regression removes # the mean trend but leaves the trend in variability bandplot(predict(reg),resid(reg)) } \keyword{ dplot } gplots/man/balloonplot.Rd0000644000175100001440000001724211367120207015174 0ustar hornikusers\name{balloonplot} \alias{balloonplot} \alias{balloonplot.default} \alias{balloonplot.table} \title{Plot a graphical matrix where each cell contains a dot whose size reflects the relative magnitude of the corresponding component.} \description{ Plot a graphical matrix where each cell contains a dot whose size reflects the relative magnitude of the corresponding component. } \usage{ balloonplot(x, ...) \method{balloonplot}{table}(x, xlab, ylab, zlab, show.zeros=FALSE,show.margins=TRUE,...) \method{balloonplot}{default}(x,y,z, xlab, ylab, zlab=deparse(substitute(z)), dotsize=2/max(strwidth(19),strheight(19)), dotchar=19, dotcolor="skyblue", text.size=1, text.color=par("fg"), main, label=TRUE, label.digits=2, label.size=1, label.color=par("fg"), scale.method=c("volume","diameter"), scale.range=c("absolute","relative"), colsrt=par("srt"), rowsrt=par("srt"), colmar=1, rowmar=2, show.zeros=FALSE, show.margins=TRUE, cum.margins=TRUE, sorted=TRUE, label.lines=TRUE, fun=function(x)sum(x,na.rm=T), hide.duplicates=TRUE, ... ) } \arguments{ \item{x}{A table object, or either a vector or a list of several categorical vectors containing grouping variables for the first (x) margin of the plotted matrix.} \item{y}{Vector or list of vectors for grouping variables for the second (y) dimension of the plotted matrix.} \item{z}{Vector of values for the size of the dots in the plotted matrix.} \item{xlab}{Text label for the x dimension. This will be displayed on the x axis and in the plot title.} \item{ylab}{Text label for the y dimension. This will be displayed on the y axis and in the plot title.} \item{zlab}{Text label for the dot size. This will be included in the plot title.} \item{dotsize}{Maximum dot size. You may need to adjust this value for different plot devices and layouts.} \item{dotchar}{Plotting symbol or character used for dots. See the help page for the points function for symbol codes.} \item{dotcolor}{Scalar or vector specifying the color(s) of the dots in the plot.} \item{text.size, text.color}{Character size and color for row and column headers} \item{main}{Plot title text.} \item{label}{Boolean flag indicating whether the actual value of the elements should be shown on the plot.} \item{label.digits}{Number of digits used in formatting value labels.} \item{label.size, label.color}{ Character size and color for value labels.} \item{scale.method}{Method of scaling the sizes of the dot, either "volume" or "diameter". See below.} \item{scale.range}{Method for scaling original data to compute circle diameter. \code{scale.range="absolute"} scales the data relative to 0 (i.e, maps [0,max(z)] --> [0,1]), while \code{scale.range="relative"} scales the data relative to min(z) (i.e. maps [min(z), max(z)] --> [0,1]).} \item{rowsrt, colsrt}{Angle of rotation for row and column labels.} \item{rowmar, colmar}{Space allocated for row and column labels. Each unit is the width/height of one cell in the table.} \item{show.zeros}{boolean. If \code{FALSE}, entries containing zero will be left blank in the plotted matrix. If \code{TRUE}, zeros will be displayed.} \item{show.margins}{boolean. If \code{TRUE}, row and column sums are printed in the bottom and right margins, respectively.} \item{cum.margins}{boolean. If \code{TRUE}, marginal fractions are graphically presented in grey behind the row/column label area.} \item{sorted}{boolean. If \code{TRUE}, the rows will be arranged in sorted order by using the levels of the first y factor, then the second y factor, etc. The same process is used for the columns, based on the x factors} \item{label.lines}{boolean. If \code{TRUE}, borders will be drawn for row and column level headers.} \item{hide.duplicates}{boolean. If \code{TRUE}, column and row headers will omit duplicates within row/column to reduce clutter. Defaults to \code{TRUE}.} \item{fun}{function to be used to combine data elements with the same levels of the grouping variables \code{x} and \code{y}. Defaults to \code{sum}} \item{\dots}{ Additional arguments passed to \code{balloonplot.default} or \code{plot}, as appropriate.} } \details{ This function plots a visual matrix. In each \code{x},\code{y} cell a dot is plotted which reflects the relative size of the corresponding value of \code{z}. When \code{scale.method="volume"} the volume of the dot is proportional to the relative size of \code{z}. When \code{scale.method="diameter"}, the diameter of the dot is proportional to the the relative size of \code{z}. The "volume" method is default because the "diameter" method visually exaggerates differences. } \value{ Nothing of interest. } \note{ \code{z} is expected to be non-negative. The function will still operate correctly if there are negative values of \code{z}, but the corresponding dots will have 0 size and a warning will be generated. } \references{Function inspired by question posed on R-help by Ramon Alonso-Allende \email{allende@cnb.uam.es}.} \author{ Gregory R. Warnes \email{greg@warnes.net} } \seealso{ \code{\link{plot.table}} } \examples{ \testonly{ set.seed(12425421) } # 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) data <- data.frame(Car=rep(carnames,4), Color=rep(carcolors, c(4,4,4,4) ), Value=datavals ) # show the data data # generate balloon plot with default scaling balloonplot( data$Car, data$Color, data$Value) # show margin label rotation & space expansion, using some long labels levels(data$Car) <- c("BMW: High End, German","Renault: Medium End, French", "Mercedes: High End, German", "Seat: Imaginary, Unknown Producer") # generate balloon plot with default scaling balloonplot( data$Car, data$Color, data$Value, colmar=3, colsrt=90) # Create an example using table xnames <- sample( letters[1:3], 50, replace=2) ynames <- sample( 1:5, 50, replace=2) tab <- table(xnames, ynames) balloonplot(tab) # Example of multiple classification variabls using the Titanic data library(datasets) data(Titanic) dframe <- as.data.frame(Titanic) # convert to 1 entry per row format attach(dframe) balloonplot(x=Class, y=list(Survived, Age, Sex), z=Freq, sort=TRUE) # colorize: surviors lightblue, non-survivors: grey Colors <- Titanic Colors[,,,"Yes"] <- "skyblue" Colors[,,,"No"] <- "grey" colors <- as.character(as.data.frame(Colors)$Freq) balloonplot(x=list(Age,Sex), y=list(Class=Class, Survived=gdata::reorder.factor(Survived,c(2,1))), z=Freq, zlab="Number of Passengers", sort=TRUE, dotcol = colors, show.zeros=TRUE, show.margins=TRUE) } \keyword{dplot} \keyword{hplot} gplots/inst/0000755000175100001440000000000012163323571012560 5ustar hornikusersgplots/inst/doc/0000755000175100001440000000000012163323571013325 5ustar hornikusersgplots/inst/doc/venn.pdf0000644000175100001440000035007712163323571015002 0ustar hornikusers%PDF-1.5 %ÐÔÅØ 4 0 obj << /Length 1675 /Filter /FlateDecode >> stream xÚXKÛ6¾ï¯ÐQjZ$õ ´@Ò4@ ôÐÆè%ÉA–µ¶»–ìHv¶{Ê_ï¼HÉ4@’%r8ïùfä7ˇÅ;›EºPFgi´|Œt™«ÜDyž*ãòh¹Ž>ÄÍ 73wtÍm’Äowð\màÖWpk\Öñ3<ïNÛÙ§åo‹wirÁ9ÍUél”0Sö³P§ "i<ð£ ÚÚñÂÊКG|>ùW|hJȦ”Cè(^¢Ä:‰OGV,§ý?™I} ò_{—ȖʤÙe}¸@Ó£RÎ9Ý`kD…†)}’NLA*I+¤è¸¯ÐrM™Mg|Ó\ ”ë Ê.·")ÄESu¾â$5hGZA‹À$ƒhSíŸÑiÕp/·'¥){²j¬§uC Bì §By15¥áþ=_’:¸‰¾…ÁS¬¹‚v´¹:¯ÐŠR·ë½ä•u`UÖΨ¿¸þúÚlâ}”fsbn;¥ÌÏV«ýè›IG`z›\Dý˜f皣Jd+ÆfÝù1c<¡9´¨PíÛ9–Œ(8#ððãY¼?Í€Û·Ú(ëB¹~Üêäú˜d ÿÜiÜsøÂYuèÞm¤^ÃÏÕ£ƒzÆÐƒáùp x•´;~ƒœÙŽ 9©àz¹6ÁT?Ñ !`ërée<0á}¦~ˆê \¤6Ànr{BÉçæ&oX©ó #Ò|ãE½$”Ów’Hµó-ÛO.ÞVÁR@Š;hž}ÍùÿŠ4`z–„$ù¸è¾öÓÄià¥f7‹¢Žt8~&aN¼LƒüN!¤«„WåÅôôÙåhC#­Œˆ†ëMØRmrפî Ò+>ŽBõÂÌZ*ä^¶þñÒ e»†)êÃ^"Ùv¼"H(ê„î#wœÚÀ0»G0$ôf4ÜÅ<îÍ¢ÄzR¢Ä8ËÂB/#5Rÿ7ÀcŠ’‡in]yk4g5Ì®”ªÏcxé½±ù…W8˜ßÍWêÁõ-j¿r“où…?ÑX¾O:šÇ;Фí˜2¥ÆIý ö#ñ |?¶ÿŒÜ<Rޑȉqø~3h¤Áa4<ûI#¤/ûx~Ïìj˜‚‘|RÁûÖÏ¿Í+®Ã,™"† ÞŒÌO0@Ä}­B[ó¹êúþð6Öûu"ç»(q!sf"ç5\?âG%\¯àÊ(ÓtüFÖSYÏeýgY¯G©l9!EVšä‡Tðº?ü²|øü ñs9Ò‘6©r |tæNYø„¯Û‡Ÿ’h ›`¥²¥‹ž‰´´-Tê÷Ñû‡?Þàÿ ÆD|Àäom3å\Ì´*¬½ø†5?] øHÂTé ¾–rZ¨¶3ÃÐs:¾Z,¨Påð“”lówK¥(ñ6‹q{C0lwÝ­}À˦6²Y©’¢¼±O—Á>«´sWÖM•6…Q™ÕÀÊ)ÿ?Åz‡Ù³é«ö¶ ­r›ƒ•àZôÛè Tñ_Šó!š endstream endobj 19 0 obj << /Length 660 /Filter /FlateDecode >> stream xÚVMo›@½ó+O Ìì.k¨ÚJqÜHí-·4ÇÁŠUœ¤U}gv†§,k¼3óöícvüàCšÇ0Ó¾1C’û«÷ìÅVÛÔ¸ˆN×¹@òdbú}þ¢önð׺¢3ê€Î ozùyœ[eýbíƒÎã™±¾Q“¿xðoƒâ1„  #“¨ Zîh°çQ½ævUoqömWá_ëm¸}Á©Gɧ¸ …¼Ð‘h¢t˜U¨2+é˦ìä(ìKÉ}çAF6UAf:¨%ì™(•ñ×%ß?PçÆ` qžZÞ_ùý´Hƒ¶ #­u°ÚÈxµ•ýj­óê‚û-«z_JŠl­¡Î¶äƒ$)iüÀcʬ¹{FÊ%eÔ;Á¡HZtK`Oã°p‹Æh~áó;T3’‚_‡åÖÖtú¯ G“P% ŒZL¯Ó¤óäÔG*eM¾†Qªtðæ´eu–h÷Â}F‹ÐÞd\‰ýLÒ„³ß¶ 8—h_ÐíZŠv6—y#óVæ¯d~u€0âÊ$” vƒ¸ýYm´:D»Æv=ª“D*äX'©‰ì´³§!¡ZÔéµéž5eñ*?£–CÆ Uí1â/¹™ssÅÍ‚+¹MïòLD6<ò3×RÖ‰¦g³]=C 0Æú˜ØÿA™ÀÔÎÓ>h ƒL`Œ œÁ¤«ÉH/è©Ý/Æé§=u’ € 2éÑÆë¤Î9ÉäDÀÙu§ëÆëăÀ8ƒ Œ1Òd)7Zûr”ËŽ®×‰\­[¹ðöb“Î…÷îVøÜñ’“ž—Ç„/Ê£o›Çø¹ƒ.øm’ç ¥(ÎûVxÿõê endstream endobj 1 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./venn-001.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 20 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 21 0 R>> /ExtGState << >>/ColorSpace << /sRGB 22 0 R >>>> /Length 391 /Filter /FlateDecode >> stream xœSMOÃ0 ½çWø—,NÚ|ÙH“@ë qêÄaÒÐü}œØi3„ÐÊ¡­üâg¿ç¸[@8§Úɳ:¿<®a³WFc }ï7Ï„†¾Ôë8(„-=G…9žö0¦ŒœfÄvQw¬qÚQ”B>·Þ–3ŽFÊvÖjœLÕHj—lAlÒÞTnĦ49W:3Pe2ñRô¨ö”îQ[×ú`@¤ I:º*}*g³ k£öbCh¸56*Âj„+B¹ôlC:3 "™w¡˜M ‰ÜßL·Áˆ#J¶Ñû2¸ÀièyèqÖóà…Ô5\‰¤6ß#´ Ùs‘îa®-Q1½©J™{©;{Y²™ãù—Í<jõ`i•‡w‡–~¡@í¸DŸà n6·0ÕýPjÿMv>è)˜ÈëëÉä±åÞ]ϵôñ\ßW²[ Ú…¼ñèR%ã²!Ù‰~£©³¹žƒN¾m¼@5bÒèþÙXæ…ô¯/·,ä²)?È;õ |;þ« endstream endobj 24 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 28 0 obj << /Length 344 /Filter /FlateDecode >> stream xÚQ=kÃ0Ýý+4ÊP+:I–åµ´v+xk:¨ùj –Ò$òï{gÙ‰–,Ep~~÷ùî€I|À n4šdË–}ñ[«mm†ˆ .óFböÖ+ö‹|“«šjVYÑ箘ÍkEk•e݆nEc,3J §5ëVì“ûP_••Öš÷}©~ý.+eù:Ñk¤/¥r|ˆP¼G¤Fïa@s¤¸Ó Í.E#Ú_S†ß“/¦Œ b¬08Ì-Z”_Ý{ñÚÝtM²@;a%ücUúñª²¢WJ M­ªûUƒá½ r¿Ù¸!³ym³Z,6Š\†ÀCXÈZ"À¤¬| 8[=%Ñöhϧ3™±u¦ÿ] w–ˆ˜à’.I#û0ÍGÞL„?ÒýqC³¼+Á¯æç,œÒ$ñLG~¢¡™Aq¬R­pÎ¥YõtÄ?XÔ¨D endstream endobj 16 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./venn-002.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 30 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 31 0 R>> /ExtGState << >>/ColorSpace << /sRGB 32 0 R >>>> /Length 21 /Filter /FlateDecode >> stream xœ3TðR0TÈR(ä „a.,ÞE endstream endobj 34 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 25 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./venn-003.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 35 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 36 0 R>> /ExtGState << >>/ColorSpace << /sRGB 37 0 R >>>> /Length 21 /Filter /FlateDecode >> stream xœ3TðR0TÈR(ä „a.,ÞE endstream endobj 39 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 42 0 obj << /Length 671 /Filter /FlateDecode >> stream xÚ­UK›0¾çWp4ÒÂb0¯k¥®ªžzàÖôÀy¨Ia’mö×w6(Òîa{ø<3ßç™É·jõüRxeXfqæUOÆ*,¢ØË£,”qéU­÷[t¡/Å_O~ä¹`¹ƒ§ƒmVŠ,ëcoýÁßâgp98X!޵çâÆ›W?ˆ3‡ÔÇ=Àû ç–?Ô'·.„AÌû,lãÇ…ØdÛµðý M#ñCcœ7|uWÄtý.=EúSýô"/2,Ó”éï9‚Šb` ëó)¡™ªH }Æ@!º·i_0æ1o ÄšÏvÿ?K 3Ép»A?ðœÄ¢3Mj&×¹sír!cÒVMÂüõÓTÔÛŽuÉ@—Ê/— Îy< ÑG§ÎóKº(–*õ‚в`ô:–CçHZc‚uoë"IDkÉP °JöÄÒðçu”F6¹Q2°ÉÙ$ð‹–OfÓhÔ“R2yM?íõê§™¨Ñé¾,Eàœ¸n‘}Ÿ¤`{,ãцŠÍ°õÍuÅŽÑóþ‚í ¯«åˆUñJÕØ‘ŸEL’y„d\ùæ¡GÛ±tÍõÊÓºÊ7óÁHÔ`Ú†ÅäH¾ÝHeJ³>}ÄÜ?±#ŒÒR…!Æ]È:’ e¾»¡é&¨/\…^ñ·µ= MHÈ…ÏÞ";RеI–íQý]Šs?Õ>¦Ü eƒQTTˆ=qÆIeH4:3öz9õ•’§ÎöÅX)Ñp&hm&3OR´wÝH‰;8r%~Áò0;LLi¨åÜ0«Ç×ên²A±vc]'4å´­ÒMç`—~Vú7d¯/Œ¯gÓ6Ãì²ÜUˆô÷@»v )e™•a’ÁðRyÆRqÎ ¿­¾W«ÿOY° endstream endobj 56 0 obj << /Length1 2056 /Length2 16266 /Length3 0 /Length 17502 /Filter /FlateDecode >> stream xÚŒ·p¤k×.;éØ6'6'ÆÄMl;™‰mÛœXÛ¶9±üÙûÅžï;Õ9ÕUÝϵt¯ká~ªÉ‰•é…Œm â6ÖŽôÌ L<¹/ÌL&&V&&8rrsGKà¿Åpäj@{skž? DìŽ2QÇ;9k€´“%€™ÀÌÁÃÌÉÃÄ`abâþ¡=@ÔÀÙÜ Ƕ±:À‘‹ØØºÙ››š9~óŸG•5€™››“îow€ÐÞÜÈÀ gàh´ú8ÑÈÀ lcdttû!¨øÌmy]\\ ¬lìM¨é.æŽf€/@ ½3Ðða€¼ð_ÌàÈ*fæÿ’+Û˜8ºØKs# µÃ‡‡“µ1Ððq8@YJ ` ´þ—±ì¿ èÿ® €™ù¿áþíýW së¿ ŒŒl¬l ¬ÝÌ­M&æ–@€‚¸,ƒ£«#ÀÀÚø/CK›gsKÿ37ˆ ) >þ›žƒ‘½¹­£ƒƒ¹å_ÿ óQe1kc++ µ£Ü_ù‰šÛ>ÊîÆø¯Î~³¶q±öø701·66ù‹„±“-£ªµ¹PJôß&"¸d¦@G;'7+hº™1þ^ÅÍø·’ù/ñ/[[€É  —¹ ðãÎÃÁÀp´wzyü©øŸŽ™`lnä0šš[ÃýýC 4ùþh¾½¹+@›écö˜L}þûôõc¼Œm¬-Ýþ1ÿ»¿Œ"Ê2ê r´ÿbü_°°+Àƒž @ÏÂÎ`þkÈ8?¼þg˜ÿà?äÿ–*˜ÿ;¹?"JY›Ø¸ÿÅá£xÿááüï± ú÷ÊPþç ò6³ Pý3ú:LìLF_ÌÿÏ ð·ËÿßÜÿåÿ6úÿ;!q'KË¿ÕTëÿµ•¹¥Û¿ >FÙÉñc-äl>–Ãú›ªÿµÊr@cs'«ÿ­•r4øX!kSËÿ–ÑÜAÜÜh¬hîhdö¯úO>Â[š[mÌÿºlô û_º…3úöq¡8|ôêoðcŸþç‘bÖF6Æ- ;ÀÀÞÞÀ î£õˆàÁü±¡Æ@׿GÀÈ`mãøáø ç0±±‡û«£ìF¡¿D#N£ä?ˆÀ(õ_ÄÅ`Tü}X~ù±UþAFµÿ"nN£Á?ˆ Àhøâ0ý±èŒl,?Jñ Û_+«üÿª£ñÀü~¤eòü ™ÿÿ/hãdÿ‡ùCÓ?àÇqfÀÚ˜ÿ?hYü?x}û~$oùü`fõüXSFë?àGÖ6ÿ°ü°ýxmü¡þHÔöõ‡¯íÇÕmm 4qüGÊüoé¿ì¿â$m?ÖÊæ}¼¸íþ€,ÿ¨óK‡ü?X9X8üQæÿð±ÂŒŽföÀÒýMFG›?>b8ý?*ãüü`ëòG‹>¼]ÿ€áÝþ€•pÿþ©7r²ÿ`îø÷½ô±ÿÁ¿{€@W ÜÒ¼o Em`ÛCµž ýÞ8ÿ ùžz25½Ç’}»ÓtuUºÿ†ýPÂP÷§Õ1ª[Áe¢Wãæ:èï-qJ­Ïž/z1_¦öZá'1û'ò…~öÀâÓ«î{¾Úyªù}oý%MžmçÄ…¤˜‹öàÒ+áú³¯te4x~Oi¿ŠCþ¥tš>B5\ǯh–<Ç0c›Ê‘ž†õÂyöön5kâH:†Îë$‚µÀCk“%òqÎ}­\…Å¡‡ G ›üutŠÂCø0QkÁ£¸`µѵ™¯€( ‘.i•þÃ!KZ•ù—0ëÆžçÑ¥æÝì@ %^?Ún\MI#ºž=‰FU«^šc ë7 Áa‡‰ðZÛZ—‰Eþ2÷ôÏwÀ,¢¦Ù±oS—ÇsÝÚÐp?ý}pRËÃPãðN——zÑç¾Ïø¦.Ì4bfÚ¡«+§ªŠ€@š§bÖI:VÔNÍxݹaοy’ëlØûê´´ì³)°9k§éÝKµäVŸÿ¬zÁèß7 ÃeÚ (»’“~”ËÒd*röàØÀŽŸ×yè€ÙgÙ ¥’°âð߃Çg¨LkÊ0¬Ê`ÿ¢î¢Ã’–ñ0ø!¢%,‘ÙGHà¶B…*CÜâÀ4£–TÉ!¥HFfù|ôTÞD‡µ©Ý‰}<  {À…Á‘] `!77¬rÿ~/=Š“Bçdã-WÎÒ‹í¾î›’ý}–ƒ&µ•¦±¯±lêû×xñÆçÞ<™xL#j쑉û- Ó,Ç ŠÏ%;‘½7ÏÖP*Ç.íqûmdÙÆò:"MiùãË wó‚ê,®D‡\vIJÆÓ•;x6ÇÞ»ÌjŒáƒÂü‚57O§ÄL±]š96îd§“÷¾ä½¿¦†0\¶Ö·X¾Ú”öl*õ^?K™ ;æ[‰CañÔ3#Á,&Ô ºqÜûw.¯Ä‹±e­Ù•¯\(Jègª«2%ÜйcóRÆîR¾¶I½˜É?ÕÍ{ì* ’™Áeæ¬0 Íë ;)IäN~[õ 6ªÏW`çWX­’3-%CÒ<é§C÷æÄmÄ1šÜödX¶“+бäðª Q+ Ë2îó•bž±£•Šd åmÜgXòVzŒtÂS‘¶,j@Z‹CÅ’À„$ƒry|Y´‰EéêUÁ¢ÚÕS¿3zó‘ñ´‘ƒ×C›ŸIRGÙxÃiGtÛ•;|çð-Ë®Ñm¿7pÌ$‚T`>ÎaÌ¿$Šo`u#$MÙ1B–“[˜”èÓz]Ó·*oqŸ÷‚Eµ,},#é–¨B,ª G© ã{¨QGC¬*®˜ãÐåœû­AÅlÂ,ho/mWÌ`8l—…˜òu}€(ÄÖÓ×Pû‚5p}£”]…¨¢ø~ëý¦‹µ}[Æ °÷1‹{jŠs¼Œ ×§µôÀ…¹*ÝÏGë š`q°âJn(8O¹ã¨ŽaèUg¡÷k•1Ò”îD VEÉÑÚúóz¬•ŽÂúU(±bª©ñ.æ´ý˜ABD­T`PÈÜ4§kãâ*›' 8é 2Íâ×áß$ß|’PÉ1|NŽéPó‹´¤²4­ìÊX6œ®ˆX#n:,KœÑÙz}4`Sbƪõ”qoÛ©4bt¿æ:G¦Y#¹ÇtÁ@WääóÌãËfºã|D¹(µ‡-È- p–í““àä&“’5£ˆZ4ÅÛ²¶äpý. %®PÅ'»w¬8–¯)$„=ìç³>m™KqPÿ ¹·PG¹4¢¾<¹@Ñ™Ëä'xÃÁHe4‡5_šv‚5ÌÄíãèu’,˜Ëb…sc¸ÒÎvmÞ^sdrª(Í@°š`ÐfËS^d1t‰§58–äŸÉq±ÍðEGk×àûHRˆ ½wËxi9muò]\qP5·%àtרÅ*ÇVã0Pñ³ôV›%êï·.Ž|©…,ѦΘõW¹œ®hÏv–Hž®x/è|܇ê¦ÈálZ«6²]Á™’üQæqPÕ™Å]'Îf“6¦oV1õ®jn·õË(S$_Iݽ±“Šl¯º3‚cRîûŠì…¹CÈ0¬›4E*D˜ŸzKI@&¿ÉŸ “©ÍžáÍëü=gé'þD¿.ZÊ»¹U`üVÞý| [ñéeƒ¦-”¯¿0'a§-­Ü¡³›¯^" QDL?Hí(×l³}¨—C)n\¼ÀF±½w{ %À‡¬4ºdŠ•µí^‘{ûD+Âû;(¥þN!â‰ý²ú#||ÁÉ ÃÌí@|#‘ ”IBº.úZ › j‰¥;ü>Ù,‹ú9Z­ËZPÿ‰·á{Þ‰BaÚð˜z8ê×5ÆB}·Òp¥ØCñ:J Ýxâ4¥«æ*˜—‡ºò€;c½<9ý€ü`er•Ÿò-2œQU0´_RæO´í Ò^5oûÐN5í€^m5‹øa÷‹šßŸnàÆÅAUÅrO®ßÂ/fd:ç%Ã)kë@µ”Ç‘¥–6ÉóvßÓ;µ‹©9{):^²ÍÆ­3jpŽ4)gW ºTz.)5ì}f7R­õ¬À¥es0áa¨áj²G&Sá*êå †›g³Ðk7]à÷y7lÒYD™¶?O‘¹Ç›8¦Ì2ÏZ&(·<˜`Iu9SOCØRÚc´²•g—áU†zR÷¬,®„J&Vlj5ÏT±9E¨zýêë=è¹)†BWL$j&œüy$ž•‚™ÕÜ+žÉ‘!?4*«j:!|Nã^•úŠç« Å| ½žiA1CÕV –5+Õ¤ßó÷V¶s3`È)jJ”ÌMòrCDà…(™ÂÒÁ d÷]Û˜¢Â…{H€Ïè h•´øžûiÇÃÃßu5nŸ¡[`yr¾ª*gâ[Rå²e//Eb)ßÁrjõ0šÚdjWÜ=M¿q ñsˆ ²$E"ß;d[ìÐÙ„ Í/CÜ_gG­¦”µïÚ BˆØÍ­m‡çr†=Óˆ8Ïõ2ÑßpBîm>d‹ÑÄ‹u#1íx¤p`‡D¢$¥â€ÒDÎa z–HC]õÕë宾±I³·>BÞwvÜbl€X²ãF¡ÁG–6ê urTWQPö E¤+ú “Öš+ú¬ž–`Εú-”R–Ù¯>›5Ä{u/9·3ŠÝÃ'ñ¹PbUÉçü㶇ºð~‹fÇ ßÀõ3ÏÒvlž*¸œÜVÉì¯×®œàL¼Œìzhٻܼ‰_×¾Îe<á=tž ©ÒU€v8fSï›óH^ew(õ®PUêüŽÄÕ:Þì&¡0Ê7{é%x~l]öºd¥IjéG©ž:/v‚"NºïèboŽG¸‘ûÊ«l75°òcWjo~n³B—Ž}À¤Ÿa ¼'0ßY\ö3™xýÖô…á8íöÕ™ÒwÀŠ•rLy§[´utÉÒí…›33Aóv^ägEŸÕQ½nC•„»žDôCýsá3²#cø,üÛfÄèöÜ&[H s…õ½gQ/[(Ú}“RSn32‚§â>Я‚çrú‹ºÓÍ2w¼ìePù.Ç­»RövçBŬ&Bþš(æNå¾Ýk»=WíSç'Ó¨šöŸŽDoïx¢"– ¡¿€¯â„QŽéK£éЩ·[ Jó‡Z̶'¸µg‹œÞa”°¹ebqQzUdJ 4Èv]L‡â´·Á\ÃðìòÜ ¤¨ßÛ,>±Ë•JuÕ{yšv’Ÿ‹n£©NtG»´jFж¿–kñŒŸôNä÷¥3ÿºª·ôYvâ €ê;=‚ázB”Ÿa̯þ8¬Kí×]æÀ;cÌt›zÖ7¸ÈA-D Õ®ý¤?Ý1*–™×í‚Ûyb@ˆ‡ã¾o~%kˆ…êe1\}0$øœºçÕç㊼®Þ ²gýÝ!2™ÉšÉ©Êò³V‰ûuXÂ0j˜@Ó×)‘-½ìÅ`Þ3ø¹Œ¾@¿®˜¼[?1÷lí×Céçç‘Ö~]—šXŒùW¥á­byC“ Ú•¶ŽõÀL؈¥"UØ6÷©kÓߦc»‘ÑNuâÙS)|=hOnkM¥å“`O4m`ƒ¦wïlŸ5X¾vG³K¦Žå¦-\¥êvMÚÉmjÓ“UO¯½î bc'9N¨ûó¯S$­£3ÁZŠ+„8IŽã–Ò¸‰5É+IŸß~Ÿx}¦E[*Ô;)Jü4Èð{‹¸s²‡„FzE™©sY“° ÿòÜb‘€bzIèP¶lÿǯæVÔeTþÛDùœ=2çZe\M”ÒìJÙ¤w¶ñ¢³ƒÏi ”w'÷=>âXÆj²ót´˜åoù›ºŒM%vu=Cw fá}ÈåZ„åî¢%Ž‚¬÷@ÔÔ´¬C¹EA j>u3ý]¹¶ï ¹CïÞ[ÀÍS5Qé9Ϥ– d¯©"ûÐA¬~•A¡ÁCxìW°ä¼ØxE/^ÈP’™6™»Òñ•ìF$ñû'Ü×{ÝÙ8p\pxÞØNÏß_¢:½þˆ’N³ïJ}¯“É”J¬ƒ†¼®¤M‘D¬×DÊ£<¥†(§+äMŽÒ1ÐŒÃ9 ïgéöjë~Ý8®_«›¡Ú¨·Ï³ºê¿úZf<‚³Ût|Ò>È™çýD'OQL‰f^ªS#¯Ô%u%9;v3IÔùY…çTpQüë@þZY£k©†¯œºÕlS}ʯͤY\´Ñ,j…añ§ µ®2ä=aµ‹×+ü-ù&1ŒIЛª{xMøˆ/Àz÷îÙ» Ö¶i¸†EÇÓ·7Í-vý(,qo½4×®ˆpÕLÏ0JØúï‚ȪóŸ8¤àuˆRVï^x†ÔôžÁ†æ ¹i¤˜¼0gêuH<1`ÎYU—Ýû/‡œvÅÓMÀG—òƒn7Ї©Å¢p!û¿¨¤?¹PW^˜¢…Ž`ØÍòl[4W­bü0ƒ¶€/Hos°A¤oŒ…“—àŒÚ!©ðTšü¶_ú´кrwð ò÷Êë•«SF -àñ5)³j+êb=š¿P†géålj™×þiܸ÷"®³ú“°ÿ ÓèdÛ÷åÙjıÂyª?MèÀþ-£²sªò gTÚ¹›N†Èöª.h"Am=::.ù%M)°N{uOµKƒÂyå³íùf ì©|몰2;wðC@×OЈÒL’žùÞôŸ¦‡*Gmk»º†%ê}0P+Tµ4d€p¨ò‡CjŒÐð¸ ]tybûŠM÷¾‚` ,û$^!c)<}Æ~^pôPwË+äÑ×Ðt6\š1?zœ…5õå=۱J¡R Ê€^ÌÞÕ'¬Ÿ“Ó£bç,‹“’Šœ]XU„§š»êCôµâC¨br1 _S…C¶³ÈPA¾^²ó)5ïo{énîžTûä .xÚºL€˜?™ÿ&²á¶Sõ°vñâPþzͯ¨·sŠéR¯hSR±U*ÿ¢]z¯`“ÿª®ÀQÊ`Ü¿U+H|°t(¤‹[‰u _¹*ÒÈKî¸::Ôʹ¯LÛ¤Þ…¨Ý„–@x«™ ©‰ÊËX8 )‰¯;kÔ8heïæwΫ îŒÔ¯%Q±Õž}0^®Ðyôbô¢fqS ®tÔ„çŸFR£\ée%¼Ñµš}ºŽŸR´Ïçy}TÄ[JlZC}"Ø1ö.Î0z¥ôÓî/e/Í“<änHé#u³q®æªrлӻª¥9­W§:²3U‚ñ©áJHžºYe¬ƒÌæ QŒƒpÊUÞØºGƹN+ Æ''ÌÛÏøÛ²wýžqš¾{´Þ¡{$Ëàð²Õå´Å#U¹Òð/yg¤sÕ©ÆW˜‰ý^CkªÜ`²œ ¤îÍá•fÍäÔcúÂ¥a\;´amxÓÅ>ƒ¥Ö}<Í£TŒPÃÎSŸž?û*½PxŸÊ‹ H¶Ñq…»Ó…ýy¸•QxK‰§ñõ¶]ç&óp ¤¤ÍÇH!Ôáë5f¡?3Á® FÊPÑÜsù×­óŽyQ ÚDzwƒÏV}¬Ù™'iFçÞÐÇÕåÏéXp B ?\‘¾?•¾8i܆ BJµ\< óxb”×áßœ³Oa0?S¢]M 8¼¥\>o’¨D¢w¢è»Õ[ùj­ð€¯,EÔ•IN|š‹&!ëÁ¤{û°KEÝ]^ÿéz± ·î+Oãc`ó°&æú×^Ä›õs#vA]û)E;ÒW“)ŒáÕŸâU¿Æ8Ì´}éªç«¬‘¦|eâE»wé“~U=ð¡U îÚØ©àDxt÷_B~Çnb@¢´¥}`…Êî)ÎH.ÀÚäÀ,ÁmÌ-*ŽÁvŽE—;”“j‘´QŒ³³µ´»õÁ†²žc—šÈô¸Ý5 #§¢df„uä< ÌZÒ·èÔ×Ýõ*¢•ì…JD N0鬬â*ɉKXÜ„ð;å;ªá)# ¶õ„.ë¥nHÏ2`¦F+?)X­h²“›ÏëÙƒµ~Lµ„Ù‚¶›g‹îÍ5F‰…íâsüþ€•=sm}†/ ¿]ñY¬Ò¶R?·ü+æ7ðÂJ…š†’ºé©ü±|Æ~ t´Ê0}¤¬Nï²¼ ®:ªÜ»Vu?©ü)31!øgńҷ¬û8rYê†`2¶ù‘¯¾w™ Ÿš½q9 ‡z¥D-]. “–DÉ1A B¬9o†$ƒ]À‹Ü%-†L²f0>\z_jC *Wð, m1û=WÁ¯²/ó10ÃÓJ&ñö_ñÝ\K§Ÿ>¨ÍqN ¥ñ¾±ò|k£b™g*Jø¢xõõÂÄwíFÄ'õ­Å÷ —>O ÷4DþÈ@—<µf¶nïy Ò®beµ}-ÿÐ=5ªÌµ¼úS—a<5ÊORøqºZD ?ëIÁ!µðîóÝBèžciK¨Š¯\ßÝøJØ.,(•HÆ2¨KP/ŽÂ•¼ðÚ}¶ž¶@rzmNø‰-f» MP„½î¬üK סWZ÷^¹ï‘r%ÚÞ^œDÒ9’-¹"¶U_!ÔüŠUU‘2æÔh¬ýÔ&€TK K ”o†=Z3L#µãi#oj£bS….Ê’þÓßÂò­Ù툻=K/·ò€òó(gŒ¡fѧgTç[LAôJ”(èÆÞ!VAAx§È©óv‡o‡v¿&£¡\j«6Av=µVÒÇåK^ãȹ/u‰&o«R«1–ŠKfi y` >ó4U÷¼(FÙÚ–%º„nð¿_z>¹/kw|‘ÏV$¬ì›Îào@ˆ‹ÑoÞ²Sß@­„©Ñ|Ú)o6fFUbÚ9ο|½5§Ïô’´gí¥fîeúÜ.‘¦PôEjÐI‚ù»OŒ‡\ãÓ5å­Ì@¥7½ %–9…ä¥uŠc믞Î(ûfK²Ú#£DŒ¬Ülj}{÷ì]ãµ×w™Û†¾³Û…s¹iB°ã¤'ðœßÝ„{óÅ¡­×Áé÷êç`0r‰¹¢†oRV¯ÑBx¸Á—sñ©TH?6*§"Zíl"†‹©«zÛÇ­÷³NŸRauK‰ÞTÖÙÓ2 ¢#[®Y“©RG!$W/BL-ïªB¶¡Ñ¸eh›š“?¹¢ÆÕõ„A—=Me…¢º¬µNs¶›TÒ‹ãùl7 *ÕßÕäBãwâ Õíâúþ˜6îjÌ 5^ûDM´eÃÞåE²X[6ÙTÌs¨9z29öäøÊ§,#åx»ÖšÈþ©„¸~Ô¯ØÅÃâÜØ›ãÝ^…u„éqLd-îטeËŠD ÷V¾Ì)¯@çò«±k(P¸À+:ѱœ'6Ã_gôcjÍâmeßá¿@íiÔïëAëÁÚ˜¡/w£nLcݧ \³$A‰“c¦åßó{û&V›ƒ7ó5Û˜¾:ŠžŸó7òFè-”jÒ,E,©[zÙšq8lJQbï“^V{ý`‡wx›2J1ÅîÊÀК• +ë _éÔ`BÞ1‚Ô,¯A1 [)IÊeõ™§¨:N¹± dæq]ù?RfF7µ"°Ûˆ®ü"Uå |n2SKN¿¦™pÁ˜Ÿž$(WR…UM1ݱ,)ßñáä(QòWog#¹SCô 4ó_šb9€^zÝö¿a¦œÙ؈,ªÌ¼&6+{»¡  èH×Ü[Î+2ßX‡72 0ó*8m±›R°³·?ˆ­GwÙ-Úc…½†ÒÚk2c°2bÒ3ùÚeo‚‘œy~«1÷Ý Ÿ‚ÒÕÁy¥jð C¥È-ò}ðemÿ‹Zgý¢Øí[Àí­ó&3ìh$(žßdAX¡÷û†w¾’[+ü:‚%Û|Ç]nl+c‘¨S“€“gS[~˜w=©¨mø<Ç|BߥÙr“¦z £ìœáƒù…õ÷£êiwcµDÞðÛt܇’8ôRè#¦oŠYÕýÔR'hátŸlaìG½ÍU°–<~[j¨¥‚oßÙ•Œg$ƒ½œw†ÓäüÄ®z3>"óÆÆ&lz‚!‚:Ô‚2ì­vÃ|uA½Õ‰W|5ݽ^¿Ï{2>“AÚ°» ‹{± "á‘6é¿›'ߣ¬o›þ¼Ï§LÇ˜Æ ²Û~-þH ³íê,µˆçn¬ ÿ»ÜxØ3WñÃ9ÎÉ1šÿ,ß¹SˆŽý.í‹nR&Í]KÏÈ‘ÎÓìü{ôX‹¦£üàÙ:žd1zÉ@) ±h<ÞW}^ûr7t°ö‡3ð)ÎÁkƒý<¡ $óe cu™#Àb³GÅ"Y”Nâv¹>-hhOþ@«Å¸n"@V÷æÈ 0âÇ8ër¶õf¿§¦RHã¿W,—i°_¸ÂØrÅRý…- uAçe ÎÃnêÄÏñë;*š ³j+VÓ ‹3[<¶Œˆ;Û©í4 Wö‡žÏŠ-ˆÐò*x[á]OôŠ[ÓX?ùx¾.ûb¶ï-’%d‹™!ûÇIKTÃWAòãö¦DT7AÆfÖ+íÒ I¯úbãwKž§œÐ~K hÕ¹h1ÈÃ]訂öl&çJè]¹¶Æ,1vP¢Ù‡ÁÄ9 ¥'o´\EK¹;^¡Š‚»Zi†>\ŠX¥™àRä.jÀÈhm0Çr#9çFu¯”}“á°TB*C±˜ bd´²w¶b8r¯M÷I:*Œ ±àý+.Ö^ÛZâ¡BðÊPA ,@[ %×9°âµ=i 廿n£fz¦}²ß¾%r`n›b¤»ã7Rú¸9^¾ßÐÉíÜÊju³I衦C¨ ?,ÞÓ3IË’ð ”ÐsL“=Ò§ oöCw¬ø·$ŸÉîiw¾w{KwkîtLœŠïsûµgÙR@¤›4\|‘d‡âJª`¤#üõMp<;Y2²öìçÒ¾«NJÂÉ1®± %bf7ùCNÄà…a¶RUƒº¼hNÇúp3ejÂ[¯á[qä_ÎÀþžMÖZFb¯WË\”®¯LjwÛ…+?ì,±8§žÇ¦IáW#‘5jF,™¦‡â-X€ÓAc(tT=ÐzÆŠ¨á.ë)‡ËÿÌ×´n²ú«*8e…|§;Gû[O&± ‹1¢>£ˆí« áâÙ¤éfž¾|P¨L¡ªd øá²ˆÜ’¬Ø€6^€Ö"j7Ÿ¸~ UÔ÷‚ÓkZm¨.h»“=©Ðúì~%ö8­ºæ†å‘ã~ mÓVÃjmÅ_ýê‹¶g‰ïŽdÿõádCï"‡Mà:o±ýþÄ”Ìï€'T/ûÖ: n´j‚Îæ|Új±Î"Ó§ëì8?©EœŽú}}­—ç¸ ÞâÞ0÷ßÁC÷ynØÔÐô ¾=$©ui#Ÿ(ÿÆ[«ð#1Л>+p›ôËw¸¢–¾tÓè.13Dè´ds“K¤vT+Û{ÙÜŸâ_´}ö“ØÀDÓšÊq¤€áÙücÖ´ŒãÛ^Œn$‰‹ Ûœ‰Dd¸ð¬·¸öE¯&ç2'‘6gGh{îÌ0×óæÁxjä}i³#.ÿÒô£3X¨Ì4ÄßÿË‚¢ùh+‹l“6¸A&,÷è…Ú¼À¹ŸœJô)ßuÌŒÊÉꃽàXñ®¸YÃ4–ƒ&6 G—ޣ§ô/WlïÛ— ›xå“7ŸÎ9D]fÔ©éËõ'¤M²Vº˜Z¤w}õ´Š ñ Ä5;)keL·¶@eòÕ~Æiã]K†uxR«ÜæÚqÌ#rùÂnTù÷tø¡ ÂúÖˆÇt¢ÒÖm†¯ù.®ã×Úe1þÌ¥¸³ä'å†Q Vv¯–Yß&%¾xgȾæáÚýÂM *Z%TBóg0ó0[ÒƒQRv8¹"¸–RB9µÃ%-rv—e)Îs3àšô&o2Dë*1Lêï2Y9+ †[ü>˜»_wâhðöc/¥¶µº*Û®9x, ¤›¹s¬Ð¨”ªE«„T¸FN¯‚VØš²ü¢„˜¶o²ŸÚÚ)dh¬ ük©.M—¶!vh¸³¨­îH½{Ùƒ ¿A´tªUÇÿð4¿ž =†è` ¹%I¼RO-ªÝåæOùú†{ðU1y7“€u Þ¿»FK¬(Ù ùS2ÔLÅ9@šT~ÝQ"QB”?]­kÄ Xˆ"¨ãÜà"ÒoÛ†öÛѾ5Ý4¾ÕÕ: Ó7µÖ_ÖÅ?€qPÈ’Ù]Ñ~£kXz…îüÆkÓ`}e׺ëzüsL€SÊ*6¯wc°ÉðèÍÞCÖ‹PÕù¹2†X“‚GÙ϶£-Áö™´Yi4žá¥d6ô$¨LTÚéû¾¢¼s/{Nõh6âB¦]e°!s¯ù:‹9w]òÿÌž1"žP±›áÅwRå®D??Ú6`íþ©›ò3f¹ªè7ñædjlé*)ßr0°ÉRF¤[w¬V´x©öN: Ìb“íEc NŽoq¯üpçy Ñrž_{Pß~?tl{ê9´'™ç.…§UO£µÓ·VÖpöC_Õû¿Ö;71Ê1~U./ Wñ”‹}„féá‚ûÖø8…Ì}-s’œÈ§ ¾ø|c‘F%§p봖Д`•Û~}ã,‘~ÀsŠ•¢,Uõ¤®™MiQ}7}q"aMi¼×JXr$ú¡a] W_Ìï~¼~Kä}øO¾Ž,°]7±È9ø[}Þ±Üô~QþìΰÜ*u#‘‡AÓŠQB‰Hcr¹½-ð¼!UœÌý{ç"wWÏœ¡ó×u×°ywœ[|X¦ëÓ:Ãëxmš ÍUÆ«¡>:Í“2RÁYbª Mâ›G@¡«éMðåøsæÙ'dƒ~|?ŠÒ€‹utX¡®+æMûåc[T`5WÙ°Ž’ZOÜ€`­–;^Ùršó:)µzíz:1t#îI'ÏHá×äi¸Ã¤$™S¦%b×—ž¾ l‰äý|¢“WÐã‚XhÌÍ 2ª•ìß’yìàê:¢œ³1ÝCHÔún®ª€ÔÔIôg.£-‚jœ­8¿´4žÏcca€ß«Ï–ÙcÔi¿ž"íè›­Ë “I˜×vå³}ö$oPøŠå¤é&8ÐhLI¦1»ë2ýDèõ[e5¾^fÉíªQf}ã—5Ú6—ÿ™3_òy0o Ì—XþvÏ*ð‰Aj¯”JžÚXï™)|Ø9{q ÷D‡ZF¸ËI­4tô‹YømD¦ƒ$º@»¼G+Ö¯ÞIË=m^+=„|L£×íµ:¯°ÜÄ€xË´ÞdPñ?<ò‡ágÑB‰}úá;%Z`DG¡)GÞdÁ0ž„I¼¯F¡ìÂLyØNß¶³4ÂÛÞ²%pƒ"ÍmÐVBYFdždlH½FD£þ½w >úÒƒ„ñ ’}z)ƒIppS¹çò¬ Y=yP k™vxk„gð‚÷u7¥€Œ5oð™í‘‚É]î|•ë÷iÓÌF¾ºŸt°]D×34¢AW‹è¸€ž#{ (@Šž.xt8[þçËcMÁÎÇÿ׌}$æˆk3HœÆu¶º PøŠ|­JL;OƹAHò .Ct³l|n ¤‹h!tƒå¼6irŽí)F,úgÐõðáÙ{Ù“†^Uo52eÎÊ ¥¤¹Y¸0rÞP¯æ½½¸õ/&6ÕT‘ˆ•lŸ—ˆE¼Æa-p}`4žùýGs|a¨wà§Àì{a ë ‡l6J¢’{9î#õ/ÌÝVyJÞê+9ù%ˆÃöµ¯»iæs-¦ðEÖ3 ‡cìûÂRý¾Õ&Z6ZãxĺâÔGa€K›¬:Ô^¬ìº8vO·XI#vö)ª]šRy»ju{m©Ñ-žGQ¤.ÍZªÃMÁ€È81ûõI-£Òš—cŒT¡·q½™"ôE%+ÞÓÃfW’ïæÕÇhÞV7*)¾Ãy£¬ ™5†bí9Y£œ³Þç¬ìï7$T³’æ(yd»\ûÒÁ>¹»MÒQŠ,F{ƒÓýs³ Xq>þõîÐô—Ëô½°³6[i;ó…8&/ÑR}ƒs'ÕB ÿ·…´¾)qÆÆ“¼ÌjÓÁTÛÈìhqŸ˜_Oˆ ½\XÏöרƱ};þC”uÙx‘w|4¨ßfb*ú¼Œ¾¦õ—uÕÔh|šÎR¿ÿ­u“%z½mCKè÷@½XK×k#¹¥­o¦SFÅÄÎD0¦AwÉí:…ûˆq6jd;õmÚ€Á«Hy#þqZ3±D݊ò»kq±eD›6¬ÿ³È^`ŠXÔó[hÐîoDÛZž˜­ÃjúOTAÃQ ãƒH°BF.¡–gþ%ÓÕB=L·ÉÎîzT°F0ž÷ß$.b)¶xÌ“â,x­­_öî… AU1—sòéá°ÅÂeö.<7è¸Á±lRYÏuÖo§¥g‘8l v­ÃÜFG–ng÷ ßZªQÃ<àGðdMêáŒùƒ¿H(%t¢Ãe¸Oèi‚Ôu(üQŒX6ÊÊø@;ä_îG 'r«B˜ý íÃ&;Kxñ M`jŒ&ƒWô™ Ö¯P5:7ð;n¨E¶†ìèÆFNŒ5ªpѤ¢;a=zT^`©ô=ÁOåá«_!)¥äè–é¾ÚBn†uÄ~W¹$AþíÊë ãæH+š¸ó6ñå e]`^°’Oá‚Û ˆÄÆ5¥@rA¯¿’í$·¤½YŠ|÷cL[sR­Fž¥úv‰ð–&Ý\ÂYSF¡N;§çÍ‘B»Ä¨~CkµÔ1|…ÓU²œ]ˆÖ©6–?Ôt@z RãÑÕ\ºH#µ!'ÇZa–ã4aM-ÝNtb¥Œø{( íùШª·©Âõg¤0†bÖoÂÍ„c”‰x2û í5am›@Ë.‹Zý¯¥[òߨŸÜîBäÈx³–VÌ)…ý4jò‚ß‹ì°GIzüµ îÂ¼Ó ÆkÜ|¼Kn%¸n ̽—W`óÍ“Ãö[ý6Ý­F”ß~‡¹Ö±~‘' (¼gÍ 7‰´ÔíÇ·Aâ,çɃÜënžgæØÆKPÓ+y@–uæÔ#È­ü±ÏöcûŒVö<›n˜’àg ä0šÉåFºB„Èhú‚@…lè²³¤Xºåoð‚Ôz¤¢ çâ›GAÛ2˜ã>ãi¤´Ÿ>z¦ †ŠnK¸Hò¢ìF}H"ÉìòçN´8„ ’¾©tîêðsep‰%t¥ 8ê§ù·™qN¸•)×ÒW?ÉÛzð,v°çÔaSOgC3=dˆW§ 5a$.¡‘†¾DÁ›¾Y¸gSSâ)Ê&M#`0Ds oòÇô‚ÚÓÅ£¸PÏàårϨÏ<“<±6w-uÚ ?8ãjþ,…Tï砡õi­ÿŠ[ˆÐbmsXïí”gþzÁå/±ÂR#7ÚÃïZæß[Ç’©óNq9ެŠyYqñ­ë»ëY0Û>U(¶edÝ}:ÃΖ˴3±ó"£¾[Ùì}Cü·sF`€YIîÈÀ9ÄKæÜÄÈ`Ϊô°{š5Gi »ÁBS»yvYíú"ÕBÆx`àš^C”«®à7“<=‚H6‹VQI-èpÊ¥O‘Z) ón¤b>é„Ì‚y¢û‚‚GÕÀx¬lÇ/:£ƒ¼Å6èZz"tGøvå}ãÇ$ ~L#¥Ì>b½ùUÓÕë F êáð%yŸñQóbRÚo>S°d‰‘ÿ¬O9+œ Xd=1)•D]h…Ê[aωN*ó &PÒ3‰ÊȱРk+¯ øÎ ½k¸“W M;ç_u£œãeì¿ô;auôŽ:"§ô!ø\«ù>m­Ég6Ù­ Ÿù ´‚gÿ÷Iñ&¼WiY ÿ6ÝÏa¯ìúyU8<¥úå[NÂrÍÐaA1-ÐØ~WŸ!ÆWá–>•i5¶d…µíåþúã.˜z4]æIÁ Nz×b _$ OüÖcTÊ k/V!«§Fæã¯g— Eu “ÞÃé›XÄïÖÞÝH ½ûÃVo DSÑåž©S¶«'±À˜¤)â;Ý(ýPZ}JV‘¢'¬¦G-ðhš5h ¾9ED± ihZ)Âòj@:®.Ñ|;x ÜÚÁÄqx[”ê®HIˆEüìý´Z qr)~/V®à©64¸Pé$–gÔ»c„”Ù|Ú|l"ªØCÿï9åŽc¯æ|%P…Ï™zkØ·ò|TvŸ7uŠHõú‚øñ£¶×ñ8Û*#^[ ‚7SÔ­(³Y7Z–<&²ý$¯pÇÑÄ… $d®¤d€Ûe6'µ¦Ê3#™£[´oé$Ö€µ±fçeš’ór‘¹–L´º|ÀŸÄIužÀñD=HUƸÈdy” nÈïÅô¿S6ªqÿ!½·ú{)Æ.‘£w¥_Î/E3Û¢ÜàÂ<1X¼J­„ó¾Ö+)e” ~ž¥å$-äB_ˆÎ|bìîà­ö·µäâá·ó5,…!D·Wëä´ÑšÄÛ›‘ç;Ž.nIùðY€m»QÜBwøýÔTº}{rRà³8¤×c:/E1EŽS9â 5‹¼[ð‹TGP[ºŽü\ø9g „32ÍöøÅqyá裷K=él×àî@§: úÜ Ñ±“÷ Vñ^<¹_žhªÒî¬ÖqûCRUKËmt'a‹¢H¸ kÀ KQà¾wóìÏ ÓíšöâÄAä¹Ö4ú'Iî,çW‡Vï5ã÷tà§> stream xÚ¶PØ.ŒÜÝwînÁ=d`d€ÁÝ58‚»w n !‚û ! á‘ݽ»{ïÿW½WSÅÌ×ýõ×§OwŸ‚•Q×€WìjQq…yò ð%ŠZú‚ ð1(ˆÍÊjõt†üeÆf5†À= ®0‰áçƒM äùÀÓr…4¼œ"¢@ @ÿÑ.PyCÁ->€†+ âͪèêæ‡Ú;x>¤ùÏO‡-'@@\\”çp€¼ µÁZ OˆËCF[3ÀÀÕ ñôû/ )OO7 ~~>‹Ÿ+Ü^†“àõtèC< poð»`€6Èòge|جC¨ÇŸvW;Ox08Cm!0‡/<$¨ktÜ °?ÉšxÝ @€Oào¹¿¢ Aaƒlm]]Ü@0?(Ì`u†tT4ù<}=y ø7äìáúòAA6„?N¨Èë@þUž‡-êæéÁçuþ]"ÿo™‡[V†]]\ 0OìßçS‚Â!¶×îÇÿgg`®>°€¿€¶û]ØËßu÷‚¨+ýEy0aÿc³‡x„@ ¨¸â€øÚ:ðÿ–7ôsƒüáøm~¨ (ÀÍÕ `÷P$jyøÂðyCžp/HPÀ¿ÿ°`¨­'Àb…aÿ£þ`†Øý‰š‡ú̳'þþüýËâa¼À®0g¿èô—_]ÞÄLÅ”ûÏŠÿö)(¸úx x…âbbQa è¿Uþ®ÿ?µÿaÕAÿ:ðAu˜+@üÏîî?exÿ5m 'à¿3h»>Œ2ÀñÏä? mþü?Ïÿ!ÿcÿ[åÿ6ùÿ{ /gç?Üøÿ?n ÔÙï/ÂÃ${y>l…–ëÃnÀþ—jùs“µ `¨—ËÿzÕ=AÛ!³wþû¡*P_Xêiëðçý§ òÎPD×Õúû­ð ÿã{Ø7[§‡÷Äã¡W¸ ëôß)•a¶®àß{'(,Áá ?làÃx  ñýc²ü|0WχÀCyA;W8öˆø•~›þ@¢¢~­¿‘Øc¿ÁßHüióðÛþ„„ÐÆ‚þ¶>H¡8Äãaýÿ¶>Ì5?äø€ììþ†Â‚ÐÕ þ/úCNçÁ‡¤.ÿŠøaÿ‚j®ÿéûðÿËýpÆI ˆø=ÿIý åéó¯è‡ÄþøŸ†ÿºp[/8üá!úc%ºñüÇ«øBl±ç]m%#›#{¯åi|xï¥gY&/9yá}^7ø˜œ yáëðKùŒÉ!•meŽ ¹%†»€£®V̘ît½žŸ·V©ú3ˆì…äcÓeGò-£tX´¼†r»wîÆaN¨]Èý¬Eî^bøº%$W>#ª¾-£5ËSÑó½Ý‘'8·5yž…UαÛä¢dÂðä¥{ÄE|âK0wq9K\8}Ï ‘Êô%ñqy€Ù†`Òõ'ÿÕW†‚T,Tf”t¨ÄS3l û™ŸªÊ×áSYŸÈûÞmº¼pÞçðGhë_Á¾[²±NKpPQò£’ª?OXïVKs©dLÃÊ?YÑX÷Uÿ.ÚeãÁ£“½×qmÖÇG Þ¶øïcr5›rÅè;e´0À†…cè [ØðcKöã·‰kÏÆmW߬’¶uŠã[+Óuõ…nÙç5û„¬2N®øN¨ÏjøŒõ>Øær&=9·Íuëß}çv¡²DÎ`mk —ÞoìÎ(TÂá¦yNÞ’Oçu)ÞEƒNÈœ‘—SÔõ¸MgÜÊ¢q„Ù۰ß3êƒ};z¸MZcTs/ßPW$–GT†¥†™œtݳù΋\õæ„Òq̦FlÒ/Žè’3“º¡³w¯Ï¾Y”ò¥øjì pµ_˜è¤h~›-N¦±o&ý%Qù¤› =ð« vxä}Àp`)&´f^™gªà§{/ …LŸ#Ð2Ë÷(³Yoô»éðÁqÈAT\/” wR’ÊÏlR÷³m»…\æ¾iaÅm^ ÌÀ¸9(y\¢b`­t:Œ| ‘rÁø$èsx8Ýù3ÖX°ÇÀeÊrÙ1¬_¦|ºœá(Q>Wë—CïÁ%‚9åûïCŽ—âGKu.e†×¶5 Zä 9 Þ¿¬1ÁÂèyEšCg7,}‡î÷-‘Rø‚ÌíÅI§~¡ÑÎï$lãÀÞî*’”pöLÞÜêf1’ŒOõ{y_®©R–MÆ{}TJµP$ÚZIýAc¤c£Ð/²ŒÎ‰Z‹¯fíItö—ùH£ GDÓ)oÚ}¦ÓC8e»PË­eÛŠZn9åT_hH¾²ÅÃÖxÁu†·˜¨J;PQ¶±˜›67LkTvoû®~½d²Êy.d3]ä£CŽº9–àâzÛ‡Âz³ o£óœ-ç^Ý@VNãñN|—“îϵùtÄÄÒl½ ì½WäçIÃ/#­èJ§šÓ²Ñý’B©ôÃKEFZ Þd)d%‹:ªÿ Æ £ˆ x)˜E}×"»­dŽ)'*„#wDv(Ä‘FÛË'üðŽÁºà£»Û«ÛܾÞïLƒ¢›eŸO©Î?&R¢“È ·lOn+ž-Lábë:u[€où&Þn CPé‹’-räN ¬¦’ ŠÎ––SAKí¼îârÝ3ëû5,¹¦ž_˜Eñ>Zñðt[Rñu]2Ž)'±ÌÉŒÑq5þôÒ¡,ý%5Êá×u³¡ó£6²Ï<*´ï¸V""QI^Ńnqø”Ú¸ÌÙêÐIRh£,!Ÿ~¸°¢ÈöM;5n>:€{E5>•Ó‚Åwx½7±f•¥&У;÷Q}lOúK²\ŽÑ¹âüÆëu—ànºÑæÙ…×€ÈÖKÅùç¬Ô£O /ØõÏÆ©?"ºÎ ÐiÕÀ‚4%s#¤Kèüj㟲þ!±7[8›„ C"›êLj­ÕÀÆTÀ}>5ÁRûô©Q K>5ÄH®®÷‚êLjM#ë§w Ô±æœê⎜g¢»it‚Ìæd²›:Ek#½é¹wÆ›]Ñ VqdçZù†'Kõ¡È "åD23-Ò ¹sn6šœSÏ­DÈÎØ3©Ž><^±vâ2Äm稯¶(&Ö_à5äP®û"¯ÁøØCÂ%_r¸R:…‹nö«fBÙ£U{&Á¥ÕöCÍ)ßòµ nÌPìì÷<½þ¶.šÌqßzÄÑT—?ì%~l´“bU£» ïbÆ]„ˆ{œ+&×K7n¾K{Gg³"8½ƒ'Mò{Ùǂ型§‹~l4*ÙŒ>R—î ßð{Tø´fñ(«7%sä°›´zYï’§Úï¹5²Æ¶HFEØŠX¾äþL‘Âñ#>dv#ø1݈ £Ž8wlä3ÜÉÀAºˆ¡Üg«%ŠCÌú7櫺ƊLÍ1YRÔ]‡ê–‘øÆš1Z޼öQ}¶kúøu²êrŸ—($DÃoS¯}ÿ…:ûõÉòÐcDÑé÷ƒ¦°Z‡i ùñ윖^ËJbqïÂÙ?.LvuÏÎÙz °6ó·¬ðÒš³4» }ߢaƨ[0cŸ>ò‹ÜØœ6®Ó"Œ°þñÝ" ƒúQ%0‰ÓÂ0uš Kãñéxt¥g¦Pƒ0$uMM;>¢V§^ΣÓ)¾QNµ9Mä\Ò‹y­­sH¹Äì BÂz£cXðÈÁÛÃÑÁ¨ÑÖaöÚÏt«¯ŠÑ¢ÁÿóŠÜg¾öÐêk2\áã8¤iÞät%ÍVa+ø¢â ÎÝ>¼²Ÿ¾WN¸oÿ®A—5ý¹/àø°?sÀ·hNþÎöhôå›îéâ’Û§àUŽH.‰‚+×D°ulI‰¼Ö®MdB4/¬,5æ Á-Í‚¹­)&ÁÏ‘ ^ Z\¸„‰ô¦M$~*æ%žTwqs5üp•ç[°àöV:¶5¤¡G¼á?¬þš­b¬NQÕî7Õv“ËÂ0ò°°‘´OE¦OäÕ”ØKøÁOöj©~Ê´ùˆ@bûƒ€ïõø‹ï;֩ƧlÊÊ(…a²í¶„”øóW¤¸ŠËYãÙ¢¢Í¼Öã‹,h uZÞ똇t‡ä-Ql# ïqëELGì™aàéót¢È0G$x1)ËuΕáG¥UÔ—®‚øÛR«=5X(±M´ãxƒ(ô1¾Z)êý–Ø}çuæ,`%ÃC³yÂkÜÃŽ#áéÐ@¾=eq”nQLÿ”Íùœ‰VƶAû”²ù[R‘*Âåw6˜¶ð— ]ß—SM¨ðCä™Öa¦%S§mÈ=BQ°Ô°'tƒ:мäÚòÕ›ÒâöÂÒÇ&–¾ï¦8Ð}ÃZGî— ”Cè—<Å(ƒ´ ÏçÕ“”ÞD¾H{×_›SÎÐÏ–B9‰²†Êd„Ü®BÚ?:º¨lH"8ᢕª‚?‘ÇFéí¶ÒÆ÷Ñ{â òØLÈŒiæ‘ê1–­îñjð7F*Ûø³²Ml±Ãðé Â…~©b-4ü¸ÝóÆÝÛ •ç‹•]ÃßÃÂó ¹,U‚¨˜equiv“:Cy1n¿gR» ;ž¼ÈK{¤âMk<`ˆ{r²ÀGˆùŒýiÉåXÒ¹Yx|!I"]\ì|à.±8f^ß(þš\”`³=T¯7ÖÁ ÐŽÓ#Fó›Ç£ôÑR𧇇êè{A*)neª#Ó8åþH7 ŽºoxMöÂ^ë/Õ{‰¶ºã}é¹rtqÆŽŽÏy\ȸrB%O‹<¢N„bZ{ˆ16 ³P·Ø¢U]eß꼑 Z®"è$ºËDÆOP?zƒ?•yÇ`ßýÙÙèÖÕ»ü.¾›¨…IÕ_z„¥Ê ÙKªƒLCD_5ëòMëÊTŒ·ËÚN ëÅõpOaËGR‹WÒºŠA‘·+V‚+ãsNw¤$lGc(8’&UÑÏièåê™W }@=»AþîÔK¬øŸ Tëßr Œ[‚Ié*$çS`d¡%.TSb~p;eäL-j±Ë?¯\Ö—Q¤í^ײ º±ˆk*xurø¼œe|RÕà"ø6÷Ú Hº¯è;æÚ_ÕN}"§-÷2áˆô廆‘ÕëÁµÆ²!è<¼Xt=š•¶„Ä7~æP¹èóc±·Ç‘¡M1%ÂNÁŸ$~õå+ù¸1ÕJ:ž6Ê£ÝÔa½·6ÐÖþ ¿‰ï£öÅbSª¤6xÍKù€C Z[´àM°Î¯NAc/¹ŸÔ²£XHû©ò˜+=1ÂÀG æ¤Ô<Ƽ9:÷»ØÙ•E„VåÉ?–U¾LâÓ',TÀG^GG„e¡ÛNê|¯âî2¢ci…ÏH/ÆÄ¥ÔÓÀRîZ÷„­§2Jy66ùçN,á’²ÔâoNdôò´?«šA1#^­ÿÈKµÏŠv“ˆžµ"˜ÈΩ½“áxÛêeÒ7[î˜k8Õºm¬®µÝ`ǵ^)2D†9e»W¿d)••§/üΛקž ¡E°{}–)n\R ‘Ý) ×P°‹*¢Ê?¢Ó¯@Á„ì¨1· 9àpD!ÑØ÷b‹½æOú|Õ÷ŽTîŠ#èK.åmÜ.¹a†!ŽVV^¤n]S¸õ7·¹Øbkÿ„€_ì¹y±¾¸qßȸsÒ°ßRH}•òüœ&®³88µî¬®FW´ê‘?,ýÍBÐ8µ5…FqR& ñ¾¦š+ñscµ¦yvÇH¢—­ý…ÜB°‹“w•¢Øê›q’Èh<K:sé6Æ®æ)74ï=Ã(]œE~c…'-½^ìx/Í]ÄwàiÕö‘‡=´bH—séìCeœk–hSÈ$Êí3K­QoB{ÕL¸BÍ 0!šÚ}©(»d­3è¾~‰^¼¶ùþñ5êìp7Ëæ!ÿYàG-ý›^ëšÜjI‘]­›ÀÑÂaûàï¡?ž¼jÌ›œ¿s¸ö.ÞcÌ…ÙSg;+|ñIïèœäMq;/µ˜:“&+™z1–¨âtÑÛj¡@êðq\ÏŸ¯Ö¡ú˦¾b]òûYÊ0âŒgúdÅE~Yʳ›a¹C¨ÙC4ŽÓ·†â”ßtÓ+á í‹ç†#3^Àlÿ ­xƒ=鯔tÔ3 ò*uÄG§ÜëÜ_#‰ s‰<û‰#Ÿ®äKçUòœZùmž]lï7{«¯þØDéÀA-Ö#^#>ËGVjš;<ûétå‘Yâ Óžc•ZJ¬Ömävdխ”!ÀnS5qÎÐ ›‘EÉÎÙi;¹®¸D[M­fŒwðº@b룗GŽf!LOœc½I·}¦‹Ë¤ÊÁ´†;ºUs}wѽù}r`4ã#!’mBa7SúN(M'éRgDñ–Z|vÚÅU[¢€êRá5ßø­§½†Íï>ÖN"{¤ð»$`Ô*¶4¹K`‡£Š‹ûBl1,ôgü›Pcºeýtº æùv¹7 ™­o­™aXcN©yN‚ò¹26ÚËæÕ}*}ÿi;¢¸ƒLÎ+{GùÕtvß]°TÃv¹åÇ$žYF‚ábïO— ÆÔ&.©ú&~ƒf”‰!i­)ñ S:óeýÇ›7ò‚ÜÚà#¦-o$,å‹4óo|ÅïgÍ´µÃ•h趇ö(ÉJˆOžìÉ|Î'Ìñdó†lV†3:‚[¨Çï“\Ùz~Ò…O_ÍŸ2tö¾¸ÀzEÇk}K”÷"õô]*cy%o`õ…¾±\ ÌBä˜ø£Ö§B]Ø]—xÌÁÊgÍwùÏs Ûšòt"$¶`ÿ²5&€pÀüg–!úù¡Ì°k—Ò5F”_‹Ñ”>C>:^\ÚãWøNH¾¶ñùÙ÷Æ¥sƒâ¯Ô†ÜÅ'˦‰Ÿ–¼ÿþýsȧÜó’¾0ƒ î 96‚¾øÔg#3ù6&ëÅŒ%Úkån‹d á¯À4»ä^çäUXÏ,¶²R"n«æ¾"\â´ñŒŽ1÷EMºt)uŸtk*ߤ•\,€>ÕEÑh¡C²CÏóÍv¾y}¼Ùz 1‘ãXNkàST=!†‰]E)23ÈôÂW ×ÄR(= wnZU©¯Õ¯NP0+,õ²¹ýIó ñ<×'_î©ÒÈÅNfÕdc™ß]-Iå"XÛ¾Bt6)zJ9”Ÿy¬‡„ÄúHŒë\‘ áJ @“Ž„m±#‘Öhpßä?Úâ4 &Øä{G¨peþö~/-¥AÛÇ&-µ •1÷ÌLAì aœ"és/d^†ù}›­#ƒVÖgVÇže£ÝÅÞ×ÏO Ó¦ÚÞªhÐ4¶ÛÓl¾·rèNì0élïÈNh¹*¾R1xŠfÖã_#mÅ"úBßµ¦jŽÁÊF•jÀº`Œº…ù(ýs VCÞ¤ÍwPK–ÓªÆï¢}ôÜ „=3ùí—Ö}cZofËuü¹€çî³–_­,f矋¢6ATaÚì?q6£xŽŸT¡Tyô2·Ì@Þâ[¢áEr€üuÉD³`4 bw1\ò£Zß‹bÂB‡£FÀ7ÜS‘)£ñ“{dfÐJÐy/I°¸åcD¹‰\ÛF _v™¹ uýÌ|‹Maçü ŸÂ±†!£ÐdÈjÊ×gY^2sÛý6VƒACèbßeù¢ö ³%²èìLsCtxlª‹3)ëýEýŸ+‚¿öUœYû ]ÛU¾À¨sÂà xóãàŒ`×T”¾’ÇöäÒN¬ïxS8R±Åéó-l9Í9óŠú”š¸ç ¤Æ›㣬·” uéf3“w¾©»ù2ðáÑ8Ot·þ/¤¶&î©éq¼g±åõGçÓXÁ˜’ÖœF‹ÒüŠ¡¹¯uñàÏ]£òi?FH÷KÖÆûLÞ‚â&ã¦sLeH…³õ¬öTx <²$¯FZYÅ$“×[x"ÅDâ)…6 ‡¦¼„†SYÌ$–róCZ‘<¶K '5å,ñn -ÏîT†R†¼LŽûÀ íëc ‚Í?–Ùñ=\Ñ;Ê0ÞxÂì‹®ÚØ›ÐÖ7­rE+ýn°ttÆ^y:2ƒ±O—ˆïxçÖÃîêœÙÕôdÒ7<]èVábOâðWÜþöŸÒÊDZKö³)ñ½d¾¬º›½ªnò;Rý¤$6uÌZi¿~$cÁ±K䀨([3¶Æí¦‰iåd}Û*…ЕHÁa£¢ÍØyû5µ’'Ä‹ºC˜Šó‘›oMB©·S‡ËéË”¥Š_íg–tJÇÌ”Lü4y9-õâ‹%“&}Ù†YÂ4£Z¥#ÃkI(½X=îÁAò—ÞЪ!¸®ŸÉ ³eîGŸVŒBsÈšq§|ëdTÞÒ3d³Ï×,Épó>’5M‰±Ó\­zºõ$Íí«”¿p Zê÷ê‚ÆŽtO´!׸Ä8¯ù¾—¶·¨xqת#ÂÓ5&ãÌem; ìä3\F6¬ßûM½Q>‘­œÌt×}qUDÛμ®¢Ž‚X2'þÔ„Íw‰Æ7ê³›TÂò=6hý&nº`Ç›aN£Ld5ýV½Ñ,£à9Ï¥œI] ¬lg:ò,{˜•ýC¬¼ˆV^R|0F’wèM_,ÁÖæ\Ýí¾¨µæ¨Ái%„ëJ1•ÓÛ`õ™ žˆR9âåræ³ÖI¶BÔc™~½'WÊ4†«PPùaN ‚™>v‡ßðÀO‚…dÐ'ôöÂŽt{{¯2Ö†ëJ°ÑÞðã r†- )‹«>ŽcÆ0[8EüTú51Ï}£xÉúªþ"!í²7«Çô‘ãŠC‚nˆ{õªT²åáLzaü™7/úE4 ܉Ômh›.ŽP™œE0]ä»LsŠñ7· µLêL:5ͳ”9Çå3µ´à€ 6gß~£ÌÍÃ|Š –ᆠT”¥êl”g¿ö–²çgij÷UÞ"9¼ÖÓ3¯ÖÎè ÊŽï0èàn7: Ð\¿§¦“•Õ;Pm Kû*ð²•gLJ¼«p‡œÂéY ˆŠ®Qz/x‡%ݺpÜáÞLëë*BN¯ +õ½,¿Ö×i]gO± Vô ûEœgóh"iÿ«æ>ÆŸÒú^¢ªà嵨HKüÊkã·WiÆUèPÅË-)z÷¨±=¨ÂWPôn½Çð³9C†6tÈ!v¿Ý/íSÌ¢£§Á”ø–_ŒqÞ+m“]›=?®všê¹}0Gè­-#¹¬vPZg·‡Ú`ùè`àJ_;ÈBSàŠºGk¨Û+>[<ÿb7ß·¬¾\j6íCFò Iú¤Wž=¸¿{Ö1êë¯f‹RŸ¨ð¤d—lH×ÛiÒêôø5Ÿ±tœ7î/C{,æj>xy TêB¿úŸóW¹TPÒ7 eõxpÀœ×©6TÑ^¨(Ùê™  5”t³ÒŸxΊ‘`5ÀÄR¯Uæîø‹™ [úïFõÚ7|ýŸ/bØ| Éb›"aÀØçö/*:åA&üöýç‹k挹@¥ÍKA™}}ÊÄiµÖæà«àfÙ;M Uy´ÚÁ Aª\1VS5.•çÈ®?bŠ3¿ £µ˜¡äðHúe’ñµËPàðê¸#«•—Ô+LÄà—/-’,žwã]–`Öšä=ûvÁN/KÈ¿ô%ÇãC7{¼u69ÕF·"4º*æJÚ Í.ÞôŒ^ /p1Â\UÏ+z«óG°ÿæKÝwêê~6ÃpÉË]ú¢~Õ7¢Í3L…dË»eå]²Î/LÄM?ìT+æ½Ã´á£Á8²$)½«:ÇQøªûð_~¤–Hš† ’¬&zð Ói¤vï<Á D¸\Ùqø3¯„î{é&Ÿ9[¬º¶mYQ¾ªCdÆÆ‚5zU`ÏY8‰Aú‹ã hÌs‡Š£V{OÎÊ8«ÑòNòÿø@êÙ©„¢‘ÚbÕÚ¯sBq6øÄIÒðnR%§+þ`žµµ\Ê7ÄQRhh‡xž¬õ|õ#ë¶>ÿTXâR‡FͽöfóµãӦ׫@+š±Ê¬† $Ëçgé¶x,ñ’íêåª*Ï‚TJ"ç´û]ö±B«äçß«59 y¼R ¿$+êPå*žnèÚ¬ë11ýÄzøÊ¥BãíP/£õN-—CçÂîÁ§Á­Îs=­5Y7Ò…t¯ T†»½ëpº'õ¨1[‰]ëß“€(.3gÔÒŒL)da4áà®clŸ‘ss¹ò¤P»Þµ‡’j á¥E¥ƒ¯(ÃÆ¼z¬ìô9z$4ÉšŒ?WÛú›N²V“_&ŠúJó»]îfpq~-зY¬Ñîsãœp–¸m`?Ö=W³"‚÷Í.ZÅÏR[¹Ôëgú9ÇœÒmµ ÑñUK©k_de®O™+§Ôa$Jqºae0¢XŠVZéܽ€¦iæ½P~„ZD*ØœÇ,¾@"võµ²ÙW7Æ ç[ÌZú»ÿ#.Ý endstream endobj 60 0 obj << /Length1 1562 /Length2 8453 /Length3 0 /Length 9479 /Filter /FlateDecode >> stream xÚ¶P\Û-J‚Cp‚i,8»»»»5ÐH7îîœàNp‚»înÁ%$ ÜÉ9÷ÞsïÿUïÕ®ê½Ç´µÆ\c®jjru&Q ¨H qabefáˆ+ª±rXXØ™YXØP¨©5À.v ¿Í(ÔZ 'g0Â÷q'©Ë³MÂÔå9N ȹÚXÙ¬\|¬Ü|,,6ÞBø¦n` €"3@ 9£P‹C<ÀVÖ.ÏËüë@kN`åååfü“µ9ÍM!ESkýóŠæ¦vu¨9äâù_%h¬]\ø€@wwwfS{gf¨“•#Àìb P9ƒœÜ@€ß„J¦ö ¿˜1£P4¬ÁÎÙÕ¡–.î¦N À³Ál‚8?g¸B,@N€çÅê² eä¯`…¿÷ÀÊÌúïrgÿ.†üI657‡Ú;˜B<Á+€%ØP–R`vñpa˜B,~šÚ9CŸóMÝLÁv¦fÏvn U˜>ü›ž³¹ØÁÅ™Ùl÷›"ðw™ç.KB,Ä¡öö ˆ‹3ÊïýI€@æÏm÷þu²¶¨;Äûo` †XXþ&aáêÔ„€]A²‡<›Pþc³¹8YXX¸y9 GÈÃÜø»¼†§è“õ·ù™¯·Ô`ùLä ¶=¿P¼MÝ@'W¯÷?ÿPXY`s€È AùOõg3Èò/ü|øN`€>˳öX,¿Ÿ>ËË ±óüOøŸóªkÈ«I©3üÅøß>11¨À›‰ÀÄÆÉàåàpsð|ÿ»Ê¿ùÿ‹û«Š)øï½±ü§ ,Ä àý‹ÂsïþEÃíoUÐþ=1t€ÿ^A ú,e€ö?Ê7`ád1þaýÖÿŸ”ÿ?Ùÿ®òSþÿnHÊÕÎî›öÿÿã6µÛyþð¬dW—ç©P„>ÏäCµAM²"Èìjÿ¿^YÓçé…XÙý»`g)°ÈBìbný—„þu ÏåíÀ Ôüû®0±²°üïyÞÌmŸïçç³úã=Ó/) 1‡Züž;6N.€©““©' ˳¼Ø89Þ¬Ïjòø£luyN<ÓóXBP~Ÿ((ñÛôñp€ZÿF¼Ü é¿ë³& @vÐê´þäÁÿ€¼ ý + ù|Îuú|Îuþ|Þ”Ë?às)÷?ð¿aîêäô|Aü‘ês—þ…ÿÜF ÈeyjÎbSÒq]#úÆioBp–zO;ŽÉ{Ù©Óõ1…®:+hÃéR4e¸suG’öBd…ìÁûGkbx[’jûϽq‚Úô^;ÊÒÞÀdÑÑú~db& ‘¯>Ž>Z¶°­/>ÉQç9ºò «à\»÷I{Ô÷— [ØSýZÍ%z_>ÃôN3Æ °dŽ:ß,{ž€Á…‰‰û§ÆÜÅå,vîä™\Šïá;öÞz›l±7ó^k•lÎÝ„T„z$°ØcÓo½Å¾½—Ã_ô.-ŽÆlae+xË6<ŒDY’#§5Ú øìm3!߃(qx¹õÖÖ9úõ*Àé§—T‡xRôWíP]iÁ6{Ubhò0³ùKL½ËO>×ó®GrÓ%x`³´1–®õÖ¨Ø×N©¸(´|Zz9åñ¾Œ®êKE=]?­ $û#>ó4Šébé¢l¨Ì §H¯äaÂQIçîÂXËìùš*dmŒtÖÑNˆýŽÝ>Hà:fAJCqûnRëC©¢ÌË-ÊÝÅiO=éÎdóÓr­Ô+_+[GÞllüC4¼„ 猪¨wĵÐu˜ZèÑ îûÞ·;Úóß.é=¶­g:68ÂIdÝß; $ äHð,üÔe×Âÿæ–18ýñA–”ù>ô:µ¡Yg¨(õ¹‰ñ~ã`°M»+&ø”Q£~žÌlÉdyDÃá ×-­Å-±¬/Œˆ]ùÂ}á#cq·zLÒU@C®•éÄŠÚ1E’ÀO{é€l:âÙ­z ¢Ê^cQDœ~jI0‰³¤ÕáÙLÃñ~æH¤Šó>?¬½UmuGÖÀñЇ¤z\zò¯nß*«xËV%Èzæ¶i1 •Q·7‹ ZCÝaÔ3A%»í[;”§ùˆ[ð²ãú«Õ>i§Êá[¨ódt‹_àY” W™!YìÚ¼Ýy‚ÁêǤï(é¡«‘¨ A·e&¡a4^\ìÁ{l?‘ÄhsÌtÃqC9¢ ‚ÑØÎAd”¼Ó%wðÏER´’‹ 6<¥žpÓ I Ë“ðè¨g‚ìy‰u$ÌI&oO£Õ6Üä{b ²÷xitIÿÍW|ß²Q|ˆøºV__Hy˺ç,YˆÜ}Ý ð¯º§HÓ®–ê4 “­™üÕÿæ† k:zÂÙ|2Y†[™žWqd†âem¾›NÌÅÇþ-!:Ë’÷C_‹é¸H±•z"ðc'$—=yGƆ?9ÆÅ•XT)DÝ÷õn¨YQÑ‹vložTSêÉJcùãevQ$SøB þ,ãw}øB¶±šõ>‚¿Šò¡Æqƒk®^^'äˆK„èÛ9|¹þAc‡ñ&Ä$XlÅü*÷Íì™§">.2¡ðD3ÄS.†¸¶=š"99Ü–ìŠÇHè“’dúO¶AåµLzö?ÄeXEÞH) ¡¢žkÐÖ6ϰ¼]YiäU[Àyµm¼Ø0/-ÚyyŒŽ‘Pøa¸=¥Ô½D[W£w} x'àØ…üÌgnÂzˆ‘žqúa‰CÇÚ“³Âßœú–uÆÑ›unFeÙðæ‹Õ4 ׈–•.ùϪª)¾4ç:²š`âüðKÑRzÊfÚ í—«“oÝ’ï å«ó‡ÚááŽx ðLs1•+øÛ®ž!ƒ™•þ£I#Œ¤¡1¥²5$ÇÕ½R¶ü¯®ÔH8Vd*¿øÄAán¯(>ìÑ kg±ÈJ„i¤W Ö¯„HOž¯jÌŸ¤îÚ^#p/~žcÊ/~ì†}lT¶Ì£«…Õœ·”äa®G“Õfñ^ß”ž+>Mþ†Üˆ#V{5*†£Fè@iݾ†€…~ði[Þx#üâ“â¯ËeM‰¨õôŠùhúñ#úþåŸ=3*ö]95N¤¯·¢y&:#„¯¹;ÕBÄ€®¸¯Ü¯uدü´G´¢kmÁFWÖàƒ³†žO ,2 þRýo…¬]¤ó;¢²]òpTYOkîàÖƒÌÚµ.`GçÀj['~…£c»°1¼O”4o JšËrÐWP&*ä89+j¬¼`¹ã­¤eª"&Åic—gïVB™™òe6 ‘Æ 1"yÚ%äÖ—õÌ–êý¥ç<ð•ß¶Ã…÷ëìnb Ü/Š y"¶ƒ¾hIÙ¯F ‡ÞÞ^#Ä”dØŽ1_žÜíIÓ²”¬qˆèL³›Ÿµ?­ñÔ6ì!ÙRô^[I-äµ›ãâ¸{u2µ<¥ÐÀÒ'lÂhÀ¨}Úf¿Ë»Ð£ùî ÷Nu«ÿ ìIž@±>ËÅl,½³‡·öE‹kR¤³†î½µlá¦?©}¨¡ÅZ¯ÀÇW¸Ø8USåqÑ‚…­—9®­:‚jÐó9“ÄýõìZ7óDL¨p€B^MfÜË946û²„Œ‘Tà=è7Ž»éÞ.æ•Ù1¶":íªB%ÍŠPjþ‘¨ó•ÄPAIºrz:•ÔeýB+A»úõ5˜ó›A÷Ž,ÝD¼D;Uí9Oú † |Çš©ëgrª wgÐ õ·‘·>ZóKoËš‰ß´Çw‘šWùe¢4¿\# WˆÅpÈ ZˆþðÊOtÀ-Ø?©˜ÚH'04‚á(´É Úœ— @“5W–ÈæÍw‹otH:Y×M{:Oâ¹-ŠÇá: ;ÝBeikù°@)ðØP¢¢;§±îtcQr'Ù9ýS¨Y›Útû¤I^jÅ„¯!A<VbH”GQ·:Í2›gî îÏÅ·Ñ}¶=—ø€3Õõ…££†SꉹZñ¹Ïkg²¾ Ýq‘êú]U·Öòß’J9húHŽ“ª¢Sqr™K*)ð¹YríRm´&#Úfê@²wŒ#=JÜþŸ¿h¥y|ÇXkIŽ]rZS¨µÚ‰F4µ5¦“Í„‡'nÔX|õ׸3gó‰ý«· ZÜA%})çîìÓy[š[lÒ8p³þ£C²ûdÊŽºÁ)ËU«&¡¨×üèÓvDYéܸŒÙµñßÊûSùL-Ò0µ/— Ád©ÕB]x°‚Émàv›?1õ Ôæt©þ@Ybéý¡&øYvг\¿UÓþm·ôÊ-x“ ¯“ö=]ÖM5)›©À¨qŸ¹›®#IÐÀJ%«¨2¹ùÔ“î°¹‰þU„°~—Õ'ꩤ/Ñ‘g€¿WQv_ª¼pÒ&øîœKÌ;O$öRû=Q|`ôž” 6?ŽíÒ‹ƒ 2Œ)s„\}ÓàxWy­·ÊxUÓ°sžïðïHpµFDº“Ütˆ½&eã>ìXšn÷#M\"êêôq5½b h»ô© ÿ#’-g»&À^¸o¢£ÉÏí\‚HÝöîïøl!ÛÍp~ì £UüÔ›GTO潞—˜s–DZ…óD-›¬%(°AËÔ[¤¹Ú ØÞ,(óT"±|ôýÊq,ßå@+¥IÍA½=JÙªol7+Âtr‘ìÚ.u=…³7KG—»Ëïq ݘvVŒªeAf˜Þ Â6§ 7h½zgW!­O‘=.ÎOÕíŸ_ŠPîHÛ¨:ó%q†³)l]£â¼Ûrò¦åW†ù˜D8¯l;œÒlÁ•>P<áÊ[Y˜Š<ŠÓXÝ çèÍø¸–cWˆêY‹'1åÑÆCNÕÞ]`É6½÷zEÏÌ“ŸœÆSvP{C­åÆÀ'fôU°ñåüB×6[ŠÐØCðÏl®úìÌ݋җXÞcA,¡íÙ†oë ß'k…øUNÌtëZ¬*É$7 »¡¥¹ ÑNViâRçc3'÷ìõê÷剖ˆgÚƒh²J7å* žFM•I­>(  Ó˜ “Ã6éÏ»¡Ý˜»kð{ÙŒëD4­è¥ñÈŽƒ_7ƒD·!D€Û:~¦ÙVi6ˆè5’Á bƒ“1ÛØÚb«Ú››W+ÓçL2H—«~ÂMËïlµˆaŸ'VAxûf¿f°@^èã2:4ÃÛ}Ó©)õ佡Ìz1ýÍ>áM]¥¤<ȸ®$O¼ð9—©šÆŸFlu= š­÷î½+å·ó½‹üçBءԛ:©#:>xÒ»÷9"ËQ˜5!)ÔiÃýî¶ã$ûu¯Ë6°“K“Íá>V5!ü‚Emê›OEQ{]œá7ÄÛ&®Þ®Ø]Ûv±Ï²‚þ ^N7whZ€HZY“ÃÆ¢ª£Þ‚gX‚xÏ@e ÜÓ\Á¾Í—ªÒ”:¤”Ïzõ’ͪ¢¼¿J­Ž³ÖÎñ=QYßEÌIˆðüÜâÜÖKoèÌéö#_ëª}ø[䥴Ð)׃häÆÂ9=æn:ŒÈã~6‘àõ<²ƒÅ 8Œø$£†§š>鿄Ī‚1Ô%ƒÝ7‚¿ÀSÙ<­kÓ°x>ìJÀη{‡`c’oH‚‡®ã¡Ñ„2Ö~ewß÷âIO|‰7B«$H;þÂ=Ë&†uö—i±nq°« ¸Òó E!žÊ§ç†ýnû½§àƯ¡Î¸üù{7½$IeX„¶Èa«­²ß1,c¾ŸëL³m:ò6Ù6lÖ‚ÞÐZ¸×Ò «š‡UH´˜Òœo÷¼RG‹Àgù¥”U: .ÜØº©ä÷*V’$ºÑBJ@`@1aëÛ…O*·†ëˆ¥™vi”…ùNÉS`TÉÑ—¨C4•æä‘¹«ê5iñ¼><»ÂdnÕVF;E­ð{”H•QR|,LÚÅÆ‡´[\çcò5à‹WÛÝÁª çcð‹­€áJøÕD//q5‘‚áÙ¡ ±Š0¯Ra²ÐN}´D)áȾ8g¤ü5¥ ¶ ,. G±I`^k< ¹]@uøœç±±íQ¡þÎÞcÂæ¨tç­?ã<¦uc#4¹Oȳ¹ÁPï «€Å¸‰ÙTö cÜ6XT±¹v)°î^Õ+ô•?¯BêðýWÑØÜf‘ÑK9· FÀ½Dwý •ñ¼Gk¬ºp`—ʽ?Uò]y®îº4ÌÀë‚ôT¿mëwÑû‰uŸ´>ÊëÏkjò_”«p±"ï´FºíoŽ4s$#’u9P¸ÊÓ"B¬½A˜8f²&'ùâCB;×¹BÙï±ß쌫_ž—sÒ”âMüÌô6eghe°¯BÒfmkÆO‘¬L~Ù8WOXᄀVPVu‰G"TÓE½Lûil€#Î.Út%¶BPá0PKV¤,¤öÛ¦üÞôò‡òÏ£ B±²ÏzDm±Fƒ¿ºõQM6À¤b+ —Гî¨`R ÒÒÄ8*Ç!ÉW3wŒ9tfü¦³4„1u<]QûhÜè¶fúá§ï;”(ö네«Ö ðf÷éŸlÕ0gîzÉÂ<ß·™:y5™ ¿'}àÊ«àJ žƒˆŸômtã÷&0× ^©5> ÚãwänbÖ'²F-‚ª*Í>Ïúæ&CÚ¥Ââd¾ ¹VÖ^(ÀZAFµTÄñÖ”Ü6²‹ì\<_ˆñ(½ˆ±µK…” `ÉûFœå/3„x\U_APÚ¼ |svâ ”õwΤFæ[µéz9š„â¿­õËLø‡)&j–1šÓ±ìF0äöK¼ˆÜøE˜Ÿá÷z³:ýL <>¼ç!aÒà¨ênYêð¾SªüKËM9%­Ü;Xß©^Ác1Rr“ûSº£Â.˧@e Ô¾Ø-òÃ&²¡Â7úžóaÖ~帪é¥1{Èld xfõºç^´0Ù€:%út3r€º._L¡øG‘ŒÍ¤Ö»~Ò|Úº³Û;©p2†^-[¾ûq&äž<~ÝìÁ—@±KþºˆÌækû­R7Á7¦é»—ƒ%’¨õàZ~%Q|[ž•ÎQt¼ß<%Š¢ŽzˆèñU´óõZÌ[Vsá0ÊL|ò¨U1A„Ú_Ûˆø‹á|#ðÒ<Û Çäí÷Š…8åsª‡rf˜42g_}¶±<›­ëR]”tÒ°+P a š3í’EËë˜.g#Çs²gFöI‚<òïðeºˆá«z ¢èŠšhrõUµeK?‰Ú7ëMïØæ$Lž@Âô'Ýny_èLT\N9y4®‹ã…Õê²ò~ÆÈ¿uóÇðñ±¯X¯»¹´¶ø%²^~É{u©šCÕÇz‘—ZÆVÂ’ð£É;}'Z´AÝ^»þkj€!'Eôƒ“¤Ûò^å--ñŠõi~VŸF·¦œNSoz'‰\¤_ê-‡XÄ©ãPCš§m¡%áÐ }Б_Nµ#¹êëGž •ön×SÔ ¹5ÏñƒêÄ!cúáLsÙñ=Øôsù¬hT¤à94†ì ù|ê‹<ž*ð=ã·§T»ð¨Öm®…I”ÇàKÍ9îŒÄàL;ŹõpÃe™xªV»G‰šdÔqD\PæV—×xá; ‚ ²fù"üÔô ÈÍ6¨jÍK©RÄ1eÄ£“)}î—·ÖV/¶ÓîÖ©£y¶'oc›ð5‰þ"SySAÉ<rˆdzÐVeN^òâ\þO–òEêTž¼ì4R‡óûDEŠ£Xu9G‚3ûdíš´,Ê饄G½P/\Ñr$¸°Ü½æo¯P XÝQØö€âÉ»îÇ1“ve‹$•½þ"é;#”ùñˆêû05ÃKr‘#g¹ÉOãâ}—ŸÈºà8>|yLrÍ¿‘œs½&]ZXyM&öˆrv4‘XÖŽ7Ò[æDKü¥0æòe¨Œ7Õ ‹ ó”ñ•ͳT“i À£—éØÏÊ÷çoe 9\ žYàW F‘>ФӾ”5è÷¾šJ™·RKQ¨›ïMj•ȶa˜ãžÄ»Ó^®^ê…! ¥É#ÿÚìSÏ‘OÇ@!V®\—o+-’ô*ö iG«Ú»av”ÌjßRHCÆ3±GmÔìO戭ßU”2€KQ£íWÇȬ?¥BýÙ=øÞùä)ª…2—a>Äiß {}j3»ÕÖ½áy€¹s'ÙI÷ óF*טóÒ¹ÞÈH¦×õ±6£«–ü¨¥•c“á »l±$uIB neâ‰Îa£À«3WË‹Ñg\”´"^Ó±øæR: mB“ Eò#@ˆ³þS,P×”…iøåÇ’Pºì;×·ASá_¯=mýO®ÏÞæÊ—Ï:©£ÇpôŪ#M¶\ ­ Õª°;VJ½]‰ÃV¼¾±%ñé4è'³ä;n4,¥2\TN/x'‰î"+¦`0Žâj'ÏvSPÂ("]Ò¾ÉÖĆ¾î –Žš6–²âÞµmlŽpn!4¬üÂ,…:6®·vo&+¢Ó)Þ³ÈTŽë,5%ñ˜/zgÞ¨[·ºoq¹u&!˜do¿Ì=8XìXÓ.ô]dÒC¸ï÷óy±‡9x8FˆÄöÖ™–$myoYƒ˜ªí^ý¤ˆ>>?M&p™x<€-;j×;*‘-ªBIlý ÕõÊ1=þZO<–ˆ¯l¶T}ŽU.í¡Œ.µ3>ÔÖ ü©ç›?Ÿ~"oøJ¼ñÚZì¢ç¶Y{鳡fyŒ•¶š2?£ oK#¬ÉLêV×— W"ÈË-!>ƒI|™{Y,åðÃþU´ó#i¸e-Ÿìl¡¸zê§¼¶X 9^Œ([$-¼{M4£+|“êRþ™Ä%jÜð—õ›³)Ò}ЋÌâ…>n`b ,j£Ü`#fò™#^l'‡§†ð(Qìz61§P³AZyNcìÊ>Ybøûzõz3‰cĤâÊMd¢è˜õ%æ‘lùv¦·Û|$¯týq ›¹:µ½@Ê?Í+×Yª¨fÒ‘X¥[‘‚°8 m;°g<ð`e#ÓÉܪw+lœõÒmrñ«š²Ú.^\.Œ„3R°™<¥«Àdf(~¡úæ™KpK©ªCp¡½OWDË‘‰Qæ(Ô¯I¿ ñòÊñ9ùÎÇðXX¬ŒÈ6ð-‚ãqÛO%ceŸ8jYYá2)MÝb]{CË‚oĤg'™ß¿½5cøÖ¸õ´ú…\ùUΑIpðhƒ:w…NØÔ¶¡º¯Ù þ²||’÷j«5þ“ÚJ‡‡r]ÇõçÐcÚ/ù ¥hCŒæ×ÀZP\6†Œ¹Ú¨_ÒäÚÝ:|tzmŒaäèúÅZÜvÕ$³£€Â 1JÔ1ãS`&1lJ£œ>̓ƒÅI1ümk ¿ü¸®ƒ›")ËîˉùÛ†ƒ¨ˆA»Ÿ ÄÒçþÓ†˜e@¹vÈle¶"„ýŒu·ÔËã®Û«½u¼%Õ,d‘à-íŒóÚµ?UF)ä×!ß'Ý=‘âÿÄ*9üàZq|ÿúäOeœßC¦ü”D4ŸG{»þ+À¢SÎKAÌÏÓh©±ÿžÉ\‹”„±ÖÔýJdOæs™ýD<úgÈXå aÇð#Ö{œÖjS<œW uJ+?Z³Èĺã°#’£âlj qäK…èAz wÄH¯–¥cÞv…ö ;/~oK¬: 8Sx‘ÓŸÅúYU7"vtáDl^a8‹,Ÿ1å¬ÈqÕÛàD¾ÃU‹5Ó´íø ÇlÜ5‡k=ÕT»†©\í"ÇCð‘ AZBt@Ì!§7ÛT•´~ætw#ûÎËÞÛJÙ…‡gö†ÝòxÈ-B ! oãÖ¯¢_–+mƒ¤â(š€=÷0ÀOOgV5O]ÇöºCsÿ;j`ã2öGÝd8·ÄšÁ%í;]gWÏ®Åíp“ŠëAÉðôNmmuÖ»¶è\³Âñ¸ùÏ#âºÃÊGùy‰AŸÌJ‹Iï×Ô놖” iÑøî¤¤Na©sûÍ6жU•k xm¼ø]š¥6 »¹ÚßùSës†tg0·âNZ©‘%ú‹k„•ŸêÌßf±ý<Ž XrµûÔ‡Ä$C¤`ø%–¿.íÆ±´:JÒžÊ<‡òuŽÕ ®.GË8ï«65¾v¢uMû#ùÛ;}.‚¡–™r¥éÚAµµkžjYóÞÍ^Ê“$+¨è ‰ÊGoTª”«­™Ã?Ú*í1ó –êXïA[–_¼}úqxø¬ùèð&¶Ž˜Ž–ž_ ‰¼XäEˆ[ãMøwwZ›+`¡ñ$A$É­Q‹í/›óìª/š_º°#:’×ÖkX­a¿g\m‚Ú·$ïtÉõÜqàj³Þé㪩¸¤—ÞJ‹>‘¶µº˜ö×{7Æ&½«6J{r$³Sú=°[¬_gk± å‚‚¦Ë¼,û¾gÿ$Ç¢ºkÕU©jß$~%£ï$¤B•f¤ùä2U-•ÉÝ‚hO§”xD¯8¬qy¼öñÍj»^½ vçz‡!PlïxbrA7 ˆApõõ÷ã“O’Ð@`†Ràì3rˆmÎIÌ+?¼Z£01Êà ÁÈ—ªÐ6Õè©Æ…¬ßnÕ] |ŒÕ`âRÒFu‘)/{:Í56<ì«¥¸õÃg‰«ÄðŸÊ퇜­©ÕŽÉK4ùÞV¦`ƒ½*&0ZsŠ{…lMãQGjz˜c«¿îº#º´}S¿ê„—z+’èð|½’× “ 36Ã:±;(5Áû!E£Ôb2rUá¸^s8n~8Ÿ¥÷›†h,µüxm‚_MË(à[í ³Ð/¹ú´ ïÑnG§®  ¡g'ýìä±–KY:1+<á\w7 pªGdUUÕ¾^­pûæ—P¸¶„Ö=[aˆÅ½»"eÞh§³®2zí¼H~üÎ2xsZNÛ‘ÝŸé‚ì8 $OßvÅë¾®Q³ù~šhb¡ôNr´CŠ9Èðå£Á¡ú×g ÈL&D”Þ¿Ô“÷|§ :iIZÚq¢ññÍäÕm.ϰÖÀ-P^|^‚(š"ã‚í×"ØîÚ 6Ì–‡v}#L¬íbþ8ºpqEÔ'Þ®|-z:Ÿ'u» Õ¸m˜)G~ú$š £O,O^”†Bn@q)Rpé]Û}Laëc6£ˆ›¶§pWÒ•FÖ×Ô›þµHÕ.½™ƒ[¶ Öa§DN·Çó-Ý9ŽürR|‹ÄA¿füÊ5|û76e»Ž2ÖyÄ¿’”ïûS4XyoL ³¨£]w‘‹OÅ:Jã®â¶Åò4Ñ"ÇÑôãÂFA%F–†¬„ÔɲEܰð}gÓž+ýTå{:WµºéjGÆþ.Ôw$ù›µ‹?C—hS}8ùIøÎ1 ÕûzœpšÛï#ŠÀ›²­;›âc…ä, ‘Z¥¾¹–ë²?nßœ¿Õ‚ñž Ðë=_5Šß4Šàù™TO‘~„Üwsºè4«³<øÞ)S4†–È.ÛÞóE“ýÅ–šþmös ü—¨æôÖ\>Q|Éìj"”Xv\§1¢˜ï üÖ$áˆQ­0fv.¯}Mæ;7ë%Šl)7"Çï'_A)Ý>Þ] rˆÂÓLÕήÙ#èc¾ {Øè¼£‚—²ãLF“ÔÏEe§æJ#”oÏú~;¥yn–{çåÁÓáß…æ9WIq–[ÖÖ¹¸®&"ß'Üe0Cˆ™àL ®OµàÔñqºCPRè²8XÈ?F™¨f×§Êfþhýe¥1m \Ðæ,7Ãê*’ô´¯ËìfœAK_,¾¢iÀöbji”ðêpW¿Ù2ÔÀò–jzoðàGCs]Î|múmG!^)ÞÛþ6s®Y³ôÈÏX}â© ÂÞ!”4û€ñ«5mOËÁ"ÀqCì[î§q?Ö”ó°H«\½ÂÙ’1ˆtJÇ1ðt"ÂË,÷AoH”ž²ª4ÇSö²×oο— #6{ ‡9¶Åì’JNá×Ú¼Û.t§%|àéH)Wj¬;“äã“`ªÃ~*wªi¬·›¥2¿šˆMÈw [×ë+÷!Š¥•[Èi¹îž¦`c™m£¼\vt+§Ýj&ðJ˜âLƒ(C¼Éz;wÉœÛlbÿÑÔî{\ÔUݱáÌî¹|ÃèMÕEÑ‹ÆÅÐmôÿ¾„ž endstream endobj 62 0 obj << /Length1 1379 /Length2 5945 /Length3 0 /Length 6881 /Filter /FlateDecode >> stream xÚWTì»§S@¤QaÄèØèFº»”Æ0 Æ€nAB@B–‘ ƒé–4èP@âN¿ºßÿÞsî=;g{ß§Ïó{Þsä06VqB:Â4‘´0X$P30•€@â" hG»ÃþR-a(o8!÷ßôj(“©CÐ83$ ëã‹ÀRr`i9 ÉþeˆDÉÔ!¾p'€@‰€ySÕžXÜÅËò×Àå€ee¥…~»T<`(8‚@Ю0\F(Ä`†„Âahì¿Bð)¸¢Ñžr¢¢~~~"o$ÊE‰_àG»LaÞ0”/Ì ð .Àâû L„0w…{ÿ!6C:£ý ('p‡Caoœƒ †àrÌtôFž0ÄÆúþl ,þ;ÜŸÞ¿Á¿!P(ÒÂÀÂ.g¸; `¤©/‚Æ …„Ó/Cˆ»7çñ…ÀÝ!Ž8ƒß…Cš*&ߟ輡(¸'Ú[Äîþ ¡è¯0¸&k œÔ0Ú›âW}êp Šë:Vô÷XÝH?DÀgg8ÂÉù'OQ Ü˦£þ§NDñ̆H‚@ iYÌ Ã@]E7ÇzÂ~+Á¿Ä¸úƒ<‘žgX܆û¡ð†øÂh”,(à¿+þ}£ƒNp(às#(þ‰ŽÜÿ¸ã&‚c6 ñÀЯÏß';·œwì?濇+j¥cª®¦/øðß*UU$ ,‹I‚`°¬8@wúw”¿ñÿ…ý·Ôÿ³6Ð?uÎH€ìp½û †ïŸœàûs]øÿÎ`ˆÄñàû‡ö¶ I÷þ“ÿ·ËÿÆù_QþÚÿg=š>î|¿ÔÿC ñ€»cÿÔãXìƒÆm„·ˆÿ4µ‚ý±Ä0'¸ÇjuÐÜf¨ \Üÿn"Ü[Ž9ÃÑP×?ô× páÝá˜1Òþ뙃A ÿÐáv ê†{J¼q“ú­‚áVéß)5P¤Ó¯“”@P(–7xÜMÆ-§ ó›×Qsààœ‘(Š_ó”ˆâ«_BІú P¸eû=x\Ö¿î¿7ÃÀ 3“H¨|ä½úȶãZ•ë~Â˃ŠcÀe«ÇüÂ3¨W>§Ô¤iü5Ùየï*i}¯¯Î}Ñà;ºõ‘ý<`³¥ô~ë#“—?Ïì“MG–_RL3vmª<w“ü†°ù­•Às¯@Ë07Âü]`¾— µq!ݱß[-Ìówå³¢'—MVj¤ô(ÏÊG…,âmÃJÇŽ9Ìœ$há›d×ö04ãGßÇ®å ]²ë& Rm%ˆX/‰%žLøÏWš‹yw²p³X3ß$<ºöa„'@u-]—i*àYñ"êCÆã«O©`÷5>ÿeCÓcÔú·»<À!9>fQBz¸øÅVíRމœ½9ÝEŒÎ7éGo!£ø¥‘»t=QåX ÇŠ#ýÆ»›‹+# ƒÂJÔâ¥hy-Òx…ey÷}¹7äÇÅFfiW ?™ )¿‘mËZœù´”qX{-ï8ž}ä†ðÅ}âŸe$Ç~¬ ³ ž¾÷ôd³F*¥—v­'¨H©ÿ>uÏ2Åš×ÒÆìƒ–T¯¤ÚhzòJZku;é÷­-FnÂZöó¶ŸÍúéj±ZÙGú¹‡ç©YÑI†¬2§.O¶ÄLH‚äÖß]] âó4K/Õ‰Éh&ÔzÊ$Ù^d.{èGX°¸1{hW\Ñôš5w~oͽv¸W5˜9·Ò,öãþ±Úè¾Ï¦=ÅEkM4ŸDn‹Ç²Ç­Û§a²²‹=[]ˆ¸<W*óÄò~eqy>/2{6ÆÚSr›¨_6øÁ—ÁG¥ÏJŽ£¼f¹ Ÿ±æ‚À)zu3` Vñ"ÚÁaf~øqnm¹üYLô÷•ªgIÚBÑ«i‡£ô„{k…}:—œ}ëŽóÍk åa$‹yy!!yá^i1¢Á$÷xm4Àóä×ûü\„zõªBS©‘“J2 òµ¨2ÀµÛô„7Ù’î[Òº1лL ‹FVn˜ÞeŸ tßwÄS mò¯Õ+`³'*¯&€ ñN‚‡Lö3¥ï>oÕh9+ßÝ ‰»)ËMØiýn kçŽfKD]ͧUÌcÎÊz¯OG¯ ü0 ¹ ~e»Ã‡¦ùÂ(¢ÁæÿЊ/†+ÜÀðCr£ÔÇ`) ùÉŽËaµn–ÂÈ]ð¬dé|¯k Ö™¢Î›öêG™°¡ZÉêN(œV‹[²ß´«gî~Aèy6ukFÉŽåÒùó Õèj䬴ÉC-ËÍÔ¥JDÑÕàþ8·¸“ƒyoÑé0ί*½SbbÇêð"¹Œ¨ÛÀc˜äãQ×§Û~ër{+ÏMå£ÑUYÓÌÙí\’k7è¬Çéû¢.¨Î‘Þ~åÖL,Âø³›dâª{!>«Ü…ôø*aºÞök‡·Ù#ÞÏã…eƱì²_Î…Ä™¡³Þkå<®¼2ª×Æ,#ÖîœS¥–; i1x€}”Ã#˜&$byÒí6W?>®q¸Ô óôØ #m¶¸VCãÚœ?VŸ×ÅÂíWl[£ëD*#Øi–¯¡XÚy;öÑÔo™ ›U­™ÌÓzo#ÿF}ˆv{ô!IrÐF„B þ- çe’:Ð å6‚üy›‡$¹½§Jô€!Iáîx«Q„¼¦aQA“©ZæªÞ©0óѽ¶£Œ9ÿAÒ—M#Ãls€ìÍ­3×/ñÞ‚KX,„³kØilßžóÝèRT·qâ¿u¶$B‡¥ós=›I‰5˜ÉPQ<‘4ä~Æ 6Ép«¢q­Xy{-ðFMÈ+~ë^èîÃT[œbPRÚTç]‚~E¼0Ÿqgbí*OŒÈa')§7ÇɤÙ3Ïéz_C<²Þ ¬LZðw`Vîý¨aFzûmqu™žæÔzmßs×8?+û®/R¯mS)-{ìnÜ©hS¶QTµ¾Ûà ªgšÚSÜ™ .',ˆuÄ·¼l™­E¾O—l}%žîðèì(¥_™xÜ`”sJËPÛÉv›ÃæKøÌt>Q¢ÃIŸ/‘ó·À O¦§IäœqŒ$Áü´$> Û¾W5¸-*2Ûmã^XÉoÆç²Žêª®H½äž,.]‰Kª2vS~7€}‰½Œ‘ˆj¥S þ>¿°×Ÿâ¥¨¦Å ØcJo¾å4ÓUGÜ|Ч6‘ W\Œu;øWÕÝÃ4$¥Ï–œYÛ^-éAí–]ÉþÚãÝ‘ÉùÂqƒÉΛ™™ÉƒêU]uÕÏ2›àߨô—2XQüœAwÁÉÛbd´–~Ñë?y€˜`÷ձàZ…©¥—)ßÞ[9|¯?CÞ®WäÝKÊšœw-{ó-­ûá̦š³Fv˜ä©¦Ýƒá8l:Â5ðÆ'2&R’aQ¾Ž`ž‹ÕNãÚbUÙj—˜ÐxYŠ“… ò‡@æO?„dóHñi‡ŒÈô¶Æ¶õ™ÏùÞ ×ЧWMŒ:Œ¿!$ÕJÀ)¨ÞÝ|€rÕW°#U”ZÑ}­ûBvuy¶#i‡!DìÇ=Qw±Š§¯¿ntH²v§Õuº\Zâ§ô3- Ó/dËèäê Am³·ŒØÏrJ£Ç’‚‚ÌÓ7~0Ìÿ¤“͹¡>Ê·Þ%“Ý-xì ›b‰ÊñÛ6½/#=ÏQ?X‹LöNiavD§^ V-4,2f?îÚÓ¾íÒ;@Ê¥ú8ÈÀ–,s]”ÿœ—Ú’ºuxæRÀoOþØÂùóòm®-]ÞR 0@øX°àÔ¡BfþÓ-ù7NÖ!û¬½l×®cò¬x™—ö\Tð“—¸ };½†toUPŒ±ôö~¥Ãë¥í¡*[<»¤²G¶.¨õ ÒÏ=’ ¸Î)L)¢Öï< ihË®áÎߪ Ý>$ºÞX"Õ’Ⱦœ™ÔûPë!½NF“Ã[g7¯ë [èfbkžÞä׊_ÉÄ‹#ljtJ]nXäJ’EÀB«z»ÏËT^Õàͺ&tVú•QÎBÖ Ýsµ–sïX¯ ¿¢ ™%=N$*(sPÓa[°Ùe)ò<û!ÒÖív) ¿-ÿM5‘൧ݬR~Ūpµ.O£'”u×h4ßwebÔíòؘ^ ’ß±Mc3oönÝ·±ž O-ýÕžé©||àØ$%›¦úCó™³V¢4d‡©Ë’äÎä\ÊÏMô ª×„1ß B|¡JbŒV\ÏÄ+A«›(î*ù%•£‡ï“áo§FíœÏ„(è"äøòj›­ »eð¦[»¶G96u$‡sG ±è´Ñ%ŵ ƒ}„ª=C¯Xº=aõ-„ÏceýQ!u+ úñã˜f<EŸ 4.Æ4©›cª›˜»Ä&Ö?ôä7c˜†L4¡¦Úä6w°­ exOâH|~ÝXº¬;ÙëéËæVjþñÔ¹© ð4ÞÎ{ýGlÝGfçãM€‹ÖÂ^Žqgœ˜².°ÑXûåâ<£pËÝ-§Ä¬aôþŽ®î®.ñeQŠuâ£òõKUma¼`lÛ(‹ç㣕ø_ò#c–&kœ¶©hýE7ŠNÅ‹–î1$ tòÝÔÅ7~òŽ›·¦¨Jå«ùqcÓõþr gã»CÇÇÁv·©'ZWRÚÜ|,[-k®ðj<ïý½ §Q½y²Œ6:O•"X#$©M} <|;åŒßÇ@så¾9´õûùyò{ëâ碠—ö@‘v"Ç<˜Uþmy¡Ì ³¥Ž.Ãö´â:r+síSÀìËÎõ¦µì 2’?„•ñ^>}µÿ‚ôølùIAÓt”åÀíý/Š”¶£>%­ªi¤ï¶,øÔ|» ý”µ§Èï¡/ƒñÔóŠ˜1èíÓ±ˆÖÓÆ)6½¼Š1Ñ„úȱ¦pþêÁ¥†¦Lš<ê‘÷u}˜¨IM?ʨ“¤t´]j‘“¼÷ §õŽ+×ßÚºW}ÐOq…lž9ŠR—ë¹mXf],¨“ûäSKq ή3Ë"I‰+w^ÀŸ3^ãsÁJº›ÅíßoþÐÞCJiýjÝ$–*¾ ”óÂéÈ3ÎÊEX?ɱ8ÏóÇO¬í¬? Ÿ‹i©Ùl·g°³R/áÅ…S‰¢¬…Ø|éʧÆç-jµç%lIÚ”Ÿ»ž‰(Þ“Dšf›}‚T¯úúç¸{[éX([\ågȇuð ‚IÃÓ‹ÂåØêǽ¯ª˜5*N4›±HyÐNjЛ{Ê ³£³ÆÃJ¬œý\=iݧµTô‰æ’º¬Ç!ËL'fL·J V¤¹dx&·„KJOò±aˆÓ·²OOJ6ÕjEÖ™/LŒ÷EZ†^£øQ‘±-h…WgfÃj´á!Îlìá».D[!˜j:ÌÜu^ºo¾UívŒ=ºjªÀMÉ0ðu>”ü“Ø%„Œgô{3c^Ø´b±Úxþ÷ÝÚO†ƒT²ŒÒ\åõŸƒßwÄeÏ™×u*7¨ú3|›2hÉ/4¡¯÷¯(›²»FçWn¾¹w8f|Ë82“š;ÕÛxcªk˜¿d|ó5}ÑY< Ôw³ÂsÂéã KŽ,‡Öêfs‹†TzU©Üy^ßêãyíý:"º5Ú^¾•4³²‰þן}ÙysŽÜv›ÈŒÿN8#›Í9«2‘ãúˆá^ I`ç¸ñŒGwÐëNÑŸš%.iN‹Š7ü‘æ¶SÖ˜Mm*2)6{;oäm?DôÄwÿU˜º¸›EÚ¡Mçè” «ÐfEýä6ff¡~B2#Êm àâ}nb:mÞ³wuj$´¢×.ã’‰®ÄŸvM ú*¶ì­Gg³«Å”ggc¤îP 4¯>$|„Zè”!Ò % ©à•V#³}ÕF'R2©Í*;+ K'tÙ<ÿ[öB^c™Ñ¥’AŒXWË]Ã{!;Ô]6†·Òò¬_|¿¹"Ïåê:§'½Ê%&_£6ßXþ³NŒÊOíÚÚÄdÎ1ön›¬z…n¯×€cÈëXëÈKi†vñ±ÞWùܸÄáTl¿ohš¬”¿'97GòÛ Ñg'/dÚ)|Æ…XÓ®Ú ³§Ô4 ì'ô,r´J†»`m‚á+|jáÏ}Tj_{± »¯™C}lÒ)ÓîM*>ÔÈ"ÙŸÈc;V“ö4„TÖ2ˆ :¡LvZG éEå»’ó“>&Ÿ©ýþz+$ð’ù®c7üS§—à†QP+¾ä§ªp”ý£Ú}wµ‘™'«4¡¬}Ä S†4\%=I‰Ï%¨S•|… öÁ«žž±ö_j·ª@{pãЋ´´Ýøð¶ÊýûIÍ.ÅíÖà˜‡r¡QÁ+p¾÷ø_ݼª!5•{"`š¯ÙÓ ¼ròü“ vì{B›RL>èªþŒJ$bæ.GÙ¡>5^}l g¾c.û“Ï}ÙÁŠÅCjÃâ‘6í°Ì9þÜ=“Ss£i* “ˆKöÜTì_±ƒ@çO¥ŽJÞÅû‹’1Tl®T!‘–¡óBkG¾(q󛉿c‹—¯ÄŒÚgÏwsì6#ÇÔ·ÉK/ñ\XcëÅÙèÞ‡Ó)|Z†‹lìùi³ÊÕŽ r·‘‰©ó…5—(VTíTŒ±é!+sܸsz¯•vÈÇ<pYiRòг–ýàýù|–™P":¨Ðe­ÜÇÔÇuÀÝ?Ê¿¶?ô„½°L Y^I‰÷üç‘uèŸübK¯žYvŒvž1[ös:ñ ÌÐmÏ »R»ÿˆîÌ©ö:t÷Ld‚N‚ãqÇM†srº¼5z¢SM!Zw_!³^ø\€}j‘gÅßuå)MS–z›nÌ<ƒHÒ÷÷PVõëýÏ‘-—Öð«ƒu?½sÍú™o£ÀfÞ «D~L0çä #VÙx5ý l% µˆ¦´Ü¶e³Ë{š–ƒß^¬ü2ÇàÆ$æê Û±Ïò#Ÿ¨jÙX–ù_××Ï*¾]¬ÉŒlèó&Ü›ý>[¸sÑMôD©ÈÓì<äª%×£.9¥WÎCÔœöª9HD*‡Ÿa{åVTMòéÊQù#ÞC韃·ž* FYJÆM° m^Ÿ®®* P’j}ÿ}yç;WÈÛ»U’©Öž€&”Мj ÓÝÏr„†ït‰è;_‚¤U†,–¢’'Jƒ4$òûüUªÖ¨­¢>|:LjÏxZ·þðTì ÈC†¼é Xåâ-?zîc@»–h^·ôíMÚ;"›p—€7Nú*†)Ý!äAŽ„7`[Ñ¢šÊT*ÍvŽ>9“¾}]aE^ó’lĆ$ TÍ‹)¦å˜)¨™±»´ù) q¿ú‰Yg3Þ Ïï­ ®Ç#§M9óè» 0¹ãôëÎæ¦@ž[«àŒÊ3Š3Îò”sè!ëV” #íP§[†ðíÕû/-LÒžuU\Açjiq_¥!³`zTùbjpBº\²/açt80nÏ>¼B«„šÚAyIDó „AÀË—ó|´„1&«ª&¼h‘.÷ÊI²µ˜I]ÒH“B €‚^BÔõ„Krž½ÖX¡íˆÈ™ˆMLhù¼¢ég0/L|°›¢X1n®¨aîÉmý0.õñœXSþšV§z5íÉÛ* u¬ÒG‘õ+[w{šfØoþ–Ó?¿ endstream endobj 64 0 obj << /Length1 1379 /Length2 5946 /Length3 0 /Length 6883 /Filter /FlateDecode >> stream xÚVPÓݳ¥I ½HG~R”ž„*(½WéMZ$j”&*HSAªtEéÒ‰€H“"E©R”ªÒyѯ½ïÿÞÌ{“™äÞ=»gï¹»{'ÂçM-$ÕÝ0® ' •‚(𯿠"#Hƒ„…-‘8ÄV°5ëÄ •þ®‰EÀpD› Gt3Æ ƒ*@å•  J (þåˆÁ*Z°@¤`,`а&Æ7‹ôðijüµDà¢TQQAâw8 ŽB`‘p0†á<(bF8̰ÀÀ‘\È¿(D®xâp¾J`pPP å/…Áz¨ˆJAHœ'`ŽðG`nÀ/¹€ …ø-L $ Xz"ýÿ0[`ÜqA0, |pÚŸ€vC`bnÀB߸ê‹@ÿálô‡ƒðçÕP)èßtFÿ"B¢Ãàp ʆA¢=w¤¸ªc$… ÆI0´Û/G˜?† „!}`®D‡ß‡:êfŒ¨ïOuþp,Òç/åôù¥ü‹†xÉÚh7M …@ãüA¿Î§…Ä"àÄ[ÿ.«7„Æÿ±vG¢ÝÜIp ð[¡‘~}­?=ˆ&Ð?6ƒ@ Šá ‚ážà_ä–!¾ˆß ô—™xþp¼/Æp'J@„#ÝÄÞˆpØD8þ¿ÿÞ PÀ Ç®$ô;ÑŒpÿcO¬< \ƒ @~}þ^9{Ë ƒö ùÇýwqÁÚê–Fâ¿ÿ ih`‚¼¤´ )- Pii@¸ÿ7ËßúÿÒþÛj Cþy6È?Œúhw  ø‡âÝý%#ðÏžùs\Dg0ÁûˆüÓö9œøý7ÿïÿ­ç±ümÿŸçÑ ðñùŠü‚ÿ C!}Bþĉ]€#N„1†8èÿtµAü1ÄÆ7dê?Q}Œ8êhŸ¿/鯃 F¸™"qpÏ?è¯é}h„)Æùë™$¡È`ÄYƒ{Ÿb¥~Câ(ý;¥6Žqû5sÒrò ‹……€ˆ…'îä<”8œnˆàß} €¥Ð1 Ê Ü1XЯzÊ*`âcõËú1<‹%Ûï³þµÿ=ÙD0šÃÀ/ßôzyóõ^¥:Oäb¿ò°ð¢ÍQIü¶)à€*MôyVÔ vW=­§éã‚¶ÈŽÚ$ÿ1~µþUlCŠYãaØ‘s²ùÐb#h|ýÍÀ“Uõ* ¯¤¥ÚRر_˜õ oòzÒá\¿€K ¦ù¬{AºÁU„²©w1c‹fKÏå iÊÞKÞ±Jt¸Q<"œçúx”S€'ÉG-ƲÌ8²³;Ì’3pÊo, _»#Sˆ·Ÿ•¾»?úé©¥´+——='ùË»¡ x•tŽø’Â邇€¢x™­$Žºcó4 WBÉ—^¨v“Ÿ_ò˜û¹ÖB[׋–Ы˜L²t,Q~½Â—Lniù²“Ó}i?ÆWÆRóR å艂æÞ«‡gçåã# Ïs++ï\LåßÂÞž äW™ä×ÝæJ¯8¦ç7£×a0~Ap£Îñˆå!o‹d œG–¶å€ #åXUèG4n)NåÕ·x¸($¶£œòA¡ËÜïÅxh¾W‹Çy{–“y] Ziúè·FF³å}A"eÉY5òồž8ø9´ênQÿ¨M\ŠhvJúèm~ÖVî~>ò"š;ÞéK i.ëwìŸÕ¦v€·ïY°ÐÓ¦‹õ©¦US^‡‡Q}N]´!x`š“7’G¹ßV¼tmC^òDøï5Wš1"nö4ÈŠêä%ï³Ö½Ý}iJg½±XÂ>žÔê‹ôN®sñÚÝúìÒšYݦ]n%Š¡ÞøZm³Eë¥aâ~»mªµ.Ú´Ç2qœ²¡è=ÌYhó Ó3úž-7¶˜q™»fÔ»\öî!²t+Ù%Áí³E s3C&ûWNr¡ã<ïçólç¼Ó8†õ3ëU„yŽV‡¯ƒÆ/N-Z><-8+¤/Üê7{ßT_°JÒ˜%e`Å:Ø»Ÿ¡=˜°¦6ýzd*‹Õ~Æ@Þ3róÙü¤²§údåLÿ;J%¦Á$ŒëX`Ã4Ñìp̿͘·NÚžGàƒ¤ô¬œÙ›>ןóÝI”göjÜ  _?é>ºˆï€~hUsë׊±Å6§iU\µO*Ñî‘Hú¨¼š""ìTÒ–¶n­ã­kæ~üõ=¡ë³ÈÌÖ:j³Ë½‹ê ¯ù]i§Ët|­¥jLºûÙŒõ®Ñý·¼Qô¡†ãÆ|¨ü}…/ ³¶ŽÆiľÔªW½a´{OtƒùËy×ÖmkõƒÕÉz~ؼÊyBÕ}0ª<©Ù^Ö²*7Dº½y>(oØéK Ý>Ûxgáx`ªùö¬„dA¢ýÛëáÆjU°yüÂZ†ê]­*?„_[z;óã;å¼ÔU’y¹%ÔÁÚë€ÐÎÇwØ“òÅd0¯ç*DÙˆCðâ&RÇÕ‘•¸¸‹Ê¹7j»ô y;@îŽïb5ü}ÑQ•¹ÒQP¼Ì²öѤWÅ*™ìΈ½É[iÉóñ  ª'¤ÛìOV6Ó_åÆP(–q_Þ½¢P?#úÈ4„V!.ü£S5*€Gg#k¼Kú !/õiepJ¾òе“¡9¨õ½ŸO´ /1ê2íå->wÖv6kÄy51,¿Nè°xà’äàÄÈ}úèP¼Ð1[F°½hªé•:©K¥Ž)Ú q¹–Õ|èL{°ÉÀ˜óa•WoÉãƒûc‡¸rsÈæé Übï»,Ç™/'´­Â1‡yj‰4?®1è~r .è–S|ù¨&é[ Û¦:ÌÝ‹xÛL²ºh˜³‡iø|Ë4ç¸)÷~^nçþ­ä"ù ­¶’ܛ؅øýi{*ŸËùe/PëT±…aò™% »DAíEœÉ;hˆcG4’àËSÙ¹2·ÚA™³ç_=U‚ฌ@ç:òÕÏQMy…ãýdlœ4HJ/>þ$rÌÊiWHÒ퉆ŒÙtš¯Ü³˜S% `Ù'™ì¤;&[˰'ðWÖ¤ÅÝC&£_-Œ¾Užhª›Ìíz ºš‚¯ö®¼‚rˆº•ÖÀìã¤ëiÒÍ?N©v¸:+›‘äOLÑx 6e‚÷…ëqì‹,b_©k.’—äU?/®¢[ÔsëñYÙ•ù%Bãð™Ú»qkRcæÁ(Y®ï™%6’ ÖÌzˆñ>SyKÎÔÒœƒ6IWtºBöj†úáŽïñzn=ä ÷ fQeDŠ/>9g<¯µØmm+]ÓzX.•¾Òg~À©=Ü´AÚKïxãŽ;á`ÙúkÅhJù´—‚5ÌÖÓúcG@/¸>¼Î±TÌ#yãà,hWi™×õjÆÔµo¢ÌzÏ^S¨Û’Mj¯6¦vžÿ´òȹâ]íWLbÄÕQ¥Q¾4öVÌëép³'Ø~âE:¡3Íj“J()©°_†p™¯  æ¡wpÿ²`?—ÑÄ`˜³¸õÈ3õN`°#Š,UŽn}YL»±—^Û’xÙáÒ¦\@ÄÆâ5%~q]ÍH¥í—:â&L Áaî뫱öP\ê85‹°µÝÔ”¸re™u'«¥M®éà¬Ì÷°C²\_ÔCˆ@ca³•›Âr͇f®îkÖ¶Ù›iRE¸¦ç:o›Ã±£5!õv¹¯8Ý'«›G…ÏvGï…òïÜÒ5ž5‹Q¾kÚ»©5àCòyÛˆÙÒ·Ëî¯ÁÂ.Wœ3|Úì±ÒÆ ‰WÊ—…’¥Ñ ¿<;7ži¥×ANIÑÖjðJ 3ÏœñtÜ$³ñ«ÎÚ´¯+I^hŒ|ÔÖ‹ÎÕ$¼²"O½úÒKP¼k¾«Ûáá>¥/õzHÚrYšã`ãÕ½"î© mÄ}_jëÇaÀó°#}G{·§ËYêjLó’›µZEØæísM1‰´b_K¸›3C‚¶Ø™˜é sÎÏe€T¬¬Êì‘ûRdHéT8óÙª§çé„ïÞ–³Ñq"c O´Q–½šæ·DQ\|ݯ2º ‘G ¸u‚Õï‰èùÈ/T¬â¿D5½¾S@yRi§V²ßÐ]"wPºÂT‹×oº;N¦Âú.äÌrÔKÌ æ«OkÑüêÒÊ­ûª¯ÛÌã˜+AmÎ=5‡?ý¤´Ã4æÝ@†¥üe¤ªm‚ë;ÙèOÛḟˆìÖrN²‘ÉÓZ£hÄê…#7û¾ðmé›™ÌR«²Åw£¥6„ûÄ ùªØ{µ&Â6íU«Öo*ܼkÝ"}F'F¯uÅtÚëå¸?KjÐ̺—–û‰òë}¾olZÜ9ª¦Î§›¸AL^ßÄ´$£„‹ð²„Z>’iš¼3±¹·Qœl”*lm’ÇÃ’ïÒ]¾Þ?ÍJ¾8™;ÍeT­¦†©éGïyòn½–!X}Òï ’aý”“ñYÔÜ–Q¯®h?_±Ð?Tö›m¼ÀKA×yÆ r#|6œ$F'Òä ÉœõÅÌ7‰¹f #ɸú]Þ}iž–“èˆ ©õòhàfK/OZX™3áëçLR݉÷€È3S½pI,ûˆ×ŽDf_@ʃ$⋌…ÆøÓó}ßûü§/½¦ï_øCŸž†|P7ñEK¡¾‡]ë¨q¿â‡àâó©VŒö¡±)dâ[Š.{w[ÛáFçDÅ¡ø8ŸBú[gÚF³ŸÔ¡ÑæñôœH-ŒÆý,å°Ü\´¹´ëYëŽÌfþíÍj6ó­€­GNkõޝ¤cžµÄn=+°-ÖZh³7ÊU¤]ÍÜ´z«¤ŠyæGWÅdãÀxòöì·Eþ¿²"Ó’·¸+;g=IªÛ»úæÌ%Ÿ+ÜfÔv%‰",5ØË±)sï¨tdîgP=Ü"Œe±ížmô´`1W¯ZS‘Œ¦¾:ªêÃ(à7-Â8¤õõjLìN€÷¹¬s8ÿTW¶`)I¡‹IKÜĤœ*Š©ÑYsñ鄯•yårUë Pð¬éüúùØ‘ƒÞg¸¥b»Ì zKB T^TEß|ÐFU?]Ü÷Ø#Ë¢8ŸEô•4&¼ð Òà„*nu:Ù(’ŠT¿oñÖ[¹„%\çXÓ'²wQ:Sß*ÿ2´pž•®éf Ô£Ãè}ïúíLM@:MÍá¼µƲ޹\[(¦8b1²×\½áú•a–©ÿ^§h±`À ¢`åÓ,ÕŠØ•|&%!œ‡òô\xüí+×í_ÕBžnï¥9*Ôd, Wn§-µ0(3ÉÇï®Â#Î º<£À»ÔéÏ~¾¯«™À'Ìêß1oqg&}EeTOû¢"NegHÅ£iÏvK¸,ÕŸMÔ÷ýÀÏéà­ÝS½«ZæÖvwž³9ã2Vˆ¢l3y¯ûTLñç«é“‹p×íŒ$µ¿žF÷Ž×]RdT¼ò…ù¥ZºÙqóÑ|{Ýñp‹ÝFG«Â¨“$¶ë›±Kó„­ÄDÏ.†,´è Ý”‰cLÉÉÇCJM‹­|_×±Þá–îS‡î|Ü>SZ:S`yÁÀ|S3àÍ1XëŽ`%¢¹?%¬÷0üœÁáÍ/óÃ’˜Çœ™¡Wûí,Ó5—#]àƒ7_C.§ê¢X3JX·æ9d>‘ò2éÜ“Rª›.űë—AjU6šŸzzÇKÛéÍ2¥&é ­Ltd\­V1¿AÏ+®3õCŠVØðãzþé›IF†É/Ó6ögèÒà¼fLù‡£æwÙŠ’–-Ÿ@³«ŸŸT6±+Ñ»™éë ‰—uÏ鎻xÜ̧ô’PZàvvÝ6v¦ÿzDZ¯¤ Ø¼Ì ¥Ž=jðG™¹ú¦G¾÷­½båºìI.ÕÓYÝÚ¯ºØõ‘ÔŽãÞóîA‰âÞ¼‚Nö·Qí–E/5öø¦= üÓŠÁ$7;•)Õ)©G.ŽiºÚƒ©‹NâÑ„¼ åPÖiÿ¡;Ë)1sÁ¢ãç˜}Ùj`£çÖ[ù=›Ië·û2,°läŸÎbèihì§Œ›)5_:矀-c0ƒì’62ø›§és¥5Ê„¶± ]©ÁDB»ùœd:_\´u°rú“û•^QÙÀb·þ¤é–6ÊĉŒµ­kë[Í. Y™ÑÀÖ½ÄËÑøô5·«È‘ŸðéÕ>N=o¹ߦ”Á½sZôW<‰Ð'1ç»û+UàÛžSŸØ7…8Pì=MnP]¦ªª|¥®+¯¡ZÃO賜"œÎ³]("?Úw.]È`˜Po"mÓ+jÛ°¼Îø`êÔ©rùÕVá Lú²2œ»£X‹“€•§ŠC¨Æï§>ÍŸô Z“b>œè“[¢}‡›ËGõM®ùô.X•Àql ’`B¯†œ?-¯ŒDzÿ ]øøÒæuŽ+æXN}ˆ„÷^(§x¥øLû,]w ´›|vwSUS}˵ú,M°íE(âü|aä°¢™ÑrÞ˜©Ž‹Ö]Ç8ªðì³óö?“_Š>½wÉ7ªèZ,CЗº>1‘rÆkÊò•zÄÈclHöÑ$(?(©Àjj ý=Fyvoneõy ï  _––i‡N^q}Ù_£ý:;Ï#Îò’øç4tàñÈXG6%ie#F¹^þ)æEÉSŽïûOF*øÜGúœS’ìVÛ ¶z¥Â²•âÆSz丠uN`0±íö(µHø¾OäÎÉ×°‚c§`x² /^‚à:ð# ÒQò¨sOŸúÙ«hÁ‰…ܳžÆjÈ‹¦P´·³ô^ª¾Q”ÙØÑ’Ž$0Ê’g¦u&Û¤k`%LÍ¡I˜ü U BÓyM¥ƒUÈvç\ã{ÝEw<]a:ÇìÜK{“7Xóª{蜢pó¦$è4•F(ýÒ—‡΃Y‰-·/K2Skìx{- ¬~D¡½îó|+öÚK'F<]p½}oG»â–â8Á6t”ÝTérD˜‰–ï³ K^Ky{áo‡ƒz4p¦#Ϋì{¨LNÖ¤ÃY@,•© ià-T4ç»–ù&_¦c< ÿ";1V¶žLb8}ôÜ©ê:휌린·šP™±[ÍšÐ%‘Uÿ”Û¦omàEv§[JÒiC&¾û1Sô}”}°“$”*±¶ ¬j£WCYÏaDqébiÅUï•—Ê÷|V™÷Ço]¨­(U£· e¦û|øRðs0‹žž¸–pb }„ÍÕ;ªÖÔ2rZ[Ã7²I©rA×諱¨§ˆ¬¸ŒÕ½øñ‘#~n…{ËY»ª2^¯šS¸˜^zÁï°·µ1™éñÜÉ}D^©8½Ä–w‹>$zü H1®×áµéÌþšVL½Ó³.¨Ñ4ôÝM‡[B$L•šÍ:®›?|ŒÍHCïHñ7ôÎçméO='©¼TçHW.9Ñ?K&<™]xõư†¥õ} ½Ò);ñV_ƒp ÐLÏK”o³—LLIÝ­cX¾?ݧœvŠj1 3;£ SçkQz6,fîK€ËV3osÉݵkÁï¦Èï)ÈB|@ɹHÚ:•ÌP®à·,ã]‹ƒ½¾NÍj‚¯È.¸2IœA‰…—ù>k¿e’ŒotßÎÕŽŒSs7Éõ`È“âsq TG³p–<ÅÒÎ/2sûcdå¸-$;¬Øz˜8œƒ‘Ížº¼Ód˜YlIÂ÷“Ü»b5]bUè¸.Æ?ˆyaØ14U$âíRyð¢A^©´· !œñ™ÁßMë“‘—Œeõ)Q帱5íx‡Œn””ðêÇ…„8èú>}) ã‡W“/69P´˜Ô*îÏë+‚ßßO™ç¦^?(õ•ºöyÃê… W„ £*ØND‰ÜqltFNèàc¼`ïFLH~ÎÙZà/ù`híè~Ÿ}^öŠþû†—#É_yxõiò¿ò¼¡à¬þ¾xQAù¹žrb/™`®É§t_l*ά³kn·j¢褹"•W‹5ú¯bŠáõÇL 'Íû1&¢Òìa×:4ªÐ•Û®¯¹ê)˜— ‹€Fšì.DÆš¼1ÿð´Ë.ö~$¶é9Zª`ݶwòL &8—A\3YÔ>à•í±Çe½aÞ–'UWõìé¹LqsA·ªï¹]©©£ïûXšHœño ynéi¿V3ê`ñù€óWÆéÕ?&úJ¾ _ºÑTfî«Æ× + ”² ¡c/#=PT“cÁ*„ð {»Ë€l³„€Îæ›áÕFh®Ï‡ç7Ê endstream endobj 66 0 obj << /Length1 1641 /Length2 9184 /Length3 0 /Length 10252 /Filter /FlateDecode >> stream xÚ´T”í6L§t È€tÒÝ)ÄCÌ3t‹ÒÒÝ%ˆ´ Ý Ò]"©ä‡¾ï9ç=çÿ×ú¾5k=s_»¯{ï}3ÐjêpHYC-AòPœÈÉ-QÓpsórrsó`10è‚Ꭰ¿¤X ú W ù‡^Æd”ÉZÀÍÔ €²›#È ˆE¸¹<ÜÜÂÿ2„ºŠd-ÜÁÖ5N€2‚a1È@½\Á¶vðÇ,ÿ:˜­X@aaAö?î)'+ØÊP³€Ûœ3ZY8t V`Üë¿B0‹ÙÁáÎ"\\œN0N¨«í v€nÐÁ@®î kÀoºu 'ÐbœX ];0ì/±Ôîaá < ÁV ìÑÁ b r<æè(©4œA¿ŒUÿ2`ü}5 'ðßáþöþ ùãlaeur¶€x!¶°# !¯Ê ÷„³, Ö¿ -aÐG w °£…å£ÁŸÂ-òRZ‹G~³ƒY¹‚á0NØñ7C®ßa/Yb-urAà0¬ßõÉ‚]AV·îÅõ§­¨Ä篳 bm󛂵›3—ìâR’ýÛâQ„õ™-àçææ@.§•×ïàº^Π?Ê?âÇúý|œ¡Î›G ?° èñËfáÀ]Ý@~>ÿTü7ÂÖ`+8Àd †`ý'ú£dó~ì¼+Ø`Ìý8x@÷ïß¿O¦³e …8zýÇüOs¹dT5ä 4Øþþ·JZê ðáàpððs€Ü‚ÜÁǃßGù7ÿqÿ#Õ´ÿ]÷"*Al á¿(<ÞÝ¿h¸ÿ=̯ à¿3¨Cç`þÏØ›pós[=~€ÿÏÃÿÇåÿoæGù¿ŒýÿÖ#ïæèøGËü[ýÿÑZ8½þÖ?N±üq#Ô {ù_Ó— ¿–X d vsú_­Üâq3¤ ¶Žÿ¾D0Lì ²Öíìþ õà1¼#Ò„ÂÀ¿Ÿ›ût»fåðø”À;õGz\¥ÿN)±‚ZÿÞ9~€…««…Öcã?Àø¸œÖ Ï?s àâ„@á.€Gz~¨+Öï~ ¸ô‹þ aA—Å¿¿€Ë êøXÚ¿$¿+ä²þ¸@ÿ€¼.Û@>—Ý? ?€ üø˜ËáPÀåô|Lô¼[Äýäp9ÿò=rp~$è?*>ævýÅc.˜£ìÕàÿ€é=þÀÿº^+7W×Ç'çÏø?Þý¿ðŸ÷ òYaÍÏB­Dߨ׾iýY#EéÁ±=*>Űý2•…ÃgÞµÍí=™¥:óõªë¥TòÀü¥M9æ Éš;Ÿƒ¦zôÐæD­–ß[óxí‰í¬¯ã¤½c…Ru=Ô˜Tº’;¾w.¾úAÈMˆŸ•r]Ü„p5ó‰~zt+xÖõ”/‡ÌnkíT ¨`ß–OrDëE™•L3äYfÍÓ¡Á9¨1X O<ñ¦/.§sÆh”ãÙ°ü£y‹|ŒÖxb~Íx/WêòÀ:(è)ŒÈ©‘/‡'}¤÷Þ)“Íù”­º§Ì¶¬;%÷˜½·ÕµºîŸš12Œ‰0Ss!+EF­6+&8•Ð& ñe,)¯z* 6YÂØ5ÀŽ‚µ¸æÝg¶u©m0Ñä/š)Y)õU~pBÏzö%wåÞnC„ìÃÁ S´S¬ñ¥#ÿòš4’Ý,Å WGQEL‘afÏxM.Í›¤Õ4ÊÓ¾‘hŸJL0ËÊ–‚9ÿ€J4_ÍÏÈÎɤêV$﫤FJ..>H×è÷nvѱèÚÅ™Éày"½#gÖÞôJf°)®FŠn:!|a%“Ø}¡˜ÙF:Ì Ý"*Ädy¶€¡€FmÔ•Ü‘hÙg½†c>¤¯j?µÀ]&Ár?u¯¬˳8Šø={¨æÝ2ÀŠGÅ¡Vsÿ‰\Ê  ~Ò>×CÆ>YÜÆåÿj<üŠ.ãY?Nƒ‡Wh!Œˆâ0URxmµÕf#¸5X<|Ê37ò4~¡ÀO€{¿Û‹SÖ%y†ÉèIBLMºZG(d‡õ†dÞÇÖ¢žŸjU5°oƃÉE\£é\•ÜÊö§æÆ‡oîñÂä‡2¼¯Ið_—ÿ$xò½ ÓHáš²<®¦mÿzóí›>fE ÎF‚YScwˆÐth‹‹ZUÇÛ¨M1 $§U”èRÑáÝwñT xU~Ö@S#QâÝgNšÁ6#|5ÓÍ,Ô©~jášÅ{¶<㵎@Ûèá ù‹ÑýtÜï+ùÎ8)úŸüN£|JÄŒ H¨øÁʆå/Ffø‘ "Ú©é/W€ü ß×ü›ÈÑ÷Œ²¨Ê’ÇŽŠñ 9ôÞÊvN8I ñŽÖ–½aÂ8üEÖ^дQJ¤?Ʀ=O pçœí%KF¥8æîéãHh¥JŠ’ôhÝûÒ¾wÓþÃü6™‡¯t×B`VšºKJ‹6­‘x> ž‹¢_©3Y“:sv¥óàO*5Árv Ë 3„Ý ­‡Ž:Qiµ·ÜO#ù¢Ì=ß¶î™?£Цoüý-QÑè.ûJ¥úÆÕÄã"¯5!ÀáØ¼6]Ç »Y¼` !~8y:«?D&Ħ-•cnñÓç:í­ZÈH£xpÉó¡¾n±¦P×ú[òµcï‚­DÙ‰·©ÌD— ¿êo"ärcroÛ/lIŸˆœu.ìQ[^rÓ½¯qÑÕ@4UE3 lÇ"–Îø9Q‰6Ù­6’x¡“üZA“ã©ÚÜ>éï6ðÌ4¸Å|bba‘Xxœs \rêÓ³tÊÈ>.èOÄÞl%zJãü%CvÅ¢ö¥…<éóOXro›ËÞ“}.ªïñ÷ŽôŒø\à”ø–ÝàR^?"éRFNÃS9äË^Þ©ø …Á@rÕÌxh¤PCpuäÂþ;ŸM7ô.œÈ·V¬Û¢¥C ‰ËíÕ>GýÊ{ß«QÉÂî ‚|*û)› áíú·–çyu˜„BHº7‹Öµöä|´ûú­Í©[ Ú ×#÷i#v~ñdŠ7–ÒòÑË…B´_õDþûǽóa5Æü®ª¡~.º'îNö2³Û–jÝ„"¶ÙëG]¡—˜ÝúÄàÑÝÄ…r¼gUÏ}'¼œ®8øF8؇~dbÛ¼•¿ô|yÝVÑö1ÚÖh@-àÂûF é˜è.¯'va•Ø×Ë~Ö óø¨¤S‚’Ñù“PÿÎìÈ^p›7SnÐ]--%_×ìXå’#ßA"êÇÀ÷ô©ÎuQk–™ug i;2 6¾Ê½X7=LlÖÚŠ=¤u‘k§Ä"Q1jØë´XEB#lÎŒ|—öi$[ —f­ÀEºÎîѲoÍR∻»Ñi¢ÒqÎ=éS?±Ù8žoy&ÄSäívV‹oPu^Pž¸’\«Q†zøÖV¹MpR F ÒÞʯ -Ñ}ëÄä¡@ím6‡=ð»ÉVš]3Il®bÞÙƒ\Hî¡w^_” >©ie&"Ãhû5•8¯%çfÃàùeÙ‰Q›ÙÒÕÅÐ…Â Ñt´B‘Ú¶o¾¼ÐY071¿Jäƒú¼–‰5bëQÈÌŒaò ïZ̾$ã_̯t ¸ú‡®„,õõ30AÜéôxbh+K¨íøµ$bÏòÊYv"’m•óèiJˆ §‡Ø×úíuLI‡ò.ãìýßX ÒYcbÁ厡§:6êID)>.FT˜ÕLÈ’}kÖ(?!ŽÔ>wt*ݲçùˆ=阳|ðE]ÃX<2áô?>;ÖÇNsAÉ$#*½î²v®")«fÖq"„2©N>jQõ)Ÿz4¾‡£¼[þ‹Ê­ÕêÎyqZ}~Nìö,?WD•õjÒ"—×[:iȬLÚ×âÙ¸"ípyDs¿ }òcŠÀyü»tùxñ1Ô¢¬F9-ÑoV:s#ð Q +,¹˜9Yv)úCÀØYêô¯oGx­éê¡ØÀûÒ•ŽŒ¡(¼$B“[-?þé)Ã+v'ÒŠ:pö!þŽÎÚ ˆ¢öÂñldy'®àÚhc&‡íЮœUAâÒ—Ö‰®|ž—äàÖ/íUûœ­¼¦ ¨x¨jq`9¨HÚOKÿ|±Ý‹ýÒ’¦Æ”E+š`ÎÞ‚;äl„¿ ¯J5‰[ŠºùÆîV[+~‡¬Œ'Ìcüò½l³làR µpç%%“ràJöÕøöÍsàùÐ>EdÂvªÏ>×3ÆžL²Mà»çm]~-¯ô «¸«HõöUÂeº{f{òAÙ¶8çŎ¢JHlx•—šô/m›Ž›ƒ—;ÿ‡EYo¬Ù’%J&¾§W«£o´|qgK›û;¦>5k“[ñ:0NµÎ+çæ>ásÅ93þÚaœØoç;jJIÄ¿µ:Œ%¬ÜÐÝô¬ÿbfv ‹» wf3Çöt‹¢Ó‹Ê²þÙg¿UKê*¹¤¬IÁ6QIñ]”)ºίܳxh@~ÖçíÀV>æPŒ!“MÝBCt˜ØçºÜƵw]êMkXj9ýOŽpö™jÍ8ÒuQœdLÜש–ó7T§™ÏR(á6{y…¢'¥/øÞSËDòüXNy؆‹Q›§ä‰}ÆJný4DIo:]‰‘ÄÚ·9™íñA³4 hV/eÎÒ,8\¤ï|%›£ˆxŒSØœ¨t™àBÅÿDš°Â+1Û›îÿu–ˆ¨W“Õ«à§Ÿ)È–pƒ{}ä>†!´ºì°¾Töƒ¶ÿ3yÎà‘Ÿ'@\ÐèÔ/˜°/³~?ÛÔê]ñí¬½y´„#1¾¥Aaj£ËX.’— ™È3Þén4öבÀL±Ü¹`~Ì6›ˆJüô·ðÄë¿–ýå­QÔmË £Í; —È #sA¥IÇV¶zƒ^ud+ÛhÄaÃAm2ލG;啲‡]€òZ6¹@”µž–Èda“äïß$¿´fìÒ -l3÷„Q5˜E¥SÉQ£Œ×Ý14~`~b£ì>¼iö ;£ž)¹®éäŽ6 žg$6ÄâM+i_pþ±!!îlˆQcÞùUðÔ„í[ë.L=á)®Mß¼ó)ý±6]sBÒeƧô敤oÅi7ÞD£ s ëž}{O¸ÂéjŠ«å¯. ¨¥ubì¬ñÑÕd_/ñæŸÏþ€Î‰¬Z0ÆÙË,“õW÷¹‘_¨´½*¯rûƒº0@æºÌt»ö°ƒGg·ž;Òú½>‹«À^¿ËnBŒº}kÿ54$3Œ´„‰¤m·ÍÍùÌŽ¸T4ÚM­ÚûµÒª:oì²Çóš™æÜAáÝHòK}¸Ñm#ù+Îå3Ýã Œ8ñRÄf3€~Zê}!}-ZÔ‰1U‚MÜÖèÑìá»kIcجBÀŸƒrˉ$×{ò1ˆ¡² SÿÓíco`^*etÒÇ{ÔÌmVdÔ0å[•ãù_æö|H»‡ Ñl# Ÿo€ÉÞ¼½M¡’`…³Ú0¦êÖÒø¤IyG¨$™üD•Ž‘!pt4«’ðg4#ý…_Çű¯ÛðsºÊY‚£D}ÝCÔpÉ›Ñvte›\fãêè`ÈàªBOö8ïº'Ô³)£%_!âOê¤G _€ †.êßý¨ 韋$MiH¶ÊÌX·ec÷AžœG ¶#¶·ÓQ³^Ü—"{3«3gvÝ”#§½:Ng&@k)Ÿ´÷B&"È*3^ºªD˜‡Al ¿q µG²JyéÒ~”0VÓˆ¹X¯Oz_â§××/‘{ƒÙ$Ë·‚_ùOBغ›0§T2pÆÙnaÍ06æD¹ªä~ [ˆZâ‘ Ã6´"v˜Ó§W;‡u’A¶Š‚}´®]ïÛá¼fog(e±=Z’¼ÈpÝrœÍSLc‡ï>¯‚_ÝÎ5oãP X0ŽE’‘îÛÀïÝéäI5…¾û'°!{û«µ/²‰K„«‘\yØœ£_½à¿Y¿ ^­ZHWRŽdŠõár¬¥·ýîô¼J«ñ?µ5÷S7^¶ršY« ò £)܉Èi_àgénSѼ†õ\ݰg5Í~í‘ËA­ßÎ|XÏãrhÑ5Ìø÷qD‹;V{§»•†â£Òœ8z=%Ϧca“ÆŸyZÃ1£Ô©beæ-ߥ²€wZ2òÙ¢~V,@ÜüÖ²r¢ÞŸDÛ;¶'%É~0GÎÆð ŸoZbFðJl— ¸òOžT'Šéx}4±Ô0F>k¶÷uh xÇ|ÒÉTÜ ÚG®¶rŸ{¾÷ӽ즘z>Ú¿5¯5HU-apS.Þ”9-np:yuÊŸÅ^™ÄRÒ6|®¹j½?oÅÔ ~ ¡Ðp¬ Ûî¶,TÒè¯&_fùê²wà–|êø_Їkö ö8Ur":$sISl¶«Ó1¿ê<’NgïÒŒ'ZÅ#Ô}ú—”¨ÒÊä¼xÛ®§H …R¿¹îEÌàùC‹IÕwcŒ„ñÁCð'j[w™œhU©ù€NG_œ£´uiú,SÔLB”½ÏUÆuUm{âü/¶L‹>„ô#Jç?P…¯òð Ð}—^¸¢’Y¥ú Ç*½ïTFµä¿lÅ>PcÇž#öܦœážíÙª*?_n²×ÍþgmŒèç1)g:°Æ˜·lãèçöå m½ýë³7s{]®.Û9Ê5YAŸãj_×àumá^Ql£_)¦¼zµ„F ã›|ÁdAB+h|9kÄÈ)í®"Ìçã?RÍ$—Dæ¸uY¼ºüKZø‰€í—ˆ£ßѰ¼j¿+ÐÏ`/«EBtL±¯z•ZSƒUŽÁ|j%HË+œˆÄlC >ô[ º5ÑIuT‘“¬d Cë)Ô¢›FßZ9;bЗ=+ ¯ŒŒiÎ ™Üiò:¢ å&-±ÅYFó)ùó/áÚ¥[kLÚ’$nÑØØw\ƈݑg/ž»@7¬cL³4^t ‰{s°Tc¯íÒ€ÝFñ©Ì½Ïª ïÜ3áOŸ‰ä9Œç“Sdð@)N:5ü§óŸTì}Èq݈¼Z®[¾ö¿ª;÷R’Lˆ¡µ9ù¤r^"'P0G <ʶ¼é‘™›ÎeTÄf ~¢?ªºß¡«$aØ¿“Iáæ @Óëºf[Úl‘ŠI wÿ…¿«&^}/qí¶Ëço'ha¯ðPæ8û.¤p¨`&­æÎR諯à~WÀÞ7s¢dÂnD©Ó¾<°’G®_bé!ÛÓ£¡”ªùϯnˆ#ÇZ­UdÕmÞæÒTop÷ò=oaH¼¨ã^}?êù‰Þغ¤~Ôy[§+Ê/:Ë ¼$}Р|dÿ<û3‚µåzôŤŽ:kªw-iøÓ"/ź “†åÙ˜ò‘3}ù§» ‘0žH?(Œ´€Äu?dt‡½MZÔÍû-(¬9ë¹vÑUmùGÉ,ôuÒ.Y‚' ¥örŽâƕÚ÷ãÏÅÄâLo9Ð…z>•mâÆ‡‹¼„ù}ðÀœ*&0 ;ÛŸó-VÎ?êõ*Ç \Å]a÷´¸êð7à>×À–,ÎDH½«óTµ²éÎ;Ö´g´(M½L畜=«ðCö×Ì4-,Ó}nôòä"­ Ð%é—àyNœTFÖo<&^˜»¥©ÎûyP9HíµúÖ NpïAø˜y²ûTÆ•ƒÂÑшý¦üAµÂ›éžáUã•.i/Æ”+Ä•ùúzÑàp¶ÙUÌã ¤Sa*ë*¾þùÙ¦ }—_•†é’]>ôÂÐÕEoÉl‘ j {Œ–Ä— kÂÜ`Αûø„4#D ÅØ¢½¶âš RÒâ÷Å)ôƽíŽÜ\(+®l\É’“Ò×_Âz´òßÒªµ M$ôb…*ä7Û ¨oj‚Ñ]š›ðI7•/J,s,Q>Ó-Üt¸wq5iÙeqqƒC>%Ÿ¿°kNøFr‰J¦6ëñ ëk i4Õì¸Ø“¨¥â°9•“°,Éâ˜Ò@ù°p ¼†rÅ-sö³î’ì2³±n?ØyEš—´[Ž8>fÖnü{·oøqºÆmÏ M;xOnº>Ì7ž}–>Àaêºÿ¦Ø[¿ÚæV6ÎUÄÝ-¹vÆë #ô–U .¾C©ÉÉ^Rô{þBÅ+¢p-ÈTl‰‹FóøÃÖ~ô©Ñ¢&´oÕAó² ø|ò’[’IK0Ø1"¢)98>’Ä·Ð%£O½æC­ÇšF|Wq·¡•ä^ÿZf(ü-¢ÿ‚Öö†@óº¡FÒ>lßdîõH§—xD5¬fefßpº¸ÉŸZ“¼Ó?]™ƒµ«xé›Öý¢~¡ÂÁÙ U.ý!“¡‹{ƒÚ î±õjâª5ÚÜbPÜ]T;"/÷…aÕÖºTôsˉ:æ•TáÙ<å÷ ‘4<ìæûnvì(`xÖ –xOÙ½ ¯­à`÷›ÐP¨¶ ÷= šüX.Z7¦ê€{¨@-ùkEîüw½*_´*²úI\èdo4¢sL#®wzøò1 eFËžèV¦,s­®ìJ澡<²lKx-Ò}‚5oÿkSõïð ¡:'kµœ,m¾Ò°Œ(øcfÜ–u FÏ6CŸnküKDMÃYq2‰ŒS%~®â¶F ÅBýÉ0}Ç$mÑ\BƒTV-Ár¶á‡7ÊJ1Z\ú~e§Ñë3åŸIÑã'…Iöµ€F…ž¼"þ!]øxÔ>*t`ÙE›¹Œâ{íg^³ñµÌgSW)™©òeìÂ'ä·¿(°ECºØÝÌéò„%Ìɰd<çölÆiÎŽ†uyÓx/›‰PÄc³?O7ž¼)1³±ãæ@Wþé»Ùû—>Ù˜1rømUÝšì=nêùˆp3f‘¥ßŒP[q¥:;å‹ÐÂOgÅÌ|Œ¨ln_ßÔc»udÅ{ä~¼ž¼«?[p5=@•~Z]þ9GI‚L*ÓPH ©ÔWJÐQ+\_ˆh[Ñøém½óQ˳úJ{*¤Ñ¼Wz&nü¤Šh^£M¿¸‘î«,¨ôò()íýéŠ8r1^öouïï‘mQ~R(´ªÕ¬/Lg¬Ám{?g=öšö«Á[1%!¹à Ñç=j­ØšPšš"Ñ!~±‘†bž“an¸^jƒøj“Û~Ù»'ezY;ÚOCÆŠDí¹Ÿú ,lÙDq23'"b»ÔŠøâ”P`EäD3tôïÕßC fÔ²’œa‹Éﺭv;MÄÏœ%Jé†Ýˆß ¹tží#ÈÜdïprYÔº;÷¿œ]éöÎu¸Op™ãª?XXXýÜXí&“|#iþ’¿Zæ™ø%j5TÆ„Ü^â®°Í–ÎûÚª‘£"p`Æ‘9ä†0nT¡ž=†V{µ‡×ñå!çF ÊTÞ¡ôtb¨ÅPõ-È¥ÅPêÒª<Ïá5ãwà4Ò‹ ;»|·Ï\+½1¢1î `øUJ²Ww'zI¯Üýj£¿|þÓ®nú¾ë)²Á‚lswʧÀªFÑv©s¾åÔ¯ŸÎSž­7ÇHr“–Íñ¿1¤wY ôzR¨óñµÍ—íWc»›Œ´¤îÌêÝAx»VAÁ™SzbDÙ›÷~oÅ JÏŸÝ3’ó¼SJŸuÐßm9ÐÁén)´2“¡-ðÇØàÂj4·»™†¥½+zЬÿ@ÎþjmÎwgÎT׋Ûñ©öô@"^‰>å!g³\ùwž¦êÒOðûÕ@‘¢æÿÄóÖ7 Ró.=xù&j¨L&<¿®Í\!æ'êN&æéàA B²WëA.vCÃ\4|· çy½|®Úßd’á»y顯W»¿;‚QK]›ŒÙÃy¸ôÂ747”=B<¨×ë f­š¾DƒŸ—nžý^¥=S^Ðíê°>âÇcŽÉ ‰l?¥#¬¨òµŒP ‘çØ9R‡ Õ÷Üj,Ó5Ôùþ‰UŠj`òªH{·ZQ‡ú©× ô ßN‘ÚçêR/ìwPÃè4^Lëïœòôº6½]£téädk8”H™äK\¶ñriÛ£¾Ž\•¥Zí ꔂ›Ue-á0Ngîo±#$Ac±|¡÷y_Сæô&cö—“ ç[§éЭ×{/’óì·øÖ­ð®Ñ­¢œÎ3PÅÛ `n{$Y2,œEõIãñ,HO›°5µq‡Üûæ7£?Ĭm€¯q)NÌ9ƒ. ÒýcéÙå±l©Ù%žÝåÕgù\Õ©u5»q¹…„²´$ËèÞ¼ÐΪa ( JmçÝŸ¸g(P·wM¡”ŒSnö¤Ìk©[æ• £êÉ–ÖS»õw3”äç­å‘n•jéwõ—ÔI#äÔxWÔ$^~†|lÕóöº:˜½ƒ®vÑD)\)`V–ƒPÙp`$ÚAbL±.|/ºÔ:© ÞË`«b[œQ`™JÏézÔ8Ÿ,ÈÂ`—ìuO…h«ôh@:ð? }6þ4:œ_*Dß= ֻǘŸæ?z%J­LJ `czÅŠ‹ 8˱ÐÛ÷úçíêŽï‹Ó8:¶\˯’m2rî‘¢.†¾8öpùwBñ¦õSaTÔ+ŽÍõ2?N²6hd#TÌàÔœ°cJ­®|':1AžÍ½x±ŽB¢L“æÔFѬL3ÁÁ…0€­ÿsé˘qš„íêpZý”ß)"]ëÁ´xežEáÀOjTcºÙ%T¬ºWü«ÝÚÀPpïf Ñ„›ðD?Q{ÄœYÁŒb‡‘S¡²ñ˜ô‡ž þ1ÝQ‡_AµÀíÉ'nãs/´s§µ½)j:ÉÏú|Õ™lûzßí/Þ3¦*ZÓh|oúâ%9*!™FPEôyyúÑxÓ±Uàù¦¬zkV%Þ¡@d½}j@K(¸¼(ÒS×A.á…ÅZU…ÕGŽÎLÎp¬Á™L­ &¤-|1¦{p ƒ"кƒÈ°£$¹¤ÀLª8¤òëêŽÝ/_pfˆY…†[—Œ0‡¾;;`˜‹È[hÌÄÅúöžcW²Ä–#ÂVP5]âåFc À6îçÓ ôíŸoÛ löÈ”èŸ`?5·–]’KµoKjÒtÈYq|S°n`«ï‰t=_TéEÝ… BNÂs]ôg+Õ#LUšl¦ØT¾)Ì«Rñ¾>×1œ¬ìox™nν·‹ÛˆÆúîãÈvõ†!zLá4„Sh úÞÔ—ÌK1-g[`Úœ¼ BXV¸ª[°-ÊD}-Ò¹ecCãMÅ­÷@]¤HŽÙ?Á$Žük6q¤þža¯®_ÆÔ%ƒýÌ÷Pþº÷ÆÂ¼¦³¶“Æ¥ZÅ/ߪ}Mƒ¬¨4õ†h»`¾RmJ ¨ÂÍ~¯¸@¼Û÷ÊCÜ'c&ÞXmà'MF5Æ.pc)Ýæ}ìÔ|C$ÒyB_§#…Bu«i4m{å“çõrc˜´:©¥š-¦ð*øãð•0+NØM¡~Iç""²s„Hâò³Qý1A¿Ó¸×ZÒÓùe#él9óÚí`ÜzíÓ¶%Ÿ§„ò+âþ¿Fö¦ endstream endobj 68 0 obj << /Length1 1966 /Length2 10604 /Length3 0 /Length 11814 /Filter /FlateDecode >> stream xÚveX”k´6Ý Ý1tÃÐ ’Ò 5tJw7ÒJw§JŠ4H#Ò%R‚Hœq—{Ÿïûq®¹®™Yë¾W>k=ïËH«¡Í)mµ+@Ü9y¸€¢YUm äãy1u îàߣØÕ uýGÖ r‡éä@î0ª*Ô  ìáàáðŠò‰^ Päo"ÔU ò„XT¹ÊP'°£,ÔÙÇbcë‹ô÷_‹%+€GDDˆãs€´#Øb r¨‚ÜmÁްˆ– €6Ôv÷ù q[wwgQnn///.£ÔÕF’•àq·hÝÀ®ž`+À¯²j Gð?Åqa0tl!nBÚPkw/+S8@,ÁNn0#'+°+ ­¤Pw;ýIVù“Àø«=.žÜýeýËÄéc¥%ÔÑääq²XCÀu.wowÈÉêäà…Ùƒ¿é4·´º¢®®!û?EÿËÈ@½~œ¼@'/@G ("ðÿ¯£Zðwùh5@¿Òû—C%'k(@äÏ*`íû»Ͽƃå¯íaü7‚6Ö`Ëï-0 -a_<ÿç]øÃäÿ·¿¼ü¶àç¤àáàðƒåoÊÿÃ9B|þâÀÛö$ªPت8ýoª>øÏÝV[A<ÿ7ªä‚-‹´“ là9E¸øÿTCÜ Þ`+ ˆ»¥íÃó÷qÀ"8@œÀP7ȯ ÀÉó÷¡üƒÁ6ÐÒvɸÁí [°ÿF•w²„ZýÚD^AÈÕ䃄¯€À¶²V`ï?¦ÀÍåu‡™`ú¬¡®¿ŽVP6X¿TJ‚n™ß’€[ö·$ à–ûGa ß ³ø-‰¸-ÿ‘`˜%ÔVàß~þ_GÇßö<°Ùçÿ6¥ñg«ÿ þ wñ€ÍÉ?>·5Äó_F¼0ÔÃõ_Na›ß.`¸Í¯;ü›Â«ÞÖÇÙìô/+˜ò/–þ拓@˜ôë<þÁa‹Èý/kØòsCû‡uöø KÂù7 ³u†ÝÒN`ëßµòóü¥uýO `óÄí Û¨Õ¿ÜÁ:ù¯‚y`©ÿNMºÁn™ß0ÌÃo°‰âv÷‚þ †Uêù[ä…¥áó;: ô»þIÿÏZz¸Âruÿã²€çßò0Øl‰±8µ ³k 븩—¦ðâÜùÄ×'¨ûýу†#Þ~‹ ჩ}Á•pzžœÆ¨­d­1¢*"|D…|¼—½ˆL'*>A8>‚b4ù1W“¸š(Ö74–É3`yré«×²>Ч´Uß %eÇñµ# DT7F{û.ê(ÔUE5èêûó¬"Ä·!_Õ4EQf‡»ä€v!‘¯0•»[§~0+a¶_Ôtâ›ÏÍ”Áœx†áÞøÍ‚Â°BH´k¼›÷Ö¶óùÓ.øŽ’˜7Ì{%Ã׋*ˆ)ô ®BšÄïcÒJåæOÆyß])Å«›:{IN̲…‰ÎceÚ¡[{•Ø*~Mðͪ8œQd9}?Ý ™3§ßAz­+NQ Ä)» 3as .ý¶í˜ìû£CòŽ‚`ò ³f2tû¹´A÷ Œ¡ e½ª=¼0&²+¢º\ïŒùsqåÉKöI–ìÑýç›ó„ò :ÆÂú× ô•°ù§  EÅpï{|Ö¢—Ëú=ñKæä“eø…:ÄÓ‚ âj4lœ.RdÔÝilŸC—´õÕÞ&¯ši:C9ÙJh[˜)—£^6ïàŠàöâà kˆbO~Œö ŒÆ \Ê(ËRyaŒZêOWÊú$;MΓYH©S ¬ë,âŸní*4.ÍÈxù‹ÄšŒ`|!TwllëZ™DÖ»ÌÕÀùQ«dz•Hǵìѽâ6™â"c$Õæ²šupTaÈìêÊæÇ>œ ÑRW²F]•FpâïløÚxð œvÐÙð“;‹¥è¦P¸öY~o¼ÜyU‹Ræ‡(@Š^Ûv|Çý¬?]ÔȈYçVÓTV•çJî«$õœ\!gHAR¥Û(Ë;ûvirjVU.Ó›Þ&-Ã3LvëÞµø×¦?gÕd¯‰<·:ú¤eÜÊ>†|îkàm½ð@O.\}dÇpE”©s”.Øx¦ïM úrI‡Î%+–[5ÀÇGë“vz6R‘E€eÍŽ-ÕÁzUß ŠJrš!7ûÊþU}’æÐ«'Ô(¾wu`žåRdY™®°¨é¸&ÍÁ®4.Hbf–vðén«ÝIYÅã…ZçÛÊ\©Ö‡Ê^´Ò¨87úLW îxëNÇ1ÛXWãñ«ÕÏNwOÆ¢.›šu€ña"l'á4Ê çÓ ‰WK…h¤nŒ(Ö©AGß5ÃΧ¾Ã—’CÛBº¹Îöì7µÈóQ}{y³yNdÆ /·cšÕ4Ÿ¤qÓâUß%\ì[)ñCf¥ßW2™G”hPsÑ]Ô3¦T-cóéÜ€ŒÃ.׫Þ9ö6þ.¤q&‚ožïx{æÄ1Z(—é-FïôAßæíÕ£Ú'Ú°U†ÕHüMå_½L;,{™™-÷VGcôï<[Öä±Ùî n¡l‡3#Q½Eñèt€¹ÉÓû^ëv!²°™.nÛ¶ÓÓ``Ô܇“<mÄy£Ï”ó†w¯’g©…é’O¯Ä[±³éŠEÂÂsÄ%<_Uu G~ó¨†Ðn ;Hö­öìÃt]Žmdv-g:âW—× :†’ý×ë‡P¾pc8¿l2‚Ó‡Mò7·›VW,'õ³Ðî™k 'IŸ7ŠêFŸ÷Z—K궇_俪Àš×+a€®D«Ÿ—ò¶ ÙÀÓþhÅczÉëý#Xþbt¢·&£‡¨I¹¬ðJ$¸:X<·ÔòÑõLÓt× ÅwÊ7·~A}’4“¦Ÿ-¼+7/áB’.m]QN¢–·{ßBD—cA>˜v³G½ Eëì¥ÈÊ~ A[ÇëPià9­Û»go^×ïØ3¸#Ü$¢å7[Ÿàà•R¦Z¯F7!äÆÐ/äKÅé æðͼ(/8Qýæ­@rúOŠÃaJªMG¶ŸR‰Û2!ÉÅ×ÌŒpA±†²ùäôéË·§xæë#b­æäm2’3YVçÜÆ—§:‘¥˜þ÷&‰Ç÷]°w…w›w®˜æÊˆtšÕÊžú¯Ú¢}6¢Æ„¤š²ª¿ˆÍ­p»¿m À®_=†rî“-o›j»sXu-$­xnÉ&åÐ y*ÛØŒ\®Ûnøçëo)çP‹iOðýèk5aAm ²J‰ôŸ©6‘Ù& ›ý–¸ç‡kî$¼=Áhå}Ìû’‘úÙq/ë—wÄŠK’Þ{º˜=ü\-/ŒÍ!"÷4R\D˜ëÈÓ~$yŠsÝéZ8?0OGYã&9ó®0Cßmâ°§(šñWu"6rØ.RŒz˃ˆcm_˜™¸0[Twg¼UH»\¥HÚžàOÂSF}F‹½äZ±]¥‘eQ¡Å{"v”WÕ۞ǎÎO“¿X3·jŒÇÁMjw]¥áô„½èËíô‚¦¥ª;æ«7ˆRÉ6¼B|Bú|É™@›‘½²cì›óh« y³ª,þè´™O‚ÁFýn8W C[¸ôEö ÕÉŠ7ýÏ0åZÉôoÜ,>s ¬=£ yo8s Ȫ˹Žx=ÙÅÑfÔ§ÆV¤~¬ì Cp%Üó@eÊÄl9ü`ñ½Ìêm &ÖÇÆPPøó5ö$ÑJb…ÃãÊøm»à§qâ&±Ù¬H‚-ë¥Si¹éz½äfù>ð®ÔÏùÒp?€¯=”$QÚ?ÅѵË[­EÀQ:°¡YšO×›Ž$ÜŒ!4`HЮÔe½*ôŸU”{_¥H™zDK˜¾Å&Vîï>Ƚ¾â‹÷5ÞMÑ“]˹€ÅÙÐK ÔrѴƶkÕ!t¶Á×ÄŽÀF×ä)ý€»-Oï½GX´†4bQŽ6´*Ÿuí~é~/MÖŸ*5užZ˜Ö½áˆ2âÉ8ûaîmãš+³ú×bMšNÕƒÚDîσ}¿™îww™¨Ó¬”øEšòJXH\|/s9ø·¤tªo#šF‡ù)†ãýVu©®j]ŸèÙ¤xß§ŽŸàJ¦ã|&÷yŽœæˆ­•œ›3ÉèCâ• Ô¢‹ÿ6‹"›Låït3Ö–èƒ{ò²ûYV¯w§ÒfšpêPPiP2¦6ÉE¨W’P‡ÇváÔHxð&¥­•m¥õ7~ÇŒ3ìË–ß0ò…SÜ⣓ï‡Ýb0¡¹È&2ñJ?…‘ò7<_€ž…Š©ïÃB¾aš'â‘(}9ß ½=6/<ô¾è>OU±½10hCÎ÷õoÿ<**«ÑFÊû4~§góx&‰þ®ÛIÂh ÓóŠo¨$R?_wîØèê§ŠÎ}¾Zž¿q)eû™óÚäÇi[CðB[j)8OJ%qïv³–Á®^Ò°½ØvâŒKþgñ£=9²TL `ÓÒBªÒÄç{«ÁÚà 3étŒ»4giÕ™ã÷Fçð¡ O}‹p¬ºÞZ¾:«àÒëÜðÿªî³¯-èºcY±Q&¥øxAÉI0‹D•Ï÷_ÔnëèÉÐ.ùd§¨ cNýFÏ#XaÁz¾6ƒ;×jãDŽulót¦G½zÜ2Èìàw’ _¶çrM ’hdB„pÍd®MMÖ.sê{øDòI&È>‚ê„n])Ç‹#~&.ßf?¥¸Êr5xæ ï㜥²S¨~Gð|ã(u!íà‘U¹žREÝÐïꢪÙ7tØ–ÈEúâ>ý=’S)AͰ#%Ë©:Èi‡~Õì|°ïíc)åÜçÐLN¹…©õõgcYºôH Ÿ¢Nð­DÚ›ÅûÌŸºmæcÇ´uÆ5î>eü(„Êiãë< Ÿâ¦‘‰ÉEj"Áרîu ›ì ÐpvÈŸ¤¥ês·dŒý1ÖߢUÖS¸x|€aó²Þ$£Ég¾Ì³vu“U'r²tDïÇq©ÔM+²¸€†ŒRw éå'KÔ¶Hvš\¾oâ2nåñk¤šV³ØN7HZ/2Ó“ÈÉtJdF°ob:¯Ž¯Ý鉆yx(gª™ú>™\Rd‘ð¬ÜŽ‚1”œ%y>Úr|Ûú6«&u?Äs—­Ë&ݧ̠¦VÔy‰ùòž|OkÅùóR3 ¨²iÎñJH®FF‡€‚ñ¥¤$+ÿÜ1ûYvt—ÂG#À¸wÄO’°yOá#±o{Ü,¿øƒ” ÛIÖ†âw2œõbŠl•dFÍ¥{‚m¹±Ÿ0…W¸Ê¿ðß<gÎÍPõ~üÀ¾¦ÜÖ\ }4ͳ_ä´R#~ÍÙùÉÏVZI¢n´PLUñ£±§¤Ã™2•çŒbËëú)éun2¸]$Aý9c êË|þ}k=Ž0¯"sÌY[‰H^²~DAÀ¢¡¦•š¤@/OöšÈ£E4æ¢Z”{@U8j~-6øµ[é8Ó£ ßÝŽÚ·]­'jo ”‘¦hÛ+R×Éꧦ¿ÉïÌßÀ4JwQ(0åÏÚ3R×VÜRÐVÐêAçj†3a›à0GœÁf(_BxÄF> ñÅcÅæ•Ç„XÍ#ÅO~ºçAë"U¬ÕÙÕ–ö}£dõ[öp.tî“yN~R udÏá±Ú’áFæ9bÆ¡ÂHHR¯1h2é8åSÙídh•¾“ TŽ=í¡8øT >l9Ü”¹&áà{ã% ö…Ùi?Õth¿è £C;¤ÉœôáÕl:Þ,Ÿêãùe˜Øx Ue}ôÝ™xU Vhøô‚m"… “c~Hom7ú‰®ƒNº,­×l"”˜T±q§þ ×w­_8Ÿ'#:áu¤JÍC’ m¢«¨ÜÜàþ»{”›0TñäK|ðì+àø!0ú§o»>)*•€ã@(}‚¸ 'î×äHÜ'g¦›un,Ü5àvÊÄþí¯¨~IÆÙ˜EZ së+£Kœ/1·²ÞXurG]ºã„¯Y=%Îk»ÞP³9ê¥ÁZ®Gÿ†ºq U=1ÞÕÏ¢ôÂ@pÈÜVˆ 0+òàóý(þp»@Bb€à5š¤]ŒYSŠ«]fÝ%,Ó˜ KFÔó¬J¨C¡å3è3I1àîêNß]ª‰ñVxãÛ¿’¸*ĈÅ"ðb8Ús ø‹Š¹‹îX>ìí²*Tsw\"Òë›&|Ðz-ç^7i4j—»¹PK€·0ë=Ó1½€ N$‰1µÔ[:³**:/¢ iÄNó:¥†Ë%½mJ µý"ª‚Í«›gᚪ2˜Ð®{ë)&ôÒô› b*¦Ïkx4LinÏçǰíÏíÑÛ)Ì‹V JÂ:/>Ù‚Ær–Ü8¸7Pƒ WYN žÞÄçëñ–•ÝxŸ0‹ ˜ G}> ç¶¼¦C G¾8Áz°S‘ö±ØX³?Ì¿R/™`ªww§©ï0 ×…T.¢Mx¾ñ5}(×Èx'Ö°`tnB~™Ú¦¦ÍTûOoVžÃâær$ÉåÑ}úÔ&7›G¼õ¶”‹Aïñ{Iã¨Ä¬8Ž˜Eúƒ‘ 9ç¸ÛæuKÀ½Um, –;ZÒlµ\Žfª5ìÏøÛ#íÎu)£#/ðÃ+qsd¼4'u”«ÖíêW¯9¾èì§)sŠzZ`Ïšy3ä"xܳØ4R¯vW°è£¿ú­n",ç®øUôX„âíkèæm5¹ÔÊ#l=uáåVÄ^M)X\Î+ÉX¤™nýº¥è=@Í3>ͪIÂqᾄ ÖüÈÌãá8+Ê')5'e]šÐÚ;çKÚï™ÎxA*M"Å1 ¢'Ï{º ±…&«äËO#õâ°ÃÐÀ'%«p ìô»¿¾}3'+©‡Èf#oøœíÈßÈÊÃÖÚœl~¬/ñöL¿©æÃu§üqdï¶£+ ¶z^¡ŸË „`Ô ‘d ŽÆ…™x*ôðT²ٽ.¸óUúþ=EK,oÕEå÷ø‡‰›=+ñqƒpöŽþäbi6ËRO[“Ѝ8cX®:é3N{¿h²_Ü(œø­åµº„¼qÛc ¿C*:¦ÊdÚ\z5\+­¥‚­ÑµìÎÙTÎj*cÂçŸG‘i©ŠUײ´œG/ÖF Ï×~ÊJMVe!Ž)ýÉgc(d¥”î’}Ágë!•ÀÚ§¼L" #Ñû¥qéë#'½Ydìß\æÅ0¹ï©CRù>Jw. Ç”êªÈáa›u¼µ§–³¡»¥r± Îëy·Þýv¯úM„÷c­ý^”ïWË’îëV@ô³2%-Pµ™ Ì-fúæ£ýëâ¥Í€å³79+/WÍHx˜QÝ¢)Ôü•±ô2Û‹@ÒÛè:"6ùU-:)£ä­l4\¥ÛºñÛÁ¬oÙÝxÇŸêÍówcì£ç > mO”[åÖeQ’žîb—å¸ùÑeìvšêi&6È[ªôK^ª™ÚìE ôZ¡LŽ¿Ùq Ç]Ê`ÿú”ÞΉN;·s‚#)Ô· a=*¡,Xj°D¯†1L)ÉÌz¡ÿØeÆ`ú°59 銲wYšdi´¹ÀdçÁMî˜)6ÛM¤”ª±Ý—Kê4Wd5âìºtÿuŠñë9Í´3m¹ äë!cn¯$“j aᯪÀõBi“^–Ô5Éà•>F‹HbP×$+u#‘ܵRÖÁ¸~üHö5ÃBÞuu~ãõö¶ë T˜Ë eÅûÝS|d¿òÙäWÛý´¥IÅO— QýØŽáŽ'”dÍãTZÔºMfyBÛŒ¢fÞ7z¹o™Ñ5Û]§ñÅÍïX¶‰Æ×˜Mkžêâé3mD“|ÓÔöÑ8 `°ÌÅà½Vb¿ç~0\ÙL |È_ ‹maìÔÈ_DsÚÑĸ‘Nú~*÷‘ªPšŒïqoØ~ÙÎŽ…[´Baòâ}>B¹õæÆ˜ÎCr˜(lôÃFÎuß#cúÖ—.^olz2åöª–‰Wp@îønd –ÀH[Uß>šXÙÆd›ÖiÕºFMŒ½ØôÿÒñøK?òFÚ,O9ìU®Ï¸†!¾5ºxýlõe˜íP=îÇÁç7ÌæÊVõ{@ƒ+œqãÆÙÓê'{av=¨ùĨ%N´†kQ>´ÊžêsSAËEáab¹FcV‘=~eÖ¸&‚i:FPäÝ;Âãx¼Ã“| (ý«bPÏ=÷;åè¸ú\ñÈa/´¦|®<×Dë>!ª(s'>D³äÊ”ð_eh(¦1ÚÓ‘œ".Ög³êȾÏa­ú(ÊØ?sã¢h[ ¢ýŽ·Y|–?{O­Û3Æ+Àž ­æ„F –šíSî),r2[ ±Ý[èJHñK8ùËË!9[ ¶†ä]“  Éùv¨ýLžÞš"T¢²˜`øÀÝBwQnªT¬“$ïß%MsâtÖ½`Ýy(Êßš~+WúåAíÔz-ªü{Þg[¯EÕÏé—Aål‘ N¥4˜Ee“ùˆ®1ê&ûý‡Ù‘)½Vl8ŠäÄÑf®Ã ­Ü3©l¹2MK r=Ð…ú©´u-5ô|–.‚ ðºŸÚ»õzbðY"5o0 ‹ ‚×7@´€T¸\Òðrv;›soŸr­wùMëú éâù«×•ø^û‰Â,pT;/ö¹+Ÿ‰Ñ—ر|Œô¢,$™ƒé’:Á)Z×™¯ø#ÜfkÚµ?¨®¾O¡Ì‹.éâ|fý¢.ßaÄ-@¥`wÃÛ¯[ÜÝÔSJì¹pÉ6á,‰²‘</Uöàð¡Û… ©{†Ç•îeUÅrÅהɮ°™yÒ¤x>îÑ:’E"t ÛB¢K'B9&BѸ^ì™õ|«e¹>„ ¦ë3Uâˆk´äâÏ«”$Gá…‘R|ÜÖVsÖZºÌ-(HŸWk³¿;]îéӮݲ†Ê¹V·¼êA¼’Siµø8ˆ9DÞú È0üž@}þÌÈ({|§‚—Oöf…OŠç2izzXñGådŽâ‡ò#µju#Â׳ÕUrιqŸVÛ·ÝUäŒÃRfvÔ_Ž>„[d±A­}\• ì>令ϸÈ4”M?ÃÛ²µ¶ †Î?ÊwS¹žÛ°=Þ\šàã„9Q"Qjì͘íëÖäΟl¡R¨k%¬•›Dy#D)•]ŠŸ‘žàËÌÙúÏÂ=‹­w¾/ÌT Ê Ä ¹õyû”}ÂìœJÓ9ýŸ%î…à¼ûû:2hd—Œ ¼m’8 ÙÕÏ0ÛÂtMžU¯O‹hYö„Œ‡ à«¶üŽj‚⯘l9ˆ”¤ã±€ê%$¨hò™ªlåÎ6µiu8IýÛ&ÓТò˜ráÒRïS뉳XSd3Ú&LLiô(3”²0~å³3 4¼¯xÁ‡í.6ÂS´~±S¬y/F |W+TÏGåpÕ·Oß`ß!ÜÉŸ70` ¼XÀtt‹ta¿$@_£#Âg»”¼V*h õE¸”C"OmÐÚõã+,ßTç­μT)zJ¯þ´Œº åTgWVÏjã‚'§”©Oàë×~; HN÷Þb®—ïtm#-›¡ý4…T¼hO´S[׋–úÇ K±<\ÍaUŽÁרÄUw÷ñùsí »)!Å<‡¾ÝÆ~/¦% Îì1Œª,¶g t„våß…‚(^; f ˜[9˜¶Xeí2¥3´g¨ÉÀ¹¤¥úI‚>¸uâò³Sµ±:Gsiç£ìµÁ."ÛjE…ÃL¨Ëµ7 K“xJóV¢aCvQcq÷؈앓ÖÝi 4ìØ|¨ˆ¸Ì÷+èQµt É/Cµ¡RÄ»›?© 6\f>ˆáÇžòNéäqмêúÄΤM€œFÙ@c0}'vúã–'xç:*"\y˜oŠd–1ff—).äõAŒüлâ1UÍ‹c%"Œ]¼®Çûd‰³Î˜ËbÛ²dÖ¥—»Yû%Râ.e§âÆxÀ”ð‰C ’/Ãy—¯:{ÑKéÒØSùîŒuëNðÊ\S+˜hu{Ú²}@ Yr\èyÔB!µQµµ¡%hDnB,`¶yS}BÿÀ¼0äÇr\B°TÃx/å^ [ÆŠ€ÜØ»4Àxo§THÆÞñÂ'•·3AeB@׸ÿª­å|ÜSŸk¼kOa>:¡*X?ÎÛcÖ(ÓtçE½ƒ£$v{ô¼w€˜ã5Ü9âÏzâOo¥åï>*ŽÃ‘ßÊõ% õѶ*“™ã×Y¶L}ÁöÂ:1Å]Œf˜Ù¹Eîå/;îŸca¦&çÇz…‘¢æ|j(ðöm’–V>Qñy8e K;) TûÁ EN2Aoµr ´…"Ü-°™ç×Ö¼x)0Ø@.ž’î$ÁeqÃÕK/—ŠwJ0qÿ¾iî™ W=;%I•J ó¼—²’N4M @ë«EÇ +¯"•†íONýø<Ñ P'«Ô}®è&ø;è§‚XÂ£Š› _jÍšó²zÆ 7ßVlŸlÞK%šiÛt¥H<Ÿ¥(<‰h:ŸyO„¦º³>Òk^*I¼àî8 E.^šÛ¦,-ìTéÌUÓ'Þì¬ø:³¸`µÁÜ”Ìí-k¼kMO¸ªR¢7\‡ª$ñ¡ÞV•.Šè;˸(ÓW8Ðíq ¤—ðvNÉn †½óÜkLXeŽÁ¨Ì‡y„ýÃ…Ì}¬~µŒ²£Œë».„´ë÷ '¯žFS²«i“~ýä6“VÆŸå5YI$çõ«Z U¤k…Êb‚¹mk©Ø}ýùÄ[µßVÙØ„V=úƒø»)]Ýž~0áÍ&R Š»é«îx˪ îF=.3‚Øí˜Á+ׇ 5J ‰síQˬ-„¾û™>]i¼L?^»LµN;|ÄŸ<ðÎNòâ7ž"Aîû,vÈ+ù”$„tÆve>nõˆ\¸„çÄþºô¸Rõàqj~¿!²5Ðqë[åÂåFõã—AKÜ{`\oª’¡åU|ØA6…Üý7ׇù'ÞBÒ¼šx ÅG´¸\‡þ6G1)4•âÈœy{ôyð¦ôéå?Äø>^ªºllõ¥~Ñojz>xA»m=ÄIóÃé]F„´…™ %–ÝÂJœÏ Ÿ9¾ãpºq ÎÏn”Z§:uežêðr¥@Ím½ÕøEi#b ™Š¦mæé#6Êë´7òs5³9¡DÞ2—‡å½Ø‰Åô@f†‘îD[Y”©¯Th~ñl K9~ÔX'…Q'ŽÇ5攫ÏQ‚bÙ,âû§1X”êx£ÜþxþI3+Ô£o…bRP¦c)Ewõª¡]›Ï@Ëm·Í7%VÕ4’ißöwG·¤Zõ‹A+Lý þÛl endstream endobj 70 0 obj << /Length1 1474 /Length2 6556 /Length3 0 /Length 7538 /Filter /FlateDecode >> stream xÚtT”k×6!Ý )Â#Ò CH#ÒÒJ ÃCÌ3t ˆ„ ´( ÒÒ-ÒÒ%©”t÷7z<ïùÎûÿkýÿb­áÙ{_{ïûº÷µoŽ[:úwä­‘V0e$}GH@PPÐ4P…ÁÄp´#ìo?1‡ÌG"$ÿBÁAc|Š4¨‰DÜ!a@HLR认  ”øˆt•!îpk@Sx€DÀPÄ Hg/W¸­ÓçïO€ÊIHÜåÿÈ;Á\áPЄ í`N˜ŽPˆ# „Âah¯•à–¶C£%A ˆJéj+ËÃxÀÑv€ su‡Y¿(Z'ØjÄ€õW@iƒö€¸ÂŒÃ…!P˜7„5ÌÀtôÕ4mgâ/°Æ_~àÏåBBÿ)÷'ûW!8âw2 E:9C^p„-`w„ÚÊhO4?AXÿBQHL>Äw„Xa¿”åu†á~(¨+Ü@Áqý*ƒ¹f%„µÒÉ †@£ˆOî ƒbîÝ ôg¸¤ÂçoËް¶ùEÃÚÍdˆ€»¸ÁÔÿ`0.â|¶04 *(((`.ÌjúÕÀÀËö;(ôËáàçãŒtl04`~pæ± âЮn0?Ÿÿø·E,$XáhÀ f GÿSã†Ùüecæï ÷ bä'þúûÏ—FaÖH„£×?ðß#™<|ðÐäßÊÿ Þ¿ô|î‹wÀ¢‚€X¸‹ùðûwÿÜÀßì{u ð?§û_Õ6H@â/˜Ûû›ˆûepÿYàß´=Ãîäo*(*Åüý/Áï”ÿ›öUùÊÿ¿O¤ìæèø;ÎýàÿˆCœàŽ^=»¡1»¡‰Äl⿡ư¿Zf wsú拓Ùy„-Fçw„DEþòÃQÊpO˜µ µûKKÓÃŽ€é Qð_ï&KPð¿b˜Õƒ:`Þfd¿C0Ìfý»¯Š´þµ‚`Q1âê ñ"Æ(c‰>B˜]µ†yþ–8@ јÃѰAºÿ¬Fr Ø/ß_&FV ÄLŒåŒy?Ž0ô?^¡?Þ¿FüO®8rÿmþëˆP7W ý[K˜óÿmÿ~2`0O”xb • ±/ ©;.‘¿áqç{X„¬c7bŸÐxI‰Ñ}Y7HAúdOø]ä¸|ÓðÈ“9êupÞU•ƒ  ƒù¬or¤$ÝDEžÕ"¿ïµÌé:Jà üC½±ñ‘¥0ÂÚ–n«Zï³Çþ½!z~—ï#©«*ÒœÕEG춸* âôEE0ˆ‹ “â„Ô˧ÖÝ/•nPcGíÞëÛˆ»©¼z’ÜÞ ]è˜,àdžÏ'ßX[#sVßO]“}µÒ"Ƥn9 q,µ(1œ½äÚ¯ yÂm…êÑ—»-•¦¶4°«º»¥¦g[­Ú9‡Ûž„«0÷’m{ŽHþ­§ׂ¹o£bÞ§ˆ‰ƒloaQ®‚–ÂBe"’¶q"åÁŸ!eo©Ô}5J»cÍ P iCÉÙüÝ)4•:ú{>cBƒP¢îÈ`×h8ÿýú›‹zÁXo¢ìÇ-f‚úÑ¥†Yu­ª$·("vÎXÖoe1ûŠõoö¨HÀ3h“zÎ@u\ šÏÔ± u¬ÒMÆÎVëÓtä¨Ð^G›qw¤…JXÛ(qKø›R©»›3Wÿ4ñN^.C¦írå3?ôníü=F΄ü‡Ci–ájÄÁ¾S™(ªA¸ÍÐEÍ"s÷3³«riœ0ïóÒŸð«”DÇ´m㤫§7 K{lb"H ýú3\¢Ì¡üOï½Oð +ïkñßš•‹x ßXVÐVî~À_¾/gcß)Ó~Nœùšõ­Ñ„nŒÜ:ÖÌ !k·ð½°X[v^wŸ¥u™›ÿ»²:¬–‹ï%¿·–ÞîÕ”É#°°¢Þú\¸ÈPK¦Â2DZµžÿséIÆ0›:ë»Ô“§o ’ˆZ²©V9oÃʶnúÔ/îu©6&|ÊëÔŒ‚¸ÙûVGLÜ™xŸ£¢Öu®]N ŠˆìL. ¥˜²Ú!¬wM:¿Šâøøh&{/«v4ÌS$Øç$ÈÒ·ÝœoN<¢a÷¡(çL MçGy6H°x³a™_^§ò˜Bï`û§–—4(¡9¿8°¼¢`C¡ëÉ•~79ë¯e÷!‚CpËrò™â‡ïs|Ï¢]6w&¤R1 C“éy©šXŸ°H=Y—À…·ZŒ"“°ñ±s‹Žû ÄëmF[Ž«<.¤õìgÖ”@qVvÞepá ä•«Ü爻xKAèûî°²<Çú½—éÑ_Yçö¾Zƒq ÍÞØîµ= wvæH›ž…sÌÆ!ú¹ƒ¯‹º©ÑÍr~ýfýN(ËÆ¸¤]h–tb†×°& f=À±Ú]̓gDŽóqPß?Pû ¿è#Ù g¼åŪݜ JEž­|‘c™"¦£7‰mÐn³Vúêc´ÑÝ»ÔEv·ÓnßH&0èïÈ@“^ÓPÀf±Mþ¤§w!œ9å§ õ³lÙMŒÉºx’¬’_l ²D¸šz–KÜÆNƒÓÛûÅ ´³Ÿ¼]j#!ël<´Î0š7+ªÌ÷0Ov›7÷y¬H_ N·¥¤í ]Û×YË´Ö\âg ¶šÛÙØŠ¼;ìu©Ô ^^¦@ž„6V–¥ÛË4]y}ÐÎ`<‰4éÓëwX•bb¢’Ñrú”®·ÁUXØO‰¨¢ùöÌ6Ú¿¸Ó½-{>»>ÞÖ|i$cFjHN/îßÓ·4u˜Ú=yƆ(º,us®±FÊ~|ñAð%ßñx 2íVärA.W¬€¹4 áàÚÛ«as[-G#ɵU’éSî¬ë§¬ƒöì/Obh¦è»d¿[».Q5=ÌðnŽïUd2gcå>›)ðŠÍ—+(ž:Eb…¢CÐE",¢ÌêÌÇÇÃç.ÐìÌ\£ìWUë~ß:Ût¦ºÕ¸.õ”ì¦?uâž±0×b#n9o¾óƒ×6>wtQåÊŠ•ÀŸ'6–MÊk÷;Æ…€ â¬Ûq§ø¤kot¿F5±"3I‰°>)¢wÏV!Kê7û’$ý&(ë%@šf6µø&Ž6»ïîœ*÷ùŽ­y¡]†PÝŽŠøRЧ]}ý½6 dž4dmtŸ”ð1¤‹*ëwyµj¼à ·´%ÚÀÒýª)äsÐCK.[Ñë_ V%MK‚ì(Þ>ŒwU©¿•PãH”ޏ¶ÚaCÓV* m½ Šf‘Œý¯Øï…™‰“d¾«·\©´¯³_±clWц5Þ[ïm¦LI«6žÑè=U¾òC£Ï—MA©ÄÃïþÔöúìÕ"Á"aNç=÷§"º’nê¯<ê÷ù Ãþh$Ö›ò É$H9?™W«)ãCñÍz õ½¬y»¿¿˜ÎŸÞº»‰&¸.¦Å9GñE_‘{‡4fIF¶)`uÐ)<{Â;CKô<Œˆš)‹”üë7;ĶEq}Ï& ÷­X+Ç«ñ ûüô`1‚XV§-Ú”.„ÝJºwXÉzQ‰êUÃWŠO>ì~4}$£'LßE{j-{ëáT_ôºD­f˜n~_Èhĺ|¾›p¦…ïòþò4mñ‰1#g°ÚÎVÐ4³ÚsšüA.oM>ÐÊoŒWÒºBuc÷Ђ"«„ÊÐ!Ï<ªÂù= íÃgg$Ížoa`›«±>^évqmê-!·e^1äu^Ê-õ>\:½±¶ßsgüØÿîúv3ʃ'½k®r9uÆ7¤ Êkš½±1ù!WéiÆ ¯9Nþ±0”=Ýz’9Íñ¥ú‚{°É@.†18¹Wà:DHãš@…Geúô›ê‡ÂËÕ£Û Qw,me˜è Šlfxˆ âÊ”TBΞÑÃRÔÜ”®#å”oØ’ ‰&7£$ b^Tß ÜPyèÚÄ>šñØz»§±ÔÔ~|½^<ÎNrÝþ&œ(Uñ;”ù™¸³Àñ¦ãFq …¯£/U i~9¨ðxúµW27XÇLšhq4T:|LìhÚ¦p>8'ù.aþy*—ï!T×SÚQQlØb·bn<+ŒêL)¼¿·Lx2‰<;'“9á¸M0S4Áú)?Ðýƒì Þ[Ö>ö¹s%§Çn«¿Ñµ‹GêTÍëÁ°¹àk_½Ì„N±¸`™Ï¹——±LóÖ¨5ëÑ’Ì/žØ6Ívt¬(ó9­¹Æ Ò•åó^G£MÔo¸éáj°¦ãR®uçe·ßÁþ~-ºGlj2­Í.æ¸tÙøøƒ•Ä—êo'Zzù®!µ„‚êLs[‹uÑ?­ÄÛ 2“|"øuhÝ6$H®q°7t¤Q÷¶¢Ú7R7¤R›ò®É{;±ds2_†Z¦ÃjäÊOV†{¨p‚¿Xe3*J›¼ 8Pí;jÄu Ú%‘5I Ýe¸Ñ>Ì9φ6so0Þírɨiy s˜{kÅ> Ø®qRµòs¹¨-´ÐÓùÎ@Äfwù‡u÷8”éÌŠ Or,Ö—ŸQþd^‘ùNEE´—œíž2ól/Šr¯°kvªWüØPôqÅùIó Ïê> _ÆéËüé— É«‹j¡á(J«*2ʼn z¿neËg¸£ ËUKˆL½éà&µÃ0ç /¸¾\·¨ ,®\ßÚe÷ ¶¸"ÓM{`$=Ÿ•,‹DŸ‹r‚wvÖ3éêª÷³_6jêJêô×õ4™n6õyäÖ‚öÜïÙWËô]ÍYh$Ü Í>*ðhÕúZâ§:àÄÄIç—¾uÁ³ðð¿÷«“vïÈÆ(<‚9ÅB·²°:Ó+KÊCÙœÝúÏx§}ˆž«PÞì¢ëùy Í=…gÜ$æiUdèÊù+=sÁœÐÈ^u4õ–ÏH#…íýò3¶‘ÙÜ£-E›ã[s³2¾‘±ùºcĸ‹’ç;qÜD#ZýóT¨¢Pî,öÉ_â uHl™AÛ å2ø£{‡/-Ì ±XÒ+›¼×XãH ¶øÙò%¨ì{7§Í~ÜqEyó*€Ft¡a¶*2Ò­ëÒS´1‘üUÅÚw8¿é“•F䛫÷éçB›’d…¾Ã캻‚¼Ý {·h†—„¬øº¼¸8rB¨û8‹¼¤àsxx†þíϤòîrr‘Iñé³µ#8‹51F(Gw«oýï°qÄ»|Ë>·šÖ[pølÍ+—åäôfV# M=(!7>5ª×?…ÊGm½ã›ÁŠeÿ¬èKZw rp¾’“±Ñð¥èø6x攑iæJ–‡UU«Ójî±ÔK76ïnÚP©×•ó¡j3½ÓÁ¨v¼¼ËÊ5¾æÕ€††ðï’²òˆçSÐèD5§ÉUôpWöLÆ”A4ÿ=ƒà§R…$—GùÃŒo7K ¼?× åÎÑõ¯yÃFŽqgb¡2ÞÛ¥UËKvúÄC‘6ªS âþÈ9jÕ óTšÐøÊøbðËùrŸ³(¯U;.ƒÄ¹ÖBnTçp±ßdÕí4^ÂiâÑ»§¡2ËÏ@¾§²MÀ©ÃÝÆtM·<ä“~ÞpøÜÅe )}O0($ª¨ÞAG܆±°FV®peïÃÓà»8Pôq~¹Q½Ñ”Lvöf{ÒðDWÄØøF©†¾™h‹²Ì7žðŽ[·Çıa¾]ã½qö¥ øZE£º8Õ4Ó’Lyi¹x©qS¦†òçÑxÖÒ÷,è¿TÌmÏ…Hi¦ëõF_âh:m%~„w\Ö?/5[÷€;5¯´jtçfÎCs4«ÓdcUÕ>¸¹(f‹âR‹³µ‡ÛX ¬ëÓªÛªý„6áqfÔ¤lOç±GE_òI( |¥´ôTþ¡P±­]ó8´|„¦hè˜l÷+–í‰Ì3éí{så` ‘óF܆‘\Žy”øÜuá§MÛ…¯s¤½ª<×­¿ŸT=Ëàö¼@¹ZöÕ«ÖóÑÇ\3Pü1ßg#&oÆê’{×`ÚÍcA‰ 2rÊ‹s·RÆïë]fc™ûÏ^lÖÁtu5î®oÑLÔîÞœ§°2̲)bbGŽU[žÈs¬þ¬A?R5Ë™(Í—¸#&·:ò¥÷uD­ë!WÂYÄO¢ŠÏÕ(á'àŠ–ÉÙ²§CábþÊXƒå[™øòÍ.º®O.ñ#ŽnD×½ËØ`,ð]^êX =0nU£3¡ºÛoè_ÿáÀ¢Oo‹ë³å.δÒ{7ÕŽLÕ-Ž~ë+¼IÀ > kE~ÚÜuÝ ødÉ·Š|„laÀÇRñöfoퟌ‰,}­dpúMËûŠ!Ù¼÷³ÞÃ0[vÙiWÊ ùõãûO½õ«°ákÓIO½‚ñ µ‰µ¥«È¥9á¾×èܼZÛÁwÔq*~BU‰¿5Uà|ÁïÐÂ,2J׋ÊÅþ"Ùî©•ò1~5Xݾ}JLë†öà®<’ï>k§)«XìÉ^[ —­í˜ ¥9æWþ†Øó2³Qµ¸0—Ò"÷R5ŒÅÍÜfãa¹BWão äwæ7ÝêO{„{¾‰g¼é°Fꥰ?Cª`å9ÐÀð„²ª6Yªt1á.Cs\|ÖRÚ•úº¾Ðný«¥‰Þ3ÆM¨wÝñýÖŠ%x„&ª§Ô©¦ÖSi±ö <žÓˆ .G«6@];÷´ØIïºéŒš¨3œVÛ_TvÀöÞÃ)Ñ¥>¦Á‰‹…걪8Á®Šòkâ÷ÈÏË»HŸ–ð“»$ÊwµÄMã(®‡×¬ŠhÝ/p#ÜmZôBS x›9¿¯ùœÏ–( ×Ò;X< švœ~ì8Ùº|‰:\Ïÿ…±Çý[ïöcÎfâ|j¢ÍTÝi¦Ëê¥ Ù:_±îÏ=×bdhžÆ£®ÙÙM íŸáÁo;ñy”öÓPì’Oƒ£wFæ¢äxÃY[îÞLåæWè‚* jÊã×](Q.–ÓkPq‚¤â5OÃ瘾¿‘ó"õ:_· ö°1¤×xù˜J÷(ëE¨áô±"ØÔêDÍ'>5ºòŽôö-cFŽÍ*'y­žº@ùýÅÜ‹G#5¦´wr²Ž¼¼×ãanÒÁÆc±K›tÖÙq)i³”\`$OÝd½*§“G<Æ •lŠyqØÊrH°¥Aü@¸°¬'á…ÛÝÛ*7·¯Ydö|>$k%T¦ö>Vû©’ôÛþ‚öƒ¼í£¬ÃòËå(פá!EÜpÉÐNq‡šK°Ü3ƒäk›ü§º9—‰ÔjÎVCÊï+­â=hàt­{dED÷¥D[¿CjØßEYúùöqN!šÄøi4¹ÁZ£3ËJ°#±»‘*òõ7»öGcÛezÁ×äv²¼Ã*$Ê/&}¤¸`ŽjP'€Š?uü™Xæh2çB¦’SÒ‚ñZ”€žÊâU¯|(¬¬ «³=kœl|Ó—X]*©” ("“Åõ|Yqvë„63º“”ŒD³Wþ yXªøh¼3ÂÜêjQ˜¬!žz†âá1§É›¾v?ÌOü™*D«×>~p÷3´'vu2¿ˆ©^aµa,q5·›èáò øªÙX…ødØõ‘*e„™‰?Fð§øŠ›±+¤óÓ×ÝÁ6êbãÕ Ê~4\ÕÙ•d_üײBî|ê%AZ¶Nh„‰BHí›Ý=%ÅIÊ–é¯[Lúú}XH&´¶U8QékÐÄÙþY êó`ûA{käa%ºPN!§\ÇF™>÷ðu7Ñ´d#‘[áÖø,¶¢Uó!sO ¾R¾'Ó„=ÇFõàÃö–-uã‹X¡Ý”¨o‰Ë ‡è{ 颻'Ò­ºÉ¨>n€ïer˜«ØÍÐâE4¯­õãmÕæ=©÷’k[ NªÉŒ•…kßgÞhqŠ»"ïç>ÃVôi›,e|Â`>ˆµô&€J–\uhM¹Ú6©¥H«°ýmÎºŠŠÜ^ ©L`( Ãé/~D-./¯þHÓîF¢“Ò‘Š³É›áôÃÅt ©Z¦%·›ô ´g#I]Y‘ébPRzšlêUCJÜ¥MÇ +3Y_Ë«sæ×=]ʨe•£JÅÉá4Ÿ%ïtº:iç#7$·Dé‘Ps&ççõ¬Ó‘‡ iíµH,­œo^]ë°Þ6þѤGíLvÿR)Üê© y—)eíGZìö™€Ã'ÜŽ×Þ<}ÓŽ¾O»ušxÿ{û3x/«ìFørï»ñÈûšÛÙ9_½)ž+›„­‡¹ÙzK“+Lн½‹›Ú¬üaF†BÂìÍ2¿_Ÿ·§änÞÕ‹3™ê™õéøø¦é\4»²¨s¶Sôqlv^Û¨mMJ´.U®ä˜ö«(bÛ¾:·RžŠ±ü$ïë4Kz‡¶áå$z÷»œ"V¹+u² º5ýoìG÷ãÏ<œ=?™ìˆÄ2PÓëÝt”ø¶ë_O®aq~Áß]óÒmÀ±y¥M!‘M±\i×ܺˆþ¾¹qi‘<¾(„/aÞ‡ëC­äu¹ùIVt¤•YG»Hì]uÃbÒc&<ï‡ãˆ•KžAíÐ÷ÔùÐ>žèuÃ`gɷ׬£<½ðæs 2åêq˜V²¶{{¦¸ÊAj:ŽmÍX ¯Ë¡®m›OTÌ˶5—l)®•«%Ê[XiÓÖ·#±ÎôûU¦‚n:ëúµl3~}ChÌk©É~‘mð'0Ññä[{ 2Š–“Jç¬éô/7k)¥‹ɆJY%•õÄp¶•2§*ìû,n‚G¸äÍùG+~£DYÛQ†c‘v(Ù†|#‡v†‚ë8­< Gc<­9ãÕ wIå:64'ÌìÞt·w(€?tÃbÜHµG•*<Ôšl™Ç`3a`A*Ó çÕ.î!îÏY,Î<:/7NÌ9²Žq™Ç%W úo ’‡qÄ;îÿ˜y%þÑìÜ w:U1G*|.îc ËÁÁ :ÂBd±Zl„‹ NxïFªó®àiûljH,;Ê*#´ó³Êoš„Jˆ§jÍÆ®PïcÙÝÐøð€méê5º¯ïñ„¢°Y.ÊWCßçÚU>Þ5øH=Ä-eÁ8˜´Uû¹õˆß_º¯$¥‡îܰ² È~äÃçÜ’ºD[6›áÔ,‘,ˆû€ËÆ$•¶p39ã£ß1Ï CÖS+•Ê`šè ^É÷½Zç/tì´ºÛ]]áöµÂ9ÌT×½õ[¡J/Ø>ÉÆO¡»-ZnÇß4ã|ÝÊu9xÃKà8¬ˆ|6І˜â¡êTÊ€Ž¹J¹h³?÷–”)•á> ¼Ý¶¡@IÆÅõÚs£„¸‰´¥Øáõ3“oÊÌ^ âo'ˆ}ï¡# wŸli,uožÊ®*Ýè›Õÿf@›üÖìŠzÒëþ›#³‘'Œ«4ÆZÏÁj¥ZF¤öÑ߉ri{óYRÄdá<ÓWŠþG “‰E5ü½j“ñ¹lL—Í«­èÕA·ü.SZ'ó$hf¥Ä+MRkîg‘Ÿ±|Š ¿î…M°•¼å@,$š="= Ö« ÷Äy»©¼ˆø‹±1 endstream endobj 72 0 obj << /Length1 1824 /Length2 11140 /Length3 0 /Length 12282 /Filter /FlateDecode >> stream xÚôPÚÒ Á‚,¸»»»·aw÷àîwîww  î#÷žs¿ÿ¯z¯¦jfVÛîջצ&WÕ`3ƒ˜‚¥!ö.Ll̬ü %MM6V++3++;25µ¦•‹-ø?vdj-°“³Äžÿ_N` Ë«Mèò¨±È»ÚØ8lÜül<ü¬¬vVV¾ÿBœø’@7+3€3@bvF¦–€8x:YYXº¼žóŸ¿Z€‡ñÏt€˜ØÉ ´(],Áv¯'‚€¶ È ìâù?%h-]\øYXÜÝÝ™vÎÌ' a:F€»•‹%@ì vr›þ  PÚÿ¦ÆŒL д´rþË¡1wq:¯[+ØÞù5ÅÕÞ ìx= !§PqÛÿ¬øW#àïáØ˜Ùþ[îïì? YÙÿ™  v@{O+{ €¹•- "­ÈìâáÂÚ›ý´u†¼æÝ€V¶@Ó×€?[¤ÅÔÀW†ós9Y9¸83;[ÙþÁ‘å2¯c–²7“€ØÙí]œ‘ÿèOÒÊ z»'Ëß—kcq·÷þ2·²73ÿƒ†™«Ë{+GW°œäß1¯&äl`+++/;ì{€,Yþ8@ÓÓü§“íó+_oˆÀü•Ø×Êüúƒìí t\œ\Á¾Þÿvü/Bfc˜Y\¦` +{䪿šÁæá×ûw²òè³¾®€õÏÿ¾n˜ÄÞÖóŸð?¯˜EMSZMAŽáoÊÿuŠ‹C<ÞLœ&v€›àû¿UþËÿ?Üÿ´ª­þîí_õäìÍ!¾¿(¼Îî?4ÜþÞ Ú¿ECøß”!¯Û Ðþ³ü¬\¬ ×/¶ÿÏø3åÿßæÿQåÿuùÿoGÒ®¶¶úiÿ øÿñí¬l=ÿŽxÝfW—We(A^õaÿCµÁÉY lfåj÷½r.ÀW…ˆÙ[ØþwVÎÒV`3U+åŸóŸkx­nkeV…8[ýñÞ˜ØXYÿïUr ›×7Åùõ²þt_õ¿'JÙƒ fH‹trz"³¾î;À›íU£f`?WÀÂlqyM¼²ó˜Cœÿ¸Rn.‹Ø¦¿7€EüÄ`‘øñX$ÿ‹ø^}À€ÅÔ ²¿¾®æ.ÿØ9þkÿkþëà°€þ‹89_Ñ«Æÿ)Èöªð¿àk!‹Á×^lÿ_«Ùý_%Ábÿ/øZ òÏY¯±¯Ïô¿Üì‡ܯ¹¯/¥ýÿðàdûÛú¿,8^ûvt…¸€ÍLÿÕ Û«Õé_ðuÂÎÿ‚¯#þ§Â«"X\,Àÿîçu²®ÿ‚¯TÝþiäyþ¢ó?‹ruzíÏåO­¾nÉðŸ2ì!¯.A@!Öõ!÷µbDîL{SBóÔ{ÚétLÞ«N_\ÐRèj²ƒ6~Š¥Œöa®ïJÑÞŠ®‘ýö>ikDoORëxôy2NPŸÝë@^™Áš.:k$A"fÒÝ÷ùíè£hó¦ º[ž:ÏÑ•]µàí½û€ŒGÃ`Å׉°¥=µýn”§Š9¦˜Ñ¥ Ôù¦9‹ð.L$ˆôØ— ·?ç±s§_Èä}Oc8нõ¶Øc-zmTi²;÷R꼹ޘ}ï-~˜*¿ì]V½)´ü‰•ŽjsbÌg¼›üŒ__QŸÕÖi•Of‚Ê·£%P§){OÃľÞá}™€ÁÜÝ]Z¦@¥µdÀh$é.‰ÁLÉ-AÙÓ{{öV÷äVáä¬~ZßkLß| yw½E|Còw¸£/Ž<ñÍ>oO‘uV9Uw¿õô©Ã¼Ç¾‡Æ—¡J©sWtd„¢” Ì·E™Í<Ô£ ·uo9 jø:L¡ zéôG פ?|ev¼Úæ<ËŸÐKçUxôrw'nò´Mž.‘ã2Ån!³%œéáVÁ gD2&ñä-V(ÔñßSŠÊ5û,:Û!} =©~p×k\‘ÿh†EiÁPÿp"Ôr(| » —ôomIÓ&ŽT¾Å‰”åÒeYÛÔ«*:,ÊL‚Æ#’š,ÖŸzŸ#‡ÒÇy¸x÷-ú;|*¥ƒyK„²~u65žøÓèØutŸˆ…z†ByƒáÇÉxAyÕ ÖžŒ¸ªb¡ÛŠý âþ¤UÃZJ¿ô ½ù^½Ï1‘šèúðºá@í÷’ú óGPYï±›öÚ(øˆ;BU}ùv%lv÷Ïo—¬™OÅä­Ë’5mØïÇß¹ÇÎ+µÌÓ{ص.âíë~NÙ>]GcvÚ{[ï`îÍ*ÙãÃ-Zy{”#`xÌRÓeé3=Ã|_ª.ûm´Vaá]¶íO£õ÷ÚëøQÃÞ¤-—¿í¤Þm\T’ä4¦u­-fŒrÄK+øÉá…óˆâiòˆ­+=ª¨¢G2 ÄnÄGËŽ1X…éÔ}ð­O¼ÿ„³o=¨«s+µìZIÖYÈ5Üáð5^\®³d;?R€÷TžÇã ö%†“-›±°Èy骊æ®û¥?5óÓ^{§¾ËÌÜèXêZatc¶ˆåMFd«iöö3ý* U²ÙP±I$@554ë# &EPÞU9]l¹Ï‡Ù‹¡ò“hs|ø_•o%›Š\î1ÌÒúJ󄪲²¹&tú35[óôRŸX‰¾¤áí¼Á¢#„ž×dšqŒx÷a}Fú¨î.¾-ÙEj:h®e£@m¶ Ÿ°¿°^ÚH]$•)'%纯Ä/Á(›ü1†žÍÂý'Ÿ“¥$/·•£[´rÇ –Çë+Ðëx–øˆîc óVÆåÀ() ]šö‘Š»c®i¿½uûΗEø%Îa¼;jÌÓýÄ!G€i®œaxvd¯gk=ìÄw4ó¥üòõ㨤½ã«’Ç2s‹Sên‡üGA«+2RZïò¸Åúqt÷Êg} p ¯äËÕø,ÑNûôTϾ/étu€øbd>¦=áì­lpoÚ¹^I.<ÊÉê MJ|u:´Š÷¬túÇ~àv–öHàãý´×Fv‘ªØÂCžÖò˜×ÆXab,œÀ„ÃH9WÕ ùý»ÚÚÝÞãªÃ;uõ¬ ‰b X£®ß|”7bgÛ "Ãâ'TëÃtÇ¢‰õü¥´Ú4ûŒo¡žÅe*P ™œ'4óÃRñt­`1BÄmrÞ”¼ÇôŸª”¢Èr½êXÕÝz(7¹Æš52!…j¤M©ž§·Ëx AQ ÁPØ™G£ÎÅÊ–ÚRUfäW:ôŽÔàaWGå6ÈÝaº\4ÂÓ‰¡ øzxë/Çìh™Þw§K”{ýh¬(sŸXUþüÁa²Ô¤ºúf'S‰¯þ»1Ž¼Åœ©;ùNêD§ó@à˜æ\2TµdÏÓ Q~mGrC«¡|÷Ž$“—ârX„hš½>“-K#ø>TMÍ8¹J{Ù`ÛïÍX_&¯cïúóL°7~.í¦ü\ÞД‘:Dl¢Ó ÁVê²µíÿ¬ü˜÷¡{¶ªŒåTåN™Úäý)±w- ?³Ä©Õ¤_A·‡ì Ó[·©§Nc.Òˆ½¸¼Õö§ÈÌÆ›O¥f;¶\4¦ã¦ŽŒ©²?™*Iµ‡¼ƒÛHÊÊöwz2×pŽ®“¤-ÃuKJÉ0]7½G f,o`˜ g~ô_R±·Û»0ƺÁ8÷ãMÈlçõ¾Œ¨SÚÔ o±w3ÎJ»$&",ÔOM㾄˜>Ø×ÙØPØeFsk¥´klÝn¹JÐ:O+bÖñäZ°?‚m¸„އÞgéæŸZ‘®ºÿ÷Á/#È s“¨‰R{íJÃÖ}‹92‘Þ‘GP!ï©|öÊî/”b¦ã-Ëv1aH›‚¯'#~®F öÂ1Ù'÷yö¯Òž4;ø€‹@Çì"Gl阰üAJÏú&Ïñ< ½. Fø DwøÒ ÇÙHÜÆ@ŸŠK³>‡OÌ%—ë›mC+Ï+¼›)ÚéÄŽ’Šƒ_:c½×ÏLêq’FÌÜ“‰|–CÐdä_¼XZ²eiºô¨B>®Be¬(MñÆmÅÆ éaNDÄB! òlz×(:|Ãê¿Ó¢£~‹½}h3¶Îrš¡ )z’°÷ånÑ{q©õîpÂïý ÷Â'U‘»´ óyÛ5“oMxËBèØ5ÉT´íw„§ê“mÎG¶\%Ò£sÅì:"îa.c*õÄì®-ðšaìAÂ/W´±QhòFà3G´°xb„¶=ò©|ßI0G€®4¤/\ úù‘¤Ûr½Yø”çÃ)èȲ¿¡Ц'ܾUc&cŠ-:ó DûÛPå3BÙê‹Ö:jyº²+<ßË'V”§ ílßóæ&ZY Z_O$Eµ×Ø:D¥Ï8Ù§ ¤÷Lì%^´,Ú¢ F¶ÑõkKXöHÝ#2‰?¦˜ÂM~EÐí ½8Ï^Âÿx¤Yb!Þh ûv5†ïÃoécù l}Ã>”5¸1‡)Ëè•Þ¼©žÄ²«°0¼Ó‹I^ùߺÃD`’ðŸøI¢>ß>äk¿POè$‡ÜÂR­„ó㛎ò9ì6J™eŠO‘.É«ÓBsë3iÒŸq’gÇÌzêB™Ð(5ý¦}ƒRXs6¦ô¶RUŒrÈQ½k@jøŰŒ]1à8lŠõJÄ’Ž÷ý.‹8Ó<øgj9~;kDÓ¥ f‹’à`ÔVh¯/l›TÜT¸-¾Ú‚›lÖ{V;<Ü¿©º8ëÀе €ƒrÅ=F·©|MWµCHÿƵЕ/I“Tãxí®ÆØø$+sRwM,Û7:³G¼¨`Êcr𓪆øØ_F›®ÚðÔ¡»ŸSžSÚåÞ0&SŒˆdå$þÜ5ÏžyZæõYÿ*3ýéÛÆ…@»,*²ýÐ6<ˆ=b³ÆƒLg '\„ w«-uÏ…’´ O„ºmö.Å"$R£¬ï•™ ž„ õŒmZÒ¥=Hž¢¾±fzE 8U áv»õr-Š5 FŠD²òh m˜8}Å~ïÔs@Œ†.wz G·Öf,Œ…ˆÆ¦q¬awE°§KujBWÔW};;@°Ì‰wÞ‚eˆr¯Žm8#-÷YÓÆã2ËÚÂô“l’"3-?rïÎEe61sô Lu‘ƒcwÅ0ž•°Ñ‘—ãš·Qâ$ÈÐ)k‡ò¹%¬©í6ä[•‹l’æºÄïée@ŠŠÀŒãN !ï/*ÏÖñˆ¢Z€·yOs @ú~Зþ6˜ú}:öCŃ‹™s^–´²¨¹#³ô1ˆKÆoÒ¥¯õpÌE²`VIŒ ¹khêìEÓ=¿7 Ôk¬Èæ$`@þ SÂåº)$OªyýP$ Í[¦»Ý‚gßúvfÚû©Ž)£óþñ“ËËœ¯êÓi²ËnA©¼GC ïòȼ:ñ×mf|ï1×}Ü"²¦Òê£6ŽÞˆ¸§Pž>ƒE'û 0ey²¦ãç¨éëŒßyÒÕ6Uõ( p×]*ÖÝi_Þ}Þ\ÛghDп[œq.WZÔJ‹¢«¸OOýÑ»…P!¥«u5žÅÛxÚÃÖûÞŒR^‘ Oä­RãˆÈ[ŠÁ,ÓÒ µ^tâ‹®6sPËÌ|®Sã—A [¿˜‹´.Ý…i¡@½+Ã3dш¢c®EYç­ ÇÛuÜ¡c–ëö¨ -â ×}‹ïþÉ¿ó£–Î1}i8mSf’÷DÕt«Èm¶ñfM³xÇÁzy2™9Mx ™å™ {Àæ‘ßœ]ººYžï¹kÔÈ)ߥÉ}GäåMØvbÚT<²Q5Eô „ZAfͯëë¿/™ô"Ú•›¯&AÓ nR¯ šg,& *;eÉ;‡*:Ý |/•ÏÛÛ1ü¤„äþá.û”3mem€1{˪$\×d³¼b¨Ëãx£”PDß’ã×NÔãµÞ.øÍ3ðþČhXšnaQ®¤aûø¦kNØ÷£¯Ê¡³¦i“Öb›_&–1G¤VAã9a|#§úE ^QýLÓñå6::Z9$L>-V»÷}7n›¶í¯ãYE¤QÑýð)3•þÂý±Gí¨0`Â5aÍz5þ'~g|j7Rz %Á xÒtÏ£åk>e9¸ô!®ËÅ &ƒ¤È_ßIMp{k,TìixqGŸF*ª?“ã¿“Z£ yeÄï†eùÓþê lˆËæ«~òü¢ÈŸ2 МM¥P#Jvw˜²ÎÂMZ´Ôa»k ¹-›k4*qÄœ¦½øáÿÐË%ÓƒæÅ4ŽN¡‘#™¥1ØVjRx“Zq×»9i©|Å+C„Ž7‡O=È ª° Þ´`ÉðèȯUž=šÿÀ.rm!qŽ£X‰Cé€ì«+‡  ôk0‚±kþN,ýB]u‚ AÕÆJðN[z/©(mëÄ$ÂeJ%"Qu(Óv"7½«&Ê$)õˆøÚ^žrj½kršáËÙ³âec²NcÚÚ·_’É@eø=a` ¶S'çrÒ¢(á/³®Š´Þä·.œ˜ãöl.0¹:C HHÕ æÅ¹ò«N/ÉsæÂŒ]T@æW©êÅãÃlYŸj¤¾ÚºðåíH7Bwéåý8IcéÞAmOÇF…íúm=ѯŒ]ÀÈ]Ùuˆ7:Þ¯ÈýKpÑyo79t¢¸®¦f:,ü|/žf¾&0}*"("·rÆ7kÁ"·¤cáùR§Ä˜Á%™-ŸNl Ý{³ìþb¼\›—PYæ¥J¯6^ž¦±¬¾gFOv`«|†¿gúÖz4¼Æý‹«ñ`ébÖMŽbãn»~¡7,‡›þjW7 ®æ7;ÈW4rHʰ;"£o­+®2èÇbO2çë>5ç‹aÏ’Ì8ìt”s¿—I–à[²s‚óéçqªÇþ!ó‹š?üZÞé¹Yðm¥…ŒQß@cƒ_‡ê¼Q€ÂηBüÞ-ÝÝPÉñ$ŠûÖd*óÒ´µÌM_¬¶DñïÈާlšÍP°Ï­_®Ç=ŸtWâüX Çyâ"=ÙjÑ ™OÙ‹$1”/¨ÃÕ ´ï<ù]>À¤çÓÜ‹G%1¢?Kj¹ ¾ F™£¸ƒz¬ßêxÇá#–à%½­ËùSaEƒXv,]~»ôÓß uv©©~7–ŠHÿÕ n®º{øfÛ°T5W¡Å'í=ŸÅÏrÜç10É:04f‘‡ ¿nœ}Ù£ ½ÕÄèÜßÉ» èlÅâZq¸F«csÀhf9r%˜úú<$ ±?öðšŠù†æf¼+VÔYPá>xdÁ¤1á'›^¸úÓØÝ˜PFÚ{Åk-Mu+Øò2¡dâé+s\’?&BJ\‡ûö#5ó…g[…œW|ìK¬-ô(ó:* ä–t¯iÑ5 Y¡%DCd’UO°‚¤óZÉèD f{é"MP' V@3òÞj `@"GïÚ´“is‹ñ´`å.m¤ e;*93¨OUÉ5£j8cŠËi¶D/.¸]c¯‚›òÉÔ;lÜl©|ª­îNY.¿ «y@Í:AveÔ"2ܼ®²ƒ/Á«Wœq&eÃàrÓ»ôv‘J-š Ç%.)jýö$Òp>t‡_”Òž„ÄMÁÇÏÉ·¬sN™DÎYSŸ÷a„úæ<ÇPõŒÉ™Jبj¹“¿)aaÉ1 ?ã-&ËC±…›QfcËó¿Ï‹{JY˜´ˆÝlÑwˆcA3”Uã®KkÛ›…)ùN«ëºf˜ª¾i ªvË<‰[(ÙpéA 8߉Ër‚çÌóÂÞøáožÉô /<­4LF0æbæU¥ïZØŒÂHñ¾my“ž»bŒPf1q€/Å8˜Ú9bg·zSöà2ŽDË¢? ºë# Q² etâÞ]Ô¹E Ñne„é”ˆŠ„‚RÁûùQíô£®IÙ‰¼±xÍ©eé‚ãÕÑ[^TrQæëéa¢núnE¥»ªá‹ƒ,Óîä%Â4 ·)D!Knß~öC¤•È}Ñ‚äš#±w1Æ'A½Ë‘Dë²’æ¡cZãa "·¤e0€ðÕÐjIÓb$*FßxS¯ÉøÔ:Œøsás2WQM2¯;†R5ƒ¿[4räEÈ›ÖùŠ‹rÿí$`‰žÀ´.j¬Iƒê]ÝÔ8æú⢜ÂÔyËÊQ˜qàžýIYÇ~_4xf‚¶¸ÎbhòX‚Û ¢:UÿÕò’Ûô¼^õW“KófGžd]ÁQdÎŽ¬œØÄÏ!!/ ‚9æF!è7Ò &Â'Ô½Lœ'ñÆyxPïˆlþùÞWqßÞ5§ÄŸ ˜ók®–þÄsq¨éq•ËÏÊx¶cæfßÑ¥áù^ÐìS÷÷JAÁ,·Ó»õÖM¼ ¯¥›pÁ”I¨«Ô‘™Â (¾ 'øoMÙ¦A.ÍcéTžG3KùZ§CíT‚¾¥¹áÂ]Ö7Ÿ°nýÉT‹Ä[´éIô$F‡²"U>k °6,ãðÛƒ¦–zÚá÷4B긦Rî˜|y>!. á­2õfÑã·ÊI|Žófi ‹LßÔë_:LGAÍ;-êTïvã¡ö¤¿¯:1„–^ØQÆqB§$ƒ4$6o[`Ö•Ýhª'f­ e1d•¤"/«Á6¡é,K;ˆ¨|Ôbø¹ÑgåÈû´»6ƒíE 7 ¾ßñU–bÊ–ÙEšmM»b) s —÷«ÇÉ’ÃK~‡]—èð,¶zù‰$1Ø|تèb•Mj¨¬lÃ"0‡ª2}~¹¹s•ÿùb9þ`ó)Ô°q\䪱9EnxÒB¸!Ç;YGÄLY‹ÍÇ&¹hs §ÒZ›Ïß”Þ1XH«:+ÅOÜÿ»µ'«34ÃìÓÑÿ«® [‡gŒ¶Þ_ŽOÄ­Ý`'½—:«ì^Ød²"ÓyV$4wZJSÄåKõ®\œMyŽÞKÄ:ï¥î+”h•Ž[=RÁR¨¯,ãØ|iÙ»9ô¸Isö89ßÍ´ª.¶H×”ë>ºï´PQY°‡ÀAˆ«Z²ªõ(š¹{þµ…)u]Vß¾J5‹ÚùÇ¥9I÷Šà$#o ´á>ËŸÝ®z¢wÊDp 1–4ýÅÁù©qüd“8y>).Œ¹`(A2ÎIKõM¹5@H«Š#¤®G,òK£4•€S$•Æ•±_»ì# ‘‘ oЬÏ$ŠF_6‚׺«qpfƒ ×­Œ kÙé™­.§Ï[ "9ˆn©<òò²U?¬écš‚Õ€FÔ§ž OqXªÝùe!?Ä¿}Þ.Š0¾œ}7¼©6T•¶•/&yÓYÚÍÄô›Šîò33îÝô^”Â1a`i@Í]çW¢õÛn<5•¯›‘Â/êàßoÝ Ó…q™.Ö6HâàHÓUÄê†ír$ãI¯jôLŒœL &­M[ ~ ]*ç·E—§?hcmއ+,è¥0¾¼VúèÝíM¬Tp÷mryW†ÚMo;ÑÜô)™Ýôzÿ¢ž²Þï²æÖ3Ï´—4¾ø|¦B⋵Zäñê‘8å”rM>èÎ(6Z^™ù“¨÷£W1®’hù!Œ½ËV›„Ž“íÇϤ‚¶ê; Þ†9eå|éé ÚîO5ÚˆdÚ_-+û°â›€ïZS+1‰c»¿çm3Oˆ‚] LåIì¿Ñ7É!xÑ18ŸZ÷Ýy%u<¾ ú "LÏ‹üVßD¶ê“ì/X#?†up:œ‹´îá"AûÉ> £—¦!žc3qg:" |¶N2À¢ð×EJ…úÓ î²Xݨïë³g¬µ¥ÆÂ¨§ŸŒ†äC(‹ùö¬¼ý×à¤ò™KÚ«,ËÜksê õ"£)Ö¨1ú—>>¿… £ïÃ/r÷®^AYÂx¿£©È‡%âõ«'E†E êÂ>KB¶Hë’„…Ð¥• è4e •‚möô«†yЇñQÀ 5k„ÐY*,–{ø$ƒ*5Ï^äë8J® \{|µöóç6¹ƒ/Ñ€O ¹ßæäl ’Eð­ hGuQŸqÊß¾b«ß ‘[!2n|·¨s1®Ü7Í“}xFr»q™e‹MAò«™üȼiánŽõ°}j(Q¡š¦dKïå– ¨!6 ä9™ j^øho×£Þ™m9'$ ]†æLºÖ½½¤”Ú,‘,•e~^æItô—0Œ¥£“cu±,qÜSmW7n7­þë÷Wtõ‚…óR;Ç /kÅá¾`f–Ñ6¾©šMÜ-¢‡šp:ü,Jûˆ}LŽþÞ_§‚[ùù/ŸòÇɯÜ5ïØ`˜–ÆîŒr¸²Kù9Q)&Ö'ˆ/¶ö¬ù;ÌSIà…gÈvð‡ž£h‹Ö±Ë;~%ë{#؇}eÉ7éÉëhò3Îe½Ýí{VõªfxaiZž6¸öXF>´½ĵ^ÕÉ{Ç=WÈü"d×^g1Oíeч³Ûüh¶e7y³@@`BWÅL›}eÓeˆº—ýû#¢(–Ñ>JphС•¾dœù‡¶‘Vüߣ±Ô]Ê‚÷Iª}¦ðE¿À¹O®ˆÝÚìg’v3‡ƒÌXµáëk5âRë£~àz2÷ö…ªZ¿»‘é°ÒÃ{·Yƒ"QâzsO¼Ók­¾Ðú{F™OÕ;¼³ÁÿSYð}û<ä·EQ¹ˆ^<ZÏ|ýPUrޏé¾ÑX;9B“[ÿ#DѪ?CfÜØÔ‚€E…m–`Nl×ÍAI^ƒ'Ù-T³”²“@6MIdþ0¹¹WhÎY Ùƒ÷Дφ~fŠÏÑv&VzÆÝ´_A/ 7ü¬™Y*ºl?Fôð¦_ÀB"•ëÚ¶Æ÷zÖžÕ'¦ò•;ŸŽ"ê 3¿©|£AEz})N!š\˳դòžòÂVÁˆL‡†} zé²Q¡1δyÿÎ!èŒø½ïÕ2wÛw”Ž1eL ¹øv¯æ %¬rõƒámÜ[Ôm0YÚ—pÀ,:ä£pÏHšï<ýt°Û Ä9ïƒë]†?=ž ,C/`¾«ž}´«úaе4Õ,´ß«é~ëG4‚Z~NpÈc¸ƒZoåRç§ÓÅëÚ*zˆBS7 ù´ÊíôßÕhdìI=x µ‚?n@ýY6Xb”R¥W'zä¦Àˆ›yGëg yCŸ© ŠîG.^¼? ¯Æ×µwƒ¦Cî„••]‚¤d#žeåo Ÿƒ[AaŸ'“G¡“9‰«_ãÎM«†BX /J°¾/b ï-?fúá`wJ|«B– ¡ú¬>͇†,)êÛ_ƒéi¦zY²–Ìžôp¥®y><™rÍMŠ Ñ­Mèü|>ðC¢ôi²f&9Ú…>#ßιL‘Àœ¡êp^º°ƒþy¡«`e’AØ,¶ÁO>ì ä4éFðT»j„SÎ ÚÛë8›]pËmŒÛ´)ÅÕIV95 /Nƒß+0GJÜÛ©0¶ÓiE®é7”Ðm!øá<ôL’-Ñ-y¢z¾ÃØïz+JF¬Ç㎃;rYPìÈ7CH22¹ áTêäöRÛÉÊ*€€µH]&‡4+홤yú« HÁêû÷¬<ã€äüCîX»c€€yÉi&›-ÀD0ä´À/Iîyø&5„%lE+ŒTJLofçY,à,Íþ÷ÙfËÏû éZù›‹ ?âJÓtOVxØv‚*:À¬5Ccí–ýgæõ<ͽ8<ë{Kñ¦®4A/’>ž[\TéŠ Ú‹ÆâLvÔê¤z¾\_RÝÑAª¢£mÞsb7Úbï0—îJ¦Húc{AšBÜü%ì$õv-! p®ðÜß^ š-¸cXщP®Q‡ ë˜°Š„VxY§ò]"¸r•³åí"]8®O6!¢È@Ùø÷ X­ú2×e½§G®yû5rœºëûÂõR'å³²ZntÎê ÿa”Lè?LlqÔ¦2€M÷º^Éø2v^FÍ ÷—Úè.Ã;,üþQì¼íÀÊ^ÉÌÛMÅx&ù²A8BZÏ||©o(ï"íùtË$6÷Ã÷U»ÛÊs¶µ±E>ï+,H)… ÙÐ¥÷ 1A º mªªJw§Ýh^‚N¬r0]#ú©=§F>½«MŸ­ô`Œ,$ÁÁvƒ¼Ó(3¨,®ËeàÅ:<¹Lœ#vÚ_àž¥:¬S}©7Ÿí{nmíi‘ö¿D3³Ž×åî´ü¢›˜2gç¹Û¯ù*De>-À볓$7Å6OaǤÇôÌ¥?ÒÍž!_¦äíÙÉh“TÑ_+Z‰jqÙŠã$z~òmí÷U`†9VxžëÖevC“!ö'b^oãZ\[„¾¶ ×þïQŸòPC„ÌpG 3bFhUcáîk9”„œ{"ÝÓ,Û ³§TF"o­Âïë´…Ö¥¥wî„ë°œ.|Q#3Š.´jQ¿g”pU­®Õ™ÓJUÊ 6‚>ÖHKg/šøïT¹H ¼AÜ€ ‹æ¢·©æ¦Pk§þô®¤úíf¨ñ[ Çó%wsSSXÁúäþ^ÃX³ÌÛy˶^c©ôÆöyŸ‘¹îÛ*öI̽Æì´‘ž*˜‡Ø¶9èù¡wæÔ‘ƒïTÞæTæ–™Ö†­obô;Ÿ.C—¸‘]¾³ô_ýR%!M‡w¹Ø&;GødRýŒJ°†Ë±Ok} 9Kë)‡Æ¡ϯö’»ÏÎakä•Zkð]„ðW;~âb{i€¹»:ˆÂÈ©â*S²ÅâžuâEâ&–£¬v3 ƳmâüyÓá¬ÅŠw‰ûz¯Ò†9“Ø¡›µOoýb˜óÜî}º¸%ªñ¶¢ùßÜY3ÄÆTÎÚêŸXGWDÈ íƒüfó;Üchýó2½ôDzü«7 <˜ä£‡Kw\Ìøbç$dtÌs–®AZÛQD™TNòMCIQA)j5­¼í!¹9j‚k;"£hãáö È9‡É”§×ñtÂü޽[H/r!Æ öOɶªÛÍw…¹„ èÑb³æâ’—Žg#´C…/êÅs¬ÊÜYýÛ¶¶_1t…e3Ž›’Ú0ý I[Á>Ob%…3­³Ù ùªx¤|o“¬d9ä:}&6– ìÔôÔWVµê]-5©Úû®‹T4‚ø¡5HH±WLP7è»ÑíÆ•À¶^„Oô!¿œ3uwzæä‡Žƒ“^~rkGŽ1=ÊæGÆY$âT6ѧw'WH<®Z©"¾Ïrò…fÚßp=¸Ýʯ֭®Op÷œá4ÁƒY/¬· Q&¤\‘Óiœs–KIÚ%Ƅۼ_º¾À‰ˆ+êâà3µðÀž¢Í§vÎpOËÜkj­Üu-‘6îïÉ4ÊÚE¦ÔO“ôPÊXŸX(ËÝì+Qb¡¬!ݶÕ&øb² Q$Q­ ^öxÆ^oä­£¾Óy¶b/䦰ÿñ“@Â-s(ØOS-ð0¥Ó«:>«qëty‹A:þ,¨°Åôqž3Áß·ûe?Î@+•¯PJéù}NÙ¶ó‹Æ@¬!y‡´ÿ[ó:÷–‚ÙùªªÎØÐM!mæÙL-óÏΜVÌ'tÈcÛ±® ÒO_Å]KE5Hxu÷»Õ X—Ý)cy“š lo¾»¬oLmëå—d|qÛõÅ ½>W”þðgƒõz±‚û)ÂtÍ6‚’³)zåH’Ç^W£ÇPúþ«Ž›nÜdÛµ;:Km¥‡ßtø8Ð1¼3¾~JÖÑ/Kõ!“ÇŠ—ˆ'þU.âUÞ@¯ÀË‘é|/·{]ØC:j}“Îă­,ˆ6Íœ{ÞJ‹ !2~—¸PGQ¶ÐìÞy顪µŒ*JÇ<ñMbÿ<ÓÏ£=×å¨ë’Ò-ˆzëw£ÖÌZÙï‰ÀHy½©: mYÆc­–eû3S+×›ò­]CM~·–_h–´â`ÓS¼lÈù.4A´;gdªÙïɰæ:ºæ^(ûv¨"sQ$â•ÝQbn#–Iµ©•¹ÉZJ§-âî?æ**chÂóˆhº‰<{öƶåü?õŽèã?~ÇYa(+“޳h3Q_K]8¥X[ZÞÕ•Ù·úáLÿ Å6‰?­±¸$[GuË„ñÒIâÖ¦>íý£ë\oQ‰šÒî %\ªÑù„ZÆ FQjù-‚s»7ûJpmµ‡uÔæÅÂqÚ:I|žÂ=Q_hXjǹßy¯²¨QÖ…K‰´“R”‡¹²žùĦ‰¶õ«¯eËb Q„öLîøF&ÐõN’˜4>nÙľFU4±O LžÇ£Ò÷ס¹<9‡ªÐƒ&kÕÊ[¡3èH(¼¯·…™jˆCºú8èŠ"ø‹Ah/E»ã}"¤¨¿3µte çbÝ\9! ÓÞç’Šö¥‘¾pŽÏ¼ÈË£úì%èÒ>Wï)vŠ,ÏF6æKWt~ìfìëÌœ16³"*ÖäüèIÑAcOÀu6¶ª8¦ä˜G®€ƒ¥0ÒõSUÏGïè·ŽUAïM¾`׈ böý°o:V½´X§¶ [8mo‘Ïi6 gœ~¨ ¹•+¢Ó>­BcJD{lHÖ/]&Ç7Ë®'N—›Í¶»ÎiY'µÂOq‰ …"hèÛŸþ óý±Ñ+•pIË&tö6Wuæ¬7iEˆ‘‹K?µjMëf QW§ï|”H›oZ°nŠÙi°ÃÁFÊöæŒ#^ELÓw×Ï‹>Tïª|GsÉ„¨—ÍTÂ4XãCÄã²U>3ïT¥ä%03½ !m@ Z¾Ã¾vÚÜvÉ•Óz›«ã9î!Öá 3*J”C­dâæ>¢Úá'ú¸ ¶ê—(Cå,¥×Pœ8™Ôד–‘qÂcŽ‹B1=jÄfÌ=ûÅð-£¨ù!ÖNÏ&#Æñ® 9üzÏ&bö\ŠTA(ܵæØ7‚މ(þ}òi—ο?íW*¸X¹û]®+ïÄþÅ]{ýù}H‰7¼Ý`ñtÚYͨË>‰¯»xKEø§Å!Ѷ4Xá¾ûx ZÌ ntcî{¡öt”5ô}ôÓ|ŒhWM×nC³!£«ß9mB™ö¼½Äpò_‘mw Sýè¨BíÐÆ)òübz$¡f¯å÷ûgFäF´ôZœN„è‡r—;{ùìoLÜJ•ÀÚçŽ6ò²j¯ù¹é[œºÂ8ë‰þn®ï´¢hñGdö¥Á;QBâãöK±zÈr°AçvŸC‘‹V f›>޵m:q®çV/M§QY,«j3E³;øy%Ëj~ då6‰ þh‹k¯RB²ÈikAqÅls}Ñ.¿LQÿ+ù²³´gé-]: ¸¢º/Ý[™²’qÓßÈ®dÖN?´Ú{OkáÄvS­’|HsªŽ\ =ëÜWÕ¹ƒ»`aT¿áanĺ]b(¡ZK²¶bÐ#™ƒ~¢¢ù×;±¾‡òNVó ¼-Ô í%D²¥§Ë&j–¸òAàÿ”½ö• endstream endobj 74 0 obj << /Length1 1466 /Length2 2121 /Length3 0 /Length 3050 /Filter /FlateDecode >> stream xÚT 8Týÿ´ÑD>)e)Yc6FY3cˉ´Œ™3æ0Î0 &K)$¤%iU¶²DˆÈ¥PJ"ùìkÖ‰Pº‡´Þû<÷>óÃñÒÅ`|}}ÑdO6šÉr3TU|!°Ù ˤs”ídOp¥8Ð!ö·ÀN&ãKfâ`@f#)\˜ ²¤;°Ó°õáo`ëou`áp÷£ÜBö\!žO&S(LO/2̃`7€1@ÀÖÌÍñã¨d˜:$3ØL$ŸìC†dW0?:0#îÈÃ~l òâ°Ñlˆ1Ç3W9fS˜jÌôôa57Ÿ Ä)ȹó0 —ë3}aÿï ‚©´9T®Æ†¼¹ …Éq¡~úÜ@@Àb±[45Ðý(tÌ\ž8Ä͹þ^L/€†Ð!ˆü¡üÙdà°¸` ÿ¯ß-P! pÝ õ³:âißläþYàŒE䇰s¿oû…Q™0ƒ÷>Å k“=VÄM ”I$¦à¯4ðšZ¯hë€Àß«üàÿû¼×Ž -̆ýYϦ1o³ûNÃgA* K£ üÞa;Q3¨ü¿ –€¥ Üÿ½ó)ÿMùsUþ§øÿœÈŒË`ÌÇU¾þ#Nö„¼¢f.Ù &²ðŸÐÝà·u¶©×óϨ‡Œlvcü8HˆmùT;ˆC¡Ï+æû5 Õ Ú1ÙÐÜ÷ÐÀa±Ä•£x ß6rYó!Ù¨ß;šÂ&unõðm€Ìb‘y(,¢/<øã¥‚~óÒ0h˜ÉAR„] @c²PsWŠÃj·9ß‚¹À0~šˆ€1Ì_L<€ñúÅ$ö/¦6€áÌ›¿Há²XÈöΫ™ÿ»=ÿ©A?‚zÛÀ¤è…¸g…~Ê JûjtÕàµD*Æ"øB»;M%}zv5ÖŸ×L‰l$–¼êŽœúgÕþæ×\=Xý­#u%ÞÞ/\JsíP¨[e0=À¶æâ»­Š‹jÂT7‰á<ûJ_¾Q½êZuïÑ®×—ûÌõ•òîMÞ¥ *ç ¢…ÕœŒ\·e‹¦ð¢GÄËî‘2‰õ¯Š,6²ÇŒj>œ[oÖ7u±¼Oh¯hº­.µ]”îïñ²â_î7Œë-Õ–²:XÔ+v–š®›9­r”_¬âÊ~fw:UKŠæ0–;ʵ• få}ÈêÜV{' ßñr+ßÁ~psˆš›ó™.´h“5IèÞÃv>Gè´J¡þ^ Ó𺠒۽ç©[ö²’,ü÷*o¨ixãX§¢ªˆ 'x|°M‘ ‡RÎŽò‡’3–†GµM7L_õ2J°4ÏÎé¨Gödìã˜BIU[ÒÌ{•—~íK]÷Æaiò§öL&'¿»ŠqR˼¾ç¾KýT¨¾X„ß:³™A%ê…„†£Þ&,yµ8[_ƒ¨úéö«qOVlñ-ý‡t!nÇÆ¼ñµæx½ˆùmñ%—|µÎ4¾¼ÃgUhÉ ÛŸV¯˜wW$ÿл üÅÙœ’ªÈÞåpôÄŽ uƒ’ò]rüb´p“Tf¾e?ÿï¢ðáÅrÖb9Ó íñ{Ò¥×®k^î}<†~ÈÛÉ=U<Ñ%Û˜{o‘í‹äŽè>úê —ĘXLå_&¢æ’!ïj§Ü=Û0ûÂ0C¸Ñ g'À¹Î ¡] ñ^qä %3ª«x¢z\rsºžŸwEìÇi˱í(åë1Xp~“†y§|Žþš{Sá¶±˜© ¯òö¤`Ù§]Äò ‡‡c¥ÎV%ДZu­ ×2Ë»?<"Å™å—õ—^UŒµg¯þr´ä¡Ú'êå.L ¦Eô¨¾œrqBÅíáÆîú™¦Õé)^ÁoìÏ[ù=Õûˆxãî±,åçyU»Ï[Êg±ß§¿#çH&i—¶(°Mº.ˆr£Š-ñÆ1ct+~ÌÖÇ‘&ÛœòCƒí;¦WÉÆ·,Éíø++õñm›Åbz˜Æqû jVq'u!ûø-ðž^ýxã’+W??õ6E9òT¥Ì¡sƒ‰eÎMÚ’}Kv/ K7: Ñ½* ®¿³k{ytnî5 'µþòǬ;’GŽÚ:3öõÍj”Dë ÷Ð7Š®Œêûz¤Y¦L¬í9¶~ñòÏË*jö,¥Nä‹hl¶=EBEѬ™lŒçW#ƒ;†²AÔྂ²^ÈË4ëÚ˜ü§½ø¿Bf#m6¶t ™]aLyŸê”*gNoXÕzýñæW[[‹ÀR³lÖÄs•DÂù!墮Э2Á~I«j"ñÚ¨rõ%ø–µgƒ¯ †Kî6;¼a’À˜éWM{í—ünZ%ºáù‘øZËhÕ¦“2ï3ûv­ˆ p,¼%!š°:Débü˜ls”{‚èÕølIƒvV¤{†Éý„Á}%Ù¥¡µA/Èw—Dݽæºlý¸É–l^ÈXÉ@±§”é±…‚ »¿š5ªÊ”ö8Ü·•ߤ1éóà“p¯T½{¡ó•´/t#Á›Íaë<:yæO„íŠØ{ÐÀü_©KƒNÅË^Ï䯨 ²Þñôb"Œé[#§òÀCí‡,JÖ' šÊï€è̦çÃÏkƒn‘º§=äç[Úæ·æ‰åí<ïO.ŽX}vÌÈ oT °*«©¥Â(S–qRº{"ú˜¸úôcÊáíû¬œÞ,ã+¬áCÖÎÒ‚Òõ3¥„ý ²KzW£‡#_NO·\É #»³ôÍa¥ëˆq_ùÏ^½±ç)ûøˆÞ$Š˜å²‹Ïx>ÞœÅÚÂ:G1 5Ü—ôtå¤Ê¨ÑÈĺÆaEïú•yjÓUM·èSî>ôùPÿ§5—RûÆ…2á.A#×·?ªNOÕÛKŸ½^ŸJê“_ÃS÷‚ÚX¥™Ï/ò ù0n¶Ä8¶E`tè ùWþ‚ö`ϾÇS¼ ®§0=U> stream xÚmrg4jÔu :Ñ£ ¢£DÔè%.£E‰13Ì 3Ñ£÷N"D'щ5¢Dï½Fô½^7÷½÷]ßZßzþœ³Ï>ë쳟ÃË¥ŽAã!îÎ0HDT`¨n  ˆŠˆ“ñòª`P<ƒV…â2`ˆp€Äb¢¢ 2^€ ÆÙ‹´³Ç`‚@€±ŽD!±cŒÆ ³ȹºº*ºâž‹`Ÿ+ˆ\7"¼=`‹tBTôôÍ´À °@F`¡Nýç6NH@ C qA€- pú'À0h8òoM8‘?Ю,þZ˜-ƒèªA”ÔõÀ€šÊˆ Іt4¯ÛÑxœÌ5âþÞî>ÿ_äý/²ù/ú¯Šuû'!p$ °AØ!ÑdþöM m‹<ü†?wþ·t-w­ pí¡ Ž°½f?wrCQ€€ åüÀt1p 0À  èYPÒÉýÿËû_†zíƒÚîÚ9Ñ $N醀ë#ñ×VÛB®-úƒ› þù]ùõO?âÚë…cÐNîÿ;òz?èé<Ñ5úïþ”ÕÐ0 ‰¶⯽„báÿÊúPä?×󯘯 ú¿\ŠÇ"Ýæ¢"Ÿ‡èßïßÈòÿXÊÊ7OaÐ#i€°¸’|—òþäžc±4þá×»ü›ÿ9$ #›ÃÀd’ªƒ |Ôr o ôY Æ{·Íi‘­öðgK¿X÷ ¬™/(Øûýlä¿oÎkí}䆯 (Vº{"¹B-ÇXOÞñÚù”Ξý•uZjµuÓ˜ßÜÛÅ'OMúë{$Þ¦ÿ,}â’'O«Š´Î¯m¾E3;1|€Ö´ä§KyzIø!TB3`”½eóøda’0$3à;Å6/Ë3ûì?祳=»Kqr“ytnèEÊGuàÊ2ËrH˜tnèÞ%Mb’·÷ÞÔˆ‰Ìp¿ÄŸsäÚ§é¢ñÐ BJƒæ ;`ô¥ùeî`FX(óŒú¸8WD"¶ãûQã/ø]ýà*\Ò±aÎÈòR„¯ëƨ™oV@~ÊCMŸÂ…bÐýøÔ™eî3'3'>]·±ö¢ã—}TJTãÊ!™{ôÔQ¯ñyŦ–rõØžš{§ } ¤¥Ó2¹%.ÇE“vÊpùüz#Jõ,¡ï™’ƒÐÎ †Jc9u}-*žÕ;òÕÌ\‰­pf4Ñ«&Çwϯ,¦º÷3oäý…;Èô!Àï@ æLG€‰ßl¸É*É÷* ³7¼ï$ÂîWWpñœYQ5Ïš‘“5#­ çµoŒ9±-Ͱ‘Eq?sëHf =ûˆéR¼=]q'b."_{®88ƒ  æ8ixxãûs=™Å³Üe2´Ëèð6R>-M’Ôœ­y$l£$Hâr*Rú±©e³KòÀö¦\õw¬èá:‰(_é¬``¶Mó:‹Ç¦ÕB¸Ô²Ž¯ÃmhRÒ‹±§²@NP¢ „×÷‹ÒÛ>öÑ·šçUí%' 13Ãatã–Ljg„÷öt4Où¿Ú "ÖßÈ‘ò)±<­ÓÎÂþÎuâ·þ¤@V°ÝÕoYA¾38™IôÞG ï ²4_Ö?)o~[u³.á…¬p­Läñ½w¶ñš$,t«tQ«[ â\6Q‚ßbÔ})ÅŽî72K@žÕðw­>T¦8~5,N˜ä¹c-Tül v#$IÇ2<-ßfJÊLZ®õ¨®Øæ‘³lœru^ŸÔPd<»âùÓå=û­†‹.m1ÕMMf+k‘ùm(¢»ä=«[£3’/71¾„±æ,(ž¥m¶}!†˜ñ\Î.žÎ‡Ú”e=D‰„{ŠÏ‰M’^– ðÖEÅ2µÑ !®ÒÂw/ö3+¥§“H„6öì»= íÕMÁ4öA'àZæ‹,‹§DÆžú£iÖ*Ës\F.À® O¥Ë÷â¥N¼²ÄÞœÕ Á6 …Û¹³,öíÖW!£#%X…f¢oÖß·90 )!Usá*ï@¾†>i}áÞŸ|GvÙ‰-ÔÈzï Cù-d9œDí–u1N,t¨Aªª‰² po%ŒÇž†MÝ©° vI°üeʾË&Ä´6ºðÙÔòflVk•;‹âç;ÓÝv…þ^ñ-Yl¬M.#&Õl¬¥^ö°ÇDÒ3 KYÿò¾O¢•ôhËëòlò¸ýu9œZšåM:IQþt½ûf\”ÀjÃüwÉìwÕŶLaG|˜-;+ƒñÛqÔmŸó¹¢@Ù§µ N¥4 8ûÇÕ$ZT‡cgïÞ3-K¥üªøV˜nÊ*?ÉC¦¢“Œü•Ïm YÕ;º’S^cyס‰8'"èR\éRÏ.E°(/^,j&NyûŠøŽ[ë™§îºøÏ}çþ‡ƒxØÆŽ0Q;Ú>vd½àJKoÍÂ×7f>êÐ!ʵ–sø5hêr\TÐù°ÜØÅesn¥ÙëX´×͈à¬ï†œS)lY,Œ÷ýW%!%?íòbüŽ<ÈW¼‘Ó’º,þc‹{rNèå=˾ò^kNtÈ*tU"=ÆìIƒcÞÎÚê#¡â †V#ô{7¿Y3÷2LAÜxiÛS—ñ¡³¶mÓÒh½Ÿ‰§¢NúˆL’´Ã8‡²„œ¼ß‰ª_tòIDíÉp¤/pQ™,gMÉžéZX¨JÆXõoÊ7M2õmÿzC-}¬qõÁÊÓ¹×úîU†ûßm P ¹ˆ4î‡=9[ð+ƒwm™Ÿ+‘²Ù¢­¼¬ÎôþÚŒ®×hí)ÐÏxVmvÇÁæÝÒ5ÊŸßðبD.ò¶ÏmC9ÿÍ+}µÖßs™Ÿ#®@’}AõïûÔ½šÀ tŽž¯ƒ‡1Âû`Sz»?xUÙqeš1J§È€\$þÍ©-wRûxýÇÆ œiVúÎÅn¡Âø$á|3"j‰[=ts"$J5Ñ<,_{c@QÄ“GmîU:§I9;‘<’©ïJŸ­ºá±2–ÒztÁíñ.‰áYYò$ÈÀm~)ü½WŽYv\0 c»³ÓâegsºÂÈ_¸ýiéo_A|¢¯/ùètÃéÍ7÷•A„ˆÀÕ£rÚ‰üËÀY´»á"RMïæi|#!sÑ@‘i€ F™9P¬§Ê›Éï¿ùŒˆNLðW²÷¸ÅNíNu•ÀÈòélÇÔ¼ÄñúçÖšEMÐdo‹œÀïù#JR¶ûöž8›ÊKn•G¦ ì·’')»ëý_Ï{ òKSÁmíâ¹²3,n%K›óìGt~ä»ÀÛöôÙûÙ·7]„äñwœÖyæ÷‰ã=åÔu.G5TñnOMúJŽžOi‡÷½4­SUA}pä‘0AxQ¡')ùÚƒb”¨îÙ€>D>µ±bÝ6ô0Ç*/ë꘤”ùép&8³­yëÒ\¼/¦Ã+5¼D 8®ûÇ’Üšªñs¤Ï©µRúXK¼ÿ®I¿ÈÄõÅ×HdÝ¢xÞà›ñN®»» m&·¼ ÞV}ih6{ÆÍŽºÎQÍÎ Öëz|yøÅ„½'™Âú<3®röeh¡;­Xy³3ú•ìE÷ ="œë×A`¯.j÷“æïËbZ¡©×î_+Ú2fÝò·˜%·–÷§vãI^Ù‹7‰Ò¤zÃ3™qä |“…PïoÖü_-Ég畈—ƒ eWG°Ãßš&P¹‘J/$¦µ/µ32¢pDÇqDwu–&:`µî¤O#4) ½é=l·‚Øp7•‚Xø\¬~\НÄmÕ+Øû™r›¹ð-]òÜhQ"ßeï±ôGúùÄ>xÙñT˜h§Ž êžà›"#U…¨¥Ôêd¬—½5ûi\*ß!³ª–£Ô' ÿìx•ËA™‡EÔÉÛ@}oUïÅ4îÇgnô…¶ÅŸ5¯Y,tñ§lå·“:¯°/I÷šZ¦o8¬i‰oœ'’"ó·vî){¹g¨þdåÖXߟØ;¯ÐÙºEÅ+uÀ‡œ‹7ô×{<³Ï/&Uãi†ÑÝ*âv|0ï”l ¬§éÁ•›ÓµºÜ(k–N1²ööôS#´kÞ><éEÅWA);}:;%lo£µÈ ÈS½ÃË™Ë=Î/Ù³Ôm6•~™¯©zžü¼ñþLñâ+§]qWCoÖO‘b96ew?Ý{Y9Aû­yºý|Ž'?8*·Yf ’d‹W(ËâjP ]¨¯~:eÂ!=ˆ0ùÁÏiټ౱] ²ëP˜àÉEôËf-|ÑÆ6%ý~¿ˆRÇ)Ì'®µ¦ßryhz`“±v,ïz5¯búpìhѵý1¯[¦é³ô$¾1ʪÌ{ÜÂJb˜~ÞÔ¿Ä ÅÄs«;îÊ_<9|9t©«*°ʆãûXŒ|ºJy~¬ï˜Ž>üMÛ©^¾L(ÍÝ¡• £Ö£“å¼K”ØHÚª©¥Ž«z“ÄÔ´ñâD™jûøt󀳸±Þ˜yÂÌì&m=¦t9¢©óù+–rã‰é[Âl±ƒñS3΄ôQêD¡gy+3f^x_«ýhiÔÞ Ëdéd”­3ô¢­š57hm ¢OŠÚÚ»;=Èþ›Ö×FÖÓ!}ê¶7;––µí\+•9n"jqK5T—¤õ«ãÉç¾ç?ÉêÕÈ"Å(Ælœ ,A™]ØDn,•š’¿,fhéa‚¦P¥­)¡¨Fe‡¬¤ºèÉ»3o±ª›5Ñ2Èi@{;H8dg¿%Ìö¨“¯lo V¿éãÔÁÚUÜÞ{â#g‚ã–öÑZúîß#KÍðÑ ¢‡Î2f}õ{U Z³I¦Ý´ˆzEW1©M;7I^³_wó±›^Ã1ëò„cÅ=åÕÿâô!m endstream endobj 79 0 obj << /Producer (pdfTeX-1.40.12) /Creator (TeX) /CreationDate (D:20121214171959-05'00') /ModDate (D:20121214171959-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011/Fink) kpathsea version 6.0.1) >> endobj 14 0 obj << /Type /ObjStm /N 56 /First 428 /Length 2568 /Filter /FlateDecode >> stream xÚíZÝsÛ6×_Çf:¾¿n2qäúâÄ®SÛiœóø¦h™,)å$ýëo DR[«ö½\:‚ °ØÝßîr±- #‚xK¸#BAŸ)=œ(c‰D+x’DG¸%Ö+",qÞɈ÷º'9ᤠ\0 «á.‘šp¥›!\[G$ˆ0ž±ÀÆ=Ð+2™#(›3ÛSîÅãÝZX¬€s‚€:’yFµm5Öôp·ð,‰’xW@ úi ¤ŽmaÊÃÝCô3Ø~F#˜!F£@@m gÄxb,U,¸V«„îYM¬•Ø 1@Eåà/'Q+âÌpAZÎg@g.‰s0Æ9XPêžðÄ3ÐÄyî@0ñ¦•$^¡4ñÚ\``”é½|Ù£ßf¡ï’QÖ£ƒé¤Ì&åœ(pâYžeóé¢H³9x4 œdÃU^T¦8ö¢ íޣ狛2<â ïÑ_’{œ=ú*™gÁ7ôu6~ÈÊÙŸÌózú ¿½ÍÀVhÛ+¢4½Ï'‹9„!ý¼˜–Ù8»+*E‡S€?ŸçtT$MÒE™Ñ4/ÒÅýí8ûJË|<Ìè}’Ó ½)2 %Iš‚è0ó|Nû“i9Ìni²i .“ÕàÝb2JŠÅý8Y”t:šN²O4Mß|–¤ÙõfàÖqÙŒÀ:21ê.Oo~ÏÒ¸àèò)ñ(ÜÆ h¾ïx”ÛâQ~WñøáF·Íþ»O+P›øŽTû\µUÝK"ôSòŠëyE±çØÙHV­âÔR}à|%RвÐjÎûPÓ·P“…VÛ¾«úqö)mųÑFYMš8b•ìCÄ$heá•€: ê>cŒ-@'¨Ùp4ÐI‡|c â0ÂöÖ´5§À5®¯$ßWP  ¬$DÊÐz|š#†I•%¬mZ¥‰)Ž((ñªŸâl=Ö\ƒ£B£ޣţ^M»~‚#mð•”BV«Á“‚¨%=ŸÒF>ÍÖ ƒ¶b(=¶qÄÂ,xü~³}¬œƒ…$ÆK\+e_W”Òá¸VFœÐ@o zÑ[Ö4çÀ¡ê;Ž«< ¾³µÜÐrg€æ€Q~¢ h\:0V6˜³Ñ—B!ÜM\U²*ó8„išô‘FA°€û¸­\I‰³8Ï áàŽAüÏõäëKþ¯¬j|?ÜC²Š-¾â²j…F˜elã²PÁÃA:¤^sH¿a >{&Â+ÍCÞâÑ"IS÷šTÒ…ÌÚÀ¾9×Po›b]—ØÐ"rI"¶q¡Yv˜Ë ãæÂ¸g9L6üˆ3{Ó€‰=7Õ|5ÖVÜ!ÓóÊàÍÉ™X‰‡+d’Ðõ^ÃYåF¿á½0Úò©¨yT®ÐmêH!=nÒ~Ñ!Ù öc$c\YŽ3J…Ëq.aäZwõìh-œH”Ô+:Ëlp_Q8'Aš÷¸½ÄñÀÛ.W ´ºWSHÇB€…Œy×sa›ªy<¥]jƒW¥7”ªjã¢ÄÍU-ñ©,PÖà¯_>A2PIö&ÃJbüæÃ*¹äWV¼ [ôŠ7RÁÅ3« ÕQp»W?!›èŽº×t#ŽÖ®Õý.<£éÊUœ[:Õýz.ªû±m‚·[ƒ¶gCžµ®ª:0¬phtê#܆?­ZÔB]ão‘øúa±/o˜Ç1W­®ú€R0g˜QŒ­ª«%?¯Ì6G´ÁÚK¨€T;ôÌF¿99+ê¼F_X,©š4ÕÚ8òY±V„ŒÖ6y©±’±Æ~s6 º^;ädó´ÈgpŽ'xÄœ¿ýpzòãàäŒ3'#8CE‚Wáø´'ª=Ò"ó˜áô´?Çs$˜(Éìu–îàÑI8ÀfqnãäQ™Œót2‚³:°?/³ûß` «5JÂa{p—xªúîÓ×ôˆ¾£gô‚þFzCSšNÇpæL§÷÷ ÒŒÞÒÛœÞÂqŽèÍéïôÓ{:¡S ‡T:£3<ÜáQ9ö ”DgY‘O‡ô3-èœÎÇÉüŽ–´¼+²Œ–_¦tAèú•~£¼ˆðsPZ›æñ¯Œy´ÿá?‡—Á˜b»1áecrâ{[êN[Ðz^Y0ØnyêÞF6ÍV 9ÀdÅ´e·‹Î/Þžž Ø ÈNøiÀ*ÿh è hÙ´k[c(«â¡¢ïKú¥‰Ï°]ð}8:;#>³žX¾-ÜËgñ°“·µˆ]üüfÿü" ép”°K$B< ëDí‚dp|zxyŠH\GÈ™e³ìy˜N$q1c W‘÷©zÍfË$T¬P;wJ6û§¯ß¿ÿ°Ï/.º’wG‰¿¶À®àM9ç-äø¸B.„h#ßóJÞ¯è^ºÍ´Ñ°€fŸÉÒ÷C¶Là#üY6+èÝ·Ù]6[)þ®ùÈdRyþµÊ\˜¼×²—Ù){]~|óñò ˜ôâ¨Ë R¯Þ õ”XÚãjeR×iÒ ±ÕMv§öëÅá¯odgÔ¨4Z>)hØn1S$駬 @«~„š®‚hô˜}>üN>¼W¹>î𸻯‡†Ý)]\¾ÝVëØÛ9Z Ê=üvîõÓ­Ö½µ£!0À¢ÒæÉûã7'—?žž@i× Üy²'ñ{´ÒøñÝÖ°X«!±®šunÔ7‹ñ8kCÙ’ ;¾’pi*×ù²SÏY+}[†Âÿ†ßób^¢¦Ý~œ¬àéC>,ïæø[Íþg²×*Å5Ù~C6oɶµl¹»ìµ­-ÛðuÙ˜žjÙÜײõî²ÛõÓšh¹.Zù†hUKVnwÉízgM²~¬dÍw—Ü®OÖ$o„™2æVvwÑ›5šøHS¬i¼ïw¿¾Ÿ¶…[þ繫…›Ý…¯ïskÂ7‚Mªášý÷{m»X¾oœÉ–tSKW»KßLíkò7“›l…¬å«J×ÕGkµE!ü,;Çï² v|›!3Çï¦<~JñŸ¢߯[Ë lÓQ/òi|•ý/o“Ò endstream endobj 80 0 obj << /Type /XRef /Index [0 81] /Size 81 /W [1 3 1] /Root 78 0 R /Info 79 0 R /ID [<2B7094BC0AAD482B99B888EA6A57B5BD> <2B7094BC0AAD482B99B888EA6A57B5BD>] /Length 232 /Filter /FlateDecode >> stream xÚÍ9NBqÄñ6eD6—â J ìm-½€…†Æ;Ø[¨ðblL¤¥2±¡ áZ¨3Í'ßÉ/ÿ÷à—ˆ ¤)@ ãy(ºâ@싦èˆcq$ZäëÄ/N‰â‹kN„ˆØÔ3,""*bDêîÿGÁ½¯Kbž(”<Û".")RD9ëë‚H‹ŒX$j3r"K´®=OÄžXy±" ¢(J¢,*bU¬‰u¢sé¯T‰AßµA<¼»6‰·3×ñõèÚ&~¾]ܺjäyÅU'¯"®òéÆÕ ŸÇ®]Ñ#‡Ÿ Gøn¤ ‚ endstream endobj startxref 118364 %%EOF gplots/inst/doc/venn.Rnw0000644000175100001440000000465212163323571014772 0ustar hornikusers\documentclass[a4paper]{article} %\VignetteIndexEntry{Venn Diagrams with gplots} \title{Venn Diagrams with \texttt{gplots}} \author{Steffen M{\"{o}}ller} \begin{document} \maketitle Venn diagrams\footnote{http://en.wikipedia.org/wiki/Venn\_diagram} allow for a quick overview on the number of elements that multiple sets share. And when those elements are representing traits of real objects, like observations in biomedical sciences/marketing/..., then this may direct researchers to further investigations/decisions. The {\tt gplots} package provides Venn diagrams for up to five sets. The R code to produce the diagrams is not complicated. The plot function behaves alwas the same, depending only on the number of overlapping circles to draw. Its input is a table that is produced by another function. The function {\tt venn()} calls one after the other and is the only one to be seen by the user. The values shown are returned invisibly. The {\tt venn()} function accepts either a list of sets as an argument, or it takes a binary matrix, one column per set, indicating for every element, one per row, the membership with every set. The common form with overlapping circles only works with up to three sets, as seen here: \begin{center} <>= library(gplots) venn( list(A=1:5,B=4:6,C=c(4,8:10)) ) @ \end{center} The names of columns or the list elements are the set names. To squeeze extra circles in, those circles need to become ellipses. This works for four sets \begin{center} <>= v.table<-venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12)) ) print(v.table) @ \end{center} and maybe even more impressively also for five. \begin{center} <>= venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12),E=c(2,4,6:9)) ) @ \end{center} The man page of {\it venn()} lists options to change the appearance of the plots, e.g., the names of the sets may be omitted and sizes changed. However, there is ample of opportunity to extend the functionality of this package. To mind come \begin{itemize} \item more dimensions (next) \item colors \item variation of size of circles with the number of members the set has \item density plot rather than numbers, identification of individual entries \end{itemize} The prime personal interest is more in the increase of dimensions. Please send patches for features you are most interested in. \end{document} gplots/inst/doc/venn.R0000644000175100001440000000123512163323571014417 0ustar hornikusers### R code from vignette source 'venn.Rnw' ################################################### ### code chunk number 1: venn.Rnw:33-35 ################################################### library(gplots) venn( list(A=1:5,B=4:6,C=c(4,8:10)) ) ################################################### ### code chunk number 2: venn.Rnw:43-45 ################################################### v.table<-venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12)) ) print(v.table) ################################################### ### code chunk number 3: venn.Rnw:51-52 ################################################### venn( list(A=1:5,B=4:6,C=c(4,8:10),D=c(4:12),E=c(2,4,6:9)) ) gplots/inst/doc/BalloonPlot.pdf0000644000175100001440000037637112163323105016257 0ustar hornikusers%PDF-1.5 %ÐÔÅØ 12 0 obj << /Length 3265 /Filter /FlateDecode >> stream xÚÅZYã6~ï_á·ucE”¨+o 6$f6»òX¶Ä¶…èpt¸§óë·.êp«{ƒ Ù}0T¼‹d_íïN;÷õÝ—Ç»ÏÞëx—yYÄ»ããNG©fÉ.I3/ÓݱØý¸ÿò‹ï¾ûøñÃý!ˆüý?¾ûx¼ÿùøíÝWÇ»_ïÌãïÔ.Ò^–0,öü4ØåõÝ?û»Ú¾Ýù0cº{¢žõN§ÊK3 «Ý¿î¾¿óW¬$»@{Iš(äÅÍ©CODZ°bªªma¥jd…Î{ðw‡ ô2Å#¾îÌå\æ¦â1CÛ õØvLe©ÌsÙœ¤‹y+ãÍ`dìf í…±æEž¹÷‡r(…¹o£LS0ñuw¯Ò½=µtÿ§ÇßîèÖ5¶Ÿ¶£`v²Vg¨eCß4C×c>”pÔ=R/vÉÕ}kÛ•9,£d/@©}Ùó·}îÕÞ6\êǺ6]ù›-¸ÿØó™@sž¦9ÑÙÀº¸’R^E¼[e{ØQœÂŽÎeeïaí‰ÔÒ…«ñ"Ÿ˜¼ðì½mC»¢ÎíãÔqk9jÎ`z&x’Ê^M3` ï÷AŒ½ž¹[Ñò·i¥Weñ~dªº·Õ•XÄr»ZXDä©Ä¾BÉÉÛ«ÅëÄ"±ß²¾´ÝÀl@ñb†Áv ŽõþH c}WÂq?om®(q7?ù~Õ€â’È­%ȧ xóXu-û‘D<¡åM>0,aÇf’ìlª‘Eív]ZA‡|8HðÕ´¸¸Zjá`øKËë`߃~Y®£ç¶—~°LÌ—$~Øb¥À5dZC{ài_$ú‡û,ØÃÔ‘ïÏæJT²/ìÕVí% ×6ö‰Ë§Ù`F”°øàR‡i­ÅUÿá[œ Ø(j”§,Ü?Álg á>ÍxªçžK,Žq4Ÿ8Ö¾qâ Ká¤@?•Ù©¼­Z>+Ѽ¤b¾Ñ×pGÃ¥·¥±pZ Ïn§Ýç*¼Eín+ò¶-½´MAv†"ÛÜ΄Y“ èi¦@ÐËÍ-³¬V Ô:Ðûsy:WðÃÔ[duÙXÔ$¬z´f… îM|B «úÆbOlˆtÌf¦»2ÿ©(…LYõ\ÈÛæjŸṉ̃„Æ}Õ·7%×it¹ov'“UÙêÌÙtœ9ƒ¾eÏ”{ƒ[F)ÕÙþ WÎÀ¢Ù>ïÊëz ±Q`ú ©v"W_*[“š¡:d´AüŠ.€C %K½Ìa³ìéÀ_øUòkå×Àﲨ6\S ;δ›éql؇ÑÚeó+Â%«œ^¬ >lcÝ0ôp©².Ç_Ì O6Б8gßùhÖëVä–®;îRÖ,YgÅ£5ù5ôöYÖ.î ¡ˆ„@klìkðêv3-0Aá$žù’ÄÙR]hã@)7õZ,‹øÀîÇGî–ëí»·…AÔ;'0D‹V”@8|DêÒö¥à(u¦(GÚ%⤖ ƒX×*Ó=nÊÁJ¼ÑÓ 0’Dz$na¸À *{Ë‚¥éžžÕôvàZÔMòql‚ÛM[‚úö2 +™®aÔÛ *˾Ùj&h̦8þÀ~(%ìÑšœðœIèÔæ9œüÛ‚Ž—¦ó%AæË:X êeé Ò…P`a‘ âŠVF°¨#ñ¶¨Öã%œ.¸†¢]Ú£å çß-Ã;è°pˆ4NBÜlæ–[X{´ê™ÑíÁd Ex„PŠ$ ]xCèdè"p™šçŸB‚æ[ä…1gcðë2j@‚axpÅd‘)Ñ!læJ—4BzçÈ­œÁÙÎúsJ»îgï•^¢¹È.E(Ur3dåš2óï2‚¸$E^ÎË"1¡ÁUšU°%Ñgk L>-]%®!Îð²0ÙiXÛ×·‰k5¥­ý] 09VÑMÞz•¿^í? |/…H0˜2J¿ã&gÿà’Ý–Á®Pj:.1Т?› åcRùSÕ>pnk\ï ̸)IØÝéòkwy`¾ÀÖÖ’?°N®¯qé¨x*‡þws‘þ.dÅ5˜·*]²F¼Pκ®:ÿsæje3?` ¦ú?p’õ8é¨Yõµ`*ë¿–—O‡í~>˜Oî¶N|Eã…‹=bXpt¥ ƒ+¯Í0LEîxþ»)Ÿ÷WÖ€ØÄÁøXeΕõ\º¸.;P2>|Î €Q)J4&*““ÿ²û¸£nŠw¢6C>A€ÛŒ ¾e~¼ÿæ2ÁWS+š_–"‘ðÓË)>*·±#q‰1â7tŸùÖºQäþþÊs †Ý – ,z¦ÐE^â’þ!£ ¸‚ü‚z÷"°ÿ2v ÿjÝO–«G~Þz-w©å…óeƒ„ù7Zq¨}/ ‚Õ~øp3qªoN0Kîë9¯¥ð¦¢ÌÓa6Í,¼8žz||#¡ª#/I£›„ª·±ŒŽ=ˆÞþàÖ£x^bFs.±‚ÞÄ sNÓF=`‚:Ú!p ¦,¨4ÐÝjI`Üø‰žm€® ,¸™¥º¶Ï°eLSŠ È,ÁŠÜR¼dU6äö2+1‹Ð÷×ï®ÐÓ䛎:ç\G1«Ž8' p¯­]®Óm›ò ˜j«`Ë’MceøôîÆL¹ÛÛm!êã=°ô|A@\ñûWòløÑìܦÃèÁW!ÉêhuìXv8÷UߟÛ'жC‰ºCÎW…‹çù”r‹5²“°"å RÎWâwcŽ÷åiœ‚P(«Wƒ§#‡B ã'"âE­àzö‡/<•'7 n5E¶JBé³ieîiʼWœ6 D±µ’÷ºÄrÀ­R¿Ï±ážmô‹9𪷞¬ZÊŠ`œå¢,À §ð$Ù ¾ãCK¹:ŠÄèõ9M8˜¶L×£›Éäªç-~lsMõÊ= @…©t A2‰JÏ)êÅ­¢ $v(‹-W÷Vf3ÍæÃº¼Å³Ø»?hLñç«äÏ-.B}ˆv*Ä¡D üzçé( ©y¦¨Á‘ŠÏ¾©Õîï-„ ßOMžï°˜b‡õ‹¯ œG¥,%7»®>¿?¤¡Bõ„ë•À†Õûò?~ ÿPE;)€„Ò¥½l¿hV‹àËýÅåd›Â!ù¥YÙp¨Y,o›‹”àŠØiú™pYtæi•Êšòì‹·mèM¹ªÃ%î(q¶È°¼jBP‹ÿ-ÚØÿE™2ÁãÅvøÞ¥ñ?7y`ÉH“0†éø¸ÊʪÀq¸˜Ç¬ŠAq“¯É1 \•ýÙ…>7pH ca×ñ5gX"<^ˆ©DuÛþÂUï0 endstream endobj 9 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./Figure1.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 28 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 29 0 R/F2 30 0 R/F3 31 0 R>> /ExtGState << >>/ColorSpace << /sRGB 32 0 R >>>> /Length 1011 /Filter /FlateDecode >> stream xœWKo9 ¾Ï¯àÑ>,+‰zöÖ›tѬ ôPô$n7ílí¾~þR¯±œÉ(‡ŒÅ¿O$‡ú¤H¸ wðm¸„o` ŽPkÐR£S@N¢Q°_ÃGØ oÿüuׇA¢ÚçáºN/–OL/_Ã§Ï àfpÁwƒìÕðæ\r4«/ `µ‹^±§È JŽG84V[˜mæ°ºãéÕ~øsõμ2ãóˆ´Fá™À"™I1òLFtúa1‰€¢_ħ ­¥%ª×­¯ "?µµ¬<¢@èu"˜VÅS"È#å=:f³{Uœ‚q @?)e+A‘wbíSš).ÁíkaÛ¼ñ„Ò‚Ö ÜvŠ-v´®£·qqXç-—ÌØbeîä]ÞpEx‰Šå}däÈ­ä]Ö.ó%®‚=‰ûz8cåÙÜ¿•L¹Ô7¼9ÉsK ´¤bZþ®ÁÅR¬¸ Á×7ÄûÀ›Š­VæNÞõˆíZ°Üó2TêlDß²r™­a&àiÐ1‘Ç_•§|þªiD”~x7­/-šP»‚G±+}dIôÚç˨œBë ý4¸²¹e—ÜDœæèPìÆC Vˆ†¢Ø­‡c k8ŠÝxÄjŽb75ÎS@t ¥0˜Ñ¡˜­ƒKõ²Ù8hÖŽ¥ÈfëÐç© ã7¯‡Õã‘«s•[B*,ù‘måú¨™|xd­“‡ï±+ÆŽzN,²ñ´‰2’[Jín:༺ yõ¬s´ï€kÒ±Õ"KÞŸf‹ýzγ_óϰº˜ÆÃg.ד„A“7æâßÛMGå¾àßÝüØtTQò™éM €y"Áû«ÍºŸT<žx¢Ôá|Ît0[o#ÑôJ”HšT^‰­"¡gkÊ*7n–Dôîëþ‘ªƒF†€Êžð,9i`ö»ƒF±t56[l®‡Z˜V1·E?›]šN£”³Õ›în£ÖØr•{(FÄ,ÃG%Èvã¡÷€;z»jÅ Y‰Ò´Àœ|ügáD!mÇ.e<÷Î œ¦Ã5ß8ÃàÅtxÉ=í!Qà=ÁçÜ[xOðÔìà ×ݹŸß“;·µöi×k›áÆuçÞÂ{‚/¹·p×Ñuš“¶'pTOî.€ñRd†ëŽÒÕÜpð=ðª—G¸³=߯¼á®ÆÕãunÊý ® ¬ ó3ý¦-wˆÉúyvµÙÜßï>lî¿Ã[XþØYþyûóv÷þc]\ïF­Þg±=Œb{9ü©)œ endstream endobj 34 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 42 0 obj << /Length 2381 /Filter /FlateDecode >> stream xÚÕYKܸ¾Ï¯œ4À´VêÄ{³^숽ñAàõÝÒt+«G»¥žÙñ¯O½¨¦4j'ÞMƒ ²H‹U_K%ßÙ:¾óýÅËë‹o^©Äɽ< çúÆQqæEyê¤YîeIæ\Î{÷å‹×¯ß¼ùëå*Œ}÷íë7×—®¼øîúâãE||'pbååyËÏÏBgÓ\¼ÿà;ŒýèøÀ1sîhfã¨,𲚵óîâ§ _D™¿I´8q2-Q(šÙ"<„,Y}¸YpëäL_Ìp#k„Yc»­ùÞ:jéµì,cÃÈ0x¾4 ¡öò3¦;1=ÙãO'³üf.Š˜_ÀúÖ• ÉFì`£z§ý,àž €+‘e3rƒ¥“f3gŒ¾Ÿ!ª²´ÈÚµîØ>ˆMyI>ó‘Ö‚Äzz5tnž¨Y•xy¦¯´œÙæso[…‘§à–ž¬®-%—3±mVaæùÔ€…,úÊH†éÊ,Y #RHV>^xùD4~jÑ€Y$„o~hBç/d.?C+a¸²8rþX©•ÙÕÏ=? øp¯ªí$ÏH$W!¸Mà‡àmº®»®eê¾înu7ø†S·ÕmÕn™\µôŠ£®{&¬ïGGUƱX±Ö}Åiܶl‹òÀmÝÒØ–´.Q•"cæ"é?.ãØ­†LT‰;ìJn袨† ÅŠg Çîº>ÊÄŸÃ0ê÷ÝPWÛÝÐCO¡ *uïv]Ï»®Ì¶¶ÌšÕ^¥ ç÷ž¨Ý¾;àæºfêÐá[ñöHhô¶­†c!]æ™ñBzIQ·äù Ï„3ƒJ3Ÿ¶Æw©{H?¢4§íÒ—%7†–É][Ë$]k!Þ”®Kaƒ:_ØY¦«(uq2¶2wÃ:¸zÙ¬ËCÏBYp¯jyAÍZÛ–LnÍj²Y"·9°ñ.W9ˆù¢îQyiä¶Ý€ËÒPÔ¤“‘±GZL)ÿÜÉ„66]}lÚ¥£5"TEöB¸ ݈õ& Bø:ùÞàNAL.ß=™$xál Vb±€FÁ @Þ”= ¾l·¨³‡0“­X€F6œR™»ÓõÐäÍÛÂP?tÈPŒ`«ÜÁ9òÐ-yÖ¦;Ö…4»ƒ¬ÓLZ-iͶ sãðØêwÝ;ìVÐ0çÆ6ù®9’úàWÜ(ªE¤µSr!8J%„¡<´zJÍg¼BÀ&î]ÉÓ7º•uU³'”Ljòbd†g^<ìB–ÁHƒŽ=·µyƒD;:U˜€*·úÐÙpëEÕïk=Š¡qPYîÍwää+5Ìc/RGATöÕü+5¿Q}'ÁDééGêàùÀqúMJFòÀº7)n›ÀHcéiÃñ@ñù"Ç–1S¶L¾1lóbÍ» c®$ú´d…‘°l!ØA'¦1JŒ½D#¸ áBˆ¢›.ªÅ2Þ^a¹^¶‚ܧ¬vWh¢½-ï{ž¾‚»G¯=Hi:›KÕ‚|¦€³pB²xÛ@˜?]žÈÂyÀt¾Î 2ù®­î80­?®|íPPw½,'OÊFÂç"ˆ«aôü(Tî5Á®F+äbwÔ7v&ÆæÑ_hž¢Û…¦Ô%9Ë-BÓº~X’aâê1{85ÈdØ}z–ù0\!†z™zzâ=H|˜ßÊbxÎETQ7ZH{Â4v#H{R;ë ÓÄÁT ïkÎAt[m˜0Q,Yß3t¿h<ÌxREáîMÆòS 4(Aò†‰ûýÉCæ°8—‡÷@06“g—ÍLÊfO÷6öXhœ`Í·ÂÒ–‘ɶ"Š‹N: ‹ð(jN9`–”\üï9 Tð}q|p|Ž«(à;::蠟쩃Ôd'Dì £aGbœAå‚•7€3x=E¶(rù 1g³éà:¬úÛT¹ÇžïmhRÎËó%¼ßóÀZdýºÜUË![7±ò-+Æùµw¥.8¥ÃoMáÀü”¸'ÑãJ½ ȰçäKâa¦Qæ†&ËEÝ@Øt±Ë¾ƒóa:¦›œ <ûN.çù^½g,æ.¥nêê~S]µ £Ht‚˜,]˜Ä;×”´ð`_}*Ià’œ-ì»Ó W@ ¥¿Ô*ŠÒÀro¹ÈPR®d¾ÖqG™‰í/r/ãúÅÈó/½á„ñÃTFìÆ‰ÎQ¾Ë€ŽßLï$PàÓtyÙìwº„Væ hJ—Dù|Ä·XŸì†‡˜èM²&óž•àq“Ü‹Ã苊ŒÅù2qp®ÆÕY•¤Ã©„b•Y+ájÊĽ]ÔùlÍéË ªÄâ™THLQÇTMNU’Lyq’?,“™¢ÒÖZeôólRë0¨Ø‘þÎõÕ4Rõ1Ššþ—uØ/®p–Îlˆ=Ÿõ;«öß)ê. ÿóRëÛG+}ãߨ)Nˆ> /ExtGState << >>/ColorSpace << /sRGB 50 0 R >>>> /Length 1158 /Filter /FlateDecode >> stream xœWKo7¾ëWÌQ>”á ß½ÅF]À@ŠºÐCƒj+©Œ•äHvÒŸßácW\Û—>xÅ!ç~C΃F¸„{ø>»†ï`‚œZƒF-r( Á~Ãvöáð×ïçp{˜Iž …—ž¿·ýòÅÍ+Ë7ð¬3ðsöù H¸›!\ñßý ¥>Íγ—Èl_`±Ã@Ö”y@V i@!s´°ØÀ¼;ƒÅ=//ö³ß/á^8Ÿài ¤†Ð é¦Àƒ0&ÁÓ@é ‚b¸§ÀIØ O²F(þ1^ÇîLžÃða<`ó ’ç#ˆp7éè(]IbŸF‘·ö€A ¥ß±?ÓGÅp%ü$8‘:ïŸFJkaÙ€BÑ+”×ÙDpñ€7Ç’ZŠ©s,›ákd5e{é–µ5«Å{Ê3šì€-R±´Ë ó ¡Ç"o(ÛEŠÚeï~½0ÍØ1ïÛÙ9ëÇ{’P™hhSÍhŒ1LV d{Ú ËAa­Ð²—â~ä8æhXwN8°Eʶ³vž¡ PXJÉÖÛÎRÒ.{—õ«`G¼£///V òŦ‘’2rDrÑÀ”ÈPq‹b€G12L6Àù5Á¢ð9³òHJ  zÍÀõÔÒw:VGó§ú¦êxI™’( ù“e2V¨ÞÇj‰T‘ÊàÆIt¡×˜¾}©Or>39åÑá±9‡\æDÚÞµ$±‰5*ÁUŽÅ} Üsq N)?Ï/ö«3î‚0ÿyöWÓìpc“£t¾øwÝ5ðˆxJ…òÎûx÷Ô5œ"rC‹î0OñÓ²[µàS‹‹%ø|—g|70_m¢¡é'Q˜T®¼‹I,.¹;žb¢NY #ªÄr2ôñÛü‚ÑTƒtAhÙ¹aÐÀü¿3$ƒà Ž‘6¿è–‡C0¹Õ‰˜Å*ãÆ›ý Päºb(~]تbdùeÕQÖ SU®"Wšß6ºª\EêÁiG™»·60£û? WãÓ¬†ÛÃ8×åÆpÕç*Ÿh5y9^|¯û2´Ï¾×ð&òÙ÷\7û>"ßä»_=*À¸fßkxùì{ w-Q—_sœ‡-¾§glõ"BÝpt½ïG8øxñ½‚;Ûâ{n>œ†Ýã¿S^ùýúÙ:½0üð³\FL.¡çË®Ûí¶v»Gønžö¥2ÿXÿXo¿Á—ÆÕv(×û\o¯×[|¶g’£;\þ5—?´¥³¯÷¹³ßæŸnËýj ë<”•ÝÃ.2‰ÃÇõn»ìàq[Þ'ž6ÿ¬ö°ûú&¹ëÙÿx}ÀS endstream endobj 52 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 37 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./Figure3.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 53 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 54 0 R/F2 55 0 R/F3 56 0 R>> /ExtGState << >>/ColorSpace << /sRGB 57 0 R >>>> /Length 1535 /Filter /FlateDecode >> stream xœ­YÝo7 ÷_ÁÇØQßÚ[, ´hÅôÁMÜ-c·vÒnÿýHIwÖ%Fr:ô¡µxÇERüÒá- ÜÁ·Ù|…4àµ0 áhÂ*Ø.á#¬g'»?ÿ8…ëÝ …”dú?¯w×Ýë³Ë¯/ÏÞϤð~Ì®>„›Â[úw7Cfƒw³ÓùìäI›ùP0ß‚Q§Ì V$Ð.ea~G«c˜ßÑëùvöûü9܈ái¡½.€ÖÈÔ8*6Ÿñy¥¢†PD3J€Ödi¥5ÉñI€Æ1”æÓ`y¥Æ Ahw@€ŽQx¤-œÐî÷O´TB{0ÒG¾^hò yÞÙŽº&nƒN8ß¿W(œì±™*²w÷D ­;¬ ¤$v² •¸óÞåI¯iÂõ¾žp†ÐżВ¢’„YrE J•` …ÖNÒÎzáDZÍg™VÚK¡HakÙ5cÎRH]Ô§…‘1ï„•àuâÈ>»ž?å¤:°•Se+Z°§ yŠÎ G…­!$xZ°§b$8åî!M_s4e]T nÃ(G ôÙϼàÐc“ƒfú1cÐì‚Qp œ¬|ëQÊ.P O ƒˆŽ’ßpáiß”÷‘àŽMã:É'œ|—V£Ö§ýG  ræg,!Ñ(£ Rȸ, ­8Ÿ#i ­ðãN_ : û ¹¥cOŽ@iYÐ*ùÀá9kG°Be¦…‘ãéÇJó‹±}“÷éZ§¬xŸÜ'ç*«)äeÿ_¦¹PR4Õ,Ðʲ.½/µJ™PÁ©7À¥1Öp/]œ3Á×ðв»Ñ–Û‚v©;$<è x…’¾¯g°ŠŠO™ñH²Zö§*‚–‘\Å(¢šðI…Ô­LÑ¿mÿ„Ç@¹;|hÖMŠï|zž²X…‚džð)þ߇µìàýÈù<­^97 1éwßm”É\vï‘"‡ºQÏP蚃c³QèŠCIò^%£Ð5‡‘ܰ÷™®9¼çBºçÈtÅ¡©øÐ¬Üsºæ°d]%£Ð5Gˆ\ý÷™®8: Ì ©ÑS§î Y3X'¬Û3d²fˆilé2Y1 é’¯”ІiCTÌew-Å4pigxÈñ¬Ö7-ÅÔòL”vÏåHo[àÔT©1ܧl¾::Û.) àèÇñ'˜¿''øtv¨e6z¿¯ ñ<ùSEÊ—©«£¿Ž©@ Ë]ƒhu:þ}e?ûçvÕàŒ$À¦ÒŒÙŠ77«†³,Tµuš\í$ ”r]w+ÕõÝbµlÀcäSw+ñp~L“3Å= E“Ê™“4á>ÃOѤ¯išpÇs?E“êx§iB½/__ÒD¿$ÉE¾•:—]>náW$Yßo¿/od!Ý[ƒ{ów‘Õ¢“Ri0(EÎA Gÿ¶ˆ1‘{о¤­»]çå<]w?SU½GîŠÝûBÖ]‹Z­Ú7¥BÖ Þò§ž!“Ïûϱ¶n:™®8xÔrU—/tß–^vC´lÿ`ΕƒP{ž>mÙép©!üÉý"ÜW)ë§îÞÙ^ÏèlŸ /¶Wð'„Q¶OÜ ®±ƒû†åó8Ríi±Ýð·‚ëÐd;ÕXSÃo?÷ún-Êk)pGÝ|î5<Äæs(ß°{g{}¯kȸÎö ŽØn{ oP¾³½V¾ýÜwÒå³í5|¹à QWl(ßd»8¼OÛ†Œël¯à-Êw¶WpßTçS¾WpŒª¹ÖUßèÖÐn{õ)!´×ùî]‹íŠÿtSÃU¿; ó™¯ÛÁ<Ù!ÑQü ‘f=cóçKà0 óÃÅêØx°XßÀ+“>Ñ/Ñ<\ñ_†,]\¹|Þnó×ùgEÒ·ËÜîàky³ùºa…xùp»Y/Vð°5íNï?“›/ðõ‰QY¹ýmòbö?¬Ú& endstream endobj 59 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 72 0 obj << /Length 3439 /Filter /FlateDecode >> stream xÚ½ZIsÛF¾ëWðHU‰0€nl>œÄ{&‰É“J%94Á&Ùc, ŠV~ý¼ @AŽgR5^/ht¿å{ßkÊ_ìþâÍÕ«û«¯u¼È¼,ãÅývi/ËÂE’f^§‹ûÍâ—å«·¯þùöû7?Þ¾ÿûÏ׿ݿ[h?ö‚0‚%fǯ¾¹¿úý*€aœWŒ=? yyõËoþbcï¾§²tq¢™åB§—f ‹»«®|ÙäÅB‘·.ôû•§£TÑøY¢þ%éxñ¶Ô‹¯kXõ‡ah% ®F+’B¢à©B"?õtñ_»Ý±¹Ò¥½^™Zê—׫(VËW¦(êºÂN½<uÇÃõ–Ÿ0ÊB··2Ç´­­v¶i§3ﯣhé:S¹ü†4î/VAàe‘l íÓ¹_}?´›ëUùËõ#?ÛcóàLqÃM³³"µö“tUòJ^À×iõΨõb†pìŒ?ñ¶ãY®ågUŸX°¦•ouu¿´í…Û˜‚[“wíKò‡Þ’/^z¤Zù,ŸÀ‚íöàÂ_º‰è/mâT—¶‡‰ÝHpØO¹=ôSâp©ð €ŽÙ"ñ¢$ …ƒ*Ò åÅAÂË7׫x¹á¹›H£x±MîÙ³IàÅÉ_Qù÷U!Ñ©Èì“XgqïŠ »DõÔ c}‘ùž]ho°†Ò˜ÒᲬ¯ƒ%ê€Jî#„"ÏÁøgÉ o™~¦ Ô0N_îah{E}²¸¾†ø4e‹kíÏ'Q^èÇd›øOl_ˆÃ„Cß¶·uƒBÂN;Ax!¡­¥ÚK•šî}g« hðˆ4X­JÏBÂWèŽMEèŸÀhßGŠbÉžMBšÄnÃ͓匒.?ã åôG½;x¢ì¶Òq(¬W)/Õòý¯]›Û)êSuûÄÉ_üë{¨:VI¬—»Ú-ŠŠ|»6À½‹ú˜N[À.Ú%ÎYs]Â Ž êžïîToëbjÏ’J¦EGŒ14Á*Qª—®<°6,w˜µ+\÷È ôE|>8{"èÀF7 Oƒöt" ÁEsëpY_·Ù fA´¼³y]!g‹|E»ÁY¥«\éþ°¼ žyæK•E“ªL …aØ` œ´¦A§”ZÎCŸÛ¸º$@Ž’åO\™íåµ½mg¿'Rá”!ÈaŸ¸uEËC{ó Ÿ TÞÑN¡¯>6­-lËïÓ¡»uål•r(lï¿* sƒ…°>Âô±ç¶P]n̘#vf}Äê‰× p~Ö¥7aŸ“â>Ì ëB0gÀW•¾,´÷q YW_”öOËmúz‘ÓÖA(~O¹oY¯(Ë;Ï÷œœ`€u‰Òôv¤†FYÕ´€‘I sX=Ï;Åà |ôï‹þýžûúà@í‘)ìY]Ô@]ß5kGÖ)¶7¦3ƃO…èkØÚLüA€4$'…%NÜE‘(¡‡Qà61 P©ÇÑ¿›¦s;Sñ ‚7ìþGa~Îsp3ç·4-Ý¿uÃ-`šR6«4ZR AïëÆAŒÜ¢“IÏ,7²,ÄE!>ÙKA`"Ò¡>ˆwb·íöõ¦å† ß<¼Ó½ˆN$RIœw!ÍìZæ ‡“Ô{Qô…V v¡âþ ¢.üå ê¶ b!ÃsÔ$‚|›ÆýB¨°;À§þ8ðzMêߌ!¨ ½ –Šð'$^xª÷{¬‰½ËÔÇ–@Fí',î +ªà¬nñ  ^ãòÏDd D>ô¡è쎤ä‚qŠçÐ, î¹MÔWz,ÙGž¶©¹§ªe¨°Õ¬Éà•r¾^…á²1·á.Óæ¶éŒ«ðd³€÷öÿÂKTacåm= ’beºGÚ×=e|lZáͧÜ%U9B' k3¤]¡Žk»•”äMî^'ñ-Œ_ù㪛âyJK¡æƒz‘*HggÚ-÷K™‡;vùžÅ/ y´°f8„§xÃ2纠¯Ä = n­-X’˜?£·žòNì>Øv–†oJ‡ëÓ-.Ç<>q‹{·Û¯ Ð3¢kË} º?¿´¶üìéåY‘Í‹ôP“à"y:’òU]åÅñ3D^y/!ò¡å‚,ú’-ë’ê¦biô;w …¸a¦{’÷$€ÔÚ£•¾ <ìÙÛâ€R,ü&ÁX}`„J&QMÓlÞµÏU X¡žI$PVÙ-¦µpfºßÂþz 5OÃ¥’–ªûí'º3ľêXBâÊgcßG‹˜œ¦é9jð (…â‹Ø×í]ËñyÌáLîdzÍ#гj ÷_l&Ñùˆx „Gäî“ãë"¼@j!;È5SWœ Œ»ƒ~—;Sµ<êªùÛ“¡l·r5—wà«…ä‰#Þ,…—ûV¹þ§drFïaö¼šÃêá'rú‘Ô”q@Ú‡2ßµ{ÒõÆ«Ãݘ5)/¢õhñ¦G^¹- :©W·‚ÿイ^ty«j„]ábA‘ÿF$Œû{{È¿… •Ò¶DÚf.ŒR/>oTîI¥ˆFas.Ô©Ý?\Q ñÝ9¯1Ù¯`/š›¶L÷‰ÔsI÷— ¼Pôí / †}®åtňsÖ¢?塉§Ï¿âÒÍXŒwt”0ˆ¼pHÃ5 ù8$Pº úr:ìˢв1“ꈽq<—ãðÄÓÙi…bž®•ï7åÉÙÊj/ä'Ì7»š¹˜Š¨lÞŒ'h*ËÙßn¦Íä7ïú¦Â&êÏÿfx,0úä÷¥÷®ëZPGÿ{Ów?óÕ)5>ÜÝÎØùòBl؈÷îÄÓObûFìm¥ñFín^M㥿sžƒÄ'»zS›ÒHÿ@eûßl×JÀõ•Q![¢âCžØþ÷hN%ÇÚͼëI`×4öçÉø•[®ÞAɰœÜ^<óÚE~þ¤‰Ô¹´åkˆÊ|e#=*Ea>.èÍ¡JÚ!Œ/Ï3„½0ISõ½çÀÈ­E|¿¸Â¹»½áÛ·, ?ÁÇ¿áÌÜ߯Jbž^‡’Ü›Uþ$©=?‹@?¾—DYï< µ¼¥g8ºsÀ^¾û…îW2­¿{ô ¬þ[b¡-Oc¬…yX&8‰§­ìàP”ÿˆfvbå¥QÚð«º<ù§xë.wüÛ–RQŸ/ãsL·/aiÐk_n‡dÁiAu6Œü×FØÿ[þ¶(,°±ëîT뎥̬.f¾ÅBakrëñÀw@RfÐägrÀºùøQ,@öd›Õ¿(/7…ÙÍ;M½$‹ŸØ: ž³5¤¯:65"¡äûšžz‰WĽ’q$àŒá ü‹„ÆÛäÕ©ïü2ûê(ùœ}S`'ý™î)9Ãü[b‹ä€Ðº1­¹ ð3/ç½J_f¿†PÙ†7R%@>²Ë»+ˆ†‰òè‚^ãA0=ë3º¼1ýà´n endstream endobj 39 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./Figure4.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 80 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 81 0 R/F2 82 0 R/F3 83 0 R>> /ExtGState << >>/ColorSpace << /sRGB 84 0 R >>>> /Length 1735 /Filter /FlateDecode >> stream xœÍYKo7¾ëWðh-Í᛽ÅFS @‚¤PAŠ-·6d)‘œ¤ý÷ápw¹¶à,9ô`‹\ÎGÎ{†» ^ wâóâø,\’ÊŠ`¤µÂ‚•A @:-ökñ‡Ø.οÿv.® J)¡ò®ºå‹Ë#Ë—oJ'¾-ÞJ\/@¼Â¿»™x½8_.Î^r³¼Z,÷ÂËdRñ€‰V¥vby/N6§by‡ËËýâ×åS¸•‘áy`‚–> c€fà I|ÂóH§ -ý€LvÒV:Ëä‘1¸OȘ²6d Ú€GÆ;i½Ð1Jãl „IIÀ#¼4NÜOŒÒÒa••u¡‚4¨Ô¼wÝì ©-xéC¿®AzÕcyVöÎÔÝ%é°:"“Ðí]f™šÏ.OzN3vÌ÷Õâüˆ2¤)º Q蕸™CU¤iΠuqãeDî\aš3 ;¶e™ ¤F†#ÕL±¥T¦°«Ÿ¥SGàuà¨>ºž>¥ :r”×å(¦,j m“ÜÖÈ3<HS)!c÷§ßS4F]Òîâ$EK¬gë‘ÈÑJ;ßÌ ©`ÜÄÇ1_àfó‘Áó@§(“Çà·”xÚOGæCB¸'Q¦¨N‘…³îòˆ|Ô…|þÄ ð$vRQÄ"¬–0)aºŒç òˆâ9!ÊÉ0ÍúJÚØ‰`IY Eÿƒû`9®dÔX1ªÿMš*†ÉއAˆ™TyŒh¬!7 ƒåǔߔU´ ”Uç¥ó9öc‡ÅªŸtYN¹®Zªˆ¦[¶Ôæeé•²ÈØl*¬bA‚+«¸ °èŠTÞ ¥ÙzÏÄ~ÈÓÑa¨]­:’F+´6ZÐÕ*$…UĦ¿œ„úeoi¨C T †;¿jYç|K‚¬½~Ä5§7ãP&¤!'¨ûžÿi^û~Ï_ìÄÚºï,ÍÓ¸ìÖ‹¾z‚2¯)XeÏ+Š¢¶ž¢Ìk VÝ@Áóš‚Õ7Pð¼¢(ì)ʼ¦`5<¯)b"¿(x^Qtúˆ ¸vGP¦5{wOÀÓš€ý»'àiE02Ò1&Ï—skœ¥ûÅYâj ‡‡–—ƒà‘ÓŒÞ^·Ô8G1žOç*aö-pìu°G xÈIöýÉÅ~}Šn&N¾~ËWÓö‰![Ý·´¬ovÓ™À»]ȰPð÷ýÉŸ§˜œ…õ¡p&;ÅPp/þ¾Ý4(#oàrÅ–âÅõ—Mƒ- UÉ›ÇÕ,7‹­}×t”¢÷zµY7à!Ñɹé(þðò/4hŠ{Úhº5 '•2gqBíGŠ?„“Þ¿æqBˆÿ!œTæÇ ¶$|ŽóÜN>ÑŸd¿¼Ñå—ý©øp¯¯·_×× {sùUUµÙ‹¿Ê^-qz t÷ynQ«õsOïd¯¯N3dŸ /²WðG÷¶I²Ï<®u£kÄæ¹©áζÈnéÕC7±Iv̱¶†ûÐn÷úÊ*Z˜ÇûŒá`ší^Ãcj¶ûˆù†Ó;ÙëëvCÄu²Wp€vÙkxóì5óív½*haže¯á3ì>‚7x]‘}Ä|“ì6ßͫ׮!â:Ù+x óì<4åùï’nÎuÕ+¼5´Ë^½á‰íy¾†ß"»¦/j5\÷§Ó+Ú)o_»ì£ò=ŠÞìb¯g÷Sç«Íf·Û¾ÝìÄ/â-÷ŽØ­·}ö¹]ùø¯5†üpµùI -žXm¯ÅÓNíÿ÷eÖÒ7!•¿Tà襖Ï_fÓ±Ï,õaƒÊŸ>=ú5ëèQô=Éû¦Ñjmxdí<§V•>:MgñUþvϻ⟠Új¿^‰ÛƒøTVvŸvd^>Üî¶«x؉-Ú|¹ÿˆî°»Ÿ¹›z¸›¿[üfÉr¤ endstream endobj 86 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 96 0 obj << /Length1 1403 /Length2 6029 /Length3 0 /Length 6987 /Filter /FlateDecode >> stream xÚx4œíÖ¶ ZÔhчèu†èÑ{ôNDc0ŒÌèD¯Ñ{ !: ¢÷ ¢G¢'J‚ñMòæ=ç¼çÿ×ú¾5k=óÜ{_{ïûÚ÷µŸ™õp°ê (Ø!m¡ªHZ$”(išƒ€ PD&âà0‚¡áпíD&Pw ‰ú„’;ŒÆØ”Áh P‰<ð€@"˜H\ ’‘îRe°'Ì -x€D@QDJHWw˜ƒ#Sçï[7„’”çÿPpºÃ `@Œv„º`*BÀp€!ƒ¢}þ‘‚û¾#í*%$äåå%vA "Ýdyø^0´#ÀŠ‚º{Bí¿(tÀ.Ð?Ô‰8FŽ0Ô_C¤=Ú ì` pŠ@aB<vPw¦:ÀPC  ë EüÖú ÀøÓHô¯t¢%‚!~ƒ!¤‹+áC8ìap(@WUKíæ€v¿€`8 ‰‰{‚ap°-ð{ë`€ª‚>Œaø‡ âsE£Q0ø/ŽB¿Ò`Ú¬‚°SBº¸@hѯý)ÃÜ¡Lß}„þ®3é…ðû{eCØÙÿ¢açá*dŒ€¹y@5”ÿ`0&¢Û h€(PRLL€º ÞG¡_Œ|\¡¿¿Í~®HW€=†4fÅ|ù¡ÀžPÚÝà÷ŸŽ®ˆ@ € ‚ØB`¢gǘ¡ö­1çïóX1ò€¿>ÿº³Ä(̉€ûüþûˆ…ÔTL ÔøþPþ—SQé ð–HŠ H .. øgžuàoö¿­z`ØŸÝýGF „= ù L÷þ&âùGÜƆðÏ :HŒž¡îËÿPÁ\@ÿç!øòÿÓþ¯,ÿ«üÿ{Gªpøo?÷_€ÿÇvÁ}þ 0zö@cfC‰™ÄCM¡ ´6Ôæáòß^ 43# ŒÎ@÷÷þ²ÃPª0o¨ qüKK¦†€ê!Q°_ÏLø_>ÌèAœ1ÏæÈ~» ˜Éúg]i÷k…EÅ`ww°F˜•(À„™U;¨÷o‰„H4&€á°Gºý:X(@ÈÓ#Œì1v¢ä†x¸»cÆï·0…ÿ^ÿžu(Ô !šŸAB¤Ãœ^…µŸ×(0x lŽà­¬vF'š÷E‰¢9gŸù9jág«Mº)ÚØ½¸3œ¡7W11ãÏÀûå|ÔûQwnðrºz>K¥o]ñP `ðûq·”ÙIï0&ž½Nq¤ÏDfckÁ•b:s.Þ#²ýr«èªµýPrà(9%gMg@Ç)äuîb?1ge_E™?"¿ín‘éa¤akhiémn_†ÈQ¡foµØ‹J:*߬yÃÉtÔI¹šPXœŠ¢§Jåi‰ltÅ.œË86âË?¦ ûÛ’D<t”‚oé>~×èQ‡‘ÉëY>b´ÞÈ1ú.Dr§99Ú‘¿&ƒ]‘£Úët(ó Zžß‹Kà À«ë\¼ÖžB––™ka/4Æâ?±Ú¿sn—¶L“K ||®(¦gv¶7]¸¼Ÿ ¤ç ÔÓÀÑauZõ¾Ë/øíy¬ÒŒ%qò©ùmûPOä!’ý õdp¢YGö& ÑÓ÷&¼*bèZÍYd—5OB^ÂT A~®^[§šôCyɹq¶²#ŠY#­m¬LBs©p… )rRJç/åL/ªÄÞ=“ i–I“>^?¼¡¬¿—@^»~K¿çûM«D[÷C!a+Íü·Ž6¥:\Ð÷a»‰—ŸÍ'ƒÅg–óZS–=~”o÷#þÛöIÃA¾™B]ÔCxtj×dàºõówLûã3_ïõvp¥m{«7\œâRÚ©I °…Ã+D[•–ú©£-úÁZí'Íî=ïìO¾ƒ,Τïm»Z}jÐ9pýQᦨ ¸MÆ5.)²þB;ˆSÒ—8Ê$P™ä›ÄmðxCˆð BËѾ‘h.§¹@S¸kÁþ¤9†¢îBÍõð´—q‰²µ–QèÁ€/ä §8DU⇧žÈ‡Bfºbo}]µ_ïn[šº1(‡h·àE™ß[)=Žh¦(4O˜~Wh¦§r¨u%¼n-ÜrëEK9R=ÍDë=IG5¸ÃÕÕîAç߆$9?½0Õaa2ÈVI=*ÙÏjI˜Â>ùÁ™ºž gQ½¦y¨EmàzɬšgûµäÅX_$œDéÜPR¼ØÃMÆèi? å³»“«½»ÏRp—c„ð.G±}yahPµeYá±AþV¦Y¡;8Ϫq+öÕÔ«Ûw¾Pü´FO™Jgu½ûš9à!Ï}·Íû®”rê–ñ³\?ÿõoßôÀ"›ªepœ´Îc oÜ*ü¢It²º©BYÏ‹5é:Ö“åñŸ$J­CT¡&ȺŒEÏÖ¼½d¹žºTéÔÜZ™á²üaý륕Ø*¿7¦eÓNìßô4PJ›+ÆÍÕWv$¢#’·æÏ Î%ëp¾MgkßVÐ8׳®¨ËòšÏ¦,±ÓT÷u憜‰„zÿHdŽ Þ32ÖÓ¨³÷Ó-Aч1¯n/ØÚóìN³(hù1Çܬš[ ¿›¥‘rûþ²WüƒçËžIÓüýìõlŽÆ¥Úr'u»r«)®¼3a➤³´2‹z TÀºYŠ|‘N²¨Õ¡HZ´Ñf„}k€ÞG¿$2´E—'¬ž¤ (>µ5ÉAN¦F\t‘làûœòøØþ³_丅²ã‡“û…~YYkŠiÃ;3¯ûçóPÂö\JÇ>Ëk5Ö/§^Ê[B˜%Rjôân\¡t[74£.ï9ëÊÐîÿ¬”Ÿ1$—}€ó/é!Už,Ón9c¿Ïâ%'pñX`ÅÛ;»hû4õÙb5ËÞÄ»y|dI!OKØhBµp†…u %®­Yñd³m¾ “c¯V}™¯[¥ î0d+Nø”véa…eM¤ z”%¦(C±Xè‰XÌ2Z'x‘•P;ÖÎ>qVNi)„7"à5Ñ?(Ÿ?•Î÷„1FzãªuE .®×O}œö« Ñ)Á:pä@}¯ø|˜Àj™]Õ)¢ ÙØ¬2YØí—g[ž|’›æ'ÆÞ?²EÀS2ÉÅ’®u£<{¬Kñ >¿«“L4Xáèí³ê»žv'2œµ¸‹µwK×=LÿÔÕ¿á9Ç,éLìCOÓ žìã*M¯<8»Hq¢ÛåŽK„YV-åØúª)ɱq„øC—нX?Õ¦ˆÅ è}bßjj‘ºîxÏ3دrwîS±WUïfƒ@K#ñ[a,!†>Ç×ø€Èù.†Ø¹´Ä.ÃáÕ/éßj‘JŒ½>™ƒ 7Œ!©æ±«br´Ô‹ß·j~89nÌãÉü†ï–Ç7»1÷Iëi+ÎϹADi­ý.öÊF@¾xÛïŠë$w¬vü´mX6XDf'·TkFKÉjþæÌYÇ´Áüõ¾êÜýOŠuéŸë{ñW ö¹¦Ç¬„ç8ÈØ —W{.amX±£dŸáþ.¡È©·{å÷èô7[©_„ø<¥ôOIXðd¹}À÷8±(ŸùMªJ$þý«yœdíþÝY¡§L4»è¹pœKuhvļžRýgO/ÛljbÄ%{$_ðóó,@ ´‰¯cSùü·k¸7ZL¦¿®Ä¨•UÁÅC4íL©|—Ýó­÷e~¨±ùqUÜŽ0Ó”pwÝéM«8 óúP×8ï;©Õû0Ì¿%Zùsÿ=²ï«@•}ׯú‡†ÍÇ «‘UQuoWéæš6R[º;ÐðÎÚQõ« ,£`oÔ¨v!S¸^4oý3(´<¡Ä¾¤ËËy!òó¹:ˆGœ ,Æ7Þ{Âdšû\_Ùk"ëº};Ú÷x[¢¿Ï¿«XÖîÚÉÇ(;.¸·ÁÄe`+c•έôƒÒ]ÒqÒÁÜëÖì’¾7Û6¢”–…Þ ·&õeFÜ,E2ñîgHÆö»Mk<)@:UïkžRz;´ òãœóÙ‚jf^}%îÕÈ+kè?Ä >kÔ@ OÚ:¸î›w¬àAö@B礱ùâÁ±¼*¢w3ì"¿!ãÓý,•*dÙâ¨ú:°ŽGñ>G¶bMÝtŠy/ ó#x¤xäòH"¡OÓKßa)Î5—dEI"8õt´g·–XË$úñÉÛëËs*8x”Ä’ƒjO­Ä&±­Üú¥~Œ1~Ãõõi_<ó>>*[ÔGÐ,4‡qrä%Ï×-ÆB£‚}¬’S;f~¡seå»§¥ÀÊBЗ¶Bí%Ó*‹[tSÂ.¸ÜTÿ3‡oØÔ¯ZæÌŠè {DÐ>À7Ïq§îF÷Y¤Ü-b U¾«ò>$ÙÕµZ•·²ì[ír¦ç»î”Ý(Bq«ˆbÇ^2”·šaÏLê[ç¶ì@{¶ïȲ“=öHu¯d2'8ÙIšÉº IÈ3¾ ìÐ[£É»l¦Ùƒ½hÒÈå;ÿðøÓ!âË騭ºi£öTŠÞ¬ÄE­ÑÒ»GŸ­”aeW%‡R¨ûO?4 ÷°~¥Z6޼ðÏÁJ¿‹÷]Ô$l×~Â8fÇM/8àìrÒ_æ:6ó¦GT×_¯ï*[òk)s|ÀÆf /Ÿƒ«B ·Œ¿S¥°(…Ò`ˆxηiâäƒôꆌ9Fò@ÁÏBªe ƒ-ÃÀÂt´Aîjk ¶ £”Ø‘ž®‹T/ètcÆÅõè˃Hd½|MíZzðµõáŽÂd Héš>õç.Ef““Ç쇒*…­4‰N2DO,啟žúyݬ¶&9+Výâ0ÕUwï©bÖ§œ=…²ÊÛ«n¯Æ‡ÉXV^/OÜkÀaŽ,Jÿz©gç=aÕ1ÿŒa_¾ØÉzûMÆgîE¥IKÝž6‰ÛjÄÑžtzŸ©±_ç3„ïŒ ´ŒÞz—ÚTFûa¬Su$+RS›"sçE·=+í ÞᎠA<¡m/¼7Ñ­ÜòóóO²}I Íò½:œ.yKÏeÍXߺ¤A¿ÉÂiHM¯Ù&M”Ô??•xïL;tó¾Ïy®Ž 8§¸¬£O°¤ÿ­S_ü& .üмÙYAÃ2’‡Vûœ,°Ñ°pëÚ<}Ñ@‡‡—•0ÍYÆkÏ4Äu ‘Ç"[»sÉÙ4èe´¯(㬓y‚~¿æöõÎ|_*„ôEPãý‚Ç>\.{¨ûYÆŸƒ%]Y­;±KõÛ¾mp•èä¨Õ¬ÞÌ”%Åî+yídYq,b&û ÀWn^y?HFç<üF‡-‚„)ÎÏÖÖœ[–m^‚÷Ó“ÎÁç2‘säZÌ9Ö@Ðq´úzI‚²×Z˹eQqC"õ®Ý3?•dê¡âÞ'^Áót«Y‚ìÔ&«ÛŽôèÜS_gvggvË{»ÕÔ¸‡ûæ‚‹jò6%\Ótù£áã"OO3\YàúÕÏRô·²¢qmW˨…\o4?c4JqëTÀµþ9­@‘Ü…Ø¥Ô]è¢ïÇé+}º+/ØåhÝ&þnŒ¦~7÷ùW.^š+7³ £ˆ#ô}†éXç#!¹ra:ž¼á1û“–êý´ÕµÂsŸ»ÜëÕ6 ~ 䥬íú̹B@NÔŠwˉý¶b%_Õ´û“•• ôÄ‚ƒ®&cœþsö öW2TôCfsåvìäE <ä–"ôé¤;ÓŒÓX¼ÚꌽôYŸ‹ó¤•잯fÞtwí «Q9]å«RГwEAÂQLè´}5®³5¥Gé­®<¸/xNñ~æZ³dSòÔNs·\ä7ÜÒÖn%j¨ #që÷äl¬:SZÙÑÁjÔzˆªó2ÒóðK¢Aµ·ŽÕœëå=áxú¢¼ÀøIF­ê7ãs=¶6Íш¾ÊöIóN¨8¥°’;í”fÇÀ­U/íàŒ/Ù}›Û\C 1nóòÛi›iêí-…qu©ú—ÏVÍÕ™lA) kmê~Í^¡VæÙt¤üDÏØUËÞ§«+Ï™Ð˹áûLd´Pé-s¨Ê´…ô ô+FâΟ¨iÎé9Ö=Ö©·hÆÕ²Þ‰ R"84¢ñ]ž´'Ü&¼?•ž{|ÃææWY4ó€«ýju‰Ý&À€,!ðQYÅšŽ°³}!øéñ@\äi ùNý‘çêN×I æ¢©_®öÔ²ˆÜlB\¹ö‘åw)S:i* O–ÄpòÌ›fkÒ7ÃY’ £KÍ(õV5¤åòYŠ¢‚·šP4{8§Æ–/C“e&Ìb~ÞºJ­ä¤–õ‘©Žà]¶UÂé|lEÒîcPp¯-€s5ž÷•¤]ßxtr6—?ȨŒ½Z —Â)ŽF“aŸz¨ùJk:Ü[8žˆc–nòàaû\'}ñÁ0-½Ç³cøðò›Òã:¹®¡mBɪlbÆ‚5@Ùm<쾚úSa@:¶¡©Ê ™Ý௨ÏËû¡ÞÈ–«³¬ï¼.Åt—žä¡w‡E) MÖ†Ëëøª(Š›ª^¼¾d©3F…d¿œ)ï÷ÙÞz“‚o”«$z©æî°fŒ÷†\ô{BdF,§MBCW Áã´%µŠ9‰¼Œ’‚jö;Ó;áºsIôQ.¤‚±Ïã_XtÒŽg"uî;ÝÝ"øÉ²ý¦ô‚rŽôµt Ùaø#íÀ§n©9hB­ÜixÄ:åì{ÌšQ‘¸å}ŸŠzÊ·É(åcsªRÓ\àS6Ž~M}Í€…o×<”#rS¢IŽ9ƒ®ÞHH ^Í”¶mÛÒ{*BøUºøäˆEK¢8á’'f-z²ã‡B Õm)¹tê\"ž¡±î(¤ŸÔIXÉÅ¢øc¥®¸l°³é…sqayö°Y5Wè«/L%4¹dÔ=÷K_Íê,Jh!íœQ³¤"䑲ÄYw迦O ¹ÌÒì¨%ùTÄku6ð²ìb%üú,b]Zž EÒÝêÿJž×6O]lGïI÷Ä;Ï<ýô'‹Ò•òäsk–ʽ§âªrÈ;coœôÈ$׎^°åt;¤(Æ<í›×û"­h¥Ÿ [ž"ò½‹Wñ–H]¨¢ ‡½iE£Ÿtç:ßZúÓæ=K&ûë›Ij}¡7Å›ÚuР<¹¹îÁÉš†Ìä{Ž8–1%¶‡]„WŸÛv*­w„ïOœ¤÷óá’ï¡{*j,Ærk£èü,ו/âÐNÒYþL‚.i˜óÄ ˜~Dß"d»>Ñ{¤m¢J=½åsÖØ6•”µO(oŸ¿i<AG6V^·8UD”ôú³•Öo|Iœ!Ê´ žÒŠqÌÇŽ7¿M]Ç3‡w¦^ù™r—#_=ù•÷¨ÿ ªå½_¬žw_U“b}#rîæÈ¾cé­–‡bãw±\ø—' LÞN Å}p‡«©ælH¦lãƒ—ÎæÓ:0¼B*šý\WtEo#Ì«×zÌfµ9ñÝÁí§$°Ö^¥Ÿ[Ú•Mæç=dV0ÇY µ?­4¼¼C¨ûýë®Íí!‚R×äL¿æ•2 1Z¥tÍ+%!¯š§.Tø•† ß³¿ÔÿÁ<¡¤uRxœÔLãéEø±³„)\µy9ç&'Éc¶° •Ù‘ÿFi\²>bÏç, ÕFû<˃(v ›Z†1½SÜJ%^˜OÌ!ÚÓ{ZÊÃN?‰Æã¡5Õ+#;¶”Šç¶|Ûݺ–sðjï\b^Gëbf¯”È»”5™uñéº#ís¸ä½,íKL²†{,vïÆ‚T¿f¶"Sñ¬"XÓÍñœ¬fl¾áILä{±iÔ¼|1 œ_¢²½{šsÃ"Ç×g,yš ªZtžͰ3Pسáî —÷K”¹éc*Ûuµ!{‘T½í#¿ÕwÝb¼zAðû•B¯ºôÄ/ýð¾¢­x9œ•Ó;¡õð¦|yäûƒ4»ÜÅGX=#Ø[l™g\_†ü©YeE~ëãh{ÛŸ[M¿L½Ã3%àפ›ÐR£;s!LnPÖSOæýöÓ.K”~Á‰—¢ÃxÒZû•áU[^Ûl<ÇöðÔWº¥6SÃgú‘ÊìÍîáhW÷2gmâ&y<ù(çëg"i™ðÞ¡h´áÙÖ¦à}žOB®çËó¯+Øî7xeª@“EÏùÞÌ× JqÑPÕ¶”~Ëü¸m¥ÿŠþä°Æ~;ß©ïHGï‹ïI‡E¾´ö˜CRÓ÷‘UALØöåúÊ>ÿ:ÔDx’BF›IÉC%ü2`ò±Hj’Þx^x¢Yv5û6…¬Kß´õY¨îÕ·‰¤{¼º¾?Z!ÍÇNÔJsÎË•ssc” {;2»â·SÍïdÕŸž¿=ÜáWE i¬¨Æ¤ åÊ]¾‹ÉZ%±£ëu„®)rÓüÅç’à:U»þëªzÌéój€턜7Ž™:‹8¼ô3â-nåN¸|­™Âý¾·UNÑ“Âg€\hÔ—¾`¹›¥Ïå;H£r0æÇq/ÿ–µÚåh®,êÃÖÓ‡Zž²=îœâw¦^¿úñG“ô9Xp޼GˆŽ+fÁçvŽP‡h5ùbþÚ-hÍkÀ­íí ~jÉ—aË‚¹±i«fAâðgÑœyKŽ"'krTéU­GO(¢¾ÞνÅʨ±·PÿꥪæÞ·ˆGK ¦I:$g°Ì¬€¯W ÈxÜÒ’eÎ`µ Y%âÉW×î›DS8žÑpûHžG1¥R&¯Þé›v#S³Ï÷¦YžSÍSĘG&ð¹Žû¼œ5ëÓ Ùâ¬_+,/w1ëÖÔr†^+/­Ôì_ìˆ=}¾b‹ß+Õ”Ÿ6_˜Ø:ôÜQ8U9dS™«'8v²d×`—'=bò7e¨³ ñ‘ToØ F?±l¦iG«Š:—Vµt?ÏV›§ž^ü.‡¥}|œ>V¯6L+V½i> stream xÚ´Pj.Œ·âP,8www/î®Å¡HqwJq—¢ÅÝâV ”âvéÙsv»ûÿ3÷Nf’<¯?¯|ÔäªLb`3 4ØÁ…‰™• ¡¤©ÉÆ `eå`feeG¦¦Ö¹Øÿ‘#S¿BœA`þ?,$ @S—™¤©Ë‹¡Ø ïj`ã°qó³ñð³²ØYYùþ1Cø’¦n €3@ìtF¦–;zB@VÖ./yþù  3§°ñññ0þå³B@æ¦%Sk ýKFsS;€Øtñü¯t‚Ö..Žü,,îîî̦öÎÌ`ˆ•0=#Àäb P:!n@ ÀoÊeS{àßÔ˜‘©šÖ ç)4À–.î¦ àE`2:8¿¸¸:X!€—ì 9E€Š#Ðá_ÆŠÿ2`üÝ3Û¿Ãýíý;Èá/gSss°½£©ƒ'ÈÁ ` ²T¤™]<\¦¿ MíœÁ/þ¦n¦ ;S³ƒ¿J7H‹©L_þÍÏÙrtqfvÙýæÈò;ÌK›¥,$Àöö@gäßõI‚ @ó—¾{²ü=\[°»ƒ÷?Èä`aù›†…«#‹–ÈÉ('ù·Í‹ù?2+  €‹•••—ƒt=Ì­Y~'Ðôtþ¥dû-~áàëívX¾Ðú‚,/?ÈÞΦn@€ Äèëý§â¿2Àdî0ZÿýE ´ü~™?äÐg}Y?6ëïÏ¿ÿ¾l˜ØÁÎó?æ˜EQJWFW–áoÊÿVŠ‹ƒ=ÞLœ&v€›àûßQþÍÿîIUMA×öG<9K0€ï_^z÷ ·¿÷‚îüweðË6tÿY~V.Vó—/¶ÿçøËåÿoóGù¿.ÿÿV$íjg÷—žî_ÿ½©=ÈÎóo‹—mvuy¹ %ðË}8ü¯©6ð_笴¹Úÿ¯VÎÅôåBĬìþÝH³4Èh¡ r1·þkcþÃKt;Pì úýÞ˜ØXYÿG÷rræ¶/oŠó˰þR_.ê¿3J9˜ƒ-~Ÿ;7À1õDf}Ù/v..€7ÛËZ=þZm ³ØåÅðÂÎ` † ÿ)/'€Eó·è/ÄÇ`1ý7â~Ñ™ºüGÉ `1ûâ°˜ÿý.ÅâÈ`þ9,V@. èÈ `±ù¾ä±û¾$²ÿ|Ùw‡?àK"ðÀâøoÈùØñeÉÀTÆöB ò|)Åùøâáò|é‡ëð¥÷¿àÍÀÜyyžþ:“—ýƒÿz @ 9òâ<Ø\ ئ6¸í¦ZŒÈig\h†zG;•žÉ{òÕõ!‰¾*3pr%–4Ôýze[ŠîRt‰ìÑû¨¹!¬%A­õÞçÁ8N}j§ùÛ$^ÿDÁ‘X] 1“¦è®Ï£“Ï»[Øfèyê\'W^tÕ|ì÷^º¾ÒåÑÐùµÝ*n”‡Òi¦h­(ƒ€¢Yê<³¬9 x&Ä·Xg³—W3X9Ïdòq ȾÇÑŸ½õ6Ø?ÞÎy­–k²;wRêÀ^bNÑx‹ï'Ëã/xF­ -d³Ò3C­ö‘ùŒtŸðë+Êaá³ÚAùdF©|[ëXtzP‘2w4LßÖ:¡/0Xº»KËä«4öí†!]‡C,”Üb”=½w7_]ê]*ÔNè{ ë[n!!oá®4НJ>†9ùâ(ÁÿÚåíô)°É(¡ªñî±™8vœñØõÐøÚ_&õá ) ã5vAú꡸ËlN¤*¾V3($ƒ.zý!Â%i­ef§óÝ'Γ¼Q½T^…{/wwâO»Ä‰B9.3¬F2ó¸=Ürô´Æžœ‚ù¡R…þJQùe‹JÑ©Vécè1¥°½ë.ãÒ¼{ LJ+†Ú»#¡Æ}ᣈW³zYa¦ï›S´‰#”/q"d¹tY–¶õjû ö òÂú ñˆ¤Æ>ëŒÓäFË¡tsîÏ]_¡E}‡OÆ °v´µl W֯ȤÆþY%Ý-b¥ž¦PRgøa,VPcF5°©ó#¦ü³Ðeé–þ(qO¢a5¥_ê¨ÞL—Þ7ÏaÁª¨Ú°šmIý¸™¨ ¬†–9 >âÖUß[ßö¸õŽž)ÓËyfãÇñèÜ¥Y²†U‡Ýh£Ã›~÷˜¡¥Æ™·öMsx»º•)8£ÂÇ+hÌìòXGKoVÉNnѲ½œƒ,ÃC–ªvkŸ‰Iæ›"u±WkCÕ ³°ö™vWF+4Ú+þø‘«Þ¤ùgöÒ½oVOËH²êS:ˆ–æÒ†8b¥üäðB?óˆâiòˆ­(Ý«¨¢G0 |\’f…êÔd øÖÆßdãìÚôéê\J-¸–‘µ}âhu\Ž—k+ÜÌ‹Ðà=”äò8ª}æd5‡–M›ãSÄúWZD“YææÓÛE*d‹þÏ&TÕÔŒü¯)sÏKè?–øhMö—EYâÃß–aK6¸Ü¼žµHé.Ê*ÏÈä»h{Ï@ô¥à‡ OõHô9o {“žz*|D“jÒ)üÖʤôAÍul3[¢‹ÔDàtãj¾(ÚT¾?>aϧZi#u‘d¦¬¤¬ŸÝ…NxÁF™ä÷Q0o٬ܯ÷Ø;ó8Y ssš8:D˶ ªy¼–M½§Øˆè?42o¤]DJyêÒ¶ –^r…K›¿r°igßú:?o޳ëΆýp3ºÏáo–#g–ÑåÙTËÿqô;šå|^ÉÊadÂÎáyá}±¥Õ1u‡cÞ½ èœL…”ŽÖ»$f®vݽìIcW˜AË+ù|>2E´UÇ>1Þ¹ëKz-]á/>W ž‰n‰;Á6zÔ•òC¯0åhñ™6)¶"ZÅ{J:õCéf†ö`ÀýÍ„×jfª½Øì Cî»…a¯ÕáOñæxda&FšèÈ9ªnÈ4oª«·»Ëã ¯ÕÕ3J%>K¼2ªâzä£ü%v²É 2 ~Dµ·2@(_Ë_D§M»Ëõ$Þ'SŠJȉÕÌ MšÃÓù¿Âg´Í‚-Þ£yý~¼LŠ"Ãõ¼uQwã®ÄäTsÊÈ„ªž.©b†Þ>íŽECakV83SjCU™‘_iß;BƒC†]]”Û gC„élÎO'šÖyÿò½4³“ujܵ.QÎÏ{»@ÓÒb÷ÑEåJ-DZ"“ŠŠ_[éJ|5ðßqä­¦ÍÜÉ·RPGÛœ{†5§¡*$;a͇øµÈ ߃úóÜ[Lž÷ J^!DÑît›lXÁw£jjÆÈ•9È~Ú}ÿ’ùu,þçÇëž\¬Õ«ùí€Tÿ«…Um1©cø::Ы2]¶æÝ«²¹ZSåÅ,Ç*wpšÈÔ&4ÇÄÞÁt }üÌÇ 1¾üÙ>&l·-©‡YNc.Òð˜ÜÅ–‡ˆô^Æ_ÙE[v\´f#f«NŒÉ²WÌ•„ê}Þ¾M$ee‡k½^™ŸpN®c¤5óJ‰0í¿º¬îf-X`a˜À'~o{¿&cm¶´c wqoFÙ~Ôú‚1ü Žé’O½ÅÞL:+m“˜ˆ0Q³F| _û`ýÌÄ‚Â*6š^*¢»_bëpËQ‚Öyø&fKþîÕE-—Ða?M†nÞ1ˆtÑý"tÄ¿˜ +ÔM¢*Rèµ-ýªf-úÀD:hKA…¼³ìÉ«?o ç“3=ï'±L†”qðáâa"bešŽÉ.¹ÏÓû Ó·•c{Z(±¯è™]䈭âžÂIß²Âæ:ýðo©ñ¯Þ VÆÐBêãè'ŒÙàÁèõçSqù¢Ïá}Æa…½hvìÿötÿa=I;•ØIR±ïkÛGï•“Zœ„A ÷D"Ÿ…`4ùg/–ÆÌ}YÚv=ªà‹Piß”Æ x£ 6>Æôë½ ÿ]€(ȳî]¥è¸†ÙsýŽžksßvx…#(ø8M\ð áàË)ܨ÷ ¬ön…àwié=óI•æÌÏÊTnºÆqò- o˜€ ÚÇX 6ýÐ=¶’c4B|2-ùÈÊE:uΙ]Å=,e̤˜ÝµîCÒÀŒHøŸÅmm¼ø,­¬¡í|ÊhÚˆü§ ЕMß~š¥ºú@ÒáF¹òEø˜GëØüàýXÏ„2(ÚFœ0‡&eŒÉ´q¶¨ô½Bíµþ²'„âÅçw+¨%©Ê®ð |ÏKœ<˜‘ž2tSÝOëëhÅhÝ^Ã[è`•nãDŸrs½'b/ñ‚Ý ÑF=1²ÕöÛ QÓO@ä"3‘Ø=aŠqÜ$èç!ÝÎÓ™óø4 ­Äëí^a/Fói=JÊW‰P`é;v£,Á ;Ž[G}ëÊïŒ/>Õ‚áõŸ˜KðÊÛ[kW ©ó¿ƒIÀà'Uˆ¨¼¼ËÓ~¦ÕI ¾|Eõ-ŒßlˆÏq»^ÚÈ"]|œt^^š[ŸIóí 'yfô”§.” ­RÃ#,JbÕɰv™ªe¿eœ¿&…%qÅ+àuÊ“NM¼z{¯ÔÀŠa1»¢ÿah/÷+Ôskz^šQ\qÓ×–AWÉ äø-¬á g.¯•û"auX¡½¾²­SqSá6úÞh ®³Ù쀶x¸÷©Ú9k€ÐÕõu€½ÅF·ñ$G½yÿª d‹Ò¹GŒ†.w|C³Ôl,Œ‰€Æ¦q¨a÷ Š`G—êGˆ }AwÅåT/Á?\ÞŽ$LC”u,ÃIi¹JM[³ +³lÙ Df:~ä®­Ó²Lbæ¨I˜êG§ŽÒ_ÂxïË…¼<—¼âÇÌ ![ÜàÊÆÐ†æË¼ÁµrÙ͉lj@’ŠÀ¤ÓV€!ï-ŽgS£x8X‚æï-dÙù¥œŠ }Óçûö2ˆúöm$:Ö]é‹…s>^†´²—ù—Öô¢û@.¿±÷ߺ›²€CöH’Y‹2b,èˆmC3g/ÚŽAþ Sm±úÒ4aNäG˜B.×u!yRÍŸw ²á¸Ð¼Åº›xMØ“Þ5Lm7wˆÙ.ÏÓ¾ªlj.½¸ùEòuI¼ ƒ3êÄË›ÌøÞÃ&®«Ïú¸áDd E¿¨š9ºÂcBxº æ ¡Êòd ‡O‘?Ós¥+lËkQêà~¶«Øt¤|}S¹¾´ËP  |37é\¢4÷.%’¾ô&5ù¢k¡Tþ\÷ÝùHoýq'[×#¼¥¼"ž¶Rý 6E_†YѨZ:ñi{³¥yãäL¤þkŠ •_ôiJ—n•„P€ÆÎ¹á‘²hx¿1ל¬óFàýå nÿ!ËÏ­–ÈQÛwÄ«®»Vßß'>æEÎÿxíKËi—4™¸#z[Õa¬"·ÞÌC˜1ÁâkôÊË“É2FàfI”÷u”ì‹G~}jþü&xa¦óº^#«d›6ç ‘—7aó‘YÃçs[U3D¿þ¨oȬy5Ý=7…c^DÛr3äÁhšAM‘ê¥T3ŒŸI‹Yr÷Å¡ Ž·h¤Ráy»êÒ”ܵ®39S¾-õ2fn€ ÃtM֛߿ê2D;ýRŠ+xÛ˜å×BÔéµÒ"¸æ µ+1)š¢û)”(GÒ°edÝÞ5+tœûÞWå€PŠYÓ¬As®Ù/Ó˜#â]~ýÂ\øz"Nõм‚ÚɆóMtt´p¨|ÊGí.šÜfm=ºÛàÃIYE¤!Ñݰq •žO»ÃÁNÚ‘¡¦q? «V*ð³ùñ©ÜHßR( ŽÂ“¦z,lÙð)ËÀ¥ösE[Ï­b0$DÜ~W$5›Åíb¬²Rq åÅz,­¨$Ç#5J+@ò†ÛÍ~OKxaª×°Û#.ž)¿â¹¥È7óלM¦P#Jtw·ÉÀM˜³Öa»® ½,ž„«7*tœ ;½x×Å%Ó‰ ä}mk:n„BDfŒd‘Â`W¦IáM â®6vƒ¼SYÆËE„޵„OÞË ,µZ·bIóhÍ«Vž:éŸÑbùi%ñG-  ‡ÒÙWWAA?ð¶/œ±}æZ,õT]u” AÕ$x­­ ½“P‹¶qdî2®¯ÚŸn7s¥éýÖ€UeŒ”zP|i'W9µVŽ51Å‘ðùäIñ¬>Q§¾miíV2ÑT~GØ4 ÒÆ¹0'JxkÑ^šÒ•¸çVÅ…SsØ’ÉÄí•´Tgh4RÁ<;—-ëÄñ’<¥ÏNÚÛGú§/ HUT)öfÊúTh$tWׄ5(/;:ŠÎnFHê‹vöª;[û1JíöÐ/k‰nÓ¶ƒ×Å?ƒ5¸Ññn#vÏ€?º:È9 ýÅu5­^§¾‚_‚¯ñÅÓÌÓ4M Ï)›€±Ä͘µÊ)l}:Ó)4fpIdËc§›G÷^/¾9Ý6Z¨Î++öR}«6R’¢± ¾cñ–lÏNùÿ[Œ¶ÍPX ŒûWWã¾"XbÖuŽÏÆö=B°,ûëïÕÎÕ¹ZþÚÊG>§•CR~•ߺ%2„ídSzžF<üñ(}¦–!ûKžÖÀÉ$$«µ„›Fv2Q‚oÞçÓéź¹¥æû)yú"¸FWf%cÔÝ[_çWå¡zo䯰µ6Kˆßµ¡{§"9’@qÓ”H…#bÙÈCš²”¾î‹Ù¯3ò¼¾ÇñI»Å ôá¹ôËñ¸á“nŸ‡N$á¸"ž¦&‚¶­¡ù”]0 IâCø[]Aæ»ÎcßåýÝ‘Íõ|¾táÀQI êO‘‚"€gA(Ó×P÷µíýo8|Ä⼤7u9¯´¾i˧ÊoeÐû=ãPg™éw`ªˆôœ÷ àæ¨»‡­7HUp}¡ÈÖÞññ˜«”ãþ “¨Ck`±¯pûËÙ—=ŠÐ[MŒÞýü¡ ‚ÎÆG\‡k”:Œf†Wœ™©ßÑ]¼àû}'¡™˜oH@Nڛϊ:³*Ü{÷,¯iaLøÉ&fÏ¿ÂÔwÔÇ“¶@ãžóZEÉAS]Ê0&=*™xúÊfâ‹Ð›Ç¯À­]$§?ól* óŠýh=ļ‚ ¾$Àk˜s wCVh ÖcÕ,%iû©d” –‚Ùœ?MDÔ ·0* ù l4ú3 ‘£·oÚË4»E{Z±ò ÕS²žTÇËå¾ j8c‰Ëi6FÍͺýÄZî7ä‘!©·ÚºÙQùT€®YϾ"«y@MAÀÛ²wjáuin^ç{}AgÀðÅsΓâQ`‰Ùuj‹HÙ;Ú*S3\RÔî·›cxHyЭ~‘J;¿ò?T&^²NS@Ò‰œ3Æ5$*wa„º§=‡QïõgïgÉ™ Ù¨ª¹×”01嘄Ÿðæå~@±…YPfbÉóý I“‹ ¡¬LôY}\ÿbþ¶Uš¡¸wEZÛÁ"TÉwB]×5ÍL¶1°Â-}Ï\ÄØJÉ–KÜ ^ÅùN\œS4m™ 뇿~"Ó-<ûð­áh,œ1çunyê¶•í!Œ/v£ljÎ7ÓpeGø"Œ½ñ­vvlñË‹~¯è¶€Dá:”¡)„{{Nç-X»‰¦M"2 JïêƒÚñ]“â=ycñª Rë¢Y§ól^Tr!æŸDo{;•®ËN÷2Ì: •SL½ÍÀ r»SZÁà&"÷9+’Ÿñ]sÑ>qêíN$"˜ge´w%»Ðwó`¹ùw½ˆ yM«ÁÈh}ãu½ãc›PâÊOO‰\UŴʼîJáÔ RünQÈÃÁ°M3¥§%ï7L =ð&tQ?šÔÙ£^׌÷£žž–P˜9o€œ„{ßè9 “ôgpìvG'Gé>×Xõßâ¶„¨ŽÕoŸsžVÊïàªrha·äùÍmJ9 -Ù‘•ãø9$$bT^»Q¾Ç¬áê˜ 3Ÿ!ôƹ»SiørE㫸ëàšUøžà3çrÎ;ýÑ æ|ã³Ãb*—«²X¶Cæ/¾Có3]æSUÞßË3ÜŽ¯WšÖñF½æ… Þ¡ŒA'N~Z…â…À¯4Pdšº|IN¥ò<˜,Ï{w 0ÔN&螟žþ´ºÍ ›yùžLµ@<¾Qû-‰žÄPF„Jö¡F€?ÒkÝÿœi ~Kàø|g üŽFp ×xÒ5“/χ@ÄÙ~¼E¦®Œ·øMr•1ÞlƒÍ¡b©ëz}uß* !*qt2ˆ(oR±¸·ÉpÚbòù@Û\ëf˜’Ê×µd¤´îŠÝhhÐ;ŒXµ6IPÚnužJãf–nÍ·Ä4Œs¡²•¡A¯§¾´ÉèZ†œôâÒ$”¨vz4ÕÓÈa¤§=Ä€„è0FRr÷½øõ}éT‡wÂó¯¦ ëóöäìÜ*=U->XDÍ蓺`¶xM¹˜²†2ÿÌ—\u ƒªÁ{Œå‡>—¥[.Ïi‹ëÜ|FKaÈpI Û塦_·§‰TÔU›EÛVäI ¯¨³ºòo ]¸ˆ‹ûBÁÞÙöl -•ñøv £_iø*Ÿ‡¸êÒæ}F*,j)ymᫎfœ^"A}àÇ÷²W?>ä9Ä®¥9· ñç¥(y÷ðI%ô5âLÃŒòN­Šo».iSÕi;/#qÄûv¿Øõ3œP{œò /D=±L<£~šN븩vï^$Fó??ê©cüÖ¡6¿U¯ÝSY =’[&‰CZ‰ŽOäÎ~ÚS7cåˆõŠF8ËãX› ‡Úª˜ÙNÓ¶¬Ë»jåDsDÎdÅÞÒnêZP( |ݬî8»ýÑ즹ى¶4ššÁÒ1G5–¯sFqÇš5×t0+ ®OP_êc¹cŃfìëŒrCW«Rº ,ø ¥’û Œ³Xû:'0åwÞ‘ÙDp) D¸¬ÙÔ™÷÷‡þúþég e $GYŽ„xÞNZÀy…¶Gí#F§A}?]ÞY‚{“fáðF Y8¸^Ρ†ø+Nƒ–±°uT+YÒif9k “üÕAU¿«v}¦„jóÒû bìIhtyÄ÷ Ô@{L½¬Ä/KqvK%ãt¶…ïåôpÊ“YŪ0ø­6w‘vW꡾ÞôÕæøAÃìãÁÒ IÁÄÛ}²¿~*‡y7½ M›ÃÙöç$.HUø%YnTv6ø¸ õÔút¦æo‹\ýêbú€Ú×\HUoƒf-—ÁW.0—-òZƒeµ„.ðƒä!ÐѲI.–UË6aiëËq(ì—oÏÊÌf¾rM°²ˆWß·O!ë™&ΨËva… ëŠ<)çÔžtÔ7…´ÊýDFLéµ¶"š]ó}M ‹ë]…8±A¯FÉ´ÓÔ»z¹Ú^èÍn¸Í¤ò¥—(r$˜ö ¿.¯×PE½N#YÕD£RIýKªq‚#½±ú>„Ærc­ &DÑ+I<%.O¹Ú¶5”G©£"ÃèäûIVƒ¾l,G-­…P sá,ïüªt·'Ñî«YƬ”°ùáÈŽÊÖŽ¨Õ-xæÏE‰»&J"c¯x×]d–[m·d 'ŒTÌŒµÅ–x¶R¹/kN Õo?ÀGK‘¸ù¶L#‘’œ’>©ÆÍ³ó”p![ײ}:œ>uörÀ³8-×ﻢ”®l=iÀtùVÙAB]gB'F0 oäûKöÔ'xÂ[ÆÃuÇØ]”0« ²:‰f×ùþýÄô•ÔâÑÞ;·®RIwó…&XjÁ Xé=²Ï]¾^¦V6ö:‡µu{š<^¿¨¿É\„ÜÌ@{—÷ amjÐMÒýŠ=¢#­,bË"#”ã•’I·® ìÈÄKðSÞKĸKùÙRé7·ÕOtz¸eoA"ÇW[…ÆäêYµ“¾-™‚ÞEa²’°PމP/LÑ f¥Ñ¾hÚ\¤Ìf̰ÉñÅ,˜èbÑý J‰Ï˜º ’ÄS/ªHóXTC‚†C-ö‚-YÏK+¿j‚¢‹½õsÅÆ6‹›sç.’£œ­¯¡j£é‹#Q°1 ;X»èÙˆ™ö¶}Lïù'Î×f.-÷ñùýÌ–šUªÝkDN7n©B$ªôv¦ ï–’ O™ñ_"Á†‡Å:uS_ëäµ..âÄR~ña(I¼áo"ë'¾#f\Dº©¡O$–Ëk^œŠ¾çÂ}8^.wŠövli3~4–@+Ú¢I$T°£‰êåÀë J¿X=Z¥eYOÙzŸóÄn3-Ä[i„3vw$N×F7=A¼Â*iÕr}Ì+þãšøs(†ÞÚüÐîaµètŒoOÖ­UmÚìåIçšÀ¨ÐÚc-Z3‰ ‡±¤5Æ} @/Ì=¡8l{ó:úïÏÜSt&Š+=s ‰Pfš]TGîß)Ëx€?¡^#’Qžð#¨¦ÎÒn–NÚR¡­á]…ÅB„%Ú›h0‡ŽWÔaü•³IC“‰²çeyUðg8Õþ?/*ŸSXKäŽ{ 7´ˆÃ]e=yWÍXúð©T?Èß„ž;óð\e²º¼¹¶Õ¹#ÉÓœr7:ÒJçÇêccðVÒ7º ÔqÑ{”£ª¸/F  Æ0£Œ\-¸õq c5½R#ü|¥ñì/¥}tè'ˆ~¡Ãs’1æ»SRœg,04C—IÉð'®ƒ?Ëœ;e©\f;®'>8K—ùYãšÁ E.ž·Úûêàìˆíµ]ôŽjÄâ2È,ª_Sžøâè@=ç¼ÎXÜVAÚzî9¶õ§:ªÉ¾˜ª*kÄ*ɬ¨>ÔÑŸ³?p¿º2o[S$Z–VM!óÉÓµ*Ã.Ú´P”Û%ÞëyÅ€ŸpICb£Èa¯F«/GÀg˜¯È®çûV_yS© — Ñy3…’Ëð¤ßåWæÎ¼×ÎÍ-qa ¤&éËÅ»jßíç/vx )úcI˜d!“’’`]~È®õOl6 |`…«L÷–xÝ0;édçþ»wŽZ7œõ«JMZ‘1Q{{ŠìQ|¼ŽØÔÓ¡:&æH¹¦ÒŒ PU®³y”‹¢ËU–ö7TEYìð”9+âe‹ ÁšË ûÚý\}óJwš<¬Ôæi¾•WåkÄìù\358Èh¤B kJŠvã^ÓÈ”ÇvÙ#Ëž€Ä$oýõwM¾y¸­ÕÜm¤Ð’Œ÷ñ¢ÓN]ÍÀen]½ˆÌÁ«IxGï¥ð$ÒîÞP➦FY6¼|Á°µÏ‘–Ð^vÕJE¹‰(!ë6ù-[ÎsdÎXÓlµ5Ê0ÃîÜLŠöxnNìrm‘„Œô¸`ñZ²_Òo¨jf>Ä36¶^{¹ZE~ŒÔ‹‹V…V(7mÔhvàߊfÅWd“Ê$Ò™ã¥cøæ}ÏOáogä|L *•œ6˜£<²ºgjÈ-ÊO†ôÚh)”A½l{7vÕ¾æM¬8GP¾cnj»ktY¢¢ Ó_ ºöCÕúïÞfO*ÙêBè÷Ü{Ç[nZí¥$źT®q¼úó¯óçÒíhið¸O.ñIìÙ1rßw×ò¾ÛýáqJjVSO~¿áµœyÀô¯Ùb”QC2ùKJ ‚¢¦n¹@ƒ^gjdÓÅí‡',œvZ’¤XUÉOP½¥|ñ f­v&Vʶ «êÒ*[EäQm)ÓO|›¦Æ<—$úF| Bxû:Wƒs ™æÞÓ÷.°‰&1Øëá² ÕP2ð¹û;Eú xe$À«½kˆY¿`dKö_^…'Ao• ËX `ÀiQžôƒJʬ6saödÆ•¬Ê¹7PŽ«2¹qïW8³&ÝQßÀ”D2ä‰}•^ºÕðàß4ôkî2Ä;\üÌØ8‹òfƒ01ozYbÕK=¨´ð+qé0ïÞ^Mxr\ÿuß5\ó–‚N—ýAÅ6»™çŒÌ”QØÐqŒNØÞ»4yqAwrZŒÉÒÖö{zÞ›aé5Üå™Yé{z? «p™¯4ÀkSÄtNIËJ‰E½y¸Ì…ü¥>U)üJ•'£½ÜdŠüZk¦>픫ómnVãBÞK®6t“Ö“ñç-ÜEvüó6¼»½”EûõΟ3F‹P¼¨7ð“Eí왃´Ý1L`ÒÒxo?°u§O4…kp˜kùš¸’Äוû7µa¤Q¥Ã9|›öÚ_x5dùÖ•H°K1’X{e(|øˆ7ÀˆK+Ü/©'…‰#EnGCgƒÓWõ‰0•­Œyr$Ž$Øðˆ&©S‘È‚[ããÇZ=Š}ÞŒ]Ñ"ÍUá³É5™á&$ÖÒ7Û¯STXäBȾ3)N÷2T2ßKD—µÏ°YŠŠÎ,å æ7·¥1!wç¹°3.0æ[´y"¼‡Ctm47êæn[jØ%’yÕö¯ýà¨iFP~…Ê̼éÊI~eÚ +ûÙ4©üQ‚ÒǡĪÁ0D¦t»«}b‚Nœ#ýþ)”‘ÖW»Š?7;¤.öq½!Ü)¼Ãq„fg«Ú͘FÖ•‡³Z½3“6I£r:’±Èò{<\uVB€È¿qŒúï½Ó¿·°ðŒöbÁó3W 蹱ˣÏP£Í|* “²,„²$mìLòîpÔBw–fËcìLãŽÚ-W>„~§•9ƒ {ù-m«ø™m¬ ÷ wú<›#ßéÖ«FpRþÈÿY XÍ…»)!Ž='IhôÝÎB”×QJŠÌîS¯#µ:UFzÅ åž°¡_‘Œžý.ŠŒŒãN­•ùòÑÆXÿ1øx(1- Ó4¤†]©Ù‡cÙy¯È0pM'|é‹M™±’ï –*=eŸBwTÂp–•ЬQ²Z°[àÔclk UsßcJZÁÀ½œÁ…• ’åÉèÇR&Í K¥÷®éjkœMz¨+ã8@]¯±)é:–§ŒJæóêî-”L-¸ldwø3q€Ä>ôü!s½d¶_æû:nq]ÅçvÙKbŒf¶½2,òAN|²äÝÍvpFŸ¿S"°é›;ÙpÜ9Î ¡1R•‘X—qÉ•AE3»(<Â{l>Œ¸ã{©ø-:"]ê–¼Ò‘ˆ”R -Ø”¤ìš‹¯ ˆ6šeˆ¨Å’ù†!å¹ÿ’Ø”Žg´ÉÜF6á‡ÜéöÔ­© WÊ ¾Ø3'@È=ðæÜ-;+´%)§‹h”“n åvqJ§½´—† a(kgßX𠳟Qõð®oÉq—ÐTI‹¶qN5…(ÇB˜¯za*Þ12áu)}®á 0Z/÷<÷é¹ü üÌãpIâªÜ(ƒ”Z@PÊkA†D%8è¿S²ºGj³É°õš~ó+§Ã¥Åÿ2¡ÇÄŠg9í3SƒjCTY­ÞJO :ºàŠ·¨rç°ÀC#C@„ þ55œë­÷£`Œ%‚™üu-G~]¢^)ÇnÆ÷_Øû#ší5k§'ÉöÑ7„aœ'Á9…ëì”ÇšGÞ¦¦/âù_»ì +†.ŒJD2~Qêxæ¨l‹àÀ×h¨9¹«ZÀ‹,ÕïÌ„¼™¼×ÅØ;V%êÈÃy°-¾ºæÝý¢Kì¼@Ê(ÃC†oäV¶!öÁ\´ùŽË‡9»lW'D=!‰j;ñ´øŽ1MjRlÂë”hWªñ%™a¹¢ü°vÍ„»oC½óØŠ(Ω6qb‡‹éƒxæâî:×ÝŒ«l2ÓëÅslbÊÒŽž€àêÏ‚‰ ‹' o||Î&ÛÊzƒË^mÊ~Ú×ß 8Áe—`­}òxWõ)¼±% endstream endobj 100 0 obj << /Length1 1463 /Length2 2005 /Length3 0 /Length 2933 /Filter /FlateDecode >> stream xÚT 8T{OåÖRWRâVÿÈÎl ‘0vÙ—ì•cæ '3g˜ÅXRt‰¨,%"%¥úJ–-–[r‹²¤„„ˆRÊÅdív¿CÔ­ï{žï{æyΜ÷}ïòûÿßß‘ßdï¤N¥³}`36ÊS'ቺÀØÆÙ™DD¢žH$ãäåž÷ãä]`a£ºÿ@s`ˆ‡ùL ´a£`;Ÿ H€¤¥KÒÖ%™HÔ™²9ºÀ BèÀ¶³Q˜‹“7f„p_?Ögþ(Ñ”IGG[m6PY0¡A(°x~0 ëHƒ˜À‰MC`^Èw%”ôüx¼]A à!Ïæøê+«ÂóŽ0æÁt0CØB,xŽ'œýî—€›Á@`&BƒQ.–ÂGé0`Ý“¥5° €Ñ/`ë/50w8€„'}-7—=SAg“!Í €Ðõ „ ;3k„˜\6–AòÁ³£CÀŒê Œá?.ƒð¸x.œáH˜)ƒ³)J7f³X0Êãâfæ3A80 ;÷ÂÜåú£l6o1”Θ¡Açv H ¶4™Ã`.Ü7Ÿ/Ì"‘¸ECÀ¦ùf8‡À³AÒŒãÀ ŒŽ0`ìÆ…‚`Àãðáð°¾·p$ #4ð}÷­:æ†_lìþ9H0ð$bëGÄ™ß׷؆ÑÙ(3ä|öŠ ®®æ–&îªs”¿ŒØÁ LÔÉš€BÖZ:þ}•¯üç¹Ïzí!dn6â·z–(ƒ t¾PÀÎnžFÐÜ^(͉F|ßÁ–m3 ”¾-¿‘B¤aÒÿ-Ù”ÿ¶ù3Uþçòÿ8‘ŸÉœ+}üGb!Ì9¶Í|¦ 6¦ôG¨+üEÎ60á³~ŒZò L!TÔ—ùõ ® ÓíÍovc毫ÎDPØžÍEf¾7@D$þÃ$GóǾ)\ì²fC0¦¨ï;š¢46}FzdŠ€8(GÄö‹L¡€0¦Q:<»Ú€€GÙ<,`ìƒÍÁÍ\éM@pžqÍZ:Ú€}³töÕ")€€|3ID@@ÿajoÖün>ŸÃÁ¤;»BØðóöìw†ƒa®­…MÛµçZÔ퉪Œ@½¯ž¬)V3'\êúÊt]Ðk‡Æz“£çâ[©UOúã'»W½#_ú»Ôßm ÑW×Þ“ñºkÚŠo‹2|zÕö6®Ú6õŽkÍ'÷[UVzxk tß5CeŽ÷BÃfåµjÃ}OO ˜ë)”å_õZ¢X2ˆ_¾°þHü©-[4–/Œ*§ž*Ï3*¤6?©°ÜÌ1¬l½ÙÀäÉ{udJOMûe5äåI™·oŬ„§Þê§½¹£%måÝšå_Ý1•šNT: ¼©äÃ}hŸ˜£)Íp)}—÷“Šä”½¿öÊ¢áJ.¹÷±ÐÙqP;JÅ×3©¿²ÝÚhiÞ͹di¢½Òm=wuÓØÆ}F¾yÆr äܹ†Y–an•Êê[žíhTRÖ'EJPüß;>¥mŒEÎ% ?dˆÆ~92Õºwêl€aævó¢’ÞÚ•£˜HF>ŽÈUվ̚îTzÜ#êãžFd mLpÏÎî8KðP)¼àVìÕ<­',eVÿë =%³å@  GV%ÍN°íðn½¸|ÇÕ¤êe ît¥¤9l.}¡2Ím3¿,q¨*=S ™ô|øiø!§n÷‹²ƒ»r›åË®ŠÝíH.*âUÕÆ¿ù=:æ°Om[Õ=—MÂJüòvéÂÛß ©ˆZ´ÉZ¼d*³§ Ã-_&¦AêùÏ1'üB=öäHœñ*2æç-´kÊî=:෺ƫ[œM$ÜŸneˆ©xÈú¦)öHmùܤ_ GÝlE²á]àŒFG1Ò£—E<£Åf;uê¼Y©ë1¦˜qãbóŠ&Z×êŸ_WØŒô_ÿKxх󱣿´EÚúŒŽg$?\&Wég…£œÒë„HaqÐÖ¿^ž/ ‡T#QA¤³nAvÓeÂé矞™›­û3`F÷‘8£––ý<kp`MêÇ©íçÄmq'ð¼u\UÝü•l‰ždÞd¬]*a²&à^OV¤×Æ?ú¨÷Rö¥J'×UdÞb(téZSÎÞë_nÞí)Ù>ˆ¼8¶À²˜tl}ëƒKöl…ØÃûdî5#¥PôãµSbÞüJ2ï¸Äø´o?Z]­ßêò[ň§úÔkC.mGAíu1œE‚6,Õ*5ñÑØ>.½!æè³¬–v£Ô¸´mWoÚq" g¥å¸ ÷œ–‘Vièˬ>Ô ®ÆÐõ"‡Sòö±m@í‰Tª!_f‘Ä”¼õËdIÜO絇ç¬x‡ bú¥÷©ªÞmhŠT ×^ ÷~üÌ-mê]Ü£Ù½ëÔAX'5é²¼m{rlˆhái*¹§rsÌ^?7öM±°£ßÁ!¥§§Šr謫"?¿FR`—š^ᘙð¢²åfWGÒàí"³üæÓݼ$t÷žõš$®ÆÔ½žrßyäqúºã‹žÈ]KXÓ/¦!ãËÝ%¬Ý¸bˆ:tŒò #2Á—%–rFj°ºcý!§òs†úÍòi—Bóîõžp0wø`vºðÁý¶ŒÚ}' TÜÆ$©š]ùÝùÒ¿Ûí~vØê¢«JlÆÑ¾Â dsñwø1^ûom»Û±¥{5^Ùn‰÷ÎÑÐ~ìnF¨ZD_t†Ãù?èÓ¡‰—ûâ~šÐ>žVJ‰Î‹0ü´ïÎ#•!«ò?im×X¦„—½Ÿ’Zù¸—xH Ë¿ð!YeÇNÛ7Jˆß’–ý¼·ßc]¹²ë–ÄÖ‡ÇB¥)«³Ú®,³1±˜B/^KŠs”Õ¾™ QhÔ%Ýki-|L×n×î–8˜³*ipÕÛ„ñŽ Õc6+î(yw• [êöKïî‹¶í½¤ÒÏ©ÍÉïUgׯK¾sÛ"Ûj…%ú .ÖSWåÊ*¾–Çq©·¬XÏí]³¹®’¿0N¬‹Ÿ¸(2y”Gë’|-§=ýéÕ&wÞD»q dw)N­N3¹àr®fIÆu¢lu˜r$ª¯ªöÐ$ûÍ•ë+?×X5À•;{`ú½Éâô‚wô†W”¬ë¿K{ë“(ÿºãt¦ºÇ¶ÓåP±"ÞåªçŸŸî?D^ñm¿½²äÛÉwõjØ_¶XéjÉ/Ü`}³ÚÒdTÚêžH¶àé~ó¿ÆÔ61ÄwIðùÿ]”äQþA'ôX.BW6¶:t]ª h¢ˆ»ãEMcÅ2—Z·œe'Åš|T¤<¶µˆFHïür³n –²TQÔÃ×þåfú8ÇGreѵæe¢Ûãï d¹È@vçÒ(Ý"ë˜!ƒ† /ÃC¯v%Ÿò˜ÜI9ü”þÉj¹›ëxb·7¾wC·JTNÃâ`’®ôâ»Î8øÁßÔ‹¬Jš”i­Ï^§¡Án¬Jþž_^bPž+âøds“éò#L¿à•" ·ø…~Ùm;)NçD#ݬòÏd¿-_Pÿ‡±|³Û;Ó-ã#‘ÈáM;ÜäÚÈš#|b¦ÈOÉG¾Ö‹èCãÃ^ N²ŸýÜâ;–K{´>lQ—œ6Þº";Ah—©ã˜QfýÜs—çúÑÉD.ë}]bîXÝ%EO‰kœÖɱ '„¬ëkå~òÎÍê’»ö"´xsOⶈ“2„ƒcOÞ€¾Fé> stream xÚµPØ-Š»;Á‚»wwwww‚»wwwww'XpÁä1r'sïÿUïUM¯íkËi Re:A;# ˜-ˆŽ‰ž‘ ,«¢Â`dd¡gddF  P±Yÿ#P¨,ìl¹ÿe ì4½ÉD Aov²v¶)gk €‰›‰ƒ›‘ÀÌÈÈõC;Gn€ˆ¡‹… @– eg tB ¶³ww´03½¥ùÏW•15€‰‹‹ƒöOw€  ÐÑÂØÐ k2Ú¼e46´(Û[Aîÿ‚Š×²çf`puu¥7´q¢·s4ûDM pµ™”€N@G  àÂ9Cà_Ìè(*æNÉ•íLA®†Ž@À›ÀÚÂhëôæálkt¼%(KÊäí¶Ëüe@ ø»7&z¦ÂýíýG Û? ílì mÝ-lͦÖ@€¼˜ =È D 0´5ùÃÐÐÚÉîÍßÐÅÐÂÚÐèÍàÏÊ b‚ŠÃ7‚Ós2v´°9Ñ;YXÿA‘á0o]µ5¶³±Ú‚œþ¨OÄÂhüÖvw†¿&kekçjëù70µ°51ýƒ„‰³=ƒª­…ƒ3PRäo“7Âo™`cddäda@7cs†?«¸ÛÿTþ)~càíiog0}#ô¶0¾ýCðt2t@ŽÎ@oÏ+þ!01L,ŒA# ™…-Âïèob é_ømøŽnmÆ·Ýc0þñ÷Ï7Ý·õ2±³µvÿmþç|De¥5iþbüNHÈÎ àIÇ cfa°±2ع8Þÿäúÿ¡þ§TÁÐâïÒÇ“´5µpýÅà­uÿaáò÷RPý}0Ô€ÿÎ g÷¶É@ÕïÅ×adc4~û`ú^ÿ?]þÿ¶þ(ÿ·Åÿ߂Ĝ­­ÿTSý©ÿÿ¨ m,¬Ýÿ6x[dgÐÛQÈÚ½†íÿšªÿ:dY ‰…³Íÿj%A†oÇ!hkfýO-œÄ,Ü€&  có?×å?Cx‹nma T°s²øã¥Ð112þîíÚŒ­Þ^§·Qý©¾Ógµ5¶3ùãê˜ÙØ†ŽŽ†îŒoËÅÌÆðdz;O ÛŸ{ ` ·µ½¹ÞØyLíþ(;€AðÑ_ˆÀ ôq„#.ƒè?ˆƒÀ ö½ùÉüƒ8ßt ¿3€Aé7b0(ÿF¬•ßè­Õßè-Ÿæ?ˆë­Ã߈À`ô½e024¶r²6t2ÿ-ez“:¾‰oO½)è·œåù_«ùâ-¡ñ?ˆí-…±õÛ\þ#aeýCbcó»Œ?Æ`òdy낉µµ¡ã¿,Þªþúfü¯¤ìèœßÖþ·ËÓß.oåšZ¸ü+Æj;ççx31û|«ówXßšjîno´ý—Å›Ìâ_ðêïüìoœ¬ÿX¹ßú·ÆØü†Lo¿ƒ±½ ÆömUwá-¸­³ÑO„Ù¿’¾=„ v¿Ëz‹i÷//&¦7Zö¿Õo9ìß~«lÿkt¬LKÿ{p¬o]µ{IìLþî­'¿kzk‰ƒ³hbô¯F3½IÿÕF¦·ÂÿÅšé-êïo÷Çrµû—ú·ó¿à[]þßè¹þ†ÌoÞnÿ‚o<Üÿߨ{üfóÉèøWªÿºucgÇ7î ?ã·‡à?øÏŸ[ Ð hŒðuÉΘ'в.°ã¡FÀ•nŠožb_=…šÎó«c§ó l"uuFÀ7Ç;ÁÄÑ>´õ]Qª[U’WÏÓÖضÅög¯ý8¥Ùýv„•œ¡é‚SÁúA"xB:¯W/5+ÈVðn)ŠgN…<Ì×q·úÁ²µ‰à¥}ŃjviÄ—²9º(ÕHÿâŠ\£ÌE<2ÜGŒ 7Ô…Û»yŒìé_$Rq4ÞgQ,…žZ[ÌÑ‹*ÌN=øäøZxD·³”žBGIR¸Ëž%E‘ßø–³©éÁVl{ó.„Lôî I™éÄ—i|®ŠŒfÁ8êr”ÖŸš€9AܦlSر5_°ÈµJõu?ÜéÃ9ã0ií¹ã®Ê'Ë›J„Ïë—ÈußT2èÌ-[R zâḗêN&ŒŒçóÜ}f̈­ð }Óôòµ’t§J(#YXÌ"/YN\m˜ï¡z¢í…"3$'ü Q¸}b*ÄP¶Žœy7ôðÀ.$Eù¦?ÎJÍÐWj¹ÏŸC±ø£/qœiÖ.Ñ3¡YJ :Eñ´^ ´GßL)é-¸“+²Â¹·‡FoŽ ì#5 Szâ;Ç\(š‰!ÌàºX×)äþh)­É›èíAð‰»[»"¸éº´¡‡ÃäS>u£Ûq™6¯Z(vØ7ô nκÃÚ(.8ZÀáXÆŽ‹A®éLö¨Âb9—Ás;…T¦»sœîåÁvÄd*}ØWé„ kš˜ñ4öwÌ`¸0: ÷0užp¿mÙ‚Å£Ó—~5_õÉ8áÜÅåW´ÌW~2¤JöHLŠ0õ }ÿZ䲡åÜñ Lë€L­_Ut4ûɵòá•îœL Ýfp ÓôÕ°÷l(I“‚¨t‚6Ñ]«ô«¨‹G£CÀì<%Jï¡9· .i7öp\âÞÑéYƃçíhÿÀZÅGxg]ÃÆR‰´Ò4„+RÚû.þ14 Þ˜©¶e%uͽZJ˜¯ÔúäËw\ô9mÀ%5õËXé§µƒA–›Ô_U\¸½™|êöE¡4»ÖK1½¶Ë!$,f9%ï9†¸Çýñz|æèΜækE~¨é8)—ÆóütãAø,UU1\õÁ>&ü ¡ÍâgŒžðè-ÆÕ£$ry¬„¸fhÞàr ê±Î®L†%Å«iEƤÛðñ™2L:ìj¤ãÙÆzW ãO¾,kžš½~¿ÙYÉOváãF2x›¡Íú˜ö›2ÉD=î1ly¯ngz½Y9ôCçëw®Fg³\mlŸê 6áL¤¤‚j.¿ß\kÄ]ŒÙßeCiO®7¶0‰¡GHô(VŠ® ˆ>Ü"0ªøæ"AIz“±[òåâ?AL¸†¯Àvv¯†Áµrã?Œ¤¼vÁL¯a>®r{>a•¢Þf·…ð[K4t¤R_%rÆÈW™äÙhØÒ†×§ŒKFVHƒè´°ø¹2ª«A‰’ø]èÙÍó] Ñp…)¡hWèfU—hëÐc‰ËvÜ=W(ˆxp¾ ¢ßc …ú9†J›c¿Lž'àFùêEüc „U‡ãu¤ïŠ¡m‡U —d/­ <¯ píÊAŽgl(eïX*¼åC¯¾×NtJ7U"€@½‹Mc¸¿lk|s 8µ,‡ œðg`õëî`M(Ѽàtý¼×‡–"¨ ¼Wn6’ËÁN1ðF§«¨Li½‹#ß‘›ÍÔ ñ Òq¡Ôp{½LpLÞ—”!%‘¯{¼ Ô£N¾p(–aK‘ý_.Ç#I•×ëLC§†0Jü¶#"ÅW¢~œïà˜¦{õ,1#”‡K ‘€t}Z­0ÇÅÖë;Árƒ1Í¥$œÁ}òF JÚ¾'}‰Ú›ËSÌÉú¾ [ó~Úw5cF<‡ ºœ–‘´“îètæÉ-A§îïwÈT{Ûö‚ ÜonÛŽ€\€.ÓúêÕB-ÊÅEÎ^ò½°øIލÕ#­u’_àr\X_»ç9®uûæ0ûÝÉ4cm‰¬üH3pov -S$]€Tβ¿¯„Énaˆ!ßø};¡Ÿï Í)C®`ZüÊRVÙë‘ðRWb‘ºýZ„`º³jñ‚è>Óª£òúxuà¯ON.* ^¿AàÆ¹g¡P Çݹý¿‹È`^­‹J?‡ÚjVÑšMëX:®¿qnÓõ„™E¾p˜n°¢U¬‹3ï# †¹f Œ+Î$ÒÕ«MÈ6ç»;yÀ—€éãCíéŒ÷ ”~]‹1#¯2LBjú¶RÆÕ§í…Éë¥Óæc§®»—2žãÍgÏ£ !Ï‹ˆ®Ö0Ö©Ñq(A®\ÈÿþÐâuCùƼz¨ ±Âb¥A)cS]øÃy†ŠBGÍ80Ô [Ft<üpÆÙÂÝ¥SÀ;×-y*"t^¯&•VgŒñ׿ãÅ…œ%ÿå·eAd¥Ï‘Ǿ^%Ò= h¬‚ ¡hW~µtêÛS™‰™ßÓæÎ1ô’7°´ö$é¸ò—£rª}0ñ¿X&ÄK^hîî8’”£ÈËÖ²M¢9þ*' 1Ì6›Üžñs£õ¤½_Ãùž—&&a+ÚIÜœ¦A,Bö8¢›þjMN‰Œ±µìÒI¯ùÉÛ#§ÖHõYOÙ3u”™c•ï²tî IL(Ý*póBÑ¡ ’Þ‡l`Ä÷f”ý]σŽEé5üàk³Ö¤vrr\åÜÈÏ{¯AÅoâÂná-†Q³Ÿw™[ï<ùìr>A;CÍPF3¾¶~kÿ ®bdÒU›‚d6.y(Ȉ®7HË NbòÇ`Èž•©Vÿ‰œ¢il5ZWP6MÛïm\̹ .#ìUR;hö™¢C³œ„‹>2?ý/ ¼V7Cã°ˆÒ¯0ç÷C’•Öû}Ž;˜èJHê.…Êħ‰×ϫ޴½Êð¤¾}{é¯ àR\R@û3Á÷×D¸ÚøòÍù}$µJPåšM!˜Á£0g·IÊÊ el‹YÖ4ŸP&£;Àj[¬QÙ«÷U«4Û~”~¨,yÔϳ§€‚ýÁWó¢«ÇmÅ Ä3ê†f™«sq†Ðùù9&&ÙŠ4-¸êÐ6óé–y"â³€¢ÜG0\L—Yï6›­•´+†¡Û’êúŠlü}Ô°kŸîãqÓ 0\ñ³²¸Ö/´…•'|ElϹ«­º{¢™ᦶ£k~nCJ„ WOÙ2 $ZpôÍ»—@èûéÎâÀØêÃ9qïý ¼£>TǺ\Ÿ{j¤r]^òDè‹jfçÆÞWÞ«e9L¯<Á‘ñwVˆô° š•C³óÄò<%íBJ„Ô•¥vÇj'5ýÊ?xRx ‰™"=C¥(ˆ”F]ÀmÍxâ<«\n­Ê Îgö|VÂlÇõ‚`Ãz86ÛË4ïš[¨VÞU¹]|M¤ “Pjh^ѵWr|,'¸büá–@=!zîvå13$cbÐÕ6­·¦‡ß:ÒŠ:(˜4Š6É]trÝR‰¢,/-Òšhy¥ ’¨Ä•‘š&ØóZ}úØî—›ø3Þ­Tå4LC?o÷öÁ~³ Ý# "t¤§nJ´n¸ËMqÓ¯Ã%æU¬TŸea‚M£².Ù=E& ?˜õò—_6¢K:œÕ¥O"¬RÊTÁþ»P»+ò,¿%Ý’®+ÒWÕ'MÂŰŸ:’׃rÛ+}Ž6|[YS`°´5*öÙLQLaÚöÙA¡º½­¹\Ÿ*ÅlEœ@šÒf  ÔâÑwüR©^f‡¸lÀZìÁZ@ÅÇdõÃÕ)1ÖµDÇ Y+;ž²ùØ]'5M© ‚ ïÛÜÙÅ´5Ø„À±ßZzÐõúA_c9TIõÅäûˆQ‚>ÃÍž ±õ˜>ÒÖ–³ûjBç—ç ª ¾ LHʹ{|-?Í)9œ¯Ë¡ÄoÔJŽàõzYd_w¶}úô‚ÒAŒ!u┼Ã#Ï Ë‰Þsxæ›ý{OŒ£Æ_çjNc?¡‚5ÝÄÙ±‡vRóTúR¡¡ý~Sx@’ÅòóOàu|(ƒœdv›ª:MÁ)>Ø’AÈQY84š‚¶ÎóØç¶=A6Ãw^PI_$l+I¬Ziß5#Îó#ÆIE黳è¡÷AO>x{á‚pQ:á_¢px!wx˜\âr7=ÑEç*ÊGÆQ‘‘Ò°òzÒDÏ8høQ h8úTˆ SFCò²}ò™ãóÄ€û‘áÍ’é×lÔÊUè_I\䀟3‚Fà…æªºmÜûÂô™–XA/ƒ—ßs]“~!°H; ¨ì<®OGaTNôëT€ÏwxüˆŽ·&, Ñ¥0*„²5Ë\'á‡# îíÔho©…ÍÊåv­üô–×+ I9Œ\@&‚p1/q1˜ ±AE ÕÈ1o)yMþäˆSÛÍý™ HÀ¤|#'|¶En|°ò@†:uKNÒWD«’+ Ã>-,¿ñ¢– ÌæK|V†àØvÎ÷OÔ DñtË@N\%?ã~¯ueÑÅ4RfèŽÜß¤ç¥øœ•[#3jÜM‰?#aO½?]2ö8âeÄëÇÛ@îñ¾DI—|h“¾ËNT_¼øˆJC§UqúÖd³ÌÝ4·ÄÆe!]ÿ“ŠˆÀ`Ýß®a_÷K¸ºDFÍ÷-MÈ oÜ rmÊÎB¦8ä´™?çeîö®›ùž\QmêmÔàÐöᓬýSCUämAøùì˲dãŸw ïü:öE¢MÇlœ¸ø‰²ÒôÓbll% vƒ—ÑmæÒÚð–Ö+ ãä%Ež[šÚN¨®¬¥Fö g¥·惚"×:Á®\ÖÖ—¿­*8Š’Ë)èé 0yßĵ öXBÓ:¬Ë—›¡!àS•V pA¬×Sî}ŽçÜwï1~÷3Ìs|åæ <¤-VÒG|œ#EaJi'g뱩æ4/4öe‹MrÇPÑ%1 3³©®o”.c#ú’åEÔõÃ2JxÛ£k š¡ûÌF5ªÁœÓÔhgâÉÊ(ôcK‰be¦ ÈX]Ö[ û¾–ºøõ·k ß’B#ì/Nœ?Óx ÃòôpùÖGã1%÷Q'aœÆÁB÷îœAO†z—8¼!œ(žÀÆýÓ;¾ëÐé“FÌhäÔjO‹Fçœí*ÿ‡àæ:“w´{éSè3Ž¡ç ¸oõ£÷_îè:ÄÖƒ*‹0 `BŬñeàÝà M‡Äøeüôó6>ö¢'E´®@ ô¾c[lÛ›ïLì‹$m¯Ë7)FfF‰ØJG±x*qe ›æq0U¿"‹NÖƒ«Úe$G7³ üQm¨~ërbCÿ2™'´ÖÃ`,åÉÝmBæ'øÔŒç2ý «à- {ñ‘ÖÊmŒç&×Ê}=xÅmô3EÛ"²žó¬L¤™nnüÁuЄšMus%x‘¬¹Ûý^¶åªÏl‚ƒ«³ç¼½¥|Ü‘Wø‚…øq¯ïµmTg&V#ûïºÏr§ÖÛ¢$ü¾@:LK}p­:ÏUuû%ûûf™ÉoÈ׿~3^¸iM@ªÒÉþxÍ2‰þÜ€VÕ—Úa[Ç¥uÇËè²'×|C¬.Í—ì»§§kÈ…Æ;Ý£ÆKW) 4ÒóÚôËw Èï!ЛžX¦´ÆÌñ:Žq:1³ø5«È×DÒƒ~|ë8µ°Ñ#Ÿãw”¡šo¹ 4ÔèËHë—´n,†?Ì¿ú¹uâÌBòkUÉÙ«ú7<­ ¿Ä-Å$òXûõCñèñ—Ýw0€‰ú¿?Ý r W¶_$€'Pé½À 1Ð;H ŠN"°'Å ^VŸôL*Šà N—Í}X²-b‡‚•/yŸÛ%߆™Œ¿!ÑVl?ätâ•aO1ã®–K,ñŽáŒ™ìtNðÎ7„ƒÛÓlÑ85þIš›„DrâzìF_uî¤ SèosFµ‡æÚÓªÁŒT½Þ/·I+`ɸ²L]¤<¦µÓXaÜÔÐ, æ¬MOÏu°~Ûê_M°Mo,×Ýéßk~UêÌ]ï„ÑüéÑÞç&QË¥æ9£DÈ•D6Ë]·F‚bžlH¯g…¸E08©x;Õ*µ²®-Õµ¶§×X7[™!Ñ_‹6´iƒ¡;é'8õ¯d§Ï™˜‡Ë§šË*ßå?ɨ «)¡f$y 'AÓ«» M9C³åJÛ m8Òõœ‹´çõ)½¢1j₸¨øÊ/ —žXUÀ”Ùýè~HätòDRš@ŠÕO­â|Eûmiìi>7bÃ=·ÊžR,Ò#x3?"ª†àa“jŠ\ãß{mãTÌ` Pý¼µþ"WœNæ$NÀÐ$tz¶Ó>Í÷m£þJK›(ég¥Ï@²§þlŠMÌÇÖ'}_·vu ÃX'ŠdýTÇ"z,¿ ¦ú3Úš±Ç>¤$¬t‡ZOÌÞnÖAnºÖàþãyV¤–c o1aú ´—;½ë&h‰M ¦¨ƒvå\ÊVdFýœ0D‡i&î`]‹Pí¢ÝN’Iuëåt‰{ÎËYNòŒ@f¢ËkeþK~Ì^.íá:ÖiX¶n¦º²«›¸|«ÆU¸{ö)æ!a‡½é¨G ôÄ9…g64ĬþëÙ€äÌÂë±÷ô*ÚK®Žd¬é@žšÞ”Ÿä(äë8•ΤeÕ×gk:S?°_ùƒûÖBÎ\±íÏ<Û:Û"y€¢%Î °t~æ9µ¢£«÷¥#Aµ|Ú‹ÐõO•Î= {öèP¡a“Ä»aÑàCxC·6Î3ÀÚq1rtØyZcR÷ë±A&ô¨6ÜÍcÃBàO¶ãÏs·Î7;)Øš–nóÌvhÄæ^h† uÚH`mßqÐh²Èß?Èš³ãî#d ƒd©·¹”hŸƒSg”CìkÊ7ô}43Eq9»'+ÓPGTëƒTà\²Èy±´4’K×ÃMR¦ðêzhaï÷}[è.ʈ²½Ó»Æ¬;ÁgE¿TH© ÏÔÒv»=D¯ø¸$à¤×ÉtÓcΕ>ìHÁªaQ-Au#§§‡€í ’ëéü«6ˆÍ#¼:_­XÝÍÔZSAµ<ûC…©Ü]˜‘©uN9…/ðÞ3”/_&ìBŽÚ–a˜Åj}jknÅ@­gB¨ +Ÿß¥i~ò¯,ýt­ŸÝ­XÛä V³†ôˆ…ò@sÃ÷6íb‰°‘¡ Bb;I1‡E‰rAZC‰£Aþ._ Æ[h8áŸNyt¸ü9ïeç‚L·Ç]rßòõ’­uÃÕç ˆðg®EþI ˜Zx£ Lªp›tü"þ©¸1OáŒýtæ¾ÒÒ€®„Xà§èá Ù5è(ïì1v&”c´fËm`¸*Î Xµ QÎ2Þ>+=]á“íTt¿¹Ln¬9ŸV×vÍÙwfùÛ 9Õ” ¸«îÞÜ08ßZ«N_9ªüåÞ¡ÄV(%’´› fœˆ F8opÄ`´X›Ajkt¦j¡š"}ˆ©7–u¿Ö`U‹Ò‡ÕêÊU6Ò"ÍLü¹E6ÛOÁ³Ô=¬-ôÂ%=ý*Úº_³;ë]<‰pŠÜä°*Rë¨| u·Ë L¹ç@_šI¦ù¼ëÒûÅhDZ¨"‡DRJU!ìZÓŠ¥ïZÂX»j|Ò²µkÜû~ä™t±öeï£4·°ï|Íi44Œ L7ˆ@RE€efú¼ Qg>@XHÈýæYumlOWÅÒ³S‰Ø„ºÏbu;Z˃ö  —®$µÐjJ£RjX,’Ì~vnÊJ†©OF®ÓmÀr¥ä®aÞy$)_ÎËÇÚGî³ÉÈÝë¶H䶪¡„Êý™Þ;è¥w€;nˆÑ²œî1?:õáe‹dé‡W îe˜|uEœÞeO·ÃÅTҤΩÏ:NÍŽZ!œJŽÉGÓä: ÅœnI!C…{æ¤>€¡=aöÖm"?óÚ• üŠk ÛÑ “á“uÔÕEROð'K+»Gè88lm ö2[+–.9LAéQצSx)Â9œ{yí ¨ôŠtÑö³OZ«Z]¬ÞÊ®PÚzÄ>ÎÐ&&ŽOÄtDB°ICÀq¦†Â9ØrÖוQ&»1‰qQ§Íå¡^‰n ÁÛ–vñ¶îûuÈUdôíf{Sü•dóu>–7^ìœE°–·ë gK‘Û¤û׺‰ƒr·gxýý°2eèÁï᱊n›Ý‘_cÌžg–6|-ae#º¢\´sÅ`Ü]ð`MN^fÎTfŒï‚÷"13µÑrìa@ƒ~ñïgÎÞ÷û A=hµÏå%å 4ÁýphïE!sbO¸qE6N¾4[!ݨ!(„ß®dü w3LŽ€ ÿõmÂϵzîºî;IÆà ×ÍúôNꬉB¢cû;¤\…EgÅÔç@m"QVÏbfr§Ù¨îÉWh¨î”leŸñ.§ËÞÎ u‚çùO]­ZD¸ÍÐ}›vÇu«ÏÓ/ €2¥ZÊÇéØËâe5f©$œ{Æ$úüiàùM—'x§¦ÞŽM<½ S -áyÔkƒêAUw¸{Ͻ^‰©ž– š“ SÖùcôоTÉSè¬AæÚZÎw‡ZnÂÍá'¤ô•oò/’: ¿ÔXÁÔÅdÄý@™›à(šÜ‰1j|ÐYÊ;¬ •­JñD’šHáN1e|2.œr×9s}üúd Py[ÕºP9º¬Ð ”%êƒÎRš°ŒßžWä|q8² ó°ƒD÷i)Xw4Z¹ÕmhCRgÊ~“ùÑ–éCÚva‡»–Q'ÝÂÇç$®Åc½½È€æ²Vy©öç$Ù8˜pº¸ñµ=De&;sl¤ýA®MéÞ·³ìÀð·?®!/ßîù‘E`(X¤`ÅPÖ¸£@Ú ]R>é¾Ùž[ψxé¥@–T(¦Ù‹Øz~;¦k³'Ç Ö¢RÛÎ%qá»Í™¤ ÏÙ‹De.’P™.°¾‡ìÎÝ„-Îii"y^¶Ð[m°ÖÖùÇØ½ºË‡º!…ÙÅØ&Ê ·ØÈù/~𜟌Öé©ÕO„œá¸B•$C“a‹ž!/“í^6˜E#•at@¥¶ÈV90Œ™•';^ýÑZ?ûóÒ˜´<’¡”_§¥¾o ‡7o&8ªU% x8N” ’«›¡ ¾»gã˸DsìÝü¨»Ô›"Ç”áòNª‹}ª½íÛ•'È¡8{¯g=±«GNKÂøÇ[‘ïjoòçÑ"Ë0Œpd75“W•ÃÚ@Éà'‰¼)KÔß0‰yi’œÖí(/©ëxóÍ™Z˜x§ î%kuÍä(_’ýoƒð§»Oíq t‰¼ÛWr×-!^žéæÛƒÏ¬:†ŸÝ'.†Ã­ôZV,{Ê×Ý^0 áRª±vt1Fôbûá‹ñ+ì]…ýdq]S^®PušïK;T½MfÏÑ„`$:cArôû¶Ç,ùî> èáɵ“5,þO¤{’½æ®«Ôkœù•×$B¡=ä ,YüTõQò ÕÚÕªCˆàQ8¡sÃ~‚'S’tJ+´Oïwy^p 4ÏW*<UO·CÉäc!w;Jï[äÝlžH/ä}\ü4áõ,¢-0†ù ûôÜtÔj¿Èºƒ-ð³}2"ŸXræôRêeÿ&oBâ¤+ªé*¥+IÚÛ½ŽWoc°àtüdu_¹÷m"üÌ®íú‹Îß]¶˜téY~íKî{òbµs³»~£ja,¤ÏH_CŒwׯº;Ò.G‰ZÈ íàÔ‹vÈëü Y=Eû©ý“U´Ë|J5Yƒä*c¾tçKtÍ vLvi¯ÑÒÝ-ä…Ñ|/BI Ý%?KÔ¹iIJ90Ub;Vô.ÅÀw¾-,húHüËн.òþ`œL k°%顜ÍxÚ&Ç}í1»MôפD«Ú£9NdÈÛ^ï¤ÚÂæâ³,‘Zì“:Wò=Ñ-wuÜÀ1goOÔ«‚´e#“èV—/¸4=?q8ÜmíœÂ!’ÒaØ$xmhóoÈdu¶ÜeÐåcòù)$–ú"*Fª5”ÒHW(’<\7®Â=FMŠMZcs »ÊT7dŠ ¡ñIŸC%GÒáG¼7 J¶îûM­àPœ+b¸,‹æ:çlåfz¼ßGk°÷_ãO×Ëm­‡¼iäzö"¨A?ñgÔÇÚ ŸÒх媸«~^U÷úO®¿ÃȨi,㱂À¿@–HÎT÷ðeL*RQvkø¸ï´è8”™Uùî x­ìã¡[ªË$g¶‘íËÅž/–ö¥ ™kªkõ*kÊÏ'ÊkürO Æ ×~Õ‰Ôív»jöC­%˜îgW6~±õIc«Z‚ŸºDÂÖñ]‰ºˆhfU<¹—â’MdÌ~ ïN¯l·Lú½¦×j"ì›DO2x¥[ï¾ É|ï”±!Y´•p3;_xõ"!¡ÿŽ%szj¿ü’©%öÈó±z‰]Ý*Ý–WìÚq²Æ¨Wü>ñöB¢£¨ÑÁ2Ê l..´š.Ø|˜pS­¥èнྦྷµ7Fà\vEÎ4%ˆ=Ôí]öHb‹ñµRF뫲~‘âj(B»Î‡/e’ܯk×Ðû±J«ÞMŠiTÀQÏT3V-£4 D›äy¤Bp”ðcvìµD¢@@Ñ…K0˜K¦ñÄÐû|*¡¾y0‰èôš)ýƒ5×¹ôyLå°4…ŒŠ}ÿ ìböyh÷æ¢DªÖ´ŽÓ¯Ä²r¿à3§/^…»Ðã×"|—v÷Y›»ã¯'¢åIý CGO•.P§ŰКO.MÉ‹)E1¦B\ïÂ9uid% ‹l¤½¼4÷ª˜(òîQô*Ðõoÿœ÷_ C°9Eñ|gŸE>Ãmþq€R\Í)ôÞZ‡&Îh‚ô ©.SL?üÿG¦'¯ì¾r}šwÕ¶¾\¼’wS¢©õ?¼žƒ«=Mù)HàãB_ü $=?ï1S.)åñ¦‰èþôEãƒ-¯6¥xO ³ÇáÜ…æqf|"GÉÕ€›†G»‰Võ…/Tl-BE 6é1½Y‘%½oö+„¶Ì:ádê )Ÿº™=¬•…ÐQðƒ^Á½O„Ä6‰É•8mýH×lY…ä§ë%¦•,N÷‚2ü\äÿUå›óŽÓEY’N‰5×c·(hiŽ/Ê~þ=›°ÚÊ{ð%ÇÈ 0½ Ãmè¹ ÙeU0áÑzŒ{¿Ä2³¬ê"Ó|l²×þÌ.óÃÄ„­˜åY$ü )6-¯wµ§^¦ŒSQTkì¬&ã-3³OWs˜¢ÐÌW¸WhjgÙä‚’ÆiùñÎ29·_fnoÃq—jÄ^ݾx—;J¯|ÔýXr-M¥Ùš&~ÊcG2s_HÖYanäQ)k`è2p…^^»‰|žÂÔç'ÆÀ”—5‚ mÇ\ª5¸®¿”ÞŸhåmt,D~µXEÍzŒQ×QEØÃb1WHsçˆ(á¾Á×4°üN8–ëË×hÒ˜èIÚ{]£gc%N˜Ó&^¾U"bËÌ6ï;)w“‡—/ïvKÕÉ«çchÕíS2…;¶*™)m:O¢+b ÿ Mp ÷N~±­½¶Þ©0¼EöêÊAÚ"È٪ٸÁ3 ÉQAÿÑËé¥Êuýç¸4¯ºÜ}9ã]4­äÐõ~ÿÌÞœM\›†ýäÏvÇ»QûŬãüOƽǺàµ`Žý÷™5r¿”ƒMi×ÜHÜòÜãÙ5!ï]¨tå ¡ˆ®æ4ú*ë]Q]ŒPÁ©vÆ#›b² mL½€´zä,)h8]ßA-Â>kÅtßTl›=±dÝ"pçd£ýâGZ&éphÒÊ;6åNNWŬÃ\‘kw‚¢’ÍÀm>à”BàÆpVtÕé4]”På0ÃBv Š+µ˜*T]qÑr?‚_–YvãÿHÞ̌ڱjOÂß~@àÉ©0½Ü&ì{#*ª|¥q<…ÌF«@¥vOžìû$)”uv$ÔÑØq3²ýÒYwx™dß5Ÿ@„Ò4{>oL÷Þé Ï$ôéˆÅü¢O[IÆï(Þ—H •ô5ôåSYbzÁ¼ñ$Öˆ=¢›´3ØX‡O»v³8M}ed¦ÅÐá|¥)­ëÁòó¢“5Ðãm |k&vË=ºxCýX-#*[O&TÙEÜ +Úˆ9J+ºï‚,Ôùs”#Åš0‡½d5g‡ Î¥5<øzTîçÙ˧qSÖ+aºKÒU—=‹3ÎDˆ['ø~˜¼qÙB¢‹Ò=Ùjn¶8š7x8‰“ÐÖWÛ¬/™zi;åA¶a‚ÓÌ1z‰}G”ôkÈæýmêüqp3 ¦8$ç®FÙµôwÜÖü6s¡³_5²—”mx`ܶ†¥c÷Œ…, ¥ÈÍ“­[á[н¡ìóç«l±:ÆRa†õcuÖ°O&B ©ž½ª\ÈžÀ.*Á§×ÁÛQ®ì§³&;µµ¥rq}üûvÝe/°t…ÏxÒ‰8߇Cæ]PV…Î-†rúZßQL÷ ¼X®G›4*“TB4ß²ÂUi§L•TÑ"÷=nØ<£õ¬ M ¦?¦ XNíìІ lŒ<×–+>RœÐA²ÂÎÑÌ}+-F¯cJ`ƒ‰4õQ!ö¥­ƒÅXÏF,uáÒ¤kÆTóê†^]ê{7)l1§iîÕFH}/õUà0P1¡«ˆÓ-§(ÂÇ‚lª›Š–ßãÉ´Ù<7ŠÒÝéƒ\•WP&Œœ–æ\ÆIÕœ‘µ§Æ¬ý²ŽWØ®R¡¯åŽ0 ‚gO-½°/Ûñ$§/êË ­­=r‡¬wÜcN9â.µÕ\7´—¹ ¤µÇMd´¥×‘ÄüŠox_ùb?ùY')Q9h± ¸ ö ½¦m4ŒS÷WPp·t„з`œýÔ ­Nr·'ë‘Mãè)3ÁrÐya:ÆÓ¿†ýâ·Øx§êàŽÇü„ƒšL§§0É6‚¸nK\}(ʱìí^v}½úeø¬î‘¶iãIO]ˆ'Nî.©ÓI÷ÀCù˜;¿–b4Ê OØ#Ë{–Bχ¾MޱÚéFzŠÅ¦ä¥º]I/{Y0Ó·(jWÚ•ÕÞÊá_RW[WrŒ9PDZÀ ÃY'pbs@jç„&߉ʕè?'aÐÛ\ŒG ÷KÓ‹0Y “ãnÁ5ImÏ'%/ò)‘“„ƒ0턦C=†®×‹-£N1±Î’‡ÌkU-†»¨²Ë«Ÿ*Z{KP½ò4óTbüWÈ·º1Úw1Æ!“úIìÁÑe<Ÿ|s‚ßýÎiÐ’”݉5*Ñê$ä/·ÆŽŽë+1—ƒÉǬ„ØÔdq3Ýñ"˜“ó*Š]1¥¨ÍUÓ>}XU“Z‹?IïýŒ•ýÕÁOÐ/S.(gg’”…oÀ ö”sjƒƒ¹Ë?|oÿÉvÜJã¢vzoŒÙ¤LæóJYS.wYÎ Å÷àLNð3-ÇÊ9á,¥LÊ>†mŸ;ý`ZæÞ‘=q 2"×@N{x°,Oîy—"ŸÉ-¦Ð(‰vÙO‘ƒåø3üÞóž¯tZ¼\P˜RŽ–W÷µKbÊÈùøL=;\¨î?Öcr#ê,MÐð$Sl*;LJYÉûc;ºt¶­å„ãœq`ë%G¶ÒõàìUÐU¤ã˜šÂzý`H‡a¿v®O©ÆF²cò# ødõÈÙ>§Á»8Ôpé„™Å,:ø2£['2ióݽþ A«}HðÚŰô9†Ü3„ÅHO9QC£ÏZ’*ùîsý‘TDœü5Ö®4ïq;vEöµ‰q}9Â@|æ×Ûêï¼øœ6ˆu¿`ït¦™Èvó^ÎÇyÏ· 碣¼|E¾\ó·~yÚ&¨1ÔŒ÷$eVÿ2Cí|gÓ5g¦m`2Bv–´\ÜjüáGw]~€éÌ¢ù>t7JÉÉ!›»ëª©'>zSÓK [I@Ü—ò×O¸ØåÖÍÐü¹©Ô‰B4ZŒD˜o°5Káœgá4bT?M ¬‚监ƒA¬—ž°5Öj§ªV¦Â.<¬Ü.ÉÕjú zf%HàÍÔý€¬bpJ”²…È'­5Û¸ýœm['”§¾ç¢ÏØL—ŠÉ9cÎâãŽ+HÞ;­e0UánZgÚrJG8›WZ,jcs¢< 9¿«Ö²u¦Œb{OœÎ`7vîr16ÌOtÓ¡}\9ÑÑ—ÝG¦oT%_D ™GóKTíê%ÁŽFG_û¢ZW”M(DdRzÍšÛŠ„O²*Õ]zæýèìÞ ÞÕéûpV§t•”~ìWmÐʪ¥¬">o9CÜ„±òèæR_ÚÄçêÊÓŽ“\Óe,I"Άß¨ŽƒQ Pd ø.5º5ΓhÆs0²^}éAØu8 r£k8ˆHÄÍÖ5cùhwwb'úÆj²ÒœB’8•%ãÒ;˜sm¶6¸rÈÊÄ …üsýSóîÅÑ#Jyêâ»Ãþ—‘&®–Ϻà, Åþã=9üq3YqºÚûH<ò׿F /µF˜õvö¨ŒQÀˆw'l=áÝü‹(½ ÈÅž¶çjTÐûÖ¡ÏáK—í@â17RÂÚª«6t†:¹Ž# L9°¬âš=‹íZó¬è]%÷2ÑaÌÞÕ˜µ˜)öºU†Í¡.o7̦à³d+³9Cà.w ô˜Ù÷ri„=¾¡5Œa›Ó‘m pëÐ ü¨Ú묉Í3bK`?ĉI6µÕ¨¦ÿ¨Jµ=¡Ô4ót(„õ:Iz’ `R–*‚Ã8|rkmLܼEúe>è†vÁv¢ˆ=HЉ¤yÛ‡ 7†ë3rÎ’!…—ëäƒg¢ØÝªÔBe3…¬z\f( ü~Ý &a©ØÎþ¡ºEbì~ Z N9S‘]Ò[ÛâeƒßV-fHÅ÷j'´þjbÐ7Š8Rî/¦Ê!y''š?’!j•´ž€a–%“:¦[cnƒ©x$:zy!½ØIŒÃ6©ûšÖ³w¥ª úËÁ!KY®»«~å—Á~$TÄWIh¾-2Ì—\èžd‰zì×a“6œ{\ç€ààFU«gËf²oe'œ()puÞ¡ Ò®©urˆÖ±LÛõÀz®?Oœ¤ ÷;×Hl^ZIj%ëo|Žß\Xxâü…ã߉üML¢ ¢ˆwͧ‰OØŠŒO‰òR—Rk!«ÏÎóJF¥AfF¦D?} §4ê×”ªÕU˜Ó CªÏæô!?KðŠSÞ•¨\ù_©Zæ|_6MBßAÒ}§cŠCÎü'ða¯¸Åoã%´œùi®åß(Ã>gÿZb øˆÓJ½ºf®A½ä\þ?o_é endstream endobj 104 0 obj << /Length1 1614 /Length2 13298 /Length3 0 /Length 14111 /Filter /FlateDecode >> stream xÚ­yc”¤Ý’uÙ¶;»ìʲmÛF–mu©K]Fw¡Ë¶muÙî²mt_½ï;wÖù5ßüȵžgÇŽØqN>¹’â³’*ƒ°™ƒ HÂÁÞ•™ÈPWÑT2¶µ56³rcq°5|˜Ù((DAÆ®VöbÆ® €&È 2°°˜¹¹¹(¢Ž^ÎV–®ê ::úYþ ˜xýÓó±ÓÅÊÂ@ùñà²up´Ù»~@ü¯7ª‚@WKÀÜÊUTÒ–VPK*¨$Aö gc[€’›‰­•)@ÎÊd;8lÿ±˜:Ø›YýUš ã–° Ààâ2µúØò49þå¢8‚œí¬\\>žV. gc{׸:¬ìMmÝÌþ"ða7wø›£³ÃG„݇ïLÉÁÅÕÅÔÙÊÑð‘UILâ<]-]ÿÊíbõá8˜Dš9˜ºýUÒß¾˜¯«±•½ ÀäéúW.ÀÌÊÅÑÖØë#÷˜£³Õß4Ü\¬ì-þÅ€à ²0v6³¹¸|À|`ÿÕÕ ø/Õ;:Úzý½Ûáï¨ÿä`åê²5gD`fùÈiêú‘ÛÂÊé¯Q‘¶7w0ÿa7ssü§Ïäüwƒ¨ÿššÆfö¶^39“‚ƒëGJõÿNeÆÿ;‘ÿ$þ?øÿDÞÿ?qÿ]£ÿrˆÿÏó¿CK¸ÙÚ*ÛþÞøçüuÉü·`c;+[¯ÿ)üß#5Aÿàø?¡H»4BØÞâC #ðF+ +O™’•«©%ÀÜØö£KÛÕíÍ@ζVö 5ÿn$€ü7Ÿš¥•©ý_mgÿ‡ doöïÔ?ú›8“¸¼¼šŒ0Ý¿QÿŽSúPÞUÍËñƒÚT"ï`öŸ‹¿PDD<> Ìì,V óÇûàÃÍÊþåÈø7ó¿ÖòÆ®ÎVžÝ²?vþUü|þµÒÿ7q{S³¿fEÕÕØÞìc¼þÓð—ÛÔÍÙùCÕ¿OüGÑÿ\ÿ=è 'ÈaiÁÁ”7Ø:%-Õµ7k`LL··›r ı¨N-?7 Ò¡Ë?%|“»Ìè¥*„±~‚ç­ÅkþØñuW†vo¨Ç–ª+ tžCô…Œ¦'}²“n/ˆÉ 9õD3ÊçbNnJ‡¨±·5¦¬bPøC<ÑÆê wqO@枀E~çˆâgš\‹ÝŽV†Qw|B™xxGõkxp ¿ë ºg—.3ž‚××ïÇñçï®^Fηu¦oÐOîìñ%ð DžÄ\ctë*ŠÁ{rGY‡ÚÆ™šü‚Ÿ+K‹ü½{È'v¸¦ö\¨m¼_ß™r#د#fwœÃPDêAj95¦''Š¡sx°Lk¤Aû¿“ÁxI¿»n´¬|Æ—KJ˜¤›þ>ŒõtŸÒ†ã[A @˜íß–“”¸5LÅ<ßðüeµ^4ÈN # P¼ˆôмµƒÜy/at (—ëQwEiX€- è«!§‘;,ÜEö”‡n¹1šþ Þ0x™mÕMV¯×=šnFÕ[=¯M(sß~'"`Ç„k¶ž×åó¾è× ®daƒÖ)‹8ü‡(ßü\ ÅX‡TrÓù¿D¨$‰Ú Dr\l¡ (²Ä«òž&{³°Q¢^IH«ji£L×͘„ß»—x¯e¹PèÍ j§‰¹áºÅc,%T\-¢èé½§Í1<5é‰ì…ÞðÇö‰#¹Sá±zÅâtJE±¬/Ã9øésÓYáoÀ,+BŒÅr²µ50oÁpÄ?‡³ãCCœá¶[Q%_b7I>©žæiVðç›ØâBÇ ÑcØò˜²¡¶]bä–Û¦ôTå(Êt8#û–°Ùû^a`Â"@¨t%îp›CV+*”,uLl‘-”kŒŽAdWÍLÁÐá'¤² D/Ö·*¡Õ¯D”oJ‹ñ|÷§ÒOvËùwOv[‚˜¼[s<Vd¡~úñ& ]Ê©r¦ü+UËQÁŸ‰?X’ UÖ´¨lÑ‹|ÄdD"r ¡µx¶õ ßÑôáëWzeÑt{² $á}w,å4¸bÓó9d‰u¿®Ž©æ†¼ÄÏ^üì–ZAGõÐ=wy5±~7ä ª&#ÅÉÒV„îš/'ì·T渷;ïjØ,(¶dˆ²SÎØðɺñuºùì2¤¡äz'0ŒJJ ùã‘<4•&Ò)¡YÚ–îföçdNÀÒý‚ fÓr7šô.^ŸåBÍ©9Js …|º ÕRƒÞËú¤1>Œdáè¸@¸[ʼnèæ"Ø:ðVq¯å*‘Q¥x¼uk…ЯȈ›Ü|øNÙ² ‡eEÊ“ýùÑ4¿j9w¸qŒ«¯‚æç…LB¬:]fï3É}×ãuÃ-#7§ Šp•Ž…‹BÒº‰'¯ } ›©òÈe¬>ÇšÆù½ïùÜ×+f•Eä(÷Í6tÅàPF› ªäl_ <¥d¾¥R×s]#m%cÌÔÓ½­”Â~M€ßÕ†XTò¸¯of¯Ž*]éÉP.uCP°væI="¯ü ™ a*ùzæZ£óÞ¤ÙÞCz. Í×”w¾ýG_:rmstª$׌ ÌÐ\¼úG²1ŒFÒ(pèJÃ(bHA„ö"ÝGM† •2a˘¦ýÐø¸î?”'޽_«ÃÑöª ỨsC0Å`ñÃM%NRlÅÁù?|Ð-§·n-DVi:× ÄSÓqÈ΀Õ“ò9ðªò(¹Å7ûóm9ÛÌé ý™¶WdBFZ žiŠfJתÁ^²Ã.c¸Ö™4~kh¸ûa ý Y;/G¾ÜãŸïÒÝß~f=˜ä¯/ž?.ÌnürÖ4…-ÇΠŽ/]lð§H–SÏølâ6â±TždþŸñu#¤UQk¡ÈQÌÝ»ç•caƒŒôùOŠ››/ç/eí."Vj ö¸ÉžMûŒæqÊ‘8µwø¼ù~,üÍ¢)Ù ë+èN+ý©Ž$¬gncf¿Ðw¬¸"eÁÀ±µ"yDe®e÷Ù¤¨tÉÊÆÐï¨Ó•ø¿/3Ó²-«¢¼äQä6,U&¼;„;Cºi°Õê„Ò.f=TbÍéè™Ò½t¢¨6BrÅo~ W«¶9¥ÕÎÜ+ÃŒ• ¸ÕJâ.ØÔþøÕ>¢¸ë2çÑ××Ëìüâ«%Ây­.tOü\æ[GbÙæþ¨_Ë<¿@´: ÊÖ!ãrd˜]"Š’žõ®)¹ùf g=É?#ÖG›9Уv{–ï£ÛVïVÛ;_ðÖæŠþ¨ùn§×}ÿÊð…qIY£½kú®Êœ|ßfå xÏþû¨³DyMfÁ–ÿ^¼ó‰Ù1ò¾>&×s-‘8|}üxå‡0âÈ mÉíDÂôbB=y‹ 3]œ.¨d…]?=6넆´âÌ—€`óç•øV)Øõ &¬†Ê÷éb›¢0&sÑ̺\Ô¤˜Ó©`~SH¡ Û²¢4D¦¢çÒçyF>÷@ˆ(;é}n˜nÔƒ(^íF W“nlGŸ—tc3:ŸbîÀ¥I%™I=·‡B62J ²/:#Ðo_Ö2éX°ŽãþK–¼RòÓÍspF¼»i*¼çEsÒÊC,Frh+n[‡>43*¢ñ‡xžŸžeJFžœç×hfêFk–ìOo ÕÉ纬ÂóÊ‚tƒL”u@20ƒ2çhJ4p°?§§M§‘6Qd*ªcuÎqä1윯Lr®+ä½ÌzOsÉמšóiÌp¡”Œ•púÀ£CXþ ÁH nûÞþ© +¹}2¥f¼N’bÌ7[T’ß|dM ô§Í-©Ú<ÝwªÉíÒXŒÐ]GÉj“mRnRDAöêfyðPyÞðØÆt¼ö9’†wHjÊ*§¼a“çn[oÈ»-vŒ}ÌŠÈ|ÕErwN €GÝ´—»:HÞò®ìHæ£Ü» «Üy=¡ç7›Æ¦rä”ÓÏ"HËcUµ ¼µ-ðÌ€«e+Óª$ÀB)ÉC»?‡à´#*-›å‚5ÌÌ0QÇwàa¥p»b*ièïû5Ä">â1 ;„%!™A>-WdÝ1Wƒ10­ÔNÖò(Ö:ÞYTß“ŸRÇ—c<÷Äv4¤Áq&}”Ÿq[të*Àù®ã…²ÐBgrÂgxG)G § ‚àrŽ2…vS¸ì‹tûJÕp D Ð Ÿºy·+ºrCÚ㡾Fá¦ë=Iñ{¹•¯ UŠ]yßÙ¯^m0 -"r¨eûFÿˆîP++#ªAÂ0éé üeÂcbc’*·å7¼g/E)°ØÐÚ1²ƒ&Œ>Íßùe•:„£@Ê["²pš’Ab EÁäÙg<±ë§ïÏ™d06ü9än÷(HôÿZŧ’l‰™»2GéÓÓ²L‰Ìy”ód¿õåÐÒ­œ“¦öOP²ºe’wì6عSh£üŽø±ZïªÃšÞ"Дèä¡ã°†K<1±¿ "¬œº$ÀÍA $ eL~ǧ¬³I„ùjÌ\íixÇ«ØóóWSÎÝWñ:fg”É£ÊqÛ*cÍ#T:VWÐØ÷/r_<®W'jÏÌŒVŸKq:ñOCÐØÇ ò0܈Qí¢xˆ£VZÉ»$U×qP§IÊX‹‡bü,ÔUó]gA›}\¾±ÀUÇ3‘<"ŒÀ/—ËF8E*Uè¹^­0Ÿg,x·UÛh]ž´¥Ûî¾E}‰Š˜Fó …ÛdbPjÒbàá!ò»Þ ®bjI)%é3R÷5í˜í0¾šÀëm­nrfkAè(¶T Lø|ð"ÑÀ‡ø SÀ££ ±È$E@–Ù× ±G5fŒ{¸J¸tËc¸°S1ž=ðr®7!ѼmoZîé:…†(™&Êiâœõý¶YN8¨ cd^ŽžÚØ` µüMá¿| /2“ûd5‡›X äµioÅsŒâŒ’°9U½ÖLälÑ-Wʵ‰Lž÷¶[´Ö»Q'©©^¦n ÅÓp‚u¬(0\]ìo×Piÿv?ðÜR\´I¦Bž ÷›t3ô¬÷\L´Ä·RXq^#×BE°Àê34÷*c×ÎôíOŽ¿´¬êÒw#årKbþ1[ΨCìžÐsVfÀwˆ&ì®{ÁXfÀ¼í8];ª)Ê%ûq´ÅCimªàEýžæF€Ì©©¹¤³cÆ­Øk` 1 öõW\µ,Rv‰Õ.‰ Ô“I&¹´9ÞTâä€ã¶èeõ ‘Z˜Dw”¿b9¼çbl1[ãù˜Ç´i°Ÿéìp©0.äi0áŸÛoŠE˦Š0Ž›÷=ú·Ë€J›&÷ú¸àåü½TG5ýF9“Å¥"÷'Ã:Þµ™¥9DÕÜ ˆó 0³ùuh#4X‘îáøú3BþþyEI~‹RD0làŸžæÊ?¶¥wx¬B˜ªÔqUNÕºÁµ‡Åy­nAÕ}^Ñ…Ñ(ùUaÔqš6ÄG!•ÒÇX°éÌ zK±EVý\Ö”lÐBÉã°ãÂpô£wÁéR_ pPààGWøôÇŽhòèý‘Gó˜4+mSÇ·KA;û8i%Šp¢FpØ£×Yž!Mmâe¼€ù ÒW]¬v€Ýü1ÌM~á¹–Í$&½àöÛ,Ãwê»y©¶xÜ_r¼¡ôÏ©½¬¢2_Ôä|øåȬTaÁuËKLvFõëIÄ)È`Ÿƒ4"¢ôAP`¢µ}„WÜÐÓZriˆ{…­¥As‘õTyê÷ê¶Ž¡GýÕ÷K4îùÍ+W¡ØœÞ›N‚ßÔ«Å玼„-w°{4yž¢šÍ;îÂr×ôÓCk:©³HO7mHOž9øþ“hôC>­¢|n£„©Ì½Ú“rr? ‡ÞòäY5±F3>~W¼: _‡Ì£ç£å÷ˆ—š¥%†7Å—öã˜r¡+¼¡„(EMQÌ–5C0bvoï>•ë,dX9o ©5 SÚ‰› 'ÙvH°xY‰D¯c€.ËáËW&eÊÿ°!pé¥éa™Õýª©¾Œ•-_ý̽zpûeæJ}/L™Ùn¦£ß9®ÈC§!³}›5ìô({0öD3Yñâ½9þº/ìO _²áä9=éQÉöI^Ë«™*jÏ„§èñã8˜lHH¨Ž7Æio´xm—Ð@Ž®zHÍzÑ"í§m l‘ò¢poýý88iŠ¥l”Á-îÊz½@‘˜Ô)úõEûøX†µú|Róò г „ÿ.J¬ÄŒw™ûç ëQ”-;¤É¬z"‡ÒiTÂÎ8ŽÅa’y=î° Ä1£9Uo1u> õCRº¹t]G(ø¼FÊÎÂé>ýÞXÖŽLDYdeÜ—Lˆ$T_dp¾ fµM˜Sþ®%܉0#ÄNe•19þŒRaݪ³ƒòAòjx$¨ô;×°·¢H äLE†Œ=„EPØœ£Ü ©CÎÇk,•GˆfÒÉ¥tŽÏžˆîÉËJѽKÔæÏtØïsÌ\¡Â|m¿±Ü`EQæì$ûâRëdâX^¢UóeAŸ;rƒ•ûõáÂV/Y#NLÀÉQdç9|2ÿµ¹-¼R®RãQ¢ÿj׋\Ò‹fAð|ãÜÆK,ƒÃ×Ìq¡¢ 8ž£30òË©Ö6dàrêVߦ—ÇÞ×ñ"£?WQ¶Û-?=¿0\‰ó™Ì{˜Å¬ v‹`¨>÷0­ÀÀ|ÿÒ=éjLi m0îã.$RØÞ`y4SÉ} ’N«œ‹(+¢‘2¾Š-½ÁC•Ù4轡šjç 5#Þ@RLX…q;ÔF ̪¨¯ûü¸©ÜÞ‡Ø!ÙÄ͘'öxïª ë ·\$Q¡Ä?îE~°ÿ-ÈÏÝ–5 1‰Wò½‰¨F9åiN˜t}ï™i5ªã®0c2må÷¦’BÕiÜT%a-¢)?3 xïÈÒ¾«ªì‚ÁZA½yncØejlÚn‹ d/°ûºÍ7‰â¶úç ⸱Iw+&`å N*´ŠL–2kfD?l¼à øûD3þ–hHzÎà»kªðâÁ/ÉShP9?Vä¥Á©n„JÏRøáu|ð)ãŠç©ìĽ}|ÚJý­1#ê*ó|4‘tà&ߨìœç¨LRÈV=“3¾Kªc!å“TƒÌG‹úí©ve•¯VLÏ\š æmƒ·ø‚Ñ¨Õæ ~%—Œ¥cÀê&Y¢æÂ/ÞzÅu:}©œˆwÁ ©B–ü|5-³Êg}žˆ‘ön93 éP0˜¨ ¹_z¤‚yWÛÁ»Ùͦ5B#ï;úïÛ´Xžêêh8u»­©vÀO_VVúš uáÕ{ÿxÎy`ú ¤²9Á«û6®ø•ÙÈjÕ•ªj•àÀfzUüÄsk4}l *Á9ÿ°p5Kqj†G}%e©¯°Ÿj.,”›ïNÿ¬ƒ9o+DpRlî®á˜Çû´b†2±£cŧ¤nÏ@Ʋ˜–-ÕdxƒkR^ƪ•7tcñQ–SH'÷’ö'P‚¶Qš`´»_95®_ó%4zè0»ÏWjI¼Ie*‹Ý¬S›gKùŠ´c~|4€ŒSO=åq÷%#8ûÏâ\½Ó·§zŸ—Übã½Úé°gëÆ–4¿Ÿ^½ƒ &óÛ–pÑ’RÁHRÍç 0ÌŽ˜ Ý„1lÛÈT‹øpèÄm0'Y‚YLøp¼l\‡Õô5õÆÂ]R¡hie2iaŸ2tп‰vwI#á@äFoÍÉ_|ö¶!–X'J“bŠyØòŠtà¾@P^è7¾HÈK·O•ým &á|±;­h]žy;úì´ÌÒV–ÔÌEÛë¥y²7WRÓ}ïÙäH÷jŒÞÆÕŸ^ŸP™/å®obw„ÆKÂ]RÏÄŸh€võl8uìí]¨f[´¶PtV©€*åžaN­zSüj.‹ÜSaBµ1®oàNz˜{zjÏ}*.ié Xñ=VáÓ_B¶ÈÑ ³]é$S †)àCI”½Ý%uX~ÒóŒñ”ƒ£†íxá›âMg^‹?騮£¬ª®S}yÖ UmB¡i‚Í™ÐX·ŸÚ³€§Ê)e6Ïü2½XB’²Õ%üŒ‰1Åç¹×¾ XLVC™DÈðW¤ª'g/Ï›|-y±sJ,žØ¦ZÊñÊ>Óy¼2Þµ].Í»L@+šmZêW˜cÉn~Gùë¯W§U‚GZímBBäeó³îÜß²>Ùç‰ßD1ø‡ÔóÙæäS©¼¬‚ßJëCâZë¥ýÞ¹u~‹¿ùÝFË×Ì䯖ÎXŸ [ù•Ž+̇—­Úô“*ª²õ¹0*²ñÁ°c2%žçޗ̳ßtd¾™g›8åtñ^åc‹b]£=>#wqRápN܇q·tÓL3©R\+yÿ*ÿhð‰ÄÍÀP{[ù žk²¸¸7â ÏYÒ‚yœXý¥Dÿ\Bg‹‹`Á½'¢ÚçkMаL¨‹¿òˆîD²µÊ¼àóìN7OáïôÀ è®÷FØ`Ñ}WÊ.oRQ…)¯ºoÐ:¸þÎâð“›ÈºÖtW~¢NzÊ2ª4‹[ÔÎãMV2;T}¿µÐ…»ãÈ6«£ƒ`ñØÙY-c_}ºùz†Sk1©™,úÒ„”"c‡Aƒá^ ÙÌ0üUhåE8îEØ?^M’k˜FwdŒsϨuΓÜU5¦#èyr^N&ÇùëS^FÜ…m‚ä_X6Öo?uv)áéFÛº1ô«¹A‡jÏà%ò … >Û?‰¬¼»;WäNÌp…jnh"¾N‚,ã¾×Üf_ã’!Þ^óàÚ7ÙZ§íéŸUIí‘Ë2}bõ† MǦTÍÈŒçg÷}Œ-ÿp‡G!¦yb“€"Š)ÃïgÝ·™Q´ ý„æ¬ì³¡GD½-3 ¿š$¡ô âSnÄ”¢Îz¤:8ÿ‚Fõϼ6vrÚ5X€'õÌ*Ô06ê{ñë‰qi JІ.ŽZâqNãªÉ@¸]»EÇmïË;«òx?ùÖ5iWü-´ÉlV~ʧèP7ßUA7õ¶Û»ù½náã¸çÍ4š¨Û» Ø9—GîÄØ—2ò‰4¤Á~ÞJq©e4yœrñ‘ìOóžŸ? XŸE5$_È3ûᦡjdÍ»ãØèø²¨áLý¹¡Çšüó^U¦œoËë³Ü´yÝZ"LžLtã.žðöz\t8×|`,dpȹ#ñ›“~ùåimø ·ìS£Õr´Y~øÅÔÂeÞyC‰½]!aðR{Gr´ä†‹ec>õ0£ËHn™$Mì¢vù—kb!ëo4ð÷-ïû¾Í%)u¬¸Ò/*&˜ƒåN…·Ý¥–tt¹+9£í¾ù*Áäáa¦pI¥õ Щ ̃Ndß NF”è¼›XEÿ¼ZpàôȪ +«qmÝØµcná©åò<ê½”Š²OP?§o•o fe_ÕN ¨G‚„™…ÙI;H0eC¸Sg *웤Ý2‡~_N‘±Ì‡ÑÜm=ŸnYÄ&çöž´Ý ’üs%¿ìx¶Í¿‹oQ=T â1 à ò54"#j$Šéÿž¼w…Þ÷SFCÃ^¼šnAÀ¼mçŒÚU™hša{ì@!µg%¨œ\wFüøkùx‰×‰|{ù˜CHá®&Œ ž§('"©¹Ic&­ØÝÅÂÑ?Äô\\Ÿ»òÅŠ~à›¾Û(Tâ¹Ö"ºx o5ÕÌPÞdkKÞ[ÃñÀB±Aòšgq‡•ë,ÇrtêRE!ƒœl·BŽrUYƒÔ%›D’/%ò&ê5R“S»|)QFþ§3!–\0ý«ÏÛc½d”® 'چѻ†ule©š˜UωñßD;±Vqõs¥Øc(¦žo53¯±pè±ÂUÎù+·¿@¹5޵LÅ!f6;'lqV¥ŽÅ1§¥yBˆ_x1³~qʉORx%:þeaî1ìs£ÿÖ¬°„€á®ô|- ®:Ò[ײÆï³ïŒèKÏñ»ì+Úd>«Ö‹ß ÇnÄ‘õ Î,£]ô}ÝœIæÌxcE©¸ÚqäŽm¤Ï3r„³W¹ÐüÉúÚJòSDhS;ŒSh»y9M:8z§6á×3»˜Ý“…r»N3Ù—ìCÆÆNæU¤½FÕmÔr”Xþ­ýšJ–8WùnÓJ›’SеՆÅ\ñïò%!˜±Õ׈¬vbT§€~?)fOÁ¹±mÙôd uFk„½Jäç—ñèXe¡ÐIåY‰“þF7œæèsÑà´/Ì^r`ʯˆ1-!¸Ùoº)×Ra[sÿq\7òœ0—Ù~|¤~doÚ®³¦¸11I׉“WFÅta§tj¸‘‰­IpZ;ÊÌqj®˜öAWP…ö+‡½‡!Ýr±@"2Ó¡ ‘Ÿvl «/ ç^œVøy1°Å„¾nâ«ävNêÑ­.|Æ’†å5Û»--³ ½*ådÆègT©ñ9—°GGBÙî…2.ky,»“ég_3+(ØyÒqÀ p'¢Rb~Myæ8 ‚‚„+Êc¨ª<ÔD½ç0ðb—Ú´vádìÇ´Yq\½æÝ|(Á­ÏÕ´Ø£ÊJ›i÷òçAÜ©ÍNS HòQðņC$¦®¡{ƒQi]|áí¢ÿ!Ÿì¯ÖÉzÊIÉ&J µÄ¨Ÿ%ñð¢æŠy–+Õ¨,3çµOö:7ó˜×Ö²z–.. Ãe .rj¡B6I‡Ð;GŸ©DP5òåj¯‹Å:2ñ Ë‹WI¿À´`Ö9rõ9!C¹"÷Îèaì‰[’œëÆ´€'5ê¡%›ï9jÅxw±¤ÿáØ lMq-6J޽G4) 'Ç©†N¸qq:κè(ç0t ÂV÷Ÿ7^Ŧœb8¼?öÎâpïb:'ÎÄøgg*⺡þ-ÊûY†äSüÐglÜ„koì\€Ï35H‰DÑRyšÊ»¯6†G#3DÀ ÒȃK·‰¤¬Še&xªå²nÂè¶¥ˆÝuš¬awzvÍ;ü=H‰©xùbWå¶hžØ¥'?lÒ<Ò@ÛýõDþ'Ræƒyæd’ž ýýŽYtçßtš]»G5¿¼Üµ½ÛñœŒ¾TSº5‘fzè>yi•§µÐY5$[ôqh2Ý06"G¢èv(aníÙ'¦¨M³Â¥²Á·°i…™ÒPÒéñ‰¤oˆÞ[–msEV’HóÉšÛ­oixN½˜ØúKÎe¨¿gúޏ?¤h×ÁÑøBŸèøì'±¨G34ni¿“k¨WÒiHŽêM¡´»³W®‚6a»Ù¡VôBgçÚŒFÁGŒØÆ|¿[.Q´PÑ­ÂÑXw“PØ6 E´g†S›à±6Ÿºe¶úªÕ§DA(æÚè1ÑØ«0J65ñKo"žm ð ‡æ»·ï.;ΧC:nÏV±êçÚû9^Ÿw¼»VëP3ö4Dæ[7¯q…U³‡Y1Á¥EcÛ‚úÜÓ~„j÷‰­ê¤O¦àØR¥ÿÀ„Ñ ^qªýøª1—d$Í•V̸џ>¯Ø]¦}­iÁ™k†&H~âø¢EpKø°€CÕwÈ0Ò0¢õœj@ãñÛÂ>LM÷Ðúz]ñCžá^$C-Þ8ÄX¦mâ£[稒M[«’z\¾^øv¨Ót4¤•'ü€‡¬N¯g CXU—‚¥ˆ‹_ƒéO`«°&v§Ò°ëØ÷…Ï7Ä£ø) çßGd·±fƒ©h¶ñ°¡’ûÏØ—«ÚÈÅùµâ3°9…‹È'.àÖ²TP!÷þHƒLÇK‰˜«‰¼Ý‚4HØ3¬%1ýygoÍ£öµ$Þˆrõ™V™¦ŒÑ)ß–§p©!Q^Å„º’&=QeÔ ùzÚ\‘µÉϨó>TA4Œ™2…ß/;ÇxúNyHOôÃK|›Ë镸~»@mß™r^{ý· Ÿ·W=M&k[|×\‰**C a? tŽ3¤wr2oϬ» [}_>«ôdõèÔ§•­é²Ôè x/ÕFÆå2è¬ã²©t›QI30Uô'˜áÓ÷,‚ïÃY“}z7ÊÂè+Ô¤Z—9k|±–¶÷õÀåAªôã›tDÚ€m¸±Ó{±^rƒõᜄ?³•e}«,)i½Î[›»9ᇀW*ä&yò·lk´AT7ab?~›‹îƒ†ÈVƒ4+JÛ?f<÷F³µq¿(¶žyÖ£%®'`§vÀï.ò“¦€Æ<ÌA1tSçsµldkzä FHßÉw½ŸôË®+HBŸvÐÓ“·3DpsžÔcm•Àb9dÍå¥ÖÄ×[~N\‹'e!_y·pbF˜bùudå´Ïž¤êcH¤rÖ¢ÿŽ03ªá)D~îBGJ†`—àÕÿdŠŽp±s£'Ø-áá"6š-O€¸¤ ól©|‰ !.%É¢Iîᚸ;Í0(w,“ñãçYi>.ä9 ¸äX[(b“ÖËj: ´;”ÎX(¤’'Ä#äX÷!߆^ŒGpäXÙ ÿ“jh í5žÆŒØ NíÐ6á燳ˉ‚¢Î <B0NW÷}ÚõoöMÔÄfÍÝ=Z"ß©PÀŒÞȶVý?á/¡éЮÜð±[´û¨r’£¤v 'VÁÖ¿¥Ë†ãئ<‹À?Ÿ%Üf“˜ ܨÚÏ/É´A•+N£”)ì­(Òš²FñåºïŸå!ßw%`§è?|<)jû2]jŸ_»7r6q"Yóæ%;'pÓ¶z'ÂõÃPÜ´úIœ ]H9èG•¥šá-  1—£*YK•6£®`P÷WjÑ×óÑ€©ØÆ}z˜¹îO©¿(Rˆ·„ĹjV0àÅz‚wè óTW€x]pvìù’/r@1-ìô”€xæó„3µ\‰±¶º<…D wNÙ¬³8”)Ò`ÀZÕÃ¥\I»b¤Q\(&úÕia A+ÅQ y 'ühóxW»Ä‹;nbq²4aB–.\ЏBÛ©|òNÑ\JPn£ûá`¢þÖ"Šñ8œ8”T&LÏõÇ÷ õؼܫґñ>¸hèÛ§´NOÈÄá.ÓÓé¸f“Y¶’ÈÊ[/ÊPH ¡Éƒ§¨ã¼¡ìÅ;MpûL'¬ÇRE¥ì#©ûw lkÄ·q°1ùLØY%Y±®Ú¨5TœÛÄÔ|Ñ%ß#þ'ì UøË±ïŸ´0œ?µ\}YÈ÷èjÀyö˜ÕP%[Ò¨ÿð{s§¡»°Êô;0 RèÍ<Ý9wL#ô­^¶JÛvÈALå@v, a 6ýò;~llÈTܲƒ³×â¦p÷õF¥<.ÇJýÔ¤±šóiC€_*}Œ aKë%S·ìåÚŒtlXfɤ…MÌŽo6јõñFðÞÃû“N¬Še89¡î ƒÀŸªºÛ¿Xµì‰>ÖÑzKȲr­ìýqLôÆÉB×°‚ô®n™ëþ}ìªßcCDÙe¸‚_°,¢ ]Ü ARCj8BñÀ»*¦Ú¥S*†¶à;Üx¤?Ž9Âw£rz¬ÁrF$ÚS ß—>¦¶tmöŸÇÈß½ÜÿÜÑ&*ï¯t©ÙïÓa/þa§Öf”Éjù“‹˜_éN”HPñ„Z`z$Nj٤ yzfˆ=dh·ÑÙÒ/²^ö} ìð,¾mpÒ±Û…µÛ"šT’‘¹£ï­à‚–ã@(§g9ÐU.^V½²¨6‹¦ÛX9”f×k*,·sÜ— Û»Ã$ƒüm<”¼'œ•ÙHÔsùU8LZÞË$JÆ×ï{è8:#ƒ¡0•ØnÞ`¸}M²ò)4XßåÚϘ!k¾é &Œ¢iLž8AÈÈŠKYývQöuN§8ü)ÑËŠVÆi¤ €– i×ýDƒãäÃ6‡hœó¶xÊ­žÜÒo+À1sTýˆ ®{!p¨÷¹.¤aE»7Hq¦½]w>od—ûæ Ü›jŒì)›g#( âq¶V·oN‹Üží l<ñfgX4ÓÕ}ÝN [”µ`ÖãsXjW$IªÙØ4±Ê nãwJ«$ÎFÅe¿«]èà$½)Âv¾nà ‡ø¼9j2”-)h“h31†yŠdößÀºÕ.&"I`»³j‚Ÿ¾÷ÿ¦ïX|sÊ;‹fXõDÏ9NfhO‹÷y£gÚçºk~‘éÌÆî¡®"²~+Ê6òÙîÆ_£â^œ-DäÁNù,On­1³ƒÅq³i':ˆ×Ó?Á ½1\=އ/¡nZ«ÊÛp$Jmtç\P…E&ô¤{%›÷á8ë5(Y ’)«ãHÿáþbª­\5[ËžØm$ÙC¥”èð,Å$aÈ”8P½qvÀˆò8ÓaÓƒ€ !‘7×£1Nõ*àCæÉ:ù‚_ÛUNædŒ]ˆ>û)x'a5F›„KàS.kqžÌ¼u™‚wM´zTZãÑÈTz¯6™Œ1—ƒ¼^”Ö¹yÐhÐó—òÊmÝÔÂ_8eŸg…Jýk#h–Ù¡,:kÒü ~È@í¸–G_„ë˜)1åEŠ›'­uÓåBéc¶õB™ °†8”b:NÛíд’i•µÀyщØÚÖT4ùlˆÖèµJ+‚“’Ÿ²NéŠsEÙó¾‹ó H)êYù6RÆP]ü˜´¿d?àk2vKÚÑԉŬI«Ã”#–ñSZÇ!Œègé5ÿ–‘Vwô|ÅŸUøv§£#ÖæMÂ--ëa’3ËŸÞ&;û§>Ùb¶Œê×Ü¡±†œ¿ˆgŽ„ü¤$a/A•hŒàv={›D±ñ¦L…Y¹ÒÏ‚ó“GÆ®ÁI^`‡PêîbZi»L@/‘ˆ†ó2$j_®ÛÒWÁÆtí¢Pqxš¢zaÅ‚ÒÂgݘŒÑ—¤Aõ|j¤¯Ì p`‘ð×Ýuò«÷ÎòTEeXùaå(¹éÙ3Xèí;-=îã_ö4ÖJ³Ie,ÖHzWÛñPHÕºTà…löBŽM RÂÅá嘬Lþ‘c¯Ñ(ê¡Ò±^ÖlÌMë8´²èÄÁ^­ÈÂgCñÒBÃ’)Ý¥)ÝÐ<üÖ3Lâ˜}° jqléx ¿OWxAsÆÛšw|ûŽ$ñQ1Ø"•…âà 8ÍAøOz!z‘¥v´y· ÒLþÝ1¨æÞoîè—°ë­Wpm…eÖZÊÜȲA´"Oè<¬D­r¨}¼dBpNS¨„jʆ0û•äCÛÜBS˜ÇO¬jÔØ|®ñ.fP£zKúÜpüFuþ×`?6m‹ègÀ÷#ØÂ!ZQ÷oPΚš+Þžn ÚÏY¯E÷J•²¬ŠS»*7Z!}üU¾7[ù£n3ÃÚt΃7Õɶ SkVÒ'n­6·’î‰'{5ia_ùthíø™¡G”쇅½¨îóvYfC„p‰iÚW€ õdã!+bß®ãÅÌî8s‰B{Z޼…WðMâ4#…XÑè|ØØñ“ì”{BGJËÊ Â™†"Óó A{îWãÔ2¬bÀG=GõñM{škw³,Y\‰e£üBÙ^akêȰâšwŸ“±{hŠâÜÒb¶)Ê î!Þ¹/41hDC½êv$[xù@+Íë.¥h9N¯®¼{aëÑJ^¯:I*Yh¶ª†Twˆ¨ã@Ùôm•¯äñ‘Pæ^ÆE†"ÂÛ-¾É(ßål:¥Ÿ°¬Æš×t•}-õ”d]·ÚfÕ<{ ¸Ë(Dž©äBì?H]¬oÚûʨµ t üjÓ•7 üƒL`ûÿÏ7ÜÞ endstream endobj 106 0 obj << /Length1 1616 /Length2 21239 /Length3 0 /Length 22079 /Filter /FlateDecode >> stream xÚ¬¶eT][°%Lpîr‚»Cpwww8¸spw îî4ÜÝÝÝ]ƒ;|¹÷õë×ãuÿê¯ì1öªª5kVÍZkoòoŠ*ôB¦öÆ@q{;=37@MYCÑÈÆÆÈÔÒ^–^ÙÞÖð×ÌON.â4YÚÛ‰€Ü  )@h`a0sqqÁ“Dì<œ,Í-@ª¿Ô´´tÿeù'`ìñŸž¿;-Íí_\6ö¶@;Ð_ˆÿë*@ d˜YÚ" ŠZRò* y5€ÐèddPt1¶±4ÈZšíœÔ3{'€Í,&öv¦–ÿ”æÌðKÈ`pvšXþÝt7:üã¢8l-ÿ¾,æNFv ¿=Ù,íLl\Lÿ!ð×nfÿ/!'û¿¶}ÁíAÎ&N– À߬ТâÿÁdaú'·³å_7ÀÞìo¤©½‰Ë?%ýëû ó× 2²´s€€î r¦–Î6Fsÿsp²ü—†‹³¥ù1 8ÍœLm€ÎÎaþbÿÓÿªð¿Toäà`ãñïnû£þ'K3ÐÆŒž™åoNÐßÜæ–vðŒÿŒŠ”™=€™é?ì¦.ÿés:ýÛ ªf†ú/ #S{;€)Ð žQÞô7%€êÿNe†ÿw"ÿ?øÿ‰ÀÿOäýÿ'î×è9ÄÿÏó‡w±±‘7²þ» ðŸw @ðÏ%c÷¿EÙZÚxüŸâÿ{¤ð?Hþa¤@F[!dgþW&¦ÿ0Z:‹[ºM-A&3#›¿}ú×®fg t²±´þÕóßVè™™˜þ›OÕÂÒÄÚîŸÆ³ÿ‡ hgúß¹ÿ•è_æŒÚòRÒÚê´ÿûúoœâ_íAª©ýRäìMÿçâaa{w€=3€ž…“õï‘cap±±úü2þ Äü_k9#“¥;@çoÙLÌÿÿ?žÿZéý71;{Ó¦EddgúwÀþ§á·‰‹“Ó_]ÿ=ó‹þÏõ¿£ºMàWíMx‚­Ò2ÓA¿°sÇEuz»™!CJ«øWÛwù¥…osU¾Õ„0ÔOr´x,œ:¼ïKÓ wcÙPv¥/ó |H©{ P7(Ú¾Ó2ê—"¥ŸiDy]ÍËnAjs0©ìŒ+)ë—¼AN¶±:Á^=Rû“ºøc=8 ûš¤ÖÅb¶£Ôƒ¡ý*<=£H<~| ì躆êÙǧ͉…#ç1ÂöM>ý–ò0tºûmòõâÊ÷dÏØ®ñ³%Ýó2ºŽÔ|ËÛ b; ~ wSEå—HL;«2¦¼]%ÑtÕìßž3þîLFÍGÀ-˜±“q®š…ÈG(¹úuºçÆ)Éú$¦êùgV3^½P#Þgrûpö¶VÌáe~uÀÙ<±ÒÄ=VREhF¸vR)ŽFñ‚Ÿk#ƒ!bRUÅ-ª£@¿Ö‘l8crT¥n ¼¿ J©×|D³Ì%Cn:¤œÜ n‰Ñí[Iò'¦Õ–jFЫÑsUû²ô‘`Áàn°¢£N¯°Ùk]'§-²7ùEᬞ´à :Rh§"ÒU+;Õ ~×õû¦i9߸ßWá UÚR§f€&ØPŒK¢ÕãcæGhy"H6¨A¯¡’0è!Hÿ»˜¢›8Þ>‹ìdÎØ»åÌeꂺvÔ´éTÔÞÃwl›f£ójz1PÀ¢*IÜ'ûõjƒ>³'ßèxó=á×¾a2rñÈî‰áxKÊ2Fín·M T+âǽÕCÆþt5©Ò‘“j´4¡¾šòÚ•ÇY–À«»a›CA)M´ž'YÔ¾ÅPOþXJr²Ð«ä¶e{i’t+ûÄ?‡Jøï=eLl¤ ‚›³ÏØívw hÞøãExeϼÌ\á/ùIÕ³ü5ª«)|/n*e© :Ygßõ!=¬£ƒÀ2ù g޲³îÖŠDÌ,y¼)¿:S¦ä—%á°ñê¥Õ™×¾_Pv§WÍÆEZ‘nÏrlÅlp›r­Ü"wä{^&Âïj2ŽÝíöHn³Þ5d$zrjÝí©£cà‡ÁèÕ†Qê–.IÞkì'×·,óˆ!$A‰pYÛ—^g¦(i1;ïx 2•žÜ¦—iÁa]ÛcèòÏwÞå0ð—jíw¾½|[<+M¤ÄÃ]˦2½qŶµæp4h½mJCÿgYÈâ…WŸŽ)-þòy ÈÇë˜{Ó/{5Ã_ÍðQýÊò±_ýìmô­Ë ò,wcÄŒ[Ʀkˆ(„ê]·Ð/´>íµË`v1©Š›óBXì3zКzF•—ô“‡×›{`z¬“x㊙Ǔ 8ÉÒ0ßdØ™Œ)ø»LN»KÜÓ+ßÒoEc8Ú@(6înˆ£%`A„%AŒÏcêm,c^ ÂÑjóº’(H¢ý_žšìS÷ª#i¤~/;΂ì^¦7¡´»l£Ø$uL0Q8:Áa¸BYmYÌ~h¿?©¯Å…ðxT»E~Ñ•}±KÀÅýÓK /ïí~×ìEMw>ÇÙOžBäOräŒHQŠ÷Jõ©ôŠLÈš¦Û~ÈœN ¦‡g^›'KœÝŠ´U=b‰¯f5ÖÞ^x¹xäç*"šÙ…&3¯Ïv¿Ó0•´ß: SüÌKHŸ´˜z;Ü—€xó\ŒnÍ˼ۋžŒˆ;M”»‰ DL–ÉœMun± 6‡µPY‹H{Û–`4%x0ƒw¡>°N³Ãʽê.\N•ò׫?!3¡Æ#U·YpSÀɯBù‰ãͲB(a…~S(±—w e<ƒ|œÎn,ÿ¶ÏÒA®u=jËÃÃqÿFlv Í_y%×àÐçéÜïEœC“i¼cBxn¾%lÞHN[XmGŒ c8×ä#~šIeø€Ð/ÎM¤ßJ­†Š×A7•ç„I(1Ðl„¦½ŽÔ&™G-]”X–`—7X¹@+ Lpª³ S~>Eç*ëd[Îu†ÑJ¥µ%‰30v„fZ/„ã¶”$ÄÍS$ÏïÞKׂéÈšðŸc\BìŒn=}ÅÙ!«©»‰ÍÇÝÕ¢†o ãy’ùÕ…ð¸ Ö_êÄíTcÑú” YÏ—Ľ@DS‘>7¹÷üzh<~êe[Z¤Y™·ã«Q^ÍÔh’ËC­(™5ó´þµ+:=]Ÿxí§lØØ.Þ'ƒ§4HV¼Ä•î!ÕÏ’Ó ¸__{v‡S•öûÐ3åÚTÈaxÅ£"sIŒÙFã=f•ÔŽ0Ôlˆâ(\bbrñpÛ•œEÇ^ªY»Ûr ­Æ#3e}JÊ*ÃLE@ëSÒ/]PÚÊ‚šI¿»¹Ó»28õš&E£,ñÁK„Yf´w:$ Lá•`÷'Í6›+¸h#sNèP›?¢X¶¤ß.b)5Ée2¿ sñdYÝ—×6$ø5œH†ù&ÄrÑ.í–S˜Ç[µ„‰~›Ú”†X(IÒú(þCÖ!ì…8î† 5„!u‚°x l>Úh·,}¼T7‡1 .÷aS¤‡0+ìw„;Ý/€\­&+\dôÌUĈ]îÜß¶~™¶éÛc pF=pÔ[ žÌ®=ôOp€z~d<Ÿ M½'pú¦(¹dmÁóÓ—J~ºÚ‰ öhBQxel·+ñŸßæÐàñv¢)¢hβ$Eз^­Ž•Füa¤‹zjwÈÍÐ\Àwbv¦à iºxDÓ5CÇO…ÿꆩD–û¼’;TzÁ—ÞîJ~8ÜkØ`\Õ-…§pªö,Ç^FIz.ïîú5’|Ž2GÐî›ß94Nñr]¥Ú¬†.G=sè£Rqñ5v¹‘ÑúÖ°ér_õË@ß™‰'/Cb¬äÖó'ínÄOe wÞ€ÇØEž~’Î~00å^IJ,=E‰±ïÕ£¤„dÇ`‘ÆÉñ;‰É߆—¬Ø¤ ö%-‚oéd× ÿÀ¸¶S¬Y|ÂôöªÀbg£Ãà>ÉʽÄ4Mÿq–®X½uEÐ8͸Ã3Ïò)¬²K÷¤zíXÖtÜH̲Z& JV Ày7^cçÚ×7"¿x‰¤™*Á¼›%Ÿ¤ßJæµñì÷j$!UágK”$½€‚ÔDWzV†¢¨ÑMòÝ{é\ñÈ«»sà8Ha’:”Õ^¬–Ò`9!ÎWoÂ©Ž”íhX°¼ÖÁá8’|HV‰DaºÄ ŽÊr^8_=Ú‡­87VRˆS §%³9«-͸ÉDYó9Á iî“äÓ Ÿ2I¤Æß1c%õ ’™nÑûÈDœ§¾NƱ-fƒÉ‡þgY½Ð z‡ºLìÝ>K\-4`æ)»bëíc(ž¥Üâpðä ù7†º8®s\¦Îæ/뛪q½3Å.$ß¿w~øÏ³~­úáïÀ²9¯ë•xC)å£sgð…IVÃBì¨0 Óuä2îƒÐ‘åêjÓ"üu•t ƒ½_]Ï0›8ðØçxâʵ)UœÞ¤G6*é€N=ÒÁ}Ü]OÎzñ¾Ö¦”e4îà(8—2¿Ç!1±èicøGE{˜|Ûà¡wßÌ]Äz«ÞE1´!‹G×Oœ¥#2Ê5qH:'ɧaHù]OÀÌÕ÷L„5xùMâöêR© Ø)ŽÈ”¸pP{B¡°ÅAQ_²!>~‹àòlrä¬Q(»<¿Q’OÔýgoJ?Ñ öiô*ÉÚPÀ/ïêíõ¯£ËÒÒß ©:17ê+cL=J¿zªÏ5~s¾Õ¤ö~)ÏÅúfZ6T[®J¡¤‹T6 õ|U"G‘Ø#àä‘Àû[NJ[¨RÛâµàI²nk¹¨ø Dì;Ü)õåX ¥ðäüe®F®ùœ}ìýi†HHƒ*¸‹”¶ÁªñÆ…qòUî74í¦8¨¾Ø§ƒƒ¥µû+…Ç‚a ¤þßÌ8N²˜®ÒûÚ{•SöE'ˆ,¬Õ²¤E¿ŠKg`p@ÑõP¾_r„,@` Ò­xZdÄ)!kiAã‹w ¸”…Œ»ÔifÁ2+^'zyŸü±Å ~‹¨'I œtÀM=\§hæ®9Výákޱ¸ßÿdú…äüüÉpôêóŒ,QÅüþ¹' ã9sã[ Ï-EÀP?]aÎxI¸3éìËXùZʵÞmõÛ!ùÙrÇì°˜÷¥iÝ­ädžv!ËÖu$‚@Ìè¦j8ãG@ð %ºb*PwB†!÷Gì>ëgti¤ÞL¨7ü.ñ˜ågÚºeG[HY%®=qéÑ °&‚mœõùí¤‰êJaB šsJ€19FL¥}!xžÃ¾*lþ0ì²lsH‹‡±âÀ9ô.¸—mR–°8ÒÅw}_°¶?N»ž6öw>9D«¼Ÿ{ÂÚÞ!Á:üg¥âV¾œi‡½9Oòˆ6ÜG3Ž[§ƒÎºB=‡m}0bEnBkYM_” È·4 á§lØ›ÁjµÊ&UPËL<ÚÝð­¤]ù´€zׄÖ9¦|ÙåÝ_ê[¹çýÚC¼Ž}4\E¤Á ÄÚbLX/\°®“Ñî6O“À%€µÛQôÒŸçŠÐÚ”tÞÝÁÑ›úܳ¼nq³ÍåcXŒ‰óê.V#›‚’zNòdf~~‚±o'wÏ·€B /¿˜’Âß‘!ÌÜ„“ÒGæÄ='[ôþLRÞe‚U앵‚œ{²Ù]Æðž\úðAðn>®,ŒOmζЭHJžVW¨TFsÕ!þ“Æ,)ÎMâ狹Íõ >Âı†|èÇn¯¯Öû®Çˆ&‹aZUåc…9Ÿè±‚”Ëihr”°VÉgzpÝï»Í ¬}‘QS\ø–›¦)y.œ2»«ŽÅuõø3Ó@kÝÛ £UîÃòÑøª -wytWe¢¶Ùée­n*µÓÀ`a4~ªVg©+Ž^ÛRnÐÇ’!Ee*@ê&À;£zÏJcï>º©æö nîžN×â­'ôãÒZ{£(v„Çnj‚³·‘v,¢ÂŠnRŒâîm矫j~]ü78ß ûÙ’<æ¾REŒãM¿á‹¥tH8Ç+…–£öÜa%%˹ ÖèßLª]ý3Ù€û¥èÒ×¾sÜ}úJ:šG¢]§¹°º¨Â%÷´gbIÌ×!íºý¿BZ€Æ*©‰©^(…µb™Dïö¬ªXäõ©ˆ ÿýEÍïðæ þdìˆs5 >§ÔTI<¸¢ ñUÃŽ`û‰>y¶"XiÍ‚Y«0n‹ŒM„á®´•íVÄÏâÔ¦ÿÝ ›¼úm±S„W=. ÷h“븬Ò5¿Ë·qîFl/ô»£ÂèEVbv]±ÃAŸÝ’µ¾Q“,Œ¿ 8ɥęJ׺GH¬†äpÁŽQG„úNñÜxà$Ô öç«üžÏ_–ÒãQ»]^‚ÛÁ€ÀlüöZ™A LjxMËöhÊ\v Ä‘8Sùö B¿d Sëö\ígñ˜l¦TÏm’£‡HÔ3éki\¼–â¥z:‰ma#šÑ ê¢ìG…ÃíXq­¨}•% †œÂ÷Ý{Ñ®fä{¡Ñ± Ú˜e®S©ôWñß—‰={I_Qyñõ’lVxç›[îN¹!#>˜ó)õòØ©Ç"m¦FÁ¦bGK½ð^™9*´c¡%žéö,Á`?ÊNÉî׋ÃéçŸL…±+b2ˆîQlà(ø¿\ôåñ!8n¶eeû rCfÿ úaÏjs8œ-pŠb^½Æd!c*DÆ<Þ7c•ŠþQ|›”äŠÇKñ½P#öù;ªò±_¸·ùgŸìÏÞ=A4)αuÈa!Hldê'›Vúé¯Cb]»*z™é‰’>š´,…î…À¿zÊ2‡ÐS”âÔcvê'gYd8{" o}%‚ŽŒDÅ‘_5ÍÉ –騻{$ÆŽœ˜P±šÐ-Hulž xq–¶ªœë€…i¿fØuÔF)Ý ÅËx™éf³$¹¡Ce7¯‡"•òÛz4¸óŸŽäs:üZ¸xȥ˶ŒºŠ_voŸB¨?Ëx=û°¤cªý¨K ï®âj²ýk+­e¦ÀÍstQcËQø¶›4 #%Ô}ŒóQÍ»^€øÖ'H¡\狯Õ·X.Ò ƒKþØeaN8ƒ q¢¼¸QGõ2‘’ð8¼GD`–Re‰Þ8½Ã¢Eµz©…ií pïW;uŸ¹ö;ñçð2¾>ÙÂpEË›yŸšuë€4+¶`©êBÿ²²2H1ÿOìZý¦!ôÕ?E?¤@ -ˆ±\ ’ÍS³2q7ºÜ^¼\æÖÌÌÇiE ‰uª[=Š(ÆndÐY/¸ý+3ŸtäÁ¤>­jX9pÐçkÆ•JWD58ؘ­ ƒo¿™QóËŸïøÒo,v÷ËØùû—K¡nWϧÃÂx §ÊÍÍ?áÜFKNrÿ¨Åš*Ðà!ýÌÚl& œ(ääøöa³ú±7×hdÙxØÃ½¥§,U‰ ´¾dÊ8iÃÌ¿_ÍrOX¹wWùS¶)íðü÷‹1>›¿NÑJx9Y³oÖjaDܾsÉŽ<Üx} øª /gXÚ{XtKE]€©<}Ñ ƒöçZÇé„Á(ève1éØxïƒÃŸA#‚4¡ú9ÔҸ鴡_f X•h„-)t a³H‡»/õ 6í;5é¶Ü6ðf&'Q,ÛÍa2z—ŠI-l­4á‹[þ€‘ì»çjG>ߥ•:O3é„Ó,"ϼ é?у6ÂL],«õÚœgT¢—Zš ߌ$ÁrÍÒòãÊ,ÛÑ?Ðê\Õ7_æ*Ú*KfE.¢^óÏ@¡õ$/î_fdk¥k¹ˆK‘õ-Ö¶º#ï„Ð–ÐØ÷ü=˜2:xï[¦;ñ×Ù)†¢¼ã̺Ý*fî­/YùâÔy¿•~’N[‡ò»?OºÈÁŽPË©mÚöƒ7¿³¸¾ ¸h¯áÔ(ˆ¶\¼ö{tŒP;×Ö;~IR¯8:­Ñ¹ØØíVí[)>—x¦œQY¼z¨,þ9ÄKIå8)ó§:íÙA–­úá€bäðJCæx×Ú_ØQÍ Iôú»ØÐQ¿WÐ(yo[føñÒs¢Ê ‡(KÄ^ç †8^öB†dƒ’Wv°óJãk)o¿¥ÑúöT>\'EOÒ~·ªfü­£*îö¶ð˜ÕOYá°è;„à).ŠáÚV68Gnà‡C¦à°BÖˆ­gõÝí²À èZ}'~–º˜yQøé<ÿEc«Me ©ü©WôwÄ’S[H”™E÷ÐnŒ}lÖžFdÆÈÓíìP¨ "ºÆm_­€—¢þ5­&ï¦2-Z°_º”ù“Ü žáû-;ÜÂÆ­ì0¼N}C˜lË«Ø'hÖ0×;(Ö ö ^¾¸ ŽO‚'Ô¸†Üå=c ²X®vCÑ9™yš´FÓê„?®~H–Ù°Õñ/Ü„e‹#“JŒ[Ž¿b\x¹¨I#àjµ¼ƒëm&&˜”©3®¤Cà¿JS¦è͕â&y¨â|DàÜΛ+iE´€ß `ôŠ1Mîp~#r€øþYN9æ™ ŽÃc]󒬨¸;Šªó5Ò¾ÕÐþ<¼žÅ-‘6=%ÉÞïÎ= hIÞMG8;0®æƒ§6l˜äfä-­bàè;-Žl©ô ÓyAzi5<òxñ¶69ì*^z[€få§4˜ÿý÷ò\rÆõmm÷H¢På-È™$†öKê¢ÆÆ&8¿s*ì£>­6¢Á@DO»aVyÈÑYçb»ÔÝo›žEVe#Í{.߬ ²€àF‘rÂÂß¾û°wÿ)×bÍcTeò»{ìµÉ{ N†Erá*ǵnµŠH¾0¼X&7bΖNàíû@¶yÌsø§}\Ç(Š¢jÚŠ0SºüOžD)'WQ†û(ÙÎÈàä>üÊùÉX~òo××D9¬;]'ôLú‚©25[’{lÍc7]vm+&·\ãF‘Š¿ôµ® ©“#B‰yª®El+|‰yh1°ÅJÓò'®7ðàú.&)ð„"/^âm|B‹zUOQm×á`¥(·WùêUk;—'ø‡T(pböÐT—µhá›a€í?æÀ€ÓL 9h_ï#ïæx¶?Ùä¤9^°2{<0˜ì1Q½¸‡YU®[ã’ÚÉúDþ 3ró­(„€ (’xÞ²$ ÝX[WV³Ý’6Ô„¾ahŬÙÃ54N)_kG\Ój–šÄèL—ƒÏeq¿Mð‘¸}‹¼,[\ÿÚ'@YLУ/Þ¸„ü ûuó:Âùó,Q‚»®€hcQ%bzE›I ÞÇãTSŠ=Ð!%ÔPÙjM—¶ZCg$UÇ0ÔEu§«Ì N7 öݾ:3wxå;.Á^;r)‹N{ziŸ uà–&¡ŒÜV§×ÕOš—Ëõ jÖÇÜ[.AÜßÖ—šÁUá6ôrså{oCIkTiò& îBL«©G&øOsÇ îw²p²,IkäLׯ•Æ?2éx*…2a¸QëÂ9¬¦íŸ$ÓMKƒco§Šdü)$×¾øDèYsRqº'ÄXN×7­<†Ç³«ƒ#£ü`¥…“ˆrÊ%‰UrÛa|Q;ð4(ò"úóv]ceûÉyä3:Á=H·Ü6*u&ļâa«Ÿa3š6×ZÎbåî fî®y­~r:xFûU›ªÓ£‚ÕgƒÂ X¦«Úƒì™È#úN fÿ@FRMáþ*òüI’&6w‚µÝ‘Ϥ¡<›Í¹-AÄ4W€)[òbœÆOêHpeiW(ä5À…'©„kØàÇNýúÝ â6¸<•iÆ|3ѯ“;ꓵšÒ‘Ë'“|‰‚~æ >dA'†õã€'ï ºÁ¥-1þÊ_Å›Q÷†¥žºZ _=lâ>¾¬U@/ý‚]_ œ½¼E«]êÇ'Ó ˜$ÅX¾«¼„Ña ‹ÔáæMpÎü˜+¿Lå<Õˆ‰–é¸âh¿Cài|6IXô¦YE÷›Ì"£ÁªIŸÅt<k¨;¶(œ>i5æ‘…É/t¼ÊQè™un;4—•Æ9kãÙß~?‰½œ½~æ4“{vcw¥ttÒö¥çŠú}2„oµb»hŽö) ]LœÕ”Q Ê"×¥<»%}+ýX8›ø“`|¬ø­ë^óÍù6þõ‘ò)h*êî!c\Ö¾‹ˆÇåêkÿ,A]ÞÉWâzŠ¿"Ý=€•²Ð'®.ɱn¨4bòj)oÚ¿:Ö“`3s_{ÂÓ/ÚI`+}ãI7$Ylv0Ò×ì%°J×'AoÛý-^…ÖäYm’ØÓ²o“5õàòÄaóyûåíE%‚¯¶a+dÑÜTÁrƒµ÷xÑPã’¡*Ú±Ö†š”½ËÌ6F:±µ/¯tàÕßçÍžíŒíÎB–¢(p4O+²LOpKêt cêY¬JºêR9èx|$vœÄ_«Ó D)  9^jd@Ê‘Ž43†‰ñp#’1Ürê9‚l‚¼  k‚ 'X>g<¨^çøÑ‘Ü$dŸ^¿«s(àúÆÕŠ)LªR9 rg–ôU~V®„ã`ÿM# N{4‡­y•9ÌE{œ›Jÿ¾ußG´Æ'ò·¸îÄ*üî¹à¾xþ@´)ýl+ƒwò¦H)øÀOöÙ¼,˜ÓKy`o ÏwD[:½—¹»M³3­g`iaê{ÆÂCKAߒ뾘žÚßÌΟAÚSDÙÐ~G+4Qóű›J«<Ñt2CoÑÖ ’>ýî8#äj /$Í»Kgë0~*Ž·úÈößßäsÎcÖñ¤°ÄÈ]†~ßIꢫÃ¥KûHŒW±jÐq”ß»{¥Y³%´¤MG%£“ =¡©rLþÞŸµXÛ#°—4 hÈ{‰®>ø=eçÆÐ¦¡•Y€ìöH–å" î€ ¡6³E‚Vô öhB)N„ζsDùq5dtO!<V\y}“u®I¬—x åæ³Út¯TRw哟aÛP¤ÑvË(vð‚ÏLÚî|ž÷ù¦ìÉCè2ú’zPgÎñf?JÒ‘aqÊ΃v&è©‘1aF~Æwq¬ë4Ýè4Ùÿ@þw¢ÓïGŠ61à©ãù­ÆÏ  ò„a@a*#й)-€EÉȸÿ¥“s|5åüÓ:Ò~‹ *¿÷2mØ}Cõ9AÀi±R§L¢´E8ýiŠ!*Òš²‹]Ø•x;ŠãX ûY/0ðûR³Ñ_2®¥§yþŠɨ-Ž<™Å_Ò`†¾Í_G”…ü1Nàv«ÁÎMIŒQ?ŒÒ#رœ9+Ö7j>û¦ÁøH\j!yÍý‹×S¤ÿ”-"T_D/k<[1oÙÕõ~áÁÔñ§×ðœ6²…Û( ‰¤L°[Kö1%Ú7b\Bî^áðø0REiŽhA¥ Ýæ±u²Œ<>á¾q×Ô-Ö±CÓÄëD§+"Ã|£½Ã&žˆ sY9øõ¬´ ö?E@w£Zôy&C÷ù׆€k]2 G&Öx\uY}g6å&aœì3 Ñ`-§&°ý©h!‹ J´êØ®ï™ 0ç+“^™êŠ©“yã}Z@2||”tXZÚü²%88°½«ß„”EÁF•U½î003„@9f°6û«6;4PaàVׯ.™~¿•Y”M±Îø¦ó 5ɤ2³MÕý„ßS¢c8S~µQ¶®VÍÆX“²0ÞZrcúBï3÷!×È^kBÉž­2˜ZÛÿNúšÐk5 «@ø‚Ü[ý#ÄYs°ç'ÕÄušOfeb$6kïf°4q¼fbÑ|ÇÉ÷t Àƒ`£=ƒí&Þ_A±w‹Ê¡´hùõÖá@$¼ ¾5óeÉÿ›šÔ÷äK_Ëkê(·åAÑ×´wýhé'0!CÞ#¼§—Ü¿ÿë5„^6&°ÐÍ_€?Þ¿¿ý¦NætyÖ]l¸ØV0ìˆ2ãyS“/øÎÝ 7캟cñ»ÝWœr!ëôÈŒÀ\ã”ͦŠcãÊÖ¡ÀiIgüÍŠè`ÛïS#z¡æg¾ìéIñÚ×Q5»ï5ïâ×]9¸gùªU•’JÙ_ÐVØhÂßÉTá—pjâ?ŸD)²«ë9#†”µ§5|@˜îboq#dx£öz‰<ój„.£ä€ŒÈAÇ Ü´pdjv÷L®º ^ÂB´±Žä„½íÛªõ5üB•…jUª”½(ò¦ }§‚§})äÏ^ÈÚÚ`d4· !‘ħÚ|°6Ø• «úŸAq¶?†°ç"`ܨáqɸ¾ãq!¡°ÂDâ¡ÃÆ©ÇÞ;g×gª-˜“"Š®ZÛZkŸгSÐ+ÐJ ´ue”0X¬Áôù+sôhƒØº«#Ý.‰ø?ÏÌy5ÏtŒ*Z%V,¿NGé™­Èë<2ÉJ]USü.ÙŒ8XÀ"{5mî@Ñ¥bêiE*ʾñÉ~ŽÞÕ§~Ž*žðgwn³ªë•T’®“ƒÃ‘NÓŒ·F¥èöåÃ0l~Ê3O´[µ¤B_ç®–ø#9}‡£“™`LyjÙ«Ôåé-u•?Î’ùåÛùV…ÛsµŠ‚ž%ò{Ó…4“h‡I–Šè?I…'Ešc©q{ðŽ|SäþU£_Së¼IòÉ3XÔòæÂ.Rºâ÷[ØÈI!Ñ4f”¬üÙ…„.<;…d|Ü÷'—AžYInHk-3o%°‘þO¿´r¬C ÿ(o=ñÈùYÏ!ui³ÆŠ€ çô¤‰éᵇÎ]6ÑuNG“§Çˆr?jáâ³ß ôZ`+äÖÆŽÎ5Æ•Y‰Q0;Q0c—ï~ÇpÓ7"M3£˜65WŠ{Úc¨ŽsR\Èa\^«-ؾˆr­ ÒY>3`Uj™V;ÕÉ )WήŒ¿Ž±µÐ!íŒ?ƒþèóéÛáá$}ÁzNlclD‡RG?T®Æ/etKô`Æaq”I÷¾dZÐëšQÕu׿ºÖY†m¬º:…“‚ÙD_ªŸ´¼JòòYr3,)¨Þ%”›ã›Ø¶¹ð(·3Ûõ;{kYf Š’4úÓÜ-ïr Þù8 êL'm ÊËöÚ~Å먄<²$·³²±“Ét³'+¤b{Ìâ Œ²h:»èž¡®´ìSnìõ<£è ÿµ~8m?ÎÀíãÃõãöEªJÚlvD™yÖ¤JŽkr6µ ýMÓŸÒ™DÑxÏäÀHÜ$Àst¼ÎbšvÏ3 ‡úT ݳö‘:}Cõ}FˆŒ£6ä&èé4œô«÷äv1Ão;€‰Ê;ÎÅ+ФÍÿœÈ%Há<äô']#f-²ó•~÷ÚûÌ?¬Kx†§`Š¥hØ`©Mñ^röÔé²\•WGâè¾Å×z‚`ÚlO`{I“ÑÂYÝHû†b<Ìk’e}Ã)”Ëõá$ÚݿɠÕ)Û}ÿ„I™_òÿ|¨.s Q‡ÛòfBmÇ·zðf}€}8 C¤(,`Ãýä¦BòË¡â¹öüõü<_ôàú쓲Âc±lí……¾ó³n/2É=Î_›÷/ÒbfX7À\˜¦8VÀ·û^Tfè¡0 t$¢åE•¡G<#ÁÅûY±-²ôÒÃt ¢èÚÔ‹šÎ:|ê ÷^3~Pã‹é«qˆ[Úi|^ìG¥ðËM¥{b1)ÜñÙ–bGÉ™(œ·sÉäÌÁFàØÅÔ$kïëš üÕjá i·k¥ã“§ò¬ ‰p©v˜›-þšÀYNQÇQÆ2 ©XÖçry›ºÌèåáã´èúâ[˜^¾¹Àb‹ˆêjyÊ4º|Ýâ.K)ðGææ"óÏ“ ²ÏÃä?QhÅvŠ[逹…¯ š=R¤$ÖùKq©ï¢ß&®+š•Älos#ôi´MKÃ_pé*2à6Húôª-™$'77Ý‚q¤ÉL;°tŸª¶®jyË¿Å-/-éa¢e¦×+Õ„r\HéøÚ/~~Ö÷®E|ø>`Ím\@t<Ç¢µh×CXnÚ°GbdVôdåæ Пtæ¤,<™Ó§Ä³+û|R>äÁcQE¸£Ê|Ÿ”‚Z릺„`"¨ˆèÇJ¬ÓºYlÙv\œ}S-òÕT¾Ô 1èóaFÿÓÇqQ·kþ4Òþ€ŒbìÑ_uñÒªuAÍ¥øÁF~hÞL1Ql‚Mþ’Š?_ûæÎ`ħ¢’nõö¼±ÈV-†t , ×{—þ:Åêí—»ìT†gÙbœ=:_Ø1`ÃMª‡+‰'à 3 »v$ýi njAµÈ:?¹Äš(\G©Ö(íkrñ4çóÛ‚Ýü•¨‰.>„Ú ÄKPpãÔàAgnêpÒè±øßñ‘ŸH¿½ŠecMñ,Ó5]FQ¸ºroÒ’°É=K¿ñú¯–Ú ñ|—%3==µl3Y å§,LÃÛ&ë—\5ÔãAƒ¯ãاËoû¶Â?zÊ9ô~bÊ(Ò*–ˆ#2™ïjõeº…g!:Ô˜;Ôƒ$ad »]³ô(‹DïcIE¬ˆ÷qxi·í¶d6hG†?WϰBÇCµüõ]$ŽWV'M¤„Ï{}V–Ž4ž…>syÄTÄÈfrìë‡*KE­ë¯_õŽ1DÖ_âÃ0z(ѧù›¥±ÕŒ!ƒ(&™ì«Î®UäTÆä¡©¯Ì—»1Ѥ$êàã+g‰‚„Ì<Ä£p¹Ý@Ά® n;‚YºùvF]–Û‰:˜{JLí.Qº„f? €ª`bHKt4·5«º+–Ýœf–G¸X@ï{4Wó–éÙšÄÉO#íÅhÿC•¿Ð>^Òg•)Ãøx±F6‹îoœåp‹ð´û”:Ѿʉ›ç©; ÜY>¥¬ü„ü÷'Zo;YÈ ôàNLuýž²Þêp´ý™§ ¢ÆøHÙ$ÐÂÏLÅv¬….SO˜ˆ׿€Ó؇wØ™ ãWZ÷Íã—³wí‚Ø)hP“‘±Ù’ê.Ô¤=xê¶3NMâ‘ÍîF4¨%«*YqWÒÝyW„_KÄ'4ß*À¤Žâ¶*z¸ÍÞšØÃ.<õ¬v’ÍeZÝ)¢³R¸Ëì{/Ÿ,€Æk)NA:°¿ÐyýßãB¼|þ~¡%Ê+¶‹Á¸í¥ói–»$£(%ë%œ½·.ï§Ñá,× ÉmŠêz/+ï¶k=&7.”‡©Ìxö™>’8"@±ö Éáû^KÙð•gj35 =§ö‚ŒÇ«­\ñ>)2ÎÌaæó~×H¸ø9%K©{䬨Üíäuì—.Ûn? ÅÛ—Ž5꜅üîÊ×sw`6ìÌAç‡OŠ·ž=€$³!uN߇{Tž‚q¡¦›ºÆÇ1¢Lÿ!Sz´u&ô´Ò]áIÕsq!gwÜAå£Ö"kåàI²ù^2©8ð “Tý×:3xcb$üÏï b,þ®Ô±CòÃÖ®s§b1/r^ŸÕ”bm–ëì²í3­Öó9Ú x0×2¾|Ÿ¨Øúú£˜ï~Ãïþ]¤¢UIrf~Ppc\üòçO2Vk†[¬‚ ƒš°uŽ”eÒ…›.YÅ’`hÅã¹®&/­p¡ Ö;÷LXU~ÓµßÖž€Oݸ£þÿo¸ö]ÜáK‰O4™“ˆ´‡(XÃ/¬¡ä§_)éXÁ®dŽI»ŽFü[˜¼—é…â,¢äË=«r‘½]-ötÔp—‹ÂÞ‹9 µÁmD·¤“¬}·Ör’Èœ“+c|è¿¶¨½³LâJCk^ÝÐ+ê¬~-Æ|-OK?žà{þM³ë_M|¾0É£[Sl$— ±\ëÙ*4>_pÇU÷݃u57¯ E9aj‘ úÕŽþ„fžœs´ú·«»¿ :»QÏQÞ‰À Uñ`5ÕG.ª¯Ú軵ÖhÇäó^fþt‹ÑstÎWY”Hêw˜,Þß[WÑÏÅ’ìÝ}‡<º\á¾NPœ{ïMEî÷UDëv r.A“ÆS\Þ½ƒ9pî± ^ÊÄM¾QK­¦²¨ã¡ÄÐÀB‡ð¢ñk³9]ù%ôÑvÃ>™fø¾A´éGùÈè ÄZÓ W³^PFÞá-UÈÒº±xèL+)ŸJ>®žf‚ºÁ:èl½çÏ@’„›Žå}pÒ´·”ªçèf÷ÃQÍ ò×kü ,ÕU·ìצ¸…D8ÂYŠûGS·¿éVç°UJÿùÓr Vz…n~èØ^õÞÓä¼êX˜ Æn¯¹áâ;1T.­.—†¦»mºÉïø¼e—:oTFÐ…£'Owq¢Ðú¾Ši¢áÉ ©ÿ°AÝïH°’è3×r[HïC—mqÝqŒÕË$" WƈzËÉÆ$ºbŠšd¹ä¿I"ŽÓ$½#«]Å2„+ÈÀë&ÞR7‡<ŒtÝ›0¸u«6÷wïiPñÄx4n¼‰…ý]ô/{ Ñw—Îý9Nxª]ÙÙÒb0œˆdWc.ùP‘Æy4~Âsýžg=+Íù@¹À–ÛºëÑ×¾%ŽŸÖ} ÑýÕáN¥þ š—éÞR›´XXe @w¾Óã[Çøƒi˜wc†½R-FvqŠÙ– TÞ±¥˜ŒaÖ§Èj€Ó‚¹ŽDÐŽaõÏ+Ø« òÄ¢ì)à6?µ¾L&ÇGK–ui¤K­¨ð-þkÌW½&|;%r¨…KŸ»Kæ§ (Ë­¡^V.ãù˜’{/Aë0¦„"°è ’°c‡áï ÿ‹k ²& œ¬«.΋R-~Ö¶ÜU·k]ÕrG”%s+ÿ¹²ü˜†œÚ;w}ƒÉüuC°< ñÿ -4æg .Ê“1o™daÍme|ŠJÝ"oßí,ù*Cm¦Œâ¤asÊ8 ÛU6÷ºix"dS4>‚¸jLn% ÃÝŽB<·´®Z°)Ã">ù1n?¯ß'Çž8z‹œž×ŽÛÆdÓÒ‡:DפwÆœ’)™‡Ùðщ­‹rϵ™À]ìœKu¼N w¹SØõºDý£âcN;ÐÅúÖišD0&ˆ,ã·n?0\œWj©­ ¾ÍÕ™6àßMˆEkJcŒgfší]ݶIvÉI~J­ä x|Ý2Úè)çëõ‚£ØQÊÜô•œwhÞGåÿ;Æ-˜_J¡eÙ~q,t eŠìóçãdBâþˆ(Ù ØvŸs.†œ’ ór* V ‡ì£å×x°ÜH°˜"\ÛûÄÉþôÐx>´ÚÝBŽÎK­‰Ì…ãþDÏR°Q yf+vÃSÄìoÉ[»Y-¥z¾ÖñÛàtý+SW§”@í›*»š¿¹ú‘x#èÏ*åÔ­ P?ìÒ+ÃBоÍ\Ç~¿žØ¦Ê"äbEÑÝÚw"`-äj¤Auí+ìÜ‚‚Hsfªv298©µLÄÌx<~LC[Ð3ÅèÎa \f”5å¦Vík:a¡‹ Ax˜³¶`~T®(” ,[.FèiÏCÏά¸ûT9X%ngýÉ\×Ëà»<Ö ñÜ›×hixÖ=ã¾µöØË„8+ïºÔBaÂGÒGR²Ã±Kºp,J<ÀÙkz_Zi÷ƒZ4$ˉ‹¤»½-š¶*Z¼l/3:ó=ÏWI¦zòˆ=¸uÃìAú€b\ú>”舃î×¹ÅRÄôÆùU€d=‚±gPL! H½œ×<²%á—Je•Sw9‚ö{ÿ+2|T(¥AË•”Ó?çJ^šçíø'6Ƭ×Å?f4A©æÉƒ´ÂÙÞ_¶WïG­ò8ñV¢XLï;÷…Ð+:âLÊO:‚† `üPÕ ¬„b&©¾õsÅ‚ïXÙÈ~¦ñµø÷dáBÕ4¹›±h¨¼6kV[5Êý¼ò™aJ‚êÔ}fx¥õ»w*Ã4®ð¬PZir…„±YÍu Ú’»ç#Gp§R=R+ZùîyÞM¼ jµ^ûÖ•ãp°îpËV£Ûùdl¤è*¹ñ0Q*8>0 `>ìz,n©ÕkË!¿d*¢ÄùØ[«§tå’@ÚI´ÝhwaSú”9CB«ð½†¥ˆã³xÎ}øÚâÔeΩˆ”°úH-u9c9øÀw éÕ’„ldSjÕ­$}7;È"—æþq#ËLzŒ%H]Î2sY€Spª5Ç7óß“€ÈU¤Uu/ëÜ@èA ^àQ G@¥Ù]M;(xˆÍ)Û(oAðïî³6?XÃïš—. ð>ï4²Ñ–K:W¨ÙôYs™#¸l‹ ¹ Fœ¡,Í· :ë GEVuöXácš¥*å€Ê°?A±ñd™ôȘ>àåÖÙÊÉCYBo>›©¨NQ‰£¹lÒ0É$CTô´8žu¹-6 QX™$¯ QWä¯a Ûzè…¡Ô@9í¯R¹bG7/ßfý~Äð{ùÛï÷×Qý_${MüÇVš°Á˘Jôæa?— oR¦8´³¶€Õ¤œâTôÈÈ|iÎG¥õ(#ûð6::OY˜ü·¹A.¿ÃÁë±Ò~-ÞQ êL,²¿þó¾k19☺A$ßC;»Ûçi¥‚ZN?çã0ŽÒ¾†|?lLƒº-ù‡gû®³EkNˆ]kü|*ÊÜïÒÄC´ÿEϬ¯6hØWoSô3¢jö'e†á](\A ÈŪB¢`íÄ}Ø£–À¥qt´h4÷nì2\™*ÃÆ$ Þ¿äÆ·°bÎX>aÀ V¹>sćR ÙÃØ›RÙ6L.%OxCKþæa?d.{€&ÀR*BŸ~€üÊö4®z§\Jœ•[­ºL7¦]‚‘V£ùâF²c ž—>õÉjH­Póé€Ãö / O//Øûn¾5×éî’…W8í‡í0…£\¿d8›9=Bþí¾ÃYCÔ²@0z&žcitë€5Ü÷âKQODF™c¾ÙÙ>kH™œ*iKoÕ!pÀÊRhº“иUЬ•AN¥Xp"¾ »ÝŸ¿3‡h$ÎÝÁЍ0錼ïñä.ZÉУš®t&{Sp1ܵ{cÌA®„jVË*k¯®¢QmÜòq òúòz~õ5½·X?1Ä“áÙ⹟ b¯ÍI8öÏCµHa¼&†Ls2©+P}’6ƒÝAÌyPždúsðUaY@Kƒ¶õõ5®­¸jÀ׿ÚC^Œ<¶ô"[¦YÊ˺W©ý²“õóã•ëᵘ¿mpi güï•pþ?òMæŠ*§R÷Ü¿ÁLm‹ŽbLŸ+‰.ƽ„xœz´ËäwÆi7K×^@h*h*ċŶ'çƒZ_ÐåxÓ@9‰ûúïÉ©€êCg†¡Hxà£.* ™€ *±wä“=ÏÛêO"؃MF/c³Ã8ND™æâžO_”üjòR÷÷ÏBcÊ‹8YêÛ0¼ÿ£§P{Âd³`æÒ‡¹S×ûB™pˆ´Ð:FÅŽÀ¬9›èÞ:%†7Ê»_W°GârH°ä³ q®¡2f§ÌÂZƒ#kÞ:R¯¹pýÕ½1q¥\§R—) w†ï'áZ´ú E .„jðéîKMàˆ3š6Y£ã”õaäá„K^¿ô'…þƒÞ³î®´3Z=!˜Beaxl×àŸä>R4ò‚º$ÃõŸJÒÐ?óÀÌ‘ˆ‹¢Kgm©îaó\kCÇÈ‘¡¹ýЈe}RÈ|‘êä’=yÔ`!‘AÌ[£¼¥”30£¶X_$qÈbšTõ$|p  ÍLî®nD‡Ü³ º’>Z‰Ì¶L:\rS,Íe÷6†ôÊ/³”nç[Rë"wëÁJ{w¢käñ÷¿"¶ ¥§Pt)_”ÐAÕ<p¦¯VhšýÙ Œï`õË<±ÜÏ—îSµ¶rl® øEX0”ƒ…ûÖM|L ° 9wˆ¶kÍ¥ûçe„ŽžÐKæo2Á^2éÄ÷âo0°éë§Œušó1›Eß#×ýáŽrZ_`c¯ç!DÖ28Cÿá2îaOÌMá˜vð¾¾ i+½6€¨ù›H§^Cïx{,P‘mÄ[TGzßë o‹5·µn Upi`cómäëLïüʾ¨µ\y‰n8£á™^Ñb ¥Û.\Î/vs’kR9¶ëß ‚p¶ÝÉ‚ñLA=¤´Ñ¡A8\d (ˆ­BQÆYš¿Ì–µ\u˜Fd·}mÛ×`– 3r\ð4€ÈêÞ5}=FÝ?u¯V€`F àWÎD™ta@ Å0º §u{ ûñ ‡Šj[ú>åEÄá ¢QŽèà¢úDoÄ—ÀùM‰”#öˆêA׈W¨à`þöF\kD€þ•õ¢4kºœ³ÎšÿR„;]š0sï&v÷H÷EPŸÀÏó ÍÅAíIAzäóøÇ'ÖÉpò‹î‡èCx7ƒb¤2g»I‰&ðÁ®„Å}Ëoõçñz°ÝQ^ç"cxÕfÒ©4ù§ø$¾eŽÜxhW¹rXTÒŠˆªXùÖ%ûæû´çü%a¹ÔÙ©PÁ[T×ú_èŠ"~¨Áœ—|5ðh|¥çÏ5Q¸ÊØFqDë[LC|d»–=héu~¸ÒýÍÝMRÌ®Â?9=ÓÝaYA꼨6V¡„C]£]1vVñüû¢DØ67 }ä¶aŠïVjãØ×ÄÃl*ÊÁ!s)V5ÑñÖxp`™¶qõvÜïýu²3î-×>Ïd4®—ö{ÝYóÒ5?¶Ie´îKU²qs™™Äÿ²%ö”Ëö¢t›l³½Uì P;ñ¯Ø^µàlÇP†b×›ñ‚­"ábÔÝÀV g°¾ wîM[v`èÚ_ÌZ™„…íQÂú ’ZþáNw@ô‡Xa…h„d‡)í_Ýû²Æ‹¹\»!tĉÁ@¡ Q‚dPµŒ½âÒýpÕ8¯j‚Dñ“Ë"ýz€!Yrˆm2Ó»®D”[çôq䧈¦Ñ­ÅVe)D‚/ðlEC;iØJ×l¦5|AIpÉåæ«œˆNíXv”FM§_:=8, IÛwÞhÀº»ÇrÚª·g æsìô$§¿Ë¤`·R÷ªDYÞ„±wää.-Rzéû¼Ý¾G@ "Á§Yµ00åÊ¿òK~ë›>n¬÷wæñ endstream endobj 108 0 obj << /Length1 1630 /Length2 9101 /Length3 0 /Length 9941 /Filter /FlateDecode >> stream xÚ­ue\Ôí¶6RÒ""CwKw‚”4H 00Ì 3tKwHw·¤tw—4HII‡€¤ðâó¼{ïóÛç|:gšÿ½®µ®׺ïa Q×ä¶€šå¡Nn€¶†®º)lj‚*sh@íLf~,Y8ÐÔ…È™:Eº@ €ÐÀË àÆbÈBa®p•µ€ù‘ƒ…ý_–?.3× ‘ÀøøáCav@ˆÃ#Åÿ:P8X– 0 «¦®¯¨ª`VPÕ(!@¸) îh™”Aæ@Ȱ„Âà¿s(Äô§5ç#—4` @À€æ Ç0 ‹9öbÀ€p;ñø !VpSˆÃã  Äìhñ§€G»%ô¯‚`p裇Ý#öH¦E8 Ìá ˜à1«ºœüßu:X›:üÉ=¨壧ÔÜñOKa4¨ƒ)‚8]þä2,@ØÔõ1÷# ú« Gbõ¯ Øp •)Ü D i¹ÿLç_}þK÷¦0Øõ¯hè_^ÿ¬䀂-9±xxsš;<æ¶A°¸þ¬Š"Ä àáþÛnáûæ„ÿ5 æ?;ÃòX„©vX-±¸T¡)Ìÿ;•9ÿs"ÿ$þü‘÷ÿ&î¿kô_.ñÿõ>ÿ;µ¼#¬jjü+ð7  øóÈ@þ›·©ìú?ùÿ»§.ðï"ÿGEÓÇQHC¬åàæ|%Ä-ü7Bȃ\€ê sk€¥)øqVÙµ!@8>jú×8<ÜÜÿ†iYƒÌm!†Ïÿ7„Xü{ý2ýU=×;99ié7lÿí]åÐ?î×Á¿#Ô7ÁAËüÿtº*P‹þðÉÈ@]î<^!¾Ç ÈË~Åçù?äþ‹ˆç_gS8È𞛓››ç‘ôÏ/÷ŸÜÿ4Œþæ5Äjñgw4L!ëöOÃØÜTù¯à±ýœÿZ| Ðh޵0 5õ·IJMv¨$Ïì‘{ßÕÁƒÒ+ü¢•—ãSm÷N ^.5¹«à¬¹otÙƒýÞTbÝè 3µ'²_xÒ±tæ.36 ²mùrâ&ï놻O+¯¢pël}y§a\p‡N5ÖÌÇ8¾dñ¡sÊñ!¡ÿÃó2O¬Ž"m!¨A"ªÌÝÛgŒÝ¹üÅÔ3Øß×Û~ŠÖ¹IÉ–…É jJî¿Gçàj?ÿb~vãÄ}eÃÕ¢[ܘìvQMgµêa‰²„5L±¢©Y)Ù§!‘ª édz9‘Å<ù8³®/mñ2„“ÙØ9_!oe“(ÙÄ Ž+÷V1…Þð]½Ör;™Ô‹yCœ«ã9¶¶=yVõv3½Ø‹°ŠmC5w‰z£)ýU¦j̈7šUýPBx9…3dLË€À9¼5Ǹ ÞþuÊØfõ8&re=Ú».«A½ $Çö‰O´% ¢×q¹œi âHmVµRünM¯ËZ–ñ”~Håô­û«Û¿o³a•±üéTÝÆêf‡çÁp˜;i¤$FÂN‡Ï£[´hH8-]ÔO¨xE9®-3PܳÔc’½\ÜÙá¹DW}‰ú ­OÀ}Púmz?ªÏydÞÏh±nëô<¡¨óùÔy–œê¤‰D®í rpƒéA9Çk‡¿p´h£øOkyÜćF.€œ•›&ñxùƒë»&# [xì$Uë`_Å&œû Ø1,es¢œîݸ.a„•±¶ÆO°öñ;ýz25€{G횀ڻ "¹Ñx9V£‰‘êŽâ›±\÷‚;¶Æµ¹1ºÕô]Ÿ f™Ç˺ÇõÉ·ŽÕs š²Þábÿ±aùÄêÊ3ÏSêóæ¹ss?­¬>x#z(½†xÄ0ÒkvdÖßLH ¢Øí —<ü›Bît,7ø-Þj”m÷ÜÇF7v{ÝT_d4¢Þü­!˜Ý(`ÉÄçZ5æÖ³u\_¢dZÔõò4òÂâÉFž6%¡wQ6ù­¯7ll[„–ò]|mÖX;oW¯ñØÔ@U/(ã"¼ç%Y”;±Y¢ÉRîî¬ú¤¸]J<ë¾é  ¤Së“ ÉïX!_7Î#…°p¼ëz;Ά¡ô|WçãcL~ÓUÌ*oŒ¦±Gïš±¤ŽiçÐæÂF!'1h닦"áëû¢º‰ö)´íS/ÒÀøÐTñÓAþVÚk•5æ¢@ê–-‹¥«TüÓ>š 4çÆº»:'¦’á¯$@9Ú¹@² Ø26Ý\ƒ\Ñ÷¨nš&L’é<år‘ŸJ8ßcsÔcËgËÇcæß‡Xß›»ƒ4юή»1´ûø8–õr|23½ìMŽ ¹Û;·<ÑõßÛ•Ù¦–BƒàxÝ Â#xed4’ã”ñ$-ks˜±lžTþˆ#&«a­–®Ã«õLz]€jfY‹¢1{]5Ž=øš©í  Sr¬M;Ч¥PŸ5:E-äv}ãè.‚µüµó‚cêfâübÂH=òìSÙä|jw¤@Í j9n)E9Ô¦.œ?¥Ï¬>3ÖÊš v¿©¬^`|ÿñÁ9¾["Øx¹·PÓ¬üЧ¦tñ÷ðúsæ¨5Ö¾\™ÌÎÒdÅ› iEä:Lª–‰—T¼aŽC(;¹O-ÙÏ2›ó%Ë1É0ŸeJ†û(¡¼m/ÓQ7râ·™:IÙÐóøÂÚ¨Ù«æÕÏ)”ÙÓév††´–l-:ÃAˆ+ÓìÔõéÚ,Ibv%@(}?XzøÕVª%N…º äŒV;å‚7JÆ?²Qôq3ßú¶©'~ÓOA„?¥«(3á £|¶ê•aÒ¬ŠâKW_°IQz§ë¬yVsjScø$rüÍØD½Á ÖLL3„Å”à[m'ÞR¾AUë÷:k·v©– ò%N© ]´¤›‘…Ò¨wG«Vä‰`#ó6)LÌ@³ #™&eCn«uÑÈ¥ƒ=vý å«‹ÄÏè“Jö…XþúÉP¿Ìø9U® 9I·þ­ÅÃVŒÃ––”P^)Ì&-P2åÈØgÇà޶n1É÷Àò©8-ÍÕ†›òBÉ;gy¥0À„;7BÃ@hþqäX0s¦ ±¬ˆíõGìÕT —r¶sÑ@³Üß®$#Å-çêF=¡üÎ'c³°ÿªW‡ ç+QÖS5ì7¢EE Þ¦©Ã-ÊRA+û×$cùsÎѵ¶µØø&æ§¾ÂàX%8ÁËC–€.ÈûH³‘æS¾Bê{àÒÂíâO÷jâàÊ”ªûŒ1°õ†>GEóïÆ“ï~[å’€³X­êNÄ<5c'´]ö/.… ‘ ¸°n.RÛÇ0¾¢Æ º*?;؈wçí`/&2ÈJ/±¤ôRI(téPziPÆB‚$[Mœt5õ¼‡}]E±i±"P*]-hè¼\·PcãB6Âþj5ûÜôܰt ƒßèåP:yDIvÜïåI VY4çc£>ÿݹ|ÚÉ }V>Z¢ûÀ2$bò Í*ƒ³â~:‘'9!ÿ€WÃq=âÌñ&úD]ï Ï3‚¾@GõŽÖŸ{J!Ä!eÍÆì¬üYå|z/$PJ3ªIÂÕâ°ŽSg'ŸþX9K)[¦¡Ý> t;.26ÇýB¹+9ä«ñ3°XÙ™n&tºJ]QÀ§V—ïE&Ë›ûÌþÕQm@»&6¡ç¶ç!¼Â1¼õG Ù†è©8±ä¥Þç>œÅuOȘ±IãU³’ª4‡œ¸8m2êqMz=qÖU½{s eˆç4Ρ9AéÚ:ò¬1‚ Ñ´¹k3~Ûg†‚Ïü˜¿¹ºi˜ßˆŠË~óæ#ð9©Ù”:Эb+äy&À“‘ù kG]ŒŠÄA¹C=J.ÈOß`FÝ¢§¤u™4),(yħ͘²×§a³µ’HêG$K?¢ø¼³lirB¨›ümMÔÓÕª_¬Úà2(¾¬òçK kDÖ‡”BľçÏ^·a_±7i¡@ÎpvƒS‚¶ŸNëkú.3*ÑÔ0âä-+·ePæ°06ˆVXŸâíO˜ZŒ;^⃹Ší…ˆ¯ì;¼àF"k󦢽?´åw ˆàL}\j~äXã#g€ïv“@äÂsmM½Á,gQ§~`WßËÑ-W\ѕ߅Y*uJˆB®¥y%¿W}’Ÿx:^S²Æm (K†&>µ[©P« n&K8NCªj÷gþQeÓOˆ w(;;|¢Çv_Rß¾pï™Q;f¼P£/»+ ÖkNævÈæÐr+Ôð#+ßNmßÊ+Jô³X%º‘j£rjÌ´iMº Ósá¦upQ.öÊe¯ï&xVàÏnîEÕ:€ÇB×BäG÷@;±*T¿Ïk¤´_óhÃxu?üÄТԡ¤:_7—Ö¸·é"ÊÁCnØé‡x1ÅÔØ$+8¾éã[;M}KK„Ý›,¼èÖlû §i œ¬Â5Í©öþò‹«$Þ¹ ÍóŽ—%~6îÊÜ)ø¼îœ¥ufèóÖtóßøÉmŸ äZ·,èÒ4­^†·8Ò#Ûä›ÿRKGú‚X¶èÕ¾Wâ[ÚÚ0*.uA¼e¦\ê)/FŽ»3bl,IÇô±>Æ..@ç¨O ˜×W©õdŠk÷¾Oü& y…q©cì5mùGÈvF>EbL’m`7K½ä¼ö(MÀ¥Û}:!é$˜ÃR\kí“5—¥ýš¥¶C$Ÿ½'|òö;Ûð!¦ÜËþ ’3¢tpùýó>Ïö˜i?«„>¸ž:Ø’|þÝ8‹›FÌ܈4¡ü6(Ñõs¾<ÊŒîçZ·ƒ’UœVZt¿jÅ€ÇôæÊ?»»KP+™³fŽ>Ʀ Ï»ò¾<3絿 Ì_ìÉZ10ºˆ8$ìÓ+(78~X4ÎìºÕ8".%-˜›MÉ‚M½>²"ÓYדAС ÜoR11Š'úÆö¦[øàÎ%K^h{ß“hG)û>ÑzµÑNƒh¸¨P8–®?%Žâé7ðF¤›hü2öéòQµWÚOÚÆrCãÝ xz{¶¾•̆ÓÀÇÆ0sîÀ@f?Œm‡K£Õœ¤l›úËE4­ ¡x›X%Rà: ´*NcëFÄ ˆžZ‘tî¬X=}³î¿áŸV`•³i¾@­«Q ”ÃS¨Yå!Sht©ƒÁbÉ?­¦äT‡S]æJ£)§Ö½Yò³#kÆÅäR8¦öFÈôü«ü †Th›iO`¼g¿,ð%#--/ì›ò>oè;W‘À(7û ïÀ‘㲳̭¶–O†+Sˆ.^“Ýæ »Ó˜Œ-z}QèÁe÷¦NúiB’' ix 3E寥HëXÀeÛáM_… ޽:Ê£Ÿ-âbyYV*à©û¾„vsÉý³Ža*¯×Þû:ühzÐã÷åøŒºË.P#ÊDáù”¡¯TÂοä H ֤䙿ÊÁ!ÙÖååZ7›¸pfm0À"GõÄÙ¨b»æÑ÷d9/œw&‚úVd¬::ý_Ì¿vµ6Œ¹=þ±v÷ÌÍz‹!!30ze(Ë÷ÇØHLÄ`éÿ(ÅéùZí//$9K—U¦’k-£¾+§x¯vÿ,”¢UŒHöˆ™¡ÓŽÓu]MëpÛ6(xyšú\=ú-¨ô]Õz…#‘²þvåÿåg=Æ™¨²ü³¶o¶¿S;l1^èuá¹ –:¿[˜:ñ áëëDHÓñ8•’œ3rêô9ÚOûOÙÚñ¦´”U¤í³¬¥¸ròQ(«¡¼¡ÑEtL>ó]®º|­_·þZÚéam¸%ÖR}!.éÚäîr럫.ìó–ÕI­¦ôv« cv/çœih`ª°èù$^Ô¨%o”¢çêzâç6ßÛqåSBRœ fûŒàO¹tA_W8`¬·ÛH§ ËxX£þÓüP.W$ªët6Mê¡êLåHOýçkŠJoO¬N^U\7(è/ê’[4¿d™+÷%ÿPóÙºø.Ž‘  _8¼ˆ~"‰­@˜Èðr Ñ!,/0;Ë) OÅg‘U©ÍB ? a垦>¥ÍPó/U9#Ö;¡Åqù0Åï#é«—×È ~‚1Ç’‘•·œI>e}*Òiø¦÷do,3±6é¡Iñ¢üˆäf8lÓîyú¦MTñÁw«[°)¸{*="6ÐÅy_é²¼JŒIkFµ7/Q;}dHaøqå¡í¥Uâäò²’’D~eöÿ–ñy!½¾Q=½qßMMÓ)’ jæÔu‡ù÷‹)¦F†¼²OÆ*ðÚR1bÙøF¼¿ïn+ˆì’`¼¿@eÑÙlx¥Ó%_âÿÓ¿ö|ËýážyE5 ;—6q¸˜²ùÁ§eÛóÀLÜxÃÛo¸a_ó™ 0¤¶Ä}-ã¾.ˆkv-öÅ;ao;¨ v^~{éê’"±ëO¶¿Ç/ö¦õ™”ÙðM}‘¿¤¨f¾¢F xf†µ‹0û»Ý‡&ðd´5¾½0Ê{¨äã%—:o`Ï 2‘Ò)„üzÓƒyT+ìPÎÕ_¤ñôÈÉi¾´‹QµØ*WËöókÛÅÜ&ƒË’p©G…©jØ6§’2È4jç‰R É/½ö©E¼62èŒtÑ,uÅH•ˆ iSù”×—ÛéÐo+šBÔÕòn(uX ô￞ægþÄ+–©ÃßÍA·9\vÜ.Æ&Ò.Ég"Y_„»±n®G0ýŠáXµ Œ{+z¤âYö4ÞŠû$‹OÕí²*3*ªÎþ1ú¬ND¤2=´U:16ÈÒ"ps­àN<)4;>ëž÷@È]úÖ ð‰v£­òWO†Î_1dc `¢šÍP¿øØ©~©òÞIFǺy¾&‰ðe·!âj¸æØÎ!Ò ¨,ZeFþöÐß?|‡–t´é^ÏÆ«›U[|Bº3tF§íÎÞa Zbg×A×ø;V øÛ’ZxÍ^„ø™ ñ7ø4Ù#zCMuñF^îN¦ß˜0“t 6£ã ÕE£N™éä×Ñ·`h=±Ãeâ }ß{?½ÚËM©ý¶Ÿæ§Z½n¬áÇq>"“q6ZÏCPÊòv&—U«•S(â€Àar Th»jxóMfš½#š8´°¸-2£ÐŽêð™åÌ“§¾¨LO)‹”W[ÉJê×ç£ìé@hj¯ñ–¿|¡~¿,wymÚÞüðÄ·4ð¥IŒ0D{ªËvÕ ÿê!'ÓG~…{òÒ¾@&’ÔYã®ôþ`Ã^4J佃}ÂÛëRìÙð)•vЂàžpÏ¡/Á@Þ±&;w~ «Ä¢AÕ,¸(·™TÌG; ‹1~*‰lñZÖ¾_ÙÝW3ï"èD¦m?çiN…)€Ý]KDðÚÇBõE΄†’Ù#ûÇ´H¶î'*Û~ÖöÉóÚ¿±Íb¯ëR·Yƒ Ø£eÒQøC+öJ°¢-ËÁH.õ ÷{3),Ós‚>7^ïúi+~\yÕ¡Ðó‘À‰pt1U´rô¤[¦ÁÛ]¬ÛLküÍx…'öQX›ÂfwTÇ ,gsØÑܬoNÕ¼º×odJHàÂ举ÙïéAu¶Ò&‹¯ØHÚXCçùº‡%ß7xs7à“fapPé/ìr)¸5ec`Ïû­D$&Mae¬€ö4¼ß×~ IPsÉ_iq¹zÁ^xÉáýœÏ–ÌhÿÒxJî²ÑÑU³>*ðÃŽc]E–β¤ä×2ouõábÇ÷6©Ûs9ÅJl«œ:bS½˜ôK„³ñ¢WæzÝ·G7 §tu÷Èd\"sNØko‚2î39¿“µ¾'Ž(H†q"]æ)¹ÔqÑ92ñô ’,¼A{b1l¥8 ²Vâ>­¦ƒ³Òo‘MšÊh¢ÀŸ gWHïÅ¥W¹±Ü%’ô´ï5ž‘!©9i’‹óíä^;†‡JQö⊠z”ÿ$Ë/ŒI9«Ö“öMì–¨!7˜ó6|©~Rе¥¢PWA•·*¶á»òѼWƒBÞ†!¿xÐM|ÿÐaÏàz„äQ‹E^å°§ör«³–ͳÔJ™}˜`RÄg_¤YÌö–âcïVLr„ýöÔ†µIvqÈž%ó{ýãÐ@N0ÕY)X¿,±â"£çÛoÎ]GG'Ý«ä ‹'91Oe ¶N yu8¤Ÿ2bø²°¿>ó#ñ¼ÐÈP Ì€ìÂ(ÄÀrâJ/¥lŸÐÀY*PضýHí{qó=1#å[2»îWV²Æ/”Á¹€¥ê§bûZ½øöâ„x•‚ Ÿ‚è<©ÌcÙñÍCŸ~ñ ™ØY–R㤼ŒUðØ/@™r>$݉…z±ù…‚VK Z"A1þÙRÛÍ{Tä@—gF!'½W~Ç«¬…F×E.Ô„ïIcŒY+ÅäÑc‚Q?«—H2ê=ÙîÙà 'El›«ZìÀF™/yÃ__' ­8×Ï¿l¬#I(jûåü­fþL%IñÙ”ëŒì›t€nN¬»¯²6­l*´‰+kø OƒœsRa´%yÁlÅ*G8\tMÍ¿‚S¦²‘8:%Ñ+L§i™L·åb —X)PÌ„´§D¹Â¦¦ÃЪ'KH…'ðSŹ&C©^ݯN‰þÚàw㾊”CYÚ_™RøNOùu3ãô¥ž;weì¥7b ½‹ÌOR7Å€†7‹:!È WIy,°½Í”˜úWR^V§×¬bóЧrmZúæ›È¼»µ1½¡ î*+;„ߪ[Ó°¹bË'ŠÉñkÛŽ³bõ%"…ÛàÚ“ßÜ 8,Ý»gsg{C¥zâÖ9ÍE\-¾~Ëw¸¦‘{-Øri·ÀÒvuVá;Ï]¿¿yË8¼ÀàU9Þ)Ñ ï·Ârfú¶9¿‹UªÄÞNd=/X ZG‡¤c¤ÿƒÙÿ|<ÚÉðöm­çTÁ¾Y¤0\÷”²¢%YµÜË urèp®µžv¼ñm,NˆŸ>%×O@@/õñå²ásö¥ûWãè~>ÍwSîMâ¶;mˆ ’Ï¢ô"SVßH¬/f@6¦i÷²ì›‡Ú¿R©‰böiy‡³(_ºîe®à2Ö±M½däQØâÓ"Ï4@à üÈãMvÂá ?Yè¥Í¥Ÿ3:ê,žÄ·„öß§¬ùœ®1Píy¶z&,ß<¡ŽpÐ>ÒþáÈx*3ðôÖ¹^#éõÙh¨Ë'ù ~!µUêËzB+ôï;¬dÒ/ùëËÁtÐúm[¢¯§»V¼½ÚŒyê*ïä~¢2 ÑþT3¹ ™)>úœÑÓ÷z¥dÑN¤F[lÇŸ ipQ"_$+ÛÑàYªïõØÀÃïZ4ÝF©‹.iìïlß_šGŠlØã}î›×Ö_ójV=WÌ-Óà8¨ÎEC›ccO§¤Ä?„Kµ'p©iúH»…þ¤çI5„Méßì ÎpQ‰ì=4wгm6ü\ô ëÛÇ]l'jÿ½³´ÝIksó9>t†Þ"öáyï•¥¦|lÂ×lµ2™‰°DNƒúÙS)6?)Ö¹{¾TeQLPŽ–M3Q®c—ÿÚØ+:_Ûe¯5®¹Ú¥È-ÎÒ€ywšžZàþ~•aÿŽYR¢‰½ù5Ù„÷Oq«ÄÔ%£äS ’üûf¹ÌÌÅŽ~É«ÓМ[0D¸.¿ìèÿ÷ âË endstream endobj 110 0 obj << /Length1 1620 /Length2 14116 /Length3 0 /Length 14957 /Filter /FlateDecode >> stream xÚ­weT\Û–54Á .…»»»»[p (…îÜ5HÐàîî î.Á݂ۗ{ß÷úõxÝ¿ºûGÕ8{͵撹÷çP‘©j0‰YØ›¥íÁ&6fV~€–ºŽª©­­©È^‘Ibj øcæB¦¢’pšB@ö`IS ´HÍìì6>>>d*€„½ƒ‡ÈÊ ýÃAÇÀÀø/Ë_.3""AV`õŸW ­½ƒ ùCñ?Ôk Àd H¨¨êÉ)Ëhe”µ2@0ÐéOª.f¶ s€"ÈvÒ,í¶ÿXÌíÁ ¿ZsfþÃ%æ 08;ÍA€îæ@‡¿ F€ÐÉäìüçrX9™‚!f±€Àæ¶.ðÇniÿwANö<ìþ`ÈTí!ÎæN àOVUIéÔ ±6…ü•ÛôØ[þñ´°7wù«¥¿±?4Pˆ)ì €Ý!å2,@ζ¦rÿ!spý]†‹3lõ¯ N@+S' [ ³óš?ÜMç_}þS÷¦¶GÛÿíõ5€ Î@[Kfd6ö?9Í!r[ÀÈ,m9°¥=€õv ‡b®@§¿Dûמ¡ûS„©…=ØÖ`´DfQ¶‡üI  ýŸ©Ìü'òÿÄÿ'ÿŸÈû¿÷ß5úO‡ø{žÿZÚÅÖVÙÔøwàŸw @ð×%2ÿ/î¦v [ÿ.àß=u€ÿ¨Rhåbkêôïð?èÅÀVaâcæú‡ä, rZ¨‚ æÖKSÛ?³úÛ®¶:Ù‚ÀÀ?šþ=N+ë¿ašÖ óÏ࿆Ïõ¶ø÷òÿÈôwñ,ê*JâÒ ÿõ^ýÛOõþM àÿ'ÑQ²·øÅ_,ââöî/&6V+ןc÷çàñq²ùü7ÿ&bû×ZÉâr°2³²²þüÿó÷¯•á¿ÑHÍí-þÚ1S°ÅŸMö†¿`s'§?Úþ}îÿ4ýÏõßÛtš#/ÍÛ› |±IÍHƒTãfŒJôv³Á;ÕiæçùWÚwù¥†mò•™Ã·q8!žßÑùS¸æùcSÞ: úš­ýØŽ^…Yýýè˜:ñàî–æÇðà@×%\Ï!CV,•€)®oòYÄÃÄéwù+Ü£+ãøûÇNüTë°çÈr…#O¼ÀK ¡f)†Û>µ éÂ”Žˆæãm¥ç“s=úeTPyîöO@äk¹Ô€N;í$åÚïß@ÿp{E<É´otÄ»ï³`7Åòƒ!º¸;<á¯CÆAZ{ô’€÷¹º7ðj‰(°Ø¿õœ~»Š wFñ¥pq&¸*DóGŽj*K¢ ‘%½™aÚüüýÍ=_ÀåÌæ Ý/ œ7­Ý–•}¨Ï—¥ìö^)^­a—8þ†j»I&è!F¢¬~ú‡-Âèl§ß«á33MÜLæ'è¨a _W~<­»¸oTQÇ‹ä+cøæP‹hKFCï4ø«6ÑBÕµ1cy0ášži4Û~Ôþr–Ê6¼&B†[•2½bF¨:†&³†_íÒ ²ë§\±ŽõÁ‘¾lbøÜ^q+H¯=ž Îíšt`Ì¥…Ù‹]±–k¡xw¡ÃÑ©ö“[¬õ*›0Zõúå†Õ? k‰ŠTLûõù>nR¶Ü9ñ>ú*Ò»¢k§ÝÒEjÑÄ@ÕÚ»ò@ÐäÇ>!voy=à¾Ï ôùpÌ>³¸C¢°…xKÛ\ü%©!ÁJ8}¿Ê€…+ìÔ=XÁ®Ö´–ˆ4J‰ }Š+>8ªÕ¸ ’r¬+ß$CLëGDÀ ?„E;á=2u®W{ Ò+¦ÉAm» Õ ýõò«êãá–þô7àFû¾ëïËͦf+èÜÇÞÂä+€#™ÿ¬t£QóÅ8µ0]¡úFk³èÙ}ÓÝ®Ù1êÞš¾ä^ÏŠ•él6›| ¦v§ 6Ö2ƒäýoûµ‹diyñr±-¿ˆÀªµ“Ôc‡ükRÐЈ©ºZ"H”W03Eïšee¬#ÔÍû¶U^å*aÓØåõÇ»Z øS¢c®ÎÔàE 5ÆqkToR‰û2œîö­ùW˨)sŒ´Dõc´²%ûSØ[ŽëçP&çí£u»lÙÄh nH~zžp“KVÊœ»w 6‚FýÚX>54,–Ü÷Xd§d2T½É³’¾îõæÓÞúÖrx(Ùݘüšu,ÂË¥°£~4éZùÉ8ù“_f,ND›„¦\•Ÿ0œåVÙÍBÖ²Ur«:=»”OÈ"odeFväùWáðë«Ò2ÍQ­5Š“y®cDf]*5fªÖ'#¨ßÓϦíÂ씣9žy`$·S”ô#ÞÅåÙ¿Ø)˸;Ií5WÅR" ’L‡ÜšÄEÙŠßöQþþr±¸›…¯0ƒÆUÒuš¾ÚîdŠPrÉqb×F¤ý`—nÔÒ;à(/ÓØgø€7·k^Í´¸ wýZSðûh¸Greë;)pŒŸ¤Æ ˆ¹ãP=„ûE3ЕùYiËUšÍX„oиù\ÔõÓ'”]3ŠLQBŒ¢ÈvüøÖÄxX`•9ÐùŒ³/ÿÊ“h @¾ÿè ¯í ž—·L»è¸Þ/¼#§+XÝ(ÉV¯ÀÎò1t¹3A©k¤á*š9,¹u¨í·Ú šKßKñ%”‰›à{lÍrÍ›o†Iº‘µ¢­˜ª&fÊôÚU¶ý ¿o‘áà õ‹®Ø(j$Gñ½ t6Sò‰ýŒ ôžaéÖ†òg:C§ŠgB¦aPÅÊBØ]{·ìÎa§í —hSrë&¥Ð3þlü¸œ¬ÞmñYä×Ze<›Ü4øúì:FGYœÉš”ãÓqK¹»jtd(){æ.¸“q/æ%X‰ia(ðOZfÈ&¾„tíx§Ý×$)îBi!7k!ÒUÊ¥j±=sö ÎÌ}+_¯ojVç‹þ-)„ëǼjø1½r4ï6 žë¿I†™ž¢Á©Bå!WCÀ$¿×ÉaI‚ÓózItœ”:uÛlv´.ƒb¹x ìàýÕy@iS.d‹ºF§š4êÃãƒÊ!á‹lÏÊêâÑO<œ‰<—¥ˆHã·KÓFþÔ\4Ê”}+ü³õ€=õjNïèw9z·¤-ü²¡øØ¿KâU-öÏ@\llîäµïø,*/'by\&mñýrR˜oÖ tÆ_õD´¿žÛÃd£…¯"j]¼Ùêg˜ýã/"¾¦ëì0Ö#µèj;r˜gY]úµ¢÷žã÷X}Ó/Ï8«1ÂJΜ՚l°xÚqzÖë’üš®¿^|αž;ãp«VØGV+c|ζµ5MCŠ33X¥ôÔt6÷.ãr¦‚ϧ;Ý<À‡ZÂLi±ó¦d Õû>Áêë™Ä›ö[2¬fÑg/eh™s†+¡Ó[ŽÚÏß,Ѭí2Ñ`6Ù¦þŸ¶:z‹l:é)§¶f Q*íI ©­[µQâbT]5¶-~ D Òyzè¹6•¿Wg™ñû‘Zá†ß3i!o€×ë$Å“òN…Æš4ИüžYk1ú5œÜ3x^%Ÿ öí)”°Cà 0¸%þab>8¤Î›²«ž¡imžÞ]ür¾¨Poˆ¼©D0ÿ-&ÌM!Ž5åÒb ãm^ ±€òÇe¡˜óÚabšJ¿j rÅó”dqa 0Ãd™3wšmÈ¥ãÃÖ»¿Z§àÞR*†6‰ìù±Í”ËÆ¯èfE“°Õ/?¯â£úÝÏ« Ï‘4¨’8ö ¿Ô4½¨^³ a›Æ~yN Ô‰'ÆÃ)}H¿Œ¹´Àg‡×:iªqÂôÜñÂ4½²C·¹À¢&÷?DFÍÄÉÒr¯XoUúsÅ÷¶`§qø±¯3(Ö ßÍË–q&ºý1$Ò;kíç?­Lëi¯Z)7FLæÄ5ªTmòuñ2]²yR×¾|™3grbÉ(¢’ëüÙ¹æN&é.Ý­Ð-.® íEà½Óä×oDÔ5ªsâcÖ Ñpù„³ƒë_ßrúmHP3ãRSô‡â¹4†ÀßöyJ!äÚå¥y)hOë)*y‘R†Ü³hX¥' ŠYåh¯¨ÂòñÏ·ï¤íBâ°Áµ²8¹ó^2º”q\;‰Ä5É£v<~H¹~ì0iV#ˆ6(™<ôù­a?ÅŸ`<œt-ßåUŽ4LÜ­§ð(¦¸G˜c”tCÛ*PI;o·Ý¢·z›&ôeïv (~”±€¾»=Lè³øàÝÈ$k𪟪´ÔôU´šáûxȳ#.Þ„1±+-Ÿ³'Ú£•¿5£ âwùŽK}õ;!£˜GüÅx‰ÃL]ÍÉø²¾¥…m4Ð¥T/|¤ý r>SCº}žrïÙMí‰ñ9<?-ÎÕ¦I·¬¨¨#Þ³›‡’,è;”ÝŠÇ -< ¹?»nÕÅp{W„ª”1¥½ö=MÏ=Mííf›…¬Ê™ ΑèaåŸË!as²„QHÎriÓ5Q6øfV²< †¨ÀxÚ2“ø„ñ2ªÝ£˜“Çzì®cf¹é¢ÓTVǧ„¯ÂÙÜS'¡õaå·ñ@ÿH¼d¼]›¥ÉÔ²7¹•^&…grš%"xo ëœdý²€wÐ ycù³p•7n’ºx-}ÏlÞÝÅ_Î9›¹zuþ&à: Ã@Ť Sß:â1i0î#sÐê„GåAê+²Þ»Ò}æ:K„ œêÕAË8r+‚Ì¡…bú|×hð¸Üi6žÁq-?†Š¯˜È¬6”jbtã_ks5e³.J´w½“:(lyï5Iï~uóœ=n(þn,,6×ç6CFߎ|ŒøŒA.Q]D'KýFýÍ3õN¹LŠˆàI4&n@ÈÝù!—J½´ÿ²sSƒv$Œrq›5é­3P+Èf6FˆçJÒoú›ó Le臤†z î¶h'^aÈk-L­´rဵôÁFÿ§gãá„Ü\ïòp—x>‚Gkpä!å•eѤK‹tI¸=1«–cT%R䬲 c ôÕVƒûOÕ>O6f4EüS^LD}#51ÓԾ¬äÄÂ!ézGu¯Þû%˜›8ùmh ð…¢ýÙqæ,Ås)v:5hì†ÊuÆ™—b:øuyÊ'›\möšŠCÉc¶<ŸÈ(wÄá³`ìpqfv >>ö ®–‡Ü÷?mˆè=$–øÍ²q6VSÌ1í´¨5Nè³¹ÝO·HŠØpÐkE’”aT ¿.UXÜ϶ès:ˆÓd àÀR£HÁ$ÖÆX²i|§Dø°=îdF8©»âœ ɶĦ»Ä Oñð¹ V·€Q7ðÃ0í5WÛäJÉ眛¶Ãˆ^~—z”>\à™7Sv­¸º’ìŠö:ÃEÅf‚ôÀØô!›—ø³ p±jÎsˆßüš;ªj¶ò¼\ßPCwãѨÅC¢¡ í„ìóHÀùŽæQ4‡ª½øeȺ­_ôBåYòºávE'DMJÒÓo‡–!—NaüÈ¢©®k•p"¿=E*ØóYé–3rZЀe.(f®6­J—?ȈB4FLñÝ·Ys•ðR1Ÿ“qâ¾³’àqLh96g"¿Þä£aßü›Ó„ýð¸œÀŠºï,°"¿™¹jê(Ýð5¢ñÌÿ¼æás!ú–²;õ˜‹í‚'Ó™d¬x«aØ•>jð9h­;yj4œ÷•€µ2 õUŒòßÌ]ùÙ„8Ì£à.´á î~w¢ˆˆKXX…†£§[Æ8x«ï}e=€-:”°¢'šs4æHHx÷%Ì(2Ë]>5쎜se\‚JO²£úsÖ»-ò–é®Gr¼_1Q³Hcj‰¶?Ä<ãD=¾R…ÎvþüþT‚š@ •û½·ÍðŸ7G’q8/‚ -#Ûa[X~‹=CÝD¬1ˆvª4ºwšïúN¯ïEJX¹™&膠…âm>ÁRÓ éPŽ:o—Q’('-òFJ«\q°+SOü$Žó4ícc}Zùa$• ±E©G#üüùiäA©‚¾wØFÂtô¼¶ÚÑÅ: /·çhù­¯9T9ñGø© ªàÄZ.Ã|ÂDîÐ6´Ÿ|{6ô–楱!Á Ä?düí.ŠAlxûÎ9_0ó£0ú±ëAG=?ÀúûÙ¤†m£»ôø{|¯âÌu>¾¨S¤âe¦žíBKôÇRmô!–ÃÆY1 ƒyxœ– 8'÷‘d.ùŠúã8Ë¡êªâ¦»4@šª-æmöÀKeÉr!}>š, ØywÒ±Y-¯ÀÑ'a%Œ5V†tèÈ­Ðád º¶Ø…~Àò‘8$ ¼=SîkþpôqïD ÙB>}þ°¬‰A7>.þK>ræ:Áf{lƒ$<3Ú#kénr[wµx~YÐûŽã1Ód\¯ç}{¨ îüâáÏý›¿ šlw¼ï¤vXÞÚçcà‡Ïï7§+iœ%}áÙB0âKYÜL\”bÆ¿sžQ;i;¡ØîԽ«ÜYyŸQÃRgÓFÔ£—ÿ øO Í•+ºj ªþ®\ßK"Ú>8µ{þötê|¼€²Å)q?¦}0£†ÂççÁDdke‡’œê%…uøŽÅŸ³³L{*ÉÆ$&hÄL=Ú©É%Âýû{†wäWß"ÏÜЪ+ï“!Ŭç:|¶èêjD0ýlYbz}! ›áX…Ð æOüdQÂl«Ôx³âZà™ÇÁÎOæ9òæ?¶FìØ%vá± ¸0»üKТB$(ëÎ0ÙG›+׺b6™ ¹û’ßä˜}ʃB ŒÞ#Ê7ÔòÉsn?ž½ŸI;Ð%9zì2Ž;gn4îØ`3(á$Ǿ~ø^$õZÛ“ ”Iq„9Å?¾ì…8iÉÛ£ó;i^}?²aÁà^J_‡£âváœØ)óf|Œ¢} ‘˜­?Ñ¿g¢³—]€eä2¹È˜ö2suóÚÇÜ<)@ž4ÕuÍ@ÑkîiÑævÃ>›ž¹œ-%ä2¼\PÚÖû7j œ®(£œŒ÷RK4¾Üy óÉa:©tÍÌtÕøpvÇuVÐO§qŽò劒Çâq¨Ã`AO¹pPL=ƒ]dÜg~-2gíøVe$>zñìÏUBÏ™\41Ò*„kjÊòí-èà5Œ0âUf •êÿ˜ —)WŸAïÆ(|a´@$r\•¸–h’ ØÚœÙš$ëAxxo›§Òáš_Lݲ~©:êUàÈ *Ì×Cº—÷²N¨]E:¢ã»í*m@W*ó¤xc®ðÃ;»¦>ár ›p7z%3ËÈj¬"c¯ß˜l¬VxsX¿Y´x?Uö¯%Æ{Q¢³zZÒVÔ÷Ø'#Õ÷­å’¤êDl5-ÚSµ(®Õ•Ü»&K·ä/^é*~}!5W ¾Æ2.UÄ«,&É\YøÒ-Úˆ¹ÆÏR¬zÂAí%ºïÖ”ÛŒ¢4ýðÀéËwÁ³Yw¯c–† ¬ž=úRiÖÿ‘0)F=;´™ÃCMe Qs…A-s P]ÜuæmqªÝ¶"!„‘«ô+½â¢<›ã§lb} e†¶¹þ¥öI;îO"–ï=‰èá5t‡¥Ù)laxÔÓ#‚±^ïGï1ûƒ&oºN{\*g³÷?©"†Ñ:"GÎmV·J:hïĉÍ\²å—ù2k­ú×%jo*Ú—²Œ/ÛÖ o* aýHƒ|Þ…™ºŸ/¹+ ˆ *ýbã3×A[¡K»Ÿf²sø¦‚ÌÚ‡Œ«•ÌNÀ»ì¨ò°üÍá H©.ÇŒ»¹‹ÅΊöHí&~¿ätÅœ›7@è¸:ŠÖ‚Ç lª7²¾Àp–Ã2Òwùýg‘q'ë¯ìEŒÌ–&,¾b‹ýk 䩽9Â)÷=¸ÉÄ `/[%Å)“=×m¨véŠ2‘4M ”Xrs„š epn㔯æ…)(žbŽ X-ìëÆ4UÚÐQ=!¿£F†nS’”ÞïýÖŸË›Ç~rðCúbèÃÅ«.d¢ë½w@øU4e;bC6_»ŽßQ‰¯-¶Uà€16+Ê;MVú¨•h Ðo±¥-$’톻è$ÕÆeÂýa`µÝù2Ñ#5p›Žþ©Ù›C–dTÄ‹ðrÃಱ%ð,Òn?*æ[Td“Ϋü’³Éf\r½çyÊÆj¬8M_’,H—/_àIM…`nS€Ûã°eÊûF©VåWÖaÝe7¢ø|Û,Ø]ýýÛ¼p'Rr:,,€"EuÎCK^2 —’Ó8õ¡àn¨³ Sà Ãc)ªY αk„Ý–kΔ<梻Ùâ‰Lc}¾eVË`Ï*:’RÁGŠûºÛdŒšzý ²kkäÉÈ”Ø/²…™¶Ÿ¿´¿¨?.Îkóȼ`Sšj”önA=•]ëu§Ö» 0¯ UrÈÌ þšø&4Œ82£{ =Œó´¤nºH•u‘¬«ã¤½.!»Ù‚ÚZZ¤‹ÒK¢ƒÉì눿eJ{›Xñ©¹ÂóÎ?¬ðme¿YòÍ7@É&×ÌQn”«Á0£]+—FyŠŽæxœ<7ᘠÁÅ®Þ$fÕÝ{§\5µ±ËE«ýžÈFÓ¢=ßö™•˜Æ.bÚðtÌ ËncE@œBÑ¿?9örMÌõ@y+`¯m$VÊ"£ü'¢cœµÔRÞÏOŸ%‰™èñÉOŸÏÚløfÕùcŸ< æÉ0D¥K±Ð8ºèâé\¼ä¡rãHîd imÄWâœ}ìO©E–!oàí¡Fì£Yp„‹?µ³ß#ÃçûÚ`øÚS¶æöš÷®öºÊÈ«²!ëY®{"F–à”EÜšÚšm¿ÂæÉÂ^s|pk§ =83)}d%¼p€Y¬^æedÀxîHÛÓx@ŠÑ¥lþÍ åÒ"ÐCï¶Ø²Ý¦Ùc'˜ÓÊ0["õÙÕËíéIÅ¢­ù€Êïû£ÈóØ5Å—)»‡„Ǫ¥ñƒsº¦(ƒ–§æ:~ ·¥\XmNʬçXž £\ôƆ’¶ú¡Îe§Xðwý3Ê >úY*7ìÎéîQBݪ˜‰¡¤{†*” ÍþBuÐ3ã5%{ÖŸ©(8V8@’3/]û°ºmm}C,+Έþþ>>¹ä»:˯Ôuç93§ º…äu,+Çhl÷ <æ·ô¢\µýÅÀûL½9Ž¥^ÖÓ„xCfÑÎOŸÁ§œÔû佌F‡Øi<¶åÞy® †7Œ7ÍÎøŸrùòZ–BV<Îú¤ýQKÝä°~¢~Ø•6Â[ÞüšUè9Z9ÿv‡G@u 3„DÂ~Uû}Êv­ÑqT¯sîÛí3z¢Ñi…nµc÷1þwýK…rèò¼tP‡ê ¬GPq QU1‚ºlq]Ã.‡GY=H k ï‘¿ÛLÑøÌtî6_òâDÈ+…ëº5 Jßl!øº9*Y@¯37Ö}—}±Â`(Î"Èî²#÷—E¼ÉÚÚr¦¤z¯ƒûíÙ:Ë4Èoµi\÷.¸•CPG½\e„æ#B#EŽ¡1>ÖÊ;Æ©-œnC/éåˆ Í{I&㜵Le¾fù2OÈÌʱ‚T„Å"Õ³µÁaÍߥ@eK©H«tDgMÄOÑV®ûÆ´OXÕCÆUàŽ¢DvÏ×ÚÄ‚(¥òD:¹ì™OMÍZVQC¸©EÌ9I©·ÉHp´åB«½ö÷ÄfŽ~"?Â+žjŽL†t›ÿx»Õ=¿–K±èÁcä¼N;OnEïÓi™ç¾ð?"_ä÷ø¶a`gø\@Çø‰B1ª$ñ¢ ÌQœn&sëfßS{/³pkG)‚ÚÑ'.ûŠœŽúã…4çÌ´…ï4sÜ€$õZÒ´†K#·§ÒZØËo…͉08uñ»3-õD#fŽÏÀÞEùn®Bã÷ÓÚÝÏÀ3Bf ¡»IåV<§«²•^ç¯iÃÏd™åCã÷=z F_ÄHâKð¤¨ysËw3È )cÄ$)¾B“ƒ—ã˜j<À¤ûæÃDíÚIö}õx{#üÑîãyüÉçÕ D'9VŽOÚQ^¸ó(Œ•e\y¥½ŒRPIÝMe-\cð(Eñ˜ä-^è(ç^',€kÔqÝÌÀ=’Ĉ™©ZÖÇTMv¥)_fY1ÍòøàLo+à’ø©Ôº±ÃD@¢ÃKgêõø>Žö1zmö#MëÈ?l‰$B:¢4ú2ù‰¢< î+» ›X:«À­šß‘7µj ½£YÓ"ô`ãTÃA5Íä:ŒXÓÃÞm¤"ç’‹™­ï˜‘[\›A»~œ`f´œ.j^AqT0Âlκ ·oIx ËD;4’ Že×7¾ƒ¯nÕL"¶2ÚÔK½á[‡ÒlÐòŠüˆE ï‘)eñ_gÿùás~õoËZìGÒG|ù§Üî´Ÿ¥qç›­Cÿo‡·½ÚÀºMdÚ•ýBP›˜|~ˆ–éæaŽŸ@ßÜË#¡í¿F}f€¥J뫆³õpD?(|÷ÝS×u°Àiúù2̱MûSCtÞM`E@n6†u„$,e@7(öas®ó* ú2#J“¼f5ðíM×v7µ&±*ÿõ‹ÿýh´ƒÔ½©i©ýÀò5°}½Ú{ ^‰‰c,FÃáÆ$}1Uý¶]6±ÎØ^Üê–yÛÆ/‘|ïn'Dçl¦/3‚,;6"[g’&lXEýc ¬&Je\ߢÞÖ*Ÿç8#ZE…|íNp9G4傆êhÛ·í¨* 8ö‡„Eo‰ÐqQ¸ÆddÇßï L–”šä-4ø®aF½V ÜRB\y†»É­§­/ö¿¹Hg'<ÅôvÀëÏ@<ÅûÄãíaʉʬ†ëéƒU[B&'•¯wªn‰š…ƒžýMbC´âŽÓ“Ümÿ¯D‡´ú/ž5p"JcXGä¤òª‰Gæ ¢ bÔCqÖw¯6Z’0 ™ ÌÇòÆV $Žã*Ùùð’¶"¬µÏû˜Çï³É‹’ÝtÑtÒ†¨:¾†È3nïG’õãé¼#°kÞ8%³åˆ=H ¿t'Uûã¶f½"éºô°·&€9‹ïûð2{ørŒ^àUã†(ç‰Õ:ƒ·6Orf½|Õj1áö5_O˰9;Ñdm‰#cüäEaøèø¾2¨Nn¥Ã{ŽÝñ’öÄÕëÆvR#‘*¨¼Àk xó^eK¤Ÿ¿ V¡™šèá¼Omhì²²à2~è02w^˜üÆén’9Yd›«¾Ñ—¶ÐÚ”¤¿]dÀ¬Ç·’1]AÒ’[P¤ŽÈÍ>°-¨û(ˆô–ñÝ#I7 {›~s°ÌnÏëêâÛd”ÉãýŠÞØ Ž„[»jàm§l >YE^ým&i‚˜‹…zC‚nÁò=ý¢rý ^©| §t½³d*¿Mí°ÎeZ 1ë\eßÖ”wYõX2új¤5ŠÂ¼û­kôŠøÅÐug—p©Tà( Þ  ßvîÓ zàs >Ï#‘>XZ¦èCSzVž‡y$ÁGÂÈR0É!jFNÛÌ­˜¾9¬Ôýa>”M“Jää‰E­°/·¦øÄ‘/çkánðû Ì.$‘;¢„ F¦Ñî’IzW¦lÄ‘½gO—¡Ÿy‚Þ¯lþ"ó­6/ÍÝgJ_w¿5'ZiþŽê,Ÿ%ݽ¤À‡ñ–ÏU¯RCïZ¥áâQ‰Ò°~Çt`'*–[õ®m5Ÿ+jÚX4Cß‚q¯'ôz˜f0ÞÿLÊ4¯x7~°”SjòÞæÎ¹Å¤æ¦ÉD"n$V)*1Ñl!ÔP*p³¤q^U¥®„û© h‰O¹î[^¿ÐÞÂCk+;ôü•Äö”F*1ór2­æìy.­B¥¡p¸§,§%ÓkH›¸mD)a¬•7o{ørBR’bùŸ´ܪ¢€=_ä éêÂ×óp¬øÃPê³ÎDa¯UºZkãð¹GH6†Çä™õ*í‰0L$£B^±Äñ\ b ´-ßá>Ñ¥€¥šÜùê!ÛtL|Îär¯¹å~ꛕQ`6Beø(ÝJ:d„üs*˜K9¨X6§èÛç°úÃr¿”74„º†7]cÚ&Ø¡ßIŽ<GÖ5CŸÙ6ÈÞZí4 % "¾7¼-üüøkcúV%´.؇Š Ë  ¿Ð·ïœ}a EïîUÆd.¼‰"öSvûÓawôûUŽ€OUÎf•¹—2rpy÷‘´ˆizRvÇ~6IÉB5ÓÓBiÛP+¢´ö{®»Ôþ<İY®C56("ʼnCk´¶ÍžeD©,Ô”Î/zj‹`TE³® Öߦ{Øå¡È´ã0¬vݤøy¦ÒÔ$ËÉy*P$àb5·Ç¬ü¯-˜Áž€o%Ppæbø“K…[ ì®TÖj <µm7ËÕxŒVgpÃúâCcØ{ëQQN%ÙoOñS‡³ñøfK5¥îZ ‘ ·MaÛCÈî1ÿðÔ·C ÿ~;lÎã£EQÿë"~gMéê ÷ꔚžEýÿØœÉ`…|0arY£Íg–~F.íg7ìþ7¼ ³å«JË‹wΤ5™“K7ãú_:g¡Ð÷HŒñ »ÍqLrï|¸bÅ ÏÎöëÃZ÷*•µSëcy p·;sž?}Ë÷íƒv£ó03Íö|ôÌ~Çâ0‰–nŠ@K(®Ê[“pÒb´ÀiÂÀK±º~˜ç Sc³V„ëãj‹—yÊ6ãbñ¤íVá×j¥‡-h ˆïQxqZÕäYÅ·BtT!º¸#´¿¥Fà™X>£&çµrkgœî õL¼ÀÎ}) üw$¼ÏŸ©LD}Š ’AÛ“sJ1Žàmªwæ¹k)j6µaލMæ…é2‹¦éI%nFJÔèË`¡;¨ÙiÁ‚PÅ´ ƒ¸”,ZÜô}È;·´þZôÖÒ{T¨'.mN`R’™¸RFwÜ2õ#TŒuª9WúD‘ïž´'®nå~}3nnc²ïeó [- :Ž:‡ä6î£M‹ÑýR:>ù€‚px>'Ï𑬞õ<'i4äÂß g–rèYFŸ)ÃeyÞ]£Þß”Á*ox,†Ûµ†ûΣ$«H–5p·Ýg%ÆXÏcÕý-¦ø ¢¤ê§ËÑÉùTQLÎzªÌœ¦5æýQkéóócðÓ¶bÝéÓŠy£¹Îž|—&Ù‹(·`¢(Ò;ãÁÖËqF¼ñQeUUD~+QSíIûÔ6¼ù'Ó;Ö ]³¿Êu²ðïÿ¨˜'ßéN¿Åþvz/HdkùBm€Ø#<±’Ó£}£K~ö ‹oóJ5›ïÀÏècYq6Û¢Ôµ.æÒBº¹Æ×瞣øyT‰ONò±7Îß#›¯ v±Õ9ž`5מ·Îg¿î¿¨AÄ‚bùJyg L¹Yo¤ú»…WIùeÄË?íwWÈ´ë÷¶ÙQˆ2”e(6AÞ[‡3óDù†‹%|ÆUSÎ=´ó”_ŠÄbV3°ÁâNÎ 6u€ðBN–BI—”ê¹|Äv²rß´šÄ×Å*,ñÀ6‘³âú÷™5¥bèþGKíuÕ-hV—çù`­ùÞµm“óe«„µ Aý@*".O+ùh±Hqt ‡Ô¶ Î+ï¨ 6³\åŸí«.¥VrÂNìH髸Š C’m¬Ï%EO·BÑN馞‡„ïpQÑ ·(X³}6e[4mzãsgŽÞgé ½¸:ÑnF$´Ûn½Ü1ûÂsŒEÇÝJ†§3-ÛB%~XŽû•'ÜzuMB†ü¡~Ýâ³±PbS®ºîÅ÷ö‹ãWȪd¬Ê`£Þµ÷d|_ôlí!Y¯-ÂôÊéű°HÏäÑõÅžw¶ÏSñÛª9¹µÔU:ÁìÆÕõ5¥&ðp•ÄI!n5´-‘ÍÃ=¼Û¼Líu;(Uaá=Ãs3µ9Û‘3÷„p÷‹º*j4Ùâ¨éê;¶jj‡HW­eQ…êL“MÞ® ò+vr4î »$›yoâ>ºþ»bÓ4Î=•ƒGÕHa$©E;(¨¯÷D³áõ™SwÕ:lF’5‘”êÁ)¥7L¹zÿ¦’¶]ìü®¡Ý$;ŽÀ‚qEJ¬iÉf5Ühã¸ÕaŒÉUc*æÓÇæÎèÄt8fíωOÐÕš|ÔUôŒCe4žYxˆ_ÔŽ{‹ª{;Û*Ô²snýÝVŒ½„»y’>þ\ÑËÒó¦C†ÂûÄojߺ‡ø>ž¯2u‚*.=‡–A´{™jÞ‰Z¶Âþp) ÑGfd#Ñ‹—®F•¼a4Hü@,>žs¹ûÝZbÈÚµòD’OO<,|\¨½x³nãYÏwRId« ôóQ¤caeNcBڃ݊ö1S¹ eR ÔgkZµŸe¶ á·kB¸W0sÎÐÀžEµn®Êç¸ß©wU¶?üD¦ò \¶Ôq@²]«×Éz1_«sz´,J«@{xíWŒÞ1´Å#DhRÕ»ˆ½å€ÈK`y½V}‘žUñ>È£/¯ÄF?D‡`²9ÿըΣªqhtÒ6m4ÕÚ\A£ nØjï ÞŠæîpÏÀ‰Ì0–Õ¦›èU• 5ìÆq§ÙBY< xx¯,úã®Ld7».ÌÔßÞµŒ+ ³›¶}Še“e((ûÆ6Q¦æÞ’15—í9¥`5|ó=T¨5•5©Ú¢Ÿz³ªrðžpZÖïÆú4±g„Ô˜íJ‹à7ª+âh^ÇWÿ9qD^ŠvòìKgØÙqE¢ßűÜ="j.‡Ù)sZcƒ¿ç £ÂÆåk X$ú²®¿RŽ* š FÌâ¾£0>.ïŸíÂ,¬q§7½® IË> ¿È §‚Ø6Ïã§Ë2à>À†dßW·¿WÍÐèà†Ë‰֫3êQ£d2‹nýWÁ£¯&ê+ëÜÙG+¼2Ýhôìü>n‹ÈÔ bš ÅM¦‰€±e×LÑ“{Ø2Ý¡6$^Ú®P±¾'=–ßzE@™ÂÍ@²A]?ÙáNšá¥Ê$‹œ£ë†è]ùfÿу¡® ¿›¥µy@ùå=¤”&îè#sÇÇZ ý‹”fTvÇù"–úí&ú¯£?V¿+ãÕw˜K|uŒ&øÙ=‚š%Š@ÔF2â­ÂFÐm;¡¾›H3² épÑ Sõ`E«+IË ›É1Óä;¶TÙ$ç™ "Ýõ^iRµ%áÐQ¸?ÕwCoUÜòuS@Á‡!hº(Œå••ÇÀp ãrÀ'µ®·˜OrÈè”;%7ùÉ! œcm:‚˜×2 ò’Î\$¶¯ƒ¬òKÂdìkcO%r–<;fz+÷oáé`i3d8×ÍœìÖÕé#l AiRÔüÄzºý—¥½³„_´ã”5ß^쯄G"Xù»€2†WA{U‘KàZ3}rI!= 2ÉbÍ .‘ùpß2â§h­5‚Òê¯[ë²â„Ïj¡•{*Ñ¡äiDsÍa£8,nÝ×Q°ÛüIܹ~K v³ò¡©<ì賉¬j€XíÚf¦ÕòÍ;áû§÷"g£ßÁŠW²M¼’$ž¶*­ÉÒºwu)—È «a|¡ÔšÈÍ„NÔe$$‡‡ !çs£š²›Õ0TU/‚Ðbä …é ¬¢½þœœÖˆ€ØNa.dPU–– GþØXF¤‹¬ä MOü–¯¾q(ðPGüÉwÑ"… Fî’øÞ~ (w¥Òˆ»ˆ¿t¼·ÆùìZwl·Ë <;ŠðÖiبùp0y1yŸ|ìÁ†A]Ý©¿hÞÅ)ˆˆ),Úvfw*ÂËN9ÌgzuÈ¥ZаÚÂùå@ù¤Žd¯ûù\°g³ŽN*iô@ EdÒéT©•–(äÁ˜.0©jšíÔüpÜãJ»§Ò~­Š}O¬P^ÅõàÚù«PΓIÈø“ÂÒ»Éi²`TE¢ZÓ”¼ .vmZzMMŠ_{=ópO1wJzáß)Ì7Ì©%„ïjeì£Ú°2ÅÇiAîôAë°$z•×З‘ÍZfö¥jKÙšŽÃÌ‚]_ò_Ìñ¢V˜3}9dÉÍb!õ.wE冶x(»‰`T&*u¤Ûi‘\áOïš„úC%a³yß/ÛILb¸§Ì\çî ò {ñTGGË`eXŸûz°,Mà¶8$xÿœØ>hN.è2™úœèæ*ú|ÂI»›."]µð&÷Ó¬µÇ¥ÜtÍRç†d~x±P™ªøÛó˜@%ç¡2öqõ‘G]¾ûñF\÷•ë{Ó6›ÄÁ\>²lÜ:-Kiؾ|÷9õƘü˜¸Ò,CªEÚ´üó9f2Cs®²ž§êùÍL,ݳQÚð¬á»56µ%7èf At4d‚€ ¬Ý™°vb., ØÝµØ5àÉýovÄòSiz¦˜uꮄ©‰h:$4+ú&>øû7cUÚßC…õæ§×jûlHŒ3¿ˆ·izÅú äXS_-\k_ô pázF +OvHÞÎIø~ß dOÓFi7ÂKðmGO*3Gü’rãÅ^èbÑ8gÝdJ×»äI›Ì[ÜÕÔÌ äçœønm—“ó}Ñ' *®ëuáˆæµm•PD£`ˆ0¢sÙɛޅÌIoÓq K™ãÎܺS.þ‚V [íBà˜É,l±¶–üá@Û$ —½ªpÐnŸkèA"I§ÉtQŒù©_E±áª“ mQ„—³¹i D÷ËV¬t¢Ú F4Z8è;“4¢N¬|2<7«m2áUޤƒê¹ ý[ÝdØ_½#¥V|z2¿°Sí>yíBøøj h\!zaçôñv愼㞠PˆGi?£’ÒÎ*)ÆtÌ‚e(Š¡a§GÞmSo¤è¬p?\lö‹â÷w ˆÓÊüôô¾› éM#pRŽ"ÖÏÀs§†ìܺÝwí“êTË8•Îã 5ÿ«¥5Hí>\--™4•¥†“V;~ìIW8>8:bTÂ$Wo÷±öÜAuÜÿ7¶šæe¶Ý¾J•‰²¾æ(us„<@g޵ÂFýc™ºº[ªÛ¾{öUáª6ç'AT §]×êºL)eu¼ÊTMñªâ_oE…} ^vˆ0HBÃ¥hï4`¾äµÈGÊàÍÃÝù~PåNQsϼž~Ÿö³p "C&,Êï: ã ßøV”€jQ®l‡ïMG~íxаþóJÙ)t"±„/Õƒ¯{rÅuërþíód ›r Æ;§ã¹ñ-‘©³é»ÊiyÔ‚aäçú07ÚkÅE¿;ÜĘ i¹¯èƒò˳£gÈ,wí݉òþç?C¸S^=›_t‡<7¡„ƒµ ïfê37ºfae žW﨧׈`l÷ˆõûµ ™& ìøß4×ìÕéã á³ L_—Å&y©§ç™éÀ>ãÍ g«¿dÓŽtŒ;9Ï ~L:¯žìYYÓFâh¦åVzn!ErŽ™þŒõó2-ùc§°žòÔTdi`¬`[žøþ §g¬ßÿè©› endstream endobj 120 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() /CreationDate (D:20130628110454-04'00') /ModDate (D:20130628110454-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) kpathsea version 6.1.0) >> endobj 2 0 obj << /Type /ObjStm /N 99 /First 802 /Length 3456 /Filter /FlateDecode >> stream xÚí[isÛFýÎ_1­M ƒ90GÊ•Š,Y¶|Ä^IŽ£¸T[ I°!@Aùõû P¤B•ìlí®Ë¦ zú|Ó=(XÈ"¦3Lf™µL:&CÁ¤g —*dÊ¢Ðw’EôŠENs"døïÑW(\9ÜFL)n…ÑLX&dˆÇ߬%¾}È$)°“ÔÓª‘Lh-ðGÚãpþ¼ÑU8-ÀÇÈ‹"hÏ"Ö>b‘k)GQ„oȉ “‘…Ú0ÌD ƒ †,Á·5Ó &j «B‡{ò†´Œš„ ÿá7‚eJ ‹AêÚ¤ˆ¨ wR ‰»Ô–®£!øK#I áÕh?zøñ#ÆŸÇã{ìÁ4Wi‘ÿ#[ì§ŸFÅYV9{ÕÖ2õ;‹ñuÈø~ZõÇ#~üå:aüu|‘Œøn‘WI^M!‹Gü0™³rœ E4-/“I?*>³w!U:;-çOGàS‚¹¡¦ÞÉóìÞ1W aýu:jeï–ILÚïÅUÂìýˆ_H é¶ ­˜¬}vœVž²'e|}™Ž§ìÕ¬ºžÁjþº,&³qRÒS„ðM+« ¦­ÑÀô}=âG³³ª¾¥F1â¿ÄWô WâiB4Œÿ_Ÿï¥ùÅY\MïÀCöyI!bšNyäL’s^B6uYÏ/gùE\ή²xVñâ¢È“|¿éu˲Ó5”º¡4"PHøPZ¨h#J-dÉ (“Rÿ”(|eç[(Už*Y ü­,Q‚&RQ(‡¤õø#×ïÓô@·¹•·é®ëÑ\×SƒîZR¡i®ÑQª®]SÝ¡kˆà¿½:{O W(~ó'Hpã£Ð@æÞÛGzH>Wl õK)]ßHé:¼WJWî{2_‘Ì#ñM’ù‚m/™Gòÿ)™Xƒ÷mæVÌŸ-l\¥C”¬>Ê´¢u™@Å:Hª2âö:­—ê´‹„eA`Qï×Uê>-H"*4R!2öm¤¤§ÄºBc:áœÙ¤´aõªõrv³TÑb´!;¸¢é}ê–½Q·ìýê–i|`dóÕ”^Ó˜ešâkíM£¸i ñw¨wþ–täÿ§Ò‘‹¾I:Z°í¥#g¾§£õé—ƒt„á-iÇHVÓö ,F²ÅLÖF+³Ñ8­’ài\VéEœϳ$Í“’–÷ZË ÕÒP'Ô ­” |dÿãZ!yxiæju+½¿Rk¿L“|’}:^~=uºRbÎ-máI¤è.–þï×G;Ð6”q6p´Ùi! QÏéõÚå j›·úëi $ÄHÎ5|°"¾¿"ë$‹›åÝÚ B-Ða8TåPr-œÖ˜Ú¾óða-ïÔûsüˆ¿9< Ïƒ«8ͪâÇ8˪äçq~Ìâ« ™nÝ[7é5j ­€Q ±Z¥öÈè;ëvQ&?ŠË<™yR}Å,æ@´÷¬h¹o˜ta`"ugÅúÎÓ*ÍßÇiþóÝãâjk¸É!6ßåèÏ¢À†‹ª0ÐêVÊv£.õ­¤íNƒ@26jJ™ TâVJòž÷tÂ`¯ÝF´‚ ¡ôf´Ê&ôÍ{›ýŒþÆGCd±ñqsÖ¨™Úd‡ã]$#öýóM?§ð²@ÎgÿåÉŽ0<ýŽ™ÍãnêÓ=‡!‹¥« ±\¢ÃWZ΢ÖÕG ôׄ4¢ hàߺE:Z-­þW?OIǤtÚ‰¬CýèãtÈ,ÚêvÕÈPtšš¾î‹oºïúüÕ§–Óöé>+W«m-‹l²HpÖêú:ÂÂÖ"=;…š‰å*É´˜Ò3:LvHÈÖÝ|Ó±¨¤SUUó³tŒ†CºOç¦î»VŒÎCIÉHÕ ‘m}MCJDNÖΦLM÷tíhžƒöH“PÖÐxD§41D›ªOÁõ¦á†7ä7¡˜k†ÊÝ ‘ ¬€jà öÞ ‚ض¶*ýðH¿ðP{:œ†Wȃ]¨êðHYßw©¡‡vOa¥ta¥ïöYwO}k:âýÑ¡¨h:[hŠ}ŸÉªD'[¹QÔÀ‹žëfJØ|º¨’mt~Ôð AfKIo-¤k§½;‹ê(u©ÁÕ躉>wB`¼Ïæ>n¯ ÇVËZ(µ;_÷WK4è¦Äûw ´Ó¥M‡½d:.Óëª(› K³åðdçíá“v_ˆ²øbÊtCñ¨Þ@Ú–žm{CçúA¶YòMiMÏl„.»ñõÓ$½¸¬°ðP˜7%ͳm̪Fü Š³t¼“_d ZÐpT%W¿A˜à´½´`r—4¥yÀÏ0±Jh¯‡4ØOÑϛջ(« zñøäÉÉSt|¼Î Ͷ%…CÑêÈ,̧æÐíÜ)åМ°3ÆøµÆó˜Ç?ãc>á ¿à)Ï3~Ås^ðk~”i1á%ŸòŠÏø§Õî.V¿}ûä`櫓Z®¶ZÕ”Â7ÝßêèV«Ç05çƒ8œw1éõëÇ/Ÿ7&ùÕ™6ŽãÝ»{[dõZ‹vø#¾Ëó}þ‚¿æ‡X|ó7üvžñ³xüašÅÓK~Vâ2©h¿¬».‰œ1.2¬Ù°»Š„I‘eq @ÔÂxòÇ,Îø9?O?&ü¼˜•Ê%¿ür}™äpcÆi×­Mžæ ÏgWgI9M/D$ÚÏ­åÖWÔ]4»x“³¬Zõ©Ø>òOü3ÿÂÿä&e1Œ“¼Kœ¿|yülç‡7‡o_cÝOÒâE»a¹…Xål«°MÝ^õ³Ièa³²6cÖ„MHÕ‹›Ä¢¶WÇí Và¯ëx5Cñ¼öqÚŒÝ(„S†ÞÐwñÆï¿<ûýס7‹«x7 aØÑ Vô—V=oˆh˜[þ7Ü:»>ˆ)3 AÜ9ƒ6$žñçü%ÿ…¿êAúmë¢!^ç@Í'„sBj Öl^ßó­[k¸Þ £5AwÓÐÌ7¡›«¦‘¢5M>B`3öëË2I6÷ªÉ?÷övvžÞ çöQçÕ¿°øÆÝöF¶‰é‹y<ùÉÐî;Õ“ÃW/íîí&µÖXkCÔôV`ýŠ©èYKé¶g­WƒA-ÖYk]ÏZrJßÚÝz8?ƒ­ äþ 재Aïù 棾Eæ¢ 7êÀ„’¼” ÄŠ¶æ EÖ£$Ãz¤ÛU£“ÅVÙVÅV¡Ù„àZQ‚v£W=æhbÒØªÜ ÐzÀÕÖ£>·UkyÈ¿è=s²ï=æ <45AD2E2EA7D7F7AC38CC6C9E4BB82059>] /Length 296 /Filter /FlateDecode >> stream xÚÒ¹2P€ásBìb ‚Øb B,±û{oaF“GPxC¡SxÏ@c¤RRà?Í7ÿ™9÷ÞæŠˆü:D¢šyªŽ@ÁYP âòÛJ!”«ˆÛÆ"Øì‚ö °¥° ؆28€lpBäBä«x.ìµf•`ZT"6T×VA¨Pñell‚hJ¨‚j¨/Ôª„RvÂuP à‡F•XÔV†¡z ú ý0ƒ hU‰¿ØC……1‡´A;t@'„ K%yk·LÂLà lÀ,ÌÁ<,¨\ìD\åæÝjQåÑiµ¤òüeµ¬òãµZQ ?X­ª¦¯¬ÖTÖáŽá’p )8ƒsÕÏ»ÿ/õý*aØ*Í endstream endobj startxref 129745 %%EOF gplots/inst/TODO0000644000175100001440000000052211025473055013246 0ustar hornikusers plot.lm2 -------- - Upgrade to match current plot.lm code - For predictor vs resid, use boxplot when predictor is a factor - Rug plot or histogram for residuals/fitted values in both dimensions - Confidence region for normal distribution with equivalent number of points on QQ plot - display "bad" cutoff line for cook's distance plot gplots/inst/NEWS0000644000175100001440000001704412163126457013271 0ustar hornikusersRelease 2.11.3 - 2013-06-27 --------------------------- Enhancements: - Modify sinkplot() to use a local environment rather than the global environment, to conform to CRAN policies. Bug Fixes: - Fixed typo/spelling error in plotmeans() man page. Other changes Release 2.11.2 - 2013-03-24 --------------------------- Enhancements: - Add ci.width argument to barplot2() to allow varying the length of the 't' at the end of confidence interval bars. Bug Fixes: - Fix error in heatmap.2 when colsep argument had length 1. Updates: - Update manual page for lowess.default() to match changed argument list for lowess() in R 3.0.0 Release 2.11.1 - 2012-12-14 --------------------------- Bug Fixes: - Replace corrupted BalloonPlot.pdf in inst/doc. Release 2.11.0 - 2012-06-08 --------------------------- New Features: - Objects returned by hist2d() have been changed: 1) $x and $y now contain the n midpoints of the bins in each direction 2) $x.breaks, $y.breaks now contain the n+1 limits of the bins in each direction. - Add lwd argument to plotmeans(). Bug Fixes: - Correct error in handling binning in hist2d(): (N+1)x(N+1) bins were being created instead of NxN bins, and the highest row/column in each direction was being omitted from the results and plot. - Changes to fix R CMD check warnings Release 2.10.1 - 2011-09-02 --------------------------- New features: - Make results of hist2d() and ci2d() into objects, and add print() methods to display them. Release 2.10.0 - 2011-08-26 --------------------------- New Features: - New ci2d() function to create 2-dimensional empirical confidence intervals utilizing KernSmooth:bkde2D and gplots::hist2d(). See ?ci2d for details. - Add 'alpha' argument to rich.colors() to control transparency. Improvements: - Accellerate hist2d by replacing for() loop with tapply(), and allow user to specify summary function applied (per suggestion by Peter Hagedorn). Bug Fixes: - Correct error in heatmap.2() that arises when data includes NA values (identified by Melissa Key). Release 2.8.0 - 2010-06-10 -------------------------- Improvements: - venn() now returns an object of class venn() and a plot method for this class is provided. - Manual page for venn has been improved, based on contributions by Steffen Moeller Release 2.7.5 - ?? -------------------------- Improvements: - Performance of 'hist2d' improved thanks to a suggestion from Joerg van den Hoff. Release 2.7.4 - 2009-11-12 -------------------------- Bug Fixes: - Correct bug reported by Alan Yong: plotmeans() failed when bars=FALSE. Release 2.7.3 - 2009-10-22 -------------------------- Bug Fixes: - Correct bug reported by Rudolf Talens: heatmap.2() incorrectly transposed the displayed matrix when the option symm=TRUE. Release 2.7.2 - 2009-05-08 -------------------------- Bug Fixes: - Correct bug reported by Ken Lo: cox2hex() had blue and green components swapped. Release 2.7.1 - 2009-05-08 -------------------------- New Features: - Enhancements to heatmap.2() - New arguments 'lmat', 'lhei', and 'lwid' that allow controlling component plot layout. Users can now resize and rearrange plot components. - heatmap.2() will now compute color breakpoints that are symmetric about 0 when the new 'symbreak' parameter is TRUE. This parameter, as well as the symkey parameter now default to TRUE whenever negative values of x are present, and to FALSE othewise. - the heatmap.2() return value now includes additional useful information, including: call, rowMeans, rowSDs, colMeans, colSDs, carpet (reordered and scaled 'x' values), rowDendrogram, colDendrogram, breaks, col, vline, hline, and colorTable. Of these, the most useful are breaks, col, and colorTable. The latter is a three-column data frame providing the lower and upper bound and color for each bin. See the manual page for complete details and examples. - New function venn(), contributed by Steffen Moeller (Thanks Steffen!) to generate Venn diagrams for up to 5 sets. See ?venn for details. - Performance of bandplot() has been dramatically improved, in part by using runsd() and runmean() from the caTools package. As a consequence, gplots now depends on the caTools package. - Improved performance of gplots::plot.lm for large lm objects by using the new bandplot() and by using fitted() instead of predict() to obtain y-hat. - Add 'scale.range' argument to balloonplot(), option to scale balloons so [min,max]->[0,1] ('relative') or [0,max] -> [0,1] ('absolute'). Bug Fixes: - balloonplot() now properly handles dimension labels provided by 'xlab' and 'ylab' - plotCI now properly handles 'NULL' and 'NA' values for ui, li, uiw, and liw. - Corrections of minor typos in man pages - Update Greg's email address to 'greg@random-technologies-llc.com' Release 2.6.0 - 2008-04-07 -------------------------- New Features: - heatmap() now allows control of the location of individual plot components (e.g. color key) Bug Fixes: - Fix bug in handling rowsep, per suggestion by Steven Paugh - Fix examples for overplot() - Two letter clarification of help text for heatmap.2() - Restore plot layout settings to default state at end of ooplot() example - Various typo fixes Release 2.5.0 - 2007-11-02 -------------------------- New Features: - textplot() now converts tab characters to spaces before processing to avoid problems with computing height and width of text that includes tabs. - Add col2hex() function to convert color names to rgb hex codes Bug Fixes: - Correct balloonplot.default to properly show specified x and y axis labels when explicitly provided - R/balloonplot.R: Correct error in balloonplot when z contains NA values. - Fix typos and code/doc mismatches identified by the latest R CMD check Other: - Clarify GPL version Release 2.4.0 - 2007-02-08 -------------------------- New Features: - Add parameters to bandplot() to control line width and type. - Add paramaeters to textplot.matrix() to allow specification of the color of the matrix data, rows, and column Bug Fixes: Other: Release 2.3.2 - 2006-11-14 -------------------------- - heatmap.2.Rd: Fix example that was broken by changes in 2.3.0. Release 2.3.1 ------------- - Changed maintainer back to Greg Warnes - Updated Greg's email address - heatmap.2.R: Fixed a bug which displayed warnings when Rowv and Colv were specified as dendrograms Release 2.3.0 ------------- - heatmap.2.R, heatmap.2.Rd: Updated the code and man page to make sure the Rowv and Colv values are properly handled - Added the tests directory Release 2.2.0 ------------- - plotmeans.R: Fixed bug in plotmeans - based on Stefano Calza's suggestion (the function didn't account for factors unused levels, returning an error.) - exported plot.lm to NAMESPACE, Remove .Alias calls in plot.lm.R since .Alias is defunct. - barplot2.R: Changed the default grey colors to heat colors, if height is matrix - Updated Greg's email address - balloonplot.R: Recent changes to align row totals with the overall total broke how the marginal cumulative fractions were displayed. Added example using Titanic data that exercises the multi-factor display. Added -.tex, .pdf files and figuers, and RNEWS article in inst/doc - colorpanel.R: colorpanel now allows only 2 colors to be specified if no 'middle' color is desired. Release 2.0.8 ------------- - Added DESCRIPTION and removed DESCRIPTION.in - Updated barplot2 - Updated heatmap.2 gplots/inst/ChangeLog0000644000175100001440000013365112163125724014343 0ustar hornikusers2013-06-27 warnes * [r1678] DESCRIPTION: Update for release 2.11.3 * [r1677] tests/heatmap2Test.Rout.save: Update with tests for only 1 row/column separator * [r1676] man/plotmeans.Rd: Fix typo * [r1675] tests/heatmap2Test.R: Add test for one row/column separator * [r1674] R/baseOf.R: Add more in-line comments * [r1673] R/sinkplot.R, man/sinkplot.Rd: Modify sinkplot to use a local environement to store its information instead of the global environment. 2013-03-24 warnes * [r1647] inst/NEWS: Update news for release 2.11.2 * [r1646] R/barplot2.R, man/barplot2.Rd: Add ci.width argument to barplot2() to allow varying the length of the 't' at the end of confidence interval bars. * [r1642] DESCRIPTION: Update for release 2.11.2 * [r1641] man/lowess.Rd: Update manual page for lowess.default() to match changed argument list for lowess() in R 3.0.0 2012-12-14 warnes * [r1631] R/plot.venn.R: Fix typo: warn() instead of warning(). * [r1630] vignettes/venn.Rnw: Fix syntax of VignetteIndexEntry in venn.Rnw. * [r1629] vignettes/venn.Rnw, vignettes/venn.pdf: Add generated vignette pdf. * [r1628] vignettes/venn.Rnw: Add required VignetteIndexEntry metadata to venn vignette code. * [r1627] DESCRIPTION, inst/NEWS: Update DESCRIPTION and NEWS for release 2.11.1. * [r1626] R/baseOf.R, R/plot.venn.R, R/venn.R, vignettes, vignettes/venn.Rnw: Improve venn() to work with PDF and Sweave/pdflatex. Provide a vignette for venn(). * [r1625] R/heatmap.2.R: Fix error in processing the colsep argument to heatmap.2. * [r1624] man/plotmeans.Rd: Clarify that plotmeans is intended for a *continuous* outcome based on a *factor* grouping level. * [r1623] inst/doc/BalloonPlot.pdf: Replace corrupted BalloonPlot.pdf file and remove svn properties that were causing it to be corrupted. 2012-06-08 warnes * [r1558] inst/NEWS: Update NEWS for 2.11.0 release. * [r1557] DESCRIPTION, R/barplot2.R, R/ooplot.R, R/plotCI.R, R/sinkplot.R, man/qqnorm.aov.Rd, tests/heatmap2Test.Rout.save: Fix R CMD check warnings. * [r1556] man/hist2d.Rd: Move incorrectly placed closing brace. 2012-06-07 warnes * [r1555] R/ci2d.R, R/hist2d.R, R/print.hist2d.R, man/hist2d.Rd: Object returned by hist2d() has been changed: - $x and $y now contain the n midpoints of the bins in each direction - $x.breaks, $y.breaks now contain the n+1 limits of the bins in each direction The function print.hist2d() has been updated appropriately. * [r1554] R/hist2d.R: Correct error in handling binning: (N+1)x(N+1) bins were being created instead of NxN bins, and the highest row/column in each direction was being omitted from the results and plot. * [r1553] R/plotmeans.R, man/plotmeans.Rd: Add default value for lwd argument to plotmeans() 2012-05-31 warnes * [r1533] man/qqnorm.aov.Rd: Properly mark up S3 method. 2011-12-09 warnes * [r1519] R/plotmeans.R, man/plotmeans.Rd: Add 'lwd' (linewidth) to arguments handled by plotmeans. 2011-09-02 warnes * [r1505] inst/NEWS: Update NEWS for release 2.10.1. * [r1504] DESCRIPTION: Increment version counter. * [r1503] man/ci2d.Rd, man/hist2d.Rd: Add necessary alias statment to man files for for 'hist2d' and 'ci2d' print methods. * [r1502] R/print.hist2d, R/print.hist2d.R: Fix naming error * [r1501] NAMESPACE, R/ci2d.R, R/hist2d.R, R/print.ci2d.R, R/print.hist2d, man/ci2d.Rd, man/hist2d.Rd: Provide print() methods for 'hist2d' and 'ci2d' objects. * [r1498] DESCRIPTION: Correct dependence on R >= 2.10 2011-09-01 warnes * [r1491] NAMESPACE, man/ci2d.Rd: - Correct issues in ci2d() man page. * [r1490] DESCRIPTION, NAMESPACE, tests/heatmap2Test.Rout.save: - Comment out import from KernSmooth in NAMESPACES, since KernSmooth doesn't provide a namespace. - Update a test output. * [r1489] DESCRIPTION, inst/NEWS: - Update NEWS file and correct version number * [r1488] DESCRIPTION: - Depend on KernSmooth package. Increment version number. * [r1487] NAMESPACE: - Depend on KernSmooth package and import 'bkdeD2' and 'dpik'. * [r1486] R/ci2d.R, man/ci2d.Rd: Improvements to ci2d(): - Add option to utilize KernDensity::bkde2D to estimate the 2-d density (now the default). - Add option to display points for original data on generated plots - Name elements of returned contour list according to the significance level to make it easier to select desired contours. - Improve handling of x and y labels * [r1485] man/hist2d.Rd: Remove log tag and comments from top of the file. 2011-08-26 warnes * [r1478] inst/NEWS: Update NEWS for 2.10.0 release * [r1477] DESCRIPTION: Add dependency on R>= 2.10 to handle compressed Rda data file. * [r1476] data/rtPCR.rda: Compress rtPCR example data set to make distributed package smaller. * [r1475] R/ci2d.R: Remove '1.0' confidence line from ci2d(..,show="contour"). 2011-08-25 warnes * [r1474] DESCRIPTION, NAMESPACE, R/ci2d.R, man/ci2d.Rd, man/rich.colors.Rd: - Add 'ci2d()' to compute 2-dimensional emipirical confidence interval. - Fix parse error in help page for 'rich.colors()'. 2011-08-16 warnes * [r1473] DESCRIPTION: Update DESCRIPTION file for 2.8.1. * [r1472] R/rich.colors.R, man/rich.colors.Rd: Add 'alpha' argument to rich.colors() to control transparency. * [r1471] R/hist2d.R, man/hist2d.Rd: Accellerate hist2d by replacing for() loop with tapply(), and allow user to specify summary function applied, per suggestion by Peter Hagedorn (PHA -at- santaris -dot- com). 2011-05-02 arnima * [r1470] R/rich.colors.R, man/rich.colors.Rd: Added argument 'alpha' and removed argument 'rgb' in rich.colors() 2010-12-13 warnes * [r1463] R/heatmap.2.R: Correct error that arises when data includes NA values, identified by Melissa Key 2010-06-11 warnes * [r1446] man/venn.Rd: Fix errors detected by R CMD check * [r1445] man/venn.Rd: Fix errors detected by R CMD check * [r1444] man/venn.Rd: Use 'TRUE' instead of 'T' for true in venn man page * [r1443] DESCRIPTION, NAMESPACE, inst/NEWS: Update for gplots 2.8.0 * [r1442] R/baseOf.R: Moved baseOf() into a separate file * [r1441] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update Greg's email address * [r1440] R/plot.venn.R, R/venn.R, man/venn.Rd: - venn() now returns an object of class venn() and a plot method for this class is provided. - Manual page for venn has been improved, based on contributions by Steffen Moeller 2010-02-17 warnes * [r1420] DESCRIPTION, R/hist2d.R, inst/NEWS: Improve performance of hist2d thanks to suggestion by Joerg van den Hoff. 2010-01-22 arnima * [r1372] R/rich.color.R, R/rich.colors.R, man/rich.color.Rd, man/rich.colors.Rd: Renamed files rich.color.* to rich.colors.* and renamed rich.colors args 2009-11-16 arnima * [r1367] R/rich.color.R: Minor reformatting only. 2009-11-12 warnes * [r1365] DESCRIPTION, R/plotmeans.R, inst/NEWS, tests/plotmeans_nobars.R: Correct bug reported by Alan Yong: plotmeans() crashed when 'bars=FALSE'. 2009-10-22 warnes * [r1364] R/heatmap.2.R: Fixed typo in bug fix. * [r1363] DESCRIPTION, inst/NEWS: Update NEWS and DESCRIPTION for gplots 2.7.3 * [r1362] R/heatmap.2.R: Fix transposed display of data (but not labels) in heatmap.2 when symm=TRUE 2009-10-12 warnes * [r1361] DESCRIPTION, inst/NEWS: Update version number to 2.7.2, 2.7.1 was already up but apparently DESCRIPTION wasn't commited with change. 2009-10-10 warnes * [r1360] R/col2hex.R, man/colorpanel.Rd, man/lowess.Rd, man/ooplot.Rd, man/overplot.Rd, man/smartlegend.Rd, man/space.Rd, tests/heatmap2Test.Rout.save: Various minor changes to remove new R CMD CHECK warnings. * [r1359] DESCRIPTION, inst/NEWS: Update DESCRIPTION and NEWS file for 2.7.1 * [r1358] R/col2hex.R: Fix bug reported by Ken Lo: col2hex had blue and green components swapped. 2009-05-08 warnes * [r1324] tests/heatmap_to_heatmap.2_test.R: Add test of using a dendrogram created by heatmap() with heatmap.2() * [r1323] R/heatmap.2.R: heatmap.2: handle NA for RowV or ColV the same way as NULL * [r1322] man/plotCI.Rd: Fix typo * [r1321] inst/NEWS: Update NEWS for release 2.7.0 * [r1320] inst/ChangeLog: We don't want the Changelog in svn, since it is autogenerated from svn logs! * [r1319] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update Greg's email address to 'greg@random-technologies-llc.com' * [r1318] R/plotCI.R, man/plotCI.Rd: plotCI now properly handles 'NULL' and 'NA' values for ui, li, uiw, and liw. * [r1317] R/heatmap.2.R, man/heatmap.2.Rd, tests/heatmap2Test.Rout.save: heatmap.2: Add option to create breakpoints symmetric around 0, provide additional information in the return value * [r1316] man/space.Rd: Fix Rd syntax error 2009-04-22 warnes * [r1315] man/barplot2.Rd, man/ooplot.Rd: VADeaths data set has move to dataset package 2008-08-14 warnes * [r1302] R/balloonplot.R: balloonpot() was incorrectly displaying warning about z values below 0 when scale.method="relative". Fixed. 2008-08-07 warnes * [r1301] DESCRIPTION, NAMESPACE, inst/ChangeLog, inst/NEWS: Update DESCRIPTION NAMESPACE and NEWS for 2.7.0 release 2008-06-16 warnes * [r1296] TODO, inst/TODO: Add TODO list to gplots 2008-05-20 warnes * [r1274] DESCRIPTION, man/plot.lm2.Rd: Update man page to match recent changes to plot.lm2() * [r1273] man/venn.Rd: More work on documentation for venn() * [r1272] R/bandplot.R, man/bandplot.Rd: Fix code/doc mismatch due to recent changes to bandplot() * [r1271] DESCRIPTION, NAMESPACE, R/venn.R, man/venn.Rd: Add Venn Diagram plot submitted by Steffen Moeller 2008-05-07 warnes * [r1264] DESCRIPTION, R/bandplot.R: Improve performance of bandplot by calculating running standard deviation using caTools::runsd() instead of (ver slow) window() call. In addtion, the standard deviations are now only calculated once, rather than once for each band. * [r1263] R/plot.lm.R: Improve performance of plot.lm for large lm objects by using fitted() instead of predict() to get y-hat 2008-05-05 warnes * [r1262] DESCRIPTION, R/bandplot.R: Use caTools's runsd in bandplot for a dramatic speedup for large data * [r1261] NAMESPACE: Add import of gtools::reorder.factor for ballonplot man page * [r1260] R/balloonplot.R, man/balloonplot.Rd: balloonplot: Add option to scale balloons so [min,max]->[0,1] (relative) or so [0,max] <- [0,1] (absolute) 2008-04-07 warnes * [r1254] man/barplot2.Rd: Fix typo in barplot2() man page * [r1253] DESCRIPTION, inst/ChangeLog, inst/NEWS: Updates for gplots 2.6.0 * [r1252] R/heatmap.2.R, man/heatmap.2.Rd: Add ability to control location of individual heatmap.2 components 2008-03-27 warnes * [r1251] R/heatmap.2.R: Fix bug in handling rowsep, per suggestion by Steven Paugh 2008-01-04 warnes * [r1238] man/overplot.Rd: Fix examples for overplot() 2008-01-02 warnes * [r1237] man/barplot2.Rd: Update Marc's email address 2007-12-20 warnes * [r1235] man/heatmap.2.Rd: Two letter clarification of help text for heatmap.2() * [r1234] man/ooplot.Rd: Restore plot layout at end of ooplot() example 2007-11-06 warnes * [r1222] man/hist2d.Rd: Remove extraneous closing brace in the hist2d documentation file 2007-11-05 warnes * [r1221] inst/NEWS: Fix typo in NEWS: col2hex() is the new function, not col2rgb() which is part of grDevices 2007-11-02 warnes * [r1219] DESCRIPTION, NAMESPACE, inst/ChangeLog, inst/NEWS: Updates for gplots 2.5.0 * [r1218] tests/heatmap2Test.Rout.save: Update saved test output due to changes in how R reports warnings * [r1217] ChangeLog, NEWS: Create soft links of gmodels/ChangeLog -> gmodels/inst/ChangeLog, and gmodels/NEWS -> gmodels/inst/NEWS for my convenience * [r1216] ChangeLog, NEWS, inst/ChangeLog, inst/NEWS: Move actual ChangeLog and NEWS files to gmodels/inst so they will be copied into the installed R package area * [r1215] man/bandplot.Rd, man/textplot.Rd: Fix code/doc mismatches * [r1214] R/plot.lm.R: Update plot.lm2 to match changes made to bandplot 2007-11-01 warnes * [r1213] ChangeLog, DESCRIPTION, R/replaceTabs.R, R/textplot.R: in textplot(), convert tab characters to spaces before processing to avoid problems with computing height and width of text including tabs when using pdf() * [r1212] R/overplot.R, man/overplot.Rd: Minor reformatting of overplot code and docs 2007-10-22 warnes * [r1196] DESCRIPTION: Clarify GPL version 2007-08-14 warnes * [r1141] R/balloonplot.R: Correct error in balloonplot when z contains NA values. * [r1140] R/balloonplot.R, man/balloonplot.Rd: Augment balloonplot() with control of character size and color for text and label items * [r1139] R/balloonplot.R: Correct balloonplot.default to properly show specified x and y axis labels when explicitly provided 2007-03-09 ggorjan * [r1073] man/ooplot.Rd: use of \method in Rd markup - issues a warning with _R_CHECK_RD_STYLE_=TRUE env. variable with R 2.5.0 2007-02-08 warnes * [r1052] DESCRIPTION: Bump version number * [r1051] man/textplot.Rd: Update documentation for textplot() * [r1050] R/col2hex.R, man/col2hex.Rd: Add col2rgb() function to convert color names to rgb hex codes * [r1049] R/textplot.R: Add paramaeters 'col.data', 'col.rows', and 'col.columns' to textplot.matrix to allow specification of the color of the matrix data, rows, and columns. * [r1048] R/bandplot.R: Add parameters to control line width and line type. 2006-11-14 ggorjan * [r1012] R/bandplot.R, R/boxplot.n.R, R/lowess.R, R/plot.lm.R, R/plotCI.R, R/plotmeans.R, R/residplot.R, R/wapply.R, man/boxplot.n.Rd, man/plotCI.Rd, man/plotmeans.Rd: Removed executable property 2006-11-14 warnes * [r1010] tests/heatmap2Test.Rout.save: Update output file to match (trivial) changes in the test code. * [r1008] ChangeLog, NEWS: Update ChangeLog and NEWS files for release 2.3.2. * [r1007] DESCRIPTION: Update version number * [r1006] DESCRIPTION: Update version number and maintainer * [r1005] man/heatmap.2.Rd: Correct problem with labeled correlation matrix example. Thanks to Jean Vidal for reporting the error.. 2006-08-02 warnes * [r977] inst/doc/BalloonPlot.pdf, man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update my email address 2006-06-26 nj7w * [r967] R/heatmap.2.R: Fixed a bug which displayed warnings when Rowv and Colv were specified as dendrograms 2006-03-10 warnes * [r937] tests/heatmap2Test.R: Remove code that added a local path 2006-03-09 nj7w * [r935] tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Added the correct library path where gplots is installed locally and corresponding .save file * [r934] tests/heatmap2Test.R: Updated the tests file * [r933] R/heatmap.2.R: Removed the condition Colv != Rowv as it has already been taken care of * [r932] rtPCR.rda: Deleted rtPCR.rda from the main directory * [r931] ChangeLog: Added ChangeLog 2006-03-07 nj7w * [r919] DESCRIPTION, NEWS: Updated ChangeLog and NEWS * [r918] tests, tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Added the tests and fixed corrupted files * [r917] data/rtPCR.rda: Replaced the corrupted rtPCR.rda file in data directory * [r916] tests: Removed the corrputed tests directory * [r915] data/rtPCR.rda, rtPCR.rda: Replaced the corrupted rtPCR.rda file in data directory 2006-03-03 nj7w * [r914] R/heatmap.2.R, man/heatmap.2.Rd: Updated the code and man page to make sure the Rowv and Colv values are properly handled 2006-03-02 warnes * [r908] R/balloonplot.R: Adjust row total placement to adjust for width of the totals * [r907] DESCRIPTION, R/balloonplot.R, man/1: Row totals in ballonplot were in reverse order. Fixed. 2006-02-23 nj7w * [r899] R/heatmap.2.R, tests/heatmap2Test.R: Add ability to scale the color key using the new 'keysize' argument. * [r898] tests, tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Add tests for heatmap.2 * [r897] inst/doc/Figure1.eps, inst/doc/Table.eps, inst/doc/bka.bst, inst/doc/heatmap2.R, inst/doc/heatmap2.tex, inst/doc/regression_rank_image.Rda, inst/doc/regression_rank_image_II.Rda: Move heatmap and ballonplot paper source materials to their respective cvs modules * [r896] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf, inst/doc/Rnews.sty, inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Moved balloonplot paper materials to BallonPlotPaper cvs module * [r891] inst/doc/colSeparator.pdf, inst/doc/logData.pdf, inst/doc/logDataColDendrogram.pdf, inst/doc/logDataColOrd.pdf, inst/doc/logDataColOrdNo.pdf, inst/doc/logDataRowDendrogram.pdf, inst/doc/origScale.pdf, inst/doc/rowSeparator.pdf, inst/doc/scaled.pdf: Remove heatmap paper files and move them to the HeatmapPaper cvs module. * [r888] inst/doc/colSeparator.pdf, inst/doc/logData.pdf, inst/doc/logDataColDendrogram.pdf, inst/doc/logDataColOrd.pdf, inst/doc/logDataColOrdNo.pdf, inst/doc/logDataRowDendrogram.pdf, inst/doc/origScale.pdf, inst/doc/rowSeparator.pdf, inst/doc/scaled.pdf: Added figures for heatmap2 paper * [r887] inst/doc/regression_rank_image.Rda, inst/doc/regression_rank_image_II.Rda: Added the .Rda files for the heatmap2 paper * [r886] inst/doc/heatmap2.tex: Added the source - (tex file) of the heatmap paper * [r885] inst/doc/heatmap2.R: Added the code for the figures of heatmap paper 2006-02-21 nj7w * [r884] R/heatmap.2.R, man/heatmap.2.Rd: Minor updates to heatmap.2 - fixed Rowv, Colv and dendrogram behaviour. Now Rowv=NULL or FALSE both imply no dendrogram computation. 2006-01-12 warnes * [r844] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: more updates * [r843] inst/doc/bka.bst: Add Biometrica bibliography style file * [r842] inst/doc/BalloonPlot.tex: A little more. * [r841] inst/doc/BalloonPlot.tex: Updates to respond to referee. 2006-01-12 nj7w * [r840] inst/doc/BalloonPlot.tex: Added references 2005-12-13 nj7w * [r811] inst/doc/BalloonPlot.tex: Fixed Nitin's company name * [r809] ChangeLog, NEWS: Updated NEWS and removed ChangeLog 2005-12-12 nj7w * [r802] R/plotmeans.R: Fixed bug in plotmeans - based on Stefano Calza's suggestion 2005-12-07 nj7w * [r787] DESCRIPTION: Updated version number * [r786] NAMESPACE, R/plot.lm.R, man/plot.lm2.Rd: Added plot.lm * [r785] man/barplot2.Rd: Changed the default grey colors to heat colors, if height is matrix * [r784] R/barplot2.R: Changed the default greay colors to heat colors, if height is matrix 2005-12-06 nj7w * [r783] man/barplot2.Rd: Fixed minor error in documentation of barplot2 2005-12-02 warnes * [r777] R/plot.lm.R: Remove .Alias calls, since .Alias is defunct. 2005-12-01 nj7w * [r776] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/overplot.Rd, man/plotmeans.Rd, man/textplot.Rd, man/wapply.Rd: Updated Greg's email address 2005-11-23 nj7w * [r764] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure2.pdf: Updated Figure 2 colors 2005-11-18 warnes * [r743] inst/doc/BalloonPlot.pdf, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: Latest version of the pdf files * [r742] inst/doc/BalloonPlot.tex: Nitin works for the Cambrige Group, not Pfizer. * [r741] inst/doc/BalloonPlot.tex: Minor text rewording. * [r740] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex: More edits. * [r739] R/balloonplot.R: Recent changes to align row totals with the overall total broke how the marginal cumulative fractions were displayed. This patch fixes the problem. * [r737] DESCRIPTION, R/balloonplot.R, R/plot.lm.R, inst/doc/BalloonPlot.pdf, man/balloonplot.Rd: - Update documentation for balloonplot to match the latest code. - Correct spelling of 'show.zeroes' to 'show.zeros' * [r736] R/colorpanel.R: More changes: colorpanel now allows only 2 colors to be specified if no 'middle' color is desired. 2005-11-17 warnes * [r735] R/balloonplot.R: Allow user to control removal of duplicate entries in balloonplot. * [r734] R/colorpanel.R, man/colorpanel.Rd: Extend colorpanel to handle just two-colors in addition to three. 2005-11-09 nj7w * [r733] inst/doc/BalloonPlot.pdf: Updated the pdf file * [r732] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex: Updated the changes * [r731] inst/doc/Figure4.pdf: Modified figure 4 * [r730] inst/doc/BalloonPlot.R: Updated code * [r729] inst/doc/Figure3.pdf: Modified figure 3 * [r728] inst/doc/Figure2.pdf: Modified figure 2 * [r727] inst/doc/Figure1.pdf: Modified figure 1 2005-11-08 nj7w * [r726] man/plotCI.Rd: Updated Greg's email 2005-11-07 nj7w * [r725] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Minor modifications to fit the code properly on pdf 2005-11-07 warnes * [r724] inst/doc/BalloonPlot.R: Add R code that generates plots * [r723] inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: Add figures to CVS * [r722] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf: Text changes 2005-11-04 warnes * [r721] R/balloonplot.R: Fix some alignment issues. * [r720] inst/doc/BalloonPlot.pdf, inst/doc/Table.pdf: Remove Table.pdf since it is no longer needed * [r719] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf: Nitin's Changes * [r718] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Add figure plots * [r717] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Fix paths 2005-10-20 nj7w * [r705] inst/doc/Figure1.eps, inst/doc/Table.eps: added the eps version of figures * [r704] inst/doc/BalloonPlot.pdf: Updated BallonPlot.pdf * [r703] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Removed Old Figure * [r702] inst/doc/Figure1.pdf, inst/doc/Table.pdf: Added the new figure - for total popluation - Balloonplot * [r701] inst/doc/BalloonPlot.tex: Modified the BallonPlot article * [r700] inst/doc/BalloonPlot.tex: Added references 2005-10-19 arnima * [r697] man/rich.color.Rd: The last example now displays the correct heat.colors. Default 'palette' argument is now a single string, not a vector. * [r696] R/rich.color.R: Default 'palette' argument is now a single string, not a vector. 2005-10-14 warnes * [r694] DESCRIPTION, R/balloonplot.R, man/balloonplot.Rd: Formatting fixes: - Handle multiple row or column category variables - Separate rows/columns of category labels by lines - Fix handling of 'cumsum' plots on row/column labels - Improve display of row/column sums 2005-10-13 warnes * [r693] man/balloonplot.Rd: Add example using Titanic data that exercises the multi-factor display. 2005-10-11 warnes * [r692] R/balloonplot.R: Initial changes to allow multiple x and y factor variables. Yet to be done: 1) remove extra 'boxes'. 2) omit duplicated values 2005-10-04 warnes * [r691] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: more minor fixes * [r690] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: fix spacing * [r689] inst/doc/Rnews.sty: Inlcude Rnews.sty * [r688] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Some textual edits. 2005-10-03 nj7w * [r687] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Added figures for the R-News Article 2005-09-29 nj7w * [r680] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Updated the documentation - added the name of the person who asked the question * [r679] inst, inst/doc, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Added R-news article 2005-09-12 nj7w * [r671] man/hist2d.Rd, man/ooplot.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd: Updated Greg's email * [r670] R/balloonplot.R: Updated version of balloonplot - by Romain Francois 2005-09-09 nj7w * [r669] ChangeLog, DESCRIPTION: Updated the version and ChangeLog * [r668] R/balloonplot.R, man/balloonplot.Rd: Changes in ballon plot based on Romain Francois (francoisromain@free.fr) suggestions 2005-09-06 nj7w * [r666] DESCRIPTION: Updated package dependencies * [r665] NEWS: Added NEWS 2005-09-02 nj7w * [r655] ChangeLog: Added ChangeLog 2005-08-31 nj7w * [r644] DESCRIPTION: Added DESCRIPTION file * [r643] DESCRIPTION.in: removed DESCRIPTION.in 2005-06-09 nj7w * [r625] R/balloonplot.R, R/bandplot.R, R/boxplot.n.R, R/colorpanel.R, R/heatmap.2.R, R/hist2d.R, R/lowess.R, R/ooplot.R, R/overplot.R, R/plotCI.R, R/plotmeans.R, R/qqnorm.aov.R, R/residplot.R, R/rich.color.R, R/sinkplot.R, R/smartlegend.R, R/space.R, R/textplot.R, R/wapply.R, man/1, man/bandplot.Rd, man/barplot2.Rd, man/boxplot.n.Rd, man/hist2d.Rd, man/lowess.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/space.Rd, man/wapply.Rd: Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. * [r624] R/barplot2.R: Changes based on Marc Schwartz's suggestions to handel 0's and NA's appropriately. 2005-05-13 nj7w * [r621] man/heatmap.2.Rd: 1) Using dQuote.ascii function in read.xls as the new version of dQuote doesn't work proprly with UTF-8 locale. 2) Modified CrossTable.Rd usage in gmodels 3) Modified heatmap.2 usage in gplots. 2005-04-04 warnes * [r603] R/overplot.R: Explicitly reference package containing lowess.formula in panel.overplot(). This should fix the error reported by Troels Ring . 2005-02-26 nj7w * [r565] R/heatmap.2.R, man/heatmap.2.Rd, man/rich.color.Rd, man/sinkplot.Rd, man/textplot.Rd: *** empty log message *** 2005-02-25 warnes * [r563] man/rich.color.Rd: Integrate changes submitted by Arni Magnusson * [r559] NAMESPACE: Add dependency imports from 'stats' package. 2005-02-22 warnes * [r555] R/bandplot.R: Fix problem in passing graphical parameters (xlim,etc).@ 2005-02-08 warnes * [r541] DESCRIPTION.in: Improve package title. * [r540] R/heatmap.2.R: Ignore missing values when computing symmetric range. 2005-02-02 warnes * [r530] man/plotmeans.Rd: Add more extensive example. 2005-01-14 warnes * [r516] R/textplot.R: Code can be simplified because R now supports selecting a fixed width font. 2005-01-12 warnes * [r515] DESCRIPTION.in: Add dependency on R 1.9.0+ to prevent poeple from installing on old versions of R which don't support namespaces. 2004-11-30 warnes * [r495] R/heatmap.2.R, man/heatmap.2.Rd: 1. Add new parameters for controlling color key: - If `symkey==TRUE', the color key will be made symmetric about 0. - The `densadj' parameter can be used to modify the smoother width (see the `adjust' parameter under `help(density)') for the density plotted in the key. 2. Fix handling of rowsep/colsep. 3. Vector of length 2 giving the width (colsep) or height (rowsep) the separator box drawn by colsep and rowsep as a function of the width (colsep) or height (rowsep) of a cell. 4. Appropriate changes to the corresponding help page, plus some minor formatting changes. 2004-11-03 warnes * [r474] R/heatmap.2.R: Fix bugs in layout of cell notes. They were being plotted top down rather than bottom up. Further reordering of the x matrix didn't also reorder the notes. Both issues should now be resolved. 2004-09-27 warneg * [r461] DESCRIPTION, DESCRIPTION.in, man/sinkplot.Rd, man/textplot.Rd: Updated to pass R CMD check. 2004-09-03 warneg * [r453] man/textplot.Rd: Provide explicit package for call to nobs. * [r452] man/heatmap.2.Rd: Fix typos. * [r446] DESCRIPTION, NAMESPACE, R/balloonplot.R, R/bandplot.R, R/barplot2.R, R/boxplot.n.R, R/colorpanel.R, R/heatmap.2.R, R/hist2d.R, R/lowess.R, R/ooplot.R, R/overplot.R, R/plotCI.R, R/plotmeans.R, R/qqnorm.aov.R, R/residplot.R, R/rich.color.R, R/sinkplot.R, R/smartlegend.R, R/space.R, R/textplot.R, R/wapply.R: initial bundle checkin 2004-09-02 warneg * [r442] DESCRIPTION, DESCRIPTION.in, NAMESPACE, man/1, man/residplot.Rd: Initial revision 2004-07-29 warnes * [r426] R/plotCI.R, man/plotCI.Rd: Integrate changes from the version of plotCI maintained by Martin Maechler. 2004-06-30 warnes * [r393] R/textplot.R: Remove commented-out code. * [r392] R/textplot.R: Fixed text size calculations 2004-06-28 warnes * [r391] R/barplot2.R, man/barplot2.Rd: - Default 2-d color set to grey as in (v2.0.0) r-devel - The default (v1.9.1) barplot method now handles vectors and 1-d arrays (e.g., obtained by table()) the same, and uses grey instead of heat color palettes in these cases. (Also fixes PR#6776.) - Updated to reflect the addition of 'offset' argument in base - Fix bug in stacked barplots, which would not be plotted properly 2004-06-24 warnes * [r385] R/heatmap.2.R, man/heatmap.2.Rd: Add ability to specify color of NA cells. 2004-05-27 warnes * [r349] man/plotCI.Rd: Fix spelling error. 2004-05-26 warnes * [r347] R/overplot.R: One more fix to get it right. * [r346] R/overplot.R: Use triple-colon operator ':::' to access plot.formula from the graphics package. * [r344] man/rich.color.Rd: Replace 'F' by 'FALSE' to pass R CMD check. 2004-05-25 warnes * [r338] R/overplot.R: Work around bug in R 1.9.X due to plot.formula() not having the same arguments as plot(). * [r336] R/rich.color.R, man/rich.color.Rd: Add rich.colors() submitted by Arni Magnusson . * [r328] R/ooplot.R, man/ooplot.Rd: ?? 2004-05-24 warnes * [r324] R/plotCI.R, R/plotmeans.R: Modified to use invalid() to check arguments instead of missing(). This fixes some build errors under R-1.9.0-Patched. 2004-04-22 warnes * [r319] R/ooplot.R, man/ooplot.Rd: Integrate changes from Lodewijk Bonebakker 2004-04-13 warnes * [r318] R/space.R, man/space.Rd: Add ability to space points along 'y' direction. 2004-04-02 warnes * [r313] R/smartlegend.R: Fixed smartlegend() positioning when x and/or y axis are log-scale. 2004-03-30 warnes * [r311] R/textplot.R: - Fix bug in textplot() reported by Wright, Kevin . 2004-03-26 warnes * [r305] man/textplot.Rd: Update to match changes in textplot() code. * [r304] man/ooplot.Rd: Remove Windows EOL characters. * [r302] man/barplot2.Rd: - Remove some commented-out code. - Remove cvs log tag. * [r300] R/textplot.R: Misc changes. 2004-02-17 warnes * [r290] man/ooplot.Rd: Minor fix to ooplot documentation. * [r289] R/ooplot.R, man/ooplot.Rd: Integrate ooplot updates provided by Lodewijk Bonebakker 2004-02-02 warnes * [r287] R/colorpanel.R, man/colorpanel.Rd: - Add colorpanel function, which generates a smoothly varying band of colors over a three color range (lo, mid, high). 2004-01-21 warnes * [r283] man/textplot.Rd: - Correct arguments to halign to match code. * [r281] R/lowess.R: Track R 1.9.0's move of 'lowess' from the base package to the (new) stats package. * [r279] man/sinkplot.Rd: - Fix sinkplot() example by replacing 'T' with 'TRUE'. * [r278] man/ooplot.Rd: - Add some more details to the ooplot() documentation. The documentation is *not* complete. * [r277] R/textplot.R: - Mark sprint() as depreciated. - Replace references to sprint with capture.output() - Use match.arg for halign and valign arguments to textplot.default. - Fix textplot.character so that a vector of characters is properly displayed. Previouslt, character vectors were plotted on top of each other. 2004-01-19 warnes * [r276] R/sinkplot.R, man/sinkplot.Rd: New function sinkplot(), as requested on R-devel by Kevin Wright in https://www.stat.math.ethz.ch/pipermail/r-devel/2004-January/028483.html. 2004-01-15 warnes * [r274] R/ooplot.R, man/ooplot.Rd: Add initial code and docs for ooplot() function submitted by Lodewijk Bonebakker . 2003-12-03 warnes * [r253] man/lowess.Rd, man/textplot.Rd, man/wapply.Rd: - match function argument defaults with 'usage' * [r252] R/heatmap.2.R, man/heatmap.2.Rd: - Fix buglets in heatmap function - Make a slight enhancement to the example code. 2003-12-02 warnes * [r251] R/heatmap.2.R: Integrated some suggestions from Sean Davis . * [r250] man/heatmap.2.Rd: - Make final example use 16 colors instead of 8. This looks nicer. * [r248] man/barplot2.Rd: - Remove '%' character from example code to avoid errors. * [r247] R/plotCI.R: - Add '...' parameter to call to text to allow user to control size/color/etc. 2003-12-01 warnes * [r246] man/barplot2.Rd: - updated to match changes to barplot() in base. * [r245] data, data/rtPCR.rda: - Renamed rtPCR.Rda to rtPCR.rda so that R will properly load the file when data(rtPCR) is executed. * [r243] R/barplot2.R: - Follow patches applied to barplot() in base. 2003-11-24 warnes * [r242] man/heatmap.2.Rd: Fix unbalanced braces. * [r240] R/overplot.R, man/overplot.Rd: Fix errors reported by R CMD check. 2003-11-21 warnes * [r239] man/overplot.Rd: Added missing closing brace. * [r238] man/rtPCR.Rd: Initial addition of these files. Used in examples of overplot(). * [r236] R/heatmap.2.R, man/heatmap.2.Rd: Applied my enhancements to the heatmap() code from R 1.8.0, and added documentation of these changes. * [r235] R/overplot.R, man/overplot.Rd: - Discovered that axis(N) does the right thing without needing to be given location for tick marks. This allowed simplification of the code. - Minor other changes for distribution - Addition of overplot.Rd documentation. * [r231] R/heatmap.2.R, man/heatmap.2.Rd: - Integrated my extensions into the R 1.8.0 version of heatmap. - Add Rd documentation. 2003-11-19 warnes * [r228] man/bandplot.Rd: Remove extranious NULL that confused R CMD check. 2003-11-18 warnes * [r226] man/barplot2.Rd: - Tiny fix to remove R CMD check error. * [r225] man/smartlegend.Rd: - Added missing closing brace. * [r224] R/overplot.R: - Convert from MS-Dos to Unix line endings. - Reformat to 80 columns. 2003-11-10 warnes * [r220] R/heatmap.2.R, R/overplot.R, R/plotmeans.R, R/space.R, R/wapply.R: - Add files contributed by Arni Magnusson . As well as some of my own. 2003-08-19 warnes * [r219] R/heatmap.2.R: - Copy of local changes. * [r218] R/heatmap.2.R: - Checkin before re-integrating local changes. 2003-06-19 warnes * [r201] R/heatmap.2.R: - Added enhanced heatmap function. 2003-06-09 warnes * [r200] man/smartlegend.Rd: - Add help text for smartlegend. * [r199] R/smartlegend.R: - New function smartlegend(). 2003-04-22 warnes * [r191] R/plotmeans.R: - Fixeed warning messing caused when 'connect' is a vector. * [r187] R/barplot2.R: Update from Marc Schwartz, modified by Gregory Warnes: - Modified dim() checks for 'ci.l' and 'ci.u' against 'height' to remove R v1.7.0 if() based error msgs for vector conditions. 2003-04-04 warnes * [r182] R/balloonplot.R, man/qqnorm.aov.Rd: - Change occurences of 'T' to 'TRUE' * [r179] man/textplot.Rd: - Updated to match changes in textplot function: - Added textplot.character - Renamed arguments "col.margin" and "row.margin" to "cmar", and "rmar" so that specifying "col='red'" is possible. - Fixed R CMD check errors - Improve comments in example - Add textplot.matrix example * [r178] R/textplot.R: - Added textplot.character to handle character strings. - Moved test for vector and matrix arguments to textplot.default. - Renamed arguments "col.margin" and "row.margin" to "cmar", and "rmar" so that specifying "col='red'" is possible. 2003-04-02 warnes * [r175] R/textplot.R, man/textplot.Rd: - Added textplot function and friends, as well as documentation. 2003-03-08 warnes * [r171] man/balloonplot.Rd: - Forgot to update arglist in \usage section. * [r169] R/balloonplot.R, man/balloonplot.Rd: - Added parameters for rotation of and amount of space allocated for the row and column labels. 2003-03-07 warnes * [r168] R/hist2d.R, R/qqnorm.aov.R: - Minor changes to code to allow the package to be provided as an S-Plus chapter. * [r167] R/lowess.R: - Add 'NULL' as the last element of if statement that defines lowess.default so that when the file is sourced, S-Plus doesn't display the function definition. * [r166] R/lowess.R: - Specify where the defualt lowess function should be found. - Use getFunction in S-Plus instead of 'get' 2003-01-30 warnes * [r159] R/barplot2.R, man/barplot2.Rd: - Added argument 'add' to allow for the addition of a barplot to an existing graphic. Default is FALSE 2003-01-20 warnes * [r156] R/balloonplot.R, man/balloonplot.Rd: - Updated balloonplot help page. * [r155] R/wapply.R, man/wapply.Rd: - Updated wapply.R to allow specification of evaluation points when method is 'width' or 'range' using the 'pts' argument. - Updated wapply.Rd to add 'pts' argument - Fixed typos, spelling errors, gramatical errors and lack of clarity in wapply.Rd help text. 2003-01-03 warnes * [r154] R/balloonplot.R, man/balloonplot.Rd: - Initial checkin of balloonplot functions and documentation. * [r153] man/space.Rd: - Added reference to and comparison example of sunflowerplot. - Added code to put example plots on same plot window using par(mfrow=...). 2003-01-02 warnes * [r150] R/barplot2.R: - Changed assignment statements that used "=" to "<-" to avoid syntax errors in older versions of the S language. * [r149] R/lowess.R: - Added wrapper code so that R-specific fiddling won't be executed under S-Plus. * [r147] R/qqnorm.aov.R, man/qqnorm.aov.Rd: - Renamed first parameter to match qqnorm generic. * [r146] man/qqnorm.aov.Rd: Added additional help text from Kjeitl. 2002-12-31 warnes * [r145] R/qqnorm.aov.R, man/qqnorm.aov.Rd: Initial checkin of qqnorm.aov function and documentation submitted by Kjetil Halvorsen . 2002-11-04 warnes * [r143] R/barplot2.R, man/barplot2.Rd: Updates from Marc Schwartz: - Updated underlying code to be based upon the new barplot() in R v1.6.1 - This now uses the 'axis.lty' and 'border' arguments - In R v1.6.0, R Core introduced a new function called axTicks(). This is an R equivalent of the C code for CreateAtVector in plot.c. This now enables me to get the axis tick mark positions consistently when the 'height' related axis is either linear or log. Thus, I can now have consistent tick marks and can plot grid lines in either situation. If 'plot.grid = TRUE' and 'grid.inc' is specified, then I still use pretty() to determine the tick marks and lines. - This code now depends on R 1.6.0 or later. 2002-10-30 warnes * [r139] R/plot.lm.R: - Commented out plot.lm() code since recent changes in R have broken it. 2002-10-11 warnes * [r131] R/barplot2.R: - Fixed log scale errors in legend() call 2002-10-01 warnes * [r130] man/hist2d.Rd: - Added examples of using 'contour' and 'filled.contour' for display. 2002-09-24 warnes * [r121] R/plotmeans.R: - Changed digits=options("digits") which produces a list of length 1 to digits=getOption("digits") which returns a vector of length one. The former was causing an error when passed to round(). 2002-09-23 warnes * [r119] man/barplot2.Rd: - Fixed syntax errors in barplot2.Rd and CrossTable.Rd - Fixed incorrect translation of 'F' (distribution) to 'FALSE' in glh.test.Rd * [r117] R/boxplot.n.R, R/hist2d.R, R/lowess.R, R/residplot.R, man/bandplot.Rd, man/hist2d.Rd, man/lowess.Rd, man/plotCI.Rd, man/space.Rd: - Modified all files to include CVS Id and Log tags. * [r116] R/barplot2.R, man/barplot2.Rd: - Added CrossTable() and barplot2() code and docs contributed by Marc Schwartz. - Permit combinations() to be used when r>n provided repeat.allowed=TRUE - Bumped up version number 2002-08-01 warnes * [r114] R/hist2d.R, R/wapply.R: - Corrected documentation mismatch for ci, ci.default. - Replaced all occurences of '_' for assignment with '<-'. - Replaced all occurences of 'T' or 'F' for 'TRUE' and 'FALSE' with the spelled out version. - Updaded version number and date. 2002-04-09 warneg * [r109] R/bandplot.R, R/boxplot.n.R, R/hist2d.R, R/plot.lm.R, R/plotCI.R, R/plotmeans.R, R/residplot.R, R/space.R, R/wapply.R, man/bandplot.Rd, man/boxplot.n.Rd, man/hist2d.Rd, man/plotmeans.Rd, man/space.Rd, man/wapply.Rd: Checkin for version 0.5.3 2002-03-27 warneg * [r107] man/lowess.Rd: Added "..." argument to lowess.default. * [r106] R/lowess.R: - Added code to append "..." to the argument list of lowess.default. - Fixed a wrong default for f in lowess.formula. Was 3, but should have been 2/3. 2002-03-26 warneg * [r104] R/lowess.R, man/lowess.Rd: - Changed methods to include '...' to match the generic. - Updated for version 0.5.1 * [r100] man/hist2d.Rd: Initial checkin. 2002-03-20 warneg * [r94] R/plotmeans.R: - Changes to add compatibility with S-Plus 2000 * [r93] R/plotCI.R: - Changes to add compatibility with S-Plus 2000. * [r92] R/boxplot.n.R: - Updated to work in S-Plus 2000 as well as R. 2002-03-05 warneg * [r88] R/plotmeans.R: - Replace "T" with "TRUE". Problems arrive when there is a variable named "T". 2002-02-20 warneg * [r81] man/lowess.Rd, man/plotCI.Rd, man/space.Rd: Minor changes, typo and formatting fixes. * [r80] R/bandplot.R, man/bandplot.Rd: - Generalized to allow specification of the multiples of the standard deviation levels to be plotted (0=mean, 1=1 sd, ..). - Now (invisibly) returnes computed smooths. 2002-02-16 warneg * [r78] man/bandplot.Rd: Added bandplot documentation. * [r77] R/wapply.R: - Fixed Bug: When method=="range", the absolute range of x was being used to compute the relative width instead of the (correct) relative range. * [r76] R/wapply.R: - Corrected problem removing missing values: The missing values of $x and $y were being removed indepdendently, leaving an uneven number of points in the result. 2002-02-04 warneg * [r74] R/space.R: - Add na.rm parameter and make the default TRUE. * [r73] R/hist2d.R: Initial checkin. * [r72] R/plotCI.R: - When err="x", 'col' was being used to plot bars, rather than 'barcol'. * [r71] R/plotCI.R: - fixed typo, when err="x", lty was 'slty' causing an error. 2001-12-12 warneg * [r54] man/space.Rd: - Quoted underscore character in my email address. - Added correct keyword. * [r52] man/plotmeans.Rd: Added documentation for xaxt parameter. * [r51] R/lowess.R: Updated to explicitly list control arguments to lowess.formula. * [r50] man/lowess.Rd: Initial checkin. Code copied from R source package and extended. 2001-12-07 warneg * [r46] man/wapply.Rd: Fixed an problem where \code was incorrectly delimited by parens rather than curly brackets. * [r42] R/lowess.R, R/plot.lm.R, R/residplot.R, man/space.Rd: Initial checkin. * [r41] R/space.R: - Added cvs tags. * [r40] R/space.R: - Leave first point at center, rather than shifting by s/2 to the left. This looks better when there are more than 2 'spaced' points. 2001-12-05 warneg * [r33] R/plotmeans.R: - Added ability to use the t-distribution to compute confidence intervals. This is controlled using the 'use.t' parameter. * [r31] man/plotmeans.Rd: - Added documentation of use.t parameter. * [r30] man/wapply.Rd: - Clarified how the width of the window is computed when method="nobs". * [r29] R/wapply.R: - Added a better default for "width" when method="nobs". For this case, width=max(5, length(x)/10). - Allow omission of x values which result in missing y values via 'drop.na' parameter. 2001-10-26 warneg * [r28] R/plotmeans.R: Added correct handling of 'xaxt="n"'. 2001-10-16 warneg * [r27] man/wapply.Rd: Fixed unbalanced brace. * [r26] man/plotCI.Rd: Added minbar and maxbar parameters. * [r25] man/plotmeans.Rd: Forgot to add minbar and maxbar to usage section. * [r24] man/plotmeans.Rd: Added description of minbar and maxbar. * [r23] R/plotCI.R: - Added minbar and maxbar parameters - Added cvs id and log tags to header * [r22] R/plotmeans.R: Added cvs id and log tag to file header * [r21] R/plotmeans.R: Added minbar and maxbar parameters. * [r20] man/plotmeans.Rd: Added description of minsd parameter. * [r19] R/plotmeans.R: Added minsd parameter. 2001-09-18 warneg * [r18] R/plotCI.R, R/plotmeans.R: Release 0.3.2 2001-09-01 warneg * [r16] man/wapply.Rd: Release 0.3.0 2001-08-31 warneg * [r15] R/wapply.R: Used wrong character in header (% instead of #). Fixed. * [r14] R/bandplot.R: Used wrong comment character (% instead of #) in header. Fixed. 2001-08-25 warneg * [r10] R/wapply.R: Initial checkin. * [r9] man/boxplot.n.Rd, man/plotmeans.Rd: Added CVS header. * [r8] man/wapply.Rd: Initial Checkin 2001-05-30 warneg * [r2] ., R, R/boxplot.n.R, R/plotCI.R, R/plotmeans.R, man, man/boxplot.n.Rd, man/plotCI.Rd, man/plotmeans.Rd: Initial revision gplots/data/0000755000175100001440000000000011764442554012525 5ustar hornikusersgplots/data/rtPCR.rda0000644000175100001440000006613411743412036014206 0ustar hornikusersý7zXZi"Þ6!ÏXÌã»ul])TW"änRÊŸãXS¹î#Ž&–'¨Æ¯NïæMÊzÉzó·²Åÿ~ B;ÁHr~åªøM+˘eRì8 ƒ_B%ºÿG~#@\ߢ§VáúöŠ"„TÔyÄÒ*‰|ÿæm͛ݔ¼…jÕxŠ­·2tKž;}BDñÍ‚TO®6Ö…’´¨'AŒßMéÿ¤cT¯¢¢¢W@H^…œ^©_·3sk/Opuã–¦¡ÝZN¬­]j±P˜ÜL1ʰz%ÓÇl´…b)vÀë£-L´¨Vܪ.?JcZ÷2c켯 IÍ&ùsã4»æÇbg®Â†4¸€Ä!‰Å„™‚g¤ï*þ µÜŽ.©c𢠹[ÚŸ›œ |Í‹¨WÎÄ»~gEጢ9áÒrLÛʘ \ŒX¼ }üžÆ ~}Yø3›­Â&¤@Œˆð½Î"@3Ðà»I^‹Uäý¬¥¾I£¡ÅÕÄ_¤ô„z Øc§ià\–Ë –hõ+›og·ê@¥Õ›Ðl•ò>Y‰¿úÌ5u´jÞÎ&…왲ž}â¿Å^"ú¼EèL²‹<¾<Þ+gQx(~(\ÌÏüý‚Äo8h2ð°o{cˆeö·Qo^uŸÓ{f“–3ú(pâwqÒ’ü‰UôWŠ F©+ûQô<‹Ë,·Tð”\Üü bš®eO>e2ï+s³ñŠ÷Ï/ÁÛ•‰cBv»Æ éašûz— Šâ˜T&‘º¥%Œð˜_7ØÒš{ @®ð’YQWª‚¤ýØÔ-ûröŠÜ„sorbsoZç°Ø 2f/ëkz¨¸TsÃ-zI”H\ÇE ¤ú\‘Rµ£U+z! ÚQsT”€âšR‹ÿº猪V=`s>'Û‡¸ˆÃ·‘¥«=”ÎrûŸH ÔôqVŒù…‡½a\sÀm|üy™Ûׂݵx™¤&úÛ‹}lØ8 PíŸ/ÙpŠûÙU'yh|@§43ø võSÎëÏNH o)ëê#3¶åÿN·tO "¦á Òµúq>7ž÷²è\•âì;GwCu”‡êìš¡&ÒŒnÃë6ÿ0¡õ‚ã^éDÕŸQî©^§k,´vSºÅh}ÒA³¬»QÊÁs‚ŽtHxÁ¬ÖßîZð;“™4-GËDx:Ž!‚ fmŠsâöÄu}¤’”ÖwÝû$[=:Ng¨$´¥ß[:渌4Aжºû O7=|Dx}L[H<ª@˜H¼éÃAG õZ u¯ô[67 Lé¼#•2ßnºÌä§ö€$•€*,ÎSCg_Ÿ¶´UÊ.3·Èð Ôßþ´ÚzÌNúÔjœîö,UéH¡™x#X…XÌßl¡¶{–SÁâPyBdÒ/¦Å‹¹”‹€¹`?P1¢Ó‹ï ®âzÐ}~di Ê÷²:ÂÄ5æ–žŠ{@ŽUq‹TRÏîñd7ê·¹ý8¯«9½æª)n¶“ë„¡Ç›jl)4‹³Y½QÖÁ«-Lj}QPÞ9* Ø’ŸE»ƒ¨?L1ót.‘xˆ’лF#‡Ú/–O‡Áw/Øfй!&ó ¦ðÙµ ³Ü7Å8s© ù¹ÝŒùËb²®»zZWŒ’ÛW´JSƒqúÒOÚ4k]j_¡_ô¾LSÛjLhЉ܈º³¶¶V}À¸’ VÿÛ­GqÿïSƒg}›³³i/içÀ)Ϲ‘ǽóN½à:z€µH˜ãÛ$Þüu‡úp˜ÈïSÞíÖÊMÿ¸®G¦Úa7*¤æ†1„r Š5ˆæPÙrct ö{Ú€±Wl.cUâ[ŸÊdª‘~q!`ùÉ* Ë/ÈUï²ç0mdÕÎ|Jüž+–›ƒ¿ \°w™ùïqä6r=ªD·«†±¦,Ë{ Ý„’œRìøÑÒ´Ú¯›Ñç%,Ø¢êì?•$–<YéŸÛç)*üWLNêTú5q–`¦GЩ©Ú~z|Ç Q}©´”´ö_d!¦ø«^Çx­ëµˆUʈ ŒB<4O°òjIÏ÷;ÊÜѹ„™°:M?U ¾Ýiÿλƒé‹VWê¯*^óúôÌAcr+ŽÐ•}t(ÿú¾<åÄbœòÒCtïʇ„Ø”XŽòÆ-²ùÖ=m³ïšÖXÕÈ:ñÿKðÒºÜ]éò!x—¹½ÓÛ÷&>íÏ-ŒICÞœNäÉ¡%7üˆ/:kßäI8­ùwr™ù°±.Å•|9¹ZBópÆÒ¡ã²?{Wd®(C<ÖCÔÝäÄÇ2˜ïò ¢:½ðî|ÓŸé¹›ä6RXöAè{¼ò/~)”µÿÎgwõºiÎ,Ï›Q_²a†Ã«?YPM/w6Æ£5hhjƲ¥®ê»â.tÏÍCxK›Žz}ÿ½¯Z¥ü¦K õ À½ Å2µsm·„ügv×ÖnfKV|ÓlBc]M¯Âm *Žc—§ˆ@¹#ÒC•ð/gK›b"æ•Ú¾WÉt”2ëG÷µ³xÐQBR:Ä&tÅbfš•9¢·ä'†·[C\ÊÛŒ¶î'¹⼚goø;ɾ­fHDØäq"ÑbØ÷1cëTè"_¥ø7‡@æ‹%á6Ë´ÈK°´ Q B~Tdåp è8”ï‘ʧ7cYŽ_]±ØÉ·Å.20jw ŠW¯Wž@ "ÿM!׆Æ?4w>¾òà¿aà‰ñè"Êùs„)úeXÁdµ¼<Ë·†'¬òOÃãŽ$ÉÆFeIÓäˆÐaˆ.äò8°HOâ»ø…¿üèÑ%dy††ÓåÒ»¬?]zñöêô3`X°ü‚þSÊŽù·ªH‰§Œ(‘ôÌö¿ã…¢j/÷ûÄ[|»ëï³äšg¯åì¸ûp°¸à¦c J²‡âW³[¬7?(1Þþ=˜j…õ‘Y™O\X[ô8üéÆÍy<V‹ŠÓøÁf+ê­6oœì»i›NhB@®Œú5ƒåë – ì Þº.¤hÕ%ª ]§¨^úUÔ\quÛ»•l â½̱é«ï]À¦ý¤ Ck¢®E@[¨´Jj~8«sYÙј%¼´À7ñet €›µA{¢™"Ž¢®B² uÞO»é4 êW%ÓQ6›zj0ª…ðîtù"a¿m)5Ø£ª¨«_¢ËV×7±cJ«á’ovÑû]Š·ãü§¨Ÿ€’Ïb°’Ýéþaô ‡ÂEÅö(¢¾ ŒL¼oðµý1Ÿ.Þ§²Ð“Úíë•Âĸѓ~ÛÉS•ÓAü,á)”M…É@Üeã"¶*–_%Im/|tŽ. $ ç}>;+a®PµóÆì§Uš '-žž'ù”œ–â‚GHÓ®%ÜcÎÃ> [Õ7Þ³ÔÒŠƒ«ÉÖèÌ]ÐÎÁ\T”P‹9ä‰ÃŠßYu´R4àHˆ=¦Щ»?õ¹ß„S8•¥Ò‚où.¹¯ÝAÉ›ûèŸÞ€ŽËXáLñYq=9ˆ g)¯°äì=Âãö4‚ú¿m`pT!Ï:qðšó«c'Ü cÙœcTëð2ô”MÓZ¡´'›³I»z†gìÚºK2¬+Áï›{9tÔThÈ·´Lsüzn²µ2™M£ñ6±ÍýVèç¸LÇhM߇w$‹Åó4>$¡AVSnæ™Ò‘°Í;bÎî†tKÕ pÚ³m·rHqHê^„MÇ”¿<euN·þ¶íÊЮœÄ“ŽâÓ€â-OŽo,þ5š®‚eF´fÛ3NfÚœ]ñOtÈ9¬ÙÞÜÉù]Ÿó—ýÅš¢|à–ÓK¾çQ¦7ÊÓ Œû×;!@D{0À¨¾ß…›&ØJ0?x*ˆÕ–òsν~wà¼ç¬Dm›\|Ù£9k¤ø³À+:sŠ=@!-%mMV*QKÖªÌxÙ8¶”A²ÈÅîÿ"ÂvùiÐ Ö… "²JÔ¸>'=¸…~á’îmÙ |µQñ´bõG´ÙæÎºc Ù!Ú¬Ìw&I ¹¦UÞìi‚ÎDPmˆÆ×ý#°vãnQgòÕ úËÊæ•ì*RMC*ñ›Pžè‹Á~ÿ«iÖ.t¼› Ì}z=Œ|²ñ£à†ó8|:J·‰à.e·©×YÇ¡ª¤&·a|6ƒ³1”=‰<^^ª›/Úœˆ£"¤áKžyNk½«9 c8í9îåÃð‰únvn¶†BΩwÀɳÓiØÀ.¨è xöPî&ö¤i^­Ê:eÍ¢#w5ú£º¹ÊÜGub&z]i„…Z¡Êµ‡°6”JB_ÞþdÍ¢kã^»ŒÜc™L–ø3Ï€;áT—w\¯TšKýmsÅ—î³¢¾„'µKÞd7‡¸wCçË– 9™œ%j!<‹¼±y Å^¾³ÛÌßù ÏûˆöïÞ0âVº5N—YùQX²¹``ìzxW!F™ÎDøo(¢Ÿ˜îÑÜ–ûáÁ5!ò··U$ìÙQÄ´û®È×½R߯žLÞ0°:sHq‰Ëÿ×Ï#Øá.eáÉ~Mõ±IÄV‘´S'Q…7jGó'Êpî=Û«ˆÜ?1†W9mzêz׊GŸ-”ž,Wäñï5Í^÷#÷Sb’™—ÁÃ÷¼xø@ªh’sÒ價ÁÇOk$°{4ô2ñ4[Jù øªâ©Î'šóغLÚÕ]™¤EV3DE®§1m@CÃW*ym9ýVÉ*¥·©%v'°ÀýHÑüð”³i]»¨÷ºRZ@ž'ƒøOZ5‘ÀËÊz÷ÎÕ*×óû°Ì.˜ºËX‰™¯¯N¿ áÙÊÃsEÇbeÅýëÅØ‹i8»‰SðÉbö¬Sêí%¨Ç\Ò}6 ½¶ˆ#܉!ÆS‡’ß ì1³é®ÁŒo¥g<4™+‡ºz"'ì`×ÊãÇO?ºˆ¢Žé+$ƒ"F.éf`3$!Ày :îg2YŸÏ…QÖ*>17ãÑ@&s!&¹+æaÆ9_‘äÈm„úòQæJ6ÑæƒEv„âÓ-“~oý‚0à*xƒ†|ÂÖrœ¾§`­60¬R'¶Ç5uzÿ`ù[tí¬°KFoªôöã+¡Éîf»ž™!Á$fi‚ªC‚¨ýòC#ß×á×á %YÞ¦Æ*¬%GÛ1µÞ³Çâ]W ÞÒ?ŒJ«øõ¾íÿ¡í}ã£Ë2µ-,œn ¢u`ÔùqÇ»§WWßj?Ϫ+xbGE˜å;]³m§Ù!jò 8Ûð.°_.)çg] €· dýõ Ž¢Z‡sr¦èqÓŠ—þ£ŸºÈ‚j[哲Ñ\ùÅø Î}!¯¹’Þ•ÂÌX>Ÿ’¯ì÷;úyuçIm¥þj¥[Öûx,²\CF°Ž à¡,l)w¥›Â¯VÀ•ÕÎw¯g93Š ¦;ÉŒt0œ£=¬D!¡“$K;iL‘;uáË*r\:‹þsNDÆOŒE³ätu9{HCi‹Ï«xˆÆŸ6ªlùh$ß«o;fÿ"mñ  ¸ÈÎuS]h®‹=ÖüˆuQ}x^žÃ"eÒ5›^¬SFْС’ˆb°ñ¨¦7ÚÙ{Ý9m'“QÒÉfºÎi ÐÏÓq8?„ùjïš…ë ~¯Ðó~[¯3¾§Ü»“¯ì*ZLPû‰RöZTÚQÎ7bˆ5Ég ìßDÈgå¿®EÜ$Cþ5ë…*‡—ýg…$ßg6ý¦GÎ&L÷Ë Ç(eBÆxe`r-q¾Ø{Ê8\Fsg»¹jSòÒÑ}¨ðà7+)¬·'¼•œ!åLqÕô \aæ2…¢ÑID([m×–2ºÓ¬+AЬÆìH=¹å÷¯ õôƒø\F¼Í”r«ÔÜߌ쯛 7e>ͤg½«L‡Óy_#ê„(±×Ì<Øp%¬`{rAåbQ/F³ŸmŽ` =ú–Þ‚ ü>]tÜŽ²+}€5dM ¨9²úÖ0™’k…ò< Dkp[òOq 3xWÊqûÏO“€Û†ò”X-ѲªRò®r“íf‘åq5ÄÙ½Ma+µ÷\%¡õ˜~ýu[Ƀ.’±¹k¡76ýøàŠ’6ûZ†û›¨¿ÏÉ`JYM¥‹Jë¹X¬Ÿ_Þ ºv,žèïfŠþo¨‘–o·UnzsŸïŠ£éí2>S:I ½ž†?ÞÆVÕ´ Ñ0ZäzìÄâÂ`M®ÒBè«•ë‹ ‡•ÐÆX]• ,ˆ–¢._Ò°æ¸uw[f٪о0_qånÉôÏ(ˆFXKßó|á´sñS³>OwwíÉÐŒ€Àï*³ ëaËUçÁ½‚ñ«aîWJ±F%ABjýÐ×~ÑÞ¬-eLý›¤ Ò™Ò^‹ºüZLÎOñ$5V<+^­B {ĬË„t‚‚úNKU3zýìMãˆfžÆ TZ™Í„cŠÏÓŸŠ‚Žà-\©kÆv‚7¨ñgf›MÊãmQ‹6¤jâ¿èk®ð¡8:f !Úi³~‚]ºçÝš;01“y™. <þlt½üÑ©1ÓZ8Õt6&ÅëÁê‘‚Qktm£ijÚÛ²Ëü\¼«ØÒÂq¸ËD¦¾S˳8½þµ²@ª\f@ÄÖ‹éï3…8Ý‹)H¤ë‘zHEÆ+wf›¹¯ïNhÊËÁn´:ë¿Úç"qï`"ÂOƒu'A¥„}rMl8(a çsÛ0–ªGs“8¯jÈ“´lšp(ÍKÙ)ó¨Ý‡Ë [yr™7pbß ÑЫ†Šú{2ì ¹]fçgtÒ&J%9>\Ï£½Îc®ˆ¡²å oª+E±±:±~GÕƒ[ãBz­>¡#:Õ*щ|X+Úü„ïýÔbw^hãÆµ¢“‹Y%üÏ¥&­ðÞåŒdÓuÙŽÊ&åàoýÚnª±WACô à­ú¡(ÉP/ļä:ó_whdš`þy¥ƒ‡Ô9G|¸Z=ƒsçâ|,¾“›2sAô¾Tí)ÜÀaÇhÄ.³1æ-j®â ü˱:Ù•i%ýYm4 ­-´ë_`Nb}<¢*h½Î³÷ïhWw®6ÀÃ&ÿÎc¨[½kKÅÅç ϳÖÖv Q—x+º])öÅGHKMUR¾ök»N´ˆÿ½¬b úEž¾ÅÛ1KSl¢PÁ'­·”šç€8ÎÍÕƒ×cKxÙ<Óþ/îÏç>} %¾OJŒÝݦ5rÒdà2ð;Š,°éR‰Òç’[i òå®0:t_vʼÆ-Ba«/­zg¬–›â}ùéS\d‹ô ·‚ŒŒ6ÑÈFjëd¨SÇ1þ]œDº%¯#úÔ_ ÊYóÃME ¢üZ•™ësIçõv?´Á?¸ÝaÌÍ…ŠoµØ¯%uñQµ)•üL,updúI¤Ù±£$‚ ªÄÄ]u³‹ï•Úª÷›)i|i]xB¸ôþá§àzýª$Üz§’ÿ„ÐAweIÏ,<‹_–V…§.œ¯:-ëuuC Y?’»w”?S»Ý0§ ¶1Xhãl|r„l¾áû/0m½›$ó(”™ÏX]m¶ ¿<…§ñHÚ1Õ–*î©I¸?³*äf\>¹†O“¾r$UøBS$Hš˜ý„àÈK|µ²“2Ýò!óÛjÁÊ„™°›}5¤7ÄðÄíùŪbÖ Ö hØb •!t••«'£¯yÊHA$=î‹$©..G¯½»ˆäK„ìl„ÿFè Q“¨«Í¸ðëSw‰«El É¢ Ó:”ÐLC:¯ê7Å*ŠÎ P5Ç: D× èÆÃ3Ûì…×ùÏðÆröµUªdy¦9YÖ’ùÝ3.§cÂúÓ}ÀXö«¦„=¯sh%b9þ1ôÙhûT €­…l·Ã4œi¿%X_ÊÝËØ‘·ôÁ«ˆü¯d.=ªuGN­PAθ‡weþìsMÖìúSq™"±÷öï4²ñLûÏkf½‚ˆ¥%>Û\X‡~Dó¤ƒå„ç"¿N<ž@e»Hrd©¶p¤DªÂ×0ùêD»*™ê "m(ŠÜ𣪳öX ÓÞÄÇ­¯ã®{l,£ÿ“bÍŪcíFùç XÁ6?ÿ|gÛì›ý¸—É#oÌŒôeÌØžé†6!ºÅê\çj‰9ä´—å‘´M\ ȧړ6«ßw!K[Œj`5ºÍPÁËÌȹ/­÷µÿ²öHqcKÆH»Œâ%¶dbÈÃnâ¨ê2ø7\œY# «<†Xž·œj¤"ˆ#bî|êWˆ·In_øì6ù»‹Ü+PÐýŠÂtjRý×¹V(y·M·v;cõd*ÐX ;_60„!ÛÉ›"-ß<§¢U}Ì芖¼:õó =Q¯Dì¦|´¿ú*ar‹´’† 9ú¥ì˜MÈPÕ•‰ž,D‚køB‡ŒrÇcYÜF.ÿ·Ö®)¢- úí7º}2ktðªOZÉ ñìBÉ¥:tº[µÄëõ¹eüÄÿ¢Ðd*…!ö“Jók¡.eØúsJMCätNçB~3O«7} p݈~ ¦áè‡@rh½ “× »‚º(U侜9`Îç²`ßÈKƒæ(_;“åñL±õªZFÙàaÇq0³î#d.òì H¬s}óX¶j›–þ 3MzÂÖå?ûÑ!ðpD‡³¶’@"%OÝNx“•c$ßy¬k]¹6ì»ò$ɪaFŸs²a8hP½g©³ÊR ul¯­ô3rJÁ½Ã•F™¦Ž‰eT߇)oë ÚK}C.Ïe¨U²x•ü Öß&ñ y‡moD>deéÖ|ÓÅSðËC~Èq§ïôÂò(­lMy4 ±Œ¹AÅ®Þðûâ:0 @J÷HaÅœJFH‘D|Í‹ÙÔB‰5Øò²étƒ\éÙ‚ð¥ÐUÆ@A—¬Ö>`šüÎz˜S Û«Ô'ë«×O2ƒžÒ jŽIç!˜¥\Pà‘~ D ·:È¡çäx\qiyäÉ-†'PîŠÛ/DMÙÁlÚ“€¯ËtZv/WóYÇÐ[ ¯cÆçieeÙ*ìúbbé™Kw·Jcqj’zvßÒq9¤ét3õ_)⤼­[Йàgš°zl©¼ŽÌáVGüe“gVuñ‹Þbß&!aŠÚèN–ñµ¦ Îa  8õC2’Œ¬¨c‹ßÄ`¼{Çq€ó¸ì¯ÿóªõ~4_“·Gw#r_˜±ëZyΫf×6æø”!ôA^™¾ÞJ×íw$nÁÃã\uÅÇE¥Þ€ŽeäÕ;ú¸O9Èë-¶Eu€S¹^?_¢qÌÝåYï‘Ì£ÓEðè³µ»VPamõC¾r0BWèá:-MÑ·7  ÚM- hpÿZ6BAÏ™IµµZ±g¬Sª'¤ ª8ýM…ú@†z–݆Sô¿ªø'KÊ‚œo{òÈ?³‚r,É YÄõÉÉa£™Â+î$$J·˜‚·ç!+>—ˆúÞ6%VžIîWy¤ ÕXÆYô ³ j"Þ‡Ë#òø‘ðè²K`øÚ‡¯ÛmLµ‹Þ~'®Ó]{ô¨oÅÐ,÷§YùóÖ°qCûM+¥2BtŠŠ£lØížB£¯Š·Ò sÖ¿Q”¨jïÔ6 Ê!Œe<×^Ô$±yM• äÞÖíÓõÔ&Æ5HÔYSuú³ÿüšŒ#ƒ E‰a¶5øÍ¤~ÝPþøp¦Ô¸WsßJ_<,ñV%Ë`}lFfà„NȽ•ùJj¥µ©"Pj¿’´½¦Dæjïz,‰ƒÀ7%ÁŸÎ2ŽØ„Ûz¥4°ø…Ç`3_ *Í—AsßrÀ³XlÈŒ{Qz‚6&¿¾UÐO&jÄ]†µÊGìçÊ»*PÚ{×–£YŒÏG‰8ró†å8 æ‡ØG,‹eÜã,qbaTˆÚ0¼Ë “[íõÜIM\ú¿k_ÉPÐö7N !ÛzÒ\»‹±ËŽV‡(·†‡æþÆÕ-¿ŸV¡¶øo¿úFÊ_H+]Õ¦lÇêW*ñ}@ ž¼¢~²Ôq à½æëggî©ÒuûèxBÙÒÏRúZùÇNº«~k¼VÞæä›×+ ŸZ)¬ÙŽQVrùnÊ`º^Uï”`s z‚:‚kŠ=íÈÀ9Kt» 5vyà!žç­mk®xý­¿Ã  ËóÛ$'Y+…Nìäg1wö9k&æC=ç[°ö‡ŒDývfjت©Q¨~Æ£ÄÞ"xïT·¦³’"þ"¿(/bÚCC1g$ÐoÒ;/“x@ oŸ|1èÀÎWáÔ)yÚt·'ÈØ[Ê“;ÃÛ ߉’ØöÃ(2Îý†¤^Oãµ&ýc«1ÊüK†ªË˜Z‹SÄñ‘"Á8ô;¸ŽâXú¯ ­§ŸQ¼ÎÀ½‰™ÔoPã«ÊÝ•wT«yeÇpƒ«€ðO¡ ³^á•ìÿqo:÷ÞÃNâ—ÆœšØG¼g“p™µÈÉ$ᆜŽQp1) ïG» Jè—b|gš¹En&c䞎tN~äo¹g&o'‘á5ü°•шÒEœ`d¥§6õ–bl$š¿)½Ç ”-:>×$äm›ÚôîsÁ-ÑsJ>Úc‘/¿žd†mwí³V,¶/·ØWˆƒá>PÕÊï€Vyù]oûÏmæïCBÅï*ʈÑïäA‡Õìæþ½žûìÔ„³ÊøÉ,RéÞ&ƒ¾.•i¨’\F¶5q yzL™‰9G¢{R¾Q®¬$P”§¨Å¢1:ké-xVÓ_íÉe­ôø™™2tå”õv!Þ¡ßkeÀ‰ãŠí瀕æd¸)ÊYkH¿#&`—Óø™åç*Ë¿€ÆkÞwÓpTµî;jùÏ7ÒŒ¿äv¨È¥R”2ì-‰_ígHÉC;BškøNÇÅúîƒ –tðP³<`²—0½A2Áû Wy4ö¬öDà\ðRº"¾nþÅ2\ètHµÂ1DС4¼yo¦{PÙ·ñDÇÜ«¼Î¥WCåJp¤„»â•Tƒ‹uKcÐø…fL_Z½h€ØøÛÐãr.m(J{Ö ˆ÷A.Î ™¶—/e‚žÆÈC…SÄו„hux}yqêéÅÕ†%·$ÈP›Ÿüuâ’¬øö°ziƒÈvG·ŒTíoå7ê4óöG{–¼Ü‰£nwàÊ~ëqÎ,†Ú÷h Oãƒï9ß)&]Q´ž„ï3t°sI¦ñ±ŸQÈ­ Mz²4JÝ©[§À0ü²øÒ^ âDDLɉO«®4Çv›>¹š™utŒµèo“›òê®°ì@«›P=Êìërßy¾ô(+Z¼úûîb'YÕK+ÖŠC‘&óý›·ÝF«üK˜OhzÎ#vëÛÌCÏT Ù/I~¥¤G®§¦W>öI±OÀ½þXBzál”4—déÚò·pJ~ŒÍ%¢ðÇÎ?xxð7uü‰ýiHEm%œ„ãùöBmYPû9*í~ŒK Ìèœ?é‰Úpì±öLH7Hivl£Ÿm›õaQ-e^6ŠLÁù)g–Ií¯èµ ªº;mV¶ÛZ©ÁQhav-}Û2Zgô/Fë3—÷iNª€¥ÀŒõƒvœïnz§›÷9a­À~ÒyTA£>Ådr.©ƒË’÷Î×°¬ö4 ž¦ˆ&Ôx¼%Û`#}/‡–¶·–ܱ³Ár©¢Ž” {Ь ´O-ó#?¶Åë+J#B•¥ ð"m“Éð¿Ý†˜SÁ%Î|©[Ý¥GD,ë N›*’º§„M[”ƒ—X“JÐèˆÈÎȳG~t&tÉïG“‰BY©6ÜÖ©îÔŸpÙmÜz~îÝþÈ(\m¯? ·eŸð"λZ,qh›;¥­¾gpît&O]g‡ÙÀþ`ò†XG—cÕC“/ãî!µÎÒÌqÈYln(·„<9>’öP³%È•Ç{î{iA¤{ D»S¡8•aJ™çeé\¸í÷û•»_]Ú‚” Íõ”„_íϮҸÔ/¤þ• ü ÖUGšø’¶+‹ZÏú©ó­ÒYY°¢–²¡µCƒ­Ç¬ äeøA( ExîìfazÚï„uæ]$÷ÑŒˆ÷§:¦Šóúû5”y Žiîáh ô&_qIg©3Ñf.ë,=r8­/l|JÀhÁG#z¤‘©|ìÙMNëeçãG±¶Ã;^ŽA¤ '2LJ—­f3ÞFò‹¼è‡h6‘{XJz×é%6qJ”âìOD¹KøH´Ø–vO¶/¢FÝ`÷YPé†ATpö”7ŽUƒß®çsemƒ)6òC{I}¯¬£rx$û¯ÀL…ÇýéYèIÚžI÷°’ˆMqíéÅ+³Ÿ‡ÀÆAi«ÝýÿÕK–5jSë…+$ìܽýÉW4<ß98ÊJ3;M™S?\•‚Êv•0ƸÉq½UËU‘“bAõó ã*É„|8§²ŸÌožDõþˆ¼³]m¿¨DóˆçL'kÅš+Õ­gºù½0C+Úƒî[ûÍÜχ³Ù ƒf>Êa’ dÓ>»Ã"%zÙRÎK¥ð,ˆùšúj›Ê”¹q³…WÛä# 9×ÑŸ¦Sdã铆ºÕþqëyG¯W®oH-Ë2\NåE×­õ-^µÆ&îm%ÞçøØŸø©²¨^Ü«4VL´w^¨•‡ª¾[ÅÓ!mi}³I^vÑGµõÚn¨ì­Â¬Wź=Ê)6/•C WX òÒü×PvZ›'ŒE,~pdѳ¬+M7 5ˆÎõÓ~¨æ¥h`Y[ŽBTŒ§ùÁoiý!ƒU5Gî2hª¦Ûm±{– Ʀµç^­ê@Ô âûòA§}ÿœ ¼øê-{ñ”çA9CÿeYæ]”ì'ÒoìgG³(àLþô9‹pb´,ˆÜà„Fd7­˜£ˆ$þÂX¢Ö$HIY'o¢í”E2eFÕb;­«<ƒ‰aí›Jöë¼Á=&±?ÈFòúòBY¸ùöJºXÙ~Y›âied´óÛi 0Á¸-çâ©8Ÿ‘ž›Ë¸Œ+ËmËVx5:•åäŒÏ™ÑdÕþbËFýeÇ ¿#ÒD'‹…-TÁ“dð]†øÈLZ¹Ú‚n¼¢)‰·Õs$ø3¤Z¤™J-$eEhÒt)>üØ9 èä±Ý0Ú»ÞâŒ$­ah5»óZD/!àýºD3ÉÊ¢yÿY HËäñUˆ+:AdUìä«™±òS½ˆý‘rÓc: ·®ê‡X÷¶º[Uã eþ½´Ví´|"ƈA …‚e›º =!$Í‚ÕÌ,. º·‹´×êˆù7«§ŽtOºHÓ”8“Ãrè¡nýõŽ©®q ๕™ô ^SIE7RØã ’sëÊvÕq@µœ ´àHäÄï\YËB\3½‘Ì/;ëG¿~ëìxܺê+˜Âuñ8);ßïÊ!SÐ!Äéäç €o‚ڙׂnMʵRµèb´™Å%‹ŒW7£3ˆ…gAüÄßicˆ´ƒ]4xϪÖ²ÃqÕ‰¹€/c}ôï g °v÷NòAüA®ê¢ n¼B°ý¾âŒR\îi'¢‚@J¼hVêSœu7î‚ÝoVçË•bÖ®­˜vÚyÑ*x ©gE ÑoÉ®UùèHzòêê F£¢L[-€5ëÔDI¸R„˜¡ H­qOšûö\ÓT®i{C ðªŒ[Ràä›&6KË茶 ÅÔÇœ®ÞcUâù¶ûü¯q)é:ïïùäý–,¼^ú|œñXVù¦¶‡°rqôàApñë‚l8sìU>{×é²Ëß¿þ葞¿>x”1¿Ï8Ë¥þBL ¢ÆXrBì^,ï\e¿$Àê“c*Äl€þQ\SÞ~-f¾¬|ùÄ „ýò"L*1LøÏU ƒ"Ð’;,€8á)¼G#c,÷ §6)õ´{ú9'›¿.¸úVÁ£K®q¢§os)+9P$ÙçÍðPv–µ#„—f4Ðíezôê¨;ÜöO‘¥ézzÄiÕöïÚÕ±7Õ§KÅØ~ûÑ~ý±ÕIZV#‡ô[º4²žf1d»¦ïÔL{<ð*tß×+Xì`3ìLðÎ^ ÆšµVhAX±ö…Ù¾¨>/±£2Nv˜÷EýxOcnÚôŠê´´øà”Õhæ|“ó ;•ìœ'* :Š"Êc]|' ]Ìd› .ÒŠ:ˆÉX޶e$¿¾ËJ4ƒZlâŽó˜¦¢ò-2"#ëøŸž HqïJê-è4”ôÖ§¼ñŸÔ,3¨Ÿ°¬àÛ/":øÇ®3·ÉÛеÁäGÿ_Ô$ÿ#v6!D¿™a `5aD¹ø _¥Qâ®ó¾“Ñ­ò£…¨=•w$5‘‡ÁÆP§ó=ó€ §¡ KÔṌgu›°vc¨ööZg)°¸¸¨4±h½$¥•”ެÐêúÕW›ºl:'=¹^¦W„Ïû®o?SšûÐnÂC¼ ìBÆ«Fúªjd­×«kÃL^\„b`Ióp9{qº„¯¾¥ÖT×0xÊ&;€ìñŽ™¿;<©Q;7lˆ¦H›dmƵ¨vYàºïÝXÝš,®„Àû°"æKÓ”þÄ„‘ÞÍm¨|Ö«®²ìc®.‰sx‹õe|jŒl[ß§œ¾Ó±;Ãr/4B$@hæ ÷zÉ'Ô>Ñ~ —Öš¾b^VùJºn½³ùe7‡u-­Ð“?ùÆjé ö€Qƒy:ªb›çn1~@ * ¡fnáY0÷Řw«Š!˜#¿Z"ûwãÈî­åDtøBŒ«â—iiÏ'¥·DW¨kÇvÏr°ZüŠm\ë¦^?ÔÅ»¬¹‹CcÅ*ׯ†°ŽÅëuV¸Ö(-b¯‡¬ ýØ€Ö¡$<£íoc¹ ƒÁ;mïCt~‡ò¸åXŸç× õ»Uš.«I5~‡G¾àõœ°¤»0âé ¢dЦ©ã0\c½øœI¦ÈêàW;ež0I¦ö]²[ßÿF‚ÿNõ£»F¢g{¶Éü£í ¤2IñOužW¾—?úEP]ì„ïe{ëþoEœ(mH™KÊ·`ìvúñìiפs»Œ€£jd^Cƒ%–·ËˆàÚÿ—–¶\”!ò»ËKÖP,Ê,¤ Ú/îNÜÕvÊdºÂÐ&ÃsŠk³­U%Œ ˆžb¹{Ñdc;àÎJ¸KÛûè—7Îp<òew†‚ŒrX+ñ‘|i;^ðuÎýnðE11Õ•aßM6ÂÚT’n¦±_)·1(–0T•yJ®øâW¹PDˇÜ|vyT•šÍçªJ®î1cy\ÜM¡3¶„ñTýìõÇldˆj¶ÕñuíE{@8ëMYÛ2Á-»ÞÚ³ÒÖfkp§ÑÇuß{æðNm­^x©Üg(ì|1½4…6ÿc@dDUIÐò€‹„JRúi•;µÖ{ú&³Aj”‚ÿ¤]ŠÒ™ý=¬aa4;rÍÄÚv&¤XP‹Ç< XàùÁDúÀª0ïÜ8ùË!,á!­jʧ{ Z¬„¤†Q{Òe°›‡ß‰p]òëÐŽ7 UˆÇIàö×ÝŠº&ÔŒ>ªÃWES$¥rÂv0²šÊ™üþ¯àTƒš“ÎØÁ8t«:ƪk¸eE =…Ðæ…fðµ]yîz¢£Ó1­˜CìI•ˆ4F/°´›í:`›î6 ƒ§~Å£®‡~rè®?²(I@mô¡õ‡œiX¨-Óô²à‘ÖýORÔXŒåÞïê󹿉žò½’Áüý¡´ˆ´?¤]áFi×t¬õvXõœ%æ`OñÔs5™pË#߈~3ŽqóÙ±€ÂâÝàÓöãà¶úœWˆŠC¯ÚÝPb#” •ñž× ø¢íÔ•Ÿoñ¨õ¾=ä›6ÿ°Ü¿˜%±©”‰Ç9±‹Ty3Ã`†"Jħ;ßb2¿dðÃ2p…Š€V¦?ï§åéAàœ°Vm2ÕóÍ“áµ97Òßi eKh–ÐÛô¦h¤¶¤ð­b¶õÌvhÇöèüíK‹w¾0DˆŒ¤ÁZ7dn¤SuÇnþ^‚rU°(—¥>æþ Âõ§áa½Èã4a§œNÈÇ«„yª >a^ýÆúÎëq[~_´íº˜R´¬#ÄÁ†Ý ñìKû¥4·aóâÿ|-¿Ä˜šº%oyˆä•uzÄ/¥½£QêœÂÊêbROjWáËwB‘·ºž¡Ø_I$–†ÍÊÃ"K ¤)¥ëúuÍUœt‡gdZA£‹Ldfôð÷K(| ´•ЂÑd]Ê^üï:iÍјz1´ˆõ]o¬°_H’݉Q·ÅÙ cÏ:\ÕáÜ:÷„ihèEËd?l¿êÖE™³ã‰ ÷:e¢°™Z]EwX²eÉ£îªr@{õMçG\Ô)ú<¾ ¦¹Z1¡ÿ AÞ}¤»ÍèÖÌ}£l7`¹×ÃF$_Lþ(©È 3d ̪>Þü[S‡wZRG .¨x·4ê„I¡ItKºÓÎCò›‰§/™@z£5ušx¹Zܰ%n” X) •‰F:L:6’m›sp³ºbuFT²Y³É÷ˆ˜Rù­¶€HhÚb˜ÀWxq%z”-¦hÃ$®ôѰÚî_-èeCògv/Ê?1ц¶V¶›ÀU[¤è–-U×±+Ôïh¼Q.‰ckë)ÍÅ!Aq#רXÏz¼[²8­_²âF·c€ zÓí,j9bu"ײÃÉ-#wâ©¡€¦{I…Ë9Ç*•Í.Yæ@æól=8Š£? '{L÷Ò¹Ž|bæþr®´„VGJ$¥]@[¯) ‘X3K ò)Rª»ÁäÊ›½º|ËhpÃþYäFº›pKþâeˆÀ³v2›£/ݶqjÑÛ\Öíh `[rp"×½q%Úˆòõ@™d2»× áYÊô»W ²˜×ÆEØxg#mÀÇÊPÙ€P«ÿùÙf·ºípÆØXõFä9ÂßõAÖ|òV}'à ¢à•E„æEö˜ëÜ¡x<ÀðoE{"ïH\Ž2øT>ò¦# hNüµ©wž¥²Ÿ¨Ýáò0Ƭf¼«|òœÊ¦LÞ(át9'}áK?q•^Áeb—”Ž¿H}Vx€¼tN¨]U”bœŸe0œvᢷ^ô ÂÒW=¦m¦ýò@WµÉR×ÖÿF£™qü§|éËê’ˆ@÷ÙxÄ&ò½DÒyb,-°}’¶„ÕÂ¥]”ú-µ°Ù–¸üýÕ¡î,iV~÷¢}õ»ŽyLKé$H@CGµÀÞ¢Ginø0ßPjOÊÞW¾ÔGn*ÇѦ Ú¼-²çøÄŰOöÏ*?ßÁ[r&ª`¶IÜÙÔÛÜí×Ë›H|Ab†7^D¼âäOÛ—Õ\Æ>))¡]íƒéô™‰‹/©iÌ-Ò±­D¤Í6‹¼iÜóí©É¤Ä匋1¬èB¾‰/¾øgd:ƒs÷/ãpTJ¤âÆMP ·kŸ;¥Œ-ð<¥*cà\xTˆ& Ð¥§òÅazÓ¸MIÅývj Àç碻3—°­c âù¾¯ã‘ÈÞ¿·Zï¿b;%¸Íc²í0A¦+UÛ#Ëx³Ôv†Uª®²û’).Au€NGÐ{¬ûÓ„¦}ì¡(7ç»s³,{† ÁãX™^Ql ©Ý»ãšÍ×ív˜ På͵ê.….”É Ï+¥Õa¬PŸ£G\±1Û9àf¦_?P¹½pÿp*ø™E¦=ƒÙ&錺ÔálP`ØòeE\ DB Í`LÞýdzh>ß…}ƒA½ÍîƒR¦’sˆ”<ïb1]mÆ«¶ðøR¬1:vþÏE{¼ªꜙkBfgðŸ‰N¸»ý¶¹_ ~¾{ŒWÁ¤×d2.:0aL@švøm–i/veI@r6Îú9sSàS2Láù6QG&:gÒfb&ÅJ×][öT™׈ñ2ÿê fÖ¸rÓ÷7B)Eã˜d*±3* ¾ÒÇdÔ2Áˆ¶ì2„ÁA¼Ü1õ»§’ro!“QÅ5â¤îå(ªgÖ†F‘yГ 7áüxPžnälàóâRŸ!ʵè½0iÍ:æoÒÑ2xɲÚö›7D±Ë׺qj§³gô×ÇÀªÅa…Ë¡…ªŸ=2vÎæçÍãì.ð=øË@H@«œn†3G”zÄ%×½jùÜ„•º Kuä‹Wj½Ý™ï¥)1Õ’¡øœI9^BZ$‚ŸÁ‹œ¾ÌSŠ.¡¥~×Àï’®OÝSæðÃíÿÌ”´&;Kºº\/øÐ C~Ì`h$Zœà_¹“tŠ'^¬ ×¾6aî‘DeüÊ\ÔN¶Uð6=‰8òæyØRNÙŠü^_²d»ˆÅÏô$j|—¿¸#e }Ûû]n¦òŒØô®(6ã)w Ð)7Ï%õEÍgbtÖW¨­Ì(5{§9ç1xôŠNýž%fºš­m›z2,Å×5·…Yÿéå¡Úñ"}£pËã »L0‡_d,hÏ‹[šãÐd‹ØþM-†^ÁðÎÅ€OXÔWIþ·>ŠÛ¬B¦.ø³vIÞà›'ï S¼í=’…‡·…Ã)ÏÛ^+ÈD&ëqT8 JQzªË‡ÿ`{%e¤~°}°2]Lw®²·mà3@ÛW/Kê ~ÜÚŸ?@ƒ£[ã(QüÅ!'©ÔÕäÎ9û,¦BHQÛbq"Êcñ´³ý)'»fE(ú©ïvo\åÍ_I s';êÄ•Q[žÑUî±ôVÛ¬ÅóS«:f 25p\@ïG;¾8Bž¥Ft`‚šêTw[~‚>‹ZLÉù¥½D+Û9ÊŸOejíÜh™rÔ˜µš¢ŠÒÌ&qƒYs­ ¸·?|Rè­íÇCH>&ºÊôy«‰l)¿&ÉœÅRyç̉-ZÔõ§/äÉ€"¸R#E&j, ¼êB+WI1Ä$Üú±eKe&೯-Ïé^ñ;ߨih¶“¦´y耽¯ø8&9Œ$çµêÕ¨9D¾G]®’nSÉR‚ºì) 61®¶™x'W,fªÓTlfx Y¹˜·i© ¿¯Tc±R„¬ @ªh”X¦9É 1pŠsÿGeÝâ¤Ùš×ÖÁ » Ö¸}7ªs§ýäÀ" ¾h÷Ù~³DfmÂ?™LTÝ»»®®×ÉÖÉUÓ*d¶&Û ú§ï{õ^¹»š¡i¯ç$®‘] Y"Pã¸}ê§Jb¸€hM?yšæªÈ²·QûÎØeÕ‹¥uÏH2xáQí>`S 瘊zPDÁ2_ÈùÄ‘sd§À]Ö3òŒÆ׆3s}?‡xÎã„ò ¬ à‚Å¤Ñø_Ä}Å­Î(ĸpÁGpýß”Wý!¸Þe3O|ÄVÄÐiŒ2¢¡©Y¿Í.P¿‡ç†½l5·æñBýüÖ]gG)³8{ox÷µXï|cY3ƒvs—æ&‘+!;›[?z†"VrñŽ{h¥¤Q[iÖ¿…Ì,[í55Ø ¥ødL€"æä/¾sv=‹¶ °õÙ„cªp…ˆƒœNX¸Y”?rù1‚öYœÌÝ{˜xÓ[UçöhâŸ~Œt³êK‡›ŸóÜ¿™š½ŠèF‰R'$ö,‡ä×ï»u] l óê.Wù/ßȨÜD‰ÇÐ*ë;ûÏÍ^äõì»J1Â(Ù4Yõ¦ ¿>Žÿ…¥¡Ô³ÚHZ3÷¤- €Q {–X¸WÌ3Áºƒ]ssú¤´ìÇʹô–û…K®í‘ÎyMdx+hÊÆ†5pôE)½à,⊠xÒô†æÊ´ÿ1Ô"¡=OG6Ql-‘ºðN¿x™F!XI­3¬ý* ¿-Âóãõ85s¯™‹ (òÓ¥µó;¼î£µ¬:f[>ÁhzÑf¦A€Ó™ÿ™›±°j(P²—¼4Z+ߨÍÍç;^ã"ê¸x֒ñýqå¶[¿ž ™ý S·°Ÿ£Êu€P-ñ¾¯•qŒæSaIÝ£Nq®·6A ÒÉGÝÚíq­ yðžR\Y¹Í€0,wX°?ö‚Am%+¤ ¿^¦o€“}F§Ëò6¨ -¹ýfÄ«7óü ºöø¹i8Rþ!8Øô?‘»õîX^…â©” –èÓžEÆèIŽ@ÕæXÖ, 8š¯(|ŒR®i©0ð8_PjmiñÆ k{®ï8ÊD§íŒ•#ºÒ?ݦ5iCqÞ3'& Mi¦(AÞ½æGæÜYçàÌMγz­BŽæsy ÊýRXÃ"’»ý<¸‹ÊBP]â9y—‚$ô@²ÅVïA•Sÿ?ÆnÈ5 ’x«¬1$rpvì & gNe²t%-gÊšìŒ"_Ö\1%ç>È}ʨXEaqKÍ”J4É8ŸqN-Ŧy½iñh‰3’„½E£á"Šé¾ËºqîEO5³Ò38饢‘ož§ð®í,œ²íüŽFµÄzLnñæÿg ôÖ[+[$áf4¦P„mgÒÄÕÕ'^JšÑ=ïÖ¢˜mõ ƒ³€.ºôY:ñ„Á˜0C+m0:¬:ï×B¸¡5“áq²6ëKéÓ$Pß æÉœ‡E0ÐÆÊ^Öx…ê}§!¶¨·ËqF*×0g†ˆP—ª&Þœ²WUà8©Z¢ûûÈd¦gÖ9I~Üÿs¥¨â¼¨©Ù::âu÷sµ]ÜØ ~o3¢íÿÿã‘å‚å0™óÓ=ðš¤Èì`>Ä"l5.S4²íç:Ú@Þ ®ÐÆÒôœC*™¡\„x°‹_~Úå>¤Bür„œ³À¦ºò± |?˜ "ƒ4Ìæ«æ)‡;ã2ÅÁBµÒ™lÌ~zzHH˜üßåÕ'ÉZ™ÁRZ_Çç²L×n_ äI]A“M’^WéQ~Sß}A=…¢¬8¾Œ„L´ý´‰xe}T@Ùˆp{•];G#hNôþ9_§†/\0r.À0ö#Ì|'ˆoœ¡°lÆ“ 1È3g#-üÈÞ®L7cè iúe :¼F¸žÂ2›Èeh·Ø‚˜hr$:Á³T ‡µg»%q~¤e»Àù¹¸1•¡v”Ô½ Ï1TÞùþ :?t‘`?˯ ÿ…š‚¦sê#±-QZNÀ>.ÚJ—‘V¨à?$ˆou~­ ¸þ§:ït¢ xÐûY­-Û{Â)~.²î{2|õ—5“+.&X–,§@X€GýÄEŠÖ{­«Cì‡ÖÂýyˆE~kÁ¯š»Ëeyw•ØwÙyÒ5©o¢ìPíbWÛªhns|_þr>v-™yþ«%fBèðAW¾uNˆHh(e/n·íÿü‹¦NʇzÉÐÝZÆ™lÔê/²½xÒ²i:ÊD0%lMV~M”&4ò¯F¦sìæ}ë}êá…N'Åœ„,N‹åé·ÁÛÖß!ƒÎ¼v­÷¼§|ƒ›·é`ªàÀG¢¹õv v«¢…!›î_0P^<°,±Ïÿ´cmú6–x4.16º/ĬUh ¤-åëq’Ÿÿ Ù²l¢MK h~š]·˜.Õh^|gÕ|"¥o7¦³U™JVöR!|Χš{%õÑŠ Ëàx=Ìþâð3þ–Jo?DÞ`ˆ­‰±gó(ê(AŠÓ.8à_ýðDC@þ³ÄrÎá´§ùüpq I»â%ÍÚ©%§Á(c¬=HeŒ)<‡ îʵ©ÙþÀÉ\¶}òæì —:FîY‹Sñ·ù£Éi!¢xî^gûVʽ+.2Ö Q¦­Ñ’8Ž~Á%ˆ82i ¯žÊÎ?({ˆ‡°µ 2%%7_Åýr,ñUr»pr0oUì8›™5å[O‡!Ü€t.é2CͬºáWWt;2Z0êjkW-Ì7–ùv Ø5¥5{뮀¶ #NSXGD‡Väÿ=Š‘îPK¼>ŸÆìY`Ï륬í™õö±!ˆ’ÅŒ#ŽEôdÙ¯[̤òŒž~‘^ຳ¤Méyx¾0l„â)0À'¦®Ë7ØkÚ;C;›+ŒãGuj÷«·å#l-N¾¸4£l¡`-6°ßÑ\,âõ䋉ÈýüMBºbÄy~¾à‰?VQÜxPsÀž§7Ó¸¾ê5¨q`éóõáa:”¶·…ÎþúÏñPaoÁ§] e#xEg^¢ÀÜè ’Ç]µõ“yMæ-]u8IuUDž&w‘ª¥¢bÐeX‰“O7ŠªÑïxåPïÂÔí™3f4éx¶3l ­U£`g§c¬ ëÚ'=]Pšô쮈17F~ºó‹ë㟸æN¿k£–´÷:ý¼°ó®ô™kx­¿L§^[pî–°*tU“Í¢Æ'Î$…ã†oºŒÓ«<ªN´ÔpAá€ýl'I±EC×âré`eä+`9}NâA~ùŒY¼ú_³†Ði—²!žÞâ‹r¡´¼¬íá»í¯RÐksY8ïVÜ}€Ëd"4ßk˜º¼Ë7oA"P·ƒà@cuûèú†­¨>6¹ è…e3h»#œ z` Ÿ¦|Ãd†ñXúT†6 lŠÉäï°ìG>\Bé‹’㪙è¢ta‡’õ5ePÒ˜ò Vgn_–o´m8ñd¸ Õë»6ÿ׊Ñd¼¶¢ÕÀ‰ˆ­ž é„yš®Ažw*— i•ß/òÉ­40³ÑxÀè wè¹s8€ÓÌØ ×ó ™1€n["nLׄ¹YèØ‘¾·¾Ñ<`N±t<檡ֹm’»å×~ÅÄä®UDà+ºôî/XÜÇE«ÚŽÕ˜£`qŽë›µÈ1ˆäUr× £7ÝFo_Åwê³<@SÚÃvž3Y¹æ#~ èˆûj-ŒR7ó‹Õ± V ,æK~qü‘óÝžjU­bXžl~Ç•üç6Èå²¼mHXKÞÕþV=}c9*Y˜ZMPaC:}J¹ÛŠÄø×U-=Ι­Rð».†íê†L…ÿrMhÉb?@o+ÑÛ7- <:^Ø!Ìþ@ñOwöt‚] û°j~b9•ôª/„É[ r°?àèlyáßÜ XnÓé.u©µÛÄÅÏZ«t &£ë¬ Ààb9( G>ËÍ ÿ°…§hM›’€©ŸF2©Z’LÂcyÔM €Ï¼ûî3û&aH7«!P‹ÔmÚ¼­–s}+,:ÁšØvF^¦i#L“]夋<…eJפRðL4DI~‰tD HwŽ® w]ÛHÖ+Àà»j:Ó˜R›+K¼¬QSÉ„ ÛÐ32®6ïîÚP‰3­ÇU¨vå^,¢­êˆN<‡LÈJRôQOýÆh¶Àž–Ûîúe¿«³Œ¤‰“Ρì4úû_4uY›ÍäÞE(ÏÊ0µ<ÚÄh–±y{üÞ‹n`B¿‰·z¡}%ù©²ixŸ`¡ƒÊ=lrsò”ïV€ê_ªÌ¯Ã%´Ú}Òë¡?Ö¿eŒC}r;{º}éÃŽß/1ñÿoüó‘onbgaà‹ŒÊ-cxö[À¤õ¾ÃQºsä 1tö+†3i´ˆ‚. ÌoÍñtƯüÒØËå.ê*œ\Ç;:ò_´©îÈ_ZþJ éAßD!?çCô³D¿¿½ 4,Çykw»-¥¤[…Å'=tï±:T }R%³™[]Ö,ÖêØ¯Fô#ÙvÊ﨟‚§ý LüS‚´Iœîæ¼)Ö9ÇŽ™ázðûNv<ägVzÊW‹€4Îçf•¿ ª¦–«Vaqµ¸²îÿvÇŠƒ­Db¥$^lËGï§n²ž²Ž¡š—»x£…2\0}ÀÄulz"Ôëx…—šЃ^×™ÃYEy_r<ý0q‹ÞTkr—D¡ªë"`f:uÚ[ÙI׬¸Ú/ÿ—Éh¤¢ýâ~z¡FÛq[yÓg"ÖòƒA_ ñíº>Çéõ£¿Àëœ0š<ä\jµh»ÃœDxæò.\EÙeYÆ—®g+éŠm–§q–ÜkÍN<7÷©è óÉDQb„£¼o$èEÓn…¦Ò t~­È³]t@œ²Äh‰ac©•ccxñ³hâÔm,†i[ÍÀx7-ëL·«Ýe¬ðÅò…&»Žçríñ?§“°w¸Û…ç3«ìoô^·¿†lçj¡ŸßhˆPdõ¹ZÃpªªf‚Íd‰x|n¦1P0¿R÷âM)SÆ@©¢vˆÌVÌêXÜV»Âbbê}ŒâŠ2öbJ˜WßI¤‹„†g_í6!=íÑÏtÆfžÇ¬°ÈMåÞù™­ŠyIQËå» ç„H®@K•|ª™ñç*Ì_(º®=çjÒµiiþïùïv‡s+îusÙ\¤]:%d nühëÂüxÈû·p.U3U›ÖÈzÉUH«¦¼{çwuþð=‘‡æ´j û¿í¦ë1m¥îL‘ !·z¸§Ýkü)¨ÞÈØ–»´©!cxkùÕ|ˆÝ9Gµoö’(åJ+x{!õ°äQ=æühÄ„æ"é(¬æ){_E7 B¨pn|ŠE/x-²7ž¸t¥3Þ·t •â†9jðô£‘"t¹s}1›eóý$þ ÊšÆ'Úس+ÐHm/÷2]¤VuànœóŽZ«›O^ââ6%:¦{°:'œ‘4½÷­:+ ÕÉUÏŠ:<’ õ ךjÍói£е(?ÐXZDü>œ‹c즛iÔ«¿ò¸Z:ÎŒý*Èšzà}B S¯¿ÂfŒ(p3ÛdñÁä ÷,Ë5=ñCÑy‡4û‘–¯t/x²dÌÐ$~YXì–|„áþ]g˜ÔŽ+”¼ïô+B¤‚‰Æ<­aÜÑÅô¥^*òW£ ÊKÝOhÛøË½‹Ò$>ص¸ ÓŸ3üIøÁSvêéØ5«›§`ª¡P\ödmÿaô:™Ž‘W%e8ù+4ímòL<Šzââ`¬$8”±K{8÷,Ú Ój,©äxh>1DD¿êjj=†w ¤n©ÑÙ½ ’ìPD:ë%~x€®ßQÏg†ôU5ýL·öOÅíPäp4:ÇãV¿`c6K]´ðJ{íB–×Ýâ|ÁjÆKX¡™¿`¢í€ŽÛÑY£v¢ìñXÆ¿h¼×ê-ïA2½HXP¿Ø2üÍ­Ö5ØB+ÃÇ[,Ü.+p²hº$Nã.,#~+!¦¤ì,V›ËÚÈEYŠ©•Áõš áØSé›·ú ûr³Å¦&ÝGÏñǃ$ gU*ø‹ú#цAHH–&ƒ©E‹’(në2ñÐirž!~üº­þl&MiyAõÐP wgpͯÃBÒfÁ ‰Žž¤]úâõ"Óê¦î:0_#tcÈW¤áð2ÛUÖÛsǃ:áë?^u.‘/’[]I‡ª­x–:‰ƒ:j·ÌKŽWf"÷ÆÛ{‚v«²Y JMT*$žy¡ºBÈxÑph¨²Ý ÀÿÜ…VÒC=C0A<Ä+~4Sk ²»ßå›%Ðg÷t¦Ø²ôO?®Ç3ºã[ßÜB­þ™*+ïO?)£¬Y¡ß§}¸Ùï\†ZßE×Ü‘‰Űƒ#!iÒžoˆê=¸ûÚj8‡)VÜ#œó椔á;תMؾ‡dJ hå²Sç{Ô¨œ ýùLÇïP·í7þõíÊ¡’¦pù³¯ùØ÷("FÇ~)ë~§°h—* †é…±§_ é2#`¬?i0Q^7dÚïC¹¼á­ºåûKñ‚Èî‹…0,èR=Á:K£è$‚'ª¾‡iÇ—l™¸z[èqdÈ=?Ö 17šAŽŽ/S¾R9{§'q¥ ao èÞâ« ìÇu| ±áÖZf,bð¢ÂäSY¤A³;XH²þƃ¢Íq¶„u÷à!‹ZM…¾×½­Œ·PXdÔK¹dU_œý¼R1°7ßsŸŸMÚç¾¼%#¨¥Z𓥈wSFáå+ÔÆL‘ÒY´÷Í®ê—zÛhúÎgùbå½–M­Ÿˆ&€n݆NéÍõÃàÕm8v"o™³78‡ÎÔöÅV®ðþhyŸ©À‹ªvC¤’þŸÝQUñ+d2øLpx:ýãŰü¶Y¬K}j§_i ÛSíP.zfÿ.T™Á˜ºÌˆ{ãM•‡Qþ+2©%ÜbhÆú[™µÞ[ŸWÏQyÈJaJ4BÍtÖ¥Ü&kˆÆ4¬Gd¬“v 2Ÿ­¡s"¹bŒð )MøN‹4r®Kr>;÷#©}vâÝÔµŒ¼#äû›…eº¾[k çë²0”ïƒéùÕ‡d¦²¥b@ˆu˜WU®[·Zþ ý"ý)E‚µMÙŒ®ÿÜ9µÈDØ3Ò*zûçøc¯Ú6Œ##–kÎ Ôm×Ò}ñE‹ÐN§Ô¡ß^K¤Ö7®*¯@ÂÀÏ5]*‹¾ý—è°¡ÝÉtøF­¶ëR g iñÎoè"—XW_³$cΔŽ DqüfÛeƒ¼ÏͪÌjqê'©‹îJÝ‘oìn­l:øË²vi - ÿ&Vf<Û‰ñZ#%G2×™G.)ùˆß±jõxušG-D FêYšKŒ‹GÁ’Çwõow_ψbíZ½2¶NvòUºÂ› »Ü*»Ã&|£ÐÙSž4FÁ>*º‚Âk£ß»#§ô²þŽt·p ¢[Li³©MÔ4}oÏq+íþ6²Ç{[ØÞ?³³×9ÃU¿iÙfø¯Wü‹—¢U(Í°Ž¥$s‹=³©–@’œ¥x,îø¨¦HdkÁep Ó]´üË?{íbìú°BQ:æÅ—†Œ©B|I<×ÛµÒxôàÞôÀŠg½•÷/{Q>!Qí±øØë¯%'›¡`MÓcd ÓÜ BÈŒM&Û‰žO€.Á½ÎÂè"ä`/…ýéSž8Ø@xl°¦1RšÅjãmð¦Þ‘°«nûSÂluQŸDYeˆùêí7^{%ç´{ÒQYJy”ÞQÙAxÝñóZLkŒ„ p¶8emì,½~ÞPgsrƒõÔ²¬Z`“nR§œb D x!Mš$}ø„‡1\_{r¿êØd6°[ÆÊ$(ÝV˜;‘ƒr=³)¤n«ª§!SåUÈUg"&rˆŠ>(ˆÄ¶µÀE6µøÞ݆Ït_Jìš]Sϸµß1ãÈ€ÄÞ1ÓœÔÝŠÔ•wÕãðݲ뾼ù¾‰ûöÛ²ë/¤¬wPGw/ºŠvÒëHÿKÅñίJm«& •~ÿ% DGýñ-$ta/[XÎ`þüµFïê‡hû•ÑÀ­¥zÅ·AUEÀ(È2ÐæÑ–Õ4‘ù¸ÿY È"VCœQú¯€ö¸ûoE°¾®&›îmŽÓMvJx Úµ{ ª†?Ÿ¦E›+¦&’.6ÚBõqU—™ç1`—ɯ„þz¸„±wi+/¶·(*õO±½6\¯Ug¶Øööè>0 ‹YZgplots/TODO0000644000175100001440000000052211025473055012271 0ustar hornikusers plot.lm2 -------- - Upgrade to match current plot.lm code - For predictor vs resid, use boxplot when predictor is a factor - Rug plot or histogram for residuals/fitted values in both dimensions - Confidence region for normal distribution with equivalent number of points on QQ plot - display "bad" cutoff line for cook's distance plot gplots/R/0000755000175100001440000000000012163323571012004 5ustar hornikusersgplots/R/wapply.R0000644000175100001440000000362210526700073013443 0ustar hornikusers# $Id: wapply.R 1012 2006-11-14 22:25:06Z ggorjan $ "wapply" <- function( x, y, fun=mean, method="range", width, n=50, drop.na=TRUE, pts, ...) { method <- match.arg(method, c("width","range","nobs","fraction")) if(missing(width)) if( method=="nobs" ) width <- max(5, length(x)/10 ) else width <- 1/10 if(method == "width" || method == "range" ) { if(method=="range") width <- width * diff(range(x)) if(missing(pts)) pts <- seq(min(x),max(x),length.out=n) result <- sapply( pts, function(pts,y,width,fun,XX,...) { low <- min((pts-width/2),max(XX)) high <- max((pts+width/2), min(XX)) return (fun(y[(XX>= low) & (XX<=high)],...)) }, y=y, width=width, fun=fun, XX = x, ...) if(drop.na) { missing <- is.na(pts) & is.na(result) pts <- pts[!missing] result <- result[!missing] } return(list(x=pts,y=result)) } else # method=="nobs" || method=="fraction" { if( method=="fraction") width <- floor(length(x) * width) ord <- order(x) x <- x[ord] y <- y[ord] n <- length(x) center <- 1:n below <- sapply(center - width/2, function(XX) max(1,XX) ) above <- sapply(center + width/2, function(XX) min(n,XX) ) retval <- list() retval$x <- x retval$y <- apply(cbind(below,above), 1, function(x) fun(y[x[1]:x[2]],...) ) if(drop.na) { missing <- is.na(retval$x) | is.na(retval$y) retval$x <- retval$x[!missing] retval$y <- retval$y[!missing] } return(retval) } } gplots/R/venn.R0000644000175100001440000001060612163122137013073 0ustar hornikusers# This code plots Venn Diagrams for up to 5 sets. The # function getVennCounts is passed a list of vectors. # This is transformed into a table indicating the # number of members for each intersection. This table # is generated for any number of sets. # The function drawVennDiagram plots circles (up to three # sets) or ellipses (4 and 5 sets) to depict the sets. # The sum of values placed is the number of entries of # each set. # Function to determine values of a venn diagram # It works for an arbitrary large set of input sets. # getVennCounts <- function(l, universe, verbose=F, ...) UseMethod("getVennCounts") getVennCounts.data.frame <- function(l, universe=NA, verbose=F, ...) { if (verbose) cat("Interpreting data as data.frame.\n") if( !all(unique(unlist(l)) %in% c(0,1)) ) stop("Only indicator columns permitted") l <- sapply( l, function(x) which(as.logical(x))) getVennCounts.list(l) } # l offers a list of arrays, their values are to # be tested for the size of their intersects. getVennCounts.list<-function(l, universe=NA, verbose=F) { if (verbose) cat("Interpreting data as list.\n") numSets<-length(l) result.table<-NULL result.table.names<-NULL # Iteration over all possible intersections involving all sets # or the complement (negation) of those sets. for (i in 0:(-1 + 2^numSets)) { # i2 is a binary representation of that number i2<-baseOf(i,2,numSets) # some debug output #print(paste(i,":",paste(i2,collapse="",sep=""))) # p.pos determines the position in number # which is also the set that is inspected sel<-universe # positive selection first for (p.pos in which(1 == i2) ) { current.set<-l[[p.pos]] if (!is.null(dim(current.set))) { # circumventing strange experiences with data.frames warning(paste("List element [[",p.pos,"]] has dimensions, but all elements are considered.\n",sep="")) current.set<-as.character(as.matrix(current.set)) dim(current.set)<-NULL } #print(paste("set ",p.pos,", val=1: ",paste(current.set,collapse=","))) if (is.null(sel)) { #print("Sel is null") } else if (1 == length(sel) && is.na(sel)) { sel<-current.set } else { w<-which(sel %in% current.set) if (length(w)>0) { sel<-sel[w] } else { sel<-NULL } } } # something should be in sel now, otherwise # the number will be 0 # negative selection for (p.pos in which(0 == i2) ) { if (is.null(sel) || ( 1 == length(sel) && is.na(sel))) { # The complement is not known, hence no checks done } else { current.set<-l[[p.pos]] if (!is.null(dim(current.set))) { warning(paste("List element [[",p.pos,"]] has dimensions, but all elements are considered.\n",sep="")) current.set<-as.character(as.matrix(current.set)) dim(current.set)<-NULL } w<-which( ! sel %in% current.set) #print(paste("set ",p.pos,", val=1: ",paste(current.set,collapse=","))) if (length(w)>0) { sel<-sel[w] } else { sel<-NULL } } } #print(paste("sel:",paste(sel,collapse=","))) if(is.null(sel) || (1 == length(sel) && is.na(sel))) { sel<-NULL } r<-length(sel) r.name<-paste(i2,collapse="") result.row<-c(r,i2) dim(result.row)<-c(1,length(result.row)) rownames(result.row)<-c(r.name) #print(paste("Adding ",r.name)) if (is.null(result.table)) { result.table<-result.row } else { result.table<-rbind(result.table,result.row) } #if (is.null(result.table)) { # result.table<-r # result.table.names<-r.name #} #else { # result.table<-c(result.table,r) # result.table.names<-c(result.table.names,r.name) #} } #names(result.table)<-result.table.names if (is.null(names(l))) { colnames(result.table)<-c("num",LETTERS[1:numSets]) } else{ colnames(result.table)<-c("num",names(l)) } class(result.table) <- "venn" return(result.table) } #print(getVennCounts(list(A,B,C,D))) #print(getVennCounts(list(a=A,b=B,c=C,d=D))) venn <- function(data, universe=NA, small=0.7, showSetLogicLabel=FALSE, simplify=FALSE, show.plot=TRUE) { counts <- getVennCounts(data, universe=universe) if(show.plot) drawVennDiagram(data=counts, small=small, showSetLogicLabel=showSetLogicLabel, simplify=simplify ) invisible(counts) } gplots/R/textplot.R0000644000175100001440000001547210712432371014020 0ustar hornikusers# $Id: textplot.R 1213 2007-11-01 20:20:10Z warnes $ textplot <- function(object, halign="center", valign="center", cex, ... ) UseMethod('textplot') textplot.default <- function(object, halign=c("center","left","right"), valign=c("center","top","bottom"), cex, ... ) { if (is.matrix(object) || (is.vector(object) && length(object)>1) ) return(textplot.matrix(object, halign, valign, cex, ... )) halign <- match.arg(halign) valign <- match.arg(valign) textplot.character(object, halign, valign, cex, ...) } textplot.data.frame <- function(object, halign=c("center","left","right"), valign=c("center","top","bottom"), cex, ... ) textplot.matrix(object, halign, valign, cex, ... ) textplot.matrix <- function(object, halign=c("center","left","right"), valign=c("center","top","bottom"), cex, cmar=2, rmar=0.5, show.rownames=TRUE, show.colnames=TRUE, hadj=1, vadj=1, mar= c(1,1,4,1)+0.1, col.data=par("col"), col.rownames=par("col"), col.colnames=par("col"), ... ) { if(is.vector(object)) object <- t(as.matrix(object)) else object <- as.matrix(object) # check dimensions of col.data, col.rownames, col.colnames if(length(col.data)==1) col.data <- matrix(col.data, nrow=nrow(object), ncol=ncol(object)) else if( nrow(col.data)!=nrow(object) || ncol(col.data)!=ncol(object) ) stop("Dimensions of 'col.data' do not match dimensions of 'object'.") if(length(col.rownames)==1) col.rownames <- rep(col.rownames, nrow(object)) if(length(col.colnames)==1) if(show.rownames) col.colnames <- rep(col.colnames, ncol(object)+1) else col.colnames <- rep(col.colnames, ncol(object)) halign=match.arg(halign) valign=match.arg(valign) opar <- par()[c("mar","xpd","cex")] on.exit( par(opar) ) par(mar=mar, xpd=FALSE ) # setup plot area plot.new() plot.window(xlim=c(0,1),ylim=c(0,1), log = "", asp=NA) # add 'r-style' row and column labels if not present if( is.null(colnames(object) ) ) colnames(object) <- paste( "[,", 1:ncol(object), "]", sep="" ) if( is.null(rownames(object)) ) rownames(object) <- paste( "[", 1:nrow(object), ",]", sep="") # extend the matrix to include row and column labels if( show.rownames ) { object <- cbind( rownames(object), object ) col.data <- cbind( col.rownames, col.data ) } if( show.colnames ) { object <- rbind( colnames(object), object ) col.data <- rbind( col.colnames, col.data ) } # set the character size if( missing(cex) ) { cex <- 1.0 lastloop <- FALSE } else { lastloop <- TRUE } for (i in 1:20) { oldcex <- cex width <- sum( apply( object, 2, function(x) max(strwidth(x,cex=cex) ) ) ) + strwidth('M', cex=cex) * cmar * ncol(object) height <- strheight('M', cex=cex) * nrow(object) * (1 + rmar) if(lastloop) break cex <- cex / max(width,height) if (abs(oldcex - cex) < 0.001) { lastloop <- TRUE } } # compute the individual row and column heights rowheight<-strheight("W",cex=cex) * (1 + rmar) colwidth<- apply( object, 2, function(XX) max(strwidth(XX, cex=cex)) ) + strwidth("W")*cmar width <- sum(colwidth) height <- rowheight*nrow(object) # setup x alignment if(halign=="left") xpos <- 0 else if(halign=="center") xpos <- 0 + (1-width)/2 else #if(halign=="right") xpos <- 0 + (1-width) # setup y alignment if(valign=="top") ypos <- 1 else if (valign=="center") ypos <- 1 - (1-height)/2 else #if (valign=="bottom") ypos <- 0 + height x <- xpos y <- ypos # iterate across elements, plotting them xpos<-x for(i in 1:ncol(object)) { xpos <- xpos + colwidth[i] for(j in 1:nrow(object)) { ypos<-y-(j-1)*rowheight if( (show.rownames && i==1) || (show.colnames && j==1) ) text(xpos, ypos, object[j,i], adj=c(hadj,vadj), cex=cex, font=2, col=col.data[j,i], ... ) else text(xpos, ypos, object[j,i], adj=c(hadj,vadj), cex=cex, font=1, col=col.data[j,i], ... ) } } par(opar) } textplot.character <- function (object, halign = c("center", "left", "right"), valign = c("center", "top", "bottom"), cex, fixed.width=TRUE, cspace=1, lspace=1, mar=c(0,0,3,0)+0.1, tab.width=8, ...) { object <- paste(object,collapse="\n",sep="") object <- replaceTabs(object, width=tab.width) halign = match.arg(halign) valign = match.arg(valign) plot.new() opar <- par()[c("mar","xpd","cex","family")] on.exit( par(opar) ) par(mar=mar,xpd=FALSE ) if(fixed.width) par(family="mono") plot.window(xlim = c(0, 1), ylim = c(0, 1), log = "", asp = NA) slist <- unlist(lapply(object, function(x) strsplit(x,'\n'))) slist <- lapply(slist, function(x) unlist(strsplit(x,''))) slen <- sapply(slist, length) slines <- length(slist) if (missing(cex)) { lastloop <- FALSE cex <- 1 } else lastloop <- TRUE for (i in 1:20) { oldcex <- cex #cat("cex=",cex,"\n") #cat("i=",i,"\n") #cat("calculating width...") cwidth <- max(sapply(unlist(slist), strwidth, cex=cex)) * cspace #cat("done.\n") #cat("calculating height...") cheight <- max(sapply(unlist(slist), strheight, cex=cex)) * ( lspace + 0.5 ) #cat("done.\n") width <- strwidth(object, cex=cex) height <- strheight(object, cex=cex) if(lastloop) break cex <- cex / max(width, height) if (abs(oldcex - cex) < 0.001) { lastloop <- TRUE } } if (halign == "left") xpos <- 0 else if (halign == "center") xpos <- 0 + (1 - width)/2 else xpos <- 0 + (1 - width) if (valign == "top") ypos <- 1 else if (valign == "center") ypos <- 1 - (1 - height)/2 else ypos <- 1 - (1 - height) text(x=xpos, y=ypos, labels=object, adj=c(0,1), cex=cex, ...) par(opar) invisible(cex) } gplots/R/space.R0000644000175100001440000000265410451013277013226 0ustar hornikusers# $Id: space.R 625 2005-06-09 14:20:30Z nj7w $ # When there are two or more points with the same (x,y) value (or # within x+-s[1] and x+-s[2]), space these out in the y direction so # that the points are separated by at least distance s. space <- function(x,y,s=1/50, na.rm=TRUE, direction="x") { if(direction!='x') { tmp <- y y <- x x <- tmp } if(na.rm) { ind <- is.na(x) | is.na(y) x <- x[!ind] y <- y[!ind] } if (length(s)==1) s <- c(s,s) spacing.x <- (max(x) - min(x))*s[1] spacing.y <- (max(y) - min(y))*s[2] within <- function(x,y,delta) { abs(x-y) < delta } # sort x,y so we can do the work ord <- order(x,y) undo <- order(ord) x <- x[ord] y <- y[ord] startsame <- 1 same.x <- x[1] same.y <- y[1] for( i in 1:length(x) ) { if(i>1 && within(x[i],same.x,spacing.x) && within(y[i],same.y,spacing.y) ) { if(x[startsame] == same.x ) x[startsame] <- x[startsame] cumrun <- i - startsame x[i] <- x[i] + (-1)^(cumrun+1) * floor((cumrun+1) /2) * spacing.x } else { startsame <- i same.x <- x[i] same.y <- y[i] } } if(direction!='x') { tmp <- y y <- x x <- tmp } return( list(x=x[undo], y=y[undo]) ) } gplots/R/smartlegend.R0000644000175100001440000000202210451013277014425 0ustar hornikusers# $Id: smartlegend.R 625 2005-06-09 14:20:30Z nj7w $ smartlegend <- function(x=c("left","center","right"), y=c("top","center","bottom"), ..., inset=0.05 ) { x <- match.arg(x) y <- match.arg(y) usr <- par("usr") inset.x <- inset * (usr[2] - usr[1]) inset.y <- inset * (usr[4] - usr[3]) if(x=="left") { x.pos <- usr[1] + inset.x xjust = 0 } else if(x=="center") { x.pos <- (usr[1] + usr[2])/2 xjust = 0.5 } else # y=="right" { x.pos <- usr[2] - inset.x xjust = 1 } if(y=="bottom") { y.pos <- usr[3] + inset.y yjust = 0 } else if(y=="center") { y.pos <- (usr[3] + usr[4])/2 yjust = 0.5 } else { y.pos <- usr[4] - inset.y yjust = 1 } if(par("xlog")) x.pos <- 10^x.pos if(par("ylog")) y.pos <- 10^y.pos legend( x=x.pos, y=y.pos, ..., xjust=xjust, yjust=yjust) } gplots/R/sinkplot.R0000644000175100001440000000247412163117240013773 0ustar hornikusers# $Id: sinkplot.R 1673 2013-06-27 20:20:46Z warnes $ sinkplotEnv <-new.env() sinkplot <- function(operation=c("start","plot","cancel"),...) { operation <- match.arg(operation) if( operation=="start" ) { if (exists(".sinkplot.conn", envir=sinkplotEnv) && get(".sinkplot.conn", envir=sinkplotEnv) ) stop("sinkplot already in force") .sinkplot.conn <- textConnection(".sinkplot.data", "w", local=FALSE) assign(x=".sinkplot.conn", value=.sinkplot.conn, envir=sinkplotEnv) on.exit(sink()) sink(.sinkplot.conn) on.exit() } else { if (!exists(".sinkplot.conn", envir=sinkplotEnv) || !get(".sinkplot.conn", envir=sinkplotEnv) ) stop("No sinkplot currently in force") sink() data <- get(".sinkplot.data", envir=sinkplotEnv) if( operation=="plot" ) textplot( paste( data, collapse="\n"), ... ) close(get(".sinkplot.conn", envir=sinkplotEnv)) if(exists(".sinkplot.data", envir=sinkplotEnv, inherits=FALSE)) rm(list=".sinkplot.data", pos=sinkplotEnv, inherits=FALSE) if(exists(".sinkplot.conn", envir=sinkplotEnv, inherits=FALSE)) rm(list=".sinkplot.conn", pos=sinkplotEnv, inherits=FALSE) invisible(data) } } gplots/R/rich.colors.R0000644000175100001440000000270011743412036014351 0ustar hornikusersrich.colors <- function(n, palette="temperature", alpha=1, rgb=FALSE, plot=FALSE) { if(n <= 0) return(character(0)) palette <- match.arg(palette, c("temperature","blues")) x <- seq(0, 1, length=n) if(palette == "temperature") { r <- 1 / (1+exp(20-35*x)) g <- pmin(pmax(0,-0.8+6*x-5*x^2), 1) b <- dnorm(x,0.25,0.15) / max(dnorm(x,0.25,0.15)) } else { r <- 0.6*x + 0.4*x^2 g <- 1.5*x - 0.5*x^2 b <- 0.36 + 2.4*x - 2.0*x^2 b[x>0.4] <- 1 } rgb.m <- matrix(c(r,g,b), ncol=3, dimnames=list(NULL,c("red","green","blue"))) col <- mapply(rgb, r, g, b, alpha) if(rgb) attr(col, "rgb") <- cbind(rgb.m, alpha) if(plot) { opar <- par("fig", "plt") par(fig=c(0,1,0,0.7), plt=c(0.15,0.9,0.2,0.95)) plot(NA, xlim=c(-0.01,1.01), ylim=c(-0.01,1.01), xlab="Spectrum", ylab="", xaxs="i", yaxs="i", axes=FALSE) title(ylab="Value", mgp=c(3.5,0,0)) matlines(x, rgb.m, col=colnames(rgb.m), lty=1, lwd=3) matpoints(x, rgb.m, col=colnames(rgb.m), pch=16) axis(1, at=0:1) axis(2, at=0:1, las=1) par(fig=c(0,1,0.75,0.9), plt=c(0.08,0.97,0,1), new=TRUE) midpoints <- barplot(rep(1,n), col=col, border=FALSE, space=FALSE, axes=FALSE) axis(1, at=midpoints, labels=1:n, lty=0, cex.axis=0.6) par(opar) } return(col) } gplots/R/residplot.R0000644000175100001440000000064510526700073014136 0ustar hornikusers# $Id: residplot.R 1012 2006-11-14 22:25:06Z ggorjan $ residplot <- function(model, formula, ...) { data <- expand.model.frame( model, formula, na.expand=TRUE) newform <- eval(parse( text=paste("as.call(", "resid(model) ~", formula[-1],")" ))) plot( newform, data=data, ylab="Residuals") lines(lowess( newform, data=data ), col="red") bandplot(newform,data=data) } gplots/R/replaceTabs.R0000644000175100001440000000157010712431102014343 0ustar hornikusers## Function to replace all tabs in a string with an appropriate number of spaces. # handle a single character string replaceTabs.inner <- function( text, width=8 ) { spaces <- " " if(nchar(text)<1) return(text) text.split <- strsplit(text,"\t")[[1]] if(length(text.split)==1) return(text) else { nSpaceAdd <- 8 - nchar(text.split) %% 8 nSpaceAdd[length(nSpaceAdd)] <- 0 nSpaceAdd[nSpaceAdd==8] <- 0 retval <- "" for(i in 1:length(text.split)) { tmp.text <- chartr("\t"," ", text.split[i]) # one space here retval <- paste(retval, tmp.text, substr(spaces,0,nSpaceAdd[i]-1 ), sep='' ) # rest here } return(retval) } } replaceTabs <- function(text, width=8) { text <- as.character(text) retval <- sapply(text, replaceTabs.inner) names(retval) <- names(text) retval } gplots/R/qqnorm.aov.R0000644000175100001440000000175410451013277014234 0ustar hornikusers# $Id: qqnorm.aov.R 625 2005-06-09 14:20:30Z nj7w $ if(is.R()) qqnorm.aov <- function (y, full = FALSE, label = FALSE, omit = NULL, xlab = paste(if(full) "" else "Half", " Normal plot"), ylab = "Effects", ...) { r <- y$rank eff <- if (full) effects(y, set.sign = TRUE)[1:r] else abs(effects(y))[1:r] na <- names(eff) int <- match("(Intercept)", na) if (!is.null(omit)) { if (is.character(omit)) { int <- c(int, match(omit, na)) } else int <- c(int, omit) } int <- int[!is.na(int)] if (length(int)) eff <- eff[-int] n <- length(eff) if (n <= 0) stop("Not enough effects") ord <- order(eff) na <- names(eff) P <- if (full) ppoints(n) else ((1:n) + n)/(2 * n + 1) Q <- qnorm(P) plot(x = Q, y = eff[ord], xlab = xlab, ylab = ylab, ...) if (label && dev.interactive()) identify(Q, eff[ord], names(eff)[ord]) } gplots/R/print.hist2d.R0000644000175100001440000000107611764147614014473 0ustar hornikusers# $Id: hist2d.R 1471 2011-08-16 01:03:31Z warnes $ print.hist2d <- function(x, ...) { cat("\n") cat("----------------------------\n") cat("2-D Histogram Object\n") cat("----------------------------\n") cat("\n") cat("Call: ") print(x$call) cat("\n") cat("Number of data points: ", x$nobs, "\n") cat("Number of grid bins: ", length(x$x), "x", length(x$y), "\n") cat("X range: (", min(x$x.breaks), ",", max(x$x.breaks), ")\n") cat("Y range: (", min(x$y.breaks), ",", max(x$y.breaks), ")\n") cat("\n") } gplots/R/print.ci2d.R0000644000175100001440000000202011743412036014073 0ustar hornikusers## $Id$ print.ci2d <- function(x, ...) { cat("\n") cat("----------------------------\n") cat("2-D Confidence Region Object\n") cat("----------------------------\n") cat("\n") cat("Call: ") print(x$call) cat("\n") cat("Number of data points: ", x$nobs, "\n") cat("Number of grid points: ", length(x$x), "x", length(x$y), "\n") cat("Number of confidence regions:", length(x$contours), "\n") cat("\n") tab <- data.frame( "Region"=1:length(x$contours), "CI Level"=as.numeric(names(x$contours)), "X Min"=sapply(x$contours, function(XX) min(XX$x)), "X Max"=sapply(x$contours, function(XX) max(XX$x)), "Y Min"=sapply(x$contours, function(XX) min(XX$y)), "Y Max"=sapply(x$contours, function(XX) max(XX$y)) ) print(tab, row.names=FALSE, ...) x$summary <- tab class(x) <- c("ci2d.summary", "ci2d") return(x) } gplots/R/plotmeans.R0000644000175100001440000001072211764141277014142 0ustar hornikusers## $Id: plotmeans.R 1553 2012-06-07 15:03:24Z warnes $ plotmeans <- function (formula, data = NULL, subset, na.action, bars=TRUE, p=0.95, minsd=0, minbar=NULL, maxbar=NULL, xlab=names(mf)[2], ylab=names(mf)[1], mean.labels=FALSE, ci.label=FALSE, n.label=TRUE, digits=getOption("digits"), col="black", barwidth=1, barcol="blue", connect=TRUE, ccol=col, legends=names(means), xaxt, use.t = TRUE, lwd=par("lwd"), ...) { is.R <- get("is.R") if(is.null(is.R)) is.R <- function(x) FALSE if(!is.R()) { if(col=="black") col <- 1 if(barcol=="blue") barcol <- 2 } if (invalid(formula) || (length(formula) != 3)) stop("formula missing or incorrect") if (invalid(na.action)) na.action <- options("na.action") m <- match.call(expand.dots = FALSE) if(is.R()) { if (is.matrix(eval(m$data, parent.frame()))) m$data <- as.data.frame(data) } else { if (is.matrix(eval(m$data, FALSE))) m$data <- as.data.frame(data) } m$... <- m$bars <- m$barcol <- m$p <- NULL m$minsd <- m$minbar <- m$maxbar <- NULL m$xlab <- m$ylab <- NULL m$col <- m$barwidth <- NULL m$digits <- m$mean.labels <- m$ci.label <- m$n.label <- NULL m$connect <- m$ccol <- m$legends <- m$labels<- NULL m$xaxt <- m$use.t <- m$lwd <- NULL m[[1]] <- as.name("model.frame") mf <- eval(m, parent.frame()) response <- attr(attr(mf, "terms"), "response") ## drop unused levels in factors!!! wFact <- which(attr(attr(mf, "terms"),"dataClasses") == "factor") for(i in wFact) mf[,i] <- factor(mf[,i]) means <- sapply(split(mf[[response]], mf[[-response]]), mean, na.rm=TRUE) ns <- sapply(sapply(split(mf[[response]], mf[[-response]]), na.omit, simplify=FALSE), length ) xlim <- c(0.5, length(means)+0.5) if(!bars) { plot( means, ..., col=col, xlim=xlim) } else { myvar <- function(x) var(x[!is.na(x)]) vars <- sapply(split(mf[[response]], mf[[-response]]), myvar) ## apply minimum variance specified by minsd^2 vars <- ifelse( vars < (minsd^2), (minsd^2), vars) if(use.t) ci.width <- qt( (1+p)/2, ns-1 ) * sqrt(vars/ns) else ci.width <- qnorm( (1+p)/2 ) * sqrt(vars/ns) if(length(mean.labels)==1) { if (mean.labels==TRUE) mean.labels <- format( round(means, digits=digits )) else if (mean.labels==FALSE) mean.labels <- NULL } plotCI(x=1:length(means), y=means, uiw=ci.width, xaxt="n", xlab=xlab, ylab=ylab, labels=mean.labels, col=col, xlim=xlim, lwd=barwidth, barcol=barcol, minbar=minbar, maxbar=maxbar, ... ) if(invalid(xaxt) || xaxt!="n") axis(1, at = 1:length(means), labels = legends) if(ci.label) { ci.lower <- means-ci.width ci.upper <- means+ci.width if(!invalid(minbar)) ci.lower <- ifelse(ci.lower < minbar, minbar, ci.lower) if(!invalid(maxbar)) ci.upper <- ifelse(ci.upper > maxbar, maxbar, ci.upper) labels.lower <- paste( " \n", format(round(ci.lower, digits=digits)), sep="") labels.upper <- paste( format(round(ci.upper, digits=digits)), "\n ", sep="") text(x=1:length(means),y=ci.lower, labels=labels.lower, col=col) text(x=1:length(means),y=ci.upper, labels=labels.upper, col=col) } } if(n.label) if(is.R()) text(x=1:length(means),y=par("usr")[3], labels=paste("n=",ns,"\n",sep="")) else { axisadj <- (par("usr")[4] - (par("usr")[3]) )/75 text(x=1:length(means),y=par("usr")[3] + axisadj, labels=paste("n=",ns,"\n",sep="")) } if(!invalid(connect) & !identical(connect,FALSE)) { if(is.list(connect)) { if(length(ccol)==1) ccol <- rep(ccol, length(connect) ) for(which in 1:length(connect)) lines(x=connect[[which]],y=means[connect[[which]]],col=ccol[which]) } else lines(means, ..., lwd=lwd, col=ccol) } } gplots/R/plotCI.R0000644000175100001440000000637411764436326013344 0ustar hornikusers# $Id: plotCI.R 1557 2012-06-08 17:56:37Z warnes $ plotCI <- function (x, y = NULL, uiw, liw = uiw, ui, li, err='y', ylim=NULL, xlim=NULL, type="p", col=par("col"), barcol=col, pt.bg = par("bg"), sfrac = 0.01, gap=1, lwd=par("lwd"), lty=par("lty"), labels=FALSE, add=FALSE, xlab, ylab, minbar, maxbar, ... ) { if (is.list(x)) { y <- x$y x <- x$x } if(invalid(xlab)) xlab <- deparse(substitute(x)) if(invalid(ylab)) { if(is.null(y)) { xlab <- "" ylab <- deparse(substitute(x)) } else ylab <- deparse(substitute(y)) } if (is.null(y)) { if (is.null(x)) stop("both x and y NULL") y <- as.numeric(x) x <- seq(along = x) } if(err=="y") z <- y else z <- x if(invalid(uiw)) uiw <- NA if(invalid(liw)) liw <- NA if(invalid(ui)) ui <- z + uiw if(invalid(li)) li <- z - liw if(!invalid(minbar)) li <- ifelse( li < minbar, minbar, li) if(!invalid(maxbar)) ui <- ifelse( ui > maxbar, maxbar, ui) if(err=="y") { if(is.null(ylim)) ylim <- range(c(y, ui, li), na.rm=TRUE) if(is.null(xlim) && !is.R() ) xlim <- range( x, na.rm=TRUE) } else if(err=="x") { if(is.null(xlim)) xlim <- range(c(x, ui, li), na.rm=TRUE) if(is.null(ylim) && !is.R() ) ylim <- range( x, na.rm=TRUE) } if(!add) { if(invalid(labels) || labels==FALSE ) plot(x, y, ylim = ylim, xlim=xlim, col=col, xlab=xlab, ylab=ylab, ...) else { plot(x, y, ylim = ylim, xlim=xlim, col=col, type="n", xlab=xlab, ylab=ylab, ...) text(x, y, label=labels, col=col, ... ) } } if(err=="y") { if(gap!=FALSE) gap <- strheight("O") * gap smidge <- par("fin")[1] * sfrac # draw upper bar if(!is.null(li)) arrows(x , li, x, pmax(y-gap,li), col=barcol, lwd=lwd, lty=lty, angle=90, length=smidge, code=1) # draw lower bar if(!is.null(ui)) arrows(x , ui, x, pmin(y+gap,ui), col=barcol, lwd=lwd, lty=lty, angle=90, length=smidge, code=1) } else { if(gap!=FALSE) gap <- strwidth("O") * gap smidge <- par("fin")[2] * sfrac # draw left bar if(!is.null(li)) arrows(li, y, pmax(x-gap,li), y, col=barcol, lwd=lwd, lty=lty, angle=90, length=smidge, code=1) if(!is.null(ui)) arrows(ui, y, pmin(x+gap,ui), y, col=barcol, lwd=lwd, lty=lty, angle=90, length=smidge, code=1) } ## _now_ draw the points (to avoid having lines drawn 'through' points) points(x, y, col = col, lwd = lwd, bg = pt.bg, type = type, ...) invisible(list(x = x, y = y)) } gplots/R/plot.venn.R0000644000175100001440000002063412163122246014053 0ustar hornikusers plot.venn <- function(x, y, ..., small=0.7, showSetLogicLabel=FALSE, simplify=FALSE ) { drawVennDiagram( data=x, small=small, showSetLogicLabel=showSetLogicLabel, simplify=simplify ) } ## data should be a matrix. ## - The first column of the matrix is the ## count of the number of objects with the specified pattern. ## - The second and subsequent columns contain 0-1 indicators ## giving the pattern of group membership drawVennDiagram <-function(data,small=0.7, showSetLogicLabel=FALSE,simplify=FALSE) { numCircles<-NA data.colnames<-NULL data.rownames<-NULL if(is.matrix(data)) { numCircles<-ncol(data)-1 data.colnames<-colnames(data)[2:(ncol(data))] # Order is reverted since later indexing starts with # the "lowest bit" and that is expected at the left data.rownames<-rownames(data) } else { if (is.list(data)) { stop("gplots.drawVennDiagram: This internal function is used wrongly. ", "Please call the function 'venn' with the same arguments, instead.\n") } warning("drawVennDiagram: Testing only, presuming first argument to specify", "the number of circles to draw.\n") numCircles<-data } m<-(0:(-1+2^numCircles)) if (! is.matrix(data)) { ##cat("prepare randomised data\n") data<-t(sapply(X=m,FUN=function(v){ l<-baseOf(v,2,numCircles) #print(l) return(l) })) #print(data) #data.names<-apply(data,1,function(X){ # return(paste(X),collapse="") #}) for(i in m) { n<-paste(data[i+1,],collapse="") if (is.null(data.rownames)) { data.rownames<-n } else { data.rownames<-c(data.rownames,n) } } #print(data.rownames) data<-cbind(sample(1:100,size=2^numCircles,replace=TRUE),data) #print(data) rownames(data)<-data.rownames data.colnames<-LETTERS[1:numCircles] colnames(data)<-c("num",data.colnames) } plot.new() h<-400 plot.window(c(0,h), c(0,h), ylab="", xlab="") if ((2 <= numCircles && numCircles <= 3) || (4 == numCircles && simplify)) { circle <- function(x,y=NULL,r=1) { elps=cbind(r*cos(seq(0,2*pi,len=1000)), r*sin(seq(0,2*pi,len=1000))); if (!is.null(y)) { if (length(x) != length(y)) stop("circle: both x and y need to be of same length") if (is.matrix(x) && ncol(x)>1) stop("circle: if y is not NULL, then x must not be a matrix") x<-cbind(x,y) } for(i in 1:nrow(x)) { ax<-elps[,1]+rep(x[i,1],1000) ay<-elps[,2]+rep(x[i,2],1000) polygon(ax,ay) } } #nolongerreguired#require(grid) ##cat("drawing circles\n") # draw circles with radius 1.7 equally distributed # with centers on a circle of radius 1 degrees<-2*pi/numCircles*(1:numCircles) # scaling factor s<-1/8*h # radius for circles r<-3/12*h x<-sapply(degrees,FUN=sin)*s + 0.5*h y<-sapply(degrees,FUN=cos)*s + 0.5*h ##cat("filling data\n") circle(x,y,r) distFromZero<-rep(NA,2^numCircles) degrees<-rep(NA,2^numCircles) degrees[(2^numCircles)]<-0 distFromZero[(2^numCircles)]<-0 for (i in 0:(numCircles-1)) { distFromZero[2^i+1] <- r degrees[2^i+1] <- 2*pi/numCircles*i d<-degrees[2^i+1] #print(data.colnames) text( # starting from the lowest bit, hence reading # lables from the right label=data.colnames[numCircles - i], x=sin(d)*5/12*h+0.5*h, y=cos(d)*5/12*h+0.5*h ) } if (4==numCircles) { for (i in 0:(numCircles-1)) { # Current set bit plus the bit left of it and the bit right of it distFromZero[2^i +2^((i+numCircles-1)%%numCircles) +2^((i+1)%%numCircles)+1] <- 2/12*h distFromZero[2^i+1] <- 3.5/12*h degrees[2^i +2^((i+numCircles-1)%%numCircles) +2^((i+1)%%numCircles)+1] <- degrees[2^i+1] } } #degrees[2^i+1] + degrees[2^((i+1)%%numCircles)+1])/2 if (3 <=numCircles) { for (i in 0:(numCircles-1)) { distFromZero[(2^i+2^((i+1)%%numCircles))+1]<- 2.2/12*h distFromZero[2^i+1] <- 3/12*h if (i == (numCircles-1)) { degrees[(2^i+2^((i+1)%%numCircles))+1] <- ( degrees[2^i+1] + 2*pi+ degrees[1+1])/2 } else { degrees[(2^i+2^((i+1)%%numCircles))+1] <- ( degrees[2^i+1] + degrees[2^((i+1)%%numCircles)+1])/2 } } } for(i in 1:2^numCircles) { n<-paste(baseOf((i-1),2,numCircles),collapse="") v<-data[n,1] d<-degrees[i] if (1 == length(d) && is.na(d)) { if (v>0) warning("Not shown: ",n,"is",v,"\n") } else { l<-distFromZero[i] x<-sin(d)*l+0.5*h y<-cos(d)*l+0.5*h #cat("i=",i," x=",x," y=",y," label=",n,"\n") l<-v if (showSetLogicLabel) l<-paste(n,"\n",v,sep="") text(label=l,x=x,y=y) } } } else if ( (4 == numCircles && !simplify) || numCircles <= 5 ) { # Function to turn and move ellipses/circles relocate_elp <- function(e, alpha, x, y){ phi=(alpha/180)*pi; xr=e[,1]*cos(phi)+e[,2]*sin(phi) yr=-e[,1]*sin(phi)+e[,2]*cos(phi) xr=x+xr; yr=y+yr; return(cbind(xr, yr)) } lab<-function (identifier, data, showLabel=showSetLogicLabel) { r<-data[identifier,1] if (showLabel) { return(paste(identifier,r,sep="\n")) } else { return(r) } } if (4 == numCircles) { elps=cbind(162*cos(seq(0,2*pi,len=1000)), 108*sin(seq(0,2*pi,len=1000))); #plot(c(0, 400), c(0, 400), type="n", axes=F, ylab="", xlab=""); polygon(relocate_elp(elps, 45,130,170)); polygon(relocate_elp(elps, 45,200,200)); polygon(relocate_elp(elps,135,200,200)); polygon(relocate_elp(elps,135,270,170)); text( 35, 315, data.colnames[1],cex=1.5) text(138, 347, data.colnames[2],cex=1.5) text(262, 347, data.colnames[3],cex=1.5) text(365, 315, data.colnames[4],cex=1.5) elps <- cbind(130*cos(seq(0,2*pi,len=1000)), 80*sin(seq(0,2*pi,len=1000))) text( 35, 250, lab("1000",data)); text(140, 315, lab("0100",data)); text(260, 315, lab("0010",data)); text(365, 250, lab("0001",data)); text( 90, 280, lab("1100",data), cex=small) text( 95, 110, lab("1010",data) ) text(200, 50, lab("1001",data), cex=small) text(200, 290, lab("0110",data)) text(300, 110, lab("0101",data)) text(310, 280, lab("0011",data), cex=small) text(130, 230, lab("1110",data)) text(245, 75, lab("1101",data),cex=small) text(155, 75, lab("1011",data),cex=small) text(270, 230, lab("0111",data)) text(200,150,lab("1111",data)) } else if (5 == numCircles) { elps <- cbind(150*cos(seq(0,2*pi,len=1000)), 60*sin(seq(0,2*pi,len=1000))) polygon(relocate_elp(elps, 90,200, 250)) polygon(relocate_elp(elps, 162,250, 220)) polygon(relocate_elp(elps, 234,250, 150)) polygon(relocate_elp(elps, 306,180, 125)) polygon(relocate_elp(elps, 378,145, 200)) text( 20, 295, data.colnames[1],cex=1.5) text(140, 380, data.colnames[2],cex=1.5) text(350, 318, data.colnames[3],cex=1.5) text(350, 2, data.colnames[4],cex=1.5) text( 50, 10, data.colnames[5],cex=1.5) text( 61, 228, lab("10000",data)); text(194, 329, lab("01000",data)); text(321, 245, lab("00100",data)); text(290, 81, lab("00010",data)); text(132, 69, lab("00001",data)); text(146, 250, lab("11000",data), cex=small) text(123, 188, lab("10100",data), cex=small) text(275, 152, lab("10010",data), cex=small) text(137, 146, lab("10001",data), cex=small) text(243, 268, lab("01100",data), cex=small) text(175, 267, lab("01010",data), cex=small) text(187, 117, lab("01001",data), cex=small) text(286, 188, lab("00110",data), cex=small) text(267, 235, lab("00101",data), cex=small) text(228, 105, lab("00011",data), cex=small) text(148, 210, lab("11100",data),cex=small) text(159, 253, lab("11010",data),cex=small) text(171, 141, lab("11001",data),cex=small) text(281, 175, lab("10110",data),cex=small) text(143, 163, lab("10101",data),cex=small) text(252, 145, lab("10011",data),cex=small) text(205, 255, lab("01110",data),cex=small) text(254, 243, lab("01101",data),cex=small) text(211, 118, lab("01011",data),cex=small) text(267, 211, lab("00111",data),cex=small) text(170, 231,lab("11110",data),cex=small) text(158, 169,lab("11101",data),cex=small) text(212, 139,lab("11011",data),cex=small) text(263, 180,lab("10111",data),cex=small) text(239, 232,lab("01111",data),cex=small) text(204,190,lab("11111",data)) } } else { stop(paste("Venn diagrams for ",numCircles," dimensions are not yet supported.\n")) } } gplots/R/plot.lm.R0000644000175100001440000001225611014413637013517 0ustar hornikusersplot.lm2 <- function( x, which = 1:5, caption = c("Residuals vs Fitted", "Normal Q-Q plot", "Scale-Location plot", "Cook's distance plot"), panel = panel.smooth, sub.caption = deparse(x$call), main = "", ask = interactive() && nb.fig < length(which) && .Device != "postscript", ..., id.n = 3, labels.id = names(residuals(x)), cex.id = 0.75, band=TRUE, rug=TRUE, width=1/10, max.n=5000 ) { if (!inherits(x, "lm")) stop("Use only with 'lm' objects") show <- rep(FALSE, 5) if(!is.numeric(which) || any(which < 1) || any(which > 5)) stop("`which' must be in 1:5") show[which] <- TRUE r <- residuals(x) n <- length(r) if(inherits(x,"glm")) yh <- predict(x) # != fitted() for glm else yh <- fitted(x) if (any(show[2:4])) s <- if(inherits(x, "rlm")) x$s else sqrt(deviance(x)/df.residual(x)) if (any(show[2:3])) { ylab23 <- if(inherits(x, "glm")) "Std. deviance resid." else "Standardized residuals" hii <- lm.influence(x)$hat w <- weights(x) # r.w := weighted.residuals(x): r.w <- if(is.null(w)) r else (sqrt(w)*r)[w!=0] rs <- r.w/(s * sqrt(1 - hii)) } if (any(show[c(1,3)])) l.fit <- if(inherits(x,"glm")) "Predicted values" else "Fitted values" if (is.null(id.n)) id.n <- 0 else { id.n <- as.integer(id.n) if(id.n < 0 || id.n > n) stop(paste("`id.n' must be in { 1,..,",n,"}")) } if(id.n > 0) { if(is.null(labels.id)) labels.id <- paste(1:n) iid <- 1:id.n show.r <- order(-abs(r))[iid] if(any(show[2:3])) show.rs <- order(-abs(rs))[iid] text.id <- function(x,y, ind, adj.x = FALSE) text(x - if(adj.x) strwidth(" ")*cex.id else 0, y, labels.id[ind], cex = cex.id, xpd = TRUE, adj = if(adj.x) 1) } nb.fig <- prod(par("mfcol")) one.fig <- prod(par("mfcol")) == 1 if (ask) { op <- par(ask = TRUE) on.exit(par(op)) } ##---------- Do the individual plots : ---------- if (show[1]) { ylim <- range(r) if(id.n > 0) ylim <- ylim + c(-1,1)* 0.08 * diff(ylim) plot(yh, r, xlab = l.fit, ylab = "Residuals", main = main, ylim = ylim, type = "n", ...) panel(yh, r, ...) if(rug) rug(yh) ## GRW 2001-06-08 if(band) bandplot(yh,r,add=TRUE,width=width) ## GRW 2001-06-08 if (one.fig) title(sub = sub.caption, ...) mtext(caption[1], 3, 0.25) if(id.n > 0) { y.id <- r[show.r] y.id[y.id < 0] <- y.id[y.id < 0] - strheight(" ")/3 text.id(yh[show.r], y.id, show.r, adj.x = TRUE) } abline(h = 0, lty = 3, col = "gray") } if (show[2]) { ylim <- range(rs) ylim[2] <- ylim[2] + diff(ylim) * 0.075 qq <- qqnorm(rs, main = main, ylab = ylab23, ylim = ylim, ...) qqline(rs) if (one.fig) title(sub = sub.caption, ...) mtext(caption[2], 3, 0.25) if(id.n > 0) text.id(qq$x[show.rs], qq$y[show.rs], show.rs, adj.x = TRUE) } if (show[3]) { sqrtabsr <- sqrt(abs(rs)) ylim <- c(0, max(sqrtabsr)) yl <- as.expression(substitute(sqrt(abs(YL)), list(YL=as.name(ylab23)))) yhn0 <- if(is.null(w)) yh else yh[w!=0] plot(yhn0, sqrtabsr, xlab = l.fit, ylab = yl, main = main, ylim = ylim, type = "n", ...) panel(yhn0, sqrtabsr, ...) abline(h=mean(sqrtabsr),lty = 3, col = "gray") if(rug) rug(yh) ## GRW 2001-06-08 if(band) bandplot(yhn0,sqrtabsr,add=TRUE) ## GRW 2001-06-08 if (one.fig) title(sub = sub.caption, ...) mtext(caption[3], 3, 0.25) if(id.n > 0) text.id(yhn0[show.rs], sqrtabsr[show.rs], show.rs, adj.x = TRUE) } if (show[4]) { cook <- cooks.distance(x, sd=s) if(id.n > 0) { show.r <- order(-cook)[iid]# index of largest `id.n' ones ymx <- cook[show.r[1]] * 1.075 } else ymx <- max(cook) plot(cook, type = "h", ylim = c(0, ymx), main = main, xlab = "Obs. number", ylab = "Cook's distance", ...) if (one.fig) title(sub = sub.caption, ...) mtext(caption[4], 3, 0.25) if(id.n > 0) text.id(show.r, cook[show.r] + 0.4*cex.id * strheight(" "), show.r) } if (show[5]) { ## plot residuals against each predictor ## data <- model.frame(x) for( i in 2:ncol(data) ) { test <- try( { plot.default( x=data[,i], y=r, xlab=names(data)[i], ylab="Residuals", type="n") panel( data[,i], r, ... ) if(rug) rug(data[,i]) if(band) bandplot(data[,i],r,add=TRUE) abline(h=0,lty = 3, col = "gray") } ) } } if (!one.fig && par("oma")[3] >= 1) mtext(sub.caption, outer = TRUE, cex = 1.25) invisible() } gplots/R/overplot.R0000644000175100001440000001162510712432225014001 0ustar hornikusers# $Id: overplot.R 1212 2007-11-01 20:18:30Z warnes $ panel.overplot <- function(formula, data, subset, col, lty, ...) { m <- match.call() m[[1]] <- graphics:::plot.formula eval(m, parent.frame() ) m[[1]] <- gplots:::lowess.formula tmp <- eval(m, parent.frame() ) lines( tmp, col=col, lwd=2, lty=lty ) } overplot <- function (formula, data = parent.frame(), same.scale=FALSE, xlab, ylab, xlim, ylim, min.y, max.y, log='', panel='panel.overplot', subset, plot=TRUE, groups, main, f=2/3, ... ) { ### # check that the formula had the right form ### if( length(formula)!=3 || length(formula[[3]]) != 3 || formula[[3]][[1]] != as.name("|") ) stop("Formula must be of the form y ~ x1 | x2") if(!missing(subset)) { flag <- eval(substitute(subset), envir=data) data <- data[flag,] } ### # Get the actual formula values ### cond <- eval(formula[[3]][[3]], envir=data, parent.frame()) x <- eval(formula[[3]][[2]], envir=data, parent.frame()) y <- eval(formula[[2]], envir=data, parent.frame()) #print(data.frame(cond,x,y)) y.all.min <- min(y, na.rm=TRUE) y.all.max <- max(y, na.rm=TRUE) x.all.min <- min(x, na.rm=TRUE) x.all.max <- max(x, na.rm=TRUE) if(y.all.min==y.all.max) browser() if (length(cond) == 0) { cond <- list(as.factor(rep(1, length(x)))) } if (!is.factor(cond)) { cond <- factor(cond) } ### # create a new call to the requested function ### mycall <- match.call(expand.dots=FALSE) mycall$panel <- mycall$plot <- mycall$groups <- mycall$same.scale <- NULL mycall$min.y <- mycall$max.y <- NULL mycall$data <- data # remove condition from formula mycall$formula[3] <- formula[[3]][2] # function name if(is.character(panel)) panel <- as.name(panel) else panel <- deparse(substitute(panel)) mycall[[1]] <- as.name(panel) # ylim if(same.scale) { if(missing(ylim)) mycall$ylim <- range(y[y>0],na.rm=TRUE) } # xlim is always the same for all graphs if(missing(xlim)) if(log %in% c("x","xy")) mycall$xlim <- range(x[x>0],na.rm=TRUE) else mycall$xlim <- range(x,na.rm=TRUE) ### # Only plot groups with non-na entries ## tmp <- na.omit(data.frame(x,y,cond)) leveln <- sapply( split(tmp, tmp$cond), nrow ) if(missing(groups)) groups <- names(leveln) ngroups <- length(groups) if(!missing(min.y) && length(min.y==1)) min.y <- rep(min.y, length=ngroups) if(!missing(max.y) && length(max.y==1)) max.y <- rep(max.y, length=ngroups) ### # Set up the plot regions ### oldpar <- par()['mar'] on.exit(par(oldpar)) par(mar=par("mar") +c(0,ngroups*2.5,0,0)) ### # Ok. Now iterate over groups ## i <- 1 for(level in groups) { if(i>1) { par(new=TRUE) } mycall$subset <- (cond==level) mycall$ylab <- '' mycall$xlab <- '' mycall$xaxt = 'n' mycall$yaxt = 'n' mycall$pch = i mycall$col = i mycall$lty = i tmp.y <- y[mycall$subset & cond==level] min.tmp.y <- min(tmp.y, na.rm=TRUE) max.tmp.y <- max(tmp.y, na.rm=TRUE) if( !missing(min.y) || !missing(max.y) ) { if(!missing(min.y) && !missing(max.y) ) { mycall$ylim <- c(min.y[i], max.y[i]) } else if(missing(min.y) && !missing(max.y)) { if(same.scale) mycall$ylim <- c(y.all.min, max.y[i]) else mycall$ylim <- c(min.tmp.y, max.y[i]) } else # !missing(min.y) && missing(max.y) { if(same.scale) mycall$ylim <- c(min.y[i], y.all.max) else mycall$ylim <- c(min.y[i], max.tmp.y) } } if(plot) { status <- try( eval(mycall, parent.frame()) ) if('try-error' %in% class(status)) break; } usr <- par("usr") axis(side=2,line=2.5*(i-1),lty=i,col=i,lwd=2) title(ylab=level, line=2.5*(i-1)) if(i == 1) axis(side=1) i <- i+1 } if(missing(xlab)) xlab <- as.character(formula[[3]][[2]]) if(missing(ylab)) ylab <- as.character(formula[[2]]) if(missing(main)) main <- paste("plot of ", xlab, "vs.", ylab, "by", as.character(formula[[3]][[3]])) if(i>1) { title(main=main,xlab=xlab) title(ylab=ylab, line=2.5*(i-1)) } par(oldpar) invisible( split(data.frame(x,y),cond) ) } gplots/R/ooplot.R0000644000175100001440000005071111764436326013460 0ustar hornikusers# $Id: ooplot.R 1557 2012-06-08 17:56:37Z warnes $ ooplot <- function(data, ...) UseMethod("ooplot") ooplot.default <- function(data, width=1, space=NULL, names.arg=NULL, legend.text=NULL, horiz=FALSE, density=NULL, angle=45, kmg="fpnumkMGTP", kmglim=TRUE, type=c("xyplot", "linear", "barplot", "stackbar"), col=heat.colors(NC), prcol=NULL, border=par("fg"), main=NULL, sub=NULL, xlab=NULL, ylab=NULL, xlim=NULL, ylim=NULL, xpd=TRUE, log="", axes=TRUE, axisnames=TRUE, prval=TRUE, lm=FALSE, cex.axis=par("cex.axis"), cex.names=par("cex.axis"), cex.values=par("cex"),inside=TRUE, plot=TRUE, axis.lty=0, plot.ci=FALSE, ci.l=NULL, ci.u=NULL, ci.color="black", ci.lty="solid", ci.lwd=1, plot.grid=FALSE, grid.inc=NULL, grid.lty="dotted", grid.lwd=1, grid.col="black", add=FALSE, by.row=FALSE, ...) { ## ## oopplot function block ## ## this is the location of the helper functions for this method ## optlim <- function(lim, log=FALSE) { ## define xlim and ylim, adjusting for log-scale if needed factor <- 1.05 if (log) { min <- 10^floor(log10(lim[1]/factor)) max <- 10^ceiling(log10(factor*lim[2])) } else { range <- (factor*lim[2]-lim[1]/factor) if (range>0) { ## we know the range, now find the optimal start and endpoints scale <- 10^floor(log10(range)) min <- scale*(floor((lim[1]/factor)/scale)) max <- scale*(ceiling(factor*lim[2]/scale)) } else { min=0 max=1 } } if (type=="barplot" || type=="stackbar") max=max+1 return(c(min, max)) } linearfitplot <- function(x,y,xlim,col) { ## calculate a linear fit through the datapoints and plot local <- data.frame(x=x,y=y) local.lm <- lm(y ~ x, data=local) summary <- summary(local.lm) xmin=min(x) xmax=max(x) if (xlim[1]xmax) { x2=mean(xlim[2],xmax) } else { x2=min(max(x),xlim[2]) } y1=summary$coefficients[2,1]*x1+summary$coefficients[1,1] y2=summary$coefficients[2,1]*x2+summary$coefficients[1,1] p1=c(x1,x2) p2=c(y1,y2) lines(p1,p2,col=col,lty=2,lwd=2) } castNA <- function(matrix) { newmatrix <- matrix for (j in 1:ncol(matrix)) { for (i in 1:nrow(matrix)) { newmatrix[i,j] <- ifelse(is.na(matrix[i,j]),0,matrix[i,j]) } } return(newmatrix) } ## ## End of function block ## ## In R, most people think about data in columns rather than rows if(by.row) data <- as.matrix(data) else data <- t(as.matrix(data)) ## make sure we only accept the supported plot options type <- match.arg(type) ## check data validity if( nrow(data) < 2 ) stop("At least 2 columns are required.") ## check defaults if (!missing(inside)) .NotYetUsed("inside", error=FALSE)# -> help(.) ## set the beside parameter if (type=="stackbar") { beside <- FALSE data <- castNA(data) } else beside <- TRUE ## split the data into x and y values height <- data[-1,,drop=FALSE] heightscale <- "" heightsymbol <- "" ## if ((kmg!="") && (kmglim==TRUE)){ ## ## auto scale the parameters ## ## now scale the data, valid factors are ## P : peta=1E15 ## T : tera=1E12 ## G : giga=1E09 ## M : mega=1E06 ## k : kilo=1E03 ## m : milli=1E-03 ## u : micro=1E-06 ## n : nano=1E-09 ## p : pico=1E-12 ## f : femto=1E-15 maxheight <- max(abs(height), na.rm=TRUE) heightfactor <- 1 if (maxheight>10E15 && any(grep("P", kmg))) { heightfactor <- 1E15 heightscale <- "Peta" heightsymbol <- "P" } else if (maxheight>1E12 && any(grep("T", kmg))) { heightfactor <- 1E12 heightscale <- "Tera" heightsymbol <- "T" } else if (maxheight>1E09 && any(grep("G", kmg))) { heightfactor <- 1E09 heightscale <- "Giga" heightsymbol <- "G" } else if (maxheight>1E06 && any(grep("M", kmg))) { heightfactor <- 1E06 heightscale <- "Mega" heightsymbol <- "M" } else if (maxheight>1E03 && any(grep("k", kmg))) { heightfactor <- 1E03 heightscale <- "Kilo" heightsymbol <- "k" } else if (maxheight<1E-15 && any(grep("f", kmg))) { heightfactor <- 1E-15 heightscale <- "Femto" heightsymbol <- "f" } else if (maxheight<1E-12 && any(grep("p", kmg))) { heightfactor <- 1E-12 heightscale <- "Pico" heightsymbol <- "p" } else if (maxheight<1E-09 && any(grep("n", kmg))) { heightfactor <- 1E-09 heightscale <- "Nano" heightsymbol <- "n" } else if (maxheight<1E-06 && any(grep("u", kmg))) { heightfactor <- 1E-06 heightscale <- "Micro" heightsymbol <- "u" } else if (maxheight<1E-03 && any(grep("m", kmg))) { heightfactor <- 1E-03 heightscale <- "Milli" heightsymbol <- "m" } height <- height/heightfactor } ## fill the xaxis data set and matching rownames xaxis <- data[1, ] rownames <- rownames(data) ## if (missing(space)) space <- if (is.matrix(height) && beside) c(0, 1) else 0.2 space <- space * mean(width) ## if (plot && axisnames && missing(names.arg)) { if (type=="xyplot") names.arg <- colnames(height) else if (type=="linear") names.arg <- xaxis else if (type=="barplot") names.arg <- xaxis else if (type=="stackbar") names.arg <- xaxis else names.arg <- xaxis } ## set the legend text if it is null if(is.logical(legend.text)) legend.text <- rownames[-c(1)] ## if(legend.text && is.matrix(height)) rownames(height) ## else colnames(height) if (is.vector(height) || is.array(height)) { height <- rbind(height) } else if (!is.matrix(height)) stop("`height' must be a vector or a matrix") ## Check for log scales logx <- FALSE logy <- FALSE if (log !="") { if (any(grep("x", log))) logx <- TRUE if (any(grep("y", log))) logy <- TRUE } ## Cannot "hatch" with rect() when log scales used if ((logx || logy) && !is.null(density)) stop("Cannot use shading lines in bars when log scale is used") ## Set the size of Rows and Columns NR <- nrow(height) NC <- ncol(height) ## w.r, w.l, w.m are the x-axis coordinates if (type=="barplot") { if (NR<1) NR <- 1 if (NC<1) NC <- 1 if (length(space)==2) { space <- rep.int(c(space[2], rep.int(space[1], NR - 1)), NC) } width <- rep(width, length=NR * NC) } else if (type=="stackbar") { width <- rep(width, length=NC) } else { width <- rep(width, length=NC) delta <- width / 2 } ## set the proper x-axis scale ## linear is a switch between equidistant and scaled if (type=="xyplot") { delta <- 0 w.m <- xaxis w.r <- w.m + delta w.l <- w.m - delta } else if (type=="linear") { w.r <- cumsum(width) w.m <- w.r - delta w.l <- w.m - delta xaxis <- w.m } else if(type=="barplot" || type=="stackbar") { delta <- width / 2 w.r <- cumsum(space + width) w.m <- w.r - delta w.l <- w.m - delta ##if graphic will be stacked bars, do not plot ci if (beside && (NR > 1) && plot.ci) plot.ci=FALSE } else stop("Unkown plot type") ## error check ci arguments if (plot && plot.ci) { if ((missing(ci.l)) || (missing(ci.u))) stop("confidence interval values are missing") if (is.vector(ci.l)) ci.l <- cbind(ci.l) else if (is.array(ci.l) && (length(dim(ci.l))==1)) ci.l <- rbind(ci.l) else if (!is.matrix(ci.l)) stop("`ci.l' must be a vector or a matrix") if (is.vector(ci.u)) ci.u <- cbind(ci.u) else if (is.array(ci.u) && (length(dim(ci.u))==1)) ci.u <- rbind(ci.u) else if (!is.matrix(ci.u)) stop("`ci.u' must be a vector or a matrix") if ( any(dim(height) !=dim(ci.u) ) ) stop("'height' and 'ci.u' must have the same dimensions.") else if ( any( dim(height) !=dim(ci.l) ) ) stop("'height' and 'ci.l' must have the same dimensions.") } if (beside) w.m <- matrix(w.m, ncol=NC) ## check height/ci.l if using log scale to prevent log(<=0) error ## adjust appropriate ranges and bar base values if ((logx && horiz) || (logy && !horiz)) { if (min(height, na.rm=TRUE) <=0) stop("log scale error: at least one 'height' value <=0") if (plot.ci && (min(ci.l) <=0)) stop("log scale error: at least one lower c.i. value <=0") if (logx && !is.null(xlim) && (xlim[1] <=0)) stop("log scale error: 'xlim[1]' <=0") if (logy && !is.null(ylim) && (ylim[1] <=0)) stop("'log scale error: 'ylim[1]' <=0") ## arbitrary adjustment to display some of bar for min(height) ## or min(ci.l) if (plot.ci) rectbase <- rangeadj <- (0.9 * min(c(height, ci.l))) else rectbase <- rangeadj <- (0.9 * min(height)) ## if axis limit is set to < above, adjust bar base value ## to draw a full bar if (logy && !is.null(ylim)) rectbase <- ylim[1] else if (logx && !is.null(xlim)) rectbase <- xlim[1] ## if stacked bar, set up base/cumsum levels, adjusting for log scale if (type=="stackbar") { heightdata <- height ## remember the original values height <- rbind(rectbase, apply(height, 2, cumsum)) } ## if plot.ci, be sure that appropriate axis limits are set to ## include range(ci) lim <- if (plot.ci) c(height, ci.l, ci.u) else height } else { ## Use original bar base value rectbase <- 0 ## if stacked bar, set up base/cumsum levels if (type=="stackbar") { heightdata <- height ## remember the original values height <- rbind(rectbase, apply(height, 2, cumsum)) } ## if plot.ci, be sure that appropriate axis limits are set to ## include range(ci) lim <- if (plot.ci) c(height, ci.l, ci.u) else height ## use original range adjustment factor rangeadj <- (-0.01 * lim) } ## calculate the ranges ourselves if (missing(xlim)) xlim <- optlim(range(w.l, w.r, na.rm=TRUE), logx) if (missing(ylim)) ylim <- optlim(range(height, na.rm=TRUE), logy) ## if(plot) ##-------- Plotting : { if (type=="barplot" || type=="stackbar") { if (horiz) rectbase <- xlim[1] ## make sure the xlimit and the rectbase ## are in sync else rectbase <- ylim[1] ## make sure the ylimit and rectbase are in sync opar <- if (horiz) par(xaxs="i", xpd=xpd) else par(yaxs="i", xpd=xpd) } else { opar <- if (horiz) par(xaxs="r", yaxs="r", xpd=xpd) else par(xaxs="r", yaxs="r", xpd=xpd) } on.exit(par(opar)) ## If add=FALSE open new plot window ## else allow for adding new plot to existing window if (!add) { plot.new() plot.window(xlim, ylim, log=log, ...) } ## Set plot region coordinates usr <- par("usr") ## adjust par("usr") values if log scale(s) used if (logx) { usr[1] <- 10 ^ usr[1] usr[2] <- 10 ^ usr[2] } if (logy) { usr[3] <- 10 ^ usr[3] usr[4] <- 10 ^ usr[4] } ## if prcol specified, set plot region color if (!missing(prcol)) rect(usr[1], usr[3], usr[2], usr[4], col=prcol) ## if plot.grid, draw major y-axis lines if vertical or x axis ## if horizontal R V1.6.0 provided axTicks() as an R equivalent ## of the C code for CreateAtVector. Use this to determine ## default axis tick marks when log scale used to be consistent ## when no grid is plotted. Otherwise if grid.inc is specified, ## use pretty() if (plot.grid) { par(xpd=FALSE) if (is.null(grid.inc)) { if (horiz) { grid <- axTicks(1) abline(v=grid, lty=grid.lty, lwd=grid.lwd, col=grid.col) } else { grid <- axTicks(2) abline(h=grid, lty=grid.lty, lwd=grid.lwd, col=grid.col) } } else { if (horiz) { grid <- pretty(xlim, n=grid.inc) abline(v=grid, lty=grid.lty, lwd=grid.lwd, col=grid.col) } else { grid <- pretty(ylim, n=grid.inc) abline(h=grid, lty=grid.lty, lwd=grid.lwd, col=grid.col) } } par(xpd=xpd) } ## ## end of the general setup, now get ready to plot the elements ## ## cycle through all the sets and plot the lines if (type=="xyplot" || type=="linear") { pch <- c() for (i in 1:NR) { list <- is.finite(height[i, ]) xrange <- xaxis[list] yrange <- height[i, list] lines(xrange, yrange, col=col[i]) if ((type=="xyplot") && (lm==TRUE)) linearfitplot(xrange,yrange,xlim,col[i]) symbol=21+(i %% 5) points(xrange, yrange, pch=symbol, bg=col[i], col=col[i]) pch <- c(pch, symbol) ## if (prval) { values=paste(format(yrange, digits=4), heightsymbol, sep="") chh <- par()$cxy[2] chw <- par()$cxy[1] if (logy) { factor=(yrange+chh)/yrange text(xrange, 1.1*yrange, labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } else { text(xrange, yrange+chh, labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } } } } if (type=="barplot" || type=="stackbar") { xyrect <- function(x1, y1, x2, y2, horizontal=TRUE, ...) { if(horizontal) rect(x1, y1, x2, y2, ...) else rect(y1, x1, y2, x2, ...) } chh <- par()$cxy[2] chw <- par()$cxy[1] if (type=="barplot") { xyrect(rectbase, w.l, c(height), w.r, horizontal=horiz, angle=angle, density=density, col=col, border=border) if (prval) { values=paste(format(c(height), digits=4), heightsymbol, sep="") if (horiz) { text(c(height)+chw, w.l, labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } else { text(w.l, c(height)+chh, labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } } } else if (type=="stackbar") { for (i in 1:NC) { xyrect(height[1:NR, i], w.l[i], height[-1, i], w.r[i], horizontal=horiz, angle=angle, density=density, col=col, border=border) if (prval) { for (j in 1:NR) { values=paste(format(c(heightdata[j, i]), digits=4), heightsymbol, sep="") if (horiz) { text(c(height[j, i])+chw, w.m[i], labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } else { text(w.m[i], c(height[j, i])+chh, labels=values, adj=c(0, 1), srt=0, cex=cex.values, bg="white", col="navy") } } } } } } if (plot.ci) { ## CI plot width=barwidth / 2 ci.width=width / 4 if (horiz) { segments(ci.l, w.m, ci.u, w.m, col=ci.color, lty=ci.lty, lwd=ci.lwd) segments(ci.l, w.m - ci.width, ci.l, w.m + ci.width, col=ci.color, lty=ci.lty, lwd=ci.lwd) segments(ci.u, w.m - ci.width, ci.u, w.m + ci.width, col=ci.color, lty=ci.lty, lwd=ci.lwd) } else { segments(w.m, ci.l, w.m, ci.u, col=ci.color, lty=ci.lty, lwd=ci.lwd) segments(w.m - ci.width, ci.l, w.m + ci.width, ci.l, col=ci.color, lty=ci.lty, lwd=ci.lwd) segments(w.m - ci.width, ci.u, w.m + ci.width, ci.u, col=ci.color, lty=ci.lty, lwd=ci.lwd) } } if (axisnames && !is.null(names.arg)) # specified or from {col}names { at.l <- if (length(names.arg) !=length(w.m)) { if (length(names.arg)==NC) # i.e. beside (!) colMeans(w.m) else if ((type=="barplot") && (NR==1)) { median(w.m) } else if ((type=="linear") && (NR==1)) { median(w.m) } else { stop("incorrect number of names now") } } else w.m ##axis(if(horiz) 2 else 1, at=at.l, labels=names.arg, ## lty=axis.lty, cex.axis=cex.names, ...) } if(!is.null(legend.text)) { legend.col <- rep(col, length=length(legend.text)) if((horiz & beside) || (!horiz & !beside)) { legend.text <- rev(legend.text) legend.col <- rev(legend.col) density <- rev(density) angle <- rev(angle) } ## adjust legend x and y values if log scaling in use if (logx) legx <- usr[2] - ((usr[2] - usr[1]) / 10) else legx <- usr[2] - xinch(0.1) if (logy) legy <- usr[4] - ((usr[4] - usr[3]) / 10) else legy <- usr[4] - yinch(0.1) if (type=="barplot" || type=="stackbar") { legend(legx, legy, legend=legend.text, angle=angle, density=density, fill=legend.col, xjust=1, yjust=1) } else { legend(legx, legy, legend=legend.text, ##angle=angle, ##density=density, lwd=1, col=legend.col, pch=pch, pt.bg=legend.col, xjust=1, yjust=1) } } title(main=main, sub=sub, xlab=xlab, ylab=paste(heightscale, ylab), ...) ## if axis is to be plotted, adjust for grid "at" values if (axes) { par(lab=c(10, 10, 7)) if (type=="barplot" || type=="stackbar") { axis(if(horiz) 2 else 1, at=at.l, labels=names.arg, lty=axis.lty, cex.axis=cex.names, ...) if(plot.grid) axis(if(horiz) 1 else 2, at=grid, cex.axis=cex.axis, ...) else axis(if(horiz) 1 else 2, cex.axis=cex.axis, ...) } else if (type=="linear") { if(plot.grid) { axis(if(horiz) 1 else 2, at=grid, cex.axis=cex.axis, ...) axis(if(horiz) 2 else 1, at=at.l, labels=names.arg, lty=axis.lty, cex.axis=cex.names, ...) } else { axis(if(horiz) 1 else 2, pos=0, cex.axis=cex.axis, ...) axis(if(horiz) 2 else 1, pos=ylim[1], at=at.l, labels=names.arg, cex.axis=cex.names, ...) } } else if (type=="xyplot") { if(plot.grid) { axis(if(horiz) 1 else 2, at=grid, cex.axis=cex.axis, ...) axis(if(horiz) 2 else 1, cex.axis=cex.axis, ) } else { if (horiz) { axis(1, pos=ylim[1], cex.axis=cex.axis, ...) axis(2, pos=xlim[1], cex.axis=cex.axis, ...) } else { axis(2, pos=xlim[1], cex.axis=cex.axis, ...) axis(1, pos=ylim[1], cex.axis=cex.axis, ...) } } } } invisible(w.m) } else w.m } gplots/R/lowess.R0000644000175100001440000000260110526700073013437 0ustar hornikusers# $Id: lowess.R 1012 2006-11-14 22:25:06Z ggorjan $ if(is.R()) { # make original lowess into the default method if(R.version$major == 1 && R.version$minor < 9) lowess.default <- base::lowess else lowess.default <- stats::lowess lowess <- function(x,...) UseMethod("lowess") # add "..." to the argument list to match the generic formals(lowess.default) <- c(formals(lowess.default),alist(...= )) NULL } else { # make original lowess into the default method lowess.default <- getFunction("lowess",where="main") lowess <- function(x,...) UseMethod("lowess") NULL } "lowess.formula" <- function (formula, data = parent.frame(), subset, na.action, f=2/3, iter=3, delta=.01*diff(range(mf[-response])), ... ) { if (missing(formula) || (length(formula) != 3)) stop("formula missing or incorrect") if (missing(na.action)) na.action <- getOption("na.action") m <- match.call(expand.dots = FALSE) if (is.matrix(eval(m$data, parent.frame()))) m$data <- as.data.frame(data) m$... <- m$f <- m$iter <- m$delta <- NULL m[[1]] <- as.name("model.frame") mf <- eval(m, parent.frame()) response <- attr(attr(mf, "terms"), "response") lowess.default(mf[[-response]], mf[[response]], f=f, iter=iter, delta=delta) } gplots/R/hist2d.R0000644000175100001440000000374711764150764013347 0ustar hornikusers# $Id: hist2d.R 1555 2012-06-07 16:08:18Z warnes $ hist2d <- function(x, y=NULL, nbins=200, same.scale=FALSE, na.rm=TRUE, show=TRUE, col=c("black", heat.colors(12)), FUN=base::length, xlab, ylab, ... ) { if(is.null(y)) { if(ncol(x) != 2) stop("If y is ommitted, x must be a 2 column matirx") y <- x[,2] x <- x[,1] } if(length(nbins)==1) nbins <- rep(nbins,2) nas <- is.na(x) | is.na(y) if(na.rm) { x <- x[!nas] y <- y[!nas] } else stop("missinig values not permitted if na.rm=FALSE") if(same.scale) { x.cuts <- seq( from=min(x,y), to=max(x,y), length=nbins[1]+1) y.cuts <- seq( from=min(x,y), to=max(x,y), length=nbins[2]+1) } else { x.cuts <- seq( from=min(x), to=max(x), length=nbins[1]+1) y.cuts <- seq( from=min(y), to=max(y), length=nbins[2]+1) } index.x <- cut( x, x.cuts, include.lowest=TRUE) index.y <- cut( y, y.cuts, include.lowest=TRUE) ## tapply is faster than old for() loop, and allows ## use of any user-specified summary function m <- tapply(x,list(index.x,index.y),FUN) ## If we're using length, set empty cells to 0 instead of NA if(identical(FUN,base::length)) m[is.na(m)] <- 0 if(missing(xlab)) xlab <- deparse(substitute(xlab)) if(missing(ylab)) ylab <- deparse(substitute(ylab)) if(show) image( x.cuts, y.cuts, m, col=col, xlab=xlab, ylab=ylab, ...) midpoints <- function(x) (x[-1]+x[-length(x)])/2 retval <- list() retval$counts <- m retval$x.breaks = x.cuts retval$y.breaks = y.cuts retval$x = midpoints(x.cuts) retval$y = midpoints(y.cuts) retval$nobs = length(x) retval$call <- match.call() class(retval) <- "hist2d" retval } gplots/R/heatmap.2.R0000644000175100001440000004056612163116774013726 0ustar hornikusers## $Id: heatmap.2.R 1625 2012-12-14 21:54:52Z warnes $ heatmap.2 <- function (x, ## dendrogram control Rowv = TRUE, Colv=if(symm)"Rowv" else TRUE, distfun = dist, hclustfun = hclust, dendrogram = c("both","row","column","none"), symm = FALSE, ## data scaling scale = c("none","row", "column"), na.rm=TRUE, ## image plot revC = identical(Colv, "Rowv"), add.expr, ## mapping data to colors breaks, symbreaks=min(x < 0, na.rm=TRUE) || scale!="none", ## colors col="heat.colors", ## block sepration colsep, rowsep, sepcolor="white", sepwidth=c(0.05,0.05), ## cell labeling cellnote, notecex=1.0, notecol="cyan", na.color=par("bg"), ## level trace trace=c("column","row","both","none"), tracecol="cyan", hline=median(breaks), vline=median(breaks), linecol=tracecol, ## Row/Column Labeling margins = c(5, 5), ColSideColors, RowSideColors, cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc), labRow = NULL, labCol = NULL, ## color key + density info key = TRUE, keysize = 1.5, density.info=c("histogram","density","none"), denscol=tracecol, symkey = min(x < 0, na.rm=TRUE) || symbreaks, densadj = 0.25, ## plot labels main = NULL, xlab = NULL, ylab = NULL, ## plot layout lmat = NULL, lhei = NULL, lwid = NULL, ## extras ... ) { scale01 <- function(x, low=min(x), high=max(x) ) { x <- (x-low)/(high - low) x } retval <- list() scale <- if(symm && missing(scale)) "none" else match.arg(scale) dendrogram <- match.arg(dendrogram) trace <- match.arg(trace) density.info <- match.arg(density.info) if(length(col)==1 && is.character(col) ) col <- get(col, mode="function") if(!missing(breaks) && (scale!="none")) warning("Using scale=\"row\" or scale=\"column\" when breaks are", "specified can produce unpredictable results.", "Please consider using only one or the other.") ## key & density don't make sense when data is not all on the same scale ## if(scale!="none" && key==TRUE) ## { ## warning("Key cannot be plotted when scale!=\"none\".") ## key=FALSE ## } if ( is.null(Rowv) || is.na(Rowv) ) Rowv <- FALSE if ( is.null(Colv) || is.na(Colv) ) Colv <- FALSE else if( Colv=="Rowv" && !isTRUE(Rowv) ) Colv <- FALSE if(length(di <- dim(x)) != 2 || !is.numeric(x)) stop("`x' must be a numeric matrix") nr <- di[1] nc <- di[2] if(nr <= 1 || nc <= 1) stop("`x' must have at least 2 rows and 2 columns") if(!is.numeric(margins) || length(margins) != 2) stop("`margins' must be a numeric vector of length 2") if(missing(cellnote)) cellnote <- matrix("", ncol=ncol(x), nrow=nrow(x)) if(!inherits(Rowv, "dendrogram")) { ## Check if Rowv and dendrogram arguments are consistent if ( ( (!isTRUE(Rowv)) || (is.null(Rowv))) && (dendrogram %in% c("both","row") ) ) { if (is.logical(Colv) && (Colv)) dendrogram <- "column" else dedrogram <- "none" warning("Discrepancy: Rowv is FALSE, while dendrogram is `", dendrogram, "'. Omitting row dendogram.") } } if(!inherits(Colv, "dendrogram")) { ## Check if Colv and dendrogram arguments are consistent if ( ( (!isTRUE(Colv)) || (is.null(Colv))) && (dendrogram %in% c("both","column")) ) { if (is.logical(Rowv) && (Rowv)) dendrogram <- "row" else dendrogram <- "none" warning("Discrepancy: Colv is FALSE, while dendrogram is `", dendrogram, "'. Omitting column dendogram.") } } ## by default order by row/col mean ## if(is.null(Rowv)) Rowv <- rowMeans(x, na.rm = na.rm) ## if(is.null(Colv)) Colv <- colMeans(x, na.rm = na.rm) ## get the dendrograms and reordering indices ## if( dendrogram %in% c("both","row") ) ## { ## dendrogram option is used *only* for display purposes if(inherits(Rowv, "dendrogram")) { ddr <- Rowv ## use Rowv 'as-is', when it is dendrogram rowInd <- order.dendrogram(ddr) } else if (is.integer(Rowv)) { ## Compute dendrogram and do reordering based on given vector hcr <- hclustfun(distfun(x)) ddr <- as.dendrogram(hcr) ddr <- reorder(ddr, Rowv) rowInd <- order.dendrogram(ddr) if(nr != length(rowInd)) stop("row dendrogram ordering gave index of wrong length") } else if (isTRUE(Rowv)) { ## If TRUE, compute dendrogram and do reordering based on rowMeans Rowv <- rowMeans(x, na.rm = na.rm) hcr <- hclustfun(distfun(x)) ddr <- as.dendrogram(hcr) ddr <- reorder(ddr, Rowv) rowInd <- order.dendrogram(ddr) if(nr != length(rowInd)) stop("row dendrogram ordering gave index of wrong length") } else { rowInd <- nr:1 } ## if( dendrogram %in% c("both","column") ) ## { if(inherits(Colv, "dendrogram")) { ddc <- Colv ## use Colv 'as-is', when it is dendrogram colInd <- order.dendrogram(ddc) } else if(identical(Colv, "Rowv")) { if(nr != nc) stop('Colv = "Rowv" but nrow(x) != ncol(x)') if(exists("ddr")) { ddc <- ddr colInd <- order.dendrogram(ddc) } else colInd <- rowInd } else if(is.integer(Colv)) {## Compute dendrogram and do reordering based on given vector hcc <- hclustfun(distfun(if(symm)x else t(x))) ddc <- as.dendrogram(hcc) ddc <- reorder(ddc, Colv) colInd <- order.dendrogram(ddc) if(nc != length(colInd)) stop("column dendrogram ordering gave index of wrong length") } else if (isTRUE(Colv)) {## If TRUE, compute dendrogram and do reordering based on rowMeans Colv <- colMeans(x, na.rm = na.rm) hcc <- hclustfun(distfun(if(symm)x else t(x))) ddc <- as.dendrogram(hcc) ddc <- reorder(ddc, Colv) colInd <- order.dendrogram(ddc) if(nc != length(colInd)) stop("column dendrogram ordering gave index of wrong length") } else { colInd <- 1:nc } retval$rowInd <- rowInd retval$colInd <- colInd retval$call <- match.call() ## reorder x & cellnote x <- x[rowInd, colInd] x.unscaled <- x cellnote <- cellnote[rowInd, colInd] if(is.null(labRow)) labRow <- if(is.null(rownames(x))) (1:nr)[rowInd] else rownames(x) else labRow <- labRow[rowInd] if(is.null(labCol)) labCol <- if(is.null(colnames(x))) (1:nc)[colInd] else colnames(x) else labCol <- labCol[colInd] if(scale == "row") { retval$rowMeans <- rm <- rowMeans(x, na.rm = na.rm) x <- sweep(x, 1, rm) retval$rowSDs <- sx <- apply(x, 1, sd, na.rm = na.rm) x <- sweep(x, 1, sx, "/") } else if(scale == "column") { retval$colMeans <- rm <- colMeans(x, na.rm = na.rm) x <- sweep(x, 2, rm) retval$colSDs <- sx <- apply(x, 2, sd, na.rm = na.rm) x <- sweep(x, 2, sx, "/") } ## Set up breaks and force values outside the range into the endmost bins if(missing(breaks) || is.null(breaks) || length(breaks)<1 ) { if( missing(col) || is.function(col) ) breaks <- 16 else breaks <- length(col)+1 } if(length(breaks)==1) { if(!symbreaks) breaks <- seq( min(x, na.rm=na.rm), max(x,na.rm=na.rm), length=breaks) else { extreme <- max(abs(x), na.rm=TRUE) breaks <- seq( -extreme, extreme, length=breaks ) } } nbr <- length(breaks) ncol <- length(breaks)-1 if(class(col)=="function") col <- col(ncol) min.breaks <- min(breaks) max.breaks <- max(breaks) x[xmax.breaks] <- max.breaks ## Calculate the plot layout if( missing(lhei) || is.null(lhei) ) lhei <- c(keysize, 4) if( missing(lwid) || is.null(lwid) ) lwid <- c(keysize, 4) if( missing(lmat) || is.null(lmat) ) { lmat <- rbind(4:3, 2:1) if(!missing(ColSideColors)) { ## add middle row to layout if(!is.character(ColSideColors) || length(ColSideColors) != nc) stop("'ColSideColors' must be a character vector of length ncol(x)") lmat <- rbind(lmat[1,]+1, c(NA,1), lmat[2,]+1) lhei <- c(lhei[1], 0.2, lhei[2]) } if(!missing(RowSideColors)) { ## add middle column to layout if(!is.character(RowSideColors) || length(RowSideColors) != nr) stop("'RowSideColors' must be a character vector of length nrow(x)") lmat <- cbind(lmat[,1]+1, c(rep(NA, nrow(lmat)-1), 1), lmat[,2]+1) lwid <- c(lwid[1], 0.2, lwid[2]) } lmat[is.na(lmat)] <- 0 } if(length(lhei) != nrow(lmat)) stop("lhei must have length = nrow(lmat) = ", nrow(lmat)) if(length(lwid) != ncol(lmat)) stop("lwid must have length = ncol(lmat) =", ncol(lmat)) ## Graphics `output' ----------------------- op <- par(no.readonly = TRUE) on.exit(par(op)) layout(lmat, widths = lwid, heights = lhei, respect = FALSE) ## draw the side bars if(!missing(RowSideColors)) { par(mar = c(margins[1],0, 0,0.5)) image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE) } if(!missing(ColSideColors)) { par(mar = c(0.5,0, 0,margins[2])) image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE) } ## draw the main carpet par(mar = c(margins[1], 0, 0, margins[2])) #if(scale != "none" || !symm) # { x <- t(x) cellnote <- t(cellnote) # } if(revC) { ## x columns reversed iy <- nr:1 if(exists("ddr")) ddr <- rev(ddr) x <- x[,iy] cellnote <- cellnote[,iy] } else iy <- 1:nr ## display the main carpet image(1:nc, 1:nr, x, xlim = 0.5+ c(0, nc), ylim = 0.5+ c(0, nr), axes = FALSE, xlab = "", ylab = "", col=col, breaks=breaks, ...) retval$carpet <- x if(exists("ddr")) retval$rowDendrogram <- ddr if(exists("ddc")) retval$colDendrogram <- ddc retval$breaks <- breaks retval$col <- col ## fill 'na' positions with na.color if(!invalid(na.color) & any(is.na(x))) { mmat <- ifelse(is.na(x), 1, NA) image(1:nc, 1:nr, mmat, axes = FALSE, xlab = "", ylab = "", col=na.color, add=TRUE) } ## add labels axis(1, 1:nc, labels= labCol, las= 2, line= -0.5, tick= 0, cex.axis= cexCol) if(!is.null(xlab)) mtext(xlab, side = 1, line = margins[1] - 1.25) axis(4, iy, labels= labRow, las= 2, line= -0.5, tick= 0, cex.axis= cexRow) if(!is.null(ylab)) mtext(ylab, side = 4, line = margins[2] - 1.25) ## perform user-specified function if (!missing(add.expr)) eval(substitute(add.expr)) ## add 'background' colored spaces to visually separate sections if(!missing(colsep)) for(csep in colsep) rect(xleft =csep+0.5, ybottom=0, xright=csep+0.5+sepwidth[1], ytop=ncol(x)+1, lty=1, lwd=1, col=sepcolor, border=sepcolor) if(!missing(rowsep)) for(rsep in rowsep) rect(xleft =0, ybottom= (ncol(x)+1-rsep)-0.5, xright=nrow(x)+1, ytop = (ncol(x)+1-rsep)-0.5 - sepwidth[2], lty=1, lwd=1, col=sepcolor, border=sepcolor) ## show traces min.scale <- min(breaks) max.scale <- max(breaks) x.scaled <- scale01(t(x), min.scale, max.scale) if(trace %in% c("both","column") ) { retval$vline <- vline vline.vals <- scale01(vline, min.scale, max.scale) for( i in colInd ) { if(!is.null(vline)) { abline(v=i-0.5 + vline.vals, col=linecol, lty=2) } xv <- rep(i, nrow(x.scaled)) + x.scaled[,i] - 0.5 xv <- c(xv[1], xv) yv <- 1:length(xv)-0.5 lines(x=xv, y=yv, lwd=1, col=tracecol, type="s") } } if(trace %in% c("both","row") ) { retval$hline <- hline hline.vals <- scale01(hline, min.scale, max.scale) for( i in rowInd ) { if(!is.null(hline)) { abline(h=i + hline, col=linecol, lty=2) } yv <- rep(i, ncol(x.scaled)) + x.scaled[i,] - 0.5 yv <- rev(c(yv[1], yv)) xv <- length(yv):1-0.5 lines(x=xv, y=yv, lwd=1, col=tracecol, type="s") } } if(!missing(cellnote)) text(x=c(row(cellnote)), y=c(col(cellnote)), labels=c(cellnote), col=notecol, cex=notecex) ## the two dendrograms : par(mar = c(margins[1], 0, 0, 0)) if( dendrogram %in% c("both","row") ) { plot(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none") } else plot.new() par(mar = c(0, 0, if(!is.null(main)) 5 else 0, margins[2])) if( dendrogram %in% c("both","column") ) { plot(ddc, axes = FALSE, xaxs = "i", leaflab = "none") } else plot.new() ## title if(!is.null(main)) title(main, cex.main = 1.5*op[["cex.main"]]) ## Add the color-key if(key) { par(mar = c(5, 4, 2, 1), cex=0.75) tmpbreaks <- breaks if(symkey) { max.raw <- max(abs(c(x,breaks)),na.rm=TRUE) min.raw <- -max.raw tmpbreaks[1] <- -max(abs(x), na.rm=TRUE) tmpbreaks[length(tmpbreaks)] <- max(abs(x), na.rm=TRUE) } else { min.raw <- min(x, na.rm=TRUE) ## Again, modified to use scaled max.raw <- max(x, na.rm=TRUE) ## or unscaled (SD 12/2/03) } z <- seq(min.raw, max.raw, length=length(col)) image(z=matrix(z, ncol=1), col=col, breaks=tmpbreaks, xaxt="n", yaxt="n") par(usr=c(0,1,0,1)) lv <- pretty(breaks) xv <- scale01(as.numeric(lv), min.raw, max.raw) axis(1, at=xv, labels=lv) if(scale=="row") mtext(side=1,"Row Z-Score", line=2) else if(scale=="column") mtext(side=1,"Column Z-Score", line=2) else mtext(side=1,"Value", line=2) if(density.info=="density") { ## Experimental : also plot density of data dens <- density(x, adjust=densadj, na.rm=TRUE) omit <- dens$x < min(breaks) | dens$x > max(breaks) dens$x <- dens$x[-omit] dens$y <- dens$y[-omit] dens$x <- scale01(dens$x,min.raw,max.raw) lines(dens$x, dens$y / max(dens$y) * 0.95, col=denscol, lwd=1) axis(2, at=pretty(dens$y)/max(dens$y) * 0.95, pretty(dens$y) ) title("Color Key\nand Density Plot") par(cex=0.5) mtext(side=2,"Density", line=2) } else if(density.info=="histogram") { h <- hist(x, plot=FALSE, breaks=breaks) hx <- scale01(breaks,min.raw,max.raw) hy <- c(h$counts, h$counts[length(h$counts)]) lines(hx, hy/max(hy)*0.95, lwd=1, type="s", col=denscol) axis(2, at=pretty(hy)/max(hy) * 0.95, pretty(hy) ) title("Color Key\nand Histogram") par(cex=0.5) mtext(side=2,"Count", line=2) } else title("Color Key") } else plot.new() ## Create a table showing how colors match to (transformed) data ranges retval$colorTable <- data.frame( low=retval$breaks[-length(retval$breaks)], high=retval$breaks[-1], color=retval$col ) invisible( retval ) } gplots/R/colorpanel.R0000644000175100001440000000344610451013277014271 0ustar hornikusers# $Id: colorpanel.R 736 2005-11-18 00:16:28Z warnes $ colorpanel <- function(n,low,mid,high) { if(missing(mid) || missing(high) ) { ## convert to rgb low <- col2rgb(low) if(missing(high)) high <- col2rgb(mid) else high <- col2rgb(high) red <- seq(low[1,1], high[1,1], length=n)/255 green <- seq(low[3,1], high[3,1], length=n)/255 blue <- seq(low[2,1], high[2,1], length=n)/255 } else # use a center color { isodd <- odd(n) if(isodd) { n <- n+1 } ## convert to rgb low <- col2rgb(low) mid <- col2rgb(mid) high <- col2rgb(high) ## determine length of each component lower <- floor(n/2) upper <- n - lower red <- c( seq(low[1,1], mid [1,1], length=lower), seq(mid[1,1], high[1,1], length=upper) )/255 green <- c( seq(low[3,1], mid [3,1], length=lower), seq(mid[3,1], high[3,1], length=upper) )/255 blue <- c( seq(low[2,1], mid [2,1], length=lower), seq(mid[2,1], high[2,1], length=upper) )/255 if(isodd) { red <- red [-(lower+1)] green <- green[-(lower+1)] blue <- blue [-(lower+1)] } } rgb(red,blue,green) } # Generate red-to-green colorscale redgreen <- function(n) colorpanel(n, 'red', 'black', 'green') greenred <- function(n) colorpanel(n, 'green', 'black', 'red' ) bluered <- function(n) colorpanel(n, 'blue','white','red') redblue <- function(n) colorpanel(n, 'red','white','blue') gplots/R/col2hex.R0000644000175100001440000000025111264136456013476 0ustar hornikuserscol2hex <- function(cname) { colMat <- col2rgb(cname) rgb( red=colMat[1,]/255, green=colMat[2,]/255, blue=colMat[3,]/255 ) } gplots/R/ci2d.R0000644000175100001440000001051511764143525012757 0ustar hornikusers# $Id: ci2d.R 1471 2011-08-16 01:03:31Z warnes $ ## first(...) selects the first element of which(...) first <- function(x,...) { w <- which(x,...) if(length(x)>1) w[1] else w } ## first(...) selects the first element of which(...) last <- function(x,...) { w <- which(x,...) if(length(x)>1) rev(w)[1] else w } ## non-parametric 2 dimensional approximate confidence interval ci2d <- function(x, y = NULL, nbins=51, method=c("bkde2D","hist2d"), bandwidth, factor=1.0, ci.levels=c(0.50,0.75,0.90,0.95,0.975), show=c("filled.contour","contour","image","none"), col=topo.colors(length(breaks)-1), show.points=FALSE, pch=par("pch"), points.col="red", xlab, ylab, ...) { show <- match.arg(show) method <- match.arg(method) breaks <- unique(c(0, ci.levels, 1.0)) # get labels for x and y if (missing(xlab)) xlab <- if (missing(x)) "" else deparse(substitute(x)) if (missing(ylab)) ylab <- if (missing(y)) "" else deparse(substitute(y)) if(!is.null(y)) x <- cbind(x,y) if(method=="hist2d") { h2d <- hist2d(x, show=FALSE, nbins=nbins, ...) ## normalize h2d$density <- h2d$counts / sum(h2d$counts, na.rm=TRUE) } else if (method=="bkde2D") { if(length(nbins)==1) nbins <- c(nbins, nbins) if(missing(bandwidth)) { h.x = dpik(x[,1]) h.y = dpik(x[,2]) bandwidth <- c(h.x, h.y) } est <- bkde2D(x, bandwidth=bandwidth*factor, gridsize=nbins, ... ) h2d <- list() h2d$x <- est$x1 h2d$y <- est$x2 h2d$counts <- est$fhat h2d$nobs <- nrow(x) h2d$density <- est$fhat / sum(est$fhat) # normalize } else stop("Unknown method: '", method, "'") uniqueVals <- rev(unique(sort(h2d$density))) cumProbs <- sapply(uniqueVals, function(val) sum( h2d$density[h2d$density>=val] ) ) names(cumProbs) <- uniqueVals h2d$cumDensity <- matrix(nrow=nrow(h2d$density), ncol=ncol(h2d$density)) h2d$cumDensity[] <- cumProbs[as.character(h2d$density)] if(show=="image") { image(h2d$x, h2d$y, h2d$cumDensity, xlab=xlab, ylab=ylab, breaks=breaks, col=col) if(show.points) points(x[,1], x[,2], pch=pch, col=points.col); } else if(show=="filled.contour") { if(show.points) plot.title <- function() { points(x[,1], x[,2], pch=pch, col=points.col); } else plot.title <- function() {} filled.contour(h2d$x, h2d$y, h2d$cumDensity, levels=breaks, col=col, xlab=xlab, ylab=ylab, plot.title=plot.title(), key.title=title("\nCI Level"), key.axes=axis(4, at=breaks) ) } else if(show=="contour") { tmpBreaks <- breaks[breaks<1] # avoid having 1.0 line contour(h2d$x, h2d$y, h2d$cumDensity, levels=tmpBreaks, labels=tmpBreaks, xlab=xlab, ylab=ylab, nlevels=length(tmpBreaks), col=col ) if(show.points) points(x[,1], x[,2], pch=pch, col=points.col); } h2d$contours <- contourLines(h2d$x, h2d$y, h2d$cumDensity, levels=breaks, nlevels=length(breaks)) # use the confidence level value as the name in the contour list names(h2d$contours) <- sapply(h2d$contours, function(x) x$level) # convert each contour into a (x,y) dataframe h2d$contours <- lapply( h2d$contours, function(J) data.frame(x=J$x, y=J$y) ) h2d$call <- match.call() class(h2d) <- "ci2d" invisible(h2d) } gplots/R/boxplot.n.R0000644000175100001440000000221310526700073014045 0ustar hornikusers# $Id: boxplot.n.R 1012 2006-11-14 22:25:06Z ggorjan $ boxplot.n <- function( ..., top=FALSE, shrink=1.0, textcolor=NULL ) { boxcall <- match.call() # get call boxcall$top <- boxcall$shrink <- boxcall$textcolor <- NULL boxcall[[1]] <- as.name("boxplot") if(is.R()) { box <- eval(boxcall, parent.frame()) mids <- 1:length(box$n) } else { mids <- eval(boxcall, parent.frame()) boxcall$plot <- FALSE box <- eval(boxcall, parent.frame()) } if(top) { where <- par("usr")[4] adj <- c(0.5,1) } else { where <- par("usr")[3] adj <- c(0.5,0) } tcex <- par("cex") par(cex=shrink*tcex) if(is.R()) text( x=mids, y=where, labels=paste("n=",box$n,sep=""), adj=adj, col=textcolor) else { if( is.null(textcolor) ) textcolor <- 1 space <- ifelse(top, -1, 1) * par("1em")[2] / 2 text( x=mids, y=where + space, labels=paste("n=",box$n,sep=""), adj=adj[1], col=textcolor) } par(cex=tcex) invisible(box) } gplots/R/baseOf.R0000644000175100001440000000077111404313464013330 0ustar hornikusers # transform base # v = value of base 10 to be transformed # b = new base # l = minimal length of returned array (default is 1) # return value: array of factors, highest exponent first baseOf<-function(v,b,l=1) { remainder<-v i<-l ret<-NULL while(remainder>0 || i>0) { #print(paste("i=",i," remainder=",remainder)) m<-remainder%%b if (is.null(ret)) { ret<-m } else { ret<-c(m,ret) } remainder <- remainder %/% b i<-i-1 } return(ret) } gplots/R/barplot2.R0000644000175100001440000003123512163117626013662 0ustar hornikusers# Revision 2.1 2005/06/06 # - Modified default behavior with 0's and NA's in # 'height' so that these values are not plotted. # - Warning messages added in the case of the above. # Revision 2.0 2005/04/27 # - Added panel.first and panel.last arguments # - As per R 2.0.0, the default barplot() method by default uses a # gamma-corrected grey palette (rather than the heat color # palette) for coloring its output when given a matrix. barplot2 <- function(height, ...) UseMethod("barplot2") barplot2.default <- function( height, width = 1, space = NULL, names.arg = NULL, legend.text = NULL, beside = FALSE, horiz = FALSE, density = NULL, angle = 45, col = NULL, prcol = NULL, border = par("fg"), main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, xpd = TRUE, log = "", axes = TRUE, axisnames = TRUE, cex.axis = par("cex.axis"), cex.names = par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty = 0, offset = 0, plot.ci = FALSE, ci.l = NULL, ci.u = NULL, ci.color = "black", ci.lty = "solid", ci.lwd = 1, ci.width = 0.5, plot.grid = FALSE, grid.inc = NULL, grid.lty = "dotted", grid.lwd = 1, grid.col = "black", add = FALSE, panel.first = NULL, panel.last = NULL, ...) { if (!missing(inside)) .NotYetUsed("inside", error = FALSE)# -> help(.) if (missing(space)) space <- if (is.matrix(height) && beside) c(0, 1) else 0.2 space <- space * mean(width) if (plot && axisnames && missing(names.arg)) names.arg <- if(is.matrix(height)) colnames(height) else names(height) if (is.vector(height) || (is.array(height) && (length(dim(height)) == 1))) { ## Treat vectors and 1-d arrays the same. height <- cbind(height) beside <- TRUE ## The above may look strange, but in particular makes color ## specs work as most likely expected by the users. if(is.null(col)) col <- "grey" } else if (is.matrix(height)) { ## In the matrix case, we use " heat colors" by default. if(is.null(col)) col <- heat.colors(nrow(height)) } else stop(paste(sQuote("height"), "must be a vector or a matrix")) if(is.logical(legend.text)) legend.text <- if(legend.text && is.matrix(height)) rownames(height) # Check for log scales logx <- FALSE logy <- FALSE if (log != "") { if (any(grep("x", log))) logx <- TRUE if (any(grep("y", log))) logy <- TRUE } # Cannot "hatch" with rect() when log scales used if ((logx || logy) && !is.null(density)) stop("Cannot use shading lines in bars when log scale is used") NR <- nrow(height) NC <- ncol(height) if (beside) { if (length(space) == 2) space <- rep.int(c(space[2], rep.int(space[1], NR - 1)), NC) width <- rep(width, length.out = NR) } else width <- rep(width, length.out = NC) offset <- rep(as.vector(offset), length.out = length(width)) delta <- width / 2 w.r <- cumsum(space + width) w.m <- w.r - delta w.l <- w.m - delta #if graphic will be stacked bars, do not plot ci if (!beside && (NR > 1) && plot.ci) plot.ci = FALSE # error check ci arguments if (plot && plot.ci) { if ((missing(ci.l)) || (missing(ci.u))) stop("confidence interval values are missing") if (is.vector(ci.l) || (is.array(ci.l) && (length(dim(ci.l)) == 1))) ci.l <- cbind(ci.l) else if (!is.matrix(ci.l)) stop(paste(sQuote("ci.l"), "must be a vector or a matrix")) if (is.vector(ci.u) || (is.array(ci.u) && (length(dim(ci.u)) == 1))) ci.u <- cbind(ci.u) else if (!is.matrix(ci.u)) stop(paste(sQuote("ci.u"), "must be a vector or a matrix")) if (any(dim(height) != dim(ci.u))) stop(paste(sQuote("height"), "and", sQuote("ci.u"), "must have the same dimensions.")) else if (any(dim(height) != dim(ci.l))) stop(paste(sQuote("height"), "and", sQuote("ci.l"), "must have the same dimensions.")) } # check height + offset/ci.l if using log scale to prevent log(<=0) error # adjust appropriate ranges and bar base values if ((logx && horiz) || (logy && !horiz)) { # Check for NA values and issue warning if required height.na <- sum(is.na(height)) if (height.na > 0) { warning(sprintf("%.0f values == NA in 'height' omitted from logarithmic plot", height.na), domain = NA) } # Check for 0 values and issue warning if required # _FOR NOW_ change 0's to NA's so that other calculations are not # affected. 0's and NA's affect plot output in the same way anyway, # except for stacked bars, so don't change those. height.lte0 <- sum(height <= 0, na.rm = TRUE) if (height.lte0 > 0) { warning(sprintf("%0.f values <=0 in 'height' omitted from logarithmic plot", height.lte0), domain = NA) # If NOT stacked bars, modify 'height' if (beside) height[height <= 0] <- NA } if (plot.ci && (min(ci.l) <= 0)) stop("log scale error: at least one lower c.i. value <= 0") if (logx && !is.null(xlim) && (xlim[1] <= 0)) stop("log scale error: 'xlim[1]' <= 0") if (logy && !is.null(ylim) && (ylim[1] <= 0)) stop("'log scale error: 'ylim[1]' <= 0") # arbitrary adjustment to display some of bar for min(height) since # 0 cannot be used with log scales. If plot.ci, also check ci.l if (plot.ci) { rectbase <- c(height[is.finite(height)], ci.l) rectbase <- min(0.9 * rectbase[rectbase > 0]) } else { rectbase <- height[is.finite(height)] rectbase <- min(0.9 * rectbase[rectbase > 0]) } # if axis limit is set to < above, adjust bar base value # to draw a full bar if (logy && !is.null(ylim) && !horiz) rectbase <- ylim[1] else if (logx && !is.null(xlim) && horiz) rectbase <- xlim[1] # if stacked bar, set up base/cumsum levels, adjusting for log scale if (!beside) height <- rbind(rectbase, apply(height, 2, cumsum)) # if plot.ci, be sure that appropriate axis limits are set to include range(ci) lim <- if (plot.ci) c(height, ci.l, ci.u) else height rangeadj <- c(0.9 * lim + offset, lim + offset) rangeadj <- rangeadj[rangeadj > 0] } else { # Use original bar base value rectbase <- 0 # if stacked bar, set up base/cumsum levels if (!beside) height <- rbind(rectbase, apply(height, 2, cumsum)) # if plot.ci, be sure that appropriate axis limits are set to include range(ci) lim <- if (plot.ci) c(height, ci.l, ci.u) else height # use original range adjustment factor rangeadj <- c(-0.01 * lim + offset, lim + offset) } # define xlim and ylim, adjusting for log-scale if needed if (horiz) { if (missing(xlim)) xlim <- range(rangeadj, na.rm=TRUE) if (missing(ylim)) ylim <- c(min(w.l), max(w.r)) } else { if (missing(xlim)) xlim <- c(min(w.l), max(w.r)) if (missing(ylim)) ylim <- range(rangeadj, na.rm=TRUE) } if (beside) w.m <- matrix(w.m, ncol = NC) if(plot) ##-------- Plotting : { opar <- if (horiz) par(xaxs = "i", xpd = xpd) else par(yaxs = "i", xpd = xpd) on.exit(par(opar)) # If add = FALSE open new plot window # else allow for adding new plot to existing window if (!add) { plot.new() plot.window(xlim, ylim, log = log, ...) } # Execute the panel.first expression. This will work here # even if 'add = TRUE' panel.first # Set plot region coordinates usr <- par("usr") # adjust par("usr") values if log scale(s) used if (logx) { usr[1] <- 10 ^ usr[1] usr[2] <- 10 ^ usr[2] } if (logy) { usr[3] <- 10 ^ usr[3] usr[4] <- 10 ^ usr[4] } # if prcol specified, set plot region color if (!missing(prcol)) rect(usr[1], usr[3], usr[2], usr[4], col = prcol) # if plot.grid, draw major y-axis lines if vertical or x axis if horizontal # R V1.6.0 provided axTicks() as an R equivalent of the C code for # CreateAtVector. Use this to determine default axis tick marks when log # scale used to be consistent when no grid is plotted. # Otherwise if grid.inc is specified, use pretty() if (plot.grid) { par(xpd = FALSE) if (is.null(grid.inc)) { if (horiz) { grid <- axTicks(1) abline(v = grid, lty = grid.lty, lwd = grid.lwd, col = grid.col) } else { grid <- axTicks(2) abline(h = grid, lty = grid.lty, lwd = grid.lwd, col = grid.col) } } else { if (horiz) { grid <- pretty(xlim, n = grid.inc) abline(v = grid, lty = grid.lty, lwd = grid.lwd, col = grid.col) } else { grid <- pretty(ylim, n = grid.inc) abline(h = grid, lty = grid.lty, lwd = grid.lwd, col = grid.col) } } par(xpd = xpd) } xyrect <- function(x1,y1, x2,y2, horizontal = TRUE, ...) { if(horizontal) rect(x1,y1, x2,y2, ...) else rect(y1,x1, y2,x2, ...) } if (beside) xyrect(rectbase + offset, w.l, c(height) + offset, w.r, horizontal=horiz, angle = angle, density = density, col = col, border = border) else { for (i in 1:NC) xyrect(height[1:NR, i] + offset[i], w.l[i], height[-1, i] + offset[i], w.r[i], horizontal=horiz, angle = angle, density = density, col = col, border = border) } # Execute the panel.last expression here panel.last if (plot.ci) { # CI plot width = barwidth / 2 half.ci.width = width * ci.width / 2 if (horiz) { segments(ci.l, w.m, ci.u, w.m, col = ci.color, lty = ci.lty, lwd = ci.lwd) segments(ci.l, w.m - half.ci.width, ci.l, w.m + half.ci.width, col = ci.color, lty = ci.lty, lwd = ci.lwd) segments(ci.u, w.m - half.ci.width, ci.u, w.m + half.ci.width, col = ci.color, lty = ci.lty, lwd = ci.lwd) } else { segments(w.m, ci.l, w.m, ci.u, col = ci.color, lty = ci.lty, lwd = ci.lwd) segments(w.m - half.ci.width, ci.l, w.m + half.ci.width, ci.l, col = ci.color, lty = ci.lty, lwd = ci.lwd) segments(w.m - half.ci.width, ci.u, w.m + half.ci.width, ci.u, col = ci.color, lty = ci.lty, lwd = ci.lwd) } } if (axisnames && !is.null(names.arg)) # specified or from {col}names { at.l <- if (length(names.arg) != length(w.m)) { if (length(names.arg) == NC) # i.e. beside (!) colMeans(w.m) else stop("incorrect number of names") } else w.m axis(if(horiz) 2 else 1, at = at.l, labels = names.arg, lty = axis.lty, cex.axis = cex.names, ...) } if(!is.null(legend.text)) { legend.col <- rep(col, length = length(legend.text)) if((horiz & beside) || (!horiz & !beside)) { legend.text <- rev(legend.text) legend.col <- rev(legend.col) density <- rev(density) angle <- rev(angle) } # adjust legend x and y values if log scaling in use if (logx) legx <- usr[2] - ((usr[2] - usr[1]) / 10) else legx <- usr[2] - xinch(0.1) if (logy) legy <- usr[4] - ((usr[4] - usr[3]) / 10) else legy <- usr[4] - yinch(0.1) legend(legx, legy, legend = legend.text, angle = angle, density = density, fill = legend.col, xjust = 1, yjust = 1) } title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...) # if axis is to be plotted, adjust for grid "at" values if (axes) { if(plot.grid) axis(if(horiz) 1 else 2, at = grid, cex.axis = cex.axis, ...) else axis(if(horiz) 1 else 2, cex.axis = cex.axis, ...) } invisible(w.m) } else w.m } gplots/R/bandplot.R0000644000175100001440000000276411014422101013722 0ustar hornikusers# $Id: bandplot.R 1272 2008-05-20 01:07:28Z warnes $ bandplot <- function(x,y, ..., add=FALSE, sd=c(-2:2), sd.col=c("magenta","blue","red", "blue","magenta"), sd.lwd=c(2,2,3,2,2), sd.lty=c(2,1,1,1,2), method="frac", width=1/5, n=50 ) { if(length(sd.col)1) xnames <- xnames[-1] } else xnames <- names(x) if(is.null(names(y))) { ynames <- as.character(substitute(y)) if(length(ynames)>1) ynames <- ynames[-1] } else ynames <- names(y) #### ## Handle arguments #### scale.method <- match.arg(scale.method) scale.range <- match.arg(scale.range) if( scale.method=="absolute" && any(z < 0, na.rm=TRUE ) ) warning("z value(s) below zero detected.", " No balloons will be displayed for these cells.") if(missing(main)) { if(scale.method=="volume") main <- paste("Balloon Plot for ", paste(xnames, collapse=", "), " by ", paste(ynames, collapse=", "), ".\nArea is proportional to ", zlab, ".", sep='') else main <- paste("Balloon Plot for ", paste(ynames, collapse=", "), " by ", paste(ynames, collapse=", "), ".\nDiameter is proportional to ", zlab, ".", sep='') } if(length(dotcolor)[0,1] ('relative') or [0,max] -> [0,1] ('absolute'). Bug Fixes: - balloonplot() now properly handles dimension labels provided by 'xlab' and 'ylab' - plotCI now properly handles 'NULL' and 'NA' values for ui, li, uiw, and liw. - Corrections of minor typos in man pages - Update Greg's email address to 'greg@random-technologies-llc.com' Release 2.6.0 - 2008-04-07 -------------------------- New Features: - heatmap() now allows control of the location of individual plot components (e.g. color key) Bug Fixes: - Fix bug in handling rowsep, per suggestion by Steven Paugh - Fix examples for overplot() - Two letter clarification of help text for heatmap.2() - Restore plot layout settings to default state at end of ooplot() example - Various typo fixes Release 2.5.0 - 2007-11-02 -------------------------- New Features: - textplot() now converts tab characters to spaces before processing to avoid problems with computing height and width of text that includes tabs. - Add col2hex() function to convert color names to rgb hex codes Bug Fixes: - Correct balloonplot.default to properly show specified x and y axis labels when explicitly provided - R/balloonplot.R: Correct error in balloonplot when z contains NA values. - Fix typos and code/doc mismatches identified by the latest R CMD check Other: - Clarify GPL version Release 2.4.0 - 2007-02-08 -------------------------- New Features: - Add parameters to bandplot() to control line width and type. - Add paramaeters to textplot.matrix() to allow specification of the color of the matrix data, rows, and column Bug Fixes: Other: Release 2.3.2 - 2006-11-14 -------------------------- - heatmap.2.Rd: Fix example that was broken by changes in 2.3.0. Release 2.3.1 ------------- - Changed maintainer back to Greg Warnes - Updated Greg's email address - heatmap.2.R: Fixed a bug which displayed warnings when Rowv and Colv were specified as dendrograms Release 2.3.0 ------------- - heatmap.2.R, heatmap.2.Rd: Updated the code and man page to make sure the Rowv and Colv values are properly handled - Added the tests directory Release 2.2.0 ------------- - plotmeans.R: Fixed bug in plotmeans - based on Stefano Calza's suggestion (the function didn't account for factors unused levels, returning an error.) - exported plot.lm to NAMESPACE, Remove .Alias calls in plot.lm.R since .Alias is defunct. - barplot2.R: Changed the default grey colors to heat colors, if height is matrix - Updated Greg's email address - balloonplot.R: Recent changes to align row totals with the overall total broke how the marginal cumulative fractions were displayed. Added example using Titanic data that exercises the multi-factor display. Added -.tex, .pdf files and figuers, and RNEWS article in inst/doc - colorpanel.R: colorpanel now allows only 2 colors to be specified if no 'middle' color is desired. Release 2.0.8 ------------- - Added DESCRIPTION and removed DESCRIPTION.in - Updated barplot2 - Updated heatmap.2 gplots/NAMESPACE0000644000175100001440000000220711743412036013021 0ustar hornikusersexport( balloonplot, bandplot, barplot2, bluered, boxplot.n, ci2d, col2hex, colorpanel, greenred, heatmap.2, hist2d, lowess, ooplot, overplot, panel.overplot, plot.lm2, plot.venn, plotCI, plotmeans, qqnorm.aov, redblue, redgreen, residplot, rich.colors, sinkplot, smartlegend, space, textplot, venn, wapply ) importFrom(gtools, invalid) importFrom(gtools, odd) importFrom(gdata, nobs) importFrom(gdata, reorder.factor) importFrom(stats, reorder) importFrom(stats, na.omit) # No Namespace #importFrom(caTools, runsd) #importFrom(caTools, runmean) # No Namespace #importFrom(KernSmooth, bkdeD2) #importFrom(KernSmooth, dpik) S3method(balloonplot,default) S3method(balloonplot,table) S3method(barplot2,default) S3method(lowess,default) S3method(lowess,formula) S3method(ooplot,default) S3method(textplot,character) S3method(textplot,data.frame) S3method(textplot,default) S3method(textplot,matrix) S3method(print,ci2d) S3method(print,hist2d) gplots/DESCRIPTION0000644000175100001440000000125012163336534013312 0ustar hornikusersPackage: gplots Title: Various R programming tools for plotting data Description: Various R programming tools for plotting data Depends: R (>= 3.0), gtools, gdata, stats, caTools, grid, KernSmooth, MASS, datasets Suggests: gtools, grid Version: 2.11.3 Date: 2013-06-27 Author: Gregory R. Warnes, Ben Bolker, Lodewijk Bonebakker, Robert Gentleman, Wolfgang Huber Andy Liaw, Thomas Lumley, Martin Maechler, Arni Magnusson, Steffen Moeller, Marc Schwartz, Bill Venables Maintainer: Gregory R. Warnes License: GPL-2 NeedsCompilation: No Packaged: 2013-06-28 15:10:49 UTC; warnes Repository: CRAN Date/Publication: 2013-06-28 18:44:12 gplots/ChangeLog0000644000175100001440000013365112163125724013366 0ustar hornikusers2013-06-27 warnes * [r1678] DESCRIPTION: Update for release 2.11.3 * [r1677] tests/heatmap2Test.Rout.save: Update with tests for only 1 row/column separator * [r1676] man/plotmeans.Rd: Fix typo * [r1675] tests/heatmap2Test.R: Add test for one row/column separator * [r1674] R/baseOf.R: Add more in-line comments * [r1673] R/sinkplot.R, man/sinkplot.Rd: Modify sinkplot to use a local environement to store its information instead of the global environment. 2013-03-24 warnes * [r1647] inst/NEWS: Update news for release 2.11.2 * [r1646] R/barplot2.R, man/barplot2.Rd: Add ci.width argument to barplot2() to allow varying the length of the 't' at the end of confidence interval bars. * [r1642] DESCRIPTION: Update for release 2.11.2 * [r1641] man/lowess.Rd: Update manual page for lowess.default() to match changed argument list for lowess() in R 3.0.0 2012-12-14 warnes * [r1631] R/plot.venn.R: Fix typo: warn() instead of warning(). * [r1630] vignettes/venn.Rnw: Fix syntax of VignetteIndexEntry in venn.Rnw. * [r1629] vignettes/venn.Rnw, vignettes/venn.pdf: Add generated vignette pdf. * [r1628] vignettes/venn.Rnw: Add required VignetteIndexEntry metadata to venn vignette code. * [r1627] DESCRIPTION, inst/NEWS: Update DESCRIPTION and NEWS for release 2.11.1. * [r1626] R/baseOf.R, R/plot.venn.R, R/venn.R, vignettes, vignettes/venn.Rnw: Improve venn() to work with PDF and Sweave/pdflatex. Provide a vignette for venn(). * [r1625] R/heatmap.2.R: Fix error in processing the colsep argument to heatmap.2. * [r1624] man/plotmeans.Rd: Clarify that plotmeans is intended for a *continuous* outcome based on a *factor* grouping level. * [r1623] inst/doc/BalloonPlot.pdf: Replace corrupted BalloonPlot.pdf file and remove svn properties that were causing it to be corrupted. 2012-06-08 warnes * [r1558] inst/NEWS: Update NEWS for 2.11.0 release. * [r1557] DESCRIPTION, R/barplot2.R, R/ooplot.R, R/plotCI.R, R/sinkplot.R, man/qqnorm.aov.Rd, tests/heatmap2Test.Rout.save: Fix R CMD check warnings. * [r1556] man/hist2d.Rd: Move incorrectly placed closing brace. 2012-06-07 warnes * [r1555] R/ci2d.R, R/hist2d.R, R/print.hist2d.R, man/hist2d.Rd: Object returned by hist2d() has been changed: - $x and $y now contain the n midpoints of the bins in each direction - $x.breaks, $y.breaks now contain the n+1 limits of the bins in each direction The function print.hist2d() has been updated appropriately. * [r1554] R/hist2d.R: Correct error in handling binning: (N+1)x(N+1) bins were being created instead of NxN bins, and the highest row/column in each direction was being omitted from the results and plot. * [r1553] R/plotmeans.R, man/plotmeans.Rd: Add default value for lwd argument to plotmeans() 2012-05-31 warnes * [r1533] man/qqnorm.aov.Rd: Properly mark up S3 method. 2011-12-09 warnes * [r1519] R/plotmeans.R, man/plotmeans.Rd: Add 'lwd' (linewidth) to arguments handled by plotmeans. 2011-09-02 warnes * [r1505] inst/NEWS: Update NEWS for release 2.10.1. * [r1504] DESCRIPTION: Increment version counter. * [r1503] man/ci2d.Rd, man/hist2d.Rd: Add necessary alias statment to man files for for 'hist2d' and 'ci2d' print methods. * [r1502] R/print.hist2d, R/print.hist2d.R: Fix naming error * [r1501] NAMESPACE, R/ci2d.R, R/hist2d.R, R/print.ci2d.R, R/print.hist2d, man/ci2d.Rd, man/hist2d.Rd: Provide print() methods for 'hist2d' and 'ci2d' objects. * [r1498] DESCRIPTION: Correct dependence on R >= 2.10 2011-09-01 warnes * [r1491] NAMESPACE, man/ci2d.Rd: - Correct issues in ci2d() man page. * [r1490] DESCRIPTION, NAMESPACE, tests/heatmap2Test.Rout.save: - Comment out import from KernSmooth in NAMESPACES, since KernSmooth doesn't provide a namespace. - Update a test output. * [r1489] DESCRIPTION, inst/NEWS: - Update NEWS file and correct version number * [r1488] DESCRIPTION: - Depend on KernSmooth package. Increment version number. * [r1487] NAMESPACE: - Depend on KernSmooth package and import 'bkdeD2' and 'dpik'. * [r1486] R/ci2d.R, man/ci2d.Rd: Improvements to ci2d(): - Add option to utilize KernDensity::bkde2D to estimate the 2-d density (now the default). - Add option to display points for original data on generated plots - Name elements of returned contour list according to the significance level to make it easier to select desired contours. - Improve handling of x and y labels * [r1485] man/hist2d.Rd: Remove log tag and comments from top of the file. 2011-08-26 warnes * [r1478] inst/NEWS: Update NEWS for 2.10.0 release * [r1477] DESCRIPTION: Add dependency on R>= 2.10 to handle compressed Rda data file. * [r1476] data/rtPCR.rda: Compress rtPCR example data set to make distributed package smaller. * [r1475] R/ci2d.R: Remove '1.0' confidence line from ci2d(..,show="contour"). 2011-08-25 warnes * [r1474] DESCRIPTION, NAMESPACE, R/ci2d.R, man/ci2d.Rd, man/rich.colors.Rd: - Add 'ci2d()' to compute 2-dimensional emipirical confidence interval. - Fix parse error in help page for 'rich.colors()'. 2011-08-16 warnes * [r1473] DESCRIPTION: Update DESCRIPTION file for 2.8.1. * [r1472] R/rich.colors.R, man/rich.colors.Rd: Add 'alpha' argument to rich.colors() to control transparency. * [r1471] R/hist2d.R, man/hist2d.Rd: Accellerate hist2d by replacing for() loop with tapply(), and allow user to specify summary function applied, per suggestion by Peter Hagedorn (PHA -at- santaris -dot- com). 2011-05-02 arnima * [r1470] R/rich.colors.R, man/rich.colors.Rd: Added argument 'alpha' and removed argument 'rgb' in rich.colors() 2010-12-13 warnes * [r1463] R/heatmap.2.R: Correct error that arises when data includes NA values, identified by Melissa Key 2010-06-11 warnes * [r1446] man/venn.Rd: Fix errors detected by R CMD check * [r1445] man/venn.Rd: Fix errors detected by R CMD check * [r1444] man/venn.Rd: Use 'TRUE' instead of 'T' for true in venn man page * [r1443] DESCRIPTION, NAMESPACE, inst/NEWS: Update for gplots 2.8.0 * [r1442] R/baseOf.R: Moved baseOf() into a separate file * [r1441] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update Greg's email address * [r1440] R/plot.venn.R, R/venn.R, man/venn.Rd: - venn() now returns an object of class venn() and a plot method for this class is provided. - Manual page for venn has been improved, based on contributions by Steffen Moeller 2010-02-17 warnes * [r1420] DESCRIPTION, R/hist2d.R, inst/NEWS: Improve performance of hist2d thanks to suggestion by Joerg van den Hoff. 2010-01-22 arnima * [r1372] R/rich.color.R, R/rich.colors.R, man/rich.color.Rd, man/rich.colors.Rd: Renamed files rich.color.* to rich.colors.* and renamed rich.colors args 2009-11-16 arnima * [r1367] R/rich.color.R: Minor reformatting only. 2009-11-12 warnes * [r1365] DESCRIPTION, R/plotmeans.R, inst/NEWS, tests/plotmeans_nobars.R: Correct bug reported by Alan Yong: plotmeans() crashed when 'bars=FALSE'. 2009-10-22 warnes * [r1364] R/heatmap.2.R: Fixed typo in bug fix. * [r1363] DESCRIPTION, inst/NEWS: Update NEWS and DESCRIPTION for gplots 2.7.3 * [r1362] R/heatmap.2.R: Fix transposed display of data (but not labels) in heatmap.2 when symm=TRUE 2009-10-12 warnes * [r1361] DESCRIPTION, inst/NEWS: Update version number to 2.7.2, 2.7.1 was already up but apparently DESCRIPTION wasn't commited with change. 2009-10-10 warnes * [r1360] R/col2hex.R, man/colorpanel.Rd, man/lowess.Rd, man/ooplot.Rd, man/overplot.Rd, man/smartlegend.Rd, man/space.Rd, tests/heatmap2Test.Rout.save: Various minor changes to remove new R CMD CHECK warnings. * [r1359] DESCRIPTION, inst/NEWS: Update DESCRIPTION and NEWS file for 2.7.1 * [r1358] R/col2hex.R: Fix bug reported by Ken Lo: col2hex had blue and green components swapped. 2009-05-08 warnes * [r1324] tests/heatmap_to_heatmap.2_test.R: Add test of using a dendrogram created by heatmap() with heatmap.2() * [r1323] R/heatmap.2.R: heatmap.2: handle NA for RowV or ColV the same way as NULL * [r1322] man/plotCI.Rd: Fix typo * [r1321] inst/NEWS: Update NEWS for release 2.7.0 * [r1320] inst/ChangeLog: We don't want the Changelog in svn, since it is autogenerated from svn logs! * [r1319] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update Greg's email address to 'greg@random-technologies-llc.com' * [r1318] R/plotCI.R, man/plotCI.Rd: plotCI now properly handles 'NULL' and 'NA' values for ui, li, uiw, and liw. * [r1317] R/heatmap.2.R, man/heatmap.2.Rd, tests/heatmap2Test.Rout.save: heatmap.2: Add option to create breakpoints symmetric around 0, provide additional information in the return value * [r1316] man/space.Rd: Fix Rd syntax error 2009-04-22 warnes * [r1315] man/barplot2.Rd, man/ooplot.Rd: VADeaths data set has move to dataset package 2008-08-14 warnes * [r1302] R/balloonplot.R: balloonpot() was incorrectly displaying warning about z values below 0 when scale.method="relative". Fixed. 2008-08-07 warnes * [r1301] DESCRIPTION, NAMESPACE, inst/ChangeLog, inst/NEWS: Update DESCRIPTION NAMESPACE and NEWS for 2.7.0 release 2008-06-16 warnes * [r1296] TODO, inst/TODO: Add TODO list to gplots 2008-05-20 warnes * [r1274] DESCRIPTION, man/plot.lm2.Rd: Update man page to match recent changes to plot.lm2() * [r1273] man/venn.Rd: More work on documentation for venn() * [r1272] R/bandplot.R, man/bandplot.Rd: Fix code/doc mismatch due to recent changes to bandplot() * [r1271] DESCRIPTION, NAMESPACE, R/venn.R, man/venn.Rd: Add Venn Diagram plot submitted by Steffen Moeller 2008-05-07 warnes * [r1264] DESCRIPTION, R/bandplot.R: Improve performance of bandplot by calculating running standard deviation using caTools::runsd() instead of (ver slow) window() call. In addtion, the standard deviations are now only calculated once, rather than once for each band. * [r1263] R/plot.lm.R: Improve performance of plot.lm for large lm objects by using fitted() instead of predict() to get y-hat 2008-05-05 warnes * [r1262] DESCRIPTION, R/bandplot.R: Use caTools's runsd in bandplot for a dramatic speedup for large data * [r1261] NAMESPACE: Add import of gtools::reorder.factor for ballonplot man page * [r1260] R/balloonplot.R, man/balloonplot.Rd: balloonplot: Add option to scale balloons so [min,max]->[0,1] (relative) or so [0,max] <- [0,1] (absolute) 2008-04-07 warnes * [r1254] man/barplot2.Rd: Fix typo in barplot2() man page * [r1253] DESCRIPTION, inst/ChangeLog, inst/NEWS: Updates for gplots 2.6.0 * [r1252] R/heatmap.2.R, man/heatmap.2.Rd: Add ability to control location of individual heatmap.2 components 2008-03-27 warnes * [r1251] R/heatmap.2.R: Fix bug in handling rowsep, per suggestion by Steven Paugh 2008-01-04 warnes * [r1238] man/overplot.Rd: Fix examples for overplot() 2008-01-02 warnes * [r1237] man/barplot2.Rd: Update Marc's email address 2007-12-20 warnes * [r1235] man/heatmap.2.Rd: Two letter clarification of help text for heatmap.2() * [r1234] man/ooplot.Rd: Restore plot layout at end of ooplot() example 2007-11-06 warnes * [r1222] man/hist2d.Rd: Remove extraneous closing brace in the hist2d documentation file 2007-11-05 warnes * [r1221] inst/NEWS: Fix typo in NEWS: col2hex() is the new function, not col2rgb() which is part of grDevices 2007-11-02 warnes * [r1219] DESCRIPTION, NAMESPACE, inst/ChangeLog, inst/NEWS: Updates for gplots 2.5.0 * [r1218] tests/heatmap2Test.Rout.save: Update saved test output due to changes in how R reports warnings * [r1217] ChangeLog, NEWS: Create soft links of gmodels/ChangeLog -> gmodels/inst/ChangeLog, and gmodels/NEWS -> gmodels/inst/NEWS for my convenience * [r1216] ChangeLog, NEWS, inst/ChangeLog, inst/NEWS: Move actual ChangeLog and NEWS files to gmodels/inst so they will be copied into the installed R package area * [r1215] man/bandplot.Rd, man/textplot.Rd: Fix code/doc mismatches * [r1214] R/plot.lm.R: Update plot.lm2 to match changes made to bandplot 2007-11-01 warnes * [r1213] ChangeLog, DESCRIPTION, R/replaceTabs.R, R/textplot.R: in textplot(), convert tab characters to spaces before processing to avoid problems with computing height and width of text including tabs when using pdf() * [r1212] R/overplot.R, man/overplot.Rd: Minor reformatting of overplot code and docs 2007-10-22 warnes * [r1196] DESCRIPTION: Clarify GPL version 2007-08-14 warnes * [r1141] R/balloonplot.R: Correct error in balloonplot when z contains NA values. * [r1140] R/balloonplot.R, man/balloonplot.Rd: Augment balloonplot() with control of character size and color for text and label items * [r1139] R/balloonplot.R: Correct balloonplot.default to properly show specified x and y axis labels when explicitly provided 2007-03-09 ggorjan * [r1073] man/ooplot.Rd: use of \method in Rd markup - issues a warning with _R_CHECK_RD_STYLE_=TRUE env. variable with R 2.5.0 2007-02-08 warnes * [r1052] DESCRIPTION: Bump version number * [r1051] man/textplot.Rd: Update documentation for textplot() * [r1050] R/col2hex.R, man/col2hex.Rd: Add col2rgb() function to convert color names to rgb hex codes * [r1049] R/textplot.R: Add paramaeters 'col.data', 'col.rows', and 'col.columns' to textplot.matrix to allow specification of the color of the matrix data, rows, and columns. * [r1048] R/bandplot.R: Add parameters to control line width and line type. 2006-11-14 ggorjan * [r1012] R/bandplot.R, R/boxplot.n.R, R/lowess.R, R/plot.lm.R, R/plotCI.R, R/plotmeans.R, R/residplot.R, R/wapply.R, man/boxplot.n.Rd, man/plotCI.Rd, man/plotmeans.Rd: Removed executable property 2006-11-14 warnes * [r1010] tests/heatmap2Test.Rout.save: Update output file to match (trivial) changes in the test code. * [r1008] ChangeLog, NEWS: Update ChangeLog and NEWS files for release 2.3.2. * [r1007] DESCRIPTION: Update version number * [r1006] DESCRIPTION: Update version number and maintainer * [r1005] man/heatmap.2.Rd: Correct problem with labeled correlation matrix example. Thanks to Jean Vidal for reporting the error.. 2006-08-02 warnes * [r977] inst/doc/BalloonPlot.pdf, man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/hist2d.Rd, man/ooplot.Rd, man/overplot.Rd, man/plot.lm2.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd, man/textplot.Rd, man/wapply.Rd: Update my email address 2006-06-26 nj7w * [r967] R/heatmap.2.R: Fixed a bug which displayed warnings when Rowv and Colv were specified as dendrograms 2006-03-10 warnes * [r937] tests/heatmap2Test.R: Remove code that added a local path 2006-03-09 nj7w * [r935] tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Added the correct library path where gplots is installed locally and corresponding .save file * [r934] tests/heatmap2Test.R: Updated the tests file * [r933] R/heatmap.2.R: Removed the condition Colv != Rowv as it has already been taken care of * [r932] rtPCR.rda: Deleted rtPCR.rda from the main directory * [r931] ChangeLog: Added ChangeLog 2006-03-07 nj7w * [r919] DESCRIPTION, NEWS: Updated ChangeLog and NEWS * [r918] tests, tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Added the tests and fixed corrupted files * [r917] data/rtPCR.rda: Replaced the corrupted rtPCR.rda file in data directory * [r916] tests: Removed the corrputed tests directory * [r915] data/rtPCR.rda, rtPCR.rda: Replaced the corrupted rtPCR.rda file in data directory 2006-03-03 nj7w * [r914] R/heatmap.2.R, man/heatmap.2.Rd: Updated the code and man page to make sure the Rowv and Colv values are properly handled 2006-03-02 warnes * [r908] R/balloonplot.R: Adjust row total placement to adjust for width of the totals * [r907] DESCRIPTION, R/balloonplot.R, man/1: Row totals in ballonplot were in reverse order. Fixed. 2006-02-23 nj7w * [r899] R/heatmap.2.R, tests/heatmap2Test.R: Add ability to scale the color key using the new 'keysize' argument. * [r898] tests, tests/heatmap2Test.R, tests/heatmap2Test.Rout.save: Add tests for heatmap.2 * [r897] inst/doc/Figure1.eps, inst/doc/Table.eps, inst/doc/bka.bst, inst/doc/heatmap2.R, inst/doc/heatmap2.tex, inst/doc/regression_rank_image.Rda, inst/doc/regression_rank_image_II.Rda: Move heatmap and ballonplot paper source materials to their respective cvs modules * [r896] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf, inst/doc/Rnews.sty, inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Moved balloonplot paper materials to BallonPlotPaper cvs module * [r891] inst/doc/colSeparator.pdf, inst/doc/logData.pdf, inst/doc/logDataColDendrogram.pdf, inst/doc/logDataColOrd.pdf, inst/doc/logDataColOrdNo.pdf, inst/doc/logDataRowDendrogram.pdf, inst/doc/origScale.pdf, inst/doc/rowSeparator.pdf, inst/doc/scaled.pdf: Remove heatmap paper files and move them to the HeatmapPaper cvs module. * [r888] inst/doc/colSeparator.pdf, inst/doc/logData.pdf, inst/doc/logDataColDendrogram.pdf, inst/doc/logDataColOrd.pdf, inst/doc/logDataColOrdNo.pdf, inst/doc/logDataRowDendrogram.pdf, inst/doc/origScale.pdf, inst/doc/rowSeparator.pdf, inst/doc/scaled.pdf: Added figures for heatmap2 paper * [r887] inst/doc/regression_rank_image.Rda, inst/doc/regression_rank_image_II.Rda: Added the .Rda files for the heatmap2 paper * [r886] inst/doc/heatmap2.tex: Added the source - (tex file) of the heatmap paper * [r885] inst/doc/heatmap2.R: Added the code for the figures of heatmap paper 2006-02-21 nj7w * [r884] R/heatmap.2.R, man/heatmap.2.Rd: Minor updates to heatmap.2 - fixed Rowv, Colv and dendrogram behaviour. Now Rowv=NULL or FALSE both imply no dendrogram computation. 2006-01-12 warnes * [r844] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: more updates * [r843] inst/doc/bka.bst: Add Biometrica bibliography style file * [r842] inst/doc/BalloonPlot.tex: A little more. * [r841] inst/doc/BalloonPlot.tex: Updates to respond to referee. 2006-01-12 nj7w * [r840] inst/doc/BalloonPlot.tex: Added references 2005-12-13 nj7w * [r811] inst/doc/BalloonPlot.tex: Fixed Nitin's company name * [r809] ChangeLog, NEWS: Updated NEWS and removed ChangeLog 2005-12-12 nj7w * [r802] R/plotmeans.R: Fixed bug in plotmeans - based on Stefano Calza's suggestion 2005-12-07 nj7w * [r787] DESCRIPTION: Updated version number * [r786] NAMESPACE, R/plot.lm.R, man/plot.lm2.Rd: Added plot.lm * [r785] man/barplot2.Rd: Changed the default grey colors to heat colors, if height is matrix * [r784] R/barplot2.R: Changed the default greay colors to heat colors, if height is matrix 2005-12-06 nj7w * [r783] man/barplot2.Rd: Fixed minor error in documentation of barplot2 2005-12-02 warnes * [r777] R/plot.lm.R: Remove .Alias calls, since .Alias is defunct. 2005-12-01 nj7w * [r776] man/balloonplot.Rd, man/bandplot.Rd, man/boxplot.n.Rd, man/colorpanel.Rd, man/overplot.Rd, man/plotmeans.Rd, man/textplot.Rd, man/wapply.Rd: Updated Greg's email address 2005-11-23 nj7w * [r764] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure2.pdf: Updated Figure 2 colors 2005-11-18 warnes * [r743] inst/doc/BalloonPlot.pdf, inst/doc/Figure1.pdf, inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: Latest version of the pdf files * [r742] inst/doc/BalloonPlot.tex: Nitin works for the Cambrige Group, not Pfizer. * [r741] inst/doc/BalloonPlot.tex: Minor text rewording. * [r740] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex: More edits. * [r739] R/balloonplot.R: Recent changes to align row totals with the overall total broke how the marginal cumulative fractions were displayed. This patch fixes the problem. * [r737] DESCRIPTION, R/balloonplot.R, R/plot.lm.R, inst/doc/BalloonPlot.pdf, man/balloonplot.Rd: - Update documentation for balloonplot to match the latest code. - Correct spelling of 'show.zeroes' to 'show.zeros' * [r736] R/colorpanel.R: More changes: colorpanel now allows only 2 colors to be specified if no 'middle' color is desired. 2005-11-17 warnes * [r735] R/balloonplot.R: Allow user to control removal of duplicate entries in balloonplot. * [r734] R/colorpanel.R, man/colorpanel.Rd: Extend colorpanel to handle just two-colors in addition to three. 2005-11-09 nj7w * [r733] inst/doc/BalloonPlot.pdf: Updated the pdf file * [r732] inst/doc/BalloonPlot.R, inst/doc/BalloonPlot.tex: Updated the changes * [r731] inst/doc/Figure4.pdf: Modified figure 4 * [r730] inst/doc/BalloonPlot.R: Updated code * [r729] inst/doc/Figure3.pdf: Modified figure 3 * [r728] inst/doc/Figure2.pdf: Modified figure 2 * [r727] inst/doc/Figure1.pdf: Modified figure 1 2005-11-08 nj7w * [r726] man/plotCI.Rd: Updated Greg's email 2005-11-07 nj7w * [r725] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Minor modifications to fit the code properly on pdf 2005-11-07 warnes * [r724] inst/doc/BalloonPlot.R: Add R code that generates plots * [r723] inst/doc/Figure2.pdf, inst/doc/Figure3.pdf, inst/doc/Figure4.pdf: Add figures to CVS * [r722] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf: Text changes 2005-11-04 warnes * [r721] R/balloonplot.R: Fix some alignment issues. * [r720] inst/doc/BalloonPlot.pdf, inst/doc/Table.pdf: Remove Table.pdf since it is no longer needed * [r719] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex, inst/doc/Figure1.pdf: Nitin's Changes * [r718] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Add figure plots * [r717] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Fix paths 2005-10-20 nj7w * [r705] inst/doc/Figure1.eps, inst/doc/Table.eps: added the eps version of figures * [r704] inst/doc/BalloonPlot.pdf: Updated BallonPlot.pdf * [r703] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Removed Old Figure * [r702] inst/doc/Figure1.pdf, inst/doc/Table.pdf: Added the new figure - for total popluation - Balloonplot * [r701] inst/doc/BalloonPlot.tex: Modified the BallonPlot article * [r700] inst/doc/BalloonPlot.tex: Added references 2005-10-19 arnima * [r697] man/rich.color.Rd: The last example now displays the correct heat.colors. Default 'palette' argument is now a single string, not a vector. * [r696] R/rich.color.R: Default 'palette' argument is now a single string, not a vector. 2005-10-14 warnes * [r694] DESCRIPTION, R/balloonplot.R, man/balloonplot.Rd: Formatting fixes: - Handle multiple row or column category variables - Separate rows/columns of category labels by lines - Fix handling of 'cumsum' plots on row/column labels - Improve display of row/column sums 2005-10-13 warnes * [r693] man/balloonplot.Rd: Add example using Titanic data that exercises the multi-factor display. 2005-10-11 warnes * [r692] R/balloonplot.R: Initial changes to allow multiple x and y factor variables. Yet to be done: 1) remove extra 'boxes'. 2) omit duplicated values 2005-10-04 warnes * [r691] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: more minor fixes * [r690] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: fix spacing * [r689] inst/doc/Rnews.sty: Inlcude Rnews.sty * [r688] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Some textual edits. 2005-10-03 nj7w * [r687] inst/doc/SurvivedPop.pdf, inst/doc/SurvivedPopWhite.pdf, inst/doc/SurvivedProp.pdf, inst/doc/TotalPop.pdf: Added figures for the R-News Article 2005-09-29 nj7w * [r680] inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Updated the documentation - added the name of the person who asked the question * [r679] inst, inst/doc, inst/doc/BalloonPlot.pdf, inst/doc/BalloonPlot.tex: Added R-news article 2005-09-12 nj7w * [r671] man/hist2d.Rd, man/ooplot.Rd, man/residplot.Rd, man/sinkplot.Rd, man/smartlegend.Rd, man/space.Rd: Updated Greg's email * [r670] R/balloonplot.R: Updated version of balloonplot - by Romain Francois 2005-09-09 nj7w * [r669] ChangeLog, DESCRIPTION: Updated the version and ChangeLog * [r668] R/balloonplot.R, man/balloonplot.Rd: Changes in ballon plot based on Romain Francois (francoisromain@free.fr) suggestions 2005-09-06 nj7w * [r666] DESCRIPTION: Updated package dependencies * [r665] NEWS: Added NEWS 2005-09-02 nj7w * [r655] ChangeLog: Added ChangeLog 2005-08-31 nj7w * [r644] DESCRIPTION: Added DESCRIPTION file * [r643] DESCRIPTION.in: removed DESCRIPTION.in 2005-06-09 nj7w * [r625] R/balloonplot.R, R/bandplot.R, R/boxplot.n.R, R/colorpanel.R, R/heatmap.2.R, R/hist2d.R, R/lowess.R, R/ooplot.R, R/overplot.R, R/plotCI.R, R/plotmeans.R, R/qqnorm.aov.R, R/residplot.R, R/rich.color.R, R/sinkplot.R, R/smartlegend.R, R/space.R, R/textplot.R, R/wapply.R, man/1, man/bandplot.Rd, man/barplot2.Rd, man/boxplot.n.Rd, man/hist2d.Rd, man/lowess.Rd, man/plotCI.Rd, man/plotmeans.Rd, man/residplot.Rd, man/space.Rd, man/wapply.Rd: Updating the version number, and various help files to synchronize splitting of gregmisc bundle in 4 individual components. * [r624] R/barplot2.R: Changes based on Marc Schwartz's suggestions to handel 0's and NA's appropriately. 2005-05-13 nj7w * [r621] man/heatmap.2.Rd: 1) Using dQuote.ascii function in read.xls as the new version of dQuote doesn't work proprly with UTF-8 locale. 2) Modified CrossTable.Rd usage in gmodels 3) Modified heatmap.2 usage in gplots. 2005-04-04 warnes * [r603] R/overplot.R: Explicitly reference package containing lowess.formula in panel.overplot(). This should fix the error reported by Troels Ring . 2005-02-26 nj7w * [r565] R/heatmap.2.R, man/heatmap.2.Rd, man/rich.color.Rd, man/sinkplot.Rd, man/textplot.Rd: *** empty log message *** 2005-02-25 warnes * [r563] man/rich.color.Rd: Integrate changes submitted by Arni Magnusson * [r559] NAMESPACE: Add dependency imports from 'stats' package. 2005-02-22 warnes * [r555] R/bandplot.R: Fix problem in passing graphical parameters (xlim,etc).@ 2005-02-08 warnes * [r541] DESCRIPTION.in: Improve package title. * [r540] R/heatmap.2.R: Ignore missing values when computing symmetric range. 2005-02-02 warnes * [r530] man/plotmeans.Rd: Add more extensive example. 2005-01-14 warnes * [r516] R/textplot.R: Code can be simplified because R now supports selecting a fixed width font. 2005-01-12 warnes * [r515] DESCRIPTION.in: Add dependency on R 1.9.0+ to prevent poeple from installing on old versions of R which don't support namespaces. 2004-11-30 warnes * [r495] R/heatmap.2.R, man/heatmap.2.Rd: 1. Add new parameters for controlling color key: - If `symkey==TRUE', the color key will be made symmetric about 0. - The `densadj' parameter can be used to modify the smoother width (see the `adjust' parameter under `help(density)') for the density plotted in the key. 2. Fix handling of rowsep/colsep. 3. Vector of length 2 giving the width (colsep) or height (rowsep) the separator box drawn by colsep and rowsep as a function of the width (colsep) or height (rowsep) of a cell. 4. Appropriate changes to the corresponding help page, plus some minor formatting changes. 2004-11-03 warnes * [r474] R/heatmap.2.R: Fix bugs in layout of cell notes. They were being plotted top down rather than bottom up. Further reordering of the x matrix didn't also reorder the notes. Both issues should now be resolved. 2004-09-27 warneg * [r461] DESCRIPTION, DESCRIPTION.in, man/sinkplot.Rd, man/textplot.Rd: Updated to pass R CMD check. 2004-09-03 warneg * [r453] man/textplot.Rd: Provide explicit package for call to nobs. * [r452] man/heatmap.2.Rd: Fix typos. * [r446] DESCRIPTION, NAMESPACE, R/balloonplot.R, R/bandplot.R, R/barplot2.R, R/boxplot.n.R, R/colorpanel.R, R/heatmap.2.R, R/hist2d.R, R/lowess.R, R/ooplot.R, R/overplot.R, R/plotCI.R, R/plotmeans.R, R/qqnorm.aov.R, R/residplot.R, R/rich.color.R, R/sinkplot.R, R/smartlegend.R, R/space.R, R/textplot.R, R/wapply.R: initial bundle checkin 2004-09-02 warneg * [r442] DESCRIPTION, DESCRIPTION.in, NAMESPACE, man/1, man/residplot.Rd: Initial revision 2004-07-29 warnes * [r426] R/plotCI.R, man/plotCI.Rd: Integrate changes from the version of plotCI maintained by Martin Maechler. 2004-06-30 warnes * [r393] R/textplot.R: Remove commented-out code. * [r392] R/textplot.R: Fixed text size calculations 2004-06-28 warnes * [r391] R/barplot2.R, man/barplot2.Rd: - Default 2-d color set to grey as in (v2.0.0) r-devel - The default (v1.9.1) barplot method now handles vectors and 1-d arrays (e.g., obtained by table()) the same, and uses grey instead of heat color palettes in these cases. (Also fixes PR#6776.) - Updated to reflect the addition of 'offset' argument in base - Fix bug in stacked barplots, which would not be plotted properly 2004-06-24 warnes * [r385] R/heatmap.2.R, man/heatmap.2.Rd: Add ability to specify color of NA cells. 2004-05-27 warnes * [r349] man/plotCI.Rd: Fix spelling error. 2004-05-26 warnes * [r347] R/overplot.R: One more fix to get it right. * [r346] R/overplot.R: Use triple-colon operator ':::' to access plot.formula from the graphics package. * [r344] man/rich.color.Rd: Replace 'F' by 'FALSE' to pass R CMD check. 2004-05-25 warnes * [r338] R/overplot.R: Work around bug in R 1.9.X due to plot.formula() not having the same arguments as plot(). * [r336] R/rich.color.R, man/rich.color.Rd: Add rich.colors() submitted by Arni Magnusson . * [r328] R/ooplot.R, man/ooplot.Rd: ?? 2004-05-24 warnes * [r324] R/plotCI.R, R/plotmeans.R: Modified to use invalid() to check arguments instead of missing(). This fixes some build errors under R-1.9.0-Patched. 2004-04-22 warnes * [r319] R/ooplot.R, man/ooplot.Rd: Integrate changes from Lodewijk Bonebakker 2004-04-13 warnes * [r318] R/space.R, man/space.Rd: Add ability to space points along 'y' direction. 2004-04-02 warnes * [r313] R/smartlegend.R: Fixed smartlegend() positioning when x and/or y axis are log-scale. 2004-03-30 warnes * [r311] R/textplot.R: - Fix bug in textplot() reported by Wright, Kevin . 2004-03-26 warnes * [r305] man/textplot.Rd: Update to match changes in textplot() code. * [r304] man/ooplot.Rd: Remove Windows EOL characters. * [r302] man/barplot2.Rd: - Remove some commented-out code. - Remove cvs log tag. * [r300] R/textplot.R: Misc changes. 2004-02-17 warnes * [r290] man/ooplot.Rd: Minor fix to ooplot documentation. * [r289] R/ooplot.R, man/ooplot.Rd: Integrate ooplot updates provided by Lodewijk Bonebakker 2004-02-02 warnes * [r287] R/colorpanel.R, man/colorpanel.Rd: - Add colorpanel function, which generates a smoothly varying band of colors over a three color range (lo, mid, high). 2004-01-21 warnes * [r283] man/textplot.Rd: - Correct arguments to halign to match code. * [r281] R/lowess.R: Track R 1.9.0's move of 'lowess' from the base package to the (new) stats package. * [r279] man/sinkplot.Rd: - Fix sinkplot() example by replacing 'T' with 'TRUE'. * [r278] man/ooplot.Rd: - Add some more details to the ooplot() documentation. The documentation is *not* complete. * [r277] R/textplot.R: - Mark sprint() as depreciated. - Replace references to sprint with capture.output() - Use match.arg for halign and valign arguments to textplot.default. - Fix textplot.character so that a vector of characters is properly displayed. Previouslt, character vectors were plotted on top of each other. 2004-01-19 warnes * [r276] R/sinkplot.R, man/sinkplot.Rd: New function sinkplot(), as requested on R-devel by Kevin Wright in https://www.stat.math.ethz.ch/pipermail/r-devel/2004-January/028483.html. 2004-01-15 warnes * [r274] R/ooplot.R, man/ooplot.Rd: Add initial code and docs for ooplot() function submitted by Lodewijk Bonebakker . 2003-12-03 warnes * [r253] man/lowess.Rd, man/textplot.Rd, man/wapply.Rd: - match function argument defaults with 'usage' * [r252] R/heatmap.2.R, man/heatmap.2.Rd: - Fix buglets in heatmap function - Make a slight enhancement to the example code. 2003-12-02 warnes * [r251] R/heatmap.2.R: Integrated some suggestions from Sean Davis . * [r250] man/heatmap.2.Rd: - Make final example use 16 colors instead of 8. This looks nicer. * [r248] man/barplot2.Rd: - Remove '%' character from example code to avoid errors. * [r247] R/plotCI.R: - Add '...' parameter to call to text to allow user to control size/color/etc. 2003-12-01 warnes * [r246] man/barplot2.Rd: - updated to match changes to barplot() in base. * [r245] data, data/rtPCR.rda: - Renamed rtPCR.Rda to rtPCR.rda so that R will properly load the file when data(rtPCR) is executed. * [r243] R/barplot2.R: - Follow patches applied to barplot() in base. 2003-11-24 warnes * [r242] man/heatmap.2.Rd: Fix unbalanced braces. * [r240] R/overplot.R, man/overplot.Rd: Fix errors reported by R CMD check. 2003-11-21 warnes * [r239] man/overplot.Rd: Added missing closing brace. * [r238] man/rtPCR.Rd: Initial addition of these files. Used in examples of overplot(). * [r236] R/heatmap.2.R, man/heatmap.2.Rd: Applied my enhancements to the heatmap() code from R 1.8.0, and added documentation of these changes. * [r235] R/overplot.R, man/overplot.Rd: - Discovered that axis(N) does the right thing without needing to be given location for tick marks. This allowed simplification of the code. - Minor other changes for distribution - Addition of overplot.Rd documentation. * [r231] R/heatmap.2.R, man/heatmap.2.Rd: - Integrated my extensions into the R 1.8.0 version of heatmap. - Add Rd documentation. 2003-11-19 warnes * [r228] man/bandplot.Rd: Remove extranious NULL that confused R CMD check. 2003-11-18 warnes * [r226] man/barplot2.Rd: - Tiny fix to remove R CMD check error. * [r225] man/smartlegend.Rd: - Added missing closing brace. * [r224] R/overplot.R: - Convert from MS-Dos to Unix line endings. - Reformat to 80 columns. 2003-11-10 warnes * [r220] R/heatmap.2.R, R/overplot.R, R/plotmeans.R, R/space.R, R/wapply.R: - Add files contributed by Arni Magnusson . As well as some of my own. 2003-08-19 warnes * [r219] R/heatmap.2.R: - Copy of local changes. * [r218] R/heatmap.2.R: - Checkin before re-integrating local changes. 2003-06-19 warnes * [r201] R/heatmap.2.R: - Added enhanced heatmap function. 2003-06-09 warnes * [r200] man/smartlegend.Rd: - Add help text for smartlegend. * [r199] R/smartlegend.R: - New function smartlegend(). 2003-04-22 warnes * [r191] R/plotmeans.R: - Fixeed warning messing caused when 'connect' is a vector. * [r187] R/barplot2.R: Update from Marc Schwartz, modified by Gregory Warnes: - Modified dim() checks for 'ci.l' and 'ci.u' against 'height' to remove R v1.7.0 if() based error msgs for vector conditions. 2003-04-04 warnes * [r182] R/balloonplot.R, man/qqnorm.aov.Rd: - Change occurences of 'T' to 'TRUE' * [r179] man/textplot.Rd: - Updated to match changes in textplot function: - Added textplot.character - Renamed arguments "col.margin" and "row.margin" to "cmar", and "rmar" so that specifying "col='red'" is possible. - Fixed R CMD check errors - Improve comments in example - Add textplot.matrix example * [r178] R/textplot.R: - Added textplot.character to handle character strings. - Moved test for vector and matrix arguments to textplot.default. - Renamed arguments "col.margin" and "row.margin" to "cmar", and "rmar" so that specifying "col='red'" is possible. 2003-04-02 warnes * [r175] R/textplot.R, man/textplot.Rd: - Added textplot function and friends, as well as documentation. 2003-03-08 warnes * [r171] man/balloonplot.Rd: - Forgot to update arglist in \usage section. * [r169] R/balloonplot.R, man/balloonplot.Rd: - Added parameters for rotation of and amount of space allocated for the row and column labels. 2003-03-07 warnes * [r168] R/hist2d.R, R/qqnorm.aov.R: - Minor changes to code to allow the package to be provided as an S-Plus chapter. * [r167] R/lowess.R: - Add 'NULL' as the last element of if statement that defines lowess.default so that when the file is sourced, S-Plus doesn't display the function definition. * [r166] R/lowess.R: - Specify where the defualt lowess function should be found. - Use getFunction in S-Plus instead of 'get' 2003-01-30 warnes * [r159] R/barplot2.R, man/barplot2.Rd: - Added argument 'add' to allow for the addition of a barplot to an existing graphic. Default is FALSE 2003-01-20 warnes * [r156] R/balloonplot.R, man/balloonplot.Rd: - Updated balloonplot help page. * [r155] R/wapply.R, man/wapply.Rd: - Updated wapply.R to allow specification of evaluation points when method is 'width' or 'range' using the 'pts' argument. - Updated wapply.Rd to add 'pts' argument - Fixed typos, spelling errors, gramatical errors and lack of clarity in wapply.Rd help text. 2003-01-03 warnes * [r154] R/balloonplot.R, man/balloonplot.Rd: - Initial checkin of balloonplot functions and documentation. * [r153] man/space.Rd: - Added reference to and comparison example of sunflowerplot. - Added code to put example plots on same plot window using par(mfrow=...). 2003-01-02 warnes * [r150] R/barplot2.R: - Changed assignment statements that used "=" to "<-" to avoid syntax errors in older versions of the S language. * [r149] R/lowess.R: - Added wrapper code so that R-specific fiddling won't be executed under S-Plus. * [r147] R/qqnorm.aov.R, man/qqnorm.aov.Rd: - Renamed first parameter to match qqnorm generic. * [r146] man/qqnorm.aov.Rd: Added additional help text from Kjeitl. 2002-12-31 warnes * [r145] R/qqnorm.aov.R, man/qqnorm.aov.Rd: Initial checkin of qqnorm.aov function and documentation submitted by Kjetil Halvorsen . 2002-11-04 warnes * [r143] R/barplot2.R, man/barplot2.Rd: Updates from Marc Schwartz: - Updated underlying code to be based upon the new barplot() in R v1.6.1 - This now uses the 'axis.lty' and 'border' arguments - In R v1.6.0, R Core introduced a new function called axTicks(). This is an R equivalent of the C code for CreateAtVector in plot.c. This now enables me to get the axis tick mark positions consistently when the 'height' related axis is either linear or log. Thus, I can now have consistent tick marks and can plot grid lines in either situation. If 'plot.grid = TRUE' and 'grid.inc' is specified, then I still use pretty() to determine the tick marks and lines. - This code now depends on R 1.6.0 or later. 2002-10-30 warnes * [r139] R/plot.lm.R: - Commented out plot.lm() code since recent changes in R have broken it. 2002-10-11 warnes * [r131] R/barplot2.R: - Fixed log scale errors in legend() call 2002-10-01 warnes * [r130] man/hist2d.Rd: - Added examples of using 'contour' and 'filled.contour' for display. 2002-09-24 warnes * [r121] R/plotmeans.R: - Changed digits=options("digits") which produces a list of length 1 to digits=getOption("digits") which returns a vector of length one. The former was causing an error when passed to round(). 2002-09-23 warnes * [r119] man/barplot2.Rd: - Fixed syntax errors in barplot2.Rd and CrossTable.Rd - Fixed incorrect translation of 'F' (distribution) to 'FALSE' in glh.test.Rd * [r117] R/boxplot.n.R, R/hist2d.R, R/lowess.R, R/residplot.R, man/bandplot.Rd, man/hist2d.Rd, man/lowess.Rd, man/plotCI.Rd, man/space.Rd: - Modified all files to include CVS Id and Log tags. * [r116] R/barplot2.R, man/barplot2.Rd: - Added CrossTable() and barplot2() code and docs contributed by Marc Schwartz. - Permit combinations() to be used when r>n provided repeat.allowed=TRUE - Bumped up version number 2002-08-01 warnes * [r114] R/hist2d.R, R/wapply.R: - Corrected documentation mismatch for ci, ci.default. - Replaced all occurences of '_' for assignment with '<-'. - Replaced all occurences of 'T' or 'F' for 'TRUE' and 'FALSE' with the spelled out version. - Updaded version number and date. 2002-04-09 warneg * [r109] R/bandplot.R, R/boxplot.n.R, R/hist2d.R, R/plot.lm.R, R/plotCI.R, R/plotmeans.R, R/residplot.R, R/space.R, R/wapply.R, man/bandplot.Rd, man/boxplot.n.Rd, man/hist2d.Rd, man/plotmeans.Rd, man/space.Rd, man/wapply.Rd: Checkin for version 0.5.3 2002-03-27 warneg * [r107] man/lowess.Rd: Added "..." argument to lowess.default. * [r106] R/lowess.R: - Added code to append "..." to the argument list of lowess.default. - Fixed a wrong default for f in lowess.formula. Was 3, but should have been 2/3. 2002-03-26 warneg * [r104] R/lowess.R, man/lowess.Rd: - Changed methods to include '...' to match the generic. - Updated for version 0.5.1 * [r100] man/hist2d.Rd: Initial checkin. 2002-03-20 warneg * [r94] R/plotmeans.R: - Changes to add compatibility with S-Plus 2000 * [r93] R/plotCI.R: - Changes to add compatibility with S-Plus 2000. * [r92] R/boxplot.n.R: - Updated to work in S-Plus 2000 as well as R. 2002-03-05 warneg * [r88] R/plotmeans.R: - Replace "T" with "TRUE". Problems arrive when there is a variable named "T". 2002-02-20 warneg * [r81] man/lowess.Rd, man/plotCI.Rd, man/space.Rd: Minor changes, typo and formatting fixes. * [r80] R/bandplot.R, man/bandplot.Rd: - Generalized to allow specification of the multiples of the standard deviation levels to be plotted (0=mean, 1=1 sd, ..). - Now (invisibly) returnes computed smooths. 2002-02-16 warneg * [r78] man/bandplot.Rd: Added bandplot documentation. * [r77] R/wapply.R: - Fixed Bug: When method=="range", the absolute range of x was being used to compute the relative width instead of the (correct) relative range. * [r76] R/wapply.R: - Corrected problem removing missing values: The missing values of $x and $y were being removed indepdendently, leaving an uneven number of points in the result. 2002-02-04 warneg * [r74] R/space.R: - Add na.rm parameter and make the default TRUE. * [r73] R/hist2d.R: Initial checkin. * [r72] R/plotCI.R: - When err="x", 'col' was being used to plot bars, rather than 'barcol'. * [r71] R/plotCI.R: - fixed typo, when err="x", lty was 'slty' causing an error. 2001-12-12 warneg * [r54] man/space.Rd: - Quoted underscore character in my email address. - Added correct keyword. * [r52] man/plotmeans.Rd: Added documentation for xaxt parameter. * [r51] R/lowess.R: Updated to explicitly list control arguments to lowess.formula. * [r50] man/lowess.Rd: Initial checkin. Code copied from R source package and extended. 2001-12-07 warneg * [r46] man/wapply.Rd: Fixed an problem where \code was incorrectly delimited by parens rather than curly brackets. * [r42] R/lowess.R, R/plot.lm.R, R/residplot.R, man/space.Rd: Initial checkin. * [r41] R/space.R: - Added cvs tags. * [r40] R/space.R: - Leave first point at center, rather than shifting by s/2 to the left. This looks better when there are more than 2 'spaced' points. 2001-12-05 warneg * [r33] R/plotmeans.R: - Added ability to use the t-distribution to compute confidence intervals. This is controlled using the 'use.t' parameter. * [r31] man/plotmeans.Rd: - Added documentation of use.t parameter. * [r30] man/wapply.Rd: - Clarified how the width of the window is computed when method="nobs". * [r29] R/wapply.R: - Added a better default for "width" when method="nobs". For this case, width=max(5, length(x)/10). - Allow omission of x values which result in missing y values via 'drop.na' parameter. 2001-10-26 warneg * [r28] R/plotmeans.R: Added correct handling of 'xaxt="n"'. 2001-10-16 warneg * [r27] man/wapply.Rd: Fixed unbalanced brace. * [r26] man/plotCI.Rd: Added minbar and maxbar parameters. * [r25] man/plotmeans.Rd: Forgot to add minbar and maxbar to usage section. * [r24] man/plotmeans.Rd: Added description of minbar and maxbar. * [r23] R/plotCI.R: - Added minbar and maxbar parameters - Added cvs id and log tags to header * [r22] R/plotmeans.R: Added cvs id and log tag to file header * [r21] R/plotmeans.R: Added minbar and maxbar parameters. * [r20] man/plotmeans.Rd: Added description of minsd parameter. * [r19] R/plotmeans.R: Added minsd parameter. 2001-09-18 warneg * [r18] R/plotCI.R, R/plotmeans.R: Release 0.3.2 2001-09-01 warneg * [r16] man/wapply.Rd: Release 0.3.0 2001-08-31 warneg * [r15] R/wapply.R: Used wrong character in header (% instead of #). Fixed. * [r14] R/bandplot.R: Used wrong comment character (% instead of #) in header. Fixed. 2001-08-25 warneg * [r10] R/wapply.R: Initial checkin. * [r9] man/boxplot.n.Rd, man/plotmeans.Rd: Added CVS header. * [r8] man/wapply.Rd: Initial Checkin 2001-05-30 warneg * [r2] ., R, R/boxplot.n.R, R/plotCI.R, R/plotmeans.R, man, man/boxplot.n.Rd, man/plotCI.Rd, man/plotmeans.Rd: Initial revision