permute/0000755000175100001440000000000012272261632011754 5ustar hornikuserspermute/inst/0000755000175100001440000000000012271654425012736 5ustar hornikuserspermute/inst/tests/0000755000175100001440000000000012271654065014100 5ustar hornikuserspermute/inst/tests/test-allPerms.R0000644000175100001440000001147312271304443016755 0ustar hornikuserslibrary(testthat) library_if_available(permute) context("Testing allPerms()") test_that("allPerms - blocks - within block free", { ## example data from Joris Meys from ## http://stackoverflow.com/a/21313632/429846 thedata <- data.frame(score = c(replicate(4, sample(1:3))), judge = rep(1:4, each = 3), wine = rep.int(1:3, 4)) ## without the observed permutation included hh <- how(within = Within("free"), blocks = factor(thedata$judge), complete = TRUE, maxperm = 1e9) nr <- nrow(thedata) np <- numPerms(nr, hh) p <- allPerms(nr, control = hh) expect_that(nrow(p), equals(np - 1)) ## default is to drop observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Blocks: even; within: free; no observed") ## with the observed permutation included hh <- how(within = Within("free"), blocks = factor(thedata$judge), complete = TRUE, maxperm = 1e9, observed = TRUE) p <- allPerms(nr, control = hh) expect_that(nrow(p), equals(np)) ## now includes observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Blocks: even; within: free; observed") }) test_that("allPerms; blocks: within; block free - uneven block sizes", { fac <- factor(rep(1:3, times = c(2,2,4))) ## without the observed permutation included hh <- how(within = Within("free"), blocks = fac, complete = TRUE, maxperm = 1e9) ll <- length(fac) np <- numPerms(ll, hh) expect_that(np, equals(prod(factorial(2), factorial(2), factorial(4)))) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np - 1)) ## default is to drop observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Blocks: uneven; within: free; no observed") ## with the observed permutation included hh <- how(within = Within("free"), blocks = fac, complete = TRUE, maxperm = 1e9, observed = TRUE) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np)) ## now includes observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Blocks: uneven; within: free; observed") }) ## testing plot-level permutations ------------------------------------ test_that("allPerms: plots; within: free; even: yes;", { fac <- rep(1:3, each = 3) hh <- how(plots = Plots(strata = fac), complete = TRUE, maxperm = 1e9) ll <- length(fac) np <- numPerms(ll, hh) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np - 1), ## default is to drop observed info = "Check n all perms == numPerms output.") ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Unique? Plots: even; within: free; no observed") ## with the observed permutation included hh <- how(within = Within("free"), plot = Plots(strata = fac), complete = TRUE, maxperm = 1e9, observed = TRUE) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np)) ## now includes observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Unique? Plots: even; within: free; inc observed") }) test_that("allPerms; plots: within; plot free - uneven plot sizes", { fac <- factor(rep(1:3, times = c(2,2,4))) ## without the observed permutation included hh <- how(within = Within("free"), plots = Plots(strata = fac), complete = TRUE, maxperm = 1e9) ll <- length(fac) np <- numPerms(ll, hh) expect_that(np, equals(prod(factorial(2), factorial(2), factorial(4)))) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np - 1)) ## default is to drop observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Plots: uneven; within: free; no observed") ## with the observed permutation included hh <- how(within = Within("free"), plots = Plots(strata = fac), complete = TRUE, maxperm = 1e9, observed = TRUE) p <- allPerms(ll, control = hh) expect_that(nrow(p), equals(np)) ## now includes observed ## check no duplicate indices within rows dup <- any(apply(p, 1, function(x) any(duplicated(x)))) expect_false(dup, info = "Plots: uneven; within: free; observed") }) permute/inst/tests/test-shuffle.R0000644000175100001440000000306712236612467016643 0ustar hornikuserslibrary(testthat) library_if_available(permute) context("Testing shuffle()") ## test no permutation test_that("shuffle(n) returns seq_len(n) when not permuting", { ctrl <- how(within = Within(type = "none")) expect_that(shuffle(3, control = ctrl), is_identical_to(seq_len(3))) expect_that(shuffle(1, control = ctrl), is_identical_to(1L)) }) ## test shuffle returns integers test_that("shuffle() returns integers", { ctrl <- how(within = Within(type = "none")) expect_that(shuffle(4), is_a("integer")) expect_that(shuffle(100), is_a("integer")) expect_that(shuffle(1, control = ctrl), is_identical_to(1L)) expect_that(shuffle(3, control = ctrl), is_identical_to(c(1L, 2L, 3L))) }) ## test what shuffle returns when permuting only the strata ## must *not* assume that the samples are in contiguous blocks test_that("shuffle() works for non-contigous blocks of samples", { ## permuting levels of Plots instead of observations ## non-contiguous blocks - checks that r1972 continues to work Plot <- factor(rep(1:4, 5)) CTRL <- how(plots = Plots(strata = Plot, type = "free"), within = Within(type = "none")) n <- 20 set.seed(2) result <- shuffle(n, CTRL) out1 <- as.integer(c( 3, 2, 1, 4, 7, 6, 5, 8, 11,10, 9,12, 15,14,13,16, 19,18,17,20)) expect_that(result, is_identical_to(out1)) out2 <- factor(as.integer(rep(c(3,2,1,4), 5)), levels = 1:4) expect_that(Plot[result], is_identical_to(out2)) }) permute/inst/tests/test-check.R0000644000175100001440000000143612237331515016253 0ustar hornikuserslibrary(testthat) library_if_available(permute) context("Testing check()") ## test that check will return all perms including the observed test_that("check returns observed ordering in set of all permutations *if* asked to", { ## simple permutation h <- how(observed = TRUE) pp <- check(4, control = h) expect_that(nrow(pp$control$all.perms), equals(factorial(4))) ## time series h <- how(within = Within(type = "series"), observed = TRUE) n <- 10 pp <- check(n, control = h) expect_that(nrow(pp$control$all.perms), equals(n)) ## time series specified as a vector h <- how(within = Within(type = "series"), observed = TRUE) n <- 10 vec <- seq_len(n) pp <- check(vec, control = h) expect_that(nrow(pp$control$all.perms), equals(n)) }) permute/inst/tests/test-shuffleSet.R0000644000175100001440000000257412243434066017314 0ustar hornikuserslibrary(testthat) library_if_available(permute) context("Testing shuffleSet()") ## test that shuffleSet interleves the separate block-level ## permutations correctly back into the original ordering ## This always generates odd, even, odd, ..., numbered vector ## of observations, hence when we take the modulus 2 we get ## a vector of 1,0,1,0,1,... test_that("shuffleSet interleves block-level perms correctly", { gr <- factor(rep(1:2, length=20)) ctrl <- how(nperm = 5, blocks = gr) p <- shuffleSet(20, control = ctrl) %% 2 y <- rep(c(1L, 0L), length.out = ncol(p)) nc <- ncol(p) for (i in seq_len(nrow(p))) { expect_that(p[i, ], equals(y)) } }) ## test that nset permutations are always returned if ## make = FALSE in how() test_that( "shuffleSet returns exactly nset permutations when make == FALSE", { ## simple random permutation h <- how(make = FALSE) ss <- shuffleSet(n = 4, nset = 10, control = h) expect_that(nrow(ss), equals(10)) ## time series h <- how(within = Within(type = "series"), make = FALSE) ss <- shuffleSet(n = 20, nset = 15, control = h) expect_that(nrow(ss), equals(15)) }) ## test that shuffleSet always returns a matrix, even for nset == 1 test_that("shuffleSet returns a matrix even for nset == 1", { h <- how() ss <- shuffleSet(25, nset = 1, control = h) expect_that(ss, is_a("matrix")) }) permute/inst/NEWS.Rd0000644000175100001440000000700112246460744014000 0ustar hornikusers\name{NEWS} \title{permute News} \encoding{UTF-8} \section{Changes in version 0.8-0}{ \subsection{GENERAL}{ \itemize{ \item Version 0.8-0 represents a major update of \pkg{permute}, with some backwards-incompatible changes to the main functions. The main addition is the availability of block-level restrictions on the permutations, which are required for whole- and split-plot designs. } } % general \subsection{NEW FEATURES}{ \itemize{ \item \code{how()}, a new function to create permutation designs. This replaces the deprecated function \code{permControl}. \item \pkg{permute} gains the addition of true blocking structures with which to restrict the permutations. Blocks sit as the outermost layer of the permutations, and can contain plots which in turn contain samples. In contrasts to plots, blocks are never permuted and samples are never shuffled between blocks. Permutation only ever happens within blocks. To facilitate this, plot-level strata are now specified via \code{Plots()} instead of via the old strata argument of \code{how()}. Blocks are specified via a new argument \code{blocks}, which takes a factor variable. \item A new suite of extractor and replacement functions is provided with which to interact with permutation designs created by \code{how()}. Extractor functions have names \code{getFoo()}, where \code{Foo()} is a component of the design. Replacement functions have names \code{setFoo}. The replacement function are especially for use by package authors wishing to alter permutation within their functions. The extractor functions are recommened for all users wishing to extract features of the permutation design. \item As a convenience for users, the \code{update()} function will now work with objects of classes \code{"how"}, \code{"Plots"} or \code{"Within"} to allow quick updating of features of the permutation design. This approach is intended for interactive use at the top-level and not within functions, where the new \code{setFoo} replacement functions should be used. \item \code{shuffleSet()} is enhanced in this version. Firstly, the function now returns a classed object which has a \code{print()} method to allow for compact printing of the design elements used to generate the set of permutations. Second, \code{shuffleSet()} will sample \code{nset} permutations from the entire set of permutations should a small number of possible permutations trigger generation of the entire set. This avoids the generation of a set of non-unique permutations. Finally the random seed that generated the set is stored as an attribute. \item \code{allPerms()} no longer assumes that samples are in block and/or plot ordering. \item The package vignette is much expanded in this version with new sections on using \pkg{permute} within functions that will be of interest to package authors wishing to use \pkg{permute} in their packages. } } % new features \subsection{DEPRECATED}{ \itemize{ \item \code{permControl} is deprecated in favour of \code{how}. \item \code{permuplot} is broken and effectively defunct given the changes to the way permutation are defined and the addition of blocks. \code{permuplot} is no longer expoerted from the package namespace. } } % deprecated }permute/inst/TODO.md0000644000175100001440000000652012246472635014033 0ustar hornikusers# TODO List A TODO list for **permute** - or things I know are broken or needed. * `summary.allPerms` - is not printing the permutation scheme. *Done in 0.7-5* * `print.permControl` - this needs to be updated to new API, and I don't like the `*** Foo ***` headings I used before. *Done in 0.7-3* * Need a way to update the permutation scheme, e.g. when a control object already exists and want to tweak it. Example is in `?allPerms` where I turn mirroring on via ctrl$within$mirror <- TRUE But how? Best idea currently is an `update.permControl` method. The generic is in namespace `stats`. Or a `modify()` function, perhaps coupled with specific replacement functions for certain components. *DONE, in part, in 0.7-5* The matched call is now returned by `how()` and this allows `update()` to do its work with no further effort from me. What isn't so neat is that currently this means you need to type out in full any specification of `within` and `plots` as these take the results of function calls. Hence we have, from `./man/how.Rd` plts <- gl(4,10) blks <- gl(2,20) h1 <- how(within = Within(type = "series", mirror = TRUE), plots = Plots(strata = plts, type = "series"), blocks = blks) ## The design can be updated... ## ... remove the blocking: update(h1, blocks = NULL) ## ... or switch the type of shuffling at a level: update(h1, plots = Plots(strata = plts, type = "none")) Where in the second `update()` the entire `Plots()` call needs to repeated to change just one part, the `type`. This has been tweaked a bit. The second example can now be done via: update(h1, plots = update(getPlots(h1), type = "none")) Here `getPlots(h1)` returns the `plots` component, which too has a `call` component and hence can be `update()`ed, hence the nested calls to `update()`. * `permControl` - deprecate this in favour of `how` as in "how to permute"? *DONE Completed in 0.7-4* * `permuplot` - this may be fundamentally bust - it only worked in the original API and never got updated. Now the API is 2 versions further on! It is also more complex than the original - not sure it'll be easy without a lot of work to visualise all possible schemes. * `check` insists on returning all permutations *without* the observed one. *DONE Completed somewhere, probably when I made observed only work via how()* * The following example from `shuffleSet()` gives same number of permutations via `numPerms()` for both designs; should be fewer if same permutation within each plot. ## 10 random permutations in presence of Plot-level strata plotStrata <- Plots(strata = gl(4,5)) CTRL <- how(plots = plotStrata, within = Within(type = "free")) shuffleSet(20, 10, control = CTRL) ## as above but same random permutation within Plot-level strata CTRL <- how(plots = plotStrata, within = Within(type = "free", constant = TRUE)) shuffleSet(20, 10, CTRL) *DONE in 0.8-0* * Write an Rd page for the `"permutationMatrix"` S3 class where I can describe the object returned by `shuffleSet()` and the methods available for it. *DONE in 0.7-8*permute/inst/COPYRIGHTS0000644000175100001440000000112712245776133014357 0ustar hornikusersUnless otherwise stated, the source code of the permute package is copyright (C) Gavin L. Simpson 2010 - 2013. One exception is the code for the `update.how` and `update.Plots` S3 methods in files PKG_BASE/R/update.how.R PKG_BASE/R/update.Plots.R These functions are based upon code from the `update.default` method of base R. These are Copyright (C) 1995-2012 The R Core Team. These codes are released under the GPL version 2 or, at your discretion, any later version. The full copyright and licence statements for these codes are retained in the header of the respective .R files listed above.permute/inst/ChangeLog0000644000175100001440000003551512271260047014512 0ustar hornikusers$Date: 2014-01-26 20:21:11 +0100 (Sun, 26 Jan 2014) $ permute ChangeLog Version 0.8-3 * allPerms: with free permutations *within* plots, `allPerms()` was not returning the indices in the original data but in the permutation indices within plots. Reported by: Joris Meys Version 0.8-2 * allPerms: with free permutations *within* blocks, `allPerms()` was not returning the indices in the original data but in the permutation indices within block. In addition, `allPerms()` was not replicating each row in a within-block permutation matrix for all the rows in the other block within-block permutation matrices. This is now achieved via a new, non-exported utility function `cbindAllPerms()`. Reported by: Joris Meys Version 0.8-1 * setBlocks: get block name before doing anything so that you really get only name instead of its evaluated value. Version 0.8-0 * Released to CRAN * DESCRIPTION: now uses `Authors@R` to populate `Author` and `Maintainer` fields. Finer grained recognition of contributors and R Core Team's copyright. * NEWS: added a `NEWS.Rd` file to document high-level changes to permute. Detailed changes remain in `ChangeLog`, whilst `NEWS.Rd` will summarise the main user-level changes to the package. * allPerms: fix a bug where the blocks of permutations were being recombined in the wrong way, by rows instead of by columns. * numPerms: was ignoring the `constant` setting if free permutations within level of plots. Version 0.7-8 * how, Plots: enforces that `blocks` and `strata` are factors, or can be coerced to a factor via `as.factor()`, if specified. * check: gains a new argument `quietly = FALSE` to suppress messages about updates to the permutation design when they are not needed. * allPerms: no longer allows messages about generating set of permutations to be generated by `check()`. It calls `check()` now with `quietly = TRUE` to achieve this. * shuffleSet: played about a bit with the way the design is printed if you show the matrix of permutations. Version 0.7-7 * shuffleSet: Implemented an idea of Jari's to allow `check()` and `allPerms()` to do their thing and possibly generate the set of all permutations, rather than turn off checking. If that now results in more than `nset` permutations, `shuffleSet` randomly takes `nset` of these. This is a nice suggestion as it avoids the problem that with small numbers of possible permutations, you can randomly draw the same permutation more than once. As I have added this feature, I reverted some earlier changes to the documentation that used the `check = FALSE` in their call to `shuffleSet()`. The `check` argument is retained though, as a way for function writers to skip that part of the permute workflow if desired. The permutation matrix returned is now of class `"permutationMatrix"`. This class has `as.matrix()` and `print()` S3 methods. * allPerms: gains an argument `check`, which defaults to `TRUE`. This is used to turn off checking within `allPerms` if desired. A use-case for this is in `check()`, which might end up caling `allPerms()` to generate the set of all permutations. In that case `allPerms()` used to recheck the design. Now this doesn't happen. `allPerms` also uses the new `set<-` replacement functions rather than `update()` as the latter causes problems when used within functions as it often evaluates the stored call in the wrong environment. * check: following the change to `allPerms` (see above), `check()` no longer results in it calling itself, via `allPerms()`, when generating the set of possible permutations if the check heuristics indicate it should be. Turned on some `message()`s when the user asks for too many permutations (more than the set of possible permutations) and when the set of possible permutations is smaller than the `minperm` value stored in the `"how"` object. The latter notifies the user that the entire set of permutations is being generated. These messages were updated to reduce their length. `check` also uses the new `set<-` replacement functions rather than `update()` as the latter causes problems when used within functions as it often evaluates the stored call in the wrong environment. * Plots, Within: now return a object of class `"Plots"` or `"Within"`, respectively. * get-methods: added a number of a new methods for existing functions to work with `"Within"` and `"Plots"` classes. * set-methods: added a number of a new functions and methods with the common name `setFoo<-.Bar` where `Foo` is the component to be updated, and `Bar` is the class. These are replacement functions only. They are intended to be used within functions, where the user-friendly `update()` will have problems getting the call updated correctly ot evaluating it. * how, Plots, Within: Now work much harder to preserve details of the design (i.e. the names of objects passed for the blocks or plot strata), and also process the matched call so that the user can `update()` it. * fixupCall: a new, unexported function that allows the call objects stored in a `"how"` object to be updated. This is not exported as it is intended only for internal use. Function writers should use the `setFoo<-` functions instead. Ordinary users should use `update()` as long as it is not in a function. * update: new methods for objects of classes `"how"` and `"Plots". Thes are copies of the standard R function `update.default` with some changes. The source files for these two functions preserver the R copyright statement and document modifications made by Gavin L. Simpson. * Depends: permute requires a version of R no earlier than version 2.14.0. Version 0.7-6 * summary.allPerms: Was printing two slightly different subtitles. * More unit tests... Version 0.7-5 * how: the matched call is now returned permitting the use of `update()` to update elements of a stored permutation design object. Suggested by Jari Oksanen. `how` also gains an argument `make` which is the user-level way to control whether all possible permutations are actually created should the heuristics in `check()` decide they should be. The `print` method for class "how" wasn't printing details of mirroring or constant settings for within-plot components. * shuffleSet: was incorrectly recombining individual block-level permutations. Reported by Jari Oksanen. Gains an argument, `check`, which allows the user to control whether the permutation design should be checked. In small data sets or where there are very few permutations, `shuffleSet` could generate more permutations (i.e. all possible ones) than requested. Turning off this checking with `check = FALSE` will result in exactly `nset` permutations being returned, but without a gaurantee that they will be unique. * numPerms: fixed a bug where `numPerms()` was ignoring Blocks when computing the number of possible permutations. * Within, Plots: as with `how()`, the matched call is now returned as part of the list object, allowing desirable `update()` behaviour. * allPerms, doAllPerms: now correctly work in presence of blocks, and where there are no plots. `allPerms` now includes the permutation design (its `control` argument) as an attribute, `"control"`, on the returned matrix of permutations. `allPerms` loses arguments `max` and `observed` as these are supposed to be in the control object created by `how()`. `summary.allPerms` (its `print` method, more correctly) now prints the permutation design alongside the set of permutations. * get-methods: new extractor functions `getObserved()` and `getMake()` return the `observed` and `make` components of object created by `how()`. * getComplete: This now only returns the `complete` component of the `"how"` object. Use `getMinperm()` to extract the component no-longer returned by `getComplete()`. * check: function loses arguments `make.all` and `observed` as these are in the control object returned by `how()`. The logic of some of the checks has been tweaked slightly. * Documentation fixes in examples of `allPerms` and `check`. * permuplot: This is horribly broken and I'm not sure if it will ever return. In the meantime, this function now prints a warning message if used and returns nothing, invisibly. The function is no longer exported from the package namespace, and not documented. I'm not convinced that the plot can adequately convery the breadth of designs now possible. Hence I am minded to deprecate this in 0.8-0 when released to CRAN and to make it defunct some thereafter. Version 0.7-4 * Deprecated functions: Completed the deprecation of `permCheck()` and `permControl()`. These functions will be made defunct following the release of version 0.8-0, with a view to complete removal from version 0.9-0 onwards. Version 0.7-3 * Tweak to 0.7-2 API changes: argument `blocks` no longer takes a list from helper function `Blocks()`. It is easier and simpler if this just takes a factor. In essence, `blocks` in synonymous with `strata` from `vegan::permuted.index` and the new change will allow for an easier transition. * get-methods: New extractor functions `getMirror()`, and `getConstant()` which retrieve the mirroring and constant elements of a permutation design. Also added `getRow()`, `getCol()` and `getDim()`, which extract the row and column dimensions of a grid permutation design, or both. In addition, new methods `getNperm()` and `getMaxperm()` return the number of permutations requested and the maximum nuber that should be allowed, respectively. New method `getComplete` extracts details of the complete enumeration features of permute. * numPerms: updated to work with the new API and now handles blocking. Exmaples now pass checks again. * allPerms: updated to the new API. * check: updated to the new API. * how: new function, a copy of `permControl()` and will eventually replace that function. Has a new `print` method. Begun process of *deprecating* `permControl()` and its `print` method. * permControl, how: the `strata.name` component of the returned object is no called `blocks.name`. * Plots: now returns the object name supplied as argument `strata` as component `plots.name`. * TODO: started a TODO list of things I know are broken or needed. Version 0.7-2 * Major API change: Added capability to handle true blocking constraints. Suggested by Cajo ter Braak. We now have: o Blocks: samples are *never* permuted between blocks. Blocks can't be permuted either. o Plots: these define groups of samples, for example the whole plots in a split-plot design, or repeated measures on a set of sites. The sites are the "plots". Plots can be permuted using any of the restricted schemes offered in permute. o Within: these are the samples, the rows in the data set. They can be nested in Plots and/or in Blocks. This capability has made it into permControl(), shuffle() and shuffleSet(), though the latter certainly has one major bug in the case where there is more than one Block. Most other functionality is broken as the above change has altered the permControl object in a way that is not backwards compatible. Note that the 0.7.x branch is a development branch and should not be used in ernest until I work through all the implications of this change. Rest assured, I won't be doing this again! Version 0.7-1 * allPerms: implement Doug Bates version which simplifies and speeds up the code. A fast RcppEigen-based version also exists but will need larger changes to the package to implement. Version 0.7-0 * Vignette: silly typo is example code illustrating shuffle(). New section on `shuffleSet()`. The Vignette is now in `vignettes` not `inst/doc`. * check.Rd: undo the hack needed to pass checks prior to vegan 2.0 being on CRAN. * Suggests: now needs vegan >= 2.0-0 * shuffleGrid: was doing random flipping of permutations even if `mirror = FALSE` for the `constant = TRUE` case. * shuffleStrata: assumed that the samples were in contiguous blocks. Reported by Cajo ter Braak. * .Internal: removed all instances of .Internal calls in the code. * Package is now byte-compiled. Version 0.6-1 (released to CRAN on September 7, 2011) * NAMESPACE: export(permuplot) * check.Rd: temporarily supress some of the examples to run only on vegan >= 2.0-0. Needed during transition to pass checks on CRAN until version 2.0-0 is released. Version 0.6-0 (closed September 7, 2011) * allPerms: added warning regarding current need for samples to be arranged in order of any strata. * Release: Pushed to CRAN. First beta release. Version 0.5-4 (opened August 31, 2011) * permCheck: deprecate `permCheck()` in favour of `check()`. * allPerms: code clean-up * preparing for first release to CRAN. Version 0.5-3 (closed August 31, 2011) * shuffleSet: now handles all permutation types that are available in shuffle(). * nobs.Rd: fixed an example which created a numeric vector of zeros instead of changing sampled vector to numeric. The example yielded an error in R 2.14.0 (under development) where only one argument was accepted for numeric() and two or more args cause an error. The two isTRUE() cases should be true only exceptionally, and may call for a fix. * NAMESPACE, nobs-methods.R: The package relied on import(stats, nobs), but that works only in R 2.13 and failed in R 2.12.2. Now we define and export nobs() generic in permute package for older R. The help file still gives a warning for missing documentation of nobs in R 2.12.2 and prior, but there is no obvious fix to this. Version 0.5-2 (closed August 23, 2011) * shuffelSet: new function to generate a set of `n` permutations without the overhead of `n` repeated calls to `shuffle()`. Currently only for designs without strata/blocks. Version 0.5-1 (closed July 5, 2011) * shuffle: now returns seq_len(n) for no permutation within blocks or of blocks. * tests: testing using the `testthat` package. Initial infrasctructure. Version 0.5-0 (closed June 28, 2011) * shuffle: renamed permuted.index() to shuffle() * Vignette: the package has a vignette, which is very much a work-in-progress. Version 0.0-3 (closed June 17, 2011) * NAMESPACE: permute gets a NAMESPACE. Needed to shield functions form ones of similar name in vegan. Version 0.0-2 (closed December 09, 2010) * allPerms: Large update. allPerms now works for all permutation designs *except* when permuting both blocks and within blocks. This exception is handled with .NotYetImplemented(). * numPerms: Wasn't returning the correct number of permutations when WITHIN == "none" and BLOCK != "none", i.e. permuting strata. * Utils: Utility functions defined inline within allPerms moved to new proper functions and renamed; allFree, allSeries allGrid, allStrata. Version 0.0-1 (closed February 28, 2010) * SVN: Uploaded code to r-forge within vegan source tree. This code base represents my working version as of today, *not* the version in vegan at that time. permute/inst/doc/0000755000175100001440000000000012271654425013503 5ustar hornikuserspermute/inst/doc/permutations.R0000644000175100001440000002477212271654425016374 0ustar hornikusers### R code from vignette source 'permutations.Rnw' ################################################### ### code chunk number 1: preliminary ################################################### options("prompt" = "R> ", "continue" = "+ ") options(useFancyQuotes="UTF-8") ################################################### ### code chunk number 2: load_jackal ################################################### require(permute) data(jackal) jackal ################################################### ### code chunk number 3: ttest_jackal ################################################### jack.t <- t.test(Length ~ Sex, data = jackal, var.equal = TRUE, alternative = "greater") jack.t ################################################### ### code chunk number 4: ftest_jackal ################################################### var.test(Length ~ Sex, data = jackal) fligner.test(Length ~ Sex, data = jackal) ################################################### ### code chunk number 5: meanFun ################################################### meanDif <- function(x, grp) { mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ################################################### ### code chunk number 6: randJackal ################################################### Djackal <- numeric(length = 5000) N <- nrow(jackal) set.seed(42) for(i in seq_len(length(Djackal) - 1)) { perm <- shuffle(N) Djackal[i] <- with(jackal, meanDif(Length, Sex[perm])) } Djackal[5000] <- with(jackal, meanDif(Length, Sex)) ################################################### ### code chunk number 7: hist_jackal (eval = FALSE) ################################################### ## hist(Djackal, main = "", ## xlab = expression("Mean difference (Male - Female) in mm")) ## rug(Djackal[5000], col = "red", lwd = 2) ################################################### ### code chunk number 8: permutations.Rnw:125-126 ################################################### (Dbig <- sum(Djackal >= Djackal[5000])) ################################################### ### code chunk number 9: permutations.Rnw:129-130 ################################################### Dbig / length(Djackal) ################################################### ### code chunk number 10: draw_hist_jackal ################################################### hist(Djackal, main = "", xlab = expression("Mean difference (Male - Female) in mm")) rug(Djackal[5000], col = "red", lwd = 2) ################################################### ### code chunk number 11: permutations.Rnw:142-143 ################################################### choose(20, 10) ################################################### ### code chunk number 12: show_args ################################################### args(shuffle) ################################################### ### code chunk number 13: show_str ################################################### str(how()) ################################################### ### code chunk number 14: compare_shuffle_sample ################################################### set.seed(2) (r1 <- shuffle(10)) set.seed(2) (r2 <- sample(1:10, 10, replace = FALSE)) all.equal(r1, r2) ################################################### ### code chunk number 15: series1 ################################################### set.seed(4) x <- 1:10 CTRL <- how(within = Within(type = "series")) perm <- shuffle(10, control = CTRL) perm x[perm] ## equivalent ################################################### ### code chunk number 16: grid1 ################################################### set.seed(4) plt <- gl(3, 9) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3), plots = Plots(strata = plt)) perm <- shuffle(length(plt), control = CTRL) perm ################################################### ### code chunk number 17: vis_grid1 ################################################### ## Original lapply(split(seq_along(plt), plt), matrix, ncol = 3) ## Shuffled lapply(split(perm, plt), matrix, ncol = 3) ################################################### ### code chunk number 18: grid_2 ################################################### set.seed(4) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3, constant = TRUE), plots = Plots(strata = plt)) perm2 <- shuffle(length(plt), control = CTRL) lapply(split(perm2, plt), matrix, ncol = 3) ################################################### ### code chunk number 19: series_2 ################################################### how(nperm = 10, within = Within(type = "series")) ################################################### ### code chunk number 20: shuffleSet_1 ################################################### set.seed(4) CTRL <- how(within = Within(type = "series")) pset <- shuffleSet(10, nset = 5, control = CTRL) pset ################################################### ### code chunk number 21: permutations.Rnw:256-257 ################################################### how(nperm = 999) ################################################### ### code chunk number 22: withinArgs ################################################### args(Within) ################################################### ### code chunk number 23: change-continuation ################################################### options("prompt" = " ", "continue" = " ") ################################################### ### code chunk number 24: ptest-fun ################################################### pt.test <- function(x, group, nperm = 199) { ## mean difference function meanDif <- function(i, x, grp) { grp <- grp[i] mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) ## iterate over the set of permutations applying meanDif D <- apply(pset, 1, meanDif, x = x, grp = group) ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } ################################################### ### code chunk number 25: reset-continuation ################################################### options("prompt" = "R> ", "continue" = "+ ") ################################################### ### code chunk number 26: run-ptest ################################################### set.seed(42) ## same seed as earlier pval <- with(jackal, pt.test(Length, Sex, nperm = 4999)) pval ################################################### ### code chunk number 27: change-continuation ################################################### options("prompt" = " ", "continue" = " ") ################################################### ### code chunk number 28: parallel-ptest-fun ################################################### ppt.test <- function(x, group, nperm = 199, cores = 2) { ## mean difference function meanDif <- function(i, .x, .grp) { .grp <- .grp[i] mean(.x[.grp == "Male"]) - mean(.x[.grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) if (cores > 1) { ## initiate a cluster cl <- makeCluster(cores) on.exit(stopCluster(cl = cl)) ## iterate over the set of permutations applying meanDif D <- parRapply(cl, pset, meanDif, .x = x, .grp = group) } else { D <- apply(pset, 1, meanDif, .x = x, .grp = group) } ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } ################################################### ### code chunk number 29: reset-continuation ################################################### options("prompt" = "R> ", "continue" = "+ ") ################################################### ### code chunk number 30: run-pptest ################################################### require("parallel") set.seed(42) system.time(ppval <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 2)) ppval ################################################### ### code chunk number 31: run-pptest2 ################################################### set.seed(42) system.time(ppval2 <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 1)) ppval2 ################################################### ### code chunk number 32: get-set-eg0 ################################################### hh <- how() ################################################### ### code chunk number 33: get-set-eg1 ################################################### getNperm(hh) ################################################### ### code chunk number 34: > stream xڝZYF~_G Iړ''#)eQd^۷. :V-4zwk<23QeMb&~k8ͳp1q2Ogl?0׻%>i~ f/ٳ&j@8ƶ% ۙ3#0ISDs10eVf1>-nd(,s׉hۤK~⊾Լ_>a?p5wo{fz⁨XgjtJnx%RwIA2wӞ4NjTG@KkFo[qǧLtlݴ80EL^'j6+AB'[SdyI1jsƂoO"M0)\gwiDB1e:Cu/P%@Auߋ]aD,#l9>/ @|b3#-< f|!160Vx{#/gꘅ^DEW(*4` g(tt$½2ȴ@dKPe)M5ùN 08dy|bSoRρtvQ1Z9wzӮIh7ZtCu x@nɥR3dy '4(`!{E+Bu\Hdޢ ,:zlED9݂/Yb@Vj1D9 `B /{H09 Rp%jb^@V7NrB>reB rj"On,-mώn Nx 1e)1)Iqa_Ѳ9Uðjy%%Q=}"lYpBkvbDmp8 jN?aͳS ^>J8lQ$yL%{fj#x? 9^;G~I)8ݑۻ+nP?VfYՉpJ+@ڷ:A:99-a3Orx;)O!]@^#ꂛܹv\9T:'arM)`pXۭ#=oTftQ>R2X~%GINDj F@m4-y{A"K"IqԝJ2 /Bh°,yJң3Ih+Fg:fEk9 d/N?M'y]bgհԒ.ߞ_ 0QBP!0h:. ' 4Ue\>wz!m^$*8 {<Ӛ uht $PgiF0+e`hdHa}7o|,3t_RDeDfXߐoMiV0MA.xrGWV#̳xf-7sg"^%uڞ,6w-: h˥;fi37'pV0݅h4u,e*agOv^Tu+69+sz3̋x\Dom;jxiQћL;JyE;zӇSA՟Hmu ? 5ճ &~6/\xi ر3[%ƝeI>A\ԒzlH3(/ ^mi<۞^g-R[ik6,öC{:}tW7\JVqqĕ6IqTL[´5ug&G|cĀ# 'Nf7ZĊ?|PwH`b S&k=l&={NYNBr"|xvQ2HTA"D HQqS= U^N=ԗVuʮI0Ʊ$v2tn7/H IY87NQ\%/(}c%8TCA~ \[IvC rG^l9B ZIU\hѦidY4@Y =o` Ə㮥 d 3 x^g%(hx>]ێv i9)R@})_~3aK YnItКy=jDc xkC\a4UT> stream xڭIrFW| X1` VWJe"@I0)9^fBV| 1K=l5g??˫bVFe&rVƳ<ͣRz.}yI4yۭ"j*60~&ҝ?*~[{tH6GI2x d1㏖ݿ~8 <*tZ@ U(ul|uy8 L3%)nLh:g.,*4uB=&oF5z}h!aU7kSMB/'6JP=' mAI-3 %ݯìgH%َ@CPmq&R.yxźf 4+3:S$n̴;G_^Eտ$Tu?ciwXLDWQ*R6qXQ,lX:5Xr=J堢k`l0/3!#Q$#!>̻0)KmvKO] EQlY:'s+jsDTN#[ŷ 'y6n"%+*'ml!8:`C;.<85`/\^g@ ?I\Sfl^i@ag [UakDLj:'s-& {̐]{"vI9X{Ƀˤw&O1A#թ)&CJNބ=̘d#0Y-0L U焠H+Qv$nQ LZoʤe iYHO\o;+S53T"z鼴eC(W126¬v塈 Yg89h. yzƻ\V++9g0 l~Ty)fKsx3g7|__?OG endstream endobj 120 0 obj << /Length 2720 /Filter /FlateDecode >> stream xZIorXlkgxd9t-Qf$4ߞFR@XWgOx?>y{ų*$=gIDLfEVDfه7j^$ZBdmĿc]{ᛷaG*8J7>O4ѳN]p=D4#< *Y ?Jw ϓ mx_{<ܵK]dd Ϗiy͕@"$J SH긹&g|q}Yl |4RLLȩY8-.BʲO\"j)QNxƉx_kP3kP~ x>y:9YʂXD2x x)F!Ljq+Gkt;CHa(s<_?MۺfkW9EEB6XzJ:L˥cwkW}ս#JTrr&'l,5"*l(;$E0 %wd?leJ=IP-n%QS Ī ؚM`ܵ𼕐z? 8'Y%nO_/pwr@>AKedu6d!2!>ͅXr,炿܄ġ!=ll^h?c==d͊(7f8RJ5Bg¹0:D5fRQYUf{d2!b7F< *fCcs*<3/e[q$4t;0)S{QvsjKĨgցa;'r"~+`TW>eU`LIlxu E0\uyq  {_؁/7b0Z ~Bs=F0HⴟyZ-"7L )_2Tq3W`.V n7B&l,6#3loPwؑ͋' ޑK }mkHc(QKEߥ[%ny=O@_ 81 3Ug]@j~bעFm0$` joݖ"G]0}%lw{:#OI5݊;%[aD@w[aY3" A8tLHMVgK@yTs 焅sjR1RtIkv\Fږg ;SjR]OaeΠOMl K5U rБ0._8g S67[τ,F.;F^a/)2QD5}cu;@"&w|>IJ__׾ ;MC |{Ŏ B(R;~V58@WIv?+pw39rbdGx_6׍Nj ̉.0,`)0! )`zcZV..jͳ\L^*RLt7xAF2PpZ4[F\8s>6TtS4 89rE aF)7TYͶ/YM0JI0G[\ =2-qz\/(~ȎC0)ܧ:;3_=!. endstream endobj 126 0 obj << /Length 2740 /Filter /FlateDecode >> stream xڽZ͓۶_ԂA$LԙtZՒ%s "q<Lxkg}}ۛ7o2UYege^*gOso6I & "Y,,tX弁~;^aӻEM+XalR\f׽}ੜq4S?\w=0Y{KxIb2+!Teěy`˸1Ֆbi#U-ށP eԝz|7k>Vm5?=c2Ox.@OʢηE#*_O Xz_Hu  'TPr\=* _~I+LiSh-|9yH~7p" UCxBB}gXEΖ3,xٗ4%b _?/Z'tY}0r/M,lP~jx8{U^!,J Y_v]5L*}Qzx+ aH{!|e1v&y~_?~u1FzQ |x@>\YJ#!y r${ %큟#\ ynj9VC0ŏ;)5JkjyV8ܑ+me঎kd?w VPOljҬJdwb vK F| O1 [$ 'Ih V.$E#竣YLV'MMO㘉$ed}+o ] h% I3z]ӻd'~VPE{$?$b6l#:q~V$EUVD~/ 7Q7zfw\ٝ&q#E30ltș"*4I nbǺh 'MGn\x:g\L̋8]x~cz'-mS7Ĕúbq(:+JFW'4iؐ?"YMW#JxmHÉF"&rp&zDd@Xd=XZΔi#E2>)%G=m YxI${՟cv} P9ֱg3v_+2[ 9&/MeDʁ{DkɡJ|ovy. 0[lp3gN2'-C搶_;gSy3!@ Mϔh A}\ :jL=u)u9!\Du@IJRP "k ;^ nC 2Vj㖂xDc UJ+k~"?4ZārˈpZSVUӊ!(2NZglf pj2 gb+EeS"/>Q6k"e="*61O'ރsO=أڥ$ex*nCRMѡ1E߱72AW01~y_vETCru 9CmIP> 9 Ȧ-p0bMgRBc*ȡm%E$\{q8`'"YJ3ӈ:>YHDPyyqʀQ?w,V&b=9Lb4$QZ{ 3(Z yKUD:()aeZPhakQFKe8 2Zo3NR| $.y"*\~߿ܑrU;FS_2uPP9 a-c>DL3/+4b_ wh? VPn_~q^8|{P.*Sl\g(Lҟ' `:NNzVoyW?7@|pE~jǶii A B{:#mӛƼ? НEZu5 Qu?y(Azcg7CۛHX endstream endobj 133 0 obj << /Length 712 /Filter /FlateDecode >> stream xVKo@W*6›}H6(B@8PDl$Tݙoߦ-`gޛ7F%<1ʰ)(G1OtWH? T2Vϊ5L۪ ߍ6`$0g"ٯӹ'a#dR+d zeDJ֣BUXc-PzD0+n z ah yq'xicb0? VZ^B0eyWS(RZhcU;3-di8UF*F"*Y yRyWX3d(%O"JOfU *w;J1@h'r60.D$l> /ExtGState << >>/ColorSpace << /sRGB 137 0 R >>>> /Length 608 /Filter /FlateDecode >> stream xMk1+h/̛`10F`;4!WXaU#)M4,+ptfYV<2RW™=XNu:cvDxLNҢ?3mL 6#>o& h|e6GxC][yL]="am+JSD-KU'=6@UVDžgY`\e y?q:'C.ג 0ch 3kOOǡOD՚◽GI;@ҹ.ߦW'1߉SohX~yTƦsoq;^JiSLg*X.{[_[]ReźwĶA1n""nivk_R̝W=)S)o2vNwu" endstream endobj 139 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 142 0 obj << /Length 2218 /Filter /FlateDecode >> stream xY[~_a}"E]M EМIr-{)J,}EQpj7oz~ql򼞔j<.րa8I4Êo 5lE+hX|A6uF&[f+fiO|LN5W"o7PKǙU*W.49r+$r[4t:Z=jaoNv喊T KJqβ?GF3k=:ZQ/k[YBřI^q0.UqYRZwdM[W3t^p#ew| leKU,RD]X񡩃Nx}C+>Q' "6O&|mD1Wi7Gɢe LeZu3'%YFN|tR(~Z5.Q;?RKR34VwDq2:s2N|Kҧ8Q>: ޱ@EC*}kjsW/^ AxaP["R4.F2rq,m|4l$B0&㋛R:4LkW5W5 Iql> stream x]oF=Bh`cclZt(a5X[q ؖ')MGyS,;^f{x$_N,8xyⅎ"*R@2R 2El\N^NŤlav*%'#oN~xu"댨 9bE*=0*Uq RZI hekXB^WBD{| PWƏ,$ޓ֭ +-qCQ^ag/>X1uI>yR6{V k^k>JN[ֿ@/?BQqHGRQatʽ"N2B9…@$P2T axOA n?9{_Bu1ϏR-l[kCkH6n]g}e¼1)_'q}"9Ƹ<V#W&1d۠}&(xN UWjrOm L@ ,JbԪn*sl:55UZ'౛EQs՚;ִƽDpMi+K:[8=MD;kt$DKHdC4,֐fͲ[:hzL9J$TL[G eEDۡ*4{ߡ6Iͺ1eTL[9wD5xrK: Ai'!mJdCRu-p&;?(4+c{Yu;-eXk9+FZZv}+Hzbr4)i^[SM KoBXth{VC!cNrfXNxwIeo7Frpؽ㓎<~/^z#Z}(ѡ =Ӄ48T;T94shԡ¡r0 *U:],ɕË ?P.x<֏grxH֭sCRkߘ{Jtem%I;Dl gdZK}#>ʖam򖎗~%(o@+hKҐ|<̷~Xp,y8 z#y핁G+qָS+z9 |II尦\KҀWX')C245NʸИ& '9 5Ab2,ABwwЙY\yxzzfቇg'xg=> stream xˎD>_88biw) AV0OQ0^nǞ,zW*jۛo7wTìP,$j>?%É!Vʻv;|a :7:8: *89:NҾ+yBI7JK#O\83V4(,=}-XDwG)fVE"WcB}A˚=Eh.YsY%&,hټ1}GWx!'{kxp9AMzwDqg׾/yP{^,尖;(s>ʸ( S DpfQbL"ĔV-IC/~BrJ%D)Uu,SuH0W΀_C_F'0yj ~'%)ۉ$3vrJKwlk'@oГ&H(YǞV+v n$ď=I׼<>s?R[^q5F #MxKd58i1(84zfU9:ON+BA{n.J><ȳ*Qnk L;60='JGfMOyM{5S.#}8mcE&kOq?GƐO ? C^cȳc'2Sg;fEkҰ D~y( YmRUiw9R-ym$^ fڄg[!tFZ_,7<')ti}z) l1qXg4,7Hສeg5c=e>۵sXyz䠔+13PxD[rdY> stream xڬeX6,`w][pn-[n! o9|?53SwUWTw)@vn0IM Sp9x(x(8@MB!Bmqq@@NTIqBpQߘPAoM Q@v7Ԓ7BqЃ@Pqv`ZbA\o`3j33e p)8Pe75 q(8 vRhA 7z3 Pޘގ1sAo 7fn ~cpQp1@CR@0EP'9\?cC`vԷ`(3pP@A(Y7 F^8T943'

ΌE;-? 2_=or]wFX4[5~\W"C 4(12֓cBVemY*K1_x S~du Tox=/K&ik&C_ *퐡cqzjyЊ!zO V~Sީ\Ww7Hs>™l?h)iH  ?Zu^$K\}sѯFu`9&J\_K=/>=\\8m'ggV(&hK>7I?y %(lScCQ>ySlMmf _'mp}h =̕)> Ѽt[G WUR}lfxU N?*6a8jQhǯOpCZஷqka\\~%Vӎ Y81WL]:ڤL>2뫸k1;x"hK|8'y.¢@fVTXb.TSys c5b^yCC'FXgkq لs#BO흞DԲ,7tOS=bmɜ_U?`YS~e1 f.?ٰ Y:5_>u5&qYsS$׾;|ů\h^/Xs6M WrIF7ؤ&n,^.фP)MjKZ=M.Qɍ3#O{_zq:]^Q` d/Q&x;)e wڕ3H;ЇGo??(xJD4"6*vz膉E{x ;n-? T`S{S`&4jma1_\_ ͺuN">m)U"0Ex/&)a.'(ej? !+Si,V,ѧ/7"҆G,L-9ƾ=ky&.;&{ĴCc{%2yK؁ö4_w|MF!n\YO%}B+ZW3US^Kd)Wjڏ%F8V1das6/ #3JV/6hk "B .豯֟V}D[-fYt9y=?cH}|dyt(y(5Kx@ 3 <sSP!iKܸ)N p?a͡0eΪ^"oyieǍx,n|~ 7Ƅ@8Q_|4Ǟו5(;C*hl1Ű9q>6Qi1'(3`ډP&,/L6T9܂#PKN$PC(a>eN+O DֱN!ew4+VGg!LԼjqWv܃ZqmiI?[oƓMoD#7:> u/ !`7 5>-ptQqR#S"xiaiֲ.cf" u-*9"YYA 8:m *l3\0wҵ?Jhrn;47y?!2|n#B$_,Bol99®Hcd+<@v#GA!B/!ֽհ|"o3΋li9MU`=)> #8S; "H⚕_)}鴵;/Y0'l.Uӽm̽4[꬗/)%\5=+W6y:]DHkUp5ic5a1å.\#=\4x|ʱi̿/F/ m\=NS,ʥ 5 8P4$WvȭhP}I<%,7;r@xçz4vV8u;x:"@8xXaХ k_Oz.|NoF=9 u#̎%-<)@̀yp17ws}VTԢ—^6bvx9MY Յ S3sc+3^,ˮڨGͳk-OYi ͳ~+1A4멋6 ?,sP(yq']y3n^DOT3kԻk BG`,hb=PLG|迏g `Tz^^Dw8l+*|oǼZ A)egwH?wǍ٪=įMp¬HLrp,j Yb7:WS/k͖^9xv}Vz_nsV/?tH.ZWrX#E 6hλx#mŧY<|ԟęi\agLLK|>$x7(SÉˑB3Q䀼s$ʊl$k&a1}zՒz Gڊ*Ǜq4b\?*~a (vi%1@`W'6ʩ;0a\ '^RzDȃ@|#s]OɖEeqV? N?\G>j"i"y/;Ln\j;t`a?fw| wlk˞unT-ؔi-qgV[6E5T捙1>}t3f>N"~ [C9T1?3-I7}EfjN-@L,BFH:)OP&DžB|!WrwEnL؊?Vn[ۉǀ;G9s=l$HWQ)Y.k,~/`#:̄6 zytt]XGcEPVUqxS(]vCD^=}ME`i!} BbƥӖ/9R$W/^; -IǩV69Qt)ou+|D:r1{1w յYt/ hRֱc4!1.ֵ+^--<Ȭ- T曗3KCz;oUS+o{=:@ )>$3!| 60"Z`(/Lv<#H_.Vr2kߐa`7o[ȪȥKX^|#pXz:.uW%E"D1u+=iI}n\#C(`hh5 lEܵ8E:dncyZuJ NUBDXb.L痸}JWGcOi4st3YXFg&C2H#+ N+:a5XTzJFPX>to{TR_DP'U&tM2u5g{EIjR,ѺVfQ+Mv@ \ UyEzѪF2&N7ƮKXj79ku]u:@_F7¸ NϧulFpXEdcsrEJ7Il,},eg<>?&\ԅn+Nzq^}d;t:r[FVͶZuk { z j2*c[x1bRԥ)DtFV#fm| qaW!\@ڳ'%_S5$KO6} H/SGX&m>?.iNFHU az6xGQN_RKڿ;`+nfZsg3,r $5QMX 9&l(YOMqOcS;_M]IDzҳNRN c}˭; !JmOjgrWrdL271Lҏ"^8c)ļtPCT+,$^ )i@+"sOe 9jC#w{ė5.QĔ[XD G~.4mBŬCeFrBm>8QKL~D{>4mҙ0ec AÈo @5-Q݄ΆQMϲ\}T/ireHU)'^hf}wwe,bL63 ."x`HYN~ͪ}Bqi-rA57&kʏbEڐO7[&_H1G_ߐ%w w (?fS `v&q2G~ z.+Z֘HonC: ;}'ܗ!4]C{.@oSK!=|nv7Ϊܖe'B`<&o֔.l6"fnu(acc[:؀KRLAꝮP$J'C  qr?v=bqN Śi(p4.BP(l,RIO*hѣm?clu);-r.HŐ4s=l2M7DwUW\Zr(dO#-rz+7v8f^d /p~=醮 7#vWŠ$|':p>HmS/jG'o 2"Q~W1*0ҙSr= Ґ~.x} f$4ٟ124N1'yg4@a8<\#mx .*׊pzhHpt#'Wg2Π}ß9b$mjJ3N~¦;B¯@J HB?}5S,p ]hKJ1O1e>X5#>g)YV3 ]N]"b@,cҺֻog[RiP0}[Y/Nv\i%oRoa&nw%|!eϥ.x<.+IGNPuXD!z<ˮͰj,ywwrە[-6p-qwsUz12de 7{Q}Rmz s1`?W4R\M鍖%FFfZ^Nb'1Mamѱj {ZpEd`+wKw~=Θ)| Y }O˗#GcR]7t޺h)u&eF6$<¨sM61)[tZ .̕(aOw)Ta7Hx_n&%Mޛ m/xWÜ'!6,( 2x{MUz-h[|=񠂙 ˜r`^L{-V>Tw2ls͇ϯ)if8%sܡ)ȩU_jqtBHײ sQ>˧]rbJHCsMY=ܜF䫐3EĿz; !:QOɼ(S1sHs³Yulr*WVVMq___zcN^^ޑO􎇓S`Ƙ7eG(</[*#>]uSE !lb@ >&} &"u%jZ[8E?MH:L|du&_IRRRղ*wL[.B|Bys s?vG]9%H$'&3HR;U\Z|^ic f]7DӱMg._/v}{`EYB!.pW͹eeUUKQID2^ '666P'B#nwc?11 kO>!WJb [T܏8#L/Q(I'3[ud&{ElkgN#5Yg.T^z>:p в]9JZ$oR;8iXq0NNnoc:44R ?@Hҽ"˩mQ?-ufB.熢q&k dsj9[F* sۙ5\/Yb;+R,3pI`{7Sdc*i.zmxqL}T@mHv`1q0m7ͤgCw.'Ƙ``! ߼]Fc^Hvt`:sTIp[%C^]0vq;@p]ڼ)߿.H;ԣ}Z&+dbg'Ҩ۴ 9X<?U'LSGI+V姟<(x"-/ɁJ=A*3_fZ5Q+X $~nrq:X+EoQj1`xv1Rzޤx+˟Se8Ѧ#dh8 ) 'ƹaW#vg0+a\j}e(Cղ',+F3<7I*콢`wTzwX9+<2lNJZUsZgMۣwrmIEO=F8e/u |hU( qbȑG' NFeMjtؽܮH(B{xD(EEE3EԵBAINO%h- t17\looe=j]Uxί (~Ov$_tk/j;aU=tz N~9mSC,tf7|4담đBd+Ɂ8)sd_c`"vx_ -Ong #qF`s{5,gq(Js[Mʏdϭ\TGQχI}vI&/ t~tՒ8o+h0x$#X 1L)b<(bNA2P;!/~ E܅AV i3L_.k¨2Ruo:1T 9?~@҆bCCu->Ff;`k7ʎyxyZ8 sfuj8x9@j? #бzBo@=w^r>ϗĘ_,ɲVWU'; q)n21#qj踟}$< *ӿTUUUNt_O,heD(D -ИܽE֩'*Z&lÜl2fŬ/R٤uOsVпekߦ,qT+`󱙛R)T\ŏW 懺b [&Fn3[vy$0`n ڶPhiV"c<;]_MG㺑,;TFF~ޟ?tə}O .91uaUt.[ O34VqjN2oa(I7 N-h??R 'VvoEno6H"q+W~-]¡ao_1E`P CLCsf^4$C7%YJ$]Wpiz4iVbxƦq2]ȉ4ߙΝ׊MZPH)Ҍ}"3P, M[[nP93p1 +=@6@Ob&bzL"LN,phkT@<2TScb{ {ɨ ХKW00_VucW_b)jRK*8r>nW.*tV @VwJ ` jvsbXB]Ow^v HU[.;5.s(jsI&Ŭ;T%Jg:N6fm@_N wlLiC*)Dk7YJ9BBܳ -s]%TukX ]K \aȐkt7.ބ́HeS1;̄~¾0$\.WɝS狭θTDdKhL"52/Z('(?^U]1ũ12;\TWjf?rݴ[ӮjN^zW`;C.DO̕;l%vPi0(XV/k i%r!] K{&%M6߳}#֪Xh} 3~Rborʚ/08006%Xi( 5k{;I\ьa \UX2*x/ыݢCZ.6b=ch݈фy߅-4RW#0T1M֫N 3=sжV1/7,[MةDOb; TI' %ܐJ9sP%%h F`6jޝ{7ui"_עNZ~iTCqGۦ E;k}R 酷  |H?p9VI \o^T>oDqP󱜐na|ֻ>qdtL\:Xc\Ks\<'^wC-¾r4mtR>맟dF]u%gN&f vƕ!uMkȵ32#.b^6zdJ c Rp`G8s GÊG?>vP\KHn n2r=p0wS^|:;;W9kr|Nn(a/Br R?_uVH>&Jc0ʂ4*F?0: c|ՍV--4ߣ__@vXɻ\4 #:9O]-~h^b#* [;;V{F\|9˟ZGJ[ZX"-js_p vsA% s9ɋr9V-2B9XY!Y0PʬD(l[=ECJ_'JILV}Tеp-wpXhJ"pcIa_w ђCXpQVkkԙc@f&.h/$H@_o4y7;0$OB+96ЎZF9=_Ik蘐LwRRޠLp4AƯjjqQ@[1_pQs!Cz?K?PiZo=+dF,"2邻~uqFӝ;]Ne-9tBh@E|KώU+{2i&.TS"Hd꠻WBtlOH9r*ce%@Onk~Ma}?qZ*.{2D$O+q,JƁbt5٦S _qWU[U$\BwdDdh0 B ZHxE%)e-I$ERPo{Ͻ9<990R*39 甞/9?;{T$1(ԇkJ6~!Q [k&61 &g `~mW'HՂOWÎy\ʑnQJ%;)q: |ª/T|.-qTTG?mxwo0KQO&i^8ш^uupݰ}a#{(>[@mtc4z/{C#E? ~~s+m1rxXt..B+!ևUG闚_y_})Ҝ_^;^llFَ}O]]Ǎo|0MHꚐP>'nL7Ϗ1Wqׄ:)27je\? ]./*wPRWFj4,:_:,;M5x%жUJlteS;\fʫ_e,&]n5qbm]z#wS/3:i"AcZy cwpm[{.Z4|$d ; +`XW00sZ{ 2hj3lݦ Z>S RU==϶5+mvs"SyB&פ^a@n{"ڢwRC\jX%3CkVZkZ&LQiK3v[U&Ezmb+jT6;?{_hXjzYO. 0cwEE(潰=ꖶKJT5]h -ujpo('6y[(J%Kpv2W`/MK=`eAVe^Joflc)/.h29Pζ߬6]R \\N,9ݼk`{ҿ\jY2co-őï׿֮ Y^KW1=׺E}a3ٯ/u[KNqBJdۯnS ~k.-sby/>v]Mj*,cO&413MB_K =f  ]pq"S SЫޛ6t-fG.Vd\;i=+^$zo hpCp-Rjv@vOoWޝ6-I< {J7%dxݮBIJVn\ݴqeek7ĕܑ lH. }hrO*26g+ nK7cHьQl3^\t2㇪S<*wH{[6? 8vc7͆_f?EV] ~Wyd[ۊ-+4~RK52{Oxf]¬BKDB7 ɶ,/7ޥ0ӎ'Izr\ xm5; !}lEΖ7 6vh-N,},t[ĘÅc豇f̵ /j1dh)LT(06}}2{vQn˲'5KqCu7}1J\l*zpȐT`O>ZH.y{ Yb|&\~٠W& 6_`R? s(A4!yd`]>IlځI7c>sk:+cd%IXB\QA:tRT.Ur ߯߁sA=h#bK|7u.qx#a0ʲϝ)(r%YΖ.qqpl߿tni9BXUl/voW3J* 79?MG>xkIW&k<&Av$70ӼJځb3)vuK(Dzv-RAJ X~B6R~`g]r a)ƼWȓ*,ƫxd̗~.b%j۴M;\YHTԓXu]1ztqZRݱȨ0wYYAE(S|ݶ7.Wum!3x ur ls ZʦnOPv6u^wEW3d רʿowr=?3Y /sOHMN[.CCeY}C-KIhPβȝd:=GE!zU7`ÇXEdXÔ[Q4F4dblHBeڀ)ʥp$\ex"JX2tW7m3dS,W:2k`ܻ798fU6BE4 G_3 5Հugyѣ1il2Ӊo $NXhlW"P("|JNJˁ,ǯUBeO:[Zj`9C@kXcځ4KJUXr $WL=}Fk8 FA1p=+K lרrU!F>@РUG >"XJ,Oе>Cc@>F*-yȟ9_I<4ԍF;z`g[9+h~U4K{Hc|X`3㻍6QAM`+> stream x]sݿB'zL.N&<Ӈ=$ZR"(kXv/ fۛ߼ykY"+fȔYiKU;_>$ꤹZ۹1Y{=Oo?*ЦjIlgf67J~yyV#>:{@< ~=turF"w[ji?ph|Τze nHa@v k$ _vD+6`*K:bco @0StA8 ܜkj+H6cf+{6C;O_e`L/ k[gt)ND-◐CsANk*b:LSieaxHuv[I̟i S $=!U5KoZ invNP}O!X_E3-Q.ە꥚H 4קw{W*\ۀ$eGLy$BWٟ7{b}{y"5?6 ,"d07:o?RqLvH$ۣw00ݎ`(|]:Y Vg^*/=UlKwf*r϶ucfBvԄ+U Pvg_<~|.t'?fV't-L5XF>_N`?5兪+?&`t 5Q܉Ľva!kF&n7`oy_ys/Ա]mJ2yV9`齭DȢbyHgswvn6jpI:[M!^$Bv {`.0#|Dz(o%*D*BZCLaկZXo:ôF7Fi7;Ja|H l7k] ]jLQB[-qas\W("yř!!H0+r] `57A\]ɔN ;Nd,ŧ|97ƍ>ͅI&H I׍$\ ~;N^bpr=؊䃒_E<):a?ΚzJXBOѪh+7sßsoo޼-gKSQa*?aTDǛR'*Jk9us;6L}y]2dE6u`YE2(]Jgd'FVYm_S7;gZBh)rcή*+O]ډ 3 WXh*{Y%aFhxzXD,VX$|wR1Q[tL9)0.UѐA\f́\"4M*V9 pw0ӊΝ@{TΌFFt<ѣعLEZHO.HUNrꈗczHxgL/W#nvأ,'. fW˱MYnOB㒁>]1|&8utTyp8_N^<0@RLw{S7]'|/tpF^/JJ<T!*x.\L-8xZI")IV R*QO wЙ?&7OQ! M|Уsj.KZхa ix FK)c/xmBʵz}ZQ񓇩"z|$h Yl1-L]VF=B`k!3,LL`1+0tީ4 D&'ԅWkLxnx6[؀YM^6roMp5rA-~>nØ re׌|Wz&as}Au@TޖOy)]~i8AZ!9U^.7\$uAfqR'Q7JKe}AFκvK|9s tDЍ"&}f0)EnNFBGs!^tU9HX.Nr*z5Nm7}z~|[L')0QMk?4t*3E -/K&SyrIZ&^.wAls֯'8U %|e/5T endstream endobj 172 0 obj << /Length 4189 /Filter /FlateDecode >> stream xڭ]~qO6pE E \^"hd>yZHmw>IJw7EZ"p8C"]W>~uRY_ˤviiϷ9O# Sdr`~v+g.Osu q82v9vyG|{;,Gsx7lϔflՉ= h:]rKL5D>:]&mR8|R6`v/LW[g70Nv+Є~!&:,͒d8R.cN0f;9}+`跭[N>{@p,veFHuC },I|pwj3!s{f"x'@+tj(#O4C Nc*3+ZbO뇳e:FuiorGn9Y#ȧzRNqxZDMqth;hhlCmdPsJoq0éqC_He6 ҉:σ~;&A6M\*d_.bmB "gҹd8h/W|+!hX9Q$(GRu)V @I#?i` W[~=je>,uɪ\;+,\!ݮa&`79@DA2 Osty EW\nw_p{M4hHzbW-r'IXU:P$lc%C=o7ࢤp2"IyA6GORC IwU`OW9zG2?\ť (&_9BT؝xNDڽvΜjc 4j;Lx/Mq /';{@Pby7by;3AҜ"{rMZXٖ:~39An#X dxbq!t ՘/)ɞU$΀D`5 .(-w cf'#׍EiJ; u" %ᯱRɚD׃tHuLzx,^xx9 N:zx߶UsX mO֓NN: O9_zTJ 1tb^cMp]~O͠s\S07,5:ɖʘ"ha5]BRb+L#3>Yh. ( SxuJD4[; "A0k^IBܧ=q3&LOzM*S],2.t*4'q̌C&e] gA:T]UsVUzrƆX# $}?p!o{op+]EvuhnrJfQSs: q&ֻ(QH" Q^йY{'&ZCm.n2#1,&ɻÓO@wndQ࿤,/0Yy^_9+Xyפ˴=) ~ d* tnԯD4{o6 `j&TT2 N DGNHt$|/)9GMQb4 f<(X56sW*'{!NlpF)^pV-Q؅. *eU vݔz )ָo# hr[?pA*>BRO %ҏޓUjgӚUIUcz!(::?dQ+'\.$weuTEym*Re"^RY\n Ա>L>v] ٯ[Cr6iZuv۰? ޙ+AJ`̛)>hݯ > `2ɪj~|b[W'z\NLnûO ,KasUIQ_ Ţ԰dr'T2'un@TX}=9Q;⾬l*7IuWYq ["Ɩ WO$-8<#~OY~fyT֏R}`k*StPt v]D\fAH"Qn RQn<[W7ER&rv_=o*#SbSжc;jƾV)ƘzyN:0 P\@!'H kKu6ղ`=f>\]7V2%)@ςz =U8gx]D GFG̡!0@CHEՠZaD-|{I$_JP|e-Nst@7+|_+.5E~r2+ѵ9&vBulј8?Srܷ*&~QC#g :Vo?Q[3qbecd$$?5 ?q2+rIaiЍ2S!YEvcGj z\ϴ endstream endobj 189 0 obj << /Length 4867 /Filter /FlateDecode >> stream xڭ[koB~Ք3AQ@EQHh[$}m.F kR\9gâX|~+j+S-n26fQZ-n7ewc-nV֚_ǶͿn74逮Pn`:Jk,VmTZ)USsxsXßGt2tn4rm(S~OYciZu'.w7+艽NH,^ ݈Po\Nq;Y"AiDg6{}%5s_lUkmJk:a*nꑶYGas-._8Z/ \em{ 1F ~*H3DlaKgfĠx hN )ao0_VϏA A_ȑTna2Qt%/7UJ)qKA$Vd#@\G !,evY dm oK)AIkWY.H'lx ,;3{r^w,5nP/.L}pOxE%51jdqɾ=rngB Ƨ0x&8|ތ܀םX DjyZX(%jC4D6X#kǗQt@ˈl`58J-|dؚ^;#Nى-VեvIyKDAg^|RVb [с߾/^/*ֶ! rMy+E۝*FʪլD?Wi. ܴ5B !FhNPM§q8oӞ_Yq`[䨄!7Nx[)gԌ:tUH1rWG˭FU]Ou+fet^mIPbIkx۰yVU,>^~q4xVpґ;DO>A 5S?{A$B)?YNA,jvB6vyhAߐglƱ,]e+À=E8/xjҥ p޳!^Ф@ h12p8׺?np3ϵ'/Dy aG%V|ڮgp#0# xf,CDo3嗪Si]JNMU3r@!Qag0t$A|| 9L ى8.V"$I$㻁`m 9BBr$5([[!l4 mwQeD;%b9f`-{n7HyJ4&O=xX2֌$.FVUi"a Dpyp#:wpEҢfMJĔwP`|/ZZD.S7il\5sxBYpK޽/obzƴ97GZtŢ. ,p*_8c/=KB’"D s'4sBVC;J"T`vЁLQͰ7ӿxnWi[↍1&Mi8QVN)o2Рfގ ߑ7o=%oԅTȠ+qe;mq04pT}\#m.u# 1p5nM%[Λ{rvAiLWx t>1u Fےltf{v&Nm_PTi@)GI‹EF\ҨU~n:0\=۷J2? ܓpcgHjC) z6␢}sl4aQ._VT:,l^#HbPN߶>#IV=Slyivds{o.4)i(xa1:& @^`)jw!X1?E;ʒhXSSaCsY~֨WھlĄT  grYU 6䜓LqA&+A_)U0y1F;T23p;Jfc-.rZM)Bg|Grr:! N0fhv‡X|&viUK,!}m_"<)@[n/z#nCy"͸<^q1 j,s*Na3! dbGm3+/CR@XO)ۖ"9XE\ݾ'sb:ԃ1Ozi&jė6E7Ӛ#a>7+Pd<{w̦u`'B!K0ɽG=>|ӯ7N%="m-V_ !Ntlni JbVW3>Cr<ħm eʋɥ{%XT% -tl/+;N/qUIg_nZqtnPj{&}2BtBIg/DC]b}LxSzsXbcL?I_joTR)u`ku 29{cBtrnD5xm,Lͥ5)+' a^M\mmm}BjTl :]0ܧ8 YO'|=XvJx)W7QҀWwX=}*䪛HV7,l9:I2uWbJ1)Bi2#?\$a< '+C#68j;Yv %@`rYE vLl6%bcGjv@oE84(*cO` ^d0%+ |gߣoC ~/Z)rtP;pkg}g?ݸhprx٩ixb.G(,lRwǗ)nzF\2GlQ`~5jj,{N LuzW<&) }%-4u>B\#?]9kT(7'lH" ó:V0!+1t|2݂/HҀk==B:cm|5UN^J1"}ȴd+\ vT }/Ó?[Uax.ԣy.-//E) Na5oY1"lj2MB+IJl"^eo6VX l^B }.sNG < Ui8 OCKʣ0U*L{8`fED- M2}|wRkkyVySyj|6i$)KF AR-Gנ0r#Ǚο$ 6x3ж,ʀSYH_GѦǴUxJ+ n!~he'T/;*QReȏc7 dp9k3IoRN8״Ɍ41R^& dW[ /C'A![h'pk+*Aџ/w^"X ) A<#yѱ܏Cx# u `}slE0ӅR_$-DeQ[=nͲ1WB[MLzBv5SX*?wQ=WR p56VCO~xSO-9 /!NjYa$$dVaJrv<2"D/ lKUmbXLvI0)=?ViU,6Tmk@d-WԵ$4bbNUG9бZ3aj1RCP}^J5"Na0P@w<-…>|rv68n'(%Kqp^T:m&fzBk>Ek~"I- b ;F^9MS)ݠSV,Vc&x:ny@)} ?P 켧$d %(/ '֥dPdZm)k;L]+xY endstream endobj 202 0 obj << /Length 3342 /Filter /FlateDecode >> stream xڽYݿBHZ4gxM ''(hIR,(ymowEc -99&l퓿zE3iӶݤ&uYm^N^'o~~ݳe RNh̏F%[L <:- +\:Sy h2 ][B7ݞwB [PfPx /]x) 4Ȼs$JRŰ~\5N>0 eS%/n7Љ`iX6/B-Tz (z_;@Q*jIXq ֍ +1\ 1~ix?r,(-y/]’stKBSBlqE0qߑ1ZaI@E@S6bRO40[Ca\.fAtWY[[~"Vsϐ‡myFOvҬ'c?f_R`RTނ'jOt:K0 F!M&rP2H֊.u6.4dBZ\l(~5fߍ  kNG{6̷:O [BR,H 2:SUPs&G s3-0 `glfdK`<7-!*Yaڭ7|N6B)bcƀьK+t+FAI>p)TcY|{;2b#PoH_Aό yc:!`hFǁ`Vs ^[X>,¨s7,) "Bvb߲TTa YHZ Ğ--ՙAv8/9L|I}',Zkk! D.8[`TrXyvSDK+1qbpզ]i:+TMZ:_Z-uT>ѣQ%z41 xT"i.Áwo}A_(:4@xHn f-U \`aceiBkI>A83~Ŧlm0&k}SҔ ļ?Y(tZG!ҟxV׺ݜusE0Gۗ6EM0ضi0}u\&G:8'rL9J!JW-M!ȃW(UMYt'p9`pu5:hS]KWS0+G#z! L">wǵ|zjTʿP uTcGY.3,f F:8=X L] v0 + jނ'} .{S铙;i+MW b`Ht6%mdjbXY\c$]Ss'oh1Xn ײ`5%b_ë0 x ^ Ň}cG”/ƥړu&Fۅ+c3nGxN2y㾮=q8ab/|4½>vX**0o24}"G&Ĵ_**oi;pgClO,;e=:kamt9+H͝,i?wz5;x#C3?Zs*®<7!j/dDED;qf s~~BBg䞂1>SpV/s#6ʝsi';9^ <ȄzGp>G9piOn  2J! +$ߵJD('4 Zm[kF9'׶Ԃ,oR\*MY|r)d?C"76mZ{ӹӒJMw(k'2u[fF^suDUZI)TVq^,aq:<3XH+2C̫G+V grxpkS 悳d)Ԧtᾔ`5dD==ڛi.^JDrU>:m+ڝ< ;TӦ4I(ش%SoUQbH.c\2B1TfGik6<_+L*/+^U+^xh~ՓD endstream endobj 210 0 obj << /Length 1639 /Filter /FlateDecode >> stream xYmoD_!zH\qB|*r7 NڞY{vc'loֳ3ϼ'h1GoN:9ԛ&A2I`Ʃ7 |t '󰔣 yV5z|sń3}/b%B 9IӋD0b7 ‘F$EkVfAr˧+W?rЛN㽤!g=JV-j&gaFhX 9 `8ú9.H[}Al-os`2I!&؍S*}k*#v@|SWc7H m蚫V1A-cW\ gJFex".p+ R @3 hcF Bgsj7CuV%FGYwyےu޽T!T聈_+lACW\e:t;ifHh2qiUFNKmCz$/%i,3Y[Al9U ƃ7z}|[KŤB^:T$GODǿA$?BAY8#+H'V,@I^jM?s"Y> {M3S2\C*e6L)^"ъeb0#Ώ'sL6 ^ xME)ɫۙ1_@ 33w &}nvٛyڬjh8-|(fZsd^uo >!u(ɮ4J2GuE{#A(@[=/o5-nض,mâ4Nh,5[bb/4ZMՊMY[Y$6\&rSؒ!f,BA`4}#WhAbXau?1A0L88.,k –%TY ,v+S]|-~o8f@X n3'{ZMgۅh$*+YyjP1cه5ɬ3>Y*хW yt8awT)rELfrܬP)DΏyi*ۮ ATIλbLݓbfX㷻ō>˟W}}@S(|~a S#ɘuIbQgfC*NcH?cт1f_΍ vA-jl)UR#-uV6E݆͆O$/|Af,d  6sQHNJu8,a}PL^r(9[z`G5PMd<$Mc{+FsR^"'xkikWQ:`gVc`bw#N|a>yQdjIv0:ΕPX{eMntUOVM0B?l5%0N.ʜUNqKl>kCzvDuQ$˟eYcSRM.ɿ\OLLŁiNj endstream endobj 215 0 obj << /Length 3514 /Filter /FlateDecode >> stream xڵ[Iϯ|MIAAlVܒڤ4=yk(RjvP,k{Rl3Kg?ͷYTgw*H*gw-~Ƿ|UrC T?v,n7J”w ~[|^oM*#]E].3'quIYp'h2K]AHQKo,>s;-}b %~ JBih@zrq&!JuU%o陯֒wPo lPw[S|bXz H?o3Гt-`gS0gC#a!@O/ËG;0ܨn:o0DcOAH0z4J1≐s3{ӊ7 r➖S w߱s0DVЅK*Plᔝt_R%ڧM6S6JVTkˋB/x%&zIߚySŰ:ro/i;Xm1ᖞ'om, TTP8|N$58 Bc~{qADbP\T[ڦKX6،LTU#>fɥOw.+R--\/-LWQtVsҧkRX,ISZ9r񊖢>{* |$2M צInrQ͗V7<JE=INgë@۞w=`캑q!.Xkz#,MU|$.a ly5 P.+zI^$خaf,V?үbXs0}ulNY:듪0 ǣV8u2 (ya'x'dfl18I((ᓭ\Ñ?ם%iR^h/v|+6ɶ_kLwB%˴.2>DEL Mئ6cj:IVd۬=f-2MJ2{Ysԗ_ *mݏZa]RL{߅ zfZ {mH4 XdM\^TJ 6Oa9KKLXzdWAw:sFUMّס<.("01Wl#/Neli|Xh=4:1ȉ5ENS lQ,&g<{L BzS1g1SW%]7vh7lD&<"T(vz&1}>BVI&?q#0! !il0>uΌ*"OGVh +(P\n`FLIoU]6|h{75nhχ&7^#LAp*gA  9K!qAm%Gʨ`{VYjZڤ6fj5hW:?\&pݮtgnǿMw-_qnU޺1ĩ42z6!!N@EԮD7eR=Fˁ Ƀo|;hYpKTZQ{&P|du>}ܓO &|_ed|-WSPRG؂/RDzH ϚOۘl;K`!uݦib{ܬY{cC"ՙKL ߜ [sL8<8{UU ,r/>u?e!:ϲt\o&)Vf2u{umumO%Gl hpCĞؙX* ;6p\>iy.G70z1}zw\\Eێ811j\T>=Ƚ0(}8~C,ZyW=}/*_f&w_јzhL|3qW`m#? I,3S eDYD=ѝzhҢP8 syeE)-Qָ"dy:w1W1l4R\-S!`O`66gƂu(nP}00ԥW)ttZ&yyvF/ӹB*h,/ ՎA_uMIx!!nhfd$ߜmy/0oO7d hfj:e%E-4ˑ; :i<ɫAkxvеJһX^S/.)o9_Wt4sy!sųtv^ -/EǛ.r̪*噈qiuY"驓tu'7픲\6a::>hs*4, qNnK沷_yD2C;a){ERN\3._zS#ޡ7C uޏЄAz9.:?]ۂ}TD!5;U1'0E3;&:xM)%ek#Й,(%}~~֝Ri\ a-e/z~*1Y9*I]vDCD>4fXeff6)0u_E/ryEg䞷ri?|tar*W: ]ƪcl}YuU0/UǍⲫԝ\|~ب*I,9))NpG(m6M '|<6j6l)֒͸4Қ ]#nYbU@O `5ͥ>E/8 ׇ.>r6;'St$׎}'> G982˾8 G5B֯Ήd} πĢ$U-Myt8%ӠW|]IؐƒWJmm> ,5`$t t8׿ݽ?LM endstream endobj 220 0 obj << /Length 3366 /Filter /FlateDecode >> stream x[KsPDUYc$8񺒲TIIQjߧ{R} =juU]}7_U#0I+j]Fտg^Y{-5o]vmGwWom>áv]T~[ónW7R1[g+~ ݹ| O+br]`VaYn7Rh6\l-u_Rc}B4 aOpZ<3w9ڙo`Vlߺ$益'V~{G2X]pYݵ[쐊߃qsS,RuʷK|k>nG@$@:葨f߂~CXֳ_\9npGp#ۺSHM'!Tl%\pp.2_E1{Bbz[kH9]%sڝw@O-7\ZG`}lVhǻ彷t/hܺL[<'*slH1LuTe4SѮIZs* t>a+o,hf¸N`qO9V$X/K#D3H?` [L0'8$h9'G%+LMMĶv\1 `륒!#2GZ4ށQR.@YKzuhD;LU͖(SU|\Zͪ4ݨ›s6&R̸>.AC\Fhcaׇ *|kDr+#p-GyfFjQ l]KUOL}Qu;~acut{怛@xG;| 0"}L (lj&C/dpF+1odRdǔM4z \LIQEah09]?=Xdklw FF1euCH H*%^COϡS4eg=O_ sQcߍf{r{0>-!gvmPr7} /7av @/$i8pL7~ y( Y4 }3| |g =ӈ_HLl}PrhW79Xn1.Kː _#Rht(V:t<6nB6B)4rf2f\k0Ө |ye_P7nG-mޟXp&5D 0#׳[,[*FK6z0Q_X{.DUj1ϑR4:u"e2?_xZuyo!h}<U54?ZtP9 t g^e..!Ӵ}N٧â̂j)fU`;!3>ot*|Fg:uUJ^jBXO-?;bHdAakeby6'<QGٝeɬG̝L^U'Wa̤[Uɕ%.&?k>ffzg%x gӶMÚ^5KVEђc坟{ ,H/:* -&g{:xn^ibݻ< 4:кJ~B.OD磶>A)o䅗5qCx#ˍ|}&뵱nS햮4O-WNF)P(jeQ "}|EE o|$ g2NI0ÝK1mUqwʪ0RcuZsnryjr>|/>%4$;O!naF|GGt~CtKHJJTUڔu㩦ɧZ:ZDxxk'nczmuybԈ>fB24: m=]PY+[d:}:9{K;豟6_~Opm7ٻg1kՎ"Tc/& k3|r+A.<[V[WӾy2Z\K~L-\%?c4pjdoBh`~W]sJ}*_dS)L ~xڃ,ذMhjN;I/{CM!U?5z-c^l:E%3}pZu,j֕Il]ݻ GboU ;â[ޟ:f5W=xI_R:=D=Q`-]zV7L+o)h~c(NZDwҳs= Y&C7W$ip:͗U<_uC"E^Q"|_yMcbCUZk螳WDmGKæ^Ř(lLN$AN?u:h8Qtmq}JT:`C},Gݍԍ{mzd%4ĢRu >izr%H0 ~0Z&GjE\Ѭ6悟EdC|\=MZ̑^D@bmƟdfm3Y5xXTc{0V ~: endstream endobj 225 0 obj << /Length 2171 /Filter /FlateDecode >> stream xڽYYE~ϯ4dC$@C$kv2u'Z 0KQ$*mD$ xniH8<-)K\x;vq|k l82Pda25Ys$&W ^w6Y%}*dpYn3kiP3Zz^afOc}ꂣ-_'Ew}~r^͹P|*!Vt|`݈)wxT,"R n;a $1 9$=hf#tD"\(4o4`<2"2>UfQyT>D P$A^Lѷrh() Sl. RLi^t#!P2ڸXj0+ '5aD> ݜKrZ/ B?L0By_~;D81Vvln5ġSt;VaAɍ$ 'J8Tو}8COޯ,OHF])"3A5’)`@q f7?}uTV$lly`s)-;ozӄIr-P%r{mBŠRQ I'm.nd2qY2z0ae@Uwg*oAAOiW䨤Uz8W`>n#iE@d>zLbtVf)ɰ̈~+Ӻտ?_ չ  endstream endobj 230 0 obj << /Length 2679 /Filter /FlateDecode >> stream xڵY[oF~ϯR@4!g}h#ѲT%Y@ IvlApnWMoqn) r q$!h zQq{$aWqDY+eGoX:UqjD/- +F*Mpܚ,8etXJ ~)#NTSu:LPR@MdЗ+c~Y&00cHH#+Yb[6 YfѨAD(_f* 9vխHYJ{zh4S&LܶK:KUADGͿBsϸˎ|냼=g_}!WݧOǛH8 a9(AG ! ኲ;u17-?FEvb3=k5|Dy]I~ pj-AJV0}G3R74So'|Wl ]HsNt&6c+  gqV`N /!#9MeM#dׄ'-h E&@t*aؐyWDث#uMy*[^:5 cCwzD#T]i'kIƐuIah+,Y|?@KX`oyZ ,WYS`s{"N0n" ^1Prz~.mkvjάDωhN<+oF:. ;韣==p>73N0Zt5RV덢$]8WOS\c 5 [ìpʎ7 qyɗ{^NЍYR}`9^eST i5-h)A普\9m!ʀLVYqI92P~;&QjPe1-/ljW;t$x;T `cCn0M[:*m#%}LXe3Cf0m9Ik񻣴 G.9?ǘ@._R 61dJj\Ab |n-[Tt^"&H "O;mi+ER1T>osR?p2/VX\4?8h߅!Kּ-~v:1! p5ft4o%dõU}svS6Ҽ!v+8QVgǝĔ 8w+֚KX oZʉM.?c? e2ʀAE>Q?.&CqpL^||$mÇ6UI-nMW7DFG#fG?Ÿz3o;4@|4r' :e orWꞠ{\ 3_,qi\"NvU_F9X) QX;e1 T=@&?($d6{Ï1CMTdmU܃%&NGDd uQ{YV΃SwI2+x1ei>q{'!`Jy/*O&N5Nܸ ^1DpYE5k5ybJhMcxMW!+Ͱpۍ{ endstream endobj 253 0 obj << /Length1 1518 /Length2 7548 /Length3 0 /Length 8551 /Filter /FlateDecode >> stream xڍT6,) !2tǀtw0 0000tI74 (H*4"]{s9Yk|w ;BR%E@HHD@HHA6BP\JHukSntp ŤRBBa!!"Re7#D!Jw_$u_.07())'AB 8@rv`# AW .ig]JPF <H'Yn>rBvKAmqGxBj@!ݮuy;?.6wK8{E $Kp;[$ 珰p6pK.@8@  :Jo'>"۾^A?؁ۥ[0L05? wyrV_c_1B~ &7tyA6u,?tX{7)ՠ26pd0Mw 0 qjhd%A_HqRyLĊ7bZW/GMB eE30i&nŋ[|N87Xس΂똼_q-Cfҿ4nAf2O<&g:+嫖)}ZdxLNv+[[>tL#SX{m߇_2c8~hжc+Hz0ltH,}8]dV:/bRz Q?J*BOŎs0F;I3\mMD [UXb'# bMS˅Oĥ'G $l*Lv2bU%0+%7 ޴a$GСWT}>Fr 9dHDW!qz3#Ox!綛!YEn;gnV6G aŋwUIRu7+EbdqM8s7a2qH 3b+*RQHtfgBHeIZeJy؊s}w)b *2IM e\CsD'gxY`pgFm4- W&%xN0Ē}-vtGнg[p}Η+[<\GMV\3 9wSp 6 3wLŵLr"GvNyDz )ڠjҔi5KxʝW4PW~a0$*o)'"Lko^=p_6^,ln`2dUjz-p|Vp{H9B\Y1g&V^ C6d=k3͛$#b|Qc凚Voq:y~`Zر3'Δ]Wu>U"+K3gE=!L\y%K&";o#ޞLkj_e㳸U VO70RtRxֳQoV'8TL)$RYp-Ći#͏82IFr\Ga?m<2s|g6[5J ` 2gu37qIbX/Z3zsGHgY[4NvWά5X)a/M?BXٜJnN Gw)KW7r7@U>+=W%5*a:Ź,U`[7ua{+G{l$V}ҟOͧO5w ĔUU.{L /-qcr_ߩ(I+3kc{)@ 4n{(r9/eɰ`b'F\l;>%mJPC ,;6_nU+Ͽ:݁H~ תDkb5dJOfp-t!<=R`\&pvh8sh 9v!vLZl (K~'$~)Aְy< 22oR j/~Q R?58A)llqMX1oUߕdIxeSbGNAY]I'%~ښI1zk` Z?vgإݽ7p6?ln{OD;в_V1 h^k OnDS(m3{H#*eìx,Ux#}̴@ۑa0}t1oeo-* UcR ބGH|.5R?En}毤㻾LU ~}La6_f+)vyS)857xKF"ϭkEk6p,Cx/B(76i96-8͘v*~e̢홗8 יjS=sI`̦r;-цk(֑"/'TMd m+3p_?q1|0֋^\AOtBo\ÝVoI#9j+Jy/;$`R>k 0$e76QYRVǟze, xJ+9z\gH_lc/MxK,ܠrNsWÓSb6p `k ~ A^@e׃4!KW7$@U6fސUu {|j!{ʨDTd#L5Y-o漚ՅD `=3AonةܷhT}. *@=I}6='i M[8θw=:u &زVOvgY朆,:34~Z-gH'ևvVl@m!w.Ri37RjT[mt27|Q1jxx73`W}5GKt7I0@B04̺xқpHJW E*饁 xSEX{S hM5܏-k)RyԒ`e/ߚXX|lyjW1Odl̝1VO:HJmqj,M_V䑭O\獯*{&ǧm4&qK_k܁uAb,&'YET} G8Ih@`(:Ng4݄tpƹİ2}5uKM%kK<[̌(yS"irm;T.dj|{>i VegMbmgߥgދ_E$uv,gsְdq>TdP!i9'hlAע+y|o4 SW+ u秸dǴ!6EĆ*qwvöU'[Ӽ$k`LhJ%_cՕ5 ҥPk[~*Do6˨6|C^bµaVIr,炮9C7Z\#pդՋX`iYNe_ޗ'?Lo1Bs"nToLKG,s Gff)FkOED (+1F+[6iݟԋk,R2(9b{4ckzb=k,dPk[|='([SEt8P5 wz|il칋[өIi=~ GF@ވyw~n@T.ZP&7wW+P)Jz,Dbp_d+YpgR5}oގc&D5syAŠURLԻuwyLw$ҊTi9sZyWUW72L8hgTUw s +g(%u$Gh(O=>C= %R9ʎhLW-dCږzTϢBtӠwbLTژfTeΣ'U>SiB_"lݵ9.|0(hh))5lgSZrĖT4E^M"_%H0ݮ&':.!*ɁV;2^6vJԌ_U#~ !N>+(3ew W>-TCjYlkӿ+s-<w*d'tZȪzzs~PH1iPݫ@څϱ'`bhߣ$&=)DK6{XoV[ 5Z`|\~p"'w-\M1>mCD &mdS 2'+ - Җˌyݕ Q oxg]?f+*-qw$Rk  p҅hdxwttQ`v ڌs2"FB[Kc`R1[eph4M|l}z v7>؛,8b΅%V~F5&Ƞ%xeQl{z!E}xt;.EDdilгNx[Bˇ){& kurO?&5a:<\! OKQ^vFx .C|M)42.NV4~q]>3PЂɎ>9Zqy/sdDr*%/:,lzު?x})h^"ڞ/&ç$l"C”EN`Q*S\~%˕eD觑>I>ª+QyAGYHR~dTeF`7޿n:bqNnU3]n!xhxT,BQkT@E}dw^ԗ!|?4J0'k?` IKg]tǨR5;uWqNē U ˘įjUwt|8GV (pw",ZU 1~6c=1v9}?|皱?%TL\[c+jU+ v/T?d10.Fҟg(Lj/"&y2Z&F.h](+MbJ-YbI   "{2IE)>8"d.>m(qW,x>aC,s~ S_p ʣ%aYo@\`x͓(^kՇ(ᜅ&:f˂>M-@'^䌘21PL}| Jڞ)U^'t D\r-Z'q o.S!!:F/OuZNљwqrBHJ_I|߭UAFp=>ݐDL^ ӟJUL1mYf80Ž 廢a |%R'h}eȶP)ιhi `"^p̦+ PnJ7fYU9Kȿo(/[8r̫='\HC6n`{0 K"rTO3xeӮ_nȣ#q :t`&23Ƥ{qX9&+~( I1xz{ƐDf# 7Y]T_-+x7t]ր+\-Z_U7b+; [t9CWW%_>bvzX&\NFf}P?.P?lF7\Pj6<Ob1'C1_ʼnxW˯kO^J1׀t>i 7ж@7궺;wJRΔR<4K<mP80͠eƞɊƐE=F{L3g~%ԣK2I\^Ȗݓ1.غ'bVZ i:j, . 47T-lj)nM^ɜG ZrS{LӗՉex/s$FckvLSZx#c:oV5Ϸޗc79Յj*kH4+{9؄  ag[bG~WaEx=oںu#G׊Iʒ#KC)L|ښrLb7Iuybier x -q0~тc>m}ڼ#-jf{ʘ5侻k.k^JxgFf%Fȳ1gkW Q֪Pot׹'5pHB%\۹U(bFζ_.j){M:Dq^=m:9ZsgO7~m ϯ;VVq{x"wM .$hh{>F".K 7@g^_{6dqSЅۡ'٘w2 *G1遆dt>"&c6Aeo<'_Dq83yGd,tu1n7IwC)lD4 D Ŀy&HCBO!6FŞ:`GD=tabwl{$ؼQ]dH9pN_ VU+6/ϡmMnTϵ6{%b3> Ȉ3JOym!A$ߐXx#]"I]I1jQ O}S_F BoI| endstream endobj 255 0 obj << /Length1 1451 /Length2 8084 /Length3 0 /Length 9062 /Filter /FlateDecode >> stream xڍT6LHw ) =CЩHIHtwHIKt{}k~s9{ -g)C!n~> ?OOpc`p0" 0)ZP@/cI`;@ Yn>0#!?G-;_\\;@!- ЇڂA &@Izyy]=`̓ҁe9]0;5+A >E0 dp>7#ك!viyB 5ſm c @OTD rmy'0qQ8A4@`{  `T"6 0`_Ca`o~ux0;(Zk,7)?na0_D p8Au࿫j{(@/Ͽ'awm<ls>a>ۇqQ){ѳe].>[<̳a7_Sc_ -u_!r]#  ?]xtp?u~xT=TB~C߁00aI@f"\P xx W-塨¿QO -WI0úz 7{nj+ʩUe֨$˖q;5>F {廗+sn %3y;:$[Vq򾱂}^:,Znm;wΨ,9b:y$^=*޵% a[ە"8%_c _~eɵɜdDGpar{|=;$Ep#tU jw@ILeJIzF<<'FbƯCLhd) #*@Jثbn`l/ 6 }-_(K}R`U&-8ꎉN?َc΃C8J oϥI3EnyK*h)HLȿ( c z|vBu p5_ѩI:~#qЬ,dЪ]ܕtN>Um"p9yĺ{2[N@6Rylu8>A@ZFHq(|4HU:%.'ߞDNb#j&z0]yd N*lf}^IAw0'U=]ժybęp03~`&7_#j銇|tZcbד ݌IVu%C]87H[mB| Fib zE<'HI8 b%k[nħ3;̶B$R}fnaՉ#fxog햜-^P+Iܼ>)[⾣Ǿ v՚1E"2 #z;Q-Mr\}tNx>6w&ʪjvN5rO,F[Гv"vz×lJy R y)E) fL; oz וH^(ܚyxW@ܙ -40kĺR= 7k Eklv^G7?}! .M~gb{1ev,ә:1se)F&q,\H%,MijEA۵/bH^dp +}6>T\8 H/.^ŲU .,' '&ة_?//U &hc#\ю۠mc$w2 p3ND>:;6-9\@e?s>7dو7OMkW}.'-\'cŮEÎqs7OtĽŐ 㪴yeɥ6Z\ܦ'"Z)'=xU.SKlk#Nurx2&WWCwm;$u6*z{MP@x}bng}fo(I%tSE|x65Ck8C tyΐ1}q"LNLvmGuH^!`n53JQ+sXcgP^zm=rץ b Xs؀1?nD"48 tcvyc2%wWbBC [qQ܍q RS:+knؼ\Q; ʬMڹ׹G _% 6Xך-=qoN–=%zFEAd?!5,kcU$R<Ao/<kڐrg4FțK]Y=9W% 3 $rkCKEj&:/4ϮXM܌N=UI}홨>D}ODx])BƒeTXm4$K}b^_u͝c@s 0E!ϷJa?l  * rcj{.yԮ3S%qNecnHu60q|ORW%C蕚 )Et b(qoh|xe0,J 3Wۢg]Q;fvIl/(PR12~Ru91õ]X!n]!JF3LȪrjg,'*)j2,+/o}p.R"6PaTNnBX3vKX)d1YLKa2)(9[$hlw94$cp)+idBRwBe#m‘ޒ؅lysTwJ9Ȼ6pg8 ѫu,1:ƻM"gVI8}Hmi4Y\TǬqkl(V&> e2ìnRwdFɰ9rHt562oEybrldO-N\H䆬e%|{4ѥi#M7&q:2 $ @8غYIunw 6;5o ddIA=f zUO~mU&8Î>Foxˮ#324-ޖYi/w.Pr;aCFR2EӅ) E/]{l[Ry&<;㪻xHqgݨ:)Lq6!e7*iX-u2׏-fuR͸b^5mwq".`ݲ4qP! dAQu_xkZΗCIrjhL2'BNEQbbe4WPVNf6?0a]]>t\dPRa}U<&l 3Vܙ2S^*Rv>լ=":J3rݝ9k0Ĕ=ja &2'.m!)FAv>K ;΋|8-K͛1MdhgK#S]l4U~j~u֬}5yi ϗ Q_a# !3d^|yIܵ[G a{j{ ޏ`"u/7i H; 埐.c z7T/ 7DgaNlA{n/uʐԥo"fU"BI%aa.!kʢ^ +ӓJt^Ӧ(h7jnhN\rA%CFȀ`rgWCk[S蝵(qM9uT]\w2;PkuG'zI:ۚd™!w IZnRfq1|c2Ew~IS8b=.)O\pXCk/D[t5x]K `tY~Ia)[W N%^7>e5I|5ӹU*%#yŚnGVeTlC<*2K4/@ԙu bxnonňݹY/pO=i^&\o7  d|K(SfҾCur94 sCv8Y]E:?,22ѭ\gʘKu!#CiEL|]L>Yexݟ/3qX9fB6KfVm*NJ] wOX^Rrћ`_u#3NƧEdynܿ:yh?ۂsN ,c|#\Z(yҲ1ot0JќCAm*z&G(̸sA WV<[FBj;7s0fgnڤ '0䩤R]x՗^سbU@۴S9 u׭r?x )?}bqd-@wcF:qa;??b#swKip"o=L1U1ck'"i7,( I=_e#9~d0%Sd+Y@jڲ?O]Rn^Q#O :%9v0)gt}\,M&Ť>K*֬^邌t֢.zHyC~w*+2Sm'U5#FP7~[(˙ԆV,iG5 NG,(&WenW2"d;K;C2GZUImĴp̽[ҜE˭sJw]W(4Lc~0^Sol5#x%$e6؋}R / `*rJ|_+Q`a`YV X\܌IvU|f0+4KJrǹ+v i}/X2N5-&E^L"1 2EN V2SJ$ ԶvֹnzpB9rj;*>vg{C҈\gˬiwgvBDHi3a|#Ԗ_P9B]-T>96S|P2%SKݵ(!ˏm;_J():PfEajLd,8ՓMX@B;7=_ژcƒù6:䐥O Q:MYt3"PIQ}<@NRcġ閆D7dl`ªݫ+A(].J^hrO\p̅q1=h6oacZגc hs>+d7B e`"5/TSbSW-//dAfRts&{<ĆzJM e,#on:1<}Mֽ;Xs LO"Ee^bꑿ E4g: KHVaV~0ek&%0;#cDvW!B̳/:.FSHp/>e2p6/ɞ:̍1qVfLtS@C$ˆQJ|0E[ɛ9N,UU8<_z3(ҒmR8f%˸,VHWiʞ<6Xi飁?*m}|+9PDjVmZ2St GYܒeȍ#ze+|8Byi46%m._dw]1/,-P)0$虸lÐ+>*}~xf(חIG; &rĕ_s|{*;b>J,JXG"e$9iGxgٲ!g.J(i5J3e<֪KǃME׷|بYGLB)3X|>Mprr*{&¸bֵ:5zA 3I4d%2ۻ_شCf+4)7Ĭ>S/sCt> dg 8m:q2V>MWsQK+ށ9">97u+Vt-<@IDO#}o#^~kmKlK7YX)mX_*6RO4M[$J˭wm~Ml?K]\*D*3~Z"ez{- H-:@D(RO5#nY endstream endobj 257 0 obj << /Length1 2074 /Length2 14048 /Length3 0 /Length 15302 /Filter /FlateDecode >> stream xڍP\ qw@ݛ-{p!sOrz{c9nJReFac[###+ @TND †@IbhR d`nk=M&ff(gkvXXXXl,,5:Ҷ6 JQ[;7{sS3Ƿ<}i A@C-# l 49O3GG;>ff&Ck&[{SAZ@ w 7C bf=&2l\lAe)Y';ec9V&W s @[k;C7sSIBՑ`hc훿ћߥ$o 7st`r0#_a,nc,jkm qt@>1s{n_4Um?;y!,,,\ghW7;Jֿo4Pj)NX5 !c1VS|0@hYO`g%Rmttt ԨS89r^vQXm`-wUפa6qilkk)N3^r)M?@8Ȑ:YzgtɎ\pn{p*a`8rI.ڼ NkK.rCoV:'60&o_J:X,&5p6ED)ji*S߫7ItzE7*8$?x ._rIM3sP=9@,e<`QiF8u3LW39f<o]=֥WIJ.;(O V;uƺV:G!51-ƪ9e$*Ӽ\oOGu_I ө9AGt2o-UWX#CXa 4LioD;-N62b/Z>ɱmqW\m}z\^X3/^$5T8Zr[!ؘNP;~DGd]W6*X华M ŋ$͈H?9vkf0 f_Xr|/Uv:&4=γn Cn SN+j%[L[_f-6X>hטsA oM4IC4ZmtYgҜF.^kһVtsc|D DvܷͲOKZYuV77mƩ_ X+^Q(簼jD(#ʆMdn0R~pe3>G0wSZ h& 4CI1JZf9k.)$O ˜ .fF]>ŽQ )g!s8<0ܕP wKA&;{ڟӛ2DYT;Jw~0Oû0sQδ|MyO^ C.V?(ݑ0hD<es^b['*RfY")SUmQNq&A7ز445 4H%>f/<@lGo! xV>&Zn.Ax1Dfԯ"(^k7y>:].qV9)ykiL#'ԍN6\RŰ wº6Y]KPOv~EPs-:a'O|ƽOW_D8/ UOd |K;ɸd:g!O.Wy>"<./cz8оe &"b(C``MKYu)۶>_Ы;-c;@&#Wq\1}>ZHY3$|3vd=-̶rQMKjU>!1ůDD=Gfu %.>"rfEڍl @Zv Ad_bVmhUcA>ّNHJe-n*V8Ofxhj豬o9K!8*0|ABartg&W&sEB`c hc9+ț"7:k J̩_pp%\|@Ѻ>Z  b Q'd! &+w^*{i˹16Cz139 9Pk+.rTbSF [{<`:T:*T;~D X6AAȰq%Bpe{ L1s e5\6!V:M-]CxF<>}YdUZݸcQ.VG`=ms7bQ]i l4a [afMcx?j˸DnD$-HfK׬KI:[e#&*gPYMܫElq61eZrs?24Ni`qg7 ,2gtU@Nf(zp "kvsc!ⱋ 7cޒd$07)&2{ĿIPfB-pY 5BMEΞ`P8s^l>\U8;F+w9a׫!U-!̧af]u+䀏 w:%:F[;iDžb xm1ETsW2pl4n)IR x H1]YMw?X&O >dhGU~>Lۖ0lUv0o~7Fb ;zF0;]v?K}siUhse#(ggK2{! C-@Uc.NpkiܕΣ1)phF]~ƫ#I/ewHwHNg.h/Un~`)kvayIѭ㊈N }nHxL1Q dmQ;0b `165$h=^3+6ηkM$ݴdD8 ®~3sǘ opHP'f0t,v3BY)lV]A'x=[r J'Xy0~i6t*F>}. y{--Gj6 2ôǯ3粽F cub._SJWhm9 . Q98=K+37J_$S6R*|>w,KQfӹ>%^g;rh'Z͂}Y[yNk fᒒBZu GۤZE{  pg}#1yH˷5Va&]:Y0.mKpT[s_6[Ypi|@$'f#E 2n[-*H؛H|ۦ.Yz=jS.}fKgaic{u^3NC7,pe=> )͘QF+KˮYe% 7Qт~T`VݤVܳJIG R~Pm2zsuYhϗ#_W /=y8;w|mw̕tܭ۹:rQԦ ܌@߲lچᧅ5b$q*TE&JOoڽ|nqk Z8nW~\y!_i=Ea[nd f-JR_M;)]eZ./O8Ɋe@_T߯f,o֯# nvn zR&X4+Dhi49 Da5<6>ѩvEsR`siaUF i~ChARdqIG Ec5wS:%u֌;IX|7~Bp6ƭO&<*ל>)n7"Pՠ2]Թw>>Vw .Yu 0ϙ({yq3W~%.djpK %2t$yX4&EC &$(hѦmeXcn['!PK>kuSgMFeo5 G:xE$_{jEHqMgA"BrzLk ԽǺ8A)i˾c͑CrVNy)]<Fl317tإV+?F3`4_ڒCtlRN斺[{y$f0QL>rkh EcSsI ?IH3!RxGoz oB! 7iw b5V)ߤ` 3򒦚o^S|Vϥwp.5<> 5.MIf#D=US0YBy:Ȉm4]#f͓Cě632+)Nn@\)$mBފ_.a=r{'GL`\VWGQtZ隸Ux,&~x&6(D”j39_e.fݻ Lq=^P-C??f`1ٙdE QG h&B,:Y*hb㭰j5xe,m:E/u>y]p>dY204aJ7 -b f_Y˿pt7l ?)|W$[ BMAǮc~뎿41 ~A~7';YR-w IE'7(M}=)i^@]60Lb\/Ak+?瓭eXEkW{\Xi([8zܵ7jbte=8%_ Is, ek1FX>(A><]Gz> ltω'J'. !!>8|C-,E6:3T('{-[zf}禲 C0jWH\'>5):у>$?hJiA Z )φ|4"Gw։ң&fzV$+TTG]s>&c Vlcʄ}xiű֊%¬G d%SGx3Uڝ` [診Uxdf'zLJ6ؚEcO2xC㼰:I䑑QlȸyR/Op(MlVnjeȉWkK}h?v%h.E T$luL`}RA֘1CFn,V~.SN xڡ-qGޒ myה] M)TZ+Iu3 ;QkNFtcT%y *4\>y0ZM&bW| yx/p_yZ9YH8%'ZЦHgOIv lȬgUٮ 2*h,(?tʜǕ'j݆e{ hhhvt#k`37"̊m,guT_as^@G ՜X>h gFZT0 /6̖omgW c%A㝧Tgm VMAѫtYtsq'Ё[dKҰKߡ\O[@E:^^[%fJйtpm 5&T FzMKEXՃ# "6CP O=]U^V sb$>\ oDUBg4e^:R`c+MC?9/bPXM5L|e+FX=ЙD]jQ#eEqk2ҹ**+I|JVr¥? >v1@1ȴ.k'c*4\qh}=2_;[lIlܙH|wWp:NVgia?qdkL)ܷP,F7.P #4F2 Z=bۂ\_f9 Hӆ{H& VaVVotND*qtW xA\Ky/c)G+Yp20y,6|"Oxac V$xMr\s#YN'vky ?x52 <}1Ẅ- v%s[ 羍8X4F$lĘ|ӕsHҟ2 z8*R^N(eҲ[Cel +uonv޶ls=j7K#pv. SeY@xwW X)%k{鰓aA4eoqf_T+ӛލUDz*i` xXp:BR8(he׏/7ZBRrm˰Cb'̥vc36]v>hF/A.ē#ieLM ݡEI9uC8 5KU>1-*!w`yg#ٚ,FQmTإT{efCCM~eÍ#(̺OI:ujp-F4XբMIℬU #j@ZBNIKq'];y,kp}4P ("">!^hLqN =.R᫒_̾'82vbrXp*z_NE~MnrQtۇ/#8݅]>Vk/ٛʝj%.[){/;ҿ b h?M_ C/{@!-+S\E`ONr <ꬲq25} .7de>y:hU'^j$|cNY19]#^7}M mUَA?q!fu&[+a&b;8FC+-^;Ǥ#6s nԑwz7h-L v x^ѣۉ>]3rJL0s{ &bT",Q'hf+UW,]YX @eN-Z[1yنܬ8.Izm-󁀇SF〤EK]d%fjZ`"[5sTSmdB8CEH!Z;On)5"\d>_8vO-a|K!eQuK{\,rzH{]|SM ȏ᳐ob~PYRUYOx_}GN&HqI-4eMZp{_wY|lKD@[*Րh­Y*0i(|AKؚ:٦7x +l0@b8,rK1ӕbdԨM'c6}<۾;0{IlOǖR%Td8G|

޺;zCn(m٨9ck:ۇ.ʋCDܮ/0v@'KhB-ΤDޛΒ.޸3[ߗ\B2(P%2cΤ2XLŒvӰ35(v1j11GY[#&Ʃ9DakF( 赟G.ln LO:p%ou 33= =y,\F6aD3!xc7q,'5Wۛ;Q[k~vhPX|Us I3@cQѓa}Z%['5 li=4NMÍeMo܃~Rq 78aς)}D]blZRt:78[7- P:y6CCJH^DS"JS6A Ѓ\$@+*6,jx>J\cyJ 9uXG4?PtL\!tR=ܯsRÖ}xSFp&0Q9wԖat}[@{t/a/ JPviFOb ∅/%68,J}]}&i4xgg؁C>J|c:jǏoH?63td3$s/qY}[}_1hvύm;+{J˸yrwLc`ajFzM D@..tC8OĄ\Sj*?@Ȫ"qI<tiZc E EX++*@x7rG֕Xyˢ PoS{vdK؏ՙubI~7C>۪Tq.㢡#>$5cevۉ3sR98M\u`d;"恜eTt[Fo!gvH.ő*Ms1DKiC0j!8OX8J^o1J AC6^N_n38kk57|=N=X[O>ћsbp6 zq%*+Û;O^縁/ת_`vZ2>K(4\n)13`=o̳ M+Oo* նzE` jc.=@攜^犛?@c=/9]=yՁfǴGm'@q6ci]-:#CZHh #Ӈ;[umsvQ\7 # ]SOVv)BW{X8sG R ^~Mb_uos`0]xyR!m1 iHx$SK? =+N.̩?!}fuyEgH_n!yUI Qf K> uw5]h(6וs%ڠO+S.ҒȀX+^KX8WCu)?;B !2D%ܒi MsIK5b?1H\# b]|SJ_Ra&9F j`6ϊ|T!Tjs-3{/?cMƓMϞŮ}2:(M/PBNصw2LRG/X5'-n1r`0$.kRGx),!%>A=$`˜%a/=?UۖMF@@(UIvBG": $=%zΣc VZ͵H(hgo\mg@~ }ןL꒡S)`c<&w9(OilyF3' /[a[fϸZ0i'“d\=+@tkԪWQ 3"!~)}Z~p1BW k_2auIㇻ́W''$᥇xȬw,o`Q| ~~ PI4!x !#vΖ8I2˿[M򑒈4e TBWs&Q|i6.M`{}{J9$ Γ!}דL_kNؙ:hCW*}d첩طti&cBqۿ^L|l|K3wHcT!K/**p;[l(o N0tv'l=Chyމ FLQE6C.MvqYa{]Eba4fyM?GBIXMv^nx(¨dn,>Bek;EJ$ke?^=ʙӳxIbGo\dKd]+xGYN,1q=|XOQϧ%_p[meNҋ>01aG' ZWdDem:R He8H KW+E,Y2 d:{vMd9|PFOOɓ!JtLq*{aKu8c2sZhryI^|B~}èȏ y-5檵{!z^Qp^3;e`=^/:v-zfrw(%'Rυ|6qѢ&NrDs S_ރr8(@>l?c:f7 |4(@J|9J{eQJ >n!+qYb;7|zG[Y.T]an"8#ud{ Ô!, ‰z9qAe4Žچ2ȮQBiɧ]Y6j^mc֜-~x3(/qݏCAX yo \"e!\G&Zӡ%Cvbi}zw)nbIF̬zLf:"k7&[_+47Z!RG`Ȳ:.ܡW;!bX(/VBNmm ϩ endstream endobj 259 0 obj << /Length1 1470 /Length2 6897 /Length3 0 /Length 7877 /Filter /FlateDecode >> stream xڍw4\]6тDFeFE] 3 w;E'z zD I>}5g_w^gؘx H+2 (h@ ^M )&`{E0P@Ah"mD>882D`w PC".l H'/_K5'OLL;@YM5CZà^ !i$zxx]x([iNn uܡ/-#fl};r=p5pC@(zs܀?s;ܟ޿HG'0 Pce ^WOWne `w0 B>9, IsruuQ βtt"\]~OZO`C@l~9 0g7&h?2[+@Wx}/'o%/1 `&@/;r߈Y0?b]|` B{en/w}J54`N^  ||bBaN_K?'* :yp-8NwB{ @B ky~W@npo5o;^[=Hp (#֩!D2 цZAC@._W /zܬ׉ RUP4{K%5k` E.< | znltE6Hz rDV 1o'] BnBS 1PO5 Z"M۳j9:/Rl_ S9y|PmnDx/92-N^&YXS8g/%Q /cT jye7|:> rjPcqv%#?U+Q%NxU:kcT<Ŗk9MsוC}OI7Lj/vb }LO{/tҲҚ0` MVSR]d`1(F va,}a=ͷA kaq:lirjE'~='piI]'$]U(Cj^t@"NT_+N/z&"UҽqK03g`ey錙ZWo:-$?aΖg.'e4c#f݀AmC9aV'lՃdK Utuv璱B9>|+E110F2OjH$+ƒqaI=;PB2 !fjS=*NiB8zMĢ_J>fa30'q<>w[ChTRWHv{7U1:/Nxy;waBca"sG("Uj RSE^:R,OHMz$RyE/o ]z"'aeE VRT^I'i`}} -vep>P#ElDX ~I %n"S(]u:FfDr=P"աUm˙#ҍi:wo RR&r4"YgM&DnIf :hYW+9)5>ɪ L )S[qU=E bw"eH( (=/';ɏ2@Y=0\d[P+zN#BvBS#7l?[$]V(8LeT>O%HN j0yAA>Ƙ-j}aK1' KuOB"~eV`Yt㰨q>.II=!K,wbgt4rWX810& E*%,IL>q2%nL|dBhHءzgGB4Ҳ~ȘiVUVfHLSud:}lNM($J5mC8@1]mGĽhШc6@i_SR~̆}8܂caN^_DsAS_8uI| TmR_r$HTj8= Crqd |SFhTh80dyeHħHJ@i\9-.dqizOHFS`Ӗ:'S1'f-7r{gͲ::_vܰBDnE9y` súz~\#]F4=* O)(z{iGal#ܹp 惡إ"(Gl2AoMz8CdWx ҂շ8v&q"7p,G--wF!c6b, Iݺeΐ0(Y702t_E [Q}7NQ?,,'UC W2I9I=/LcOCukTLT{!P>[y-~D9|u"-njb&Ż58!_ں6hjȱӞ*|aAqL<7C9ֿCܢ1JDs.YW2%V;IbuԹvDh6n1W6#۞4Y4|}]USJ{Ev& ݚ(SMn|֡伆8 d?&BHʶaT~Ɠ\)ұpq02])kMۛ, 3 (B+eR3R'~}н~i;g;UՎP>7`ر l5* fR\SGO;{BklFӖ=@h(@qՄؽC_M] ̲Yh Q/]O@~ʙ%So6b LBqⲧግyB2#Wx a@;lȚJR Kϰר 귳$5"H Y)8fGA936 ۫ƃ\E !Tx4Ni(?^yVk2t`#MF;%'շli>oϞW'R+Ut\MjTxy˷6vKסoP%&sA7]}2:ZI$ -es ^Fɼv?WVs2W:HGHfu^d.@f[=*_R.Q#S[`=\B$y|SȕYde4pz}PPaUb !Vw"y+J B*TְXз+ś*;,ᾤvNV q߬oJ\ ק\I2#}zT{QOh{F|նɠ/t5^L z$*{\+1(Lkzڴq\2ə3-k0g|hﱴMG| 8:ޛZv({Y/((ĸaeR5\{|;Lm:>(]ץ֖A?ͷJ&v$,;GzOɄ//B{=&؏ K"_XH>,JrV8_BrixF&%Ȟ_c04D_.!io6eYvRYiN^Z ZA] dĻL.ϒ;q| 7omg0!=$ڂ{΋Z8S{C_ӻM%TieϾϽ,= &Ukir[wfgUR#w,CI@f2VCU,2UppN.$?o8<#8'h{^p"90zISZ :إsja?4rUk4.笺vnmt1W/LSdز֧aã` z[QE~ - oi3}vA&t*7 g-\K7JKxphN^ymZR[wZ(M߇l(w&שLx@̀Iյ\䢄&Saњ۬e]enP`bR= ZݼJoFʆYzW)Z4d(z*ѐ"xb!M̩ 8Z$ՓWܪo\JS"}87˪`vO^ܣ$RAv% !"y}뜖=(zzbReR{V5[xdoV-)X9+. 6Zh AwŜRǒ!=fRb[r /t ǺT`S{ߚjt7c&rR7:Q9ԋ&`|?V'cWy^m`jHާEP_㋴Qֿ/V[x!, &uf ]lTm"=c>edHohT?/r(.{y(?S:lWrOe j>n"ۣt~N:Zf\ΆB3:!nx˘N^瘮FNQv+6伐EӞmjA7e3]9$q{3٢&VB ]&TH!vf.iW$X|Ft eNݬ&֟Tiud%P x~ݸug.y n%^i/YF˾LNĢ+|D; 0|C'jR$VNy .rx.; éQEY%j._(T[* G+^60B&Q uT s0efT:l W1ܾ~U_YK'xdq<h g2[S=)3^Sdc0wn ¹7m#ҁnRQ${)YEYb,`yn76$te *(F"'^ت> stream xڍT}7tHH3R@`Fr`c-%)4HI+HH( ~sw^{~d7WpCTh~A$@IGGC@ !bNNc([Oi ApPBBhN8=^00@PLRP\@v#%`o#@G 9?$#ہ x8p; u{th;0;@!hvA@%G:|h!AzC t?9.P_#0 „xy8BLu6@Y/> ODP`;p8Aa{8rPpL< 1[T ` ?PH(@Aa0FO8`gnp%'/^ "$ą%DO(K#N C{Ch$( P4 Ov? a'da##jikj"/,A"qCпsCt_5<_%~HP]B!4[DA/-G_YߎT`v?v;Ch/4f9t_W3_qzU ,3" P*E;Ez@(诋 {n_&0 %C0>T<vRHT F"~J`$Q@ fy!9 xјs $5h1qP/ITGH@G#a D!_-c/$70p_)/āA*ҵ.VmTo7\؆ݯ2nb$oFBskiAj=K1?3'lS-XO2%ːXLDrFwz?pQkFvvזi07j?d&zH{{RJUlntqO ۡ9>ak{hJ!Feӹgd? ʼsno;W.do[ruإ9%~?cDQ+f! gcXpeSOPP_4cf&{ǖ~ziejXIZّv6rUMVSijؓcI3!K,vcҹm¤Ьj2`Ag\35T Ks9Owo_&(/.[kK^~_|?ꊋLhe{1 #Vnaaͻx;0wyX6v@W[tYlY? gmz" KCᦩV^ꡀ{hVS.GA뤭ɓߚ~DNm0ЮtZ3ar0BϿm ;3ɐXvڲ\_mo)2/4훱|^mz۳߄?PE%Ds: $z1.{tG8$"{KAd]y@N2>\ ״:s,qSg[Y.tFQϸBW[NS6Ŕ-q?Lt``6"_Sϋnh?h0;W1"J}R[!M}JΞp+!d8JVeʉ"yy8o-YU_]lr(as)Â'ꬦ'saMMR"ϊK?J{S;h%MI<ʟ p`bѧ_9`/&q:E%$YSkGn-NCwk+}kw!sgY>ݢ(}1_u&޸c ?\ߚ?tdqQV.jq!OIJ$q s.uO۶{ YPda z}YDx':rifP  :ds^gH/[4H~61p{%b3'1s Ўi-`Xwp,hM1lG'e|KEb7UǭUU~\\{jVF7eC{T ٦kqK7U]c"gهs׮ v1/눸KJ D*!7K*a݇lrZr?uTn6=:rIlJyAh$9 RU#ztxYODa/-LT1ϷyȪLՅֱwk?l:}:lY{Љ3y_ALpQ,,uְyjt4&Rc7ޫqv|ja|= |^y9gRk~Z~hr-3±k#זoD|e UhI?72*sIw҉N[FxjTϊ&=n.+ tۚiD>dgL{fbK/8RGGt2ʁ'nve7}%ϱ?ڬv$~sF;U6 CS-b-ƭ"MKڔ`) |b_ MH^m?g4ÓL $9R_qhh}~UȂkjQ7]8/ccgUZKg2^'תo"ilVŗ= HWS'#/M/E̴CV2gŮQ2g4-:> ]z^!<&7uL*r޲Godgm־Grd V Z7o>g= KcfɖɃI[ A;epx(Š.~RyNB#u3SyйĊcP# kqT,T]6;"ۈ(XKBVo-s(VhclQ9L-Ls1䏏 zQva)9m/iD ˸7.)_d,^bv_-V>mB>l";p)kcjv0-XJy'b8v Z)YhG}R-1nœA;NWI IW&b VחSgn'p p\_vlAŚ?'&%{ 'QAψzJ[oϘkWo8UOk:_d:NAr̄(fyA\FRųxgX hͅq8}X/%Co~=&{U鰚LM˧-V(D<Ωڵ@r4!6It΃ךUj|zsSZCQ'+P7A{!1#닸Ubw=z/omkLf";fz\0SېwrOV9}TT1"z YB! gkUiJr" 6a/>꥿Ϳ'xXn/Fq>}4fHPv)CH:iKrooQSqڐ(T`dE~8f6T4",_Ӗ&+d/,fRlOJ՜|~nQgYaez"Omjbg毨>$KQ̄/X83K4sp/٘ߪi<]9Pco9rJ*8V`h^(GIvZ2H UGuVKNY!E[hGd{ԹK Z"X@2l8+=Kn;؞'JNmGcE?Iz6Ĕ9?j:{ I~(s6-G.oX 5R%1L:n/P|vRZ%*^\m*IƙVxLiL{A1\{zq*o%s%/DX*ȸU$"'L$~Rk %)HqJwiێF\yjvҒ쫭~KL)^~&anK81o$oc*߅uEGOvso/mxwا΃yօ0F酶Fߨu(h:P2 !g8.=ȼK"sȟ{ZÚ8Zqst_O{5$Nh ,WIcNm{z|{#iFw>:/o+у_r6Nxls[&g+h3~:Ӧձ[6hp$1 K@~lki;51ȵUr.N;J2)x^ B,+YV ݹ~#?*yV<'Z!_Pn`XRuUuӁ/l8~[Xra_2Vq$;z;wYxkp[2O'~127ZQM-RX3xlDSMbB8"7L\ٝńL=^o_l$^$|Ie.&Ko/|~?һ9SKUqkAT?E+(ןj38-ѕ  RcVƵ\]iob8Z9).ziz9eh1$O+$$l~so-ՕR*p*gUϑ^g{׌%Y }-yeԳ'<ҏTtwˉ^GR7owTssFDѻ <|d},gA Ꭷ8àFi,”3:D[>]׀ȩDKh8%TXυX+S\ ^|6`UHK:=Q=|Ȣ њȸ |Y vɴ'*.!c]VЦVȂ1Yt6;AM ^{ >b Z 7tL[YIsj&ٛ&7oNZpZ}Kwx@Ecz=g+͝[A/i7hRr38w7 Zc-k!3`puoYXeތbvWV"6{SInߋI:* rz.oyYnBiM%on ˋJ  ic J0.O$Fy€W?7/EA@2߁V8%=Fi"Rօd|@ʌ~e0[Tܒt Z6a9Xx V'xz0?hh's;ˑRFEڨKGmn5E9f9.iC,gvMw}|;^ubz~[\=9ׄs5nh/wG^Ñȧ-xtmJszdӮ|Pq+Ck8*y}'?aw랓M5[_7#L`<ԥ0j DsDD &w)p?a/bɆRLkthqjJtˆln-+ ށv BY>`9@wDErA@B$yR$4|*DWkA]nZ!q);!vG6 OSxx[pۜL1vv?(p8n"#FjX~8jp4 5 : CTFH߱9iFg?N@* endstream endobj 263 0 obj << /Length1 1407 /Length2 6140 /Length3 0 /Length 7100 /Filter /FlateDecode >> stream xڍxuTk.)HC ] ݩ CC4 H7ݍ4ҠR"7{ZYk}ݿz Dx q @}8hsq#+AA} :O98XD@b'"] w@D\ H'/- =G;]u@9'B!=$Cy- $ qtEHqp<([. Є8 %mzHk@;P]ᆰz*-'On_w_(Ax6k ΋Dq _W$;@, O( hsPp_~A߲"JC\ ~O݋fH_5ae SQ+"gC@"3 ^ ;F#qB: `pk\`>;o X(% ; c<~}M/+$S}nbrrHO/"`]o쿽_gPaA0/oт/p=B2 MAB ( -%7HwwC^%BBS`9wTACa8X$wU{¬(" 8tz㠫@UGU\%_6 -CEZR#0"@m |hZ<Nj@%4f_5҅ך !_}n..[0' J07JVzJ%z'̗c2JzJfvrΧg|VkOx0XLߜ`Nc&n6J{ ^ҋMymi+^= 38V"%VwUEtb;+f~5cj__'i2IzT7ؿHC"QSī4\!*tN%|D&d#(f-h/rqպ[Dve짠:zabt kkUnnFWd>;TnU: V#ǩg f+ ֆ0wHXw⟔<춉T5qdZߊJΗ:\cQ?P\~<&1ے'zy36nn#jcDˮ zizǩ[bIrUxa#6 y=ɇ*CF2Abg:Eu>PH.u>L R< Z.OQ P~5+HeBe1,ˊ,k *+1MyQ ! ͹}ufa+{^`:%7#~֟:x 4Xct|qX>tŻCCHxٺ-b#/v;nL9$I#* ^Tu{,8ghgB673B E6tZϾ{|י^( =Ix{s_)ifNQ:<:J"-EAggQ|at81A jWۢ=^[L os%̋B-3}!!dz_}xtM^踤`v 5 ;:5֣kȺʾg@Ưugɑ„ekII]u]9DEB-,tT]$Δf-0p h}{궻cbJB=@Zٵw_?v |lv"Z^. Eᚌ* /}qDL-7U(Ss2GJ< g(ȕ)P3M#0uaLƥ#Hr~K [c+FѨ hk%je )2oY:p y~2s%_Ųlh cҠnSSfӝ>3͹s"M&A\٧C@\ƞpDp'Hj?,x4<)( L.8ŀ {TzѢ;<;:IP:WdbM@0/][\%AXT*춾`:؈g f-`L!D eȒOЦ$ΘZDplȼqx>j*n#^9xdx8<|K4bZ#M@0mvG/fzb)sV濽!e78qw\fĺpM^Z:QũذnG)wg;dg[4ȅ(hȋ.NFTIݘ Pw}yaX9{B6'@{I_m|cɕ 0<z<潠@.l yKcw>5- [識wyJ+/!gF㭤?xwfS96KMSЦF}¼^zvӆ*J)heLJ +&x;6@/eCg<%X_|.BC@K> >#7rx3x-O&oω)8lbV w˯=rW[W<~fr&blA ۇe̠EQ |mWy$do!c1 ܸ/tgP^QZ9h1 zg Ju~qrYs(zspӍZcL8{6\s.IDud>D XvťqT =Po Z@}7oqrl+T疌AA2b9$bsIJ ow A#`\e} o E(a[?-y_xյ_s3> ->d!ڨ{ԃDh+9"iMmt]MH`/X;!{&p]k_R%@rLG k/hᘨ'9*nmyNxq b0srj.YH=Z՗*=>e9}RHjDQKU_|sfZ&>\oR2 }}lzKLXʚJɳqca==a u.>fү:C;35{i#fF=%: OӺˈ>gg~qK'Q" 1(&9i]aZNw簟^ ?,ї%+o< -#rwz+gtL)6g/D?s gNװk3x%0Q>_PgZld>~fTnW[!~-Qc;^sQ]m׸{^ ۻr+[~I2Sp40`#[/L]=~~F#[{RM5Y ^GyB̰uG%DRsM\׉ɯm..|*jݹt'#$հ=iT)ZDŽC(Y4Ig/;&| w[ 6D 5g;=O(T E{YzMzQ] 0} T:ZIh zɑVb M?c;cJSm] iLcNLʷi6eU]Zup}p1P̌s6!6Wɗ|"xtzk99:J>Qf~;MMqcGSJ)QY )+r3vlg{-# =zaq Y ZFU01߭ MA'`|υf-*IQS R|[ -ާM{|08Z<_!ZE+'ݪI 2`V%ֽečcG" H=vy;̀'b2 XRH)X}Ong~E92$P?0VexX.pnx6>5ըRVaƒ}G8msti~H/EU)9Ig4x\Έ\{txߔ7P^ P6 &R&R^C endstream endobj 265 0 obj << /Length1 2664 /Length2 23265 /Length3 0 /Length 24765 /Filter /FlateDecode >> stream xڌTU J#]R;%i)FA;$qf~]yyso(HDL WFf^* 3BBb@h @Y7; ?Cg^9@  P98z9[[Zi6p:[ &V@{0@VLL&.Ζ4kW+*4*hb2F r5 Wg ,6\n s3LP(9Am@7F+5/g33{G5`am(I3zL@ M\&&v&`27HLS ݯ~wYd.`o Ohnߓ9x| s_E92i܀2Ee@W333zY1 KK `.gmAq1q\݀~>*XXfS5wth7 = em|455_' `d\+/?QdpW?kAˠe 3s0>\(otKMGmbomx\g>5} @sk7q56ZHZ{͕]ͬޡMTvp0t3P\K)%@f`l=q|XjkL W \D99L"D#No`L".fo`XLҿI7b0F`v.~#0o`RqsQ쪿]7F`v̮ٵ~#0ο333wįݿ6`o753qv_{<9wpbb{|W; ]! Z޿9~AY6e;-; ,#fp6@dlY*x  #' ɀ[ g?ag ^k?UN ]z1E@sSаV,~w+N.@{n$/q- B?\oZGYXۙNz8ޞ@0A#y[<4׿{ h8`jSzW)M`bG+gѹ '5OCݨ+[KO>MTZ~>ūN ,L`0 >9jB7AvRd;qQŸ+^ Q٭C|,bՈ:Ccyƕef=kX6(-Gwj:K'9..!5$~,μOaJg>q2} *>kzj4}te; c;șT (õHn!zeaL3UAֱ: lY:4p|70UO҃VJ/je70uTP~k0~sч,y̺ܯ{ G N8}՝)Ϡyp*v$YIgSKtE|@W )f:[/f/"ɱp>@.#ճ3_>esDL% Q4~]РhHX/ύMI!ցYG uМvNT)hۭxScuQw(Z[c2T }r| {*#Y۔!2PWSd.C 5h?WS%^號""+I$ L\zj!RDP>\;}%Jƌ)HWD]>e.!fFra%:kB?'v9?eMyJ娀JӢ+(3I'Y!p2ЮhHb,´Ѣ g0?$b(I䐄2VQ?OE`|[-& BֵLJ & ,HsgpvNz?2h伥$Gsrߊ o{ߒ'?0¥؟6/d|:VvWWWY.4g,tɕth4ZS%2?;,᥀4 2gjS4 1iصҮeՓ~7^DsfDkNͻJ$zF2͹5XfoK.dtKG?p&Hn?O1Ǒ1lC "Z~%Gê<\)LNnࡴ!g]p86}7Ont2Ѵݭ(^*B)k/wf8iZh K&_x: ~K6?r-*z?{~іJm/֘mIfn\8_ՓxۉD|| E)fPT@ᘄcN=@ EoY V5@ѓ~$ o$sA/ΥBIP\yڅeteE]!\AԣO2Vs>J7),fX :)I~ 7h͆ٯR0/}0N;IXK`lF,K)B&*ϴ_}Q,)e_H'"5Yk$GRhPnh]8FZgP"r FsZhkm^ /%Um&pJ,9L!$ωټRP'tVK_c$`KHeˁ4E?hiĽZQ\ƣ9 T;E2vM3~@ϻWFzߴ5#p.T+Օ_Cކ8X%<4&aDž [p^S6q2-a!-E@7`Z< T†ɷ:1\Q)sݚd('<2K@_`]TrANN=gJ|f{;j;KSe$ųI#O&*,8M'Ư.ǹ.Ao`˾gzG;+vF-qWoV!~LYqzA Tw/s<^Dw=Pbh:baVmCX* $z7'BȋH'Zoyytc]xARo!9/i*& L_$6 X ejQ{y#ϰjbT{)|!U*ꡕD7Xe*0*QJWԍ/I[b}o17`F^,N5uH9?qPX Z@}N $Dsٴ\H,t Uu 7uW//Iz4\V@tfM{ΩfR@FOв9؈pI{#ieu>rukg߻A?+-i@6.+U}emH/$xyIp-=I`v$u òRDJ>07DI&#=IE[){Jecz["D eX|ܽې'.уcIzlơxS(%"tY}UoI}U䉥BUP|{,Aʥ1Xǀ2ޫƺ/}F0ZWUԐPUĮг({^3o5׊Wk'˘Q[P 2䅭-}7N<9",ޞSn"^2*W 08˸Cp.*qNB5:u!+=n(fG%E' 6mhl?_1QqgF}%4/b` y]_V, f֌h V,/? j'/ƒ {?4$="FIEǟ8:V"4Ɏ|8d!Y^n%T4]׻sU$ItdRnFgp: Ob,_g⨌~ -rͨJUN @AYGhvU,I0ako2?4 KۼErr \IBe\M._L [JXLnKz7 4nɘAIS&nx ,LYUwiR&Bպ{>MiFuR\ZRHTQZ$ ƓM]CNo]!b<ti {bhw.7esT!/,SY q>Tv '~O3) dL 0 ?sЂU lx~clkNXnL%c^ESs==|䓘 #Qr*d1hPsIR E'7 ?3:./UwGo4 ]ivy/ەzˍJAN0؂n R!aҺ4:!' qGDc(7p˵ׅZ1e?a3LZoK Y<62_?S3Smu.y=r%`"\ωՔWHqI-DqeA|^U7^0j(8ly-t*Rf!fVؽs6yz4z@(~}!vɜV5z ⊆tPGIlR7l9Σ7NmG#^(Z\6PBR&g4@W2I/6_e:|:714ƻf5$tH8GqK?2U \X&Ez#7puSӖGFŗI͗tG_PltN.q\!#}jLH9(/DW.pC^V]-l\>ד=tq۞IsM)9z=lRuC"ڞWC7V1}(DޡEHl@}aA~-+mܡ ors6W1A~A}D '/^GNL}Wnx#yp&-4"_*|U~o0 JD gAS>Olj6hL9J/'Κ߃< *`Zi6O >Cs8LH+RRaXEW)t\Hό]Mw  /H) ªiw2WҴXk[4I7X}Xf\Q1T{=@{GUlEAU} 9ckG_p=~~0#oMn]0* >qjʍ#O!Zf?:}R,S6%!m żkanG3K,us+XVd&rR\H|U&A?t/]|Â֪aDZڷ~a;0w+?Wcް(RMTFpmvx 3n2ٟ.U9Y7*M/G Q6I{\\BcJhw~.m^WKBft7UNJ-+js1|c ?$ST[ڱ 9U|rb)^ޕQSօ ie. cm!j!t yA,rtsV ~M]h+ ѣʀ/dK>?x4|@#~jF[AuVuG|EUQJyOZJŌeoIE ߖ!5Q΅0UkBk "~%3fF G{_L4J1yJjުO| RAM0M?J[/ :xPIMVATY<'kt!ے$OCN ms{vR7;:y2%lӘ`ḽA#2Ӑ[C;VW\yQ޿'y5nVupCpL|2نkva\}lhs}lKa!R$'4(N8 s%fu @+ܽG1Z#xogGP=un8Q燰dNdPrJQ@^Agr-$GCjT5ڷcZKCm#ru{ԯo1[ obMV\ɳK}LgvLDUsʡSg$lI0pR5{1DSԑ0E|H6<#C4N.gǹ((BNyLcj|a6ͼ#[ȧQ 9U WSz&A`AWz: "EppW]q݋!T ɤޘJPuS3iEK|Prd8Z(Hq0Ng)*8mTuIASʁ"f&kq 2U ,_HcTc'-FD +pm-2Vkn;^C cPӈ! 7 dnK}Mn^[W^5q ]}h{!FU{iLwtHԫ^627ƄƺLꂇ@LD4-ita3TODq #O,6 Bٳ8*IOlژM:}|/k3{_dxG<Q,fу"*mԞz|n|(&P:KzMٲNyO~ 滶p%OdEMtm u{-s"'[n^Jw?8D țO %H<5t[oX[bh u8f r<S~yT{ޞux-Uso6AyP&fx=2>6i8~~T(ZDxř?amEdsnZJıxܔoVp? C\Ě36i&tӥ!S6PS7uNY+LxaS1:E/2TvTJ { R1CV3qlRSUG#!O+H u|,\N FY;ȧx_eSMX1r$Ew$[ci2P)(vŲ[k~+w0$"0sqT @?0#mcq玹+M64f)UOc'z`YQ`JLV.-r^3ÛсiNu@w/EClci.SFZtu4PG.IIZ~hv:CrْΚyZ w>WG)p$h6b:M xUMɯ ux%1wf0AW:}Is:W6iv':83u"eV3P}4( B^ߒa#kEan=Ȏ-ۧ/m8QQ=V}F-BhLUf}Q.si1 1eցBޒ= +  أ~v{r{BnU*($6m5*2xY\ t7Hu-OL8t1Si&ڰ3bzK?=tƵWn:,3iet_+cgvĊ'b2SR$<Վ=B>L"au"G;N]왠 l V$O#gRܫnԐ> +NM5PF_[DmF7LXJɭ`I0C3i4+PH!x4$DYN,SġBn$+~:.svtnhV9}1U$%HXl!,~zݏ<QowH.]/戎2jDDmrQM,OBcM Uj°r *2y gUJZg`zw{LIHhllS" e D]W N6G8:ʥq颂Q[ U_ <;x i ;J# l"1>b7%G}:TW<,3dhx0Oޅۣ p d8;W[%A! ^ݔDDZ'"/hٸm5bĎd]3XmY~͠[W\X!R#mkƬhxud9gJo\p"oN܈r|b}~v@uN#qf pV2=* `bj[})9ČT泹iC1b1zxw5+3X<̚&u`+b"KKrY1TmN30,1cv+:'E5`@5'Wnd$&)"szC<_Ԣ-ר6&ֆIЭ9RFߡA#jSYAsOYB/Od8.S/DbycՄsE u$&Q3=og1) o Rg-Kzt5- }ݵ{ɆjT:5뎮^Х+l:UGpk!N|ȌuX- :/28$6joxӵtnj|T*F)Ms"'^k8P`q":CbѤV^"a4g@ ͔*IIr}Xp&eOUt*Șa \A<}'GY`,eqrduLaz}GMMn+NfQOrތp6Ѧ eAcQw-[5bȢvtPmާ**|t5:Fe$ #ZzNvT"'SQ)*nI.Oh& ~ٌy:`N/7^rFPzR;uB_h+?Rb:[_Q[r5Ȉ01rtS^ c8ʪ%)OYpȢK1\G&컽[(f|}11# i|aj&Ì:vI)A <@0'Aj wG9\*4.֘_"@X)t^@z6k}cTφj'+0G7STش ?fI,^挈Dz!7m X0yTrөº}`$)Qbm yuy4xc= nͣꆉN\}oX# YX1;W9x/OJMqZ]J7R LfOoH.}N[BՇ ;ӅQ! ;,JjFnب:_obAfU^O3rh|Z\Eg%uNhO5"nFtQAOٯS/̼g; ?&ܾ^nڋXDb:3m m-Om|6%q<*bN4x6c<+ܦlËd (Z%Ƭ,& M!M`rR3/)\(F]Q%a{ 'HH[)o2 |f(b+q4f억dH͂ RšZ& @\Kԃ_R;eFƦX6~1/s&I$Jbtg3 W=1zM;9Ynim1 |qdf3q+l8,4"|hGjĻ&U~&AݜTN QX%3}5IBXL LJ䯈8Jz5Fg񐞸pˇtهw#:Њ5csrmLceۊD&DYx[XG-ȝ s~c$ζ=T~@^қCc޵je/ T< v*9#8>I~w#_0qWFYP _\sڈ͊bc1uArN>i=딮Az=Pō^ץBQOR8|EjQԤJ[kPm~:/4沏@*rĿ_s⊃{.7y{ .97-I2 Uid}}%ϦAi( Wk?S8!֗YӖ,qQm=2>}O7OyxoD,`x|z%K..}iԒu;EcIۆk ?sE}(lEbAIAF^lBLs#([ miw g* \̈́TP boJ!"K)6P],U-ʈxn"3G1)m9u wr% M,;Po<| r&/G^u뻥H/;H7/\Z}okgzhA aMTP")B }I&#Y4#J,]e7eܡl_F9wxMʌ|lnR9 ݐ9<ߨ4x ݧp+z6ϑN g7wN%M% )A!%"dP^|a,sx*vr:|hS|ka5<Q#J4k'w_f9{[l바Yh.wSvE&^4&ct_?(3o6NQC3ug-'ie0ǎ0rm r$Q`N{ٿl"P4|JH ӮahL֖75ooGK!(7Iv'G-!R\‡Al3Ʊwu4_Z\ӑ<߷TU8 3[. ⷁdprPf3wLݳd%8H֕ ;B> UvF&={w|rBPm)겭[@쨹,la]XHfI_iSuB^vi9u SAfؓCu!N59ܸyhjo= '3P⡰ ^_&:\{< 3C$Yζikaܪ[UoMp^.z!CC4aB9#6 -Ou8W)PG†w g}3nHnPMqFSx\b>'|Y֣Z!L% pw)Vl351?q_0 U o.'/6h&ić1 k||RE*)B w%BC4y)LN <֞UJlum3@J =|ցÌR#KsCNF8)SCq>lǠ N2By⾭0SR$b6OB R=,YRVjrB& ?BD#~,Yh{_TogZlwm@~ޗlt#n#GeMg˘>Ԉn=ş#.#U_*?D{)?CM-[k4Ĝ:oD-q8,#mCH-M+Ȯ$p%K Ț"f,'Hܕžwpr8~Ϭ5ש̄@>hO'HycQwַ :1)zKm'QSm?Xr7-hݑ*所zq2Ydgˍ@24o`W$:/׷yf9HUR2B <ؙ/+v IY>d;7L6Xq4t Nd.=H87t^ܕB%%;AO^Ή?w{aMwJa67BVDNkš,/P虶ZCj\Y0%1&ñmh(ɿ;rG=7$~p*:_ f=q*V:3g|\ah ':TQ'#vǘ/|mTbUFALd 4[Mg;y/<:jNJ;f^ۙcږHjӨ5* Ve%QEza5AN{+~Q=C$^+G,t\O2VBWwL1Q^!6o~Q6ԕQs ;[Gs)Y5G;5p~sԛ )qc#8_u|pδ+o $E1$#9_3lޜ_SFdTZ=Q!-x"gKby( |Qt*d&\ݫ4TD?SayGv&[|#etb-[V y:FnfȒb%^f\SܽYwͧxG7@Wo_`Jk{rfny-A6>V]r.B)Ӊ 3Øwt>1JςzuAtUk"P!))'~߬y=\:|9(tD.#u颳*h\[2i4~姵<9x8nS`Bh%įZŶ˚o"DX_ؼe7I h_KpQh@^ą)J_[ѓ>< ésBAc 9,5hM}I+Ry}t6R!Ʉi-ټ)7RLDf2*{D[bQ^GɃj@qEfݝ{;4}B"PaJM)ޜ>|HLSM4Lsp19\a[^8ŢM39`5zys4f\@8e"bqLC:lñ0}p7.K*>4Ƽn״\Bw$kzMZ2w4/T/Vi)Ae?'hI/dz5 =\:?F^]Ƭ5AΔ_dI7 2E7z:1xĞb.T @qc׍RWr䊲FRm3wׅjK[wM >-Kvr%ֵ;\;ɭ`U?O%36rce2Ԃ5%wi-jfw!JvZPn4*TRxkcނǻIc!)~7(fcWvxAJ5J|C=d7t/8boEGBR.'@]+Oo~T܂<+dbS'O8 찇!5MvY7ٞ%#RK~ 8Ŗ_QPBeUu0+G4Ey{LL0e=أ?9*S.S]!7R!dwulXZ#?!P wUb/ K"LpJ;=ʔJ epRC6tn<Uje w(&3"h~RʬqrD f8.%H4)͉Ƌ0?&B/0t¹jP e!PT{v(y:1N44TF~~=yVnPı&Tpp8k*V .:J0UQaIifxMm#zr/?ݣy=Md9GȪ7[h/dj$̪Цbѿ&O:IgˤXB+z[IφR1dՌ&~Hĥ.BwhĊS11A܁& g<N.x.J >;=XC^ä|^`b[iХs&Nx~o0Dž> 1Kf#(C\>骯$H: ~y Pj6> UHpwCčvä́IؠHMŷNIqFHMgwWeuD>Q] W@k5Bp9g!Z}g|Z~c'fdՃDe,<+F ? :"k@TK%#bX'ĕ::5?S.++j^'Rz܊If,)[yBsMIOl#KE_fmD&,ИCF&Z7&:Rԟv!z^#qTz`D{M =h'2bHW,ׇ Ձ%5m^:+z􉒂su)SWIM!K`pa)0f6&5 Ή6ܲd5 t /c?RëUU~3jVdY{u\"O &56s%Ķd{@'9r^V:=7*w%8؟JZʭs}gR?'H |fȏfw {<y)o:{4 z#21p _ky0qR8N R%14)&/{#v,U`cExllPQ'5uUhnJ[x߾3xlŏ^y*m PRzȫStT(?<6[sCڣ $];mJ!cTc>7X2~f9{me=>}o_IìyFr95Z¦Y3Tϗl!CW?c`Xw+NnJY3wK 7Kl4$.]\A o%H3.Ud țoA]Hm1Tǟ+} ܜkwefelF#ѳ:y؝9VjA Z/3;zL,1P64)zJ& rkNiy{(6VL7wEJ ?$͛!N]*>  WYtqf145h< lBШxfP(OCpۍvVF-Gi hښصAOF\Cp# D܊‹R ࢗ+eܪж z8TI쨍 p]!2zB3CZy%u.w#h}OI[էO#x]6ڣY5D6"I$-IC.Y>8c",b\rRX"+ym+\b~nA1JӒ)R]+xA!@$5-e?V@ٍ^=gPĬCE ^%53nCW)1޷8 \U Og;7M'k"Պ蒘@w{$娖f&nUjVܝ0{6l2:Bx(9{I<ͼ\c (?ȯGE{: %\_Ȓ2O(]I2t%j^,%C0 2O-gn8.v ha4-4Uq򏚺)&~j5x 6(}diaҔ^?AxLR9ђ2oja[ jpU1'оVl6?ߠ% t񌌣alj6L[yn g 2G KdpMhP\_\2%6 lލ@P zZ_Omߖ0i?`_HmCE=s']YBZɦx@pNP v[l䴄}?˂R"cbPu:ǵ6v0p1Sfey70g ')7JC Z-}q wDs,Ue8Q-Jxq/F`1i?Ŗ+eHY6&zճ3g<[+^`1lvh㚜J@Vs yڴ g+yoh+~MηdbN} M΁{l!gt80QПGKn0@; sKyz"Di·iК?M $&rԂajF*k8A%Rz0OF#KD-CgF!tq;jTf|1fopz?Ԇy"o)LY,H͛Y" ò YS[ ߡTB92&iR^k/P#!]LlI #GV4?_|:,dx"l Ѥa)Z1;1ZXY.L@I~s"1m[3FZ"0i/j Dʮy\<>f{bXVaF `(wԭ>]#^u7Pذ!T{lGvt\g7݂,vx(c@4LVY&e:d;L#=mM .Aj= h6T}wK2*jWA{@Vʠl 88 }7vX/Q Rf/ Z -6eOՕn t,PC:h- EYfy o|&-`(rseǧKĵ=:Btbb\&`/RRm&ﯼBOhqDF̵JMAO ?nW'q -ՙ9ï֍*RUsc]2Nl5Lڽ'Sm?ҹ#YCB*;=}J߼W_M27d8h䇭%ݡVio=٪ҹ >:$̧rۊ*9^ye<`nM2(O|K@nS6>hѼ $6eV(IfNopJ/pϊڍC<zqydYLXoTB^0476԰"=w9ɮw1xu$ΒOƖ#z ʾ8<åA>5)F:F D 1lz. A>x(u=tIA (F=/kPR 9=Lc%OޜP'g"O:.1N"ZΣђWI񷙓IZ, ;K`Z~E"- 'FZ9LA3´ 4z?,HbԃZYp>Յ> O >IwaC5`quVo߫Oد*~3[C!'˕f77`}爕~T#Pq>5m0V1)7ȢEӲ F^nޜmm۝= UTW*):vF Θʹ ɾ.KLk8 ,ť;Yl| X8g ~7YDdU|I(7@iwj…" Rc FwOs,I| roP|ó,,:e۽\Oo8 =+%b 9O[,a<}\%$K'¯Qy2[يN]1[safl&NGd& gч l۴jrI(xv1gиd-@e)+$;p.^ZPu-UYiyXoLܿD&|l Y〡{zs\ߦYatjeOL%z[ EfQ__8 RbbռZ*CךG\?#2'B6tGe!6,A5^f /`fxg0 p.iA>Im~$P(0[jbbWN%Wr݅*)f=S:F"`k]KV, :|G 2~ZɅle x[+[ &Nj0nځ¾wɩJe|Vvlaw0 YؗTͣ81ȆŒ: BɩD,EB- Z,HZ[u>N&TfުurC{M%-fϏ 体?({ +ChM !$Jitl%; <g4lP$R/X3o*?#^/Hv,&3.Z"pRcL^XBԃavrRЙ+Hh/8峟AqE8zh0۶[(+8j"(ܒ,վt8sKkf/!>9 @_@9b-ɜP<*K^%bc^)AP, @Y1&)&Pl(@_0}/8<#l8L۠Sga+F{Wj*_H;¥-;U• Uyj$8Y~ ;g.:myF(H,hS"-`$}"dfAj:J8 Z@m?P_tXVl҅ӢaWBВK&Rq5uxB ;jۺ?h!7 UPDv U{krˢ牖q<=Spn"^:yD$m/w"(EPx5!sh*3 dJÜrmwh!E @勐l3;E 8\Ɇ3)` EɅv;Pf{N=nNdU3m QAB3bR5!q,7_/ӱ00h;tz=ΩYlŽ$7 e$RkOzG88ƅ<XFY P㫧<@ -'21m^_!%ǝ} @ msjC%WQˬ\O}v^`.^B&{fȇ~ 0L|%BWCݕ%@ۧ ]` K W=,}lq[FAC={r&wyh" e4@W|xyr %f Pzzsd=P~r:;2ץ nlx$Q/,iRV{7!rb_" S7%T^RK?3؃|AITOj$t+4m >Ue_3IHYX`D-\x^P]%7E!kRbdEv >Qe05QMu? Ԍܳ|90W u%wL2s "Ш&5N#ⒼE'vgV*1t0f6mN`QҔp_4)eLM;de LK_bGCOGF&0bs?WXV¹3gLNT2_SplVtn_dT"3gFݠU"AnCg{X>4`plO#)Z]C<с31Tr?%+#hjWLjPճ{aA=<*Z@n}5H񭤅1|$+WK\8QUk!=w>_e˧>D_+!RsO']1׆rrZƕ"4>rd-eʙL "HNyxۤǸ,Wjǀq`W@ĽΚFH=CNzPک_2@G˅ V^uZA'uJj)KʉH{J_`>|@ Nf6vO읪sgStcp97,-??$g=MIyy9fӣ#!X+K.U>/땆Xlzy1T"vbC[cSGWI){ܦϲJ5rw`_5j;עVP2%nA^'yo]0 endstream endobj 267 0 obj << /Length1 1473 /Length2 6869 /Length3 0 /Length 7861 /Filter /FlateDecode >> stream xڍtTT]6tw J R 00 !)Jw# HHJ4Z߷Zck׽Yulp_H( P"@0>; 8L?T`Sn0 $@_p4@h 40+> ᅄ;ne Pr#!6 @ r;߮h60_%dP(Ux@P=+$ 93g8@\p; P z#5t`G @H@rf,J f@P(>f3uA(6AJ[sAB(WW'EenOY fwvP? AmnKwg`pϟfkBqqkr كQ1 (!% 6?x!B?[~>8`wK~}\A` Oǿ-|!!-C`Tv#!3à^ꯠo~Q@JR ! A0;8@7۳sb^A~+e0?mn_BgJgMnP/7/9C^* u;ZـwIBܜ۫N1B\C<o ՅP wkB@n>q/vns $Gv@m Q)[z~;8gGDv[)ߢ[iAmQHT"_kD/Eݒui`ILcMhYq'/}fnĸ)ܕwWոgY|vp#ZL]oşH~pG @q( C=MX7̣Gݳdn(|rFC˒1XØAyYh{Lܰh&})1];=_f IFgJ˄yL>4᣼I3h9}xt{][ ݂}DVRYb˃$b$ѬϚ%]t 7:PZ1=Z-\.c=ZXXzN-qd}e,>y&)b+5yցϞc۫)B$l_7,zFx^.1s-H2-YT8C~ .R-T|gVentĊ]$ӑ=SLmNg oY0pحS|3v^cN>z1V uq2᳡~RЧTxJ@jedp~NϬ)b]c4U\G)~BuRRʇ,EdwRS͓Hy/GTt;E>[96pU1&ӛ7R+** Q`_͵N{4ƹcɁܹȱJ`-8v,Br}"ǻ7K)94qׂɚ/* N\xyPQħӈ+ιTDZE+i]ZƄ #+QXIꋢC9IRl)Fyt .R tCl;LC\MZqxfu=KA lTZ>3zj+$Lz9"4 +) qq 觕_8az$vRf{r{_%wa-bH*]lM\+tPսoQj}htLJ-Ux(t!nQYLsB[dOѥ-a*_wsh9c6PaEÃF>OA ,UOߗ'|^/HtZ z~uAH5 D`INP]PAʑ݆kF GT7瀤 WFz^,.`xt] "޼7YgcruRoY^o@յ;JQ82̱7cNf+;$ҫ<_J1L9PS Rh!%<$TK{)!Qo7ÆUY很 omkO qc{0ۑd WL\|rZl9\xUv#9S+A܌V$9XcORp2WG`SMZŵW;ay2>]~pR5ܰ5 K'BJwaCB譢aĠL]:*JohvXxqa{f0Wu͢$iHs&5TC'(M/b` JXkp3qF̀BY"RD ee[InxBc0V3gyCTBS\/ ~ѺPXWd- a$QjeLqs,R~,u6q.S靻g&ݹhpZ)I#XI r)^;rC6X#?Xc]AhvFZ@=7p1ͥzA7E|O6SVIԹ}m=stG~ާB&BIz$Ykkm^{MDvf+Ogx(ž-.6:^tKV{1\kC4t7F*Mq=C k4ݭ9cer*~-?M8]SRp ؖWKL%aiŴu $E`[ %(; >VwL8wJITzV<'زewanH٭E/&[X/喊{xGD;&𡢶⋘v=k! U kՉ:p2K埌>Lx52j ǀ@+-3T:j1gs͙IGś7YTvL"TSkVܞ+jhe$PHCة7^6ĺ+N;;ٹV '"2@*[ ,ͅH KR?*)Dt5R*nrw8(̚9!},Hayl(kg4~⦭+z~MѓVc pq`pV.לPn;suEdΩvfk_:WBhAZQ XCO:>}@<*&/Tng8߈˄ĕpSW^Ҳؙ렂WivmJN+y9a,~ #57oPrlƾwa**=fo @,ow=+Fs>sޭј:lu-`s[ik{øC#7|Efm83=^dۙr(1>Wtg?g#yɖE!r  }c^+G1rb]fs_レt|]Vl_`-,٦na["x;woðTIFF|C·7{ Ĭ 6s3dOF#k270&qd;[k W5vcV'hfG񀧦!zsƞJ[ij0}zTy8^ij$A0_ ap4M.FV6_z/=ъߔJH<1Ӈ9eg\Om|:cQ*5T'hxu]ctc31ajėNg Va97U\M$O)F0^fE:O|vάF;~'eT:ޕ])chaX19iw(gBJVDL:R9}bBҶmP3:d"[K` -qre(I=&stLc5jYEb 9:_Ǣ,*To4 0T^rMjz%mpecwMh G=6+:<SIg/|9'n6ƽ? Ү_6Ǥ;Y6-=fOȽޱI uέbIV¾$ rW:˒.K{Q|@6+ԕ]?H#D݈܁3ImAқa3!wɎ/Bet ;0J4ݯ-uЮ7zWd V9c9E%Vvv{uW׿ ;{B43Ļ o]yoXñ(cR.^G]nh gRYf:F5,)OxDz`þ G|y\Fz DG7[> VBͫ %v*MOt$t32V-wG n̿?! endstream endobj 166 0 obj << /Type /ObjStm /N 100 /First 890 /Length 3656 /Filter /FlateDecode >> stream x[[o~ׯYoA'\yPl%V+K,IfHI\۲Xy q!9orrQ&4FXpjpuA5^yhȕMi@ҮWOiYLHUT Ub$OD5#'h-њxN8q%ڤmmH6K %q<8GaRhoɞ8BF' F)жUD@*EKڞJ1$@q{⩉8@ő8 X[E[EF!/] ;0w}؉'wR BbRtj wWEq>];ֶJ ol`̴rmQFQPf]9p;"t[DQiCCNtA NHױ^.2jxlb(or%6SՔiRl 좣D"] t.A\ l:>MkT|3Z3Np]K(W2r8pNhw[kJK&ހ Yd6;ɶ8FG;x%1Y'ܨܩ-ёH)k`?Xhy6phaҙ1`7nYq)q=NRTQy?]DŽ,N_IlEl956Ҿs> >M@$(k+R3B+8dJ$%X"0fzi"@qs#Q|pUcX}oiR}jKk%BnwI9Pn(['y_MF Eѥ3tA嗝#壝to5|j;k63BV1ƶȶt`Uyzz;AYkrxZLVUjk@P-tfQIJF*ng@Bz~?fvzdqt6jq+~&KYdެP*\q޻J!8hQ=(.%V"ĝرs0 ̺"+TDwcTK_oL {p̦k9ʼ1:66LC@̌LLce(b0Pk>/='A{1@cz'JX1:+㙆Vy}~'6s2Gw:[9gHs*YyП%JM z⏝8MZje|oܒG$IwFM,(AʈĖ"Ń4?6~Mi J[hơv-EH,|JQ_yLif8tM4ee^YlKٗ[%oBZyb߱>wKBlK}ʲŒ,Ps -yDTVZ)a7umAolQ)OIr8G/(xi؞/-O3P.C?ߞ+i)^^>N 5_QeT/ 6fI)L@)]kuqFr3G6HQM"DOA*rz@ @A12e>?qGM Or֭R249%|. %-@ =K<[Qȥ7 $$l-e9]_ \ Y!WWu cKeвV[J L󺉹fdhFxUjy%*Z+lQh^zy$̜dIOsrsS2R,S̷eͪ{4y$X 9)NQ {A31g[kiLJY<92%)Ϊ}DZ{*.VYJZjk<^ y~n>hq)wՂ7g|dl[/ [R򞁎lgRT8(eMͧڨʎ:TmEQ]&mY%te )Ƴm+ 9/:kX H}p\# A5WЉPdTe:ts돢#uDGל*hr5d+/fkgYC78;Ogi~'O^٣}rGI [­J$CtR'O ?zvg=|0돆{㏣A_'鏀zm )A@|'b,NTĹcf53Gu½z|o> vt~v"+;dx8M}~趑ѫw=22ÁI;`Z)㞸+}@< R]ߋCq~>ć!}| S1`S>7|ޔ6pr88` fMa_UiF?zǬҴBq5k5#g]VC'VEYĺk2u Kt%Q`(%((yp.\-,Jц]QB7o^z<_e&+f&,ϧ;PkCqD<g~-ވDY|{؟"A]l-1r(Xx,>O3|21&]velD/f8:9o`:~+4ooWS1[i%B6Pەro endstream endobj 269 0 obj << /Length1 1447 /Length2 6648 /Length3 0 /Length 7629 /Filter /FlateDecode >> stream xڍwT> #FFZAJc6F7 %!%!!R"Ht7sx빯9g@vcA%=\B2]# ,*&+hG{ PHP Sbpn($@@$d 2`0@ B]! }'g ^"-- Pr0( 8p' c +3.#,-uB@o`_tzP7obB@3O 0Ñ8y5tFJ@`(7w(t8"\}u! @(\< p~+8~!/¿.Y 頂rs#1SE0ܭn c@:8.lDF/W;@8q?~P/8;rap'8y4 }^B¦ZF mRVFa~"`8H$qg_PğɨtDhx ?DžP8, giWE]o+/c!\}TM. 7v51ĺp[51Pd(!\D: w0@``һ"p3ex:ǍҿTCPfND\E>v?n8ߺ !Q\G/B꧸(@2(O߀4@c@8{`h4n`W_߯g&Q0J7Wǀ+OfЯ=OHSBߕRV==v\O᫟gF#+ȧ ")hr{Y a3~0A>ݱw]܇* mQǦ!< &+GǮ ]i% l?-\;](7`bdExtz)Ki>%C\y}Wqdx 5cbZ$'ek-a5I6{DcE7wm- n)Pcd5HcVd]eޒ4W|+ݚ;4q9Zq,M?KH>NLRx:&dw zVA75'S?H'+wT|Ҭ"a`ɸG#HyrFdԩS消!IUSܜ,?],M>H$cY ծN>BM*JVKTj`MxhF@4-(^~it{muO%Du7Z;Ֆ♄ K{"ڢ|>'ia\, ϑ!ްLyɿJ(I:Jl,lu-pSAsS?l{[fAnEE n]=a'GzoFb*28%VoYE\P$pqDVd{V+w=Ki8Q? _Ok,+3(o_hF乜}ݕ`jgEIwP{mߴn:9^\(hDS~Wd[ik9-G5t!n7ET}J{UlGy]L1|TimáWIEAF=dR?m(kOnEX@*R^Fy`eؖNպ=ŽYKxCjEݰ[d }ޖ}`Jpc6iyI ?qЫ0<2 wFq[ߣfN *|s]sr# ̠֬CEl+ iv].n@nc-y"Z>nOYt0xpEoy*/@geWa{Ζ2UW3$ljڭ:̈́Q.w Ho+=`.Tn@tgR\VߙUȑcF<LջI2p24KD[}tB &8IN3[oyD9_׶к\PKJMF7om/@ta2@]DlCјeǦH+e[^T[TOuFA .bDZMx)n )ưJ - ⷢ=hDY[W=`= ɒ>ɶhw/VbS&Fwx;gWj٣kfթNx1"@:{`m=nL{ -]-˂$˸'w}ZG'><-Cb--|w\u<'D[}繎z[)egȆ5ICS BeXQǽ+Nԛ|Pً[{ssn ,=)ݧՔq&Z,A+O.],*> AvIg.<o1Y 7 "=F,9^(CCL 8xxd;/HaB0GKM9!*w? RJ3J6p~ |߭st5oRӡXmhd97ߐַdGLmt* En{oA (uBƎnw;H7\& yT./ْL<#5*mǪA~|n?7"/gaswP-\p;%.YrطvV̅ܛFP4mdJ¬3SKSFYM1OsϴQD&qN')8k0#8eaTW ),?RltĘQ"M!'BW}o 8eL9]+`ҁ.]tNz$+A'XI!y7ADm2ʘO/,ۙ0xO KnXǐ7Z?pSˡumTﻪdQ3LQs$ՉQ%+xt!kѶ+{ MNmxUok.*U{B/YӋ<2|6bl{-XؚΌR 4l{ɡ^mtG'3O}YC*âVm!9}͓SiCJrðKg>j ?y.GQ:S-؁֏Т&L._2͝f6< S +_tfXde{J'q!}Ezl*oHy|YN6<ۅ+Zq;l:7 =KџuLb}і}88aG2z+ЕդX1n/ykHo/4쐫%OQ*ow@`CL+6`2ßéK?S\\zA)?s V`,=Û/-45?sk%j >6!V|=bί쏡0jj<%PUeh }ψJh/ge.֥F6uyߟ>sMPn|DcSFᵣr6 זF1#"|m8/ssE3 ֡ӕyʱ-EYuB<Ј+']IP}GKУbtDqXnR"y<w˖}~9B~k]kszyOIJQ"T"* R)ŞY7l l!0 ۍ}n2I-i+٘B|yOU3?Vg/]Opۊנh59)Nx iT3Gn|Y0*CO}G;aM5v=o5}ym:^Rw7۽q3qĕ'y]]5֭l*rV/.a)TrSl3r3=Ĉ7?EQ\S9uMe7 $8:t'!&g_h\*8Jݩ"K OV} S[`L+;79Mv>%*I[-T42[^EC{:nWc!3JapϦ($hQD+?5p}qd} |V]+6EH[D&ݍz?M endstream endobj 272 0 obj << /Length1 1464 /Length2 6787 /Length3 0 /Length 7771 /Filter /FlateDecode >> stream xڍvT>e4l4()5ƀ` HRJ+"%4Hҩ H7}sy;z~LEU]Q.0-# ) d $㳀ca>+B*] `ps3D!z@$,U _(PwPHO{`p @`yyY@U B@CxQP8 7=0q@1O vW1@3 s 4 `p?`s&q7 C04w6\hClϫ3W"8w0 E!| `8 0A C po w)';?({b(+ 5(~էGà[V/$*cG#nt5A0w( dA@/"|n8 0 A`@ Oÿw0 b.0w8Ov sc<  riwsM5t̄ۤ bE%d ,!-oq@'. &AO0Bt  #{{4;_Yw=Z޿{iǩCn.j c ap[u1d"ݽD<j@=_=#a&(?g( ˆ5)u \͜ FCv@,7ߺ!Q\G/ B~SZ( H?o@J({q1h 'B(CZ?jQk`P$ zgUlkÊc|k֏EfSJt9Q #O+*3ح7ıiMgNfךSFmtsZ^ZEzҪǗ/GiRHwإT]>;3fRF}DȒq'DQ! ã1ڼKNTa@}"ݢDDs 6^;fCױjzLEO%?9hO. ʽR%Zw_J0юx~!Rq_z}t{z;QN[_zLV6aY&>BUQ!>L KF%W8)amx8P@.7=!MD5MDϱ. Cc! d:8/1|OO^E֝#Aq!'s2&qҵsXOHw޹oNdsZ !:PՇkԋ jv︥ʔ ~zQJP .q Z)TJ+sobչ-]REzS^l[CIEQcg}1SI$Gj,vnR䛹AōK NnKO}X.YJe~v6v0?fu)X7|DFԐ6md*k#{[el݂GދEՙA"Vd@<=by@UsַyjR-Z膧p\ N2 ئ:lnIר4K)I&X,.a$ˇU^#[# UZv$ |k āUS$Q!SWCErϧH?7Lּ4~jqoؼ Rn]tB)hFuK=aÃ=1i'S]ESK>u|};DY,~e;S9I۞A~;IhA~)I.ӣ)BKlDžAXa#Ӌn8~=zg7Xun?dTUD+yy>Y/u8ng/{y.٨]BrZBիM)d>9!ٴvsz$N > Gtݴr&JQ[HJ`{uWZg3ۄNG)Tτry!6&gUay[^ã(>n묻t;V, ޻Ĭ 8I~Ie6:+PI$~R{!i|0O ,88CMJ-HwufguO-f#ʺ^5~ZA)uD[]d*]Jk  (fNHM=ݘ͗\}u^# JZ;?c-@&6͗iOf/39ڕ~憙G[i:ȨVoGm^)"E? ¦SiW.B_H ʋe֔W׶o9UY"MY8lQܶؤYHka]/.$5ov}^/ į] :ϑ.vNW%?!N/_nidUebkM'ڢ2+EQػ}^׃^l[~@4Ά7z8uk {=iݵ[  ZFԀ1[v,<ĬbUUu3|DUvc K-+ܽtbLK0D}n3uͣ| !w ML4FV h,|zl9AM(.y}^)]P8WSoK+Xz&e/8[54E ލ窣H-^53 z`AN9JegKr^ cLm؞-6"}G(ǤF1??QL^`N%D O-_'׸SkN 8 wv( svE:|Gݗ3>c]q)WHtҳ2Z;%;7*5s?%luhnMwe) GR k~#SxzrUt()uلY}qʆ3pn3z3(;c'!5ɒ- eO]mbGoJo0IbF.>|^ߴt9hm|b˔wTdicTE1\SO_z8^|"<88|xu^ 0ݼi1KASh|!\;m-W e Pv-N?-bP֒;Ke퓁Gb~fKqѪ9R%)ZDәv[mlj7lY[!f/G_g4(P.X<~BNI'5Qŷb)?7 Tp7ݺ^_'DWt4AQi7Z] >vtg?g}xY]V2sӥzB=8d:vM2dTZnWϙ$3!lbRrII܍Y|&SK evBHlC۵p^'RI:'uMƝx kX[wgوb!J|Z[KXz-)J[4Ca-GG(Aisomi79 tB΍¯ڿef1Wzv|nOnv^7Z˖j77%:5ơeoz!=!G+l?ˮ5iDB,2Bm7P2sMjokmlA;i1+3Vd܋y2bZ^x)=iufXvShߨʌ7KxQl m F=#*|c`NJt6rPo nX!^>JxK$?_q|YyW{OVvl#>ĕ 銙f^1!PkXWw6y}5xG+p*eq[ɉiO<^c(sS?GOnnxF:v83 )!KMT\B:k֖bRy6s>.wJ> aM!Ol2vwx1ǂvce RϾdppksc+ ]>3 Qy]6 cx/f{E  G;1n¯w1dOYwS Rkzmqa-Ce|a~ƻ{V+{_d˽SdK6n|*v.VHNZ1o*h6i 4A*dNq7 vr^u 9'e'oŽk>=[ C.$}FK,t2p xYK._W'wC6yQ:ǽ~9ynSOX2&sжH1{?!?ф"DoFQ{ K"l?B z>EF1?a47lL_Wc$R :Hz R#B/%s|ǀu㱵:T>.GW+nkVzt}|1'[Q#¥Q좽▗ h_} 3^'ǦA)\fZ=ucTYIR%fR\7Kx+D?ޮdQ6D\\=qۨ[UQ@fnO<ޭ3 uMj'Oy5.8zI$aLrA4bZvTkd.x?~L 0x39sZPbs9qƆ9oY}̗ }{B"jXrHz[=%j%;1yȅjAa&? Rڪܯ P Z%#5rj"r4Gd l?kQWQ}kKĔouD_:L1KK_Wz%ϜaG;=V>.'Q3$G3O1UñFތ IzMלlSzn:2_Ki:+AGӧ2FI\B{|m7+ endstream endobj 274 0 obj << /Length1 1961 /Length2 12563 /Length3 0 /Length 13772 /Filter /FlateDecode >> stream xڍP n54\wwii![kp $efΙսUkVS)1$@&^*7RlKD rr^ d~.6  eaމ nji P`ہ(<,-oY1yxt؂,M F` [F#%?!h-`^ff777&#[g&{'sAZ% r9L(ق$ƄD PtKfov3r6& ;7;S-7@MFX/d?`fi(I3 #;? l\,m , )0zv&N`g&gK?2%LmmAv`g?tmw .v. X. X0\O[>^7 K3+vrx[ Z sK;Af;YtY`lxcgsD?(iIo;p|7Ojc'=/ og_ -3(ڿ1@p}?.f(/ctSKGkdki6Bm/G_K2tZfؙ}Β SeK_);[q,,Gk&oW[TVSJؙ؛s#''#ƿ!m9MA5x0wBf?D".n?mFlf;Yo`6E1E1]X_`  [Mf62~o,IFMp,o<߈; z[tfپ~Mlg2#G-|-NoLh9 9jqZ෰7.o]b ozS'/3&.Not^o_r \7lUZȍqwB`rc -Ov4dڪum k%gu-*OӻH?p&'A$fT~v n씥qtFSúsr/] YU٫C~*aֈ (5Μ'3 a]bfO#Exl{:w| '"U\4u}|6 hO㹫ztpa@E9KC -"`[DǞy".sl̠`dUfwi>]ɷܣ?k]SӽKU6O"hLQ`ط4W 4"{2cҫ|*xڝ QkW"8oNhd\E% ՚۽bݡӨn{$3t9KGmB h'Tn6\BÊMJ44@5Ô2Uvx<(rr Knފ6tHfAG̒ kO9O-%xuQ~Z7I7bJ!HV-h ۡsB#I"xmFw!l4_o' f|Gl[lC*Jqٴ @%eTs:, bAҁZ=/ u٦dgX.|#nB&yqwo bolˉ_K+(=loF3͂%o?>EG;87iEs:2~V@>z]Z'0\8˨I˸|%78eːqՄKMS78a̳:>MM`3t@Cg/ߏu@D)ۇ}M,'tNƈT5̭>N@~cCpd^-l54*mCJ1Վ{Bp\tWu `Bq|$-p QKV}BKB(i2xN8ߊ!n֝!eEYgpL?JE+3;Q]pE*߄^J 7!WXM3,DJ/~V"jY۩G $+5Tb$C2. [j̫F4q4׌%LF{r! vdj.ߗ=V o' >xR- u6⛰YSͶAa@ѥ8d=Oű>#0~z~am~;bnMEY}5e_fk;/M(¨޶7mRxgڜ/BH C(Ǩ# iT0bz$w U 2^\DGzb+O.iy{pZGD^7/7˻b+NqM2@mK6q&>sI|oM_UxmOUD iΎ*38(ߨ'Ld#gɼw' 呧..̊{Lՠ)"I2.t{ ģ =iKE KF`F,A3ULL3|l=rzurm Y#*u<6s`Pމ6&BNSճqyi/,wլd!&*r``'քԢԦ> 3T8yMCa=lq-?]|tޏFTqVbCU.rJG]zb`7.nF6 Oe\sV3dSՏА0"j:.#z4{ bh 8&U74g]nM8cM.[?Poޫ\# Cp4SS^}:%N0ۙ8^8 ` wn-z&\T:i-Gn;D{̭%Nإ }; Cӑg&b2h*TSd{,]EGNE?1YyMK0VM;Fvo)mPk~ ]WoMD>>sXߴbQ4'H(kPuݗꐡHܯ &~Yȃv(W'$t/О44YЩNhX} N+^̌C6?:ZA|q ҕ$w4ݜv;H[ })kFqieӈj2 J.}ꍝ@бL/  Vq%4dOd)MF6:֋QĦߩ-EJ{RSSB6R1kY9o`h>zfziՀK/2x%aT.>T[wKXNVp(EX_R-Z臣ʖ޹ldfGUEXٴa'% Bg!l^F m ;q̜U%yk BY*w t)sz4H ط\or^~G0K11SeJ"[-vQi{< }ҋ%"k謾m{jCT z!P) 3&4T5Jde"Ehsży89.cE&*\mƀ5Z-u^Ofm@^B(Tb2b#/TBA` &<@7VLZ} L ڊ}!Cy䧒2*_%DlKWܐVM-)Z)_߯s${<tB DS|Tsn *l\x\ur͖ 茫 FA%؅>Ziw5͂?OxDM( yO:|:Gk?UoRzjDYNpv&@# @l :Y SK.ăB>vyL)~Y^Ӓ2qLǂ[d1枧fe(/6 .d_ i~`'#mkY)]Go;mX t=_jW ͛q.ۜ%'J9'%Ǩ4*ll@^M! {UB9}M:/u']);yfp[5>y#n P )r^'bwwjӗ ,FH==U=lzyz bPʰ_=rC\]Z~>@Tf_&8 ܑ8쪴䐫t9 ~͆t;ݩHǓYgpH<SоJ)t>]v!qX)Jt'hD*u(* 4LbfM:>-J\غZZ.vyF©11VFP{ :nÏ[u;ɞs!.n(O!n!ݟeM2U٘&2 XW ¹W^ BqG$ŝ@SRXze'"N-ߵ]m|چҲ'3A-諟%BjoųW1wm#yYcV'dI|7ǏUJI|9yqQKBBN^yVv ΣpAfט.<"iggIM|<}$^q;8OY v`LZsǎZۤI1OGyjֺN^ӍHؘ##];m~-j.J_q-T"@ϑNhl>)){+'{}=ޏ1ִeI~y!e8zAX.QTJHS v$ \`ҸzH_u6aد'+e1HM -Yͮ#.%=߅Hby5"<72</d)>Van"uLc9NœyJJwiK Q}<.yهE3m -WQdcolyGym*UcPm/+D2[LU0 HByVTV?L<K>}:k9K!|vW~7 wh^!o''E-#pVt^KCsEO-A?H9.y,]Ti}.QQBn eB/S:\֒ vgCBnh K۬VEh[;x+ Di#}OSUl?0`]QK`4}aDŽ4F ׻jڏ!kH6}Ib1v*7p%b[F337_fyHDhoeH-|>⽾.Q}Pzsa(lOv[*03quL꛷p=j!})B ZٟaD?0:p1IffeD&-3-6| ElD_\К&w:e9M?zOgjyNML[ӸsHԯl:3pK/~< VYsN ӴL~:oǹhT*y>Nw}G'~%mm.B m9 ƍYFP qq+QȢUoN[1Xb"_J*3f~NZvwr<2TY2Vq- %^(l-;"/'|"Jn,i!Hn$zh? s˗ZvL/(($T~saϩ"1Tiht7?3poP4IHpDol66EY+A)K74i ɦޒ>$KR:,TI)T,AC t&Ƚs3]4 " cW}"NDe,HS@pEMwkp_zpw*豛#<}+eUɐ^#/oX츨_ ڈT?n_jJnYIyR_|bq('x1ׁjKrw؍R^atd96jX#3cDC =ß;,jB6qW-5z9R,ܖE[ˆUFP2RP)טR_n᣷~B%5b:W AP 6K0.HGr?Q/ ܪa[ ǺM;vvJX찔*XWl΁qॕ*3Q(yAE%TVGr=1T r2v,]s `5I wP,Z̬$6#[m׶3y^:^ǜyL|P~ukg#e.[ǡJ[ED{ ' ԊLq.Nԭ<^yoq?Y[$+2$4z.%bOLmNI-<e*[))bz7>~S K0dnU&rksbWQΡ,9R31lI]NcD~jd o{ƬMmYnp!% s= W#2SW67 5:=Car' T aSIl8TG39^pC~{ V!wa6)_EԵK6l'n~#~}@ T-`GOITCXs {5[/hmo%%~2*QfrWy@bh zNyzvW_ [C"ѯ3Uj5?oXYը ^!ƮC p4h_]610=^;ܦhlpnȪ}̚`Th\(xj\ sm{4Kxjq`6E h/vhsIH'pTy}Xjن4WhY;Z+p5y#ᯰVR.K-URGy6s&ϳs]w^ /q\50F H=Vc5ϒ%ezG~;INĬ~wyI0^bbA|}K;3)W8V4&mߴ\WȇeUx [%*\Q߭4"Ԍk-JyONm)8 A.kaQ|XH^ΆC]?qt bgA n/q>봮gbŞZV([ gM`Z3PZ-TOߑs"AfTҠ9w $cmeN_?[?NaD*>O|bs6k: i" Y]!: JڃCfqofg ?NMx9fF@ ăd\:sТ]_y}p)3 Q7nD9ov/<9{?rLmwej:S1SMJ۾kAEmkk>Ɔ\'BkqS;2^xۓQԃfxT%f2~u:,)T% *Jūj'jV,st%/]^qy_nG:58 f vFYBa⭕_9!Y i TkxieaLk#jkL.'>#9a\z&{5F\݊G0\=8}!]aMoy|h-eK_^F57hAʸ2-ai9"quI!V>Ki7^⮗ ~$sibbS$~5k%x'nJss4DD=5[͘7m\ -&Xe_Y EXS$wor>JaT"~8ب험_!0=\67]0֧2_2r#B>^S6jg'Kh@An@9OXl,?MO1 endstream endobj 276 0 obj << /Length1 1696 /Length2 10382 /Length3 0 /Length 11465 /Filter /FlateDecode >> stream xڍPm-! [ 23xp;w= Ov{kt~o dJ* "c$ Wca03123"SR#S@0?b@# Q|rX8yYx<"ByF S<# t@غڃ-_@mB`3 bF@&F _)-my\\\l!4@wh`d5FdJ/ x1XL`')R"#P"E}9F;D F&&[#+l0YrPGz%dmdBFIdG?Ҽ\T bc;: q>q=]v2MhɖI sʈy1!ftp033spv Ă?,_zt^z̀/_F@F,,S#h#'h~= a~ Ͽ^f [爙DeTnNQQ ```^<;Ͽo_iU2}dA<5r{joeP64y3@2s0a^?CGDN"F6 k׿/zvr| yˆk偦 '8E <A (T hb5 0P ``afXZ^& X]Vl1cY98FF/xAwU5BT8 q|  0#1W.'I߈ `R70LX^T|c`| |Il?ELB@Vl_t1㥶?Km8r5'{wԟ2?_@ h41oy°;ʎ6pQcGyﳯ[nH #֢F+M|f+ɡKumǒ=&XvvjMϚ\~ ]ΥHl.8Cj8fDE fCoIkp)<~N6ck`5h3!ϴCNbYI N}6jcQ! tKt:Ƞ[9zL:*}|,nێ|U5ޠ4{o505^˃+GFXo(g-}Bj~,T +eJ"Ey&bXB4-oźGAHToW@{wz*b!zޡ%*4a|0 iF#@=b[tmDei -kyO Ej5hsY3 jZ^lX*?`m5ty\z~)7C#nNWiF GgO"f~=iي%{r\!)J>-lGKم[l8|lM}xU3krg(|FV |T ǏT -Dt C(a=Km"s>/a5w ɶ!4v1=S=P]^G~rbi-+[,8w7<&VK IAYl2O{PQ4 յjp`CG굷o x6Sz~ruNw0 'GG9 RC[Tka/I?w97R>3^\<ڰDiEjYNOw<2PMyĺLZOOi圔M}@tt؃ FZ<>Y2T=ewYJ`0L[`:u81U$m\Ƈ) oT-g9RFL.9cA_.32[8uFiw_(6%IDU-U.*=R* Z$B;'2dV}Q**l8f[S( E:-!0Opޝ>b twȀ܌a)M(=$[Lkܷ-uQjhs)_ ohVRX Z#D$Q~-a_EUЎ5'bf*p,4 1+-l:2]* B0}lwJywF؏b-VGM7~4jÁa

w'/kUT5>bpa8ЬzpO/;=)rپ @ChTٔfhrbf¹k@wƱ?'e["قxcͅW&Iրlz궶Kֺ ^ `jZ ;k])XV&OER|)'Պ[6l(va\߬pr2 Ƀ?QC?NJKWyDD}JB %h綽@"D,NSLe{A G@/BА |-ONv;NmZW PIAs+sjt1wOG1dW<\rĹֆQ K$9ڻ1а=:Y׿"XYqpIv =]JM}L$h֯U;lNO5WFq(x8x~ n~w+oGxsБJ<ҤЉn1iğFz{`&l/%A >Cu#Yǚ.ߊTaE-SaCkb {`2n*Rlc@eHzu<L&j18Xu\ё|ќ%bB*p~QXKX zZ˲ IW <guo!(V1N ۠tda O&j{6R.p(nThoSd)IU!JYh=_֘˔b#oex/ݗ.ld|5-Tdd?Bj)b墨.qM;Q}Ȟ3IR}bTon~{%ٱMAfAӅoiEph) Ro0+ 4ÌdUfgPBY*M<`F5EDs'ѓ v/ŒtTs`d6K Kig_ TǓG'fPIS?%8]ΦA?Acض%!ugݐ^1+{SUmI45t&EoDg;L:wFE#Nd <XrcQ%Xa(ij磰wnE'h~n%U;j9cy¹([N:XϺ?]jѶ&w|,Ki ;q(ȴ(t|q)>K1QnkBS_N"(gBNf iTD/EZؽze검埃x;Gp86'7uwFXFa,E9ˣ;Y?]!Nr.W.jD^`gتexUTEDAVl\SC3Wr֋l29Tw]/9n B}=N{/M5Wğql\oDR*ż_޿vxZS;L}Rg0C(1.$7A5:ٓR.`=Z]cmBYSBщa8f]V#|N14Qs;\KӽdNi~=/~7OYu^_r(#:*s)7T/~bS!h\ mJ&iDSKk*(C kvVGY $=R%b>x:&6f8LF{L 1%;f5֖XpMܠa/u[>Wlɗ/Mb7P^>(mrG׶{N:DhHrE}Ee4d䬶X`{Gfۿ;c+:f, rԮZn2[9Mr!o'V`;,2p`+VL΂Wo0䉩1;#ǹN7B51I THxMt\˟ 0 D FeeQ0%au)[R,M;PQ̆0>b7 { tOXgvQTj^1W>LW{G6)2I\`7.KrwJ]㧧OQIA޻v]U\P26njF4a")Us1x%aɨn+fj|OqVYaSd'/ӂX7>e`M~D̚u֯Z{75[g/2~ z)~(cnsCk7\)ρbbJ{ǰ#(ðϣ"k{y{,n]xoǍN߸ Sx%m (+ek8 'fhvl`w1-P[+d*K˷eFOĩs |QOb尿ivqݟ~\ 9rp ,я$;WPs<ߙu=fS(͡o>d+@+;ˀmYvg$ҋuu^S1{@4ιz<'zF,gң&?]yf/ (X^ [@z.# 'ك=UB֤t4'-Az0m f[S6+0;mdt?75p|D ja|8IܜTD1lULhET̺Nl!y*ǤaEM!͙/ꘜOWlV":*SI} GDoóvSo?A0mbȐuutYaP!^iXCX%/\t%sʹ/X,zh@݉w]F*=\]€s9\If+ noQ3?Fc3%_hSVTeGܯ*ףSW{+9;*]v_\Z>1#lx!{]u/N;9CWݎ0KgόJ)2}I/ HbQH#?UA '#ǣjTY_Aiu vhUt8S2Y돿fyhd'4g99K"q 维_WS;?Ș.X?ooxS8 ÊbSyXX JhPC/'"jp'8cdZ΅}8UA[knNget'p8Hlfje]V']GS;FuXR~%UcX$%&c|6ҽ;_t?0ž_)ɺT~3X=r蟔{E x^!KɌ9X"$CbvcLJig]t[(dbwȽ5P*Cw`"e?<>aJ)ۚ7/b[ְͭϣ%bE<:p 6P>{f%ekC8=ށ PA4pU^^e M.Wm^1%Ak)>?ɴ*|N,f3ݾ[X?͋,=w] ɗںm6d'i$[g#~󓾹bo?}72AA w.q`N@21e kyUSoÝ~<e-1>7^ :mvuεP &+jZfMe%[3Z`蜾avt^\q"Z-c6['cU~~VkbxԌ؈npQS﫾H iՅI~!{3Iz$(pҥe>aJ{s@amti"cZ*e}Lo6oBuۥBi~dp$(9p5J~w!ky 㸆˙%kJݝ˷2m=kT H@huHK[ oR̵OUvneG%<\[ -l(:uM3%ƃvZAɔb..$eo"N̶ lV,gKqBSlwCfN;M(Sfw:$R}FH 7&\*Llr9t;Y%g"+ ɇj&1''2c+fU?$jwHu')|^nbZIvfV!+YaP-&记H- !M0OwtVUD0Ol_pN=H*~+}ӏoO/*c#3;ZnN֋/aТ7}Ґg"]EBkFrJ ~T)>bqG]aN隿>`'M8oAc^:Zz5ZҴ-هֲm%o˗Syn*ĽӌMЩޱDik_a䦼LGͤi(B;6HB٫FFmERƟKcϛORTqN¾c$L$#*]M91lt\hQ?-οQoua~ݲK)_nrID2gK̶Q;Huh9[5_ ;M>{Zĝy7gLLQ8&<Ś&T6,? m uh+a3B؃o1926d,Wt05֤*t04x S0SM:t>d'v7{ҕ1Ǘq& 5gA8bOK䭹N6xnؔSw<+@ࢿTc00qa92/)J7R!w(;޷N^W ;C DNa1? n6vjdC:a87AI>^ -9󜇵܄Q\DqϘzB_Y1*u"Q6AXYYBq=1KlnDƅϱ*cė%;Ȁ3嶈.'5GCnx/$|h O[\}ʩo$Z'[Y|q}~XŅiߔfvzYJ{m j]rU(CI5 )[<9nӕ&\M0tE~a_Ӱ1FgKBo'5ku褰Toc63nzV/zdhj`<8Yi3U ހN-y z{FZ-(?\'b}v)YdĝY=q|4kT]l)Ilbk;f%[ XR~woN:hY _(BA~/T˖ 2M2%2?=ZX" W(y/YeS$ =9;NFò[EC~M ponbiy Q"K8F[?m%R6O3ֈ(_.ULi2z0g^I[iègf0wh{` myxX5[Uw^rضeλtMHHwd{g[1}-:M5)&u!F;bu@BEqEyw1 כ7x O|}ۋ6B͗߷[ H~ z2ߒ|VOgk= uV i ZWߧ|Dbwޜo|,6ZL‹m~7>t-E|/ +}5K1ϖm2X }`j˜Kk!!k|U~27C7x@VHuYylV-d$3|u=3 5\24s}i#x(uDEs;D]CTžB;rTߏ:T<'-,Ϣ1٦ӹ]8l^w/v0pTCMCnp>O xRbtȎ)eY卤nYZ?~ BLW>LMhzZEϓ' A=v%;)ovym:!> .WKAOv>e ~K|jqW'ǏM{Iד;XIW0kc+G0 Wzg`@5:P`s#SL={ <>ALb6#E3?-#Ve(;O|LZz:Qz~Z_̎TX- ݆/3fϮy-ŋƓ^e$h-%W|ke\J]M~/_ G!\E#lO\_|oiCh?B,HFgg2!AoT6JmQ?p3řD=tb0dO"yezc34Gl6prD<񞬮yōh%3Hˌja02JrtOMz=8D%G ٛZ Iӌt#}es(Cދ endstream endobj 278 0 obj << /Length1 2555 /Length2 16407 /Length3 0 /Length 17900 /Filter /FlateDecode >> stream xڌeT4xZXpwww]wm*u}3?f>>rBF$H+hdcvecK+J))12Ȕ-NTf6\;d" Uik%`b`=@D M: غٛ:"#N9@ hofo w4Z"[m ̀nもіŅNʁބbh P:흁Fߴ2VL>R1vtѷ@K3Ch(JHdm+K@OytoGfX[Y,Y1):GWGoE}KHb}0t07uts0͒PEm֎p1*FO-m\=`c3k#Tl镭윀"LVPcv) JnA<i_QP?BB6Z&-33_G'96pT2qxPg{(A4@ş-b`e0b o/?$diU_Vfn #hIm@bUU4J8ꃖE4t,l\Frf `if q0}h۔@hhd@MZ*jmhc{Xnp Qcbex0VהmA&C/=ֲFz?@/qEA z? @/HA /2ȋ?Eb+Az?@V@TA bE׷MRF&Pf[؂ J^h 4v?⿇cƿ@dG @0bX+?l~O F6eodگ? * Jc{:7U (S?ycfk Hf/_3AP)dl{ gB?XAAJNVo/m$ i/+FFQ?Ǡ/Ti- XӃFOX@Et  MO,6@#5$WAeww0(?bzGS{:b/?S 5_T?ȩ (۟$A@Cufd_)BVwNfީ'4E4oQ1%MN6}my.o罕{n S3qej'3>SUدȂӋ` /$)U=DHfM[Jǧgs`^m):! S*f!~2\D1Z} ;DV HЛbP-[fGJ[r[?#$; V$Vq7Q D~o#ۑ'QmV`#aW-UQ9P]dN^$9.8oa.H6B.pcnq xJKg{ysB.^Zp[chV C-+P*יrHG6IȆ_oaa)}t"MNgAbx=c'" )Ep7zIl‚ckkx[峛R ][r@ң4RtfJlF&Y^l E;E 4}o'uj;2w۝B%Pu`WߨSS}I3ltqFu`QaX]@aCYJm^AQF}WE? ͫ7ӏ5@ƟPB݁ C݉tf1%i~g{%eoW2]mxͯ彬0š$y`Z]VHsF??~ohTb 䤡: "ĕӷ=MY·w S6>L=+ƱiطT~˔v}*4~S(#!9HCA|6` qaZPɽ{Tɺ)oȇfKD$NR:%oI>#cF (m׺O.9_7SeW:J\2Ii Y(afp}b bPU4GmH_SDə/nJ7@y!ߠdpexr%!x}jug~ʷAޘsN~٤־ear$?Xycp@iiۍ&3ٻ7%Yu\~a% FYSӟ\N9̠eBW$HY@&mXv%|TFkŧ (n•.IyJ: #}Cr*%$ ufu;JpX>w19v>oH L8:f;-u`X(K9*k3,ЉS҉d:ƃ?ꭿ`7a >a+Ne&,F!gHu.'S*lbg׻%P pI_Oe( ߽Kcp;+J2{S*oB-?rx&<dl&k<ܣK靧na醜˹<\OgU ֩DL/mģqt6%1ݽ9|N[2Z)WARgf4(]ek:g'kQz ^ Vbbe^CB[/(ҲZVYBVҐdW&AˉVR[?a|瑎u'q[ yu4֗z.^"?>֠2"R0b&0fO~WcSUp_$Ko8* 痛_k5ϸg-NcPeOtgfE_'V3p*,m~V\99O9\sI9Sa:>؁.lHtCJA~jXxf!b6*[NiTީ7 M@dP6"1A|9rs#93϶3Qf=!4Kz3bxnЛF}^OXRY5%mqp#t!r{~ޱvĆv玶#Qbpl񰳤Wd!~!C_J-1z;SdF~L4Oz)1ė\ῲ5yjjq[ҡïCz`~IR@z?:ͺ h9Be1]sx4ղ#7(InK^ōbE|qپlB.͠LƟ850{)/|~U1Bu좼#|J. .;3;*sx*~ enEKX$=黤%+ݲ܁"ت?X>wQ*ӮCMw'hPȞHZ*}1Tȫm#~[8<·/kԱ\bG'+x`;~r hgn$Y؏yPxk'V*Oڠ@1NlUKAէ{'婃4vyp_`@\V}w/" |0heQEcdO6F=οO j9gs ]$PJ߂;tJ+_ k~7|rBE+-^ fYK{9VC7# Vdqf}N8o2 $d)gkC Of6bxKz!v+{CӠzBLLT^Gn~o9[i"~GC&C8ZMJ!f$4!=DK0PЕY|.-KgPZvFNa5l*5)[Hh>Α}oS5n&N–)wate*~IR߮kx}ˍ V7 82p[E¢_?u}L?a.8ss׹Z yDoNS pSck4ﳵdNELsЕnxr~^li Y zβX5ȡ0?'峼woʩ-\~)7:3[ <3+N58{I]H1} ~&;?a-/ǡxӛ5&Mu[7kL[$"Qkqu=a`1'HEkrڊC< L~ץ\&0 iц9O,(.wi :g8eeze{0vtbY 0w 469pĴ BD8_' GGBw44ܹ.\@W@sEy֫Nbb#i7&3d-oSm$&uYU>([*% |߭=u_fLKO!z"aw/S{uq?݊0q;y/U8!ѢE B{ ؊3Gf:FB2GO\.kG5# ^BZSu6ix.pv;b޺Nx^21]b ᫊{h%JSq*.5DjZj~ݽaI{U!b^+1d:#a΃~[Rzv٠eEo˹_ER܁?fng61P\s~TEx*\y)5ޑSoPT܃!$kMH_k+U`~X`EGP?% \rUpd܇ Ɏ:./<}hOLc>8ٲ\F[ LQ-#cBY}=$ ( w%Y]ܥ(AҚPx~ 3^C;e[z0H%s*Vyzؔ蜍P{pzYs?]Er>~XV9Ѩqc q;$-sD[4ϭd$Qa2홂bgSx{k X=ޅD2\"s&j}~qb݆djOMq+րSY"5k(dudݗjE,2d[ܘҜk!\g>q:{֖ۙ8~pt ZM[3U]efK%`I\-䇥VvAkm {zo$[?aZy,]j e Ȗ~ZC#@M6ُ9br!;^͌|(6G\tkkth&7 ^>܀AgO1Z$^φWN3S[5y Y[0yoh('L"Ebf8pǚb ፌN*80LP,2`*죉t:%$5' <;Ӎ`s_ϛ]~bq@[^H6NM36o^|Y6_M9-Hac\($bi_x dbn0 飶cW6m?a$:DR3+ʘsK DZgЬUtL:_9z^ReXXyVomĨ9 PI˞ߊH_Ь+foE㜛˟N+ud_G%<\Ñar)+[nר||KJz;.1} k҆U [9_+bѬчsV^G4$3H2ٙ 5T* BH/ [o%Nː@YFiq$Wok?9=ŃA/o-ͻ~Jq9~}öcUL>dY'i)Sj ҾpH42C!{ uޡK!\9].s}HT&8Du԰1…ksC 44:kVrC_v:߾bUotأQaï|rCYsZ0 m6LI(ǁl:0l؍wKNq e_oKrmkHr&^C=O[F`%p0O_# M Bx[`㆏zF_ߌd?g-A7dng!  "vݘ/z Sn}󀮭oWCv{wsMY CI$:S)z_7ÞOV1C&^TTK5q8fK(RY@LxD%p6[8̣|}T trifNr#GPe; CݍZ+LT 7B7-x4(5G[k?W3h򫣡H 7ЏT5j͑bls.J/x8>GPz5+ҲR6o9lҦWbL zRL$lԽ=ӌ6Z(M@ދ/BS "J,t$=}:,yF`uPb)$FrufU5% p1۞(S|?`92Ƙ7hgRGfHԯiB'r`T:Ɓ:_otVwL?bpfE&+ufyA0bF|0 Gș0bd(ao@'pƑ EtnA~uX~Ol/H/m6E_cuB\5{-KXN0JNDÃEm)\2^bVP*G1>m2S2jH\w=rIbZ$b“qS+Ն#I{.6)ʚƬC_Y.TŹ M)OF˲CR,=+4=ͤ$?󘨾ׇ1gLp̛< Wɔ7-QKMv, PcƜ$ ]2g{ I`0%qKr8Z9X$^ 5x^oky"7_AMcy ޚӒ88lb6Ȅ?Ɨ3]m)rmוdf,WߋS@7e|HFϠq%bi,Ng⤆g tQ vke8LEyjf1'4yNKH.+`0-/%^jץZ >.=#'WŦ(LV)FpUL1dim:OXw|ڠ:?䊽;eV<{'؏Ƹ2 J>ӏ߉x tq[5߉B *5V lUQ\e+~0>W( aA ^#>Ԫ i8VhCDghk) HJvaZvY r/^Bl$~U$#lͫNm΄Rc.4^ !Q 3n':f"8jot;jda_f_XW(-~EZ i~# G*zU<&A#@VM,6eg.`L/Gnb4$⑫ʨ5TOrEX<0~e'Ep%q@/-oGG WW؞Cm %F)#NXLs+$ P sD ֭93܄^k:?CuhHe^+>uUob ]s8c;Q4j u>s 37[LKvx,!V^dW:tMkva* }D2;/Vzdf?r~]kO9{D a9MfO`x0UN+a+֜kV䏝az (TN Gxq6wYl|IƄnur_K, *T2.!<䙎Zm )("`7+ S0OS7xv,n,'A $u 'ϐ СMy *Ǎs1\L(w (ť,ڊmL9 ,JFbbuCYFeqþQ-TClol[6_#G\jy5A]2lH ȼwg'ESv!yf,.5_WTa%+;$TO eo3?8##A^YIF]wAVgmz]CJ}v컛bT:zeyx=S.ԜU][?))4.XQgR)nrEDFG }_]}EƉ%Sr^_+>qLL#BB̵c `ב=PNGq-Tf4At`))MUP¾Au-RVĬx#;NO\{e#ZBtܛgYcY8v >MX: 4> 8dL4NxU(:Atۦ)ό\RuQ6 ?u*IFI7>肃;k7?u\Jy](C AH{b#HC9lA(}h,w &dYn?6r ֢Ǻ,g?SBUQhF֪ǾUM&Q4xc-Sܯ~\/`ʟF5)|X &td`/:YLJ'.sZIRG+^{,9pN Pr1zSRgvɁ^6r+#ᨭ[JD+n玣>b},e9MA4Gɮ=9i3C,|AK#7&3@3 ̥:VxO5e DWN_JA}$e>DT U4pK}xs/"tv>\eIR$LZKSd=S|"/&fB+(^))d\䀣lOR#"|_j"HpDdC?ֶC/Pq츚o$l7M0ߣ"VW=2p([0C KCҡYU; ,JaaĔ=qLr;0WG-L+d{%=ʑ H?9_1Tjq,e%)Z%bTo 57*P(M8[|wh5"47ϯYZh#`0/E:4}HADM0կQGr=#NX5IPØ"l/ݸ:~Z԰k ozWr  Wn3Ol*O'^8ɇx4lH,WZe\J z|yCq*oD;>ۦǃ6$C(6j:4vE.ZLcw;8kk}Q@wi~GEf!{.֙@0qDC8S*E=*^*T; n*dt ^Wm?lUR&ȀT]4Qp~=Z㶁'?gC iM 4 j|f)+js8ASf4N\ m ӼV9s0;Bt8LH[ٿXzV*Wt¡SE$yK1? & -V %4mhc|s3S?r 6hx8+C9/љud 5tgAt&}68J4Nj30RlMEҗBɮm`]7#YB5S -/`l}g͖0UW]]O D)isNJRe= $_o7E0'> }_V=w(YlJONz(F*qQ>2<-%op&x~tpwțʿyw>\*B}R&n#q Ho (3'Tq,*Aܼ [h R#Kw|3J(_}26()SJL0c^ akj.&)"J#o{XF6 &x8 Jr8eX[w mhdi# yY.7_("J!pdV-|W]4) rEI iqLfnr%^ͻ?Bc^Agki4e8~*tL*E32cFJtAC1ұݜ}c@ťk*X@EB1dϮpbfՁߌuZ<L9{ (<*5xH`E$Os~GE|lNe_%2/ZB`'Yf) cfyrX[ t 2 #hB sHg *Y_51cpQ(e&rg` l5֖F.qoΡKXD\=kt8Pz7#ـmNzC'c\mMxbNE3ֲᗕy SHͶAPBHԯۓgL);”NL3~ab`^m+Yf7;YTq%NEH+O!O`y DKm/XY;.A7 ߧO=Gyu;8QH\]OǾL1ӴI=/iiE;J =7M2LX ;kp: /;dY0 D")XHf{9.b͟K(1bh9U!bh3DǏu^jb&?~rF]Ȥ+s؃G3ekgWA u slaalwm$F{k34>7֪m?}@ubXwX^yLe^s{?ǾDU)0=ߐ^.͚/XQυkO>1:@\}BA~Gx"x 0/cO'+>?aM`^QvFnitֱ[|81౜휖40؆az|i|$e[~g# [_sav&fPkOM4څ q[rmԼX!3'DOz4ZFk)aE7fĖk2n݄m6UDK:dú'Op!MvU9a`l xYV %a-ȏ:o|H솈۵q|]rSqtEⓌqϫOfߍO廊sbsL&X'c9w[R,V <{aO o  Q5s8KVMo\ɾCwȱ;  >RG(z"Ñb~WᐗX޾ij)XXCսe!/S>HV.GP2ӎ֟>cn[XR'[^N^n[=;3?@wdG 7oRjoLĺ( :TVpc^c}3ۺ2>ƨ2y<+ OHez=k=RP0z*~P$j$jB!# }KYP{4D'2jsF!iF2ScqXt°x BWi"g<5r ?nBrVG|Owc$-&b~Jm^.́gbWs9蜮; \`z)Wi N8O^^7V^?6]r'Zt͋X?$Fzm]2lP$eO!-,8,rZ zsxb,yb뉢:wx:~k= V6KNQx(< o⍠g򁹎Z:_e8}h HP+0wTu0<:^IMMI&EϘ2WtޟT;TT6A{hvlp~ɂH6R0sM^K n= Pل;D? xD`r +3A5['jҭ P6 :iB9" }Yg]#V26jTtꐽ!Ŋ JF\:*M2PͺAU٩:PWI{nxQğ'f^s g=a4;]q!֠Mͺ`ŪuC=ֱOorP8ļdAƷ !kwsJ.\\ CpUp%Gj~7;D*`W#93MhpK\46:Ib(xgFV%mD~&իWPN%ٴ1Qvw%/6>RJhG "0\U!M +I's O!>Ǧ G\Ċ>4cH窓t?D{ U={ 0=6pʤ~wl1(X̦=&BiĞrniUM>2#^0lpɄ}շ/*o0k&̈;ur9#iB!ZFgu6K/98:1 v\T_wP& K7kҵgD*nmRa6G㈿؆BR|xӭoV:=y L&Rx;Cۊ{灓Y-upq~DR({)fE++31xC5-F%V0E7&_=@YI5ڴۆ_ X5JnL ^0PRp VjhT Z~ H@"'X=3 "Wrox([q4ޗ֥U: quo%)낇]%27NrW7w <_2i R&X%DseK8c֑t1$6n?-Rx&?/=3OfhG?Ai]+C(V#BkȪIftH=h-[lS!!NxEYZ ͛⊕Z8h 3;1@.L tH?J5R~˪Ãb5Yp"44\Ň*_ⶍ|%'(n\䨭N=g1dvvV ү$e{dZ!^sz!U΁5" é_'酠qY7Ɲ endstream endobj 280 0 obj << /Length1 1464 /Length2 6474 /Length3 0 /Length 7449 /Filter /FlateDecode >> stream xڍT6JI#"%=t =  13CII R44HJw#7zJqOvHN v((j h]0_}=  0!p;(TU5m7(/gx?I'W"w0A>0`s|ho4rx'8n (` ?P$ C\~a3f% GCB!Y3[p7=|0*h@;8*`m`uCP=C{B4߆K l08cPd0o0;?W̯f?Fyy7+* @LDw7Z0OsPn$€8<ޟ]A 3[D@̗ ,WoG..r0?:{1]ݳ&VU4s"rp C)üv:04/Lz@~q^l8c*(̶~wI%8aED0 !a&(" `?Ƅx=Ikb/oI\G$~?y~o_AhIRFc)u,v8hq2!ŒvuHlq9G/ZVJ.Q+f+LʜD~*ոm:ljAK4O0P5ĎŞ7Y4M[WFgGK2ђ۴ԘzPAaˋ+% a|ڼovsnè:qI6N\uߖR[9Q[D+%6ѨWhK$fSpO 9~z%>kIn)19W|nܙd^GbN7U^Z!WKR5?484d&'1`:.ȅ5Q6x$ _y/$Pj;MEÁJh Bn u3GOD2TFzSWuoz` 0 ˙<;Ak zwӀ3M͜kl{xmS_^) OU5QVŹM%a=7&0|ODXrֻEBfx8m[.͆; *%EbBPa2-M;bM_Hق69&2X(h|rҞι:2;=%rw=kNar)?zƹv*[l>)B6M7T}}To* (8K \hvxsHAh+rwsR0}fU kb"ȅ I _0-Θr(S@FkRp蝘w*"\PZ^͚^|j9I?G`ŦAr4"& nʔp~˩f 0,!ڷ{Ԝx.Y(N[gG ǘ>LK򳀇"7G9?.Ђjԣ*zը"\׃6/`2L9 Ē6A+n32Mm >\ދ<ʪк}8q`y#0KނA|5ΤZ4G@pi„u֓X9xaIQc} â!8Kq\l:AQ\Ê%|?V=.HC·/´ɴ|> F0޾+]zxrgbהXy/'6HGF}1͹aurgeݦ1A<0 |jʥ=:kgxmaU)8[ʕvT|IJÞ:t;<"dvU(y5.Qu78ٯZ59寄> &q":J$𨾙z+db\O»a&.TKer}J"̓5ڏ7 _>VnVłkv2|M2M)dx"u^~B,ָ*b_%([+O̽MAj+[tURbjʄ/BNP"/m=!KZUbWWC3Cy֊G]}BsۓZ 2M* #%G?, `aԧT/EhS!/F燘!i>Je&e?eyVKg+9y 4Oŀ6NTy:ٕcS)>Xց3MNgKs'} $) 49ʋ-~ ܲj@?⩾P̬ Cu*A|ߤ\j{&99b-u6ftЏ`H!΢/~jU5 QT3C d/'m-f񛗮K#޺w>kt.u#E 묃qju&wa~tAѺX:>PG|I tJX}'S$KH譢X=[tmivf_~en"/uҞ3 vZ`T5I8ey\^SI,ȱ!OK[]/jM!Vg];ϫ&7*3{ju.4OJYWGOl޾i(j|:N9,Ks?Zi!ig~MY1 >ﴉu.ZՊQLQrc"y,vn4ԷU -#Ɠ葁+!{Vc wv*)T~|o>P-)'ڂLTi^1{Y9ޚ%zE 83m-+^|JRZ!2Ao'aHat EӱSpRn @`'oT,J@Zc)XH" [9?h޷ڤ[KfssAM.uN݇1Q|2 .I "Rbf4 b3R )R[[ahۈ@Ӓ4bIFuL3J^- ?>Y9snK[%*L մoi+ᷥKQ WBߛZv @\*}C<[>YR}ү]*Q F$QoUQ ^?EdCA/bꁿJI*ܺ; ^'{>ww EBz1Tgp?KA>()lԠ8O5Y/6,іyp=x|hk_a+d/|sWP#b; |1Eͧt-RCr:6z$wR3 Fzq&6cUf.־hB`ƽ7ek.t++XvoH h8T&[ǒ߾5~[ SFSWmS@9ťLw|xF}E6x%qX}\i]4s7&x SaB4l\B$-#r.'51UI獍tN(8һJo II^x!M54eYs0qR'rjK+E J%)MW䈌Н3*S=\+dG[6C{M9Cc'9j'SG$L&~Vj[U"}2.xpE"P ~U-B .8٠b5qsRxe럌#*jRꄦTiwDFv}M=OK'9|Tj"k|*o6mRᖄfr5qgg+T"߉J ^/#8%#|Z~hL{'P9D $1G-_Tu&[օϞOј΀5ޥ'מtΛ2Xa&mTKw[I:1ó=j =&籣Kd#}>yeFg,tT..iUߜ=7+/*}Xk;Ker+Xggy@c,(iW [o&~0~?ˡ(zZr](zuזH{~?浇E<>3!7cevHi&寮kE ҰOxOˬ4xB=bJq A]; ]ICKM6)M gD_B ,-l KBl2Ǯs^j4w~>Rs)F Q%P{8,ߧr }'j?Y/Eր^#/; 7wXح׿,c2Q波?TZy^&D9 EZ`+z- ˴m{hJ>~konWo:7RUQsŸ.ܶaG%9,B_W͊'cAfX> UI艹7Q.< GDSnϏPψ 1\E iЮ3|"w9iQTC粰r;v`=V꫙A[*6BcQ- Ir endstream endobj 282 0 obj << /Length1 1407 /Length2 5961 /Length3 0 /Length 6901 /Filter /FlateDecode >> stream xڍTuXԕ^ڥiee%AEQFRRRE[ǹ}{f{f!=Bbx| 0 @66#8`3(`0ʦ\AQHE$ P BK p{6PQ>h_@N(,..;(Cá$Pq\UB@C+*qqCex^pC{쁿hu .؀FNp?\( ^p( ~䁴WZ@]W3W"8w0 EB>p#uU0 i A!8bw}yPE^'Cw(qs#~H{E q ^uއ?Dp/*HL]Oԕ  @ 1yC1qvxc]Q@+*0ux€`0`p$Wf-@ý%A~Y]= {: ښۭbyE@^a w۪yȨt@qտxʇ :9%HzbiW N*o_>b6smԕV 5!n}ȕV䑎[ wW{$#H@Rj^]+q2Ba ubWryp ? ^:Ѐ_S2F_jutL5U^R۩x o`:Gl 24_LvUu܎~.b:eVYsd{6~y){2NZg$݉ErSޱӐԏ}"ꅊFXNSKՋL & 0op,Ć,F[F褳hJ5*zg;[4<cȕ%W䓜K&~ɘ`] ^fSePz])LqWuiaUheJ(9S*=h+qaDkxN-bԿʝ < 9" 3Ӎs,[G-~V!MFJw 4 +,ƏFdͭ}0SƔ=epz4O~UWfmm!KG>alG!BPC;g 9G76ăg:~'O^#ᒌwU[ߦ?r.|zT9tM֔?JZ<.$Eeȋ3dʳ\BeVrMM#4Ajֺ-5Gy^sK5<顊>+"pӏ8p&*N0mvӛ=vT -=w b7;CoGR?b&+_EzN T79JEtx0M,{:O@X EB ~U/[T,η1βo¹Ꮾoї^ks7M;{VJ6ni둣xZ&` AMiTr7qkm%}$̼)pAX \/%+c#2(!JlZy2 J%ylwlaP$D"ƑaU/ѯ2qkZC,V:脍L!!w=mO͊G`2T n謔' b:Ĥq !zJj$iEZ&T x~ /C>5?UR3G6Oo}kxSb5O^x!\ I\͉;sWI4oľ ("8(BGN86 VoQi*CHަãZn ןv$>mP؝xy=zM*]7v9/.}%5bK!u@`pADC 9bPع s{?.qdi{FX Ho* iCË(]y~n:kXgvL:Z_d *nFtΐK/;QR R:N v!6 ~1WY0fP"3eZ{ J iX JqFtӔ12dx"!o>ݶԴsY8I3ݰ*nlw}r7dҁc 4>~؉|^ 84? 2̘4OonVoX :>L)`Į_{;yѹ.F#6r LJ^N62b{$5/:ƞi]TP! Ԩ|sL2DNnWd 3LKۮtϚNL{Xk1cs;1=$~ʵ DF}+Us."Fn^jqӰ㾏#&(桎4qlڒzlͥNlY,3sCAEF]6w#h]<QG$WM6gE1 Ӹ `˛|T=d"v\rܺ_!3zalKd^R z'{Ӓ]m;} ?C5FK^bSsz:{(dTG&s?Id-_)/e/PF=vB$J(Wrﮦ%i]8£}2 3RgIߝc(xKH~KF]M\̝$ Wt54H_EүW%'8#R|3O/|IlLøL?P6ݶua1z\j`}%7"iknx"~2t}3Q!Ҩu]5#/Jd_plt ޷ Ԟ2Jߤẗ!KN"DĊrXYޛi:jXsXٷhwSks6pt/ݷĥc_ Sd|>3<?nm̃픢ܵBِD5֪a|e <tM[3xp"x3igFdXPMګb;šuՀu-Ӎ'6į (CX͇U10 '״;༲~HBƱDr" ի~RF 0\Qr_ӥze{=SvjX&i ),qY )|Q':Uk4݃+2gh;/,[Ef$+0gno~Xh8JȮW鳌x@/\: @-KHn<,?)7]:?>iO'5e5 %O o.a4gsmimjjčQ #G4wcKǞal(7g- ZqelWa'I)\RKm:t/3Ma4FߵKUb+(y-華xR: 3."Lr;7څNY }IK5Πh;Ojf| NYE}ӆd;lG2<>=-P֌@i$J Ʌ@ĉDu'||i[ES:7򬭙8?] E.w|)ǕT}Ml,WV꣢ɡlѼ.|܊=1˵E5UypbVƒ뚣j ۺ,3'[ ; bȩ4dsz(NMnCb_UM4e#{|tc?g6?v>٤NbLi3} &OA]5Lz%&rKfN,pOHUힺ2Kr_Be&Aw߹1?ez)m8˾"wCQKmfCW˚nfٵo^RQvw*\owCr\15 2RB*8 nK1wͳ|}cܾppޏ mL媁(h@rFy~ŌN'*]-A>Sdk"pڼ1p3^+UAj6]`jR!Xs&fȪJtǐs#>8𱣜uSOoG!)‡jO'4l 7Hnñ+~!A"qs&4|'"-t㳬Z-@Bb Sn\a|Ak+vUJWGYnfV7&V]|>;0I} /Lmשu5TxkJxRY?'xjdRx݃VB9хj1Zd[DxHZ suՁR5Lhnݤ>RRc?޾ .rUJ W'3*lΗQҵD9s8歼N:eP[1'NgkZY%&g]gL7[o?7Ӻ_ԥM-n#Tk{|D6W5.]%W3]_ZXe=bR+"K⌣nڃc5*:F4]ɕɳY3~3lIx֌L-T{e_U{cmzΜj]٥e%><.^>|i{ZfT컆k;ryr /|ݍKyZd3^D<_&2< ZᠳnmwƟJi⤒z3GrK.s~I ͡󼺪AK3`K-ígznël\eɂJu931 Mz5oٵWDDmx.K@fWpR֩diKB>x/ $]MbZ+q Gg[ɼm&qNjڴΟњ+F*Pny(;gb6 iD˷Lnql<:ѰN"!vjlJp{NsĀQvWI"Á涧N짞75*+I#,|ucg|~lz4d]*C>tm`lUlSpfFݏ_O5ʇLԟ]> stream xڍx4ֶ Zhчu{NDc0D{ !: G'JM=5k={_{p (!mHZ$(i PD&0пD&Pw ;ؔh P<@"H\ Re'-xD@QDJHWw#S[7Pp `@v`*Bp!}#*%$%vA "dy^0#{B(t.?8F0_C= ` p@aB<vPw:PC E Ht%!~!+C8ap(@WUKv`8 {ap-{`>a sEQ0/B`ڬSB@hѯ)ܡL}3{eCa*dy@5`0&h(PRLLG_|\~HW=4f|P@  B`gǘ1X1>(TL PSQ H H .. guoz`؟GF =  L&GƆ :HP\@!,{Gpo?_v} 0z@cfCCM 6^ 43# @P0o qKK!Q_L_>A1~g]ikE`wwF(U;oH4&G:X(@#1vxc0^u( !ABÜ^(0x l୬vF'E9g9jgM)ؽ37W11|Qwnrz>Ko]P`qI0&NqDfckb:s.#rPr(9%gMg@)ub?1ge_E?"naakhimn_Qfo؋J:*ytIPXJilt.86? ےD<to>~QY>b1.Dr99ڑ&]t(ZߋK \֞Bka/4?snLK ||(gv7]auZ/yҌ%qmPO! dpYG& &*bZYd5OB^TA~^[Cyɹq#Y#mLBsp)rRJ/L/= iI>^?@^~KMD[C!a+·6:\a'gZS=~o#IAB]CxtjdwL3_vpm{7\RI +D[-Z'=O,ΤmZ}j9pQᦨ M5.)B;S8$PmxC BѾh.@Sk9BqQ/ 8DU⇧ȇBfbo}]_n[1(hE[)=h(4O~Whru%n-rEK9R=͏D=IG5A߆$9?0aa2VI=*jI> gQyEmzɬgX_$DPRMi? Rpc.G}yahPeYAVY;8Ϫq+ԫwPFOJgu9!}r\?o"epc o*ItBYϋ5:$JCT&ȺEּdTZa륕*7eN4PJ+Wv$#%pMgkV8׳®Ϧ,Tu憜zHd 32Ө-Aч1n/N(h1ܬš[ rWËIlƥr'ur)3a➤2z TY|NաHZf}kG$2E' (>5ANF\tl_㇓~YYki;3P\J>k5/^[B%Rjn\t[74.91$}/!U,n9c%'pñX`;h4b5y|dI!OKhBpu %Ydm cV}[ 0d+NvaeM z%(CXX2Z'xP;>qVNi)7"5?(?1FzuE .O} ):p@}|j]) ج2Yg[|'?ES2Œu<{K >L4X껞v'2wK=Lտ9,LCOӠ*M<8HqKYV-)ɱqCX?զ }bjjx3rwSWUf@K#[a,!>.ع./jJ> 7!汫brԋ߷j~89n71Ii+ϹADi.F@x$wvmX6XDf'TkFKjYǴOu韝{W Ǭ8ȁ W{.amXd.ȩ{7[_k@ Oڏ:wA@B礱*w3"!,*d:G>GbMty/#xxH"OKa)5dEI"8tgX$s*8xĒjO&~1~i_<>>*[G,4qr%-B}S;f~seBЗB%*[tS.T3oԝZ̊ {D>7qFY-b U>$յZ[r灻(Bqb^2aL[@{Ȳ=Hud2'8Iɏ I3[ɻlكh;!حiTެEGaeW%RO?4 ~Z6J]$l~8fM/8r_:6GT_*[k)s|f /B S(`xηiꆌ9F@Be -tAjk ؑT/tc˃Hd|MZzdH>.Ef쇒*4N2DO,yݬ&9+V0Uwb֧=۫nXV^/Oka,Jzg=a1a_zMgEIKݞ6jўtz_3 zTFaSu$+RS"sE=+  A\.{YƟ%]Y;Kmp̔%+ydYq,b&Wn^y?HF;;sIQ._XtҎg"u;"rt a#n9hBix:ì{̚Q}zʷ(csR\S6~M}̀o׏<#rSI9HH ^͔m{*BUEK8'f-zB m)t\"(IXŢclsqayY5W/L%4d=K_,Jh!Q"䑲Yw迦O%Tku6b%,b]Z EJ6O]lGI;<'ҕskr;co$׎^t;(<"h["WH] iEt:Z=K&Ij}7śuР<ɚ{81%]Wv*wO{*j,rk,ו/NYL.i ~D"d>{mJ=s6O(oi<AG6V^8UDo|I!Ҋqǎ7M]3w^r#_= _w_Ub}#rȾc魖bw±\' LN }plHlプ:0B*\WtEo#̫zf9$^[ڕM=dV0Y ?4C!RL2 1Zt+%!.T ߳b, F<˃(v Z1SJ%^O!{ZN?㡏5+#;|ݺsj\b^GbfȻ5u#s,KL{,vƂTf"S"XflIL{iԼ|1 _{s"g,y ZtͰ3Pس Kc*u!{T#wbzAB/𾏢x9;|y4GX=#[lg\_YeE~h{۟[ML3%פR;s!LnPSO.K~xZU[^l:DxBFIC%2`Hjx^xYv56KߴYշ{?Z!NJs˕ssc {;2Sd՟=WE iƤ ]Z%u)r:Uzj턜7:83-nN|UNѓg\hԗ`;Hr0q/h,ӇZ=w^G9XpG+fvPh5b-hk ~jɗa˂ifAgќyK"'krTUGO(νʨPꥪ޷GKI:$g̬WxҒe` Y%WDS8pHG1R&v#SYSSĘG&5 _+,/w1r^+/_=}b+Ք6_:Q8U9dS'8vd`'=b7eTo F?liG:Vt?V^.}|>V6L+Vi> stream xڌP\ i]C=;$;nsޫckεPAV(fkDHUdd000100;Y#%U:8pBh!1p0H9[l\\ &:pD \̍t)[#,G<((4F6Y'3GF#+9BP99qӻX;:Q\͝J@G e5`I*fR(ۚ88+s#㇋1,)X_47Hp+FFv66s+ @^L͉``c퇿ߥ ɑ/h5DF}wZغxEَ^()o) nFf%PqdK`Amnt4pޞT/ed9 6&`1~>}0c[+?18)W)$def22X %mLl"ѽqdP{m(Ac?`y v7E[z ͭm1N!k!6T;[_ǎژ~9-# ˿bn@cs'## P{Ë>Vnq8U߼6F +c>+cWn8`b  v /bgЋA,}Ĕ>Az?#^b+Az?#QG>?#迈CgdkHXXX[L?x?4Hs?$d`angŇ?GVt+>.!z?>l?^SPnGk񦰱82[ev+l1m?,?;~s㒠w2sH ̭YGK?ZQ??B~pCV9;|vXr@vyֈ;Т&J+ U (ˡ05s~Ē`ASFK KM.6H]ϼO2LҝZ6ƦMJC74'ڷUm"CdgD[Tgztպ-MX<9{& ൚2mn2ڼ;XR==*B==Oz$6{2>J׈&H,3v|?\J$ƼF>6/ [mY1d 䪴ĹhtBsO~M~n~m~o5,o ١]VqY_{r爤 |^y.IHjRu](欞Qq@!}fТ 8pRt:Ux[dʍ߀]cpZ6PbSe)g"f3v.켌YygI' od<4.Y!B/9wᑰ rOdʦYy8)ùJHuHxX; YxW-*s"j yD/K_K&pe9ٱIaxnH_`<IOb,sggJuL3 ~#݌T@cu$0ΗT`^TqDp fxu\V?'[\QpDzl(.HTKz;0L4m>ZsqN"Th\'xaP|̹%WUoY#o؂oŕf6: nĠޱS${}pwSj: E|Tq,`f\_M  䶒8P] e|qwqʃ"{d* _N4YHnIi`ccWCv fj M}s?Q\yƫ36Xz` !c=ƻlXڕ x~Xj$8,)tA>~5R< [{(@{" yE^y0vCaN%"x^/q+/\}r, v r`gŅ}x{7W#{cOauTMIleԆwykgyA_8-bR'L͊U| S)8 k4.#\ӌ0 ]fR*s,[AXÌ*  ;&I7ν|+.UbF2#\>l UHW7ݮY~:\C|T& <_Õ-D5j.ҨCV|C*BQ,RgZ'ۏrImCRbZ(s qc[7RM]Tvvr3F^ٯ|mġL1qkGNɼ~yC*5ґW.Xq:4F:׆1s ҷ{b(Z}S^L uJXQ`L`(Z-SYnGΒu~7S$ kvx3S mV=Zi ,mq'nGf{:/wGE (Ϣa5+Ɉ?~&>1&}"4 @5P3lOv: SrKq7MnI1՟̸1>삐"AN>˶;q~fڵ90p$FmQSL!Y \ rG >D5rfYjk!HƣRC`+ )4 n[/C>Tapt3N8R"؎t}K-(7Ҫ(E{&5 ũbdL#?Ex4#NILw_i$_a}#&rqPemZni3=^4[KX1zۿ)0axp1::fY}bS0/> zԧ.s!QץÛ_fOວ)oP#O#\MsQȆ`"?9_1GC:l$B͕[V2ܲEտk,i<^t7 t[-ckGe?d[ uoGG>ݓ r{Uh nR9U%Cm['{u8#^[G y}̤;>'$ɈN0#/θTX/r;Quds+ęT0k O!^O?42F1]}&WPhT0.m/=.쫀0IovJwj#mE$-/.U(!nP /rL*Po׸pr2 !3WU_:!y0G+.`es6&X=dϓڥBuN]ͭzeF sﶍ~6NXIH q*O4/@ $.H%&aLu|>m.PsN|fRk:o\;Z1p5bs!U$2 1_hűuQsǽxE1$ gtl@n2ؖ:~^O"L_bUz(~zz%[ՙ WWS$J7v^+ٜS%ۣ0|ǨIdG͚0618C<(n{aʕ=/mg%^{;꽒ȳ쓪>zݐJCW`key2+8[`m+k}c[-,(qofɕ؈4Q 9wT!~HPS5hd FP HUOZ}9e2/+4@ и,`;pɥgbHk0?D;;R4,RCQkv~- >Јm\Hr!KAүQϿ;5AwNe%`y ߬ zELu`!7rW&Zv'eK*3^Ip{w9&LTAhH<}6^͌dv[#y%tJ>UZ+iKڙM h%RLp4-63 BXr UU ' į5 8\u;!Myؕ5&N_ZjNq9L绺aM$ ZM;*` MV6V uu[^O_lmeHy_Yd.(ޥU]E4;UbJk[8Y/nS&21Q Uh*-ԒN&خdov_5eV/ܻK)Sv)3h ǯFM^!hj:+;;242LVעx-rϐ߿F,N>~fG^0!ynV<+x߲?K%7͓OOǁBǐRdmZ0F|8~%c,v 2 $vDmk-^(IKľ/czr $4(4K!ly d;y6QtJ@cTuD9tው0scDPJl Zf_E4rvs[q0:j*ws22;LJ\y鿿঍ 97ezyL`}uˊ9mkcNqSn!oc1`pɬ~Х w&hd8MZbڿ{ " :(k2)@7ɠP O֧b4BUGcĎS$NS$δސ6R>6-X]8D ~.K`Sڗ͇X6K$ʶԉ՞"Dcoq:o9SPNԛQ^x'[l=­gU'=pv{ dfSi}Eْ)]0rD)qҔ@PE= & )P;}hᮝĩ=@A ~Lg$̶cRliтxr;qUjvWiM%RK~=]67*/~?| }{k+l. T|%o kg'[N?5w x+Oev{hJP)\C`ӷnp+H~eI&> P?Ϭ @w`"ހ$ig4Pg&ɛWUz~ά8V]p]\93棘Jуd cC:c^O{b\ դ@t[Ý υM_x{|"+n̈́zgu*LSQ[2%864ItW6"H@;?&VaQu,朚K4Wzo9`Mko[f_t d1(T>D-Lj##.>T`shdqp"S-m%S JF'yugJg/E6aٴ'FKf :]#:F:$P?gSߧ}S 5B\"_w[fƣ Dy_"3Qs(P5i6&Cmu_%H`=-׹TŻ/aAF&,yb^RJ(`tt'6IxY~Е7;vN=>Qk(Uo{'>_wy#gDa-8Yh"$)CtTْ[zAȱ]2OΣ0׋X·o>j iQ{ntOڧ劜4(g(.1C4͘΀ʑBW}.6-Ϗgplr2h`i.Yd7@R߲l§>%Hnlq*SAO?eGG|~+@dAʤv8sJ'^Cވ̠!`oK!h 90x>[B(.iQ%xiilm;ξc$z;?fAD+ۨxNJ0dYnJ+w(E0i{SIuqٓ(myrn(UU;@aV՗N6]VKN<ȺN ж5SVo)UIpjT]ziL𕸉rBv'BV AuXytslQm؊DX3LE4n8wse|2R^NՅ64wQ񡭙Op]7xWٓ<.|:0fR,&"LkMˤc"F`ͮ0jk,w 4cĝrGվ*,/+/BE! O8ygH~ #+[kCkR|: J3hsj0UiWYMCPiťRxJƎ#\Z1ݖ1F=ptA8;YG8]%֡4 N츺2Zg.+0LÅM$&B~ imktr4mގ L{ !w[j8jy0Vw?ȴ_Յb0Fv ^X=ϫ&H–(y![Vf_!"1װ\M6ɠgx.Ž$K?Ͽ$JpiiK˝{va4LS v=os~u&){~)쒬 oXR9[Vaх]Xe~Cn|#9%xX._z"& ۢip=c4*_Q:AxRҷՑ-X8Fl  ~6vH1<[L%U6" !IĒ!K_3K q`!ҧ3#|՗OStQ(bInъkU̸ɷmESڇ'9VkB.Q s"p]mڷWCQy?Z*ZH{?$5ݓlZ}Y\2sʠzJ;{*#Ўx\͋4P5eu\`QH0٠/msDJii*3oPx\BZ j4&b߯"d4tJ;8cr,&%4>hXso$g&0Dht=@G"^tbHcO@^Wapܣ&IѬRcc. 3wsp.x8kF> EWBZ:UR hO΃0_̶jDzuBZn{yq*WXhX;j0QT `8j!2:-HY/4D70D4h(Ft5nX_=^}@ ۟xh єi3,hM\C[,&v7bhaqxHuAԭ8.zKD&Y@uvԷ`KxRE@%iT H Jre:%nS}"zˍWa DUeEGz/z/xb1C4> 4:ӕ-?f%9x}F=Ґ(XM: $HoX14174JYw 3./ ;:eKQH ܍3lC LvMp =Xd^;A(>'97)0M+Ho[֯חo >SjgNd.Ǘ^5PT0t>fRO ~ }g30k|8>RP'h5pzv*]w::9jugm(ޑv)+z ֫`'R7+h'\,eu `}-6.|g xTwQJ3=z"Đ)'t-<7yfw9r&m2x&볱h 6Xr, ݩxR^E ՉA%Y~([#kqd NSlPy-rj#Ö#%-:r -lZsΨΊCC Y[L32s_9ͧ-:{Ds$[#wf.S!/h%W(? DCeZxHpR7;HUZsͨ^3 píladciJUtb;tXVEmOiD7l#\,($]k ~^YfYKvGr 5&@фZcGi;F`;qgЬT[w}fMgLбL}H2ůM|RS J|'W3 73.d.FQ>&pE4ȄJ:_a%xm6VrD_gۉ= 7V QN]9M^>e1{ҨfmJ:`dM(h-Y#7"$ $]fĆ&U6^enJ.j&l5ٛ?ox 1E4N;oK )=jrxhW/VٶR֭W)'[+`y:x1oN"B-RtEbOUo/JxPZ &gNמ[ێ`#=cB <ߎ)V$GF<2z|.>\7xqK_aYPL7md37["۩$t5cVh8ν)B,f WU%@jH?KZKw%H_f&ƹP_j<~.4@4ȜOHsJ5770-Xz6==yoNBBpON yXWJ'i~ ÏpE?|9Mwx #HH:!Τƾ'4? Q383%orP<r i`ȴӟ lɯ?$⑴T_Z~8ei6)9K;$PaF\S Ecqjtpb}7jx822 EەmM8.2gh**Ln>-185ޕ*̀ЃFmٯӰqqga0J#^u{ka%V7EJkQJRs>aL6%ֹ.~!P-gY_eFg8@ɾ账_5N,[pPffTb{ּ = L$4$b!uuє,a3cˤiqu$Yl/BxM1SșWp~bNgn>"u(l \WGiRf;Kle%hs U6]"J+A7ux\Ch́Kzr+?8]@xLO?@DI]B[ࡏJBfoXRc͕z[/1ex QBT/ j7(UG?Ġ].7)@O^=Z׮BG7eT_'?r+඾homN^@~I%˓eQi /=qvOڭs8*ڃ<3Y66k$hw!u;-@8ϙ1b("nT )2ZLlm?]g$@#;F0c^8L:$TS+Q/QQ^1rӭߔE;܈=@<]RF8^"/6,qCQ a*'g$)与Rߕxɕ<άy(G"`ѹGsVgx YxB9[R(~^잩ɍÎֹ%ۑ1GӪ_)P /T"RJ L66c.2p:ּ {?;Pƺ{z֊lbS=-^)v9BLW)$HѼ/e g#w_Obsuc( /XY g rR؈߶.6rYK߀-9B$ o睫VZkZƪՆ3'/듩7+Tl⺋h@V}\}"+7f{p}WL 9I Bzi9@![3}bs:cyuf]^g"Ν*2cDꆀ̎OoxR;^ V Ҍ=/,6W3.0e Wݩ O}~9EVq5,#'N}g^.<~}K.,g+.Uֶ^N?Yl;ڹ\)m ~dB݉rfGy<=]bF? o8'돾rt>TK:zyvZN"D.qd\bO@ Lk &AΗYwg<ŢZ͖v+Y~c R}@|wfKm Cھn隼x~ ,\jYLw)=?x6ͺC@9_ŸF $VcL8h VڍKnZ ZV |3'>.R<% ȢRIKcF[0 ULUh_ߎJ;y Wɲ82/l'wʝPPCtTAOֵSլ _'ȋ^ a|7 ]J />d_Ł Ӿn|OP30bv+ =VL*:=:)U))KJ^fv Pռ_gS}c"з-b>A $ Ɍ_ :F&-J"? 2cYޠdOH!ѕ{Y|U.>wGFQ-!k57谪D,*^ Vל澠c0iպRf^>] 3gg%J_t =rwrPIMDVHlL4+g7/ E| \3*fwО 5f묈%9%2}ѹ7^J뭢Z=OAYv5f~!gz3?) w@_@$Zܫ N=V/ Yal.~@",It@sŀ#)r=dJv*6ĸXb &Bq~RɆ)N>d (H%R< c٫1ޠΓ0r~3fmXR< *{qzF݆/CYA?؋~6RiN'. }T '.ϐGXaF~yUqĪ_ITZ5fRo$ %LǀQ vjհ;Upb`" J !`!y~z >U|\7XXL|s*^-Svd9>m2}k'Qj'QMKOot0I0`-_.Y3m䊒w;WG .TWC%gm̛aqSzQROygVCd$75} + _3bBwD/ ^~s`bˊ BF^UfBUrWnvOLp›z}yC(78¥8$3eO;F-(JL~:V*$ =%]:q#csE _F`cX{k+鮠ywpokfә[SǣJn5Fpͩ]$vMѻCk\b44yb,)Jwv8\4KBpݢ{Щ븳` )tv/WKP)gkU!,~L<ҽKmNxx*;9nщ l01OrWH!< 'vc9]P8s%g&*:C3^;  %\vϞRPAb>{DmXn1raJ24J |!3܉b<}k>z&:7o52T /N*8hX5, &^]3 #f1Kխ93!GzqA 89a9N`F$Ҕշf&*G1s~O)EM5x0*\c*BTɺ" %e0)dLU=7& ZjF?]n1:}|V*[/ 18qر3ybTȘ?nM< Hg睮]?6.d*F65f(zka6r SuE&/#W5"&2?3P:@~ѺBNd{36J7>7/CǺP'r/,ȐfB SYU*;Ll.y T3*aP(íaEٲ(2~j4\a p6t4͊vT&=[7K:IG񆓦sS?5#ňH̲s3=§3JdQŒbgqQ-B\s$ $Y\,/. #l3-U`,J<,\ EiԣWⳞƪ>S:Gq#!+0"l.k ,rz>GzLX|gckZ<S~MS)a9ĴldϔF*^ dA(6%07H*֊';:"H?Gpk64F hly6D}Q6oyrՖFdCblp\LH̟=? ?Lψ4i@53M;B endstream endobj 288 0 obj << /Length1 1775 /Length2 11041 /Length3 0 /Length 12159 /Filter /FlateDecode >> stream xڍP.(Ph=@wwKqE (ťe=g$߳|YrbEz!S1Pvgf`ȩJ1XXUAH@{󛅈=E&jb(̬ffN&& ?{3 H"[7{KT&fnnN?B6@{ ghyhbd PnіŅƁbo.@Mp9Z@{g)F6[c@"ZR@]쁀5vxqq/*R[ /cٿ ?# @@,#ldmdbgFq!%K`but`pY#a^Y l*Od4y9w7ƿk=Af m:2AvN@)ѿm^DH́v&&&.nt5`#-O% cʆC\\(0mBm5BSRdg# nS{Y.AS\d vq&7h 2vRkRVa1mwޔo+E|wh$s$y-v"W[x<Lf>5]BSZ8%%Z-έWl;T@Pg _$.˓"( no@oª!`|!'!G0S*÷Pn$C&(q%twkzT ܗ̕x4s7 כ@vT5Ɩ#Y_A32}HnӼsSOdC0, f},7o:! i5xhfādZa~#$mpU!nA3=!5oKUDfkDt4/oK٠zO X۝H@ΐUaI8=I/BGx|߯omۛт#L5!1!;6/'+ b E0ݟnK s=k Ndę 5\ H%"Inʴ}Ѐ"I킘t|yp"\z t&3 kc&Z-;o?KI!#_4{W`w\C(JEJlQJF>$DZ \⊲MZB伌#qUF6_'wXBzg9/ |~hdrWE2=L=()mI3ƫQ\nr0R!VUQV>^+uIzIR- wp4\ 0gS^D/H;f _p}0z=?lS }NxYQxlV/YBL)GNk3u?f "6(֛7ê~]Y~ӷZcJxlՉ:Ա\m843k5xu L%;#Y ƒhT۴/ujdA"ҔM_zNn㲧lϥߪK1:t}~++2q]ppCr6! #\CtV귈a*X,;F-(a=vu\΋w t.S̑F.Gd5סpf!'.ޱR VM6+5[6jEi¹[9pF^@Qi(׍T90u*-VӔubHj`ܣ}B}/W$O4ѓ8pYwLvxoK0r7;lmڣ<6tWP%c@Yؚ=[bǶoF{2@crzɃݪzcb9<Ķ}r"9G+>BRښ&HGZM\p7+K?" .p/7eGNcB}:s&ޥ` 6~$]vE0`V]R%"bK*/ ҫ\f^!e@0anpNTuFtOX+’d/\8Xy~{IZBmzHf7D0i+)au8ArmFHߑaX\F6d-}nC0L{X9I ʚMZ \n'圄?K\j#&`=͸GWMJfcIk1!D$zV.Lz SIlr^jߟb5kzbF$hA2Hı!5P|AK#җt:ƛLX;;N5tnshZ??TM{yLj@lCBy(Ҙn=B}2{]oH1v 8ǕMyBvyN=;§zпf IScOtԡ 2{S앹w#-=foz]IK+KJ`@9crf Z( mTYN>YW@^zm6jjEt56Jǎo~Z2;IX%/PC6Usgzo*WJh@w]>~įqGLuVW܉$d?%Pd1{qmh-&xЃ.ihL}4qh#G >P3*"Yڐj\IsR8㪆Ol PfhyYHL:~h5PVs9dOnAƈ4茁YB KIt$kbw$7ěַ%*VMQKRvU'jSk9xP,E\ r ;ݠ6On?!])gSbK9cbP?GW*!}M}pto hX7ZWݮ9y"(m i^ۄq۪`UɎE#I`bs*0;X2{:5)[xD7ӮFSr]DF~mB1=u'V(iqn{$t/\|^TWT$rx2Ņ2oR?9] KsW:w_1jp#oڌDSe9\*!zFn#`'9[Q߉K%ƃOq0p8zp/`2h[Lk _c?5sاUYLPX}x_.( {*5QVRښÑǢY[kWq%y8>%"L.9&Ԣ\W#HMciR% ô:GT(s?E||ux&p~U:0Q8t1/\gc 4tQ@]vxR ˩eH]cf%mg|/8Ar<]Jw S${.'&\И-w3Rbri-tFmK>t.[V}<'iSxb+1nS7s?m4 :$Ӡq0a].rGAzfr/x7 >ˆN7|E.cHR`F]:U鏓e#uD>xl#D=*~:dD[#dUIuV_DFS'5! 8>٤iIQKFY*Bo*w&l|G MG5L6k/uH֢褕oq_.TI+Mckג΂jI 39ҁȲ0HRj$dij9=o^ŭ)Ž~c<TJ^p&zM`a`c9HfpY୧rp,RdH&Bzl-5UPvCELޝ9[#C3xR䬏-,Qo-E@ +#O,MyQҟ8mFzn|nadd"9(Lv)ruvl>T[p*4疗ze~._ 'Pez*j‡xKWc3T~[roX +o,^qfdE`Ӧ@'W>ѥA%5¿9": !y7ԗ 7x:QR ^k䓋O7c+(.3؈JKd9^f9ēT@kw55ł7;\-'5YfܒBaƜGCl^R$DC|6|=d{Uæ%'C$4Z.KXIES9G= {7tHДU~$!avtQ$VH !Kvva B(J݌]k;x;aBP2"S$BFd fKLd;d{jTIC=?bZ\A]O;Cݔ !DͨczUd^4܎mQIJo? JƆtt¦+Rp7),Q1߯2I}vԺH+GwM3c`w #*Ow^!z&{uśGGLEsFtK2&Ϣn%_E/ߵuO@;<M<G 8;]'Bb!-3yC_kJ.j(Ͼ~wުem0txӉ|pl>loc}17# $ UsW@8G֏h~| ۜJV36k8vm.f[Y!&ˉhS-$(frRwNJ]Id{"T8رӎ_ i%zi9Zrו=xH䐫 6.*dA-!o=T;z~rjJ4閎:.?g꒞n6xkg)w@n}3ivART5G'iI}!֨0::?lm1oKJ UÒ8 Nb^zQv#٭ΏUojõT܉[3˵q RjUAeh=<[#XĻmؚk+OocfK}ʄNWR+- qUלI!ō*+1sA#z=0a7&E u/|AR(ޢm,fUHGwT3攼ӬdoV DuŇ-BB;bARcڒzRS8(UvĿ5 9dOSqG1mCv{({3^"1\#?1b.AjEV9&q՜l  3";?0X`ih7/]xOx1׺yɀ3뭝_5۬#Jpd ȩ8:q_Il%&bX&)ʝFt OurwMm=LةTdA&)g prT'M̝trWx⢉$7qd~y`G5ϑnacYQƕyw_)'Z Hpϵbؚ<AuY_u %,2A欥Æ#ʷO?W>lm}'OOjSz{t#g%Ǫ*Us EXd~rj0 ksa֭Q)[y] f /"L>Jdu5"$ vDJoK2~Vh9JL4E Eqݘ8d& HMq7rG6+W'Ox;:6ْ~ԝ ҇͘JkTZ^L'`i P,zȎulh?邹flh,yV򘯷EK':>>s :Tm$~ 1kR)`Cg*gIx~_Cӌ}N$ף7W\^xTniyr&|(TV!n7t.Bu!qG*mj!r%x6Sm.rܦL7^FC}F#%Tɐ,9 7GjmFGQ![Hq?}XK}1,wL Y[dFg#B"! [uT C>a]@#5KnOD L%JK<4KpߧtsyzW7r(T~UX=Ϥ}˷ϩ!/*4>sWfk@CI%`<\3ߪӹO_ty֯id"|"RJ^> . #M\nYdEI:mg| ݏƜrAz%d)]k7ϩRՖkVG8!,i5'7-x9Aɢi"1€^69ʃ~gh2ݑZ [jIf`;Aa(w>S[yܕ8ԇ:u a)YBWIcoZ;b,|-m '{KFQ46Rְ0o> ֮iLu)_&Id}?q\9qڐhYGq^'_6󭓺ﶣ 6 7Q$O |Gzݗ7a#Ou:{ r"' %C)ZdӴ@ǃO@U? g3ɜ)ݮ:W{%Q4V`YOvO቎ qb_#cocl?Q57nĒ~L@ejAٱXJvE pݲ&̷a1pv&jv攼 '7Ч2&H@ r$В%'FlOU sMN1N1Ga+Z r|{N se2?"PgoGB%WS^Q ;Y zJYI$Htna7(XtYB\lȞ(y$sk$J Lـ2KJ @5:*2.g&ģ;"?'vZ2Z2{hFoT(wV44x eǐ?:>7 'B+=d]zN GGoމ endstream endobj 290 0 obj << /Length1 1451 /Length2 6914 /Length3 0 /Length 7892 /Filter /FlateDecode >> stream xڍTk6,! ]1t JЍ0 0 %%%!% C*-J ҡH |=}kz޽{_02QqD:4H(P7@ Q P q&汀p$BP0J\#owHq PoG$J;E:H ṂG]0We>p B}qU q"p_)]0Oy11___QZr% c\&04 s 0x %H'/\)P}pW`=' Y0௻DAIWDp` g0a/G;y!W;4U+CCQpO Z wQW[@8!=<` Wp zub&@"G_ =p/oX/+?:g eť0/"+'K} ( p ;1pC13AO+5|5|`wW쎾""Rq) dAN oWs2NH W7h]yeЫy~W!MowfwޘG^-]-aVY_+ZE@@?z8Zs4c.(j0#$ŹvuPW}5&Rt}R '$]#7b$*p1D+O1_D)!KaKԹjoijSHBkmDY $#"5 F 05Oͨt|xe:۽Gtם> R+}am/pt{e{s=BmQRG m*9m/TkT&޷ч;)Y=Ro*q+Y[[dG9[2?wK3ڏ&xֺ5'F;M_$ꥄ8l&w(CsҚMȪDH{8dDAzvE{|7e :y\8<͌xhETb).~:qR_* ?ai-ֱolAr.ƕ?FC]t) +ϘA[KIX4$l {%Lpmyrq1KFDI9(]{|e EߧBM,HGbLto'?/k Ik6^?dK7*_Qԅf;^b]S葘 ׉ir 5Tb"{2L>q{b@7Ƕ={UH5S,S%5Ar:2r,p"^~Ⳛ˗;T MDf$GfπYxa$hJvN#-c8q08@mVAhRelBkfL-e[,MK j^=#z{wN#FL+j^0}XS,IPR,tHɋ7j9S3$3<$<ڥ@ }Xic.W^[CՃ-C>.t>%Ruh~uUINmr/hІ1oA%zPRJ*'\CO1 I?zE[ G6ey"'(ANkgfe!凕߲uu& iM+bsCjr&|(\Rk'ćH[}j_kT:);4pWͅ;j=1QNq46ږ_]lQ#hz_ߋs ԗ"yI]*/YX\' zNf.V;Ӂ*9bt|K_>-dIJHݲ)TXVxʄO'c^>8: O}z"Ϋ2\g3كQX*OT YDC0-T&8R{q/LLa[$оzFțAg~4d NiR& 񑝯0!UFVK+ƴ *n*uN֒Ƽ]@z/mHU`5 :/;dhtz͑{zU?uopas&6ok8mk>́gwf%7 遲{>zT_r}2 %( 'wx#p=gA;;g5 %|!L'f1M =F|db OuJӤr LI9U.RpPIRyNf;[{Zè1^TGI cmNtw%]o ~7;lDǂg'eRH1-:MF'/DϬ:jjlgz v^@iʋ"^z#=X deUjJhɬ oEfM&)ƪ_˝pʬJYeͼ="bkၛ>%z+c8e8|f dq[mL~Q;?B>LsܺI1 L\! qcT2MW?vgݐ<qLgýX!s='0 l!:Q[p7s*XYKfbG H}Re.nqm6 ]uzI OeqO[LXst V_]ZC±y3kථAq!7sr{E!LYPWZ.+n}h/ޫ"1tpo` ֖ۮhMD7/4,Q>?Jf`9,Mme^U/DYºOWPΕ-:㬢JDi;;^,N*j8E %q?M G%oN-a_iOlŬͩ&d!xvD9]Gzz:ڥDg=!=u$"bmdV&mx. P 65rBΝ0,3ۈ(W Ll.>A6ЬRR\*JL3rPC |S}P"l /^G.hW뗯 Q"y\t(<$?NI@@: D`,IAęDaEUxGyGNcAN9\;wQ1:XWg#E%ջ8'罦ކc 2EJ`Cf6ecazɅFFF_J@Vi m3ؐכϜwݨ'66lc#|Xvq];ӣ[y-r+jDծٵ4RN27^OJS F3XuKf{jpo??m(5|_xމ ?QvkTyNjPQcYVYOk6u3SSyn̈́#X/a|fZodkznj, v}i1j"-ƕ.Ռ2 GT()I1ιe]>:E&ek)KΡ]xe;b$qVIX1\mycbLM 7͡Qr*7e]SR_hH/社}:<5{Dsi#RbpZ 駺亲YA~gM/+7Uh8} $q6P}x!&@5.?{H\H'OG݁/t8R:]e| ]zBfyV> ԒZ_}ާ#gm3~ MR鱂T.s\LkC/_n'lKI#r\L(G?cRd4?NR=C+EBpS;|H:珞:^Ci(xy*~B!ahʭkxQ P$"KTGX~D#q@ə٤ϚGXQ:~+[aWa* 34-ɧ|ީ/`B$c^HY~R3V)?]\nZ< %om]@V#̀}rA^ܪpO%pBE]u²sCgh 'r~}(t"@YήxHurq fCu3)#yuŲX;˃ p#5းQmOabo!g4wGF1vm^O"3O&'Z}vKyžۅm4zY2;Tזpᮕk禝Y>!Y]W!(bˏuXZ@޹-\ / l zi,[yX,Cs"3^2L}H3*.Y}5*Z5uCk9{j.US)έAL\&Lͼ[`6)_>1!X\3@"E \fF "] ,1[cڑG`n] &FV,ѬBv햽Kʘˏ޸lTaA:G נ )d=6L8`VdYU~ k%OłŔUgIvW?d7LýpuRl8jz~3>.mT~$b;w0+k)J1ޙt 6TZQ+Vfw%dESz2HS_7PKG)FkP3uc֪wZc 1rw{o"y_,|")ZQbcU{G!f=O?T&'??, 3ys˝RP"Ӑ# endstream endobj 292 0 obj << /Length1 2538 /Length2 17730 /Length3 0 /Length 19200 /Filter /FlateDecode >> stream xڌt G7l4m4m'۶Ic46ضj9[}׬k}k~)( l²**LFFzFFfx22 gkdj@G' ;[Y; A2Cg-@`bffd032rΑ bjaHɄ=-̝A< 40qqqy ht06:m@Ɔe;c \P;;s3089Q,J@'+G9CߩÓT-R(ۙ:: 1 t%e@ۿe2]=?># ?zXؚL-y1zgwgZNv󆮆ֆF ?C7 * A92TfQ[a;X8Au`Vvn^C&abϠjk$-3:9Y@؜{J?Ġ|4>@+ `ba 0YM ;ZA`/]ЄZ{6 jR4RHE cfapع>OO߱˟@_KC/hïh y-4a֢WiqƧ/T`cޣDg2hX֎\c> pY{u'H4nnb-}zCap4&0r^[P''guڞ#ڦpBk"/a>x7]ޅ_Ikz-'Ogݕ &#|(h WnM="j,oL+S :iX8L )=6#paLD@It)l}~Yޓ *MɧCH90CTuH[H 6M^¼DpL\" =wѻ)VrڕYdB#b=fJ_u#xg[ސc+>ݖmk&.֐ivk-yUGׅhe5sᵇ(6]] l\ݏ;~pmvi׬JE;]EwPgo(.P~sͣ{Pa=9EP$>\#=ie}J6EМb#q?!we>}%NLW3CSCpUI^)Z\EF/.  I~+ʋT`>Wh .>7z}7%^67m穙ᑔ,~We|Rx"HRBBHfw q`W_U/DbA* X2gS"3m7?ܦsKn TCT8* `SUWĎjZE'gpz S貓{0a!XssZX:ʷuj8<zO3QE4o_ uԤh*?f 3dk}z0΍ !a(GR7,+ۣ.BĽRSSN'^+ByJ uHnL Nizɉ}{JR٘zPAݩZ9O(*C彦"z 2Շ&yֲ lhrG~5C3 kLI/M,=H% G-{"ά$Ow9CO <ݽ&nuaYز\xAev,W->ٌv*7$J.Hanu"]?,pKUi_y7b?aԝ;ѕPz ?9w!_M SuF6| Eƍe4e g!4A D ήMB}J3 f@!B lDC ɀi )^41?>ULnM"N 1ʙz^^!>e}BMv` ژ9|ڝPc={c 5eәwu>,8R홑 lS>"@Z=z EY78@#w:CD<=Fʼn]iC @dR>V6ywIzb@USy;݇.3UdeDXzJn,<)TB{β>L >#Ow/qc]mvۼ gDUE@<ϔv./Rtfp;GDO]M~ _QHhe&NrM%Ol~K=-_c(9r<4]#'O!ICut>Vlb6OR*׏[͘-&k=<~q~Qx>Mr/rO\UE5bKXrCvѣ3h*'Ex5y+ViUQuegU+4 0SN_eRR~vo”I]i]fr6v1u@H0am@ܟiT2؍wjj<5=oEj\f}t[+}0t_z̎+rXxI+b]냩b6S> a9gS>zQOĔL%QpcX_^@85UyQiτZ k)pWt.%x,E6 7n]Lo($۷?8X]S|>ɘҔ'68?嘿\b*Ikw/cO_daRMfz=} Gzs8Xݛ!"-I+> v,Y4*!@o[.D@2 EZ9<3*~BW`wS7;R!iEe{͎,ނb[w0Kx#iR[%_|ɲJ;Q{y0r6ZE+ yWI@$i@PDJqaRr(u Â%Z B%Ӂ-ț1H'$ 'cƜ< 7wΆR6p+NhIp[q1Y,~*w?S28q |l >LawK08 /?Ψ[ZV(E"F!PQwpٟcF5ÌL8Q!ل:,$=?z ^弼-c 7aR ױGH=N)= 3s|k;_Po թ񵄇2#+Ý0bN,tA)ײM$pD `.ugRcH Wz1 FmhT8SþhƾC-6bmUEM|Β8LݵCv59|LUht7q@Ӑ> į ]- ho'(GSs=}Ǐ| PӺ y֮U 7&ѳΨmn<`E\)Gʜh^HٚRVN4/aTT6Q2cs;2Tfw?㛈ûQD3_kdG9o-?dA"5RCuj;wˡ#rqNlҝچsRezDѧ 8ׄvyWIN՝~$N L^|zkzcq'e;?^6(4~1ITV#OGIw|!%.v%VJkhgjG99j JSd⸇RE狀iTOZ)D$2(gW:C߄Ea4O3,HD@ObL?0 I-^VRZK>! 7]iJ$Pjh$kS+|[>U1.RPL2ܥ kVB٣͚rV%<0Q_J "F4:!&dgkV#yOlS#!6)Wqsr:(%maҵ;PN ^V6z/Ņy8B{5~I0$&g ?mES nU\)FGܞCƄz2̗i%]@KWNe1`دEqЊUԞ0oUOWnJD(<N5˴U(naQHLrY[Ӈ#g~b"7S$y[?0cʟŇ`ӑq:Tp-Ć-;+zesg 3>Eg4aG!)A}|l:4l)cu u=IJqѷlBsSKEx'j.a[TAkgRjvS ᔄ͖?Z,diַ;4=գˍ )rjP`2)@r~(}èIXSGZ5`Dqpܡ|Ac۟qc9^ʵhBʸE:j ᩼iMev*t٫mΆ:r}ԴY!|(NOTBQO2\Ց3k+o +"z^WMj^7fVyCqn:e^I ڇF}V'1CmPCVLw- P/%zcz٥Ad&a%}[E\nW efqƾD6Iv&C“sKie<]Q(*o/(>b 6ra>";M - >ۿGb:dZL]=^$^UΫ =sc;$h"a'z/3SU<k~zl!H[𵰗d q+ƫ(YYWSkPM/?>XJ> Q9K:EH"1z,ۮ_.i7~FA|v|2jfW}<5ʳ>0Qi^װ$MUXX sӯ[禇:Ѩ['fscK8] A-ֽ>C*;e@3Y Oq%?tR!n`,br'U|5qw EW@57΀_CJSVɉs0R{—D2Tݘb+4ө}/vaU9!F9xv+<~?ETT<(YC5?h `MLi}QJ3CRc?Xx 8U@CrْB-|XGX1aJK|-uk'Aݥ7„ycP'$c>$7m`(߻U>z2=jx9)7Cd^wʆsuZݻ wDՉۏ*?VF8F2r7zC&2/-. ZL2FmxP*PlWY~'NF{n/`ۖb|~~)+[FU8&~k-δ&c E㽢O>*o޽$lۯ`~A)3:Ќ&%J.@4$\_?MI򲇞y,?wuGlq\υ0qZ/ýO_{!jw{Q>,`}&wK6/wy•h1jG 3R]zk[v2T*0PK̳4ץA(ԛe19\h発pɞ]SПW x {d{ U;hg6NgE ^4S}ʌęk؉|H@6l14lvD&UH^HN ;\>}{-,Ye!wEt2x)o=7m!U R3\›Q>!Dʬ]z&,ٙ==|j?U¡wYm^,nYf;w6 PT9Q1ony''E>Zr'DGz1"8mjNo J͒J+Vhݻ!)r5.UpfǜZGfqVNҤvruyQ#]}%OlND8RBm.WKVtǪ*u" O]S1Ҋh?$7l únyCm;őϛ e7{BH/5/q& lu$mQB a{Jyߴݬ5ջsk#ÃP@N& -sхˤ]}%'@ؤqNCG PjfNJN4Cҩۗ{6 i,ǥǐV074hE희xB?lMR["VRCt`Qvi )O?kРo{6?9C|ez9_P,_klBڸݢБns@be8 8Cdei2fw(lyi4٥xh[kw 鯏 hy̦rLq Qre-.9KG~#_XC'f (VZʔS[)Xko8Kbk-{>cל[ܵ2~u~LzGxR@0jlGvs3챃ZcQ ;[Ժ̭[:+}4#5]'j#Zvzb{UೋH"wV"?6COǤ~ 5'[B+lS=qFt.Or_Պ9~mrT Qw|A)~S0f<2W-|X/wpM*fL7 cMh/i~RREZ폊 4~wAD(p2T>yrgp}wfT=-GvrOp2-frٔj/^)n迎MR+:4Fvg?CM6K@L*>= ',jQX??KB6,gU3yw.C6F+]t60݆62͊YJZ>uge!G  )wqQ4 }6:)4F]^9aOi I*|Ѡ'^Ѵ%r Z cыTi{++!v{S=t(nߔ29bʦ`'8ϔWH?mL1Q}/43-,[vI{LJ)`Әha($ *ꅿGc(j~j!o%3ÝqF`sdKywXqˢ6St(Z7p2?=Q1Hjqt7,O {uaVQq & WnUt[TpPZQ_7RZ;+ns9o[ٗb)Os6=9sCT#*ypPxbI 5o"ut5h_&a IfζsQ@ҖHV p2C"`~:WI Tn{Y<62m5u ĊЁ-I ɝx$T 5j%bV9;`5~G(.iqϙ"T!F̙ JJS՚Ts'3n<pXry~\劵r_WsLrQPL$ 6q4s "%T}ܵ߮ e3 Mu6Ϗ,_,Hb Htd_R ? YJBB$w8# †S9ƊX)C"PDI/G`HQ8Au>#2GCnWgA4ݲ5y.E |ݸ;☑ec8Ӌ*j&OY)<ܢTukd$=&᫦{N?Tn$]ɑalY}R.a+w>=klD"ksM.~Nۂܘ/|J9>t9f{.{qX,=(mSꋖe3[Fz,.<ènԚcQ(M,vssBũufaud;!]m:^z0$&f>qqO5K?/l! ;jJ Knh،|/n U(@{m֊<Y{^<+&^% 5πd% B\\sQsȁ;*~$vh*f#?Pm۰kx'؏)~mɇ\S27MZ\5:>ȝ?߾"ˋ_Wǰ+<$wCdk4 Tm mFpuYw[g5JVh%bzµ4ٮ62$QidժY-ҨdNmW Ugq"UGA 'zyEK[O!-y_W5H;y:P7fijczղ W%ofr~w8N?CIܭ|fhah,$eq0½ATq p ds )L2?, QZS%DB/ҼܗY)uk>x#Z1qq5XO贌L]mE0b4}4t,=bH ZXSM E><_D؇0ԿMpXX Rf7."g4c.(D$_"8L~jT.u_g ξV82Ы,GA8tci.糧'΍`ե4δQ*yBߨq/^p<$E! a?TY7\VmyUgkV,+SmC47Y_&!WHNK cFN) W|g6ZtiÆ)e{4Ցk+ⵚ*zHՋ05[Yiw>܆c`fdWo{AS#Q(cf8#we ɧh-_Nm>ֲ^h.."|2o yW9ho\H #І.9ݧQYn|]J?kr'eDy|c7lN=A-KI6 %(竉Yq6z6IHf˸q)9-xkaKI ,s}]qEk-_;oM8!b^x{y" !QH.7J&ޝLdGdf8k(")zFQأ0a;̦"zˆ_"VzWXmf4igj ԓ?}mSac'BT(cF{"Duq{8[;sҳh#g?.n`̭v*,3U[ 9LWwlgHj};H,W'1HU讃 by 9ED"P @B;秐=!Mu1Q1>618|*u7-[&ޑ`o B)P#3)w!skɘ=C_jͿ SvXha߇.PV< Ha Խ t{Js J{$$~ę:۲ e}GG~A%dUQN13I)ruM?^p-OxnfϪ"S26hJK&Ԯdlq;nq7:-8 EGnCtf4&ͯ#:`2?m*dV dm8ԧQv6c.ߛ̰y_41`(mPu(AQ܃MkcVJM,bB_,AGъ5{d@C zЎ/ q`&N%\J5\]#ǭOȋN(rɏSFb,ssdt~{jNeY9,(Ce]hsh4F-=?DDA;8/Y?Aι-3jw> N|هtU,y3YPpP>@^{8#EZPͥ+E Lcb՛6.hY>84!QNxN4b@欁Z+LK7K]AmX%{(hG[N]G{[Y n[z~GFC[#x=Q6Dߋ+GlMEHX6q?sE>!W~YXY yجۀwZIKסH]Eypn͡Na%|3 c뱟oYƪ.+Au` ʇvapvxYcJbUL) 9M9mm~Ǧ#:~3`csXy0^Ő9"Zjg0Q-ȳ5das˪mD$f~[#~O¿puSTu!漕:p*1|Zop-Kr4_-T4UBwJknDC $?8R泃INRa1Fa(جy=sqOz>2kV/%z"Y;XK/=cx$fQU~M9,x$i&I ήͣaU}/$HYi]Ng8Ak樖Pwp= g\ ʼn(,zfRԂ))r1'als~^LnQɜ Ԕ[ż݄Dvٌ.%K|%W~#5Ь=b4Y0AnAoEA96q.+TRGN2ru/&#ly=lʡ2bsk^7:*p^t,bYBg]i5'*ijyl*3 vhM\]ٯ3 і5m5s+oOhTR;Ucbc!x؟К7sҒ}ɋ^+ |W(H<)ġ#fkوbҥ+2Ƨb.l6+)͛~[QVz=.TR-Vq "j LA#o d[퉼8a4>n7ɕ&!GĊDG$ʞ 1y4ѵ~å fpop{c{Tb֓=_9lX x2\ƱqțƸ%G_t#$e`zAFR?F/frȚR9%UOJ⼳_ـ|,yڅlGsim g/qID#Z5OTTnr1SU~w[We<0ANY$|(j*٣H-@x!q"{ ^jmI2~$P;ptI.Lij/[ ?5)hO:WPJpףIA諯{ _ ,P@ws7;lQH3p~cQRu9ۀ0fvSeFı>%ת25MO]+ֽ*ycSADɭL¼/zEJ;}9q4fj+$ϙKdYzd'!g 5vx NHvd! h*_)8wxK4#aeMnyF"N<`lxtITSY)̣+6}ݍ\ tRPN]^1AA!+7wCrjGNƯ$wOhAܦ)g}fPSF?p]- M~B:hzxgyW]p ڹ.#Ue$.`a BꄠUB!S Jǥ ,Ȧ|cXxXszL6JtH4.7/$+3lpjk|@찰&\vVj"K;aԍ%O&Rz+F;1 ">Rc}2W̮f\K>zV C1,2?/N^Q`$L'ri5;)x{2 ux/%Rr.d(ə.IDYF{BiRN)Au 7Az-IxFR9u+oS}jKn)~5ռ 1U킱q'ƊeC5g-,<0 YTGaIWodc5J]ĜYn<xuS=7JE8 hU6.o#{BUU>˕0Iha=ѧ7%}qU˙,N|ai endstream endobj 294 0 obj << /Length1 1790 /Length2 5189 /Length3 0 /Length 6287 /Filter /FlateDecode >> stream xڍt 8mԾg)d샙aٳ˖0f[(KQқZ-%GdϾff><9y/ )b4^" unܐ`Qa0J}G!~)X#@ 68An(" @ĥ!`0 `;41h[E; e )) 〢38LhG$|x0'$0@Xw-pBwF`&L p@~ 1vx8 ( #pC"8` ?w@!<}~ncqvh{BxO<mO(pGքUE}N tqH E4[U8;#xI*H,†p^"?&x;$PB0Q# K+q9I 91z`\; /AoDH<`G)~g'v?0aX'`&hO>YeA~ƿ|JJO[AEL KIN?Կ[ȟ@a W 0+\~   g?SIMmH pg$gAnxR`o " lnjPDۣ~]#D!6QH4BC4 m6NGwLx m=:(Lcp/ 0A\P ]׀0'|; dRȵw$ D~#( b"7~# b II"߈:a%b"_P;@: @Be?$ g*B'ο! HbXkF!𿭐,J GZQBbq@q@$B  K(-'†bhc#s߱~n"LTa#l5Yeٽ/B3:^;0ȧEDѶVK <6z@3Ij9@ IbM*]%E{&jo|7XNU"~+_.qTzjnAٲT Gtoz20C>jSj;(Ik6ڡS_DLB3@I2M[[<ڥ+ד 7zW ̣]ɶ.>OGZ}BdfSGw̐7\ zXڞS ;+Xig*3Ôxbwg$JVd*ﲥv$<\u0^)w8e`J8u\cSY-J9*QE)஠e1˻bT$JQ|-b8F;K/+@b\/ۊ2K*A!Gf"6uRXH1㧫 ž:?)?e'#ަ6ᖱoZ4uKkRtM,χz,)T&WS$/E6&f8C)-o`f&P`O~n%e2$R6up{U5O޲`+1TxC] I*< $ܖA>8,3|TasǺ07:z~pU$S7#zrJ9 o>a ]gi8|A\/]VeQZCШ{˜kg'y+ (ho&nvIq(ͫB%jGc]izWwWV-?% >"6F\siŜMōSE5)w7^mЖb\0v :~jr'&e-&`@_E_h E[b\v$].(үx_AysW{wS%0#>n2ZkIOqlM'i\z;%A{O)9n ╸WT>y#ϜP*^v5uR:t-~q1Vec}^~d׆Ej0_vSH}u9aRGaFeћO;Tk(YfiiH 1xEq"ݣ7D2DFZL &g,<9;ṝfO482TʩCUI-6*t2;ؙaWVRE`eDF;>^wWs_eN'5dp1 7c5n>duzNvC3+ԧ1 N2#77Ubsj_{kE.(fMTe+#[#4IODv;69_1qfX\.R])ς4۷]~P}7uꓨ ;8lO#tFZ$Lݲ{RG['W׷=[⏔|ψi~3e_3C<ΧAu.Ej 6Gna7#v4sHK:LB?ҍ։[ r~pyfȎ<+B^`yoY єw>JBp,@HZe̚#xFQ[Gz-v Ss~ە6$hVgI[+,?eծ قi#d銉D2㉃g"4}F d҉2CZ*-z჉|v¢q[ԣ㥒/M]]WG/׆d)^%K>>coD/v[ÑGd,:t *Rb㰬Ccmr_f0wF~ܠz22)쉘#}%>+ J~SS)_R;_RT_wIBZL#9Za QufȷÔk[^%3ae-e\qRS7gb1xY(ŁmZJZ,eD/MtHnM3Q,g446s}}Ug3"1%)X4!(ͻr" N,||ٱ5+yʽK;]kO;ͽ2|3bV .D%k>qpx2N*ǧ)}LweR8oZzgNY>*8EUZxE3G%-OF^)]J󳝓VY;>}:;5h_30 J ,'ct}e1*CÞ qRr=]j9(~LpfcaQTl؝k"iI1%m~m/uDPjR2nqw#0<*ib jN{wV2~!6X@gir|#5#ss!Q_񅛞[)}6sclvg)l@+{Q^uFUX>:ôfdOflyb&~R?Mn"ewtdrKR"eBד6)u:WcjBFܞ]R~|XHiLB c\_?|SP#:ށ^v[_XYp3b ]H_PUyOq'Y˴V؍},~)ҀZ4hw h.]k>=E+vHm dBW#\>ɗܧ䙢$}=~;f /4e+7 d7%ÆPlY)/#Xk5"+'O?dRS;U\JcLYK ;&]GɬerCgIDt. endstream endobj 314 0 obj << /Author(Gavin L. Simpson)/Title(Restricted permutations; using the permute package)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords(permutations, restricted permutations, time series, transects, spatial grids, split-plot designs, Monte Carlo resampling, R) /CreationDate (D:20140128081533+01'00') /ModDate (D:20140128081533+01'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 271 0 obj << /Type /ObjStm /N 70 /First 612 /Length 2968 /Filter /FlateDecode >> stream xڭZYsH~ׯǤyNM$e'ZjIPBR9/Фh* "\F$B_W9<]>L@ ‡IG+^/ZQL>5T "uDzG`b\!XQq ( }4I 9WhQ" F8Ds1x0D0M8%ȅ)>#"&w#|q! s4D8|踎8u<LJ?LA3O!WZr]&rF\  |p9n_I>8@/x>r}m$0@4%C7i`&P1}xØpQ*Gf<`BrϰO}@ ?+Cxt,N},`dt~w{_WwtG,%*?:ހw.q5g@ӱYf@.<VM8CӓJp ,rti5Jr1+: : f׹AoC# EnoNή\Wx&cƛO7׍b< N/CzMoӀ>1NjE@'~:jn4iDtIcKɊ,#3UЕIxBЄ45pGftMoGjޟ_Kκ)= _o;z 1|!Q9M ȅeO}t :ߩ 缆%r!Dr=ҷ[zgiD``9A:,&) F}ˣ_?|g86_AdtOgt 3I5fk62ij} !rX^ʫhB<Y4 /83((Hďؐ.~uqYc8 zu~c%ië8^@_ vűt7ayaqYMګ⺫){{xywoLKpFr]r.i $zw:LVGS=<9!>DRVR}Fx[)dszQ8#PVj0ý96RZl;p<,Eu"CӰSp,|XpY@̈[ S{|Ǖ/l}T3C=u;ŐO?zDzll`Ѩ?/;[%ؾiLWP.NatwxaR=n˾^r?/Τĝ$׎7&:/=E [?e`Q!jtzq=PcnD6L a{@/90NyJ0}ty-jЩiN^abp|qkڽv ^ xUﷵ;5guE#?]/zC{+8V~Fxߊ;Wkw?\YqN9ը߃nuӽG?#5u˖nG#?4uuiZU{d~"^Qfz]TW[ڦF=M ގZ&=M >~o^핦Wv+M-yG7oM}Ԯw`fR8k<.Sr/IJ?>xS(>*x7OKݧCnU,ڢh g[Ta(+7,WZx*H NifeBR|ĤdS Pn|U9&;սI6Uj4roxC"HtܚD1o'+Q&_Vm7'4/k7s~`{iүn{.)zžkbJ5cWvP-uՀ/mÇu]$XulwJgz e]#e;WZdd-E@U?Fue۔U":"JKk%?@zu ^ y~2Mx zCeWBo~֫*+QWc'Ez.¬aJm?M2:@tE;f"eēu!gaXEoX,'"LrOs;3SX؄uޡ6ҮL4IQ"n#Ui 3\2bY؜ܨQZ[dM  Oi3K\Nb, Ǚ4LIѡ.7D&KO"-mp%\}8g9QRBkjq$+zҎ`qp=byp~2i0Gt'Ȱe<%f[z,A߭ ] /Length 765 /Filter /FlateDecode >> stream x;OUAg{.ϋ*H_%hmZ~i΀~ !}]̧hT6U+a0΂Aƍ j,΃s`B&c mN0n:rvz \ .K2I0k{Mu0Ϥ"aaxQݛ4h ,Y2Xe gߢyzUj-e99!s-x.9pGI/A) o8w~='kX؜Ѥ2ͧ+횅PB;"Jy M61&PK'l{Ƶ0DAWjQ'NŸjQ'}`c8 M>&qӀD8p38r2䳀D f>7zK4[y(hh[jeԲٗR+fHZ4Kj͢=ZfOS*a{R%nJZbT%~ʵĻRy-1 -R)P@W t3W@?:؃` _oe׶ endstream endobj startxref 314840 %%EOF permute/inst/doc/permutations.Rnw0000644000175100001440000012041112271654425016724 0ustar hornikusers\documentclass[article,shortnames]{Z} \usepackage{thumbpdf} %\VignetteIndexEntry{Restricted permutations; using the permute package} %\VignettePackage{permute} %\VignetteDepends{vegan} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% declarations for jss.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% almost as usual \author{Gavin L. Simpson\\University of Regina} \title{Restricted permutations; using the \pkg{permute} package} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Gavin L. Simpson} %% comma-separated \Plaintitle{Restricted permutations; using the permute package} %% without formatting \Shorttitle{Using the permute package} %% a short title (if necessary) %% an abstract and keywords \Abstract{ } \Keywords{permutations, restricted permutations, time series, transects, spatial grids, split-plot designs, Monte Carlo resampling, \proglang{R}} \Plainkeywords{permutations, restricted permutations, time series, transects, spatial grids, split-plot designs, Monte Carlo resampling, R} %% without formatting %% at least one keyword must be supplied %% The address of (at least) one author should be given %% in the following format: % \Address{ % Gavin L. Simpson\\ % Environmental Change Research Centre\\ % UCL Department of Geography\\ % Pearson Building\\ % Gower Street\\ % London, UK, WC1E 6BT\\ % E-mail: \email{gavin.simpson@ucl.ac.uk}\\ % URL: \url{http://www.homepages.ucl.ac.uk/~ucfagls/} % } %% It is also possible to add a telephone and fax number %% before the e-mail in the following format: %% Telephone: +43/1/31336-5053 %% Fax: +43/1/31336-734 %% for those who use Sweave please include the following line (with % symbols): %% need no \usepackage{Sweave.sty} %% end of declarations %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. <>= options("prompt" = "R> ", "continue" = "+ ") options(useFancyQuotes="UTF-8") @ \section{Introduction} In classical frequentist statistics, the significance of a relationship or model is determined by reference to a null distribution for the test statistic. This distribution is derived mathematically and the probability of achieving a test statistic as large or larger if the null hypothesis were true is looked-up from this null distribution. In deriving this probability, some assumptions about the data or the errors are made. If these assumptions are violated, then the validity of the derived $p$-value may be questioned. An alternative to deriving the null distribution from theory is to generate a null distribution of the test statistic by randomly shuffling the data in some manner, refitting the model and deriving values for the test statistic for the permuted data. The level of significance of the test can be computed as the proportion of values of the test statistic from the null distribution that are equal to or larger than the observed value. In many data sets, simply shuffling the data at random is inappropriate; under the null hypothesis, that data are not freely exchangeable, for example if there is temporal or spatial correlation, or the samples are clustered in some way, such as multiple samples collected from each of a number of fields. The \pkg{permute} package was designed to provide facilities for generating these restricted permutations for use in randomisation tests. \pkg{permute} takes as its motivation the permutation schemes originally available in \proglang{Canoco} version 3.1 \citep{canoco31}, which employed the cyclic- or toroidal-shifts suggested by \citet{besagclifford}. \section{Simple randomisation}\label{sec:simple} As an illustration of both randomisation and simple usage of the \pkg{permute} package we consider a small data set of mandible length measurements on specimens of the golden jackal (\emph{Canis aureus}) from the British Museum of Natural History, London, UK. These data were collected as part of a study comparing prehistoric and modern canids \citep{higham80}, and were analysed by \citet{manly07}. There are ten measurements of mandible length on both male and female specimens. The data are available in the \code{jackal} data frame supplied with \pkg{permute}. <>= require(permute) data(jackal) jackal @ The interest is whether there is a difference in the mean mandible length between male and female golden jackals. The null hypothesis is that there is zero difference in mandible length between the two sexes or that females have larger mandibles. The alternative hypothesis is that males have larger mandibles. The usual statistical test of this hypothesis is a one-sided $t$ test, which can be applied using \code{t.test()} <>= jack.t <- t.test(Length ~ Sex, data = jackal, var.equal = TRUE, alternative = "greater") jack.t @ The observed $t$ is \Sexpr{with(jack.t, round(statistic, 3))} with \Sexpr{with(jack.t, parameter)} df. The probability of observing a value this large or larger if the null hypothesis were true is \Sexpr{with(jack.t, round(p.value, 4))}. Several assumptions have been made in deriving this $p$-value, namely \begin{enumerate} \item random sampling of individuals from the populations of interest, \item equal population standard deviations for males and females, and \item that the mandible lengths are normally distributed within the sexes. \end{enumerate} Assumption 1 is unlikely to be valid for museum specimens such as these, that have been collected in some unknown manner. Assumption 2 may be valid, Fisher's $F$-test and a Fligner-Killeen test both suggest that the standard deviations of the two populations do not differ significantly <>= var.test(Length ~ Sex, data = jackal) fligner.test(Length ~ Sex, data = jackal) @ This assumption may be relaxed using \code{var.equal = FALSE} (the default) in the call to \code{t.test()}, to employ Welch's modification for unequal variances. Assumption 3 may be valid, but with such a small sample we are unable to reliably test this. A randomisation test of the same hypothesis can be performed by randomly allocating ten of the mandible lengths to the male group and the remaining lengths to the female group. This randomisation is justified under the null hypothesis because the observed difference in mean mandible length between the two sexes is just a typical value for the difference in a sample if there were no difference in the population. An appropriate test statistic needs to be selected. We could use the $t$ statistic as derived in the $t$-test. Alternatively, we could base our randomisation test on the difference of means $D_i$ (male - female). The main function in \pkg{permute} for providing random permutations is \code{shuffle()}. We can write our own randomisation test for the \code{jackal} data by first creating a function to compute the difference of means for two groups <>= meanDif <- function(x, grp) { mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } @ which can be used in a simple \code{for()} loop to generate the null distribution for the difference of means. First, we allocate some storage to hold the null difference of means; here we use 4999 random permutations so allocate a vector of length 5000. Then we iterate, randomly generating an ordering of the \code{Sex} vector and computing the difference of means for that permutation. <>= Djackal <- numeric(length = 5000) N <- nrow(jackal) set.seed(42) for(i in seq_len(length(Djackal) - 1)) { perm <- shuffle(N) Djackal[i] <- with(jackal, meanDif(Length, Sex[perm])) } Djackal[5000] <- with(jackal, meanDif(Length, Sex)) @ The observed difference of means was added to the null distribution, because under the null hypothesis the observed allocation of mandible lengths to male and female jackals is just one of the possible random allocations. The null distribution of $D_i$ can be visualised using a histogram, as shown in Figure~\ref{hist_jackal}. The observed difference of means (\Sexpr{round(Djackal[5000], 2)}) is indicated by the red tick mark. <>= hist(Djackal, main = "", xlab = expression("Mean difference (Male - Female) in mm")) rug(Djackal[5000], col = "red", lwd = 2) @ The number of values in the randomisation distribution equal to or larger than the observed difference is <<>>= (Dbig <- sum(Djackal >= Djackal[5000])) @ giving a permutational $p$-value of <<>>= Dbig / length(Djackal) @ which is comparable with that determined from the frequentist $t$-test, and indicates strong evidence against the null hypothesis of no difference. \begin{figure}[t] \centering <>= <> @ \caption{\label{hist_jackal}Distribution of the difference of mean mandible length in random allocations, ten to each sex.} \end{figure} In total there $^{20}C_{10} = \Sexpr{formatC(choose(20,10), big.mark = ",", format = "f", digits = 0)}$ possible allocations of the 20 observations to two groups of ten <<>>= choose(20, 10) @ so we have only evaluated a small proportion of these in the randomisation test. The main workhorse function we used above was \code{shuffle()}. In this example, we could have used the base R function \code{sample()} to generate the randomised indices \code{perm} that were used to permute the \code{Sex} factor. Where \code{shuffle()} comes into it's own is for generating permutation indices from restricted permutation designs. \section{The shuffle() and shuffleSet() functions} In the previous section I introduced the \code{shuffle()} function to generate permutation indices for use in a randomisation test. Now we will take a closer look at \code{shuffle()} and explore the various restricted permutation designs from which it can generate permutation indices. \code{shuffle()} has two arguments: i) \code{n}, the number of observations in the data set to be permuted, and ii) \code{control}, a list that defines the permutation design describing how the samples should be permuted. <>= args(shuffle) @ A series of convenience functions are provided that allow the user to set-up even quite complex permutation designs with little effort. The user only needs to specify the aspects of the design they require and the convenience functions ensure all configuration choices are set and passed on to \code{shuffle()}. The main convenience function is \code{how()}, which returns a list specifying all the options available for controlling the sorts of permutations returned by \code{shuffle()}. <>= str(how()) @ The defaults describe a random permutation design where all objects are freely exchangeable. Using these defaults, \code{shuffle(10)} amounts to \code{sample(1:10, 10, replace = FALSE)}: <>= set.seed(2) (r1 <- shuffle(10)) set.seed(2) (r2 <- sample(1:10, 10, replace = FALSE)) all.equal(r1, r2) @ \subsection{Generating restricted permutations} Several types of permutation are available in \pkg{permute}: \begin{itemize} \item Free permutation of objects \item Time series or line transect designs, where the temporal or spatial ordering is preserved. \item Spatial grid designs, where the spatial ordering is preserved in both coordinate directions \item Permutation of plots or groups of samples. \item Blocking factors which restrict permutations to within blocks. The preceding designs can be nested within blocks. \end{itemize} The first three of these can be nested within the levels of a factor or to the levels of that factor, or to both. Such flexibility allows the analysis of split-plot designs using permutation tests, especially when combined with blocks. \code{how()} is used to set up the design from which \code{shuffle()} will draw a permutation. \code{how()} has two main arguments that specify how samples are permuted \emph{within} plots of samples or at the plot level itself. These are \code{within} and \code{plots}. Two convenience functions, \code{Within()} and \code{Plots()} can be used to set the various options for permutation. Blocks operate at the uppermost level of this hierarchy; blocks define groups of plots, each of which may contain groups of samples. For example, to permute the observations \code{1:10} assuming a time series design for the entire set of observations, the following control object would be used <>= set.seed(4) x <- 1:10 CTRL <- how(within = Within(type = "series")) perm <- shuffle(10, control = CTRL) perm x[perm] ## equivalent @ It is assumed that the observations are in temporal or transect order. We only specified the type of permutation within plots, the remaining options were set to their defaults via \code{Within()}. A more complex design, with three plots, and a 3 by 3 spatial grid arrangement within each plot can be created as follows <>= set.seed(4) plt <- gl(3, 9) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3), plots = Plots(strata = plt)) perm <- shuffle(length(plt), control = CTRL) perm @ Visualising the permutation as the 3 matrices may help illustrate how the data have been shuffled <>= ## Original lapply(split(seq_along(plt), plt), matrix, ncol = 3) ## Shuffled lapply(split(perm, plt), matrix, ncol = 3) @ In the first grid, the lower-left corner of the grid was set to row 2 and column 2 of the original, to row 1 and column 2 in the second grid, and to row 3 column 2 in the third grid. To have the same permutation within each level of \code{plt}, use the \code{constant} argument of the \code{Within()} function, setting it to \code{TRUE} <>= set.seed(4) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3, constant = TRUE), plots = Plots(strata = plt)) perm2 <- shuffle(length(plt), control = CTRL) lapply(split(perm2, plt), matrix, ncol = 3) @ \subsection{Generating sets of permutations with shuffleSet()} There are several reasons why one might wish to generate a set of $n$ permutations instead of repeatedly generating permutations one at a time. Interpreting the permutation design happens each time \code{shuffle()} is called. This is an unnecessary computational burden, especially if you want to perform tests with large numbers of permutations. Furthermore, having the set of permutations available allows for expedited use with other functions, they can be iterated over using \code{for} loops or the \code{apply} family of functions, and the set of permutations can be exported for use outside of R. The \code{shuffleSet()} function allows the generation of sets of permutations from any of the designs available in \pkg{permute}. \code{shuffleSet()} takes an additional argument to that of \code{shuffle()}, \code{nset}, which is the number of permutations required for the set. \code{nset} can be missing, in which case the number of permutations in the set is looked for in the object passed to \code{control}; using this, the desired number of permutations can be set at the time the design is created via the \code{nperm} argument of \code{how()}. For example, <>= how(nperm = 10, within = Within(type = "series")) @ Internally, \code{shuffle()} and \code{shuffleSet()} are very similar, with the major difference being that \code{shuffleSet()} arranges repeated calls to the workhorse permutation-generating functions, only incurring the overhead associated with interpreting the permutation design once. \code{shuffleSet()} returns a matrix where the rows represent different permutations in the set. As an illustration, consider again the simple time series example from earlier. Here I generate a set of 5 permutations from the design, with the results returned as a matrix <>= set.seed(4) CTRL <- how(within = Within(type = "series")) pset <- shuffleSet(10, nset = 5, control = CTRL) pset @ It is worth taking a moment to explain what has happened here, behind the scenes. There are only \Sexpr{numPerms(10, CTRL)} unique orderings (including the observed) in the set of permutations for this design. Such a small set of permutations triggers\footnote{The trigger is via the utility function \code{check()}, which calls another utility function, \code{allPerms()}, to generate the set of permutations for the stated design. The trigger for complete enumeration is set via \code{how()} using argument \code{minperm}; below this value, by default \code{check()} will generate the entire set of permutations.} the generation of the entire set of permutations. From this set, \code{shuffleSet()} samples at random \code{nset} permutations. Hence the same number of random values has been generated via the pseudo-random number generator in \proglang{R} but we ensure a set of unique permutations is drawn, rather than randomly sample from a small set. \section{Defining permutation designs} In this section I give examples how various permutation designs can be specified using \code{how()}. It is not the intention to provide exhaustive coverage of all possible designs that can be produced; such a list would be tedious to both write \emph{and} read. Instead, the main features and options will be described through a series of examples. The reader should then be able to put together the various options to create the exact structure required. \subsection{Set the number of permutations} It may be useful to specify the number of permutations required in a permutation test alongside the permutation design. This is done via the \code{nperm} argument, as seen earlier. If nothing else is specified <>= how(nperm = 999) @ would indicate 999 random permutations where the samples are all freely exchangeable. One advantage of using \code{nperm} is that \code{shuffleSet()} will use this if the \code{nset} argument is not specified. Additionally, \code{shuffleSet()} will check to see if the desired number of permutations is possible given the data and the requested design. This is done via the function \code{check()}, which is discussed later. \subsection{The levels of the permutation hierarchy} There are three levels at which permutations can be controlled in \pkg{permute}. The highest level of the hierarchy is the \emph{block} level. Blocks are defined by a factor variable. Blocks restrict permutation of samples to within the levels of this factor; samples are never swapped between blocks. The \emph{plot} level sits below blocks. Plots are defined by a factor and group samples in the same way as blocks. As such, some permutation designs can be initiated using a factor at the plot level or the same factor at the block level. The major difference between blocks and plots is that plots can also be permuted, whereas blocks are never permuted. The lowest level of a permutation design in the \pkg{permute} hierarchy is known as \emph{within}, and refers to samples nested \emph{within} plots. If there are no plots or blocks, how samples are permuted at the \emph{within} level applies to the entire data set. \subsubsection{Permuting samples at the lowest level} How samples at the \emph{within} level are permuted is configured using the \code{Within()} function. It takes the following arguments <>= args(Within) @ \begin{description} \item[\code{type}] controls how the samples at the lowest level are permuted. The default is to form unrestricted permutations via option \code{"type"}. Options \code{"series"} and \code{"grid"} form restricted permutations via cyclic or toroidal shifts, respectively. The former is useful for samples that are a time series or line-transect, whilst the latter is used for samples on a regular spatial grid. The final option, \code{"none"}, will result in the samples at the lowest level not being permuted at all. This option is only of practical use when there are plots within the permutation/experimental design\footnote{As blocks are never permuted, using \code{type = "none"} at the \emph{within} level is also of no practical use.}. \item[\code{constant}] this argument only has an effect when there are plots in the design\footnote{Owing to the current implementation, whilst this option could also be useful when blocks to define groups of samples, it will not have any influence over how permutations are generated. As such, only use blocks for simple blocking structures and use plots if you require greater control of the permutations at the group (i.e. plot) level.}. \code{constant = FALSE}, stipulates that each plot should have the same \emph{within-plot} permutation. This is useful when you have time series of observations from several plots. If all plots were sampled at the same time points, it can be argued that at the plot level, the samples experienced the same \emph{time} and hence the same permutation should be used within each plot. \item[\code{mirror}] when \code{type} is \code{"series"} or \code{"grid"}, argument \code{"mirror"} controls whether permutations are taken from the mirror image of the observed ordering in space or time. Consider the sequence \code{1, 2, 3, 4}. The relationship between observations is also preserved if we reverse the original ordering to \code{4, 3, 2, 1} and generate permutations from both these orderings. This is what happens when \code{mirror = TRUE}. For time series, the reversed ordering \code{4, 3, 2, 1} would imply an influence of observation 4 on observation 3, which is implausible. For spatial grids or line transects, however, this is a sensible option, and can significantly increase the number of possible permutations\footnote{Setting \code{mirror = TRUE} will double or quadruple the set of permutations for \code{"series"} or \code{"grid"} permutations, respectively, as long as there are more than two time points or columns in the grid.}. \item[\code{ncol}, \code{nrow}] define the dimensions of the spatial grid. \end{description} How \code{Within()} is used has already been encountered in earlier sections of this vignette; the function is used to supply a value to the \code{within} argument of \code{how()}. You may have noticed that all the arguments of \code{Within()} have default values? This means that the user need only supply a modified value for the arguments they wish to change. Also, arguments that are not relevant for the type of permutation stated are simply ignored; \code{nrow} and \code{ncol}, for example, could be set to any value without affecting the permutation design if \code{type != "grid"}\footnote{No warnings are currently given if incompatible arguments are specified; they are ignored, but may show up in the printed output. This infelicity will be removed prior to \pkg{permute} version 1.0-0 being released.}. \subsubsection{Permuting samples at the Plot level} Permutation of samples at the \emph{plot} level is configured via the \code{Plots()} function. As with \code{Within()}, \code{Plots()} is supplied to the \code{plots} argument of \code{how()}. \code{Plots()} takes many of the same arguments as \code{Within()}, the two differences being \code{strata}, a factor variable that describes the grouping of samples at the \emph{plot} level, and the absence of a \code{constant} argument. As the majority of arguments are similar between \code{Within()} and \code{Plots()}, I will not repeat the details again, and only describe the \code{strata} argument \begin{description} \item[\code{strata}] a factor variable. \code{strata} describes the grouping of samples at the \emph{plot} level, where samples from the same \emph{plot} are take the same \emph{level} of the factor. \end{description} When a \emph{plot}-level design is specified, samples are never permuted between \emph{plots}, only within plots if they are permuted at all. Hence, the type of permutation \emph{within} the \emph{plots} is controlled by \code{Within()}. Note also that with \code{Plots()}, the way the individual \emph{plots} are permuted can be from any one of the four basic permutation types; \code{"none"}, \code{"free"}, \code{"series"}, and \code{"grid"}, as described above. To permute the \emph{plots} only (i.e. retain the ordering of the samples \emph{within} plots), you also need to specify \code{Within(type = "none", ...)} as the default in \code{Within()} is \code{type = "free"}. The ability to permute the plots whilst preserving the within-plot ordering is an impotant feature in testing explanatory factors at the whole-plot level in split-plot designs and in multifactorial analysis of variance \citep{canoco5manual}. \subsubsection[Specifying blocks; the top of the permute hierarchy]{Specifying blocks; the top of the \pkg{permute} hierarchy} In constrast to the \emph{within} and \emph{plots} levels, the \emph{blocks} level is simple to specify; all that is required is an indicator variable the same length as the data. Usually this is a factor, but \code{how()} will take anything that can be coerced to a factor via \code{as.factor()}. It is worth repeating what the role of the block-level structure is; blocks simply restrict permutation to \emph{within}, and never between, blocks, and blocks are never permuted. This is reflected in the implementation; the \emph{split}-\emph{apply}-\code{combine} paradigm is used to split on the blocking factor, the plot- and within-level permutation design is applied separately to each block, and finally the sets of permutations for each block are recombined. \subsection{Examples} To do. \section[Using permute in R functions]{Using \pkg{permute} in \proglang{R} functions} \pkg{permute} originally started life as a set of functions contained within the \pkg{vegan} package \citep{vegan} designed to provide a replacement for the \code{permuted.index()} function. From these humble origins, I realised other users and package authors might want to make use of the code I was writing and so Jari oksanen, the maintainer of \pkg{vegan}, and I decided to spin off the code into the \pkg{permute} package. Hence from the very beginning, \pkg{permute} was intended for use both by users, to defining permutation designs, and by package authors, with which to implement permutation tests within their packages. In the previous sections, I described the various user-facing functions that are employed to set up permutation designs and generate permutations from these. Here I will outline how package authors can use functionality in the \pkg{permute} package to implement permutation tests. In Section~\ref{sec:simple} I showed how a permutation test function could be written using the \code{shuffle()} function and allowing the user to pass into the test function an object created with \code{how()}. As mentioned earlier, it is more efficient to generate a set of permutations via a call to \code{shuffleSet()} than to repeatedly call \code{shuffle()} and large number of times. Another advantage of using \code{shuffleSet()} is that once the set of permutations has been created, parallel processing can be used to break the set of permutations down into smaller chunks, each of which can be worked on simultaneously. As a result, package authors are encouraged to use \code{shuffleSet()} instead of the simpler \code{shuffle()}. To illustrate how to use \pkg{permute} in \proglang{R} functions, I'll rework the permutation test I used for the \code{jackal} data earlier in Section~\ref{sec:simple}. <>= options("prompt" = " ", "continue" = " ") @ <>= pt.test <- function(x, group, nperm = 199) { ## mean difference function meanDif <- function(i, x, grp) { grp <- grp[i] mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) ## iterate over the set of permutations applying meanDif D <- apply(pset, 1, meanDif, x = x, grp = group) ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } @ <>= options("prompt" = "R> ", "continue" = "+ ") @ The commented function should be reasonably self explanatory. I've altered the in-line version of the \code{meanDif()} function to take a vector of permutation indices \code{i} as the first argument, and internally the \code{grp} vector is permuted according to \code{i}. The other major change is that \code{shuffleSet()} is used to generate a set of permutations, which are then iterated over using \code{apply()}. In use we see <>= set.seed(42) ## same seed as earlier pval <- with(jackal, pt.test(Length, Sex, nperm = 4999)) pval @ which nicely agrees with the test we did earlier by hand. Iterating over a set of permutation indices also means that adding parallel processing of the permutations requires only trivial changes to the main function code. As an illustration, below I show a parallel version of \code{pt.test()} <>= options("prompt" = " ", "continue" = " ") @ <>= ppt.test <- function(x, group, nperm = 199, cores = 2) { ## mean difference function meanDif <- function(i, .x, .grp) { .grp <- .grp[i] mean(.x[.grp == "Male"]) - mean(.x[.grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) if (cores > 1) { ## initiate a cluster cl <- makeCluster(cores) on.exit(stopCluster(cl = cl)) ## iterate over the set of permutations applying meanDif D <- parRapply(cl, pset, meanDif, .x = x, .grp = group) } else { D <- apply(pset, 1, meanDif, .x = x, .grp = group) } ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } @ <>= options("prompt" = "R> ", "continue" = "+ ") @ In use we observe <>= require("parallel") set.seed(42) system.time(ppval <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 2)) ppval @ In this case there is little to be gained by splitting the computations over two CPU cores <>= set.seed(42) system.time(ppval2 <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 1)) ppval2 @ The cost of setting up and managing the parallel processes, and recombining the separate sets of results almost negates the gain in running the permutations in parallel. Here, the computations involved in \code{meanDif()} are trivial and we would expect greater efficiencies from running the permutations in parallel for more complex analyses. \subsection{Accesing and changing permutation designs} Th object created by \code{how()} is a relatively simple list containing the settings for the specified permutation design. As such one could use the standard subsetting and replacement functions in base \proglang{R} to alter components of the list. This is not recommended, however, as the internal structure of the list returned by \code{how()} may change in a later version of \pkg{permute}. Furthermore, to facilitate the use of \code{update()} at the user-level to alter the permutation design in a user-friendly way, the matched \code{how()} call is stored within the list along with the matched calls for any \code{Within()} or \code{Plots()} components. These matched calls need to be updated too if the list describing the permutation design is altered. To allow function writers to access and alter permutation designs, \pkg{permute} provides a series of extractor and replacement functions that have the forms \code{getFoo()} and \code{setFoo<-()}, respectively,where \code{Foo} is replaced by a particular component to be extracted or replaced. The \code{getFoo()} functions provided by \pkg{permute} are \begin{description} \item[\code{getWithin()}, \code{getPlots()}, \code{getBlocks()}] these extract the details of the \emph{within}-, \emph{plots}-, and \emph{blocks}-level components of the design. Given the current design (as of \pkg{permute} version 0.8-0), the first two of these return lists with classes \code{"Within"} and \code{"Plots"}, respectively, whilst \code{getBlocks()} returns the block-level factor. \item[\code{getStrata()}] returns the factor describing the grouping of samples at the \emph{plots} or \emph{blocks} levels, as determined by the value of argument \code{which}. \item[\code{getType()}] returns the type of permutation of samples at the \emph{within} or \emph{plots} levels, as determined by the value of argument \code{which}. \item[\code{getMirror()}] returns a logical, indicating whether permutations are drawn from the mirror image of the observed ordering at the \emph{within} or \emph{plots} levels, as determined by the value of argument \code{which}. \item[\code{getConstant()}] returns a logical, indicating whether the same permutation of samples, or a different permutation, is used within each of the plots. \item[\code{getRow()}, \code{getCol()}, \code{getDim()}] return dimensions of the spatial grid of samples at the \emph{plots} or \emph{blocks} levels, as determined by the value of argument \code{which}. \item[\code{getNperm()}, \code{getMaxperm()}, \code{getMinperm()}] return numerics for the stored number of permutations requested plus two triggers used when checking permutation designs via \code{check()}. \item[\code{getComplete()}] returns a logical, indicating whether complete enumeration of the set of permutations was requested. \item[\code{getMake()}] returns a logical, indicating whether the entire set of permutations should be produced or not. \item[\code{getObserved()}] returns a logical, which indicates whether the observed permutation (ordering of samples) is included in the entire set of permutation generated by \code{allPerms()}. \item[\code{getAllperms()}] extracts the complete set of permutations if present. Returns \code{NULL} if the set has not been generated. \end{description} The available \code{setFoo()<-} functions are \begin{description} \item[\code{setPlots<-()}, \code{setWithin<-()};] replaces the details of the \emph{within}-, and \emph{plots}-, components of the design. The replacement object must be of class \code{"Plots"} or \code{"Within"}, respectively, and hence is most usefully used in combination with the \code{Plots()} or \code{Within()} constructor functions. \item[\code{setBlocks<-()};] replaces the factor that partitions the observations into blocks. \code{value} can be any \proglang{R} object that can be coerced to a factor vector via \code{as.factor()}. \item[\code{setStrata<-()};] replaces either the \code{blocks} or \code{strata} components of the design, depending on what class of object \code{setStrata<-()} is applied to. When used on an object of class \code{"how"}, \code{setStrata<-()} replaces the \code{blocks} component of that object. When used on an object of class \code{"Plots"}, \code{setStrata<-()} replaces the \code{strata} component of that object. In both cases a factor variable is required and the replacement object will be coerced to a factor via \code{as.factor()} if possible. \item[\code{setType<-()};] replaces the \code{type} component of an object of class \code{"Plots"} or \code{"Within"} with a character vector of length one. Must be one of the available types: \code{"none"}, \code{"free"}, \code{"series"}, or \code{"grid"}. \item[\code{setMirror<-()};] replaces the \code{mirror} component of an object of class \code{"Plots"} or \code{"Within"} with a logical vector of length one. \item[\code{setConstant<-()};] replaces the \code{constant} component of an object of class \code{"Within"} with a logical vector of length one. \item[\code{setRow<-()}, \code{setCol<-()}, \code{setDim<-()};] replace one or both of the spatial grid dimensions of an object of class \code{"Plots"} or \code{"Within"} with am integer vector of length one, or, in the case of \code{setDim<-()}, of length 2. \item[\code{setNperm<-()}, \code{setMinperm<-()}, \code{setMaxperm<-()};] update the stored values for the requested number of permutations and the minimum and maximum permutation thresholds that control whether the entire set of permutations is generated instead of \code{nperm} permutations. \item[\code{setAllperms<-()};] assigns a matrix of permutation indices to the \code{all.perms} component of the design list object. \item[\code{setComplete<-()};] updates the status of the \code{complete} setting. Takes a logical vector of length 1 or any object coercible to such. \item[\code{setMake<-()};] sets the indicator controlling whether the entrie set of permutations is generated during checking of the design via \code{check()}. Takes a logical vector of length 1 or any object coercible to such. \item[\code{setObserved<-()};] updates the indicator of whether the observed ordering is included in the set of all permutations should they be generated. Takes a logical vector of length 1 or any object coercible to such. \end{description} \subsubsection{Examples} I illustrate the behaviour of the \code{getFoo()} and \code{setFoo<-()} functions through a couple of simple examples. Firstly, generate a design object <>= hh <- how() @ This design is one of complete randomization, so all of the settings in the object take their default values. The default number of permutations is currently \Sexpr{getNperm(hh)}, and can be extracted using \code{getNperm()} <>= getNperm(hh) @ The corresponding replacement function can be use to alter the number of permutations after the design has been generated. To illustrate a finer point of the behaviour of these replacement functions, compare the matched call stored in \code{hh} before and after the number of permutations is changed <<>= getCall(hh) setNperm(hh) <- 999 getNperm(hh) getCall(hh) @ Note how the \code{call} component has been altered to include the argument pair \code{nperm = 999}, hence if this call were evaluated, the resulting object would be a copy of \code{hh}. As a more complex example, consider the following design consisting of 5 blocks, each containing 2 plots of 5 samples each. Hence there are a total of 10 plots. Both the plots and within-plot sample are time series. This design can be created using <>= hh <- how(within = Within(type = "series"), plots = Plots(type = "series", strata = gl(10, 5)), blocks = gl(5, 10)) @ To alter the design at the plot or within-plot levels, it is convenient to extract the relevant component using \code{getPlots()} or \code{getWithin()}, update the extracted object, and finally use the updated object to update \code{hh}. This process is illustrated below in order to change the plot-level permutation type to \code{"free"} <>= pl <- getPlots(hh) setType(pl) <- "free" setPlots(hh) <- pl @ We can confirm this has been changed by extracting the permutation type for the plot level <>= getType(hh, which = "plots") @ Notice too how the call has been expanded from \code{gl(10, 5)} to an integer vector. This expansion is to avoid the obvious problem of locating the objects referred to in the call should the call be re-evaluated later. <>= getCall(getPlots(hh)) @ At the top level, a user can update the design using \code{update()}. Hence the equivalent of the above update is (this time resetting the original type; \code{type = "series"}) <>= hh <- update(hh, plots = update(getPlots(hh), type = "series")) getType(hh, which = "plots") @ However, this approach is not assured of working within a function because we do not guarantee that components of the call used to create \code{hh} can be found from the execution frame where \code{update()} is called. To be safe, always use the \code{setFoo<-()} replacement functions to update design objects from within your functions. \section*{Computational details} This vignette was built within the following environment: <>= toLatex(sessionInfo(), locale = FALSE) @ \bibliography{permute} \end{document} permute/tests/0000755000175100001440000000000012271654064013122 5ustar hornikuserspermute/tests/Examples/0000755000175100001440000000000012271654064014700 5ustar hornikuserspermute/tests/Examples/permute-Ex.Rout.save0000644000175100001440000012651412271625725020556 0ustar hornikusers R version 3.0.2 Patched (2014-01-14 r64768) -- "Frisbee Sailing" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-unknown-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale 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. > pkgname <- "permute" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('permute') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("allPerms") > ### * allPerms > > flush(stderr()); flush(stdout()) > > ### Name: allPerms > ### Title: Complete enumeration of all possible permutations > ### Aliases: allPerms print.allPerms summary.allPerms > ### print.summary.allPerms > > ### ** Examples > > ## allPerms can work with a vector > vec <- c(3,4,5) > allPerms(vec) ## free permutation [,1] [,2] [,3] [1,] 1 3 2 [2,] 2 1 3 [3,] 2 3 1 [4,] 3 1 2 [5,] 3 2 1 > > ## enumerate all possible permutations for a more complicated > ## design > fac <- gl(2,6) > ctrl <- how(within = Within(type = "grid", mirror = FALSE, + constant = TRUE, nrow = 3, ncol = 2), + plots = Plots(strata = fac)) > Nobs <- length(fac) > numPerms(seq_len(Nobs), control = ctrl) ## 6 [1] 6 > (tmp <- allPerms(Nobs, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > (tmp2 <- allPerms(Nobs, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## turn on mirroring > ##ctrl$within$mirror <- TRUE > ctrl <- update(ctrl, within = update(getWithin(ctrl), mirror = TRUE)) > numPerms(seq_len(Nobs), control = ctrl) [1] 12 > (tmp3 <- allPerms(Nobs, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > (tmp4 <- allPerms(Nobs, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > > ## prints out details of the permutation scheme as > ## well as the matrix of permutations > summary(tmp3) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: Yes Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations requested: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 All permutations: Contains observed ordering?: Yes [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > summary(tmp4) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: Yes Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations requested: 198 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 All permutations: Contains observed ordering?: No [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > > > > cleanEx() > nameEx("check") > ### * check > > flush(stderr()); flush(stdout()) > > ### Name: check > ### Title: Utility functions for permutation schemes > ### Aliases: check print.check print.summary.check summary.check > ### Keywords: utilities design methods > > ### ** Examples > > ## use example data from ?pyrifos in package vegan > require(vegan) Loading required package: vegan Loading required package: lattice This is vegan 2.0-10 > example(pyrifos) pyrifs> data(pyrifos) pyrifs> ditch <- gl(12, 1, length=132) pyrifs> week <- gl(11, 12, labels=c(-4, -1, 0.1, 1, 2, 4, 8, 12, 15, 19, 24)) pyrifs> dose <- factor(rep(c(0.1, 0, 0, 0.9, 0, 44, 6, 0.1, 44, 0.9, 0, 6), 11)) > > ## Demonstrate the maximum number of permutations for the pyrifos data > ## under a series of permutation schemes > > ## no restrictions - lots of perms > CONTROL <- how(within = Within(type = "free")) > (check1 <- check(pyrifos, CONTROL)) [1] 1.118249e+224 > ##summary(check1) > > ## no strata but data are series with no mirroring, so 132 permutations > CONTROL <- how(within = Within(type = "series", mirror = FALSE)) > check(pyrifos, CONTROL) 'nperm' > set of all permutations; Resetting 'nperm'. [1] 132 > > ## no strata but data are series with mirroring, so 264 permutations > CONTROL <- how(within = Within(type = "series", mirror = TRUE)) > check(pyrifos, control = CONTROL) [1] 264 > > ## unrestricted within strata > check(pyrifos, control = how(plots = Plots(strata = ditch), + within = Within(type = "free"))) [1] 1.636321e+91 > > ## time series within strata, no mirroring > check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = FALSE))) [1] 3.138428e+12 > > ## time series within strata, with mirroring > check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = TRUE))) [1] 1.2855e+16 > > ## time series within strata, no mirroring, same permutation > ## within strata > check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", constant = TRUE))) 'nperm' > set of all permutations; Resetting 'nperm'. Set of permutations < 'minperm'. Generating entire set. [1] 11 > > ## time series within strata, with mirroring, same permutation > ## within strata > check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = TRUE, + constant = TRUE))) 'nperm' > set of all permutations; Resetting 'nperm'. Set of permutations < 'minperm'. Generating entire set. [1] 22 > ## permute strata > check(pyrifos, how(plots = Plots(strata = ditch, type = "free"), + within = Within(type = "none"))) [1] 479001600 > > ## this should also also for arbitrary vectors > vec1 <- check(1:100) > vec2 <- check(1:100, how()) > all.equal(vec1, vec2) [1] TRUE > vec3 <- check(1:100, how(within = Within(type = "series"))) 'nperm' > set of all permutations; Resetting 'nperm'. > all.equal(100, vec3$n) [1] TRUE > vec4 <- check(1:100, how(within = Within(type= "series", mirror = TRUE))) > all.equal(vec4$n, 200) [1] TRUE > > ## enumerate all possible permutations > fac <- gl(2,6) > ctrl <- how(plots = Plots(strata = fac), + within = Within(type = "grid", mirror = FALSE, + constant = TRUE, nrow = 3, ncol = 2)) > check(1:12, ctrl) 'nperm' > set of all permutations; Resetting 'nperm'. Set of permutations < 'minperm'. Generating entire set. [1] 6 > > numPerms(1:12, control = ctrl) [1] 6 > (tmp <- allPerms(12, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > (tmp2 <- allPerms(12, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## turn on mirroring > ctrl <- update(ctrl, within = update(getWithin(ctrl), mirror = TRUE)) > numPerms(1:12, control = ctrl) [1] 12 > (tmp3 <- allPerms(12, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > (tmp4 <- allPerms(12, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > ## prints out details of the permutation scheme as > ## well as the matrix of permutations > summary(tmp) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: No Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations requested: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 All permutations: Contains observed ordering?: Yes [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > summary(tmp2) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: No Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations requested: 198 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 All permutations: Contains observed ordering?: No [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## different numbers of observations per level of strata > fac <- factor(rep(1:3, times = c(3,2,2))) > ## free permutations in levels of strata > numPerms(7, how(within = Within(type = "free"), + plots = Plots(strata = fac, type = "none"))) [1] 24 > allPerms(7, how(within = Within(type = "free"), + plots = Plots(strata = fac))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 1 2 3 4 5 7 6 [2,] 1 2 3 5 4 6 7 [3,] 1 2 3 5 4 7 6 [4,] 1 3 2 4 5 6 7 [5,] 1 3 2 4 5 7 6 [6,] 1 3 2 5 4 6 7 [7,] 1 3 2 5 4 7 6 [8,] 2 1 3 4 5 6 7 [9,] 2 1 3 4 5 7 6 [10,] 2 1 3 5 4 6 7 [11,] 2 1 3 5 4 7 6 [12,] 2 3 1 4 5 6 7 [13,] 2 3 1 4 5 7 6 [14,] 2 3 1 5 4 6 7 [15,] 2 3 1 5 4 7 6 [16,] 3 1 2 4 5 6 7 [17,] 3 1 2 4 5 7 6 [18,] 3 1 2 5 4 6 7 [19,] 3 1 2 5 4 7 6 [20,] 3 2 1 4 5 6 7 [21,] 3 2 1 4 5 7 6 [22,] 3 2 1 5 4 6 7 [23,] 3 2 1 5 4 7 6 > ## series permutations in levels of strata > ctrl <- how(within = Within(type = "series"), plots = Plots(strata = fac)) > numPerms(7, control = ctrl) [1] 12 > allPerms(7, control = ctrl) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 2 3 1 5 4 7 6 [2,] 2 3 1 5 4 6 7 [3,] 2 3 1 4 5 7 6 [4,] 2 3 1 4 5 6 7 [5,] 3 1 2 5 4 7 6 [6,] 3 1 2 5 4 6 7 [7,] 3 1 2 4 5 7 6 [8,] 3 1 2 4 5 6 7 [9,] 1 2 3 5 4 7 6 [10,] 1 2 3 5 4 6 7 [11,] 1 2 3 4 5 7 6 > > > > cleanEx() detaching ‘package:vegan’, ‘package:lattice’ > nameEx("get-methods") > ### * get-methods > > flush(stderr()); flush(stdout()) > > ### Name: get-methods > ### Title: Extractor functions to access components of a permutation design > ### Aliases: get-methods getBlocks getBlocks.default getBlocks.how > ### getBlocks.permControl getWithin getWithin.default getWithin.how > ### getWithin.permControl getStrata getStrata.default getStrata.how > ### getStrata.permControl getStrata.Plots getType getType.default > ### getType.how getType.permControl getType.Plots getType.Within > ### getMirror getMirror.default getMirror.how getMirror.permControl > ### getMirror.Plots getMirror.Within getConstant getConstant.default > ### getConstant.how getConstant.permControl getConstant.Within getPlots > ### getPlots.default getPlots.how getPlots.permControl getRow > ### getRow.default getRow.how getRow.permControl getRow.Plots > ### getRow.Within getCol getCol.default getCol.how getCol.permControl > ### getCol.Plots getCol.Within getDim getDim.default getDim.how > ### getDim.permControl getDim.Plots getDim.Within getNperm > ### getNperm.default getNperm.how getNperm.permControl getMaxperm > ### getMaxperm.default getMaxperm.how getMaxperm.permControl getMinperm > ### getMinperm.default getMinperm.how getMinperm.permControl getComplete > ### getComplete.default getComplete.how getComplete.permControl getMake > ### getMake.default getMake.how getObserved getObserved.default > ### getObserved.how getAllperms getAllperms.default getAllperms.how > ### Keywords: methods utils > > ### ** Examples > > ## extract components from a "how" object > hh <- how() > getWithin(hh) $type [1] "free" $constant [1] FALSE $mirror [1] FALSE $ncol NULL $nrow NULL $call Within() attr(,"class") [1] "Within" > getNperm(hh) [1] 199 > > > > cleanEx() > nameEx("how") > ### * how > > flush(stderr()); flush(stdout()) > > ### Name: how > ### Title: How to define a permutation design? > ### Aliases: how print.how Blocks Within Plots > ### Keywords: utils > > ### ** Examples > > ## Set up factors for the Plots and Blocks > plts <- gl(4, 10) ## 4 Plots of 10 samples each > blks <- gl(2, 20) ## 2 Blocks of 20 samples each > > ## permutation design > h1 <- how(within = Within(type = "series", mirror = TRUE), + plots = Plots(strata = plts, type = "series"), + blocks = blks) > > ## The design can be updated... > ## ... remove the blocking: > update(h1, blocks = NULL) Permutation Design: Blocks: Defined by: none Plots: Plots: plts Permutation type: series Mirrored?: No Within Plots: Permutation type: series Mirrored?: Yes Different permutation within each Plot?: Yes Permutation details: Number of permutations requested: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 > > ## ... or switch the type of shuffling at a level: > #update(h1, plots = update(getPlots(h1), type = "none")) > plots2 <- update(getPlots(h1), type = "none") > update(h1, plots = plots2) Permutation Design: Blocks: Blocks: blks Plots: Plots: plts Permutation type: none Mirrored?: No Within Plots: Permutation type: series Mirrored?: Yes Different permutation within each Plot?: Yes Permutation details: Number of permutations requested: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 99 > > > > cleanEx() > nameEx("jackal") > ### * jackal > > flush(stderr()); flush(stdout()) > > ### Name: jackal > ### Title: Mandible lengths of male and female golden jackals > ### Aliases: jackal > ### Keywords: datasets > > ### ** Examples > > data(jackal) > str(jackal) 'data.frame': 20 obs. of 2 variables: $ Length: num 120 107 110 116 114 111 113 117 114 112 ... $ Sex : Factor w/ 2 levels "Male","Female": 1 1 1 1 1 1 1 1 1 1 ... > > ## boxplot of mandible length vs sex > plot(Length ~ Sex, data = jackal) > > > > cleanEx() > nameEx("nobs") > ### * nobs > > flush(stderr()); flush(stdout()) > > ### Name: nobs-methods > ### Title: Number of observations in a given object > ### Aliases: nobs-methods nobs.numeric nobs.integer nobs.matrix > ### nobs.data.frame > > ### ** Examples > > ## numeric vector > len <- sample(1:10, 1) > v <- as.numeric(sample(1:100, len)) > len [1] 3 > obs <- nobs(v) > isTRUE(all.equal(len, obs)) [1] TRUE > > ## integer > len <- sample(1L:10L, 1) > obs <- nobs(len) > isTRUE(all.equal(len, obs)) [1] FALSE > > > > > cleanEx() > nameEx("numPerms") > ### * numPerms > > flush(stderr()); flush(stdout()) > > ### Name: numPerms > ### Title: Number of possible permutations for a given object > ### Aliases: numPerms > > ### ** Examples > > ## permutation design --- see ?how > ctrl <- how() ## defaults to freely exchangeable > > ## vector input > v <- 1:10 > (obs <- nobs(v)) [1] 10 > numPerms(v, control = ctrl) [1] 3628800 > > ## integer input > len <- length(v) > (obs <- nobs(len)) [1] 1 > numPerms(len, control = ctrl) [1] 3628800 > > ## new design, objects are a time series > ctrl <- how(within = Within(type = "series")) > numPerms(v, control = ctrl) [1] 10 > ## number of permutations possible drastically reduced... > ## ...turn on mirroring > ctrl <- how(within = Within(type = "series", mirror = TRUE)) > numPerms(v, control = ctrl) [1] 20 > > ## Try blocking --- 2 groups of 5 > bl <- numPerms(v, control = how(blocks = gl(2,5))) > bl [1] 14400 > > ## should be same as > pl <- numPerms(v, control = how(plots = Plots(strata = gl(2,5)))) > pl [1] 14400 > stopifnot(all.equal(bl, pl)) > > > > cleanEx() > nameEx("set-methods") > ### * set-methods > > flush(stderr()); flush(stdout()) > > ### Name: set-methods > ### Title: Replacement functions to set components of a permutation design > ### Aliases: set-methods setBlocks<- setBlocks<-.default setBlocks<-.how > ### setBlocks<-.permControl setWithin<- setWithin<-.default > ### setWithin<-.how setStrata<- setStrata<-.default setStrata<-.how > ### setStrata<-.Plots setType<- setType<-.default setType<-.how > ### setType<-.Plots setType<-.Within setMirror<- setMirror<-.default > ### setMirror<-.how setMirror<-.Plots setMirror<-.Within setConstant<- > ### setConstant<-.default setConstant<-.how setConstant<-.Plots > ### setConstant<-.Within setPlots<- setPlots<-.default setPlots<-.how > ### setRow<- setRow<-.default setRow<-.how setRow<-.Plots setRow<-.Within > ### setCol<- setCol<-.default setCol<-.how setCol<-.Plots setCol<-.Within > ### setDim<- setDim<-.default setDim<-.how setDim<-.Plots setDim<-.Within > ### setNperm<- setNperm<-.default setNperm<-.how setNperm<-.permControl > ### setAllperms<- setAllperms<-.default setAllperms<-.how > ### setAllperms<-.permControl setMaxperm<- setMaxperm<-.default > ### setMaxperm<-.how setMaxperm<-.permControl setMinperm<- > ### setMinperm<-.default setMinperm<-.how setMinperm<-.permControl > ### setComplete<- setComplete<-.default setComplete<-.how > ### setComplete<-.permControl setMake<- setMake<-.default setMake<-.how > ### setObserved<- setObserved<-.default setObserved<-.how > ### Keywords: methods utils > > ### ** Examples > > ## extract components from a "how" object > hh <- how() > getNperm(hh) [1] 199 > setNperm(hh) <- 999 > getNperm(hh) [1] 999 > > > > cleanEx() > nameEx("shuffle-utils") > ### * shuffle-utils > > flush(stderr()); flush(stdout()) > > ### Name: shuffle-utils > ### Title: Utility functions for unrestricted and restricted permutations > ### Aliases: shuffle-utils shuffleFree shuffleGrid shuffleSeries > ### shuffleStrata > ### Keywords: htest design > > ### ** Examples > > set.seed(3) > > ## draw 1 value at random from the set 1:10 > shuffleFree(1:10, 1) [1] 1 > > ## permute the series 1:10 > x <- 1:10 > shuffleSeries(x) ## with random starting point [1] 10 1 2 3 4 5 6 7 8 9 > shuffleSeries(x, start = 5L) ## known starting point [1] 6 7 8 9 10 1 2 3 4 5 > shuffleSeries(x, flip = TRUE) ## random start, forced mirror [1] 5 6 7 8 9 10 1 2 3 4 > shuffleSeries(x, mirror = TRUE) ## random start, possibly mirror [1] 5 6 7 8 9 10 1 2 3 4 > > ## permute a grid of size 3x3 > shuffleGrid(3, 3) ## random starting row/col [1] 6 4 5 9 7 8 3 1 2 > shuffleGrid(3, 3, start.row = 2, + start.col = 3) ## with known row/col [1] 3 1 2 6 4 5 9 7 8 > shuffleGrid(3, 3, flip = rep(TRUE, 2)) ## random start, forced mirror [1] 8 9 7 2 3 1 5 6 4 > > > > cleanEx() > nameEx("shuffle") > ### * shuffle > > flush(stderr()); flush(stdout()) > > ### Name: shuffle > ### Title: Unrestricted and restricted permutations > ### Aliases: shuffle permute > ### Keywords: htest design > > ### ** Examples > > set.seed(1234) > > ## unrestricted permutations > shuffle(20) [1] 3 12 11 18 14 10 1 4 8 6 7 5 20 15 2 9 17 16 19 13 > > ## observations represent a time series of line transect > CTRL <- how(within = Within(type = "series")) > shuffle(20, control = CTRL) [1] 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 > > ## observations represent a time series of line transect > ## but with mirroring allowed > CTRL <- how(within = Within(type = "series", mirror = TRUE)) > shuffle(20, control = CTRL) [1] 7 6 5 4 3 2 1 20 19 18 17 16 15 14 13 12 11 10 9 8 > > ## observations represent a spatial grid, 5rx4c > nr <- 5 > nc <- 4 > CTRL <- how(within = Within(type = "grid", ncol = nc, nrow = nr)) > perms <- shuffle(20, control = CTRL) > ## view the permutation as a grid > matrix(matrix(1:20, nrow = nr, ncol = nc)[perms], + ncol = nc, nrow = nr) [,1] [,2] [,3] [,4] [1,] 7 12 17 2 [2,] 8 13 18 3 [3,] 9 14 19 4 [4,] 10 15 20 5 [5,] 6 11 16 1 > > ## random permutations in presence of strata > plots <- Plots(strata = gl(4, 5)) > CTRL <- how(plots = plots, within = Within(type = "free")) > shuffle(20, CTRL) [1] 5 3 4 2 1 8 7 6 9 10 14 11 15 12 13 18 20 16 17 19 > ## as above but same random permutation within strata > CTRL <- how(plots = plots, within = Within(type = "free", + constant = TRUE)) > shuffle(20, CTRL) [1] 3 5 2 1 4 8 10 7 6 9 13 15 12 11 14 18 20 17 16 19 > > ## time series within each level of block > CTRL <- how(plots = plots, within = Within(type = "series")) > shuffle(20, CTRL) [1] 2 3 4 5 1 8 9 10 6 7 15 11 12 13 14 19 20 16 17 18 > ## as above, but with same permutation for each level > CTRL <- how(plots = plots, within = Within(type = "series", + constant = TRUE)) > shuffle(20, CTRL) [1] 2 3 4 5 1 7 8 9 10 6 12 13 14 15 11 17 18 19 20 16 > > ## spatial grids within each level of block, 4 x (5r x 5c) > nr <- 5 > nc <- 5 > nb <- 4 ## number of blocks > plots <- Plots(gl(nb, 25)) > CTRL <- how(plots = plots, + within = Within(type = "grid", ncol = nc, nrow = nr)) > shuffle(100, CTRL) [1] 24 25 21 22 23 4 5 1 2 3 9 10 6 7 8 14 15 11 [19] 12 13 19 20 16 17 18 27 28 29 30 26 32 33 34 35 31 37 [37] 38 39 40 36 42 43 44 45 41 47 48 49 50 46 56 57 58 59 [55] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 51 52 [73] 53 54 55 83 84 85 81 82 88 89 90 86 87 93 94 95 91 92 [91] 98 99 100 96 97 78 79 80 76 77 > ## as above, but with same permutation for each level > CTRL <- how(plots = plots, + within = Within(type = "grid", ncol = nc, nrow = nr, + constant = TRUE)) > shuffle(100, CTRL) [1] 23 24 25 21 22 3 4 5 1 2 8 9 10 6 7 13 14 15 [19] 11 12 18 19 20 16 17 48 49 50 46 47 28 29 30 26 27 33 [37] 34 35 31 32 38 39 40 36 37 43 44 45 41 42 73 74 75 71 [55] 72 53 54 55 51 52 58 59 60 56 57 63 64 65 61 62 68 69 [73] 70 66 67 98 99 100 96 97 78 79 80 76 77 83 84 85 81 82 [91] 88 89 90 86 87 93 94 95 91 92 > > ## permuting levels of plots instead of observations > CTRL <- how(plots = Plots(gl(4, 5), type = "free"), + within = Within(type = "none")) > shuffle(20, CTRL) [1] 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 > ## permuting levels of plots instead of observations > ## but plots represent a time series > CTRL <- how(plots = Plots(gl(4, 5), type = "series"), + within = Within(type = "none")) > shuffle(20, CTRL) [1] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 > > ## permuting levels of plots but plots represent a time series > ## free permutation within plots > CTRL <- how(plots = Plots(gl(4, 5), type = "series"), + within = Within(type = "free")) > shuffle(20, CTRL) [1] 2 1 3 4 5 6 10 9 7 8 11 12 13 14 15 16 18 20 17 19 > > ## permuting within blocks > grp <- gl(2, 10) # 2 groups of 10 samples each > CTRL <- how(blocks = grp) > shuffle(length(grp), control = CTRL) [1] 1 3 6 10 4 2 7 8 9 5 12 14 11 15 18 17 16 19 20 13 > > ## Simple function using permute() to assess significance > ## of a t.test > pt.test <- function(x, group, control) { + ## function to calculate t + t.statistic <- function(x, y) { + m <- length(x) + n <- length(y) + ## means and variances, but for speed + xbar <- mean(x) + ybar <- mean(y) + xvar <- var(x) + yvar <- var(y) + pooled <- sqrt(((m-1)*xvar + (n-1)*yvar) / (m+n-2)) + (xbar - ybar) / (pooled * sqrt(1/m + 1/n)) + } + ## check the control object + #control <- check(x, control)$control ## FIXME + ## number of observations + Nobs <- nobs(x) + ## group names + lev <- names(table(group)) + ## vector to hold results, +1 because of observed t + t.permu <- numeric(length = control$nperm) + 1 + ## calculate observed t + t.permu[1] <- t.statistic(x[group == lev[1]], x[group == lev[2]]) + ## generate randomisation distribution of t + for(i in seq_along(t.permu)) { + ## return a permutation + want <- permute(i, Nobs, control) + ## calculate permuted t + t.permu[i+1] <- t.statistic(x[want][group == lev[1]], + x[want][group == lev[2]]) + } + ## pval from permutation test + pval <- sum(abs(t.permu) >= abs(t.permu[1])) / (control$nperm + 1) + ## return value + return(list(t.stat = t.permu[1], pval = pval)) + } > > ## generate some data with slightly different means > set.seed(1234) > gr1 <- rnorm(20, mean = 9) > gr2 <- rnorm(20, mean = 10) > dat <- c(gr1, gr2) > ## grouping variable > grp <- gl(2, 20, labels = paste("Group", 1:2)) > ## create the permutation design > control <- how(nperm = 999, within = Within(type = "free")) > ## perform permutation t test > perm.val <- pt.test(dat, grp, control) > perm.val $t.stat [1] -2.342064 $pval [1] 0.024 > > ## compare perm.val with the p-value from t.test() > t.test(dat ~ grp, var.equal = TRUE) Two Sample t-test data: dat by grp t = -2.3421, df = 38, p-value = 0.02452 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -1.25582408 -0.09136416 sample estimates: mean in group Group 1 mean in group Group 2 8.749336 9.422930 > > > > cleanEx() > nameEx("shuffleSet") > ### * shuffleSet > > flush(stderr()); flush(stdout()) > > ### Name: shuffleSet > ### Title: Generate a set of permutations from the specified design. > ### Aliases: shuffleSet > ### Keywords: htest design > > ### ** Examples > > ## simple random permutations, 5 permutations in set > shuffleSet(n = 10, nset = 5) No. of Permutations: 5 No. of Samples: 10 (Nested in: plots; Randomised) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 3 4 5 7 2 8 9 6 10 1 [2,] 3 2 6 10 5 7 8 4 1 9 [3,] 10 2 6 1 9 8 7 5 3 4 [4,] 5 6 4 2 10 8 9 1 7 3 [5,] 9 6 7 4 8 10 1 2 3 5 > > ## series random permutations, 5 permutations in set > shuffleSet(10, 5, how(within = Within(type = "series"))) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 5 No. of Samples: 10 (Nested in: plots; Sequence) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 6 7 8 9 10 1 2 3 4 5 [2,] 8 9 10 1 2 3 4 5 6 7 [3,] 5 6 7 8 9 10 1 2 3 4 [4,] 3 4 5 6 7 8 9 10 1 2 [5,] 2 3 4 5 6 7 8 9 10 1 > > ## series random permutations, 10 permutations in set, > ## with possible mirroring > CTRL <- how(within = Within(type = "series", mirror = TRUE)) > shuffleSet(10, 10, CTRL) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 10 (Nested in: plots; Sequence; mirrored) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 3 4 5 6 7 8 9 10 1 2 [2,] 7 8 9 10 1 2 3 4 5 6 [3,] 10 1 2 3 4 5 6 7 8 9 [4,] 2 1 10 9 8 7 6 5 4 3 [5,] 8 9 10 1 2 3 4 5 6 7 [6,] 4 3 2 1 10 9 8 7 6 5 [7,] 5 6 7 8 9 10 1 2 3 4 [8,] 9 8 7 6 5 4 3 2 1 10 [9,] 5 4 3 2 1 10 9 8 7 6 [10,] 6 5 4 3 2 1 10 9 8 7 > > ## Permuting strata > ## 4 groups of 5 observations > CTRL <- how(within = Within(type = "none"), + plots = Plots(strata = gl(4,5), type = "free")) > shuffleSet(20, 10, control = CTRL) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; ) Restricted by Plots: gl(4, 5) (4 plots; Randomised) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] 6 7 8 9 10 1 2 3 4 5 11 12 13 [2,] 6 7 8 9 10 16 17 18 19 20 11 12 13 [3,] 11 12 13 14 15 16 17 18 19 20 6 7 8 [4,] 1 2 3 4 5 11 12 13 14 15 6 7 8 [5,] 16 17 18 19 20 6 7 8 9 10 11 12 13 [6,] 6 7 8 9 10 1 2 3 4 5 16 17 18 [7,] 11 12 13 14 15 6 7 8 9 10 16 17 18 [8,] 16 17 18 19 20 11 12 13 14 15 6 7 8 [9,] 11 12 13 14 15 16 17 18 19 20 1 2 3 [10,] 16 17 18 19 20 1 2 3 4 5 6 7 8 [,14] [,15] [,16] [,17] [,18] [,19] [,20] [1,] 14 15 16 17 18 19 20 [2,] 14 15 1 2 3 4 5 [3,] 9 10 1 2 3 4 5 [4,] 9 10 16 17 18 19 20 [5,] 14 15 1 2 3 4 5 [6,] 19 20 11 12 13 14 15 [7,] 19 20 1 2 3 4 5 [8,] 9 10 1 2 3 4 5 [9,] 4 5 6 7 8 9 10 [10,] 9 10 11 12 13 14 15 > > ## 10 random permutations in presence of Plot-level strata > plotStrata <- Plots(strata = gl(4,5)) > CTRL <- how(plots = plotStrata, + within = Within(type = "free")) > numPerms(20, control = CTRL) [1] 207360000 > shuffleSet(20, 10, control = CTRL) No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Randomised) Restricted by Plots: gl(4, 5) (4 plots) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] 5 4 2 3 1 8 10 7 6 9 12 13 11 [2,] 4 2 5 3 1 9 7 6 10 8 12 11 15 [3,] 1 3 5 4 2 10 7 9 6 8 13 15 11 [4,] 3 5 2 4 1 9 8 6 10 7 13 11 15 [5,] 1 3 5 4 2 7 9 10 8 6 13 11 12 [6,] 5 3 4 2 1 7 6 8 10 9 11 14 13 [7,] 3 1 5 4 2 7 6 10 9 8 13 15 11 [8,] 2 3 4 5 1 7 6 9 10 8 13 12 11 [9,] 4 3 2 1 5 7 8 9 6 10 12 15 11 [10,] 1 5 2 4 3 8 7 6 9 10 11 15 13 [,14] [,15] [,16] [,17] [,18] [,19] [,20] [1,] 14 15 17 16 20 18 19 [2,] 13 14 20 18 17 16 19 [3,] 14 12 18 16 19 17 20 [4,] 14 12 19 18 16 20 17 [5,] 15 14 19 20 18 16 17 [6,] 12 15 19 17 16 20 18 [7,] 14 12 20 16 18 17 19 [8,] 15 14 17 16 20 18 19 [9,] 13 14 19 20 17 18 16 [10,] 12 14 16 20 17 19 18 > ## as above but same random permutation within Plot-level strata > CTRL <- how(plots = plotStrata, + within = Within(type = "free", constant = TRUE)) > numPerms(20, control = CTRL) [1] 120 > shuffleSet(20, 10, CTRL) ## check this. No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Randomised; same permutation in each plot) Restricted by Plots: gl(4, 5) (4 plots) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] 1 2 5 3 4 6 7 10 8 9 11 12 15 [2,] 1 3 4 5 2 6 8 9 10 7 11 13 14 [3,] 1 2 5 3 4 6 7 10 8 9 11 12 15 [4,] 2 1 3 4 5 7 6 8 9 10 12 11 13 [5,] 4 1 5 3 2 9 6 10 8 7 14 11 15 [6,] 4 1 2 5 3 9 6 7 10 8 14 11 12 [7,] 5 1 3 4 2 10 6 8 9 7 15 11 13 [8,] 1 5 3 2 4 6 10 8 7 9 11 15 13 [9,] 3 1 2 5 4 8 6 7 10 9 13 11 12 [10,] 4 2 5 3 1 9 7 10 8 6 14 12 15 [,14] [,15] [,16] [,17] [,18] [,19] [,20] [1,] 13 14 16 17 20 18 19 [2,] 15 12 16 18 19 20 17 [3,] 13 14 16 17 20 18 19 [4,] 14 15 17 16 18 19 20 [5,] 13 12 19 16 20 18 17 [6,] 15 13 19 16 17 20 18 [7,] 14 12 20 16 18 19 17 [8,] 12 14 16 20 18 17 19 [9,] 15 14 18 16 17 20 19 [10,] 13 11 19 17 20 18 16 > > ## time series within each level of Plot strata > CTRL <- how(plots = plotStrata, + within = Within(type = "series")) > shuffleSet(20, 10, CTRL) No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Sequence) Restricted by Plots: gl(4, 5) (4 plots) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] 1 2 3 4 5 6 7 8 9 10 15 11 12 [2,] 5 1 2 3 4 6 7 8 9 10 13 14 15 [3,] 1 2 3 4 5 7 8 9 10 6 13 14 15 [4,] 2 3 4 5 1 9 10 6 7 8 11 12 13 [5,] 2 3 4 5 1 9 10 6 7 8 13 14 15 [6,] 3 4 5 1 2 9 10 6 7 8 12 13 14 [7,] 5 1 2 3 4 9 10 6 7 8 12 13 14 [8,] 4 5 1 2 3 6 7 8 9 10 13 14 15 [9,] 2 3 4 5 1 6 7 8 9 10 14 15 11 [10,] 3 4 5 1 2 6 7 8 9 10 13 14 15 [,14] [,15] [,16] [,17] [,18] [,19] [,20] [1,] 13 14 18 19 20 16 17 [2,] 11 12 18 19 20 16 17 [3,] 11 12 19 20 16 17 18 [4,] 14 15 16 17 18 19 20 [5,] 11 12 20 16 17 18 19 [6,] 15 11 18 19 20 16 17 [7,] 15 11 20 16 17 18 19 [8,] 11 12 16 17 18 19 20 [9,] 12 13 17 18 19 20 16 [10,] 11 12 19 20 16 17 18 > ## as above, but with same permutation for each Plot-level stratum > CTRL <- how(plots = plotStrata, + within = Within(type = "series", constant = TRUE)) > shuffleSet(20, 10, CTRL) 'nperm' > set of all permutations; Resetting 'nperm'. Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 4 No. of Samples: 20 (Nested in: plots; Sequence; same permutation in each plot) Restricted by Plots: gl(4, 5) (4 plots) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [1,] 2 3 4 5 1 7 8 9 10 6 12 13 14 15 [2,] 3 4 5 1 2 8 9 10 6 7 13 14 15 11 [3,] 4 5 1 2 3 9 10 6 7 8 14 15 11 12 [4,] 5 1 2 3 4 10 6 7 8 9 15 11 12 13 [,15] [,16] [,17] [,18] [,19] [,20] [1,] 11 17 18 19 20 16 [2,] 12 18 19 20 16 17 [3,] 13 19 20 16 17 18 [4,] 14 20 16 17 18 19 > > > > ### *