BiocParallel/DESCRIPTION0000644000175200017520000000512214154342106015633 0ustar00biocbuildbiocbuildPackage: BiocParallel Type: Package Title: Bioconductor facilities for parallel evaluation Version: 1.28.3 Authors@R: c( person("Bioconductor Package Maintainer", email="maintainer@bioconductor.org", role="cre"), person("Martin", "Morgan", role="aut"), person("Jiefei", "Wang", role = "aut"), person("Valerie", "Obenchain", role="aut"), person("Michel", "Lang", email="michellang@gmail.com", role="aut"), person("Ryan", "Thompson", email="rct@thompsonclan.org", role="aut"), person("Nitesh", "Turaga", role="aut"), person("Aaron", "Lun", role = "ctb"), person("Henrik", "Bengtsson", role = "ctb")) Description: This package provides modified versions and novel implementation of functions for parallel evaluation, tailored to use with Bioconductor objects. URL: https://github.com/Bioconductor/BiocParallel BugReports: https://github.com/Bioconductor/BiocParallel/issues biocViews: Infrastructure License: GPL-2 | GPL-3 SystemRequirements: C++11 Depends: methods, R (>= 3.5.0) Imports: stats, utils, futile.logger, parallel, snow Suggests: BiocGenerics, tools, foreach, BatchJobs, BBmisc, doParallel, Rmpi, GenomicRanges, RNAseqData.HNRNPC.bam.chr14, TxDb.Hsapiens.UCSC.hg19.knownGene, VariantAnnotation, Rsamtools, GenomicAlignments, ShortRead, codetools, RUnit, BiocStyle, knitr, batchtools, data.table Collate: AllGenerics.R DeveloperInterface.R prototype.R bploop.R ErrorHandling.R log.R bpbackend-methods.R bpisup-methods.R bplapply-methods.R bpiterate-methods.R bpstart-methods.R bpstop-methods.R BiocParallelParam-class.R bpmapply-methods.R bpschedule-methods.R bpvec-methods.R bpvectorize-methods.R bpworkers-methods.R bpaggregate-methods.R bpvalidate.R SnowParam-class.R MulticoreParam-class.R TransientMulticoreParam-class.R register.R SerialParam-class.R DoparParam-class.R SnowParam-utils.R BatchJobsParam-class.R BatchtoolsParam-class.R progress.R ipcmutex.R utilities.R rng.R bpinit.R LinkingTo: BH VignetteBuilder: knitr git_url: https://git.bioconductor.org/packages/BiocParallel git_branch: RELEASE_3_14 git_last_commit: 2f9d88a git_last_commit_date: 2021-12-07 Date/Publication: 2021-12-09 NeedsCompilation: yes Packaged: 2021-12-09 08:54:30 UTC; biocbuild Author: Bioconductor Package Maintainer [cre], Martin Morgan [aut], Jiefei Wang [aut], Valerie Obenchain [aut], Michel Lang [aut], Ryan Thompson [aut], Nitesh Turaga [aut], Aaron Lun [ctb], Henrik Bengtsson [ctb] Maintainer: Bioconductor Package Maintainer BiocParallel/NAMESPACE0000644000175200017520000000635614136050065015356 0ustar00biocbuildbiocbuilduseDynLib("BiocParallel", .registration = TRUE) import(methods) importFrom(stats, setNames, terms, runif) importFrom(utils, capture.output, find, head, relist, setTxtProgressBar, txtProgressBar) importFrom(parallel, nextRNGStream, nextRNGSubStream) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 classes ### exportClass( BiocParallelParam, MulticoreParam, SnowParam, DoparParam, SerialParam, BatchJobsParam, BatchtoolsParam, BPValidate ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export non-generic functions ### export( MulticoreParam, SnowParam, DoparParam, SerialParam, BatchJobsParam, BatchtoolsParam, ## register register, registered, bpparam, ## accessor bpnworkers, ## error handlers bptry, ## helpers bploop, # worker, manager loops multicoreWorkers, snowWorkers, batchtoolsWorkers, batchtoolsCluster, batchtoolsRegistryargs, batchtoolsTemplate, bpvalidate, bpok, bperrorTypes, bprunMPIslave, bprunMPIworker, ## ipcmutex ipcid, ipcremove, ipclock, ipctrylock, ipcunlock, ipclocked, ipcyield, ipcvalue, ipcreset ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 generics and methods defined in BiocParallel ### export( bplapply, bpvec, bpvectorize, bpmapply, bpaggregate, bpiterate, ## bp-controls bpworkers, "bpworkers<-", bpbackend, "bpbackend<-", bptasks, "bptasks<-", bpjobname, "bpjobname<-", bpstart, bpstop, bpisup, bpstopOnError, "bpstopOnError<-", bpprogressbar, "bpprogressbar<-", bpRNGseed, "bpRNGseed<-", bptimeout, "bptimeout<-", bpexportglobals, "bpexportglobals<-", bpforceGC, "bpforceGC<-", bplog, "bplog<-", bplogdir, "bplogdir<-", bpthreshold, "bpthreshold<-", bpresultdir, "bpresultdir<-", ## schedule bpschedule ) ### Same list as above. exportMethods( bplapply, bpvec, bpvectorize, bpmapply, bpaggregate, bpiterate, ## bp-controls bpworkers, "bpworkers<-", bpbackend, "bpbackend<-", bptasks, "bptasks<-", bpjobname, "bpjobname<-", bpstart, bpstop, bpisup, bpstopOnError, "bpstopOnError<-", bpprogressbar, "bpprogressbar<-", bpRNGseed, "bpRNGseed<-", bptimeout, "bptimeout<-", bplog, "bplog<-", bplogdir, "bplogdir<-", bpthreshold, "bpthreshold<-", bpresultdir, "bpresultdir<-", ## schedule bpschedule ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 methods for generics not defined in BiocParallel ### exportMethods( show ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S3 methods ### S3method(print, remote_error) S3method(print, bplist_error) S3method(bploop, lapply) S3method(bploop, iterate) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export 'developer' API for extending BiocParallelParam ### export( .BiocParallelParam_prototype, .prototype_update, .prettyPath, .send_to, .recv_any, .send, .recv, .close, .send_all, .recv_all, .bpstart_impl, .bpstop_impl, .bpworker_impl, .bplapply_impl, .bpiterate_impl, .error_worker_comm ) BiocParallel/NEWS0000644000175200017520000002517714154324272014644 0ustar00biocbuildbiocbuildCHANGES IN VERSION 1.28 ----------------------- USER VISIBLE CHANGES o (v 1.27.3) Setting `progressbar = TRUE` for SnowParam() or MulticoreParam() changes the default value of `tasks` from 0 to `.Machine$integer.max`, so that progress on each element of `X` is reported. o (v 1.27.3) `tasks` greater than `length(X)` are set to `length(X)`. Thus `.Machine$integer.max`, for instance, assures that each element of `X` is a separate task. o (v 1.27.5) Use of random numbers is robust to the distribution of jobs across tasks for SerialParam(), SnowParam(), and MulticoreParam(), for both bplapply() and bpiterate(), using the RNGseed= argument to each *Param(). The change is NOT backward compatible -- users wishing to exactly reproduce earlier results should use a previous version of the package. o (v 1.27.8) Standardize SerialParam() construct to enable setting additional fields. Standardize coercion of other BiocParallelParam types (e.g., SnowParam(), MulticoreParam()) to SerialParam() with as(., "SerialParam"). o (v. 1.27.9) By defualt, do _not_ only run garbage collection after every call to FUN(), except under MulticoreParam(). R's garbage collection algorithm only fails to do well when forked processes (i.e., MulticoreParam) assume that they are the only consumers of process memory. o (v 1.27.11) Developer-oriented functions bploop.*() arguments changed. o (v 1.27.12) Ignore set.seed() and never increment the global random number stream. This reverts a side-effect of behavior introduced in v. 1.27.5 to behavior more consistent with version 1.26. o (v 1.27.16) Better BPREDO support for previously started BPPARAM, and 'transient' BPPARAM without RNGseed. BUG FIXES o (v 1.27.10) Typo in coercion to SerialParam when only a single worker specified. https://github.com/Bioconductor/BiocParallel/issues/151 o (v 1.28.1) Fix regression in use of debug() with Serialparam. https://github.com/Bioconductor/BiocParallel/issues/128 o (v 1.28.2) Fix regression in progress bar display with bplapply(). https://github.com/Bioconductor/BiocParallel/issues/172 o (v 1.28.3) Fix default seed generation when user has non-defaultg generator. https://github.com/Bioconductor/BiocParallel/pull/176 CHANGES IN VERSION 1.26 ----------------------- USER VISIBLE CHANGES o (v 1.25.2) bpvalidate() gains an argument to control warning / error / silent signaling, and returns a 'BPValidate' object. BUG FIXES o (v 1.26.1) bptry(bplapply(X, ...)) returns a list of length X, appropriately annotated, when SerialParam(stop.on.error = TRUE). See https://github.com/Bioconductor/BiocParallel/issues/142 CHANGES IN VERSION 1.24 ----------------------- BUG FIXES o (v.1.23.1) bpvalidate() detects variables defined in parent environments; warns on use of global variables. o (v.1.23.2) bplapply() runs gc() after each evaluation of `FUN()`, so that workers do not accumulate excessive memory allocations (memory on a per-process basis is not excessive, but cluster-wise could be). See https://github.com/Bioconductor/BiocParallel/pull/124 o (v.1.24.1) Add 'topLevelEnvironment' to list of blocked global variable exports to address performance regression introduced by testthat 3.0. See https://github.com/Bioconductor/BiocParallel/issues/127 CHANGES IN VERSION 1.22 ----------------------- USER VISIBLE CHANGES o (v 1.20.2) don't advance random number stream when used 'internally'. This behavior alters reproducibility of existing scripts relying (probably implicitly) on the advancing stream. https://github.com/Bioconductor/BiocParallel/issues/110 BUG FIXES o (v 1.20.1) bplapply(), bpmapply(), bpvec() propagate names on arguments more correctly, https://github.com/Bioconductor/BiocParallel/issues/108 CHANGES IN VERSION 1.20 ----------------------- BUG FIXES o (v 1.19.2) Improve efficiency of MulticoreParam() when state does not persist across calls to bplapply(). CHANGES IN VERSION 1.18 ----------------------- USER VISIBLE CHANGES o (v 1.17.6) Initial use of registered BPPARAM does not advance random number seed, see https://stat.ethz.ch/pipermail/bioc-devel/2019-January/014526.html o (v 1.17.7) Loading package does not advance random number seed, see https://stat.ethz.ch/pipermail/bioc-devel/2019-January/014535.html o (v. 1.17.7) removed deprecated functions bplasterror(), bpresume(), bpcatchError() and field catch.error. o (v. 1.17.7) Make logdir, resultdir fields of BiocParallelParam. o (v. 1.17.7) replaced internal use of BatchJobs:::checkDir() (testing existence and read / write ability of log and other directories) with BiocParallelParam validity check. o (v. 1.17.7) expose 'developer' interface, `?DeveloperInterface` o (v. 1.17.11) on Windows, coerce `MulticoreParam(n)` to `MulticoreParam(1)` == SerialParam()` BUG FIXES o (v 1.17.4) port 1.16.3 (no '>' on SnowParam() worker end) and 1.16.4 (bpRNGseed<-() accepts NULL) o (v 1.17.5) port 1.16.4 (bpRNGseed() can reset seed to NULL), 1.16.5 (number of available cores defaults to 1 if cannot be determined). CHANGES IN VERSION 1.16 ----------------------- NEW FEATURES o (v 1.15.9) BatchtoolsParam() gains resources=list() for template file substitution. o (v 1.15.12) bpexportglobals() for all BPPARAM exports global options (i.e., base::options()) to workers. Default TRUE. BUG FIXES o (v 1.15.6) bpiterate,serial-method does not return a list() when REDUCE present (https://github.com/Bioconductor/BiocParallel/issues/77) o (v 1.15.7) bpaggregate,formula-method failed to find BPREDO (https://support.bioconductor.org/p/110784) o (v 1.15.13) bplappy,BatchtoolsParam() coerces List to list (https://github.com/Bioconductor/BiocParallel/issues/82) o (v 1.15.14) implicit loading of BiocParallel when loading a third- party package failed because reference class `initialize()` methods are not installed correctly. This bug fix results in signficant revision in the implementation, so that valid objects must be constructed through the public constructors, e.g., `BatchtoolsParam()` o (v 1.16.3) do not print '>' for each terminating SnowParam() worker o (v 1.16.4) allow bpRNGseed() to reset seed to NULL o (v 1.16.5) number of available cores defaults to 1 on machines where number of cores available cannot be determined. See https://github.com/Bioconductor/BiocParallel/issues/91. CHANGES IN VERSION 1.14 ----------------------- BUG FIXES o (v 1.13.1) bpiterate,serial-method does not unlist the result of FUN before passing to REDUCE. CHANGES IN VERSION 1.12 ----------------------- BUG FIXES o (v. 1.11.1) Change registered backend initialization to first invocation, rather than on load. o (v 1.11.8) Ensure registry is initiailized before (public) use. Issue #65 NEW FEATURES o (v. 1.11.2) bpiterate() gains a progress counter. o (v. 1.11.5) ipclock(), etc: inter-process locks and counters CHANGES IN VERSION 1.10 ---------------------- BUG FIXES o (v. 1.9.6) use of logdir= no longer tries to double-close log file. CHANGES IN VERSION 1.8 ---------------------- BUG FIXES o (v. 1.7.4) Allow more than 125 MPI nodes, https://github.com/Bioconductor/BiocParallel/issues/55 NEW FEATURES o Throttle number of cores used on Bioconductor build systems (with environment variable BBS_HOME set) to 4 CHANGES IN VERSION 1.6 ---------------------- NEW FEATURES o stop.on.error returns catchable 'remote_error' o bplapply() signals a 'bplist_error' when any element is an error. o 'bplist_error' includes an attribute 'result' containing computed results; when stop.on.error = FALSE, the result vector is parallel to (has the same geometry as) the input vector. o bpvec() signals a 'bpvec_error' when length(FUN(X)) != length(X) USER-VISIBLE CHANGES o Rename bpslaveLoop to (S3 generic) bploop o bpiterate() returns values consistent with REDUCE, rather than wrapping in list() o BatchJobsParam() passes more arguments to BatchJobs' makeRegistry(), setConfig(), submitJobs() BUG FIXES o workers=1, tasks=0 assigns all elements of X in one chunk o SerialParam() respects stop.on.error o bpmapply,ANY,* methods did not honor all arguments, particularly MoreArgs. CHANGES IN VERSION 1.2.0 ------------------------ NEW FEATURES o Add support for iterative REDUCE in .bpiterate_serial() o Refactor BiocParallelParam class: - add 'log', 'tasks', 'threshold', 'logdir', 'resultdir' fields - 'tasks' is used by SnowParam and MulticoreParam only o MulticoreParam now uses SnowParam(..., type=FORK) o Add bpvalidate() MODIFICATIONS o Add check to bipiterate() for Windows o Invoke REDUCE without '...' in .bpiterate_serial() o Update README and bpvec() man page o Change default BPPARAM to SnowParam() for Windows o Update bpiterate() man pages for Windows o Add note to vignette re: module load in template file from Thomas Girke o SnowParam: - bpmapply() now dispatches to bplapply() - remove BPRESUME - logging, gc ouput on worker - write results or logs to file - new error handling with futile.logger o Lighten the NAMESPACE by importing only parallel, snow o Modify which params are registered at load time: - Windows: SnowParam(), SerialParam() - Non-Windows: MulticoreParam(), SnowParam(), SerialParam() o bpvalidate() looks for symbols in 'fun' environment, NAMESPACE of loaded libraries, and the search path BUG FIXES o Bug fix in bpiterate_multicore(); update doc examples o Bug fix in bpiterate() in ordering results from Martin o Bug fix in .bpiterate_serial() when REDUCE is given CHANGES IN VERSION 1.0.0 ------------------------ NEW FEATURES o Add vignette sections for cluster managers, AMI o Add bpiterate generic and methods o Add REDUCE to bpiterate() o Add 'reduce.in.order' to bpiterate() MODIFICATIONS o Update vignette examples, reorganize sections o Allow 'workers' in BiocParallelParam to be character or integer o Enhance register() man page; add examples o Improve default registration for SnowParam: - max 8 cores - use detectcores() / mc.cores if available o Modify .convertToSimpleError() to convert NULL to NA_character_ BUG FIXES o Fix recursion problem for BPPARAM as list o Modify bpaggregate() to run in parallel BiocParallel/R/0000755000175200017520000000000014154324272014332 5ustar00biocbuildbiocbuildBiocParallel/R/AllGenerics.R0000644000175200017520000000660114136050065016644 0ustar00biocbuildbiocbuildsetGeneric("bplapply", signature=c("X", "BPPARAM"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) standardGeneric("bplapply")) setGeneric("bpmapply", signature=c("FUN", "BPPARAM"), function(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) standardGeneric("bpmapply")) setGeneric("bpiterate", signature=c("ITER", "FUN", "BPPARAM"), function(ITER, FUN, ..., BPPARAM=bpparam()) standardGeneric("bpiterate")) setGeneric("bpvec", signature=c("X", "BPPARAM"), function(X, FUN, ..., AGGREGATE=c, BPREDO=list(), BPPARAM=bpparam()) standardGeneric("bpvec")) setGeneric("bpvectorize", function(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) standardGeneric("bpvectorize")) setGeneric("bpaggregate", signature=c("x", "BPPARAM"), function(x, ..., BPREDO=list(), BPPARAM=bpparam()) standardGeneric("bpaggregate")) ## ## accessors ## setGeneric("bpworkers", function(x) standardGeneric("bpworkers")) setGeneric("bpworkers<-", function(x, value) standardGeneric("bpworkers<-")) setGeneric("bptasks", function(x) standardGeneric("bptasks")) setGeneric("bptasks<-", function(x, value) standardGeneric("bptasks<-")) setGeneric("bpjobname", function(x) standardGeneric("bpjobname")) setGeneric("bpjobname<-", function(x, value) standardGeneric("bpjobname<-")) setGeneric("bpRNGseed", function(x) standardGeneric("bpRNGseed")) setGeneric("bpRNGseed<-", function(x, value) standardGeneric("bpRNGseed<-")) setGeneric("bpforceGC", function(x) standardGeneric("bpforceGC")) setGeneric("bpforceGC<-", function(x, value) standardGeneric("bpforceGC<-")) ## errors setGeneric("bpstopOnError", function(x) standardGeneric("bpstopOnError")) setGeneric("bpstopOnError<-", function(x, value) standardGeneric("bpstopOnError<-")) ## logging / progress setGeneric("bpprogressbar", function(x) standardGeneric("bpprogressbar")) setGeneric("bpprogressbar<-", function(x, value) standardGeneric("bpprogressbar<-")) setGeneric("bptimeout", function(x) standardGeneric("bptimeout")) setGeneric("bptimeout<-", function(x, value) standardGeneric("bptimeout<-")) setGeneric("bpexportglobals", function(x) standardGeneric("bpexportglobals")) setGeneric("bpexportglobals<-", function(x, value) standardGeneric("bpexportglobals<-")) setGeneric("bplog", function(x) standardGeneric("bplog")) setGeneric("bplog<-", function(x, value) standardGeneric("bplog<-")) setGeneric("bplogdir", function(x) standardGeneric("bplogdir")) setGeneric("bplogdir<-", function(x, value) standardGeneric("bplogdir<-")) setGeneric("bpthreshold", function(x) standardGeneric("bpthreshold")) setGeneric("bpthreshold<-", function(x, value) standardGeneric("bpthreshold<-")) setGeneric("bpresultdir", function(x) standardGeneric("bpresultdir")) setGeneric("bpresultdir<-", function(x, value) standardGeneric("bpresultdir<-")) ## control setGeneric("bpstart", function(x, ...) standardGeneric("bpstart")) setGeneric("bpstop", function(x) standardGeneric("bpstop")) setGeneric("bpisup", function(x) standardGeneric("bpisup")) setGeneric("bpbackend", function(x) standardGeneric("bpbackend")) setGeneric("bpbackend<-", function(x, value) standardGeneric("bpbackend<-")) ## scheduling setGeneric("bpschedule", function(x) standardGeneric("bpschedule")) BiocParallel/R/BatchJobsParam-class.R0000644000175200017520000001362014136050065020376 0ustar00biocbuildbiocbuild### ========================================================================= ### BatchJobsParam objects ### ------------------------------------------------------------------------- ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### .BatchJobsParam_prototype <- c( list( reg.pars = list(), submit.pars = list(), conf.pars = list(), cleanup = logical() ), .BiocParallelParam_prototype ) .BatchJobsParam <- setRefClass("BatchJobsParam", contains="BiocParallelParam", fields=list( reg.pars="list", submit.pars="list", conf.pars="list", cleanup="logical"), methods=list( show = function() { ## TODO more output callSuper() cat(" cleanup: ", .self$cleanup, "\n", sep="") }) ) BatchJobsParam <- function(workers=NA_integer_, cleanup=TRUE, work.dir=getwd(), stop.on.error=TRUE, seed=NULL, resources=NULL, conffile=NULL, cluster.functions=NULL, progressbar=TRUE, jobname = "BPJOB", reg.pars=list(seed=seed, work.dir=work.dir), conf.pars=list(conffile=conffile, cluster.functions=cluster.functions), submit.pars=list(resources=resources), ...) { if (!requireNamespace("BatchJobs", quietly=TRUE)) stop("BatchJobsParam() requires the 'BatchJobs' package") not_null <- Negate(is.null) reg.pars <- Filter(not_null, reg.pars) submit.pars <- Filter(not_null, submit.pars) conf.pars <- Filter(not_null, conf.pars) ## save user config and reset it on exit prev.config <- BatchJobs::getConfig() on.exit(do.call(BatchJobs::setConfig, prev.config)) if (!is.null(conf.pars$conffile)) BatchJobs::loadConfig(conf.pars$conffile) new.conf <- unclass(do.call( BatchJobs::setConfig, conf.pars[setdiff(names(conf.pars), "conffile")] )) workers <- if (is.na(workers)) { getNumberCPUs <- function(conf) { x <- environment(new.conf$cluster.functions$submitJob)$workers vapply(x, "[[", integer(1L), "ncpus") } cf.name <- new.conf$cluster.functions$name if (is.null(cf.name)) { NA_integer_ } else { switch(cf.name, Multicore=getNumberCPUs(new.conf), SSH=sum(getNumberCPUs(new.conf)), NA_integer_) } } else as.integer(workers) prototype <- .prototype_update( .BatchJobsParam_prototype, reg.pars=reg.pars, submit.pars=submit.pars, conf.pars=conf.pars, workers=workers, cleanup=cleanup, stop.on.error=stop.on.error, progressbar=progressbar, jobname=jobname ) do.call(.BatchJobsParam, prototype) } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### setMethod("bpschedule", "BatchJobsParam", function(x) { !getOption("BatchJobs.on.slave", FALSE) }) setMethod("bpisup", "BatchJobsParam", function(x) TRUE) setMethod("bpbackend", "BatchJobsParam", function(x) BatchJobs::getConfig()) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - evaluation ### setMethod("bplapply", c("ANY", "BatchJobsParam"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!length(X)) return(.rename(list(), X)) if (!bpschedule(BPPARAM)) return(bplapply(X, FUN, ..., BPPARAM=SerialParam())) idx <- .redo_index(X, BPREDO) if (any(idx)) X <- X[idx] nms <- names(X) ## restore current settings prev.bp <- getOption("BBmisc.ProgressBar.style") on.exit(options(BBmisc.ProgressBar.style=prev.pb)) prev.config <- BatchJobs::getConfig() on.exit(BatchJobs::setConfig(conf=prev.config), add=TRUE) pb <- c("off", "text")[bpprogressbar(BPPARAM)+1L] prev.pb <- options(BBmisc.ProgressBar.style=pb) ## switch config BatchJobs::setConfig(conf=BPPARAM$conf.pars) ## reg.pars reg.pars <- c(list(id=bpjobname(BPPARAM), skip=FALSE), BPPARAM$reg.pars) if (is.null(reg.pars$file.dir)) reg.pars$file.dir <- file.path(reg.pars$work.dir, tempfile("BiocParallel_tmp_", "")) if (BPPARAM$cleanup) on.exit(unlink(reg.pars$file.dir, recursive=TRUE), add=TRUE) ## FUN FUN <- .composeTry(FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), as.error=FALSE, timeout=bptimeout(BPPARAM), exportglobals=bpexportglobals(BPPARAM)) WRAP <- function(.x, .FUN, .MoreArgs) do.call(.FUN, c(list(.x), .MoreArgs)) res <- suppressMessages({ ## make / map / submit / wait/ load reg <- do.call(BatchJobs::makeRegistry, reg.pars) ids <- BatchJobs::batchMap( reg, WRAP, X, more.args=list(.FUN=FUN, .MoreArgs=list(...))) submit.pars <- c(list(reg=reg), BPPARAM$submit.pars) submit.pars$ids <- if (is.na(bpnworkers(BPPARAM))) { ids } else BBmisc::chunk(ids, n.chunks=bpnworkers(BPPARAM), shuffle=TRUE) do.call(BatchJobs::submitJobs, submit.pars) BatchJobs::waitForJobs(reg, ids, timeout=30L * 24L * 60L * 60L, stop.on.error=bpstopOnError(BPPARAM)) BatchJobs::loadResults(reg, ids, use.names="none") }) ## post-process names(res) <- nms if (any(idx)) { BPREDO[idx] <- res res <- BPREDO } ok <- bpok(res) if (!all(ok)) { ## HACK: promote conditions to errors res[!ok] <- lapply(res[!ok], function(x) { class(x) <- c(class(x)[-length(class(x))], c("error", "condition")) x }) stop(.error_bplist(res)) } res }) setMethod("bpiterate", c("ANY", "ANY", "BatchJobsParam"), function(ITER, FUN, ..., BPPARAM=bpparam()) { stop("bpiterate not supported for BatchJobsParam") }) BiocParallel/R/BatchtoolsParam-class.R0000644000175200017520000003161314136050065020643 0ustar00biocbuildbiocbuild### ================================================================ ### BatchtoolsParam objects ### ---------------------------------------------------------------- .BATCHTOOLS_CLUSTERS <- c( "socket", "multicore", "interactive", "sge", "slurm", "lsf", "openlava", "torque" ) ### ------------------------------------------------- ### Helper functions ### batchtoolsWorkers <- function(cluster = batchtoolsCluster()) { switch( match.arg(cluster, .BATCHTOOLS_CLUSTERS), interactive = 1L, socket = snowWorkers("SOCK"), multicore = multicoreWorkers(), stop("specify number of workers for '", cluster, "'") ) } batchtoolsCluster <- function(cluster) { if (missing(cluster)) { if (.Platform$OS.type == "windows") { cluster <- "socket" } else { cluster <- "multicore" } } else { cluster <- match.arg(cluster, .BATCHTOOLS_CLUSTERS) } cluster } .batchtoolsClusterAvailable <- function(cluster) { switch( cluster, socket = TRUE, multicore = .Platform$OS.type != "windows", interactive = TRUE, sge = suppressWarnings(system2("qstat", stderr=NULL, stdout=NULL) != 127L), slurm = suppressWarnings(system2("squeue", stderr=NULL, stdout=NULL) != 127L), lsf = suppressWarnings(system2("bjobs", stderr=NULL, stdout=NULL) != 127L), openlava = suppressWarnings(system2("bjobs", stderr=NULL, stdout=NULL) != 127L), torque = suppressWarnings(system2("qselect", stderr=NULL, stdout=NULL) != 127L), .stop( "unsupported cluster type '", cluster, "'; ", "supported types (when available):\n", " ", paste0("'", .BATCHTOOLS_CLUSTERS, "'", collapse = ", ") ) ) } batchtoolsTemplate <- function(cluster) { if (!cluster %in% .BATCHTOOLS_CLUSTERS) stop("unsupported cluster type '", cluster, "'") if (cluster %in% c("socket", "multicore", "interactive")) return(NA_character_) message("using default '", cluster, "' template in batchtools.") if (cluster == "torque") tmpl <- "torque-lido.tmpl" else tmpl <- sprintf("%s-simple.tmpl", tolower(cluster)) ## return template system.file("templates", tmpl, package="batchtools") } batchtoolsRegistryargs <- function(...) { args <- list(...) ## our defaults... registryargs <- as.list(formals(batchtools::makeRegistry)) registryargs$file.dir <- tempfile(tmpdir=getwd()) registryargs$conf.file <- registryargs$seed <- NULL registryargs$make.default <- FALSE ## ...modified by user registryargs[names(args)] <- args registryargs } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### setOldClass("Registry") setOldClass(c("NULLRegistry", "Registry")) .NULLRegistry <- function() { structure(list(), class=c("NULLRegistry", "Registry")) } print.NULLRegistry <- function(x, ...) { cat("NULL Job Registry\n") } setOldClass("ClusterFunctions") .BatchtoolsParam_prototype <- c( list( cluster = NA_character_, template = NA_character_, registry = .NULLRegistry(), registryargs = list(), saveregistry = FALSE, resources = list() ), .BiocParallelParam_prototype ) .BatchtoolsParam <- setRefClass( "BatchtoolsParam", contains="BiocParallelParam", fields = list( cluster = "character", template = "character", registry = "Registry", registryargs = "list", saveregistry = "logical", resources = "list" ), methods = list( show = function() { callSuper() .registryargs <- .bpregistryargs(.self) .resources <- .bpresources(.self) cat(" cluster type: ", bpbackend(.self), "\n", .prettyPath(" template", .bptemplate(.self)), "\n registryargs:", paste0("\n ", names(.registryargs), ": ", .registryargs), "\n saveregistry: ", .bpsaveregistry(.self), "\n resources:", if (length(.resources)) paste0("\n ", names(.resources), ": ", .resources), "\n", sep="") } ) ) BatchtoolsParam <- function( workers = batchtoolsWorkers(cluster), ## Provide either cluster or template cluster = batchtoolsCluster(), registryargs = batchtoolsRegistryargs(), saveregistry = FALSE, resources = list(), template = batchtoolsTemplate(cluster), stop.on.error = TRUE, progressbar=FALSE, RNGseed = NA_integer_, timeout= 30L * 24L * 60L * 60L, exportglobals=TRUE, log=FALSE, logdir=NA_character_, resultdir=NA_character_, jobname = "BPJOB" ) { if (!requireNamespace("batchtools", quietly=TRUE)) stop("BatchtoolsParam() requires 'batchtools' package") if (!.batchtoolsClusterAvailable(cluster)) stop("'", cluster, "' supported but not available on this machine") if (length(resources) && is.null(names(resources))) stop("'resources' must be a named list") prototype <- .prototype_update( .BatchtoolsParam_prototype, workers = as.integer(workers), cluster = cluster, registry = .NULLRegistry(), registryargs = registryargs, saveregistry = saveregistry, resources = resources, jobname = jobname, progressbar = progressbar, log = log, logdir = logdir, resultdir = resultdir, stop.on.error = stop.on.error, timeout = as.integer(timeout), exportglobals = exportglobals, RNGseed = as.integer(RNGseed), template = template ) x <- do.call(.BatchtoolsParam, prototype) validObject(x) x } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Validity ### setValidity("BatchtoolsParam", function(object) { msg <- NULL if (!bpbackend(object) %in% .BATCHTOOLS_CLUSTERS) { types <- paste(.BATCHTOOLS_CLUSTERS, collape = ", ") msg <- c(msg, paste("'cluster' must be one of", types)) } if (is.null(msg)) TRUE else msg }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### setMethod("bpisup", "BatchtoolsParam", function(x) { !is(x$registry, "NULLRegistry") }) .bpregistryargs <- function(x) { x$registryargs } .bpsaveregistry <- function(x) { x$saveregistry } .bpsaveregistry_path <- function(x) { ## update registry location pattern <- "\\-[0-9]+$" file.dir <- .bpregistryargs(x)$file.dir dirname <- dirname(file.dir) basename <- basename(file.dir) dirs <- dir(dirname, paste0(basename, pattern)) n <- 0L if (length(dirs)) n <- max(as.integer(sub(".*\\-", "", dirs))) file.path(dirname, paste0(basename, "-", n + 1L)) } .bpresources <- function(x) { x$resources } .bptemplate <- function(x) { x$template } .composeBatchtools <- function(FUN) { force(FUN) function(fl, ...) { x <- readRDS(fl) FUN(x, ...) } } setMethod("bpbackend", "BatchtoolsParam", function(x) { x$cluster }) setMethod("bpstart", "BatchtoolsParam", function(x) { if (bpisup(x)) return(invisible(x)) cluster <- bpbackend(x) registryargs <- .bpregistryargs(x) oopt <- options(batchtools.verbose = FALSE) on.exit(options(oopt)) seed <- bpRNGseed(x) if (!is.na(seed)) registryargs$seed <- seed if (.bpsaveregistry(x)) { ## the registry$file.dir gets -0, -1, -2... for each bpstart on the ## same parameter registryargs$file.dir <- .bpsaveregistry_path(x) } registry <- do.call(batchtools::makeRegistry, registryargs) registry$cluster.functions <- switch( cluster, interactive = batchtools::makeClusterFunctionsInteractive(), socket = batchtools::makeClusterFunctionsSocket(bpnworkers(x)), multicore = batchtools::makeClusterFunctionsMulticore(bpnworkers(x)), sge = batchtools::makeClusterFunctionsSGE(template = .bptemplate(x)), ## Add mutliple cluster support slurm = batchtools::makeClusterFunctionsSlurm(template=.bptemplate(x)), lsf = batchtools::makeClusterFunctionsLSF(template=.bptemplate(x)), openlava = batchtools::makeClusterFunctionsOpenLava( template=.bptemplate(x) ), torque = batchtools::makeClusterFunctionsTORQUE( template=.bptemplate(x) ), default = stop("unsupported cluster type '", cluster, "'") ) x$registry <- registry # toggles bpisup() invisible(x) }) setMethod("bpstop", "BatchtoolsParam", function(x) { wait <- getOption("BIOCPARALLEL_BATCHTOOLS_REMOVE_REGISTRY_WAIT", 5) if (!.bpsaveregistry(x)) suppressMessages({ batchtools::removeRegistry(wait = wait, reg = x$registry) }) x$registry <- .NULLRegistry() # toggles bpisup() invisible(x) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - evaluation ### setMethod("bplapply", c("ANY", "BatchtoolsParam"), function(X, FUN, ..., BPREDO = list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!length(X)) return(.rename(list(), X)) if (is(X, "List")) ## hack; issue 82 X <- as.list(X) idx <- .redo_index(X, BPREDO) if (any(idx)) X <- X[idx] nms <- names(X) ## start / stop cluster if (!bpisup(BPPARAM)) { BPPARAM <- bpstart(BPPARAM) on.exit(bpstop(BPPARAM), TRUE) } ## progressbar / verbose if (bpprogressbar(BPPARAM)) { opts <- options( BBmisc.ProgressBar.style="text", batchtools.verbose = TRUE ) on.exit({ ## message("") # clear progress bar options(opts) }, TRUE) } else { opts <- options( BBmisc.ProgressBar.style="off", batchtools.verbose = FALSE ) on.exit(options(opts), TRUE) } registry <- BPPARAM$registry FUN <- .composeTry( FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), timeout=bptimeout(BPPARAM), exportglobals=bpexportglobals(BPPARAM) ) ## Make registry / map / submit / wait / load ids = batchtools::batchMap( fun=FUN, X, more.args = list(...), reg = registry ) ids$chunk = batchtools::chunk(ids$job.id, n.chunks = bpnworkers(BPPARAM)) batchtools::submitJobs( ids = ids, resources = .bpresources(BPPARAM), reg = registry ) batchtools::waitForJobs( ids = ids, reg = registry, timeout = bptimeout(BPPARAM), stop.on.error = bpstopOnError(BPPARAM) ) res <- batchtools::reduceResultsList(ids = ids, reg = registry) ## Copy logs from log dir to bplogdir before clearing registry if (bplog(BPPARAM) && !is.na(bplogdir(BPPARAM))) { logs <- file.path(.bpregistryargs(BPPARAM)$file.dir, "logs") ## Create log dir dir.create(bplogdir(BPPARAM)) ## Recursive copy logs file.copy(logs, bplogdir(BPPARAM) , recursive=TRUE, overwrite=TRUE) } ## Clear registry if (bpprogressbar(BPPARAM)) message("Clearing registry ...") if (!.bpsaveregistry(BPPARAM)) ## WARNING Save a registry in a folder with extension, ## _saved_registry. BatchtoolsParam('saveregistry=TRUE') option ## should be set only when debugging. This can be extremely ## time and space intensive. suppressMessages({ batchtools::clearRegistry(reg=registry) }) if (!is.null(res)) names(res) <- nms if (any(idx)) { BPREDO[idx] <- res res <- BPREDO } if (!all(bpok(res))) stop(.error_bplist(res)) res }) setMethod("bpiterate", c("ANY", "ANY", "BatchtoolsParam"), function(ITER, FUN, ..., REDUCE, init, reduce.in.order=FALSE, BPPARAM=bpparam()) { ITER <- match.fun(ITER) FUN <- match.fun(FUN) if (missing(REDUCE)) { if (reduce.in.order) stop("REDUCE must be provided when 'reduce.in.order = TRUE'") if (!missing(init)) stop("REDUCE must be provided when 'init' is given") } if (!bpschedule(BPPARAM) || bpnworkers(BPPARAM) == 1L) { param <- as(BPPARAM, "SerialParam") return( bpiterate(ITER, FUN, ..., REDUCE=REDUCE, init=init, BPPARAM=param) ) } ## start / stop cluster if (!bpisup(BPPARAM)) { bpstart(BPPARAM) on.exit(bpstop(BPPARAM)) } ## composeTry FUN <- .composeTry( FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), timeout=bptimeout(BPPARAM), exportglobals=bpexportglobals(BPPARAM) ) FUN <- .composeBatchtools(FUN) ## Call batchtoolsIterate with arguments bploop(structure(list(), class="iterate_batchtools"), ITER, FUN, BPPARAM, REDUCE, init, reduce.in.order, ...) }) BiocParallel/R/BiocParallelParam-class.R0000644000175200017520000002076114136050065021074 0ustar00biocbuildbiocbuild### ========================================================================= ### BiocParallelParam objects ### ------------------------------------------------------------------------- .BiocParallelParam_prototype <- list( workers=0, tasks=0L, jobname="BPJOB", log=FALSE, logdir = NA_character_, threshold="INFO", resultdir = NA_character_, stop.on.error=TRUE, timeout=30L * 24L * 60L * 60L, # 30 days exportglobals=TRUE, progressbar=FALSE, RNGseed=NULL, RNGstream = NULL, force.GC = FALSE ) .BiocParallelParam <- setRefClass("BiocParallelParam", contains="VIRTUAL", fields=list( workers="ANY", tasks="integer", jobname="character", progressbar="logical", ## required for composeTry log="logical", logdir = "character", threshold="character", resultdir = "character", stop.on.error="logical", timeout="integer", exportglobals="logical", RNGseed = "ANY", # NULL or integer(1) RNGstream = "ANY", # NULL or integer(); internal use only force.GC = "logical", ## cluster management .finalizer_env = "environment", .uid = "character" ), methods=list( show = function() { cat("class: ", class(.self), "\n", " bpisup: ", bpisup(.self), "; bpnworkers: ", bpnworkers(.self), "; bptasks: ", bptasks(.self), "; bpjobname: ", bpjobname(.self), "\n", " bplog: ", bplog(.self), "; bpthreshold: ", bpthreshold(.self), "; bpstopOnError: ", bpstopOnError(.self), "\n", " bpRNGseed: ", bpRNGseed(.self), "; bptimeout: ", bptimeout(.self), "; bpprogressbar: ", bpprogressbar(.self), "\n", " bpexportglobals: ", bpexportglobals(.self), "; bpforceGC: ", bpforceGC(.self), "\n", .prettyPath(" bplogdir", bplogdir(.self)), "\n", .prettyPath(" bpresultdir", bpresultdir(.self)), "\n", sep="") }) ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Validity ### setValidity("BiocParallelParam", function(object) { msg <- NULL ## workers and tasks workers <- bpworkers(object) if (is.numeric(workers)) if (length(workers) != 1L || workers < 0) msg <- c(msg, "'workers' must be integer(1) and >= 0") tasks <- bptasks(object) if (!is.numeric(tasks)) msg <- c(msg, "bptasks(BPPARAM) must be an integer") if (length(tasks) > 1L) msg <- c(msg, "length(bptasks(BPPARAM)) must be == 1") if (is.character(workers)) { if (length(workers) < 1L) msg <- c(msg, "length(bpworkers(BPPARAM)) must be > 0") if (tasks > 0L && tasks < workers) msg <- c(msg, "number of tasks is less than number of workers") } if (!.isTRUEorFALSE(bpexportglobals(object))) msg <- c(msg, "'bpexportglobals' must be TRUE or FALSE") if (!.isTRUEorFALSE(bplog(object))) msg <- c(msg, "'bplog' must be logical(1)") ## log / logdir dir <- bplogdir(object) if (length(dir) != 1L || !is(dir, "character")) { msg <- c(msg, "'logdir' must be character(1)") } else if (!is.na(dir)) { if (!bplog(object)) msg <- c(msg, "'log' must be TRUE when 'logdir' is given") if (!.dir_valid_rw(dir)) msg <- c(msg, "'logdir' must exist with read / write permission") } ## resultdir dir <- bpresultdir(object) if (length(dir) != 1L || !is(dir, "character")) { msg <- c(msg, "'resultdir' must be character(1)") } else if (!is.na(dir) && !.dir_valid_rw(dir)) { msg <- c(msg, "'resultdir' must exist with read / write permissions") } levels <- c("TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL") threshold <- bpthreshold(object) if (length(threshold) > 1L) { msg <- c(msg, "'bpthreshold' must be character(0) or character(1)") } else if ((length(threshold) == 1L) && (!threshold %in% levels)) { txt <- sprintf("'bpthreshold' must be one of %s", paste(sQuote(levels), collapse=", ")) msg <- c(msg, paste(strwrap(txt, indent=2, exdent=2), collapse="\n")) } if (!.isTRUEorFALSE(bpstopOnError(object))) msg <- c(msg, "'bpstopOnError' must be TRUE or FALSE") if (!.isTRUEorFALSE(bpforceGC(object))) msg <- c(msg, "'force.GC' must be TRUE or FALSE") if (is.null(msg)) TRUE else msg }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Getters / Setters ### setMethod("bpworkers", "BiocParallelParam", function(x) { x$workers }) setMethod("bptasks", "BiocParallelParam", function(x) { x$tasks }) setReplaceMethod("bptasks", c("BiocParallelParam", "numeric"), function(x, value) { x$tasks <- as.integer(value) x }) setMethod("bpjobname", "BiocParallelParam", function(x) { x$jobname }) setReplaceMethod("bpjobname", c("BiocParallelParam", "character"), function(x, value) { x$jobname <- value x }) setMethod("bplog", "BiocParallelParam", function(x) { x$log }) setMethod("bplogdir", "BiocParallelParam", function(x) { x$logdir }) setReplaceMethod("bplogdir", c("BiocParallelParam", "character"), function(x, value) { if (bpisup(x)) stop("use 'bpstop()' before setting 'bplogdir()'") x$logdir <- value validObject(x) x }) setMethod("bpthreshold", "BiocParallelParam", function(x) { x$threshold }) setMethod("bpresultdir", "BiocParallelParam", function(x) { x$resultdir }) setReplaceMethod("bpresultdir", c("BiocParallelParam", "character"), function(x, value) { if (bpisup(x)) stop("use 'bpstop()' before setting 'bpresultdir()'") x$resultdir <- value validObject(x) x }) setMethod("bptimeout", "BiocParallelParam", function(x) { x$timeout }) setReplaceMethod("bptimeout", c("BiocParallelParam", "numeric"), function(x, value) { x$timeout <- as.integer(value) x }) setMethod("bpexportglobals", "BiocParallelParam", function(x) { x$exportglobals }) setReplaceMethod("bpexportglobals", c("BiocParallelParam", "logical"), function(x, value) { x$exportglobals <- value validObject(x) x }) setMethod("bpstopOnError", "BiocParallelParam", function(x) { x$stop.on.error }) setReplaceMethod("bpstopOnError", c("BiocParallelParam", "logical"), function(x, value) { x$stop.on.error <- value validObject(x) x }) setMethod("bpprogressbar", "BiocParallelParam", function(x) { x$progressbar }) setReplaceMethod("bpprogressbar", c("BiocParallelParam", "logical"), function(x, value) { x$progressbar <- value validObject(x) x }) setMethod("bpRNGseed", "BiocParallelParam", function(x) { x$RNGseed }) setReplaceMethod("bpRNGseed", c("BiocParallelParam", "NULL"), function(x, value) { x$RNGseed <- NULL validObject(x) x }) setReplaceMethod("bpRNGseed", c("BiocParallelParam", "numeric"), function(x, value) { x$RNGseed <- as.integer(value) validObject(x) x }) .RNGstream <- function(x) { x$RNGstream } `.RNGstream<-` <- function(x, value) { value <- as.integer(value) if (anyNA(value)) stop("[internal] RNGstream value could not be coerced to integer") x$RNGstream <- value x } .bpnextRNGstream <- function(x) { ## initialize or get the next random number stream; increment the ## stream only in bpstart_impl .RNGstream(x) <- .rng_next_stream(.RNGstream(x)) } setMethod("bpforceGC", "BiocParallelParam", function(x) { x$force.GC }) setReplaceMethod("bpforceGC", c("BiocParallelParam", "numeric"), function(x, value) { x$force.GC <- as.logical(value) validObject(x) x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - evaluation ### setMethod("bpstart", "BiocParallelParam", .bpstart_impl) setMethod("bpstop", "BiocParallelParam", .bpstop_impl) setMethod("bplapply", c("ANY", "BiocParallelParam"), .bplapply_impl) setMethod("bpiterate", c("ANY", "ANY", "BiocParallelParam"), .bpiterate_impl) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Helpers ### ## taken from S4Vectors .isTRUEorFALSE <- function (x) { is.logical(x) && length(x) == 1L && !is.na(x) } BiocParallel/R/DeveloperInterface.R0000644000175200017520000000370614136050065020225 0ustar00biocbuildbiocbuild## ## see NAMESPACE section for definitive exports ## ## server setGeneric( ".send_to", function(backend, node, value) standardGeneric(".send_to"), signature = "backend" ) setGeneric( ".recv_any", function(backend) standardGeneric(".recv_any"), signature = "backend" ) setGeneric( ".send_all", function(backend, value) standardGeneric(".send_all"), signature = "backend" ) setGeneric( ".recv_all", function(backend) standardGeneric(".recv_all"), signature = "backend" ) ## client setGeneric( ".send", function(worker, value) standardGeneric(".send"), signature = "worker" ) setGeneric( ".recv", function(worker) standardGeneric(".recv"), signature = "worker" ) setGeneric( ".close", function(worker) standardGeneric(".close"), signature = "worker" ) ## default implementation -- SNOW backend setMethod( ".send_all", "ANY", function(backend, value) { for (node in seq_along(backend)) .send_to(backend, node, value) }) setMethod( ".recv_all", "ANY", function(backend) { replicate(length(backend), .recv_any(backend), simplify=FALSE) }) setMethod( ".send_to", "ANY", function(backend, node, value) { parallel:::sendData(backend[[node]], value) TRUE }) setMethod( ".recv_any", "ANY", function(backend) { tryCatch({ parallel:::recvOneData(backend) }, error = function(e) { ## indicate error, but do not stop .error_worker_comm(e, "'.recv_any()' data failed") }) }) setMethod( ".send", "ANY", function(worker, value) { parallel:::sendData(worker, value) }) setMethod( ".recv", "ANY", function(worker) { tryCatch({ parallel:::recvData(worker) }, error = function(e) { ## indicate error, but do not stop .error_worker_comm(e, "'.recv()' data failed") }) }) setMethod( ".close", "ANY", function(worker) { parallel:::closeNode(worker) }) BiocParallel/R/DoparParam-class.R0000644000175200017520000000562114136050065017606 0ustar00biocbuildbiocbuild### ========================================================================= ### DoparParam objects ### ------------------------------------------------------------------------- ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### .DoparParam_prototype <- .BiocParallelParam_prototype .DoparParam <- setRefClass("DoparParam", contains="BiocParallelParam", fields=list(), methods=list() ) DoparParam <- function(stop.on.error=TRUE) { if (!"package:foreach" %in% search()) { tryCatch({ loadNamespace("foreach") }, error=function(err) { stop(conditionMessage(err), "\n", " DoparParam() requires the 'foreach' package") }) } prototype <- .prototype_update( .DoparParam_prototype, stop.on.error=stop.on.error ) x <- do.call(.DoparParam, prototype) validObject(x) x } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### setMethod("bpworkers", "DoparParam", function(x) { if (bpisup(x)) foreach::getDoParWorkers() else 0L }) setMethod("bpisup", "DoparParam", function(x) { isNamespaceLoaded("foreach") && foreach::getDoParRegistered() && (foreach::getDoParName() != "doSEQ") && (foreach::getDoParWorkers() > 1L) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - evaluation ### setMethod("bplapply", c("ANY", "DoparParam"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { if (!length(X)) return(.rename(list(), X)) FUN <- match.fun(FUN) idx <- .redo_index(X, BPREDO) if (any(idx)) X <- X[idx] FUN <- .composeTry( FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), timeout=bptimeout(BPPARAM), exportglobals=bpexportglobals(BPPARAM) ) i <- NULL handle <- ifelse(bpstopOnError(BPPARAM), "stop", "pass") `%dopar%` <- foreach::`%dopar%` res <- tryCatch({ foreach::foreach(X=X, .errorhandling=handle) %dopar% FUN(X, ...) }, error=function(e) { msg <- conditionMessage(e) pattern <- "task ([[:digit:]]+).*" if (!grepl(pattern, msg)) stop( "'DoparParam()' foreach() error occurred: ", msg, call. = FALSE ) txt <- "'DoparParam()' does not support partial results" updt <- rep(list(.error_not_available(txt)), length(X)) i <- sub(pattern, "\\1", msg) updt[[as.integer(i)]] <- .error(msg) updt }) names(res) <- names(X) if (any(idx)) { BPREDO[idx] <- res res <- BPREDO } if (!all(bpok(res))) stop(.error_bplist(res)) res }) setMethod("bpiterate", c("ANY", "ANY", "DoparParam"), function(ITER, FUN, ..., BPPARAM=bpparam()) { stop("'bpiterate' not supported for DoparParam") }) BiocParallel/R/ErrorHandling.R0000644000175200017520000001272614136050065017217 0ustar00biocbuildbiocbuild### ========================================================================= ### Error handling ### ------------------------------------------------------------------------- bpok <- function(x, type = bperrorTypes()) { type <- match.arg(type) !vapply(x, inherits, logical(1), type) } bptry <- function(expr, ..., bplist_error, bperror) { if (missing(bplist_error)) bplist_error <- function(err) attr(err, "result") if (missing(bperror)) bperror <- identity tryCatch(expr, ..., bplist_error=bplist_error, bperror=bperror) } .composeTry <- function(FUN, log, stop.on.error, stop.immediate = FALSE, # TRUE for SerialParam lapply as.error = TRUE, # FALSE for BatchJobs compatible timeout, exportglobals = TRUE, force.GC = FALSE) { if (!stop.on.error && stop.immediate) stop("[internal] 'stop.on.error == FALSE' && 'stop.immediate == TRUE'") FUN <- match.fun(FUN) force(log) force(stop.on.error) force(stop.immediate) force(as.error) force(timeout) force(force.GC) if (exportglobals) { blocklist <- c( "askpass", "asksecret", "buildtools.check", "buildtools.with", "pager", "plumber.swagger.url", "profvis.print", "restart", "reticulate.repl.hook", "reticulate.repl.initialize", "reticulate.repl.teardown", "shiny.launch.browser", "terminal.manager", "error", "topLevelEnvironment" ) global_options <- base::options() global_options <- global_options[!names(global_options) %in% blocklist] } ERROR_OCCURRED <- FALSE UNEVALUATED <- .error_unevaluated() # singleton handle_warning <- function(w) { .log_warn(log, "%s", w) w # FIXME: muffleWarning; don't rely on capture.output() } handle_error <- function(e) { ERROR_OCCURRED <<- TRUE .log_error(log, "%s", e) call <- sapply(sys.calls(), deparse, nlines=3) e <- if (as.error) { .error_remote(e, call) } else { .condition_remote(e, call) # BatchJobs } if (stop.immediate) stop(e) else e } function(...) { setTimeLimit(timeout, timeout, TRUE) on.exit(setTimeLimit(Inf, Inf, FALSE)) if (exportglobals) base::options(global_options) if (stop.on.error && ERROR_OCCURRED) { UNEVALUATED } else { output <- withCallingHandlers({ tryCatch({ FUN(...) }, error=handle_error) }, warning=handle_warning) ## Trigger garbage collection to cut down on memory usage within ## each worker in shared memory contexts. Otherwise, each worker is ## liable to think the entire heap is available (leading to each ## worker trying to fill said heap, causing R to exhaust memory). if (force.GC) gc(verbose=FALSE, full=FALSE) output } } } .condition_remote <- function(x, call) { ## BatchJobs does not return errors structure(x, class = c("remote_error", "bperror", "condition"), traceback = capture.output(traceback(call))) } .error <- function(msg, class=NULL) { structure(list(message=msg), class = c(class, "bperror", "error", "condition")) } .error_remote <- function(x, call) { structure(x, class = c("remote_error", "bperror", "error", "condition"), traceback = capture.output(traceback(call))) } .error_unevaluated <- function() { structure(list(message="not evaluated due to previous error"), class=c("unevaluated_error", "bperror", "error", "condition")) } .error_not_available <- function(msg) { structure(list(message=msg), class=c("not_available_error", "bperror", "error", "condition")) } .error_worker_comm <- function(error, msg) { msg <- sprintf("%s:\n %s", msg, conditionMessage(error)) structure(list(message=msg, original_error_class=class(error)), class=c("worker_comm_error", "bperror", "error", "condition")) } bperrorTypes <- function() { subclasses <- paste0( c("remote", "unevaluated", "not_available", "worker_comm"), "_error" ) c("bperror", subclasses) } .error_bplist <- function(result) { remote_error <- !bpok(result, "remote_error") | !bpok(result, "worker_comm_error") idx <- which(remote_error) n_remote_error <- sum(remote_error) n_other_error <- sum(!bpok(result)) - n_remote_error fmt = paste( "BiocParallel errors", "%d remote errors, element index: %s%s", "%d unevaluated and other errors", "first remote error: %s", sep = "\n " ) message <- sprintf( fmt, n_remote_error, paste(head(idx), collapse = ", "), ifelse(length(idx) > 6, ", ...", ""), n_other_error, conditionMessage(result[[idx[[1]]]]) ) err <- structure( list(message=message), result=result, class = c("bplist_error", "bperror", "error", "condition")) } print.remote_error <- function(x, ...) { NextMethod(x) cat("traceback() available as 'attr(x, \"traceback\")'\n") } `print.bplist_error` <- function(x, ...) { NextMethod(x) cat("results and errors available as 'attr(x, \"result\")'\n") } BiocParallel/R/MulticoreParam-class.R0000644000175200017520000000553214136050065020505 0ustar00biocbuildbiocbuild### ========================================================================= ### MulticoreParam objects ### ------------------------------------------------------------------------- multicoreWorkers <- function() .snowCores("multicore") ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### .MulticoreParam_prototype <- .SnowParam_prototype .MulticoreParam <- setRefClass("MulticoreParam", contains="SnowParam", fields=list(), methods=list() ) MulticoreParam <- function(workers=multicoreWorkers(), tasks=0L, stop.on.error=TRUE, progressbar=FALSE, RNGseed=NULL, timeout= 30L * 24L * 60L * 60L, exportglobals=TRUE, log=FALSE, threshold="INFO", logdir=NA_character_, resultdir=NA_character_, jobname = "BPJOB", force.GC = TRUE, manager.hostname=NA_character_, manager.port=NA_integer_, ...) { if (.Platform$OS.type == "windows") { warning("MulticoreParam() not supported on Windows, use SnowParam()") workers = 1L } if (progressbar && missing(tasks)) tasks <- .Machine$integer.max clusterargs <- c(list(spec=workers, type="FORK"), list(...)) manager.hostname <- if (is.na(manager.hostname)) { local <- (clusterargs$type == "FORK") || is.numeric(clusterargs$spec) manager.hostname <- .snowHost(local) } else as.character(manager.hostname) manager.port <- if (is.na(manager.port)) { .snowPort() } else as.integer(manager.port) if (!is.null(RNGseed)) RNGseed <- as.integer(RNGseed) prototype <- .prototype_update( .MulticoreParam_prototype, .clusterargs=clusterargs, cluster=.NULLcluster(), .controlled=TRUE, workers=as.integer(workers), tasks=as.integer(tasks), stop.on.error=stop.on.error, progressbar=progressbar, RNGseed=RNGseed, timeout=as.integer(timeout), exportglobals=exportglobals, log=log, threshold=threshold, logdir=logdir, resultdir=resultdir, jobname=jobname, force.GC = force.GC, hostname=manager.hostname, port=manager.port, ... ) x <- do.call(.MulticoreParam, prototype) validObject(x) x } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### setReplaceMethod("bpworkers", c("MulticoreParam", "numeric"), function(x, value) { value <- as.integer(value) max <- .snowCoresMax("multicore") if (value > max) stop( "'value' exceeds ", max, " available workers; see ?multicoreWorkers" ) x$workers <- value x$.clusterargs$spec <- value x }) setMethod("bpschedule", "MulticoreParam", function(x) { if (.Platform$OS.type == "windows") FALSE else TRUE }) BiocParallel/R/SerialParam-class.R0000644000175200017520000000652314145415024017762 0ustar00biocbuildbiocbuild### ========================================================================= ### SerialParam objects ### ------------------------------------------------------------------------- ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### .SerialParam_prototype <- c( list( workers = 1L, backend = NULL ), .BiocParallelParam_prototype ) .SerialParam <- setRefClass( "SerialParam", fields=list(backend = "ANY"), contains="BiocParallelParam", ) SerialParam <- function(stop.on.error = TRUE, progressbar=FALSE, RNGseed = NULL, timeout = 30L * 24L * 60L * 60L, log=FALSE, threshold="INFO", logdir=NA_character_, resultdir = NA_character_, jobname = "BPJOB", force.GC = FALSE) { if (!is.null(RNGseed)) RNGseed <- as.integer(RNGseed) if (progressbar) { tasks <- .Machine$integer.max } else { tasks <- 0L } prototype <- .prototype_update( .SerialParam_prototype, tasks = tasks, stop.on.error=stop.on.error, progressbar=progressbar, RNGseed = RNGseed, timeout = as.integer(timeout), log=log, threshold=threshold, logdir=logdir, resultdir = resultdir, jobname = jobname, force.GC = force.GC ) x <- do.call(.SerialParam, prototype) validObject(x) x } setAs("BiocParallelParam", "SerialParam", function(from) { SerialParam( stop.on.error = bpstopOnError(from), progressbar = bpprogressbar(from), RNGseed = bpRNGseed(from), timeout = bptimeout(from), log = bplog(from), threshold = bpthreshold(from), logdir = bplogdir(from), resultdir = bpresultdir(from), jobname = bpjobname(from), force.GC = bpforceGC(from) ) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### setMethod( "bpbackend", "SerialParam", function(x) { x$backend }) setMethod( "bpstart", "SerialParam", function(x, ...) { x$backend <- .SerialBackend() x$backend$BPPARAM <- x .bpstart_impl(x) }) setMethod( "bpstop", "SerialParam", function(x) { x$backend <- NULL .bpstop_impl(x) }) setMethod( "bpisup", "SerialParam", function(x) { is.environment(bpbackend(x)) }) setReplaceMethod("bplog", c("SerialParam", "logical"), function(x, value) { x$log <- value validObject(x) x }) setReplaceMethod( "bpthreshold", c("SerialParam", "character"), function(x, value) { x$threshold <- value x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Backend method ### .SerialBackend <- setClass("SerialBackend", contains = "environment") setMethod(".send_to", "SerialBackend", function(backend, node, value){ backend$value <- value TRUE }) setMethod( ".recv_any", "SerialBackend", function(backend) { on.exit(backend$value <- NULL) msg <- backend$value if (inherits(msg, "error")) stop(msg) if (msg$type == "EXEC") { value <- .bpworker_EXEC(msg, bplog(backend$BPPARAM)) list(node = 1L, value = value) } }) setMethod("length", "SerialBackend", function(x){ 1L }) BiocParallel/R/SnowParam-class.R0000644000175200017520000002271714136050065017474 0ustar00biocbuildbiocbuild### ========================================================================= ### SnowParam objects ### ------------------------------------------------------------------------- ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Helpers ### .snowHost <- function(local=TRUE) { host <- if (local) { "localhost" } else Sys.info()[["nodename"]] host <- Sys.getenv("MASTER", host) host <- getOption("bphost", host) host } .snowPort <- function() { port <- Sys.getenv("R_PARALLEL_PORT", NA_integer_) port <- Sys.getenv("PORT", port) port <- getOption("ports", port) if (identical(tolower(port), "random") || is.na(port)) { .rng_internal_stream$set() on.exit(.rng_internal_stream$reset()) port <- as.integer( 11000 + 1000 * ((stats::runif(1L) + unclass(Sys.time()) / 300) %% 1L) ) } else { port <- as.integer(port) } port } .snowCoresMax <- function(type) { if (type == "MPI") { .Machine$integer.max } else { 128L - nrow(showConnections(all=TRUE)) } } .snowCores <- function(type) { if (type == "multicore" && .Platform$OS.type == "windows") return(1L) min(.detectCores(), .snowCoresMax(type)) } snowWorkers <- function(type = c("SOCK", "MPI", "FORK")) { type <- match.arg(type) .snowCores(type) } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor ### setOldClass(c("NULLcluster", "cluster")) .NULLcluster <- function() { cl <- list() class(cl) <- c("NULLcluster", "cluster") cl } .SnowParam_prototype <- c( list( cluster = .NULLcluster(), .clusterargs = list(spec=0, type="SOCK"), .controlled = TRUE, hostname = NA_character_, port = NA_integer_ ), .BiocParallelParam_prototype ) .SnowParam <- setRefClass("SnowParam", contains="BiocParallelParam", fields=list( cluster = "cluster", .clusterargs = "list", .controlled = "logical", hostname = "character", port = "integer" ), methods=list( show = function() { callSuper() cat(" cluster type: ", .clusterargs$type, "\n", sep="") }) ) SnowParam <- function(workers=snowWorkers(type), type=c("SOCK", "MPI", "FORK"), tasks=0L, stop.on.error=TRUE, progressbar=FALSE, RNGseed=NULL, timeout=30L * 24L * 60L * 60L, exportglobals=TRUE, log=FALSE, threshold="INFO", logdir=NA_character_, resultdir=NA_character_, jobname = "BPJOB", force.GC = FALSE, manager.hostname=NA_character_, manager.port=NA_integer_, ...) { type <- tryCatch(match.arg(type), error=function(...) { stop("'type' must be one of ", paste(sQuote(formals("SnowParam")$type), collapse=", ")) }) if (type %in% c("MPI", "FORK") && is(workers, "character")) stop("'workers' must be integer(1) when 'type' is MPI or FORK") if (progressbar && missing(tasks)) tasks <- .Machine$integer.max clusterargs <- c(list(spec=workers, type=type), list(...)) manager.hostname <- if (is.na(manager.hostname)) { local <- (clusterargs$type == "FORK") || is.numeric(clusterargs$spec) manager.hostname <- .snowHost(local) } else as.character(manager.hostname) manager.port <- if (is.na(manager.port)) { .snowPort() } else as.integer(manager.port) if (!is.null(RNGseed)) RNGseed <- as.integer(RNGseed) prototype <- .prototype_update( .SnowParam_prototype, .clusterargs=clusterargs, .controlled=TRUE, workers=workers, tasks=as.integer(tasks), stop.on.error=stop.on.error, progressbar=progressbar, RNGseed=RNGseed, timeout=as.integer(timeout), exportglobals=exportglobals, log=log, threshold=threshold, logdir=logdir, resultdir=resultdir, jobname=jobname, force.GC = force.GC, hostname=manager.hostname, port=manager.port, ... ) do.call(.SnowParam, prototype) } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Validity ### setValidity("SnowParam", function(object) { msg <- NULL if (!.isTRUEorFALSE(.controlled(object))) msg <- c(msg, "'.controlled' must be TRUE or FALSE") if (.controlled(object)) { if (!all(bpworkers(object) == object$.clusterargs$spec)) msg <- c(msg, "'bpworkers(BPPARAM)' must equal BPPARAM$.clusterargs$spec") } if (is.null(msg)) TRUE else msg }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Getters / Setters ### .hostname <- function(x) x$hostname .port <- function(x) x$port setReplaceMethod("bpworkers", c("SnowParam", "numeric"), function(x, value) { value <- as.integer(value) max <- .snowCoresMax(x$.clusterargs$type) if (value > max) stop("'value' exceeds ", max, " available workers; see ?snowWorkers") x$workers <- value x$.clusterargs$spec <- value x }) setReplaceMethod("bpworkers", c("SnowParam", "character"), function(x, value) { x$workers <- x$.clusterargs$spec <- value x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Methods - control ### .bpstart_makeCluster <- function(cargs) { ## set internal stream to avoid iterating global random number ## stream in `parallel::makeCluster()`. Use the internal stream so ## that the random number generator advances on each call. state <- .rng_internal_stream$set() on.exit(.rng_internal_stream$reset()) do.call(parallel::makeCluster, cargs) } setMethod("bpstart", "SnowParam", function(x, lenX = bpnworkers(x)) { if (!.controlled(x)) stop("'bpstart' not available; instance from outside BiocParallel?") if (bpisup(x)) stop("cluster already started") if (bpnworkers(x) == 0 && lenX <= 0) stop("cluster not started; no workers specified") nnodes <- min(bpnworkers(x), lenX) if (x$.clusterargs$type != "MPI" && (nnodes > 128L - nrow(showConnections(all=TRUE)))) stop("cannot create ", nnodes, " workers; ", 128L - nrow(showConnections(all=TRUE)), " connections available in this session") ## FORK (useRscript not relevant) if (x$.clusterargs$type == "FORK") { bpbackend(x) <- .bpfork(nnodes, bptimeout(x), .hostname(x), .port(x)) ## SOCK, MPI } else { cargs <- x$.clusterargs cargs$spec <- if (is.numeric(cargs$spec)) { nnodes } else cargs$spec[seq_len(nnodes)] if (is.null(cargs$snowlib)) cargs$snowlib <- find.package("BiocParallel") if (!is.null(cargs$useRscript) && !cargs$useRscript) cargs$scriptdir <- find.package("BiocParallel") if (x$.clusterargs$type == "SOCK") { cargs$master <- .hostname(x) cargs$port <- .port(x) } bpbackend(x) <- .bpstart_makeCluster(cargs) } .bpstart_impl(x) }) setMethod("bpstop", "SnowParam", function(x) { if (!.controlled(x)) { warning("'bpstop' not available; instance from outside BiocParallel?") return(invisible(x)) } if (!bpisup(x)) return(invisible(x)) x <- .bpstop_impl(x) cluster <- bpbackend(x) for (i in seq_along(cluster)) .close(cluster[[i]]) bpbackend(x) <- .NULLcluster() invisible(x) }) setMethod("bpisup", "SnowParam", function(x) { length(bpbackend(x)) != 0L }) setMethod("bpbackend", "SnowParam", function(x) { x$cluster }) setReplaceMethod("bpbackend", c("SnowParam", "cluster"), function(x, value) { x$cluster <- value x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Getters / Setters ### .controlled <- function(x) { x$.controlled } setReplaceMethod("bplog", c("SnowParam", "logical"), function(x, value) { if (x$.controlled) { x$log <- value if (bpisup(x)) { bpstop(x) bpstart(x) } x } else { stop("'bplog' not available; instance from outside BiocParallel?") } }) setReplaceMethod("bpthreshold", c("SnowParam", "character"), function(x, value) { x$threshold <- value x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Coercion methods for SOCK and MPI clusters ### ### parallel::SOCKcluster types setOldClass(c("SOCKcluster", "cluster")) stopCluster.SOCKcluster <- parallel:::stopCluster.default setAs("SOCKcluster", "SnowParam", function(from) { .clusterargs <- list(spec=length(from), type=sub("cluster$", "", class(from)[1L])) prototype <- .prototype_update( .SnowParam_prototype, .clusterargs = .clusterargs, cluster = from, .controlled = FALSE, workers = length(from) ) do.call(.SnowParam, prototype) }) ### MPIcluster setOldClass(c("spawnedMPIcluster", "MPIcluster", "cluster")) setAs("spawnedMPIcluster", "SnowParam", function(from) { .clusterargs <- list(spec=length(from), type=sub("cluster", "", class(from)[1L])) .SnowParam(.clusterargs=.clusterargs, cluster=from, .controlled=FALSE, workers=length(from)) }) BiocParallel/R/SnowParam-utils.R0000644000175200017520000000602514147652225017531 0ustar00biocbuildbiocbuild ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### snow::MPI ### bprunMPIslave <- function() { .Deprecated("bprunMPIworker") bprunMPIworker() } bprunMPIworker <- function() { comm <- 1 intercomm <- 2 Rmpi::mpi.comm.get.parent(intercomm) Rmpi::mpi.intercomm.merge(intercomm,1,comm) Rmpi::mpi.comm.set.errhandler(comm) Rmpi::mpi.comm.disconnect(intercomm) .bpworker_impl(snow::makeMPImaster(comm)) Rmpi::mpi.comm.disconnect(comm) Rmpi::mpi.quit() } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### parallel::FORK ### .bpfork <- function (nnodes, timeout, host, port) { nnodes <- as.integer(nnodes) if (is.na(nnodes) || nnodes < 1L) stop("'nnodes' must be >= 1") if (length(host) != 1L || is.na(host) || !is.character(host)) stop("'host' must be character(1)") if (length(port) != 1L || is.na(port) || !is.integer(port)) stop("'port' must be integer(1)") cl <- vector("list", nnodes) for (rank in seq_along(cl)) { .bpforkChild(host, port, rank, timeout) cl[[rank]] <- .bpforkConnect(host, port, rank, timeout) } class(cl) <- c("SOCKcluster", "cluster") cl } .bpforkChild <- function(host, port, rank, timeout) { parallel::mcparallel({ con <- NULL suppressWarnings({ while (is.null(con)) { con <- tryCatch({ socketConnection(host, port, FALSE, TRUE, "a+b", timeout = timeout) }, error=function(e) {}) } }) node <- structure(list(con = con), class = "SOCK0node") .bpworker_impl(node) }, detached=TRUE) } .bpforkConnect <- function(host, port, rank, timeout) { con <- socketConnection(host, port, TRUE, TRUE, "a+b", timeout = timeout) structure(list(con = con, host = host, rank = rank), class = c("forknode", "SOCK0node")) } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### logs and results ### .bpwriteLog <- function(con, d) { .log_internal <- function() { message( "############### LOG OUTPUT ###############\n", "Task: ", d$value$tag, "\nNode: ", d$node, "\nTimestamp: ", Sys.time(), "\nSuccess: ", d$value$success, "\n\nTask duration:\n", paste(capture.output(d$value$time), collapse="\n"), "\n\nMemory used:\n", paste(capture.output(gc()), collapse="\n"), "\n\nLog messages:\n", paste(trimws(d$value$log), collapse="\n"), "\n\nstderr and stdout:\n", if (!is.null(d$value$sout)) paste(noquote(d$value$sout), collapse="\n") ) } if (!is.null(con)) { on.exit({ sink(NULL, type = "message") sink(NULL, type = "output") }) sink(con, type = "message") sink(con, type = "output") .log_internal() } else .log_internal() } BiocParallel/R/TransientMulticoreParam-class.R0000644000175200017520000000512714136050065022375 0ustar00biocbuildbiocbuild.TransientMulticoreParam <- setRefClass( "TransientMulticoreParam", contains = "MulticoreParam" ) TransientMulticoreParam <- function(param) { as(param, "TransientMulticoreParam") } .TRANSIENTMULTICOREPARAM_JOBNODE <- new.env(parent=emptyenv()) .TRANSIENTMULTICOREPARAM_RESULT <- new.env(parent=emptyenv()) setMethod( "bpstart", "TransientMulticoreParam", function(x, ...) { parallel::mccollect(wait=TRUE) rm( list=ls(envir = .TRANSIENTMULTICOREPARAM_JOBNODE), envir = .TRANSIENTMULTICOREPARAM_JOBNODE ) rm( list = ls(envir = .TRANSIENTMULTICOREPARAM_RESULT), envir = .TRANSIENTMULTICOREPARAM_RESULT ) .bpstart_impl(x) }) setMethod( "bpstop", "TransientMulticoreParam", function(x) { .bpstop_impl(x) }) setMethod( "bpbackend", "TransientMulticoreParam", function(x) { x }) setMethod( "length", "TransientMulticoreParam", function(x) { bpnworkers(x) }) ## ## send / recv ## setMethod( ".recv_all", "TransientMulticoreParam", function(backend) { replicate(length(backend), .recv_any(backend), simplify=FALSE) }) setMethod( ".send_to", "TransientMulticoreParam", function(backend, node, value) { if (value$type == "EXEC") { job <- parallel::mcparallel(.bpworker_EXEC(value)) id <- as.character(job$pid) .TRANSIENTMULTICOREPARAM_JOBNODE[[id]] <- node } TRUE }) setMethod( ".recv_any", "TransientMulticoreParam", function(backend) { .BUFF <- .TRANSIENTMULTICOREPARAM_RESULT # alias tryCatch({ while (!length(.BUFF)) { result <- parallel::mccollect(wait = FALSE, timeout = 1) for (id in names(result)) .BUFF[[id]] <- result[[id]] } id <- head(names(.BUFF), 1L) value <- .BUFF[[id]] rm(list = id, envir = .BUFF) node <- .TRANSIENTMULTICOREPARAM_JOBNODE[[id]] rm(list = id, envir = .TRANSIENTMULTICOREPARAM_JOBNODE) list(node = node, value = value) }, error = function(e) { ## indicate error, but do not stop .error_worker_comm(e, "'.recv_any()' data failed") }) }) setMethod( ".send", "TransientMulticoreParam", function(worker, value) { stop("'.send,TransientMulticoreParam-method' not implemented") }) setMethod( ".recv", "TransientMulticoreParam", function(worker) { stop("'.recv,TransientMulticoreParam-method' not implemented") }) setMethod( ".close", "TransientMulticoreParam", function(worker) { stop("'.close,TransientMulticoreParam-method' not implemented") }) BiocParallel/R/bpaggregate-methods.R0000644000175200017520000000604614136050065020370 0ustar00biocbuildbiocbuild### ========================================================================= ### bpaggregate methods ### ------------------------------------------------------------------------- ## All params use bpaggregate,data.frame,BiocParallelParam. ## bpaggretate() dispatches to bplapply() where errors and ## logging are handled. setMethod("bpaggregate", c("ANY", "missing"), function(x, ..., BPREDO=list(), BPPARAM=bpparam()) { bpaggregate(x, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bpaggregate", c("matrix", "BiocParallelParam"), function(x, by, FUN, ..., simplify=TRUE, BPREDO=list(), BPPARAM=bpparam()) { if (!is.data.frame(x)) x <- as.data.frame(x) bpaggregate(x, by, FUN, ..., simplify=simplify, BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bpaggregate", c("data.frame", "BiocParallelParam"), function(x, by, FUN, ..., simplify=TRUE, BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!is.data.frame(x)) x <- as.data.frame(x) if (!is.list(by)) stop("'by' must be a list") by <- lapply(by, as.factor) wrapper <- function(.ind, .x, .AGGRFUN, ..., .simplify) { sapply(.x[.ind,, drop=FALSE], .AGGRFUN, ..., simplify=.simplify) } ind <- Filter(length, split(seq_len(nrow(x)), by)) grp <- rep(seq_along(ind), lengths(ind)) grp <- grp[match(seq_len(nrow(x)), unlist(ind))] res <- bplapply(ind, wrapper, .x=x, .AGGRFUN=FUN, .simplify=simplify, BPREDO=BPREDO, BPPARAM=BPPARAM) res <- do.call(rbind, lapply(res, rbind)) if (is.null(names(by)) && length(by)) { names(by) <- sprintf("Group.%i", seq_along(by)) } else { ind <- which(!nzchar(names(by))) names(by)[ind] <- sprintf("Group.", ind) } tab <- as.data.frame(lapply(by, as.character), stringsAsFactors=FALSE) tab <- tab[match(sort(unique(grp)), grp),, drop=FALSE] rownames(tab) <- rownames(res) <- NULL tab <- cbind(tab, res) names(tab) <- c(names(by), names(x)) tab }) setMethod("bpaggregate", c("formula", "BiocParallelParam"), function (x, data, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { if (length(x) != 3L) stop("Formula 'x' must have both left and right hand sides") m <- match.call(expand.dots=FALSE) if (is.matrix(eval(m$data, parent.frame()))) m$data <- as.data.frame(data) m$... <- m$FUN <- m$BPPARAM <- m$BPREDO <- NULL m[[1L]] <- quote(stats::model.frame) names(m)[[2]] <- "formula" if (x[[2L]] == ".") { rhs <- as.list(attr(terms(x[-2L]), "variables")[-1]) lhs <- as.call(c(quote(cbind), setdiff(lapply(names(data), as.name), rhs))) x[[2L]] <- lhs m[[2L]] <- x } mf <- eval(m, parent.frame()) if (is.matrix(mf[[1L]])) { lhs <- as.data.frame(mf[[1L]]) bpaggregate(lhs, mf[-1L], FUN=FUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) } else bpaggregate(mf[1L], mf[-1L], FUN=FUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) }) BiocParallel/R/bpbackend-methods.R0000644000175200017520000000035714136050065020030 0ustar00biocbuildbiocbuildsetMethod("bpbackend", "missing", function(x) { x <- registered()[[1]] bpbackend(x) }) setReplaceMethod("bpbackend", c("missing", "ANY"), function(x, value) { x <- registered()[[1]] bpbackend(x) <- value x }) BiocParallel/R/bpinit.R0000644000175200017520000000553214136050065015743 0ustar00biocbuildbiocbuild.bpinit <- function(manager, FUN, BPPARAM, BPREDO = list(), ...) { ## Conditions for starting a cluster, or falling back to (and ## starting) a SerialParam nworkers <- bpnworkers(BPPARAM) # cache in case this requires a netowrk call fallback_condition <- !inherits(BPPARAM, "SerialParam") && nworkers == 0L || # e.g., in dynamic cluster like RedisParam !bpschedule(BPPARAM) # e.g., in nested parallel call if (!bpisup(BPPARAM) || fallback_condition) { if (fallback_condition || nworkers == 1L) { ## use SerialParam when zero workers (e.g., in a dynaamic ## cluster like RedisParam, where there are no registered ## workers), or when bpschedule() is FALSE (e.g,. because ## we are already in a parallel job), or when there is ## only one worker (when the cost of serialization to a ## remote worker can be avoided). oldParam <- BPPARAM BPPARAM <- as(BPPARAM, "SerialParam") on.exit({ .RNGstream(oldParam) <- .RNGstream(BPPARAM) }, TRUE, FALSE) # add = TRUE, last = FALSE --> last in, # first out order } else if (is(BPPARAM, "MulticoreParam")) { ## use TransientMulticoreParam when MulticoreParam has not ## started oldParam <- BPPARAM BPPARAM <- as(BPPARAM, "TransientMulticoreParam") on.exit({ .RNGstream(oldParam) <- .RNGstream(BPPARAM) }, TRUE, FALSE) } ## start / stop cluster BPPARAM <- bpstart(BPPARAM) on.exit(bpstop(BPPARAM), TRUE, FALSE) } ## record the initial seed used by the BPPARAM BPREDOSEED <- .RNGstream(BPPARAM) ## If BPREDO present and contains a seed, we need to ## 1. use the seed from BPREDO ## 2. recover the old seed after computing the result if (length(BPREDO) && !is.null(attr(BPREDO, "BPREDOSEED"))) { .RNGstream(BPPARAM) <- attr(BPREDO, "BPREDOSEED") on.exit({ .RNGstream(BPPARAM) <- BPREDOSEED }, TRUE, after = FALSE) } ## FUN FUN <- .composeTry( FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), timeout=bptimeout(BPPARAM), exportglobals=bpexportglobals(BPPARAM), force.GC = bpforceGC(BPPARAM) ) ## iteration res <- bploop( manager, # dispatch FUN = FUN, BPPARAM = BPPARAM, ... ) if (length(BPREDO)) { redo_idx <- which(!bpok(BPREDO)) if (length(redo_idx)) BPREDO[redo_idx] <- res res <- BPREDO } if (!all(bpok(res))) { ## attach the seed only when no BPREDO presents if (!length(BPREDO)) attr(res, "BPREDOSEED") <- BPREDOSEED } else { attr(res, "BPREDOSEED") <- NULL } res } BiocParallel/R/bpisup-methods.R0000644000175200017520000000021514136050065017412 0ustar00biocbuildbiocbuildsetMethod("bpisup", "ANY", function(x) FALSE) setMethod("bpisup", "missing", function(x) { x <- registered()[[1]] bpisup(x) }) BiocParallel/R/bpiterate-methods.R0000644000175200017520000000263514136050065020077 0ustar00biocbuildbiocbuild### ========================================================================= ### bpiterate methods ### ------------------------------------------------------------------------- ## All params have dedicated bpiterate() methods. setMethod("bpiterate", c("ANY", "ANY", "missing"), function(ITER, FUN, ..., BPPARAM=bpparam()) { ITER <- match.fun(ITER) FUN <- match.fun(FUN) bpiterate(ITER, FUN, ..., BPPARAM=BPPARAM) }) ## TODO: support BPREDO .bpiterate_impl <- function(ITER, FUN, ..., REDUCE, init, reduce.in.order = FALSE, BPPARAM = bpparam()) { ## Required API ## ## - BiocParallelParam() ## - bpschedule(), bpisup(), bpstart(), bpstop() ## - .sendto, .recvfrom, .recv, .close ITER <- match.fun(ITER) FUN <- match.fun(FUN) ITER_ <- function() { list(ITER()) } if (missing(REDUCE)) { if (reduce.in.order) stop("REDUCE must be provided when 'reduce.in.order = TRUE'") if (!missing(init)) stop("REDUCE must be provided when 'init' is given") } ARGS <- list(...) manager <- structure(list(), class="iterate") # dispatch res <- .bpinit( manager = manager, ITER = ITER_, FUN = FUN, ARGS = ARGS, BPPARAM = BPPARAM, init = init, REDUCE = REDUCE, reduce.in.order = reduce.in.order ) ## TODO: handle the error in res res } BiocParallel/R/bplapply-methods.R0000644000175200017520000000423314136050065017737 0ustar00biocbuildbiocbuild### ========================================================================= ### bplapply methods ### ------------------------------------------------------------------------- ## All params have dedicated bplapply methods. setMethod("bplapply", c("ANY", "missing"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) bplapply(X, FUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bplapply", c("ANY", "list"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!all(vapply(BPPARAM, inherits, logical(1), "BiocParallelParam"))) stop("All elements in 'BPPARAM' must be BiocParallelParam objects") if (length(BPPARAM) == 0L) stop("'length(BPPARAM)' must be > 0") myFUN <- if (length(BPPARAM) > 1L) { if (length(param <- BPPARAM[-1]) == 1L) function(...) FUN(..., BPPARAM=param[[1]]) else function(...) FUN(..., BPPARAM=param) } else FUN bplapply(X, myFUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM[[1]]) }) .bplapply_impl <- function(X, FUN, ..., BPREDO = list(), BPPARAM = bpparam()) { ## abstract 'common' implementation using accessors only ## ## Required API: ## ## - BiocParallelParam() ## - bpschedule(), bpisup(), bpstart(), bpstop() ## - .send_to, .recv_any, .send, .recv, .close FUN <- match.fun(FUN) if (!length(X)) return(.rename(list(), X)) ## which need to be redone? redo_index <- .redo_index(X, BPREDO) if (any(redo_index)) { compute_element <- which(redo_index) X <- X[compute_element] } else { compute_element <- seq_along(X) } nms <- names(X) ## split into tasks X <- .splitX(X, bpnworkers(BPPARAM), bptasks(BPPARAM), redo_index) ARGS <- list(...) manager <- structure(list(), class="lapply") # dispatch res <- .bpinit( manager = manager, X = X, FUN = FUN, ARGS = ARGS, BPPARAM = BPPARAM, BPREDO = BPREDO ) if (!is.null(res)) names(res)[compute_element] <- nms if (!all(bpok(res))) stop(.error_bplist(res)) res } BiocParallel/R/bploop.R0000644000175200017520000003045014147652225015756 0ustar00biocbuildbiocbuild### ========================================================================= ### Low-level cluster utilities ### ------------------------------------------------------------------------- ### Support for SOCK, MPI and FORK connections. ### Derived from snow version 0.3-13 by Luke Tierney ### Derived from parallel version 2.16.0 by R Core Team .EXEC <- function(tag, fun, args) { list(type="EXEC", data=list(fun=fun, args=args, tag=tag)) } .VALUE <- function(tag, value, success, time, log, sout) { list(type = "VALUE", tag = tag, value = value, success = success, time = time, log = log, sout = sout) } .DONE <- function() { list(type = "DONE") } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Worker loop used by SOCK, MPI and FORK. Error handling is done in ### .composeTry. .bpworker_EXEC <- function(msg, sink.sout = TRUE) { ## need local handler for worker read/send errors if (sink.sout) { on.exit({ sink(NULL, type="message") sink(NULL, type="output") close(file) }) file <- rawConnection(raw(), "r+") sink(file, type="message") sink(file, type="output") } t1 <- proc.time() value <- tryCatch({ do.call(msg$data$fun, msg$data$args) }, error=function(e) { ## return as 'list()' because msg$data$fun has lapply semantics list(.error_worker_comm(e, "worker evaluation failed")) }) t2 <- proc.time() if (sink.sout) { sout <- rawToChar(rawConnectionValue(file)) if (!nchar(sout)) sout <- NULL } else { sout <- NULL } success <- !(inherits(value, "bperror") || !all(bpok(value))) log <- .log_buffer_get() value <- .VALUE( msg$data$tag, value, success, t2 - t1, log, sout ) } .bpworker_impl <- function(worker) { repeat { tryCatch({ msg <- .recv(worker) if (inherits(msg, "error")) ## FIXME: try to return error to manager break # lost socket connection? if (msg$type == "DONE") { .close(worker) break } else if (msg$type == "EXEC") { value <- .bpworker_EXEC(msg) .send(worker, value) } }, interrupt = function(e) { NULL }) } } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Manager loop used by SOCK, MPI and FORK ## These functions are used by all cluster types (SOCK, MPI, FORK) and ## run on the master. Both enable logging, writing logs/results to ## files and 'stop on error'. The 'cl' argument is an active cluster; ## starting and stopping of 'cl' is done outside these functions, eg, ## bplapply, bpmapply etc.. .clear_cluster <- function(cl, running, reducer) { tryCatch({ setTimeLimit(30, 30, TRUE) on.exit(setTimeLimit(Inf, Inf, FALSE)) while (any(running)) { d <- .recv_any(cl) njob <- d$value$tag value <- d$value$value reducer$add(njob, value) running[d$node] <- FALSE } }, error=function(e) { warning(.error_worker_comm(e, "stop worker failed")) }) reducer } .manager_log <- function(BPPARAM, njob, d) { if (bplog(BPPARAM)) { con <- NULL if (!is.na(bplogdir(BPPARAM))) { fname <- paste0(bpjobname(BPPARAM), ".task", njob, ".log") lfile <- file.path(bplogdir(BPPARAM), fname) con <- file(lfile, open="a") on.exit(close(con)) } .bpwriteLog(con, d) } else if (length(d$value$sout)) { message(paste(d$value$sout, collapse="\n")) } } .manager_result_save <- function(BPPARAM, njob, value) { if (is.na(bpresultdir(BPPARAM))) return(NULL) fname <- paste0(bpjobname(BPPARAM), ".task", njob, ".Rda") rfile <- file.path(bpresultdir(BPPARAM), fname) save(value, file=rfile) } .reducer <- function(REDUCE, init, reduce.in.order=FALSE) { env <- new.env(parent=emptyenv()) env[["reduce"]] <- !missing(REDUCE) env[["init"]] <- !missing(init) if (env[["reduce"]]) env[["value"]] <- if (env[["init"]]) init else list() env[["index"]] <- 1L reduce_one <- function(idx) { if (env[["reduce"]]) { if (!env[["init"]] && (env[["index"]] == 1L)) { env[["value"]] <- env[[idx]][[1]] skip_idx <- 1L } else { skip_idx <- 0L } for (i in seq_along(env[[idx]])) { if (i == skip_idx) next env[["value"]] <- REDUCE(env[["value"]], env[[idx]][[i]]) } rm(list=idx, envir=env) } env[["index"]] <- env[["index"]] + 1L 1L } add_immediate <- function(i, value) { env[[as.character(i)]] <- value reduce_one(as.character(i)) } add_inorder <- function(i, value) { status <- 0L env[[as.character(i)]] <- value while (exists(as.character(env[["index"]]), envir=env)) status <- status + reduce_one(as.character(env[["index"]])) status } list(add=function(i, value) { if (reduce.in.order) add_inorder(i, value) else add_immediate(i, value) }, isComplete=function() { length(setdiff(ls(env), c("reduce", "init", "value", "index"))) == 0L }, value=function() { if (env[["reduce"]]) env[["value"]] # NULL if no values else { lst <- as.list(env) idx <- setdiff(names(lst), c("reduce", "init", "value", "index")) if (length(idx)) { lst <- unname(lst[idx[order(as.integer(idx))]]) unlist(lst, recursive=FALSE) } else { list() } } }) } ## A dummy iterator for bploop.lapply .bploop_lapply_iter <- function(X) { i <- 0L n <- length(X) function() { if (i < n) { i <<- i + 1L X[[i]] } else { list(NULL) } } } ## This class object can force bploop.iterator to iterate ## the seed stream n times .bploop_rng_iter <- function(n) { structure(as.integer(n), class = c(".bploop_rng_iter")) } ## ## bploop.lapply(): derived from snow::dynamicClusterApply. ## bploop <- function(manager, ...) UseMethod("bploop") ## X: the loop value after division ## ARGS: The function arguments for `FUN` bploop.lapply <- function(manager, X, FUN, ARGS, BPPARAM, ...) { ITER <- .bploop_lapply_iter(X) manager <- structure(list(), class="iterate") # dispatch bploop( manager = manager, ITER = ITER, FUN = FUN, ARGS = ARGS, BPPARAM =BPPARAM, reduce.in.order = TRUE, progress.length = length(X) ) } ## ## bploop.iterate(): ## ## Derived from snow::dynamicClusterApply and parallel::mclapply. ## ## - length of 'X' is unknown (defined by ITER()) ## - results not pre-allocated; list grows each iteration if no REDUCE ## - args wrapped in arglist with different chunks from ITER() ## Arguments ## - ITER: Return a list where each list element will be passed to FUN ## 1. if nothing to proceed, it should return list(NULL) ## 2. if the task is iterate the seed stream only, it should return ## an object from .bploop_rng_iter() ## - FUN: A function that will be evaluated in the worker ## - ARGS: the arguments to FUN bploop.iterate <- function( manager, ITER, FUN, ARGS, BPPARAM, REDUCE, init, reduce.in.order, progress.length, ... ) { cl <- bpbackend(BPPARAM) seed <- .RNGstream(BPPARAM) on.exit(.RNGstream(BPPARAM) <- seed) workers <- length(cl) running <- logical(workers) reducer <- .reducer(REDUCE, init, reduce.in.order) progress <- .progress( active=bpprogressbar(BPPARAM), iterate=missing(progress.length) ) on.exit(progress$term(), TRUE) progress$init(progress.length) ARGFUN <- function(X, seed) c( list(X=X), list(FUN=FUN), ARGS, list(BPRNGSEED = seed) ) ## initial load for (i in seq_len(workers)) { value <- ITER() ## If the value is of the class .bploop_rng_iter, we merely iterate ## the seed stream `value` times and obtain the next value. There must ## be no two consecutive .bploop_rng_iter objects in the iterator, so ## we can proceed without checking the class again. if (inherits(value, ".bploop_rng_iter")) { seed <- .rng_iterate_substream(seed, value) value <- ITER() } if (identical(value, list(NULL))) { if (i == 1L) warning("first invocation of 'ITER()' returned NULL") break } value_ <- .EXEC(i, .rng_lapply, ARGFUN(value, seed)) running[i] <- .send_to(cl, i, value_) seed <- .rng_iterate_substream(seed, length(value)) } repeat { if (!any(running)) break ## collect d <- .recv_any(cl) progress$step() value <- d$value$value njob <- d$value$tag running[d$node] <- FALSE ## reduce ## FIXME: if any worker has an error - can't reduce reducer$add(njob, value) .manager_log(BPPARAM, njob, d) .manager_result_save(BPPARAM, njob, reducer$value()) if (bpstopOnError(BPPARAM) && !d$value$success) { ## stop on error; let running jobs finish, do not re-load ## FIXME: harvest assigned jobs reducer <- .clear_cluster(cl, running, reducer) break } ## re-load value <- ITER() if (inherits(value, "rng_iter")) { seed <- .rng_iterate_substream(seed, value) value <- ITER() } if (!identical(value, list(NULL))) { i <- i + 1L value_ <- .EXEC(i, .rng_lapply, ARGFUN(value, seed)) running[d$node] <- .send_to(cl, d$node, value_) seed <- .rng_iterate_substream(seed, length(value)) } } ## return results if (!is.na(bpresultdir(BPPARAM))) { NULL } else { reducer$value() } } bploop.iterate_batchtools <- function(manager, ITER, FUN, BPPARAM, REDUCE, init, reduce.in.order, ...) { ## get number of workers workers <- bpnworkers(BPPARAM) ## reduce in order reducer <- .reducer(REDUCE, init, reduce.in.order) ## progress bar. progress <- .progress(active=bpprogressbar(BPPARAM), iterate=TRUE) on.exit(progress$term(), TRUE) progress$init() def.id <- job.id <- 1L repeat{ value <- ITER() if (is.null(value)) { if (job.id == 1L) warning("first invocation of 'ITER()' returned NULL") break } ## save 'value' to registry tempfile fl <- tempfile(tmpdir = BPPARAM$registry$file.dir) saveRDS(value, fl) if (job.id == 1L) { suppressMessages({ ids <- batchtools::batchMap( fun = FUN, fl, more.args = list(...), reg = BPPARAM$registry ) }) } else { job.pars <- list(fl) BPPARAM$registry$defs <- rbind(BPPARAM$registry$defs, list(def.id, list(job.pars))) entry <- c(list(job.id, def.id), rep(NA, 10)) BPPARAM$registry$status <- rbind(BPPARAM$registry$status, entry) } def.id <- def.id + 1L job.id <- job.id + 1L } ## finish updating tables ids <- data.table::data.table(job.id = seq_len(job.id - 1)) data.table::setkey(BPPARAM$registry$status, "job.id") ids$chunk = batchtools::chunk(ids$job.id, n.chunks = workers) ## submit and wait for jobs batchtools::submitJobs( ids = ids, resources = .bpresources(BPPARAM), reg = BPPARAM$registry ) batchtools::waitForJobs( ids = BPPARAM$registry$status$job.id, reg = BPPARAM$registry, timeout = bptimeout(BPPARAM), stop.on.error = bpstopOnError(BPPARAM) ) ## reduce in order for (job.id in ids$job.id) { value <- batchtools::loadResult(id = job.id, reg=BPPARAM$registry) reducer$add(job.id, list(value)) } ## return reducer value reducer$value() } BiocParallel/R/bpmapply-methods.R0000644000175200017520000000402014136050065017732 0ustar00biocbuildbiocbuild### ========================================================================= ### bpmapply methods ### ------------------------------------------------------------------------- ## bpmapply() dispatches to bplapply() where errors and logging are handled. setMethod("bpmapply", c("ANY", "BiocParallelParam"), function(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) { ## re-package for lapply ddd <- .getDotsForMapply(...) if (!length(ddd) || !length(ddd[[1L]])) return(.mrename(list(), ddd, USE.NAMES)) FUN <- match.fun(FUN) wrap <- function(.i, .FUN, .ddd, .MoreArgs) { dots <- lapply(.ddd, `[`, .i) .mapply(.FUN, dots, .MoreArgs)[[1L]] } res <- bplapply(X=seq_along(ddd[[1L]]), wrap, .FUN=FUN, .ddd=ddd, .MoreArgs=MoreArgs, BPREDO=BPREDO, BPPARAM=BPPARAM) .simplify(.mrename(res, ddd, USE.NAMES), SIMPLIFY) }) setMethod("bpmapply", c("ANY", "missing"), function(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) bpmapply(FUN, ..., MoreArgs=MoreArgs, SIMPLIFY=SIMPLIFY, USE.NAMES=USE.NAMES, BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bpmapply", c("ANY", "list"), function(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!all(vapply(BPPARAM, inherits, logical(1), "BiocParallelParam"))) stop("All elements in 'BPPARAM' must be BiocParallelParam objects") if (length(BPPARAM) == 0L) stop("'length(BPPARAM)' must be > 0") myFUN <- if (length(BPPARAM) > 1L) { if (length(param <- BPPARAM[-1]) == 1L) function(...) FUN(..., BPPARAM=param[[1]]) else function(...) FUN(..., BPPARAM=param) } else FUN bpmapply(myFUN, ..., MoreArgs=MoreArgs, SIMPLIFY=SIMPLIFY, USE.NAMES=USE.NAMES, BPREDO=BPREDO, BPPARAM=BPPARAM[[1L]]) }) BiocParallel/R/bpschedule-methods.R0000644000175200017520000000023014136050065020223 0ustar00biocbuildbiocbuildsetMethod("bpschedule", "ANY", function(x) TRUE) setMethod("bpschedule", "missing", function(x) { x <- registered()[[1]] bpschedule(x) }) BiocParallel/R/bpstart-methods.R0000644000175200017520000000541114136050065017572 0ustar00biocbuildbiocbuild### ========================================================================= ### ClusterManager object: ensures started clusters are stopped ### ------------------------------------------------------------------------- .ClusterManager <- local({ ## package-global registry of backends; use to avoid closing ## socket connections of unreferenced backends during garbage ## collection -- bpstart(MulticoreParam(1)); gc(); gc() uid <- 0 env <- environment() list(add = function(cluster) { uid <<- uid + 1L cuid <- as.character(uid) env[[cuid]] <- cluster # protection cuid }, drop = function(cuid) { if (length(cuid) && cuid %in% names(env)) rm(list=cuid, envir=env) invisible(NULL) }, get = function(cuid) { env[[cuid]] }, ls = function() { cuid <- setdiff(ls(env), c("uid", "env")) cuid[order(as.integer(cuid))] }) }) ### ========================================================================= ### bpstart() methods ### ------------------------------------------------------------------------- setMethod("bpstart", "ANY", function(x, ...) invisible(x)) setMethod("bpstart", "missing", function(x, ...) { x <- registered()[[1]] bpstart(x) }) ## ## .bpstart_impl: common functionality after bpisup() ## .bpstart_error_handler <- function(x, response, id) { value <- lapply(response, function(elt) elt[["value"]][["value"]]) if (!all(bpok(value))) { on.exit(try(bpstop(x))) stop( "\nbpstart() ", id, " error:\n", conditionMessage(.error_bplist(value)) ) } } .bpstart_set_rng_stream <- function(x) { ## initialize the random number stream; increment the stream only ## in bpstart_impl .RNGstream(x) <- .rng_init_stream(bpRNGseed(x)) invisible(.RNGstream(x)) } .bpstart_set_logging <- function(x) { cluster <- bpbackend(x) value <- .EXEC(NULL, .log_load, list(bplog(x), bpthreshold(x), TRUE)) .send_all(cluster, value) response <- .recv_all(cluster) .bpstart_error_handler(x, response, "set_logging") invisible(x) } .bpstart_set_finalizer <- function(x) { if (length(x$.uid) == 0L) { finalizer_env <- as.environment(list(self=x$.self)) reg.finalizer( finalizer_env, function(e) bpstop(e[["self"]]), onexit=TRUE ) x$.finalizer_env <- finalizer_env } x$.uid <- .ClusterManager$add(bpbackend(x)) invisible(x) } .bpstart_impl <- function(x) { ## common actions once bpisup(backend) ## initialize the random number stream .bpstart_set_rng_stream(x) ## logging if (bplog(x)) .bpstart_set_logging(x) ## clean up when x left open .bpstart_set_finalizer(x) } BiocParallel/R/bpstop-methods.R0000644000175200017520000000075614136050065017431 0ustar00biocbuildbiocbuildsetMethod("bpstop", "ANY", function(x) invisible(x)) setMethod("bpstop", "missing", function(x) { x <- registered()[[1]] bpstop(x) }) ## ## .bpstop_impl: common functionality after bpisup() is no longer TRUE ## .bpstop_nodes <- function(x) { cluster <- bpbackend(x) for (i in seq_along(cluster)) .send_to(cluster, i, .DONE()) TRUE } .bpstop_impl <- function(x) { bpisup(x) && .bpstop_nodes(x) .ClusterManager$drop(x$.uid) invisible(x) } BiocParallel/R/bpvalidate.R0000644000175200017520000001136414136050065016571 0ustar00biocbuildbiocbuild.BPValidate <- setClass( "BPValidate", slots = c( symbol = "character", environment = "character", unknown = "character" ) ) BPValidate <- function(symbol = character(), environment = character(), unknown = character()) { if (is.null(symbol)) symbol <- character() if (is.null(environment)) environment <- character() .BPValidate(symbol = symbol, environment = environment, unknown = unknown) } .bpvalidateSymbol <- function(x) x@symbol .bpvalidateEnvironment <- function(x) x@environment .bpvalidateUnknown <- function(x) x@unknown .show_bpvalidateSearch <- function(x) { search <- data.frame( symbol = .bpvalidateSymbol(x), environment = .bpvalidateEnvironment(x), row.names = NULL ) output <- capture.output(search) text <- ifelse(NROW(search), paste(output, collapse = "\n "), "none") c("symbol(s) in search() path:\n ", text) } .show_bpvalidateUnknown <- function(x) { unknown <- .bpvalidateUnknown(x) text <- ifelse(length(unknown), paste(unknown, collapse = "\n "), "none") c("unknown symbol(s):\n ", text) } setMethod("show", "BPValidate", function(object) { cat( "class: ", class(object), "\n", .show_bpvalidateSearch(object), "\n\n", .show_bpvalidateUnknown(object), "\n\n", sep = "" ) }) bpvalidate <- function(fun, signal = c("warning", "error", "silent")) { typeof <- suppressWarnings(typeof(fun)) if (!typeof %in% c("closure", "builtin")) stop("'fun' must be a closure or builtin") if (is.function(signal)) { ERROR_FUN <- signal } else { ERROR_FUN <- switch( match.arg(signal), warning = warning, error = stop, silent = capture.output ) } unknown <- codetools::findGlobals(fun) f_env <- environment(fun) ## 'fun' environment is NAMESPACE if (length(unknown) && isNamespace(f_env)) { f_ls <- c( getNamespaceImports(f_env), setNames(list(ls(f_env, all.names=TRUE)), getNamespaceName(f_env)) ) f_symbols <- unique(unlist(f_ls, use.names=FALSE)) unknown <- unknown[!unknown %in% f_symbols] } ## 'fun' body loads libraries warn <- err <- NULL if (any(c("require", "library") %in% unknown)) { xx <- withCallingHandlers(tryCatch({ dep <- deparse(fun) i <- grepl("(library|require)", dep) sapply(dep[i], function(elt) { pkg <- gsub(")", "", strsplit(elt, "(", fixed=TRUE)[[1]][2]) unknown %in% getNamespaceExports(pkg) }) }, error=function(e) { err <<- append(err, conditionMessage(e)) NULL }), warning=function(w) { warn <<- append(warn, conditionMessage(w)) invokeRestart("muffleWarning") }) if (!is.null(warn) || !is.null(err)) stop("\nattempt to load library failed:\n ", paste(c(warn, err), collapse="\n ")) if (!is.matrix(xx)) xx <- t(as.matrix(xx)) unknown <- unknown[rowSums(xx) == 0L] } ## look in search path inpath <- structure(list(), names=character()) if (length(unknown)) { ## exclude variables found in defining environment(s) env <- environment(fun) while (!identical(env, topenv(environment(fun)))) { inlocal <- ls(env, all.names = TRUE) unknown <- setdiff(unknown, inlocal) env <- parent.env(env) } inpath <- .foundInPath(unknown) unknown <- setdiff(unknown, names(inpath)) inpath <- .filterDefaultPackages(inpath) } result <- BPValidate( symbol = names(inpath), environment = unlist(inpath, use.names = FALSE), unknown = unknown ) ## error report msg <- character() test <- .bpvalidateEnvironment(result) %in% ".GlobalEnv" if (any(test)) msg <- c( msg, "symbol(s) in .GlobalEnv:\n ", paste(.bpvalidateSymbol(result)[test], collapse = "\n "), "\n" ) test <- .bpvalidateUnknown(result) if (length(test)) msg <- c( msg, "unknown symbol(s):\n ", paste(test, collapse = "\n "), "\n" ) if (length(msg)) ERROR_FUN("\n", paste(msg, collapse = ""), call. = FALSE) result } .foundInPath <- function(symbols) { loc <- Map(function(elt) head(find(elt), 1), symbols) loc[lengths(loc) == 1L] } .filterDefaultPackages <- function(symbols) { pkgs <- c( "stats", "graphics", "grDevices", "utils", "datasets", "methods", "Autoloads", "base" ) drop <- unlist(symbols, use.names = FALSE) %in% paste0("package:", pkgs) symbols[!drop] } BiocParallel/R/bpvec-methods.R0000644000175200017520000000452114136050065017213 0ustar00biocbuildbiocbuild### ========================================================================= ### bpvec methods ### ------------------------------------------------------------------------- ## bpvec() dispatches to bplapply() where errors and logging are ## handled. setMethod("bpvec", c("ANY", "BiocParallelParam"), function(X, FUN, ..., AGGREGATE=c, BPREDO=list(), BPPARAM=bpparam()) { if (!length(X)) return(.rename(list(), X)) FUN <- match.fun(FUN) AGGREGATE <- match.fun(AGGREGATE) if (!bpschedule(BPPARAM)) { param <- as(BPPARAM, "SerialParam") return( bpvec( X, FUN, ..., AGGREGATE=AGGREGATE, BPREDO=BPREDO, BPPARAM = param ) ) } si <- .splitX(seq_along(X), bpnworkers(BPPARAM), bptasks(BPPARAM)) otasks <- bptasks(BPPARAM) bptasks(BPPARAM) <- 0L on.exit(bptasks(BPPARAM) <- otasks) idx <- .redo_index(si, BPREDO) if (any(idx)) si <- si[idx] ## FIXME: 'X' sent to all workers, but ith worker only needs X[i] FUN1 <- function(i, ...) FUN(X[i], ...) res <- bptry(bplapply(si, FUN1, ..., BPREDO=BPREDO[idx], BPPARAM=BPPARAM)) if (any(idx)) { BPREDO[idx] <- res res <- BPREDO } if (is(res, "error") || !all(bpok(res))) stop(.error_bplist(res)) if (any(lengths(res) != lengths(si))) stop(.error("length(FUN(X)) not equal to length(X)", "bpvec_error")) do.call(AGGREGATE, res) }) setMethod("bpvec", c("ANY", "missing"), function(X, FUN, ..., AGGREGATE=c, BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) AGGREGATE <- match.fun(AGGREGATE) bpvec(X, FUN, ..., AGGREGATE=AGGREGATE, BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bpvec", c("ANY", "list"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) if (!all(vapply(BPPARAM, inherits, logical(1), "BiocParallelParam"))) stop("All elements in 'BPPARAM' must be BiocParallelParam objects") if (length(BPPARAM) == 0L) stop("'length(BPPARAM)' must be > 0") myFUN <- if (length(BPPARAM) > 1L) { param <- BPPARAM[-1] if (length(param) == 1L) function(...) FUN(..., BPPARAM=param[[1]]) else function(...) FUN(..., BPPARAM=param) } else FUN bpvec(X, myFUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM[[1]]) }) BiocParallel/R/bpvectorize-methods.R0000644000175200017520000000062114136050065020445 0ustar00biocbuildbiocbuildsetMethod("bpvectorize", c("ANY", "ANY"), function(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) function(...) bpvec(FUN=FUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) }) setMethod("bpvectorize", c("ANY", "missing"), function(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { FUN <- match.fun(FUN) bpvectorize(FUN, ..., BPREDO=BPREDO, BPPARAM=BPPARAM) }) BiocParallel/R/bpworkers-methods.R0000644000175200017520000000031514136050065020127 0ustar00biocbuildbiocbuildsetMethod("bpworkers", "missing", function(x) { x <- registered()[[1]] bpworkers(x) }) bpnworkers <- function(x) { n <- bpworkers(x) if (!is.numeric(n)) n <- length(n) n } BiocParallel/R/ipcmutex.R0000644000175200017520000000122714136050065016311 0ustar00biocbuildbiocbuild## Utilities ipcid <- function(id) { uuid <- .Call(.ipc_uuid) if (!missing(id)) uuid <- paste(as.character(id), uuid, sep="-") uuid } ipcremove <- function(id) { invisible(.Call(.ipc_remove, id)) } ## Locks ipclocked <- function(id) .Call(.ipc_locked, id) ipclock <- function(id) { .Call(.ipc_lock, id) } ipctrylock <- function(id) { .Call(.ipc_try_lock, id) } ipcunlock <- function(id) { .Call(.ipc_unlock, id) } ## Counters ipcyield <- function(id) { .Call(.ipc_yield, id) } ipcvalue <- function(id) { .Call(.ipc_value, id) } ipcreset <- function(id, n = 1) { invisible(.Call(.ipc_reset, id, n)) } BiocParallel/R/log.R0000644000175200017520000000214514136050065015234 0ustar00biocbuildbiocbuild.log_load <- function(log, threshold, appender = FALSE) { if (!log) return(invisible(NULL)) if (!isNamespaceLoaded("futile.logger")) tryCatch({ loadNamespace("futile.logger") }, error=function(err) { msg <- "logging requires the 'futile.logger' package" stop(conditionMessage(err), msg) }) if (appender) futile.logger::flog.appender(.log_buffer_append, 'ROOT') futile.logger::flog.threshold(threshold) futile.logger::flog.info("loading futile.logger package") } .log_warn <- function(log, fmt, ...) { if (log) futile.logger::flog.warn(fmt, ...) } .log_error <- function(log, fmt, ...) { if (log) futile.logger::flog.error(fmt, ...) } ## logging buffer .log_buffer <- local({ env <- new.env(parent=emptyenv()) env[["buffer"]] <- character() env }) .log_buffer_init <- function() { .log_buffer[["buffer"]] <- NULL } .log_buffer_append <- function(line) { .log_buffer[["buffer"]] <- c(.log_buffer[["buffer"]], line) } .log_buffer_get <- function() { .log_buffer[["buffer"]] } BiocParallel/R/progress.R0000644000175200017520000000257714136050065016330 0ustar00biocbuildbiocbuild### ========================================================================= ### progress bar ### ------------------------------------------------------------------------- .progress <- function(style = 3, active = TRUE, iterate = FALSE, ...) { if (active) { ntasks <- 0L if (iterate) { list(init = function(x) { message("iteration: ", appendLF=FALSE) }, step = function() { ntasks <<- ntasks + 1L erase <- paste(rep("\b", ceiling(log10(ntasks))), collapse="") message(erase, ntasks, appendLF = FALSE) }, term = function() { message() # new line }) } else { ## derived from plyr::progress_text() txt <- NULL max <- 0 list(init = function(x) { txt <<- txtProgressBar(max = x, style = style, ...) setTxtProgressBar(txt, 0) max <<- x }, step = function() { ntasks <<- ntasks + 1L setTxtProgressBar(txt, ntasks) if (ntasks == max) cat("\n") }, term = function() { close(txt) }) } } else { list( init = function(x) NULL, step = function() NULL, term = function() NULL ) } } BiocParallel/R/prototype.R0000644000175200017520000000031114136050065016511 0ustar00biocbuildbiocbuild.prototype_update <- function(prototype, ...) { args <- list(...) stopifnot( all(names(args) %in% names(prototype)) ) prototype[names(args)] <- unname(args) prototype } BiocParallel/R/register.R0000644000175200017520000000522614136050065016302 0ustar00biocbuildbiocbuild### ========================================================================= ### .registry object ### ------------------------------------------------------------------------- .registry <- setRefClass(".BiocParallelRegistry", fields=list( bpparams = "list"), methods=list( register = function(BPPARAM, default = TRUE) { BPPARAM <- eval(BPPARAM) if ((!length(BPPARAM) == 1) || !is(BPPARAM, "BiocParallelParam")) stop("'BPPARAM' must be a 'BiocParallelParam' instance") .self$bpparams[[class(BPPARAM)]] <- BPPARAM if (default) { idx <- match(class(BPPARAM), names(.self$bpparams)) .self$bpparams <- c(.self$bpparams[idx], .self$bpparams[-idx]) } invisible(registered()) }, registered = function(bpparamClass) { if (missing(bpparamClass)) .self$bpparams else .self$bpparams[[bpparamClass]] }) )$new() # Singleton .register <- .registry$register .registered <- .registry$registered .registry_init <- function() { multicore <- .detectCores() > 1L tryCatch({ if ((.Platform$OS.type == "windows") && multicore) { .register(getOption( "SnowParam", SnowParam() ), TRUE) .register(getOption("SerialParam", SerialParam()), FALSE) } else if (multicore) { ## linux / mac .register(getOption( "MulticoreParam", MulticoreParam() ), TRUE) .register(getOption( "SnowParam", SnowParam() ), FALSE) .register(getOption("SerialParam", SerialParam()), FALSE) } else { .register(getOption("SerialParam", SerialParam()), TRUE) } }, error=function(err) { message( "'BiocParallel' did not register default BiocParallelParam:\n", " ", conditionMessage(err) ) NULL }) } register <- function(BPPARAM, default = TRUE) { if (length(.registry$bpparams) == 0L) .registry_init() .register(BPPARAM, default = default) } registered <- function(bpparamClass) { if (length(.registry$bpparams) == 0L) .registry_init() .registered(bpparamClass) } bpparam <- function(bpparamClass) { if (missing(bpparamClass)) bpparamClass <- names(registered())[1] default <- registered()[[bpparamClass]] result <- getOption(bpparamClass, default) if (is.null(result)) stop("BPPARAM '", bpparamClass, "' not registered() or in names(options())") result } BiocParallel/R/rng.R0000644000175200017520000001005614154324272015245 0ustar00biocbuildbiocbuild## .rng_get_generator(): get the current generator kind and seed .rng_get_generator <- function() { seed <- if (exists(".Random.seed", envir = .GlobalEnv, inherits = FALSE)) { get(".Random.seed", envir = .GlobalEnv, inherits = FALSE) } else NULL kind <- RNGkind() list(kind = kind, seed = seed) } ## .rng_reset_generator(): reset the generator to a state returned by ## .rng_get_generator() .rng_reset_generator <- function(kind, seed) { ## Setting RNGkind() changes the seed, so restore the original ## seed after restoring the kind RNGkind(kind[[1]]) if (is.null(seed)) { rm(.Random.seed, envir = .GlobalEnv) } else { assign(".Random.seed", seed, envir = .GlobalEnv) } list(kind = kind, seed = seed) } ## .rng_init_stream(): initialize the generator to a new kind, ## optionally using `set.seed()` to set the seed for the the ## generator. .rng_init_stream <- function(seed) { state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) ## coerces seed to appropriate format for RNGkind; NULL seed (from ## bpRNGseed()) uses the global random number stream. if (!is.null(seed)) { RNGkind("default", "default", "default") set.seed(seed) ## change kind kind <- "L'Ecuyer-CMRG" RNGkind(kind) ## .Random.seed always exists after RNGkind() seed <- get(".Random.seed", envir = .GlobalEnv, inherits = FALSE) } else { .rng_internal_stream$set() seed <- get(".Random.seed", envir = .GlobalEnv, inherits = FALSE) ## advance internal stream by 1 runif(1) .rng_internal_stream$reset() } seed } ## .rng_next_stream(): return the next stream for a parallel job .rng_next_stream <- function(seed) { ## `nextRNGStream()` does not require that the current stream is ## L'Ecuyer-CMRG if (is.null(seed)) seed <- .rng_init_stream(seed) nextRNGStream(seed) } .rng_next_substream <- function(seed) { if (is.null(seed)) seed <- .rng_init_stream(seed) nextRNGSubStream(seed) } ## iterate the seed stream n times .rng_iterate_substream <- function(seed, n) { for (k in seq_len(n)) seed <- .rng_next_substream(seed) seed } ## a random number stream independent of the stream used by R. Use for ## port and other 'internal' assignments without changing the random ## number sequence of users. .rng_internal_stream <- local({ state <- .rng_get_generator() RNGkind("L'Ecuyer-CMRG") # sets .Random.seed to non-NULL value internal_seed <- .Random.seed .rng_reset_generator(state$kind, state$seed) list(set = function() { state <<- .rng_get_generator() internal_seed <<- .rng_reset_generator("L'Ecuyer-CMRG", internal_seed) }, reset = function() { internal_seed <<- .rng_get_generator()$seed .rng_reset_generator(state$kind, state$seed) }) }) ## .rng_job_fun_factory(): use in conjunction with ## .rng_lapply() to coordinate streams across tasks in a job, ## independent of how the job are organized into tasks. .rng_job_fun_factory <- function(FUN, SEED) { ## 'on.exit' is of .rng_job_fun_factory(), not when the anonymous ## function goes out of scope state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) force(FUN) SEED <- .rng_reset_generator("L'Ecuyer-CMRG", SEED)$seed function(...) { ## get / reset the stream each time the function is evaluated state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) .rng_reset_generator("L'Ecuyer-CMRG", SEED) result <- FUN(...) SEED <<- .rng_next_substream(SEED) result } } ## lapply, but with 'FUN()' wrapped so that each call uses a new ## random number stream .rng_lapply <- function(X, FUN, ..., BPRNGSEED) { state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) FUN <- .rng_job_fun_factory(FUN, BPRNGSEED) lapply(X, FUN, ...) } BiocParallel/R/utilities.R0000644000175200017520000001624314136050065016472 0ustar00biocbuildbiocbuild.getEnvironmentVariable <- function(variable, default = NA_integer_) { result <- withCallingHandlers({ value <- Sys.getenv(variable, default) as.integer(value) }, warning = function(w) { txt <- sprintf( "Trying to coercing the environment variable '%s' to an integer caused a warning. The value of the environment variable was '%s'. The warning was: %s", variable, value, conditionMessage(w) ) .warning(txt) invokeRestart("muffleWarning") }) if (!is.na(result) && (result <= 0L)) { txt <- sprintf( "The environment variable '%s' must be > 0. The value was '%d'.", variable, result ) .stop(txt) } result } .detectCores <- function() { ## environment variables; least to most compelling result <- .getEnvironmentVariable("R_PARALLELLY_AVAILABLECORES_FALLBACK") result <- .getEnvironmentVariable("BIOCPARALLEL_WORKER_NUMBER", result) ## fall back to detectCores() if necessary if (is.na(result)) { result <- parallel::detectCores() if (is.na(result)) result <- 1L result <- max(1L, result - 2L) } ## respect 'mc.cores', overriding env. variables an detectCores() result <- getOption("mc.cores", result) ## override user settings by build-system configurations if (nzchar(Sys.getenv("_R_CHECK_LIMIT_CORES_"))) result <- min(result, 2L) if (nzchar(Sys.getenv("BBS_HOME"))) result <- min(result, 4L) result } .splitIndices <- function (nx, tasks) { ## derived from parallel i <- seq_len(nx) if (nx == 0L) list() else if (tasks <= 1L || nx == 1L) # allow nx, nc == 0 list(i) else { fuzz <- min((nx - 1L)/1000, 0.4 * nx / tasks) breaks <- seq(1 - fuzz, nx + fuzz, length.out = tasks + 1L) si <- structure(split(i, cut(i, breaks)), names = NULL) si[sapply(si, length) != 0] } } .split_X_redo <- function(X, redo_index, elements_per_task, n) { ## Whether we need to calculate n? prealloc <- missing(n) splittedX <- vector("list", ifelse(prealloc, 0L, n)) last_redo_status <- redo_index[[1]] task_i <- 1L x_start <- 1L x_len <- 0L for (i in seq_along(redo_index)) { redo <- redo_index[[i]] ## The task division depends on two factors: ## 1. Whether the current redo is different from the previous one? ## 2. Whether the elements number in a task will exceed ## `elements_per_task` limit is_switch <- xor(last_redo_status, redo) is_switch <- ifelse( is_switch || !redo, is_switch, x_len >= elements_per_task ) ## If we want to split X at this position and it is not in the ## preallocation stage, we create a subset of X or ## .bploop_rng_iter based on the previous redo value if (!prealloc && is_switch) { if (last_redo_status) splittedX[[task_i]] <- X[seq.int(x_start, length.out = x_len)] else splittedX[[task_i]] <- .bploop_rng_iter(x_len) } ## if we split X, record the next redo status, start index, ## add task index by 1 and reset the length, otherwise we just ## add the length by 1 if (is_switch) { x_start <- ifelse(last_redo_status, x_start + x_len, x_start) last_redo_status <- redo task_i <- task_i + 1L x_len <- 1L } else { x_len <- x_len + 1 } if (!prealloc && task_i >= n) break } ## The last task does not have the "switch" so we need to manually add it if (!prealloc && last_redo_status) { splittedX[[task_i]] <- X[seq.int(x_start, length(X))] } if (prealloc) { task_i - !last_redo_status } else { splittedX } } .splitX <- function(X, workers, tasks, redo_index = NULL) { if (tasks == 0L) { tasks <- workers } else { tasks <- min(length(X), tasks) } ## If redo index presents, split X based on the index while ## preserving the correct rng stream. it will respect `tasks` ## value if (length(redo_index)) { ## Two-pass algorithm, the first pass calculate the required ## list size to allocate, then do the real allocation elements_per_task <- ceiling(length(X) / max(tasks, 1L)) n <- .split_X_redo(X, redo_index, elements_per_task) .split_X_redo(X, redo_index, elements_per_task, n) } else { idx <- .splitIndices(length(X), tasks) relist(X, idx) } } .redo_index <- function(X, BPREDO) { idx <- !bpok(BPREDO) if (length(idx)) { if (length(BPREDO) != length(X)) stop("'length(BPREDO)' must equal 'length(X)'") if (!any(idx)) stop("no previous error in 'BPREDO'") } idx } ## re-apply names on X of lapply(X, FUN) to the return value .rename <- function(results, X) { names(results) <- names(X) results } ## re-apply the names on, e.g., mapply(FUN, X) to the return value; ## see test_mrename for many edge cases .mrename <- function(results, dots, USE.NAMES=TRUE) { ## dots: a list() containing one element for each ... argument ## passed to mapply if (USE.NAMES) { ## extract the first argument; if there are no arguments, then ## dots is (unnamed) list(0) if (length(dots)) dots <- dots[[1L]] if (is.character(dots) && is.null(names(dots))) { names(results) <- dots } else { names(results) <- names(dots) } } else { results <- unname(results) } results } .simplify <- function(results, SIMPLIFY=FALSE) { if (SIMPLIFY && length(results)) results <- simplify2array(results) results } .prettyPath <- function(tag, filepath) { wd <- options('width')[[1]] - nchar(tag) - 6 if (length(filepath) == 0 || is.na(filepath)) return(sprintf("%s: %s", tag, NA_character_)) if (0L == length(filepath) || nchar(filepath) < wd) return(sprintf("%s: %s", tag, filepath)) bname <- basename(filepath) wd1 <- wd - nchar(bname) dname <- substr(dirname(filepath), 1, wd1) sprintf("%s: %s...%s%s", tag, dname, .Platform$file.sep, bname) } .getDotsForMapply <- function(...) { ddd <- list(...) if (!length(ddd)) return(list(list())) len <- vapply(ddd, length, integer(1L)) if (!all(len == len[1L])) { max.len <- max(len) if (max.len && any(len == 0L)) stop("zero-length and non-zero length inputs cannot be mixed") if (any(max.len %% len)) warning("longer argument not a multiple of length of vector") ddd <- lapply(ddd, rep_len, length.out=max.len) } ddd } .dir_valid_rw <- function(x) { all(file.access(x, 6L) == 0L) } .warning <- function(...) { msg <- paste( strwrap(paste0("\n", ...), indent = 2, exdent = 2), collapse="\n" ) warning(msg, call. = FALSE) } .stop <- function(...) { msg <- paste( strwrap(paste0("\n", ...), indent = 2, exdent = 2), collapse="\n" ) stop(msg, call. = FALSE) } BiocParallel/README.md0000644000175200017520000000134714136050065015411 0ustar00biocbuildbiocbuildBiocParallel ============ Bioconductor facilities for parallel evaluation (experimental) Possible TODO ------------- + map/reduce-like function + bpforeach? + Abstract scheduler + lazy DoparParam + SnowParam support for setSeed, recursive, cleanup + subset SnowParam DONE ---- + encapsulate arguments as ParallelParam() + Standardize signatures + Make functions generics + parLapply-like function + Short vignette + elaborate SnowParam for SnowSocketParam, SnowForkParam, SnowMpiParam, ... + MulticoreParam on Windows github notes ------------ + commit one-liners with names git log --pretty=format:"- %h %an: %s" TO FIX ------------- + DoparParam does not pass foreach args (specifically access to .options.nws for chunking) BiocParallel/build/0000755000175200017520000000000014154342106015224 5ustar00biocbuildbiocbuildBiocParallel/build/vignette.rds0000644000175200017520000000055314154342106017566 0ustar00biocbuildbiocbuild‹Í‘]KÃ0†³®N7P†»5z-?þ€£†"c컵Y-´ÉHR†wûáâ<]“­-RñNB¾Îyyó䜷BÈAnËANŽí,˜}˜.Œ.ìx‹`B%M–!ÕÁ»"Qy(õ¦|etçOR ©È‹ˆyä!ñÙ<‹¢˜G%s-E˜:œÌ)›—t§SÊC‘’×,3©¶™*ÖõW1ÃZàœ»÷pÁvƒs8 ÖxgD—·?ؕ،ìêÁÃ6h8æUá_ª· ¿Wo/j®Þ^W¯^ž©b]47Õ¨ÎZjšjTýz;!6ØâX¨a/ëãw´¬¶ådÌ’*-#“ì?©]¢-“=à4eÊXtLÐÅ ³‚Y¬w—öÄ™cËVòÐgKÆCeŸf+!á^}¨+Åʳç¼kX6›Íg(H¨²D6Ø ©¦ü#Í¿ûõ ÝÝÁ'BiocParallel/cleanup0000755000175200017520000000002314154342106015475 0ustar00biocbuildbiocbuildrm -f src/Makevars BiocParallel/configure0000755000175200017520000032711514154342106016045 0ustar00biocbuildbiocbuild#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for BiocParallel 1.17.11. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='BiocParallel' PACKAGE_TARNAME='biocparallel' PACKAGE_VERSION='1.17.11' PACKAGE_STRING='BiocParallel 1.17.11' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures BiocParallel 1.17.11 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/biocparallel] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of BiocParallel 1.17.11:";; esac cat <<\_ACEOF Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF BiocParallel configure 1.17.11 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by BiocParallel $as_me 1.17.11, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shm_open in -lrt" >&5 $as_echo_n "checking for shm_open in -lrt... " >&6; } if ${ac_cv_lib_rt_shm_open+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shm_open (); int main () { return shm_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rt_shm_open=yes else ac_cv_lib_rt_shm_open=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_shm_open" >&5 $as_echo "$ac_cv_lib_rt_shm_open" >&6; } if test "x$ac_cv_lib_rt_shm_open" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 _ACEOF LIBS="-lrt $LIBS" fi ac_config_files="$ac_config_files src/Makevars" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by BiocParallel $as_me 1.17.11, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ BiocParallel config.status 1.17.11 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "src/Makevars") CONFIG_FILES="$CONFIG_FILES src/Makevars" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi BiocParallel/configure.ac0000644000175200017520000000034514136050065016415 0ustar00biocbuildbiocbuildAC_INIT([BiocParallel], 1.17.11) dnl package name, version dnl check librt for shm_open support dnl R usually is linked to librt but not always AC_CHECK_LIB(rt, shm_open) AC_SUBST(LIBS) AC_CONFIG_FILES([src/Makevars]) AC_OUTPUT BiocParallel/inst/0000755000175200017520000000000014154342106015102 5ustar00biocbuildbiocbuildBiocParallel/inst/RMPInode.sh0000755000175200017520000000022214136050065017052 0ustar00biocbuildbiocbuild#! /bin/sh ${RPROG:-R} --vanilla < ${OUT:-/dev/null} 2>&1 loadNamespace("Rmpi") loadNamespace("snow") BiocParallel::bprunMPIworker() EOF BiocParallel/inst/RSOCKnode.sh0000755000175200017520000000041614136050065017171 0ustar00biocbuildbiocbuild#! /bin/sh # the & for backgrounding works in bash--does it work in other sh variants? ${RPROG:-R} --vanilla < ${OUT:-/dev/null} 2>&1 & loadNamespace("snow") options(timeout=getClusterOption("timeout")) BiocParallel::.bpworker_impl(snow::makeSOCKmaster()) EOF BiocParallel/inst/doc/0000755000175200017520000000000014154342106015647 5ustar00biocbuildbiocbuildBiocParallel/inst/doc/BiocParallel_BatchtoolsParam.R0000644000175200017520000000510014154342006023461 0ustar00biocbuildbiocbuild## ----style, eval=TRUE, echo=FALSE, results="asis"-------------------------- BiocStyle::latex() ## ----setup, echo=FALSE----------------------------------------------------- suppressPackageStartupMessages({ library(BiocParallel) }) ## ----intro----------------------------------------------------------------- library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } piApprox(1000) ## Apply piApprox over param <- BatchtoolsParam() result <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) mean(unlist(result)) ## -------------------------------------------------------------------------- registryargs <- batchtoolsRegistryargs( file.dir = "mytempreg", work.dir = getwd(), packages = character(0L), namespaces = character(0L), source = character(0L), load = character(0L) ) param <- BatchtoolsParam(registryargs = registryargs) param ## -------------------------------------------------------------------------- fname <- batchtoolsTemplate("slurm") cat(readLines(fname), sep="\n") ## ----simple_sge_example, eval=FALSE---------------------------------------- # library(BiocParallel) # # ## Pi approximation # piApprox <- function(n) { # nums <- matrix(runif(2 * n), ncol = 2) # d <- sqrt(nums[, 1]^2 + nums[, 2]^2) # 4 * mean(d <= 1) # } # # template <- system.file( # package = "BiocParallel", # "unitTests", "test_script", "test-sge-template.tmpl" # ) # param <- BatchtoolsParam(workers=5, cluster="sge", template=template) # # ## Run parallel job # result <- bplapply(rep(10e5, 100), piApprox, BPPARAM=param) ## ----demo_sge, eval=FALSE-------------------------------------------------- # library(BiocParallel) # # ## Pi approximation # piApprox <- function(n) { # nums <- matrix(runif(2 * n), ncol = 2) # d <- sqrt(nums[, 1]^2 + nums[, 2]^2) # 4 * mean(d <= 1) # } # # template <- system.file( # package = "BiocParallel", # "unitTests", "test_script", "test-sge-template.tmpl" # ) # param <- BatchtoolsParam(workers=5, cluster="sge", template=template) # # ## start param # bpstart(param) # # ## Display param # param # # ## To show the registered backend # bpbackend(param) # # ## Register the param # register(param) # # ## Check the registered param # registered() # # ## Run parallel job # result <- bplapply(rep(10e5, 100), piApprox) # # bpstop(param) ## ----sessionInfo, results="asis"------------------------------------------- toLatex(sessionInfo()) BiocParallel/inst/doc/BiocParallel_BatchtoolsParam.Rnw0000644000175200017520000002231514136050065024036 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{2. Introduction to BatchtoolsParam} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Introduction to \emph{BatchtoolsParam}} \author{ Nitesh Turaga\footnote{\url{Nitesh.Turaga@RoswellPark.org}}, Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}} } \date{Edited: March 22, 2018; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rcode{BatchtoolsParam} class is an interface to the \CRANpkg{batchtools} package from within \BiocParallel{}. This aims to replace BatchjobsParam as \BiocParallel{}'s class for computing on a high performance cluster such as SGE, TORQUE, LSF, SLURM, OpenLava. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Quick start} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This example demonstrates the easiest way to launch a 100000 jobs using batchtools. The first step involves creating a \Rcode{BatchtoolsParam} class. You can compute using 'bplapply' and then the result is stored. <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } piApprox(1000) ## Apply piApprox over param <- BatchtoolsParam() result <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) mean(unlist(result)) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\emph{BatchtoolsParam} interface} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rcode{BatchtoolsParam} interface allows you to replace the BatchJobsParam interface, and allow more intuitive usage of your high performance cluster with \BiocParallel{}. The \Rcode{BatchtoolsParam} class allows the user to specify many arguments to customize their jobs. Applicable to clusters with formal schedulers. \begin{itemize} \item{\Rcode{workers}} The number of workers used by the job. \item{\Rcode{cluster}} We currently support, SGE, SLURM, LSF, TORQUE and OpenLava. The 'cluster' argument is supported only if the R environment knows how to find the job scheduler. Each cluster type uses a template to pass the job to the scheduler. If the template is not given we use the default templates as given in the 'batchtools' package. The cluster can be accessed by 'bpbackend(param)'. \item{\Rcode{registryargs}} The 'registryargs' argument takes a list of arguments to create a new job registry for you \Rcode{BatchtoolsParam}. The job registry is a data.table which stores all the required information to process your jobs. The arguments we support for registryargs are: \begin{description} \item{\Rcode{file.dir}} Path where all files of the registry are saved. Note that some templates do not handle relative paths well. If nothing is given, a temporary directory will be used in your current working directory. \item{\Rcode{work.dir}} Working directory for R process for running jobs. \item{\Rcode{packages}} Packages that will be loaded on each node. \item{\Rcode{namespaces}} Namespaces that will be loaded on each node. \item{\Rcode{source}} Files that are sourced before executing a job. \item{\Rcode{load}} Files that are loaded before executing a job. \end{description} <<>>= registryargs <- batchtoolsRegistryargs( file.dir = "mytempreg", work.dir = getwd(), packages = character(0L), namespaces = character(0L), source = character(0L), load = character(0L) ) param <- BatchtoolsParam(registryargs = registryargs) param @ \item{\Rcode{resources}} A named list of key-value pairs to be subsituted into the template file; see \Rcode{?batchtools::submitJobs}. \item{\Rcode{template}} The template argument is unique to the \Rcode{BatchtoolsParam} class. It is required by the job scheduler. It defines how the jobs are submitted to the job scheduler. If the template is not given and the cluster is chosen, a default template is selected from the batchtools package. \item{\Rcode{log}} The log option is logical, TRUE/FALSE. If it is set to TRUE, then the logs which are in the registry are copied to directory given by the user using the \Rcode{logdir} argument. \item{\Rcode{logdir}} Path to the logs. It is given only if \Rcode{log=TRUE}. \item{\Rcode{resultdir}} Path to the directory is given when the job has files to be saved in a directory. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Defining templates} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The job submission template controls how the job is processed by the job scheduler on the cluster. Obviously, the format of the template will differ depending on the type of job scheduler. Let's look at the default SLURM template as an example: <<>>= fname <- batchtoolsTemplate("slurm") cat(readLines(fname), sep="\n") @ The \Rcode{<\%= =>} blocks are automatically replaced by the values of the elements in the \Rcode{resources} argument in the \Rcode{BatchtoolsParam} constructor. Failing to specify critical parameters properly (e.g., wall time or memory limits too low) will cause jobs to crash, usually rather cryptically. We suggest setting parameters explicitly to provide robustness to changes to system defaults. Note that the \Rcode{<\%= =>} blocks themselves do not usually need to be modified in the template. The part of the template that is most likely to require explicit customization is the last line containing the call to \Rcode{Rscript}. A more customized call may be necessary if the R installation is not standard, e.g., if multiple versions of R have been installed on a cluster. For example, one might use instead: \begin{verbatim} echo 'batchtools::doJobCollection("<%= uri %>")' |\ ArbitraryRcommand --no-save --no-echo \end{verbatim} If such customization is necessary, we suggest making a local copy of the template, modifying it as required, and then constructing a \Rcode{BiocParallelParam} object with the modified template using the \Rcode{template} argument. However, we find that the default templates accessible with \Rcode{batchtoolsTemplate} are satisfactory in most cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Use cases} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As an example for a BatchtoolParam job being run on an SGE cluster, we use the same \Rcode{piApprox} function as defined earlier. The example runs the function on 5 workers and submits 100 jobs to the SGE cluster. Example of SGE with minimal code: <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } template <- system.file( package = "BiocParallel", "unitTests", "test_script", "test-sge-template.tmpl" ) param <- BatchtoolsParam(workers=5, cluster="sge", template=template) ## Run parallel job result <- bplapply(rep(10e5, 100), piApprox, BPPARAM=param) @ Example of SGE demonstrating some of \Rcode{BatchtoolsParam} methods. <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } template <- system.file( package = "BiocParallel", "unitTests", "test_script", "test-sge-template.tmpl" ) param <- BatchtoolsParam(workers=5, cluster="sge", template=template) ## start param bpstart(param) ## Display param param ## To show the registered backend bpbackend(param) ## Register the param register(param) ## Check the registered param registered() ## Run parallel job result <- bplapply(rep(10e5, 100), piApprox) bpstop(param) @ \section{\Rcode{sessionInfo()}} <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/inst/doc/BiocParallel_BatchtoolsParam.pdf0000644000175200017520000051621714154342007024052 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 46 0 obj << /Length 2103 /Filter /FlateDecode >> stream xÚí[Y“ÛÆ~ß_*?L£¹$®JdK*»$[õàZ)UXÜED4ê¨Tþ{zrAìZÞ]P*À\Ý=ÓýuOÏGŽžžàÎóÑøäán"ŒR2Ï"n0¢‚FRÀSGãit“Ñ»ñ'aà 0XhO%±RQCýFÕ«§~xÃcb‡gH*%iÂüà?åMV_¢ñH›x5JH\Hœ^¤·D£$t0ˆKî;¼*ë#†ãl>1¢&NíGõ•ö£ºð¼þ†¼aq”Œ¸#Ó!å|îùlò=¬¦Åu!ÅBÞ‹ñÝz?|"ID1’’ +w™ALEŠƒY~(šjDq\NW“&/‹QB•Ž›Ò ýi»?Ì€#×õQÚLFÇ—MYÎëvÒ*]l‰ÿð cáˆqʲ@°FB3à…"nd[ÍF “* W(™gHd$u:a0@@I(–-õïRˆë(iµ:õcÛe&n™Ãwé¾a­o E°ADµiQßJˆd„ðQ¬‚²„iÄLP¨ÇSiú—QÂÁrÙIÒÀÅDÿÕ¾Êø»r±ÌçÖÂB/ï¾&Ù⚀²U¾“9õ=(¦¤GMƒµ†)Tˆkp3·> `Ââ$Èÿ]Y4YÑÔÛdw w5‹kjðÐfw`‹Î¢‰pÚ½Ñìûw©€{ š"Ý\‰˜U0 tãªGŠÒcå±òXy¯J(¤„²`¡_ÌJ‚Ý'”ƒW2»‡)kÔz¹Ê'Ö'¿÷θnRÀ~Žãf8Ó |9BرòXyÄ·€o¾ l§]˜”íñ©¶{{7±ÞIp»“°[ ¿›è2»£ÅºcAi5s»I6BrÄ1È;V~Up ‡D*¤¥ÞBÞCðó}öcZäÅEHEd‹å]¯›«\/ÀV«ót½n®‚^Ç'¿žX@É%ˆqbe&š,N\…BŠj¨EšY4;yyO&Ýq§T‘A‚ƒ°qÐT\Gœ‚kádå Ãw—‰iàþšL”!®ÈP2M£º2]Oì.”„Iô+ã ”ƒ-”´*O¶…ú¡˜•o±Àðo§œÆ¾šI$„8úêcå±²+{ «{:¿&\!Iy8Á[gʽP´û Cø gÌ; »æ#­iÄ”A¹ËÏÞáh u?Bxüѵ\ô DŒÍOΣ×ÚÛ—ˆºw(8ø˜ÍBÞf|¹Nœ~­è‚0DÀY1a€)µñÄqˆ. rÓÖ‡ÏRà§° Í,I¦õÖ<¸tÑ…BX^“‰k%É$ٖɧÔo¸˜³¥ÂFw›ÍëdžÖµ½fÂãÜ=EœáÛeÛm¦Ý}6¥¯n.³N„lß¼!B ½ææÜŸ À&^Ç Ë—Ä›r“È[¦“÷éEàtV• ÏëǼ¹Ì‹þØÕº9x”{N'/Fð›ÚŸ* 7ɸD’ À&·CðíÓù<›I& jº•WHå`±~apœæ û&LX WÙr{•þWy^·ØI¡kÝãšiìàö ³ð»’rx5›Õ{Ü(#Žg¥(”—‹åˆÄ«Æ¥ŠmIY¹üã2¿¸ôOA/4ÍÖÄ/ƒ Ì~ÐEZ¸9c (®êÆÝ·‚zåîmÁ[j¹`<~ýôñ©/ÿüêå›õdz×OÂÛëgo^=?õ¶dTœÏÒ)êíæÔ—/jÑÜÜï\JèÝçQ#&½º<ª$Ò”­}ÞÚ²Oéb9Ïüµºi¶(‹º©Ü‰ÃÚ\U–ÖyV7D‚^«øshVúVótUø›~Â+¢Œ ¶|‘5E_ºªƒâŠ.ÂYçdí•ÝEؖ޾ŌWŽ .a²¥Ë‹åüCQû‚I•¥Á6à+ýºž‚·UFFTÂT‰}8x ^ÚRÉÝAUÿž2›ý¸&ÔÞ’4ª#Ô­]<ÃrËÅ#{ӔƿŒ4ËUPçéí àëªÉüÇÊë5ƒ· SÎÁÑ,—óÏ‚ŽS·lW+ô6€ØQáñÑ[¼TY½š7(5Z¼m<gS´QYE[0kÝ⵪FÑÖc½¢â;·¾ ¥¦ˆ³ÍÊD"̯ÿnLÝMà![keõ‘CdŽ!ƾm·ðFE]C.³(ôtžŸWiõù^Ëj_Ú¿›¶í_ç®b›t‚øcb-†­ÔÝhZQÚ¿®m·Ð»dÓðš2dBüýÍ7£Db¿Èý ¦*?å‹´u'y˜©è¬HÇ,ó8Nî³[ïþú ÁÊö·ä^Y%Zÿnl£[xEevðÉ z44}A¼âý{XRvAœoëX±ZÔ _·E±@L³Ê?¬vÝ^š¸Zùìpq¡•·p˹¤SèiÐ~´ˆØ„¸¸‰pÃàOÃNABA”°!WX{<xIœ“r¾:ß¼öŽÝ LJ€Ñ iÿŸX!§> stream xÚí\[s›H~÷¯ f,UY½ôfw’*'•”'É8NíC’,a‹P<ž_¿§û4°ãø†"g]S㦯§O÷w®‚ø„Iêy~»(N»uW¾Üñ=èò^î æiÁ£Ü;šyG¯²ª3”ÏVÓ*ɳñ„é`TåãÏG¯a:kM׌RÁÚvâ󨚎©?šWyž–ïÆÜEE´0óvüÛm˜„ÂÖ[…}¹ùÖ£÷vþÚ¡°gߣ5ÿŠi_yÓÅŽiLjÞV¡WÄÞÉΟ·ÞÔír´ô™×þkÇök|„ž&¡i 9ð¤BJ|åðñë¯ã‰òÙèÙr™^àã2J‘ÿµük\ÜéÒÍCûo3¶ýFÂ&uk“¾7¡j÷·¼+è,&L¿ýZ¼–ŸÿLîÄM ¨ Â_Ê$Ží7®©éq’sg©¹éÂ)}ò¥ÿÓaéô®¦ˆËUZ=¾»9^¦‘Eû.e`~à–ÛËUn¯¸od£×ˆ4¨Ë¡ùؘ ‹-êoà:è^WQï L5Ú»wÏŸý14{¿[…g]vcÑéé²Ee?ƒ>XeiRV›àµ¿¹¨{žaFÛ럂÷¼œô3>pB•,pûÐtÞzSÖA7MJ­|­q…«»ÐGâ0ĨÆIš€‹/œhN‘G޼<=Õ¦‡äZ‘A˜0}œþ>)—„s]ÏL²*.Nl(1»Û½Ó6¯òþe axÿ?ûÞ ú^ÃÞ¹¹h"ßK½÷&hGT JëÈyÌR›ˆB#Gó¸A»^¿tX¸ª«o¬ùè–5Þ®èê3J© >žT´¨ã&ˆ`lÞž[åÜe9´rC’ÁÕvÂâ`-@÷dŠ5q‰).ØâÀ ÇTßgwÐèáB2•êÂÚ@z"$EišY0:/±~1fz”¯°‘·-ÁqK›ÕÜ=Ø#}ƒdÁœÈ¬bvbû*`ýEd²1ÍÌ.½I¨ •ºkÒšmŒ'œóÑ"7K1Ö`±UR%_]uUF§î1?1¥0»`׶ΓÓ9>-Çè€ØÅ‹E”MÝÌiº*a‹8ý<©jlÜMIÕ:o¦)áT6(Éí.¦ïÌÜ1¥iœ^wgá¶ÝŽ3XغÖb $œ%OB9S›‘pNB)@WÒp åÜgjX ×$à=¦n,á>­Á2M£Ò3UNª4 7ÔQt©2зM9¶”FTô(ž&'ØÂrá–±˜=]-â¬*±§©Ñ¤(_$ÿ¸u@R8)WDÙ•ò/ ,Œ¦p’itœ:y4 QtrYb«Lût‚´È"Jqh9dzU›FOQLîíLèv–’2BµêJÜ'VN—Ü—&‚ñ—ÒÀÉj´Ò(Á†ÁÀê"I_Zó¼8{H d>¿Ä“°yßÁ$ŒW—'ƒÅkD€¡tXËžQÆ®ÙjqìlOÛR¢­}µu6¶ýemÕââúØ´_8±¨ÑÞ°3RòÇ‚o–Ô&ñ-BF rªuU>4¾ûŽˆ²6¾u~[vª=úÍÐJ×®8B`)CÞµ-»Îr삼¼c³°%1‚®h£Vì ?Ï +vä –(|ðpˆ3ãìkRäÙzɳ¬ñMuÞ¸°3hP~ò¹Èf½¿_ù±e¦—ÛiŒð,¥íGSc5my¬P©¬ŽpÇ„M @J|ŠÜ˜xn{åºí~ \ZïÀ¶Ì]è–§»›`ôêd=àŠÍ¯)2δey…§àÂgØwî€dšaãø`ÉšÞY|™l=¶ÆÆèÛuÝ‚Qyi½$ë-±{Œ?ÞtZîbó2šžAô@®Ú}£¼[±T tqjÙ:HX‰¦Ó¸v;œâæŽ{¼<Z–ÍlfrPË:B2)¨Ý1åáË<ýx:D 4Ò&”_­Ð™Öü*túpú”*Õ—XÒFI‘}‡¥¤¬ŠãIR›žêñ4hh$Úeé"*N¯uÂ`°R´ã„e° ×kŽãbxŸ¢"¦ª}0ºÅês«=¢3ÓÜè,l’Ú>'ÎMnDvjŽå´ˆlægñ9>|q*¢|Bïÿ@éöjõKî´³?8ÌLVÍF¿„z#PŠÐ $}CùÌ79µ>KCÆøÌ3]–nâ pyÖ·AtP[,á,8<´Q$Ñåሦ:‹íUDª:ì–£óybý NWèY/º¢ÔÅÙµ±ŸØ´gÈú¸ýk•Ö* v¸Iµá <¦ÑºŠ–¶ÇeÃbë†@o+wcÐ32YÉBÇ ¢}‰3#kÂt÷}:lu[ÁáW邎 \&á·-3˜Œ_x\ÃÙ$œ98çÁPö(²(2Ø’Ë7Ÿ$iLfɵƒ“±~1 sž6‰c\ãylsº¦Í¢ ŒœZÌ™ë;ÁP{ ž›{s]eô5žYAà£7y×3-ÈM%•ù*uOÜ8‘¦:ËÔ ÁëBÀ:¬\…£9D$VR´dS»2¦¡¡a l•8¡˜¦ÖKæè%C3¬3O²Sž¸±ÖiÝ3m:ê¾Ý™u.Qé#—8N;ž:ɼÀáç‰=;èt)†«œÙUã•&ÙU9r½5I‰À?à Cc—2-d;E‚…„RºI‘à”P Ü¤¼n ÊïÆÐ.ä[\ºf—ñ jà°þ=ã’í,V™ù­¥Ys®[ys€Wª7“­t7G9P¤õËzÓ‡KV Fh 7Ê\ty‚ÐözGæ(ÙUÎ6 .ëtcTÕ?‰¡ùç’±•4fµb±æÊ8ª]ˆÌ:Á¾o'àX(€ b¾+Ž…’0î2mY´ˆ.}( áÚ7Éø Œuy!úâ4¾ƒÃߘ#À9¼ño½<Ëux㈷`{ñ¦%ñlî&´/ Š7­ ÷ëT"ûÞ›+½ËáŒøë^^$éå{‰Ú?Ä㊳Ž^pÆÇˆÿާ«ªñ!¢Æmé I8¯MZ &CµËËpß\[ÿzÚÂr§ÛÙÎ/%@Štz°†M”îûæ<©2ѺzüJÜô…Æo'6¸™¢N*ÔqÓ:sö¨^zo^Ú;¼'yåõÆ4@ÁP!ºÁf7¦öµèßïAD1}™ÈºqMä—Å… h¿lç[òwý„¤êmãMÝRÌNãê|¶©¯}6{WË:¬ùYîj:ŠhZÅÅÏð°™O6‰¸lÚ> stream xÚÕZÝ“Ó8Ÿ¿Â·˜‘(àw¶ð|JÂ{Jr™ðÎæÞûÑ˼.ÇœŽŠy“Ôi‘'\…£º<{ì|‡]qúŒmŸÆu2ft´ª‹"«ÞŽÅe¼F¾úu&‘4íÂô¾JþêÞÏÎN>0˜3õ˜§|¢ÂÌà“@*/YŸ ]R˜Iä±He©½ÅÉï_=©¯QØ®Œò‰|ÊÑ´Œ…DÐÐ "F¨Y ?x0ž°£ÙæôÍ‹Jëùãñ$ |ôæÉ϶2ÛÔéZMíp?â”Òîé¦,–¥®ªY\ºÏŸ¼~÷ ן0ð¯Ómв^fÅ,Î*ÇwvúdznØEQ&úÅ¿¿bȬXÎÓ²›þzÔ›¬¾–!ØcH²¦ªuiûÖ—íØÖ0Hš¥¾Q\­×›,®õq“+õ2­êò2.—`škz ûb‘fšluX_¢ `¿‘é¢(Ïw˜¦õz3=…Ÿ?‹§O²lz:kÒlžø’ΔR‘\Ó§i‘¼…—e:›~N—¹®k]Ý(d'çñR·K›¬€=~ >¥ðî³¶áÎãµ®`ˆcù÷¥WEÞs;Þ¬ˆç·ã\Çç°zƒOí·UüY· ~48¯ÑкǠ8Ò"}W ãpè*(U@•²#~£LŸ«ÝCbÂ8Q›pI( ­r8£V›+¹O£ÐÛ/Ýœ=j!œÞ~ÙÚåÀ£}(GÀD ”!`:g-–3ÐS2FëÈo3Åë!Z†Š(&­a,¶Ü‰B\‘@°}…„Hî)ãü¶·ÐÓçÜßq(mð6—Œ "Ìm5ƒ½5≅¥œy8Ò—“ÏqÖhûh3f£8-+Û‚PÃtœAä=m£jfUZ7u;nš›nØ}庴¸m[¨™þû¨•]òm½S ØgA»˜<‚¸Kìžä´Ä¿f¤­îÌEe@”ò÷µ  M˜9„VRÊe_+p>~ >²NëWÅìF…Ù‰ óXÒG±;ÂKˆ‹i˜·ß=bú> VZÄ”&¨Ö'}î Ø·wæ‚ÉÔ¾JprI¤ˆ À÷{*YºÁ yn¤Z'å‘‚øÛ–f$¬´i±mõú&Å&E_çQ`* Íy’Ú CËãvV[ÜéIh*Ü}¶–æËíÓozä¡û!T‹6Xx=JôiÁñ•è¼Lzc¦ÆH d눻ÅÎE˜ï"Bq¶7À÷‘— %I›h±zrŒ¼ÅÕ‹ëžÒnu8쮆 îj<¥oÏd ¥îÔh8¨yviHßvñVl±· "$*ÊQ$‡4po~A¸¼q€- ‡Ì¹3ý8ǯð%ìÿïÛ„BºoÛW("äƒÞ¹õÂw}?³¯Ò!’»Ÿééôlc0ËíkÄ-¶qi£.]ô„ýÀH&¡>m¤‹•­í0š´)«¸²{EXõu·ŽØÀûþ¹âFŽí“þ4 6»(D‚mk%m ‘x¦ž(åNy ÜF¢÷~Â"&G¿BÊFynÃ*|ÝëÒ–ê´ê¹¤{ã,Àih<òýGêÍád=D€®¦çÚ“Ü',Â#/óÞ¡‡î¾ÅîùO$ÄDéŸGj'Ж¡o—+æv°ªL°ímf†­¤ÈëÒäVØêRVÓqo¨À86fùm^–èªB_Az¾âö·i«mÂ|eªæ,ljٴ“àÛ&6úÏìsZ4Uf\Ãú¨ æaZ ëŽë¸¶¬æÆèÝX;É(/Ò,³ôy [A˜ÜèswPväsãH6IJ«Öh¹éné;‰V×Jõv)G¯uý°jC›ÝžÛˆ$†)Ô.ºi£šm^ w¯ÿ8ýÍ…=[­Ó »(GÿÃcýø{þ ÁmŠÐ‡/êî—œÿ³ãûø aøÞ»¿]ßÝ߃gJ»¿á£‘ ˆøŽé6kjLŽÏÍŸ…@|ûÏÉ­<$Tx JX6J ’é»OÜJq794g­×ÞFê±¶ÄÈ‘úôÿaî.öel‰VÆOUÖ”ëŸîAv«%÷Ì¿YtûoÏÚhÇÇh?ÞÆ—÷¸^ü`ã¡Ñø¡û¤ la Ð_jrkà ÕûX¯ÝÛˆ­‘¸»\ŽëïÖ{ß—BÄó×iÞÆ:Ã*cp ùÑÀÒŒVz3´R¿ .˜ùw .ö¾”üc:Kóé,®V×|xtÍçH†Ù•¯0ÅÊ©û<ɶ^æl.â¶ù«^¤yjn¨¯ùÌy„ļޫóÊÖß§ gi¿Õbhúñ%d"ošõ¬ýtÃI,»7Unq˜G_’ÈÈqGï´ì,.—Ý«Øa4síä\­\ĹãôËESB êظÏëÒ¿õqÓ¸H1ŸEÚoo_:@j ëF†À™eËdÓÜhÊG˜r;ʦ3X÷»4nðeãvßwNÛA®ÚZÇÉj«)¹·Oòö¾¼–' òã ÄþL¹Ì^Ü€ ‘øù“S endstream endobj 76 0 obj << /Length 2294 /Filter /FlateDecode >> stream xÚÍZYsÛF~ׯÀ*ë*ªÊc·*J•ËŽ³–×+É•‡8µ5‡$V†R˜Ú¿ÝsEQÇJ±_`Žžîž>¾nÊ',¢žç¯?Ô´ÿmgïö|¦¼w{Ç{¯ÞÆÔËH³Ø»˜x‘OÒ”yIÈ£w1ö~¼¯[uÀüwy[Èú`È’tÐʃß.~†ílm{ÂHÅ@[o<æm~@ýÁ¬•²l>þ€+^á¾=ÿa “,Ôßk½úæðƒWŸ\ìý¾GgߣN~Æ2BýÐË«=YDh–xa4ažÞdï_æê!›«I¼„d‘ÏP·Y@Bx‹3Jü(3þaì³åóš—e[TÂ|ýZÔ­˜ õÅ| èo‡ÃÀ‡ù¥·n"•yigEcÞþ#G/Í[Q›g#rY‚·*R œE7Ù 1XÀà´kZ36²‡pû] î¦b¿Gzƒ™ó²S•åKZñ¤º4os%çB•‹;ÙÁg%*©ÀZêÇ;”rj—­K]‰)-Z±Éœàù̼åóî)uB}«äïz&,ï­"T!Æv¼–™+^vŽÃjÑc&¾¸`»c\Xе´<4-WmŸC°ÔÕ]’Þã2Þˆ ïJKV‰Fv*wÌç¼î+¨mÿ>°Ü¼‘DY˜Ï„œÙ­öÇbRÔE=u–-œ®TÁG¥¸«_ü vÉ’S´:±\s«>^-ï¦hÚÛTµãÜï_ì¼;§²’·Å•gÎÛ™cC‰{œñz\:ž®EYö5dl?¥œ’IQZ²GÖšÃCñ“t;Ã?ØÊï&—zù¾(‡µ’׸ґX‘ecíjÿþîŽß× =/‹?Å&õU¡d]‰Ú%Ôâò^Þ¨Öš¾hóW€+´«Ý‘Cu¦<윒m”%„<^À“?æÒ%^ÓÍ«´—õæäøó»Ó“žÈ¢ª—T,5%¿Ú©±vœ¥½ò“óEC¦¢…c´Øùý{XÚ}ìoݾÖÙøçé'“WXH Ñy%¾%¯ØñŸOÍ–QzŸ?¼~s~´²à•ÉjNÚ™|¼æ . i˜’@ùî(q«pŸN>x}nÙ5¤î‘9·HxÇŽ]ŽJÞìJ8–%¼¿Ó|¸qß”t½ |sžu‚žÞgùµp„šÚW P P°«Švæ0÷XºÑ‰’¶ð9ÿðùìÔ y=+\ÍŽÙ,qm½D S‡õ® Þ‡%öä¹.ßwpÖ䪘ÛåC±‚Á+°}x8–?ËѲ,En3¿¿´ŒN.>ØÔpÙüÏW,»~Æ«·,ZëF€P¸G€OÝÌIJõàg©·ù´ô·M¹¦½Í§“aËÔfsR%|à1?#à®í.€åcÓ$œ¬Z áñfÓŒ#8n›&Ô(/ky%ÿ§H,!>¥›"§}‰Çâ%Q˜ÞP9ÖϤq81ÚÓøÑFáÛíÍhخ٨„ÎÒA~ >Î2êK– °¸Ó]++(s€í ¢8Eó’çèþ80:€ívR¾¸Ñ5 pŽÙI @M x²ÓXl»é¯ê0aÀH1꯻½0ˆï‡ýÛSâ©Ü%  X²)P>“4p\°§'ë¸ì0Èa"a?Ip4+5í ÌfYd %úú†BcÀ`4KcÓ+¢–>“ŸÇŒø¶i–FãUÇ{öd±5HÜ !L”=“Ppd–neº÷«Îýv›ÁιO]ËeÝ´ªË¡A£!CðåÁ[üຠa Gšg3×!OäÅdaF‡è g¾æÆöx‰j옒v§*â$H£¾é"FdJJ,\k>°°p`º †Y3Šíý¹0seQ õ¡¥Ñë® ÜÄéëÂ9ïKÛ4\Ýn=©x3ÓŃ®éL@Ç ÅÁ¡”[´˜»hŸ²­2ýÏÇH š` 6“YªÛ§­ÑuÊnêVv/‹¼hu*I™Œ¡n!åÈ«b,Ì€’£®ikÑ4ë ½¯§¢éïnM+*³ÀöO·ÿnðQ¶Z;ˆc±Ó0ú Ä’( 4ˆtLÁŠä¯@iÚlGÂ3zz'$ Ù¦DßHÚ3ÉnhüAœAfXWø-I¶c4kµU#Ê+Ñ{KóÔ½x\°æà0*ªi»—fzd¢˜¬ ñqÅShVPf<ŹŒ¨ôôk…q®a®åÔð$ ÖŠžaùÎý‘0ÓG[7m¨iw„iëŽ0Ž?â³’)‹Ko´0¸Všq%~ï eɹÀb–ä;dUüÉÍÏÇët °¦ä«ê­ 8È)-·¿é°4³è^rÊõüʱ#{À…E@˜<7¼ÃÓb°R  5Œí…»~‡-Ãr¤`mYçfðÚhÐ&=§Y{qº²èiºâ®È€¥õâGåÌÆÔ-v vœ{—vfÇ'Q¾ìL ) HÂ6¸6–9Êð7ÊzlLzŒ9$X&xs>+H=żæë òcII»æÌ> stream xÚí\[oã¸~ϯ²/r³âM—E÷!L§-P ÍzŸ¦Ó…,Ó‰v,Ë#É›I‹þ÷=‡¤lIÉ,r±'˜Eòð‡ß¹è(žsåx·“w³“?ýŧND"ŸùÎléH„!sÁ£Ü™-œîßÖU1až›/¶I•æëÉ”¡[å“O³¿CwÖè0JÆÖßÅU2¡ž{]åùª¼˜pÏ‹8Ã~'ž 8‰¤Çp€)¥„FÌ™ fœóbžVE\Ü^&y–ÅëÅdê{ÌN×ù´ŒU[•\Ûy1٘הF„ %â5_Kä„»å6¹6Wɶ¬ò,ýO\³ÉÝ´4åZ%jBÝn©OXè·“P¸gð8”îÍ„®ªÇ»ºÒm±ieê2¸?§ë+s›b•co7‰W–~¾Á‘oÍ]nçW]Û+•mVq¥,ÍÌô^ÀÐéòÇÆaQq #i×.Õn\š²P_¶i¡z ßÕ‹‰õ@dm®’|]Vnµ™-ô5;F˜ô¢Ðé–Å•ó­G— W$(‘蔺×ý ×ûÙÉ— ¼xu˜dDrÇ÷%¡4t’ìD×GÄ({^8…r–'ÿ|âÍ)hJ!R ‚H@Ò sš'vžÏQ@‰ˆ;, }zúa HFŒ·Xºˆ‹ƒqúÄãìGðÒC@‘…´Åœ£CñIâ{Ãî e{‡Vê`qOÃa—#&ˆ`a?qØ~FiWæîh€T3ŽF­Aòù/*±v“V×;¬2w‘þËãBÕHfQR£á” Nå(nKm<`z¬E7ÊAÓy€5’ û3€¤!I!‘$ˆB½&°l‡5*""ý°ËRŸ¢†$C´YÚ‰Á7e- >µ°­~µÍÔº"“©ô=÷¯9ÖÝàúU 4yÈ콑”<Ô¡F–â‰Öøµ`é‹…ZÆÛU][ §6°&NU–é|e›k1Q‰Œ`×$…  ˜Á»…‡9af/æ`:^LÁêóBÞå¨O IrÞb àƒqÄAù±`PŽ€¤ü&Gå쀘—tH©C’~k‹LÒ6`à¹å`õƒÓP.ãü"PIàèÚtmÊ,/+s•Ä¥*I‹I°( f+=‚ò#¯ùE†ît©='›$ŒÃAÅ… êx@,±ž£lSzEç#øQT¸?•Êø€š—°Ò’ë‚ú”åàã'ÏYÀ#ðm‡Í¼Ñ 3G0Àúm…•ó#ÊEÓ«mm›Å2Ð{u*¥K骯1@³2•Kû…y›:ôfÁ“Õ>W¾ºÀFÀžÑ ~Éç¦Ã\·Q°÷Ô½2UÅvmå–\lïüðÞ\$+p>ŠųS1Ðt[ÚY•Ö ¥nöÂÆ‹ð‡d+ëá‹Ì~¤(aðÖ^nÒCÁ Ì:j2Ô?Ñ?Ï2h…oÀ-¸£ªÁØ‚E‰Xþú$xŠ-jžo¦<ð»áävùéS­É\ñG›"ÿú»j€ñZ ,·kãÌ×,J›†è•à­2X±JU¶¥ÌéÓŒvÈ7v€ª~Þ¿.¥)4P•óYcFa»ëÈ^”Ûy–V¥q‡PEøÒzCVEPÏ3ª ;sÁ=]cæ¦P}˜"»XÔì²½ß1ÂMôªÑSXÿM+ÃtfóÒÚ(–ú~eÔqZ…ÝÓnu}~§UÔòÖ©~tëû”gœÁÎy®5ƒ îdóq³zÇ}¶<.‚GðKAäuÛnåïÃlƒéƒ¶OÚVme5~wm›¿Ú$LzœÃÈÂj¥VpOŸD9iþê¶ÝJcxE Îá€TDu€ã»ïL8ú"5e¼A4y×G¸ÏµèìH'¼IÏ7{\{Üô!ÀçúÏX‚ÈÛŸ§Ob…¨þÝnåžÊÿ¤¾i Á5‚÷ß~IíÞ¨4dl½ÍÊ#¯‡¢˜¥G³H¿­t=œ4Òåñ2¢-?sÂq憑N¥¡Á#ET[Âü%22"ú‡~—'"ÔßžÜÏãYÏ[¢¥xìÂK½Òù¡ç½×DØ 0Ù+ Fp[অ‹×å—¢SPy|<Bºhßì|:Ð.»ÿ~%@kÖõƒàÜ`bÂF1y–˜ ‚Çf¢ã‰Ã¬½Ñ÷϶/ É]û"Sñ ~ÑaõÖoå°!xHX¶Ãuÿë—fÎØe4^н*³å¶„É“eºR¯?ppŸ³½‰“Ïñ•:^›ßŒä³à.‘}åžÈi3ˆwÚ÷žõËRGÛœ‚c^ÍTY•¯1»Wð¢_„>Hf) ,>ý¬ë B㮾LŠtS½!þ§å•šÖI*(O{w)1ž¶e«5äµÐfŸÂ÷š‚}™èOeàØ¢É7yñ_øõL¦os­NR9NPx°–´¯Fs7pî)àÚ雨‘çX¯Ú’šÐK½{l¿z¼Äd#¼ØXkÊÜa~Ò˽,T‰Y°¯NmÌac7›Õí›x?¤6oáíõÔ‘jŒÇ†(е™êz*÷Ë“¤z9¼:\]Ûtº:Åü¨ÓéBXÎ}šç˜M×ͦCÁˆ$ý¿L§³éÆlº1›n̦³éŽ2›ŽœNGÇ|º1Ÿ®‘Oçùtc>ݘO7æÓùtc>ݘO7æÓ=>ŸNŽùtc>]3­ȩóéŽ(Ÿ.øF>]0æÓ½|:9æÓùtc>ݘO7æÓu>]YÅEµÏ¨ËzE×o¼w´Fê|c&3ØfMë?— Ÿ ¶ÑT mA5ÿûÝ£Æ?;ù Dú.„ endstream endobj 84 0 obj << /Length 2012 /Filter /FlateDecode >> stream xÚÝZ[sÛ¶~÷¯àL_¤Æ·Nû ÛJêÙqeù¡Ót: EK¬)’‡„bçßwA”Ä(±-Y©Ï™ŒE·ý¾ÝÅ.– FÔ!–…×/ål󹹌ßa º¬÷G§“£“w.±¸Ôµ&w–ƒ‘ïSËãQ¬ÉÔú£w‘ɲOq/Ÿ.#™äYߦžß“yÿÏɯ0®M÷(òÖ®'ž õ îÍež§ÕuŸáž(ÅBÍ;Â/Œ^?¯]êÑ_6¿xôprôß#˜±E ø‘hq¤Ú9u <‹bŽXelÝýöbT/cì`j­ÿÖc»ccÄÀòP ZÀ Cî\ßA˜7FüᇾíbÚ;Oª"ŸõC±³9ÔÍúo;výF2o ¶lBàÉÑ v—ÿ\åt4ò)’M¥Lr}­æùƒ¾“óXß”ñ,©d\ÆSýŠè>Φ;ö=9 à—PGí6>©´°ØÃs ‚>bׂòoXiÓHãÆíîC¯cã ÿ÷Öè˜ãlG÷Ol–·b›ø»ì•7²M–ÙJùi§úéï<ü}WËTî Î˪¿þW+»æó“}P¿j¤„+‹"ýü=ÜçÀ|ÀÅÛ¥Aܫƭitµ ‚cçÐ<ŽL¢ö-‚ñw°9n¢A2(Š2Ü9H=ÛÓ:ù",*™o?;ð(ßT[íaXGÇuÇ÷àê¹Øóô Û»t€eñ ,s¸Š°6”h… ò=®uíjæ¯"OÁÇou¯ Ïm]FµËo^.·tuK0¨^㎋?0%T` ñw¼U¶ F]0yaÈcþZÁÄ]Œ\ÞømWí͈€Ù°^‡cÈñE‰À²”t9©êýµH9ªKÞ%å¨@p(N ’l“ÓEv—wN_;¹û^›eë;ÇA.àÅüñ'¶¦Ð÷+ÌaÀhß+`+µn”¢Z»˜g·Y_âfñî›0hà9/>^ޝ—Z¶ÏÍ-Æ%¾xÕÁ™r¸@{„ÌGBÆ›±p·cÌ‹êÀ¡ö™òËý (^yõ~®ñJ)È[WH("ž Ùž£  Z÷)Á[“ÐÉ;PÐÆ\™÷„ã¾Íë}ŠË:@Áïq{]·+]PL T6&úL£_=®{î}³æ£_'C‹pÄ •€±<ÝóWÝΑçöµv—ÛEd§I¶|´gÙ²£õWЗMù r¶Êlò¾Mý^$ÒøÇ-º€Ì⯠>«mh­÷+ŠhÚÏ&¿_ŽëLaÁƢݟ1íöÝNÞپƳ½^¤5Í6빯¼ðÕíåp|qöóÙÑœÁñÈ9˜èÉÅåJU¬.ÔŸ1ëýé¤Zæ@ƒúa4L†_×ÿ–h›©MÎéfUÿR —®†“Áøw£0‡B÷Þ¶o]onï‡7ÿK˜¯×ÃñwÞÀà!꓉ÓxˆûäOÄà«Áåv…Å=âî¾;ž;8?ƒ¡wÜß6Ö¢'ÃÑðúØ[…7îv(á—ÃÁÍíxx9¼šq=„±óœÉ{ú Áõ'ÆoG”' \œò‹wgƒÉŇ+­ÁWNÚÔ«¼Î÷!c/³,Éfú\³Ì¦q¹-}ƒ ü ÕÞm¸ÌäR¿Å¡4úa4¹9_j+jø²=ø^ Y&šj¡¸—úТ¾"W?ömÎÞ4î“Þhß ¿îq«F³?‘ÓÑàfë) Š9܆“y¾ˆOÂ$Âe’NO°²"ÜVM'ã“4 Õß8LE…ªü|U bü×}ŸõÊhgÿÙFD1B^J=…ˆîCÞ8ÈÉ+lÓSQÅÓX1‹¯†àªÐw¬ë“©ð «c=vVžÇŸ’(^=‹bžDæqËyãý¦©’¢™Í{K™¤ÕÞä\}wýB)¼wš4•ȵrѧ^¯þêºJ57(ã|ˆXo—Ü(SõÁ².A¡o„Ÿ‰E\ØD±nQŨȚáY.›áRŠhOUqÚÕÌ¥È@aú„ DÜÆîzŒ×‹n¤Rßç´B¥×i³û%mìê…(ri– Eï‹Z^^‡ZYísµP=%‡uù²L næ+Ï–Ñ\jÄyÚLÆ:‚¾Mzê†8íp%!~0Ë`ÛÝ 5R_ˆBÆ1n¡Dù¢HR£”ºÖoJQ«Býèw5Ò¶_í;ƒ¤¶„š¦ŸAF —³El&’¯¨qš€7ƃ„‡hЬ§iR€€JÑN*3‚µâO"]¶¤À˜F‹w WV%FwNËöNTr!Š Lº£µ’£Ö_ÇÙ çÉl^Qã|¡6ä?`½¹\¤›6d5ý>Kdi¦1·iM“»8ú¥­Îp»àBÌÊDš9T÷lÑfQÛÌ|nîš,êF‚Û¸„“ûY”g!oÍVBØñú©!–zs,}µÒ¡qþæh1+ãªí¥]mšÏТЛdš”k¦5òÊT˜³—#†@¹Ððï§õæzÈŒC¢‚£N6KŒ|¹m”WåÊq3C&ahT¹mßB]k®Ô ÇGyç·!¶mýÉuj~#î!‘spšÖ’¼%ýx·ÌÌxj†×ÛO,RC¨nÄÕÎÿäÌCÔSÙ«h¼õkÔprô†¾çŠ endstream endobj 101 0 obj << /Length1 2216 /Length2 8045 /Length3 0 /Length 9259 /Filter /FlateDecode >> stream xÚve\Ô[×¶¤”tcŒÒ ÀÐÝÒ!  1ÃÐÝ!%)¡¤ˆ„€t—tƒ ÝÒ)ÝÏxÎý8÷û|x|€ëÚk¯ëZkí½ÿÐ>­þJÌj ’†Bீ,lüqÌDÝ⨅@_©AíL 66v666,ZZ ȆB$Mà ~€†•@±ÎÎòò³óðspØÙØ8ZJNŽ&–ˆ ‚`c¹þüÂæ`38Àd †`±þQ•ƒX@@οys'ûÿ]sÁJ†ÿ¨3ÚæPˆ­ÀdŪ …ƒÍ@ ¨½ li0˜1þ‘瘺ÄÁpG8bƒÝK€ÄŒ fk PûåP9‚`Î s–ÿÎ(ídk«lb‡Èù§€?MüéÂÿgb¶uûÿ‰”ƒ›Ø‚ÍÄ –¶ ÛߨQì 2 †›Yà0'Ðß´&ijC@¯¡Žà?¼²qþך†ØÌrtpóý½¤ ú»re(ÌÎÄö¿äAóÿvŽè÷_¾YµTÅÔä˜ÿaÿ(1ƒšƒ!–v.n€ fↅ˜!q<€0Â+䊨€•…#¶ìà^ ( ëϹ¹¬b¨¿7€UüñX%î/€UòñX¥þAŽøÿÚ€¨ÎìÄ…°hµEœë*áüÃØÙÝÕ D¼¬æÿ@Ĩ̡¶¶÷=³!\€î’""@ÿåþ³îàdb{—áqRmMìîeAtÈâ. "Âì|/íŸe¨Ó}YDˆåbÝòÏCº‚(ç®Ûœˆ&Z¹Ù[ ÷"øD˜·¾ã·¹ýº+‚ÑÛ?÷þnÑÝ{wR\ˆ\Ä{qׄ4ÄÉÎôÏ“jyÏâ9f…Þ™Fä„ÞÛ" µ¿[FhØ›À@ÍŸøößÓç@X°ÁÌ@{¡Üq`èÝŒ9µ·uºWÁ8Üþ9ÿzÿÉÍù‡„ÂAæ¦÷æÌ÷Òü×s{—}oN@D+î主AvàM®?1 ç{ÃãB$q»ÞùF”÷_÷ ˆ¨î®V.D[àV0нS…hÜzo"‡ÓÝuAh:ýyèÍ °ûöÁùDv¹wYI]ïA„ªÛ=ˆ˜ŸûgD&wìoÿþ.¼6Cànöÿ|¥þ|(þÂÀ;¬d‚¸á®€76ÄçøÏ]ýëçÞßÿÇ×F\ê ðxÅxÅŽ¸Ï܈CÏÇÎëõï@3'âüÀÿúñÍú_lFŒr™aMŽCÍ­ß§&ÃKÈÒ;ú$ß z rp±³/_7ñÉ=©¶h‹ mE™yqÝ©£#k¼íQé3ÅÐgŠAc¼]Àq«hD««ëÖß§‹íSÚÌÙŒ©h]•€o0÷!‰§F•wnƒž¦xÎ×glèj<Öm@«š“1P¿š‚ì·Âù\s‡„)úvä ~o*ôñßF~¤‡qS€[buöŠgèmK‹6áñ”ÜÃá‰'Ãg"ö{[×$'©g½¾úkxÙ4t|åºÏŸ%Åã±ïŠÅ£¦æ1;É!D^Ëý¾rÎ…UЀÊëMø»àøÜæèýŒÍ*úìë² ÙjsUUûCæß´){ŒYä„PQÝ´¹Zht»±6šÒ‘Ž˜˜úô ’~œhD×Çܤׯîíjî@§xT ²ç°>*hZlm 'úÝ%]õ›LäAù®Q~áN[êì‰ý1žõ>Ì’ÝOS’tÍç€II_Z•¾5X¦QØ»ác÷¹Îó‘ ™ÔhT.xgT=ÙÐ9 ß?Ä (V8îŠR;VŽöµAvlžö ÞÓƒ6©ù¡Ò…ŽPRí.Ï• ^.'ÒCžšˆÏ°ìœ‰ü¬Ô&CWÕ$[8·‡ã+õ='E“SÅä/;>ÝšÝêÉ.ø´ßÏ5,œH`ù&C*o#íéNØðáOÇZÈÜyÅèo ·yÍ\éÏñF·|³0ãÜ¥r9õ•Uá‘üúj"éqWÙ¦‘Ò"êîñoùyHj¿®¡H“[k⺎˜®:GÏ´pøbû“ {(gFU%AßÝËlÖl8ÀÖÛ_ÀE½Ð3¾dG0ÛÁ¾ªÌw—¾ææ~pÛó³Î¹ŠÜa %v:¾fÕÚ(Œÿâ€ÃM½¦$D?ÀiÕè(01 Ýþ§ìåŽR΢WCðt³H?ÚZH!ÈÞ1ÛRm?u²4§7š°BÉMî&ß?ÍÄž>‚$6}–™?H§Ê˜î÷ötî\ªFyü‡KN»ÑS0)öÖœ‰ÞojÏõ±žßÎkÖ Žær‰“:‚(<¹’¯j›œ¥’)Ã$|©?SE…¬m-Œ#äºí«T97¸³ÜÑÌ&&E"Õ,~"sû:$çöéŽr(Ä­â¶Ž­³¸†Ï·éB¤©ß¬T[ùhª}íp·Û³OªÒQO¡nLráƒ5?¾ éUc²Õ’Á®*l-¯·}IŠSðЖë¼ÿŒ2|%LÍ$ð5Ú@ß‘½òX9Gøí)ihŒBNQxö ‰±;J°—#ùª‹|õº@ŠýΞ§Øè¥rä]»ÅÖ• žnûw¥&q=Ö”W­ÁIÄ„GäèbŽÔù<]Nƒ—FûÈ5si¼°y‰ÄÞbs‹“›'@‚,­Zc^u)ÉΆár¿¯ø‚½åGš ^cëÒ¬<¼.‰}uG–Ž‹*SE»¼Ç¤Ò­$…@65öAlà[óKå\?Vožl¹¢÷Í|U1Ä¡5Z3x›5ûäÈ;­/1ßb" ebå{F™¸ò³\欒M÷I.¢æ‰èå¥ì51"–¼j\OÓÇ?ƒs"¶SS Žª/ÓžL—ŠŽãM‘J˜µ>“Æä¤†JÄmšï&ˆ¶q¸ QÞ0è9cì .•>|<õ¸£³KK9Ù¸ûY`rgéò×=÷ N³Ö!óâ¹¹Ü'¶ðÏv¸9úñm›–é°Ï³£Ô3¼¤ù}B2å¸6¾$?ƒè[w°¬MÙCö_M²SÁv(áón<=,}W3õÉéd7Ù˜aB;ኖPèMb?x·1ýéÛðUîMiª ´žB?ˆôÍ4ÚmŒÒ6ü ÆqòT<ü]Š{HfT.Zä‹C !A—Ó âz8ãô¥Þ>—Ê™üu*Õäïºq"»›­j Æzz»¢Ð^Ô>ðöží¤¬!oG5¤õ]ºèói£Ã&ª –,aIõÏZDÊ_ÇE^ˆHùþ>B®é…JmYT¥% ÁM *dƒö’ôº­›ã êilPqXèØ²Ø†u³“z£+ ñç’bêBoÐèÉËÚv©¦œÐȤ=n§õTo²‰¹ÕÏüхünæÄGuÓë`ÓpA-¾­]‘ɼ˜+¡ š%ºåƒÁ¨m}xÈùÌ¢ÄèëY®äw¨õ²2QÎ…½„¹r² „ŠígŽöïNŽzv2£ª¯,Y7X‡Fúxõ1Y©«‡«WDp7qËÀn¤L®ÓgJTm—¥ë×Z—´4_¬£`Õ%'—¡?wɰ?Rʶ¾-1¾ ÊbíîûÊ"^§ºÛïõCÓÐÛðrïGŸ1îK¥Bäê¹Ú¤á~䙜~øçöQûß`Æ6LKYÏõΆ¿/™ ïNí ÖÇFm†3L?‡óB1Ží1ñ½ÍÄ»Ž?oŠ*ð[DïÖ‘ŽÏ«x9}jšDÕÍžc.¿#µÚoýˆ €¨PU03}ÇhPGÑKøª6”O=0.‚¡l+_™Ï0ôïE~þS¾’€sdŠWh5€aìW¿ûõuóz‹a¢©e^µ¯BìèìõD×òØì™W?,Çý‰ý9føôD†ƒ>â^qÊɉ)ÒíjëPÙ83žU6ñG¡-ù|Æ @½q;:*àL-¹Ü¿räê{žïÏÐT+ {ÿó–y–ÃÐ]F}þâíxè¾Ú¡f·•ÒH ;oŒÎÿ„†¨è¼˜÷ësëÍŠIÇïŸ ´°Õ¨ìe4W±>Ùˆ,P&ll~<œæßL|PHüö¬SŸtß”N¨þ²cA—¡CX}¨ùŒ ™ÝæD æeŽMÒÃñ ©*I‰Má¾ENᢷ­ŠnØ3h?Ñõ˜c(ÔX-ÚøT¯b¤h]æ±j`;_ˆ…«úŠ/!£^6¹×J¤XÑ|Û´é¹¢tOÖº¤ˆ¿‰»¸ñæøà"¼”*~ºg¯b·™Q|àC‹Äž_ŒËøƒø·„&¡ÐÒ0Z©ãñ»w¢$#63þDâÜWŸ.Hƒ¥YÐý¿,œI Ê*ÎÐx¿èÝV²^]MÑ2Ó’q×4±ÄsUv>÷ýÜr|«Ä3›ôpØÁØ¡,øÂŽS$™(ž>¿+¹5]:á{eÇ ²Þôã“Þ4´ É,=Þx¾¨Þ6ïQãPà |¾6•8=f¡N•ó½OÃÙ>eX󩆉Æ‘0$“Ú~ŒÔ{VFg|uø0Wâ*1ÏÈŠ0ßÐÚÍñÓÜ[ó8ïh ºÚ@™‡ÑŸ¯¬K ƒ£Üü²kWh.bhørR54ýóÏøG„RO9ׄ¡/ñgÍOþbfçè´"cIŸî㉔wÓD¢Ìx\ïv4kT²ß$á)ËÑ펎kì^àÁòõwï¦ðNÈêä?)¿à¿¹Ø¬ÍTð9ÎÒíÖ9]^y²Fò|ÐÐuœ^}á,uzÑ’ÒÁ}³˜ ‹£úìç¸ÛÙKr»ú@p‚:Y<¿bíþ±Rs†.—Îéõ»VT1Êo5`uÝ Ü}:Ûê«5†OT§R³"{æ~ñR7a¦Õ.—a^Å*DšÊF¿B#ÃPã« ™¼éZ^ÆÂ͹šhÍ÷¾1¡É<7^ÚlœØÏ|(!9úâ,F)½móRÏ•é±nMÃAº¿%œW6Õú¸dªI°ØÕ›×¯ißÛÂ}ä¬ñ‡v(ËрѠ¿ÀºŸ¤ûF}ÀLP2¨0VèWèYTÛ‹Òf*—¾ÈQ]mä¼Nßm¢~^&å7†Áeh> ¾‹Ì·ê©8TÖ>©6éûu}ÎHýAVBÒk=¤¤¢¤øœð‚÷B-ñXù%ã£ìŸ¯:ðR¨ºÙ€˜d-ês•i†ërÌÞÃ}]Ž«ê¨Â5CŠÚÌ =ж«_€Œ8À“ŽõøÇ¦U–ï·b/Œ–š¸åȸÞà&žë‘-\gASãßu}ßßvVåí>(?Záp[ ÚºyCÎÿÔ5þù™ªàćn­4EgVÂçG´”y3‰B¹"æéqúöç­<5+‡VcWítJƒßðè/ûâ™Ò³ŽÍóšB€­vDqâ-¡:=âè[ŸŒ lùˆp ]Îp!o ¹xÏ ¶øUVÊs¤mº\t½Ê“ÊÊ!ÓxWXù¥›Ä§ƒ0E¡)ITµîÑ» 9â³!¢ƒfŽ}™Ýç-²ˆþ¾ Y–“ùOÛHú£Û1*íw¦X&gþ-³_,l­#Úˆi´à 3s®j-K( HESg­ÊŒWjàŒJ` ðÔö·váÆ”_cQÕTвSˆßÔÓð>ÔßÙŠ†©tŠ…@7sAÒDGÆs¸ ž?ó’{;¥Ê„Wò5V ßÉ{DQð_Q[ÊOÐõâ’’ cÈ?YP"éúz,ZÆçAßî?»I-o:ã=;d¬>M‡9ªªŠgã‹o¤ã=|OÀýæ¢ZE¤_p€¹9ˆ%§äé8ñBgO ?·@ϰP Nf*ë–"î-þ¯Š>+‹‡¢òÐãŸWlGä£zö­qHåpלÔù5¬žïT t–uæW#çc¦æ¶žÑÝ(¬ä°?Ï\Î>ÄŸîÑ^üÔ3ø8Ú¥åñÞ¤´@c›¬B¹ç¢œáÓd…£¸Pe½'ÆÁÅ—¼ï¸Á&†[ÛŠ¹¿Â› åb‡¿-üe†ÒPÈ]ÂÊ$-Ë|³ "±,Ö¬n[AñëlàÁß#y†%c•:ÆÉÒ09ê8i6KØäŠ«ëÁ)¿–l'ú¾ã䮉"€´z/\‚^}à{M³m[Z1ªÏÿ{š'5D¦ì†¤ÇÉ *+Ìë¶3 Ü~]­ÖyL="dV¥âuøž:Óåhç7§W?´°>¡õòáÂå¬V[hÕ¼¬PÚ.r {f€LKv"«*ù`ßLG.ÉLMi²ï ë•éСսðì!æfw¢äY+¨9fbâJ›Ùµ×3®™²>|‘ÿ6âàÈ1(t„¼™µq%žÿU‘¾E ²+ÇFs9Ò‡YŠúí>ÞCT¢ÉM2ÕšîýJ¯¡øÎ^ »Ê4cÒªÊ[KTQÀm[e …O`†êÑi¾˜ÅaC±ðÙŒ ’}|ø½1o2AW™…'€c¿ÌÙ(ð‰¾"sšbÙj¢=I“>«Ë»‡x™žbA)VÒLj&òïõ/ñǼW½" üÔ ÆÚT¹Ü^>+oò²–…2HÈ1ÏÌ/–r©;ipè&¼Ôî…wžÕMœF½Ô'½`3ÐLe²ukõV^²õ_é…‰obƒqËúš¿ìFµàJ h}=ÎæÉÖ•úʹ9É—m¸[.ëv”±>ö¹ø¦Þ1çÉ××§&»uIhYÁf—ê6ò³Êâ¸(öRµ"‹“Å=U{þõ2Ïk‘¾-æ¥jr»îú0 • ¦oL¾–7<íéQë2—ƒ\AÎީ̉Ögh§O¨¨hí5ŠU¥æª*V=òK¨-¨ nòeÝy6JfŠ>u±ÈÊcvKˆ u-~\y8À$Vƒóv=ô8PØ+Ý1ß¹ÿ2c«•ÁŸÍoF†Ã„^4dÂ.;¾oQ¥¥½ªÂ…!L>é«óû@õÚˆ@Á×\ÈOýñVó¨¤ÙÇN± àΣÿ gî~VôqköEàÏW[ç$݃1Ö3~QùIX©óä!})Aw=Â~$¥½èö}"ò­C:ÿ-Aðt^<׿ßH¨¸†ždâ’«îñ»“{ Ѹ<"TµÍÇuÄ'ïZUi°1~tU ¢KÚ;"ó çÍÄæTòbkXÎ_’6°+RDê|̰4Ms†hd¾Œ©y¼©tÓ“+XX)k<0Ÿ¶xŒwLàŸå^€‘ý$õ¸ôæýúø%˜)›‹‰ð$ 4ëtÝ]¿Ç»¯ÈÙúV«M£×€¡¤§í‚Æâ+C£ýfÂU¤‰ü9³cƒ&wü«36¥§–_à*M©ø®Š Ú.…¸a<Ìý;Í7Ž}ôL K½æŽ‘C{c½Š k'¾]ðïQ`Ak¨ŠÅ…Îö7¤R‹·\«Å,Åc§‹láV Ù5[ShHvÂ.+É[¬ï/úM’® 4®Rà<kûÓ†rÜ“Oh>î9¶„Å ”•×–=šfΩQHÜzœ(&t n‰Ü2ÒoMVÀÚ^ϧWmgã&€å:´Žý=²ÒÎ|sA.žœ¿X…A‡i9†µá¬©SÊ…¤Û~þ6GZý%ȽގhKê{åwÀ ñ–àC]ûrlÎ5v÷QÒV=EŸÈáW³¨<ÓÜgíÇ×v v4O¬’¾êÐ¥ÖÔ½½N]&¯lWæx3ÃÓ Šóܳn³ÇßȬëdUâo¿¬[”&žjԃ鱺zÊÔ‹øû|ºùfm²Gnî¨ÌP§éïPAr>§òëwwX×Û¯+¢¡qJ-½í1_‹ö˜„ùuË8õFk[{ç‡ÀQ£ ¥`$ l›È[–<œïL¨)‡«B>–»ÇR†âüŒIrTšÊ5G|x·³ ­ÜY eÊ’íóÌÏm{ô .œs¸é‚8½œ`sdaœÏ¿´E s¨'^Êt”(ç<¯7M9}Mñ‘ºæ±Ž+¯wõ-Y€ƒê<Í2¦øÓ§ûm.¾=o 24~ËÞ;øÚ‡}²]Mb=C{›_­ÅÏû¶©è!38JÁüÂf”Ìxô¹Ôγüæûµn©4¾¸O»ùµQW d4ªà~f 4žeUƒuÑÐÞ°sŒÙ®hÝûaQ®’uMŠ%öyÓUeG/¾2E‰Û íÀ²mùås‹Ê*ª³_\3è=“7×H3´§¦×M™2ÂýE­ØÌ®æU^4Û|ïž9XÇ#;뫲ü‚ äûoryoÕ:¾âíÆ0ß@ÂÖPˆèvÚœûè­Wü0¹ùæ‡.s˜áµÅ]‰ÚÊŸ½¼cóI,|z¸Ý@,e.¼Ø*œFæ™d(¢þƒÏäÊmmá?)iO%ïëŒT‡hWSýÌçÖi î ¤Ž¿8®® ³T,^Àü¬»4ЈÓÅJõVÁÄ·[|>5ÀÏCe™æs$Uül’d¶„ÎrŽïÞþOðÙGí#Ö²Ö„Yºb¶ŒcŸNªŠÄZÊÓõ=Âzí{½ ¢Üký;œ ºØy‘sA?@¦o0ÓØÏÈÕMJVì—rÄB¥uÓbV¼ÍJ’”Ò„Ä~qF¯°ìEàSày œVgÛ¹ Çé¢xŠä2cؓܰ֨ ,¢æÀF—ÐìŽ(¶Ð¥±{uø-TSr=@Kÿ QÔ;õ4Ëî…+xC¬»èu¶H©kHGø&+ÐÈ3ý¢[×Ô ©•Øñ 1œ´êƒÙ\^£Þ¦8‹Ûcà5úS( ƒ°·»ülãw¥Ï¨“â†ò“/!ø˜Æ”3îÆÞ¨aXl¬¾ÈʼŠÚ5FÑ8ëÏ¥s‰ÏôwߎgXöw v%Q³~`þT&Üx½ÉÀØ£ï1”éÑ8¸žG;iÝ”o«Ip¦£š4 ÐÚžŒ„€h/<'4&­jn¤)ùroì˜å>I¾#V {sðqßû¶‹KÚ¤¦ÓºšÖ6iXÅÛ'¶j£¸7‘ƒdÈ?¡€ñj×J›MÖÏ¡»ÁFÚÄ'»‰Â5âAÎÕP©U~D”z*­ýÅÆ@£p#ã5UKé£C‚B4ÈŽ6t¾"޵aŸ_luí-qËöfúä ¯ÍµÔò“e£”¥ÙÖü•.Ü¥Õ.{¤È'ÂW6f%óVï£%ÏܘxíGf¶‘±®“Óœ—œÈkîœ ©÷à_hÊ?jaŠÞéŽ =0È^® }@0õÜž; ò-É(Ÿ U}«[;RBäpåÆr3…ã´·ê›ñ[@GÈêLJ»2G£ †bÖæ2ó« Ï• Ÿ#x o%°Bx+›iÆû~ê»w«ñðD±”Æ-.( ÊÕzȱ¨§aê¡„tý"~‰¶­'ÌQ–ƒmV@-1éy´ÅSê¾yÙ­z&q®,«7ÍÍþ¾ØÕlùʈiHžÈ.*(â¡ýS£P«[Õß»f^ïRÆ(u.vx  ”Ùô2}ý'("Ñ‹í/£0HÇl”<¾ c–éàZ$²¹d¿DŒc+MÁAÜ’sÍÊs(š¼¼³î¦†eÚc÷eL§îÑ¢` ðûçNÂxtÏRÙõÏ¥ M"Äóa eñ$ò“}CEæÊ¡ÿ÷\Xl endstream endobj 103 0 obj << /Length1 1210 /Length2 4181 /Length3 0 /Length 4918 /Filter /FlateDecode >> stream xÚm”y<ÔÿöÇÉN"$¢|dMÖ1ö-kȾd_Æ,Œ˜a †‘¥ÍN–’¥ìKa¢ìK²oo‹µ,)kÖ,E¿Ñ½÷›ûýÝÇçù<Ïûœ÷yó9g„øÍ,%4ah7¸…•‘”V´àˆ%ågŒF¡%Lݼ¾þp@Z$)--Í($¤C°H4J‚…+Vþ€!€”Ee‚2HIKƒÉŽ×ýý îd²AZ‘;úa”‘`H(pƒ»#QŒRGy P4 þ—æïóŸ³8Æœ ýwöK97 ò `p9ÖßËËâ D4G¢#ÕÀ¿Uÿ?ˆ7Ò+èEüÓÓ ñBB5Qî^p@âHñ‘駇ÄÁafH,ÔÀbÈ]ùm¶FÁà/$ n†öCu†! þÇ™•z÷óä•þudGº{`Q4ÆâõpìŸÚÉ}ú­\ÊNÇÂ\ÛøòÿüL¿]uQP4 ‰r@ròƒ1’»O&9/ É’pG®AJ…Æ’CìMÆ05_^Ò<2ý‹)í?¤HéüMŠÒ€”ÙR HYýMJä[ ˆ|‹ÛR¤ “ yR¤`ÇP‚CrÄ1”¤Ü!9©Ç1$W‚<†ò€”ç1$kºq É¢¼Ž!Y•÷”!«Bý²ä‹QþÞnGóéŽ:æE‹>†d±>#˜œÞŽA¢UwdóõGcÉæ£aøI.s ÉùüŽ!9ê¸3¹ÿcH.$à’ üƒ r!¸cHVôÿ{ÜÌ HÖ*ȇ¼ùæï7ËüacƒÄ€4y;>ÜïçØ»Óÿb--4ÀK(È Yyò:ÈJ Å›ÿí õÇ`à(ìï?ò.ü‡Hò>Âá88”qôªrÇóQf:¶âlvg¿ŽÃPˆª¬ìYhö eKÉà|¢ý~‘jââA—­­¾ë2¾&lL´ß^ð¾ëtb)¸TݪJÒØØã¸&œÜo¼XBZ¼_Mœ×Æ.\î»K©•™H0 hí¬õFï eÜtþØ”³`gÅk×LS;¥Mr²ü©6†Z#b•pEÃêÜý+†§7¯õ˰¾Š"‚‘çF¶%Û~{>!âUY¾Ä¤ž“óðû›.ß]Þk*qk}į×tF&ïLß$ܲ }ºèì'[SÎÓUÀ¯á,,ð(è÷¶_Š:æödK›©CÙ6J·eøol=š¸qcžvÒìåÝÉ:˜¹¹Ï}çËB¥ß.åq±QPS»Ùȵ Úõ0.´dSn‰‰õÛ;¥ýõÝ*±é¾úàavÓäo«Ö+è |55¨@j“ùå`Ë4±åö;ön½Ú³U«.ÏØVÚ3'¿ûl³x®aÜAÖ:œ_ÂÖÁ”ÆŽzæ"Ä{W_©G05?éÙ³=ÉOZ¸š™H-‡M×¢hÓÒXoEzÈh–½ÃQ5%¿­¢!4_zûQÈá4Ë…õv']’ápå§Î(N›ÇëüÆNâ³EPƒ Z’+»ïklÎÒ}÷¥9Ÿü4]ãIó/Èj|dÂ2Ê Öœ¿ð#ÑÖx9´w«ˆý¼ï•¦ áVì B©˜ƒ'²l6Nh2Tx z€?Ô³žÜ•S:¿¨…N-5k%íš:•P9~(F©Ð}[û* Y'Ó|ÌM¬OŽW¾J{Ådâ†f'9E„_nr³PPmEH> ´²¦C\å6òJQ)2Y’ƒ*¹Â NÔ-¢ ¥ËÙr¶c9 ùf[ö¨L«ðQs•ÈeŽkŽèO{71¬Æ„=Nƒ·æ Ê/·w–&—zóK ×Þ¨?<íî£[²E!̹ýfóBç—È©½ê‘ ú g¬‹ôŠS)F–ÂóR‚u‹ÀŽ&æØxeG 씟ùnñz¥,ƒSc•Î4¾PénsyZ³”áÊHnó¾Ï'ÚdÙnq©¾Á›ä&Ô”§¡“U9®.Ö/Þô^Rb1 ÒQÑ,‹èH—Üûl'ÿÎ[<“¢­˜éJÀÔd\´Å¶T4Ï6u—æ$_›7><¢5Óñ†+[ #W$_°jë)øšN¾0Ù/ ~óÊ›QÜÞb×UíM`§öóŽ~ ½Oiß_ñŽéÚê?<¯¤Ý´ôs^Ã<01ß”˜“*cøQáBYbð Á¿Lä€ÃÊ—zsz¢ëŒÊ…Wi´F’ágÆòø:q>|-Qâ…ŒµhDó»)ÇN÷­ÎîÕ¯^,–J5+3É¿{¬2³fj‚ Ü»f±QÙºB 2DùèldqÚ‹ˆ7ƒ9ëÈþr³­öè<[n¶»R;—ʹÕ1éoÅn©¸ç‰WL®”Ÿ$F<›n»>¾®c{ú¤™g®kƒ÷ê·ÚúZ>›þ¿ŠÒÚr #µG/½¤W~ý†©wžFLkëÃ*ÃÆØGàô(7ÿ¢1#4Ñ9-·«¢ŸÖTBϧN*¿a/±ûsèÓÚ˜GÏ ûí†Ò<ÿ ³FÍ‘5ž$/VDǸ?Ï—ež³¹iNÛ¡ß÷±²qbÌÔøÖ4®÷ÉW—¨4~'œ X«|å= £5ÞÖe3•Œ3y}á,KX¦QH¯ÕtÎek¤WÞˆ}Ö¹Ûý„súx“€-þ*Ýâ"N±êĹuÚ“/À(õöÌ;W S›šdÏíñÙH`"u¹‰o…Kp“\Œ;ÏŒ»¯^íÐÀ‹K-n6z6¶|ÏÙaÅÈÀå{UE5_Ÿ¤çç¯ÅìØMxl×yKþ«Î3Üûs)gø‡v`a–øË¥Wp¼qÀÃ5“Â×6„Ù±¾[´ý¦Lr[E µš¤§”î'eyy¬Hƒ)n›6KÎØšï¢Ý}*o;DÔê¹ÞûX’ÿ50|ý,îe/MºÂ›µ8ðgÎÁqT\;i*éÞ}ýátšQtªÔ*öãZQ|¡ïó†ÀÁe+ßž¯ÙŒÌ¼rÞÓ3H‘Lm 8½¸ÛÈ‹Ú#äºé2ܸ»<‰L¶ÇY˜â÷ ŠÀÏšvZíëTè¹òëfçÆñCkÎ+£õþ]Ê$gAÓÇchËñ«-kU¡¯o «Œ("݆(”Aîñ—¬à”ýr\nå¼Ý¼m•luã ³\ª†ØÇŠÂƒmø4nGX"öa†ìÁØ"<ÈÁ!yF,]|\áýÕ·unÅx´ŸCÞ¨uIä1µxªvX﮺«Ð+ÐTâ.îÑk§ƒ¾}Ñ%=Æç¥YìH¥j Z€¾lÍšõ²º=TŠÝç‹9ͪh¦EMð0§/ÜvÌaýã¾óêÒI* öœŸyÑ¡X• [Á–ÆàØÚÊ—£-ù=ƒ¥c0 Žî¥ayÖ"yåW¥Õuø½{³ò­7Ú5›i“L\êñKS[ÐÃ|öï~ûx ½;×u¡åá/B9/žOØš©»Óc»0ºZi,ê>ú„É;üÄ™—uk$sÔ°ÓÅäbïˆvˆ ¦O•0EÝÁÞfaÑω׮±¢#€ôwó³o­C¢n=.c“g! .€ué…$ߥ–¾òtÖMy;6VZ3œÊ9wUís™¬û_]Þùù8)¬V–ØIg‡šå³M·)w¨RŠÇÎ /ÊFœ­tl´Ü- ð?‘ÏsX ½6ePHˣĠò:-£Ó ËæÝáá,í+Öð¿òЖf—æÎÌçòOòÊ£?l#2óûØ:ØmÊ®n+·o7ÐÑkùÍD8¹sžn]é£8e;ü4ë2“dŽKõw„Üs"^@ñ I\¾K×ïuÅ3øŒýfp«ë •3'0Æ›Þ2È/†‚ Ëú²méjŸB:@¤µN:kUƒ¦oµÄÁgCg”HLH«pm7̪c¬™ ,WÚ¤>³¥€-ãì•,ë^ç}¾MÓ‰s§è½˜±鸫|\GLí^ì ÚðqeM¹œb 4@|€Üå®ÍåuEŠÔé\4af„÷¶†p|Ò=ð¼ï¹ðÝðG!Þmãä”}\ì¤ÁÁ@Íç5{_à“õÏ‚ iW¦V¸íä>¼a¨ ½ÍP9xÙÌý^Ø`¥8iÉ'7Ý«)M<¿ð:CÀ6|t£Îï[¹.3†ª&мÜü¶H€ÆéïYƒø õ<ÄV5>øso×NËøfi×TݲS NY}Ñ•¯A1yýõ£Õ-/cÝ —2ð‚Ç«¨¢kõ¦Óœ¶YÔl[8¼¹lâ[)ál³ÛÄtë-HšQª.>çC¯ì9ä;ÖÛ"¥Íõµs›hâêfÓtÇþtçé]—HOOÔÒ_øÆ©É+Ÿ]ãšz”–t9¢RO b‰íd¼æO%¸¸Êð ÇÛò-»aUÊ´ÃÓc_ÔolöÓ/¿.Ž6(MufæWÅéÐ\þ¹r»_ÞÑ\uaØË#rÞ~;é bÞØnh™S>ŽTÌšIšX%=¦ÍÙRS*¶n/pj€-½êP‹Ä)uî|z.³ÏóƒIó®[¨0–Y<¿Xä7$æ}vKu$c“Ÿh×Rö«Ü¼úíçO{ßK'•΢ /Êà¨Êû/¯rœ]š_¦_ Â0i0Co¸Ÿâšñx>;Hp°s ZÜ/+LVSËr§õ-TQ Á«z‡žçŠ3­Ð9¯&•ø¬(òäþµ7jn3+“úèq\äÜ7LÄúŬšÐöô›”,†ßû<ÌÒ»ä¿|5ëf Šd¬·–€­žËØe)=pXÔö”á1Xã+￞*¬7~þ!y˜r»¼¬qüY+-ñ@ðE¤îÏS+ïáK9#Õ7:×dÔo[×2ëFäÏ®¤îÉdŠš°»XÀ'NèÏ‹’ªæµóZ+Ï»\ÃÁªì¶9~=ÖŽÔæ6ºôUé/,—<ÚÊäÊ|D„‡|Q ¨s~Šßnþö€Z»wOë&1+%Ö_—`øÑãzÆ ê"b`ÃS*³haȼkW˜'Êîø^ôÞç!OíÛ"ÅÙoÞ µ³—$9ƒ$¤â)î4DXM>cƒ%ƒ×÷¤ïªˆ³8†)ÏdÜU¾KGÕKíËV-.Kcï´µX²tj^‚.÷S˜v÷¿WLV{‹ÍMNôÇ÷¬³µqv)v „Q¶ñþÌÎíõx‘`>$¹&ǿٽúå›oó®[¨ +À¾•ï¾sè~;7Õ±ù—D´ÄK7dåÎüB±…öÄ|¡yO†çÿ/ó§Î endstream endobj 105 0 obj << /Length1 2719 /Length2 22556 /Length3 0 /Length 24125 /Filter /FlateDecode >> stream xÚ´·uX”ßö>L·tçÐÝÝÝÝÝ ÍPCwwww#" Ò¤„4Фïø9ßsôœßßïÅýöŠ{Ý{íg?CK©¡Í*iãj”sY9Ù8„*ªÚ– ONV- —³¥€‹ƒƒ…–VÚh vpÉX‚B~°=@Ý …xpp¢Ðä  dÑ`åP‚-uüÜ€œË€†«'˜ÕÊÒ² Ù9€€ŒiW7?;{ðïܬ¬¿3ýŽ–b(YZ;¹úx:9,A6%6U6€š«Äè`p¬€ö–ζW[€Р«-«¥ ×R×ÕÐfdƒ$Öörssõø?.ÒÚ:ºò,I5YP ¯«­óû¯áoÇPÓ¬ÿ®qü®*«#©c¨!ËÉþ»'Àèáéð»ìÿp£ƒ0ü¡ µõpuù§€Á vbg÷ñña³óò³¹zر¹9ÿÃOÇÞÁàãêá€|zÿã²È ¶þ+ÁïM¨8XAžÀßAr®ÿZtH ‚ØÁÿ!ü;§ó¿Üž@à•±·ôü'VECCàbéA– kˆ#Øìå °øÇùÚÐÿ‹  íåáñ»†ê¿—<þSæßÔ¥\!™8YúüïŽY‚¼<ýÿÒæ¿Û¶vy:x‚=ÿ•°upþfïù{Ï@ÿØT%ÕådµuXU ƒbUu…¨bû‚ÿñþORFE ÀÁàäp@†Td#íêâaí‰ò[>ˆN`W?öÿg®@®> €ÿ×në²±ý­¼—».ÈÁÝ ¨(óÞÊ› àÝ@_k{ößåþ™–ßfÎßfˆ An®n[KgO`ƒ-òàié €=¼€A/ü7BáäØ8Xƒ!ƒ9,(ÿdWÙºÿe†0ù÷ÒÿÃ?•rJm\AÎ~ - »š+2 ÿÿœ³ÿ©%çåì¬fédø_Iÿ×ÏÒÅÁÙï¿<ÿÇCø›+ƒš«‡‹¥óÿ¬9xÊ9øm4ÀÖöÿö_vE°%dö%AvÎ@ȦücÒý}œœ!s yö8ü~tX9yøþg 2’ÖN  §'€ç_a@ˆ ÿC¢ýoºvy)yy}æÿgfþq“Y»Ú8€ì\¼|KK?È pñò8!3môýgRìl W0$àæغz üÞM>^»äoÓ¿€]êâ°KÿAv™?HÀ.ûÄÏ`—ûƒ8!œÿ .»ÂÄ `WüƒxìJ„‹òá¢òA¸¨þA.j„‹ú„‹Æá¢ùA¸hýA.Ú„‹Îá¢ûAªëÿAz†ÿA‚5Ë?ÂÌê?ˆ“âj™PÈáüÄdýÄ ñ·vu†LÉ¿-<<¿-..rrr@Z²ù BzþÉÑéŸÉýËÒ¦íÈ©hëð'€û7ôþ+ÃowW/¿@\ìþ‚JöB¤±÷s³‚þò€Øþ‚NŽAˆDNAHÏÎA=—?ÒìŸÌ¼PäÀüµéÞõH°ë-Cšqû³ Iæf ¹Oœ¶âáü?«Çé9¥ìn@׿´æ„(áþ×~B\ܽ\ÁÀÿŽää„(ô—~œ9<ÿôáè tqøï}æýíôþKE^HOß?| ½{:[zÚÿ•RÿOY^H`{à_[ éìãúW$‡×_"½÷_ÂÌç¯ADûþ!éýþ‚eýÿƒdòzü«Ô?¹4~ßÜÿ\Jeÿ÷JóÖ{¸:õl ¯s¹¨Z‚=|9 7 'Äùù÷¦ÿU€öÏeøW´””«o+¤VnÈHqòpsþÞž ÿеþ×ÛÅ?·ä™ûoüûj¾@k”õ®Ö‘Ž9íÑuÁ²óõð´‚lgøbJipëùó½$„2¥ûT@ñʰÎкJW!Óà¬0Pµm$žóóvWæë×6š–ÁªÁ$è²’Ó%zlºáªk¡õýTŒÇJ%å†5<‹ÝiÝäÝéiÁÞû$®¹¬«l*“úîÍ2xŸªeÎ\glß5Lâ>’µù>hðË=nJ¢åä:Ó’Ey4þ´‚ÛàÎgèÄ*ñǵJ^‚ssxüä"¡gÚ3Æô71Wѧ&½ ::éNP¯ŽœÆ7}¨N Gßð’¹ÿL¤*•%È‚Ö4›:¯¸ûOý¢¶˜ÅÕ;Z¾>¢g«½‰z_`Ð Û†™ðôkµmºd‡ã>œï¦–¥=Ë7ù¿²Ô™oñöÞ‡}*¤QF9QÎ×ùP^ý¨Z´×ù.&S¦õ0âW}Öü¥Š»Ó—ÙW;üÓw(¯±.ˆ^ Ûq3*ä¹ô>w¶0.t뉊“KZÚ/”¡{9mU³ž›ðm’ae2$tz›A2âô ñTxwn„ý^Ì)}@B9Òo,/ܸ#ìZ"ç›ë¿g!ßri«¸Eö×¾c{¸õNRòx%áû¾õmARITŸÌ[. áÿ!ÁнÒç7KÇwM“s\Ù¥:iÅ`ͧÙZ%65S{:€XXXûiö£Ô%¬ïœ„ ýð‘sG ªöý‡”iÂ$kó/nMoqµŸJ?EH–œ•SV¹Ätùö801¤‡x¦w:÷¦.w×E¸òJi®>¯’×àO ˜Çp¥rÏÙ@q:'+Sn–lò. º21­²¦³/š[†Aúí¤Ù•ô]ÕGf.\ x&h– ‘ýk»Ó‰æÃçðÐDüyKÁyäsîšþ¥Ÿò;ôñ¶´ñ§—dæ‚Ü•OöÝ1*¤«²rÙQº¶IY 7­eÁð¼E#ªœ³É5˦¬²ïßݽ}!ˆQª™±BüÑ_Õ0*lO: ¿xgèÄóýÅÖZ˜[h¿Ô©zêRÑ~EwGUÔm0 þ°¯ˆ¨/Ââo¯nÌ–0½iyÊ¿R¦“ç,³pFljÙÒ¹™èC$UË÷\¬f¤¶ÿ˜Èpn1;‡¶ ®sq{ßYg€%[²¯ÑÓ«šc åøåâ[÷¢Ã1’®1yþmæ²r£¡ýü4Åk@º³ŒîsÈôÍ´üPt‰FBèe 3šM"…b³Œ™jšÇ~¬nãÊbOn3•É4!–Ì^gƒ_,Šüv1Ö^E8çG(Ïî)òËÔ,þæÊ9™ºY|Ú=íÇw ½YnŒßCá#¹³˜¢h-áŒ)è ¾ìÄä},¹ ;m•ú—˜/&°Á;*ƒë& š…EŽâÁßï¦×½ß'tø_ ¹·ú6ÃGÿ¬M•ȹö» hL‡f8Ïõ¶ ²½ÜÅÞè0‘¯$¢”ÙC÷aÒ¤ù¨šnÛße#ÏÙ¯ñ…ÇÏ‹ãÿ’–ÇröÀЀqÞ°ÿ;95û>[ïÒ.}©’ìùáך1'¯õáìÐhÅÆÚgÚªüßÏÕ]áúºrpSnØ<ƒ]0áèòž†Õ"{'ZF§^ |ß2'·[Ý€›®Àt”cO%³[ÚÊØN@s¼³ŸðŸ¨qÁ7$æ?yà-Q GDûøñn¸y24£^ÒGüá„jC ðË<ÿ®©ICø@­è' Ë¥óÚŠµ²WûfÁMjÓW}„¹gu2¾OIbZÚ¡IHæHì‘Ö¹ŽRïäx“VPeEÒ1ªHX´¦/Îrj³Â P´Ù?ØëJïãÀÔícÌmËèjD@Óø$#)mô޳¼iZ8 ½u¡ˆIFÙŸei¯½YI®6{Ó®;…+ü„ÿB£>(–ƒ"ÿd› Öfâ\¤½É­°T 4÷”>³Rª"{ž2øx</Ölcþž²±ërrº“ieGIÇ'f*{-‚{K÷-ò->†ñUb%ámô½uJ Á]"&·;‘|»1bOÈãu~ÿÀ”Ipx¡Ýñ8U§ŠŠßÐâ:;’”òk&o?ÔÂã!¡ ½È°kóoZŠ}Œ×êè[Cb9KŽ5ë_í=éÔ½«²Å_åìŽÄ}Cl¦Ó¯:S·ËÇR[ u…Í AŽñvÀ¥ÂÛ»ËÙ"h$ÇÐS5…¼ç%˜Oè—½ÿÊjP3üo³ê0ƒÆ«~6ÛÒ@ýïkŸ×ZÊ ðYqjS™“¬° ôàZº‰‘¶ïÖÜËVF¿V¼ßµ|;F\‰8ˆ•¦eÊmœ-ó„©®ª^8÷^™!”j[MÊ&\´yC“Ù#("ê \WE ]_Šy ìwÞO½—aƒƒC­Ÿâì+Õ’Î<·‡=ô+ÔZ*ѯútáâs1{™Þ›D7ÉüÙo^Ÿ%ç®&Cw’Ô¤¸^dNμmûAËùC8€‰`¯VÐ1¦*·#²LƒL @BŒj°$Ã…m´üúÜL±-ZæøMcª-€ˆ<ÝiÝ~Z <>‡æÀõEÜðí ëŽÎS¸Yª¶t4ôWc¼(.H¼i«oû~+g9Õõ ½ÿñM‡ Ùiúq÷9R®,œ•á‰_\ι^ƒ6iX–Çþ÷¥þ ÂÇÄ"ɦ1´³îká«ãæZKÁ­ëƒ"UM(òÛ]4‹Ræ=Ғǃ …tËòù¾t3²Áˆ)ybëÑk#ÚóTÓ|4àÎZ¯¬Û.^e 4 ÃOeeÅ9«ÇCaDJ‘ugßO4¨9Cbm"ƒU;»n ¡ÏV¡ )2H©®c}f |ä\†×›qešÓzÉŠÀ^_´Ä2܆C¨õ<åÂX‘M£ñ`‘CìÄ"ðñðò7£a+${vÌgÈOýù«é»UÁ÷'-ÁÉdþnÞø†$ä˾(—¦;ÌIʶ8¸C’4agI·áfDóz׃Er"†küYm4ÀQ@lH’FÔZ÷ÿÒàÜ›ì6rÒ4‚lrzV( Pr”¼Ý[°@0 Qmp >Ùc‚Q9˜¡¯ ø ×µùálng@jí°÷gã4Ù1KÉu£øî4À¦Ï³W+-uÉN®í½Ú¡·9³ÁÞ-nר3m7ì ?µiùé‚ÄÙÎ…ÀåÊÛwh–?¼¾9ˆÏ$¼˜ï•rS·ëÞžoQ«ÕË단}²×bÎÕ‰mG‘U˜˜”%”qÀI¨t¨Cå˾ ÒÖú,âÄÏ¿ Ù*&¹Ö=•ŽX :XZlS`{ê®ÂîhÔws~†¯1ºv~Ej.ç÷BꞯùpR‡ÓÅÛviϧÿðBÊ(ïÐEÇ|’”+¾n:cœk{VSÃ@wIÆ/(éV5@®î3€dÈù¼¢ÎšÛì|><Õ(ò®:½ð£sž¿Q7•þ1Ü#[Tå.#,kl»Ê0^ê>0΂t4jæ+WqŒ@Ñ­¾#F@sµ¥^æB-¿äò•Á{'”[û ûøIÑteQ‘(ö´aZóu$’Cý‡â³‰»”’ÔþhóÐ7É™,0èeØüÔ¶õ<ž¥7®{98~'­(ýbW½®Ø'Ât¡©8Ï1Ô™ïFP|]§ü fð 8 kK\|Ç/ÆÜd7 §Ó0¾[“Í ã”{%J¬iª5ÃÕuHZuÖkÂó«/Å{4›ˆJóŒ™"‹ ü¨É²xÕa’0ÉPßËRô°8•z+ ÅÜz<&ÅÖc”ÌŽÕ1r”'ŸßÏŠ69ó[Ìi†;“â éJp%Û”(É`àÓMªÌÈT$²ì7šQ5èÄ1½Œ°‚1ûdº[¼Ë™BÜ@ÕÞ­Ô˜E«„„¡ôí)cì­‹Hm2Æf\"Xç=4.?Ópr¶‚3ÏX-eŽ;ê1µ·ïPÞñ@uêîEzƒrd6`nVì`™M…Äàø¹ÄÈžÙ(Ùê-OèïL JK·±(;"?C8äŒ%ÚáC%±y"xÔ”û{ßa奫 ÍoF‘¤ài*cÌ&P¦˜ºJ0‚G>q#³ËZæÜ{%öÅ£Ñ_£äøj¾ø÷|LÈÞû\‡7Ä­Í–€4¤pŸˆàÓÿy¾¹øyÎ'ÔèЊV_XVrþô,²pôœÆ5d]K>e$£;Í¡~Âe=<¿aY+1ë;dûu¨|H+´zˆXí岕+v©vƒžÁýjùÔùüËî/¨rbÜõª~íé§Ý|Vr?d³*iKÙÈ4ï“7Üú® Žå°+¢ïj ô•ŸÉ‰0_=çТéÒ£æEt¿”RWì<í…u¡i®Âë·«Ì8ÆïAa9„QÈE×Êm—£J´„š"Ž#ò…ù/Ð CÅ!%:%¢íc _´Þ´ ‰¬Ä朾›é!“A3g>¦uwt•ë^â%ü©Å\´êÇ>[ßÁ=Ú"-§Fœ FsŠ·©Ï¼Æm˜’;»ë¶7'Yãl£'ß·rKéån_=9Î'à|8@·ˆŒèünx“é§‹`½zSËõ–Ìdǹ>©|^þ½CVÐ~ÑB×ce.njÞP ÎÔç mriÕ~¦~Iò<ô0„ïéaˆ7‡ËŸêˆñ0 R'ÓÁèmCýQ¡dudˆÍÙo቞^sé„V˜Ôƒ:÷*CöüíMs…/Aƒä,ž¶«áˆ®#戨R=üQH§fÍìHa™•¥ýâ‰îªóm¢Ñê:2­‹KXãáÍ+©ŠÛ-„»T$‘RâòIÞ¡r»í&Ê7CJRo.d"Íñ›YÊ\1B–N¯i´EÃÚï”Õ¡ÜW{RQ\¢äŽŠ… ª¾ýP•3ƒæ Ïü%A%GH†õJ sŒ¶˜¡-ÍÕ|áPoŠrK€ÑŽóP0ÿXGq²Ö¤÷8CpÝœR“wŒËÀmÇ~ñ Áº—ª©'"c¤[2Ê[¿ÎêîMÀñ]tÁ˜¨nÄH¼–øWCÞ ä©á}dïÎP9Ì¥±™!ú~gt‘Ðê/ Ç™{/?%ÿN%ô)“«íÇhQn<¸ïÂAOŒ¶Üµ-ðŸVž‰Eí¥'SÙÁˆ÷3ØÓxH»zæpVø+Yðšrýgô Vö'¶‚ØÂ_6>“pK_ÊîèúäOîöóÛè¡ò£¹g×Z4N½ææH…J¾?Ïù˜T52nM‡WŸ§µ{ÖeCmß„,ò£ÞºLþ†¦Ò1G]š÷¾¾Dju£Îm²ÛÙ.ó aö[Œsš–Ö‰×áµÝ9þØÏú°Ö Ö˜ b¾4Ì´:eyÚsJ¦³èi*²ž {½Ê~s¤:ñ1RóØZ#%+Ἁ•Ìœ_VQƒ«lÖ™€#ÛkÙ@[ôÇŸ=ϸòD-«é“=ÃÈó0CP lá`Ý Í(OSŸ¶ÜÜ© …˜Ì{’_é?rtllÂ×t£/÷r¶3_mß×UΟ¢À9Ö³½HºJñáhz}ˆfªNÂÓ S%”›`³iyÍ +Q ÅA²8Ê |&ÚBpÙ™R|DèXbñ Úu@z»]»gÿ¹×žEV«¡ça[ê™?€n¦D$ޤ(¤ö³Þÿ°Z™–IT~4#•þ¶$É¥â-‡Ó“nÿ—NWUL=äxÜ[éã†WúQ<[,ÒêB=ôœXöÈ—”ɦZ_[£è£¡”Ë…yA¤€»Üæ#¢Òí†wR'—‘™ee^3™)M‹ÁåV}ü–9¥¼»D­x»ÃNr¹ë0ðiroë+þH9º=Éê˜+ÙB:Ë*ÚK®(À¨L¡¨ü”¤_Dˆ,üpåÊ™–Ãðíéê_>ãÜF§­ô½¹º¦'hÅcÔ쯖‰!Áê—‘ãÌZ±•ªÁ¹ÿq(è”d½!K›ªÔËÄ÷°N±?ÊKåý0ºD”Â0¼ú£Þ’ c«ú€}ª|u'/Z!̧vâÞûÃæÙi'sªô’í¢I–j½ÔŠYRöƆÂ9R 﫞>”ºúO”£ˆckqzOÕeø" bF‹¾·Ì NCuy¡~¸ §â:‚Ç3™×“ ßÓûà«‹¤ËgÎpËr2¹g‡Cnw)-Î vÖOZEÏ厘Ÿø¶õš‚mżXð«,¹i7/ [|ۘʼñæŠâF> 4‘”G“Ÿd{,ãu9*‡„gÿ:ˆ4[{¸,¾›¤·@O‰ÂA(ùp@³!Ê|VHi•> \#7qh:è¨)Ìö)Z[Þé3F­ÂÈœz\HȈë°äU]›"Í\9õ‰®ÆYæ!W÷›ta¹ç=.òó¦õÒ¿QB'¶6"`Ó\;'?{Ç)ÂŒÍ>כͩëÍ„Iôì˜i÷)XÇæv"q ¾ýß—¹ UaÜJ¶Í ¥ nã½\Mé ¥ÁŽ£„ß:³FðÖù9’Àß ì íOƒeú=!5á$+Ú9í´›± ’[˜òGëŒ'K_Ì,RÖ*LÒlx¸¶RݾT.jÉ3Æxç·×(ƒŸ­X:úÞzuª3b£÷­¦{§òÖÁ "€YCÞYHzÒïŽÕŠ™Õ K{w}ÖÂV‰›{Ó#î|þúB}—Ð(‹Ìã(bùÂ߀ÓïTyQÞR°k•cFÆìÛJ†³{7ÑØd÷àÑ쬼ËT2&Ö"1‘ºUm?íghŸ!/njšFèŸÓË-:°ã]YfA‚¾cüÙ€Y%·ƒ£Ëî3nßzþ6<Ý~œ÷­YJsŠU©º½vmÿ¨¹~?XÜž†©³#µáq´ð°çó#}áO&§g-f‰›È\°ŸÎ“u?¤4î±íÁû¥É'®ÄÌGy7VÊl†¾ÌÝ-a!?uZ¼ò\C7'eN?B%o~¦§±U ÞÕ-„ÆËùEBeo‡CFLF¬LÉm*A¾6K3o'Û¹baÎÆ_ VÆ;p°ÆŠ·Àˆx#N3]rþ~s¡€$šXˆî—C=ì9G C¹ø×šµÃE§hÌõ®,×t´šâŸþÙ°½ÎË0¥1U1¤7ÊáÉÆèìîï)WÈÕá B+*ÏðìëëÓû£žé£¥ƒ]kP+¹Õ•‚0²†dÜ©Cpá(C1]ó3c µµ@‡^r=øS;uɬ¶uò>0AnÎ]hðe‰¯ ëÚûD.­ÉÁè|2ÓÄßê\,Yÿ½FoºÁxµrm^*S£œ´¸T²P¨¨Xw†`/­,úéGåÝ90ìMmûÊku†-cjÅçàð×í„~ߢ%Ô@ û‹ÒؘW$LÀù–² özœŠòí º_;‹ºËcnuU[ÔökÜ'k·Rr[ÇÈÓѪM¸·Ë7ý-‚´—r÷gL"¥ópFÞÝŒÀ Áð(-$âeÌ8ó|±VgcOx·.ÕÐ/#¤nqåk™«¤² †Ó¦ÄYýÔO3Ci#»™ä‰–i½é$sÄ[¨1Úã.>™Q$^¾H˜j ¯!"ymˆ¬¾Øò/\ótY]Ã}q&ü®í)žI7ÉåTº¼n8Î#KºÏ€Š¹úìµ4{j rcœ›tQÖØƒÖ1gÚ]§H‹Ü,›òŠ YO¿úyúK™! ¨–ÓÚœÜOîþœÇ/„ç‡-¤îYù4}ÄÜ_œ”tPˆÏ6T‰ô$”R2éådÁWØ6gA\ˆºØÞH.×O±v2—ì©[Ô!Î,6ˆb ¢‡.jeU âC9êËáóbP#¶Wšvgßž”t…Ær {,· l'Aûà΂†Ö;­§È´áÞ…ŸèX÷™V=y0:B]§HDüÞš«Á£ÃÙ㢸£­ ðhn:å4:MN ݲ9H“ì›Z)€LÍBøý—øöRGÞh6è\_=µ‹rûÌ^î ·Ü2Œ˜•8=R~?yªVÒÔ­OÇzÓfþ݆6MFVzí¢Þq†‡ÿ´àÄÊ8êê`ýž¬ôWJÈ7éÒØ¥t¶oî˜ÁBr'wéñ][vD“6½x¡´þœzO¾vjñ>•m!’”¤ÂÊÍ"×ïiO@¶ <Ý2²ÎÕæ˜œ¹Ξ‘Ö6*œ[é9TG’[aã d‰ZÄNêîÜ(j®•t©l·eÄÐ[Ó;XØ) ÏÓCÜ}Ö+²¯>§º#̼ýš“\¨E+§G±76þÅÏ7fdJ ¡[ëgmZm»fF8•ê=iÈ”ÐÁR¬Üq+¸LÞž«ª.2§{®Zí#?Ý]fÆ ½õ×^ïGŽ2Ë–2ªºD+û.‡ôl£ZwÖGuîÍ:ž(œ O’wl 0Z_>w!lhï›Â>}YP l³/yÿwS´¤ØÙÒ8D©>c^®°þìzŒ¬,ߪ¢dXô©]U/(„÷‹FáNt¿oºõ±×x¼Ïs_|`Š‚uÉpi[ 7OtŸüÖ³î)…ÂEÓ¹3QøÖý¹Íøm&ü3t“Ý9tn¤Ži6•+HŠP?çÏQ,DEû-ã›ä; +Ò5TtŽ8AŒ@3…à“rü"4©ö*½Èw£¶i=BdTÎlÐ_”G9 aí—XjNÖ‚\°3ñº<#=ÁžÒÜQ™XÃËAqâLÏ›l’„2¦±ëÀ‚°2?Aú†œéó%ñ<¯xš]*¡î¬éå"pxö¾Ò?ƒsKxJA2{(´à³–§þÅxMƒ{›:þtíƒ :o%|2ííºeAÁû_m(èúäìRʼngÐT’6lš(!’ÍÈ ”_=´qžXÐz–Kâ fp5r¢”¿ÐíiÀ®ÑLóKi³½quŠóŒ«ºút-émÏåŽÆ,Ì”O¢‘«|¼ç ¦.Ÿ>)4–M:¸>Æ…B¼ë΋,㢶Bå2`peÇXz¤žVÅ”BkM³‡ó(h\6JlýóëÑ„ßÜP¿+˜O)¹Q* Æ‹¨Þê‚ëò]&¬Ç;㲦ÈÓèZ öh»ëJÔ½\LŒ•[åÄg€}M`ñ³äDƒ…³Ô»Œoè{eìï—ÃtýöÇ IñzåñÛ(9ŒêÔa0l‘C–NÔè ev"¸MÌã€9¡¯à*ƒèÈâ –Ø0«vúV¾&0pÏñ}>‹ úd¡y!§iX’³ÎŠPðk<¡)ô@ð»ä R[ÚðÏ8çY{ºÚ†ýú½Äºg%aG rª¤ ±bÓb )V¨úG±ayy2ýïw^XTO¶F;f ñðN™ºPð9ûabµ™Zì5l£§ûå¹£—Ú)ìvWV9™£ôTßÏœz?áVù=|äCÅ¿Z¿Ë؇݆NއâP2¼$—‹•ðÆ#(ÇÊå†MDÕéK# ¯§pV6 OšB-±oxût¡û™2*ØüÂóºB?@–†SÇÂú ~òXƒ ˜û¶ Œ¿Ð ‘¿aþ‘˜þlIƒö=œg¨/÷Sžzû®ì”ÕWÔÍæèßP“|Î ÜhÍ|'‰û™ ;]7&í¶n“dð*g÷ŽF™›²¾‰©nØwÉÏÊ–}†G’][Ù{¸1kq'Dw0ËŸü0ß×£ SاšmYÿÜw­mû\r¶¤SÙ•É€d¬Ô;!T$hw‹·¿Ìµw·¢¡û.÷ѪÚy®_N‡C*NSQWº~²D1w(HX¥Òll=‡‘ËÕ„}%É¿-)¯G¿~ë³Ï#ïE$*kPœ$'çÆûµ»1>CÛn‹»R]L2}€«íçišÂboŠq¬ÅS˜ÖZC5M3TÁ oo—ÛÏBF#Õ}@ñÉÙ1͵ØÅ xg^ ³¯ZªÞ Ú'¶Õ4ù^2%\?ŸÜ#µíü|bTµ udG`UÑ8à“i<”$ªË´x!G.1ˆO™:—Rk·l½Ã Bë'h@ðVòªÑÅ­è·’°·«éúæ|ÎLùÄ2j°2>‡§I׆ªþÌ„!ÖÈ©x´®2ÄVFZш~W Ú‹X7z#ÐÞ¦\mBóú×ß•GìMßAvEl¹YÎÓBí¿ é™“ƒÑÅÁsYoj®ö'°Ä‚?Ø;ÒÒrñJrÄ”¸½bZ®d»aIµ‰DF³D#¦i¥ËÒ¼Ðè˨¤œeÏ•d„ãž•@óðÃθ…Í‚®ßº÷n,‡£aÇÌ%6uƒ§çn麿H2Öò0å»è’Tð¤3‚ÃÄ%mÖôïçš,;5†sùýiFàÏ>”8÷Êú&H´Å8´$8øÜ¿`eôŸá~Òø)ƒ…šq¯Õ΄.GQ¬w$†.ˆ/ºýŽQÓ1‰ýˆ¬½ƒ*†éÏÕ•´ý ±ÙCSj?´ÁJISQ-I,è-´jÄV†/(}W,h˜”6Ý©“Û8X;ný†SW²l& 7œ×PgݘC3Èa9Ì %ÿ8ˆ ÑT6Èyº¢µ7¿š7%ÿZA.‹yCär/:ĪÝB:Z`q®‹avµ;áÊôí&Æ„!™;B‡‡Èq¼ãsC‰&Õi´.ª`øu\þ£ãý·"»žµ¶¼ç§w‡ ¦_Þe^6 yjË“Ê5ð_f^iêÁ*vqúÞ™X˜02ÏìÙ†IÒn]õhº‘.äŽÛ\ã¥,z‡·Ò…|äE(¿-È hu b¢ZdþÁœîwúí\îRÒÄR¢AZÿC gV&ˆ £]Æ8‰[;Ü;q”!vE,º±t…L6Õ±[%ÔtÿpV=]¤šæÀ¤Óôr~¿„ôæqà|Ž™pªg†XQí6ösÊê^}Ê„u¦•xªPÊ4Ñ9q¹_0¿W‚×ÍÙìM,ÁüåÕ…Za»°úÜËG¹Y†&WF¦,{  o‚™ZÕ:³Ýc¼2~1~}«'Ï´[Ë”=©ÿó7±m‰/ÝŽ: ä!§[›ä;¡±cµ»ÖŠf?1l•ÔûWßû?¦8~ rtŸ‚æ g%ѦÓqõ|K•ÌÙš¯Õ‹ÃvÊ4Ò›efZØó½n`åBVdðÂ7êî⃰óŠyçRóÒ' 'ò½Ó· v«¼”»ËM_¼­§m°ªSHÊ=ßoU÷×øn8‚/Aaæþþj>3ÇòŒè§È_2 =üë´eÓSMìL™ë¼f3·>¹,­Šs °º‡ÌþÜØ†Ÿ½Ý¥ë𫉣ò5³®’’yœ,²çÀ½ˆÈ/Áߺ/¶òVgµ¨ŽŸô+ÌZ¦oZHC1ÇÆ:–Ó9#™lÃU‚]=Wß--º_#å_v´4b¤Å5Tµm“7……fK(ôJ°Dn¹(¼½#”%l4÷QÌá-~e¢”txܨÌ-˜×§õ*ûÐáðD¬Øžê–®‘ïÖ T~?av““`êL]ŽÄp¾~\¡–~®yð Ë£²´¼Tà‰Dô)[à}QçI7_YÎîË¡Ç÷KLemeÝ'•M"§ÂC¼c”Š(ÿ{%Ë©iR§ã¨ä¥¡‚—x©ž”íúÉõ"21¢”ÄóX¥÷Öe±qËv8wËe½8œÍß™XÃbίŠôíb¾d|ôL;qÓF»Ióvv?CE¤¸Ç`/×›V/jœ•ÚÅ|=ë>”Ÿ1<òl#‹Á8.é½I‚©ìÓk=¯Ž1õÛó©`ÜÒ@þèÝ/ú0aâ:x'è{`ŽS²ñé4Vݬ`ó˧‡ð¼ÒÙUõ‚™õ&ù§¹Y?¨ç1ÅRðY`û7wàé-U:ZO|û§T7+eAž<ÃÜÎ_ÑÅ.¬'1n2È^_ˆ²c•Æ 2§Ûú¼2qjstŽÜ2V¥`a…Ø¥57]-½Ú–*Rá»f¾PojuÐ’+ãÍæ}f ÑJå¯úê ûÿZïØü¶sÈÁ¼ê*>s±~W' ûMw`éƒI\À³ØkÑ7ôv¬5£?ÞJ¢ˆÔ£ YÅZÏðQ“5 ˜ý=¤ÄêG¬îBk’õ¦ŠbZ­^ìkÖìɤDi˜Äàb ²Þ°:†Tó­Uï¹xEOG˜zïyYRžb"ádmfuú@Ó'‚ŸœM9†¤ù5¹¿û´ÚIeiS}©±.´;>*VÙ¨P„ßE†Üº¡Mk>¤ ý;+j 3Y4O«v»“ªpWÕb5Sÿ½ªè™Vb]YŒ®¯fM½Ê$›H¾ýv:ûì~SÅb¡4³QÃxÓ±ñ¢¤EîùwÆ)k”ÞcyüòâiÏ,­wÞ¯0,cšÁ°4£‰pqÚââ+`¦‰v‘”[=ÏÁ9,õyáÕà˜ó%Ù÷´¤  wÆ}°'-‡³¯Úm蟭¥Æv¨v¸o{Ïæ'È‹„ƒ¹ofCßÌûi_‘º¦ £X°Æ&kÄê†8!(b„žžéÊÏH |èªa0¤j—à„Õþêÿµ«êÜ´RZÁƒ£Â†aÖÙ8S(àýG.ïOµ'œž·‹MyxŠh$Н•‘8”lYK÷i‰rgÑ^Š™~pD…æ-L]‹ %#Xó¬¯ÔO°•fW –PÎþð†ÙA•¨fáîýŠÅ\iõ‘I~` {-÷*ƺÍõ0þ~Sô§¢g­¼‡°¥~ÍÙ‚k+¹Œì–qlª“áΜŸYO¤N q©‹…¾qñn·‡ÎÅ㯨xí! ³x±€x¦¾@#÷"†aiW!›}jûþ@rehf ¶3dÀà5±-ò4W^›cdÍ/7Z¹îXùpÂ^ڤה¡º¶¡¥D^Ù*ø{ô« 3¥Ý»Sä§žåÒ°æÁÁ 'êtýÄ÷ý’¿èˆú éÜLJ³Ï©•AO€ÈîÄÎÈãìÇ÷96VƒrKa-|Ç«Û_=,§˜¾‚Uð8‡—|oßÅæ1òg\F RüÄ[nœ£JS½#n^кœ£D‚e´6=?ÌX4Íœý•æôɉnÆ;`öÈžµñ-7‰H½Ó¯8‡‚œÇø¶òéÆÛ„Hד”­»;WãèFjÖóÃË ¾.åPnª%S²Ÿ¶,ÇÙÈ­1=|¦JG«÷ÛWn°n£oöÅ{Ìðµa›õóü˜ŽóßÛþ™ÚÁ(i?œ•>®JИúÊŽ…Æ÷övr³Ö-õ¤ü'2f5¬oŒEéŒ OÌGÅÈ!0â§¡©€|sœK(¼ânþn]‘¢ÖY¶¾¼ú\ÈÚ¨‘£¸FûÐwT"‡oÈ_zpKŽ zdáZE‚ƒ@¦ ö¼ú²)‰ i‹ò°Z Zê^F–Z†g†Â‘º›·».¬ÒÈŒä’ÝãX‚"ï’é£é‡¡/ØzðâàTtIˆ\6j ™èliÈæÜ·ß…Ñ*#/=‡òxæú슔z…š–L=gQðÕãlâÕCõ,†y³#>Oi¦FÅ:>Ê:ÍÆ†½·ÆíâÉfŒ–@›¸ºÑN=ܦ4\ÅNÃÎ0®zZ2øº˜sßZFšØzÂy×W µ‡÷Ãð,y\¸u’TÕö¿Q0ô"DYì Zf(lmáJ•„„é"<4t*©ºËÁÔ%Ó£Ýo•b9¶%kôòv«@L˜{®'µtö_Wéù—Ï^ão@yÉ!Xt«ðÍMë­ÙOÿØvTgW•赞МCåÚM¿´2”twŸZý9p¶ÒÞšSû`@½Aù/_nu¿³³R¢3zªµJ?‹lÓÎJÏh¦õ‹ZßæI±`ˆÿ+=IE.|ÔòúÏ!‘I¼}ù#tÜ^ýܶÛÈ¥Íaß̬Õóq›ÃB|w€Ù·»©E)瞈 ²ÏZ4T Ø·K!¼½Ú?½¹÷g£9ZÖÆœ§n”4 Ř¼Î+,² õ—ÓhÞÀMoyá7–¦ÐL'Ôâtô]JJ(Qã²X¤Þ~ž¥…Wx§N7–îcvœ½pøáuËÃÓéVüÌ%ÞÏC&Š}‘³Ìû©—l¡ÍŠìSºnºxÏÐÆ _ÖW$*,H&»ëë.s:ïa}­—&ùÀJ½í rÚ[Œò}ï3Xûú?¶ís¼¯NUÝ,ðÉúrþö"·FuÑï3Ò—÷ël鸬?Öh”•êm—ví?yn5"ZÉ%ðý”—s­8t;\% û÷€ºìô½€î™-\40=k¨äIê|~~ÔbWâÔmkZ€yºœ»KlfÚ'üsÌw/Äû}öÖcš ©åƒÐ?ðQ–•—‰Ÿ¸Ì8§jK× ðB‡fyÆw‡5_ŒêiR„{Gþ¢€QRrnz Ë(BEá¾›~XØS¥ˆW×úí VçØ)u©ˆGv–ÊUQˆ-H…í«›“ÚË;›Kó7$w²¹ ’g¾X9½ƒµb2Wß\(4Æy*Žßz\G­0­H<]Þ¾$+b³67óÞqYHK:&óz&A‘ä9Ð$Çœ•ø½´ru^¼øe÷Yþ‰~ÔÆˆáƒµðêÝ·ék¤w*bèŒ,C˜GûK…×Õ>õ*…„¶—o|gÏ +ò©ÅÅtîSÎ[›dï¬ë¨|1°3λ…ûmcĨãX®Ò±ˆÎL–«ÑWØ~&ÆŠqE¡³a!æ6òuˆF ,RÏù€Œî=×£Þ3‡ø:4²K¯GÅ(uV\Á©ö)§K£¡qv§y¶´ÒŒÔÙîUóÌH{¸ÒeÊlm&4´½-Ðôj6uœÔŒøaÈîXg,µD‰Í;â»§‰ß¨^…2¼É9y­ø3%¤$i”ãIC5k’‡ÿø}#V¶êëŽí2ÁAjÄ_{—°725\¢A£3çªQže9=Hü4_~ dN½'QPŠœé˜ô[ž$Ñù Ù¹YPF9cÓ@ÊA¢3üN?°·‡iZIòhåøèl’.ÓqˆÅÔ'Ó³ÐU0Þs'lh•é0Ó‡«R'ŒOšò»°(¼œ¼ 7ª˜K¹š=©£ùzÜó„7'¸F´_›qõuwF/|¬8…S8Là2hË*9õ¹¾˜tŒÔK¯/ñ]EÝð” ´ ç8ª»4-ÐõgÆÖ/¹™t ñ§_Þàpú]¡gÙ!¯gü è3‘»ñàÛ©Â…)¿_øX =|T&ß‹ùÖÝùQç˜æ‡ÅtI#L¬#Ý.Úz9„¿Ç/Ûµ‰b"“¯x¦„wã*~Š$˜ç®Ž4 Hº°JÍ$Qÿ*§KôpEÆÖc³ å­^ 9®w6¿Ç Ùz\Û¿)+Ö„Ú7¸¼w0†2 à‹m£$^øB%ø´cò1馼]ñEƒÃšU–y¢\»ž˜ÑìæÕêóÞèOKä%í¬n¡Ÿ§›ÄíÑœûwëÆðQ²PÉæ;…ÑÛ¶9‡pÞ¥UHkeþ³}dž ï¸/ÐÔ×¢cÚp îÖ3žýÍ£¨,á—`ãØšöXÑü”g˘O÷·èî¡Mô‰-}`yÆZ­FiÀúêõWazö>šJ—m`MÄéJo¦‰¡IñIBª!Kj&gýÌY[u¬…³•³UdñH3J—4aU„‹ýŠEÍr Ùî^§þU…É&q¸Æ2Ý%¾n]m€WÆ“AP»_¤÷\`’åúêº[,›*ª‘9ÝÆ¹ðy^¨™5îÄÌ®r¾8Zzÿ†Úþ-h0È=—»֑BÚ5FX­óÃËÇžUDæCô¶Žc<ú–Öt‡j߉•Ùþ7¡S°©ÛÝ^'²œîÈZ‚wåu_FyÁßöäáUGˆÒaZ?B÷æËL%N>ƪ¿ú>ç˰ºÊV‰1<ž*ƒU¯©ö‹dQñRE²§Õ±×*­cIæ@ã`†üçR‡oûæqãYA9ú‰eK ¬P° Š7eeP›¡ úþÜòuØ÷àÆ=Vyÿ÷h ”Uæq¬Q‚E¤Ï¶~vl÷¥¦ØrÃ(/GZ¶™¥×§ðvÜóú’Ž „Š{äzó6]$–gö7ÜÎòcã{2i)·VU߈ùP¦ÃÄ¿…ÆwÖ~¼6s½ÙÊAEEîæ§(èÞ*#ST^"4=Ò¢~ g,l—°ùª½÷úBVÝ-\Á½«3´®j×”Q„ž8ô°¹e8dÄ&PлR‡ëÌ×7 “yD/ ‹!`[‚FDohÞ÷U÷3‚}ªå˜@VÍ›öU'ꮕĥŒ‚ÞÅ) Ñɕȣ$$‰À˜ß"¿[SòôÏát…ùÎðÚ`ÃûWl1ŠNø[¥Êö§ALZ M¶}ÁF^¬Ñ]‚ âPF_üý¯ÿèb/^³e…c6;XÂ_Cº>tÕ(ƒM7Ÿ×k$øî¾YTÍôt£ó³O¡˜ÝðM¹A\üÞ<óV öã®Á–]oöªÊjMÅ«æ,«#ëÛ÷Ð '3.aÃh¸è€2,éÇw± mç8f³š+Ä-òì]wÆfÿ_çÔ\£ÀèĶmÛ¶ÓØ¶m³±m8m۶ݤ±qŸ¾·û/vvvÄwðìWùûögÎ.ÉŒ0óá-‰c"âEÐ ‰ç¦>r¦+¦P}¼H:3Ϋ;}"ƒ4x/ÌB^ãL€àˆé"š“òâÆZ¿ç gð‘ô»/φön¥Q>0„Æ·\^œÎ€ôžßoüåØ,´Œ^Ÿ§L ú6c®œŒÄ|¦3€Ð¿Yó2a6f á»!l!¶T2êdgŽbuoÉ*s'W§ânÜÚ°ÔuüP~ˆHz™vmgÄû9ÒÑÊ0UcîZ$vóÔ˜+¡ÙÓ†âÀ8»]›âóF¹A…¬ì—|éräŠ/MÓ‚dšÈønu®ðF²íàIa臦¾×–lGu¦ô~G7ÎèYªºZul§€WÈäM$ ¢mŸ€Ÿ¹iÕ¶ÑHB“{tÌæ—ïK½å3JµDq›àt½;q®š}2(%n9àþ”¦>T ±´<Ò8Qa—}ãp66–7)†G«mÃJîu¹ÀiØ üwbê¾ÜøËíFìG¶c¶QØó~¨›ÆwZ(ݮòÕI%±¾Å1ì¡îλ”Î*Ëo}[ë†Q…qè{U™LÚ¯Oös3i+ÑÖÏR’ÔTðV¬<^Pçì?Xµ  `¯zíÄ÷I:™Ö§íFUSK1÷ö¸°}Œ$¼~åmÇÞáµ=fÍ.y›UÄgK¬—#ŽjªDiï>©ZeÌkm¸/×S›•¯°o!oæB ÿÊ8uº0"â‰ÁqÙ$•ÎàýnñÐÞw´ "ìÊBºu_¯¸Yäòt Ь¸]TšŒP>™¿FU™æ‚’Gôë5¿~»²Á^Xä…w˜¾,©ÿ5nv”õD‰f0?/k˜3¨B(t ¤ÿsÉié–‹<Ç̺үˆ‚í),ÿTìÀ]‡nä.åÈÃHÏ xd3µLÜð2P£ Æ-6£y4av’oª0z ;c¹Ú3¥A@³…o«KB%N°|§õ¦†Ë‡æk5ãà ”ï=|l_q<41üÀÿ AÞ³0÷wÉA³¨» ’åe9]z~ɱØqÇÞ¡ž‚ïë©ÏPô*×° M}¶3çZ! ±è¬2¨èI§h ZæÃ¯Xäbö:OS ˜ñg­•‹÷‹usý”ôD¬¦OD2˜§»—×.•?íÝÐ,Åɘjܽ7{U¶ÛÛ¿Ó¼O%¶Ï=NÓ¡ÒQ‚û†_FS"oÑa)dôà’f‡ÃY½ÜÈCÑ H:‰æZ ¼=$±þ“£}~ì „ëVc[ý_¶y6&]Yk_ƒax¥7æueÉW0{õìàÓ&Mòèëz\l»‡ïÀäþu o¡à1/_¬aÝ1OØO*$†6¿0~©ï}îáºÉYHÖóQ­(nè!ÇË¿ë8ms’(ïMÏtLð%hˆ¤9n%sI‡Ú9LŽâ|y躥žŸÌ$­áâa…ÚTéâÙço•N“=ñ2 Îð†,”ð:kƧ{ü½ŠŒV?…/øD¼W‡ƒ¸]òË-’êzch¨1=ÉMõgaã¹αŸ¾Ò{Õä‹Ü–{@Ìi’\jxe…HSW¥" ùß—sL;ìÈz±w¡üìeä­»¥˜ÔÝ8íBéêY 1ýSZ$Ù Æq¿ži^Ò}£êó?ñ¡I·w T♲”È +­LVO¤&,N¸Kˆ;t Kg‹üõVu¬e²fú§^[©‡›ÁÔÉ2Íd°Ë4"j_å aZNA¦D¤ tÌš’I–QcnΗ·ªÏ°ªJªLŸã¼3ƒØ°°s^p§I["Õj;=$ØâhÝš§2!•Rš»^DM¯²‘Ó'Àn¹I¬E\V<1k0ô'}¬üã5?—?™£ÚT8H4yœ“Ó±½¼ý<ì!¨Ì«^U^t$-jàlès÷~Cnp«Ka£¬nöæ¨I„ø]L%d5Ú(i…QÕá…У‘2Ñ‚3ÀþñáV¤HQ¿€b…òj€½ ¨¦ºðA²| ½et&f!/’ûT¹ ¶&e03|Š¿ìU@5M«ëîâCšd.2bóãúÝͬ(3èå¶ß³ÑB“ÈQ€ü×¹è`áM²b­Õƒ„–L©$ÌÔÎ=« ±F„N3ò;{§ò%¥ö‡6k.©Øð–‘5fvÀl‘ÊF°'eÑ^Ö)-gZqH®ôÒ°çûÝnL ® ]}Hä„U›Ì£\ÎI´2B=¬ï¦yyD-mÖ/‡c>Þž_àŽp¾¼ÁùpÞ|ÁÜ´ôÈÝsfº:CùÃMò:Z)æe­4Ø´’ðV!%røÓyõ”ü´–…WØ ÜÔH2ËNUõ¼Ÿé¸hÉoõ‡!à º j²ñ®©J9h!Ýö¥êš¯…1ô %ÓRwïëܪ…Ð)Š €ñÖãÂîÁ+Ƭ‚†•3w“fæÓôÖeø,¿Ðú^€³*‡ººU`kúz^d¯á8Ü‹rzÈñÊ×+UGÛIµ@àì#ëþf‚›ŠPÉ#–™$_‰Œ«ôËW@aÛ¥™ù'©¤V>:§|ÖÛ/›<Óœ8¢ ¶À/ga—8\‰Ã|íÓ$‰Çtˆ«Ì˶£Lh¾@…)—2„é—j”»`×:léW èá{ ölçÍþÞ4O,A@8'àªþ›¿x‚Ð(ØÉïSV©L»¡ÆLÏ¢&Í«j\ìQi–gÍp‘’y+o“éñuîêž$D4­Ü§«‘âQ&ï}»3±0³0Ý4PáÚ ç gΨw<µ1*á§8’¾Cé ÀzÄÇ¿ò°BUš‘§<ð¹(z¶ µR5R9;×ÇgîÙŠùµ¿°51™¸ç\»cˆ1ÃhV_í¼‡v%2Vè"¢Neîn£-¼IÙÎê$8ùÍ¢âÒÒW[¸ ¶;á[Dü=6…£Í—PÏÚ^j)óÂÛá“Dsßd8ú¾wðÓ¾6©"ð46ª¢þ>9ÊI}ñ ^wKvÈ{#¦ ZÇ–~x«¶&­ào_Ô´eFÖ¹îˆ?4 %tÎ~\¯IámÕÜ…)•rç}ûó®³Ùš…½ýFÄèãÞÎC=ãá OÐwÌ kP{¦ óŒ5Pç‹ðz"²—ÑPU½rAÌqÁYb&wä — G>¤‰1¼Ð³žuAо¼/[Ù©?ôõo“R;¶Ð»†LÃëô¨ Ü& ìmo*¸G g>ßú~«CÚ;»ÏKpbìµ–ð—À–ˆ°MÆõfr|‡x$RFÚÐðÁ¦¹vDܸCHJ5f·CúÕî2H³ÏÓª›õÀ´Åñ¾<© CÀ£ìRð# ñ2€a¯ø6âñEO€ßòf’žqH}ˆö«dœTý9«òN^‰Ërä_°«† cyÁÖ `¨âKVéâ`ý‚Q€»h/á%ªZ™*ëĨuŽ9Ìè`~·§ò>g#‚ÂS'r)*!±Õ©&f¥Û®T÷[i7–ó+ùX÷è}ˆx+ÚJÝèÙ‰þÑÅEG†Á~ÌØWtT09_˜íœÙתqŠì¿–œ±È A©%» $gËSýé‰<ø7V»S¡¯ÔJ³ ËD ¾>/ÀìåüIWÉ.A¡ â ªÚ)7Kä#=° ®0-îVÛ[ôr‰3=îv•¤_|‡(9çܯ㗄J±(LIÙ}סV,V=9û“êDݹ—­“^¡èâð])·Wí&‹;nÁ•wlÓ̹Ò‡rµñ‘«Ãzq’gø¾ ù0—i0‘·¯ÃŠ•‹õ9XþOVX!uoÖ¥°ê}ü€¬}”üåþ4 ë5x…½›Î‡AE†léºòDWC“ ¯.Zd–Da&ò  †®Lñg”[©™ŽðÂ^÷åʰU²µW…¥<*‹‚Ö—ïñ&ÃG‹éíÇ ®n4‘„ënÅ“õpª@¯5uR¦TgPÂó”Ï%XƒJD1¯ÐÎ÷;À=ºÁ¹?y‘X’½Æ. ÇüÄ"ö“ÂízGæóÜ#Ü!”uBÝÝ:ÇïsL“E©Ôª*Åt~Ýñ–‹óÝW_z_M€~®ŒâQbLåœd Fʦv ÿç "<þ܆“ˆÊb"\»°ž> ˆjØ 6¶,ÿ7´éÆ”oÞNø7HJ’Çgl0ųÒ£[ÎhÈV¯¦Q!›w¢tÚE¨2ùͺÅèV×™ÂéÓõÒô<Êjgúýé@[>Ë.x;oa0"Ü^¾¯ïý™áŽêwÔ'ÞbI)À§C’¿C“)#:+¨cøVðõâ¾Ì?TØŸB!gÇ„ ÝOƒ­2Z'ðo2ý~AÂýdŠæ–ìm„Ï¡s; *[Ø™Ú-eÎ(TWs5rÝ d9÷W¾a#îÉ¢9k0Ĥ8ÖmŽ?%R¿ùŠCG(q ºWõ ï$%§è»þS~ ïSÝwJÆ&]E·%Iì{ìñÂOI‡è.ªÉ­¢cß”ñ2ÎOͱ²‹Ú¾'wñQžÍ„h.Grÿ²u‚‘ÓÈ¥›êÞ´†<Ñ@ŽË…éâIƪ‹¯%ƒ%Q ®pRòLi­+C„oþå“6ï¬nÿv«]åê'HˆÄ(Æ,£Cm¨!à÷ …ÿ…t7 r7¾Sˆ$~‰H\°?ÞÿŽµÈˆ­ä$O/ýCˆ*Jz²+{ÞºëÞ‹£, Y(¿†ªŸ°æÅoý^û™¼TiÌð¢¿úÖæÇ¦‚p Õöôæ£5‚¦HFi2#| {Wi€M«LƒjŒ‹ÒÈœ”­sü›’+–O­r@Áø3†BÚÕÒϽ[Ä~5 ~gÕ5}:,]£×ÆòÞ³¶àçõDeY'Ž-4¡nÕQ|‹…©™Bk¼ËîÁ3§‹JøuÊ{a¯ÇÂ[/éu‡LG¬lÕ].p¸J–Ùstƒ™4VL°°hèþ aÔ"*}Ú-èî>'Åýê6ðÃgÂXÀÑHPÀTs‚JíÊ S>T>pÔ›ûÓNvµò ² R›OSlE?fÍa>"+jx‘ô¨[_ªn«Õ`{%uŸø#zZª ¥åk}ÇfºUf‹¨?sK©Ÿ÷‰]S)‰¡¼fÝåP˜÷°òÈŸõ:±#ý‰”ö×ù®ðàä3Ù>vÑÐJT}ž–ãÒTZ3ðfc·~ù€M„FM¸m0+XI…|è’¦l.±äìšõ>Á¬ïÊú»ãÙA‹c÷°Øz`«SÉd}¹!žÖŽ…¬'æX{2Á#],°­ÙVt~g¾==¶tÏÅw/XŠ*b­6/YhÂ;,fNºTÆx+gIÁbð{Õî5qÒL/74ùÄó9¾)[jEsqrœlån9LC`~32¦»R]Á‹2ú£?s誕Îo þ ?áŠÆ»ìì`E¹Ä?ótð)EG#“oúûA@§!»åö °ê‚–Övî:ºq97%%¸*«ôf1˜ŽK;¤'“ÕXdF]qy´Ô!.ã<MüH]]}ÜóûÑìì 0ù§=ظ6 CX»yhÉj–Õ­çµf¯Œ ¡˜)ƒ†¢T̋։Ö1i«Õ1¿á3 ¹u*îU·kx@W43£ºÞ4Q2IyÌOßßbï˜Å5yc•<ˆä²J­ê*ã@qÛ‡j™Ó;Âù¯4ýš!ÝK—`F‘sïYVX„+&{—Åvqò˜Ï&{IV8)„Õ¤(óH‚¸ÑëÕ=â_ž¡”€æ£J–)ßmå¤o² …‡ÌÀ¾~«œcb3tÖ?|ªœ•õêŽ{„ôD«ùC¼Ãéc7á[j#” ³P³ŸÜmZ'èNŸ9¦Þ“¿B¢A(pÞ€–[;Ðç!üSöa„bqÆŽJÑs/ÂÙ(±—7ÍKoÄ'†{3œùS;¿Ž“NôÛkQåVÒ B„¦¹_´Bœ‘Üê’¢dSÉü¹ÓUs"+‡ò"8•V¸ƒËy™&¾:Æ/FìÃßã;ùd1:”—æ£)€Š—Îïã 0"ž¿Cžsg¼]¾÷ñeŸuEíåVn°£!¤E̾ù×t˜ú¼;ÙÃä‹=9´ )ÕjM0‡±úB Gœo-'ØYY[E3™)VNÔÁ]9L>÷‰åOr¤ gq¬0Ú1@.FEU2‰™¾W»[lÈ•6Llzc)shâ•>ÌÍ=##Oþ‘©þK“š¯eƒùKóÀi[Vª%ä’ùˆðO$3ê÷<Þ̾…»(mÙ|æq¤+°¸•X ×¶¥ÚÛ›÷qùÓ²»Ã Šà£psÒíGî_Œð¦òÅ*SK§8û#ÊþF fôD¡è´Ù”;HáS±{)ƒØ6 |û¼ªöE‘qø]÷ÁÃŒ³ã”s‰'m¸ÆÉäÝ>vríÇ拾““‡÷îÜKR;çnŽhέ3ÂÚ²Ý'KF$”ÃsyÞ È„9),Em‘Юs“D¸0²fF­¢p ÑÂÅ"‰Is½ézÛÒÓ¨^ ¿j ÑN¬-l7޾sÔE¤/ޝ© ÏàQ4<µf€\½ÙxM>¶ ³ &`Ra*í‚Iÿ%4LÁZéåø¼ÆtÕôh%úô,!‚Øî'Ä>t˜1?!c…!Wêü®âÙ¡ö mí›mêã*ê½°ˆŠÔ§Ÿ9 ©„|vGÝ“ò†û ÈÆýÄ…Ñh£ôßúŸoéé‰Z«bJ‹œ;ã& Qå¿>§ÖíÆÖ%ó(bÚ *n^1_PrîuO·ÅPú'£¸lŒí2;-ŒûkïiìÝù…*Æ;H¬ö×vdîÛåÀÙ7€8ÓéœÚ6eÚ Ž!ðwÑÖϾ¯±‹7_¡ÒÓZº+_ìGˆc2þ›ô(üxJk²ì( A¦ÖÇ=’Ðóe+DuËà9a J•VózÝ„x‡­'t4D ä….@7ìÛl˜… Tœ}ÐÀ¡£´ÆuѺ0 1FN÷Bo=ÛjÆõ5r5„xªž¸öÇoO… Â–8(š)«bnî åµh¨N)H(zo·Îuà;û˜óKë6ßµ Šyr Œ#É…Œ‡‹ü¤yX$UHJ§ ué¼ÓÅh}î- °#X)ÿüV‰Ž˜J 4KVÕ$ú×wf7ò×;[±¡;·` jªÄŒË›ª‹þ Ò2CÀ‚’b4¿}p˜‰%ÑÒ+=ù“‡Z¿Ì¤Œº``ɉ¾9г·o÷óí`r‚€G¶§` ¢ü—CÔ8é}c'ú/u¥É‡Ëåt7”=ûk]»Ên÷õÐm¥? ·Ûˆ¯„>¼©i¨¡Nµx7hß·Ú /…ïåÞå}9‚þÁöúѺFì6Ü•ÄÙin2„ìB°Õ“”~ rà’`•åMÔ(ù•  ÓC> stream xÚµ¶eTœkÒ6JÐ!8o ¸»»»»KKãîÜ!x€`ÁÝ‚Kp îîþ‘½ß™Ù3ç÷Y½Z®Òë®»ªú!#VT¡2µ3ŠÛÙ‚é˜è¹²r*F¶NœtÊ@sgk#G3=##+™ˆ#Ð ²³5¹` €‚ øÍóÍ‚‘‘ ´:¾)MÆî9 ØHÕÝÈ 4ú (Ú9錜ÞÔ@[s-êÍEÄÎÞÝdnþƒ…ŽîO¤?ÞÂôi#+;W'+ÀÈÖ M/G·s}‚”v¶c …‘µÀÎ   Ô¨©ˆ)«$”ÔU¨èß«8ÛÛÛ9þU5 Z€¨¼ª¨N PSQýó© ´}ãoN W}ÓÿÉóføÇ]NLUHUKQŒ‰áÏL £èOÚÿáFþÆ ðjo®fŽv6%PZ€ÁöÜ ®®®ôæÎN`z;Gsz{ë¿ø©Z€œ®vŽV€·oG 5ð¯Â8Ûš¾•lü;ÀŸ;È‚L€¶NÀ?Nâv+mÞJùæô&ÿ›Ø[!ÀbZÿmpÿ+…‘Ó_¾²ŠŠ²#-hkdkòf6;; ÿ’½½¦Dœÿäû—ÊñßiþE]ØîídºÖžÞF®ÿ{cF¶ÎNÿ¨ÍÛÄÎÖ ävú;"`²þaïôçÎ@¶Éä„ä¥ÄÅTTédßÏ–NÎî­:¶ô`7ð_Öâ ‰Êr8ÙL\¬Æ·&³5±³±ycí„ð§|¢ ·:íÝþ·­­lí\m=ÿ?b3­©ÙŸº›:Û3¨Ù‚œR¢ÿgü&BøÌ0€ ›‰ßdõÊ1Óñ[¼=ííìfFÖN@oðí ÁÓÉÈ;:½=ÿ©øo„ÀÄ0™€ßÚümTþŠ.ekfàú[üÆä_ªÿkʿƔêmFMíl­Ý¦@3y;ð[;Pþÿ3eÿ“KÜÙÚZÞÈHù?ý_3#µû? ÿÇ@ø‡)¥¼£‘õÿè@Nâ 7 ©"lbñwYÿ–KÞú^ÈÖÜøv%‰ÔþŒ’õ[ϾíПµ cúSÔÿÒ½µ£‰•-ÐÉ ÀÂþ— øV„ÿáûVù?l âBBê4ÿÛ0Y‰Ù𨙂lÍÌlì#GG#wÆ·.`fcx2½µ³)Ðí¯60ÐÛÚß\öÎ`o€™#Ÿ«äà0Èýý8 òÿFœŒÅÿ fƒò+€Aõ߈ë-ŠÑ¿û›ÎüoÈÄÈ`þ²Ìÿ߬-þÙ  À·ÈVÿ€o­ÿ™ÞÚþ¾%²û7dåzC¶ÿIÌÊ`°:‚ìLÿáñ–Üñð-¹Ó?à›ÇÎÁö– ìj÷õ7çÀ·|®Áÿ¾GÅ?;ì¯eüÏÅþßrÿ «€í¬€ Ó·?¶˜ÈAn:ŒoÓÅô&{ýë—Þ% ûÏbø‡·°°›'ëÛ¡éXÞNÉÄöV«·ó±zÿ—¯Éß{ö¯É~ëÀá?KºMfíLx‚,SêCŠ}Äò'J`ȸèʰø5¥ã Ò'Zñ>‰æl¾ù7úe³“•äÖóIò·-Ô$ ´~YmJ,¿2UÜ4ò‘óÁû(&4œ­N¯!7ïWÒNBµ/§UÄ:•Ñ×LP>ájí¸b{E½H&Ñ-i^Î…q-˜ajÀp´Fs›GÁmÛŸh{~½ÇˆùbÔ-´@=m˜‚5, kßÕ¾[¦oÆÉòžR6……^¿=-dAöq)s¯}h?ÌÙ”_d&íµz+FóÔ· U¤qž®¢ÞzáDö¢Ñk ’äf95ÒO(&ºµöÐÙuÙ`B‚[íɸ©v©´Ñ$dbl10s ]q>¨E±1ÑÉ\¤·<áA´ƒÍû"áy$€‹Ødf6£"!Ò†òS ëÂä¬âg§ê͈¥s3×øé¤yý­•ù0nˆuÂõ5PèEʬrbeA8û”[Ë)ëUÕ”êÕ|wY_S´K5´±]édæñoÊ8š5F”š†ÔáÆ×„X='’%wSDÜHséòKùùQ„¯j[¾V+yAH--*º@\{žÝó°¸ÈKÔi9‘ `pu'ôOž}zºOÌGg´ÇoÚãáÅZ·g?¸8ƒ£Ó‰¨N8Ây9v¦¨ëùu,B–'hˆø>j\âÍ®;†ë}DC3—Åx—?F–¶;6}Š€êüјJs0t;œ÷Šû$w¡­„ácÄkôÍë«lAÍõ}þpq!Žýã1’±ÀlɦÜ$½/Z%$´p7—_€«LBù„ŒJÝbÕçëp X;“!ÕðÁî5±cÒ#¦X_)„;~ZØ‚\Ä.±²‡ž_®*°M~²Äw‚ø&f`wQHbÂñë ” q&%Æ7.0:˜¿™Ò‰:4µ­÷RŒÊSVQËWsJ²Œ*Îq³ëÉ£9bÊŠ1ÂŒd Œð±ÌC8V¾wòòu#|‘ñŽÄW=òåi,û9G…„‚¬W&Û0òñDÎ$ÞÀq”DZ lô꘴±ˆýd*Ú¶]²\™F)RI¿öÉ ýô-[°Zzâà'$ #škåöL½<6.cB«‹)#VríöÓH~î,zÍ„L× ÛÔãËäçWKבýfà0¡ôátÛàûî÷™Fªsw5âO˜"GØÍžš;ÙOåIe:‚ßSÏ(¡Wý¬\ɸŸf¿Ð×HkaÅçzŽ”Â_±{{7Kém±ù#­Ûõˆ¡”5Ï!ʕ̼®*Ícêåý;l\Í&‘µZ(7Lz"t?:5‚äÛew"}ˆ¿$¤…N4ù᫲qgRr½â„ËÉJ®Ê‰ ò$¦<ŒDO7¨9¾p<ý"°¾^&¤Á?Ö˕ր-\]?¡ð…v©qàÇ}6¦¦×Ævzd/«v?™¨®tRLÇëLÓ…§»FòÊ¢Á¡ÄðÉyô·øê·‰z²s:}Æ€Ì? ®/ÑFiâàÀB·69X*G¦üv]Kº®帾™‰C7v3·Ûþ•t¤áG‹žáê&Nª†ež<IÁAÎà•ûz1øÀ3™‰(úià^‚Îòppë.M»3ËïÕâÄ¿}ƶª¬s‘\alÍ]³hspŒzõIfÜRWú3V΢K°Œsm¶ÅÜÝ&äA^1êÓÃ>zÑ3ᔫãíb½? Åówë[(<$)q,’¡yØqõ×J…W©B_2†áMgÕÚ?I Ø?rãGÅ_.âu¡=x<¹…[óØN¥š ôãógÖ‘Xˆ £qÜeJgæýeTBô¡:;gW=Qo†6¶8àT¯Ä¯#9x/‚=³´Ü½S×ç ÐA2Zãm"ŸÁ×i2õ#T¦SQ÷C»A*|šÜøPfØì½¥5üH ªA$Y]f@xwß±Œó‚*'–zOK?ãP#½_G›õ·nX”øâž|£†`(¢Ð+_«pûšÎI³E>S nu´úŠÏ|¾%)Š·±Æ×|¾A Þ,§¡´X†‹yvËLxA_N?jß±pH®UÊ6;ø=s?-4ô7ΊC& yê:XAfÌ|þ€ìôÄ,XáˆdgíÀÃoW~Õ&í¢÷c#‰‘Ú2{wGÐm0ϼ‰?¶Ñe`³xM ‹r×Ö:UŠ×=77+(ý•.ð $èÔ? ›¾—cÂæŒðìÃ.¤qŸÔ1âup¿"žÇÁQê9¯â~ojT/:Ñ­fjžWÆŽ]î:˜ö²-¹„[æò´›Q¨ª˜ÉäÊ`ñQbL¡Á+qhF‚Ód¸åƒÀ`¿%Áæ‚.;îšÌ“hƒë&q$y<¡[œíÈwC"gázˆ;˜$œ!Ž6šûÙ(/a~ËŒKÒ?Q:ôÃX-zl¢#b›ÊÁ> ýÛïnôôz…œhvåÇv–ÇíÖp­ÒOáy8¬Ë˧c±ØMÑ[3=mZ‹à,×Ol†>X~8¯‚‘¼n|pºéž‹<Îi•ôÚhöáü³$BÆg×Ï['º[]8¹½«ÁÊÞJïXKüNŒõÀÉRu&J4šµä§ ¡–¦È r¬d+h«Û3Œìrx6=ºyÎ^E¥ChS·Vv]Å„óA(×:BÆã‚ˆe9ræ=rdóÉeðYÜ~ã–PÂmùïiÁœÓÄaìÀ<£•@Z%6”¾{8åç°˜&ÃZùÏ%kD[1øî:ćEÙ^„ÕRñé”õi±x¸v^™ È‡TvNÁ/ziî©l[Þ3w–¾Ç16Ë™éù–¬~jÑkŠxžÄ&Ç“¯½Å„á©Q÷uY®E«â²RçÔ²;$-Šïïù%©áY”;máß¿šsÄvgåOxG‚iBÇQ•gvÚ U: ­UÆu¹³F~xQ̘úQHtúBôÃïežP úqß%û9Ú™¬Ôåfî‚×fPT0ڶ š÷ÕIíqß6¥µ”0/¯:)æ ÉéädaZ‹~Ŧd> =Zt£p\òÖávуÿñû ;€&{îPÑHÌlmÔÁ1Å ýn±n–¹Ü¨É;yþ[.ìoÿÆÁ‘)w¤™Ÿk¤šRg²\'Ã-C0ɧ%aÙfý'ÎvÇÅÀ"} ÖÌÅ£,e r”hQÓ—ÑÕ€Hx7ÑÏ–¦6¬slv¶ìj@¤ J ³ÅfV¹Þm¦l(œlý&È(·xxÒQCÂä]’%¼-æT£'$PíÏJËfÌ]iÏKd·ÆçðÎ(#ýåçßK/×Ç"¿ç°#RŽ{°åEH ii$¯Ñvûmœ¹º µ?^çFk¶¾Ë4Ô_¾ÝÒ/z|ú‘®'ñkåy€¿Çãénxæ‚¡úñ¦ò—¿bó¨£ æ÷¶ø‚F«ž5ÝÝ>2ÙC*çÚw¹[šJ^Iç/wÐø} Ÿh¡DT! T‘&B¶½rIßu˜È‰ê&DÕcî$xòpò,0¡Î¡]f†9L’1ù`4r`LÆm÷n#ÈKD½þ7µ%/3[h†›hóÞñN¶_¼ìZ,:A½éô¿dÕ©f%Íd%I&Qá”DÅ`‡‰*ÒKW´z?"v5ÒMféu”G'd@ü¯‹·Âh æÑJnš¬«.-x܆š)ŒV†G€Njh×ÛQüNÈ‹‹ÇÇòÃã'\%»ö6)÷XÚåFèJÚ¾ Öë9‘Ä^$ã,W7Ër@Ý7ÇïãéUr8ÇÝÓ>ÅÂ\ªtÓ„ëb’=*–ýGY‹Kø×Pc¿¶ŽÎ›wiîàÆv2ÔHÉ€sJ‚»½ Œ²xÓ¿µƒãÁÞ.p»zË0ÖÄp…¾z^ ?¾ÙŠL¯ T9¬ŒØÌlÀ,RÒ)Œb6]3á²ÎŸì“ºS×Xlš|U=[‡"ϯUº£cólyüˆ6*I”LFÝ H‚¾–ѰD©]PH"怶 sÂgÈs äT½uâð;OO Ó&)à§ÖÝ·Tñ-ÁÇ}Û 3gæ-÷l¤q=†R‚–BÈö•@]•î¸%OŸÐ¶LAzª3X°˜‡ýCÀä0à‡ÖÈ‹+_ºþ±w+jFae­éÄÁ}úo• þ(K)_Áb‚íq„õ˜Û°žVÇrØyûá¼n}] ÄëaáZ¶“êž³>q°³ú‰ƒ„˜ÍPkœépBÇ«®KjÇgfÁ¼}~é° ÏØ´|äœ;Çóõ|göf©Ù^…¦V[åF0>f”ØõžxÚd(«ªö¤¨‡ï%M.•ÌØiCMÇ2Þе‹_6ýn篦çž÷Ñ Ü]’ÛØ Ÿ¸ã qâèlUjM<𭜃ѶŒ¦­KÝ…#>%W†¥Q“,-ç.b8ÃeA¬ÔßâL|>Ÿc•P¹2O )Vmr­’#âu2sþBÅ€r¤à³Qœ/ªUù–«éÏ!e@¶Ô¾|˂›— aê2_«xt2r©°.÷~é â˜Ô„$v@bü¡hN™À[F »Ù3S^’™"ì#A‘©$³¥ÄÓ,AÆæ…ÔW’4wrá·7û™ŒÔù¼½>qA4]$Ç!:üóYýKÉ8p~ˆ÷û%É¢Þ9ãîëdŠwþ»‡QŽÌ•†uj D´}ƒ^ãå>YQMŸîõ¦ëÖì‚ô“_-(u‘ûH›#YK–Ö: ”'ÒÍì,Å-ZÞFFÃÕíkknŠ=‹í‰=Ì9ðs}˜èFÈõöy€U ƒ;œPéžÄûÃ×^é‰þµ’”1ß‚ÍÄM`fºX0ïçÅ­^N9KkDy\~]7­È´2$û©ÅkS8×h—ñŒ‰‡-ØYô€vê¹n¹÷Ã娥ówþL—‹ßôËæI–¡Sé~N£É·ûë.Z?õLÄ+#ÕhXìB±÷ ¼= ÓS á=‡ª^Q7œt”šô#ÞAs¯íFˆqÄ>ÜâŽ#ᥡÊÞYÅŸ¡E°¬l€òw¡Œ-‘òì톆BǺ¢aÐ&ªá×ffºÁ2”*|¦«¿îÔfXlè—2l$+¦*铸 žr‘ÉÔ¸BÞ¶–ŸÄ¾#ƒëåWª»¥e„ØÂƒVë­ñë9nb˜<6 žœéäû©ÄìS˜m8Çä$•‰ãÙ*ë$d_ãa Èñ ÃÔd&\ XbBÔK²@•Õ|>Ó™ `Ÿ§? ù™,NÛ…FIjÍÁ¶á1˜œ-ËH'(ׄ.ïÐy*²9Àõð½½çnKr §”Î挿,l…jv#tîƒ]ûý`‚¼K쨣ƒàÇ}û9\r…{[±f~x6'¶IƒžÒÿûÂÆ”%#v;úè\ò‡éåçNô… ÜÅ¡®xÐv¯S˜Ë ´KDä*¦ÇNU[@ÖÓÂþ_•ê!y¶‘Iñ0Ù.§ššöÕÔ…LeÄ&¿¥Ayk/ÁÕ©e¤˜´d(ãb\Eux]¥qm¸Î™ë¬8:«>{£÷Ù ýÑ´QývŽ£ô»Ïæ<±™dŠB¬+×à544³­”Åz”ÌÕ½bB%a«£f¥†Ù>šˆU1ˆ·l-hzÞ[Ws.7}=Ÿ4rÑ ¤» ]LÞ^—ænæ}Ç0wj®^$GNq šë'Ôè4Às­ÿl®¸íÉ£´þÝ_e|¸á#Uw€çF}ÜÇEÀ ŒNÖÞiŒS¤4:"l…Ý~¸s»ú¯Æ¾”¢uçºZ! Q׌Ùe%Ü ëGP)!º†Õ²¨…ãW;T¯\†äXŒñ2¢1sBKëòP­Ž;ÈÈið“.üwÆïÀ89SÒÂc—pÃç‰:$µ‘´çȥç¡Í¯ýCÜw/,Ñöœž xy¨_“PYwwvwSÖ#®Ý…VnWŽåeÃ2·H%íÜêD8û[W@g3ø¸yiW¸g= Gw>‚¾ÁYr{_™OºÂ Ê+`?©ÉŸ¦?FT##ôO O†1ï>KÄV+芰W+téY­«©ù¢‡²ì6ÑKíšn¬ŽîuŒ 2öÓùP€Ž²vêîš_aød¿d¨ÄÑ{ë–•„5¿úðú3£ÑøÄ:‘ Í›¥žÍÕäJ Ë[¶¾Ã$¶ÈL+qVú…_dj˜‡žj&ï=']Õõ1bQÆ7rñÚBÒ§7ÐÑTܾBq¡˜‘¾¼ˆ©þp}ÿ{º –h$z¦Aùî˜T`¬!jÛð»u›Nõ½¡ÛÌcÿ¹Þœ3±wýàÅ|ï)\×óNÉ Ýöc°Š\Wæ˜ÑƒLz]WË GàÇ+Z©ÏH4l¢Ñ&L™º· +Ö¯ÍS¸³X£³¾à'0Õ°Ø!ÿPòÌiø—|Òè3¹Û6'‘GqPUÊ‘’BL±:ÇKQ>t_<3L›Ô¨±ghsAÅÕµ"«¡V*aMÛ¤2&š±Ë&KÇç‚péoࡳè5³zЦøA–Ú ñS½µ >b³õ[W¹L™¥Ö¯‚.˜R'ë($_oq,/ÇOää.‚vŸŠ‹Àº²?å· [>9o]¬åáxñ57J'w/´ªò~Éh¼WÆEÃKãk) è‹•™Â†'ž©²5Œu›L¶æ#gã¬òm¦Ò@¸O/‰.]g &‹ä%D:¾ovö÷ÍYÓ¸³ÀÏ9ûí!Í i:„g4ÑT†“îiˆ•F:VåGö*¦žuƒjFù¾EöàHŸë”·d½ùT‡p²k‰bÕæŠW$_³œùœ±|iRèVi QwŸ·æŠkž›4°*²çĦü\¢¤‚o¿ú{ŸÄª²­ujªzJf©a£}9½w]†IŠcóA~ÁÓ· (ôûÍòÌJ{uÙH]ºjåÜè×Z…bÇðá_ä²ôŠ÷n­ šÆa ¯¹^äÉÙEe”…¯tÃØK:ž[é"hW³ÈuaþØï>4¢Ã|«aaV0)@ƒ+;ð^ç^ç⇥ùØÝSŽþ£˜ƒLšbi!ïCöƒU\ ª:Ê…{.)_gÇL€Ù´ÙÎÈEœç¸³RñˆÄM’Šmhú$QO Sz ‚‹î±îa¶5òx%YKÏðr ò´…4ž„lë7\ÅP>Sƒ‚ù.ÍÒoª¬yvUÜpN·m3¾TSÚñKya©²´q*ãÆ¨³w™n¿óžŠð)Ÿ0½~> Ióœu5fµ\† œ“λ'íå§¢°½÷)avì2Ú¶H§“0笄|’ßxÅš. ‘˜U¥‘µžóºÄZå£t’¾Ü0? (4Aü–AD¯¶zˆð›%gÉ«›£”£"ê%©›ٔ۔ܑ›ë¼›M‰þIMåCcúðo³•JÉÝœDê5¨Œ[¡RVPzíjÄ@Ø4µß’%fb¦GRCò‘1ΫeAú9=WîÒ¼*¬1)ß©€þGÌÝ3¼ÈK­ •–Óí}gä7ˆþkœ×\QFÈñuò5âØŽžÛBªÛ ½y´ j2ª¦1ˆxyÊM›2ÉúEÚ<Ë‘U¿nãëõyÞò³3îŠzÎÉŽ¤¢kŸ oýFo!FX6¶ÅpTÙª¡ÎßNœg8ÆÂ¥c,Œàõ‡µIP¢NhÕ´¤0)™u²Ê¹¹Ÿ#¦Ç“*¾òB{u¡”ãVú¨'âZ.añx¸6n%u–ÊÕÄVuûÍäë±m›Ú1]ê"ŒGè6MˆvY#;#­tÛõô²¶/T” &ƒžñ1VÿúUSªÀÎæÆâzVåO.´ïVˆôÉœ©ÐL„(nglOðùÛ¾Aq,09bñГ‚ ¨NÑÝåÈ4ßÅÑ“•h|µ:ж™LÂ[Ür†;#ÆÅ4½…Ê–cÓ§cÛäqW˜—¥–ûJ.rx„&BI¯Pמ‰ÅîaPJõ£Æ[-xïÔa~K|9+ËRË2dÖ‚~š‰ ÚyLC£h–pmACß„rçÔ±d@êQX­˜^H:ªU&Àµq÷, ëm5N}. ZR=Å*_kž™q¹àÝsÄ/·2!^Ë)©¢¹kºæ°±Ò!鸲F¾ÜE‰…¨ê€KöÐéÈCÏmk…1gwĘ›e Jut4¡-Ò†úÒø íÍ£? øÛéçÀœ3Ú¾¿ÆlþlnÂì"Éb‹W™Ý‚ƒ é×ÎàS¥õµŽ?V¤lø‡¦¼Òsß•7k:d0;œr5U$ë°^\“ýÙ‚)ÚCIÈÜ2¯{t])¡ºØéý@óÙ9Ö׳ð3êŠæ¸×æän(<Öe7ë@§±ûqpŸssÖØfÖÞΤÉS!@G`ï,Žñ„½Æá±é—NÇ"R$àçp¼Ðõ•aŸ¸ïV)ƒ ›ˆ:i)•Aíåôé^¼q©wì~´¨Lƒº@et†¨Wº+)óKô‘¦æŒ¸:!m=3¹×ûùðøüÙ[nñ«Mn71¡¤{ Û÷V¼7¥ÞS`«|»>åB ½uýr>±qea +B(!fv¼h¥-üqK<¾vkTIÔÃê£ï ¨åU=Ö uæ®ES%¯Ä'RŠdƒå~ùLAÄ:õ€uþ¨E.KÊ*°iùëШ¿*õgOúÙ¸Œ'Ð(\hsñ>cE,{å#nû3I΂K˜ZhN \\:wñÞï6×w‚q_Ùä•HxØõ«ë˜]¥¢UFlÐ.&Ñšøow[ ¹X±U|}ùðýϧ¸„¬C3Âa®…Ûåè°S›Û< Ã{zÝ/I…~¬ÁülÔÝNpöqW´6ßÂë,3Åöþ¸²G5: y¸½`ŽÀxûk“Ðì¡Ö6æpNÃÄà ¦óõk $¥#-0øE˜»¦7£çÏ_âvC&1HÞ"*ÇH:0c4"¹{4lÆØLGÃûsZ`ÜO%b%ÎäYdæ›Pñ¸Î3I޽£|gÖ–jÇ*a$þ!rýÓ“ßS[ÅürLwCyĔ÷‰ÊõÄO›dÝÑÂ/qëîÞz±ûe ­åBÚóL[мš†{®Ÿ©aí$ân+ R¸Ó¥‘{8OÝQ|ÕÔŸ¾òDCøˆ·a*%µ©ÞÝDmj_`^Û ž:’ž¡¬^a?l]ßY£~”Üð{é¥6/»i.VaŸåò¡æºeTàÂpª<ÑBÑ(¦ÐޅРv^+à{Ú”|: †ËüòdÚöÅŠï>Ê7 ¢ö1œ×ó’c12 ‹31»*³à†ä…ÄÜY“#2W®D[BL 9’Õï6' œ+ÌC‰DèÙüþ¡°K”l¿°øæKD]:¿Kkõ2¥› ©Ï…­ ´AÆš¾aâú£Ð¨¤º“¿óîâ$x¶ÖÖÎx´A÷ûlAOчì°§ºÇ,(Ò¡ˆIÂRØÃâ:í´« D&åJ“L¡/_4v¼2„£JYh;LYRzá-¸'£DÖ)‹êã ÕŒö¢[2"­(ˆ5jÐÝorë6M/nðÀQÿœ“›ˆ9_"ìjÓæ=ðU?µ³JÁw`­´¦C=CÙ·áî°O U ÙŠž]•[ÿlãÝ÷ŠÛŠ•á8Gwc¿Ç¥ôï÷ÀäéAÖ6•Æê ûÎ@Ü%£bZººøñ÷5« /úTÑØÎÇÞE¬’ˆ’“¿jôí̆ o8Œ)«$V~?®Ï‰©¦ðS‰šü|…›‘ÆÙÃ;ù0ÆKn=ÜCšãæåÕ,é-'ÌFQús—{¶ûJäÂ~Þß\دIûÉrííùtêc{Ç7RTc1oxÕ4ùŠçìz{q,(šIä–¶W¥Fw§i=&*zT$•›Ûî2ñ§zvNøTìW‰z/0! úˆZnäí”þ;R§E Áé;¼_Z Êtõ\t…¢_1GJg{è Æß×ÅÇ jpó ÌÖDz|)Ò )ˆE‘a9§-ù5bа?E¥?m ¬a.òÁ5w˜OFOµÜN¬Òî‰ñ}ºÅé„4ù5Ç*IÀìTø¼ôC5=“D ÆIÑäáZƒêòúk€ÙyŒMÊX½/â@*ò½i_D@‹õþêEæ&{Óéß´ŽË^—QébÅNΞ]Ö}0ÐPLdS…„ö_95üe¡É„‰1òNðË@ðr¾§ËH" ýÙ4]¨8¸TàPa˜¢•bK)ôù¨ã\èæ£-îêØå¼~ùµb¥úµˆŸ¿W»‹Îì ÍáÍIZ_’m…óµÕA:i1ŠLäØô"FóÒ“%õÚ6këÁ´~@šŠÛr9QÚδJögÔ(É—OR‹AGA6]~؆¢¶Ÿ¸º®ãç—UN«öÐG¿4šcntx–ß ÁŽ‘†ÞSË€Éé\©ªWÄ$¹\0Hí»4é}ãYsrLŽ@ûÐWYÚñ g›çƒÄ]¬vvszW\æªÀ–š&–\Ëúøñá>ßvìÓ/?&bÿÎñ]“=†²ý ¶Ú¥ r k7ê,Ô!ôÐLGú$y¿EŠTW;‘ÍûðF<KXF.Þn/©W'Ö4¢¥MÍC2ÿœdAWr2²Uqè›è äEm¸Ö!¤ÈÏë’>˜[.ź‹ñí˜ÙИ2˜ŸÃj`‚.}7 Ï«º¬žÄŸJÁžÉ+ü^âù¨Þ|6Û‡9!Žð¢âù½+¯é”läçú:ô¥ÜÂPs=¢ÄNîN‚F­ä KÍIÐÁ(À5*ë«)ùBFqâ£ô»àÍP–H&¿:M…Ü“.X‹{¹V?ß6ù#K¦iJÌ4ŸòÌÙ^íK×&j°øÞ´7F’ŸaÖ¢y©Ô:=§¬Ã‘kÅi•W*EožVÜâElজNñdxkô‘#¢8ü¹§ÏtUF+ØfK8Cåɵh}¬2\ؙ󳥘Mƒþ)*3é±ÖU“ÇÍá‰0ª˜UŒZÂéJ¬ÌŽ(©·‰Œþ#–bÂ>´ª6ù~_õnÖ›•cž—Î#†­§)£1Aî‚Å!­†Üý~¸Ýæ+5Äêoy&õ!ß/(œ Û¢¦<_Y±u¨`§ÌÕÑ©[”ª¬kÄÒjM›’E¼R"ÈhG\<&Ò‹÷¥<ɵÎèµïÆ:Úeoö–k¶0kéPẌ7ønd˘ì?‰œñP ×É&ÃÞ3ð­Þ¨EYœl{Ï­~vË«üfH–ªÄiÐ~’¨€æESµÃZRçAlØþ≠Ey;&nÕ¶è¢ÎëÉ^æ&¹£½ì{Ë9:{ˆ§s~·7-‹oª“«5¤Éˆ¼nñQ9‡eSÎMsïÝñ¢ØbÄ9Ðt_·â˜ï9µ–O€ŽÜFÜ,Ûu¥êm+ t:gn6kÂ’„«Áˆ¡’Y߃^7¬Z\JÞâKÃK¡´FKå;ÇžS2Wuç-f=³¤ø¢D2š5ÀOUŒv“¹Se/þ•ÅmZ R\e–ÔLàï^ArW¥JÓ¾Ë=Î÷zízÁJÇïR|Q®ÝÉ/Ã:«Ý £äÕ‰§W%l›‚IIã6ÞïDÕò<„‚ÅTÂ6ÔÆü‘¬Éúu{dÍ;šS°bwYhÃ+rº˜—Òº§¤¨t©8ï|ßê² ™ouª‰WaÖ´¸ÅZ›Jà3@ÄÈi+5pÞ Yôº£­Ö½]›Ò‹ô>õòã@„Äæ,Ÿ*üÉ3š¯¶ÖŽô½É(ËéÙ:LruvïÈR“]Ïøû¹ Ñ·~TQæ@Çx8óÁóè·¦©®…K¡DWöW;†³TyTînÇpò/Tþ+âLç!©Œ³a,é^O±ˆBç$3sª5ƒTÛ±«ì?g—^ÆÖNS,·áÐHÚ˜Û‰ØWÀœøþJ*Îd£Zá ø<ç| 4÷?¿ìܯ>ù™CXеvdæ_($sñÐ3…] *ÜÐ Ëgr·è¢¹Å×éW h2Š÷þÚa6¹)p-MÕÔÛ–³Ìglò|”¶,´ôÓ×â·S‚ˆùE ·0ðÝ7œq›G¶ ÁÂëëGâ›vã7ŠSÝ„H|MλÉw¬ à÷WåÇ<}š[b! 1\F7^ý«XOoo+ûBýæy%:ÏGS½•èJ}ëEãðdä¬i‘ÂCC¿ñâ GÆàœWÖþ¨A¿„̹‘<„@¤v7~—š£5,Nù9`¥ŸIvÛ-eQ+‡'bmã‚s¾®fnƒò=_K­yÉÌ»ê]È%|õæ¡N7½ÃhoŽpXäÓÀ/èŸ+(d Hòÿ9X qÜZWÔ°Ä€Í UEÃ~3?üOÔ÷™Ò|»¹žZW!2Ø–)¨6 ÉË èBŒÑ³S½–£— bt;=W!(áûçuYÚ›î\vsä ^9&‘Ý¥ù÷G‹•7Í/Ö°?‰Ÿ®|& × Ôì$à26¢jÍpíJ—~Ö87ž8yö…4·Œ q¦0Z/.8¢ |ÃÂzgée)y]êÉl~þE?®~ÔXJúó3~}>öÖežj0DÛk7ÒärޝFÝ9–B)I!™þI7±±ß'{­ÊH€nR}ä&¡;̶GLæo]N€”-^¾!j6'ÛR»³û=J¸"…¼´Ö­,:4‚¿£rrò S åÀ×e] ?^¡ÈŠ·X<äûO/ˆTrý•¨ñ_²#¤5«ˆ›¸Và‰ÄW[ ‡\˜`;¶Ð^ÌrOÑUO=¦Ct.žj¿™^(á›ü®Ø­!ãÜmµqÖ†ãZc¾A?†2sû/•$n~}ê¢ÍÙä&oë(\ŸlÙê±°€° cã"W‚oßj ”FÀexÕ5HP2’L£&¹!Ûâ誥‘î8ýÎSج!ï·¾çÁeÊÚ}æßñǦ÷–.1ƒœŽ®*·›—lÕokkš”xbZ£¹UÝrw~ÈD‚ÎõRf颛àÅBk¶^‚ UyNõ†­r\¬î'×ÍUÄ@ñø5ÔûìÁÊúß¡†hmm_ð9˜‰â6{l¼72ЃXŠ8n €×Ò2âD ǾˆÍ´óö„8ßaË×CßRóU¦)ÆNuœÜuüB¯ä„OhüE ŸÓ,à@¨Š kæ×OSíŽQ[ ÆÀ®ÁW#P'Û¨¦­KÈÿ=Nôèà>“g×°Þ™5Ÿï̱úÒqц,/(* ‚øüŒ>º3ž ÝaζîyÕoßygø™›H©¢œGãÕm>5Ñzø”¯ë:Ž ÁÌ>°v(ãq‘ OÁ²=H²ë*GÏÞ°lžw)ºñ ?™él[=ÝW\Hq:v‡ôð¾Ç•F,|kò!N,¸vQõ œŠIZ§TÍi+¯7ûl°‹ºk—S‰u†C5ZV±»¡ÊìñœÍ¼R¢¿FWÂcœ›âÝsåëSJÏDךL`î¡«¦‘©2בm]¶ÚíòÜè3Õi]U2†<¤Ýœím¢¹Jœ2ZFù]FßdÆp®˜öE¼û˜Ò4 […+ö; òÙ4ÕË÷ïUʶ¡Ûçz†è3ñMGÎF™ ­è9ª”‰ ‰«æPhP_ÆP<Û"V“Þ͸Ü0%áS¤Ad°=)°QšNpíUÏìÒ@¹f¡°&=‘^ÓŽU(KÝZ'mWCƒu) ¯†‡#ô󆲩jóè²Ò'ÙyûÜ uU0<´'º s ¶û ¡÷B ©G‡š3©ñˆy•‡4½9›Þ‹™Ç¶Hλ°yGˆ +BÒßÑu£ ºTJÔhO ëŸÃ]0¬=ÕêΘït.ƒ‹àHXt¿Ýᬞõ£p—Ä‚ež?ÓpŠ1͸¡!D  K\Ĭ@+ã_˜å©ë¼!¦JË0§²LZåÈÇ$a`®&Íš=—б°NÇã>Û èmÎW {ôÖ€+Âò!Ȉ´å¹²„_ãì`¹tš~¨Ò@!è Ž½G%ÑÜ9…MsÝ wè´üAKV„"~Êxæ)ß&9r;žàÿ`c¹{°†7&°…5/{ÁÅy|²g‚±~1òê(AxZØÓ!'XZfZÐ]’LÚh.³='|ËŸñ‹æ6­o仪«^_ºIG¼á°BN‰,bÂWê»Eïk¯¦àæ¢å•àxÑ]懩 ~ÜÑŠFv{ª­ú+t¬š‹Aüù+}`øj½}?*çݶ-ØB–2z¢¬ïðJ[ñ…aä&Û¶±ßb–,¢ýD¢Ü`|¾#ÜGñ$Û-k&°~œAÔ9s²:W`¬ èX€øª7ÚM‚èa6Ì‹Ñ1(ù˜$brx¡ºÊ¯“u ‡°%°ZH0 Oë)Wc8Äï÷N m Fll힇³UAT0ÚRˆ×›ÔDyêOF;Kã!©˜†3L9Îd¾dùÐKÌH1íƒ÷ø…"•³’¯Ú‘Ú¸R×îu8{¼Ï†5‡7óWµ‹}=þÉ k¸†Å,ÓS˜ØÑÛwcî0)çÀz<Ô¢#½<»ŸJ~iò04e^5‘^Íïsã$†Ž<–:)7j¹€ÐÀ豓tö­ÀöŽˆ}•×K#ùd9(9 >ðË/œª{ÎÑ0ÕJ*@{جH¨Œà!Ä‘ª4 ˜xie'Ü¥]qšW¬Òz”(òÌr< #­zûq ¯ß¦Uîw©\§‡=ùáþÆTlÕÉÚofJÎ’© ‰ÝS:ic‹´¸Ÿõ©ÁTsÒ¤Nôp˜H¶_&æ¢+×CÝüožù‹ÀG æ>½Ñuü~Ši.ÚÛ„ ëbkiúj¨›^(õÙR«­‘óîb·¡ï‹y­jö5;¿ï£œ£‰4ß#ÆM&¸ásÍ.#3«¦§œÈ`> stream xÚ´ùeTÜï’5 ãîî4îîîîîNãÐHãÁ înÁ`Á\‚Áƒ[pç!ÿsÏÌ™óÎ×w±èfWÕ®ªß¾ª.X …º‹„5È( r³p°² ”U´,\<8ØY$ANÖj–Nönž@'+;;7 ”;Ðlr‘¶|`;€šøîàdg@¢È]€îïNk€¥/@¶Ðöurè-þê 0‹¥…Ç»èbkïdx§H\}ÝímíÀsp±°üÍô—-É P´°ry{8Ú,\¬Ь*¬U÷»Ñ@rXí,œl €6P £%£©ÓTÓQ×b`}O¬åéê rÿ½HiiëÈ1¤%Tµe@]f€œŽ–ößWm Ë{ÿ¶ÌUíwÿß:ïé*2ÚÚê2lŸÀðº{Øÿ-û½Ñ¾wøŸÖÞ©6î ç èíÀ`WA66oooV[O0+ÈÝ–ÕÕéŸþ´íì=Þ wGÀû»;Ð ø0ž.Öïr‚í€ÿJð÷`ÊöV@à_’,è_Nçw)ßIïvð7ö.øoN§…<€ÀÿUÆÎÂ㮲ºº2ÀÙÂÞ t±p±z[€==æÿØÞ¿Ötÿjòtwÿ[Cå¿\îÿ]æ¿Z—½?™±“€…÷ž˜…‹§‡ß¿ió¿Û äâaïöøWF ÀÆÞ ø·{¿gfïòMEBUAVFK›Eù}ð\XT@ï기‚}ÀÿDÿÍ'!­,àgçppØß‡TÆÅZ äìüÞµÒ_ù¤íßuƒÜ}ÙþÏÙvty»øÿß>{k›¿'`íéʦãòצ ýÿï&¤ÿ±ÙÁvÐ ô±²cû[öŸ©ùkæøk~—#Àßä °±pòØÛßßü=,¼€°»'0Àÿßÿ!qð¬í­Àïÿ¾4HÿdWp±þe~ïä¿\ÿoèÿYX†÷mµ¹8ù¬6Hlª ðû`Ðÿÿgßþ£–¬§““ª…3þÿ’õ?c-œí|ÿWôDèÿöKÿ7Åxì=dí}€Öêö`+»Iû/»Øâ} $\l€Îuþ®–Óû ¿ßCö¯±w7ïøÞÇÓÊÑèáàçúÇ|—â?~×ÿo»6 u C9u¦ÿsvþ •q±YÛ»Ø8yxîî¾HìïÁÉÃðçxŸqk Ï?`cuß)WOpÀäŽô÷Tùøl*MÿBü6ÕÿFüÜ6íÿFï‘ÿ¸ß}Vï;ð?vðß €Íößà;Áîß €Íþ ;€Íåßà{*пÁw®û¿Áw®Ç¿A^øßà{ŸžÿÀÿ­©úßû埕aÿ‘ÿßÅûÖ»ƒzöÖï¿tþ-DÅìnïcÄþ>ïïö÷¯ÿúÉä ùŸUý7¶¤$ÈÇŸ…û]<Î÷þw*wÀÿâZýëüg×Þ§á¿ðß ú­VAVBá™­U2%3Õ°4¬'ŸñDõ“aVrfº‰ ¤ ·)b¥!íÁ¹´¥ eyA“Àô—r}šp\§×õŽ´Úékk ñ‹@•@b4‰‰]VÐ\•åàê^J†CÅ‚bƒ î¹ÜÎäN2€ÎÄ‘”@wßC<ç÷7ÌË Jãêε"Xï²yŽ6w',Ÿe ¢âå™HðÛNbœÅ€Ä ãóâ¼ E8ׯ}Ø»qeb4MsÛ„®­ÄçŽóý…*/à ¹FQñðiʳëÄd¨¤IzCOÓâé}2_öบ¸ÉýÉvrÀmÓã|9NTIûJyq: šŒ*»fú©7}T ŧª4OFã Õs—º;•ñ€†IÚ˜ÆdÕó 0ºô ÿŸ `TôGà«9vw䛨î»éCá﹂­ÙÄ¡Aé4þsz0l?5¡{Êñ T“NîBÔ+ˆ:j줃×ÕÞ`¿< C—S5¥WD5ÊŒSL”3?¯ðÇáÆˆ¼(Ó"«º(ála3W>b‰ñ±Efr&T3õF%‚{^&\”ú~†")ç–¯Cp8Ö|K¦•ÀBzҤќ}{wߦHµÆÛ¨xß\‹r!C­: º½åxïº öˆS]§z•Ë|X¾Üa·¥nõÑ•<ëåç®0Òî!€Ãâ¾ážº=Ë¡´E'Ï *$[b°Q>W¨6­F îç†2¤é1 Ù5Þ¾bèñÚ4Ü'k Ã"“~bü/ÜÙ‹12MìžegÝ,n88$Ýz[:oLŠño¨ÔxB×c-Hª“±Aa”¿oÈ!AÄaÑ »KöehŠÖŸŠIJ4œ‚®ãpzÒ¾è÷÷ã:ƒ‰Þênp`ô¹9žÏ™`ht |鱈êIu·¥"í˜LŸ„h3ØçÉ…©J]›§=½QºZݹó@8<¾5j"•ӳݪëõŒª”ú·SaÃmÕߌfV„Ïôòý~Èú ¹Ø›`þüù\¥¥ÉFÍl”"S7cvÆxZƒ$"¡ODéàáGÝP˽ÈM+*¯9Óáï#pUÔÚé=-CsˆÁw…rã2ZÓ#¦‚¨½dÛyFÒ#t×d‰LìF´jÑHn:P1÷õû– ‘mwû@fÃÃLÙpÅ´&³‰ëv[;§V1oéŠãÐë‰<‚­ûu/I§W²<*t ç¾ÛÉ“¬Äéí`šbf¯à¡éùHÃÒ&þ”:âoæï%}ºê]Yé@)tö»ƒ»ŒÒ&™gçó5$ e¾oØ(•ÿÄöÔ¢ âVøÄRh»ÿÊcwó@¶íÉ«gŸìò§Ïµß²TKØJQªWÞx;ÒÞ„)pþ ªUÿ‰¶¸åNý”H*àVy€<šÐ´Ê'WsQ#Êe”Ï{M)ÍÆ<$¡ú»Yôe.ÙëøG #Þ„¼µlÒ÷4Oºe½9ÿ2˜ˆÛå¶ZÁ1kÑ%4¡ØÍ“3!ÝÒ%†ÌÐ/í;‚ÂZ„­ÈÜM‚ãýtŸBwYÊ•™9„áÑÕ¤è%nþWSšûÏ£÷pbE –²^¨èÌi$Ôãü”VºtÌI|ˆUîÐ0M&Ã$8gŒ|^÷!ìÉk¦§äŠë‡I3–lå,M)@1·h[œ¯Ó^§þ¯MážÖÄ<‘tº:G«Ï¬)Óé˺>Ƨ¡F­¹ ªÄ%ƒSdP4òóÀu)lZ$Œ4—IP_œŸÐêÒB÷1 œqw*Þ0Ù ß-j#^l3ûÍ¢VÕ³g™ÄKÊŠ}ž§nË‹t®5ªðt’?7ô|!èî²—¿ø¼Å-¦V¾V2ÐŒì•8±ïï0z°Nóëγ۔ìr²5wÆØª|îÉà 8IŠîø³Ú"$ì-ÚvÈHÑꃟ¿O—{‰òüìÊm}”%á‡OuI_$äsE£*p"¨Ùù¹¾â˱jõ¼dfîõ²lZÔmÃl#ŠççèÍÃ’|cIêß9&»s„E3œÅ„¤ð¸Ûâ»]K]C˜½­a‘Ð }4ÙP{g u+F²wHdI’Úâ(ÐV2™ø8ØJ⯩Mu°W‘FÒ·—rÛW³ÿð†¼WÐD毴è\›È;Þ<@G“àbÄeijFÀ¦ ® ®4ï‚¥½|„ˆ6”Ô¤wU8A0É´ï2K6´]–,èS4âçÞ®…—/"èS¨‚Ñ™#{¿¾úIg¼øË1_}¬TjU¢[Õsð_æA¡7ÿ¤ é¢èÌlGtpAª—Rö@—‹(É<~ìBTÝZR«ž©gZ»¥œv¬uåqN]ɺvú]ýSŠãÂÎàí9”á¾ÙBeºâ±ñk}j›™¦À&Ù’}Ž#>÷/‰uC„&ܲÈÊ]”Ï“q@–Å1óD™z4„kØú (M‘¹pjuY}M*Ê_§qJÍ!"9òØr&_Ê®"Rr‘`Ù­Ù+ÐÆÂë~àp{PĺhܳöÞ9îOƧvþŠùõ‘ýö˜t™VË-PÍ+Ù.ñçG²^QÍðÆ7ÈQœÈDü ¦µÜ^Y¦Q+ó !a0·A Bì‘ÂÐŒ³åvýuRÎ÷–G†ÌÝã¯mås¶OÀ8Aé<M‡Ún6³25¹û/°rÅŸ'¯ÉÊ嘲åáfØè³B°ÄÍ‚/›¤5ï’ÒݦԌàx?jÆñK6 ÕïËÐ’WìV jñÖþà„©ÚéT[‘‹C6úº²ŠË=Íræ ^šÛÍZ"ì~q¬Õ–ÖXŸÏ½Yý\ceº^Èò­Þ>Mž‰šñbÍ oT-îæ÷c³=ßæ]îÁ…$Ç2NîŸí/4ñ:džc%)pLkMánö_¿yl“Úç ´Ún)ZºÞØ·b$fÉv4I²ÜT5jLŠs¬±Ÿ‡ÅcªX¿°9Ÿp8égljŠƒ­ŽÜ:%p>r§Y|­LsôÙ4ÆÐ’r49 Ë|ÔHw* Ñ­Ïãúñ'Mâ„ >RsE}ÛÚÑ}Hä¦%l»iÈ•OM3‹q:’mLW.Ý@ÐÝ> ÍIÌ oã÷Òz~Ú2 âŽ{~d"…ÛT£U!çÏœþ(”¤„äbø*Æé9¸õOy™=üülu‰©õÞ+ ÑÕöB:p¹¹-¼Ïk2$ê#޽5¢P\²o®¼)¶[Ï-‚Õxy8H\€‚ 4yãŒpߟ­îDèíþ½žì§ÂÐ~A*)#5A¾h r°Ä{Ü‹l <ñÇ0:<»Š–=üÁEñ/Ø~ÕéÏ$¹›UƤ֓Bê´Ù‚ñ£FF9R[_#e1ŠNŒ%1{rÈÞöª¡Ž3à8vlΪàY³óâØ™_|pQ¨Ù5Påëéï÷Šæ&JŒ£ ŽZGÜ Ô%ÿphHpÇÉ@<õ,Q¬‹ù~U‚º >>3&ó-Eë!] eåØC3‹ÐœúLÿ¤"üð€÷€+ 9¯ã7TM !{šúòÉ7.›¬„ì»KÝ Ë׆@B&.%̃ù0Ì·|#† C°¹ú]ÊáºR³À¡Š¶A ðmãÌ rh£ª;5ïcÅÔ¿ÐxÄJ³AyáG>X•©xáÖ|ÆÿƒÄQ ýô\p,1ªÙ?ª\ýÂYífÉNt›(A$íeÕÇË?OÏLAŒ/m¹Ù@bò6¾`ñð‘uúIEâƱê{®åÉjù(G7êšrúÛ. áE HÖø}ÆIœ»¥xøµ,@½êäZ3÷¾?MiV•×l¼’×¹!‘&}^³Kéx§·|²æÑ˜nS#îÐÕÎa‹¼û0­âþ)›g« ¹ Ð÷%z«6×Ô6xäË(3œûTVv#+n=t’Z²ni”ó† ëÕ§]¬Ëýxxe¤õÕăWEq$7‰Ëfzëºr\¯ÉÝ‚µ;kl¶lÑY;8RÆx Á== †èS&xÀ ‹C aQ;'ˆûµÕ~_‚ð¦ExSÏÁH§›±ýôc¼Ô­•ÔcÓ§í¹ÒÁÔ8Uê¤|]ÈfW£m)wÝ <ˆ4 …šÕ8D!/ ßzÂ=w;gød>0´š\wDS‰Š}îðª8}ÉzFûØ@÷´/–Œ°Sñô–ÄûÂ;vÛ»•<¢ƒËÑYlNÈ) ö$`?Gåëy¿¯l¤)¡sëèÁ1â%:LÖpÛ×Âí•È*ÅÈd9g´•Ñò±;p€­+¯í(ÔJ‹VßHµ/f¸#¦jß„Ü=U˜!ž–„ú#%tQeâ?°"LBÂZ{š5Ûn_5Ä ³!‘Iž5Õ);-í Ø3éx0 ( í §f ŒŒèì][oóC¥¶¥ûÌíP´ÕWÙŠ5MrÇ ±©ôÎÕÎi½‚‹©ç.;\‡hZûBžŒðÔ62ÊE+žèCŽfÕ°l¼D2 á«EâÐÓûÇ=ª]œˆëË !ź¶ÜË ¨7ùjͰ6¨†ÅÎÚ;•ÛÝÿ@ãˆô«™j-ë&øb†å7'*f'*§,ÙrQ|w­ 1¦›ò·ÕkÑwá¾`|£„ØÏÐ"Ý=¶á …3ßrj=d\W7Kš~ú ’ ¡rÛ°- ¤€' ï·Ɉ™u™ô¾ »öîO*ÖrRœ¤u^ƒ&¶¨'äâ!«ˆíQ×äXKk .~(#3 Ni³§œ^w=wfkû£ÉÁµŠË7’¿'t4Ñ`eÚ>@Ïô-Ox^]ïAÝÞpý-f)ñYÉÙrõ-­@ÏA—âg“ne/ ~)uSƆ'³ôï‰OßÁ  @7s±ðÉ–ÝÑÈôÃ\¹‰­Ÿð¢ˆ‡DŠa”HÐö] bÝi«jºH$D÷1ëÎ-sÏ_4Æ&ùú¸xbjb«Ò¾¤ îM´/ÖÃQÂÌ:wÛ*¿š'AåHÍ`ïÐd¡à›Ä²¥B*ñsæ®ÙƒíÝw-ˆ¦bøƒ–±>D بþ¡œ$Ͱˆ–ó+Ð2çÓM M©©WÏ}õðG󾯵÷ž:ùãG‡ÏÌ9)”såÿ³OÍpƒß–ó‚$ÌFW®…¶ÖD!{(&†“'¸gx 6•<Öh AЫÁYMkHÁŠ<ÑJDXAê™í üHLjA<@Í/‹ÀH€éì€.œ‡“V¼oPi™~¸û6ÙÞS°‘QÓ Du %ìJ2‹¬cÑÈF \eèöäWá]k$ýüƒÒÉ >àw²ƒ©Œ•Sƒ)MkÈ´ñÐ$%Á“Ûú~ìkF®ž¡«|+‚óøJcÛuLlÎÓ*­Á*ÿ×­ªrXc|×gÞò¼ÎBG—:á‘\YuæDö“›àÕîkP'{‘÷4ú ¯£aÚ&©4**%‘L Úýõ|0ƒNË_}¦¼Oàše‡0ö¼WorE³˜UNIÜaãC"Y¹$^‹—ï<ˆ¹~:8´)ÊЫ U³x‘c°%Ñ'Åœ A9Ó …&Ô¤röx¹ƒÐ£{x÷Ñn‰þϘššóv“wW סòHöð(–'|9g_Ô‡([J™³|O! é¾ïwac 5âËÊ¢˜º$ŒÌ®´(êÂ!r“ú¿2É‘}ÞëïÊqxC;ލwÊQP¯HYÀ×RÛ‡hyS+¢bYšUÍôS³Ò}ð¡Çœ¶hr÷î}HöŽ ô;ÊË|­]qXÕ=] «“ u€ªÜÆ6…¨ãæ­…ÏX˜ì,¿´þC«^t29ÛÁ^,•ikˆ»áÐ-oÊ‘0jîcfî´âbÀNHTyÉC¶{Ð:bV½2à€î£šÐÛí¬bÅ""#÷:øh×é†Âbçšö]3(Ž9¾ú"¶OlÕSu5¢+{ÿ¥^s)‡ð«ã,-€Ip>˜ÂE‡.†ŸÆ£+EÊ:†x[7ï6ñ.AùóçŸ<áÈja3+õ#¶ûPŠ;ðW FNw•ðô¼˜ øKþdp,b Æ„:ž×Ü*ôpù·ÉI*$ؾ–ÊbhÝj€>$ý–¶ÊãÆg7b€›³ÕÅfìÒht¶á‹»Êø}>ì²ÍËYËJðr­ $#Óf<ª'˸F¡ H Z÷=J©(D¤@Z+O£’n>Q[ç=MgrP¸€v°WÇSȘ‚€sÕŸ¯B h‘ ÐÜðİ:¨:wê mæ‰auVRLS瓊}ö^Õ*Á»OÌÖ#yªþÞwhƒâœ —. Ý–z×?zúøÕKuJû‚ðŸËÇrP²ß%«Ÿbÿµíƒ¨œ_ ¡tꎭœƒüåðYü5²è¡D6—jVäoaŽì1ºŒŽ¿Ë­/™1¶#CDñ&: IL ;šž|Å©ùŒîRˆ>Ci{tEÕ·YͶrR†õø†.Èt±×IúûG‡ðô‹Œ<þФg|¯{Lüòª˜T=ÉÞ0 =î[_#Ìüá`¡Á¨Ðe|w«TÒ¨!½?e´†Jö{¤ÈØýÇ"¿Ikýø‹+d]eYK*Æñ\Ë7û[ÏmmyϨ·x`H%XésûxÚÑS~!¢M|¹rkÔù{LmöX‘®©~‘hèÄEŽç«òÉån+! v¼¤^'–JŒ у’ ~çgl)$-M ìTµqæö›éõÃîÙ(“ôVù¹óÏñ̃×›À+éOŠAß00âÇÌb,•Æ,¤Xp0>>®(Þ÷3¢ºP<êØ²QÚƒµÎõ*T«•ÏêªbXL=ãôòè£à±d^¶'§(í0x Ñb?Æq:`¶Ý<´3M@&±„î;~³*¹Ë"/ŽÄ4@äð™?8U ¾þÌw%v©!ˆÂë«í©È]U¨¶#å×.Ë)÷ç·äo½<«|µ®”¡Ò³^’òÏò.¶fHæ›.¨“Ié²u1„ûÞw¼fŠW×ÔÀ!Éñ˜Döeœá’½“}‹á1ql±Ì$l>YK+tľ~!áb-Z4SMÁç±/ÙãÖ•kfñGAN^êQ$Þjé ÊõÕ‘sz©B­'°Y¯œ $·˜¥Èؼ;(¥ýF¸œÃ³ºÔ•Âí ÁÕÎjÀžÃWø«j<‹‰äM˜ïû”HÔ#X#úMˆ°-Nß×ù®ÜlŸ¦‹'sn$MüšP¶´’¨oÁ!œ6õ)SŸ¿UŽ€Ô@îY˜.A·1aòüŸØ5ùfwm ÏÖCö4¸?ÄÃÜ’wÊGB‘1R)ž}ï•(UéÞeÜÃq¾Mߌí‘sÌL8˜«3šG6ïCöûÀ\‹‚ºOþíH½"-5%+é¸éâ«\®Ý’PVþ·ÄE>¶Eœ¦r 2MpòjKÝ'ˆ¢/fL_)¦ Ôt#¿‹õºgÓŠ5U4Æp¤ÔgSºZß%%¹äÀ|]‘¯È(-6åîôúcGÄz÷LA†zÊÍÝ7½MPÚòeýç$‹à9øq›Ç’‡ÅªeOUOŸšªÏP‚(5Ólq‹|^êu=CÓ äD_îÇ^_ì¿«™fM“€³mŒRªO¥Ÿ¨N˜ZŽxè=³Ê³Çëò Ÿ"Þ°"¦ ¥ î:g+wæ)¼ÃP„Œ¤QËHŒ§jb>‹Çm×-ä»kÃRhùq•kR3NÝñMeHÊK««¬W¾Tµ‡>8Oœ§¿Ž²sßé›»˜z’°n·‚庶üö㆒쭌`I. ÞNŠ8ä²Åø-9ÛD±dsßE` +7tÄú&7míi·siÀ­Ct•ëðVLSœ€õ`›ÜOŒü’³uïB§_&¿~F wàR”¢Î«:‘ûퟔñɇ#Ä»L)Ë_u°K]ú2?ß|¶èck)ùm[L»β sûüRÞÅô0J`ÒdfÏA÷¦ômц?I…ÍèëVѾ /}ÂIx›3‡vw¬4Ob÷ùî«onÌ7!…ÄD]‹~¸tܯh™éÑëŸèœ‘0]C\æ!ÎxÌYU[~6sÔð5ÒzXHœÇ#‡¡2;þ¬M(²ø'$ä ×&×ÁùÏ͹s„÷žmªšrÍ()8+{ÙŠóáùn3+å+aãñ‡é}*×E[/)Eþ­LÔ„’)ñ‘ö'i€~¶¥Ëhr´Dï;d9’)2q­uné-!¾˜…H²1vLxïì6ÉÆÉ…B7Å@ËÇ—^ûÛ‡tõ£ÖLaxÓ"%vÓŽì™q?¹¢€LZ…?¿« õ(Iî®òîó _̪røçy¿5;Û/üHÍÊ]‰óDkVDY63å)ØÑ±ÆGóŽ0ƒ*Ã@„’;E:Ùƒâ‹(ÿàû óþeÊ^ ìBtË»2ßgO6î{oºÁiŸ…¡?81=ͲÔBíÁŸM¹T>ñ)æ;AÛµÊ;ˆÀYÊJDžò"$üžhGj‚¾r¶F!= áeglóÞð+ž'¬¶³d@HŸ…ZÿêBýÅéò³Ÿ³Ê£;pàÉ3ÍbY&#ÕhNy¸€LÏ„þ+¿Ü‚o ™p(úíY‡Ùl3Õê{IÖCn·aÐæÞÊœZÞ¯‚`¨x¾± qÛâx‰ä ð&™I¸Ÿ‡‰‡¿™6„ï_¿\¼c=‘å|U$â:¿é4#¯ Rÿî‡@Od#;TÇ Yàúòš;c² aáXù<Û凮 ¥cow”熋 +Ñ£04åzVq£}±{ÂGì·àÔ;/J>­å Ƶ²Jˆº?%\JyÜOIKãêki'z–:,A‘n¶í ø#ç6aÞ²ÊT–Þ‚Sý`4þë,h t~+%/cåØÍ”è=ERζô»ÞWãL½W÷t+ÃIb;>Ÿëuøô¦@O4pÄÄ<%"D—¿èÒ¡³m^O:mðÑÏøg'ãùJf-Å.Ÿ3Å“«3- ãªÍäwœ¨Š§Cä5)àÜžyy–ÌŸœˆÂÏÖ`±%­ª]ÚlÖÅîØó³Z•@GÙSY-ħ)õY}ã,0{ºS3GÉ ƒËåÜìf,Sb>Cóó^,ï§õú GŒË $T¬X*–œ|jµ‰‚ ¶?¼CNÜ|ÝN†±J¦C_¤“—sêªr»gÃ.–]*ò*Òiâ.ú é”Ù—:傺î›mžV®P¥o¸bÄ÷õ ém·P«¤·”DÁBöc •†éWý(UÚò3§GÓ#škܯŠó ”XZ‰(%´B…_˜Mµˆ€¬jŠþØÆ»ý!!Ú…-hŒg%<-=ÛÇá¡<ŸÁ¢öÌdš¿_5´…M%I¤óxuùæë j|Mû),¦ †v:q`“¿ø(Ëàý5æ% Öó¡ßôãåI0ñ"û Ø–<,:\/tN]$ïÔ@Û< è{«Š á®áoiêkÅq‡`:)«,r+-%œDJ€°s×Â]½Ò#òtF¯€-,vœˆCŒwJ J»ýiÌ;V(&¨Úyg~îÅ„ ‹A (;À,²5Ž·Jd£kƒ+ñ.”ï•PŸHÿfGî<8æ8\ÆÜ„$ÿ¥ÎÑ#â9»ÌÜÙÉ·k‡åîs#0 KÐUüTÂÂ÷çUÊ Oï*úž ð:r”ŒS©’YñSÕ±•L׋Š»Â½fîϘώʬc{B\€>“¶ÆÉsÅq\ZÞí ãZÓ.rï‹îuñ1°D+ê2ñ|©­º ûº¸Vn¿Bq)²+“ÄR”lòüˆö¿AÔïöœË ùGcÓ°À›P,Mìý·W#Ú¢K»ÏürަƒžØ ×ÜMÊéà„s E‰ -c˜Ÿ¯» ŪZ癬>lÎ,8ê EHÐÀ¶>—Õ¦ú­¼Ég­¸ÚåZ.]›—ë(2ŸåQꠌѦ8ºÍ]Vý9ª5Æè­ ÔËýºÖx$_1 <`(¦®¾^š­+¡)Œ0¦&ñ¡ ›8.q|Ë?.‹),½ñþTÊh3ÐøY¡jâø´<(ì1›²<8Sš´Dƒ4qs'LgÏeþ‰¥yý#?åð:â®FïLVÔ³Ÿñ•"~gl{þ½?vž»À“”UšKÛÙÔa÷z,´Kk¤h•¿¼ZUöÁ©&‡¡/­V<åîGE:e°o¸LgèÅÈ”bÛäæ<–%t´&qô6k·¤øÔ` |RU"ëò­ü+åÇÂXØ/mÀ@²`V¾ýÏå_|ùbÄ„ ÔÕ” ªLæ_à›¿Å‘Ã¯yt5¨\4'¡n¥w„|<6â:róZë¶¡ìÜùzpÌ7ûS|,b£k1IzÆ,•ÃýíÕØù·bkt¯€§¶~ÏvÂ:Á¨d›¸,VøxÒtÀÅ£ªˆsÃYB’¾Wóų÷e_Y ñú†Iü¯Ì·3‰¦|tñ…O¸L7ûx?teow+Œš¾Ñônx$´.¨G°gÕ9Štµ‡ÕÊŽ¼Ò8Ëâ¶ÂH×ôú·ÓRôŽ©.ä[³Ö}ÁyibÒIïDv”pžè2ð™_JζOÍÁ™Lí«UÿmöÆÖEìùL¢Î{,£œ¸/ܬ´ÓÃ&µ¸†ú=¤VÖÙyËYɬ ,]6K€Ò±)°*âH<3*£ý®°Ù}öám8ѯÁ G²áø² A–ÛÃ+JjCaT È+?,«é…böUn ÷L›BK¹.Gʦçì:<kD)@¾ŠÎ'ª+qèlDO5ç·ZÈêÕoç_¬˜í=dœ1„½¤âˆ&g×¹é9{¶r˜âP±?½ï7—ü4>ô«Ò°v«ÔÏølÅÕ‹¹`âå4cÉé¿`ßGÛÙÛb»XÛ]½d-ó»qA~·…Ïë Gj3Èg‡¦Ù88¡`¾ß†_€r©`_äÿ ôê¿Îvréäø%’ºÀžÒ¢qЃ³Œ „ÝÔ Ï7${XHd@VÒHÑЉâ¬×::fLP+dQdbõasÙ"ðg*¡ý<ÚÁš,±]Sæõ^oBqÌ“GdvîÉ):'×Ïİl¨KßJ ëÈ}Ó¹ÍnÑP©Æp÷”¥ù‘£ž†]8‰ðIô_¬\Fß{ÅËŒDÊõ, CB{€ .TVIšÜ:‘K¿=Åb|Ö²<ß+¥#gròKoßzíf»=ïö»K÷ˆE`âè·:d!iàÒnŽáRŠ'ÓÅöŸÜÿ™;M£»ÃrÞʇC95ãna¼àZPôKÖÑk6Jg/Ä@m¼à/xÝ6}M ”c‡ 4 ½þ^FŸ@ ó¡V$,>" HFC­ÁkË`Çú†|òëXw¦s!² Hg § ŠPm’E~9$E1ɸ¥ÎPÍLÓ€ù4Úo)Ýݽ`陇ÕÜwì+ãsÕ‚Œv6'P|V6Ø«è_bŸ æf†Ñä¿Sì*®“öcÓ ¿Ù›pÛ6no#¡|Hê‰4p•ªŠn‡{ØáLƒùâ€þöº!îc–^÷ŽRòo"ë)»cs;Á×¹zæ*ÐÎIϰÌo˜›ÄZ´Tüº,IÖXrCWBÚh)‹eæŒjÛÀø(ܦÍ|-²0î¨R jT–Uרïz˜EXÚÃ(ðÜÐeˆ|ñÛPùµgiÃóïi;ï,øÊì/•ë¶Æ[´UqÁÁ¥Õ×[Ë\çÝIôøŸãÝ…ì†ND¹¤’FI¢QѲ^àFª“ÝrŒ!gú¿Á²¦¤Úï;Íà#dÈDŠ jlíŽz lÊÓáÜî=p-K2'6ö÷è|æE0\»õ8»ñ±~tÏ£3ûÁô#.s¾”›¦m4”ú›j¾T­n§£Q²q©0Áö§ÏÆúN¥Å«†ÒÚæ44$Õîãjß™ñnb?jÛæü¥yÅGêK`@0EǤç7cáŒø«¸>:d+ÖaíÖ¬ùe°C¿ѵÕjÚˆNgÔ—öõÊv'ŠÓd5ž~Á@½TªÆaÇùÇÓHmÊÂ2r*®1X§#¦*ÔÝÕ³l‰y•x2ABì‘\u¹–×ʉWrËñ_ýTøs.þµc¡$ò‹Ô"ë¦Ð¶m OO„ç–E­ÕYÅðÔ_»¦t 7UÈ4[-«'U ðÒžÉttļéÆ[Žð.ãÁg³˜‘¥èz^ÆQ(:•ßpYäõÝäÆz³iW«·ÄÁ›–_{­ŠthN܃·ŽO.²vø(i³Çãä½XÈ ù®1¼jVüBá'“kË"“x hÊÒmƒò"+X9“ÁÇ®ÕZ¾rI¼JÕ®9ì«pÛãÅZ Ç,$Ç)(\a¼ÿ1Pÿ%°¶‹Aˆvè›™¿{ˆÌJNb“`N=zsI‰m©³Læ¼äÁöwïy–ž6Æ3m%s=õ–ÂÒ°ÖùŽÉî˨J³„9D%“ŸO«óÇœ5C*N øÕ®åÙ6öI„i°i݉=Ê%_ËXµSXÞ‚‡J#„üi²,¤¬RS4äë'/%íëëŽ2Z´,€ lÓ)ðð¬CÇoƶˆ í³ˆv8èrá—”)+Ï0ÂòôvZ‘ûhh¯Â`ïˆrry³½`M™–¡d.J¤&‘t=%E/ϙإX‹5Ö/o!ãÂ}·"‡¿9©#cî}ÅðÝ"·ÊÿH/ËyÛ'°]MÚu%‡ðÒŽ>.[ŸVÚes>±â•e±±e'ÊÜõ¶;îÑÌ«éÞY–†kû²ÐÔiÏÛþ)w»±ìR´žˆó¤~P\×9{ÍzIµ­ñ‡Ÿfë˜ÍH‘@@0\$ƒ&ø‡ »Û-GÕÔ9Ã*)5ݵåVk#9SJšƒ3>ƒØ½O›' ã²Ë˜ / â ãáó¡%íÀJ}ô=T‚ó‹cÁù=ŸLtŠÓë‹êÙ2éjEp/áµñ¼ÍóŸäý#k²’˜OÝÝ8àäÂãØºÐ±?ªB`%½m-ØJYW´äa<-ÃJ.–£á3Ì—Í:p*¨¡±åægte°Y¼×=þ BX1•(C®ÛÁÆÕ£Ê o2n½+e8iGwíéö¬AîŸâJÝ%G‘â•ó±1te™TÍ{œ¼+hÕ2µÄ"¨ôm®ù0‚þÂòÑû»Ą̂ìlÛi¡!Ø»EãË[Zk¨-<вrªñZòJhz !õpÃmõDKøNüÊ”àWn«,®íœN3ÕîKÇ?ÚI/[;~ŽSø[µÜ>ëª?}ÈFY í½´6J’“l7§‰Ç©mØ.Z}Dyü/2@+±ÃïŸÎà>3NV[Ùì]*š ~ÛnÉ 8ïˆá 9ŸÊcíto!GmÑî×-ú5/™À Y6ÄÕ5Ä H«¶Ô¸8…ü`îy32àuÇkf§NŸ1zìlO1}¬ºE÷ŽxS°äz·a´Y˘ã­{P¶.Ïšö=ëz<Í^l¦Bßß¶šÃQYÞõ!±“Ý‘B'·‰ÙÏË~ë]^¡2œ‹PÎÀ+UL 猧« Q\΀ÃÀ±-+¢œšm»&{z2‡%VsεàÛb@æx¯€Z8 R|«G¬4ûöhe%T°ö‡ˆ‘‰÷z@ÏÎ »†D–¤Ü[u_y¿?V’uð³½=ãgt“‰v›+œ˜mƯw‘¶Ö„ÙH‚:”Ïl刖@4Ã5¢§’OÇhKˆ›£Üc^üýZWò¢Œ²Ù»G¿UõS†|` ·¬„ƒ?žÜ¸»±kRÒóË1˜'…?xÎ¥Yß•;ôû¸Üz-¢/è"FÜ÷õ÷¸ÛÄBÛQ“·nã„jÞúq˜Wõð‚‚‹®" !Ò§™}³}ª Óæ’È|ªC;j>KJ‹¾öTÂG^Tö¨H8&“î‡èŠÒöäßäÿ•ð@Í«Þýp˜íbÛè‚j=ïÖ3§ò½½†çˆƒ%‰ÛÊ´ˆ{è³^Ô¨ª`Oë-¹+¯ÃŽõÓZv2*GƒB£}'‹òÿõÿ½Ž;öÜ äßG\ÙÄD0 ùŽox$7äþ»,ã‰ö}Ýó„pÎßgh­ÒÁvIê,nàðRgà”÷œÚ. ñirïD4?䑽™ØÂN¿L]6öýO4€ÈêË@á:˜x”C¸gnn6…obcjw ˆ{ŒÛ}+é\‡Á²¼PõMX,Jv%N£/!øâŽ@¨Óïdoï6ÏœÛ$æZÿÞ7¹joS؇ezûµt,‚8Œ²¿·¸»×±H.öÍgéŒsƒD1ýGkÎ Mø-TkA¬‹0 -”íd:Å ÿñ€r¾È»Çøúʉ±}>ãÃAMÇN%ÿ¬Ä=„àßeE”ߪ­r’Y¡­.Z*ÊÓ˜?j^×&O‡röµj·ŸhBþñûÀ•9܇ªÿA‘i×°}qÌgÍ•ÑÝ'ëv‡IË1‡º³ˆž}Ä&~ÇpùͲÐMfÑyI " à8Jûå¹QÏè†ð9Õ“‹GÌ¥{V¤?|‚Hy)ß!³5¼¬»)Çû½N4áÞqab©Úëž 3E-ZéñäÊñ¢Ýõªž°"oð[ð|lö—gŸ"Téö ¤ï!µtöÂð½Ú2™¶ I`Ê®ßaàÛãÞ¶pa®e-„Ö{DÇ6Æ™RJ"&ŒÉºLØßeh~ðQ¾‹¤ùíØa _cZøD»æll†2ˆ*IžÿÇ…Ø÷%¨GÌ/–';ó?5¯‚³ …0O°’’cu¸Ñ©-s„ W"–9ùê%â5®¨èå&=)~¯Œ|A!!8‘í2¢SMâ[N–gz7SnÇL£ª¥é{x«Nª×È•cx¡âÓ¯ŸtZ÷„j`ïa»Фŭ}Hmžti|˜N“ýöRÄ#‡©ÏOËàë\G ×ÄnºCP–ÌߪÇÒ:r»‰j©ÜBà§aƒóVÐÖ¾”ߜ־©kJA¡n¤nyåí6 AëÅílþ¦s€Ç”Ø<“Â7 à`è¿lEÞðäÙŽïËÃ{û7êtVÅq¢^%ž.–ü»Ñºs–įD|N_"ÎSyÀ=´Èº(Ê`îN'n‘V»lhFó׿uˆ1b3C_ß$w\o':?p†9Y:×µ‰Vp7á°w«Š.vM·MZª¤­ZˆRPÏÛdµè#Ó…sºráèÀPÎÇôjPkïΡ® “½-®Á,4· Y•R|û<æwpØyb4°ª†šjUÐ̶èJ«(ˆ;c1s¿?“ ¤Sê^©GÃó–œéAÃ&>„]<»™@=,ú-kšÊ±ðP‡*0>Và›ìײ‹^Ë4³[f5;t¨ôYˆFÄŽÞ‡𗤂WUà’Ïnô™!ã<Ã1\“¥Û‹‡µd=kKŒÁR9#Ì«˜ì4„âõ’S8÷žÃO÷V7$ö¶m)1ž4'v(kФGÌçŽZÍî™y-;åûÜe”_JÑÔÛôx9£ÁÕ÷B©÷=Á<ùNg_,°78—žI÷µzÓð&ÍYÉcÖhHíf=+ÂQ=# Í *Mj·Ì´0LÔ)®DDˆ­l·Å‹£¶„„/8Ÿ»c‡|ÿ,…¤]ÝØŸM57-¦o½µÝŤÐê"Nbgˬ^¾³HþpòÕ6ˆó~©©§¬(¶î ­f#AñÎlT^ÆÂ¢Ûû‹L½(Yœg4®ê6òÇ¢Ú3«~®!Ÿ’ß”AUÙiLËN»Í ›áÜšñ ÿåOu{Ÿ\g0F`Å…xrWË:jÝÔc–Šíš¢É°W¡¥¼±[7˾2¸L^“*¢•ˈ¦qö<™wtga÷Ï‘Å9‹KÆòVkG GÖý=°³œQLd÷¸œþ*©\´+SÄ6 êí=<ß Ð¦§0G‰}ôýýÑe´y¦þÈSçÕD"<t¬k˜¹o‹Š ´&#‰»‚«uG_Ôµ>£ç[ó† –’ÏU¬AI×4dã>ï®Ë«Fî±ä_6›éa_æÏ6¤fÉEõ擊7¡)vÄ?ít¤‘¸ë6ðöŸ$"¸sÉÁAØÚûhd?ÜÃ-š†Ò‰•Í/؈rá‹gOx²65ÒÚˆbŸ.^GF¤ú|Œ­Ø;$XصVÐ4TM§€7!¯ ßÛ7ìdSüS± 1¨z•³^[>úz¦ü‡< £ EyÊý[GYpçç0Y)1"Ïã3àj '› ñ ŲÌÕ y†:eÿ¨O4 {w’1¸4žv=“ÕöúT}whÛœLUìå8[õ _ϦÑg}ÝÁ)ª×û}’”U“{Æ,•*"{ä~ö½Žl5ÔŽâî§CÜÈd¯©¤r }ªaÚâByUS7£±_½,m>Ô/¸/œž‹ÇÚåñ13v$©ÌIRõ½Œ"²Þº:G¡Úœd£æj¾­2•Uz‚=A…Kl ø³9j/ ÏyÑ8ƒ…,tYùðš•J[fÝ&†ŒÀþµî®Ä¥M“7&þ_wAsâüáñ6™Ãqi‘sý³ ÏÞ‘ÖC‹¨_s:3lERù;¢¨Tó3ðŒ3è)öi{”;ýú¶HŸ&ШäÜôú ØB·*¿œœñXãbç¡-†ð?ºbÁvfT×רî `Ú4 ×ñ`$V¡”Rþkzø(1´çªœ4·ÞJdÐ΢CÕ¨ë(4`%/ÎýµjÃmT+zš Òçó¤&]w‘~:ŒºÊâlõ·ÜÌò y.uºëŒaˆI#9˜¢)Ú‚ù ýºíþûs[Aù¢9ÍòPŠJÈh†Eºúò”ôÿ ò' Øýù*ÉòPuÎ}v6k[(­-Z xO ZN4û¢QÊU·=vÅR•L3.x‰Â„½v>ÓçKš˜•f©ð£Ó¦ë¼;îGÄ3n„´Y~Û‰ oEk—S€lÄÂéæ»­_hÎ RÐS™ŸïíwY㜃¤{Ô D”6‚ƒûhëX±r-™„‘<úgfk±t¯i¤÷ܤQ€¹zˆïÚßTRî1œzé^ï3w*ÝkÓ«ÆO(ä™µËØÉ;<ôòÆd‡± {:iFÔUqüv ÿk,†¹«hO¾F„,¨^ËP |/ÌZÊ/ecº IRTE5*õ‚ Ã)ùàÈ·Ì`íÒò~•öÛö ÖH§d¾Çÿ¶ú6(±ëžªQ¸aîÉHXLŠ7µC’®hRc8Þ=Le¡ƒ{Ú„TèÖ¥ÆBZHäÙ(_,«,¶£Au û•þ¶Yª[¿ãñ˾·x ¢/–{Ë—n£Ä©£©}|ž¢IÎÐ~ÐúßFÚG§y˜È1ΡvÜÒ+ÕŽâ>¶ÿÀ´’à•I΢ârÿí÷Îã'IÉ5Ë3%ôðÞºbhÙ±ªxt(#?ƒwäà>léGtåë> ƒ_ûí¬¿ ŠT7/+À¾9ÉâCt,ÄÇóS¤K\³®Cý p°ƒ³É>é_Žäð®êÉ¥J ¥ó¸FÉm0£·$ˆm’N¹ª^bå£P@(P“#í¬¯F¾Ód¡Éž§×*æÑ‰Å4ÙÕUA7îá(…ˆÍRËxãrëKò¢KE$û¿·‹Ð5bÝnè8×}Ûû7 ½P…ؾºÆ7ÓÁί–´XmFköê­!c²‡ÛvIupÉaóìü s³¯¯¯m6}´P÷cbýž)á£D¨%ðR‰)ŸsoZûÅ΋18“2?*_OšZÏ ´+ß+VƒX{raÉc–hdDô,Ï*•ÛŒ{ÌÊ¢T¯c‡f¸²××K+YÚHJB¨DK9*á·wWé.¢õðz(^&¤RôÒq˧/G6r¿þy»m™­ZÆ!EǤþX9³²³0×ý)…)Å¿y:ËqO›y{&h% NÿÖ@•¡ú¨9DìîU¨ô3wÍ3}ÏV‘Htk=_Ïç|i…Dí5çÀv ÁÜ#€…ÜNxÁ9ÿ:·S±dôÅLï%1<׿/GPíô´dFF@Í(¾H=;+×­2-2îÚ=ÿ.š8ooMU7i‚;Ꮅ­)ƒ¸°°>ôkÿÁ„£Æ¡‚V?¨øö ¢@\›\Øqï#ËšÒÂlû&q·-' ØËYÊ#œ?Dè‡w¦±†Èý88õ¸#áODóiÅ€K¬AÌï ” @7¸@OÜÙÕãñ©–bÞênù'â!2EUghº3a ©¯Ì–»QÕœ”n6Š °vv.°¡LÉ28nc$vÞZ˜÷6„Ä~³ªÇ¸žî¹âùÏÆ¼ßÙ¤8ÁãZ;b®« –Ÿ¦»7ä-rÁ!#‡€¿Ï¿E¢eïw(¿šdŒÿ—BsÑŠf0Bü ÑL™¦ŸÌ®=;ªl>þº¬ó)k'Öƒ|ë‰OÅJÑ¢Þ4qmպć ÊàW Yòê™á8Ò9=L'aQqS'7ÊÄþ)ù=#0¥È€äË 9 iè'Åï«ñFäÆÝ,? ø–œ9—êìÕÞO4@¦}fÎͯèëYŽÏð ·$ÜRr›¿8†8×cåR:G½TzÂGVšà€{¹•mWÕm¯ †§ûÛ‘lèÒÊPÐØ•V«–XªÚ”(%V¾¸ŸÏ.(u²sï.Ææë`y¼™‚pœF~*Nø ­ß îgJq8ê Šx]ƒjîAQäðQ–j{ÇpºW®} œòp M‹O§ôéNƒØ—¢%þùÒÎZ…e‡ˆy^ë‚eÇòro‚ã_6ô¥éL0 @>ÝÌå¾`³®ùº…©<"öªª—”æ\qÔ\ƒyœCñiß-ð ¤°ÙÉ`«ð¸*IA@O´òA6ø;ŽøXg†+úqg£ž7ƒ:ý´»¬, ;à¾Ç‚®[)Ö*ºK锎„_¦”Œv#þ¨Ö›œ N{>˜e’®s“I¨æÅ+ÍD¤ù¢ä0åÉHú°ÈÑÅbL†5‹.îèÓÕeä)‡Ý­%ìtÇÿ‚X'þ*lˆ0MÊ+ºßÂDD[œƒ"œU˜âWO´ OËKHÚhYjË Ê‚ ×Ì+O‰@in®øâ/ìzYh'û&¦mì æÏ¤›Ôž‹‚*aÇv Ä¡ïw3D³Šúð®®ÑÞâk­à¦O·œðà"^¤ÛEKɈ=ÑÒpÕEmÕ C­À‰ÉñÌ–æ\@9û³‡%îð—÷iÀñe˜¸5 ¹8ƒ)°}ë çL.K[1)Ûæ"=ÁŒª«¤‹J]{Uì|Ÿ1Þ7óqgûϢ̚ðvýÿ@gëÙ'ìÓµà2 g'¶üÎUHãòBܾŸ¥ýæÓ›G pñP¨‡õÒYñr mÌ9€aËŽÀ,Dp|² \{¬;6œòi£è¨ã!ÀèOÊ,ÿìãŽ8ƾà ž*ãrÏvÞ7Ðw‡¢lܳÀž¶à¢N®K'$9Z˜ÖÌyqbOÞ^ aèL¢‚á_‰cú€\>Û´^–¯E þëÌises·ûk¿>²Fë’éªoë.ëÛÀ-°uÀÂÛ«;ÙqÇ'RY­‹®:˜bÊZ­Ñ àŒv…Ðö‰Zs{ý…ʦ]zÚ&²Îzhé›–y­vÍûÎAERhEüÜ2ãóI䇈J˜L®É™ý'ıØI—ƒòp½¡ÊlQBepy>—²Ò§Ó1ÒkYië-AÙd§± &íòHbÂ$3©®;'=¶çQõ õ>€¡3!ßÓHAü³õ«õ~â3oÞY¡i7]²;æÃõUq®4Å2 þ:\wØ·¬Äà'zZËÙ޺͊¦ ¸äØTcd˜³¹*s…2ž#*ò&‡ÜRÀþ1°·n’ÛVv|¥!Ó±zßYª}çÖeGÚŽ•d‹{[ä~•Ç@M„»R¹ ŽŸaS±£‚ô²;÷º_¼«F[ïµç™Kàþîøñó:Ê uÁ¯»¬|b¿ÓÔð+~6ó©úº©·ð?SVÖ W/?»L€¬'”í²S¿­]íð"(œM&èžk¨ÍèIµ0uYIÙk3’Û¢4‰«¶²ëŸ—?Mi 1èöæ¼êIèwìï j+ä&’ê@*:¢PQdîÿxVcG —ô„ Äg.X¦þ7¥¿ï>ÉÉéÎ` †ŠS2è>V†ôò/¥TdõW[VÓ¤„¯]«F.´0‰v¬ºõ~Á‘‘!›(µk"«J ©*ÒØ "›£/Zh{tÚÁΉ¹ ÊTBH8·I+&”eTËXðwì‹-]Ð’%.$ÉlªMÏ|ÜÀ™wùó)%t(ñ9+ÓP•°ŸY“]ì|G«£9Ckã¾wñHU÷ò¨E9ij¦‹ô‹q¸«‚0K¡xWÒbìæ¡&:£øãÚÁÃw t!x-)?ÖfV$.}¹« tÍT—LŠà«4y*ÈW;T¦“–î/î!’C}´­“WË¡°M.4_õi(“¾0ý0Ù¨/œ”Â=czÛÞÜ—yÓº9‹Éó?&ú»EèÊçŽ; ´âH <*A6£L7»ÈøDMö×B”{'eYpÂmÝï ?qh+í|ʼÁV‡¢ êµ°ã3®£U•Rb¢d!)?ÉbªßkÃ!Ÿx@áŸõÚdyŠÂVÝÃ<0Ì6ó½ý½‚3yj˜\ ¡¨»  L0  n ²ÒÎÒ¤“„@ÚwwzEsœõÈ­Ô†Æ]*îâ/0"þä»;±>ëLo<1®~wÙÛTiµâEÃ:äÍòµ¡ç¦ Ä÷ôôTC7ØyFåX”Yc„Q½ùªgR2¯ey¿Ùö@™Ësâ;oTtAèozTÐÚÙù,:MÐÇwὺ¤åÃp[$°ðÝ<¤¼-6@¥e\Uµ™ÃêJ[CïÓˆÒÚ¸›¹HpápX§™£J­ŒxÚ6"{~wàÂóðÅ!ÓO˜¶ŸôÃ5¹_B"¨º·vd+w.Ð5ÓR}gv 'ÿR lÉAô}˜`±·ßeaABÎy­šõÞ÷³Y¦ÝW>û&¨UX‹Üæbäçf®_jÐí܉yÌ—Žˆî Êpô›Qys‘h„·‘Û3Òc£0nŸß׊'é&IM_M”ßÎ pÔBÙ4 Ì_@<°Ÿ©Pg±ÃGTr>`|ˆáƒ€•èˆ@÷é¿™~Šff‘Ÿø!Oº5šµ¿óFõݰ½XšT‰91Ñð¨l¢w6žZz÷Ë8›Å CÜ”Àâʉ»Xõ}Ûÿxe:*üWÃ#÷Òû¹ÊüÑ–ç¦Sh Bãà*iý­²xqç·ðfŠ@¬š}›¨ú\½Q¤J(zŒŒ†œ\ßN6šN¥„ÍÝGÒì|ì#xûÿØŸ$Y®ïG ±<ÆZa©ÿ;-G§cn§÷ ÎBv;ƒŽŽÔžb¬s6é»õ§âƳÕ] gaíÐÒ%4sõ£L3;ýÁiLyk¹ü4ÔAh6¸M$Ñ’³õlÀoKn¡EÕß3¡{àA«¸eQ–°<6dÀm;hîœñnE}þ• ³ ±t܉“î¥ ûC²Gp‰§©Rjòh/ÛT®×¯öS¬ß•Vk0­·,ŠÕúêiû8Ò. ;sðÿµXÈ_h cŸ  iµZ§:ÛJê¤V¬Ï?©ý\ }â~\“©óZa“ÉÏp´sßš|=LM)gË{úÅäM$>'­˜ ~uÉïê.]: Fæ9t+Ý40:Æ üÖ‘˜‘¤4 ª6ØdPƒËŒ™)…Û™Ù½/ýÏ$ûƒq K&$’\¾çx}hÊ»àu.pÕ™ Ù´Ê—&ÊÅ"L…?")ð³1+ èÊÍØîc÷öp ?Â’…ÿl_ "áx\%´Ä|_Z 5Ä9«÷µáõÿá=,x>²W (z’Úé{i€™UbœrqÔ]{Ø—°ƒ)ºZl»Ž¤ïÜȱ¥LöÄ¡vâ Ñ€@>n^ïŠÉÁv"[77̾þ€Ô3„HJé(ö§ôEEy«Ù\ÈϰsØ[ù%Mn§²±ˆkõd½Øˆó™Æ½ú¤?E’©Œ/ÿ?| „ûJq5Ôä+”ȇc™ÊÉ4çB£1´FÙ}ƒk$Çh¯‚“YÙX^d9 %Þ¬_ É™Ám“Ê5ëEŒ­µ/â+¸ì¡!wÍûjÔåRkf¼8°Ì–iØÓ¼êì’XÕÎàò*¬òÓ:µÙþ{ƃ‹m}ý<^öÚ°…·=EEeP© kS󞆑lªäS§¦Žñ£ë!x»ù¹¾©ÞϽ•¨J184éãÉr)GÎqY)dY4–l—”!a O˜7¢•½Èi¬â¶Q¿U#×’)éº5.A“¤NçE÷`< –'Ÿ ÜÅdÔ@´ÿ…ù$HÔ ß+)5¾sÀ€º„¨L›Ä >!Qêaõ8…~å$)3ºxß$÷4hrèG• ðét8xÆ«Y1°« kíNÀ¦7ÊnQ{§Íód‹ Ƈ×ø Gú'-þô ¬y¹ïòýJ\ÍÞï\y9r£;!5¹*¯#™ÐYÞ¥'i‡‡ÍœbRx±£ãGµyxÛÃDÿzx6¦•)m½ïHÜæ??HiÚwÊëMÁ› ,O>vúš¨O”ù‘ßÛY0Û\»¦è"gšÃVõX"îþ ‘ÔR¬íÅÐá¾—ùú-­ÇfWÀîú½Â>'®À—ñÈ:WùÈ8ÐŒè5vZ¶†ÒìΉ¢ “c†ÛåLÚÆ:ŽžûTW¬°X0iš?Ü3;&5+£*«ÛþUŒ¸,ßX~^&¥ø×Ï#z•~×’:Ù•ôOÛw:}ž)þFädæÍ n¬4Y[Z{þ+G¬<æÀ»šjÿúôÏ-Î'ƒÔ±¹(MH]Ô Íü»I I,Hà•ª¯ø Þ5JBݰDbYò Å\6ü²@zÛÛÓè%¼8SºsŸO£ QÞÉØýÌÝŠ ýàçälù›ÇÝÿ% ³VJ+ƺ ßEæÜþ1ÇñV £’ã®ö€hcE]€Þ=¢§KÉ»ãjijlDSìÏ#r)‹sÊ2¡;8Òb9Á“긣g•Zž=+¬´êLe¤&B±ô?b >à¼Ck4nM´ žÜg¼C.G J»Òüî·º$¨)LE*>jn€݃ÿÚÕû’~£[ŽhŽ4?“VuÐOš§c¸-Ñœë¦Úâà÷äÁWYlÊ'¹Q6ítµZ/9?Q< Õ}uªÄdE_V,¬.2&|؉’£Ö÷:[Fÿ¡ $¿Ìécø›¡E9çu+Ôx²Í®€2èƒÜ_õ¾òs˜ 9êÛ¬^ É"aÒ”1:˜ÿ™áɬ<ÿwÌ ämv*Iv*°Œ(vèK€ †FDïv}@!¦2Ø 6"i 6ù$ÇtËR§\æ…°iö°¹uü جîñb˜L_…5ÁAù)Òž¯DªÙò–Š8߃´aÔÏѱ¤Y}î/íQlÖ2öyè*øfö1=¾ŽBÔ±’ueFu!žØ¦¨'#ãµ à†»#ÿpPÍU¸ÙZŸd•FµIE{ŒªoHY§³à&þyÅK>w{߬Cü(ÞEú¾ÕÉy¯¨å=@rW.•Scáçj£Nà¬r6šH4Ò´ü§ÚøŽàU²Í'ì7}ùA,.o.Û²8”¼qhÂf%ä…Òã?ŽŒ¹Ùh£6*Ö¡gC¿¥#š†7²ýM\;ѪoTÆgs]؆¡Ù·;­¦*ÊKßÿP6‰®——;ÝèµñÐ&Õù°+'$ kk>c0‘YÁ‰aX—©~´—ϸ¨!‹‚ æûM»ÜŠÿ°Þ´I=+îÓ¼ßÌ)ô£µLq.nkÙ“f‰™Ã¡öŸÕ5ƒ+ÿÿT¾ÞêÀ¾5´×—$Y:Ò±Y/€!~üÍYâô?"ZVŠ{PÖÿKWL ¦Ñ°­Dèý´€PA}²÷O¾§`Ó`OjÍ?Æ®$I²°lξuòͬûº‚mer{€g=k¨‰úD¾ñÒ™¡gÛrD,Ç]+eóîw.bý±¸%ƒF‡Sn‘ 1hlpà£ÓNâÈD á2=+o Èž×Z‰¾ÌüÓÀ~µ/8IñOÖkŠ4¦KS£|óãcÙYÎS¬{q€é"V³¯|‰».üÓ¨‰·$?Î=¾øVx iNeŸL¼¬4/N3ºaÚPižŸ—qrD[ø[sf µ|‰³ÏöÈ^†ä$û& Þíx»(—ÉÉGØ—SìšÄ$ùLè0ûcIÏφÚ|a8‹’¦âïF-Æh)8ÛKžEUÁ¼€ýäÇXýEµq~ÙäZ2;',ËjTŸ&©ÛÇ3UÈE2÷ ƒÕÝÙ¥*Ž8ÈXI æ]•alÙ;“ÔTY¯C8Lf¤aÂ5>ÿB»)CƒòÁÒÆ¾á)$KβpÁD4|Ú .:«´Ð®b…V=‰\Ià”ŽSÌ/¸GšŽR‹Ÿ^ÛE†Tpùõ±¼.\®ÖøQsú°­¸Dñ(Oÿþ¹S¦f‘”³—>˜)¨ûSI³‡A)‚í˜& ¸C7‰*#*:h‹Œ>}ãÿÎþV¡f ®·U•—£5NrL,->?K¡9$^•·o6•°¾TßÏNur,Ÿ7äÉ´àãÊVꨆ»ëWM¡Wð³ô­èÐÜkž \|2ÂrAx”ÇL˜°(·À”ϳoR9Ò6å`Æhtý‚Ú“e0¿gàБ™4!¿‚Ì¿P˜Hʄ³^ÌÞJ<æÉ( i×D'ÉðgG›:JÀà‚8qwo‰y¸ b!Šq:‘Bbáèqˆ›^ߨÿ&3ê—ÙAÚŧ ntÐ7rň5t|2£|ž¯ù"Ë|Ý_Jx1¦CŽ&À@ø¦ú»ò;÷n½-º9vë>ˆÏ-'NjÍã=ªý‰awñ÷­Ï~ù,îâyÜêõ.Êê…ÿ×À":µçtFA ¢ x þ¬‘¦Ä4Q/jTLÏóoŠè™}ÉŽö³ŠJ£@ ÑiN*¢2ÓŠ£í³aÉ 0Ì¡ÆòÓðN—“ÚE‡°ª+×´~ÏñŒ$}cd/JÅy¶k¸ãcúÓ*£à\U–¸]G Á IRtº#¿6æëQ¼ì‘ÿhžÎ[ñf¤­ tX°2„œªš]ÝNhÑ$[=•oBo—Dà 1¦ 2ða¸{lsy»øß ?(šO˜7Ùù¾vÄÊíZ÷Þöd Œñ¡gDO>DÔÈ(hqJò´}Am*Q¸:ëSíp~§÷(/½9„"õ-×Ôñ™»ØtÝD"Cµá…ÉœE‡gɸw¨×­®¾ñfŠS¬RRq;X/m)­Û€¢%¿[ktËïÆ*'ú«8µ$eîàžÄH)*œ|»×ÑþÊL2m‹0 ÞetzòÁüÄ…­ c ¯ï++d}v0àÀUØÜÉôSŠR  ñJë.'ƒI^'rËÔo좸ø“ÜbÝ̲#ÍùÍŽäÉ ÷_Yƒ¼„rù¯?ùéCnˆ†­·¨È/Ä&5u Mtldq£ÈéTôóYÎéžW*’$¨‰Þr,J÷jÉ-‰GvsÁ%aĬÖÅ}+‡,¹T ?]…••ŠGëm?r‡Ïí×[NAç¦gáñ=æ=º?9à.,šB©ñæ£Q,T걊Ë ‹EåF7tÞßÃ’‰IñžîÁ å¾ž5ø…øæÑܶr0ïóòì§ÓZy¶ÖA£‹ºü(ª &`ÄCÒC 90Í‚”Q# Šgk’Šˆ„–þ©®ïBM”ÆÞãút1&|¶ìz–ÅëÁÌs>]É8ùW34ÐîàY@•q/ªýð¡>1M(‘ÌÓÄdª£“öÖá–É%* Û½ëo ”Z?Öû0CäÒñ5©Ì–aÂ[ «L­'Öwj$^VcÛxFnÿ! Æ„;àâÌÑV1éÚ°G@žG‹R.†gFsi,æÁç‰'hb¦++LÌê¨Ï eÆ<ÌÇÔX5~R1ò'³ã´"âŒ`å ÈùÕ&¼—Ôáu²ІQ×Ãèvu“›©±?Ó§‹˜J݈m<߉Ž(½»N—]™i}ˆìQQç$•5l6]Ã!gîâѬPê¶ …˜úU‡ïÂÿ°¾œ­Ñ¡ÜQ±õº§«à´DX‚wF"Jã÷z  o6¹"t¡hq0u¾Tž]XèÄ*VÅ\[í}C‡Æî‚ó³Ù^Óû¸åcÂÌdâÚ61«€šïÕè+~œCqÛôm=ùÑ+óňa9¡Q¢¤/ÜãÅœUnR5U} U¡l:1q7Óú Flò×±•èK-¡õÌÉ_6¬±zöô’âFcàB+!Ý*^«†Œ4ÜàÆ²ôOói™ó» ì׿˜†íÅ"¸h/¹ˆ˜<˜íj0>¾ ýÞ8Ú{×Þ²@‰=R>·‹q® †·_è.ˆê ?ewvÇG~<£ïlgR>\bäo”×\çßÊ>š5D§<ÖtÑ+wA@2¶9V-Ïf(’×q ’É’Ür•ꜱî—|ˆ®& ª¼æáz>ÇçãÓçÔ—gE»˜â³û3~s–ëÛTXí3sÑd‡€zlþ!…¬ t­¾ˆ ŽNFbï ò!TMåÝÆfàá‹"WŸôæŽÚ‚›L‚5†ÉíÔ×ÁÖ¡‰0J[[Ù3H•5Aù†N}O€ìë û[Нoª0¼}ßé#ï`NÀ¿j6ôfJ=éCl·ƒ•YÙŒr9{®"]‰¬5ÅÀÊÿƒ+d¬-Ü­|OªU)¦–’•·3BÆãÌÀÀ:S”õ_ƬÄ÷QF—\n’ ‹m‹Užfß7 þmjü`^6ûx:cÔû:¤Y?¨,jø®¾BXOÔ¿`êó?wè•ÄÝ ÑoCø¬Hbek÷(WÞK )ª¯Ç'â Wä½ó3Ðe+Ø£¢¤ØŇ_Ê YÉ=ðj„±Õ^2o7/¡sñé¿]Êk@7Ù:ztúôõð½GÎÏéD¿_ú2Vm+Tóöaâ´ÅsŸôjáÛZäÁÐ×fËSÐâéjkNß_µO×8IS‘ïlE¾m³õl„§¡<̤ÉáfCCÑn x ¨%¬4~á8Ü•ž"Õ€ ,š¾SÅDÞÚ¿Ü ˜G|+‚Q‰£J}‚Ç[œdEjˆøuL1~T )þ$9vg޽ȭŒ†å2!ÁË}ZÜöz9îõsEdúrœ'_Ó+ÓóO¿Î 9ß°÷âÃŽà’/½Ó×´Òî|•Ö&H$8_œj×1r¸wzjœ„ ;W]1Ë»q+ÔC>ÐK4¿ú/çPÈZ†èçeγ$ú%%T«®-!EÉ¢U­Ä?~i#Üð…x£ k#D³<ù½äüaÊOÉ­°˜¼?Abüãž_æÛuüï›°÷Fe¤_ ¯*{µ ;(°ôM»’ýy>£}Æ}“ÐH~qc›>‘ðiÕ((UŸ¯ ©0Ô`ÀèêSDdÿc‰›³dîˆG°3Õ¡,­´9€_¯GJ!'¢YTž÷½ZïúÚd'ÑÈ!:0çðÈ—ci€aÉ€r;ÑaÊ&”?æhÜÃ7zM®ƒGöòopÛwŽ`2ã$4v¸tFBi¬¥¿ˆ yöÚˆ ¢™máH¼EŽË"™÷Òùk·O^?ÄýÜë#Š%T¬h@à'é¥]ñb¢ŽI|# ¬§y3_I†“Ñ•kgÍÄ‚vàƒ(âr 'éû‹ 6³³E¯6) —;ÚusWÝ€ê‘*(Jÿæ z+þ±eÕ5Z©*wÝkøEMcÖ׸‚² …#HÚ…_…¯ÓG/C½Ý‚®&Á¥kôŒ#¾Ùd. %è¤ÌÃ9ù>¸Õ?89lh)ÈÖºÕ ²XS«%ü¦»†p–„êg]FÞý‹ìØä騲¡ûXM¢µ®sHPù¯}ùpi®ôä5/&Jœ00_{ Wåé§îŸL“ÀÍ …e~’ÙŽ›3á¢-˜ç`h>l̉¬ò¡ V7©Í¢Ì'ƒ­îh6'}E¡üËá›ø¹ZÄ©¾öÅð¿¾ûCl—y ¿(•>«¸1§Wß¾¢hë$Á­H+Qe3·‰³ž"E…濼‰¨¹8Þ_äØUîºõVtK18°"~’šW|Êõ36ê7§=Cv½½.¼;Eþ›{¼H¹;z:ïo/׆)žûú®ÑÑV6•ǰ0ØW-¿/ˆÔƒ c+æ3Ý béM« Q¥ewœïÎFõÙ2Ü&²€ëºC!ÙŒ:â|!ŒŠç¾IƒÀ*ð.œ‹¬Â9Rˆà&m>fëOEÎÉÿæò´„óìô›¤~+äb¤*„ôƒãÜô€€’ÌÃþàð/ä`݃^‰¢PÇÍ)7[JÃèMÚ3uvx˜‚tÎ*àšý'ùõ°‰»à„𹯘¢T¤#CR•>PœÖßOï}Ù'ÑYÆz4€eHµ©¹ÔÎpÕ©4›‹ˆç.MÉŸòÝ~cáÉMäùhr4×–úZ-®á$SÔ‡?0×í·¸þÏJ‚QbZú‡Àˆ ž€>@eÎm€ï¶Šéèþ¿ôÄüÕÒáå-ï½T|½¶¼ÂÎ'væ$¸sš#ËèèV–ˆbàçó›ÛU~îñ™LXÃÁÊV©EÁã¦üIL°]÷t,ʃ„ÕÀÙ¼‚n&CÖ!Cô·k'"$dÇäR»_ÊgÑâêjÑ™|*°Ê{ ÅŒ›£}+3ƒ•ý}ÅîpKC£Ê£ƒ"að® ïÈXhà2S`M¶"“*È;²û¡]ÝðÂôì‹?á'È’ÍaeÍY»2ɧ!î¼ÈâîïÖ4,ÙÊq½yÃï}5O‡§ŽB—ÜñÒ„†ù”Z‹C"ìp3íío$ÏÁ¬qŽ¢Ú¨&jÞX5Íu±;Gz]E: öÁg{G.‹¶$ê÷ Eþö±øÿÑld|ÏXó–Tùè˜`¶ÿÓ^d©T¬ÂÜõµNÞ©Fþa¯.%8Ié’²¦zñ ’:ä•£Q«ƒX634Ͼ™%Z¹Ï¬«‰ eÑ«ـ‹R4è8OÙlã-€ý¶#<"зKñ§™¡t¢ ½¾ M'U8=¯êö6ÄiŒñý¶û³¹ «—QÙ³ç¦tgû<íA™5Ì×ü€1r QŠwéÌ•(µ…–Ug@ endstream endobj 111 0 obj << /Length1 1994 /Length2 22237 /Length3 0 /Length 23495 /Filter /FlateDecode >> stream xÚ´¸eT\[Ö5Œw×Â!¸»kpw‡Âƒw'¸»;÷`Á‚{ÐàÎGn?Ý·o÷ï7jTšKç^kí}N%©’*ƒˆ™ƒ PÒÁÄÀÂÈÌ “W5¶waafu°5°223³ÃSRŠ9AVöâÆ /€ d P4½û9X™™yà)R@{ ó»Ò `â ‚ŒÕ<,ã¿€’ƒ ˆÁÄØå] ´·°²Ò¾»ˆ98z:[YX‚þÄ`c`øé·(#@ÆØÔÆÁÝÅÆ `loa”g(8¸¿ ­4ö ¥±­9ÀÁ Ô¨«J¨¨¤TÕ•Tiß«º:::8ÿ1U5u)z€¸ˆ‚š¨ARWUûó©´çoAPP{×ÿÉónøÇ]^BMDM[I‚…éÏ,7 ³‹ÕŸ´ÿÃêàojï®æÎv%ÐX‚@޼LLîî. Fg FGÛ¿ø©YZ¹ÜœmïWg -ð¯Â¸Ú›½—d üW€?ÈY™í]€œ$þ¥´{/å»Ó»ôbï…ý‰iû/s€ ø4–Æ.ùÊ))É쌭ìA@{c{ÓwC1ÈÕ`ô—ìý 4£þA @ÌÕÙùOù«œÿ“æßÔEÞW¦gëícìþ¿3¶wuñú¯ÚüsÙ¦ö.V. —EÌ­lØ»ü陕ý_2y…O’ªj rïƒgÏ ïð^{Fè/ë?ñDÄåxÜÌœvóûJØ›‰9ØÙ½³vÿS>q«÷:œ=™þ9Ô6öîöÞÿ#4·²73ÿSs3WG&u{+'Wà'ñÿ3}Áÿ-³‚Ì èajÉô'Ñ_sòGÌòGü^oGG€¹±­ ÐÇÊø~÷v1v@ή@ïÿVüÁ³p̬LAï#þ¾MàÿŠþÉÞÜÀó/ñ;“«þ¯ù4mQÚ÷ýiæ`oë 0šÃ3)8€ÞGæÿŸö?¹$]mmŒí€4ÿ¨çÿÛYÙzþÃì,4ˆÒü?|­\$­<€fJV SËÕô_òO ã÷±·°¾÷ã/‘úŸ=dû>¬ïŽÕŸó ÀÀÂÎù?º÷94µ±º¸¸ÙþRß+ð?tßËþ‡,€INV\FSŠîŸ³ò—„½©ƒ™•½€•ƒ`ììlì Ïü>¬o–÷)6zü5!&F{л ÀÑä0wp†ÿÓEN.“ØÑ¿7€IüoÄ`’øâz·”ÿâyGÆ£w?“¿Ñ»ŸéÇ»ÎÔÁö½ÿ–°³ÿ‘ØÙýíÏÂÌ `2û/È`þóý5?¼‡°ü/È`²ú/øžÒö¿à;»¿£½3·¯ÿßz–÷l³{·vø‡šÀäø_ð=µóßÑÞ­]€vVÿ\! Ë;å¿ér¼¯äþ_)Þùyÿ%øgË•þœsmdæ¿gàÿnaU³ƒ PÓÊìýæ÷_&òÆ g+]æ÷]Èò.ýû›þ?Pþ}€ü—·¨¨ƒ‡7;'3€õ½³,\œ,ïk`c÷ù‡¯é¿Îâ¿N€÷aý7þs€@ )üò‚ƒ)_uJsH™¯DÁT94%ãI%¶ –L<ÔrúT®xî6P¨ðË7ÿ ªB9i^}ßä/öÅZ”AX¶¯ë­IU“×fÊÂ;ƾò¾È"c9ŒêòKþå]d´G29ùÚ%ì3mñmÄõ±_b<ÝѬoh—_ÉôÊÛ~æA»ͱ´`:Û¢{,¡âw,Mu‚ƒÞ0c£ŒûD–?Îå‡`ÉÀ8övcì‚G =R6Ìlã96œÛ̉ôó•^À€± #ÂaãÀQ¥U I‹vÀ&ÓFÓx¤¼ðìð5°“x賈Z&G¹ÒmÉãú¬e3£Ô(¿–ÁZ6ÒŒ¿iÁ"‰È<•µ"»~ÔóS8·¯^¶”õ©ýAQ·¯p¾B¿áþ}(̾ò‘`t„: í>qq›q(Ù"4ëðÛ‚÷èCÖݤfôî¤=SlvŠ: G{źºZ—… DŸQ¥âù‘™Àh¼þrI¥ºQÀ”&w ò³D#yŒ Žçª ‰‰ÓâKí®Ñ3¥Õþ1 2•<'áX‹úúÒ³R¬Úàok ˆ0ps9«.i)¨ù–ůºù`œ‹ˆöüè˜ Z&ܯR2DoËEÓ2cæÐ¸:¾i T&·vFEXFh´ÄíbŒÈSQyËÔ]÷œpŒÝ-ŒXÊ<€…!(~ µŠž·Üj˜ú*Ò£µlÏ*_¿ã¯qЉcâ®§ó-â°]×+Â+âˆ*ôœcŽñ£…¦f§¦`‘¹ÿŽ—6/þóC‹»ŒêPéíy“'=ù§XU©ÑöüÉôdïËn¶Ã(%lj(lY'3 ô%ÿ#óˆÆ³#‘K¥Ô øÍ±¦øï_ר|û_în,±¢HeÛµ&éN#Ë!‘`‰\õEjï×e¦¶®x ÷wbº'¾ø)@Î.p‹Á¥³¶y¹:\#Ów[UÒ—¼d4áLXÕ™l¥ ;b_»–{Yc°ï¤åMãÆWbò²`íúv³jzUUÒjPDóìÃëg“ëáÙi$=ÌÖB_V†u ~%KŽ…½šð#÷E: Ã^Èik´ 3ŒÓåsü§%ÚåüöjÃ2CÉ-ˆªöò½Æ Ì(æ~ Í&HÌÂ0$7™ì Ï;ââH±u>Úþ‰œÅÉG&&Öáww²gÝ•¢:Ë=U(í$[[ø¯ç—%oZ^2‰QŸ/RêWn@Q#&¢‰›17æMú²++Nª|ƒeˆžš ðµÛ4WaÆ—ƒ$z7&™øoî``$Ã܇ABº úĉppËÅ‘ ™¹ëµ#Û!‹QV=uø^~Xx$/?›‡ù] šâj˜œmcœ„8‘’¸àL!lÎ"·tŠ›Þ‰Ž”pñó wIY?YjýNî?®p2a€ÿp.+bMñŒum m<׋?7h5Fsû}Ý.˜zl‡Oµ6.'?šÁ¾\»•®üµ&XŽ@º–ú£€óghXºJò¾+‰]«/Â6öŠÆØpæå4ÿh,òê™(»CJ&£øB01ÑD²cnƼûÚŸ)%nêo»O­’þ»y.è5áâ{Ðu®Ä>þ²â¸«¤¿lÑ%¡žF³ÆGŒB¾„R˜c¦¸ „] U(žÍÃj±F ‚±ëQC…9äZ”¡.¤#YCTËzy˧{ˆ×Q­…tT߉Á._3ÃÞ½‹ìnIÉŠéâÙ§î@͹ŸÐÔ}Œ¶Üô÷j$wÛbå~Ø7ìc1 '™¿a¢Î¼ hivdÜî¬Ñ£VѶà,à:›—F”‘º©½Y¾uÓ…¸jJvÞõGù—àçL¦^?(MZ=/9jè8© hyBQ s´#=ù“!~ë™k–±HÏNÙâÏ-¯À³·u¿€^JY§Ä;(n€ZsÛŒ­åK¢‘zÙQ_åçIvȉ—ïB£LfÐ\P£±Ó£gˆ±¦hÅ™o+€ülZ¹MºÓ~Y¨·“áÿD­ÆKó"œÕÀ”;HÿËÌ• â1÷”ëuAÍÌ´Ê,“u %­ j âé€~ʦñÜÀ€$˜Y% v«Õs¨nîæ>æ)­ɯp»:Å“ƒÉä˜Ô‘0^ r8xÏýîó.®Í6NþÕÚ§Øi•žÉ)s–ÐÐ^ØI+²ë…¥©>h¦ë;+üªGŒ€•xšžpë¾D9Ž-M£4Xjðç­´/D3I?$'I`L¦§F6ˆJB¬Ý9¢ÖËž 1ˆêÂ’šà—< 16ûô 'c˜XÔ¢x+øÛ \yC4ÖlB#XXY‚ 2§@æÕŽAbil/s\j[tƒÅ°ÛûN¸_—̇+5(ô1´ÌÁ€D¨°Çx]YtéòºToqÕÒ[ŸîùqŠ•£Ì`­Yvù¤û»qt\AÚØbÂ+·úöO6\7“&¼gº·Wxk6ۢܒ%òÎŒ—©)U¸hÙIi¤åIOw@«üÐý\_SigVª_/L’ÓÔ¨üP9k }¦6ûAxQ/Bï{ØÏ>LAWžuÚR2<(3Þ MJp:óèí:çK=×c(3ª]_ðu×v¹ÄìIûŸ;Ÿ)èò®¤u9I.Iú^õ¿«r ¡2ò¨$ 7¸+u.(`Wì³Y imüï½qRðØBÕ“â  î—´?l\eËñ{›ì«Æq[TH}h§ÆÎÍS'ì¸ê,nê´à;üù¡æÉŽr84~{œ¾¹ôfÎ?4¦Ø ¦a  5ðá7å¥u2QÔ}r¡˜CKÇkéØ+‰ÉèZ_9ÎŒ½wÕH¡L½ ÝZ%ŸIÈ‚ÄÔù·Ëº€~WÒ€­Î$L8ÚùÔd½%³ŸÜô  3Fp)aô½öð.jÞú‚&Z“çf3Šä^âøÑPYÈ$ãàŒaG$Œ¹4îQJ_:†n.‚ø2s¸ˆ™€7¼0f·ÿ9ú ŸÆ§@¡SfÐO½“b²pÉfú`I'u<Ú© |4+Z¢Kg#–-ø{…‡Åî,ÁûvÞá(NÜ2›Þ¯4ùçØµ9 ÙÖò5ßv„u&˜Yb>?p1h´‘;û⚎1’Ëϰ1i;rcNë•»¤Æÿˆ½ß,-ÔÀÄÐg$&Ù`ÆÝ*qc¡€ðCPPšBœGA@ÀÞX¤¯aøÕm)„V_}×z»«Ö9ä·`B×3.{Î÷SŠÐˆ²ú¾¹å#ÒoÒp–h&ñ&¢õHèœ ¨Á@‘•ëx+Ä‚ñ_•̦µû*àY¥#%±‘`³œ´àn ›M’V‘Öè7?S ‘î4Ý +hÀTQDdÃçÎI[Ž–K­CF9 ÚÙ?¯ 2òV4NU›k„C4 éµrF;V4Ù¼}µn&­kRäý<ºz–Yé뾘Qbt.§Z0ÌIÒ –Õû”ª7Š-Q¾·‘æcbEùÅiPˈ*¾ù‚§6'©É5ú@³©> aÊ9(ÀN°RÌ,Tóý„UÎè÷Ì&1³c4î%зЯ`¬;¡b|Æè®ô\'_-ZÇñ®+õFù\Ù†—I' ¨œ© ÷3ë2‘”IîB}”OQF˜„ Îiг§; ;´rx±Àk{Ø€™©'ÈlΕ7£Ñ¹P˜ùÃõÐ#Ÿr¹bä"l¾;›ðçºë·.¹¬Ç{—\®ï[EŠél)´Zë7“ý((¿;ƒíªïPGHÃí ö âùlE|Q^·%•lR å(—Ÿô`§€ÇÔŒgE[H)|P–/ŠA‡qzÑÇ*Ìö²4w¬U×Ë\œð—óĬ¸ÇI¯‘Ù(h¡ÆlR4¡ :z©Op»ú…íÍÈÎúiEº@±¾šÊ¶†¬ò‹šÛ•7 ’ñ%~ü$—µ[J9p¡iH6å¢öT†åë6[!f¤¢=$ždá›fzCeUOhOÜýaÆbm¡Ð\?"uø¿Ï3úS³â¹ß…è£N¤ŒRƒ.ÝÙ%B”Fœr¨ PÜÞnez¾°4Ù]X]8É“Fʻܗ¹{x×%LÝv/ $ù5ê[ÅJÐyw;C¥º%ð¦ß0ÆGï1£Zh/n£ì·pò’àž&¸†,5覄k•œ1Àvò ù>÷ã¬Jh"‰qÊÑ…ïÀW|®F?ûP»såwtÆ•™”vòþ¨.ÉùAn©?GçEY” 'š;Áu|>·þHÁ3h 2Õ»èñÕ“‹yxÏJÄaž¡á|o9hÀ3®ô^³ïF6—¤¼tü»3çf”gØí(tÌ4f&FiÇ»«nZ]ÒL;YE Xç›Ý÷`Rml>¿Jʯ´ŸÝêÃæu©[“”bÜ%å*ˆçï‡>.­/¦­BúåwÈ$¸ ÔX&eM&’‡DúLxÒ£¼×æÑ_]È™-äF¥NɨP6•Ïhùd?iú6K§1КjHäY‡33¬î¯q¾ªÙ)<Ït@Òˆ“`°}´dÊèyÁÂIÙ÷ jÕÆ!j³ûòï ƒØ¢¿»ã5&3®¸—ãc¢m×å¯çüòƒÄÞ‚“9¯z‹duù%Hφ"ë)Ì Ú»åû,O†Òr5ú›í9Ÿfpú⤩ËóÌZ$„³š“bÕ ÒðýéèͱlˆI£™7.ü ôtjó£P{«ß ÈÚW ’ZaWhNcñä‡ù݃Z\„É€(ý9›£ìÙ»Ì4méò„fª?Rvœ Z n J^îÝâkv F½µð¢D­6J'Vw–EvÚ‡à,«Ÿü$†•£YtDœ-ÙMH‰Ì<-Oå®a«+ ¼Ý“? ç‹'ÜÅßNlœ»€ë; @p{=/”ΡPaº–¸’žNÄÉÕ*|îU›8Á؇W=ó!o2}â%ÅBƒØQ¬ûÌŒc†k÷ÐŸëØ Js¿JÊÊ„Ób8cË ó¡â#´ØG–O-mØQ…a%2!Ã/U£‚Å[ÛA¸ŸŸá®KXƒý—”cCæ9ÃRÚ!£.üú°=ž»¶ù<5*óزÝ]¡Ü5]öÔÌi!¢GY´ø~´›îºç âØDÅÛÖ4W´Á™÷SšïMDI¸hx_P’¾…_íÀ÷ S>rï’‡Ê[eæžsC¾t’O”f(˜ïå ¥®KU(¯¹ƒËÑ~´|ïæƒ­3SâaᆥcY8tlqDY| siPÏä°ÕS³;Sßöj äÖË—“Fék¹ÚCú…)±¼;6‰é¥É`D«OêÀSy ÆxCêR¤˜{DM-ïͼfµUß?êxy—“Ÿ,vCÕÔû¶ÓzrçUl/xï5•;Ä«C–‘IôØSà½qäe<¿×wâ«íÁŸ›öòš£7Í—Rê¡™ûÅzÝû:ù‘çD¦ÚrDõÀ—bÚæ8äPKH‡#îúÖÒ5ÉéÀÏÇËTÊfTá`ü ­±ó ¡iLgŠÅÝ¿Öþ–ÚœI$¢F íçlÑdÓ©~Ü“$©b©k°;j—‘yÓ tbiHïeÕ54¤Ý†Ü.3ZŽ3÷fUr]–:‘x<#vw |Qµj´raÛô—_°XåvãîóÃ^°ÍWl[}g}ð‡üMýoŽ’8аEÛ¨GÄ`EÏ€dÙl…‘&Rf¹eõ&~³­ÑÊ},|‹ ô%û’1vÁéÍ_IÎÞkžÝÖrMm;l¹Å@¯òõâ-k(‰}±Y ˜ØvAÕÛçŠ`\Æø-èsž6R$žNN™À§‡rÝô†Ð_ˆB>ÿ¤Ž²jIr‹ndMîŠd;z«áØ´i8Î…¸ [Þ§ƒÌz…\u àT’ež[.›P[ì* ‚Ôûhb©:‚b€yÞª“64pw%÷¥¶­üwY KW•ÚgGj=r®èýºíl%z>éáeövËC ŽL W¤ðîw4¤ PåÆªyÚ›¾©›‘»xž’ÇÐ+þf5ú¨Â$²Èâop»²í.£€ÿ J´TD4M\†§ÚmTJŒyÆÊì½zç…ç)¾µÚ»u.3díèø›ÒÞnM¥.ºY–À´ÆŠß&)‚4f%DkÛ'’P—ã×’"Nsåx¨-l'§ä]㺖¥ @^ùuš>Ç&•´lü’#ó>½*¥«9)›'ýåÎJH0Nëï™—ùuçMÛÎþ^†HÍâ÷f[‰;çcÍ\'/_ÖWmËøøå—fìЦΛá™ÈÅ¿¢Šžî~ßI¶{b‹%Ûñ¤Äè«î/÷p¯ä{2˜jo¿QØ Ž Â’l¡¡bEøUz0 ]9á¹YúvÅ-±›ßªj„fE9€MËõ¡aÔõvÎÎÄPUZ¸”ym6áAÈv‹VÖD„ØîÎGFކÆ0 ôÉ­²RÒ¬©µÐFèó˜âvàu{9±ÍoÞoú?Ð J[«´“¶<ç‚€°nÅÕÓ«/-2ªez"hãHÇEõ-GµüF²JE„Rìv» edÅ_Ö3­mçSÙKUÛ—ƒ¤Ô/¬ZXÍ€ýéS&Ã&•ˆè,ý{„mbÌœè"†ÙK}ŠÜBÓ–z)„Ž ÜŸÅvìUúò,Š?TÃN‡P‘: C[ÑÀê3f˜¨¦±A½_øÉe­³³‰ä–rî}ž[|§µzÎaØO6 ΕüÜ|׃uUà77ÔôÜé50Yx,€ÃŸ¸¨€T¢u¼“—Ê)ÿ˜X/Âu\Ý…¤ïDCÄj¢ Ö­`ê³ðºq܉XK`û½Òª0m”Û­A‰\m¼I®²¥ji2×Uðp€g%@òWù!1–¢í°Eh %ƒ’‹«êkš5¡(bÇm­kHOS–ü›G_òVRI*=P}ý¢“>$ë(ÐÇ ^ãw>f†jW¾®GטW¹TúÙÌ%[ÁÕr~ ™õíÀ¤w“¬Ï@E‚bªô¤‘‹¦Œfäg ñû¦2T4ˆ¶³j=\×Õ]zò}úæÕâäuK± Ï¡ö91ôã2Á’ÍùWÍþ¯ic®xW7Ž,„°dùŸHK/g·Òõ¹Xz}µõ‘­üNlÓ);L™1¦Ïʰ­!‡¤\~ø’rF„U8icQ·*Ó ¯ÐK§ïŒ”Öæ4\º} öžjø¯pÓ›2¾È+cûZ3áø/ûÈÖÆ‚§³q²öÏöƒºx}øLRâã=Ÿ×•W~ Ãׄ¬ùàÝS¾Xõ!¸|¬  Wu(hLB˜Iu¤6KüàqºjOåi¢–Z³V¨=L|kÁnDÏå7Õö?ÃCÈÈGEÓª-ãnþÅo R°¿ÿëÙ”+wK0‹©°åü³ž—és¿wF4',½¼ªâTSˆ(6<¼wŸ Èà8&åtÑD~ ;Æã‹·óøV ‰Xà‚U‘ÜöNÎWÞ®– mòO BÀŒ¾5ÅŰñ´oòœýzÂ})*K#B¨f y§Žå g¤Y=akÜü*-·pì×Bz¨Ín¹PÐ̺Aý@·»UwÆ0íE¾× YmLEá¤(uìVWÓxl—‡î ,­É‡Ïá)õmzªó;xL^5Šy=.Ûi¶‚Π]ú[ÿ)4±µ{¦ËžkR¨x0ߤºTI(²ŸqrBíçðœºa>Ÿì™¢T…š,ÚÓ‚oSm1vÕjú.Ò9È7d !˜ç_ÚJ&U‹·Ù\žè>Íç$sX‚Q¶ƒj'ˈ°%vÒêÁâV›‘„ òò„êÃjç‹È„»äUåòîÎÄpñÇ1üê¾l…þ<¿ ‚¦8@£7íHÑf„QÞ§äób>ô˲¿ŽxÚB>ÍÀ™eÄv±6­ŒjgÆsXKWi )0EhŒh¹“+æ,´§4Tè¡P¯Î­Xh%E|ñ9ÜStz uP%‘Ê”;^âÀ%´¬oo‹w‰È{e<¬££wÛV Q°sxµÙæA=øýeJú’; K ’seä¶`AI3“éûÂà’hoâ×X­ú2~2S†èš!%é/«ädŸÇ³ì…‰"n-ú0¬¾§nIÈ" ¬2¥ ·ÿ•ã¯N›ÄIào_ eÃqÆubˆy_¥Ö´JBõ¦ÅuÌg* êyê(?d7¥3X®y›¬3ÁÖä±=ýÔ‡£ãLçÞáÇy~tMOzñ1H|¶<ñ¬ñ‰ØÙ$Ža¥XjH&Txþ”›ƒ):#¬í®!˜ÔV¦ŒgBWc|)MÑNÆ´t`Rh–4K0Š>HË·²# V/!îì©Îèý‰†ÇR=ûÉ«­D röŠãÄb{ª{céüa€$ßÜÁ䎮rÔXJâ¢é&%BhP×1mäöt )NG(<]© ÂL!P*;ˆG'²tuH e¯˜5Âûè¤iÞÞ›ò:ÿܼ”6®.¡¥ÂŽOŹ÷€*®ãäx ÝÔ;¶°Ý~TçwÄ,„!a¹÷>oMnÜ&”D9~Lü5Ck.6µ¡_)\ ]ž$ƒ-lßnår¨˜G»™§¹f¨:õˆå1Œ†Ð Q^•¢þýW~BSOuª™»úG*»Tùªípµ_yÐOusZµ¹Té$³‘Éå,²‡þâZ[Ý1Ûôž‡“ EøPŽ~ W%ž˜F7„öÖä2ž+þ&µÔâ˛ѣv&"‹;¥1TU7*rΉÐ+ (Üæ9ˆxÔÚÚ€óuÍ©J ‘ ÖŽ6lRögªæ×Ä~ªó®lˆïD u ¯$›¶ï/¯àtãB.rpFÍ~è–3Ãî§:½ý!(>6l¸—ŸÈÌ” ~ZʤH}·É~À鎄¡^ó¥šã¢diM}rO÷Oã]SÒ¦sŒi$ïIÁš ¸ŸèÜUw܇ñ™r(ƒ¥›zRñ%ú¸›©¶^y²ÎFÌa•á±ä›÷»û‚x*"Vsœ†!ÃÄñèd ³Áo0’ õë¸6’‰•ü4Q2&U›BcŽ ·{I½Õ«iâ¯Í#d¿»r¶¹MR}ðƒ1œ\cðZ¹Î•TFË)›svè³_gÝ,Ò•êÒFác¿Î3I$¼Ìžªj¼†÷/$õa-Ó‡>‰G iqšÈÝÕN%ï5T:þî%<ÎÎ>Ra7ú­àM«Xó(Ç{#¿GÀM³šÇ¸ØA´n y#™ëÜö0¨â¼F=!¼å¨ÎëÁ'öuÅ¿¡ôÞi¼nîáó*§”hȧÄûÙBÐ}&ÞÂßí‡{H_I¡ÍUï¿È’ìåP0ì-ÈÒo·IîK]LE´ðê+ü„׫á—X¤Ž¸¼N#Jö’ì›ç¯›L;ÈG|R“äk±Z§™Õ;…yÂ¥­_“‘¢pþÅ‹¹èLWÆ]EåÈ;&-ïãó%ñåðŽêч'ïá4ÝÝ.‡úyENó"£å%x8Ílc¨“L¶²¡ÑCò™«–¼‡·º6ƒÞ¼l Δ+ÎÏ¥Îxñ™VÅõœÝ¿t8"¨+皥µóxʵ^Ÿ.È[}¨Mëç¶ŠÃZ{4`Åäý±H{r>ÜqÇJWmýâr‡¦lÕðñ[s.¥æ–†}ä-‡rĪÖ;mLÓÖþ­7ÞtzûšÅ:ŒG"È/¤±“ïÊå#«l3ÏâzÖ̤ÅÜ"èkÍ6´ÎyA¡IfÛê.Ÿñƒ%ÃxJå)–Ú$,ÆäÑ„m«@± €h“þ|Ûv|2ãÑr¸ŽŒWëÄ‹_“OôŒWt×>ü«X{ûñLn©Ð´ÛÙ°¤×'×`ôÙ~M~j©9Û ~W4æ—ß¡Ò:²¨ÑÄæjT¤Þg½ûq++«îÛX…w¯&z-/¢/cöÛZü\ÆØ6>Ü=Q޽$`ËnSV¶mÔC.j=:¸¬•Û5cð¡ò¾v÷·°K× V¡¶»Ý^¯uyòv‘WOæ±§éJo­‹8ÝA^é ™ÉP¥ÛïÖ¯XvÚŠ¿0§†UÏ¿äÀ§|Ýè?ÔÙ:Ížx\9"ÕÔ».ÂíÝ#H ùÖm±úòO+j ½x¦bNñ:ýñ¤õˇ;Î’)7,euRJ ËaIu¯T~W~Þ6”À\ÒÖ=]Þn»¹*óGüßsŠ'0n¥Æí†÷- ÛÚ_ú¢8»‹ýœ龨˜¤ÉmùŽì%Äæ pë|Àø&‹ˆ|X!±ßòxuªÿ0vsžü"¯1XF†Ã¼8À_ô5bÓdB ¿etÕÁL¿“ןý 7ñª¼\•Õ*Ô~WâÜå©GÕéJÊâ×í’WÍÞ¥ZKéj#pu ˆÏúæb§Ùá1*—´2pÁ«Cm=¤˜IŸ^»Ù©ç¾å ¼4%l(áýºø$Ó6\;õ–sÛU'™úÃG²e`ÀŸö&HÉ\ .ÐÎuÔ/bé g"Žhæð|m5Ÿ?%ýLù)kõÎu+tÙ '²ÝÚr‘‹óŒt=J±æoÍAòtR^ºâH…KÛ‘´ý:Èþj'Gr¥€ôtr4ç–û‘„õ±©î“^”yÿt£\;o˜·8u¥Ë%„O„µI ‰¼„ˆSkÓ®£©Â¯Ÿ£åÊSžKíÜw¶”IJDoCÒ•ÅÀ~¶dÜÑ<*Åä“Ö®*qݵÉä~^&Ôöä”gdÒè]¨)l ÑѸS´Û7ÜÂÄ‚è%Rwç/ø¾`Xè:oቛ;ýVt —ŠÞ‘‡Ù=%z©Eý]ãý¹§Íôg¢YÝòÉá_?aX"ªk2©Ø­nÒB{ž‚‘5ÆàtÛˆ´=uTi&KS)—;´+„ì M¸ šO¸ëÕäŸ.ýé}‡qõ3´°·¢ˆEdÇÑ(COGÒ»Þ&ìšÜaV(d£_†Í±0Ç7i•p_(ÍN1@E& (ÕÂ|¼%O¸fÀ”Ûø\®ÜkãÔ/™4I/7mq9ÓÁA æw ‘ áÀ÷Myzñí:Ð×ùÌ+Ç ³ÎÇýGÁ¼uÀçâí§˜ö„üüа#°3È0Îp®fÀRßb†µ‚Dc壃’*õ4’ó­©±ê ©§â–6ɤ{¨»>\¦ue<gÖ}{öûÝÑqQ˜feBc\tMq”©Ã':8:ÄN2ò8xù˜¢<ì4Nò€¢o4ûüî÷Öf˜ ½‘‡’lÐŒE?ÑÊ@áp¾ýµ–^ÑŽD!y6â=àÞîν6{Ì™ÄÞIÂQÛˆyK7€™iª„Ãi_’›kÝtx¥¢i¡pF>§Á#“:GN5¸Þh0< >aeWèŸóânkâ6¿$N’f3ð ÙÀ {s„½)¼>Oñ‘>hU …sº¦îpOHª¸8¯Ï‚Á±Ô™Š¡µçš¼o5ß½ ™»ãuŒîz¨{UÁS \1¦°ìH=P­6Ü…Z«¨]R>ú»Þ•i°V½ö¡7uÖÅVÌR©ÕOŒÅá…¿pùÆé7¸[àóªÝú-×ûÅaÓ`—ʳAŸæ˜—‹˜%TCèF<£:ß=AÀl|WDÓgPž3Yõ¥3–&ñè•7yi¨ûÊïB0ýq,PZ#¿Ð.ðGÒrRâÈѦÖ´åe¥ú/žû£Q=¥Õg¡Ï'Åܪœ@ªô´y%N{ÜyËË;°›ÍÍ=ôß1ë:þíўï¿û1^ìTºúøIOQÖÉ]²¿2q¢vˆ |ˆ+‹e\º•~% ÞÁ‹:C`ˆÜÿ9—ím"`Å…b¾¾ʱàU#)9W#t¸[LâÜdêŽ%€çTJŠBó}ä82R³nCyÔKº É8Œc¢®Â®DOËâjBú@ø£¶g +az=!?–‰ñZíçæ/‘uŽU„i^¸Õnû)4Ã9­¿’Ÿ¦õRf&-QˆKbdÐ52jÓ5§ôwi£Äm•¯Mº{hW&Y­g®fŽM&åè=­É»ðDãËØëùóÈÛÞ*›k@<Á`OÌëωΤaäÝ»Ù4IßžÔ —<Ûõº`fŒ&JR›!sË2+J} tUéF±Q[Ó® Ë–Ê( b=¹ÝÍéxWUef´Éy•id‘ÓDÂUШI@ '»Nêâ7äG«·‡%—.×={\h>­%CÒ¥ßaoS È ’ÑÄJ—µâ§òÒCæõ:t•ÓÙ%bU\a£Òb÷A@¤ëI‚$tâáôå)·[x¢Ëãmâ_0ã¥|»ÝÈ*ƾ'µÔ½µZ²Ú›Cnß›é%V1„”R9¥äž#E×Ls_`žlnÊ/ 0GüŒ* N ºC¯æ+:´èT-´¨EÑ;Ü ¶H!_B–Ä\MYTë·Ç†˜˜Ô91™«O (­^Ä!N¿´~já\Á„‰‘óiÖf¬–\lóǨ8Nñ4ÂÍCx…¿L4{Óž èk¢Y²ÃeÕZ†§x®ðÄ"è‚sí{|§T%Êg*ÛÛf½ &5ÌX ë¦$Û_Îyr²9åMÖŒ/©îâöŒæxÐï’Öœã)òɵF4K)ÿÞ¨ªC³WüFô«±V”+à•èí rzs+ØivÅDÝ Ò­ï›T.û)Q˜üʧ‚Ä 4d>‚¥rŸåˆ{ÔvxÌr´Î¶ N ¡J×ÄgU»Ðz"M”Y½š«º C&½4ü.­ÊžÿXôîMHÛ‹~¨uÛO‡ôóZn÷Ý!ùñ F#ø³ÂøF“XQ0¢ƒ3‚VZeR'[³©ˆék²Eò ׄ•È…N;{¶kùaÌľÂ@œ0°*ÄoŽÉŸqvý+gû-7LºdùB¹UEç6”öß<öµ/µYw44© ö‡/o+«¸ã,¨Ü÷pIæò¨Aiê›E§Ú ÛìÀíü¼¸©§UX"Ù¥ Ó²&ò~›a𵿔v²öÜpœV¦ßsŽýo§²ÂGa¤fÍîar.q0—rl ;DÕ¾g¢­e1ß”Wñ}«DtŽÛɆCìOÔ(¨HíÏÎ*¢"|‡jfqݾ¦bµÚd²~U€ÎZZa)ôÖZr{Ë™ý$áÛÉ ‚Ò– ‡¥pÓ³:å>¾}ý„©¥ì¶hЧó5>†| 1ôNÀcy°,%&¯20,—JÎÚëö]ú\ÉÜá݉ ¾«JUtn¾ÍX\Ĩm ~ÒígÑR™ê÷odZ`va5')dÀgjé!«[žùpcúĆÌÜ*—É_K5øj9(ñÈãQúv°“š”¦Òy£‹í`%Øk§À¶ šÃŠ^ÐmÑ“¾O÷æÇ[%©\²ÕôóÓvy >ñ¨iå²_vìðƒþ\¤Ì$ÈÙÖA:2J׸¶6›”™3Ø-J'‚4´ÔA ´WïrÈM¼+Gþlkg^©À§{Ñʆó[uè8ýƒ„s+ÿ]•ÈóÎ?òziа®|ýAÍaë¦Ô’ä“Ëôt`¡cXãxGdÑ"Mxz¤¤Ý´¨¾!­˜x¦ á= òÒ¹G¹” ÞãØD²0ÃåƒjÛ`'ùfñ6–ºGˆmýw€‹æ·¥.Oîë¸þVé¯T˜Æb.;cÙî¸+&+X"ÀÎË Ür:?[}"à1VàqàñšÊßž Äµ$•_¼Ó>ié/6ÿó‰¢KÈ×oÞsHQ VXú¹·Fá¯HM9ñ÷Oð@°¦]ü©#¹8ó ¯ôfÂÝB[û„‹=Ç—Ó‰º`í`Ûð Å+×!g]0.’ •àwd2­¿¨KKgaÂêc~€Öð]Š!†oÛV_"õ™£^PàóîUEž]?j‹ÀÔ¨ ¯íôqQ‹Î¾æ¡ç"Ó”z˾¸Þ¶1!Ï ÒQyúƒb‰Å‰ïý•<ؤ®ï̘ûBiÈÄÅC‘ȶÉïFKaVÎ_[~¿@ÈíЃ™Cù!Ï×óÁáìZ}H;•oÓ[Å‚„ÃÜyp¶¬C»@f0Ñ?¶#Ú€ÙøèéÛŠm/¦úSìp«O7+l°³Ý~|ëÁ¿ Wð¬èDºü´Q–¦¬ô»îü5Uïm¤Éܘû×GâžÔvJð»®«É3yùËÇ Mì9¨˜b¯Æ­5èñ9†<œùd‡W'´!Ôx³ð®}ÛÉ$!w-ÌÉ›¦]Söy;ks&8Â'ú† ;ør¯[õį%q níö’îp‹9Vvý#H ¬Î[Jæ Œ #l‡u?ÂîS.hØI?F³@x~gÓ¤‚WÙZM|ñrVS]³nãw=™7k©âæâÍ ý@b’¯á®Cý1éC½4'v¼j0ºÝò°œÝL¥Î!®?7ÑÛié$IºªçÑ7×`JÉ>DÃòl + ¿fVGËO襼ÝÇÚ øm¬Ÿº® ®­l>UðpƉ –½¶ÂªÉ~5×ö©R¶™Ô¶Ö›{Au:žIÓ¤wj60l bΫƒþ&“¸yh¢‹8W‘WMæÀ¼=l–²÷ÖÍ”@”ªào+ë’&KÿiÁ{â'®Š¥m­È¬ ½3Æs—(¦œ$_Øl¨Ó‡1)¸›O›± Ì(B–ʰ6 BñUkmŽ›wÔ*ŒþYSÊ·Ïç÷9˜Nº¿óË€VÛÙ%~ªJª˜O„fUšžò~{çƒ*rˆÞ)ÈŽ’™AØ*¡ÓkÌuŸ¸¬d•®[¡acÅú‹h mFíYZƒˆ:ÁÉ@®âÒ¼u-ðV,,õä|ÂÄß6Áè[Ìfÿk-Ç Ú),ç¨Á[k]µ™¢ ~)ALø:j*­¦ú²{§Ô>ywµ#bÁÏI ï¢9„‚w—S2þLq݇)Üu+mÊ/% IÍÂq‹Ö ¶%¥Èi(& e|lt‹vòg¨õbÛ½¯­’eŠ©]<7ǃ±)ãýÍB# {·²¶°+|~=6à‰à@qôý9«º/YVU5-UŰaµE›ýîX( º÷KŸC“V[™õÊÉ×¹µ‡ÐÓ‚âÜQeÇXõ¬¡ñ( Ýõ3ã-^*iÛ}üj’­çHþ†‹|®ÀEôYt~~x0ñì‹Â­~¤êyÉ|qÝ þFp¾¨Lð§üª6×Lî`øË!•ˆ ”œÎÊý‰€&<é/22Øp²•£ˆíZãþTÙ)ª$iiqªàœh äÑ’ôõHâ¿«>œÿŽÏÎ(OÚ–±2ËAz“œæÑÅ”%h»‰ö’A: œGÖUm Þiêªçí…Å”øÔØŠ˜!îí Bô;Ú³Ps$I%_öãÙ$z^¼ãû)l±+CÝQ qIâD°Á@‰Y»Ðj£ÊÜâ¹…žvP¸|°4ë89ò«ëøÑê‹ê Œ)]ݾh…öŒìåí0»$Š; ^-øóaBÔ*†k±ßs¢ÃiPFÌN={Í]»ínŒ<Íe.nq0^I®\W<²1èâWoLÁÈ…R—ç»o-'X¡Ø2X®K'\£yp!èEö1ö§}KàJßüý*¡µX'¾r‹«µ¸¢¯&1Vaš‡¹öó[ÀV6Ð(û ²)·VÿD÷–꟰–”!²{ÓBBE!nßÙ1a~¬û`ê5u(6©xæ_ bi^^|Û†a\ÍZª6ÄÀpF‹2‘/bö–ú`#`+ÎŽ%c¹~ãÏÚJMٌ鬭Ÿ¸ G§O9hYœ“óºðÄR(k:2U\Ö]þéþ³bO .lEÄ'þKIÁÀ õát“P¢Œ_«RµñðÑÆØ·«ŒÇb-àžôLùúÞ¾3LÍÜîÛv­=xd­"¾c^Þ«\.Ó"„]Íô›^Æ›V‘&/íRýþä?X¶Ü*pdzFúñƒvEpÝ»qº5?K7©E\%ãÄÒÐd_G; ò´œx^ÎÐ;H—ÿ˜rÇ)£\sÑ»Œ3¢ÙŒj¢ñrËÅßèÊÔvEvñã«iç»§í aX]C†¦ÚNÚcÎ,ÿHµS ù$/Ãáü­:;GñB曽 ì½K·¦‰S^8˜Ë­áå ‘C@T ¢ÿÕlþšÅ-Á—f,(´qÍæX:µû"‹&Rs$÷ôr9Ûz1 €´Pæ òк#9y3ØÓ£?ÖÚ³ŠÆeFòY{úÀÙjÏ|Ç9Åj÷lXå|¤êóãõ ÕïÐ7Z¹‡¥¦”Ÿ¶ÑÆÛº./øÙjmë±ÁþI®†ô¬vl7 ‘æ÷¡ÉEò’¼~)lª™!-gÚ@r3#ßÁÀè¶r[c¢…EÄ•(¹ƒÒÚ¢¨G*5Ïk*Žg™a¡¨ˆ2ƒ¯ÛˆcÂ{àŠ¹3•™˜zKS˜ÙD)Pb5 uƒQáþ1`éí;ÐŒÅó e¬íûÜ~|yxf¶Cz#µ¦0SbæJ:­z1è;’&èÀyFÁä¦T4ä® Áö»k“yîòWn2sË^ §M XÁJ Æ :5?›Æí<ÕUe1ar¡O;yÞMã9Ú'<©[¥…7ˆþ­¼$Å7!Öìð±ßcÄü®³q‹±r¥ýMdI ¯;Ù§5ö´›á…kÝ5^ˆ±|Ûº…ÄGXÓõT ´Þ®â6®”ñ1Öo¼Õ1¶ã‚zLœPà™Äö"ád³~Ù»ÞÆ¨ÑUÂ0(µÍ³ùê }SÒÓã¸ç£ ‹ ÑU¶„éY <~nð\P7ü¥ó/©3ª_¿ºlÜWL¼Z⛄-ò©NlÉeË@Ñû `2rT[×{rEeHîÂñ„6 I2±·%ÙݰÜwüEQŠÄN ÎÒõE§!P\"¯³+Ekéþ·™óµnö¦hˆ€¥Šz>¯li-ZÅÁ½MK&—EWP›¥SLô ¢UÙŠÏøŽ:Agv­„ŸáÁÁ~§Ô!¯e­«d4jisQêÈΕ>¬Nµ´·I£ücØ7s"?Ç0ÑjµQ »ä+jý¼›ÅXÛDö‚ΊPŒ¯‡À:È?2̾xê̼@xój^üm›e[ŽÃpGKH6¤Aº»{4HÊh.i”õ£)éGwÇèînîô¹Ÿ÷ÿoqÎuSLÒ‰A𨦉Üíl%µOiÀÁ¬ê[^Œ ›´¢’‡Lh.—™E÷6d°V3Wœ0Ùϳ£Õ¬®îîp%±+P®V ™v”qâ   }lψ;—ÜJ12)Þ!« z›=_ÈR˜ù€hL¢Lÿ„‡ ý6Ø b]¼Ö€>ŽÉ÷f¼ÓCwD—­þ}ÿ?ßì“Á`ZÑ1@¯Åÿq’×µWk´~àægšz³õönúúì÷¨°Sá:EhžýL2¿D7^ä}ñõ…cƒöC±Î‚×"öȆ…û×áNÊØƒœ ¸ÁV5ü]·›¶a°³»ûRG%=&ÔYbæäX7-yg{lL#Òkp];ðòλ×Z§wtÅéY˜‘²@„‘óè÷oýœD÷fŸ*Ó8ô¬_÷±0XuÈD&þvDqeư^É)·²4ƒ1 ÇRz/’¬,ÉG¿N<³D¹žcÐ[Ö<œÓè$‰Í"³b l]²Á¨‚Ì-ø<*¥¬zÔ©áÒù{h3Ç»c±­¸[ÍTâ?g™YUÝqt&ºýJnygªÓÎqKû±¡PXŸÁ‹œýƒ²žn^&ì¤v|NÓHàÊ'#­J¼f‘¯~€ÝùýXøÿgôØð+L #@ÄøÌrªÀ!" ]ºÏG ߨ¼†G,º­÷i–4(ü‰é&Úñk{uíºÁ{ôDy Áu¶ö,™_´N~Y¯\|›mvÅ2´BgYòÕ‚o’Šít½½_Æd‡yËUnE|׬‰°R^qŒp÷Í2Çmó<ïôÿ¦9yñ*öJ<“uÍMa~_ÉI•ªbhÈAíÃ6$O%O(¾´¯,þJ)÷h²9ÇÖøÝw¥¾`|”È[BÂPöV¹ z¥Œ%;5üØæ”ÀäÂÆÿöaê˜×õë4C¥žAÞ¼s·S¸ÁßšÛáŸÆ«L3xýܵ<›žôœ‘x~’+ª7Àºõ˪Âô.”Â…Œ¼ÿ­rä£WWYOÖ$ÿúú,Cݽµä3;Þ¡øió7šcN7~ë?¯Ìê|¿¥K ,ý‹TÜ3æ rBå!?>?Õ%;*|&à V›š7ŠMÉ…ô©ïq@k§Þ¯ëÈšT¢ %|ˆ:mBÐEÑ¢9 xœ¤%x¬£*–»þ…÷é²0t/8c±u‹|ÉfÔgV¡oæêÁÅ„ûOµ ∰åg†Õ6;çgƒëŒ8\æ ­à1˜Ç)¹²Ÿ˜¾J¾cŠ,N[z£?¡pwÇØMÔ*Ýjà*dD§ª•ÿ¡ÆgszÕÛ)õ]¦sã»–¢ýaCt.܆FCC‚_äªüNÓ ÷Ëú%{/f$´¾=RŒ{₼Z‘¥ÈpI˜ A1+ nUfµ¦ÞXq@4Å•5=üH…*pϸö„BÜcÅ~ã€T>ò¶.¦«"ߺü§).tÑ ]JÚänçמ£j:ϳø~™A”9ªÃ­†ÛÐW5cÚÒg«ËÝ$iÄ{ÑŸ ™ÇÒ²ÏFHBúÓïkQã,$Y-±À‘tï‘]A{•Ë`Ùz@±³‡òûÛCèù)Ýu ½É\P®–{*Àºiç‹<9–ñ‰Ì­¯ `¼ÃÊáeÖbSkÀÛUFS2P5 håÞE>0o×´%#GÏåi¬_¼‡”Eh†emöRH NJ"ïýü3çÈÔÓhe.™£¼ÁðË%Äö€Ã¶ô/Ë€7]ÍY1M"Ý»³Ô”nņ[â¨ý¡s‹ ÍÖúF¸”GPn•oÍpæÎ,0:¾JÑÚðf®9®bÖ⇠¸;‡ØÀ|¡:äxwˆÑ¬?Hfð|§l^œÖ«ÎŽñ®ŸÜñ_|¹ÒÿØh8u®õ¨*¶nkÜ–(ý»1.ŒÛ¶zŽÿU-ÑzŒB•;¨[h‚ºÎ$‡;KOµGƦ9¥[Xiq=¡eί=›¬CÐ3Ê&Ô@}È–*ÃÖ¹yã5¹7ŽðÝËQ­f(Ez)¾õÝÆtÐ F#í4V‚¥Ç|„Ø€€Jƒ¢•-õ’ê¾ëËŠø´Ç¹•s¸-’gd&Z8UtlÜ,ö6ã„À tKD5fÇ Ì´í\òãŠõH¡W‹0tI'j ÜÊó9LÆÑËGV»=€ÏÇ•®_ð^lԗ݆úöWæ*“?FZ:¶¦;õTó)V˜H ÂíºÕµ›&#¿Ô‡ä³*©)ò†J‰Ìºá¨¯:²ÖJ¼m‘±Æ÷ôG a¬GÖ¡´8XnØ:éd­OÖú%ë]œå˜ÃÕ@x‰~ú»ûYš;¼"˜-ôî<)ೇ…}^yÊ‹Dos“ÝŽkÌmÅÂ6£uäO¾$Œ‰ ?ÈÚ!ëË5Fj>†õ¢ù4D˜ÁóÊ}`¹½ªÔÅÏ›àìâm°w‹ÚEe,ê¦îµè*:³çàéþpufÝ/NÊ!w‚qþ"òÂùŽÞN y‚m¿ÚtŸß> –ƒ¢]Vüáñ³ºÑ³–Ãf+WˆLº5ð/ˆqä’UVp¾0ãµ>w’Ýdf¨M߇xÖ˜¼ R즦äîî ÉÎë¤Ã¢ÛõÊðM§_÷·Ë¢½Ô\»Ûb&¸ß#†»¼ÃÞ2£…loÊ”KâçÿÊ@P´¿7,¶AL4pÿ+¨EM =ä¦Î]ÙÀ¥^Z¦»™¸ 7M-{AKuSÈð¤ÎNÎ #³_¤9Ž<º¾­ÓïÖ„g9;)ImNèé6U¶?a¡°·Òäå&¹Ä¨¯1F©Ôû{­•}žÐ¾øAdå,ܰ[L‹f7É‹‚/Õ³ÂÉ&ê|ô’…"ÆT˜ ; 7Jwgõ°¼×ÞV]GÑD¾:Á̪Z)×ÄÕC”N1ÿS‚î#±—ÝŸ­P¢?ÞÞk:"-ÁW¬“€™!ˆ#ŸÔ…ø¥l(ìOã`?æQ³è(3?"kÚ•AÊîeR1·à&RhÚj…oâP¼¡[C¨¹[ý®ê; ÝMöU`\胟÷%<ÌüÈöÒ|Þ¯~ÅF_×e‘ý@Ê¥fNBŠÏPÞaä™7ut-\ÐhË‚¦BÊžÄ ]Õ±.ä©%¶ñOÄ:^Ä S;«v‡¨e”„RíU´¶Eã°Þ%ncìwèó²ù+»UX=Gˆ8æv+ø¦ÝÉ.tX—‘¿˜p8ætM¿ZñÃ(|Ì>VuY³‚س8«&üÀu¾!0T‚òX^Èý$>…“gŸ˜p'Ps±ætàËö:µ‡^÷PÐz´ûSu}YD7iuzÓ´Ÿ6Y‚¹N¡¾I`š% êI¾ùÀž:] Ó\±åÖ/L/¿w¢Š‘éÉ÷èÝ|dWÞ‡«)¾Fí«Uk‹ˆzEÝäê‚j +}„@"Ê…áGsò@†ÁÝÞã!:ÏêÜ$¤sN#kléÃa¬|Ÿ-É­ ªÑÁ[átó©¶ŸR@YüÁ2 OŽa ¨pN”àt¬€\ßw "ŠZö_êêï«î3óÚËw>|\éÁ8=.eã Pñs%ì\#-´š ݯòYuW;õT?Ê9•í?Wk}ÚIätÁ…@}ÃÉÝ·a‰É%µ¹«*$6á>?ìt®0±±ÀÄáåªèaÑ7~4ù  ºjâ«Û.ŽV#(þPëâñLôx¿[¶ŒèVÙÕ+i‘Öæçx‡âÚ¿6Ñð:ÓŽv¥Èú_¯®µÆ3"ˤ¥¢Fw4ç…ÀÄ[W«Ô¼PÝ aO«y…WËï¨2è[º~sQ3.¼Å‘¥~vnk?ó"gŽŸU¹å×óÏEܱHÜg饔ÅÎáUî,îD’æ P©ki ™Šä¬§AA›¿¶,´Äˆ>)K'*º¼nÿ_IïeN9;[+m­)q•ÁåÓ^,ñJÈsMY¹ç ÜRy_Ð×½Zˆ[ë»`˜£ÿ¶§Åâݱÿ(®Gº?âc½K²  ·¯Èçw÷íèˆþ¥,’¯vº6ÖoMW z˜TˆâïÿV1*é^ÅW#óeÛ»uÈüÃÿù#ëNÙ°0Z+ðañŒus×Òþšè@ó["S{Câw‡¥“ôÅóÞ%ê—²µ&=îDïz’R‹‰áŽ¿ŒvöczhÔ¹ Ë—ºNi@a`<¿¦ £æCáo´=ã{TÂèÞüœ½?d]L!ÿývÇó®øAÕ¼wMÄÇ8­ó–qæOn×Ö7pÜ•z¿%ù£\€÷%#‰²õ®¸¯›ûT‘²mú•ï,ÙÓ‚ PÊò™³âÇ­ÈSýÓWݲÚw8éX}“Xg³aržâÓ§†Bø¤ôB|¦ÝF&Q¶ºM‡!Wª8›€wWS`=™l ޽Rá:ze!±ZÝ\ ²m7û]6˜iƒ€FŠè¯î¯~l'QӸލþñþ;JPz£÷”Vþ€Û62NŠ3^J¡=h-·êßd†ðïÅŸò#mÓjºè¹Ò>ÇLSWGiŸ©ìò¥JÌËcfö¼ÕD‹»‡¾NËVœ æRÌà?ÁJu¡ž~=¹—fs„+|úÑ1Õs ËÁ%C$ƒ 3SÒ¾M=_LÙΈò”Á¡¼2w1>ܵ¶Ò4Æ€h„h}çŽ(aVÐùù¯&.±ß^GØòH47ÕHNêø9uˆ"¾]‚nfY½Ñ/È·ð;ç‹[l˜An\ªæÅÀõ± ýñ5ëzr6t¬~`*§²“_lïÿˆýzZkÒþý”`oTC7Úx_u;kèxYžÓúúôÆçõ´Û’ÑCs~¼_<Á›h××a&íËjž—·}«ü¤Æ< XºëÏ÷çGÅšë*‡•<¾Ú‚‹Mj€úoëGÊ­„vž¶ÇïC×¶%«9×'nkÆRÑÐ ¤0hQ¬ÉÍGH1ØJmÐA²ãåµþQ˜˜®¤t¬B^Ç(E•!ÀSp|ÀÊþÝêcaïø<ŒßVO_Õâ´…ö¿iaÞ—Oë‹<‡É]Ùš£4Ëü+«Ô¨’ £ë˜ª/ÿ½F )+NŽ 7wËžúÄQqÒ/…Q7TqY\w/Zë­‡W^ûÔu‘q’ãÚߘîhÄ„¢Ä&‡h¼Õ>{óù˜ë®¬-ú`‘¿ZèŸ<%œ5vê€I ͬÜáW<ËX.ô;jžÌ.ù4ï·/‘½[‡,V0ýQ2 7ÃØ?˜×.}(av"ËXï'¦U‘ [ÑFêB­Ä—¦µ½\¹_Ê€ƒ•b©¹)HÌ—iMrá÷£ àÐ9ð–Љ2»ç•(Ï᪠ ü‰„öÓľ_ƒÉ­| lÿ̨èå)P'Ìqm<Ö5–¼g`æ,ÅAUŠBþ»óD¢ýÞ*¹ŠKý§ù½ÛdÛ‹‹,˶­ÓKÜ׆Œ÷(œÈ•S_'T°ŸT4˜‚)ŽÏ³ÖØ: F)¥t5åãÎ3ˆIjžÛ`Ó~S•óáSüds5oÿ±µuúö^ZÉã…Αî\:9*êÉäԓȶŒPbÖmÝk´–âãy^L ]¯%®ÒJ^ 3ñïó‚ì‘Ô7zöŽÅD³CýþÂþ$Ï`ÜÌÇ>ôÑOþz´! +Òàhw^…îkúæ¿s‘í…—siÙ=¼ÌŸ5ÎLjçȡۦWœöÇmqªkê“ËœÆ@ òÀ䎄lÊOâZòÍm“à ¾jÿæ,¹}Æe¯åûÌ+Ýåñ«R¶…›_‰Ý²=‰tÀXi–ö¿Qê¥0š—á™ÿ˜2÷< @,f6«¬ RLiÆ/¿“w}9d¢7ºb§*yøÉï$û-¥ùµSÊêűÄ™šõµ"ÈÄÒ¯jØpo‰†nžÈÕqQƒ¢Cc5¤UíÝ¢:‰ :Üÿ!˜÷<ûGãב丢¡yª:‡çºv„ÅîÚB3’‰jüøäÃNÝÊ4da¯ÞÍê±æÁ}7A;8áÆÃqÚp¼¾= W¡vhæÿ2Xcì,ÉÂÃëBNoá]ilÅÏú'8yõ¹×\y^|j5rEÁÎÿˆo¥–¯ÛÛ£.¼v~4qF¼8±¤ÅnÞL;p-Tþk # ³ÿPd¤º¨¾yäÐõÏa‹?¦õÖ]'¼ÈÀ¹"1ÍA–û­KG©*÷e¥>3ȹ ÃN"ÔËb‰EüëÛ|wûúÓ; TKÑ Êjò†ßÎ*ú«àVÍÁßЮŒ¶ƒï"ˆ_JÕxÿ˜¡-iøåln™ët†›86³”l|Ô-.v{‘n@”Ð~‚åecrØåÅOZVCJ@9™˜ßÙá-qoÔIòGÙJÿ0COV1›æÈ˼ý‚aær})”ò=UKŠ“ÏÛâ½ññžÏÖíP!-‹ðbÿôA}:«ksÈüZ®ôF% Êé!ås³ùDÆ÷iÖ×ôe˜r¶qK08r¸V¹o8»ðM«S5òy!«GØyáE)vMÎó(5ZluWcÇD…®È8ö^™?1fU–]¶ªcÔqçŸÃ‰+ žL¬,–WQ% UþƸ¸hFÖ¥]tÿ«ëùà T[ŠíZ¡íIRR8©6õ¾øîåø«‡?izª8ûæg þåЭ»cPçÌý+…?JرêŒ{ÐÃAìÆÜkG Á8¬R©´ŸfèÍýô§I3ªeŒo„sg úíÛß¾ÁʯWýŒLÞ¶»Ù±¬t*ÁöÜZGnçç3ÀÜP!ëv.L»-ÂÌ!ãwm¨ 5ò9,Æ%õú‘‰º²Ë¢¾%µ:…㤷keK/É©Û'Ω;"Ç`±”ÜR¨ øµ’¹†Gæk|ÚÉâÔ_ðlü ó‘mgX(bõ·•ih ˜X÷ÏGàÚü°7éó›ç,ÏO£Mèç …«íÁÀœÅܼ×)_®ç.G„æ-›Õ¡!ÕÅ¿¶@8Nž»©\ù”Tà7Yo÷‡ýæ6"¢ŸÔù¾4|šºÄ»~ؤM£Úl|?ïþÂuA*¯<)gõ¼Ï96ËƳì¨Á}ìÄ‹•zp…?ÊUèc+z³ÚâÛ%¹úžª9ÿ(añÕß©‘¶WÎyæ:ú#˜ È€ž-E A< ÛëeÒn#Ïʪý…% 4Y­ +îïŽ\ }¦?þä`]RŠn]“ ea;ŠáÈÂÕdÝøÔ~Ë…ºKºßÏžF¥|°’ȱ°,lÒíÍv[îõx¯ž§¾mq´ ÎÞuΆ¿I…JM´¡_;$DµÚ.©JŒä“Íw3ÿ­}ï;Ï¢;{EÛü3G’ò^"™RM°„.ø²&ûïÅýÄ9(¬¸(ÂÎÓ.ú«ÏiæÈRù%¾ ”=‡ï•󴬕‘óñ"o´RŸ)ÐÆi†XÉom•éi5l4\Çž¬ƒy\c¸ùõâJD’Ò‡F9rûJ„–‡ U짤ðjrÞê@qÃë6çÃT0të)쇼*wÚÉcñ» ]ñq‰9«#QºDbýwZ¶Kƒ•S7—€“«,k½x«võ_Þiùȉ· è,,gsÇÒ£ú5˜|'”sx{øÛŽ ºcfX@âo”Ç ôg†n{e7+ÅÂCa£n?4·Ü¥$Ãïi¿½kyéÞëŽK5oVЗ‹qéìhGΦšÚ3a’Ë+>kÉ_ˆÐ1çì* ¢A5îÊN6 +:PÖhçø äa3'IZÿJÅO§e‰ÏkVxFf†,{ñ–Œ¹5Òfñ+Ÿh\ƒJ¸¦M{»ÍþÅ39Ãé´p…Ài]íðû-$b%ô‹ò€"_eoŠ`e.9ÏK@• sJë—–£h²Œ×èç/Нˆ"ÕPû»x0?rˆ@Å R%AéÖ5ã_ºªÞB¤pº×æ ç³jxiR𽝏²£‚ö9Óº÷¶übHm¾I¶Ð6Jëãª~éW}´ ؉Ʃ'­Š£ /´/ÛÁ&ÀÿâjÎÈŠL1åÞ^¯Âu4^‡¦PIÇÜx0#áS 5Ê„œØ_âífGŸzÛÌDÞ9Ô³tñо{ú›µHˆC;sÝ’ó` }>?…Aç/"Y”õéç¥0–yžbSìPOÞh(ÞŃó_ï ë°%ojØX^Mb2k§ ¶¨ˆgåi—þœóÇA‡ÜçË´¼hAŸáÑ)gF¦ÞâÙ·¢‚²4›¨! –ƒqUÐwô?-¾A˜–¸O œ™ ¸j!`gc»¬ý¢Ã +É,ËæXÜ(Ô1øÅx»ËVç½xÛÁÙÄM7–ø ¹÷ â7xZ¸úLý\¯Ì³K¢ íœÕÆ¡êÏJG¾,9Ÿhé!¯¬“ÀÏ–…j¹Ú’sIÛÿ=ÆQÐfž™û’û\EDr‡x.qþ¹5ŒÒÆ öü€Æ‚"ùÈ£jŽK1Æú^ógø5} :Ôh;ó•äz”™µ——ù£H>èTN>`Sh(6¯yͯ\ Û:ìÄkÏL !ÀT„Ïcˆzâ,€¬JÄ@dâ~z¨˜œáog”F Ž4ßÊ2θ÷}ð4£ 耳r5ü«w:â ÖøA¦ƒV†Lxc´WöpuÐ!eË’ý˜ƒü÷ÿhºž endstream endobj 113 0 obj << /Length1 1832 /Length2 20043 /Length3 0 /Length 21228 /Filter /FlateDecode >> stream xÚ´úeT›ÝÚ5 ãÅÝ5¸»www'8Á‚»»)-ZÜÝiñâî^¼¸^zí[ö½Ÿïï72’3szÎu¬•dŒP“«j0‹Y:™¥@`fv6~€¢’†ÈYÅÜÁÖÅà`acãB¤¦–pšm@’f` ?€lP±¿‡º8ØØø©2@ÐõÝh 0÷(ÁfšÞÎ@vÙ?@ÕÉ Ìlnæön‚¬mA@ú÷ 'goW[kðßœÌÌ3ýgÈ›YØ;yºÙÛÌ@–y%€²“ç;i  sÌ6fV'+€&P ¥!¥®QWÑRÕ gyO¬áîììäú_½HhhjÉ0$Å”5¥@m&€Œ–†æßWM è½k&€²æ»ýowÇ¿áJRšbšzªRì¬ïÀðººÙþ-û½Ñ¼wøßÖÞC­\ÿ) ³ƒùYY===Y¬ÝÝÀ,N®Ö,Îÿô§icëðtrµ¼_]À„qY¾Ë ¶þ+ÁßE(ÚZAnÀ¿AÒNÿ2:¾Kùô΃ÿ§±w!Às:üËàþŸ26fnÿÄ*ªª*ÍlA` È dñî6»»LÿáÞŸ@KÚ5H¸»ºþ­¡ôß&×ÿ)óß­‹;½ß™¡ƒ¯¿™ç®˜ÈÝÍçß´ù¿·már³u»ý+#`eëüÛ½Ûß5³ýÃ)‰)ËIKih2+¾ˆYÉé] Ø ü÷ß|b’Šü€l<v>.ÛûJ,%œß»vCü+Ÿ¤í»N`'WoÖÿg®íANž ßÿ—·²YZýUÞÒÝ™U ô—““ü/ïw ñ9k Àº€^6¬Ëý3-iö¿ô» þ¾ÎNÎ+37 ¿­ðý‚èëfæ€]Ýþ¾ÿnø¿‘`ik~ô÷Í‚øOv9•€ï_ô{'ÿmú¯ ûg£Ò¿ïRK'ƒ7Àh…Ȫì~ºÿÿì³ÿ¨%íîà læ¤ûOIÿÓÏÌÑÖÁûÿxþ‡‡ðo¯tÊN®Žfÿa³u“¶õZªÚ‚-lþ%ì¿x9°Ùû심€fvŽ‘Z7”Ãû侟>¶¯wÏØÞ‡ÒÂtsp±ýc¾ ñ-¿«ÿ·a«¶¼ž¢¦8ãÿ35ÿ¸I,œ,mAÖn€™««™7"Ûû(pps|Ùß§ÚèõϬXY@Nà÷€³;Ø`åäŠøw=yx¬â©ÐG6«êÿ >^«Ùÿ¢VóÿE|V‹ÿAìlìVà¿A.«Íÿ@.îwäílý›Ç;gûoð=¹ÃÿBö÷tNÿßÓ¹þ|uû7ø~ ààÿPõïòÏî`û_Eÿëlýk€]ì:¶–ïŸ+ÿæ¢dvµõ2`{möwþýñßïŒþOêÿÝ•ÿ-.îäåËÌÅÃ`æ|ø÷¥çûÛ1—ÿÿ‰µø×1÷϶z_úÿÆÏè´@\^p²³ËhŽ(ú2UKÍÇrZ‰+¬+Ÿ ³œ5ÕI„/Y°CùÜ”MóÕIQ–ß( -T¢K†ãðºÑö©ê祚è®Y€Rª”ØX¾6‹VH¶ÒRPE7ý/ùü"½R®™ìöävR€Öر_gÏc<ÇäÆU:…aEûZ!¬gñ{ ¶«¦×:aÑÒT$øí;1ά_l™aÖ´(wLι¯k2®Xäyé+7Þ™ ,nBO.ÿ+õ)}JMäUĉagË7MÍ{”#ûkžÇ9C5Ü$.qRxijÆ£g_îfQ¾)Ϥqt-j[i¬!=fë6@7b†ÅþyYCjËßd{ á¹-Š™Ý Â#aA¿=µ$èØdHbß>&÷Åökï!‹ÑÕæ¢ÑŸ%{Þ3z3E ×ºo# n^ú¡Þ•|W `,)jò´†bY+óÏ8÷óF Ž?FX„áš'M£&Y 뤵}ªA9¼nß58ó!V|6\Ææ‘­¤2—ÃÞ¡”Ç ùŽ!+Ê5ÿÆ’×w9‹Ò)·Usrtz«,ƒˆ(:›— ‰Š?ü=˜’˜?c~–pÉ7=»S ØÉ¸Ÿë ­P 3Í…]-l<„C –^©;RôýF„A33…a}GYdÃÇ2ç:û…âHöÛÒ¡!S:¾ Kœ)…3qøÈT› Ê£ï31?2ò™Öxyñ'˜¸¯Ôð"_æJ~óÔP°¨µ°~cÇJY²$Â2ùÐà–P΂œÒòt_SáR,Ç<ÌçdجÅU‡¸\òÝŽåèóãónegPTé÷ŽáLœíÖ?a\ þñX©ÝÍôâðèØP‹ï åÀ:éJö²¤°Rsb”Xo%÷̦µÏE>tf'õ£,”ä*,.4òD>Ž“R drh €B¹#¶¯Nís¡@v©L<œp4¯ç«À=ñä–t‚ÂÙO;ŽÞ¶Š XNV3’C:ÕñXVÖ¨,5¾^dßg´ëÜ6úU¯Ô/’àÔósVº•QøHóóžŠÞ¸6ÏÁž’¶%IøèòëKÕo©ß%6¶=‰b(4 ³Ü ȰˆŠ£`©*ç7ƒƒik3bbÍê*•Í£@Wˆ!=ŒYõÐòÚQ¶®™ ƒ­»¡ï§fÕæâ‘ .!Z IM‰A¾#ýÅ®z‡J^r˜OŠÇÞX\r©ß¸gX%@<‰«ÞtÖ°—îdYöræ§j#õÌÙ®Güí¹@ ŠP-,àMZÇùËÏä}=¢ÑÜν&z÷êøž¼g8ZeAKݨâ™W>LW«Öµ¿|ðp%ïAˆ®o"Fåv!ð}QܤsXѯœwiÍ5Ðà¸=P(¥PfUóøBÝôÚ¹Íæ¼6×,Œ$É3—çÙtɈEgu~Š¢¢Ý$l](ëGÓÑÙ¦!¤¨§ WòàUy~ØWˆ]ÅNªôx ÛZßRU®9Mšª&ªG²b§G…ì]ÞKäo¤ð Ÿç¾…D'@R$rP-ÙRîËeûØòÊõq1Ü@dÊ9ˆ3È]„iw,Cb(4oµcâóPÌ93f1ƒ]f±ØG†§BŒM`¦5Ml«Yv|«À}›uþ˜uX†E§ÙØ9ðócrß¾ÙG²8m¸ðz ³Yd؃bd€Z8çŠgƒœ!ï—h›Z‰áÝMÌ­cÉþyÞ*Ì*ž'…Ößrjãko¡]—ôÇÒ,ÝC|,´bUÖ×W¶ž¿ññX”ß]Pig+Ä|yÓ±’×L|É÷ðv7Tìb†},t~¡Éöf‰»/㿞D¶ÙúÉ÷]°žÂ¿½<ÀÎ)èåòB_Î%E£á©Q§0‰Ÿ!ŸÅâ!JmÏŽ‰|±A5Ú$h®ÔXXš'¸GÉ"Åý;Ýñ°ŸäZ !P%`¡šªO £ú¨ei'gдóåó2 TZ’iœ% Óh kí8[j`¥XЉ<\;o/KصÍì#ÛDü9W¨¡*kwä¸åo.K\`÷zŠ:ò•ŒõS†Ó~¢Æ©ýˆ&&!áaaÓ„›•Ù³Ž õ<`†±¯ÇäjºD!”@îÏhÓf.èFhuï«aÔô|«–¿ÆÔÑ9(³NyS.pÑëOf•îH=t`DNËûa˜Ä¤Æ} Ë;1Ÿ” Vö⬠ÍN˜'­ ­¡©½ Kü²$¸¨¯'¡Ò çSÅ°ÚØåšÅ*·61ß«ûAÄç­r‡…›=ÉZñCípÀ—(ƒ!ØDã\¹º4h–0åJTйF†‰¸«ÏJrsU–R3ù9ÔH4ƒHÜ•!æÂ¾³öU¢¿²6ÉxxŠb}T†ÇŠtÏ0E™—æl«cÏ{ÔYVüÝT±Õ┨¾´€g¥ÆKµ­­gÃZ­%©Ø=êHÃö=ÌKSxZ­Rq2µtÛã½&fÁy¹LÒJ¨Bnº%ð%¥Djý£Âñ¦„bäO™¡#‘œé›aÐkÉÒXÔw˜?±É¯r&¼sÈÝt“-²~²í|ýºkñù‘à·d²¡‹“~O=òŽò2(ྨ@ß­ ñ˜&”ð%T`Ç…v{0š ŠœÂpœU3·Æ.sj±‹—>?'«»óä!´·i1ä5ú)§tmÒöô° ŽÏ—4À~ï–ÑÕ@ƒêC©B~²!x±‘æ"—K²¡z+ÔxéiÅyë`×µ®aÃ6P&…3qI&mY5Ï4 ­Y.+ U<†ë ¸{J= ­R~ý*‚¯*½³ú¡dFÓÚ™Àvj7$ÕÂmëÖÿüíO¹½˜é #v7ËШµ’ ú|ÞøøÅâÉmÙk_¡å:¶YŠx•Ý}Úâë E£ ¢‡BMRøõ–?s,WÆ-‘ДkþÄW„]öròTõìj¯/4èoc¶÷0; ì†ôT<¨¹hd¾ Çá+žÈ¦¬ü%¸(`UíBüi‰µ>qÚ”k)˜V ¥<*p$_á|ùx€Ö­ˆÈ¬*,¸ûUã d0EðÏÃèCÛðsV¿_"kÄë9F¹ñ蓌ÐbªTZ×ç~öJσ;«a[@Š(“D„ºy/ zGate¥?'§Ï¤õØAJ"ÔÌWåOƒ,*F½šÒŸ~ÛÝùùj%&5Ühv}†$׳L ò°—Å$š¹¡à‘n§Ç”øU¦)ó[Œv­ENk(ŒÚŸ±í`Ð áUb-<æ›ó8+s•U ûÄTE..ÑJ„{H#ÿãíðh!s>hÿ¯þÝ¬Ž—«â_së8&œí§°¥ÇÞ¿kEfû5•Øú¹xæˆÜÌ—í(Ý[R–®úô¸Õþø&Ðø§ù¾8DÀÛ%è³°D/)yû‹%F¾çpð‹saâãgÏÉ/ªÊÀ.¸êZݯ5Ej¢–¡´¯J’Èiâº1BœþSC â?aŸˆ]L£`îÙܺ5¬îa>ޱk2¼(»ý{8Ï<¿wKv:ÂM$ž"ü1ÖùpÈsew©×߃¤oÊu²1·"«4ˆxU¬L§W{¦U´Í:¡CßhÖcöÔÞÊ–µMùUÍÁS:óá¾Ö ¯¨’xVïl¬IpîÆô5'ÇomQ^øs»Äžz{Ÿ@úµ=ö8»*w{Ù øÐ¿Üdˆ¡°Dë»Îêãâjádýê*Ò«û¶"~êœN‚4ò@«cýæ&ÿ›$å#=òIˆwJ•ß2žE:_@.C`ÃëÈ%!Q—GÿòÅ%Q”<ÔE›f„¨}ú‘5ìî±õXа–OWE¦Iõ"ÉqÖâ‚Ü*¶£õ7ҽʩ­~aúÞé 4íCS,RU÷\7þ]!„${Ôd=8n1¿²ÂÕÕHˆûáh%ž,éîfýõ†pìÊh•[Rˆú-~<2éùB‹™¥;­·ñá“ɡԵՌ¥Ð—HñVêÊû^ -Q½£[»G~ª\©"i¼ëX[LŸðÙYwî˜?÷Ë7C4Á3¬§*}õ¬Üë£Ã…´Ñev¹›<½öâr›*@<{$[–é% •kì+ã/ǃOQ,m~‘|¶Já7Ö F%üTKÄÂú™0Çf2,¹O´¡kÇI•…%¥ÁNÃÆÙ$Á~™Á]^¯ãà•©Í I>ÃOƒžG¾–†Éb2_ópöû¦ì~‡ç·)2‘ð*¤H½¸âZ»–6´z·Ã5¢Fq»Ý­cvðÈ¿3«Ìßit£RšÂ?Øi\ಒEê4šÜ´R(YÅr× §ä’d.°^ö^X&›½íäÈÈ¿Œü…®l“–ü»‰ÆÝâqã“ó[ÁÔógܪ9®×•º8h«±¯·Zé)-¾Ö€nx ù÷±ÆhZqFÓÔaÆ«"vܱZRËk½­áóKQ/;; Î%B”´má“*rmæqiX ï¶9ó+3!”%âÉzºË†¨R¦øzвD”¥+÷#N—õ© ±SŠpw¿BLÎ/6ß­pã¥Zg|õ´ €vM;UÞjÏ׋õ.äo%79>’ù¢°êƒE¥o¯0¶A•³Ñæ¬Èv…A_¿÷ìùE„Â_'ٟ×1bïÍ=šà3ÚÖ¦§~»%ï^a¹Ka u€Lrˆáù9ÏÂ-Z¦ar)É8ª3úˆH%B M)ÄÛ´°>J9(þhÊ Ö¬{ªðƒ,ja¢øÐì€#¸Ì‡¤ÐÕ (’¦üU wqÀ¨÷¦Õ{‚:.Jëp”¬Þó~ÙgÌá7fY.³d0( Œ³¬zaû=›<ª+E}Ÿ8@ñ¬0ú‘{¨±–‡ìg[ÿR-’bÿÃ~zŸÅM%æhïìÒ Bk\x¾¨“¿_È{)ÒÞ®™Ð0/áÃðŒ!º"Õ˜íÑÇ)¶‹ôþ›ÛÕ„³Ošb©IΛðÛ¦oǵ L²Q.MVòÄFq¥ñ5&æÈo®“?¬‚Þ|:Þ0ÿTwÅ„ÝêN-r#çˆÁ>XïTˆ ,¨Uö–¢é~I÷ßqJ=ñC'h-Œã.îé]¡¥ÆÓK8žTÇ5Ї9K£¥­¯Ë4ïD” ?n‚Тæb‹íX6ÔëW^¤zpí†Z^¿ôFiLŒAÅè³'ü\ùÒe=êÍ‹töȱXy{‹@_þDTËo*DÍÅ>a»»ék5ôÓépš2BOÞÓ¯ß;ö¬_¤|€jÈEç½ËŽÓ¤¨[ yóHR ÂÌÞøÅVà%›•Ï->¬AO¹ƒptVhñó”iÇ‹ùúq¡ëÐ>qc8 ÅB:Í7lô+ã«>d¼lqÕxÚ†Éw¨›²Ø]¯D˜Síg\A¬5ºÏJàÑ2Æ/¡*ø®Ųål_{ Ç¿¹Ë{¼ê’]GBœ/O¥Ù¨õǘm¬dêmarûê_,0Å$Ê þ^£ÎyùÄ–âùü§ 3ã{¨!ßÍí@nŸãuÂÜŽ;>zð5äjf9±W…ŽÀ¦LHÒTß›‘i¼¨]ÔÄÍÖð±e[ÝF +j’îžëí}ßβï’/`‘{ Í´|Ná¡ÇÝ¿Kç«Üb;][ìÍ=}V@¨2ôkÊí0:-·!+B÷¬Ï T¢_¿@ÂçàîØÓÇQ5$ûÎžŽ­€·‹‚”ʈC1.ä0ôpX°Ù‹Ä êUaÒ¨îÍXÍš9¯å_|Ssi6Ò¦š„újÒP˜­>8tUXü4Á«–¾MÎªÚ [YœLÊ_|Kf©›)O0½öUÌFî«ç„°Ï+ãX¡ã½|“®kA7û–×Tuf››«È¾‡·^r£)ßR QEiñt¥]Y'.r””^ƒ,?ƒ'Õî§Âü‰-8¾"ZÊĵäÙNs¿ÏM°ZÙ­¿¬Ÿ ›cJÑEç×Ô±É×ð±nfz4¼[>•-QLÄãŒîJ Wº@®OäEútà0™î!x_HU‚ã—ÆC+ýrÌŠqå¹p·'g£ÌöüV—È*¬!¥'¶<šy|•x<·®©…ÑÀpñãõF>µ –eïÅV¥sêû»Š;ÈLfbuxéVÝѨ¼Ìj!K<ù|C£¼”„‚·l9¥ìäÜ×|X“€Ñ.“Ù·ÎÒ2÷hß¶]B”/ -t.9V†L©ä€bç¼’¢«Û5*3 B)&%×Ax³å`Ný‚t—?]¹ÚÊçâöÊE¸¿ìöÓâ—®lò¾ïö7¸£ìAš›P|ÅòÎ*¬Ú"l=4R0_f–ãš,æ&›zÙJgî©…„PÔy!’¦mãGagU½5š“gâ´YŒ¿yÔpùmvÚWT¯ñ)r¤HƘTBJ„óg'V´›ºÑ%=:u¤úP˜æMGøZ?|ht™f&c¾¹ÿyïI½lZ¬BÍ}¾dù»E:òÜNeï-¯ç×!NÙå€ÚÅ 'µE2¢Ï–ŽY§òOí2»¨)£4ÐôYWûé<ü­—4Åæ;FTðÄHàÀ¤FýZ›T YîMòÓ·þh?ÊäÑÞo˜z‹¤¦´©mªÔNÔ‘„¦ÃH¤MA|Li¨•úIŒl Fp¯š¿Q¦É˜zcšÙd†q½1WwF)óay]N}{7Ǿîg÷L uKJDG„;ç™gf§¶ëÑâÜ‹«/ÔøK¶ú‡Jϵ±i¾ó½´’¢!òiÍÄâ/ìizŸUbÔœ}ÔÅ"ÏíB)kÍŒØt‘qïP‰wܸ!“$*[¨©Ftºœ¿2ÉØ¥%e{sðÐW`‘S¨°­ò8z¶½¡Š]³.V…ƒ›NhÒ=ÅÒ ‘7d0}>×/û’¶ÌT=šª¦(·¹½vïÄV*-CS.S‚Ä£G÷³à5s?-z1?^©…bï|ívͱ¥äΌà ÞY¦Û)SÞ{ê|’§¨wÛ¨)p¾ú^‰\Ÿ •žíipÉœ!y^çñEÄ,邟.ó®…ÑÓªM¤ö@þœ0±KˆI¸ºýÊB=ý…ñcÇ!‰|Õý~Q%Rùቂ9r]?yaf`꯷~Y»c+›ß¢§+Q.áϧϡ–ѳnI«C®‹¤tßOòû"y —I·J`?ÝÒ½igo@²³âñ÷ióûÞÀÉs—¼ùø=Î{†çÈÁ0 ÕßÔë;¨…ÊÎ ³B:¼ô}\æ¬9¢ü_VÒL±ä¯˜oWRþTýa©wBœš\š=¸­¤ÞKÂÇwŽŒ ®œ-ý¾ás)º%Iÿ¾ŒÂøn?›XQÚ –PÓV™;b|þTx7`LŒÁbÖ¼Vþ‡E¢ËSIAûÇ]¿uŠ|?§ï‰VU:í&BPâ¾q\]ª€^Þ½„¡Œ#ía-ÿ –ç·èd¿0÷z#¢ÍÝÔˆÎa]ä[âÒ¼ Q±¬ºtzÁÓ–äìð™Ÿ@UmO5ÅjËO쨊ÁË‹|›Qßµp ±ãŠ }Hü“ÓŠšpV"ŠR'T]4Üs¨¼!OÊgÊ{¡ÿè2F¤ * ²Ÿ$ór¡7Û˜ ÔæI¯ˆ^GÑYýÆžúLéJ†Ÿ0%œ¦£놨ãJúkÁ«T¯Ìijg:ãGÙбöÍœH6¨Ð¿Jß*³øæ¸–˜{Æzš[ƒ‚ãÕêú¼i%AA$·Ì«'ˆ®*—3B”m˜rhT)Ci4t-l›é:ñSQÓíMfñÊ+àÊ}ºRN¿[‰[ÉŒY z@\w}p6«™†3>±¡î$‡Ù =…¾¶eÌa!Ê!,ÙÜ+|ÿÊ%©ƒq=H¡ýaJ«O{Âo52F´ ª!=Âï˜ÜÉ~³^5Úfʃi‹©…¶µùºu˜ê ÊËdp^¶ßD‡ê~Öu^·ÊBbjó6ñMQßtüv]m\hR-~}•4fFvꮉS4QÈãð´Íˆ— íJ¤™£4ÇQS¢©\ οdÚÉràgØ´2õZS Áàõ9»BñÕÙ:vùä7 Â\Ûìœ×Ô¼4ý^dGäuh+öCE©ÝƒÖˆÛï÷Èrlø­f“?"¯íþ¸°«±Ìâ³o"îD¸À"ÁoúKùl/v3p…Ú­Cùmª[íÿi'hÀ*òYà`CX“\Ij±ƒ@½ü\aœ+¹WÅwvqœkã󫵨 æîó >Ä> ÅN¦¢rT ]Å€]Î)†§½¶M¡ ¶á‰Òð“žß·ÚѶ)Ñ`/¸öV²ǃnÂQº[ßµ@f)ÈmÑ áŶþ£ðáÄ(ú›ŸOß$Ç xÑ•+M9ø«QƒÍe ½ú‚`{¾Híï22Û#ùÍmÞ,5EˆSÁñ[˜Ü!wZuˆžó¸eĪ Í,›ÍƒµZ€gÖôP½’Œ\¹„‚¤ …'QZ¯£$ AäÌÇК×úÚÁ™Hžtú·"ȼ“Ø é)Ašf%)?S|OYxbŒúv¿’_qÀ0¦é¤Hé~öi‚¢ ¢fÖÆ(LWû©ñ1fÙY¼¬ W/rÚ—M&‹J Ö­}½jAwæNQ½4ºûØz3Y „Ô]¶¤l¼îêBf`…æê· ÐZ`·ýÅ5=N'TÕ† ëŠÌNu·ÅɈN(ËÉØ†:ù›ömܨ9ºCõxý% àÚ@d_*J6qyÓâ0YŸùYD,u]nÑ7%ÛùØ™Šr×VV^NjRV…pK_þ Û¤àEÛíyúr+úá®ÙJø Åbá Í,ËÔª“2”à$A bAK<å^pE©4+Q¿ZE<Í£ ²Œj?½VFÿø§îòŒ•ÞçAcì$É’ëy<Ö-DK,4ãGw¯©NêbpîØùaÍI}9oü!Ãr×%î¶bq‡ÖÂBŸ•lVhÜEK©Œ7³AÃáîÉŒ]\ÂsÏ*ÒÔ2;ôŠ™n6?íÌ[2ê†[ê0Xr÷ÔÇ?¹&õ‘nrNɶÒYÞ L•—oÜ2Ê”w1 2Ñ“ å_s¹º÷÷aú3½×øPÔñk/ËXm?d(Å’€©O¸¸„r´Š¬ šÎLè§õÁu®˜=‡ª¦ ï&=d3Æ2½|qÙ&B³D&|ÑL™Ûp²Ç¡ì‡˜DIµ<>*ÆÇŸ¹_C—æØÅÎBIÊ’…vjÏ}h¬ S'`÷Ýôa5Ü2ò4ñi_s¿ß?ä^I¸ƒ;6W>¯|6çRÍÊèžà±ég¿`ÿ:ï ûÚ|9 s ˜lx°MëžSʺ­4%ÓB‰¡ø6˜fè‘ÜÂ0'Þµ2ȶJ€ª!VΛGñn-Èá"ÀàOºÎvảr)ºYÕ©²ÙóTÀîÛÚyð–àPÀS'ƒˆyé•D³êZž‹3òUg~*ù‡µK7U®[vÍBû¹>#žµdÙÓ„XX:ÖIID@ŸÒö׋j¯+1üµzk6Ãï®Zø»¡3C¦½iPÛ!ǵ‡SS„¤ìhþ ôæ#\QDtÏÉ\¦™l9V(ª0º_Vª«Ã®ïi>†ˆ¾Â~ðªÜÐI¼øNÔô¥•"i%j©½[Y˜¾ðäõ±|4VtU‡1wA5§.±0ô·¼ÆhÈ“cM•šÞW3Ì•¥îN[f„átJ¥ô#»KI6³¸Yp2jBñÉÝôttOJ¬¥¸Ç4Ü®óÈ".¤[›>, ÿ—)\G38ëÃKAåôHDúuÙ,y,l¿§ÂTÞ]‡ÚSÙ})„U5dæ*Ná¯'…æá¢ðz}¸%éï$ÌOVaDžÂÔ?’ ž‹“ˆtK$¤ñŸnM ¯ç”+ü4g¬Yå·ð)Ê·Êò¸vn!ö­¶ó]‹áwÄ Œ õ³8‚rçI9ÖÏ|7£Õa-kG–ô!2±G“l.ßÎóçÇa·…ÖDg½–`AJéuû™Ë²¤è1ÈLc½Ÿ ‰]øx¼ÅFù*7h×èßVn%ÄZ¶¨Ï±¯ÿ$zNUjH«³K"1÷„¨¦ÿ$ìâW>m!”3•Š!l¯ð;ýªŸs àš ‡órÐç”dŽv32Í©½ëÍ ŠÔ¯u¶N<²÷×ÕŸ¤.Ô­^HÜM†FÖZ( ͤýƒÅ?"±Nt,ÏÆ“qŒye¥¾¦פƩÀDLÑþkÃïü0wú1Dœ-qÇImè–Q#&ÜÅÎüš¶Ú {|ÙË)%ûéÎ Aä¿õ}Ø* €´k“ÏRk×±7“G¦ÚB7ô6= n¾1k ]¬ñàC(RÓ´ ”.òßðŒñ&>ˆý‰Ì`N‘ˆæÍï'«Ò ~HƒqfW­²Œ» ¡<£ý)èC—ŽÝ¥>—7cÙøi‚°É²œdhòä¬$0ô)‹¢$(C’ä‹IâÇn˜E<’o Ê†¯¬n¯ööN.µÇçóßÚÔ'’Û߸Ÿ¸qn»qƒ~ÊÖó¿¦(´™uXGl)knæ@±ª ‘=#Y¼b„Òvw®¯~kŽSŸ‡E× |†»ÇÓÉauŒÌl>šÏïõÿŒ³ŸocMtƒä_o©ÏIãÒ>ù‰°o„$pÌDëÉ‘*zJ_|ë1î'>÷Ú‹ôÊËM«â.×p$…Ý–`AymJ0SÂ`~+#N- ¢äý(w÷]:¶[‚À7(½äúZA>¤×&UDýô›lžá'Û„bîQj/rîóïß|þCUiÆ9á!ç:eÀ×¾¯Ó:!Í{ZkÙevrŠaGm¨{øWàöHl¹OÒÙ®Ê] :•IpÅΈ…c>û·"EûNaC*/ÞPG¸Ð4(RP)_ï_+¡´gŽ®äÿ}ŠÈ«šrü˜ïKÜïwëíM°&^*Ù¾:λk¸_AÌÛ>Æ_•Ðuªõ¯Å’¯RB™hÒ³Ÿ¤™=£‡Ýï8q§ÖQÉõå¼X±•–oq1ž6Ç~W~>øº”ó³.èÒ'¬Ýþ…¨øê(Xßx]`ëÕ&»s¤1†Yú‡ïKÇÆëG‚ºÏ!nÇÆçÐ,pïÖöÂ\ëˆJ Dl)ä$^„ÂÖ‰®T‚¦2ŒZ˜·òoL˜? Þò–w ß"ÅqzË _-Õê*LÎ~ew|„˜s逸n¬ ѽºËözãk£7Ó ”¸9yÜ¥Ò’î{HÉGôãÖSmm/ØMÊ ”›d¼ÌÊ=ˆÅÚAî{HÖ§GD_›‰/Ú¹gÁ/ôÓà³ðÏ2Öabrµ LûPr8,ípRx\S„þDs±=Wïr–é#ì¿h¤º"nQK¸CpgId)XL!lø_gj˜ÊvýÄÝC30¶ˆž‚‘åîÙUß¿ÂÛêYo0@ø˜ÈfÏSž¹Ëœ‘”ìªktû°¾í§‹?ZkP U]’[¥&@Ya"¶qBU¤{~gÕ8“¹2uzGÊ?ˆz UtûtË…<•Ó#^ˆW&ål³>ÙˆQ !,k¸ÒCs¥ç¥jÜØŠr^ á/âqìöºíEÓPLLJ±'ä¹ÙX+ûH\¬~-œ—’¹ÂÇ“µ»‰Ï²Ê%?èlÃa¶…Wµ–Þ#tµ[Ã.¡õ %sÁ“QtŒ)}€‹+¦ àlûÙ?Â练¸#Ʀ xóBjVËœõ;Ù/χ~âà 0y“OÝAÐL²›´"ºnéöò¸5ºkgd@ëû xœ Ò™\‘¸î ­?Ã]çV-EX–lÈ™lu?xÁ¾¾øCG‰q=þäN°Z—/•.Iì«Ô’ÖÓ9Œ¦ü¼»¸ëi+û0Q>Y]´çyQ£Ó«gçÓ‰ÏÔX.ZYM,¨N•áûÉRëLCˆÀqZËXg6:÷Æ}+–ó¬ÕízŒøÑ;‰z:.ßcëQ¡´÷Ìdù#GÙ×óµÿ¼½Sò€?pöã)“k;3ÂýwX×}hµl]Üí8R1… êH׳‘¬î·!§Úbe~Óå€_¡nå3½ ;{dÂiRºà:¥=ÌðÂŒ=ÍšÑFς͇`ý é·Jt‚óî[QKÄM7f4nŠêçß…¹ÄF&HC±C4cgüÐDMò#ÖQ¿#˜ÜÒ"<°®v¼ïì×›œM‰úy}«zͽ?¸Eî¡‘ñ)(«ßòŽB™Má¥à>½êÞâã·"µ«÷Rxèµ.Ö§È_*Ec埴 ÷iTXæ€(#ÓJœ~ ùÊ—L®þÑvœ‚ûL;8—~MíxË|#Y1sD[ŒE·HzPÂöZ@ÑPì[,÷\gè¿ïÎËY®¼Ç[5Sw‰.«±ÕB/äÒK_U’h‡²Fôe³»º¿¥Ý¥H¹@]ÏäjÙo–á®1ÍT¬·»@÷ÊaIž˜!V>ÕÉØa:`;ˆ/b*åýtÉVˆØÁޤd…xËÏDáû[|ënÜ@zC"¸/Ó›ûGµ­»0þ“_à9 ýçŸâ¹ÊUbe[…Ù'®*«aãO+T4ö‡‚… ö ¬´a3r3¯P²•ù­bˆB;,ˆ»ÖCTΠѶsh‡2nYÈ) Êíõ(ˆ/ÛŽioÔ.šŠ_¬1}ï2Š@qì¡c!Y ßÌ^›`0±i¾#Ú «žYYÏÌ¡©£`8}¤@UÅÅûÜíG©·ÖGÌ÷Ú(ø'DˆÒˆàCšB¢>Û]¥œùJü"÷7[Vºoùüý†tÓÔc>½£óUt‚?²ü¯8"ÚKÜŠt›ib o2¥¢+m©&«Ö¨ôZT‘“2™¾I¹ÈÓ(jéWå}LýKÌ}Ü1O°ol]¿2VmrŽL,0KÊUBGMul&î¼¢<¿ ‹:÷SâAŠ–ª9†ÛåÒ§+Û<ùOû&G#6ÌT¯W§.­akΙÕÛVâÚŠÜ1çAãß±ýúyª1™ZéÎdÖÑÍ È=ÿ&2´žõ#ü¯¹oáö9îçñžkn‹áõ÷.¿ù,©Ë¯'6&cvÑÓ ® ë2KøC½ŽüšÀÜËÄש“g¯þ6ÓiË\Þ ]v ×|XM å=?>ì…é`)Ìí¡õЄ\K\¤cŒ)Ÿ4bÿsÏ·é¡gT͸ς$g¬¼@¸¯Ðt|òÐ|Ññ L()Y}\_Ô³JÍ¢\,õ>ÂúzµœO=Ïü,™f]û¸û™ðkmþÕ¥®ZHr¼­;o+é¥ËÏŒÿ;‘¥ºYç–"×Ç3ç#'0“€Ñ'òšD*Ìø2f†°ñÜÊ=¼ÉÉ¢%¾`mÆáoPè;+¾c VìÑ6q L^N3xñí.¹›>u9·8ÿxÕ>Ê(œÜ­ LÀ.ªÍÝ6ü);$å«Ç²¹¨\õùá<¿DÇFcáá«#üzuý¶ÏbÊÂ(§•Š-Nügº€nÖÎ)Ñu=hjÑp‡´àsSkYV—5«¼f×lS‡É^uÀ¾ÒuÙTˆa¾ñŽ-ï6T”ùv.Í[Öñ[¯fX-$IlÊðº¨ò¤o@{Gb(„)¶Ç„êÎ[pGâ)BKËBFÉ8·ÁN®ý¼³c>¢ÃBÿ´yD?œÏÌ*£µó+aO(Ž®ûÀ¢V\Ávñ:š¤Ü ‚R ÉGKîÀýîÕ|!Ø5T»ìwÎÉß™LpÐÍ $-ÅÌX44LLstƒ¯ž/läÍá’az´é’YGõ2É•6Ç êÙ¢wR1b:´9 œ²hÓUC¡†ØËåȸV¿Ç:ì×YiéÖ.Ž×ÅŸÒÕ£–ÖØùö€NúHfæˆÄ”V©ì±¼Ë¼Å&Æ”Z¤q{11ÍjOø­Ù>8²ñH˜¹õ‡3J‘áiA»œXW¶>kµmè0“†Äú>mè/@ÞˆðVýLš±Bbˆ›Î~ÛaïzÊù£^xÕŒôìØµ>®©Zu£„Ò‡¨ ³\À/ ˺©¡U0»üâÞRO%üÍå!+Ýtuv12 ´qÒAâ¡»šg%c!<µÊ®¾`Œ:ª(aضøâ‘ìÛÂFóîGôŸìÔšâ=0UFÀÐÛ¶l  KEÅz§¬¬ƒQú"§rÜVQîAK«ü½AÐÜëk~½þ²%Ô¬eâÒ¶“FJAI‘žb‰zgmbz~Ž…ŸUäÁdS_·‰#…£6_úë9>Úº*dcÅNŸÎÎr¬=»wµ³i>¤ó~AÈ'urV4‚mØH‚oõê*SP/µ›a|€ííž{@CZ¯Îϲcê7[ÿS?™‹ù½¡[™ÉéŸÂbŠËW«iŽ©ìtòñg ßV7¶‚ÿEBM UVýûa90( ÔhpŽ('ŽZEÀ¯5íiut5'åJ5G£À5ÞცÊeâ¡ÀólÚe>Y‘Ú;i¥ëà –àI\ð6dèd™Îì'Že¸ýl¦k‰ßì‰ÝWƒ–)„Ø4°†>Ïqùxy¶Å1M…KT3›·ñФ²¥"= àX[Ô€OSDµ•4o{Ó´si‡lß0_:Ä @!ËA÷¡èEónHþF™^’ã”ÎèˆX·Õaô²ŒØ¨5t\ÈKQóL%}ݹ×aý3?ŠÀºƒ‘sêX›¸ ™ñûtT—!ŽNDísÚ)òè‹FfŒ¹Œ>Ÿ­„e¤ )ÄöìîcÌÉíî'i‰ãóyä0þ-†AdHÛ­d½–»5²³äÓäx(Òã‹Ñq>E„iiª1”u˜Ÿ[6èx¿¹ÿD9Ü_ÁáßfŠi33ìy¦ÿÔ7Ø=዆{×r-Áâ„‹0“Zߟ¤'ìfK`RýÅ»‚y…ã»ïÞÐcEIÑÎõÅ.i™òÑÍò²K m ¾åþE35ÛZ¡ŽÚDþ‡.‰ÐÛн'…}&ª¡ß=¿”Lìy°òŸ.C0 ,÷Z)3bàFxb0“°ð¶rh2—_PØæ˜ô¯y ¥iRX÷ëQ™ǃ‘Ö11½×2ƒ‹‘yŸX)ÉOÎÄäË#ˆ^׃n;ªhêb.R¥w²ÿ(™³À@ì¹æq:Êï㱇Ì-Ç+?ÁS/sÝñ1Û¥©ëŠåÄQß<ðÆV º[®o¿g"í ûòéÆ+tJÂê£cÊ'=î ÉK’m8M™1‡Dqõ¶ÍÚ4! äµDOÝjWdø¯´`qúÈÕT>žîmB{ä%"Ÿ3ˆ 'éƒÒ9ì©sÃ6Ãß5{çg+|ÜIKP’»41¶úbEƒ vY\ÁNA!Ç,¬÷Æ)Ñi©ba›’¶ Î…•¸åê`v•sp šÎÅk5¾ã8{¢ s¼¬Û14âkaþ¬-•Í]È*\HJSZôEi¥‚ðñ6E×@ XóZ&—ÀJ*¬ª98Ð;•³d*P¥ctWo}ý1êÇk6&&­3xD·@âÍêÿmþ}‡°•ä)ˆ)ÃêÍ3¯¯,MMi+ÊH 8¤”4ø ùÉ×^^°îþx Ϥ —y/…f¤‰ ´ˆ0Ôê$Ç‚çêíFGœe²Û:ån}â\9è"”Õo£ÅeU¹1†_#H¹ÝVÂ]*ü=fð‹Í§ALd‡€ûÍhÉô+\'¶ù%f#H_ᡃÊzª–øª:ï•ÌCH£™d÷¨²—î_´TÛÜÊhæ€;8¡Ù¯¢®¿g”O¦~ÍŸU?ÜLG™”}S ¶ò ß·ðFÂLwå¾v¸Úa³D'½6X1x!O< +ö„Ç–LL·Îõü Óøh'"žz–KE!L\"~®X°M7g¿¹çJ`—Š Ý™¡¥+QDt|!:ž’zlùxÊtu_‚ÉM&ü4s¬ñ nÐŒ«6?bá3†÷joŽrS‚.i5–ìô#­K”xëk/.6a,§Oȳxéã#Æ^âœùh(ÅL³ÚœpœÁ6}í¥VûHC›3ïÚš;ÞFLãoµA«tq•k‚eŠzÙÛž±”7=G©EíÎ<Š:º•ãy“q¬%¡ˆ…»ÆÄVÌ?#µºøš5Žo¤†ªWÒø3Ö7òÍ·þ$T.M–,RþH{ppN°GøÑdHpÍ/®{u'‘õó´-àÀ¥J×31%§¯ˆ§y1B:9§ž¼Ëãá\1óžX¸UüRwðYâ&lÆ„1]óË—©S¬Çe)JË”-*Ô4–ß}?š \"íÅÉ ¡D’׌b£ô°'2nQf­ ´YÜQÞ:È®>óˆÓŠ}@ß^»_ms¢©õ±Ô¸xOD X-FÐoé‰Åœå•£6zͯÈn×Qn’ØuAÛöB8K®ýý×wºèg£x,—³Vã§=( áY§²cËÚ¼äd­ÏÞI´bc9(W\Œm&’fhðÚêí°x^®_¿ ÿö#c&¸³÷‹¥UëPw²qõˆíÔ¥ÔØÀ4› DÜÿ¢Ø á۸¯…š%£â­Ð¹_M¶™âQt»îE‹1åÝo²àoŒIŠuÑî¹”[‰vcO¬4±'#Bè"¿× Ì"O•F“øPˆ3Ž{ø@öð]šYêˆ*+<°Oˆ«±`®Cø aN6à>ŠÆJgÍXF²(ØUpoR¡ýŠæwZ’&Ì'£€é˜uË‚Òê($ßTí¾í³X&h®n!bQc²«Ž—Õ1Ÿœh_Þð@5¿>…s‰Ð hdgmƒb ÿÆŠÛ_Ú§F€ßßU¶C£m2è}÷ÚW ‰Õ¹ûG‚× Õ âª?÷…kßð¿x¼9mhú(Îþ˜íÜž–!ðt£HCÒÏ•ée‹|\Ÿ¾K-bHðÑÖ„S„P;xâž¹ÝþªYáižüS‘XEü¥7ƃ¶1|JMf¼ÉóC†´¼ ’80`ƒ6âXdfw©ÙÒí‡lT²á/«qhÝ’áÌL+ ˆïÊ|;¡ ©pá˜þÉŸí5°&•xï3ÖlWIc“;Žnï®òK¿vø Me:‹ÃCNmV{¬ùÒ5ŠìÔFø‚»Ä|º(v~°q?×£,—eKIÜ~E]a*¬5îJwy,þjüÙB…Ã,‡”2Ùw¼­„`t–ä´Ã#¸³/¹_8ÖM3»Zâp*Ñü·A ç ¾|dÊçÓ@°&0ÔõŠÌÙ³O‡yIJ©ð¨÷Kþ¤¯ä[ àNö^{½ü)&V…!ÚP±fÞÆåWÄÆ‡ºÊ‰Š´ µHŒ‹lÀq¡+tM{hõޏÌ×)vÓ#⎿[‘þO«ÎVã«,‘ ÉoM°<míÞ~6ˆåXŠWÂÉEt ûL µKŽË=¬ü J;J¸5&²wµ‡å¡5p/—y¼¿–>Òü’… ÒGp†öUMD*J€aA‡b¿íq»àïv¦јÝÐ¥1ŸtCù•ŸXëìµUŒ"¾2Ë4)òä/¢%Ê÷@o5çUÔÔ`â@¶Út®Øk‘FÇÉCR;Îß6°í®+Õ”mHûÍ8×$8øé[r¤*üï¹™‘y¢ ôuoÝK§ABÏ1¨oh"yc~“‚ÏÂVœŠÌ¥Vä9Ë„-ö5qOžÌÿˆP8§ùyÒìÔ»£ ¢‡9á´öj’À"Fœƒ•á½LˆNš¸ß­ÝŒ–" —[ªàJF¥¤âQÔ~i«mŸ¶£H"õ$Ê”:ú•ãŽo6~±ø._ÕÁT¹#ý­ÇÍ#a¼+¦“ã™7äç®Cõ¥„à›0Ö&Ï¢ÉÓ¹Gfñÿœcîý´h\)׫řËâC»ÌzUž‹Ý„šÿÝÎ ¿d'²øTŒÿ¾h¡Ë%ÖßÓh˜ÝœS¨ñÈi_¤sÒP§%…³œ¼_3bßÿ'QJC”x¡0VRè×ì5>}[iÐÅÖ x§lk¾’ Üñ,Ì4<‹o±Â“höÎÚ¼¦¦TP1w/hGÎO·|”ÉÔG8hÇxÞÁAÑr—2wÙèÅzÊïü¦iÄð9þ©\®­$dØØöÆD¾v™ÿ¯oîÞ{Œä¡‡‰¶Q oníï\÷’yèœàL\6 vwþü Ã%_‡ã½Na‘év\L±†q0y3”_'WÐLµ¨yE3 Üèíçí)@bX-û޵í,—µ78´²íVëæ¾ñ{ôóð윹/4±Ýße1¶´–ŠF_¡%¥´Â D–ÖqÅ‚¦õåx@ë×pj¢àÀ—#oU¯o¼Ù¯wBнé” ¤ažƒIWËéj› :ήZmý ˜ÇÊvÜ÷ªæô×äwáX—:R„ÙÝ/¾D7dæ¦!wÆjʪ P Wžd• ¿vß°òÍ(ƤÂ%¥Ó•2V´˜¹äšå”~OaçìgÏxx 4ë4ôhHïyТ{mü \²¤NÜŒz'äW”ü dΊÁ"±kù(0Èôê휢ˆYlžœ£Ï4á@×Ûß Ò€‹ó=¿&…Màð0—¸öߦöÕ!hYGv¸bjãþ´ñ'Д±gÇì­BÐ…‡-£¨bWÅôl gŸ©$±•ñ&¸cÙYÎS¬{q€é"V½œËfD=.qY.£‹QãœÅâCpa’–¤ˆ„QMgí,Iùб- ½Š2ôÙf5§e+;æ„|ìJ¾©-–ÒÓÞGHçÈ0B·Hó¸­>‚špñtéÃØ &«›¸¿ÞŒ ɹÏIñàäì‡ìxòº[~e¨Ë¯$ó+N3šÌŸŸårw¾«>ÈòÈ–G…4‡´JRqŒÊr39V* *Ü©o…0w®÷ï¿ÇºñÙÿÜDxqÙ!ÇX¦ À̦v»˜ ZvlœgÉZQŠNQM°A •ï/ý¸”|[±på´qÐ'Œ†óg³,[ÞÑ‚bÔ§‘âáMk½ô!j_­“­¤¤ÎØÕEª™ÏŽÀŒô|@Uú“ÜÅUh;ôÞ:T~¨Ì¾>/†^èäFÃiSµAyµ}*ÈéÝÆ›îzÕÝ@~œ$¶‚có”ÄÈC ½1S»f+ËS|t<÷Sɵµ3U›Vû-ÃñE’ìN‹/dª=xÃÂþì¶¿ßûÉ1Ñ”‹;³èÇ)[w—H'°M±ß¤&çRÁ—þò™áùÞaŒ›Õì}TeÒàß4ÜþX´ZqÔéýßˉ{FÖÅ1)ŠwƒÂk²÷b'6 ýÒØ«Ch ™náz>À=¼EͼÌÕ lD>5³Õîx¾w«m=ø$œK Gý=kWŸM`ûÄÂpk‡wÀï]&WuËã“Ãó3HTÅ×IVxÞuJð®Õ>û6m.Ö]TÞæ#nFI õfȯ ˆžÜÝ2N-[ë(vl €{ò«ûÍwj •Oóî xu•ØÇîµt[–ø„žv”»÷ºSQf=½â ©¯da@¯²ªôfàA'M½bãY¥Eßêà¸èb–5d±§´ËÑ·ãK*V/ß^‘Ëyù‚¾ä= Q2ÓèȘƒ¶w6H&E6~zKôyÂóóÌŒ^Q‰øÉ†«>åvÚõM×½Þ×W9¢ÚÕp^Àä%ø@xézÑ ÈE(iÞüR˜M±lqG¶HRÐñ¼åuªcV•½ˆ;/k"È—Ñ2ŠXEXR4&6åùHZqpçHµ¾ 6‡ §ÑvØ —ÊÇSYm#Ø-H}¯¢V⓾W¤)˜ ›vÑte3Ìä?áðÌÇõ9—bѼ™N”¶›}Ü/zægx‰;¨%ÍfÖŒoJ„{ü0y–§ ²ÑÍ0&—º•S] ÷„ßûj¾Â9˜ 8–ù¸åÜ“„lÌŠÎÑôºd[UêÐU yåäe^®Ä†Àa_X›*:™Ç_«Ëo^uö2(6ÿJ¶gw;¸P¿Ò@øººônrkm%}šaÊÙ V„5uMêAØ‘H˜@'û»ÝˆBûú Úý"Ë D6<'ÞmôªËœü™ J‡¼v+”ílD‚¿¿˜„?Ö¬DRî \Ú[|€(;wãXÀèõ~AÂ]®^'ä‡ WžÝÐó@ŸL`¡Qk?$ÎMbý  Ï[gF*¶¼/Ÿµ=Çw³mŹ;Ú1LAgÂVr-øñŸÕeöƒà¦ŸÌ’\]%»ÐAí¥ÝVY 5E·b¹˜,W“×ógýîiXXiMô»%:nè’Q$0S!]±ØÁäñÞF£1ÈŒšžOV·ÁöA{'¦1`ïÙ¢€A{7bfÅ…¶ó±{#ÂkByÃx 9Ì1O™@®Hw[@”˜[ Šƒ02ˆ¢SÒ™_ Éø•œJ½ôþ|$\ È'8çüÆg¥¸¶eQž~Pà ¹Ð'š8XÚÀõ¨K!{зV’¼ò´]×Hˆ®CXb—J¥ÂêÜ^nòX«;_Þùßmªà6Îú´vr.:eÂŰǨËák^²¤˜æaªOðˆ` ÌeÝYÿ ;)¬ó/=Ü´ß‹ZÃ…°é“)Ç&NS¶ÍÉ~ÀM&@évy¬êƒ ´Cyb«è³+†`Òu™p44.Hü¡ºÐ"¸‹êœið®Ðx·ß –\X3ƒÔ©áËê…²µu€é…ˆÂKYòa&'^¾”ûZGÛ„*ý¤åm»u*ZªG#PLtm€kàLÞ (HêÆ'3rÕX±!Si¡ o€§9“'ÔÔ;oü{ZU"Ñ"Tˆ©·€=þM%6Gž}dî´ ¯®ÜJEa4Â5Ó²s¦Y¯Æøg ¦·„¡èR€à8 Ð680ÑÜuÎán¹¨_dV/Úõ·üDïû8š4#&“Z~äÁÿÁ§§;GˆU×lÓè×(„@=jˆÍôàÈÔd¹±Þ·/XâšÌ 7·Èò¥Mýç„1iJkú[ ºK’!.“püá€e_(6ß›ƒìjbY(Ú50Ù«‘Ñ÷;jéôšò¼îß³-·~¢âù.±‰æ» —íŠG —»vVÕ o('LÞŒýzr¯Yà/`/™ôè£R ®Ê4%™ÓYƒƒ.ú6uñ8o? p w8~¨ìA„W¼¹Lî9ˆò4«öýšP{Ø; à™ ÂaŒ á·fö´Y_$5onnÆÑGjÛùü@hp(íkprÍ­áì{ÇóóhIÏ„ŠMÉ“~©ÿ¯Œz{@r?kpøÄÿ)p&4Õ¢GîM†r3›17Ôÿ]¥x<¨wâlø(þÐÑk˜}b¶í*<=nSzÓ´H‡¤Ý 1öº‡*nüã(aÙ›ž¬Ï{0بìˆ"“Ÿ›¯öœ¤üwÕÔéZm†=ÇŽÒ‹OáQú;×y]íÞå=Åœp%S$˜´ÿq¤|>[ÿŸi—QNÞF¦×`wB,P Oõ¹ƒ÷È<œÀ{DJyÔØ{Ò[ä¿*Ý©(‚‰Dêe§éÇ ö˜xoø’ÏÇÞ¥š / ª·}Kžd·_¶9AÀö•`1K5³‰¦Ô^.›M©ªŒV︘Òq-ƨ¿p¬uL-é˜Ë§Cqvz©A2(ù†æß= =¡þÇþ)iA¦aÂVò5Å?5MüZ qN‹{äC‘(ļ–W@ù endstream endobj 115 0 obj << /Length1 1608 /Length2 5857 /Length3 0 /Length 6671 /Filter /FlateDecode >> stream xÚ­VgT“ݲFª€t¥—P¥&”Ò¥ƒé ’A ˜„Þ{Þ¤÷Þ¤‹ô^DA”ÞË~÷œs×wϯ{Ϭõî™ÙÏ<3ÏìYádÕч"la*´€PP  w¶uCéÛ¸h ( œ ŒQ”ˆ“S ³AÃ.J6h˜$À(Á aa€„„'@áê…„Û; ܆zÆ<||üÿ²üØzýù‰‚Û»¸0î0'„«3Ìø?_Ô‡ÁhÀî(>Öy¢®­ àVÕ6¨Â\`H'€Ž›­ЄC`.(À8ýu@.PøïÒP@ –< `@¹Â pÌ5˜'æúÛÅp…!á(æGì‘6.hLÐÜâäýMc·Cü!äŠD`"œ1> ˜…FApW4“UGIå/žhôïÜ(8Æ @Øa"¡ˆÛï’þø00/Úî‚ ažèß¹la(åêdã…ÉsEÂÿÐpCÁ]ìÿÅ€€„ÙÛ ¡N0 ƒÁþÝÕ øÕÛ¸º:yý¹øõOp4 æd$Æä„ 1¹íá.D ßƒ¢îb‡ þe‡º¹þÃçCþi÷ï™áÁ°"\œ¼P˜HƤpÿßTþçDþHüø?"ïÿOÜ¿kô?ñÿ÷=ÿZÅÍÉIÛÆ3-fàš€ß;æÅÚ8üþMôßa1üw êhLä]ì1Rÿ2ÂQ*pOTކ8ìlœ0=úc7tÂNpFË?m‰ŠþÍgà‡ÚÆŠ­~»!nH$FÑ?¯Sò?Άó„Aˆf&©PÇ”ôTtMvß ’YW‡N_˜kQµAA^`¢= %rY¢Äú²< X3,yÝèõeËõjýïÆÇj§ûíɰŸ¹Œ~ìÐÆòšQqë2÷-´§KH¢ÒvýEÒ˜˜& ÂUÜ£»Ëº/,Œ­dez¨öìçd’³¤Ì*=x {‚aêç~¶¤]8èWÔ$¼xÝç%"jîÉä×U>ìÑ=·Mc ¸ô5K´um¹\?l¯¹Ô¬Õx¢ùø..{v¥ìl¨ñ›*[µó‚ϧÉo¥àoq͈æ9kdN°¾“q úö߀ r£·cš4+ÆÄf žÈ•t~l¢PŸaT©Ð+d ?¬ïÇ¥¾e?“}žVÒMÎÂþ¤í¸oÿ^¯‰y„ÈþÛO^26Áªn®ùÞË•<Â-SªÙéD)íÓNœ ü&Ø 3¼µxÏ£ÅkBÉê©à{¤ 0å~k†ñ7BÅt.÷âhoùâEÒ·LvÑ ]ž50ê¶á—®Û–D¦®¾Ì& f^¨|‘ñÉÿ…ärÛ,xpT!úAB"ÍpËÆ/í“cíø(ÀÛÃza5zç"å˜qUÁNœôóGìK„ H â0ºH;cjoÑ#´¬–ÐS¥‘ÖN±§º•¤‚›EF/7ã>t®ŽýÞÍ«*ÊI-ÒBaõIÒFî15‘9´§n´G[­]~üÙ^|ÂcµµåjØÞa…œO€@å†NÇÎôç÷uMj˜< ©“¨»“¦láËŠKÞÖœ ÎìŒÅ£­g_±þjü¼È,®*—># µ¾éͰrĮڷ6j-¼ßáXª·C¶ôru$2ðíX¥R }þÙ¯¤wzKÍ0¬¬@q«T¯*}3®;3åÖF{¾΃gòItL0@ú½<õ9ü‡ßL»‰ü‘eìKWCœrùŸ5õØè„rRš8rzŠ¡ïÖ`' Fyßšz¹k(òY.¢…J Üï>~‚:ŠD³Iìûb_ÎÀ…#åú{ÝÌïÚ”j¾šv ?›SàùvOk²µ„éhðü“!Ñ”ú.#0ƒm²áœ·_Ù/ªbÌ»<¨óKZÛO´•m±šªÏM›oIÕó%oÿuÿå†Óð½àüó]¨ï ª챓)§æVùÚ|`†0Ñáè k-s™¾«‚üéXÕˆˆOÚî8áx&ì§!{`uŸ ~ræ¢qß‹u9n’sàûW‘t¢A&l·—yz›T:ì•–’ÀJU™¾¸F$øa'²È«Ùä$XŸžÆŒSûÓüqýPy¼ToÇã1ËãH+ Uâ›d,–Ré»=eRÜÂEŠ>PYÒ¨¡¿_gLù¼•Ú ÚåEV­…ïTgÑѹvì~cj;ñÏV,&$}3L˜#|fGM4µPÓ“3ñÎ$ ˆUª í©M/¤Ü‚Ôîƒîk·ÌίIW¦âƒT€â8=…“£íßZ¶e &]ˆâ¼o[”Nèû¯V)yQB_-™·Ê1‘f’à4 –âTJî,Åz ‰Ë‰E¿Å'Ž÷(ã ¸xÅ 5èüŒméý{Â-É; ¡iû«Çr.vB‹ã ˜øÀ3þ¬¤¿ÁÝEƒÆäÜ­"`Ï™DèäˆÖnEfeü‡ë mªËdi\Ï)>[†y*²ýü1Çê| U:‰¥|žX#Oa¢f!o‡$'~€r%Œõý­Ôv›eÜÙ-µÒ!“éºD‡¯ÞÕ}­Ôc´DÒ‰÷K¬TI¬§O“@±~úXÚ¢ ÷èœÝ$ß ¦µÑDå>Sú)LÀÙ$nƒ‰-*¶\Y7šS_Ky çͤ«jà=‹ÍÍ ¢ç©›"ï U¬z Gû$†.IºûDJ†ÓLö"m&.½¢~zÞTUûL|’í 8eö·5c(Óž!´ûYéØt¸ë*Qw6µÙ]ßcÀåÊO•6lÌ`»’›Îµ¿êr¶O£@’ÕÞR~äN5:-5ô:è!§Mb;¦6Ô±ŸÌ .]ò“"WÌÅÑNqÿ ¢~é%Á3(#94_ö~gëÛU¨um3kˆ;è\W<ð^Pì£Ü‹r1©¨”ûϨuÉÔÓzS—ÀdÓ"ÃÇlMäM’û:åÉuØtiåñŽb ³_vûYëv•„yX©8KˆÍL.w(9'ÄÄØ  Ë©Ð×t$u2\]WG>môïòæ2ýÒõöøF¥P‚,\5Gwû*ýÂ[BÙl#ÊßøÞ†á4uÏ•¸ÿy~M\âø¥0g\´ÈEÁDGç¤Ðæ¡N,Gžñ/Méxùg®¦Y¼A½É·¥yZÆ¡wæ»w©ˆ–¨¥Pèšw0„²qÏ|¼Ÿî«üqù•/ºyªÕãcÜ!u°pÎp §AÜ@On’£Ê¿Š—eoh¼!üKõÜÎ`Î+iaï)Ñä–Æ\Ä ù”Kô³_K\G±”<]ù Ê\:¤òD®ïyçjZ‘i õù¡/&rÞ7¥½ä­M]?EíÎhê×úª'nÅ¡óN"Š ø^Tå—½áæûô>à~š2‘ˉŒågÝ(¥ÆeÅ™ùóC¡¤“IJ˜¬ôWi+Fš)TöO#.ïNS ¯nï}ùö þYe‰{ñQÜç6<ù9?**¹Ö(Ìçê™Öwfîª&Š>ËdƒßÖ›?QÅÆYw| !]ýYþƒüG±sˤÇã<¯â„ÊÞ)Jš°«N!%Ía«|¢J 5ˆ¬ž˜¼k·̭ɧ͠m\6è:õŠyu.ºííkwš¶ïÀ–&Ø_obêQmâ$1'ѹX)‰áñúµÏ`#É*LZÕÄ.‡ÈÑPuWhHD½×”â*œ(ôcˆãoo•O*³ÔÜLòl ×-$î ×LŽíN$9èÍ_¾yáK±-{-Ÿ#Ø´#7¥†:¶f:fnÞmü|§ägŒ¿ š7ô(´9`ßÒ¤hb7ûöJ“Ð…®<óÄ ï=0±ÄÙCÝ”Í<+\v7‹Íf>k^ÖýJùñ,P8û±˜‰É¨ž@{'zrýÎ΃ⒼznÍr{êÛûm¯íe^^!R¼E”°‚88’9k%D™N=¡ tÏú¶8×L­È‚îdælc?ͼ:»jXI=zt4šJò2œ!§íͬQ¤áE!=}Ø ¡£ GÒ[ì Æ¿óXä’y7P½ÙšèÊÁÙþŒ"Þšc—ä>Ô3boçÙœ0P 'Ü‚\ ­X&íÄ+7•F$`‡sæ|Õr›ìˆ‘1kß]%©îl’µL-hé¶X,õj¿«ô<9È\×.OÊt;ïÃN–ŸÛ?xƒƒî‘Ñ/PîÓ÷bþ!¡‘KJH›‘ߌÆË‹¸ˆ‰ BðÐÞ(6*ŠÄ* {rÍŒÌnýAÆÔ¦óš)dàÔ"Õö4Žs‚=g¯Òö8E÷Ëeš Å“F}6eMÇŒæ}¼Ý'½]Y"â Æ2oUÐß¾ŠTf&룾<ÙÿV8oÙXÇ»±²-ÝÄ:\Ú&3"Çù:°F¿Ø½5 ¡Þ,HÀoƵ'±EÙÅéî3“¥‹í¿^âÝ`‹9{¦? ¾ê(Þ-©v“-/š,äïåSNª›š8e‰ÙÅ×îº~x|i™Îr-ö{À¢ð¸ë@ã {·¯èY±X« =­æmuª¤X6c˰sMGþ%cŽ,žü(=„Ÿ{Oñž s4eKkuúŽø€ºN¢ZÔ×KØäQfå]÷ýëæ¹k‡¯óH"žXýà¼?ÛFsø&w†-HõÜì›HT,'SÜà 1ß–×5^íTévÛ—Û‘‚ÙÖû§I'¤ÏÉâõ°Âz”·ˆ¥mBù9et±l¬<«qýûºëœî¤z? oMp%^ä wpSd4–òu#Z±Ëœ‡ád>óñ¬ ±q̪‹(´õë.w¸OÆ^u®7!÷¯R;œ\ôqA£Xxl÷-õ{oÉ]•ú€|xiQ¶8)™-³ „]ÊZ±×øªÙ¥tèÍ¹Ž¹ –®¶ªànêzX©q×fã© ²+'Ó«×S'³Û§„ ã­›»éØ*¢É­\ž2;cS¢³ýëvPDIw=ÖUãQA7p°cF'-ž^€ãmûjÊ›­"‚䬦Öú·‹é`”ëŠS_‘·z†“À€R&wb€´‡’ƒH}½àº6äŽJ¼XéB…-nR¶Â‹Fªµú%ïÚpgL½‘¸®d‘mqq ÐkÓ‹Í9ÙÑ>¥817X ;¶!?0?½gÃt7eüR¼ÄyeÖÏXôhP´q“z*!µ;ŽþÔÃÖ¨ã;ø8‡f嶬&¹¦0'ηiÍ-Ï=|µnU·‡Äl¬µ{¶O;µî ¼‘BK{Òv§ì+cDçË*·ÜŸ‚q7™Uløâ6ÓRûâ°ñK½ìÊŽÕ¡";ù0½FŽ(dÉí¬nlzžI\J_Á£;6ʦbgCºÄË´#Åôaiá²lG9³ö¤Œ£ßwÎx“‹ þj„/S~°ÿŸŽÜÒÄ&&³Ñ)~—j¢ó2âá‹­Iµ—#ù`Å0÷ ƒG>yí"/_¨}a¿þ­Ô!ƒŽ‘îëc÷ µN¡*çj×{iµëÝï›ü‘uúTa–:õ8“§×l Ãf8ÄÆmœXRy™^Œ.[*1´SJ<öß~þ€¾Ç!H©â‰º¯íÊËh÷nYêµg;ÐW¶ W•„ *"ªìç¤ÀÙ°—gyW®3¹Mïq¨Õ)×<#TgUÍJ¬XûÂ=·0-Ä¢‰ÿ%5ïÜ ö`=NG±-Š÷yÀœƒŸŸÀãÈ–7­Un)[öUóRìfµÄa7œ©üAkÌlOÇ™Ÿ± .^_“)¨~jª¶oöúšA(æSxJ$åFRùn»êHE\ý°N2o²¶!â œKwV+/ÿL’À¹Ì%ã¾X+égeZº4ô½Â,¸™Ôi¹†–0ÁŒè›>ûÑ6‰äÌònŠàÙG¯â±Jð€Ò{E/ÄúF]bµ-|¥|jóÔmæ,y,=ŸÀ³æ'÷ZxÓk瑊·SB b§YŸö[Ì»ï<4DÄ©å&}ßKWd&ðF*7‰›RJ7|(9Ú(ŠP©ä¶45<ù¼Âñ\aÚñ€—Ë×ïS¤ÅÓ¼ÂÜÝ®¾‚Z*±­Ú1Š—´ªtó,/9^ }îÏî~ 7)Lb+Ø?ÿ¤EiF“æòBh¹í ‘üyÐÃò|ÛTRña7hyµ°P¾Dà7\,IN 9p#º¸®[eǹDÀl B¬!NÞ§4¼¨8˜ÞIÜÞ:B¥Í´DàNÂ@ñ¶-2lGÙiFZµúh¿cÜv÷Ónˆ¸/tí_œ‚ü¨˜ßSüB‚ti›È*"½Ù¦s¥gꑚÅU5„Õ×BCòOÁBX”¤$¯¨dÆçM‚Ù24qJ—t5*ñNˆ •zá·âèšOékɧUCtì¬cÜíÚJÉ$K“±>Ö<ùéC¢¿»°ò%9¥†j×6;|wO4Õª¡Ÿ(Á>2âjuʹcŠÍÙ! /Oqór+x ÕjX*~ Q( ³®x“ö2÷$[L>< ¸Lÿt¢hвÕ:öT¶¸ôóLnúMf9Ü€E˜Ô|z, ^Ñúã³i°X›Ý¹ï£mIn{hçPöCÀÀ¦˜,“òÂz×#Ÿ 8ÁK›\þ², Þò82=VùΠã¡(V]&t’_m ZŸ{ü¶<ô>{佇<ƒž tÔ ãW5%º®ª7AÃiÑø2Áës*Eëm³ËvÔõ'j pÎ#ßêmM§ݱ,XqíݲÓm.šÍ0ožjf³½“”‡ÛC­l…ʺµˆ ã«ñq]ò¨ÌÕ‹UÂr×Úkj!Œdè"¨p Š¨Œ¿p!Ó~B-ÏWcûM³×`¤Aí¥|øý];cÙ<,÷Swiðí‹î9:Ï ¿)éú±hxê{4…è„O}CÝeMe»>¾ø÷`€àµÃÕ ÷連Á 1í"D@ö=ò7=ޚϒÌçóZòÛŽ^S¯R}¼ÝÊ£ûüŒ>xpѸٳçü凓ï¾sõAŸ0÷- pí¦#H_DíâÆf'ó}«ÔŠPqQ>«ÿ|é endstream endobj 117 0 obj << /Length1 1625 /Length2 6117 /Length3 0 /Length 6935 /Filter /FlateDecode >> stream xÚ­TeX”í¶¦•F:†î. AZ¤‘ff`fè.¥S:¤T¥»¤DéPRD@8£ßÙ{Ÿë;û×9ûÇÌõ>ë^ë^÷Šçáb34R# 8ZHLXT uuð@áºB*X „0€—*DCp5 "0‡€j@\ &++KÄPE¸ù ¡NÎh¯é#s>ÁY~»|þ`"QP'8€óá !Ü\!p4†âÿh Ð΀#¨Zjékx5õMš8‰)ÂÐÃt¡ á8"Ø_C—†Æp)£@Ê ‚bÂ Þ ˆÛoHàAºBQ(Ì7Š8!p4¦h Á<À¿`쎈?‚ÜŒ‡+Ã"Ph uC0Y Õ4þÒ‰v¢çFA10áˆñ#@¿Kúƒah0(…£hˆ7úw. E¹Á€>˜Ü27$ô îô/‚$Ä ˆà (†Ãý»;ÿªð?ªº¹Á|þD#þxýS‚À…‰ÄÄ19AhLn'(œHä÷²hÁ1Ñ¿ì`·`žäŸñþÞ>Œ ‡ùÀG"}“Àû›²ðnÈÿÿGüïÿo¸ŸÑÿ¸Äÿßûüwj LèŠY€¿æ•At¿ßÀï‡ ú_!@W(ÌçßýÝÑò—Ðß\Çþ¢V†;a&"$&.,ú—ŠÒ€zCÀ†P4Èà„ašõÇn C0(‚êŸ~b‚ÄÄþ†™8CAOà¿»/-û‚ÀÁ׎™Óå":†&ªÿîiýãiˆY´‰ðßÒÌõà~ó¨¨ ¼~Bb22! QY€˜˜¨ @VJ"àßäüC$ö¯³„z‹ ‹ŠŠ0ÿÿøýëdó7u8þ½4Æh ŒÙ³~à $3Þ?WSö?Î6ñ†€ˆæ¦ ùp—ŒìLô;º}#j»:Äpû"Ü^W›W Úƒ2"WdËì¯*#„kFå®}>íºýZ׿ßè …ñ´§A¾Ü ààë,¼³ÄÝ,#°*bûš4sÏ<Öï`JwÏJZÔlcuÄè‘í«+æÑf äíƒ|Áž…ÁÔœgnd ôªšŠ,ÊwE»{Ü)Û?ÎxzûûzÛð;×™ò¹ät©»lÏÑ>öÈÓjÐ//¡ ¹Ü”ˆl ®៕œÄœxÊL˜¿ÙdÜ—XŽÕÍN©n1îh‹2¿·ñH¢ª o¬¬Y×y«P’Ø ÷'&¶´…J[íªhü³à“ZûfD®¼$ñ :ð‚†wô6npbêä»g»£—p;,‹L;ZÞy…«ÄÖ š›±”Ùt­ µkXE3bøÆfʦ?Ö6_Ð1öCJ6!ßcS$I2ó3¸ÈÎ@'4ñE›‹cúº‹UwX…§}xx¢‡ŠiKëé>ìîhS7|cb8X.sôjÁŠ^ºCmÒ¡o«Ã™^ Do\‡ä­æèÀ¡ÉŠI„hžÂƒÎÊ‘¶12#ª$š0­<¥M{&ÚópZ §câÓHæs6îxk,3NVjf1U¶¶–æÕØ»ršGì÷Ö3M‹¸C{’ž„'†›ú"M±Ï¿7+{ï©—'˜3ÝN„cZö¹Öô›íër=¯Ð’{Z g&„{‹a¨&GUr–Y`2[¢“ý@QÉñ¿ÄB0ð½>fU:eöÒ¥)c,1ჱHúèTà䱞iݺ|°LŸR ŽÂÁ<•ýੈà«®lÁ["” ŸˆföÀüpz\ŒéïUùøV¬”ÿµdþPì×lŠ“ëŽÍe Âô†l°Ý·1Ðï…½{äá™ý]|¥‘ñ Æ_q3Gb)»ÆÐR—K9¨L¾¥òbªoRQÚ.©‡ßK›Ä>< ¼Qx–û¹1UjC4üs1è©¥>²ª‚q80/ÌqI‹ ñÞ»oºá¼¤b”G`}Òk•—¯Ec=õNßòBT<ç·y˜–7$ÕfoŸ‘ª€]¾M\‚$§03ã!2†Ûtp¸jPfбÑzè$·>ù1VD˜|á‡ïˆ³µ;Ü­µK±$hW±Ðí|x‘¼R÷”ùþ³NS9|ª¤CN'èA櫬šÄŸ5:?\¥ìö1®ðõ‰"wí4õDúz¯Š…Âì{Ó ü`D_»TçþvAï¡n§‡} »H%UNâhP‘ʘÌYIH`QåVd3{`¢ ÅYìüL¼ÊÏ©¬/zw߃™5OYԩξÌoÛÄç´“ûoWª·TÄßD>\¥æ½½?f ò@¥3 22Gã&çIhœý~ªi„–Eï—|kø*›³>ùËPáœó!–Iñ[š·îÔð_7p—wՌ–jšÞìu9V 92ð‰ŽR¾´yUŽÍ.y7KªÏ™üЫËPã×~ò‰8HüvwéÊQªò~zÀe–íÈþÊ*ÇÐ뛕ŒtªX/|Š9×Ìjä¤t ”É¡o4”°Oe ,Ì£ÌyQOn˜ÆI4=Éý5r8ʇš#‡µž–rÀßÿ±õÕ…rTJ†‡;wpdƒšÎ‹w8FwYMB•æßæ./]õ-QÓ’¹-"]®Z̶Òä ùŒ¶Žã•ŸgT™-Ó¹&çœ% ¸=¿²¹oÃbà ®,2È W¸ýé 9…ý(D«åW` G¿%OÍÅÎæ³³tCD¤Núž†JáUPh~µ³ ³Iþš<û£â»J#Š:¢û÷p÷C;äkdìB»ªH]£Dí‡ ÎÒ½¿’|z¥¦-v÷+O«ñ oÇ™êq$õM–{© Asúô¬ÔbS°‰'ÎĽ ‚ú÷YÝñQg9vi“ù2òŸUÐíLþŸìy28…×¼*‡&¨ûÖÃr†ö×ÝCƒÌo:ÆEÏbÕ“ K(°”g"#ÞìUƒg­x”Ô„b,pˆn9š]ßykwø2QSqS›ÈRö€:d}'kùA#,CcDÞnädnªûL‹:Jð ç3£ýg÷còT¸‘‚Hž0u·NâóäÙ¢’då ¦ŽÅЗ±‘ÖÏ ÷ÇæÇ¥/hv×õUV27ßGÍB´?ïï w¶º¥ ²ŸšèòÆ(õÍ ¹˜r©’ ÑF!6Dxõ–BØhn+M‚0zV³ ß‘r¿$‘¶ód½.©w›Í8Kì˜ï´úf™ –†MM=è‹GS|á«L¢œý,Ч‡`1Mˆâþäý0 “þ+„$Ê WAaÿÈZú.^Oéu3ÖÁ¶6Ÿ/¶Úµ±D%I_‡áOõð³z}ÝŠ¬¼Ímd¹„e'BÝ}4M{¾¢[^To‰S󚪩ùÑ “l²ÿÊ&jU9M)1OÒ™\§$ •lwãó±èyƼEy¯rº+$(N¦lß‚fÂ"Fê¯MGp?Ñ—ÝgGžn߿ןG·4 G‡-)¯»GßÈ1™5¿ù¹?>t%Zîí*àS*-üà‘ô¥¢qƒ½û‹#<<œ q؇’ùšö~Éuÿ;_Rw+ÀXñÉx.],Ê‹A‘¿} M0`} P[mB¾Å)]ß:¸¦äª#œCë»øUn ‹Š5]³MgTþŠ^G¤LnÜüÍä0L…6b”™ÑÛê5~úðääyÄ1›…¤^î.£§Gq}~x™dÈLª¥Ë °¯2£j~ ‚zv-)J@U®ʤ?OmÛ¯Ñ9Q Q£¾ÆáóUÏ@dù˜éµß¤:¶•,—ßPZ?mµÛÔnÿUv<´æÇŒ]Àä&r¶ùøgC±}dåp q,WXM$¾NTp#ŒÌç~ù7Qºä׺«xþ4 Ïz™?1ùKg1 )£³žóg¿ìv¼´~w½D ¢xïüž¥«á|ÁÓ%Â<÷¬þ— ›ë5áÚu"?—å? )·\½¦)õ<t3ðÞÚû:y*¹vúÐF$çG¸¡©›õáV­«ƒ=sÃwmo2¤ỸeV2Öac{eá,|^é~ãÙ蟣—ÙªeN+Äè>‘ó_ä#ldüìcÙA;F>ÏìØpûëtÎD¤fGx‡uѕϚpRàŒC£Ó#‡s* Ô`šzÿW=OŠæ,¯[¹UnßœÅaeU9^‹âPã\0¾jœ¨€b¿Êõ3˜Ò´*åU; mÓŸ=a€KX l?-äe,mÚÆ19„ó#[imò&ÍZb1ýD, s§5ÌO#[ó8ZÖ-½;²œ¿Ézn≹ç,ÌÔ7!™‚£‚"ýE××£MkAùlèÑàÝÔ ™·Ÿ|"t'˜Wí³¾ó¤ç0®ð©vÖù5ä3^¿d´Yªí¨Ð‡4©—À:|n¡¢ s{g¥wr]g„AÐrfbË{˜Ÿ,7Sÿ±|ÏÓ¤C±Ú/ÖÖÚÞè$Õ?’¶{´»û+¡t® $+HK(ûQA0ä#›$Kùéîø½y6¹ÒØîZŸuêÓåþ­'ÃÛ;¨üËñªh’üÂîËUQ.r9ád¼LX»¥ßÕÞü”¹Ê1ÿŒŒ2üG¤¾Í4¬?Ͻ5hcƒ“Û€YÈšxàíæVºàÒþk/Î_XEÚ¨§àÙvúeVhÊC+Þ}m椊J%×sMZRš ;‚ZëáÉ` c[Úº²Ø{&êõIªS‘…”·±æùÖú6“ž÷IW¯‰¶:>•…ÍÕÈj,<®Œ7Çf¿ÀÝ¡5¤¸Ëã6ˆðá3ò'å¿J>ž bÙ7¼ºÊ&så ¼É⮼A„ïõ95l¤_¢JôC|àIÚÜ’€­o–bcð6îʰT¿Ñ¾HQë—`Ž¦Ù²Ë¼Ö˜~uMF<]¼¦]*Õ×иíæ¹1rŸfšc-8)«ß«åÅT²¹ò’nœ̯÷‚ý·ŸC‰Ôiµ£ LáUõó¨3‹Ü7ôØÐ7ºj6õ/a²ʈFi nç} úÐÛ~Õ;šs«Š‚C#ÚðZx¯?Oîõª7,&ock^ ‡™A¦’û.à±éɵaör:Gu­ÄÖDÅÆñ_'RO|YN´+|º$ðð‚úÈ4Ù%”ëߪ9ßPûθ¦ŒY8õLäFb‰ÛÔ‹ª·‹<˜ä¸…MönóÛ ‡éÆSZûÔ˜(z Ô—ò¦–Š÷:’“Eþ¡ÍMÝÑüø:æ×“n;ΰ[º „A«’Õ¼òØd¦*EQ»"Þ¾)_L’™¢Þ&²•¥Ä6¹¦vê”7ânÙ¦»ìœèëVo͹£“­ãYò”N.ðg6’Ú&o¤Y†È«ÅõA]}A÷ð‘g  B˜ÎIØ ^ð‘’Ë¢cÿËÂGtÈÓËo¢±ņéàv5¢vòÕ;á¢Hó&Nøb€ÖUªæ®KØÜË2‡&í¹ì=U|óú˜)ƒ/ÂE~:°ÃÑT8SRÉŸ“Ök¿]ÖáYKI-Î…6'¹ äÇ×`2ÞA0ŸjÉø—÷6¨ª ;›-ì¹F¬âúâ©@tCŧ~Ï­Ò¡î”gßýæUA0[[e2æVî{ ©ºr‰ßºÀ›w, ¯’Æå.SƒØI–š¬nÌ’H´ÍéH¯9GOgÇgOI‚Šo%ñæÉòëµ|×cØŸ>Z»øðƒ\H¿ËËÍT¯*­?×ï™Õ§Ãq|Z-%Ü´ÑSù þž_¦Y\Ù’•‡²Ÿ³Y 7‰žÉÛ)Zi™ÍU:sY'Ûœžnv´_ì\LM±j­ê¾jah #Ι/ÙOè¡mÖ¨ÜÐä%§Ø—]êúÎ]ı—6sóî:÷˜ài>aøZÒ NWSÿ"»€ô+a~âÌVÇ^mw¦ÒvgÏ\k"‡¹1 7O±ï}T¹›ð{“/|Af‘¡nâk„ƒS€$*”½ûËHó§z°µñd’3‰¾\pzÂÇû{ÄŽ$0úõÐ Ñ—–÷)tJÁ1HîÈ›ãðìDÙþS5)Ï<[ùAˆ×(u>?aøBà ²±­UÛœàYÐJi‹5Ï7Ã.èG¾”Ñœ‰ía©tËÜ@—¡ouÐþäIʔŦ…ÙótW-Ð>õ‡ð>•Z7üâ±xsbÕtÂíì}™ãD-úÎìé³Âé÷éÔå ÙñŠŒ½uܦµ‡ ÉG¬¯í“Ë‚+$ IÛÖ3ïÄÚ EFÑ<ι±ž8Ÿñ+F)92òü°†nÁ2ë²&lž™$à vøîâ'q4ÃÒÿïÕ­4 ;Q¿äi!t7IÖCAÚ0Ü—&_( ö˵š Ô /l£S[ß­ŠRE»$¸ìxÀú?îF˜±´üÐ/Å™ze#Ÿt4Yq¾J|ŠÍªV°à5±“¿ª17 ÅÜ@DJ4½— ¦9 ¼Ô½½\ƒ%m1çµî©é™nÚ‚-hkW W=tT#!ž µŸ»”r4À¯žž <õÏĵ)/ÿ Ûìá¶ÎÒ½·íç$Û˳z|rmÒ6¼w™Ü7ù„–=ÛÁA/7†O `ŶFcõ¾}!!: Áµ«‡†V;~ò<½Íº/Ï;1&¨-`‘Œt ¿b4’žÔ÷4Š0İOE’Ô¾XYëoYóÚTû/ÐæyÚ®yæ¶öçÈ[Òb>Ö5ßçÃ!¶Ö3õêiºø"Xõ;â"øË)f?¿¶¾5韾}Œ-d`#ÞÔ·qj®Âjí´,˜öé©»ùôjnA÷[J°>żðöWK8§V€$·}݈8ÇÆVUD¤Ná?/p+¤WÃâ™'äÞ÷Ø«¡8K]þ‰¬ŠbW]Ï¥ô2&eõi© ÀÕ©[ò–¬ìM¤¸‡]ViŸÉXŠ^uè RÑåÖ9\Åc}¥ê|»y &ï~ PcP}ø o)ßpîýœšÂ oÍ3åAÖ…ãjQfS6É髻˨žÆ>Š•Ùæ]êš#T?ßGÕIJ5OÄ4ήäTì_C¿Ÿ üd:> stream xÚusu\”ÛÚ6HJY %0HJÎÐ4(Ò5 3Ã0ƒt·”t«HIw7›i •©yqï÷œý}Þï÷üñ¬u]÷ºîX×bcÖÖã•#l Ê8šÄ”hBm0®zÖpu^]ˆ=p [“°±éCÑ0ÈÑ7„ b†"àŠÖè^ßаF€P(&! ºYÿˆ@I´QPg„'@‚† `Pø ¥ˆ°Å8Càh=  ƒBÀºWe q•ØÝTößY ¤ jï€pè=áææù‰‹‹l<þÅ!®P{8€ýfá!¿3ÝH¨@àÔMÑàß±ÚvÖJ`(úw»N4)ÁÏ´³†Ü`|®v|pšÿÉM¡Jp°Âù·€+Éï™)BQÛ›¦<øÿ97'8â%Üë¿`;(ügK` ’ßuÁ@Ôÿ7ø"ù³‡ Â@ 8Pq@Ümø§Ô÷@Bþ$A¿ak8ØÇ ‰@ì¬a®¨äæGâåjí Qˆ×ÿKü玀¡¶h€ ÄþæþV¿!ví5¬Ñ(¨;ÀÈ‚Àßß¿Wæ7 FÀa‡kZ;CüòêÊzš ÜÿìýßQòòˆI^¨€W@LøÆ)7Šâ‚ÿTÔ¶†þoEÀ¿«Áíñ¿ ¿™Ø¿Šwƒ \o\àüÓ°Oÿ©¤‰@Cm!οMbÞøãæú?Íóüÿi¡æPÆÀ`öÏùW〛Î]ê€ß½Ã¬Qÿní …yüþhùËçÿ5´5 j+·‡ý{LPWe¨;¬ EÛ:üeŒ¿p8øÏÑF¸B¿Y/HôNßj뇸ºÞ¸ïO ÿ#¥Ü†ÂízèÿY£Àÿ~Ó¶êf<^ÐÍÙíí 7B î[’Ùi„­d°cUpËY…ýKÞo#‚Ý"'×&!’hîß­.M§ôBï~Š%e)j:È”™âiàá†ÆÑ+E‹¾t—oå#ºÿ äþ-Õº¾j)M ²bαÀnº×Q4)o6•ÓÓ:ÎÙO&6Ã+·Ú¶)ù8rÉóCö[Œ:‘ÊòêüYÃÀàçÖ„Ý‘½yTpeKCÏyºá´3õâ„ùàw7…®¶ç+kC8•fŒ8:üå nÒˆº-o5=ËÎ÷i"*±MBŽâr¹Rû5V ~meqYñÄL[Ù ë£zû‡ì<ÚÅ'=^ŸéÖ.KEÄê¹-Kœï®UU>k§kJÔ¡sò¼L¯=a6CÙкÞù~«G@ÕIH üÄô+¦»}o× U$eÚ®[Ìæ~<5üh‰X^šñº¢{'ÆÈaŽˆÎÅ›«ª²9µúê ¡·^ë§_0µhðŽG–ቓ[ž@#´þ«L¦ËOVl”ÈÞCäO/½ËñªO¶2êùO·û‚VÏŽ= mR¥5‡4ñ 9*㯾´aªOeÂ<‹d=zð§\ö'ÄUD E"0YöõAËš;„‹£É!i”¯©­üí¥)"?oßÿƒ¿Œ‚"†ÈÃÄ"àny˜ãÛˆšÂ±+ïŽ 2’|Üu¹1âˆÕ™ãua9L‡¼±„¼½hù´îž¦ÇÛ‡ÔÓ” ú´ÁY12"“ø—|M4@á,ªêÆÊ%<Ïš—žâ{ñŽ:û°ÆzéõW|Ùaµ)ëÁ¿4*„[<ð>9ª¢$È¿62_7ïrÛÆR–.ð8€ ó•מJ¥<‚"ålŽŽN ÉÆ¿>)9å*cm@Ýí02”ˆdm•îŠd·´ ™´W’ZÔ Q²XÆÌ¾Ð÷Ü.ÕzêôÈ9é‡Î‡ø ¨uÜÉr~IÎû1æ„‚ì½F+;Ç|÷.48,‡ÅqʾŒd&|ÒqÜЖÈÔ&Sˆœ6>ÄÝ$9#¡)¼ÂNãÄzô§46íÛÌi1nádQÛbL›ð‘WW9,ÓCœ•‚-g×Nñ%f»Ke\Ûãjï=´,0gð¨ Í™‡ŒÐ}o×[ˆu–\Uu^Ì:oŠW(}^*eÖ± -XÝŒŸLçÅáè-Fm¹xfTÌ ±=ŠL,ž l.#íæçy~]`©+bèb˜µŽ]õaðÙ„>º+mÖeø¼ÀþÎÊL=CÍm¬ý{l‹4l-Õô!Ûøo™" E$Ÿjù½{ù… ÊzT„ˆ È¶=¤ý«8XðJ-ÍoÌìÅ…r2tÇ]Ï[6†­´S®ó6p–Ošñ,'Ës²]‹ŠK‚Ægìã–=±SóÇšÓ›ö u_zßyE-»—ØgŠgSRÖ>C´èöHSOh|s7±Ý¤Íµ(`à¥È§8Ú}—ãâI¥Õ©Æ76¶Üç Sd5òYéµÉíÊIÿP6V<5£jÚTŠ7oì’t(.½J›Xî¬J£>œ<¤]ÎŒOwgùR6ˆRŽÇëùFÚ§©uäNø]ׇÂ=öUò9 ãHRFŽLeˆëb…ŸG.iN²F5(êÖÅ— |ÒSºô ‘47 î™[J‡j;Fbnö‰ >0@LÿDådÈ­àthôÉÓ:´JóŠçzTodaŽÎHwB#xp‹Í²ô3òîñÖ"kE$ÉÊ¢ºíh…U‚rùã|{ÙÚØ·ªñ0¬c]cüûÀ-žY2Ò[<£|ê@ý•»²Â¸*]ùDÏÙ¥±ˆo¡¬†Å%‘»Ñ[»$q C® fY;Õ/hGÍ }³GX‘ª³ÆxçUŪ2Ö·áCáªãžÈ¦è†E¸©ÜÏéýZ}´1üÙ£âN÷XÝÈC‡w êóhÐy@ ì§×G·* P~ÔðyíåE^oä–)ðžY°QèåcOi+ª}¥T ÜãPV'›Wma‚ª˜š3ÒD÷?oé§¼°hàÅ’¼3Æm½®e ?»¯¼|HQ¯J˜“–òØšèÅ]¸ˆv ^8$Å÷òÚyöE’Œ|yÝŒ6$XL+â(Hÿ®¨¹ö„á8Q*!çq)ä MŒð’®Û.S¬BD(_åsÑÅ¡çZïdäØâ|fÕ/µÌWTàБv!ìË¡ Б'9[á ÅÅ–Nâe<7]÷nqOð6SÙZÇœ›…¿öA0ýÑ2I›`œ9yûXèÈÄñ[y,ôèÀ©7A×Ï °„÷¿Rj…|y¼/‹Å<%ÊYYò:q¬ti4µÎªˆÞùšB¸q¢¾"±î‡¬ÔøXÀµ:7hóŽKÒ¼Õkü‹ËŒPRåk] GU®nÛÖ B+­Ë— œnOØæ}غ&PoxBBú?O®{ðYêZWrð&ˆ­=Óå‚Óv8?>$šü0>.ëLñ¿{u‰ìžún£~2”U>P[%›¦aÆ,NàUr?3¹ŠÑ7¤4»"Ëü+üDP=bÎ2·ï¦©¿ˆJ&WˆeÑQöÒß—š¨J63Æh+ÈÚRìŒ2ˬ•sðÙÍQ®[zein!næ°ÔÜAîeðnŸÀº»·ïÀh^mmˆÊ(ð{¸x¾­Ûj• `ñ¡ßŠñ¯_ððcž3i.gðxšQïÅ#qW7 Hˆ¶®N]câÞM§…“;æ:*Ü?è£LWèYüá~pø`Ö¶4IO¨jÁœ ’~9~”°IF8ìçkYK‚YÿKAR-L–Ü„Ø{]¤RÓ©^V=ï3J4Ég5kÜ×èÆP¦ž1ûîxCˆ7CïnoòáxhžìQô?ô§¾5Ûñã{FÃmbž \ÿ®+ÚIÌ«{ñ4|,vXðýoiŸú -%a›¡¡U>£5;˜NÓiµ…Å,’˜iž–;¯ÔçPNØÑµÞDÐÖËpö’|æÍ–È÷°FûÙ~æ@ÙÅi`¶®Â‚ŸÚ„Âg7±C?®­·:ºC ˜N5z¶X(µ¸qœr‹bNK©uØùÎUC¸É¤Ïiö떥ǖñ;~§€»Æ‹Í;ž2!“ÇŸhõ³ééèq1x¤œØÝß² #¬ô@S«{·Ò~~ü@M jJYO½­Æ’íYÊAã[~þLû­•;Y”Ò±Ø6V]¬Ä†;uC|ˆ)'åUØvÏYBÍ|“ZĤoŸuz||ÔaÊÓz¶(¾¶ëañõã¦ÔÛÄm”õËçùÚÛ1ñr+& ¾ù„)>© ¦ªÙ¬ïýÌ×aGþÛÔ×Z¥oâ¦5¶ùÃŽ6˜G`Ýé .ý&‚ôÞúà\ÛeM£ÈÙÕ røØ‘#­ß§=ZD^ƒ‡ë\’Olü‘ÂS4?ǼàÔu‡Þ—9fù׉;?nÝ_3ÆVè¢&æ¶'¨˜ö òi?• ëR¢BEq¾žht‰òÝÃÉ:²ØcR•FRÛ$÷D½GÐøÒµêó«ÔˆGŠêÚÕ9þÔɤêQ4°Ãõ}pÆý™pë>u¢žÏù o8ì”ÃOÍ N Ä©æ]\ô±ŽWúôTä}¢¨QãaÙÐföÖîbk‚UBöö9ÇÆ2!ØðMÏ‘á¹^,ÍjÓ%GÔè°3‘øëÉb[¹d²g=Í>>;O¬Eº­ã÷+Õ{šP„ÖždƬ»ƒvõF>~L;˜›¨4¯j$m| ºsçÝçÕlÖŽÜb1÷´ÞRÏΩÖç5x. ‹é¸!c»èáñ /†*|×yN$A+à´kÿ<Òweǰ8Ô»À'zá œdšGaÙ ’"/&øU–*2­ÎXõ#3]¹ îÚ<ÄYhÖV2>ÍVãå] “¬ãw‚Ö>3òýu,ÁLiÁ“‡ÓÎÈ5œÛŒØ¬Ž[0öÊ£K€µ`ep$CR¾!r·âk‘Ê—Ý™ñ<À3‰c*\" 8ÐÈ·{E ë·Zò[n´–¼Ó älVÿZWuš 0ÆTz<Õ×|ó4KÖäYZé=@£`O`@B£“Ró#ƒ™ÖŠr˜ëXâÉ©éÃå—&gÙ‡&¶X•DHˆñ[î{sy¼´fÑ[$åžeyô®b0MÖȆ’؉Ã/—/ìÌ“·ëFîøã©_šðÙª§ Y„ÉŠäuÕYHðHXº?œ‹ú"hö?[ÊëÌËŠÑ­<›qVî1ŽiÐsÊ÷¶>P~ibð w‘± ¤¹uÿäpíòY3Ÿ=G´ÁW¹¿…ÇæÍ$aQ4µwòŠúÍPÚð “÷3õnÛãFVí®½¶õÐ7ÈùFêÿaSÉ|ÕÓ¥PŽ-§fÀ•ÐL žiŠ~=þr<æ-«3†¸“ ³ãC9ջœ7Ú{ÜwZ+ëNnÊI‘=Á?Ì4£jð–ÓùFçÓ»j‘~1ÊËk¼î©P-x KÏwÇ ÂÅõ>ä•G¾¦xa»»L3jaæ¾G÷2䀇I›Dß›f ™h–aJ°CÓœ+Rðœ£Ñ1ðŸŒòœñóTƒÐ¯R V›*QÒ±Ë!¿âJbí¥nç÷ö\Ç Lè·>o4óTD”‘w+›7q‹ÉžGê1s?Æp|–-×d3D”ðØ­'õÓÖæ§•ñMõ~»“2!Ε›õ–­>‰˜ÇzßYTÂÉè(€ä±1 æf.Ê_¯Í6åªõò!Þ¹›rDr1<ò쇀r8×4$e?³G²häs-Êdì:µ€aã«ûªT®Dêƒy;öµä×¾³G+Þ0¶Î.Ü\´JÇÙ/…ä7EÐV¹\£ÞÞ9„èb¶+xü âÔ*h¢ˆl‹ïìí•$”:lÛ_Ùå¶ùsÓQ¹ó ¥ù’•NsŸtŠ¡Ý/BWRm<)gVgF_×!ç~×ùÃÂbõÙÒ–“r}Ì ­IzR³›ÁMiʲ܂\\(Á2¹×‚ftµá_› cv:•¯†%¥¤,$GX½L¦ò.zpe•PÒSQØx¹1X—kUäl‚™Ûr‚ˆÙ· v‡ß0wã•_|AÛž‡ñ¦3õO‡tN`ñ>J—Ø7–tüÌnÊ=ª»ªxùÑF#sGå™Gïp裔wYIØï*!…oãT?ßú4l_ ˆ¶$¸|(Yu$ÆÎÅŒù6hضy×x¬´ÅóAÅJùÉÇ`3ß™,5bEüÉUK¿!ë‹Õ2CÚüÌ6ú®ï­·žÓáç“Q’4ÄV–˜eúéô½zŠÍHݹ[äi#û˜}£÷E¥çÌsAIõ¼oâjE©iJ¸*žSMFT‚º_²-S°Û6Mfö’Nà‚_Ѽ:fa3ú:Ð"©p!é‰5v«èšhQÔOKgà¶ štÍVýGŽ1 ugÊÊ0a›=}+ø(šËò¡®FeÙs7åxþ®9ï%†œÂz愧ꊓ¹ÙUá|wò–j23€.—P±ADÇß èïè#±³ŸJBï òd'ùïvØJpY5¾ëé“åJ>+ü¸û}\{ÔŠP8V„—Wô$øü\À«;d?Ü`p;#IwÅd±nJ Í“.Qî·lɆÞ:™éR|Lºü¸¢À•ŽÌÕ)ñ§zz‚›G„ñ½ïFZU' À"1Z:zL*ÔÍfóí-¾B³hÒw)£›aî’˜wõY.u,MΔMBÈu°Òñœ‰+8,Z‹Râé¦~¦2…AÚߊdbXW'ܸßIŸ½]æYCùòæG’Eü¹;6èÚö"i­gX„^üšúœ’›¨Ÿ”§ÆµýõóÉÁ¢ôà XXM:²|V”ŠÞÙF£éÔ§qD¼…Û\ú¨ý’ëùÜ æ§alϺ¯t.ëÌÜlp¥Äl"™Ô"¯¬£ÝruAÍ8wå‘÷u°Ì}²)XNÓ=—Ôñ¯Íú)W?$ca¹rEË +ÒééìÞGIŠ-)5‚žf‚†ŒYŽ‹£q¯a‚‡x#(6r,Y-ƒ×ýyœtwI½Ô¯Í.W;ºšÜíøc畇Z¹Ê5µ8‡©­’Û픓›•·Ÿuä1“Í‹„¹% }àˆ)·tKñ_ïYX0uÞ­þ¶‚æ2ðžÛÊT¡£º7)¼zãl%^@ëf¬ ¼~øv_B£Ô9Ö«™Lùj2Z!µ¤ó½/î2“2S®y:Z«*ÜKÖb¢Íf[5Ó rÃ|ýãý÷™ZŒüòöÖþ`•²«Èü<žÍÞ B"ïä¥PÚÌE·çÕÊãû+aÏÒN2pŽüÐÈs6àÉPu©ú’·tø}¬¹(ÛdRþ¶&Þ¼P³}åíÝI­»ÚÏåu)&R—æ^oÇó1’©q—ëÍ"F[yf1V_Ið;OîDeDf¦Ñ8ᥠxQ®@8þx•Ï?Ýšm«¶¾ÔåQùzj¹ï…SªÆca[‰ ìÕÀ›~ù2‹ÚæðYD“Üø=`e§´^¤R3·ŠªFär¢~ ƒk;ÕETvz½M=Á#ë÷ŸP¦FÏÆ"³n-[äZ³ƒõƒ‘ñõ\ã™ôB>”Ôú}ø¥dä+˜~L˜«»yT²oï•ûFÜ£§\pÈÛ°K:ʆ&N)¿/3îˆ>cÀ…–õ, Q×ïñ?†’W}šhØj•¶8MµhfýaõíUªÞãQÔ;’£2â¾ÄˆÜâ‡ERðï¤FJïɵŠ5ÅÔêÔ*z¿/uî*Ošþ‹‡ôÉùöݵzãΛ¥ÎiÕl[+OlÌ“&ZÔ,+ÃÚ¶¶ê8‰ éã¯&— Rayï»>ñQS8'û ÏéËÆ1[%_c¼çÅÔIþaH·ßä2ÎÓ†>1}vüëeT]%軇»Bdݤ{æ¸#‚€“Ô¶ú)©âä«B…¶Ë[m1êJò^Ì"nŸ´ëÙò‰Á¬ÔÅ ¼öÌ$®wº¨¥K¼BùåTIÎ%€š£2ÎŒˆ·&¹ø$kr?H,äD#ϘԳ', ‘wÂØL„9‘:lK©zÓîQHŸ{ÌWÉ?'é}'½s°’ ôÒC#K$µš²È#µÈŸŠþ ”¦&ÿ¾%x* endstream endobj 121 0 obj << /Length1 1177 /Length2 3366 /Length3 0 /Length 4122 /Filter /FlateDecode >> stream xÚmSy<”ëûNöAÙÉ7û>3–ìd,ɾMeI™ØaÌØeIdKÙUdKd ÙJ²eÉ’½B)D'ZP¶ï¨sN¿Ó¯ÏûÇû<×uß÷s_÷s=âG¬låõ°DЈH Ë#à€ÎË…âk‹&˜ÉÛ€n”d4 *hˆ¸¸ŽŒÿB%õI šŒ# ÐdjŒ;0G“E8€€kÀÕ4”áÔ5\éŸ@"I°"ἈA€HIxJ1/@¶¥x{ãq Öô%RHÐWp¥vøç“}¢w çæN¤P6§¤eeå~!uuuÀ%ð0}qn@‚ºðñDï½Ó¨%ŽƒDm»kåŠ6ÄâÈ{²)w2Ù[óvEƒTLÁ×U’aÒÔf X}¢×^_ÈÞü p$CûÓ = DBð)WûC–â Cp>ð„Áß Tò sÉ€ \®W@ À¸Ãö޶ ôˆ=MÀ†{½W4Þ Ź‚Ô$Øíd þ¿ÄwÀâ0dÀt£^ɯêTtý¹7G“I¸À®‡#øÞ÷ïê õr±D>ðW¸Ú `H+”¹¡ìŸôÿ‰D©eåªj€¼¢š2€@Puª«(ý^Õ û»+ø¯äW" þ³yêÔþà’|©®¤~˜Xøo% "‡©_†q‚«À©^¡þ4Òø?Úé÷3Œ(xüHýPÕûfÀž~<õ‰ì͇ùYh/>ðy¿žZÿïr¿Ó?«ëÜð Pü â|p Ö GƸÿtÉOEÀþxŠ Ñ·÷˜©)*ˆß8;wÆ“úúR­øƒ Øß5$`ˆXÁ °%S͈&aÿöh …D¢ÎéÇMQsÿÙ»â¨-‚`ˆLŒ1šQÕQ7*õ þòoû•ÚŽ¢Öv)ÂÊD<Í…ý­üž%P弯jiÙV=î:Ž´æ´4ÑW †‰ªþžêÈ&FN®‹œûc–îiYh°®0I ¬ÂÛ®&ðgÜ\Ôì0þx¤tÍ^\G¿Ó6šÈ&´á0¿àcÉ=\ZPÎl¹0*­Îû=ò/Kcüyk †çÝ à‘1,&Íuƒß$MXê–׹ʛ8ÏŒ>A²©„=>!W¯¸@íKT5õ5+~wo2=öˆæ±Ü­¸\Éùϰ^–™n™ç¬ ü)W…^²àç¡bæ¥9a‚^ÉÒ4(Õͪ6.¯G8·är×_$îUPIN®(?ÅŒñøÌ멆^Åž±¦q¢ëg·3 QÜUŽØçD}(í½e:Ã<äæÐ]KáZ…£÷0ŸX­ñêŒ6¯<ÏJùLåJ6s™ƒîלíÿH9œSŒˆnòU¨V*½§g¬›KÿaÔµ}†ïA}K\Êt9‚txþ›œpú÷˜c‘” ÝØÒêz¥Pc†œ“àLúêâõõ8(‹±¶f÷Ð3F˜÷Z·½jm}îMF ¯ö¾®º#K;2¶Q'²!ê”þhAì…ºq)JHýöbI">êò<y0Qš…? ZÇÆü™mµøó´ñ³Ò2Å]‹»ñŸB—Î=|–[äë´®µ§Óæ;w ¢ÙÒÉò%ÓãÅ:¶»9¥,yu0[ƒ¿áœö(ÑeÙåi¸%]ù™ÙÝЈ}7Œm®ó,$ª¤ÐE»ð¡Åµ¾ëĶôÆšJ¸/Û>Ãçú­ƒÜ£ÍÐqû^_Ôc ºµ‹›Ýá¢AzÒ¬ñN¥o|e®’tÓ}ébFÐ×ìuV‰†)…ŠáDvmËÃ<ó‚œU÷éj^ä«3_Á}­#Ú×Ë%Ïdo ¦€*]ÙVý«Þ| 2•ÑW!U[·Fod-5ÄþÊVøb’;_.´šõ’¯œ?&?ÐÏž.È–ÍZZ¥ÅѤRÁêŽù•±C$®¤wþ‰ÎМ¨8Û¡ã,EiOuÃ#{³3æÉ_(ž-ŽÍ§ˆì“¹zð¶ä“­‰Lfåêzœ!ÔþÍ­ö6©Êí¦îýAæIŽVFyÇîÚ¦\³ óÕ8bšŒæ&"kzr2|viëºfž3áu‰¸ú@»ºŽf…‰ÕÚ/JÜ€æšîšÐø›çËa3.k2©ÖΕ2CÐ)¤?‰É¾I¥Ea<Þß÷í“F%žµn oilh¼¹͆éK¡tßEáÒXƒHÓ늅ƗWJ/Ø…ŸxFf̘±gîÓ¨Ro˜¼iÜ5{°~õÛû …~~ËeÑw¸h€©&W¾ÊÖ+‹þ¼ê9þGöq¹¢Ës¦†É÷Qó)†¼)¡]Ç}ð·ö5d&¬]¸äØ7g‘´+ÛwóµµÂõø³PÄyÊÛ·æ—·sƒòi:窑µIœÉýbƒ f 3_w*& Ä«#*9Úï1½2åy‘0ó‰Ë¾Çðå™ïÒ˜,øè‹†D¯˜á*ã×ûbgo?S ‡”DYó:—X-‘¢kd+㼎“,9OR+3õ#.ÓÐÐá¢Ónǽñ‘¼Ñ¦[–Ä+"­GaÏ$~p¶ ÏF)/Zó:¾ëáâOÐèX¡EL䛳ï4Œqîô-±ÝÜ7;ÐÔÓ!›{G‚CàlÙ玆ø§Üd¨ï’¿è¦Þ­³Z‘éƒ åãIøÄè¡úDH©lê+c4“_a3SK-&)éææ$“ÊìMcãæ®Î®•鉤0¼W½?MH\Ä˾ê~÷þå[C• ×ôwÚ9±t>ž =íu‰c”Ç1©"=.N¶µŸ´>  –Ä [1'8Îϸ9S¶ ƒ›í6ÕÃØw£û^„+½––äØÏ!ÁÛ6'¨I64]"±‹_âÍA_ö”SàK:æhód\ê¡‘´ëYAÄšHQ)‡t‹é52÷ Ã5Åðì¡oŠ/?Áxªêìi S¥^UóË9šõéVóžÖsZ߯ŒaXÇåêVs€‡.Z³¼ ¶D®‰«ê§ÕVywìX7Zæks‹ìœ?æÓqÎ]Ö|D¦£k®å2¤cª„¨¡ÕˆnÆ~ñÓõ/ «?MÏtð«Òâ‹bOâŸÒéÅÅyõ[¤¡ë/rÈçÓž^%o³#jXJyÈ­à%—8ûB(«`G€€…±-é[—#OÆã÷3ÍfXÕâEL³w©T*^ÉXÝ~»r=6fW¤® bÏ’“-5çó*îd¥$OâØ6ø,™Æm.§ÕÃ6Z)vâ±ÓÆr~u]‡ÒÓ#òCýýˆ4ãö̬찼þÄÜèÔ´GÝÕ脊ØÌø`Ý/‘¬&úpd({\EÞEcw„?,CÌ|QaÍÛÙ´Ò\4¨p‹ÍS™ç‘Ó&®ÕÛtV¨UAÞeµŒ¾.«¥&ÖÇ÷u0äH“Xïmi®v÷Y[7å+nÝV<4«anÙé>.Z2M\yíMFý‚Ž.¾ùh¦…š¥ì‘óf$‹­ *‚1~ò ‘òÅÂUN³¼ûÈ!€Ý0}ÐVÏk3‡\Êg#D“œÁ´ûQ½’äz·ªç‰®ÃnxY­rC|]bH›9,ð*ÒóŸ2ÿAÎ.ÓRù¢¡ÉÇSIg’!‹¤%”fcüÆò­ÅÓO øÃH¾íV£%öZÃɧÌO¾-nh«,l;zjyWVÍZb“OÂÌäíNÜW‡›-/é$­KZÉîøìBÔÂ>r)L ÍûY,EÒѵ,>¼T¼áWç&U[6Ó ž·s•›jb;så‰ËÈêê½é%J£Î•—´™%ljž4|ól„8TæýÛhC—GŽB|ëdPù¬Å­ ì+l´áIãL¹Ä¸„q¡­¿ 'pù­Eß~ˆh‘é6ôèƒÛ\ʯǼæ3›uø·îä-áØ‡ÑtËb­V[« '¹Ü¸ºß§(÷î_Uíº'/N-1Åj\Y3d–6æêšEÕßœà`¾VsÞ¨9<Ö¿äAŒÌÈmð ™&-œçÓ]=X¬š4#·Bû<ÝÙ¹>›*i$3Å0W±ïºÇ)ûpžÄ~¥œ‘Y]DÕƒ 2že4§ r®‰y½Cu¬YŒáç¹ÃÚ;ašèuB­ÝÑN↞ºË:ÀFs¾€µóëÍnî —yí!)¢Þüý;ÀŠÌ_cù oÍé«Âßø~áȳ+ ©>'÷¶© )RuÏëÄ.‹Î´¿OúøÐ`e6s‡hÙÙÚ‚ÿhîUž½TøÏà] f÷ÕÞݲhßcë4]†¦O/`K%‰Ê›ˆâ;>±}?Nö{¹7œé*ݪA'U¯Íd˜¨¤å­˜8] Ø}4w±)yW2sÄGMToênIHIaб¦ÛWbj¼ƒ ¡ÍÑÍ·{LâÚëdÜUmÉ},Ê—äàt¹ªB§ÅIÆXðÚ»B™ z_> stream xÚí[[wÛ6º}ׯÀc¼ºLwð¬œYÇŽk×Í¥‰í4Ídü ˴͉,:¢”¦óëÏþR"%K‘c;ÓÕÕ6$Að°±ñÝ@S‚¥Ì0•2Ë´csމ”eŠ ü“84T{\<“©eR0©lOJ&MŠƒI‹E7¸8¦xf<úD8dÆ2!„Eê4S‚ú&A ãLO ‚Q%¬LeÐgLC.C‡ZÒ°†iŤÄÉb| ZcðÌréœeh*½ð=ˆyÈ 6K5ÓÀ—AÄ @+ Òkf=SÚ4©a@í™Ã½E¯€¼–=zy—Ð8IÁ ¨Ò"Ã=†€ìXa¦ž€¡±À½Ac€Æxþ´u²çÑÞ °ˆ{Oõ4¥‚y‚Ð?&nRP’ f„3Gld4q€Ë]að ÑO/³ÌItFP&èô± P0Pž2o1H%ËR4`%³¡`é1)=×`Zˆ°J"í ,™H3ð%H „4hàBÎh!œÁšI´YF%IG†ñPZw<“0Bx7ŒzQø¯®…Ò¨7è]YPhHÆAØ¢•Ê4AtŠ©Xô¬%$ ´ rP0X@‚ è¦9jïÒžE+p‰~i–O£. 4ëB¨ÂêÑ”ŒÆ`4_qæéJ ˆk`.4rB÷ž>eü˜ñƒò¤d|=©òÁ¤(G‰ØbÿøGï‰`‡£É¸<Ÿ†Ú­•â2ŠKöfZ >²jÒOVK«(­Øn2¸š”å°zÝ÷¯Y1šäã‹þ _ÝVǶšíåŨ]²I~}3ìOòju#ö¶ÊÙ _­“µQÖ2HU¨8]”ÿzò¯­¥ Û);b|¿˜œR›§O{ü䛜ñ×ý˼ǟ•˜ÎhRÁLH°ÇòªœŽyE6j^æçE·üÂ>¤¨°X0—ÉÓ?—ÓVx2þ8 þ`üMÆSŒñ OöòÏÅ ?:ØÅèR‘ÐõÎhTbìäº&Ü]d¼˜4\à¹ÂEÅ‹‰—8/%u%…K”´u¥—Ó^göaäß-Ççù8L,=å?ñCþìCâXøwJd &ìƒÎd’“ÕW³‰„±Yc˜ 䎧gtË_£|çéÓ0ß ‹ÅùÛ£C:ž¼* WÉÉtÜ¿ìÿßQYýž‡ äcRŽ/·€ïÛ!ú,‘†lÏ$¶i´Kœ-A6Jÿ) 6,J™ßhHT2ÑÖoŽð%̶%/§?z…L"ìŒD)ŸÊG†X÷ÍBç"FHœ3bV|¦7‰LA®Á²gDê[ï=‰ÀÈd|šPÜ2*M´_D> Ä÷D+Ä+‰øbR› έE¢‰ÅÈÐ| =rpGÚ‘]D?M\„L/AÐ…‹÷‰0둘ÇA"lâbæŒH+• Á[‹Ä®D²ÑÐ*•‰B>Š9+xqdAp@–òÎDebs뾚LnªÿáüÙÑΫähûf\þý“ió›þà#ÂêÿžÍr†û9$•”bí\’"þ&Ä|V”ƒrDyR9níø.žPv3æÃ{!†×„XÛ„6 BˆÄ"GWÆ%Òý#oNíFjÄŠ,$³ß q+Eûíý?Yà –!¯ÉFÓáðt•¤Š’ðj2 Dµp‰G–¾¨¢4IZGt©b°Í}¤iÚ×y%Æ6²)S$ªËH׌®Ë2l@b^ÇØF>ì#ê²¥­D]v´©åÃÆ¤®[*‡\r\Žs¬!rÙ½}¤ ù—Ébš·äZ·˜äÚï˜äÚ{g¢Ø°!3ƒÈ<bš&€Q‹Låû¨«µ›ªkG2*–E:@o3V(Ö*eš/|W9V)PGáZ „¼Íî£@N.*K[æ„:±)õÉÚ¦‘JlÁïJ}‹î9}]Š;Ëp_uKQ§¿#Åf#ŠïÆÛœ«oäħKœøïÈI¶±Úe˯,Þ= }¬j^/Òêå÷£Õ«MiíHÖÁ<óH Å‘Þnåë)þà›b—÷ÁÒ’ÿ}<ÆvvIŠÞ»'´ŸM7>b‹xvKgíó2‹ÂuÏÊ'½çÆSƒ}ÎØy˜ú©Ký KÝC†½?²>ìr™‡#N!7iúŠem?r„fŸ†³›õ›iè.ì"è¯ ÔC˜M,ÅöA¢Fú2‚j´XZe•’|`$ÔÊ€H†ö:ôk\6o9—Žgæ¦<­‚²@õ·Æÿ—-‹ACÃAeè ´Ú‡{颕P½¯ôØ“YÔ‡vµÜ¬]]†ƺºžúim³Ð—„,]ÃAZR—ØM™0é,®4þ¬M}(ª JÞ³±WäòñIÝ •UxjCÜ"d$K52¤·ÿOÏE6Ÿ…2f6º÷Y˜e{ E ÃA¶î»=«¯3yô1;èL©03Zÿ"KF÷ä–áZèµLp¡lLºñQ·gŸ‘óóÁµÅ²Î.8þÎ9•äÀƒŒ n)ºÉúi¨WØm™¦lia©&‹Î?ÈÔçVo±Üé-´e‘Öž|Åï¯4å&^ M&>­ ¡L‚–ë³ÒôFå¿l´f…Ñš ŒÖ4çVo £õXœ&>¬ŒÆÆg¨ÿÖÑ·&¤¶cA®­+ÉP¹[ùDëgÍ‚hlGŽè+!³ ½íI½dd°-&þlÐ=‘™ z"hÍïqŽýij—–̰u6©¨¢îœ­ód8Ö%á³r“©ƒñÖ2ô}UÄÛC‚þ^íQ“IG ç5™oì)–ƒÃ4ô°l¨¥ÌY÷*ÒT%¦ CgÁÔ²z2¡¼H|^ƒ)MEûÄÖ>½]V’†®) õÒ¨`ˆ*øQß{­H.H´¥ãYYò$¨àIIú‹¸“9m½F¡÷ {y57“rß;¼ê_ãɯovŽžþ°›ûÇýQõ²•ÛGåu¡aÿ²b:Jï†w+Û†mKEïg-˜ $®ô®Ä9ÑãÏú7?åÅåÕ„xìqžm#/ëñÃIX vF—Ü¥=~<ɯe2E³ßêFF;ôqÕÓ‹'|‡ïòg|ÿÈ÷ùAx¿þ3Î_ð—üÿ…¿æGü˜Ÿð·üÏû¼_ ŠbPŒÓk”'ù¸¨>ò3~Ö|¬†ýê ¥1?÷ù0¿˜ÄÒ˜† ÅùdVr|0àƒrXŽp¾¾îós~^‡è$ç.Ï?MûCž û×ü‚_Ÿs~QNÇü’_Žó> ð+~õÇÍU>âÿ7ÿȇ|˜W¿æ#>*F9M¯ÏòqU\ŽxÉKTÜððr*@ ¥ä&‘t-Ês~3œVüÿ4Í«ðG‚OÓr’ŸŸ c¡*ˆb>æ¯òë"N¡Ê?EU|ᑌ Ÿ\óœO~/ù”OGç€1(Ç9ÿÌç_øü?ü?ù¸ÜŠk¿_`Ͱh¿ûš^½ß;zóìeW¯~9@}»f9Q«V&Ö«–ëTk[ˆÍ”‹T‹”èÊs†µ>ÇÂ^`í®f‹Ö©½D7Í ¢ãÚÏpX×eLÝ…±ƒÝƒƒw'?¼xI|‰tû(¿œBßngKË”m“ûš¾FÏ KÛt¥s²ÒFèüœ&dyw±Á7 Vƒ›‡ù²í4F;!SéXË’•Ì äkVÖbq56Õúuªnî²pû;;¿Ô 翲nÚbÝÂ÷ÂôigÝù·W.ÜÎ]ÐÝ­ËçÝÊå£ejt¼U«7q[i/»°–HQÞöJÃF9ºó¾“wßõÓÎáÏ?¼*®Ï¦æþbr§hÚ.¤ Èû³V0¤x×γd; ·J7t;*Ùžôa~s‡<3øÍŽÇìÎþN.ò·ç¯÷Ož-Ξ ®bÀÕ Oþ'‹Ÿ™} §`Vr~€E' ¸uµïäw_ì¿êÌ—¢Âª¹j÷ô;xÀî\Ew®¢;Wµ*"´'*Õ¢#8DØ~¦sž…p\Ìbð,üÎcÄW”âNÞr÷õÛ“—?.’´N)<E?²Hý}ˆj;¿’ª¯ë„¼Åóý8”çHÁ1~qq‘ÓŸšóŠ} ˜)ÑNѱ¹nv³ ¾•nÖ»:÷g*kç9·&D³mOØ D÷^û°zcD<¬,-`\ʰôA B¶ò¦B4hÒ©&„mLÜÿ4[f7¬ÙþØ/ÆÕ„,—IøÿýúFPlxWœO®*–Õ¢ VúÉÕ­¾j°•™þ".¿ˆKÛ6.‘ÍpÑïÎîl}Ú½€N¤Kèt›³æÜЬx•ü *;GeÕêDt˜^fVl͹E=[âŒ^Ž´ôßÌ¡ÉhÞßÚú—:‹à–xSÞ¤˜óÙ€[™a/®ç’Ó0é*õ\ksßElKŽÃÚUºæÛÊ> endobj 126 0 obj << /Type /ObjStm /N 5 /First 38 /Length 234 /Filter /FlateDecode >> stream xÚm‘ÁnÂ0 †ïy éa;¤¥BšÆm¦mœ&X(´Õ’öös Új''Ÿÿ¶$ 3@*­•¸"#±*ånf`0WË¥Ò[w埓Æyšg°H…o0 |Œ¾®¦˜Ê “âÍœ¬ 2¡ƒÒ/þêc¿mOuP«Õ`´.%22cƒ^²wþóxö'Q!ÍÛYì=cŸu}|xî+þï³æ ²ôR×ÁŸ†A?¹è.õYéWÙ%@ÞŽ¨ôî;^|Å©èNnû¤Oh¯I¾©O¬÷;±”5\=¶íò®Ù/Ÿ«{þ endstream endobj 132 0 obj << /Type /XRef /Index [0 133] /Size 133 /W [1 3 1] /Root 130 0 R /Info 131 0 R /ID [ ] /Length 324 /Filter /FlateDecode >> stream xÚÒ·JDa@á™ß5ëš³kvÍ9¬k»æœs|;­nk-‚Š ø ‚­`ås؈µÞ3ÍÇan€‘Š?'âDÝ͇Pp *á  up ‰pÉp ©=p附l©²¯Êõ«Æ*ϯ:«|¿ÂV~5Zú%VEP %PU*’eÿV«9‚mØ5XuØ…=Ø„ (…-8€¨‡j•”{{Q-ìC„Uò^mѭЬ:µY tB›JøÙfíÐ ]*ï6ë†eèƒEè‡%ˆÀDa†`F`Æ`\%òmP9¼µšT¹³šRùüµŠ©ãVqÕë€Õ´êWÌjF]ËլºÉN«9uGoVóꮢV p>žk?,<.ÌãÂ<îÊ ¨{¸ó·O òëò1~ endstream endobj startxref 170571 %%EOF BiocParallel/inst/doc/Errors_Logs_And_Debugging.R0000644000175200017520000001317214154342032022771 0ustar00biocbuildbiocbuild## ----style, eval=TRUE, echo=FALSE, results="asis"-------------------------- BiocStyle::latex() ## ----BiocManager, eval=FALSE----------------------------------------------- # if (!requireNamespace("BiocManager", quietly = TRUE)) # install.packages("BiocManager") # BiocManager::install("BiocParallel") ## ----load------------------------------------------------------------------ library(BiocParallel) ## ----messages, eval = FALSE------------------------------------------------ # res <- bplapply(1:2, function(i) { message(i); Sys.sleep(3) }) ## ----messages-immediate, eval = FALSE-------------------------------------- # res <- bplapply(1:2, function(i) { # sink(NULL, type = "message") # message(i) # Sys.sleep(3) # }) ## ----errors_constructor---------------------------------------------------- param <- SnowParam() param ## ----errors_stopOnError---------------------------------------------------- param <- SnowParam(2, stop.on.error = TRUE) param bpstopOnError(param) <- FALSE ## ----errors_6tasksA_stopOnError-------------------------------------------- X <- list(1, "2", 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = TRUE) ## ----errors_6tasksA_stopOnError_output------------------------------------- res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") ## ----errors_6tasks_nonstopOnError------------------------------------------ X <- list("1", 2, 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = FALSE) res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") ## ----error_bptry----------------------------------------------------------- bptry({ bplapply(X, sqrt, BPPARAM=param) }) ## ----errors_3tasksA_stopOnError-------------------------------------------- X <- list(1, 2, "3", 4, 5, 6) param <- SnowParam(3, stop.on.error = TRUE) ## ----errors_3tasksA_stopOnError_output------------------------------------- bptry(bplapply(X, sqrt, BPPARAM = param)) ## ----errors_bpok_bplapply-------------------------------------------------- param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(list(1, "2", 3), sqrt, BPPARAM=param)) ## ----errors_bpok----------------------------------------------------------- bpok(result) ## ----errors_traceback------------------------------------------------------ tail(attr(result[[which(!bpok(result))]], "traceback")) ## ----redo_error------------------------------------------------------------ X <- list(1, "2", 3) param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(X, sqrt, BPPARAM=param)) result ## ----errors_BPREDO_input--------------------------------------------------- X.redo <- list(1, 2, 3) ## ----redo_run-------------------------------------------------------------- bplapply(X.redo, sqrt, BPREDO=result, BPPARAM=param) ## ----logs_constructor------------------------------------------------------ param <- SnowParam(stop.on.error=FALSE) param ## ----logs_accessors-------------------------------------------------------- bplog(param) <- TRUE bpthreshold(param) <- "TRACE" param ## ----logs_bplapply--------------------------------------------------------- tryCatch({ bplapply(list(1, "2", 3), sqrt, BPPARAM = param) }, error=function(e) invisible(e)) ## ----logs_FUN-------------------------------------------------------------- FUN <- function(i) { futile.logger::flog.debug(paste("value of 'i':", i)) if (!length(i)) { futile.logger::flog.warn("'i' has length 0") NA } else if (!is(i, "numeric")) { futile.logger::flog.debug("coercing 'i' to numeric") as.numeric(i) } else { i } } ## ----logs_FUN_WARN--------------------------------------------------------- param <- SnowParam(2, log = TRUE, threshold = "WARN", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) ## ----logs_FUN_DEBUG-------------------------------------------------------- param <- SnowParam(2, log = TRUE, threshold = "DEBUG", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) ## ----timeout_constructor--------------------------------------------------- param <- SnowParam(timeout = 20, stop.on.error=FALSE) param ## ----timeout_setter-------------------------------------------------------- param <- SnowParam(timeout = 2, stop.on.error=FALSE) fun <- function(i) { Sys.sleep(i) i } bptry(bplapply(1:3, fun, BPPARAM = param)) ## ----debug_sqrtabs--------------------------------------------------------- fun1 <- function(x) { v <- abs(x) sapply(1:length(v), function(i) sqrt(v[i])) } ## ----debug_fun1_debug------------------------------------------------------ fun2 <- function(x) { v <- abs(x) futile.logger::flog.debug( paste0("'x' = ", paste(x, collapse=","), ": length(v) = ", length(v)) ) sapply(1:length(v), function(i) { futile.logger::flog.info(paste0("'i' = ", i)) sqrt(v[i]) }) } ## ----debug_param_debug----------------------------------------------------- param <- SnowParam(3, log = TRUE, threshold = "DEBUG") ## ----debug_DEBUG----------------------------------------------------------- res <- bplapply(list(c(1,3), numeric(), 6), fun2, BPPARAM = param) res ## ----debug_sqrt------------------------------------------------------------ res <- bptry({ bplapply(list(1, "2", 3), sqrt, BPPARAM = SnowParam(3, stop.on.error=FALSE)) }) result ## ----debug_sqrt_wrap------------------------------------------------------- fun3 <- function(i) sqrt(i) ## ----sessionInfo, results="asis"------------------------------------------- toLatex(sessionInfo()) BiocParallel/inst/doc/Errors_Logs_And_Debugging.Rnw0000644000175200017520000005031514136050065023340 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{3. Errors, Logs and Debugging} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Errors, Logs and Debugging in \BiocParallel} \author{Valerie Obenchain and Martin Morgan} \date{Edited: December 16, 2015; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This vignette is part of the \BiocParallel{} package and focuses on error handling and logging. A section at the end demonstrates how the two can be used together as part of an effective debugging routine. \BiocParallel{} provides a unified interface to the parallel infrastructure in several packages including \CRANpkg{snow}, \CRANpkg{parallel}, \CRANpkg{batchtools} and \CRANpkg{foreach}. When implementing error handling in \BiocParallel{} the primary goals were to enable the return of partial results when an error is thrown (vs just the error) and to establish logging on the workers. In cases where error handling existed, such as \CRANpkg{batchtools} and \CRANpkg{foreach}, those behaviors were preserved. Clusters created with \CRANpkg{snow} and \CRANpkg{parallel} now have flexible error handling and logging available through \Rcode{SnowParam} and \Rcode{MulticoreParam} objects. In this document the term ``job'' is used to describe a single call to a bp*apply function (e.g., the \Rcode{X} in \Rcode{bplapply}). A ``job'' consists of one or more ``tasks'', where each ``task'' is run separately on a worker. The \Rpackage{BiocParallel} package is available at bioconductor.org and can be downloaded via \Rcode{BiocManager::install}: <>= if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("BiocParallel") @ Load the package: <>= library(BiocParallel) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Error Handling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Messages and warnings} \BiocParallel{} captures messages and warnings in each job, returning the output to the manager and reporting these to the user after the completion of the entire operation. Thus <>= res <- bplapply(1:2, function(i) { message(i); Sys.sleep(3) }) @ %% reports messages only after the entire \Rcode{bplapply()} is complete. It may be desired to output messages immediatly. Do this using \Rcode{sink()}, as in the following example: <>= res <- bplapply(1:2, function(i) { sink(NULL, type = "message") message(i) Sys.sleep(3) }) @ %% This could be confusing when multiple workers write messages at the same time --the messages will be interleaved in an arbitrary way -- or when the workers are not all running on the same computer (e.g., with \Rcode{SnowParam()} or \Rcode{BatchjobsParaam()}) so should not be used in package code. \subsection{Catching errors} By default, \BiocParallel{} attempts all computations and returns any warnings and errors along with successful results. The \Rcode{stop.on.error} field controls if the job is terminated as soon as one task throws an error. This is useful when debugging or when running large jobs (many tasks) and you want to be notified of an error before all runs complete. \Rcode{stop.on.error} is \Rcode{TRUE} by default. <>= param <- SnowParam() param @ The field can be set when constructing the param or modified with the \Rcode{bpstopOnError} accessor. <>= param <- SnowParam(2, stop.on.error = TRUE) param bpstopOnError(param) <- FALSE @ In this example \Rcode{X} is length 6. By default, the elements of \Rcode{X} are divided as evenly as possible over the number of workers and run in chunks. The number of tasks is set equal to the length of \Rcode{X} which forces each element of \Rcode{X} to be executed separately (6 tasks). <>= X <- list(1, "2", 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = TRUE) @ Tasks 1, 2, and 3 are assigned to the three workers, and are evaluated. Task 2 fails, stopping further computation. All successfully completed tasks are returned as the `result' attribute. Usually, this means that the results of tasks 1, 2, and 3 will be returned. <>= res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") @ Using \Rcode{stop.on.error=FALSE}, all tasks are evaluated. <>= X <- list("1", 2, 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = FALSE) res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") @ \Rcode{bptry()} is a convenient way of trying to evaluate a \Rcode{bpapply}-like expression, returning the evaluated results without signalling an error. <>= bptry({ bplapply(X, sqrt, BPPARAM=param) }) @ In the next example the elements of \Rcode{X} are grouped instead of run separately. The default value for \Rcode{tasks} is 0 which means 'X' is split as evenly as possible across the number of workers. There are 3 workers so the first task consists of list(1, 2), the second is list("3", 4) and the third is list(5, 6). <>= X <- list(1, 2, "3", 4, 5, 6) param <- SnowParam(3, stop.on.error = TRUE) @ The output shows an error in when evaluating the third element, but also that the fourth element, in the same chunk as 3, was not evaluated. All elements are evaluated because they were assigned to workers before the first error occurred. <>= bptry(bplapply(X, sqrt, BPPARAM = param)) @ Side Note: Results are collected from workers as they finish which is not necessarily the same order in which they were loaded. Depending on how tasks are divided it is possible that the task with the error completes after all others so essentially all workers complete before the job is stopped. In this situation the output includes all results along with the error message and it may appear that \Rcode{stop.on.error=TRUE} did not stop the job soon enough. This is just a heads up that the usefulness of \Rcode{stop.on.error=TRUE} may vary with run time and distribution of tasks over workers. \subsection{Identify failures with \Rcode{bpok()}} The \Rcode{bpok()} function is a quick way to determine which (if any) tasks failed. In this example we use \Rcode{bptry()} to retrieve the partially evaluated expression, including the failed elements. <>= param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(list(1, "2", 3), sqrt, BPPARAM=param)) @ \Rcode{bpok} returns TRUE if the task was successful. <>= bpok(result) @ Once errors are identified with \Rcode{bpok} the traceback can be retrieved with the \Rcode{attr} function. This is possible because errors are returned as \Rcode{condition} objects with the traceback as an attribute. <>= tail(attr(result[[which(!bpok(result))]], "traceback")) @ \subsection{Rerun failed tasks with \Rcode{BPREDO}} Tasks can fail due to hardware problems or bugs in the input data. The \BiocParallel{} functions support a \Rcode{BPREDO} (re-do) argument for recomputing only the tasks that failed. A list of partial results and errors is supplied to \Rcode{BPREDO} in a second call to the function. The failed elements are identified, recomputed and inserted into the original results. The bug in this example is the second element of 'X' which is a character when it should be numeric. <>= X <- list(1, "2", 3) param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(X, sqrt, BPPARAM=param)) result @ First fix the input data. <>= X.redo <- list(1, 2, 3) @ Repeat the call to \Rcode{bplapply} this time supplying the partial results as \Rcode{BPREDO}. Only the failed calculations are computed, in the present case requiring only one worker. <>= bplapply(X.redo, sqrt, BPREDO=result, BPPARAM=param) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Logging} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NOTE: Logging as described in this section is supported for SnowParam, MulticoreParam and SerialParam. \subsection{Parameters} Logging in \BiocParallel{} is controlled by 3 fields in the \Rcode{BiocParallelParam}: \begin{verbatim} log: TRUE or FALSE logdir: location to write log file threshold: one of "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" \end{verbatim} When \Rcode{log = TRUE} the \CRANpkg{futile.logger} package is loaded on each worker. \BiocParallel{} uses a custom script on the workers to collect log messages as well as additional statistics such as gc, runtime and node information. Output to stderr and stdout is also captured. By default \Rcode{log} is FALSE and \Rcode{threshold} is {\it INFO}. <>= param <- SnowParam(stop.on.error=FALSE) param @ Turn logging on and set the threshold to {\it TRACE}. <>= bplog(param) <- TRUE bpthreshold(param) <- "TRACE" param @ \subsection{Setting a threshold} All thresholds defined in \CRANpkg{futile.logger} are supported: {\it FATAL}, {\it ERROR}, {\it WARN}, {\it INFO}, {\it DEBUG} and {\it TRACE}. All messages greater than or equal to the severity of the threshold are shown. For example, a threshold of {\it INFO} will print all messages tagged as {\it FATAL}, {\it ERROR}, {\it WARN} and {\it INFO}. Because the default threshold is {\it INFO} it catches the {\it ERROR}-level message thrown when attempting the square root of a character ("2"). <>= tryCatch({ bplapply(list(1, "2", 3), sqrt, BPPARAM = param) }, error=function(e) invisible(e)) @ All user-supplied messages written in the \CRANpkg{futile.logger} syntax are also captured. This function performs argument checking and includes a couple of {\it WARN} and {\it DEBUG}-level messages. <>= FUN <- function(i) { futile.logger::flog.debug(paste("value of 'i':", i)) if (!length(i)) { futile.logger::flog.warn("'i' has length 0") NA } else if (!is(i, "numeric")) { futile.logger::flog.debug("coercing 'i' to numeric") as.numeric(i) } else { i } } @ Turn logging on and set the threshold to {\it WARN}. <>= param <- SnowParam(2, log = TRUE, threshold = "WARN", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) @ Changing the threshold to {\it DEBUG} catches both {\it WARN} and {\it DEBUG} messages. <>= param <- SnowParam(2, log = TRUE, threshold = "DEBUG", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) @ \subsection{Log files} When \Rcode{log == TRUE}, log messages are written to the console by default. If \Rcode{logdir} is given the output is written out to files, one per task. File names are prefixed with the name in \Rcode{bpjobname(BPPARAM)}; default is 'BPJOB'. \begin{verbatim} param <- SnowParam(2, log = TRUE, threshold = "DEBUG", logdir = tempdir()) res <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) ## loading futile.logger on workers list.files(bplogdir(param)) ## [1] "BPJOB.task1.log" "BPJOB.task2.log" \end{verbatim} Read in BPJOB.task2.log: \begin{verbatim} readLines(paste0(bplogdir(param), "/BPJOB.task2.log")) ## [1] "############### LOG OUTPUT ###############" ## [2] "Task: 2" ## [3] "Node: 2" ## [4] "Timestamp: 2015-07-08 09:03:59" ## [5] "Success: TRUE" ## [6] "Task duration: " ## [7] " user system elapsed " ## [8] " 0.009 0.000 0.011 " ## [9] "Memory use (gc): " ## [10] " used (Mb) gc trigger (Mb) max used (Mb)" ## [11] "Ncells 325664 17.4 592000 31.7 393522 21.1" ## [12] "Vcells 436181 3.4 1023718 7.9 530425 4.1" ## [13] "Log messages:" ## [14] "DEBUG [2015-07-08 09:03:59] value of 'i': 2" ## [15] "INFO [2015-07-08 09:03:59] coercing to numeric" ## [16] "DEBUG [2015-07-08 09:03:59] value of 'i': " ## [17] "WARN [2015-07-08 09:03:59] 'i' is missing" ## [18] "" ## [19] "stderr and stdout:" ## [20] "character(0)" \end{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Worker timeout} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NOTE: \Rcode{timeout} is supported for SnowParam and MulticoreParam. For long running jobs or untested code it can be useful to set a time limit. The \Rcode{timeout} field is the time, in seconds, allowed for each worker to complete a task; default is \Rcode{Inf}. If the task takes longer than \Rcode{timeout} a timeout error is returned. Time can be changed during param construction with the \Rcode{timeout} arg, <>= param <- SnowParam(timeout = 20, stop.on.error=FALSE) param @ or with the \Rcode{bptimeout} setter: <>= param <- SnowParam(timeout = 2, stop.on.error=FALSE) fun <- function(i) { Sys.sleep(i) i } bptry(bplapply(1:3, fun, BPPARAM = param)) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Debugging} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Effective debugging strategies vary by problem and often involve a combination of error handling and logging techniques. In general, when debugging \R{}-generated errors the traceback is often the best place to start followed by adding debug messages to the worker function. When trouble shooting unexpected behavior (i.e., not a formal error or warning) adding debug messages or switching to \Rcode{SerialParam} are good approaches. Below is an overview of these different strategies. \subsection{Accessing the traceback} The traceback is a good place to start when tracking down \R{}-generated errors. Because the function is executed on the workers it's not accessible for interactive debugging with functions such as \Rcode{trace} or \Rcode{debug}. The traceback provides a snapshot of the state of the worker at the time the error was thrown. This function takes the square root of the absolute value of a vector. <>= fun1 <- function(x) { v <- abs(x) sapply(1:length(v), function(i) sqrt(v[i])) } @ Calling ``fun1'' with a character throws an error: \begin{verbatim} param <- SnowParam(stop.on.error=FALSE) result <- bptry({ bplapply(list(c(1,3), 5, "6"), fun1, BPPARAM = param) }, error=identity) result ## [[1]] ## [1] 1.000000 1.732051 ## ## [[2]] ## [1] 2.236068 ## ## [[3]] ## ## traceback() available as 'attr(x, "traceback")' \end{verbatim} Identify which elements failed with \Rcode{bpok}: \begin{verbatim} bpok(result) ## [1] TRUE TRUE FALSE \end{verbatim} The error (i.e., third element of ``res'') is a \Rcode{condition} object: \begin{verbatim} is(result[[3]], "condition") ## [1] TRUE \end{verbatim} The traceback is an attribute of the \Rcode{condition} and can be accessed with the \Rcode{attr} function. \begin{verbatim} noquote(tail(attr(result[[3]], "traceback"))) ## [1] call <- sapply(sys.calls(), deparse) ## [2] e <- structure(e, class = c("remote_error", "condition"), ## [3] traceback = capture.output(traceback(call))) ## [4] invokeRestart("abort", e) ## [5] }, "non-numeric argument to mathematical function", quote(abs(x))) ## [6] 1: h(simpleError(msg, call)) \end{verbatim} \subsection{Adding debug messages} When a \Rcode{numeric()} is passed to ``fun1'' no formal error is thrown but the length of the second list element is 2 when it should be 1. \begin{verbatim} bplapply(list(c(1,3), numeric(), 6), fun1, BPPARAM = param) ## [[1]] ## [1] 1.000000 1.732051 ## ## [[2]] ## [[2]][[1]] ## [1] NA ## ## [[2]][[2]] ## numeric(0) ## ## [[3]] ## [1] 2.44949 \end{verbatim} Without a formal error we have no traceback so we'll add a few debug messages. The \CRANpkg{futile.logger} syntax tags messages with different levels of severity. A message created with \Rcode{flog.debug} will only print if the threshold is {\it DEBUG} or lower. So in this case it will catch both INFO and DEBUG messages. ``fun2'' has debug statements that show the value of `x', length of `v' and the index `i'. <>= fun2 <- function(x) { v <- abs(x) futile.logger::flog.debug( paste0("'x' = ", paste(x, collapse=","), ": length(v) = ", length(v)) ) sapply(1:length(v), function(i) { futile.logger::flog.info(paste0("'i' = ", i)) sqrt(v[i]) }) } @ Create a param that logs at a threshold level of {\it DEBUG}. <>= param <- SnowParam(3, log = TRUE, threshold = "DEBUG") @ The debug messages reveal the problem occurs when `x' is \Rcode{numeric()}. The index for \Rcode{sapply} is along `v' which in this case has length 0. This forces `i' to take values of `1' and `0' giving an output of length 2 for the second element (i.e., \Rcode{NA} and \Rcode{numeric(0)}). <>= res <- bplapply(list(c(1,3), numeric(), 6), fun2, BPPARAM = param) res @ ``fun2'' can be fixed by using \Rcode{seq\_along(v)} to create the index instead of \Rcode{1:length(v)}. \subsection{Local debugging with \Rcode{SerialParam}} Errors that occur on parallel workers can be difficult to debug. Often the traceback sent back from the workers is too much to parse or not informative. We are also limited in that our interactive strategies of \Rcode{browser} and \Rcode{trace} are not available. One option for further debugging is to run the code in serial with \Rcode{SerialParam}. This removes the ``parallel'' component and is the same as running a straight \Rcode{*apply} function. This approach may not help if the problem was hardware related but can be very useful when the bug is in the \R{} code. We use the now familiar square root example with a bug in the second element of \Rcode{X}. <>= res <- bptry({ bplapply(list(1, "2", 3), sqrt, BPPARAM = SnowParam(3, stop.on.error=FALSE)) }) result @ \Rcode{sqrt} is an internal function. The problem is likely with our data going into the function and not the \Rcode{sqrt} function itself. We can write a small wrapper around \Rcode{sqrt} so we can see the input. <>= fun3 <- function(i) sqrt(i) @ Debug the new function: \begin{verbatim} debug(fun3) \end{verbatim} We want to recompute only elements that failed and for that we use the \Rcode{BPREDO} argument. The BPPARAM has been changed to \Rcode{SerialParam} so the job is run in the local workspace in serial. \begin{verbatim} > bplapply(list(1, "2", 3), fun3, BPREDO = result, BPPARAM = SerialParam()) Resuming previous calculation ... debugging in: FUN(...) debug: sqrt(i) Browse[2]> objects() [1] "i" Browse[2]> i [1] "2" Browse[2]> \end{verbatim} The local browsing allowed us to see the problem input was the character "2". %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\Rcode{sessionInfo()}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/inst/doc/Errors_Logs_And_Debugging.pdf0000644000175200017520000054706014154342034023353 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 113 0 obj << /Length 2407 /Filter /FlateDecode >> stream xÚí\_sÛ6÷§à#5¡øðú”¦i/fšK<ׇ¤K¬)ÒGRvûío´¨¸ij‘±:ŃMKb±‹Ý€´8ÚD8úþ÷W„Nh„‘ÀB+¸*‰•Šj ÿéí©_syñÕwœG#)©ˆ.¯"‘Ö4’:A‚Êèr½_Öõ‚⸪DÄͳŒJÿXm{Gâ´\û›oÍʾ·ß,Ž7y¹ñÅy¹øåò‡G6Ú'Ûǰ@Dv û&¯²7 †ã´N‹Â'ðéùÕwŒE„#Æ%µü@†¨Ž–œ „QÏ÷¿ b¦ÎK›Å’Iÿ´‚+<•Ù6‘]™S “*~ÚfÖmOx]¹çMêtLED€Ž)Ž–Œ"I;v/×ykÖÿZ,¹N@É™Ùu¬$®}ýD>ó7ñµ¿}Qínòâãqlº¯’á#J¼î&1Jè3…(ÜéS0&I"øÄËô¢*[S¶Í˜í ìîµ×sƒ‹N<7r‚eDï—Dƒá¿*ÛºZï³6¯Ê íÞà õ%R:]%¦zGö ´HQˆˆ"B!%” ÓbÖ²óû%åˆtI'-ºaØ^R¥ãÃ`TØAy6ì"0nâ€]ˆŸ‹@ôi(ßµ³| -¢ø'4b\G\P¤ÙÂ?à)<"ºÛëyóöå·?ò„¢ùñsÀMO¼™$¨ã€3› àücµÙÌdVQ̃Çb ž1Ôé³™Çñi¡Çm6I`ûۣ͂'ö´Kº3­™3Ö…çìb þÝ hØ[»_I²IbñïLÛ¡ø´[=nkÓl«b=cPžw¶* Q d8)ÈÔyÒ(´Î& ­ÃJÌÂŒiafœ›(‰TØ¢ Ä@<žˆ°‡¹éʼn°@³QœˆO'úÙÆ¼+¿¶¿0Ý1Å6ß™j߆SŠˆçHìŒÉ»ï!‰ ðhøíÒ¼Ñk­Q$€O âc?›E ÐHS1ŽP‹I"ÔϳÌ4Í!j·¦»ñAë̬ÒÌÂÞu8{ˆÁ¡ç<|-& ø>_¯o^?·v»þgÁ•ñoîÊâ<]¹Њ‰´YZ¹òfðîs8ùGT,¢ƒ Hò`»þšëà¬ô(–¦D]ú‰w¦ÓÃéI‚¨Í'ñ%–<ác‰ê|2‰Fš¨/*‘"K9–(-&“$aàpGÁrŸS=—HÀK2=éMZ§»³;ojŒŽü³FÃ3:6J EãàÛIöŸjh³Û®<%€=lÂÜ‚  ÑÓ€L‚Ǭ?4¡¸v‡Ûé@¦æë§ËÄ ^ú‘L”!®È\21û£¨c™îäœ. Ÿ „9Šq0ÉÙ:JZƒ'c¡^•WÕÙþüJ"!D1'põ„1”‰R¨®´g“¨M™´Í Ÿþ@š³“ª¡y—\ÂZZc7µÿ ŽÖ@û¾aÈwîÍ]Äa¢K»K_Dï,¶wphMÅÁ =ñ ’h$I<¿ÜæÍbÉoóMiÚÖø'_*â›tAu\·¾´ºòW?)Q!;h!1;° ™ aY¯ãìåìÙ¤,p}$š`ˆÑáÇe7ivn:I|bA¸¹êêÝÛ™„§ôW›™Áññ2oÓ‰» P®`¨¢ð?Ùq¾`ãÚ­…–~Úçy?÷o6Æ›…oB{¯6ϰ¯pmvUÙ´uÚömÚBKT|wôAk›wgÿU¾ KKß¶•ÄÝk ZWq[m |]w ødo¦½>`Æl»o]ïÚÜŠ‡’­Íªº0ÆâºÚ·yiÐt†€Ý¾NÒïë<Î8’jàoÜGÕm¾¶êå Û“¿ö²/s–[mÙǼlM}•fÆ?¶UwÝv7‡Ü»/®ê:¼_›¾Ì_skê´è?u¶Øx“éš7Òk^fÅ~}Ú^ú‘&9Eø~šÓ”•7ŸOèÍ®äÃQŸgÓ5E#¬óóz‘ÄA-ó´f¨weÓ³´ÞȪ¢ùTƒ¸FzЧ…ƒéÐn“!!À•Ç!“fÛ?Ñ=i6Lc— ñÏ[c 0aq¾»)ÌΦ‹°ÎjK<Â)‹pöqÛ'¸ó¯—Ó‰³¤8AX’±‰?Ó5†…Zv>ï|-¿ûÂM•¿u(iêîmÛ½öjÀ–éªè‹ûÚjþ[ú{‡‡Ú£¤²hí8Pôï5û¢íY8MÛ»´»Ž ð˜÷îîEé¢ÝúWïlg Û¥Ò­E'Áâ_÷Mëï<ôˆƒ±É-§Í G–æp LÓ‚hy³õÝ(åߩʣ »QÄVyíUÕ€ilÓ¶úW³Ôîå­Ó¤c2ˆøÀØpoPÌf:ú-oZ³¶)su7{0fWž6ú †ÁëÇø²BjW>‰¿âÉôéœÆÚmÕ¯²•“ÈlÓÛÜWØøò;k¢ÞÊáÉû„iL}kÖЛB%ñ‹bæÛØ´Ë­KÜÙ$ÅÑÞ&»%{íl}Ny¸2RÄ()Õg EÑ$™§‡”KÌðWG#  ê%pº‚~qçD¸1`÷a,åü‹½ƒØ§.³Ÿ¼wU[Ez›æE:Ô`b¿yâ-X3A# *€éAüKä4ä:`Ú †n‘¢Âý⻲º›,JF(X—:¨Û2™E ËQØ ÔD&à°žäcxª °P.ÎwdðNΤ5¡ÑØ ^ï'Û8#Š"†“cqÜNà<ÒC!ôHžv²M¢ Òú¸w8sùVæ‘GSDØHœ¬ªÍŸš5—ˆ%þV«_aµÙ<v ÿdY[> endstream endobj 130 0 obj << /Length 2822 /Filter /FlateDecode >> stream xÚí]sÛ¸ñÝ¿‚ͽH‡O‚tÛ‡¦½»^'w“^|3Iî’(› EêH*®§ÓÿÞ],H‰Œ’‘K¶3žLL±ØÅb±_.üpöââìÛïµb‡2 .á,Šd`µdR¨àb¼}WUcÉGe5fT?O¤F/ËËšJI1§ÂßÓ)ö[_Ž]fÅ%UgÅø·‹žqÆc-dÀ™á&²ð´!·6¨`*Ÿhú圞ٚžÐ“!ô¤™½ÈÊÙ«±â£¤Jò<Í G®}~û½Üb"¸a€_0Ñp44ÒÅx¢µ5WYM¥y ÓF³õ2-š¶1õ…´ZRé-—ü]9…‡ ŠöóuÎ}çÒ˜Ö³*›ºQý8 =j Uî«f€Hÿ;ßiºúc²Zå7ô¶X³&+iˉ,6—·Üð”]2X)%­›5-€4<Ž‚áÓ-Àî&XÎ`iD Ÿî«ÝMðÕwg¿Ÿ ˜D ”fš‡A)ÆM0[ža=?BÎs<‹³8CÇĆ(À¥ã5ÂÈ0®=ÿ»Ç¦ˆ‡wÏUÃÞ½ŒbFëÓKet$‚D­mŸ`ÓUž¬<%¾'k™Cœ„f‘ „@Tv€îŸÏ°ÌG™¨åØG‚áv“£¿âV2ýÝŽ³²¨³º©é­\øg‘úÂöz…åp´¤—t3R“ÔïkËoÔë«´mN“ÙXŒ®è˶ïlæVk“8bJ©¾¨ÓUâ@&MŠb:ÀÌðéd ¾^c;ÍëýfЊu2ˆ©<á.Hˆ€8V[ô’ ¹¡ÇF“È|…#zØ­XP.´í‡«dö>¹DÔØpƒgò!Éòdšûꤡç´Róõ¬¡É3z\ú®x aa–þ£VèâËÜu¾.ò2™§¾ç‡,¹ß=¯MÈÂd$î}8àÚ ³Žª£l+’Æ0Ñ2 ž¨wµçµ aÞñ6No~ãÁ¿˜†‰]»®KøO(æÁëƒ1îÙ6.7:Q0ñ3í)¼äê„s¨JWwr„6.øæª:%Ÿ/ŽÞ;»ÖuZQ)Y4TÔ›ÖY¹\å©‹1‘ëxÑû\;gqÑd•-qv”V ~ãüæftqµ®ÁѨe§¼ùZÆ}O¤OZi裉çªÃìªJº³Hÿ<9²¢î ¸`Ö*¿y°ÚúþvüHÜ™tì™Ê‡éÚ×·éyg;Öþ€-½½`d'1îÙþ{Š}íèS,M†¨ýéH½¾©Y§éêkVêt÷¿ÇçYí™ÚSßjRµ6ú'Åî)Н7êÚ–2—’*v¯Al *ªµa yÈÂ0>EæŠ4Ê¥îhHy„ÌiCfùi‘¨â÷å·ë†Åw3–´´A¼C¼î)ó)åvL¤€ÝÊu?ÅãG̰ÐŒ´onèe“9AlÀchq€jïÌ ¨l ¬[¢M áO‚¶Žc]¨Ï–Ëtž%H‰ômL,ý@.åN¹œ¹Î>¿/V!¬+°°Š"fU5—1“âHÙjÒª¬]éÍu Äû½–;rá|¿Ü˜H¤Á6mÉ^]IH@Å¢ÌsÊ~ñ„&ŠƒÍ=£¤ÿI]ƒSSa2gôQ>´Œ ñd¹s!ž ·'ÃíÉp{2Ü„á¶+pÇ݃]¥ý¹nôó¯/_~y/ÍÍ*}¸I/û‡¶gÞz¸‘í½7ÏàªÇ©Ý§AÎÇsžÜ 9uÇsà£ó¹È6'õÂÙRq°Ž×9Æö”ØØ»T_,È&um×WiA ËuÞd«ÜwsñÀî|]Õþƒ*k|Ÿ­P"4àe¬¥@ŸBsyé;6ÙÒ×½åÒ4W`Fû÷nˆW¾®3¼5¦„Ú2Ø…°qW:ò4ùàìvWG“ö‰³¯¦YSQH󆪯} •<PÓ¡Ré¾ðÝM°DF&è_*ñäÀ†¤»Ý‹²ñµíÌ«uQPÜRø‹*¢5]¡ÂQhæèÙX{w˜è]}Sȼ߻\‘`È~2Ä9ŸâZBŒ¬ˆ æä};¯‹òúÎbœ3kÅ%u$ïˆä‚A©‡ ¦Ë,÷ñލE¼»Ÿäocݯ‹TG,Žôx‘sb‡€:fR©>_$Íìê]9½3žˆ,“VÐÒŠ{$6GˆFŠ>Z5rÆ~¬sãVo_õ# R—$:ê+:°ŽdÕöé€/tÃû:‘ 5í=6ò±*ËD¬†ÒÊ0'Gì$UmÒ~Ú¤*%™’ºMû‘GHûù²OwÁ;Å$«ú³ÄÞ‘¬sƒ+ Å"Óôù—ÝïeEÌqÏ—%YÑ1GÒ4érÕÔ4aw^aN—íÒ6Qþ“òù>]­CUwGêVÞÐöGHF×XSwô çeë§5KÙ×ÝùF캞Í@?X¬ó6¨ªÖŒn‹_Ü÷p)ðTp8¡»öwÑbÂG€œ°ÖÇPê¦\±²`Žc?{Í0£ÄF:(æ~³ƒRØTeî+Ù‚j»8Ü;X5«ÔXûÆ´ZfEÒ¤>Y+ñõ5±&eXI¬¦¥Æ¼=.ú’ƒî‡0XR¿Ç¦‰UN»®én»Ê #ÁêP)IÑÅ–Ì÷ÑEœu^ƒƒÒ<®/éw°S§æ…b«ÓFKƒ—œ¸™®îº„7%ð‡Ææ¯=“ÀUm ›=i±Þº™œM?umKþ: 2s+3ï'¨%þŽsG†Þ·‹Í5lå73v®`ÙÖEM/½hÙým!UÀQ«“\àôA¡ ‹»HÔ­öL¼y¼_Å;Œ˜Q祥7€Ô¡è“osáê< ßtù§SdN埣éçGöq±d> stream xÚíÙnÛFðÝ_A¤¥k»'6-`§IÐ+q(à-E­$ÖÉðð¢ÿÞÙƒº,;¶bÑŽkÐ.wV;ÇÎ gfWQA/6åxùÙ6o^î`@ÎËýÃo^pî„(ô¨çŽQPÇçQχsä>/ËÅn^öˆp«Ý^Ÿúûk>®L/ʆ¦ó£¨y͸G°;N²±N²Þ‡ÃŸw0Â!'ˆX>´¾‡}ßP¹”yb<ÂD=˜i(ÛOòø Ç°•QšÊÔ ²Ìᛉ êy¡Ñ³/ßxöóÃ;ˆÂi%ì‚ÿÎôEvš—Dz¬,ÏuT·£x6úw>È¢©´ãû?¿ÞWûBèƒLB!.`NóñZÄõ¤”Õ$O‡úÓ«¯gÀªÎ‹×èn^Zðá›wÏ?éÍ«—•”ízsDÉTæMm‡©)Æs†Š2!Õ *Éü*yVäe=NóA”V Ζåe,_>»tIoœ†IKë½O$7i}íÄiSÕ²4sëó¢ÝÀ·¯Ÿýb |{ÊÚÚô7/è¢;ZÁn`; ­‡ÙëóÐwßcÆe:4q”™ÎüQàÚ)•¬Mçt"-<γª.›¸Ö®KÔí‚EÔ£¾ Цj$pó¬Uè4×+×¢=MêÉ|# *p8«­e{¨u5ÄsVÛV´k@«.‡†Àß8,Ûwo}¿ i/Ü:œMH¼èJÆÀ„ ùÌ*ê ˜«ÉgòC"»ÀGXÅv”œÑeŽÀÅÜKÌG‚“NY”~¸ÌxÌ[ãH„á*G”#Nƒ-q$("|…%ýX VœHŸ‰(ô—ý^ÇàÒ•£™ùÞßx‚ƒ`}JVã »€ÜA@±ýÙ‹ß³¹‹ßW…5—Á¥Ñs§›ìªº‚ëŒ8Gú-ø´¿‘޾RiÎBø& •zîêàËÛ,?=Ø”ôk‹äó ¼CÚ#(ª †¡•Aƒƒn›‰Ý-#Ð[¢ÂL”gHÎÝÌv~¿å}Y •·¬cd»8VBÙâ³,g;³5à«›‡Ûjâ4ªÚ¬`Éê¯诛 ÑÇíš mSë¯ý*[Ñø%Eè⽦ÝÀ¦Îç¶ßÿ7sË3Ûr0zû©ùOc3†!N*Ó“gÑ´Hï83&"DBøÇ=‡^= D¾EakŒò[eûãªü$2D[ñl¥—Êl¬ê ªï¡^ŸsæîŸ«gâåH*Àwìš]ÆÐ2OåTfµ]#Ý­ðãH¨Ô¥3á+Œ#› ?ÒÙ •å09I†ªØ£¢V©Od–ž/º8”WU20ê–ÁAí0_~Oä'ÊyS›ýR¬™Ú¢•…À–éöTQ’ëšÔqOÃ+°Åxì–Mf:‰mãI“WJU(w' ! i‘ø+H@m"˜ë÷Ø®žØVÏTG~l¢Ô/O@EáçZK×¼µîZ÷èC‡*}îÄð•–ó0RýZ¼Žîì·ºw:IbmïÌ™ªD,µ‚qWF1HzbŒ‰›™w-eÊ<„!çîNÊ #cÞ¦RVJ¬7+«y&ã¦6¦Î@÷m18ª•‚kç:²ðÌ U«ãK¨1.óWËFŒ ~ò±jÄ<ŽBPÖE=ú’*FiRÕ¡XDîs±È£þEóÁùn<¡Oî'7ÌC؃à‚?.ăàÂ{¬6>1Üú[ƒ=ˆ#OÞ㣅F$²Í ·­](›<z˜‡@w~ר0WfŸ†¡KT© {.Õ­oë0`êÏKGj,ªªdœé„Û Œš*˜”ÒÎ\S籈4‚ +Ë“(m 1ª:¤¢-•JÍ/FQ’¶Ë(Í-Ô}§55šQSM%Lô˜çSÈv‹¦Žê4½×°ü^šhÕèë£&Õù°™_¤ÒdÍ^ëÃ4d^Eƒ‡RÖMiD¡@•=±à¿ÌÈ×\×e2€T­#÷]ÕD =p¼kq[lfîTFYÕFµIÙmYT¡T³š‰êê×±­±»$µ­?˜y>M´(VK-{_B% ¤ë.¤RÌúX   òÚS+P™//¶«ËógQwòòýg» ‘ΗÀ H£¢ÐEl±kW«eÝIˆ±p°÷fï·n‚ Ý|Ö9éõqö×må¿È´‹pÍý>ʬNêóî2Pï³|T·]èòm—§`º¶Pép_Ý&`õ–?Í0òa¸¿0.nŽè?‚´™ïmeŽÛ¼Ù¸wɵ bæ—rš×rñ·ÖÂg*ê!Ɇò¬½eråel&5Ù,$3:pPÜÄV+´^v¹c””U} ¥–ž,ÏúY3•e[T帙“®ÂLÕN#@ _IYQš,VAÝ—Q`°Úi‰ K¹<¸2RgœæÑ¿ÇÌW›òšgV¦OÌjO”I(ø=¾ž¢Hïâ…é¦mE¯ëmÝzŸ£#òáÃeƬ'¦C.±+ìæèˆ®,¾2᩵ç›û¾Ö%Ùûgï^)=B)ÑߪOè(Ý^ú#"Ç¡>‚ì ¶¹›Ôó Õùû?ñ endstream endobj 140 0 obj << /Length 1198 /Filter /FlateDecode >> stream xÚÝZmOÜ8þ¾¿Â¢_²qýîø'Á±Tªz=¶R¥-:…%l£fšd{EÕý÷³c²å²{·9@ˆ8ž žgfìlj Ç f“Ï–û®9}3@@?o‡ãÁëcÆ€‚JÆW€#HF ÁŒ/ÁÄåù /ˇ˜{ÅîÐ'2ðÞe³Âޅ饽9Š.ŒÞb6ÄÈ›ÅéÌŠãtx>~;@)†‰Á¤n¥@RZ”?ÒH5<Þ€‡Y‰ÐšÙaœMO†ya&I”XCÎ9´^H †`ú¦Ò¾/^[{4|` \G˜)%Àt>0rF8ÄJ‚ ¢ä¸ü¾6ªu<®’ÏPqDLt…Lß …!âʆøÕ«¡/ñÊ<œFáôË'Ä‘þÅV~ ã$¼H"×-lû Q–en”¿ïZÙÎí;æïŠÉ—vÞÇXcà·–VƒL&ôüüQ|no0””œMeÑÍëhƒlâï:8$T lâ€èlƒ1ÅÔúnÔÉÝÝ9<9ýv6UiýG³T`Ä´BŸsÌ1E }Ló8C‚*B™{®$BJ¨@¹¾Ðë„aθë*V +eMKç±O5ÇP¬m8VÚÞ«‰èõ1ir˜FHT [„ Ô áH Ý: =ª© Ðnk/xÔ¦$Œ0©)I‘š’4 0J5ðŠ¥k>Úâ}¦1•6È  Ü$)Êìf)Œò<Ë÷Þ–è¼E¥¡¬Þ4ÅPJ=½ ˜æ•añ¥p²! ¼<²è[˜,Â2º„·º[DÀ!iï4 P ^ö‡ík7¯·ºÍëc»ãõ"ú¸I:«h›çÕ–€IE{þF“#fÒ3ªôë¹Zé¶…wV’¸(7²Ó5r:,†¡ÿ… Aä}wBkcïlÛÝÍòQ1ž ºM€ÍGKx—ò"¼ / ö"¼à/ ÑIáíÚh½Ž^ë¯ÅùóÛ0ÎÒìÏ“M¡÷²ktŸYO•§º°ÅÕkf†ö{y#‰ÒYù¹ÙõѬù^2´ôUñ„3µ'7¾Ž^/çQñüX¹Ìo~ Ëi/ËæÇvÒß䘱åó“‹ë$¼¾NnzawPX|ÍË^Èáðääàôà×~h¡jªWí/,)•nyýÕKLû Zo?¾ŒÒ2.ož GmQ»B(¡¢tùÄsO/]wĘ„X¯zi•þ°b(µØoÈ«ìýd¨Š+uaå.·•ÿÀç &îŸóâ Ïòhž•QóoÝ ’h®h;qz}w6WWÃ"«´HoñÜatên²òs”ßúj¸«8/ÊHž4Kýt1òxêLå³Åô2³í<Ô†õ%ž†.TW‹tZÆYúócçáz2-’²h9á¯]^±£-ÕV¶> stream xÚíZmoÛ6þž_!¤*1ËwŠC; EÓbÃ^²4 ¤Å 8J,D–\IN ûï;ê(ÛrÏI«4-Š&y<òxäñî1”pÅ‚€.åi·í‹ý×[4€®àõÖ‹ƒ­'¯¤ ,±šëàà$P”DŒä„3‡ánY8 ‹rÀTXí †ÜDáoÅi…µ8?ÆÊËäÈñÍNŒ†§i~Šä4|8øu‹j%ã°EUd 4šƒ«¼¾ V ËSKËc2"\'®ìEZŒö‚†qgY’¡ ¯½Ý–X‚k/ ÷Uò­¹w¶>n1X X»Ã4Q°Ã£É–£K®³&P’H-‚2 N¶þºõ¢n£psöІXE¹Û\+ˆ„š¶ŒHap‡=r{ 2ŒjNjÊø®Ë÷TÑí{û»/ÿ|³»ûr¬3Hw²ƒ¡ÐŒ‡ŒJj8´†R«md}[GF1&¸osÆ"%…•-¿SLRíû)ôƒÕFtÝzͬ0fW–‚x´ÍþöyÙ©‚ÕÒ¼®«54¦ƒÕ²]Ý5]«ÇÊ+ƒƒËå ŽÁ¥3p³š+ØZÛ]Vx³ ¸ÏÀÑt±ÏŸ§ £œ®VÕápoxÔ>N¤5²£P]^:Ãom}~ÊO^ñeÅaÍZw•‚Ç”T…±+d8*òó$O“¼ÆöÅ€èãQx‰„âùAXãM­.–œÇÙ,®¤Æ~{¿’‰ fÀu›+6f‰–¼ŸCq" ¸–®•Å_Ì΄ÐDà ^UI’¤ö£ˆ´…¦Ùå:ë‚Åe[ëfé™3žÄȧ©k•IU¥EQ[r­zVæÞ˜À°ÆIã.‡\ÐËt½fkbÞ…n¦YVWظHëq1«]C†UzšCüm¦uqŽeR–E³27χ…´Ã¬Æc-u¢WîÈ8ëƒ ¿úw•¸Ö»ý¬½ià“ît¨®²ü;ç]þNâì?w²©²ÎC1È;yÊÑ4‹§ó›×¯zïv0©>–õNÏA/ööžï?ÿ½oÝžM!#Ÿ,¢c_’†ô~ëßÏ’Ûw“‘Â|%#…løÃºlùi™LŠÝ´'­tH ÓßH&ÈÃ%ºs¼%ŽôÕ”¯Þþá Žâvç'$æE>Ìg“¤LG>¡/O¡é×r¹†+'1 øIGq†”“Y>ª!¬üŒáCqôúúœ».ãQrÎæùJ:Ó,>Ê߬°|O…iQÅ'9¶çS4ØÂ±Üä¯KýùÊF«k`Iƒ ˆd’3y鬕!6–a_ÅIê!7”ÁÚtrÂ…¦:º‹zcRZio¯Æf°ô:±îÜ[XÊ8$ÖË8´!\¢ÌZ!—\´ (Š„.Ø\‹M=?Æ¿÷NWKX"*k½³ú%wé¢nÒŦ’'Ÿê6ËŒ'Ó,YéO²Äy‘ [c¾*:] ¤£œ‰¤jS)+° )exk'Î6…àÎPMØ6ݱN^…Ue³$W8.˪öTØV¬Š¼J«ÚrÆíÊ HÎ¥³„–ܹó•«c=­º·Å¶g—7E‚8÷H×Oè*iyŒ7õÀ·Où…h7Û·€o9µDjyà¨î›Ç·›B†ñ-çΉD_}ËXêþ\ó·À\O‡ý‚X”â ó> ëÝti»[0.uY!¢ Ö·;=k°H¾ž8‹ææª€q¡8Íïâ4äw¡…ú.´Ð÷à¤zö!+yCó­ëÛ oòâbï®KhQCú¦ž|1NZ†æÅ0Z½x/nç÷X¦aË’ 0%yÝ< ²ð¨gUѲÇu[ó3œ³²_‡œü÷÷¯AV7ëâ‘Á®RÅ_gùV‚u¥ð£ðõÛó¢ÆÊü ÒPnÃçYæ;æ:4C¢ÅW“åaÀqŒÝý}Ϫd¾¼Ë딹@Øê!`\¹×ÍÄ£ÀºðÏŸW2vx}R´«éàÉ%È+—OÓõÍÈÑhV–NÛ‡(£ˆDWÞK 'ƈÏ¥“–nîù¹´ç¼áÇÛè‹»M1%}È/–âÿ^,o|äÚàqHßðJwO‘¹ó¿¯RsÂŒ †Ê]aÿ%è.  ¼åo§:‚ endstream endobj 150 0 obj << /Length 2575 /Filter /FlateDecode >> stream xÚíkoܸñ»…êû"^_"¥àR iœÃé%M|Ÿ|ÆA–¸^%Zi£‡£èïCíËkÇv²k'(‚Xâˆä¼‡3$—±  Ëæ|µíoÝ£| ~Ý{~¼÷óK)ƒ„$Š«àxD”Ä1´ä„3çÁIxÔ4œ†usÀ¢°=<q‡¯êóßÒ*Ç—æÌöëÏ Ï‹êÁEupzüÏ=Jh"""ÅžZQ­‘ÊÍŸ€R /Z"ɘp=‘²çE½94L›´,M‰ˆ:Þû¸Ç€(°AÂ2¶\Š ›îY¸äa‰8GÁ7&ïýûÎTÝ…c§üˆš$åVº‰ ÞTÂñO?Œåá ;ÅF$“œI+k |ÄŒæ7CqŠqzzS‡_3­;ãºHMb0k…þB0Ñ-ÁMÓ€eºñ`iîùòßÿ¤ gBàÁž °ª«QÕOMSdH›shV¶ºŸÓ´›øSdi‰q_e]QWwŒ"N”T›èš43giöÁ¢·¸=¦‹´(Ó³Òøf‹Ï?©Ði×5¶óçC„íϧطãm—‰©Û Z~AÐ}e.Ò²O;“»~šÜZÚs‰zÙ-ærͼ7«25梨{϶›Â S+iu7#ŠÖxS×*8’PTÅ÷1Tu³ü–pH™Èäî(½î?óöèÅëwGG/œÆ¿Èšõ½QI5G,I„ˆ¸äâ`Ä8•áH©8¢ŒjîŒ%”:ž¸ÐZƒÛÉâˆGRëÙÖ§ Í£DÄq¢|lß^˜ÂùÏ/ùòJ$rI’„!‰ïŠŒŽÇqø;D'VL<|kÚ¾ìì2'azÀã°1ØÈjX.2g±v̸©§øá“íU»®ì_Ó Ã[ì Ñá!à›²*Ú‰8)² v)üçP™Ì´-P”~8L„/ð…S³IðHHn ¾ É\|³ÏOáÐÙRäàH±ÁVY§¹É ˆB)X›g[hªÜ-̶Cí¦£áÄ¡ùägKÛ-¾Î%fyq"ÎqDÑy‚|Oœ»nÛÂ9Û¥›¤Ýœ¾MFmA‡˜†ŸŠÎ²¢½L,8faté°ÁOY=•¦3-vHÇСs‚±­²Ä—º³¢qJ³Í¶öÓµ-úº]âlóõm? ø°ÿ o\ÏEâ©Ý ´÷õ™e<òÒQaÛÕ3/ý¨³‰Yø[…_» öƒÔªè Ѝ–È zÔ}7ë;?g••}nüdº4ƒ¥#´FGƒhƒ ~ŸZË<ßÈ&v ªÛZêÔYÄ%Ó§ÔφF ZLjÀ#šÄÁúÓûù¦OCZÅT°þbɆOëé„:¡.LÊô_Å Vm ñÃ¥œCru¯¦M¥–PF„RŸ7Y¥“º"nµ{züö£•ät-šÅ@˜CZ›^ð>‚$n6aØ€gfî[ÞW!ÜTu>±FÆ“ðØ—Ó¡¾ïÛÎ+—`¢:ZUýĤ¹‹b*ìšµwh ñ‘K‡}kÆ}Yá‡zü°ºçXHž%…V±]èÞ¢TPH æÉû꞊A÷ _ o]¢xÑ™-¼é+¯ŠbêuÎ  ¼h»¦8ë] qæ,¢I¬--cð!æñ^Ȱ¾pñ€¢"Y«­îYÌAJ/ Ä'<0Qñ`$Q›œˆUL_…18±HËð·ÜÆÿñ%V¤cW2eß_Ã:Ñ>°íB]u¡ˆ°3/ !õ–˜GDÄìÛØ.”±@ãå$ p&’TÀÙ¬^”/÷/ܯ1vHÐyVI‰ŒñWÒ\5H\DM‹ñ­moiÕ” ÈNˆP²ë„¿YŒÂ–dóm¡BçeÓ¦ ¾»æÇ¾È>à«së!¾X€-ÐìÓ¦%ë4Ó¢2¾+¦³öÕÒSŒýœÕ%–µn´ð:oÂ\SÄ˜ÙØï˜ÙÀ›ùœÚlÊÐ Œ™¯&ƒ˜¹bðUå  †°{2‹-Ö¾­ 0ŠDF0¿Á)Îf‹Úê+‚h–¬3H%·Ä LT¼ÊQ×\ÞÆ¸aˆ­ý¼q;³h ,kæÂ ¦³°hÍp‰œ'÷ðmi;Â5?Ï0k‡ò¤®qæÑPP±ð!~FámÙ-Ý"V¿G½£¹ ËsÖv!TD‚íbCqû½—ÿÎû.ÿ½i[SP›ù@;K›tz¥:™Ûïî¦nKmt/‰µu$)øËÀ \ßuàË»ªþô澤ßZ„ ë§÷cÈÅ!K5r€ ­ß6‡[FàT²’ìo›£§ÛÖÉËg¯ÞíÀ¸Øvq¬ídàöÈ÷çîg3X2¯«ßš`¤Lg³ò‡à¥„ûG¿ì1‡_ÅõU àÂEöùþãäãöšp|ˆ]]ÈØ~lº¬Ïß¼yööÙ¿¶¾*ºlÏKï¹²lÿüêÁÊYHYåJˆæ|^ÍÚbo§øó 7·§ÊL.v6n,ú8‘*Š>(öú¦j±s¨îÍmC,×jþ ·,uhOÒüffÛgöÐmÜ—ßEíÆcóäJí¦HBãï¿v»íêz½)Eä³nIÛ]1iüª\u;½]v "|Ãõw<ã®Â¸|~ úÀÇõžä×Uf=XÉÅqd‹íÅ¡³ŠÂÂmÛÛƒvž#ð1ìÕKB!XqƒÊ]„T‹R@,å 'Q·Ž©ZÏO–0h‚ˆçWŒ°™¥¾øCnl Ûm96ýA²’é÷ÃI_2E$Ó»”¾E©”Z•¾½ÂóEé_Ù£'¸ .¤"T¬Ý|ÂÓZ{û`x®_¬×R–Ú}rYbÉ…âå{ðWR§F{Q¢}`ÏIìéeÁÊ&çç,L’8R[ò@©{1 vÍI:««oµ¹.hDâ+ mï¬@P°{&¸ÌO^|3vìY£¾ª¡-z—E©øš††ãë¼+óØVŸ½7Y×®Ü'ŠépŸˆÙ È<ê9'ÁTѾçä2r™òê%˜OÓÍ÷FÆ•+YdÔ’ÿg‘ƒˆ)H—å°µX†v‘Ÿœl›ËŽªø•_‡IÅ ƒp$c+o¯êþÉËÿ<âX endstream endobj 156 0 obj << /Length 1878 /Filter /FlateDecode >> stream xÚíZmOÛHþž_aÑu$²Ý7{×§ÞIT…J§Þ•£œ„èdV'uœ£ý÷7³³ÎƒÐ¨»™]{fgž™Ý1g2AÀg›êbþ·o>´xCÁ‡Ö»ÃÖ›=­ƒ„%±ŒƒÃó âÌZ-™*8ìÇánUµ%U[Dáh»Ý‘Ɔ#ê¥e:ï³3œ7¾h ^äå‘ó²}zø{‹3žh!AˆˆGÖ@kbn I¹|$ñ¢ñ„¶LÆ0“${—ºûmÅôJ‹"+ˆ‘_¿ŸJˆ€¿g7û:ùÞ³w[_[„âh4'‚qtû-$k1‘˜@–DQPeÁyë¯{Ë´Îõ®¯©%V1=3›3¥ÁæStÆ‘e1hËa@2=oö1 Ž;"2:<Ȫ6ôÂqI >w(Ë‹Ìc½NG_<þ¯òúÒ#\F<±Ábëµl¨1„ˆƒÅ¶1Æ’¡EHI-˜T¨—ˆ))& Ìê$@´bŠ©U„t¶ˆ8âSk«ÐÈTÃ{çŒñnÿ`÷ý§ø{c½7{rÖï;èøÜ$ТòÜÛV…Þ±»)+–á9Šz½qFcõ€—i[Ú°ê]aCýŒF†îÇà¬Èú#¢ …úgã OÍKÿÆË¬! ǵg—Öi[„¬ÝÑR„‡0ãA‘OÍh@&ÌÍD>`iC“…\ ZŒ$‹›œËnÊ>t”Ö,×w|rsFãáÐq!MøE¦ v¡4ƒ KÍ,ìPë2ý 72§Øuzà.ê Ç8J€eÌ,®#}¹¶•gL}ŸðˆWY§7€Žh‰Z½÷³Ò©VA”¨kÓ ®Êºƒ> ‹öR„dY|§Þ~M$‚ÇëË´žz@Öó8Ü!Z‘üèàÜCž$¨ó´ É"σ ÊFã¢Jú½;YU(ü@îÚ!kyÖ#8ÞãÆFØYÜ3„d6²›À‹œH…ËÞ.‰¸'F§pjF„Fõ]ðsêaPs-b;S£áµrˆè~çr–ƒ€ó~/bt£¿ŸÄE¥T˜÷`v~•ÎzÛHÒ€Nzdº· Ã^éûy9Ê*?Ï—NL¥¼˜0“Ã1-hȃŒ9¡8HÚTþøéW¡0cG{åhx!ÁN…Ù·´?,2?ì‰^-zF{ªY>  # ñõÑk"\]æÝK¢Ñ[4Y@‡]X nà›i·ÎàWÕ<’yqòšž]ÆEhgxF³Éºf´\‚ãWy—MüãéV´&Ñ‹§U)è:®®{öìÿÉÜÙÿK}=QLC/‚“—hîKG«XÔ)ÇÝDc.÷•ða )­`ÿa⌛»Hœrq{Ã*|îª9¿®¶ÞQ`žÖ²@$bÝ‹Ø~ƒXšë ¦Ä©5¶äÖÓ\ÇÝ-áÖ¡6©5[|!fÓ*í??÷þ\®öWý©ù¸|Ê>~Î$£z0dpRÃtµîýºn›ìí|ü¼ûÓy;JŸŸ»Ÿ ëêûÓuõ;/R¤Ãa±‘µÁåÆ9æ×ªÞHx·¿¿s°óÇÚ}ßíYè;ÏÈÖ8{ñzùêÙýøXœž.»§M&ˆSꈹYñdÖmÏËÛ_þ¶Êúƒšî‰Ú0|¿û"3ãr3S:íîy¼c»÷÷ŸfÆZû"–ƒ²ão›DH'Y'ü…÷slû)ܘá_ÞÅk9Rš|Âo”,Àü¡Ž—/ †kqv–v¿ {Êq9Nÿ¦y‘žáÕÜýQ{•IëºÂÉß¼ãmM^±EhUæݪhµ èø&+2£¤÷ˆûñhßÞ¢¬ÎçÝÝ÷['7¿jÊWK¡CÁ57펰<•á*VGþ·$×&V8½°“-7Æ6Ã…æ6VÒD$¥&âÉ­Ü_uGÄ6‘‰1ÒWM6PZHtˆR³$‘$â^^a^³@˜dúF)"Ÿ+RMv»˜]Ùá…Ûkµ=Ëó’,ý0ìk8G¬Êzƒ—ŒÉKÆä!™ù’/Yë êÑ6 AQâ £Bd†.Å›Ü>쾽Ǯ4 ÷*"žV&5ÓÒ®©2 ,•’À4ל Ý¥iº¹?pQ‰f\\[”«lÅkZ°Äo|æ5¹.‡ è•ÕMñÌ×…y?#À`-»øî ©n ÁÏl Ô¦õNŽ<.¦”I˜0× µÆâ%rÔ"™×þÿW/¥eFLª—XTQøÉU«çÜÕW"é›@‘kØÜ‰ü¹;.Rú4Áûfª‘T†ó…Çí¦Ú8W]TþCŽlDU>ÿL:ò/¨²¯ã¼"Àd*¨SÏ?…E>*Q~i»R÷s8tŠ?ÍI®:%gQ¢Ÿÿ©ó®Ç³O2Æ9f&Fn*±äN¸›Ï.Í|‰µ¾äEËŸ3_ö’¸ºCâj&Ÿ¢æ7~DÎ&ºCÎf£_°.|%­c Û²Aiñë"Kâš¹ ‚ôݹ Ú endstream endobj 166 0 obj << /Length 2229 /Filter /FlateDecode >> stream xÚíÙrÛFò]_r^À*s2'eó@9”j½^I¡èòƒˆRXƒ€«äïÓs@ئhRÎfS¬"€9úîéî™ÁÎÒÁÎÕÙÅôìûKÎ…õœéÂu|N%Ì™Î÷î8Ï»Y> Â-^†ÔÜ7Ù²0oQ:7/?É{5n³ì.ãtišãtðËôõF8ä„: ,ž¾‡}ßÉ”OtM®y¢Aᢌ4”]ÄÙìvÀ°åQ’ÈÄ ²Ìí<%ÀsˆÒ\Q0¬H‚¨D( !¬óA÷C®$¬…Ø‚|Äñôì×3°C* {‡ 9ØLÅ |xnT˜ç|@\YÌòøÌ$påÜ4ƒµè9åClrVÆ™m®7뵞— à//Ítá.Ì·t—ê¯Ç[õéŽhöË™çþ{“”ñ ú}7—­JàÀç «_mãŒ1÷Næq”´Æ£#hÈXGŒƒe)+ÿ`cŒ"F¹µ1DŽleÂçîí€+÷Q.­d)ó¢…¤£hKň€¾5Yµr•x¾Ö×Y—0 ®®õ=kÊ~Çç;ä †¬b„²Eä,KË<ƒ¹Z§Ü½WÀ~7}Ì<>`Æe2/Ìe“ªµ|–=*08J÷©Ùëïš(=ãÄsºO=«¿«ë» =áx˜"0强#W¦À·–±tÊY¢Q»¶Àަµ%*”Œp@ɼ·]w­$¾ž'"ŠÃž8 „w"ž%A›§[p‚c±v'¼`‡%Pž"Žc@ü6GQr4†ä²xÈ’ù¹% µ3³…y¾˜NF¯Æ/^Ú¯ŸÆo¯ê¯^_ÞÔïF“ëúc<™ÜLê¯ËÑtôæ…Âßæ0D§V06~½{é·]Õ %Q†Ž€èÊ`…x÷R(WÁ!ç¨U},ç"L ˆî0Ä‘…ŸÃHlÐÇ1âtèˆüDòŒžÇšòþñhÒæqþ‰¥ ¤tÍû„I "‡2Ñ·^ô>¿ÎV í6Ó;B" « 5èŦ„Å»-eþ…ä5¬g­£ÙÇh ‹%ÇØAðL²h® x×låÉÝTIØw粪Il©»Ò!è8wo6åzSÚj%3#‹r.󼩯¬Û2'JŠÌVHѺÜärŽj:ó–Js¹ˆ ˆþƱRy5³À°¤{üYb'  ˆÚH¡ÛÝŽ:zö›:ÈÏóÃn!z9˜«S¯Z9ßT˜”x 6Ò&…œ(0Rµ8¶EirÄcEG ÑQxþsˆB)-® ç}’èäµµä†jëÅ€LX9ÿMOŽK)‚WQmQÄqZËU·¹²$Çi=*‰wšŸ<ºo+R×z{«ÄÅn;!Yl•ó4¢žÆð©G7ÿë±Íÿ^C²Ûª<à`¬Jê‚ñith™«~ý3;€ªZúÇð  |åœÍBâ$ÌØnãË]š=ÞJúÞ"ù|ÀŸä k1Âj–ŸÙ‡©G/‰JFF=Fƒ .þO¬rZljýUÆvšÑÝLê»ï̆Å,‰ŠÂ¥»£&{îý:.6ëóÆîÍæý~>fùG™WðxÝQFÅǪ×­ÿÉîÓh%mûÅí뛋¾ä´Ùì$í"îîí¨ÝšºS¹ÌM:Vsþ…=§ªÉõU!ep‹ ²cÈ^m3!ÅxËÑ:Ï–@Iq=•ümåå2Éî! ¶óTÍXƒ]dùL^½zÈzóLM¸}a4 ÙôÞf ”BÒîß•¿¯+ Þݼú×6w:UÀìOb€VˆÝ [r«ôv“ÛÓ¤yN”¥ê¦åöŒÅ¾Xsª«™Ý”ˆø…¸.!§“‘ÊŠ^{Ò"FPþO¥E$äú䥛AvIð_ /Ú7ƒød^Ĩ¶y‘v·çH.t`94œ; Û;Ê×ëÙi“½ÎjÕ ÿoª1ôyÔß%}Û¸ÅbÏ=þN‘þb)R+…èfHZç§HÇJ‘¼?cŠt¢{AêH…V÷‚è îÝɲ¬¯ðEæÑYÌ?{Eˆ@ ³{_#µ[N…Ø(Ì÷\ª‹6©:ÃPŸÇ¼=D0,´ø€S Ÿ×¥9Ɇ¼Ý;gç=9©H5ßìðn’áÑ›¾ »y¼>âÙR@Xõë“î¾üÐb_(ï45“ë~r|Bö´÷Fä—é“þ¾#{ÆCÄÂp÷>^O9’¤ìj`È@¿£ÄÞ¬`iŒ–²0ͰRFzQ]åC”šæê¢¡j•¿nÔ±ŽnΗÄö0ªÿ•y\V×ÌÔäENVc·ÕŽ:NªìNõA»¾Æ˜šã}ñ”øm\nÏ»L½$‹VëDÚ#¥H=h·¦*z„á—m¯œ|NÁ^ía±€]k2âÔVt‘i§M±ª‚.W´„D}ûÝ„!äÈ®äéÛ>ûøßÌgœi¨.f…ž·§õrÌÝá¯W³Öun®®–Àjì1äªô„ 5*Ï?pi+Û endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 797 /Length 2096 /Filter /FlateDecode >> stream xÚåZÛrÛF}çWô£ýÁ\zn[Jªt‰U%».É[»‰¢Š„$®hB‚ëøï÷4Æ–)‰ŒMªäÚ*Q==§OwÏô hH“'§)GÊ#M9qø3d˜ŒÏdp;ã2‘5²Þ ¬%›2.ÉY&È<È䲬9Gì9&ö‹ÄYnxhaCZØ’xàÉg4‚<Ëpé+ £ñœ)b0)ÊÍD1%HS²n,%|‚§”ÑÊ ,b¦ÄCQÃŒ-™`ÑEˆFX›5l‡uÚÛAÒ°ã%Øç6Á8ŽÀH€Ã¨6‚¨²Y[€N3Xcr‚=ç ž‹áÁ Œ†ÍAc4 b" 6èå²pÄ: é È¾Ñž˜Y†Æ-1Ã:±`=L#ä€ó<‹8 tBØSøçЀ+>|ù gÁe  8ŒkàÃÀÉÄó!€ZHDޝ‘¡‚1‹ŸzÀ³p\XŠaµ‚¾N q –Ckë9 *hŽB»'‚*7A1`ƒ¤“x D[ÑÌ`Þ‚KL ¬á"Rò•΢O¢„.0¦„ð4¾ Aì `ÙxqT”;øgñÄÃ5 !{ ÆE‚¸4ÇÁÞ§T¼®ÞVTÑ‹y9j&ÕL™—ôÆŽgM]íÝ—ŠÛNÜÒu]ÕôÓp6žNfW÷tX\üÙg9.è—r>^•sBOz?¬gè=_Ó}9¨²t8lF×èB¥Œ¿®£[vtt<.gÍäò]'ÓE ï'Í5]ÜV7¿¿øýåE¼TÄtRÖ‹Y«¥S3œßôšÞœüxô‡™ë±8ú¹ººZG™[R† z3¬‡ïʦ\c®[ò„ :-›FhRs c¯«éxMç%>Õ"¤KØ7Øšž¦UõMYS3yWV‹æá¾ëà騼X¬'À/ ÀíFˆ1§¹.©©‡£òb8ºY£À.XÚ¥÷X†¦w}®éî–Ý…ÑpÚõà¿OËz2œ¶¾yØêÐ) 4ªÙñ첺7ÜÎ0¿k:¡âÕ¤9—>{{ƒâí‡Û’Š7;(«Yƒžcþr"9(NÊyµ¨ÁL;¶·~)Ç“áAõiܸ³=¯ëjqKýoëál~;¬ËÙèÇàsQñä¨üïdTž¼>Àø ¦GîtïÏf†?“%HFÝ5¶k¸kB×t"©IHêDR'’:‘܉äN$w"¹Ɉ,9]kúÖö­ë[î[ß·¡ocß.õä®5½>Óé;Ü¡»µsPTõ¸¬[õyñSq\ž©Híß¹?jèÌy¯ É(…‰cT:zpUö"wº¸h ¶øy2»)ö÷öÚAŠý6:ŠÓâŸ'ÇòyqÝ4·+Š‹I5ªf2 Wµªê«âa.±Zà‰ÄÚtZN_ï}û±¨lC ŒÕ*b9ñ¬ TEÈY’}@+±³O/[Gb‚’Îä¬\‰š@éü8»]$žU”2´”ˆ•Ed{cU|?’Õånëp’U 0¬e•°¾s*Ù àìˆTD„òQ±x¹°·8^+)ºmJÊ!€Nóì×ÃáD1[¯°Ÿ@ù¥P¹1•Ü£!¼#VtÔü˜¤èekU|(­WËmÃAÅ«ªzëÛ3:(6€³›v1(Ætm²S “ŸË¡ìÖÃq;‰çM ËjŒ°÷ pšN†Ín¢×Ù¨‚l´ÓØ 9vÈ­ÇøÝxÈ «eoŽlf×nÎá±uò; _›Y9ÙIY±#Fv9·Ín¢@e±×ÃnIä+O6ëáì&z­GÈ6:G…¼IYE šð ’†ng5Ù!g)À#ÊÈ2«ØôÄÕ×Fˆá"–à p•œìñP²J0ðûçØ8$\h9TBè™<÷×ÐÎ÷ðdÿïêä»Ûºút øûù¬zÿu8A¡Îa¢6bvõv´¢´Vrn¸Äk9) »À{!'&MUMç_‡8,Jü'b‡EŠÛs«­#¾¬êr8ºÞJ¢Ù¬²ý˜hØåÄø,Íjl!å„“W»éà ²@Æv(ÿ,Cõ‰î#dì—‚ß ämÄ„¥x±Šk™Ò°@-ج²ÎÏl>Ã6+é«Å"‹ðN°Þ3¡}rõï_£6™,El±°‡˜-¦Óó‡$]'‰ˆÈ€½¨E5#–Ý}UÍš¶hxÅr`ú£1–—Ës2'ïÒò‹<ÉK1Ì«V÷_¼¼0ýy»`íR lw„ÔžwÕÕè´õT¼9zEÅÛòæó³¡Ïâœ^9гé âäµG{”eû£/¾öHËd¼¼ “ Hîã3.¨P¢(äóržçh1#=Ë P– /¯¡P¡Dy )È›GÔ²íî!IÉž7M]ÊzˆZo6“•B'n$ •*§ô×g‚;Y}'ß?Iñ;ÓÂç»_Éwçž2ßý¦óû¨ÝPl{›8þ¡¹ýKÝ˫ӹ{ÒéÜÅoß½ùùºw5{ùI³—¿ýìå盽~5{ùI³—¿ýìåÍ ^]Á]Æ6çí…ÂVmVâÂóîâ§ÏãÂ÷墳ý?+Î]b%?± Îw¯{\ãù9œ Oq #qêýÆ!}G´ é !m75¨_™¿ úŸn¿VS!> stream xÚíYKoã6¾ûW›‹ D\¾EØCÒ&ÁyÕëô’îA‘iYXÙr$ywƒ¢ÿ½CQò#~4Nk76Ä™Ñ'~3äpDÊØ‰ì\´N{­÷çœ; $•NoàŒ”¢ŽÏ)¢„9½¾sïžåy›b7ËÛD¸ÅqÛ£¾r/³¸°R8î[ágý`pÓ¸M°'ãØš“qûsï—F8à„: ,”­/±ï;9¸²áV÷¸'Ü#\!*i=;M²è¶Í°æašêÔÕÁ5íûsºØ…G°@Ÿãq1Šº'…ÓB·=΄[+Aº}=§iÙXs] ³´oï%…aÿØ’16óïãõy›*÷Æ"—Ü ©`LJÛi¶‰[FC]XÝx²Ê")R˜7Ïžu»7Ý5 Œ"¡f(/Õ_a€ª^G@¢   ®á‹uC–gÆÝoc«êjêJ†$LG D=daYêѤ¬æ™1fGÍÅã44ýä•Î]èÁÍJ«f m -8ŒJ[ÄïXàwô4Õ¹Cqœ¥¦Ê›U3ä FMF_h*ôªygôY¯õØ"0¨Ø!Íb "s¢Q˘9 úŽP)Ÿ:¹v­_wvj·€÷‰V¾•³®2¬Â>7vëb"°ãCŠ`j2†ƒ$¥lÖ”ùÓO!dø«æÕ‹×vñ Hà19ôÇ«H^¯C‹//ЇIN&éÓ!ÂÛot÷nšåÛƒÈÚYë¸ã™Ñr}qü$õW æÆŠÀ“˜ºPßf/Ÿ‰*v€”"°I1\Åc^":½½=éž\‚êƒ m[ž‘ u¿œÞº"÷çAÆTç9l9÷œ,^E`óÚ^g/òçFK0˜Ž£2ÉÆo¶îÀ¡±t÷üV«R+MŠä!=D@X›¨^Èæß j±:Áh¾Í°:AcõqíèÈVˆ£å?k¼¼¹°ÂÍ]ïö®·iöüxyÉ7Ï÷ÂâKsû^å2ð:ëëõÀç=&#]”áhÒ )¦$€YG°“Û:ù4"8Ñ4]ôºwgà›•úÓ<4‹¶³ N9V.œóš°x*à0dÖ°,tÓà…¥ '^Ld¼dßÙó+=Êò'+ƒWý~KI-ÂbMz^=T¹YéqdÛ2OâØ·4 ¿Ï™V [¼¼Žtšõˆ)*U ì έǔ0N˜ª™|‚ü&…Vì[ˆ~«‰ŒLWJÉZpM¤X±²vÉn²OÂHM/?ºa·Ð_fq=R’a¬‹Î6ôÇëó+ÝoÊüÏVM³°_¶2˜–IªQšÍ'jF_€n÷ô)Ê>¼l­\}ͩٴìükEë?+StkN.”)º­ží£LŸ\~z[uJ¬Ö)Â××)°ï¼2þ—uÊ瘢N Œõ£NUûMóElãlì§#'uR„y 긬S$k²¡j¸$Q˜6žÍwæ?êå¼^²—ÖKvèzÙlëöû=xö³ÁÒ#\RD|ßñ„D¾¨?fµ7;~Aþ Ï!€ý endstream endobj 179 0 obj << /Length 1586 /Filter /FlateDecode >> stream xÚí[KsÛ6¾ëW°Î…š‰<>4íÁžØžfbÅuäæàæ@“Ì Eª|$õtòß» @½íZŠÉ*j’Œ€Kî.vñ-°Ü`äYÄ0ðâ%/÷õå꼃 ¸eœwN†Wg–exȳ©m GÇÈu©áXQÂŒahܘ§YÖ¥ØL³.áfþ²Û£Žk¾MǹjùI¨¯Å­¤+Ç]‚Íq”ŒÕp”t?ßt0ÂÀ‚s׫ccÇQRn¾’‚x|Ag}fTÝ8õà ˆdgTQ,PœÎ 5õƒOÀn{ó"™~I€z0-‹¾†»&Ñg›u^ãá«3º¥ W)vÇ®qµD{y9Æ‘ÕÐDt‰™K74}hyÔø—,* ‘¨N¤¯Åø6¼g‹xo{ˆa·Æûe .‚ýŠrœ"Ûcõcù}RÈ(Åó»Ô53¡;qžªVàO‹2“z†¨Û³¨eï"­æ¨„á$èV¹DR*AgÙ3¦@ìš"¥‡ <ÌÓüÆåD$… îDð©rJƬjB¥ÿÈv”qŠÙ“Š<-§±Pít$X™# fô¯•ýÐu™y|5P”K³Â@l6 žÒm×ßF\ˆ³™{}zr}¾éM Ah¯©z±ø Á·±^ÀH;ÁVžÚr f ìrVc° ÞÃi1¸yêÅßíâo½àx}'`¹ËSV>»ìbÓjÊåýê/Œ7XþÜÛÉCøaý;³ÄêàœË¨œ/ÜÆæ&G†ó¦yD-(¡£øßͲòwè2|n€öoö3³ßßIWBl=íTíê â0Q(náг¯¶…6Söä{¾Tlê¬ó˜*GŸý¸Ê—!hê7s"ùÓ?jZÅ—Šc$T½ÅoéäNŽ!µ’¢QÃêÍÎ/ϵLjÚ¯c‘Œ‹»6{nò6p[IJH¿øYrð3Ãåw¾>ZkGTGÕ£VâùNv#ö e¤¡”ÝV5ô,úÞà¸Y•z›þkûHç:œü€×µµ å6 õeÃ˶šø£ŽêY´²8ŠƒÜqo)‚TdÁ,E¹7ŠT]ÛôÉfí·0üiÝZÛœµ¡ì¶#T ‘é?@ªè»ÙU<ç†È×R¦Ïôá€#еse¾¹„}{•þ•ÑDç¶™™êA¿NpçBçÀåGÝÈD~—ơRÒEvžà¦.r© ¿‡´G³¼Õ 4%påÖ ´A=Žä'"õ‰ÅÏüÉä Ÿ¾[©¸¼OÒ/—»ŠÞNŠð©ç½“6Ÿ;k!ˆLµÁæ—†­¡j0®®OÂ(óX°·¦Ùö0ùâÔÑA'/Ò)J$²,ÍšÖ¨éucž¿}º·§©'óX9MÁò)ãâû ·ÓØŸNãûCø„Gyqqžì3j=€éž¢ï–+$J ±c–n[Ǫó’úæÙõ •ørryy|u|ÑNè×µ°%ߣ¡mÔ©þUÅkKå´¡·PI[ñ}±üG@¾;Ww×ÃËëáfÊ)Äí×…ŸzÒPl&\}c4yáO¦5õ¥–Îc/y_ÈóúõVu»ZË–‹Œ­ŠŒÙÿ¦ÈØvž©È˜?ZdL,b?S‘±½hfS>³¤ØÒÿ›°¸læ=Α[§ÆÞ¡øtØù²ˆTE endstream endobj 184 0 obj << /Length 1170 /Filter /FlateDecode >> stream xÚå]sâ6ð_á¹<œ™ :}Y–™öô ÓÎ%¡ÄôhPŒç æl3-ÿ¾²%ó`0w渔kµ^k?µZ/8\bs®‡Þm ò–q[»qk:”pf†ûbXpŽ ›b€1Ü‘10Ûq\ÇÐŒâ:²ÌäºÞÀ67?E~¢ o:RÀGñœÑÍý:‚¦L}…¦õ'÷PrÇR ZÜ–£Í m+)wß’’Jñ¬5ñå3I©$» ¢a·N éÅ^ŠP1ÒÊÁr&©ºíÖ¾Ö ¨°0± µ1†“Z†§Øȱ ‚ à˜±0^j–– [ù|mÈ©_£{ÚùÒ–6p,ˆ3ë:P 1È´ó¯®ê qæoLD’x¾Hš™±¥ä „äÖ’º 6_0IGBFX籤‘Ѷoú·Šlƒ!aÀrœ‚jè¥Ã±H—g™@¸Ém÷zu‹Šíâ±ÏuNÌlwïX_JA–µ^¶÷vˆÊeÉBÊIZd =Uå†üÖ2! ¨téV™(³3°);G™X=õ1y"/V7r–.V %€`ó3ù09Å«¹ÑóŠêzqïæ_'ÅȱiXsyœFÿtO½lª=M!Ä´ÔJ¥ÐRñÀU+q]1U4Èòä l~­Øªd×…þOï”ÕÙu±®Q+±ì|Ûf²B®˜¼ËO¬woÂ;IÍ@4²ZŽâª5ªzã˜Ö§Çöò1ª–ÇÖKª³¾òyz³Y¸¸Üòh}Ì0HÒ·pУKÎZÇg`|¡Ù·ä ¦©ÈºQg¬,ke¿kõÆÛéߟå|¹év[½ÖÝyÎþ|È_'NÍÑ;ÛÐ[ ÷Õ”FÇ6¥Ñ÷hJ;o¬) Ù 7ðÿ—¦4ÃçiJÛ˜}§¦ôî8bßÒ”þý¾óp¸)íè¦ty£¼—M^æi ß0—ŽšyÃ/’]õý¨eçpãO_j1À7¶ŠÿýÐ)ض[ûýiš endstream endobj 189 0 obj << /Length 1628 /Filter /FlateDecode >> stream xÚÍ]sÓ8ð=¿ÂSêÌ¡O[Îí\ËÀ@Ûë¥ÇCáÁM”Ô‡ûlè¿¿Õ‡“ØMÒ¦4L'’V«ýöjW`qâyxu(&͵.ßt°[Þ›Îñ óê”s/BQ@o0öFRR/äQ¼ÁÈ»öOŠ¢K±Ÿ]"üòe·GCé¿Ï&¥Å³‘ü¡n4Þ|Ò%ØŸ$³‰'³îçÁ»F¸SB`!CÇ¡•rýH â‰ñ—ˆ€i%;N²áE—a?.â4U©eä”û™dØ'ƒÎ¿BaÔfœ! ãpÚÑpN"Qè1¡ â^¡¼qçÏ¥¢Â¬Wƒ}|霶 Q$0ÕÖâ0 "‚pàœÿâE·`êÿqr|õÆN¯)¦¤GhG€Y_°>‹>Ûå×8+;ÍÆvA#މÝÝpÃ8KAHÆUö· ûöìô|{z’.=¥Y<2—“^ŒçU’*”fKGåñð °ÛÆìÙ’!}&.ÃLÃ…RÀÀ`fÇÙ|ªŠd¸g•¶Pÿxtyö8â Ùocz©šMª[‡¼!`þÇËc§;vWÚ2”°ä,‚_B…ÅmMY$ðÊÅݺºÊdš§ÉøŽÆEß=YÉÕß…Š«¿úÖ¼6Y«På<­êÌõ ™taÚŒŠkòyQÔŸ¢Í®Gû× .P…ê+ãêaÄx`b %» ^EˆI§-C¬YÿGïºGDÈmbÖ•ý'ŒiªÊ‹W§tµ`wBQˆ\ì¢óã­ª;*p$½öè,·n«ö? ¼öX{gÍV»'” ¸<*%’P躌)!§DȘ¢.ÀŸ"£)­_¨fɤG#lxCÀ¥³ŒµÔˆ júM8 å³(ô4Wäã@,÷,ÑîÉàÀQPÞ´øë×Ïfp¡?”à×5¸à(€û mpè.9ݓťîl¯[ˆMù"œ×ýüË.¤¯È|=&C¨üºÄ/u­ëÇ0ƒÐÂã.•~¡ô"ð¿IUAJ1 ]ñ˜ñÖí³Y™¥nq£ÏÝY#5’1\[Hg~æ¿ÿܬ@hýÛ£P;¾iŽ”í¬4JŠm>cÓA@糤´¶$_m^‡+H@~mVcÆ®Y(»òy¥çÂÕ°…50³»Ü¸R>aÆá–ØàÐue3G(‡;Húºh7ÈÐtj? éŸ&©²'g± »Z^äv¡i×í—#Ñe¦Þ…‘ø«DÌ~ò“¯­ˆ!—)…6+ËáˆS¹ŸqB4@$7ù?Ùͳ¥Q¨Í°dmŠB²¯‹X2ÖRJ;Y×±ÇG—G–…ìú/ Я£²þ~ƒ€1Pt6± óU0î_¼;?>ìùhm-Ö¯'Ȉ²YÐçq»g‘ß{î©f–}»Ð`-6}Y·¶®|ížb ûº­êjôÛ,5LÛw°<®?ýU„JMs€i&Ú(›Þ& U6Å»ÉÓ8ÏÓ;}0MJÝ`âØКa2«ôÝ«ÔÝÎéÕ™›9—4¤Êâ[ßIê󳙿eÅU”ë:K-9ÃÁR‹:éùB‚‡¤0†ÑÚDÒ‰Šh9V¸µz˜K\”ÍìØ¢ÑL µzƈ¾OfVÓ<.+…7ê\ûñU[ö¶A(C!+vºÑZZäÉO«_ Z3pϬzN8Ãê3îÅõ1gø‚ÏÊã«9ˆ‰èá°W?Œá¨¯Ÿ9¢艚Þò¶þŠZé¨ñŸ6\PìA΀{‡.v m´û!vÃÇ endstream endobj 194 0 obj << /Length 2077 /Filter /FlateDecode >> stream xÚíYSãFú_¡Ú¼ÈUãNŸ:Èî$@Í$,8›–ÙnedIÑB¥òßóõå 3™Ù-Š*©õuë»ú;[{S{'{‡ƒ½o9÷b4ðO`EÔ 9E”0o0ö®ü£ªêQìU¿~×ëÓ0ò*¦µ%ùØ ~Cµ®öö§i>5à4ï]>ìa„cN¨‡‘À" á8 ½ Xy`êâD±'–Ø#¡˜ûWÁu¯`êÿcÔŸÌpÜVI“ù¾QduŸÀzAè ÂßÖ²²sõ]ÝÈ™™–YRÖrü(”ÑJ…áØ¢Wc¼² c°Ž1v?ÊYQÝ™àÔ þ‹žŽàJ¶‰¬&¯^ð'8‰¢ñÓÇ¡Âdž§#soªt:UzÙ´h–ü1gèž-¬ÇÊéHfYmAÀ͘„F ƒŠ˜jÝé%…V‹,f‚R¦m£HÅÿ,Qä, ±ÚfŠ"å8ò ¦,$‘…ƒQZ’‚aN…ó­$™# ^hU&ë:™Êz˛ܽùÃÑáÏ'J1}öqd8ÞÇl_8ù=ÉZkÅÄm Su±öA47CV8²ïOÏGuTÈj¤ƒˆ¶—ÂÜóv&«t´EÊ )·P;þ/§#:§`Sk=³´®Aô-ôæQa˺¹¯×ÍXVÖçtÔVm³ÅnèÜÃG7kG¬”Gâ¹C.¢îsÃ|àgB<æ:HCþ¢8+±ÖÄ7F÷çÑó®ú$&ÜÿE%B…gáRÉK…$•´št&A-/ ÚÑ`ï·=°G\zåˆÊo4Û»ºÆÞæ@÷ˆÅ‘w«WÎ<ˆÄ€É˼˽Ï™Ð)›.çÄ ¤6D€Û¦ìÓ³ÁѾM»T`À»~×LožºP¢‚8 øõ»~kóÔº¨„‚ ð (V¢jxŒȽ1ÒŠ“ÞD‰ö,µ"V2»¢¨ .)Bí£Õ×KlïºDEðº‘(†à+"­›åš9€aì*$Qc~Ý–%Xvä=¸TÊ«ŒqÒ# ú•Yw™ë·çꚘ â'3³Z µìc›5éÈà’n-Œ“Òq¤‚G0Ñ„a–ñãÞœ>°G~VèFU›ç©{øµÖf´¼¸ÍYk¾ÕÐVÒŒ¥yL Nr3*7öí,”“63c•HÔ½–ö•Ä•¡®ÒYÚ ^Ÿ3ênäëz§a(x9¾±wáFŠ$#@‚U,^Þ8'ˆâðžHú‘"Éù²HÛ݈ÁȺ¤h.³±±mÄ¢ÕL™j‹å~s#í4öN×™ªÒ ZŽŠ|\k($à,3®¦.ƬÁÏ}™ŒnÌèvá9Ÿôr»Â3o˜•™l,éÄNBÿò¢*7!þ$§5SÀíëZ5¡ˆÇÌãß1lÑ.LHª®3°:gïóÉgm€#&"g:$ÿýd}§UŸh ƒ1Äk–Ñ$fËl V1OV&œ67IþÊI ãLW˜ï$¼(’ÐxIØ{ÞA–†Ú ê«{"u™¦dåܲHOÊÒ‰± Wtê¨Ô—³Kä•lÚ*—c›g ˜5&l5Ñt.S«u>Tƒ¡N— v7•6•ÛJg^e¥Ëâv]‘×MÕŽÔهܦͳ])¯œ @¡Ç!"„ïÂx,Šc #9ìÅ­—‰‹{2uh½Š$SEæ²LO4_e5Ówsk ž·r³,­ƒxÞÊÍ©k üäÕ›:/€‘S«k²n"Š}OO“·ëÕË×ùÚåëF#°M$‹ÉâÜ·LT$xÆžj•«yýgÚmuxðÏþ³,$ •sö†˜¡^»\Pæöü¹¬?Z…º(¸k+ç‘Ñzû×ó6G3µf7Ìæ¬Dhç{· ]ÕMQ¢"G*IW]KÔõÆøÇ?]íÀ[H·4Ö/Ë/ŠݬÖ<.Ujî€u”%umO™WâׯoBê‹Á°Lë¶´¯è üÎŒ‡e~[TŸdåðñù„êTÏ¡¿Ã<™I ?<ÿpv¸…rVL7nn*YßÙØÎªÃþù¤r™³üH9ÌòË~¦2¤.NOj)Â%Ýׇ…0eUL‰z˜î¦ÌÔ7Ý\¨¸öE±m·ç®WWäúúó¿žµ?|%¬úÜ»Wô‘Èé§ »;Ê[ù'.¨_8 èydØ!ÏñèØÿ«Š endstream endobj 200 0 obj << /Length 2291 /Filter /FlateDecode >> stream xÚíZ_oã6ϧ¶'1ÿ%-®ìÞ¦E=\n iP(2c ‘%¯$; ýî7äP²äõ¦›4qöáÀ$‡CgHþfHŠ®XÐaRÏÇeŸ|üñˆPüxôþüè¯?H$$Ñ\ç×¢$ŽyIN8Áù,¸OêzÂiXÕ¦Âæx2åQþ\ÍÌ¥å 3Ì•å[Ï'Œ†ó¼œ#9/'—çÿ<¢„&’q„¢*Ž 4"åþ*) O †ÇdL¸NÙû¼ÊN'‚†i…)PWŽ>Î$†`˃ÄqN~4÷Éùѧ#ƒ¢ë,¬XX'A¶<²tÉaI$ ;ÕAm‚ë£ÿYJ1¢î}¬pa²6ßÀæT…3sårÅöCkæ¹ilY‡›tÂã°¾ÇÚ+[¸Ç𕫍`—-±Òù›©®[S"  7UÒt˜"GV-¯ò2móªìš`½vÀ’ Âki9Ý·ŽgŽYÁöƒFN6䋪S ­Éeþ ª×¦!“©¢4üÉJT,œ›Ò€³9¶%Þ.܈¡ÍÖ Vš”KE¨ìœÖGä™%´ð S”ÑšŠ4f –Û…ñãD ‚qf7zPÇb¬rnÛÅ¢·oÌ}@»‡¦i±¸* GÏR!©iq*=ÇuU•%ÜÚ7Dן`ȧ³ZòÎ*ØßÒ4M:7~,]ïý@\w®ãúÆõ\{yë2³óMöMæ/Îü\A?uµvÀ ›EåÔªZ B ~]š»êšµvµÌîõ_¤›…#Ù9bˆ vt–U‹ô\#ï2-Œ3Ô·æ^).LXn0 ô7®7o)›GKíÑq`7-Ã~‰C¾¹ÍÛl¶ÖÊšq˜+ û~7õ躯ª h˜vÓÁ÷Tí"§6n€HÖÃ÷‘ $ƒ¸†8\ëš§ ñó€ÅJ©¨‰©ÎÌÖýI…`è¶é‚¾cpE#…êüÙâÔ¹€*%xÝ‘Biñ| %à“]…88t¿F¬Åâ±F§pþXŽ<û¾óˆ¨í±Õà¶[¬ŠBD¬ÒÒ•÷’6äuHÄá{Ó¯ãÉ="¤%–«©7¹¹õ8qíAÚcP>eZÅ;î0w޽6¥Åw!Žœ ¹'‚w!aÏt©H†ï² €³?„:?ã2µ=bìn£²›‡¦Í–EøØýÜ9,m϶ãt9ÅâÜ{ 7·3¤uÎÕ6®4t®Pôá„ïý¡J3û·åÞØNÄ0«O . ëÞuÙe&%…e–ÙˆbÝ“µœ-Xƒ2{¶N,qFàš†æÎd¶'Å:œ |îî}Ó¼ý ´ôïw˜/7›èá¡âx:Wè—-(åÃSK„§¶žrá[ú7û|m³ÎVkiÏ~¯êL×1$$‚ãÊÍŠŒ‘ŠDÒϯ[å€lTw‹Ë>¯k9€¹X³]˽ “c lÇn³g‹BXs.Ägú€–° _F!©c1Öȇ§_ZäUCKÀey°”c°”Ýp“Ï\\k÷›MàY¦+Üþ,\Ø=Þ"ݹ3ÛO×!gë³;ujÿQÂÊh·ŒÑE´HÆ€—IÖbBlÏ_XĈ¾é˜jÍÛ RˆÎ[äžq ”®Yzc[™fGTói½ „apÐbÑ©:äO¯šªX·¾´I‹µs¦¾N=hÒïÎo÷nBÃêÚ¹ÿCašp7úòÜÃßžwøûÐ ­Ð@Ò²÷Àì)sêLnëÝ?FNî"wú¤Â`¾ºß~*v‰[)ývxЬ¯5 XÇä_ZÆÝ”ð7Ôÿ}YQè2)Ç€¸ùWl\ð‚‰_MŽw—¸•¨xˆuu×]Õ¿œ>»ñ) ‹ûovÏÄ.ŒÁínõ@µvˆ(ã¹ +|û *,L9‡ÃÃl¾±ëéøÿèû8ùAÐ÷¨Õ|ªÛƒ,³‹üß,Ÿ¨×WË›îó'¿ }ÊÛâÎy†Ú ©?ýü#-üѰ¯œÚ° RæÏî~ÁÞ>àÎǧYkêáQ!oÏYÀûvï5ØN¸sÀX¹›Çηâ zYݺ I;ÙM[­HU÷Òþýï~>;ùÒsmšuÑŽûºZµõ½íÇ{ルUá¼’å*ò¦µifر@@s=©îá\¿P­}öýéé»ïþ……ï1Yy5˜¿ÁŠ÷ó»oŽ Â²lóöþtô5\„í~çÀþÎÁ=¿Û #Ôýu¥Hð/¿Ü?ðÀÅÿJ‰œp¡©Ž¿B†z¥¯7 òê##ÿÝFY•Ór½4užyžzÅÒ¯4{jÓe ‡ZøÉ3û¨6tR¯ù=Çç 0Ü|?¹Õv}ï1`‘»ÛC»¥ c5ìŽþ0 wÝ ›ÞÅë>ÓIX¹LŒ2¢5ïï“0/¡7ɵ)ˆÞâFõàÝ»ßìþBé«°qÊà`L©Ï’d§÷þÖëõ}Œ>€“J-â`* ¿ßarÔìù??QÏn endstream endobj 206 0 obj << /Length 2153 /Filter /FlateDecode >> stream xÚíZÝsÛ6÷_ÁqBÍH ™¹>8S;s^/—ºÓÇsGIÄ+-*$åéô¿]¤EY‘eÅ”ÓÌÙcâ“XìbûšzSzïŽÞž½>‹I¬¸òÎ'ž¤$Џ N8 ¼ó±wáŸES?/zLúe¿7àaäÿ”OK[Kæc[ùAqÞrÚcÔŸ¦ó©íNç½Ëó(¡±`Ü£DR…P†Š†¡WÀV>3ôánO®l‰ˆp3íÎÞ¦ùè}/ ~R$Y¦3KÈ1W—¯Ï$õBKÊq‰£’Þ@†„…v¡ï¾ë åþ»ì §Â?ÿðëi«ŠÃg'?ýrŠD^ŸñÕmQX(N`ç3ÝAàë¢È{<ò l ÿ#•4%šô˜ß·=Õ,-Ænn¦¯ô¼²|bË”ÓB—P0x™Ù—ÒÒ&N®\Ò8òÖK#×ÍC WJ@âLyë¥ykó¼uz~ô鈻Ôc¢”ò”’„±È]™A"©@8æpµ79úמ{4ÚÙ:;$3 $áè˜ö(¯õëË9Š"B¹xÀègØC@˜j14NŸŸ8$2~xB1Q ÿÝ0$#¡Z Ui}D "[èáœ%kLçÃÿêQõf'(s®HLã6úÒq¨YfÕÅEpyÙ·à=M§¸™cƒ% €Àå¨R¬V òw„;4ÉH“Ñï¶ipÊ%HÛNªªH‡ËÊÍ6‡á ^Y I=†1Å8¤ # 0iÏd“<É:K"YÁÚjsôŒPV1 äÃ3êÊ@Rѵ3ÚËA¨j,›Ðu}d1 ý!ƾvÀ4øB€ <´›z“V3§—†`ŠDPè …§%t4» }²œð˜ÈN&4ÊèmË¢ÍóO˼ÒhG«$ͰÄ=|Æ®6fÏØÕúï1û*"¦@/²Ìöým`Ë2Y,²;¤TÞ•Ç9ǽ±^$E©Wi0 É5"¼&¢×(TÅrT- Þv‹Ž²¤,mõ{׃ÃÇ…¾A:<DBðÁHÂ6´þm˜à}?Æ}Åñf¿Ó7ï€XД}fïì=äm—²º·d |Y-–•9¦z6Pj›Žb#)Q‹)_ç¿ëº¬’¬yœ ó¢ªÙx(pµ¶’„•¸ ‘ÿgÍù<ŸæË+]¤#Û“Ó¥r±Uå¶¼JêðHaã¶§Öášx£ŽÉШÃíÎì)çÊÙ[ÎŒj¥W‹LŸâ)aóªœÖj°"¹6|öÍ^úQ™E¤U2ËÖ$áºEïbÀd(ü“ñ¸IÀÆM^fšWº,“©.·Y·ON £nŸ¿Í4Øp©—Î;ßÈ’7àÛ‡¼RE!£ØÙÈåsùv€­ëü¢#f€š&Z̈Övv›b ÂV»ŒpQ#`<ÑcA%¦®c†¹+öHð*vd9q91àg¶k%QÆf½n5³Ý7Nó x®´­dz>ÅxëP¯ Jˆ)ÐôZ{X‚¨m$²´¬6$ß6¿>·Í£øf ²å,_f.mÇ€&ò]¾Ïvò¹kéÃp‘5>wd,8>X?Xq{ÎŽ®9CµRGi»êÛ÷ïO>œü£å4Àk&WyfpÍ—[íi1BÍOÝ þyS¼Ík€ŸÞN'쾯ŸOvØÃfldåè_¸•N°#‹XÄçž¿A´œ#*ýÄ %.lcŒmð… ƒPéž Âqt£Éµk D±\ ;°Yºî\X¿ÊÜÂÉxl׫ ë[ƒÞ«µ·!½A¤”É•¿è60X“ÅŠ'Ë*Í4ÉòéTo—Áò…` œ+ïæUr !OðVk—„V“”@ÿ8ýHƒ@ÖZ@G¦¯uæ^2)=Ê ú ° å»^$|`^ªØ?i-m£B'žÐض ¥õ¯q@8ˆ> qíŽDdòÏN\P)* è,ÒŽ‘X=Úv’Œˆ°¹:ºIQ3øù<»³µ…ÁBjN šéÄ–ÆGŠ£‹Ñ`Ï9WÆö̵ôŒd ™Nßþún4Á7FqÐÜcÕ¿°jf½˜AOʾâ—ÜQœ×;2~j£¤ÔnÌíúž±QªRf.‰Àû¯0hÃÀz¤Ü(,ÐùûÏgH÷ŸÖuáë&)‡ºåÃLºGimVlŒóäÜzrœ>KÜ´ºqŠè18QÜ_Yßn'Î¥‚„­\¿ó—×I¶Ôíïÿܾrwãµko^¿rwß5ÍZé|¬oݬôU±O 1ÏkNC×»ky^«¨Á³ÖýäÙ-˜¹/-äûL4(ã’0ˆ!ê6ß9 =mSOc¸ëÙ«Ïfîês›Q`¡5<õÕßçLÈqÜüÚ4É] ì£! `_?›£Xï¼§R'³{ÑÚU€§’vMãöL0ýÑ-)ƒ³mÓyý(W¢·Aì´ÉÌ]ï¼§’ ËCèÕí}bءǣ¹/>ÿÍ›ŽÏäAÜòÂ}gnb"CÞ>Èô+M¿rK¦xøÆ}§¥q q|x‹V–|Ü5oýCXsL± ýŽ©ØkÙ<Ë’EÙ9Gßw®týãC8Ð~Ç|X¤¸u§£2\ß;ïo M.9œ®Ûº"6Ø`Ù÷¦º³0×îÊì—¾¯×Kš+Ï#–­µNKƒ=[xÒutr`Mîÿ?½zô›I¯6X˜¿rDŸÎ'ù_? ÿæâ÷ô%âwC'ý"OýdŸé T~*ªƒXï‹ôroæ:¼«l¾´þi]ðÄÿ£›&Ý­5“{lþôüèè°2¦ endstream endobj 211 0 obj << /Length 1599 /Filter /FlateDecode >> stream xÚíÙrÛ6ð]_ÁILÍXn€žö!nO;9\Gî‹›™Ð,qB‘*I9ÉCÿ½KÔeY±K¶ÓÚa ,¸öÀ®Œ$ðüP ŸýpzÜÂ,Ç­ÃnëÅ+΃E’Ê {Œ´¦âQ‚n?8Š¢Mq˜m"Âr¿Ý¡J‡¯óAé 8ë;àWsQãMm‚ÃA’ Üt’µ?toa„#N(0!°Ð F%±RŽËÕKÀ)°'æØ#\#*Óqv˜ä½“6Ãa\ÄijRGÈ ‡ï¦,ÔÏsƒÅ¾>}gì£nëï¦p@ KEf$èZõ<§‘HŒ &¸lýqg¦î&p ÌNqç?O½•( Lí1Š—ŒÂ"r‡ñÏ_XÔÛa$èÔÃa$À‹ðt7¢¹EÅzû{ñŠÎ›.:pÆKÇõ/…‰+Óî0ÆÂØ ã¸MUXÄmŽêVørk©u7‹\¹5¿©¦æißã™+p æ—µbÀØ$(ièףóc‡¶À,cˆª¨ÁB;ÐðwûÕˆç,ùŒP;ô§mboæ«C É$˜»C¼mr¨Vçõºý­]ò¼#1 êld"Zixä , 0@‹»<9£ò>Ë?ŸlÊúí£Ìy‘ o&‘žk'hiÒÑ`ÛbËì‘@\Ú™Ÿ·|–H÷ôìè‡8”YNx´GãÞ$©ºNd69#òÌ&ªg;ð{ò”n"¢. w‡õU‚ð°o.àþmÁ‘)Ëx`J÷TÀÅ N\5Øã6Õa‘_¤fä&r¸²ë°×›~Ûç¡ÉôñËž’rª"é`yô¢¬ZjTe=pqlÔµbi9á3™žð@b8‰šŒO ŠP ![S4é~¯§Ðš¢,@£®S¬Ê³‰WÃ÷ Ä\aä²@ŒoI¨¡‹ÒŒL‘ôê´7sÕ†7CÙìfØáLÏÌ/Éúæ‹/sk\k+TK Ž]¶Ž´ÛQoM’-KïËZ¸$ˆ+ºS‘€¤‚¢aA¤qúut˜¬Ý4Z¬ÕVh§y6pàÇ«=|&½¡“ÌÕ°ÙЋKã aì§R“ *¿[CT`ˆn /¡ŠÊm=Õ3~ÃÇÄSªr?ÆŸjõ/¾ŠÓIƒ µ“ÛBüÛä°3ØÏ ’«ºÅ*¨ƒñ¼qæ °I5žTÓbÌVmS¦aŽº¡q_ñùš°4½<óEøl2ÿ¦ÚIdÐþGa,Ñ*šC@ØIŠœI (‘ªuýöå:#$éh¬ê3|àÌ¥×l—:ŠŠÑEÝoæÂ`öKAºTZn+{Ax…:vA¢iöúvúÒˆêic£Æ~ ͈#©åÞ×iªþonr äCw¨Pû<½ÖÆÅ8ÇÓ”ú;·–'L“²úäèým&ò8;©QVgý]8y6±‰jfõ2Ý­i&ws:–Öå$£;i žœ¼<}ùf7í3;ØŽü¦í'€ƒ&y¹?ûÍ©¤s™²®Qà‰ùïtŸ?wtŸ/þ¸É×ïŽðî¬{rÖ]¹¢ðiöwãòÓA»C(æÎ{oB|›÷ÍjD¹ôÆddÊ*lŠ)¨ƒ#‡€Ù`\¬£ö~ÒƒZ°l^Ñ´{W C6õ'E\%yvp:åX‡“Òž`ùµ¬êF[½Ù@º/Mÿ¦­Dc E-&jc<7¯oÐÖÎߘQ^|u0pÕ¿‘o)©Ãp¸u8ysamÓ>zn¬Šd0¨…[…4Š¿Ì(]CYg=“¦¥×Ün•VnsļN ã„iOI¤<úõù5„þô„j˜Á þ=!Í´†{¥›—áÆú!ŒxB$Bôv´dѯó×”oÓ¬cö··¯Þ9èü&ËÿÐö_ÈÄ}û¯.`VIjPšÏj÷>¹uÄܗ·¢¶W7…ç˜lœËõ9ê#¿š…G"÷#é^²w«×®!VV}SxÅØŸÌ'ÕÁ½â ½dý͇޵òŸ½òzè¥7„^ªîÎùÓ ½šÐ…^Mï)ôÞ*>‚лÝ~Ó´õµð¯}\H$™:"BšyM9ëÞ¥Eõ/ q~N endstream endobj 216 0 obj << /Length 1506 /Filter /FlateDecode >> stream xÚÍÛnÛ6ôÝ_! •šå]”=¬hZlh“®u¶'h™v„ÊR*Éiú÷;©Ørl/nâ¶F`’‡ÇçJž ƒQÌIàõ¡œw×~øø¶‡Ø Þö^z/ßpÄ(–T£Y 0RЧˆŒ¦Á8<)Ë>ÅaQö‰«ýTø®˜Wn¦ó©›¼6‹·œ÷ çi>wà4ï_Žþìa„;!*‚1’8Šœ”Û·@RO¬‰G¸BT¦“ìUZ$ú ‡ºÔYf2ÇÈ+‡3ɱOF½/=Bဴ&*BJŠ Yô,œSH‚ÀH€˜ f½¿–ŠŠf½64Ø÷Á½óÁ–Š¦Öº1Cf2&KïügÏú‰iøúäÕù[7SLɀЎ³¡`C..Ýòùís7ùÍ äöó03ù¼¾ºÀßÀé Që=0Å€HtÙÿqúæìÜÓ îÇ!»KÚu¨ì2«ê©«ÔÌ›KãŲú+rØ%š?‹á§m˜ƒKí2Öý8à»3ïÒ³óчóÑvÌ=æéêsëZºOõÓbj¶#nRL¦ªõâú{‡[öù´LSU-‰ÑÇó“xk‹nn6]–ºN‹|¸ r¬ÂeeJϰúVÕfá~l2}]™é.ã…eñòÕ“ü`Éß›EQ~ssjºSn)©Ãp¸öZ¾Ÿ¬îåþÓ÷¥ j÷3z±tVn'KiÝY ¡V|íIà-š¦ymÀ:–›Ëô«6óÔT¿Fæ'1CBð †BíÝÝ:NÖ·ÜföI7’>éOÊâ«}¤Ú“ê™D Ò¯Oõ¶§ý¹¹+(7L…;§êH%-²4¹tûŒF#×A{£5çÞBw! Õ7:Íô$3hƒRç¿/6BY<J¶¶T‹:¿ûü0¤L endstream endobj 221 0 obj << /Length 2514 /Filter /FlateDecode >> stream xÚíkoÛ8ò{~…ý"j–oI‹Û´]ì¡·›Mr¸Òà Ø²­]Yr%¹ip¸ÿ¾C%[Jš&NädCQ‹RÎp8/N¨7÷¨÷ãÁÑÙÁë÷Rz‰4×ÞÙÌS”„!÷É gÂ;›zçþ»²qêåˆ)¿z5ó ô?ó [q>ÅÆÛäÒŒ[ÏGŒúó4Ÿ#8ÍGg? „F’qEUÀ3Ð4¼–ò•®“ÍòÔÖò˜ ×0Wv”“ã‘ ~\ÆY–dˆÈ×<_¿çÛSŒUèóÆR gú%OÌj#¿XÕi‘c{VŒxè—ðR¶1¿¬‰{Ÿ&ð~¹ž;B’VøY]à³\»yà#lLLOh>µ¯©ë¯’23l_¥õÂñ‹+…^ÿiùu{ð‹à$Ó^ÿi¿º½ ¾zwvð逷¨Ç<¡Ñót¤¥Ê›,lìR|´{–x³ƒ_w\¢:E½€DŠr³%c$¡&Œ±rš8.<žž€Ìˆ}ÒÈs‡ 2}2‚B8¤Bí“ öv(ΞŒ ˆ kïÄ%‘<ˆ"@©•îRt jdÙÑ!=ÝÁ‰k´%×þÙ¢9øe²,>'•™Á Î ènåÔŒÕ"ÔþGÊé*¶êÅj.xgØ3)–+«%Š<Ék„Yk“yºy¿ŠA -ÝKìzAñäV+ÙoñQÕeœÎõsëEDz:dKr% a/Ò-ŠhXŒR9‹ö»E’¡öà¨FN WO§r"01zŸdÆ(Â’ŽÌUv}—43°¥°:'ͳu>1¦¤ZSá¤Ú Ðjì$šÇ`‰^Y.âÉÂŒVþÒ õµy‘~^Ô]$Ù Aé !N‚e3Áe–,±çÊP”áC<#SÚv‚=¥±¿Y\'S|¿\×8á$ÎÄ#‡æsR^#x]%Ö–gÝ"É›%Ôšà ©‘H0ó0D<BZËmÞ 0¼±íD)µ°aì Žè²\-›­[@ÑZÊÁAa°¿‚ã˜-€(Àe ’[Oå ¡3 #^¦Y ü ŒûbFTŸÖöÁ{‰8íÁkò%^®2×g};UŒ€ ýyq•L «œÌ°…¨²à¥˜=¯¦‘¤[¹—`ýÁ¶¸3._(‡9‚£ŒàÐKAܦýû®ã‡ê§µ% ·˜çun}pÃ%Ïë<õÀÝᥠ¤I¸a¥äа(ð€%øÑ-;¶ª‡Q<ôèíßvìöï­[m–ŽêtF‰ŽÀCWaYnúí?€xç ¹ÿ×ñNFj¥ˆà—øÙ±}àËåª.¯wBt_æg>REÿ;,5," âÚŽ¥º\eñª5‰Ã’7ð^ùYZÕ/—«–ÍbqáHGˆ8ØÐD¼z̓›6ÀÍ©9ä‡/“Žûï„¥CìA¤Ø«‘ÅU}*ëWÃâ;LÙõ䎎ߜ¼ùÇÀ„Z ؇Â>Í‹«­°õÏ­ ÄKÖ÷Þ÷ª.V⨤,‹rhŠ~zOÞ¿ùpúnzÁüÏX›¤v/~ýßðxi#8†ëlwë=Ìh»HnºÔÁwß¡š>?gXõ° l°¯ŒºëÛs~ÏÉùmQù·&÷œüç7›¼ÏPKs'ñ\á0D(LA'CÊ5©ˆhɇ ‡]L$Mð8Ö£g~•¡ÚŒ”M¶pîÛ|7ɇ:)s“ÜȰ•²’’úg6)ðnJ fhfÊÒßm%»Æ.Ñ=ÅºÄÆ4®c윩A6o‘8sÐhÐ㓈ͧ˜Àqtt¤saorFÏ' ŒDj þ‘&ö! eÀ„Í‘D,º·4„7Ò“Èô®’lû®4ݤƠ“и*ÓÚÁb|TË8ËšNˆ1;X6c¬È¬qŸ1A„öÖ`{cPJ!wØ›ö&¤*_oÛ‰*I:‚oÉh!ÑUËi¾Z׊4eöîF,"*øÌðLji{jÅ È‚¡S‹¿íNô,­®y©1Õp¤ûðÝ÷én4Ò°’îLÐðîcO ƒc ÊGEî¶ámÒÞÓl.†’æRÈÉô÷_©‘éœdÚ½{šš‰ oÌqnØss-ÛñCk“•4V!'®Æ7ëFÁ³LÌM÷ºvƒŠÜ:eJá5’q¦ê õ"vßÎâ4³÷}ÐÆ;q,šk.3{;¶µEJ¹ 3%Ÿß÷2ÆCƒ}RÝúá<‚Àt¨k)Ày2 º)é::>y÷ö—» ¼€XY¶×SèÍ׿~Ï]R IIô¢itÁ57y¶Q(|›k³€…½ÑÕÂÞÊ~b/]áu²ˆó¹ÝS²ñ¬»Ã• Q =89Dë}TÖp% ç#ȃzòÚ'®Q2Ú'A€Ñ tzºÚ'@ ËÙ> Œ"èÒót¥O<äDG¢OÏ¥OeÁD‡¢o—> H]‡_7±0ãߊK„¤î˜ÛâG È{C3¬<˜4<€¬®ÆbËß«UÍ<›Û‰C~èZbëΘ?×t Ô%úíózm?Þ3l8µ+¶œ6¸¶“žýÕ Ìµ´%\æÃU™|N‹u…o“8›¬³ƒa „Ü6‡µÚóv’L¿m¼ÿçÏ=|u»ÞúòûÍ=MÇ-ê£9*‹«*9玭Ååoɤ® oû¤Í¼¦‡÷™2½{þ­I¾é­œ5îR#›V0Má ¦ŒƒqUaI@ã,sõ6ÆÅ˜¢ƒµ®œëU4òÙ騲"Ûîf¦lAÍjí*fÐMªzÜÄU@Å“:q¥<@pOìw-­Öp3%ma´äDq0ì„·Nô­Çk7|Ïûd óZkj5"S'ÕéX¦O„[¡0p–NÃVm=ÈãxFvµèS&DCQÄLµ ë‘´‰‘O“b„JÙ§I™0p(’%D‡¤ŸòY±­ºv•õG”Û²NLF$¤Úðåü‚zSè•GweG.ÛLõ2ïÔð©]Ä.»³ÛW7×m"Ty#Y‚ŸÝM–=|}­Ô’{ßÌÂWSX ¢¹Th]|ˆëäKOãî”æyð Qo˜sfóqKè^²>N6žÄ ¼~¯·ÿôˆq öƒï5)œÑûüQ|ˆMÁ­5“Ÿ“²Â 0¼’ÀYG¸á§œ·0¦ Ý;ë!ôn,´Û"Þ/¡5…¦†[”Áf9ùŸ­Zòñ\Ëñj2ÎÒ|ýe<Ï×=ߺóGW<ÔÔùX+pw]æ”…/@%ü»ó{o endstream endobj 227 0 obj << /Length 1311 /Filter /FlateDecode >> stream xÚÕXÛrâ8}ÏWøÑTÅB7ߦjHâd³ äaj³µ%_0®›²Å\þ~Û–e Cvg’ajö!Á¨[êÓ§Z2ØH lÜœ],Άל>òê‹¥acäyÔp9E”0cšAU (6Ëj@l³>XÔõÌq™ÖêI±z¸JÂÆo›6Ó¬HÕpV þZü~†ö9¡F6¶=>]»®Q”L³›ž½pQ<²‹¬Œ¦†MQ‰zxMÐSä2}\=ž‰º æÿ'ÌÓÑ4˜ýä ñe¼I!w£Éq‰Ââ.qN¶;FWW3(ô+wÇÛ:H0¦¿ÁÎ8¼“ÛéÔ=š?Ì‚Ip·Ðzq\„±ýôBp{Kx“^n¯ùíõíåhq{§üÁg6u[‚-Ø{Ù=À‰½-ŠönÃç8©ŽßPÏïÙ{·…Ü,S“pŽ˜ú2^ÌO¯‡‘CD¾!«ì³JuÓä^©KK¼dýn`qn›q2 æRlsy‚Lš·'r1ÍÞ²0b¸o ÃU¹N†!\*Ãm–ÇÃ0¬-†·š¡ál˜gaó7 sQ£ºfB=¾ë¤ÞÈ&JÔÈ#¶qûÒÚx¥ìÜ¥Ñ*‰ÁJž33ÖÑG e âtuW>®ÍeCß—¼ ïÏáöØ”'äÌQ Qd#Ò-Š>mÚxeÛje­ÙçÍBí”ëðm•k(\Ïo”-£•TˆË¼›ŒüEÌæØ½{!ù¤—Á–s*=­…L4bÜC‰Êõ&Ë5)HºÅ£J´T4ÿÊ¢GÚÛ›}`¡f‹@«éì N”p›®=‘¼@cœ†»âÁ‡¨ß­Ÿäy¶u“vVkÖH>Š|Û'ÅÔ,.\Eiîì>Û¥¨åZl0)C_%»YÿÎU–®*Jc\­À.ùNÌ\Éu~XCÖâÐПŠLVzsºÑ<[&Ñ—(ï9Ãý‚k‘V™Ôs¨²ì£ì®a›¶fÝÏ(_•*+Áé¤íä)Êâέt„ïß©6ÇÐ×;µø»«EZ%uo¥/° MYm’8«öJ«ãU¹Ðw3 ’#:j­à?ÅíæúThA ¢.”¥Ÿlñ¾ÍWpáË4ë.r ÕNáÇ…*³0Ô¥3µŸþ|¯î‡‹¥\zT¨ÞÉªßØ yÝð§Lj…Q@ÁºŒ>/AcÛBûSíÞnL±ÎuµÀ x8hºÏ~ä Ò†ûˆÅ±˜ïª¼ˆ0'Xœý%¶, endstream endobj 243 0 obj << /Length1 2089 /Length2 7420 /Length3 0 /Length 8571 /Filter /FlateDecode >> stream xÚve\ÔmÓ6J JI ÈÒÒ» K7‚´t÷²ÀK-%ˆtIw§´´”€t§¤€€€Ò-¢ ñ¬×u?\÷û|x|€cΙ9Ž™9ÏùÃD§ªÁ)iá`“u@ 9A\@!€ÌÙLà á¢ì€pàTw°7C€@0Äeb’v†™!ሧfH˜@ÓÚ €: @B`~!äE9j+»º˜Y¡|@(AþüÂp(`³‚#p¹ÿ°Ê#, Þ¿í®Žÿ{æsvA1žü‡€â¶p@Øy,`–¸Ü*H8x"íàèé ·²Fž@YÿÐóÌ=Rp¤ `ÏG@¹’vvõ?^.u˜ ÌÙ fÁõße]íìTÌìQ9ÿôð§ €?]øüÌìávžÿ?žòH3;8Taeÿ6Á]dá0 U8j @:»Âþ6k!,`ÎvpLÕÁþ§ÃN÷¿Î4­áP[ÌÅÀ'ø÷‘ìïÊUœíÍìþ‹†°øoå¨~ÿ¥›û™‚¤º² ûÿ1ì¿eP 8 †ðÌœÍÔõã‚^þÛêêŒ;ò¯/0ê£ñ¿ØŽš æƒâÎÍ8@…mRÒS‘UäÙ½ÃO ƼExxÈÁàµË¶AyšFË®˜ÐNôÏô—}ººr¦»^õ¯æŸ ›ã0Ƙ®D—Ï<ëÚE0â›› ™ã†•·‹'¶cê:×¥‘[ìCAw¤Ò£+ÜÚ{ì~Ž¥½4^nÉÙÒÓ¤ÖkÅlX’ž0Ò¸Gv"= ÇÅ(‡÷ˆŽ·‡A„^Gf±8óQÂ;ât*?³ØU—oÂñ} O:ýØçô‹ZQ8âp¨sSñéÃâhàÊË MŸ’mcNC¡<~¯C\~uu/ôô ñÝÂî¯g<¸¸e­>ÄÇe?@t¶')Ÿmm×±Ukƒ-ÔÔcŒÙ™ÊÒXó(ˆÑ00L=u Œz¸[mÙwNØØ†õ’§N5£[bÄF¯²[ãöµöŽÓ¼ê0Ào¸¿?¨m[él ˜yxÜ/ÛpL.Žönߤ4Šx¯+}ñÔñÍ¡³ØOë)ÙÆ«#Þ;ʆ²j,ÁÏ>ˆùáµf œéÞ§›Øz–A&ó68(a¥»%ú‡Xƒ$ßÎx ·ÄM¿Ã¬hUdš^f2 "x|Ôe$3¡0^ý¥7”L'óÈÎMÙˆc-‰1úØLê3×Þ/ñÙzr,¥S'Lš¸’Tqÿ ÉRj°æÂägPs‹ÖÜÈ­ßѺʻià3ÿ‡4N-žÌíÈUKÁ"ª·#ë˜}˜O —¼I²Z‹¿ c4Û¢Pè’çNË‚Tœç¯çFÅ膛 EóWîè™NíCUPëŒûÉŽj*Z÷ª?$ÏBÓ=ÆÖÉX˜k¿S ¡Ÿøq¥¸kja[*‚s[ðíâ… Uv PAS‹ÄÑÏÛhÙn6Dw>ç}¾ê‰>"DÓwNM8d—ä§IØ—3[x8¡òHŦü´Ú=¡Ú?wwóË G¢>Š%YäÈoe 1“í…}ü~€Éß»²tV7yŒã¹LªU([”€6¹ã›w/þ…L!¯¡Š2RÈP]<;þ"ßã«Æì¢æÒ}¹÷o&d3åºaø±Vß‘UK'!B¥§´!éȳ Àå×]S¡E’î…ŸìÇûR‹ÂÅÍI‹ð_¯uòÊ˺cbC¼DOÕè¯H9 ” ªYƒzDéåÏoWD” l…öx»Q8¦F}J¼KçÌ5’úzî•#˜òÞÙ)%ÀxN-ª´zFtÁ²Ís"âÞ(>ò£&#‰rÙÚK¯ö05+1Mé´ïrsª-¦Xe„.×Ò¼ hüfÀéPB†ÿS€ÅKÒt õRwüopÌéxÅ®ù²Ô÷€åeEÔY1t›’º3®ÚL„‰ËRœ¥n%oP¯l†¿˜A†‘·\¡r%•9²¿;wrÕÓ8D¿dYì<½³§ÞðÄ‚ï»ô1r6{M¾+5¡ËõBG:r‡~Va–Üp| ø«TxàLs}iþ”ÛóÄQ âVeUk óû­ß†1ãò î=¸ž7,^[øš§b 6ôØ~²¹ý…²5DÏdihÛêõ븽_;åÛZȆê•í `%Ùd¦­éDq¹˜«ÈªúódÚÕ+3áB™jªk˜²_³éË©ÖLpö"‚')§³°bÈθTuÍÑã7Tê}Nõ¬â“n¤Î»òê„òó;sì°(¡Ÿ`2f«N';ºµ=¡p4oäË’N.¶aôK‡KÍR+13¶¯GåºiågtYÞ"¸À÷¾Dö9æÐ#—~ãÙ¼1µ¼hæOf®Sdx?ã_ö(‡ãga‘»J=‹:ÕZ'ÙâRÍÌËŸ53WÞªþ¤åKé¡ÔñMȾ #.›¦^)îdáfÚõýÀDá5:ZN0»ö!ÛqQµmFµúÒH©†y¸K;׫ îUl¡/¬×Vbuç]5Ü »%àiRÕ'Chó’ê|Ì–Ð)¤óôª;kä~¦ zì®16~ô¬qV¡ÕûjÜù`Æ“I6¢BïÈ!®ÊKFËÁs„ŸºFõÄ^ñ°˜Þ@E 4ÃhHä1§5ö TŸ åÇayBèÛæýºçøBÆý•éõ8‡øÎ…Èq†Szm˜ù5ï‹‘,u·3qWŽ<é³½ž5Ø&Î’SÙœÈÎ×ãV—égÄ…”q2î%Ô¸üv¢w(>Œk\§þØaJ·RûÁG,d,d߃ùØŽx&Í„ýAwº˜ë¢n£sÓõÍ¢}°ÅÐ8ïPSso^•Ék¨£H²}†ÏÄ·2Þk‰"RU…tŠÐ-äY£5áÚõÎ8óã—y÷þ‹¬ÄÕ„à"l¼HéŒã2Ÿ•‰9;BôKÜeþ«Å•$º(üdc`g¸Œ;£²Šc}EûÜÔF6Æ!QW¨Ô©Í•G?}»†fÚGñÔÀ¶&-dØËÏéÀI-4^H¡¹ò 1v)ýœžå*¢´fë³wÁD+Ý_¹¡#ð.Œ á`œ]Ž‘ã²`x«ñéÛˆõs•‚Q—TŽ/&Ò výÝ×wmcå¢Ã) *ö¦—Cs?­×»Kuëzôh[9IÉ볊CqŽ©bf‹Ð^¸Üoð‡é.U—Ž3›?}Ëèᆦybñ8‚жøc_¾¸‘ë»z”DÁc咽 c,·¹ÓÐ:âó8œ1æªVå>Œ‘m¹Ýú‰G÷"¾ÍÎRUs¼Ú˜* 17êÓž™ÏÒ¦½æôY‰äƒÉ§Ø[–óZÔñ+ÈFñâqe櫃 ˵ôt ÐŒ/‚Ãüçº9A„ä^_ ¿3P•mM¯øš@/õ‚I¾¸—ÂWÆ;Ø‚"*ciìÁ9M¹fç=kÅáiƒ'±g9•Ûs” ’è Þr|x}תæ’'DÅmqEd¤æÚöÖ/YÚö(m#)~=&,8i³É\'lLöb>YyvG}Þˆódñ° Óa¿ö–ë>œ’NCÿü¾—]o_¦£‰sºñ‚÷¸V½¬oMhBÇôÀ·ˆ»lÉ@ HÇÇü9B‹IiÏ?Z‚ŸB§¶ž|Ÿd–trÛj¸¶m'v¹D§o/„-(¥#uô7—^ú¿bžÝc óš`ýàz^ÂoYF»v&3¦¿‰C¯T†s–M3aYŸ9ñ$ ÙöxAMBgó²ŠÉå}Èá<Ù-kªÀ©f–†Bûð1k×tœîŠçþ¹ÇUa„©âªs/†Ý/ÀÌ"ØkEPh¢ØÌûà ½Ô[n0˜ÁS¬×\Ñ'WY@­,„'m)?sá›gƒPŪY^Òa:ãQõŒZ”š­Ü À$º:KÝV÷òüÂ>k_¬r¸ž:-L¥aÚAâ[2Tþ&S·Åz¾jõ.ÈDk¤¶ ÷ Sê·—igÏó¯ëäÆ\ª¥¹¾NöN>ìã~ €q­'þQ•1 ¶óý~4hô–¬5,ªÚh„cǵä´g"â~ùžyy[Ìœ¨0-*Ùogg¢ñãVbûB½<ŸÆÀ¦u-Ò¿ËíÅ ´{Z7ÃNWcc~z¢ßwŸÕP{ï‹áÓ»#žž,t®<“jÿYÉ%aÛ%C2gß“‹K°´K ì_ã¼ òZ.ƒ«ß;º4©%Ë–bü€ëZ)6ÿmèìiž¦ät уåªÌ‹eaV–Uwü'ò@¯¯fó)(Ô“c%?õ\d'ž*‹p­Ûë#2ɳ ;žñôÎŒcF\,ߤyÖ%ÕPûíãe¡WÚ»ŸøiÍcœ¤f4ÛL ¤âÌÎÞ+^.§ÌmØ\¼ƒq'Œ©Àå8Á&ê°Nøf §:/WÅf­UÒœžRï1 ÏU+Oc»¸a÷ãp‘ß>—øû]¡‚ãO âF¡{†Öqñdþ}身ÛAQŒ–ßC—D3a½ð}ü½ôlYx°Ëh~÷à˜É³Â¤ ´W>ëêèý«æ2!¹i?¿ÀÜ”Ÿè ¹5:ÆxWvÅ3†h—Ä3<°ÃvàÔïIT}}´Ró%i„6ûH®Ä¶r­Ó§Ò#;ú¾º‰Çu„ê•Ö%‡ÛPsIL4ùžrÚ¥:žíŠÌ'š”î-‰)-®õµ«’„§‰·`Y÷9¢¡4j¤mË/ ìèÇÄïO=ýòÔUÛŒ½úpRV2*xüa_£bÔ}ÿ÷=õÖ.g†ž0§W—s8hh›¤Ûím¢­âÝ.tQyd¦†¥£ÅO›é$ÅÓaýòcœ¿Ó'Ìk’—OÎ=&U1Jap¹¶ÖŽ’÷Z£.pvMz“é|mì·0.Áî‡&Jt‡yÏTqgª $ =G×8äyÊôÀ †“¿˜Ÿ(sy&òxö6û#˜°‰„;sØŸmøŒr>ˆÅŸ®nZ9*÷T)ºy¨ÆÔÝ8"+ŠÔ#ø!. þž%ª[ìºÿ¢™4<ð"ýåAûåþ¬—{§4ºv0ý=¸ß‡úöoO?ÇÅ©È0j Ëb*æ:=³“Ð(Lجò=¨ƒjB¥d™ùMCz&Ø.K‡ ÄÎ×”JpÄu´>U¬ÍF¿féoªŠxÿì³´éÞ$„°ä›ÀÛý}HL vÅÛ^ºÙaÎ;£kðNÃ&Øyíë¼é2ªŒ#¶®‡bÅs¨„\ÆcÀÏ9>žk,°2F’0‡—N鮿’(2)™]¦¶¦¶é„ÓÀ?·\ ¬fx&¼©¾yFRàtMt^^Ixj½v¡ÌÚ’ÎL|y¬¬jÅÑ¿–'Qö²Þ 7LÔñª·8:¾XÛñŽË–û̸ˆÂ`¥Þ…g)‘JÀÿIíÁ‹çQÜ}›U ¤+éxÍõÁ¡ä\ˆ8­'ÝËr•:#Î>"¦³"'‚u´­Á”ÇêD µ‘8ïçÍâð¥9´hÙ –VêÈ60×r ÄÛÄÚÌ“WóäÒ˜»‰U\JŸbƸ$+çÓ/¹K(DÕ„S‹+\öyàeÖ±õQžC F½ÛÓ@Üpòó†ÆÓC¬.¼OF×$ 'Úõu™‚–9Ý8Þo }'œ6;ô7±tÒÇöòˆ³3öaSÚå&FÓÉsSoÍÎÕý*j³ºþ‰(÷ åW_…ÚœµâÜîëHä· ÉY¼”ï‹I¯B ÷¢ZcUÐú¡;æµ`¹&öËÈÞÎh §)õ8½Çj5çøð rtÈ ©ï±æyØë)ä²¹ èúIÆà®VÅήÀ`ç3Æ—‹'̳dŽû ³êO#Ú^+þH× ˜û¾˜²V*ÍIº% Oé?¦íA?vÿ°rœ)Kq¾UÖè«S3ÜÆš‹fúE/ZÕ禽š©`ì0õ½ÚعH¬#~ÿ2tÃB=x,œ“)Õ‡fÐT‹!dØ à¶DÏô™"¼YgØ€IB®!— z4áÉZKu½ítgYžºÌ…»œÌÂ_A¹b–ý´mi&k¢§\)MÈò"[Yh{Ø«:¿ y\¥ –(ɽ£hó=ű­TrðõòFÅE/» ‘‹Ámëx¬ÒG [”²»ñY׃D‡Ë¤ŽÙlß'Ÿa¾ hiîmí üzNô/Tâñ¤qásˆTÝÞøî‰þ"};Úç¨ Ó;)ø²Ãko^Ú\§=5dÓJ|,|>©=w½àm‘—Õû¼Z/–ÊCß]UpÔþ®y­A}?{b=“!9`×¼þ=³yÂܨ¹Ž¿É©¿Úé°ö<=¥e°Õ]Œ«1ŸÇh•£3‹¦Y~[NþÊ4­l—NV#ZÈ¿OýÃÕÕB“9þ:¹;»+o(Aõóm™aÈšnÌFbr¤!‰â“a¹ýý_øk$Ž•Ê£VK‰ÀÀŠå4+¾Œ|äË¡ +ænÌ2k?ÿŸç]u±¿eò™f²ñ§ÙŽe¾«K²rkY5O Ê~¬9ó(Ú}žA›.¶1fvÚT¼Â,†Ë!\ô¤3^à¹$àÁKKxïg!Þ[Vo¶šô;ßÛg˜£Ó!9ÏžÞDŽé§ìêÀ:&ÞÁÃÖûèlg– ôŠž$7ïÛ=Î0’zQqñæ=ÿwÀ+æçK¾¥@²ÖüLŠÛL=Âxøªª5Tf¼n”gÏÜ”US†L‚<Ÿá7MÖ–„ÂŒ›‘h¬Zþ³•LkèÂÙÞKÒÑ ÖÏ0¢GÃOH?tR¼?@ž«‡û"CM‰ZÊϬ­Û\è‘(}ØÕG];YŠ}Ç1VÙÉ/ðêfÈP/öù_õ/#ªÌŸˆ…;-ë§-߈]ÓýCùÔ‰µÒKA~XKJ„TÍ¥R“ýeç!¤n’ðHdåÇ» nªP<>õßêÒ¾‰ÖtÁc-¾eŸ66÷Ý®õ‹•ì&ivC¥×Hyî:ä3}Ý}ø98yÂPÔlº¸÷)âwJÑ ßlylðñ{…}·¨X§T!ÕšJigpmSOuo|•s²kQR0€ð&2Õ “´”®þÔÎ  1”‚¿‘ñAL¹ÎËlæ<ÙZýè;a‹³–ÿ¾+SÌÑÔ}PåóvºÙ˜ñšwI#Ñ —¬I|OÌ%üò þž‡d£5©=Ì3|7·ÐNƒôˆÁ¹E6Ø©šT¥¯DY/7#³ìu/SSYR{‰xIÄ[h%ˆyÚÄ—ÚóU,ÉžLbQÝSþµÑd×ÞŒípã}eù•ÞîÞÖäìÜ|&å'ZüÙþRî³úǽqTÜ„¿ÊÍÑ™U~zh>}h1«ëΜjÅE•gžû¢¬ò® šá óÎjÐ%“ßAÙtD¼æì«»Ág8ÍjI絈Ý͹¯ù¥«4¥áO V¦.ªßEx®êL†*q`T­rê™4ù‰)k+Rïïïm½%¤…Oqèx[N»'t„ù]Êâ8f¿äìêÃ' ‰)ñ€rha£­n)%ÐW¡«½öÙ·OP\Æ¡ÁŸY§¨¾QÛàE <Ö>if>—Øjßî?»Sÿ™à'÷—ÅH ÛöQ`ÿ X¿Œ0èXu:Cl.JZŠÕv´È~ÌòS`ÉCy.Ué½Ý×[–›É(Å™k€Í3ÑÔ^¤ò?¥'ü± endstream endobj 245 0 obj << /Length1 1685 /Length2 6779 /Length3 0 /Length 7734 /Filter /FlateDecode >> stream xÚm–uXÔÛÖÇA@ZBB@dΡ†’îII‰†˜aÀ!D¤é”PnPº¥AJ:EÂw<÷Þƒç¾÷áø¬½â»ÖþíõÀ¨£Ç#k ³+Á ~^>q€n¥guׄAa<ÚÖÎ70€O€—€…E¶B@`P+X ïàP³‚Äü¢â"âÂ>>!´£¡¦‡»•=Ú‡màãðƒ~ÿ"àçØBlk°=Jü]Wjð ýËnëáúŸ3O0Ü] Àþïêtm[ÔÙ ` ¶CÇz8;kY¹€ì¿5~‹üV ø·êÿçoåqöú_ÿí©Š°r†ØÈBíÁžßŠ!îJ$ØV‚°q àè©üe6€Ú‚áÎ(Xæù=tŸÐé;@lœ `ww€°Ø¿ŽŒÀ{€] w±rþ/`¨íkGÏé/å@ #cy®ÿyM¹*Bm`¶¨=@$ °‚í¼ÐÓGàÀ %!`$º /†@‡\=Ïv08Áïá ƒ@Ùߦ‘0(wC¢ Â ‰€Š“¨tCü ò €ª7„ΩqC" æ ¡+hݺ‚öß$Š® sCàãBWл!!Pÿ†Ðܺºá ¡«ýMbh²º!´ëBwd ·²q#œÁvˆ»àßvø_Wú÷Z¼ÍßB'³9£?ÿX„„~[\\n ò£Ÿ ÐöD—ßd@ ÿ£‚ðïs7+ç?BÐS±» Ak³ƒxþ‘ã÷1ÌþGÚÅþD‹r¸‘ˆžœƒ—«ú‡ÚùÑ#súÑmþ)=—äG÷w“ „…¢ÇßAtj¨‡‹õïwoÿGIô ÂnD¡sÂþˆâçG7åzsŒ®ájCÿqKBüÿ¶þóŽ„Ð3uÃ!°?¦þÛææC€ÿéÊÞPÀ?Çë~ÓËo{þ1(ÚÝ‚ü#÷&-áÿq7háˆg°?ÐóñøÑ£õ¼A´ûÙÐù¼núBûzƒáÿJöÏM¢c"ô½\ÑKýfµüÅü7¬i…þ˜‘Szñþþ,ÿúùãoóÿ±Ÿää`H€úéó £×?@L@ôù?=m<àè[@üµëÑkî?lA¯Z0 ¶!˜ž„Ù< v|“–‚xOÕݯ`:ä+!(H- °rÕr,¦J_g×ÞŽ5÷ðªÇØXåé¶OÍ‹ö~k<渧˱¥e¯êV 섆†Ïfû¬ñýš[E£[qÕíëòˆM®¾L¹´Ør5ÏÖîZØÙPês‹ÅÆìÍ'ú÷Ÿ4áÔ.Èšë]JÎ@÷ÛbÈ‚a)šþ5²Ã-õ~~ÒæÈèL6¸0 ¤-Þx¯bŽÍùCÙ& "‘Vx$"ét¤ÇíÇ}õGQû}íßÕ¦™æƒ—Ÿ—êûoY¸ó ÷ÅsE|ö‘"û@mNóÉomt®ž ”6a‹ú‘–žð3:¿™srZ¿=¯S2_g««ëgÁuÈRšºÇ‘{û©—¨ùÉg‚Í–,ÌcNÎ~óäñSýØÆ8©Áë¬Æàø½]ƒØaªO5¶@>ðˆ¸j°e¹½%hòîa¯Rí!µ4ÆÇ]Ë’òŽ´ùS×Ç}¸½@€ÕÆ‹!LM3%]¶öPåf©Â¦ÌÏçÆDŒ£›Êi±Ø D²P-LãvŠ…g2i`˜¿ì»I$VcüÄGœò&u–‰ES2’抣jֺéŒ2ž1zjšs¯$±AXÉÍñîüžª1¢¾­qê†C_œ"8*[r_@vlN/ÜÚ¶)'zó"ÖXs;Uà<°à.½›L£k+â›X!]Ø»ÛuZ–y?Öc›+¤P’’Áüèý–¤Í‚ªqV.Þ뇶y–Ùw¦BØLûõ3,˜i†[kß{‡t¢dW]-¢ÙÍÉS6ð4äÐÊ<kÕ Öqï›gú¸vê9wœh¡@6bOm_ÎÕmAmJ·³@Æ3Ùõy:Ç&Ð4 }ÿiÝGaÛg/—Î ¤šåçT8ªºøâU'g¨yÔ—¼Ò·û¢1#RIdö¦ÙŠE›é¬T;/GŽöpDº7ÂΫÇñ¼) ” 1ÆPþ¹ø ÞŠBfZºˆhq³ÇÒY —yÖÑJÒ¥_õ¼#ÅE(ëË7°Oî9¼C¾µ^w«ˆkô' ¼'1⣕SS– {u-A¡¼õiki“š1Fû¥õÐ"½FíðøîìU¾Úc÷´p\”A  gŸ£×¡iÚìf°ÄüffõÚ‹¦wjá[_²Är¯#ºC«˜¾ÒS™—›—‡UvL}‘[yç'Jmõƒ=À 0þÕ¡XÎuìµ"¥<%Y Yi¥êõíE¿ŒizøíŠG‘mͼ\`Œ£z8ŸŒÅì¥qéŽ`±,Nu[ön­œ¥:¼Ì¡JHæ_Ç!X- FîUâ¼O#Ë*ÃNµ@ê”Tg[@nízØJêì…¾ ¦}•—Ðn;OÒ¸¾øÔ¢oĜ‰÷®]Óu—¯’‘µžGQ\¼Ø}ƒµ¤×P€ìÎAúì½üÌþçÑÑÒ¨4_¼,ª®GÅC߆Ò(0¨n¿àÝËi #»Â¢]cñ q!Û‰¬õlÉ$:#.2Ð " †d}Üã7¨5z_ÅQ¸Õ#~$UN8Òë ‹uÕyq;Àp‘a|*ub6ŽŸHœ~`“²haƒÝÿ(¯š9kv†âÖGvÓ¦®õ…|9«=Ç|³¨y(0Ñ!…ùjCKýg»‘Ü™#u8u¾Þ3ı»ÄŸ#ñøIÊ+PÁQ‹äƒ%.•ý¯Õà²ñ¨éÁTAEKí/tùa¾±#ü¨¯3ßÕ;8Æ:z\üzL4fÈ ›œ&êËiõUó=Üe¤)ºº‚Úß›•êÞ+±!µ½°¿\ß’‰;!SõÃҽꈰ3S“n;£È\Õ2T𤴗 =W¼†GÍÖzK½©b/¿aßâ²Ô·oøeºÑ•²ê¶¸¿êÈ7G<²á”Ùíû–Ô>¤¶É™¿¿ÉÕpŸ7Þ¾Áʮڈµ)ì þòñ5ÒŒ{‰én+õ/ÝnÿBEjw{pl…ÎCWÌ€\‡JCéňÁÝUæ4q3Ÿr´ &q:~ñ1¬B¸m*ÆwŽÞðç¦:Ó~=<ÿàè±@ÙúÂo Wáš~˜ëÿm¢dœ³%²n/ÚZÿ……÷‹ÑÁm©4©0áþÓÍ6O*™Ê[ôj(Ío»± º£Â _E}Œ àvNæœv­èŸËF€~µŸ‚ZW>)í%õU-пÕm=*tü‘yÎâmKÑ ]èžÜÑ3‰y!ÆÕ·©Â/c~F¤‚N^rùð-Å锦êìch”úqóÑOß‘¨%òëÄy[ZaOà—],\ƒJ²Î‡ö‹múÅöiÿ`H2ÓŽþÂ:Â;ÐHa¼ÁëÁ<ÿVTŸZc-ic’vÿ~Gê§|±¨6¹ùüÒwè¢aA3’},g.áÿŒ> ›Ç…ŒÕ2>ç Š»ÿÊ>á)j™½Vì³H'±ÓÍÒϸÎÒ3È ð+¼ïÕw@Ý/( /3ž¹ö^~UQ`ç›y®‰K! >ÉçQÁ_c UÔî?Û[¦çq >ƒãq²ž$³Ä@[ Þ5ÅÙJF<ñp;Ò®L¬ìTJ• ææùæ>öbm.UÒ­zò„[Gªç0«ƒT>¶,BìÝw|núž¼ŒI -òtèe¶S”4jÅ¡äRïü DEZYôŒY]6øÑäb{¤´®X™lA—šÏ×ç@¶«Ï±?Þ*ެzGe‰2g’ £V üûK?:+œâ¿tc^efSðw†ž€] ´›2Ê’ ¸¹m^w’—7ZfSc;´98ý”påñKe0Q¡ÕþúN.!_iã£Ûî“_ë5o2¶.º°Ø¬?&ŸE­ËýäL¸ÐÚXVö¾×õ3÷¢p••ž„_IÒîÏÈ”_B=¦‚¸ HÀÌ1åæeç(º+Áºßßà¬{$˜›‡Û*âN{H‹|m.à ¼[ò}¿ _H§@eY˜‹´2ßyÈb6 "ˆ½çEѬ`Añ‹‚šßþ[¹i¾Ónî~ÓIó  ¨äðÙ-Ôvì·Oø8niFôåi „ä£çÁéñK³¬Mz¬$ŠâÈ:+‹$÷[ßÇI“7R ‰q»Æ‹‘'´÷DÏw,ÈL²'וZy#tøÜÚ8$Áò‡cÌ凉RI’G/ä\ìâž³L}SV`Ùì úøU»eǶBR³‹¨ft-D qó=ò¹:zr¹1B¤<úTƒ®F%dW$$:w:Ppä?·Úç”àé7¼çt (Üä–;;ö댭UVmï刢·î,è6DÄ¡v7C/p©BÎ’ŽV/6©|õòÑéœ5qe³¹Øn¶ôÝÞ‚'Îå·¯|˜í¨ô_„TN`°µ¬žîµ½ Ì™˜•O \z{»ôØ'êØº˜é™é+ñÆavýüò÷ºŸC;µùæÛ]24NSš/¨–“¼{¿(§LúaÏÓd¿|3Û"¦P8  W²¹àÉûÎZŒ›ƒ;{5VÀJ|÷sKµ”k1žL³:å ;”™ý˜­¹ˆÓkǦް´­$4à³Ñ—”ºyÐÙb€ñ]Wú‹ŠǬÁ•ŠNhض˜TJÞÈ0ž¦ÿ䇷ެf&N¤ÜSÝÂÈq?EÕ_-n·{+^ÜÉN—ë‚iêÕvÝjà:åsb2vó¸×Hý’-…ý—ö\bÁkO1ú§8!¾>¾4jýÙ¦Ó‰,w«•Z0¥HìtRÀ—ëaúl—¯rõÊL•éT(ƒ†jZ÷ƒ5À›9à\DWUï‹ê­h ®”‚¨_2G‡ûK³ƒìÁ®TO×F—w¼âB'ÌQÕçß»7òö~#*†Áeͱ¸vÍ´²íª¯ÅZräc†¤'Û EÄN§éÒ>C/³zÇ©³ÖáþKw%7Øà3]ngdb1çãlu+7Êë;+™²#¥k­Œ†Ö†Ã„¬ãYœ’Udó':¸%Ø|héCs§•™Ô© AŸ>ÊClcÀøÙ%j£·‡Àmv‘èÛ]|HFÂÎØû0xÐCw¼Œ“viÎ5¯ÞÝŠ,l¯ÂWºÑýIÅÐmŸ*óÜä1Ù‹Ašð¨¾ ²[b†vþV̺ũzZÉi.­¸ "ÕqS¼R;í|÷"·Q²1CE`_˜’bàsú Çú0½¹š.9]?jnq€O ‚–ÕâNlJ¹ðc$|„484PþCë´ë2Þ+=¹.Mdd¡Ùí(æÖE“ü¾éùÞA¿ÕÜ·nR~käl-M¦·w•ÝFsä½1ºõ)ÅߘÂ_ÿ˜|=å»Úþ¹Ö*jZcÕ Q¼,^ÖD‘æ96›yêÓ5c|6%GgU(ºgääšÀû¤èp$Ør˜U|+™%ŸŒÊø=o$¹!Ž—¡Tu •ƒü^7OËúy/QBÅ 6+ʃ¨ã*ƒµ#lÜd{Û53†:­U¬i‘Ïw‹\H܃•Tü£\Êrµ*Ýý¼ùÌ?fü>o±ÌÂö½xØ ™b¹Æüª½?Ðʤs¯ƒWÌ¿–^~”ó×Ú­OŠUêëÈÕ%I¯ÌvXd¯0mø›/¹#Î@É(Í;l¯K§žB =ÖÈÈp}ú(ßíyA„óŠE˜¿É➬4í‡rdpx¸ÌýÑÒ'Z£¡ AÏ/?óyªN"cQ˜Õäj<¹÷¶sedÔîbÎÁûú}ßë3Ç'R9ðQòdkü¡olÒÜÑ»¨¹)ëMç&ßMo(u¾ß~;—º}Í‘sâá +Ôf´ë2F50¾æÜf‹¤îïµÒˆCÔó†Îò |Ø9(À˜éö$Ä…¦ô0t»x®Á—ýl°%Ãyk·m[&‚Ù•jÓ$†¶zPJ™”À(Z¾·à­öî7!£¡:üŽx{|ÃÛ-F‡šW<ßFcÀÙ@kP˳r)€íW‘ÉϾ;´„â8Ž4 p±c1ß§®Ëk¬>ÊtmO~œ>Ìx¿Œ¶Pf+,Ì{!'c{Z³ž`÷Ä}*Æ6w^ovÊ2ÄÉC›b-+i›Òw¦®iwHݼ]_¾ º&5ëÉ]öÝJ8†Ïß]= xÕCnæÞ,ÓëÆÔ€ÓƒkÙ|ò«i½¢*Ó¸ŸÄ["û›ßmÓ Ÿ+‹œ¡OÛ c¯‡«8“ ]4ªaL_i}${ÅÓïXˆ\'œ†¿¾e®YR°béͺ{††z§Ù3¡þF¶¾^“Í·r&…Èõ¡ÇòëÔª‰Çžúô2I)®°ˆ¸æ•/¾äYè·­»×ò-¡¶E! ÙË×P§˜èüžO“¬zAůL›¼nEu¹kËØÞ~f;8,îÇL‡Ú6Úkpp7RË·\‚‡5YÎÙK´þ¾¸0Þb{ª žK㕬HYv^w”ßOâ·;ã3l• Æ^¥Öå}¡ƒÄì*@ úü‰£ø½FlœzƒqYDÞ).±ªd)¢‹'/Hª+¾V:eoÒ}9Yu=1^µŽm=®•ae7Ñ`dðÁCºl¬{X;/Üdñi\.[ýgC³×žƒ¹:!Q¬]#“ÑQÍFìB6$\šòŽÕ,9ê ÂP·ÇÓ+Rt÷ŽîôR`S¥ /´/ƒÂ4K?%Í<ûâ?ªÛU»mϧװPU7(úÍ=}¡Ðq=.3S:1crŸ+kWö wp¶Ë{)P?guÆ#+Y¢qêl["½ã«h¹”Ž%‡:§L–øFñÑNjø€Pî©jQ6íšFÍøƒ™©•Üáð(ãäÁ/f]LUq®2õq¹ñW˜µ-é‹W%cTÕ.ÃKrÌÁMeÙk‚m‘šð`Ú; ¶Zª½ÏÚ(··!3Í(ÜȲ£¼-‹ÕgˆDÏMhq¬íüevèÄá¥Y;îy«Z΀òi(¹§æ9g^é'Ô5A6Ô÷޹†uÅ '~ %¶ŸŽVDœkÍKc˜u|6Âsêôt¤â»=:H‰G–hÞfJ¾¢õ½xÃÅ‹kÉS¾|»r=©¤yÏÀT²{M2•)¦try]êJkî”xng›S½±\¡Œü åÂi8<|TLŸzñ@<½ÇÓú+×P¦„¨ îX‚`;rK¬u%…|ôõø¬ÂjGâVdŠ¥Av.ÕÏ$׃¢ —9òL½•¡µãð¯tÒæ:°è¼t_õxƒ}ö5ÅÈ–›²Ú¾’Òï¦wl¶+…Ðpè÷T*μšóß8º®»¥ H/ý-ÂTqåT#h­} ]¨§û".lŒuöÁeô5ÞÙñŽ‚`œBrXÚ» ƒ5‘j]e4«&²eúÊo¯Ý(Û†ÌÊ´ÕÞþ2öUž‡ÂËa¤ÁÇý¡ªeñ«¢š'··¶i‰2³FG@¹¾©ËÓ¢–8š’bç£ —;†ûÀWyt¼˜ôËôü>á5ç"ÞìQp&­ŒRº€ÿ ‡Š£ì§y÷_#1¼Œð¬;‹T’YvójŠÐ;JùU~pj¦g(,5ïÀ†b:(÷»€VkÊ>Ûóo÷m råÌÐS*§šèÏ¡FÊÈr¸È©šf«Ã-ËU1†°o}š ÎÏ·E,“I[…yÔE}1ï:?Α®z¡‰­ö’(nAì©“¬ç&¦uDó§; ÑO _¾Q ·ñ³›œëEÓVc‹½=¤VOg›~lk²?ŸqE{˜V%„ï®ü@Õ‘.ç>Áyµöñ&~s6%z¹Š%Õþ¸@ªÑ‹‘4eÎMaHW÷É×{˜ÝJ0vÏ{à3/M¾¡ü~›ù£@3¹Î†zw¹·"£ÏÌÄŒY¦bK^ÕÝ|c{ Ùè¢)—o/µšC.Ü\˜«ìr‹«f {ÎÞ¿í­ê¬Üzm3+2(`±¸u"R}W²ß—Úâ¢ø`]¬\ü2×s­µÓ{¬™®‚ö:X™DŽ´?Q,¾5쳋}—©”cHŠÈ+`“vã`#ô(q±þYæyO *оè©Õév{³ÎB$§ÝVM-Wø;B…mö{çìWí.òk\CÞZ•jÇ/”|¢ƒ¯B?Ì«ˆT$ý–žƒ} endstream endobj 247 0 obj << /Length1 2812 /Length2 23014 /Length3 0 /Length 24623 /Filter /FlateDecode >> stream xÚ´¶eT\]Ö5Š»[p îÁÝÝ w w$Ü îîî<¸»·@àVžî·“îï÷5¨b.›kϽöÙ‡š\EIÔÂÉ (åäbbcfå((ª›:º±±2©­ÜíM]ì̬¬œHÔÔâ®@S“£„)ÈàY”ÍAàTp++5@èt;-fÞE ÈTÃÛÈ 5ý¨8¹˜ÌLÝÀn £•#œ"îäìíjce ú]ƒƒ‰éw¥ßÙbÌ9Ss;'O7;€©£@ŽY‘ ää 6Úhf@kS{K€“%@¨ÐT—TSH«)kª¨Ó1ƒ «»;;;¹þ»qu MiF€„¨’†$¨ÅÖT×øý­t÷oÅPÒûó€§+JjˆjèªH²±ü^€ àtu³ùMû?½Ñ€;üi œjéêäð€Örægañôôd¶rw1;¹Z1;ÛÿÓŸ†µÀÓÉÕþuÚÿÆÝÑ,'Èø¯¿7 `cttþN’rú—Ó,%8 lý§1° ß5íÿpÿ‹ÆÚÔíŸ\€ƒ©#èhêh™‚ÜÝ&ÿØÀ@‹·ÿjwwuýÍ¡ø.×ÿÐü_ëbNà•Øûú›zþ:º»ùü¥Í/ÛÜÉÑÍÆ äö¯Š@€¥=ðw÷n¿÷ÌÆñ›¢¨’¬”¤º“xð™Àê82ƒ¼@ÿDÿ®'*¡Ààeå°ñqXÁC*éh!îäàîÚ é·|6`@N®Þ,ÿÏ\Û9:y:úþ¿vKG ËßÊ[¸;³h:Ú¸¸e%þ 6!ý±YAVÐô2·fùM÷Ï´ü6³ý6ƒeð÷uvrXšÚ»ým,à$_7S äêô÷ýÛñ߉`ac:ø° ýS]ÖÑÒ À÷/3¸“ÿsý{hÿ9¨tàSjáähï °Z"±(9ÀAûÿÏ9û.)w{{%S íÿJú¿q¦6öÞÿù?ÚÀß½Ò*9¹:˜ÚÿÏÆMÊÆ h¡b2·þ—°ÿ²Ë‚LÁ³/êheoÊ?&ÍßÇÉ<·àgÍïG€‰“û|à‘4·sº¹8ÿ•Ëð? ƒµÿÝ.€EOGL\S™áÿ™™Â$Í,l­ì\ÜSWWSo$Vð °sq|ÙÀ3môúgR,ÌŽN p ÀÙä°trEú½›Ü\Ñߦ!n‹ØÄ`ÿƒx,€Eò?ˆ‡À"õ±X¤ÿ ‹ìÄ `‘ûƒÀìò˜]á³+þA`v¥?Ì®üÄ fWùƒØ,j˜]ý³küA`vÍ?̧ýùtþƒøÀ>Óÿ N0ƒ)ø‘ájãf÷'œ`öÄÆ îÐ <šàSùŸ°Éü?ˆ oîdÿ”åümqpøCÄÆ ^™Å_,,ðO°\ÿŒìŸ.p¿ ¸Ï¿æœý;¸¼÷±Á©>@×ÕþïÇ¢Êïׂn<Ö?ÏÉ¿/ýƒÕA®Nv@m ð»â_!Ц W/}VðuŶƒ?ÿ÷ŸáPÿ¹iÿÊsòòeâ7ÍÄI6N¶ß:súÿW®ù¿^]þ¹*ÁÇðÿðï÷è4GZZp2³MmŒ( ü2U KÍÇ|ZŽ'¤#³”1ÕN„/‘»M.nʤ)pRá7 HvüªC†kÿ²Þ’TñíÆBUdÇ4@1€MRt,G‹Y3$Sq1¨´“‚îH.'_·ˆs&³5¾• 9v,Î×ÞõÃ>ùŠy•BaPÚºšëY8ÇÖ„ãj嵈AØA´8Õ z}ÄùôÑ´Wt‰~Ö$?oLι§ {òc¡ðÓb×›3cX¼Ø®lþêSº„ªÈ«ˆƒö¦2 ;ÔC»¡UOŠã¬*.—‡¹’o’!UFϾÜË |UšIfoÈ_êײT_E~ÌÔ©ƒ®Ç ûðëy¹~,gƒõ1„û6?Bxv;oŒ<„ãöÔ‚ mƒ>Žmë˜ÜÇ®µ‹,rDG‹s€Fo–ìé„M0ã-BÒ ©F”S¥œa&L[ìž`Ã¥øâ—&Ÿž–”ÊŸ'F%ÙázêPNëûÅZ³¦”Þ§)-lþŸ5'…&Þ{öyßõ>™±à؈q!?U½óßòïïÝ­ƒ©:o¼ù¢Pmj¡kçI€ã§[JO#[KPkMùþQ<ñ›"HŽæÌ˜!›–ôš]LçÑ|ºÀd*¦ +`ßA¤oH>­”¢¥Â®YûAÁè—lHW»Š?îFFßgd,Jô… ¨þƬ2d÷‘—â åBÛÈŸ†™ÅÚ;.ÈG6\g¦X:g·L«D2žh“•nmq·ÊºƒõV²¨ä‘Îå34¾åçG<)foã67D&IÔí‡>—&O]ª!¹Ø]±Xáµ6˜ ùU`^Tèóq’fh¿H³kí6×Ò;"\h–|ŽÍ©m¼‡lg³TL~ñ«Ä³ˆ…–HÑh¯v”ø"üöC4î½3~§;ç ¾ñ·*Ó gv¾P«Ú°©êÒódÄ;vuç°ÎâæŸw}1r®¨"^Ýu ÔMobrÂ;$jØ]—iŽ}zù¾lå¾TÍÝWŽL²§äjÄ©þš(æ”cÆV¢5´¦‘r 5ž¤<‰]BËp­ÁˆðY÷Ú7Õ"«?~û4†cn¼ê\Yƒ£þb“»* s ”ÿô]H“{‹õ'œx/çØFóÖèåfϼ {z.ÕÕîwÒbì1ð&Wê%(LcgfÈÁ˜BÚ"B“'ĨÖERyš£²' º¦ë¯ÝHœRð¶åë¡‘Ã7ÞLÎaªY]DŸâÖ‚©I\^A®\;?PS:)Ù¤‹ªOînYF“6îšú>ÞØ¬Ä¤¿‹üñ¶ úñÂä4¤–®ub¦7²«æ’ X®ìþeE¶ ÞØ¢¹®eC&Éî†ûš×7‘rEãfˆ|×­Ñ…ebÀƘCÜ‹ŸÒ´Í¸^ÏÌuYiYÖ«þÍŠ'E¬ Wd0÷øÙ­:]Ê?·eáµ}¬•õ9â?Œ­šžðÌçi¤ÛóLìѰ#×4n‡;à‰•2Üf¾ÒòQZ/|¤=3™˜D™Ö¸¸{l.ÅÕÁ—ÌÙVikWL„ҳݻøÅ1cs„à©©Ošq—4'N§k=5FVÁ H°—Ð| Û¢“î,!²A/„ ºŒd@±øH@&[-a¤ﺅ÷Þ §|~¦-­ˆLoøá=‰µÆ2P8#¨fÆÚZA õ:ˆsóñõbouþ îTÙ(:þ‘z¡¶=Ù™î<6Œ#™Á&œÚB÷ Í‘;åcì6¦£± u¡ò^äžtÀ†BfÏ’ŒjÖ‚àáN4àunxÓ~>¬ÁSÁïRçU ñP'Á›zã}Ûë[žI{–æaáo2p¹9„µÜd ]@@.±…æI¯ÉGµ ˜`ÙÙb!ÍÖ©²ÇéíÎZå3«¦Åº#ŸÒÕÛ¥ŸÞçÓ ¥ÄûØaé‘»àÐ'ÊÒ”r£y\¡ c…B-4Ø8^_èÓ=Yr³Ç~0¿s›¯[=Ž•9lëíè1(­FÒð.F9Ø];)µùµ 'A†~(Å4Gb5»–¸þÅöÞzØg¸ÈO—çìõe°‹+Gæ-œÊÂÂ3Nˆq,;3$VÌ^߇¯Pº* ×)žMCƒBÚ{€Röã¥ýâ¼¹¼{:7Ëjæm\å6Üä‹2 ÷JŒšzP ‚1KØó4[±)®˜ydÉç?:¥³º„™ 6u&($²z뀟֚âÛØP%Û˜¾“ë}š*¡Tž±pzrk:íCŒU•Ó'AwÔѱHیŷsA‘±_ª5Gq¤Ïþx¯TÊ=B©˜ŽÄÂ+–i uz¶i@|UÚS¹ 0ý!× >ñSËp¹B’—Q… Œ€Éh¡Î ãnòò–Ë‘±fúùl9>NÏÈÑ”íM”PŽ5ÍÄ;<tý«xøü»ˆµ·æütî“á18\¤õQàÛ·è¶(3:»F B>ì[ QP4+(x÷Î,± ˆÉWÐ{x#·áñó÷£k…ßÿPk’í »QF[ëý"”:kÛ\´t`íF£ìQ˜"ŒšºÙÿÞÿ¼ŠÐH»Sq¼d:›±¸&ü ‹V„½¦Ë዇G‹½‰ª®›â'Ò¶K¤nþgkŸ~¤ïþÕ°‹\ÕŠ}´*¨Ì–¹~Úç‹»G‹µyO:xLO8zÅq 1fXo´`ji[ Öï]òæÎu¿t/™Ö àúõ`Æ«²D˜¤ˆDþÂPVTΚ얧 ¢XWR‡°yW½¬J‹èê¾ÓRd’CÓñI„´z‡#ý‚Ó÷­»n™§m±·ìªbNsºóÏ-´L3äb ÏwÚ4!“‘[I¼Í«·±<)U§±ißc!›IvŠ>9]v%ûŒ£Ô_ÓD¿g»æ#ô¥³UÌç3Y˜Ö–§B" "DÖ˜ð‘`÷:/×>ïV“­‹†åÙž3 ¨ŒÖû&èÒ/Y †&Qlè!ö„ukn™64~…Å©‹G@²—G¿Ãq®\ëX\K]FŒ3@>Eë|ªjòæT 9I8j=CH“„1Ó=öŽJÅ^#Õ ¤U'NvÝ>Ÿíì'Ãú˜-Z9ˆrÚzC+puT]lÊW¦v³“­¨ Az·‰b’˰E¼‘ó´óE&Á4ªc͈¤'tTšÐ|àFŠú,Î0xÝ\ìžìkÙbÃ%o‚B¦»’—÷9õûQo0\XÉéù± %[àû'‹PÄÅæ–;]ˆòÓïn9ÉróߺøeiÅ—0wiñŸØæ`µÆè'Õ^“£»°–fL1u×aàŠÝNØÑ¿÷KÆS¹2JÁ7c¾ñtu÷1¢bÎ"y±ëɠ͈{XÀ¬<7Ë<ÿ¥Æ72ŽÈÓÅÁ]ƒxÙîPy1B^å³O/`/êÜW o\ê´3Cj@@{ƒ(©Ž8ô}X£¿©¦¸éIBA];ÿ}‰Þζ -ó-µZ:jðéÉ/š"mGšsÖh¾sómÃ:}¤ÚF*È¡œ‹›üt»ŠëS9Q†V_a›¦JÒíŸæ!²$ýé¼tÐñ9•k ÷†úÜ][µoË8á,y•%ÊÞ~Ésð4™ÐúA^RÙ9~Í3šºó¸$ð)iìU#¼çj”kè ­®lý*Ê`ÛºÍ0¬,À"JkT& ¸[ ý ÔœÝãô8Ý,°›¿"kÊý Él¸½ ð:N{Ê ¦•Ëúp]u'‘]Ó«¨‹·ý6{Òœ¼?9QigÀ t¼RÆáàmÿ\TQß‚ Q›9Sþüý`Ò§Ù7v”J|Çbv{µ´.ˆŸ°1|”¨MØ#z Ú.Xk8“í ~.ÞrJR‡äÎ&<³±4QPnLX_ïs¶š¢û*;«Ó~ìg~ÄþT¿}}"ßqíü¹oÓ¡Øwà˜[ܦȆš± Ý ÊŠšÑÁ9úV±,ÞÝi§T¹=O:3HúNýk¿b‰oªºŠ{· Õ†–÷IÁˆõg‚áºVÕ‡öÏ È iS:´Ø©Ý$ËõÃÈ“_ &øu©£æŒû8î³¢™­!ç2ˆ7/gTotUá°g @Lcpc¾hÉ’ÞzŽfø,Ž^_ï2/&ü [SÜç*S)ÓW¾òàºXŽÌM„Ó0¬kÍ㼘žGMë¯  –3lÑZêúÏÔ9qÙ^CùãÚ0:cÜèI€û}ü|°I¢ü4¿@–í1é”YŸ|8E¦ž‘TxM»d±è‰Àç¶A= s¦Ø*øˆ¢Œ_+”~Ÿñh”¹±|}]¿l1ÖÅEž¢¨I„F°?ÔÛM|ïS»žR5MÛð“ÕO.4Ö1 ¯M§îþaD¼Žr†@ìD“<ÀZ c‘è£OxjK]Ø%°¾Mô@ïsïPÙDò2 ·Y”J½l®y€ÿå¸pØ9¢‡iáL|N°#x÷¾É’ò‡ jQ%è¬`¨å Ú^5Í»àv'éÎ58±7cÃ@”Þ$ü2^åçÎÆÜTÏK7¼Žþ@/¾ ,õÑ-_)ßÜ/è±Om´á‹¤MÙR0nb¹íY ¤®§òkϾîÂ2Ú>ÚiúÇ#”Õ}WÔBw:è#ù3nÆ‹¶ÃS”teR[aùìjé–äT1V´zýŽy]λ°äÏZ›yN‡+½ðgÇEŒ,þò¾.X]k¤ÉTV¹Õ§ÆÎß—%lùóŠ&=Ô…Û¨¯M@ÅèS“^Ó³g˜‰Êô;AõÝ )âªó¹j®»ú¨7œ÷•8jf»ipÙÜÔ¯âEÈ8Õ÷̒‚ÇÁ0Éüy¢6ïÇÍr„Š>lE2Þk_(uˆÝ7mÆS ïûBÇesê%ƒ1|ʺ²ŽˆßR=£ce¸Rµ:t¶d*AºB(02 ËçñQ%79q'W7ýÌ“a,†žðëtM=«^àdz[Vì9iOhe|/eS‰‚Zí ‡è®ÐÖNe'èê`’”éktÔŒÊ3u2­-Cl©âI]8óÑ&«–¸‹Ô™^¼ëþW^(s¬OYFÓ]òšì×—ÏXu™”©SÈêC>2ˆ’É:éë#AØ5áY<¬×#]#3ç¨+6ü/aT¶5!ÞùµJú*ù¯æœÌ.$âïfê oR?YY#Ø>rÝãÝ23|¿Ùœ,{!(×'Y”…ÑÓž|82yi8Mnœ‰5hÆ]³öì=³Im˜8W¢SzBà“_´&¡ añÃ奱Áü‚ ½««>4²é.­X;;´v ;n¿ÿ’]ùyö‹Æë’\­\|ªì9­ÅrU/g&ÄÁ²ÄátiÆØœ+šëcÎ)³Å…;à[ö惩Óx¼ãLS\æ2ïîD@eðö¡³ðšØ³˜œ°~ôRÎ=ÁÂÀk™dwËq?€¹‘)'.-ªÍ˜=b?‰uÖÖË{ïåX÷…*Rï:¤‡&vúD*­øÒ_ªkŸ§z_â{ÐÈÓ½´ ^übOÅþD$g†yÐMcSºÈˆÊ2¢k–äÞ‹S«ÏÄæ‡T¼ð|ÈLXÃà‰ê¸‘Ó–9­ŸÎK Ã9øèæÅ6˜3q%Iêü)ú¬ñy (èé‹ÖtØT;ŠÑ×ò‹*mQ¾\Ñ"EŠìRÉ™h‹üëÎ0û¯>b\©.ͯîbVžž|Ïb?¸©FS5ú‹ëºõ=u± ÛÞJÖn™¦rz`nì¿û24Þè'×Yôž„µ§Å†¬aþ­Dz;6ü!£µ¦o¨õãJñÓ¦ªºŒWæ6ÀòBÚ—S]° ±ýøÒá JÑ âœõ‚4U3™#ºÜ2€péÒEcnºqîŽ!`Ëô‘U³Oœ±«•.§ÑãsŠNÈÍþ×-ã(JE›=xû]VHž6¾¾)çÒ]™3¶Üæm2 xÉÜ2ËáK}úœzÙäÍP3îõ×­¯A öÖ•Ä ûküKín‹?JðdìÇ%m|ÚP)>(•Ëá !ƒÌ­Y†-9tŠkaCi½œ|eåâÓ÷ä±ÑÕ£¬½¦—jðºw:€ò|ÿv¢çH©µñ ñqT®¤Êó;=*ó 3w~ïÆ°s^ÑŽÈëVû“ïmn[È=¿m:Ôg}ƒ«öªwâ$›/}ˆ„O£?ºŸ„ùr“;¿!ô¶Îù„݉59xKŸ?°SÀAc¾íȽ'S¼(z3}ä[º1HÆàÉÂ彩2òR¼u®Ì®ö‹Oðâ>‰˜È‚tݾ—0pf2ˆ /Ãý„ùŠØ)Ôõôº„Èeƒ’mÝKDƒ+FŽÜeéì)ÿ3d¨:¨ʼöÄ7îrGÞhñqÁ«·7ÒÊÐ WN B;^AÒœ{‚Y‰˜K‘¦789ï¦ÜL€µÚc.‚4È©[€…Ÿ$¶â+Ïn/z½NIáàSKöä)Þp/”½ôüz{Y¿Ž‘%oÄi:ôÙ¥#poŠØük‹ô…9ZY,µÅpHTîk9ÀÓ)goN¤ŽMDÂ(í¹t#È/ )d±;-¥°^#4¤æ~t½b\xLÁcôAÕïVˆ,ô‡å$)ŸòýH²5‘¾òJ eV––ö5C¦s®è&ÃÎ~9M M‡9®MØ÷1ˆKp~'[‡Þ)¿´˜ÎTú’i¨Êòn?½`ð€vÁëÌ׈´h¤ÿ¤O¦émŸ¼ûä‡A7…æìDX T-ÌJ‚²ã‰ôÃ.Ʀ£— _ë²>©<އgW^G}íIÞ«Ö/Ç–ðôºû ÂqB¦òšè`„æ±1ã•™êšT¼3+5ý*<­uHw)¥m‹dG6IÞOC=Ô6xýÉ<¯}BŸMV¡ôß2êÎÝšk¸õY˜i ?I³]2b»7`, ÅÃ'ëU·›å›%EBiî–˜c«e*95ñ”~ó׉Z›°tx†¡J“’Àž®’dÅ¡ÿð÷ ºšòXX€k=Ç É5£ÍæÜ…Š%º*PšhçV“wJ·].ðÁ†µò±+û¹uÚn…0ÝGåí]ÝœºÖFgõ%­E-˪YâêÅ=£RÌÓåwsePj€ýÂ’Ñâq˜ØàÞecªSf·mY°]±_b妡-ìå`Å Zë–O’¤ ÍR±lñ0¨¤R8ØÅ¹ñÒÔ³•ª«׎BûãÁaÕîšÖ ©œ>Ìd¡ì uá¦ù„íh ¶­>$µwc²•AžäÕcY°VP[wd}NB/V@Š]`RC|Ieù׆“°ƒ©pDÒ—àõÐ6D)gYo²,Ê 2¡JƇ+Ê]7Íê÷ðÅ >f Á4+'y(DÍ­Ù¡%Gõ+“H® zuúü÷ázã-ïì&l‡„0¶VïWêOz„M»KPì¦^xܰϸÑì´¥Ö¶+‘5eRò^ÓGAµ7ô¥ûmw›;~-tN[NÊ¢úTšÈŒÃ &ÒÕ’—×óÔOžU{練?¼Œ*7‘ÛÈ:i÷âX]m[ï\•¡˜=f[nZTËVö;åS§¨ágÑ¡¥ˆl˜C‘[V‘uku?F³šµ)ê,lžÓPc;©Gጦ9ÄEÈçqÁ9 „ŸÄ+ÀðbXºÿ@ðà7ñ»G{RO¾7ë[ëyŒ³/«sÏ¥/h˜6†}Y¶´wM¸")áãz„MîèP|«–úÚÙM°iKî»Sá]±Ý¢êå=” ÎéªßÚ„(ì=jHÕ-¾Þm8§G,€ò#w•J„².>(F‹Ãc¢ñG*+㳘ùÈ8õo<ýh#ŽD÷>Ðûv^è­¥X}°_{–íŽÊÈy0+Xÿþãqav£ßUÛ¾ä1a|†VÕÒ.ù” Ybd|x.ýu|ªï ¼4ºá3Ù„OBÌÅoì´ ³Àj=3D –OÅYÔˆ¡û;kóƒH&¤x%C/.ž™¿ómþÖÉ!­ÛécÃ/¨¬˜–78Qñ}êá 3¡± Ø­Ÿ§k?]7ñ¸æÁÑ`‚! ÔL|ÇÕôzp:¡î)¯KÂfûêB¸k ߩё›4=‘`¸Ú{Jî{zíé­'6±!m9Bx]z˜dèµ0`}C|u“êÉ,& KXº²¾;’£|瘌F´WÙ”Ö¼^‘Å¥Hø­Ä8ü¡ÔæpçqÁ̾A[ˆP…LùÁ£©\æÅŠ…¢hÕ9?å¡]›ikÔauÙh:Šo~ëÞГÕ_ΘjŸd¦_„"{)qšT5'é^,ÀñÃÛ+n‚¬zÙÒók96Í9|‚ò¾ø8È6Hs[©MWf¸mÚÞ\ù’Ý ièâ—¼]T5pH Šq;€qLy“ ÎÝ Ø“²õµQw‡ýqý؇ 9ÈÁ´¦“”“µ×ñ¶ôJÌ‚üQÐD`÷íö§7ó~§lwVO̲ôÏ7ÃGÂ_S ðf*’x5ÇÕËr´¬ß2(É?îqINðBð†|µUxø^³$ø­gäµ&` ’j=5ìÕwý=&#ZLüœÌ¨‚S6ΚÅ“4™tí›O­­ªÕ.žŸšÖäŽ ÇÒÎìPÌÌùÃYVÒߜܨa_¼×•}?êd¯ƒŒ£gˆÔ0•ë[ûÚË—cUTÀKœJüÅ}´ )rv`L½´ÎÃB×´O³}>jó3Ôâè¨1ê„Ò¿kIA‰,Ý0ÄÊÅ’NÙ ‚­LÒQ›¨‘¯&ü­bô¼õÕ=ÄíæˆöÖeìº^PÿpKô9§,¹†áRvƒÕ¼ŒÃCoš…Qm®PÁ=²ÏJ:žèup€… ‘„÷¯_Χx*žý‡Î¹Ò𳦈˜qdoÕºðû"$ûw|eÈëJÑ01»P¶o1rª3˶ÖmsÈ‘uaÍ“Y$¸M<<ºrf—<èg›Z“ÛÀЈ”Ÿ¨lØn±\nxnNX;¢»l!¬&AÚöq…_üôæ2Nè#ßÜ©c¼}RÂKÓ\Ž_`½F½ÁZ'SHÛ†ƒªslé?‘²pÖúñI-åÕzuv/ªû×»5Œ¯ôkT² ³”¶G1±¨*Qó@|‹I1áuUn9Cï8á}@r_çæöj»Tã¢G-¢ÄQGX^÷ãrW’ÄÌNŒM*Ø'!X. Z?ÅX†}Ôë_Χ6 ÷ôO> ÂÞš¿KyvdR ïïí¾HîÍTp Y/Ћa„Ê~ öÅX ´ðìjvA$ÓˆˆïÏ^‰ÄO×ìÑ­iº÷r3—<µl9Ò¢f9›¹YÑÜ¿;";þå… ›ž\–«í(-”/¨å,ð–ÌÃQ)VˆûqQþƒ¾ä{²µËrõ6óOªß‘Fåxº Í É}hµÐ˺ ò\¼* ^sbÃm´ËºÝý.xhxp|VŠLc¥œÏ'¤»»RëÄ¿˜Ä ×*„sû¸ìˆ]ÖP}V¾´´PvN0 l¾í¬Í ìŒþ!Ð/SÏ“Ç&1ÒÎA¶£|î¿©« A<®ó)òèfY'hð`pQßdö¤¹@îcïÓ$ä½Å©ÒÊeÑ>Ú¤ÆoÑÛ»q«æô/ÖŸuøÞBŸ–h¤ÿÌzç³e\­¯¾ÕÒ1äÑÕ jZKX]3Ø sýο•–ÂBn›ºÕ&E è—ãÇnöªØëœ±‰å¬mÁO¯ À ß{@k¾ëá -:]„žfp1Q¢ðXö«üDá!;£¥Ì·ÓÝíe5ºÓÒ×êð³œjLxñËú±T¨´oâ—§µÃ?Û?tÀõ¥|ÌNd;?Cèd‡·~mäúfêÆi•n*Æþ;Ñg’­bÁfýÍÃ`B\¸JÞK~ ø}ûsŒàϾí€:›Uò`šdû’F‡^᎕†gMk™T#¾fVLÍ\}ºš¥©l“²Ž›þê%^“÷ŽSx/Ê{Ã~°UE+gh[  û)¢üIýª ¨C|ìo¾¹1aÉÉ7\2O ©Žº­[Ýpyª¹qméb³j‡{]´?Çáÿ_X]Î*B“º¼Æví°FÔ£›ñœ¼àÃ]ÛuÀØ×eºµxD92OlRàý鲪ÁoÀi5MäÌ%¨£b5‹ñOMxK¿i²V¨aϧ«ÂºÓ»W `QuÐÛoŸ H? ƒ!ƒ dE»$§W¥ƒ8xK­ç|°‹¾p™s½umön’¡ì”£ô'[\õ9ò§pÊøÞNç°¡G–¬…U8œ[®¾*/žÁËŽQCÓ^–VÑ]bÔÊ^&;òÃÜá_ˆ[ŸƒŸ³çÔ(ªBD@åÖCÓÂq.Û‘Ý2JêÍ,ÒdB•\c‘æ¡òˆ.Dá½-MhÝ€³vèŒÈ°Cþé÷ºäîVt€V³ƒœfšÅÜw‰ú‚ìxø$8±6]ßüŒQ9"èPÎŽ0ý¿wýÚÇ8ã3ôIíþ¶,ò®Àe®Ÿæjä €Âü1“88Îb1 úvšãM“üÃõä¡8´XÛ~[;öqm4yåÚ®€±Œ]í_ˆÒ°upû 'õ+ï—ê RãU¼|½¿Ø¸F;Êw¿¶»ÙÅú~ÿžp (3¹1Ì5vŒØÚ¯4O= [œÇ½¬ê¨Ù¨;ˆ ßb±J±©ÂUÿŽ˜„Íû-{ê©’§ÿ^¼¼±ÿÙ[•|×FWuTfŠt…®c÷D¢£YÇû ÒÑäWh“Ç#ƽ )gÿé—yÞF‰$»T…T1 ß¹\fó5²‡b_Ε¹¹ÆÖù:ÇÛfN5‰­%䣚¥ñ0–ȧ’zëõ‘íkó»dáëOXÆ!þ_ÂamîfÈvÉ¿ÓOy ÿ¸›¿p ®¢+äNC…þ¹d*paC§"GÝ ÝûµçG„™@Ÿ þ>`jÉ{fÆ´×ä[wòfŽ;?ÊSYdåIÆ“Þ雲P£þø»î^‚WVÞUËKçó5a¡ÔâD1øèáF×ÝÌRN».á¼ä1oAFdžÖItHD›Èæ‡FÓtyÕPxÇPFHó}#û®äPB¬'+ñk ç§ q=©‘FQ¦ƒÐøkðàÓ¶©¼±¹OÖn½ ]è…%–—7Hœ¶ƒ‘RÑû0ÄpÇlå¬:z,Ùd‹~]Ø´aG\ê?à?Ì+W%³HÏok¹ð?·ºÑ‘[+>g§¿86—ˆlᶱ™w]Ö¼äÈíE¸àöÓK‹˜æÎºD$.¶¥—´“M$kLÙpÅRz®Ã Ñá9ÊØ-æu1ùЂJ ñÍü:ب«Sû Ê“”VÐï±?au @~¹I-Tì’–í(ÖEøé‘ÌÓH}w¡ž$©k²HÇ\¢¼^ Ô°¾•ñmÒáÆ«Ç;ÜõØÓ,{5ÂW7cîw!QÆ4HLÙê÷ÝD½ÒÄ¢iÞ6kÆÅ[÷ˆ NRbà®à‘p=2Ôt"¤U‘dÆÑ~Æé-È•qT¯VLiZs® [ž+HP/YšÅ„£‹Öÿú®Üæò †wWz¨áJ?äp:¾WŸÍb÷òzÚ!¹ñ†{v„Çlÿð1 ~ÍÀºV} GX1³= yÂÌ|qGBlr)HCXÅnº^Çë4>”à -Ï0µ^*–ݳ@÷kc“ÑhFc§yA§“æg—'ß¼¦äú=¨ü¤7çú ËšG~tª‡÷ˆâi9n÷È(—eqØ>ºúÞ 4ý ¬—´Rú”ƒ°<"ÿñW¹\*†=c¤‘ZÇ“q‰~¬&Þè‡Y©#‘Eך'[Éêxö<¬6€¤Ña`‹WÌ¥¢U¢,?; Ós`úÛ³j·Éõî²DîêÆØ@Nvƒæ…m BdÌ0YÌÄvŸöNbðCéëùp8ÈœjouÍa>?áœa“)¤—$ªvUêÏ\¾=ÉeK†Îx&=Vê™L Ç ßHƒ7q9U±w”wHŸB%õ“ÌÂ…‚^w7àÜ|„G®lË Wo·^ÇQi9¢vƒí†Œs?ºO9–ˆýÑg¥×CG+þá óÞ5)L¼ãšu:¼„25k/Í€hå©Î3;ãÏ6‘‰nŽÌÆ÷¯ˆŸ]š½ó [ñÞ‹‡ÝØ”á½)Þ娢<’)‡M°sC»h¯{ÞlÓàaÒ=o«ˆ¦¿ ´Çg•~ÕÎcêʳcÑ`«“GFq¾Î¬®c×È[ÿ–EñÙ•%™[ q¸(~XNA‚ÚÒ&eDØç ïõ.L¸[_”Y˜Výö ¨›0Û·ÈÑ#ÞŠ3ltâ]ëiñwáž»ª…˜„¼ßÛX Ù’Êu\þJu×"8Ù+¹Æþ}GšùFrSúÀé·ò>íÓGB>¢ Õ%`ƒJ›ºÍê8<ðL./Ü‹îñ¿ÉwC+†TÈVpðsϘšZp¯š1«KÔrY{€¯²%g;~õ¶sO«àŒA–¯|;|ŽÛªíÜý´0ÑReƒ= L›?‹\§éÏ^ÅW¶ôî§œËTèUkk6 %TrœÉG ÇÐg`¸‡PPr²aHÁGývû¯ C}u94Q;ñ‹â½>4Ö·§wJƒó7Ëy44›-¦/Ü+”ÛksôØ Ø)§aÚ–¡*ÎÉi)rµŽÌN¦˜ß’Òå¡x.£H[H>/i7 %Ÿáô„w¾º Žæöoª,.I!Xôôã|¢@ÅМùh‚MP»;žYd¿_,XRú=XÚ„‹qéæG=Êúóì‚d¦a<ÞO/ô|B§†7ž£ö£ <ÍdÁ&Ö$“áÏÒ¯u]¸å>¡¶nÅ¢B£2±”¶ö î>ƒÓÞ =¤st׳K°²<zE§qbH¯¤ŠrÏñbWÖéžà›ÔöºæM¢òÛÍ ‹›ï¶z;Õ³,Ð(¸†ü,Uðž&÷™Óo¼wzÉCQèá'Ø?p°À‘˜}d€%·£-ÄS­¯éøÖ®ìx”§Òþ“~b»óÙÀòãâ$2µUÓD¬ÀÉBôG캀õB‚g‹ÄTt4GÚ÷×_ËÙ×7a–t:_8BG H·.N»‹8ë[pLsµ8º–ƒMyÛ†›ybg‰Io¯Sî|£¿‰g•½ÊHò“"ãnS Úwõ5,OÙ‹ù*Ôìæ\&æ¹¢^¡ô,¬Y”â"؛ѫýÊËPÆ»¢4M0eÌ`çb¥m}%EÚ· ™’Ù RìYÕ¾®©= ‚5‹Ùxn«[W;@G`ë}©û éŠÆù Jtð‰>€S1M¹„ðG‚§<Þ§—»žñw:…OÃFOŸšv"øKP£˜®%û“Y>îõ¡¬Îö'8”[U÷fRv `=H_C'–l$•1 h˜*‹\_÷•Ò)R¬BRÏ”$fÚŸ—¼†rªðá zôûºK.e¼?ˆuOŸÑÁÔŒ‘à¨s®,È(î1Ú~gÀƒŽI¯ÜmA§zŒ©˜mÂŽ»÷…·gê¶q§—‘…ã¬ê§lï.cˆÅ®ë/Ó9;ߊD¢Û&.›åUx©{2Ž»åÛ´0TÔ©­b6z•Јñ$=1ë,^D£P—ÑTw¶QÁOÎ ‚½ç ¤¡¯* ¦ª6åõç« +ÛNïÞþË£.ôØmi› w=›‘ªºÖ+K»ÁܳWÐÂãN–„’ªÁTFíAåÛtñú8s¡…5…±¦R¼”ëRÔŽ3ê\YxÓsoAÔkIò ^óúû$~C@ÿè9Ôp${Ãt¨+nôˆWú(L·i sŸná»IC±en^ø6Ô·K×Þá;û¡þ"‚,+´wÌT.šµfů׶² CÄtÎdqKž œ*z¨BÄÊ EÙCÿ™~ìJ¡9û\fÑr)àv¯KíŠ9Ô@9{‰£CêCöÒ›¡­åà¬Oì?Öý¶»ÂTeP‚ªÆ('6%‚YañGþ#"ƒÂä?‘걦 sÜ>uµM7y§,rR‘ù\¸ – ܬ ÁÿäCÌœÊ÷>û¼8À¹öÌ Ð*°‹Äežà‚Eií,A"–¹o…ʯ@|7'!¯Ñ÷FM-Ý—ÚúÉŸVÔ4³K‘ÆR±%áÝMR'·>¨ {äArsVj'*Èà·ÑC ͬ¶òn…äÜè뀛S}ÿ¬Ï×KD(¼þnŒÞQzÇ:áÆÕc!åOl×côÊ‹l‡ÆqRØ5Ôö,Ò§¶Ô†úR¸í<ô*¦­_¶¿Œ—Jq’­Aì~¬£ÏÛÄ ³$~¥3"Y*ï1¹Žì‰NQÑG¦÷ž6!Î~<Ü<Þš  ¥@V°€óÑG|Hó¨´kŽqJeöƒo£Xuç`âŠ*ø]¶ Ì·óáöwøú-‰áDú7ÛUY1q”ainýû%È·ð5úù‘Á=—Y5„£ñn¾:˜*Aê# ñÊ}Ö_p3+Ý;²a­²é¸lųfñ^x[E6,;x2tñ¯ô¾ ¹UG+¾3Íâz¤‹_:nHì“@ãÃ܉…ìK|“?¼9 ?teòlOÒvŸÎÛ ¬Æd%¢–Þ…Åò»nLá·†IÐuèz}n½Bx—ýÚýTQ´ÅZrÁ0w;ýñÃ-=4¿AÖ³Ôè»”ÎìÛ7Ë ‹lSñÝ1ÃUÅ¿ Dž(ÂXö%oˆcm¿•i™dØ“†v98¢íç%é­´8_ÓšVª8Ë-“‰U÷¦{_;ð‚öUÈŒ°ý)óç RPlÚK6W¿íÿœ£‹ùƒ¢PŽ0¤hbƒ²ó§Í \…އüú¼ Qæcñ¸T‚ 1ý—Pe¬)£´94¼Ò›pÛs¼°™I,ÒÙÂyÔ kb\"­x‹-v¸}¥-ßKâ)s¨´*p{ÚU]‰ŸÃ¢ó†Ÿm©Žû0X!˜9Lq4õ¥Ò+ÉŸ³÷Hõï;Ÿâ¾$iDcÙîÚ¹¼C÷-Ä¥‘Þu[ЂZ›êÍJèã¡„x¢]™ú»?o !‡Ó•—§´¢à% mx‡MõƒÂà{˜ÃBÚ¿P… «%HŸ&Lq%eQÝ@>Ò5Œlºñ,¶±¬ÚK_5Ž£Ðà0ã•5´‹LY¸ ƆTBODPÏ3&î|¨ÐˆÆì[òç=…ûðÅUNrÜZx:ðì^[ÍyKÔn ÒïmXmN¢¢‹5H^¤}úr•¥ìgCrñc•‚zÜÛÓq AÜfnhH=Ÿ¾çvçÉ?ì¶Ä\,ý`÷>Ó¥éðµV”Br *â× ³÷xEïy!\·m??ikÿñ´1Þ”·s›Ðœ±gŽ—†#ç_mkÑÆn®ÿ†ñ2¹/À›‚ÏãÄeI—þ…Ä"fgˆ.ùicƒÂ¬‡)„!Äï :P×Ûé¶Øá½ûœù•+c¥Ù—Ùqž „b%- ­Ï•O ½¸L;Ð÷¥Dÿ8wÅÝ­Ê]·ÍpË@{F7ן¼ŽØ*Õ*‰¨ûªt®ÇßT.=á˜LƒíÛ˜—NÌú•³à“k”ÅTŽî}õ•9šÝkÏU8Ó-<ý'òñëG6AÇ98‘¨_16§O;Õ:B„¤ïVqœðì¢ÚlÎ=tó?8ÀžÌ/ýD2» ¬_\‚Vì§ó&²¬êo ΕZ@^l¦¾< wåÈ’u°%ŒX©NlIpV”3gÒŽ¨¦ÈH&y›ŠYkðÓiìlŽÛÔ4¼Ã’¢è¤èt‘h-F÷-𲋊[n÷~cì8^e¤Kã¥ñóž¢sys•â´Œi¨ Ÿ«º×”^§Þ`–M×(ç¤viSí=&-¿JC1üXÎç¾W§³áûw•å!ŒÞ@„}rk¿$f"ÊözD-qîh~±¹} g?…^/î„àÓØoŸ’6p·¹sƵ“áóÊî-¾AÙª™Ynú 9Æ1‰£Y_·?Û·Ó€¢d£>QÆø %°x³LxvêÉ«qp€ùÉ÷&ÀøU.!VGÈŠªÊN²ú’Â[YOËcÊòíÁ\ó“‚¥’OàùmºL.Ʀ›VTݤáäjÏ›å-ÛwÕ+à—SV},Ù—ìoŸîc{{7êÞ•5gÊH;A˜•üˆÞ%ÓÆ)½Ÿy´kR6†ìÿ³sBM­‘'66 L—yA¸1“Sm^Ëê§'I<‡ Vƒî\L¥g–Oê¨}†wf&+nþYƒg<©W9=d>„˜ÑZœ‘q@“1€Ðɵ1ðëáØõ98´±óÑÒ¦<éà³tT~ÍtÐãœK4¥9ãFJY:‰½^–¼<ŒñeµLðθØÀÏcß"#ysõ’sk‰ä…üµë^d=Ii9ÏóÉ9,ö#z Ná¹1,‘øò×·«è!ƒÀ@ä…|eÒ°ÙÓÂ¥öÓ·ç~$Âa›j°…E JO éŽÖ%‘o‡‡;R&ôÈMVÐZ¥j}89é^Òd²‡’2T Š1AÂ}R5v{°¢‰ûtÈha-d?U~•w54õÝG@S³]$ñ§šG£tRUr£Žèt.¹GŒæ€Ë'ó$jƒÐ±¡4lª“º :éÄÍ3€WY•²}áé-܃ ÕÑdîuÄ´hrçy]K¾Ma¤./¨ëÈ2ʘ…u£%ÝbKVî…èÁ£ÇF‘âMi•A#ÊA mm±’)u§c1]"Í·ó%*ÚàdÊqqW~¨:Vþp(nsÎpý zN m_NA"êJŽé$Y§EJôveOòMå¶Â‡}Ï5¹Âµ¢è+’–õ“5ù¥ }•=H£ ~‚87Íõè bŠ…BããØì´OD¨zœ‰ýÏóºt ´‰ß}O™¹Í«Ä‹Z¥ò÷Ë÷vÚ<á9=~ òwRBKZ¢NK˜ •ï’ºÖ’¦$Mb¾•Ž:o ­c/ ´rYLÁN„ÆÐ¸g’`¨œ÷έ¯Ç@¹͹Šž¾Ôú°Ýgï§ÈŽ~ÔXëx®­.ûô"Œ„ñþØ¥ƒ©I–•QÉÎ ûšß-*!~º,„xÑÜŽ¾é‚½˜¶ ¾%CÂþi •=Ìò2}+­jðåºfeAè.M·ìä-©BÕL‹>_ž?ZJnþ} $£Ã§2Eì£ ²¯‚Bªø‡Šo“¨çäèµV{‹8aEUèD¢Oå‚e9Ât:wwN‚¤ã®¼!˜)Hy½Ìä Ô)Š0ªµÕ™h¾–D ÚHÃŽ¼²‰|ùVÛ®/’}‰M/”ŸƒNÇ>n‚Ó.‚¨ç¼£®çQÔ8f}&̾@îqè—µ­ž—ØUAíÞT+pÓ¸€œ›AۇèZÕ@Èo>8îý“Ô9†txWúØß”Þß‘q“ׂܜӿ ã²&ÁŸ¡¶}ü¡>ù ¾C| SôåtêØjì¨ÜvÐÃ=Ø%©ìö@ÏCu:¶çÆ ï[eBò>XBQC9e+ºìÔ!r uÆiÒ èxqäÐwç«÷ðð˜o8ØsMªÔ©£²ŒAÿZAYg€å2ª¥kÞs3¸4i©öY,½#žÚˆËL$¦9‡&8õ=›_ÀPœ˜;ûjLÊ¢@!ôÓ¼ÙLØQÚOývÇíz0Æ|Ô Ö`S ý/ÕOnòÞ`So/«»Á”Î=Ëë¯'úëÓ?û‚ZÈbv PÔ4fv‚ò“}:'u%FJ‹ÓÈÇ*G ßõ\ôéIÀfIeÇ:3AOým›cW% Ã…Ãd['N¶1Ù“m›“mcÂÉvM¶}rl×d7ÙzïÏïz~Â^×Z{]ö~[n V>þ +ç–j÷¬Ã¶ß`5í܉ÁOB-C£7ê‹!ìŒ?iÐ\Ÿ¦Ö³¥D]XwêW’#?ßÈÀˆ˜gK+@•2Ï~J}e”øðU¿eË*o³9xhmkï%g›þâî\Yí G0ÔX5íÍÌV²=àÐ)¨Äý1¦õ+>Œ#ÆP‹~câSYZS£ö²Ð½ G$;c«ù&£¹úBdB¥^@Ê/Ãu„µ_~,v£vZ· ²Öhì)'8ŸY>=Vu²Šì¿ “m!¶úþÛ =9´åïoT*õÞYR‹z'—ü‚}L§/Tûöªî2ãÑLþL¤ ò$£g#ôÇ)±Ô"að×ZÛ÷ªŽ½ÿ{¨GšéØŽ–à?¢†sË›¦~í«kŸ‹©O-ìæÑ7·X–Z}T5”–òÙ‹Óò™lê¬Zïf‚”À3y·Å(Í_2¥‡"¤¥Ò¹}¬YÑ£Q<éø?ã[THO;ãç±Gí]ã¢Õ íø’G%?"@Mò³¢žþ)&=A‰KÛ“ÌÙŽ÷Y‘À®Aoýe_h$‘ßÀøcÞxÆ2†/ÀW^ÝP‡Ã¸%aVú LÔšOz)Ñ„©zü×üËw°©Qಇnß–® î¡Âon<‚á¹Ãj {Èä†Ôíbn9a7Åh¬ê<ú!#½ÒˆóTC§œÃ_(ßµËvv”PI€ =îFEXUO­ö›ÊRÀr ˜j·d…b ¡0ö©<˜Ã†Ó^û'#Z”Œ<‘Šbé‚ÀÔDÂòüÄ¥q•þÑɧt×Lœ˜Î6¥(j;X«q'®”ïu™Æ7nÙWa›TâÇ™…O²+ÇM^LžÃîl&Ò¥·ŠÿuCÀ‚rFWçI_}:«Ýh1JùÀÈi£ê$sù]5ýH¨a«ýB¹¾Ú¦Px½Œ¨‰Fçk{^–ÑlIP­Î£––5Ü"rÉwHªmÏÔ¡¼hßtcð,>1M^0«°Zó9ÉGx„ú(—ÓóîÃgÿ/Ôý’hCÊÂçx1PIÜ!ŽÓÌx>¨«¼·Èîü í ü Ð^Ëq:6—<ý¢ÔÇèÝtzV‘föqÍ|šñ€¶€P½Þ =°s©žíK1-·=È^@K©ÓSç(¯¹j:|·W°Üw$†Õ–PÑï‹Ñ¯ÏXÕ`¬k›75ŠìPz«sÖ%î!„ÖìßõNÛh[ÔFÛ=ÚCVä±G‰·´ ¹ yIlˆÚ_=¶Nd-¾;_&"&¼v •F½I¨™<¹ Ni<y1Iw^LTýøg-VïZ!\@˜æ©SMÂÍܦᄯç8D€k;ë~Ö”ÒÉ8Ç#†£gäÇ"v½žä`Q%ÄȨ––CÁÁØõöwBmî*zÝ'”èÏyþɃ?ºóg+õA7ïèÔ?¤„: ý Pö"Å©M3[ñ=ú7~ر·!ç 5úŧO–—‡¿ÿjŽâT4ƾ‚5'HR Öm/´4ûG±˜@dQå׌`’÷r´=ÉCÔfûÀk=í¡§UmtDszÉEÑ'±^Wâ …ĉ&¢ñ~PMC?‰€mÞW߃mB÷-5ÂXôø˶ÍEtàKŠÈÚ÷†^G·B·6Aùñ×Yß‚EÅBß}Žüá@‹5þ~’n××*ZèÐä¦÷#KŠv»ÓâÐ.§cË ¦WpÁk:0o¡©±ŸÒãNîÉ.{p¥/±¯Nþ¸ÕÀhÓ-Œ…CºYe? -ÕSh ®Hÿ£ÃŒ[¼Äwð/cÚ7k\²ŸBÂ(õC¤&þ$î/_#|¤Y]°ŠÜùÉ‹®©*d̹€-œàÒò$÷…/Ú‘ +=`—îL›nP¡m¯¶#‘s(J³ßJŸUø¿úíDTjÉaÄÌkím§â~ÇØ4·§qÝÆƒ%u.Jº™Î¹Ügâ^"I¶¹Cqû A¡˜u]Çü{ÿ±®¬Œ£Q!ÁâKÝu!¢kÖ#?ߘ© ~ù¼ùqå)>W4gñX±7À×|}%+±G›$ÒUT_ /{oc‡¶¿òÑSóéúœ?ÒÿÒ¢8x£¢t uŸ2ÕPÜÚóö‘“¨Ht …Æ.)ÍšýÛâmgÞîôê>Ù·;È·6¨n½þtÏâ;`@/Ûg å>R EÂ)ì«pð^úqm±Úƒè‘áÂÔ%¼£)¼%¤68º"³h×Ts"³Ž)ï1¥s¢åàRŽoát}>^09¾ò)µOY_ãS;¼Ÿ¦"…ñ%¤-ÆâùùWñ£Ÿã»zC¦ÿ”Ë®öêzÙ;¡ Â2™gÀІô#©å=lNsïLJ²ß¡Îåíy$9øÐȲÒn&"èábH®¶ñ]ô­R"&§îU®_UÞMªŒPçZ³):œ~ ‰U!cEßÉ•6âê~¾NG©®$D/ºϺXœ¡ÔúGc"0ý`µ.·B‘ª’f•)Q‘+ PÍ`ÎÇqdV‹ û4ʵAY¥”æùuÈŸÇce®n ˜À=rKd {['–ª ß ?|Ù&áIÓY ÊûE’O•3nñeMøeê£އµ³ïÐVc7)Ž—03O¼µœ(êóÖÙ]Ú’5éËj]*N²æ#JñÎ~ˆæ&r?‘FL®Kgx¶NL_N‘U /# $wMÊxˆÑ×Ò\â+!rMhy”hÀа&æû¨ù$å–gqñ~”®›C@LÆþ×")“'ü/~s¥T^^£*T~ÊvUÜʃ»Þö¤Ð*ÏŒ’Ì`óÜ}Ôt¸& “Ä3ñ£-ãË3Dt®º•-JxÀ•sDƒ÷».-%O×þTeÜ‘(E Vîˆmì›cùjcì }¾d%A6Œ­´lIOXqʽW謸%ﯤ®mñAo¶,ÿ„W0~õd:›…©½{Æ/Óe¹†07×Vå·c‘Â9áCì«ñ.ÅZa­î{,‘óô΢JCöi'„3ÜOÏCGà±AàoĈîoý”iÒ^t¿`ÁÐp*n2¼‹™¤óün,šƒAy.`/†H¿ ÿ¿’œŸÁ—45ö…®Ȳ´¨46Û*H—=3G¶œ—¤Ï“ÂÿJht*ucLÕØ0-Sò¹qWG„U3~ 0ù¬²&ûWe~€ªµ~«ê=w72}õ'¦yÐ]þ]àtëïåäd^÷ÄFZ/ÎVÊ Ê«õÎòiQX¶âR àp]~g¡Úâ»dýZ{iw½ ÓÂý©X¥†·¾Ôj&ŒˆÕÉ[€p™Eeµñµñ¥ç¼ûD¦Ù€OhÇÕ­·…ª‘iq¥rçFzuþ]β–¶çf°cñ§+q`ØÔy]/ƒMqUÖ|Ò„VIÓMµ÷ùi×9mýª©ƒ1§$í€EÁ†Ç;³‘C>ƒ„§ì°ÛÐ5tT?š•~:Þ»ºÜÃææ¼¾Þ50 .cù™ž+y<—)|ëÇDŸÊ)›=Š–{ÿÚ0_ S_2ŒH ¿2S䟦úü(ÁØY++Ó½Vo)Å¢©;rJÁ ˆ*[ÛYÕÎ,“S¡hÞÙùÒ>=9·n2’›[˜_ä.²³°#’ˆwQÓ‡ìÖô{lÍî&5Äwà´Lá÷·`ªtøQwçÝåÝA—”S«µÐ`‡Gì lkèIP܇r!r«DdX†“ü½µÝÛ²µ·Gš2B–ý>7÷Kž?Û*…’rIm;âåþ£.„.Évw&vÿבàdï8f;ß#è+\õˆ9^;ùéê]ò¶™N”ãÉÔ窗ÆZ|®®9É¢y¾û!D½m8=Á õöWÈN{¤›ZÖt>’—‘§i…ˆG¦YÂúU‰õL/³:¶€ü²Ba…ßÁWLÐÿbd¤I!ÏN7_€´rñÝžã âŸtw4œª"6Ùš«Ú›ð5å3–ŽéÒ†Åjú²Öeô¨‰Â‹|>Á=A&‡V©+Ô”· ÀAÎê6™/Š\fâ"èCÿKWeLH¯ã¯™ËóNSb]ˆ•³‚Î<*­ï4Eॻô%q龪Z¯Ë×ašØ‹U;Õoˆ°°[Oå³³]³M3‡£éò’|4²Uòª­lñ´[k¹û4áþHÉâê(¢2 îV&²c|ÙPÎ^ƒß_†?·“¤ ×7a®Akm¨k}÷‹óÝÍúèh24Fÿþ®Éiÿlö”µsòÄÄ0 `þ(O:©&ÉA–Ü€øô!œ×d†çeII:xzœHO×Hô<ÉcOzôëkôWÙlNïbI)L’üž|Í5ýmúžMèšB2ᵌÎåv¼Aª.(S›3ºìc.ZYã4Âyšæ\•i.¬N¼o«ÿaÇi Ä@Ô8ËáæVpÓ4…~E.ca’Â¥íi}´/“@ ÂsS}MÚy6EhÍ.r‘‚ù‘½2‚€0•†koá­ÝŨh©¬_à·ò¶—Õõ`í¤Óc._î èK®Ú5ª€#Ï›;Š9ô$5òÅ-® þ¹­‰¶0ßõ9_kÚ$E#q’Z¨—¡âè5E›@ïå1£5C`ɽ,*Áû>«E·ÍHç7ìRúgÆ#öD‹b¿¥"¼¶›žV“@Ø™šý«ÝÂÈ“Ï[ó@!þx.Ÿï7ìÕ ù Ämí ÁAëë,èz wóm‹òüp€R&T–û÷…Žj‘µ¸ÿìÎÛa»l!ÐÞliW^?#Z·ï8‰ ³;g*[`a»á´^Üu\®‘ùî-›¼hÜ­5‰Ûè^,ôyÏ^¸W~ø.ÝÞçhñô¡N®¨ƒ— ¹‡ç)c˜èÂ~ÅóF.ÁÝwĿؔZàV@‹F1ÙM‹*ÎðBCñ½4½ë£¾q3ŠŽP1O?žNCzcS$šÂÓ‰$%;ÿd‘¨´5§ŸŒ³ü¤[%tû3 90xð]ùâjs(HBBfã˜üïXùA¥Ìi“—'nã(4Î'O+ r÷Çç’2h›¨Ã÷Sv8±á͈8׺Uyz÷D!Já…TB*~Ý#±G-Á—¯ÓÐ:ß.ýÈ'H(ØÀØç[DülTÄ·íÇ2D§ é¡yZ°½Óΰ7 ¿£ªrSji&àm/ÊIpì-MݤH¬ |íJB*M¸xò¼Å¥B´Óõ÷ k÷1à`õijcR(¢:Ø9‹}ª +ûÒÉ¢2™™5E Ãΰyv÷i¤Ô¯œª`ê1çW_ŽëÖ i¢«¥—vSh¼±¥—[ÓÇb'®õñ«ÿ™¡yÍîÝ^ÄM’Ž Ñ'~Ú¦ùå¥.d\çæƒXÀØ«Û3ÈŸçЖ‹0„í6¸—î!*ÏÀJÓYOQ5§‰H_ÊDö²ŸP|Šm.ïÖ6ï*2ÖÝaОÔ@ôÉ<ì=€Â×F‘ûz¿[¡]4Þö - LÀ¶¢.ÿ$l§ÝL¯!cd<`€­V»-åó]YÜ<>ø]Œ58‹¥5)ÕÈS™ÆõåÕùÍeDÝË^•ü'݈,<µ­A؀ʃw–ìmÊ‚V=w3î‘ l¯”î¢À-ö_l¼ø†3áîzSä 0ôÇ^2d ÿéÓáX$ÇPþ?ÔSLª^#Ú^6~œ?ès è%(ÉÝ¢ÛæõfÛ7oBr='<‰+ Á¿DýC/gµnZ‡p}­Ù¯žìÁ“º.Jþý“`ÛíËWJ^-²)(Ôn§Ÿ[»ß'IÊE´HÓqhžÏ~5ÅŸ&‹ýn.MM‰C%t7FÙÁ0€¢uj—í¡ÞÆ?MµdñB‹Ê„k†X|k-Í®í"ÍÝ¥"!²eGûD¶©’4ü6F*Ÿ–#%hX<þÁo?–s}hñ~‡íàŠ5à½*j’à/fYŽÆ%lÁ=x”ßr²¨Få&Ò<]Ç9¾þ¼‰R%¹kÅìGŠÂt¶£ÙÔî+윉,º;T+]‹9\Ľöñ‹öjðh¦Ð¦!öLøifB–a†ÇlÖZXi³ÊSGõv¿míŸ<ítõùW;œ3«ºH7§­'ØÒ.¡;¼{|‚y=×—2Q%°º/)ßÊðx,£lS¸uC›+ëÖ*1­rÄ™«¸>K J$’žËê­œÏ(BYÌÔ5e¨S“.É  ‰öɹˆ5ÖW˜~gš“Z²î#%J-(–©Ï¥&x;·)b‰Vé°ø¹Ô¬ Œã®«û9’?M¯\]U"ÇP‘Md”€(…h02H Þáàz¶z"Åã¡‘ÎùÕŽõ;ﻂþ‘©ú¿ïüLøË8ŒŽÊ#ÙÑ{ÛKóANGá žÀ¶ç²ôbøX:†xK4¸ImÄg¶€qÔÎ -Ÿè€¸!«vŸËì;#Íb¦AuŒŸú¶äðS»fG1†Ë¤ùÒ%œ GµÝŒ+è˜q %òÆUÚŽœ_x5”¢¨ìÒ$¥ÀžÚ‹Un¨Ù¸ÓUó¿¼Ù ßx&%‚Ðpú{ôMIòÙµ=/Á†ã-AÓ‘ÀQXÒáPtÒmsGJ ”í7Ýîå½ÃrÙ¶šà@bŠ7ŸõËY£”Âj¹¡ÁRe£ôjÔ=öe&™’¥ñ$´ ”_¶7.‚°`MHÛwã`ü‘K'WòÉ^侬ï¿Hà ˜܈ŽÜ®æá×៎¢ó½èZ.I{ͼeÔ˜¨Ú µÃR¼öƒÙ¿ýå5Æ®O– ñ4îÿAµø¤Ø ™îu.îÐí†û÷Űö³iE¿³I‹ òë‹¿¿?ÊxæV{ÁÇÀ"ШÙÛUE?¸*|¦œñ_}–¥ôzÃqv$ :;¬zíN˜Ú³-¥SeÛ;ÆEC{¬-u4Ù§[{]:s^å^]_®ŽÉªL‡kîuì"ŽjlŽÁ¬äæa‘· ÁTR@ÈV¸½ÄòÝfKà<¢QÏQÚ²«MஆöØúW®‚z«1·0š’ŠRz¡ÀÊ3rŠŒN›‰Péwugv—‡ªÌ¤£'éøøþPä´D3Lk:#ua˜Z9/ù¦SëÔš8õ§DÓê&¦>õ;‰¿§mØ0-ˆ…_M¥BURn|[s~_Ò~‘£3Ž×W‡~âuÕ‰­9ªÕäyÈÐÖNjÀëWÛu7Øå&“ô)’Äø˜½Ã*LÓ'°#Ûp¾[!_?Rêšð'à?‘¸¿ÌþpœNŽ´NÄ‘‡Þ¦àj6Û‹-:ð±ãðŒKªÂT¿ †Æ Ž;> ­,gT^kFûòþìK$ª™WgrB€ „ýMbÁh*ª|rµ¥Ìç26&Ošoï?E^\âµŲ̂9\C’[`¼|Æëî?-ô$aÍó¦ÌæF·äÜ4¾àõ )0ÞüªþMÔqTxá2ƒUQ[-gƒÒZ–‹·zOÔ_JàZã;EñCYk#Ä„a˜wñY—ĉu†\JQ;ƒÎÇmu¥¬±ÔÖ/=fMyÒü§7^Û-U‹·ÎÙ‘£Pà7 V ¥Íø¬áàñv@ ØYÑÖ†ûú«ðÍ­ý¯Ê-í{¬gWP "Q-*ÇE^À¡Øq ±DÄÇÞô‰,'ÅLºí s /¸ú$`”­Í—óñgÈÎsH“„¶Ynq6Öï}ÍùC3”÷÷pž‚P,:S¬¶mkHê_•ä”6¯ ‡ä°ô¡êÇ­H×SHgæI‚r +y€ÿæ[¾†*ýFæmÁTÉqTjJß`Ù~¢õ,n.¯òˆ¢Èšnj0š[ÔmòŠÕÚÙè:Ïkî–ˆï©ïïÅñ®ÌxrQþÇ»‘è H¼&Gle—B6ß,×ç„“eˆó}ëÆi°ŒZ¾T{©ã ?Á®ÝӼܨáÈe ÃÈËýQš×“xƒŠ/$òu´ä— †#e¾°7Sì†"äE{¼²/*W#,ÿƒ¹rf=Õ·h÷ªÖ4€Æw6úÁ¤–ᦋCm»òìÓøúÀÉõ°ÌȾÀMQ¡Y°kå¦P9l˜†œÔ±°^Ý}šžóFºW¶†ßí÷J~„˜OM``«»Ëü¹¨ž7µw%ˆ;`¯¢Ùmˆ¯ñÃMîý–Y“¦=¿†¢ày¾sÒæ¬ABrÛÝè Ð˺U?†¾E—+-¥¾«gì7ÆöçX§&ÿ!W+q ù“l\X÷RßË`%ôë™T2ÿ ɤ*ÚŠ÷¡ë»•i·ÜyàRÞø$oo¥í âú"nHê<ÙoCŠp½¸§hY|ÅMþP³#ò]½¥€Ki4ÎoCh.Lð°5ì gh?Û*X}¨¿¾/cSkz cæ¿ÕôÝäÂÁî®kt¾V4s|ór ,¥Ê:?˜-Œ€Tcyp÷…Ù9÷ÛWEœÞ²ŒùeET ê½Ú­¡üƒ}I=úFúŒl°Ê¥‡l¾‘ZbucK~MGÌ$œ¼ì´.K~Ú´èà9NÚ¶73ì¹'Gä]º½eŽ´›ÍÜjç®ÓÅö3. £ÊÛœ6稶wÿИ`ÎÍÊè&tIR—vÙl¥¯¬ÂF‡_û1ë0üˆ«êb6AÌî³ osÂù1'œO²¡å§ËDCzx–^(Ô>4_ËϳâuŽÚ$¼Ã.‚ó™Ó;StìӕƊ䔎 |º$Ð/äÖ\ª¥H¶"Ñ]lkºm}›y`Š)5gæ_xíÙì‚(wøùÑ:€ãIžg?ÐÌ€úý8Ã#é+fýšœj”ShZçg†Û.Åö:Y4}Lß•‘vÉCB_ËùQÝ %gë+Ú|‘h]ˆÒwÎØ}z\ž}wPíÝquû±z¨ÙøDÕ3TÖ²©mowúªÈ:ˆ+A×ÃÓBºnñ½ESÉ¥Ý7UiµÙFNl­f§Œé¤²“iä<5S`%ijù\¸n¢Y|¯8&[ï9ãžmæÀSòþ䤯Dü>(ÓV8¾Â²÷J>§R€f$ 3=xÿúÙ?K+ŽRy¢%ÜûÀ¨dO¡°h:¸ CõbÍ+ö#õ…º-‘ˆFpié~VDFuR~båüsø7K¡ç¼aàU‹@ã›Þëcz‡½šjœ›ãÿä´›Š)›`Øv¸JÄÖ§À©¿É*,ßìÉU†õÜxÞxyH#ƒÃ?'¸OÕÕ‚”GžCÁ‹Â~Ë¥àB܃¶éËÖˆ™¥ãsµINžÏÇ´qFež÷iß®¼ÞIC0¦H{´y;ž–@{Íӹ縕tÊÓT6îþ*Þ¾BK³®uç€þD‡V´LÀ¼úCt«P±ýƒ}¼öS«0€pA”ž ×&±<$ƒ¹ßÛýØ5ãwY{ìT$?ÂpÚxmsÛ¶Ü–kdÇ,©̳~ ¦Ìolþ‡¡|Ž”Ú8V#‘ÐP‚.ƒ"f:¬?Z=U’Q¹£6†¸€Ãi¢4ãï·ƒîUhgx†e”OZò‰®&jb©›%ç®ÕÞ‘Ô(ViÓ.ëQyGo¥ £û¡i* endstream endobj 249 0 obj << /Length1 1875 /Length2 26439 /Length3 0 /Length 27606 /Filter /FlateDecode >> stream xÚ´yeTœ[¶-î®…»»»kp‚Káî\ƒw÷àîîîÜÝ=Ø#çÜ{ûtþûƒ*æÒùͽÖ.)*Ó ÛÅmmœè˜è¹²rÊ6ŽLŒt¶VÆ †VæöÎ@3=##+ ™ˆÐÀÉÜÖFÔÀ È àp2(9}¤;˜¹`È@ Ã‡Ó`è:¨¸Û™”E[G':CÇ7ÐÆÔÜHõ‘"bkçî`njæô§ ÝŸJ²…éÒF–¶®Ž–æc€4½=@ÞÖõÃh ´µÍ ¬L¶& @UYLI ¡¤ ª¨LEÿQXÙÙÎÎÖḈ(«¨JÐD…äUÄ@5Z€„ª²ÊŸW ÍSZ€¼Ê‡ÿOŸÀ?érb*B*šŠbL žÀp:8šÿiûÜÈ?˜þEí#ÕÄÁÖú¯J3'';nWWWzSgG'z[Sz;«¿ø©˜™;\m,ï@+à_Â8ÛÈédü»ÀŸƒÈšm’ÄmÿvZHù‘ôawú?bB8ý©iõw8Àü·6fŽåÊ**ʬ Ìmœ€66FNNÎŽý¿lß@cŠ¿ "ÎzÈý¯ËáÿÚü/uaÛ'Ó¶òô6pýÏ3°qvôø‡6ÿþØF¶6ŽæŽNŽWLÌ­€Ø;þ93s›¿lrBòRâbÊ*t²ƒgC'gû¡Ž ½“›Ó_Ñê ‰Êr8ÙL\¬Æ!³1±µ¶þ`íóG>QóœlÜþël[ÚØºÚxþwŸ‰¹±ÉŸ0v¶cPµùc“ýŸŒÌ¿l¦@'#hº™1üiû×Ôü13ý1Èáíigk01°rz››?Þ`< \€'g ·ç?ÿŽ`˜8ÆæFNÿ±40U—²1±pýmþ`ò¿®ÿÊ¿–êc[mm¬ÜÆ@y[§Á üÿ³oÿÑKÜÙÊJÞÀHùßdýÏXks+÷‹þuྔJü‡ÇÜQÜÜ h¬hîddö·´Û¥œ >¶@ÈÆÔ  cbþÛ¨úgµ¬>føã2ÿs}¸XÙÿÃ÷1žF–6@GG'Ë_.à‡ÿAøCÿ?t jâ"B â4ÿuvþ ³1²56·10³±  Üa?‚™ àÉô1ãÆ@·¿&À@ocëô‘°svò˜Ø:Àü9UƒÜÓ߈ À ðˆ“ý£ÿÿ!®Hƒ!Nƒá¿ÐGžÑÿ!&FFƒñ? €øÈ`0ýd0˜ý²Ìÿ?úXý 2}T¶ùü¨lûøQÊáðƒ¿Ó_ðßÕUüsÓüµ<Œÿ’û®à¿°²“ƒ­%PÝÜøããç!rNænZŒ“Ïôaÿøúߟtþ­Ù¿–öÙ¶nžt¬2Ò1¼0q~¤21±°zÿ[®Ñß·á_[÷1ÿ‹ÿ\E Ð h³¼`kÄh‘Ô\òM,oª‚Œ‹þô'¿†tì§åÔ©6\,Ñìmb @¾_“oy¾­¬$·Î·?›B ²@t«·õæøòÉ[ã/‚;ßä¾á"ˆ f©Ñ«ú§É-ù–vSIgåj±Î¤µÄ¶TGE¸Ú:Ÿ"™'Þ‘¯‰µK[Vs \ æ˜Ñ¬PÜ–pÚq—¦ÚAޟТ# z„–©gõsƒ1F¥!íº;QwA# ~“ÕÎlcÛ5à^XÎ uñ_B‚± ÁAc`B“¥Tˆ‘ˆâuøCŸ%PERº%½ríC²Ô²zì¤:5NŽp¤Z‘ÄôXȤG¨Ú’%–@™ÕQŽ¿k@Á I?—4#8SkûÈ_ØT,›ÉxW‘‡WoÄÊ_l8!ŠÞq^ ³À‚€o<„¨m!ýö»ÏŒºOÙ{;Y[Óу<}¢ñœ”N]8¤Ø?N®àuZX³Aào@*HQcß~u´»$á¨Z­JH‰]‚K¡à¦¬ÂC­9ÙMxƒªƒÓëÁtsŒ)BySxõÜì8p…F†h iàõ«e°Ù?Ñ ÃUvQåˆX×w÷C¢sd-"é³)ñc†RÌÜ7ühBªïC#ÝÓ – y¾*oTÍ G:ÖMP­*ZKlÆ?dJµª•ÞiÝHÚ¢¼®ìºñA!Ÿ¼™ n?WÍb(šÓ‰´°MÁƒ2Dûjue²ø«ù†þ³ª¦^´Y@èËô*{ç¬"Q¤ ëéê†í×.\Ì(ôéËa%Ôö,YkµdV*HHµJS WdÇ¢‘^xR !žÛáz˜ Mù±ï>Ä{w„ ¶¸aÍU»‹æŽÒƹxy_¬|n#ÐÚãk4ººÐ­pÞ¡*îÐ>i°2ο\Ð|"Sq§DÁ©ÄWÛ 1£Ñ}æµ Odœ#ä%É·«›tv…kmp`Íì±Ecs/Sà+žœn{B’_¯D¢–'&Ò¸·× m,íÕšZæ=WÏô<œwC°1×A^Yy)QVb e…Õú!V1¥wN}VÃ'¬CìàíèAZUκÀJÎ/©4ÕìéÆuÒwÔ걺â'TÖŒ¸é?,]ìóÛm3Hƒ¢'RDkPˆ»¸—rµùFF›R:v‡ýÒNZ±¼ýµ“Ïf³Ê6 ¶îò‰0CൃЇB #IQD’#ÂD0ôcº‰ÌRLÅÅúŽ€&ˆ‰âÑÁ¬E”,E±Pªo]%ûë39œCŽõ˜½­!u¢™ÏF£%€Ø¥è)H¤épfCZÜܰOV Ÿ‰Û¬ð ÌB{ÈQ;â·¸B{Í»upÚñˆÔaUŸ$7.urÿO&p_v/Ñ¿$Zxö‚óÞC2‹wÿ˜rá®èG´›Ä#üÖ¡âƒt{õ* hÚ¹¦Ýîâ’åék‚6+Gv+^ëuV£¥ƒM{I±:ïÈ"hgÃ~tƒ”ø\ø¸»iÍüBRãŤÎ$S_<ƒôIŽ·ÑÁzírޝ/MÐÔÚLs'‡Xé‹É0?h õÁãT¿Q¶nû;äòÞ˜šÃu)Ó35s~»ï¯òæ<;âïkËh†ÖH¸òÈ^F×…«‚£©Õú̪k d°å…zi £?‰†Õ«zíiº ‰pÇ›wÛ¦Ö¯Ü)†§lÕ1~Xn!õzlZØ©á-3V¸ì(SqÒUe‡“Wù¾©ßÂ5ÒôØ\ž®ÑÎ+ŸÂ†ö½Õ@¸Âxò:cj¶Hžå­2¤t¬+øîM*îÊd`£á#¹ÖyC&—m·‰ÜƒS ‘‡ù%G„¯ôïùßz ¶ŽÅ˜S¤ø˜h]°‰Ii'DC®\?õÍš­m73ÎMv4¿"Ú¥–%gàÌ)B8cȲiø®‘C¯º9×íY=Yº£~I}nnÆ«#‹öZõH”§¼ 8útb®Y=›—d¢ Á­%˜Ý“¨MËÚG‘Ôbµ°ÂsÊEÂ6o®‹)ò,Œí¾Z…±7B$ÑÝæ÷·ª6²,9'ÄŒ@N_gJ 0ÄS¤j^æq¤eMµIÁYZ*ãÂX¶§à½‰EªC<¿o6c@Ûj ú5§>ĆWlaó—`‚§>”"ŸDʈo`Ûà¥MÛlb[­TDcÄ[Gû ˆ©" ”Å%O™À…m™i| 6šwÚasM*pø.Þ2¶,tÄèl=b‡©k»8ÇËZ¶l·GzQ.N|÷m7î¾u"Δó.þTîÕû+¨úHëZò¸Mg¼rÍ=óŽz­ã»@…²2åH:9üU䯪–¯‚ñÖª°nL¹ç¤1`—°"÷IKaS, ÏWß®´> à‹é[åê‚•¢àҶߦ—:#Ær…ò´oñÝT@tt»¬5W«jÃL?1»U«õi£jǾh#ñž·^³d_$v[‹ÕQˆëŒ¢™,0ˆ²ŸÚÊ—˜ªÜX»°–%ax8øÁþ^Ü?Cb Yô{L­ØW7#GdNöâËÔíG±'@ÈX'»JÔuy'qÚ1/œ uSjQ›7òÎÎý¯ÊÒÖÞ‚õêè÷£Ý‡L¼†8&ïW¼C.qÂpKBY# ÿð”]t]îØÁˆj¬¡w+i¾âF.?øÉq¡à$ÉRâïª8—¥YàøÒ;£¢fÏjcR°ýOÆa¼Ô"¾Æ®ú… ¹ärº—ùZSbìÀF¯ŸËü£è¾ —`¡»¹ùAh®“òúɶz_-tªûÛ3È´í§XŽ—WÔ‡÷¨RV;½œým~ }rí5ÚKO º¤®wÜ0RÚ¢¦mއ`°z¬ŒøíâJð€´Ÿ'X¯E‹1èƒÜ]Vu«ë/iA •eRV‘ìYudç]ë”E#œ<*É]äÙ}vI¹¹‡>…ÖggCûRáD–kµÊ”ÊÔ¾ínR§W{W•6hù¼M¥†J}XhA6ê¡ÂÃRþÜzJµ~ÍêQxˆIß&K£Æç0¾ôu&„ð~˾ì†&xÏy:v„ƒxf'á³ÿ‰‚Ѹ¢ý¬x?­4^2ânèã\·LMW@8ÁQ ¤8›‰ sC²à…Zk³B¹á¼ÅTÆÎT¹1?>¢ß’U“¦tu±“[ê‘ñº)ÒmuÊ¢0Cñ«Ãh£¸3Lʵ€»ˆoÎYç0sÆ—³\.4ø|ƒZè¹Û²’ƒ§tÀÖ3ì·†ó$Rg¦]a^!ô¨ã„4¥“5ß*XZX+)õ] hßÿ,Ø÷jú–Ékxõ;£²bвô®¤¡©Oçëªê çIºú›yúòåHÇñEn‰7Ø¥?´ÕL³uN‡ceÛñdnžÌnŽjóª´gV4d茂[%G(#â«`,*þÎP˜žF  ª×ç2>¶âRÄÐy¸ú=”ç•}I|SI¤9ScºFÿˆ6íÑÎ…ÉÿéSákŽUŒ6²–œ²½TIŸ†\s ùÀ›ßòµpã Övû!¤§ig—?Û·†H®ör6à£bf¨ €I{Ô^å±¢7ùÐ"ÆÚªçëÒÔíÉAñE§¡´Ìª¶PPÒ=ùS¯è¿w`n]ˆâCHj3UÇ…>™£Àu”•é¡aî×Y‚ncqv+pÄç§4ðÖtmÞ2À$+áŠk»s|ˆQ¶OG†Ð°ÜXÔ­ùø²|7à__R’v0‰ ˜¡Ö¹;m>ß®U\J¶pÏÜå½;‰‘ÏãƒÞ&X7/w\u‚ »e Oi­¹'étku¯È™Ö¢÷©ÚÚÁ»"…\›Jedg6’$ MžEä+“BeDRæè‚êXTÞëB^OjŸ´rÎ@@¨²=‹‡©<«ª0ÎFaÓ ³Y,»ºRnz¤?©u X÷8ÇÒJÓÜ•‰õìEÕà[ë¾ÿÚÛªé&Ÿ©†‹Ã‹”ÌSÿ¾Û̘f©w4²¼› w»12±÷…¿’?†§ŒÓ!„h‹ Svº£¤P>°­DuÏ›õÒltN ÒÏí‡2X7¼Ú„ìÖò3óý<1 zr¨D[}î§»Þl\ž‘˜eî¡3„—ê/š² ÁM±[¾ã]|KÌ_ÉV Ìk†p¢tb³Y„{cÇF6ŠM•8õ¥æSw¨¤uç•2Wgô!+Ïàh[<ÄEöE'ëv3kqÉ‹ö¢u2ºòÏ" ôog¶¥»­¶êÃP‘œÊ ßë“ Fo`h;=Ƽ4lz¾?Fjè•íŠëî¦áUßÚgÑÕéÝbê·d¨Cwm¿*ú¤ÿ’ùù[:É Œëò‘Q2äµ²ÌP´Cdµ¡>Ÿ!Gô·ÇÕ8¥d!€%—e?†‹ÒP«\݃Uü¢\I‚>IŸ”t,xˆTÙÚü¿ÜRñ¹Y¿VXÀi ÷{oƒ‘üÃŽ®ê·3õ­}ùÈÐĬmze ­>ufg†@‹ûª_îe†Qƒa5ÿVHó˜ÃT=j/ú™I1ǧ]”yÁ'åTm^²zÉl÷=ubd"j¾³™%È Žìà9\Òæ{{yn‹pã€ÔãØ e;6m¥îÏn: –ž/üZ†&ÅSa^U&ðúWªƒšeA¬ˆI5l`,È40,q&¼›b6˜‘ÐMWfÅcc5“Vç5 ÛÒk[JõíÃò8 ³<‰i䬴Ý3¹¾7ÞeÇC¼ÑbæWÎÍ}>{·fK¾¸“G•ÐpÝ|yIÏc¾¹¸üò’ñ­?J/+Ô*S[9uJºËÁÒÌrLÛ8½!+t>ç…ºþÓ©³ÖœPAWÍV;D¾-çðs%Y¥ÔúîƒxÄ“÷2[fÏ-kõh‘Ò:2å¥ÑŸZ¼Ð¤85\&˜‚ƒÏ2E}¢°tÞrϳä¥yÔÐw9š„¾[”xm¼„™2ÔŸÏ,Èì¶ñ´ø.¶ <à'öÃâ7õKqCí”-±f¡¤ï凙Eò•|79¡§Ø9§WÁ&¶l@š+àû;ÑÁÌ-†ÂKƒxä>7òBsiLõí= 6D(eHÈI€÷Ž1PtêáÊ:[eJ ƒ¨ÉG_, òƒ& O…äa¹q¬”_,ðŽØÊ†U›°e¾® HEä*6Ý<^Hú¡t;Ä@ÔHpzŒÄÿ¨hæ½3ñgo?#v™V4[ã)üùX÷–9_[0³ñÙãÊZ;Z;â´ýzy^.-V¾ 6ž$%H°_²<êQV%P_7xh‚Ñ]NSÞËž_ùÓ"Æ=²>É%C½Œ†¶aã?-TÌó Ñêéý+Õç”oÕ²‘¦¢¼,Íž”C^úþË›üdv Èà:º05¡zŽÏ‰’ f;ð†k23ºƒ¦°÷'Ù-ª—ßæw×aו™¿_ç !5ù›uÎkæ[\7±ÅÔ\ýäÀËŒW‹ kdT­õ ñ‰¨Q™³N ìz×ÿ¨}²0‚u$–•–WBîÜP§g ²êC[Ö¶—Ð&ŒjÖT³p2¹ûùë;:m{AÿŠkþÂmͬ>—@.‚{$ûýt¨hjÞ_s[€’ä:ÈŸlg J 3-OPa7¡ª6,übÒ³…ò«dþsÇ BM¬’¼T¾1}½f–u´ôñÏ“u>à±{ߨüåˆÞ¼±s¨ÓõþCã´<]qK¡WÜ@µÏ×(‚£—TÝ™ ûß÷c„-Z~”cms¸[±—ŸøIa\|H“ÖbOןÉÌ‚‹Ô{cS «Pã¡s΋ìŽ3øúü:“±‹ªŽ,aúÖO×b?dgpþýŽd>·ÄWÇ;Ëþ×,3ŒÌBfuþM݉Þȵ”•P}M¹å¦B޹/eËÎþÜ'ÂêÍvIÇ!(¿ÅŠ#,ïä¬nn}És3?·mKm~¯Š%« ú­˜þ!*y©ÛædÍ‘Ÿï‰_ MhO/•F8&àf®Ÿï“¶6DKKµÒbâÚ:g+MéÔºÔ]Áf/­`¯ÁUTþmË0Z& së1Ç.bø÷ôI)¢cW•žDÏ1âà[v­É¡I´Ñ>ýìÁÝÁ³dœÓÃi¾åùªfèQkvA“;!²kòËDâ¼0(œ™Ã¹ªªºÖ$¨d\’ب'ÞÃn4ϸ¢óð2[ôªeýœ:Eê"‹îçC¥Æþä7¦Õ8«¹LbQ ,yAU$]=u…ô/eK“âO¡ºBÁòLÙ7ðt/‘ç÷…ÆÍðç³G(¤þnJ=7!wMã‘S’k9AÚtÏ>”#,ÞlHßÈz1\7ÃQÏÂOìxÙ-:V±Èœá;?;óSÂeìOfÙæqÄ;sû¨FÂQb[ $ý¢•ÕWNoãS}•üÁÎ%ú¹Õ¤úA'#¼kIËÛ<ƒÃ2a¶%?\¾Þ {äÕMb‰(@Ù@ yXLç5žìü!a êÄ›,È)ÉW’ÏŒ“š¶½o¦†=¦’žpÞÝ„Ÿ¡Te ™è8Œi¨Z5a÷³Jp[ "¡¡/Éí˻Ƿ†S1|Dënüˆng§éltwÓ_N´Õ–.eæ?y¯¿ð\À±½búHà1áìœñ@"ž4²M-Ð Ò~nüdÈ0–Û/N_BЙy¶Vù6;¯ ÆÈ?Ufq^ºâ°îItŒ1#±0›¯¢ÇÈyT©wÕÝ–Õí,¬ÿÞU.ú%®% «ÚbX5ÅÕ,ìu`›f•à‡<ž-åÚë"ºÐOBÍp ‘é‘…þÚö*ˆåqç2sLr¿ŒO7…QbUÖ  )QWÜ¿¼¼ŠÄYT¾ŽÙà‚¸ÎÁ= .írdH½Ips¢,®Üzg†Ó±ñHºÅöÂ1wKØ[ŒtéˆA–=Éš£:u¤êLv2-õ—H=ׯh ü2¥Ë34Hl£fh‹éoèrúz ˘+Tcø t wëEˆ…ëkùñò° 6»zdp~ ºß²â„àeJaaèB]A}áá²¹ñç±È(MþJùà5n®ýÙ±ã Òä®T š?@¡û޲Â|HL^>;XoYŽÛX=Uý²ùtÇË}ý•Á7ofB‰ÜOuÆoŠ^¶õ’o¿åù—gó©\‡‹ûÃLÃZ—g>m¼oœa:#~aŸ¸–ï?8O%èҙěÇ.úêï“ë17) œR=ôäSTun÷±))­|”ƒt¨˜pÆ'ém88áVÄß4Õ{šp+,»îÙN­ƒk?–…ÖŒz7Á¶¯X¿3ÄÁ1H2`N®.•åŒeýôÒǪ¦²ØÛ'<+·#ZŒ=ù³â>V~i5åå![Åü<CÞ»ø ]=Wç!0ÏÓÖ\ò‘{â½(Œêv²~”vIœ¸­pì::“B¼SÜ4OÙ1¤A!0VHëÌHW±þJŽS„ q½OÕÐÜ"{Ò€;1H%ãO¦y”¤·ýBÑÊUµ*D ‚š­×L Ý%>`õB¼ÆgÙ¿ Ýê HcÌúDÄ&?W°'‘D‰h¸FÛÇ~´n6k ?rø*x#åPÇiÌÛ¸Dƒ¸W êªÿCß ¹5݆U.LOÐÓÛ¼ÁõÈ ƒ•×N3è×véðOÐÄëZQ†Õ±’‹dÏóãTðˆ8£¶+Á‘o¡?ZïÇæ¨-r‰^cú½åmÙL—Ø#5æóu¤‰ä|•‘;) ã*岄qvx'!fñj€*‰˜E×ÖÁútmᑚÃH@µ`Ø¥ì9[W–DwøªÛbzñç© ~4`¤RàzAï˲vµßž¾”°_Wù\ÑZ€Â£—‹…½¯Ž{;ƒuåÖ°:'o &Ú|1‚«1㆞oÁ$#Èìpd(†U Iüó›b¯Ð4Ù/näweíuÞÂ5{q÷ø\UìçD}x(w–±½“öWz³ºÓj¹½tp¨i¹z¥L5I•[$…YJ8,'95ô¦ß¶Íúºµ8£=%ðÞmÔ§Pìuy~Hñ4€¾ î…Kr˜43WÌÎ.½y8~5S&|V¯ÝpÐÉÓÏDæd„FµƉŠÁý}èº{¢ysg{çŸhÅGÎÆY?ìÓB¥Žò”ZUþR³:|{xòÌ}€ô{|;G{_¼¼‘ï¦"i×´ðmC†gÊÅFl ÔÏÒÌ;M<ãØï`6œ®lñçÌFÎç¶0Û£]# œ”èzæ6C!¹$n'1]'m­4Dð‹%$87i9Ú|ø=Åí«ç ÅC<ÍÛ¿s*ÈèJfúù;D’–8Ù|§r¦vë|"?Q5–?A4=u„ÅÏ:elÉ3^;omwÓ ,Ô1l˜ÝxT[Ü6+9©{!Ɇg‚Kæp«Åb“Lå”JF¡ö`0Yi~, ª0âËÏÏ„%…„fx•U÷‰}Ãß8Ä™ç“5Ÿ®lÌzÚ}¡ÈŒ2pPg^Þy÷¢µ¹•¼&ÆSRZ…$FŸfœÙ'§¸¹†ù,u 4÷9wGÆ…!¾à`¡ð©‹"Nõé½2ûJ%8âc×}óbØÑ¯pÿ5šd z’œ¾ÁЏÄ2qOÜ‚ÔÂr­X™þÜ« f†ìüøÆ¨Þi“ÕvsÏvõ™­×Ú̈@øé;mvVÒ6[>w}—!P(4¡8ê3'ÙLÍÔÅÄ=¯Žþ"q4!ç¯9#VCÍ@1{ATÉp)ƒæE&/Ä7—šªË±hüøÏ£Êì ÐƒtA˜Iè±:vŽžÄÅL%þ¤H Áy©ŒOà/gø¼™ßÚ]ü´¼=JcžMªT`BJ8: ž[œDqX-ÎH)d‹*Îå=,r(w€§éi’#ÖÖéÚáöìGàüÆû1²qrHdSƒ«(ê…¥™O$ ´9£™ë‚e ¼þ¤€’üAîÂém«ÞÕ¶î6œ”~tä_qpP†Z¥6ÔîíZr,çJÀõØii³‰§§”ªÔ$APÖ{îI•2ˆu #HC0~™òùÇYoI% èC÷6ž ÈòÉLC7òCžcyÉO]nh÷|"(P"³f„£îÅÂvâOÞÓpWlîÃï~Zß>™ÐvzM>ªHÈRÇ»xwÀñ æ|•ÓX¿õc؈ץï߂ߚ%mŽ$Љ¥i&úä ‚}JlK¼ÜâìÖS«*é{¦·Ê^ÀPû‹SŒ j9=0aHwâÙöð%gu°¬y’S>Åú3}ÈóŽüÕ›ãÜwþÙs¶…¢AþÓ‰aXp[Wn6u†]ö‹ÉQ¥¢ž!š0/ôÍ/< 6“M ˆ|ä o:h Ìf‚¦ƒ‘[W¸Ó¬Î¦Ðæ"Ø¥•Þj Ù£HaS`“¬½¥ ”¢R÷ýÌsT{C¶aÓûI/'ž|øK|óUÓ"ÎDÌ­Ø7ˆaîv¡ÎhN5tdöƼ˜ÙË_^ B[oWn…}ü#Ì¡ÄEØ!C™·ÓCóÉõ2WèNÒ &J õ‹vf:Wë´­575³7 ºYbÔÞÓ·©©˜vÙvjGz†´0R]+—¸®8¡~E°çD !Óƒê2ØYèq51æ£( ¶Rî9ƒü黇5g)'€µz&4Uð„»\üä¡t*î…QRt>ÞǪlð_ßÕæ-oKF+7hpÛ{¢Nï×ò›)ÖÒ{XBç€{¬&¯62GÛ¹B.â—íÜš–î ‘Ü„m]-è뙜߬³>3‡_â]6¿¡™—š‚“²LÁ­¨8×+ uÖ2kLIeFäCôöp¨Õ¹XÖº ,ó}A¾™‰µC=/C "iÖàÐpØOÉ¡Ã(¦Àƒ3Õ¬wæá*" 1S!(Ñ¢÷Böæe[o3t¿D(@ªHÜUpèÆ”á·Ÿ>v¬î…ŠŠÌgû}!Ih=ÚÏ>íf2‚¥SH@×ä%ðBUb¹hÿÙ0¨ONÉåÅ'Ã3ìƒ×{þ̯î%Y¯~WG‰úÍK¡¦¾¸|‰“Z€¢œÂê[ Âv*g«@9[Ó-ÿùÝ[E¥`'×$ð‹ ë>W空V{4n~*Ù6E7—dáLÉîoŸvíÝT ¨”ÛG6Ìúrú1²2õü<=ÿAÿüñ<«!fw.ûqƒÉPDËT\K³›±Ëê õ¦¯NÍÐ’P÷WÈÚZž{× ácùÐôÆÝsÉÈð~Ò ­;}ì2Ó 鄨W) PTÂý,­ý¬€X'ùúJ¯Ë³ÏÈ©¿Îš@/Ñ4Up[ö@ÑcCT\“T`Tš‚T}â‰7ZzŽCäT¿#Šwˆó„Úû‡,ÛꢟÑ9x‡”hà/‚ú œÁ“e½‡l"`´(ÝêC ½àgÚOÙŽ¶¦Ê¸¡:Ÿ‹:™ 7ÞÃAÂ\‰M?®jþÜ*±ßòÐReŸŽA X\\îëTÚnyŒ¼‹H¨ ÓF£ŠÓÿRŠ0µk=’,Ç>(Å~w(+³‰±a’Üãm|àu©Äà®ïð©„Ú–ÕäÅÂÝ%Ä4.D¤þÎÓBˆl˜Nu}.mÇq¥ƒKFÇ9¼ôÊá•P…åÚàkCeމYÕdShIå"ãl<3a­Ü¬é‘2Ï$"ƒösá Ô¼Õ%. F€ ”ȼ=àª7¹Ú‚L ÐóßÐnÀGÈ€‡Øá…ôBû-§íi³ýRäÿõ6X;ºåª ^\¬‚t¥NKÕn eýpc☚ù0D8w~¦ä½¶]ì»8¹fÿclÈqZö5òà·¯VPĶÕ;„7°¡ä¢$á;µÊR*Ò´Šùߨãóo­NÈOê¿íî~9”8Çëµû=÷]k„î0%®2Æy—¥õ¾vþTWÒzlÖ¯¡{TØ$Ýd›ßdd¿±“Á &roCÕ¨À ‹ç"6f±ª5 OçŸ^뾌kÖ7òIQî²KÜòvÛ¾GîÜ®j~†Ü j©2ä¤ÛŒ¦ß^s÷"pÈæâaº›ip¢ÃÝ™+Ûᨈ ÒâýЊ2‡ÕÙ\Òb¼úŽ‘†‚¬:<Ž)šm^x2ŠŽÅðÖÏŸûˆF2 ?ëëKöìÿUûcùg(ï”z昩®üí*üð¦îeá­Pò*1Ðcþ†Bí%.ce%å£÷N¸ù3?+ëÖÊSÎhŒˆœK 6â=šifýƳ¹)€EA‘“²%÷ù÷e ú›Ør–0:wØsÃyøÒ[k9yuøEœøvÚ«,®!=Ä>È®“×ï´æ^§ú·ò6c&˜%~×ë÷7‚ê×¢KðònâvË03)²^ÃÛb넎üýhFÕ˜©‰‡Ý­'χÜ^¼Ðp˜û »Í „³n‹çLž7ï÷+„K¦Nc>Ä5RUΉ•»:@ɬÌ*÷!Fu·¤åKA›³A_7ÑȇÝTäškäBùÆð˜ú¹‚ꣲ[uiZIU;¿ñç%TyhH3yé­$ë/=ž1Fª.h][q†êß›ÀÑ iŸ^$¤Èa½pC™aZ้Fº1YjõCÝRª¿gG-l2ä‰íxÒ =Ö×3Zx?+u3ž™ôÈ8u‰·Oîx°Õe5«Ý/ÔB:`|¯Ogös»èÉóóqa¬ð¦ÕçÑø3¼ËyÈ-aß&QG„}]öû¹ž8>‰J²éù†¯lŠíOXÇ%;«`æòÏ^v}e—†ïŒ¹ß¡ yØæØŒo½ÊiL÷±Ë {ýtt:—T0+8ÀZ(”3õ/Qå&Õß{AÐëYUñÙ&Ù ö’ÓÃkê¦^ýGøöN‘Ÿc ¢}—¯)/94:íd!aµvÀ€®ªî«j¤:[Óœûô¿‰>y0NÙ›ƒ0–ó#(WU-‚Ôûø9™ *M³©áÆ›üLaýÜ JY%® ’5¨àŒ ½ué€ÜÏÑäX3å–ŒeÐ\XŸÔ±Q`yÁGD çiRÂ_NiÔÌø—"cBûYcc‰~ÅãG'OVÇ[ËNcr`ó]ôâß œÅÜ>,a·³ž/9;Ox}.¤Ëór„^°Œ‰ ¾sbït,OJv]ý%Ä`¤Î‰uïV#Äð¨ŠÝÅž_ùÍ}T'tä¿;ßµëÖæ(ØÁR‘}¨Ç-¿™,ÛÚ»5×ÝÔ*Û‡a%%†ˆyDË!A5ÄDùþ}|Äö’âBRǧÃAÒnî‚“ð”,öo±h¬Än-kÖU&|ñÓ*/ò4ªŽ¿csƒb®KÞvÑÓ3BxBzˆAXžÜëk×y ‚"8‡»™2qhWö–UðH[^”ñ–ã_ÌÜ*ë“î‚Oàb BøS_YWÊàh™Ú ±©ô)Ì ;Œ8š×!6gEÅ´–”¾'i Ç7oÒó¹æñ<ľúr7Šu7 ª†)ß9Ò ­'¿ìäOD^J˜ÁÌ׋ö? iš‘lá%ÄTË1ËòQæM®~[þ.at»@Zùb@n6e{7)>MÚlüVhÏ'‰q~Îën¤âÈŠ¿ÃÑÖôŽ&«4 Œ‚ÀEÌ1P82íÐÈ¡Ò ÎÛXþT\XáÀ÷ûØÒáÁ¨íb=n~ñ¥'l°ÛÆ,+b¾­ÊGhÏKúÛó5#WÑ(^Ö”Þ¦ˆ }ÅÚXÙE\0¾ö‚ÑHòQ¨söÈ6‰ã7TŠ—“Ž@áI¸¤ŠŽ ÛóÐ'ÝN8 ÀÃå¶ö¿ü¹·q¹ò­>6©Üøú€dKNü¡Z’¨®´º3âÇÎÙ\ð ?“à×>bI¨Ì•ÄîÉŒkÃïÕ#(”ð…*®±’ÓñR¹#‚D=þUi€–4AèÚ5 ½#¬‘&],ÚÏ¥0’¿ãRD1(x¼µ_’ˆ¼–ºïWÊ™­Â1G Tª¿{CÐNp˜Ro^ÿf:æÈ¢a¬hbãùÞÄf´ä3風i k›sÝWN•g4³ù°Á;òª%‹¼±>Öo—eíkõþÚðúÄŽ˜‡ïÚk7\Ëyl®º:ª™8é`Âà©ðDß!í¦~‚[é*šã ãb4¹ÊJeÇ•5©‡1æ ¾ý|M’%h×ÈÁ »2gÊ¥17w5Ê;·P¡ZÐ~m1³ˆ~™?YÞu´PùÝ*»2ü œæ®$î†å¯oÔoåq›&eïDžߣiã®ÒHãöz#´0ƒ (O)çaòîHŒ3F4·O/š Êßb*K#+É…P¦XÀšŠ’†Ç¦zäG_Ñ4Ê툯 *¥|Ã1ˆ5ºÞâÆU=m¡ðö`åm¡µ§|b}D¢ìX»0Æfx3ÏÅ^ߺâlM²ù6Š@¬‚ñeÌ[‹¤CaHâ€÷bóЯ/k·š™ä‘§Qÿ Ò†åîØ+,³jé„lÈ‚eä_~UÏzŒªê~¼y¿Èzå¸bUÏÈÄšÞ̶Éïˆò·oùšJÉd’eÁØ‘*ÓÙzC_8J¦äe#-Î80«°ræ>lºêÓ Ö7“°¹ÓQ¿ i¦ï@Ï¢Q€! ¬ kµ~7PkÚxR7sß®r[+µ¤ècI gwF)ËJ*…Üú’“Ä5\¬3÷½ùàÂèÛ'å?€b¼7üf§¬>É,ýÒdp>,©!žåa Û Ñ®Ž+ýæI6NO»`xîùYRε“EèýY5ɽU»ry¡ªêžì‘©3ñ“V¡¦Úì}·ùpÞŽ8Êh‘"¶véÛÓüœ‹eîIBñøÒ.€Œ¹è÷—¹M§XßZ™&$¤¤¶Xƒ¤üH1vdI¹Ü¸Òy\Á*u4®½Jt%?‚õ¥_ò 2Q?&ø8ÆÁÔH›1J¾¿²ø¡“«žTië|V©±ûí…Ï{ ‰,§£ÑQÞï¹: µÚÍ/T’mÄì[x]grݯ4/Sã kL:ɸŸ¿c”ò„}¥ «í8ßëåÅe6”Y˜Æ÷¾¿ù"Æó–_‹jQ¨»“Cþ½>gÿL[I·?F ÞU°ÝÅŽþh~¸ûÆ7Ù»•ýMn›œÄ:0tB¾oDPÙ¬¼ò¯‰²®§Ïî:mlí]ª0Ì®Nß“9/® ­ 'µ”¾¨ÐaÕèCf"h­2Åô ÞZ;}'l²öp{CÉ÷ª9¬ä«Ý…=Ú¦s/Àlh”0S’ÂýŠ,ži®¼ä€¤!†jЦð.•E”9”l¤¿Äñl:û<âW Ã,‰NZ\‘&@êdJ–V~iЩg·Û·8Cì£ËêÛ–ùjë_Rǧ‰UwB—Ð E)²fȧ4û"’*`uòC”ºdb‚Üge’Ї:„ÆêósXóo¼‡¤¯ÉÔNSv [mØÙ)œÉ‘V¶vVsXMš;1…CûI°+UDµTQƒ­×9ÈSezسí™ež Göôéáü/×oH©ŒKNhe¹¦–àµqÖ¯¢ÖqÒxßy¦Üºø ^Ћøá‹à_ØZJÅsá©vš!Ì:´è…ç¾ìðˆaߎk`k$sÑÀÖî)‹Dìl‡ÆÐc~}å;›ÒÝ#rt_’¿ø6,% ]ÈF0*d7¿ÎßÄnàŽç­2N´í8LÎà^+õÜ8Sf@BqÓB‰°÷•Žd «÷í,Ë¢KL?ÝQÕå½g2{Ú¿À`¢i)å¯ ÕÖ¾è’gôK ‹v9ûau¯ ×Ðxßú+_&͉è}cÌ×µbF‘ÖGÁ¾ï€çÎG³¦{=Ö’jÝNåÌM‰yPÆ3î¶³ƒÁZÿ–EÅË®Sã~~Wß§ «8â!M&‰zÿY/‰Å®?¬Áæ(ÄöƬfH®NH¤˜ÆÃ­Áz‘‘hÒºÞò©Läë :Úø&Õqç•'›|´ò(Kgjíøu+f[çŠ@ø·oýA,ç|óëTXw·äÖF¿‹/" ¯ªsÜÉHx{QI=±„¿À!:dA¸§§l^M „Ê”ˆãŽtáX®e=hŒ„77ÚûB­€„4†¿½µ2©G“?¼‚ˆþûÝ«ÝI1g%ý=÷¶|÷±GrsÑ2ò¬Ï¸MVØ Üa)çP^ð/ē䲋ª}„Ev!ÞüS£&]¨ùW /È,B5±œX Ïûð,9î% ÷У` - 鮨,\ÿ ÂiK–‘¯Â£‰¬zL˜ŽXÛ¿Ñ_A‹bµÅƒÉÏ¥2éÀÂa'.”êʾº¹&Üf×Û¾Q¦t$ņ–‹^›²¡ÑÞ}â 4QL) ³òc‘yEÍÕ…Çg‹íÐdìUÛoêο¬ô:Þ?{Ù+SÅiÛ†øu¶•Ÿd~ýM……o*>˜)ì÷w…—¶…çûÌŠ§Ò: Ìk 8D|ü¯p’®òôü¨POØw‰¸m|oâßl§ë©Fï«zu­Ÿ¾Üb ¾wîd£¬©¾Âl5uÇßò]:LµE­g§· !#î‘PðÁÆZ¯ˆW£x–6 FeN®­û£DU0~º5‹w°øÆì–ô; %ŠB¢å( ïw†§£Ï&í˜e½Ò(9ÕdKô$eOêÓÓR§›µ.Iß-à–~•_zB™g^g<äðYÊ£ÀÔ Ê?Òë.nbrùK§õ ®[Á¤Ù¹õÓ¶C87B“ÏŽLN²tr‰|G—9EoûÙxðà*s¬¡K9Œ=‰¹wÿÆcâi6Æ<=#–Å’0br,E¶Ì:è">/splbÑ È·ÊœYÌNcxê«Í[ȟߥ[«¤Ñ¶j¾¼ÊÞ¾’‰4îßÄÏήMK¯¶-èö|žD# ‡š$t½HwÁ4“õ¹òYçü幈I¸Ž]#èƧÄßÂüŸÜȳôksêw+.*6êL¼i-²Ú{ª})7:dkÒÂÛj‹¯Š 6(±¦?Â%s*IERœ¯Ðƒ Þ8yüeÆ´á)4beéç“ u˜®¡óüž€_Wé“¡F’,7… ª ´ aÆ¥õÌÆ.aWר&ê]då¤&²)Îhá]lž#•ì™eœ`b ‹n+áRºó™´dÕk‚bï|7ØHÙ^ªZ{»|™IL¥Sž`ð¼£/ºNÄsöT§<*kÃ`Û|ãC°æí]ÍOW5_Ÿ¢.–óÉ!£ãA²TQÞq2¦lº!lDV¶ûp ¡ô’ZŽ%^CÝÀ9Gû´=‹Ò*B»rçDQM/ArÇÈš¦Â=ˆï›÷ä+QðÐOnKúdÔ“ýÀôÎçJcòøiÏ¡sÞ»g^ýè÷ÐÁu ¡g$ÀJÛ áuëÙ€‹Æ;Í›ýœ{êÅÐÅkÿ}™²xôg†Õ!ÙÇ•ŽrðÅKÇÄj“ðT ›#ÅthïJÜ5~a^ö)›FC{#ƒ-Eøétm&ýq-Ó\µÛˆE˜;ü^4}ø#µP±!â0"¹·£TßGí*/qGäOã-EQª¸Â“¿€ŒH‡V—7õ¥P°\ŒjÎ}×€ýä(âïÓéi#V÷h*m›kw%#%zí´×óU+5Þ=Æ¡ƒ’Seémòëv.É«Æ65 ÒSVï Ë(øûåžÿ>2@$!ä-ë¥çÉ8yÓÀÊT¶ ±î{LÝιxÚèçNÆ Îb,Þ®f“c™^j2ÝÐ5U˜T®irvghôor±ÐCý¿"ç¡Lë²GÆèv„³OìiqÑÀúÃtKDFVEîõM]?t‡Z`ùÚÝm.JÍ@ ÿo¯1îÑB?Û]#ZÊšÃuD4÷ù=5ýsmqÚÝÄï~)ò(‹„~x4E.Á*»¶ÌDãB&p·äA0coQ}ùEñkOLU\îþ]gÖ'ë„Ô0f~þt‡âÖb‘d!$áP\ ¢EŽ ~æÆ‡ÐvÈŠâwã€ÕÜž’¥IgÕX¢ùÒlÛñéyœýç7>%´ð©«¡¦Ú¤5ì&Ô-ì ] _8_ÂÇ–s¸{ôD¹Ó¹¹yÜRf¨fžuȦQ7l®Á÷–”zHƒjò?'\BÐE`·üµc–"o 6†›Tùê^_ØNW9{wˆ2Yá 5$¶ŒI1µÆç°°Œ*WÓ§‡pã­óä¹õ—¿8–ÌtQmïò'H°¸Ó ¨B"4ƒÝõ¢ë0™*— ¢<;…<9 Múƒnª= Hz,…Ý{ݹ6=4Z‡aÈcÊGxÑE"öZ)Ôôó@ÔY#‰Cæ• <î¸_Ѥ¹1‹‡raž%J8@»må@%ÔZhæq;àI#+=òîNôz8±ñ‚e ±Å›cŽgzOÂošò2º¹DPi°Y®ÑzÓB#03ý¡0½h7)º2K§+X •k†—5Â"šÎÇ€ã}ú—#i3ZªS¤Ø‘Ý<¤SÔ níЙ ùÏCŽ®¨ÂFÁƒM©žÈÆ¥ãRÆt™Æ+’HYcQc×ð6·£oëÔ‰À䲄ÿ£2³Ô3ëä¹ ÒÏŸ_Ÿþ¼È<º?l²žðMç¯éå/ÐÒÌ ‰˜=ÿ3°ÍÎøä|}·‹Ø‚ç} ?•n&øC~›Áá vúÕ—‡Ÿv+÷Î9MÜvÒ0•ŠÊ£ñ ¥œhÿ‘Û—ÜÞU÷¦9B" Þíx»(—ÉÉGØ—Sâ¤1¾N0á*ìÔ†ˆ†Œ ßÆ´þ4œå£©o ÜŸ9Íî`<5L~·¿U1õ¡gì©þË Ó÷gbÄóô‘B»#­sÚY9Y[Pq9Wô¬£2½Ì b¢|é´Ô‡­j ŽýÏ&»É±ŒkÇâ3¿WÞ¥ýzì`tñ·3N#Ÿ')4Aö8~3!_[˜Ç«‡ý ô éeò­þG请âCõÂ)±V@³Ÿ‘ˆìh!°›Ðfÿ\ ‡#H]¨DÚ§Ív|rn{òˆAB„ÌÃæû=²e©ÁÈmÒCªëÊ¢Õ”`³ŸI´ƒuz5DÔ±öù­’Í®«-®é(hö'¢¯Ñ«"K¢ìrðÂ,6ÃÜÌÐÈ™|ÍÝOŒ9z4Ä,¹w£ÌÙ –í {ÝáT†w¯ÒŒì$†Û¸Ûi8m'Jà­AH –Ÿ›¯l6¥KE}þ±&ˆUÂB5òaS`Œ“­ðDÛҥ`·RºÖQóGy}õ€Ú Oûò %ß÷†Â.{Åöu$„õ&}ö»ÁŠ£×/å$¼ð3¡ÕÒ¿…0ç ­>¡ç¢øóuž1†p'÷#óxjº…) GX=Ddøu£úŸ„ð•ø´ç®É¸Þ¦Ó¤šƒˆm²`^B;Bnü®¾æO¬ó^„ÐÂÆü)Ö …7\UÜ^ðË]´ÑË;Ñ'¸Mqg ýP-ñ¹cèžʲ,X¡gŽ©6ö€NxÚêüôPÚ''$…ŠR+žGÔµíh½Úü‡ˆi)Uwñd/—pÈewšû`VÛ¨wÊ›ä9á²>½N<€-‹ê~ëâAçÇÚA:Ê‚©)8³™„‹ iL¥š¦ÔçÉÝï×r5Å=ö°Š(J)£r„J¹—U…)‰¯Öð6aqœgR~²\Í“((<Ÿ >8Å­üqÅø˜Ä§åG˜hëÒœžÕƒ`-–-tP6•¾/HtUϪCdÌ<@ü8¨!®ºõÐÇèFT*5Ž ‚×” w¹Ü6Ëê|.Õ”#…=fPÐä´É0½¹mg®³Ç¡Ã½ß”ÌM¶Â.Íô‰jêˆOI‰Á ú½aîÌÅñR®‰³à¨€2Ò"nC¨ã_ˆãFJ8ÑïŸD\ Ìà|ÏL‚³IOBÇvÙH,ƒÕ¤økiµ¯‹ ¬”æ›'nRè\Þ.Oœr÷¿Àåˆ|<ç§|3=¬)X‚—u LâÞiíÛ#Z†‹Sÿd=2p223µÊ΀éá2cäTð_öU\ ñzÞ7WÇ 8 ä£Ä^VâyÁiãQÓ þ+~¡‰–ÿ³ŒDÃozlŸ#^Šçj&BI‹;©»p@îFV«¡vºÚ~…³’^2‹us³2Ÿ¬É%#63üŸJY5q•AÄSñëª×‡–:¹Ûý¥ƒÙ9N³œ¢Å=æ×ùºº2ÖòF a ¤¯÷žšÜOì°Ëä%ú(ipŠËWa?§üÌÆn{H:§Í©TªŠ·]ÐÁEª•n"¼Õ«gw~(îòó³¸>uB¬aR†ä¬²‰Óí¾†¸+§·æ²;Út¨¹z?#íû‚ȉ݉3™áSDä`) w¾cÙL›ËGjÜÛAŸÃŒ03ÜÚQЏä©!y²ãÁ Ø7äLOvoàç4-~f<Ü–õÒÉ#%’^Xëc« EålK Ä¥2UøîÍt˰iÊæ¼_xe¯3‰ù²J!©Î»¹cÎbó? Y&?¡Nš 'X]ðµÜwÍTûåέUÅòìa .€µ=À§/68$¶†˜Žï>?á”`È^¥á»<Ø-»2L { u9†j·ƒ“a¤CýLä¡Ç»?¡$Øb'VŒ-B·T&]Ž;Á)’VáÑäí×@ËmFá̼>Øúä8¥yë¨V¿—»ÙyÓÆ°m‹å+•ìÏšk¥Ó ë j߀ûÜ¿ ï¿;ª «äÁ»bí¢v…v‹&£ý|(‘|ûM;E‡Ëõš8ÄAÃÑêwöŸBh³—ô澎)@ ¾é>´¿Íô Ž<@L€ˆ)¨å;ýR3»*Ü*ùÇúkLñgò Ρƒ9߀ä<…± eDA¼ö@æ£Õ ¯·@ <¶4Ô¿–13…#© 7–¥ùÛì¶ñ6튘_»BQÊð®ÑVpÕr´’ŒØõYœGOzJkdvÅ™¹ìç0Ô#ʃàìdÏÕùÁr¿% Wl>Ò9ÀÊéÔk³SCtÒRãú q{ó@V§IÝÁ\zV¬‡tÉrð`Êk¿ –ÈUhçm4­]M1OÌS‰„íÇ ¯ü(·­O­ˆ„˜õ»?lí­ðOåƒeY=ä#áù Ÿu†¦{ßL6hE”¼ÊHÏubÕÖœ»¤ò`à©Z„¡x¾™¬Uµ¦±0îR³U¡UŠÌKå³ÍŒ-£D[>Ïl`5øƒïÀß*§Xôr·ÝJé;¤“˘ïçk bc:…/ÞÕÞ5U{ßû·Ü Û´OþÔq#Š2„~¦W•e\¤¢~G@R|k²·Á§®€Æƒ÷j‹wž¾¶7í˜yœ6†§:fv<Ôp#²Žú³‡ßÉM.MgÀ¥C¤°p¨f¬©:Ù²Nà©0:ÿ5x¦7èÔ—i¶ùÂ#2ê&SƒÈÔ>cL_ŽؼF¼"ý”j,5ììm…#üÜ5~4¿¹Xr8‰I‘…$Û¬ßs˜¾¥†¨Lþ˜ÊlCßöÆ5ÀÏ@V;Qp½úl£¿=Tõ°MN¹©\Ek(:èuCQýùåg– ×­Ø–pR½q‡ºúÕ¦YcW`oÁùÅ1³Ð´;>F¬w놧يä/ 9,à3–ÇÏJ1‡öEÀ%²+"vȽ&¡ìû´’Ü q¸Â!õdã¹<ᔡ}OA]„Gì÷ gÛÔfC»²ÙÊ {¾".Ý*Ñœ0q¬†e5!êYÖpÁf@E—• ¬ >¹*g_¦~µú#y>¿íÚ-I×g.[ rv)Á¤&. {Yì¹íMïûÌÿ öH˜°øŽäü@W›î/<æÉ¹Mc(=zü¦ÓÖ‡µ‚œ£ÙlÀyFLdãI;"i®RÔJmô[ãÍë÷LO_B;Ÿ[nÊV9PÃ(Ã3솟CTÞÏ8µö‡@X‚[7Ù“Ì™.D4ѳV½VíõúÿåØ=Z"0´g6’££éZRYyG4l òé¶2îknêï»g9õƒl¼C 団/ÐhrÖp‚Ýšã4‰ó-‰¼.ÜœÂBºªÞª°Ó–êƒ[¥xµÕàæÑ ãçÂìšO=öR¾KÙ4ôQ·› ÞA\=§°”Âd ?lI‹ý+GMˆ^iBfÊÿžŽf ‹˜~Áÿ®¼–Ÿ„A¯:gáæ šó{fÖ€œ(¡wò¿ìæÅšÓ:êÄ5¦ÌÍYº4 1šÜÕ}z«é<¸¯Œ½÷ß»žE„@gÄ@}æ0èt üXX²Ý:©8=ZE`©àΑ¹Ûîz”<éòJbÎù#_\¼£¡9ö ”sx†ÛT$u êW”Áé J{s´†Ÿ_†á?Œ3IUûíp•YÅËYés»ç&Ûå84ÿúÃSÖ‘×~< x1›çÏs ¾„™«—‘ÿˆÀÞHáéÀ ’GYË™]° û[(%¤Èa5ÕÜ&îä¬=5£ªù4Žñg°™Äº„0$(+’‚T=ƒ³ë±ñìzUŒØØm­fÓì“5¹õÑza® ë¼!å×5Šb™µ÷z¯ÆŒ(kRoQ‚1@Ž®õ ¹_õ&›©rvò&‹íƒúýµ2£\) •眚éR:¦Û»Ri•ÁÀ£û‹;´#Ðqؼ>‹ÛcpúaR ›ÕŒ¦jùãü¯þÖPEï²/H`J-7ù Àʶ¾j©“)ýÅQp]Ví/°¦.‚µí¨‚×ïÂäÜ`.À|U§Q:ÛÉO¨¢¯{Ž=µ±×6(˜ÇÓB s–Ïùº Cû Žyè*JŽíí. øg@äÑ]Œ[F‚ùv¥ÙȽµQJ“¨~Œž€Ÿ^~,¬œêt–çÐz^Z,9|=K;ÉÃîû>W|HµTŠó˜½Vȯté³ü$^hˆ¥F–ov™=† çI÷1PŸ¶¹iYgÞ*z_H—›ÿ3£{wx0\™ ÔÏV0.»’sÈê쀛€ÐNÀ§ðnëÛÆù¼~™@óü±ÉgùæÙpó&¡²ò?¯'fÞˆ/«4!½àqªr2Þ›Á5a„€787}"RÏ …É8¨7ú—çÍl­Oÿ¶šÇF1_?9Ç}l½ÌŠv~¦þ >9<ŽÎ³î)ÚxF¸¾*®¶Tã‚{·"¼”tÐ;É?í`É÷Y6D, áE˜ð¿£¶Â„'„.pœyTµF:†±b;ÕC?eQÞ*§~³¡GáhRXy$‹tv ¶ñ Oç;y[ jB  ðòþ¼ñínxY7I/#Ú¨œežãF}æó‰Ÿkxç‚IRåø›iÕ…ŠH±4O¤°·Æ#ÏP¸çž¯:»†@®Y. ÆW,ü­Éò¼W"»Î$YG­2VjÆ+¬ý”4h6y°eíÑYJ–²Œz±0Òä¾Þ³‘ ÅŒD6ò’vïÇÖê³ßr«¹ÖEŒPâW‰ðS/õÏ}~¤ Z ÃCU–˜g@jÓ7CØLwF·ÄÄ€)õ„Pf> ƒmuÊŠÓûÿ;”ÉÎ$èk„o,ÔÑ÷œOàŸÁ Àhm¦&DK1 &˜IÖnÑ# ¿»¸ Y_ÓøÆ²,‡Ó•‘¯RïtCZoÏ ~L³«Ìhήè ßDCß”oÀ“»äË(zÏ”“s†$nÄM9^Jó$æÈöø´ePX¯“®]–©ðôÈÏ…‡í°‡JEQàbÏSЂõì–º „w}Ã%3ѱT8£¬Ý´u>À˜*¥-”nÎÀÎébÚfÉÁɸ‘9D¸Ìë˜÷Gª’&’Ôa®°”RA°ÄQ·IÊK• Óµ‰ÐžþwÆÛ­EÉì˜ýTú•E|šL{¨[ŒGå趯ÃS¸ùŠ‹ÐûðAL;`NuxïÛG·…Fí Hrp17iˆ\rààŒ©8 $[JÊØ­ØgÉ]¶bÒg]œ¾S°‰fgìrqÐQÈŒg±MS'–@¿ü±!¼R-¢¬àØUT!•1"nÑfþËh”â{P ä‘ÞIÉN7+ïd»l¥ðã‹JÚÇæ4Q}Lrâ¾ßç¹–Qqÿ"óàízê'5èèbÌò„–®Æ,m*‘4Çb^’„¯\\´øë˜Dú¾˜_’!+Y%­ìL1-dz\òÙðô’¨70ûOyïáñ¢1š'þ ëB7÷Ä ¦¨=œ™Œ%Dçûî»M…ÝÝ3$‘¯†‚'¦îSù!æˆþU#6¬,ƒþ9¹\ÇW&q'Là {”ÌþJzõ껓u{I·b—ü_]Ê©Mÿ åêŒJÚÉ6q›aVü6ß$òa·[º…(A2EºÅóü¡™;P øWLàȶüä>8*£»àÆ —w‡»Œ ŒŠJi·cÊÀO5ÍTßû« Íüx"€¸=Õ—}îSœ‚1=Ìê÷ÅŽÝ Ú™LÞ<½hAãúiùmI«®@;žO/?,¬?"<Û\l‘ÞÿÛd`™Ï\‡Þ‡kT’¨Åê+ÜPC°Æîåë}´æš{‘óDd35ŒÐº„D)½;R¨c½ËŠ_>2ÃL B\R)BV«5Q©ç>º_wnfbõB"²X>€ >Ö-Cs_ ¸0ÀµÊJ‹ŒÌôj²>|8K'„õ¢ÅmH…D-·kÁ%Õ ‘‚qCrãOýQ›ëDd˜”{Þw÷í|‘ªA¤“Þ•?¦¦‚3Á)ú1˜@®ûsö†Â/U·Ê^¤U‹[ðù|’—kG—«6 þfX +§4TÕMïú‘#¨Ü äYê·,φ–.¬ìj(ÎìÕQÕiÇ‹WÿµšoÚsÓù²™/ºm‘FÓ§A½ÌË~ÁßYÜ<ÊkÀuK­YßEXÒÖúñfhÚêÏùö(þ÷®’=NNù"q›ê•¨Ž“Ñ?.Âl–ù¿m˜ÿ yiÝ êl–iƒo¼Vè©/•1©è Wš%`ýÒ_TwÙ Œ:Á(þlé<Î-þe‹ rÏ¿š×Åçm9”n™«Öò¶;Þ±|¡±Þ`‡ñ5VÂä)4„ÎA#ºZ_0Ðíc«á˶¨ ;äCœŸÿWGÝe˶B·+l3XÒ“¬ï¶áæÕ†ÒD¦“¤¬Ï6Ãv­ëíJAºß/šQù?!¿ Ô2ûR7 sŸQ·iÁ>ÃzüøËÔò/²ûö°ÕPºÍr@ „6`|Êú!6d6Ru@•°­ð†`öLÎr«³“?q3α•HÛúáŠ=ÀP“¥ú‡–¬ÔܪJe‰GýÙ#t¶}韺GÂú³®C;\¢Q6ƒN±Zt²^^#M¹޼¯- (y[ÖŠÚç}ë«€„RØJ„NþοU3¥Vü@›:ÕÖ;¡Ÿgý ‹9›þÀ²tTëèy#®)µç5ð\__ãˆY{:S¼iSŸqa¦!³Ez.=dñ³QL³ ¯¶Ðo(­TÉÈí–Vƒ³ò Åü"¿í?Bâ` ‰€Ý&Ð@^’Û(¾QÝ¡væö4EËã#4OÃ~Žäï$Pöz–ÔJ,Ç;2u{}Y$[ÕªWÜ•jÜᜥß/ŒÒ›ì^_ÊœEôzË¥/¬S7éÉ*|(á¦Û¾Ê%ú㉡°²ÂjÌ&vn›h¢æÜR÷"¤ÃæE\Þ7jFFk x¨‰êƒ`aoEÖ}SÅŒC!æÿ€§F¢ìq¾á<ŽßCYÐÝ86p©'‡Q«½ª†y0b7rŽ[ê|ëu½‡ç‹™ c±/#76y+<Êç=ï?t8àí˜Ùˆ¤æ.,‚еïågf/„6’Œñýþ,È£¼ÎÜíª;”Ô1Sâ?äBä§°Úå ­4î™QÏ»>#él|eDŒÚÏ¡ÆÿŠö2 u1µRûñ, 3W¾üËÑŸ^ý‚b ÛwPí§&Úâ¶ì†¶Ø›ŠÿŠN­.b}BâúuÜŒïo&TçIˆ·³`¶dD"#ìP ÖëIëx¬:·Šütfͯ<–ظ†Dœ<éq–TÈÀ5!@J9ý²s¶NÖ…»/æS+µ5R·èDZ§órõ'4J·´— à<~¯¡ºL¿d *ñàô¬‹J»°Gøäì¹Æ±vòí`†ûuÇyeŒÞë¥WN¬“IE­êm´äܶK°tÆ GfcoIžEÙZ±c ÀkOb_WAÚ7â”ü%dqñf*·y#IÛæ"¸fZŠYK>Ú¬(¼–²ÊD…OÑd§F[ û+úؾ¼ƒ?h•ÅÚ2› «àÌçîo%Þ,~6)`›õzú;gÞ€$nÇY—¿è_V…±iHðïv7¼‹CB ‰>£{ÏXåb¡§Ð»d¿‰.újûép•®6ÂÖº}¡.“é2Î;Pð›1P½W RߪDB‚OÕIªÒ\è¤zí}ÿs³ä d4wlýÌ,`ÈÃxg«ùús}êØ×|Hä=ÚÛþª$½f‰\Òî.ǺEåñV%ëvDá«5ú5õ¾~ÏIuD~ÜÛÊöuBâ”…*¯_5·ŒØ#V#|®9ôDÏè¬//ôm²¹RG½‚aó‰,].g ÊØùÝvÒÔŒJ»o½–¯ø5á{Œ˜+ƒ•±øíC[à~\üI³nAaسbONëÅ|àj©©Â€_FÝ9¶oï´Ä¸ ¨´çßÊäéDÂ_è=g y#žÙÂ<áËP ’b| ÅCµÒ5sí÷yŠC—ük(÷ß·/X•¦³UQlÂb`…¢½Ï#o:X:«»²&!éþâ‹à±ó6 žÖ{ ¡ j^²ùÂûé>—Œt±¬¹­P5lrLւܔԧ;gã®ôk'6yW--·÷½Œ V-yÀ1˜ÊuŽÂþô¨? £Ê™¢ê,Ž3_ù˜äΰ¤Bþ? ˆêq½-·A0 ]ˆûª y<ŠtÚ%9l¼„ÛVV‘“¡Ð …‘‰Ý d$hälîoÒeçS@'\2jµ9)¿÷ïe-X–Ì'çA®ÖjTò»™Ÿ›¨JõLF±É"¤6*‰äo}ÉUzL†ƒµ)U—ˆ~­j\,w_؇9ñ`± O^Žgå2æ £3×1N鎶‰$ÐïtS®ú¿©åµn)ÇŒP&®rà’!o_]ãÖÔ3X{ÒÑo&_×Uü¬]PòXŸæ‹)š>—£ð³Z?èß[.Ƕ ÎzIuC=ÏÙeóÄ}"²¸ä…^:+±j÷3Š+-³ïÐwÙSÉú›?‹r¹T@‘Ii¡òÐ¥×ɨ݄§.B.3ä†sºë”Á¥!zÙÄ#ái±E– h¯µ(J§vÍÔ( K<Ǥ—%—h[õš»ôÝ^:¤DB?šOó…ýgɱùÖ'@¦Á䬡0Ýv¦y Û½²'3nçÝ9þRtþXY{~k²-›ªVý({½<½8S1î>·‰¦O¯ne!ı­ã?ÑFpÆo Œ÷ç`{Fý÷$´bPе5;d(«´+¾œlJVü©È]Q¥ÄäG¤±*ˆjç\ï)ö¦_W2OÓ=Žy´Æ(É*ó ¶}ÛmÍ0Ù“å*÷“¤“|üžšÌ#lã1 ¥ €{q‘3Gb§îFÌÿ‚"š#žœ y˜!’AÀÚgå¾À@©X±K³×‚X8zr>‘’Ht”²åNØ:a­xºDx&Ìt²bVa.´²ŸNáV«îÄ4³pX?4J@9QÒ.>¹Œï`¢¹Â÷*Kù8¯v©~Ý@·öùÑ^‘Ìù¸³‹§…X‘þ8¯FsÌqrd[úI,Þc…}»ŒZúfHA]ë# îøà¾ûµùS\K´Eþþ»WRËÇS”pÇcPý{J¾÷ÝœYS«ú8Ÿ['’Vè8YêûPUY/t¹×÷ºù•ñØoŽÁ&`ia8ˆ:™Yâ7|f>¶æ@ƒ×ê^•,{Úúý¡BÅ.ÛïÂ.D€ŠD6‹ZëåJÅç&ŸSÐ1¤îŒJÐ5ÿ§€¥’ß÷áá³”ôv×dE´å~ƒ!ÒŒŒ "æK18‚&µ3Np5‹3³G2ëEwíÑÞ¾’› W’Y­œ»Þ|¨‰t z>0þ4>ü»ð`ôÀ·Gì[¥J§C@„̳µqSúÎ ´£ó‘;õ]’Ú†ÛÎpë) \P²Öp3RïÌ>Ä}}»ðÔÒ–˜%NÑ©p1ú ‚Œ‰ð@+VB4æŸàNDL júÇ`jÜÎþ—¼g9ŒƒžØØX­Lw1uy›h[‰Ô•ˆ‰  ²_ëÎA§ÿ¸ý.¹Æ£à²À¸ŠÅŠ@ëßý¹ù<L‡³Í•¯i4øDÂ,É¿¹ÿ“Îî§]»Ÿ”p15TF‘\&ú ªSnÞ@”Il÷S ÐÂÖ[km Ÿ©”øTƒcÕ þ†FÌ÷2.üHëíýêžµ3%ÃË$,o¹%-¥§™É¬ý¨fƒhâw,?‘Ø7ÚÉF e”Qø=ªc$vwù¦5"!¯oJITP¶±ÊªÄù \ádg~±–r,›Òä:÷p.W´)ƒ+:3ûzûc¨)jԔͽ±jÅú×-Üp¨‰=%ܾß^:“ó®ßùõÛ÷G“óÅ&7VÅqÁ(];Ó áKºSRÀÆcÞl^dMœèÙ¡-·¾@3˜¡ûy=ݱ¦v\/O†*XG®^P'<™–بŸz5ÇZ¾®´Î§—ÿÖOESúÿØÏ§ÑÚ¿->¨¯û›Âcà%§K¶­§~ïBõFÖúcþ õ\(àÏqCèýÊÂun•Ážcy®ºŽ§¯íUwÊ0Ú4Cì(Ó™ 8%å3wrç!9µÂqÝ–Ý­‡Ö$ ‹Fx]Ê¥>L zêÌê‰ò; V:ß%k>ü Ò4£ý2*OÐá3ƒiQwO;®_ÃC1ó Åý5šÅÑÿ$ýœçͲHýQTÑÀå«É—Æœ°˜¹ÝL¾kä!E%{ýÌÂÐfjSÑŒ•Æóð3³ŽTí…Ñè9KŠƒ8µE8—Óu=Xáý¥y{™¶²?¦ É!Ë•èÜB*7£ŸcàÞ0ñîpgUï¡q2Ê'„aGMŸÓ¹u/ZŠJâ×i«õöø,.Ù”0þà;©ñ¼í0!™áš&£!ËãÎÜÛÀ#FÚp¬h„Í×ü|ÉÆ£×£„ ³c×$è¼èFÖ]{È¥’n¥g—‘ÔtxgÖ8½é Úsd ˜GÕÈʤì™Ï”‡Á¥ÎPÚ‰ók'—}k7T·jïºìúïì9™jßu‘°jìľëWÏò,|ºí/ÉãÅì±( ÀÒdàÙÝ’6áèh H»Ð:³ÃC»ó-‘ýeCo4o&åÚ¦/›v’E×£ÿjLÑ*‘(l?þVº£vÅL\ ò—-ªs÷×DZ¯‘ð$˜ó>æ=ºša3¦Ä^æÈ¦]0Sdò“¬9r$ã—f´#s»†}Ùí°eo«=dgž3m-$™)ºL-ÎO]^ggª,xñ®àÐ8‡vS1¯`¤›æŸìœ{î ^µ‚u(wDÌd 5×,c>„D¤ÄóÒoåÎj.njå/îןy+9fÉ "Œ½¿Mñ³OH1Û·Bгp+v_÷! É“g³ü ¸¯qÇaÙĵƒŸôhQÆU74Mž.{~½ï&I­öÏ,½TQz–ט3£ëÆcûEë{Í;&Æï¡L2^ÙØ·Îüš1ñô ú†•dt¥¨'á½cyÔ"÷MgT>õ@ܰDô¯O=´láGT x‹4µÆsÖSóLÂûM„uM0¡Üz~Šïn *Ù&B®RÄ#3®ÉÓ•.Iy±ñ?PÒ¡ì¦bÖ((æ[†–£+¯ÑžÑqfIBœHâ6±—çé"¤Þ”Î¿Žƒï8ÎÅ endstream endobj 251 0 obj << /Length1 1966 /Length2 21962 /Length3 0 /Length 23237 /Filter /FlateDecode >> stream xÚ´·eTœ[Ò6 ÁÝÝwwwînAw×àî„Bpwww‚»»kàò’3ÏÌ™3ëûû­^tSWÙUµkW÷MIª¬Æ(jæ`”r°1²2±ðäÔŒí]XYÅlÍlL,,ð””âÎ@c•ƒ½„1ÈàY”LAï~Î6^xJ€4Ðèü®4˜x€ cuOG +€Æø/AÙÁÄhbìò®Ú[XÙiß]Ä=­,,Ab°32þ‰ôÇ[Œ kljãàîbc0¶7È2)0ÜßA+ƒ=Àhilkp0¨µj’ªjiU% e5Z¦÷Àj®ŽŽÎÿÇE\M]Cš !ª¨. j2¤5ÔÔÿ¼«íßù[0Õßõò¼þqWTU×Q–deþS€àtv±ú“ö¸Q½3üMíÝÕÜÙÁî¯KÈ‘™ÙÝÝÉÂÕÄäàlÁähû?uK+€»ƒ³ àýÓh ü«1®öfïíYÿàωä­Lö.À?NRÿRÚ½·òÝéý‡Ø{#@bÚþËàþ#¥±Ë_¾òÊÊò;c+{ÐÞØÞôÝd ru|ú {ÿšQÿ‹  îêìü'‡Â¿UÎÿIóoêbï•éÛzû»ÿï‰Û»ºxýWoþY¶©ƒ½‹• Èå_s+[àö.ÎÌÊþ/LATQFJRMQþ}ðìÞ»cÏòýeý'ž¨„<€‡… ÀÊË`yRI{3q;»wÖ.ðÚ'aõÞ'ƒ³'ó?‡ÚÆÞÁÝÞû@s+{3ó?=7sudÖ°·rrÊHüŸé;ÿ7fX@'ÐÃÔ’ùO¢¿æäÌú~o€¯·£ƒ#ÀÜØÖèke|ÿ€÷v1v@ή@_ïÿVüS‚gå˜Y™‚ÞGüýšÀÿ]ÆÞÜÀû/øÉ¿Uÿwø4]QÚ÷ûiæ`oë 0šÃ3+:€ÞGæÿŸö?¹¤\mmí€4ÿèçÿÛYÙzþÃì,´€ˆÒüøZ¹HYyÍ”­@¦–ÿêé¿pñûÀ‹Ú[ØßÏã/Hãϲ}Ö÷…cõg_Y9¸þG÷>‡¦6ö@û_*à{þ‡î{Ûÿ0K|T–PQ£ÿç¬üe#ioê`feo`ãä;;{³¼''À›õ}ŠÍ€M€™ÉÞôîptùÌœáÿœ"7€Yüô/‰ç=Õß/€Yò?ï»Îäoé]gú‰ó]gê`û^迎?ˆñV³Ù‰¬fàßØÌæVnÀÿÒs˜­þK|Oaû_â{~»¿½ß«°ïéßzÖ÷è³y·vø‡š Àìø_â;[ç¿£½[»í¬þY绋•Ç9q˜A«ß«¹ÿWÊw¾^@çÿÿ–ÿ,;è4…_šw0å¶Nm-ö“Ì,¢äe:-ÃÒ–M€\ú6ÙF€+‘µMÎûÜN•ç ÿ‘ÏÀ/å³}6e0–íëzsrùÄ™ŠÈޱŸ‚²¤èÏLM&Àt…Å€’2Ú#ÙÌBŽéô–„b€ÆÏcq޶·¶ñ7´«/dú%-«ÙPîù³¬˜Î¶è‹¨øí‹“íà ·̸hãÑ%º™O9¡Ø?e¡»;1vÁ£ó…)k§·ñ.lfE»Bø‹~Aƒ±!ÂaãÀQæ¥UK’KvÂ¥ÐÆÐx¤¾ðîC³×rxï|5NŒp³%?è±–û­á@ù¥Ö²ŽfìMITö©¸Ù•Nß_ñ¾bÉRaÄ·j”*²z#Añb„"ñ›çòP˜ù!"øÊO‚ÑÖï$¼ûÄÍcÆc¨lGˆÐ +дïу¬·øšÞ{8t¸“öL±Ù.æt€ãç”çj]ÞsN•f„çOþÉZóõØå+ÕoEÌDþ–h$Ñ! Ü¥$±ñÚü_;+õMiuFûD'Sf%«P__º–ó€å-µ‘†nÎÃç…¹’•Máj›ÆéqˆhÏAéP %Âýrec!ô–,4m3NÍë“ß¡*¤àÖΨKu–¸L‘Ùªª`™€ê_Ä]§œ?ïæ‡-eHÀ”`H­bæ,·j'¿ˆviï…Ø³)Ôìx Ãkža☸ëë6E¶êÙàbEz%~8â€òÂýØŽÃñ€ÈÙnÁ0¤HpÆ6;K—{xêñn«üãMÄ3VÅwö¢Úqw¥¼/ýóKÝl±ØwLãÇ–c³3`ízv3*»ÕTÓ*QIJí#jfRªƒà‚8h¤<Ì×Â^–‡ôŽS¤ÆÃ_M{¢ÐaÈëh6‹0ŽÑçpƒÓír5A„¿Ú°NSò¡ª¿ Tº}н_C³ ·0 ÍJ!;ÆóŽüu¤Ô<cÿDÎêä+çpÙ™âY}­¤ÁzOF;ÉÞÉqüü²(ؤí%k(’ôísÕ—Z³ü=l"Æ™´ûÛ¼Þ@n9hÙIP¿¿qÜS‹±¾Êc›æ:ÜøªŸDÿ·É÷>ü7w00’!žÃ`a=F‡6â$8¸¥‚ܨÚïYt5:QL­(+žºü/£)‹cÏæáþ×ý¦¸š&çÛ§¡N¤$.8“›3Èí¦wùbÃ…Ü|"ÒÖO–AÚ—)íc'¥N&Œð0‡r¢¶1ÏX7†:Æ³Ýø³ýV?in¦ÐÝèC¨îðà©UŇâäÄ0Ú—è´£Ò—¼V†È|¬â‚¢tö‚…¦/#ï µ’ܵúü bc¯dŒ g^ÂKÖWÕp:‡uÊ*J:L”†½h´xn«ºKµãö‡Ëö¯é½ÑcúÚë×}ûñãµí½ð¢¢Ë€|@ø‚·©E¾5FY,ý«ùIÖ0LÃh]¾W×xñR Åg‚ññz†Ðs3–Ý×ÞïÒ¦¶ûÔª‰à—…ȳÁ¯‰¿‚o²$÷ñ—”Æì¸Ù¤äò¯põ54é0òø‹ O˜ãKv%Õ y7+ÄëxŠÆ®Gµ•ækÑFzŽdµÑë%2÷^G´çw¾¡úG uø™u/»èÿúÑ)å1Q:U0óÔ¤5» EݳÁdËÃp¯Nr·-^âý›ãg¬â©&ç÷KèèsoCZš]AY7Å;kôèc´-8 ¸ö†Åa¤NjoÖ¦NúPW-©ö»Þ˜à€Bü̉¯7ÊDVÏ‹ŽšºNêy‚ÚžÔ"œd­HO!d?›ºfd-Ò†$~¤n d•”âÙGŠHغÿ‚ZL]’ Ä;(¨…\sÛŒ«âO¦‘~ÙÑXàMqÈLPè@cJbÔšW§±Óg`Œµ¦¨ÙoÉ…ð1-Û&Ýi½ÊÓßIx¢ŠQç£yɨeNŠëg€?6s¥Âùð˜uÆý:¯nfZnöm%­r ûÃÓ(€aÒ¦îÂÐ$„E5v«Ùs°zöú>ö)­É?o»·Ÿ:Õ“ƒÙä„Ô‘0Ab(dÏýÎg×f'çzM&nJµkbÒœ‘5,¬vŠlØz~q²Šù¦ÐÎ ¿<Õ#pùž¦+º'IžsKëS,5øóVÚg¢éäQ© h“©©£á ¢ÂPkw&Îèõâ§¼c¦>1=xéqY¡£Pc3™W8Y£ĤüF¥[± KÕ yÐÏ¡¼²²PM92ŸN,k]k¡ÈȬãbË‚,†ÝÞá~u _<¬t¿0]X-™ƒ!‰ä§¼.ã5±Å«›"ý…KoúçCÄI6Îbõ¹äÓÎã˜øÜ´Ÿ ‰¯<ר«ì¸n&õxϺÕo¯ðÖì.¶ùY……Êäíé/“ÃÒjp1FÓ±R–2¥<ÝiÍ ƒ÷³=õEí_µñø»¡“&GKؾkcsDäw#tq„¯ö¸` ¹òÂTëDJËòJr¢Ly+Ö+ÃéΡ·ê^,vÝüD™®SëøŒ¯·¶Ë-nOÚûÜþLAŸÃxpýQ‹äŠôSÏ«>‷0*¯j"zƒ¡+°L÷ì²ý¶Z›€{oœT¼yö0äx(‚ûE˜«àòÞ&ûjñ<¥Ò0­ÔØYÙ¤m×íõíü‡«0•Ov”Ca±ðÛc E¿gÂb +kûÚÚ}0—”ç”Ö)DÑ÷)yŠ`m¯E?_ILFÖzºÈq¦í½Ë‡ ekl°è×ÊøMBç%'/š®ª{]IO¶ºÐh“5–,þòSý6,!E„1÷:C»¨ÙëóZhõž› (R{IcGƒÅ¡Lç€sÆ Ñpä|ИG9|ÑTº¹(âËôáf"ÞÐüO{¼íŸ˜7|ß\ÅvÙ~vЉ¼E›©ƒEݯc1N-à# ±BåpXz³XñB—˼¬¦pç‰Þ°s~Gñjà–1Ø þE)«?©ÍÕȶ~¯9¶ÃlÓ!,’s9A 9ƒ#ˆ|Ø?>ÜÐ3EqûÕ%oGmÌês¿òVqôš¥Åj™{>‰KÕšñ4+|øm¡ˆ0*$¤E!Á«( à¨Ê7Ð4úâ¶Jk ±ë‹µÝQåz)”ØÑ'Ѐˑ9pF–ù¡¸¦'Q~鈴é#œ¥&šI‚‰X :×#+çßËüÜÒ ?]È«å…p‘4ƒet?}UŽÁVøU²·‘ækbEõÙižPûU(þ\Ã/ÞªÌäzט­úš „IçT  Ár‹på%ú)#›ü§ß¸ç6IßÛFâ_‚üòüsv&–ΓOº+ºÐÍQÑu¼+ÇÄúú[åBņY70¸„¹ׇm‰HÚ$w¾&Ú·‡(=\Òç,øÙÓ‚„Ê9¢@ðµ5¼ÏÌÔ d6ëÊ—„ÇYƒè‰œ'Âs3ø‹‰ß9×\)j6Ç]¸z„C…®ÏÖÔ!Ÿñxï’Å=°•¯ô!•V›WÙØH‹´ÒVøÎíÌÓºÀìë©ù)w vlE™¡”Û¯Àßõß½((—í!vw¨Ã¤uvû ü¶¢~(¯ÛRÊ6_ å)—žôa''ÔLçù[H©ü–/JÁ‡¼Ê6øPu«.`Ñ÷ßãßôÜÕCjÀí²ÆYµÜâd=VPTbµ@–Ö„ïm(BäѨEHø†=AS¾T£ÍpÛ‹¶g‡U[LÊþƒ6®¶úä;·}X­ÔèÔÕMCÖ À¬ ~á APµU lØê/6Ǩo¯ZêŒÆ£HÃ*ˆ)¸BŒÐê±A'BiñæEbgV-e S®JCò(·Æ<%H&Æ:ÄßòéÊ1[ÉÒܱVT]¯2qq"^^Ì“2FqÛO’_£~ ´¡…³KЄÑ3¸HËÀìäµ6 ;¤åëÅ{*ËZ^3J~UÞ.¿i’Œ- à'»¬ÝRÊ›€ OA°«Ð‰ÙS•¬Ûl…B˜‘Šu‘xREFlšé—?i¢9<ñô†?‹·„AqF é Ì1 Q³á¹ß… Ž§ŽPƒ®Ü9$C•‡2© QÜÞn?õËv}f­·ûeõËIΘ4JÁ徨Ýó?¤:qò¶sI0Ù¿ÎÀ*N’Þ»Ó(Ý)‰7õ†ñ06rÁØHûë6Ú~ '»/Þ9ðiœ{ÐR“^qR¤JÙl''ß§gER IœKž>b¾Ô§ý¦jú.Úÿèœû{RÚéûOu).ùÅÞýLÝ1‚®žD×𹬚#EÏàIˆ¯Ÿ°ó¯P=¹Y†öðœ!Eæ8k/ö–‚û<ã‹îµz~Ëe‘”ô.€8smF{æƒÝŽ@ÅNi¦c•w¼;ª§4$!Ìtb‘UCäpšìBHu°ùUýË(¿Ðú¸Õ„ÏéQ7'+ǺKÉ—ÏÝÒ-®/¤­@øç´É&º TZ&gLù)@ ùžv©ìµx|è­Èãú¡ìF¥Aɤ˜6™Ãdùd0aú6C¯Ù×üՈȢgz6D#@ób=L«]dŽù€¤'Ñþ`ûhÑ”V†KFmq]òë tÇRÛPÖ¶ùJŸ^q0`ëÎ8îŠxŸGqäFnÁQˆZ²=Û÷‡å½ãÚ˸X‡Ò7¯ìúD!þÌŸââŽÄšXáä¶ X\ ’áO«ð硚H.ýórPp1QØ®lŽí¿'ê»dÑÝÀÜ–L¯G s' 1#À$œ26Ó|œŒû}ÝÐ7,¾ÃA/xÕ`*~†œBV›e¬Ï#Ô'<ã-8žÄUߨ0¼¦O11M¯i|dñ«Ox¶c'… §oæá=(V›Ÿfÿ,5Q(4ÑFºÔ£Ò~GP.Yèi×­µß–Í>A"? Lÿ£˜©b»"-Õ©ÿ¡…Íå³bXóíEÛJb_ØŽ àvVBc’0bëJ…ÅiQõR™+[âÆB)»¡¢ÇðýR©Î'cJÚ¿+üú9¨1ªa˜ƒ=öÞ‡ sF=fƒæd{õöÍ;æ‘¢ˆœ†'~“  €‘rw›;YG‚(d^LÅ–ß"å†í2 ZÛíÄ:#ÚLãíMª\›'1†©lÈ ÷…3vbç+úé9Íy¢Ëè´¤6×øó’Ø&UÛL¶ßá¡ü=B&z#)3Îr›‚ö°¦úöÌ›VZ‰–>JѪñiVà E$ó’Š™±[+ŠÖKXD¦K øýN˜cò˜‚ÝÂÑänû]7–¿%ý,@R£| " ê»§=¶Æ²­Á‰qXÇ„tt-Ú'¶ 3û²œºd!cáýáaâ¶nD2|Ni)Y¸àœö›ÒÆR×ÚÁž£Yà•Dæ×úoåЛ?ŒÐâzœŸ~|Õâ´Uß©é N#+CXm&ØÛhè±Z :J<Ž!<<ëŸW|¡­¢Ö½!;Qwë¹ÒÙ?¬ì÷Y³1szn*¿m](±©¾°#a üºK&z›ÊµÖâ†í9£é7È0ïg)3…ã»ãàkhRÂ¥¤~Áÿ8»Žä£Þ×l^ð»Á«ÙrE¯{›Z’ÊØüQ z/7†6UÉòÏD"Î+sQÀÕÿKÓ0mQF'7 ìÚåuÄ:CÂð®ŠÚöÇ6û=ÍúgÔ98ªÃEý~K«‚÷"¸ ѪYЕ'Î`¥è;êÜ`‰ýF”ŠŸèmc½”¸ãè&H{GÕäÖ~ä(ÂÌ:4|óoˆ`ôæ„ùœëzÛñÄ=`1¿•âøU˧,mn«öi"~Ìü *¹µøô{Kå¬Ad\o?>R7{³mztÌôÎÝ L™}Æ¡ÚÅPÙ‘iÀöɇŠ=T@×¾—^o¨ž¶óƉ)%oésmq«ÑG›ÿDt'P]¡ œ“¥á-¬´-÷ÖÄ- DøÛt÷3§h´„“È—^@Îkø²!©k·6¶qsk«W`ðWÓ{٠ͳ4aѶ|úSëjJZÌSåN+ÝyY×5¬ ~‹×6¬±‘ØJäY[ œŽŽÕ eò™QnT=öõê%Á—_¹L©;„7p¤í>…ÅöæOÖIcDß8ž} °Q\Ñh+ãùNµ[‰ÑÎØñ»v˜Z¯T²þr„”?äPQË8õ—¦Öˆbzôðk³cB4ZÃSŠ/ªC^³Æo"îoCéCUÅR‡ŠAñƒ0pÜÏŽÛ⿪NL\{}ècxÔhš´37¤åI ”¦ 6žÔÍ9ˆG "Å8žGµ3ï¯gÜZíÙ!ﲜð_ã¸Íí°uÖÏÍŸYÙ“8ŽïaYF—ÒÂÀcwšFŠfa9Á-€7Âõà,húlüÚ'LXš=Ÿ.¢ú•_ä®Ñ^âÆI…É×1”›`§h×Îï :Ôñ=¢«i(-¦ÄD÷Â%}]5‹Ô—j-׫R`cûðä–AœŸÂ&‹m—$r‘e•âV¯ÖÁƈÎ^ù¡-[ðHÉü[p›iç"4/V‰~=¨íS·Ã1$]ÿÂÚŒjÇèƒÊ‰ò*!“+B|© DâOÛð<³H|r͈Ä$ècH»Áêa*M^Ï‘Yöf QO¯¡Ù£`:­œ~:£ ƒÑaúÑê8ÕŽ¤˜N|‘I¶XDç¶–¦ó+,)–^ ˆJ<<\ç'C->ÃŒú$cu#Ý¥XYO1èÇ7‰õ¨´y€Ñé¶ sñ-6Þæ÷ÄïR´‡éuòx·p‘m+ÐÛs³HÑ…쳩§Ñ,RÙß9H·ðñs³yZ‚lÛqŸ¡ª†©ÛKû÷g,ñK˜%‚÷hÅÔð}wc¬„êâO€ š(t€’Þýò¥¯äR ÒE©Ëã5Îu{÷Rª§¤Fƒ×,/Ä€®"š<ïº%““®ãÚ[Îmob†9µ0TWŸ€Va3g5W’ÌJªgIõÓíò‰qú€¯ýÝxÏfãY kN†?c¤õCB83¢Žõ)xw­A¹ç.HGa·,ƒ›`9Ô5°Žïá÷ÐH6c¦ý^%|¹aš,œÁ½'v ©Ö|èOlžÅ§»aò¨ª“'÷r&Çø;Å`aéÜ÷r(r£ÖCmyùTŠfoì@¤Ão¦ ß,ß®à›âÄ¿ ­;7_"\'‰w*òønÛh‹]„íªg…‘ËFR_ ¹À"Ú„‰ßAhHœ¸á™ËûÁ€3P8Å2…@º}rÞ:Gã¾W5Ó?ú^³ÈZ‡ÃÁ†èë©—Ñ„÷£ÇaA<ÁZóY˜âÕÞ¾|ÀñCÜNä¡áEJ§_Î SPÈ`­‘U㤃–«ãt _¯¼E€Ã)gI*ò(”¨ý834áKö 3lÃì¼D'ÄÀ¬†Zv;þ ˆƒYŒíe‚'â÷lL9A‚Õš«–ýú´ -\°Æx\]ÄJ¿‡«GXè©‹Ö¾¿ãK²öuØ'¸Qƒ9,^lnüPte¨ ±v[Î }4˜}iñ¶ðe§Æ"•á¶ÌAìòT ¡DV<\’…3”Ñvyå,Ÿ<¼Y[ >z©aCŠ@ìHÄ'½4§%(û8¹ íCfÑnkϬÏòZlZØæó}ïß²uGzûŠFØÿ ?2o]¨³÷vûÔ£§WÚW¶l|÷Ö곚—»b„}n;I­žø/»†® 7ãÊÕX~ÉWsf¢è£qðzåí£‹¾£e1‡þ14hΞÀA]­Bb¸9ë4éÕdèuªe|»w9Ö¥pf˜RÕTî„z|êDôÔÁD#жr©f4=¬CC:ö€Œ äµ¶‹‚“ ô¢žqѳ7Šekµ×²ÃÏ s…*X¤Û-F£qÇÀ¦KÁú‚˜ç½ù?©Z„j_Ž8Ⱥí·ò\ªqÌSXw61]yùÂY;”Ÿ€–ty>Å«¼92U—Ï„sBÿÚ‡V²1ª#7? 3³Ö©ºííêáuH\ű¸|%çRX’ŽöQ!Ã!Ê|JY‡ì9ǪwúÈ÷V=ÄŸ !û—õ¯Œ½‘òÁZÜõ4¬½îIëËÌ¡óÛÕ›¨NçW$„_‹“;y°ÐŒÕ»å·$ÿRßS)c4©¡—?P8Ožß f¤m•­otÌ–ÿšÇáˆo§Ø˜~©S NÇTöÌ<Ï<ˆrt°+E‚ÚÔ¡WåÙÏs®9/gˆß`ï0©ÌóŠø‚"^¬©›„pŠôhäëнW²7ľß¸ƒîlƒP¡*ù¾^ǵV¿ºª¦¸…ÁÕkR1¸“‚³Ð—\Xã¡öEt+¢YO#’ŽÛ¾cE$Ø(ÌàÜ#¸Ì-º^óø w“Œ XLX:Æ-@j³A¿…Òb˜ú'ÆâF92eŒqmß/žà9Æè S #X\ùmÎY®_Ö¶³¯ÖÔ8¿• ŸA_s\ië0¹>•>9Gá×  —¥,ß¼–ó4€Ûe&¶t;^hù}=M’aúV%šÀ÷Z·«AÎ^CXK'Ç0Wú¨áWGa~啈Ž9TB+ vó9ëRjàÌA˜VëOÚÆÀ!z^)ÿ ÝvÄ/ÉÔÚg„T»ùÖ˜˜P<<ìG„ä9¯”ÞÁ '_|“ÌM¢‡[X#õ±ŒIæÖŸÒ¯øà†ÏŸÕ‹‰ÁÄ18¸§nuè6D½Ã !%«ù©·MøõµÉx‘£²íãÄtñÄ'ûNZŸý› :)‘:îðö4c ª¶\lÖ¸r˜ŒýM„O»Ä¥uQæÖò*"'{W?ÛoÝGg©ñÌ:O)KºŠš˜€¼&^¾c£gV…¯ýD……?#ƒÄó¹™G.hÕ*¨ƒ5 8³• <©‚×Â{ëSF=?Ù¢/Û±ÆèØa%÷*ì1EW•K3)úb|™Õ-°ì5Úâôþ˜5ù=M´·))‹6ö†¬#†Ô3Ù.@o0$ ðÂ3UʇR4G&FªHÈ©@Õó9%û¦oÔ„Ÿ¥Êm6”8°w Ûçä˜ä.S¹émSR}¸ÊIþSù×÷/HS8iW·µÏ<ÊJ¾öxY¿6½dÙ>˜ #$O67 ã¥ÓÖC¯¤ÉiS|æ Ö"X„éSž@M\_"kÔieŽƒ0ý†±¬Aš{Mº`—%õ1ʪ´D2Zÿ 5—ÚR{¯ã~ü¹ñ+nÁü'Ê„þD…vÁ}‡9L˘L¹ä“{ʼnII¡ª2¦>K9xñ^"BôÈ…’YßÔ˜Ô5^†Ÿ‘ri›ƒPã4‹Ø¼õ»÷¬d®‰”Ý:Àôàâí¦³9´gü£§U’Ý‚6UìR¥eà ]¯†5-øžŠÑ×{á5ñ9šù8½Õ{ÑðY(Á)z:ˆ~;gcºÒÎ`³Ôv6Øbàd…ìœù§BöXðM»ÔÝþŒyKºNóºUl´•³hÒ¶WÊðã6È›]x1wŽŒ=–ilô‚îÞüÔ£L[˜Ô N EŠšæ,8Ô@²Œ_A¹½z‘øõD™þÒV"V(‚3Èl"•P¹)N»¶t~ì«4ßYý"ŸÄ8EëÖ·Òk:‰ÛïÇÓP.Êüá¾¾¯~×°7o)/nËŽ×sàãünVçù}–„ \O —~1Gö‰Xžð~õÀËâìž-¿lßÀ6‰Ì>¥†ÖÐÐ ©“*q'焦5Ôtí_3>H£ä¶³óvsáü¸éÓƒõîUŒÃ|>ã.þ¸ߦÚP_ºÌýðMõõ«áÆ£s–ÎW`:ÒMrù'Øì[îèDc.kô—µö­›m!xóµ)½õ©ÇÞ€f’˜#Sá"±æ ³dûÑÇ˳ß`‰Áëd1°55^ïxÞEÖí©eÝM_—æèTÍ7?ŸÚáñÛ}brn'J¡!ö†sƒ“€¾ëç½EÀ*% `ÿ•…ñ:z÷íFL†Šø¢p·„O«|† ²x§EiI:b‹èS¡spô´gåÒ£ð³5UÆeÔZò uñú¦ïl9f,ZdUçš9œœ/²êM³Jž`b-ÅâOà¦6˜¾dõ5|É“^ôâÊ&ŸÀsL8^§WÀ—tQš|2•¡öÇ8·Cÿ!&Ê'0[Ñúšr›M¥l«€4-;û³ðøòVåê\¢›÷¹¬2˜½0ꉠîÄo §‚¡/uŠßå÷ÃG£Óý4ól°h7š_uªµ,’ð¨<Ö¦J®+MÓpž¤w|mèD1u¼¤o"`ÀÔµ Ú]ñ^8_ê= L‚„béÍ잟®±vp™ðƒ±—¯‹aíZ˜Ê¹YpC›² Éq#›Â‚×û_84&jhÇÌè¾Û ͹’¿Ò\zÌ¢ëÞf?â.&yB‚›Dó&÷}Wɨ¶ãO·ÀD<%O3žU™‚¯RÅß$þýæÝõmPç)k›š4c‹»Znv ¡›‡£&›ì-’ÉCâ ¤ªª°ÿy©pgÈ{BÓ$mýMÝ6þ ”œ'Â'û6±•Ÿ§>²Uÿ…fw,£uî’ž^= ¾×;tùóÏ•¦Ø_¢eJŽ*déI3"ÃAÚ¹@2j'o~h¡¹:…È7ÛóO±Ê¾šÏ_.Z‹(Úèßãêu‘x}ݯB\1ühjl‚;=¦Ôv•¿VB€$¤;^VQUi4YˆÅ/6SnÚó}©0sÿ_U¼3Ÿäm¼â~ª9¾4›)ì,÷ÎïÄ/ƒÔ»/¶ÕDè8îh²“¿:Å8´‘IÈ4ðσp÷ך?÷b¸S!RèÛ¨» ÐŤýøº„QÊG|ѯËÇ«û$•xÞ« ceO¢¢2e!¹ú¥è6ì)'·¼ãBÞñ—YÂYJh0mbh,—ùçÌ ggX‘0µät"B*Þ2¿€3'g1ŸCÂÈÊ‹%Cqãò{?Í3È?où ZkÝÏ;\ìç|; {y%Õ%ÃjÎ6ìz„ú¹GªA®®³œ„~y•½’®÷ú¥Gµ‰Ä.ËÄ Ìe¸3| ¬Ñî ÖV c\û.uMÎj…8*¾¯õð÷í/ b±pJŸ”•æä­p?¢0ñ"…ÖyÔ:È2†` }/€Å¶nXŠn¦á€ñýˆv³Žg»sãܯOjfüÈÇÔÌÃì’Ìqº,¾«B:†ªZJ-v÷ð™«2. ÏÏŽ~Ñ)n‘E½yÁ6šêv2‘¥_ÏÖ}JÓÑÚ ¼'å¯6B †ôOÚQö_¢u_Ÿ½o¦©]"¿Ù.'ÖŽÛøÆrû®XK&ç[ý‹ÎEŽpÿœi+(˜‰ãDmVµOžÝ‰5¹on¶g$½^_}ÕùåðDÓFÏBŒ‡»^sBÔö[p¯ ‹˜S·[I‹š2¿l <`§Ø+íK¥<±,éwJöJyÍE“þg(Ê&†¤ªQT/~Õ³¥k¶EåLž›3³ìÄãòü‹Pi$¶4÷okg3W•k.²!ÉRvxlþrõÅM›} ?õþŒ™Œ×Gµ ê‚_˜È ÝX’Wº…bÍ¿~¤ºdÁ{å”ßEŒ2:äšE¬ÿùII!ÀL§¡‘R4mTª‹q~f6\õLÎcÜ[ñ~+?ƒ’¨lêG½ù­t1F$]™ð§‡[ûR9pon\ð;fUê¡ Ù{Ü‘¨O¯VúÞ[à ·Fž§,/ëÏû«0IJGc²ã$åì±˹ícÈžÜgÏ€ï¦ËooAAœ89K„£­M®Â‰µ›cùÓ@ò&Ynn^°ùê˜ù»}zÀŬŠ!˜ ×b^—ÛÀ”&E‘@“CßrÛ‡;-k”bžªcÍä©"nÑÙ+í.è2ˆ* ÆÖ ²†ðÖØ:%䨧>bÍ2è‰àù ë°Vzf^~ÁÐwÏ’\qoDÔÍßðîB“Rà/ö¬LÌEËÄ5ÂI‰ÓtÛ´o‹ÂÕTs•H¬ÆðsYt˜×4]F†œà˜HÏ_(æ.#‚Glí¡X‡Õl™n®V„îÏÄxÌ~*’»yÅ'›x/Ç«‘¨µu«â©tMº5ºª¡;«×¢9r²PA²OÔ"YÔk³ˆx–(y´ãÛsz‚QnA‚ö·†æ¼™GÔ5ÐÍW4ïµ&Úõ±|X%ިʑîDèE*»Û)—FѦÚW}dŽ{à÷ÇI«P”#—òË­tHVzu9 9Ræn~[‘&œ!/Â0óUÉ4œy8ö C°qßv€]>aö´E¡ò‹ñW¤„c'ÿJ¸×.’Å0N-YB+‚3ÎÔ§3ôÍ Î…ÍOb\´¡îò‚ðÌ3üofÒø[ÏYÖî/_»º†-y¨³p8§dºfsüoô‘>"sÌ€+ÍŸ~§&:­±g‘ª£ÛFŠž‰]Áž3"H·o¡\J=œÒ dMBîèºå¶x¢ÆI'û?ÿ°ÂƒvüÖggΖò!0oL¤·iÑ> œ]dâX™[´?†ŒÖ½¨!ÎßÛGó|€ÎôÚKÌ64Ç·Ž“’$ûÛTdQÔ—ºHð „«þ9¸[¯q¼ú,Ѥ#…­£Ô˜ðñ-g1²²I™ÔjPûÁ\BædõiL®ïî!&Û„ÃÛ±/§ÛH„$îX¦Å!¼€ÿþÀ•<4vIYLr1=ÙÒGÏ籦sö„ê§µy2(fÃñÅ¢uÚôpzÐU\‰ÑCÞ\ ›ÅJÁõ`׺·c錉¸°p.s•’# &˜«Û®dg›¾‰I¶i]c<Æ7Gý UTîëlÈR™ÉùÈ~96¬îJ@æÍIá«ÆÙâ.ðe%€‘Yí»>ÁnÆfØxîŠI 1_DŸ²Wú r…à±vzœ‹MˆªÃ°ì•¦ïnL—‚g^ò1²åëÞ­™ñÖ ¬À4îa ßuÛuŒüh#ôKï›@ô넞Î ¥/ø•Q Qâ" IÈæDGÛ•7—?zRô I‡EÅ»F$Ù4»Î}gÀÚu«Or «¡wŒNŽr Jènpýênn0‰®é눋ùö_ èbÜgz`Î_7;Ï=á¢Aé x1$¶êS¥¶›Õ¾øÊ¾3£RÕi¾&”—ÈM«rªÚ>îš:Λ…:J¯Ë _jOÏJM_ZK L3šðbzkµ³Ÿ}™ì§¥|òÞn“K´ã«hdã]a!§dÊžXlxµidª"oÏ,e³—ß1¡•a9~ºQªqCx<ºŸ‰°Ð¨Y[+æwË|ÙZ ZQ\ó…|zÝ»¦ Œî¬{lÉOgØÍˈ¶vë~ Ò9P>˜Úü¡KÈÕ‹üJ㌡_ä|¯‘ªÉዯ,,ƒQ¦˜DA`±žx—N ˆØÐk;hÝ=CÞ°ƒg-‘¨…¦ß!(ã\ç%S?Ñ씎@RèBÛ‘Ž½h­BŠ0+gE±*gëc1ÜÊU×h#È}x¦ i¾XUåx)~Œ¨ÀKËé ÿ\f>®f›GEe|"Ä(ó9ÌkWh{ä&kJ_Ý"„ü¦–a,sš¹Q±¥Éüžô°ù·ûþ†Î²}kËY¤LóÝ·®íO¥û¹N]µFc§°~äÍÉ…dXQ4€%ÐøK¼× .Dc!ζ:#fkÎøB…ê¼8¦†§gºÍRhN‚‚߆ øƒú·ñ …ä¡RºA ¥•³Í¯Æ(œÇ¨™Š ЀNŠo¤1›Q‰(pG±»­|UÈš©–_g›,Ó5yÀÄ•‹A6cæã(¿6=/HYû©ÞöV/ˆjÃjwÞzº › #èyò%›+X>ƒ±”»¡¢t(›C-6˜8kEâ”}í8Œø¿‰êld<œ| ü2¹TΟ–uöféú0Y©?n Už>ð<}ÙÁl‹…»¾5ÔÃÅ»³ÓmVƒË€Ç)­æKW“€^ͲG€Ü[ô^Ç`£ñg.6 £Y´h“Ö–€áIeøH±®–5ìY4^P[K?¢ÒÝËÏ^)î™éëbTŽ(8ûÿÕiøËº×å²Hs¯?¾ò¸‰æìV`ÉÏñ(áA'†Ÿ28¹ù9B/k³7»¹Öµ•‡õçúÔ±t.W÷Ýé:mg¾1]u,ÒÎýŒ{g¨`¸\h'x5‹Kë;ÅK½ÈFÓ”ÊXdm|þÔ€ƒ]%±wâF‹Iœ¼ûh¡ÞÁø0’ˆLøƒúÕ6C!CgI`økÐH*$bqx@OuTM ûÖÜq·L”ç5ÜáûC¤Á¤ÝТš„¯„£9hê§™ªÆëJ‰çW:C/lõW£D“:Ó~´jËD?J5ªà<ÚÛx5ÏÛänF§¨T)áÍÍ|a,NªÉZ·´ÔB'÷kÆ ZýºoödrlïÓYGÝr®ïÂÂÁfؤ'tµµVB‰äÕâE[Jœ Î:ˆ®®+ CR»vÅ›ÁÓÇ«¹2,$¨]4H—RUØ >lmúÁÅÅ]e¨¤³IúsêO*ÝNµÇ3î<> `\òÂ!:ÝëáKÆ¢ºHõB-;˜Ú†÷÷ÈÞÜò³˜Æ—è@šo®¼j)¯º+Õðøi'»Z9²¯¾€ÎH÷ôTs ’İõ=Tꃢ¥&dðÇ(Z(óQZz”–õ¹lݸ]R«0ÿ‚Ä 3aDÑ×µg9~4 ÝÙ’zg{hlQzoÓ]Ò÷ß°,/XA$­'6pG…Áa?û?‰Ä„ògàÜÒï {|¿ÿ5 ‚Æm1+—JºÙr1 •ݦCûuóF;+¸#kq[}:•o[Æ,šëHt˜©ÖƒB(Ìt«Ðè»Ñã)—ÝsbÓ¿H³ZtîÈOÐ| ³GQ†Ìm±¡µî$½ÇͬÞhV´>†@{ •q$.†7½/r¤A )6ØQ‘¥ÖûT-ó ¦¢UmÃdóE¢K˜³’†~ª_»È¤ð&M+›$'q! 9ðܹJ+ã¨phÏÛè°›üê¸ÑÅÚ Wô›s£4Q„£¾m¼=S‰ß•¿£@äúXÀ˜Žmˆya­4ǪËÑ^{üÔ¿£[(—Ÿ]_CS¡ù„ö;µqš2ÌtëÓÑQ2\aus¶­ÑÉÖwBê’ù“›Ÿ‘¾Qü«¢àhò¬Ã`  ÚSo”_º)Ðl(½I| ¸bš—¥”«åô“‘ûÄäÂû/Ad©Sßµ¿4±ìGÇB)ÊSBµ ñE°Ÿ‡—Ì”ûFV©s”‡’1à‚5X‰+“=üÔ‘ùèL3¬Ç}#†ŽËx‰¨² D$6˜ÈGhæ¾íbÖ=<êÈY{^Ó×G6讘'3äT5q~ˆ—»Þ¨©1‘žW-èÂðäÁo¸Âñ,L-Ážß¢ÊÖxŸ~àèOQ¯ÊÍî4SbÚØà6ÝÃïé7mJ1¤M^ƒþœ@Iç²W~%Çþ5ˆ|# )0jW_Þ´°·Ž*œ–úqýµÝõ+ðK‹fG *¼°gf»ì¸ïdpG”H" +ñÇi&Ü™Òo'ÝùÀÆäá;ÞËzâ5ÑæsÈ`¤9ÐkkÅYPUêÌÉ›¥c-–ò— TVÏŽžÇž½:oáú<”ò`ñwkéd`4,è\m8tî,zN+T>ð"çŠè‰„{´} aŠ[Ÿé…±„L_átÃFÑø“‰.3+§:/fïNðÅ!>o½o×óY·Q‡c$ÎïÁKEÁ7óA‰C¥³ÈxË/Åâ“Û ‹ÀøÕ[‡ÁŽ_ŽèØÛ~¤¤±_aiàCDÓÖû¾ú©Sèfig'P'Ð_£)CZ§ÀÓeý燂G#“ætâ«ÐPgžfDËMpÅÜ!’¦>Lî×úy—á׸#XB äýÚâVpÒ¡\nP$—âc""3`z%9¢«ú‘³ÝàsZœ=#£™±‰Í€þ,·g8ª—S˜ÛßÊvþk¤5ÖŸ|Æ2Yf` Tì«{,¥j¢¦ãþLIs¶A0"žiRæÐ2w5$„ÿm.R3¿_`´ê釀V pŒ ´Ó֙Ʊc‚Àk²¥·+4öíò2/‚”蕓ЕsÕ£`;NIgóbÆðó–ë&AÚ[Òn¾DX‘,Éf ›µ(–þ³›¦¶Hî©¥‡é‹üüoôš›‰ÞÕåöÁùQ_×Oìq´‚u=ñP_—⋬kV;ú”ÆÃXv•¯/~÷Òhv‚"ÐÒÀ dšP693VlV§Ï!Õ •jº"öj‘,T¸ÌYx©w8¨3%!8*ÞKŽ1^ÈP•ã:_¥›“ºcE'Ç.D¸Î?>óÒ–§‚ÕtÅY°Sñ¯>žP:3=Kˆ”Xð' ă:¼ô?EzØàC¶Äî cÇô›ß#D»ÊL3³ä}¼Ì)¬\uéﺾìIj½ý|#-¿åI^)´ÿY[˽ŠA‡'÷ò ë<_d ÍEYÉS©mºtwÃË9-ÆUXíhŽe6MPëÊ¡Ç6On¹¯zÖýlæSÇ1ì2©G—^`Ü(“‰¢K\Nš×mÒÞáŠ÷mÜäòGæž7'“ÚXÇ3”wb¾ï–8ŠI1g¶qÿ/_ æ7kÓ|xºQ/µ¨$˜©Ò0aéMÅóZ7\Æ Ð¨[z«÷KÐ~nг¬8é èWÁ¥U«£z;…ª=]ç¥M…*dŸLk‹>¡>Ðnô=Å ’•=Î!øE ZP ²fRyÀg³UVƒ¯®ÁqèðwW"4µä-4‚_šùy²Hß–¨7Î ÷ÄíA²›ðñ²·¡ÝÁL"¡Ì¿X›¡žÝXþôÊJÔ$kܺ1à&|+Ôck7Cȉ ˜ýǪ‘*qš\ÑÛ|ƒ>ÿ1ŒÃù5Îåà=IV·ï,äw%ôñ˜ÓO8Õݧó=ÆéàNÖd¨'gì|tŠ@AŒØ_Ó#Ôa1¹(Ou ¤WOH1ÌsÑ®ZëW2³ïÖýúv¡’ß¿ù^Îdãêóô~¨fju±Æ›îí3©Z½8ÅÌulûÙx ÷¸{¬œ4nÜá]Sà^¥c5àvWh­7îMök¶¤/wg01tBòy÷õ¤+_]ôÁ)£ÂÈŸd·Bn ÞÄ÷7‰`EªÙf(óaŠœ³lßàõaFÛŠ†Fà$É[á<µfÇjbé´Í&ˆÿ‘=?Iøi%©>¨BÆáSË ïÙÀŽFn(3a€C"¢èþ‡K‘±’UHk»“@wô­òx'Ö©U™w2뵤G’N_îDc§6X®(K1Ì¡“Ìï3œçÙ(×*!üŸO“ÖG-ˆ_<úÔ›c¹m¥\ìôÞÓ€_äV§š8b7Eü{Çx³v]B‘Z蛋Ü /NŽÏ$ Êk@@8<–_›ór¢S¶´wÂJb.4sáÆè* ´uÔ,I_:WåLQ3ÁmâI+À| Ö‡¨5¤󢫿 &c“[ɧM[„ú¦ßø²9‡Oþ r§1ûP•ù óRùh^²šaDFÎi+e]¡kúúòÓ&¯5æøHé±öF >Sïí³™îK^ôÖý$Äz(¶H-Û À{%Ý}þWà]–&×®±[¢‡Áô"ÁË*CÜÃ#1ÓOã St^$’luóžÉƒJœ›7m›S›íûä¿™óstû" ÑN®pÎ÷ô‰¾Â];ö Z6[¢Á ²Ê–§»ª*{æ À#@Ýò¶’CÉiVpO`êÓÜýоä]7ª¨’uÓ”x(Æ©g[»ZÏ·Z€¡ió¶öþà ¹–go¯£–:ð]Šò$4ƒ b]÷uï µÒßY€0LwÙ°h|þý¸¥ ê îyÀiVt¡ÿ ¹ ÁŒ¦žr`ñ¢ê€?Îcw³œ„r©.`7¶4GbÒoÐ^±jwŽL{T&vM%ŽªÃNÊÙ¬XʦÉå}í@Ìã 1üúâs{A(÷ÉæIM† iÐC©ð‚žž¿ö­<äZw³e¿³ÊÔÚAiÅBÊÆKeö¸)ÀŠL6¡T1TŸ¶¤íBt™–׻Ǣó ÀÍA¥ñZçÃcM§uTKcÒÖ‹ÜDo‚ÁˆýsFœK/´òpã'bS†ûà5c‚"l’¹S}øÄósƒ+Nb#…ÚâL¦'ó`%¤àŠb­ï~hxñnÃê]ÚÈq:‘ì@3øŽ¾¦õÄ¥é9Ðx"]ç2Ÿ+B‘ÊñyLï ½{[ìíhŒ8Õ«‚-·t4½Çš)õ~6¸×åFFt ׿@^€¯<‚ÑÉóß‚‚­ðNÕÂ&BÚÙKã«T_ ëm-@|‰Ž?‚úBéG:¾/ž ëî§”ZŽ€Ò|}s©£À(ýõõ&ޝU‚6kÓ}íZƒ> >O#d5¤­h¥;#ÚiöÚHn8ä×Ïñâïû»EפD$Â.ž.^‹tóHš‹‚RáíÛ˜Þeûí´Ê)¼Qû+ÀÆ,á³þáY§½&Ý/¾'}%Õüszg‡`Ü­—$}57c´ï'&?y„OC-íšTu@AÕ°äGYRêŠl¿Šæ©K/^ªÇ¸òŸEw9üuKø€Bý˜ÃUÞƒ9²\Q%xõNhÈÍÃw”ܬӡX_¨etz /'zjÕz j§ãõ®WK÷cãø}ŠlE’|'JÀµ|a…uY(=kT’ M`Z,ádþ&4ÛÍê9—®Èc¶ëv% ÛäaþÄÅtxÖd2®]ºTZÍu“ŽƒL°‘ÿ Š¹Ú’4E¹rµY¬Pîs4bÜlß·ÐÓþ ék [M)OÝ2^lï*à‚c•æÈågšª¬È« „Ë»)žÓQÍÌý4‰è.Ò„ÒUÚ«ÒSPðc­qä7œSW†¡ïˆ %H÷$¥ÒQxý©D§*¿ï…؇Š$émnX?¬Ÿ'²+i(€÷q8‚’¹hJós‡ÁZ#N(0Ê@¬›!³Œñ>}·ÏŠ•ò¿qKØ€)"‘Bd5{je›¶°Ê uxnŽ&þàc¨Ð,êŸMù #¡fpâÑ5À#ÝŽ6ÄÞìwò@W‘ç¡p‰û £ð׎«gîHeÎêнè˜Ï2ˆaÃËD#ý, ý/ÑFý+li7^ž '+Q»)þÞ§­Ä‡qÒÀö¯K‡4çëÀ›Òš8¸)ŸúA뀿Gé¡›cüE®áçQi…º@ý+ŸâÎILq,QUlhÙ qD7–F?RQ`ÇéöVÙ>²áúðV'£DÁ†eÛ­ì—nxF×8¹¤ƒ|¾UèŠd???ˆ»"~TMÍÉÐŽ{2²f¤Š{™77¾hè,Œû íHœ>Ùè£ämiå׆$Øà<S~Ö²ŸùÒ"zTG𔄯BñÔ•9[ÆéÜGhÝ ˜(´‡05x¸I¹=ÑJÄ NB&õìÓÚêË&ä¤Ûؾ¿<öGWöP>_‹Ê爂žD85Lƶ’‰iqò…Y+(ÖGº.Êѧ¡ƒ;ËCÞÞ¼ùNtý‰‰û)¾/»Ì­q#—v‚…Õ‚E«T½ÏÃV­ dˉµœÏ:ΆÀgMZ 2™ý7tzp²†|~XCàGgntMáØŸ¥m:Y¢@{«‹µc©Èœyª¦1!¸ë[«}³µñ¯œ@=eÊħ£QjÌoÃDpÈ+$c¶åã.Œ¼q¿%®^ÐövñyÇtNTå°ˆ5¶Jµ½)o‡aÏe«|.ä"ˆ½Û˜6X ¶I¦7/VnsÄÃÅÍyŽ2\X‹[qª=´¥×ÙØWHý‹¾jÀÑyØšX?g[ E¨ØšÅ‹w ÆuäSyPÓ!½IÞ·´3O¥¥¶eà³ýw˜À;)¸ï[Œn´n\@±ÒÒ=™úãž’ÀãSû…Ïœ¶|ˆ¯u,* «P˜ã=ŠÛQpüq)´Ïj·€¤â¡s+6!`¤ÆBçÚ©¬A­Â°Ü^‹\š¤f—ޡبØñ¦YP¿W¡H”Y—Üx=^g (CÔJ5…àxa[êGlˆ&GÔñ$9c~ýȲf´”GG>ÖÌÆƒÈÿÑä-ýÜúa‹¼p^–H^m5ºCcLXƒ_Oï•ù?»aøeï¢Q»÷ËŽeѱ \à @ߟB5ú¶¼=*°«r«þ¥½c1Ö”ø¡÷ê’“/Öêp¿ðÞL"6Ó7üOΔ’è„ä2õ3,ab9ó” ÕrÍ`_^dü±l$ÛíÒ€°FÍ¢ByŒ«ìˆþ"v$‘yn•Ç“Àõ˜½à¥j¹q6¡c‹A§q´;ï=Ày=¥±.ubÝëÊãU÷¸[–îòzݺ€¡­-V‘•ÜïÛ5Of·[Ü»óZ Ò¦n›e@pÃ…í?þ€œp©5 ¥ü°yF%ºéçCLÑ“1y뚊㎱‘%Æ=º¨i7\! $ °D-®¼ŽTü* ’*îRG&ò3-Y_­1CkÚéë.)Ž0ÞYµ"È®úTQù1‡*™r{sŒã÷õ{Å„2Á-º<½‹Ç”ÀU=þôœ7£Q7-Û—«düͦø)3®D.ËTä8šÛ?0ÿß!!7lÙpá xkI$gJ‚F·|ìüfób~ÜóýdYøí”Z¼ ´fSe  FàóÍN^95˜¨pÁ=¼å Âe‘±ù¡+sÒ) 4UÏÉ@¸©ÀŸA2ìmTÊ» 1YpÛàŠB­vKš Cç¼;ÝÓ~›Fø.ÔuÙ]„ë}¤Êh°þž³âFa˽ø,:,/•³¸Ï÷3àêJýBJQ›°È¡(·vä šcßÜ%ô]Oš”^šªÌêLRÙ+‚Îå•(íÀS™™ÓõÌ ¬ŸÄ~ÅÂ[³ËˆjË="÷pâVÍuRŒ åÁen÷,¹Âã ÇýÝKýÂbªÇhò LoÜzðÁ©¾¤ZÒ™Œi%à?Þ<‡ÏÙo„â!y†™sbÉ>HÊGú±m‚Üëì;~X׃bÂÇ?Ï1u½Ë–®d‰Íl±ñþ](:˜7ÚŒ´K\ñMVß|!×ͬVœ¡VQc‡-bí~þUïgŠŸ‚Ÿ\3e—ð¢\Õ­xÖüfGª'£pÔqiÙp<$©.$ð·PšûÝÄz[¢™ÀèùõüsÈc“ªòOƒ=¼psÂHA Qt Ìyײ«'÷Y–(säø“Ê¢Ì27ä™ës!÷´QµQŽúÊĪKZ|ˆß’Ò­ÖVQêðÞÉÎÖ//É?o)Ë—e“‚¸ öIs‹•|!ùöZ™'c’G.÷ƒŒ#ý–‡Ÿ9ŸuºY>X@§ÆÊgDt’¶ÐqwŽAïÈIºÿï[“*ÝsÄê“ÔL¡F>Ãωs±&(Àø8­~Ø0ˆc }öfÓâåÏq±´M»¾þÛ6¢¶ 3q3Jø)ókúg@S×±Ÿ„‰‡Ã*¦¬ f¥¹ ¯.¬îÈÍ–_4 9q  ÌÂÙŒúŽ.©QzÅÿž3­RyPÍ!è.–dI¥X¨Bklnš¤4RcÇ”°Ú§›èá)çõÅ­t•Á¼õ±HF)LUøì4}ÛïüÒPáV†²âKOÈ59QÀÙuræºÿ€Ë£çŠÂj³ò’?{J6F/ó–z¢&ØÅi å…8+ ßX­€SãŽv’eÀ< <¾æ$ éFç«s[ä(¼N1JۼΰòÃNpYÙol™—,ŽT @vÔÀ›v€2oT`WÒI¯¼öQ¾Ñhz'®Ø«E"”–Ýg[ð_%íe à/f8L„;¯ƒƒúåœU "ÌóÃ3Ëò/×F‘pÕ×êäÞ ƒ0ÞS2~†ò£È¸‚nWð6¾ê³þ|ç©.9®×¡”¾CÌÏøëÉ´— Dæ©J4±%bX0/¡%JãÄE(¯ñ¶cŒ¯‡õSß4h<.ŠYR_gx”YTyðØCxP /6/ÁÂx–0(í.Ê zz‘å&4ªxÃ>©Ô«‚~ansWU|#½bµm<Í'.Š[ÅþÔßÅ0UKÇ!ô#M;¦ •`]¥\gÅöïz➣ӛKZ¹W¦†JvVȵxÍd»œU²ó-ù’ÒQ °òÍ(ƤÂ%¥Ó•2V´™k¸P®{›jýM»€–³ŽGÅ„58 ÀCIßÅm£éñ Ni7Ë%ß‚ÍûògÒO™ÒJÉÕÆŽö¯¢fГZ= ¶É^¥˜‰ÐÝÕUÚ•Ú–0’ë(Þ&Šéµ‰‘žæ(r)š¶§¶yÛ«Æ„Té÷Sª‰+Ù§­õ ºIÆ2ûBX{µ;‰×¢•G!ʽРQ©Ø=$£s4»mçq*Ag?DÚ.}AÜÅmù2jß½B?(&ì]”sa ÛnÀMÖJ—hrõ›c¿¤E`þöZyì8À2aÄ©xBî„;Ÿ‡¿Q¨óH@N®¥{‰Uº}Å‚bå*0Ì•)RnËM>OÎ4 ±05>¬Ê’ä'› wzͽ¤ðnõ{þúºSâšÐ¼ëP·å-ë¶`q'2™o•räMàÃñCý›B¨Õ;×yº¤[¡DDõ8»ÊÕ·€ TÆ&ö„aàgMâ™Óae¢‚ÇÆìžM€¦aHº°ñ›f ’&1–ÕK €dný§ÚŠf«—ªýs¼…¶Ðêº=âôU—„EÄ ÝS‚y?ào5‚ÜÓ3{î|ÈíŽÓç9ê»óß§z²<õ½ œÏ0i2“ ðP€øz›`IMô ó”” N?¨'Q½¢û|i’·œØ>@)#°ïçÆÇ¿ZÈO¨Šù"àÜý~ †?ïÈ .#z1‰¤ Âìñiæj¤U'ú0—ÚE_lzÒ)ïêxt×&꙾qg¸Ëü†áT¸ Ÿ¢yýãù Çœê3_ÃESï?0Ý¿LÏé©"óÕ{#NOÙÛ¬\š(8ækt{þ‚š¡µs×áGiZ „LJ%ÅçêOð5Ô›"^,¹Š…%Öe¦Ó†·¼Ë‚hyô¬£³IøÆq¬i"ÿï^"ð Mo^ ó Ÿvf›Ž¹~ÃXŽ£A\9&ÍGøÍüÎë>A¢D׎¾Æ¼óµÃŸ4¾Yg;¾á¯ S¿ÃOK•nQèfÅÛÄ>ŠÎÿa¶þÎ#@ŸíaC5Þ^g·ouœà l»šPñÛàWÈÉJ†Áo·05Á&±½ð®&U*…;%}§bǹ˜lÏ{R(x{d*jA%•äÏc©å«‡–ÍäNv½+PØ bòLbœCG8¸²$,ÈA†{m7ÂÛ^ÒRlуލÅ,/èÉÜ¥Ëeh}ZzØ(Áj [M)OÝ2åg[).È‰È âqâ=EPÈsÃ4 GüкY-…t&ZG‘U9`FoƒmŽòÈÓZräR¦f«•Å#*†Ÿ`º¿þ¼Ý'ßP™sÕvn¥l8£À´:~Ƥ FìXä8:~?|(CædÙwZ[ ^ÛbΨLnàV›‹›1雇4íK8 n°F¿ûW{Z¹ÆTBPÙ‰t"öjjPk<-‚Çf‘ðèHF;riÍKÍI:>Ü€±n?ôUŽî^á:›To~ÕRxzýϽTëûÏ]'@$Iæ,+9 .ÆÔóïí P«ÒÁ”Lªºnmjp‡d„†¥™ðþaV.‰6ÂhÀÕ¹4±jQëG=u¦Á¢BÞBŒ³\™âíÆ{n3~-E•ãaª#|- ²Òf$"~T×ÉâšQXÇj²š uÈv£Í@«û|æU(Â@`½+~„Ì. ž“åå+> ð9ãÍÌk”BTuœÄ“€m{%3ƒ½ÛÎöÐTØÖÝøÓxQÐë$ITÂñ·,m™úhÃx±ñÍé\‘C¯’YW¾˜|O¶°+Câñt¯Î|ìw³\¿»¨«”Ó@ˆ*þLënÃÜ G­×éׯcÏÏà¢W¼ oäDhšÑùN}}ÆÃ:RvÐõ9=¯ŠË®¤á'{¹ó‚«Û¡[ߺ«‡#,–´…÷iÛ=u—m0)MQß„Ž=ËŽU¢õˆÉük¯Æ¯~DýÂÝ¡=K]­µ–ïž'ÀXŸè¥ zšœÂ‘*‹ÝÞZ<9ObÍÌÊ©rÀG4k ¤—ˆ³G„®r9<Ò›3¡ð«ü$’œªùpW'öŒÔàQy¸ÇÍ{õM*äý›Âòœ¥ª¥û­«OÊ…ÑR¨²é…¯¼ðÐy_cvˆË”„ƒavùl:~ŽŒÃc1I·±¡Íʶõ„—RØiÐedøç•wZ ©YÝŽ²gÿ`÷•â«Ä_f³ |AÜþY/GÀRù;§xcúw¯úÜÑ¢ªi™ñÐçëØ[3Ah6õB„ÖÛFpMh =$%HÅ­QXºt;r¿&cèÀìXÌè:]Ìtz\jŽÛ¥Žâ}žr=ž Ñ'×U¸›û»¨Ϋõ©âCN‡EÁÃH¢£°¹%§ÖxO}K3ÏlQt™J¸=ªåé‚_ò˜ºaÍi«‹0`¿ [uŒôÖA0 öëWê endstream endobj 253 0 obj << /Length1 2118 /Length2 22085 /Length3 0 /Length 23325 /Filter /FlateDecode >> stream xÚ´»eT›ë¶6Œ§¸Kpw§Hqw÷"Á Ü¥Xqw—âÐâÅÝÝÝ¡8)þѵÏÞkýž¿ß`„pM½æ|æ=ŸŒP‘)«1‰˜Ù›%íA`&6fV~€¼‚š1È™•IÉÄÖÊÑ`gfeåD¤¢sƒ­ìAâÆ` ?€l P2¿¹:ØYYù©R@ÐéMi0ñ(ÁÆê@6­ñ_@ÙÞÌdbìü¦‚,¬@@º71{'+ KðŸLL"ýñeÈ›ÚØ»9ÛXŒAfYff€¢½Û›Ð @k˜-mÍöæu 6@CMBU ¥ª¤¡¬FÇüXÍÅÁÁÞ鸈©©kH1ÄEÕ%@MF€”†šúŸßê@Ð F€¢ú›þOž7Ã?î ê"ê:Êl,j°\NÎVÒþ7ê7f€¿©½¹š;ÙÛý•@k ;ð³°¸¹¹1[¸8ƒ™í,˜lÿâ§niå p³w²¼=;m5ÆdöÖN°%ð_þ\€¼•)ä üã$iÿ/¥Ý[+ßœÞäàÿ{køOLÛ™œÀÿ•ÆÒØù/_yeey€± ƒLß ÁÆ`gÀ§¿do Í¿b.NNr(ü[åôŸ4ÿ¦.jÿV™¾­—±Û_1c‹³ç?zó¿Ë6µ9[9ƒÿ0·²þaïüçšYþ’)ˆ(ÊHJ¨©3É¿ ˆIÁþ­; f°;ø/ë?ñDÄåù¼¬Ü6>NëÛJ€ÌÄìíìÞX;#þiŸ¸Õ[ŸÀöN,ÿÏ\Û€ìÝ@^ÿ¯ÜÜ dfþ§óf., ?2ñÿ±~!þ-³‚¬ #ènjÉò'Ý_ÓòGÌöGüÖ/{€¹±­3ÐÇÊøö„èålì €\€>^ÿTüo„ÈÆ0³2¿ úÛaAü+º ÈÜÀ÷/ñ“«þghÿ:¨to§ÔÌdë0š#²(ڃ߂öÿŸsö_¹$]lm퀴ÿÝÒÿ¶3¶³²õø_–ÿe¡üÕVÑÞÉÎØö¿tVÎ’Vî@3e+°©å¿û/¹ ØømöE@¶@û¿„”íÛä¾m«?ËëMÅÉý_º·¡4µœ¬©€oø/ÊoÝÿCÀ¢«"'%#ÇðÿLÍ_f S{3+€‹`ìädìÈú6 ì\\/¶·©6ºÿ5+f=øÍààö˜Û;!þ¹žÜ\‘?¢!n‹è߈À"ö7â°ˆÿø,ÿA<¬É¿€EêoÄ`‘ù½eÿ½ÅTü½ÅTúâ}‹©ü7b°¨þ8,ꣷ4þFo¬µþƒøÞñßè-ŸÉßè-Ÿéëmà?à[FóÀ·2,þßXþ¾Q°ú|Ëcû7d{+ôø–Èþð-‘ÃàÛ¨°8¬ìÍþañ–Ìéð-™ó?à›øð­b—À·"Ýþ‚ÿ{¼”ÿ,Ø¿vëßóö?wž¿°ØÉÞ¨eeöv×ý‡‰‚1ØÉÊ]õíà³½Éß~þý—ÁÿJ@õ÷Îú‡·¨¨½»'7+€‰ãm¼ ¾?õpúü/_ÓÝþZ:oãßøÏî@SÄ¥y{ÓÁÖ) !¥¾“e°T|Ì'8BÚ²q0Ké“­„xâ¹Ûä@á€&ÿ êB{yi~ߤP±6U0¶íËzsbåĵ™ÊÇc__BT ‘‘MfÀ …Eÿ²vrºŸ²9ù:%œÓ-q-$‘#1¾ÖŽû(öñWô«drý²–Õ)gÞ(QG ðCœ‚s$ITÄó¤Ý½4VÕ(0¿Zvô|O=I„äõW±¸¥+hMd°¶)dqû±R¤?rν2gwí§Î ´ÊlVžÜ(J!"~œÉN…DÅì  âO™›!XôJÎh¶2ì%}±ƒ–«€™âÄ ¯2ìÃÆN®ÐÊ₩WOfÀÈB¡_ÛB^7ÁŶ†ÌÙþ•ñD~([¾x Ï˜Œ'àù‰Üèó!蓘'”kW?:2ò©Æh=YQ";1Ld!¼©pÁlñ%w59ëJ#K9fü¢¾¦Üwç,ßRfœ€øÆ{ÿ»*ì2Ç"¦A>{ý(ÎZÄ¥â~kæÃ´ûÇŠ(ÿ°’þƒß1°·šžƒ9AÝ£_´&wrÕ“‹>‡ 2í-ùÕJV°“ÆÆƒbÂD:+¸öa6d¨<øÐ˜ìU}õ ÒQâ*19ß“Åð±—°›B#“AS›äJí°¼´jó>äjFÏŸ¨ÁD½ çq¸òÛk¼–CÃÏ›ùáfÍÞÙ\vnKÍÁbL|@+¬<º «Ä¶®b+Å׉ì©vyJ³Æe©k[ùrNõ$N8;cÁ¦]††49ë(ëŒlvËè(^f]‡/ýu¡|í!qYœbiÕ#‚€Bm+7Ã% ‹¸Ÿ+? –(°:¦å ñw˜ÄvFj…ŒOÑóLÔĆòë£:Óu=bHQi÷»„Ûíupc±³•²nY¾åw>9³°¯þ,øÖ‡r¿e’hkÀù5YÂMRÞ§Ý‚8ÒµóeŒ±‚îŽl°|þ¨‡½¹écj †kvw¯ˆòâ8<Á -c*—6å1fÜÁ^ëo¯oŸ¼z©¹æÑò¡— çÕM#ÒÙc½úËA RÆÁ¬»ü%ÎýU÷E{’`È3~j릞ÒÐwÆìÒømt Zó$ ¥ÊdüURøë4ns£Áºn .~ª‹&#ÔüG-­’—uÒu¯¥øz5MX]ê¼PÊü2¹ßÀ§ÇŸ ^gïß³À]ƒ~ÇzjÓ&œ¼¬CáïO1¶&hkÙS' ©£2 ƒ‚I飨“@Òhið²Äž:4dMKÿíª3jKš ®¹ÎøÜ^ûZЏ{È ¥â.÷AewˆþVÓÞ!N¹Õ¯X—›Ôò¾z'¼cë!c·îcàé ù‰äg¹´Ç®ÜÐe¦*õõx«)¡ßOÇlBË׳ èïí8 Öçöð#YÎõ{-N‘xW+ê)Ûc´DŸ8‘k1Ã{àBÂ}eJÁ?¡l÷ª÷m9-l \8e#C|LÆT4„©2Ç¢µ(P³ŠÓ[ýÝcXœÆ÷nt”krPöv[åWªM¢ˆÈdžvæk~à±ùòÿ6¼ØÔ]i"°>¤Xt¼¥ÔC‘~tsj™Â=ØÀ)>ó O+1¨…î©rt PžHO%Eqo¹~(7`ͼKRE ¿9oGñÓîüþ\<ÎÁÏa ¶†rV.}¼—úá-y1lM'Ý÷Ó¥ÕbI Y«7‡ºxCã;’7R¶˜V"·NØ9Žcn%Ë«Bꂾƒ3mÈùõ6}µŽRu>͹üsÅåT,?¾jÎÎhþôƲwNðíýR–ÅL*ßPÞþ~vQçÅù¥X;”5ûmÌ€ã…'áµ§Õ­ÊÑR(¨kû’ªßO³©‹6Ìo©Uïâ”ógôfµQ*¢žj23XP!A¶vyŠü„‡U#IPa^Rì]Ÿé¿æ4#„!¥- û=\ ù1Ì< @îVŠùn¶ÅퟩÝ[ ú˜£1wz''cµÕD2?t±ôÝDy–ÃÍ_â} Û„G€¥qшVÚ 6‰ÜWKìr­Ijdt- Êñi( JZai³'T—g#/u/·ß„•©úÎ5º3ƒæ9­ŒJÕã‚ÓµM¥‚ÐŒðªD/[ÝÑ¿ °^ˆã‰P iwýcé^s‘”#¬Ï›X>aÁSȱ^ÆÈ'DÁ§heþƒ¸ÁŸ•îi{J匰÷ûi‚3I¶’ɲ¦[gãDc…D™²(ï¹üÕ¢Ó…ˆò„(ÚVÀNùób°0Ø™mÍ?£!Œoe‘.ÂðcКtÏHͪ–ö3&[2~C†ä¹ÁF† ™‹ùÖ›B–ÜJk*t+ìÌ¥{=[‹nm•¸òi¦#’\Øp i¹J8¶o‘œz‚BÜý~?ƒwøÉ¯»® œ#Çž¹~ý@ÂsÑ.ƒ½¯œÐx÷p +q%ðƒ¦“¼ë‚ð^é|Ò²îÒ‘:±ö?>ga°5 #H¸ëœVÏ“¸YRØw²ÊH,éòy´íoyÎjÀÎÔíËF!Ñó#‰ödÑï-¬suX„a™wÔ¦ÊùpA9^ü£f+U¿žÇøý;Ë“± »Lílìh‘ä‚Ýb|†Ü°¬÷¸W>… —9x2“ wrµSçɼ½0(ƒiµ ÿ'@‡mX®JÚÂzÃÔóâ’Õµÿu}k!6@’™¾É+üîJJ¥ˆœŠÇoÅ'2G—RvÝð€o‰è…›ãkŠóBHaF)Áƒ…«%å®U$„;ùZî×´AÎf'“óé ¿Ság.§¾¢ 8Š__»')C$‰ö[ЦP. _õ/M5;Iª«c–ÑH1œ B"FãBºU”Ðs(žámÔ‹Ëà´ @Õ™Êä ©ÏÁ~»B .^Ö} ­`ñyÍjùàcèÖr3PðÎ7;Ú&g|èjL®Óƒ~w…Þ ô%Vá;À`lzHsv¦Ò‘2%‚Æ;Ç¢›,›u ÕŽ¸õG›>ò·ÿôYx]ÑèŠwÉÌSVhèX3—;H,M…êvÈô§êûdç:xO&°ÎX.Ä?ܹ¥íjÍÅR:²½®DQÄÇ5¸n 㙀Yàq©‹aÔ–é+3•0¶ÒÌxü[ØÍ‹X˜?Yÿ쉀]vªÒá¶!ýâá‚‘Ë]c¦Òì9¢û-ر!û”;ò)àì D¼ÿ¼ÀšíÑÁ;@/ŒÕv½kƒšÔ£÷IëAO¾!» yÌ™Òý˜å,·?EãËSVò]…1mÚ¯ˆ´Ì5 ú¹òScÙ tqÄŸ3ÝÑ(tt0 IBìŠÁŒùîþ·ßr¬ÚÔ…³toðöH+#c//c]>§ä`»¿¸Å–”ÉßÝîH„ðl…IQ(©P|C[^´â¢œÅ!ÉÓ8Ôñ¸vpþè~RNZjo-d­XN0I}GºD¤Ë” Ú_ˆÎ>UXƒ>i’\¥Iœ--`íÙÞówƒÉàãÀ qðÍp!•_JÝ/ÐÂî´=i½ÝË¿cP²QÉiü_‚×Ń+My“sð«XŸépu²Îo>ðŸORÄV˜‹4qû{¢ƒl%9È©;HV@Q'%—ŸÏÊ'?‚«–Ym×Lxû ýSAºë„5¯±pT|o‘ç;ª¯“ÿOš2ÑTÞ4X²8Ä7¤Èp¡üðñ^«M0¾ Îpdõ¦åÛü¯ZÂÔBv´µ] ÷ÑON…ŸÏ’HI>røªø_üì1j—ß;¸-1»—@zFʼn‹î‰—Ф=²<"äí·Px­À[Hzdw–Üñµª ÜY*ø|PÇ‹B¯â3gÂQüåõÛÔÀ1$ŒI¸¼%­2ÂjÜgI¯®ÍË®pýB½!3—kϹNÁeò)ùˆzÎ+±”v³ùÀ­QpÓÆOÝH†µÝÁLÄs\%i7zµ@Žë.Êvd{X(…è¨NÄ{aàmœ¡‚“Ö\ë¿ ïJCpÁ“RýQ€ƒ “ÉÇ£`oy,ãÒÏðó)ë;ߣÉèiÐ…ª'¥ôzü¶ŠZ·aZÁЍ½mÞ®7g1'¥wBâéý¶Úx—§mvÀÁ7ÔÍâ·K>™òùcÔ…ÌYÛ)eQõ;ª9¬Ì¯¸• á–¾87÷rR*(íJyƒ râ;¡’ˆËmÖåŸtèÛ%Ì]o†owûÛŠE"ÐdÁFH7Ùá”àh%ò³l &WEÏŠþ:Ç׳.¿Ÿb“]§’Cçósx\×MËóî@…$(<‚ýw­ûËãIíjŒáó~kU;qâ’ÄHTânï9d>Ï1'>bìh«njK[ ×`qxO²—$½u¶ªh.¬ À×ÆÞ¦*0SAe] ãwÕç çýg¥Õm Ž:¿LëðÃÁï,үϊ&Åe_1½E¥¦ŠÛ*©Ý —XdWªXÄ?Ê(kW¨±¹ÎŠéÌõùÂubb„ŽD-gÏkŒÔŽ>|ÎaÜH©‚3ô %:”Á–WëSÌwuD²^¶äÊE0ªÀ¤{šië_HœÑ/*Ëj{íÑ Jã€âêÀX æm"»êâ?£H=È9T·kW+Q'Íf †TQö22ÏPt“¬!Ž¹Ç‡aÏàW;—Šx×ê³ÕÐýš+‘Ö"9÷›’ÊÚdb-e±€/Òq'O7c‚ö£.ÅÂh‹ç‘¥°ÞU÷­ÊgÖ—ÍìÊVÅÚªØÞæ“ ñ/Þ™gKEŠûŸ¼óÔQüèÂjBѧº­íýº·•敼ÀíÛPI4™êHBS4l_zFz­BMÝPWæHrÆ6ò\ çiAVm‘˜šã®)¼IGŽóÜj­ Üauó™üqŸ|çÖHȲ6R‚zR´¯ÖëC™!¿! јþ|[Õ© J7Ev!ÒŸ÷µg1Bf[yøUäwa0dvà#ØqX[‰œ>oIö—ÑÁô¥Ö6döÐÚ¦O6erƒp$ÜJ\±~QJ­žõc÷#c#ôEzÛ‡Ô ®Z€«ŸËܘ¨‚ÄzSeçºGcâÍ&¬:zÿøµÝ¾}ðÚ Ex²ATA‡¦Ïé!¶_þ‹C¦ž¯XHaóHhqmX¸ÉžN[Ôþýƒ·r¶ÆMÐêQl¯¸$Ø~Ð0ƒ8À;ƒqë¢ÚÆÓÍÖtymlÖ·dT—j á7ÆÇŸ´Ò;ïâøê°EÌ4pžkO¡-g±-Юkƒ0DY¾>;4Jº f‘ï#ïÄYe¸%-ø8·sp P -FA cŽÙÌêÛ‘QÊ2Äì™í1‡1©è§E<¡r`.;»Ô]¼¯ƒœ.c’«ÙÏ«¦wú,‹a½Ž}Ü17ÆPúÐx œöb-Çÿ³Ñ"&¹ð{¸Ò‘]¬ §AÃc}Ï/MB¢<á›Ù ‘Ÿ/’z%‚êü¬VÌc/qñiæºøÒ1E‡mÅßÉR,!®«ÂÐ…5¡Ÿg1ñ›?Oˆgß^§~D±óéâ)…5~fÞ*ú³åÍMpEĘ!盕Á¸Ž…-ù2°§/·ET=ßä69˜\†L <å,®µCÇJ,NÒïŠ5¹ŠKrŒšw¼/£i¥ÚƒŒ|™T¯ù’>E D5έšKäÀaBÔÄøèènÕxÚ`–•ê…£^ X˜hÖÈVîËÌéÜ?¾sSªQ[<“$§-#_ì:{ìÁA5…2-°ž4œô-u¶›¤8䘿|Aª,ü¢¼ëÛYµ \¼:²¨ÄlÜ7†aËc ͈â$ÜëÚÑìß¹¶sÛ ‚àÜië>-*—{¿ôëè]?#HXdù㔫Z«Œ6ô;Ò­¤×½­×ÉÚPíôu BW,(‡‹\µ˜þcž zÍÞ˜ÁXóæWÓ&Äàïö.•ÖK==…C7ø7AO͆8¯’\¢dkûñlïç>i–£Ss¬?º‰Õß e-ç ûÐQpu˜›ÂGËb¾ d m#_™ãÓïOeãISDõПøú2ŠlH™ØûDAL1È¿­>üÀj…:«H¯r Òª}á]ð Ó±…´ñù“´$¡Š€¾üãèdÁz J¢¢Z’ußÖËUwßï#ü±à 8ÊòøÃRoÆíV²>D¼eŸçwôYt1 Ë‚óÜ+a‚À)EùãTü ÔglÔýP¾ôæµb;'P½×ø·¡pJ/¨½—Ú!ºØQÕÊç“Z`K ;pD‚ƒâ\LjjÑpt³óêü å¥?‘™9ãöUýK$B§¸å<êò‡, ip$Š_]M¬À‹H.kË©ðj«5ÖTàÞ¸~÷Œƒ¡IÂ=Ë1×× Ûþñ𤍍 ÚߦÒé*¤C}W…‰Mû64%uÌTÐóN†ŽÓfÐÂV¹ó³K‘Ž‘Ãìï±df6ûüI6vlK³Ô€æíˆLÝK²nFPôÖŠ©`òQ­. oÓ{V¨bvº¢CŸ¤ ãD2oÆÀ/þs¢ð¼˜2,ÇR'è…sŒ#—²øäžß°xˆÞ!'ÑDÕã;÷hØHw¨Žc¥ýŠ7¨8C°¹_–ëI»m•ïv}ïá<ÿâvWÎìôÐ6úØâqü%4se»^9‡èUôÅF ‡Ioðšú‰uN…dîT¨fŠü#’U¢I?–fšû%½'g)F+ãÎtÓ-ŒfO³BÕ$§;ì_óƒN‚Pk8:цÃÕö1ƒáfÏÿ'~\L2ë{¯ÙmÐ.È—,‚×2ï—J|C~v+}9^ã þþ7¶þá”—2ÐŒàq?-SÆ;Îïæâw£‰tx¢dŒPþÌ^VçY‡¿¼”g( [¸Ït7濨—mü˜­ ¯&3#܉áIr(°9á õý¥y°wØPgþ‹4Ì©…zm}j8òh– ©p‹ø÷ò=M1¼0òwCèB%Ã>üfÐÍ%ýÙ‹Æe0îÅ(²×Õ€þ?=ÝàjG;ì_ÍOHše´ nï.0¼u㋳¢•;u_Ï`Pž 6úQ®¾z…f›ÏúPêeŒ„Ŧ*0Òf@ ÙP†º|9QGö&ÂŒÕ)°s”R¸G~´8ê x3g•#MËÑBuÃaúÀ›ìÎëm¸ÓpÇ“Á¹üÊ^ŸdôRKÜãúrN@5Fp 9I¢YïzCi%Af¢CÏv e8%ÄÖÆN×÷;áHL’&$ªSÀ}2*£Ùá Í3¼î[•¤ÜÉMHuLœ3œ½XŠc­^h,3ÌV²‚ÂT+÷{óÈ)¸¨ŸóµÂv'Ã<¦m@!X½°x‰æÆ9¾÷øÕD³cWãO˜»,Dù®J½Çyg”߬ðCüÚ‘^3õ+‰ê[.¾N [£Î7(qm~?¶K´F®™ ʇa?l)©Ä+a}e’’qŒØÛšL©[{!hh?C¥‘ã( !r™MâJ¯<°‹ÿï‘Ðoby6¤ìÂR¬?›hÇÄ,‡3‡}£´%\}ù*¸ºerlè#0ûê·H?ðìNkÕ²€Æø€þ2ŽæÕ±žì9ëz˖иãâ:@—ŒJBðäØ0¿³T[/Û³ï#äÀBu³¿ÐF3¿›ø²=îÕúÃÓò7ªúÌþí·¶¯çèNg\%—OáT”æ³à7½'ë8Õp© ’ä˜èK‰FÚ¸{ÏÍEF¿¢÷05¿}¯¹uýDhû‘³>¿ÿ¥ÈG¹ôäZ5ã®3Q¢ñƒ~ܬeŽ‹Ú:˜}¯^­Íó‰)ÚžgNÒ:ÇšŸåàzo¹¯s®dÄÍ=íâ‚ÖÙ–‰êz˜E|ÃoO½ç\9 Ûô¬5+5deJ~¹Ÿ€?+ûÑœönË€ø$¤’· l™j……ÕZ¢"`{ ÜoEÏ ¦;cË AØ…QúB¯…Q&ÅèìÖPj熾'UT>>z/«Ûyé?já=÷LòuaGÙ…ÛäâÖÿsÇîêÅàÞ×#c?’ˆÑúj5FjŒ)rìH'« w±Î•#&rë䳺Û^eÌÒ½©(Œ Vý•Uñj~AK\jõ“ÏËþg3s×.šrL/FõÿÇÆ8ô*Çtep‡¥;[dŸ¹…o©ÕÞ&8…QŒl#$¹ÐXiŒÏN6¿áƒK•‚÷¦Ž›ó¼Ç‰wäºQIl¾Í³HIiyUwÓ»¾Ž-;gi‘,Ìõž3¡·è½>ÙM¦!&r¶Ðë]oшR+Î!fmn¯ÌÁµ¢5«‚gw¢M~77ƒ˜¨_Ñ?'u~cÅRÔ†íáf‘Ȉß;ÝMÌÜgœk=» ÐV­\•5Ì(I˜M‡•ÞvRü`MÉRñ:ÔèçN ÉŽÒÉOyå¿’Ë&¦;çóÝ,Ç”p”w®—þÜ/>Z™"zöqÂÀ­df¦ïi'Å&8Ü ¥v;ä÷ã—q†û>îæhTF-3£§àÝk¦œÒV8L?­…N…u¸‘[ >EÈQÂÕ–+½h¯í1eж˜BÄVψÿ 7‚¿v·œï]ÔÒªy¨ yñêÞe;6ù­õí‘åã‡#èË ±šÃÕ Xô–?r €Ý€*.úŒ¦Or‘¥×Ò/A|v×±2lFde¸¸+ŠœO:UÁ]!-‚‚ÐÅÔY^ß0ÄÚš:äbk†Å/WøÚûìDW.]¦bN}¹’k†jå¢Ç»ßä…ég/‘rƒzl’ï!;ìRq^s=¬Öl“­Â4•õ¼*wÓ#†£Rz6¼NI?èܸä‡5ìP³ÔpoÝRw ÷Äé°—ç;tÇ~ƒ~ ×hÒ•HC]uOÙy†Á7¯ÉºqÎE•nÄý Ïþ=€’(õ·úû×âÎÓñ±ÚR•5UôŠùàC®üÈn›ÁeyjJ‹2óáÎi8¤ 9‚Ù*á(aŒö°­X0¥¡£KE]¦n³ÑbzLm}OjamÎ%»ª‚e±`ZðxáIM_òÎ ¯8É(3à#©:³!gG]渙±*x)Z‰bUªt|}ò.ã=¶¡æŠ`K¦X¹:ÑžåW´†î¼0cî«ÍNÓ(+á¹îèšò•,kJ‘e4 Š÷Ôø«!— Biƒßäòixìñc^n¢,Á)>daݯ}ú„’»UËÄYΧé¯ D8‡•Ü»F¡øÙC²~•ðm–r/ðC3‰Á¶óUZž<ÁO‰ÐDf*r?Çý©­½ÛÒª¶tµaƒÅ ¤¶P°uÏ!Ä4åD1ëžÀy+¥•Ýuó;‘]w3v¤P*ZÓ{+•˼FÅÃ`ÔI\pôH}(ûr›Í/^;ŧß©NP{ˆö‰MÆß8mɳ¬„–úI‰ê»«¯ŠýÜå{o)f7ôÛã— Ttwû×{]XøIGo›Kô}ûëUÜh%a‰=».SëpÌ!ÉÄéRG®°1}?Éwô[Ñg7Ï[ö?æ_7+Q*pëáX̺´¿¹~&2§Í¶Æ1bí(„´>hbêŠãV¾òí7tóVšøÉ…áR©,–+·KŠ÷m ¿lÐqC~¸•ƒyAw’–€[e`a‡^Å‹ÁÃ40ÛZw½”eI¬vrûÃÙUO˜%ù½¹’°')·ºÅœžÆïUlE9Z`ÉkW²„Ê‘n‚8­?ùº¢„YpöDQ÷i³å¢ñ‡ÝÈÞ@ ö$¹½æ'‹Þ…àÄÄEåÏLn¯~æ‚xA¦¡ˆCIˆu×Sƽ6Gc›‚?°h÷í§XAïIA85ÉR™(±rêjËA¼|ÕMZfî=÷sÓÞt°ª‰P\ƒëè ùÝÜZV"’zv8)# `´–2m)&ø¢‰„÷ñûA±¬¶ðX¼?|„ÉDšO·s¹#ÆMŠv—&úD£ªæóÒv85››y-D7ÉQ[ëô²9ªª_íºIà9.<ìR(Ø8`æ/=\\âåu6 ְ¶®S?:ô"Ñõduô8ù¦!Q)ýKëòg•ž.¥”–T/eûà &A›©ƒ…¾Ï­\ 7Mw©GËžœ¢QðT€”*¬œÃÎ/äÍŒg¹—i\háb^‹ë¶DˆG·s¾_^䦻KðÇ"û§¤/ÅY0ƒÝè®ñÿÚdz¨¾´ë%M¨nÏÝ¿RÆ¢ `uÐkS]¤lÈ`G ©ü\[¸ý±j¾H${l4åœ7V)¥Ì®Q,—f›=¼:eºÊ¤¿LZ¢pµë†Ÿáô\–Ƹáh¨gÇëòJÒQÇÇ ®ôeíÞJ7ÜÞkF7¾œSí¥z²+ÇÖg™ Øóf1ê3½@¼BÆnÀègk3]¬Jèί¯}8®ÕÙìÍ%·ï´Ù®ÚÔ)²Äf*/:QL$µ±C·Î„`ŠW±ãB-áŒÙ9þ/±ö£Pß)/ô&‰¹™ÏC†“%»Óh çvDðÀ­GLÌWáxƒÇU.ÚZsøfÜ+FNM×Þ’ —™Vß[aÍ·¯T;ŸPÊàɱŽÉE\lÄ/vªè#%"l® !ÝDî J¾|úRszè{¿Ñ{i‚üêÒö¬÷ÅøyžRäiÒ,’¡2 Òþs”9ü/˜®æç{¿z‘¢TI+–k#üJµJ?5Ò‰f­·‚ñ7Y'ïFÄiõK#«1ŸÉ!Hólwà.–e¸NQß}cFŸÀî…š˜~ð´@ óÈ¢aòÍ}œcÆô"nxÅmd¶”ê‰+°ú²Fôì)aŸO¡Á>·ÑDÛ¾Ý[ã6Ç76Í õøÌ§î¡¢+¥ÜrVŽ—‚Ô/VwÖÉp±CŸL=‡O~÷T!,,³2«7åœkÜ}µ.%êB±“\Í¡qÏ®á=ÊRÅ€ö—éš* á4©ªÃíR7ÞdN!j.ŽœåÀ:œÛtþªu×hk‚8çÍAg–ã;ò.GÖ+Ž0¹/tßh6Ö2ÒqýÖ+¡=6Sú…]Ûãýå÷W‹ë!í±ºú*&ûûL]`µA±. ˜«Ê±vq란rÍWÇ%Y[ììËÃÏ"Jaî(‘ûä úÛ Õœ¦#Ë—Y¦y¨R3ùÏQÑÒ¶`ÌbÚ4ðð4)CAÈ<^í—sO¦ÊÒîd—áÑY-•ÜD³XßB€.R˜Frj‘ÅGë±Yר")ºœü)Q¯\CÖ,ñ숷èL %2£ZRN1mÀŒ{.\jÿåçÓ ‡gÂêü‰õ€:pÎaÑÞ:Ëþ‘…B÷BL›©>,Ü'ŸIð;`òaÅý#ˆq¯H€.”“v½ˆÍqtûrW× "HŠŸn«`q¡\<ùÉ(¢M,}IôtÃ÷wpà„—¾$¡GÁraLM¡±$Uô·OÀßnJPE?©Û¤ãR ,'*Ýäã,7á^(\ù|Þmí"@òXxlß!v”È»ë‹NH–$º3¥+ËÑ#ÆO‰ý4Ñh§€ÜÂîàŠ8”$•\1khó›‚Ê\µsÂqßû†ÊRŒ”ÃDG3ÑÑ&…s«nPi寽§© %˜…íõÛnfäàÇhLò,l&@Se g"¹q¼PBíF!õjWʳ¸NÙ³C˜$Eè‹’`¥ßW§Z£²r7ò³nZ…¢»T¢w¨†Ôí,ÓÃpØ#S-HÈÌ—!È´‰2>¿•3µWõù½:ûYS¹~+>cþ¨® JÖ"þ>ä£o,Îä¹£.,Ô×#3"_Ÿ…ó|¤KÕ&¡Ü5Ä6¤nòG{­záRpº÷fl¯Üv®•° kÌÍëø~ôwx&ìX…ËÏò¨,t¡ôÐsÒ5@kÆÐO ŸåmÄONB÷xÇ0#ÞK3jTŽAíæVbÍ1F¬]f„|ÂÏ6×[½Ü?‰6z,^_+­y¨–u°®Ë晿­¡8öxh~ÞŸ-QÚ@;žÖÐj2€¶³ck7MpF ,ùlƒœÕžUÌyé…M#ý±½ITÛïCú)l³§ØóÍe7³¤Þ×^»—\¨„§¯Ãóm,i>r¦U9‡ývÏms_ÎZn4 "*,j†^¸î¤5±„>è“£6¯§mXªrm”Ï5©ª®FäŽÇUœ*æºopCâoùÎÐ9!¤q›BJR\c=¥tð ¸_I$U¬*ò ×hñé 4Ù£gMž÷F…R£v„gò7h*uMQ&´þXP•™º!Ëo¾š©š¼±Þ×"QF’õz"÷Ã=™ABd6;†–š?Ü9prï¼k•!ƒ×à!n¾ S aѽœÅé}ýÍxÙ¤ŠÀÈ¡kÚ¬é+W’ØÌ6 ‹ ’ò-–5ˆb>›ýƒ¼ ã™ÔÀ–Ÿ¢ £‡íÆú>EÚLö5÷HÁûèÚâ=1w¦òW#À@ä7Ôd-ˆÜO%å…–|5 û’^šå‹UAc–ÜùÅ”d´|²$yo¥°~v L㎠éDþûŸéFc¦h°˜†W OkTÛƒãÏ*¯Éû£Ã`§[æ¬w Úàg>T™¬!H[Nô‚‰™ÜcÝHòd‡ìµÉ]³‹¸;É]M‘²Q#›“ûdaG9ì Ï_G“…P F³mnß^GðŒˆ#ÛühQÖHV¶ê÷nA·©n¤¯9…Ããââ°\D ƒçÐú¼ƒDÌÉRˆµ#“‰ý«k@ï"2¥ï ÔÎ@$íoéÝ7²á…U$ ERõ„ÁÊERu}Ó/·–=1ú¦Á Lk"ÄœŒ+4¹|?ÒŠtQ¸ÆXÃÛÌý¹ãhK«G &L±Þˆ9/#’†Áe¶™ƒÑ'qÿЗŒ—åÝ%lS=IÏ ºózê•°qüƯÍÝ1VR£Ã°=(¡€üp"UʯD3}05ûI CÞ,Aé+ÇpNf´ý¥:»½7·5‘ìŠ HâÚNŒ<í·sêýk+»]’óš„Aî—­sÇ*8öß9§$ÔíMEíâ»FÏ[LYÁ§µ$!ƒ¶Â­r%?XÓ9 Ì Ü‡7ŽxÀS¤ñÎ\Ñ~þgt5Í÷¿xT™T ÊÔüÏN¦nc«o¾UçÖE{ü¬!ô‚8­Œ1a0?7"$sd 6òŠ:ˆë•R gãæm Sm!"ê)¾÷M1B´¶AÀ’f`̃˜µršxÝmÆhâ;aìxõªÀ¼ÅþJçypèºâ5ÏñÝ'e¸®DÜbáX«mÉOWN}FŽñ;âý>¨Û» üú‘úÞÿ× ‘sø¯¡¢¥]×evà ìä¢h¼Ð˜“«øP߉‰»'2³®j¼ÚM«-î«%¹%#Úz=mš ȲCgß-ókƯNoõ‘'ÑÕIÕ7qO¹”N-^‹•m\t*S¦sð“m)ù¢šRõ™ M#} ¯Ô=©ÿƒWÂ>Öt*…íó ý7f/‚›8 ï¯ùÑuqÏÁq.fã) ,kyàžÍ{&ê(ÓzB˜ÕStBô/(0*úÈwê_²päBk¼,ÄPêÇ»ã›d¢–ý¡ñfxƒOâ?Fœ`íX:\-=äüò@Žþóõq¼2_Ék³J3óÛæÄYÜœŠw3"ŠÒ£ÝUÊW%!QLÍÃ.¤Ì±Òh´çf)zLpó¸&o/SoïÈÜ;.V+@£’3ïš6ŸUËXê'†•ë![“¯·Àål—ÎÔêù YgJüÝW‹>ªfRÓvÛqƒ™ÇA‰O;ƒÄgÏî˜ì¿p¦KÌx(¤Jg?Ôû>~t¢Y Šß…)G\\+)¹Ú@Æ.Û~Õvößì¨÷:I÷Ëfáð Ÿ…b·§3*!_Ö^ ð `q9å laºæ“@¶gé ºÖÍ\¸¹@™Góã—;ªOx…W/†Ä@ƒ ©UÉ ™…ñÄŽ”¹EÞ í¾ù« ,ótGÇ33ª^½mVçöPAãúäï¦H¼R:-å‹ûÁ#>çG램Á—>†–Låè*;4U"¨†û>¶lž…ÍpÌüèÂhI†^†÷‡"]/³Ç¬ï"T™Û¼"%^J¦6Ý£=´÷+«xžÒ(4†¾í—q{}dx/ÃòìvÜšŒÁùyQ}åÑ»O~0Lþ~­SKLõ|f±‡x‘xÖqò‡Ä>ýßYMõN‘[wéɱ9¥ •ε ¨V’Ö%ÒÝ=±¤%Y"æ÷ÉÇbÍãˆéåY)C¿½°UóGVãzè7ŸšNû_‡Á‹ÏÿƒE÷ã&‡Îÿñ™:>Ù£iX &&þù)Ô™¡eS¬–,êOq3EíøûJ‚ŽUÝò“Vˆü$=!¸F‡ =^éHñ¶-EíÈigÞ½"Ôû—` Fº}ªø^Ê0À­ì …gê#}3ÀéۣS¡ŸöUD%Îü÷ˆ•teÔk Ýå åÏâºæ5áuY ½„ŸhŸhv÷¼òêÜXðÕÊ©yÔ†른Ö[µÇ¦=’°—&†Hpš´òhg…Г¨ ¾Ûb~ÍÄ^o׺<=•.ïn{£Ça·‚,aÔ1ê°¹ÜsÐÚ;}Š­ã0ÓNM·à–³Tw”6œÕ_¿ïèÿŸbCÓ ì2xð†Èyâ_½VÄMÐgÛ\0äÂ&= Ûÿâ­p£“4ìèéæÐO]ÎS?ªOêvÀ-ÕM)øÔ[O-õÁú+côZÑuÒZýd¾Ãí³Ö*çê+"×;òΕ²ø4üEä<óS•õÇäm¦ò•Ÿ~€øºJ/¿®„A/uEùxÝÖJÄI˜±•Öª[‡Iä¨âùG³_àžçN,`Ð žl¿ø…ËA'R’Xy~uàν^ZO\ÖïÕc(9 @<“¯5ÓOâ*“FÂÏÐ…g?¯ûÈmlõ…G5Ê.Ze„ÙŸ… ›ÙbÂʨN.0s$ë¹emaÉVrKSæÓæ@û0KÌÞúçiHÀ¯é~ûü`µÖ:BÚ4ÝUÁTåê^8Sö¨l½îxw¯r™Æc8MNQv¦áû•†q”nŒhõ¨? ¥>ïn™µÊü™pÙ§º¾°åbkÐë$ Åÿx 3êTi/ä7’:ÓÏJðRnß\GL2N–¥õ¶²kðw `V¦¾y|æ7Sˆûàñ@Æ †Ý¨ÚSûµzí°ÆænøK÷(hçÐ~þObÁgö騴w{™ß„„Ö¥¢½Áª&s|hëÄŰ#³pH@ýìOÖ hL1¸v!‘Qðg'”O:¨„LèÓߪ(áj®¨yß}رôqlwˆ Q6 }¢ìÝPà°í-œ"'†R Ë ¿f|LoØ{…Ãÿôkòµ9.ä÷Sš‹FªÎÿ|a^kHÆÄÊêC$/¡ ¶4=òP•ÊÿñÞùø8wuËÊ“|\ÆGïÚ’UQÈô²pºä’^,0Z@æ(X2§!Ä+ãµÞä§¼¯¸îÿ#Êö¨ŸÜyÙ¡Hš+÷ýñ ”:î”ùc¸Öà\¤HCNŒ¯®ê]0í#„þÈO±;µïÄ,ÝÞI¥ÔZômžŸ¼JWËeE-6^tTìû× ÔÚ™u¦Úñ6¤< ‘üäq¡RÃc nb?<„}”IÇæá³%´õ‡¾J•_Ãí#ÓÑ«ïòû@#‡ r¿˜³&„ëçæ³¯Ü –Â~*UÖ,7=œ&d"”Úû¥ §bj…‘ªskD¹‘ù ÀÇQ"n"Ì"Sg=Î(Ź¢6ec7ü¼!D¡ÀŒ7¤h=q]vÖ+µòuÿº9s÷w ÍUkàž±ÏÇÛ‡8çšF<Àë…ô\ë™iõêLçœ8eᣚqÂO¦q¶ì}“Zàu ëj‚ý|ºÔµ¬”. õ‹€œ ZtíÈD°etÏ#u†ÓbÕâèÈ)I†ßSFÈY÷¹…Át[Ë¢½‹lÀ¿ðý¡Ý¥wØ>ãtûü™w› ù’Ö:1Š%ƒ÷ÀŠhȈÛêû®ÏÔ¡VšÄ¶Ûé¯^;ØËõ3œ,1O(ÆàdrÚ\H åÄš¼ *þÂ*=œõ}°ÔyQý|ë°!ˆd—þ=Å(®ÉhqŠ[ùvÄgZ=æHÖžg‹z{F4Fó~CÿûÓþ©nOG˜ÉI¨øË™&™ço-Ep¿0®À&lf{¦žüo þÖH|YBqâýpnõø¦q‘éNàŸÈ Ë…Wè&0I9¢Ñ͸‚”V´ˆ|Úæ|‹[½x›RÒµ0ÓÏQjL*¹¤>— $îit¥ÞÛËã}x 7Kº˜z™¯q¹<Pjf+_Íœ"´n¦½àN û0Ø«Ưs§¸öòF¹$+&óCe¨ÒŒä͹Ç}jFF¤-øV®½=g›“yçÙç-Ikf§d7^…ƱÈbÎZÄ?Ô8oÚfí4U©›ËÂý:9áQ6W˜x\br‡[“ᄵ[pˆŠÛç܃éÜw‡ ±K+œ¿6é?m³‘¶àWŽ‹¢=½›?GÉß7Gù”‰[°`„ý³Ô‚8ŒÅÛá‡hç¥A„· 6j«ÏàÖ»ýÒãa³<¾¶Ô=fl¸Ò޵©À½ZèJÆkKsƒ) A‚ÕÍGYávXî:´H"Òùrjá{¤c³QrÊ#–ŒÊåâÓ\ŠÎž Ur•sQjó¸Jl0t˽Ë–­ÄwA±ø]œ€µÎû)½¹¶Êz"/,ÃÇ,5÷¢Gã^1/¡¢T¸Sšù>mðw¨9´-8ý¨¼cët8M² ºPöâ†h™g)wÚ—»€_ÿEz"€ø¨í)ùù±êØv.²pA©ªíKž‘:íì°w'Ÿï¼jYaw¹/Qó, E8—RŽýÇÈ*™¯¹w3U!ÍÁ‹qÌS™ÁGe?S!×úšcêñáÛwsHÏwx ,|Л!£žhTšQ,JS xi ÇŽÖuUÊÎ7ËÍbÇèIsÆÞ€YF*Ù/+.›Äï>)å€óuôÞÝ9ÀRH÷CÛíhìµ)n&¶ey8…|qx^R;ñ÷¦GO±Øíã }oc¤ž)A|'à(àÿ÷·'XšXÏD•W—Y¸Ô>Xó m:ãîpwøžbˆí¡´D9Àˆó>úqQ“Ò# µrºù]‡IžSôD_•§Áùë{z8¯ ð[Ñ :ØÑ ÞKæÀ©˜ô‚ý¹*;&¸É7;«r'¬˜6_ZhL–`[–©K)ô]ŸXÑomàs“]ɨøÏƒ9ÔdmÛºnj4–T Uãó‰ã|˜1Ì..æñÁvY»R×kzGÓVöÍQ¬OÈ=«¨"?á1f+ê3²ç"¶ÙÏÆ_t›'l­Éë_ްaÇGp1–Pÿ¿”kæ«tk>j›’ê|Zð‰Ÿ£‘•_Þ–}”Ÿ_¸ sÎo{?œìAh2  c^sÇEv1±ù82»'sHPT÷[øówÔ'®˜Gªiû^§qn{NL1õieš¦Õõ,5UQ?ÃÈØð@CfÙìµ€•Ó;ƒ–®›&4,ÁÒ¢„ÂEyï`˜M»|~/ÁôgQH ú”®ÐJ z˰ïiîãP»ÁЭ¢ ¿FÎt©úÔÔK ¯ÌêÛ7kXž£àôV¤Ñê»Ô¹Î&Å9¯‚Õÿ„*½{„ÕZ–ìŠFB‘ÞE 8ž"Y.N·ã;š5.éi‘ÜÃv‚J³Zø³eíÎøê•Ñ;uÝ>{U ¯øÒŒq‰îü¶EöR´zriDˆ—ºmOU‹*ª;öëÆY:€¨€Ä˜L§å{‡FlODZ’Î}U ÉLrK`¾ïóúE£°‚|a«úÛÏLÈ·Ø2‰w¢õÙÖ8©”¡ùèýTèÞfB¨ª@gZ¶bý>hJ7§ñìiO¥ÆqFÒ¸¤š(Ú~¼8D,¿ì»å­~Eö‘Ìt¢ƒÕƒT aâà("ÕZAÚÔ×dÐ7qATªðœ|ÎnOf“¨/ÆMËoÏÖ0…zTG𔄬3Ôïé^JÂT¨¥I•Ô`²¹¦¾PWÕ餓ùœâÓßð˜%I'B™'Ôw[ìPɶÑ} op4ÐêO·4vO‡h…«¶k½"ê…ÝÙ×Ш6x1ΑÜÑãC’O‰žZÜ«ýJã&»—N¨xkÍ:ßP¹ö{z{ó< ŒúëµÉc{s™€A¢óp@?çœÚ…ž+Mã=,¡ðl9]žÁ©‡¾è„À#&´'à4Üuçç—µ=ëTšøÔQ:-ÚE8½—Jn­þŸ„§Å܈O¥xO‡Hp¸Ö÷ n%kˆ65"a$g‘,äÚØT¿(´ÎŽ~û[~=¹8ÄîmçŽß¿íÁ^Æì»p7`°úô½7Íy aÑGd·§ÛÍ̵´¸ÀP³1e\Ñz> FB\ £†îÌ~ŽgFt?r66Í'­Ã©–9v&-¼9›‡PµTUüÞÔ_ÕŽx$•)ùb‘!gãDcþ¨6ù¾f‘·œæ‘rìMžKJ„ÛäÐDß±`CåÞ!Ux™±ÔÑZjkJŽ~.NÓ¯ 2?JÜ4m"qM€ì$¦d©‚`l´³GbÕ«i¤ŸD™kÍÛÖ© ­ýÁ3É6E<¿%Žô„<9íÖMYý”æ˜Ð¦P¤ÐZ$}&ì!›) oŽÌÉìjåè)îï à{€ ¼VU¥ÓØo#ó«„ò¬^טé£y`R±NŠÝô^{Cnײºã¢¸Ÿ/3†ö!°–¦ÕœíÅÚQ¯#¸â…eåT7'»zj—HxrX\4LOB \ðÀëNäMWFçãUB‹A|·m—Ð`‘GCËhàÜRyr†¯ ¼st”. $œõ½|ãYn$ôŒ0*ånùšDàØ³ë:çKâ|Aɧú_®-…Öˆ`dâO8– õ÷5ª‚×"“N*Ï’<†Ï"æÉ*Ofð²!}±-nZŠò|ÂqÓèƒáµÉnBßbÄteb’m_EôW¼µÍ×£ÔÞ{ÛÀŒr(/ þQ:IÝN- Ž±ÞšØÒ°pj_´góõºÈièYMA8bh*q˜ê \L$À;Žõà ³Æ@¥z÷õ*QÇHÒÅJ…©Æùýh¤‘^¯Y.þÞè˜åãÉ6 j`ŸH“Ø$Ÿê«röáÈÑÝ_¸Ó•ÛÈGÏìL6–z”%¾«n9¬–-ãf½¿|q:}–‡ï´ŸÚTªE›KóÑ_lr„ ¶só\ò°uþÎ å_à•ë¯0¹ÝØÁm»kød{ 5`àc‘½é %Û›FA¥±¡ íXc“R`†áÊ÷ˆdt°xêæU¦j«‹%hÚPQð½¨Îl‹Ý¶‹ê:åÞÌ*“´‚­ù¿©ºe<§›Ø-{O¤ùF§{ê!Xßj@yÙ+P~Ýíí t÷£Çr¬¼z %K3ÉÆ ÎÒûVºzÏâ¦ÖDʇ5¤édEºœë¶'q…¡“ðDÍ:t›4¾ïµV³ØÚùг³./aóBršž¾‡{Ti–ÆRnPºn»™ÜÞ-•@‘«ÉÌ%BÍlš:`ïåÇþ.þ‘Ä)ëÿÿ»td9hxݘãÈŽM¤hùÑ5¥Ñ¶©äj&Š`¡Fn@Åþþg›WÜŸNy¾6}1nrýÌ$î>ù=µwÒâ%µ% Ær[Ê´„^4N¶=U‹×Ìèž–V,"\ˆ»¶òydMxÅ ±kÀhÖe³W”õðaÑ{0Gš$Uwˆ3cúü‚ѹB=HºÊè ãÊ\ðßR²%Ñ"Tˆ©·€=þM%6Gž}dîµP‡i™|ÞÑ\h$?~®&Ájà«?¹ßÎÖµjµg7Œð;iOÅ:3 )¦}L R”Y{ 8KÁ–»‹ ¬båní écd±ÐÅÛ6t1Jø äž(⪖(7Ê@íºª*Í+DWD€ u$2›0ÂÊsçEQ]û^<Ø¢ËÏ–žLàj‹F)t ÿãj CSòt¯°©ZTEµ€ à7‰ ®ÆTL:9)‚çÃÔ“GDF1.¬™]52M駦–{–MÌò]!PZ`5,Æ-ôë- u\¹9“G 3ÔîË®a×êpGàA°ð»kWÁ4Žr:ýÐßQÃR_ðaÞËKNîTL¼6 ÂEÄpõvÒÚpª2°Õ›¿¬:?;¸R…=çÉ8;ÕŒ‡èzçÖôbE°®ùì›#ÐȈ/=ÞöUhîå}×Þ$x¢µ¯ Ľý·0Ú†ÉÊ I!ügþô6€uœSFÉ$f™šÀ`ÜÄ`dTO¹ç¼ŸÏ>t•FŠ3µ£!2Pä´6ãkgéRT>ÍÁ:ÒÊlW«êL²^å ùˆ/MË7¯G¨”ì~ËQ²„q¶ží6Œú/ îînæûÑkÕ$”š% 6¹!u³€ki”A^ü&²ÿÆ6ØžÍFú¿tl§GƒÅã’¤Òæªó{/fŠm- é +ª°ƒODA7<ñ©÷¡žÁ1Å«kϧÓXå!Ñåî­hùŸŽ5娺fÀøÔ¡/æ‰aͪ†X& /ÏØ â¼4®ØY6…‘vàÚï’*3e“q6ÑŠ½@æìçxÎ,?þ…xÓź à;ÊÎ2_xü##“ß ¨ãsò:óà-ú¯ñm‘„vÄ;PYJ"â6šÜo¿Gê"·ÁÅIäâJÑ6Vðgiú“lVù5¦@“Ã<á›CIŠwa.;XË=hÈõ…ó_Ñû<ÆglMTtÀ #þoþþm•‚§Ý*5‚ƒ@‹%pŸ§Ì*eãM ýlñºÂ+ ªðùÂw±FÓкQ E|‚*äX»kóƒ®\øõ%mu]æ®ažá iÉYWua=æžÚ&<¯D“ Li㺃m~õ‹ ¹=B/çÆ«!gN‚æ´š]ÊŠîS)T”ÄþÌìtû`R5‘lÞVö™2p/¢™‹ÓÙ.ÅÊÇAnNÌè åLw4+AQ–©ýÒ@F?} ³Ìc•!zE@RöÆ÷ÿ/ÂE6 þ±'yæ½-œÖï¼z˜÷9Õ^¹&åñ#8Ùj²HN¡)žV OîGr» L×j¼’Nœ^Fýešþ¡pS>þ±–HÖŽþû~ξ§}]|J4êHÏŽ>Ìš&vy$¥M§:8_šønöãõ!¾#Ï¡z‡ZžäHOF•Øl( è2±"YÃÝp´Ä¾ÁKä)”cÃ-RÙîÇØòåB_YêJ5£3êµÐ~ßㆤXW¢B@—£`aÌVPtí[{N B*F¸fôÇYk=8gËå¶@IÏ2‰býÿ'Z z†ÝÙdt÷÷Ý5 /’$§UMwÊÓÿŠôøÍ;'|(œ†L®¸­A!ô}GP¥PÛKÝ[dßjo‰öøŒ2ÆÉ“IYââáö†Á$ÀÞ£v䦟;F=îD˨ #Mm~ jpÚ—AëV–“ãâÍÍPˆvâó±ÆüxÃgæ)[ÑC^#÷9Xq­Œü£<¬ý jQðú@FWCìSˆñ³E{Øæ2ýΫëý½cÅ·ÎÿáÓÔ{Ã}qÉù¥Ü E†Ã™/Å?ÑéiÌâ~‹±x)'„õþ@ <`öF‹._&ÒÚݼXªPr¾yet=ð¼ ù˜ù‰«[%R}mÇ“êÐk¼¨ƒýôÀJùö #+çà>¸È(ÊáuP¿n.?Àolß¾¨õj+ÊHÛÔ,á ËÑæ¸š"XÒߦ ‚ËÉVúGqD=-Psi §5ìPÓ,ÞXCò’A Zìø¬¶e•’˜˜Lx!¡pe(RJŸ£ïA³Ž-ÄñØ®2±¯€ºqÂö?µu›ŸßÌï ’Œ8#è—éVò¾ÈÚt’ÂAz›ß½Ã¥¢Aº\hiöÜò²ó§”¼‹YÀÞ4/ÆcÐñ˱À5®\ûn(óZÃöÙšç7‰ÊCÝÖý l¼Bñ”ÿ%²©ëÿô^î-â˪*‹Cï-ìR…Ѿt[Ê!𢈱„'x‘¹#(2ñ>*.‹àcXà»ÕSÙEN¨¾ …‡z2Ùŵ—7»ÖÂ.Sz…ðŸÞìC’;#¹£»Ú\·þ™L5æÀ-ÙKñžï™VÝFµò™‡D3Íß7ľ-ýG.„Uúú\fhdLæXþqJöAës¸úá ·?Ås^:­ÁñÆ9jý×3Çë¨6¥‹IrS-å¿ §€{x ›ñܧ!…HÛžø‡W =¨Q†¸xw}íOýÌGž\´Î³ÝQ?iý P-÷’X…Ô¯kêBí?6yÈÃgZg>neT×t×I$ï}Nl=é|vÁeþÇø¯fiÉ[uÅÈøÄü¼àO¸þ¨©3K§ø AçQz;oÍi*º!ߨ$‚!µÕ|0_õ:D>©3FYûeƈ…Á*l ‡HA²äèÇqQ¿þ+aú,øäŸõ2ë åG$QJ–Üøcb¨(ü[úñ^å=é{cA­×RÏi†ÿw:BÄŽô­(Jðr¾žÁ§whÕ¼y7j¿_âþó±î®°Gpïÿú+}kŽO8p*¯é#ĩ׬§ô]RwÜQ Š×ó/ùìGQNXpÌ6b¶¤‡ñKš[ ‰Œ%ÃMÙ1ñ³',`’, ![­MKbqT:KÎ¥ÍTRÁ¹›ƒ¿5ÈÃÀð=Øâ! Œ¼>Å&‹8WŸçç¹¢òk|ËÜV€).ZÊuÍ!.k‰Øæê p Ÿù':#yîe1O“\ù€0$+4hh‡nŸÖ|´U€¸ K7F2ÃeˆÔÈ»¾ŒÿMÃæ¤TÜÍø?ò»Ç±~ùþÕGN¢R¯>^›0ýðMpâhñÔ±ó…p0¬ÓËþ‹Q³Ab…ÅX¡‰#vvVES"}”û£G“$6D¸£>£?ª©»TÂÉ•Î󸦧SÁBS–IÉ G !]îô›•šæËgG@‹Ûwøãgþ)¦Ÿj4¾ [ú™Y˜f{áóuÁ3w»´2é bOŒï݀缗ÞüåÚ6íXÓ¿f',†ŠÍ|¢|žä)i¥±s0–ëúÁc5õü"‡ÔšÜÞÛ¸jhGÞmÀcm½B{ˆÈAL–jG`3è¢pV&0þ>jˆ“•çqÎÂ:%øv³àSŸÎ"#Þ!¢Æ[z¤Šjæ”gbPÚúàM6´€!ìÒÓeh™´Rgÿ(‚oÚ¾µÃŠÿ«\¾¼u€™ßưçÖ›Õýe)2«íPʨÝôõDÈ¥á=zݲ‘tb röÆørït¿­¬H„.,ÛqÎMäÌhÆjñY²†n‹û(2M+¼zÀ·#.ÄâéN¬dsØe „kªžcd˜µ|Òû¥?ŽÙ8«pÔÍ92 ý=¡¢ãM[üWQY›}ÑM3ò¾éÚýãLW {çjšüÅ1+Uiáþ÷¢R!̽Ë/ϱ©¯©ÉÞD(–†·È¾‚ˆvL~ Š=„n‡'x>owÕ «Ä×6ABYì;h½Ö’^…ÒÚQ2)Èí•]myn‰»ÝXŒÝÞªªÊ}!ùaÒA##Á²îb;þJátQ‰.´§Aäj×þÀ.mïw•ü{׿„•ÇeŒŒË$TéëRÎ×3eƒž'(òÇŸºì=Hå¬gò*žm³±Üãv¯‡‚ µ"S仑§P’0ÚlÇUsûŒ‚ˆ]tÞ†šEÒá˜X,T ±yÌÖ>§š¿ÕÌÑöÓÚÃz'ÐM3¬Ùo*7 ^mVò`>…^I_É ”Ê4õx¢–,.Á}5δ‹4á;òý¸ÊªÈ–ÐÈ)­z¸–8ùqQEud«–(7Ê@íº}ˆ()ðe™úÈ׬¦Z‡%"l‚¾"Úeé¸8kH ì;vM‹ñ Œ‹ ðó²Ï¼Å#±@‡"e)/Ãd{G6ùˆÃf!:ac¸´Lx¥ñ©ñVD-y®+î¶àI‰b«¼·» »Lƒ†¬èeÄk1ËŽ¸ ¨ZáõÖ-‰”1F¼ï;ETá”Ô¨„ JÈip¯†,Òƒ2mug¶;Éàö¤Ÿòª¸#ݸ’a‡Õ‘Tfî¬ô þ °ÔM¼Ù6‘”.“ Ôö™šë+²§¢£Üþ½|oÄ@"i·ü¥ã¹ Æ?t73íݳŠ7ßNÞX?bðq¼;€#ù‚##yÍžŸà'‚hã¦vûýÑØc¸-)DGꬹ2æzñ^rY#ꃉ±¢.ßåÛèjUà{ù\éMÌ·ã®zÍnÓßVÉ=f<ÃeR{C’£¶N¦¼¤ŒDhZÃpˆÛžêÜÕ:5迦ï/èõ <9Í–˜ÀÀÉh8']ýl©™á2¥ÛUb*€5ywg Ÿ&mI<Ód­™ZÞ!ÜÑýôñ5‹>FwƒâÒÆ¶Òd_Ž¢%8î ¼s+îÃiûƒãÜׇSÌ="B_9~›Ôº&â¸jÐ=¾'Ší ÷½¾YPê8(•ecFĹÔJjß×i°±Ÿ1G5 R“)cæ \œ2ƒûÈ ´è1u2/ÈZ(¶èBX;U8–2¯šÏËÛÙ’€á ¦Ê£:-©ž±3¡=_d­ø•^¦H·<L­ÚºT‰«ŒwýÕ>è]V¬¾/¹er4ò¼V›ÈS“køÌÓì—e ¯MkÕ] endstream endobj 255 0 obj << /Length1 1608 /Length2 7459 /Length3 0 /Length 8276 /Filter /FlateDecode >> stream xÚ­UeX”í¶––FéºSZº$$`ˆ`†’î”n¤[BiéîN ‘醃~gï}®ïì_çìs]ïŠç^÷Z÷zža ÑÔæ²„šƒä¡8'·@ì`îÓBT9¤¡ö–€G'?ƒŒ3C!²@8H ²È‚,¼¼aaa € ÔÑÃlm0ëjé±°±±ÿËó;`îñÈãIØ`|üpÙC@ø#Äÿù 6€Û€V`{@FCÓ@I]À¬ ® PA@Î@{€¦‹¹=Ø  ¶A` €Ô`ÿ—°€B,Á¿[ƒq>bIÁ@Ìd~<r·9þ±AÎ`ìñ†¬øã àPbaïbù›À£ß ú‡£3ô1Ãá1ö¦ …ÁaÎ`G8౪¦¬ü_<á6@øïÚ0ðcµzÌ´„Z¸ünéOìæ1 ‚!0äÿ]˰ÃíµÁÁh¸ÀÀë1`8ƒ¬Î–ö ìæû÷tþÕ'àttt´÷øsú'ëŸÀpÈÞŠƒ‡÷±¦ü±¶5‚Áõ{Q” VP÷_~KÇÄ\AÎÄü{gXI-¡{€%È ƒK , `þ¿©ÌùŸù? ñDàÿˆ¼ÿ?qÿ®Ñÿ¸Äÿßûüwhy{{u ÃãüõÀ_@ðûù_¹@°½Ç¿Éþ{¢è/†ÿD |ƒÄúQ nN`˜<Ød© †[ج€ö3úã×…X‚œíÁУ–Æààáçÿ[LÇlaù=tá?!ÄòïÌåùÛKVîµ’º*Ûß_Ó?YšªÃu<‰ýwjPË¿1¤¥¡îOÁŽÜ‚—û@˜OØûßÔûÄó/[ w» ›ææùÓúÿþeÿ Fbµü½'Úp Äòqµþéø¶pqv~TôÏmlùöŸ%ÜA sP‹—A¶©iðOÄÙ}#²†]I»4‰p3çÓ‹;7ŽJ‘Ì„àQ‹®TΫô˜ôÈ[Rä’”6Æ©b/V",ê}fd¶É~(óŽQV»Äá×µ²×6ŒêÝ´¥IËÆ ønJ̹ZiÒ/%j­!µ äü¨ =¢ï.¤Ã-m¿#Y{¾sÆx˜âcÈJô±íáM{A·s‹IáŠn­«_©€IzÛäi”{xép¯–õ‹j¬7!É+› 5²»w ˜WYZFåÒU=”tµ¬<×· ðÖ?J€7PŽ–w÷ði¶”P(h÷ÏÈ¢²¦ŽXKcû´f%«–Ñå2füc\]¦(¦Öär¦¬±xŠz¡û×–(€Ž¿+q•]¸{&Á`ÃÆjõ1DÌOÓã$±Ã ò.]F^EÖ¤qIøêŽ‡Ø‰éRP d™#Ršc^^DYÓ7§ŠNsI"bëd|ˆ3ä_Ž E¬B¸Ç,BJ6= M áKXx÷Õž6t-—m=a°è=u„YÝG‰AÐW”ærÃVÎ U dºì*ñÅ ½ÂjsÅ!£‚éËäO¥/Á¥È†_jÅ.žüÀ Àeæöê;à*ȱpØ‹jRý4)°ˆf QÖ9ÐôLiBšKžL:kL²a™˜Áz!û:1öª¬šÎ í¼ï˜°Wß(ôÅjé°‡0@ÁÅÑâAª÷v-}÷ ~¨Ûâ|âK‰]§Ò j(ÚðÊF¬ûÙ·T•{t‘š/„8\ÁrƒfäS…<%¤Bß/$ž0²v´¹.RžÛ«Ï¯ÚP¦Ê7ÍËÂÒÖã³±¨–«¢SC‡}¢EVÛùF&¤#„z¤‰ÇZ¶Uö.ÎÕ÷‡BÁÈS2û´’ ¼ŠdÅrQSîžÊÑN´è›öS.µŒÍCX­Ò{žx˜ú¿d„©{㳇¼†½iÂêÇúš—ÜѲæœX:ßfskë-ùˆb/iÄ[‚»Æ2€qMqÔý’:‰É\?~†h,wœPǘFv´N—_IÛ^’ÆŒ¬æ%\¡¤(c "µ–˜²â>ò )¹éØQŠšv²ñ 3H¥9Êã'å¼îšÔ!vefp{ã/ËR°›oE;Åc~ðÍ3j37Ô7¥þ&B‰°¿êšÆÙ¨ r)f ÞSW¸Jz é=tõç¸ôÎDqÎ%ä®4BënÇ«¾á×qÅò£Êºøc±£ k|Eå:±<9yyzJ :­½6¸&1ßdòu//AõK&j“‘.DöBÛ¶ ßz9ÐRR:{ýtYÑè%eðÂÐ>g¡¶ö¬`žñzÃËO þJÁ(¾ëN•†@aàg§ýnt_Ó¤n†h_Kª'CÞ–ôÒà êÌûN¹} [¥×0*)c[– xkðsç!d 5ºjñ™5ƒ&ÿ}J~yÝ«‡©–pñ¾¿?*²,8<#GŒêï¯Ø‰mJ0¦º¶pÃ3H£4„ÿt}dÞà\Ýõ{«»IÕ9j½žÚàa~Ûêœ8¶¬Þ/²ñ»ÐW=,Òmƒ¦ýäŸâ5Übžð0"Ý׿ZdÐú >˜Êvåø~ªÙK{AvüåÒSǼÿ$™ªE5Ÿ˜œ'çкÿtôcKõÀÓIÓu{Ø.§ Σr–HgÐ%àØ·CT€Wy¿÷Êô£~O›Wmá …þW3A­Ùù®ÆòÑ"+f¡³\fª¶È÷Ábñ`FõEôÂ^ÑÑó³ÒÒõm z«Î»·lq‚- _ä~£éˆÜÄw³b‰j“Œ1nóN÷îè oœe£¢ø–+ß{ !–°bó«XM%)0.kŸNšÒÄ“î¢Æÿø‰_NÕ”%¦ötxÐh¹ÜU,¶ ôÀå¶,+‹› »¡¥û4ÓÌyÍð–„x­¡%áæóÛŽI#f’¦áÃó,UÙe>¦ìîxÎã9^8YБVk/Õ0§×‡½h¨X ÉÇS¬ô~~Ÿ€Ñás̈ÈBÑ=_²ÞS ‡ï”÷ÐëÑ“ Á]ª‘_ê$Ë ¦,ĹœûùQ¬fóÇ:G`¨ÊýRÆP¾L.Ã95¶¿põpÄ,Ö}ú–|`ͽe\…vv–ØUCÑwñ Æ7ó`#ívàƒSŸé*Ì4.õLê –TÒ×ðÛ:i̾%åÕ+Ó}„©µÕp2È€«=sˆX®Æ^®°2P;ß•4º¾û¤Ý™éUP5S‡pZBö­}/ Rs(!ÈçWpÝŽi‰ñBÀ~·úKè}ÝžòL ¡*ÏX]5jÀ*[MOç†p±N™úsãçEô<Ý.É+R`ŸÞxLX‘e·…§ýdÞ[C–º³ô†0³‹‚ c ³¨Þ¡ß/ ò²y+ÚëS¶Û´XyžûààÜ?Y5zúAs·Í¯aÞ?¥ÞxXzÌûë­ñ3åV¥J˜8Ä.2akç«'—¦;&Ië­r¹ÈˆFbTÞŽ{[AKÚØluòQœ½úu¹ùñØpŒÈxe¦À°êÕ·¼΂V›<†|ßà9¯z.®~GJþñ·*'CÈäXîÙΰ~œ5z¾æº¬8itd½…ƒ«Cá(GtÅëoo!*tü?¦Gæ4°ši—ÉmròÜWƒÑÆNl–ÖÈà ¯Ks˜Puýñ^!FêQ O–Úß_¿¿(=>^Q²]žááßX3 úÜF²~QQqRÿ…¤¤pL-Ê®á›ûðZêÎÝìöǯ~š˜ËÍ jÀ÷¨QõÜ醾½_­+dGèÐ47DË özã,I÷‹¥˜X¦Ð‘ÊÂÒÞÓˆH’äs3Òq¡qŒ'ÌØªj«âáð:5ÚtêòûSü¨¯}S´™+£?]FÎ|/`+ÞïLMr—¸¢Îí¹¥ÆOÀ>õ“G‹Ö÷vY•7‚–KþH{Ì~œ¨u%"-C­pN(6Zþ€õ˜j*Í]läSÀòÏÖ[.ô/Q#–Q~ëÌ¢Ä̶7ïÆŽ»t[+Po¢Ð =xëæÄÏ‹/Åd÷Ÿ;’‰0\ﲋ‹Ì3nÓ|£h…›ÍQÑïmJ¥%¦‰£ìr3©HŒä¯G¨lªÄ˜ÄO]¾h­×ÞT d˸P*é‘?ØH\ bªð¥ÿ…4“,Öé“2 ¡{µÕë^Èuê¸F_Ÿ“yΰ²Ù«*c´nŠ Fí$Jíy—M\,lÙã¸v­@ 0ß·©ÜÓ‹€ ·Ä>âòâðs<)¹E3^h 5l¢ u³óéÅm%‚)⺩Öö®ß÷Zç |TBíhÖÛmLבZm{‹yýJSÔ£ð-ÙhCFQ3O‡Óº²T·žX&P_QÏ¢7ï‹\Ýl0U“h–WSX©c}¨I3×YÙâ ~-Ñ•…[hÖh!ȹG0®$'"–q¯^õÚ€ÝcvÔ©‚Ç· øž^¬“¨g:qs,ÚŸPŒ']ôMòy§’¹uãæÎÃ…«£0Þ½JOŒ0Ñ Íœ¢’G9å‰6˜Oë0‘}šuÚ¯)ó6Ù,ŠlÕØ‚+ÇÛ$ç8Rõsþ$à‚&Š&6! _Zë(ÐiLÊÖæT=16Ö@(³¶k׿’ž‘šyÎ9,2¹"…G³3ÍÞÿ’ÙƒéêúŽì¡¯Yg,ùÈÏ hD—4¯‡Ù{œS×ü4>_ d×=—•aa%Ôð¢Kº1ˆÀ´K'$e.[Ö±K»´Þ¶‘Ïɱžrþ€-“=¯,_œÉ¢á§}vÜÜŽd®»#šäÓÅOšŽ2>wiÜ‚Œ¨¿Äé‰Á³·åHM0zçìaëõ¾ó®ú¥ÏV0Ï“Hì“|Š0nKL9«{þ9†€{ Ï™,ŧèEÕs†!jvßP_xcœ™›I¸zÃ×—¿º;ôMw­¡#¤0tt¥ÚtÃCou¹õÑø¶ŠpŸ`g bÝyWÒÓK'ÉÑÇiM½—ðw¦ƒFH/{iÇ_ïx c5Ú#j¾Õ=ùauP;}Ø2ű›!/gŠY“º¾Ú~ßö±Æ  % åþ2,µ!âa&I¹«Ûz„6Àû‡ò^îù:&áQvvN,IϬøž,:ž¥|õMýE.u[•æ´Ñ”Õ6ý©[°dµƒÑ½v`NèdÛÒÃFÕÜõ-»ŒË¯G÷óóQ0ïj=c1Î[ WŽè¸Ô’[’ñºeqÌ×…Wˆ ¶ƒÔ3æ±"Ï4¯¿-àq»KDÕÏ>.!íÄ"PjÉЊ¾Ç›µvJ{Ú§>¿ÉLhˆœêÃËÓzsÛí37Í„' ϳ³³òŠ$q'Û5†®‹«Î™ý9’õC||?…ƒÂÁSþJ²†¼RÔ’8×xUÄ5¥&… •’* ±þ¤»ítúÚÚvtî9JÝU)ê;¶ºOù#÷ïˆ˜Ôøym@ãÞ) n¢>…X”Nªô‘J*¬4_ð ×]IS—?7e“·&¤H@Ì?r´çî‡æ –`ìÞ_°1´A"£ÙE™KiÞ”E@Bt‡³; 7je×üž]#ã¹Ñ!k5G1ÎÏœÔ~’^"OnÂ)ÙOˆ}¡m¹~)åÕ B9;ðæG©ŒNG€mgì©}®P%Ð<ûêȦ)àí;rÉÆí¼`ý:‘ñüK(GºšÀ;ºe„ÎÛÏZž/_ÆìÝw2ç YÇ%Yïwl32ËÍIéíËß¿r›Â‰›ù¿jç=`}¹ßzï2ûíÅA¯ƒÚ8J»§†‡õÎ¥ríSÛœRRˆ™J©I Ëlþ“¤WRmXØJåä»f'hP¤oŸX⢗€`Úž¥kÀÓSMùH<ŽD? I"»ö¸J˜±fõOæêÀ:REee¢–k©ù7KL¯´#£O…$öSCç‚þP{IÈ41ÿàôB;Ê÷f,~Ÿ»:ðó#ÈŽ¥ýS Gœª=+üeÊD*%øµRå É\õªEÂËàï^C^ŠúìÙXÄi§2¯YÀ|ÇñãÓ®èANËßk ™e\yŸ†óõpÒS)“ÔÊZ óD‡ßwÈ¢èS‡ÔѺ 0'vS]`ÍÚ±¡Ê1ƒf»v‚T·Æ/høN/š·+t>ß\!`¹îQòy-0ß–8ï;¿Ïúp ˆ4Û¢ÞüÐP9üÒ*‡yyEPÝá²RûÁjo0ŒFÛ¾p¹¬<ÁYg¹!z=KÑ|èîùíf˦¯" Úq«³¸~ôfzÆw½{é(,M致Ò¥r¸DdV´ü+ß"˜‹£þ=ŪßylìÝÓxí#õuÙ’bÕHRá¢E¡Ûˬ¼–[fR «úòV›íú={Fa>Sbô€GTiùU¨ðj–Xõ‘‹â4$ŽÖ$&åò¹Ô%JRGßûU„ë³®&;ÏÝ%f§Ý*ï6»½%±|'\ë¿úõð# 3â6æ0»EKŠß=?)†‘Zwõâ]‚¢Nd‰¦å}ɤ!00`,êdP$ôjåÌ,1Ô´ê‰(zöë Z™FNˆsk‹`™Ü.Ã[[AÚdJ1?|4»ñ·©é_¨‰¨âðNÍ.mn8¦»17»Ðaâ%°zq²-‹Tg¨§›µUjA…|îͳk¬riÏ}çÏÅU´O–rud¶‚ÜÌZë·¢¥\#J…íy~(>ßCò3K“tX <¸Œç­Q™Ÿ,Š­§2Lû(mb%é¥,އn]Óâ+Fª‰‡Ò¹x™¹©ãÂ3GûR )dmzõYò}ÑuçkM㺤©à%ƒ(c·zí¥ãëýùáƒÃlY%éwL!IçÇ7éÐ%ÂÏB»š:¾I¬?¼¿„Iå©•–bOž8XÚå$w”N r®­’Uí&ßÜÜMe®E´Jy½Qh” 1–B%“|†òá*ª[›Wßæ‚he*AÌ“ §Y®ÌÔU¿Ã/>÷L‹SZ&ºüS*ú¸,©´ÊC$U?dãFÊášKÿÒ«– ‚'ß%f’‰®}ÈÐ}<3-Ÿ«;Rú9/þè¿-½Ø}#hë]#ÚøEL4`¿ŸìCˆÒ”ZZ—i¿›ÙÝ7ËÖ–® ¢C›{{ì;­DýÌëïµ›ß- ¨<Ü•ýˆMÄU> Ó9¦âîôĹUWœ¬ì9U½­nšï$á"Í‚ñþ¨?eEÏK£dʼnTœµ} ™Ý óúÛ4®P­¸.ꬣL6)©Ø•>ïÍ5Q¹Âˆ§8ð›L£Sðͦlˆ]ëî _ˆÿz3…!–!;Y®Ýo ª.“ {Ézå°ç׃ᾯ÷ÑWYKôúô9/8¹0vľؼ½ÂºU%“—S5µ •˜Èôm\e#¼˜!ˆQ,;F¾Jƒ „Ùéàù »–-´8¯#”¤ëqoê«;;®QZ½­H»zÊ>¾zJÅÚx€H}HTÿâË9mLýÀ ý2`¼ù`…˜’9åIÖÌvš TÝDàQ…ž{õn]ŸãÒsßÂ}×H*bõžŒ#㓨IYÍ Ÿ‹6sÓ5Æ„2øèÙ­Iß BÕÞÖܰ7ºÎŠ >ºWIãß6 DÐl¼åùÆJq¨ –Æ—ÝsþŠÛaíÈXÂÙ­¼Ã,¸_N‡*°Yf>óRŠe©Øu¥ò (k!½é3qó~^(ç!¢ô9¾w~õeÚ´’EK¥ê†‚lXµË7ÆtóüÐâ(*˜HE®UPá"½"ðïÁÉWˆÀæŒxÉNJúÁýZc´ø˜Ì1 {õ}ïxcºBÜ]ÒͦBÔ —ãÊ{ÎÒª¯¬8ç‡**õfÉ^C•qÙŸY´±·‘fº(IeVìžn›§°‘éc Âpû%L%$Ôç]ˆ¾[‰ñ¼§ôH8ùŒ÷-mªòI*ñ6 ï­ÅV,Â/­YÜy™ m´W&eW'(…Èg¸…+ñ ›_ú7‰ÑÕòµ4wMÙI+ÖÜ«S‘S¦åÈ–1§CåÀ!Ç6mß#7Ð(­–—£èéL +˜Gt…ã£ñ¶“xyf…3jVWL{—£ôÖ¸ë"ž5Â㠲Ͷ‡ˆì$Å­§Ki%œîÙµ8“ìúBÞF˜•5hò&žX(zÆö n7ŒºÝéâfK}+®~‚L!£!„Ã6³CÞW2NÄ‘¨ÏË$‰(‹ÁT¸ÿJúd'Ü‘zh™ÐÊ!:¾[Ë`6`ÁˆÄÌÞTxÍI½iÓ×z¯¤éU³ÂúòÀmÞß0ŠPû~Ϊâ*©·>•ú~…=N+=wy„ÐÕÚ©]ÈC2’Nî wÇ&1ñyê ‘×€`(šE‹³ÖwàÅ3WöÏð‘õ h‚y^ V~„¦‚/~6íQ¯Ó2ºob€,ëŠòks¡dr<ÒïEå5‡©¿Ð©vó¡âð}zYU3RrLk„D˜ŒÑàçÏ)+Òp¯‘Rÿc‰½õFr»ù°ÔNÑ ~¹SUBœopc_‘„Ž"åØË¾yäZâì§Ì$,'XN:´¥5¬þÏ_Ý-Dé± ‡,³ZI`"3£ð¡*îø€¹t¿oì©QiÍ?‹ ögùV+$¨ÐÞçrJ‘t{†q©õÌjªyžëk,'8Š´»APG+íKÉß™z-á*j²ºÈ(ºrðjÆ(8¦Ï§¢„ìèˆð;ƒÞë6°ªL5Bxn½NúúÏÞÝBfmg‹ÝºÏ5…È¥0ΆMÛ†½ŸEwj[û«Ù3ÄíYQÜà§èÇ‚gœ³®ß ädcøs´)Í˪ûùKŸ?šÒœÃ%pTI—.'âQ?V–vrnr«n@‰y.2ý[òŸƒduºŒ™6LÂ]!mJG}/‰?$ßO6Ã/oƒbr#³ßÇ'Ú´ôÂåiÝðضÀñº9òåÁô€Fgï䄌›ƒîù•麣¸Ý=H„M ½ì$5ð«²NdÉöÅfòyYZŸDZÅ.Ïö–ÈgPï(>¿ ¥ „e»}HH™X°h¨Ñ02ôÐ'‹Ÿi¢ÛéN|ªU´èºb°f$Ymë§®£7ÔB”íàØ¦…ÓƒkÕŸº¹Wjõ¥!krr—&xa¡ú ¶òñÑmš¬vS¦йIuÒöé¢iéeUÞ@ǧÛ=ùNƒk²˜}Ur͈Թ½t’ ,à*;›èìcæ‘Û¼ù©8"׃3È¡£¡pr(Û…,€;Lg÷b÷rî‹y\J™ýÒ$¥‡XCƒN¹Dz¬xé½¼Wo®u„Ƴ©‰ëü‹W˜Ò'ÖÞuÃpvaFf¦Šr¸ A4-ž?õô,ßH°7ÂÍaìQ¡ñä0yñšmÖ"‚[NÉjÑAMÔ:×àº;âñØ Z¹­0W´J.¯^Ñæçœs+µ‚gþìTaÿµ—qn¿èëÜ»‚\驉y3W×9 PæâXÍg¤í¨3Ô=”*Õ"/É"m1 ò8nèó™ø;ËÄÓB7ò0©°'pÝê—† 5ügiwlÑKY¼ºÃ¾l òhž]1‘÷«‡<9L°ôexé©ÑLoöl=b°µª‹Éêäù”D°È>’«Öòü ªàÞ‚GóÔý×4½C&‘pb(WoàG^^¾‰ªeD¦>:£•}ϱœŠôÁfHÏŒM«ÆèY¦¬þ'tm"'òˆq¬²k¢Àjz#Ü ”'Q>sÂ__šÊ#ô}RN¿> 8Ü‘Φ,é!ÚØáÂi²i„õ#ãO¶óâÄÅ&ä•+ó\¤ì jpa‹9[×v„Æç£"¼¥ˆœb#/gQȶvèìz8 ¢ÝQvG$PÅg›b0“Ùª3}Ãvq.õjÔMûœ<é‚Ä ïj'˜ÙÈÓŽðë”ëc¾ øÆõ¤ªum„L+ƒ•ÅØ?×òʼ&*“ T¨4X†·Ø¶Êòu±¼É-tÕÅ1Ãq[”фﱠÇ—¢€Ëö]O,ÓêYãœÞ L†0¡u4¡ %¬ þÖí“à endstream endobj 257 0 obj << /Length1 1625 /Length2 5524 /Length3 0 /Length 6350 /Filter /FlateDecode >> stream xÚ­WgTSÛ¶–¦‚é]C/¡—Ð!AZ½#!%‰Ih"E¤JïUQ:JUJQ¤w%ônAxÑóÎ=wœwÝw~ì=öšßœß¬kޱx æâš®h„.…—–R@>.¾8sÊH\ ííª‡yˆ€<•€€6Ã#Ñ(¡ °F¸tp€Œ @ZII‰J Æb‘îx€°¥™µ(ö—ä— À%ðO„h‰Cº£‚Ä?„7ãƒ@á‰ÿµ¡9À{ nHo@Ûj«ÑëA,zKLêëℌp ‡¸¡±ï?8åŠü•N‚È¥‰À8 Ž$š!àÌ/H €A`}8ñ€Äܱ0žX<€DÁ½}]@”»¡„Á¢‰>DŒHEãð88‰Áˆ^¡:ºĉ÷€áùÆ!‰0íFÔtEÃ}¥ô#ÒQ< ‰Âðˆü/_.€+‡ñ†}É0Xäï0|qH”û_ˆ°wÖÕÃiˆÜ¿ªóWž€Ë†Áxþ¶FÿÖúW H<áí&A%-Cô Ç}»#QT’¿†Eå†HKý!wõÅü‰ù!°¿ $ükfDˆAÀ\Ñ(ï@€+ÂJ‚Æ]„ÿ».KüsMþZü4øiïÿ¯¹ïÑ¿]âÿï}þ;µ®¯·7æC€?– €¸ep#À¯=øµhðÿcóAzþ£¿+Z#þô×ß±?¨5QîÄŽˆKËHHý!Fât‘W(÷¸Á¼‰Åú-·D¹"°ÞH‚ØÔßõ$IKÿ ³ð@½P¿ªRú !P®اߑKÚ@Œ­Mí€ÿiµþÖ„GoˆAþ74kc´ë¿¿x´´Ð€ qi€¸¬”@ZZJ $/ü|þ&’þël Ãc‘{) ))iñýçó×Éño4×Pp´ë¯¡1ÇÃP®Ä9û—à ÷Åb‰íý}õ‰iÿyþ=ñDNõé®ᙑ‰¯aÍïy£cÿº]š¬'SúÜ¢¤(¬ Ýš5¯Tî|R)Q7¤|Ú8NÀü\6]ékgñjKClró‰tÑϾT®„K:•Òd®[Çm¿7š#·IY­,¼15sz|rž{è¥,öâö±HŸ_Qÿ†6žþ,¹årÝ9†šbº`ò—ã#¡®þÞžî¶]ŠŽeN`^¥€ Œ5$•À“‚tÆ<‡ÿô¯RÎMŽ|ËÝw^â[5ÿ¥v~òMN0·Ç–c†šì\ ¼a2ä½ögŽ5™!îZGß$ƆˆÖ~±º~À’Cƒ¿¹õÁÞ‡”‰-¯ÂAv-Ýãaù¥-ëP:ÍÙÇȾ|f²¡‹da‰©ïÀ7î†~ nœ³É¼!Äb(<©z’8æÐ¤·ªËÍÚ:U¿t®ø£4…¹•¦åñÒj>+G/âÉ*â06YŽ:³ C€ö¾Ï_¼:=¼ 1ò~FUâÃ-v!¡˜â–'b¬o kLM[œìÛ3ƒånþ-çbfè™,Ú!N†üéÕ0üÊé¼…ÜmCò¡z(•§ î¨~ó*XšÖ”1ŸZÏ[?Oc^Ï™“åk‹¬ûÞ¥ƒ(p²‘ÖP%nÒ¬ÔÌ’ËŒÙúz'Ã75Ó|c[ôlâvœ©»¼lú í«I!³ä¯§£!м; Ñ<¨.ÃOn·ª‚……Oʯy6IïûFqÎÛå0òÞ²³šÆUµ¸ÆÌý&Œç„5_Ccr™óôª$x>—5†¿ <yÚ¤•í®ßsÉW™ÐsÖµ­Èí~-(ƒ°YÌ7 ä¥Rè ŠÚ‹úÛ冥jvÒÄí€;ž‚4$ièötß­ÅÜñ–~ÖÖa™FP¡ä¹rÇ<)eñ–ýFšclFxÔzI ûžºº¤.¾¦Ìy%Aafhp©?£gKÒeŸÐš¤M°Ùk£Ó69赟{Uæ&‹&É@|ëè°i1]ÏÇê+óG95ñEÝ9 ѽ½'X¿}µ`3!‹Ò®xï(ÐF]p¨ÉChÓ &¬»Á–âÕ­RÈÁõë*¤]6¦ÂjÉîIÃŒ+§S+4Ë>Hû–oz¦Œ¶Öú¾ý¢?Þíœ(…ZCußΊgªÝqÕTãÁh{Ï1¼û¹Ü|ÇK=ˆ²AvœÉþUé«„Ù•í‚~éÔÂ*YÞ²!ŽvàE†Óï9ÇO"÷æô=c!™1mݨúÑ‘ÛìTR%;"a*Òs޳BŒªi,5¥…Ÿ¬C6ä3Ò¯^:Q.{+YwÃn\Sìàqký}Pú¢…ܳ£n#ŽW·>ÅžeÆäÉú8Ó,Ù·0 ­?@ï»:öýl”7³æz^x¢šQºx`ʽžÿâÙé´ —¯Ï(9+øVOÁLáç`…Š»;™ZÁåSÆòñâ¦e¬¢âË_ŠÌ¼ï:Ë4t—¨$Vá¯ß¸.N‚¤Ëò>;É ëo¬¢ï*jƒ¹äîÔ‹,­|Ôl½Pç~u'ûû˜ÄÝÖKýàE;Ο’%5óø^}æ…L¡Ó´=hºíj}¹W®ð!_íõ½Âú­Ñ áËØ©OdÃ’bÓГ CGø»+^ß»»[›³²NËFZ’lÀ{B+C` ½§U½VòòQ(aQ-^×V/CDð¢<›AwûÚeÝݺ/¶Æ6Ô’$žÚòtçäj‡7Ü9Céჼ¡›¾z›Ü—ÌÌ_Ý’<[IÓúæìÄ}ÀÊdÉÅg5%îC»uÜF@;V—+õë·¨NU\=ÊHÊû¶f_B_-cšËb¹ŽšV­Ð»Ô©ì®6­#bîS6Äv\þcd¤Ô’{Å:.ÉØw§¯ÝÊá,÷1peqvo×áz³ewꈌ3Ï¡çVîÝø5HWÉ&Š«8ª$WN?w{¾ƒ õÉ&ùA·Í÷híš Ù;–uYÁNcQZȃaÊJ.;R{kŒ£ˆí„n ¯ö+Ëæ5,7O¬2w씲/þ©As ûD8­·'Iµ7‡iè½w=ìT§ÙÒ-ÑÀ™üÕ¤ƒáÂüÑWÉÉŠ7x/3-øæ=Ôr+¯9¬ΰþ Ó_ägb*ÏdçKî oTZטèü 66®=7ÿ²tœËÈÞƒîro\*/JN¹vŽi¯ oÝŒ_ 'Tù©–ð~1¦Ø^>åöÎz’a;±’X¼T™Ç4ì–¤8(βe~Ò¢SüsV|á=ï´½ ÈfL2¯ý-(ˆ¯–}¶¾Ç.ŒŸ§Õ ¦Z††fg ™N˜AœJsué˶J\¼…áhE§0«÷9kÝÚ¨÷É÷BÂ0%Á«¯L•G|H\=ùwXª®D'fÓY¹|muõíÔ#N`£][ÏŽîCØLñ>ÍÍ/û*d\d#s[/fªø‘uж-î]y›ð8ùF²{ã-Tù3ÔA£²Ð?+g_Ťó±P©¬s­©`%ýX®ÃnÕOž7™‘ò@A˜r/õ(¸=TĶp’¼Ô¿þaTœâæjÂõÓ»wH)¹zÖq®|5ÏÕž÷p`“ï3¥Õu‚§¢±™}cŒBd¬¯Nmgê aà>GËjÑGb·";îä+Ë>ÛДP”MýÖü¹ÇëM[ôŽüãW­AÊ?j5á&4ë<'ÙÔ†æÑ‰öða%ŽIñ0âA÷`ÿô𩈑…æRIÀN²z­aY'b>¢uöVþ:¿KâøøÆ<‡Ðg߇û©_ ´õ^„ ©¤¡KŠí· ³-5cKAL ͇-‘ÓŠF©¨9ú §á T–Z­Ý®úO†ÍÛR&—ÀsÎåŽÅƄӉ{•M¤\mœè¶qžTnn'½ žÿ6›yœkqRù™¼ðè»Ç†B#ëüK2ˆ0¸¯¿8Ï/Þ¶p--Õ;R$£…”º]Õ:ÏSWÁW«eR˘¬DÏ™%p˜üsRÙG!y†ÛêEL•}Š['YâPÙLœ/o¡¹ª“k±St|2æmjùÅqÙG½XëÚ ç`UˆH<Ÿ¹:@Ni $yÂIášk]û8$ÏäŸèêÂõ=UX—®hßnÒ‚‚”¯¶O«*êwë„¡oÆú÷ì1~æžši"Ä\bí~†‚xñŽÚÏ­Ò5>{ˆ “7Ä‚âÕ«‡H–ýIÅxÛƒ…椾l4>914ùàÈßñŠ+Oµéó±†m…=÷ùÑ@*”Ç|ÍÛ?>Rb" ×'óB-“©…Ç35sù"çš¾[·OfBîlÖ#!Óºx›ˆ²»$ÊÝlél´˜Â…㦉»öþ¼Š4+’AYœ¨ç|µƒnz5ê¡dÛ !²Ä©k„«—< à4ƒÃ#ïA£þvZ7§x¯<'lA)ùK.œ%m°ŽÐë‹Ô1†¶åé®êkUŒíðïªD¸­?UfÆÙz)-JÏ¡N"YÇ…cÀÐÂwG(êw‚½(D£´×í—ÚMÓ»;0ªƯóÇ)^¸(`¤¶%ú¼ðôKÍRÐG%:…Jî|‹HJRÆ7–PÿUéjÂ6„±:¯X^ªÂ¸Â2b=ÿú6Ï,‰Û\?Ì«QúÖð›â^]Â9r-ëzé=Q݆÷úBÁœLj÷yŽÛÐa†s’RŒvçž_ˆð²w¦Gt(„¦~¤-TÓ_°¢Ÿ6؈mºÒÔ>™n–ê »m€YZs¯¢¡T¾Z4ƒüm_ì\ÊÒUƒ,¯/"Ò§hô› @â"G£¸^“§lnIÌ“`Å«Z&¯÷ ¿‘îô<.Ö• QyŸþqwñÓ2tݳX"bç4åÛwñÊ^7ëÐö­ï­¯Õ…ª8ÛÓ¿V eMßèÔîÎHwÎ4š(¡¬¤úÉnôSy6‹éÕš pc÷kIQh¤Õ5÷ŒgsÍ>è BŒ;#ZäÚ^}â+8ë2E‰„"‹EG”öl{Ñ|\}‘ÈUs¢¥ýj)Eg$bˆ´]žNUéb ïéN™ì3+6÷§kî &5 ýS`¸é̸}lÏ©`|i¶7ö9•dr^’ïšö î9§Å.Ô¶ŒK^£ KûÜ–³ÛÒHbØ0é`–9­¸ßЛ&0íð³ °çHbH·ê£`qöú“¯ÖåfL:ãÓCß”±Vž­ÝŽÿô úèðÃÁX'ÈõQ“X`^ÁZLX!\¸,FÆl8»M‰"8”k+7›L¡%ɇi!Ÿ‚ξ`[üd:5IÂu¾¿d˜µ± ±|Li&šØSÛ4¢Iºâ1×/㥟aÑÒØ;ø6?3Æ$c˜J3¥ÈL¡È“Æs@/„«ô¨:´0Ñ .™Åvð ö¾‹[3½Må-Õ¤Z¬õ`Ý28JÛ\1š‰ º4ôäÜØ*ê¡ôóæ÷m-–>ë=Z¡û¨tV¡É›|ž Ð<‡Š[çòÎö¯f¶‘IBΩŸ'rɱ¾¦“³šC©Co/?2¹³›ª}3?‘'(¡rãE,]„¢Ãq·O]ÉÝ µÛSÀ¢ëÅnã‹3ôŸ1Ńïå)Ÿd= œõoæ¿ Lá*©d¶²µ½Ê3M®[¤¯à|³ä—2 ÃÔ™ViM\`Ùß?Ù¼–¸¤sìæèpOa˜œíö£Ö¾mâVàS*€w¿¿ØírOZË%î@!Ö<»Ê%Ì¢¾“›¯ž(›"¦þôõXÒl·ß+¡ÍvËڽx­N ä9Iœ%!jà"® I›ò^DYs’Ðö­lˆ4ó‹I¸”݈g+ ©vÌöc«ÑuM£r¤øbw“òº¦ëmaË®¦åѵU éÜ=Øm cËÉV¹B¦nâ¹gªñöÜÖüß2Y¸ôE XÓIú9NcS Ì9ôµ[é·£ª©Ø§OÚžôKK[Ù_Ù!Ð(…Ù3käædÔ¤*gÈx²*ó«ÂÎ:ïRò΀ÈŽ©Î/ÉÔ”^Gö ©† v‡z;»¿ÍØ1Ÿu¡×‘Ùœ.t§„ %Œ7¸ƒòË©–Žxvù â’îÆD j©ßlNhüÀÆÁÃ|¯Yì·To ZzrÊ9öŠ«j;’­Ü¤½>û¹&`¦ÌK¨K¬|6 šmªuýþÉOUú¥…=B\¢jÉ= Zå‰ÀÛÜR§óÔxÝ£úga‡o×å%)Âo¿îŒF⯋°Ç]{±2¯S¾n½˜ëp ÿ`I¼cdLÂ7xVü–•¥ÛôòÎЙõR$ÛrSÿÏtáX1ªõ};ÑŸ_É`íö¾qNâe·éèˆ-ÎqÌÏ’â|¨ÃÝ?9ôȤ R©ÈÌt^¤åÅ ÓÖ»ò»{—Ó•íÿ——Å‚ endstream endobj 259 0 obj << /Length1 1144 /Length2 6779 /Length3 0 /Length 7547 /Filter /FlateDecode >> stream xÚuwe\ÔÛÚ6! 04HÃH HÝ]Ò„ô0 13ÒÝ!%Ò%Ý! ˆÒÒ©¤H§„H#!{ïçœýž}ž÷7þk]×½®;Öµ> ûC=C^„DGó‚ù$:07;wC[¸¯ê¼El ØÙ`hWÈÑw„ b‹†!àʶè;ÞÈɨm‹ Á’â’"໵€Ð¿(I  æ†ðêAД+ ~G)#ì=Ü p´¡é ƒ8@Ü({ˆ»$Ðñ®²ÿÎ TB ½Q0¨Èil`ÊÅÍÍó7–Úyÿ‹*CÜaP8ãná qE ÿÈt'¡CPwE;ü«çh«âCÿÑ.Ó FJòó#m!wŸ»#‚æçº+Tî „pûCÀà™)ÃPû»¦¼ùÿ978â9Ü÷¿`GÜáÏ–<üÆpØ3Ècåÿ ¾ƒþÆ 4PD@P@B@y„xÙ;ñÿ‘ÒÈ ù“ÿÛÂü}‘$ÐÑÖÕâs„Ü}|Ým=!@4Êâïûÿÿ¹#ƒ0{4н»†¿Õï`ˆã_{m[4 æ´àþøý{õôîBpWï¿ÃulÝ @~M­Ç†ÜÿìýßQŠŠˆ;I^°˜0WP\äÎ)wŠ"BÿTÔ³…ýoE~ wD%þ*ünbÿ*Þ‚r¿s!óOÃrÿSI†ÙC€œ›ÄR@DàÎwðÿižÿàÿO ý3‡ª‡«ëŸýsþÕ8ð®sw ðÞ]mQÿnësõþ?ü3Ðò—Ïÿ?:Ѷ®0{8Ôõßc‚¹«Â¼ z0´½Ó_Æø 7†;üùâ zwØoÈ ÿƒ3r‚Ù»À!îîwîû“‚Àþ‘Rnp€Á¡@CôÿlQÿþ í=P¨»ñüyAwgÿµw„ÝxAì æ¦öRaÎ a.êèŸónŒ u‹ŸÝz0 Ä»b®ñauéи”Ó œŠ§æ(ë 9ÉÖX`kccF$Ò«Ä‹=w‘PüȇGNNŽ¥M·Ç÷FZGðó>çø¡@7]RMZÞw%ï^õƒ‡•gfì²J#䆪@Æ ó­ígº¸ôL•…ÕøºÛÓ\.C~誻èKâN´) 8‡D¦j´7Oüi˜6ïST$·™šîQ$ œŒP#@7ü´£7+“li¼tú¨)߆ÙÁS“Ú:æ&ü½<ðh€K“’ĸ ¦¡ Ñr“š³¿OŸ9õºçãç@|–Wn³kWûœ%fѧ<7Ÿ•ÆC OmyuþâݰàÐÌÇY„ã1ôi\Xå‡w=¿2M¦Ý¨>?ÚôTêjÓ\Yƨ·dÂÐgDÔ¦„xÊ šwüZwfˆª%¼v–P(’>h´¡€¶Õ$æ$ßgÞÉeÜ3<°:²âÀáÑ«<ëñ¡[»®•@h}Xä,¸UW›ÑO7ViÁ¢¿v(ò2kÇ2y·¸Ú çz€· |7œ…wÀÏ,Ø<ºË8~ì[¢*¤-~”…q8p³L0,ÞW”aºý n@’éÊ2uˆŽ/žÏWWû>µ{qm¸ÕhT:µåÇEa^ƒt0ŠjSh„·~×ÈvŠºVš¾dOˆê! ¢—ÙÛ'WŸI¥yêI^'d£qâSf—.£3¬ƒmªO¾Yjóxsî&‰äYôÃåKAÏî7tâ1:UˆºÊqœÑh Y7’|Æ]{žA™ÔBm•!Ž™Ù%ïç¯!&~çmnLZ©@çœÝX6~ã×Q (ÁÜR¿½-{²%8¢àÑ¡h&©«6 àyϲ{D=M ~›1ôNN€gžüœï=€HÕ›–úEloŸÆç>?’õ\[ÞÊlÅòåF6¥m…mÿÖùV'òÁû^ðgu”$ÑzËÃÛÖ}nèXeõr¹÷зDuM^:†T°;>>+L¬sU?ªaKx‡<˜X]#Oè05‘Œ–bû(Ó•ÌmûùaxÜ¢´Í,4̬žÐªq˜’ÕúÅ×±'F>»Õsºò. n©‡úåÉ¡q[˜“µüRœä/žâ qôšj¯ìð‘]:iƒ‚­G$0j–FsÊR¾è?ÚÖ“ÌÖ(ÅL›a~'¸  )»¹šÆxAè=ÖòþÀî«.ÞØ1ÓFµã‘‡Åû{È››Ï¯KY§‡ƒ9ë…>\°¬ß3“œë®–uoOlbùñÀºô)£ß`CDÆA‡òblÆ4ÐzoUU~ö€v9;ùUÔ³ vpå;1ʉ„°ž Â>]°eȦ?±WBì«_4L£©Y¯e(ÃÝê­@E„m¯´ß°ƒã°.—BïžÓef‰fxâXqÏb©=Þ3÷Ì‚¾|'èï |1ð¹~2+,&ߌVk]ñÙŠëm¶‚|ûJgjðY;lh‡Ýºz†Fuÿä­ÂVI°ˆ²j§n;Þ”Ub1 Øág”\¶ÝÁ¡à]¶£47ÎaQÃÔèÏzH>ž)÷SîDðDÜëÜ$ç»Àþœ! Ó`ü’áF!èaT\%ݽ:sÊþ/‡ ­ ¢žÏ¹§ä÷ž+ÝÄõÂ,0ò$Õåõ§æ¯.yÚÀØ-/|R}¨”4¦ô¡»Q”¢?I\—'v™¤¯%¬(³Ð]‹9ö hÝ’œó#ŽSm©YåýTôq?håìÖƒl“uÆ?©:õ ‘¶Âå+ÿeÕ²ç’&ÁUîðï*úYçe¨q‘\*m÷«´—á…N‹¥6mTJ `Ù.ˆÜ³1™Ø\´˜bõ˜ÓǧùíÇÒ¦ž'†ËþâA JœÎÎy¿R½~Â[oNT fîçà228Ç)}Ñ$)ƒ@9±™þ*›iÐÅ/úõeý˜Ú¬<—g¡%kÇH/ú8ͰJèôuø¶z«>/6fã瓜r¬8‚¶`nÔ |+«n5—Ч¢gû\ë²õÛ°‹DÄwŠS›‹¹GäVÝ81GSTæá>ÚÐõÒzNí';~ϳnÈàÙÂø,Ë$âÊÍÚ(s¾4æ6S¼Î£´®ز±Xå,ÍGüÙ> aâs©SQ„BþVhÐe.€éå,Íé“·í–ÈB…ù3¬ÑÙt²*L½`g¦ô*ý5\¿8ÓÖõ.š="‹óQD%ëþB¹ò×"©¤f~’#«!y3*ýš‰\5òÞ8 -ŠŒ+ ¾Ÿ&𛸑)3á'rÓ#¾ o„’Lj·ú¨/»¿Ö‡ª @†v|é#=Ø8±Bgt hé> }õ\¸ïQð³ÊwcöXû˜ ããײɯ‹ãÁiéüv.²m2׸ƒIÕ2T·ÀaÑFr«ïûbç÷ãS(×'“‘·»§¢F»¤Ð6|L@ó‰Xb5½ñŒôüH®âþ52Üâª3I÷žd„älòÇôµP¬ˆëŸyÒz÷¡uŒ6êîG‰4k4}ä¹Ò?™½V ™;Ÿ}äk>I*yëZé&¶N <íŽ ¼éìÕu^ªSEó?R¼_>Hò0Õ`눃dõ/=¿’÷zŽêtÙÈþÅäûRþCÜêœuÁ¬Ì©Ð³êŸç«ï½õÌD[ax‘œþ;„Û‡U{B™r ½›÷óÌrö´ºI=ˆZ"O‚8HbΫX»ÌDL7Í9ªLùKNF‚ÊÒ—ÞìJ¾eëLë37úT,Qh<ÙE-fRb&~(7å[¨¨[")~ô˜?ÄxZ/u|Ë‹Åþ'ö¾OúCïüÞµ[–>dU6ó^ˆäøeÚXë-•ù"‹çÚÏž'r)¾­®Ýb¨é¶ÎN%éG7!fÚ×jyX‡Ù½Ùö¤Ÿ,&zžJõÜÛãi‹žµ|âÆÅ£o~t@N‰ÁM6O½‹É`iäø%;¹ÃBµ- ¶%îÚuÐ'ð™ W¡Uƒ{u«µªiï´[=µi ¾oÇ 3Ö—þ.7U÷ ¯ÑÿÈðõ+@·ÂûS¿ß~™ÀšlAˆï­Ôë¯ÊSŠYÈݸF•åy´ z±_!géײœ=6Ú´Á ‹ŠŠ-,âT1«M#gNvbP›U%¢l¶ñ#MFF‰&ý›dÙ„p.+úµI˧ÓQ‹=lÌ­¤ûÞjJ^ êÐKý–æ™bŒ’¢wyÒ‹qò.´WÒ½OŠÂäð#*pQåZÒ¶Û}¢gËͲœtâÏz¥3P¿òEµ'¼?í e Išv: xÚ«È3g¸fi¬¼[÷Æ›O’.°´‰¬Õ—+:Ù?øàÑÕÞ½pü+²úÝ·‹%éóä…jDæ!Vksš˜5|ʼn%ºËÑNyE=¯±K…KK²—?Ø6³lIR Å†m²?=ãSˆÅà5¨ÔÍ}m‡ø!$+ü.+ÖkS(ÙÿP÷&•gp(žå‰qí"´–ñxIf32˜Oѵš’”Âai?—¦D„ÑÜž/ºÇ¿\¨‰þr»þœ–kŒ*wÎÞ~fµó¼|ŽÏ"»1N²fô­å9¶é$ °SQîD œ,R‹ô;1üd1Ìøp$o ƒ.,¾ ½\±Lu9ŸÖÞL/þNq–z›ä>‰?žåCAÓì|ëÁģϛð­ÂiB‡¢MçŠÅÜGD¢¸ât›œîÒ¸ù–ú œ5•¾þ#AŠdzQaÖå±FoNšý!BPUò˜¡U½ö1w§¶PG¯%Ã÷yª¯9Ô÷Ÿ<4;¨,½Ud¢¤BÄâfÎÃ~KBVŸïúú²×|V*üêÚÉZðÍî˾¹úpêà’ôþy¨ÏÙ˜sÆÔ~ÛÞ¯()nµÖ}IûiÃaRÕ‚QùÖ8WU/Ûßø“:‘”FO ƒ¨‹¸2¡v^DÐÜf‰°ˆ);¢Ûûw~‡ªY«^¶ëŽ’}<ä*3s‡Å ¡8¸GïoÊ&ióÕ/Vë”Ä;Ã=¿žÈf]KX–ˆ³SVÛKé©Éê®rŽÓ½ñV˜gŸÌ©ùÑe|ú¶[üV,¸®{}`…'ðqÁ¢Mê6eÆ×ì1»{~ózûƒ?„ j»\wýj~ºû E¹, ÇÙJrMÿxý¹hâ‘kIøÈ,I¢0iëí(¨Ñj=KÛ4ÆúÓb§TÕhÜY6‚îø¤ªÁªÃTA­Ô>¼¹ÐLÖœO¿ÀRS$ÌÍv¤Úºhæ™fpבhy—B]ÄcÊ¥t…1uAM b~º]‘¹p0Áò†%}{ƒ±ð~EÍÓÅZóg¾›/p‰ñÃsãÎSò/±#V`÷2 /w™õÁ­ÂI)øÎ—Kèm¾ 'ë¤u£‘N¿Ô–býWóÞÒ;íñ¡L„ ’=vËdž*—¼Â)…ç.AõÞ|¬¬çLÔÕ? ޽é·é ¶Sg'izçú ùÅ «‘zØs‹óé¦_⊠)ÐëVß2ã9ù¾çü½q6\lªt¥nʽ ÂÄ ÷ŠåØ$é‰vÁÑÕ»UÂW-|ÙPð™\DPL RDPõ%4ü»WÄ;M¦gËð‚XNݲÛIÊZµuß§‚§Çx±úo^Æ«®Ý¼ÿ¨ì‹z}äÈÛä[¤Ÿ3ÕÈnóŽQ‹†¨¼ïTºö(¼¾B:¨cc„È *¹•Á.¶…ú²y+A¦•7/(ã&Î&uõs´¹ÊDv¿_4,¬áòëGÑs—6æFá+$–lã4ß2ö›•VB­_=\ÆBÔˆNäÌ>Q—å6d.ª¾ý¦C°ŠgÜuŸtÎ'¯œv7a%r¡åÌêî…ß;¼.;¦%z=N(Ü~åõjW jõùz½IÖ„ ª3ØùAпOH¸ëeùv*ìéóüP8¤VìzѨÛ$6œÛl|j]AœsÃfÿ qƒÑómêp|üWTÎʺÒi¨úI•×>–-;'™‹ríþ¿Ã Ò›mœ}yJöùî_ÍÊ&&Þ^ÀŠ~6z¹«h9ýêoH7J¿ø ŠãƒÅlë¾€ YÐ"ÿ#ÅÊPŶ/Ý< Ëÿý$Æo»"éuïg?›ë•=rºÏ‰¶ †¨Yõü>úz¤·Z2ò6Gë‹3Ý›|·7tš°ü®a5é÷*ˆÐùŒëÂc&BtÀFÙüóÉNnÌì“…›ÉÏ™˜áRüL ïÄ(¼²Æ2âBí/šþŒnó[Ô&ÒK,f”/ϾæjŠŸ2zÒ9ûo°B†ùh4‰2{/Jn4ùø™ë5ýN1ãì©<²ïX‰kÿæ1®¤Õ{Ëá®ç/ç16,›ûn”÷M­ÌºyOƒ{s&¾—^‹}0ír½’rÍd5,1_Ķm黫Áy/—ð\ŸkÏY-éu­M·5÷Äâý–FÖ-³ƒwX®ý´áUµú¿q,A[-ýÁ—ë\…2÷5‘v#¬– u‘ô6ëêû?BÁcæ!ÑØ/¼¾äAd|½=fa8;I¶¥PÚgn¬Ý4°¹¿v‡s[¹›‘!jo¼ÛÆð³D@ˆö=n ¢ :1“3I-i×ð³.݃†8÷…ñŸç^HE9ßcºoÒ¶¡$!3ÂòÃw#¬PH#ˆ&J¾ô!Wœ<†q#¯ˆúº#:§Í]YÉ døÛiNÚüà` Õ'0ºí/”—ègòjiÈ“ æ˜Ç¾7C?_;Ý´´3}ÿîï¦=ã“Þ)ó™43î+W™£]:‰~=ó3ÅBÞÍVïÞ|›^}Dzïßã„JWH—u~*¹SJ}¹ÚtM"=£ýöÑ”Z^êqåiì#ÜÄêtˆ·Ž€bíÜXg’iãæçH‘iÊÜVtNyó‡sê5LlÖUHƒåÍúFk*ŸÑ¥ë뜚ò,&d‘ÿ^X4 ÚÈ z³”ÁVI§ýºé¶6¨y–Ð8ðyõ…Êa}O²ôø‡åjÒ´c¥‰Xþ™“u¨ñ”~œúAšÌÅãÄLVç ±ï4:^R_•P«Ì<‚U¼ä7'C,ü§_êV<¿¤„T:[y[ZÔ”ë¬ýÃbfµb6;ËVD¿m´Q1 ¬Ù{ôZoL™J¹}Æîš¼$mDGè;Â*™µ$¢©XޤÎb©—±a…A1&¿S¹/”ulo‹Ùi˜=7ô>—ëÜÖ íõ,;~áÖY¦áàEÅ€aîÅÒ›øÆ?‘ŸhF<“hÍú¨ÖÄyú½Ô½£Jä#2‹Pë)£3mc.¡‘­QsÂÜæè†7€Õ׉›ùæ×£îhbªÃª—úºÙHÜøƒ+c÷vI)€ ñ°=|ÑŽcÊ:¸är¶Ú@ p9r³Š§¯$ÙÀÇ“æGšôÈ `›2ãõ;9àÊGºĥͼ\#‹Ä4²:ªþ9žØódåI,hþAEÊÁ¯Œ¯Æ[žCáBKKõÔ8_40 ÂzyDs+èÉÔA¶Ð.ª°1éýQ[#ö¦ñÊŒ7µxõN"›Ù™!C#°V$xWÅ0zÝQWiÃ;Aø÷FAƒ•*ËUÌìðªeN03×éAŒ'ñYaOï"@Ø>>£Xª¤H€D`bÐ;¸h#²k¦#ÎbÀmÖ¯áþfXö1õò© w6ú@o¼ägM† öšÑuÓoÌT1þ ¶^[  ûï¯qF=çüyø}ãú5ØR£Ø{-θLí”Ê? PŽ ù0™î’×ÕF®Ì>Lò˜ó;YŽÍ;òc—U‰û¾D˜‘áÙ#ê¶iævùÖÇöO(Xœù‡ÌÔA_À£¬ (ÜIÏåùâ/ g‹ù ”Ü9 –ƒ¤ÃR…ñ |µî)bi°ŠeIN{ö+UÆÆÇ&{ÌÅOÉù±–h”âJ1––\s ¸G¥÷¢–~å¿’!Án.$hÅcÙ6rkþù@byD¦Dä&5ØXw¼\}òZˆGŽzi‰Ó²ˆ{õ0n±så1€—‰%–!\¥÷¨œÂÎ÷PI—‡ %]Í4?gTÍ Ô³ÖžQÞÝóoÉ8$°gÁ"#Ùú‰ ÝD-““8€®¡.Góå?©½ÃÑíàËé·eÙCžQ÷”<;Ð-c4ÐØz¤Rªd»{Bà°îÌô=X€’;›Y¦ÛŽÑ£]HŠÆ;0ÇkKÓ`¦èâšV¥˜¬Ç!‡öëæ³fâ¸*yäTôzæ»ÂÕT5u­\*œ˜>5{Õñîß2RÅÊIÎ4Ó†{è:*àpÛ¦Ïßð;RbŽ­íÕs›$߇iðÂd(36`¥Ùç£2®÷S¿5- ðaŠÑ±–@O¹oÑ­úàiëÉjPül7ž…*`°ÆÊz+ nõ9«ç4 ÏFå*Ì({àêÊÚ÷”¿¦wÐÎ\·~J]Þ‘šÑàž“‹rv/¢Öœúë®PX¨’kÌ5nÑ…ÖËÓÊ|ߌ¸yé ·FÃÉ#ªd"!™WŸBäÖ×¢Ýó6ZiPÁ>b ˆG¾‰&Š•gúÏQÒØ…Ø®¡„ÈŒ$ƒÛ})1ŽÔ5º$èÓ)Õ^¿×k#¤vË©5"Œ3)ÈoáÃ@l_´°ŽôìB¾iÿ¸¨‡Ïñ­S¹ÖÀî†]ýE6º8ucU3•øO*z´ëº?xôªIi†=TÅœQ5jR1Ç«¥,,¯kH˯5x©@£ÞoÆV>Å$© ¢ì ªÖ®dm"iÏëO !wY{ØFM•;yå‘ý"R»F’0'V_zƒ|ÈZ˨¥pˆ€¦µ ùl÷K䦷[~µVþühŒƒùºæQLâäß`°Y_–¥]MÌâ¶ß›¯D¢j›$oUÇ|7\-fõj—·úÓ³ÁJVõ¤\—ín©ÞJ:_-ùï5H Ã!J%Æ `mU.›¼ÿÖƒ„ endstream endobj 168 0 obj << /Type /ObjStm /N 100 /First 911 /Length 3467 /Filter /FlateDecode >> stream xÚí[YsÛ¶~ׯÀc;ÄÜÉ팗8Mã,uš¥ÍøA–[‰,9Z²Ü_¿)YŠlËn}oÇ&‚ÀY¾sp@‚Â*–3aÎ0as¦ŒÆ¯`FYüJæÕ;æƒcJ° ‰„OT8réÑT0!´o ‹~5pŠ г£Þ®謡úõ±•a2ÏQãs&…§VŽII·¼bRi*&0-º--uè%“Ž:ôžIOzËT.q ·•†©À”TÔ,K4A1¥s*pO\™Óº¥qÇNÉ”‡€" u ÖX‹œ˜LK0©QŽ™Áµ²ÔÆ3­X•6Š T¹mI ¦=qŸ;frèÑ´‹½it€È93 5žtˆÙØ_@†Ð¥qŽ 6hÑ’Â1X\á×P7šYNBVIIºdVû@ºdÖÂJ0²u`D 4r`_Jˬ‡ ¥ÔÌåýB펪¥4([Ç)XKBÛN1 ‚e^˜MÕ¤î À›„òƒqà@ Á…–Ô‚`i¥†r q¥&è@Q(BÂŽ’ì ¼€= IÚ•-¤¦‘–0<Õ¡ ޶-DnIW(ƒk©ÐBù `På$ îjh=à®vP™€’Y‚”Yv°­0GŒaK˜­ÑA¶HéV!¬ÃöÆÃ˜BFç~%µ†¿ä8P þ¬"ïäLtü€Jp2a-¡ð€‹åyëÁƒÿýÛEÁøv¿?·øÎ`xR ßåpÒüˆÿÂóÝw™cñÿ¨Å‹Î˜½ƒ¦2È#AVã2™É3íˆæåäxŒ.ùA·ÿ‘o?xàÛqwÐç/ù«ÃÇtüp6_ü‹óãî 3èŸL:ãÁ0 OùE»ó±}ZŒøî¼hÛ½^ÑûñçŸ[ø¿&»*dJ²¹Èòèz"#PX!3(øoɲ|n*2EŠ_C‘ÀÈLyq5–Gày÷pûYv¸u1|Àu®ÿý~2îöЬ78=-†7âZ“Î+®µv™È¯Éõ):¨,§ !'„ïãšœ6dÁ†;Qôذl2þö?YÍÑ£<ëOz½£¥¤*’Zc3D”µhEÐ0ŽnÒîúcöàãû(Tb«}mbì)/l ?éBšÛÊ;*†²t‘bi¼@çüÅpÐyY@ÓŒ¿ØÛgü÷âë˜5 öÚiñ]ðPôÇ#„ÀØ1™h4˜ ;Å(Në±êiqÒmï ¾²hWx0sAÂJ†ƒÉE”à%ƶû£‹ö°èw¾1þ˜‡Œ²‹;{Åçn§8|´Y#ŠqŒš±ïˆ›8¥´‚ø?º ®þÂI–wb-@­cøµlÍ÷iRÁäu#ÇEû»4¼K  Tñ>àêì"9È(M1yÈrD %®‘• ÄA¡î,:¿1ØÖðxËñÊëØzy—°õâÞÇ+¯nÇðµ ×6üb¼òw¯¼½ÿ†÷kg> Ò”Í(­2Zqo$Ëòœë‚$,F‡p‹Ñ!Øy„û‚Z$ Ò#}fô5RÞÛÄ…ÌóE\ø;Å…»ÿ¸ëã",.›„ÌèÉÓ:´+òàÂ-ah³‘Ìí< èÙßÝŠFÿôpðÿ+{ŽÐ£‡’&–žD눩m– qWÉ3=^Óš¤e”Ìu–«›FÉ&¨ëpßÂ…XDx¸S„ûû2é¹ø¦íµrëM<b1´‰; mBÝïÄ% ­Ë‚¾½ÅØ,R\#r18ˆ; âþ™¯‘iõh9Ϥ 7|ÂØL˜ê¤1XßÝ1n1ÒÜbèMÜb¤¾ÿˆ±›{n3³èrH¬¶õ;ç\æZï,¥÷ÿ·q@»’´Œ„1_ûH-ÒÙ-œµÃBŒ¶ܳòY m¸k‚£³ ™)ïºÜgªì³ì!hÜ¥×´MÀ”NÙLT}¥²6Ä¿1mKÈãÙMû ”¾7ù­¤§¢4©”ÚGŠ’‹Ø—T£uä¥VV9ÑGÄZ9’±½Ž=¦f-gÔ鬢lÊ+È¥,qUŽË–êahƒUGÝ "TsÛء‰ÊIg/î¦35U‚¯•‚˜^EjÔ¦’33C¨(ˆšªÊÕ ¯"õ?àùƒ§,Çó?aô/³S·µŽ|˜±q•éÈSm|ýDÛ¸¢Ÿ*B5e¢—ÿÑ}z"L4t(Ú'†~éð>‘®1†Bi˾é¨Ú|ï˜Ò£éA;ªh× Fœ4ñ‚87‡¥†Šê#ƒ´3ŒhQÛ•tÓveN8í;îo+™ CÛ0Uä”QRtái™x)†Ò¯/P?¢ bòÓ¾œœÆ]˜‘\]5•É×>ÊÖñìCG*ÓûYÀÃpýœK ‘ÆF·Oa¨¼ë•Êc¨ˆ=Øè=Õ„\#My®õ–ÊÞbÛTy)g¬Ø]2yƒ¨ “î– AºgRäIѱŒNtViV"uÄZ[KŸæ*b8Õø4“¥–SêtV‘-I:×y×LLS§bšÿ1+ßZê_Àl¼‡úëúWªpT÷£˜j¿DCåº_Vô1•÷ª(fœ× ?U«‡ê5Ð_ÓÌ=ÖN½ÝQmIK®½bÔv/° KK°gísÜyôëöáÓ‡?íÃöK¬`Ÿúƒ­ÃÁy»¢^ûtÄt¢Þ‰ à-öh®Í-VxX\ñíQ‡´Î ¬¦Û¿ÝÓ3\Ê€%a‘îm!\¶øãq»×íl÷O{˱ç¯i{s‹¿-íÐÇY{Hë¹ø6ßá»|?äûüQ\óþÊŸðþ”?ãÏù ~ˆUëïüÍßð·üÞæíѸvGù1?¶;E¯x?N¥! ‹‹ñ´åt£Ã;ƒ–ÁÁùy›Ÿð‚GŽxñiÒîñâk§×>çïùûîç‚¿L†ü”Ÿ‹6FãgüìÛÅYÑç]þä=Þ+F#~Îû¼ßí¼?9?.†£îiŸø<>$ˆ<ÄRâà,Nø'þi2'ǽTuI_|ÈG|Tœw—£â3Æu¿òQ¯=:ãc>>ð ŸôO0`g0,øgþ…åßøŠáàÇdÆý.Ô/u\Y7Ÿ4,‡ÈÁ«½7ow›y~Üë~š—ƒÄ‰%È-V¢D‰U(Ùb]œT(y¼í×°~Óì5s“±¯mg2nªI¶­,Ú´åç%æ3W1ߟowv_=ÿéà)Oä[‡Åé¤×^n:-s¶EûÖ…¦ï„Ñ3ëåuÛå3ËåKœÛù™Í°pYîÛË<›üºéÕ“^¯Xa°þ ù,Fÿ]ÿÉv½KÌ÷¡iÀëx' ‘²ºHÄñjV_·ò¢ÏÛ{™Ãº«Xüõþîöóý™Åw½“•«ƒƒÿá$|NVW5«c)\·{¼œú¬ «¦ÏÊÊü‚Ütjãëö ;¿Ž^Ù‰ö#Ëtaòž!7eW‘}ï—{¿½lʾDh›—B;{3¡§ˆÊ.9ÁýøðFŒvëPÖ“°”,`È+Eƒßž$ë3pˤëóœ’uåZ’ æâ^}‚ê6ÚÜìR‹5‹8ºÒ¬òöÙÓ7¿ý9¯'j™®\ %…£®««F„1KµµØ´#X&ˆ*MY¯OŸn<~Y—•æÐerj0Mæ¥M9ESNÑ”S-Á„¯ )UÓ_’·üR&>iê|S ¬%@fSa5Îò—2ÜÌ\hÙìô…k*ñ’Àü°ßœ i…dÝ÷ï zVŒØ;‰Ñ™õ¤Ë”*³žÎª³,Š©PŸ>/•«ÄQ¤t‰rr/eIÙ1á> endobj 263 0 obj << /Type /ObjStm /N 25 /First 189 /Length 713 /Filter /FlateDecode >> stream xÚ}VMOÜ0½ï¯˜#ÚÍŒÇ_BB ^ÚÒª¥§ŠC Ö*ì¢ÝPµÿ¾ã|¸Nb"!9y™÷æÍ[ÇÄ0T`*дD šv@l€”fà ˜ (œ Zk Õ†,U ÖZ@Že!ð"æÀ[aVÖ¹@%D£¥À£\HO–d„¢ßq€–• Ð+©±¢Jj¬ÜP¤[’ m6›í]Ó>Á ¾m¶W`¨¿úZþ™ñþ~Ç¡âÍåeNÅ‘ªÝ„Ê.cJ8 ¦¶‰É+ÌÁÀmøÓƤ—2*ÉTE™ŽY2À~d²Y›šsÃ͇æxj“¹Oõ)™Û^^ECÍz¥„y-aÊ=—âæ·šÆMyhª0­Jq+^aæqs!n•âVUQ¦c– PŠ›Öâž$0I[åióZÚ”Ò¦iÚù¨T˜ŽR¼èÞ$¢É,/U0Eü¶JžtÉ ¦¤±*©tD,r^ÝÕyw—ÇŒyÌÃxCÌ<{õ’Ár£N|²‰oëçp‚Ÿg7‡‡wßÛú؞ˑÖÉÀÙK½ ï1œ• ®Ê‘Xã&$ÄOjTDºš{™¤ynÚYÛTw?÷Ö?àsùQ0—Ô±9béÓ‘I„&5>"nn-uMUecqT•ûŠ“ö¯Ûˆr^¡#WˆoÔy…€-Z¢óTS6$¢ÉG–ùЪ8…‡¶9ìãÏ:CD×N„fŒÂªhKºfU gã#gš2¼½¼þJvúWÀc຀w;¬€Ç³ðœù™W/½ÿ®ºà–®Tt¥tWjéJG\t´.ࢣýbŠ™³9%ò±y”zêÿYvß+ýj†Õ«V¿ö¢¾Õä&œ¤6~ßä'àß—Û뺭Ÿ»x"í$S?R¾¼¶O;CÆ#ª =~ 'Ø.|><†íS‹…ööW0é¼ýF$sI endstream endobj 274 0 obj << /Type /XRef /Index [0 275] /Size 275 /W [1 3 1] /Root 272 0 R /Info 273 0 R /ID [<06650C924291A99F7AB82EEA3B2E98CA> <06650C924291A99F7AB82EEA3B2E98CA>] /Length 657 /Filter /FlateDecode >> stream xÚ%”KWNa†ŸçU}¢P鄊t Ré@ò9„¤ÃW*¤ÒI– ¦†£Ö24``úø–!Y–¹‰_¢Aöu›\ëúîgï~÷»ïµÍlt7™%s2ìj湃˜ƒÆÈ`{@¸EVŽƒ0NV†åÀ^°D¶+ûÀ:™LýcƒL—hQî%dZE:D–#Óò ’¬žL;¨‡ÉÉ´µjPCv’L»¯ud-dz¬zp„¬ƒLO~#ë'Ó‘4€F²!2Z8N€f3ÓÁžÌl\Ö’Ù¤¬5³‚¬-³Y{f³²S™ÍËNgvWÖ‘Ù‚¬3³EYWf˲3™­Èº3[“õd¶!ëÍlSv63“õ~0Á9p `\yp Œ¸ÙA=ôep…ƒXËà.¸€ûàX«üã×Á¸æVº­Eo‚)0 &ݪ5(€Û`̸5<Õ`pÄ}Ó¼[ó ØKb‰­¥·ŽN ö²‚n[š®±S×ô (HМà’P'7Ýò}úYìéó®ŒR}ŽR·Âoet<¸eÐâP³én”»Í}Ñ%j6Ý Ê•n‹y TeÊ*fÛj“ꮊIõâ¨Û£_ÐÎX41ZÁq·gÚ6ƒS t‚6·ç/4= ΀ÐåöR…èg}‰^·7?4 HAs‚¾Ä ÛÖŽ)8Ý >AsbØíÞeЦØó€"¯1Ô&Þo\#à *As‚æ-‰1·oµÞ-·¯¯eãnzdîùÿ/`ÒýS›lÊSÑ#YÁÓÚ_Ù´§Wße3žÞ—ɨYP‹Øô´ý˜ïc  Õ Ô‚:OßvÌÓÏöwµ « endstream endobj startxref 182943 %%EOF BiocParallel/inst/doc/Introduction_To_BiocParallel.R0000644000175200017520000001365714154342067023550 0ustar00biocbuildbiocbuild## ----style, eval=TRUE, echo=FALSE, results="asis"-------------------------- BiocStyle::latex() ## ----setup, echo=FALSE----------------------------------------------------- suppressPackageStartupMessages({ library(BiocParallel) library(VariantAnnotation) library(GenomicAlignments) library(RNAseqData.HNRNPC.bam.chr14) library(TxDb.Hsapiens.UCSC.hg19.knownGene) }) ## ----BiocManager, eval=FALSE----------------------------------------------- # # if (!requireNamespace("BiocManager", quietly = TRUE)) # install.packages("BiocManager") # BiocManager::install("BiocParallel") ## ----BiocParallel---------------------------------------------------------- library(BiocParallel) ## ----quickstart_FUN-------------------------------------------------------- FUN <- function(x) { round(sqrt(x), 4) } ## ----quickstart_registry--------------------------------------------------- registered() ## ----configure_registry, eval=FALSE---------------------------------------- # options(MulticoreParam=quote(MulticoreParam(workers=4))) ## ----quickstart_bplapply_default, eval=FALSE------------------------------- # bplapply(1:4, FUN) ## ----quickstart_snow------------------------------------------------------- param <- SnowParam(workers = 2, type = "SOCK") bplapply(1:4, FUN, BPPARAM = param) ## ----BiocParallelParam_SerialParam----------------------------------------- serialParam <- SerialParam() serialParam ## ----BiocParallelParam_MulticoreParam-------------------------------------- multicoreParam <- MulticoreParam(workers = 8) multicoreParam ## ----register_registered--------------------------------------------------- registered() ## ----register_bpparam------------------------------------------------------ bpparam() ## ----register_BatchtoolsParam---------------------------------------------- default <- registered() register(BatchtoolsParam(workers = 10), default = TRUE) ## ----register_BatchtoolsParam2--------------------------------------------- names(registered()) bpparam() ## ----register_restore------------------------------------------------------ for (param in rev(default)) register(param) ## ----error-vignette, eval=FALSE-------------------------------------------- # browseVignettes("BiocParallel") ## ----use_cases_data-------------------------------------------------------- library(RNAseqData.HNRNPC.bam.chr14) fls <- RNAseqData.HNRNPC.bam.chr14_BAMFILES ## ----forking_gr, message=FALSE--------------------------------------------- library(GenomicAlignments) ## for GenomicRanges and readGAlignments() gr <- GRanges("chr14", IRanges((1000:3999)*5000, width=1000)) ## ----forking_param--------------------------------------------------------- param <- ScanBamParam(which=range(gr)) ## ----forking_FUN----------------------------------------------------------- FUN <- function(fl, param) { gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } ## ----forking_default_multicore--------------------------------------------- MulticoreParam() ## ----db_problems, eval = FALSE--------------------------------------------- # library(org.Hs.eg.db) # FUN <- function(x, ...) { # ... # mapIds(org.Hs.eg.db, ...) # ... # } # bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) ## ----db_solution_1, eval = FALSE------------------------------------------- # FUN <- function(x, ...) { # library(org.Hs.eg.db) # ... # mapIds(org.Hs.eg.db, ...) # ... # } # bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) ## ----cluster_FUN----------------------------------------------------------- FUN <- function(fl, param, gr) { suppressPackageStartupMessages({ library(GenomicAlignments) }) gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } ## ----cluster_snow_param---------------------------------------------------- snow <- SnowParam(workers = 2, type = "SOCK") ## ----cluster_bplapply------------------------------------------------------ bplapply(fls[1:3], FUN, BPPARAM = snow, param = param, gr = gr) ## ----db_solution_2, eval = FALSE------------------------------------------- # register(SnowParam()) # default evaluation # bpstart() # start the cluster # ... # bplapply(X, FUN1, ...) # ... # bplapply(X, FUN2, ...) # re-use workers # ... # bpstop() ## ----ad_hoc_sock_snow_param------------------------------------------------ hosts <- c("rhino01", "rhino01", "rhino02") param <- SnowParam(workers = hosts, type = "SOCK") ## ----cluster-MPI-work, eval=FALSE------------------------------------------ # library(BiocParallel) # library(Rmpi) # FUN <- function(i) system("hostname", intern=TRUE) ## ----cluster-MPI, eval=FALSE----------------------------------------------- # param <- SnowParam(mpi.universe.size() - 1, "MPI") # register(param) ## ----cluster-MPI-do, eval=FALSE-------------------------------------------- # xx <- bplapply(1:100, FUN) # table(unlist(xx)) # mpi.quit() ## ----cluster-MPI-bpstart, eval=FALSE--------------------------------------- # param <- bpstart(SnowParam(mpi.universe.size() - 1, "MPI")) # register(param) # xx <- bplapply(1:100, FUN) # bpstop(param) # mpi.quit() ## ----slurm----------------------------------------------------------------- tmpl <- system.file(package="batchtools", "templates", "slurm-simple.tmpl") noquote(readLines(tmpl)) ## ----cluster-batchtools, eval=FALSE---------------------------------------- # ## define work to be done # FUN <- function(i) system("hostname", intern=TRUE) # # library(BiocParallel) # # ## register SLURM cluster instructions from the template file # param <- BatchtoolsParam(workers=5, cluster="slurm", template=tmpl) # register(param) # # ## do work # xx <- bplapply(1:100, FUN) # table(unlist(xx)) ## ----devel-bplapply-------------------------------------------------------- system.time(x <- bplapply(1:3, function(i) { Sys.sleep(i); i })) unlist(x) ## ----sessionInfo, results="asis"------------------------------------------- toLatex(sessionInfo()) BiocParallel/inst/doc/Introduction_To_BiocParallel.Rnw0000644000175200017520000007356314136050065024111 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{1. Introduction to BiocParallel} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) library(VariantAnnotation) library(GenomicAlignments) library(RNAseqData.HNRNPC.bam.chr14) library(TxDb.Hsapiens.UCSC.hg19.knownGene) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Introduction to \BiocParallel} \author{Valerie Obenchain, Vincent Carey, Michael Lawrence, Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}}} \date{Edited: January 23, 2021; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Numerous approaches are available for parallel computing in \R{}. The CRAN Task View for high performance and parallel computing provides useful high-level summaries and package categorization. \url{http://cran.r-project.org/web/views/HighPerformanceComputing.html} Most Task View packages cite or identify one or more of \CRANpkg{snow}, \CRANpkg{Rmpi}, \CRANpkg{multicore} or \CRANpkg{foreach} as relevant parallelization infrastructure. Direct support in \R{} for parallel computing started with release 2.14.0 with inclusion of the \CRANpkg{parallel} package which contains modified versions of \CRANpkg{multicore} and \CRANpkg{snow}. A basic objective of \BiocParallel{} is to reduce the complexity faced when developing and using software that performs parallel computations. With the introduction of the \Rcode{BiocParallelParam} object, \BiocParallel{} aims to provide a unified interface to existing parallel infrastructure where code can be easily executed in different environments. The \Rcode{BiocParallelParam} specifies the environment of choice as well as computing resources and is invoked by `registration` or passed as an argument to the \BiocParallel{} functions. \BiocParallel{} offers the following conveniences over the `roll your own` approach to parallel programming. \begin{itemize} \setlength{\itemsep}{5pt} \item{unified interface:}{ \Rcode{BiocParallelParam} instances define the method of parallel evaluation (multi-core, snow cluster, etc.) and computing resources (number of workers, error handling, cleanup, etc.). } \item{parallel iteration over lists, files and vectorized operations:}{ \Rcode{bplapply}, \Rcode{bpmapply} and \Rcode{bpvec} provide parallel list iteration and vectorized operations. \Rcode{bpiterate} iterates through files distributing chunks to parallel workers. } \item{cluster scheduling:}{ When the parallel environment is managed by a cluster scheduler through \CRANpkg{batchtools}, job management and result retrieval are considerably simplified. } \item{support of \Rcode{foreach}:}{ The \CRANpkg{foreach} and \CRANpkg{iterators} packages are fully supported. Registration of the parallel back end uses \Rcode{BiocParallelParam} instances. } \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Quick start} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rpackage{BiocParallel} package is available at bioconductor.org and can be downloaded via \Rcode{BiocManager}: <>= if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("BiocParallel") @ Load \BiocParallel{}. <>= library(BiocParallel) @ The test function simply returns the square root of ``x''. <>= FUN <- function(x) { round(sqrt(x), 4) } @ Functions in \BiocParallel use the registered back-ends for parallel evaluation. The default is the top entry of the registry list. <>= registered() @ %% Configure your R session to always use a particular back-end configure by setting options named after the back ends in an \Rcode{.Rprofile} file, e.g., <>= options(MulticoreParam=quote(MulticoreParam(workers=4))) @ When a \BiocParallel{} function is invoked with no \Rcode{BPPARAM} argument the default back-end is used. <>= bplapply(1:4, FUN) @ Environment specific back-ends can be defined for any of the registry entries. This example uses a 2-worker SOCK cluster. <>= param <- SnowParam(workers = 2, type = "SOCK") bplapply(1:4, FUN, BPPARAM = param) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{The \BiocParallel{} Interface} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Classes} \subsubsection{\Rcode{BiocParallelParam}} \Rcode{BiocParallelParam} instances configure different parallel evaluation environments. Creating or \Rcode{register()}ing a `\Rcode{Param}` allows the same code to be used in different parallel environments without a code re-write. Params listed are supported on all of Unix, Mac and Windows except \Rcode{MulticoreParam} which is Unix and Mac only. \begin{itemize} \setlength{\itemsep}{5pt} \item{\Rcode{SerialParam}: } Supported on all platforms. Evaluate \BiocParallel-enabled code with parallel evaluation disabled. This approach is useful when writing new scripts and trying to debug code. \item{\Rcode{MulticoreParam}: } Supported on Unix and Mac. On Windows, \Rcode{MulticoreParam} dispatches to \Rcode{SerialParam}. Evaluate \BiocParallel-enabled code using multiple cores on a single computer. When available, this is the most efficient and least troublesome way to parallelize code. Windows does not support multi-core evaluation (the \Rcode{MulticoreParam} object can be used, but evaluation is serial). On other operating systems, the default number of workers equals the value of the global option \Rcode{mc.cores} (e.g., \Rcode{getOption("mc.cores")}) or, if that is not set, the number of cores returned by \Rcode{parallel::detectCores() - 2}; when number of cores cannot be determined, the default is 1. \Rcode{MulticoreParam} uses 'forked' processes with 'copy-on-change' semantics -- memory is only copied when it is changed. This makes it very efficient to invoke compared to other back-ends. There are several important caveats to using \Rcode{MulticoreParam}. Forked processes are not available on Windows. Some environments, e.g., \emph{RStudio}, do not work well with forked processes, assuming that \R{} code evaluation is single-threaded. Some external resources, e.g., access to files or data bases, maintain state in a way that assumes the resource is accessed only by a single thread. A subtle cost is that \R's garbage collector runs periodically, and 'marks' memory as in use. This effectively triggers a copy of the marked memory. \R's generational garbage collector is triggered at difficult-to-predict times; the effect in a long-running forked process is that the memory is eventually copied. See \href{https://support.bioconductor.org/p/70196/#70509}{this post} for additional details. \Rcode{MulticoreParam} is based on facilities originally implemented in the \CRANpkg{multicore} package and subsequently the \CRANpkg{parallel} package in base \R{}. \item{\Rcode{SnowParam}: } Supported on all platforms. Evaluate \BiocParallel-enabled code across several distinct \R{} instances, on one or several computers. This is a straightforward approach for executing parallel code on one or several computers, and is based on facilities originally implemented in the \CRANpkg{snow} package. Different types of \CRANpkg{snow} `back-ends' are supported, including socket and MPI clusters. \item{\Rcode{BatchtoolsParam}: } Applicable to clusters with formal schedulers. Evaluate \BiocParallel-enabled code by submitting to a cluster scheduler like SGE. \item{\Rcode{DoparParam}: } Supported on all platforms. Register a parallel back-end supported by the \CRANpkg{foreach} package for use with \BiocParallel. \end{itemize} The simplest illustration of creating \Rcode{BiocParallelParam} is <>= serialParam <- SerialParam() serialParam @ Most parameters have additional arguments influencing behavior, e.g., specifying the number of `cores' to use when creating a \Rcode{MulticoreParam} instance <>= multicoreParam <- MulticoreParam(workers = 8) multicoreParam @ Arguments are described on the corresponding help page, e.g., \Rcode{?MulticoreParam}. \subsubsection{\Rcode{register()}ing \Rcode{BiocParallelParam} instances} The list of registered \Rcode{BiocParallelParam} instances represents the user's preferences for different types of back-ends. Individual algorithms may specify a preferred back-end, and different back-ends maybe chosen when parallel evaluation is nested. The registry behaves like a `stack' in that the last entry registered is added to the top of the list and becomes the ``next used`` (i.e., the default). \Rcode{registered} invoked with no arguments lists all back-ends. <>= registered() @ \Rcode{bpparam} returns the default from the top of the list. <>= bpparam() @ Add a specialized instance with \Rcode{register}. When \Rcode{default} is TRUE, the new instance becomes the default. <>= default <- registered() register(BatchtoolsParam(workers = 10), default = TRUE) @ BatchtoolsParam has been moved to the top of the list and is now the default. <>= names(registered()) bpparam() @ Restore the original registry <>= for (param in rev(default)) register(param) @ \subsection{Functions} \subsubsection{Parallel looping, vectorized and aggregate operations} These are used in common functions, implemented as much as possible for all back-ends. The functions (see the help pages, e.g., \Rcode{?bplapply} for a full definition) include \begin{description} \item{\Rcode{bplapply(X, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to each element of \Rcode{X}. \Rcode{bplapply} invokes \Rcode{FUN} \Rcode{length(X)} times, each time with a single element of \Rcode{X}. \item{\Rcode{bpmapply(FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to the first, second, etc., elements of each argument in \ldots. \item{\Rcode{bpiterate(ITER, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to the output of function \Rcode{ITER}. Data chunks are returned by \Rcode{ITER} and distributed to parallel workers along with \Rcode{FUN}. Intended for iteration though an undefined number of data chunks (i.e., records in a file). \item{\Rcode{bpvec(X, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to subsets of \Rcode{X}. \Rcode{bpvec} invokes function \Rcode{FUN} as many times as there are cores or cluster nodes, with \Rcode{FUN} receiving a subset (typically more than 1 element, in contrast to \Rcode{bplapply}) of \Rcode{X}. \item{\Rcode{bpaggregate(x, data, FUN, ...)}: } Use the formula in \Rcode{x} to aggregate \Rcode{data} using \Rcode{FUN}. \end{description} \subsubsection{Parallel evaluation environment} These functions query and control the state of the parallel evaluation environment. \begin{description} \item{\Rcode{bpisup(x)}: } Query a \Rcode{BiocParallelParam} back-end \Rcode{x} for its status. \item{\Rcode{bpworkers}; \Rcode{bpnworkers}: } Query a \Rcode{BiocParallelParam} back-end for the number of workers available for parallel evaluation. \item{\Rcode{bptasks}: } Divides a job (e.g., single call to *lapply function) into tasks. Applicable to \Rcode{MulticoreParam} only; \Rcode{DoparParam} and \Rcode{BatchtoolsParam} have their own approach to dividing a job among workers. \item{\Rcode{bpstart(x)}: } Start a parallel back end specified by \Rcode{BiocParallelParam} \Rcode{x}, if possible. \item{\Rcode{bpstop(x)}: } Stop a parallel back end specified by \Rcode{BiocParallelParam} \Rcode{x}. \end{description} \subsubsection{Error handling and logging} Logging and advanced error recovery is available in \Rcode{BiocParallel} 1.1.25 and later. For a more details see the vignette titled "Error Handling and Logging": <>= browseVignettes("BiocParallel") @ \subsubsection{Locks and counters} Inter-process (i.e., single machine) locks and counters are supported using \Rcode{ipclock()}, \Rcode{ipcyield()}, and friends. Use these to synchronize computation, e.g., allowing only a single process to write to a file at a time. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Use cases} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sample data are BAM files from a transcription profiling experiment available in the \Rpackage{RNAseqData.HNRNPC.bam.chr14} package. <>= library(RNAseqData.HNRNPC.bam.chr14) fls <- RNAseqData.HNRNPC.bam.chr14_BAMFILES @ \subsection{Single machine} Common approaches on a single machine are to use multiple cores in forked processes, or to use clusters of independent processes. For purely \R-based computations on non-Windows computers, there are substantial benefits, such as shared memory, to be had using forked processes. However, this approach is not portable across platforms, and fails when code uses functionality, e.g., file or data base access, that assumes only a single thread is accessing the resource. While use of forked processes with \Rcode{MulticoreParam} is an attractive solution for scripts using pure \R{} functionality, robust and complex code often requires use of independent processes and \Rcode{SnowParam}. \subsubsection{Forked processes with \Rcode{MulticoreParam}} This example counts overlaps between BAM files and a defined set of ranges. First create a GRanges with regions of interest (in practice this could be large). <>= library(GenomicAlignments) ## for GenomicRanges and readGAlignments() gr <- GRanges("chr14", IRanges((1000:3999)*5000, width=1000)) @ A \Rclass{ScanBamParam} defines regions to extract from the files. <>= param <- ScanBamParam(which=range(gr)) @ FUN counts overlaps between the ranges in `gr` and the files. <>= FUN <- function(fl, param) { gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } @ All parameters necessary for running a job in a multi-core environment are specified in the \Rclass{MulticoreParam} instance. <>= MulticoreParam() @ The \BiocParallel{} functions, such as \Rfunction{bplapply}, use information in the \Rclass{MulticoreParam} to set up the appropriate back-end and pass relevant arguments to low-level functions. \begin{verbatim} > bplapply(fls[1:3], FUN, BPPARAM = MulticoreParam(), param = param) $ERR127306 [1] 1185 $ERR127307 [1] 1123 $ERR127308 [1] 1241 \end{verbatim} Shared memory environments eliminate the need to pass large data between workers or load common packages. Note that in this code the GRanges data was not passed to all workers in \Rcode{bplapply} and FUN did not need to load \Biocpkg{GenomicAlignments} for access to the \Rcode{readGAlignments} function. Problems with forked processes occur when code implementating functionality used by the workers is not written in anticipation of use by forked processes. One example is the database connection underlying Bioconductor's \Rcode{org.*} packages. This psudoe-code <>= library(org.Hs.eg.db) FUN <- function(x, ...) { ... mapIds(org.Hs.eg.db, ...) ... } bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) @ %% is likely to fail, because \Rcode{library(org.Hs.eg.db)} opens a database connection that is accessed by multiple processes. A solution is to ensure that the database is opened independently in each process <>= FUN <- function(x, ...) { library(org.Hs.eg.db) ... mapIds(org.Hs.eg.db, ...) ... } bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) @ \subsubsection{Clusters of independent processes with \Rcode{SnowParam}} Both Windows and non-Windows machines can use the cluster approach to spawn processes. \BiocParallel{} back-end choices for clusters on a single machine are \Rclass{SnowParam} for configuring a Snow cluster or the \Rclass{DoparParam} for use with the \Rpackage{foreach} package. To re-run the counting example, FUN needs to modified such that `gr` is passed as a formal argument and required libraries are loaded on each worker. (In general, this is not necessary for functions defined in a package name space, see Section~\ref{sec:developers}.) <>= FUN <- function(fl, param, gr) { suppressPackageStartupMessages({ library(GenomicAlignments) }) gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } @ Define a 2-worker SOCK Snow cluster. <>= snow <- SnowParam(workers = 2, type = "SOCK") @ A call to \Rcode{bplapply} with the \Rclass{SnowParam} creates the cluster and distributes the work. <>= bplapply(fls[1:3], FUN, BPPARAM = snow, param = param, gr = gr) @ The FUN written for the cluster adds some overhead due to the passing of the GRanges and the loading of \Biocpkg{GenomicAlignments} on each worker. This approach, however, has the advantage that it works on most platforms and does not require a coding change when switching between windows and non-windows machines. If several \Rcode{bplapply()} statements are likely to require the same resource, it often makes sense to create a cluster once using \Rcode{bpstart()}. The workers are re-used by each call to \Rcode{bplapply()}, so they do not have to re-load packages, etc. <>= register(SnowParam()) # default evaluation bpstart() # start the cluster ... bplapply(X, FUN1, ...) ... bplapply(X, FUN2, ...) # re-use workers ... bpstop() @ \subsection{\emph{Ad hoc} cluster of multiple machines} We use the term \emph{ad hoc} cluster to define a group of machines that can communicate with each other and to which the user has password-less log-in access. This example uses a group of compute machines ("the rhinos") on the FHCRC network. \subsubsection{Sockets} On Linux and Mac OS X, a socket cluster is created across machines by supplying machine names as the \Rcode{workers} argument to a \Rclass{BiocParallelParam} instance instead of a number. Each name represents an \R{} process; repeat names indicate multiple workers on the same machine. Create a \Rclass{SnowParam} with 2 cpus from `rhino01` and 1 from `rhino02`. <>= hosts <- c("rhino01", "rhino01", "rhino02") param <- SnowParam(workers = hosts, type = "SOCK") @ Execute FUN 4 times across the workers. \begin{verbatim} > FUN <- function(i) system("hostname", intern=TRUE) > bplapply(1:4, FUN, BPPARAM = param) [[1]] [1] "rhino01" [[2]] [1] "rhino01" [[3]] [1] "rhino02" [[4]] [1] "rhino01" \end{verbatim} When creating a cluster across Windows machines \Rcode{workers} must be IP addresses (e.g., "140.107.218.57") instead of machine names. \subsubsection{MPI} An MPI cluster across machines is created with \emph{mpirun} or \emph{mpiexec} from the command line or a script. A list of machine names provided as the -hostfile argument defines the mpi universe. The hostfile requests 2 processors on 3 different machines. \begin{verbatim} rhino01 slots=2 rhino02 slots=2 rhino03 slots=2 \end{verbatim} From the command line, start a single interactive \R{} process on the current machine. \begin{verbatim} mpiexec --np 1 --hostfile hostfile R --vanilla \end{verbatim} Load \BiocParallel{} and create an MPI Snow cluster. The number of \Rcode{workers} in \Rclass{SnowParam} should match the number of slots requested in the hostfile. Using a smaller number of workers uses a subset of the slots. \begin{verbatim} > library(BiocParallel) > param <- SnowParam(workers = 6, type = "MPI") \end{verbatim} Execute FUN 6 times across the workers. \begin{verbatim} > FUN <- function(i) system("hostname", intern=TRUE) > bplapply(1:6, FUN, BPPARAM = param) bplapply(1:6, FUN, BPPARAM = param) 6 slaves are spawned successfully. 0 failed. [[1]] [1] "rhino01" [[2]] [1] "rhino02" [[3]] [1] "rhino02" [[4]] [1] "rhino03" [[5]] [1] "rhino03" [[6]] [1] "rhino01" \end{verbatim} Batch jobs can be launched with mpiexec and R CMD BATCH. Code to be executed is in `Rcode.R`. \begin{verbatim} mpiexec --hostfile hostfile R CMD BATCH Rcode.R \end{verbatim} \subsection{Clusters with schedulers} Computer clusters are far from standardized, so the following may require significant adaptation; it is written from experience here at FHCRC, where we have a large cluster managed via SLURM. Nodes on the cluster have shared disks and common system images, minimizing complexity about making data resources available to individual nodes. There are two simple models for use of the cluster, Cluster-centric and R-centric. \subsubsection{Cluster-centric} The idea is to use cluster management software to allocate resources, and then arrange for an \R{} script to be evaluated in the context of allocated resources. NOTE: Depending on your cluster configuration it may be necessary to add a line to the template file instructing workers to use the version of R on the master / head node. Otherwise the default R on the worker nodes will be used. For SLURM, we might request space for 4 tasks (with \verb+salloc+ or \verb+sbatch+), arrange to start the MPI environment (with \verb+orterun+) and on a single node in that universe run an \R{} script \verb+BiocParallel-MPI.R+. The command is \begin{verbatim} $ salloc -N 4 orterun -n 1 R -f BiocParallel-MPI.R \end{verbatim} The \R{} script might do the following, using MPI for parallel evaluation. Start by loading necessary packages and defining \Rcode{FUN} work to be done <>= library(BiocParallel) library(Rmpi) FUN <- function(i) system("hostname", intern=TRUE) @ %% Create a \Rclass{SnowParam} instance with the number of nodes equal to the size of the MPI universe minus 1 (let one node dispatch jobs to workers), and register this instance as the default <>= param <- SnowParam(mpi.universe.size() - 1, "MPI") register(param) @ %% Evaluate the work in parallel, process the results, clean up, and quit <>= xx <- bplapply(1:100, FUN) table(unlist(xx)) mpi.quit() @ %% The entire session is as follows: \begin{knitrout} \definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe} \begin{verbatim} $ salloc -N 4 orterun -n 1 R --vanilla -f BiocParallel-MPI.R salloc: Job is in held state, pending scheduler release salloc: Pending job allocation 6762292 salloc: job 6762292 queued and waiting for resources salloc: job 6762292 has been allocated resources salloc: Granted job allocation 6762292 ## ... > FUN <- function(i) system("hostname", intern=TRUE) > > library(BiocParallel) > library(Rmpi) > param <- SnowParam(mpi.universe.size() - 1, "MPI") > register(param) > xx <- bplapply(1:100, FUN) 4 slaves are spawned successfully. 0 failed. > table(unlist(xx)) gizmof13 gizmof71 gizmof86 gizmof88 25 25 25 25 > > mpi.quit() salloc: Relinquishing job allocation 6762292 salloc: Job allocation 6762292 has been revoked. \end{verbatim} \end{kframe} \end{knitrout} One advantage of this approach is that the responsibility for managing the cluster lies firmly with the cluster management software -- if one wants more nodes, or needs special resources, then adjust parameters to \verb+salloc+ (or \verb+sbatch+). Notice that workers are spawned within the \Rcode{bplapply} function; it might often make sense to more explicitly manage workers with \Rfunction{bpstart} and \Rfunction{bpstop}, e.g., <>= param <- bpstart(SnowParam(mpi.universe.size() - 1, "MPI")) register(param) xx <- bplapply(1:100, FUN) bpstop(param) mpi.quit() @ \subsubsection{R-centric} A more \R-centric approach might start an \R{} script on the head node, and use \Rpackage{batchtools} to submit jobs from within the \R{} session. One way of doing this is to create a file containing a template for the job submission step, e.g., for SLURM; a starting point might be found at <>= tmpl <- system.file(package="batchtools", "templates", "slurm-simple.tmpl") noquote(readLines(tmpl)) @ The \R{} script, run interactively or from the command line, might then look like <>= ## define work to be done FUN <- function(i) system("hostname", intern=TRUE) library(BiocParallel) ## register SLURM cluster instructions from the template file param <- BatchtoolsParam(workers=5, cluster="slurm", template=tmpl) register(param) ## do work xx <- bplapply(1:100, FUN) table(unlist(xx)) @ %% The code runs on the head node until \Rcode{bplapply}, where the \R{} script interacts with the SLURM scheduler to request a SLURM allocation, run jobs, and retrieve results. The argument \Rcode{4} to \Rcode{BatchtoolsParam} specifies the number of workers to request from the scheduler; \Rcode{bplapply} divides the 100 jobs among the 4 workers. If \Rcode{BatchtoolsParam} had been created without specifying any workers, then 100 jobs implied by the argument to \Rcode{bplapply} would be associated with 100 tasks submitted to the scheduler. Because cluster tasks are running in independent \R{} instances, and often on physically separate machines, a convenient `best practice' is to write \Rcode{FUN} in a `functional programming' manner, such that all data required for the function is passed in as arguments or (for large data) loaded implicitly or explicitly (e.g., via an \R{} library) from disk. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Analyzing genomic data in \Bioconductor{}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% General strategies exist for handling large genomic data that are well suited to \R{} programs. A manuscript titled \emph{Scalable Genomics with \R{} and \Bioconductor{}} (\url{http://arxiv.org/abs/1409.2864}) by Michael Lawrence and Martin Morgan, reviews several of these approaches and demonstrate implementation with \Bioconductor{} packages. Problem areas include scalable processing, summarization and visualization. The techniques presented include restricting queries, compressing data, iterating, and parallel computing. Ideas are presented in an approachable fashion within a framework of common use cases. This is a benificial read for anyone anyone tackling genomics problems in \R{}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{For developers} \label{sec:developers} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Developers wishing to use \BiocParallel{} in their own packages should include \BiocParallel{} in the \texttt{DESCRIPTION} file \begin{verbatim} Imports: BiocParallel \end{verbatim} and import the functions they wish to use in the \texttt{NAMESPACE} file, e.g., \begin{verbatim} importFrom(BiocParallel, bplapply) \end{verbatim} Then invoke the desired function in the code, e.g., <>= system.time(x <- bplapply(1:3, function(i) { Sys.sleep(i); i })) unlist(x) @ %% This will use the back-end returned by \Rcode{bpparam()}, by default a \Rcode{MulticoreParam()} instance or the user's preferred back-end if they have used \Rcode{register()}. The \Rcode{MulticoreParam} back-end does not require any special configuration or set-up and is therefore the safest option for developers. Unfortunately, \Rcode{MulticoreParam} provides only serial evaluation on Windows. Developers should document that their function uses \BiocParallel{} functions on the man page, and should perhaps include in their function signature an argument \Rcode{BPPARAM=bpparam()}. Developers should NOT use `register()` in package code -- this sets a preference that influences use of `bplapply()` and friends in all packages, not just their package. Developers wishing to invoke back-ends other than \Rcode{MulticoreParam}, or to write code that works across Windows, macOS and Linux, need to take special care to ensure that required packages, data, and functions are available and loaded on the remote nodes. In \Rcode{bplapply()}, the environment of \Rcode{FUN} (other than the global environment) is serialized to the workers. A consequence is that, when \Rcode{FUN} is inside a package name space, other functions available in the name space are available to \Rcode{FUN} on the workers. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\Rcode{sessionInfo()}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/inst/doc/Introduction_To_BiocParallel.pdf0000644000175200017520000064215414154342072024114 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 161 0 obj << /Length 2110 /Filter /FlateDecode >> stream xÚí]KsœF¾ëWpd«ÌhÞä[±\vEÙV|qr I”(,k•ýëÓ³»92Ãj¥šƒ„´ 4=tóõLÏ,Ž.#½:À£ã‹³ƒÃcn"ŒR2:»ˆ¸Áˆ I&gðÑyô1&‹?ÎÞ`„ '4ÂH`¡•ÄJE ÜëDï^õ÷WpLìý’ŠG Eš°þæ'é‚á¸i‹ Ô jâæ2­~²£Äm—¢?û]½¼µççeyjOî/þ„Ü•ýƒŽ­ý®Ÿvõá±äÅHJ*¬Ý g1I‰˜Ô½-¯«¶YP×竬-êj‘P¥ã¶žÔÚÐPwÔAÁ é4¾(êìÔ¶XÚ¤e™—4­›ç𘱈pĸ¤¡k$4ƒ—¯ ;S?,‰Ó2oŠEBâÜZªâ_ÿ\$ðq^eWiQ=ƒŒ?U–WmßG©½®É¿, Ý 'œÞðKwÂm÷È×òÞ%’΃0<8s¾N*¥ŠÁÓìÁÓìi‡ÇÐZI»P ahF(¾‡Ç‚D„ #Do©;/a1Cû3_žm~þÃ"áÚÄoÒjÕ[ð¥WKÙ3÷¦äGû§Œêë›®UÊÍu?çY~mü¼é/0w.ôèäà/2‚¢DðÞM)ë¦'Îø£ºjá,‡j'¨Û6áZ´™Ž5ÑÇ„h"ºÀÚÕtߺ:<½7‘][‰D´ -ôÍ·O¤(  ÂPSqì³÷ åˆ>ø©Ðz»*2Ë>õ=Û²Mú9ŽÛùL+D „AàÍÁ›…Þ°#e̾]åÓs÷1Eò¨A^Ãm^³ ð{bn3nHÚ´0keÀ.óæ¢Ë¢²|>pæ)À9—øÃâÒ6'O3+Ò.ŸWŒ;\BÓEH§y|T¦Ëe¾œ/”•DJèÊA„•º2Å- [šDvȈѱ»êÛ¢î*¸‘ÑøØ]õm\õòìà¯K+pD"b(bRDȆ„gÉ®:@,Õ€¾’°¨É£‹ƒ·ßùŒÝ°Ià”ŽKY•’ðˆ hh† sí7Ù&Š¡£0÷mb^Û,&YšL:*êË"J‘ jl‘Al™Ç"Ш  X”–Þ b/ŒîòF¦ÉРm’0Ý"Î8Y͈™˜É$PÉ0»çuéõ$$šþP 0¶@‚ðÉÒB8âŠÙéOd„Ùòú¨y&@ôzC ÍÓÔÍ7ù¥?V …ÖY4g “C‹Š¥7ƒàeLÇÍÚã€A†µyó;~ÈÔ·;=¦ÛL­ÕÚ ((ƒ »3Òd!Âé°­½Òd Ê(Ûaˆ[LLòI“58» qÐHÍ´<Òd dRîò BƒÍÐ,™aˆk½S̲*5#÷œnK£p¶«e›V™×áD 8Bê÷/ÔOìÍ85żœ„Ø2 ¤Æ©WUWÒ4ãHµÐ¥…T-ƒðÿBzÀ¬S¤°FS4¹ˆRËøÞ|zW–TÖõ ðñgýŸTÄyÖÖÍ"!".¾.àw~Þ ÓjýÇ好 dsi›÷Õ7ygßxfŸžšà;ÿù–ñx¨‚":›×ä¶Z¢s–´\¥ÛZ÷¼²oŸ‹¦®®mÑ·W?Ð,àÖcR½WÁÀ<Ã˦±Èh=ý а´Ch,ëËËíð†'Ç7û€AøC†{™_ê¾z9 ”¬^Ù²;ÏTAç Â'›÷Jz¥Í¡ƒ ÜCEïoKÇæ³tÖò¹°L!ƒ0`ÚÝaV¡‘¦ÂU»Õ½ÜK5ð{à㥶ë4»*ª‹ü fHаˆ4”ìnØT$9›ò‰5¼ëæØu¹ñÐO6•Y‡Þ4u–wë ºo‹öê«4G”ñˆQ ‡b'ÓËqÍ@!¥#¢'+óåÆê’#ƒæœÿ…‹¡Amáoº\  ‡ö0ƒ¨œm¶\"L‡ödu“ïeY)çÈ0W9'H›‡¬¨4Ò¾á(ŸXP¹é£rµìF“úɨ‹þXTçùM¿ÖÛÏìd3Ac*bÝ3CvQˆfU   ƒÀn—›÷U}ë å¤FBÞ³iÖ¢ P©ÉȦý,—àüOâläÁ[Ž ÞŸJÅ&º¯ÔÙ°@:u‘úV³÷—ë·÷ÜñÀ«¾†sô4Ì.æØœ›õø4„§k;©º*Ûâf”žÎ8ôF€ –®>¡Ž½Cò=»0àì|œù)[yï&ºÔ«õ]ZÂqðª (±óùeî©>éäôµç*#Š-‚0àE‡toȽãÞƒ*|>µ¨Ëíswì è7ìË®òóUé·FeLǹF\›@ǃpæHf{±–Úæb¼^ò¾‰ÝdÚU­gž“£‚kaˆéo°y½ flþÝŒa,yð¦ |RÀ÷º$Ux(I}^¥å—¯›u—yU_0tÿœ§mºžès#ðƒ-e‰"ˆâÁž²ue¿E nfÜR!¶†|À˜û”Û™P9 é!(6%I]l×âå¥]†9gº D‡âÆ ÂLjG.|*ì·;õA¬åvf” n ³q2Þæ”Ø/#Ó~jL ³~æœ ÅáîXsh¾]&3Ý&¦áéïÙDâŠÌeè4jlÓöK–¦%í†tlã]ê8“QÒº<õºº¨=lk6K¯Ê$B„^5ƒÐK—«<2àõ`íoì1{¢ endstream endobj 187 0 obj << /Length 3697 /Filter /FlateDecode >> stream xÚí\Ýsܶ÷_ÁæénÆGß §}HÒ8m¦ñ8®Ò<$™ EñtŒy䙲ÕNÿ÷î yäeI&Ov¦£‘A,»Øýí¼À»òïÛ'_?9{.¹ú¡¤Ò;_{"𵦞âÔ§„yç—ÞÏ‹¿çu¹¤Á¢¸lâ:-òåŠ*½¨‹å¯çß= ü ä„z/¡\• ”òJ ðžG¯¾Eªbª¢¾†dè}•ñË% QeY’Y:nÈׇҗQÀ£à8€•Á ø¡°ã Ç ?ˆ ÷óŠ„„›¹ìæqÐýƒºýæüÉ›':<ÒÊNjéKνxûäç_ïž}ï°P{oMË­Ç©ðI=y™÷Ï'?tƒ0ú@÷%2ŸЧÔ>ÊÎË‹f›”ES-W,T‹h·[R½(‹(Þ$m©I\á:J³è"sÅu±¤jQÚÂζ´b65q±Ý5uš_Ùbjféì9Ȧ! Ÿ¶úòÊ6ŒDËYÛÀ·}oܾ~õå WµÔlU¯mé_iò¶$Œ ;öVTJŸ3á­ñCá”c“^m ­¢‹¬½HÊõ’,,oÛ(¡ØçQ~é™…š}fMOf"¯ÓK3‘PÓTɺq‘â*K®Û—«f»µ=¦msGŠ©øut•˜ñnàÒ<Žêäʲ—þ;B=ô?b!ƒ^s0 ›ºÞ=;;‹Ëz#‹rµ„•„üÀl¿'qí[ŠWgoñš\œ]Ã\Wgž^.íôÙ8wÉ×í¼ø›z;\ÿ@Ä¿ø¾¨êwN,½@9cN œñvB*[ŠÓ:±wNÎæ¦Æž×éúÆ=Ì´Ú­r›'벂Cµ¦Ü0â´¶Ê ¥·öGjN‰/¸jßx:ÝX”ÏXØ-°í.½uÔWZÏ=Šm“ÕiÜÎþ-Ãá 7)ýJžfL„‚1 mïNk0~· ‰qŸSÞ¾UÖ°0Åý@ ¸L`‰Gy ê%…1Êš PÍÌ-X|&Á4®Ë¨ªKp&M™€Óœ,þš–°ÚlƒªÙYÛdÇX·¯³¨G¢n³¨0H­Ç|Û.‡† kаÁ€m3ƒ©m£:¹tVUàZ¹›Ö`U)X`œ‡¨JlúÆgïû&igMe a)šk½I&”6Ø~E;pz›¼™ÏÞ¿e­±ÿ&q‘×QšW¶†…u™þ0³d*¯“9¬:'ãlEhÌØPw_dyg«ÐñL7ç€5úÉ»³”½»7 ¦AkBôÚÊ™ƒ²_"vå‹‹¨Jc¼e‹âÝSzØ'SÎ0 @õk P­‘olüÝõH@¤Ó¾´²ƒ¬ ;ö2$éŽZonpékñ.­ÑxÜØ¶ë(6:-Þn’ÜÞ]"J@QìÌ:Å*!ðVÔ™™$Lø<”CM©ŠumcÙQÖ' C‰ÐÖÕC#çÛ+W=´DõöÂØ· Œ™ Åâ'³Ôñ¹áoRÄÏv´Á’ĵ߶³ò£"À;¾ùô 18H–€®æ­ãÆœƒò€ô„來õ Ü<’S¬Q¢Ä[#è~Ð DW\c(˜ãJ’´_€©ÒL÷1”›‰ç‰)X^ä€'nB¦yx’*²ô2*'ãH€3 ÃŽtÇó0$Ї8вÉ’Ä犞TD@RQ2ä¨3g°¤$ { £ýp–ï…³ãг'\ûýp!P&rÖa;ÿaŸžgþ]d.Lf݉¶·:Jˆdy‡Ô­ï›¯³À—Z|¬Ç¤ƒ™QŠ>ƒ f}\÷bd¬€˜×Ö7y› ~ÜN»FíÛÉ»´²˜Ôô5ðCöµu ~¨‡ÕΡI© ip£&ÅAp_Ö%µÅ(·7ÖÿÙÀÙ4»q÷ï’¸A(lJ©kn ƒ^þ›fùuZù*Ð'‚U4IŒGõpL‚7é -ØI<’Ô @gHÕôŽiimÙˆ§Í'’Dœ°ÏÒ”. ÖzŽ8šÑÃEÆnÀÑ„†.ÅIE„$Ã!?Sú7*ü 8М.IR¡”î>Cùí,rå0}œ®\Ch_«QØbLJÄbw ¬™}‚¨¯ñ¦Hc×(roÙ™619¤òã|-óéíu“Ç.úš.É@BâS> Â:V̵ÈÅ:J³Ý †ÁͺÈ2›-ps,×Iž&¹Õ ¨)®“rôÞoea4-D•À„YãZØÎ@!Li«ÃõPØë8/ä­Üx*äÞ¾‚·Åäö@°Âù09I”N÷/”Gw²Æ >ê«nËd§H§ž=.ø !̆Ø#ôiÀO=¢¦!„#Ä'¡œ{PÀ– –Ș§’ AÖž&¸‘hzÀÒ|à)2F†M>(c>N+# #M?(×~@d4'ü@’T’µûpÈÚï·¤yUGÖ–£]ºLÐJå‰-Ù(Ül1¯Yo\TfëÌö€ Af@£¬‰Úy0žBúLó1¢IޝÚìøSÈ„êóÓžÑîH€©tÏ’÷}x—,WŠ;\bÚõ@‹eRωíþ$5Äòf‹á#tRÚJ“ã„«AFv£Ù"š²2ä$Ü•nsý~Ùí >µ`$Î’(ov®5£œÁ%­¬_YQÀœ6î’FYc*)Ìt»!EëØñ.K (¬ÍÄpmàhf&ZÀÍu×íFxâêŠ6emÑì €ÅÃaò˜:IZ I†Ã°¨ŠÚ©¿ØeÑn²`;”¾dLÍlIܼ0µËnn³;0&6µq[RvJE@’˜R)Âv:Eà†ÁN©H’ô~Š }òÃÎÇ‚À0ž@„&;g N  H’»ñìQ­*€ý¼Õq‡ Ý~ç|?o+¨™sa­vmïö » nOR±ØâÀb·ùÿ‘ w¨‹±fM’†xZ†…”ÖÓeà$Ø Å›3¥¹ ‡,%å”8Æ`ÄМöÐl€ÞuŸ£¨¾õ¤(Ð]¢Ç.¤=ADAè “Ò«7eјӉ€ì:胙¨KÌr¥ýɬŒ7MþÚ%±ÚTÕè¨"´jQ§îQç§ ‡±k¾¨âMrÙ ø}6ƒËÅOæ>²) =6Gøh˜®„ “K„ë6Ê£+“þƒB—G„>"[uŒvR;‹ÙJjº 8á+Ú9¹ˆêxSÛ(¨Èªœ™Ã„Q‡vŒü^\XáǸ+v•ôIM›aex¥‚°¨½õÂpj?š858 Æßl¯]˜}0¨¬Òí.s™¦9Ô)dN N‡G麞õ#CÉ|†ã¸ï*O’“Ü8’¤¾Tº= Øž›€' ²âü€§2ÑÌ'!òôÃèà†™ÁÞÞì§¥¯ú#ìw=gÊè¹Nå1¢‡nÈêVôOúøý1l\?½}·n2c ~¼ÚÐ6ÀÓÅ+Üï¹rÁ½±$nŠ„`øô؉†Èl4±ÖÚño leüÚåBr·³ÓTIõ¸ Ü~è ¸ÙN=ÈvOƒFß¼Ñ?”Ðø#ÎhÒ>zû¡Icü€ðµýrxÂ7¦¿ÅŸ4`Ä=`ÔðÛM3M¦í¸Ò(“7MZ&/¢mRíð¼ö¼ôàÉqIÌ®iô•–Æè9¾7YÂò‹¹zz •%u»M6/©¿Þ¡€žž"&æ§Sµÿ~–~õ9¢Ñö#É%~øê~Lk ,¸/C5!nðç³p”Ö­ ü…üÎ5)ÍN”ñÐÃ*É/7ÝzaatD¿f龓ñ—+AÚTøÃë?À5çÀpZªöw€§ƒc<Á£»-ìÏî•îLX‹,ºvîë\÷O ?ftS6øÁS.ñ“Iå­`ƒMÐ{õPã  ·7 endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 808 /Length 2488 /Filter /FlateDecode >> stream xÚÍZmoÛFþ®_1àºä¾ï|Å9ι5Ð9;î.õ…fdžeR )»é¯¿g¨•弨fÏfaÀòJäìì3o;3KJÊÉ’ÎÉ‘ñÉ{’9EM CÒâƒË!âC*פ$)£gJ‘r‘ÏÇàH;܈¤£cŽF*ÒšŒÅ`È‚“ödÁL²Ñà>9mfF‘cɃ‹qä5°‰sdsò5i SîYOÁcKF'gN7à9‹ô˜,óh œ¥ÔÌ£•`Ž1b„L, ˫Ȍ ’çqÀO}?Iü4æ± –àgœ4e Ld=Agѳ¾0‚ŸuAo£ÉÈ«`’’]æ9)ckÔÍÀ¡EÅ· go#‹@*0O)¡RH aH+ÉRAíÚù™„m´Å/È XÄ!wƒudóÁFFæIy2 j•°“ÑÄZB÷šÅ†­œg¨Ëΰ—‰¬9a?h—q[ź…ˆÖä¬ ØÅÂ$îc=‹ÛÙ«²ºm„ù$Œã¦„uÔ1ƒ}£qð;êu†'CÎç¬DÌ ¬uÓçaã†^Yãã /a9±¾÷AÍ$¤÷Ñ:‡)á,Ò[8 …ò‚ à “Ç2À!ðê:æðf °Q±¥àQ³ºáÑZ=Ûۣ섲šw e¯éEW}ÕÔB¾¤ï¿Ÿ½tT÷ms¶®¾¼“\mÈýs]Ôõó¶¿›Zo¨5½;/éUÕoçí|¹,—¼ZÙ~œå7&¯?ÜÌßÂÃ:Xλ®ì¾=á³9·faÞíuy¼ÃAí8(jËEÕï¯/~}YÕ‹¯9RUCuqºÆ7l®ëáêÔN |¥%.›f<¡+6mõ{yFóŸÅç}Iͪlç£WÙ¡¾›UÊ«ùr=0¡²¾ªÚ¦¾,ë~ ?½ã§émÛ´t|KÖ!ã\6‹¾aev¬ ýÔÝÀ¡hÖìHÝÝ.˜&ú¥+©˜w˜ÈlU/tpË’.çÅyU—Á4;ǾÒaÓ^À"«¶c`aº®úsz³^öUÑ´å(_4;_¾" ÖìŠ5áugåªÄ¿ºÿr•“º¹¾gî7¼íŸÑySP±Y€ù_2ÔÕNÝÃhÕNìª'°TÙš·C,oÞ=\oÉõN%ƒä]q^ž­—ßvŠ/VÕ;´›f`ô]…¶U1f¾ÚÍWt|ÏÌ4Çnè-í×óå§ß9eÝ\VÍû9L:ì.MÍ;qÓÞÍÈm9ö2:+¯Ê%Çú=à7<ÁG:\8ª?6¼¡}5ã=R~NÇ”Vý)ÏÙÛ›eï>­JÊÞÎå,;hsuß!ýI¦œeÇe׬[øß‡KoʳjþªùÞó‡RÊGu:Ë~h›õŠÒ’ïÚyÝ­æmYŸ(;¢¾]c•Üy]^UEyüÃ+¬e[vq‰šgà½_× –ÏÓ•k’aÌó4ê4Ú4†4nDãjd3&:™èã7c¢S‰N%:•èT¢S‰N':èt¢Ó‰N':“èL¢3‰Î$:“èì†îtö™ú¹gÙ«¦=+ÛA¯ùiöcv”¼ž†¿S6FÑÓ{•ˆ€çt.rÏ¥ 媡­ÝÉúC¶ÙOU}‘íïí ‹dûƒ·d'Ù/ÇGüyñ¾ªÅ›¦]Ìë¿7Ýu¹ä¬w!på%ðýÿC %J)ÁbÒ¢ŠÂ…ø ª<%³ Rä¨Í´B*CÙ… ODëÇC<ïûÕ_³ìíØfpÙj^\ ¨ºìvMqä´ ‹”M‚ð¨E­Ò"pO¬P«#®ÐíÓýµáS#1+¥r.¤D$­pæ~$j$Þ nä”e‡C÷¥°ú~$úN$ã–6F8ìc7KË\pÁ¾[úÙ;”5Â;4V6ÃÍ6‰¶Äx”f¹û¶ò¾.éŸ çÐÙã„åFÔ9¸ïƒMÍ]þ}GÃðä˜4Œl šZ¨ŒÛT•E7ÓûüÖl2 É-'¢0ƨ±³é‡Í¦¦Q6RÎvè…ÅÞošèóG©HMd6€W“–˜"°AeFÄ4ž4oÛ¨.T ƒ5FÌHLzLÅ:ö2å@ž1z¡”‰ÉL²¥kƒš~<¯´ãtîÝÒÍ$¦5üS+Rʈ€úTcƒÊ}|(ÐÌTNÍ…:P+¤ì]ù[ÿåIÊ—YÁuìŸyÒ–UiLDv{=Y—Æt`dÓÁ–MG>ÑùDçOt>Ñ…tPÒTHëý؃'‰$î ´„-0Y¨?·èÿì#“‘I…k”ä²åG¹š“9‹Äþ0âÎ ÚïVmó_°0_—²«ª¼î²«ÅùÛ²ýØ´—üÀè ¹\­ûª^ˆóþòqRp»Â°‡ã3>«2¹ˆÃyŸÚò? D)Ž÷ÇŸI‘4ÿ·®n®µ°2~DŽì=ØãËUõ8°Þm¼!5rë-Oörûpèq«h=r»ó¤ynÄpär^œ?î”Õ¢ÁÖ–Êo¸çê‰_pÂÆ§Å»zŠ cHª–l^Å/`¿PøÀò =ùavˆ=kvÄÞÄ'"‹18…üXÀ“ (óð,ˆA'ÄÜ|ª‹*Ò¢k³N¡–2Ï2w‰EŒñÛ)ÜÄ!ƒðÛ1"jõ!§¨3|ôÅ¥¡AcçAÄŸg]¨ÓüR“Â>Œ¨òÈGA^cöOuæ}qÞ7Ͳ{œ[(ôzY#uð«q:Ö¤-7'ñùeo¿–àj‰øãzb¸UϯÒ4íãô+9Ü4¿ˆÀ›Î•\Ú‰wŠÿMåð endstream endobj 196 0 obj << /Length 1489 /Filter /FlateDecode >> stream xÚíZÝSÛ8Ï_áiûÌU_–íÞÝt€iï ¹4{ }p%ø0¶ëRþû[Yr¾$­sÐa"K»Ò®V+é·kcDmbYx¾È&‹uSôO[Ø’uÚ:´^ŸnyÈTXƒ±ecäºÔr8E”0k0².Úïâ"ëPÜNFeP„IÜéRÇmIçËà} #ìqBalÛ®¥#°ãháëI Hµç¤:¹¶•*yGaô: ·ýÌ"i9Fe¼ÝDh êsEŽڼ5÷ñ õµE@)l‘Ún ì&× ®[ªSϱ˜<×ʤ5ný½µVÛ͸Inæ†güjkÞ対q,‡XòlLÕ{ qxAØöôBgræ…ÌäȸÒöªÏÿNyç$}Æ6†²³œf¸ÁEºlÄÌN{ù²Ó˜¶_}(£" ’Lö`\+­+Væ´YƒÈÏó7úy³^ÄÅ¢=LüLM¿“ÿ>ÿ¦Ÿ‡i|“dW2«åSBáçWu+ž¶þ› cÿZšö£Þûó£$GÉd­àâ2“ùe õÝÙÉù”˜IzgY’ò ÿéøIý³Ó\Êz¼™ ðZ&eaš©íQŒgJ³dŠäC?›WóQò{šdÅ$J†~”Ïi8vœd<}{—òb™Fa­ÂÙáòAcXý;Q©vžæ-nÓzýNÎûÞÑñ'|õ1Nn¶rÕõij—>*/ÝdÈûÜT4å¦Ïßîä¦2 ýh;G}¸Ë–®J~ÐUų«6છž¨Í‚7r_ŸÐyx :«jß&ñgÌø¤Ìd§Ë©Ó¾íP·”™®õu‘ƒÅ+°®*Ö«Òn¯ßQ½rÝVæf_©¯X2@e¤uûЮº2éZ°¬ÄP±ÞÖ²‹"Œ'º’¤*hÈ×Y[ù9ŒÇkûãjŸ«ÇâRªC’6Õœkz›.ñÎaϵ–Kcæu¤ëa-—õR®!-c~Êâžm1‘  |ú)Gœº°|UT#þ]t\EÑJ¤Ã9ˆ¤ RõaƒÍ\óçdÛ ýÊœˆ‡§ Í D gqNã0’ aßÒŽ qˆ MÀ¨1’Ú+$š ƒpþ~CEê:ˆ2g9TKÛŽý)ZÔãÈõÌe7w†4&6-c5HkRÚ; Øtñ@À×2)ä£]—-&²ßuÙ‡§ØùH]¬º„”ùõRè•YjÔøƒÔÿ{¸9~>"üçR*Ld{€á~$) ±ÅL»s9ÙN^Ð3ø`ájrvIK›Á]Fë!ÆelÒÇJÑP9Ì}K®ÔpÂMX\jRœü¿øŽaðEÂ,*àdŠ…À„N3PHIdî>á!†¹1}ïg;†ƹö^'ÞÀøâ„z‡?mB€–¨í¬LˆW¯š™‘hX,Ψøá¾}P¥x½zèÍ3)¯e\h—×xüHŽý‚ž¨ÐõYÈe¶ŒŠ¡º”s„9[ ¥ Š¡§{U°îöÞ{™‡x½¨Ã4òÓ4º}¼øjó[|§›µòE¯þô@ož<Þ80)«OgOqÇßÂ,‰ÍÆI;O+| ƒPEãj¤Óó+×<›vÍ«[GRõˆ«ûhãÄäœÍouk2Ö¥>*¢ßf† jd¡ÌQ§Ë…×\VèBµ÷¯SJXÎ=ÁiòI¾N0Ñn•Óâ5$1 ©*Û\ñ˜|ôS8h]1‡­œ³ØA¶ý ¼‰Þt»ÝyÐnQb.ðtטoÍUííß» Ç««oÑžÃÕMÄTvk:dÕ¯Aš¿Fö`*õÒíñ.‰IPgUȬq&ä…:É_ì#Ðìî_ºÊžaâ/÷²Óz½Ãi Ûôf¯ŠêÖ}BŸe]\/_îûpèæÿö'\\Ð¥ÁÅ]ƒ#N8½[žƒ…ïF¹ ˆ8ŽÕµ rÙØË Hö?h’:a endstream endobj 207 0 obj << /Length 3806 /Filter /FlateDecode >> stream xÚÍ\ÝsÛ6÷_¡¹>„ž‰Pâì=];mçn¦Ó^ã›>$™)MÑ2¯¥Š”]ß_»X")'qjRîCB±XûÃ~É1š/qÿ±_ßÃãçï/â4-¾¿øúêâËïŒZ$,1Â,®n:fΉ…U‚ .W«ÅÛèŸU³¿q´]²¦ØV—Ka]Ôl/ß_ýë"fq¢¸€±u¬…§5±µDüñ&˜PÕ=ªV0§ LÉÓûºØf?]Ê8J÷iYæ%Ñ SŽ?Q3À÷ÞÃ÷>­þìÞß^]ü~ÁaRñ‚·ëf¤aÜ-²ÍV+¡OìÂf³Øç‹›‹öœ>‡_¿¡–/,Kt,piÉ”LÂY¬Zà/¾¸\šXDoßÊ÷ïqua®KÎá=êÀßS3+ÿ@× ðV(˜Pá4Í·6Ý êNÒŸ<¹fÁ-H‡V¸¾K-ࡘ²Š˜“Ãû,z‹·Kžp]ÝæÏ“·¤?kk@öìPà Ü%‡ÿB7É%† Û4É÷7^¼³|$Ú†Úcb¨áÔÛÅðíûx±‚&8€L&nqï;n:ÑŒåâ å$›Ex Ì+&•=@ÕÑÎ…óÁøÄ'D[}S¦u׎L¼x±ö¼€ Éb!:6&e%5†=?ƒH?ÖÔ‚67‹ñ³…GšÆ§N 5È0—²Eo`U”r¸›Ò;ðþ3sla9aZŲËZ *sÃ# >%¨c\è1O •V¸™xBš0pÀÔO€)Sñ$%“ú”'8 NÏÅÐ4ñˆ§´œŒ%`Å)qÞmRdY:"þóy2‚Å–ŸˆS‚š‹' )ÅÉÉK7ϸÆúç‹Â’±Ò¶; 3pbæ9˜bO”E-Ü_ɨfܺc–”Wÿga I±ò4%(+AiÄ,;G@)AHês4!$ #Äy÷H*;Ú£) ”0íNöH€Ê(;K¨÷IurìZD Øòåw¢o ËPÕ šrQÕMZe Ò-¥‘Q¶­ÞÅR­û+T´*à]æû¼j¨Ç.½. F³ï’ߥå!%£{äÕ]±ßVø¤f—K-uôÍ>‡ÕÚ[iK§à2UCcnëG ›ñBXÈcÅ⎜C„¨sœJ )P²Q­I‚i·Ï×Ó! £NXš9€¢ájÈQQO…@JÚ1C³ŠˆwfÈØ—ïbÃ?þQa“0Û£¬­Ñ­e¢:úõ…»µ°hü¬K $®ä§ ×·‹øk»„<*K@ Ý×´œÍmNmuºÉ©*ÛÂÓE«ðÚl©Ãµ¯ •‡:_QuQQÍó°aˆyØ¥qj<†S’$CT»/šÛíGщßuÓœ,Í ^hy´¼\òè~¥¢É3•ˆ£ŸfŠ âúð¨¦þeQ7~Â~DœV¨>ìv~d¿(ûÇ]Q“w§bÿ²¤Âö†þS¼ÆTôCš…NUý—¢ZyX¾¤ó?²|×¼ì¡ úªJb¦À¾8D}U%‚)Îì‡éô†îcÎO8š¡"(B†šbºDzØÉ1?J2mÅ\WŽeR޶(ÛîóOB‹BÒ-´ÜßÙ-è0Râ…Oå„j¼X`Á ¶UùpédÄ&p0GýÉR˜(¼íBˆäàñè^ÇÏ4kU“N'úÄB1éÌÍe^¥×¥ç:ªgøŠÚ–’±‘ 5¨ÍôíL¨Zµ õ%%¢«[ÚЊâçÛÔÃ9‹ ¤9ç‡A”ô¿›CI‹}›‡e¿ßÞ`õK_å÷T[gûb×ÔƒAE *n]oÔ2±}•_ÖTìã®à‚Y¹X Á®þòWEÌ™i:‹W.ܱdŽ›é57 ê·',Í ® Æ 9šPuSå8Ù£YU7Ì‘£=zšê&a>z° :ÖCT| `•±`•qAÅÃ/ÐX*€ŠS&ú1têÙB¯_Ö’Ad¤ƒ;$¹f–U: ºÊô& a›1Kó RTF9šN$Ü›ÖìÑœ‚$% +G{ô4A²˜wÓ \ª»´ÉnÑ!Œ2Ñe`½ÐqW0=ÎåÏR”ã³1‰¡´aæôlÌÉPLÆGc:CÔÝ9Š04¡¬Y'}†ú>ª—áC~Ï…äT³’noiÎbÍJZ°rDò9&Q‹3dÀ,©n`Í`Å$LÊ™¬ãú]|=Ôd @qs(›bWú‹ý¼»¶¦F —á |+~Uæíˆ›Ý¡É÷=S6ú­²_€a‡>æô.-JœÎkø˜ÇQCvP¬É‰+rŒcÅf[7TBsê],MVP`ªÈœîež¶Ýšýö#×ÛMNm÷è[ököÆÞRϾÅVü/ÐëVM4©Q‹Z>–¨yt3Kžà›wÏûWUÛ†êë‘"GÍ~—9½sªD$áKŒÔ4]nãK)nBûPœ”xråY7 iðò»!vzzÅ $Ë yÂÒŒŠPL@‡p4¡âr.=fhVÅMa†‘rôTçµPI‹IÛëÿæY‰, ¿ ta-º^ØÅПÓC ¹Æ@•tñP|àÝã<ë|_¤%†<˜œöÖ6lA¸ö¡H"šïÓà>Áïê&ßÔˆO‰4ìÁ)9Ž˜É£›D˜zV‡M˜r;Ü =ï/IîAÆ»ôíõc)áùDÍ56„z*¶Þm”S7h[—ÛkШqçY~Q,”Øsü»ì‰Y ’„#$ã6,ä&cxëž?תkÏblÎÖì¥Íc gÜxçÔ†¤7Qìp×yóãn2X² Ü$'L£ d¦@›ŒÕˆ)”Ü翵ÇãoŸÊUZÓò}o’5/ʯ1Ò­¢â†P ­r ìDº¹MªA? CÓÙ…]Žüd‡œñA™ E2a†; öW_­ònûoP‡iH˜¿èã'Û¦¦ºžkï*ØäDËñü4NÍäo@ Šý]XN¶Üc;•û¿Îr£ò+ô9—(Z«Ë->ªˆøµ wÌßñF‘<ºU$RÃ[e¨hb¸õ¦‹Ôu÷„T¨IÓuMGeÚ÷À>ߪԾ‚® ßÒ*´½<Î^8×/8‰„QùÉ9ÃoŸ3WømÌÒüá·GÓ‡ßF #ü6àè©Æ§7ïP{Ñ&zRÈJ[½¢ÚW÷È”åu×;Düµ^e` n}¿‡å¶Zf·iµFëðµ×ùS>«¦Èjªy M£lò } ÷6ÚZ³Ör”gŽI[KšaÔxTøp ¼Rè_¡žÙP Ê®ïØN3 lÌC¦vݤÄgèI_ºè.ß"yÏɆ-è.ó=«»-}ÚNfx‚Nå3ã.³1öê„„Iw¹_j¨jöÅzîp„*Q· ; ‚»>¾ÃíÜ:!µ•ªÍp­»U^Ü?kÙaàu^áÁÙ{¡KËPI3{á·Óî…õB`C0ú~i¢ Uûßì˜ ¯e³]î‚*UdMœr¸øÈ³XÀÙsQ·D¥“n…ñÍù½PôÓ|”Ûj½ÜP­<4aåã°n€q^бÖk0* Ö²n Â»ÂtîóþX=²s°ÍEÈtÊŸ2_¼ Vlk±Ͱn7hèvs„'8å«UÑí&|éƒ:€Leý1zñ§Y‰ç4z9hp ׳½c–æ7zMoôŽ:‡Ñ;àè©F¯æÇŸN£¤(í/å½Ï›4+JŠ> stream xÚí[msÛ6þî_Á™~¨57SZ¢$^(R%©¸þ÷Ý@J¤”sl“r3ÓÉĤð¶û,v»Ë ^ž=¿:ûþE$CLÄ¢àjÈhÍ%a”WóàçÉ«¼.ÏY8)æÛYùù”)=©‹óÿ^ýx’ÐÊ‚ÈPjO…J%PøLÕåK¤*÷¨*F´Œ€%KïyZÌÞóp—q–%™£ãY>x>¾ÚG=¥šÐ(˜ ¨¥ãâ£áqÊ„ÉÐè ÿ´W]b/àhôŸ¶×ñ*èuquöë²a@ \†Ò‘‘$ e0[ŸÙ C"Á…‹³ŸÈ£UEEŒ  IòPɈhd%ó>/nüÜ?W„…¼‰ "˜ ’u1½][w¦ûûl_E'†ÓFEÀ¦ /” >0:÷Öò~»Ù€…èIqÊ:™ŸO9ç´|‚J㋘l²¸^¸FëŠØÃîPŸâl×É£ ìj‡‚ƒ ±gh–S°6ø-®'¯†5CL“<¾Î#ã0ož¸Ÿñ¬,ªÊ½Wɧw?æiU§ù¬F:=)Œ/të .]“ ï´ÅæU糤ú†–ÊŠI¹gÂIßeâœ"H7L(B9>¥ ÞðgÅz³­“ædEÑäj•ªIóŒÝ£ªË8]®šI¼ñBT“rîÛ&`MÏV®dÑpƒ?’ß’Ùä°t?7û`Köĉ?š{6n°Fsö0ì¤Ó €µÅ„RfçsW‡ðyWv™— -âYš¥ušø&ŽZºLs`ñÖµM×›,Y'y4ã客^ ¨µÌ(¢¤n¦¼Ê-+7w˜«Oî{lâÙÇx™8#›rF‰T¼+±¦BΓ°8;­‘Æ­3eµáÅp ”„Wy/L‚èH5=~¹P`~óê[ïXìü$ιTÎ ©úÎU€ÙeÛ¹U:ìTyð›%ºÕ|yýî•ë}*gq˜µ—r"#ÖȈÃþ£¯¾aHÀeœb¡jß.ýšð<®Á™ µú °ÝÇ$€,–¼‡©.Ьºs_­£þ ¬(Q†v—Íg›M–ÎpYò–\¸g£ÄN¥oÒzåÊ›E8μMÌVÉ|›5ê~’UyoI}øªÌWe‹{·ŒàÏkëØ7q½Nëºu¨âŽÄ|[/\@]I–:·á¿y1Š{aŠÁ•%îA‚IIMObKÞ?HCq=sëX±‰Ë‡Ù’/tÊÎf/“eê´‰É5 Ý ‡I9i–5W_¡åãû ±Õȼ /=¤$nœîqyrF"I{á†ã® ùðǶJJë}cx¦a4`XßDJ JCÓÇ«•7øÊF•Ò E»T ˆ–œñYãð>‘2!ˆR,‚IÍO‘=3I-DB -w»C­ß,‚¬”ñLÂn§Œƒ)„*ÖÅþf0HJþ³ ŒA„(JÞgƒáZžvŠ´wЛ¢Öü‰‡¸9x0Ec†ÂHRDJwÇ–‚![§ ™nãhtž›~qãw‚ óh$Õ+¾wëŽLý¾+`! [‘ & 5* ±R#vR½W÷C›RÑ©ä·MQÖˬ¸Ž³jÃvØEQÎ’—ÿøìGå4OÞ<»£5°¼Íê~‡q}îñõ xÿRu<¾.0ÔfšÙ¤IAL™ø:q;LóÉ*þ”¸ñ|žbnw€ñ·Í–[Ü©õÓüCÈå6Égiã,]éµÛî„‘R—¶à~±a“„,‰}…¨ßo‰Î Wº¸µ[س0K,ß®ý0G·¦›¬à—™O­Üþ¥h÷lŽ„/7«ÄgH«I"lAüĹä{(œCNÆNÔIÁ%dv;Ä©Äv¸8UDD qiĸ(*ûˆêt0@’bz0Gv¯d¬|Hò(ê"šer÷~ t4²¦õ¬â2©õAÀÊ9ü¯rô ÌÇ«kXXÒž>|M!ëëGóߨul>D™ŒÞß6CÖÃá4¸)q3Ô+ÜÑ'˜”Ó¦ëatîé2‰C£ ™Ð&_ùß3™8`>%—øl‡ö¸ ÛÖ·›fþ^¼½ü×$ y¶Ë"îÌñh*¨‹×SŸtNŒ„Ëü±$vùž|w-a•d÷¶‰—‰¿º€ÃÛ<äIcA^a+UœDÑIΤÁ©’$j´æïÿÖ\`/øç*"!dPHÃÿ\K¿LИÁ?’Œ¤î"ú²àßÝ"Ü?z{ô:d!ÎÅXÞ¦\á)[Ö„sçBtÂ>sŠþªOf’“ 0!€©ö*Èû`>ÄKz˜Ù6"]xO…"œ*'Ï2Yv1LëCHx]GŽ iFœv1µ§&‡Ä(Ñ‘éCb†0*Ƃġ0l¬°½ ñ!L KÑh—Á?ñi7ŒÝ‹êKÔVѱ¤­ ) eWÚCwS|3sRCÇ ŽPõThÈón\d¥9©¥#M¼8ÔÁ4à‘7Þ¯ò¤Ó„4•]Hžy3®íÉó)½ã¨0q zm<„ß⌄‡—éÿ_¸¯‚ ŠÙ¯f¤Q{·‚˜ÄKö˜BÚÛÒ¶¤ô¿ xZŸ¨À'âdE ˆê$ŸÏh˜ Æ«Ã!jp‡F<‡ Tžó¤AÝ!'S¢!ðú¹¡@CúBwkõ„3Ä`‘§‘èÔ*Âï#óö’”ŒõuîŽÛ?»oFvžÍ»¤?|ô'¢²9À„Êm•”ßú†¾Ù? i{/Î)ÞGUîV'ŸÌý·#Swkã !Cg“Ç~WÂŒÆïJ”û®DÙïJ˜1ÎSÝÞ}ÅOç“Wù<ý”ηxÒ›¹¦q¶ôâÔ«u庭íyð­ûўϦ _»ÇÆqL'ˆ¦´ia< Eq×fŠ,¹ýP$Œü'BF·èÁ‘Ý«–g·_³¶[B·~ïÇïô¬Š*Éû‡ºÝ«¿X—¸›õis¹8õWõóvc©Æ·9éÍ{ç VAÌ:8…'ÄŠ–GÙéêü;Ôq endstream endobj 223 0 obj << /Length 1450 /Filter /FlateDecode >> stream xÚíZ[oÛ6~÷¯Ð“šåÒ.M‘í¶&K<ìa0Ybb-²äIrÓî×ïP”K¹9Žå6@À’/Ï vÎìöƃ×’;>ò%•ÎøÌyu§ˆæŒ#çO÷]ZæCŠÝ,Z„eœ¥ÃUž[fÿÆïaŸê`$°ð<•ÄJ99 ÜÒtrhPÅ ª¢È–TáíÅYx{{ʨg>üÕ·K¼Óæ¹!D.¾q⛈¶R·•ßeßÕ_è HÆ W»1N?½«°{ÄêdàÅ‹áHbê¾üBCf¹>†0=»)B5]CÅ÷ö}½QÄÃÒÌãb1¯Ç¼ùåtÿû>™§—Y~¡ófR¾l(ƒâ¢¡â%õŸl’3]Ó÷Žßí݃œdç7—Ó\Ó,‰êÖwŽ–„î£t?ϳ¼nŸü¾ÒɇÃBëf¾+ x¦³EY“©ð)ÆW ÍóìRL‚|u™-(y Jžgyyžd“ )VV¸œö,ËC}øvýÅÃ6Eq³„oîé +é¯= LÆòlßò˼‘ßÁÑÉÏ· ¼C _ž¦Ùåu¥“·«êÍžµt«Z*«¥ëLy—šÊ¾ÔôôèíFjªó8HäS×ò@U%TUù¬ª=¨êºµß䭩ÿr-H=è€ý”NuZH= €ÔÊ`2ß^)H‘‚ŒtwüD_ñ6Có`{Å …BB]c¨ÇbÝ@ .ÛÕÞð¶ZrZ©ü¦Ìu¹ÈÓö¡ k@lµw–‰›ÍìDz‹=­—ê´fµÅŠO¡$B Åºå ¡žü¹t¨c¯±ûy°T¬çZð¹À{ÊùȵÅËo«ÀÛIÓ °Vð€ »Ö7æ0І#Ê«{Ê™[ÌíýAIwüŸŽ,5N‹2HCm»VG‰_õÈœRŠ 9„ äa±‹0l …‰(L!1dÛ§æ”I$}r¥þR%ƒA°ÅÐöŽÍ)—ˆÊÝŠ éˆÈØà]™GLxM¦„†#N¸ûÇT§_YÁ};$w© €È`kZ›ém©à IîuêóÅ@z&Û[åÈæ¼w]£HPµ¼F)¬Ë3Ñä•õ…Ulh©†œùÒ¾¯:HÖÜÁÚ«J$FÆÖ<(ìZ±¢›Š?…„ÚóÀñòk÷+ Fž~>½n{k>mn"}î5Ö³¢mŒßæÏ´WUÞ\e?Ž6Ò‘uë„å‰Ü ­ÍU'GkØÛs=‹ËÝ ÊpZfYRïªv룮Žz†©ý§ÍÄSÅ9#++žñ „àH…¼ÚÅ~=£}“¢iŠÄ¾…³ƒÀ¾YyØú÷8.)"‡3UƒÈ Ö‰ÃÿsÁÕ endstream endobj 228 0 obj << /Length 2550 /Filter /FlateDecode >> stream xÚÕË’Û¸ñ>_¡ò^¨* ƒ09¤ìÄãòVb;³³U›ÚÝ%A3©ÔL¼_¿Ý©9/Y5òA$ˆW£ýD Ù`@·_żý]¿.ߟÑ4 ÞŸ½½:;¿Pr‘Hq5¸š BJŒá-9áL ®¦ƒ_ƒYU 9 òézR%y6qm‚*þ~õã%4’ŒÃÜ! †·VTküá&X@ · jNL¨`IÞÛ$Ÿ| ÄEœ¦6õpê%Ó½=¿àÛðF‚!Ô`$C@3¬ÁÆÕdX¸ ò´ü<„wŒ"^GBˆ`—XÁIX›ùúe~c§¾ÇcUµ°u!_ù–|ÖiI“²òMñY=ARúÖ,Gзõ¬Í˜©Åë´"5鿊6¿·^®÷ýê¯îýîêìg (M¬a!I%¡Ü &Ë3¬—<$,Òn‰"1(ì`vöï¯^Õ×aÜgo£ |JÁ“w¹¾ÝÊËZÆ4h…”#÷E‚H()F¥g¾,^Úr¯]ÅÂösÓwû =Èo4¤{ÁØW€QØ9ðµ-@ Ž€ üþö†ÕOoà÷ƒ µýá‡áHQüÊ~÷…Wµ²A=Znùª®þw2É ÛÔ2Neðê§,¿mj$gXc‹$Nëºþ‘ß™ĹG|¼ZáÅ ß LÒ¸,ÿâËF@ Ü0ê"¼Æ U@ͤ\¯êoþùÓ»¿úòx•ÝæÅµ-šYÝ´TqyÝTßÕþ7£ÊiñùÇOo[ Õ=Ði>rµ(l¹ÈÓiÝúáãŧMc æïSö®(ò¢n¾ºüùÝ3H^~|_ZÛÌ÷ñͨdióuU7ð0â”Þ¡´*ò9,¥ÇÅöBŸfÿ¿Ê‹jžæã8-·Ö¸™v–ûþï_1%Pjš›å?Ó– B¿ó€IºFõêûV_VÍ.Íñä6Vv¹JãÊîËëòâK\Ì4ô”Ñ`–¤–Üáp^-Wç—ðøOþöMšž_Ž×I:„’޵֑œ©sçäÕÞùM2ÏlUÙò'š„ã0v<Óqü$Xdú-°s[ÝN·uÁ£Wñä:žÛfÃ' XÉÈŠƒŸíŒ5L±ëxÕ_ækà©ý`§y<Ýoä2¾†=òäÎÜ\Æ7¶aƒK; =Óôëã=ìàÃÊ8¸ŸÌø•]ZPDΕ·-'¼rW›Ì“,N}Sƒíwàb iV[0 öý{ØèS4Ïͪ»•OyØBÂ)ó<z¼g7ÄIÊâþ>Ï®(×À’¬gwÞA)ìÍ1¸Z5}“K¿3f b/)Ûú« ]ެc‘½Ñì_ŸÞ¥[öL﨓DHåäq¤Q È-@E›Ú„·3;ßx•…ZëÌ%©ÊÎíÑqœÂë‰6lƒaF-Ñç¡ÄØl·Ïƒ¹¼[šç+{Ì_ûŠ›!;©@¿ ‚ä!<1…qÖæsœxÜ?_•¯¬Ÿü>½:æTr˜ƒq'!؇ôÕ–0dªN’¹¬KÕ°H÷žäËe^—gÍîÀÚ¥ÐAî¨]Ú¬ja† §Y®'‹í¬|b®,“qZžyëíG‰|í|»‘ͦ%yÈI¹jRi›¥øOJˆ::ù¶…MW¾´Bwñµ/[2'¯7‚K#3è¾k{¨©`¦Ýw#Ä4u=® … ÿ€G„3Ìç:.k€}ÖxߨrbòÌžšƒh'^Ýyy߈”‰ˆâQ)P$˜î)‰öa©Uúå)a€ˆ^é¨IVox#öì3[§i“¯ý ™%ÈhNÛ»Ú$ƒ(njQ/ÄQ‘!LÈ—‚PnJÉM?´ˆŒ—’DZ9(?1ÐÒTÝÇ©G!A‚u†BõòËëƒ!2BQPÚˆI°I‘“ý–¸½¾„`3;ë§KIÞá¤aa›ð?<Í5Lž0ÍuDdt\šH-U›æ„;¿ö êïZƒúÌÒÈ€'dx;aúf…ºxÄ#ã¼ E`‡ý‘\íExFçfàÕ&ý…M³à°ãSÍbÄ¢2Àš\;}×ðþ3VLÖì;öZÚÝ.$§E¿ Ï%+ÿÏ^–ª´¶»CÖpÓ“*GˆJ´‰úË“^²S5EÉ “K2¥OsŽ Ú&ØAí¹P!aZS´¤ä¤žw·D+ÉnòkÔY[ç»/Â’!*GULRiñ´bz9‚€ÚÔvö3Ô=YL)Ð8Ë6AR›Í«…󟳜#Û¥@ÈZ1-ž‹mbS§Á]Žj}ŽÑÇÄL΃ˆAìfôa%wž}$¡3úHä|]­Ö•¯Dc~:ô¨WBv¾=2¹Ð!l)kÓ•ùî, l𸪙u²Xg×eÿþ0ÞI`Fèî5—j]dîÀÝà_Y ÿ——ݦ1:t\ê#]p 0`D*³Û6pEÓlƒ»Z$œâ}Ád¼®š: €7j Ú3,^Á˜0¸E‚ûCcŸ,Jß;Nól^÷Á„ÍËJ_0YwGúÌ´‚öç> stream xÚí]msܶþ®_Áñ§SLJï`Ú/qb7É8ÇvÚÎ$™uGI¬îÈ É“¬þúî uÄ)z ÉS;ŒEø²ØÅb÷Ùʼn£³(ŽþzôêÓÑo”ˆ’(¦¢O§‘Œ‰1,Ò‚Fyôiý<û®hªcÏÊåvÑäeqkγ*óMÖ¼f®}Qº_þvø¥g•;_¬¶u“Uî¾¢D‡2[fõKhHäì*oÎm?4XE)ƒ"˜b‘¢ (‚ÎþФ*i°ÊY~™gíPXá:³ìš~‰eÜà˜\oòøÀkwËÚ“uaZ£~ž¢å|Fñ fÙ*;¦³uV4/]Cî¯/J iݸ_F8”CŠ(@¥)`‘Iì’40k”F#ÐÙµUºñ¢øãLiT|©QQÔ&` ÑÕ]Ú .Ev¦t:886ˆ9@Å=ñ‰ €¢ ¥÷hlà߃É/«ÃÉÁú°Nû¢G~@ìP”„¶éd“ž 5¡¨5yf¥'’”L÷y:s6x–8% ñ@Ÿ%>’†#9cdÀNÚdèr>¿Œ+%AtÈ•›-0ö´.îö¦0Û›cº –™ê`r,Ó&Nè‰ 4ÏWè`” S$$i’¾Ì« &r†Ðœ?_‘3ƈԓŠIÖ9!ÄŠ»@HB¨­'ýÒA\ Ë>#œpµª3YÏ3iO.^oW©»’8®Dµ“ ÄÎ¬ð € Ô8Î$cNPŸï’7`ƒXõRC ·ô <zƒŠ2ߨJ …}ù¡q¾3ÅϨ.½¶­1¢;0`NˆÃÈmÌ`(j„è»r»/î…f~jŽZE. ¶½š3ÀïŒR8@Ê=އ&Â~¡?…jôóœâ¤y,0~Lá¯KWcÒ=ôøå1“иMˆÁ»||V`Žþ2¯Êãò;à 0ß Ì˜“D;6>g­l“hµûùÛ6«®EL^±tç6Ð/W=›ÉguƒÓÜÞq^ÿZ|‡–ìÒraY°Y|ÇÁóŒ{$.®hç“9xÂqãx?¨¶hãž¼Þn,¬¾Ï÷A×b½ãûæÆ$³Ûѳ|`ofÀ7+ tTÜ$t¥'Q\m ¸Å0d`!BžÆLÍI°ôìÆP;R*Ùã,˜é%Ôô9JWƒ1ÄÁ^‹i‡HФÏP·¬9L’S&{C4z’S˜=­K×÷,Þ0ð;Þ ¤‹‹yîäÀ™~“å¤'¼QW Q‰îËî^P­[±ù¨ÄgÝ›úÆïnëgê1%¨?K&0­Ã”¨ú´u˜ƒ%BbM4D7!?c:¬XÛE˜GWeu1O W+öX3ó V FkµËRVÕÇö>0nhÆÌ„j%¼|,½– <ägÌ´‚0}vŠárÄ”(ª'¥@Ò(5â,5 ÒI§©¡$¦`–Úxƒwñ3‡Ž7D½I<©b0Á¨ cÐxC1Qà”Š$;d¸¡q2¡qEŠJÖhÀpÃH’˜iGÈ(ÌÓõ0ÜàqlkÅŽF­’X+jݽáMÄ^¸¶H[íª‘àà2T`¡ŠíúÄÖ"ÙÒ$f\ ~_áÝx»z3g £9Ãܨj¤ÒË4_¥'«6Ÿ¶‹ØïJ‚=SøŽ‹=‚Nß±2°]–¾÷ùuq¶…ï»5i}q§eœ$|ÇR–ÈÙ7ùe¾ÄR:aó°p³•'îÓ9#/á§Šg¸d€Ê‡·b—» Wcðø§Uê £ñÇéS®6Ýë*t°1/Ú{m_Éñ\‹Ä–Sç LŸ¸—˃—wQ\'•`Š(Ú5Má()‚WŠK ~ à‡íj¸Â °ª_–FŒ.8føTŸ£&Œ!–ÑìјysŠ/ð`Œe•Ýë2„‚¾vª²X]8Ød”“³•ô@ AïÇ@’%}á}SnÒê^éI QJ¤‡Ní1ÉNL(»Qó¢FÀpé¾ð^¥Íâ|8ô^Œ™)I&:`ª)ËUýH8O/% W^¹S Ž® ÷<“Åeeº?sŽm1`-°$‚ë>ÖZ¢_tEÏvIË‚,ëíïuÙ^ºB:„Cˆ÷LÓ¥‚}/ o   nìp3TÓïí]†ê&­š-—BϘ1ÁréÇÆáõ¦§_û £ çÝ9ŸÕ% TXä¿Ä\d¾õuïúðkL|¨i#fB¤Û±;4C&B@´Di¾ÇÒ˜E*@2a¬ÇÒ€™.°Nh"ëÑpy.5Qñ´$ìÐy nHí Шy_冸àÙ•$Þ±P c.¥E¡ú#üùÁßU¼ôU§Þ¨ÛÌOY×9Ä·Ï(xJN HLšÑ°AŸŸÑ¾NhqÁ.7uS>¬Œ Ì<¾'Äåf¸â6®˜iQx*0G±‹!B%I›þÀ ð{áxâŒéu€¤–ÁÔàb#›ÐpÁ¥´ÏÑÈúiÇHªÐ¼ ”$:Ù£Q¡R6QªÝóÜ~׈dTp€y,Ö—Èç§~u9L9¸&¥|yrSAÎG¨ ]UeåjÃÏÓb¹Ê pNg®“södUžu_<¸Zü­j.âĽK`ú\¦Å"ó ôÀ¯}áU¶(/m9þÊkÿÔÍj™m.KBÑ6ÀÑðibcÜ»•B¼Ò~í0lp,¸¥¥QccA¤V}–Ž•‘!GãÆÆ :©]††ôzËIG(Ê8¡p¯¥ýý&0ÿê $%&`•ⶬç\i>{s“tõ“ݧr ·k°½Tn·……Äˬ»P; ]gYð1Ée~VdMÓ6çÍ*ó¦¼x}cuðÚ·Îöµâöû•·ÐKgÅ^|ÙYE½ƒ—jØÜZš(êÚš}wO5ü†\‚jNE—ïg`¥Àƒ]’ZÞ(Çã:õ8†Ç¼ÛhÔW.1&”ÎÞ6Þ©r"b”.R´EUyUgó*R?ixñd÷owïî_ëmíòû ¡˜Þ§qÓèh¼°›¢ù Ñ^LÀ`R<ê݃`£=DæÁ n¼Ö‚Äcb<ö<:‹guÁå‘YsOyå-0컚o¬±+m^a‘Õ«µJ™“ÌÕ„$75!pi.Îó"óаò_øg9ÌvÍöË5·ö/ÕÛϘÙÄGc1Üô >XE/ªE(„>I RÄm·pM€këóÁòehí9£!CcåË€‘3‹U¹¸@z\ºìå5¢b¬ÕŸP€"Öê¥ Â|ÝSퟣ%\ü}%tëÊÞº†ŽÁUôñ`E$Xÿ Î`ŠàtŠ5à0Jóp`qg«åƒ”··Œ¦w!mÁíi•gŲ¶ØV» #°¹qŸN÷®ÆšÀ`ÒÙ5ZõÅyUù¿ýõE¹Þl[ìé_Þ–í±?ó¶¶ôÊEÖð,@r¦;ïuqüÊï׿»ÜCÒûÁoÆf‘ïU•w¸¹ì%±1%½òŸo§Mïîû7\JDã.­¢ç€qû;ßý¡oB…-ëmÓ:«`ä6Δ¶³3˜•|gV¶À=nçåîN¼=]ôšÌî5ãkž?¦ë л„=sK ö ½úêwÁgíZOᆪ\»þɦJ‹zQåÿ >4yݱº¨ nÏ>o|]tn÷pï°‰›¶[rÿŒÒ@Â_¼±Ñk7¹@J‰îlÞ}Ugs¯ÄþRO‹û8$ß¾ûðîý×ä$]˜KT¸÷ãR0/\ué&]\¤gù/ˆê(.`2Fu`Ü%˜ËÿGu F6mv"?©ÒêzŠhÎêæíú÷äÐèÁ]ˆûÓàtõ¤Ö*^·ÿ9K¨b6ûË|dZ*wÐÎxŠË0øÔA9>ÿi/¸ü|§¬Ù›ïÞ¾þø? ±ŒÁî1ƒØæþœ'¶Ù9DBv‰R‹ÙG¢Wô!áCâOhá>þüº\¯­ß`{¥›Öë0>s—Œ€»Ú0›Zšîñ.÷Ç<,ã¶öW×ÛU“oÚw7†‹¹'qºûÎÒµ…HÈí1Ìd—”ÄøÓ`ÞmÛýpüfÅu·}©ßðv™y§gÖ'Ú"’zè‘‘$é^¿³ßX/5Ê5Ûl«Ìí¨øM!` »B>ÜâN‰î†ù œ¥{çÞ¬]‹Ý-ŽEYÌÿ<¸òÛz÷v`…w;;ã¥n|ðn*ܤE“§+×pâŠ0§ÀES¿t^«EàÔëíâá®°ÛGã±>÷ï^ºßëÌ'‚¯°\h¬á¢'„?øì<õ¸œƒ==Ý-ñ]ºû¼bÚÁZø™kªfß:¼mæ2«,-\ç¾kV§ÕißéöJQ6·éŒ+îp]hüšVHiQ•6/ç ™ÿÚE-» ®Ÿº¬7ž^gžÅ¨ñøâ¥ß¶Îü-í^Mé*w;;>ó¯ô¡ž¶ÀéÒñpî0$ž¡Ò³¿÷ÿ…Àu[ öcŽÈÅskz¾ùî* endstream endobj 241 0 obj << /Length 2774 /Filter /FlateDecode >> stream xÚí[[oÛÈ~÷¯ vû@ÖdnäpÒn»ˆ¤“:ú °45–XS$—¤âEÿ{Ï\H‰´ÛŠäÄÁ°8œ Ï93çòÍð{S{Ç{‡g{ÏŽBîI$Czg^€QQOpŠ(aÞÙÄûà¿Ì›jD±_LI“ùhLEä7ÅèãÙ«=Œ°ä„z8ˆ\Eˆ…ð* pKÓ鱦¬PEA,z‡i‘¼1ìÇUœe*³tËíõÙ]}˜aÄXèyŒöAq’¨ºÞyDýf7P ˜×õb®j}Cý"Ï®]µ½Ôi>Í”mlf•Š'¶>uìC¡“­nfÊ*5"~],ªD¡Ñ8ÂÌÿ÷,m´¨]¯âÂ^/ s1¢Â¯.G4òÕD ‚ A2pü—º©*`¾#_Õ<ÓûWi3s“O,#ox5“¿¾ &#XÓ=¸šQë›`Ô‹³½ß÷°ˆ=â‘€#ɈF áÀKæ{¦ž›e”È(€ò.öþµ!‹F1ñL¦zI ÁaîóõÂéÆ %¢‘ *,v$ Ø@ &Ýš<"BQ8\ ÎP èŽÒ—')*õ¬xÞ3áé‚ÅFí§NÅcãe¤7Mƒ×ù¤l}]d‹ÖIÿ𽩓*-7~a-T×— 0M ÿìÈèfK–DE8j ŸÚ.=ÎôòÓ®ÇÅ"7î/ÎÒFæõ(bþ¾±Û1£qÌûæ[ç‹|cà\ò‰-$żÌÔg}ÃáF³èO”½-.•Ûn•ú}‘VÚàõqº Ý‡î™Â㈯JãT>Q¹£SÚ ÑÎeÕkè10¥ÄŸ|[¿Á1E­‚ÃÒÎ$ ùŽôR“RI°„(²Kó./®¶ejœJ6”‰rÄAyv#”0a=™î44ÊÀg·ÚŒúQuÓ(zV㩠‚ô@ó KKˆ#‚ÈÚ¾QïØhM?Ò¡Û'©á ÄPLʪ肥ßA°<êͽÃTFi•^  Bû@`ÛŠ†@Hᘙµš‘VJΑàrëñ’2`[Ü” î¢`W21†È´½Iá± É@¢€ì»’H†Xö%ÍŒä6”L‚(@š1‰PNÑ<›¥.D¨Ï±ŽNmpZäiü⓪²âGé*ÎmäšFGœ+bmðâþáÁk[ø3ž)7Ä…@®¶¾L”nΕ«­Uãh¹WÅùTÕ€¥9þQZÙP |&o”{æ:Ø||jFÚ€hÌß>OGÌ)𺶶Gš7 "­  ¿â§N‹¿5üH\ümÜTé8¾È\HoçÂÜÀ,é<á`®;ÇC<¯wqš2¬nŽçõ.­ªÜ»§ïn«ˆ…€|[ˆHgƒf0ð”,þaL=Là]öŽ„¶AуólßaåÚ +@:˜"† ÍÒó*®®7ZV]Xýíú®þšg”ðXåÅÂÄ“íLŰ3$Úè²~èÏ»!€“àË—ä‚ w÷FwÆè®ÒÉÊvnG’üò½ÚÚCÕw㘻C´wË΄â sv€ÖR«¶kÎít©%ï’8?Œço5P-ZŸ¯9È %â:ÙAíÆ£nÚºMÓo5ÜNÈœ;ÚÊ‹ª˜·ø_µÛ³³y¶Íìà؆ŠàéüûšÄíŸÃ<…NãÊ•÷‚ˆ­lÊý#âÄ{Ѹš¥É÷êæï½2öã1–cZ=-oûnþèýIw¨âŽœ¸>r¿ÊâÒUœ›w%êÆyÓŠW®ºƒýŠÄÖý6­~¼ƒqýùSòâ<àˆ21ôâA€pð‡‡ù‘1.êÛûp‹úìo·ÃÊ%•öýâà¿/²b·Q>R<%öÔì¿»%%ÍËÿþqXœ==°38\| {¹È~}3„~-ém î½lƒ÷3õâûŨ@w¬¼1/ÆÊúqPÞ¾]6°Ú¯Â{÷¦;^ã2þ÷” &Åd@¾ˆƒÊ»cÕ¨ª¶u¹Ò ¶áÚVéÌ¢Hgé›j‘ç&Hßè·—óÿSœÛ{ƒ3ÛzîÏY“Ž;\Ù:•J«Âx«¶ïJk]vïR“T#RóFtåÉ®Þ<ÕkM·%{óëÚæ\åuç:mñû‡Á`sfPWþÇëJãñ ì)E?Ÿ`×o*6÷I»ém,扱þ‹Ì$‹ëú¹-ßœ¨¡}éQ$¡^¦õ¢tãŽþùîÅ_lù¼Ì¯Šê¼Škä]C×—m-îjÁ…äà‡\ýáÛWo{”Ô³bº–°ÎS®gE6q­/OŽÞtuS”oòUUT®ùìôý‹;d<=9®•jŸ·$”ÎU±h\5…<ÆKʪ˜#õy\­²y)õ¹,ªfšçqV¯pØ=ö¢¨uü÷û3Ó4I[Nîè Ãêß{@’-j¶os]¶ëwôæôËT¤ozžr6S_•›ßÏ“•(„IXææÛÄÒÕs#IÀ^À•t˜G«ó£}3{׃t.ðz”X¿Çe?«ß´¥\=ÎPóB…€9§_NæÜ„Ç›Ž[“Ô©ÚTHD¹S7Pâ¸ÜZf[(PÀoµ>]KBI!B•Ùõ—ÔøaA—ní´Ã¥>@)“Íc›n+íu=D"bçRw ‘t|sY†…¥£“ÔlÂw¬ƒä’E98ŒK›]ØL²Ôå­1ÿº ÈÑû“ý6j½=8Õé~+»Ê~0mQÁþÊ–stë&tèvÿôâô”PÁp¸®õùhŸAH´tš3!ƒáâŽá”õ†FG_M9Y£AƒY}7s¨_¯5•þ\Í‹nÇ÷+›„ÚÕdé<Í­ÎÀ­Õ*(äª}†Ñ¸:½RæôÄuÄMlK.IÑ|¹°rz-æ®h¿¸Ô»3‚¶n¤]Äk¿RJŠùÜØcH€‘ä2¶Y›<ç¤0̇Ä}}¥KiÞÖ˜TJ(%6¤Lº®®°Ìã„' ” ¿±«Î‹¦¥\×fZô {ͦ¯beéä[ƒ´ÒüU…uð‘p•°ÙyŒ 4Å(Œ<Ó ºƒØöƒ@Sú"íôC1*L"AO¤»"ÄEÙåwLe`ßKéÂ$u5FÝLÁØ .ieÓ×Ö<¶„ºhˆÂ·,ÝHý’4QˆpÔIÓdh&íÇ‹}Æ›™úÆÁŠÉp¨ö<‚,wõýL„(¨ýòXyk_ X ±*؇؛@Û+¢€»+ÓsÿVÎÌ{·±˜›1¼äV2DJ˜&ú(_1¹ šKܧwê6öØ¡¿•@ƒ!½Oš9ã QèXû̓ì€Uû?®V8¤ endstream endobj 249 0 obj << /Length 2394 /Filter /FlateDecode >> stream xÚí\moܸþî_!ܨö`ñDRÔKÑ~pî.iZäâ&.Z àd‰^ ÑJ:½Ô1Šûï!©]­¼¾:ëH±}‹æ‹(Í gHÎ3œk--×zqôììèÛç¾gE$ò™o]XÂ%aȬÀc„Qn¥Ö;ûeÑÖ æÚeÚ%mV ‡¡Ý–‹÷g;r‰y”Y.®(ß « ·•]aÒi0¸úĤv•ËcìˆT@=)¤Ló®ùÞʤ*d¨%N‚ΦSÑ!EB¦ öó²þY×2ó‰*nšþØôź0°Šó]Á'­‹e·R§çBoX©å/]VKÓP¦Õ¦þf*ÙˆoìW)ã´¯cÄ:º%v¤©ÄH¹'/Íð¥,$¬ÓcÝjMJ‡‰ØA©R‡TEâ¢Âõ.ɶŒ§b4Ú„R‰S\˜\!ìÉL±}c ºQÄ+cz°Ÿ%øÒ±iJ3â­†Höô&ðCþÖî„f&Ÿí¾q@Æ8u£q@x‰ÑCÜ•ˆ>ˆ8àEþ$ÕàqI–õ“‰h*ØöQÔtUUÃiuªO•·m\·]õ ϯ¥œ% 7u×#\„_,ŠûBå*KNòlY #ÓLit¶Dî#³G8—qþN’O ~3ž¾Ø(k ¹ÈŸÌ†l‚”z{ݾ!ç¦[=X'à‘ÚëÿÈ:«YŒpY›¨9¬Ú{…cï¾Kí8Œ~}LIKÌ5ñ­ï{Ä6Di̹Bü7ümŒÁ{o_÷wцQ ÞG1È#@T4äÄwùQQT©8 *˜J˜oÂ2Í&€üˆB {Ïv45«²þ€Ї{E§. 4´EmhåŒ:7DØ“Víu%®Jô—|Ü$²éÜù ·õ¯fAŠ1±÷Äœqqžë³oýƒ×/•´Ëá¶j޲MŽë”?8D’ÂÒ¾’t#ñÙw…O˜wC(Àƒ¡º†˜B( éE#¡Ö9»mƒ0t}•õÿîLx@/ø»&Ì€Ýya^''€ìZÙl }.m’êǽ&æžfM[gçÝÍW†nÝcðÕB_]º\5üx~· kÌ+æOXºÈ›wû 6ýL~§ý§©9åSOùûa~ØSË S⌧Iz¡þ¡XËú^A–iF«xÚ §àë¯5³øáÍÊîú»î³ûQïè{]¡4· ü××D‚C4¹×ºõ¶xàÍøà48‚¯ÿ¿è>øŽâÿÎÀÉ1 endstream endobj 255 0 obj << /Length 2412 /Filter /FlateDecode >> stream xÚåkoÛÈñ»…àë °ö¸¾Ú^$pÒ×]\ÛA ø„¡Ö‘Ô‘TÿûÎcII´bØŽ%çZwg‡;;³óØ™¥/T G#ýQ_möÝãôÍ?‚¡Ñ›ƒ—ç?¾Í(I¨ÂÑùå(ðE«Qd”PRΧ£ ïoe[•ïUÓeÖæU9ž¨(öÚjüþüï¾ð#ÌøAÁ3 ý(bâÛ‡`@5X£)!,‰è½Ì«ìd¬}/­ÓùÜΙŽ[²ÿ0F¬ûk¾ ~0öñùÁoåd'·ÐÄBê`”7*2‰F1ÎeG—ÿzð¢Â0íh$G‘H_¡l- ´ÂD ?HXÂ?ü0ž„¾ò.ä{nH©4ŠÖ<‘Þ zÄíPzëǧ§REÚïÂZQF:Ù:=ùñµZ×0X›2"I¯í|fÇ£÷úÝ/ܸ®ó¶µ%w.«±Š¼š;m‡›Í—Mk4Nn5UAW}¶5 KdÀté^cÙœk‘6M^^¹÷.£oNÓòÊ6Û¤š–8·L24æU $§<ôa¶o1L°Ã•Øb%"p†ùÆ–U‘g/æùUYزm6,s ñ8Z©îUô¸8›f3n]UìUøSÂ_[‹ñ$ò%ìMÞ0JºXÐx/ÈøÞŒÞ¸ÆíAAƒÀi@z³”^ŠI.(·‰ŒÏd ¾éç´lÓ+”]2îVËÜ=×WÖ0ˆ–Ï¢jÒbž¶—ŒT8$Þš¶v9rð²rïÔö·e^[FJ–1®Û>Ìp;Ën…×3PÊ-zÐ\çm6£·´ÖÞG¦Ø:é@uY£bçå”…Ö0*-eUN£Æ+RœÕ6¢' ®Dw‘U%Òk,>uŽ,ÏOâÑðéLtÛPçje8>;7°ehèr¥V"ÏãË+7*=$]ïîc–xÛ•"Å|h…àS Ëä#hÂbåÖ¾‘§ Ù+O@1Š<-æ7¿úÿò.W¡ˆA5œ‰7mÚZv ¤$)‡ÅŽòæ9ùü†Ñ!"¼7 Î\£I תmS-ëÌ‚•kß'EpuI¾g(Rž¹éT³lœH€qµi5D6ˆ¼¬¶°Xn§ÔywìTeFè–䩟Uו4 ëp•0à¡bHðpÑnô)ÆaAùLÒéúS)º–¨v› i³#nЄt¼É (lÝÞGϵ8ÓsÁÁ‰Ž¨›ŒãRÝtº…ç‡XÛɲÁÑ)÷?âà ·9.ªü?œyÖŸ°ŸIéðôª€ïÁíÒ!I¹Ö=¡‡…Yᄾ_¦€¤ŽLÝ×Åjˆ¾æ±_ÓŒûƒƒMSqPzÑ|Zua¾åÆ,ýlRÅ( ‘pztÇEš}‚ƒQsÄ]Ûf¢×¿ï7ã2Fi3̸¤àPí#åÚ-v¡vÀ¯Õ Ü!ð®Ä/Ð:XGj{•SŒ{̶bcý·Ç]ÿL ƒŠý(÷ehœ•ÕõIZ§Å>˜A+]YêiQèXû%Ü!R¯8\?˜Qp;ÛwÉôÔ^¦ËyËû9/S*ÉìRÚ½št+cÿvNšÂé¾vãùw‚Ù¥&[±Ñ!w)„»wÃE!Än pRˆ†¶íÿÏ ûõ»_¤k»VŠ{S÷ÿ/E¬ž@Ķ;LAÌÀîÜ)šÚ×UýÉÖÍžíWõ<ʰæm«Åwílw_â]] <ò "Á^jòÆ%§k8\Ç®Ll„Ú¼|øVŠÉ:E&è´ûÅ”¯UfU†$‡«ƒ¢7„U¥ð±vŒÏb,}NùbnÄUòîJ/&4ïDDG<û¿©š9@xdh: 9Â!è¼¾:qd„¯úI ϸ¶éÚL©¨yp‹#"Qñsjõµ)Ý R^ÕÕrÁMäŸ=Ÿüö ˹øF–– ʪ¢X–yF\çíÌÕˆýR)½iÌœ‹kßxð]s“«¦>—òµ“Ìò¥ —C§r46°ÐOåj®L'sÛ¸¡yu5ÉK7}–\ð}WÀl¿¤m¨›½aÚ)X[ŠÃ$Èá€óŲuIßšœ ‡¶}È ÇDFªæŒ†«²O'ãõ__¾r åZ™ÙÕ=ÄàŽîñI\l¤Š…ÖqoB>¡IŽ.&Y:«S¾÷ ìÝ÷nU2AâLæ- ËÄÞ?órù›‘S€ýœfÜx{Æ#[±Ÿò£q6ÂEÌ–+{€HH5K7mšÕé ¬m,Œ|ĉnÜäK<1ð%a0–àn(‹)eZÐf§gÒÝ¥¢2öYÉ·ˆÝ®âí9¬|ÛÆJè^vЉ†â8“-–𢻌¼¬«‚G?P„òå‡Á¦ü ¢ú0–°õ¿‡ ¦2 ” *˜Z‚Êßó¾ùÆW ˜*„dH:­œUMû¨|dŽãôÇ¡SÈ?Ov\©äÂÐw[rå‰Bݦ±2Cgƒ‡»fæhǜЖüOr£÷ h{ª³¹ð¼xl‘ÿy-~¯÷»¦±:›“ÛO\Ù#?´‚íÍÂ}¸³·¯þñýú€gùì3€D]²/9þb³¾BŸ~bÃð²Í‹®8Òg×ë-‡m±µ18Æ ¾¡ûK_Zw—Ë’¾®F{ιC×L7êT­A›ÀdåЕäó²µuùÓùé»ãnG†… G¬»;ÀiäͪºïZ/ON^œ¾øy¼näw¿6ïÅ…|ÿ~[¡ÿØw#¼Ò>hÑmÃÅ…¼<èm}?Ú]0ì·eãKw„"„Dd‚gK·¹Y\‚ãú;×]& endstream endobj 261 0 obj << /Length 1562 /Filter /FlateDecode >> stream xÚÅXÝoÛ6Ï_!øI*–"%RÖI×lÖ!ó\ôÁ PE¢c­úpõ‘,ÿýŽ<ʱ­Mu{"yº#û ¨síPç§“³åÉós81‰Îrí„”DsdÀó¹³Ìœ•ûºêš9£nõi—×ÕÜc2r»z~¹üå„>s( iI¥ R: œðŸ?éSýS%#Q(@%sÞY^§sNݤIŠBxŽUyŸŸKß‘$)Ó;xœÎ…ã!(âF«Upy©¥AÂó}`>ø—sOPæÎšM^ÕÔŸi®ççl_)-pë…w–±pÓF%]^]ã*уtÓ¢o;ÕXZÚÔm‹ówy•Õs&Ý[K(“U­u i9‡£qßô'p%àXv0©éO õjyòéÄ»¨ã;l“!w„‰ïGNZž˜1/˜;TÎúä÷#u4ØÝ÷#Ba*„„#Ñ«·uóÑ:âé&qA¢X>0)0àú6&q0%#“TÓŽ{+ð0§Á€õPƒ°¸‚°Š\…‹×ˆª$ËÕ¶ÊBç= ©"×䙵Ç'4ˆÆØžù%>• å dü¹Ç9wó šd¸¨×z 4"±JJÕ’q¼ßÂA­0_ ÏÑüíéÐuBIßH†k¦gÈÓv‰‘±.H¡…2:ø9¯ äè0nÔÜ 3áŽ:BD„b_‡74¾šn¸í´o\Ì£îÅcɃ@Ž3Ä¡q§çU[œùAƒkk“õz¼Z L7I•Eòåkøµ†tþ”.lìbNdäïuaè» íH¼¼‡íØ~!'Á®3I…‘MŽ8O*M®Õ“?*;·–3¯Î%QlcÈU_ÚúØ ’ÊÿÛ>ÉŒæNQ"âÿ¦}’±éɃˆÁ‘ß }Š#è¢&}Ëö ŽäPëöMúRû$IÄvË«éÊÇ;–_Œ¡nèUND—ÎDJ9Îí¦î ]™veÒ¥œby9Ä&ClšÑdSœÚ¢ì6yu°Ç}ÍÑÈ÷…û¶5 ĦÎêÝJ}ÍèLypf aŠ`1ú87:µSY¿7-å~"î¯ZÕí·†ü>GCŽ)V?`F+ò«&iît÷jÞvö]g:Ó å¬ÔØJœ~ïáwy«¥K½•ƾ6Ï|yƒx†cw·U£3È7³áÀÏ'ÕW¿ûΚ~þö7œ[7òrç9ÛŽ*à„ÿŸà8sú¾Ö}ežàÚþ;{S·ï[Æ)3$Ý\ͬ'LU­^,o_}ÁßWÛ"Ùn sMþwƒ'A;;»¸8]œ¾¹uk/crß§oÈ#¢ƒ÷Z•äFÙËO{Ùí6¹­t™EŸêº¿î‹âŽ ‰Z/&Ps3콩3V+ÿk~h.(žñð\­ØãÄÙX|æGIû_ùÓƒO%½ÿÞ—3L¶:÷?ë«g©i "ßµùEO)ý2Ó—¯ æ fv™^`K“/ßüˆüg§ó(p—/&¸~Y›í3»W#ÿî‘® …Ý1· bI:´ÿÃ"Åv*SdñaîóØ=&/´—è&…&ÚNÁ:û)­µevô0ðR÷'adŸHþø¹ÝÃßUºâœ endstream endobj 266 0 obj << /Length 2589 /Filter /FlateDecode >> stream xÚÝÙrÛFò]_rö¬ÇÀàönö!ZËIj£heù)Ù‡1'ÆAáeývO@„l‰1µRJUœ{úš>¦r¬k˱Þýpyôú4ô­„%!­Ë¹8,޹ùœq׳.Së7û§¢©&ܱ˴5ª,&SÅvSNþ{ùó‘ÜÄw¹å°À âÊ(t¢ÈªÂ=Cïj°5â,B@IÃûA•³ó‰çØ¢Y&3‚cPÞ)÷…Z®Ï£èFІ-–™¼Îy¢ö]i¬ËV32ª?’àa, Z%ë²­fš4\t+T&®2Ikš’ºU‘ª[•¶"£vÑsXäûž}i$ƒ[ôg¡þ˜j…˜ŽÑw{flwÞ¡ÑÖzGß.çÔȦŠÑ˜cjõœÎ$X=5£5¢¥T¿è†Ø¶qøvHAvÈè7Xèǽbî76D;”N¦®o¹0=1 cz.É6p[¥R˜ZM¥–<”Äw¨Ìú\[8ž¹$ÛÀÁÞÌ;aG›vk½•@ûƒ?êOJ/LH'ôš…6¸JoU‰âÚ¬éŽÅÈ9CïëSðkº]p qç›.hÂc\‡¹ÈbšQÏ*µlP3C9O›4IRCÞŠ¬ Rš£ êÖç;feÑÈ»†zñ´b§¡=Ö´§4Ö:äqûì×Ë·ohè_rI AïPgq‹Òú¤µ©%L¹Çœ0XƒNTØ 8Ç^¿Ù•hf‹‘ÍxÌ"·J9 OœE‰Œ—CRjHµÀí2Ÿ'ƒH‡$Ø¿œÿ„tôVUea,!Œ|.X_×s{+8tm1Æ á’ äio2•NT #hÖ A™Á¬?54¤ÌÌf¡C*èi :R›éˆ€î·žI2á_±ŸQìç.íxîYâ¸ÛüÔ—sQ˜OÙ„8d®ßÛpF§žœxtŒ¾JÔö|¢c;ãèU=êt‡X™½·ôæo“ièðîœêúôŒJŸŠNr4fJ—Š Ó;§òAvŠË׎yWÍ¿, —…N2te¾wî{`£JêÒG+[7P? À¦h›ŒÃú¤ã¹f4ºX’ºÐ%O÷ßf„‹ý¾W)=~eÜ î–•"íÂY6™ç¹Û¾èüO¬ýÊlÑG ЩՋ:•èT ³ÄU˜0ˇÞ8\3ÿqH=ŽàCÎŽ#< >ðë‚PõÜaçèAA¾@ âpÿgꪠ[ûˆ+›¿ýÜÍ_}]ÑqÓ jw¶̇R?Œ£žÎ‹|©ö¦ïÁ°ôõúþ8xZsp\ÿÑÕ=Ö?¦{aÌï~{v®¡ÌÛ‚Ò‘O •CÃPO@ÄU†„bòOÏ[$!va¬; Æ«EY7…Èå«CSs|`Z0ª€€óàºòý~gL‡D¤ãx¨èŒ : ÀåŇ·ÏVWŒb`ÆÁ‰‰úO*IYùßÿ½.ý-ú}A1û9þR–Sùȵ páâÐg¸0é"tÆ™Œî¥€‡‘]´¹ ý*ÑY,( Êßé|¶åÎëÅå`“Z}–۫͹P`….¢]²†²ÂÓ8fq8¸%æªhMÐïRŒŠ&$“ õahª+›W_ŒYU½ÔÙÝú£¼ª·Ü{²M€K—.Xß2<»’×Êd‰tþY™Ý ?1]dÒÍõ EY!L ½€ð™‡Ì ù0|ö\ÀõìŇϵ"÷†ÏžÀÝÉ\P—ÏæÏ ðz¤ñ:ßõ'qó'Ȇp›uù,¦mε¯‡¹OîÓ»]“zÆqÐCB:MÅ+p¯^~´=¸Àõ®å ¯¶Z/6Fzk^ßV¿:n$±%ww(¥'—FÂ{{¢' €ÿïáÃeçáeÑÐÇŽP¯! /EèÙ˜¼{ÿš~ìU½Ÿ)IÂDµ.ˆäîGÏsòqÀ/úx×OôÇk'ÿ(¤ž‹“¿ßusÎb û¾ÞOoE¡²L<ä1¨Šú -ù¹¼¢ ž,JåR¹YjPm ¢5F~Ù}󥺊©YICkùUç›{üÑÁ×3ÌG`Ø£ó„u·~ƒnnÜ´²• ce%TÓž—=ÚÝ7¦#ßq=ÔBÎ]IYlÑÒ!0aŒ˜w•(úeû°æ»ïh clløŸ½«žt‘ßÖkZOz ÜxoÁÎõ{Åñd#ãÿ=fÌ;s» ì~ Ì›ç}o¯C1ì®Ú|ɼ%À¶èì“K¸ÅNr¦÷&íAŠgÖWû Ïr@ÕûŠ­žðƒ…^lMýb=ã1\o«–ùµü*% endstream endobj 272 0 obj << /Length 2452 /Filter /FlateDecode >> stream xÚíÛnÛ8ö=_ám_d fyÕ¥³;Àv:è`Úí¦ìCÛÚ¦Mt«$7É|ýÞ$KqÝÆ­³i±`‰Ôá¹ó<<Áˆ 2™àíG½¶Ýãì—?yB€)µýÏ~Ùab1¢qV2ÍÔ³]4Ë­œgJó·)2U¿]_kæ¶E¥ %„Øqëôϼ\f‡ÛVD¶[q8hÅ QDÂ! TLgœ¾ûÅp¾kØ{,W)z¿I3V³¦\<µÎT–0¢¹H‹µíú£œ;k8i§´n‡QHiB8Ã8ýӸδs¥ ïoÊKgµ£Î-ž<£ÛqF›š#L"+Ô¿ ð9‘MNI°ü ‹V®]O¹²Ïö")Ipô)ƒº”‹ ûÍi/dë¡ÝðZ5•“AY4é<ÍÒv  ¿* " ™ËB®i,*‡`‘môÄ´,UÀ`co1ãužÝì²üUÚjÞ°ç“-DØS¹*Zû±)W­æåJÿHÕökWÕcÒ•í)² Ãmcû󲇃¢±ã`©šSÝ ð²h¡Ô²±pF=q ©ÌìÇDTM¹©zì‘Àc\þBÙ÷JjÍÖÚ‚¹A5~ÆÝê4Š„„ÀÅ~±>mánÂ(Â,ò`zª9)v ˆaÞaœË¼ã6F7Í{ŒÄE.‡(f^'£öû˲MZ¡„yç‚7£wËÈ¥–ÙÊ zÃA£©LÓ†P3 |"-<2å¦8‰'ã§›P»>Ùå‘-Åèi'íÎOãe’F¬ô3 î×I˜”œÆ /³sð‹ä!<Þ^þh"‚(änæ›…ËG¡/*IPû›‘P„Q"L!pÑp(TeƒÂÇ‚x:¯^m ³™ûÁÅ2çdyº¾p¯”ó›\^j§ò.¦ŠÆ{gé–1° t¶"LTu]eé"m³;C!ÁœµšCn&›˜6´g å#BO†–~úJNË#Ä¢dÂa&Ig_0A46ï!,îðY RM<*¡Þg¿šÃŠHѱ@»gáW’HDˆb2”¨ieÝîsY™ݹ¬,–ÿ[G`˜¢‡÷èšb óéHŽÀEı@ z$‰€$§ÑØÊjoèJáÝ*{ê Z£Ón9»Ó™›öÖÃK1ê¾3ô®3!§1Ï„!•$¨÷LÝMàcCoÿv°Û¿û¦ö,tv Ó§ÐCŒjt®¿›?虼ñGÕC\$ÖÛDíÏÖ›-츳§2¯¶bÙ‘è¶¢G'x]”W¯µÂCF—7Eúv 5éŸê>„òçò¯åÂz°‰ÈZV-VK£Îž9¶fN¿€@H£ÛúÎ^ŠG/^=t6&‡Úøówtúõ©ºûpàA*ðxÄFÉ‹ëëo1îÛèÕŸ‚¯³‚§GçããG«q"ûø3]øí}¿~ÈóüPù| û!/ÅÇÜû‹¬îBëÀ ´pbµjöÒ3N¼Í˜@IâòA1D‡—g_Dbѯ³ÙBé+ÁAºØwnsL‘ ÏÔ?uâHô¹!“+5i².ûÊ ™?ìíȦFˆòÀ2|¼²š’ 2)a—¨'¼Oj r0„]S;зuί{8€#?ÛJ$/ê´rËÂÒ´ xè¸Prißt¾Ë§ÇOÝ¥B±´à›Fíä$†£Q—³3ÙåÖ¢(³f_¡*.ú ¹jš´,ÐtÆ9ñ0tëâÆ’¶÷/4X–önÄp:&í“jùÌsQ+Ù:LÒ‚è[’Ìu-Ê¢•iÑ!’.õNÐJ4 N­ÊaIo]β¿©aÞ¢ÐkîÏô‹Q¡‘ǵ[UZ`›œ#aÁëß~?{ñƒ…‘~”sIË ¾Ó°N wÇáýÆÌÍ­’Ë™®Êñ}%Ò~™„ –ðq"„ Š&ÿÏ„@ä#HD.Ò‚#~{âæ&AŽVi¦ìžø4*¹¸ÔWG&ó#ŸƒGné€UãÑ÷qÐ÷ú{‘§É6u>kRJ!=÷ï%q¯ÿ¢|¿)[õ=äañü--TsÂhoø¢œÓñ ‰uå‚+|üNóà ygOÐÿödžOæ²¹ØU±Ò ïögáãQÒ™«±­çE«ê•ôÍ©ìüL…Ò^ì¼Ç¾NŒ¸€eséêœÞÀ†M­m51Ö»§®Úëå&Ÿë ¥w¶¶ Áµ/t3hv–½ô´Ã-Ú$ŒE¼V­íÊd½öÚ éÊ­\ÕZê(Þ”ûr% 7Nï M5ݦ†í­CP¹ºK—.ÿ¸2¢[ Ù$Ý÷âÕsGÌ"uWƒ†ö#Çš^T›½ŠŽIøŠî±TÂ@÷§û™IŽêÞ£ú|“µé¢¬Õî¶%”9{éÑ~bddŠ+@Ú¦¹Úc † þ;€[•–Ò¦ó—hó|5 NkË}l&X†è-é_˜‚0[mèj½}”ôŸB< 2bëµ^‡¶¹*ëKg˜ºÑE¨{55R¹ÊËŽ´$ÆáE½p`ÛšÈÕZÎoZ5f³·¸ò'Øá‡éIçWÍ‹æôêÂWoº ÝÖ©ŸLYyå=÷ƒÌ6ž×üf?[â[6¡û–©Ã]”Ž{³:àüª¯¡û(™ð“1ÝÂE#£Áš!a ùèájÎý÷êk|¸ãP¿éFàp+tæ†:K/ÍÚä«rMzÁj²NuÑòþ)0o1‹––qÔñ¬;Æ|™µS®Ì;¦M‹ú‚’#g=GÿnÀEˆBOfBôå„°Ëùùüä/ñ‰Þˆ endstream endobj 277 0 obj << /Length 2070 /Filter /FlateDecode >> stream xÚÝioÛ6ô{~…æ­€ Ì Ý2 Ù’îhº.ǧ¶d›¶µè%娝ßã!Y–]ÇÉê$ ˜ùø.¾ƒFÔ!–…Û…˜-›âôõ¶ Ëz½wx¾·ìÚV€—ºÖùÔr0ò}jy6E”0ë|b½ïÿ’–b@q?›Tã2ÊÒÁz~¿ÌÏÝÃ6¡€ÛÁŽïA鹨ó4ñõ]ÀPuZT=Š|Ç–½Ã(¿0ÜEÇ<Öt Ëø~‚"à@~· ½Ú|oè£ó½¿÷0…-RëQy¶c“=ÙnS‘À³˜ç#Ê,Á­éÞ÷fê>«õˆå¡ÀÁTê6`Ȇš„@køë¯CÓþ{|”ÚV‡„À§ÓOñG]ûþÅf8bàLƒàqXFW\åa9/t5¦-ÍJ]™‡é$æýqÍãX×F·º<‹+‘l¦M í8›¡iº˜/_Jú ¡¢0ùž«Ñü©:`Ö|ð/ÚùMŒ}À®ÑB(à!a6Â8ø?Ìð3|ñÃãnоCùÎýn­ô³ÃWç?þl¨ÿÊFÃ4LøÁ÷/Œ ÉýÕak­·mV•yU..«û.¤þz¤\ˆLl‰sEÁzœeÔ–}Ì£8Jgr&/²JŒyñÍ5 ¦Aöuáb5ÅÛˆÃðzÒi—ÅÙ<˜¬<Ϋb˜s1”H,¸N%ÄvüÑõ$ž( €hèÎÄívX šhªK©é¯¢¥U/k=EÉ "õ¼Ðu‘‹(-§6‹’ËiÀ½çÍØƒ˜y½o»¬7ý¦§§À– Ý%’½I¤Pˆð'k9ïò«ÀÈðETóšŠìZBÖ(hx\Kìõ¶²|vGd`Md0-¿¤ ›0Žþ1t®3qih§W‘ÈÒ„§&ÇÑ%ߌÜë ×S`\‰—ãý\dʉ7bñ;XX^ÔŽNL>@mÆrGþ²q‡ÊÑMž #éUW†`f&ú§£Ã‹×'GKªáIÚ ºk-y^ñ3e×¾Î[„ •…žÝhÆK ¨LÉô÷¶¶\›Þ¡†gm[n›µßOÞéLiûˆ¹Þ6™òíʼn‚˜ão3âüçÓ£W?,|cáÇY’£r.x8iùYI‡VŠTŸÓÞZÌwGoß¼:ÓŒ¤.ë(‹MÂ.¬V>)¬³­°'¿½yÚ9½KÎÍ“ê~ÜìaÝptZ¥¦òr³St#е  3S=5áA-} T‹I­ïr’Õ­S‘%Æ—ß\œž\Ï£±÷6©»œó´YíÌê•ïU./´ å\í¸6ÊQ/ƒN‹±ˆr3pÈëÔżQXŽçe–Űžd¿f£3ØWM&ƽƂ*ÕñƤNæ™]Þî¶,õÎnÿ˜¶÷„ .ìžœ€ûš«@» °"r½fãxª!–ÐØ}Â×@h Áì0ÆúBЬ€×pŽå†%¾•Mv?P¿/t·ž[Yƒ©ÓÝãégI;ý +Ln°&Ñl^6à†B f—æ3ºP¯ÏnŸóŽ–@ɯ»£•Ͷç?Æ–v·Ðr—ÜþW°ÝÆzc 1oecM}”.;å„OÁ"ºk­zÙ02=X\<Èd¥ýßÀ¶ÿÕ1ËÒQ@'‚_¼}ue²_ý Åz¯óÐðA²p×ú¿1›nã‚Ê´JÇuHÜ™Þ@920îšFôBÑðÁµÁÁY`fAÁv“Rܶ-yæSâRo•Æ¢QÓèͳ¢”G%½]KóíŽ è ¬Ìl;÷•ƒ‡Ùq—F¥m¬Ó¨ œŸ^}ù¾"W4 DGß8‰PÜ>†Ó¨us˜þ`1·M”,Y M–¤à³b†h­™Íq]\-Ú£´(…¾t(ºëlµSžäqXš¯úàá‰rjjNžAV½g?lvï*ÀsK®rÙÅEñÅÇ>瑈j·~–³qŸõA!ï£þ‹ƒ&pîzRJ ó(鵉› ó±LEý§Ê¬gÖÚu>]¼¹ùò’à¼!ÏãÛg›ýî‘5ÈgRÿåÎ9Åx÷ÑTÍïñÅÛÇ‹B昺 G1¾µµƒô«4†pú’ÜÜ4·£»?ýLÕ6 ê@,ª‡¶ïôÇúÌw¢>]yÚ\èù‚J¶”5䜇Ý”Ê1^3¦JË(n´€ßê–†Ûu]µ6”×-—µFÖtu©ë‚-0‹0i¤>‰mêƒÔ[¯úø!<®¾X’$]yôÌ(±µZUp^ÜEüG¡Œ˜»"±Õ3´Ý$]ÒªI6ë-Ëܾ™» ˆbµû×s.ŒÝ”kïDaÛÛx'BAÂ`ùND\”H__†ºE_wµ¨Yòõr{9á›-<³=@8ç“ År/[äÁ·,ÿ»âE©?BY¸íalîIÆ¡yÉÁl®iR>œPm¤¯/^ MðRD\>4Óø‹*. ¤Vž(Bu™3«†ëîÑÔˇ'u1B<äÓÀ"ØEm¬ÑAÔ·wcŒ„ø€ÖŠ>rˆ1F{“)úˆyNm1ÍÓϧR“ìЮÂv“$IH-iLš|®˜D\Š^JÞÙ;ÁŽ„’ŽÓª{ ´Þ‚ìÆŠ\y-G0³9DæbsY •´JF@èùÚF–×Ò/õM«¾õÐL—‹xæv™ÈHa†Ë‡Câ»»KÏšs†ÍÐu SI‰³4fã_”Ã÷ß endstream endobj 286 0 obj << /Length 3815 /Filter /FlateDecode >> stream xÚÍ\ÝÛ6Ï_! õYEü”Ô»{HڤȡisÉ÷ˆÖ¦×ºÈ’£Ýl÷¿ß ‡”%ÙÝ&[Û[X“¥á¿ù"‡‰‚« ¾ôìâÑ“Zi˜j®ƒ‹e ¢0IxKr&‚‹Eðnö²lë3ͪE7oóª<;çq2k«³_/þù( £T2D¡ŠTÃo¬£8j ð;Þ|TÕ€jÌÃDi’¥÷,¯æ¯ÏD4Ëê¬(LAtÜûß«(M‚鯥»ÿÑ| FÄ€Òä×¾µÿ¼õüâÑÇG ÈF R2Ū0ŠT0_?Âv.CÉ`Éòn‚å£ÝsˆvMbÄaª"޳e„u˜B;G—›"Û¸øÓ,1‡Q"¦<1iWå(eä%»ÒtYážÁÈb-gÖÂÃÖÌWeþ±£É˜ÿÒ /6mG xÔÖ9Ø^Ð{L!|¨ÎÉ—û2¯Öþ{ …„`~°* IS t¬1c=ðÒRï;Ú²þkv»ÑNù½\ÐÔr¹UJ¨"6Ö#C@—x‚. ÜšZÛËâ,¶8ƒn+ÒØa™5+šR¨ trÿ†{ÚÈŒ‚[Ûl¡ÌÑE®ý¬ŸoÛ³Q²g/V¹‹,è—<1!| Ræ¿DBB|ß-¨€ÊMZ¯Ùi*o‘§ª4ƒz²­·ÖÂ-‹ðªÞÑthCôúÑìsJD‡[ôïÓà`ne/TGñ5„¢]¾‘¯¡àk¼À½ÛªvÎ…ÁÚõW`ñª©›#ù ’{*=¨× #ˆ j°Sõ¨`à€ÐUãjK HØ[h@ÅTð‹èý3{ãc}  WQ²£o_#ò†²×>°#G‹´ûIyME+ 7®Ýëfª5+»-`Ë^ÁŽ7¥á;(oäè@À¦;=h”ËÀÍÐR"•à¯É>Ê… ‹´Íˆ«î}2§9¿{~¸ƒƒTI2eè˜ûwHŒù˜£·ß¾yùú`LIØÙaŠáÚñ#1$E:aêâåOwnGp¡¶.²…Ù«Í'ÄÎAbÓã͵—ëMU·Í7àEœNà§oÊ æa†äدèˆì­“‰m'Û|ý†›9 nýb³î:?ÀYÕþ;¾S%8,•$¨ä·›c1¨ Í€¤³F?>}õüíÁNeK\í0uLÈ#IM˜zýôÛç_ yçÓþÐçÀŸ øŠÝrà?·øQWkŒ5‡øL"a6Å­ßÛºS$„wQMéá{]ÑqNy·³dÚ³^i¿Y·…üàG ›lÃç…qQÁ€k˜l£·&Óf/A0úñx™4qï}Î qÚ÷9G,‘aÌÓ-´¾lP_Æð1{'1¢]Šþ2À…í;m¼ëlãž:)hn›Ö¬Ã6_›{--†û¾Ã¿oü.Fôé>Dìòâsûœ“¿ŸßkÈŸ;ŽŠÆSLÏýø±ÊM ?“F¢Á4ý³oŽ=Rqì龟&£aÒß^eL·Øé•ì_;_@#?ŒìßO!×oo›°)ŒÙœbqrdîoÄ]N?ÿÃ&oáÿBfzþÕWxr%èCÏx$Õ > ¨ÇÆìÝýÅWYéѶœø²€öäü64&¼we4§0Œe$ðír⊿c¿RÁ‰+§±ŽåXí÷Ôa˜¥)nÖòc<{î»Ø›¬3Œ-—Ùüù±™Ð\›¶«K{2†Ïè”åac?Å!r–g2Têû7HQiu¨¤öÙJ‡Šû8_IŸ’!ÍC&ô˜¡Mv0†bJ•N:jt$ã(sTg6ŽÜ*߉gH²g1s(QôQf™uEK=p:ª+¢w rÄ LÜäQ:žÙW]q°]­Aœ“¢)*9jóƒ1+<ÞŸð£p;S‰¡Xƒ8O–h^ÕÆ¦Ö~Ž(Šx'Žàïr‚\êB2³ýs¡¬-©¿n¨ìNR—¦¦54,XË—ôë6¡´Ê®·Z<ô#'êO“Ó¤ÂqRaÇïBÔæê`¸Œ4„”ñKG´(#­ÇåÍÁ¸‹dgŽšš$µ˜¬Qkê/63x»!ŠmbÃÃÚ„ÀÚ a޹NÇSxH{’€{'§„9PÔ<ž€âpö$E];åGŠPÅÇ:MÄÒÉõöä.ŒKmVR¯ðÉvHNRº•K“ƬÕhVV-jóñŒÍ0­–êö^¶·6l´Ì«O ®ºÚ'aÚCŸ* ¯˜ö¼Ûøï,¨;Šhºš)2r6Ý¥ÏÛ…w³¥Má¶ßÜl¿¿Ü&Xíæuò0óOÊÙÏ¥{¥íʬ5ÅíY"mcâ"eÏpYœ„:9‰’1 …%<¼ìs–† rÊÒ#)Žß–cŽ'ûœ§öHzÂÐ1…Ij9ú\ᩚä¿úë˜\^R*¹™¬­Û#Ãë¬è²í›ÿýw^.¬T޸̳s†zvr¸·“$SÖgËÈ”{3w×­ð±K燇.ù‹ƒ}¨Ú.ÁÏÝÆ©Û÷H°±LûOøÑ64\¶»V‰ ëÌ¥àð$…Ð`¢v7Ù]r•¸2"íç Ë~:WÙ¦¡–>©’»» œ®7àìñÑû­ü ´\W»þ™k]|{X¯L* \&áIü4à2 ˜ˆ¤þÕÁ2edÄBÚàTì =ÅÙ˜×OÆ oØÑÜ^­;? ð1âçÍÓWÿ¸Ül>7~ÖÜf` G1ý :D“ô·…ÅQöÂ'g?þtAÚ™jö‚À¼Dï©É¡ô©‚T™“nY¸ê/Wô•–6­öm])£GÛXÝ”sJs 7ì½ K |,Õa }³/ ¸OÂDbTðï/m2»ÏÕð£¦ëB>Ï¢ÎÁ7lÆ™Eö‚•ðLá}-—ž-É;Ä>ÿéšm>“Mž¤þÐçao¾õnÚhªi£P±ÉN©'‰@»wbz\ÍÚ½±ÊÊÖc bÌhÔ°'¹¯‡cº,J0(9xðÆu˜èd‡£#*g‡ TË¡ÆnBc^ì„£Æn@Q'ãú<ï Õ`ê){ó½rRc/ªÚâ@Ù8h½Û¾ æ“û÷ƒ{.¯9›×UãÊÎáKÀáC‰—)Þµýé­ëhµ†T³ò²ûäž—Æ,Æ9ßmÖ‹.fMolž–‹±eÞ_¶¾eʦ«]z—MÉF½‡¥þnçç´]æÛÂ_\ xit3ÂÓÆN×Yî¯n ßÙÞΔ½+Üç©Õf]µ®\ú¹oÂɲŽþ+©hÇ [P)/dÿWSá{ endstream endobj 191 0 obj << /Type /ObjStm /N 100 /First 886 /Length 2024 /Filter /FlateDecode >> stream xÚå[mo¹þ®_A _î>”KÎp†dá;ÀIà4@[N ´ òAQt9Ý9ZC’¯¹ßgVë4²b`#˂άp_†äpæ™7. »àb).æê²#"܉#U«8®-;É -¹,Œ6»ÊmrÏ)€6”8¢"ªÖã¥,¸@w£±YЉB÷ ø‡ÅRqÁŽX1w(Ž$aHÁ0ÆÕQ‘fP<È”ö+Š' áÑ/TÇ$ö*8N¬¸ˆŽ)’ã\l6ÆzƒÇäRä<"Œœ8‚˜ÑŠÑªKÉ‚’Ø0\ÊÝt*6 E—*ÊN‚1‡‰Åˆ«C'Ù›„å`Á’Äú(.ªMYj·b¼Êr`t® ì[ su 0„JIÙi$IDkbbrj«£œ²É”‹SÁ¢ F§Zmtt*'è,f´Ðaø16¥â2eQR—“->%—cQq1éKp¹Båx›«±fJÀ¼Ð“+Qí‚\a6ÚèJÇf+ZËú)9kôɆ) š2ƒ+5Û“âjÅ Õ½"W’Ë-†U•j¤ÕUå:"Å“lìb|ÈK À_8 -\`a¤É® MàW ÚÛ–bPL^ì"$¡ \%S]‡f5¨aôµA€çØÉÜ@mõTìŠ ÿ6J”bo1EÌ&³(Ì9Œ hƒOPD AF''£æõï—SלÎçíjÔ^]¬f“v1½džªú`Y#Ö.s„°sÚ+×_%V' Ì6I×¹“q©N8àA´fÈ&ïÎ6ò3K´3}-Ð}‘’í%êŲõ¢2êEé£Yíbíbíbí"÷mzŒQOÄ3´ŠË—jõ?8+ L:J–rl•Sçæ#ˆ ,Õ„@Íy¯Þb9oÿ{7ù”­lU@ƒ9™ x+ß•ƒŽŒY„gF²h~Gº¡ÒIXr2tŒ`àVáû$$Ÿá©jt(ñ^åûÂÜxòóÝÀk8 þÌo‚hà݉ß 'Û¢ì6H×Q ‘"æ¢Ò—fPŵ¼v DÄ[ˆâ!…?|`1(í­ÜÞL<þ„U¼kÐýåÄaKÅò0T<Ü1жcàT¼”<Œ6¢&‰uÐÙ‹«à´…#¦CâˆãƒÀó`m^WS≑&Åj!´\‚瘆Ñ" –››á·ÐÚ^¢rOPÞK-–â6®ëAq½Þy´`ë6?ÆZ+ ûµÞ¶‹šPc‰£‚š‹ŽrÃŽr€}Ù—8”‡é5ÊÅjŸ’cõUö™®>ŸÎÛ³ÉéÅìÃü£¡ö†KIa°KÙ í]J6”È>mô¶4µ9³ï‰én Mª[›ò! 6õ†šRßÊ#4Øgâ5š}ˆ µZEŸÃ¡7«û¹\7ÙÐâ¸ÛGµÓÁKˆHвW “ÙŠP[Áé5`ž·¯[€Ã}·œvì{ýÞÝ0À2ÜËv fõšó1I‘-›>¤ÍI¿!)ñ1Ç,>î>·Y–FŠl’SR•i$ úiôÄÞž¡e$Rùž>Wo¢Û?ìj.ºSÊAsJésJyœ¹¤}qR—rµ`äì3¥©7U$l9¦ÌÓá9™~%'BtJƒhcH¨±â>-eßáC·Î#ÙI·{³-7íAùAì¨ •lƒŠ¤ËÙpŠmW dÚJJ}@¹ÖÖ löqÚŽ÷ÄrÌ%oŸËrH äô0€¢‡='¸—€²NÊAÃIéEäþøDéÓ­Ò£(ý1Šò¿Úµˆ*Eí§Œ,,ûÛOõÛ³¯ñâÓì·ŽÕñ»eS°\šö±y!½ØݘÖžÁ1³‹¸;T>}µÿÜñ•Z\Br›‹çá“ÅËg–“"? Ãÿû8¨o endstream endobj 293 0 obj << /Length 2679 /Filter /FlateDecode >> stream xÚÕZIsã¶¾ûWð(U a·Tå ۲ljíq$9•T’zER”Ę"5\¼ä׿ÆJmN/3“ƒ-Šh »¿^[s [gG“ƒÃSY! =êY“™åbÔòE”8ÖdjýÖ;/šªOq¯œ¶I“•Eߦ~ÐkÊþ“0Â!#ÔÂÈÅnàçïaß·*àðÄÐèŒsu׸ú®" ~GY™\÷Ü‹ª(ÏÓ\òQ"ëÏÃSº¾‚í`ä8že3wµàJDêâ0°¶?…ˆû‡@DŒ@xBm}ŠYû‡`Öprðù€€„Ø"Á Tv-/tÆ®•,øeˆÑ„8¥Öìà§Ê(ìçËG¡‹)Ç``E°ôPD‡x•G+Åë•¢…¾¨RÀ2d[J­òÇß±‹ál8È–cP…Žö¬}Û H¯Y¤ðà“^ZÜeUŸôʾMz<,Ó¢‘Cåìëú…ô„Î0&"å]`æ,kæÓ›«¿ƒ—»®Æ—¤t+‰a³ˆ ý¤Ÿçeåkè—Ç\XQ¼ÌjùY§UåÙ_éT­ ÒeÏG.ƒ@'W.–§íÝ÷©Ö¤A¯ºåÿÓªF}›QÒH‚¤,êôs›‰šÁùQÏ%ÀüQó'7¿w¿H¿rî ž‹|nŒÀA_Èüž‡0£À<Ž9Ï3?xŠOµù%–€iQgÓTâÉW«(¹æ ó"ZªÑÞî©‚]ù§™µ…(6µ2{"jɆ٣»(Ë£8ç¾å8ÀV~Jgsç×_8+E Ñ_Öa]YûZv÷Á¿RÏ'P>¿Œáe@ °W ž÷>òüP¾ÜFþž#¼‡eü¥mƒÇYC…g¢êSÆÀ-(ÿ>b€¦ÆßÛ0¼ŒãWóƒÐAÄ7pòÀ6ºÊºÈÁ!ϺÌ}#? ò€£ ,æ,]°-•XÖiýf.ôœm•üý½T"°,%Û:ñö­”r!Ly™ÞT ÚhàúN:KÊ+úNçŬÜl‡^æî¯ – dÔNƒÆÜU˜ßþÀÖÆ~€9¼º”K‹W“V²rkÌ2B¼ÄØó¢}“ª½—M\è7ÞËØŽó Ä.`ãÝEåéw{°€Ò¬ CÑ^=ˆãɯ×Ãïå>Àr Žás¦ÝŒÑÍäÔ¤<²‹E‚n3º+±'° |us9¼‡5ƒÖÎwßõäü²ƒ :~Ö¬³£=’Jžÿ høb£~º¸L†OcÄþ޵íð g[Û+Ãå§«ád0úUæò¾ÿmûÖåp<œ Çÿ%™¯×ÃÑ`ðy"ò*¹\îwQXÜ'Þ»EÇàäd†~at¼.ƒ /†×!2ö2Wîö~Þ=ߌ†—ë‰öÏÇnïï/‹“öWùËù H~~z~<˜œº’¾qѦ¾øõ5{ÄÏڢȊ¹ìkÚbšVûÊ7˜  z7q[4mßö0íQùåb2~}ضзÐ÷2jªìAªº'"²iá—)õw}›1·7Mû¤7‹Ú¼yvKHózEŽ.ã½]ìæ°I ‡‹r™ÆY™Äm–O㸶D˜Í_Žó,æ£8jT—ï /OTS Ó×t—ƒë~àôÜhÇ?îSX9„ü[Õ󈟆¾ò.?Ã%oaí¨V¤êèVûjÌÏÉk~bË÷'Ó¨/MýAÒΫ“ô.KÒî{´Zd‰þºL›…ò~ýªn"5›Ég¦Ú&Ëëo8>©{Žm„XoP%h{¸“8“š†¡J³£¬Œ º¹ ánDnhÎÒ"­7ù6טÓðä7+…™qͽTlËKS16r¼@[C.*æµfíQÃ8‚÷òÝúI¬ç:OqÄY2ȳ¹¸¾©7gt fÉ©8þš¶J óQ2)ªQTÌy¬5\’dësAj4àÝ–b(í:r|!ÏŒ®uúù}¼]]£8Z"~ý°¨“ôÊè¶ÎªÆŽêhÙH°ËÜð'Âcö3¿}âj$@•±¬êh²v¹”vâ—[Ç•XdVwÒjì ä'<#=œÄèc­2Ϋ¨ÑÍñø-æ$D·…`|_œ‰!uï jœïçÎO²¨h:_5ÆyÊ迈©©Ð fÀ:÷] ŒykÅ=‚ð7Äe47ŒüÜ%‹ôõ¾=JëUÄÍ©pä'0Q¡È7EÞ4Q²H§üDFe€£ñ\„“qBºâ§YÎmtÌçJ:0Ò?Eùù'c¦Ý/£²Pµ‹ÄÛ¦7ÜxyDzíäè\Ï%ODßIš ßy®0T•úªœâ½ …qmä+Їgg°Ý˜µNl£i]íý°Œ<“CMB·•I~a]²«ãüÓEÖ˜´KQ¨§$«•žt¿\^È…¡Q ¨£ºN«¦YDöqúX1”Ý2bº4Ù)‘Eâ3M²ØÎ7…ˆh} «XF£Æ@€ q¦Þ¾àžl$ëˆÜnf¹2bb[ƒçeÜjjyzßÑ{j„gUîØK­dµ¼Mn!SC<•o’r¹‚©´”Ää°D{¿ìïW7nðdqŒÀ¼[AMwc nÞ͚ƫü±2‰ý £NÓ¸/»ùÆ’Ó ÊR£ª}¨ºe×ý+ÍólUgµÉ£Fô.Ê[˜UûÄ,*êLÓ»OÀ6‹êf­vüºbh T"¸í$ÒèÌŒá]#Ë|«!ÆÉæy›vôÄ4|Ù´;¹ðõâ‹l¾¨Œï•|±¬7òœ×ð;ü|3¤þZÆEÓT»Np[dM¥ÝÏÑÞ—C¶Î-Å6Ó¾Ÿg3þkä1ÉÓÎm÷{Á2E [а`™.ˬ6éµXí4gK3Ø’^–óäê÷Œ2žÉ«ÛyRÜ‚óŽ¥îëVz' ÌxÄî w¹ñL™ý[€Æ4H¤“PîNçЩջÁ¾j«ÊÐ1’Aƒ/sÜ4[kwL·k5³67ݨ R:{A­þ¬u4ó¤Ju1¨r^„¥’| ÀM¹R­ÔíT¤ØûBãN´RUSA^¯Z^·«7u!ç›~Ûf{E”ýs¦Wð‘g¶.| ÚMðM›t›A3¡É¦uš§,sjª³!0F˼ëZ´ÔÁö6Ö­ÆzC¹õS’Ÿœ2€×A”ÿ´Kýþ„lþŠc89ø?ÁÔ» endstream endobj 310 0 obj << /Length1 2164 /Length2 7967 /Length3 0 /Length 9154 /Filter /FlateDecode >> stream xÚwg8Z×6Ñ¢DtÁDï £÷Îèb=Ú`bÌ(£÷Þ Q¢·è%D‰ND%DDÔ¨Ñ"¼“sž÷pžïýñ]óÃÜk¯½î{­µ÷Úƒå¡Î#9k¤%T‰@ñyùÅòPg‹GM$É£‡t°@øùxùùù XXœ¡(¡h‚Šôí\`ôº€(*. ".(àç¡kººXØ¢}€h??(ôç°†Y¡–P[‚€ï«Â ‚þ¶[»:þïšÔÙÍ`ÿ;ÍmDÀ=ÖP>-$ f°+ =a¶v(»ÇzA€¥'@†rA¡78pÔV¼98 ÷ÇË u:»A­yÿ;¢²+®eဎù§€?Eü©Âÿãgáƒ{þÿxª¡,à0+9„- àÿÛsQ†y@­u`(+;ÊÙú·‚°†:Ãa¨Òö§Â ?è¿Öôí`Vö¨‹ @Xìï¥'п3×B:;XÀÿ‹аþoåèzÿ¥›¢øDç± ×ÿÑì¿•VHk $ °pv¶ð$@÷„Þ@ -Èõ@gÀÇ‹@¢Ð[Ž®(_€ Ò™àO ……|rL#aŸü5ð)\#QŸâ5ð)ýƒDø|Ê×àS¹F>Õk$àS»F ø¡µ¨_#´k„Ö¢yÐZ´®Z‹ö?H­Eç¡Ùõ®šýÑ5B³ë_#4;ä¡Ù_#4û“k„f7¸FhvÃÚÓâB³[¸  Î0ûkôvËP­ÉÒÙ ‡Ú n˜…þcþûÆü³ø·ÙŠú—¿˜à?öÿÚ€–gõBs[!áèCûDЋƒÃµh zðYÿÑ•°FÂáÎ7<Ð* ×AÑБ ÿYwrµ€_GAëCC¸…Ã(èêØ\GA{ØÀÜn„ý³Œt½I‹v±½&A¯Ûþ™rЛ.èt쮓CÑÎÓÑЏá¶Án@´øg7 ºö7 º^×I£ ÿs©¯×ÑÕ½‘ípM%„Ž…@ƒë" ©®–æ¥í IèYˇ¼މ¼± D'êx½Œæp´p†"þÕð?Öw_-ÁêlEÜpþËCZß @WÖé:Ï?Èêò×tû'艂Z[Þh«ØŒ.°¿Fçu@´÷¶Ñ™_—M½Ëêû÷Iúãu»Ñ+!t˜Çµrt6.p »ÑÉ\§&„®ÊÎzã¡«…rGÞØ€Žáz};М®†¶‹Òù¦|tßÝn@´`÷wÔãD³zÞ€èvy]kFGò‚:ÿ­àß3^dž@é{:þóâüúaà5Ö´@_h€1€ý´þ¹š}n|7ý?^yy¤À›GÀ#€¾¾Âè3.& êûoG+WgôqAýõ˜£ßŸÿÅ60t¡P¨Áô$ÒJ"äÙËŒ4T5uNÏ ¢ñˆ¤  µ€ÀÊï¶#15º›®çXsŒ¿?¨šo{¿óŸa´¼ÍüÜük|¹@ų®]ûÅû÷}&{¬‰ƒš›%c›Ïë:×P\¡˜òñU`·öžzäÉHº¯ÙbsþÜú…1ÓGR3ˆ½N”˜GÑ'é{ƒ;`ÒƒMõA Iktl6›³ð=XG¢Áîë96ø›Ê @TÒ}áѨ”ãÑN§Ô%bö:×Õ§™æ‡C¾úVéû•nš¹ðxì‰ç+‰xïyˆèéy#¬Ž_‘Ýú^Ô½z&H@PÞ‚-êGvPþøÐþè圽ýî¼NMè|ƒµ®®ãs3®–òô]Ž|2 llsÏ'B̆}m9˜GœœƒF¦©ÇúñÍÏ¥‡/sšCw@véÞuدøïÔ ·}íl ž$?èU®? –Á¨ýñ´,Žl§+cþØñçÝg{ζEªïþû LMe]¶Î0•Vé@–ì¾3¢‡c*ñØB¨TP=R7ÍÌ-•$(Ü(W1éÕœø¹§ªEåó"‹1é]úý.S¥1ð§7K=TO²öݺišr¯¤°!†é-äçxwNe¦Þ=¡ÆÕ8v¡K,M“ “+{  ?;>÷(ÂÒº%/vãW¼ævºÀYP9“l³'k;jÙF¬˜‚6¼bÈzí>˼ë‘ÕoPŠ2dþTHt„nSÊÊjÁs«yV>ÑóTÛ´Ëd©9Óy鎅4Îrj¨¶²Ë$JuÔÕ‚;iM²rÎðY™§bc­9¼wë(÷¥»>ÏF] ¯™þB¢HkKÈJÌÜ:yx®aaU¾#d0“ÛT sd„ȠИ֕ߦ8PD.ÙâH4‡ªÎ¨pÔ>ëâ‹×ü<Ùšßê/(/Ü•N!µ5ÎU*ÙÈÄ`¥Ú‰=ÜÅéù¾pV7~pÛs‘R¤\œ„1¾ÿÂK©d¢¥‹Š7Ñ“ÉyqQ`«,Sþå‘WR´¸eSÕw,¥Ÿ4Ï w+<*Æ,ל^ÇÏuÑHŽzk厫LE&\JR¨l6n»¦ˆÈ’9\º¨žÉ]"®|ùá­"‡ûÁpíù6ÇÃhš'žºœÛÌ)L[È%HJsÁFz–Ø6ï¾øzq÷È„ðSW'ïRóð+YÕ<ª¢gc·ÓïWâîmÞň­Q=À¦œn*¹§33ùbI‚”‚?.t¯ëóÌ—¼K€ŠMH˜U@©ÄMÇ…·Ü¢­åüˆ%¾FÖHw›ãL‡CME'9™Üå¾Äó™Àt¨róã.½|$»ATÓÜÎo‘©6‰ £7sa+ãrv$ç-Žóå-²EíµŸ°•éO:p|?ËH–DI|St¿zy 0‹ùeŒt‹Þ­›‘öáCÈEÂ×8"› SÃÀÀÜ*½D¨8²Ú¤Éà[4aÊÌ`í×Ý0ïLñÀ‡%S?H¾p³¨a9Ú‰bÅ%¡ó É»Qó4OØt!îT»rߢiwZ²Ž¹ úÀt “³‘WAâƒvß›*ªÚí2Gý)Ã/[û]Ï«Àð4È,ÄI¤çah­~¦ËŠæz1L-l½øÐ–›# SÁtM¶-7²qûHþ É'~r$ð4šÊR­!§ë¢ð(É´ç ,hïD@©-8´p.«á»Ÿ÷^®D‘fáÀÑœ…º3öL{ïXt粆"}*‰ŽôD Ò¦í+4uª¬4€Mwk´…²8ô´›¯od•bW„ÓÖÚ2°~õ#Ö»µlµkù¯Ýnx*[ðƒ"c|H=Ä!oöòŒ£ÿ%ÓþC°a–S !¬Žªá'ÊâÞÅr(ƒª¶ê9a§NÉWñþÅïÁÔ 3ô*¨àP˜ôÒNVAÝÕî%ÞÝXW‘Y,jê*7æD°Ž™1†Âˆ/ǽ絭…‡X6]Fú>b>ÀwSTÞâ’™å¬÷hD1¾ŽÌKÛ¾·fîØBecV&ð¸Ek7sQ>­„G`^ÆË˜/;9RÊ„‰—+íüSa"cÕì “H¾áÇ „ i°ÀOM˜<%ÍÉ'zxú–:cÅÆäšè ì!·§¦é¨“!ZWj*K“„ªÖöº V‰g™Á ÇŸñ³{0'ÑOéû37²"ÈøôTÚ¸œ½’œž,õèˆRЧ‡û€‚îDUZ\qp/åÖÒ‘ÛXžGQáø§àz[ޤŽn?ë%zmÆú›Ÿæ¹ï›ºùã®YÉ‹)º/+· ~à_†—yÔ‘ÔGß mˆ«<ò5ï=lpk ì·‘­xƸÉÏûË—Þ@ß©ì ‰ ©¥v$AÔûE8kq™–ǂĮ¦Ä­'ä+kçÖff¼¦cË õ“∦E-ªó€Ð¶Õyizf*0~g#UT 'eþÖ †Òû/^ÿ¶ëõÜ:âwœ#ŽßC#²7C×½öômxGG`Ý1<ñXÞºœç‹r;í4X߸F¥T<í+¦¦1ÏeocMr.›ŽŸ–ůNXàGô}þž¬á$¼«%&ˆsµPv³ÙóÒ ¡u’5ãSs[%vþ{ľ`WU¢Yï9!åwq–ÿå bÔx$Ò/±:eŽYU:MöÙâ8½âòE¼¤óöš_&Ð<ÅÃdöDá+ÏÆé¼ ØèŸËÍýþXëç'† Êš¾ÆEìùŽi7°V¥±Dw±ËŠjõèk|@hð@*ëZzs(çôÄ¿"w^â 3|,´éý!–vW[ÁJEcŒIėе.Ù¼ú¬PÌl[rC£~†§*¹0·¢÷ëC‹?ˆ¹ ¼I¢Bb\V•õºn¼ò§â0ÕGý÷7)Ç- OFßV;_ñzWüZ[¦5úK*°hœ]À‚27.©sðÂÕ¤+×Z]*üãSé/ ¾Ø§6¹2IÆ)Ž¿ƒ7z·p?btÀ-Û G}H…¦• ¯âÉý’Lµ/}½dqá¼9I/;æb-Oô‰ƒ †Qàµl¦§€‚ÈÁ$¿:lëuqO¢õhòb|øëŸ^'a쪊u T·®RèK±‰Ž;Qô”e>*{ù )~ X:«x%™ÇEäßig>+Bf÷rt6f*±d"§Ç2;óéÎãÞ HÏ2 kçœÎèäÍ26å(OQ=v œà_¹zêQ«õ#̤J×áè^a*Ii'×´©º¨Jí5UžÓœ¡å0´ì¶úºÏ™š€"´^î­ÖÁ_üû\«L¼\Š—[…Æì(,eéÒƒ{ ‡yºŒzšÍ–E®DêK‡qËévØ> +á£M¹ÿ‚M›éhB;g,&ްrøRv9oÞöá¥Óç_Þ„ïMCÞà³qжzÙŠ éÓ»¼“ˆÍe°ExkRŽìMÍt üè÷DR’‰9ég¯À ÛÓ%Vf½ÅE1wƒ õ°¾A°ÞcýuD¹ì‰7°ñáÓ½oN—Scä÷Ñ÷"¦ßÐÃXnÖ™c›ûéèÔ=3cJ r‰HÈ@Þ„bzxg6&ÎgmÉX®ìY´šL:ÓÕˆxG»…õcï˜x Ŭ1Ë+KìÏxoƒ¼üâéeyëŸÎñž„©þ†p pqç}¨ë$ÑO€lœfú,L$ä‹!z¾éhôüþ\üª€IÑ•,“òëdºLà¼ðÐ%É™£C ûùØIŒ}¬¾f\I´=©nà={{B Ö+é9ß”,üF"`ò=‚•ç.Ù^a\åZá+I1¬²u>„¿Ÿà«e äGE¼¶VÎOZb©Ï'~[5ƒÃžyô›êÂõ—ˆ*ŒÛ’jðƒ?òÄGòÚýâÁ4Ïÿ‰ÌêwÏ\¹ëýsæ%&oƒL “bŒaEÊ >ùÈPfDJVgõ‚Ÿª¬+h²+8„‰|7~UZh?büãøþT,3óš>kàP#©É7ª;#£…)R¬¡†Ü¶.“y½ûg"Ü#U‡LËLÏì¥:;söž¨8‰Å •§îèœîœ/J å{« KèØTø¯e¶¼ßùØ£Z_~r}íÓÉÝ^÷‡l–Íݾ=ëB]®žAÓÙ0‡.±Q%zqLpÒt Jp˜`bšt'ïÊÓÛ²{8ë4½Œõ› Öì²#A-·ÆZo¯‰ä™¡·ƒ®:¬  onS”úXù¡ù^ s£W–Ýbô¯0}®È;++¤¤üeØìBÒ£ñy©²£îW|RyɹÎÒoá’µ·ú_úœý@œ–¯¹9ÂòA /U€Õë$ygíÄIÑ£zŽ¥˜GŒë 5ô-ÍâE‚k g¥ˆÁêâžþ°ð6(%ýÖÄ+Tg(t+`·GÇÜ‚1’áK¢²HLMN¤õ8,ö¨ô Ù™ò‚r]fÍfª¤9í#§dZË)ÿ“ßx‡œò_ÏñU‡ÜW½m3¬j€º˜òM‰iEž¬ÕÉ# δY¯±²O[¿ŸQbŽuá%u‡®×DJ Qg‡¾ñ 3ÿ­Õj´¯•/ ^ºx²W¤©'Í]ô¾Àáþ»æÒ2ÇŒ#Pj…ƒ­"è¡Wù‡æK½ð«i œINT{ÚÄÓ\+cPhÝ'ÚM¿&µX–c_U/1è<]˜õ›ß Všà&«¸Ž£¿¬T‡éÃ;¤2Û%]Zú¾·È{VÑôý¶ßQ¤¡ÐÇðxîÜ0Áp}½šÛlX­K&èÛQ#Êå·jˆ›&!<ÅbœÍœyG G‚³vOþ‘ÏtÁ>im@Lê1³æ3DÞ—·%–`öeaÐv¯V ûa[œ7øméÝõ©ä|'jØœ4ùî}Óhh;©žXW@ä³ÝqÞ(âìø<Ãù–[L’ÒB:Žªx÷rÀ kŽêÞîÉ15ÚtÝ·…‰¤G_šBøtKÛYJ6?°«HMœå¼]ùJk½óÛ*ó¼1ûäð«WM€4±f9¯i‹¨Ÿo+W¾DµŠ¤Ø«‘ß‹À½Åÿ½V0CPÈ(™øU‚õÅȰçñû€.fÝ´Ë3™¼úbùb°x<¥/n‡ï’âÄÁñ¼Ï+Çœb˜180†Ö´KoïKŽ‹ñ6àÑÕ*¡p&>3/ãEàⱃ¯.~R›^Œ±ËCZLÜý D«&¸ŒOîYŠÂ·üLÊ1ëoÆë•3š5|ŠE!ŸÔŸçámÔMµfMªO„¯ÚÃ(ªüÏÔ/ˆ²Òàã-ˆÜœŒµ×Õ?*õhp©™ßͰèõìÊŽ±c8’±bqÊiû϶À»Ââ–»~8’õLÞ®£ò, ÃJ>2uÛ€q>èâ»\™85Ž4†mž~=u|–ÀÁ³ä ©pe†À¿¶ãçá$å`Ï·#BŠk¶'µß±lL¨‘0T” £r’þ‚,»´¦VÑ‚AmÁùÄ©üŠ˜báŸ_àÙô›‰ÌÝyj][HÇQ­ú!¹&CJ®¬0mõæbÛ“ËœC’DÆE>ei®, Xæœ!ŽHÉKvÏŒÀçw ¿ób£—@+%ls•Šr”ßøˆÛ$æÙÓ˜r· V ý3ﲂ00 ïÝîU 3’É?Þ4u‰¥ŸÿšØSú|¥î¬Û Ã! Z¡QBÞ¬JDßMxi N5ÕÃÆ\ìÏ‘{ºùŠqHOÿH•€ê¹û=°‘y2=_¹æèÅfÍt` µþ g#SO´”s+¼uï™ÿ¹Èö0ï¡æ¡pŒšmŠ&—¡Yë U˜áSã&dßðöGñïôý炦9ÇÒ§OSgŠ ¸vˆ ?Ç_ñ 'PWyÍ›ÝÂtÌ–®,Î:õuYp1ÛÌMˆ¿¯,ï˜9bžá|«¯îÃcû,ÀÙÂ½ØÆ÷­ x³ÒÒ‹Ž­µóßjh/³®1X‹¬Èe#,óYÎã¶ >n ò?.Ç PúTS`Ûh§6Ìh³V¿[×µLE_#àÉ}ù$65ÍyŠ’¬nÿ`ÂvйGZʳöº³ká”Élð\cåG6{–4'î(Å^HN•RÅñ£æ'%^ñøF^îöŒî½tùžJ²ã}³°G_P²iß•+F9>yB.[û*°r}êT‰³'C²½^§Àx$_]-Å0Í«ú‘êÛªå8ÝÑhc¬xŸóiǎ팃©i,Ës˜Ø[w$>9ž®É ê›ÍÕ¿Q"êEVªË„¼l˜ÃŠØLn”‰í’Ò0µZaYU‚x_ù±ÓLôƼ=¶ðñ²Nr‹ßòi `2™W#ûDª˜g܉‚î —½Å7Þœ˜{:’»¥\·*z6Ú$p{¤§c®²òŠ¢ˆ_ö‹Òò VÎ7¿I×ä?0ò±|^ÕÎRÜÊ7|Lm÷`? —¿]_/øƒSý=0xð§7‘ºfÕõó1Qˆ¹†E¨ïJoÒMIX‡qÓ«¾,55îZƒ%QÒ˜ñÅ sïwL—Õïa^~jãšzbØô g¾Oû$GG–væÞ¿À¥SåsÒw+%! ~9JÖ˜²¼ò[šÚ5wµÎ|n‚o祡T¶G®-*áíHª+y™2I7ÿèâP/ö5•.YÂ: ’"Yß1x u§QÕ¯-¬òÄyH€—‘8­¡E܃+»¤ÒÒV>]µÉÆ€#8Ã&i3Gõtæ{]@C)õÕPŠNÂïTJý]Á<˱×c*D8^÷Æ¥eïVg{†¬¦¼î‡ðzÑ‹|Túía‹X§¤F°»7})ïíF±?QxêCY;°QM¥V꼑ñ8y}½(µ-EÁõtä4T„/¿«.ÅÆþRmÃÐÞö0xÁJá-ù|-áÏí{Z÷̈ÁyÄø¶D~$ÕÉg‰FŒ >ÚÌâ—mL Üû;zøÛ·Hdf¾H4lšÍ3Ü »:2¡Ê3êڜ˞×Ežx ©NT{¿`"‡ŒDµïo´Éòrfé}61ø2ïeÇ*Õût¾SsRú¡¨.B¼ÝtëNÝã2ûÒ&@Çc0çÊÊs?¶Ip¯[Z›²¿ ³YÚÌùJ*ø`XâýVâT:甪[¹ú‹ù7”tGb?¿«Ó |ãî¼<ÒØþJXPÚ ìRãÑÂmì“ÚŸ¥ôÞž¥wôc2gdÍ~ÖÞU½»–£ „þ/ :÷U/ø‰5I1IT~LßäÙò–͵šS¡-v'êÊ~·/ƒ.q†iœ½W(i8i% “ds‹‡³/›a‰n¸Kò+ •„ºÛIüÎ-¥ÇÅ9R ³ÿÄLLºbƺ[Ð= Ô“ç#¯–é nÚœþzÚL&ÛOWÑË×$qq9z—Ç ‡t;㛾¼®(×'§g· ¤ÊO¿D?Óÿê%Á{J4mêKäèþagz‰†˜”;-Òmû¶÷ÐÌLÑ£P(ÓêtG‡Õ–qѧ¸èrž8 ¯o™ñúÄ£ƒbUáæ.T”xnÁtžËÉmºÕ|ZáÔÖÙ6Ä[:@î| [Y®Ö»«[7uhù ûųí'D—’]?e>]ñpf9;u-3µvÔ¾e² i}s„1,BÔä„«":γVÚä¨+Ö¥rØèíój&CæX ¯í¦hoPTvhcÞ–×Ø!ó½ø*?Á<ž:Mñö=ëm±ëQô¨ ™¯N¦îîFè å¢À“-CX$ú FžªCÏë7= Œ„óWX®,‡­Éœ‘}HT#~v}ò«O”|ʰ*)—¬bùΦÉÒÁ Zïf"Ñw—#~B®úÁ¸Óý©Õsóäy5(a Òp%®Ø1Óc`™ùÑæ90T0­jEì]),ìOø- Ô{+JŠÓEDýYPéU[h#vùÆ¥ŠUY¶õöPmygèçÛ[‡®·®.øY Ulùt’C<ýp[œ“×ÝzÕ˜§zýòhÀâäÜÍù‘–K-šâ°ø¸ŒÍHHÐov%tÊ3–­&«¦=KÜl> ¼ç—Cbë×^oLÊCÜÌØþÍq1qÔ`™•\8-z9*\sT¦¢ÆÑžâ ܶ8Ý4—ëÕ®‹¡Wú9NåÅHñ( €ó_ºk™'?q’™]" ä Þ9 %zû90%ÆfÈ'K½:Õ¡è,q‚+Šþ^ 0Ö¦u”~¶Í²vb¥p[Ý’úÝÑWƒo&SßµuñóÏÐ}3¥Çè?g|Ïí}ÿâý¾%ûf! µVËŒEfÄÁÂOB/Eæ._©Ç˜.Eûˆ?!é¿‹å_"8ux’Ô~À¥ÕÂ!—P°ïÃYuí’jÅ ü: âó¡Ô’šQîÁç<Œ¨fùçX8vI/k²e¥n×ôˆœÖI<˯ïG˜ÙjÄE«²×"à’z=‘*åÚÁïá6¥ÉÙë˜-À¹,eÆ[LJl¥ÑÓÉnŒ£Óy“·HŠF³ø°yAr#æÅ:bv¼ŠèNŸ½Èmûy–E‰Í¿ý$­z¡¼>Ù‚ðýê²Û=«¿õdþ>‰-w=|Ë£ ‰&z Ù¹,µa“ݤ¤«Z×JÎÀ¼¡O¦«~ýÙÂZ >3ó꺪MÚØÞ-EüRF:TƒCôÁÇ”¯uvKÇF\Ñ|¸8ÌÇÓ±××»ÿpÍË¡Cl Xˆ?ä¹sÜ„Uhôï’7c‚%oüí—´~ð®ŸW úJ™ô‘ëê…‡}5àõkkmRïNôÒ6‘šálryH!·}Á³1rû››ÅiÊT/GzÞáÛ*ºiâ㌺OíYlݰOÙî¿1*<|ÿ»{z·qÐ?t'xg[T–Xæîwù;ì¦>ï$~×3œ¯O^¼{ïÌï]ÓN§¯¼ùõ»ºp¼þØiÁ÷ègûe]““ï­NúpüN¬Ðçí ×éA0KŸHÒÇè`YÕÔ>Ey×h±*×XI4—Eÿ¦¥szÊ­ã“«ÛM[ ’'ö¹CÀM}'bqü®qE‡ÍN¶­‹4ä³u÷mlîÂDFqüúh7#io¬hMdbÔáA#õ\óÃ%×ÁÔ6sõImv ­Ñq$²ÐZI9ÇOô¾;Ö‘ ä|.µG>Ð"[{ÜßÒØÞY“Ø8«gdó÷n×ìÎg|üÎð岕$þ±¨ÿ‡hO —F¶!¶ïSïÞSò¦óMjÜ&ßq¼Âå?<°ñ‹ÝŠWŒ/âÎÑxlsJ)jÇÒÍ_”Éz‘OºMÚ)ùÖžúv.+[wiâl£kʳ}ýFè„$Ø9´pyRZxÍ«YMðSÜ;ÃM²’ÿ¨ÞÖ endstream endobj 312 0 obj << /Length1 1200 /Length2 4188 /Length3 0 /Length 4927 /Filter /FlateDecode >> stream xÚm–y<Ôm÷ÇIˆR¶,Ù†¬…1ƒÁÈ6v²oc_Æ`,3Œ¡±¢,%É®ìK–5Kq£d§,e«TöeŒð›zžçæ¹ÏëûÇ|ßç:ç:Ÿs]ç|_#Àkh"¦âŒqBj`Ð81¸CbMѾz4FÌÀÉåã‡HH€Å%$$hT±HG ƒVsÄ!¡S7?€Ž#–€d¡`(KHH‘Íõü|]I> ’AB’þýC œQÀ éŠBÓçÕF»` ©Ùý¼ÿ³æÄú’2„ÿ]@ÊíŒA{œ‘.¤X?OO}G/$@ø·fÀoрߪÿVýÿü½Pžÿ+⟞Ú8GOBíꉈýVüÛˆòÕ@á‘Ά( €Ã’NåÙ íŒÄz¢ÐHCŒ/ê÷É"$¤þ±fê†Bx ‘¾¾ˆÜ¿–,(W7@Xƒõrôü‡$ÚùŸÚIçôG9PÃÔPÝB÷úÿ¼¦?®êhÆ…v€¥!G,Ö1€–tú$’(’$<‰'ÕGcp¤€·.à‚ÁÒþ>|ˆ4¨òÛô‡d@ æ AÀ›'$êýM²`Ðø„$@“"íiö7É‘âOHt:!9ñ7H}t>…$5ÈSHJér I9]O¡èö7J‘$¸x»!ѧªb’ï°×rXª»3.ÜëtŽ?ÞáÛ£R0@3 ¶õÆÙ'MM]6Á„^½ÅçãkÛfUq ×{"ÉaÊuü[ßÕ{avÒCì¾4g/XšrZ¾¦¬ŸVý`kòKaMhÃÉá Ù{Wtˆ‹º½ ú7±3…°vÔ_ ðµŠI!Ï—/1‰W C1ÉÛC>»œºò=móºjŸ¯NõG| )7½]¼hç+†'@sÕe‚xZcã 4b;ŸñÌ\aÇ=IZÚÒ×geo3K·@¼›©“³TS†Õ‘S¯œŒ¼ãí®JÓ×DrÙÉΞu°þ‹ß²‹v¡%‹|óÚµ^+Û”ámÓGÍñŠýGYÍ k«f+bzPíYp>pƒ®º¿å[[ËÝQ&â{z"«Yͪ}IãJ{ÆÔ¶÷Ö%wÖf¦Æ2wg]Š\ÏFÃH¨ížæŰó¯3»öàx?,hf<:+K‘ªÇܤJ³óO¡¿ïR)ÅS4'ŒÔP–¿Öù"`Íp‰{½ÝVýƒÎà˯ï¢X,ž­ßâõ׳ýž,„îçv„MНì*ÕY°RÝÜö¡äJ(NS ÿ R 6ø8iåäü:çáÂÁ#¸Þr:x/¼‰ËG¹9@°7ã"WÄÌq¿¬ÏyöŠÀÔmÁMÄ!^*YÃljWZv€kQ˜Xjž€%ìØ>§°™¿Z„o;ºE±~æÓÚS‰p{z!ÅÛHßìÂÄË7)cl~àû‹`õû%2ŠÍ0ñÔ[¦fÔ.ºàœæ‹žOä õ—¤rÎIý“¯шÒå,iøxvcžá¦:ƒÙ4ô³‘üýeæ3æè¯{¨z½¾ò=Jí#hõÖÎÒÔRw^i¡O6nH1™ÁÕ:[ýùÂS2A–•è¡5J™ws÷§÷j?Ï|¹lV¨Q”Höq)4—æI z¡”¾î!ÔÆX)ëɯ<§‡J¥ŸLc¡2—Ëç(Ô·ØÜÍ.•áË>8ÍúT<šüK2ô|8Û¡ ýœ¸º)˜ÇG7˜5ûCÜUíÖÏ1ÐÖ©ÌÝ©{•5f=>ˆ ¯â×x-n7BÁãV©ª‘ä{­£ª3tÓ}¾§Kï ìÌ ä¼àmIÚn™2]±¯¬Â¤áø‰òåup:ƒ"ÿ¥´NnYáp´›åbcËÆÚb®7÷¯èï¼Ñµ"W÷n—űäúà¯CØÐÀšº›Ïd@*#ƒc†sTød Ý6#Ê/7¡ý}ëmRáúÀìåH#ß q„Q¸røOªT,Üg´×?bjouR¸g:/ýî‰u˜¢­ö(ïS"_£ôŠýЗÅqT‘¡ï9稠qEÈ>Ú7ôã.ó‘?p/ ?ßhÜ÷.7íÞ¼œqVÞ®Pkgu%aDÔ{¹“•Ó–Xûòý0¬ê© ŒU?<ªÖf÷ôßëSb“}`¾^x1­ öIÈšœÉ[yœ v-ß®EæQ˜˜*w…_DvˆÅ…é´»‰L‡R سƕ<õgÎ žš^V«q72—6 §ìË¡JˬÖöêÁQàª3o¯ø¦Éƒ+M`…Ç4Rõ{¾-¡!ßE´¹¬Î—w¤O8k5¾«Ý©/v‡}‘uçÿ뻉]t?a{9“û¹aå}Y„†ðS)oƒ‹IƱdAŒì`s)—OÚu¯¾»Ûuy…\7+VÅÁܵpÂ}Ì´0ÚÍyÙjpÅãŠ)“Z6*]ƒ#î15ŒŠwn`Ø+{þjmAHâüBŸ*ÁÓüîÌõ£Ìäco¢Ã¤GìmF!;ÕdÄâÍÈÉûá=!²½µ†>› 2ÂR䜊 ç kô³t¼Ù0[OržÄ]ýbc+€ØákÍO0¬Tù»—_Ü%ïH眭{ÓVÊ'>ÄP&=Èsÿlˆü3úW:Ó&FÇÑ –‹Õêƒð‰FbAb·¦ç¨‡'°§¹X¾næ‹Ôö¹"ÜT»6wŽ®ŒÖ³\~zÊÌm)8k†î©Xj7ʨä£ËäUve¼Â )ÁñrÃØ˜à¡Õ…Õ„ÞÊã²ÐkZ% ¦·K†#ß_ð¶À’ð9óšÂƒ&G‡þbFåö 󸂤 ƒ¡ŸÐôó©„î¾zµŽ2¶öHÉC3¿Q²mÌLÙµíéLeùؗ艺™/1Œ;{ò DF³¢¶=$A<™„¤¡z7c¨&1_=xÞÙž²þ½äÕahÿ “¹ì#Ô -·•ÐÆç‚,ÇSüj`íŽ#í…Ø>¦Üm§áY=?¼òÕUEÑ5šŒˆÀƒ—ݶdèÉÏ¡áfÆLu3<™ÕÇ?|xS~Ê 9a4ò{©Õóp]h—uR{Ä>ö 8‡†q¤;2”L›¾Û†ÈŸWª0 Úb›‘ëÃÙö:rf^YúV¦ÅT¹»*ˆ‹å†¾Qx’Ö³Þ‘ûÙdôxc5`AL-SŸ~¬“i[d~ÝmžÕ[v†ºYñüˆýÄ(ʘºÅpwżq`HHjX3q¹âÝùúrŸ˜Ü#„1v³Ã”,~+¯ 8a+\Ýõž'2q@QëGEðmŠ”À×!Êr,ÚÈøÉõ/ÉcáY6(—Nb‰ÿ—@¶¯¹bÇô«DÕòÀÂë!Í&“÷wĦŒ/vXÃËx^2;jÇÉ]‹ß_ÂTà ^|\dcù9§¹°…–ÖXÀ©eŸjÍví:Е5-D‹¼åíZ+iÆÚ<¸ñ›Å½Ìµ—JŠï¦¢/£ùË"gˆ;‚_­/Fd¢“¡Ð¯·6LetèßИ‘þe0¦«i¢•. 0˜Q[~=ou÷ª½ôã^“)·®s‰œ}NÄÈ3é{ð“Žh±v_¢úøÎ·)¹ùœ‡Ó[oƒÕ-mñk£œIw4í—üó¦ü{ÅìÝ=³5ìµüBd‡Ÿ]A5êW•†ÉæüÒò¸9?ó]¸uk;»‘Øy‘×rÙTkü #¡¶Æ#µ„F)G`ez`ý/T‘v?¡ånvß4‰-Ý…=G¾Ð-OfDP4Óz³¶èáh­O€Y¤É>?œjö“äÓ{±¯é³0{7¸Zçú#élîçú%»¿Š«¬­þ•´”ÊüB¢›:¥Y%¸dzáÆ-•{Ï‹¾ðo+n¬ŸãÝqö[Ožó'ªñùWBï­%A¦X©•K›Æë¯¢}oÍ =ò‚0\´]ØPo×ႇ-UH ™tqÏ|>&ð( |ZÊY±Œ0à·†u{ß-/IéßÿåäÀâôÕ8ŠÏÏÜÏâM\´Ç%æ»$Êçj¡`uú³h.ÛÀj®Ô*,<+»p9L3`±¾0*UR•™gí?ÕCe¡®µZs£6Dú;C½­Úþº1K– ¼ëR?ÊoÕñƒñY§n+CÞIs‘VÓxZÉÅdk9ÑÈP  Û®w×6’ ÷5– ÁHÊ_§Ü:úZÎãcV .\mç:¤ž¥kw›\ò»mëà^f°æÇí™Á§ˆ¾”ÚƆÂx& «ìu ýŸc¡ µañã]ò¢ðŸŸbÓ«|°úBÍXñ½ßï–üIzf Z=ØæãOi}=) ÷‘üKAª\NÃgfµ °z %»1C(—ᓚh¾ˆª“\ÐÒ½ª~ªd‘8ƒ£uw6HønÑÏ0çé’š¼AtÕÌÓâ&‡Mjñ?o9Ðw/^Ã<æ`Wó; Åu¯£Ù´ ¿¡GAaŠî‰ËW šò¿¢†é#]0s¹ ŠñùÚ¥ýŽükó(¬{Pé·¤ó¼èÅWž¯s\ç/öÛºJ(LîTÍblì½3t\ù¢í××UƒÓ^Ά-ß[}Àð$¿³F°E›¬œÉ†òP倨o¯ cKk/ÖdL‹ßºŒm€Ãð‡Õ3õl WÁ‹¬_·~­çÅy+Rý0ƒr;$}œ/+ó1O]eg7Ì«ÔØô¿Ó®Ô7`âÒù”ƒ0C›ö–É=2j!*H)üægm̳¹2üÕcâG<|Àg…ÐU[vê|‘ü›nüÓûŸcøÅ9»>›‡Œ ü] ¸.„%lqù½çôn"W52otÜ2ÀGŠð{BLû\Â<Öq2Ä3çü¼©1¡é(§ž…„ˆ` 2=QK! ;ZäŒE4ýR´¿y½hû*Ýž`\ÓO!×\¤h¶ð±wY¹ãbÓˆqû'÷”X+ûø réÖ Á wób¾k:Ýúpúá¸NHíÇóûAÊ”Þ\é´ÃÁ|Y– (© éNbL ÏþÛY jNò†Tcqkt’rEVžéHœKöóoÊ«àtéîæ-M„8œOŸeÀµa­ªaë4îÕÙ'¦7þ”½^j¥Ù@w­þÚNP¾˜¹çû<‹õâ»Qùû_Ÿ ÇfÓxgÕ%õ·Hg™ËCÐÓÚ~sûÚ¹;ŸÉÁ¬¥š:;±ÌÓBžL‹¢¾–Â埜­‡ºvñ9dõÉS©»¶c6KÌpÐŒöavB]‘[·øÏ‡AvÅ­Q•ÚlVKVò̇T–êÑ"çìÆ¸)~p^KTÞì-Ä Ù}ª¯‰)} ¾’ÏÍýlKˆó) c©“àW/áš\ÁgáÃg7'÷-&¥s½5ÐöêD3Ü4ÌòǺz.çÈR”t>G2¥ƒÆ3ˆºŠkWTODÂObç4yeÈr—úó^&ʬßì™W½nz<*0_×:iŒ³—×ھ뒻#kh„VÔ:¾¾Ü)Lfþ©LÐ;œg«5ûÖ¢¢?)r¥x…)4Cá*†7@ Ât?TMhÕ]»Ñ÷Ñ^8YºÁ”^ 5[}9µáöèWû—ÖvV>†Ônu*-žÀEêÌЧåƒâIÒ½»æªp€{3=nàÌ•Ío+Í,+JÊX ñ|˜¹“‰µ l,ŠÈÝ&0˜Mÿ° SÅw¹`§±L+ïUØö+í˜róÍÐ Ç;³àgg2‹Â,Ÿð\Œªÿr–ÏÑ··Zå”’K¯É¹=YHõÓ!8s!6jEEoIwƒ ÁìRÝ–lŽRð¼Õ¹E9¡·2îJËéôÐíÐ]†.Ëo°—ס^«byðÁ ÈýkÊ¥W÷ÿ¥$ endstream endobj 314 0 obj << /Length1 2873 /Length2 23441 /Length3 0 /Length 25077 /Filter /FlateDecode >> stream xÚ´¶uX”[Û>Lw—€Ä€twwww×C ÝŠ’Jƒ´twwwˆtI7Ò‚ð{?ïãÞÏïïÎ+Ïu®kÝ릦PÓd·[eÀNîÌì,l%eMs'7v6f  ‡ƒ¹+€ƒ… …šZÒhî;I™»¼î¶UKwH*$‚… tºBœV €2ÐÝ\ËÇÈ 3ÿ ¨ÝÜ™-ÌÝ n “ È HI‘;û¸‚llÝ×àdfþ]éw¶ @ÁÜÒìåf˜;YX”Y*`/ˆ ;,€¶æÖ°5@ ¨ÐÖ”ÖÐÈj¨j«iÒ³@ kz8;ƒ]ÿÃERSK[– %®¢% ê0dµ5µ~k üm˜*Zÿï>ÀßéÊÒZâZújÒ쬿×`x]Ý@¿Ûþ73ÀjTkW°ã_ t¶îîά¬^^^,6nî,`Wg‡¿øiÙ‚Ü^`W{ä×èüK'+ˆœî¶À¿ üÞ€Èèäü$þÛé‘’±»ÿ—D÷ß5þ¸ÿjckîöW®’ššÀÑäät2w²„º›»{¸Ìþ²Aþ€V´$=\]÷Pþ?—ëÛüu 0deF~æ^ÿ»cæNn¾ÿÐæß˶;¹ÜÜÝþ®Xƒ€¿Ù»ýÞ3Ó_6eqyiM-f%Èà91+ƒ!ê8±¸{»ÿý»ž¸”’€ÀÎÏ`ƒ ©´“•$ØÑÂÚ å·|R ˆNî`WÖÿg®íÀ^N~ÿ¯Ýädeý[y+gVm'‹P^ê?ÑÊ› ÐÀº€Þ–¶¬¿Ûý5-¿Íì¿ÍüœÁÎks7`ÈùAñs3÷Ü]=€~ÿtü¡°ó¬@–îA‡”¿ªË;Yƒü›!LþÏõŸ ûë ÒCN©ØÉÁ`´FaU»C‚îÿŸsö?½d<TÌtÿ+éÿÆ™;‚|þù?ºÀß\éTÀ®Žæÿã¹É€¼Vj wKÛ¿…ýÛ.ïn™}q' dSþ2iÿ>N¹…<{@¿]fv.žÿñAFÒÒÞ èæàú; ‘áC´ÿMÀª¥£!«+ÏøÿÌÌ_aÒN–`+“ €ƒ›`îêjîƒÂnn€;d¦­€ÞM €•Å ìI8{¸¬Á®(¿w“‡À*þÛô7â°JüA¼VÉ?ˆÀ*õñX¥ÿ‹xÙ¬2;€Uöâ°ÊýAœVù?Ò]ñ‚tWúƒ Ý•ÿ Hw•?Ò]õ¿ˆÒ]í‚tWÿƒ Ý5þ HwÍ?ˆ ¢íá¢ýA¸èüA.º„‹Þ?Ägþ_Äégyœ¸‚Üìÿ„@,þ‹Ø¹ ì- c 9±ÿ€˜,ÿ‹¸!ñ–`Èèü·,×o‹£ãŸFìlU[ýB– üSBÿ¯qþÀ ‰‡L™¹›í?’ l­ÿ@ kП"œ¿¡çŸªìœÖ~§ƒ=\ÿQ’bó¡ý§Da[g[ Ó?" 6Ð? „·Ý? D[û@ˆ.ÿ€ºŽ ;„ÜŸÊÜT'ÈIû‡¢øH2ø_nÈbœÿ¸!ÅœÍ!‘Ðúˆ\ìÿ±ºþK[Èñfu†l9øûÁQÂå¿"„‹rÍXüc\¼¬ÿêÃÎÅ÷Çóï^ì¿UüËõ?<ÿ1ÿO8;¤ó?6ˆ’íöG$ˆn@Gп‡ûw ÐóÛÄ )âòþ³`q7‡;¤ÿŸ¶Ü¡Üm]ÿ˜Hˆ î^à$@jxüBVìùaæõÉ„d{ÿBÊûüB¶Î÷9H%_ ëß­þýLUûýNñ×uÉöç!ûŸ—­¿°¦»+ب ²‚¼hþ#DÙÜÝämȹëØ!vÈçÿþ3þWê?×ô?²%$ÀÞ~Ì\50sBf–‹“ý÷Fpü+×òï÷ž¿îYÈ9ý?üû¥z-Q–À–‚áv)‘%ÒùÓ¥ðÔü,'å"z pKéÓí¯ ¥r¶)¢!ÍÁ4`%9ãÀ¤§/zÔáøÏë-Ÿ*¦®­Ôž›*¾ÆËÖaÑÍP^ .í¤¤?TÈÎÓ/âšÍhMh%hIò·w=ÄpL¾`ÿH¦4*m]Í…÷*œgoÂsuÀñ^Ä"îx½8Ýíþò€÷Á¼W|‰aÎ,/’`LÁ¹§ wúC¡èãb÷«SSx‚Ø®,gêú΍‘ÇFíMeZZ‰öPèöC«^”G™Uܤ.÷(s¤_%A«›ŒžæßM¥¿yQ™MâhÈ[ê×±Ö\E}ÈЫƒ­Ç ÿëiµ~,{ƒí!”ç&/Rtn;˜`Œ"”ëæÄЍmƒ!ž}ëˆÂÏ¡µ‹H~œRvפ§95eÌ¢#»âÐ{°œ)0›ŽéB ÜsëRL-¥l©°oǽWD2ù%ÚÕ®€ƒ¿•Þ÷ç æÂLcf*§ÇH¢˜KqºOúÏr‘mhÔ¸a‰öŽ Š‘ ×ÙiÖ¦¹-ó*±ô'$º$UÆ;ü­²îƒ•L*E”Ó Åt­©¼¼ÈGå¬mü憨ORu{aO¥IÓ—(.ö?8LömÚŒŒÌPü+°/ˆ* ùxŸféòe9tvškœ.´K‰>Çf×6^(B·³[+'=ûWXÅÂJ}Ój¯v’Ê¥}M‰çLØéÁ×$”!™ª2¿pæà³© Ÿ®.=OB¾åÐTrï,n`ùyëÙ£àŠ.æÝ]×@Ýô*&;¢Cª†Ãu™NðÈ·—?+ç¹jîð®rd’#9G+á³»ú¯‰b.\:c[9€HH!—Hãqò£Ä%¬÷œ¿mßCS-ªæÃTÜaŒ¥én˜se žæ3(g%L6û¨÷CD›g‹í'‚d/רFóÖèåfÏ¢GZÕodÅø#(Fà!\ŽÌs2P”ÆÞ˜“)™¬EŒ&W„I£‹´ò$[mWP}M?@·‘$¹€¶åˉã”#_×0Õœ>²oqk"Ñtè$>Ÿ/w޽¿{Sù¤‹ºoÎNYz“.þšæÁØœÔd€‹âѶ f¾daR*+JK×: ó+ùUKiwxî¬þeeö ¾Ø¢ù®ecféš—WQ EãÈüW­Ñ…eÀƘüЋŸ²tÍøÞO,u™©™¶«ÍÊÇŽEl‰?ÈáZõºTnË#ê 1ùÚªr&¼[5?æýš«•fÌ5sÀÀZÓºî@$QIw›ýBÇÿÆváÝ©ÙÄ$ÚŒ¨ÖÅíCs)¾V„tö¶Z[»òG= »Ý‹³wœ³ C$/mC²ôÛOóŠôú¶Ócä\€D)íç ±-ª1ÙÞè’× ÌB„àË(F4«DäòÕR&Ê ®[omðʿζ¥VcQŒß¿%µÕZæ‰`r¯™õ§¶UL¹ æÚ7¾n?Öâ­p©ó®†¼/Ž—âK¹ö¹éõ+O„¦;Mõ´ 0¸Ü ÆYn2’- ¢ÚÂðbÐæ§ZPN´îl±’eïTÛåòñ`«òÓÐaû®˜ÜÕÛe˜ÖçÛ £Â÷Ða홳àØ/ÎÚ”z­uT¡ gƒF-2Ø8^_èÛ=Yr½Ë±ÿõûMž~õ8Nư“çt ¬iƒp.j°»vRðÝæ—2¼D9†=  óth<©ÍÜÚÇõ÷hvw¶Ã¾ÃEŽúļ§/σ]ÜÙr´þh Ox¡¦±,Ðô:1 }ï¿À諹¿LónÒ…ÞT²î_3]:,~µTôHãa]͸‰¯Ü×E˜|V%åY‰ÑÐ ŽA2Eb ÏW³Lµ“háŽùŠ*ýéOC¯ò]Ìâ{]âì»&3 y½màO[mÉm\˜’ml¿Éõ>)mµ0h*¯X…5½ö!¦ªÊ™ãà[Gêá¨X”í ¦Æâ›ùà¨Ø/&UÚ£x²À§‚*Õ‘l'ÑëTwMö@BUj¾¹Bp¸ák0¿ä‰u„B!éó¨ÞÂ÷t¬ÀÉh‘Î@+ÓnŠò–Ë‘±f†¯¸ ü\^Q£ÉÛ›haœkÚ5È·H˜†? o#×h-ߣøëÝ%!bqºÉ6¢!¶mÑo½Iïì5 }¿gs8DIÙ¬¤äÓ;»ÄŠ$¡XÁàéƒÚFxX$ Щrmz¦Ñ$ßA­Š±Ö›/’2g×\´´oëF£êY˜,Šž²Ùÿ6༊ØD ·Sy¼d&•‡©¸.âfM—c¾§g‹ƒY@о›rYÛ%J À“­o? Ê·€jøEîjå>:5ôNëÝóÅÃÅÚÜG=æG<ƒâxÆ œW:pµt­ÄHëw‹.¹_Îõó»—ƒÍk‰ ðƒü{°4ŒY#͓Ţ~a©*«fNv+ÒS®«hBY… W/«Á#»„Eìµ™eÓtĉ‘ÕÂ~çL»àò£õÐ/óéÐûÈO +g7§9ÿÜÂȰé¡Sz ïëÒ„ŠNFm}âól^%º‰åM®ª8‰Mý ÝLú½(|Ù•ä?2Ž>PEý–ýŠŸØáÕV1¿ïlTajSx®©à51ªÀŒŸ·×)d¹öi§š|]<,8×îœMm´Þˆ,QŸaÉvLÄ}h ĵ+ª_sü¡õ+Ô$^S2ú€£7NG^5{$ùY·€¸ÍÐÈõWrs?§|;ì !R/99?R{ÃôöÑ* 9P¹¹åVªüä”[v’Âש.y: å%ì:ÂGöyxq0äÆKRtÎÒ¬9¶þ:B±Û1æ·~é*W&ÄfìW^®¾&T,™¤Ïö=étéñ÷ Ø•çç¿4øGÆ‘y»8¹£Ëb/;"+ï°F(êß9Âí½Ntwî«F4-Ÿ%3"¢»&’ÖDø½ ª1ÜÔP^ö"¥¤®ýúm‰ÁÞ® -ƒ–Z# =ääøM‘ž®Í9[4ÿ¹àù¶’q§!Jm#ôPöÅu a©}ÅÕ‰‚8c«Ÿ£(¨©’lû§¥T¨Áöø¬IKŠþ¤¢(xÐîG+ePްOEð‘õ-ØPµ³åOßö'}›ýâáG©”!w,v·wK Ù‚ä); ÀW…ÚŒ#²—¨í‚­†+ɾàçâ —4õQh®ñ¬qâ;GAcAå› Û«ï¦\­æè€{â¾ÊÎê4dz½¬Á¸qõwÛWÇŠWΟû6‹ýŽx$AEvpÔL=Ýf÷Ìw³zXb‡SË’Ýö*•Û¸_)ÜO>Š|ˆ ¾uØ µ&4W_ſ݄i#ÄHCˆS2¡Cÿd¼®Sõ¾ýsâ=ª»¬9=FìôÎ'ëõƒ¨ã_ f„u)£–L{xsâ”­¡çrÈ×ϧT¯ô…Ôp‘g Ü™ÇÆü0’¤} œ,ß[ ¾¼Üf\ìO¶>${ÌW¦8½I[ENüçÉ5t±•óA˸R¢5—ëbæ+zjM µ‚q‹ÎR×DæÎ‰Ëžˆš7gWÆÑéã&‚|¸o¶CÌ>* ÎfÚ‘M[ô)FPfˆ˜ÈDÔ´K‹ ~n+2 ´dž…¯BŒ,Jÿµò†Òâ3*ޝŸ«Ó—‚-¦ºø¨ã 4 ©°HŽûzû‰o}WÓêæ©þò†I…¦zµio†»ÏLHÖÑN‘HÀ4Ia¥pV} ‰Oì¨ »×·_ß3øÞÄ#:V6‘>(l¥P/[jï~c=*vŽìáFY9“œ}:ŽGxÛdýæÂ—fQ-ø´`¨e¿ÖA=Õ§àv+íÁ=8±;kÃø:­Iôy¼Ê߃=œ1©© ~xóžArAUæƒ[žJž¥ð9rŸÆhC¾4¨l)ÿc¹Ýi2´¾—êKÏžþÒ2ÆÆI.æ‡C´Õ=WôBz3ØCÅSG¦ïŽVgvÃÓoÒéË8e¶Âó84Ò¬)¨blè úœ_õ¹nÓ>ëlæ‚VzOŠ˜Xý\pºÖÈ’¨lrªO°L;¿-KÙ äýÿt_Ò(^›‰1¤&»bàH·—ëÃô݉(ãkò»h¯»új6œ÷•8ig¹iqƒ®ëW ¢‰äÀõ=sdðq0þdùJŠâ#—ïÃf9RE®29ß•Œ&ÔΫ6ÓéÄ·}aãòÙõR!X(¾e]™‡‘^3"ÓR=aâdí»¾êtžu¶d¨@»B)11‹ˆ*æòS™$5y’ª›~æÊ1ÃNøwº¦œV/Ø/+÷·'¶2½•U¢¡WûÀ# {(µµSÙ ¹:š}Êð39lFç>žÑ•#±Vó¢.œýʬ%é"sfìŹûÕFÆëë[ö «é6iMþÖ;ÿ3N]Æ›”iÔFÍ!_9d)é$½´õ‘`ÜšˆL^6­«‘®‘ÙsôÀs8•]M¨O^­Š¡ZÞ‹%‹ © ¤ðlôM`Êû"[$»î;‚Æo×›“eÏDІ’¤‹òpºó€÷‡fÏð䯩Dƒvü‡qÏîÃ0»‰Ìë@3çJÌ7^P„­Ÿ0H‹pxErSÙá~Á‡ÝÖU˜X‡v—Ööm[;†¶ßægÕD}Þ†Ï×zYR¨UHH‘?§³Z®êåÊ€Ú_–:˜)M›wÅp}È>a±ºðLànޛǜf›â3NQùnõ'+C¶œE‡4$ÆXDÂD £—²ïˆ^úÈ¥ßñ´õXJ™³ãSßµ™rDî}b›³3ÆñÙ½F;’Ç¿F£Š2¸ í¡‰€=–I-¾ )ÂÙã­Þ“ú<òx'ëB°ØS±w Å•nüJÛÎܳ„>*²²ìõkÒ>ßʼnÍgË*>D~Tfœa)ÈDu\+èÊÔÏä&Äãí8u}Ç>˜=q÷CšÌù-Jôi1ò!ê@H4"ÈË£!ø ©>v«¯åUê¢b¹²U² ù¥Šóë-Š/߇9~õ‘àËt!iñ°ñòâ’8ã¡MÑêo,®ì6ò:ÒÇ5n£•ªÝ2OáòÄÞØÎoôWè, ~KJéÚÓ"oøJ+•ÖŽ‹xÀd«mÄfû°Rü¸©îÉ«)ç±°¾õãÂÖ*hl?ºt<…QcB³]¥h'qF—[££\4椙æ<â¶ÌØ´û$™êqZé³=?'ë…^ï}‰ÔÚ™¾Ó«Tí":ì°Aó¶ñ÷M;—î€äNåØ[ð›·É­¥sʬ‡/ ²ä“6Ã,yÖ_¶¾T3*9ØV’$î­ ,µ»-ž•È9ŒKƒ|ÛÐ)ß«”+ˆ º[Ú²[sêׇÑùœaãæ7ôâ鼩½bið¾ïÃø =JN8Qgèlž…„Á<ewÆ"ëpÜ7Aãg–„7!,uêÚ!†‡µ‚ˆgŸÛÅ)&}DE|ÄÇgÖZN°PÚĈÍjòr:: :çÀ¨ 8Ž áTˆgW2CN+Ä„šÓDÆ&î«D>©ºRu5Y”!ü]Ž%Eòr}jʯaßL’q̹Õþä§Íi ½°Kƒùlhôッú­$éæýsc2ñãèY÷£(bNRçRoë¼Aø­Xp“£ìù=%L 6mGιòEÑ«™C¿ÒArF/VnŸMµ‘çâ­sU_œèBwŸHØ_[‘­û!öÍN åa±_;Eº_–¹AhY¶½¯ið%(P»¬½†U·ÃXÖûå \~W4Y©¡¢ŒÊÒÒ¾fèd®ý$ø¹ü“ä°4¸£ÚÄ=_£øDgaùØ:ÌNťŴæÒç cCtVá½´‚Á}ºïS?²¢‘6ã>¹&Ú>EÉ÷ƒznJÍY+Èð‚Vè:Ø•DeGi]Lû̇ÏZ~¶ä}2¹rZ‘Ž HήîõµÇ¹/:¿œZ"Òêî*ˆÇ‰™Ëk¢CšÇÆLWf«kRN•l4 «tÖ¡=dT¶­"QØ‘´&ùâ†z¨AýI¼/}"ŸÍWa i™ôço,ƵÜú¬,´÷1eÙ/™p=°–E“†õÉ«Û͇ò,>EÁh=t¥-Ÿ6C_àéka¼nÝ…ÆOˆÒòòH.yƒ*;*åŽü•1-úé„ñŽLÇV4ÛZNp÷”€Cb8×2i0På(×¹‰Î#fjÅdVÃo&ìÇlÖH¹p QÇç×@M¢Þ‘ʵ‡«¥wP:7“,~Œìènت_s§q”ÖýG3k É}s,ÄÆ|ðëdKå¾Wù…ÛV3[–†/Ž.ñ#|›…m¶žpt;¢”ïáQÒ‘ŸÏûG’“uëûSB¤Rô‘AÍUÕ¢ª€“ –Ì£¨M@ÿUê%Ýd Óf­vüÉzáñÈz¤=¬éóqa©WO‚KMnp‚¤LÔ3î‘Ìêã€|Ô/·XÔ'™8æÛƒkk{](u1k|Žvs“MVÙ< n/¿-ža’?vþt޼͵˜*Ù‹ù˜(Ãèù%°xΙo³ei¨8lIÀr?&±½¿“`ôkãgÍÍ\ý"à&àùÐ*‡Z¾3/\ÓÎBÖîš3Ü~ykv@Ã4ƒR`d£óVޝ¡‰( w3j#f¾šR¼L_ü]‚K;Îp%.Tm™î&Æqû„s;?×Á÷¥{IzÔv_Ó°¶Z¦“R>ž0lþ:Öh•H7VkR QÜÕW‘®8þVA¿QS p­çÜ…#½bmÎ_¨YcªeY€ön5¹'ôÛå‚ï}áØ*º²žZgìWˆÓ|¥Ðhoëæ5u6:«/é¬jYW->®^ÜÁ0©Ä<^~óµTuO tXX2Y< —ܽlL±aÎè¶+«µ/öÿ˜øfÓXÄþñÍ`Å- Fë–ï'i š¥Sùâav÷’JÑOÔÆKs¯Vª®f$|{J!ÜûU¯xjZ'd²û|±“D²64E›¾&nGK±oõ¡hÉWN{QTeÂÛÀpnÝ’§÷Ežm€”;ÀOጠ%•]_ŽÃ÷§#µJŸCÖÃÚeœå}È3ß\c‘‹T2Ýÿx³ã¦]ý±ØŸEJ(Õ¬ƒ¬½57´ä¤ùÃ,Š{‚A“á½À]„Áx‹°’ý„݈ ÖÖêÝJý±c¨yw šýô3¯î)†½®ÌÚv%êGm¹äÜ—´Q÷Ú‹ë÷†²ý ÅæŽ_ 3Ö“ò辕frãBék)ÊëyëÇJOê½·U¸ïŸGU›(@ò`Ý^<›Û¶ß”¡Yy¿£Rô„N÷"=gt¯³Ú\•«ñ¤Ú¢ÎFˆ£yˆqºEbÞ’#¼q"º#±ST½¼‹VÁu–¦>Õ&òæÐÁ³†L“ÉêËí†sªiä‚{žrð¶R…XÞÅÍdqxL<áPme|;¯þ•—?]ä¡ øî{¿Î ƒµàd›Ï6"’kOòÝïÒ³ï- Ö¿=,Ìmô»êZ"–<$ŽÏÒ©[Û' ž£PœË~Ÿî{…(‹iüD>á›s1Á;#Ä"¸ZÏ ‡ã[qúnÄØCØÖr?Š%AÅØ››w¶Áÿ|[ urHçfæÈ8Ý‘ »Ñúï]BŸf£Òltlnëç™Ú¸«&>"×¼|<-f8â ­`ÀÌþ7|mï{ð1uOyÝ'BQöoa.Ä;FŠZéðŸf&W{O(üN®<¢| $&v#e­'B‰¯J>Ãy/ ØÞáÁ‘¾»Nñ„æ ‘‡'.]YßÉV½uÊBÅx½_Ù”Ú¼^‘É­LŽ¥žïÛ£YX D°®(¥½:¾Þ×,½x«/ÿvì ‡‚g`ŒÒ0 ïWûÒËŸ•mSTÀG’F’o‹9Ú†570¦YZçi¥oÞ§ÝþõÝæg"™ÅÑQSô • ×’‚y^ûa¨•‹ ½²54$;¹ ”Ã6q>mÄå诶?î n6Gtwq.c× ‚û‡[¢Ï¸ä)´Œ—²l¾Ê9Þ÷¦ZY¼®Í)¸Cõ]©3Á$¿µ ´’{-å3Ä矗@¥×“lxß9_hÑÔ3Žê£^qW„â ìÈ_†º® ³c—>@‹•]Q¶µn—Mªoyôé @ÚˆßÄ˫ߩ`qÉ‹yº©3¹ ‹Lþ‰ÎŽëËíFIàÆù¾ï(î¸ÃÊfö¬ë_˜ïoð50ý˜!êÕ­&–ðè£ AªörÂÛú•Î:¹Rê6LSKÿ±ü­ ³ÎVœFò‹íêÜîG˜jÜ_¶p~J°ù¾¶èäÁÉmïªÄ-ƒ­&%D7Þ?ÔU¹e s!úº+|™Ÿß­íRµz'‰>Âú²Ÿ³òIÂâØÔ¬‚cŠuÿÒ¨5.ÆŠ,üƒAÿrݰ™D„W@Ò>îFð×Ûä''f•ˆÉžÑî‹¤Þ 5A—Ðõƒ&˜¬ç?¼µÁ ïŽvT˜äÞ×ÑEb “Å5»ôkÚ½<,%&-[Ntè™În64w‡äG¿¼‘äÓ’ÊrtƒdEò¤ƒtœiÉ=TbExßJ¿e%_»,×l³ŒSŸ:@Uàí*´4¦ð¥aÒÁ,gì&Êu!ò®,xÉŽé–u{ø?ü\ðÔòäü¬•Êöæk1½ÄíN‹I,Am`¡R¯Ñwɱ«ÁúªÏª—ÖVªÎ‰ÆA­37µ¹AÑg‚ýrõ¼¹ìR#휔áßUÏ6õ•´HÆõ⢯—õ‚÷ ÍæŽ› >ô>Nb@ßY¨¬\íaLjñÑÞ&KÚ4§åÛÆ êñÓž”h¥ýÌöÝ2­6ÔÜjéòìêtoZK\_³Àš wý&°•šÌJa—²Õ&CèWÀnö®ØíœÅrÕ¶¦UPb1ìE†ßc4ßöpŽ„,ÂÎ0ºÆ˜©Pz.û×ÅQzÊÃé¨òo‹n€õ¶ [Œiékõø[O7&>ûgž-ªì™ùçê|˜ëÚçÎ/³ÛÎKÄR‚í Ö¯L\_M_ƒWé§c¾½þLº5€F"Úl¸yBŒPÉw) …¸çpŽòÙ¯PZ¥¡Ir(itìíXixÒ†²“K1áofÃÖÎ1ô¥¯YšÎ2+»§á¼î¯^â3{ë4Mõ¬ºÛ8ì_U´rZ€±Å(µ°—,> ð©_Ý&Û˜w À??&*=ùŠ[îñB´!ÅI¿u«¡#W='ž³-MbNã`·‹®âç8bÄÁ· ›Ë9eX2——Ø®ïl‘õ˜¼ÇÏ„Wöpun-žïœX&¶ ) ÎF:ElêFÜ7tMš&²ç5Ñqš%¦ƒ'|dH^5Ù*ÕpäÑHŽUáÜÜ)±ª; ìµOP¦…ȑña\R0¨ÓCíÐR8ïï`.\f_m]YO2–p–þd¯>G‹@{“Ð[Ãå>ôÀš¹°*ˆ€wÃÝWåÍ;xÙ1jÌjÞËZÂ&¾£õA‚ZÕÛì»â0OD>IëSÈSæà¼eU¨˜{¹íÐŒh¼Ëv`T·œŠf3+§l:y$’ˆR%÷X”e˜"²ËëˆÞ–&ŒnÀi»lzTøÀÌ[ýt ú{@«Åþ=^3ÍâFŽðGC!BR<¢XP×”¿)úâ g$=Úé!vÀ·®_{XÇüƾ)ÝSËbÂ.óý4?Fö (-2HB²¬?ÁÞÌl¼jR¼Ï×LŠÇˆµë·³ç×…ÃPT­í KßÑý…p#å}‹_nä“Òºr0BFE!¼Ç,QB†zS§­C‹¢édÜýf0FÁ?£ßƒBEÊ zij•ºû1~‚F|úã(áWŽá|cœâALÿ6ŽWé4VÚôz©þöiñŠ}!k*®ß€ª#ñ®÷úl¹‡'h^ÖãöL ™VçAí£«S Fî3÷ªŸöÐJ³‘–G?ü*WHÁ90EY¼Öç|4-1ŒÕ&}?'8}¨5ò¡(èJûx+I“À׈ Tø4: lñ޹T¶ù(/ÀÈð˜™zR/ãæ1»ÚY–ÊYÝÇÈîÁmо°+4BiŽ'I˜ÙmÒÝJ ¾'{9Žp·¤Ú]ÝÃp@šCÌK’Š=ë³Ñ@è!F “|ÿŠe÷ ‹ .ÁiÍ6 QJ•š­—f@¼òDég›ØD7gFãÛŽäÏ®Í>yÄ­oÅCÂo쪈>”ÂÙÆhäªá<°nDºë^×›ÀTD¸4¯›ª×3_[B2K¿èæ2w åÚ³j±×)¢"8_eT×qhå®OeR~veMâü„<\”0¬ $Emí —<"ê›ÏwF£ùÁ¥‚Ùê_p+=_••yÕŸh¯€º »}‹3’V’q£“àÊ@G  ÿÜU#Ô,ôíîÆÍ–LŽÓòªÛ¡Éxé5ŽoßeY„µ’šÒN¦ÊûtOˆù_«—¨0ÔÚ4A«ãˆüÀS…Üoú‡KÂ&¿ 2;¡âÏ=c!ïøRMÙ\Þ-—µú©ZsµVo±ô´ ÍŠeú)¶#f‹¸­ÚÍß͈¾^úô¦Á®+ÉH¡×ôBà æ'_zûSÁeH&ìGkkܘ¤x³VΡÏÀO#‘à¤$ãЂ†í_”†úê²iÞ}OX”ìõ¤±½9¹Uüz½œKC³ÙbþLɳ2ðf{mžw7ù$\×:LÍ9)5Y¡Ö©“‹lŽ=0•d’ª¬Ã{ùŽÌ¹…ôó’nFÒ)^OD狇Ð(qNߘé¦Ú"ñ’ ’UO?^%:–ôì3LX¢ÚñLè"‡½b¡’Òo!°fÜLƒÌ×gõhëOs ÒÆ ?½1Ÿ ‰Aà†W^££J¼Íûä!f¶H¤“O²R/Ðu]éøRå¾av‘n‘Åâ"£r±oì=|g|{Èæé¯æ–àåyß÷ŠÏàÅý*+<%Hü°Mó‚ܤvW5¯> ²Ó£ÒnnX]³3ø^=Ç ‹†o,ÀZe…èe}—1óÊç{/EâÇ{NV„1R‹ŒðDŠötÅAêõ5SíªŽA‡¹jí?±&¶;ŸŒ¬?ì+ßC£RÛ4MÄ /DÀ­ \/$z²ú˜‚‰áD÷öêK9Çú&Ü’’^ Ÿ3l”ˆ yë⤻ˆ«¾Ïf8‹–¼„q©ñî£{ö™ú¹†H/¥¿ÝuŽH›ÕÁÖŽ‘â…ªs®,H/î1Ù6âÅÄfPí¶¢×B?ÂVÎ2ãÀßÍçkÁ›¾iüÞËÄÊyZõS¾w‡)ÔjÇõ—ù¼½_ÅÇ×7MÜ‚×Ë«fˆ2w䜷Ë×v©à¨<©SZ%@•°È ¤=1ëX¬Þ¯G­`ˆ.£©níÞ…<:»í†>U  }Qk0W•ן¯&®lƒ……GÏr© =wZÚæ"<^Ngeª® J%R¯±w4uãy’¤adj°UÑ{Ðù7]¼?ÌžBéàLc­©/å¸TÀ·ã:W–]7ÁÝY½îµ&BÔžÂ|ûIÀÐ?ïþf<’µa>Ô?zÈ'{ ¥ß4‡»K³òÛ¤¡Ü²´,¤ óëÒw#AtüÆqml¸È$Ïë3ƒa«]±ñ¥­,Ø9+IÒš7¯Š¦¹rÃݪì¾ÿÔ0v¥Ð’c>£h¹”Hh»×%’nÅf œ£ÄÉ1å>kéU¶ÈÖrHfÇÙ²ÿöbW8€ª FHÝíTQ"”žp0Ò)6(JñE0°g¦0Û-®«m¦É'y‘‹ŠÜ÷Âe°Tðz]ñ'?¦PÆtž7ðÉ÷ÙÁµÿCF N}>Ë7<úlk¯P ÊkQ¹»V˜¼ dáy)E­¾Wi~Ô¶tâæ]Ê4~ÐÊ-‰÷ënÒz9õI@­@ýCOÒëÓú+q!Fçø–XáÒs“/ìàúþ9ß/—È0‚¹ýÝX=|£ zu¢«G"ªqìWc ª¢‹ì¦ñ2ø5ôöL²Ç¶”ÆúR„íF`¹àsŠ8k{‚kŠ:Ã`n×jßq"óùI;.†Æe;~usÍ56üò}G{¼{ðÈ,Pf6•J¿©£B¶Iv7 «-?ÓZ~Y[ZÃØá@•b®Ò¥¶/³ÈÞüþ@¬+™ø´ÿøv]íû2‹õ<ÿ™ÆAÞ\ÇM™Gèƒ,O+Ê›@Ìa¼Uz þLB%ê«BüìÏÆïÊ,Zhˆ…Tj÷e›Óq|{\ Ý_kî%E;¬u9•éÆ)zÈŸ|ÀQ<¨Ea-«j2\ŠÈ"¯#³ù\”-°‘CxÆ^yi£ßúØ - U¤ðk÷Äp&k³âÏä{Ô{ÂW[ˆRjERœÐÕÔÎ/yHL:Êé™Ó¶ÛaFá¢bÏüÜ^S¨_zSŠÇÐ\sI+°G=hßD2Xèí’%ýµ¼ð<`M§p4%'á -…ûÙ‚vð×&h™ø'~Â_îÄNÁ_q„ ‰‹6ÐSzËÈò(>•s•®ŠÆ}2y kM™Ö÷œ*!i`Aµ•Å5ÎuŽŽQ–?$Jê}-‰¢hÔÞÒîvœ£ñ³±bMqË\ • 6f@Ãvm€ðf}$Y8jLw‘äyÎ ¤¼Ç˜ÄE²øøBœjWõ+ݤ&Ý©m[å ®±¼ZuæmúŽ1x£>5µzÄ Ö憪+êk,4+é*ÛºÉ@OpîûCxxëï#®@y~J*Žø~§I=¢„ÜÍh›ŸïQyèŸÁ‹hx£›©_ ØÍIåáßîF"©IÿÈÌ–î·’Œ.¡èBÁO ÓMýd•³7¬µ¤Ã?*WîD>®w—²™Ì¾¾¡94Uì[]P¶ÄI—žóXªZ@X}[ºÂe7ܰ%TŸ™Ù!í<„émÖä_Ü¿B±bƒOÕÅš©<>ïû™An7³ËBQ%YWŽó3Ýmáã‡ysé ÎC\þåÙãL’©Ë,†Æ_l”Q¯ˆ”î1U„ùËÈlm¹ y;‹Ÿß+ÙÎ6 ¢‚Q¿¢öëQØk‰Ä½wRîtîõ{3º'»ý㣻üÞUÍDMþTàth&‘–éiÄÒO~Ó¾fžeNFÇ‹i±ð®÷·u²*Ì«œð÷¯Žˆ‘6¸lÎÃæoÀ+Õµ"_àyòOÎômU/wï†g’0t®x˜¿ŽöÑû@ÊðIeÊtÅåOˆÒƒBboQ1%ååHʼÉÛZðð'×á;B²-~eôô6Ã8ö@Ø~Ø8 •s»àþÄ7îù„Û÷ƒ¬ë¶–OŠÒ;j«²žäfñqèE1ÇWò¦½§Å ÞZ ¹ÉÚ×2Räú x©cÊ ÚÓ?’1ºçä¿NËïü"&I´Ìðœv.ÒÏÄÌ8yÐ0ç*“;ë>ü2®yÕohL.÷n'·›a´ãz^~‹û¸RDËòþh“âêu"=Fw+Ì~Yëì·WåNx“p¾Z€ˆ2Æ‚Ìsf# ÍÏÂ/&û¿"l}®Œimé}>³GÕthÓr‘VÃý”µ°Eq¿œ'ù(¶Ç¡Ûž«h%)>”þ¡ªáczÓ~s.èJlÀ‘͆¡ý.+ä·¤–îwWÞfæÀD|МP—í X²äª¶Èä„Ú)¼‹+ùÆ/äe¥òגߢàÛgM$ @ñëFšA²ŠùêІ»(}•jøGã!d½E/ec[§IË@7¡¨à>CºÀë ‡TäVUF Ë %‰¡œ„„ø²Ù×éÏê Låf•KƲխ²ùššÚúŒ—:­°†& CÓ _Kí'ÖNå¹éÇb$t‹_vßEÂ.Kå!´þHñz±ý–=ˆ³sÐYc@!Z½ÕmQ£¦J÷c‰(ò'n‚À+6©Yâ þ¹TBf1ø_K³¼JÊûrñ¬8æ×CmG™Zk´ÎèMÓ¡&¹²ƒ¨gùÇÔͰhÀúîÒ›»[”;änÁ^ƒËdÅ:*V÷IòÞ­wémál ú˜5ð5‚m7çV  \ó Ñ5ËÃÊœPÖ2:4TG {E¿Ùo­|ƒæ¦Žþ R%¾°6úO¡vŸÆ“Ì0‡Ï83åà1Ëdƒu¿šäDÐ÷àæ½Ý¥»hþ¥W+º¦JñÙô©ÌMíØäNG)£KðÈ€þ |Ç·ãŒíÙVKå`÷a¦¸ªŸ¹úU3ÿc´ïôåâ[´ÞŒ]¥QQ±Ãecʧ=©#MoÛy•¶ÊM˜áêu j] ©ƒ;A(6¡q†ŒªÛ ›YWWf˜ÉìOS¹ÃŽj)üئÐ/ Ç?ð¤0”§~|Ú$¯¬’^5/óßæ½m4jñ`Ú’ëë7 1R·Z°@e¡„wœÜhS½Þ½¼ôõ÷-.*Y/õYˆÛ{Û > Z_HÄìÝ[ì2éGoÎrOL³yKî_ȵ#ƼL³0‰ñt¬Þ7˜Œšv‘Žfez¨›:÷°{á=özØz¢iA1äK&Xw{™ô-¹%¨yKsýÕJöC¡gxÐ8³²ûkß`´${*4Ú§æè¶˜øbÚTög©Nž¶¾j”p$¼þŸiUí/\ F²T¯oør¨LíØ!{%†ð‡¬"/SWPxϤÉ$t;Áñô/Ù>–OÕ ±ð€Ã'ÔÍÙJZ7©$ŽHr¹å¿ÆþNþ¦å픉Ïó…Ùû¹تp u% ÁútñAŸ;Yåx‘‘öÞ.Axû±WèWO»'ïõl¾ý±hÊ—wyú›JÖf2g ¢°òì¯íj°1§Ì- §É-sÎÅÆÙ] oÙ+BG“‚ ª_ÃV:h}ê%ÍQ<\lŽO§À'B¹$âúù™ýÌÑØÙcŸðŽD8 ¸Ú±Ã|úñ]«ˆrî¶™%x`(0U¢íz SÅÁØmòÐÓšD%"ÝõŒž P¼)'B3G¡¥’wö˜wìd”mï«Xæì1µ{o ¾ÏEÁOx«* Õ”_UéKa8Äö„q‹/JÞ|ëìüÒ™ÿù̑Ҍ†Ñïz¸*âr­–®#›»À#÷­kô÷ÜnËF¥tëÅ&¡ÍYýðȹ^hq¼8²Qni™iÏuψqV²×WĨ[[üæåëôrz\—òßõ¢Å@°ŒØYÅÙãÆ¶ôU…4Y’z¸Mqç?Ëž>ó’¯ð…{}8‘!t¯÷ FË (Äéƒë€eùR¥´bèÚxZ™[\œe½pöDÄWä>4 ºRÊ—ÊÛé*‰ØÌ.Ñ&/°.âÊ"nw¾½–ÇnÏCyÍ%H'L–†@éÞÉͤÕH¡ÇæUŒøƒ`*ûY÷v ­‰±×éâdQ]ƒ‡úM%IQ´f÷/ë¸V¡ AŸ_ã©§£“åó@ÙäÕ]¼ÕªŒ¬-CX¯î–úóyo’.iõꃿ‚ µ@ œ(a ¨Ô‹yÛKÕÏdi/Ô” ½x’ŽøØRŒ|.Gìf 8+"Ë­½Âþ Vr„©N ‘€jËDûr=Á7ˆm €áÌ7ÝÊ–#ýÊA†ôËNåKc-BoІ=KÑÁˆèÞ3è=YݘP|Ò±<_Ì8ãN‘¨Õ¨YŒU Õ‡¾ÌÊšuà‰ÁëÝé±§¡Ì•ñ0lº·­;–}m=A0¢}v€³5—DÊÅñÀG½¨ëøDpÎHG<ÛŒ²ª+ˆü@æ‡V/v/d¡fNÔæÔÚýðÆO”FÃWÖÖvo’)€#µ¡J^ã%ÑÄÊP#CžÉQ««ÝÍ,P"0üÙõ‚GîÁfŒŽz·y^ FwÞ‰EÁ)šÿ…T³|—(I@йø y#ÉßëM À9k³®„FÑúL2ƒ]˜•¦ÇIJõV»|(ŸÑ ) I7Ó—ð5=¨KßA¼ˆ×ƒ¿(Ìúut¸W…¾!ùó“r¤OM6W ­%ðU.MÒñ(½f°1Z&¦OãHb,lÚŸ¬&Ûðz’Â1’Œ¤ êñ×ÛFi-ÜP£zs û±lQÅHÚKSˆýËàÄ—áÌ.˹T"à²H<T©`§H#{/¨P1iÌ‘¯Ü(Ú$üyH±aþÙé¬^ª@Z-Œ8;M•5ã“öz¹6@&/¾ÞíEã—ЫÐZœ³á¯"ê ª÷nÁ¿,9í’\¬w8Ó`Ðxƒ–¦Z#¼Ÿyb/ëèØ59éYw LVa¥É^¦;ëÕ!L‘1î}$-¸-$Xé´¾ÝÝò{‹úÆ÷ÿ/ÂE6 þ±'yæ½-œÖíßmÿr” £ìú*ÐäI²hNø'Å6s3ˆ`p¶x"¥ÿ|sÞwýå¡›ÇÇ:Á#ìÃ0͆M•˜jÂììO âkbTwÐQL«³=­ÉaÊt4¥Æ¥Û``ü¿EØé ÊËHÚfàí/ÅY‡’æ#OŠ¡>Ô?!ÛÆJîKßO,;’»”¬Q \›8p@$,_è›éÜÎ&ãEB_GiúåJ]?Ó«iâG¬/Xh˜Q©S{E^}žU?fMUJÐìf&ŠŒcv_ìñ]RwÜQ Š×ó/ùìGQNXs\›Žìß@;Í;È’ JQ(âQ& ŒîN=R±MÀ)gPØ£Õ •AAk‘S67ÕІ­gÛÐyhs+”ÆN»p z†=M¿nAŸáŒ7~DŽÛ°‚5&½f´ðKQ4<§Ì:™nõ*[®ÉE–#´Å^ûíxöÐÚH/ã8ÿqb³Žpí¦w86ѵ¨½˜X;Á”qÐÊMǪ2¶igu¬l‚8y|EùÉâœ`öK&0e4ÄìˆÅÛV(ôËZè‚nl?¦ö\ÁÙÚ4É-îpt×Í?ãoÑbá/Ñ3Ë¢é€}èScß·^¹Ú )úz*µ1ÏÜ“ò#õdÑþàÎÿA§· ™EkDìì‡å8ÍŠH.ÌU­Íåµ{—Ÿ86äwóÚŒ³+¿e©ýö}IV×W23÷ë• /†é¼#åüXýÉÃÙ› WCw­GhûëßÏkIð˜9¹5±ðÇoü`sdÕP…‘p´Ê9q?:£hs60ù 1kÒÊä;ÈIX{"㵘+åKÔB)eìx¼ ÓwÖ MƯ'u¡ë·a.oQ? BëS;Ûö™¼>&¿…oKZÉ0‹24?*œÂ.§Ø~Q/I>ó°ãdKÉáUÌC°2ê(¢è(] HE†±¨zãe·ïç±ËVå07НoQöþA5 üŸO+|Fÿüùðoƒ@nþÞ*,Ò,­íš˜«ªDnÀ­ƒ“88Öðdû“­¶Gƒîy€<ƒ”hQLðürqœR³>í`w‰‚›7ë„°Ö)¥ýÒ–”ŸéÂm€³A›"“~HÉP€,DzNé’G{Úè„K7êÔ“zOІlrJC[™atfÑI .ê6U:—ñd×>Ý„H𙋱Þ0•£?:Nµ÷`ïÝÒ©MA.¢t¯í×y™HÐqt*xÎf@2>›Í J (Òå\=nöŸÆ 3r}®P™-o;|ò%oÁK¢%B6Ö9‘aZ+Áÿ^ôuÛ¾²ìj‰o~> —änpãV¯ÒŒì$†Û¸Ûi8m'Jà®&~9´cfYžpÁ¿‚0›·ªºº.ˆ¹çã&/°6áõ&¿ÊÑY2­—’rt§2:I¤sí·éˆklE`V…âޟ˽m¥ÉÜñæ‚¢Ná+ƒJmíÎö `â3¢¢³ÉË™ô©Z».¢ß¼&RE ñ¹âP÷S¾Ã§Ó¾ïRnëºÌ'0ûÖ±0„ˆÃ/¬3—ÉX?³»—F’wVÒÁcßÁ8X‚'õ™Ö<¼ª¬¥}A¡ÿVLΚ+ŸîWJ•¿¢-6ЩeÇpvÐ'´û¿_¨ÄÆt(î}¹òvÑ/¶ ÚGÉûk±ÎêóU|ØGpG‘ëì\ëL´ˆœë¹ûAú¡W0áÃh¦è„nSYe;œ'Ìy¯ð†W©&õPl­>ƒíà¹ÕˆV©›êâ`¨Ï¦ò×?jZÿàá½J\%4ÕðòcúLzŸ'Úåp={&¥Ê%_Q®íPÊ´ÌñÃíÃcëï*Ë=~•ÁÒæÆÃDÖˆDÆëZ P’}]‰`³ðCª­-ZSuqCfÜás³n¹oµüϱÚÝ7D¾û1Ý~,àå@£˜ªƒõqd=br›ÜmDøöœ¤¹ 4˜^i6þ9B5»+­½žÎô(å½r ±Ä,š‘™5KØßL!ÚЖí\üwdë8MŠý{˜\ÎIZãìnéÄúÚ§/ÂÄ©\í¿4¤GPj¼ÃÆIî!†>LBmäXGýìJˆ’нÜU¦¬vçÐ?ú*NÁì9Æ#m—RÙhkû[žù’'lžáù –"E¸v¬ÔB/´@ Ê6"TéÑK}}ëˆTýü¯ W[õü“u35?hæ·!äÃóïÔøMÆ0ƒÌž¶îÕ@,ˇŒÓ•[Ûžë¸õCk¸¨Á¦ø~’!ˆ»]€½Pò#%˧·JÁsÇ(-¼€rñ^˜Ë¯’{Â8$`ÑŽp?òs- —· R¡¾&ãâ%ZšPÌZ;`GŒ|×ÂÑ„ƒøR+ìRhýõð@çØÏxIa*êuLË7|ÍÏ‚™é©âð©aUæŽlÞ?™Ñ›D)Vý+ò¸K’²Pw¾¥’ýŸHâ2.üHw ý1“ußòr}Ä( õ[ÅDâJWÖ„û±'ò‘B`M› sÿ/–XS?àDˆ›¼è™4vYÍÑR§XÖ#~RÃòMˆöàxø#:¡ ÷.n ¼¶Âߘ>ªD:´„t0Á8å€k<£P!Òö¾ûÛc@G®šæ[êW¯(nÆ@üçd;ô8²É8½è^­ÔHnœó{ÿߊy5iÿò2ȤoïËõ‰¼ ôº¤ÕÙeViRƒ‹¦ÍѸԿτS8j?B“í$"=k–Å&îÑw‡â>¡ÇûÁ},I—«Á<èp³Øpîµâ5Æ…V¢Õ‹(5|‹úˆ¡úŽ8¬ë™á‹Q¡Mx/â&è!>)“ÁOÕ‚¼÷nBƤ4–Î?ͤÒW»d8¨×X`ꢃ Y-/ékL¸CõôË™Ï?àu™M }‘7jL ÜÞ̬CÚ*ÐwÔit‡ÃöNRò|²œíù§êgPöЍ­¾,Ut}z_¤ÈËX{]­šÉf ”â=ÜØÌå…åGo¤Q»ÙQ?¬øV·å¥Ã}°\±Í3,ý«™i‹”RT¿DÙ2i…Ü';$<„ËTrRgbënf˜ æ)< `°›ð“”,¤Ð ˜ÓÞ­ö9+¬’ÙYRÈ]ZÙO,‰—è)*Yµñõ8ÀkXÞ&"İ®%®k«%J®{ÞAhC“ßC—=Fn&Û8 Ürn"šíJvª™¤@wmQ×tYI¤„"Þ} üNç=¯æ´ ~øÙ?­-ÕÉ:~Ò¥èz(†4X£¾&7ÍnXä—{Ÿª5Þ—ß>€1Ô÷«o+™™U¥­*Ú‘"©f]îÊn¤¬Ìêý¢óî+Â#¥Ø$G´~¦—}ûh|8t\®¤TWuèdZ¤SU­Ÿƒ27I]·>AþÇw9CzRPˆYM§ ‚½ †ržgΠê'`3m XQ‡²(£M<@Oz T×7ÖåÉyŒSKàÍ:Äcç8\›ºV*mwí,ìÅ-Mƒ ¥0±ôFFßn›Ñnµî~°»~Þ  IHP-H=9GÜyç# ¦4zÌrøMÄ{T–ÀýÕÛ›B<á-üQºxLÝôqrˆÃ¨åäXJ’I³­1+w¾Ç^þÃc ˆD’üïpßÌ[+Š©ª¯VQ߇kœ y4O ±®ˆæ›ÒÑ’—55«]JØV=¿ñB‹‹gÚå è"ä±Ìï=°¸ëtï–¿t¤$ÖëôVtüÅöüè$Ž/‰ñB}ð¶èZîêàÈ-F"XÕß¿×ÚU6ø!ýS 'ï„U¾¬€I2|úNƒ nçnx»V0RD‚ÓŒñ6#-ÂÆVªh/¡ëç7Œ}HÕUg¹&5ÙVÝМ’Ã~²,r?PYðvÏXÏobqpÓ7”âü.?áB‹-ª½NIãÛŽ“?sž¬lw¿»€?UÅo‚.nŸ)*ßTºõÿ™;ªÕ<ôG˜‹[2¦þ"R)·%2$“Åhä8§pê<˜GìQIËŸ›©Òµ1óI_™¼§ƒ £?ˆ`žYËA˜o=ÇìŽVΞ(RN&4ã~$Û‘Âëukª¥\vÑÅ£(O7c™€;tc6Z“*;Wa1È/¸ý‰ÉnÏD`z…Hpè?#ë;9 æý M ’—*°²sϲk+êî‡Ù™N–2iÃÝÞèšórÞfû¯'8ïŒ#ZvÙš›äã«ôWJ,HU¤˜{)7ÿVÂGÖ­š _6¿«ò·ßùÔÊ ÈûZ.H"LQåYœi}ouÓ'Û ZͯêԲIÎÚÄùì¶w.k½Ž<±ôñ̪Öí/!±•ÃS\Îy9#oê‰Ð(œTOâà:f†ËkÇ`M„8ô§–áè—ÑŸ7H7×êäØ%ƒTªaÎõÄéÌC`æÅ§ß ¦ö__ÄÖAÒȪJñ ¯Õ “BÒ.‹M¯aŸÕ}gkRyáo—·‚À¶Þy÷1 ¿Š® ØIEðýx4¦ìn[ î |Çx}T” ö¯€Òweýl°EëÁ¹åƒœ·K'Á· ý ÞMè@Äû{7ª6íÕ¤*[š"àmxFw X¿±ë±„w©kWoá<Š3žfËí³'A)9©¢äwï²WÁd¢P¼PYœQ¼¬ƒ«Õ!‚gô±ƒ×BÏ´@ÍÈ`,w‚ÈÄ'ÚѬ|ŒÓdMSR>ÈÇ…/ýSWOúš*¶kÍAÙÁFãÃäe²‰Ä³ÎpI%†è2=>iÊ‘Þk×¼(GQ‹t{þÌ™Ãp£ü1¡_„Ÿ“Ó(¡´¬^äÀèiØ%\}2¡úøé8ïÈÜw•-7°]ø8úeƒgþ,7·Bøj¸`Ñ)­/‰‚ÌŠ]5ѲHMuiŸ• 䵆Yj²ÇøÑ½lÐ~ߨi¬ß—¡#->áº/¼)Âǧ`:kd¯ô'È’ eT99T1~à1Ä@¼[RŠØŒÓ2yNÉ!¯ZSnC:u{\Ž‘(6ŒDAÿŽ‹0x¡“Q<~ìùDÖ‡ô=¢k`;}u¼q¦†ÉÙ°hØ‹àËׯ7Ÿ‡#±ÜÔ8%â \i7MuHk—êJ€ÎÿÐ ƒœGûŠj^úsÉ3“õQõ0f£!­ëWlí¯’æÆ÷B¢œ—êU6Úka$Š¡½n2ôÎÛñ|Éà;ÿ\xpI2«u´Ø JÆàz‘T"¾IõÇI2d&gIbÎ=exw@Ž‚]ü˜Ø9n&!,F¦:Vd¾6Bép‘WPÖn=´üEOóŽõ ë0‰KZ†Ç%'‡Á(C2¤‡4ÂøÝà3_Ž—ŸÎpæ³àŠAJ-H§§åˆE7Ÿ$ÐØ­Xsƒà]DzÄ-ž‹Š»‰c]œb¤<Ÿr„7"¡¾þšÔ/µb’)·¹®.KÜhj ófß•5Ë#ñ—s”6u¦—ƾœ;‹Ë“ìh¥=àg8¬2Q.«Ws<,Ž/*ÚÈɆJ<й¶ÏÚ 6d;ž×˜û”?Î"*Ëfá11™ˆXgÕG¬'÷€pþxYF_û»Wº8·up+3ovØß~”{ÎV·ÐihÚ½ü7·vd=—ÜB8ÆüýbÄXBjÖ¼žV´ÕnÂA™ÉÁ¸Çƒfèèý3{‡¿A¡¹kÓhF¹ {ØÅ¤. ,/˜æk£è?ÀC$=ôàõ{Âh¾íÏ÷“&ÈÄ…ìÚÎò^ LK÷Qeï2-ûd4GJ%ßCŠ8‘ñ>Ã-—»vVÕ Ãl@»íÑUwlEÅ;o-„w³‘k"ݸß<]3[HãÛÓXJĘ»ãEg°$[«>´²³ø5âç|r¬_ñȧ+ôåÂf•!¤<}«A3hºöæò¨73Ö¤Af¾Hs™1 ãt«n›p5lbw,´Íßa`òPÂÀÁ»=XÁ¡Ýˆˆœ"«Î»ÑUzYðDY,–’æÏžt,Õrf®áœ?®°? Û=¾Lˆ2` Ù]3¾ ]–[~NZÑ{cŠM–Ÿ…›_’‰Âlðoã."ú²GÄkìD<+ÉìRà‰ÙùQs£`O“íç`«øH†^ÆÔòÙ·ê9¿ì¼t;nüf’$QV,[Æœ4R–»¬bÂéœì¦FñSˆNµ½eÛ¨”ö-O—Ãv=|‡Óà`C~«·±¯ãZu4jŒ×L—V;Ký{37®/c©¯"!Kæ#ä0õѹÃцKF¨£8Ä÷³ö¯ïëÎÙj(1›bfCIZ<¦òSy%È{¹ù‰¬f­†oþ»5Yú_–hƒâÃñ©þ»3¦_Ì èÔvíD¿_ú2Vm¹ìíDx">O§ÆŒus}7$ЛõÑòñöo©l«Z}‘vBë’ ÷ì1,I,­p­›¡u§@Å{ó4É#¤ ³ ÙV< ™Þ·ŸýÃ8»íTuuö¥ZžæxŠ ž9Qàp°ü˜T_C% ¶¢òèXg¡Nܵ[Ÿwêo©æ¦Ûº’Ä3˜ãÚQyÁÃýSpþKpD^o¢Å*Àœßï—êÐI|dÓ÷8˜=úPÍŸTyŠÀlù¾+uãä'Ú³4’[nYË•½VôeÁéf’=ÍŽŸrðf‹ÿ÷€£ÅNÀ„‚EHúJwçxÏUy 7îß±tqd`#⻳Ú/ó púaø~}ÍÃñolâ´~h4È0¢‚³‰RAÏ ç=C¡|¶})Iè õШÆ)ý¿Z7wñØ´8ÞºÓP4ž öE8"¿µÌÕ‡`öÚ¯ÁŸ]Q¦ goG½`àÐÄ]™ÌýTg¾éÝ¿ ) ^£ £Pääµðÿ˜s!ȯ%EÒÂW…!Ãæ@°’#¯)ªØú”$†¿nœ~ø±ªžKh#+4É€XÖQ½I[·«$®?b Ÿ!Ü@\ ³L¥ƒw{}ȘkÔv´7.5`pKÂrøMÄ{T–À~Ä©ÜÊ8cÕ¹Ìð Å+ˆ&¿€p¡Â‡Îì§S4©Dj^KåG‡&GJ}INñ$¤½Ø U'Ö>?.‚è½Dמ^¬ 2T€‰ÇmÞOÍm72F€KBÊÕ«“ø‘ ä‘g&ÆQÒ€ã[þ¾g°üº xÞ( ‚_q3:#þFµ·¹éé ‰*ª-f ª$Z­ÊíLC ë=QtœSÎp<ª€–AÖfÖ[˜T—;C"¾‰þ Ì(nÑP¡Œª^ÖÆÔ•.aŠšÉ­¯N¬5£ùZ÷á,­TGML endstream endobj 316 0 obj << /Length1 1886 /Length2 14308 /Length3 0 /Length 15496 /Filter /FlateDecode >> stream xÚµ¸eT\[ÖŠ»kV8!¸»»»;P¸»4¸»Cpw‡àÜ! ¸»?rûëîÛ÷½¿oÔ¨:5—νöZûœ* E:!S;c ¸­3=#7@VNÅÈÖ‰“Nhîbmä`¦gddE  q9ƒìlEœÜg €‚‰ó»ç»##@h t|WšŒ=r@g#U{ €Úè/ hçäLgläô®ÚšƒlŸÞ]Dìì=AæÎb°ÐÑý‰ôÇ[˜ mdbeçædÙš¤éåèòvnïB€ÚÎ` ´0²6Ø™Tš51e€„²‚š¢Ê'ú÷À*.öövŽÿÇEDEUM‚ *$¯*ªÓ$ÔTTÿ|ªmßù›ÓäUßõò¼þq—SRÕRcbø³Àèèú“öÜ(ß™þKíÝÕÌÑÎæ¯j gg{n777zs'gz;Gsz{ë¿ø©Z€œnvŽV€÷«#ÐøWa\lMßËélüW€?{™m€œÄíþ¥´y/å»Ó»Üù?ÄÞ áü'¦õ¿ÌN@àÿ¤±0rúËWVQQ`c²uÚÙš¼:9»8 ÿ’½¿¦Tÿ"ˆ¸8:þÉ!÷o•ãÒü›º°ÝûÊt­½|ŒÜþ¹cF¶.Nž«Íÿ.ÛÄÎÖ ääìô¯ˆ@€Èø‡½ÓŸ=Ùþ%“’—SQ¥“}o<[:9»÷êØÒ;»;ÿeý'ž¨,7€“‘ÀÄÅ `|oR1[S;›wÖNÊ' z¯“³£Ã?ÛÚÊÖÎÍÖëÿ%6Ùššý©»©‹=ƒš-ÈÁ(%úÆï"„ÿÊÌÎFÐt7±`ø“ì¯^ù#fú#~/‚—½=ÀÌÈÚ è2¾_¼œŒ\gG ×ßÿ‹˜8¦ ç÷6„¿¢KÙšÙ¸þ%~gòoÕÿ5õ_cúé}FMíl­=¦@3y;ç÷v þÿgÊþ‘KÜÅÚZÞÈHýŠþÓÌÈdíñwÃhÿ0¥–·s´1²þ‡ä$rš*‚œM,þUÖÉ¥œÞû^ÈÖÜø¾%‰ÔþŒ’õ{ϾŸ; ?Ç€ŽéOQÿG÷ÞŽ&V¶@'' û_*à{þÁ÷½òØ䥴…5å>ÿ³aþ²³5±3Ùš˜ÙØFŽŽFŒï]ÀÌÆðbzogS û_m` ·µs~wØ»8ûÌìþl%€Aîè/ÄÉ`Pü/b0(ÿq½[ý±³¾#çÿ@&F&ðoÀ`þ7È`ý ¾‡²úä0Xÿ2½“°ý|l÷ÈÊõŽlÿ›‰•À`tÙ™þÍã›ãßà{r§¿Áw¿gzèöüßê+þ9yþ+ÆÿnÇÿÉagG;+ Èôývô79#gG»ãûL0½Ëß_ÿþ¦÷? (þ;Îó¶s÷¢c}_Ëû2˜ØÞ‹ñ¾VŸÿñ5ù×éø×<¾÷Í¿ñŸ£ ºM–ìLx¾X¦4…”úŠL•ASpÑWàðkJÇA-§OuàÍýE ( hñÏ ,´“•äÖóM °-Ö¤ø‚mýºÑšXùãÚTIpÛÈWÎELh,G^-0CnÉ¿¬‹ôÓtN¾Ö7Ö™Œ¶¸6"€ÚØ¡WG÷Cóäúe2©nYÛZ´[ÑS3–£5†ûÚÇNü¥©Npç·¬˜H£>¡ešYÃüœ1iûÞn̽ } N8"Ùn4zý®´eM˜§Õ¬9ü®‘ƒ0S~‘¹´·ºÍ3¿¢T‘–qxºê&W¨åSÙËïÒÛµÔ¯þB1Ñm0G.nkSÜjÏÆ­ «å-n !c‹¡¹;¨ê‹a-ª_S=lÁMÈzkSžÄ¿1 x_%¼Ž>"¶š™Í)†H…t:Cz‚©0uá¡S6† rRõ–dÃÒ¹™ëýuÒ¼ÖÊ|X·$:áúhô"•V9±Š/xÔ;k)[µuÔêu|÷ÙX™)ÚåÚ¸nt2KFÃ+· mãJ­cê°?~ ±zM%K¸“åÑ”¯œðó£ _7t#dÖ)yƒI¯®(º‚Ýx?ð°¸ÊK4jP8Q`qõ%ôMŸx~H,Àd´ÇoÝçáÅÙ²g?¼<‡¥Ó¨K8Æy;ö¤¨ëùw¯@T&hˆø>i\á/l9†ë¡``˜ËbLR¤íMΞ! » ÒÝ 3§ùxÍ}š·ÜY Âò5â5BÁðÎ ˆ-ª¿y(,-&ij?gÚ½%vÿ¤öŒé6Õ}üqVØXÁ-³²‡ZZ«-²M~¶$p+3°{ˆ(&5á˜e|„;—ãû!01\°Òƒ>2³«‡D-öÉKVQËOsø3¤dŧ8Çu<\ìÞç€_m9`3V|Œ©`f¤3Î(5Î9ÏÁv?ýö/¢^윎#äXgÁMeÚh­8˜Ö&‡«•ñ¨T’…7 d[ºQŽ[ÛYxt“·‹{Ýá™dãÍUíz†çèÛxù|tª–ù6ò¤E‡¹Ã×ì[¥Î‡^ÉLÄÑ÷ÈCâP`t–GÃ;÷iÚEØÙþo§]s¶µ=ˆ” “?=4¿moNУ>Èü°Ô•~ÁŽ•³èœ$CÃþ¹Ðnî†iò(¯õáñ3„ø…hÆÍñn¥)ê¥ÄúÖ’YJ‡td æG˜ú[›Ô#‚ÃRëyö(©¡; 7ATüÕ ~/Æ‹ç³{¸5íL Lï)¾`n ™…¸8úc ‡LùÜR€ŒJˆ>dOφúíȯXÔkñ›¯C¼—ÁžžíYB—¼n°ÔðuÌ1ó)"&yRU06kN —r ,0¼.BèPò–tŸçx£}…+Ò@^2:eòjªB£L´B< bp™ª—à"ƒ>¶fÆp­†‰æ@6f8k¦ÕóøþpL[ŸÎW×½žºZzˆÖ¤Û“a™Ë>âµuLL88&D‘ÉÔm$²›4h|t‡Ø‡›-j|õÍ…²”èÄŽ©¥ù6HúíUÕá'"îyÖ–tÝ/ÑÚûTæ]°h‰ú2eR ÆAÝíØtî–õ'´×¶K3ƒµ2 ¾^ëO"!þdb2Nï›—"åo ²‘ÐOÞVÊ9‚:­¦þDŠÂt*Ê#?ü1îÇÑ„ŠŸ§!U¶9Fïh=QƒêÑ¿’n¬1 €?t¯á½¢Ë‰¥>ÐÒÏ9ÔK4Òfg‚}l%¹| üUO8Qì] U¼{Cg ¬Ù.Ÿ¥»1QwÍg¾ÔƒÅÛRïg¾ ߬o–Û\^*Ãż°c&¼¬/§u@àX<"×. i›‡ Ç\@ UÍHuÄ„%O3Ô#ÈŒ]À˜“ž˜­ åÏ|U3X­Çñ`’§C€DÙÃ3ÍY£–ůÚ|˜™©zÏb 6†4øå.Ï/zÉSÈm KjÃA_rý•;ŸÿæQØ’œFˆƒÎ¢q8‚@ÿcÍD†‚Ê¢¹ùd»ì ¡$()}ŪK0µ]"\â¼–ãÕ.ÒG\¨CÜ`€_ñ"í/¾ü  “tºô3ÇÊÈmÁ‚¢F&ÃàÂÿ’p=wBòW¤ó° ä_°Ñ¸!Eà®ênüžî}kŠ|³kÂ#hÞ¹m^5ØX©­É~‰ÐÌÛ£Á°Oà5kÎ’q¤<®N% =a"V»î\lzI¤µ€åÝépÁ„‹ìUD8ì¸"i˸rs0÷l\ÆÛ-jý=Ž:÷1^’(xjª.mO5}ã)T²¶º¦ü*µÕ&tîñ»”b¥$ý S×"$ÊN|ÃÎ2ëŸê•ú#/ï¸Æè‡*ÌÙî÷8ø >.) eýâÿ\D½U;{Ièo„'7Ìëö¥ÙIˆÚù=gs!3›0^v)çÞçi ÙwZ³ç ŽŽõ7e íÅ‚ÇMG=ö!. CYS˜­ÇÎúgWÉåçQÉÕ9Zô-ÀØôïæ÷Í`€:ð* N“Kɪ¶ã¬½^ߌ¿~X‚1¯ºE:asßXœW¬ K©(–‰òÅ¿SŠÊ–üÏ@K8sg*v.débfÛ\Ù¸Õçƒ+IÖ³ Ô\}#ËošŠ |H™ØU§ÉÐÀÕÓGé_ÚnâÞüýÈÓ_!Úðs]óôÍ^9Èe1´h¾Eê9Ïfð*ø‰ÈsÍAenäþº”0´ ¯ârÀO¾Ã$XH Œ¸Šó`8ͧÝi< næ?™—š°æ½‰¤ïyýâ[v, ÃÕá½wÄ÷œØ¦ÐÍ#qíÒ‡X\Çöl šÒ:a›nnúó¼¦1àÚ¢¸á yP)¢¸Àˆ-ž¡ŒC ÙN2À¼t0Üêõ{ûפç•`·Pg!eþ^4{©æp8Fÿj 8Z$¿½â‚\K­—¹#]ø-&7”×H >ÕᜅY¶ÇåâëËW¿ÑXëDê\{ *r£fÕûü*_O€0Až2²7q³ð×Ù'ì›·®"ü 5ñ§÷F‰Â%öæUóY-$‘\hû²£ÙÕ[l‡´Ÿ‡ìñràÚk˜òNÊ&£pÆ»=eã#?…æbôêp¥Š–µ=¦ $¶œ¦˜oÚ‹x~ì¯)ây«À÷Å¥GQ[ØÅ¬ú=ÍeV¾U} ÷\¤®× ɼ BÑÄŸaâïÄOo¹¬)zŒÒÁŰÅ'ÎÓZ{K–Òim”_,5u¥è•ÜÅ<Ž}B<ýëEÖtw’jC~$Ö› ¾¬wò4fÞqço(©Roá_4Ãôý8ùãdYv©í+^÷s`AX>Áþ)9»ÏuPkIȶjsgè š+üóbÐZEH×;>Ð}¸fžÿswƒä7#†ö&wû7^eÇùöy#ä³”°F•–éŒÛTAÐï¼ã«Ã‚å*R‚öüí€ñð—¢ü Užg¾:ÞÅ€xŸòyRój:bè:žÎàÙßcÈ,7ÔÙo(XRàqCƒyó´®©©8of”Ó2 q>?ñÈ4ÅÛ¯ŠÏEÇ‘¤A(^×]Í/,º?¥ÌEg§³”¢÷]³Uµ¨×§ŸúÂó"d’©öY öÍS¿ÍìÄÓƒ}?Mä~©qÊq9¿˜QÜ0ðè…aÚF”Ú¬v4`éU¦ ]j”ò N´ “1ŽCñŤxZžbÂáéPªmv%GÙIòêrrŠSÓŽÐÐW¥ß蛢×S4-^…Ó,ËÁ»š6°vÄþ‚Ðät¥‹‹vÓ®¼Ë’£Áå^½ŠÌtÞ¥¿ôŒô‡0­§Ö½–d6r/›{ñÓ6õsr®jŒ)+ËhŸÅ`;`6?l“èsœ“š×TÎ\TXÜkµŠlõîRôK°Y¸€z~5ר­ˆߥ¼Ï`%¦—³»Ã¡ÿUg>¦È® #d_ä £D®ÏpaÌ4-—o†™EÛsƳþ¤W>Õdéc¼ðí¤U›•ñ×®PE+ÛWè5'ڼě“²¸ÉD(ZJ¹˜Çtx£©Üƒ¯J¹Ô‡“Îo3ÌŽ7Ó{¬·#7Ýç­R¿MøÓåWâщÆÎI>F]ØÂðxµÎŠÃ„´-¡•bºeúTÔEc‡.÷}á¶[d«á˜Aó ˆMœˆÆr–ÑÀu­]îÈT‡@úÿxr>™®û0XÂ5b/ÖèÅh£îÆðäŠ]0•GëÍG›{#;kuEô#h1iÉ¿àZ‹ä<жá†'§Ò(ÍT˜ïì‰D°Ë£,6Þ¯VDr¶R‹éþ¨1Ú¨^¬úôâŒ9½¹ì0»b¬æ éÚ·‡C>?Ш\KÝü„ô]€ªbwDsìAáüù[†$MƒvhsìgêÝî@XœéfÔò¯*¾ì“£‰…îñfVÉ ½8âÖŒŽ2!F<úŸ?ûÜb£q_E$Íx]vñÐ4eøW*ˆ©;’ëFEƒ¦Mq¿‰Tù\ªš®ªTèêángww}þÉJ(*ànäÀ¦AÊ|$LûR>ú—¡fÜ:ʽ^š9CÞù™g.”çxØ©t7¹Ð/ؽ‘Ì¢wo+BêBÖ%ÖËÄelóƒ{L·ä€n‚ehÝ驺’†ÿ{¥¨RB[@N〠¥¹Z7Q²fËJŽäðjóeΟGóo¨ŒCŸŠh6‚ÃL×iTq4ç['ñªJ|ˆÒñE£ñ$šP¾ ·@1ãÜ}[¼§()SKYž^}¼ØZ¿2%Ô{ôê'³A¬Ï“¢N dpy‹¿§hW® |LSÜdHñqYTe‡Лç9q~ú&è^“ñRbµC¤ñ~¸!Ê€^‚LžöX‘%òÓõÚ9»ÉR«8 Úß7”£|A-JGNx@#ÙË/dÉÜý™/2%=@éqâÍcö´;ÙKMœìÄÚ¾6r½öĽ‡vwx=G{[² RûöŠ`Éâd]”ûí›"YgÆËÔˆz“úé®1(õîéñމ‡¸(¼gݺbDzÀì¡;ÿP­ŽcßHo7Ù¤ØÙ‡ô:¯&|iX¿ÊYξ\lÿ%yp¶Ó)Bi¦^I+ñê®}\ڹ藯N“öÈ-ù/>ØpÛüÖ¼t[Ra®jÆùãÊÎæy¾ó¡ºZùÏp¶ÓÆêŠÇtùûX¯¡2q„µñj’Ví ‚nו7‘ì×$©ª7„<ùÉ”,ÓYxc ),Ëòðä ´Ê~DZ¹®ò±T » _1ÄÞ‚ppF(p¦‰gITŽÁ[ƒjÕÿ_w4#>gHÀ½01 urvF÷‰ï‹W*¬;#ux—8èˆs‚‡I•œ¶µ)З‹}¾kÉZØÂr\£×”#V_ ´®»Ñ»hÍ~06ªŒH{ô3ÖX¦Ž,a½ùbIU]éÐÍr¦€ƒ6o¥÷¸…û,b f(ÅOçY|é:î^+P>!Þœ4½z#3’ÓûÜôšŒ’K >“ú-†ifãÊ«µ%ˆEAéˆÑXù¨°Ç˜î3Jȧ ¾Ï<°ÌzÏ+M¸›±Ï½˜ÞF܃ø¦ÊÄé,›ÒÍ’Žø.€¾ž˜H´Ôn<+7]é¤Gf «×°²Œ# 4Gðo“bÌTDz pÝpö ^å‘tdýøeÃÖœb÷J&Ý2Ðõ*“\Ÿí|„ò:6=N2®”¼èJ£Š£'@˜ðH ߦÍ4_þ%ì›»÷4B{:»w[äÉçÊ:DežU/¨4—Óæ!.÷Þ$9¤ÈkpHé‚Éþú6©äÏyZÈß[ÅDµ…ˆa$ÄÇæIŽ™QvPA·P§¬úÊ4/x÷ý¶Ä¥Ï cVÖ˜^%ü¬?È"ïGt §Zí`æVi‡bjÈ—ZFx°>¸«9pàGWuÑèB`ƒgŒ9†á@›×éW÷ÖÔ8i¹mŒ@Ä™^z!î>ÂBnCùkç„ÿJiûi"¯ŒGtڳ΅’U¸æ]‰´ó£ýûñcÉÇÞ’18ÔYö6·&õ›zužªÍmTš";§o܆ˆºLhª5#TÅZ}yÍÇ÷>4_ýx&HSqdÕc¢&¨µcùÀMž%–/Ž{î-Ž£„Ó²š›%2Î}CÅ$NÞRÜh„Ûdzˆÿ›Ã3%’dBò3çé=»£ˆ4çV rtÁ„àPË“(@3ÍØ®söùi®¶yŠè6¢±:#ÑîÝÐc¼˜æW—Zj“_:w¿§¶­6Ϧ¤”übÈFïgš2ÒßÁ.¬ÕŠ–\dµ(±!Ö‹·ûDQþE)Á,l^Ê toQ`1Â/ÃÇ{Æ÷Â`™=bu¨­§œä'V¢÷#ßkW+Õ\K.š@Pœd¡º ¶ÕF»(„v^âö«Ç™<úÚ²ßüöEi²ñÆ¡íÕ/hTiÿ°M˜·¤M?‚^¹aÚúŶïZùºé^â‘è%Ö•üBfñ^3˜:Âi>±ðÈKãuøßrbG­áÛ¬ë>™„Ì(<è#ÌÒD¯&…ÕƒjÔΦN–ï fgááÁr`I4 –y»OSWsV²-_ÝB¡í¼¦CÕ{.ûX:{óÌžaˆóZáè`¹šbx8 HXC°]MÐõxÓe@•§(!a"EÍFÃ{,HrŽ¿®…–3¢}© …Q/Ùð˜2Éã™ÖÇoßODbÈØé\¡!íQưP²E&9)Kn†L u?%aí¶ÇÔFàÑPåÚ^h$Eâ÷@« ¦ÏÛía(À<'_&|s ^‡{ôŠñY—D*ùbN,ô’ôúCx¼1ù)²Ôªs¥/ /Ð¥{Rýïá¨V»”c^H%4–Â%]¯-id*œ*yQ— úãFÓGaU^¥QiÜÁ‘N&øÙ5mzÀŽAkؤ¢„„€õÕaºÚvš9?”{â;!p­«Œ®¸e㘭š–Ã\Z¥¾êzXŒ[öt$.œ—\$ÈvëØ–TþUn'¶’ºv<½“Ïcáœq™˜ Ù·>ö¬rO³FµÌîio}nµçðžuf©27²lXº1H˜HN<+*¥/+-øf²L”ÇÊi9Ø@¿û¶¨ãXRþéSnÜôpk´C{º×FUT\¦ÿCÂì® ì—´zm ûp þËR!ó'c÷Î9QÇÞóASj,gMCF³¨Åå:§í·x Žâ&4PyÒ¾¥2‡Ù.= U¡7Åèµ³îMdšÝú·ªžÏÓÃó©2DØÎÒ AfÊ T‹öæ…ê5§Äd÷†ŽÂ5,äËÝv›Äjûök®PîzQOPµé+-6=Ÿ ÷زE½ÔË—ª‚&,Øó‹É H¨¹x²Äùó:ómëÁ…fØ"‘$ªïXç1c÷@½ÇAÙ[Q³àeű¢»6㟰¥i(%Jô?  ÷Q¦¿­Ø®.›b9£Ï29–îÑ QAÛµÒN“פbÖ¼íXg˃»©ëóš•|ÏÛ{E†Ì Mš»n°bîÄËkj~{|Š~'ĵ duBWM©fÊÓ[«Ñ„D,“à¶¢5cqì§;r–ð¥…è É;§ý£¸UTÀÁXù0[sYù) AËÄì™;Kæ³ÉÛyíÒ:JòdFæÀd$œœq¨”ëó¯22ŸÔwMݺpA•ÿî1—50œ¯¸ðÏòÞ9t<ãÅO«©`Ξ”× ØgÛ~7ø †ÇVÄ7°)âô¿iqŸÑ";§Ô˜·€•n³~b¸˜ìè.ž ä‚Ò‘qɦu“*¯¥ >1ÑÆƒzê‚ 3ª$u[“N./KfàmÁ(»i/L³ ²r+ça_Ï>µ P P+ð>~¨„fƤéìJRË´ŠÙœ«$ÆlìK?”ÒÒR‡V«DFÐ"üDÍo­ÁŠÍîÂü)!˜Ì€Ö˜Lð†¿ãö(iþ\©Xû.‹q¤ÙüV‰k .©?Yz?€sŒku¼¸øcÓ9Wȳ0Ç’˜#¯ÎiÅIJËyà M€ÖæûoÕUzñZ£<òù@‰ Û¥ebæ£JÇ‚fƒŠíì&ÆÈ }½¾SݹçàÉmC-ïÙuYOFÙonKé`¸!ü4¬èË A¹ƒÐË.UëºqÍL÷ÙàqÝdU“Ó9ÑqÑ„c88.÷¯Œݶ9¸H&wü¡ÑL¦Ð±yŸeÜÄ7Ò|6j&Î( íà|ð/ê´l¬A&ª¾Çœhd(±/F´¾™Ï=„I2ìxà.Rª\½ø2Ž|E>U¼"]±ÿN©vxPú‚«|×^µ-×.KÙdÑ(Ó]ÎÁû|˜¦Xå>$ËÖŠ- XPº¶¢S p¹¾Ï÷r á %c¦0ƒf3íg¹ÒÄùVäË»~ ”õ~.ޤ$mcŒ©Á‰~“®=SâCs¯/Úkn“—Öë^("Mé õ|‘äñ¤›«A@ôKùlÔB¾‘Û[œedˆ”*­%tVÝ çp§¯=_ÂÇQOW×µ3è[Jý©7(wþ‹F¿‰‰ì3dÏWª Gé¨\ß«ýÍŽn,”<{™ØÄ äÝm"ÿ&íbÝ·©‰‰ÔCÎ×Cc#º°ïÛF´å‘ÌöCTC|]—G™»X“'Ò—_-ÔÔ¬:¯\æZ– E±?ì(¯ÜaÊM9~öálÀÅî^,Z—^K¡’•:«6Ì0eÐÛ#·žÙøÕåLˆÃ–T2uˆäÞ+^|ú™ØåÉìÜ(dNÿ o~®g ¨õWÕé¥7[—áÀ¸/Ä~ Çè”ÂH½Å$D‰ÞH7–È Öƒð—}TZ^<³4ö£‹êm‡½‰…)ªx=fø2“^ø+0‹äKãÔøm¯§LÚ Ø]²©qÏx>†ßÓš˜ÄjÃ&8ÕŠÛ7zdgÊ¿›xqòIõOQ-÷º½vƒwÓ}Ãñ¾ÐFl³Ú­ˆCy ¤ÔgS ¥<Û’½YLº%WßÔ³2IU¿À:Eï ¥ì}Ëd‡rTóÌGèHœÔ)Õð˜&7”.ÊIj¤ ˆúŠ˜ØU^46wE_HßÞܵwšô][”Ä:!K ¡žŒUîc&®€"ž·‚"ÒÝ‹iÏj®iåóºþIúÑÈÁòÎÅ7» ç>)zå(…üu0ö‘‰Ru]Ê n´O{Û›<ׂ\Àå =2 <(Aòý‘5¼‡?f‰Oy=ßÞ ¸ù\ŒóW·Qƒ×rмdœI­Ãú8ÐEA¥f¹z¶"è×E½\ö~J• ×n Ï®4HPlxö« ¶‡Í‰µCuK3njßwšüêy‡Ž&ÆS¹Ò„€2ÇŽáß>¸òѸl¸\ì4 ¨‹M‚s _æÆb#©Îpß›óŸ<§‘¬‡á®7¤Ãáe’>ËÔÈì ©NÚˆ7DÙ„|Ï„>² Õj[JßsξJüÚ'žÇ£2Iµ÷‚±É§ov3ÝeÜ0ÊôýÔÀ* §ÉZéÛX™1¤Ó–ï%-þÄõ!ÜÞ»–”‰úçåE×5Í '²ÁßçR)œŠ£+Î2 /ëb©Áv?“c²'šÕdÁ7•ƒ%թȉ¨ۅ½”eŒÐ*Bj3÷˨´¦[ÃLj¦¿‰:EVÆäšÀýp5ÓN˜õ%WTP‚¶[OŽ©`25XÙé¿BOñ7}Ÿù1prú"Þãä¡‚ º@àôì¬\Õ]fq !ˆ%fD6G妖±­tü†S;€»·Ë´Ï–‹ÔÜÉÖî·Ò‘áŽLþ­‹hã8%q¢wÅ;®îéGn®æ†Ü"ñœð¸¦ÂÂaœ‚ÁÒ|FŽNf\åü^Ï¡}z, Q²¹ž¤hšjaºÒ×=@%‡O1°?9lvÓØv=OÂU¶‚æRûÜw­iíeÌk…³B¦Èöˆûzæ†J±Ñj%¦Oûw(މ%‰7Œ¡þC‘¾ÑÐøizíåYþdÝ-# §œ_‰LŠÎôyàâ.NuÞM`e@^ºE„($y@(æaó7Xm÷'pgü$ÛË9v‡¼ÕK*':n?Š>“– ÕÿÊÆs•Û„2 ÍpÏkýrzþx$~ÞÐßnYëòÕNÇË»ÄGm€œÉçh¥73„­Æ5«}”††m¤%ò$Œç±Vƒ³;J$ÓdCHá[ËjÚðuIVŽ¢lahËÙfÚ…•^\b¯„ Áv7'sýUÿü›¿øCtACÉEaÿ²\ƒÄa¼ã•´©«ÀÏÖT¢ûp±Åi†ö,„Àƒ/(ûÉ•Û9¤IšÊ÷8¿ï }‘ÉÔ°fÐBgèGˆzɯ‹¢ÃÎey€fЉ›ƒõˆqÈÃO–L1½Š¿W .’†ðˆ*tš|ßtäDmîG<Z ” xåØn#â9ÎÒKF›¶OÊ åµp,dòEnì¦`Ýx‹­9&a¸â…°á wnš§i=¿2yE1¹±³ß×ó ™9¸výþ]rÛ]ÔJ™iŒ©Å?owl£Ÿ) …ÑšjçGj{äÅtOp“…×JnjCåIGü3ì1…mD´G&.ë©ynýë‚°Ö4vÌÒþ­UÂ)a/r˜Áë<è„“Ó_‚tP¶—#aTÕN¡yöá@ìÜnÐà“«$A¢ÞÖ²@¾Á£³Ð+ÝÛ¾ð/ÒQITbR¸tNØäx& <.ªÔL­ï¤`{É*„;GfÌ0Zη,Ç[*4Iw¾òÆïôoJªÛZ\1täéìK!’!qg$ÔvÓ]Ïý#pöøB?7SW!žtNºt´]c¶¤Kê¨>~sü9ãQ½ü(ðl‰O™uQ'žÝ$‡?½Xþ¥oý‡^©sÌ—°*‰ÒsßerAyœ±é6D$ú‹o?"»™÷ÔÙ¸Xõ ðkñkqiVö׫߾OñÏ$äå3_ËX!x[…GŸÒW1­–±²l©ê'" ¥{ËÃih]ÅBš«õw¸>ß@±KБläf|åC˘pd¡I q —ªF6†Ë?‰ 7Ÿ?ÀDBÚXúiO&Î7åMù† *ÎWŠ|=V*H„¬U®¯$PY‘eÉ`&h÷¦€ ‘ö_#`¿i±°Þh™Uãƒ\`_aUæ£?#Ä$YÛnÏB|®ˆûÓ©üÌ­ù[q·¯‘÷îv2#u‹ÓR†d3z[<ó}#­ß¬;5ùJ(²Ñy·(¼~i:>]ñÑ…¦P7¬´Œ­ù%‚IT¢Ã•¡`‹Hq´ùNò$ÛèœØß2u…è³Fv€ßÂéô^d€rŸœÊ*ýÁ+ž?*ßI+£>‹ðà³×€¯À¼š}”™ÊÐ?×ZoÈ3ÖS«¦)¢? þîðÖt'MY±ã ón,UÀŠ…/CD¯sÓ Ø#Ù\Õ¬òg]Òs‰6ûÜ =ÀÝ â®Ö:Ú^ÀÄ<û¸ØWø|Õ×ïçCŠ¿C¯{R\]óõK¯ Þ(ˆœIm„P2÷ÕeUfþœ)ˆbJ›—?IÜH…ܳ^òiOލãB÷sÛÞ=%ä/ŒP×N!¬ùzêé[;¨1#åî‚ÊIüŠ™ ?hš¬2Ʊ.µ×®Î`3|h£¢$K—†›"õ”pÊ•4ØÇ5~?ÖǯíGbŒy#\†³¤×-ËRÁoF¶-çÅÛÌšæM¥Äº @4ÎwžÄiær|Ëd%ßµéȃC\ ÚˆJIEÈÞ±*ûéÔÿ¾D7jûí©š!|?ú³„M_ï‹ñ'ÏÁ–ˆ¹ª=q*Ù²×&áóâÏš U_Õ÷¦rŒÄqÖÂýíòx)o –}°ÁúÞúüìs·Îò,ýinj‰U¾‚ìŒYkÊθ]giıÃGµÁžõáùŠ{%Z£—É Û¨#ëÏ#¿—¶ãŠF}Wk YWâÂYKN¼ô jaîç>;]m«¡h¸|oÆDÆI vö3¾ÛÛ—¸°¿Áì¢ÓjÃâYKcr’ÀŒÃ¶[…‘o[˜'·kw[Ç2 †HH{˜?=Kîä×ÎÏv)aá —í¸J x;Äû8eÙÕ%Š˜!²ñ’ÆGwìüB,ºÜ>ä1UÝ@^¢²½“wltÞ xù,žÅÈ==Ù¤%kúÖºV6"8{2¿àrŠ5j8ËG ¬ÓusGÉÒÎGÝðIlE:Q ÷;«3Œa¯œ—ÍÙ"B¥†Ûºx gŠ*ö”B{Ýx¬B3zÞU‹ f©ƒ1¸“6ÃÛ¬‘K ]Ö¼ɦO&K2hŠÝ~Ì©ÿBc³Qj°2át³uàŸyÐu+Ò§Á¬ïUE ëQ’ÒÕv×O&;Ÿ ‚'´Kê>ÿzvŒ!H·l7ϪúzÚ­L¿â㤈¥ÐIY[hru¹&¾.ë.›ÑS6VXÕ6(Ü$ÊðEaqªÕ=+–&„µZ€×õÉ„ßP†¨RÂÚü -†} B}ÊDôŽ·0™?b²wQXuÁ < i®ó©´êͶš,fäù  ÙŽ?)/æJÄõ½mþ”È&öRWÖįùbnà¡è¿áj‘;u öJ¦w°œõ{Ùú@¦_ëç66­jXáz‚$yH\w~Òï,»¶¥Ç^(/D»XÊ—vO­Tè\¤â8´)Áò¥âôhíÝçÿœÂhkÄ<ÙfãŦlžR2"ŸëÈÃh,ÜEp!Õ¸†]ÕÓw¥|O؉YJN¡±^$ˆüDY° yUÿÔMÂ3Õ£ìQrÇáËb ›0de>ÑëºD}:üöÚµëÕ3‡SÅïÊrRAöƒ•åÔÆo%`´PŸŸU $Ä0þd³o`PÓ‹¿ÞUj7G5Ù¥¡O÷bµ õòn~õô‡ÁX›ëtÆó&•F—'F˜8º·mA:þ£×ø/¢î_#dçà; ·Ô܉èò½;É  ê‹ •?j¢3 ŠØ˜xÓi)ŒXôˆ¢_·ÜsD{"èz*E 3XÎk¹Öñë¥yæÓ")VY Úd>~Õp±3G2Mr²å— rêŸ\C0”ØÀõ¤®Mòãµ}/컞ô|ùËwÅž)jeåR‘PtÊ8ž' ÏSý½1«å È ¥Ïñ ć27ÀøŠÝñ"zˆT@%ˤII3Þâ|èÍ,–ÛaD]‹ïZ…é7,ùLÔæ' †ø6Þ< @e››anmÐy¸}‰ôIj—‘VSÖ&ª­è´÷”éƒoÚ[ ¹ç™†ÒDzȧòû¶‘™—apä\{|µýâλ¼ýÊ'ÔæbÉ(d«)Ͼ<yE]×YxiÕbÐGªôl0¸–¦#â–~iVLÇËÅ(œ=Ö"ç„› ÆtZº60È–™â#X1T‹’ÊG4æ1‹Btƒfº íÝí›àÖAŒì KUd=O©Y*GÒM&ÐßénÅGé7ºy: êÄ—W¿÷ß! ØiòÌEºE2ñrÑ$e3­¬á(ý¶vc=BQ/™&ÜŽ_R¶ Å"Q7éê9y–PróvJöJìØ­^™ûàgr5LQPiƧWjm4Äz‘iyæCŽÇN, øX­ájÔž0ãT~ÛÎûùJÀè>3dƒa%¨ð)d…†zXIût옭Lÿ5ZÃúßÿ†Y#Cßp°´¥VûúY; ½@tTØB]ûy+Ô5–TŽ¢U\U‰TàBÿV´¶1ûp!wÕo;<œžÜÛU›™,(¦©Ø5ª&Î6 žœD^•— †+©qÀ8n4HŒ±.Gû>=gX_®µ§à‰sPv!%%¨µ¯ Êx ¥Œ9 íAˆ€-WòžÜÌDHñG~ê´t»T¡ÇÉ­¹F#¸tIEZÖŸ¶~¼›« ²=ƒS]7³ p Å öÅ,4+[Žôú£ Ÿ—ᔦñKb\kä]ñ°ô–É 6ö_c†|›³gþ¨4MA endstream endobj 318 0 obj << /Length1 1955 /Length2 27105 /Length3 0 /Length 28268 /Filter /FlateDecode >> stream xÚ´veTœÛ²- î®»»»wwhww‚»kpw îîî 4ðÈ>÷ܽÏ÷ï=º›YU³j~µªMA¢¤Ê b2J‚ì]X™yròªÆöÎ,Ì ¢ [3E[+GW €•‘™™Ž‚BÌ hìb²7vò¸\,Ц.ït'+33@ htzwšL<ò@c5O €Úø/ rva01v~wí-¬ì4ï1ƒ§“•…¥ËŸl 2ýa‹2dŒMm@îÎ6Vc{3€ £<#@äþn´Pƒì&@Kc[sÈ Ô¨«J¨¨¤TÕ•Tiß«º:8€œþG‹˜ªšº=@\DAMÔ H©«ªýùTÚ¿ë· (¨½ûÿÔyüC——PQÓV’`aúó €ÐÉÙêOÙÿÒFù® ð·´wª¹Èî¯jK^&&wwwF WgF“£ƒí_úÔ,­œî 'Àû·ÐøWc\íÍÞÛéb üW‚?³2Ú;ÿ$AÿrÚ½·òônwù_aïpù“Óö_ág ð?ÊX;ÿÅ•SR’Ø[Ù»ííMß]Œ]\FÙÞß@3ª Ä\œþÔÿ·ËéËü[º(èýÉôl½}ÝÿûÄŒí]½þÑ›ÿ|lS½³•³‹ó¿2æV¶À?êÿœ™•ý_6y…O’ªj rïƒgÏ zïŽ=£‹‡Ë_Ñò‰ˆËñ¸™9,<ìæ÷!•°7ÙÙ½«v†ûÓ>q«÷>¹€œ<™þÏÙ¶±¹Û{ÿß>s+{3ó?'`æêÀ¤nÿÇöIüï&¸¿m@3èz˜Z2ý)û×Ôü1³ü1¿·Ã×Ûä07¶uúZ™ß¿à¼Ý€'W ¯÷?ÿ‰àX¸fV¦.ïÿ¾4peÿdoðüËü®äß®ÿê¿–æ}[Í@ö¶ž3 9“Èå}0¨ÿÿìÛÕ’tµµU0¶Rÿ_mýïXc;+[Ïÿˆþ¯Mà½ÔRü—ÇÊYÒÊh¦dåbjù¯ÖþËþÉÅø} Dì-lÖÕÿ¬–íû ¿ßCV®±w;çùÞÇÓÔÆèì àfûË|oÅ ~ïÿ¹&5 y 9ºÿsvþ •°7™YÙ[X98ÆNNÆžpÌïÁÊÁðfyŸq3 Ç_`b´¹¼S®.¾sÜŸSåä0‰ý1ý…¸8Lr£wŸü߈À¤ø¿ˆû=RãÏ{¤ñ߈Àdò7zç™þ/bgGï»ów4 3 € øÈ`²ø|'XþMçxGž–@ûD¼Û¬þß«Ûþ Y˜Lÿfy/ú|ÏîôøþT.ÿ€ïÒÝÿ†¬ï\Ï¿àž–ÒŸ›ë¯edþûøþçJÿ «º8l€šVfïÿÎþ"oìâdå¡Ëü¾I,ïö÷׿ÿÒÿ_ÿ`‹Š‚<¼Øß[ÏÀúþÁÂýNeaac÷ý®é¿n׿¶ø}Îþÿ\m Ðh ·²2å ±Nk +÷“ø2]EÁÃx^…%¨%“¹’9ýG<—(TØEY’“æÕ÷K ´/Ñ¢Á´}ÝlO®žº5SÞ3ö“÷ÃG’ËÓ`TÊ’_¨è&¥9‘É+Ô.eŸÍêHè ¨Šñ|íyŒa|Cý™JªWѱ^å^<ÏÒŠád‹æ±Œ‚×…¿<ÝîòöˆmÜ/²B;gT†5&íÐ׃¾],ôDÑ8»‹ëЂi3/ÒÊWv vÂ6Œ‹… KQ|’Q#$A&NÐû#…&†Ú#í7Ï!4[#;±7Ñ^¦KëÔ(W¦-YüQ¿µlv´:ˆ"µƲ‰zâM QD湼ɕVÏ_áÒ¾fÅR~Ô·nœòsýV‚Âå– ²ø÷õ±0ïCd(ð•ýkø £Ðþ3³ÁcþÁžTÞÎLÜ߀x2÷%µ T/9®SâÙ5 ¢~{>â X 9züñëjw°W¦Ó¶œœÔ-¬aÚös„7§9è÷ú°ìæ¦ÇTüü†\ø"£#‹ôÄtˆ†Jõ²8œt˜µ½4bvÍ}ƒÐf\yK(eÀ|jÂøáÌ#+'Ï­@ºpÅú_1žYÆ+Ä|:ª[5@%+“ÑîMsô!Ûš¥rû‰Á¹R'_M4*îto¤Ah¿×ö=øà®Ð¾,Æ·ëæ°”¬NÄ;8¦Á™ât{sÙ‚Ô(•ý0«êŠášÅÛ…D”gÖ9{æ„IbÔ(ØÏ×·@:ú½øØ±n˜3W#D*è]yrvéì4ÐÐpµTî¨Î¥£ßɱDønGšá¶´Æ£üƒIîˆÁAøÁ‘íuûKVÅHÎ2f9…_”mýo£1º’´z{1í\ðÞ`jî0 µØY^.é )ÔÁ<©Ñðj 5vÅÂ-é žù­)S™ç‰ùÉŠš¦\Ý:[œØsûAž•ŠeS3_Q6kQhHI´~YOhk­ø¦;½Â¡™ë}<'édo¥º¶öR®ªÂDί›(Q3mxAû£N@$L ÔÉ×Ù‹¼®š}‘RPZeºÝÛƒçlà¤Ók}-P¤² p3x\±4¸ÿÕ8 †‘D £E1éò—D¬;Ì‚>£bü ö¥‹¼"zeV§GÀ~»ÜØtõH‡ ˜%òÙC@#‡“¦*%+c!NœéD¡°‘Ps³»#¢ e¡zp²ì§ÈP*ù4°©–¯óŒG‰àT`7î2¡MU¡ðßjµaº•>†ŠµÏnÉHZ™ ÈI²ðZ–(Ã-v…Ÿt!û%•8jßišCÐODgލû§y(òhRA~7GPÞ¿ÂTNµö,àÿÍ*VÖ—8íÆ;ñ\3ˆì0E@ì×­ær{ý[ж÷“~·—GŽo  Ö²Õ£l£ÜUƒžQ>ë%Ãö¢;¨‘÷ÁZêcÉÃZ¶C/ê Zƒ‹&‹lsÙ, ¤<«“Ý0ÆÕ¼À@–°…¥ö^©Š²ùˆ xíÑÃô i¾A×ôÔƒq §Ÿ,Ï´¬E½œþü«Õí_H£6œV0LìPðP}L•@S­ eÖ±ªo´PÀW—gµŒU‘Œ(9kÖ}s¤ë-i%ÁŸhßÿ:½yíI52 ÒÄJ´ÙAùæµmsä A°Â|\ã¶§JÃÍP—ÿ™²îCÀ«æ¯1„Vº~û«ó ÆãYRÕsøˆ×(w8o~Wlíé_Ö™2º7¦”öes‚q1‘<›üáS+ ]ϰ gÔAéQÑk£_‚¯LߌwN%X3> °Ð»á’’ÓOЇ ]»CÌYnì¶3ÏOu·ÿFvÈ,§H;ÍÁ›W‚r Ã’ãÐ Ø „]÷pmÚ¶½7¶ñDWÎ|no'h¢ˆóY÷JU ¾ ¾x„<³Ò®Ÿû’f®Å«+œßŸªGÏ>@•Öa»¸ÆwÎCƱ`e€#ö,Šë¹^‡u0J$3Ø €°mL¶²-»¦ÄÃ~ÌÞdI¡2Á“P¢éz^ás¦gÏ´ÏœÅ[^®äÁÚu¤â¿I@iB¾øÕn,Á„±ó5tu^s˜ƒ ØÁ$łȼ¯@=‹‘•ܵ'Èš±ßÁµ]«‰ÃJ¶‹óG’PGù^™”>m޹c©g fºà²ÇážVì%Ù1ʱ"rÂìjœ?ê€mZšH`¯\q8 ¿¬ûLzç·Ÿô«s2É‚û.ù\þ·¯Ž`„æhçF(ê„}O²jÃ/Ö=kÌFç7¡UUêÑlJÄë˜Õºád;ux– òøWðb¿Ò–#§Ùr˜ž‹¯ý®u?Š€á…IÙœ|¨@çîº3É®pENà‰àëÚ¸©êîs'Úh¯ƒP׃›yduª×Ò=Ä6Ž+ë¡ð_tþdË¿Lí³“h¢’ÔÃ0_dç<)”[•hÝÙ¹±W¦ay9Â?-þÀf _ |Ȭ9Ô´¤DfM÷È5ø&‰ïH„”³I9~jàöFæ²gU2%Dî¡Ò¡±`ê›_™¬Îöµ«ç·s`b—?…diÜ—Õd§BÒ”‘Ž”ÊÁV4Á‘i‡¸¦Âñ£QõßN.ò"¥­ÁBAˆ³Óá)²å&䧺$·å9àÄò³’vÿ zkZ˜cóAf©þ@koóâwkùôj†—…F R¯üV'ŸªÁ1̦«û…E¡\îSߌÒA†:Öúõƒ]9zŽÓl§+kš#4ÎLë=>®Aö«Ã¦îßL²³B¯h›·LUvhéÛ“¿3Ù>ÔF?¹¹3|¡A D›ñÆÐû+êMƒå(r,ªjÒýpëΜü=rÄS'å…KxssÏn7¿`Ïa890”k\( m×Y2Yºöã<ÛŒ ï겆lžwi4Ð)ãŽK¬)Æ¼ÔøØªŸ;Ïiv³²{•c3~•£ÓDpšXÖ™ 'þµãXyCvà:“0ÊE:»—ò1èLÑtBÉqNr^† y?âa>‡W¶¡Á'ø3ÑI´$‡¹=kKºð¥?Fg»RµÉ‚õtÎÞt1¥™ !rà²m›¶>l}™‹Gæ‰Ù<¦Êm}0Ú’(SÙo§±VIW¸Œ=Z!O±€‚=#ìÙîZùˆ°‹-ZM ÷~ÇZÊGÿHàž2XŒþì7LÅi¤ˆ“î3òŒö"Û0QÝ´Ì7¡Ðàa×3·\.‚;#ëQ̪J¡+Ÿ`÷¥MüÉý{~¯«ß}bã^$ËÖ|µÊ^¹í>½,,÷ý0 @Œ(A·4äîÂBŸ×çZÛu>›_ p˜§Ù¾»SQ© _¬ fÏ0'"ƒKjŒ0’¦3±5 ÉÁ<1²Pž®¡môV =ÆÁ1ÈåZmrlAϯÑÅÕ‘/·ðaàx(Ç»×Pú?'áËÛ9’nUWÞò~Äj3œ­ØS®ÐÃ3¨ŒþÖì“¢)½85òê¼?ãy¥T¦wBäòýà"<ñRJsnÐ ³¯Ë›äêú ñ[¤’„Â7 ˜jV›iëÍZfNjç&åoÑåX77/?$â÷ÄïÍõÕ)zt¤ˆ_$uc„ŸL;T'«>ÌàWoóâ7`]¯F-ý„g](›C-"À-“M'¼6›Î5[ÎTy&¦¡eˆ,å(+@ O›æ+P/Øt²¶úÚÅ,b.’\8P!¥ƒi”ê)øš=õËý|¦ MÏ]I+$•Èã<1ZÂRN) á»x<µ”©#a¾ o%Ä ‰®.!·í’ Tˆ·‹6_[éFíNÚŽŸôK÷O¨ bƒ_Ó‚JšÔ"yû ¥Æƒê“¼‘â |—80vv®âüÆ.?66IÝWËg„ÝáYÖ#º¬(…TíÅûŽ{6ŒÇÐc¢ /¶U1Và†)yÕq s מN;üfCMË@Ú ¾®uÎò²G®õÑåŸ8ªX›r²òÏÁ03Êã<éXEØ ªyîÌò¸»G»Ui¦“zÿ9º°ú¶§š˜»Ç.ž`ýäºV~ÒœO ëJ¨<‰û»Y•šéâíf§!#ÿ2T31,Q²æ·ZŠˆF™ÌD«°Oñ††r¦nfì×/®„•Ưòg꺔2!¨¹m\¼ô;ú.ã¾í2 :Ï`Rµ,ÕŒô1ÑnÚú‰ÃãzrŸU£©øÍ,µ"Jf_iyÐ\qŒUô³k}Ó­–Æ5BºáÖ¨%ÔS`‚KÏýtgú€_”(8™·MºÙú•£/ñ]'w#HšìÕ+ö4–é̆µ8U±5gò\nr£ÔEæÎ‡wÔ²ŽXÊ~ ©7÷]@ÂÌZd—‹Õf¾‡ 9A±KQoæºQÜþè­M•ŪÄSo=[®iáŒZåꢊÀÁ¯~ ä.L áÛÁ Åï>vÂx|Ýè&šŸÀ?õe{K•Ù¬Bn \\Ön¯®bsÛö†¯•…*È ;#=%ùÍ­ ÒÜß_ºmÌgÝ¢W੉+ÑOyô\íÑéGVq ö޾Ó™U1¬Wû(bWè …­«><…^ª8‡Ñý®|jpÛä|wï ¦œä.^iw¨’auÒœýæ)Ðjq ¾¬Áa/ÏÞ6/Gt‘ *ô–õ³e)·ÿÚ|lžû ã¹…)ÙÌ¡O‹ÖÑzW3Så½é²vTduEœ×†Á±XNv4cnió©¨hªSÖÙ˜½#@#^­ãE?ÆÄµ1} .w¡¯ Y˜{;eaXÔ])ª¾šC(h¡|e&kÃ=ã)ÐC¦èŽ‘ÖlÍOe„U#îôK±Ãõ&S/¡¬ê*?]«¶s²ÈÐsªêÆZÓZÏ—|«ûŠÿÈG ß+TK}Ä==¨yž,ŒHû‰;…*©WÈ8¥2Å[g:ó;È._2F/½éd$o§i²)DŽʒãô"˜±ÂWצyevÖ´níµ™(©ˆ{»»*½deêé®Äú,K¦^vÆûz7;,TÑW‘A9dhr¡„Àý¢›+·'iTJ(³˜Áô·kJi·£m}З» 5™ˆ!A¼Ng–õs«¤Øû,áºäVíEÔ¾´ØJf†ÞQ»|fÎZH•SßÔÑTÓÕçÌìë¾%d®¤ßþúÍ1nqŽ …S’åøxK'ù8ÑOñ€'‘«â„ñ!æf"+•ø°c=*Mý““Jñ -ø"ä÷-g5÷àM*õ°|ùdø2¡"ôÕíDDЂ¾Z&_XÞH6<ïê^Ž=fa;ä­¡}jB—ÌOš>‘GM¹ÏîæÇAˆÉ… ¢Ú_IÑH–óµ=;²Éia â§/øX•V7=P®w镃ÍN8gxÖ£´µˆ`SƒS0—Ý$ßâ2¨T¼dªxG„¾ÇŽîb­ÃZÉ“C“„ÜÎ;JN4sp§ SŒ5ãSåbT Ï ç!c<óxJþ˜2¬ÅG\÷Õx¨Ð$9üƒú~¹Ñ“õõð]˜´c2Šižõ¯¸^9.&äâûåó¦³e-/ĸþÓV·bèBæ²æTa§;†¦¾~(þµMƹšó¥ðT Jíg°þ7èÓàH2|ÉþVéAvè,KqT‡ÒJµL©=osñüFa™MèPg:°¦©£&Õ‹SŽÍqB©ù—’P®QÂÇ~ÏÉþö7„ãÆ[ß2©Â'³…³ 8k¼s©?û5Ø›ž¥ÿb’G¿­ˆ1òÈ}ŒÌa¡ ëd6îÇEv-ŸŽúº9¥ÝFÛÙá½Xþè¸5É6‡jççA·‰Ê‘eA_çËþàØëç¤ßN5ð…6ˆMÁóÌq8_èÈ¥Ô2É®ÕäÚº³™Çj¤>/u3–ß’>µë#ñ!yö”ö„¤Bwe¥!öa“ ø.÷ˆ=Á‹oÿM>Рæ1ŠC†æ)7•á»¶“°ùšc\öõõs8ð”xtbÎ^ÜÅèkCú\³ãä÷#Ç:RÔ·pËEFŽ}8!·ÇWx»ÐAÄ,ziWü|>oH¦XvÃ/Ô| ÆžV_´~Ìi\z cáMFXrü¾oøRïc¦Qz¢Ó®üDækq{¸A.3à}¦þ!þ¸¾*½}GS9Ã}C·‹Å›ýà Á|`gyt*ûg§…F¿\ò‚1•-Œ[öD‘·LÛ¹pEÓÑfLÙw¾Ñ Ìëé©”+w*L”§¹<ÕEó½¿À~„é´Ô¬³!¡+7|ŒÉ8,ã{UÀ²ð$|kzÃtÐT¨òÃrRƒ>Mø}è¡î1KÂ_²ÎkÒÍ`–¯e4„èÓ—B´îÚÃ+ëÚ‹ôããïúç_vò৯½¼¶?D_ß–06žM¢ÄÝšFÚžG„æÉ¥š²„ÄnÊvÐxí{Îb G&Wbïákõé ðØéöj!»6v‡œä%7—¤Ößú¥Ö¢lûfºžÜ–7†qGÊY±NÓ%˜ú‘_cUи³Î¾.*´ÖÏyp©´Œ˜ðø`A‡39ЊJ_=KÕÈ…/;HŽÌ¹‘ÝLÖXg#Êh'á¼H+yЊ‰³ñ9Ë„ÝÑkÚr—1ý~¤ãBYjJ%•Ve}_«Ò—‰Ûg3C  ã q@P§ŠDª*„…^hŦ•ÆÊt=J'°yÞÊc–û¨Þöaƒå8E"dü¢'™±á³<ÿ6¹Ÿ&ºfå Ì:ç]*N´e6w’&òÖ³ó›žÐîþœƒaTÔAšñQ!TèrýDI}‡rg‹n~“ k°®Ì{èG¨µûÞûÏ/´åsöØ‘\ÐÞ3z%¨ý—Íù£®‰aÖ1Qvª?‚Ò3–Òü÷¸LݯRxª»ÍƒYÛ•÷§M/1£Ì´¯ su~Ó>ò]A?w„I3.+aÑaŒW\Ö-çø0®Ÿƒ¬«n¥³ŽZ{ø ˆÆQÜ>v3,Ýàdž-â©å!ÖÄOmòwÑý ¡Í2#%ìô}Ô(êÆt468CÛʼnˆÃEÇ«ä¿k íµÓ4L’:Oúúû¹Bõ<ò\œÿmY]õ¥ÈËtÑœ6ðô¼Ñ«Õ\£Ë‡`¥=¸MìfQ§ŽúçiAÉÄõ(:±*÷¶#%#¢¬/g‘¸Õù¾çOxsù“°[´ùx/9[½0jQØÓq#?‚z$GKÖLú?>—Mþ‚ã( AÂ4>oèQ„©tN‰Õ‚:…³wz®gµÀú¼­*D§.döVÊø¤1zGP**ŸÆ˜Ò@$?]¯aÄS¥˜£ÍXvÙcÀ¸cò†¢¥‹OÅ+%ß:¸š’ØS´iF2z‡œ\‡È“fàœÄT¶ŒàH-uÐU §°Å5€q$ÛÚ30M€;®j¯Vù:=MP‹qrÏëqÚ v1&µl•?W8o¤ùt1è÷mî®%~h[3¯*¸EƒCS¢è‰äñJ¶­—ˆ’Z)žoüIä ðÖ¹ô6G@ù2´^¯ dìÿ9/ó¸'—‘Üä_èÔáJmK;•°¯øsª®wÄÒ«—¸4(óé磚UÄ/îOjü®01³§&läErƒþú;9ÕÕâC#9+„Žã´‚H÷ÂhHÓì*ÍœëõGuÊÀõ‹'§u|ÖÏ{CbÝ ÒF”?Xlj»J&V5Øü”¨/󺘦ªèЯ —H4z©È”ô«†aìq R(1uz¦g‰7 2Á'yIÄŽÊ‹j;J”¬§Ë ƒ6–Š%Š>ÙhHÃâ]¹IÍù¶õzë'w<53üŸeÍ[ŒóÖ]EÔ=RK-h¢óîP7ñ(ar¸ùÖz¨ m®’ªû£›k¥’}³ž~Þù#ÛÊ,}OŸ«çTú¥_Âþ dE·¤¬ïö%8„—WÒÌ»ôù3¨9G«ï(ù¥sÖi ÇoåŽç©—¶Ï‹P-¤¬ª&žþä>Àˆs)ñŽíÓŸSeþgøMç­¶þžRJðÜZöÂzNö;ƒTÅ(’.hqòA cú¬íBôeOjvõÅ…=¬‘$âÉ-P_©ö„Mög'XT,¼v\Ån†!Ù­‰^º[¸æ0ÒiNõ§¯¿ ¹V˜j¤tEð1Ù§Ípý;‹§ ”‹šÄÝ$´¯Ý–r+Ùå¶Ò&&4^JÃú´ž #Î@¦^ÿ-ÇÛ‰MŒnׂ_¦J§Ž× œÂ÷ì3±Ùç'ÑÌáašÖÁd gO7¤›©ÎLÔ†uÑuˆI~Ïq*w%˜‘Žü}û×»²f 0÷pŒ²¥ · •ìóΚÛð *“Ûï 6û;“bN'çþËt&ÇÅ ži²'¼‘y˜\TbôO9ÈgØséI°bÓ2ƒ”ž?|øÌŸ&û¨‰SjWÂO¿.Wò8MÞ}UbhÊ,°=)FR¼7BŒª’iØ;gÔìÄÎnÞ=ÊýÊýòʰ¯pm夳fz£ÓR¸ ódàz¿ô]ƒVçþcÉÆq:Óœã2Eg½6¨ò—ÕÿÅíçúãUˆ8uÈ0¥a ûh€¤Öœî&1MßeàÑ¡Gl ;›LÊ6ÜÌ_úòìÄÓ«Bñ“Õ«c‡:ñ°‚à.1¥êKLà|'¨J,ôè»ú@$9êj U ¾?äÓS%]šÒ=Óß1ïSòK8 ÕÎSêòÅïe›Ã4ˆÔ6±]Õ÷aàÆ98žNËÜ2J1 ]`v]+(Ì·ìCiÊ ¾õÔä ž9ÊuG’NùŒAK‘vAwlîшÅâÓ„ÞL¿H¹èNÀ~³GæUœõš¤*äz›`»Ú›öJohäôÊø°‰DWŽkSücÂî ÈÛ“’³¼²‚šsFÆ~h ìÈȨ[/q¬È,âçqV¸"f_ZG·yŸÂJïlÓì•ñÚO›³ûo(‹”ådzn/Ì(‘ºûµwÊÚþð¸„eI\Uáh~„Øç’ âè­Ñvö;U~B†ª°Ð$ÖîÆM5tÎQ\QU÷JT¸Q{tÂÇû ÛIŠŒ^£Ù’½œ7©ÌÆjYok!âu]IAæ×q>t(ÓÄ.ƒŸO?Eýôl?u µN¡W6;ü,Î.;pˆ\õ›ƒÛ¾²Ÿžù”9ÖZ/öL›ä6iø®ÕŠ`¶@DŸ3¸‰á`û±Úý«Ÿ žíóÜSfˆîÕDŸNß÷HdW¦i [¼Uê­X¬f›åQ” Óµ™ö5•&i×›d†ÞZ3ø¯“Á †•QBfE5‡Šþ¶?×á¯øšç=íEŸTç'ò.ÚD—u¥_]†›èíË0w”6?òÜ¢K“8ªx^ÙµR,¡§+ aûe;ðëÀ'ÂÕ~GI¢Ð!;¶‡±ý4UR E*¬„GááÕRõfe¡ VyÇ>Ï$ûç£uŸò…ÍWªEác§ÿÍ!õ}vÿü6”ódr>%ïë>ÿ•b`Q%;½{]öªCé*V¦‡Øã±¥æ'Qûôþiuh 'ãazMC²y÷Jeµ…%7n4𶇮U5g |¤F:Xß… øŒ?Ã%\u©¨Þbx{zîAÀ®¸tø*cÁsݱªM–Õ²ÿ¹7éî5»®Kê£ÒÁ›S26¹à&K†¾;??¥ÌyKö *Ža>˜VRõ†ãW̤Òx¤ÂÍàØnç\vèæ˜¬Àˆc·jC¿Åü½QŸM,þ[3êTñô»W)þEý¼zm–!­©Ø¾>uE˜h‚áª@Ð »?"9‹ü3W”?ŽØ4š‰¡nùt/9#•5ê”q££°{OE›pöˆ<+ù‘®¦YûVEÚ©„¬ñ;"žºÐ­×™ú¶ËvéÉ_÷¨(O6j‘2úÞêç>yÈ,›\7ŽÏS…ã™·ÒôUÝU?jÔ º-%pg¸ûÙ^çg†0¶ÎGJ'‹\ž”WÍ‹".§~øæ8÷‚Iýñ­ùPqG=š‘’}mo&p‚g¨©¦«xfê­Ö¾sïàªÍ3u‰mágç(=62³èO†³LGŽÊ„å&õÝÁÛðÇð¾Tï›t¡ÉÏ.QèãÚ«°Íq‘dƒÄ­B²Ü²d”€¾Q¬Öà5ïÚ…ŸÃ öI~C;“»q/m*O_:Ë#XÉMt¹~—Óĺ¦3"«|`¶†Ýbk²Ûâ¸X ˆh¼röqW¯Aå Ï,Û%~¤>Bžê1±% ³l¢ðóMû{^=©‹â™D›O`Â÷8Ê~ £¼3ÛW”/¼Ó?zÂQwÚúžè¶`”á,Äô›e]¨ÌzÍì¢wSl=Ú€ÕÁŸPû åÕ9É”ƒ[3sž. ÈGPþq/¨3ìľ -•ê¦×µKïfBJDß­Mº’‰N£^âòQÓåÈiVÁä®LܰŽ'Kx_³3¼BР>UoŒK§*ü®×†&1SÙŸ­^\åýq6žÙúÍ·Wá+¾#žŽòù¢h¦%ÏŸ¥)OŒðEò¢bÆ?höö}›šlæÑ j¯$'yÄ×°ôzѡǙ¥Ñ“Ïœ¤p8GR>Š€ö]pRõ(¥ÝÛgíÈ]šÚÃåhM›ÛüYå,÷'Lýá Ô¯Ìoë†q{}±á/R EE "Ù·øÅÌ3ÍŸWÌZY5­¥k²/¨6› ó°×øO^ëTŒu“Þ–£ãìÈë7Ä|kìS4mý½h)‚8ƒ»”ݤ¯ôóK‘¡fÑ,}ÒÓ6În_ì*¦n‰Õ¶DÍG•$ƒ‰[ðb/îøw½ “’Ñ@ ¬…˜ÙèQä°s¥¹ÉöäXÔKü+FšÒ‡dÚ¢_û.õK±«9¤&9h#Nµ~µâgYg†jžu –ŒH² ziÆT½r²NàP`±]]_/ÄcP;T—¯…“^ð¥#nÿ@eõ²c?”Ï·Àä.?Å7ª¡ŠAŒ":ñßÈ) (5)c rÔÕÂT§`\Æyûõ÷‡ˆp}çQ®3ì³Z,È·'n%³ÛÐg$ÒíÉCùE§Á[‡çp±ÇJG¦À U)’²ÍúÛ}¯›u74´Ÿg`*ÌÞÎPlÓ”U„ xûõ }f¢Í¼¸¾hÕ[ õìŒïä•6vä#ãa7hn Aoøu*¯~ù9橽ÏÅã›ö…é£(ЧUÑóÉ·:ÔuqäDïgSpçÐô>PƒŒãÜc¡ú#»·ÕÚ Ýlðõl0ñçûbÎÙö ³0ô.òâ<“q8üXҳ߂ŒXJ)ÄÙ«~Kîo÷×-qì‡÷Ã7 „O^š Ÿé¯ù–ôl2 (ÜÑZý¤Øo$㨅Qß¶ŽÕHJÏ.¿mÞü¡®ÙFíýdhÛp˜"¡áÍà “Ð èƒñ³h„ÿA4Hzƒœ€¡iÓ02G@.0Ëb@J&œ¬ÒB iU ²æ |‘×ðAÓ•¤>ŒeRæÏ˜xŒ§…–¶S<¿” SzVkÒÈÔ JÔœEÛ@YÙ³)ìØæª/ªŸu^8èJÌœ§O'²¥ôÙ1 ág…±/ 65Q›=·[%lZE§åäE^Ÿµƒ„¢yÓEéIG÷=F­l¦âÁ7»HBÅM×L+Ùr°ˆT2>ÍUÜðøè†¨ Šþpq0¥vsã×Ín„º±Mg»A8åŠv`yx¨ùå®!ÌÀç¨Ft÷M>ü,üï¹deÝ!Et¬äÞõ.èìÇß[AŽòU5¤îAÌ» gfioßn™ Ó)[ J)™ÍÜç±c»ïÇz«EN5cm¢Áãã¨ñ9-WµyEï“h0"¡·¶Iûû¯lÉi¾8\9ùˆ·™>£ïÂs‹·•ùÀòp‘¨Aí/KdìÕE‡×½Á àÜ2$NšyaÊ~ä&&@Åü$dí¸p€‰Î¥LMu½»iÿÆÿ$5¸A«(G¶ƒAêƒ83mþ<Õö].îäóŠLZÍê– ºå†gÀpµ*¸¯êM³õ–€ÔßáÍ<án‡hö¨ÁQ_ݨà’‡û75)8t‰Ý'u;©’ã…;”}äy~F8äñôˆ»²p$¦dä?à‹ 2éEŒ²Šþ„ i’múŠÑ«vg “Ë޾ú §‘' [±/ˆ4êèÊu2µ˜£zÕ™ –jµò;[x”øšOcã¼FÔ¼ÙˆÑÚÏÑL—ªÛ­‹„ØÅR)bÏý¡¦î2_xb“–P÷þ|]yË·|ø;³Æ5–¦yq{Ôƒª!;´—¹Hhm‡Ó‹r¾ç™c(jœ7jÓ¶CÑÌ0É> 0¦nj ÆVðŠWè±áSù‰§‰‚\äS¾lð‘ÓH·;ÒáÈ !é ßjDÎÅtgýª’¸£D6‚$àW-¦›kx=Qžjô§?ñ†v1^$“@BŒ'Á4§=›ço®ã4±©Åiê\H.¦€ÑŠœ ýñ/¯ÆH±¡µ¥J«\Á_9ÚSçyöê íZ/YáwÚb¶ê&Ì׼Ǡód¼ðSà §¡b¡ÜÀ£ת$Ýæ3>}»ÄM¢Ðtç¸â”¢ž‚eKí¤ áEÏ}åG·²’zýi¬gT}%þ-k¶Ø¨U¥L›5ŒD†×¢~ÍußÙ7Ø„/࢔BMÓ|ˆ–¤#ØÆ—_¬ÿþëÿÔ+)èî ½W%öB·)ñÔ½0âùep°ä#˜ä.#ÆU8=k¶ÙªÙ5xÑ9°çf™_F¹9~ƒLÇ€uÕ»tPÇVrwâëXô¹äÔÁÞ¯£ÞŽ0 ŽY‡+>:²=ºÚ w²¢žÑ¡Ê¥‹ÉЗ;í±¤Ú¬Î;ƒQ¬Ãa2 ÓáôùXÆoV«"«ma¨êùM1­¡–ÕTœM˜Ÿ ¸›sÏ[}š»£3]p¸³mÖ¼£mÎÞò¸X´Š¾NµQ’õ;7'7–\<ª'[®Šœ\ŒöËRÜÿ ÈÎò@yD¥ÜÚÊÖÇ×´ À¾_&7,Øh‚HªŽ«ÏyU ÙÏè‘J~bMJÑôVÎ!1Ðû]øÙÀë-æºvÄTÒFìâB]üÌ 7…âÉ7 ©t±¨ß6¶ðLZù*×þÅþ³xÑ2}‘¦¸°€(fì‰IÑk;Ÿí€ D'ŽÞüÎÅÇk.C ³+èp(q_SPQ½÷ÖÕYÚ¦E+’«Ø^ÃôŠ›‹‰39ÊïÞ±ór(fOø\Þvrp½‹Ùs¸$ZÉÀ‹ë¥ÝA×W\ÏÁÈßOüâßzŸ·Ãå¯ö3t"µv+k]¦kDùØUŒü Í„R, ÂJí¤;ˆÚßÂèƒJ4µõñOY9¼!‡¹Aë)5%[Ë–|1—tÙÏ2˜b·ÍÞ(¼Ïq®íûÄénVŸŒ¨8l~]>d§5 7ÙAüžžì‘E€òÓ«{Ý€f⫘MºbD+y–mXZ…|7@û©Cé ¾!äß@š_Ü6ë*(‚Œ(gZd·j#8³š¶Ëª‘²f®r¥¢(Ú!¦ ¶ég GÇÎ[ø~0PLã9éqSYµŸ/‰øÀw›$à-b8Ù+ÅÍ*: $_²£5zˆ¨WVô1‰õÀÇ:Še ¸6,B;ʆ‰ÿ Æü(s&¦‡€ Ú‰üg;j)FU:hŒcGY®®ó¡”ÒDé>ôÇXXPõÕ4ãnVOÑW· %'¿r±A;&å»”ê-w:Ë3ÀBj.seqÖ:°cj9¸ø¢*½™µâªÃ7C&ºUtZÄ !î—Õð¤JÉB% ‹"ÍÎ6~Þuú /dþP¨Û{a,«áßÁÖZ½öE!¸Æí5 ®×ïN]Œ¼·â†.q’…žî£|©³}œŽÉ'FñY¢.sŠš ä¢ãg!=¿ t¶Pï¢ ü¯=Z¡NÑšÕ?„½€O±~ïý¹pÇQ“dɪ‹¿a{¢nâRLÏÒÒƒÅéeXIˆ18w<3HñhmσÛâÞ¯UA™ºqOµ²SÁ‡":€ˆ§À,'‰òä3~¥Ì´A>ÆÙP«®3#îå¿OMW@#;yjÖÚØ³Ž?Žùi ­}ï0Ësd«-ájÈ÷³œz"¡< ®]Iiº¼Èj3¬ òb/kö£I[§µ°÷’X‡­­[ó&ÌÍ­0GU-íT{í¦GdxÌiûØ¢–à~œËšøË§·5ί¯ÒšÀêî×½ãpÚ¦¾î4²ÅRðÙYìT}‚eý Wlçcâ>¬Ý¸ne¬^ <ÜÔØ÷nŸ£–"SapÄžqypÝÛü“×òªv)£t¤'‚öpá¶¢nâ¡ÜÀT œ{êèÜ™‘źS‚!H£"è>Ä‹–"Š1t)cÄ`ƒ×Ñ{D0nÜDÔæ×ê}¿PáD§ï+åmüH¿ô|6¹IX€í½„6±äNhR[ŽÓÐ-#–2¾€_……ux¬pv¡ÛðS§ÕÝéy ®/i*ä֡óçd§£o׋~ðó›w]‹Y=€Nù “g‰‘Õ[1V¬V<6¼2ßÝç‘9I²D¾ä·eqmÿ1û†EouXšº Šð<"ÍéÓ0"äÎÇ2•/4‘%ÜP§Q%r¯£²;‹dk$üö{Ý/Úãýë«=´{u[Ø]Ë û/Û¬XZ,DÓÕDsõ¡ Ø>¨Jsk•zÊo½wTƒÍ™Ú¯zlFùS•r¿W(ØW‘`Üž&9_AŠã•ôSõóécÔeˆ“ûš/GéŸÓù„ã2þ.K<®"ʆNÓÛ;œBáJîϼ|ú*´¶›·¸9‹ÐØ×{çz[îùyÝØçaö<ÜNç¾–ñÇÿ‰Cæ±„É © ‹T Ö\A Îz5Äß[)¥c"…4–Ø~#Ô?UÌDLm f9”]ÀîRUSqžf2n›»N~·ú†Ü/·y7¹]=E£Ü¥-ÀQì±–ùü1 Mßákk9Ý^-Êê]ìšÙ®Á$@ƒðÃ"þwªO^õewfPi_glá'ï—[aò=¼F­§å™pà[u°Ï1,÷‹w•Ó’/3aAÒ‘»?ªœX:Jq۩®ғs¢‚vd›¿)Âcêü\Y¤è<J™†‡µëÇ?3zzsû¡ÿR͇̯]´@‹!Éá›xÇ™7žø;Jù•Ä œ#% CTO[ Y ¶†ýRÁç§g®k¤xîŽ8 L0ùÙ¾HFræµ Ô)ã•Â¸Ðø—5tKËvl O«Ë`Ü~¬&Pes ÎÐ?¨)툧¤&L¥K*„¾²Bß­=÷XE?Ö%.ïÆÊRêœÞ1öŠÜ8F—zU¢mA¸8C뚜ܸëÕ¬nêVW…ûÇbmKÏeûi9þ‘‰ó•Û¿ŽõY˜q×ñäÅ)ó…Èý3?8‰Â¸FžG—ó\À ÓŒ—ºŸ´>¶…؆ARZ#¨»ªÜBÎãÔd ÙQSúƒÏi¸ÆSi•ÌON¢zÙâ50ë FLÐq–Fì‡ g–ÂOŽG°žï>¥¿J½ÕqË# •¥ºÍ'ÞH™ÚåFe&~‘ždïƒîŠó=°ý¾å’GÛÄœj¶Ÿv¶bÉη,xZ¢iœÜÊ«޶Û¿‘ÇÕÙ lâV%ªk–ƒ .#!|,bGÂßïnMxA™±AçE}Üï„ì8P‹{&°DŠ’ëtŠBÒ’Ïj“–\ÒP& +D˜OáŒJ0ðBöéA9•Ó׊ª>e]&Ь+è¯þr¯nˆçìÂ+Q3x6îþ8¸>½¶ó}Ç¥-ÑNúÉÐ&Ѝײ<•ªz™íëÀ Á•k‘vHQûkXµÍU&³:Ð1:QÀ.bÚÝë5 X$/ ü9î/uþÔo]ŽK!šsްûnH¶óÀé¸+ʻΊÝÒâ€DÜ[òo3rPèŽ&Ÿùâ¥u=9¤Y÷¥ •ªéhæóÆ¥á«iyZ!¢øÏdX"°t&Åe^ KFDNá%ù­ÂÜ›hŒÒ9âÀ…ØÔµÙïZ6™ŒCâ[¥òâ°¥‘ðÑϹJÏqù¤LÛü,y¦g àÙÉÉ,|qåòª‘”VFQ˜Ô¤UÂa'J¿èÜ€„=­Qq$€¦âó|£ôJª–@%:Á¯éÞÀ|¦&œÃ*Ìeîê8›w÷=»©èù¾´`^rSL§€Ó C`|™AÊîÒWˆ°Zé„·ùU%5ÆL:çJdãHöì(,ˆ)¢i°¤©O±OHgಒV:? ˜ôãæD´šFa’ô‡ú0(ñHù«^ÚI"ÇS5w8Zؽ-Œºh¦Âu¿Å1 tÕ‡Un-Ÿ$ˆù1Á8!f[u]Åy幯îuJœ3E<ˆ«ûhbÕ%øµ‚”¨ó|–#†ÉèHdñ[™ÄVŸ÷Jk¡åÞ‚(E>ø³Úõ …Ô3®æv‹pšn§Õ½õÙ9Ho9÷D3 ÿ'¸'¨þzṲ8ÿ(ýq4·· Ï|»Ï¼¬ìZQÕ0G.9knñº«ÂP¼½–t¥ß^&@ÖJ»í—)úÂô¿µ°¿†«Ñ¿í-éáÄ$(šçø,‹Š E#ÓvKYŠ® ]¯ðZÜÁ‚„Ω¿!’”Yž#BÚÑÙqÅÔGe©6WÖ?—»äϤ, ò”ß<ò6G!,{³Nž×PýRÏb‰MëŸýS'W3¿¹Ï£•ÕÒ¨––å¸î¾è´ lrHŒbîž÷®’¤œÑyacß±ùPb˜1ñJóÌ04ë‚lµ\÷ cù0|ƒSx×çÌ=ÅšT*·šR‹HfqÄæý/Ót¥Æ4ˆÚ@=þü.^§mRK«O¶>(‡í"ÈG-¹ë¿A”}b›k½j-OÓ¯îæ?º|¶­Í5ØF3p `{xŸI_uµž=°5Ýëèš |ä òé›7»ÒkW„n¹¤ß=¥³l&×åËg߯çýÚ+xŽ5ÒOwØ™‡F‰¿k=AàU#×’RpÉ««ú¸¥ÊN”þ PYWL‹:ÒV¥Ìj©Yï;h‹P¾Ö£7ý:¾ ñÆO…¤û0;œhµÌ›Œt…o ThžQ<(,ÒÌ9%«s× g_Àü;ká—:¼lÔ¢²§ aa¿¶.ç€Uc¬OZnÀ¶!†º5¹§!&ÿm,•Е-"ÁªÝë<>FWôOúRçšËïdɾÂAÅÄÉ[J|åV¿ÁZgÃq3iÆ}e3 «B ‹aL$rFHâñøÍ¦\¾½;…eOxã§Ò\öëAúmÌ Ó>z’—‘R§ÿ'Nà…Œö›ža¹Å@ÄÉš­Ð¾+Ú D¨³æ#˜LxɈþÀÇê`knÚôOW0iü® ùˆ€¦r§¡{¬R5éÒüÊó(n½¯+‹h›=^Ý-ñ¶à߇à2Ýt¸ùR Ae ¦BžrÈH‰ò-•+j=w„®¡”@Â|®‘agä×]I%›t9Š•g=˜iàãEÅ™»óYµõ³HmrÈz$Ì£YÁž…×ìÓ ë±’JHŒ–åSkVtQDéHçé‚>¢#£±Ç‡4P)ÿçÑHUØaNú›§‰¯†J!àb†ÍŸnLJàjÑÍŒùÕÙèÖ0§ÝÞy,Æ0´¦¼U,×1Y¾R>°4_ ’Ë5ø0CV!ù&ºÐ8£¬‰¸¬h7i«Õâ:gâÝpŒþ¼ÜÏ¡~­Î¥Sâ7÷° çæ8"'ƒÞ½-lêi”÷ÔÒYeqÐønþÑÁÕÍñ´ èÛ–èËd±3¾¹¨oïY¤òÅ~L98Fô ©•1c'¼‰ ±9ØS@€Î ´“+™s¦_ž\òí<ÕµMõòe} j2Ôf*ÖT0ˆÜ"naÍtŸlK/˜¡Ñéèp:¤™‰#‹‚ãÙê…&¸ªâÏ] ‘Z¸ŸÐZ]h¶û­jËò¡Æ:c_­ìŠjè’`òßVÇ «Î³ÛäµcW~I=t ºÑeiÍS¿ãá…=Pá'ãù¹Æ4:5Ö…®óKÌð=„‰tM J?Ñ[#Åb‘Xëlùn'k†–Þ×gô¯ÒO)ÞwHȘ<Gü ¢Áj§<×÷¢æGÓØš¨eÀ7ó3½më(«¼Äƒ~ØM«‚Ü)¥þ[^µ¯´½Zó ÒUQ…FŸAL"ùÎlmDËÙŽwô¿7˜Ö•‘§­Ío«W#]B 'öÁ .EóZèdB7È`ôó™™‘rkÜU0ßú²»[›YD%#»6æg/•ÍŽžó66#}ÿ“Ðgñe¯ØTÆ‘ 8ö  P¾'ôä í(ê?ÜVDÆ+?ç’óéõTñ×>†T×h›Ýj ?ƒô¦^B…sÿr%Ïü¦£¤çòä7ÊŒTi•΄˰fQ馎®wm¦1«-kÉS2œÙéÆ0Dµw¬Z£ûK#ëþ:ú{h<”8¢}UÄ c!9‚a6*zÈ:›æ^ïjX Qg8çÔÀt÷û†þ ùUª.vÒ<½&Š˜N&ÌöŒ¤’ êT´3c)·D¤§Ù«ø±~­Qçrét‹É¤d‘+ ßßÀ(Ø—žDwD䥯cA]ëoò%yÇ¿xÃÊ8#A›'^§&UY\VŠãP’F2ÁÍ©¤[¹»ë’‰ü·K(X \HPã†ÙâPãIÖ“bSÆgë“läÒ¾l®ŠBÎ.ùâ ê¨^Œl¡¦Œóqc™÷Û´WÿF{h ,‹™á¦&Ë[۶ᣜéïr_õ¸;'bË!!Î'uòWg—tÛ‚óÂ)s¶ÌY÷ô„,À>I[+7¹|ä«Ó¹d÷7˜6ñÍ›´*$,ƒ7ULImrò"%8àèÈ"–gÐSE‹¼¹ÿJÔ&ó®îF=éÅä>²×¾r{~¿õ\ËŽ£Uv%¯*8Äi?[k²¸q„>.©$cs<Ålè»æÁæ¹^Ö‹½ÌI$k¢†û Ô¤P×Qi>’^(» ÜkŸÖ{m<ñÝjñŽUzAPÃÈÎÎt»úص€$ÝTQ³oÚyÙ×9:i!?\Ž{€ó5`Gâ2ìeQý+Àß g[sCÑì#® L½%úÙ‘Ô/Ëf}lE¾û™ÓÐ;äý½‡ß“³×_Ú|Nв@‹I·ñï@>â6Œ’&„™~²3î:8?8™É3œb’鈶ø>u®Ïœ;¹hÊ9R!qÓŽèê¦Ëe*A8‰iÛþçùÞ‰v€õ \ô|¶ië±¢ÆïÓ$7kóŠ|K}  µxħïöìœLVHãºÈG0Ȉ²¤^Clè£Xð/AÀùê“¥c¶]V‘4I¹8Z%‹G͵­¹:4žåÇ2Ý<•YþqŽ–œöJ©¹|åU,RQpS"§×“>NÁ¾¡h6 Dˆ·Üû¥ÀnÉ/®µ Ý‹`Æ» ózҫ¬űtBw¾6HÌŒ­ç–Q·™ß$+@ÕI«/Íó&]<Px©fLû¨aªÇÃh-Øðsû6…Ú÷.ƒGÙ”õ‹wãô> !±ß¸T¡bîÎ(Ôܪ·Î÷ì3ì«_[r†6“ýÿhÙóàç*Ÿè^ËÄ ASü’†5±{5ÌcP[ôÜòäÕEYµ©{1 °âR– +]VFåÑX`"Ÿu¯§4é÷¶²9)]ñkj'o×¹' oå®ßgˆÚÛËl•|9ÃQFt»pµ^˜Nä¦?$%=2Þ~uؼ­Ém+ûoÅàò~•LÀ±,lŒÃ8q1¾Q ea:E7"*O¾¿ÖfÆ$eiŒhi懷OÀ}˜¸àŒÔpqͼü¤»c×ïRfn 8öVtdò ܘ\A8ˈ¯¶mÁXYx4;ůú-òOÑÂ9BQB-È~:0¯IIÈ«#—«´ÈcÌÄKGÞ»”ØN¥êob]2ùΆÓ†vgɉ«¡”’§?£¹éù[Ÿ¡²œp´RœÙ ó ëëLjñªŠÉǯO—/æ—Æ\¥øÏNj)&  žÆÈ!xûãÖ›•‘±ÒW:˜° ŽuüD‰_ýÇVÜ gG!æÉè\:ì6d-é–¿„ó£>C]JÞRõY£Õ¡èaöi+„úß–çHéGÜ?šh½t‹€'×õØ%Rv…ØéÑÕÛƒŒ¬”Ú’þ(_y_°ÄR`1Y}$Î/ÇŽÙÎ\n>p<ÒÎðøÓ¤ž9rB®R'_÷ÒìÌoÜQ ÿлFŒè_"M™üFi{DÁ1× Œîƒ`$ªA»eù³ï ’\ÀqÌ–*dN—¬Ù;7  åÀ›s¬XŽDàyàŸïxþrøŒMo0mÚ˜Bólç 6ë[lÎX쬰ä&u”©d¦áw¸ƒnÈüW–66¿Õ.G ˜™„'È'Iw>CcÆ>Σ”LæÔ¨¼'©Ewl'XÕIëÆ3ò\(ˆy.žRïŒ5xþÏÝë$¾w-»‘ÛtI'úĦé`wÀŸGf7šÊÉ씪–Žpûp^L àVÏG«â½ýÅ™çè Œ Ç.JŒ®M¸ÄãaZÀ€-†-¥÷ÊÒ¸9±$þÜú©¶Âêã]w¥Ä5Ù‘É#n Ìy']øV3ZêNœBž·Ò´ë—‹"O-Ýx–vµ2v)Êçp‘ç·«‘ª½†e62<×Ìô¸rÏ7û¯L®¬@»"cûªÜ#öNð"Q}é¹~ˆ a͵Y ¯é_ºwÿ$móØ U\´È[0Š6®¹[²õʪ¦^Bct}¨ÁŒÎTÛQO²#’N̓J»“©ÉÀüÅùòŠØ?+í÷MHw„"öS·´Ó%$R¬ñk&önɚɗ‘&÷+5Ãïãvª´Wªº X#ô%Ìö'Z1¨s’Óƒ}Gѱ¼ÊE¾;êüïê:ÑÕKv‹FêÅ"Ìþ­˜T.Í3é)0Ž“ss¦.àÁŸ®lj,ox#XÊ«’ºš!†g ÈI–º;gZ6MÂÀY|éiÃá/ AÇꛨEóa‚–xt®}œ0t–ÓEã$×p9êËòi¸ÖSú^9«}V™ÂŒÀ‰½ŸM÷&yŒýò‚4–w…CøÌU ¸¥ÊîAø8ê6#&“Š/@qWHß(µ‘8B*¢a½KZ(òx ä[ÂÛÛøè´I[ZF„Bt$ÒL§ÂÙø}LF;>.ª‡ÇŽËû³ÍZ{3þ= *±z¤Ñл¼ ƒ+”Ï$‰ÖK¹@LeJš€ùYmᎶ­Ó.Ã’ºLB¡.5‚l´‡nó’áØ^X–b«O[æê-cÁi+¯!pÜZ…¼ ]6í?—øt?Šöõ”œÑ’Ä–©>L:Ò-§¦Ü¯½Ì²à· mc½Y°q¥H>¯èbédÚ¿ˆÁWëL/.Ñê2x54«b0;úö4o¿à†áÒü‹Ð”„zGœ™Úÿ#Ø®·$~RÔ½6HÚ¬4HÔaZˆ T@øœ|¡Â}ºÍK­ 72á«Ä:Ðd7xK:°‡u€ö¬Ï ¼¬c}÷oµFvØa)H¥ÈDÈàÞ[2z»m,\jP‚v»ÁÒ÷—ˆª¬Yß ¡M ÉòŠŽNÿm©œÑ™×‰”`cS`¢´ÓNjÉg_˘bŠ§Í°Pë7$ß,_SÞêrÌ0äù“;ðÓ.ÈkécorOw]âž÷âîÛ•âR&Ãì4$Ýá|¤‚á­b˜/qZY*r ÏŸ­êD“1ÆrÕÔ˜èPÐucÁ-šC3»™ õœ+rʞ–k%ø«¿ñ$sÂ2ŒÍ"­Ý-¿CEËr,3Ó“M¶¬%^8äf¥ÑûÁšéÿòô&ʧDa[„C6¯ÒU8\ÀUÉÐ|Ù Ð ´òòÆ·²Ûá,7U©û7unæ…›là_1¼ÝÉ<â֔ơëéó«IQD_¨qzÝ’ qKN´M!ëê3²;’…Ê1½)ÐG¹dg3”J¼í!CÚtmô<à./íçä5n¨ôŸéÒøx'ù—0c×”í±›S û:L¯*ƒlTêQ2»{w V†B¯7ÌÖG  LÂ]¦0h8ëÐWjôSú +p‚¦ád&ÉÄPÛ²"ò{P'î!jEÄ çC‹ŽüWéÑÔ‹«Å²îpÌa‡5ÓPR½I|?{¦"Vº£ŠÝ#Ö C«šQÉ|lH²©"êJsô·vˆÞîø±Í[Òõ'ßJˆó!ë² Q`xGj³ûÂ-p“’°’yû 1™LéIR¾ƒRœëUÄìOmˆ VÜfý3¸Jã³ÿø8 Â,–2¬R§r¾A>Ûo&è))Lb-²Ù>ïænýro¬35W ‘·E<åìS…H@M „ü²FÆ èT‚õRçëÇŽ§ošk¨Õs ÷×”+=¶ÄDhœ($Ô¿D0ÿÆPW¡Á«¢Íti PÇ€UÛ“@¦'*Ú=¼y+ DŽ?LàÛm0JÖ[$ø¦‘‚öä²b¾Wü!$d*­Gˆ/R\±°*ÿ¤@œØQä»}1_/…‹5Iî5£¶²]¶"„®eU÷/Ih[Œý4-;çPVµÙM®°Xú8‚Ü&2Àá¶Ìð2ùM¸¸†¡ŽI¶Ü|¯»þ-Î8R]¢ph˜ÖÒAK3Pú¿%Õ÷ 5QjO­H[ø”êuÿh5e›Úaš>±lV•÷tœ`ª¡Œ|H)Ö6 t‰Ô>¾¸”Ýu¨q,NVn–”Vn¸€Ýîj»õG˜¯×a÷ž`;Am‰DPz¶¾ó[/\‡Z(ÄÄ”Ž;†.e;°®4J¶Çši“P‘)ÎT[Ý­É6§×ò¾î…%â²Ñ¼ˆÕƒL™°c©Ž6#Xb†òµ(¨ú¥b ï¨õÌ­ÈKòÙ‚`Uw˜¶ñ£¹9ÆÎVRz$¸ ˆZ³•T€ŒÄF¢m¿õuF­^gãSuB“²Üà_ÂØ]Ø íïÙÝÜo\BS*,ò/D¼šœD‰Fp¢¡?®±¦˜qÆôøJ“!+VUˆ©&oiɇñÊö)Ðß›Á…•.µìhn,ÂlÔá|2…A‡6TW¼+¢e#Ø{ß›¤Ì²¹€Ùß” –,æ±g§nËõ0 8¦²d¬% ™Þôͬ…ÃÐÞ~Âýj,¹²>Óæ?6Êu(˜ÐQGÝžv’h«½¡ž´ÚŒÓÑËÈËï‹c•ÓfÜà%Iï®°ƒÄ³½Âih/|*½>9M¬0"“–:4卯ܒ. _ݰ‘m«t4 ø>ìҰ󽳓xJ†á3>=¤´çÊžÁŠv"²v»ôÅ]=–ùŒ~ô7!½ÁÝ*„>~´7tÝ#‘Þf|Õªnh1Ssl´À ó,R,Ýr ¼½"«E\bZ7-ŰcFÀõƸr¡[D“8¤ŠÌ~”àñĪO ©l€Kù·;B\m@.A™›©fÑl+·£ß]‰›ižDÜPqtK${¢Õò^‹¦fV,"Éúp!²Hcf؇~äݽN=ã~Ô Mä )Wêà ³©+Ûc“gZû´á€ ´[lLÜ#ˆŸËñiñ±ElðP¼¦›Q1Iñ,õ#óôÜF¡Èñ•½ñŸ«» XD‹Ôo“ €æ|H„øv4K½fÁ‰0^èµdêp>fº/ÐmŒôØÀ tY-š,‚AËœPU¦L¼E’4ýGý/ Í7„[¸{׬$]ãó›Ùµî(´Hêòh¤ÿ°ŽÝŸ¼M¤ý/ˆÍpÐ^1ÕÏÖ@èRP†HY`óèÁlƒ2 €þéiö­ jßÞk&ØœAëøµ¡÷”5CŠ¢‹ß‰'š½ït fÔ!‹U¤• Û<œi’f.Ų ±‚zãMÔ%’iÅ&ÖtKÓû~ôñ Ë8\‘«X>ü×ÛXHÔ±Œ~-¡F†ã4â'kx;õ˜ ~™žÒrmr¡~¶ –Ú‡Ñ÷ùoi<Û78`\’<µcR¦“5*¥ôfÔ! Žšå›6?E¶^×v+uÔå[˜BĆ£ŽM¡8‰”¦z }|K?h äÛ|±«FQöi«ÉMÅ£nÅxÛH@ÇÁe*øÔfD7zuüdßV²GïFÄàî} Õ?²o/én­h^#8edùR'¼Û¼ðm‰ù¦Ê¤oêájè€d®­ƒ1=DeØx&…˜äÂõäT‚yb•sà=QËáØBªÎ“NV_å°.LË’àê|å×ú¡ä·9Ž6<„ÕS·gB+è2Å-ÒEË»Ž°»{Uop“tÑ+Tu->ùw))°î:-S¢]Ä©èbp‰–)?éuK¿”ó®PX ";6lˆ×"§5‡Ðyõz<{_Õ"êÅ©YO7«<éiœ ÇŽ¹‘ؼì`™.Vž@ƒG3ga¶+X•ŠûMDaT͹Oó…­9².𰃼é+g¦{…0úKÎO#ü÷eÅÜ7M΀“tÐ8WÓÂÍ5®Ÿ—üõŸßÕSúVxí‘ê-ƒ‰%JGPŸ[eãæ+•#Ì£äÜ4lÒŽé–º®oÉ4Lj6î+ZåD ¨ãS©Õ±†ö=#úÌÝ1FÔ'½ÞWB1ͺ†-c׾ƟIúÕ>U´dRùÉ!@„þ:w„Ë­¨ŽfW޶¾H¥­pFTíœ26È[À'x€7÷±HS›þ–‡”c¯4aÅJ—9$Cã0\x\K%c^†<Æux½ð‡tz! ¼„û ,[PþdC¨G„ ÷‘,w:³>*~ˆ2;‘k%"¦Ølð‹êz¶7tÖÇ ÎC³8ðßh¢'í9âjP|‰þS–`ÛKgo ÏÑÀtߨ\bŠ?À4˜èåóÏÉJB´¿zÍr]õj‰°F, ·ÜèÔù4t¹U ¶"FŠŽº–ëÎ;íI͉tùKHï mtæKQF*|šƒ ’ GÛ<§2ò`)§1,ÔŒcÀü¿µ^‘"Úéñ;*Aa{‡£„óÅñ¶a.¾QL„KÃ: ß ðG†þr4ÈÁ¥€üË)ØÜÉHî4a(VÆYXE½­¡ýÞ’ù*ft‘šU™¨¥™+pÑ=¾Zl„¶…hÚm5[˜VÚ>_YGYrΩ©"gïBê—ÕŸ<®iL† b/fƒ?±?üC«¡jdlÜ J¯¦iÝs¥ˆÇ|Qó»ÝÏ:G¨8â¦T•c²Jk¥h‹eì”Â(]ºÉ¦n/ÐÀ,‹þä‚Èàs‰Ìn:uŽ犂ë#b˜&‘ÛÖã9vn]‚ñ€óÇÁ°1Æþ ¹Ä•í&Aè§–ƒÒv«ÒB‹AR<Ô§þ¡JútûïÉ“)Q†µ«Ý‘éîU^äLs¨j’QEÂl#…Ç=úHm6PFï=›M†µð£'Ä~rÎ×Nrì†æøÅ«` §-êò|#2ù1ØSYRìj‚«8E*èËü§.r¦,qâQš…„b[„ê~H¬\újú”\ -½`*ÚA2wûÒäo‹~¦ÅuZ`ò•,c9ZÎRT9—ú$Q%èA#÷?ÓŠÂðLß×·],{CÙ Ë5Ãi4Oc4x}vÁ,‡6G|×ÅuÑÉ!Df”%@… ìTXjÐ/9nrÀIÔõ;kq_Þ:õ›äذÖ3ó7‚ÆRmî0¸Ï%·åT ÛAÛ.q]ñ0š— >Ôaå´ôêàq®æ—ƲÀdÆô72V‚û“BRûs¾Yjj]´ˆEg¯Æ¢FØëòÓò²ï{>-…QU‹ò÷mjôŽ3Ñ´”•,y„­¸b2‘† f;äZG$‡NXÂôÕ/ãKÛ”Œi»ª@ Z€ØXÐèÔÇÚ ‰ü6mþ+µËM­’?–FÕ¸4×!5ò«S,¨¢! †:+QqR·í~ÞT޵ÕG¿¹Ž D•Œ]üzë¼ …|§`ÏàÃÈ&žzNþVF:_É”ÿçÿfª®µqPx)Y[A$ááü€ Þ2%ü,œ)0áó1œp>NW-Ã}“v䬷úÏ‚~5¸`=+Mòc·¸/¸›?§"Ǫü Þ#üµøóà¨×n¾¥ÞB4³Ë ŽúyÕûˆáLÈÆñäžïJζ¦NɾŸ[“AÒ k6¤B$É3/ùnXû”¶UkÍñíŒÔ·íNc- Äl‡/Q½gl )}dáh¤6j¨‹-#9ØyNàø1C½Sý6ÿ€yhe_àù6”ÿýDN˜„+p2$·ÈÐTðlðBÝ!Ülo.æÆçhËžÍz„CÄ?y**–`µ÷0… ¦üRï' 'ôމoR d¥]BÉ ?™]=î:étáÔ§ÖÁ± HE5jTÞõ[òB7™Í±‹[Äi@ƒpµtÐÙˆ5¨®o™>™y"‹ýÝk–söõŽZüg™=²Âîç®±ÈDAÑpûj:”Ò‡˜'hh˜uS ÔžÁ‡-¿RHþмyš FW5D¡¦‡M7£M×7­ÎCj²L Ð-´iXà±'ð<_ÔGÁ@q®mAÀ4KTß“7O!MD ~`òáO¼0†&©ÚœÇ¿ðgGoHLwóyˆð¡ŽaŠ0ðŸ†0¾Ow‹Ã>‘^Í3Èû N9R¶úîE^úÌϺ ÞbÄsóteë%¥ùêèp¹[ògâ1ÆB™>¬ŠôðÞ4ã™úÌÊyÃyïÆÎSˆŒy(IpŠ©lBý¸ˆÃéVr!G š;¨ø@ ´åÜèQ¹ªLeUÄQ¾µC¦ÁŠkÎÕ|½|Éõ’mó‘Zæ_ñRÍgù+×týŒS‡õÃ×9ÂÆ¤ðØd§âº1Á“–ì|µJ„»0,ЀŒ žRo+ub£- 6«¥ü âªöbVõÌÜ–­0¹ÛH_Ì=N‹òƒ*Úšb×ò#Ç(¼C=½Ø_”üziÖ÷;ªÞSvjw»OÎÒ©å®kÜ¡VˆŸ!• Uƒê=•VðØOcàtùÂ(ýS¿\K&êý˜!U‚ŠRø7é°j&}=éq糸ëëP§Ãûzm°ªŠÈë—Óãåâ…$˜Û­§>ïIõ‘ÉIäþ%-<á/´ºcl…o”ò¼jä·ï¥gv­^±vºm^E¨@jD'{ù4 :ñ¿¡þ§•~®Ò7Îb ß„pá2ÕCìŠñ× hO¸BÀAû>ør ½´øºÖ.ƒÈ"^RŒ?¼ :Qil¬’°£¦¤ÀÏ€¯e1£;©º¹·¼²Ú:\ÊKÌ@»Ì⢆Ȱ˜ê¦_éW጖g`ë¼wÂrwsÝr£CFõ><Ö›ºN"\ÏœÌ-lŽ5Ái|’VDÂ^2ªþóhøû§ßôA ê™îgNdòâK¹OLg Ý¡õ {«wßJN¹Ë1µHùŒ:¶¾l’jªHçZËê‹Zfy?óô‰BK&P …,Á<‹V¾\d¢óAî„n?û‹ÈVàq|ö4³S»X8fÝp)!O( ·JÚzrÿ FÔ~Üü!ª¿?ÓŠ~„Éו¾×D÷­ˆêù>¹ÎC1LX`Àáa¦ ß—y•Àïõž2j+›uÉŠî-ñZÖ,æ3TZŸ>gMþ“n r_ëçÇðÛm·°›êPžŠô±âÃëRÜ01bœsÎ%uäÕ™yŒ»,xtìhx¬™¶Áé dRm®¹ú:JH¿õôAb~RÝßÅ}ïPÒoð±5B,6ã8¶a¥9©Iqí|E¹˜2‡ tÝý…ÜÕ¦*.MÀrEž™ÿ)‘®ùéuJ¼A<~ϺÜ-Ü'3΄(ý"^½Œ6¼…7Ž|çÎnÊÜn•¤2áÔô嘘œÓÛe"Ôb‘ð´ùø’õ} ¶êÿeÓåÐø„ÓÞ½ÂéU-ÇBÖæ}³ÈFtx¸HÖuD‚V£ng˜yC•Û)£# ˜ô+l:•Ó G¨(ô*[.( 7rð^¬»Â7ø°£æûþêÛÝ•£ 2óÞNSWÅ/üµÇż•Ÿâø›÷·«Xý—@hê⓵Xcdü%õÆ8™f$?]6±Â‡.«"`Í—ð¸„é»Â‡&¤±Ø³Xò£Ë(»ßYÂ\òK{¨<ÿg/gsÞ'Ðò/LN2¼Ÿø½Ûà{jøŽ@±&t3WЊýqOSG³XFÔtÐ’àÐ>NüÖÇßEzù«7º™ïCÐUç99wΉ~¸=[x(tÎÀxÖùÙ´e5!mz¡ªØ£™Ti‹…ǹٳ”ž Úþp²Ý y^’ЇI^倯~B‹äµ~+ˆšùÿCøýj¨Ñ×á´JRß²~·~ĸ‚{K£¬®1¹B¨O]A $113ž1é8:h¬õ•>„µ¸‹êÍ¢*QöŒ¼«õ°ë'FÁC˜%š®@ÂíX=‚­B4GÖã‰ÿUòXŸù¨”­öƒxej0ArÛ à…$:wѶéC D:J@[y×ÛnZõ*fH¦™a­‰–üv‰Ð…å„´¥ÚÅ !wö4ÓÅï§ciÿIüKð€µ¼aÇ/±•WšÌÿèÁ ;M‘1cÆ¤Ø …§öèã­ºõ/ ävÿ£=Pz¤ãû}§!¸Liñ½©m+~ÒB%˜mêïdOm®N?Ô³ÎÕL$ØÖ&UŠ«˜Ggzv탤àu AXþˆO;%¶t5ëÔ½€¥5™ËÔs$|’q”¡9v‹ôÙwj¿K±r´×BØqøEÿê[Uêt³à˜: §QaªB~ÞŒ>À~éÉ‘³Ž8Yö¸Î<›½®§3Ô4"ãh0÷äRa® B¨pÂM^ãð4~Ó‚<ûu¯óÏLøjŽ™¾Šµ· ‚Ѿ³»õh)d´*a¦n–&ìë²ÇÅ %Ýov¶¾}„öâß4†Uÿöï+ˆÍû P/,ÇH.EÒþ³NG[gõß‘ù2šâ¢*È‘l~ty‘ií&+ W4’É»†´Û?{%Õ~´ÒáŠÖ‹£b˜ie.W8-º«³dwêŠ14×^Ê¿]ýê¾z°d[‰. 5éD¶þË"Ò|Œ3bX²9N[—®Mþü†B¡ Ì™ÒVÒä…0óã_!Üý‹ƒËƒ†^®Œåá¹þõš|¾“j¤8¾â¹§|¹ÉŠþ¡p4Hœ }LË<›Ù†šúõ›O#bîn¬­1Te · }O§4?‰O¯àqLÿF킨¼IOtÐÂ$]×CNËZ°¹åïñ y±r‰ºÙü¬úǯ}‡Š½Ñ\¸FòùÕy§¡â²©mµàÇ+K¯®nâ©W`ÝYv=¤3#éÏ=C¤É¸Ü®'œ @ ¿î\¦Þ͇%Âõ§3!¾9C±·3&‡ f5…Ù¦Y'š}âà%Vð¬HU©³–FgB±¹ ª‡ÚSçnx>(k õfÈH<]ªpjÈÅ›ì€o›u3œGGU^QZè•"U—7f±B¼½ûEóðíø·M²imÖé|ü‰ñpó C= ŸzwÆÝ¨ÏMŒ3Vt“ïI¨03šÜ4Ù}ð~[hû8ãå±9—2ï¢ÿt à½ël¨£ÜÁ¥:¿åÔnÛQYw,«ºSìÐW¨Z SkMK/±ÕgËìûxßÜßg¿šÒé¼qõØ%¯~ÐÜž¼ì0lÙsB6§‹QC]}0žßáì€M \™qH®6‰Desíùlª˜¨æÉ ÄÔˆ' ¸ È›PèœJæÙCÙ7^ãÙ|Ð:3¿W`È‚ìZ;686E_%ŽsËY’˜oNCº”°Ó¹Âœ²´)ó%³'™ “úPóÂÎWcIY¸ÃŒØº–¡›Aÿ,—ñ-kåoÕKNshN›Öÿ”]Ŷ†šxHð{Q×9œlŒªïAoOÿðÍ`8]Ò>e_t‹î“Î%•ÃÎ¥¤?´Žòн8 ”Þ•’¼¶çµÍÉ|$â$÷¼¸42ÇúXøÇTÀ:ÚO–R RC@K_â¯5€°é½b¿ù ’5°Kû†L¶ì[ â0ªà{T$zÝ™rˆŒ㢲³'Ýëfº ¤djÏQ‰×? GǮ˖.5ѩ԰;:ûödÄ ÙMZi‹‚´Z7``߉ŒåŽZ'zFÔ°%YqÓ˜¡vÍ«Ž´Ú3MêÇ¥Þ¸7ýDà”¹- R¼ èŸ É«zAhFª`~\Á´\ü7(ˆ+aL\`:ªŽ€*`U ¥î^"—©“OHx•2õ¡ùq;ïŦ|ÑRFëO LxÍ ‘Q{ûq]«ùtHeÒ¸!m_1Ÿ8–ŽVlx=hÖ<ò±’% TwºMÄΜcº¾qÊ0尼鼓‘¨`0<í{Û·ÙÁ,g¿:Aì„l2qtvrŠ»Âåêè”à¶s1*,àjj–Ä ¨jÿôš¼áéMú- ³X!T`pÊs·Óe¢³|h37@Oßèÿœš|ßàÖ+Õ~¾‚qÔÚS°±{Ý–s!¦°škOÆD¡Ö›æ÷Ü Ç·¸è{èÒòìðø?f$)òn–°¹x¡ÈæÿÙÙ²—µ¾£¢+ç™Ñç EúŽä ï_6B÷÷;uDÖ‘œE:´k­sXß.s+æjKßöŸâ+f¤Ö®ÏäUy‚1@Åèמ’&nðÖ{½zU›[Ù!5æûXFÝê¤Åÿ;§ag endstream endobj 320 0 obj << /Length1 2024 /Length2 22482 /Length3 0 /Length 23747 /Filter /FlateDecode >> stream xÚ´zePÚ²5îî`pw÷à.Á=Øà îîî.Á‚»»÷àÜ |äÜwß¹çÖûû5̬î^Ýk÷î½g¦j(I•UEL팒v gFV&>€¼‚ªȉ•…QÔÎÆÀÆÄÂÂ@I)æ4r¶´‰9ùÜÎ%çwž#€…… ߦc€ÐÙHÍÃÈ  1ú (Û9939½» sKö"fgïáhináü';#ãŸLØ¢LY#k;7'kK€È ˤÀP´s{7Zhì@c …‘ÀÎ  Ô¨«J¨¨¤T”Ô•Ui™Þ«ºØÛÛ9þ1U5u)€¸ˆ¢š¨ÁRWUûó_ z×oÎPT{÷ÿ©óø‡® ¡&¢¦­,ÁÊüg V€+ÐÑÉòOÙÿÒFõ® ð·´wª™£í_4ÎÎö|ÌÌnnnLæ.NÎLvŽæLö6éS³°t¸Ù9ZÞŸ6À¿ã2}o§³ð_ þì@ÞÒrþ!IÚýËiûÞÊwÒ»Ýù…½7ÂùON›…œ€À”±0rú‹+¯¬,°5²9AF “÷@g#g'€á_¶÷Дú_1GÇ?5þírüß2ÿ–.j÷¾2=/#·ÿÞ1#‹“çôæŸË6±9Y:9;ý+#`fiü£ÞéÏžY‚þ²)ˆ(ÊHJ¨ª1Ê¿ˆQÁî½; &gwç¿¢ÿä—çð°pXy9,ïC*2³³µ}Wí„ð§}â–ï}r¶sô`þçP[ƒìÜ@^ÿe4³™šý鹩‹=³:ÈÒÁ(#þ?¡ï&„¿mæ@g 躛X0ÿ)ôלü1³þ1¿7ÀÇËÞÎ`fdãô±4¾?!x9¹ÎŽ.@¯ÿtü!°rL-MœßGüý˜ ü•]dfàý—ù]É¿]ÿ³ù4QÚ÷óij²ñ˜Í˜íœßGæÿÏ û¯Z’.66ŠF¶@šô󿃌l-m<þö_šÀ?Biþ®¥“¤¥;ÐTÙÒÙÄâ_=ý—]ÆÙè}àE@æ6À÷ýøË¤þç Ù¼ëû…cùç¾0²rpý—ï}M¬A@''û_.à{þKî{Ûÿˆ0kËKéhjÐÿsVþŠ‘™Ø™Z‚Ìlœ\#GG#–÷`ãäx±¾O±)Ðý¯ 03ìœß){g€™#Ÿ]äâ0‹ý1ý ñ˜ÅÿF¼f‰ÿEÜfÙÿE¼ï<£¿Ñ;ÏøoôÎ3ù_Äùî3±³yo¿-,¶¶óYYX̦ÿYÌÀÿ€œfËÿ€ïmþ¾—³ý²¾§ú»ç»NÐ{·ÿÃÿžÛîo-ïd»¸ÙÌöÿßµ:þí=Ú hkùÏõ°²r˜ÿz/àláü;)ç»$g7»ÿ ¼«rù²½3<þ–ô¾îù*ø¢HˆLäj0©f)¬øWt“ÑËæh—rÌeµ'´Ô'NÄx;{žbئÞÐoRÉô*Ú×ó¡ÝŠX[°m0ÜWкWfºÀßž°â¢úEVéæ Bq&daìûz0÷Á£‹…Q6ÌíâÛ7^Z/ˆô†ð—]Á€³"ÁãàÂSgT K‹è„?O¡¡qO{á=„aoà ñ"ÞËtn™çδ!ÿÑo%—­nG™ZgÑHóíM YDö¹¼ Å…NÏOñT½j¡0îS;IY·• x¹åŒ*~Ïs}$Ì…ˆ¾ò“`v† 9ï?só˜ò(Û~@lÖhÝApïGÑݤg íeü¦ØîuøãçTäbU>ô#æ‚*ã3¾¹¡1ŒÆë‰S:Õ½"–4¡¸‘Ÿ:ɯèîJ’Øx-þôž=ZíÉA‘™” ûZ´×—Þµ"à×-öÂHWDZ‹êÒ–B‰šÖð/ªÛOFYqHè¿ùeA;¯~8üªl$„Ñž‡®eÊ©q{zß ù‰ÜÊ q±Ñ¯›)2_EåX. îЏ÷ŒsâaiÌBö‰,Q –Ô2fÑb§a&U¤Wë ĦP¿çŽ qŽ…k즧ÓyÔ¡k‡é™qÄu.òX`‰õ£…¦fÿFMÁ*û8ŒŸ±(‹Ûâ&«6Röó²Éƒ\&ÎGUj¼£`M23Å릇ýhJ‡ GÎÁ”cÅ¿ÔЬ¢ñ¢ÔPäÆÙBê üþTSüú$ð‡ÿ0àáÞ;šT®Ckšþ<ª¼ŽÈE_¤öqSvfç–ïÃá^l÷ÑÔ0@€ÂÙÑ ~Ù ¤LpÞ&?O‡{lö×ÃÎWé>2šˆ'fìêlö²†=17¥¢Ô¡ž¥Õ>¶Xœi“øok±ù_àlû÷¿Ôô©ªdÔ Šæƒ"êçSê‚àƒ8hì$ÝÍ7Â^ÖFu OR$¿„¿  ôGÙaÀ]Êkk´}düF_ÀyNK´ÏÕ þjÍ:GÉ#„¦ö2\ã fû¸n,fþ94/…ìG0¾WäÕ±RÛb 虜ÕÁG66Îîº'Å£îVIõ‘*ŒvнŠ=âä÷ËŠ`«–§¬ÁǤ§hï›Á´úµ{çè1cQΤíØ{³&}¹µ 5AUþ¡r¤)MÆA„Z÷]šÛp£›!½{ãìA‚7700’Qž£`a]F}»Nâ$xøÕ’¨†ì<ºzí(¦ÈÔï:ü/“æî)+ß~›…ûÝ™ài_ìbž…:’8áÎ nÏ£´t‰›<‹Ž•r ð}ì–²z¶ÒºNéúvZé`̈{!'bCñûÎ@Ûh¡`aÈr‚æçð,†+}õľjm|(nA #¨B» ¾âµ&DžPº– šNÐц¾Š¼?ÔRbß2àé£5HÉÞ¬‚—l°¶ùlûŒUÞ9é(Q î²ÅüwgíCʤ-·|¾_ýÀ.Sú€oßOié[›z}áE§ù°ð%ok»|GŒ²hVúgòÓ¼1ØæÉÆbÏÞ©òä2ŠÂ©©&†Ð=3S–ý×l)q›Cj•DðëR”…à×Ä«áà»<‰C‚U¥o¶Ül’þrÅ7¸ô4š5è0‹øË`N™ã+÷%T¡x·ªÅyŠF.Ç 5æfÑŸu!íÉ¢[6+Zd!^ǵ–ö2Ñ|§"…º}M?÷­9é]åôHºOWΖÌ?÷i.¬CS÷o1Ùð0<ª‘<ìŠUøáÜsLÄ*žipf_ÃD_xÐÒì ʺ*>XaD7Bß7‡ïj^û„ÜCíÅÚÚCê¢)Ùõ0ì_J;~÷¤L4mù{Å^CÇA­HPËŠú#'Y`ò³ÙRkïB³¬yƨxNÚŽ@^E%>(ò£¸ÛôJÚª8%Ø’¨ ×í¸Zþd©—=õï¼)v¹ Ýè AÉ£ŒšKj4¶z Œ±V ¢¸³àí…Þ&U»¤{7Ez{YþÏT1j|4/¿40'Å 1 œ˜ºPáBüÊ;ç~]R35ùjšÍ6ƒšÑµñ< `…²n¼40 aQIƒ‚Ûi3Ç©[x„yŒ}ΨAö+ZÃÄ¢N3ÇbÄd6>%µÿ  9ràv ï½g½‹[p»!7«Ò;=cÆÈÖ7mI6fµ´2ÓÍ|WjkIð5Í3pí ¦7ª?IžsGÓ0Žü÷NFÑ\ò¤ä4 ŒñììñØQi¨•gôfùsÑ Ó ¨.‚ŒÔ”€¬Ðq¨‘©Ì+¼ì礤⥟¢Aן¶ä'ši„ŠªªB5œÍ(Pø´c‘Y;J?Ž/د´/»ÂaÚ 8¬Ká‹G†“¦ k ³3 ‘0,ê5Úàø$ºrsW¦·üÝÂKŸþ÷Ò g¹ÁF³ÜÊYϰQL|aÆÄrâ+ú-Î:;ž«qþoº·W+v'›â¼ÒReò®¬—™1)Uø˜Ïs±’҈ȫ¹’n4€6…‘Ç…þ¦²®/éZøü}0É3ã #l- ÙZ8?"ŠûûŽ9Â×û°„\xaë´#¥dy%8Q炼›”áu1:t.Wzï&PçU»t7ö¹Å@¤¿»~SÐ0þ¸•Öå"¹!5ìÕCVåFcâUIÄh6pVé\QÀ­rØž i­ý½pÓð—ØÃÔ“ã¡ W´a·n‚s伌UãyÌ+¥`;¨qòòÕI§;o»JšºÌùÖakžm)GÃbv¿14—Ý/ø‡Å–Ô4 v´a¯)/(­Rˆ¢SŠÁìZ:_Ë&^IŒÇ7ú{Éqç@^_Ç?ÈÖ[cÓoTñ‡.IÌ\¶ÞÔ¸žlt¦a"Ð/g¦ë-Xüäg‡¬Y0CÊ>Äî±Bm¨C±ñ…|-°c› a‘X,Z./AâÃÉy‚¸£gŠâöûܘ¼µµ ÇýÊSZãÌ1`šçÜÀÌØo(&Ù`ÊÓ¦qo®ˆ8)$¤ M!Ϋ( äh *Ö×øœêºJ«¯¾ïƒ½Û]ëz-”Ø=(ЌǑ;|N– Q^ߟ(¿zLÚ* o¡nœ`,ZOŒÁµ„Y»K°tB*¬?©b1©=TÿR6V6ÏE îÚ°Ý$ie…qO±ž‰ü é ]I¦Š*"±p1D‚Ôr¼Zf8ÎUØÁ὆ÄÄWÙ8Sm¢!Ñ0¢×Æc_Ùdý–jÕÆ$ßµËxÔ̪Òî︈*Ì,¬"öûö¢ƒnîS6‹%£+ú[buð“nš¹ùç$&n`Òn‡3^Ô}|¾×ò7n>Ȧ m­?5;×Pu±GŒ¢d™K4 yS¦ï^k¦Œä ¾qS>9Ùñ4Y7NU½I‘Ó¥œÓC÷²]~ø ]ÉU„€âµ÷ª°3I•nô©FÿŒ ˜*ËzJÚ}4¸8Eb»ˆdþ¸‡xtF\XNtÅ'ÒŠÕºq„,YÝx ÿ;câ¾Êa>†ØÓØ[ø`åÊxùw»ŠDC”—wÀ3àf­ÁˆÊ½‡¢@”±aç'$5b«¡»êê Ó°âUF‚›×CÆN¥ì«pi³û2“nãÊ>­/tüáþ¥Ð¿n¦ß}ÝGB8€‹ç²8¾Å«…'ÃõdߎлQ‡Sd’$«Cstý&1·¿Û°ya9¦CïáºkÒ—©7HnôŠ%ø{? UÊi?9äÍ _ÁRìu÷MnÙÑ¡'›¨.Ûw½a3q «ŸµŠ 'MÆÕ7ù7BÁuÏLa†Bxt¿·îd[ô 1’¤*ñuLSÁÔËbkãUåçøÂ‰mCÈ»FfÕŠ˜DsËÒTØý¶Á¨QöÚø“Ò°ðõ¥ô»n(½gºAà‚ÖÍÍ}ÒGê.r£`é:š¦ˆôFÐõsc©?—¨«¬‰°½­y%î#"±0Œüp ÄçÍ@@Àºͦd-!ùùéþz”q„^èÒÊZwÿYµöiéÇB¶(^ŒY%8Už#Ä‘k°ÁùЂœÖ}ö·HÞ`äÌÂ].ÄÏsr¥»òݰ}D.UÃÖmñVbäžÞAÅæIö×0,YdѦ¾¾;íA!Ýê᮲t‚Ê:äÁÏî6ŽvV•~=ê‡&õff¯\å´_·K¬®í×ZQSÒ:A%"Y‹ÜeRKL ×!.篃;õªâœDŽ1ý Ñ ”µVÛ ßÓÖ7ÕÀK„Zt8¸XœÓ¶§šg¯ }¿Ã? Ç.€#î âÇ]rrûRˆD'Ào.Ãí¹È#L˜º—«~$¦æ»~†H–‹µH·¹’&()äüZ-}(™Ä…¼€á—šV#ª“ú\1ZËWQNrÞÏS]ÜÜ>lvRsY8ê¾Ñ[ß84î ~g7ê¯Â5 ØVQtÑÊËÝ몴hüµ±¬µ`–”I¾\êq„ ôro¹˜y5 ‘Ïwƒr×y†ªË¤ÁÖlòÕ=îÚJ³ùMzEKi<7‡Y¸®[§H:T8ÞõlŽu$Ÿf;NÀΞ *®f³ysÄPÕ§Ñ=ØÂ)BSª›ÿR²|A 8ÔÒ¤¤§™¾¯Ýôd ¿fVw¸¥rA´y¡¸óÚÃ!$±BîÀÓõIÏð³ËÃò?‡ÎlÉÆ I:ó<‚ƒ_‚Xœ.&î"í"êZû QèRLí”h†8ÿD¹$~ Û¤¥>yœeÑ”%Ö‹é…”L鑯T,pJIæîžñ€gÜC·—"èmg‡é> Ü”¹ê%afwBRPÿ{xü2NZÉU~67]·yûfæoUWÑ—[M½éÊ“°7P@HàH‹ ¦òô¨;Z‚u¨«"]2-ßuø+š~*èVSTÆiÂ~ü͈Òa±ïQÁ²KWù;¤G%ìî‚X‚»îû0ËÒì×&õS².ù¯† Þ¾òë²­)jD4¼«2h-É%.ŠÜú(o­’OjƒŒ‡oU¡AÆçŽT7\#ñZ,¿È¤ÉóGiV™·}ø¹®äd®Wìcu>Ù;Åë–þùñ¦èô57žˆªöáû†vd~1ʱ„KG6Y¢”d©;ážb*³ó¸ik阳nÛa‹·bþ‚à(ª—3Ö·V—Ž.Ì;£ '[Öå;rÏÉ+ÝôftÕ¢`j< ® ŒfÀi^µéŸ˜¾p'Dp¡ž³odŒG Šoà(8,¤R ¿ `\í}n‰pñÔðÑ9j†>gÁ,É¢Óó%KËÏÁ+#qŠH˹ƒ[v?pâ9e5Ó3HÏÂ-,%“Îç)%sÎ^–Æ–³iÚµùêñéùv¹Þô |³ä.ÛSŠš{g7vôY²£×úm7tÀlç6¬š`SR ¾šãRÑûÆ#Ç%B<çVGÕ6ë NÒ§ímÈP.°áÜÚYãÖFUÚ¦KÅç…„ÛÂËQ¨0wË285Ò8àäÇb=‹r f ÷¨ÄÅ} S;½£k¹誜´DjÛåÿÄêé'TùÅZ¾øöÉ” õlºK_·Ï¢•µß†kÐ>nt òÃùœÐ¯AÒ)2Ÿ£˜-úE§‚¼…m/—Øk$ØÐßæÝÔ=l_`“–D¢Ú§‡ WÂ-S[&òûk´ÅŠ%Çò?cFõ\_`Úåà±Û.º>oC/“:wíUòâìÉåÔè_ލ–AÊmàV¨CSE—o± ¬µ:À¬Ð¾i(CÔñWvÇÀ® #éËqâKÏpY\ߨm©0jbP …wœXØŒçõiúìDüÁ-º’÷1¢$ø¾ËœAÈŠªñF”HjÙ|A=ÜõH§1(õu{€ÍûíÜOþÿø¼è(aj¹Âg…ÅQ{ýfT°š ¾e?våPáxÆ–HIJÏ(Xû%÷‹c-òDTï‡s1›óe†˜}ƒÏÙ‹W9Ð^‚Uƒ:×QXn~ØN¸‘/“ˆàjùuè§ h†³ ®8êIͤ¨8§—6Q1Ú%^†+ª•Í!»çð9˜š¬FžO yv4ªŒ³<™ÝRÔ8¦+Ý[Jmó±‰!ðÍ•¯Ÿ  ÿ²DKæÅ1^•ŠgÜÔ.M”¿ÿ].ж5èHצî«ey¹càÑVn¹'`Û» ã' qâœç<ù°ÏXX¬¾xv½÷AGLm£;}ÉBä…ÿ¼Çôúþõ”ضšî°ïØ,QðQäàÌÜ$ü¾ù¥ÎØó4"N£žja?ýƸôQ¾”T l¸ycÅoŠ:«f)%nT?£á›mæ'x.óð"Œ9ô‹ULk]T'ÙOÐÒ›¸áoÙ[‚`ûHL©"øaíÎSÔõƒê>rP?Ð>‘•Þ"”D•MÐkÉÍ q̸í_œ+÷Ê·2Ó%¯rLþÌ2NG·ýI¬)&ÁA„ŽUx/”)éBSͨBÅØK2¯*O¿è‚“pØxòÅ-%ê–—åd”cM`?kˆ½_¤8ÎùªYb£å‡sÛˆáŸ*÷¦ÝXÍiKÔ€«¿Ngõsqœ÷qõð>Ï(p -XZ¬ÁÌð™u•½G<63È•ÁVý/Ž}[>†Ü˜Äkt U^"Iå+û’w­X)."å@3p6ãøLÀdqú…~$ú4±D¢ω&—$—h Æc‰‡ŠéüXÏ^b1Õ×ö1–¹0Á”ZL¾Òû×£¸÷rÊ'Ý_RþŸFX¨êZVìðãÙOÁ>ðG*œ‹™@×Έ.æê/›¼q¦ˆÍï"3Ë *ÿÄ’ ‘/eLXÜâgª­,hÇû¤qýHÌQ¯I½[Ôª½P‘´µÝd·•ûœ”"™ÎKfctîåÿ˜jØ»bEÖ­-‚™‡jüPìñÂõbG ~éÞgŽÊNÕÎYŸ÷¤7Ã)âí›<¤hr °WL5èFA0Gå[:©C9’ôˆ9ð³¢û8üùR?Wˆw2Ž zÖâRܦþRO2}ñ²a ÿ™{‹€Úßy8>„è#°£’y-ÂŽ­:vM‘;á~#øG‰l r+³%hu+T{@„fyÔJoÈB~áúiÊÉçm>×j_ÔBèÊH}¥ëkÛë«&°ß2Ô 8LäT®Z[….õÆ?Õ›B»Ý¢z»Y”x…}î÷Ãᬘ¦„n–#Óƒú•B,-yôS¯Å²A#y¦¶aµ|÷7’‡»mèO˜Á•&À™r|ò‘wÄÚíÞúÑ–úÉáì÷4~Ø(•! J5Ô‡p Yg×çˆWdu6š’"ÖåQ´‹é®QdæÆšÇ'Ëè‘ì/äå¨u~×cR¶œ9S¿Ì:’KWžÓý~Ø“’\°íñ%†4)>£öP6O](žJ ŒúàŠèº]É!›W좈¿ÔϼÊû¾ˆõµÆXÇÉŸ$Ì©ýé'vªŸŸÂÙBbià^'õhè ¯Mijˆ|uwÞéààéÒƒnáI5ÿý¹3¬] ƒˆ™d`Öå¸l—/UéÁƒ:s`ÉÀ4ÝÎÅÕOîÈ¥^…ÚéÓ§L¶Ñ"»Ë‰ûˆÎ¼»ö¢ÅU †Íóc¸ïOõ”f߉<’¾Tw´÷[¡>¢‘>©ÔüœkRźÏcvá/­W,ŸæC×?ßwß8¥#'ÁÖ| ïú52Cî§܃ÿ;…ùqÁÇQpüÇ6k§M…á`‚âçÌ*Gý -ý”7ø‘i$oiÏmKu”^3Ö„„•º}BþÝ.¸ÏY;d»U:^?Ê8mBÝ’×1ˆµïYã>bCk¯t3Ž@$àÎå^¦UÊÕO ¬Iƒ—}”6Qñü®BzqŠÓË[zü+É, ÃÓásÙÄjídŒœO ’„ÎEÒÈÎÙoÙ=Š$tÚ:@$Þk=©µÌý0Ç{ºw±SôP÷²t!øSH$P‡l‚¶,:\¬y ûšÛK^À„é›|’æÅÚåG»žáea¡ÇA¡àöé2Üž¸å©?ÇÓ cPÔÀ,÷¥W†ã˜ï>Ü2žòHìÝÌMk^²ÅÃÑu/²Ö•¦;rµ6­Ö Ÿ,£ÿ¿/¿4oshž†ý,êö)a¢H¥l+\ ¾<¬§§0G¾+\A&¹ô,öžõÀ©ï<ì{jùyÈW2:r¡a¼Œ¯dht‡¡Á·©õª –â—(Z!kGÌõlŒéÀ¦7ÁÊ[BJ&EŽ5î ‡¤Ø×¾Gî:èÕæŽÌ9 ) “èhJ…_“èý=ˆÔ?úàÀ ¶„]ªž4Ô\ÚŸkû'Ó¨åAz¦BªÇu5&´ Ü¡õX¬¸= ¼x|3Àž … ô2lm§œ'¨Šžç³×¡²ùv[ ‰\Äo—$ ÿD>ªK “ÉK1',ZD³×EC½†ä߯!(!å#VPu\Áíz¼c“³U :qpº`•ín^•6Ra)Žä=9^b9èz“ô­Ï2¬ÏP#GS‡hƒ+¡dZ¦67âzMMÄ‚†&ˆÉÁë×ûˆÂb}rò.  ºe9·»7ˆ)·§Ä[œÕóãc»ˆ›K¾ée¿ík;gœ'ä¨SúéeüŽ”ˆ†£ß9Ç#¼»@zþ„#ASb’M°µBz$chè†ïRI±õ³Ó;­·Iàá„a*+}‡ÇJŽt;vO2»Î4EÝÍÃ9o%ÒOÃ"ȇ(ÊÕÐq?꘦)3ÖkáÖ-wÐľår¢ÑüƒñéNgöGšÍ´Exª£½!wˆuÃ…â¨O©”DθFŒ(B–*D±‘ŰqŽ®~7TQçA¸¿^šØðI õhÙ(p¬&žú7Í2îÖ¸"MÇâ*õ³tHª­ÎŀŨLž¨|/07õø%SB áœJã.–ç“Îx*,JðÞ~{ß)P”€†ðGH>ŽÖ…ÂþäxyÉqû!{yصæ-˜ha‹”"æx1þg$õ.à\Ö~s©—“Ÿ-P¾eoû ¤‘’ŽDÀý‡d¹¿”ê¶m–oè }`–—qU—ÁÝEóIê¨Üû¿n]ÐŒ?©Úw% ù’¾Sc‘I¶F1Ì¢œJå1˜¼@QæÁ½“@sÜþü‚RµÌš 6Í­«Þo“‰0¬­9“ËiÚ-Í7†õ隬kq„bŸœ ´Ø1.s*ºêaki3ž>ß^ÁfåK7ÑA’þ[h†Ë—~¯4oF5ÆSAK¬jöµ‡`µjy*Â×Ú0vÞæ-óËj6È(Hv¸—Ôs0=¬o‰Yo\o;.c~ÒnÐñà™Uþ9ÅM³¡Äë¶_1*Œ$d*@á<¹a›¤Ö°åÀ§Â ÝÅb zÆi›4L>¦\È窠Ÿþ'Ù”dÌ7à˜ÑViù²BŸîè 3 «YêÔ}œ…Û&Ýç»E2ÜgO)î…Þ£7œùÊP©%5zy›e?qË×xëâ»›œÓòC¼£:ý‘“Cœ@Õ1'²‚ÍÌÝò}Oí¥_0°8Q"tzë…®ãÜþÅĽ¼5úÅѪ¢D©Ñ¤­.«eeÝ‘£™¼áHQô C„áUXhÐô˜Ãß°/æ"M,àgG0–Ê[8dw¹ÒÏÈò#ÝõYx.£!a·»Tè'ö–¸Ð 6YNcê<-/o.ß8Ö“hRçÏÜ.X‹Ÿ=Dó?/[»{5£¡ŠŒÆñÒÀû_Þñf “ž›‡‰¸¹ýJ'WʨËÆË5éÅèR}•>l.ícBgjýRݲysDªøî·Xíj7>iOÐ ïòÀ:®4øÑ”j¢»JáïÆð‡©Ÿ,¾"¡°u ó¦_>¯tp̉ ô:ÅL9ÚÕú˜¹çbø½Ö;b¶ké¼wÐrF:ŽZ*î„ *c÷Iù08Å®Uˆ ÂM—9냩. Ãgx‚n3äÄŠ¿–}0ôK|2`gÿe ­ø–?ÓV¨œ›¦ô17¯ÍÀ-—)>ig”_û,Þ²žKX妧@„Œ‡(â‰N¦2‰Þê—~M`çLqŸ¼ê{.†&Q=–[—y®F"VÍ_{Od# V”7ŠÜ‹D¦n$’Q6DÆW׺òRü)è—ݬhDÖ†ÚT#å¹#Íü¬gCµZ9œ®33óèãî,…Ñã¹B …fTU^ÒÈãÿ€q›¶¡$³¸DxP°©×F™Ó¡ã­•2p}©àuö­ÏnˆJJ…Xy(|@ä½vä5 '1^SFÒú»ïØ€èõ5*d²ö¸ÝµÖÄH_¯ÒHÃR³¯´4 vD U²î¯ð\´âÒ9;”oxÊYvŠ+Jº:ê2=2íË㌵Ÿ‡ûôk_Xj¤.ž7Þøº–ˆ\9·©¥¨S¬¹"EËùh ¶„F ÈYgò1®˜d|?+«m}#`£HÔ*׊ùÇ/<ªƒµ¡ÞÅÒ 7÷ŒÕ=:^ATîy;Æ1Zìnº8ù× »åsouÌÚ©È)¾øA~sÔ *Ç6OÜS–"W:9.G 0S‡Šƒñò~¾©ËájŽù·xú.ßk%^i“Ã,¢‰Žm^ò¦·.†è¯ˆÅ…œµP{Rj¬ðÖ³D÷(õsu­Ó»i#y3VñÍ¢›ÉóÅX‰Gg;RÔæ%¤,ÕÅäGÕ8¿P:ˆZ}Éé¸n¹sYî=Ü»͑ýš28Bý¹½ãSÐõgתîcg½Ü°®}Aµõz¡çx¿ë¯p~¦¸»ѽ(Ó§¢¤C‚µoS ¥ÇÇ?×õŸ‡\70€­”t¤sJáî5:tÈBUÆÈ!ý½ÃÜ´h.®©×»},šà¢KÁYC 3âº,«ÁÏ5_^뤒2ÝJÜâãkP_‘ùgROº‹–·s_¯u«]‡/~{ô±ˆÉÍ<¬^qüVŒCëß*?ý¶…ƒV¿~ÿ’ Tm"D=1§ÿ®[^*ÔI¦7 '¶‰¬£õÆâg0«vArˆ!Œ´Ó¤Ë¬ i° ‡{4–QýH›Trû¶Ò¥AÉçù}Ã@KÃï¶þ hgÞ'kVª`¹w Íý5RžßÁ¼1<ù0ËÚOh4u2Y›ܦé…ÅN÷5`̈́ړ¦9‚h]Uy^ê;,'ß‹ØoÛ»z]ãÛ"/îHL÷JâÌŠptêh¢+ÍÒlËOþÇ~&ÜóÓ¯›L#£Š‘Þyq óƒŠJ†×Ûl|ø­€üe“ÁÔh£½âF@)F½F‚æ\C™¼÷~Úqü³§Èú ×*Gv'²j×(€šÑ‚Ð%ø{x¶È$Ê mo)f…_Qã£Q­”71Ñ=}Úì@!M©œ¬èT+(1Ù²Õÿ©4؆Æï˜·+WŸ[-r×ådŸÿ!jOB›tœw)gB2¡.ù.t‹DÙ¾6(E%úJ1¤§£Ch𛽔_Y–A1àû‡H”¿Áý=á€àá¤Y ¾½nÍ/›Þ¥/NK©fïßí|#c—E„²éÒ0†&_À|êúš?;°óY“LG´¶ØL'ÒÆÛB‹œ-á¶v®—ņ™3k‡EÌ^ f\'°Y˜ˆ¬¥;QŒÅÅÆëe?¢ŽPãwÌNäÌGvjø±ø€ž² '½ >®C–Ø$‡±þˆÃiƒCÝhÜ9²µC˜–ñA@—ßs¯ùºá¡K¸|w4‰¸2Ždtü±ôÝ@~¤ux}ý[c çಱ‹;$K/  ×OtH(Œ½ì³>®¦eüLíÇàíªLu¢ƒŠXá)߃¢â5ôÁò(b\òñÍ/Ÿ¬šÈÙ•êR¥ì‰“×i$¥f5pèÖF;ò 0êúöõ€8þ:*=I;0Ùxó±ÑR¡œš|!úŽ:å YvPÆ™“ššÓwÎqebŸüzu*) 6¹î‘¯šB5†ë·•„  ÈØÇF¨È­½MýÄ7ø ùÏ?L¾$$|ÍMï2D†Rè¼O»æÚ ïð3H´£åÒÑ”gˆ¼sDDFƒC˜t>V ߱؉M.}Si%²IQ6jœæ‘k§ËT–£CHœIºƒ¦ÑøœÞIÔ9ͱGŒÅÏþAìäU»(žS{µ-kÅÜ«¡zòJl–lÞ2«;Ã0ÝÜGaÈåf˜ÿÐfåà·´Âvc:ä—'yÿCw°§;‰!vÏré‚}Bjq¹æšÒàøÌSVs0˜Å(âœd¬cJá&0)Y 5Æú¾¤QÕã0nG”A!}Vk*ùß<€õq›ÒAe‰¸çÔ‘rk†ÙŒðU¹¹j}“}M,Áoku~õäꎔ–÷„²êJ<Æüšx·>íωæÚ󵄾*p$OY6ߨönE¤–dL¿4™!²ÉïGÑ bùJDê*©cêÅÂñã«Ã®J QKÓsüȞݶ¢m%ê±QÖõ{¯Ø¾½dH¿éæyÁÎØOk s5%‚øóN7 Œ€1ÀTnë^‚W|±Y®ÌIE/Ct wo³Z­™²K}€Y+àÍl¥ÅŠ'ØêW1Å?§3Ìô±«g›ÌÝ5­ç4xD€¡õÔ¯ˆ„„5Šbâܘö„M@I^º±×WË¾Û øí3(!ØOÖ¦©’Ð210d>ö' =nÇŽ)áA(îRaV`2-YK2í“ý.¹<3«Ì82œÖ?ÃF° 6í™÷iø“!õc„?ò0姨Ûô=*½%a£?f-mù•k¶˜ÿû;“øGGÛ '-d³œpzfO#·€Žƒmœ+5J©OGœ!(F³ªOÍ~^öŸÉ”1p=ÊH7ÖıÖÕ}×%1ìîwC";Õ,¶Éæ pE8 »&íçÌx ºBÍÜ.N>‹¯ñw|zY™HTäšg+Ë8”ý\\›¯ª‡^±½Úð iŒDL”׆€>ipXþM¿†,UãÍv<î|*õxJ‚érX'ê‹™ Ì k9(¦ö.—äc+ÿÀ¹k^µJ¯¥N/Ñ ÉçuèIk5Ó·³šŠ‡±¤*¸¸¸û Ó͉ Œúv›‚ЪãõÌ9äå¬KT¹Šg·¸„,˜ -ðçnÚÇor¢Ø9ÚîŽ pΤº2UúFÎÕ˜Lɾ– *㑸›ô*±/û<¶Ñ-¹6k‰³ 匯!ýít”­¼Ñ‡R#iÆ1)5˜k`ת«ž¹~§NÐWâí:Cöˆpæ·¸P.ó¢ût¸ëYnøîVÁhî¤xgïjï}é2ßpu2_ÛiØu·Á[·šÖ[$c \^¾‹DHžkæ3§ù†'hï#Œ"tÄúÓ·˜! 3 ·oÊz¦ú©ÿ$›»F§%µ…$9v`Øð ôvit6¨§ÀÓ>„*NUb’Žäò±¬k>þVy éô!ÑGO‘>;\ËÉ[ý¨·ÈCM’@Z†75YQ½Ê£E[g’À™<5lOlùÉõ®j¤ž‰E™³š«+úÖ€ßÎàS¢à·í`+©Ü z¡åy`HnÈ‘ƒ_YØÒj½S;rð\6 &‡­ Äû´ÒìC+ÒÊ´ ºÛ¬çZ‹#×î•ó¹£µí¯Ö£|ïÞ?¨z3‚àEûip“yŽ'ÒãíÍ qŽÙ â-R ¤ vÎõ±+æä:T/˹ê|³`,jÇY]ŠÑ E°N1`³LÛFÂca á™F]ç:ÍØßÌ·jùŒ“á—¤º¯ù%RØÃ©å‡À—¸-LJ*ñ 7NO Ä¡’phÀlí$IëJö+Ú’.ƒ°‰¥ù4U>UÓ¤g|rÕ[>2ÜK¸†DÆL-ê*i“tû0Î%›uî[¶oÙ'‚‘Šßìæ3@É>[§ÆCXXµÑæI· bËé:©zõêDŽ_§ííši"ÀJ_ÝÌ?@BܲæŸuüãL³3^°{»M#1ÿ‘·“Æþ 鸰dÎoŸëVZåªl£Z°ðžÂÓ„qû[ŒdU†wì’û÷î©1]b¡:Û¥­áPlk ]Æ]‰ø¬û ôXóÆ•NÃöo‰æ@rîÓklåÓfÈFõ‘H™Zr[›C§}ðH9™~HÔl‚j´ š¼.ä†ð`¹å•Ü(q׫£û¥ŸuH.òK8£Š­S&­»voy¡æíN[­ÆÏ0k^M¨¸eX¹SšJf²/)ºã T œÙÜ5V"ŠO*®é;¢`S‰!FêNÌUD!m÷C3Ä×¼ÝT/^¹g)®`ôgÅeùEEø“±`ŽªØk÷c~dh²O´TÃe‡— 8‰72ƒ=ÜÆ '½dó³-bš×­Rà Ãǯ~YÈõ÷àæÛ¦÷:ã(¯¶tJæšÆ”J¥~ζ3eIoa ‡}Ë#L˜ß ž$³ku á¯@Ôw¾¶)}—L=8¼hÛºŠ7÷Ñ÷Ã^²5b,sä©ý ®ù‚"kφÿ E7ôÎ=D‘Óò\…ùîb«‚ßöS>$¡5[ ú 4U¿ðTÖ‚±éõiòwfT™šNôc€Ê5ê|ˆ!íhX)sµè­€Mä´sc6+—j°‰d°…àÏfꎮÇã­T’ú[ä¶pbcp…/ñМ÷l¨&ˆÅ?#&m>ù5<¥0ÜP«Ð n^ä…œlÓà¿:!Íê"À„p?OðP]®e~\ž¡L¤'˜Ø[ÉBþÔ5}ï§Ÿ. M„Mû©ÞïRíêßcæ›)-‡”¥ÔMÌ®RÎ(&u™ûLñI:lU½Åó6ý’6šœ²‰ˆß`5Ú‚ƒxB(ø¬‚Úãëäe7QMâaÂEˆëЛ˜ÑÀæËçLMºÉpùô;îIBˆ³•AÝ%V)¹¦ÔêÄ»LúùýX‹¿kfì3(z?Ö)ð|gÜþ®¹] u!QTsDK"XO£ó$H®¿Ù‚™sºB01¬gr¹‚¢7î=Öû} mí'‡Ý·+‚¥a3íöìöŠÇÏþ»ë„Óe*˜\»P8Qó6fé=»‰Éõâ’çgäÕ¿„¿ã^xÚT\t޳MȆë&9}O¿ê*êÀÑ2&ý¹Ã°Tˆº¶‡"„ <»rõÃ!·{HE€HÏì,cɯBÐ3·‚lÌæuÿÖïR þ‚HÞ›¦9j&å=VÍ _ )ü΀©Š…jY ÷m`Ûô‚ã_LLÎ~ŒÄr @O}Ää–L:ZOò/_dH!öX¬¼&A_N¨âÚƒYÔ™ªÿT«äþöïðˆöSñë™Ö´ YWãóÝÈ~’âþŽâ –õ(gÆÊ¹&h‡cëÛ¬qx¯lñßùE{$ü©vˆ$[ˆÅ‹.‚†š U,™9Š9â]W”Z’›(©ª,!à]v}°ßYžŒ¡¸î›²Í¤U?ŽÔn0&»‡(=fŠçÏþYñZt2t?þQš{Ú;ûu™°.Zp‰G>òÖ"A`ö»sëxU¸„”1ÚN Þsydëž½®?éÿ¬&u‚nŠP³i#¿uÐD™¿+)Å·"/‘–cê!þϯim<”¹:L:eèÈ á„+§‰ö¢ wƒÍ¯6ˆåudsl¦wSÙ+E(a_XÎ „ø˜×W‘±‹!-H´=`§¥W‹§¾mœ^¨ŸÜƒ¬ST±hùJ%YÄ$³Y¯¨{ß¹ëZ»–uÒ¡mâýƒÜ%9¿uGK œ™;ºðÛïÈí4?dÆÊÆ]‚ç^ͧ)*/»N©+äà¯É£eW'2\+Ûà)ž ¦¢"¡!ÒÓêsºµ?ý5ÆzÉùù¤Ö¦Ò¾Ê¡ ¡ƒ°œ£ƒ6$ò]8©]@!žo#ùvÎÚRÓÓ ³R9SkˆÖ}’¹ÁnÑùdV—s±DÓšrËÝÚ]󊜘†¯b²æEžªréöˆ‹¦.äÅ÷†lÃV¿³ùæ˜ Úê3rÒmÉÄ¢ßÈãf‡÷k¶Ù¿‰ÔAÅ™ûÃ`exWÕ6K[š %ü ŠÏLN\äÏà®Ýâ)|Õ}ÀÎÂ÷a¸¥ñ¯Ä²ÐVû®'AÜûŽØF ¡‚ƒã$Æ5µ†÷‚71Œ>@“ æ§ë¸*Ü™djñkl°ÞÏòXç¯k?´.lã*#y‰ù…ýutW|o¾•5¥ :žÂC/‚µ8ܪáž_'çñƒx¾äÏŒ½\Vãê µÎZÐ1w€°nö:Õèe"\µ×I4šwûÎ"«ähï|¡dû0ò˜ïÏ‘\±ÆAA’ü‰0¹8›£yé¬Ü¤{MPÌ ÙN/1O”,ÙüØ[׸Ýâq Ñ0BÛú¼ÄÄ$·¤‡¤Ž¥µg°z¨Ö4ÇŒu¿¢ Â.‰Tþ~Jæ½ÝÌÐ::q?mJ£Ý#]6»Õ@ç7êâBnJ¡"Ë¢Þ ,⻈Ã0n6>D<oÔѬxŠlÌóò( 1X¢Sò$f§÷Xü«ê>õ„ÔÝn½$=Eà‰¬„: @†Îñÿ) Ú‹WOÕkô©Ë¯ß+½ÂfvU•rè™ÔðzX1yë= ÒGa=û²ÜÉôèñû:ç÷‘êôÔ,ö¨ÝÚ¹ýu»TŽIˆ¥€Xd†ËuáÄäǦìgã—)„' §¥œJÍtŠˆ¹§|~¤ Z ÃCU–˜g@jÓ7CÖÓß»eØŠz­“–vÞä‡êw\Ã\NåÂz'µ–dèVíÞ) ÔýqÕõû?Ù±4ç÷¹³Ië^.yWâ(Ö‘aN®´¯¯Èü,Èr5BÕ!Q²øt¢åî¼ ®ŸY`~tˆwyíÙz%þ$õ©ñ‚toxqT9™T\.°¾ì‘ýr¿2ñšæP@Œ~îäëê¦rD)jbÍsŠÕl.£éÿÝʘ›øo$ò?m‘Èy=Ê ÖdÍs–UFî6 <7Ѽaõ¯ÛÎè Š´%¦æ…`²"»}Æ@xB 4™hU#AŠXf]ÀU¡üÆB­ YÒ6ŠÖ}öìA@¬Nça¬­}ÕYË‚Îl:å˜Æ>7¬õùá““h‹Û£‰ÕÛ@¶Ÿ t"*‚èý |~ìá,öwM'ìýK×Äo‹Mñ³úKIæ³ûß|зdpÉÈi(1mB†÷FïO Л•Œ uØÑkȧNàûˆ’/kí!–¹`©$*ý «­Ù^yÑM±îÇG’e”­žðe’‚%PW¤½M@»FÜ'”Ô©£0Ãâå|Dw›93†± ɺ´toùâÅW¬Eã6ž:?ªÇú®yA÷ƒ%Ê »&Y¼Æº…²Å='ò S#Ð{ …’z4®·ÍÍg ²)ІcT£Š!Û@n•ñZàTòs9Ýrã/äÑÝßH]º¹‰jä¾È—õS¼y‚½óz]d"ìéÓ«ù®f4þ-é’ÉHÃum°Dâ I*ˆ3EVª60¿C²mÕ=Ѓ€@Ü飭9¹ `0AùïÈwÐ-9ìWÕ8À´‚OPÍ>="aª›?s)i•͘Ã^Q¿Ìˆª°Í !V"ØøÊ[·/W×ðaWº†W\ylr÷5¯ˆ‚Hl´[ªHj…ÛÂôUf"mž ‹H6 -ÕÉl€²Ñ¶\”h£9–ùSÜzºüpâªmU[¢†;ÆÍàGdõެJÖJ¬m@ÒU.û!e=…Ó7¹‰OÆ×ÑADßÇjÐBM`wÕÄ®þ鈧V¥˜®¸º@ æîQ¯õ/ âO¯dV4Ìd4Áˆjqv,µC&o"ÉÑ@iD ”@t6ûÉR¦U^ô…˜,Q7ùöìd5xwYž€ œTø—ðuPŸdéš1èr~öêš{7÷ù \Ó ¿ªÛ`‘¹á@Ëó£Ì4@õ ŽG&q°î” Ä_9€“fnNjü¾çºp!]¶’”3a<Ÿ^ôèa) {sSv‚ ‡ÕòAsíȆBn挩‹a*KÃÂè²PN ¦ç¶_ê³aÀBêgŸxós˜@p±øqùƒfðžý½p÷)Ù¼ŒjQ™î{ðÛÎp$f+‰·T5³[§Ú_d4¸½T‰›«ÇîIðXš*év"n§ð‘ Ó๶Qá@¡I-oi9›Ç÷²vðµ l,& Ñü‡®®’äˆ Í>NH”»’ªð®V¯š»8]0ªrÆ‘‘vª»g 䨮<É–GK‘È@wµsƒ[~ÑÚÇ}3t¼Ì°·”x˜+²©Y¥ ØÇd”¨àoªQX•èøƒÉ/‡ó_ (ë€>þôÓBVëv]”ë¹F 9‰1”8è`£oÕžƒ@GtÊsÏÇ¢VIB»^ s@ 1ÕçkZP³$ÿŒ¶ÒyA £§½[ª*Îç–ÝfêðH%B‡wµ©4Ú W•Õ~áoÎQÓÛT¤V<ª<‘‹Vs…eM_[˜\a|ºP9Øe20œ dŽºQímuïüWè!„íÅ ™+´2 n“8áU›åúÿ8Ø*lqÂg@”fÀ 38hVråµÝCóÀà6²§‘’ì S…`:v"2ÊÃûwª†’šOÞÿié9ëïŒ_:u¹m˜ÁzÂSk¢¬ÜFdë÷›„‰FìêÅßzñN‘q†°–ÆåèwLÓá)CS*·–Å“oDWM%÷e¼µyTÄËZšBÆÏn Ø nßLÉ:ý ½(¶…âåÓŒzï|¶ØÐkO8XgTÒ-è‹Qã騷¯¿Y ÙEA‚2Ÿ•«GA¢–;÷°_k. È)3µ»ì!Põã[¨¿`ÊÃ>5ÒÆŸWþ¤‰`:#Ó¬zuçÊ!©¥'©¢W‘eÆ­,pÖtéj¡Cô½SK [ \êÞQ¿{qK—A^ÿ.6Ô@&ï—Öýç|ôba7£H”z¯íiº?ûؽ©i©¨äAjG]tÜP¾7»nB¸þ9QïiP¸DAÄÛ9UWKÆÅöûxóxØc4ÀìÀm®¬ Žc jøÇð›Ýdûm)Æ ÑAìž°²;§ð ¨—[ªûªñç"`GúdÁl9€§gÇÜ9.ºÈ|ÆßÉ}DùU9ýp0Xμ? ˆÂN&ï¥ÄUHTISÎØ.|tèv˜¥ý´h\)׫řËâC»ÌzU„û&Æåk£5ofÑ#Àˆ„éÒ}Áÿü FûÞ{D¥‹c¯å˜Ãí¡\»J~›$Þçp¶Þoùc]ØÆýP!1; } ÜPüPâ[§P7,† 6[ü!¿„SÕ®0H ßR>þdÔºM"w6g»ó&q6_ý5|ÚÁÛ+×£–.„r‘8Ô%³•ÄOUûGÅ î6¼ZUxEœ¤ã³\ Çš,òâ¡R•PÕ]Dt2ÐÆÞD„‘î}’Öü„:ǘ&Éa_ ¤²zÈb^=Nxƹ0pôI}FÒ†Îï»qåpéíÔyÞ!ÓnåË\ Ãi•«¤8&$‰4€ÑÝÑpò²<íäê[ì*¨R$÷šg!‘‚j¿°ÄÆ‚¯v#[Ë_|´˜*ƒþ;”ÉÎ$èk„o,ÔÑ÷œ µ.Íoµ‹„ mîxü„±½aÅ&G\0¸œÇ¬¼óŒÄ¡s©­S¡ æ‘î¼>n»üˆ{€ø–`ÀØj"¾YA b÷¥}68EÏH ’Ï#öÔ ¶ žDš,}kÊF£¦§EÜu-ÿ¤ã´0qÊù  éú!â[3ùhÐí)C?öôˆ‚,_/UjxIúbÕƒaƒJÆÀ!zʇÁÖ,30a~§À§aƒ'ϰ—ï%öq˜e^î÷x… »2lñÔ¶oÝó‘èWi)àE’‘·T_3Û凖±ÙÄ ‹Þ›ÑÁôV 8ú `a&¡#V}!°ßÃ¥ü[MîÊý&{zDh=ãà“_¾òø5ÝÙuïh´p^uøV×ÂiÎŽ“izÛƒ#G€aN|¥Ë>{ÒP1µ³‡8U=p°-¢ô˜'Ìðó›àÉL¯ž; Cà%ÑAqú’ íøF*Y#_€‹ûþí…Vß:k^Î3ºuô_Ÿaw¶j›Q’éç5{Yr6©í5®Ù%~æwññMh÷KW-cÏ¡/‡h˺ò¬ì嘆è8-bT´z¶ôC×Ù=$N œFÂÅTfÉM“ Nv¼“-ï|LÆlˆõ¿%°ÞrˆCïØä騲¡ûXÄ»˜Î] (⸶Z´ŸáÑ}ò»þ˜ì‚mðQaËž%æêWëàÎ{zS`'?1®B.'ÖysÅWX…2GMž›…+ÿ—Ê2F·­ðÙ• _dý2 ÆÔ{F·p…[ÏñfSÝ@Äß—j•a÷¢¤ª¢}uèÞþÈiõøü µŠ”õ—wÿ <8ÜÿjÂăÍÈk–¾×áP°«Á”WÌl `6±Rnx=h†~ÁÓ»åiB®…Þâûënÿ"ŽÈ4“®Œ ¹Q8&q‚„XQFûL°ù¢¼š:ôË@PõwÂÖ.7û <>÷·÷dÂbßÌìt®'&hž~õDÂ2MÒJ|Ä+²ÐLðu÷ ‹¹[õ>‹£þHÍ>$¤öù‘º Ño÷dÊП™¦÷Év8ÀSóH>j*F™äêåNX’Æ Ýç;"÷FÈQ¤?Ì>K0ÓÇëì‚Àz~­{ã+Ó ‘ØZ×¾ÆQq‚½–¾²ãë ¶3£fŒ+[î¼tÊæ‡4aþ_‚æÙ¥*f¦í Cÿ†Ï C÷¿Ä*¢ëÌÒÓ)”Ÿ!>¸©Ópï tçp6Ô\eõÉ{¨“a”¾¶@ï?ŠÓá»îvDò„0È¥˜å*’s<'Qµ©’>TXC¦¦–(´6±ªû­¢Þo9ÍY‘5·õ(ü¿&ü]÷ùŸÝ…®ú®9¹Åøuš¹i Öæ¿¯Ã¼†>©Ì=«6_кV'ñjàÑ¢¿×Ÿ;p¨£G±t™-¸ÕB¾Æ1È ó¶ó¦_ÇÉÝÉV<à.À‹Y?t‡Ë9 áe[µýáC㚎Y©I £%m2´yŠ[J ²Àî´Ç^·³§¦ÔGÚï¶% ºÁjR®·N³XC} ë¹à1 Å“ºÀœ©–&âuwÓ J¢"VÚ¬ñ¹Ïãt@<]ÎúKúº!mtïœ2^X ÓÉï‚l,«ë‡zà‚ˇ4@Äd?ÿ¡Iš\~ÝBuÝW5ne;N¡{²k»á”4è×IRth©¨ósÑ`Ý(Ml¶s6§¡ŒÃìÆ4’–+h_xäç–Ñî/#²Çû³yÕÂÙIñÏ|ÙþדgNÄN80¾Âω; =¤·=fF ¦¼Šù”óþà‚Šzà åù«ò´Ë… ˆ7i8© À5 ¥ôžU_"Œ£·Å"Ù1‹êÐ\Õx&±˜ "šx@U·yýšc0c€[O'ÙSÊVÍN+*6®S‚2Á9f d¦~›€ Eœ‹°ë‡Ž?=W>=ÿ¤ö¹Ù¤Àn&‡ïžÌ‹îº$ÒŸ}8êÓªƒøôøZ3!š9%`FÀ=>ŠNÈ¿µmKÎð¥JNì¤iµ¶íÇ®ó0†˜wˆÄäå_áHiëx·ØàéÎìÞ¢ê¤ÑCRžü²W.ÔîxÒ¤Éûi|ȬÈB¸ï­ƒôB¹œÉnøBÝ1ýÍ\,í:ic »Ct}Iˆ:`‹Ü‰òT½³Æ ÂsÌ6#@t‚:J'\ˆ€ªÊY<§âj^§Ë/§™]±. #’RÊÝþÞî ­ <šÄ?[ ù¶uƒ÷ånÛá‰ñ  õ¤»ŽŽ·À¤­W¬ü -¥¡¦O¦‹²ÿ º{ÿ´|ÚpL™ ’ñÃŒ¶þÄË4܇J3÷X`n^u.A 'ù|PŽè­3MŽe×ÂÏ¥¬@Ôˆø+KZîqvxÀÍ,¾(k!êï­‡«Úü¯ØÇ$¸•.àËoª&x} èuJQœ [Þ§©·ÿç³:(hÊßò/°Çò-™SÃìèÝÉT§uYxa¤©Ž6f!׳'nA'ç@¥=ðˆïÌHÝpÓÕœ½\W"ø™M‹Ê ¾Í"}ïÂÓx´ûIhq)B¦ÒÃÒj†]ò+©.•1{ìh’‹š—H7Âušu$a}b€)$öì…ÅÔ%Ÿ{` endstream endobj 322 0 obj << /Length1 2160 /Length2 22952 /Length3 0 /Length 24233 /Filter /FlateDecode >> stream xÚ´weX›Û¶5^Ü]ƒ[qwwwŠ Np—âîîNâîîPÜÝ).ÅŠ>ºÏ½gïsîïïÉ“¼SÇšk®¹JRe5S;c ¤È™…‘™ ¯ frbafP2¶±tpX™™Ùá))ÅFΖv q#g /€ËÙ dâüîê`efæ§HA@Çw¥)ÀØ t6R÷°²hŒþÊvNÎ ÆFNïj Èܤ}w³³÷p´4·pþƒáO¤?Þ¢ŒY#k;7'kK€È ˨ÀP´s{Zhì@c …‘ÀÎ  Ôh¨I¨ª¤T•4”Õhß«¹ØÛÛ9þ15u ©qEu Pó#@JCMýϧ:ôÎßü#@Qý]ÿ'Ï»áw uõOÊ,LÖ`¸,ÿ¤ý/nTïÌS{w5s´³ý+€ÆÂÙÙž—‰ÉÍÍÑÜÅÉ™ÑÎÑœÑÞæ/~ê–N7;GkÀûÓhü«0. Ó÷r:[ÿàϦä-M€ 'à'I»)mßKùîô.wþ7±÷B8ÿ‰ió/s€øi,Œœþò•WV–ØY‚œ #É»¡³‘³‹Àð/ÙûhJý/‚@€˜‹£ãŸ ÿ«rüwšÿ¥.j÷¾2=/#·ÿÞ1#‹“ç?jóŸË6±9Y:9;ý+"`fiüÃÞéÏžY‚þ’)ˆ(ÊHJ¨©3È¿7ˆAÁî½: Fgw翬ÿÄ—çp3sXxØÌïM*2³³µ}gíÿ§|â–ïur¶sô`ú?}m ²syý_¹™%ÈÔìOåM]ì™4@d2âÿcý.‚ÿ[ft0€ »‰ÓŸtuË1Ëñ{|¼ìíìfF6N@K3àûÞËÉÈpvtúxýSñŸž… `jiâüÞèï‡þ¯è2 3;Ï¿ÄïLþWõ?-@ó×A¥}?¥¦v €)Ð žIÑÎù½!hþÿœ³ÿÊ%ébc£hd ¤ùï’þ·‘­¥ÇXþ—…ðWE;G[#›ÿÒY:IZºM•-M,þUØÉeœÞ{_dn0°°þK¨ñç@Ù¼wîûô±ü3¼ÞUìœÿ¥{oJkÐÉ ÀÎü— ø^ˆÿ¢ü^ý?„L’Ÿdµ´éÿO×üe&2±3µ™X98FŽŽFðÌï­ÀÊÁðbyïjS û_½`bÙ9¿»ì]œ}fvŽðö““À$òGô/Ä `ýq˜ÄþFÜ&ñ#.“Ô߈À$ý7z÷Sø½û)þq3˜”ÿFï~ª#6“Ú¿Ï{£¿Ñ{ã¿€Éä߈…ù=¨é?à;7à?à{³CŽ?ÈÎÅñú÷´æÿ€ì&‹Cö÷úXxØ[Aÿ°x—Yþ¾S³ù|çfû7dyçö_–wnvG·µýƒë{1Ùÿ­~ß{ £¥Ý?ÇòÎÖáðí?ÖÂòNÍéð=€ó?à{I]þß³»ý Yß™ºÿÿ³•ÿŒâ¿¦ óßù?wÔ_XÍÙÑΨeiú~?ÿÃDÁÈÙÑÒ]—ù}D°¼Ëß_ÿûMÿ?Pþ=Ýþá-*jçîÅÀÎÉ ``{/éûâù³´[ñxT±Ðórι4vLw6ï+åmBuèÏS½Žæruõk0¤#ëáu7²“¬Áj"‡_Qdy8Éà*ŸÇÎ ¦2Èßg“Y; V4ÍÔÖ3µë!Ѓ"¿¬#4Œçn1?pÞ„Ííúa“0¢Þ™âµoÑűìœzaz´u“„Žjk²RéÌ‘<ïë¿ÂÑj܈¶û7-«wÆßWè¿4º™C0®—ú¤^x{ ùGŸÀ-Á޲ ,'S-’ô P[>U#Aý¸iÛÓõ=÷$”Ñ[Áä”® 0–ÁÜ%—ÅÂL•f_xcÌé=L›CêÙ®>=:»S”‚‡žËIGÆò''äM]˜Ã_öJÉìvÐ$GÚÄCÊU@Ͱc‡W ~ÄÂãJ©Ð-º¢SO¡GÏF¢ÛØDÚ4ÆÁ²ÏݽÉ|!;â‡._þ¡÷1—ß!ÊÌž0ød(æÁáÚ›NÈ‹†ˆx®ñ½‘´8‰•*ªˆÖD¨pþë5g5ó¨J3S9 F²)žß †Á‡z§lß2Flÿ„æG¿‡*¬oÅ2 #Ž@YסsÕÂྂÌjR§-ãi‡htí« ãUw—WÉÞ ki–š'¼)æ9|jwžÌ(Ù•ÔÿÕŽ‡:#ëf‘U”sj<)ã¯èÎö83f¸:h¬šªæ>(%l p™I瓘R½Œg%ÝZC§c“ÌúÄBö!Ï·ŠA,$–œæòjF| Ãt¡Ûá?gÈÔ† @2)V “Í7€ÑMDÀüLW™¯4•˜åædQ"P pT zÍÙ=|€AmçÂ&\;©¦A>TqèÑiQúN©c½àÓ&±›(¸10Úô <} 1dš@Øñž´à"GO ž±RxrÜ’æ—tÉÇ9ÝΆèHCÚlqy³ÈY ±øEYL' Ç*ÒpöÄ绨ˆÅBןìñâ4R}mÎî],¥™¯çVŸyQ“'gò<|Þ®üÞÙß…½Ç¥Þóô¨3¾IÄ7çOÜ‘m3øûJ••‘ôÅ%ß…éðÙr‚„OuBò­ï¢ëNØ~ˉ…ƒ¬êi 93ü©ÿ‘ñû$£ry£Sï°^O¡¿‹dõw¢´zd©²ékéŒ8a7åé^} Š#¬â*BJý mQ«áˆOã¸â†‹øo¡+Å×Q»ª8xø‰ó’6䆯—¯ÈM}ö›úeÞÆ+(Ò«ºkÑàH7¶j¸ í¼åZÕy‰|пÅhÝv¯aÎ//滼×êÄàPšQ0mÄ™ÒâUã/îf)¤d¿kÄŸT©šœÌ8fô©7¼gP™9›’Ïk´Œ—?XæK¤™ z'îf‹âä?iÄ^^IëUÇûŒüxÚڌªXH‰Ô¶‚Ñô;͉Gp¢EFÁõˆ8·]F_·Ë“Eá«x9+½|Î$b²/õá&U껑{„x¨R µ`ãÁo"S^†È›×C%Í>ë„›åפÆ-ò$ÞÅß{ÀVÈø•ݾׂ=HäÊYÞÌз»WÖ~ÍämÕÛfpédúîö™ú$5V¸)±Ô© ˜ WòCŽc2Ö[<²É”3ôÄ4ZNAo¬¶Ÿ €êš¶ w““Ü}&¡§Ú®»ÑëÞÀáežgÔÀ’Y¦ýª}’S Î$•“ç‹Ç6Ûêö¶kJ ã9//Æþº*˜.¡€¦€ãyÞ¸º˜v`!µËµôEYwâbÊ£RR±óüj»”£ø ¹8Ç€_JÃ|i! 0Нìâdz¥ºb}[ö? :ö;/i†⪅æ4§CPÖI‡Ê: V Û.cMRçÖÔEn?>°B¿šÀµ˜å±¢k–îñ ¦ç–|rñ¸S¹’@ÁÝŠé U ߦ]­Ì‹ú6"Û(J¬+™Ú‡™8÷Û GéƒØ‘ ö(á¶e7lÑk˜ ëýnä@ý ZèH:çþØXö0J°ÈÞ£^¦ç`Q<±’0Ö¢MúÖôŸûÂ8µˆI3§c$]è 9öœJoð~£+-M$Š”k ÓŠ$7„›îÞã(~EÃ`»C柡d›»ïÎ{Æh ¼´K¶vŒïXÍ|¿CkŒKb^€»nøHëM¬æe%öD §®n¦T+Jˆ\¬‹¤®GÞY»jù‰Ý•”.Íu|·íkÄlã™T®äJéns |·I¾ÞÌc/»„ÎçI¼Šçˆ|sãÂRšÄ+Y©¼a—à xu%_Nf*¼­x“³”|îÂíÉŠªñ‰Ž »Ô¯Æb±¿WÛóx€©YPÇ3Œ,±„v¨>Å5ªø;ÐTHud>ˆPW–Äû ›#3Q¨kXß„¡J8ØãpÑ Y6²½¬ýè¢âCY‘Ï“(¼æÕ”èᘠÙJШÙÎ?Á,®¨ß,¡n–Àâ™oìé“=ÑHÅŒ–lœs®`°óQ£?¾j]¦ã5>š /•çW‘¹0ï.œš¦¼õß2%¥É ¥ãçþlÔedt ¡Wœ‡ÂBzƒã™ô›álqúЧ€KsÇK… û¶°íŠÝ·2ë]âõ)—•‚bíLKø´IË5‚€|Õ‹]f¥¨€„õ6Á8!ŽOÎSGAöKRôÀ& ˆ ·Ôþƒ_G_m§¡Q:ïL§X'·âÜ“vuGqÃLâÕ¹†^Ñ:@È;8Á‚S~×Ý~6]]xï$«Cá«àºð¢w¬]×ÝÁïr›{¹G û{–ïzÖJ†¯o,¢—¬Öúƒ¦'¨°ûàÜ’£3ø¬®÷: Å)ªûp2£W³êY¾ý0«VA•=cewT»7­]£Àò×(’}#®K½'ñ¸4_áéDFÝAT«‰ãwÂK±MAó@ñl6·’Ñâ4l¹çû©Ç‘•lÐ`âÛeU¸l÷§£ù\²€ëWì16ôÝX¶1º‹Ú—6ëà—œï÷˽øõÄK§V”œ0ÊÝM=Nâ¼°®) 2äšën‰ôôG†1É=ۘ㶎Dv•_Uÿ´}²Çi•šÒØbÌÏ©+] eÛ2ܪ0¿ä<švÖ„÷4ÁÊ5Ð!š¾„K¦â–K–¢pèצ«Þ[È n½‡AÛ†¢Àeï5úéB³…Ý ¢ª0îËÎâ¥FÊ>ÁîxâR\$ql³ñ/—bžÃëíàÏÐ6ô¼Êkß½¯×gb5íÑ5Ãã«{ú—äÀ•xwTn8èóyš¢ð8¡“ѺwI]~³m~q Ô&«ö6šàQð–ëƒ2BâMPGUïòb²xn-I©ˆ¾…W€ñ"‡@ŽR¦¢xÇ_%ÔÁUqŒeylœZ&¨¦(0Y?©j§­/?¬RÊq@Sê‡Ñó¿ð¯LDrÔ«t .@ßz]¯ceOƒz¡AâÊK;ÏCÄd¦0F% ô‹KEwW”Ê!8ÿC.F™%lÌv3ƒ`ˆn(?4Ñ‹é.¬%š¥eŽJ¾,œÑIÍ´)VºútÛãWIk6¼rŠ'Û¯ú!£j‘9¬†§þ2¶B;¿7e3'6}nžƒŸóuˆPí_K=gù6P'ÑAŠêîù™Œ Ï3R5R-–N”jvÊf0œV÷È‹†²iáJ/²TAÏûÛQçá&Zà×Ê韽x»7’[ôþ؉¹–w‰ó2qß¾Gç!ªÏ‘ü’V²{«BtšÛV÷ºÎJèb1ƒä­–§ß–7䣓éé‡îmÁÎ4«éÉ„¢vðºæ•B0¬ô´»kÛo=Fq{oÏ¢pâÎd!Ò«Þë¬Âåd¼R߯q„MÛ0ÀÕÇc¥ãµlBÒ0†wA§)dÑÛw…gÇ\]¬åñÕ‘Éâ ªŸ#<_ȶ«ºÚ²Y­©L§R€` ¢59ŠÈŸ¾¼±HšW=Æ ÆrùóËu‰·vÅd„ós$¢äá5«-Y¬ƒ¤ßÅWÓ2°C›/ õ™ DÒ¨YŒúd!rC•iü‰S8ÒF|ÇDƒíú ›„e0byHáÛòZ !w=4Vâùɤ†Ið_úéÕUÎ^JN£RœöÏ¥å=ºÍæLÔYg›!Xjpš›mkQnø?ý&a+Õ5²œ÷#rJBD%ãn²±Xµ¬íóß•ž_ùå—½‘:Ì­Š -`ÓÁ~2;¿G†¹ìë×ûÙ#êLó›ã« Mº‚óØ, }a Rs ·^ž¸¼4J_óÍÒ ¦ÄÊþø²M?¸TLiq'ËîoY~à¶’ÄÔ×ö;ªá•ð –«ÒF`Íy «…ÂV¹OOp—(®OWj*£è7Æ# ÉÓ 19àjÙU–k…žüºÜÙ®,j$¦¿,û0ì-"£#a ò•o• Íaƒ†—`¬`ÊLz"ã—ègàNTæbbÇHêÙ o×&¹óY{sÂðÒ½h >îé- `*ì7оQÝåУ.G®¨v=´u_âdä$—Ô• óÆÛ°XÍ_S/ÚÌ`ËÓb™OûÏ?X6Nð3¾ dìñ÷†Æ"^ì’Õ¢L– Ï%¤oìÙè,5ÚÉê#þz%M±/ÅI"%í±3WØTàzHݳ\#ŽŒh?º»¿#WKt°ÙBÜ}Á…-pÈLåx >¨[‘–»»|ÏÏ‘˜â"EÃМ¹Ù…ý®&äÛ(ãˆ[Ù—>EËô#<‰¾G \ˆÊ*Á}YænǜƆNåN¹I3f90}TÖÁø ì~û35Ÿ~K² ‹þŒÁLçZ›ÓWYQìÀYE1+ûšÞ^‘ ™ÊŸŸ${ÐüüKxø¸ÛuÍ{—¯ˆ„Ö(©uNß±7•0àT(aûƲ¥ 3†ùXöx·3ß‚jüûš0mIåÝ@'šýLÄ#ÜÕrg"·ë£Íµ1„zƒàÀ›'·pštøÊå˺£x— áôë~é°ìȬm[ýîBe„¶Ï.3¬[¶@‘Bv££–‰ê¹=6KlÃëÁLß5K+T,çþãî—º<v›X´ôŠï-c»öÚO†ˆ1?Òë”>p¡9Ì|ö¥ wE·ÜTTTŠ'¶CN›.“I9ñ­˜šc2G”˜Q?º"ü,JTÒê[Üö˜â2_• "O_‡KXŠue~~µLé†Ðë@³½²gB ‹v½¼y¤“¹R6¢J¾¬îUœZe,¸ÐÍÏE¬» °;ñáv´£ÃgG¸^Í•9/Ƙ™àJ¿òòEf¹ÓÜÝÆ{jS3l ð HòO}˜V¾RÏW3|‹0·óž>À¯¹4ØÂÄR]&æBmQ *’j°^‹ø²ÈÚÎŽ/xÞG’hà߆éÆÙ4Bbð†£—Xaƒ6ZëÅÐ>æÜÉAõ‡ø7ÓXu¢„w¶áO˜y'Óœ‚¨î橨j×2Eû߇Ps\ÎM²ßôë9ú¤}Ö֩׿9yd'³+Žsv ÏIפJùüê§ø>•¢ÇãyÝ|sq.F¡z+Üa$ã?IÞ°b1ˆš{ÅùL˜ñàD ëH¤2d²VBOgá1tgP²Š¬L+_î\|/'›¼¹^ƒ“{Μ@y:ËLukÆb ùí–@èqçò G\3h^ëKŒ ¸Îjp>ï´ ÝÕkŠÆ¾×êŠ+à¡Î¨1” zü ­Ššó™ÿÂu‹ªª7…¨ˆÎ­OÜG„wØÈF¤y²tf<5"p0…~»SùsN÷,2ú1\¶bÊ»ƒìáƒk%º³Àd¾Ylלø8ó†‰8e=;8I{_ñ˜ÏàpF­Þyßœo™(:ÃñŽ„t¿òFJLG6´y6-<‡Õ‘˜Š{Õg­%MN½‡îÇäuÀ¶ù…µÏ+|Ç Å¢@Kõc" _cPxá£ÄU·ŒO›­ÃE½EˬAíY¿1ΪŠ_lN[âÍgc%©ýE?=Ḛ̈_BÇ …É{£#{Ø“µ¼ÐåMÂ!~w Úí¯±Úˆ‘ߦk*$=™™õmT"Æ,¦cz¦ª¥KãɤKsÛXï"Ï­’jÇ©ûÖÑ‘(‚|ª¬…%z -–뼕“¡õIÖaF2|¯Ë¡F¶C•Yw>ëP•;Ÿdx0ï1Õ2•eYª¼ÜñÅJîåsv9`Å¨Ï …Ë.LJ9ë§ÃÀå¦nK¿^W¯¥ ¤fÕ";ßJ«~}$ Û•óÀ¤¨{uÏà úHÓÂ*®Fõjvöý;Ù± [;0Õ€"ý%OLJDÏtJV†æ[•Ä­|ø[Jœhb){ª"õÊrV‡½l¶ß"GÏg4ÃøUu´ZsîxÞÐc”cynÐM¿†5؛Ȭ&Çu2i„Ÿ•J±°Ç”4„|[”œˆŸ?ßìn„QÈ䲯ÆÁåýPOýgKÌ(;ï½ÃW|ë¶%|î®Íj ȱ3GD÷I!‘ø:çx.ðÄ"è‚óí|“çT%të ÙP¿âÛòfìLǦsÓ¿>ð;¬"aØvi£mÀùÖÀ胗ßí.‹FSD¢–g9¼†Ã/zÐöê2>\Û¼¬LKq\%8>Å7¨ó,7“„•Ϥ{ñoBÏüÊÒ•ñ’¨?ÉÊŒWýìÂWêLf*ûHK5Tzx Є•xó)Ó‹DöTøG)„Äoµˆ–j­O’¥¦îu=O>½1DZ_k%Q~ÖœVÑ Y¯U8©™=Ïr»5NŽÝzëáq€#; D·–˜\·±…l«´÷?Gêu Ð~‚H+”'ßjh¨¥µIÿ¶“׌Ûõóè*wÛneËwœ¤pÂ;× ªÝÓ££R’UäÛnöM R§«ÂwTssz‚œc°Ñ»õúyøt½_¡ó¾ð‡ºNöáí˜ lº­Œº¼7°˜›’øÇdœ`ü•å 4Fn5Ró¼!AÏÞï¨ïJ¸S÷&¡ôäÈ ˜Iµ´¿óäê+6è¹âçvž¢¬œN yÆ_ߌÁPÒô¦+¶*x¯(ûìM½X½c'"@²;w´Yw·ÀÐ!µƒœël5Ë…ñnª‘žUóƒ®á2íZ¹ú¥, µ¨[dUN ­íÔ¶r‘ü’™]–a­@“ö,ŸÓ.þ¢åþÊzldGrL‰ “£Á`¿ÕÂ…±,…]/ <§3ÒÂï=0†R”¢%/õ½îðˆŠ‘‹0±b$žÆ}Øå¯4×»Û*Ô©a}]$_S¼R¾ÿÔ'SÖ4äø8Äp{iE2FaÆtÕä.ÈáõsRŽùà ð„{9®†(ÛêV¦ÞŸøŠÃáŠtHŽò\3kœäH?93¦|MWà—3Ð ¸WЊîn†h «Ë§â½×à7Ð ø†ß"KaaÁ;\ÑֿɆ¨àx·(ìw}½×[ƒ¨âäýwIiež€ÑØce%ý¥‰m†HØ •4=¥R&è¤\#÷Uc†àѳL~®Ý­£Ô¡@„pOê©&à†ÿ+Á`h1ÆÇ¢#&ŽÇ-…KáJé%ÛfZ윽 =ŒÃàÇ‹©öi1ßu°û­øÑ”qAA›da¹ ´˜2óÁ“’òL¶Ûa0ÁºlMæNÅiƒ¨”, /m=\úgÏû~ôÝÍŽL Þÿ.t²ù¹¬ØÄ¼@k'ΰ@ê½Alr )vÓ†éX./HmGùËé RBPë-ëÿ‚å¹~öŠf\–hJúrðdϹàDi…Kû-;ˆ°mpTÈG¥‡à6 Òç¿BfvC4f—Ä 6%³q‰ãˆŠ[t/m;»I”’¬SBÿpÚNеàxí$…IjKüÒÓ°ØÈ§ÖzTô#<¦Ê]X5YP9kqK‰.¬É:ó;æOµ¡žãÒÍ ï?ÇÅÆ¸›žØ\Æàô4ë©S>øÕc'~²°|º³ë.iÆ-a~c’±ÛÙÏh ¡Ìv±'×3«áÒQT#œÄ‡-³µ2Œ›Ð°a'” §2gúiï;+·¯âíÐóØgžz» Žd¹o’tX¶”Á$(”šõžX LÎg}X—yIEÖ¶h0 ~ªè!ÉÑý\é‡òÕ_g¼ñâ!Ðûa½~Z¦ÒDPÛGwª¢'5I þ¼k"(ÐRž;͘\Äd9C~´>"éõÜþŒ†g»S+ŠMÚº“H%F'}ó*&æFxëBÜžZr­¡#Ê×ßJµXVºýmËjòœ“ZõöʯâÿDš#Ów;;ræ·²ú¸£Myç1'”ËR1ͱÓäFZö;rñM³FU¦šÚk¿Û3¨ ®oIž’ËäÛ_íµ±ÇŠë£d‰Ò.+±T=K¾9Ë,Ú–OGî=RÔáüÒþÁì|[…Ué=*_ë¹7¸ËaÍšÇüÃÝäy|#²’#R7G§&|ÑkVåI Ì=e„Çœs¨ÕAèLòÖFÌöϧ è²›v½WÇ¡%3™,¡>=Y|eÛ# ¢qOÜu«)½õ²”KK·ðI³Mü½ªc…–å+þX‰Vç)àŸÜ”Þú…!°¼~Ö`¡0!sÜNƒ­KL˜Bïô¹q byÕÔ0Õ|0.&+Ü¢Ÿ¦°±õYÓ»O¿|!öfºƒA¶ÛjÀ?,šé…cRú9-p±Ö1;nka¾ÙÙ!l?6í€ÜßÁe.Þ“äô)Á>×ì5¡²(Ryß·§jIèëúHh¸ŠÑ'à 6ÙÏüãLÑc&PIí¯ÓmtÜÖLmØ…êËN‰“A²u’sñìóD/ŠH¤Ò½ˆmB š¯=¯L8‡ƒæ‘!Šðo%(Ú…)>»v‰§Þ¨x-ùÑ"å%)Ä>Žd¡ëî$rŸ¥DýÀö5p ɹ'R`XÙl ¿èÔuU«¾²åþîÿU¾§k|a±µ*·i*Æ«?ZY[_wfèíþiOn¾SåVWU&ÿûŒ…ƒ÷j”—`ÂÇHn\äÁä6ŸÌ6ÅÊ<­ÁÏní{‘JôÌÈ+À•“Fìt·ÂB:Oèù3ž «CÀÃÄžC×¼¿±'⤆êùBR¤8*ázúïR~¾Ý4.¼¡ûõ\}úh¸±ˆÔxèš[Kò·˜ÚŸÆÊúRçFŸ7[³ûãdñ¿´&€Àß bt7($0RvÍW•.ï"% 蕲½ ‘®óݱw©@+ñ­DL´–W­ÎD}Áž«¹/à]P´§0+ˆ¿ä¢â+q¯s `mC.Ù7,@RÅ8íþ™û®nþ& ð¯!’ß Y_¤!NÏŸä4ò°¶0"SÛÓÿbƒÉë/ÍΘ-ÆÙæÄ®ræþªðU%爦ê5~½=Ȳ¨ŸÆ%u]xñTذ‡ÕÁ:õ¹§ì;AÄ8ã±½TÕÚh“ºIöO ©O¸”0ŒAݺìHZ(GÂ;˜X½¤Qnü…C3ÞÕi&ÚMFoØ€êKä>#ÅïK×Y×¢l¸;…Y#2禡«‹•2}Y¤÷öùK5$osÕ[ëbÑ^8¥nMˆOAÅÏãý%‘ÿЇ>á¬vOO×0s}D€À:y8±šðžp¹ÌâÖhW¼ô•»_ s%qæ›ðÙ’ÓdJ ò¸€ªJ ¿)€©€Ø{T‹¢ ô’¹/…B¢,)~!vÞîRé*Žïj³3µó‰–W(ÊÅã7MûëðŸîò‰”OÞúdºòžB+ÂÍ«³{üͧ¿•¸û oŸçA ¢X‹‡’glfVL#flÚ¥uÐ4§_™9xt]TçvÄͺÙaf«m†o­oÀ­ªIÂÕ>2„–_:N›ùÿzól£Cÿ]Õ 2¹äo¦R¦º­%ÐÚ†mE—^¢* ذD[µ?1È®âHJtKíK7C–Q™:–H}ÚÉXÛ;OÕ€ÉÑ7¤åíÎð­Z‰cÁJÍÞd›^dú;0¶ðº€Y‰«ð–G|°“5çITêež‡ Põª —†¸ß>¨¯iø¨Hk*Ø+'E@äOƒà]4»Àb™¾ÒN²Ö¬ÛW꺞çP í×9f_Uöå¶êÁ” ÏŒh¤ýX Dy äþ†Þe´{8_'˜ãú!е “d–_?Ï hݼû[»(š³ç²BA˜#™ÊfeœjÜúL“¶ iõ"]d^!š˜'£U S‹I'*/îQ8;ååI’ëLã4 ì{;WËîOâ‰Ø¯‰‰æÍÈʼ?”õ„Êǹs–÷^øm´¹6ƒk¨ý(U™LÅ~&ý0´´ù^ñ3€¥ÉU6QðÚŸu¼ O´™Þ†M{6±â²içp!dVIó!R’—óN¸Ù·Ua¦r6}Ê*¹ <\Pê‹:wbEب&ÐC³qôy?Dê—JºœâíB‰KæöÃìéð/B+y¨õC÷ULúudªz¥!š÷òâUWY`º¸>¤yDdÃO‹’g8³ßfü|ÊÈ,Y×2B7ð<°‡¦æö­™±) ƒüÕ†e.‘ÏC£ŽûSÒØ¡MpŸn¬¯ì%éWûËýÖ¤ÅY>äguC´ ò<®´æQÂQ†÷>Ó @YÃw¡©cžJªÆ’_ÓW^DöpÄøÖèÒÑ…z§tgɺ¬!µ=r¯@5¿µG¨eè¸Ûªâ[þH€ >ŽqÖé°õx,ìb+Ë£ù|×¶o‚+Ú¿W¡[]ÈöÑWyý‹¸Ì‚"ef[‰©-kny.—7Œ§·yðÙöe N¢7ÃQpM¿ý3ªŒ$±÷N6U‰„9UÜ‘ÙñÖBkÍô¢æeì‚øx1^·p¾ˆ.l6,uÉs¦qÒv<ü~-ÉD0Zw‘ø¼gXŠÁ¸uãµ8}œ'´jx£!³¹…_£{TNxpj…òÈÛºYÞJz"–¾7ßDR™÷h["O ðc³,¯ª¦Ý›·)zÚl~’q/ùóƒÍ¦Ú¼éÎ~š-)_¿È³aä|K –¢ ¥‘¯’ü½¥·}Wð YNŸÂÝKµ:¯Àz< .bÌ&?é~Æ…-K…ð¦ÜÚw­ŽëÜÙsä-ÈŠv{ ˜Þ»PA¡«ÂþƒÇ—Mß áâ‹í Šôé®Cçøi÷rHÇM:_dn†\x"}zÀÈü3Ñ1Û¾¥‰575 í@¦Ûªær¿DÆe¢fRΜђ ÑH”y­‚5JŠp÷K-i¤*éâ—õ5ÜxqÏ Ígœ»ÇÂx)¸þ|4g ðÊß«ZhS n£š$œ¥„Sq‰<­Ò5¬é2öշر5x%n¯†Ô—Ë‚zˆ·}¤ð›KâWf&Ky "GóþhS|‘gñi /Š<˜xjaÅÕy虃(zÂFÁð’1›'…†ž ÖΜ£=/ ­°¤Ä„´¸Óú«^ ©LPpû`èíM¿@ Šq,È…$ü§5¹^íœ{bw ¿¨>T²¨¢¬ÆB<U`{;ù={HN½"ëÈd2Ò¹¥b0¦»õq`óÖn>?ðôƒ’á«ð¨ÆE¡€L3ÎJ%ü $Ï—¾a‘¯ÞmgàQ‚1ý—ërUƒ×Ëôa¶kA¥øf/²í6ú=n£ˆj^éaÚƒ½R®)û×p·d·°)2ÜB݉P&3Ï iéð63ÊÃpí{ F¶ðø½ÜéE˜ßNWm®Êé¥ÖKGZrü»…¾í0öPηE‚ÁönŸNè:­_–“Õ½ƒÂÁ7 aŒ¿¡‹©Çìó¦(£]¹©MO*ÎV¥9]¿8 ·§CöÓl¸ÔA–ÔÈ^5r YK—Kà×, C"m?Zü;Þæ¢I–¡'&½‹RÃIEí§ãhŠºÇ'ÙÃ% ¦u±76;ôöŠœðã“Ï™SþŽr%óý±×_BlÏöL†­…í¹Ja¦#E´ÝÖùGÔèÇš{IM|’4bíéAetEq¼OUòG*å ¹™çØW`:bù§ºyb„ñ¡i4X’§èK¢å¸n¢x"u­¬w}žH„Œ˜“>‰`oŸÆ{¬1×X6OÛiÙºØÏÖñøèf—:ôòk÷àÍÂHFñ•î¯ËKGEÔñ¶›yâ%Ú<Á[ÜÔÅJϼTëLÀ^ôÜÀÈúóèC×?~T»4G(¬ÝÄ`"¸^ ³ì^ÝÙø=PtVIÜNRfÄ0—åê~Ù±D¼áûvö6"(b!éIV÷þ»Â½rrc­ïÊE7B¿ÂXñí°öX‰¨±Þ8†ÂûÕ†ÃÇ_"ÿe|'ÏùÇLXJ­nƒU%XIX*)ój¬÷²¾”pŽ6ýcÝÆ¦t;ÖÐØÅÉ(Y åoK•ðZëÃ?ºÞ½–«c¿Í\\,0ï£ì .]Gûu2¸bÃü¾8¤Äáe1ö¡¦æ;ÂÌz‹@[`ÚïHµÌõ<:xBfíòkTóL\¶ù¼4V’=è7ù-´‚K¡»3¶8‹´¨$k¹ìƒc%Rãp·—÷1*ÌŸ²–]=†7bA}RË Ê^±¼4OãWÁž »¬gÎÈÏ "³BAwѤü—+!yÚŠˆ¨ú G ¹9è_‹>†«³¤<LJ%Íödqœ ØÜwê]c)ú»h»ÇØÐðÛ†ðO2©wÓƒÇ1ìŸZ÷Κ>ä 'Ú[˜ïe!ãk6}G07™„øJÝlµ’oõ¢5¼PCÞ#UØ© x§Ï¸|É@ƒåÏΑ Ûdc>ö³?—8nŽ­XUrÔßQ’,^[𠹌?¶ËQeºÚaÂ]ßÃÁï ®­¹” 'À'8pºÓgÅ@5 ùScÖïs\ðÊ·aòúà@ÒõÕÒÈåöña†É&«©ïÀ§sw´ºé $7ÿ÷ªˆÄ¤"{x5¡Ýk‰8cëv4ö/ÚXÛo-d»¥!ÈÐN J}ÿÀXþñõWs`«*Måíc…+)XFÃv ¡m•¹Qï|Ò–¿ìbûÞ§ÜÌR fùÆbj$‹#¯o@Ju÷^x^nnLr¯¢áøñ`U}2 G1;Âû}¥çª.¢5Çæ¤ÀM E!ÿ.bê7ö¦ õPJï7•G÷¼4°|ÑÕ¾/Xq…e*¨Iͳk­M.yÓø‚†kŒ§ˆPèón'g~I•c]ùîc:!Y‡QvŸfK€aÄ´í~@û.…ÎdÚ.7þˆÖþ¼$ˆMº¯€5Úd¨%KQî•̾;«ÈŽy¹Sl„ ÄßµHGñºSÝýüä蜣ñÜ£ôm¨ØÒSéaKwWL÷ƒW\ÊÀy Èl8—ˆ} æ'&êêëùlƒÛöžc?wøN#œ&Ó‚C.ÏÔ("Ò izîg²·4EpG0ù ‚Brù<Ÿ“›í8“kê» b  Ê!'¾ÃZw\¢U›ÍZg ¡*ì ñÃO~#€ð(qFÄ\eò²SÛdM „;Iv¨‡ÏuÞm¤¦~h_K#¸taHëÚì¤æ:ö9Âjc/™Õd²n_¨ —G‡‡_ŸªƒÜsÀôäæ…>ZiJ1ö¬„\¦²•£ÒJ|ãujOŒ½&Kȉ’ŒN¥UüøU4žsW0¹™eqC¾ßæfÁ‚‰8¶Û¦L%G ç;—‘ßñ{ÕOjÆ}£í~;ƒâÂâ›ÎâŒÐKî£M„_hð¹d@?sì$xõq«VIù©Ïk&WÖ+ž e0ôÐ`:Ú<Ê#*ãÊSôŒvrÇv;X`xÜ¢vÌŠ WË /è´E­YnÕ¢cDÍÚ$™°e^€-¥ïrÑÂkã. íV¿6v:‚±™ö Hϣ͈u‰!JùRJ®å±ó„{ Éò¿‰MsW|?]«=+ã¹’“Ò)EWæê~¡èÛQSèP¬áN¹ù¸C?÷ênF¦¯,L(”q;”ÔK±×î–4[QŠÇv3šÀwao‰_`œ1?ôúµ8Þ@® ’ë›ùj‹vÁõó¼0†«=¾°¦í1êý•A—¶è±B—P<Éòzÿïæ“»;u‚)xã‡VÆô­‡5:«·ë¥û) H ý‡’vQ|oR5â**Ô™o$Ë“²R ¾0°ƒ'¹"(—âÇ´¤3eÃ=X³ê+Œ%œ3ÒèoŽ,ד„0ý+:B'ˆÈȳU$¥"‘•¹b ƒéMÌœ$š/Önd‘Œ{¤+nŠ®âõªT·&ÑB¸õü”ËkÝ謬#"W{Û:Ù_ÖVb¿’°¤zɾ·FO#lð95©ì¾"Ò)¬ ÀxxÔ»¦Li{Ð…ò}nZ÷^Å+4þté`FjŠŸ¶|õ |$•&@óþJ~„†øv“Þ¯i±Íµõ¦ö§i•zÑa­v–°ð¥ÜΧ;|}AAøÚ¡ˆM<´r‰_/] 厲fgYýbÊG VP{&ºG'l¦²¥|f}Ô<¸}fÉÙÐÄnù 3U…1¨¿to`ûpÛóŠÇFв ‡ê5Fž*B‡Å'm•öG ´¤MþºÈw—ÜýÍC*èr ÿ}¦ Vüùg_Cmˆ9 u»7—6n¸ð¯L½/lI1f€ÅK¨“ ã“ &”½å R$-4¹ÅµF*4¾îïz K$¶rŒºª†Bâµ&‚ÎfŽ(qÞÁËBÊ 7FBSÍ•Ø8‘·]j”—"8ESR©-£HUzI3­Ã^:?2ö$ d’Þæ•ì‘Kák¢ü P G]÷¡xŸ4†Êsp“·9Û€›XÝ–pŽr‹ù\ ú ”G»‚´Ë#ƒ7i‹¬£I¬ 3D&„J½µš¹ íÂ"¨í¥ÙŸ†¯X¶éŠÀ÷ü÷spÎ{‚«B@ζ5E­â\›rª[muW³D.ûa©Y©¶ÃiP–Jšs–4×0|CA~„!½Å٦Ѣ1º»ºXÕÐß°!IQQƒ¾~•ü|™AÝ1êêZ"Y¶ÈJ&ÒÅ0® Káhg3,-;Kë†* !„š— ¨®¶,¯0Éü`—Løb¼7e‡­›èóÏöѕ嘩H§èÊOÝ ÝTeS5‡B…´Ýþ3 q–ù¶øìøc`Ù4XÛt¨9'Cÿ±{_YϹÓrÚÊ´Ú¡Ó&zÆiøä®s@ûˆ[)Û –ˆ‰  Ñ𳬟õo“Ÿ³¶íG,6£X¥í#ÄL@lº¢Ëwo1¢Ixå•AcXú®Öý­ƒQZ·jyØ-`›é=¿KX²îƒw“/Ɇ‰VÎÞ7YÙ8½;Èq"±ÔHþ#Z·µÀ¸ZÓâë/JA¶°ÑWªñžX4Ö©Ö<ÛáeLXZø8X¼Mçq3†íñoç's­‚lékš$ž ÌË Ö}š°™'ºrÌÆå{Œ»ÓÁW—*°õsâ~uñפ2מÕ\œy%¸µ÷7¼´”Ë;ž§‰ïˆA~¸.EÈ' ±é×쮊ø–Ýc{Ƈƒ¨‘ÏBÑ4kß„ËÒâ £u®„&Ém"ï”à‹:›œöõ¹n½8)‘€Íš›A~oÔy3Jó‘vuGê•òqÂç•,å¤OZuä°Õà*~ØgV¨&÷ì| ×M¾€6çM<·:{£q+ç,ç2ÊQµÌEªÄ+xTûm19‚d¯¡ÏG ÇD5îîÆì:hÜy²ð­Àø!oqÖ s-ó©ÚìŸoÝÛ¦‡<…nì¹'[uAÜÑ®†(M}—xv™¹ÚD½WÂm?)žõPŠ?"„ÿöĤ2W£ùò /¦‰ê¸ˆpÝú~¸ö…aׇæšn÷8P¤[kß-ÍÓPT¦?ê|–ßZ[®T}Añu€zª@‹œâÏŽ5 U?ñ{cEô¹1Ù䟟š©Í ƒñc «a³ž+öÇ /yærí°ü” ‚9áœx×çíüe©r¼÷~ˆ»ŒÉÉòyÜ4°÷E*N{€Lɹî$Ý»Jîì-áY$`ˆQ1g8ŸSöEn{K¼µŸ åuÇ K•l/}Y“8×ñNÔÁúWY¨$ö=‘¬ù%!å*×ï_©R¤\-é;ÀTÙTLý¤^èuÚ!#ÒC{=ÂúDF„{l~BW "*8WûÅ9ª¸3ñøia9ÎxPJÍ-TæGÁjÚuüˆFb'ݳùÍ#„¾ÁÕy¾·ú9Š“±®šo‡ò—“]Âþ!MÜéVœ±\yâF+Òõ²º¦Ê‰ÊoÓ¹‹“…jùᾚpç<Œ¡^s8°þ:ëvÖ‡–"MÇ;{›wKÑ¥íôxYùèk™å¦ ê$™œ دÛ{<î‰Ö½¥)Rp¦oåŸi¸ö°Õ½fž »lŒa‘údçO'˜rÄrç.<è)¡#EÅj=¨åßÈ]qLÀÈË63?ކÞËÚ=G± ¤~è÷ V4ÃI¶‹¥yàðÚ#íåâÃά“x+ÈáPÿ ®i;ºÞ}‡ôSn/&è4ÕǬ£[.Á#àøÚ1²“Ò9²ÙÚ~kf­?csíL²B=Ðîýì¨7ø3²zæXþ7/m•§ýw°ÀÑà§²Y.ÝíÚ4ˆ§úª¡  ‰«¯7`1œÚÈŸCÝ,ma;o<3b˜xûZèüÅy©ß‘6ìÅÖzáý¯¯i³§TLNZ|ýQü»ûÚ½ïO÷È`ó^9.-|pxÏk]t Ev_¨ý¾ƒ ´O´Ÿ—6ísÓ3ý]”ÛÖÍøU¼îfê-WÅ»+Ë2x #Ä*|z}®²Ci\(½Ã|ÊE®ÞÛò>¼µ²KÛXƒ?_ûà.ÏÇýõΊ2þWǸÏ, iíç¶AZj3¢¯%}‡ƒµL5ê%»iQ`pw™-¾ùþ_¶(×ë¼O̱~*áÑÍ~Ã\äIÔÙ[ü±îCž“o½Èï½ Cv>œ#Ô=.‹{¹é’\µ~ÀŽköý× åùF¦¼Äºý]„=&Å×ù%Å>êS5Õ4’…ùÑü6 Ýý_qm¡ ¤«x«S_Óš<ñ¨)ºªqLiÆŒ·šEéR#"ʬÔ/ ‹5vë2BÓŸúUCó¤ðaGæ­_²²¡B½¨/i¸¸¼‹^塳Ï~üyÆ€°„TË×R_"*€Zbk.Æ>ð¥ex!arŒÉÿ°”3Ô¯à(§KT_¹”~ô_Éùõ²¦Üʲï1+î×ÍJò‰ÿi{Y¸J:‡ŽqÏý>5¿¨VWlÊäãCG†¬•ÇQ<}6ÛCǶQš‚¡mož]¦iR×(¥daU‚I •üÛ™I!…Aµy$7êw,,R'{9l2R¬8•í:‘&Ì!‰xªTpÒšk ÝE ¨Œn¤pe›ê’³E ›M4hTf‘#[ÆeCi÷}Íì2ÖÆS‰̱å)Kx4øÿÚ8§¶J ‡'ÛS“mÛnÒd»‰“mÛngÛ¶½ÃdO¶w>wçêûë}Ö»Óå½mÈhL—,1^ñŽÉêßdR§-Iÿj§ÖšE¯3ûŠÚìç³ßüÀ=Dê'˜~ ÇWi8Աܠ&$·â´Oî&E)&Ïž7šfâ¥9MDZŽû‡OQÉ m(’ \NÏ¢m,ÎÕ~:žöq”{Qן?ƒÂܽ٠W%Å3zƒ¯…¢!Ü+ÔOÜ-3ý7¢M©¨R6‰¥`Voã©2¼¼!P¾LõÆuF `N]Ë’,>'Ò¨N;õÖó;™¹ÂaGõé—„Ͼ¶îi7§Z´Ê%ù#Zv©ƒ;¢W릚¾È®dZ?ì GCš uÓ³E¾Ér’7è°VâóÎÓ8CØ69u"½ëF£U«™\S“ÒÛ1 œýþEWùIt,9¢Êf¾«ÀƒJ‹ÛïE+'=ûè AÝ<¼HÇO/n( £ÃHßµøé†XŽ¢ÿ06ýS¸× "!Á+à»Ó¨S-áÝaD6猰½=/å8àÈ<çmáØk¦C¿þêÁ ¡PÜ-]“¢øÒ’Ž ~Ç0…q%Ut¬^ºþÐFGŽöÙæ“ŸÄÌœ˜¡V¼(Œ•)ëü´{œûnâK»¾D$ãpU—ÏAØ+@i ¡©J¡µ—§NîÄQÅß Èk=$¦no=™¾ÚT ùq è\Í×›~ú‚šjgw˜lZó㽕DW'þ5Qœ’ñ‡“(ª9A ¯â‰õ€Øäí”CevÛ L¨Œ‹|c“÷uî<ƒ€±Ò­:ûÀÔ©ös5çœ!2·Ò\ŸL6"ž7‰_ SBpœªã!O0UÈ_½Ö …ÉÂÃ,ëxzG„‡¬$Õ Q¨ØŽ¢ŸÀtå©\æ{¥ÃÔSq?gZ}þÅ ’è³ßCÒ6HÇ.7Œ¬Š5®\ÓiZéø2¨fËú2ÝKtŒi¶§ÉÎÀoðwó¼€ëÍ”–òÐC©ړÆL ²¬E ¡OBÎÿÉf«~ìœæÁ_ @Ž3ÃWn[ÈxU°Æ9m:±±óÐ(²+ë6lp'!l(E¬»™ú+Ó¹lB"¸ççF þ fè2^ŒÝ‹Û?ñ¸Fg“þXãlv¼.ööß›#ayÑEðçØþõàbZ.±ä•Ìñ9âòūƢ–WSqè×Èsc_oêqYFokÒ²v(cD¤§²­z Qƒ ØÔ5f—ß2Oëq\ÒB_ÂÏ ŸWs‘xi8 UïŸÐwôèÌòŽ„ò2Þlë¡b!ø›.‡Ì- €`®²5ÏõE¨¡¼ñcþºk{åË›²Œg{Òßœýœ56h9oð¨JÛýZ÷ƒñ÷”(.ÿ•µŽ\úf¨bÌ^ê]ùUà‡È§î“ ®ç)Iþ½[)ƒ5®FÖÎî–ÙÊÊê;Êå{#Iæb‚i磄¿¬×°ÝÙ&†Çfš¹»Óz>4auÉ‹7GW¬xfÞn†¯Å{¿sGŨæÂÍ>®',öeËC’ T8´ê§˜'Ù=L–s¶ëaBË@ÙÕ^¸b‰µEó“@C®AXþBÊ$Ìó°ï•ÚÒ Q4®žÁøw¹åiw„©´Ñ zðA¡þ^ÍîýPCy«ÂÍŽŸÐ±)] >hç}:cš„pý§ jZë°È;œO‡ƒN$¨¨‡¦è“}Gåv§n ’ó\üÄ.2¾5#ê¨âŒ ËÕ„ÁTW$Oq@ q„”ÔÍX›‘𖟨®µuï£ö¤ŸÇðƒ2¡Ñ‘æðáëÇß d=uX¬­2êKÅgnŒìv„ãÎV‹š] V#vÎ_ïÆã™‚ø'zÛ+´x8©&å¤â{gi—6ÔIîŸçÝØÌ×ÞˆÜhï߈| ÿ€©ŸŸób&ÍÌÂé3»ýÒôGE‡‘a#ò>¼T¡-Þ.7’Mä‘…µ–<&™¨Û´Ø¥š|­êÏ€rlWyÅh÷\kEö;—¤ÜP|cMû<éú'Éœ¤¥97 óv²ÈU®¾éƒD”TbHü¬œÌɺ´·° W|”‹»]^X¢{(eÌÔF?)ãŸy®OÔÛj½+‚JF^³yrÑF'nó»~õ Òl2ª¦-nr%袒N`§i¸0< -˜uû‚@48&e*tûiDu Eš™¬kWÃM¿ ¹:DVÌ/ë’Œq>sl –ØäÒPX0 {˜Aœ ›Çè·"×éëo'–˜!Öð›V¬j˜šæ7‰Gÿ~Ùªù¦W¢P1ÏÌ[ˆä5ŸE”ÿó‡€ÌRK‡º]D-åßÓˆÞü jkíAˆ¼¡1Ã3âÎ~k©þ[÷vº‰ËA°hî\‰œ&¦ÞÞ•`”mŒ ^ÑÌü £jJ°óAÊü¿Ÿ!ê ý‚*ñª…‚F*,Lv´= µ*é¬vl`¤îÌTÿA‡tÈ÷ P*:ì£æNJ°>¾î›Kº uN·ÿ²W´ƒR‹'?ÕïàÏXkÇÑÜæ‡©V¼¬²³nÛsµó{ù’ØüvÊÞ<‡BáxÆ–ÐG…ûà1(à'ëJ?0Û­ ©eîý˜™íAB(à ŸÑ€Üâ]hA~š;³UföTeå1‘ÿi(ô%û—«ïúŠŒö‹Gç½²íÊ£<ß3ì!™:x€²Ÿ¢ñõ,`«Ø¿¥YóRJšE3†ð쩃2Í%ª†–ѽZï¥7-¼­‰”½ÅÓäà³5ÉYïª@ˆ*›T,~KA¼,öRרµÔ‘ïÙðÙ‰|³‡š‹ÿ˜•&Lx(— åö¿ƒ/ºgM¥¢n tÝ@„9d‡Å¨)¦Ù‰Ê$ÕÖøX´»ú·n(‘È+Wö©-"ëÊ¡dfg)xàx‘1Æ%ð9íK$°}ÝÇxôøÜ·Ñ‚bè*cÍ1œ5£œrt©‡7z×Tª>w‚P ³Is{ä÷ó¬só$ÚJO³f37°$õn|CbàJ(ÐÉ:*ÉŒC—®÷Ldú„þcûÚìû彈)Òw¹µo•Ïù©ÚÒhÏ]¦Ä9¦ZóyìeE4D"³H—nã›À¯p~ *ßëïfh°G‹)ñJSÙ~5g´³žšcêáNŸÓg XV½÷H9)‘hãÆf¶Þ0î"M¦]ÎÆÇ•IÑ¿ ÿ˜6›ùëKvûÚϾÐð= ¡­ÝÞ¦½º s±Ýò‚àŸu‘üî®B7!×ÃÕ6 lDy¶ZøP2E¹÷¬e³Î=fß„ú)¬ŠÐQšÂ$Þë-YçÛª•r ªÒ[åóÑ>1‹/“Šù÷12U˜€qÓÚŽ;;”ÆÌ¼_ú牴>QcX _@YbORý°‰!‹Þë(ÙÃ~±Š‘¬üî/:[DëÕ‚V&î†W‡ d ‘ˆ®l'8É3Ëx­6m¥»wL’¡Sëò"lF}ª¨Ÿ³®A– ™“u ŠF,öLjÓ·ðl¦>Àöt¨$ï9¤ý›}ÑgÁÁµƒXºÒÛªÎã‡R\ß¥ã”ø¬\zn奇øùPý®èÊÿèØtŨžÊÌnOõÆàñJÁµ Ã1›&zeÓnÆay õ}t±¬œ`%~Æ‚-^Öwg?½º—56÷=ze°„Ë!g“}µ:[÷у×!œ”õ<ãq*æ,—›†û\*\N˜X~Kk)[Æì}F:µªM¿ &û‡>^‡ÅwSHÛ@US¹Ó®FnÊ/‡Ó?¼„á°‹¿(p»«ÍCÖsä~ž{ø0_ß-L}•ùF­èK\ÌØ¼YÞ¡%Ýÿ@ÐÌd™=g„þpC9¹SÍ:4k†’-‘;-ÃÊ­‡rÕ©ô@†»ø\ι ©N•6l"#üŒ åpRTü=¤ñ*+ù“ÊaÏ™ªþIªxwOjÅ›;ªæ/¯Ÿõ£õο«SJг…C—{öÿGÄ‘Ovõ+ÇçoÚÑIx¼Äõ V„a9c”ËX©Â¢ãèÔq£×ÃÔ¾:€P›»ðXýøÀ7»:íä¯6'?Vîöäý>Ú€õ“©j %'_2Ó¼7x®ô³¶i/}v8_ùžÖ[ßÎlÓ¬cUIæÙ¡ÚËÒ'¦ç•¦>°´jÉoË bn÷Ŭ×ñ÷nÀlëN9õÔËk?”Äü¬ª«T½0¤±9òiA€Ãu`¼½ Yò6'ñ»Z5Ĥþ€Ó2¨µQUo‚†¸dšd kf~!õƒ×mLb ¹_Á>}⹤‘Éô7Õyk~ÓAÍ”£"Àµ%À†jVgïï¬sèãIÂJdá³*UAüÛ~Úƒê—\ê¤ýx¬iÖ×ttAF6Àôu8ëRU£*û冂’ L5´dúì„û>:èÚD#æä£ü°·Ì‰hÓ(s¡ý}žÞÖc3Œ‡!%\>#üÃíˆEHDÙRPLã2oŒ-Ü*ÖBßki56¹¼ =[×30j¾õ…’´þ-F~^„«ß¦Ø•ÎA1¨6g‚þœ-œë±[ø!\FDsùŽíÙ–µ]óº3Þ}¢Oç§ð»5ìIɘ¢¶àKùÚ°¿lˆžo©„>ô %MÊñ¹5½çÆ«ÂpP ®chÀÂܲ—ë&o ®n‹Æ‹mï`Ã=3ñ+*N¦ù]'ñË<<™[çO£ùW Ô‘‹÷8ÅÂÇ»vaáþ+ŸQXÁ:MVZ5´£pY«AÔku"‰âdÿ\Z&±œ!«zOß ðÑtøƒû'>‘+õaºC|Û(ª˜ÇÃÃŽc ²ž+ŒD÷ó—/ksD«1xØ ‡¹þæŠXŽ 62@1Ù¯°;´¯µ ?è²–?›ýâeF×Y^+þ41vVeÅË‹§E¢/B¿•G0©YëQm·úœÞ ’&\"á DÃ3m˜µ÷ €äùøò×M!òU °¶N‹»ÎÀÆ©{ëYðUý q.×½Y`—(ÓxvAýÌo¹X_é,ŸÉÒË@ÄÂÓ ô‹y-(1dºÉ"Iµ7Sÿ‡4È›÷ãR+jô§wZa¶fKÈÔ›…‰½6îßhjo¤@Š*iù'e~Œ]Ž#TЮªÙ7¼ÔÛ©aÎ+YèíÆNÙÏIƾBÔĽ[‘)àÂÓåð;Eï”öׇdAñÔ´…ê ÌB–U¾ªŸaésI9¿¥«" VˆÁÚu¢×KåBuŠ7›(`/;`í²S&ômœÑˆ Ä¿vðsfš®ªJ<òq ö—¡•æŽ K•ç!âSÆ=Ð-MѾøc=Ë͈虿<&"kúª8Guæ­LAÈ…u«/Y2¶HO¨DÕši‘ëTTþùü s‘F¿#6 ge³/yn8h,E‰Lß{]ª¦ùiÛ¯ucìI›íõD3_`úc²Û¼“ïeOoÉ¡h!Åœ¸äáÄÔ=^œÄVX¹$£¬¬´¼¸”ô¨¯=',7ý‡ †R`z[¶`cm,LlIðÑu›jú±hžÛxi}†[‹\vÅr…uÜDåÅ’Èeö›–ÍêÐÕ² ŒÙ5Ô‹#æÔìË`ÖÅh÷@k‚èíö²×ì Oœ[‹âd­^ä*ìüZ+%lÞCÙôîŠ,åCÈoé"§M'ö@_é€5ú_¹(,wH}ÆÁÞýÂíöâd¾ö“h ;¡¨yzZ¿–ˆãÛXvOñ¢5¶Cõ-ûè¸}:=Y;]0–ÀP«<‰È0‡•õÕþr³üµ$i,y’aal#:[ËMõÄbºèÇ5¾ÓV?JSÏrSKßYŠùwÕS²oQÖ?þYáϬÐùI9&¸ë­KoyF ÊDirvúþ¼±ásÕ+v®iáµê­4a¨Œ¢n2¦¶¨ïAZìš3ÐüÒßèp¼=£1®ýé(·JD*VW>˜éUBIp3½Éc‰0ï,~X÷¢(þ“ía¯lQù¡õ&' ' c;]5¸,Þc”S"ÃÀ(©H.GX¥— ýxCåb¢¸¡ƒŽIFSxŽ Äa²×‡KÉ ;\ýWƒ‹wÇö8BÙèäá)hA ŠEo´;£¸Yñ ¢Hˆu åüc:*°–:º];ì %ÙÛÄíÚ âLÈ’§³˜'ñ3[WþѺU‘£èÊfûº¤ÓBEã;º‚3aÂðmBf‡ÈJ fz<¨0ôGïÇ¿±j)ûÈ(6pƒÇçÛEÃf¼ÁlŒyÕ¾# Óäܬ.ŸÔÁ]Mõ†I’MÊæžR,pœÌ˜vÇÍQ“….õ)ÅTø”totçÌÂ롘~xËÇJ7E‹“M(t…Áfw‰¶0ÛåÇá·½ØíË{‹¢M3Y|Ý@Cú$€¬Ý«®£þùÕó;MZ\È!z Nrƒ¾Qé-Þ)’äüoPþØïd“ötc?¬K%´üبEÓ¿bðEà;ßNówŽÊÚ(XV¶gûN@áIKʼv.Yz 9ã45kZÕÿüœ¡ɱYå3Ö_t™H¹Ží•– *m…ŒÇygR[“$£x×êÅ×È·ÂQaCÉ5+%ˆC6¬«$Ç‹RÞ¿å‘1ä»VíôDa…‰¶¬¯kÊÄŒ¡ÇwçÁ‚v¶¬Å¶Œ+F‡:/Ì¢’^‘Æ9z˜þÔø¨Ðd}=š¸­m*ºH‘ù-­u$- ù‡–m%WÍ"¦íyîäÌf&« ƒ¾Ù/Žv^Ü̾ 8!BÎ4å'ÿPàuËw6Y׿Ó]^ôÊGZaÃÖ–k=eÝðí?Å€M]¼i PÃY˜Á“Õ/d7—«@ «…÷nóÊÎÌ™pß Óïïö$ƒ•ª•Ôßpܬ€JÁÚj3ñ¯GÉ}ž‰KŒçÀ^ºlƒ°)râ®,¤QÜ=zbxa¬IíúU$`È9Š:J ;a¤åo}"ŇÅ'Ë£©²2Ñœín¦K¥êl¬ùà‰<ÓèÅK›ñî¨>ä˜\§S©VçÙæ4Ïïë3’ ·1LÑ0”V{¹—Ø›OÈ\q,ç»Q Ž˜-^Ca~­•r7g#ñ}-Õ.ÈPß00UDš¶ÔA-d¶¯¼Ôcã!Ïõt–Ïeú"Ê…°é Ê#ý4›µ‘žã-‰Zš•¥[Çk=?‹T`á½^³sÏ6ý n£`Ð7º-áæÏ«zF{Ÿõé6[“÷1/ÒéRÕ_ ,§•g‰Ç„'óÒÞ„~6‘æ}£Ù=³žAʹÕùØ¥’«Óè…|BõÜù°;”€l·Z¦µ{;£ƒø!0Î×h!JÈ›J…–ü8Þ°'–H­÷*…r>Ø2çUQåÑCq#¶ÐwÒ¼;-7±ƒmôƒ·íK”ÐÐcaìn.¹nÅ¥ƒOiáU'™oŸCU{Áe_’KïF“Îí8ï5e¤‹9“3-'çÜÀ'µ Lù#'fu»¦è2æ€ÿ\R endstream endobj 324 0 obj << /Length1 1608 /Length2 6641 /Length3 0 /Length 7457 /Filter /FlateDecode >> stream xÚ­WuTÔí¶¤»KAºK¤Kº¤c˜`t˜Áaˆ¤¤¤”–.é”.e@¤;D QBú¢ß=çÜõÝó×½çYë·ã}ö³÷³ßw­ád34T#!8JPTHD uuôp7ÂuU00àÆ)AÄɩЄQP\ ˆ‚ÈÌ!`€ˆÊÈÈqTnh$ÔÙà136çåçø—çw ÀýÈÍIw¨3Àuóá !Ü\!pÔ Äÿù  @¹@NP j`h©­¯ àÑÔ7hBà$0ôp„AA](w‡ðœHì/BÀÁÐß­¹ Ý`)»€w7zs â ‚¸ý Ü HW¨»ûÍ7êpFᨛ (óÿ&pãwBü!ä†DÜd¸ÞÄnÀ î(wê†ÜT5TÓø‹'ʈú]Ûz œn2ÁÇï–þÄn`n¢( î@A¼Q¿k9B`¨» ˆ¾©}憄þ¡áá…;ÿ‹ q"Á0ˆ»û Ì öïéü«OÀÿèèæCÿ9ø“õOP”;æ$D$*vS„º©í … ÿ^m¸ *ò—ìáö˜'ùg@<¿w†÷†Œ€ÃÐ0ĉHXº) àù¿©,ôŸù? ñDàÿˆ¼ÿ?qÿ®Ñÿ¸Äÿßûüwh Lèz³=0€›Æ  øýÆü¯\ +†þ7ÙO4‡üÅðßh£€7cP†;ßH!"$ò—ê®õ†€ ¡( À »™Ñ¿ A pÈ–Æ•ø[ÌÔ zÿ=tI™?!üwæ7òüá-l`ôÈÄÔœÿï¯éŸ,ÃÕQ¦h·bÿ݇üOã7†Š Âà+(*%‘º¹l"â™û2ÏþM½?@¢ÿ²õ€($Ô`}Ó´ˆèŸÖÿû÷/Ëöo0êpü{OLP@8øfµþéøy ‘7Šþ¹í7-ÿÃþ³äˆ7D43…É…çëdÿÇ=béâì_.ˆ™= Í,*5‰/š}mr÷¹^é½þ.°5ÿ¨H,H®ö iðîÄr¬ƒ£sÙk®‹»[—¨,À#ÌÏ,’P ,£åï{î¶3KjšôOªáñ¥øJâûŒ?)Õ,ªgNÅyz`˜1+ê9gQÉ7½ˆ]É30. ³8ðÔôƒÎW”÷+šÁ†!¢mVý1lâê‰ ñÃè n¿7ÎŒ )Ôúnû¤MÉÊ"ÕF¶bbØjöV‡ZO÷¦R\eV™î¯aOÞù¼÷£[Ö)Lx?bV¼î[h‡ˆ˜³$ ¸zëë 0öØ2—qÊ_±F:ÔW)Bæq[Ê­Û\…Nt hpسk̆˜¾uÔ²)˜ø•Z]"-Á±&šç¬S8¹µMLÎ#â×w|-\ó8Òõ[t³nõ¸ä,¾¥bY×@3¥ö ³Š°“Êë1¥†Az1,ç™ì³äøÓ²÷¬ì–íÇ}?h{-l^ˆá• £€Ášn kåÞ‹•<¯VÔ/¼f§“åÜžtùß>Çk†ÄZ‹ã®Å{-¦é\ÊÖ~¦%Ut¸ƒ)-f„ÓÄ1`ùÝ gêÀŸêf½8md6jÇÅ”¯;–…§¯&f“ß]¨‰M{1ì+»Ü>{ä£J¤tJ2ýXëÆ¾Î·“cýÝ¡Ð8UÁÝ{J bZL®EêѸ¦HOåh~ìÚy ãQÇÕ2$HÒ¦òÍ—‚˜Ù⻪ kobößð3¶ðwc}-sÞø¯%§žòvùìg ™˜/ÒùË“Î$:ý܇veš˜Yû•L“SK=«á ?Y-í£:Û&Êrt*10XÇIJŽ,ç%â¾|H,u»­Øžÿ'#ùµµ˜ä¶—éyûÁ.~Ñç’¡œÁ*Ã!énjÃÔ)9ºÇMé=y8½¬Õx ¾æ;ÝÈ:î-úF¯ç¾ˆÀ}gDŒ€³Pcí.{¦sÁ×*C<ŠøB¿ékž¦ÈÁ{÷=ƒ={…+‹Ì¥©…7!ê/>Ô,R× 'Jàªy‘àKÓÌã ÿÿü)·—vH9¬xqfyÆà¸Îà]^Œ3˜J×®ªRˆã‡¿å±!7ÐZ\òéŒ`AËFŽ%…xb Ë™©«;*˜æ:[ó TFiÚ$v_*á±ÑhìtÁ¾æ v íúÈQذ:FsÕ;íùr–{5GÏ.v`HuúĬ£S2·Ôî/,w¾\‡màÅÖ bS:# qø›)œU¿î:ÚÙ«þþ訲(àð¤:=^w¢ v©=͘îÊÌ¹è ›öd5ÁêÈ´å±¾çf›·]Í1^‡á©ˆÈ°á~ÚöaTއàå.¹ÎŽåz¯«¼ùŠvJqÅ™ÑL6dbr Y¦ ^ÐI"HaR¸½r•“„°ë‰ŠûÕ|›6ðù:2¸-fE|ßëí³S±™ò9‰ö"Ë£°ŠÐú¨¡7o˜ÂD¿Ë„]¨HM«#å­÷R8wS³^¶IK WÆ%UyÍhG”BåÌðÒðʉ„êì·ÄbÝm›P„ΛáϘdµÆÉ‚ïù'@ê%ÅÜZˆQŒGüəʸŽ_«¹»øNIæ1E¦zòÓÈJpïWGâ˜_|Õ2‰më…Éö ™+gÜ‘1ÕÐÄ [×ïoGyÓ'´¾ƒà§(§™ÁûæÄ²I»ƒhYÕ¦†üñ}JÏÒ˜ ~ñfïÎÅÆñ¼Á¿³ŸÇ~,ÔÙÀ¾N£¤'Y²+ìh×Ý ëyœ-/ÑüÐn…™/Tg¦ï+64 ‹;êo阃XC¯cö­gfV†­;Öp·{M…6ÉÔ$>¯fäG™Ö/ùl"±O‡jlr¼½ÝØŒ|Îû´Jǩ˨¨Èô1Ì7™&8UÝzâáy?è}9É{o€)wƒ¼ëžJÁÁå‘Ó˜ í7Ñ„žæÃ`{"‚ê´àB‹žxfÒw°Õ¢Bf@§D¨}k÷¿'z~žî=Þp¹<(—[› È$q-ÄZÏÚÑÿÖ/¬°0’\ƒXðÐ(~KNý$²k̺ðÆfÃñáÃ=¦l·=Þjh‰ï¢Ï@F¶' F~¿`?¥p…äˆ[K¾&Ëê®PÞUp`h·ŒÌy­¦Gîu,ï›Ð˜– 2b*c¤n°U•—µ°ŸºmTZÒ¸W{ZÝ¥Œ7Box¾rßX5;ßi惨·;Vÿ™mŒï±oºL£[áÀFJªIê³–kÆ•È,e“T¶_ôi}c!šÉq­®ýtäæß.zà´F\q/™ß–^o¡úëÎ3މ„Ùe^ý¬ džíü#N ’€ mý“ȤÆ/*G«k]ÛŠdáó .APj3õ…d¿Ü%) ›Óa¶ï×/úEQîVTò/a®/TObú?†¡ßGûûÉd™SXq¦ª?n¤«YRŒ¨œr-<Ìo¡Á,)ˆÆï%æ?“Ÿ7=žÌ_÷1ᬩ£Åáʰã1ö—\ÃêùqTÈp²Ëg®‡w«Î7«¾ìWAðÐh÷GÑ[½ïT×õIJ˜w®h^LsEPf6>zÊžN[¦GGêsÍ:œ\*¾!VÅ—ßl‘#“k¡^ðþ{Òkž#ÓvË\Ì2“«EÏ$Ø3È>m ï’ëÔRwpïW\^Q½Î÷ÍçìÝÒöŸ…µ©šËÞ(Y›ÁrU§õ}iÎ-—ÄïÊ©ºé\¾ƒQ²,Ì>È-¸¢‚?wã{³![K©ÓºnD±Nöº›éœYÒ@ñ)Û–’¬4¢Ì%e¬¾nr=Ká“Êt"_+qf€¥ª(üXuU}«>rw/zÛõÝ\vÙõè—º‰ê"½N7®oÛ«˜øš½¥e1éRÌa,™˜0¥¶ðê$T~¡0¡ç¤“ 6èÅŠÓ_\½fºŽ~Ìæ Ú¾@(Ce²woñîyFIƒíËÛbÏ~í +¸x cŸƒ´(^¶ò—x^2[¨y†X?ãóbUxp°Ó^ïgã8µ…n6ËÌ>`h¶²pògêx´7£ ·ë×]±÷F$*kñD{Å‘kvvͦn·a$ZO¦¶ÍE܉—€i¦Xb‘ÒÎÂB—ÂhG„Be_µ@%”€RÏcÏÌÁúmšhÇXÀ.•ª@Í ±ÅÓlÍoôø™+²,š[ö'ßãJR¹²¡t^cÁœø\ËÌÁMûƒžF{$6èñ³¦>!ü"$”Õ M ì"´ˆ‘M2õ$ç >2‘/cbç©ìn0y¸ËbÔ¼wµ%ª½Õ h@;k_:±‰N‡¢7SGzÑá œ+N–;=÷õŒÄÄ<gq>Jkƒq%E àçÚÙ¿ ?ïNM,õ ÍA¤*¾†ˆ8È#¦6›³Í³cLaI‰ñ(V{‹C ÑŠsÕH«ŽÀBâÆ™ì·>Øâ”üDâIN RòËêp²»¶YkT)Ú½Ér"‹D–ó ¾ à»;nÏ?”ˆ}âž~ž^£®p¾ny=B%P²1åVÔ°çN­ÚR ì#Y¢ßœZߊnšbUœ óþ¼'G Á…K((±›÷*m<æÖØwOtK>lY½ã‰2aùŒ°¦ä'6id(ñBœ½ Æ¡9;o-1ßýè×uSøãưÇIŸòÉ ¯ëbúæ%F¥™Ê´»·ηfÝè£×²ãjPµ˜²Iúäü©‰ãðdï~JùL2FÐS¤ßd„ð•sÊÏÒØXªŒ–Z šzŽÿRIôØ6‚ÿy>ѳÐaPÑ †ÞaC‹@«äžŽ £¶7õB–¹ï/aÂúÍŒnÓ<…¤™X/Üuau2’:ïL(@é ´¤^mµðÃzì Ò"–4ûÛN™¦0Jô-Ž5ÀÐïAæ¸Í‡Æ…ƒŸcfùYZ„w‘Txæ„v2yOü£JcçV^¥úôœ–š›<†ïݼGŠÑøð‡ŸîŽDÈp;ݯ?þälU®ô¥úÖ,#…KºÏQdX:bykl/0ðþ«æ£p!¿½6Ü´ ]Üy ÷ Æ-ñÚ˜üG™\šÛ«Žé¹(Æc ™¡‘©ª)ÖûZÙˆ}‰sÄSâ&–Ÿ&Ã"Ö±,û Wù.¸®—öP«8>%|M³*bËL‰4Iw:Èç)—é—9U}F4ÖŸ¯ Ûòe¬³?$YH­lEßI4¸|Ü€€ëo-¯ 7NÒ¶ŒÄ@‚XÐf3±*]Ò_ w R^ú9c]®™ÃY]š­É÷ûáð ß)nãϹË7°ðL(øzvê˜*|"ÊS.Sr¨s]°8Ç>€ûý%¿îã%F®ûµ=3máîv“Óò]ëÄÆ«š3Ö¶c>þY³aµ¬»uõC· ´ËGä§fÕ¿±‡’ÉRtW’yå9%Ú 0¦*Ä”èwÙ%EkqôÛÂu€·ŽâäN»¯à­>9[s•ÇI²tü÷ÂJõ†QÝx>àyžçßo½? $™?é8mÎͶ²I¼5ü°Ó‘UwÏÑF!r˜¢Ù#’}ƒvû 4*yø«Ýxàֺ͑±jiƒvŽÙ·ÉÖO·´ƒT ,5Ò9¡Û•sÓñ¡îL÷ÎÞjö<ÙQ{"šžÓISKåð‚%+(lýH%êmðÁ—BZÜ» QÜ,3ûŒÌÓÒâß×ü½FE㑲ùö-bzÅ¢K\1ZGº™Ai+€÷ÌVY‰R˜¥ˆDBpø£/…»Ôü…’ý"××”[ë¶]ª>LZ´>:¾}60èRí:þVsú¸xÞ>ækÌÓ0¼™ÙË õž!Œ!hâ‰á¢~,6ÑûÅ\fíX£wc‚íÅË×Y‰®:¯„é7{£B0vËb2æxJUã÷mØé«ŸX…1e:Í3òÓ™!z y}&ûÆKŸÚ싹Ê×Ç,ZâM•–+!¥–YÄЖ–q}+ ç­É„úÀúbƒEb¿Gî¼æå«^u&ân·Ûo'V=·\§ É ü¶¯jÙ×j“½Ž×Sp=Þ{K6Fµh©Ó¥[‹©'“³¼eviuöb¯"…ŒÌÏí«ðA†žøÂ''H¡ºØ87fÊëñ† òýw*Y¸Ÿi6Z±ÚóXEØ? F¸S#‡|ó3dlµzkE[Æ#Î[B3…èõxxè­>¯ÀûÁÑ’"Ýð¢½=dÙHKŠ ™.uõ2’ŒÅa´Ýe×l™œ@‹K|ò><.q™vÈ6¡túZ¥¨÷Û'Öé9D7*ærN-¨H(u0Uâ@&¹îʾgñê91#|b88t{(®Ë Xrm^)¾˜Ä%¡|ÜŸ‡µQzR¯Y` Õ·ç¿DÓìû¼!?UŠŸlÇùÄÙ|ù‰Û¥í X+*%“††â輚bÕŸÖ"%‹HRÌûúXÓ –%de¼Ë¾H)‡ì¬º+ÓöXî*l4>½0¤XBŒàµPñ$ ?ó3ì{¥,*IJ%˜T5>° ²²S‰¬}Àñ…Z é~,Ö¸RÉÕ¬Û)Mê0˜ŸW#âþ}zDç–ÿ`ý¯åÕÑù½$×ީΫ¹­mÂÍ=cYôÐ='­oÊ–ˆÕÁçèSŽðÎÞ'ƒ œña®® “ëÃQ’jFŠQFŠÚŠëÝÈÌ®‰3&¥®Lû»P<}ÐGÜ·ÞE£OsóÝ‚>g'k+T?1ª5ø2“¦QI¢#LCèÄ=¤»þžŒ±;¦h`Þ—2§,-ï[–­C]ïý`øô [üöÀÚ {˜7‹÷+"ØhÒßB5W{õÁ:ÇCO½ÌùÓ A;¹•‚¢à±‘%/0qÞ›mëOágT¶ˆzçz qì7|EFGõ‡C”Ï=ŠõüXÔ,úé¬àyo_A̸SÕ“ç<Ùù€ô^¢ ƹv¸¬?`SÄZÄôÓËOØÙ?ÁBIprÎÈ+$ßc•%¢X˜R‹Ç?ìœTš0ïTíPì»¶NMý( ü~úÚ‚Â@bu…¥fíRªÇ+wüIuœ}ºÒK–…ü—£óJÒqàU`ê}å¡^MÖ M½£³ês×qv™ÀÛï“Ehp¹ÕÇ„ˆtVÖ‰_Qtp.Rîå÷m*·'EÖz[²«óŠ$S4k~ôw½”÷n%ÄÖõáÙQ‘Öâ=•M}DEZ®miHMó!#{ñȉõd·‡ÇšƒKbC1ä†d.¿¨ÛdµfvžÇÐà”Œ¾ÛøLÕ»œè£Õ«Ê{õâ-þ‰ËÏMrœä'iuœá(m'žàœXÑ.*9±kJ5u_(•¢ ÔZH“7÷”Í_£—R=å=,Ç uzt7iñû*ß}Ø}–OÝH{@VtÙ¾Á(ÿ˜ü¬?¾ Īk ½K²TâÿáWãð-`ÏXrÖqB¥i7ãå;4hSäzÀ·ØçGf†ø5‘:‰ ZYÆ@ì06wίL–W0úK•ð‚uû¢,[ðTû §²,«tgÎx9Î?C߬|· ûA,V·ë+wæú_6`v‚Ìfµ ýÇ8—§¡Š48ÆW7ÿÖDãWCó/ÖÉËd‘׳õëš~¶f÷Ý 1è%H3šteË EÙµY\eþL³RºIßù£¨áýÁrÑâÕMÄðj?7®¹œê¢â’§'mIdK{íÙï%Õ±9§sÅñ?ßä`dciæ;]ÿ (/MUãßr5šÍÈTU{6Ô˜•êÆ’z%«ñ*£—é»É›¾ðCò£ÊRߑ΃–¸É­D·ÞÏ¢â»ÿföãcõ–•ܾÆ6”DºOCµV™i‚¢ÈÕ'¢õŽÙî̉Žy˜{^%)!Vk ‡üd}/ç³ÈGOê…hœyS2¤&·Å¢ßÌ®Gà‘›ž@OÍ>² é‚¢~ÜeR(‹L{ÒמÐwGnw 1œcò±WÁˆÄ–4 u[|ŠoyÔU@±5uæ.¥®G,O¿ÛÈY$ŸÝªh¹ „]ÿ<­ŒÒö="°©|Z{Ö+{0ã-Ä}Ç3Éàô®Ö¤Qƒ˜kfµe™ëskÝà=‘ÀÍ+Í&>Ï`Î}¹¼A’ávLéý(ò·‘˜ÇÒ]¥Zóõ÷ü…\|5?§H½}z­/oÚZJö;ÅidÉ*Àݵ¹ªW£ÍZñÙÿ¤à9uÏa‹¯ygÐÕ—ÔÈ·µlT$Éu²çô¯]U>¿hó©uì¾­”g³?'²'h³cG¯G m“UÁǃ¿åhlQ†²”cˆ~ϤÆêWöz+¨¿ÃDcÃPÖýÁsž œy«‡³›ƒº!€N—N/˜eVð‘è´Ïëf2‘Âp¯Q×¥UÛz«OG%BÇpßÎpüX›7j ]…œ¯Ð%ôÆŸðôX¨PfÁ¨¨“®–äà£Ñà ½~>·8È–6 ®zç÷wÁ“”G3|5<笅dCS+ªäÖv{ pP)òýÒ’ðµW=—^P#S¹§2Ÿ:mÕw¾ù°Híq*ŒöR÷@pCú`—RK‡Ì+2yI¡—ѦJ=ÕNÿä¨{w~ü^z79ü^ù6:}ØS–ó9rÖ‘ºCV{gd~L^ #§3À=˜Ê“Ðï&°— t4—8–™ytÚ®ð ã;õU(±ýäXq»üé/-ô_vÞ# endstream endobj 326 0 obj << /Length1 1625 /Length2 5524 /Length3 0 /Length 6350 /Filter /FlateDecode >> stream xÚ­WgTSÛ¶–¦‚é]C/¡—Ð!AZ½#!%‰Ih"E¤JïUQ:JUJQ¤w%ônAxÑóÎ=wœwÝw~ì=öšßœß¬kޱx æâš®h„.…—–R@>.¾8sÊH\ ííª‡yˆ€<•€€6Ã#Ñ(¡ °F¸tp€Œ @ZII‰J Æb‘îx€°¥™µ(ö—ä— À%ðO„h‰Cº£‚Ä?„7ãƒ@á‰ÿµ¡9À{ nHo@Ûj«ÑëA,zKLêëℌp ‡¸¡±ï?8åŠü•N‚È¥‰À8 Ž$š!àÌ/H €A`}8ñ€Äܱ0žX<€DÁ½}]@”»¡„Á¢‰>DŒHEãð88‰Áˆ^¡:ºĉ÷€áùÆ!‰0íFÔtEÃ}¥ô#ÒQ< ‰Âðˆü/_.€+‡ñ†}É0Xäï0|qH”û_ˆ°wÖÕÃiˆÜ¿ªóWž€Ë†Áxþ¶FÿÖúW H<áí&A%-Cô Ç}»#QT’¿†Eå†HKý!wõÅü‰ù!°¿ $ükfDˆAÀ\Ñ(ï@€+ÂJ‚Æ]„ÿ».KüsMþZü4øiïÿ¯¹ïÑ¿]âÿï}þ;µ®¯·7æC€?– €¸ep#À¯=øµhðÿcóAzþ£¿+Z#þô×ß±?¨5QîÄŽˆKËHHý!Fât‘W(÷¸Á¼‰Åú-·D¹"°ÞH‚ØÔßõ$IKÿ ³ð@½P¿ªRú !P®اߑKÚ@Œ­Mí€ÿiµþÖ„GoˆAþ74kc´ë¿¿x´´Ð€ qi€¸¬”@ZZJ $/ü|þ&’þël Ãc‘{) ))iñýçó×Éño4×Pp´ë¯¡1ÇÃP®Ä9û—à ÷Åb‰íý}õ‰iÿyþ=ñDNõé®ᙑ‰¯aÍïy£cÿº]š¬'SúÜ¢¤(¬ Ýš5¯Tî|R)Q7¤|Ú8NÀü\6]ékgñjKClró‰tÑϾT®„K:•Òd®[Çm¿7š#·IY­,¼15sz|rž{è¥,öâö±HŸ_Qÿ†6žþ,¹årÝ9†šbº`ò—ã#¡®þÞžî¶]ŠŽeN`^¥€ Œ5$•À“‚tÆ<‡ÿô¯RÎMŽ|ËÝw^â[5ÿ¥v~òMN0·Ç–c†šì\ ¼a2ä½ögŽ5™!îZGß$ƆˆÖ~±º~À’Cƒ¿¹õÁÞ‡”‰-¯ÂAv-Ýãaù¥-ëP:ÍÙÇȾ|f²¡‹da‰©ïÀ7î†~ nœ³É¼!Äb(<©z’8æÐ¤·ªËÍÚ:U¿t®ø£4…¹•¦åñÒj>+G/âÉ*â06YŽ:³ C€ö¾Ï_¼:=¼ 1ò~FUâÃ-v!¡˜â–'b¬o kLM[œìÛ3ƒånþ-çbfè™,Ú!N†üéÕ0üÊé¼…ÜmCò¡z(•§ î¨~ó*XšÖ”1ŸZÏ[?Oc^Ï™“åk‹¬ûÞ¥ƒ(p²‘ÖP%nÒ¬ÔÌ’ËŒÙúz'Ã75Ó|c[ôlâvœ©»¼lú í«I!³ä¯§£!м; Ñ<¨.ÃOn·ª‚……Oʯy6IïûFqÎÛå0òÞ²³šÆUµ¸ÆÌý&Œç„5_Ccr™óôª$x>—5†¿ <yÚ¤•í®ßsÉW™ÐsÖµ­Èí~-(ƒ°YÌ7 ä¥Rè ŠÚ‹úÛ冥jvÒÄí€;ž‚4$ièötß­ÅÜñ–~ÖÖa™FP¡ä¹rÇ<)eñ–ýFšclFxÔzI ûžºº¤.¾¦Ìy%Aafhp©?£gKÒeŸÐš¤M°Ùk£Ó69赟{Uæ&‹&É@|ëè°i1]ÏÇê+óG95ñEÝ9 ѽ½'X¿}µ`3!‹Ò®xï(ÐF]p¨ÉChÓ &¬»Á–âÕ­RÈÁõë*¤]6¦ÂjÉîIÃŒ+§S+4Ë>Hû–oz¦Œ¶Öú¾ý¢?Þíœ(…ZCußΊgªÝqÕTãÁh{Ï1¼û¹Ü|ÇK=ˆ²AvœÉþUé«„Ù•í‚~éÔÂ*YÞ²!ŽvàE†Óï9ÇO"÷æô=c!™1mݨúÑ‘ÛìTR%;"a*Òs޳BŒªi,5¥…Ÿ¬C6ä3Ò¯^:Q.{+YwÃn\Sìàqký}Pú¢…ܳ£n#ŽW·>ÅžeÆäÉú8Ó,Ù·0 ­?@ï»:öýl”7³æz^x¢šQºx`ʽžÿâÙé´ —¯Ï(9+øVOÁLáç`…Š»;™ZÁåSÆòñâ¦e¬¢âË_ŠÌ¼ï:Ë4t—¨$Vá¯ß¸.N‚¤Ëò>;É ëo¬¢ï*jƒ¹äîÔ‹,­|Ôl½Pç~u'ûû˜ÄÝÖKýàE;Ο’%5óø^}æ…L¡Ó´=hºíj}¹W®ð!_íõ½Âú­Ñ áËØ©OdÃ’bÓГ CGø»+^ß»»[›³²NËFZ’lÀ{B+C` ½§U½VòòQ(aQ-^×V/CDð¢<›AwûÚeÝݺ/¶Æ6Ô’$žÚòtçäj‡7Ü9Céჼ¡›¾z›Ü—ÌÌ_Ý’<[IÓúæìÄ}ÀÊdÉÅg5%îC»uÜF@;V—+õë·¨NU\=ÊHÊû¶f_B_-cšËb¹ŽšV­Ð»Ô©ì®6­#bîS6Äv\þcd¤Ô’{Å:.ÉØw§¯ÝÊá,÷1peqvo×áz³ewꈌ3Ï¡çVîÝø5HWÉ&Š«8ª$WN?w{¾ƒ õÉ&ùA·Í÷híš Ù;–uYÁNcQZȃaÊJ.;R{kŒ£ˆí„n ¯ö+Ëæ5,7O¬2w씲/þ©As ûD8­·'Iµ7‡iè½w=ìT§ÙÒ-ÑÀ™üÕ¤ƒáÂüÑWÉÉŠ7x/3-øæ=Ôr+¯9¬ΰþ Ó_ägb*ÏdçKî oTZטèü 66®=7ÿ²tœËÈÞƒîro\*/JN¹vŽi¯ oÝŒ_ 'Tù©–ð~1¦Ø^>åöÎz’a;±’X¼T™Ç4ì–¤8(βe~Ò¢SüsV|á=ï´½ ÈfL2¯ý-(ˆ¯–}¶¾Ç.ŒŸ§Õ ¦Z††fg ™N˜AœJsué˶J\¼…áhE§0«÷9kÝÚ¨÷É÷BÂ0%Á«¯L•G|H\=ùwXª®D'fÓY¹|muõíÔ#N`£][ÏŽîCØLñ>ÍÍ/û*d\d#s[/fªø‘uж-î]y›ð8ùF²{ã-Tù3ÔA£²Ð?+g_Ťó±P©¬s­©`%ýX®ÃnÕOž7™‘ò@A˜r/õ(¸=TĶp’¼Ô¿þaTœâæjÂõÓ»wH)¹zÖq®|5ÏÕž÷p`“ï3¥Õu‚§¢±™}cŒBd¬¯Nmgê aà>GËjÑGb·";îä+Ë>ÛДP”MýÖü¹ÇëM[ôŽüãW­AÊ?j5á&4ë<'ÙÔ†æÑ‰öða%ŽIñ0âA÷`ÿô𩈑…æRIÀN²z­aY'b>¢uöVþ:¿KâøøÆ<‡Ðg߇û©_ ´õ^„ ©¤¡KŠí· ³-5cKAL ͇-‘ÓŠF©¨9ú §á T–Z­Ý®úO†ÍÛR&—ÀsÎåŽÅƄӉ{•M¤\mœè¶qžTnn'½ žÿ6›yœkqRù™¼ðè»Ç†B#ëüK2ˆ0¸¯¿8Ï/Þ¶p--Õ;R$£…”º]Õ:ÏSWÁW«eR˘¬DÏ™%p˜üsRÙG!y†ÛêEL•}Š['YâPÙLœ/o¡¹ª“k±St|2æmjùÅqÙG½XëÚ ç`UˆH<Ÿ¹:@Ni $yÂIášk]û8$ÏäŸèêÂõ=UX—®hßnÒ‚‚”¯¶O«*êwë„¡oÆú÷ì1~æžši"Ä\bí~†‚xñŽÚÏ­Ò5>{ˆ “7Ä‚âÕ«‡H–ýIÅxÛƒ…椾l4>914ùàÈßñŠ+Oµéó±†m…=÷ùÑ@*”Ç|ÍÛ?>Rb" ×'óB-“©…Ç35sù"çš¾[·OfBîlÖ#!Óºx›ˆ²»$ÊÝlél´˜Â…㦉»öþ¼Š4+’AYœ¨ç|µƒnz5ê¡dÛ !²Ä©k„«—< à4ƒÃ#ïA£þvZ7§x¯<'lA)ùK.œ%m°ŽÐë‹Ô1†¶åé®êkUŒíðïªD¸­?UfÆÙz)-JÏ¡N"YÇ…cÀÐÂwG(êw‚½(D£´×í—ÚMÓ»;0ªƯóÇ)^¸(`¤¶%ú¼ðôKÍRÐG%:…Jî|‹HJRÆ7–PÿUéjÂ6„±:¯X^ªÂ¸Â2b=ÿú6Ï,‰Û\?Ì«QúÖð›â^]Â9r-ëzé=Q݆÷úBÁœLj÷yŽÛÐa†s’RŒvçž_ˆð²w¦Gt(„¦~¤-TÓ_°¢Ÿ6؈mºÒÔ>™n–ê »m€YZs¯¢¡T¾Z4ƒüm_ì\ÊÒUƒ,¯/"Ò§hô› @â"G£¸^“§lnIÌ“`Å«Z&¯÷ ¿‘îô<.Ö• QyŸþqwñÓ2tݳX"bç4åÛwñÊ^7ëÐö­ï­¯Õ…ª8ÛÓ¿V eMßèÔîÎHwÎ4š(¡¬¤úÉnôSy6‹éÕš pc÷kIQh¤Õ5÷ŒgsÍ>è BŒ;#ZäÚ^}â+8ë2E‰„"‹EG”öl{Ñ|\}‘ÈUs¢¥ýj)Eg$bˆ´]žNUéb ïéN™ì3+6÷§kî &5 ýS`¸é̸}lÏ©`|i¶7ö9•dr^’ïšö î9§Å.Ô¶ŒK^£ KûÜ–³ÛÒHbØ0é`–9­¸ßЛ&0íð³ °çHbH·ê£`qöú“¯ÖåfL:ãÓCß”±Vž­ÝŽÿô úèðÃÁX'ÈõQ“X`^ÁZLX!\¸,FÆl8»M‰"8”k+7›L¡%ɇi!Ÿ‚ξ`[üd:5IÂu¾¿d˜µ± ±|Li&šØSÛ4¢Iºâ1×/㥟aÑÒØ;ø6?3Æ$c˜J3¥ÈL¡È“Æs@/„«ô¨:´0Ñ .™Åvð ö¾‹[3½Må-Õ¤Z¬õ`Ý28JÛ\1š‰ º4ôäÜØ*ê¡ôóæ÷m-–>ë=Z¡û¨tV¡É›|ž Ð<‡Š[çòÎö¯f¶‘IBΩŸ'rɱ¾¦“³šC©Co/?2¹³›ª}3?‘'(¡rãE,]„¢Ãq·O]ÉÝ µÛSÀ¢ëÅnã‹3ôŸ1Ńïå)Ÿd= œõoæ¿ Lá*©d¶²µ½Ê3M®[¤¯à|³ä—2 ÃÔ™ViM\`Ùß?Ù¼–¸¤sìæèpOa˜œíö£Ö¾mâVàS*€w¿¿ØírOZË%î@!Ö<»Ê%Ì¢¾“›¯ž(›"¦þôõXÒl·ß+¡ÍvËڽx­N ä9Iœ%!jà"® I›ò^DYs’Ðö­lˆ4ó‹I¸”݈g+ ©vÌöc«ÑuM£r¤øbw“òº¦ëmaË®¦åѵU éÜ=Øm cËÉV¹B¦nâ¹gªñöÜÖüß2Y¸ôE XÓIú9NcS Ì9ôµ[é·£ª©Ø§OÚžôKK[Ù_Ù!Ð(…Ù3käædÔ¤*gÈx²*ó«ÂÎ:ïRò΀ÈŽ©Î/ÉÔ”^Gö ©† v‡z;»¿ÍØ1Ÿu¡×‘Ùœ.t§„ %Œ7¸ƒòË©–Žxvù â’îÆD j©ßlNhüÀÆÁÃ|¯Yì·To ZzrÊ9öŠ«j;’­Ü¤½>û¹&`¦ÌK¨K¬|6 šmªuýþÉOUú¥…=B\¢jÉ= Zå‰ÀÛÜR§óÔxÝ£úga‡o×å%)Âo¿îŒF⯋°Ç]{±2¯S¾n½˜ëp ÿ`I¼cdLÂ7xVü–•¥ÛôòÎЙõR$ÛrSÿÏtáX1ªõ};ÑŸ_É`íö¾qNâe·éèˆ-ÎqÌÏ’â|¨ÃÝ?9ôȤ R©ÈÌt^¤åÅ ÓÖ»ò»{—Ó•íÿ——Å‚ endstream endobj 328 0 obj << /Length1 1144 /Length2 7027 /Length3 0 /Length 7789 /Filter /FlateDecode >> stream xÚuseX\ɺ5î$H°&¸;Áݵq Ntc‡„àî îÜ Üœà\fæž3ß™s¿gÿØUk½µ^©UtÔ@-6I+¨H qcãbç¨-`®Zæ6M ð ò™cÐÑiƒÝ@ÿE?Ò. s70"cîöÌkÛªæ.nN§§€×óš“ç_P!ÐìõAn 0ä™’ZÂA7-˜““d¥ r…Â\,A®BëçÊþ;+@êäå¶±u0êhê1±°°þp ,¼þÅd@®`€þyár€:ý‘éYB¹<mõG,ÐÚ\Ö ìöG»F[77'!'ksÐ3Æîj͹q0=* ±’†:þ!àŠñÇÌdÀ. Ë禼8þ97{Ôâó_°5bõgKV0'ØR”ùßàgãoÌäàãäæä䀜 OK[Ž?Rj{9þ$¹þ€Í!Vï|œ NksWÐ;°5èù‡áãjÀ@ï|þ_â?w\\+°¥Àdó| «?à ë¿öªæn.`O€';''€óïß+ãç µ‚B¼þW3w8ôTÔ”´5YþÙû¿£¤¤ Ï’l\oxlÜ|ÏNyVäãù§"Ðü¿qþ}Xb þUøóÄþU¼;ÈÅõÙ…Æ? ËøO%5¨Ø`üÛ$o9ù8Ÿýñüãú?Íóüÿi¡æƒ98üÙ?ã_ž;w¨þèÝÁÜå¿ÂÍÁ^ÿÇêþòùÿGGÑÍÜl) ±qø÷˜À®r`Oìfiû—1þÂu V¾8ê þãÍظø¸þÁiÛ‚-í! W×g÷ýI VÿH) ±„Z!6-·gÿ™»Xýøƒ¶„¹¸<çÏ z>û¯½5ø¹@Èd‰±8µ±« i»­–$ó`ûñ§—_çú FÅ‹å¿ÍŽÐ£Fb_BÆ›{%”%±«4BTE„‹%“zãa/(ÕÎŽŠOŠ þꈽNDMëq⌳÷U\$Iʧ}i¯…ê²k:1é1|­0èKŠ[ÃÝ=gu2ʲü tõ½9&A¢_A?Õü4„Pf†:d8í‚Þ§`*u6NÞ1(b6ÝT´ã›ÍÎõIaóùÏ„Éc¸ÕžZ”¼êëäþeÛ®,ÑßÅúùcÃîÇ(æãÆó  IBÅ* Éx ŸŠ£ð¢%Yúl^_û$ã–À›$ÄìТÊãõÇ5ï’ì˜ ªüÆÖòí—Qî‘ùö¨õ…qdÈW¶/}wéºsŽÄ«SÆ#;îÒ=ʛۣp5o)á4Èý¡U Aî¢ÐÆ_E-Óîü4~ù˜^;AÉ‘“z3°GelV<ÕA6Åî¸Ö‰É¹ =2+°ìºÏgþÕöï ~A¨JAÛcî“‚ü¼d®¾\¾Ô%ÅF¥AéÕì`1š ãÚÕº;i`¬½íÁ€\‘ÓÂz‹é¿u)1ºÓ,¡·by=;F¾†&%JùÔÆª‰›î@É gU€¸œ£ ¿?»q{®µö¡Á_»hvÕù+A ® *„w÷±R¬ÇŸß¡L/‘.æCfp™è1sxÄWñšô—ÊWîøÕÕYÜ*è'“’íÃ6¹kz°¦ƒ£˜‚xxѨÐ/éÛÛÆ”ÜDw„½ƒ“®éZø ÔïÃõ²1ÚÐäçò"’ ñRàdNçžîr&yHŒeîf)FÒóß¶°¿öÈ$XQL|k¦)Ü%È‚Œ™$Ñ^ôT2ÿw5 ëPx‹A³~׺aUÜvº}™ˆGª9•u7„ºµm¤5šh-B}ÅÿÍCÎz|ŒV™ŸáÙR9=U4óV&yœtS$y:Z*•g:¸|-5C|6Çw¯y·¥â„úÁ4£ m“*žG®]C;C¦ìAza Õº¡h2ŠTŠ(Ž´FË%ð> p8lÍã[]ydc-)Ê$úE»«¨ž8Ñ3D³‡\fÓ:H)D,ÒÆ‡"‘êÃßI_è;~ÛZ*Ô, 1ÐæR'dV3³û(ò.Räk5ª4»D5;!;ºÀ~ŠÒ΂ᦡªEbOÚïelØIÆõ½‹+ `K"”düvJ,ý³ê@cH^Y‡ð¢ûŒ~Þt¬†8ŸözÐù>8 xÊ–t0Œ#ÉêðM8QV 0§ï½š‚»¯ð„ ,Ï5!¼Èôn ù #ÆÖ¨x¯vòM çÓÑ’ªŒ~V7;`ð´Š{òÊÎûiœ«Û–ë«ÝuÍg/Ÿ«U]CÇþ—ƒ‘Ã<–Ÿž^®{R‡¦~O¤Æ[&X]šÄ0xM”<¿±)Ù¤^¶ŸåDˆúãçµ× >bìÙÒÁ5! VÛgE"VbLnìR ?]£|é¡ÇJzãs6Y›ø oš¨rWÕD]Òp²ó®yÉŒ–Ùbö ­dTÇ‚Ñ?`,Ïä®G¢[£yDY¯øWã*§ÿK°àNç÷°¸cšel¡ÇL%>‰ F*3.&¤)‚; šòqÀ˜»ÈûKÛl"¹@ït+ïn5n{}ÒÉ|ö…*&OùF móµðÂËj …õꇗ<‰gƒGQti1~vïNߤàH_(N(ȹ0Sá¬QtÛÖ±µ+¿E•°Å9Ìs‰dÑ;ŸL:›0 ÑvR2åþzTOK”öj]T“Ö¹ AL1$GAž$k)ëŸAMPßSúFÒçe½Æd¬“iþr°mÙ6Lþ~]zT’ §Ý /¹Wu‡zc3.EšJ E.°¢€ÿ‹Xo,žé…a|¯Ý”3¯íBZÿëžR»i0p½eܤ¶ÛŸr Æa¾ò"-#<h¥  ¢{1Úƒ“ãѧö#>ó]`†YÛí•æñuÅГ#ÖˆÝΘd ²ù·¥o´Æj·o:ß9ታð¦<å…¤?²aCGb«-~N9ùÞ$¾ß[yªûÁ{¹ ÛælAXâ ýLŒCãk#jù~4°Ìö“ªÝ¡ŽŽU5'sëMÆÈþ„½Ðв·÷ú±?r‚7¬"=~Uú®™ò‹¯¿Y0&KŸÌºS¥)ímMcŠ£ŒæqKUõkòèd?¶7Ž-‹„2,À:’uoÅQ#69?&˜GlÛPjS÷þ.õír•§FÚ€.7ON»ÿAq~:s™#¤ $ÉÎwf¡ë5êÝFP–]0Ë Ãžœ¯ý•‹…9Р¶gqB€‹ùêÕžt7,QZqÈG¶?ÊJò•°­Dl¥Yƒö§œFÖKœIe1p€-¦8œvnýCÞ ´eÏü娉„ó*4ÖÜÃî¼rü«³kéj·o OŠÃ¼Ä7ŒÛèNÍ´(¸˜h½{‹JŠZìðb0~ T5ê[¿ˆ 9^é¹M’Þ[AYø‚HK8ÕS%$ôCºÉÀa´ÌR‘ÅýžSöýl9rb½8œ2sõIQŒ¾ÌÂô Bˆ@±k“`äi12ž~= ê™û+AÙ¾&9®#•, Ê«‚ï8o«<ýpXTºèªe†ƒÒÊ<0$Üê‹'ÔÞ£þþLÎîŽì|ü”;àÇZ¾ÀÜÅ; x°á£üèAðŽrÔF“q^=Eè½|4ïKIÇ¥¡räîy³hG¥á²ôpÿ„ñ‘ËöJ—rôNoŸ’a¬½7ä¿ÂÙRZ·~úpWàSyÒ:åtŒŒI2¯D-Ü7ïÕRòè‰dÏUΞ,!8û~Ía<4ãùi¬oÈ•öáq–ŒºÊÞö¬ÓsgjÀgÒݰVªî•ÉB¿­Ÿþ(Nbø4-ýäv@f‰RsD’Þ#ÉRJ‰²òžœ†Mnñ6eKkS®»ãêFÑ·>n¶¾³>¼»”‚• ·%eçƒMï+Õ¹Ì\‹Ëä{½ø[b†AÉ ›Ê òîvýa|LhobHÀßåÄbbß+Jêíã=Ýún„~¨Þ¡h(*æUÞÛÝLŸÿ¹ßN~Þ~ÛÃÔe:]äHØþÝ,ú°ÛÔ/®«ò‡œ6çRaEŽR;@\Ïd÷½W¸lë9Ç;;6îŒg2Œû¿m˜Û§Pj×niý±‘’¯¦Ý7­Q|¬ºØ&Qì"C:»s³Œr%k…ðÙº<^ªûŠ’¦Úy~ ï ýÚ`&ÀÛ6Ã;sîAú‚ÿ†´¥{Ƈ Š×2öàÉ|!Ñ%SÝçcI“‰l¥´ø4ñ}œæwÚ,]ö°„•õѧ$¶‰Ñ,í3CrÜÖM§0úýŸZ±W§ÍY™™Îöж2u8ý%[Îë²Ùv½K¼e /èWŽ ê&Õr¨^×7{“•xŠ0©š¼Ö|ìWB¼®ÛüP¦Ø„ðûcË’õ€}ÀÆÂ2óæ—[æ6Mç-…™çzÀhHí)A“QÆÉÞŒ$ñ®È¤”2w›Ë5kw²Æmöwm¶2’ïD•'¤‡^>úxfé\`¢24’ð€™w‹HÙzЃfãïd<ŽèAâÜ Í4‚b ò/µ1£J”Ç@Ì<³ô"+Ÿ Ð8?ÑÂÓ%’ŠöS¯K°gŽðé,?Ýg¼ð«C;˺<ï®èY¸C‘Ÿ>»<`0ÚŒ»$’>‹™ih3û'Z´4º ¥Î%H©¢="u“8жQ¦=‹n•nˆã_²±Í³˜zƒX³F(âáLM#ùÍ ï²þ劯µë¼þˆ-ö‚ßQæÈo' ¥®ÄõÊ_fÖ°ýºª£›ŸL;7¹w&`œ³Ô!µŠ:z«@?]Éåœ}{M‰'ÉÛý;£Ÿ‚¦m&#¯Áñk.uŽ\gø%Éýù„\‚…¤Ä^›dM˜“C߉äpWˆ8áCV­Nû²flƒÝÓØJÌ£ÑTÆÖžÓÆÄÒ¾ŒÍbeˆùÛq$í/Æ02Ì kËÈ´_|:Dã~1©›Až¦ó§pº1+ÈÂMo3EjS!ÍáÌ9½‡,úØñó²ËJãgܯwѯï]VøøyiÖD¦¯p ƒÜ=»ÆmJª?–~±6Ÿâ?|/£tUÓÌ£aŠ(ðýuÃ໣ùèó ž¼ƒVp+²)@4¤é»qá”s›È“59Ò`×»x)Š#}9¹£BÏ»;yÛýŒ©Œ8–%2¹ùÍ®û¢L_P µ•»Yb‡Ók°x‘•6¶Irpj}jsl&ŸAw­Þ;ç˜â·ãÈl.†=¾3úñ–{v5¡Ü)h^#Q”è¦OrßI:Þ>Z}¼FPçV}PR…Jw6ì~&8( 食IPøyú3\²€\øm.ï-íy:éNËìÎv¹~s³/ü¾n›ãë~ƒs†ºm§|aSÞ«§TÃße^†ÈƦÀM[ôƒå‘é4±¹”¡<ï5 =ÇËä\º ¸¼d^~Bý”Lü#Q6#´¸Äý¡=‡Ò·usùÓ#9ZQ…¬îDMRáM5Ë¥­áÖFãÔzJŒàµˆG÷3ǪÈo?ÓçØöhf»Kqî_… ÙX˜¹ à‡NÁÞP þJË‚c&ž¬]8Ð`IŒ*%Äš[à`—w™û˜óѬ'H´^''])«bSÒ¹es>!„‰Ý#©9!îu–‹ö8º>É2ùÅpVâC7ãm¿x°ì×Y¡Ô¶ú^à­ÒD‹‡ž™KáGâVœÃŸîA:i.0„R[âXÝòÍ]k0=%LµœµuH W¥ÅW•È“&½{ •òBÞÜUüŠè£g$ ê•*æ=ÜÛLÖx_Ð'‘œƒ߆9¥æþ`€$xh{Q¢{ކ¼Ž¤$ú>é†_’'j,žýÖßÚ1Ôzj»Ð[Š ØÅ±t“@B\v^Š#wöâ«ëV¼3†›«ÛW£Õ!ñt‚¼Iù eªh2ˆá3‹lÓV’ïÜÍДd:¡œ6ŸãG\è‡õüÆþ<úêQcb&ô¨Â‘HÛƒ' ½s”=Ú·ðXY¼­Å”ÃN³Š(.è5VÓe y¢ã+ä6*”—{C ¼÷äœhž˜ä&hÌÆ«3~Íí¦ïr§´y%zš¸bÎÝŒV3M³ó?œzÊó×Yì%X/«B ÙLLf¹ô¹ä^zk·œ€ts§I*Á[Yð·8¹§|]ú‘.¼µ'#®U€""qþÈÀº%¾YÎé·M’¸‹xöFlZ´#µV_äËõÖð)|‹K$ÕŸsœ¦¾²öú·©üŠbØÊ/ çÈÞ©ÿ Šçr,@YºHš6ç[`ªPÍÒôííïßR‹n2ô”òÁùźÄ|aXG™9´S»NJyÆvM1Àf˜Ÿ+—õÀN¬?¬£ÓC«86dÌTÿYvºžO¯C!áð¨öñÀdEU¨¯L —u¹QÉ8ŒÔ³ó>'µ4Ì„¯XO|(9‘LʉµTÿ ^vǬ´V<.Ml üXþR¢?!µ<ÄíÇòxNé yÔŽå@¡ÿ»,¶Šˆá›ÄE$±\bƒä‡ŸDñ‹ßSâ¸Ãò›’¯Tlƒ%xnÅ'FŽù÷…B˧«¢-Emûr2Ç»ü-š,–X-Uýù‹ I׌GÏû­etŽ\Ìd\£Ÿ‡Œ¢µh•a ¨™ZÁûŽN#k,Klè-],mç\ñ‹y‹k9©_E7à Ý@]B\%7• ÿîfQ1} ˜¿»É ×ùe³€ÿ1C€[%¾`³˜~úÍe|äõ ¸ÖÁÏg½,ð€óöv;XéͪYjй(™¯œ6ùœcv±ëXèpH¤½Óv)ð9Q¬º:òH½ÛôĶ¿Á+ø®¹h$Uzb8b_¸›ƒ)½ÀXh’Ç¡Tª?y=!5cÊóKä¼éîîÔëàV̆ !n´++Š ížŠ¥×òÊ×>ÑÃUÛ+3©ü8h‘ä+ £PPB{pÓV[Ìýq?H=¦^É©NPAКnvÖp´™ÀÝè¼É–õSöbøÓ4vÁ1<Ù©á\CÌÀ†¯½9àhoš4Çxà‚=2Å"ª­Ò bÅÕH+dl Eé~´È|±Þy¦/;Á¦Òš$k§¨3±T;ÙĤYìÛ›Ñ$1|±\ÅɉSÁíÖ>i'ù¥:Þ/)ÿÆ`±“ç0¹|saâg…u÷ǰ¥p³'”…rª5(ƒBNÁR‹>t€—'[ýܸ0õuÊ=)ž7ÐÙÙP”I Àƒöʨ÷ýê¢y¤ï —îÆðf‰'£t±Á’ºF0dtØ­NÏ!}àg&oªW_õÍKªBì{C¡Ë`ûá€}p+P0U@ñÔ|e(…Áü|2A¢¯ñ“?¿åÐê8½¥»JSŠP“¶f%¼•f´ÜƒQlºŸä ëv†NŽpnRÎV³.*—É9Q ÈÎàA÷èZ‰œXÖ¶ š[gâg}iããË`‰Óº€ rÒÊ’¹µ¯æ[TåÏ5‰cœ;â‹­‰HFh#î!íaš³Ë$U¼Y6CÔw3ðí'fH—(!<®Rëv‹Ÿ–ÉÐø‰•ˆÒ ž‡› '("£gôÃÉ«ƒ"Kͼ`ü~kAÄ Æ0j jT£ÒZ˜Â’ˆÐNYæ.€ä> stream xÚmSy<”ëûÎr²g—,yí#ÛŒ(ËØ³e9$Ëï0a†YìBµ„lY²–ì9Š(²%ûN)•eвF²~Gsú~}Þ?Þç¹®û¾ŸûºŸë¶´–ÕqǺX A&ÕÌÑ>nD¼5sFö,èA4& ¼ ¡Œ`·A¼Á߆PH=ˆ  ±8‚@‰±ñ$f `P ¨š†”²†*þˆÅi–8´6° ΡPp,’èbÖD__o4è~Äc‰8$ˆ×P”2 ‡õ ¡=< ÄöìŸRÒÒ2?˜ºº:àôÀA<ÚHPþ 7Ö÷à4J Câ(»ÄZ¢úîhÂlâI øjÈËû¢ “ãä0 A^ŠÒ¬>Æ]ësPÏx0?8")‚ä7C/ 6ò[ …Ƹ—çNô•·Å ýˆ 1üï Äøó €2TªU@? DzÊmä ~'a0ãâ‹õPo<†F”cá ù¿ÄwŒ0àŽF7Ѓr%?«S`õco† àЀ#T …Ѓïß•årݱï Ÿáæ·²2±56þþ#uu±”²²0U5@VAM €Á(:Õ•­j‰@ÿÝôg²1…Ô4O™Ú?üAžâJòÝÄRÀ+™c h$@~æÈñE=8è÷¦<‘ƒ ‘ÿ/ áƒöúMÞ¯‚?¬ÿw¹_éÕu0Þ Sø¢ñè@ÐÝM@zþpÉÜãþý)‚–X<úà1SR”a¿p6žh¤Äã)VüN÷_ÕÇ ±îhŒ`M ˜sÿ8 ‘DŽ2§ï7EÉýgBSZÁ@É81ŠEž$]¨!5nVëðÈÎö*>Q±ÝØ' )1&xSMËQ·™óz•ò+¬«¥Ý„[vyžªr¤1£¡ŠNâ×OP ðR×m’£ãàŒâ 6Šãû$wOÓ\ƒy™Ò¿}—|•7#ï£^P‡Ñ’pù†ƒø)½ëh,w¸àæ9ò?‹ÃüÇË‹*,>ŒJ©ól]Z´0ò¾h¥qx¸ó1záRL“IsÝÀ7I“sLuŸ¾rV6q¸ŽŒ>ÕeQŽ6d$Ô,»ñ;”ªj<îiVØòl2Õ~LÕ"s;>_’¼&ßÍ´÷¶óÄ0óaÞ”dÁ×ÌGxyû"•Ïøœœ@Òóg>m€t2«Ëê`\ÜîˆÄ¿ .ÍÍå%ž¡3|ûþÕf}·B×XÓ8µæát•ôŒë/G÷á‰sX=~š{ŸhEô t·ïZÕÊ©˜ßC®2[y«Ó}ãåñã{Uœ/ÙÌi^ðÌrv.É ÏLjœ¾žÌ¯™ú‡—Wœ‹ SïqÛ¬Cúó ž:eª†;Nþ&#”¾£}‰Ø¡q:.GJ]§œßèpn—IÈ?jJ®ªçg2Ò:Ù9ØG'ï»Ñé Zû ?è©mðC×tdj]J‘߬Ù=ŸþøƒØ¤ºQŽ$¨~çc&Nâ é™JÃ0 ÅÄ›È_ǰƲR²6eÔW^¡°o~÷ÊjØ‚kã{DˆÌǣϬjmĆÀ©t˜ÙÞ]8)ˆ%M€ [:5^rÊz?·œ ¬P‡°ÔèÏhbÝ>¹½ˆ° ­tz·y¨#Çèl6÷‡åZ„ÛQ„¸æÖ©¸Öî8Óc ý Òío¢¾uº´Ø;îÜë!mÒ¥ Úžs±‹‚§'¾3Ú«ÆçB÷Iú§C ‚ó<¢2‚78ße3KÔGB䪆¸Ù´,Žs“8þj ½?Y¨Î„^¯Ã:<¹Nfek ¡íçWTYÞU]|`Ö_J‡8œªuºFž8þˆ¹Ô[¼)÷Å$Ÿü "Bp%óõÑJÞ´£T…Aþ´ÁÖ,VRÊ­Ž&Õr–efIcÇpœ‰s Îü¹¤xëAC ¦â´§#.uß4Ê ¾¿Ãôíö'êÝ%SÏÞ`³DGKƒí»Ö)Y6áx­~aÓë.lîý®|ÖÃð5!·'ϳÌr'|b±+µjꨖ陭üIâpª¬Ó‚ãÓßÂߺmœJµr®>Óχö&Ò;4iØjé {»LË{^ ]>9°J®“íE k ÖCx.©‚~ÊÃuí°*É ]¡†œ ' ŸpHM<,ÕÛ„)ljÅÙ'¨ióÊ+ºÏdžy=³¸ÐA]~ùao‰¶¸|n4v$Ùp±¸õâ격%ûú¶âM~R÷aÚw*Ž õ¯gƒ¶/U)W1Ÿ-êõ¢3k|qøÑ *ñ­é¸‚êš¶ ÝþîlϰS&’|C±g³[¾Æ4ÌÚ—=\è6ØI½±Yñ‘§6|ÕÍh¦¬ &ž ÍLÕò—ÊŸÊîô™÷¿³šœD9·÷Ü ;ÏazqÊ'ü•ØÈZÒÆË}ó½Ñ¨ÁŠy ´qWú‚qa²D7S9‡ÝÂK¶S¹@X:uä©1£„¤°¼çg[žŸ)ÛU(óCRAù6u˜.N6±í…Xêk½J~ݶ’àÑüYMÿxû–C€Ïlë…²´÷·ƒ[rÍ;ã¡<âpm哱ÍÇ–N]caåÙnâÈ’š*wÔÐ;]€; Åø+Wr‹u0‰Zôz{h-"¿éTÑÿØÁqÕe«!Ioôr‹ëäGU)†+Ü‘f^1hVáH{ X~ÚŸßuüº˜ïnÓÎXœ®â³ZújGŒ™·ìVpB@&2*æðê‘Êú-‹"ñk±QŒMú£RÑES´%ù©&-!qK)ßöŒ¥YÛ)C6—퇤„j_¦‡ô!¢‰uî[]²kGF>N²ëédöðõµ³’¨´ë2'š¾èÒÓݼ)BúÆŸï¯ iŠðë Ê\6pšÏyÛ¡¨v9¸ùÈöŸÎïK™VàJçü4Í4Ý»ÆUü»$âëì]¥IKg ȺÏ>Ðwφ ùÙçeÎ3U‡úÝgo\$JõP¦î¨óŽ£¦ôJ>sm¯ ÝÇeN ›ùVéVX£#®cF\‹¼FÚíq¶[IõQ‘%Q¼• WUTL’¤[hÚhUnj ¶[2ÃOsp8§Ý$:ÜqÁé„Nßlø©9~¬\y˜–4Í;­”CyÎ%Jñè!¸z‘Yt—€¿‚F© íD̊χ÷ù³OÈG­‘âçòZkZñÚ(+§Ò–çJº!b¤è¶z€fsyK)<öÖ(§ì»\Ÿ¸>r=z_Û8Ñ<¸c—ÀµÜûÈ5Í6Ñå»_<ÄËj'yÜž¼À4B ºF¿¤~«99ÖÂXm¾H%Ù—ɼæ]Æò…Z@˜L¸Û•Qro¥µ Ö]’ôd=âsÁưòÅ ·a |2ävÑ3iýaT²4'ú¾¿Úƒkb]Œ '‹vÇh¬Šr1½‰ø2Åžã¶òaWL}´[†¨XÜìJéë¶b­BÚ³7Ô/‘ kzfEJæ¢éyÂX\ÍéOÄÎÞ\=3$Ã\#f¼‘ÂSZÐ70|9ñðì½2ŸÜD¼úš\f»k~L¥W…þ6F7Ú^L~ì®ËEñaQ:«˜ÛTvçkCý[ß$ı|yOÅbâ³yÚy†•©&µù¸é™7±ÐýÖ%µ?ǵL|Y§ôËóÌ»ÎGÍ:y=2çèt4•¤}$m´²ÍBŽV ½K“ä>zÁ'ï®.”@$¤ñ~¥®ùÂÛ7ÛfîØî O½ZÂ}ò$nðUhk;ØîºuþéVlü𹇱ˆ‚´Ddý×—¶rAEÚWŠD^I郋ÔÝhÛãÖæg1G¼¨0Á& e—~ mó‚±>qÐyýQ¦-›Ú;ˆæÈ—@6dq©¼Aåy;“íÈŸ´ŒŽ%|!qdÞ[»ŠŠÇ›wšèd æm³¬»H³Ç¤¥%?§²²}­Ï<6Ÿtyè¡Ýò·‡LZ“uÖn˜ šË¹ÍÕÃwª¥t²Yð]/\„ÁT™ƒÞüKYøMT/y-4©Î²Fì1Ìod†tgz£›v€žãúœŠ¢+“Àœ‰ü9,ã©þ€nÕ=CKSêœT…»—ˆoa“·X²êg{v{Œõìæµ…jn*¿ÌmëÍKÀ_Ü7ú¦uæV‹1§îJ–;©:*žXÔ×èÆVô%àöÙÊå$­ü³t$3’£ûVé´)pD„êŽK–ïDÆ4‹BÇ‚ºdûÁܶÉI,»yû|:ÍSëéð–¬âzL×[!­8¤™&á_Ñt} îÜ¢Ú¼¡Exˆ†'ß^ci¤Ò‰â¸`8)×*ý²U ëWûŠ?>á¹ Õ‰[Äz5qžžš¤Ž xfcq‡efÓ5Â’{»-ÕeøšïEý•êûÕªðC\¯–ôãV‚‚ßõÏ‹1”7q©ò§]ú(â^<¹KÂ¥ˆ×Êݹ„}½ŸâùB¿*­ðmká¶dFÞ¢ð`·½éØÅ?õÈ~óFäDldi§)}¤€Ô¦çMöôËôBsŸ"¡Æ³ÆpI›“R-7LQýUyšE7e¼ŸI?O2« >j:^qY5£—g“Ì5Ý%ÃyŋɻýicwÏ©°g¤ rf¹H…ÛgËcŸ”cPÕµù-Ö)™Ú5uzI¨w;+í‹ä3±޵vLã ‡ÒNnµ»Ô}n¦YL¤™²YW ‚¨ŒKŽ4úz“Z+V?/ŸÍÍS%ý×oé È [©÷ú¨BÇò|`²õh|«‰¶¨Žc—Öà0X¥«%0Ó ÛýºF¿ƒµžFòJÄT™¿ï}A œëõ¡SqÝsäQ³]2˜•_ñ#–ápË;5¤1ņ¦Ë3¸k¥“ŸÊõSUÔ‡y±Ï_^ð-Ìü†¡Ú`¨Öí}*¾8´cíŒnNYõ—¨š lܰâ²'ñze4a‘\C…“z r6dcè½* ÄœpÃWy3ƒ¹>r_™*ùƒç| Ä7U¾îúÉ~Ξ–ÀÈŽ('Af—ï*º>ÓDû¬á«]±6L+åøJÕT5ª÷Q ;myÔ´Ôâ¢Ns†Îñ¥‰NßÿrfÞ endstream endobj 346 0 obj << /Producer (pdfTeX-1.40.20) /Author()/Title(Introduction to BiocParallel)/Subject()/Creator(LaTeX with hyperref)/Keywords() /CreationDate (D:20211209035418-05'00') /ModDate (D:20211209035418-05'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) kpathsea version 6.3.1) >> endobj 289 0 obj << /Type /ObjStm /N 89 /First 809 /Length 3982 /Filter /FlateDecode >> stream xÚí[[o·~ׯàc‚ÂâòNâ¤NÚ¹ØIœ4ðƒ,olÈ’³’Ò¤¿þÌ ¹+®´RìÄ8E‹Ö.——á7ß\HÊ+é%+˜ôŽ ܤ”,&­…ZÍ”€Ö ™Ö î³ô¬™óü’ð(` íÉ`Y€ ž ¥ÚÇϽËùüú?œŸ¦Ãéä|1œO«þ´ºà׃áÇÁE9ã»ÐòbP Æãr|ÿçŸ{ð‡³÷ÒÀxÄøÛw¿ƒ/ô5¡3E`MãñéÆ®ŠºZaûbà&}µu}ŒÍVß½édÎ<`|= ŸFíÙèûñ]Â$>PT„ô€¾æëŒèš >ÀLüE5—À9ã/ï1þªü2g ˆhº@U?@åd>ƒˆ¦)ÑX³é¢–3JfTuXž»Ó/Œ,lÁ]`¯'ÕtqMêÃÕ`2»Tådø•ñ}6¯0Ë#hy\~ Ë£'» {Ì1ÏEÙäA3@Šñ¯À¼‡AŒöø°Ó¢_`¤{ÙWµ…ûÿxX7ö°V×äa¡›Û{MËQZ.ÔrÌœ‰èíŽòÞ"š?wù9í½wÎõ=Ü!Ÿ÷aÅ'X½‹âˆxukWídf²¥ÚWåû–3l5ÁáÕ†¾I­®ð –$!hh5F¶3&õpÊöE-+–µAüÆôaiô]]#¶ }ÝÆ!Œ’%6±ÇS„‚d̶°Š–¬ Û#lEF¨V"Iã5IŒ5.,G.{Ç«"Ý”G+(‹¨Ò T¶TOåÓ#á¯kÑ{z/}èÖUç<=K#ë ¬^©Øêi\ê׌KeÜ ×²±åÔmÉÂÞ郔Ê4g]F Øýî83&}p#£—ÆVXÂÚzÆÕ›>Mض6ÜÀöšý©¢²KcÒÓ'¤Hò±lLqãOMW0IyJA±lD€«£ݺ-õ±”>b:K­T¯TA)‡$X…ÉÍcMˆIšú¤k&-–[Òhl,ÃyÉ7ñj)Kã&Ýà¦ï•‰­‰ØÊf1'š”åðª({T+i4p°–Tˆ5žN#›Þñªƒ–H„.4­)ÔŠ£Ì¿4¬*¬þä«a/¢‚XIㆰ‰0éê2¯8Ž´PƒÂý¨½&–œY.hŠ”WÍ’ã²ôßEøo²×W¥q·ÿG¿ÙýæÑoêk&íý&‹þz9Ú¸$Aš§6¨ÿÞ%©^KiùHkb-Ûó;öÁr¾”Õý=œ¯ë¶ú£|-nºB£ôEú ”€!œ1ñ7f#‡{™`ÈszÁ\£œxõÒb`fWSˆ”&uëjÇP²Ë Óª-„sêcŠ$1‡€Æ€E¤ÃƒÎk è()–)…šP`ÔIƒ#eÙQ*¬[ªoÚ0t à I*Q^‰í „(Pí¡>fù¼¬$N(¡zi…¦¢¬"Ò³× ûQ¼w¼*‹ùD ŠrkÝSû€hP™Óì üráq9V£ëù´Š_6<\AËëÇ'/Þ<ùi·¬ǃÉìp:™îM¯è4\Ì˜Ž½wé«¡Ãv¤¿*,0 g\þp6įzœ=þhpýk9º¸œ#=ŽbÛl{|>†'ã’=~çó˪,ùü)_ðÅä §UÉ?ó?øþ•ÿÉÿ,«éýhà½ÿûߨµ¾Ûì<{¯^ürò[ÛyžŸG€ºÛ}œHþÄvÿQb›ÿìq3zBþ‚žòüã }Vý†Ë †æ"KåFÚ` d|l…mÞämx{õæèÉÉþO‡Èš(vŽÊ‹8\7gZl3ÐJà?Bô’¶"'­XRVlˆ7ç—dÁo{¸åÁör%ÜÚÁ¶Ëõ(jÂgrŽîƒ#NBã:ŠÖ¢§ œoEK%yp@zÖ±3=-ë—æ¼im‹}ë?Ûÿ}÷ía²¾ÿ†ñµã ú÷L±b|8;äæ§Ç&f>uú€w}àÒ*ØŒf‰¡Ñ¤¬ÈvŒ€ï··óþÃ7O–Þ¿;ŸoÍ:8Hpÿ±*Ôw“°#dMƒÐ9Æç<<"Ͼ“Fôè²í©‘™ Éà_ÛtøÛÐñîàÉï'oÚtlàÁ‰gŒ‡Æ„²[XÀlð´á Û£®0­²hjGÏ×õ¨‘·[k^¿{zòvIÓv±MÎÄÿšý@ØdãÃ7“'&NL™qw’¯8ë™.Ò×$¸:—Õ+ $›6[·Zaž¿|süêä§g£«³Å ;ØâVø_¤|ùw¼pÌÙ²Œ+o¾­“ù²,Ü&¯Òù¢¬dNÕ~¤„Òïr'5j{R•åâ¶­{Ñ­rïÛg‡'/_啨ÄKŽ$€ `Ô÷rÓÊ Vôm=E[Oµi™É•”ª-h›±Oi6ß\ šd»Ü>´7Ü]û¶ÖFa¹Jmr!\È;—qy«¼ýòåÓ×û{«ôns%ã[-…ÿŠó”ä·\ûRyÙZ°-µUGþe2œžÃ!pŒ>|(ñþ匽W"?ÀÐúTÔìÀ²Mt:E¥3 V»wqõFrj²}²p2eÜ‹¡±ÈÄhÃhMòò Ú²‘µ£ËGÔ{ºz=¢Y<ÊÕ§¶útŬùæqsuüŽ‘Ÿ(YP­C%X8;s±àÖ ùfŸòÓEÚj6çX|ï(;ËžÞÈ\ÂnÙ3)ÒÖœIG{ómÉ?Œ˜ÒMW¦B¾aþ+-ȬÆé- Å‚ÍöþßaƒR­l:®'æF•°8îf%½ñ±å,ØÊ<ô½L³7ªfsŒs&`ïv0¨pý9Ï/gôn!õ­ÁÒK}¹m´•Udn™n!!CîÙö#Ä*¼°O·ˆ<{ð6léWpIq \ú.pmÞC¯BSkÐL Z‘A+îÚ¶ï!Wí¹Æ~[”38±Î|o[¿çZ…·Æ2¢ß ¾x7û«V]Ë Ú·¹Œ8ȶn·WÑ­eÛÎ":CçîÝÆ ò*²o%<óª»@¶uo¹‚N­…ƒ5­*ïÝ,YªeS|jbaÝãÜ:6|£u†¯´.ð(ß¼jŠïƒÓèßFç°Ç Ä„¯QЍ%“1½ÃÎ'¾Q)ã¡úô{¦2ÉPñL©‹t÷ñnt¼Ûâ[s˜sØ„;½Ú‰ïòÓ=½Šœ^.Ý&­…á/N@ãÛ¹+ƒŸ/æcØ{Í’ÑXZwÐd¬ÎVQ²ÔÍÈì€Y²ÈBÔ(•bâEU~f¡ý=Fªš¡Å–¡>yÈ3|5Øu9>Ôr¼Ý"G·ätàñ¦‘#[rœÍá#E=ÒùΑ4§×ë#]CŸkÓW£¥9­Î"ªF­“„ÖÖY‘Þ0ìÚ ×£t¿ŽË6œZÛ9’4r,Ú†E+7kdd.ÆæêÕ¯“zi†nõlC»iÓ^KSu¸Œih7ºs$Ღ6 ¥¦èT/Žl,!ˆ%¡Ýé†v½Í•E޲Ž4—ÌÙk…nX™«1”nJæ†Òè†wå7T¹ïëßW”Þ"&×µ j,¢ŠN14RuxlØ–m¶Eî?¢å*çW·‚o%3ʆ_ÙæWäéDvh$~…ïIÉJEC©ÐÅ‘-‘y:‘ÛÒ‰h˜[vn°ÖT"„EœÊ¯¬ Mٖѳ‰DG*j º…ÄðÉÇáw|°hÞ{<îÏÕü>`Ž«î½kX`û+d^QÜKyÀ›×H¨iRXãâJÌFW£ùÊ´M¿ÓUl±Aƒ€ô;TcîÓ‹=Y½O?yÌjÜ}úYã² Ÿ`"¬kæ¬;u£BPE. 1Ńxª@H2€ˆdÞÃC…Ê)P¡e'¢PX4+é§?h±DS]:»v *-ÚU Z¯ôeüJ¨I•CËfÎ:n ¤ê½Ùâ¬D®ÖUÎäÖê5ö7¢£ú[ÕQJ;³ »»¿Ö{]ho&Èa9U»q«îFIV›a¤2›A 65¢ÕšŽ]¸;Ce‡šNl:ªlBw#©lݦFôQÑÝHžá¦Fé¿¡²îT9nTŽÇ—fúj¼ÛtwéîÓ=lKf[ÉM3éâîPÇ ýêõƨV$Á‰¨è>íÓÒ£ɧ½xæZßêST¶Âß(Ý,Æåáô¼ä¯gåòÈõüºœÄß)²Ð¬Fÿ[ù© endstream endobj 347 0 obj << /Type /XRef /Index [0 348] /Size 348 /W [1 3 1] /Root 345 0 R /Info 346 0 R /ID [<591435B02E9B742DD4607EE32891D59F> <591435B02E9B742DD4607EE32891D59F>] /Length 834 /Filter /FlateDecode >> stream xÚ•KlQ…÷þ/Ú*ZÏRª®WiK«ªú¢·¥­z¥^m‘ ˆˆ "âÑxEDDÄ@D„ššì‘ššˆ©à|kòe­uîýoòŸ½ö5³“ÿ2³ÌÜ*Æ µ;éüv”ƒ,!2²mؘ@6ƒl+v"˜D6“l[ŠÉf‘mÁ–€ÉdÕdýØR0…lYv*˜F¶’¬[ÊÉV“mÆN3ÈÈ6ag‚Ydd=ØÙ`Ù²nl˜KÖDVÀΕdmd]Øù`Yl#¶ ,$ë#Û€­‹ÈúÉ:±y°˜lYv XJ¶“¬» ,'ÛKÖ†­+ȆÉZ±+A-V÷±[ê±9Ђ]ôšŠÁ:lhk@3h2³ÓºýuI‘jIêì¿„ó²úÖd/ȶ%uQª=©KRI]‘êLêªÔ†¤®ImLêºTWR7¤ IÝ’êNj\ª'©;R›’º'µ9©R½I=”êKê‘TR¥¶$õDj ©§R[“z&µ-©çRÛ“2©`ûÁ0 ‚Cà0t³2UCW¦ÛZ vaë€.`9X jÀ* [ÐëÝGÁcà8Npçúµ½(õm[ñ+²p¥¦4¸}ø¦LÍ£ƒ¡¾MpËß× *µ ÕŠ2…ʤ6Ò(q«y¯¯Q«P5(D¨Ô T†?hOhÚ縵|Õ×TM»Æ;ïÖ=¢F>4Þµ`™[ÿAè51ŽQx§Qç6øZ§Lq0ÏÁSÔ%šÝÆ~ë#­<@¥ƒA9ƒæ·s•úMVF°#‚e=n—?é”ý,·`›Å.0àvs\§lÂÌKìv»ûS{øñ&ã M ¹=9¬S¦)ŸàºãÛ‹‚à΃ëŽ "1.27.5" ) ## ----basic-use------------------------------------------------------------- result1 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) result1 ## ----same-rng-------------------------------------------------------------- result2 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result2) ) result3 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 200)) result3 stopifnot( !identical(result1, result3) ) ## ----different-param------------------------------------------------------- result4 <- bplapply(1:3, runif, BPPARAM = SnowParam(RNGseed = 100)) stopifnot( identical(result1, result4) ) if (!identical(.Platform$OS.type, "windows")) { result5 <- bplapply(1:3, runif, BPPARAM = MulticoreParam(RNGseed = 100)) stopifnot( identical(result1, result5) ) } ## ----different-workers-tasks----------------------------------------------- result6 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 2, RNGseed = 100)) result7 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 3, RNGseed = 100)) result8 <- bplapply( 1:3, runif, BPPARAM = SnowParam(workers = 2, tasks = 3, RNGseed = 100) ) stopifnot( identical(result1, result6), identical(result1, result7), identical(result1, result8) ) ## ----bpiterate-ITER_FUN_FACTORY-------------------------------------------- ITER_FUN_FACTORY <- function() { x <- 1:3 i <- 0L function() { i <<- i + 1L if (i > length(x)) return(NULL) x[[i]] } } ## ----bpiterate-ITER-------------------------------------------------------- ITER <- ITER_FUN_FACTORY() ITER() ITER() ITER() ITER() ## ----bpiterate------------------------------------------------------------- result9 <- bpiterate( ITER_FUN_FACTORY(), runif, BPPARAM = SerialParam(RNGseed = 100) ) stopifnot( identical(result1, result9) ) ## ----bptry----------------------------------------------------------------- FUN1 <- function(i) { if (identical(i, 2L)) { ## error when evaluating the second element stop("i == 2") } else runif(i) } result10 <- bptry(bplapply( 1:3, FUN1, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) )) result10 ## ----bptry-REDO------------------------------------------------------------ FUN2 <- function(i) { if (identical(i, 2L)) { ## the random number stream should be in the same state as the ## first time through the loop, and rnorm(i) should return ## same result as FUN runif(i) } else { ## if this branch is used, then we are incorrectly updating ## already calculated elements -- '0' in the output would ## indicate this error 0 } } result11 <- bplapply( 1:3, FUN2, BPREDO = result10, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) ) stopifnot( identical(result1, result11) ) ## ----RNGseed-and-set-seed-------------------------------------------------- set.seed(200) value <- runif(1) set.seed(200) result12 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result12), identical(value, runif(1)) ) ## ----not-RNGseed-and-set-seed---------------------------------------------- set.seed(100) value <- runif(1) set.seed(100) result13 <- bplapply(1:3, runif, BPPARAM = SerialParam()) stopifnot( !identical(result1, result13), identical(value, runif(1)) ) ## ----bpstart-basic--------------------------------------------------------- param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16) ) ## ----bpstart-continuation-------------------------------------------------- param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) result17 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16), !identical(result1, result17) ) ## ----lapply---------------------------------------------------------------- set.seed(100) result20 <- lapply(1:3, runif) stopifnot( !identical(result1, result20) ) ## ----sessionInfo, echo=FALSE----------------------------------------------- sessionInfo() BiocParallel/inst/doc/Random_Numbers.Rnw0000644000175200017520000002450214136050065021255 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{4. Random Numbers in BiocParallel} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Random Numbers in BiocParallel} \author{Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}}} \date{Edited: 7 September, 2021; Compiled: \today} \begin{document} \maketitle \tableofcontents \section{Scope} \BiocParallel{} enables use of random number streams in a reproducible manner. This document applies to the following \Rcode{*Param()}: \begin{itemize} \item \Rcode{SerialParam()}: sequential evaluation in a single \emph{R} process. \item \Rcode{SnowParam()}: parallel evaluation in multiple independent \emph{R} processes. \item \Rcode{MulticoreParam())}: parallel evaluation in \emph{R} sessions running in forked threads. Not available on Windows. \end{itemize} The \Rcode{*Param()} can be used for evaluation with: \begin{itemize} \item \Rcode{bplapply()}: \Rcode{lapply()}-like application of a user-supplied function \Rcode{FUN} to a vector or list of elements \Rcode{X}. \item \Rcode{bpiterate()}: apply a user-supplied function \Rcode{FUN} to an unknown number of elements resulting from successive calls to a user-supplied function \Rcode{ITER}. \end{itemize} The reproducible random number implementation also supports: \begin{itemize} \item \Rcode{bptry()} and the \Rcode{BPREDO=} argument, for re-evaluation of elements that fail (e.g., because of a bug in \Rcode{FUN}). \end{itemize} \section{Essentials} \subsection{Use of \Rcode{bplapply()} and \Rcode{RNGseed=}} Attach \BiocParallel{} and ensure that the version is greater than 1.27.5 <>= library(BiocParallel) stopifnot( packageVersion("BiocParallel") > "1.27.5" ) @ For reproducible calculation, use the \Rcode{RNGseed=} argument in any of the \Rcode{*Param()} constructors. <>= result1 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) result1 @ Repeating the calculation with the same value for \Rcode{RNGseed=} results in the same result; a different random number seed results in different results. <>= result2 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result2) ) result3 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 200)) result3 stopifnot( !identical(result1, result3) ) @ Results are invariant across \Rcode{*Param()} <>= result4 <- bplapply(1:3, runif, BPPARAM = SnowParam(RNGseed = 100)) stopifnot( identical(result1, result4) ) if (!identical(.Platform$OS.type, "windows")) { result5 <- bplapply(1:3, runif, BPPARAM = MulticoreParam(RNGseed = 100)) stopifnot( identical(result1, result5) ) } @ Parallel backends can adjust the number of \Rcode{workers} (processes performing the evaluation) and \Rcode{tasks} (how elements of \Rcode{X} are distributed between workers). Results are invariant to these parameters. This is illustrated with \Rcode{SnowParam()}, but applies also to \Rcode{MulticoreParam()}. <>= result6 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 2, RNGseed = 100)) result7 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 3, RNGseed = 100)) result8 <- bplapply( 1:3, runif, BPPARAM = SnowParam(workers = 2, tasks = 3, RNGseed = 100) ) stopifnot( identical(result1, result6), identical(result1, result7), identical(result1, result8) ) @ Subsequent sections illustrate results with \Rcode{SerialParam()}, but identical results are obtained with \Rcode{SnowParam()} and \Rcode{MulticoreParam()}. \subsection{Use with \Rcode{bpiterate()}} \Rcode{bpiterate()} allows parallel processing of a 'stream' of data as a series of tasks, with a task consisting of a portion of the overall data. It is useful when the data size is not known or easily partitioned into elements of a vector or list. A real use case might involve iterating through a BAM file, where a task represents successive records (perhaps 100,000 per task) in the file. Here we illustrate with a simple example -- iterating through a vector \Rcode{x = 1:3} <>= ITER_FUN_FACTORY <- function() { x <- 1:3 i <- 0L function() { i <<- i + 1L if (i > length(x)) return(NULL) x[[i]] } } @ \Rcode{ITER\_FUN\_FACTORY()} is used to create a function that, on each invocation, returns the next task (here, an element of \Rcode{x}; in a real example, perhaps 100000 records from a BAM file). When there are no more tasks, the function returns \Rcode{NULL} <>= ITER <- ITER_FUN_FACTORY() ITER() ITER() ITER() ITER() @ In our simple example, \Rcode{bpiterate()} is performing the same computations as \Rcode{bplapply()} so the results, including the random number streams used by each task in \Rcode{bpiterate()}, are the same <>= result9 <- bpiterate( ITER_FUN_FACTORY(), runif, BPPARAM = SerialParam(RNGseed = 100) ) stopifnot( identical(result1, result9) ) @ \subsection{Use with \Rcode{bptry()}} \Rcode{bptry()} in conjunction with the \Rcode{BPREDO=} argument to \Rcode{bplapply()} or \Rcode{bpiterate()} allows for graceful recovery from errors. Here a buggy \Rcode{FUN1()} produces an error for the second element. \Rcode{bptry()} allows evaluation to continue for other elements of \Rcode{X}, despite the error. This is shown in the result. <>= FUN1 <- function(i) { if (identical(i, 2L)) { ## error when evaluating the second element stop("i == 2") } else runif(i) } result10 <- bptry(bplapply( 1:3, FUN1, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) )) result10 @ \Rcode{FUN2()} illustrates the flexibility of \Rcode{bptry()} by fixing the bug when \Rcode{i == 2}, but also generating incorrect results if invoked for previously correct values. The identity of the result to the original computation shows that only the error task is re-computed, and that the random number stream used by the task is identical to the original stream. <>= FUN2 <- function(i) { if (identical(i, 2L)) { ## the random number stream should be in the same state as the ## first time through the loop, and rnorm(i) should return ## same result as FUN runif(i) } else { ## if this branch is used, then we are incorrectly updating ## already calculated elements -- '0' in the output would ## indicate this error 0 } } result11 <- bplapply( 1:3, FUN2, BPREDO = result10, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) ) stopifnot( identical(result1, result11) ) @ \subsection{Relationship between \Rcode{RNGseed=} and \Rcode{set.seed()}} The global random number stream (influenced by \Rcode{set.seed()}) is ignored by \BiocParallel{}, and \BiocParallel{} does NOT increment the global stream. <>= set.seed(200) value <- runif(1) set.seed(200) result12 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result12), identical(value, runif(1)) ) @ When \Rcode{RNGseed=} is not used, an internal stream (not accessible to the user) is used and \BiocParallel{} does NOT increment the global stream. <>= set.seed(100) value <- runif(1) set.seed(100) result13 <- bplapply(1:3, runif, BPPARAM = SerialParam()) stopifnot( !identical(result1, result13), identical(value, runif(1)) ) @ \subsection{\Rcode{bpstart()} and random number streams} In all of the examples so far \Rcode{*Param()} objects are passed to \Rcode{bplapply()} or \Rcode{bpiterate()} in the 'stopped' state. Internally, \Rcode{bplapply()} and \Rcode{bpiterate()} invoke \Rcode{bpstart()} to establish the computational environment (e.g., starting workers for \Rcode{SnowParam()}). \Rcode{bpstart()} can be called explicitly, e.g., to allow workers to be used across calls to \Rcode{bplapply()}. The cluster random number stream is initiated with \Rcode{bpstart()}. Thus <>= param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16) ) @ This allows a second call to \Rcode{bplapply} to represent a continuation of a random number computation -- the second call to \Rcode{bplapply()} results in different random number streams for each element of \Rcode{X}. <>= param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) result17 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16), !identical(result1, result17) ) @ \subsection{Relationship between \Rcode{bplapply()} and \Rcode{lapply()}} The results from \Rcode{bplapply()} are different from the results from \Rcode{lapply()}, even with the same random number seed. This is because correctly implemented parallel random streams require use of a particular random number generator invoked in specific ways for each element of \Rcode{X}, as outlined in the Implementation notes section. <>= set.seed(100) result20 <- lapply(1:3, runif) stopifnot( !identical(result1, result20) ) @ \section{Implementation notes} The implementation uses the L'Ecuyer-CMRG random number generator (see \Rcode{?RNGkind} and \Rcode{?parallel::clusterSetRNGStream} for additional details). This random number generates independent streams and substreams of random numbers. In \BiocParallel{}, each call to \Rcode{bpstart()} creates a new stream from the L'Ecuyer-CMRG generator. Each element in \Rcode{bplapply()} or \Rcode{bpiterate()} creates a new substream. Each application of \Rcode{FUN} is therefore using the L'Ecuyer-CMRG random number generator, with a substream that is independent of the substreams of all other elements. Within the user-supplied \Rcode{FUN} of \Rcode{bplapply()} or \Rcode{bpiterate()}, it is a mistake to use \Rcode{RNGkind()} to set a different random number generator, or to use \Rcode{set.seed()}. This would in principle compromise the independence of the streams across elements. \section{\Rcode{sessionInfo()}} <>= sessionInfo() @ \end{document} BiocParallel/inst/doc/Random_Numbers.pdf0000644000175200017520000047002414154342105021263 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 68 0 obj << /Length 2881 /Filter /FlateDecode >> stream xÚí\]sÛ6}÷¯à£´S"Ä7ÐÎì¤3éL³^ÇÝ™´´DÛšP%©xòï{²H;I'"%¹«›Aòâ^çÜ{0‰n£$z}–tŽ/¯Î^œ IbµVÑÕM$lB˜d‘’8šèj½ÑñïW?Ÿ%$±‚²(!2‘Fã¨U¢uTàUŸ)º|^¯ñú„º×s¢´ˆbF åá忤cžŒŠj¶ ¿,ÇÌŽŠÛtñ/'1Šë»-J„»/—å½»?Ëó wsxø©Ÿ í*ûMßíéçŠE,!J1éôŽ·„ëHR"Y­ùeº˜.çã˜i3z»ž_gŘÊQ.Ìáør¶œ\8%Ó"Íó,oiøâœ³ˆ ¤¹Æcx;d1"¬z0/õæÇ\élì,»7½8Gõ,±ŠùÆ·Ï£’„%j«é_œË$¢”X)½˜¸¾/æ†p[kój:«²é÷ãX;ÒAØ»lUeókü@‹ß…‹,aôŸáôÇå|5Ë7Oý”MîwØ­‡zl\4¨&ŒJš'XŽk"h­úËE•-ª²-vql¤á`ìîc,zSƒ®ón²\e;¼§k[_mƒÞ¡¼‘”%Œ”ø “'›UÑŒ O…§Âc*ÄEFß fúÅÀ¸†“˜ B“Y(øª,Û³4/‡ƒB£ Õô…§ÂSáaÐ|çXbàMÇp+5¯ÃFvôëà÷ŠÑ¯e‚åMý6& O¬sôo{ºÈiK Îm÷èŸzºO½º:ûãÌ!"€ˆ÷ĉ€’Ñd~æ®ÀBEŠhÇШȢ›³ÿ|c}<ª´ eâi‰ä0«L@V³^¯òtU›bg¥H)Iöª”ÉdG©Uþé·D&øÛ-ÞnõJ¦ˆnh áæa»“è>ˆÛ–F©ÊÒÉk[úòíë2˦?ìCxÜmÅÉ«8‘ÛёՒpo*B7äÆú$·ûYuw`z³Š`0œHJ€¢@+@È@ü™h$1rCo³ª?v“Äå »:¡eô`ì]´h딽iÄ$¡Vw5–°!SÕV)­²{&íyJÕ –ÚøñPÇMRjãM"Šð¿)·)8Äz/<ÐP›‚[ÛLª\÷¶%Š$’w– “ã´¥RU|:Z0$QöD§Â¿ˆã!ÊàbóNl$zàË,O«ÙrQÞÍVH®³ê~L“Q–-ËáZxÄ’ÆÙž’9nAb¥V½%s: *(ˆÅMÖŒSŽpŠv-- áÒdiN­Z†.³Š8K+ÙIA´Ð'²û*rÊ£AN&4¡Ôv]ï*x0[J")À‰KÔŽíÅÁ†HÎ/ܲ%®ûö°©‚&°nG#.†Rò8WmuÊ*-ªþçE¸"L³mŒ÷ôZ8nÝZ–·p¿ÃÒ<ÿ»¬Š,¸°€rê—ÔPì‘SrúĮϩþO|NŠå÷ò7>'ƒÁ­bþYkxr{Ö 2•›óÞÖj¨ heíñ8Ó ]Hð®±áî9TØâd*ðgËØ=v ¾4 Ýkâô9Dÿff=!†žbƒ£g¸íõ¡LK"”l/å=,}3_åÙ<[TžçjGoYeCºuˆÈ婞 Ÿ%,èã…f(ŠѢ¨©G<ËŒÈSÀ7âÊ’„é/¢‰v¼íöÈ™~xÛ)î2µ0×”A›Ì^Ù[ÎÀ%€Ù#œ×¥éP:A¦Õ]´÷–Ñà÷t”â½r°†R®ÏÓ¶Ro7Ë£u±‘òÄp§ÂSáñPn¿›d©ÐD1Qo“•­«½Htº¥b{#ëNïk¡¸D hâÌ!}6ûýïI4EÙÏx†ˆïýsDµa…aåÑ;‡é;UÂc;xbk›5ØÐщËá5Û_ΖˆDÌhr1ÆÿÔý{rÃwk¿¶dDðM²8[¤×yæö 9Zû¥G8YÞ„cѤµ…-Ön›5Dø¼6 ›¼¶ÿá·žã˜Öf+_›P¿éz2»ÓQ^¿~ž.YAÆ1:ÄèênV¿cZk³vqVØÌ_W6Î\Z­ò™«2ç|T-ÝQŒª;¼? ç7Ë<_:ñ÷³Åí¡WPq’1« Gy{Æžë }¯ â„sæEjZ‡ÀÿðæažÈúêEZ¤ó¶oðtŸá]tÓg¾ïew;*±½‚)’îwBY^à7F“Ï Å¡Ú“º–˜¶„Ñž°¦9!‘'&b†ÞL«¿ËzsSà™Ó}*‰¦£O1ë/–÷ «îQGlà†–BiÞ›BB­eW!.Òt€®[Ú|3NÄÄQf¬ÃæêÏúcš¯ëLš»ä?44OánçYý‘m¤‚!ݸ|âs$hi©6wl³Ð$+K2t1füƼç]…ìnT»T˜@ صXÞ÷>ÚÛ: 68𡾭Ïnƒc¯M»%£à¸…Ò|3<æë¼š­ò¬¹:ÍVÁ#ÃYð˜ºãÅ8ð`_/âsã%fÄ( cÚ=;ú#ܦ!Ó™÷vÄé÷)…Ï1­ûc‡šêG* IŒ(¥ÚUýñ½@d`µ‘t‹E‘Ì„¤¥ÑdYd-$øH½† ¤Ð 61\ÌlCñLùx˜[CŒ¥_å–Ø$Ú0¬]ª³ "Šõbá¥æýþâ Šî6 ת;|S B,­½]Ö1¢o‚¹Òèc:Ë]h°ªA²ÿ´–ñî°ø‰:›¨6\ÝeÛ\~*1Êáï%jƒ¤D£S]’ƉØ5jSPbÓÅ&iÝu~ 䟆³›e`"ÿ£Ë@n/ÒaŸ°~šö™¸NÔJ¢¬î,–”(¢xeXAÔç>uªs[§Gë?žîÊŒ{ $ ²:$' rYåS™¾ üÞq¹ö)Äi(¹Y/à~Oª‡É¿C­3³°4×ûìWN$sì²Õ 翾ý’õ0mF¢O¿>X÷c6©‚ã.×çè½(ÓÎåæ³²ª=„›:öqËlЛhî»Eåp\©áD‹ÍJv %† /!QQàŠ‘µ…þ÷¥¶®ÁÓÓ§½ð3t7ìÙdeÝfwb© ªÜ:JÖÿ78šÔFW§á™-•úûG“Èì(4¬Ã’™-}ã¯y±dÒ³Ë'à”©J-ñ JÀ'Ç@& ÆcúÏd‘Ì­ØÙ6÷×Ù$1-6QS‡ÿµ}a.¯¾POCêðµg\ðijga}fY³S_tf‹¬t4뺈§ps›>἞¸l×ìc=ƒ8AÞš`¬SÓ¡½Q»xS<µÂiÓònâñ8Z^‚h-z½xK±4t"%¬í6—™f}Ý›«W—_lzÄ~¢ýå2´›qÛI¦»|€o„'¦•› C3UíÎ[SÕ>UÚY½ë4/ë¹c7|}— îJUéRF¨VφH]5Ýãô&Eo°†ö¾±žÞì(4(é„ùÍ–B>÷ñÎQ„‰ÎCÎFÕÁÓanAv8Ø, ¤YkÛ|yqùê§ÿðÅt°‡nð$dRoýZ’ï`GÉšœf0j‘ÅÛI.wɯzÁqÃ$µõÓ*œÝ¤³<œ¹ÆÌÈ-©_\ƒÍÄñ–[CÒ¢‰p¨Ðf ålØäz}»™á9l +ØÜ@!{Ii(çຽFÎQQÍ[@Höð•7œž^$ÝþR;( endstream endobj 84 0 obj << /Length 1602 /Filter /FlateDecode >> stream xÚí[moÛ6þî_Áµ_”¡fùNj[¤@[ ÀŠ.Íö%ÍÅVa²Ir‹þû_äXŠ8Že;™Ä¢HšÇ;’wÏs’ ºB}¼=¼~¯Šq¬˜B§—Hl CZ0Ì(G§ct$Óñlr4dÚDŸæ“‹´8¢2*}E6õ×·Ùlôùˆ“()’”i:~ó[×çûõ{Ðè6 ©P˜i¨äÊË;>b&ªªdtý¨Õ…My+‰SÌÀ†Å…hŽÂDRà3±+ÂJk²v"Ĭ¥ý1äœGé´œ©/W×IeKJ¡ê[Z”Ùlêo²Ò·^Aˆ‹Ò¤‚Pz'¡LSc¹Øy¡Æ%,h»ºÞq5.õnkU?¸÷ª# g`êmYG)°Kûòa“z˜Â]ö6ÚÁcø¤° \ßvåÒÒà‰s#1ÇJŠ_ŒÃ ʳ‹")~l´¬¶°ü¹è»üé‚`d¢J$-9Èn´·X ¼G,V*«ÙMv9U»Ð´[ÍÀ!Qp õn’Ñ?ÉUúw8Ò‡ª£H1}WÆm¥—ñby»¼ØFíGçyl»ûó€OýÞ±yœÞ%wlœac¿…@¸ñùíÐ뮎àœ¿£~âïmD¹°j9ŠôÆÝù°;ž²‹<õM£$Íó¤‚õʶÊh^†&D÷‹Á„À`–8D[@^ƒµQ ¾ƒ!Û€`·áÊ,&•À”ËUlõ Š àä8k_Í'@3½-=‘æ€[~øp¤Ã02àX,µÚ¥‘­Hæ³"¥VþÙš 'fûZë'M¶±z8 Y¶€‡£Ù´¬Šù¨ò§ ÄOÒY §ÈHG¹5Rüô1ÝºÎø^L'-[ÁÇi9Ï«­Æ³ß†Ýb/Åå€B.FsÎÂNÚ+àõiUzÛ2ôK×3å]›‚§]Ýb>Í._u,ÌIzûùóñÉñ»õfçâKZdIîüýCûµdÐpÀ˳öáqB(!»à'cîµå´8ó#âH‡½Ý,!òðæåKï^ÎÎèù¹J-5è¹/¬9|›{z/ת¶¶¶è҂/d I‰ÑkÈlyÆ×–IóÅ$®o%cJ Rß*hvq¾÷FÅêä-0/˹R`XÓ«£¡Ô''… ËÜË·|ϪëF•É$”¾%ù</¹Û/q 6#A·gÚq‘œ©±Ò¡g ¦ÈjvàÏ|ém™Mﵸï÷+ÜÄ8ÝC¦,91ÍM:ξÎÓÂÑ=›G.ÂCU[žÎ'~¾ÂÅß­žˆÍBg!}w0ßë)p*%IÑæ0ŒV¦ç0ˆk >S-ïCÖs˜žÃô¦ç0=‡ùŸs˜þ¹ßÊç~ÙØ¾­`yê>X»B¡»g¥ÃUŠï„ 3ŽcÚHªòô€¤$= éIÇ€„=ë¤*†IÕXK­•Ù$Á¹~RUI& ,Y}+¨²ùÎÕ)Û-%U•¦DjµHªšXr¾Hª‚Ê*6»XÐaà¥Å> stream xÚíýoÛ¸õ÷üÚaÀ)XÌã·¨Ûn@;\»Ú^–¦Ø†^1(¶Òè*Ë>KNÒ ûß÷IÙ–ìÞ×’ÓÌ(J$­Ç÷Iòñ=–®XÐÕbö¾ùçG4€¦àùÑÓó£ožiÄ$Ö\ç—¢ÄD’ÎDp> Þ†gI1šŒ<2á«ùø"3–®"+\ù4› O “Y’çi~üîü/Gô~£"±´ï+…í½^}ïÞߟýrÄi°IM)aÁp|„µ’+Ââ(`”é`–—G½÷˜î‡/>¬þ]ô]ý{Vó) "+Ê‘O± žtÌU±ãÓOT±­Èθ ê¿ Û•ÐÈ4à‚ÄÌÁË.·‚vW¤ƒ·M9bE·cyíöŸý^ø›­l"¯RÄž¶o»ÒÈFiQeÃ$ï˜2–*ä4OªËÉl¼+òü¶ëQÿøšT§éÉgÀÑgt2,6åÀçÌ»WŸHu8 è÷$àÎpè¦Cåè0·æöÃÜ~˜Ûs{§³ˆ8Ì퇹½ç¹ÝæöýÍí›N˳ý>fû–n¦ýôØÒß‹T+‡ë‡¥Øa)ö%/ž¤Ð¼{ÇxêÇã©HŒ§FŽžô¶»wœ£ÿCœÍ—f0öW+Iûãâ×ó‹2ýežbH–,,Óá1 1Œ±tË *÷>«¼ðåXEÊ* bxÔCP BŒ#aƒK óiž¯ÓEW€ë>ˆJª&B³lwÅÄhÓ'B1(5Jò]7Ë5‰ë,ü C©MÜDæ~áo|5üMÖáo¨Û£”Ý[ìuí^„oâËä¢J²Â­^1ã8&Œªa÷o “DRmCÙLÄû·D( ˆƒ–»·dÈCÕF©+qChQ7ѹ»¸iP‰E´åþ#Ý!Q´.Q2°v”·Äa‡A”œ €ùm”:´¦°ib´» JÎ8‰ÖU¶Ë J·UöþA”Q+ˆÒwN¦`sÁò*ƒ9ð‘¶Hà(77!-P0…ÔvŒÎ0w$N÷—~p› > $ì♊dø¦LÝu!À~a™Y“†°eD-7„j ­ ˆl7Òó–” Õ¨² côy Ƶû{4.¦Yµ3 ÁdÉX+`07¼3¬"×&Rélg(aèi¬Ú( ØY(ÓJ4•×*N°1ijìVº°Ô¤=I> rŽkKÕÇÂÅ ¦©+Ëãh ¥îf*„¨¤n¢´C™ç0Cé¸P§ysì!3MŒÖ$þÙsáz1G%yîrçl¦‹Z¤Tù\Z¬i¥>ºGa3ël™¸â벚¥Éøëfã(©|{R6º—x3Uè3l–ýíù„MÇÑnÞYý 6º}†R$åol3†“¢ÌÊÊÏH÷Iã~ ¯.UÓåi¢Ã5ºNÒçkbÅuŠØ»Z=9¨Ø„?T®Ý&•AÓ¼L/ç¾ÛÍUê?ç?#k¼¡ªÌþåëÜOUˆî\[ñ¡°ùr7…°›E°å?K“2Ë?@1kU"mX™˜3‡OËìG|Cô°L\q+—¢ç›DûœíW­XøÄÕ;s÷4Ç¥> “úiœ½¿ªjàדüÚ×gÐÏ2aÕÕl2LÕ‘å OŸ¼t?Q!óy)$©Ýa.ûYæÃ“Ýzbæ-¢‘–WìP·V>¯ýïféÐá7*k˜Èës¼Yx•L}£ô„R꾎="—î¡.w[Îy¼NÍæ„Y¦ é1€OÛTDþÙဇ6#Ò§%®zÎêlDû”¸¢ÌÆÓÜwNo“1&£å \ù¬Æ¡ý jÒÖ’5»½Pío“‚ÂÄÁzÍU9°Q ÑÌg}ßî,ÁK(°í¼,ÌÍN¶Û qu|`îUÜ'½%4SÓ¤÷w;£·DÏ´|¸ô–1Q‚µÇ×¥?AF†5 ξ­-çCÎßcX*±–¿Çµåë!k[}¿Çÿáüû3; ùc&ôŠx¶ÿÓÖ;m¬Ô?{óÊýB»¯;üâÉŸÎ<ûÇ6¼ó5—Êå¼ÚE]狽Ýhïïl-roB è=ÃA¡’£³/•ôEçwÖ®RèQjõÆ8˜ŠÂ–²pÏP²Žùw½¢~¥·¿+—wÊŠ?ö霧Åû•C…õú¶Ÿ»7Ý`8K«ù¬x°‘{w_b…¯Þ¼xñHC:oß¾ÍÞ½ûbî[|œw<îûx… èÀM½5Úãvy¼ÂˆìÓ{;ý‰šþäÞîýÂííîrD 5Qj®aÝÖ2F'ðÈ=¡¯Y(Ñš:G&¼&®u±js}¯’ }ºJ„uUš ¯ÜzŽÝÁ‚½!Ñ÷sv³¬Ÿº‡"½­œóßÄöù¦gÙy‡cåîLgèH–‡îÒO¦Ö‰:vð¾÷{©$’‰€1cÃ{¸ j ¢ÇaLZ7ö“Ÿ+D^ ~ùiçôú%ŽÚ&0:«óšòµ«ÝûÙ¡3£Ô¹Ù¡{Ó;—3üKV>í,GÑ­î.t—2M¨ÔÍÙöoîÆùãk¿{âN ÜKáïpOlB‚ä¸+bYèž}±*Êb)—û½ŽQr2ÊL'ÂÈLÑfQø¼7YËÁv¾Æ…À5þG.%Q€À@k"}Lã6›r ØNsg endstream endobj 92 0 obj << /Length 2124 /Filter /FlateDecode >> stream xÚíioÛFö»~‘~‘k:÷pЦ@²k§»Èº®ª»Hƒ-S6·©%©¤AÑÿÞ7‡RJ Û"eF` 93ä›wÎ;†Áˆ x³)®ë÷¾½éᆂ7½×ãÞ·g’iIe0ž£0¤âQ‚ñUð¾?в«|6Röϳ˸Ñ/]G’¹öu’O. ÷£"JÓ8|ÿ³‡o·*¤¹½ßhììíî[Ï>÷þß#€4ÈIÁâ:˜Ìz¦›SˆVñPEL{?ßzQ·C¸íÙ›¿«¹›¿£¥¨@!-05B âp%5AXh'ÿŸŽîÂSKr3nÿAOð~(1í?¼“„„*„[Î4ü*ÜÜfçÊrÕV3˜+Bÿµý)àõp£ÿìݹ!1îõÄ«¿ýçNøìË$ó+þH»t†10 CB@Äý˜ßzíÍ¡P æá7ß ¬d½'ÜE Þ›{Å>óMƒÒïæ}æÛ£Ô7ö̷ǤoçïÞ¾õKmÑ‘òþì·gÀ—µ3 K¢azÊíç‹Â]”ÉlžÆî:þ=27'+²bÍÖ¯`×ÐÒ#%2h¶K,w 5=S¢1x*T!!ÅÒ7%InÜt¬ÔÚ1½Ë·=Rb 5Ú’êržTk®Ý'ŠáŘlá„›vP2•¨cAË¡ð!fѬ‰H§aKHFi£¨Šë¶`·À*)‡ûLR:iŸCÐM¦ùÚb–d×n ºñúPF35ÉgóEUIžù§£ò¸Z‰@!&r€‰›Z’FóC‰l,Hu‹dºŽÓ<ý¼¯T™Ð=Tæ642ÅlXT œHaÕ/âr‘Vå ÜÚO²É€ôÓÅ•“=_Oô †e?[Ì.½°ºÁ²*bx0š•î~QÆWîêÒÈògwG“÷‚**s}Iv\±eaˆK â+±î¸:S[³ÄôðÆc…Âp ¥öl;Ç!x_ºŽÑáŒ;‡×rA›µkZRfÜÄh_ãÎÀã"K5ôšY›¯•Êé&AeëªiüÃOÔžkÉš™:p\~NÔ}B ácgeõãËÕ³ ø]DPí"&p¾;‡¶| ©Èã‹,™ž´ tÈßM__\¼½úWËèZ_v¡¿ÄE¥QÍ¬ÜÆèüMƒwöpÙc=ÃÇÇžFçÁ¸¶–©fœ¼Ýh¿®€žG•Ï“i–WOÓØ'WqV%“(í=·ã¯Œ±Ûÿ»$qOAj?9¸j†÷P˜ °´JZ·Þ¼a÷ÐÈ8Þà€š˜Këz 9E' !jg¡wÚ)b5gý~Áè¡xÿ]»û§¤º9rzRP`9 LœO×9… db!9Lx2ÅyÈl‚€2M¨„@yÂ*à#R MU%ÆA¦ÃÖP’ðÙ6QªŠFâåNB³¹#‰„$À°€ އö>bB"ÁÔÁÅS¤ÀÐ7ði3`@jðtkmIÇòã+±Êöfp›e’gÿ[d“ÁuÖ’Ø+Ÿ8ž¼P&¼I`Æ[ʤ8†Y¸¯/F§ÿéå×Ë ¹ZÖeX®3Øå=ó#ç)ìC˜t)§Ì¦›ŠwÀŒ8`’Y·8HÖqÚ7#^S=WW9²L€iÔrË·™nÖà `Ý”‰¦› l/˜w¸½ˆ u”˜o¦I%»”qRÓ†âî›o® y”¦VÎ?•>Å,R¶ø£1“¼]D“xºHÝ]OòqñÙÝM Só1WqQ¸‡J4*®ú?Æ&m†"×\.®¯?Y»0³Afp])Ј’–6/Òœ`„etœ½;'û°Ž1„ùªT0·ôÍmeíj1‰KOÞ¬ÁÏšÍ[¦3%°/»r¬§@­•¿8Í‰Ž´€//Œa$Y6Ã@Ô@uÆ@¹éá}R`?庉P«>)€ä0XÃh_Ÿ^Cw˜Œ!ǤŒÒEä=SŒe[¬*ɱ›µ–?ÊA ÿ4Øš¬ò¯Ë§ÇÞrAüñkÄÇmÙ !¹hpæß_㇫¬K†œ¨þU\šê‹#¢Sp ôÊ oßÁþNë©Ãñ;TÂüá° 7ŽÅ™ïö­?ZÂ}† =‚Âc¨ÀÎòfÝ‘‚D`òsá‘™èX©õFôªŽ.qï~W¬hv®¡L—ñ¨·$T',Ùþh—7;sêÓ. Ií× :®$']”ÆèÛ.dï¾òg¬×æ¯Ûì´É~r6ÈnKãò|³Ù# wùé&Î|§÷jÌÉ6so·>sá]f7ÉyÇ­ [Ãlï(Â=p»g\š-ëNãEâ(úò¥ÿ´ãÅS+Óz†ýÙÅŽ§eÜÅa{j¤ ø¨¸µ7L\÷Ã}?ƃ_I>þs>û=O0.ûnê»ÄùPÎ}ÿ»–’{|"¶'üQ ñœt£äÏÞž¼=Éo']Ë8º(ÏsÖŸ wÎ^½ýåô‰zº«h¯KëzêŸD¿'>ØÌ,Þ›®¾™ÆH1xœ…_˜½Ù+›@è×|_ijÜÚ¸B¡´çÔÕΩ¯ ¨«¨9ÉV›©1Ñ!Ã÷ïü`#°ûÁ%¢E’ËÝë©L‰ñ2šü¶ªMØîèc”¤Ñeêñ¨øtSQUfòï~[±zÅ '†L}™n}×\ûOz¸¤ˆ)‡‚ Ì}ßAjOǽ¿©ÄÝ„ endstream endobj 100 0 obj << /Length 2198 /Filter /FlateDecode >> stream xÚí]oã6ò=¿Bh_dÀfùMñpû°‹î.ph·¹lŠ>ló ÛL"T‘|’¼éâpÿý†¤$ÛŠ$N$;‹ €EQç“Ùá(QA‚¯_Š«Íûúröñð(øxòîüä§’iIep~Œ¢ˆŠSD ÎçÁ—ð,ÎæùÍhBU~ZÞLM1"",}G’ùë»$ŸŽã"NS“Ž.Îÿu‚‡ÒÜݯ]Üè»Ýýþüä?'ˆÆiˆ””#JE0»9±ýœ D´ T„”ÅÓ—'ÿ~4R!س "-0µì× qhIMÚ³ÿÇG‰iøå »¸°l\'„À;¢3€\ø:$ÕX7·‚R)9nne$”xÇ\÷@ˆ«ªø <þáÝéÙûŸûüþýÏ?@ÙxInA‹SÂC‚9V£ ¡˜‡A %ša–!#Z+Î0÷oMˆÐ€#¥L׈Rð &¼™!˜èH2v/SÔE3!0…IxTëf‚mÖ—íÀ: º×úÍmÍ&2è^ì¶<êj8è G4\ëFé†EÍaµc¥Vú½Š»5K€H½ >üþ‰Zui4¤åËO`Ù­Œ#ˆFu÷V’¦Ë²*âÊX#TX]ÛˆÂ?1æïdš¤I5¢QøÍ?Ï/[csfSF‘Žv¸M0ð¹f[ˆðnƒÛÓÅJ¯ŸHXÂõõáˆÓ¨'Š$ƒ‡UÅ·‡¨•ˆkÙ¨Ï´Õ §0üï$»ÚÐ#N—WþùíµÉ«;L2ÄÄݰ zZ¨"py“ÓÉs©“ÈñŽåáHEò9èÙÅ5üEšê×*S`‹UG³ß¼y6†GÜ•ãåw¤@•Õo€(XG¿é}öÃ3«6cëÎ20•·qZæÞX\™ 3“µ(Öå˜P6m:I6Ë­ * 3«¬ã#Ô˴*í“Kß™d_ó¿ì@3÷—þ5³pmó5É—eúÍ¿içUn^@¤žúkœ.M‰FEixn œƒ17YÕî‘v\^C­š!§º3_=ÜâÈy¼’«$‹S;&7‹eŒÈ3ßQ^»A·¥¿­®ãÊ·òÌckÈD‡¦(¿$y7¼7·7Ø Žeµ*’\fyu¼>ÊC)Ûš2yXïã’(Y°7ØjšÚÚ& óøxOD ®Jºã\;ÃöG>cáˆqéb° §HÐ`Â4bQsX‹øÆqíÓ ‚Ý!Bñð̤îÀ²¼N¾dqjªÛÁ¡9teT@Ta$Û38!dÀ,œ!ÏsJ*ÆyÄ| As€É檮ôô®@³<‡€h7eÍéºÍ’¶Þ†D¢.«¥Fœ¨¾Xmar&6Y]š Y^o8íÅòe J#„Aƒ&#ÖìQ¾F€Èð*ͧî<Ú6¡?"¡ÍéÛÛSsÛÑ$ömÛåP3[Š·4™­Dpõ ð`jO¿¿X¼8BƒV ‚äZ9L Ð=Õ›`ÐpÁ$ä>éî(?QhU~âÏ ,;])„½^e¾cÏQËçý–¨ˆÖàK‰nx—äNô³S &v× ºwMMW%4®8†)èÅzsc[€gÀœDˆcö$ÌAhŒ´SÌý ¦ôÕŸ~;¯ @²Yᮼ]C/«ÔƒXÈi·Öƒ€Õ–D½üZ‡úœ;k=(e(âts)¿ü4 xVý‡Æý;ÌÈUÀ½¼ìò`ç}ë9ZzLT +¾»w¿.ø#[ðrãD‰¾ž(½¸eÿ]Ÿ9‹>Hføõ@åõ@åû:Pi+_³çßQöÜ~üIƃÊtP¢]è1~Ž-Zx=´éÚt²^6àá.eçÿãàŸÁÚ””¦* ˜ JÚ¼<‹žë;Æ»¹B)"JH†(ÖÛ@v$;)ÒlõµºMÓJÚmÄ5êZS®ug¾+É*SøçäZ2]údzûf<›™²L¦©ñ÷î³<Ù|³ç§.ê±”-dÿ››à9“«E¢SÊóbs¬-jÿî„ãEÖ1McÜc(ö˜´ùÿzÞƒ] endstream endobj 105 0 obj << /Length 2695 /Filter /FlateDecode >> stream xÚí][oã¸~ϯPŸÖ.b.ï—¢}غ‹-ÐÅ4›‡Ý>(=Q+Ë^KžìüûžCJ¶¥x 'cÉɬ ’¨Ëá!?žiJ¸bIB›íëúpóÃMàVòÃÕ»Û«o¿×D;ÕSI3€ë‰±q=(8e:(Ì×£ŽûÚtÜþ©Ù±ýb²=ºj7ÍîH(|‡ÃŠ*kàh45&~áø-ø Øö"a’©ƒq?“œ(žÌ„#ÂòÈ<”DÞÏB Î&ÝcÍé±[MKصMk¹Õuì8A°¦'zïØÞ90ÊðËön—Ô±q•p¤´âÀW¢”&TÔªùݺFÒsĨ&>ÛaIZbQ=±Ä¨!̪6Oe•nªFm¨Ù;1.àÉH%-î£?q3etràx,ð::ÃuYm|º,[¨ýö{W{_æLCõ™£$­™?Ó™Ðn’æ9œ:Y-bAõàã‰ÿ-]®s_Æ+8°É*ž/Ò)Çš5Râ"çÐvV°D 0Õe€°˜p<ì½`F-ÄN«›ñ؉ Di|„Aumcäxר®ÓWwÿñóªnðØÆ>vÎ:-K_wÐê² /`Ðii: Ï%‘ÜöÓðHÑ:üBlãù\âEüfPž€¢åžÖù§SPà ÑlšW0%*Fwš´ -y?ÍB•ph”$²ê\ˆ‚Ú×åä¹é‰! £»ÍßœI‰v|@€#EÔöZ ¥•6À³"ÈXƒ ´U×ÖVãleØä4¨×0'Ú‰¿ÿË8NÕ•'Ó™Ræ»Êo ˜í>M­œ\_x7ÐËP0è$é çz¶ÁB;¿ å8/˜a™’Žw˜z†më[—…„å±nëõ)C‘¤ÀÚ†Äùd¨@‹•öOýIQ¤(Qc?dé|RTÀg-ª€ÃA\ÀÇ©2mŽž!F÷ÏŠ«ÿ¢²à/¬?ZF¸@Q1ÝúÙPá(X"®Ë=qƒÙÖ¶¹9b•~ÖâàT6˜¨Vq¦ôðþ]ž•õT &Ž=:ÓÂL:_-×Û)›Àäš­`F¥¾ø˜mVÅÒU,ÀÊxò\£Õ¢°‚AQ­²âC|௣öa¹)ãÅkPi…ÐÄ!f—bq,ÐÔ »@µ¥¼V˜~.VgÃ)º1ºõ†R &¨kssº],~‡î]’äÂõõç6z´€ ÆÉù°ýÎ'³$TÝi9Ð>Ä4º3ÏYX§ ó´ˆbâ`q2‰¥@bPl‰¬9fà¡×Dˆ‰ÿmgó¬Bý_`ˆ6Öò Nƒ$r’‚dËs@T¸Ó–S¦–S»WD¨Ϊábý4ø¥9|j³*Ëx‰•Ù¿xYÙ¦[Ì&ÒYhÙaÔ i¡DQÀ›îÃüV%‡e H×aêTó&oÑ`šÔ f 3á©3{“ùö¡FÖ<ß–º}ñbS»„Yàl»¬QXßnáx?«a—Y•êXˆÇ¬z¸0Q(™HKÁ²çƒØf%9aB] û·ÃPos,³õ7§‹ÕÖK¦3)% m[¾”eá ‘ ËtR–%F±·Ÿ±|j÷³ËRƒå-ëÆõKi. üzóNOb8¡©o7?ý0@Bì—䛜ʈ ”;x*|À¤ÇÌØ13vÌŒí]R…úvq ”MºK´Áð×£e`þÞJ¶ìéœ˹»|’«³ »Ù†s a•7f9šÕÒjÌ  Þ¡Çpm&i,.ý|…I\x>YVxvi×ç”(&aÀ€²l˜È3f½ éˆ4¢—È3T_>a ÄT_¹`@R»S;…å8‚ÿ|op£÷±ñë˜éU†ÐI@Tà§Ê µ„HK,Ä4½Ý3zçÂóâÀ üIÌ€ðJ¶¢¾©ê/ j`r…gvR=-Ïøâ¾xvqø N8úB+¢¸¾@RI $ Œœ^'”&œË”¦ÃÔ©žK Rp續óGá‘<÷Ù/T¿ñ蚬bÙÎc Ï-w%4Y¬áb¼ï †úVMÃ>?ÔüÜ×!G¸X-.‹N¦PG¡Q¦éGE¸íɈÁ§9º–Bÿü3UÝίÜÓÇ¥)>ÝÍ ('Z®>ÂÆZ»ÑÕ7ºúFWßèê]}£«otõ½Wߎt3Žôq¤#ý«tꫯܩ¯G§þpNýëóH*ú»Û÷ÃŒ!‘KlÀ Ï¸Hq¦ŒœÜø<8¼Ë‡l—ÍßùêWÒ{_\Ú£-*á˜"½÷sA©S¶¯ ¨p2¬¡×”õáÓÖ¾,f ˆZÕaë‰Wû,بšW³zì8íºÍÍaFöÕÜB(™m7÷93º•"zè¡D­ëCŸÛžƒkN¤ãíý9BÚ7Wr`áJM›ÕòÒ1A(6¿ÃÐà iöHRPè%D\8f5qvX¦¬!\t˜:='õ^ø4… @ö‘·*Â' &ܪ^)¢0ZfÙ“Æï3z«…0¨ØjüsJ.˜ˆ˜ÑCâ IJ@É‹ðt¸å$PŒ>ú""$¬i#¨L—õº+î,T¡“bЄz¹cM¨×„P/`8ZçÐ`as¬£Âó³–CHÑÑÉ¼Ž 3@ïqÅ×pƒ"Œÿâš,XÇÁw^%Xx«©Î.Ðîù_·Ù&rÒ±o¶eXuÃâ¶HpLãaݬboóz$(ç¡f»%9¬à†‚¾ð›´Zí^aë±ï›‚ø­rlŽcYÎãÍGä?PüTÆ’ÅáÇšˆ8;Œˆ³‹GÄ% ’ã@€£rj€8RT8 ÌÀÖ>7$~Ýì5÷igtZ¯£Zm«<+šeT±×d½> ~l@ÙäØ@Y±ª|ýv ø…ò·{·  =ý]­‰qzüY˜¡@¹ãϼ¡]Â9}{a“1hò•MÆlúqïéã>hNGôç|Ðl’šƒÉe’è.¢±Ú¾dPqþ{^ endstream endobj 109 0 obj << /Length 2699 /Filter /FlateDecode >> stream xÚÕ[[s£F~÷¯ *‹«¢vß©J¥4¶ÆqÖöx%9»©ÉÔBئ(3Ù_¿§/`,;’½û`MÓ§Ïý;Œ[;§ï§G$uH*é#0ò}êxœ"J˜3;ŸÜq˜ÍóÅá€z¾{¹ZÌââ·4IfŽï“<º:dØ ‹0Mãôðóôçlé4G„N¨ƒ‘ÀÂ÷àèIìyN··ÜŸª-2‡x°!ÁÕ±3€mŠ@˜í±’r> H@¸{¶X¦ñ"Ϊ°JrËa–WqÙ¦õ"£éÁïÀ©å-}‰$çN´8øô;s¸÷3<Ãßùªg.N"¬ä¤ÎäàÍ&´©XÓaÀǰ¦ôf¾Òô.>0 úêpÆhà®J`Lß­Ì´À=ÿÛ(ZýyCq18¾Ÿšû…55%SɨææmœÅEXåê©ÂÌù \Ʊ‘¢CÝ£–Ö÷ÆJÆ G"îQ?õ𭮌9 ñD"Ì…²ºÁ|äùä¦U;7J¨/Ú£q#ÏñP @ð E’3ÞÖÁãËÓ/I6oÙPGwœ ‰Ía=ù­D¦D˜’à`ϵà€7Éé~WÛ®Uù6þü¸ +†¿Ì!ØÀ‹:»zûaH\¶9 ÓñC òeÐå‡Ä hî‡#J!~›#ˆøïÞE骬âbW`铪ˆÃÅc¶NÀ¨$µ±ßÔƒsâ†óy¢HJ_Ïã*LÒâ A‡OÑ’ÒÜ«ƒ’:o%5`ƒ’‰Ü΀p`d2 ’†2ød¼4OÃø­àaLÜRó È`¬QŸ”«YëF~cf7û€1»öQ†%—îYf•þ²(ü5ÑQI!oÔ’ƒÜ«w ~C-ÆÍ$Ü4p4‘æ{Ø6݆Ña ‚Ìô· ß¶)p1&^ÁgE‹CFF„zFB³å®|–{à8^°ÎÐzÒçkI[mÊElæ†!‹6É“ï7þ3GäË*,*…$”÷?fÒ̃²Ú¤#pÑJ)Á)àà¹YüÕ\6ƒ7…†40jàœÔðGù/„ÁးÁÝÐ#í9ênlð•Y;ÉÞØy ^úAÐÑåˆSOÎ#@uÔ¨€á¦QçíF ´ò÷÷ªSAܯIugî†æÐèÞ\VwaeÎô®Õq½j0 FU1`æë®‡jV­ï{½v`Œ™épÔh›1îæJfÌ ¨ê…@øÌ\ÿ„ýêÞ›a¨“U B(WÊ6ã7î@"ê^Éšùä5 R‘ EÒGÌãý ÒC”MÂ{c'¦3ý€u…¶ÏHJU[2iKh;…k”ûȧ¯ËWËv˜ê $ò ý_‚@T5‡a]WÚ#R$}\Ç*vÈ“ÁOûÃ@ CÕåB‹¥Ý ¦Znœ¼¦•+’"h3Ô1È$k½ø.(W'•ßh€UT—‹êï/:ÁÚl“7Éæk[Uˆ ¿à oO~ÁCwü¶õûÈò:x-î‚™\ì–qeNt·"pçÉo˜1ÀF™oP×ê0š T€µyãá†Ê›ëSP•¤rÙè D æ¼WQ~¨‚”ˆ“Àb±¸Be÷R÷/k‡QՀතDúU‰9_¥ss™dæ¸ÔÒO²(Y¦ ª‰ÊóZêò…™™ƒ¯Åû| x01é5 ÅëБ×S™Û–aTäeùÜñËØ§H€=3kûé|‡odßúÕ— @¥×Äsˆò8Pu ;²R§^6âÅܯ´ÜÝ»/pÐ^‡%¦âå¾X"ª%]žTÕ¼Ã^ æ¼Ë”Àªá±'ž€$U(}§³ì&o’—™ûÎ?-P‚ÁÞ‹>-PR ŽÓ:Xau‡kŸsœÖ¡VdgøÙ³7¸W¡~£íšJâP6 ÞŽžÇíþfoméòêCi[-ß}w8(áŽÍá¸Ð~¥/85§Ê()¦RΓÚ<›¾„l/v•†ÕM^,Þ™Ëo¾Ô³aÊrTÛÒRÿ·çúŠÁÚ¸äƒe4H“lõmp›­î÷7fIÕÐø1ÙB K«,Sý}±‚¤WØý\ÏVYe¥à1sq><ÔnÕ]„U‘|3çË"Ÿ¯¢ª´„æñM¸J«Çž~>œÀlâcéÝ勸h–äÑl•¤ó£Ù¬@þP,çÑÑø(Mfêo;þáØ¾ô÷ÍG[˜c/dnzvqÏ$QpÐO¾?øP6\Iýº¬0?žŸ§£ž\‰ruññr4Ž­9I.Ÿ§5Êqß„$‰E/Ê£Édx:šüÊcCÅ0Ù&ï…‚¹^Æo`ËË-*—]΂mœ=³‡''c=P˜áúy¢Š&æõYa::]ý–ó¤qªý}"/'£áäz<º]NkMô·¯{M¬‘îodg'@õìÃÙñpzöñò)F‰¸aU…Ñ]<7W³PÕ|:AoãòÝc7¡¸¬ÂªäÖ×ô{˜`÷¶—wITZ«¸-Nâ?’H½âÒÙ´JÒzæ<¬€xUÏ\ÄÕ]>/KNŸüÏk»~v®±/76…ð$ëí44ýv2C?•á2‰³]OŽÑÝ- З,ÿšÆ™Ùšz@©×G·€&/™è¡  lÛ¨ÝPr=ú‡Õª°_—ݾìâ÷­ ©—"’?•ž†Y–›¯vOf‰¡‡U ûѲæ`õ ÝE¸¥7¾–ñï'`#è§ËñåÕ1š… Ý„êày‚>áÊ (B,uÏ|ùDÚ²ò¦Ém¦›VÂ’¢M°¸¡i#ÙšÒÒü%,’0«î½Aói­ö¥Yg¡q.ªÉKÀ»Ùmy;ü~¤d£½Ê%¶ÕTëô¯_â¨Ê S:äõ‚7`$¼&cë‡cÁ–ÌdµX€ÊþÏGß–q‘èÏ®´ÊÔJ8èg&´¡JÔ'áx*i ›ð×›;õðƒÜméD˜q˜ÝÖñå9þ¾_Zþ¾A­Ó‹Uãd¦ òh?bµ«í·änZ³­Yaê[àžAí–¼¦ÅÝýÑôà¿¿‹cN endstream endobj 114 0 obj << /Length 1715 /Filter /FlateDecode >> stream xÚµY]oÛ6}÷¯ÐçÁIQ¤´·¥IƒlíÖ&Á0 +Z¦m-’åItÓì×kÇ5Y`O’õÁËÃ{ï9‡2F4#I‚÷Ýâëßîpw3 ÜJnF—£Þpš¨à”'ó$Ã(Ïi"E”¤ÉÃ,ù8¾“«YÛ\L¨ÈÇ¿nš©ê.H6îí…je—U[¾¿HñXv²®U}ñéá玛*˜ù½w0O_Ž~úúaôψhœ’ 2š%e3®3š!RsdÃDU2}ˆžU b»þ"¨È0Ö¿Hƒ3^„³Â®ÿ«WŽéø#aŸìÙ-¤d¡úaA(‚rÁíã™Ë ‰œ'“½ëÑass"8ÊÄp›@äì0LæÂܳßU©ÛÎÊ J¡V"a”R”ÚH9G„å§"qéÔ]õåF­TW•6Á¢EP<‚¸FFXœŒ'\¼ÆÄ»×RÛ`$0eaØ8ñÁŠ z*TîB ñ0ûVP(†·¸0Föã‡Áн`ï÷:p/˜8Lø5„êH_ ¶C6ÜÄ/ã­[9S3{þ¹’öÄV²QýZ–ÊþügÅÝkµ{VkY.Õ î’OE"3@ëÀ.µîÌ“™@, ¬†èÅDä”§•æÌ–š)š &b– ”eß«Në¥ÔvZ JÓ°ÌRDìZ§€ôV¶—Øwr%ª‹,XèZŒ–f8/«ÅÒŽ`(@„Ͷ¸˜äŒZ’SÕêõ* š¥(ËI ÿøjN ÅžÂì›t*{ÅÙ¦«#é’lÀãiÝNw/§a/Óm…\Þ/ÔªmRÊ ÊD í b"sªo±ƒzcâÜ®æíÕôJjéÊ’¡œ³—»Wv/v¨gÙØcÞi}jªÑB^wí¢S}ù<}À²#>¢ÅÔ!^Wu-m%r0f¡D?ä–S:¾»ÿð¶Ò*¶°…/Y>®ÛÎi€]î,”F¶ùåÐ`üœÀÕÀoU©âhOÐ Ë /êÚõ~à<³mfg8‹äTØB¥`JŠÓZî5¨¡|U‘m -‹j±.uSë¶­÷­@ ³fCûšA¬©ˆ^26Á!x)uxÿx÷ÖªEœñ)*Š xPWÉëÇEÙ®æÕ‚M¡¶pºb©;­ÚFÞéèr2xaâár$@SNÀõ¦ðߺšB°r'"lsó°NaC¯™òk䢫¼ù$¤@<#¡ýê—«ìäs»Š†Ê¼ÊžºÝ訦­z»S4ó4©>Ëz#ãuFð.lÞGNbHÜÂåø)1ïŸærÕW‘¤»Œ~ijK(Ðe¦"L¯ï´*f/A¶0sýT›2ošf` ‘–žVÜÞ:h®Äl|RN@o:¥õófUéè)Ûðf˜eÓïì[þ¶Ë«@Yq‚ßÛõÜëçúÈJœw´Ôˆ %Ì rûÛ¡Úœ¥ÐA- ×Õ\•Ïå–Ëwý~^ ¶Û¼oÚDæ½SŽeµèâÚÕÏuèµ+UËg5û©zùŽ]©‘h³Q,Û,ºÛmšB‹­éo*OæÝSWËÕ"ºs! uÙ™©éfѨx O¶‹l>‹t#_õî¾›8ê}ÓÝk¿“  æð;sšÑýÝ;ɈÒWçK¹“ëõ¬êúXå†ëÒºõN•n×}ôöO„Ÿi#»ÇYû´ŠYâ56²z¾©»x«}—{ÿTú܆ŠbÖ÷ù¸º¼WÃÄæ³Ì}›šá {HÅÜ{¦Nw°[ÈåèÔYÌ ?ÁJâñl]?}  Qá„úT«;jó~˜‡è,[;ÑëF®cixÇ(PþÑĉ‡íÉçFÏóxe¦a„$¶ž è½nËÇèÞúu+WU|í ³ÇVj½ÿµúûÌÓ7[TxïtW®×Ñ_‹má -ú¹Ô]o‚Óa—o*wíd.Üí Û¥#ˆÞ.éjöÜ«Z•:ÞdbìÒlºmÑðê¥vÃÜS©Ëåž!ÿn ”‚Hv滸…ì Ó—ùf™U(ßÜý;ùÿý³çÿaõǃ¿YÓ·„RF•3;37-÷ÊõÃè?Dß“ endstream endobj 129 0 obj << /Length1 2125 /Length2 7705 /Length3 0 /Length 8870 /Filter /FlateDecode >> stream xÚ•e\Ô[×÷Az¥C¡»†î”i%e€¡a`ZZ@é”F¤»Qé’îniîñœë>p®ç~ñ|x1|×^{ýVì½ÿôÔêZìRæPSˆÔÎÎÍÁ% ”†ÀÀZ`gU¨”]jvrq8¸¸¸ôô20n uÃ!Â@m+ b$ä óðA\\¼G]Ug°%‡aàâróýùpsÍ­Íà@Sˆ¥µ€óª¢ƒÈÍû·ÝÜÅñ×\!0g„é?êÌ@„¶9ÔÁÎh±pªAáÖf “ ÔÑfmi2™1ÿ‘çšz¥­áÎpÄ{6 ¢ƒPÊΨùÇ˨ q†À\!æÿQÎÅÎN lˆù§À?MþéÂÿã¶·¶óøÿñT„ƒí¬Í¤,í @®¿MÖÎrÖîsuk¸™sümÖq0‡Àì¬ êPgë?²ssñþך¶•µ™­ÄÙÈ/ô÷Ò Èß•«Aaö`»ÿ’‡8˜ÿwæˆ~ÿ•7§”úKiÖÿcØ9>s0ƒš[;XA|ü@0 ö fˆ > 7Б;⎨€“à Gl:ºÀ½PàÏùù L?SúŽ€œ2w$䔽#! ç³H€ È)wGÜ@Nù;9îˆÈ©xGuå;B¨«ÜB]õŽêjw„Pþ "ÔÕï¡®qGuÍ;B¨kÝ/Sû޹èÜ"Ý;B¨¿¼#„ºÞ?$„Èüñ"ôÀÎpÌÚÙöαÝôâ!²0…Í v ø=3ßÌß‘6sÿm¶…Àÿå/Äóý¿6 Ò3û‡øÚfP;Ä1ý'EÞ?{û»¤¹מÓüäAÔnµ³Ãîy ²€ÜEx@þ%ÊÿgÝÉlw‘âàÙíïEAtÇâ. ÂÃÂÚõ^Ø?ËP—û²Ë;ĺåŸw rßQŽÕ]qˆ&Zy8ZAîy lÖ÷‘¼Í=DÌÏö"úuW?¢1v®ñÝ:¢»÷*âF8ÜIñ!b9 ®ÿ]Ò.ö¦^HË{)!^WNè]Òˆ˜Ð{»¸¹…:Þ-#4Á0ˆÃ¿æÏËýë¿§Ï‹¨Îq„ wóäE4ÑÑÎå^Ü‹Ó]‘Èâü×cöO漌P8ÄÜôÞL…þct¶þ를 ˆð¾7nDÙwr|âzo$|wgk÷» }s¶;[Ý ¨ã®*>D±p+äÞYA4î½·Ãåî 4]þ¼ÆÎfPØýDãu½‡ˆ‚Üî]ADP÷{ˆPõ¸‡ˆ©xÞ匈ä ýÁ¿ou°µ\ÛÃñŸOÉŸ×ü/æ¾cU0âÞº €\ˆoæŸø×ß½ÿþO‚´4ÔèÅÎd!n)?â( ½ÿíhæCœ ø__ićåÙÂ10Äb˜‡š‰¼±IJI†—‘d|í“5|-ÊÃC­\· )RÖYtF½í@™¥¹þöò¥‚ɶWï4SŸ)&]”ÉRd!(ïQÝ&ŠÛØØm¸ÏÓ§º™?²Uݱ&ÿÅÚ„,Y¢äÚöµÖú{ðƒ·ñBSæ/=m ½f´Úy™#­+±i‡ý¸{î8YߎÞá¦r7nË»÷éŒ0~2ëö˜—{¥³ŒvåÅ¿€aqOø‡ÃN‡¿9Q(‹„ï÷vl(ËNÑÎ ¼Yò. Ðöù¼iìÌî¾/œýLÀkß  ©éå`všƒÿ`=÷Ëê9PØŒ*èƒXxÂMm{œ4kk»†>§^4Wg®¡áeÌzH_øa9› ÕÄã_;^7àWkò1 KŸ¾QâSíȦ(ñ›Œ¦71{»:;ÐÃ^Õ¨ Î#œÊÖ¥ŽÖÀq‚Ãïrµ‡$HU»¯ "ðw:SæNOÛìÃ,Aþ:²Ä뾼Ȫ†rŒÁò-âþ›Ó»Ï_bSü’O‰Dåƒ'òÖBUГ]qB¬¸¥ŠÆÝQšbƪÐJš•éÇè ðSt=Q*_üú–øEÚµ«ªÛJ£ÃXz–cçLb¢æ ºÊ©eÌçd‰€© öÌè¬Ö[Sóæ¬÷¿.#_ªnäP:I6y0´Á—-„òÉCŠúÍמÐÏù0›]»ó&ÈéÌñ RnŠ™™Í{l5ÍHÇxœ=7ÊG1ܠ̓Nwܸ¡@ ÒœÚzË̬R±5Ôt°gÊ['Ì`)îƒ+sÄŒ •Gd‘PŽý9’Ü´u0,”AYMìbErÕ¶øÌ„LÌãfë6Ì ·3ø^Ng6|T?ÖwH!Ôö›Ò Ù&ü­Cºxnk†«Ú_rNŒ¦8¦%\yò{kn«çcá§ý~ÁˆañËå5TÓ€¿6ԔȈ½úhú^N¢pRË3î°QCÉ:ʳRÇEîE#¦kN¥‘³í<~HE‡½Ô²"jŠ¡Ñ7¢„ò›õ›®!Eó+²`ù Çu`¬ ÙwjùÊÆîØ—woýë•wÎô(-LHÚ, ÎMÏ: ©>Ï‹|îuæ·ªËßP$Ë4Õ‹ˆö_Q¤ä|Øg~5þ~m‡bù5O°)£^˜òñx¯Ú “ðËfžq½µò^Ï—êÑ|N„B¢«|Fu¿¬¿—‘Ñ`Žn©Ngð8;Pâ*ïœhÂùÒ¼Y ÇÚ™ò¾ý”³(:*òÎXÏamFÆnScѯ(³æ{ØÄ¡ÑŠ%œôÇ À-Dýò`®zÆÇ„ ½8±­ fv¡Šq+™óÝÜÒˆë­E_/ÙB›\wL„Á†¦*Í{ SR¬8Kë„yxqÕ÷×÷"íÅòÀö —ô¥<Ã$NÆ&¬êè dɨ<~¨üîSh}hAލHXS˜$‡T=PXoÀë#ѵŶ…lÒ¾g˺}cÜuzã ðxM¦Eû7;hœ³o!™%îYzZ~xö”ŠƒM•¤ð µú‘6ÿçœÌ=Î/³8ÈKýióä$K\^•_ú?׫D\ïÚÎrùng}®XBûYcÑAxÖ¹~»„þÈ5€±ˆïs½Ëóø,‹Ò“ÝS ‚AÊ—Ex@çÒ÷CYöYAÙÛôq}þQèÓ0©Ý5¾ö¤ÝðÕA~Ñ”Àòö½Ì³Y‘ãù‰W* vÝõ¾ã€F¤3O™ð½Ug}³œàôê–_Ü6ú§EuVÀ6ûT‹9Õ‰ž}ò+‚)ë 3K¾Æ4“ÔXµ†SñÚéšüF¸×O&ÙD»õµÏ×ÛóÍa{ÁjÔ·j–…¢-™6 óJó V:ÈÍ˼ÐÓo±ß6/½9Ø¿}ÓA÷¦æð‘'ä‹§s§Òc‘+´©Ïš*—øË6Œb—Û"ŽíU¼3¿é”4BX_?'][­KXmàø˜Úû–3üåC§”§>§Á£×»¿!;W®€±é…èIlê‚Yfól™âPÕe½SŸô/g† vUIðÇL"Š=ò$¯7q1£J= ÅÄêy‹ 9#»Î!ë¡8a¤3sýã×¼+æ=ô"N¿>†¾u1r°Ä‰¤µ2Ó¿Á0ŠVÒ÷%^´¾MúD"OéêM8åO|1 Ÿ“Ó3ñ×àõ¬i£~Ö`ùöÒjï[˜%8êÛ9ûzä´S· ÉaLލðUi’Åã~ôW dt.–{-â-œñÊÁ9ÙÂ+Fȹêv»·EŠäÆ9Ï@I‹®!²v1I¥h*ýòbß³F“-·XJ +µžÉÍ=ñ¬RUöU·ù¦á¡@l–äb£¬)µÅÜI7ü-Ê^ž±’WŒ…ËÐÚ°åþ«¼Oˆ„fYy¢Ÿå©+µ{R‚àGET[¼†Ÿ'”±Ù?‘H²BB3ü]O¥ ˆn¡@Ð6 à4fXu:lì)å@Üj[I 4¡è?«²£¯½zBß ßHûY¦B,ÌÔз÷”†=ÖœŽÓÜäã[}nUBÎøVacBÈŸd£W?´ä÷^y ÓLsa©öPý‡½q­éi1û؉ò©1/ƒX™ˆk4\¹yà=Jåùâ•å‰s¯éš¶à”Ç>\ƒéûúœÙÿw^ŽpÚ!Y²hǰ£Èñ4Ñå„N7à7ö¯…2L®tãæO©\ĨںQÓ‡¶|‡)ô ¼²•åi‹¨[,’-›ý”Ø}ªõAî,²-Ë%…AÙ $GK†Ëò‘VÔÂÊÔmÚP¨XÎOøÂ‘BR#~ïÊ2MÄxoU(y¶gãI–ÎöÙ´6ÅÏêsŸÛÎïžl¡j\}j{*l93“M8ëD&ˆkú”×£&¬ÜÔÄ`ê÷ßë’{ÇJÜØRíx¢o ´ûëü˜Bøºßλhj%ˆû¬c^”)tÛ(x_•$2•ÔÓï]š—×ZÅoÍÐ'acÙÔ@ìX8ŪC­Šùwýv¯€P4¶6^+s5‘2]Õ¿úW…ž`V½Ë+ãAú{|ßÓG„Ußù>NÐúÎÁ–r3n‚oÔ®ÈhZ¶•v(6–¬n¿KÙ{„¯æ%3a'#@ë ù¦wZÆUh­›BC"t®InLK·C¦E‘Äï¨æeJÍ-oÐýhT¥È;T(³pó*\iù+Hc­À0FqFV]øU¨­oÕ^Ñ/2ÖgP1%5÷=ñ…£jÅÜã÷þjîP3ò1¢”ð*þ×¢>æá x‹øHÇ-`µì`öæ<.ƒ³kÞWü ˜tJIC!å[o‰÷7c³&#Âkpõé.erßÏ–*çZ­–bäK¡½9ƒ m[I I3Š ä§³Ë˜©.^Ÿ`¤}ßè½¾Q™yü&M) 4/QxÕ‹<Øyéᓌ*ŸÈ»›—¼ýlf߯mW9Fuh^WY"j9;&';TícºVºnåÙA÷‰îC[,ýÁÛ—Ë •×ÐH2Å-˜î{¦_²;¾ºõ2¤hz+ÇPzÍÔmÀúÀ”·Tq;éˆàUx¼ÃÊrl'@+ŒØC Æ!u–‚^‘íáty¼ }kBëä@íþ(JÕH³É&¥„ëFë"žB·áuˆ@G7H,ååÕÓzwØ¿À´¥}á ²¸=Å]²äðô:šO8è-ßF…±JWŠ“õELÈܤ*Ð;±bE£¾°,I iìŸÊÊP Ô ¢fæÑ mñ‰¬ï&²pIï÷Ýuìu\Pí§qUæ!Ù]ÌŒt˜= ýXÿ FK“uªÌ^cæ&¸ŒA+©â;‰Ý~sêe5GZk÷Å~¥\”_м'óøœ"*Z>‚PHýÖpkîÉLn¼ˆë‚&êü5»‘‚‘vòò©å æ ñb7Š\·ŸVµ™x¾ú1K)ºBÊÆJݯFWK± áÎï×4¬ËË ¥¥§½Ö2Çʹ…9cEo†pŸ"e(x<,¬’wdãñQþÔGy 'ÐÌáóÕ}ôÅñõºüçïÖñ vR¥U …e28W0ôä+VÆv:O'€i®¹Qä¾Í]ÁÀtdh9†âà >’þî/QlµŒ,<§'þ n ‹åøU›R.M«ãS;§j{) MÜØÕ"¿*2/«6ÜÈÕ_ÆÄã‚È¿Ù%Ú}“Id¼W¦äœo÷n® `é$‘µYt'UÏ®Çèq^g£(YàdË]-dò:ú¢~a¦eð÷o—¼Æ›Yeð—ÍUô`t­~Ö̲&ñ4—²ô؇ðIš3Èþ XÅ—Kž´èƒI)¤ýáͶn9¦&³‹›„åVÆŠBn'ˆ-Ô·™ðjvOt>4$V#äÄ8@ RIOV…3¢K’‡B‘ø[guôògìÀ5s‰0®«¦å>O›aà“ nßQŽ 7¡iÇ/TyDú ÌØÄlZ9¦_³ Ä™ÆO4›'Ñîí×°ù”NÐÁ— …ã>Ëðþ$.餡óœ\ö ©0$né‘§Ou„÷¼4;¯±ßz"-ÒÀRFs Ÿ¥˜Ÿ¹wìKË+wá¥ãÝ´¾iàÞþ§‡1¤%¤¶_1ð¿“ñ“eô¨£Wü@–{¦Ì‚‘{âL§áñ#åQü’\†Ú=Z§ßÌÏ’ÁüÁP…r=²%U¦(§/aòƒŸ†ÄîÖæL. _·Ð*·ço©Lø½^è°Ô}ßhc`Q¦ÿ¨¤q9ÖŸƒ¹¢‹L:€ón©#Ì GyÎzJXr#óuEýh(/,èÄ¿àìK¿~#’ôëÊ¥žQY6eÂ›É Ûv¨ð”A®ß8“©B!éÀÇý%Œ)åAï^¬î+$# ®¥EciYèdq],JàšË=×(fd`ï©•¡*fMë@­.Z*Ô^Y\€ªsÄÖ^—­ßÆâLlôx¤þ”oÕusuúÍt½£¼89¡C5$²Ù¾ ã>Rç“;à8Cž“íÓe8–/­:eúl¥¤×¼$R.ïøæD›¤L_¥{¥8ä3”ÆÌr‡2×¶ž²ÔÉÊU{XæzáøÍ½ff­®‘~‚†Á“úƒX³ïÝ9Û‰ˆŒ G€ƒÐ>K‹’šÌ|AYH)–@r0£ ˜Hýè‚íBî6ù×Ú³ï•â+XŽV»!… ßÛ O·IR%d=›áˆ}`ÏtÈ–×ö£QØ}—Mœì_§¹²<ëÌ‚cý“ý±<9AHÆþ†¤âtÝ-­¬‘&”CL• */æI÷ý"* E@O—BŒBäê´V:ÒüªéGŒèH•3ë×¼7®{ŽYô´/·TŒÔÅs¸)(¸EB§ºˆã1GqÖYŠ–0›¥‰¨éW5½e=  çE¢‹]yàÊ—2^[ óTu‹ýà©û{ªMõ¾ð®–WIñ>)”3Ÿ¾g[pù}W­µ%$Í–„uJÖâ\êáÕÏÇ™ºÑÀY#ó&§¼Ûu¿`ûATš¨Ò¶ª @Õ®m“'^6J%xùD( ;eÿ:Åyñkæ"ƒ€gjÎR‘&ç%G:4¹&#¦–Lg-ªq§>€Nø ¤ã$Ø5„nÉÁé°` ;öFÔ‹w8}£ìWÿ(TLŠÂ¥;»ìéàîâ:’Záb¼¥ß£®9)n8,%¾ÆDvc~›Ò5²Ï4žÆ›Ë ¾W¾øµ2mí/z"ó{19KŸr;™ÐŽL›¯šQøh0zÊ7¾ëš‘òPó2÷)sTÙ)„¹ÚMÞÏšóG±’\‹:Üä{‚‹‘‡”Ý» ã¤ggàÕÖçkM$#uÑ_fUS§R’‹¸ùú¢Z°%PöÞ(½“}•x øøB´Õ@s?mÚéÉ8oÒë|gZðJ–a¬¹,ù¤ˆ‰5 —÷‡HšLcë!ǸùSånõiè"ãFÜ©²3Iž9=híÄÒt/£0Ç0ªkIèåp>c°<©PsžÛô:<ÇO ÄVÆa^NÚe=ñù>ðÆÍüÈV#=⪦)ûù½¸£5w7˜h¢D×à#Ý·¢§{LÏÎg_àŸû3I2Åbq-Ê8íFòÀ2ó¨v_Äî¶D¼¦óèqçÇ^Ý´ªˆ’>Ëälñ¿L¥(tô„=F@&ׄÎjOËrŸ¼] FÔ®‹«üú±b§¡¡Ûöû]ï‰R­\–Hn5ב’D 6ÇE¾œWO›öSóÌÅÆ€–O›”?Ò^$oï,¶™Ïl]UíO³éb?"òIÑ¡s¹Ñ- 'V¬ä³ò<’ØÂSÓÉXÆÕø­†|-©j›Dbzîò%Ę.‡êšqßA¶ð;} c‹±žsL|A*$K9t€W˃_Ý?Ãr+ú8~ËŸeû»·³/qÎyį•6JOm¢…W¡˜†yÑCÎ@(Ó:FŸM *ï†U°uIcÝm"XÎ×èäb»6ã qåmÞ·‹=Ò¼œ~£púfÆ|#æ|;1«ñíÚayÎᨷi¿> M4,ßÃà<²“?ÅÁ¶zŸ UU‘L^¯Tã%­#?¿ ÍUZÑ^1"Ài³Æw¨Õd숚ü¼þbïë#Yû#´Æ¯nŠ ¡l36( Ü&ÉŒðžÂã(¿=|~nÕL<Š7³XÍÅL£Î$’ßXŠDz&¦¹˜NŒ¹8î±|¬÷ÍÄ‘¹-_š/\ßOhÿ²±§€\ÊLòZÜ,„m"Ö4cB)¤ÉÏÍÔ€Kÿ%C»÷Æu[Õ×®kŶš¹r¼õ1[Ø”#l»ŠÖgb±Õ9‹îMsÙk¢H$›l÷CháZ†ä¹ò“z›wž€·ìë™S£¬³YçCcç Œ½D@}sÓ²Õ·:}?ýc¹ÚÑ”€¤æ·ÛÆÚÊn•GÌ-ª#áJàÃÖŒÉñúܧ{>L S»±Éõ$Íó¿BCÁ¡‡åøwEü oY&Wsám‚¶$µåWvã:ÄQœFéý\·ýX€ïÖ¢~V>.Ó·W6Ãßj|Ád?Öí[]‡ÝõåÕrÔiÿSÒŒ®íÌ.5šM½,âìÑÈæÑ9wãK$QÚÉIÐì‰jcÎÑh¥¸ÊÎÊjôË8‚– w;ÞÀ·07êþšcDie‘øÙ,ƒWsFÕᢣJÉnHXrÃj»<4Ô¿mŠ“Ñ ¥ –¥ž’?6–×pÒžªNkxþ’KàD¾ÛÒ½Œ”¨/Ap@€´ÖÞc¦>OJ<ñç[–R¯º“«yÉ·ã’)±ìiNsžŽOªŽâë>‚¥Æ&£[>œ…G†P©`œ¾Œ"Gî§…±¹À}Ò X¥I¡J—çP,ÒÌ̳ “dŒò¯%àÒ¢†P‚_VÍDˆéêã¯oÔ<^ï5ŠîÖà &ܦ+ÛÒE§„ÚeÇ€·Þ¨å60Ixµ÷œj?´ëùi,ä*…º¾¢QÏXáù@©»uPN_´`Un7Uèêœ]ôŒŒÃ_‘5Ϋ%®-š‘xñ5&±S½}cÉž •ôùbÊO¡NË*[ÇÇžPVv¥èRˆ-—å!Ð2÷³p@°R‚8ƒÂä÷ñsÀ<>[þï)Ãtwš9¼¸ÏRŸç-ûñÒ¹Ëi¾IåiÝN‰½hœ;˜Ä=¥Ñ¼HÉw?Œ¡¿2Ë›LQÉ+ád^[&|žÈBÑŘês¨tοXLr… ÷'‹sƒeÛâùlÕ0lŽŸÏúnqö‘GPjƶ‰”öù,ÀXôÀœ_¯ÉÏW9Þ.ÀA…ä=“ßerT°T é$æ¨Õ´":ɆLœt ¯·CQÐÜ©4Ù2 Óæ3æéÊCp>’O8$*¼; µG¬«Ø6Qœ>vÝ T¢òÓ”UåRÍéB>Uíí>‡Ìz©A­j9"íѬ™åu±“}zG]n„½Ë#xáîfEPÐ&à˜oÓ׿Xß"› ñÆ2Õ‰5ëøÙ6ŽwåËïû´Ïcq«DáøušvâSÉ0b<5WPéS¹ø7RÆ+Œ`^ÿrÝ1ËôU“÷žÉy™Žö¤¥±LÇ©F>Çñ‘ROýÎÏŸÇÖ@‘·ù[ìÌ-½Õ×Zºs~7ƒ×¸©è”ÀMø9´/H]•úRÞòIîÖ£åkØ„ h\«þIb¸¡èÜ+[Z\Êúƒ Kå&´f;ßS›x–½/HŒ,ùÖ…4è…2ZƒJÕ]§’%ÔG"^Æ“~lS,ÅÀæ°X`‡}@‰´ßºº‘4É?¬‚{å8Ò'›<ÌI:?$|~!ôüÝŒÁRÇ?#cÛí«äRÃÃOQã~çË 4æŠfì¥T“Îa‹äiÆ“”ð®-À=Ò +7 ðq^{„M0_®ÂH¾on*ÜÐð‡¨ÇUmeÁ'áB k™±Õv]t­r‘²êi;K^Ot(vüo kBÞ©÷c2w«†17×~t â¨Àõ¶O”†ÎñX%!Ÿïø©"Ö·šáŠï„dPò<9À{G]o"íÍØ)RÇQ`Mã½B-ºyz~_8R6ˆ—Pò^ …U—A Îcû… ŒÉ@ÃÅð—]_ž4Ó¦“6 œ’-Ø!–¬'[ÛÒ=›NÆú\¡æÝŸ‰RT;q’­v¢¼ÉîËù¥ž^Ö4^¼tŒz?=aŠhØ„.r¬nGˆ“±ÎkÜGqþе~Jõ 9zHˆ×0AñDÓ} úXÁë†?çq³qÄûCRT‚M§èà§y–uÜÐ×&H½»»n9œ]u,oo|•hTÑu—©¬ì Zt%L/}Ïmêu§ZÃùÅUTµ¡fç?ë0~Îaw<× ˆ‰CùõÝ¢£Ô‘xëИìÕyçZóÁc=CÑñ.ñ!ƒÆ=iÚù(;Úd†‘¹©ëÉæ*±ì›E*)¢Œ ¿îØ}b­–ÿ=›ÏR ¼‰ß&–H~‹ÓG!°,I4>ï”@ Ý~äÿë¤á}C€™N• ÃB³Ø$ëJ˾#ýÈúüd’àg¢”‡Ó¯ê[AND9 5t¾xhøµ¥õì ÷ÂÎ.  ÓµCÍL ]÷|w—4¬EÔs8æ%ZöÅ€w+ƒ£+G{Ô4ÕFòŠøªúþÆá“¦Õë!é`P\±SØD§LëÉk 0ïŸîTGÌI…u< ¿ëَ׾×Átö“RgC$—d•¬ÃŒ¯O¥ƒp7Åð?4Ýœ˜÷á#ëÍÞrc¿‰fS tåþ-S_èüI× Y{Øãi1›ÌgÓÇ厛}²³¤ôI·C~V®‰+­2—b/KÏû“ä8¹•‹3¼±WŠ%U#ÔxÄmèÀ´ê>ê­Ø55¹‡ðc?ƒO55üyªt.6aûãžÔ$ž‡$šì߯ŠjúS8jÇQW}­jž"_FÛ¶ e›>ܹ)ÄEËómMpd):ñO›´øF2SPímëœÍÎÇmÓzHÒ¯L×ò=H6@¾Y¨i)É5´yb¶mÎõ¦·2à01«{<™hî‹éWS’öH f‡M5<†$´žEáPä“p±MÀG“ jzV<)üåßëEƒ½ƒNKAÛº.¾LdPJL®Úè2ñ }SÈg-cÉ0%ÂÃx…!ùê¼J”nK/8…GzŽ‹ÑÊ\n¶Ã¨þ7vk endstream endobj 131 0 obj << /Length1 1203 /Length2 3999 /Length3 0 /Length 4747 /Filter /FlateDecode >> stream xÚm”y<Ôß÷Çe‰¡ÐÛ¾Ž1cß³/!kÈ>c0–™13ö¥ÒfÉR–”,Ù‰D¶"%[!ûVöe¬!ô›ú|¾¾Ÿß÷1Ì<Ï}{^÷ÜsG€ÇĤ!tÐ("!©h °ÎæÎ(_#4 ºóBúø!II¨„¤¤$­€€&áŒC¢QZÎ8„"`áî8£¨‘W„Ê)Be¨¤¤4IxÕÈÏ×Ù¤’’Dæ÷-¸ á8†pC¢hÁ¿ëê£\ÑDú¯¸‹æ?kþ¬/© üwu€TÛò".WR®Ÿ——±³7þíømøíøÛõÿÓ;{#½ÿ+ãßJ}œ³®ŽróB ßŽ‘¾:H<Âʼnƒ»8,©+–(Ö ‰B˜ }‘¿;CÊ”þך…;î‰Bøú² -Y!nî8@Øõvöú—ÊåßÞI}ú㬡¡¥¯m ö?¯éTG» QnTFpÆb ´¤î“H‚H’%<€À“Ζ@¡q¤㇠\ÑXÚßÍ—“À:¿C‘<6þ‡äe°å?¤ €ˆ¤„‘†ÿCÒÒ$B{{©!¤‰»CFC(v=†RØí’¶s?ÚœdÊ€qG Ž)H1ä1$yó:†$sÞG!Y9Ê•"¥¢ü¼a¿‡ÏíØ–¤1£!É!æÈi Œ3òB¸âŽ¢¿£Ø?wýORy?4á‹ü3aG{’Î…=†$'¾ÇPãŽ!©û~ÇtDÿcHªp„P’‘/’6ýë4ÿ=g&ÎH΂€!=ù£ÁûÃ#6rÆa‘xÀ$=Ëß7ùçsì·ýÿ˜^ 4ÉATJ–ô €T>ä¿•p?,©]¸?ÿ¤GðvE’Ú„@àpÚÁ~4\éºGjz®”-³µC˶+XYJŠ >hØTÐçªqm‰¿ÕL1Â{Ðfm­ç´ô2lH¸FÃï4Wt UÊ”‰¯_·Û:Œòz⫚g4qóboœÐH+6ðol­öFÿèzâ0^—5ocÁiSOU=¦Ùko¾¯2„"6ãð¹ÝªËLë —; gÞÜÉÂÊr ›¬WKF„¼ÊŠæ;Içe{î<ØîióÙἬtø±yî²Ö ßhçõÉâH‹Ðü_ž¨øD[.ˆˆ§•33 BÁ·Ÿ2“Ïæ¾ý¶+EK[XO)ʼ^¸áñÜLñôœ99jRqc´ÆÅÔï ¶.PøpUä ;3%¥ÁJ¦‰ß¦v¾!óĦ¨hÇ5û”/Ûquñª‡™u×VW,—Ñ냪(¡OÁô “Í Qýg×ßëT¯³©‘U®8Ä2/·¤nc¶=ˆX7h„¥Ö¹Ù°5éFv:¦BÍ7uߨFÐÕg´ïZŸæé×M£”Á¥HW£ O¦9ø§œ‰Œv‡¨¿èÇSÔ%ôUR×_è°ebä^k±×î5è.›h½uÎêñZ¿‘½øô!T'·³ÆˆÄòŽÚÀK+¶“†Û>T\ ùij‘½êœP‹áÏ#æ·`.õÙ1ó?㬖Bw#sÏrù\ª#6â¦\ž³\ˆ~ñÉeæ¼Àh¨à&ü/ý@ÇrtGF¾‹kA#,Ö k$v®ØçQØÍñ=G5P mû4~,…»?:‚15¶<=\ö&eŽMÇwMž¬Øà`$£ØŒH °°¤v½ Í®cðJTÊ5^”+8¹$wŽÔ, à…K™2ÖCYµ9&›×Pé,ღJÑK,?,YnOìz"ïœ1úT¼{ŽJ¿Ïô”bÅÖÅÑÅ9…ψŸäc{T0¹ÙfiçÍ?"<·|»gc•J®u6zl·êó: aœÕ2WçyÙçÅð'§µs¥íŒMq1Švfj™‰û9°µÂ¯æIwåXk‹g)´·Ø=,_à_ôÂf|JâFš¤Âé"Ù•{‚Œ³c_¥ ï*³è.¼Zè ñdš5:ÃZB,°Ñ4(å!gJå2ã„»]óÒ@è=눽ÌÐñi [0#:j{'o÷ñ8јøEd RÂȵWŸÜlL’Öìo‘ØÀŸìé=1d¦ôÙ6,òt²(ÎÐv‡³èë©l;ßzúÃk[P­ß¨›^oøc÷î;Œã–á9æ7$QäO­‹Zc—²*)Z`}æÂ¹÷t×r‰ýu+8j²e+¹Ç‡s<Þ‡¾ß7RóeѶ)À!VÞ òëfQÙ³ÿx›âü>Ÿ,ÿ뻳<'–Xè)ý£cýˆ·e²9"M”—.– d)iI~ qªÿR"ï?Û¿ÈXŒôܽÆñÑã$o6 aè­ìÃêVéò­)(H¡ê$ÝJ”Fíש5u±СÛxš"ãí)öo”÷έ€\š~ÐWš|¸–0þµ Ó%¿oÕŸ׆Ë ¾)¿,—¢Õš N"èlqc|6óß•ØE¤VÎŒDņ†&:Ó¤n³3OŽ)¼}ʃìÊÉYnÓmû®:Þ7}½®»ï2p·}þÛÞÍ懲ùMR5-%ð¯‹ð§j<\&] pF/Í">4ÁA+EnTýêÂÏ£/î»ñ Û¬PÙ0 Œ³u $FÌè\äg³úT¦Zü2¾B»÷4näWÑ Ç´æÓÖ S¬jî£qö¯bšÛ"¼aL¨Ý³‡åg=B×DÓ¦Í÷ü=SÍM]âÖÜæ43o—ŵ'< í4»“÷ ù®Vnûtï²a:Ö5¬JŠk×iO©8ÉûŸ4ü¨.Éf÷•Ô¸ö¥*XA|(&C„×TzÄùwÃì–TKĦÜ16å‹C½ò²ØÂ1Ùý€MjÔ/ÜÐ=Ìí¨zÿ¤XÔÇ «“ŽÓuc&óñ¾<-™kòár3´Ï h×ëeuæJ í<õ5ý|l×¶˜ûâŸN×ê¿< òU‹yjðŠWp«xCÝ:šöyriå—:Ü$±0V–‰+íÓu×Ñç]ÞèJ‚òÞÙ¶ï*¾›[^ï_MbWD!îÕ˜¹fy£t‘bÆl…Î7ÒÛ¿ŒWORKà:ïÞàÒº46ôU£·ê~Ÿce ÁLw“ìD{_ØyýmµðÔðÖKT3?ç.Š Ç ÞxÚU½Gž®(#öPyЇQHó²GøÝkÛúȳœ+ÅMV~üxôEËb\ob"pÝìW'Þgž¾ù5¿Ãiº›NÌ©”‡!YDíTº~qîSTP~Ýoz5™É{¥«¡Ãcõ>¨ršÏa6ÌÉÓ¾?Ì®Ùå~ÊZX ÙW¬dª(]¶*Љ,™ºÝÉÉb*øFVËüGèOø|&ÿÝ/'×Ç«•¦oå´¢ùø*w¿»³Gïê±LXó5j©•}ΧÍîwg'<ДEQÂ&ÄÚ í%3˜Ì©¹Â`ÍåþÎ7mHHzä”)YvF²âê³{§§1 xÝ•âƒ|…ÀëÂ6±ÁkADmADû¡|ÏSÀÈ„6¾'wЉ8&þl»”úí¤ñ;û››VU™1©°"ÁB70Ãáb¤HxM£Ç0]>î~¡„Mâ;.QúBV6ÿA žýÂ÷„~—å õ%çNÂO:7AIQ^¯ïcÅ2E²?v½ÚüY~3ÒIq{â:ŒhösT³_s–©žÕJ|bòêƒñ y³÷3˜+âà ÍŒ{\¥ÕçJoΑí1:öôÊÔT¿^0¹ÚÝËÌ"³†å.?n;ÜàLW+n-µ8Åz¿ç±5¿ÍOrŽvèVØ<6*`¼&‹ÅãîÔ¬¿­²úA0ċ݀³ëÃbö ¼×’¬êìmòeŒîÐá.âè÷‹?,³Œ¯O²´Ø\Qe8ûø (Í´ÄØfë"ØØ®è>Þû«IѨbì7¸”wç§x­‹zÑjZm Ÿ¹O¥© SýU½o|}šÁ¢6ëðè&oGÃ6ΤÆ_ttØ<ô"õ69•GùÝÊx^¥]7Zu²^„b’wJ½5ôë+Ú±:ÃÒ]w¤Ç/ò=¯ñ­§nziâãhêIEIøô³Ï¼euPùq.r´e“ÜÊ–}²§ÔW°#â°y ì|'ç{ZeèXa›ÿSGºè9K.´ù¤éî.m“û nˆËí’w£ºfhrâñׯ{~ŽöÁ‹®Ò¾wâû¾¶Cа·4_$ß OrVp3°ó:ߘô9`×az›éNDt wˆ«X¿°¥„ØfÊ7Ëô&6 (" I%»|…Á@Ñ<³Ìʳ3^é)Э>%åNYN³p…‰³*§£/G»DÆ?žïð0ºÌÍ]<ݬFm;ü ­÷9¸ê*ºêÐ;ÖóÌþ6Uh}äÆJ¦Þš$¹% *ó\‘SAëkUšåŸ£[ÛÀ¹ù¼Ö‹/'/6bÁú$º¥<^ì‹¿¦»øÍÚ-[„S—"n,uÐTÐo9™ƒ¯š²‡ÿ’LÂ[t+6-˜ß=X–! ºÿMôÂæO]†Þ ²—0œØëUÚ«›ŒâÒ¾Õc¸9õòÄŸ£wé×äùÉOµ§¥÷Ü~YgüÐà©…€Nx¸›t½) ³;µëÈÛhêf§çèMN§Ýã¦éÁ%ÞU¿®a¿èbÞ%öNKepë Çu»@ Âgƒ–í QOò #ù¬”púÍ~˜^f![»7”n¸«°ïA*ÃU^ù žÖŒn7™§‘xÿx—1û…»Ê¼f >Sðmät´c04çDpe]ñ•­IUöò…†…ðWÞËšÙ¬u™.›E 8”_<£^ ñ¬!g®š¹aôá‹5—ð1MõG­o›n²®¤pšeyÀj¿ÚÙ,}+Vèþ¯&G,“»-ól .ùärÎ)á:g®S°s¹!µÏ†0L¢óa“îÞ?Õq˜×V¨ÞwDÙß¾¼•÷-Ö’‘¡³?ÉRæåÓiÌó1:–7œÂk#µÊ…£¬i“l¥0®½µ[‰Î ¹« qxõ¼½'h9-ížyŒ rG¬,Œm_œE®A5S;¤r’泫7ùH±TYò`>XÄœ¨Añ¬dýîÍG ¬¾–åÛC’b³ãñÒFd,M¸.}ÿKÝŸxÝØÂ[bÍ:lÛÛôUû•˜P ”v„úñ[6Ó«6Ôâ•‘”©y«j× ŸÆ]á:Ž9o½3´|Fâbó=6¦þ·ñf51d\VS‰—Vm×;]ˆVßÒÎwd,éÕ>Ÿ¿áåÎrzU§m§îVåz?Íõ„ÈŸôU îÖ’Ôá=Ã!™‘•±+^Ì|¢/NKM³Pš®ÎÐÜ"·$R‘ÕTÕE/›UÕ¶·dax¹‹ÑïlË3ÏW¼ì¾¡V_PW/ {Wó^H`rۯѵ¢%©öžSýöjÛ๑_Ø‚ ‹D¿.^]«[„V:ç‡\i"±Jw‡÷ôãÞ}PE¨¬ŠpLMý*ÒFw¼—3ž¸›ôêi9øUUAayz_b¤ªóD ÅAK÷à›åÃË4“ì\/2?&„+`BÚ¿Îä«÷1'×jÊ¿öÑ_\£ø,”—²ôÖîyUñËyƒQÜb€^âΪMa}À <ô¿T£]¶¸r'P¬Ù—ö09yÕ“—åþž¤JXŠÌÎåòffé®M&qëZiÙ—7†Ê2Å"šc`M%7Uá¹ÁÞ©%ÍÑ­œnÎgÄ3)—ž¶öD«;Å¥s‚0'y@m5ú^Afík7±z)?Â1i÷‘ûˆzÝ™²\{eÙÄK¿8l¾Ò0mæ\ð’u•1·}.A+{í£«b߈ø<Œ!*óA|ÿÔàA-lK|PtàJeÀ°“!‹%ÿáµ ÕQ}ù\cÙûó¬f°Y»~j'-KpÓêú”ŽŒ@¥|…Л—L³Ý´cˬ¥w§OÙžÛrëþ.ïv®Ö1éxKÅ=F¸qz¢€ªÏÎæIÖ^›0”nªóóñày5l׆Žçä8¬ætu2]ÿFR°yõ2°ünOÇDNÞ:*ùªáËvKÎQIw |/“q"ß—ÿ"ÒN@¢w§~2¦€W‹ß?Y,ê{æ—±¼|O^–÷MžäÈn¹óA¬˜î  7u¬|ÖÚëŸÿQËC¥ endstream endobj 133 0 obj << /Length1 2567 /Length2 21218 /Length3 0 /Length 22708 /Filter /FlateDecode >> stream xÚ´»eT\ݲ5Œ‡ A$Hw÷àÜ]ƒ5N7ÆÝà‚»»w œàÜíë<çÞ“œsß¿ß`@3kUÕ¬5«öÚ{”ï”TELÁÆÀ`„‘•‰… '¯jr`eaTš;ÚÙؘXX8P()ÅìFK0HÜäpC,Š&h(Ôƒ……… í¡‹¦cW€<b¤æjdÐý”ÀFc#è2dn ÒBCÄÀv®ö–æß9Øgú-Ê12±;;X[Œ@¦&y&€Øj´ЀAc …‘lPjÔU%TT’*ŠêJª´LÐĪŽvv`ûÿ©ELUM]’ .¢ &j0$ÕUÕ~ÿT‚ õ›3Ô ë¿y Ž¿Ãå%ÔDÔ´•$X™ïÀ pÚ;Xþ¦ý¯Ú¨ •þ” 5³ÛþC ±€@ìø˜™™Ì L`{s&;›êS³°t8ƒí­ÐO{  ðaA¦P9!À%øÝ€œ¥ äüôü¯E[¨”Ð ¨òï B@~ç´ù—;Àü #‡bå””ä¶F– d2:BŒ ŽÃlÐo )õ¿ ÄíísÈÿï’ý¿iþ·tQ0tgz6îžFÎÿÝ1#£ƒÛ_Úüç¶MÀ KˆÃ¿2f–6ÀßÕ;üî™%蛼ˆ‚ô U5F9èàåÁPu@LÈ?Þ¿ó‰ˆËñxX¸¬¼èJ€LÅÀ¶¶ÐªP~Ë'n Õ ¶weþ?sm ;ƒÜÿ¯ÝÌdjö[ySG;fuå'G ´øÿxCM(læ@€üº˜X0ÿ¦ûgZ~›Y›¡2xºÛífF6@OK3 ôÅÝÁÈ €Ø;=Ýÿ^øO„ÂÊ 0µ4@z± ü“]dðþË ­ä—þghþ¹Pi¡W©)dã 0š¡0+€!Рùÿç:û/®Ž66 F¶@šÿ–ô¿ýŒl-m\ÿÃó¿<4¿k¥QÛÛÙüך¥ÃK ©’%ÄÄâ_ÂþË. 1‚ξÈÜmÊ?&õß—“ tn¡gåï£ ÀÈÊÁõ_kБ4±ÿ Beø¯‚¡Úÿ.À¬*/¯-)Eÿfæ7 ØÔd`ãäÙÛ¹¢°@“àÎ iS Ë?“`f!Ѐ#Ä`¶GùÝM.N³ÈoÓ¿€Yôâ0‹ýA¼f‰#nó‡?ˆÀ,ù±˜¥þ v³ôeûƒ  ò€Yá‚ò)þñ@ù”þ (ƒÊePýƒ8Ìj”Aó߈ŠŒþ (Ÿñ¿+”Ð:MÐ éßP“É¿'ÔßlíèÿZ88~[lmÿädejú„*ü9¡«ÐV9XüåÝŒÙÈå4³üCÊþ:ý•ƒšÃÌæ¯x¨‡ù_ZÓŸìÐþZ¸ÚYAy@m–AhK¬þ‚P¬ÿ‚ÐMÿM­Îöd…ÖòWfVènÁ¸¡¾`Ð_•³Bwj÷gkg=ëm€f$ç`ýë¿NŽ›¡EÚí-ÁiË Ýø§¿úuùä†ÿ3’•*ˆý_º{‡?òBktÚZþg_9ûþšýOÒß}„8ƒÿZ†ªæø„ªæô„²8ÿÕbh´Ë_ºe׿ T%·?‡frÚÿ‹ê?O¥ßwÈ–?GÆÿ<:üƒU!ö`k ¦¥)ô±é/y#ˆ½¥‹. ôäf…Ú¡_ÿû›þPþ¹éü-* vqgä€î‘: ¬쬿EåðüX“ÝÅÿ¹k@þñï[(tš ,Ì‚MÞX%ÕyI|(F¤äe:,}#¨%ƒ°2Ñú_¼/ÆÛÚqÉ6öŒu–H¦Wܼ”èœ÷µ×ÞÛe“°ííüD,äù÷s„Q—ÈÝ´aNЛa$»o8?a#ò„îçs9ñŽ>"¾‰êHç{¢<¤­> :Ðkm(QS‹µ†Aßµî_r&ÛOë­à$þtA–%—«l0tôõz<…üYa*­µ7g¡GÃLu õ6U«¾; üña µv8s•åÖë2'HhzÃçÍð;?&ÌËCS‚–UºhÖõýwî¸nHͤÁƒZ½T:Ó¤÷¬ü¾˜ÔÈñ$j¡àrÂT„–¨-þºS±ù¯ nßšËï ŠÒuTáÀ+Û…ÓF¶^¹ä®‡‰M¬Ažêc‚£!ÎÝ®W]÷&{̸–¢œ¨·>žëž=]?k*Žë/¾ÊU™j[{žàzhÓFŠGUT[‡ÜŠÅËCTi©Ž>Ò§Óœ³‰jÝšLæNDv c{mÛ w÷Ë&“5•Y7ŠàÜÈ"YŸ±옿iÑÓ¯3Dñ(Ã:!(ÓåÖãÆOÑ|•dÓøÙXMB>Q/&Ȉʬ®?‘…me5“Oxò(c/'¬ÖZ ÿ*DFöúÚ¿Ý‘þsÿÑx…щ¯¿yuÀDeñqÂË+6U9»€öÂ:¦»+§îH{ta—Κ:ʼÈÌÀ6ñ*6ûEš÷ûn]¼_׳ž*¦÷®ËÇØ³Ôb2 Ê£…2L8 4úTRAß<ÁúƒÄ{ÑSx)Îea^‹î]›†jTÕÛñÏÃø‘&·üíÊ«pUŸ,³~ø‹Àgîe?ϱ ªs­³Üab"‰uq ¯6®®}[xÁÏö%‹âìçI!q†¸‡õá)(Dem¬ÏÎHÒ$L•-È ÒA\~˜©´õ^yYÛS³ž(1—º)×ÀvÜ–'•c€bZû¥[as,Á„ߨk4~7Î,kHÃÒ±OÊnY?KR4_/«n¿žóü$»¿ñ ã«X^B23JSÇ #žô’‰‘3½gQžu”'ªà{Ç¢>£DgÝuÕ3^°LÁˆñKÞóæ°¼’^Q`}äîk¿“;IšÆ×.L5iÉiKžò¶,±g¤×ø0éÍZŠwÒ/4ùÜ,uÙc‡—Œ¸g²Õ¾X³ m^á/«]´½ RHq˜Ê§á%·˜ 92C›R;¹ºm,~­…(‘¹¡ÔÒ*§%jµuò+”}ÊrÙY]—$å*þ»l ­¶ÅÄ0i ÖF\ýÉ{xbX²+¶è­%F’Ïi0=ši©t¥¸|Œýú›sÜÒ™©–äJ, *~x±…Ú"·` ¤jʃÒBî}Ò¹ÇÚÁËç˜Ñ7K3GH‡Ša1·”³u4­ v´Ç>ˆì ô–”F?Úϯ@\‰QX zÌ”yŠ[Á[zð^«r©ßô¤”Ófùw7à —cý‹Öã5î2¾O5.•ˆA7…ÑâØ‹ z’¹ïÄ×_9Ó©óRÌÊÇšµ7™J²¶+mq¸:²T¸M«h°lÊ&vtuè~év«û ÀsÛfæ”5kÛ-ÂÜâw¡¼_¦‰`ŽF)ØW?R›çÖ9Vt±Å¶3³y™£]9‚:`å ršð~¯B\'M¥˜ì¬{º–_‚+E· üÀ8áMl>½·Žfum1à6P`ûF›ûèù©¯ƒ3SŠÉmvö×ïc,­Fäì›îð|8m%Èó÷š¾^ß5@!ýæ-éÍüŒ‰¬ã.æ¥ÔËèòM¤±'Eb®‘‚*ª>‘È‘™¾*™$[‰Ö}àŒœA•xò ¢UØ6Þ¬‰eUe„C!­µðº³PÛÀ+ÚÀr[éWWò‡¥pŽBÒ‘YÖjíg¨(Ÿ<ð¹²¥ŽBÙe¨/¼üî•oPQ¯>„+ |ð|óL¡øM0 D$ôÃ,¢JÇ: ˆ©Hþj$ã ÛoïÃ+vh(“Gü4¤5»™‚é5&Øîeú±ó]iÓéàp#ÝL/Ž /‡sðPâÆš?û²zÕË«7Ⱥg1/rñ¯‚–©MÂQ<´®^`²"¬×E{Ñâ½N»NžÒÞ1¤çå¾m¾×OFÖ('çÚ5µÀŒ,*[FçäŠÚ‚¿WÀÇ׃¡à{ññ—Jƒtí…â«å®¯‚IÓV ;TŠNy‰BèIk=!žÇ„J8íò#E“É\ ……gØ4Â$U¶_œšl ={’´ä?“´œ¢xqñ=X¸õP¡ÌyV"ÎsVÊwÓ(¡·3™eyhÏÿÜ›¯Î¾×zÃx«SMiŒ§PMÓLˆ¼r=ÿ){¦÷Xûkç¢QUaîkooX1*úÌAF^‰ÂÁ˜ŠòŠic²4>d+ ª0¦~•‹Êˆ/í=ý·š 3©Ú> “TÃo²9áp§vÔ.q¶Ô )t•E—Ïlübw·þ*ÕØR µÌY`G“ÊOh,x=žÇ©q‰à2Š;±¢ì0*y. ¶‘x³à3ø´#Ácp½·öœ*,„õœ—Ðo½×m*8/¹! [‰Xð–U `ÈKŒÓò]¬~øYIº"âï“muL¦4TëN@«M·`1,éC³¤ƒÙÒ®ºd\U{ô3ˆV ‚Ýe+ À •/·­Ü.'-¾ŒÖC=|Õ~_ÑàÊ!G|»×|„œ,`¬½ïš„³L¢áM£Jä›`¿q<ÝÞCŠ‘.RÞ‡vØ|Aóþl¯²Ðˆ·Dåb3]^†äj Í0‹~h5ó~ó«T¬QÎDÛæ+âoþC’„&½:p”GÑú)hÀóÆBÇw³&KNYC4RíÙÙIs{]¾2E‡ÇûJä¬Þ!÷¦þ/½ä›®´aJç`2dfÆ;ø¤iDå°~Òàß³~GÔÓ©<'„u`/Lai¯ :°aÌõHÄPØ3|xш…çlïèf@Á”Füdý-…&%úf«üØ8õøQ…wpä%w;gXIäËÓ¶@ÛòkÌÁwµ¡¶ÛocÞÛˆØuW¾øX Þœ"Ñ# ¹xã-¡ŠØuñnCV œooîãžþ6V‘X«EBƒ—HBÍ£Š ”4¯‚ðx½åÐñ¥ôÊ|C|®“¡iKõÚb»ø¸=šÜè]ØíôS7F¢ÏHdA'¬9†°ä|MïXCÉAžYÁʶ²^ØU•4êeèTmwÚ1R[zÉ rU–N‡C‘hœôh]Ìí¸Z¬ãAë0²?wüe)4v¤¿•IŽ^)ª:Z&;R(–ÔäWºÜ0bŽ ®ýØ¡—žÍ‚ ,÷„™{× Ðs˜"ñŒJ¡]è<…6AÒs *zÌê1æµé12\!Å:rPŸƒ_U*nfý‰X sasßíƒÆW™ÃíˆÜúTDÅ3À½ÊÆæ&7ó(æ°tȺD“®'á¸î× ´ žy´‚±÷ßSùDãÄ=—’Ç×õ8ôbÑ”Dã:áœ Ê fÁ`J¹†¢ZHr£êî+@*µõƒ».Ÿfåíïð Dnú¸(‹G_¾É5 ¿loÕA¢hÉAyŽ,—äµsdó:ú”°²·‚ÍŽüî}z2OÕ\ÊTpm犴'‘6ð¦JN½b Â,Ÿ‹DÈWeK1š~:5£kp%‡‘~‘žþ~›¬ÑLÅIj Íî3Ńh`†<~-êµFÈù÷gæztÅý¥Ï*ìkUÆöwàËU‚§ “wB¶ÔÑ Wäܪ‰ü…¡âðp†úÄ5o<ÍN|599¹hÍHºÃ\œÔUAëðC‡¾:öh./âƒÂÇFÁJGê8•;‰è ^þÞSÔ5*‡—u'0?°b(~bWλ;Ãaíç7#¶.ä-\8«Œ>„åN©;©³*Ö…¬sɳÎm[^l¬Â4È8Ÿ‚$j1\±B¬oÓoEwØ.ÙŒŒ… ¯±¸ÍX›ÂA¦rx^¼_t¯+8ëÖ¾®£ÂdH%Fõ“÷­Œ>îØÈx9Ýšw!º„Ä!œõ-Š)äcŒü0ü9‹†ˆ¼ºMrï¿ß†¢àpÃEeÜ;Õb pNâ=cŒ›kéXo0foºeo…H§„â U Á´b+.°$N™¢ã—(7S^{Þ‰—²®T(È(ÂÊíÄãñWpùÓW«óè­QT·­\” Õ¿-ôwÂ=Ë·GÓfï¤ÎœF®ö­­úEIŸ©¿¾è†‡Äàèuñ±ÜPQ<‰ÛTÇï)f÷6?OV‘Ä]aŒû Pã´ÇßëHý {ÌEÞ²mq¤ÓCBUÎtW%w³>‰¶²}æÙñåëõŒY ºt%G¿-DÏ ܈?k™ÃÈÛ9õg]Wþäg±"o .{´[¯3êÀ—q§²|—¦Ûù¹9\„¡´Û|+fÐñýbÍÔ^½‰nVœ<î笻¤E4çÚÇ)x`ˆoÑ ÃË*Ùêy·¯ Ç ¢0pF@=y¶+É@ìdK‚Ú´„¤¯¥º˜t>vàÍŽ¶긾²Êwƒ˜»Ù¯;5O©­±ZÈ$lMa` ;1DסÞêãêð©Kû^ЧÞîœÝ&›¦StBˆn\ÖàuìvŠ!e(M\”¿³d†^G½°‹†°Í`/¹ê~Mjññd¼ê´3ÌO<·‡[¦2õHÎsŠnÑ*‰„O»6zAy7d½1"XâcökÖÂÄü’»ÜÈÞ;xÑ$*²$…o¢2\J~™Ç[™yH7¾Ì‘9íö'~öräÓëšb"¨îozªÐŸü+(ÅûQ4KÊÓ?sÍh­Ø¯ãq‘RÛo¾éš"ÿà”?^ïÆ«`,ʇN6Cr&?¼'=÷`´¨ÿ BØ×Fó×hJYZíš{;Ç¡„;mPšzøs›~´Ã°ÁÙ]qÔ×ÉÓ­•¾:‡ÌŽÌö××›yÔ ân!óŸ¦óˆ§ÞD‚ å͇ùm%R½…ôï:˜#¦ÏwžôÝ&2Oãe:ÝCãnŸLPŠRîã¦Õüµ&¶Ôw/ läA%Fš«Ï°4]Þ™jé%˜„Àzm—Ó²È£ÔÆÙæÖõã ÒƒÃ1Èìvv;ëšËDev“ƒW0Ë×"–]ûùŽÒ·/cŒ´V¾™]t¶!…Í©òk_vbŠ‚¸»ë~‘šû*Ï#»hî­Û+ ]…vŽUlîEªG/¨u“°Æ ³Dy½ªOwâ¥Á¡r ¹ºtÇùêP´¶<B«† 0ç¦Îæˆ(á1ßÃŒØfñçã:Á¯gÉ<ãõã%PøôEFI€‰)(¼­d’ò]\=5¶öhñG'6›MëÄé€Ö´ÇBVkC¶ ^8èSÀPK%XêuÚÅqPtNÝ+‡dµ«”veÖMŒæ´ñª 9žìùÎ6[‡‹Cø<Ó-ïiËì³ Ø¼¹ÁÂåèÖ3¤6™;ò*¼§—Ë%µ‹z À¼gÿ ,à'%£447s¹B»Â%ÇŽ[‰­¨PQHfôãòÀÈô[·ÏhI”é;-ýÜÏ圜X*0}³S­éYÍ ‹‰±i/ÐÁ×–ê(Ó2ž«òCß#\¿ñ;µ5k(“‘K°t Hq½&[hïË*@ÊÙmÂN>…g çnK,ŵv3ŽÕRjÚ†y\ýì€P±|ó™sý‚æÇŽ‚¨“‰‚Ùz¤qQ,¸r}éI¶¬ùPmê»ùócýã-×kÀ¬ÝõDl{dtÖXÌ }÷ž/¯öv^ÐX— ƒ«h¸e•c6áŠA¶ÆöÄêepyôûð { s*¹û,C` ™¤µ^¯þâÒ<·Ë”ž¼ãÈ W¼ê ¦TOãcD%ɆÅAª‚JGFá~Õù\n`­–1­|!÷êl¸5ä3  ó¥ïžÿ•êr¢€»:w´ÙC„b|hPÕÍ«ÇTÈ6n‡'Fbc§«ÿsáSÏ[­XÖ)] ­hëª1,œYYnm][<7AQ}ZŒå ›íœ0œ|¸‡Y¦C·Á1òëÊÚZ*ãÛ¼d¥^ÕïW1þïûñ3ÓòŸVßÓ¯oÉ678ž¶îÖ7UZšÓ›µcQ0S<5‹Òß®–Y6 @'Ç(ƽG©×€Y¥ 6ÖZÁ¬p Š~ GKø””l8VF]†+òi\/¯µ³1Je.« êw¥PDšU["V"ªIOëù7B©’k:Ì@dtÇøûµ”´Ù´é’Ǔ׳34ÁÛÝ·l_…î×Rñ˜º_!7i!R¹§iT—Ia©ݲç}Ësf—½AF·—Ä“Ì|cáí«Ì¸2'Iˆ:òÁ‚Ÿ< fTnGj Ž¯3s|Eøð6 õZqxñˆÊþkÃÇÒÍô[‘ò­;Bü=xÖ|B‰è™äBz˜§²e,±c2Dôªˆîpn%½ÂWÑ—Œ{Ÿë5ÖrùFŠãxX²ˆ¶soš(š¾Œ žß åb{sXß=`|{/Y§ª]&ü=øéˆS“¨f-+m@Ëå#£wVs£M›~é= |†ƒýÜ+½Vònâ|¼p,2eGê1ϰRÈ'½§*§uL¹-šèôS"Æû+ׯ›´Â?T<Éw7ƒp uÕI¦²ï‹\ŸÝKªJÞ•"¾Ä¸iÖoø#Ñ_þ@íìy¯/½ÎÏåÿüfŸÎ8#8»":Búc¸ï=Õ¯zÅÙS”Q­LÇoƒÂ@ôwq†<î} ]#CGn6·¡NñÅÒ?¢3«®h±E¥TX‰à¾Ê¡è'Ð;¦’ôb¾W:îú¾²¼¥gßÿ"”MøÓu4±ö¶{œ˜[ðôÛaQ#ÿ–]€¦˜Å¡ì\+û™¼äBÝ’“ŠBù‚.2{¤‚x¢“Ñxø¶õÅ~Ídú#ý=2—ó·LšBóf‰ !0âBlãF<ý¼’^U—Üè“S Ûu˜JÆ-ÏÒ¹¦MX‡é„õ6Ôœ|YÑoÜ|ãçÖ}~"0~±Ž(ܶðÉ‹ «aÙCè1h”΢EÙ[®ï-rÈ|Y§±³‰do—Ïæ‰¤pn‚&²GË$5ØQÛ6ËrUnIGúó•è÷61~E2xÝ_v—mµ Ƿ黾d\kÞ¸>¥°EØ:ï£ÇpˆßKÑjÕ„^‰îú© šVÌ ÎßèÀ$ãE[œ <ÿÊ@}·/Þ—Ùif×.e^=Í\µo25[Î…'Œ2 Çä ™Ú5ljkA?d2)åõßÙÂ/ ÏEœ˜ÃНÔê^îès¸¼Å Ã7õ9Weœ{r©ʫi÷J>}ĹÚûÂy;Žp»j`]Êr±ýðK³øô-wR3ɯþ§úRwj¡•T’ª|>ö«Ú4j£/J/¦ªï÷öâýb“&á„3yI˜ç¯M»úâqÜ–!Ù$ ÃÕÊ´¿ëâ¤4¾¦x ^“Y˜4 ·c?áUåݤBwj‘Í¢·¿Ÿ‡#nð…yƒ Y` —¦úÒûý©½´>3…x@Îr³ÙßÖë6<« WÛáeæc Å((ø‰0G«ê‡a¥P•˜š”—/ëöCIîSWî~ù¯êõÁ¼¦ˆ’MѲÅtßîK«`Àç{¿Î l²Õç÷¾}øµÞ†w2íJl %ë862»½@ûü¤¢H,r×ò~K––ÒSâG…ûµGŠýqïÍ•øQ¥.Ë[óó#X_2¡æ”íÊry ¢µÔ·ÅÍ3+g»˜ê­ýô¶Ù‘ú§üf,;ÏòlÒnœù~­ÆùÑ‹?)˜¥¯ÜcÇ-Âé¸kG<~}n/eâAŸƒyø5"N%ʼnå”Í¡TsEUoâëã•Ârmva™^v£·|{…üQv˜ä rù0ÇÿÀú í4`Û…C££çs/!VàœV¯âk˯‘y!&‰w¯pZõz´º©«ð©eïÏí`¸6'wˆâ°HUߢG½Î9g#]²K¥)sÓ)B¾G¼ºyER ruQN8ˆwB)̽?`?óåó¿×«±Ç•‡ä.ÿ´mÐ}ãcqïý ïÊ  ¡w´jQÃðgm’gRbœzoŸµXÏDë²î£™SÉÕ/`r"ï°š3%kròܵ¹‹âFÝ®3éøôkJ]up×sJàn\O¹oú™±rÌ`÷EïÝ,µ{$ôe†Ìß{€œ·R—yý–}±|jeÞ§ é—ï!2‰ÏNG±ÆQWêhõ W-‹_ƒ…û5NZÅ^ôåE±¤ŸE;ã|¡ ŽùàÙuž4ÈA¾ 甡½ËHdìÓa‚Ÿ2ÂB˜R*JÏÆ‡N”]´ºÂ($BÌé>Ë- ³kdG¼{¡Z§Ä; ©b½o&Ä/¦ÅG虺²­hç¼»m¤Náó¼9:=„}°õsAìžÿerí}e‡^;€.hý¹œx£ ž Ÿm#b(H+óÆØk¾¹Æ í¾•i §Øà\HaP¦µŠP„Ë>d'~}@/òR8uÂ̳G|–ƒ QÉÊÏ“|Ä¡K¹¾¾¼Udä¡ô\?ýð8#sŒ@:|݇ÑÛ‡¼€ûTÒð¼ô<¹6¥·†Ÿ7À›fˆÉ“Ó‹²ûóZ¨i“0^M¢ûgÎ/*þZ‡¸Šyß´’Å@3_ÈhÉDé<²çÑåJuGÆõγڤ‹Lî]çãÀJãJ‚°A#ï`¹6÷¡÷»ãŠê\þ 訛¸ò–s7ÝùLD‰³˜,~ZâÕ’íÏwJÇJeþ9¯ÛúzA*ßè©wI¨±,ÏqŠ6BFé›;·Ãš¼Ó«¦ ¾0ömЍV5ⳬÑ1÷âÔi$–¿Øj?Ø(¥Öµzš%šÀ Ö]ó/‰±}lÄO0~ÃWHèz™p›¦'P‹bbå°T@8mE‚KV`t·~™/ÃoÂ^=>\µ&¢ñÎ ôWl ß «ÓUÃ`B“ÄÖêùnêäû1y  é‘êV[º>öÂîÔHĉû>ÐÜCfBüf®FëGM–Ø=v|®ë.LÔÑ ê †E’ÙÃLþ!0PRÊ»«>@ ™5Õè!mËuÏ»ŽïÒdFfɳP–Û¿×É·ÌÛk–0¡ï÷\}ùð¶Wªe2˜+qî®àðXmµ.Ö-&Zâ•ßÀb|ß§SÊNäcãîÏ á!ÄÛøÌ##eR2$͵8þâ ÑǾÒp6:•>àÍ[’–Ü„ò,ó=¥wÓ¦ƒ?µºíìõ$f†òÊEd#gL—].nDúMƒà–»VÅ—£ÄЇx¶¸áVÛ©oŠYÛùh ß G¢]‡d—˜¦XèÔ!…7‰¶ñïó¡ñlF % åuøa¾¼´Ø~=ÿ:2å ¹ÃÉ7µ rMe#dë.¾Î"˰]¹–y˜\½o­N*M;@I?¯Çh×Ï"Ç×EØ%k%âm‹ë÷†™Æ4_óHŽU© ƃí¿ÞyòBÔey ”hœ“5¼§…Tìû黿Ü]Î×·ÈÇŒRN &£÷Ò´Å.),êÙ÷ÝàÌ‘¤qs4ÑÍøÔ0êšû YÞŧ]èöx'ÛCê–íŠF™›ú¸®ChÃE9ʆHü ýHÄè¡ë“Ú‡º.NŒO0ÜKäô;¾k‚4Cx뾎˜J &øm¤÷G Ó‰6’4å'8Óìð7»_öntÖMø}/í?±¨î‘ÑðHÒ&v "|à‹ô³¹I˜~jŒX2^7” i9jv7¼)¬ðoº;NÒ+&½\瀠S€ª ºð…ˆ€ªN—O¦–ö¶…8—Ky‚YyÞüÔÄ%Oûë(½ã3`‚W¥Žþg¤õ?¦’ô/õÓ:Kz Ûê3‹ 8xaÆßÌ~•6f)>%§ÄŸšölP.Í"õ<½ï— ×'qùB[ä±±”ß…(㵡i<ÁxCKN²¾‰ÃÊuÓŠ¼ ÁMû¨":=LÉÏU(7À=gMŸ¢`V¡½8ë3+-áÎä¸<_E/£óªˆÖ€¬n~U&$ËøÚl6%_úÖë1ÆÏ¤Eº.k‹ëIÀ6BU)ÌõÛŠ”íÀûdìÏcd„uÖ;°¸a)¯®]lT(}øúºUüc]Óíyš„e=m Éfqm€©qî‰Ù—ï=hiø÷0LÌo°›9ΫìL–¢¿„¾Û>å$Ñ;!©)½K3½¶÷!×®oú42 }ææ5‡[S¤…}æò:BGs÷ɶ­ØÇô¢aow²p£ßµë8*àÎGŸ{¬f~üäÈC›Ô¸ü­•õ9µ†ˆ€ˆˆ{¢^ùÖ¹óñ"Ó€ƒd„>ìÓÄVZ³š8·¥£'< ÝñŽÒØ/º¬¢?pø #5à‹“ænÖ8Ñ\¹µä÷n÷)¹NâĩƒˆçL xÛX³kA—)áLpƒçsâìƒúííþái„ÙûµvfÌPId–g&u ôNÕ„¢³BÂr#ºB›™îõÊÕ)ùŠtç‰E ¤è'꣊®†8ñ¡à®o›ÃôÕ½5¢Ù:E'C,4†($Õ &‹ÍdŸ ýK<ÄÔ™­òõø_«é¨Q¿ðÅÆîºÙ¥î’9ç2|i³ÙÙ¯ âµ~èÿ•M—18ÿjÀKØØkþUïºï nÐK<g>vyúUá™ÃöÜ–Yß™þ¶<¬ëâ-‰%Î|Ô´8·¢Äï<Ëó¥f‡"ó|- Ôýé|åÕ¸¹§ÏÞ“NU@Ú¤Þ+G•öR4–¢s™Ux²Ž´®(ÑŸhn„ó÷rk,᪸ÒÒ)ª%-+:±L ñíȺ¹Ï‹Ü?1Üõ¼37ä,ÚÆk¨a:ˆs|FÁÆ×ô¥Ã˜Aµy5,DE Æ`)­È‰t ÷ÙO¯A®;n#NÈ’²Ž…ŸÉ•ý~¦Šø êpæ¹¢‹„³9 N êç¯&dqÒdÎf~îŽâ`“lÜ7rjªyέ±LæUVÕ zØ~}¸d?¨ýEVCñ†¥yWe¾2IòRÆ}ìöâýZ2þu~Eä*å®L­l.™ƒm/Šrñ ‡1þ@wì^m²5îÜÁsg ¾~ìà5Ú®0R¢»e’ؾöžó]*¶MºÚ÷Ë…îXÕoã©8ò•lêÐqäÉï‰aÛè¾Xs¤)0-m…3|Ž@pq‡MìGÍYBêƒÜŸ¶yëlšáâqäâAFëפR‰»"UKH=‡1?÷‡ŸU¯î}‰qköiŠóåR é™½Ú}f®Nà>á1µ5dô78XL»áhúÿ Ë}TÝ´ÿ„~,/Lkïùµ¾CmÑïù “hÂô»_‹YSrÅ2'çk{ð1©mÒö:ÃÈ&¶ë䮣Úý–'ñ0¤Ï>W\Cª¦šÕ¿ž‡å¦Ìª§ qñ™j¼?U2‡› ùàSP§Eކ.þ\ySh‰,&já`c岯¹ÒEQlÓ6¡Ñ206 #3 h'&ö.^Ìã¯Æ |ýqD‹†¹šÇ|&[qPÜ;Òè8—ós8fÕsÐù òSJªÕ¦'üô™÷›º1 0Oòø¹I}Y#€Ö51a xÄi‹ƒç†CdÒ{Üë…6Æs×|ï¾Vˆ–PvÛ:Q7#fL÷‘`Xž¬yh1sW.…ƒyv×;¦›©–QÄ\!g½çÄÀ›e8 zÁñ²yü0I[U²…4üÎ5áW‰ÉDê K£î‹—]Åù˜,ž«ÞEdL´ã4hZ-Žçq%Ë}–Y^ „³Ìä3÷YœÃc©ªÓñ]¤¦"L³%Ǭô;úНáßI££ðøúˆË±Åp÷mEpäûŠ1×$Õ`ƒ";½ÁÝdB.,›Õg}›!hÀ¯žl,ûÍ*î Ό՞­½Ñ¼“/M¶OŒ²ý¤¶¸)qv^—vÀÔø¿©héØª—:ìÓŒÉö/™¾¥rٿ霔¢<–¹î¹÷:ó°„>rG•~2íq66°Ãþc5í]o¥äš²VŠÊ¬ÍwØévwˈjSÞôhRâ37t†DÝvƒµ\ן¿»Æq¢pÞÅV»Y¿ ‰­Ò몘¦ª¾³¾ l8Ð%ç KRüåÌá›ß2±AÓTË_?8«jDhf»ÞÞŠ0®©nª¾k»¬2òW2ðÈñÑY\`<øË†’Nÿ¹áw;òTÏx–¹9ÊO‡Ê_ãó$ýÖ@æW²\½\ä,º×ÜðÉš5Ó¯­ÌAåʯœXvw«5 œ (óÛ‘\(ѵ‘æ×7«*UùN®„Ä$Öci ?"ù3;$Ÿµ#Âô~IræÓKŒ²F¸;µ(•È×Ùö-V¸6Î3ø‚ÇVÏqüäºe¾HBUCÍÖû/BUj¤¶E!w[‡T¢ø–(œ#ýU'Ï¿ƒÚ4òP|P¸e#Õ…¿l ¸Ù Z*¹Þ_6}7%]¦çÛû ‰ŒëUY½þXaiÙã®ÙV=çjêRdîb¬¼ ¡pjŠ=FJc®ú„RéÆm=§‡eœ]”Œ1¦ËRø–B£þÍ{¤µ#£ ?ðOV,€ ÅK™ï¸œÅDFïyÞ q\o|AЛOÀ¯­ùdò8${þÖo§Á—Ä`燨M&‹éê(gšî¥öv[¶…‰˜å¼åÖ÷W5â[SßHT>"Kª‘%Ð €ƒPè?éãìñ:nZ:(#c|ˆƒÏ* %òÄ$Ùˆ[»Û„¬*‰˜ <ÑëÒE¼RgÒêÆ#5†c#õþL§Ø›,mµ˜IïÕ¤’`Nuf˜ë¯˜ïÏpŒ[æ"À ¢Ë®ïÀY²Ÿ[ž–×-a¶ƒ!WX2KÝ”Óór ${R³ßf+ð&LÛá y9º/ x:`êÅg u(~²>-~z÷#8áõ×oÌ:ÆùY'ƒé‘ÖXá aÙa+š©¨ÌÚ =Û‹KÃßðWÂßfü¸À'd•úuFÿká8!”ÜÈ=%ëlçঃÅñ¢¹Çý)“/ó{’]¾‹ÍL•ã~Ìä·$32yÿ¤ˆ#^FMeƒVX¼ÔšgÁ‡œSQî8þ{1î ¬X¨iºª®á-&>¾PRÚ4ü´­zó"ZŸ¤â¦égò ©ìcåam:y7˛̚\e QTï½ðS‘´8íe8òÓ5¨1ZFÙ_à~*ÅI‹óŽDŸùÔÄšcÒÇro«Î×Û8Èâm‘Ûòçš­‡DÔ`m34ãÙ»>S³{N;ò|ÄøJ|…>©ÅR7wˆ0èã4²ße³-Lû’{sÛ¾ÞÓVbïè–¢®Ú+óÎeÌàÓ¶ÿ¤<ø³áš¾Tá¯ãí[±•Ìä´`ü?*'Ü µÝs”[®ÇDZ<"­Át.Ùf%­L¾+1`C2ý•Ä ÒŠ‚Âxï;E‚dú(µÄS·©”í³æD×k¬1²i‚”±}ST0£ÏDæ‚ü’ž¿:º=OÓí0†¾ÕÍ»Fo°:ÞI ú`½Ê‰ËS¿ÓqBÎbÙ±Ö™ yƒ‹’ABN,ó³ùNrõÁyÓŽZr0Ñy>㇓ԳJåKt¸êF÷Eb–¹`‚qZZNä_LvšfÛ2E ½oØõC™¯ÙÙÕ?§B$ å<؃üLÙ¢n»^ìp‘WZÕÚþ /VyÒ*úÖ1ŠÑÁ“IQ‘‹jò>‹˜ZGÊ¥—³8°Ä˜¨DtÆ9m†Á©@gýÆ`t+Ž`0fÁ§•=4•šRË“ù¬zŒ#ʳ¨œžÏŽ£QëÜN—]LÒ$¾?\ÃÞiK¡?ùûµ©â“ÞÔÍQiú¥nîHä‹7›¬#Ü63ôctMˆQ_Úùíp¾lÀ@3µ”u踎-™«%9ˆ¢jr_» )¥n=aDVHœ žÒÑ9yŸ•¶š°r?“ëå7eÞúª?¬AßdÀ„ùJ2p›·®ÂL»™eþ‚NCj[ƒûd´²›ø½ÿÍ£Þ×pï›ù_ôk?M­Îqö`ÞU ~É­x©àYþn©>=‹^Þ%F"ì@!}ãƒy¢´ºÿû¸Zh* TuÓBìÓ§¼ MñjMê÷þ]à M¬žÎŒ·¨ØÕò>Mì(Û~œðvU#*š»²¿îg”â+*1f¥Á×ÇŠ¨žl'\Š!-ˆ·ïH†Ï„wæÇ]¤èDzdŸî0¼&ú¬|éÞ¹ž³© b·ûúônœÏÉáM£2æm´oø¾‡·D¥5iO© °C·Ó%ߌËjÂB-¦…°D6XË5‡0ð"rXœ6–ã§n.Éšrà—<~/é%PTdÁ®†óÑà¬/™àŠKÙ <{ùñ×€]wðštP¯ˆ˜šÑ;tO\‡ý'é¸[LJ8BC ·ÂYŽ~8øç·x„˜„ˆÍ<<¢q¼¾•È^ f“»ƒý Ãóé’:è³kŸy´º°­½vrrI ‚ðÂÝ\ÈË…IÛg ÜÈ:ú‚½+r'ê³r¥˜»_œ•¹zÝÜ<›o*ÂÔ#HžsÚ²TõÑ»7Ø5iÛ}K’2Ë|§îKˆs»Tfü}Ò ÈVìÉa¶w7™Ú­W’`<:;:pÌzžð^ÊpìY‹lý‰*#í’Í íSó!ú:Ù%œ×¹|o­q±«¤˜/ªú¨Q¢ÜV­æ%R o‰ÛÓì'ËIwÖõˆT±Ác‹ÝgW7˜aÞÖæ*ïl÷V¤·¸ #mŸT°’…¥Âcœ™cKצÏ^•ù^«Oz¤ŽÐXÂA¦ÉcÀáŒÕqDÞÛ¡ø³Ð½`2 ˜Uar´ ¡bÝþf&]^îkdÑèº!°hA†Ýž•=‘JîV4lˆa\v¥Ó¾¨½~ÑÏ›Ǽ©­NØã=ñÉ‹­ e¼È2nÏ&Hž ¬/ nÎÆûáÀ»rnLÖRŽUŸ“²V1ç§1e*ÿù¥Æœý-âqu]¹cÞISäiem`Dmü5ýÛÓ+t€Ñcì‰×ùÇZÿæîºæ5…úêøzâC%]ÀVe˜÷r´4:Ó‹}.u¾¤SÓ9Áå©”/a>÷!‹šG´¶Û ÒsÀÁi† q¼yäýËBëg‹·-üíg®’ñZ”ö%_k—¦_"AæãÒÄßUç÷„!jå KF{ãnS“Z%ܶߠJñ:ØE¶ò_à<=¡°`ìz©@ªƒói%|ë5Å9SªSFX³Î´ñQ_<Ø«¨VWM«öF"¹êöÉ‹—¸t4{á'^íaÒ7+c‡bf£^|jLã,õÁû%paZž$vðü[Ÿñ6Žoìz¢JžlÞ‹|.;XÞ6íÄvú6×Þ¹ÏÇÕe¡—XJ²Z,¯}œDLcüàÇZÝC‹«Ö¶Óâ š¸‘•T{˜Æßdýð*ŽfÓÔ¥‰yr¯Œ¢]†CHM 2ÈHë>m Y17tÔÜÇ ÷ûà;'š~²ŽñŸL8­ÐÞ{[A¡@¢CïÝ";«§]‚j(­CpwrU-›kxÂrPÖȇ@ò¾P³WqÂÄçMb‡)MÙÛ”oÝúCÓ]¾ˆ­w­Ö"ß«ß[_(¿{'iµz<7MÖ ee&—ìt@1áÖŽwÖQ²aÞ`ÞfŒ°øôêÅ?t2tU!µû—FVØÇKéÆõÅà,«¥夰{ ú’^²þ.½ ¾]?¿auLØ—È™.ÈÆ!'3 À¯ßF‡g%të[ˆª/0êl{ü[žÄí^àâŽåå½Ï™ìIO:É¡$¢áFe`ËBpù‹RF§¢~ôþÿ˜ÑºOÒ5Ü*ŽN¤R£}Ó)Kzk’ìzÞi—U#n}»\†¶$ #µÚ Ùº£Gôr¾¡÷ -=vÑ>3ƒ=Y\2PPNýüeÌÒDä[qb${}hìNÎùg٘ɡp+îU8˜_# h8ø³ú8 Æ€V=Pø{6]vº ¡¶þÑž “,cÂcˆ°}Ó•O Úba >kUÏ3$뉱G&'¢ˆ-™ßH¬xM€|•›–'ñLRÇE¾·<ÍÖZ[Àn~a½ ‹í!ëÍêcx¡ÈÏ\§ê½WS¼ÿ˜PÉ`ù%q6ÞExëcÌípwL©¦ [N!liÀó<¥ÙlßÝd°‹êöEf­bÌKž»å{„Ôo-Ôtü硚S¨¨#4áiÕ!ä$xOÞ,p~©ö‡ÖbÈ4·H»?2Dåù ˜{Œ¾ïX-üì] –ËŽ¡©•ð\©‚¦°³8NM+R^Šk+¿‘ !†+¾³¬=ÂÒx‡`ïiÜú2 :[ÀJe‚m¿Å,\°šõ5ñ.Úú”$‹MØà&y‰ùN‚pȯʗÑàNÇ?+î³™tw„- ºt™í¬äôk›ïÏt·gï |ພnž@û³Ha’Ü:™›»T£ 2I]7¬|'Áº¾¶G5k¤sxª:lZåË(}ë*±sú 3àWh‹¿R2¢¾®‰+Â7Sv©‰A,»§Õ 3,a‡¨i?Ü]®tû²ã®Ã% Æ  PST½¾ÅdÆ#јù=Œ°½5Iç};ýÞ*ìÝœ~d‚‰(eoŒþq¬¤UýÛ~¢F+³)*&yÌóg%c”ÆÙv}oam´<âŽýÕ³Ù@p¶ׯ\dGeXlñ¯ë†KŽ$ßDóAóòIg¤¶øœÿý¯­j‘¾ ¤R펨ð{5`‡¹ÂݺÁ+¬™Ù“£UÃw'ëðs£*ÈBCtmË&2~ñyò*÷Çë¶Nª¡æJGª“¡¤‰ecýfÞOC¸§'»¹ê΢ÆëáJ¿®™i¨çÐ]24¨Ø90š#rSS¦07jçœÝ¿®4u¶øS¤]à&ºÁ½Ò ÇK6ØÀ{ôÅ׬ QXópVìîOãœôºfj‡ÆJ‘pÖÎö¥l³¶é:„oåÕ³±ÉaÉiob pd$s³ñòtÍÊ.·Xµ°ö†«{púá‚_Œª+ìöVý¿ž‡Ü+K ð1Õ°&¿jÈÔq ¬úå8ÞÐõÊc˜,O/T¶Å-á4DüŠ0?øði_ô,9ÊŠuÂãÕý<ç(šŠÍ*Gbä±ÕCòBÖÄÇ=QÄ!;CÄšz"v“>Ç 8iÿ¼)êÿ_ãé9Ö:ðCÁ6F\\h7ÖJ(Àé8ö¯ã³˜ÃnZªÿ– /zåÍ..ȯ¸ýܤ¥·¶¾¼RdKu[8* 3…Ÿ†‚9KÚ –ÄãÖð u”<¯€8À¼‡$·=#…ªMtätƒxÂa£™Ë×’þ8UóÜ3vbµýq}}ÚÈ̪‰YKýziÃÞ3—åéãW' h Wm“˜ÇËÎŽêÓG>äìq¿Š[ ‚]¹ë¿q”, z&TVGHÆÖe·ÐC90²pÆ>î»B°¼~Yí"Ñ<ýõ™ÝC7o(Û]á (x^¢õ伜ªDìèý†ÊmGòŒ η[šèEV€…¹vD)€ª‹‡÷°â—¬üGDtž ׊dÿÐÓK'¦ÿžç¢ÄkHòid_üœQ{ !'P¸—73íDÉ*ÞEü>: †õ;§GÆÙÿ‹Ô±–~ èHǘªw†(.®'Ž`HÍj¾Ourñp+Â~©Q ¢Ôº©OYWòÞ Õa²; ã¾ÅºÿW³€D³œáVŠ1邼Å5 ñ"8Ž ¶”mówü°HÕ£ 'œö´´\É·D½˜ß·Ýˆ…ôÝ“Àþ¢føhŒ=Sò* ç^4 60t—àΑ¶Ññ`~Û ùÆŽÐÀª †·_è.ˆê ?ewvÇG~0Ûü»­™ª­t”TÍÄ ½9ÔŒTçâg8ÚPëDòʺŒ#p"Àÿ¿Ìòù>†»5™YPË¥ì•üJv"rÕO´>ÄXºîò˜R˜C}ŠW­™\Q滽×ÝÀÉïÇ“¹`c™SÀp–á}xâöô|«µ2\ÙíýIè’ÿk#/<â³&4Þ¥cV}ùÉók ^“¼†¹a¾GëSz~½˜î—ú#×hôޤbéÈ­çëy³Ì\ t´vCVÍĺ—„ ×l”*3òÔ};¥z¹ÆŕЕ8x;ÿWGúÇ^€e ØB †)Ì”D#<„ã9‚ßv$ ½„·4Q.Ô)ÄÆ­>¦,,ÕÂ.¤%Eлdž˄dÜeÉÎî>1Sü«0PÊu¨.”ƒì[>fc¹—0HŠþâµñëà‹ºÉ äúº­N,[–8‹ÄþfODZ’Î}U ÄE‰—d(˜J}úËÓþ(¨<´.°ì³ÉÄ5é»öX$“·níMý¨@šº³[²à6¥™á“¿»IS«!íýÊX»·wZyË—Öû’0|•ßô{ÅzG‚Z¨Á‰%N@L)³þyGÞ¾ñž*f¶Ì£äÝÓ÷øGÓSVC†?Xw¨V÷¨¯ƒ¹úï—\ªó?þ…š@­d¨ÈiÅ ijŽ>š2Þ¹þ+˜ ¦»Šl nÑuÀ_Ó‘°‡¸¼\õŸd·ÚÞXuaW?„µüö°«?|€ æbÔz¬Ô­wóÄáO¢Y… „ôÊÑ7Áý\ï dÇá0`˜qd6عÇúˆpwn£Âvú$ŒÒ’:+¤;©±é¶ÒŽš·Pû1”€HËaï¡õœ„›ØÛ À5mÛ4¬äó½µ>®f|B åwŸî N2ý=€ÞÎù×oÚ£;©Îܲ*; ¸¿Qs‡¢ù*iÊÓÕ£ô’€°+Ð.þx`˜%67Öyê¸VÛûJÞ±éÐ|ÔÖÈX’~E>¦¬š¦<ÚÒÐð¨Œâ\ œ½lé\1”ID¡ e ¡¾ˆzЬ¡îÊæ¢Ú®ß’îPŸ0óÄ­äÓ0RqÙ˜ *È=¨Žyþlƒ>†CÏÏ”äî’ÏpÿâSŒHS6M6‚q9ûðÑÁ 38hVråµÝCóÀà6²§‘’쯂¿4ûwÑe+Õž,V³ÝB;íxuq–m^ ¬¿ë4+ùaq7òS£‡z‚7÷ëõ¯2b0¸ í‘>¶æïR”Íé°‹TsÝQ£"^ć­0ö³—EL?9¢\ùzFMqHv#•×þJƒ œYcXÐÌyÜÅÂ×9«‡èâj*‰: ìá:eÔê` ÜL7NŒ)zqQßôÌ0öÖƒê©÷íHN·˜A(¬^”V›¯6µ‰pé Æéèk6L@{¦õ3Ó®–ïŽÊdjŒ<ȃ„ÇàäMl.}¢mgžÔØg=„–ÄHt>0t`¤ ì”(|'¼hƯªÿ‡¯‚Ø%ŽöÜ!TDà /¼hÇp,5¶3LzR#ùS”SÏÄ[|_IÍ}ïP‰=4§­v%L{Þn¶FRòsj˜ïË˶"7Ü„RÐóů‰ÖGTÙð ¸´ñbRÆr?3¯pÀÔa ÍÞSî"Þûšƒ?ý ÷›ë]h´[ßsj'eKÂí C/W'uíšËÙ©ñp¾E+uA«£€,¬4Àà'¼Ÿyb/ë:g­?¾ì7œïNyfšßÜkŸ|Œ02j.R_-Xˆkõd½Øˆó”Õ˜ÁÏ*’{—81;j;´RA‡¼ób2€§ãÁ*(U¡Æ\ZÁÁ~"_›˜E´B“‰¢ÖNœïûðãy*!G—x€ÏŠŸÏâÂÕGñ·¤ý®LŒtá5–½þY›EÎcüoü îðÁñ/.pä˹oÑI';,PUã&!ÀÂîeóA(%áZ¶ãÇVÒ.l í°}Ü¿‰ÔAÅ™ûÃ`exWÕ6K[™Tc†yJkc c$ 4hWÒ˜Á8>Ý<Ì bCNXÄ“îì›éŒŽVφő°µ¥L -[™Ý²QöáÊ.l´ý”ô€Ð[Ælë SÜ7ØEàÈ"vüæ]ý:ãa×]Tg®n#˜82y„á$ÃâØHðL³- Ecÿö¹žÇ›Ážfù=¼Žœ¥èg“ú7ˆ™6ø#ÞØa”õ<³å'”7i_J_fÖŸäL}®¿­ 9‹k´B‰D?l*µdí¬ä=ÊŸY«?3I^—=ì””HŸ”GQ6Ñ.üU³‹Ë¤IqÕ‚·ÙÜš¬l§ôœÈ)B¡â¢¬¿k]S¼ÑŸƒ—ÅÏMåLJGƒ.iQà¶N–ŸšCqâÈ å¾j™ÉKqׇ†:š´„Æp N–œ‘y9›šr˜•Ópeê 6C³yeçŸÀeìÞ§žD6íçbK¦Ô^ ä hI jÎa•‹\èžNb«Ã“†çj(KX¼ßžªþïÊ.’C á$*=Ît& zFVp´ìš.ƒ‚JÒ‰Ò¶v~²5TP¯ôf‘y9Ûµ8_Ç3ľøÉ/ð „eoS@° ?RûÄ(QF’«P;HRÇ–]±✸ ie›*Ûñ°ù“ÞQqÌGPùU#VÛ-‘+•û‡Þ9ú×ôNι ŽzÈ¥JR°0æ†!¸è„‰XU_Rë ø+} ¹‚÷øe›6Úz £±Ù…ÿJKKëGmlúdÚÔzÓE>JšPåF}ðò¿MQÃO1k+ΤKíUÄÞXÛÒßÜüäø`MN?[báåjŽÏ4üL¬R¡%u C.XdúuíڀO™q¿Û¥* Wˆ¦¦Lzœƒ¸ ~{ pM#ÏÓŠ9±M/æÐØ‘ æf›œ…–La½“7B™`üåi^·L>œé$1PÞ=vgX£“ÿœBÌ3\ÒE j?3 # 1ŽÎ€wz_¥Ë_€óækJúxåÿPãæ_xÂÙós߀{<à Àúy¡(Àð fÜ™iô˜…œ3áþ-ô80€:×…1ŠÖĶÃÍ¥˜ƒK6§[p»»*àE»C«ÊÃçÕÚrdH—àX« Xy¼ä‡hVŒ1±áO9^ú07WÉ·CkÞˆ-®èÑ–& ·Rˆ&έ&"sl!—° }l9é eË…-3Ù7{ N¯½*‡]­} ù?À‚ðï™^M¤^ÐLöR’Ó=3P]ˆ‰( É­vM]שXªR¾Ž!l<`OOÈÍÄ ½ù½‡aê.¢D  ÊôpÑÇp%Gd‡ë )P*Ó%Q&é ³¸"å{†ÊßK$UüçÎ . ò‰lÅíSZ¡”Ò=ÞµÛþ¢ °Ús7AÀÕæTŠæ¡cP„Ðö’DQ5û ‹ÏÖvÊÙTIæw³×Úr>Õ,k?ÉsWâ¥7,ÇoÆ +†ƒèš;N$LÒØ(ž`kÍï™ßçp¿©•­ô&WlÓ-ðí,ù¥yÆIa‹âÙ¹õÑ>)©ïìw}øcí‘ðn »•K£Tk¤ˆhbÀ@Ú•õjÐÞÈC>ç Æ–7à»çaëF£/¼‰u«Â#f¼3­4­X™ƒE›œ§ý2á"2_L30~’ü¿öÁ÷n0[T íö9‹èHJ“¬‰T±ÔþÁÍ9—-„a`¡•H!¤ ý#_Éô%ÀH®Á+9æ6*!Àþ¥Ú‰úo''EÖŠC<£ø…P·óÞ„ ‡Ê9¾¥Ü>“mdÎQàq]C(¤¹ “ú!ü –ùÕÀ×}†w ëc"qÍ9 HsóÕÌz›&j±sX[3ir#ú"ñNòT”¾vJµ¢WQ|G¯»µ›a¢šŸ±}ó2©•êI¼mÁ’U)Jò 2a8¦H°_¢‡œfAÕ2J^oñù«²Å&êh<íÆxà‚ÃiB¥*<â'ŽçÓH²“ÁÕï²ñ=¯ó,]R±_–!/âQ¨B‡ÔAÑ3Ë/d¢0·kQù‡³å%/ €ëÀ/ŸôÖ×WÐ- wHåÄv1’3¾¹¦H»³³äÉH06Â5~„+}›9§°‘Ë)ØÓÆÂ£gUüeèRK:: îv‹¥¶½D.¹$éß8¨Ð¼ýI“MJ>KÍuöàÅŽÇw%½eIÍÌ‘àrþ‡Ø™¿—(ck´ï›/¶ áh3ì3©èó“¡ÎÊÉÄîhæZ_Û–XPÇd=í-;”3ÚbØ\”=îÐ#K»†Ó<Ömœ*ÿ¼Òv#ê^ùr”ZµË9qšé8ô•ߟ¥ÌL³sþ9Ç..;áîà7+cÍ€àB_Ț룄儷6ÓéöÉ"“Õ|JòÆ"Ò°hßµE¥³ÐRg‘{hú)à"„q&:aá¶Ç"B¸ZÅTÇ©Ký: ŠEfa\ïÀ~Ò‡ŒQÍÍV2Óÿÿ›_ð°¡Þ‰¤2±X†¥~·I’7ºã¾Ÿ|NÈ–Ñ…oÕÚ½öáu+ÆÉâüIÇüî" ïÂO< †p%€„@‹8­¦ÓRÀ{µnK—_Ù%®æúêïY¼vÏ9 ¦¥Èìãw/o™LœóÑžN:K3–›ð¼¿ÙÙdÍ} íIz´ú=÷%òúvÉê0=¡d+Öl¿+“+.6E¥¢w8YD;uŒÂÜ,¡nõRWh`\ïÀpÉu{’AóXn¦ÝŸ6ïINÅ<Y\ý@M!#YMUx^ .#î>¤œŒ°‘ž¸Úá ‹Ií/þU£U‚NøÐ}oo5ëéej#§²­cNåfÈþŒð–XèÍŸ5À¸#ñ.dm¨ ɉã=^m ªuZ¾ endstream endobj 135 0 obj << /Length1 1886 /Length2 14308 /Length3 0 /Length 15496 /Filter /FlateDecode >> stream xÚµ¸eT\[ÖŠ»kV8!¸»»»;P¸»4¸»Cpw‡àÜ! ¸»?rûëîÛ÷½¿oÔ¨:5—νöZûœ* E:!S;c ¸­3=#7@VNÅÈÖ‰“Nhîbmä`¦gddE  q9ƒìlEœÜg €‚‰ó»ç»##@h t|WšŒ=r@g#U{ €Úè/ hçäLgläô®ÚšƒlŸÞ]Dìì=AæÎb°ÐÑý‰ôÇ[˜ mdbeçædÙš¤éåèòvnïB€ÚÎ` ´0²6Ø™Tš51e€„²‚š¢Ê'ú÷À*.öövŽÿÇEDEUM‚ *$¯*ªÓ$ÔTTÿ|ªmßù›ÓäUßõò¼þq—SRÕRcbø³Àèèú“öÜ(ß™þKíÝÕÌÑÎæ¯j gg{n777zs'gz;Gsz{ë¿ø©Z€œnvŽV€÷«#ÐøWa\lMßËélüW€?{™m€œÄíþ¥´y/å»Ó»Üù?ÄÞ áü'¦õ¿ÌN@àÿ¤±0rúËWVQQ`c²uÚÙš¼:9»8 ÿ’½¿¦Tÿ"ˆ¸8:þÉ!÷o•ãÒü›º°ÝûÊt­½|ŒÜþ¹cF¶.Nž«Íÿ.ÛÄÎÖ ääìô¯ˆ@€Èø‡½ÓŸ=Ùþ%“’—SQ¥“}o<[:9»÷êØÒ;»;ÿeý'ž¨,7€“‘ÀÄÅ `|oR1[S;›wÖNÊ' z¯“³£Ã?ÛÚÊÖÎÍÖëÿ%6Ùššý©»©‹=ƒš-ÈÁ(%úÆï"„ÿÊÌÎFÐt7±`ø“ì¯^ù#fú#~/‚—½=ÀÌÈÚ è2¾_¼œŒ\gG ×ßÿ‹˜8¦ ç÷6„¿¢KÙšÙ¸þ%~gòoÕÿ5õ_cúé}FMíl­=¦@3y;ç÷v þÿgÊþ‘KÜÅÚZÞÈHýŠþÓÌÈdíñwÃhÿ0¥–·s´1²þ‡ä$rš*‚œM,þUÖÉ¥œÞû^ÈÖÜø¾%‰ÔþŒ’õ{ϾŸ; ?Ç€ŽéOQÿG÷ÞŽ&V¶@'' û_*à{þÁ÷½òØ䥴…5å>ÿ³aþ²³5±3Ùš˜ÙØFŽŽFŒï]ÀÌÆðbzogS û_m` ·µs~wØ»8ûÌìþl%€Aîè/ÄÉ`Pü/b0(ÿq½[ý±³¾#çÿ@&F&ðoÀ`þ7È`ý ¾‡²úä0Xÿ2½“°ý|l÷ÈÊõŽlÿ›‰•À`tÙ™þÍã›ãßà{r§¿Áw¿gzèöüßê+þ9yþ+ÆÿnÇÿÉagG;+ Èôývô79#gG»ãûL0½Ëß_ÿþ¦÷? (þ;Îó¶s÷¢c}_Ëû2˜ØÞ‹ñ¾VŸÿñ5ù×éø×<¾÷Í¿ñŸ£ ºM–ìLx¾X¦4…”úŠL•ASpÑWàðkJÇA-§OuàÍýE ( hñÏ ,´“•äÖóM °-Ö¤ø‚mýºÑšXùãÚTIpÛÈWÎELh,G^-0CnÉ¿¬‹ôÓtN¾Ö7Ö™Œ¶¸6"€ÚØ¡WG÷Cóäúe2©nYÛZ´[ÑS3–£5†ûÚÇNü¥©Npç·¬˜H£>¡ešYÃüœ1iûÞn̽ } N8"Ùn4zý®´eM˜§Õ¬9ü®‘ƒ0S~‘¹´·ºÍ3¿¢T‘–qxºê&W¨åSÙËïÒÛµÔ¯þB1Ñm0G.nkSÜjÏÆ­ «å-n !c‹¡¹;¨ê‹a-ª_S=lÁMÈzkSžÄ¿1 x_%¼Ž>"¶š™Í)†H…t:Cz‚©0uá¡S6† rRõ–dÃÒ¹™ëýuÒ¼ÖÊ|X·$:áúhô"•V9±Š/xÔ;k)[µuÔêu|÷ÙX™)ÚåÚ¸nt2KFÃ+· mãJ­cê°?~ ±zM%K¸“åÑ”¯œðó£ _7t#dÖ)yƒI¯®(º‚Ýx?ð°¸ÊK4jP8Q`qõ%ôMŸx~H,Àd´ÇoÝçáÅÙ²g?¼<‡¥Ó¨K8Æy;ö¤¨ëùw¯@T&hˆø>i\á/l9†ë¡``˜ËbLR¤íMΞ! » ÒÝ 3§ùxÍ}š·ÜY Âò5â5BÁðÎ ˆ-ª¿y(,-&ij?gÚ½%vÿ¤öŒé6Õ}üqVØXÁ-³²‡ZZ«-²M~¶$p+3°{ˆ(&5á˜e|„;—ãû!01\°Òƒ>2³«‡D-öÉKVQËOsø3¤dŧ8Çu<\ìÞç€_m9`3V|Œ©`f¤3Î(5Î9ÏÁv?ýö/¢^윎#äXgÁMeÚh­8˜Ö&‡«•ñ¨T’…7 d[ºQŽ[ÛYxt“·‹{Ýá™dãÍUíz†çèÛxù|tª–ù6ò¤E‡¹Ã×ì[¥Î‡^ÉLÄÑ÷ÈCâP`t–GÃ;÷iÚEØÙþo§]s¶µ=ˆ” “?=4¿moNУ>Èü°Ô•~ÁŽ•³èœ$CÃþ¹Ðnî†iò(¯õáñ3„ø…hÆÍñn¥)ê¥ÄúÖ’YJ‡td æG˜ú[›Ô#‚ÃRëyö(©¡; 7ATüÕ ~/Æ‹ç³{¸5íL Lï)¾`n ™…¸8úc ‡LùÜR€ŒJˆ>dOφúíȯXÔkñ›¯C¼—ÁžžíYB—¼n°ÔðuÌ1ó)"&yRU06kN —r ,0¼.BèPò–tŸçx£}…+Ò@^2:eòjªB£L´B< bp™ª—à"ƒ>¶fÆp­†‰æ@6f8k¦ÕóøþpL[ŸÎW×½žºZzˆÖ¤Û“a™Ë>âµuLL88&D‘ÉÔm$²›4h|t‡Ø‡›-j|õÍ…²”èÄŽ©¥ù6HúíUÕá'"îyÖ–tÝ/ÑÚûTæ]°h‰ú2eR ÆAÝíØtî–õ'´×¶K3ƒµ2 ¾^ëO"!þdb2Nï›—"åo ²‘ÐOÞVÊ9‚:­¦þDŠÂt*Ê#?ü1îÇÑ„ŠŸ§!U¶9Fïh=QƒêÑ¿’n¬1 €?t¯á½¢Ë‰¥>ÐÒÏ9ÔK4Òfg‚}l%¹| üUO8Qì] U¼{Cg ¬Ù.Ÿ¥»1QwÍg¾ÔƒÅÛRïg¾ ߬o–Û\^*Ãż°c&¼¬/§u@àX<"×. i›‡ Ç\@ UÍHuÄ„%O3Ô#ÈŒ]À˜“ž˜­ åÏ|U3X­Çñ`’§C€DÙÃ3ÍY£–ůÚ|˜™©zÏb 6†4øå.Ï/zÉSÈm KjÃA_rý•;ŸÿæQØ’œFˆƒÎ¢q8‚@ÿcÍD†‚Ê¢¹ùd»ì ¡$()}ŪK0µ]"\â¼–ãÕ.ÒG\¨CÜ`€_ñ"í/¾ü  “tºô3ÇÊÈmÁ‚¢F&ÃàÂÿ’p=wBòW¤ó° ä_°Ñ¸!Eà®ênüžî}kŠ|³kÂ#hÞ¹m^5ØX©­É~‰ÐÌÛ£Á°Oà5kÎ’q¤<®N% =a"V»î\lzI¤µ€åÝépÁ„‹ìUD8ì¸"i˸rs0÷l\ÆÛ-jý=Ž:÷1^’(xjª.mO5}ã)T²¶º¦ü*µÕ&tîñ»”b¥$ý S×"$ÊN|ÃÎ2ëŸê•ú#/ï¸Æè‡*ÌÙî÷8ø >.) eýâÿ\D½U;{Ièo„'7Ìëö¥ÙIˆÚù=gs!3›0^v)çÞçi ÙwZ³ç ŽŽõ7e íÅ‚ÇMG=ö!. CYS˜­ÇÎúgWÉåçQÉÕ9Zô-ÀØôïæ÷Í`€:ð* N“Kɪ¶ã¬½^ߌ¿~X‚1¯ºE:asßXœW¬ K©(–‰òÅ¿SŠÊ–üÏ@K8sg*v.débfÛ\Ù¸Õçƒ+IÖ³ Ô\}#ËošŠ |H™ØU§ÉÐÀÕÓGé_ÚnâÞüýÈÓ_!Úðs]óôÍ^9Èe1´h¾Eê9Ïfð*ø‰ÈsÍAenäþº”0´ ¯ârÀO¾Ã$XH Œ¸Šó`8ͧÝi< næ?™—š°æ½‰¤ïyýâ[v, ÃÕá½wÄ÷œØ¦ÐÍ#qíÒ‡X\Çöl šÒ:a›nnúó¼¦1àÚ¢¸á yP)¢¸Àˆ-ž¡ŒC ÙN2À¼t0Üêõ{ûפç•`·Pg!eþ^4{©æp8Fÿj 8Z$¿½â‚\K­—¹#]ø-&7”×H >ÕᜅY¶ÇåâëËW¿ÑXëDê\{ *r£fÕûü*_O€0Až2²7q³ð×Ù'ì›·®"ü 5ñ§÷F‰Â%öæUóY-$‘\hû²£ÙÕ[l‡´Ÿ‡ìñràÚk˜òNÊ&£pÆ»=eã#?…æbôêp¥Š–µ=¦ $¶œ¦˜oÚ‹x~ì¯)ây«À÷Å¥GQ[ØÅ¬ú=ÍeV¾U} ÷\¤®× ɼ BÑÄŸaâïÄOo¹¬)zŒÒÁŰÅ'ÎÓZ{K–Òim”_,5u¥è•ÜÅ<Ž}B<ýëEÖtw’jC~$Ö› ¾¬wò4fÞqço(©Roá_4Ãôý8ùãdYv©í+^÷s`AX>Áþ)9»ÏuPkIȶjsgè š+üóbÐZEH×;>Ð}¸fžÿswƒä7#†ö&wû7^eÇùöy#ä³”°F•–éŒÛTAÐï¼ã«Ã‚å*R‚öüí€ñð—¢ü Užg¾:ÞÅ€xŸòyRój:bè:žÎàÙßcÈ,7ÔÙo(XRàqCƒyó´®©©8of”Ó2 q>?ñÈ4ÅÛ¯ŠÏEÇ‘¤A(^×]Í/,º?¥ÌEg§³”¢÷]³Uµ¨×§ŸúÂó"d’©öY öÍS¿ÍìÄÓƒ}?Mä~©qÊq9¿˜QÜ0ðè…aÚF”Ú¬v4`éU¦ ]j”ò N´ “1ŽCñŤxZžbÂáéPªmv%GÙIòêrrŠSÓŽÐÐW¥ß蛢×S4-^…Ó,ËÁ»š6°vÄþ‚Ðät¥‹‹vÓ®¼Ë’£Áå^½ŠÌtÞ¥¿ôŒô‡0­§Ö½–d6r/›{ñÓ6õsr®jŒ)+ËhŸÅ`;`6?l“èsœ“š×TÎ\TXÜkµŠlõîRôK°Y¸€z~5ר­ˆߥ¼Ï`%¦—³»Ã¡ÿUg>¦È® #d_ä £D®ÏpaÌ4-—o†™EÛsƳþ¤W>Õdéc¼ðí¤U›•ñ×®PE+ÛWè5'ڼě“²¸ÉD(ZJ¹˜Çtx£©Üƒ¯J¹Ô‡“Îo3ÌŽ7Ó{¬·#7Ýç­R¿MøÓåWâщÆÎI>F]ØÂðxµÎŠÃ„´-¡•bºeúTÔEc‡.÷}á¶[d«á˜Aó ˆMœˆÆr–ÑÀu­]îÈT‡@úÿxr>™®û0XÂ5b/ÖèÅh£îÆðäŠ]0•GëÍG›{#;kuEô#h1iÉ¿àZ‹ä<жá†'§Ò(ÍT˜ïì‰D°Ë£,6Þ¯VDr¶R‹éþ¨1Ú¨^¬úôâŒ9½¹ì0»b¬æ éÚ·‡C>?Ш\KÝü„ô]€ªbwDsìAáüù[†$MƒvhsìgêÝî@XœéfÔò¯*¾ì“£‰…îñfVÉ ½8âÖŒŽ2!F<úŸ?ûÜb£q_E$Íx]vñÐ4eøW*ˆ©;’ëFEƒ¦Mq¿‰Tù\ªš®ªTèêángww}þÉJ(*ànäÀ¦AÊ|$LûR>ú—¡fÜ:ʽ^š9CÞù™g.”çxØ©t7¹Ð/ؽ‘Ì¢wo+BêBÖ%ÖËÄelóƒ{L·ä€n‚ehÝ驺’†ÿ{¥¨RB[@N〠¥¹Z7Q²fËJŽäðjóeΟGóo¨ŒCŸŠh6‚ÃL×iTq4ç['ñªJ|ˆÒñE£ñ$šP¾ ·@1ãÜ}[¼§()SKYž^}¼ØZ¿2%Ô{ôê'³A¬Ï“¢N dpy‹¿§hW® |LSÜdHñqYTe‡Лç9q~ú&è^“ñRbµC¤ñ~¸!Ê€^‚LžöX‘%òÓõÚ9»ÉR«8 Úß7”£|A-JGNx@#ÙË/dÉÜý™/2%=@éqâÍcö´;ÙKMœìÄÚ¾6r½öĽ‡vwx=G{[² RûöŠ`Éâd]”ûí›"YgÆËÔˆz“úé®1(õîéñމ‡¸(¼gݺbDzÀì¡;ÿP­ŽcßHo7Ù¤ØÙ‡ô:¯&|iX¿ÊYξ\lÿ%yp¶Ó)Bi¦^I+ñê®}\ڹ藯N“öÈ-ù/>ØpÛüÖ¼t[Ra®jÆùãÊÎæy¾ó¡ºZùÏp¶ÓÆêŠÇtùûX¯¡2q„µñj’Ví ‚nו7‘ì×$©ª7„<ùÉ”,ÓYxc ),Ëòðä ´Ê~DZ¹®ò±T » _1ÄÞ‚ppF(p¦‰gITŽÁ[ƒjÕÿ_w4#>gHÀ½01 urvF÷‰ï‹W*¬;#ux—8èˆs‚‡I•œ¶µ)З‹}¾kÉZØÂr\£×”#V_ ´®»Ñ»hÍ~06ªŒH{ô3ÖX¦Ž,a½ùbIU]éÐÍr¦€ƒ6o¥÷¸…û,b f(ÅOçY|é:î^+P>!Þœ4½z#3’ÓûÜôšŒ’K >“ú-†ifãÊ«µ%ˆEAéˆÑXù¨°Ç˜î3Jȧ ¾Ï<°ÌzÏ+M¸›±Ï½˜ÞF܃ø¦ÊÄé,›ÒÍ’Žø.€¾ž˜H´Ôn<+7]é¤Gf «×°²Œ# 4Gðo“bÌTDz pÝpö ^å‘tdýøeÃÖœb÷J&Ý2Ðõ*“\Ÿí|„ò:6=N2®”¼èJ£Š£'@˜ðH ߦÍ4_þ%ì›»÷4B{:»w[äÉçÊ:DežU/¨4—Óæ!.÷Þ$9¤ÈkpHé‚Éþú6©äÏyZÈß[ÅDµ…ˆa$ÄÇæIŽ™QvPA·P§¬úÊ4/x÷ý¶Ä¥Ï cVÖ˜^%ü¬?È"ïGt §Zí`æVi‡bjÈ—ZFx°>¸«9pàGWuÑèB`ƒgŒ9†á@›×éW÷ÖÔ8i¹mŒ@Ä™^z!î>ÂBnCùkç„ÿJiûi"¯ŒGtڳ΅’U¸æ]‰´ó£ýûñcÉÇÞ’18ÔYö6·&õ›zužªÍmTš";§o܆ˆºLhª5#TÅZ}yÍÇ÷>4_ýx&HSqdÕc¢&¨µcùÀMž%–/Ž{î-Ž£„Ó²š›%2Î}CÅ$NÞRÜh„Ûdzˆÿ›Ã3%’dBò3çé=»£ˆ4çV rtÁ„àPË“(@3ÍØ®söùi®¶yŠè6¢±:#ÑîÝÐc¼˜æW—Zj“_:w¿§¶­6Ϧ¤”übÈFïgš2ÒßÁ.¬ÕŠ–\dµ(±!Ö‹·ûDQþE)Á,l^Ê toQ`1Â/ÃÇ{Æ÷Â`™=bu¨­§œä'V¢÷#ßkW+Õ\K.š@Pœd¡º ¶ÕF»(„v^âö«Ç™<úÚ²ßüöEi²ñÆ¡íÕ/hTiÿ°M˜·¤M?‚^¹aÚúŶïZùºé^â‘è%Ö•üBfñ^3˜:Âi>±ðÈKãuøßrbG­áÛ¬ë>™„Ì(<è#ÌÒD¯&…ÕƒjÔΦN–ï fgááÁr`I4 –y»OSWsV²-_ÝB¡í¼¦CÕ{.ûX:{óÌžaˆóZáè`¹šbx8 HXC°]MÐõxÓe@•§(!a"EÍFÃ{,HrŽ¿®…–3¢}© …Q/Ùð˜2Éã™ÖÇoßODbÈØé\¡!íQưP²E&9)Kn†L u?%aí¶ÇÔFàÑPåÚ^h$Eâ÷@« ¦ÏÛía(À<'_&|s ^‡{ôŠñY—D*ùbN,ô’ôúCx¼1ù)²Ôªs¥/ /Ð¥{Rýïá¨V»”c^H%4–Â%]¯-id*œ*yQ— úãFÓGaU^¥QiÜÁ‘N&øÙ5mzÀŽAkؤ¢„„€õÕaºÚvš9?”{â;!p­«Œ®¸e㘭š–Ã\Z¥¾êzXŒ[öt$.œ—\$ÈvëØ–TþUn'¶’ºv<½“Ïcáœq™˜ Ù·>ö¬rO³FµÌîio}nµçðžuf©27²lXº1H˜HN<+*¥/+-øf²L”ÇÊi9Ø@¿û¶¨ãXRþéSnÜôpk´C{º×FUT\¦ÿCÂì® ì—´zm ûp þËR!ó'c÷Î9QÇÞóASj,gMCF³¨Åå:§í·x Žâ&4PyÒ¾¥2‡Ù.= U¡7Åèµ³îMdšÝú·ªžÏÓÃó©2DØÎÒ AfÊ T‹öæ…ê5§Äd÷†ŽÂ5,äËÝv›Äjûök®PîzQOPµé+-6=Ÿ ÷زE½ÔË—ª‚&,Øó‹É H¨¹x²Äùó:ómëÁ…fØ"‘$ªïXç1c÷@½ÇAÙ[Q³àeű¢»6㟰¥i(%Jô?  ÷Q¦¿­Ø®.›b9£Ï29–îÑ QAÛµÒN“פbÖ¼íXg˃»©ëóš•|ÏÛ{E†Ì Mš»n°bîÄËkj~{|Š~'ĵ duBWM©fÊÓ[«Ñ„D,“à¶¢5cqì§;r–ð¥…è É;§ý£¸UTÀÁXù0[sYù) AËÄì™;Kæ³ÉÛyíÒ:JòdFæÀd$œœq¨”ëó¯22ŸÔwMݺpA•ÿî1—50œ¯¸ðÏòÞ9t<ãÅO«©`Ξ”× ØgÛ~7ø †ÇVÄ7°)âô¿iqŸÑ";§Ô˜·€•n³~b¸˜ìè.ž ä‚Ò‘qɦu“*¯¥ >1ÑÆƒzê‚ 3ª$u[“N./KfàmÁ(»i/L³ ²r+ça_Ï>µ P P+ð>~¨„fƤéìJRË´ŠÙœ«$ÆlìK?”ÒÒR‡V«DFÐ"üDÍo­ÁŠÍîÂü)!˜Ì€Ö˜Lð†¿ãö(iþ\©Xû.‹q¤ÙüV‰k .©?Yz?€sŒku¼¸øcÓ9Wȳ0Ç’˜#¯ÎiÅIJËyà M€ÖæûoÕUzñZ£<òù@‰ Û¥ebæ£JÇ‚fƒŠíì&ÆÈ }½¾SݹçàÉmC-ïÙuYOFÙonKé`¸!ü4¬èË A¹ƒÐË.UëºqÍL÷ÙàqÝdU“Ó9ÑqÑ„c88.÷¯Œݶ9¸H&wü¡ÑL¦Ð±yŸeÜÄ7Ò|6j&Î( íà|ð/ê´l¬A&ª¾Çœhd(±/F´¾™Ï=„I2ìxà.Rª\½ø2Ž|E>U¼"]±ÿN©vxPú‚«|×^µ-×.KÙdÑ(Ó]ÎÁû|˜¦Xå>$ËÖŠ- XPº¶¢S p¹¾Ï÷r á %c¦0ƒf3íg¹ÒÄùVäË»~ ”õ~.ޤ$mcŒ©Á‰~“®=SâCs¯/Úkn“—Öë^("Mé õ|‘äñ¤›«A@ôKùlÔB¾‘Û[œedˆ”*­%tVÝ çp§¯=_ÂÇQOW×µ3è[Jý©7(wþ‹F¿‰‰ì3dÏWª Gé¨\ß«ýÍŽn,”<{™ØÄ äÝm"ÿ&íbÝ·©‰‰ÔCÎ×Cc#º°ïÛF´å‘ÌöCTC|]—G™»X“'Ò—_-ÔÔ¬:¯\æZ– E±?ì(¯ÜaÊM9~öálÀÅî^,Z—^K¡’•:«6Ì0eÐÛ#·žÙøÕåLˆÃ–T2uˆäÞ+^|ú™ØåÉìÜ(dNÿ o~®g ¨õWÕé¥7[—áÀ¸/Ä~ Çè”ÂH½Å$D‰ÞH7–È Öƒð—}TZ^<³4ö£‹êm‡½‰…)ªx=fø2“^ø+0‹äKãÔøm¯§LÚ Ø]²©qÏx>†ßÓš˜ÄjÃ&8ÕŠÛ7zdgÊ¿›xqòIõOQ-÷º½vƒwÓ}Ãñ¾ÐFl³Ú­ˆCy ¤ÔgS ¥<Û’½YLº%WßÔ³2IU¿À:Eï ¥ì}Ëd‡rTóÌGèHœÔ)Õð˜&7”.ÊIj¤ ˆúŠ˜ØU^46wE_HßÞܵwšô][”Ä:!K ¡žŒUîc&®€"ž·‚"ÒÝ‹iÏj®iåóºþIúÑÈÁòÎÅ7» ç>)zå(…üu0ö‘‰Ru]Ê n´O{Û›<ׂ\Àå =2 <(Aòý‘5¼‡?f‰Oy=ßÞ ¸ù\ŒóW·Qƒ×rмdœI­Ãú8ÐEA¥f¹z¶"è×E½\ö~J• ×n Ï®4HPlxö« ¶‡Í‰µCuK3njßwšüêy‡Ž&ÆS¹Ò„€2ÇŽáß>¸òѸl¸\ì4 ¨‹M‚s _æÆb#©Îpß›óŸ<§‘¬‡á®7¤Ãáe’>ËÔÈì ©NÚˆ7DÙ„|Ï„>² Õj[JßsξJüÚ'žÇ£2Iµ÷‚±É§ov3ÝeÜ0ÊôýÔÀ* §ÉZéÛX™1¤Ó–ï%-þÄõ!ÜÞ»–”‰úçåE×5Í '²ÁßçR)œŠ£+Î2 /ëb©Áv?“c²'šÕdÁ7•ƒ%թȉ¨ۅ½”eŒÐ*Bj3÷˨´¦[ÃLj¦¿‰:EVÆäšÀýp5ÓN˜õ%WTP‚¶[OŽ©`25XÙé¿BOñ7}Ÿù1prú"Þãä¡‚ º@àôì¬\Õ]fq !ˆ%fD6G妖±­tü†S;€»·Ë´Ï–‹ÔÜÉÖî·Ò‘áŽLþ­‹hã8%q¢wÅ;®îéGn®æ†Ü"ñœð¸¦ÂÂaœ‚ÁÒ|FŽNf\åü^Ï¡}z, Q²¹ž¤hšjaºÒ×=@%‡O1°?9lvÓØv=OÂU¶‚æRûÜw­iíeÌk…³B¦Èöˆûzæ†J±Ñj%¦Oûw(މ%‰7Œ¡þC‘¾ÑÐøizíåYþdÝ-# §œ_‰LŠÎôyàâ.NuÞM`e@^ºE„($y@(æaó7Xm÷'pgü$ÛË9v‡¼ÕK*':n?Š>“– ÕÿÊÆs•Û„2 ÍpÏkýrzþx$~ÞÐßnYëòÕNÇË»ÄGm€œÉçh¥73„­Æ5«}”††m¤%ò$Œç±Vƒ³;J$ÓdCHá[ËjÚðuIVŽ¢lahËÙfÚ…•^\b¯„ Áv7'sýUÿü›¿øCtACÉEaÿ²\ƒÄa¼ã•´©«ÀÏÖT¢ûp±Åi†ö,„Àƒ/(ûÉ•Û9¤IšÊ÷8¿ï }‘ÉÔ°fÐBgèGˆzɯ‹¢ÃÎey€fЉ›ƒõˆqÈÃO–L1½Š¿W .’†ðˆ*tš|ßtäDmîG<Z ” xåØn#â9ÎÒKF›¶OÊ åµp,dòEnì¦`Ýx‹­9&a¸â…°á wnš§i=¿2yE1¹±³ß×ó ™9¸výþ]rÛ]ÔJ™iŒ©Å?owl£Ÿ) …ÑšjçGj{äÅtOp“…×JnjCåIGü3ì1…mD´G&.ë©ynýë‚°Ö4vÌÒþ­UÂ)a/r˜Áë<è„“Ó_‚tP¶—#aTÕN¡yöá@ìÜnÐà“«$A¢ÞÖ²@¾Á£³Ð+ÝÛ¾ð/ÒQITbR¸tNØäx& <.ªÔL­ï¤`{É*„;GfÌ0Zη,Ç[*4Iw¾òÆïôoJªÛZ\1täéìK!’!qg$ÔvÓ]Ïý#pöøB?7SW!žtNºt´]c¶¤Kê¨>~sü9ãQ½ü(ðl‰O™uQ'žÝ$‡?½Xþ¥oý‡^©sÌ—°*‰ÒsßerAyœ±é6D$ú‹o?"»™÷ÔÙ¸Xõ ðkñkqiVö׫߾OñÏ$äå3_ËX!x[…GŸÒW1­–±²l©ê'" ¥{ËÃih]ÅBš«õw¸>ß@±KБläf|åC˘pd¡I q —ªF6†Ë?‰ 7Ÿ?ÀDBÚXúiO&Î7åMù† *ÎWŠ|=V*H„¬U®¯$PY‘eÉ`&h÷¦€ ‘ö_#`¿i±°Þh™Uãƒ\`_aUæ£?#Ä$YÛnÏB|®ˆûÓ©üÌ­ù[q·¯‘÷îv2#u‹ÓR†d3z[<ó}#­ß¬;5ùJ(²Ñy·(¼~i:>]ñÑ…¦P7¬´Œ­ù%‚IT¢Ã•¡`‹Hq´ùNò$ÛèœØß2u…è³Fv€ßÂéô^d€rŸœÊ*ýÁ+ž?*ßI+£>‹ðà³×€¯À¼š}”™ÊÐ?×ZoÈ3ÖS«¦)¢? þîðÖt'MY±ã ón,UÀŠ…/CD¯sÓ Ø#Ù\Õ¬òg]Òs‰6ûÜ =ÀÝ â®Ö:Ú^ÀÄ<û¸ØWø|Õ×ïçCŠ¿C¯{R\]óõK¯ Þ(ˆœIm„P2÷ÕeUfþœ)ˆbJ›—?IÜH…ܳ^òiOލãB÷sÛÞ=%ä/ŒP×N!¬ùzêé[;¨1#åî‚ÊIüŠ™ ?hš¬2Ʊ.µ×®Î`3|h£¢$K—†›"õ”pÊ•4ØÇ5~?ÖǯíGbŒy#\†³¤×-ËRÁoF¶-çÅÛÌšæM¥Äº @4ÎwžÄiær|Ëd%ßµéȃC\ ÚˆJIEÈÞ±*ûéÔÿ¾D7jûí©š!|?ú³„M_ï‹ñ'ÏÁ–ˆ¹ª=q*Ù²×&áóâÏš U_Õ÷¦rŒÄqÖÂýíòx)o –}°ÁúÞúüìs·Îò,ýinj‰U¾‚ìŒYkÊθ]giıÃGµÁžõáùŠ{%Z£—É Û¨#ëÏ#¿—¶ãŠF}Wk YWâÂYKN¼ô jaîç>;]m«¡h¸|oÆDÆI vö3¾ÛÛ—¸°¿Áì¢ÓjÃâYKcr’ÀŒÃ¶[…‘o[˜'·kw[Ç2 †HH{˜?=Kîä×ÎÏv)aá —í¸J x;Äû8eÙÕ%Š˜!²ñ’ÆGwìüB,ºÜ>ä1UÝ@^¢²½“wltÞ xù,žÅÈ==Ù¤%kúÖºV6"8{2¿àrŠ5j8ËG ¬ÓusGÉÒÎGÝðIlE:Q ÷;«3Œa¯œ—ÍÙ"B¥†Ûºx gŠ*ö”B{Ýx¬B3zÞU‹ f©ƒ1¸“6ÃÛ¬‘K ]Ö¼ɦO&K2hŠÝ~Ì©ÿBc³Qj°2át³uàŸyÐu+Ò§Á¬ïUE ëQ’ÒÕv×O&;Ÿ ‚'´Kê>ÿzvŒ!H·l7ϪúzÚ­L¿â㤈¥ÐIY[hru¹&¾.ë.›ÑS6VXÕ6(Ü$ÊðEaqªÕ=+–&„µZ€×õÉ„ßP†¨RÂÚü -†} B}ÊDôŽ·0™?b²wQXuÁ < i®ó©´êͶš,fäù  ÙŽ?)/æJÄõ½mþ”È&öRWÖįùbnà¡è¿áj‘;u öJ¦w°œõ{Ùú@¦_ëç66­jXáz‚$yH\w~Òï,»¶¥Ç^(/D»XÊ—vO­Tè\¤â8´)Áò¥âôhíÝçÿœÂhkÄ<ÙfãŦlžR2"ŸëÈÃh,ÜEp!Õ¸†]ÕÓw¥|O؉YJN¡±^$ˆüDY° yUÿÔMÂ3Õ£ìQrÇáËb ›0de>ÑëºD}:üöÚµëÕ3‡SÅïÊrRAöƒ•åÔÆo%`´PŸŸU $Ä0þd³o`PÓ‹¿ÞUj7G5Ù¥¡O÷bµ õòn~õô‡ÁX›ëtÆó&•F—'F˜8º·mA:þ£×ø/¢î_#dçà; ·Ô܉èò½;É  ê‹ •?j¢3 ŠØ˜xÓi)ŒXôˆ¢_·ÜsD{"èz*E 3XÎk¹Öñë¥yæÓ")VY Úd>~Õp±3G2Mr²å— rêŸ\C0”ØÀõ¤®Mòãµ}/컞ô|ùËwÅž)jeåR‘PtÊ8ž' ÏSý½1«å È ¥Ïñ ć27ÀøŠÝñ"zˆT@%ˤII3Þâ|èÍ,–ÛaD]‹ïZ…é7,ùLÔæ' †ø6Þ< @e››anmÐy¸}‰ôIj—‘VSÖ&ª­è´÷”éƒoÚ[ ¹ç™†ÒDzȧòû¶‘™—apä\{|µýâλ¼ýÊ'ÔæbÉ(d«)Ͼ<yE]×YxiÕbÐGªôl0¸–¦#â–~iVLÇËÅ(œ=Ö"ç„› ÆtZº60È–™â#X1T‹’ÊG4æ1‹Btƒfº íÝí›àÖAŒì KUd=O©Y*GÒM&ÐßénÅGé7ºy: êÄ—W¿÷ß! ØiòÌEºE2ñrÑ$e3­¬á(ý¶vc=BQ/™&ÜŽ_R¶ Å"Q7éê9y–PróvJöJìØ­^™ûàgr5LQPiƧWjm4Äz‘iyæCŽÇN, øX­ájÔž0ãT~ÛÎûùJÀè>3dƒa%¨ð)d…†zXIût옭Lÿ5ZÃúßÿ†Y#Cßp°´¥VûúY; ½@tTØB]ûy+Ô5–TŽ¢U\U‰TàBÿV´¶1ûp!wÕo;<œžÜÛU›™,(¦©Ø5ª&Î6 žœD^•— †+©qÀ8n4HŒ±.Gû>=gX_®µ§à‰sPv!%%¨µ¯ Êx ¥Œ9 íAˆ€-WòžÜÌDHñG~ê´t»T¡ÇÉ­¹F#¸tIEZÖŸ¶~¼›« ²=ƒS]7³ p Å öÅ,4+[Žôú£ Ÿ—ᔦñKb\kä]ñ°ô–É 6ö_c†|›³gþ¨4MA endstream endobj 137 0 obj << /Length1 1759 /Length2 24673 /Length3 0 /Length 25722 /Filter /FlateDecode >> stream xÚ´»uP\Ý–> A‚„àn»www Á‡ÆÝÝÝàwww îî.A?òÞ™ßܹ5ÿ~ÕÕçôòg¯ý¬}ª»ªÉˆ”é@@1µ=#@FVYßÚž‰‘Ndi$o`ifë0Ó32²À‘‘ ÛõÌ@Ö"ú@.»ƒ)@ÞÐá#ÜÀÌÈÈ GZí>ŒFW€,ÐA_ÅÕÈ ÔÿGPÙ;ÐèÛ˜Ö&fÖ@ªa«™‰©Ãßßèèþfú-DÒ7´9Û[˜ô­Rô²ô9ó‡Ò @ ²Mõ- c€ P ª,ª¤ W’WUP¦¢ÿH¬ìhc²û/,ÂÊ*ªâ´A9QP ®ª¬ò÷ª´þÀoB Sù°ÿ­óáø7\VTEPESA”‰áïL' ½Ùß²ÿüà }„Û¬þ) 4up°áb`pvv¦7q´w Ù™ÐÛXþƒOÅÔÌà ²³|Ü퀖ÀãhmôÑNSà¿üÝ€Œ™!ÐÚø7H ô/£ÕG+?‚>ôÿØG#þæ´ü—;Àü_eLõíÿ‰•QPXé›Y;­õ­ ?ôízÿè>Þ@#Š„íìþÖýo“Ýÿ+óßÐ…@+Ó±t÷ÔwþÏÓ·v´wû·Þüïe‚¬íÍììÿ•06³þEoÿwÏ̬ÿÑÉ ÊIЉ*«ÐÉ|ÏšNôÑkz‡¼ÿæ‘áp0²˜8YŒ$µ6YY} ¶‡ûÛ>³>9€ì\þOn[Xƒœ­Ýÿo›±™µ‘ñß0r´aPµþ«“ù¯ˆÜÿèL€FÐt14eø[öÖüU3ýU´ÃÓÝd0Ö·´zš?npîöúN@€ƒ#ÐÓýß ÿ[‚cb™:|þchàþÉ.im pþKýä¿MÿEÊ–êcZ@Ö–®# 1ƒÈეÿÿÌÛÔs´´”Ó·Rþ_mýO_}+3K×ÿåýêÀ¿x)ÿ¦ø‹™½˜™ ÐHÁÌÁÐô_­ý—^ÒAÿc ­M,:&æ)UÿŽ–å‡?Î!³¿Ç؇‰…í?lô4´°ÚÛ8¾ýc~´â?ôÿ/\ƒ´¼š”ª8ÍÿÉ\E­ AFfÖ&fV6€¾¾+ã!˜YYîL7ºüý5Èá#`ãèà 0ÙÁýÝUvvƒì_Õ?燤ÿÿ$&Æo“Y fÿ#21¬ÿMd0€þMd0Øý›È`pøGüß+Uø;õÿ™ñ–þ_Çá?²²ƒÈ¨nfôñ(ø7Y};3mÆ2}è?^ÿýéûÿ*@ö?ôoÑBB w:–åÒ1\˜8>B™˜¾±xþ¯XÃLÿLÀÇý·ü÷X.@C¸¥ß Cîó䆠/Ѽ©R(2NúÓ2 > ©XÈ¥´©6\,‘œmb ¾o“O:y>HF‚ë»W¢¯u¡YºåÛzsBùä­‘¢À޾—¬îWQÁÑl5zU¿tÙEŸÒbª#©ìŸšE,3é-±-ÕÑcaζÎ?‘ÌïÈ×IÄ:¥-«¹PÎsLhv–(.‹H8í¸‹SíàïТ#ô{—¨gõ~aŒJAÛtw¢î‚Gð?‘ÕÎlcÛ4à^XÌ vr_Bƒ}ú‹ KVp”ZÁ/J"‚×á{–HIé’üʹý­–…Ð`'Í¡qr„=Í’$æ Ç\:#BD–TcZG9þ®ƒ (õ\ÒüÕ‘ZÇ[îºbÉTvijjŒ<¬z#VîbÃQäŽãêP˜ý)4øÆMˆÚÜoË¿ų̂û'goG<{k:z»O$ã‚Òª ‡Û.îä á{ K X)jÌáÛrG;°Kâ U«e )±SP) Ò—)˰+6cžÀê ŒúOº¹†‡!<©}9L „Úž-c¥–ÂB §ViBáŒl_4Ò‹@Š!È};\·¡)7îíO¼wGÂõm®Ú]0+øj/e”ù/OÑÒû6­=¡F£« ÝÊç¦â Rƒ…ùpþå‚’LÌ•§_m[8Ø”F÷™Çœ<‰qއ$ߦnÒÑùKkƒKVÕõ—Ô*IÊ4Dbý÷᩹Ûw7ƒž×vxï†EKÞ\åT“¾„Ïïº*¬…C}Ñv˜~²Æo±u}7§aÐñÁ»ïUœ%µfÐçpö21FNFõ†MDoÄ5¥6ìw? öÄË«AjÆiü|œ&A@úƒ÷Xý¯U¨#—Î Á¯åðÆ^ú—Wýò‹~k‡ëÛaŸK6ó‰„7_…Rs+!wz/¿:ë¹e¦¿a'‰jПC%¿)T¼‘öº²³$ãÅj6›ÔªÆðèÿ\%D‡e‹QYUKä—£«Áà÷(opÓ·²„Â\©UmG¼K4¦´5…sŠkyᙢ«ˆúYg©#ßÇ¢{®*Òœöà¹Îž!¶N¾\ÄXÒ^†_Êê‹§Ç«JöÔˆ4‰e¯ÀÊÊÆîKÃϱ_ÅÝý%ß+!§²šnéî”ÌË'S;óÛСàí¥†B{kõþÚðú‡ 0³Å‡Ñi+±Ù¿wqk‹Bµ=¦=5á[ó.VÔÖ6âÐ0‹VËUyõµR\%.Š8ÌŽ VX@ql,‚k¬b P^ÚÛ5ÀóÂí¶ÌÙUšVþ8ËúÕ„º=E3Ý[²8&mM=ÉU¦ªŠ&•h¿Ûl761+ÿdË_²è;Õü cbwÛ×â+áÅ|`{ú,æ"xvÇ•À ›ÜÁu¤{1Xµ°‰9®©»G;‘§Ø©¦ðÔš’Fd|8|ð  úž|Þ|1÷ËCBGtbÃXºpÕQ™ˆ„E²×›®ÄËd5òÕôîÁ¶#›ºY¬õU§M—A¾2¡”p‡„Îv° Øçï4^sïŸ4ž¡~Ö?(œá{ÞKÀ÷¦B`ë–¸¤+ýV ±bw^•N0ÖóÊ…¸²ã$½N'xygŠ£ÆuÑ”0â…Š™Hp¤XTw/€ º’iüEÎ5ÅoÄ·ð•;|óôœ³_T-á;HQ´Må+§fk<ýU ëä Ñ%ÇNŒxiÊ# ; ´1ÏÖýf\éà%hèš?7Ê EÌ)‘¶% “×@‘ˆ<† ¶Ìâç¯D£u* m…”Ŧj×z(tKó<«H(µ^}3å±àu\e"n K »ÿºÅü6éÄyæþ¦Yàè±Êï§ÚÚ2Tznˆ›L\TsÑ9óòËÖÆj jN—”kñò‰ý¢˜¥“áÀY1Ç ŒG½Avó©ÆêùkE€û1ì)Š9âAÖ2U²gB¿<èÕ8:¹ëGȲBê4-•@VÁO——ñûÂ\Õ[ÅRN ÕØ²*-€º+ ÛÑNìzÝùI@òÏRw1ÙàŽwž%ÏÁµ=ý$‡Ú£q¾æ.3C]K˜‰lY{›ç9oLOóÕr=73_ã5IPƒ fÖEúõ——öP£;ïA'hL’kÊ\n{È29ÎS.¹ð–²Ê¢šK„Ò9SðäôÛE±„ûªéj¦/ŽeˆuBOìH=Ã1 LTcmi<|IVüÜÂ,‘m6y°6¾´ÎFPpˆZ.J ÓØj^Eƒ©;xBÓ¦ihÇN¢£÷Ù«hI¹òZ°±°6¤¤4êÀuG° XŒWê®mKƒÛ$°T2‰Â`»î‘8¾|±iðøF^ZOKÛÜç.yë ÜïŽÌ)@¾ªw¬<§wÐºŠ›Ììà´=_2bhC‹u8ÔÚu=Gi=ùé*Ü<ºMƒ ñJÎì÷_'Qtô?ZvÛ^A ñvÉjë*/ªE¹"ûgUéD óQ¼øøº›qNš;;bxÙIÚ)yZÔ0œènèpÍ]«ƒˆ/®Ž¥KC€Ùß3ðÔçþ©‚wiGj³ºPLñ •yO7ø˜µÌ{> B¯WŸÔGzÖŸ \ÀZ°{DXgŒ½©¤û ãj߯®È,.›•Hóž<ò•§žöÝIÑ|Ôꉢ‡>m²‹¹%–P0AQ7ø…MB5õyxy ž;L?—–v²Iq«‡™Ðª¹èqéZ I™:–zDã°³ÆxV÷Øã¨ØêV“±ƒä+åõ’íÇãÃT ì°d!hN4çå: Vò£Ód¨;Ó!RÁ‚Nø§g‘0¿„“"¼##ÎÇ6bM;id… Zº$ w­9*/â]XKñŸ Ù»dÝÑI‚=´Á+æMxÔ"s$­ÚkagŠYY¾ºf®PœÒ®½y–}mJÀu«â&½ A‡™ÿSúºâñ¯uE0‚£à=±ÝoýÍÏžÚÉ×u5Ÿ^N—bŸâ˜ÔŸEuQ"‡ZStøù>u/‰×òžYI4i¿>¦Ê<_¾Ïô”¥ÏRˆl$ë Ý„3¯ì¬º0éb ¹5=òøÒ·zÎÖ˜áN9ö×Û•¹+EtîÚ‹ ß›:v-cƒЫËB“×¹gÔ×y”ÃH)ž]ÕÏ Ÿ°È­É¾ý^™3À©»}âÈõ¡ß²áõN†ÿ*¦Âïb‡uïôq^ ÞË/¯ ö)T|šÄ¯Ú{õ¤Íïž@÷Á:8égpвôçP¿ë.Åζ8,wä@Ó‹ÉÊë€`5”È÷Ïh%a“èêêší½ëνa‚6*²ýC¡åwP÷{õôU?' é—™HØ;Œ¨å­F«Ì àºòNå, ÃÏU¬F¼Qìéû z‰:cT2Î^GEãý1AItÑlSz%(¸YåœÇ®;Ù^à/,{¬{Ëš¯-˜Ùøìv{9^T¦N] <>GØ'Õ˜uª¡U•"H‰Z¦› –^ÉVjsôeàèÐë‰^e“Ùg‚D×”õŒ˜ Ò÷è;P¬ˆÈñ{Ítìù»6NŒdÙu¯Z€ñ0\nÌl¨¬œö)˜d±#7¶ U3/[öÑ9þjʶÏÏÞ¦ ”î£A X¸ µtt­Gªù lZ›*V³ „—Zrš2áÚ¯¾ŠMÚviyÄ¢-x »Ô)‰ ¯Û°XäR²Eõã#"›oe“µÈ4’…±ƒ\;+o¹®ZïO”½KFª¶õ³‚¦ýÁŒ1!p²¢Q±S»w©:"­ÆãŠSÍFо^ž´SS.̘µßs™à”{Ïøq”´¬mæ¢7æ¡VÊ“îýŽ|ÄÓ­XÁ0+=N¤í#Yj…UøKA/Å|’îhÀoÔj!¨_¿Ù Μ¢ë a=t”áàˆqÏÃiçT!Q'þ¼ŠMè:c!ueìš¿"[m·Nwíúð éÁêT‡q­°sÕ`èŠ*4ýô\*žî€þR+làÑl4çîƒ2±z°ÆLCÍžS¼P8£«WÁŸ/Hãéí¢ŒP<Ÿ$q kˆžêÞ-«¹aÂâIa¿¹Æzö²Ï}c·^“çmÞuš\–ºˆË›&(|%º*ݸ“Ћ̖N8y”›Ü˜å«*£ï3•†4-(Q[öŒfu~M¥“°ðûmîµÃAâ–7Kóø{«,ïE# …ðÜ:1Ÿ œÀùzøRI}FÅ»=i:çȺnŒUú›ŸŸÓ5¹<“êÜš~ÝN~èx}ê[3¸Œ1m†iPHL]lÿæ-sKaô¨PN¨Î afâX+æËüM‹ÞØ0$):§ôÆ4åÀH¨8ÞC§“½¤ŠÑæ ]Ó÷³ÏÃÖ­a‹¸e@òRZì]„ùøÍÀ!j£å"ÂĤ0ñ÷1·Ýó¥á0­&AÌÌö–XãO›ÌJÈŸú"ê£çyºer»Q´PÛ‘ #l/|„£«è ¨’ç¸Öâ¶áFF%–‘7Ï2‘ú5ƒãöIä£S+|ÄÍ¿2ðüÄ2Þ̘zL¾Ü¶¦¾ÛÙ‹²\–÷¯¡ÓÙm´eƒÓœò÷ÏþwˆFN G_¹ªÙcjC`^6£K®Ï9ÏšiÖfV”uò?uƆêæIPØ·@ш‡=ˤi¹÷07 ¢ôͱ9JÀÉæQleÁ’0 ±¦=8<½žìÛA.²Ì¡ŽâKÿäG‘î™-×q?Re­ z‚úyŽÏq}¬ñ½ólpø;»­Äû1‚ŸVÞDôõøq IÚc‚g%,üüÜA*²šF0î—P7Û6ìš°ª9xIZ¨qœN« ¢¾FWªDR˜y(Â_êQ_ç™K²šUP.(IGQÚXÆYzɰP'P 2wyÜ‹\œ¹q[â§¢zX¨(NJK¯‘Ÿ½‡4¹EÌo81†,¨3L[IÍR4°š¼Ævrˆøœ÷¨zºª Tš§M§˜¨6öëìL~>AçäˆÎ[®û’€¸ðLðl7=¥msãC/0¯5_±ÉÜ—Ÿ>½æ õÓ¯à]ôЋø„‰°ùwyô¡`M<}#ÿ%OõH”ƒŽª~m¾tÌH$‚\|J¼? ]dÉI˜¬YY—Þ«r“ZtŒX^”ªÉm‹d"¤­µvé‡{gº>‘€™‡A,âœZµ¯šÞtd,ó¤ÓV„$0¿ª:)¸ËïLµ&‘º6¯¨ð+³€ûáæPap‹[ì.3²—åÑ„ØíM¤Ý¨Â×Xa˜ˆê¾L-T.TÅ®nhߥ“TœX—gݨÐCƒ‡kv’ʼ½š{·jWçêÍÌ ¡çÍp»}rfd¡ÓmÒæ»ÞZ+%Còwkq£ú…]þíí’žçZ‰˜É;ôþ:´Þ´ž( ;‘Œ¬ Ëä2wx&ïs[Æ~˜Â­ÈM-æ•UY9ÎãW<Â&Žö0©ÀL!ÀÏš`iÍøÉ4nVÖ\®Ô65…µB)àºÙݺK'ÇÌé.ôûf'´t°_*†<(RÜ~ÂâigMµb]’µE“$g®ýÜï9íy W;S±VP‘¨[š.Ãp6»“mKh¸¥åw;W¦ÚYÏ"c±gkP¡óþe-ßéã›»yÝÓ†nôÈO‘ï;ø'Àظ½b´3M¯œ/Ü×RÙd*±I0Ù®’²51_r¬ëxw:ÈŸý_kzŠø¦~÷<(zëz|Üy6¿tý°Ì]tÃóWFá·`Uìê|zÙ¯ÒU¶á·öJ T³ÏŸMFÒ®‹-“Ü [ÚødçH¦Rä.³˜£…šÖÓ3 aE®ÇŠÑiÊêâ3ŠLˆÕéx€«mmCÜœV “€úÅMê=£v‰C/Äz ìM~¯aȪ²h嬀ke%08TGG€–vn>î¬ÔÐ]NΕä'»Žfäã¬Çi[B•#²””u 1y ¾Ó¨üŸ“ð;à䀱²ÞÁƒQŒUÄÛxQRü°½±J.:øq"—³ð£ ö¦º…0PàRý– 6¼,‚-{#…zŽ®_ÐB©e(Pß~9k8ãÛµˆ—DÕìò„4AÝ%¤ã™ŠFÚTT½½¶ZÓ†âƒ'5äÑ€ín}7\˜¼}CzªQ%>oÃë4+Î믚{ñsD]h!ìÜD2˜•Jç=ßaMú3/-‚䊳UrdG׿J†¬6!gW÷™]ŒÇ‘1òô#ó“UM“»„aë¤æŒÒRèOÉýѬ¹‡üE”Ñ©ác<[?fNl–'Ö!²®—¥ë±™N=$MTÁs‚P zÿ\ìûRÿiY”ê:Øga0ZÇ_ Ðïv§á(ÞŠ´KÒÒX<Ч†œ&¬´ŽHZ(ÄŽ­|áv S½rvßÕÔl'+Êú0ùÀ slSàyKKêïÃ’ÖâH2ô°•wÅéÎCà€X½{ǘ€*EÆ/äé$ŠÆÚ3©„‹c]Z?ˆß^䄹Ò}ÁK½‘^wdÔÜÌ%Í5H˜Qý^ªžfõûcA#¬&ß.¡%MUÞ9ð´Í Òî¾¶= Ó³£+"vê]™¨=òˆ=ØÕï™E®T*®ÒvN|öÍ‚ì“þó ¾K8âGZ•¨0¤/Âs¤ö^:ª.ßÛ!”Ÿ qæw‰Ïþîƒ{| x¾EÖaÜÖ¬þ6R¡Ö¨R £‡ù~~ç­ùà%iw!â|^¥%µ5ïGãMCIäËhÏ£Ý(¬´HÚN7TX>4…÷ô1lÙǵui²§1˜u#ÙÞ¢—!½Í·K*åd*»+R\¿UǾÄÒ§5ØÒ‚Œ”smD¬Àˆüü-t-A OÁÙÍÁ|[¼î¾²)ÃËú/·Ed+Ú{e»¤Ü÷ŒšâúlG4K²Çyý¡8x'“ð¥%•m¾Ç`x”º.KÑé/[PýB9R1¿eÚ—Úc÷×â$ o˜}'MdwIdXâÁ´l^6üd½ßÉØÛëžÐÊ’ø†ûiÊ”Cu«‡¨Ñ³Ê‹¥­j” N&|üQñ˜Ð÷•uƒ°=‰dZ©+´F;ZÝÞUŒ<ÅZt‡š§0Û–ÐÕh†‡c—Ý7«brÚîM‘ÐòÍŠÇt0ÂÍõç§V-H¤¯<ËN{^pz[gY¯Ò?˜Z 'ËÔå]M®D³±4£xZ¶ÖÀàIùþØiŒ}ž#¬ á²|ƒÔÖ;pÕ’ã&‘€£½:˜çªRk>Þ7³ÚÝÉÈÑŠŽM“@«}ƒPm vv±”8À‡“ þº¹ì â"Žd[mh“|É 9`3úŽÛ¥ZH{w7ä_'Sim_Îz®ÐÙjnÒŠö®RïîZf=‰ÂñØYŸ==X¤Þ¢™ŸCÀ}ý”JE7Ñψ´·q2—áæ–ˆYÏÞŸ2 ôDsزb­ï7ê$£œ ;ÄYº_Æ{“íåÈšW©”†«Á)@÷܆VNgÈðSðX$ÊjLò¾¥Ð =¾Š߇¥[í =Lµ¸ÒƒYþì.‚—y0ÛsÏjüŽ'8– úŠƒù9Ms½y0¿ë‘'éÚñ•À ÍûWH†D¾“Ï!Ý—z9pOK ·÷¯ñC}y;B?îi:ЄàД”ÛýÜV„§ÕsÛ_jI¸ã“ùUKá¸^Mÿd]Ö$Äðw”¿˜ÂÇ ·Yi&mLŸ±ÐñÉÍ.€è½ÆIH^aË¢­Ö¬9 ÏP:ý]©8~Üy¤Ñ½ÚÿNÔŠÆ$JNkƒÃOÛd«i”îá`ôwõ0¢Ï^^f‚°9`¸¿ï‘D_eQrˆïM–ýØy:v–Ít夗iy`Ç1äª,lÒ}1Sé¥üf¢ƒ°´Îç*Z[\h, že‹‚Š‚èþû¯Êß$¯$2c/QiŸ¥Êl Z×ëÐì7>ÝVWík£%X­^rÏñåTŠ àú$á V° %û„r?!s|¦ðt~Ùð’#I/¼¤ qÞ1ÅI(láñÚ¥BD ¯Ý…+}Ë?†á¢¹ÜoÁß›mæ™|•þŒÙ?æØYIð,¾{[¨‹ŠNbÐP¤X0åVi>£êfÍ8|éàÖ¡Ia¬_d¼ñÓY"Ödký§I¼o¿eHq³1ðGH)ñ÷ñÈRdê [vúÂq? §Hf«=(—†Ò,•£ÝÁ¶H0}ÂÏhqa0\L KöÀ”ýÉΊª ×ÑþŽé—Qœç—LòóþÃ.tb& ð„Ò_­Ôe*rÃé±Dƒçþ¬¼)2 ¸Ï¾È¤cý*ƒÁ=±1dõl>{­.{„þÍÁSà‚nOY ž&†±5,qû¨tQ/Qfœ{? q—Í0gì1늣ò!©Ï•ÒÝ!›îQ ΚÐ:žWŒ¹Òv&æ@ØcpOõ®%©µôŒê̪À÷/Ån rÈâG²•ÝwŠ…x#fRê#1m ùrª¿ ëAAb&‰²¿epNšÁ4½IÜlº q/ºµK`š~}…ÏËE[1ÿUØ75ï{‰ÒaÓý)Z„Åcù =ׯº© ƒ@5^¿ŽQÊ#üŽJà‰;åaOÙÛÑïy­JÍÅwU65†wòîÑ‹GXf›Å\ªútŽÁ–[“[š$8Ÿ¬¸øC!]_)[ß×=‰Ê¢Ãñk:’)˜/¾Nϰ!P‘Äæ_ ³Ú9q8Cü_bÓl ¢Bqybwõ̯Dœ>Ip±àhæ6ëþ –Ï+z”{L³¯ûÖ(ÈT?̺ðåhÝQÀí4n>žr D[Q7wfé©o‹$÷í÷C}vÌ©œ+ø·Rõˆ°K¬*+÷l]Ìå/õ(Ÿ:ik¥ËÕi%ïB@k rð6ùê¿õ‰àýÊ)HÐJá,eï»ßv¯ÕÕÄ?yOô¹qÙé¤×öx)»Ý8Ýü]$Nèº;X×Qì •nï\Æý¬;ÕÚz/(·&Æ‹.ÖàÉŠÚ-ÝÛ" æ<<";ÂÐ8xÒá[fÕìwµ=:Åv±Ö“v×1±VwmÕ¼•zç{·Š„›ÓQ°¬kÀ½]£fNx¯R2Ø+}z±dgyŸ)Œý2îlŽ•ù%QþæÖÅ1qwð¼Þ Ñ'á­¨ó¨Ö(/t’ÝÏ'¹}€Â=»b©ý'Ê9~ê{ÚeÎÊ<ÚÄJÐïN>Ê㇩‘¢2öq'L³OßL‰r‘[5ja¡ê-'ÖÙolMž'Ž¥Ý ž÷Á®–Ö¾ÂÌñ±‚„\Áðoî!Ä‹H+3Œ+üFƒ¤šÅw4H`˜²¯†î©fù1rM×>c)<7ùŸ\¶³w° 8hÁÓ+V7ú|­®¡V©‘f Ü÷®Ýìq:\B™ØË:´½’Râ✽_#ÿ#ù%£Ò2š$qÞó! m(¡üoª‰M/è }9zäÑ=,B7øy.wM(AjÃëG5Ѫuñé7Åw‹UÀžO¶N%x ý„8eTY´™Ù£ê¡›Žî„v(w-aÙ¹ Î8ñw Ó¤ºO Aƒ}ètÎ:Îw‰Ó!ʬ•Í ßlT‹õlRtýQp` ¾ {“ÿ’a²ÑUX]óصçh&Q®}YÛ 5e@ó¿¿5õãª?èN„¯[ZÄ{ELþlçp¨hÓf™cLªkòKm6Ãë“¶ƒ£Å'á»·`n0Ýo»Ì¯joWD•¦úÄLE°‰Û¼œ áµ–·3dÏ­sÂ('%Ð|…¼çš¶5ž,5>µ¬å>¢Ü"}ÝÃÏgs$j®ÕþÒ ˜YÁ^·ò”ÒAØjk¤<åç^‰F*@Ä¥Ówúrò(¥Ò ½ü·×AþŠŽžs+>ï¹Ü:·µ¨š½Ä`IÊø»'ÆÌ~К÷ßN·Wq¼\¾½ý^”UŒ,æÓx/Ñùϱ§ŠÅ€ÕðDiã«“þIÅÀ“¤–Ç=zÊ4m<‡7’f ¼õZ€¾¯"ZªêOßüõp\÷9ÂHýVã3[å5嶺#Øs؈ª–ÿÆÙÙÍùµå÷büFoªÒ‚lòC m§¼Ó3"ÕŒpAõi‚ïOíE»Ù)䯙¿!²÷)¥¿œ½u£ì‘5rºÄ—òÆg!›KÓï6R 7×òOž±/ó,éÌH:¡Ì? Câ5U|;šŽŸø#ßEëZ{t\’]h«!Ž·NËLödÍÉcÂ2r©é«‚J^'ìÕQcR4jãàlÞk!üx µÄ¾¥JÕÙÇWÈTTñv¢ø£$¿™#»È]Yü´”ò¬˜AôKãxÑ! IÇÑX|s²¡P² /sÈ÷ê¢6£Ž³¾ÎR*ó=äP¦¤¤™ªŠ-4`.ôjÄNˆB,¾,—ig_j뺊€†*i9X—t.'©nb#ˆ-±ªæšZêÛ¦ošŒê^¥Qò½Ãugü¥•z€è¶ýó#}ª~QœÔk°!ŽˆcB$·—ÑšO„ „:7]±ÐA¤ÒåTcÈBfæœâeýÌ;SI`}ÎU:ÎP÷CkY *OÇÔídÎ=y[…}¬ãÓ-’9\r6>L\hSNlVÚ.(€¢÷U ¨'Å¥IÏ6•#Äßl ÿÒNRpí¬ýÜ ÁÔjYK,°È¬G‚”ÂÈc,­Üwºá[&Ûá×ú±ŸF ïsÚ0"ÒÍ~%Iv¡n|ù…TákÍAÑäµÏ`§Ø®Ä)³ö³dt\Tt;'C±<ŠJ€G=ÉqP,üÑ:Ço0§fí ªö{b~¿[\fÍb+ à0:ü²dééþ.×L?ŽÍ> u Föú#4‚çÏ(éaßò«RÒ|(@a—)†f°Ý-Þ$F÷nãÊ=âT0˜)Bݘõ8Éþ2£„#œP‹BÎÙ¾å6ãÐÌÄŸËÍÅ"µR˜î»ä•‡)Çt·#Mó8«]­H¥ÁQ&±3¿!J®½T£8­›4Lñ‡[˜]·PRò—gm&‡ €Ñ64KèF—e* ˆQ/†Íòöe­23®—°† µnëÁ]\tÓ²³B<:7êµÓÏ7öH:ûìaôK¨ŸV ›Še[$‘ð)“Á²æ2´]á^:¿\nïšœ¡ŸØòKC&r@ËX-=·Bv¯°[ 1¼¯„@›?µ®íxâeVÆD¬4#ƒYO­‡Åß"U&ŽF{›Â-rÀá(om1Á ?Aæ{p²¦ J|Aë¬q'*Gë ûLkÞ[;mqN‰é)ÿür  {(Þæ(Û|öȨDÙ1ˆkd™¬AîË>(àõôñ2°ç&Rwƒdýbbo¸ðS¦Â¶Ÿ/µp <à$FeFG©4ì3ŠûVé7Í–Û‚.,,U7O£:¾J©Ñ2 :èÊ9ËU~íuù_c§e%œ!drA)†2VSè›wdòn»ØÎHŠŽN7c’ÒÁû® à—…ÒìMgå²½> OÎÉ•A삌›ƒÞ8& ¤ú&3g]Qä¸/éãé¥VÍS@~™Èª{æÚ°,ÈZîgç¡zY¥JåéÌ”¹›åµ^,°ŠŽslý0ÿ®©¥²›ÖÞÌ«Nió¸7ßÎKÀv@Ï”FvöÜðUĪ"^ª/<€{Ê¥‹¯à ðÛ üsï¸þ¥€êAHêÚM[¯,¶Õ³¬ÒCL¢í¸¼64[ R‡PUÅÅñ“ÿ”1wÀ·yM–û€Äôþ*j»ã@òçÈ‘À‰Ån×Ãeôœ°‘¼«ÉhŽ8nÇÏS–ØÞ9Iô÷ÜkÚŠØn‡HyÂŽuÎ=.Í¿” Ù»k:8ßO¼|cÄY3íž vª ÓIÅ t$BâÅú‡9]…À¹UfbÙiq!£—¥Æ„²gf:›[äÇÀ«)¯¢13µìH9Ò­T™çu{V¦¥ÿ x]šó°åÆM›®êWm~‰ý e¤ìÎì©ýÝ Ä}"ý ;ºaM4CˆB?ÌД3yB¯TÀkuÛn²‰k»Òàª:* ±ê„Ç@I³×âO9ý³ŽQ¾Âd`@X‡|‘$Wœrö›“QqñR'çgÃõµ ¿ø$³ê´§D‘±/QáhÚ#~‹»0½‰ü©yúõšð%”fÁù)Åß¾2ti$šj1œÎÃ… NZÅIQ)bÞ¨cYiñ„c/&©eÄ4qu°+é2ÄCљ˕cFLçí3.—KÙ ñµœeÝ{9EãûѦñ>qL¯ í8pV+2k^©FIä/¥ˆšulBinò¹ú¤òŸŽŸ]ëÿ¹ÝÛø¯}KÃKNœÜ³ÆeL® ;o‰Õ>—5q˜}Jº‰úÁ M«ÇK»“–NÁûž[Cxz,˜T(p"iðôb X“—E7Öáíð‰ù -P‘ ‹ÐYÐëŠ8D»âp‹Þ1É…UN!ìãÞÇê+ýáH¯qC Lp§LÀ¯°‡¼$•[qÚP#ÎÊ\u, íp-´¶¤*ÛC7³íýJlÁI€1nA0ó®öw­d)Œ}{¯×£q›¹7„ßià¹Oþ©L)†Ͱ_>ªç÷õÞÓMÛŒï =ß8ñ‹H 0͕˿q|`ÿRd I"‡¡°)y%îÿ˜,nãÚÑàˆÙDí¤¬“¦;Ha‹¦bIþIl4•›­ X.¬Wçn[‘§vÆZ €NDWØõý÷8Ø?óYí Sð—„Öº•Î-nö·^Þ›þÁγ¼½3§Ú«qÄ–¯¾3sãDrÜå5dl)xêŽR&ÄÇ\r£S/߯jL9 1>_{׎B¢v†v'ªiÔhÙÉiÊH}¿ Ô]ðãÝvá2š}†çb(öK³Ž¬Fˆ 5»ïà㿇…*h¯èàu€aªTY–>ö¿L±.Êð‰+‡ø¾~×õhq€7—Rtí¯ÕëÍr5wT`­®úäÏwúéÅ—I4¯ØšÊ-ä·>‘psLµñ*´ÅÚÖ>–Áo (äÛVÏ“oî«?ÏÖ3ŽCmœY%/ÖSd¸ün,TÞ]^e¶ÐQG†WvÌÛ*@‡~»eÔ⯻Xìb¯Yn¿–jä  *ºF‹ë¬+SQ†Ÿ¯ãJîùu¾*¤ñ¤Ýñbt”¶·+$ þ±·Ðæõk¦H4qÛà,×®$}mÔ-ÚSˆÒDK‰ƒNpÝréY‰².‚wu â…àÊÆP·0»¾É ÚÆYÒDfdàöæWòņ÷a½ëLãLÕŸN®Æ”Gú D} 1˜s6k¶·ºüò›½üœQš* {f‡Iz¯Oå­å;7fÀŠP‹{KðÒïYÌ!Bá¤âÍü‡?Ä ¦Ù©r+Ä;açùGÙ3oçÐPm¨õ'ÔWbó®†^Õy8;5ÙhšÊÀ!˜,ÑZ]`òÁ«’ü¹n§ ¾3N)î¼U]™{\ÂÝÁIÙ²sæÁ_Âþ\°.“„¾Óþ³CªÙY´SÓÄéÞ䀷r.šn_‚[û¹-£AE±ë«xØá)ëŸ;iS=˨o¯ð/í€Íåb Õ^ÐÞÝ¿šñ´'ØA°åpspZÞ~”˜h»uh¤†1ðÌ%IÍ jP+(áT} /ËÍÝr½ªüú«$HN•‹‚|Hý6ØÄÐ&>'µýÊm} ~Æí;W©‹”ŸKUú{ö…CÀ¸T \¢ºwMÕAqƒ·ˆn¿Ë÷õ–ZE ÆhS?v¬ßM·¥D»7-“H~e1ÿ–;Bº™Ž%¯ä³§P·:3¥|q—q½°•J{ã0PO!Ìýw4‚iÒSr÷:ë]ŸÄêk`:¹ú¡Îé¹\ÍQ›oVK´¥¦9¡ÍÔ• ðõ#OX¥þ %\’Ø>vÎqwЉÀýìJG·ì¥ÞÎPL®Ÿ¬Œ¤æÆqèã-Áó’… û©ç ‚œ‚,'FzT·¨ÛS•šœ’_¥lW­ã½Ä6•á²ì‚”@”š,ÿP#N®¢øˆþî³§Ï¢ë¯Ðtë?ô¤›·Þl-Ãâµi×p?hyâ+‹­\z¶ïiˆ¥w4ûñà öe °°%è†1ÉŠ;«ŸÏ{ã'qÈ?”,H(èSK”J¬&ͨü¡í¤ð§+UDµ?Tvƒ4ÌF=úöVßï͉jé|Y Ä>ü#ž8Ö<Cè‘ÝôôæÕ5ßÕ—×Q¾ëHÛß;Ý}Ò<îì›\·²,Ê™9maâSƒ><*RÓVe½P‘{þFŒ4n;LÜ‘úék‹ã.ùµÐ‰0öëk‡io›eKŠ•"[DfÈÚ·9¾öXôߌýò3š‚¡ShŒƒ›öP.ËÙãâý™ŸNkÕ0¥_˜¢õ«3º~TäÀ]'Ó¾ìYN ûååè´)y¼ÛwŸˆÎÇò MU)ùïTÓÛ]Ir£8‡“P™ Œ>ÚÒãžÚÙ%âgôvÒl0˜š_ÚÍ‹”»á‰zÊn¡! €÷Á6×1Óùù%(퉯`?‡Ÿ:X\ P{Z&%·8àÉ­µf ˜‘ ïZ±(’ñìššÊõo'“í,µ™¤m׎ó‹uµJ.Ϙf•jÌ8ûSÙqÉÌÍA^Ĝי&åa¨—›Ÿ£Ûq2ñk|¼#2â]¶e?_euü‘ÿºu°ÚëYG€´·ªû¦Ð;ŮΧ=³Rô”EЪªTÉ“Î.kGŽ|åVªú5~t„« ^oìä³¶[@²éNeÖ)ÓJÄU”¾Ê €z¢b–³ÂÛúG ×É'ºß3ÿÇŒlîx—\,iú}™rjï$žnúµ›˜`K_oÂqŒÆ—p’± coï§…‚‘Ç46%¾2ç8RðY7¥Q! ®AÖëey G‚•@FAñzr/nò Fˆ'vñ¢Iø:ýqš\==iB§‰ž5ȹ×ýrÌÔUÁã·|ÐÍ@3J³’rd’sÅÕVÙ;Z Ÿ¯-¶ä"2 ÌrÆb=ÖóÂðÁ~çqáýŒWÊY\BJàby˜¿†E¬+:³­Œ§û5ä̪øhf¨éTäûÇœ{/!L~ZŸœ#^®Vûµa?Z´ÎŠåxÕMõüË$[8AWÝj‚®9ưDg˜à××e‚¿]Úô 7ï˜ ?–¯ŠEN;sËámZß–X³›Ã'|DçÅ@Q„¬IIl n=ÂDïzr•’?TNÆñ¤Oœ¤_qçO@ŽÝÔ} FzK4¶Cº2ÏLý4Ž(fͽ¯sµGñbŒK0Ÿ÷Yåž‹QwomU 5_VÌ+âÀoœ9?ºœ©Ä¨µnë|—d=n=F?f‰Ý‘¬®ÛiáÖâ­n©“­¯;Ę÷õ朿Uí“âõ—ì@’F?ßk±4®q#‚‹ß& JÄÍMý¾P¡uç+©GjâÀeç ¿v×›hƒï BKšØ²ì]¸YꨕÄZ³êxÕ‹©³¥G•g»íû?zp°²½}U£ž»!6Sr¶ÙY•cŒS͆Q™Ãû?£û^]!B·M«6á¶Ý"ôî·Ý½Â¬Am$SØË]wÅÒDîSjqm×uß%B5«!$`îwwh/ì6Ê3ô쿬XΜ¤˜5¹LÓË–leÚq-¦øŸ›|XIÈ.5˜#•‰ämBbuþ<+å=e滣ϔճ¶ù1‘é™6NB¯ß…7râi€ÝïÎN/Ô³cId¸à›sÞòÂ?`#Y õf|šP‹;~Zœ–ìsBZ¿q64×ò’Ñ  ÇyìíîâöªYKDt]¾”?½¶7O¹m û9;RÌ(ž™Ñ²u(ŸW-ÏÕÙ«š]Ò}ë{ï½³ …wó`ÏMδÁd6‚ýë}\[3ÏgL `R¼eü—mXŠ…ñÚðKІ{TcAÒíýÍ;ìÛ¶˜‚E ž ÙÒ³Ìð„‚þ¼ôÄ1iñÏw<Æ‹ ó÷ÛëA\E7‚õÜ4>ð ."გü¯•¯¶âó¹í÷åù¹ñ gF‘Sh°‘}3ÔÙâ8´Àùàï;ÌȟS…ª…æs¨¦G¢’gí>a"l¹WEÑXß…;épS±ôÂú—Â:#Ðâ(©–éîÕ×Z»æåãÁª jôsãËq†NÌäè@£‡pÕÈÚÉÙ|zÉæÝr¾’Ó©vÑ`ý —üŠ)òÅ/ÜjåUøQa."ÌGKû†oz+é+Ïܷ߇ËuÙZµùžêR¼¦oX„°åVÝ"ü„n $0Ôæ­÷ ™l‘ˆñ}Ûª„8+”&P—Ž„i’§ŠÃ5tév‡\Mè‚çƒØQ¥q6áxŒ»z­ÇD`ΓÕ¯!ï”{¬¿ß‹ö_4Iý 93! —w¤dä­w£}%Q{iÕ&v›‘‹ßÖ -Ž×y¶Á k£-ôа§O(S÷aLE=‰yzúªe¢øüù‚•uF¤§"¸¢`taÈJ7t 5jˆOÁlû³„ù·“-ó$MÑ…ln Œ½ê+ÜæûÝDTwãüÓK¾Â~PÃfóEÁ^z1TOàvŒò‘{%s'tݨ;OmÒõm³ŒÂVr“tpMõãâéÅ• Œìî«Üû= ¹Gžù÷Ç”S’jE5:R]KM®Óß=û¬8ç~³k§a.ÀL4÷TÂÁ^1pÔOñ¶îJ0ud5wÃåH¶ŽcQѤÎÄÚIò!…žœ¯1Gi茀L1>:+¢ƒ·.`~¥Zvƒ_åì0;®@ÅëKGj“6EÐÍ,(x°$ú0->œ*¦\Ü® tG‚£q^µÞN \¹‡2ºj…ÊÜ)h|™Ñ¦2l‘EYÇã+XžÆTW­½œÉ_qDâ{ý@–íoÞ·ÄDð•H¾…f¾ÂÝ߯&T·09j 9ý!éDÊœþÖ­!cˆyîycÞ%e~6ŒÌ˜dbuõ„o±ç6È _8ê÷:ü•„¶`•¾Ð¿†¢DvlWmvæ< Y·;µÕã…Ò¿Á Þx#¡`dºp}±ÜpòEßèÇãã,_j¨Ä8ÿ5"èÈz@ì€'›Û½è"ÔU逨éWfvI‰»8ä\ƒÍY°©yP‹1LÀÇg:¦:Cx%Üñ:=Q.˜i¿´>—ù½~.šcRr>WA(øú ¥Ýê’u¦W.Ð òrŠ­í%µ7<¯‹aÆpßIöäiÛ€­dRòWè, ˆA'ã¤îLòÑRMûÖÙ°BxÌÓþ`kª¯Ëõ_Ô‚­ï§¸½^/ŠÍÐΨö™Éœ`íCÊœy4÷¯o'•ѽNMΰ„/¹Ý<̲«»‘[' ³ÚܯÊÇ’¢;ޏŸsÁ |òè+Ë2LJªƒ½úéÂ>tìõ0E<ô,Ùß%>ÍÉo93ƒÊ4TþM_A2ÔÝnëšQ%#5µ@Þ¡ÒyKÒÿ;›~¸… ¯ ë´˜=ó¹E¤è¾rµúM5s*¥æÑÀËÄkÅÔŸ[ÅîW;{¦Ì°Ñ{p2ÈXø[_aå|H¼ûéœüù£Ï[Y„W0«o›:èî©4Ú4}_¾æ.?ˆ)÷Î ©‚¸É.Àg€œ ¨à<8«2ØDCU»ãíªºÏ"k‡í³Û¸çg9¬§Íë 2·²ÔníÝ>ùðìc]è×L²GuOâ|'ù.«ø_NÊ+ÙT¼[™™mABÈBˆPö" Dn¾²£ z¥Sø ›K%nfÄ»Çês\!PÙBŸåøqY†4ч·ú‘Ë´V¼ÉðLhÇjxê°X¦Æ4ë„e‹ L2È‘÷’²Â?'Z^½ ·¼™½M-¸eiVNⓎÌH}ö‚×ÀÚ[©Nž3BÒ…§¢Û_âÇ Ò²Qg“¼ž‘ÉAóœ5%ß#ò÷§4w)*«Ç*íˆÈȆ—ûHIYáƒ.b/©ƒXÙ¨ ‰`)zj3_í›üÓE(gvŠ[Ÿsþ’„˜(—$ñk¢ç9wyæÝ~ìaíß5XÚ ¾#)¼ùi=ëŒn?Y/8§½(åדR‹‹ò²jÔ¨=TÐÒxg%ÕÿÅÀ¶o4· áÁíëpu eJä‚ÏñV<’ö’Ù‹Bñ‰0V .âÂ÷hbúgt.­zˆÞ!±  vÿì°g( ôò¾“Ì´FPh˜ntÍ1Jø:ÃË?˜výŠ;›GÜiçšÍìudJ²Q ]*òˆÑ­qñ¡¡íùƒ+.±’AŽž£ N¢@"¦ä;Òê[«MR?F¡-ëN»T”†¡ú“qE¦ 5“z§\l´Zÿ·˜>Q¸;{ ©»h êU¢žúaý¢îµ,õÑF Ç’­°å&®.qÙvYEèüyæMÔv¦m7 ƒÈAÖÙ;.•ÍL{””¼Çõ´«Ñ-~ì‹x Ó¹zÆ’/º{k$£¾vx~v{fjD­É¦¼,Cƒar¦cVã©üd\ÇàbÙ R˜<è7b~þ0t_»¢ÔL³C ÷ØhG ›AÕäºÊl'øXXþ¬:8rô„>b¶1 Íî$;j'r¦MEÒa¨!t~¦ŸV~ÈsÃýÛxÒT•4“ÂlÕ#º°§O5mÝÉkêÂJyEÈ9‹Xºv¸}Mæ†×x¾g BÇU“Ür©õ©(XW ÈÜsJ³¬Š4^—loë˜%rý™âÏ> Ï… ÏÞšZrªBrÅuî8*‹fÙL88ÀŒ8V] .R[Dð5qy÷])…ö¦‹! 5³vMH4mŠº2KÇA“c)wOò=Á4äO„ Ó|×<»7C!ͽ53ß¿Iož 2 ém_ý›K¸ƒŽ¹z¿ œº}_1@7¸F?Ài´sV¤x¨rð.Î&÷gqi±4Ú3(ŠŒL…T¨(+çpü.!¨Ó›g\ßôKbå\©x·øÆš¤ì‰–-ó j¥€|Þi4¥sš M.zM÷qñÊ4¾jo²5®÷P1;ïGSrA””“Þ…jR*N«»Ñ(>bµõ½C 串—½/÷ ¹m+ÿ+ÊFÏ+ä&m…xçssöv“Á¨’Þé…ßÚůG³Xzµ“ª#úñ…º‡Í?XRÄÀ¢·²nâ8Ÿ‰mŸ ïò/ÔKc'48eŽ?#Mö“ôgØ7"œ¶!ýçÚ×S¹ÃAXÛ(þŸròUW×µ±«¡™byO)òoB&Í+r²/ôàÀÅòÇy½ÉAyi¡GRå?]êÉøHs²i(ˆøâäïŠÄ.põ˜¡›ù¿$¾?À»†Úõ‡ %áÿ²«­«‚Öxá<<îúAØ2̰ƒbŸh¥»´'®±Ù[•Šþ0ZÊOëÎݾr½ Tä²)ÐeÙÏh³èc:Hš_-ÙAI—Êû«±kž‰±qwXYJ±³îäÙþÊ!¦™ö@bÔh#ÔYadg?XʬÞkyÿJ—–KZÛþWß×yàqÊß?G<Š˜˜º‘1B;b 2v•äm•ksµoê~D›çO/vkh‘_èÌFÕz÷ñØ8Âü ÆS}&‘•iœ”úê—õçöç K’uQH7ÓpÏž_Y³¿†Là÷WGE”Êïç¾·K¡C©È‚>°Õö™½»Œ×ïƒ~YøªþüY^¬S^.¶ì²À[Rb´~ΨKÝH{Aâwˆì}FæaZh“VCy“Ä4 _ÏSû`^܉mIäqa”s+ûWæÕsö,Éú®ñ;Í«~|•ô˜=+üAr„Ò"RÛ_ò›çß~Fã¼"„yðƒ'þº®YZU>ú£;™¼Z|œÒúŒåPÒ¸N¯ -3 ù´þ`5GÅ`Êâfñaý†Í³RþÉ»ƒÿ†¸OwÂ2K–•'!|o*>‹ÆÌ ±{¡dµEfl̨1`ÔÁ 2…ùsŠÁÓiÒ㢂+¾û¡`ä©¶XFÍœÚwý îúÅ€ã-Ìÿ£'4•"1Õ ¢7ìbË³é ¾Õ«“V{Äðóa×qÍ5;‡gÕŸQµ¬{h‹`4ÅXžÑ?>S ¡L´ô¸ÔrzP™º!šÍ˜"Ï1úN‡­`ŽÉHÏ5\qyV6Ëdˆñ5ŒÕÊ{…ÐRâ¢ÃØ•›†[@·7®®âËÒjoHɉ”‹‰ã¤M=‚î¢T@¡ŠÖ•n1>‡»9MnQ> ÆÕjIûf­¬´k2‚ÓHû;"å0‚r$ðǪA0 ’‹žš„L qù²•ðF>âÐKð×m5Ð#l½-A®0ÙùZ­õd÷vŸ_7ª I‘ÑÏÚçKRû9òwy[p³f­pSβ¿NüxÚYM¬¹ž¬¹©ø‹|°9xêA£©P‘ÖL`èôÉgx8«ã€¥áÁÁ¤@cGçÄ£‘ÒsˆÏË®=£ePî·N²™PÖ^ĺ›O¹Æ¢ç~„ƒóG+rËÂSvoÿ“]Þ¬Ò/×ûBhO+d–ÍHIqÓv/²e²ÙW?ØðõÁ¶†ÖÊ: -p±¯«é·Ñ¤‘“î@¼}"5äš$Ò€nu†iˆý!^÷üg,âôJßw‡~ý8N¹¢I #¤—âLaˆnêÊY¡ö_ÌÇŸF¯c©x¦&„ü &¡äÝ­µ¬­'[¼¦û©ÆªÞ!üòˆYݧlîÚÓó*eZ+dþ*ÓãÞêXrûFáÝv%ƒJî é”·nùqÚëÝ^èͬÔ+êæ1òù8D8n´XQóWƒ¨'ŸP§1Ì[ÖÞµõÚn©DÀâôU:fžkÂtg 6À²ZÖñK$Dt?§ ÿw¿ ¨nñ<¬C7^=Ó€ÞŒ8ÀxE…PÙ‰•gž¡KÜY€KË‘v]Eñ&Àr¼ÿÊ?‚øüA^ÌàµuJŠfcè{M.´j|£ýTWô狘m!¬$%˜>…çdYœ÷8C}ý©~è$A%Àz ool˜¯cQ1o²'ήd|ëî8¨Pa6XÆt·¡“N±n†¡¡½‚œZö{o0ˆîmžÝ5#ÔáAŒö"Êã:ÊW‘ɬÚ'¹š]¶2\…ŠguUÆ> ò¤G ¯#â»=ÚîH‘EÜMpDiìx;~þŸôCCë©) Í/ôÎB¥üa%äùš×­ä¶dDЍ­.*µL ˜þð'·ãð©9I(ì–œ3¦S˜hçú©)Y_¿ ƒ?„(üáNx2Ž +¼û"þiKâ‚`B?åhïvž·ÅsôÚ+v$ñ w[™†>ì;õYUÇbU˜ XlHƒµ_7ŽGˆÚ‘+~À¦B{‹a.JÜfÓ Üª´É W”†Ò},…þ¼sl† Ý·öšõüdôRéÅìÝÓŸjíÁbgf" »ãš¿¢‚¨¼¸J®Ì­¶’U’Bm/fxƒv߉î›1‚$ñb(Sk,Åþýáâ%F•ù-’ÐbGzè¥î7B· _IÆnËщ4ªÁô0 ÖÇcº.÷è$# HWµñV*Xè¦\ÛüræÁ¸Xxä‡ÂÉ™wç “” S‚SE—ïä¼!U=&åŠvÿ(H‡Û ·ŠÓwE™)]‚åé‰ ŽÊ!"7ßEXµûS……CUžŒ“ÆW·Èð<žk°±ÉœÀV4¼÷5Èüõð½Ÿ=ö6sÏðZ!½`Ì$1!|hJ9Áü¼Ù¥(•â†:ñ~¿ŠÜ€¨]$l1E@ëj€s•Ìwx;×íÝn_·¤>êFLj‰‚G̽܅lVfrË#B£…Gb‘¼6D(O蟜˜Yê ˆh½þ‘üxCé\|Vr¼il»0?·00Õ'þ5jpLÖê-îOäÖâ4&ŒÚÄÓ¥©ý»¬3šÇR¦»wW’€kÔÞfP@ék¢ ”1RƒÓ²bhæ¸#Ô ¦¿„ÌyƒÚÎ`\ rzŸއžL§W,KX¡Þ£iØJš®ãØL=º"I€Œ÷“¢~‹ˆª$!:CcÿwúÊ$Z1Ñ VFsUÍÌff’øíÒõ4=êMÉ}çîV•ÁV{»í&0{¿—'H¡ê~±\.µ h[šÒ•¹ {¯óàQ½ÿÒ6³U¶D)‚â½F-8´]g²¢8Š|þ;X*ªÎ,Ú¾8û­®kFoe[ ä+Æé¦ç^`€…И¯ L ª¸ $Æ]y¢v=ö¤|~_³ÜE6)V‹RcwÚ¹,µGÊ“®\†Ã(ØQǨ¤©ÙZÙ¤j¸ZÝ)?®}J­¿¬µøè,!óeþØæË'¶”ÌDè‹õvtz$}WYƇƒ*Ãm€¦e£.È\2ßh5Óˆp˜YaÕLó¡>H÷·M<¨3ºFf\È)7ÚV–ÅgÝ£«À·Ñ@µ’#4 Ô‘PZË Ü\M#Ô×¶´Ã2Šy+="a˜^n/ýj5 Œª#HÜ­¥ñDÒø¢ý4ÀÝûOÏòhöVîhÀÒ*&ÌÇ‘ž’jnù‹£>B?œ@bްRLYÀæ¹ xnÃÐÈžkë`_y¨œd¾•lÖ.ùOPD{ih^Ö4‹žI}ÍäÌö¸ÅMáÅÕõV‚¿n‚}ÞG2·vZ9kÓ´*Èx¬ÏìØ|¾›×ÙÕþ«YeF7rªEãÁ¡¨´_ÛÐ¥Œ@QÅ®O9¹ %æÄÙôÜßYǮֱúE–… -3ö§bo˜‚­v"(Wl­ö1ÒíâÛ&PUwü+’¢"¨.Œ ½¶ï 9v¨ã~úuÙŸá5™{55^aôP5ã\ÓɃí.ñ“&hºw˜À(²:ZîО7  D<)ó&U Ì ڤòG¯xMu޵{Ðamy,]§É8Jt'ò–¨×3Ÿ)ãý• ˜cdí”Ø}h6kAB\ÿ‘Í6)F5æ9cuF\.ôNæcDmexÞ­¿1§˜·h*:  @9¿¼`ëâcøGEÉ—Í%oô$]âOAµÁjQ3ΰ|0òK–Ôr6PO¬Ôù-Öáƒ%ÅÎ97ž¢^ªÏøÉ,-Ç£xløY‰à YÓ.)=nlr&.ö|QÖOkT ÄIÚó@åq´Ã*ÖýJ§¬swZFãð uö+‘ËȯW+«¬nD8–C¢ø»| 'ceÈÇÖSŸyßo?ýõ5ÂÿY=¥Õ2Ÿ('Õ9ÐóA`q•'Þ)%€g—÷w@?–šÔW– Åq¯ÿ¡ V-ð+eÇë¬×8OgîêƒDâ²…¾˜¿*:wÍÕÚ…»¡—âŸb’µE’eˆ§UÂ@Ü`Ô|Â:Ï¡{‹°4„€‹±%6;ðÎjé‘Èh`Qd\”ôZ8a¢ý)ÐUÃntƒ}4öÍð0L rñóÓåjÂ1¢y€³‚Ž¶ÄŠªå³0ï@a¸Š«þY­Å@ü +x$!·¾cúI<Ó˜žÁVí¿µ†l›çŽáÃU»Xsä2"´›ZÀ‹9§…ŠåyÆÁ¼NÈ»LÎ4°õ¡ò¼ÉY&–Ëæ‹Ze-Ï¢K,¡Ê&5\*&Ò= kåºK‚É‹ê~Lˆ(A–a¨c²îÊxR·FSòÙSÙ¶tSº¬ÙÄ”WŸï/ØZ1ÀŠ8lPŽUä‰eìbFf’[“ÿ¥v æ!ir樸 ÈÝÚ¢;y¥x1¾nœÍÙP<¢F̯ÆHr™Ë¡Âx95;†…´~ö<ëi£_gò<ÆO²óÛúBóúWe°œ/ÿ¸4èp˜„þíªÝ]ÃÕWV‰Yá$eGŠwÿnÙØj<@çO¡6 »æk}û…ºPðΦµø'fáT9Ù=xWWÿ.af`âÊÄŠ+¡Ym-NwX·íÿÓÑPù¡c<®7ÉeцòhĤĿ¬i__Ñ¿n‰Ÿ…À{È-ÙÐù×Çñˆ+½ÌXU2^G[ÚY40/ã%J‚=Eãì,B}¿†+(@Ç2š`wÓ1®å8:sx®ù¨S " {bwÌmva;O® åŸÝ¾°­–ñn?Æ[”ß5Z[~ñ‹{R.½«ÊdvòÏ -óg„yÓ;îx+”köÖ=·1h3îiLRÝubýôÅV{ Bjôsô  å\FKOr9áˆã¿(À¬.;ô 0Ùîù>!¼…FE’V `Í@ài4ôv|\`»Ãd¼à¿Ñßëz¸;²ŸÂÖGzל1Oõ‹7‹k³fj¥½'¾Ç„àAGÖ[2aeN,·Ü=;îX0¥­t2ó²ï{ª¨ØÉ ÃwzrssöÚ¤Ûc¿¬JÜWÌ…\¹ÕôÑE«®ÿé"€ ¤¾ë4T]ª‰h´Ô:ƒ1ýrŸØehþ)S¿ÔêÙnõÛ†ïoĦí¾u†–)· „fkGµÞ‚'™Q7)yÀ•Ú•GE±¬ÃòàK¬¡Ï5f ã™M}   ãÈéY"ºÎK›ûvüï% M©ƒ>:·Ç¨ÿîË6¸ýÅ´RÑ(óNLôÙBÍÿÕ†J3›á²G6údZô”4çRÞÈå!†òô†hÕ‰¦«’cÍÐC@ ÃÄYœéO¾“ÈÕ¬b-c2É•FHn‘O?÷D¢é+˱¥4zRÑ™UDhPZ°Ñ9C¹GeŒ*Î0ýÐêéIž7Ìï|/™ìŽ+0¡IP,–ó2ŒMÈñ@ˆ_–º5»§ Ž]†@Hw­2ЉÌCέ°´Š6ÅZ’Í6ÙU94µž ÙŽ×/yqEtY:ÔÂïgÃYo³-È0€ ±Ê= çæãL­îÈϧ’© à}V[È%ò§Ã|äˆa}ï2? ©~‘cÄ×ýVúrá“6ʇƒ“|ÔÐ BïUŒÅö•3ƒ ðRAVÌö\dg¼Èÿ>| á²0Ìíô;ñ›Ç{§â—i\ñ\SVm¤a—8èÿ´ªZl endstream endobj 139 0 obj << /Length1 1965 /Length2 21979 /Length3 0 /Length 23182 /Filter /FlateDecode >> stream xÚ´zeT›Û¶6Å¡¸wwwww'Hàî^ZœâîEŠ»»;E‹»ç£{ßsÏÙgÜ¿ßÈHÞÌgÚ³æœk½ÉH(H”ÕDÌíM’ö Ff^€¼‚š È™…™AÔÞÖÀÊÈÌÌOA!æ4q±¶‰›¸y\.V%3—w?'+33<@ :½+ͦž ‹‰º§@mò— lïìÂ`jâü®‚,­A@šw1{O'kK+—?1ØþDúã-Ê51³±ww¶±˜€Ì²Œ ŒE{÷wÐ@m˜­Ll-öu 6@CMBU ¥ª¤¡¬FÃøXÍÕÁÁÞ鸈©©kHÑÄEÕ%@Mz€”†šúŸWu è¿%=@Qý]ÿ'Ï»áw uue ¦?k°Ü€NÎÖÒþ7Êwf€S{wµp²·û+€ÚÊÅÅ—‰ÉÝÝÑÒÕÙ…ÑÞÉ’ÑÁö/~êVÖÎw{'ÀûÕ h ü«0® ó÷rºXÿð§#yk3 ÈøÇIÒþo¥Ý{)ßÞq—ÿ%ö^—?1mÿ68ÿHceâü—¯¼²²<ÀÎÄ䙀ÌÞ ]L\\ÆaïO 9Õß1W'§?9þ¥rúß4ÿ¢.jÿ¾2}[o_÷ÿî˜ ÈÕÙë?jóÏe›Ùƒœ­]œÿŽXXÛÿ°wþÓ3kÐ_˜‚ˆ¢Œ¤„š:ƒüûàìß«btñpùËúO<qy^73'€…‡Àü>¤ s1{;»wÖÎðÊ'ný^'{'O¦µ ÈÞäý_ …5ÈÜâOÍÍ]˜4@ÖŽ®@ñÿ1}‡àÿY]Ì #èafÅô'Ñ_sòfù¿À×ÛÁÞ`abë ôµ¶¾_à½MÜ€'W ¯÷*þ)Á³pÌ­Í\ÞGü}›Àÿ]daàù~gò/Õÿ4Ÿú¯-Jó¾?ÍíA¶žs <“¢½Ëû(PÿÿÙaÿ•KÒÕÖVÑÄHýzþ·‘‰µ­ç?ÌþËB ø‡(õÿákí,ií4W¶v1³ú»¦ã2.&ï/²´¾÷ã/Hãϲ}Ö÷ÇúÏy``açü/ÝûšÙ€€ÎÎn¶¿TÀ÷ üÝ÷²ÿ! `ÒQ”—‘Ó¦ûç¬üe#2³7·YX98&NN&žðÌïÀÊÁðfyŸbs Ç_`bÙ»¼»\]|öNðºÈÉ`ûý-q˜Äÿ-ñ˜$þWzgɤö¿Ï»¥é¿¥wK³ÿ•8Þufö¶ïËþÂÎþ±³3ù_„…™Àdþ" € ø"€Éú?Ä÷ˆ¶ÿ!¾§³ûwº÷%€Þ úo=Ë{0û'·¶ÿ‡šÀäðâ;9§G{·vÚYÿsïÕ|GÝ€ ÿpã0¹üÛà}9.îÿ‘ô±ÐéoàŸ]Uþs”ýµW™ÿÝæÿ9ãÿ’Õ\œìm€ZÖæï÷·ÿ0Q0qq²öÐc~ßh,ïøûã_ï þ‘€âßgÄx‹ŠÚ{x3°s2Xy¸,\œ,ïk`c÷ý‡¯ÙßÇí_›ü}ÿ%ÿ9ë@ Ð ~yÁÞŒ/äSJCX©ŸDþT4ãI– ¶lÔrúT>ŽxÎ6)P¨ °) ƒ²À^^š×À/)T¤M‚iûºÞœX9yc®"üËÄOÁYBd4[“Q#(Ca) ¬ƒ”æP6;O§˜}&£%¡… 1z$ÆÓÖùÃ:ñ†v•Lª_Öò3Ú½pŽ¥ÃÉÝc ¯iªÜåí#.Ú¤Gd™vÖ8/ kTÆ¡»óãxt¡Ð#EÝÌ6®Cþ¹ÍœHW(_É Ø!Ûâ,ì…‡iUBdâAN“hb¨=R^xö`Øê؉½‰~¥»4NŽp¥Û’Åï÷|’û­aO‘\ gUO=þ¦ ‡$"ûTÚŒìJ«ï¯xªZ¶Rñý>FY³‘ x¾á‚"~Ë}y ̆ˆ¾òl ïwÚyââ6ç6T¶#@hÐåoÚ‚÷èAÖûHÍè=:ø•öL¾Ù.ê¸ãç\àú©ôsÿ~Ìeš®?™±)Œæë‘s*å­"†4¾¸=¡¿ñcthW9ql¼6_jgµ¾ÎXŸÈTÒœ„ÃwÔ×—®•`åK~¤¡›ÓðYUqc¾DuÓçL~µÍ“Œ8D´çÇ€à h—e‚½JeAô–4msfÍëãÛÆ0HðON¨ËõV8Œ‘¹ªª`Ù€š ¢®ŽÑß ÃV²Ä`Ÿ”`I¬c歶ꦒEº´wCA¬ µ¿<Ðá5O1°MÝõu›"Zõlp0#½¾@±] <ç˜cýi ©ØÆ©ÈYdïpÓæÅa1`Ýe5QKîÎxÒ“ÉÄùªI´æ­H¦'y_u²ü‚RÆ¢‚Â’s4'G_ (6Ʒ肨?+6¹r±’:¿=Ö¿< ºÁâÛ ü}k…M"ת=IwUZ‰Gèj òý~]vjëš—`ïWlÇÁÄ€ŸÜÅÉùâah‰À¬mnŽ.×ðôãï­Jé+^Rêˆ&̪ol%u¿ÄÜ• ’û;–»Yc±~K+˜Å¯ÄæfÂÙõìdVw«©¦U£ˆæ‚"jg“j‚?³SÛKzX0¬…¿:® éá%IŽ~~5åGG‡»À—×Ñlf§Ëã8§!Üál‚üüjÃ2CÁ-ˆªþ2Píf{¿†f"fi–“Dº‚ëyq¨Ô<ºoTý(ÏgÔ¹ØY5á]âæ[}͆à‡*6ži] ž«‹`Ü=ËÐÙ6» ÌçÓÐV¼À(Yq gñZ Üø­°ô%^†’ *ËZ Äáƒ0s@4üÚÖlÒÔ®®rÕÒWMi±_1Í:P›½¼FSn˜ZPgôãàÓ–W½èµðX»c‹á[Žê,Xd›ó^ØY=ª¹ýÐè B›èlÍ6†QÐ2¸Ò·Â’÷dl\vƒüCx\õ;œåÓÆä, #à@¨(3C®$üS…·ãS ÓÔTfmêJ´í^LÁ!ØNÛþÅÛMwy¬˜'¬é˜/Ü:k¥ü&M07²÷0Ç‘ÂDeżte %nâÀË%øÔ½ŽNÚ¬#k½"l_„15š/döü~;€2y¦é¥‰:ÕÌr»ï‚œé„|åá>¡$^ð–èþÑhìŒÅ(:B¼ÃÏVQ×êvÃñÙ8­Z5LõXiu!—:ÚÊN ÷!V~ Oª{7?Ík0NÎ÷~åÒWb9H鼜ŸÂdãEƒL™®^¼æ'k–óî#ÃU°¿&ßJÔC ËI^,j½ !mf¢p•·7{¬/ÚÏy¬H¯jß|bV½ë“Ôð›3¡^›¢ìv•X%\…ú•ïÖÙf6ñì´ûæÌÝR‡j`^(td‚V5KbÔÁ†–´œCŽ8k5:e Š>•GQX­(«\´—LØF­5D ÁvôBE“ó÷`U}eø­ès’›ô¹…F¼SÙjæ®™oãH1èGÍR_Ÿ”H!Ç2p'Eväù’6àxp« +‰4¿6ák0’rT' µv¾„Ía î¤ Á»Î¶p†ÚAÍ2È=pÅs-ûí4$‘ƪI!œÐ[YÛ%J¬àaŠäÞþ‰56åÔXÑóã¨ùòC¯m)Gº1.²­è &ÜXW®>ÙÝ ÆRûÆ$•X®Qd²Dh®i‚Zˆ¹y8Ð/ˆžÜ d¿aëYAe§û|Ï!ư$+{"y™@›ò]VÿÅæ·–M|QßÊÂÂÐlµÓ#ð©Zã¹ ŒoFª¢³£üœ%òC\‹6tÅy,#½—…ÜlëGbx”èé™—QÍþ ´Vµœ&å•‘Oð™;ºÔá=m‰!`ºh%sV‡Fë¶Ñ69ñbÐ6´Å{¹éV ŠÕ%Ó³"ó¶?{ðÅ3¸¤!Yòuy 4êš*AÍ&_|7S»"-¦ ÝÊÒ´›—$R/9ãµÝÎ •u—}¤42½žûL.lÃæÐyžß¾ÞG‚X^¬Ý/…)ö­¨ ›„NæY£ßæÞš\mžÅ?<~H¬+õú*Hrq—(ãòŠÆZÀˆ·-_O_P¯ù…tÁßñ„±:ÓRXµŽ•Ó0¼åTpÉÛ.üsVÌá7qÆ+"ëZ‰§E;0Ä7Å›ãË`BÊáIüܱªü}¥õî6ä5ue’n=[ª7é—ŠþXî“lDšÏŒzçR»ô‡ê §¿­loþÞAéÖÒA± |3?FCPG š î*Ðô?Ð9ÞØ7õÑ`QŸa:wŒï\Tæ…U†p­bŠ¥MЪFs-—"ÍDa-µÞà´ÄÆìuѧş/ ŒLªnÇ-HÖTÙ_«}¸þ^¨Tt…cêeqT¢ç2«í@†œY”ÞàÇä4±{«#‹œjQ 3pL^Úî€pr×CŒïî'9rt#ÐɤdC+I¹zð)†ôHJã!j-L¬>Sk·*níÔÀt|LÇá ¯àbk?DHp¨~s­3±Oîðv€zá6‹Ú Q¿{P)¼ÐíG1RH>TçR6ñéhhT$¨$ü\Ž!´#ÑôáêÔ£òt¥nE)y»øU«Ÿx»²ªÀF“C‡ùw]õ„ÕÉYåõ«ý ?^.^ä£ ¨%nÄRyTºT¿’va=»ú~`h¾žÛÕU/=¥ÂËÈWúDSº™¥¿5°R«h[½µ¯\Þ¹õ û¸¤N㺒@«:ŒÆˆ@~E+ô&ðr”Å"í@€ ë™ü@s‹çy™†0·!.á˜u^KÁz*eÔ£WÆ:šÛä8êf?€…`4–ƒH¶'¨àÄáÄBñRT`!oúšèÄœLJÄÒÃW2é`uŒ5Í—ã¨>ý° ¸¾…—7—tßlÿ$G§ÈᥙhÊ™„ýv["µ›öëS_91E`l5{ÁËÊ#Ÿ°[T#hÞœXhc›¥Èûä4i­j{ʧpTÐ{F™¥ÕÆ8±—´ÉŠ©ùs*ÿÙ´â0Jœhà\U¿ë—;Ø·›ÕAµ¾˜ºÎ½’´b¼*8ø¢GŽdš¶M¾ÎìåhøÝü¾ºˆ‰£Í|½ðpÜîr„E5òa಄_-%8B)÷,2Š¥óÃö…¨v` u†0©šUè…׆é¥Óá—·¶n¿¤v–N}Æ©¶³!ÀævâzNŠúo6ïCP¦ÿ¥¥[zYž€‹ŸÌ`­Î;Ù`P“ #9åF'Œ C- ©š7¹#ƒËœ;×`ÚFÒ?ðìmˆÿ§ plS}œ¤púͶ‚w2H…Yÿñˆ9wÓãó¼•""›”îÁ¸\GÜõRÜÿ²æ)çvq®Î@‘¼BínÑ ’`>àP>?üæä—Z®bЛo¾Î€µä¸*ÇÍ<«àùÚ§ŸÇ `Ž\ Š!Š„<,_E¦n0ÏšP ¤L—ÏMc &G”E-éÀr=s)0ï2Õ7ô¾,¥È±yfGC)8)†˜5ZnÔÒ"8?ûˆ=œYV‡RCsôáöDܶdèdñVöpÝßëjÃ?‹íúŽ±Ý §ÏêæJÎñ]–:t«ÓÈÍø¹]¾µX×®¢yDF½2ÞÚÓ{ áKFyIœåÎ/{²0¼¹Ó¹§ceaådåj‡²&–ÛÞl3‹Ù‡yüß‚`ê%–d# €îÅž­têðÇÁü¥‘ ž­þ—ZüLÍÂêõ©}=ÃJV Ñè™ZÞK› Ūª-´!Å_NǾöï·âo«ûy9ñ=„œ(»?éWÍE„”¶ýÈ“®à% `˜H¯3ÿþÕÂxvÔtîÉÔÜ\v¶²QËÁ*”|³~“ÀPeAxP¤»ýY É=53p*öÍ^>ò5[ôF®³ÒruÊÓÊ™.q@±ÕÑ d+Î窕] ù’ wos4C8¿g^åúxŸc´æïP i$è§žOë)‰£ª$ò·dÓœc?#]ýÝÎÍ”J훓2 ‹ù¡¥)SùùÄ…m~ý‘§(ã‚H‡„ÆVý‚ôS”¯¥-¢]ªiÖ¿fþ¦Í£•û¼ñkm‰MûmŠ3“ÆOÒŠ^\ÃxáÆõ®ƒ&‘ׇ1¿ÃÄeú§ð¨FŠïDhü„½Ÿû÷ÎFüL$aÁÝ]’>€¶HTÃö -ÄZAôàk˜¬v×d<гl÷›{Äwø&·Œ˜˜'óóæÆþ®¢[Ú¤Œ5N i24ÿl'ùÂ’ã̓¿‡8NšÚ™7 DøžÂ‘S&À/óµôl#ôò+³¬î&†J~±ç':¬dVi¾º`«‘È`—ìžç€+þº¹K<ßñ\ ð™²òv_UÞé+ô  ·E6".•Žîû¸ó¿¤# Œ\‡ðhÞÐ÷,&ÄØ±Þsð×îÙ}fç£õVำØý†€%3ÛâNÏM]_ ‡ÚåÂZDü´ˆS0©î†ߢH§UÕÃ]‰¬yV‡¸œ²Æ…°/ÈâZÞƒ§øv™Àúy®d…ŠÚñjî`}TJÔ5?#= ©Ñ÷õq5xÕþîÃIèB´ÄêAB+™kÏkXøáP_òXÅq©«÷ºhÕëY]Üû[®¨õÅͯÒ·¤@—h[ùn0‡iQÓ‰U„‘© Ô&ˆù±ÖI7°°¡õ)ÍÂJw:ÊMº}©ÓwàC²ù:ë+±á§· °vò×gDÜD/‰“曌¹òDñ6[ ›S…5'D€;Å¢¥as¤K…@í£Äß(cî‘ÿ¯6 ÷Kü jÆFð²W˜Ñ¡#…‰ÇñÜ,”#¾´7–”#D‹¢Ä4íâ5ZëéÞc”~7•ê§ÛrúHÝËQ»N¯5ò‚4ႜrÖž€Ž6Þ©Ùo¼àªt?–Ø B³ú=Ÿ­õi!0©Á¢†QA»#ZÖÏÇOü–Õ.B¹µJÌ×Dñ&ÃZ“ã=ëºO?£~nh€ ºYK[ó\ÉH‹6b`ÿœöÉU©N“LÙÔˆÖÚEÑ==mUØ‹þ†wæÛ!Ö ¨µÍÌv#Ï/‚TIŸGŽó–•gœ¦²”·[›>̬dY¨,>HI•›‡U÷é9‹Þç´4¥]½®˜QyQ7DþTSž•Z…%çà}:w+\\¿óŒgºÍâ ƒV¸­{¹çÖ40ÜUr`MùΟíïV¯xH1TîŠ ‹Ü¦ô8U‹»Ÿõ3Y§j„7Ë;í›àóˆvLúµ0°>ÏÖ–º+Ô²SÛxê+’¿ öéÜÔ}¦»k] ¥®&Åü…–l}šRÐ@HÀ ñ"ÚÜœÏÂKHêÜä\¶s"‡gãûïíÞ¸±›_˜Úg;ïŠk"Ùu¾T§‘:˜ßÅ'ä‚Ò¡F'j¯ôêÖ4¦4­´bÝœí›tŽÈÓRDˆã)Üùý §/yEe0¬`ÃØÖc_G]"VçzrÔ'Õ«¶GÏÓä6´6T Á>ÇJý²Óy8ëìŽvó-}A`û£¤»mVÙ^ »Ú—‡ý?åS?W"ÉŽÉ,eÈô!ÔZRVZ[P°HêšûøÞçN¶ Û#TXpKÄ÷Jžtâv T-Ï>h&kpÁ#¼gÚ;âê5Eëzý~Æ¡4BLv1 p10´Zf±ú¼1xo† r¼Ñ&ËÚé¶VLX»uÉ„Øã­˜ÔöÏtOl)àY¶5õ9b!.Õê/±{¾f:IøPŒ{· i«éo`ÒÜŠa­ž{œô(`V\xÝqÆ Ë4ìl¨Û·%ÈÚ_K­sÓ¶w+TC”u¯Õ°ä‰ DŸÚvÓžL  ü½\d73bOÙ`ûtù¯‡Z=õ…vÔÜ€½ÉµÑ¡³ëòÈÅNƒ#âéo(¾\2‘ ¦Èž ÿk!kj(él{;Óî¯'¸Ë7,WÍöØ7­–ÇI¿½11­U3ÅØ8“wÎ2ª^Ý Ü¸Šy²+6i3…в¾e©ìí•›þr\_ØÅ/ %2 Ñ >öï2ÙÅÄ­YÅ<ŠÅx@û•À?D©½"âî3 UeëýÊü ¬,+$¤5GéXˆ7çˆØ¾.€JßT!tÈ{ŽDøz'SÛ¦-€ ‡¼Ö€q~[¡yó]¥ð©[‰˜ΰXìa84Ü-škçÒÿEÁö£Å]å§¼Z1eÚ°'9¡PÖ£Xæþ^›Z»y2¾|pv‚›èêûûïr±.Åê+gLÑÉPV]Ýx×3ıU2ö3ôlÒ˜cÛùqì5µz?ˆŽE¬E6Ô8¸êø=ÅB+ÈÉ©†K*¡{ôXÆý#¬Ž7ˆ;”zÀ ;ÅÙ%å¥î7¾Je]Æä‘ù,ÂØä»ôà ¡Àºµûµ—€üª{Æh­D|¦-]µ6ÔfbIûð?ÚGÐ^Û/*èºæüòº=üê·±™D¾fÿ±ð˜u\õ%­½·‹Xž¸%#T:­½ñlã.ÿXWÈB_7õÖ#‡G:ˆHxÚ8Ý& äãsµ-F l!Y=†~¶@8ú Ä+ˆø6/M¨3ši¥›dr8ôi‡ ²…í"¨0‘˜¥œ ðndŸ&?† û]ÆÆÔ±bø!upÍÔZðç7]¥‚b¢œÈ¯æ-æ’ó­‚C?"(G±UöîÈxy]i©Æ“¸ÝÅäÐçã‚;}SiK:µÇöf»\_Cˆ±Ç¥º“áIù¯½§WXh-±€ˆ/…>çwè(7N*Uù°GéÆ/3Fê7väR±â¢Í·ò 1Ô>t|h¢¯ÓWt4S÷ùµöÈ=S‹ 5x÷oðóüµíÊéÔÜ{6.Þ-Ýçq}½[dd4 c³}æeù_ï°P°·’‡)haÝfú†‚åODnbwáï<]"Ȭª a.ÃéÍ£q‰e¾‹*$8ma.ä;µ}Ú|.²4––“+ÄPwdZ „6Çêu*dÁ¶û‘ªæ%…mæÓ¬CÃuyÁ'ˆ¾ÂoxD·,½wËØT¯×jgО7b¿é *rKÈìU`ÞÄ#ä™z¨¿ûò»²6ÙÀ$pêƒRUJaRßýô–êr ›4¢½ùWÝùÒ6þô{±@ìÏé¬6É‹š? Ó³_Ôäg¹u†J¹5<…¶=cwÕÜuyÕ"ƒQ®7'ägÄ‹:YøîŸ•e ^+!çp°0z½m]¹ X¶}·¿>OPT¸†û%R}12ƒEé¾£“€ã Ç”F9)Ç•‡KV·sù–o-”GühÔyE9뜞 \ÎRz"¯X.EªØ˜ ·Ëã¬HX—L§ÔY; ¼¦ç5Ô1–L­e`bÅm:¿Ó3ó±K§Gƒ‡6Â@Á}¯vW‚Ê~U¨ >IˆÞe`¨<#Þ&Å1|*äš«§—^¿m'“Ý¡® ¢¾Æ.€2VC“€Î}¼ÍðЮշ’-¡J†¸>ý»,Q=h}e°:%™±cbdý†~ÔYe?ïÀˆœH(.ÐhÂ'¶§€"{A›|aš±0''€¶Ú±=³ŸîcšDîÊà`¨ƒ)áäK¿ˆƒ8ºp¬W:çŠD–¦tÛÒ|>÷—ÎÝpYŒJt‚1´ßWå*HaumÐöàä±µ‘xÍÙ´+gØ üšWcU¦³þ‰ü—$aäeÏGëÔ- 9¤¾U¦AXy™ú烛oßÑs¡^°d¾®6e”ôÿR{ÂüÖ@Ì U{Vªá+£;­OÓ±¥f ‡D-6'Ëáö¤ß­D¸ïq¹b~ÁeˆøT¾CDbYTjG—F?ْ𨽓­ÕWéÍÕÕ¸œßüsÍ@ñ|íSGàL2'r™ÈR€M?(õc.mŠ~és0$tĤ˜0¥OKR;ÿØzz‹?ά«;É/¾×Pšy©••m®ÊÜÔô]öÐŒPµ&¢Èea™•J?xø(Œ ܲƒÂL<°£]lz^röR¼!AÖO_yúJuqµÏ¦kòH¨QŸ· Œ”uäXUR6{˜p°(äM@‡¸½ÂvqfA ž;T‰À¢Ñ9Á?V£œM•£JÒ8='¯J„|À”2œBMTú÷–˺'T 2=ò‡)AÀiE¤i˜-’X@ÑV·Bª÷ 'M\7¡«u‹ªÁ%ËŒ‹oEùÝŽed"`÷ç½µÙö}!Áþ„¹…”ûeÝí¸½¾ë ¯É?ܕœ"胸ÊD¦Ã`ì@jåäÇD¯°O‘f­Aê;ßh¢3£qÄ|àŸÝ€àv9Ë–O½ìéxv½µ~cœ:ã¬J*êEÂV,Q‰›"²Þ£=†9®ЈLoJse¨ØÜˆö³š»i˜¾ä'£½®Ë-d`ämðŒW¢ªR#zû SÌùŒ^DÒø1¬£ £¯Cþ¯’;¿ä?yE>D4Üâ7®ÍT"òÁpÍÕY ¢îî† ˜R×qiV\¿ò.éÒÂu£3ª ¸ÂõR†p޳ñН&,Š´7n…û}úX®{F/Ë<ÌbieæÜ¸AÄ[­/rü‹öe™Há[ZH»DuòSÌva¾x¹…Aª>ýèá«GÞÎ…0IjrúÛ!÷\5ê¯:üÔ^næ[Q•â­þ}EíYáJû¨ç›o†µAÓ’ûåt‚ˆ´>Ök<ôR2»¬ž"Ö¶œèØNš­’¶¢ÓƒÄa¶ÐãˆFéÝÓ|žgܽs¡Ã†·E•,r_Z9š; @_åê'|ýÏ'¶´V“\`ÜkGç½mÔèe<¥°®uôü!Qf¦¯eÓ-)9n”¾û;Tù¾V˜|8 X®sÊi“NéCžV¾Å$u$Õ5]kýºŽéœStÿÓŸbákµ[È×<¡§C6ä´üý'#VV80ðS´ÜpAÁ@ŒÛ¤6Û)’j[¡ßn§žÉýÇ9½\økÞ†O9žTÃ!¬’&‰õؽ—_ΫL²¶¬‡qbt´\Mö²â‰À74C¡ V‰ê¤h ÕÛ` Ô—Á²1Õ³à $r8üK +з#&R†äL½zº‰îV4‡Mu†».³žÀ88>n·œG³ñÒ”, öSà‹Ý‰54±å•I¢ŠïÑÓñ`ÀÉ&èÖ ¥r("%1Õ5#”䬵òæÑ`©ú‚Xæ‚ïÌKc\’ú}øûBžJ'QÌðTÂWÂWg3$Ñ)CÿjHÞÆª·æ…ï&¿"xE<¡KÑœÛÈê¦>Y1£+?H·n*–ý«s‡}l‰8üшDäQ"­F™ƒ0*¤˜Á‹ŽIê*Ùý¿õ÷äù°eJqÿ?´+Oݨ—²Úõvé€epó™â7n†.y!œ§· E7÷iüÉ¢¸Í×±‡üo/¯«?Å¢3Œ·÷¾o2‚ZGÓ*¡hb’MYÓȰòÖ‡d«Û¿\°Õ ^µFJ%·AmÒ!óõWÅɯ²,i?]½º¦øm~-»mrvbû’GµùC½ôÁ¼®k¶]77ŸéBˆ’£NÞ5Œƒ@Ik³44dë˜Àó´ú@ùâá0o4þÕÛ8%rs~B|iŽ™«ûj3Bo1)"Œ˜/H©ú9¾z³s}$PãXN’4Q'‘ê’ìC¡'¶wÑJ×E§c’A¥Ìp(Æ%BC³eUfÝ`noûFâ˜B,XãøEÓÒÊA,ûIµH¦Ø}Ú Ä7¾÷•U¿Ð-²t›2þAß‚B¥¸Ý~ÐNó‚®“Fé×ѵW‘ÎwI–+i&ry—Nj¡åîLíUÇDqeÀ°âàk¶ÎönÎò˜|¥k#4¬¨‘Vj#4J©ÐèÇyN–+Xì®U¥åªQp[vá° š"!âeÛÇ»J1³&D0é]Ru¤ëM{¼]jhUH ¥˜BH…®áàÛp–&*Wæ(öϰÒ™(‰žÐóypTZêæV>MàÈŸˆæ®yéwic<Ÿq;ÔÒT޹4Y0B fâã9Ì«uóÍ×öµ²tÊãÌê7§ûæ¡<¤,+üüaËÇjtü„BÌ]"™ ,æ4wúל¼ ˆ ë¬ç· yY?GC“ÄŒ’ß ’_èÖ>†Tˆ¯Ê\q?Ûlpª§”­¸jÉÑ­Ïh¢òšR©{Žöâxt‰ ë]Ÿx‹Ú:rh‘²‹Ò¿”…¿&dh˜6ÏÇ92ÉB‚®³¡ãž·"ö@+lÁjdWptñü-—Æ[ö”ÀdËa˪i[ÇOX…þÛh\m‚l29,Ôt»ß)¢lÖÐJF©´b¬í=ªép:Ìn¼’RŒ¶ˆ§`Å^דUuòO´¥f÷šO=µj)„̘=Öª áz>z§òáéœU‡ïz‡ÎÛåÁ§œÈ‹ëÕ|ÿ¡z^4Êõ\g´zØ*Ea†pñcL-³v[ûÏTìíÓÌ00Û˜ÔZÊàð;ã'óV&A´Ù²m×jÑ/OøWŒÅ@yªã®Oí†ÎÖÇ£ü0õPYÒ`—y¬’`r¨Ùc 7ö_ä`ðNˆ¡ññ, ^ØIáí-¿£ØdžaZ!§0 6ëI)Ú%î^ÁGmQÁµEl:å9jÚ*°k2›j¤O:ç†K`ŠË–‘Æø-÷ôûçm«=u©Ì%F†Ç£U›ÅßC8r-<çÞ_ž_QºM‚ÛźGº.’z2”ùƒÖ tcè!ÒÕ†«%lÃ.”?·s63)Mdà6Ö¤Ùdüè5“òm=ͦ„Y@ëìŒß{¢ë#ûxÑ“ƒW‘OVßy!Zjƒ%ØA„ñÈf?qC3ËÖ~I± ½rѯ²‡“nË F7ìb]„-´ _öR!ý(Ž4v2\´”¶ çVÆÿ‹tÆ Ü×ÆÅŽ)QK¹1î²Àè29Æ33ãÑš¬âµ=)3clç3ôÒ‡RÒFmtzåR¦zÂÝ>nÖo£:UQDÙ¨ºGîiÀÞÁ¦R G»o×<ÝJ¶ÙŽÉb{8½ÍÖôÛ³’LS‰i>Vå©“:Ú7!âgcšFþ=õ3µŒ–¢ÓÐmj™¥îÛæÑ+™ø!ðªò•Xê ºq[ å¶'“¶ŽÇ‘ÕœG;ÊãªÍvûÃl%6ùÞO~ѰZ™`¡GÏô‹ˆ[s/ꢫ8g˜JÁPî—¼Ü<ÚÃâýÞ +iëÝ%TÆÈÕH†ÇO3© uo‘³Uv&IPЯ5–#Ãr: «ÓÂÑftCóã0LÃ)•Ùèu®Ò×èM16ØÝ†Pl šTE‰<¦\»@¨‘LóÙ?‚¾·(Éj³Ë¾Mˆ]óèàC~}‹ 9szIk¶îîµu*3žqͰ_]nŠæWB† H|-î<¬3Ϙä Hi Æ…K…èW¨xvÃ_Å‘qœc‚pÜϦ?ô0’y–2ßÍGoÿ–ª¸I’º4þlñÙÿºß GÓôlûãI˜# a€²yD.8’MI£íáH.E\‡dEQχ øæö&\RÇz nLt±åäQè厔¦n¤ :±žîæ„M ¾"¬F*Vë»cÞùÜW 4/D‘Š61wYTfHÕ¯ü•V’ áÓ°[ÁRZ*egfüD0;‘fp Çu¢?- a…@ÞõÈùJp^wcSR®Dun<šç6­`-Ûœ–ˆ7ÁÆï>¢‚xp‰“âfø>­ô!‚m#¬>ϤýV|¾zÁ~´ùΖ0<ÙîhCþ¦sú$´æ)²íÉÑ-yàrI²NJá+ˆxVpGÆa@YOˆ NóIžO‹Yzþ•wAï¹AB²b?¡rs)ÏÔÃÜl´b@~ušÀ‰ÜjµÞ‰ ñ‚¨C†V~^TH9²_ˆÝN·zª³x‚7(emÇò`¨'w+dVí¯ø\}M 2)f+ªÀL#?Š…^—Ž·¹r»¾Ìò¿Y»ÑÀ—2!w¶Ê•™š‡ÒRŽ>2)$ÇPzæù¡Ü»D³í«Æ4;{ìTëPŽß—¶L•)¡¹ÁÆÃÄ,ê_M½ ¸BùM$sÞ¬»8 ÅÚ¹~ÔªÀüV ¤m@­7N9>š:ZyK:”ÚùôL—àÖv›pb ;Í÷ÅÑÉ/®Ð¢-TŸ#î“íNÊŒŽ=Ñ6Œ‚± &*dìêé“¢z2b€l¿w²ÿäk¡Íé2Ÿñ Œ×L'§ÖŸÑq/H4jÏzVŠŠ€(þÅáh¥<¢Î u6y¬ ê'^èí/ºq-øþ¼;ùÉÊ=”Þ|tPÃ3L`£Ö)²(™,Ég}:ý6¿^«»˜){P£Ï3VsÂX¼ WûÄlbf3Ð(sôÉŸÅs§9*6®ƒô'$ £¿&¤ž±CõVxÄu+Ч¶T¢¹Ôþ{ÜÔ5šìÇž’Ñ•ô8­û…eFÔŠú2,£Ú‹¦e”æa“)Ñܨ †­ƒeÌ夬 ÿ-ÝK¬‡t祥¢ µ¤»ý®yñ$ôÊ„­¡©³¢û(¥¯ÏÄBœ'Ò1ôË‚îx ÉM¾ƒÅX­aiÍËÁ+d ‡2½ËÐQKÑd¢zÒ¯räaß··\ÔpO#|:—W..>qš" ciAiE×KŠ4¸B%_ ¯Vrú¦,¼ï°¾ÛE$d)á—33f“No¿uWßÞyu.ÑÝN Ä´ý&SupùBGHàzýMh}ŠÞ[-q—#:Ñ@‚N£áÓ+æ¾,—78Ê…mÇü>‚˫Ѯ-aöI~®šÌ]ÀMr ²£æý혼,‡p¤~?ó«FiËVUDRšoÊj¾ù ‘&Fï'{¡ÉÖIVü yM¾9 ³T°ý8-\ÕawÍØè*né†=ù> ¾ˆüŽÌ½ÙN–(<.(Ù·†Þ¦Þ¤Šƒ‹vFóµ ªõ)F5˜Ík·š)Ré+¬Q‡õJ…Lo½ùÌ×ÂUØÈ† “îªNÇØzw³¸¡àåC#ü×5JÏNÔ3öJz;{hÙmÔ¥œ°è35ñO?öÍ`{—G²!ÄVxˆ=Öw/+œwÝ—‘k1Ð6ivm¨+¾ 5(˜¤œgdÔ\‹•“ ¸3R~D]£LEС«bZ¢ M‰xú±7R&ª9—‘lòqðq&&ÌÐõëØ©¹àƒý.B[‘ðï$?â¢+öþî½òPÕ=×n©OÓÆÓD÷:(žf!HùŠK´Ðç6¾èª¥ß6òëgè9T÷‘ÂS~§Æsæ“&²¢QuD+2©ø;oTàQ祠š¬þ‚dï½¼Ø20 ,f’NÉŽæߟ4p±ýIÔ—µ€&vã¤8ya´Ù1çíjE1JÓAmhÉ—Ü¡åÓ‹`»ya¾³ûËîc¿ÝGàJ ºn|¸b â±ÿ×,è E»8ƒU„»ˆaE/~cö8G˜ŸFF­Ýl#_Ò7¸…"Æ1v±zvÊxOOf¢ì!¹ f„adûIeÛëÏMfÕf¡)òÔaÛa¯öÈràz+Žfe·À*žÛLÉE,´Š š¡ T²0uÑl1nݪî@aÍ͵ÿÇæ³=BÝUÀBrèuž 5‰io§Q7•ü©¤s§W+(öÉÞBø“hÐ^±_{Þ>6¤,©<à’‡ªC_~ü*D RM_œŸ¾Øé÷á…§ž×òV‚ëdtkÞ§À8¾ªÒÇ¢1»U¾k킾lq› ¸Vâg„Aïê4YÍÀæhF†[«¶ZÇ(ïã©V1ÃQ¢†ÔÏZ{_iÎù»ån¶Â%âƒ_oÐw+¯°ö\ñÇ®vVµ.Œ 9X?™ ‹Üø†f'Ç iy)K~FÑUo9VÛšò±lõ[Yßôn#d¾ÅH_…ĶûPr&ˆ`‹%)¡'‰¦1ž£Ÿ`7´•Þ?·–>$QËRÔ}fu~„Âr8ç2 C'³¦Yµup{ÔS8²Âã òý\‡¾ìÓëvTJ‰Oº“_ól…Ç¿3Âݶº¸]lÃeÞç5¥7š1" i…ìS¿á›’È#z-Ô„qE‚&¶°ûpIé$™\º<ù /xK-k"·†€ 辺îËùeÛó¡(/((=–^13A$M›úFM?„ŸŒ¤‡dµ)•Gï̹ÊÍF¾dŸ—¾/S›.À}ÖU˜ÁÒñ¼:¶JûÙƒÓñ¾~pùW\¤Ò0ðüÿºù_BÈÆºK4FÙš.'kÜdóöÈìe$—m›éȤ k5|Μ†½ Zþ©¾ðšM'¹‘R`èILp ƒ)¯Ö'Þß;^ð:QÝ2@ìazÚYª£¾CÏ€g­r HT²LgR½ß Ñ cÕwPi*{Kü€ îj¼ª‘9î>þNÏ&Ƨ¹BÛtvUÒI8Í)2 àEJX §÷í–§nEYO–|;A¨©©ˆœzÒêbÛd‰žgå1š%þÉ™QJØFŒ©Vâ–ú½íÃ%‚r)õ½Ù˜"}_kJ3qÉžŽ›vTþ¦Í.ê.qZt*W0ýÓcVløÑ9éô^x–^ü·òôÑðºÊŒ™½ídiB¬êèׯÎO—…}l_ž4é){‘69º•¯ÜhÀÁK’Õn:<ÄûÙ]À òO›&šMJ²ø÷gÍBìœl̯ØÅ#ƒ|eäX¼A÷®o¡®i¾6‘›þ|·ßˆO7Ë( zߢ4)™%5æÁ§Æ‘Gqáäª$¦aÚ5Ýúrz Ui>§îîQ~âãl1"¹[n¹Û~ÚkÁ³ga?ÒF¼‰å~ˆ1£R½MiíÍK#Ž ,ÓS›ºH2þšÅJd~ÒeiÚL{}7´ì›ŠÖüÝ<€Pê†ØÍ8DK=“銺`[M¯'K*ãüÒª—po>gµR ðîÒãnexlj¥v uzôL#9ö¬½®q^¥žƒÔÂU…Ü’ñÑ8sS7eÙ×[1¿ŽÂó÷¯¡.îŸzmÄš%: ‰ß&ª²ðR,ð¤XmÌàæð¹ÎLcO6„ùÆù†¾|U¡ÞV¡DŒ>SÚ¦1w¦¾žÍB2fš¨—Ú5†²€(®ôHñCGÝo--6¡“”Àb¼ãøÀ^èùÂ4m–aò)°v+x;NtùÅ3ü²†o€·ÓÉ(ªÐXtiZP“:ÆŽHýhD]T¾lÓ`8ÆCí€_ôr9¤Ej&Çc‹÷åz¹/Þ«€:7Ý–‡Ë{ÀÌa­Óƒ^' jœœŠçŒVÛðcDH=¤/Pª"²`Ý "~C3*0NE±„Õ‚^¬KK?M/užÅ–M…|35€¥ÙËè-¤h‡ž?NpdÇâX”Á º…Ê—UßÕ­<|;ƒ ¯xf^v8zô¡f+,ê «Ñiµt¦¦…ÈôP¿m¥+ÑÙR¢Ïί¸>O,uÄŽûwhÀÕÓfAgxÕŠÿ¼†U-ž7Lë,.„­ŠìvçBø=šoáNléš*G+›zÛúK˜’à2ˆòÚBÿh™ÃÏv& ô HÒѨ¹‚ ÐfjžÍ­2¦W&HKµÔuÑšUíøXfÍ3¸µLSþ‰CjŠŽˆV*‰Mþ;pó´mÁDëqF„kùD]˜º¢Ñ¹Bã60a5ùJ¤ØmBÏ;SÒ˜¿X’¡mÂïú,ŸÖ kд6õgx¬Ï³¸½ë:LóUº*äŽü¿¿*ÁWtxtô0•y´n*òYÛ'SáyFY¤¥”!Dèùj¶ßž¤ZžHŒ ~ÎnjñСCì`5pÌÞ¸TÚÎf)½Ö%rS¾ámÒˆus¶‡Rf@Ô Œ+Úÿ¬j¨ŽÍøøò˜ÎŽÄV ~“þ¸‰9OèþÖYI×ùÙj‘H•÷¨f‡hbղЫÝoô«ïo XâPˆ¢t2ÎRfžj©ÛëвBÏË7ƒc$,ä@xˆM‹Ó—`õÆT Öb?¯Srÿ cˆoôŸW;98üBè±âäÆª6‰, Íb…-YäÈJG³…åÆ W.[õE` vÒ,ÉÃÅ¦ÞØT ô°gXkù´ñ¢žÈïX“ÆfSM3ýÍÌño·Ë©e¡àø,.0ºF†,ua-¾è«t<¥\Ì3Úg¡˜£]+ìû™­f/5ü¿)dØ:½¿Dø·ž×æo®´ÞêÁ‚0Ý©ZƒYš £ô#$* ©'Kb(gEŒç ˜DfU²rD2^‚76ÜbáOÚmÐÔ{ÌÄžßß=›õNÜc#óÑ‘oH!­1Üü¿6Îé/ÇáÂÙØl7Ù[“Ûì&·Ù¶kóä6Û¶]Smm®Í¶Ýl¾¿›÷îûGœÏ9ÏsŽ4lîi_éA…séË™‡uð/±åHÏ.×­tû±ŽÝ¦ýòÓÎøãA3­˜nžF5LÓ‚"m„4|«•  … 2·Ú‰óßUñä†)òömÍv#µ’Óÿ©‹yç§P탧ÓI‘X€fÙɽZNžÍªg©â”‘Ô{(µ"Ò塜 ·±Cµ.§ødÝÅIeÀX#b·½E4¶0»l£T¢A)V+ƒîŒyâÕܤ–ÁU É¿ÕzÏD÷o"`óê/÷‘˱g¥Ä‡[ÃĦý_(s¢çWÙ†ÆFÄA'¨‡Š^ÜÌPb:T™Ì±­*˲ьŽTÞÁWï¿P~­+Ö*Ef¥®Ûèmùì·w¡d°ž*„L¦Œ¯;cZ.&ÆSԌΌ>Xã_*VêYbé™êõ¥*i‰²áýk¡Gé6†î~è”'”õý—„Î;´ ¢)´ÇÀ‰ØÔ¸íF$åæ#Í~R¨%¿HŽ¿…ôT—•zY|„,®¸ñ‚Åz4è•Q"@àÒpÉ_­+ªSá {랈W/cпÍeÑz;·å œ¸·hxLÓÎè}S*öJ ù1­~ã?·ŒK4Ùv@þÞ±—j“ª¿ÖÕ÷6YÔ8 ‹ÒzœâŸsÿWyK%"_ç!Â]ÞG9u„+#yˆ²Ø•G·òéó°s´ ® Á™{H—QìQ5Po{BóÃÚä¯ÙæüŒ…Øùý#_A-¯Ôzf~„*D¯ã&Ôx~†—UÚÎrQpïÚ÷Žz6̸žu¶ÿË+µY¦ÜÚy§»ýp•‡ÈµL2Ä:ÞpxQð ˜Ìqc@%‰ï0MÝzqAŠùEÒë”qoB{k¸zv¢kd÷§Ж„Ûç¹TØ‹ûI#rŽyË&8€œ~>²,×ùÎò¥ÜÅý£é£X!~.ñÂÊËrÏë­rÍ}m Š.¸qþxhÓlØ·N«(†0g?‚*F[ˆär¿Ùñ8òÈö¢Wg£Ö¿ ª£9œ~µa•ÇÙ[N¥aK2jù›E×dI$ÿZøà”LÁ”¥2æósqjšñÅ[`ûcþ.o ÆMšÓ©Ìú‚m•ÀÚ ½/–ñ ÆWÈ2unQm;FxÛ÷ì¸Ô¢°Vï†è{¥Ø2‡A5Ã_PM÷jwð°Ý"¾cŠAMh¬±XeZ^¤–¸—ÏÓ¼.ÝIãNWÁ×’IryÿnýXÎ\bø5 š-šê…'†ù3̽û1YŠW¡i(ºî­º d¼ÝÔ2…bŠš®™»ÿ.Ò„JÃøx¸Â=Çv,²†r€æ¼D~æ¬$ oå ÂAçì,Óö=¨º•·w)|w‚Ç#¸EÍc¿}"Êeél¤Öüã…’«]3Y*³F4ª_¦B»Ú vdÜŒp3#Z¦ÜÉ[ßAò† ãÉä;êóí’ìëšz¸â|û,€€9žiã߯œ¿Nøþk#âßY×,½t¤ao‡0J½´3@E.,¼|c>3Iû µ6ˆv0vaŸåwù¼–+­6ei"FÈä„5VŠ`qcð«ÅzÖ’PN†úr“ƒ–}+èè¼½•à†^»WøTöZ¿#\˜€GÏU5Q‡DéX}D×ÖN\Ò˜ÄQüs¿Xí”ä˜dXS.exÅ÷j MâÍ SèNª!¾†÷7{K¥øâ m» Ÿ ±“­†Fïß0Vìx{ ŽÇ,£ÃH1ÀuX’¾eú[£Žu7y øSÄØEui 톕mãÌèîþG± Ö6/×l³GóÏ›QBk†k‚'˜ä»Ðk‰7.Óˆª$éZóÓëgŠIíª¹ÄqÛ€2q@ÇÇ)½ù}7¡n¼º î•K¦oâ骰³ª”R7Ë>ÂÜW³k#|SÇ•q4ÅEÐdÀyÛ,Mcϵ7ªÕ±}Ÿ”Œ»­8ût?kx û3ÅT‚„^S WègQ:]SgZœNÝF+b—G”aðú˧1x›±äŽ-Kµ‡9 4‘Bà Ï! Œ5§(ø¨êÿ)à P|¿=w›Ü™ü5Eƒ˜¦‰Œ?3_Dz»¥?®"“¬Hܯ£¾I`‚tC‰Ç¿øGzá?K™y¹AiâUûŽ„¨SÌDº*Ê—„@o]g7.ֈʂ5ZiïHˆL«6 <“[ƒûµ‚,ŠHÄs´º¶bD޵úÑœYÂcV{âás¥—Ãîm=Ú"œÜÒʆ’lþÑÚ0(S:Õ ÏòÝ«Ãàò[dŒŠ0‘ŸøÐ\;V9 „±¸h¨› à5™ÿµ€ÚÏvÓ†tššT6ôq×¢«©R”3“ÓLeê–_~‡%ó,º8œ<ÊEv wþ¯tE\DÅ’îÞ!2ÕÌòºe(…LÀå£ÏzGŸ ÒßÉ¥Ç'ÔÂü«+WO £¤cÜ/úoy©í_•³;þ(æ‚kæÖœ›˜ìLÀt³ˆ‹¦•~T È«x¾êï8¼¸RúDªSZVvu®^tzàžÉ ÿp¸Yù ¯턈¿*—>}MjiIT×õ7Çðg>žƒÈH §‹V»‚ËKž”­ «èOœ‘da£Ô«ˆÕݘ,÷}QcÜ‘Ê\vù0 ÷x5ʷϧ+ ´RßjüLÖ­É´ä ããägm§üØü ’ç+ƒg]v©)WÖ<ÒXJæt¶d¥¶‚Y|¨f§Ó¢ðꤕñÏ):ã4k&Ë…î2±aþz!™ú%˜÷8áÁäy˜Ô 7Îa…õâô„Û£UÜ}™•À<†`î•2ÛÞBŸ[±žÔÓïRǨ*àWëò[ªëw˾Tâ3—%à«úÏ_mÀÈ–¥Dã€9±:èŸo´¨uý( U-â7sâó!Ëhg®îð–U!ÉŒGuƒy›¿Ç_d,\*ÍŸ²ãS¥wƒ¤^1ZwØáÞ¶ÐÕ&­÷BfïÇôˆÞ°:<]À®ÏYH¹¹¥[ľ Aeýû5—ÍM~UÂFÁ²Y³µÄýµîÓÜ~'i ¹ÒaÐ>geô©‚+Ü}ô¼¾Èóg]ó..¯Ã„-ðZ¼ÙÍVRé~JE¼œQ8†(=Ý/4V´ëö`SÒMɵ•Ès«ë]Š ¸Ç›?//E¤«R ˆ"‹W+ Yàö<ÃdÃ/©œfu“?mᬇgì§gàâédUêáØÓ~Î7'‡g5;^ß–¹ˆX÷†Z 쓽¨És¬ÛøoŽ;3ùé鿽ˆE%J{¸ÐEöÉ;PÇ]õBœ9i^©Ô·–:4õެ~ºÇ ãx“Ø®”y4g¤mrŽrµ/Z³¶ÈÅ`¬UÞ$ÓÉSSõéî¸óÓ¢V+&f ˜;×§½&xAÉÉæm'Z”S3ñŽXx–¨[À0 ¦Ýadà˜¸ëYî!¢üa#A}qß ?EÛ¬5«ž©Rõå×L¯Z¾aU¿ kõf&— )NàÔ´ÙÕ`”#-Ø\²×œ=«¤íË[Œ4Bbþjb ¿ÒݲÞ@˜‹x¼Ê³P¿¥º&ÛÆ¢0ò e¿P!a¼‘í8/QŠËm¾-êPÀå+§ºDÚÌWÄ=¼—ƒ>žMTñmÏ„…'RúH‡kÖfÆuþBw£oŸZc=6®Œ´®iÑŸˆéçÅܳ AQ‚Îê‡ÜÃ;áÎó¢Ô¸üÄ—L§£P'=bË_úYŽ‚T£¬:Æ<à]&ÎÉ«sØý³-dóü®æ+¹åxéJo¼i'Oª$-Úà ֨Èg§#•OW«‰¢Ô£'‹ÓÔCèí­rí`ÏoÇk¹59–üHÊéòB\VþØDé@ òÈÇŒî¹ýGJFS cöDŒ!Kô­4t¡JCðy&yÝ/D„еÕ4ÒÈü@hì’6¾ ¡ñ·º;Z…¥ˆô=…FÀ$œ´ë’d’*þ@ÆÛ8„eÀñÙ!wJ)‡¡E¢°Â6àUÙo€v þž±ÉL[þ`½zžÙ<†ûµÕF-„€™mON%&òâDJ]&U‘ਦXÏwo"¼†& ÞºW8k£öö®†Âumf^m’v}ù—ýÆà§ Ûê$ª]˜ÖËnÖìãÒ­7Âì4Æ\yá¥U5cNC0Ûî.ðà”‚r#ˆkä ž#4Q–qÀ0Iè³ßH“Óë2W¡X_Mœžy=ûe Ý*^ó^¸7sÅM{b*)úª;þkîí°Y[ü­Dá±W‹r:\ÛÜ£Å=fJ!¦Ã¶{:½¦’±D”’Ï¢ò9%Z?kFmhMò^Æ‹O39‰2µ!ÈÝ*ã«ËÚ¯…¡ˆ}¡KÓ(ÐᥫNzØc"bk¾e^Êxf¿úo2u%è$º¿ƒ êШ.ð]Î…×È1pùÚ´9`S§Íx’IáýAa`6ª’D›%ÈKr½Fl±€ÞÄ8?N&;]¤]ýò»ò£Õ‘q$S…®Îu' ‰Êä‹Ë8B¾¼o"IÚPÄ‘Ñ |¼'tŒkü¨èOê?Éýàüe©Q…Æ*¸žøí'ÐuïÃIH ¾TßÁ´:¿Æ¦"æ·ª¹êˆ0Õ=ŽýÀ=œ`HŠÊe@’â#œÅ•_Bñ˜ßôxáŸ9‘IóY[X¦õ~'{¶¯V¥ÿÜoÝ*?äw+¹ÑæAK©kn&ñÅ̶ƒæ§Ûj„ʪYÕòæµ.mî ¹úK‰YÛl™\ƒŒ†€ ÖÝ ]ÿlqÕü .§„Ô¦0ö¼Åf¿œì{ÀR§;$º`î…«Q£XÉ ºMr£Ur³h¸žÌòÇPfûýƒ‹ YÍ^vTè•øü¾Ç%k‹1Å4Ö^¸úc²ÏAø»dÂa€6u‘Ö?—ë*? WNþØu ªp9Ƒ͉€ùA³´¬´]”wƒ[>O(eQjCN[E Ù=W8ífÉ|æ óe¸Ôh…ñ{r#§So@•,’}'øÄðAÔÕTζÐQ­™ùÈÄetJ"}TòÃw»š]Û@^g̼qü—Ë…Ò²h0‡û0¿­!Œ<þRË|š±ô®Ò¦}Öø#z×mvØRœ”dJ÷A7/`à×èºwÃ:Ì’¡»£å<µšG©x9þ­Z\d†˜5¤RôT%Ûûê%OwwÑ0±¡€HžË±N[É>½9Ua<ሰMâ%®b¤fýÉj{uÍÊC˜9Þ¥û¿p˜œC™‰xRêQöUŸàñg7¥äX2$®Qr^!º~¤¨ÕÁ>ªÕXíd½ãôÞË!¡h¶,Zµ§ušä—ìp=Ðj÷RåÈÏ':ñµqYãÙ½P<“ð$ž0\†y·=Š8´Ã&€úÍä⻦•£oµ¼ÁʺTpt cš%2i]M,!v¦Ü ’S1J E²L$ãŠö˜Òï;`¼£¹Q9Ïûy®WæèÔ¥Îw£|ŒÉFº$é3Q¨2£èÌÉÝ`×ñ‹U@FÅíÒ{³gÄ~9rÎÖ©ëÌöþ&I¯¾Ú3õÇè¨W_:ÍŸÏ%° —èÒÖ”OìבϥÚ,t~hË2¯A®ØYSð »m8U|ÊæüwïT03ƒ>By0‚8­n"$u‡_«‰^‡‰Ñ'Šã›4*#Z²VÂV”úÖ×$ÏŸ‹{yë[~ Öbc=T}âe–ÎîX¨°ÙN>tN>$ ÄIRFÝc0ƒÈË@ÝAù“~uRL5<Ñë$+éÁ¯·=> ¯Ú–Ôæ‰(ä?Tu}€$X©¾œ:©ÆÿwÔ¶Pb !DUJdtÉ¡J¦aþÕ|J)+Ý)K±D;ª^ó4ÿsïá¨r˜'þùâþÄksÏ#+5Ž,„ļ-µ‹,©ÕA—àHü´‚â¢\é©D‘R¸TúZ/—פ¤h‰,Zn*,Êq.p!¸já<«ÎóÙþ ÆQ \epPJ–Úš"ŠÛðÑ»¢_éì‰FTMEê½GÞ ¬Ùb@Ã;B§ùjÁ­+  Íc}gÌ‚Ž2؈eÚ–K‰²¯v+º©ù§VŸ‹`•ÒSÑ~ûê–ü‚ÿÅ£¦zDÃ~jÆEæNç&s-:ú?^ (Š>C!J ›+¿YÄL÷Ò¥Êò¼ð»QÓNDœá™àßdðtM˜­F¿±Ñõ‹ãmôÏ„}ñ"³NÌhâ†Î”s©;À‹\\ñv ‡1“€HÞK,w.t±½2£¥»ÄÂ>àMsü¡Ì±‘ä)뤴‰ç öuÜÆk¤ Y²)•32jETUÀœŒ¦Š7pj@¦Ü¥Joã² þ˜œ…™’xÂ9ÁDSÏ¥Žú)'²Ž¤ä„­qâʼ“´’¡&Q“Øt‹ÒcÔoÿ ‘¼§¿¢*ú‡Þæû}øÖ·̪ª¦ÞEù–¶9 î  0°8Œùô±–çÛ½%{zwÿ·[ez hWCÉe¸Õ8[üÓ9àÊzñ{ášÅ1ǯt.„)Ça–L•$lbÏÓ7(—X2@XðÁéFÀð¦ÛœôN¼Aø›i?ZdÓKˆ8d»àá/˜[K^Ãi;N€dš;žiíFpg>uH4j¼]3á—ôöÅa °8O‚ïG.ik7ÛN꟢„ª{ÜCÿáLç*‡ÉÓ<†Ž¸c¦d“gßëîb+Á14d´aZqŒ䢼›fp³u}€Âú‹7€FAZ>¢Vâã3£Ì$.úõKÝ2òl$’ÊiÐpGjÞÖþ¨OœÀ¼wõõ¥ùwÿ¶¾ú[Í]<‹°`B…ãçœå5íó¿¿]ÀÚ¹þzàÌóœoB.oÁøMf‚‚Åùܪ)¹MÞ'«O?²æ–ø(÷@oYæC»ýô@K`LÅ%D¹Æ¿0Þ0ÚpÓ_9šú®öÄî)§ú]x(s£-x}6£},P‚;NM à üJiH° îJ¦ p{ËÅy›[ŽÝµTbR¢€òb@ Ú0&H뜠uy„ó òirV–d&>^—.]ì š¦ Q¼ÅŸ6Á™A†ÛN0“³]Œ•¸ÅqæÄ·ÍŽxk²%¡½ÙÌÊk=Þûå©ÇÝsZ£XŠÿÑS«Ÿ¥2=­ðY+)}Cç'Áãñ¶¾sSY‹¤ç¥ùnh„‹'-,¿•òB uiÑO¶Z,ƒØ.}ò[vœIÈŸûuõ„h÷ùÊ4iýT²¸3Ž :BüîFâûR¬•[:b6i—KKŒÃ[§Ÿ3¶¸ÒËT¶˜Þhf›Æ?"?½1<.9ˆˆ¡w||Éá+]}˜zæºù†dŠþ(Ç ßÞ²îeq”h§1ÖYòÁMÉUÉ8[;¯ÊOÊ~è³Bh¢s?ŽÉˆaÉ+¼ÓÑæar#msæFqE7}Òöê(3Þ-c£ÕÞd<2³ÇŒ¾×5—&A”œëëWDŽؙOCrE¯Ü¦O¶|ùíM†påÙÁÉ‘Ðv3]«]«gIû›cÚ ŸW‘LÞJêÃl@&‘ÔÚ¬€uã­+™¼Zêô= ©¬ V×øô §t¡»0ö"£†ò½kg+ ¿aÿopò¦«^zmE-¸~uPo4]í½0ñ¹ÐÙØ•>½Š¬^·wÒÐýX<èf_—Äþ~-ϾfPÝ~NûĬþ¤#¤‹H«Äõó’ ­œßÃJÁ”Xéë³÷…†¾8ó}¦ABúùîÒG—.»ƒžN «ŸÐxiµy1¸­¸O0fÚÈ/'tG'L7é|ÉN/±´$⣵±r‡î½ÊLjêìŒGæ`lН—·Ó9¼ÏkÌÓ bÊÄ(&üëz|Þß™=:“µ”£`®ßÂñ'¥0¬ŠH”ŽÏ?šN·Àƒ{}h™‚Feâ8:Ö™#½XaÕ|9p éÍ—zöÐXÐtµA+Ó lñͧëIj€õ?mæî»£ÉQ wNmÆ%9žý9%o\ endstream endobj 141 0 obj << /Length1 1768 /Length2 16964 /Length3 0 /Length 18085 /Filter /FlateDecode >> stream xÚ´ºeTm×6 w/Npwwww+N€`ÁÝݵxq/.ÅÝÝ)PŠ×Rü£×ýèý>¿••™lßsœÇ>g²*2U &1 °PìàÊÄÆÌÊPTÒ0upaceR1³9¹ì̬¬œˆTTÎ@SWØAÒÔÈàqµ¨˜»¾‡:ØYYù©2@ ó»Ñ`æPºšjz9Ù´¦ÿª`W&3S—w3ÐÁ ä¤{‘;z9ƒ¬¬]ÿæà`bú›éo´83@ÞÔÜìáb ˜:X䙕˜Ê`w%@ v˜­Mí,`K€&P ¥!¥®QWÑRÕ c~O¬áæèvþ^$44µd’bÊšR 6#@FKCóïQèðÞ¿#@YóÝþ·Î»ãßp%)M1M=U)6–¿×`¸]@Ëþ[oÔïþ»µ÷PKg°ý?´Ö®®Žü,,ÌVn.®Ì`g+fG»úÓ´¹<Àζ€÷³3Ðø0nïpºZÿ•àï¢Aæ@àß ið¿ŒöïP¾½ë]ÿ«±w \ÿæ´û—;Àü_e¬M]þ‰UTUUØ›‚\¦æïŽ®¦®n.“tïo Í¿$ÜœÿÖPúO“ó•ùÏÖÅÁïWöÉÎÇÏÔãßWÌÔÁÍÅû`ó¿/ÛìàrquùWF ÀdüÛ½Ëß59ü£SS–“–ÒÐdR|'ž“øfWO×¼ÿæ“Täð²rØø8¬ï$•r°ÛÛ¿wí‚ø>IÐ;N®`g/–ÿ‡×¶`ŸÿWo r°°ü‹¼…›#‹–Ã_œäx¿«ÿ[gt°€N §¹5Ëßrÿ°å¯ší¯ú?G°#ÀÒÔÎè²¾Ÿ}\LÝWg7 ŸÏÿ4üo ‘`2w}'úû° þ“]ÎÁ àû—ú½“ÿ4ýhÿTº÷)µ;Øy,€–ˆ,Ê`×wBÐþÿ3gÿVKÚÍÎNÙÔHûïþ»Ÿ©=ÈÎëyþ›‡ðo¯´Ê`g{S»³\¤Až@ U«¹õ¿€ý—^ÎÕôûbVv@û¿”ZÊî¹ï»èïæõnâäþ7Û;)Ím€..NÖLÀw þ­åwôÿ6 `‘‘SUcøX󛔃9Øä``çâ˜:;›z!²¾S‹ àÃöÎj  ç?\°0;€]ßCŽn®~K°3âßõäæ°ˆÿUý#ñ²XTÿ[b°¨ÿ—ÄÇ`1ýo‰Àbþ_+€ø?D. 舼»ÿÙÞÁÿCä°8ÿ#þoTÿnÿ°›õ¿ù½ñYÃÕl ÔY¼ßþ‡‹’©«3ÈÓ€õšlïú÷×~2ü_¨þ{ªþG´¸8ØÓ‡‰“›ÀÄñNØ÷¥{?°qqúý¯XómSÿŒÅûÒý§üwž@sÄÕï`sP›ôæð ©¢Ù¯0T|̧U¸ÂºòIЫY³„x’ù»ä@‘â ÖÀlêb°¢,¿¡jC©.U(ŽÝëfÛçê™[ 5Ñ=S%BT)±‰¼iß3ð?ó&V|ý´6ŠÍ-[E+d&‡½K!<Œ.+ʹôÆœÛw±€Ò)·]{rtz§,ƒˆ(º›‰Š7:DAÄŸ¾´@°â“–Ý)ìdØO±Kú P=ljU#l4„ƒ/šV¥;V8|+B¯™Æ€™ƒB¿±+Œ,²iöÇ2o÷&û™üH¦råðcž S¬ ¹#QØ‘ƒ‰„'”{_&?2ò™Öä7²’ÏìÄбÅTðæ"E‹¥Wܵä¬cj-,•lXÉ+øCXÆp.9þ̸AÉ-÷58_Jä˜FùÀŸš• 8ëWK‡m˜2žöªÒ¡8#ˆ;F1qvZ_B9ú'ctf÷ò5ÓJ¢bḂVꥫØJI“]•š"Åz«¸ ·ä¨¼G–ùЙÀêþ†Y(IÕXœhd |ì'eìæ"Èd¨Í öØ>:uOùÚñßO5 ã`…£x¤QÜ…Qaa‰ÜÍR³“áëEöÖ¸:£Ùà²Ö·«~½ z–tM9?gÁ¡ý1ivÞóµ7¶Íã‹`OéÖIø¨Š›KÕ[/©«ÒtkPO‚ µÂ—2 âA¾â¸«äåÓ%j«z¯:(Úü*¦THb®9«C@8ûQ2sg±.ãÊPaθ Jݬ2þ2 a2 CT=ÀKèµ»‰“f±5*¬ÁõËŠž¹4^pS{šÃ’ì>ÃÍ´öš%#Fvdƒn¸š µ1z›TŒm¸¡Qí’»¥K™<§28›íK ¢•œ˜¼ü‘­întž¶cI!Áºšœßu¼Ÿ‘S‡‚QÌÂÀÚAŒN/ « A­¥-S¬4U  GNà£áå&ùýüÑyVæŠ%æ`[g‘é,XF¨}¡Ã+‹ãU¥ê\iñ§1I‚R†ÂÞ-½›¿ÞL‰{¸÷æ\ãæwS¤oª´õVsïÕ϶õ0UŸu7 €ûòš&Ôë7E&ÒCÊ£á{¦ó±Wc/äûéÖ%Ë6QºGûZþÕ˜Æ~K3G(ÓŸr~¡:&s÷š(¦~w!^LÒíSu_Yà2òM3„Gk¡}í7G–œ>¶cÀaQF)ÇúmöItd·–*³vhy([ÃÌ ×Å·ðO)+æíRr3•q"õêëÒ”ûAòÞ»c‰/šÝ1â1¯ßwKø4lÎð¦b³HÓ6ÄùU’Z|ÈwtÛ?2ìñšîD×òËŽ°ä:Úm£ví³åí,?u jÍÁØHq.üÑI`¥¼i6£ Q‰L %îv°ý…Úø‹L}ÒÙ«öɯaÒÁfìíR«.bL6ür”7Õò¢êË¥g´³Ä´4Ù„0PÖǹD <Îà Ü3óëW°:Àwh‚ôÅ(å@qÇ‘;ßA'ÿros3s®¤týzx9¯ú±"e•¸²X”û³øsçæ¶Û«~„ËãCåìýЂ2ƒŸ~®Ês­-úõ" f SV.%„ÊûÆH7qpä„*yŒ_ÛcT¡{I¸½«ä»$éÙ_ïæÂøÑ1F>˜Ø®ÒîË4}”—ÊÏrUDÉç7П‹Ïtz,¥ úáZm¶Šs~T}¿“Âq§eìÐ×Ǻ“œ`.=ëX«I²ßŒEO—]¦ÓUºŠ/@C˜¿\n]¬Õj:øù«­B³-å>ÞúGýÖô¥O}wñ0SlU4Ыtž"˜½‰÷{±%W:Ñš‚ši) kڎκñ³£²ìì_!†ÁçT§û[PEž>kÉRÚd ?jPL8ëˆ^D~7GR´=H¶³ÈÅd¬‹Ÿ¤içÂJ–ι‘Ÿìyò6Þ3(#vªÇŸô% >AæÓ#Jï3íá9Œ|:í­ˆp²6qãc.kKmŸ EÝM²€vr‘„)•'xTŽP=8Õ”gp%[Û8ˆrïV]”ª‡ˆ î[Ùyð—‰è`Û^:)Ávq¢,ŒYÇ2dÞ>X“ªã¼z5=0Ñz-øÒÕ:Ä÷¸ ÖYD‹BÙ3 õ¶éGÔÙœ—î‰>œÊ©‘ˆ6âwåü¤ö–véP±ˆò–¥\—B+Œ´kPcž%QÎóþÞ¼¯{õkh]1#²‘OwGP4~õ¥¥ ýj/c):^j‰M†\nôeÚñ¦H|t`ûÔS4ê `‚Äê´PñÊMêmÁuƒB¬€Aï®ÒÔRØo‡ÿ>Ž…|K3ü¬ûØ•¹il;ùàäZ9£ÜEË­{2“âZ|©ê_?”„ºndi´YD ™[ËYXÏÍyg”¦ãK¶ÊÃ…ÀI¢g ïóÊ CR%xÐÛ‘mó†Xmç† Á†ýñioü5^»æ6ñ[ÄÒ§~]½cmf2Ç®yÌŽ»QλpsN—ÕÄæy…í›xW*Vq/õYg–iá®"õXƒÐ}ÈöoÈéº,«›ænŠ­³@Þå¹UÄàó§BrqÌßðöáŸäHª»É. kJ ‰Ì‚1ŽAaí²]Æ´x[^Þܦ¸@"pʺoõu]sÔüYg ¹²)KæbÚÞD¡¢ðþ<R_k¾<¯ç-ãˆ2ÀöO4L$5BlÑì»'¡*RµÊÕèxÔ™SúÎ^-«A-w7µT>ˆû!“Ìš?p‰œB╹g¦ÒA/À&_0ló¥Àý˜}ò€ÚDS$ïVý*9:ÞÜ{uP˺/fšôáE⌌ŒÇ"ÌÌë%Ñ,å[Ûmdmib’ßñ1C%@Ò2@Ž™ÿå÷Û3,€©àÒæ2gü…bጱ¬>žÆ¨nÆñqlãçCS˜uÁS±Aðë.ïþº&Ü~]ù]†Q8åžDe; ûŸþ¼´#æhïŸ5Á¥§Ê<Ÿ“’£\ø~¿3×Ü:HŽÉ‡š,öov™dtð‡9_£^§G3PÎÖ˜)6Ë^ 2ÙÛ †ÄgÒ¡?ŸÜ”ÔØEé? ¡òl‘>‰²¢¤N*@ñ¸I‘èËlDG‡Û„””]a¹÷0Ñ‘tÆjYeËvC‚SèvH”ëÍ`3o¹ùü¤û†’m!qÿ€#Ë~Y"–S iËsÿ2¡íWÌ=õÕCøÈ^Ó±LÑ«Ù/™—ÚX\ ùW'[¾¤rjŸÌ ì›GûHN>[FÜ ™ãi›ïb†;‘¡8ˆ„†;^~:iYvn,E«Tñµ àiž›ÒÞ)þ¼ß0N.«>I†³‹HÜ}7¢ð çÀí´+οΎåS–ÿh۸ܢâ¬ÕÎíQ°Ìñ¼Rt¼t!Ä´®0VkÇ&ú{J“FÔ‰UÎmpŽÉàGÄä˜ò_މóඇQn›Ë}"r-—Žü( ²'"S|vy ¤l÷Ì|™èšJ½*¶.¿Ó0”n;;ŸÜõÒebñæ6ÿvl7^{ƒÈ$¢Ù·ëÓÑFÌ;é9 ÙzvHlœAáÑyå=âr×oŸ?%ž&Œ*Ä5)Ygû1 iþ|<øÉÜæÁºÈW⣹±wÁ…ør‡P±ÓÚKq¿x@ pÉB·“¢ÙÄŽaÛ¾Óx%–Æ#4Zv²ºÅ²?ˆo=¯å:µŽÀ…]<ù~¿O=_¥ì7鳂Æ'ÀúPœ&ŸÅ•ì.Jeˆ‰|±I9þMÐLÙ”0i\}ò¨¶è¢=‡ä¥.+Ó…1e±”ÿª‚Ê„¾9"LLœ¡¼ÛÿÑz!Õ–κÅì+ñ鯓ªJ;—ô’DaXoj£v‹,»Œè:”7ÖuNŽfž”c¸©Û3­Ú;1›õL÷…¬@M6×K[e9AðXZsõ/çŽå­ÏTG”–ËWUè1(úb»ÝÐ#Òé¡OŸë2yžŸë8—"”?mJâL;ãÎoƒëS™•\¥uËÝ'!-|Z!©ä'¾nÁŒ¹WE&í£&ݲèß;ÐÉþ¢Ñw‚¡CeF–Rgƒ´Iø©ÅxK {„CùcÁ-sà CÉ\^ö# W¬ýöGþüGvÛfb…,²GA)ƒL9RÊìÌŸ­³åíÄí/J×DxŠNî.,º C wë#D•¸ÍnÚÄ+øCbÿ¡,¥‹ÑƒðõƱËI6›fò[²©SÝ®ñȱž2äöáôέé\ í*˜,©¦iñÌ‘OÏ4É ]™ÍÑÅ(ø“`±iÄJœãbå.z„þŸ6Íô·/c Š?¤¶ÖÕO‘N¬IQâ«›91þ8«óí€Åéëü"!úV†°tSeš§Zn'”k¥´nT)ê<„‹êÈùÍÛÑ‘šœäÛ´~À ¸^£j…pÒ kjŽæ wj>ËyE^Hiw}?¦Å-ÖmeÂþ ioS¡“à3‚vÉǰý%á¼ïÃyåùA'ÃÓ“2äd<›'$°ˆçfòÇ í 5Ï`ÀT<ÔNÂÞúoJóê@<Ò@N>}ÂR¹Xûu—”ël¥X/A71 hekÙòO˜üXCqytßz¡YB.%Í~Lô\85òÛÞ#»®\È„„ÚÓ`dx¶rRbÍÙÛŒšŸuYZÓ¸ÈÖ–†ýVôËFz—Àî[¿ë<£Qv"œ$/äHãjp‚‚Õ„ÕUE°ëy¸“#Ò‚pÊ…Gnt‘Û­TQ©ˆf'z˜,+ë1'riEœ_!Ä2- ¹$ZÍQÍ©/—¶¼Ã₹XÈ—´þBò„ T?íŽ>k÷ª$ÁÒ±]—´vóíþ0¨”Á7f=zÃþ¤jØXdøË|úÏL‘’åùF„ˆÞŸÒ|ÆWà@3r}RuÉ›–ñá|\d'T·ÎSõ¦q“[•¹V?Õ×Z2aDäŽ~zÁMxí®pÑù¶úPåÅÁ£ÄãRôˆä O Ü‹ýòÇñÁ—•_“FÃ#Át3|M˜ì±¹›Ís»ÀÛ!È]ø°ç–ï²D>H ß²„òö•cªo(<]òút7.W—;û{u´—‰:š¢N ëàf0m³åýìø!YÏ”ûG‡5êYbê7¶g¥vÈG<¿½ýô—ð±•#ÇM,ëùkXóNòšŽ”Áv±0wò–Ã!Wó–ÐÍÌØ¬~g-Zʤ ®3¢œ9ˆ'IÊj¾øŒhxç{"‡CP½€>”0†1ÿùÜ?éÈ2ô£•0Û>âMÇ–õ¤(§’ì—§¤¹_‹I4ƒ u½Ï²ÇŒ›žªlZq³•—^.õHîÚ£Íùðî 1&?cW(æ2³«gZ’QÆYÑê8–ô8‡¦æùå'è­vza7qÐ}ׂ‚c•òñqLSªY( ?•3¸ŽëÂuFªdÌJ‹h‚[·CR_Íü“n±ç{÷uy—ƬqÝt$Má‹7¡èu $ùCEsëèô­-BOp™õT¿œ/°ÅÑõ’äfþЇÚ^v5æ ¼É'dþÓ?É!™A(¡Œb«F0ªð*¢EWhî—\jŒ± ÑÆ)Ùòd†¢$+S”³VR­K&ÆÌ<Å® ˜ÕZŒfçÐÍ/QîØv>Zß.ÙÿÜ„ T[I9´¦*ò'ž÷[`è©>'ÍnÉÅý •†òvs݇~ˆk[b eUž÷àWžÝûB_iØi«D®ÒÛõ¡é'$:ÁoP§s‰q©Ñ³]Ÿìº­•£RÚC¾1Ír}¡T+QK¢°F¦n+ÆíYFdsú*Òù´eª‡G(ë•çÐÜ8C[§Å¬Sýñkn“À(ùÅåAò¾Xu¨µ;zéœÎ1ÿßßÂ5D›Ýs[õ_=]i)DB<~n Ûý’ÁuÝ?á©J¸¿42ó¿nÜ e\4-ñí¾u¦­RlÚÈâßlÔ‹ñXE¬OŠ‹póé ö*E‚P%½“zj8Ù[s·ÿ/| pýºAíñrh…J/êÖ+ûIûHöÖØqG!ð¬®ß_lûä6‰‰pâ…Ã|Áý}{ ŽU„Å•C8#>m¶‰¥öùeà]xo(Ò»gòˆP®9úO>»‚Íg;vTÛ«'pYCê!>!x›¾ä‚Ž 4zM4ãåÛaxؾ«ââŸW²Ö7ñ4ÓA#(Ñ"Ž_fè8©åÉ §oŒôºdBؘ3G$Ög¨£=©>ž»aáì³Ðn/gÞ\fܺT‡ÒÒîùôlºc5<ÓVH9Èé´%CÕôu—>$WK²áÿ‰WËTò­XçŠRÑÖHœ7Íű$ò§pY¿”žŒEj B¯ŠŸ[¢…-„wÖEec…¸;<óÇL:G‰†{mׯðÆ›S“ Ç8³åüä¯+z 1âHæðè5O}ìùkåôvåíJŽh¿£?šœö‘> ,±eáP–ñ$D•5áò è{öÏ#ïK1¹H…ç5*aM9ë2„ný¬çÌSW9½»Âmnø°6¿)(Á~¶U¼ãdÉ’Vãé †g?ÿ¼œÏC·M1˜µ!Ðfhþ›â ½ÎäÌàCð¢Ó\kc¥Ÿ0BôþœÚ~< Z\™ùo6† «Á0V&FÏžÃ/. mý»ÀAÃÖ¼\ŽWã\æL„ÂJÉVë:H£¦Òà§òðˆG3ˆQµtï;EèÃiŸU6»n¹±ÝawIgZÌË >ä§ÑñáWÁz‡€lðÎWùm†'-I[Ysˆ£tãZñ>Âm]¬ &o™·½(_NdäÖ1øRŠFtÙÒ£òýìêJ”ßó‹ ¯Šìix 8¶@úÌÛRÉ9Ϙ!‰æ[jÃAða+S_·Ú‡kÿa#_•™_\˜®¯îñ†û‡oÐRòr-øí£±f¡p¶«mlr&öÐVØIîç8 ëß¡‹ŠJÜ“dþì Xø¼-›ë6 ¤ßš.¥Q®Cx†Eb /~`™ìÂYK·©Â 6sÆø_]´Ía»û ±Þ¾Í+™3CãáŽú¸w†Qú–[ KN¹aϬæî¶Ý/i[63­dcßÄ(ž½žÏklBè@gE°¶—î—!ÅØl$f2¿±fƒŠ=¬üáë@ù®“®KîQ>¶"¦â¯_²¤ó¹U Qí¿Ü†o¾Mܲ÷P¨kÝ´yâà‹…h6Ž-žoýjRTáµüD³Dí¸s²kÁÄ: ïþ$Wöþ„¡jË@nÂQ˜~,û%Ú‘“dª†ÄÝÀz!œ¢‡VnIØÏÏQ¶ï¶M#[CEJå4*j9-=gŠCGâu/‡.:Àøk"¶ÞIÛÐ2;-H7ÅQ°ÚZú{ÄVDzûpµüüâÒR”xôöµa(Jꃛ¬Ìn\àœBW"ûpQÅô‡—8¯Ô{ÙI—žêsÆ1R9‰.³“¬#–o$>µF íh4¨—#éI´g‹¾*¨(ûJxv5\0™OÔh½¤'o¿ñdø2/©7ú…\Q4nA¼2áþ,8iuIô]á¤] |®˜Û`; ²X5X)ÙÙ)!¸¢µ ÅKÕ%ro»‰XƯƒÐ h@\Ê^7X>Ö¼†sebëmÎÙktö O£Â©a¹ ;>Þ'Qòñ³l’Å£hF‹òÕ¦CøZ~+oÛT¤BÄ…¡ÜÞ[wm^uJîÿA¯¼¹ÒU㥽Ð:7óè1.ÂÉ-(i±ØAšëÖ ìZýÛéÀÏ, 0m2Wžé0µnÊ+Cw¥?eòŠ-M'‘kÝТþtW ãp]Qe{|yG½?ä6ŠúËÛP#ùÇÔOŒHýÑ>D TPòT]©26‡E"Ò/Ðm(ÓëÁOÚ®4צûPø“'ëÕru̲e’¥ù Äec&Í2’tŒ@å÷UµÔ¦n=™¨XÆ—B³¸(~ö1ÖÙ± Ä5˜âp]ì_P‰´QUù¢zhC\ty#ÅqãæÞÈySž„¦$ÕÌ¡D³dhò€^܉±~Xq¯nòæ´Ì¬Ô껆éÑíà ¥­UŸc.ÿÞZ§ Ë%˜(ÓÖLD»¬£:›8õAá·bìØª¤·×›á,Æ~ë’ÙGIPd*4Ÿt77+ýPÊr. ¢CÁ²É6‹'HZ°ç±UÍrí4;G’U¼ÄL!¿}®S—W•ÚtyúÜiZ–lOóÒ a1méo1À»^CË)=Á£þ˜üÇéC?ëGÚö×±rfÖ¯ePÝhLº{:¿¾ ïÓ‚oÕ"Ž«u ?£ é%@ ˆÎÚ¿[Áï{¤Gm •i˜U P„É,”º¿– Óá)3ÑÉ’ïÚºßÁ•€/2¦uì&éÊL´†Ý­H)ÓŠr öš]ÖîSØ~yÖhàoþvmô¬ƒ ÿSž(É›~ëu×ïS• I—ûÕ_Ùf3ïÁTæ^•ÊngËBlm†ÜV¯ 5•!»M¤ÄO†u\ák–‰tµ©¡u§C†Rd%èÁå”np5*ÔC¶£($4ç¥;4ç„ä=Aã-³Z˜ÁJ[lg£ a2éH}CÏß!>õëW¡|uÙo¡%SêÖÎxÖS»fòQ 6h¨Öñ7úþ'Oë²gÓƒjf£ÑIädú =Lê. Uy1ÑÌöx”üâO¤'Ö‚ïÀì…hxà–J¬µøoŽ'ë<ƒ£›Ø½SÞ¾oˆñ*âè{æuðÍhб8ÃNdSÎ}<ób*Žñæô—ôKKp[§BæÓÄeqí=÷†ÀEæ7z½d¼V'g (¿½Œn¶n¦Š?\”ùŽg|g $‹áÁ“ظ[oŸdl£Ê¹ù…ª–ɶ°&yíï-¾¼ÌMš°ä²¸ÍnŠó%@F޶MNðÉùš3I×cn$5ê×ÅX³ÉÊ¥sçˆ *©ÿãwТˉœ%M:¹´AP" qoŸ”ýw®k%.ŠÖ\8N°†|Kb®¼^… ·©¦Ýr¶ìý§®+>"r+]úÂ;Q.‚f˜$ ÌÁŸCN¢³œÓ¯Ó-CÙÛ•÷ÇMÏqã¬ô¯ uþ³~&Qž¯ ¹L«Ù–xýS2½!¨~_EÉ ÔN(´^¤ºD EŒÖωC#äô-‚Ú~­$}…§~?±t8FNʹKbà•X·¨­M&¤¼ÇG H@ÝÙ€ õö³~))=‰¢­}qF#©ýÙ)öÇŒjK O¿nñùV¦S^\š?v/áŽFógÌH`;3ª¼rŒŠVmŠoã´Lý¾£±}ËÒNk|àŸ­ºéAÓYã’üÍ-¤ æžàÙ$_Ž;¹}|oG–*ò€ÅöÁø¾UR¡ô F^~ôoBÚoì–ëÅ #8Žôì¼Ã›Œ†- ©˜ø´W5TÖÝæ}£^醎ð›³Ó°–w!bgÖã´A…Ž×¥‰|I^jk]ï)‹™EFþå€Öƒr20YJM¥)T.Rø °œül[î½T3¶påýkÒ093Mø±M‹¾S»zî‹)ø—ý]iÃý¯hÖ3Æ™S=4!f7K3¯¬>˜^"ÜV“ó©QË›Áj:%õ«Ì‡…Ëã†{ù‰À/å2×ñùÓb]Â¥è5›z͇‰È´6ót$àrki|)!Ú?ä¡f&Ý'ôH»Frå8¦Y* lI/ˆ—ú°Ï-q5Ý,‘XZ¸¢Ú Ñàë"Wåcx*s• †R%¶\燬xÜSNéfm(PjžÖÏá¾¾0ÒÓZh6qòT,¯ ’ýxÈIz‰ñ…g°SqfÿçRû½Ä-XU9ÐzÔÃÍÕ†cNt=õÊ¥ùÑvµSE²’OÉ”‘êŒ9EÔË0¡L»Ð¿Ÿ_J;¸x—Fñ ¿±5Í#·NÄ'*»qI"Âj¦È¢ý ÒF£M÷°Lô5õºøw˜‰x5Ž˜O_›BAyrÈJ»Ž1ÿTBï¶e>®è" ü:/BžŸ\ªÏg÷)“¯Û±p§ÍbùE¯4 j©€3yÄ%^ø»ò§VC¶­ƒQãõû© óCÀ¿‰„1Oˆ?sµýNÁ?Ÿá å¶Û–Ö.ò"!kžµ¼Z1%Žª ˜Xxç jøOöjnÿ¨- ÒŽ˜éeAXýäZ•à2ÚULä= ·T×öèù€i2ýT½íŠž®%ð¶D¨™¼&׉^‹´®ÙA ï Ošâ5 qݧ”Ô…]Q/úÒ±ÿÃU=Ø{hc8ÀÀóS«"•ZTâ`i ¯\Vhf“`cèdØzs»ô@ ‘ñLOˤŽgFvJÖn.˜™RIõçkĉÀÐÒør*ou—Ãr7\/aCKWÐÉè(ò©`WSi»‡ò¾s»©1Ê%,¡‰m½Ž‡k#xVf†„Côg^±ù·U­r‹';}ÏuÞÖoÎÛŸ4‡L ¡`©t{ð\Ll)yç´äòaø3U¢Weg¯[®£W¥ý¶*Õ®a+¨W®¨ ͼ8ØQøPd8Ø·pT&‡ÜÞ¢Z?nðyá“vãwš4¸ÀFÜ=kÐã]×5¬œŒüL<ŽlÀkÁÉhÄ¥L¥¸ñ7bÓþiSš9¨=¬ùÐ…ÿ“ÅEéGV ¢¯¡è´ëóUERæ^ÈýŒr¤¼œ;X”~þî[3úEfù¬„ŽòT‰|yBÙDö9joç— Þw71dYSú»òº*Ÿ)oj-J/+¦½Ÿ<¿¸±½<}?Ýô“áK1øÝ NWkø,ûì]§ÜáP @ó­^È'±øÁHZ¬È$Âzàƒ"ZSóJÞ女»„‚q"nËÁ®ŸnW×%}¹ÈØèœµ{åo›‹!Ñ·s a鯩†ø‘E+¿+Œ˜/ꈲq•Æ]!üƒz×”Ý;‚&Bça"ŸE¿ÅG_>ºåß& ±6ÏmŸ5UÝ·yÔ‰Òm,=¤p¥Á]bòO·³‹œ‡½¿­kÝb¥¿í‹H_‚È7Š)J%¾šú 4ÆÅp§OOF_¹ÞµŒËi©º›ôãúŸ™-9‡X… ‰—0L7.GB*ÌÜ–¥”BùÞòꮃ‰u磨[ÜêdH’Ø;zrЦ»0jCMHk¤”m¶ü€o„¤Ï|bùýæ½ï£1w<^AÙ—»i ÏÀaj ³ÒÕ´B‘Cptºú¤É°E ··ýó«9­(%í)Z—¬È[;HÛ]~mÓÞWØvË7N_,aV€ö1uÛYŒÞÄž£×%—´Â®p?Õguº 9’Ù7†½FIYŠе_õÙæñ ñ¶Ò•^ JÒ<Ž¥íTßúMƒÝQ^ŒIB²üÀç]F6¾ó’…úšâ®='|ÁËÄ(ü5vÇØŒzÞP!”°ëͪ 8®×Þã"b—t-T]ã'@cçz¯ÆŠõD@1™_ŸU­·ÞªYGöª"žŸ»ÿf˜:âV¾_U÷ A2ÕoŠ€Ê}×lw&Ö Ê*1uø»/3¬6ç§ Ú6¤¿5+FNocWí®‹s$'–“œº9,–¡ ë]ãZ<•£ý߸縎α[ø~£HÍA9Úe®2•@F‹ñ“F­É!BlÃNõ|b2mEò¤&`„\’Q:Âo”P…Ée³?Õ¡×ßð]á<§lfy¬sôƒóqGžh/´µ-î¶gceïekÈ8R.½¤_¨‚¦ÿh„ìÃCá„SÇ®*r33½Ä æÍù<§£ÁK^Ž€‚Ì☦9¤¯gë§‚«òšM÷Á'êØj©óåÞ-ì¶ 8h”Û/°âäX²µ `ÖÉŽtWø7rŒóÖÇ™½¸‹nÊï !gûšÐ˜¦¢!i¯›†AŽ9„ücŸ%‡ŒAÞ;$(0ÕU;£¨ý]˜!‹iT«-÷€?¥Y&ìÎŒúDH5¥34ì¡©Üæ†¥ÆÓÕÀõضŠU9â[úpÏîFC­¯a¾A’qhXëKöÖé78A¾–·K’SðÓ6W—¸¾Ecgç.À˜sEj­¦ Ê0‰ç4·S ¯H÷(uš/érË bޤ.‘Æ*!üì'èÓ•¡§ÄÄ@¶5 q‡!äVÂüàïˆ.á¡vŸ!‘óv°7,üó¿6‡ƒH‚oЫx?.·Ÿø¤~ªŒ´²äã(q®s‹“»Á1”ŒS5v)Ø„³#o‘wVUÙÒJŸ`øîDBDàhå>âkdéÊó|m|¹÷cÅ œyƒ»¯›MÝo¬r¼ê#:ÉÍý¥Îir…ža¿„À?ðuû*Uì4Ýï)Ëhòt{‰…ÍíÎhúç³O³.W ¡õc?û15¤FÈ袰¹¢q<æJ·¤ ÝÒã´h×ýC“|ÛÁVín2ر¯ù°6£]&£oƒ¹eñÁ tNÊ‘ZQ5yX2‘VÆ< ‹™8ß(T|8šÎéw~kÿc¤Ï‹±#Åó± ~@Q#N?Dëè‘6YšŽ{½²€ý§"–®8´¾ýÄz*—/J»×Eþ‘5PÅ!=¶õ(žx«Aý-wérþ¤EîT¼°ä&4qÛ]ø‹ö)m>ÿåB¥Ý#g\‹êàP“jY@)ã Jã¶ædë­4ë«Û(§¤+¼Ï£wçl K#o¥U´³P7Pl<©ö½¯o/ÞЩþ¥*Jì²³ýö¸¹iÜäPÍsª‡ ’åÔ%+¢¨J’Q(,E;¥4¯Þ<âi© 8±ä+@|ˆW®Ia¿rb¬ï„AÙÍßñ•@W`,3Õ/èá2~ÅøÖw¾,uš!±iæÚl‹Pí9eh|ÜÒ<\Ð¥ Ž7mhí·!yó>͵^®û±…ÅÈ¿ý• ‘ï§×üý#˜6žÿæ ©–Y®~@Ѧh„ª{j8Šlû¢ó¸ +'<í›Ýâ!2#!!'¶¡BïúFÙqQÜè³íž]~O¶ÎD‘½“Œ:ÀsŒ8VÔêxp„6Ò§ƶKC.´+;ÎÕ¢xtXF ¦F„ìÊ©1ŽJsyö^ÐiZŒ¢=H_½­Y¢Âl¸Ván÷ åpåIX<ÅÏ’½«"ÜWúÇ?™,²Ã0°Kõš‚j¢¬Ë„8Ö½ëuбŠîžl´òûñ{[±0IÔu6Éëø[2=î„§ž¬…Lâtð—Zé`2éÊG,ê#ä©Ç÷/cÍòžBîT‘+²Ö‡†h Lë½g­+Ÿ{j¾€Lâ6 Ý‘Ð?ÁL»KýŽ ’dÐÅcø¸HÇiYÖ&ŸxÁpòkí•Ð.ôpeØ~Âܶ74ö YäR< ŽtNTÜC`Ž€kˆ¦–Éø¹5~äs/kUÄ~¦¨*ñžõ&-ldy8.,³FTïxßd;qmÆÖ2ÔYµ„ZÝÃ7—ÞÀöÐrÅìAa2µcÓ;Þ0ÿ£FØ g;%ßò¬.ÂsÁìy˜ Œià#⯹Z)ŸâÄ›Ný~*&k¤õ|Ý ]Æã8û8bY*>Hñî¢E—:•` Žêê¬|E›\mN)¸­Á’>œ5ªþä¡úì4dÒ’ÿá#̤6ïoÖ¾4)/”9"ýIÚ@òMe ‹`Þ.q‡DO;V!=8“蛩ï%„Ú¸ FÏM[z”g¨Ô<çç[îÃü´œçVöXi­æ¡|ðÐ+¿°×È1K(‚!y@¼B%&éÆ žãLwAyÁŠFâ×Ó\I¢áç—¶B™û0}üÀ©„8·Œ½Ý¾JÅ{r²Õ^D¯*É­‡OÅÊü~øñ«+¹Ù™a•uר¦)BpºJ%ÜG†ÓÖ?åÖPv¼ž é¾êë½Q‘;XM6•[–öƒ ¥OÜ,×&+Áþ™ö¹q}[Éwh™"ü ?Ï ¨!EkL¯} emˆ+gg1¡ÈmšÚ·Ý^@Òü^à)6¥Í¶©vëÖƒŠ<ú*2³Íú n£òö¾?òlÓ·Hê·©£ÞC§È¾P®Â÷v=cdå´IÉ+r-­Ïy˜lñ€æÀTG¤,˜zÛªómn{Æ={‹s–…:k“ßô¶ mâ:|R¨¤/…“ƒjN·o›¸(˜E’PZÑ…[Ð(Xï= z„²ó«•Ën@>¨4ám<0æÖöø ÿ0³’ý¼öð‰å.‘W\M×\ÆQ^ ft¬¿æ »Jõ)°™ñ£þŒZ”œˆ\ªåx(TWƧJ¹ 1xÓë8¹,•9T¡vüžjÿRf2Ôå”~ôgÃÀ%K 5½ÔU㊠Ž`vÉjì苊ÊDC3ÄЦT‘Zžwy°Gæ(¯Juz`ÉñŠÊT†A©SÎeÞ“_H´­÷rfÖȾujwÕ›åîf?ñ\šJf’ Œ†ùùwÖÆ– Ìj#BúÜ@vW­pTûÒ™2ð±d´‰(ÆzÑ/uÅ^«“ÊÚýcýHS·ë‡ÅjT~Qv×ÑÙvÕ=à…jþd˜Ÿ%…íÄàSGþkrk¿¶ô©HôlÄ|ÕK‹{í°~Ôh}%ï˜Ê"ìVg]5\¼z'NØÏŸÍÕ­ Ô…ÎoÄ\a£}Ü~*œ§ÀÎþdÆ“ø¸ÕŒF„rnSP øÙýäªÆÃg y1ý,LoüÌî, Ó† Z×húÑ|Š3báí :$ô˜¹›©l®›•I n’ƒú]×›Ñ_ì¿PÐÞ©ƒ±Àt¿è:•¾¬ØÕ­¡ò9Ká Yqï4§…x­éƒÎŠ­S=­þƒŽ’yÒ˜@:VšE2HØ%:W’—Kq¸99 ät†¥Ç@‹·Ñ†d3ºVÞ\‡-¢h)ÕYöµâ³»ðŠ„·}XÎ!@îÐØÿñ@í®¾ˆ8TOEa5×Äâ}EX‰rKðÐ+[Æý¥ £Tèy/¢uõUÕâ] INnpfÆK¡ØºJZ3Wé~•šó ûTÂÓ«lû#ÍaÝ#¯c å’‚ÅODƒ½KWò«gŽ”dTÊó'Áâ[þ¼jO…Q29s;ƒ“ž^¼²¯Ÿ1 Þœu"[€p5äIJ}¯‡r‰miºIüDÎݲpí‘å†Vº‹²Ü™šQÉÃêÔr4Ò²Íóxçú©ýX¦\r:¢l²Ú9ébö ðŠÐŒR«ƒQ×ÅD¸ÄxõòEhÞ`ܦ¬´aT¨PÛ%ú“•ŸUpÚWsKu †¢ð‚ ›SØbWò¹Å+ë¶ŸGl¥éË(GÉü“E!òÿúI;C f@©ü)þ?þæË¡ÂÁð#x=7êpfiä /ô°Ã[ô“=W­ÇGHkê¨ëðUû0àkìWå;+`˜åÒ^qŸƒ¯¡À/mÂöäR^ŽJJ}·GÑ%G>†‘IÂ/”¿l;ûw&·0ÿ¨÷ÔÈïa’- ê,Ò‹;ÒŠ£!b˜¥µ†õôY»|ó+K2Ì ¼Mýò£Â.ÿDžÄð£‚å ¤°Å…‚aHD¿í'£òûc×–jY|•Û5F’)íìžM(C­8£f=IÁ ÍÒ©Ê7ÅûŸb$¥îè¨@-¦åß;"¼!Gw ÉþÜXÜOÚÿ”Ö¬Å1{U5»Žú"“™nRÖ(›‡LøBj{I C‡÷Ç/dP.¾¹ FêAø9›r9®ɹÞ2ž`Ó®båwåeá¯ÈgÀ•CKðCz:õýSsÐ\ât¥Ž¯ò=æSdÍ©°´ÍчÆ?u²RÔókùv­êöUêã‰4P\±†“yaaǬæGj¬îмÆ+ŒˆÐ–”‘z‰N¢m¯‚¥½göêŒ,zôU^Ò¿i>M˜= "R#ϘÝÇ7S‡¯&* é¸áͦ[oÂ0¥"‰ÂͧQ©»¨èGVf‚‘C'B|áPžCŸS6i¸&èQók'¬:ÊA‹±IõòhçëŒÔ‡ÂOéW³–ƒ¯ ²×¼ø…˜UbKÛç…×øø×\ÛêÍiiP¸D EuåúJü;±kÆØ‹#ˆì !é$AQø­äìw²j~8þµ»ù:šŸ£N‚Œ»vÖ-@DÂúö˽+7½zeläÚÕ;zIþé *N£Æ4Ý›ã3cBš–NøÅ2è¡¶_ù+Q˜r 27PÕ~ïŒc1Û5½|¾ –2¨Zµ]{æ&!ˆ$]îä÷¢ã"þÚ—ÅlIãáqõãììÞÉmîµ$—ߺܒÊòؼù¤ù)ña|¦PõF¬ŒÉpùNKX7óY D j†e´•…ˆ?ü*šÒz¹<*ô7‰+rл.Poò¬™Ä ½Ü&û:x¥ÓÏ¡(LJ¢» çk׫õGÌÀ9(€Ã*”Ìp܆P©G2”h´ÃÞlJóïRÖý4щIw†cÿJ€ßÞ95åä$šG¡Ð°™VUÑúÿUªúq#hÄÂÇËÃ"•é2ÉvùD‚èddksß5w1?Â2´uÑ!Õ C¸ñhá.ò„ÂÚàŽ6d·ÕÃH˜²8/óØIY„L¶l66ääÏEMÄñqü4æ³-k*¨‹âT˜Îq£¬þ…â…Ø4î$¶/ú°p}{v ˺£I¶aµeF#g« p‹²«ÏâƒõPm$C}Ý­¶³Û™Œ|&cN-BtÝ!jù§°Î¼V¤¿µœ”_œÁ\–iÒ`ürr{Ð`q𗱫’žTÉBuLZ…e7Àouº°$¶‚úÚ:㡟 ë+°ñ|EyÝ5¼üBQ©ÅˆÄ\Ç2·ç®ªE²õm’Еkó!­‚ Âj´æ‡F¹E5óˆ@¾À·ƒæ¨p2%>Ë*-½¼å~ÿEã ë0‘Ä/zÇDk¸O3)¢ERùº¢i ¨p)%R ¥I›ÏÑš§aóÆö›Ð–íbr×±‘ßW®:D’g*;0»}üòm¨ø;ÒDô±mÂ)_«ç¬í–ž‚n\ñޏ%NSy«IùýVÔÖÚ:2;OÖ©œnÇŽðó¼IbGø<P´ ,Š5¹½Æ›÷˜óPY‡e¿½4—oøµ“SJÓ’4E¹rµY¬Pîs4bÜlß·ÐÓþ ÛL\ 59Ñõ·/“ÇÄ­[=n©jŠˆÄ`Fuês„ó9ŽI@Jüáš•Á!³Á’ —±XK~ú½‘wçr_o"e«'ËÆWà+YU ÌÜ} º›ý‡3;/wÙ—,Ñðeÿ¤žç\VÅX+èr?«}¬9|k‡ù‰ '?øÒh‡|:<Í(ÒVï9o6¯Š ¤‘«ë@l¡&ÐHÄ߯A·~ wù‹ð,úh1ãk°Žç®ú?õ ¸pbñ†Ï üŸØÝ¾êVÉWaéÚ û‡··™‘7îÞ8)Ú#bŸå(r\‚1Ým~Øú],•;ؽÁ8²Ç‹ƒ4½OèBÕ{B?ÐÛ:CèýjæajìMî¯(™Õï²S¡ÚS;²ü¢& ógÿ}ˆQ×UDÄ~ŸºƒÇÖlŒEÊ6±Á¯‡¡sÿqM¿$Ÿ¡#C¨ŠB·ƒ8>4ï8dxî²Ív½— Œ1 xÛz;Û³š@IGª(µNQU±Px¢qš–ÿÊöB"ùžÁy¥Ã|³ÓE£QŸq6¨‚‘Ø“ùÌ»kë|L)εäÁ}ð?÷Cæ:ŒÿÈz8¹3§ðæloQ ‰¡J“¸ët \׎n!¶Ó¤/Ki8qÍAûã®lf™±ÆqGþúÈ— ¾ ·YHË02Y AZŽáI/^¨ŠK@—íŒ`Ü=í²é¬~Ô¥ÐUoò:Pr}as ò¯uš¿ >ÞD z‹,~Mò‚3Ó^?8FKÒ"XAK*à@ÒéZûú…Ä"|Ç ùüOPu&x7¨ÏôÀbè’½“Rióçø†å]´ØÃƒ7/Ð=wǰ;Û endstream endobj 143 0 obj << /Length1 1608 /Length2 7484 /Length3 0 /Length 8301 /Filter /FlateDecode >> stream xÚ­TeX”í¶¦SB:uHAºéî`„Áaf˜:¤A¤KBJº„¡»E@•NA¤‘8èwöÞçúÎþuÎþñ^×»â¹×½Ö½ž‡ƒÅÀ˜OÑfRƒAQ|Bü‚Ò=°«½;ÒÕáS‚A·N1"eˆà*@H`r¨€ÂÂ!)))"€2 î;9£\¦FfÜ<<¼ÿòüNØ{ÿ#r{ v‚8o<@ÜEÝBüŸƒ@”3ð ”õ ,4õÔ\êz¦u„Bîö°@ì‚"AÜ€§0ò—p€AÁ¿[Còßb)"@rßy9€à¿C¼8á F"oÿ`$À „¢ng€‚ÀPˆ»ão·þ§°?„àØm†ëmì̆D!`8 p[Õ@Eí/ž(g êwm$ø6 €=½Ít„9¸ÿnéOìæ6Š‚¡H ä…ú]Ëp#á ÷mí[08ü‡†; uú^äD8B@Hä-Ì-öïéü«OÀÿè‡C¼ÿœ†ýÉú'0 ‚<å'¾­é€º­í† ü^MèS@Hð/¿£;ü1âÏ€¸~ï ÷-  # ñ8‚ž èÁP·%\ÿ7•ùÿs"ÿ$þü‘÷ÿ'îß5ú—øÿ{Ÿÿ­æè]oà¯pû :€ßoÌÿʺ‚!Þÿ&ûï‰f ¿þ;Mðv ŠP§[)ùÿr‚‘j`/£åà x „ÜÎèßêB@ÀPЭ–Æàû[ÌÄìð ú{èâRB ¨ãß™ßÊó‡·€¥žª¡’%Ïß_Ó?Y·ª£L¼á·Äþ»]˜ã?ßJJ0/€/Ÿ„€ODPâö² ФD¥üÿM½?@Bÿ²u(Ø ðä¶iA¡?­ÿ÷÷/Ëúo0ªP˜ãï=1F¡Ž·«õOÇï°ƒ;q«èŸÛ~Ûò?ì?Kyˆæga2¡.i™é¨Úœ1•'=]BØaðâz“‚7U°Îçi‘ËRåv—Õaü Ò×-ÞvàWëZ7†ºh :SA{yLþlÜÝoî.p¢%x6‚lŠIÒ¿™EûîÏè,áXŠ >ÞX34²)ºÄcž@‹ öO¹Ù<ÞR±ŸÀI^ÕÅQ·‘7`PÔäï|ãLÚ>=yÐ7<8Ðßy€Û½ÎÈ“GÈ!¤ HÙaIFyÛ!Žê®<ùª¤³’ÂÆYz†ðøÏ«Ù‰»Øq6˜÷¬ÓäD–¢š>Ì(o1|Õž`®µvO l mæm¬Y5y+Ñ—Oˆþ*±h –`É8M~Ôàt oà`ÃSï“9Uzáè²øÛÉ/$At3%Ê‘àÒ'œ.¶}IÌäAèdj^¥NLÙêk•·æz­›ýC fm6ùˆ˜L% jáõê´¯utŒÎc«½)éi[¢0wbò7?HB53Wôö‰´•0‰«Ψà=L›<,0ú P»@¨š9çá>Å4µ¢š;åtGH¼¨ö]üÂÐUxnòN{å•E5ÜIKr†"ŒGù€žŠå§°0–Э呆ÛÞlŠ«´Ü*ƒèÖ ãǽŸXÒOÃö_Œ8„—¬ûÚÀ^|¶¸3D~]çëÌ0rß2“rË^ß²k¬~4 ú‚‹®xÒîʪ£O…ÖS+ÿ)Ô¬°Î^cĪ`ú,µ¦T\Šó„è GƒÜ)ÆWâ`2.A¿“‚\—(×oÑ­:5ïÅ?á[<*ïj½«9Ϥ$ Æ ”=¡Ð<ŒC+Œé4Ÿs‘^ÞK~ŸÍ¢ãdà'u¿¹U„È^騷0XÝîp£Ø¹ò†pÇ’2ÂóÓ\² ’îYwö/¼VPìܵx¯ãÅ4íkBéúÁÔ¤aªÃvŒS…B%ôPêçqt˜~ØB‘ ø³=ôB—ço™ ;p§*ÖíË#ÓWsH‚ï-ÔÆ¦EŒÄJ/w|›TŠ’ìSJ¦hÛØ×þvz¢÷}$<‰3¥Ì÷U¡YXƒÁµX5z ª.ØW5Þ»ö«2åÞÀ‰á»Ó®ôÍ—œ˜Éü‡²ÔýþÄœ¿Q–Ȧ‰ôg/ülñY7înŸýœbbc³…BšY’Ïú‰O÷Á=™À„Ö¦ûƒ &É©eÕo¡ú ]‡÷-l_vµOWeh”\ÎèèžÄ‰‹-¿I:Ç}¥E,Ý^bËsHOvóDXü@ÓÓ䳬íp7PˆxG°Òhh:\e”2%÷qÏ{Z.OËÀDî‚ü§¬SBö{‹¾ÑëyÏ_à6à̔˜ß—=Ò9¡kU¡îÅþ驟§È@û÷=‚øÎü³p¥yÔ‚õÐXãå»ÚEÊF„#1üq÷ ;¼ø’´ú_ðeöÒŽ¨^‚Ž*#.,.èì×<÷ª(ÁL¥éPV*ÄñÃßr~±!3ÔVRúá‚`AÃJ†9… xú’;ßÐp\0Çy±æ¨ˆ2T·Jì¹RÀc¡RÚí†ì侨 ¡ì° ôfÊŒù2{µÇþWZS$ÚÂO¢S2·Tî/-v·oÂ7ðbk‡±î:Á@qøj›Sj³8«~}¨?]F¿, Q¥Å òJ4Æê&±¥šÐY™ÿ%4Ì¢9JI°:6gq¢ç±ÙîeS{‚Înp.(8jN¸Ÿöõèe®;ßÕˆ™ö®Åz¿«¬ÙŠfJIå…áD:tzfQ®ã¸0¤DÂÌ/‡½rÿ27 f3ð^06–?:0dܳ"²ïYç.<_±ñY¬£Øâ8¼2¬ñåHQC¸Ð©ðK%‰9U„쓽Žï©¯_µKJ TÅ%U{Îk¾(˘â¥áUñ7Øn Ç"­[P„N›‘þ ÒïIƒY@âÂp41Šþ˜'9S×~§áâfZb–o‡t÷SWÅPwùZ6½ÚÜȈ-ɸޒ4¢´ TSâÙÆœqžn.#ª3†(·uÉÍgz ¯© µgNvÛÔ¡ôÛ®Œ%ãb$®²K À8ù1Zø†¾Â['P=8¯’&Êê]`]šÎe jm¥ËU¤ÎÇý<->$=%Îô©^ñ= 0¿lHZ—m\ž ;ðݱs$¿ªNþË,r‹b&¡ÝÌy8Ä {¼ÏÖž6ÍE3Ï ™5é„Îr¿‘sÓ^øØRòˆ&ÇÞEN]û\Ée¤æ#ÛØ¡Ä¥ü>Õ>]l†m×®­ÍVë}èqƒQi¿ïFnƒFøÕêĶ–(+—õ}*׫¸¯ÉSg9'o”ú—¯_iÖoU§#iädvŠ+™1®{5ºK"ã¬5¸šß´]¸¾jöÎï{sî"µŠȸT-jw/éaH¶öÁݱr²·ÿÂl D1WÆí‰9LTœ[zh°›‹9ëâuÆBd­”Æ[œýj2å\_„:!J0{1)}£öÁ¬ÚEM o„iè“¶AÎ+¬µy%P©·‘'â‘t­NpŸNƒ¨‹x»±©ù%2Ë6ìÓjÙpfª…t_[ð¹]‡JæÕÃU"²ZÝ‘“`i ¦êc°²7.S‹óÊ‚oÿ{ÂFxÒǰ#)¹wø“?tuòŒŸÊßD9`¼'W¬ö?¨•%Ù‹ÛUÕ“ã¤Y½Ù¤w+"®C´bæùDe¬éWbß}àþKøncz¥xñ#õo˜o¶.Ü-¤’`õSôFU{åÓ¯ÃZi¯ßÐÔXž‡Ýjá5Y`þ"wƒw˜êzZ8´†iÎ _µ’8ì¸Ö º©ÀÏÐú¬ÿÑ@¾ÿ¢‚òœú§Õ4î#û` ŠÏ”P5GÛø aßkŒk†øÔ·>?4ŽøµZÖžˆÍ[Nòæ(¾Ï[=¿ïÆ’e)‰{œÛC­,þ´mAW=ï¼_‰0mÜd&ÇkǺ];”á>:£¹%å+Ö@sš¯9Ó‹_Ëq¾Ô‘hɉwNoƈêêI+¸œ2£êµ³ÜôI­|Éñ¶]²kbÒó‚TvÓº˜÷:â*°‡Kf}Œµé´¼Rlb%ß…:)c¿ÅzRùºÜ°Ÿmâ}ø0KDŒx›ëôsò±’Æ‚@ ®øçKÚ‰lÖgOI¹zrHß(¦j‘.I¡_¤/gï&ôíc±¼a+òµµ=Ú«’ëuÄ#i² søyVDZ„}Ç(pÿGyB•>À7BìÍ sC9Q¯+EZÆmY¡oƒ}îÕ~"ži‹<ºŠ§;ŽÇƒ~—³Ô‘ZPŒ¥`½/•{ï5¬hc[ÐcJƒÑÎoÌrÃ雕ëèææ#Œï37düx±Å¤SÆZªÓ)Ñ]€êÇÒZ€VÔýŒl²…yº¬ÞŸ¹Vž-i~oïÕIh&bdp5¥Ç32Àü²À<_¾Ö)"Ãùñڳߦ™.“ü1ÚL#ÍŽŽ«Æ}F’ÙDµMþ|ÞáhcüúSKŽÆ+7©à4—AÙÅú{^|.¯:öwÛÚÍiLñ2˜r¡J3By”õÖºøLÇGår¾w88â’$ ã¢BºŒŽ»…ŠŸб;v‘¯MkànËwè+"RRbà ì÷Ê>õqê¸íï‘ãRøär‰K:¨Õ Ñy‰ÚfOTx,Ëy1'Uzš io ™T  Qˆ‹âGЉÚÿ jxVLÉİáV׋¸JmnÉ”j ž¯Uç8³ªfdRÚ ÒN‘¯Izã-g*ýp½õÇ7ÉÑ’'æ}¾ewx×L YãÐâ;­éñÓŒý¿0©½ˆ¶Œ,of.¥pqMù;_q9@ýû Ï îÅ™×ðót=?tñô ŽIÕ¡äÞ¥ï+̘l‰H•g7_yDKêÆ?ãÊÒÂ[õÉœÌÔŠF»¾0"hÒéc‘•‘”×LÁ[Ó|ò=m½¹!è­À#㉄g ñ¼UÎüÌ×oÓ]r%3êºiãxI«hÌ –>é¡ýÖ‰?WJÆâÞ¸²‡1p•Á¤ª¶e¿¢k&£g±íÃï°h¬þíÞ$ù§BeØšpQùÑ¢ß4:“²D$ûí\ׂÄ|G"CŽ‹`[B¹æwÚõ|‘à âˆÁv:z½cèzÂ6U¬1!’Ë´¿²÷È;Zþ¨ÐÕ» bÓÑ`-}Fñ*ð0‚囸ë3îBÕÇa/òt>ó—9™JÐhׯnhþ<®íÆSFÆƒŠ¾Â°åüä aš®l¥ÉÒ·³Æhˆ<„äèq÷˜ Särâà¢ò6RÌŒ¬„S½¬Zî S]I¿NÏñ½lf¹KfýjÓÃÞœý—êÛÉ<¦(š“-j3Œ!È‚Ü~j9õe&dÊÞl—W»¶çX“ÒöUÑ#4³QˆCÔ÷Å~‡àv8mBúŠvr‰ÀFåðÚho+.éRÂ[ãÚ×UmFS´§°^£åÔH¯¤ƒ(,;‰,QK+ã, ½ÖJ£Z’÷ °<ò“Uø¡§tÝf‘·XüB‹è7s#HgS¦˜A¢›RŽ¥¨Û˜;Ý$5¡½ºcç*¬w-Ýí$¯4¾f|xo`Ô¡x‚+áD¹jâØt—ryÀMºiZÖt¤;`šã§Q¯÷èPCÚ—ë}¥îa./'ÈIjòDIËRÞ;gÛè­›"# bÀ@E’‘é`d0«5(¬?MB!ýIïÊëV”¤WËÜóž4˜Ó.cBÔû°!Y`ÎEØ¡|¨ ;AmqºByÖ¶“u ò,4Îz‚ùýãb H©mH´qvQ h~kW[@§N,†`„ß»=êõEŸµ]ªÕN~&‰oåÒÊ!"©xGN¸)ãG/K\áï2Ž @„²­Þíˆæ?ì¦gÂfqkp[3J ¥µ¿à”‘Z>~o­¾¦SNh0k䮢Î\wíZ@™!‹'Öâb¬Mƒ¨æ£䃪pá @g>ÞVeÔ+¡’ξØÕHõTGVWt}1_ýÓL Ý ±fÿA­í3›è7å“'_ôlC¥£‰XN»N™¯# Is|.,kW‹gíÓ;þÌ]ÂYmÐ;:œŠCâg]wÅw÷»ŸQ@ •ò–ÖW·6Ç0h+ºÝÂÚØ¬žûæ lá<r/Ò ÒͰÂsh§§©Öù³¥:©µ§ÃÖà/ïŸ#± ïw27-J8a5Ÿt6úcL•'W¤DqÅOs“v3SÿúTÜ™¢Å… <9K²6SêaÑÃôж¥Ž=3§ËèÛ¬~f{·’ö’ü”nÓâYZÎÂ)8Æn,úmâÄù-¦[_Ÿkœ‹"P³–æ€Ðe>íZ;ÉÈJ,u/"&s†“îÆ£ù£ºçkÌÀeÑÒ; }×ûmVOK\ó8®0ƒ¬¸IP´.rªŒ`v(#^’ÙËœò«WF×Lòsƒf…Å2Â{_‹1ô£ …·½wS 4£¾Ï‡I'Ò¯5!(lº×¹Ø~|ËŽúö¤ CKþÔ_y¸"C_.¸Ñl œÌý¸Æ‹ñ R.3Ð2y?+"³ncÉ-ò‹ÿ’®_0’½“;üIˆ©\þµ]ݶµå§»ß'ÚËÖ1m,’ uðucB‹$Ç+@ Q­-ªn®]÷}ÛÚʙՊáÚ¶íßL^V^‘óñø¼ TÅ8x—†g6¶aà‚;ò(fTéüÆÁTÂôb™vÐy’ùà"‰²|¦çÌNv¾%e¶ÈÙªGÞÀ#~^N)G-”³s‘».ÿqýô°™³jŒN8W&™º{}>½úKÉÐBìû¡^RÌ\_­6Ò_uq%G&-.ùi¦ó5y-h¬[rs<~Û1ºZ¬ÿ„.€"þ…µ›þó eïÈY¸h؇;q;ã;!òëî‡ØaH3åÅÑÏ èÏà0£=_8sªa°áIm—¯¬eóbLðtćtâ@\…îØbôúÛ¶ùVÍŒ­Ðs¦Sÿ<×å{U¼2l7y˜ƒ¨¯GÑ\’n•üɱz®l äïjgtÈË(6³H,ª/]pŒŒWÔ̱Tö™ ÉÂ-vü½Y§T*ðazÕZ`ù]–I«FßU‡34•û®âðæÏá„_‹¯Öêžó ?¬)ÏC¢šŽEØ“Ê.Ln gi6éãìL¢&´ßi1Û—›Çàê+Gïr­UÑ”%ðäS:Ö ÷‚ÐRoólȦ1òÑ K`[ÞNVDNˆœAVëGÏŒo!Æc½¦nÑy¬l¸¢|ð¡jË< šX4¯DÓÖ’ïgþ]"ÙŽ ¨koÃmYì˜W?\7ǵMÞ·åëïò&©RÀË,±«“¥ DQ„dÞû¼©,8fF'È6åwŠõû÷oÐ̸}Øyît¸ñÐF£BR̲¯Ëb±¾ø "÷e3ž—ŸOÃ× €}Vó%·âÅuF²åÓÙ’ F™ÁƒÐvŠ °X¢P冄óS @C"¤`M*%‘êD9ãó)„|hðß!–_üº±ù Õ«°¤W¦ÅÀ¢ÓöÉŠeš}3ÑIÒ#É ÃÑÔùÏ XÊx#ƒíæŒýúÀºõ6ŽË[ÉÀSNU÷rt(CÀ7[\µ-Ú@@€W:V£ä¼ [CH{ÇÍÚúD^è*^™O”+ƒ£ÄeU4é ]?~o_ƒáG`ìH§Cªt3û€²Å)méú€WÞ/·µWju«B8Aâvíèï@ÛÚ\Ö‹Î{°DRDÎ ­­ ôÓýN/|~ü2~ëeÓƒ ×°–cçºÎŽÁ‚Wó°î_KNV‚ÒÒd.ßPƒ˜´—]œˆ§Ûñ…FObJaBSÓØ,¯A@¸ä€Ÿ 7ä:ý{¥x, Ò¾8ü~'ZP+êÙ„f±}L®í‡]µ5ø¬šÖ¶hðvd4ðÅbñ¯Ê×úÎA˜^g%÷GØ’sï"TŒ(`¸œºp¥þG„¡qOÝnÐ$<ñûðlôN@òÓ/L:)+Yz›:).Rï§&EäýòW¹lÔØ‹)ê¬Úî@ÉZ<+k‘2!k쯻%”™¯ª%ÈÚÆ©a#²1ñuIÃ{.ÏœrÎV§V-=$*ô©³ný€ˆšR5ŠÏƲÉæÍK,Î<"æ‰Ç.sb}Y?6¾ò8·ïL.4n D)§º ‡Q÷’¦Û\È$ÞÍ_T¶ç¬99O×HÅV[~=ø¾Ê‹êá…GÝ-šxqáúƒ9HP¸Å+„A{‰Q2‰jqŽØPX)ìg€\6Ì9•—¶[õÕNèÄ’zÐí„^õa× CŸ¦Ì3ð=¿è꼿ˆ7~B¿½2ÔH?3‰W¾r¿·æ;‹ÍÔÝj¶êðæ¬_ÙKÆÅÝ=M+ V?°Mt ›•z¦êJ(@€R®Sž¹ÈÍöÇ"6Øuk4âÙµó\s;9涇öIWt±ìÓõïî*zÞ|Ut-rfðmˆ[÷¼iÖ?Q 9°);·[•YY%—Û‘ñmßlböüÜV`CwW røÝ¬e~!µ˜$0Ù/Âhu;¬W~ˆ«óPÂÔ…¾m¤¥ Ã1 ¿â÷–Íêú¦á±ÑÍÓ~’Ú7 ¡&ìŸÊP¨éoû¦ãŸÅש¯sZ­®ú´kí‹,,mŸf^ÓÍÚ®(,èy¸ØlÇqÍ¡ð"€h„~#ç0„ŠÉËEQ­è”¦šô™cAеª¿O‘ðwÓ›™¶ÎBÛÞÕôÁ0ß {«·÷*¯ÐÇ7,’Ué?ipb‹~)ÆpÍAsšþŒ0fä`;œjØý¥bè<6ôWHÄÔçÔéÂèØ^IËà¡?|I¢Ê€R¡‚.\ «#ðƒImR[þ•’ ™ßç–&–Kòqq J<É™ Yæ62â²Å F2M’Ì~B_áq žË9ß±åGÚT,í>¯¬~d“Ù9 æzˆêV«âwR˜‹Qì7‘ w“¸Ér7‰…è“Uü µ £âAì…DµéÚ«žµ4JÅ:ÚH¾”X}:¸š¦³N­‹ÔãWXp:·¯Ÿ>V÷õ#¿Ã¥X "å¼yß‚™‘¯1ò…^ÆC2¹b§çëN‰äõ 5¥[R$õ“¡p•é¤eÍ`ÏÝü´<–˜zjô¤6mãOEIÂ`°ñB£Lø¸k_ÞcL¾Þ/òWÍÖ¬¤EÇ0èC±û“ò:]Oû»™Q˜c1”Š{ÒÒ²:‘üÎùŠdQö[ˆdjù-÷óêïzŒUIyõŠÏr3ŽLé׫W½Ç*l°eBp»Îcë^É9‡<¤Yy£Ò˰Ä6y’XëßËBg%Ê£úëų‰íšÚ«?;ÕÍ!F %©væ ¦¶kÖWˆG™ïí/XU>±kEëž]ëŸDãó¸œÒ‹ß &¶9õmºÁ©·Ìö6ïí½#—ìbðI3YYà–ýêµ endstream endobj 145 0 obj << /Length1 1144 /Length2 5545 /Length3 0 /Length 6308 /Filter /FlateDecode >> stream xÚuW4œÛÚÖ‰½„Á D¯ƒÁèÑ ‰2ƒQf˜è½·ADïˆN„è%J”HBôòË9ÿ¹ç¿çÞ}ßZ{ïçy÷Ûö³¿µ>n=CA( e WG!±‚¢B"²@„³µÆÐ ©-h·s^ƒ’V¤ÜÜF¬ü?èkB ·Â"PHU+ì5odï¼o…ЉEEdEdd%E¯ç"â¢Ð²@=4Âå Ôƒcáh'òšREÙ¸9ÑXC7'fÇ ÜÐ6pŒ,Ðö:³ÿŒ TA¹x¡vöX ÈØàŸ€À¿Q0 ´öú‹ªÂ1;$çzâwB¹üŽtíBŽ„£¯“†ý¶Õ³µRƒ!°¿Ë‚ì±XYaa[+ø5&„±B±Â|׉ª!a*(çß0¤¿{¦Š@Ãm®‹òþgß‘(¤ÏÀ¶$ì’`n.ÂÆH„«ü®êÿ_C¤cvp,PRDL,"„»áž6ö¿Cy¹Àÿ EÃVH˜Ÿ Êhkå„û!láשÆÊÄ¢Ýà~>ÿ—ø÷©¨(†°Á­áv×Çð·÷knûçú¾ðš‹‰ˆˆE~?ÿšY\( …tòúÛ\ÇÊVÑ1T75øgíÿ²RVF]»•– ŠÉH^+åÚ#XRüŸõ¬ÿ›‘Èß›ï"mQ@ðŸ‰_wì¯äÝáh̵  ?ËüwO:(,Âý-’G"’"×ú¸Dÿ«xþÿ¯úg u7'§?êýY8ðºr Pø»v'+ô˜[9#œ¼þˆ>€ÿ©óÿÇÏ]¬•Š´súW›u„'¦‡ÀÚØÿ)Œ?qc$ì×Ca¿ï,PPTRôœ‘=ÂÆ Ç`®Õ÷GÂþR iƒ‚!v@Cìµþ¬Ð°¿i74úº=ÐõÞ¿Ö¶ˆëápO¸ éÜ ÊF.Ä¡6¤õ´Êâ!øyDü­”ññ/7v ÒX'Ü5!¼n&ljWG2©Yªzƒö •æø÷ñqÃXÔb¥=ÁÊmBÄ4´¡4xš‘Ì_…êäudÉ÷H@c?DÞ2'Æ0¥½ÜVñêÕÜå(;6ãVP¦1 CÑû³ž>ÜÜrÕ%ba+Ë«¸¡»5Ãf8ú®«éôT_–hª¿]UÄ!(B‘–;ÖUœQKÞ%Ù9\LnÚÄŸV?ž6 ‰ ζ}@ÙØYÄ„ôѵ6õœe˜Ì83.NX n¸«t·ß[Y©yĆ£ðGU%¹CP_|ï>éÊK—Òˆo–pCóåwë-iþí• YI$ì_²Y7G wï?æ!¼£WvÜã3˼ö³B ŒÒÎo]½ú¥©1«ƒœ©/×FDÎw* ²ßfózãd=”í&ºix¶Û&ÃX{ÚMŠ<6Üv{[ÌóýÛ#t©¼yÿ™AqL€sz°D¢ aûÕ*j@™áÄÆû›ÿ1GSc{z5úô"Òp)¢ÁߨhzÑOžË«ƒ“_•Ì$±yU©Ðí/åTö …;>¢‡,8€ò?2ºO±&ƒþÞ‘;Mµ¸¥Ö¡w±õsˆÎ¾ oMÒår»[݉³B¸ËEòÃ@¤R¿Ý1Im1«}©”“"Ï1“öà“zÊ ¢ÅÑg¡ét‰o-ì 7£fwhÞ WÞ¼Gìõðq UU8”Ù!'²¾xìÒ·³šœ´w:F¹©p¸)6 uëT6“U¶“®š1 ½Ó̹³Ï8C'ú:}°IQ†œøa’‡P3“ˆd}Ý›š%|/ïzoð÷$ý]§7¯!›ÑBÙá i›![W: Õ’­^“šhYŠõ7¿Z¾ ØÆÓU|*ñ:ˆ Õ×”äÓ¨õÁÁq1ùø:_ù åíø&—ÝñÕ5šøÎ&²‘r·Û Ý Àìö½Ö¡1ó¢v³à³²ÇõCt\OâæGM¼w*æt•Ω?ôK’‚c6q§ª„å@4qDâ<½î¯|=¢>·¿ÏødŒS¹<’Uœ<©ï:¸¥'›©G®5c¶»MzJÊT|y1ƒGæÕŸö¦y×z^—xô€í N£í¾›y3ËååDn×ÌP ¨F¼õ”sí„ÀLvîm…¦#¡ó;Ó" VßÚ°,œðæÃ…xg¹UM‡áŬ³æ$•RÑÙù }˰¢Õí¤©Œ$AÞÞ2ôWßA¢ì±½ê¥Ü€¨”² ¢–Jb1Ño…Þë \¥¬Ý¬sVñ«~<´³Y ‘¢TGÝ&÷ší(W>d±°Ö߸°Ë»èã‚8Maå›K²Í¢+½P­R¯„ÞD4Qú,æ|¾ /p> ÓÂÜÚ²I¶lÈW#ª‹Þ¤ ·û§ß&YÛjMŽÕ$)K:½ï® ž Ã~Õ—Û%—¼d ÇÇ+³¥<)gãaL÷*~§WÏol]Ý–QâñócNe6Jôü†QHØUØàê„tÝ‹¸ÍLW/,ú™f‰' tùß5JHÈi6QÃÿUg}ªiúì˶ۊXM7ùdÐNÜW¾ q  ûCž¶Öa-,dCÎ;8õ˜»YjŽV÷"2åA6i+‰ºóLntj!uŽêÞ̯³œqq& Õ³iÖÁŒ¼GÍBœ™´ wSYÈu‚ÉR•ÚŠÖoAó~V “ݼÓÙ¬@ûÆ´sùaUâE†c™ƒ¼Gò¢»m’£¸u°%Nª)ZwÁ_ú2gõFR¼aÙÓ‡?æë¬xØãøW3‰*¯c$ÏÙ=3åKÏ_(Nçø~d˜k¯ç´ëcêÎ7Ósë Œw`9e€íWΛVŽ~³Ší¬…> É~ŽèïPOÚÞ¡¾©…«á¸œ5V‚é5¾#}kPøuO(óÇ´NŸ\ ´AæŽ~ ?•j#CoA%!ûË zöàZ«xd}ëØÆè±{Ä[xD$Ǻ ™Y´Î צDÁ´Úå<æF:µ•Ï6È_Üž-&C·’ØÆ™—œ*1q‘å<^ø‰ï(ëÚ2æixëcõ½Wí©ÝG.%œ€,0¶%Ÿïñ{/‹k?yúp\áR…5e­òÂDŽÚê´s±Wus¾yóULB"t† rÓt>GÄžºv…ýˆbÿ{‰ú¤PvwMŽÍúóñ<æŠmDHëAÑ¥÷UT}éÁ¬ÆåZ©m–¾÷ 39öØóèà›Ìä[…„XÓ7?,ý Ò9 ¥$_“š­ié=~ã=›¿]Êó›…š©ûÄ€S…¿o:5í6¿ÿä>7ùÕq<Í×¶Þ®dÛ 6ý‰Ç€zV7Þ/½)q>ædiG/ç6®nþ"J€LÚŒ¥Ú¸´ÞÅ×l[Œ¥¼ >3ýÚðtZŒš¸Çù”θàÖѸçFÍ*‡ZùÔ4­v"ôm‰-}bœâƒÒI¾Çëò`mx6S¾öë÷€ô2zœ¦e\„©c»ƒ[Y7L.®‚+Œ,èÁŒ[l¼(6¹çæm³É'åøòÆ=ó3ïèj÷'£h˜fôÍ<ïèTÓ3Პñóâb^‚•tÛÂxOHÇ6›n”‰¾M5ñi%yŽêÔw¶êâ¶ >ìrz©Qã1d_¯ò‚!ÐWz¿ñvýØÖN–ÓÚcý}ï+–t ùFÄ£`º‡Ú›=ZE½çÁÄϲüÆì7Šh«‰îŠÕ_1â%?Á‚Q÷Ì/5Ìåå|3…­kat¦Ä“Íàì”E6Ö÷nçÔ‰DÓçÝt¢jú‡¾Ô;3‡¤‡ÖÕ;B澹ɕ-XÆO;1÷fñÞ¨ÇÄiy¯~Ö-U…ÉT2Oá€Â{è¼~[.èÅ ~)Èh8pV"LqÕÃwßùE=3`×`¨fó+zIÛlxô8†1(þ=¸@õXx¨lDÕùV?„G§ï3ÀC×`éL+ÈÇ€í{;çYôJ“¹qíºîêùZAÓ#Úu=EeÑÉ‹üÈ]*ŠXG.}ƒ9ˆ‡Ja,%¬9jÕònVÕ¹reaûØþéìŒi¶>·ÊËlUŸŽHùâ¯[ ©‰;póãúá¿0Fü=i­ÒA ¤‰ØŠš»T ŸF Žwõ€ÆhR¦W†}jÿÑScãÝûïøu —Vú­Î‡((LÏK³Ö[¶~Tí&{ ‡ƒö.ÂÎä£Cµ(ΆyU…†>/²°ZS…žNÌèk]úõ¨ v) (ûP5%d\¿¥„²%£[ K@åÌI6HÃri¨:â4Ç¿›5–©ôëpûóÄÌŽw~‚÷»Š´ð&nzxŽŸ¡ßKØ2úÈ »=m#ä"¿P£ãÔÕ£gPí×#çÈ€ëTœdŽ{zZ{ÊSª9kãþ«Ó÷9£,½pÊn·H~dOœ]Y“þì<eA©¦„»‚˜¢{%’1oA¤D¶L²W >¡Åå§áØŒ9“j•HÞìãT凳fW·4u·ñŽT_ÌMåè\9û ¤˜«¼ï´Þ èOh(Ä99tŽŸ=8r\® º Áh½uÀà$õp…3=¹Û¤V7{dë™ñ€•;‚@m²q»ýe€²‘˜Zá30’¦F÷TÜ9ý¦œ£ÇñI‰³äJ2ÆŽ–ô×B¯ñÒçýΕúrWsùùƒ{µ…@OŠ~.s¯RŸ'EyÙP— `h@ÃcpÁ÷;C<‡Ò§AT›Ñ%>e+…µì•l íLDÆ8z‡¡nÿÄL[µ¹Ý[r"Pç—JoVÞõW”ƒE™’{·Iq†á¯+pôèt‚ª­6䇈•€5C.Àc"Å'“;Á4~øk§~ÏBкéyáâÐèóжP+ZbüôTø­eD{ì._t£÷\ EÝ‚M6ÊÚœ`¨tÖÄG‡l;ùaÃÇ«ÃAÐz½•2ξ-‚À…4{&½È‘„ŠgL·ÙˆßIH¹äÍŒZmW9pC9ŸØ.Ÿd5…\”Ì!óaýdnz*ô;ûýÓ(Ö·që¯0§£‹FPØ‹s9Øý/‰t¡°÷͉3»ô’Çs¢©ã/¬‚¾-õ {þÜAؽ©H`ñçí Tßlp 3*,¢Ñ)|~ë 8¼3yiA Í´½'©ú¥ØÙAò¸^Nð"m‰‡MvFv¬þuÑ.²}.˜eC.憶ÃT#Ö_¥¬õÊd*:òR18æ,õ‚IaîœÖ&¶¥^+ {~¶¹LuÉ!&aúâÑ2.ÂÙla’(nt¯G‚éû£ËO6¦øª—œß¢# ¾ø*‡Þw·þØ!úÕñK¤/E:€ÛS {9Q¡‚ò“>™J-†ç¡©Ôœ{ìâ?ÂQÒ¸œki[/R—ªÙt\Ôùª|‹ƒÖ²i#¨ßÍí2IÞÒÌj²'=5QR ˆÿ [樜ó4KZ†¼Ê±¤"y+´oŒ?°íqFuBûÓžQ½.ZmÖžþ¨y®ØÊó!† þªè{Ú×OŠ0¨"í§ý„G¯ö6ð ô>÷ìElÆ=Nj~c[«®‡§Ë‰o9MeFÿTcœ?ؽW½ã¦ÄêXð†¿.ƒ=&%w¨116¨°·OB"Zy^—%uÙˆ*–€ž•©90ö Å˼û)Íí[j¨»oÝ}åpiµŸBp2pI&C …ðÏBŸI(ƒ7e=ìÚáb´T•F,Ø{ùÇEDGªöœVÙQà ï~n×&.|£™²y“ŠR¨!uj¦Ì !ã×ÌŒþ¯>à‘~mt£‹Þ“}yM6¥sÚÎ"™2~¨ ÁH£ 3oϾªR½½%¶0ÜRnK-è­‰²|ç|ÙÊú§!`㊖“@௾¶öGËT[4¡Ša·¸‹¼KrIŸ².…)Ý6©–—.»ß`*ùÒ«ºe+§XG[v«•C,}Óœo4ù$7>*£¸ÛãŸ@Gˆÿ™ºa„"ÎûãÏ~²Ý„–Ô/ub¿úTú-+ÚÍ|†v‘÷T êù¾ÍFjÒ ¦¥ð6xfw‘¿\ÛàÙl7sl(¿â[joæYjnÝ@zöjÖ; Ó!´„ÅŠ«ÉúɸA ׸ÝXœgnŽ—„SÑ?90G¤t“–z¼mŒøâ:œÖ½P{¤*’9>Ü“_$Çá¹Ü¸5ž ´îœïµ$¬iÕþ&ûȸ'‡RUhc½úÔö͇ã08°+çë‡.WQ¯´ —Ö¿þoøÝ…ÿz¿ðþ°‚Ï×%)ßýò™6~Ül¥I¦ÁÍ"Ã6‹Ì £Ö÷Çð£sQÜypkÕù&~ç`Ò7¹ŒÜoîf¦Òù¦Öø?GNp-šƒU÷vWÍ%*ϜŽiåà·s›ceïâƒX]¸Êöç¶C¦Œx4’纠Rã }î¸êܶÂ/rüƒ[õŸõ/ß\xÕ¼…ÇôŽSwqæQÔCŸ{·µXf®gj…0iž…ôEØë+û]ýÙLyÊF™wžKˆzö©ÅmTƒ›Ú ô6.ªÓb»ü‹xâ ™f˜ÅŠ4ôü˜5Å!Ô€MG\JÙjs0ùé‹Ç|ŸwòÕIߥ8‚\¶7æÚ¦†B»t^ ‰7öyD™Ðxê¼¥î}üݳ;œVŸ=|’Q•"%ö‹9ÊøÁyرˆ„)“#†Ÿò¦F¢©ÄgçT?9›-â›ï,8ÊŒ-få4y+QgŒŸt­Ãa–=fn³Å–3èhöl_Õ%Ó·¬Ç?ÿò¿ œëðî Ù)ÞÔµ-'^á©›‰ú\S'ë°ðXŒV4¿JAÙž¸Ì¿ÐsW).ïa<Òû¤O4¤ endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 813 /Length 3698 /Filter /FlateDecode >> stream xÚí[kSÛHýî_Ñ“šB­~woe§6$!ÃL`2Ì$aø`ŒÞ˱Dóë÷ÜnÙ–1!»µ5UXnµn·î=÷ѧ%#XÎ S9³Lç,0—3‘3o˜PLHœh&L`Â1ÐôLJŤ`Òøž”Lzœa<]°L9\˜ÈÒŒÚäL)¦1™ÒÌ`zå˜Á ”g&¦³Òô´dVãL1ëÓš©&¹Ç©…˜G{(ä1ÜÉH&¬Å9é… ä‚Q==ò`™ÍIÑ€0©<ÝjÂk §qÌR÷!Ô…ÞÖã C¬ƒþ¹éÁ8%Œadb´$ Á”Áì˜X ¨²^3`›„ªó0Ôc\A“\õК Ä7„ “J²€sm#pgX ­´° {C°X.dè‰ÀJ@'¹Q˜Rb)Fh2Ì0C†‹C%IŒµ†’Ay\"ü¦$¼r-0+Ê) »ž ¤¡€vV9ꌦ;Ãës„¢Âz Ä…9†C]§i8yÔyÛƒ/™BË5xE@a {x~à`€P’„èι"B¡?'e¤ €&tÈ{±ÅH=MSçÐVÄ’¼"SÐ)°UN±-h&ºê(ä& ¼£—ÝØÁé‚(ë=zÄø>ãÏ«WãOÙƒº4Ãj”‰‡ìÇ{ÛTãâáJ9™ä${V×ŨöËúáó£™ütf4Øëº`Õ{v4.ûãqùõÏ>dýÑ1ÛÛ}^Åñ?¯™izïLÆ™>›SÌ5lŠI¿)h²kÆ«éxÕßL¾®1VOÇj¶W”}ê­O‡cvT4Ÿ‹b43!ÚSMFgkÌk¦ó¨R7ýI3Ce‚CuÆFçgGÅ„ÕͤèŸ]¶Ng/Ws úùéjŸ·¸)¶}6.‹3¸=NÌFUSÔ«‡µiÀQ×èØ½¯.½Ñr0g{Œo ›CóèQ¿ú:.Ù?)züI5jp×ÉI‚=¾WÔÕùdPÔTçbÏNq<ìoV_ØAŽ‹¬qAöøóIu>fí _ÒzÜŸ£ÁWÆ·Y39Ç=žàÊÓâÓpPì=ßÄÝqSH4Èò4õã ­ÙvRÓÅ~ªëñ+ªDU=~Éô•$M1IÄ&›DlA5§¯ÃÞ‚Ùñ–=¾YMŽ‹I´(?ä?ñmþä s,þ ƒà™,Y(eøFÍt6“Xg¬1™rûçG ¦å/†£üñ£Gñ&üqôßç¯÷¶éó`Á7e;Õä¤?ú×^U.ÊX|ÈÐóúÝ^E2 0¬2™6TÞ]&àKRÙ(}Ï*¶s³8ùš£¼fÎÄ‚”YCË¡Í,­ý¹ÇìêRúÍ5¸3qç2"0Få™öWk"¿­&°Ý!ß°°d ž‘Y"2BdÊ^®ÈòBð͵ñ"“Ž(\ž)p! ð¹^›{ÂÆ"éÀ¥‚V Ú…,÷âzuÔý¨£}À ”E jJßz uôý¨£dæQbWÍim3Ÿ¯á,s?ê›9ÑAjY»†:ö^2\¡çà­R¹,]Ô¹ƒ³Ü•®îG‹Ì¦í6Bn[5 ‹ý­W˜®sÚÄù Û⾨¼!îKØiÓŒÿÁùѰT£ãóASMheàãþà˜DÍ7qëE¿,‹²³^t8È›·ïXÔ ÂP‰+ËÃU’*Iæ6 V¬#ª¬Ëhû¶†(ö Xí¢è¸PôÂTsyKœ@*Ü”DaÏátÛÆfÅ™¶ ŠâìTÛ7mcŸà§2˜3LÛØ¦ù#)šTƒý®){º.U|i.Ò– lÍë‹lÍËïÇÖ¬½+³Âæ/³ÌJ…,ÐvÝ f•£l‰ï–~í°ôË„½l†]þªêͪ€X YpÜ6 –è»·÷€ÜÚPºå´”ôb(WÀ7‡ø–ðy¾?ø‚X¾ÉŸFaV}øø:ƒ¾ ”"Ï—°ô߯6…dTH%*¸;ï%¤L$Xæ ëgN4A)¤¹ÿJu‹â*¨ˆzz¶‰oÅTu&è€õQü/ªÜ’Ž"g%€¢ØïCQBX;ÃrEQî. 8OºÅd¼ó²@Z/$#=ëýn•A¯ ì¢hBÖP@€,­#+±ã¡—ëÈzƒÍR¸©Çºž™{ïÖž Ëž¹¿'nB\,”ô„ÿ޵Q“Ið «¶æ!n«¤‰“(•þ»$.½°X;Àür€AU#ÝMiÜÂây)Ç¿mTˆ%bO/Uî;*: ‰õXñuÙrµý–(ôߟïñ9ì8ç2¤ãµ lA s’^ö˜àèhCFï1骣çLÒp’±AãªAŽ;æöIÂ)›‰é\©­QU‘QØÉÑ;¿xt³yÖtݶۣ@Õ`ÒÓ ¤±m¥ñQ¢Õ"Îeè‰Ó:êÒi«œäi|ê•Q#Çë8cêqa>r.ŽŠl;ü;*ÿ»Q*Q:ècŒ]ë3“÷zþ¡Wý9½¶.~½nÆ'ž£Ú9  ó8a@ý4È+•dÑǵr³qma<››ú§JÐGÛ“r®(…ZGáY›t 9 ||Óý/¨¨®OÇ¡íèü½‰ÏKmcòµ?íèxôÒÒǤKm#ŽN©˜äc.3ÓHÇšÀíÕØOOŸÍt«(=õ„˜ÈI¦=vfKí…ÙâØÔ_õ³“t´±.) xœI߆ŒIW[@°FKS¦*Ú&ÞDÅzሽ2Ž“¡ÞhBêñàväL:UÔAKBç:#·ƒ°ý¥åYq¡OÊ™tëxô‚¬LGJÏdé§. høh õ¦–3󲬢AjV8cyŸ^‹Ò©coÍìÌá–ŽíBÐ-Þ/%«—ø&brq|lÛØŸÚíQé¸ôÌ3ÄL³ 1ÿGrMM§’Ë^§¦S™ ,m)¿²¤cŽx ý·-étšk¦G§tÓõî7ÉP»»Lå½³kÓý«3ŽV½`"¦‚’çÇ4O:zi©¨wŽ&mBê…£už‚Ì:j+J`‹=œÊÀ£­~i<$ ?ÆÀ#ÒQ0Ò›¯)ÓL©“Õ„œâQ)C&ÛYQ!UfÕÐ!†eh‰­˜½éz«„ÈÉíÑŸêI·­$ݺ…$öK£bЪ¸"‰öÜkErQ¢+ŽôÂÒǬŠY<•¤ßYØdÌagûFÛ §E=˜ ÇØ´¦mÑnÿŒöÑ/ßüôzó‡ÍbÒßÇ–l§U{ÕY¡²R3¤7ãŽnð ©è—‰ÈÆŸÔÚ¡9'°=ì*†'§ áˆmZ‘®m€8ôøvÓ/‡ƒÇ£“²`9¶ÜMqö;“9†½ií0ÇiB›±ü1ßäOøSþŒoñçqkÿ Áwø.ÿ•¿ä¿ñ=ìÌ_ñ×üwþ†¿å}Þ¯›b2¬?ð#~4éвxߤք¦ÍE3ëF;]ðAUb£?¨ÎÎúü˜WeÙŸð‚Gµxññ¼_òâË ìŸñ÷üýðSÁßcÓËOøÉ¤èã¦ü”Ÿ~Ÿ#>äÿæxÉË¢®ùñÑpTðôû­zx2â¯Ð1æqëU‰­¤ÈšVÇ|\ž×ü#ÿx^ÔñÄÇóª)ŽÊÔ¨‡!Ÿðš×Å'ܳ~áuÙ¯OyÛÓIQðæsÅÏùùè7T“‚âŸùþ•ÿÅÿ*&ÕÃäÑ­!ÿé‡;¢È7öŠ“s„Üåj™³ ª4BÓ{qaôż‹a>G0_‘oÎϱ™XN·y²ÍS-%Ú×£ó²,–S¹2:¦D~PŠ´YR."ŸrƒÐ_' >&üS_ ÷³aºm ü¦ ô+¢[©›¸ewûÝæ›Ö-þ¯h ¯Ä–‹ü‚W@»~‰§³Øtv©s¼[éœèÔ8”#`:Œ@Î`Lx¥ý¼h¿¹‰ý¿üúûϯŸÏÃr³*¯Ìnúñ†¤ß’ûœBSÝ„ !§0ÝÅÁøEúÑ|2}›E[ÝMl}»ûbû—7‹¶®0Òæ­‘ÎÞÍÈ™§…²+MLKÞ~[Ó¬-^´¦L3h²"-–SáF…þùö˽Ççð\vV¡è§ïwÈ…Nø°26Ûl´ LÕ7*ÆïvŸý¶ùî‡ÝáÙÑy s_\ Â)²ÔErF: ­Y]$» šp«BAw—3%íÜm-¥`8ž1’9Îêé"èð€EdnTŸìîo½yÝE†Jâ*d4̤·ÈQ ‚QdÄ"2bµªš0R-æÈ3¬P´.½î€Óåf§hÚ¥f^%;8-0¦ÅÚ©/©ÏFƒê„ ß¿/èõEQ³%º\»¦)]œQ·ÝHôÜýòÕoFc# L¹ß® ­ ‰ìQ‚GÓH÷dE´> endobj 147 0 obj << /Type /ObjStm /N 27 /First 215 /Length 884 /Filter /FlateDecode >> stream xÚ­–moÛ6ÇßëSÜËA&I‘P°“ôa‹/^°®C_(1á p¤L’‹íÛïHÑ õàòÆ4wþx'ž¤Rˆ@%€q ©Ž ¡”ÉbHhY¥ ¤<DŒx((&JéG¤di ÈÈ"\Ò(%pȹF>œ¤™ _I#ùÅœ&ä'#ÉO*ä¦8.ŒÉ-Ii-F á†ÃÔFã §?F•¶2ð,&GŒ%ýQ,xû6ÿøïICø¾,š Üî;5F ÂEVk³á‡OëÛùüìz¹ÉŠ£ó›û}þÏA6ðR×UþÔ”±3ÊÔ-Ùóªn.¾eH„×™›P‚ðÏ|Û|«éHØú^å6/v&3ÖòîÝO Íן?Þ-ÎºÊ ܲ,ÊóÛò1+Æp<ÂqôáXìÁ±!•â§á‹ËOW¿öáN掳àá3ª×Àû²ºú}ñål•?Þj¼>_”ûíDUÅ,ŽzUU^â^…ìbµyÿùÎ'»Õ»Ã™’‰þó–zdü5È6Ëå_>>_õϪ‰rŽ’†¼Çff]=Ó[2f[g;]áEy Š^g•¦¦ÍØèßòm  {NHÜ`ë)¶ƒÝ‡š’…ûú‚<;%QÒj ÿ‘FrŒIÐ…àDÈÍ¡Ùç…‰²©—7“(îʶzu‘y³× \™wˆ²ËçºÒßM³õSiC¹êBÅ ¡Nv¥ÿíXú2¼“‰z2‰'Â’q KLžÞö®=ôUâN…V‰<•I–.˜œTqwÅ©ˆ± vEqZ…ù* Å.¡8™Pˆíò)_(g/Ÿ~ëèÀìSwìÄÇ‹ÖÛ¨K9NodÅ{Y^eš.Á›Ëòá|ÓdU3ew€7Ot]~ÁÈÔ›³$±7ç4÷×ÅŒ>3¼y<£d¹›^çy3ØíèöuHdíÒ„KOO‘¡Í¾3$ÆàˆjýÐäea yßBتo!p¹Ž{z^#®ã”»“ׇûn#³yÛJvBè8};à”é3>a§Œ¶ï1܃zà¯Óaù¨ ] /Length 397 /Filter /FlateDecode >> stream xÚÓIRSQ‡ñs "4b::•Ð(DÚÐ…6ô =iT˜èÀrNœ¸€»ªÜˆË°Š…0` ÷ûO~õÕ¹y7/÷½˜ÙпÄ,1O*×FõFB+å@žY Uà³fê!TCÙªÁ³&ªà ³FªêažY%´ºÀL«Ú@;/2ÓeúrÝÕ*3í¬oƒ§ÐnfýÀT¬U:Ö˜*kB•UTåbM«:bͪ:c•T]±TݱLÕÏaúܬI'ù>Ã3xÉMêü®à\3ã8‡¸,pœAÇùúÝên´ß ¼!·–Q͆aFÜ:þh6Êzn“P„)˜… ·ü¹>7 +°sn…-”` –Ýf²š•ÙTOuÖÝÊwZØ€ Ø‚° —°»ðö`àŽÜ¶ïµÕ±Û÷´êÄígNuêv»©zçžÚR½wÿQRUÜÿ–U<éºRy²¸®:÷äëo)obàý ¼w#´O&¤ O¾”ãáÛ/ûWAÉ endstream endobj startxref 159111 %%EOF BiocParallel/inst/snow/0000755000175200017520000000000014136050065016070 5ustar00biocbuildbiocbuildBiocParallel/inst/snow/RMPInode.R0000755000175200017520000000126114136050065017633 0ustar00biocbuildbiocbuildlocal({ snowlib <- Sys.getenv("R_SNOW_LIB") outfile <- Sys.getenv("R_SNOW_OUTFILE") args <- commandArgs() pos <- match("--args", args) args <- args[-(1 : pos)] for (a in args) { pos <- regexpr("=", a) name <- substr(a, 1, pos - 1) value <- substr(a,pos + 1, nchar(a)) switch(name, SNOWLIB = snowlib <- value, OUT = outfile <- value) } if (! (snowlib %in% .libPaths())) .libPaths(c(snowlib, .libPaths())) library(methods) ## because Rscript as of R 2.7.0 doesn't load methods loadNamespace("Rmpi") loadNamespace("snow") BiocParallel::bprunMPIworker() quit("no") }) BiocParallel/inst/snow/RSOCKnode.R0000644000175200017520000000160714136050065017746 0ustar00biocbuildbiocbuildlocal({ master <- "localhost" port <- "" snowlib <- Sys.getenv("R_SNOW_LIB") outfile <- Sys.getenv("R_SNOW_OUTFILE") ##**** defaults to ""; document args <- commandArgs() pos <- match("--args", args) args <- args[-(1 : pos)] for (a in args) { pos <- regexpr("=", a) name <- substr(a, 1, pos - 1) value <- substr(a,pos + 1, nchar(a)) switch(name, MASTER = master <- value, PORT = port <- value, SNOWLIB = snowlib <- value, OUT = outfile <- value) } if (! (snowlib %in% .libPaths())) .libPaths(c(snowlib, .libPaths())) library(methods) ## because Rscript as of R 2.7.0 doesn't load methods loadNamespace("snow") if (port == "") port <- getClusterOption("port") BiocParallel::.bpworker_impl(snow::makeSOCKmaster(master, port)) quit("no") }) BiocParallel/inst/unitTests/0000755000175200017520000000000014136050065017104 5ustar00biocbuildbiocbuildBiocParallel/inst/unitTests/test_BatchJobsParam.R0000644000175200017520000000071614136050065023112 0ustar00biocbuildbiocbuildtest_BatchJobsParam <- function() { param <- BatchJobsParam(2, progressbar=FALSE, cleanup=TRUE) checkEquals(as.list(sqrt(1:3)), bplapply(1:3, sqrt, BPPARAM=param)) X <- list(1, "2", 3) param <- BatchJobsParam(2, progressbar=FALSE, stop.on.error=FALSE) res <- tryCatch({ bplapply(X, sqrt, BPPARAM=param) }, error=identity) checkTrue(is(res, "bplist_error")) checkTrue(is(attr(res, "result")[[2]], "remote_error")) } BiocParallel/inst/unitTests/test_BatchtoolsParam.R0000644000175200017520000003571214136050065023361 0ustar00biocbuildbiocbuild.old_options <- NULL .setUp <- function() .old_options <<- options(BIOCPARALLEL_BATCHTOOLS_REMOVE_REGISTRY_WAIT = 1) .tearDown <- function() { options(.old_options) } .n_connections <- function() { gc() # close connections nrow(showConnections()) } test_BatchtoolsParam_constructor <- function() { param <- BatchtoolsParam() checkTrue(validObject(param)) checkTrue(is(param$registry, "NULLRegistry")) isWindows <- .Platform$OS.type == "windows" cluster <- if (isWindows) "socket" else "multicore" nworkers <- if (isWindows) snowWorkers() else multicoreWorkers() checkIdentical(cluster, bpbackend(param)) checkIdentical(nworkers, bpnworkers(param)) checkIdentical(3L, bpnworkers(BatchtoolsParam(3L))) cluster <- "socket" param <- BatchtoolsParam(cluster=cluster) checkIdentical(cluster, bpbackend(param)) checkIdentical(nworkers, bpnworkers(param)) cluster <- "multicore" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(cluster=cluster) checkIdentical(cluster, bpbackend(param)) checkIdentical(nworkers, bpnworkers(param)) } cluster <- "interactive" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(cluster=cluster) checkIdentical(cluster, bpbackend(param)) checkIdentical(1L, bpnworkers(param)) } cluster <- "sge" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) } cluster <- "lsf" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) } cluster <- "slurm" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) } cluster <- "openlava" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) } cluster <- "torque" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) } cluster <- "unknown" checkException(BatchtoolsParam(cluster=cluster)) } test_BatchtoolsWorkers <- function() { socket <- snowWorkers() multicore <- multicoreWorkers() isWindows <- .Platform$OS.type == "windows" checkIdentical( if (isWindows) socket else multicore, batchtoolsWorkers() ) checkIdentical(socket, batchtoolsWorkers("socket")) cluster <- "multicore" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) checkIdentical(multicore, batchtoolsWorkers(cluster)) checkIdentical(1L, batchtoolsWorkers("interactive")) checkException(batchtoolsWorkers("unknown")) } .test_BatchtoolsParam_bpisup_start_stop <- function(param) { n_connections <- .n_connections() checkIdentical(FALSE, bpisup(param)) checkIdentical(TRUE, bpisup(bpstart(param))) checkIdentical(FALSE, bpisup(bpstop(param))) checkIdentical(n_connections, .n_connections()) } test_BatchtoolsParam_bpisup_start_stop_default <- function() { param <- BatchtoolsParam(workers=2) .test_BatchtoolsParam_bpisup_start_stop(param) } test_BatchtoolsParam_bpisup_start_stop_socket <- function() { cluster <- "socket" param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) .test_BatchtoolsParam_bpisup_start_stop(param) } test_BatchtoolsParam_bpisup_start_stop_interactive <- function() { cluster <- "interactive" param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical(cluster, bpbackend(param)) .test_BatchtoolsParam_bpisup_start_stop(param) } test_BatchtoolsParam_bplapply <- function() { n_connections <- .n_connections() fun <- function(x) Sys.getpid() ## Check for all cluster types cluster <- "interactive" param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bplapply(1:5, fun, BPPARAM=param) checkIdentical(1L, length(unique(unlist(result)))) cluster <- "multicore" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bplapply(1:5, fun, BPPARAM=param) checkIdentical(2L, length(unique(unlist(result)))) } cluster <- "socket" param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bplapply(1:5, fun, BPPARAM=param) checkIdentical(2L, length(unique(unlist(result)))) checkIdentical(n_connections, .n_connections()) } ## Check registry test_BatchtoolsParam_registry <- function() { n_connections <- .n_connections() param <- BatchtoolsParam() checkTrue(is(param$registry, "NULLRegistry")) bpstart(param) checkTrue(!is(param$registry, "NULLRegistry")) checkTrue(is(param$registry, "Registry")) bpstop(param) checkIdentical(n_connections, .n_connections()) } ## Check bpjobname test_BatchtoolsParam_bpjobname <- function() { checkIdentical("BPJOB", bpjobname(BatchtoolsParam())) checkIdentical("myjob", bpjobname(BatchtoolsParam(jobname="myjob"))) } ## Check bpstopOnError test_BatchtoolsParam_bpstopOnError <- function() { checkTrue(bpstopOnError(BatchtoolsParam())) checkIdentical(FALSE, bpstopOnError(BatchtoolsParam(stop.on.error=FALSE))) } ## Check bptimeout test_BatchtoolsParam_bptimeout <- function() { checkEquals(30L * 24L * 60L * 60L, bptimeout(BatchtoolsParam())) checkEquals(123L, bptimeout(BatchtoolsParam(timeout=123))) } ## Check bpRNGseed test_BatchtoolsParam_bpRNGseed <- function() { n_connections <- .n_connections() ## Check setting RNGseed param <- BatchtoolsParam(RNGseed=123L) checkEqualsNumeric(123L, bpRNGseed(param)) ## Check reset RNGseed new_seed <- 234L bpRNGseed(param) <- new_seed checkEqualsNumeric(new_seed, bpRNGseed(param)) ## Check after bpstart bpstart(param) checkEqualsNumeric(new_seed, bpRNGseed(param)) checkEqualsNumeric(new_seed, param$registry$seed) bpstop(param) ## Check failure to reset ## ## Check NULL value param <- BatchtoolsParam() checkTrue(is.na(bpRNGseed(param))) ## ## Check fail checkException({bpRNGseed(param) <- "abc"}) checkIdentical(n_connections, .n_connections()) } test_BatchtoolsParam_bplog <- function() { n_connections <- .n_connections() ## Test param w/o log and logdir checkTrue(is.na(bplogdir(BatchtoolsParam()))) checkTrue(!bplog(BatchtoolsParam())) ## test param with log, w/o logdir param <- BatchtoolsParam(log=TRUE) checkTrue(bplog(param)) checkTrue(is.na(bplogdir(param))) ## Check if setter works temp_log_dir <- tempfile() dir.create(temp_log_dir) bplogdir(param) <- temp_log_dir checkIdentical(temp_log_dir, bplogdir(param)) ## test param without log and w logdir checkException(BatchtoolsParam(logdir=temp_log_dir)) ## check logs in logdir param <- BatchtoolsParam(log=TRUE, logdir=temp_log_dir) bplapply(1:5, sqrt, BPPARAM=param) checkTrue(file.exists(temp_log_dir)) checkTrue(file.exists(file.path(temp_log_dir, "logs"))) checkIdentical(n_connections, .n_connections()) } test_BatchtoolsParam_available_clusters <- function() { clusters <- BiocParallel:::.BATCHTOOLS_CLUSTERS checkTrue(all.equal( c("socket", "multicore", "interactive", "sge", "slurm", "lsf", "openlava", "torque"), clusters)) } test_BatchtoolsParam_template <- function() { .bptemplate <- BiocParallel:::.bptemplate cluster <- "socket" param <- BatchtoolsParam(cluster=cluster) checkTrue(is.na(.bptemplate(param))) cluster <- "multicore" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(cluster=cluster) checkTrue(is.na(.bptemplate(param))) } cluster <- "interactive" param <- BatchtoolsParam(cluster=cluster) checkTrue(is.na(.bptemplate(param))) ## Test clusters with template cluster <- "sge" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical("sge-simple.tmpl", basename(.bptemplate(param))) } cluster <- "slurm" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical("slurm-simple.tmpl", basename(.bptemplate(param))) } cluster <- "lsf" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical("lsf-simple.tmpl", basename(.bptemplate(param))) } cluster <- "openlava" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical("openlava-simple.tmpl", basename(.bptemplate(param))) } cluster <- "torque" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) checkIdentical("torque-lido.tmpl", basename(.bptemplate(param))) } ## Check setting template to file path cluster <- "sge" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { template <- system.file( "templates", "sge-simple.tmpl", package="batchtools" ) param <- BatchtoolsParam( workers=2, cluster=cluster, template=template ) checkIdentical(template, .bptemplate(param)) } } ## Run only of SGE clusters, this will fail on other machines test_BatchtoolsParam_sge <- function() { n_connections <- .n_connections() if (!BiocParallel:::.batchtoolsClusterAvailable("sge")) return() fun <- function(x) Sys.getpid() template <- system.file( package="BiocParallel", "unitTests", "test_script", "test-sge-template.tmpl" ) param <- BatchtoolsParam(workers=2, cluster="sge", template=template) bpstart(param) checkIdentical("SGE", param$registry$backend) result <- bplapply(1:5, fun, BPPARAM=param) checkIdentical(2L, length(unique(unlist(result)))) bpstop(param) checkIdentical(n_connections, .n_connections()) } ## TODO: write tests for other cluster types, slurm, lsf, torque, openlava test_BatchtoolsParam_bpmapply <- function() { n_connections <- .n_connections() fun <- function(x, y, z) x + y + z ## Initial test param <- BatchtoolsParam() result <- bpmapply(fun, x = 1:3, y = 1:3, MoreArgs = list(z = 1), SIMPLIFY = TRUE, BPPARAM = param) checkIdentical(c(3,5,7), result) cluster <- "interactive" param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bpmapply(fun, x = 1:3, y = 1:3, MoreArgs = list(z = 1), SIMPLIFY = TRUE, BPPARAM=param) checkIdentical(c(3,5,7), result) cluster <- "multicore" if (BiocParallel:::.batchtoolsClusterAvailable(cluster)) { param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bpmapply(fun, x = 1:3, y = 1:3, MoreArgs = list(z = 1), SIMPLIFY = TRUE, BPPARAM=param) checkIdentical(c(3,5,7), result) } cluster <- "socket" param <- BatchtoolsParam(workers=2, cluster=cluster) result <- bpmapply(fun, x = 1:3, y = 1:3, MoreArgs = list(z = 1), SIMPLIFY = TRUE, BPPARAM=param) checkIdentical(c(3,5,7), result) checkIdentical(n_connections, .n_connections()) } test_BatchtoolsParam_bpvec <- function() { ## Mutlticore param <- BatchtoolsParam(workers=2) result <- bpvec(1:10, seq_along, BPPARAM=param) target <- as.integer(rep(1:5, 2)) checkIdentical(target, result) ## socket param <- BatchtoolsParam(workers=2, cluster="socket") result <- bpvec(1:10, seq_along, BPPARAM=param) target <- as.integer(rep(1:5,2)) checkIdentical(target, result) } test_BatchtoolsParam_bpvectorize <- function() { psqrt <- bpvectorize(sqrt) checkTrue(is(psqrt, "function")) ## Mutlticore param <- BatchtoolsParam(workers=2) bpseq_along <- bpvectorize(seq_along, BPPARAM=param) res <- bpseq_along(1:10) target <- as.integer(rep(1:5, 2)) checkIdentical(as.integer(target), res) ## Socket param <- BatchtoolsParam(workers=2, cluster="socket") bpseq_along <- bpvectorize(seq_along, BPPARAM=param) res <- bpseq_along(1:10) target <- as.integer(rep(1:5, 2)) checkIdentical(as.integer(target), res) } test_BatchtoolsParam_bpiterate <- function() { n_connections <- .n_connections() ## Iterator function ITER <- function(n=5) { i <- 0L function() { i <<- i + 1L if (i > n) return(NULL) rep(i, 100) } } ## test function FUN <- function(x, k) { sum(x) + k } ## Multicore cluster param <- BatchtoolsParam() res <- bpiterate(ITER=ITER(), FUN=FUN, k=5, BPPARAM=param) ## Check Identical result target <- list(105, 205, 305, 405, 505) checkIdentical(target, res) ## socket cluster param <- BatchtoolsParam(cluster="socket") res <- bpiterate(ITER=ITER(), FUN=FUN, k=5, BPPARAM=param) ## Check Identical result checkIdentical(target, res) ## Test REDUCE on socket res <- bpiterate(ITER=ITER(), FUN=FUN, k=5, REDUCE=`+`, BPPARAM=param) ## Check Identical result checkIdentical(1525, res) ## Test REDUCE, init on mutlicore param <- BatchtoolsParam() res <- bpiterate(ITER=ITER(), FUN=FUN, k=5, REDUCE=`+`, init = 10, BPPARAM=param) ## Check Identical result checkIdentical(1535, res) checkIdentical(n_connections, .n_connections()) } test_BatchtoolsParam_bpsaveregistry <- function() { .bpregistryargs <- BiocParallel:::.bpregistryargs .bpsaveregistry <- BiocParallel:::.bpsaveregistry .bpsaveregistry_path <- BiocParallel:::.bpsaveregistry_path file.dir <- tempfile() ## Set param with save registry registryargs <- batchtoolsRegistryargs(file.dir = file.dir) param <- BatchtoolsParam(saveregistry=TRUE, registryargs = registryargs) checkIdentical(.bpsaveregistry(param), TRUE) checkIdentical(.bpregistryargs(param)$file.dir, file.dir) ## increment path extension file.dir <- file.path(dirname(file.dir), basename(file.dir)) checkIdentical(.bpsaveregistry_path(param), paste0(file.dir, "-1")) dir.create(.bpsaveregistry_path(param)) checkIdentical(.bpsaveregistry_path(param), paste0(file.dir, "-2")) ## create registry path <- .bpsaveregistry_path(param) checkTrue(!dir.exists(path)) res <- bplapply(1:5, sqrt, BPPARAM=param) checkTrue(dir.exists(path)) } BiocParallel/inst/unitTests/test_BiocParallelParam.R0000644000175200017520000000105614136050065023602 0ustar00biocbuildbiocbuildtest_BiocParallelParam <- function() { ## BiocParallelParam is a virtual class checkException(BiocParallel:::.BiocParallelParam(), silent=TRUE) ## minimal non-virtual class & constructor .A <- setRefClass("A", contains = "BiocParallelParam") A <- function(...) { prototype <- .prototype_update(.BiocParallelParam_prototype, ...) do.call(.A, prototype) } ## no arg constructor checkTrue(validObject(A())) ## non-default inherited slot checkIdentical("WARN", bpthreshold(A(threshold = "WARN"))) } BiocParallel/inst/unitTests/test_DoparParam.R0000644000175200017520000000145514136050065022321 0ustar00biocbuildbiocbuildtest_DoparParam_orchestration_error <- function() { test <- requireNamespace("foreach", quietly = TRUE) && requireNamespace("doParallel", quietly = TRUE) if (!test) DEACTIVATED("'foreach' or 'doParallel' not available") if (identical(.Platform$OS.type, "windows")) DEACTIVATED("'DoparParam' orchestration error test not run on Windows") old_warn <- options(warn = 2) on.exit(options(old_warn)) y <- tryCatch({ cl <- parallel::makeCluster(1L) doParallel::registerDoParallel(cl) bplapply(1L, function(x) quit("no"), BPPARAM = DoparParam()) }, error = function(e) { conditionMessage(e) }, finally = { parallel::stopCluster(cl) }) checkTrue(startsWith(y, "'DoparParam()' foreach() error occurred: ")) } BiocParallel/inst/unitTests/test_MulticoreParam.R0000644000175200017520000000141214136050065023210 0ustar00biocbuildbiocbuildtest_MulticoreParam_progressbar <- function() { if (.Platform$OS.type == "windows") return() checkIdentical(bptasks(MulticoreParam()), 0L) checkIdentical(bptasks(MulticoreParam(tasks = 0L, progressbar = TRUE)), 0L) checkIdentical( bptasks(MulticoreParam(progressbar = TRUE)), .Machine$integer.max ) } test_MulticoreParam_bpforceGC <- function() { if (.Platform$OS.type == "windows") return() checkIdentical(TRUE, bpforceGC(MulticoreParam())) checkIdentical(FALSE, bpforceGC(MulticoreParam(force.GC = FALSE))) checkIdentical(TRUE, bpforceGC(MulticoreParam(force.GC = TRUE))) checkException(MulticoreParam(force.GC = NA), silent = TRUE) checkException(MulticoreParam(force.GC = 1:2), silent = TRUE) } BiocParallel/inst/unitTests/test_SerialParam.R0000644000175200017520000000210014136050065022457 0ustar00biocbuildbiocbuildtest_SerialParam_bpnworkers <- function() { checkIdentical(1L, bpnworkers(SerialParam())) checkIdentical(1L, bpnworkers(bpstart(SerialParam()))) checkIdentical(1L, bpnworkers(bpstop(bpstart(SerialParam())))) } test_SerialParam_bpbackend <- function() { checkIdentical(NULL, bpbackend(SerialParam())) checkTrue(is(bpbackend(bpstart(SerialParam())), "SerialBackend")) checkIdentical(NULL, bpbackend(bpstop(bpstart(SerialParam())))) } test_SerialParam_bpforceGC <- function() { checkIdentical(FALSE, bpforceGC(SerialParam())) checkIdentical(FALSE, bpforceGC(SerialParam(force.GC = FALSE))) checkIdentical(TRUE, bpforceGC(SerialParam(force.GC = TRUE))) checkException(SerialParam(force.GC = NA), silent = TRUE) checkException(SerialParam(force.GC = 1:2), silent = TRUE) } test_SerialParam_bpisup_start_stop <- function() { param <- SerialParam() checkIdentical(FALSE, bpisup(param)) # not always up param <- bpstart(param) checkIdentical(TRUE, bpisup(param)) param <- bpstop(param) checkIdentical(FALSE, bpisup(param)) } BiocParallel/inst/unitTests/test_SnowParam.R0000644000175200017520000000726014136050065022202 0ustar00biocbuildbiocbuildtest_SnowParam_construction <- function() { checkException(SnowParam(logdir = tempdir())) p <- MulticoreParam(jobname = 'test') checkIdentical(bpjobname(p), 'test') } test_SnowParam_SOCK <- function() { if (!requireNamespace("snow", quietly=TRUE)) DEACTIVATED("'snow' package did not load") param <- SnowParam(2, "SOCK", tasks=2) checkIdentical(FALSE, bpisup(param)) exp <- bplapply(1:2, function(i) Sys.getpid(), BPPARAM=param) checkIdentical(2L, length(unique(unlist(exp)))) checkIdentical(FALSE, bpisup(param)) } test_SnowParam_SOCK_character <- function() { bpstop(bpstart(SnowParam("localhost"))) } test_SnowParam_MPI <- function() { if (.Platform$OS.type == "windows") DEACTIVATED("MPI tests not run on Windows") DEACTIVATED("MPI tests not run") param <- SnowParam(2, "MPI", tasks=2) checkIdentical(FALSE, bpisup(param)) exp <- bplapply(1:2, function(i) mpi.comm.rank(), BPPARAM=param) checkIdentical(c(1L, 2L), sort(unlist(exp))) checkIdentical(FALSE, bpisup(param)) } test_SnowParam_coerce_from_SOCK <- function() { if (!requireNamespace("snow", quietly=TRUE)) DEACTIVATED("'snow' package did not load") cl <- parallel::makeCluster(2L, "SOCK") p <- as(cl, "SnowParam") checkTrue(validObject(p)) obs <- tryCatch(bpstart(p), error=conditionMessage) exp <- "'bpstart' not available; instance from outside BiocParallel?" checkIdentical(exp, obs) obs <- tryCatch(bpstop(p), warning=conditionMessage) exp <- "'bpstop' not available; instance from outside BiocParallel?" checkIdentical(exp, obs) exp <- bplapply(1:2, function(i) Sys.getpid(), BPPARAM=p) checkIdentical(2L, length(unique(unlist(exp)))) checkIdentical(TRUE, bpisup(p)) parallel::stopCluster(cl) } test_SnowParam_coerce_from_MPI <- function() { if (.Platform$OS.type == "windows") DEACTIVATED("MPI tests not run on Windows") if (!requireNamespace("snow", quietly=TRUE) || !requireNamespace("Rmpi", quietly=TRUE)) DEACTIVATED("'snow' and/or 'Rmpi' package did not load") DEACTIVATED("MPI tests not run") cl <- parallel::makeCluster(2L, "MPI") p <- as(cl, "SnowParam") checkTrue(validObject(p)) obs <- tryCatch(bpstart(p), error=conditionMessage) exp <- "'bpstart' not available; instance from outside BiocParallel?" checkIdentical(exp, obs) obs <- tryCatch(bpstop(p), error=conditionMessage) exp <- "'bpstop' not available; instance from outside BiocParallel?" checkIdentical(exp, obs) exp <- bplapply(1:2, function(i) mpi.comm.rank(), BPPARAM=p) checkIdentical(c(1L, 2L), sort(unlist(exp))) checkIdentical(TRUE, bpisup(p)) parallel::stopCluster(cl) } test_SnowParam_workers <- function() { if (.Platform$OS.type == "windows") return() if (!requireNamespace("snow", quietly=TRUE) || !requireNamespace("Rmpi", quietly=TRUE)) DEACTIVATED("'snow' and/or 'Rmpi' package did not load") checkException(SnowParam("host", "MPI"), silent=TRUE) checkException(SnowParam("host", "FORK"), silent=TRUE) } test_SnowParam_progressbar <- function() { checkIdentical(bptasks(SnowParam()), 0L) checkIdentical(bptasks(SnowParam(tasks = 0L, progressbar = TRUE)), 0L) checkIdentical(bptasks(SnowParam(progressbar = TRUE)), .Machine$integer.max) } test_SnowParam_bpforceGC <- function() { checkIdentical(FALSE, bpforceGC(SnowParam())) checkIdentical(FALSE, bpforceGC(SnowParam(force.GC = FALSE))) checkIdentical(TRUE, bpforceGC(SnowParam(force.GC = TRUE))) checkException(SnowParam(force.GC = NA), silent = TRUE) checkException(SnowParam(force.GC = 1:2), silent = TRUE) } BiocParallel/inst/unitTests/test_bpaggregate.R0000644000175200017520000000176214136050065022544 0ustar00biocbuildbiocbuildtest_bpaggregate <- function() { x <- data.frame(a=1:10, b=10:1) by <- list(c(rep("a", 5), rep("b", 5))) simplify <- TRUE FUN <- mean x1 <- aggregate(x, by=by, FUN=FUN) param <- bpparam() bpworkers(param) <- 2 x2 <- bpaggregate(x, by=by, FUN=FUN, BPPARAM=param, simplify=simplify) checkEquals(x1, x2) by[[2]] <- c(rep("c", 8), rep("d", 2)) x1 <- aggregate(x, by=by, FUN=FUN) x2 <- bpaggregate(x, by=by, FUN=FUN, BPPARAM=param, simplify=simplify) checkEquals(x1, x2) closeAllConnections() TRUE } test_bpaggregate_formula <- function() { f <- Sepal.Length ~ Species iris1 <- iris iris1$Species <- # FIXME: bpaggregate doesn't respect factor as.character(iris1$Species) x1 <- aggregate(f, data=iris1, FUN=sum) x2 <- bpaggregate(f, data = iris1, FUN = sum) checkIdentical(x1, x2) iris1 <- iris1[sample(nrow(iris1)),] x3 <- bpaggregate(f, data = iris1, FUN = sum) checkIdentical(x2, x3) } BiocParallel/inst/unitTests/test_bpexportglobals.R0000644000175200017520000000256314136050065023503 0ustar00biocbuildbiocbuildtest_bpexportglobals_params <- function() { ## Multicore if (.Platform$OS.type == "unix") { param <- MulticoreParam() checkIdentical(bpexportglobals(param), TRUE) bpexportglobals(param) <- FALSE checkIdentical(bpexportglobals(param), FALSE) param <- MulticoreParam(exportglobals=FALSE) checkIdentical(bpexportglobals(param), FALSE) } ## Snow param <- SnowParam() checkIdentical(bpexportglobals(param), TRUE) bpexportglobals(param) <- FALSE checkIdentical(bpexportglobals(param), FALSE) param <- SnowParam(exportglobals=FALSE) checkIdentical(bpexportglobals(param), FALSE) ## Batchtools param <- BatchtoolsParam() checkIdentical(bpexportglobals(param), TRUE) bpexportglobals(param) <- FALSE checkIdentical(bpexportglobals(param), FALSE) param <- BatchtoolsParam(exportglobals=FALSE) checkIdentical(bpexportglobals(param), FALSE) } test_bpexportglobals_bplapply <- function() { oopts <- options(BAR="baz") on.exit(options(oopts)) param <- SnowParam(2L, exportglobals=FALSE) current <- bplapply(1:2, function(i) getOption("BAR"), BPPARAM=param) checkIdentical(NULL, unlist(current)) param <- SnowParam(2L, exportglobals=TRUE) current <- bplapply(1:2, function(i) getOption("BAR"), BPPARAM=param) checkIdentical("baz", unique(unlist(current))) } BiocParallel/inst/unitTests/test_bpiterate.R0000644000175200017520000001007014136050065022243 0ustar00biocbuildbiocbuildquiet <- suppressWarnings .lazyCount <- function(count) { i <- 0L function() { if (i >= count) return(NULL) i <<- i + 1L i } } test_bpiterate_Params <- function() { ## chunks greater than number of workers x <- 1:5 expected <- lapply(x, sqrt) FUN <- function(count, ...) sqrt(count) params <- list(serial=SerialParam(), snow=SnowParam(2)) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) for (p in params) { ITER <- .lazyCount(length(x)) quiet(res <- bpiterate(ITER, FUN, BPPARAM=p)) checkIdentical(expected, res) } ## chunks less than number of workers x <- 1:2 expected <- lapply(x, sqrt) FUN <- function(count, ...) sqrt(count) params <- list(serial=SerialParam(), snow=SnowParam(3)) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(3) for (p in params) { ITER <- .lazyCount(length(x)) quiet(res <- bpiterate(ITER, FUN, BPPARAM=p)) checkIdentical(expected, res) } doParallel::registerDoParallel(2) params <- list(dopar=DoparParam(), batchjobs=BatchJobsParam(2, progressbar=FALSE)) for (p in params) { ITER <- .lazyCount(length(x)) checkException(bpiterate(ITER, FUN, BPPARAM=p), silent=TRUE) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } test_bpiterate_REDUCE <- function() { ncount <- 3L params <- list(snow=SnowParam(ncount)) ## On Windows MulticoreParam dispatches to SerialParam where ## 'reduce.in.order' does not apply (always TRUE) if (.Platform$OS.type != "windows") params <- c(params, multi=MulticoreParam(ncount)) for (p in params) { ## no REDUCE FUN <- function(count, ...) rep(count, 10) ITER <- .lazyCount(ncount) res <- bpiterate(ITER, FUN, BPPARAM=p) checkTrue(length(res) == ncount) expected <- list(rep(1L, 10), rep(2L, 10), rep(3L, 10)) checkIdentical(expected, res) ## REDUCE FUN <- function(count, ...) rep(count, 10) ITER <- .lazyCount(ncount) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=`+`) checkIdentical(rep(6L, 10), res) FUN <- function(count, ...) { Sys.sleep(3 - count) count } ## 'reduce.in.order' FALSE ITER <- .lazyCount(ncount) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=paste0, reduce.in.order=FALSE) checkIdentical("321", res) ITER <- .lazyCount(ncount) res <- quiet(bpiterate(ITER, FUN, BPPARAM=p, REDUCE=paste0, init=0, reduce.in.order=FALSE)) checkIdentical("0321", res) ## 'reduce.in.order' TRUE ITER <- .lazyCount(ncount) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=paste0, reduce.in.order=TRUE) checkIdentical("123", res) ITER <- .lazyCount(ncount) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=paste0, init=0, reduce.in.order=TRUE) checkIdentical("0123", res) } ## clean up closeAllConnections() TRUE } test_bpiterate_REDUCE_SerialParam <- function() { p <- SerialParam() FUN <- identity ## REDUCE missing, concatenate ITER <- .lazyCount(0) res <- bpiterate(ITER, FUN, BPPARAM=p) checkIdentical(list(), res) ITER <- .lazyCount(1) res <- bpiterate(ITER, FUN, BPPARAM=p) checkIdentical(list(1L), res) ITER <- .lazyCount(5) res <- bpiterate(ITER, FUN, BPPARAM=p) checkIdentical(as.list(1:5), res) ## REDUCE == `+` ITER <- .lazyCount(0) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=`+`) checkIdentical(list(), res) ITER <- .lazyCount(1) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=`+`) checkIdentical(1L, res) ITER <- .lazyCount(5) res <- bpiterate(ITER, FUN, BPPARAM=p, REDUCE=`+`) checkIdentical(15L, res) } BiocParallel/inst/unitTests/test_bplapply.R0000644000175200017520000000761414136050065022121 0ustar00biocbuildbiocbuildquiet <- suppressWarnings test_bplapply_Params <- function() { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), dopar=DoparParam(), batchjobs=BatchJobsParam(2, progressbar=FALSE)) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) x <- 1:10 expected <- lapply(x, sqrt) for (param in names(params)) { current <- quiet(bplapply(x, sqrt, BPPARAM=params[[param]])) checkIdentical(expected, current) } # test empty input for (param in names(params)) { current <- quiet(bplapply(list(), identity, BPPARAM=params[[param]])) checkIdentical(list(), current) } # unnamed args for BatchJobs -> dispatches to batchMap f <- function(i, x, y, ...) { list(y, i, x) } current <- bplapply(2:1, f, c("A", "B"), x=10, BPPARAM=BatchJobsParam(2, progressbar=FALSE)) checkTrue(all.equal(current[[1]], list(c("A", "B"), 2, 10))) checkTrue(all.equal(current[[2]], list(c("A", "B"), 1, 10))) ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } test_bplapply_symbols <- function() { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), dopar=DoparParam() ## FIXME, batchjobs=BatchJobsParam(2, progressbar=FALSE)) ) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) x <- list(as.symbol(".XYZ")) expected <- lapply(x, as.character) for (param in names(params)) { current <- quiet(bplapply(x, as.character, BPPARAM=params[[param]])) checkIdentical(expected, current) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } test_bplapply_named_list <- function() { X <- list() Y <- character() checkIdentical(X, bplapply(X, identity)) checkIdentical(X, bplapply(Y, identity)) names(X) <- names(Y) <- character() checkIdentical(X, bplapply(X, identity)) checkIdentical(X, bplapply(Y, identity)) X <- list(a = 1:2) checkIdentical(X, bplapply(X, identity)) X <- list(c(a = 1)) checkIdentical(X, bplapply(X, identity)) X <- list(A = c(a = 1:2, b = 1:3), B = c(b = 1:2)) checkIdentical(X, bplapply(X, identity)) X <- list(a = 1:2, b = 3:4) checkIdentical(X, bplapply(X, identity)) X <- list(c(a = 1)) checkIdentical(X, bplapply(X, identity)) X <- list(A = c(a = 1, b=2), B = c(c = 1, d = 2)) checkIdentical(X, bplapply(X, identity)) } test_bplapply_named_list_with_REDO <- function(){ X = setNames(1:3, letters[1:3]) param = SerialParam(stop.on.error = FALSE) FUN1 = function(i) if (i == 2) stop() else i result <- bptry(bplapply(X, FUN1, BPPARAM = param)) checkIdentical(names(result), names(X)) FUN2 = function(i) 0 redo <- bplapply(X, FUN2, BPREDO = result, BPPARAM = param) checkIdentical(names(redo), names(X)) } test_bplapply_custom_subsetting <- function(){ ## We have a class A in the previous unit test .B <- setClass("B", slots = c(b = "integer")) setMethod("[", "B", function(x, i, j, ...) initialize(x, b = x@b[i])) setMethod("length", "B", function(x) length(x@b)) as.list.B <<- function(x, ...) lapply(seq_along(x), function(i) x[i]) x <- .B(b = 1:3) expected <- lapply(x, function(elt) elt@b) current <- quiet(bplapply(x, function(elt) elt@b, BPPARAM=SerialParam())) checkIdentical(expected, current) ## Remote worker does not have the definition of the class B res <- tryCatch( bplapply(x, function(elt) elt@b, BPPARAM=SnowParam(workers = 2)), error = identity ) checkTrue(is(res, "bplist_error")) rm(as.list.B, inherits = TRUE) } BiocParallel/inst/unitTests/test_bploop.R0000644000175200017520000000372114136050065021564 0ustar00biocbuildbiocbuildtest_reducer_1 <- function() { r <- BiocParallel:::.reducer() checkIdentical(list(), r$value()) checkIdentical(list(1), { r$add(1, list(1)); r$value() }) checkIdentical(list(1, 2), { r$add(2, list(2)); r$value() }) checkIdentical(list(1, 2, 4), { r$add(4, list(4)); r$value() }) checkIdentical(list(1, 2, 3, 4), { r$add(3, list(3)); r$value() }) } test_reducer_2 <- function() { r <- BiocParallel:::.reducer(c) checkIdentical(list(), r$value()) checkIdentical(c(1), { r$add(1, list(1)); r$value() }) checkIdentical(c(1, 2), { r$add(2, list(2)); r$value() }) checkIdentical(c(1, 2, 4), { r$add(4, list(4)); r$value() }) checkIdentical(c(1, 2, 4, 3), { r$add(3, list(3)); r$value() }) } test_reducer_3 <- function() { r <- BiocParallel:::.reducer(`+`, init=0) checkIdentical(0, r$value()) checkIdentical(1, { r$add(1, list(1)); r$value() }) checkIdentical(3, { r$add(2, list(2)); r$value() }) checkIdentical(7, { r$add(4, list(4)); r$value() }) } test_reducer_4 <- function() { r <- BiocParallel:::.reducer(c, reduce.in.order=TRUE) checkIdentical(list(), r$value()) checkIdentical(1, { r$add(1, list(1)); r$value() }) checkIdentical(c(1, 2), { r$add(2, list(2)); r$value() }) checkIdentical(TRUE, r$isComplete()) checkIdentical(c(1, 2), { r$add(4, list(4)); r$value() }) checkIdentical(FALSE, r$isComplete()) checkIdentical(c(1, 2, 3, 4), { r$add(3, list(3)); r$value() }) checkIdentical(TRUE, r$isComplete()) } test_reducer_5 <- function() { r <- BiocParallel:::.reducer(`+`, init=0, reduce.in.order=TRUE) checkIdentical(0, r$value()) checkIdentical(1, { r$add(1, list(1)); r$value() }) checkIdentical(3, { r$add(2, list(2)); r$value() }) checkIdentical(TRUE, r$isComplete()) checkIdentical(3, { r$add(4, list(4)); r$value() }) checkIdentical(FALSE, r$isComplete()) checkIdentical(10, { r$add(3, list(3)); r$value() }) checkIdentical(TRUE, r$isComplete()) } BiocParallel/inst/unitTests/test_bpmapply.R0000644000175200017520000001064514136050065022120 0ustar00biocbuildbiocbuildquiet <- suppressWarnings test_bpmapply_MoreArgs_names <- function() { ## https://github.com/Bioconductor/BiocParallel/issues/51 f <- function(x, y) x target <- bpmapply(f, 1:3, MoreArgs=list(x=1L)) checkIdentical(rep(1L, 3), target) } test_bpmapply_Params <- function() { if (.Platform$OS.type != "windows") { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), dopar=DoparParam(), batchjobs=BatchJobsParam(2, progressbar=FALSE), mc <- MulticoreParam(2)) x <- 1:10 y <- rev(x) f <- function(x, y) x + y expected <- x + y for (param in params) { current <- quiet(bpmapply(f, x, y, BPPARAM=param)) checkIdentical(expected, current) closeAllConnections() } # test names and simplify x <- setNames(1:5, letters[1:5]) for (param in params) { for (SIMPLIFY in c(FALSE, TRUE)) { for (USE.NAMES in c(FALSE, TRUE)) { expected <- mapply(identity, x, USE.NAMES=USE.NAMES, SIMPLIFY=SIMPLIFY) current <- quiet(bpmapply(identity, x, USE.NAMES=USE.NAMES, SIMPLIFY=SIMPLIFY, BPPARAM=param)) checkIdentical(expected, current) closeAllConnections() } } } # test MoreArgs x <- setNames(1:5, letters[1:5]) f <- function(x, m) { x + m } expected <- mapply(f, x, MoreArgs=list(m=1)) for (param in params) { current <- quiet(bpmapply(f, x, MoreArgs=list(m=1), BPPARAM=param)) checkIdentical(expected, current) closeAllConnections() } # test empty input for (param in params) { current <- quiet(bpmapply(identity, BPPARAM=param)) checkIdentical(list(), current) closeAllConnections() } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } else TRUE } test_bpmapply_symbols <- function() { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), dopar=DoparParam()) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) x <- list(as.symbol(".XYZ")) expected <- mapply(as.character, x) for (param in names(params)) { current <- bpmapply(as.character, x, BPPARAM=params[[param]]) checkIdentical(expected, current) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } test_bpmapply_named_list <- function() { X <- list() Y <- character() checkIdentical(X, bpmapply(identity)) checkIdentical(X, bpmapply(identity, X)) checkIdentical(mapply(identity, Y), bpmapply(identity, Y)) checkIdentical(X, bpmapply(identity, USE.NAMES = FALSE)) checkIdentical(X, bpmapply(identity, X, USE.NAMES = FALSE)) checkIdentical(X, bpmapply(identity, Y, USE.NAMES = FALSE)) names(X) <- names(Y) <- character() checkIdentical(X, bpmapply(identity, X)) checkIdentical(X, bpmapply(identity, Y)) checkIdentical(list(), bpmapply(identity, X, USE.NAMES = FALSE)) checkIdentical(list(), bpmapply(identity, Y, USE.NAMES = FALSE)) Y1 <- setNames(letters, letters) Y2 <- setNames(letters, LETTERS) checkIdentical(mapply(identity, Y1), bpmapply(identity, Y1)) checkIdentical(mapply(identity, Y2), bpmapply(identity, Y2)) X <- list(c(a = 1)) checkIdentical(X, bpmapply(identity, X, SIMPLIFY = FALSE)) X <- list(a = 1:2) checkIdentical(X, bpmapply(identity, X, SIMPLIFY = FALSE)) X <- list(a = 1:2, b = 1:4) checkIdentical(X, bpmapply(identity, X, SIMPLIFY = FALSE)) X <- list(A = c(a = 1:3)) checkIdentical(X, bpmapply(identity, X, SIMPLIFY = FALSE)) X <- list(A = c(a = 1, b=2), B = c(c = 1, d = 2)) checkIdentical(X, bpmapply(identity, X, SIMPLIFY = FALSE)) ## named arguments to bpmapply Y <- 1:3 checkIdentical(Y, bpmapply(identity, x = Y)) } BiocParallel/inst/unitTests/test_bpvalidate.R0000644000175200017520000000611214136050065022401 0ustar00biocbuildbiocbuildBPValidate <- BiocParallel:::BPValidate test_bpvalidate_basic_ok <- function() { target <- BPValidate() checkIdentical(target, bpvalidate(function() {} )) checkIdentical(target, bpvalidate(function(x) x )) checkIdentical(target, bpvalidate(function(x) x() )) checkIdentical(target, bpvalidate(function(..., x) x )) checkIdentical(target, bpvalidate(function(..., x) x() )) checkIdentical(target, bpvalidate(function(y, x) y(x) )) checkIdentical(target, bpvalidate(function(y, x) y(x=x) )) checkIdentical(target, bpvalidate(function(y, ...) y(...) )) checkIdentical(target, bpvalidate(local({i = 2; function(y) y + i}))) checkIdentical( target, bpvalidate(local({i = 2; local({function(y) y + i})})) ) checkIdentical(target, bpvalidate(sqrt)) } test_bpvalidate_basic_fail <- function() { target <- BPValidate(unknown = "x") suppressWarnings({ checkIdentical(target, bpvalidate(function() x )) checkIdentical(target, bpvalidate(function() x() )) checkIdentical(target, bpvalidate(function(y) x + y )) checkIdentical(target, bpvalidate(function(y) y(x) )) checkIdentical(target, bpvalidate(function(y) y(x=x) )) checkIdentical(target, bpvalidate(function(y, ...) y(x) )) checkIdentical(target, bpvalidate(function(y, ...) y(x=x) )) }) } test_bpvalidate_search_path <- function() { target <- BPValidate(symbol = "x", environment = ".test_env") .test_env <- new.env(parent=emptyenv()) .test_env$x <- NULL attach(.test_env) on.exit(detach(.test_env)) checkIdentical(target, bpvalidate(function() x )) checkIdentical(target, bpvalidate(function(...) x )) checkIdentical(target, bpvalidate(function(y, ...) y(x) )) checkIdentical(target, bpvalidate(function(y, ...) y(x=x) )) ## FIXME: should fail -- in search(), but not a function! ## checkIdentical(target, bpvalidate(function() x() )) } test_bpvalidate_defining_environemt <- function() { target1 <- BPValidate() target2 <- BPValidate(unknown = "x") h = function() { x <- 1; f = function() x; function() f() } checkIdentical(target1, bpvalidate(h)) h = function() { f = function() x; function() f() } checkIdentical(target2, bpvalidate(h, "silent")) } test_bpvalidate_library <- function() { target <- BPValidate() checkException(bpvalidate(function() library("__UNKNOWN__")), silent=TRUE) checkException(bpvalidate(function() require("__UNKNOWN__")), silent=TRUE) checkIdentical(target, bpvalidate(function() library(BiocParallel))) ## FIXME: bpvalidate expects unquoted arg to library() / require() ## bpvalidate(function() library("BiocParallel")) target1 <- BPValidate( symbol = "bpvalidate", environment = "package:BiocParallel" ) checkIdentical(target1, bpvalidate(function() bpvalidate())) # inPath fun <- function() { library(BiocParallel); bpvalidate() } checkIdentical(target, bpvalidate(fun)) # in function } BiocParallel/inst/unitTests/test_bpvec.R0000644000175200017520000000267014136050065021372 0ustar00biocbuildbiocbuildtest_bpvec_Params <- function() { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), batchjobs=BatchJobsParam(2, progressbar=FALSE), dopar=DoparParam()) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) x <- rev(1:10) expected <- sqrt(x) for (param in names(params)) { current <- bpvec(x, sqrt, BPPARAM=params[[param]]) checkIdentical(current, expected) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } test_bpvec_MulticoreParam_short_jobs <- function() { ## bpvec should return min(length(X), bpnworkers()) if (.Platform$OS.type == "windows") return(TRUE) exp <- 1:2 obs <- bpvec(exp, c, AGGREGATE=list, BPPARAM=MulticoreParam(workers=4L)) checkIdentical(2L, length(obs)) checkIdentical(exp, unlist(obs)) ## clean up closeAllConnections() TRUE } test_bpvec_invalid_FUN <- function() { res <- bptry(bpvec(1:2, class, BPPARAM=SerialParam())) checkTrue(inherits(res, "bpvec_error")) } test_bpvec_named_list <- function() { X <- list() Y <- character() checkIdentical(X, bpvec(X, length)) checkIdentical(X, bpvec(Y, length)) names(X) <- names(Y) <- character() checkIdentical(X, bpvec(X, length)) checkIdentical(X, bpvec(Y, length)) } BiocParallel/inst/unitTests/test_bpvectorize.R0000644000175200017520000000121314136050065022617 0ustar00biocbuildbiocbuildtest_bpvectorize_Params <- function() { doParallel::registerDoParallel(2) params <- list(serial=SerialParam(), snow=SnowParam(2), batchjobs=BatchJobsParam(2, progressbar=FALSE), dopar=DoparParam()) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2) x <- 1:10 expected <- sqrt(x) for (param in names(params)) { psqrt <- bpvectorize(sqrt, BPPARAM=params[[param]]) checkIdentical(expected, psqrt(x)) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } BiocParallel/inst/unitTests/test_errorhandling.R0000644000175200017520000002146314136050065023132 0ustar00biocbuildbiocbuild## NOTE: On Windows, MulticoreParam() throws a warning and instantiates ## a single FORK worker using scripts from parallel. No logging or ## error catching is implemented. checkExceptionText <- function(expr, txt, negate=FALSE, msg="") { x <- try(eval(expr), silent=TRUE) checkTrue(inherits(x, "condition"), msg=msg) checkTrue(xor(negate, grepl(txt, as.character(x), fixed=TRUE)), msg=msg) } test_composeTry <- function() { .composeTry <- BiocParallel:::.composeTry X <- as.list(1:6); X[[2]] <- "2"; X[[6]] <- -1 ## fail hard, e.g., SerialParam() tsqrt <- .composeTry(sqrt, FALSE, TRUE, TRUE, timeout=20L) current <- tryCatch(lapply(X, tsqrt), error=identity) target <- tryCatch(lapply(X, sqrt), error=identity) checkIdentical(conditionMessage(target), conditionMessage(current)) ## fail soft, e.g., SerialParam(stop.on.error=FALSE) tsqrt <- .composeTry(sqrt, FALSE, FALSE, FALSE, timeout=20L) current <- tryCatch(suppressWarnings(lapply(X, tsqrt)), error=identity) target <- list(length(X)) for (i in seq_along(X)) target[[i]] <- tryCatch(suppressWarnings(sqrt(X[[i]])), error=identity) tok <- !vapply(target, is, logical(1), "error") checkIdentical(tok, bpok(current)) checkIdentical(conditionMessage(target[[which(!tok)]]), conditionMessage(current[[which(!bpok(current))]])) checkIdentical(target[tok], current[bpok(current)]) ## fail soft on an individual worker; entire vector returned with ## 'unevaluated' components. e.g., SnowParam(stop.on.error=TRUE) tsqrt <- .composeTry(sqrt, FALSE, TRUE, FALSE, timeout=20L) current <- lapply(X, tsqrt) checkTrue(is(current[[2]], "remote_error")) checkTrue(all(vapply(current[-(1:2)], is, logical(1), "unevaluated_error"))) ## illogical checkException(.composeTry(sqrt, FALSE, FALSE, TRUE, timeout=20L), silent=TRUE) } test_SerialParam_stop.on.error <- function() { X <- list(1, "2", 3) ## stop.on.error=TRUE; lapply-like p <- SerialParam() checkIdentical(TRUE, bpstopOnError(p)) checkException(bplapply(X, sqrt, BPPARAM=p), silent=TRUE) current <- tryCatch(bplapply(X, sqrt, BPPARAM=p), error=identity) checkTrue(is(current, "bplist_error")) target <- "BiocParallel errors\n 1 remote errors, element index: 2\n 1 unevaluated and other errors\n first remote error: non-numeric argument to mathematical function" checkIdentical(target, conditionMessage(current)) target <- tryCatch(lapply(X, sqrt), error=identity) checkIdentical( conditionMessage(target), conditionMessage(attr(current, "result")[[2]]) ) result <- bptry(bplapply(X, sqrt, BPPARAM=p)) # issue #142 checkIdentical(c(TRUE, FALSE, FALSE), bpok(result)) ## stop.on.error=FALSE p <- SerialParam(stop.on.error=FALSE) # checkException(bplapply(X, sqrt, BPPARAM=p), silent=TRUE) current <- tryCatch(bplapply(X, sqrt, BPPARAM=p), error=identity) checkTrue(is(current, "bplist_error")) result <- attr(current, "result") checkIdentical(c(TRUE, FALSE, TRUE), bpok(result)) checkTrue(is(result[[2]], "remote_error")) checkIdentical(list(sqrt(1), sqrt(3)), result[bpok(result)]) result <- bptry(bplapply(X, sqrt, BPPARAM=p)) checkIdentical(c(TRUE, FALSE, TRUE), bpok(result)) } test_stop.on.error <- function() { checkException(bplapply("2", sqrt), silent=TRUE) checkException(bplapply(c(1, "2"), sqrt), silent=TRUE) checkException(bplapply(c(1, "2", 3), sqrt), silent=TRUE) cls <- tryCatch(bplapply(c(1, "2", 3), sqrt), error=class) checkIdentical(c("bplist_error", "bperror", "error", "condition"), cls) } test_catching_errors <- function() { if (.Platform$OS.type != "windows") { x <- 1:10 y <- rev(x) f <- function(x, y) if (x > y) stop("whooops") else x + y doParallel::registerDoParallel(2) params <- list( mc = MulticoreParam(2, stop.on.error=FALSE), snow=SnowParam(2, stop.on.error=FALSE), dopar=DoparParam(stop.on.error=FALSE), batchjobs=BatchJobsParam(2, progressbar=FALSE, stop.on.error=FALSE)) for (param in params) { res <- tryCatch({ bplapply(list(1, "2", 3), sqrt, BPPARAM=param) }, error=identity) checkTrue(is(res, "bplist_error")) result <- attr(res, "result") checkTrue(length(result) == 3L) msg <- "non-numeric argument to mathematical function" checkIdentical(conditionMessage(result[[2]]), msg) closeAllConnections() } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() TRUE } else TRUE } test_BPREDO <- function() { if (.Platform$OS.type != "windows") { f = sqrt x = list(1, "2", 3) x.fix = list(1, 2, 3) doParallel::registerDoParallel(2) params <- list( mc = MulticoreParam(2, stop.on.error=FALSE), snow=SnowParam(2, stop.on.error=FALSE), dopar=DoparParam(stop.on.error=FALSE), batchjobs=BatchJobsParam(2, progressbar=FALSE, stop.on.error=FALSE)) for (param in params) { res <- tryCatch({ bplapply(x, f, BPPARAM=param) }, error=identity) checkTrue(is(res, "bplist_error")) result <- attr(res, "result") checkIdentical(3L, length(result)) checkTrue(inherits(result[[2]], "remote_error")) closeAllConnections() Sys.sleep(0.25) ## data not fixed res2 <- tryCatch({ bplapply(x, f, BPPARAM=param, BPREDO=result) }, error=identity) checkTrue(is(res2, "bplist_error")) result <- attr(res2, "result") checkIdentical(3L, length(result)) checkTrue(is(result[[2]], "remote_error")) checkIdentical(as.list(sqrt(c(1, 3))), result[c(1, 3)]) closeAllConnections() Sys.sleep(0.25) ## data fixed res3 <- bplapply(x.fix, f, BPPARAM=param, BPREDO=result) checkIdentical(as.list(sqrt(1:3)), res3) closeAllConnections() Sys.sleep(0.25) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() } TRUE } test_bpvec_BPREDO <- function() { if (.Platform$OS.type != "windows") { f = function(i) if (2 %in% i) stop() else sqrt(i) x = 1:10 doParallel::registerDoParallel(2) params <- list( mc = MulticoreParam(2, stop.on.error=FALSE), snow=SnowParam(2, stop.on.error=FALSE), dopar=DoparParam(stop.on.error=FALSE), batchjobs=BatchJobsParam(2, progressbar=FALSE, stop.on.error=FALSE)) for (param in params) { res <- bptry(bpvec(x, f, BPPARAM=param), bplist_error=identity) checkTrue(is(res, "bplist_error")) result <- attr(res, "result") checkIdentical(2L, length(result)) checkTrue(inherits(result[[1]], "condition")) closeAllConnections() Sys.sleep(0.25) ## data not fixed res2 <- bptry(bpvec(x, f, BPPARAM=param, BPREDO=result), bplist_error=identity) checkTrue(is(res2, "bplist_error")) result <- attr(res2, "result") checkIdentical(2L, length(result)) checkTrue(is(result[[1]], "remote_error")) closeAllConnections() Sys.sleep(0.25) ## data fixed res3 <- bpvec(x, sqrt, BPPARAM=param, BPREDO=result) checkIdentical(sqrt(x), res3) closeAllConnections() Sys.sleep(0.25) } ## clean up env <- foreach:::.foreachGlobals rm(list=ls(name=env), pos=env) closeAllConnections() } TRUE } test_bpiterate_errors <- function() { quiet <- suppressMessages .lazyCount <- function(count) { count <- count i <- 0L function() { if (i >= count) return(NULL) else i <<- i + 1L if (i == 2) "2" else i } } FUN <- function(count, ...) { if (count == 2) stop("hit error") else count } params <- list(snow=SnowParam(2, stop.on.error=FALSE)) if (.Platform$OS.type != "windows") params$mc <- MulticoreParam(2, stop.on.error=FALSE) for (p in params) { ITER <- .lazyCount(3) quiet(res <- bpiterate(ITER, FUN, BPPARAM=p)) checkTrue(is(res[[2]], "remote_error")) closeAllConnections() } ## clean up closeAllConnections() TRUE } BiocParallel/inst/unitTests/test_internal_rng_stream.R0000644000175200017520000000052214136050065024322 0ustar00biocbuildbiocbuildtest_internal_rng_stream <- function() { if (.Platform$OS.type == "windows") { PARAM <- SnowParam } else { PARAM <- MulticoreParam } set.seed(100); exp <- runif(10) ## no change when param created (port assignment) set.seed(100); p <- PARAM(2); obs <- runif(10) checkIdentical(exp, obs) } BiocParallel/inst/unitTests/test_ipcmutex.R0000644000175200017520000000115514136050065022126 0ustar00biocbuildbiocbuildtest_ipclock <- function() { id <- ipcid() on.exit(ipcremove(id)) result <- bplapply(1:5, function(i, id) { BiocParallel::ipclock(id) Sys.sleep(.1) time <- Sys.time() BiocParallel::ipcunlock(id) time }, id, BPPARAM=SnowParam(2)) d <- diff(range(unlist(result, use.names=FALSE))) checkTrue(d > 0.4) } test_ipccounter <- function() { id <- ipcid() on.exit(ipcremove(id)) result <- bplapply(1:5, function(i, id) { BiocParallel::ipcyield(id) }, id, BPPARAM=SnowParam(2)) checkIdentical(sort(unlist(result, use.names=FALSE)), 1:5) } BiocParallel/inst/unitTests/test_logging.R0000644000175200017520000000202114136050065021707 0ustar00biocbuildbiocbuild## This code tests 'log' and 'progressbar'. test_errorhandling.R ## tests 'stop.on.error' test_log <- function() { ## SnowParam, MulticoreParam only params <- list( snow=SnowParam(2, log=FALSE, stop.on.error=FALSE), snowLog=SnowParam(2, log=TRUE, stop.on.error=FALSE)) if (.Platform$OS.type != "windows") { params$multi=MulticoreParam(3, log=FALSE, stop.on.error=FALSE) params$multiLog=MulticoreParam(3, log=TRUE, stop.on.error=FALSE) } for (param in params) { res <- suppressMessages(tryCatch({ bplapply(list(1, "2", 3), sqrt, BPPARAM=param) }, error=identity)) checkTrue(is(res, "bplist_error")) result <- attr(res, "result") checkTrue(length(result) == 3L) msg <- "non-numeric argument to mathematical function" checkIdentical(conditionMessage(result[[2]]), msg) checkTrue(length(attr(result[[2]], "traceback")) > 0L) closeAllConnections() } ## clean up closeAllConnections() TRUE } BiocParallel/inst/unitTests/test_refclass.R0000644000175200017520000000040614136050065022070 0ustar00biocbuildbiocbuildtest_SnowParam_refclass <- function() { p <- SnowParam(2) p2 <- p checkTrue(!bpisup(p)) checkTrue(!bpisup(p2)) bpstart(p) checkTrue(bpisup(p)) checkTrue(bpisup(p2)) bpstop(p) checkTrue(!bpisup(p)) checkTrue(!bpisup(p2)) } BiocParallel/inst/unitTests/test_rng.R0000644000175200017520000002766714136050065021076 0ustar00biocbuildbiocbuildtest_rng_fun_advances_generator <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator .rng_job_fun_factory <- BiocParallel:::.rng_job_fun_factory .RNGstream <- BiocParallel:::.RNGstream state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) SEED <- .RNGstream(bpstart(SerialParam())) checkIdentical( ## independently invoked with same seed --> same result .rng_job_fun_factory(function(i) rnorm(i), SEED)(2), .rng_job_fun_factory(function(i) rnorm(i), SEED)(2) ) SEED <- .RNGstream(bpstart(SerialParam())) FUN <- .rng_job_fun_factory(function(i) rnorm(i), SEED) target <- FUN(2) # two numbers from same stream FUN <- .rng_job_fun_factory(function(i) rnorm(i), SEED) obs <- c(FUN(1), FUN(1)) # two numbers from separate streams checkIdentical(obs[[1]], target[[1]]) checkTrue(obs[[2]] != target[[2]]) checkTrue(identical(state, .rng_get_generator())) } test_rng_lapply <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator .RNGstream <- BiocParallel:::.RNGstream .rng_lapply <- BiocParallel:::.rng_lapply .rng_next_substream <- BiocParallel:::.rng_next_substream state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) SEED <- .RNGstream(bpstart(SerialParam())) checkIdentical( ## same sequence of random number streams .rng_lapply(1:2, function(i) rnorm(1), BPRNGSEED = SEED), .rng_lapply(1:2, function(i) rnorm(1), BPRNGSEED = SEED) ) SEED1 <- .RNGstream(bpstart(SerialParam())) SEED2 <- .rng_next_substream(SEED1) target <- .rng_lapply(1:2, function(i) rnorm(2), BPRNGSEED = SEED1) obs <- c( .rng_lapply(1, function(i) rnorm(2), BPRNGSEED = SEED1), .rng_lapply(1, function(i) rnorm(2), BPRNGSEED = SEED2) ) checkIdentical(target, obs) checkTrue(identical(state, .rng_get_generator())) } test_rng_bplapply <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) p1 <- SerialParam(RNGseed = 123) p2 <- SnowParam(3, RNGseed = 123) p3 <- SnowParam(5, RNGseed = 123) FUN <- function(i) rnorm(2) ## SerialParam / SnowParam same results target <- bplapply(1:11, FUN, BPPARAM = p1) checkIdentical(bplapply(1:11, FUN, BPPARAM = p2), target) ## SerialParam / SnowParam same results, different number of workers checkIdentical(bplapply(1:11, FUN, BPPARAM = p3), target) if (identical(.Platform$OS.type, "unix")) { ## SerialParam / TransientMulticoreParam same results p4a <- MulticoreParam(5, RNGseed = 123) checkIdentical(bplapply(1:11, FUN, BPPARAM = p4a), target) ## SerialParam / MulticoreParam same results p4b <- bpstart(MulticoreParam(5, RNGseed = 123)) checkIdentical(bplapply(1:11, FUN, BPPARAM = p4b), target) bpstop(p4b) } ## single worker coerced to SerialParam p5 <- SnowParam(1, RNGseed = 123) checkIdentical(bplapply(1:11, FUN, BPPARAM = p5), target, "p5") checkIdentical(state$kind, .rng_get_generator()$kind) } test_rng_bpiterate <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) FUN <- function(i) rnorm(2) ITER_factory <- function() { x <- 1:11 i <- 0L function() { i <<- i + 1L if (i > length(x)) return(NULL) x[[i]] } } p1 <- SerialParam(RNGseed = 123) p2 <- SnowParam(3, RNGseed = 123) p3 <- SnowParam(5, RNGseed = 123) target <- bplapply(1:11, FUN, BPPARAM = p1) checkIdentical(target, bpiterate(ITER_factory(), FUN, BPPARAM = p1), "p1") checkIdentical(target, bpiterate(ITER_factory(), FUN, BPPARAM = p2), "p2") checkIdentical(target, bpiterate(ITER_factory(), FUN, BPPARAM = p3), "p3") if (identical(.Platform$OS.type, "unix")) { ## SerialParam / TransientMulticoreParam same results p4a <- MulticoreParam(5, RNGseed = 123) checkIdentical( target, bpiterate(ITER_factory(), FUN, BPPARAM = p4a), "p4a" ) ## SerialParam / MulticoreParam same results p4b <- bpstart(MulticoreParam(5, RNGseed = 123)) checkIdentical( target, bpiterate(ITER_factory(), FUN, BPPARAM = p4b), "p4b" ) bpstop(p4b) } checkIdentical(state$kind, .rng_get_generator()$kind) } test_rng_bpstart <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator state <- .rng_get_generator() FUN <- function(i) rnorm(2) ITER_factory <- function() { x <- 1:11 i <- 0L function() { i <<- i + 1L if (i > length(x)) return(NULL) x[[i]] } } ## bplapply p0 <- bpstart(SerialParam()) # random seed result1 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) result2 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) checkTrue(!any(result1 %in% result2)) bpstart(bpstop(p0)) # different random seed result3 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) checkTrue(!any(result3 %in% result1)) p0 <- bpstart(SerialParam(RNGseed = 123)) # set seed result1 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) result2 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) checkTrue(!any(result1 %in% result2)) bpstart(bpstop(p0)) # reset seed, same stream result3 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) result4 <- unlist(bplapply(1:11, FUN, BPPARAM = p0)) checkIdentical(result3, result1) checkIdentical(result4, result2) ## bpiterate p0 <- bpstart(SerialParam()) # random seed result1 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) result2 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) checkTrue(!any(result1 %in% result2)) bpstart(bpstop(p0)) # different random seed result3 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) checkTrue(!any(result3 %in% result1)) p0 <- bpstart(SerialParam(RNGseed = 123)) # set seed result1 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) result2 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) checkTrue(!any(result1 %in% result2)) bpstart(bpstop(p0)) # reset seed, same stream result3 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) result4 <- unlist(bpiterate(ITER_factory(), FUN, BPPARAM = p0)) checkIdentical(result3, result1) checkIdentical(result4, result2) checkIdentical(state$kind, .rng_get_generator()$kind) } .test_rng_bpstart_does_not_iterate_rng_seed <- function(param) { .rng_get_generator <- BiocParallel:::.rng_get_generator state <- .rng_get_generator() set.seed(123L) target <- runif(1L) ## bpstart() should not increment the random number seed set.seed(123L) bpstart(param) checkIdentical(target, runif(1L)) bpstop(param) ## bplapply does not increment stream set.seed(123) result <- bplapply(1:3, runif, BPPARAM = param) checkIdentical(target, runif(1L)) ## bplapply uses internal stream set.seed(123) result <- bplapply(1:3, runif, BPPARAM = param) checkTrue(!identical(result, bplapply(1:3, runif, BPPARAM = param))) checkIdentical(target, runif(1L)) target1 <- lapply(1:3, runif) checkTrue(!identical(result, target1)) checkIdentical(state$kind, .rng_get_generator()$kind) } test_rng_bpstart_does_not_iterate_rng_seed <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator TEST_FUN <- .test_rng_bpstart_does_not_iterate_rng_seed state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) TEST_FUN(SerialParam()) TEST_FUN(SnowParam(2)) if (identical(.Platform$OS.type, "unix")) TEST_FUN(MulticoreParam(2)) } .test_rng_global_and_RNGseed_indepenent <- function(param_fun) { set.seed(123) target <- bplapply(1:3, runif, BPPARAM = param_fun()) current <- bplapply(1:3, runif, BPPARAM = param_fun(RNGseed = 123)) checkTrue(!identical(target, current)) } test_rng_global_and_RNGseed_independent <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator TEST_FUN <- .test_rng_global_and_RNGseed_indepenent state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) TEST_FUN(SerialParam) TEST_FUN(SnowParam) if (identical(.Platform$OS.type, "unix")) TEST_FUN(MulticoreParam) } .test_rng_bpredo_impl <- function(param) { FUN <- function(i) rnorm(1) target <- unlist(bplapply(1:11, FUN, BPPARAM = param)) FUN0 <- function(i) { if (identical(i, 7L)) { stop("i == 7") } else rnorm(1) } result <- bptry(bplapply(1:11, FUN0, BPPARAM = param)) checkIdentical(unlist(result[-7]), target[-7]) checkTrue(inherits(result[[7]], "remote_error")) FUN1 <- function(i) { if (identical(i, 7L)) { ## the random number stream should be in the same state as the ## first time through the loop, and rnorm(1) should return ## same result as FUN rnorm(1) } else { ## if this branch is used, then we are incorrectly updating ## already calculated elements -- '0' in the output would ## indicate this error 0 } } result <- unlist(bplapply(1:11, FUN1, BPREDO = result, BPPARAM = param)) checkIdentical(result, target) bpstart(param) target1 <- unlist(bplapply(1:11, FUN, BPPARAM = param)) target2 <- unlist(bplapply(1:11, FUN, BPPARAM = param)) target3 <- unlist(bplapply(1:11, FUN, BPPARAM = param)) bpstop(param) bpstart(param) result1 <- bptry(bplapply(1:11, FUN0, BPPARAM = param)) result1_redo1 <- unlist(bplapply(1:11, FUN1, BPREDO = result1, BPPARAM = param)) result2 <- unlist(bplapply(1:11, FUN, BPPARAM = param)) result1_redo2 <- unlist(bplapply(1:11, FUN1, BPREDO = result1, BPPARAM = param)) result3 <- unlist(bplapply(1:11, FUN, BPPARAM = param)) checkIdentical(target1, result1_redo1) checkIdentical(target1, result1_redo2) checkIdentical(target2, result2) checkIdentical(target3, result3) } test_rng_bpredo <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) param <- SerialParam(RNGseed = 123, stop.on.error = FALSE) .test_rng_bpredo_impl(param) if (identical(.Platform$OS.type, "unix")) { param <- MulticoreParam(3, RNGseed = 123, stop.on.error = FALSE) .test_rng_bpredo_impl(param) } } test_rng_fallback_SerialParam <- function() { .rng_get_generator <- BiocParallel:::.rng_get_generator .rng_reset_generator <- BiocParallel:::.rng_reset_generator state <- .rng_get_generator() on.exit(.rng_reset_generator(state$kind, state$seed)) FUN <- function(i) rnorm(1) param <- SerialParam(RNGseed = 123, stop.on.error = FALSE) target <- unlist(bplapply(1:2, FUN, BPPARAM = param)) param2 <- SnowParam(RNGseed = 123, workers = 1L) checkIdentical(unlist(bplapply(1:2, FUN, BPPARAM = param2)), target) bpstart(param2) checkIdentical(bplapply(1, FUN, BPPARAM = param2)[[1]], target[1]) checkIdentical(bplapply(1, FUN, BPPARAM = param2)[[1]], target[2]) bpstop(param2) } BiocParallel/inst/unitTests/test_script/0000755000175200017520000000000014136050065021447 5ustar00biocbuildbiocbuildBiocParallel/inst/unitTests/test_script/test-sge-template.tmpl0000644000175200017520000000131614136050065025712 0ustar00biocbuildbiocbuild#!/bin/bash ## The name of the job, can be anything, simply used when displaying the list of running jobs #$ -N <%= job.name %> ## Combining output/error messages into one file #$ -j y ## Giving the name of the output log file #$ -o <%= log.file %> ## One needs to tell the queue system to use the current directory as the working directory ## Or else the script may fail as it will execute in your top level home directory /home/username #$ -cwd ## Use environment variables #$ -V ## Use correct queue #$ -q all.q ## R settings module load R/3.4.3 ## Export value of DEBUGME environemnt var to worker export DEBUGME=<%= Sys.getenv("DEBUGME") %> Rscript -e 'batchtools::doJobCollection("<%= uri %>")' exit 0 BiocParallel/inst/unitTests/test_utilities.R0000644000175200017520000001733614136050065022313 0ustar00biocbuildbiocbuildtest_splitIndicies <- function() { .splitIndices <- BiocParallel:::.splitIndices checkIdentical(list(), .splitIndices(0, 0)) checkIdentical(list(), .splitIndices(0, 1)) checkIdentical(list(), .splitIndices(0, 2)) checkIdentical(list(1:4), .splitIndices(4, 0)) checkIdentical(list(1:4), .splitIndices(4, 1)) checkIdentical(list(1:2, 3:4), .splitIndices(4, 2)) checkIdentical(as.list(1:4), .splitIndices(4, 4)) checkIdentical(as.list(1:4), .splitIndices(4, 8)) checkIdentical(list(1:4, 5:7), .splitIndices(7, 2)) } test_splitX <- function() { .splitX <- BiocParallel:::.splitX checkIdentical(list(), .splitX(character(), 0, 0)) checkIdentical(list(), .splitX(character(), 1, 0)) checkIdentical(list(), .splitX(character(), 0, 1)) checkIdentical(list(), .splitX(character(), 1, 1)) X <- LETTERS[1:4] checkIdentical(list(X), .splitX(X, 0, 0)) checkIdentical(list(X), .splitX(X, 1, 0)) checkIdentical(list(X[1:2], X[3:4]), .splitX(X, 2, 0)) checkIdentical(as.list(X), .splitX(X, 4, 0)) checkIdentical(as.list(X), .splitX(X, 8, 0)) checkIdentical(list(X[1:2], X[3:4]), .splitX(X, 2, 0)) checkIdentical(list(X), .splitX(X, 2, 1)) checkIdentical(list(X[1:2], X[3:4]), .splitX(X, 2, 2)) checkIdentical(list(X[1], X[2:3], X[4]), .splitX(X, 2, 3)) checkIdentical(as.list(X), .splitX(X, 2, 4)) } test_splitX_with_redo <- function(){ .split_X_redo <- BiocParallel:::.split_X_redo .bploop_rng_iter <- BiocParallel:::.bploop_rng_iter N <- 6 X <- 1:N task_size <- 1L redo_index <- rep(TRUE, N) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical(splittedX, as.list(X)) task_size <- 4L redo_index <- rep(TRUE, N) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical(splittedX, list(1:4, 5:6)) task_size <- 1L redo_index <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(1L, .bploop_rng_iter(1L), 3L, 4L, 5L) ) task_size <- 2L redo_index <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(1L, .bploop_rng_iter(1L), 3L:4L, 5L) ) task_size <- 10L redo_index <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(1L, .bploop_rng_iter(1L), 3L:5L) ) task_size <- 1L redo_index <- c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(.bploop_rng_iter(2L), 3L) ) task_size <- 1L redo_index <- c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(.bploop_rng_iter(2L), 3L, 4L, 5L, 6L) ) task_size <- 3L redo_index <- c(FALSE, FALSE, TRUE, TRUE, TRUE, TRUE) n <- .split_X_redo(X[redo_index], redo_index, task_size) splittedX <- .split_X_redo(X[redo_index], redo_index, task_size, n) checkIdentical( splittedX, list(.bploop_rng_iter(2L), 3:5, 6L) ) } test_redo_index <- function() { .redo_index <- BiocParallel:::.redo_index err <- BiocParallel:::.error("") checkIdentical(logical(), .redo_index(list(), list())) checkIdentical(TRUE, .redo_index(list(1), list(err))) checkIdentical(c(FALSE, TRUE), .redo_index(list(1, "2"), list(1, err))) ## all need recalculating checkIdentical(c(TRUE, TRUE), .redo_index(list("1", "2"), list(err, err))) ## X can be a vector checkIdentical(c(FALSE, TRUE), .redo_index(1:2, list(1, err))) ## lengths differ checkException(.redo_index(list(1, 2), list(err)), silent=TRUE) ## no previous error checkException(.redo_index(list(1, 2), list(1, 2)), silent=TRUE) } test_rename <- function() { .rename <- BiocParallel:::.rename X <- list() Y <- character() Z <- list(X) W <- list(Y) checkIdentical(X, .rename(list(), X)) checkIdentical(X, .rename(list(), Y)) checkIdentical(X, .rename(list(), Z)) checkIdentical(X, .rename(list(), W)) names(X) <- names(Y) <- character() Z <- list(X) W <- list(Y) checkIdentical(X, .rename(list(), X)) checkIdentical(X, .rename(list(), Y)) checkIdentical(list(), .rename(list(), Z)) checkIdentical(list(), .rename(list(), W)) Z <- list(x = X) W <- list(x = Y) checkIdentical(list(x = 1), .rename(list(1), Z)) checkIdentical(list(x = 1), .rename(list(1), W)) X <- list(a = 1:2) exp0 <- vector("list", length(X)) checkIdentical(setNames(exp0, names(X)), .rename(exp0, X)) X <- list(c(a = 1)) exp0 <- vector("list", length(X)) checkIdentical(exp0, .rename(exp0, X)) Y <- c(x = "a") checkIdentical(Y, .rename(Y, Y)) X <- list(a = 1:2, b = 3:4) exp0 <- vector("list", length(X)) exp <- setNames(exp0, names(X)) checkIdentical(exp, .rename(exp0, X)) X <- list(c(a = 1)) exp0 <- vector("list", length(X)) checkIdentical(exp0, .rename(exp0, X)) X <- list(A = c(a = 1, b=2), B = c(c = 1, d = 2)) exp0 <- vector("list", length(X)) exp <- setNames(exp0, names(X)) checkIdentical(exp, .rename(exp0, X)) } test_mrename <- function() { .mrename <- BiocParallel:::.mrename ## list() when `mapply()` invoked with no arguments, `mapply(identity)` X <- list() checkIdentical(X, .mrename(list(), X)) ## list(X) when `mapply()` invoked with one argument, `mapply(identity, X)` XX <- list(X) checkIdentical(list(), .mrename(list(), XX)) ## `mapply(identity, character())` returns a _named_ list() X <- character() XX <- list(X) checkIdentical(setNames(list(), character()), .mrename(list(), XX)) ## named arguments to mapply() are _not_ names of return value... X = list() XX <- list(x = X) checkIdentical(list(), .mrename(list(), XX)) ## ...except if the argument is a character() X <- character() XX <- list(x = X) checkIdentical(setNames(list(), character()), .mrename(list(), XX)) ## with multiple arguments, names are from the first argument XX = list(c(a = 1, b = 2, c = 3), c(d = 4, e = 5, f = 6)) checkIdentical( setNames(list(1, 2, 3), letters[1:3]), .mrename(list(1, 2, 3), XX) ) ## ...independent of names on the arguments XX = list(A = c(a = 1, b = 2, c = 3), B = c(d = 4, e = 5, f = 6)) checkIdentical( setNames(list(1, 2, 3), letters[1:3]), .mrename(list(1, 2, 3), XX) ) ## when the first argument is an unnamed character vector, names are values XX = list(A = letters[1:3], B = 1:3) checkIdentical( setNames(list(1, 2, 3), letters[1:3]), .mrename(list(1, 2, 3), XX) ) ## ...except if there are names on the first vector... XX = list(A = setNames(letters[1:3], LETTERS[1:3]), B = 1:3) checkIdentical( setNames(list(1, 2, 3), LETTERS[1:3]), .mrename(list(1, 2, 3), XX) ) } BiocParallel/man/0000755000175200017520000000000014147652225014710 5ustar00biocbuildbiocbuildBiocParallel/man/BatchJobsParam-class.Rd0000644000175200017520000001330114136050065021110 0ustar00biocbuildbiocbuild\name{BatchJobsParam-class} \Rdversion{1.1} \docType{class} \alias{BatchJobsParam-class} \alias{BatchJobsParam} \alias{bpbackend,BatchJobsParam-method} \alias{bpbackend<-,BatchJobsParam} \alias{bpisup,BatchJobsParam-method} \alias{bpstart,BatchJobsParam-method} \alias{bpstop,BatchJobsParam-method} \alias{bpworkers,BatchJobsParam-method} \alias{bpschedule,BatchJobsParam-method} \alias{show,BatchJobsParam-method} \title{Enable parallelization on batch systems} \description{ This class is used to parameterize scheduler options on managed high-performance computing clusters. } \usage{ BatchJobsParam(workers, cleanup = TRUE, work.dir = getwd(), stop.on.error = TRUE, seed = NULL, resources = NULL, conffile = NULL, cluster.functions = NULL, progressbar = TRUE, jobname = "BPJOB", reg.pars=list(seed=seed, work.dir=work.dir), conf.pars=list(conffile=conffile, cluster.functions=cluster.functions), submit.pars=list(resources=resources), ...) } \arguments{ \item{workers}{\code{integer(1)}} Number of workers to divide tasks (e.g., elements in the first argument of \code{bplapply}) between. On Multicore and SSH backends, this defaults to all available nodes. On managed (e.g., slurm, SGE) clusters \code{workers} defaults to \code{NA}, meaning that the number of workers equals the number of tasks. See argument \code{n.chunks} in \code{\link[BBmisc]{chunk}} and \code{\link[BatchJobs]{submitJobs}} for more information. \item{cleanup}{\code{logical(1)}} BatchJobs creates temporary directories in the \code{work.dir}. If \code{cleanup} is set to \code{TRUE} (default), the directories are removed from the file systems automatically. Set this to \code{FALSE} whenever it might become necessary to utilize any special functionality provided by BatchJobs. To retrieve the registry, call \code{\link[BatchJobs]{loadRegistry}} on the temporary directory. \item{work.dir}{\code{character(1)}} Directory to store temporary files. Note that this must be shared across computational nodes if you use a distributed computing backend. Default ist the current working directory of \code{R}, see \code{\link[base]{getwd}}. Ignored when \code{reg.pars} is provided. \item{stop.on.error}{\code{logical(1)}} Stop all jobs as soon as one jobs fails (\code{stop.on.error == TRUE}) or wait for all jobs to terminate. Default is \code{TRUE}. \item{seed}{\code{integer(1L)}} Set an initial seed for the RNG. See \code{\link[BatchJobs]{makeRegistry}} for more information. Default is \code{NULL} where a random seed is chosen upon initialization. Ignored when \code{reg.pars} is provided. \item{resources}{\code{list()}} List of job specific resources passed to \code{\link[BatchJobs]{submitJobs}}. Default is \code{NULL} where the resources defined in the configuration are used. Ignored when \code{submit.pars} is provided. \item{conffile}{\code{character(1)}} URI to a custom BatchJobs configuration file used for execution. Default is \code{NULL} which relies on BatchJobs to handle configuration files. Ignored when \code{conf.pars} is provided. \item{cluster.functions}{ClusterFunctions} Specify a specific cluster backend using on of the constructors provided by BatchJobs, see \link[BatchJobs:makeClusterFunctions]{ClusterFunctions}. Default is \code{NULL} where the default cluster functions defined in the configuration are used. Ignored when \code{conf.pars} is provided. \item{progressbar}{\code{logical(1)}} Suppress the progress bar used in BatchJobs and be less verbose. Default is \code{FALSE}. \item{jobname}{\code{character(1)}} Job name that is prepended to the output log and result files. Default is "BPJOB". \item{reg.pars}{\code{list()}} List of parameters passed to \code{BatchJobs::makeRegistry()}. When present, user-supplied arguments \code{seed} and \code{work.dir} to \code{BatchJobsParam} are ignored. \item{conf.pars}{\code{list()}} List of parameters passed to \code{BatchJobs::setConfig()}. When present, user-supplied arguments \code{conffile}, \code{cluster.functions} to \code{BatchJobsParam} are ignored. \item{submit.pars}{\code{list()}} List of parameters passed to \code{BatchJobs::submitJobs}. When present, user-supplied argument \code{resources} to \code{BatchJobsParam} is ignored. \code{submitJobs} parameters \code{reg}, \code{id} cannot be set. \item{\dots}{Addition arguments, currently not handled.} } \section{BatchJobsParam constructor}{ Return an object with specified values. The object may be saved to disk or reused within a session. } \section{Methods}{ The following generics are implemented and perform as documented on the corresponding help page: \code{\link{bpworkers}}, \code{\link{bpnworkers}}, \code{\link{bpstart}}, \code{\link{bpstop}}, \code{\link{bpisup}}, \code{\link{bpbackend}}, \code{\link{bpbackend<-}} } \author{Michel Lang, \url{mailto:michellang@gmail.com}} \seealso{ \code{getClass("BiocParallelParam")} for additional parameter classes. \code{register} for registering parameter classes for use in parallel evaluation. } \examples{ p <- BatchJobsParam(progressbar=FALSE) bplapply(1:10, sqrt, BPPARAM=p) \dontrun{ ## see vignette for additional explanation funs <- makeClusterFunctionsSLURM("~/slurm.tmpl") param <- BatchJobsParam(4, cluster.functions=funs) register(param) bplapply(1:10, function(i) sqrt) } } BiocParallel/man/BatchtoolsParam-class.Rd0000644000175200017520000002137014136050065021360 0ustar00biocbuildbiocbuild\name{BatchtoolsParam-class} \Rdversion{1.1} \docType{class} \alias{BatchtoolsParam-class} \alias{BatchtoolsParam} \alias{bpRNGseed,BatchtoolsParam-method} \alias{bpRNGseed<-,BatchtoolsParam,numeric-method} \alias{bpbackend,BatchtoolsParam-method} \alias{bpisup,BatchtoolsParam-method} \alias{bplapply,ANY,BatchtoolsParam-method} \alias{bplogdir,BatchtoolsParam-method} \alias{bplogdir<-,BatchtoolsParam,character-method} \alias{bpschedule,BatchtoolsParam-method} \alias{bpstart,BatchtoolsParam-method} \alias{bpstop,BatchtoolsParam-method} \alias{bpworkers,BatchtoolsParam-method} \alias{show,BatchtoolsParam-method} \alias{batchtoolsWorkers} \alias{batchtoolsCluster} \alias{batchtoolsTemplate} \alias{batchtoolsRegistryargs} \title{Enable parallelization on batch systems} \description{ This class is used to parameterize scheduler options on managed high-performance computing clusters using batchtools. \code{BatchtoolsParam()}: Construct a BatchtoolsParam-class object. \code{batchtoolsWorkers()}: Return the default number of workers for each backend. \code{batchtoolsTemplate()}: Return the default template for each backend. \code{batchtoolsCluster()}: Return the default cluster. \code{batchtoolsRegistryargs()}: Create a list of arguments to be used in batchtools' \code{makeRegistry}; see \code{registryargs} argument. } \usage{ BatchtoolsParam( workers = batchtoolsWorkers(cluster), cluster = batchtoolsCluster(), registryargs = batchtoolsRegistryargs(), saveregistry = FALSE, resources = list(), template = batchtoolsTemplate(cluster), stop.on.error = TRUE, progressbar = FALSE, RNGseed = NA_integer_, timeout = 30L * 24L * 60L * 60L, exportglobals=TRUE, log = FALSE, logdir = NA_character_, resultdir=NA_character_, jobname = "BPJOB" ) batchtoolsWorkers(cluster = batchtoolsCluster()) batchtoolsCluster(cluster) batchtoolsTemplate(cluster) batchtoolsRegistryargs(...) } \arguments{ \item{workers}{\code{integer(1)}} Number of workers to divide tasks (e.g., elements in the first argument of \code{bplapply}) between. On 'multicore' and 'socket' backends, this defaults to \code{multicoreWorkers()} and \code{snowWorkers()}. On managed (e.g., slurm, SGE) clusters \code{workers} has no default, meaning that the number of workers needs to be provided by the user. \item{cluster}{\code{character(1)}} Cluster type being used as the backend by \code{BatchtoolsParam}. The available options are "socket", "multicore", "interactive", "sge", "slurm", "lsf", "torque" and "openlava". The cluster type if available on the machine registers as the backend. Cluster types which need a \code{template} are "sge", "slurm", "lsf", "openlava", and "torque". If the template is not given then a default is selected from the \code{batchtools} package. \item{registryargs}{\code{list()}} Arguments given to the registry created by \code{BatchtoolsParam} to configure the registry and where it's being stored. The \code{registryargs} can be specified by the function \code{batchtoolsRegistryargs()} which takes the arguments \code{file.dir}, \code{work.dir}, \code{packages}, \code{namespaces}, \code{source}, \code{load}, \code{make.default}. It's useful to configure these option, especially the \code{file.dir} to a location which is accessible to all the nodes on your job scheduler i.e master and workers. \code{file.dir} uses a default setting to make a registry in your working directory. \item{saveregistry}{\code{logical(1)}} Option given to store the entire registry for the job(s). This functionality should only be used when debugging. The storage of the entire registry can be time and space expensive on disk. The registry will be saved in the directory specified by \code{file.dir} in \code{registryargs}; the default locatoin is the current working directory. The saved registry directories will have suffix "-1", "-2" and so on, for each time the \code{BatchtoolsParam} is used. \item{resources}{\code{named list()}} Arguments passed to the \code{resources} argument of \code{batchtools::submitJobs} during evaluation of \code{bplapply} and similar functions. These name-value pairs are used for substitution into the template file. \item{template}{\code{character(1)}} Path to a template for the backend in \code{BatchtoolsParam}. It is possible to check which template is being used by the object using the getter \code{bpbackend(BatchtoolsParam())}. The template needs to be written specific to each backend. Please check the list of available templates in the \code{batchtools} package. \item{stop.on.error}{\code{logical(1)}} Stop all jobs as soon as one jobs fails (\code{stop.on.error == TRUE}) or wait for all jobs to terminate. Default is \code{TRUE}. \item{progressbar}{\code{logical(1)}} Suppress the progress bar used in BatchtoolsParam and be less verbose. Default is \code{FALSE}. \item{RNGseed}{\code{integer(1)}} Set an initial seed for the RNG. Default is \code{NULL} where a random seed is chosen upon initialization. \item{timeout}{\code{list()}} Time (in seconds) allowed for worker to complete a task. If the computation exceeds \code{timeout} an error is thrown with message 'reached elapsed time limit'. \item{exportglobals}{\code{logical(1)}} Export \code{base::options()} from manager to workers? Default \code{TRUE}. \item{log}{\code{logical(1)}} Option given to save the logs which are produced by the jobs. If \code{log=TRUE} then the \code{logdir} option must be specified. \item{logdir}{\code{character(1)}} Path to location where logs are stored. The argument \code{log=TRUE} is required before using the logdir option. \item{resultdir}{\code{logical(1)}} Path where results are stored. \item{jobname}{\code{character(1)}} Job name that is prepended to the output log and result files. Default is "BPJOB". \item{\dots}{name-value pairs} Names and values correspond to arguments from batchtools \code{\link[batchtools]{makeRegistry}}. } \section{BatchtoolsParam constructor}{ Return an object with specified values. The object may be saved to disk or reused within a session. } \section{Methods}{ The following generics are implemented and perform as documented on the corresponding help page: \code{\link{bpworkers}}, \code{\link{bpnworkers}}, \code{\link{bpstart}}, \code{\link{bpstop}}, \code{\link{bpisup}}, \code{\link{bpbackend}}. \code{\link{bplapply}} handles arguments \code{X} of classes derived from \code{S4Vectors::List} specially, coercing to \code{list}. } \author{Nitesh Turaga, \url{mailto:nitesh.turaga@roswellpark.org}} \seealso{ \code{getClass("BiocParallelParam")} for additional parameter classes. \code{register} for registering parameter classes for use in parallel evaluation. The batchtools package. } \examples{ ## Pi approximation piApprox = function(n) { nums = matrix(runif(2 * n), ncol = 2) d = sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } piApprox(1000) ## Calculate piApprox 10 times param <- BatchtoolsParam() result <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) \dontrun{ ## see vignette for additional explanation library(BiocParallel) param = BatchtoolsParam(workers=5, cluster="sge", template="script/test-sge-template.tmpl") ## Run parallel job result = bplapply(rep(10e5, 100), piApprox, BPPARAM=param) ## bpmapply param = BatchtoolsParam() result = bpmapply(fun, x = 1:3, y = 1:3, MoreArgs = list(z = 1), SIMPLIFY = TRUE, BPPARAM = param) ## bpvec param = BatchtoolsParam(workers=2) result = bpvec(1:10, seq_along, BPPARAM=param) ## bpvectorize param = BatchtoolsParam(workers=2) ## this returns a function bpseq_along = bpvectorize(seq_along, BPPARAM=param) result = bpseq_along(1:10) ## bpiterate ITER <- function(n=5) { i <- 0L function() { i <<- i + 1L if (i > n) return(NULL) rep(i, n) } } param <- BatchtoolsParam() res <- bpiterate(ITER=ITER(), FUN=function(x,y) sum(x) + y, y=10, BPPARAM=param) ## save logs logdir <- tempfile() dir.create(logdir) param <- BatchtoolsParam(log=TRUE, logdir=logdir) res <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) ## save registry (should be used only for debugging) file.dir <- tempfile() registryargs <- batchtoolsRegistryargs(file.dir = file.dir) param <- BatchtoolsParam(saveregistry = TRUE, registryargs = registryargs) res <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) dir(dirname(file.dir), basename(file.dir)) } } BiocParallel/man/BiocParallel-package.Rd0000644000175200017520000000074414136050065021116 0ustar00biocbuildbiocbuild\name{BiocParallel-package} \alias{BiocParallel-package} \alias{BiocParallel} \docType{package} \title{Bioconductor facilities for parallel evaluation} \description{ This package provides modified versions and novel implementation of functions for parallel evaluation, tailored to use with Bioconductor objects. } \details{ This package uses code from the \code{\link{parallel}} package, } \author{ See \code{packageDescription("BiocParallel")}. } \keyword{package} BiocParallel/man/BiocParallelParam-class.Rd0000644000175200017520000002547314136050065021617 0ustar00biocbuildbiocbuild\name{BiocParallelParam-class} \Rdversion{1.1} \docType{class} % Class \alias{BiocParallelParam-class} \alias{BiocParallelParam} % Control \alias{bpbackend} \alias{bpbackend<-} \alias{bpbackend,missing-method} \alias{bpbackend<-,missing,ANY-method} \alias{bpisup} \alias{bpisup,ANY-method} \alias{bpisup,missing-method} \alias{bpstart} \alias{bpstart,ANY-method} \alias{bpstart,missing-method} \alias{bpstart,BiocParallelParam-method} \alias{bpstop} \alias{bpstop,ANY-method} \alias{bpstop,missing-method} \alias{bpstop,BiocParallelParam-method} \alias{bpnworkers} \alias{bpworkers} \alias{bpworkers<-} \alias{bpworkers,missing-method} \alias{bpworkers,BiocParallelParam-method} \alias{bptasks} \alias{bptasks,BiocParallelParam-method} \alias{bptasks<-} \alias{bptasks<-,BiocParallelParam,numeric-method} \alias{bpstopOnError} \alias{bpstopOnError,BiocParallelParam-method} \alias{bpstopOnError<-} \alias{bpstopOnError<-,BiocParallelParam,logical-method} \alias{bpstopOnError<-,DoparParam,logical-method} \alias{bplog} \alias{bplog<-} \alias{bplog,BiocParallelParam-method} \alias{bpthreshold} \alias{bpthreshold<-} \alias{bpthreshold,BiocParallelParam-method} \alias{bplogdir} \alias{bplogdir<-} \alias{bplogdir,BiocParallelParam-method} \alias{bplogdir<-,BiocParallelParam,character-method} \alias{bpresultdir} \alias{bpresultdir<-} \alias{bpresultdir,BiocParallelParam-method} \alias{bpresultdir<-,BiocParallelParam,character-method} \alias{bptimeout} \alias{bptimeout<-} \alias{bptimeout,BiocParallelParam-method} \alias{bptimeout<-,BiocParallelParam,numeric-method} \alias{bpexportglobals} \alias{bpexportglobals<-} \alias{bpexportglobals,BiocParallelParam-method} \alias{bpexportglobals<-,BiocParallelParam,logical-method} \alias{bpprogressbar} \alias{bpprogressbar,BiocParallelParam-method} \alias{bpprogressbar<-} \alias{bpprogressbar<-,BiocParallelParam,logical-method} \alias{bpjobname} \alias{bpjobname,BiocParallelParam-method} \alias{bpjobname<-} \alias{bpjobname<-,BiocParallelParam,character-method} \alias{bpRNGseed} \alias{bpRNGseed<-} \alias{bpRNGseed,BiocParallelParam-method} \alias{bpRNGseed<-,BiocParallelParam,NULL-method} \alias{bpRNGseed<-,BiocParallelParam,numeric-method} \alias{bpforceGC} \alias{bpforceGC,BiocParallelParam-method} \alias{bpforceGC<-} \alias{bpforceGC<-,BiocParallelParam,numeric-method} % Other methods \alias{show,BiocParallel-method} \alias{print.remote_error} \title{BiocParallelParam objects} \description{ The \code{BiocParallelParam} virtual class stores configuration parameters for parallel execution. Concrete subclasses include \code{SnowParam}, \code{MulticoreParam}, \code{BatchtoolsParam}, and \code{DoparParam} and \code{SerialParam}. } \details{ \code{BiocParallelParam} is the virtual base class on which other parameter objects build. There are 5 concrete subclasses: \describe{ \item{}{\code{SnowParam}: distributed memory computing} \item{}{\code{MulticoreParam}: shared memory computing} \item{}{\code{BatchtoolsParam}: scheduled cluster computing} \item{}{\code{DoparParam}: foreach computing} \item{}{\code{SerialParam}: non-parallel execution} } The parameter objects hold configuration parameters related to the method of parallel execution such as shared memory, independent memory or computing with a cluster scheduler. } \section{Construction}{ The \code{BiocParallelParam} class is virtual and has no constructor. Instances of the subclasses can be created with the following: \itemize{ \item \code{SnowParam()} \item \code{MulticoreParam()} \item \code{BatchtoolsParam()} \item \code{DoparParam()} \item \code{SerialParam()} } } \section{Accessors}{ \subsection{Back-end control}{ In the code below \code{BPPARAM} is a \code{BiocParallelParam} object. \describe{ \item{}{ \code{bpworkers(x)}, \code{bpworkers(x, ...)}: \code{integer(1)} or \code{character()}. Gets the number or names of the back-end workers. The setter is supported for SnowParam and MulticoreParam only. } \item{}{ \code{bpnworkers(x)}: \code{integer(1)}. Gets the number of the back-end workers. } \item{}{ \code{bptasks(x)}, \code{bptasks(x) <- value}: \code{integer(1)}. Get or set the number of tasks for a job. \code{value} must be a scalar integer >= 0L. This argument applies to \code{SnowParam} and \code{MulticoreParam} only; \code{DoparParam} and \code{BatchtoolsParam} have their own approach to dividing a job among workers. We define a job as a single call to a function such as \code{bplapply}, \code{bpmapply} etc. A task is the division of the \code{X} argument into chunks. When \code{tasks == 0} (default), \code{X} is divided by the number of workers. This approach distributes \code{X} in (approximately) equal chunks. A \code{tasks} value of > 0 dictates the total number of tasks. Values can range from 1 (all of \code{X} to a single worker) to the length of \code{X} (each element of \code{X} to a different worker); values greater than \code{length(X)} (e.g., \code{.Machine$integer.max}) are rounded to \code{length(X)}. When the length of \code{X} is less than the number of workers each element of \code{X} is sent to a worker and \code{tasks} is ignored. Another case where the \code{tasks} value is ignored is when using the \code{bpiterate} function; the number of tasks are defined by the number of data chunks returned by the \code{ITER} function. } \item{}{ \code{bpstart(x)}: \code{logical(1)}. Starts the back-end, if necessary. } \item{}{ \code{bpstop(x)}: \code{logical(1)}. Stops the back-end, if necessary and possible. } \item{}{ \code{bpisup(x)}: \code{logical(1)}. Tests whether the back-end is available for processing, returning a scalar logical value. \code{bp*} functions such as \code{bplapply} automatically start the back-end if necessary. } \item{}{ \code{bpbackend(x)}, \code{bpbackend(x) <- value}: Gets or sets the parallel \code{bpbackend}. Not all back-ends can be retrieved; see \code{methods("bpbackend")}. } \item{}{ \code{bplog(x)}, \code{bplog(x) <- value}: Get or enable logging, if available. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpthreshold(x)}, \code{bpthreshold(x) <- value}: Get or set the logging threshold. \code{value} must be a \code{character(1)} string of one of the levels defined in the \code{futile.logger} package: \dQuote{TRACE}, \dQuote{DEBUG}, \dQuote{INFO}, \dQuote{WARN}, \dQuote{ERROR}, or \dQuote{FATAL}. } \item{}{ \code{bplogdir(x)}, \code{bplogdir(x) <- value}: Get or set an optional directory for saving log files. The directory must already exist with read / write ability. } \item{}{ \code{bpresultdir(x)}, \code{bpresultdir(x) <- value}: Get or set an optional directory for saving results as 'rda' files. The directory must already exist with read / write ability. } \item{}{ \code{bptimeout(x)}, \code{bptimeout(x) <- value}: \code{numeric(1)} Time (in seconds) allowed for worker to complete a task. This value is passed to base::setTimeLimit() as both the \code{cpu} and \code{elapsed} arguments. If the computation exceeds \code{timeout} an error is thrown with message 'reached elapsed time limit'. } \item{}{ \code{bpexportglobals(x)}, \code{bpexportglobals(x) <- value}: \code{logical(1)} Export \code{base::options()} from manager to workers? Default \code{TRUE}. } \item{}{ \code{bpprogressbar(x)}, \code{bpprogressbar(x) <- value}: Get or set the value to enable text progress bar. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpRNGseed(x)}, \code{bpRNGseed(x) <- value}: Get or set the seed for random number generaton. \code{value} must be a \code{numeric(1)} or \code{NULL}. } \item{}{ \code{bpjobname(x)}, \code{bpjobname(x) <- value}: Get or set the job name. } \item{}{ \code{bpforceGC(x)}, \code{bpforceGC(x) <- value}: Get or set whether 'garbage collection' should be invoked at the end of each call to \code{FUN}. } } } \subsection{Error Handling}{ In the code below \code{BPPARAM} is a \code{BiocParallelParam} object. \describe{ \item{}{ \code{bpstopOnError(x)}, \code{bpstopOnError(x) <- value}: \code{logical()}. Controls if the job stops when an error is hit. \code{stop.on.error} controls whether the job stops after an error is thrown. When \code{TRUE}, the output contains all successfully completed results up to and including the error. When \code{stop.on.error == TRUE} all computations stop once the error is hit. When \code{FALSE}, the job runs to completion and successful results are returned along with any error messages. } } } } \section{Methods}{ \subsection{Evaluation}{ In the code below \code{BPPARAM} is a \code{BiocParallelParam} object. Full documentation for these functions are on separate man pages: see ?\code{bpmapply}, ?\code{bplapply}, ?\code{bpvec}, ?\code{bpiterate} and ?\code{bpaggregate}. \describe{ \item{}{ \code{bpmapply(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPPARAM=bpparam())} } \item{}{ \code{bplapply(X, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpvec(X, FUN, ..., AGGREGATE=c, BPPARAM=bpparam())} } \item{}{ \code{bpiterate(ITER, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpaggregate(x, data, FUN, ..., BPPARAM=bpparam())} } } } \subsection{Other}{ In the code below \code{BPPARAM} is a \code{BiocParallelParam} object. \describe{ \item{}{ \code{show(x)} } } } } \author{Martin Morgan and Valerie Obenchain.} \seealso{ \itemize{ \item \code{\link{SnowParam}} for computing in distributed memory \item \code{\link{MulticoreParam}} for computing in shared memory \item \code{\link{BatchtoolsParam}} for computing with cluster schedulers \item \code{\link{DoparParam}} for computing with foreach \item \code{\link{SerialParam}} for non-parallel execution } } \examples{ getClass("BiocParallelParam") ## For examples see ?SnowParam, ?MulticoreParam, ?BatchtoolsParam ## and ?SerialParam. } \keyword{classes} \keyword{methods} BiocParallel/man/DeveloperInterface.Rd0000644000175200017520000001377014136050065020745 0ustar00biocbuildbiocbuild\name{DeveloperInterface} \alias{.BiocParallelParam_prototype} \alias{.prototype_update} \alias{.recv_all} \alias{.recv_all,ANY-method} \alias{.recv_any} \alias{.recv_any,ANY-method} \alias{.recv_any,SerialBackend-method} \alias{.send_all} \alias{.send_all,ANY-method} \alias{.send_to} \alias{.send_to,ANY-method} \alias{.send_to,SerialBackend-method} \alias{.send} \alias{.send,ANY-method} \alias{.recv} \alias{.recv,ANY-method} \alias{.close} \alias{.close,ANY-method} \alias{.bpstart_impl} \alias{.bpstop_impl} \alias{.bpworker_impl} \alias{.bplapply_impl} \alias{.bpiterate_impl} \title{Developer interface} \description{ Functions documented on this page are meant for developers wishing to implement \code{BPPARAM} objects that extend the \code{BiocParallelParam} virtual class to support additional parallel back-ends. } \usage{ ## class extension .prototype_update(prototype, ...) ## manager interface .send_to(backend, node, value) .recv_any(backend) .send_all(backend, value) .recv_all(backend) ## worker interface .send(worker, value) .recv(worker) .close(worker) ## supporting implementations .bpstart_impl(x) .bpworker_impl(worker) .bplapply_impl(X, FUN, ..., BPREDO = list(), BPPARAM = bpparam()) .bpiterate_impl(ITER, FUN, ..., REDUCE, init, reduce.in.order = FALSE, BPPARAM = bpparam()) .bpstop_impl(x) } \arguments{ \item{prototype}{ A named \code{list} of default values for reference class fields. } \item{x}{ A \code{BPPARAM} instance. } \item{backend}{ An object containing information about the cluster, returned by \code{bpbackend()}. } \item{worker}{ The object to which the worker communicates via \code{.send} and \code{.recv}. \code{.close} terminates the worker. } \item{node}{ An integer value indicating the node in the backend to which values are to be sent or received. } \item{value}{ Any R object, to be sent to or from workers. } \item{X, ITER, FUN, REDUCE, init, reduce.in.order, BPREDO, BPPARAM}{ See \code{bplapply} and \code{bpiterate}. } \item{\ldots}{ For \code{.prototype_update()}, name-value pairs to initialize derived and base class fields. For \code{.bplapply_impl()}, \code{.bpiterate_impl()}, additional arguments to \code{FUN()}; see \code{bplapply} and \code{bpiterate}. } } \details{ Start a BPPARM implementation by creating a reference class, e.g., extending the virtual class \code{BiocParallelParam}. Because of idiosyncracies in reference class field initialization, an instance of the class should be created by calling the generator returned by \code{setRefClass()} with a list of key-value pairs providing default parameteter arguments. The default values for the \code{BiocParallelParam} base class is provided in a list \code{.BiocParallelParam_prototype}, and the function \code{.prototype_update()} updates a prototype with new values, typically provided by the user. See the example below. BPPARAM implementations need to implement \code{bpstart()} and \code{bpstop()} methods; they may also need to implement, \code{bplapply()} and \code{bpiterate()} methods. Each method usually performs implementation-specific functionality before calling the next (BiocParallelParam) method. To avoid the intricacies of multiple dispatch, the bodies of BiocParallelParam methods are available for direct use as exported symbols. \itemize{ \item \code{bpstart,BiocParallelParam-method} (\code{.bpstart_impl()}) initiates logging, random number generation, and registration of finalizers to ensure that started clusters are stopped. \item \code{bpstop,BiocParallelParam-method} (\code{.bpstop_impl()}) ensures appropriate clean-up of stopped clusters, including sending the DONE semaphore. \code{bpstart()} will usually arrange for workers to enter \code{.bpworker_impl()} to listen for and evaluate tasks. \item \code{bplapply,ANY,BiocParallelParam-method} and \code{bpiterate,ANY,BiocParallelParam-method} (\code{.bplapply_impl()}, \code{.bpiterate_impl()}) implement: serial evaluation when there is a single core or task available; \code{BPREDO} functionality, and parallel lapply-like or iterative calculation. } Invoke \code{.bpstart_impl()}, \code{.bpstop_impl()}, \code{.bplapply_impl()}, and \code{.bpiterate_impl()} after any BPPARAM-specific implementation details. New implementations will also implement \code{bpisup()} and \code{bpbackend()} / \code{bpbackend<-()}; there are no default methods. The \emph{backends} (object returned by \code{bpbackend()}) of new BPPARAM implementations must support \code{length()} (number of nodes). In addition, the backends must support \code{.send_to()} and \code{.recv_any()} manager and \code{.send()}, \code{.recv()}, and \code{.close()} worker methods. Default \code{.send_all()} and \code{.recv_all()} methods are implemented as simple iterations along the \code{length(cluster)}, invoking \code{.send_to()} or \code{.recv_any()} on each iteration. } \value{ The return value of \code{.prototype_update()} is a list with elements in \code{prototype} substituted with key-value pairs provided in \code{\ldots}. All \code{send*} and \code{recv*} functions are endomorphic, returning a \code{cluster} object. } \examples{ \donttest{ ## ## Extend BiocParallelParam; `.A()` is not meant for the end user ## .A <- setRefClass( "A", contains = "BiocParallelParam", fields = list(id = "character") ) ## Use a prototype for default values, including the prototype for ## inheritted fields .A_prototype <- c( list(id = "default_id"), .BiocParallelParam_prototype ) ## Provide a constructor for the user A <- function(...) { prototype <- .prototype_update(.A_prototype, ...) do.call(.A, prototype) } ## Provide an R function for field access bpid <- function(x) x$id ## Create and use an instance, overwriting default values bpid(A()) a <- A(id = "my_id", threshold = "WARN") bpid(a) bpthreshold(a) } } BiocParallel/man/DoparParam-class.Rd0000644000175200017520000000503514136050065020323 0ustar00biocbuildbiocbuild\name{DoparParam-class} \Rdversion{1.1} \docType{class} \alias{DoparParam-class} \alias{DoparParam} \alias{coerce,SOCKcluster,DoparParam-method} \alias{bpbackend,DoparParam-method} \alias{bpbackend<-,DoparParam,SOCKcluster-method} \alias{bpisup,DoparParam-method} \alias{bpstart,DoparParam-method} \alias{bpstop,DoparParam-method} \alias{bpworkers,DoparParam-method} \alias{show,DoparParam-method} \title{Enable parallel evaluation using registered dopar backend} \description{ This class is used to dispatch parallel operations to the dopar backend registered with the foreach package. } \usage{ DoparParam(stop.on.error=TRUE) } \details{ \code{DoparParam} can be used for shared or non-shared memory computing depending on what backend is loaded. The \code{doSNOW} package supports non-shared memory, \code{doParallel} supports both shared and non-shared. When not specified, the default number of workers in \code{DoparParam} is determined by \code{getDoParWorkers()}. See the \code{foreach} package vignette for details using the different backends: \url{http://cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf} } \arguments{ \item{stop.on.error}{\code{logical(1)}} Stop all jobs as soon as one jobs fails (\code{stop.on.error == TRUE}) or wait for all jobs to terminate. Default is \code{TRUE}. } \section{DoparParam constructor}{ Return a proxy object that dispatches parallel evaluation to the registered foreach parallel backend. There are no options to the constructor. All configuration should be done through the normal interface to the foreach parallel backends. } \section{Methods}{ The following generics are implemented and perform as documented on the corresponding help page (e.g., \code{?bpisup}): \code{\link{bpworkers}}, \code{\link{bpnworkers}}, \code{\link{bpstart}}, \code{\link{bpstop}}, \code{\link{bpisup}}, \code{\link{bpbackend}}, \code{\link{bpbackend<-}}, \code{\link{bpvec}}. } \author{Martin Morgan \url{mailto:mtmorgan@fhcrc.org}} \seealso{ \code{getClass("BiocParallelParam")} for additional parameter classes. \code{register} for registering parameter classes for use in parallel evaluation. \code{foreach-package} for the parallel backend infrastructure used by this param class. } \examples{ \dontrun{ # First register a parallel backend with foreach library(doParallel) registerDoParallel(2) p <- DoparParam() bplapply(1:10, sqrt, BPPARAM=p) bpvec(1:10, sqrt, BPPARAM=p) register(DoparParam(), default=TRUE) } } \keyword{classes} BiocParallel/man/MulticoreParam-class.Rd0000644000175200017520000004530714136050065021227 0ustar00biocbuildbiocbuild\name{MulticoreParam-class} \Rdversion{1.1} \docType{class} \alias{MulticoreParam} \alias{MulticoreParam-class} \alias{multicoreWorkers} \alias{bpisup,MulticoreParam-method} \alias{bpschedule,MulticoreParam-method} \alias{bpworkers<-,MulticoreParam,numeric-method} \alias{show,MulticoreParam-method} %% implementation detail \alias{.close,TransientMulticoreParam-method} \alias{.recv,TransientMulticoreParam-method} \alias{.recv_all,TransientMulticoreParam-method} \alias{.recv_any,TransientMulticoreParam-method} \alias{.send,TransientMulticoreParam-method} \alias{.send_to,TransientMulticoreParam-method} \alias{bpbackend,TransientMulticoreParam-method} \alias{bpstart,TransientMulticoreParam-method} \alias{bpstop,TransientMulticoreParam-method} \alias{length,TransientMulticoreParam-method} \title{Enable multi-core parallel evaluation} \description{ This class is used to parameterize single computer multicore parallel evaluation on non-Windows computers. \code{multicoreWorkers()} chooses the number of workers. } \usage{ ## constructor ## ------------------------------------ MulticoreParam(workers = multicoreWorkers(), tasks = 0L, stop.on.error = TRUE, progressbar = FALSE, RNGseed = NULL, timeout = 30L * 24L * 60L * 60L, exportglobals=TRUE, log = FALSE, threshold = "INFO", logdir = NA_character_, resultdir = NA_character_, jobname = "BPJOB", force.GC = TRUE, manager.hostname = NA_character_, manager.port = NA_integer_, ...) ## detect workers ## ------------------------------------ multicoreWorkers() } \details{ \code{MulticoreParam} is used for shared memory computing. Under the hood the cluster is created with \code{makeCluster(..., type ="FORK")} from the \code{parallel} package. The default number of workers is determined by \code{multicoreWorkers()}. On windows, the number of multicore workers is always 1. Otherwise, the default is determined by an environment variable \code{R_PARALLELLY_AVAILABLECORES_FALLBACK} (see the parallely package) or \code{BIOCPARALLEL_WORKER_NUMBER} or, if those are not set, the maximum of 1 and \code{parallel::detectCores() - 2}. Machines with 3 or fewer cores, or machines where number of cores cannot be determined, are assigned a single worker. Machines with more than 127 cores are limited to the number of \emph{R} connections available when the workers start; this is 128 (a hard-coded limit in \emph{R}) minus the number of open connections as returned by \code{nrow(showConnections(all=TRUE))}. The option \code{mc.cores} can be used to specify an arbitrary number of workers, e.g., \code{options(mc.cores=4L)}. The \emph{Bioconductor} build system enforces a maximum of 4 workers. The environment variable \code{_R_CHECK_LIMIT_CORES_} (as on CRAN) enforces a maximum of 2 workers. A FORK transport starts workers with the \code{mcfork} function and communicates between master and workers using socket connections. \code{mcfork} builds on fork() and thus a Linux cluster is not supported. Because FORK clusters are Posix based they are not supported on Windows. When \code{MulticoreParam} is created/used in Windows it defaults to \code{SerialParam} which is the equivalent of using a single worker. \describe{ \item{error handling:}{ By default all computations are attempted and partial results are returned with any error messages. \itemize{ \item \code{stop.on.error} A \code{logical}. Stops all jobs as soon as one job fails or wait for all jobs to terminate. When \code{FALSE}, the return value is a list of successful results along with error messages as 'conditions'. \item The \code{bpok(x)} function returns a \code{logical()} vector that is FALSE for any jobs that threw an error. The input \code{x} is a list output from a bp*apply function such as \code{bplapply} or \code{bpmapply}. } } \item{logging:}{ When \code{log = TRUE} the \code{futile.logger} package is loaded on the workers. All log messages written in the \code{futile.logger} format are captured by the logging mechanism and returned in real-time (i.e., as each task completes) instead of after all jobs have finished. Messages sent to \emph{stdout} and \emph{stderr} are returned to the workspace by default. When \code{log = TRUE} these are diverted to the log output. Those familiar with the \code{outfile} argument to \code{makeCluster} can think of \code{log = FALSE} as equivalent to \code{outfile = NULL}; providing a \code{logdir} is the same as providing a name for \code{outfile} except that BiocParallel writes a log file for each task. The log output includes additional statistics such as memory use and task runtime. Memory use is computed by calling gc(reset=TRUE) before code evaluation and gc() (no reseet) after. The output of the second gc() call is sent to the log file. There are many ways to track memory use - this particular approach was taken because it is consistent with how the BatchJobs package reports memory on the workers. } \item{log and result files:}{ Results and logs can be written to a file instead of returned to the workspace. Writing to files is done from the master as each task completes. Options can be set with the \code{logdir} and \code{resultdir} fields in the constructor or with the accessors, \code{bplogdir} and \code{bpresultdir}. } \item{random number generation:}{ For \code{MulticoreParam}, \code{SnowParam}, and \code{SerialParam}, random number generation is controlled through the \code{RNGseed = } argument. BiocParallel uses the L'Ecuyer-CMRG random number generator described in the parallel package to generate independent random number streams. One stream is associated with each element of \code{X}, and used to seed the random number stream for the application of \code{FUN()} to \code{X[[i]]}. Thus setting \code{RNGseed = } ensures reproducibility across \code{MulticoreParam()}, \code{SnowParam()}, and \code{SerialParam()}, regardless of worker or task number. The default value \code{RNGseed = NULL} means that each evaluation of \code{bplapply} proceeds independently. For details of the L'Ecuyer generator, see ?\code{clusterSetRNGStream}. } } } \section{Constructor}{ \describe{ \item{}{ \code{MulticoreParam(workers = multicoreWorkers(), tasks = 0L, stop.on.error = FALSE, tasks = 0L, progressbar = FALSE, RNGseed = NULL, timeout = Inf, exportglobals=TRUE, log = FALSE, threshold = "INFO", logdir = NA_character_, resultdir = NA_character_, manager.hostname = NA_character_, manager.port = NA_integer_, ...)}: Return an object representing a FORK cluster. The cluster is not created until \code{bpstart} is called. Named arguments in \code{...} are passed to \code{makeCluster}. } } } \arguments{ \item{workers}{ \code{integer(1)} Number of workers. Defaults to all cores available as determined by \code{detectCores}. } \item{tasks}{ \code{integer(1)}. The number of tasks per job. \code{value} must be a scalar integer >= 0L. In this documentation a job is defined as a single call to a function, such as \code{bplapply}, \code{bpmapply} etc. A task is the division of the \code{X} argument into chunks. When \code{tasks == 0} (default, except when \code{progressbar = TRUE}), \code{X} is divided as evenly as possible over the number of workers. A \code{tasks} value of > 0 specifies the exact number of tasks. Values can range from 1 (all of \code{X} to a single worker) to the length of \code{X} (each element of \code{X} to a different worker). When the length of \code{X} is less than the number of workers each element of \code{X} is sent to a worker and \code{tasks} is ignored. When the length of \code{X} is less than \code{tasks}, \code{tasks} is treated as \code{length(X)}. } \item{stop.on.error}{ \code{logical(1)} Enable stop on error. } \item{progressbar}{ \code{logical(1)} Enable progress bar (based on plyr:::progress_text). Enabling the progress bar changes the \emph{default} value of \code{tasks} to \code{.Machine$integer.max}, so that progress is reported for each element of \code{X}. } \item{RNGseed}{ \code{integer(1)} Seed for random number generation. The seed is used to set a new, independent random number stream for each element of \code{X}. The ith element recieves the same stream seed, regardless of use of \code{SerialParam()}, \code{SnowParam()}, or \code{MulticoreParam()}, and regardless of worker or task number. When \code{RNGseed = NULL}, a random seed is used. } \item{timeout}{ \code{numeric(1)} Time (in seconds) allowed for worker to complete a task. This value is passed to base::setTimeLimit() as both the \code{cpu} and \code{elapsed} arguments. If the computation exceeds \code{timeout} an error is thrown with message 'reached elapsed time limit'. } \item{exportglobals}{ \code{logical(1)} Export \code{base::options()} from manager to workers? Default \code{TRUE}. } \item{log}{ \code{logical(1)} Enable logging. } \item{threshold}{ \code{character(1)} Logging threshold as defined in \code{futile.logger}. } \item{logdir}{ \code{character(1)} Log files directory. When not provided, log messages are returned to stdout. } \item{resultdir}{ \code{character(1)} Job results directory. When not provided, results are returned as an \R{} object (list) to the workspace. } \item{jobname}{ \code{character(1)} Job name that is prepended to log and result files. Default is "BPJOB". } \item{force.GC}{ \code{logical(1)} Whether to invoke the garbage collector after each call to \code{FUN}. The default (\code{TRUE}, explicitly call the garbage collection) can slow parallel computation, but is necessary when each call to \code{FUN} allocates a 'large' amount of memory. If \code{FUN} allocates little memory, then considerable performance improvements are gained by setting \code{force.GC = FALSE}. } \item{manager.hostname}{ \code{character(1)} Host name of manager node. See 'Global Options', in \code{\link{SnowParam}}. } \item{manager.port}{ \code{integer(1)} Port on manager with which workers communicate. See 'Global Options' in \code{\link{SnowParam}}. } \item{\dots}{ Additional arguments passed to \code{\link{makeCluster}} } } \section{Accessors: Logging and results}{ In the following code, \code{x} is a \code{MulticoreParam} object. \describe{ \item{}{ \code{bpprogressbar(x)}, \code{bpprogressbar(x) <- value}: Get or set the value to enable text progress bar. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpjobname(x)}, \code{bpjobname(x) <- value}: Get or set the job name. } \item{}{ \code{bpRNGseed(x)}, \code{bpRNGseed(x) <- value}: Get or set the seed for random number generaton. \code{value} must be a \code{numeric(1)} or \code{NULL}. } \item{}{ \code{bplog(x)}, \code{bplog(x) <- value}: Get or set the value to enable logging. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpthreshold(x)}, \code{bpthreshold(x) <- value}: Get or set the logging threshold. \code{value} must be a \code{character(1)} string of one of the levels defined in the \code{futile.logger} package: \dQuote{TRACE}, \dQuote{DEBUG}, \dQuote{INFO}, \dQuote{WARN}, \dQuote{ERROR}, or \dQuote{FATAL}. } \item{}{ \code{bplogdir(x)}, \code{bplogdir(x) <- value}: Get or set the directory for the log file. \code{value} must be a \code{character(1)} path, not a file name. The file is written out as LOGFILE.out. If no \code{logdir} is provided and \code{bplog=TRUE} log messages are sent to stdout. } \item{}{ \code{bpresultdir(x)}, \code{bpresultdir(x) <- value}: Get or set the directory for the result files. \code{value} must be a \code{character(1)} path, not a file name. Separate files are written for each job with the prefix JOB (e.g., JOB1, JOB2, etc.). When no \code{resultdir} is provided the results are returned to the session as \code{list}. } } } \section{Accessors: Back-end control}{ In the code below \code{x} is a \code{MulticoreParam} object. See the ?\code{BiocParallelParam} man page for details on these accessors. \describe{ \item{}{\code{bpworkers(x)}} \item{}{\code{bpnworkers(x)}} \item{}{\code{bptasks(x)}, \code{bptasks(x) <- value}} \item{}{\code{bpstart(x)}} \item{}{\code{bpstop(x)}} \item{}{\code{bpisup(x)}} \item{}{\code{bpbackend(x)}, \code{bpbackend(x) <- value}} } } \section{Accessors: Error Handling}{ In the code below \code{x} is a \code{MulticoreParam} object. See the ?\code{BiocParallelParam} man page for details on these accessors. \describe{ \item{}{\code{bpstopOnError(x)}, \code{bpstopOnError(x) <- value}} } } \section{Methods: Evaluation}{ In the code below \code{BPPARAM} is a \code{MulticoreParam} object. Full documentation for these functions are on separate man pages: see ?\code{bpmapply}, ?\code{bplapply}, ?\code{bpvec}, ?\code{bpiterate} and ?\code{bpaggregate}. \describe{ \item{}{ \code{bpmapply(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPPARAM=bpparam())} } \item{}{ \code{bplapply(X, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpvec(X, FUN, ..., AGGREGATE=c, BPPARAM=bpparam())} } \item{}{ \code{bpiterate(ITER, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpaggregate(x, data, FUN, ..., BPPARAM=bpparam())} } } } \section{Methods: Other}{ In the code below \code{x} is a \code{MulticoreParam} object. \describe{ \item{}{ \code{show(x)}: Displays the \code{MulticoreParam} object. } } } \section{Global Options}{ See the 'Global Options' section of \code{\link{SnowParam}} for manager host name and port defaults. } \author{Martin Morgan \url{mailto:mtmorgan@fhcrc.org} and Valerie Obenchain} \seealso{ \itemize{ \item \code{register} for registering parameter classes for use in parallel evaluation. \item \code{\link{SnowParam}} for computing in distributed memory \item \code{\link{BatchJobsParam}} for computing with cluster schedulers \item \code{\link{DoparParam}} for computing with foreach \item \code{\link{SerialParam}} for non-parallel evaluation } } \examples{ ## ----------------------------------------------------------------------- ## Job configuration: ## ----------------------------------------------------------------------- ## MulticoreParam supports shared memory computing. The object fields ## control the division of tasks, error handling, logging and ## result format. bpparam <- MulticoreParam() bpparam ## By default the param is created with the maximum available workers ## determined by multicoreWorkers(). multicoreWorkers() ## Fields are modified with accessors of the same name: bplog(bpparam) <- TRUE dir.create(resultdir <- tempfile()) bpresultdir(bpparam) <- resultdir bpparam ## ----------------------------------------------------------------------- ## Logging: ## ----------------------------------------------------------------------- ## When 'log == TRUE' the workers use a custom script (in BiocParallel) ## that enables logging and access to other job statistics. Log messages ## are returned as each job completes rather than waiting for all to finish. ## In 'fun', a value of 'x = 1' will throw a warning, 'x = 2' is ok ## and 'x = 3' throws an error. Because 'x = 1' sleeps, the warning ## should return after the error. X <- 1:3 fun <- function(x) { if (x == 1) { Sys.sleep(2) sqrt(-x) ## warning x } else if (x == 2) { x ## ok } else if (x == 3) { sqrt("FOO") ## error } } ## By default logging is off. Turn it on with the bplog()<- setter ## or by specifying 'log = TRUE' in the constructor. bpparam <- MulticoreParam(3, log = TRUE, stop.on.error = FALSE) res <- tryCatch({ bplapply(X, fun, BPPARAM=bpparam) }, error=identity) res ## When a 'logdir' location is given the messages are redirected to a file: \dontrun{ bplogdir(bpparam) <- tempdir() bplapply(X, fun, BPPARAM = bpparam) list.files(bplogdir(bpparam)) } ## ----------------------------------------------------------------------- ## Managing results: ## ----------------------------------------------------------------------- ## By default results are returned as a list. When 'resultdir' is given ## files are saved in the directory specified by job, e.g., 'TASK1.Rda', ## 'TASK2.Rda', etc. \dontrun{ dir.create(resultdir <- tempfile()) bpparam <- MulticoreParam(2, resultdir = resultdir, stop.on.error = FALSE) bplapply(X, fun, BPPARAM = bpparam) list.files(bpresultdir(bpparam)) } ## ----------------------------------------------------------------------- ## Error handling: ## ----------------------------------------------------------------------- ## When 'stop.on.error' is TRUE the job is terminated as soon as an ## error is hit. When FALSE, all computations are attempted and partial ## results are returned along with errors. In this example the number of ## 'tasks' is set to equal the length of 'X' so each element is run ## separately. (Default behavior is to divide 'X' evenly over workers.) ## All results along with error: bpparam <- MulticoreParam(2, tasks = 4, stop.on.error = FALSE) res <- bptry(bplapply(list(1, "two", 3, 4), sqrt, BPPARAM = bpparam)) res ## Calling bpok() on the result list returns TRUE for elements with no error. bpok(res) ## ----------------------------------------------------------------------- ## Random number generation: ## ----------------------------------------------------------------------- ## Random number generation is controlled with the 'RNGseed' field. ## This seed is passed to parallel::clusterSetRNGStream ## which uses the L'Ecuyer-CMRG random number generator and distributes ## streams to members of the cluster. bpparam <- MulticoreParam(3, RNGseed = 7739465) bplapply(seq_len(bpnworkers(bpparam)), function(i) rnorm(1), BPPARAM = bpparam) } \keyword{classes} \keyword{methods} BiocParallel/man/SerialParam-class.Rd0000644000175200017520000001614314136050065020477 0ustar00biocbuildbiocbuild\name{SerialParam-class} \Rdversion{1.1} \docType{class} \alias{SerialParam-class} \alias{SerialParam} \alias{bpbackend,SerialParam-method} \alias{bpstart,SerialParam-method} \alias{bpstop,SerialParam-method} \alias{bpisup,SerialParam-method} \alias{bpworkers,SerialParam-method} \alias{bplog,SerialParam-method} \alias{bplogdir,SerialParam-method} \alias{bplog<-,SerialParam,logical-method} \alias{bpthreshold<-,SerialParam,character-method} \alias{bplogdir<-,SerialParam,character-method} \alias{length,SerialBackend-method} \title{Enable serial evaluation} \description{ This class is used to parameterize serial evaluation, primarily to facilitate easy transition from parallel to serial code. } \usage{ SerialParam( stop.on.error = TRUE, progressbar = FALSE, RNGseed = NULL, timeout = 30L * 24L * 60L * 60L, log = FALSE, threshold = "INFO", logdir = NA_character_, resultdir = NA_character_, jobname = "BPJOB", force.GC = FALSE ) } \details{ \code{SerialParam} is used for serial computation on a single node. Using \code{SerialParam} in conjunction with \code{bplapply} differs from use of \code{lapply} because it provides features such as error handling, logging, and random number use consistent with \code{SnowParam} and \code{MulticoreParam}. \describe{ \item{error handling:}{ By default all computations are attempted and partial results are returned with any error messages. \itemize{ \item \code{stop.on.error} A \code{logical}. Stops all jobs as soon as one job fails or wait for all jobs to terminate. When \code{FALSE}, the return value is a list of successful results along with error messages as 'conditions'. \item The \code{bpok(x)} function returns a \code{logical()} vector that is FALSE for any jobs that threw an error. The input \code{x} is a list output from a bp*apply function such as \code{bplapply} or \code{bpmapply}. } } \item{logging:}{ When \code{log = TRUE} the \code{futile.logger} package is loaded on the workers. All log messages written in the \code{futile.logger} format are captured by the logging mechanism and returned real-time (i.e., as each task completes) instead of after all jobs have finished. Messages sent to \emph{stdout} and \emph{stderr} are returned to the workspace by default. When \code{log = TRUE} these are diverted to the log output. Those familiar with the \code{outfile} argument to \code{makeCluster} can think of \code{log = FALSE} as equivalent to \code{outfile = NULL}; providing a \code{logdir} is the same as providing a name for \code{outfile} except that BiocParallel writes a log file for each task. The log output includes additional statistics such as memory use and task runtime. Memory use is computed by calling gc(reset=TRUE) before code evaluation and gc() (no reseet) after. The output of the second gc() call is sent to the log file. There are many ways to track memory use - this particular approach was taken because it is consistent with how the BatchJobs package reports memory on the workers. } \item{log and result files:}{ Results and logs can be written to a file instead of returned to the workspace. Writing to files is done from the master as each task completes. Options can be set with the \code{logdir} and \code{resultdir} fields in the constructor or with the accessors, \code{bplogdir} and \code{bpresultdir}. } \item{random number generation:}{ For \code{MulticoreParam}, \code{SnowParam}, and \code{SerialParam}, random number generation is controlled through the \code{RNGseed = } argument. BiocParallel uses the L'Ecuyer-CMRG random number generator described in the parallel package to generate independent random number streams. One stream is associated with each element of \code{X}, and used to seed the random number stream for the application of \code{FUN()} to \code{X[[i]]}. Thus setting \code{RNGseed = } ensures reproducibility across \code{MulticoreParam()}, \code{SnowParam()}, and \code{SerialParam()}, regardless of worker or task number. The default value \code{RNGseed = NULL} means that each evaluation of \code{bplapply} proceeds independently. For details of the L'Ecuyer generator, see ?\code{clusterSetRNGStream}. } } } \section{Constructor}{ \describe{ \item{}{ \code{SerialParam()}: Return an object to be used for serial evaluation of otherwise parallel functions such as \code{\link{bplapply}}, \code{\link{bpvec}}. } } } \arguments{ \item{stop.on.error}{ \code{logical(1)} Enable stop on error. } \item{progressbar}{ \code{logical(1)} Enable progress bar (based on plyr:::progress_text). } \item{RNGseed}{ \code{integer(1)} Seed for random number generation. The seed is used to set a new, independent random number stream for each element of \code{X}. The ith element recieves the same stream seed, regardless of use of \code{SerialParam()}, \code{SnowParam()}, or \code{MulticoreParam()}, and regardless of worker or task number. When \code{RNGseed = NULL}, a random seed is used. } \item{timeout}{ \code{numeric(1)} Time (in seconds) allowed for worker to complete a task. This value is passed to base::setTimeLimit() as both the \code{cpu} and \code{elapsed} arguments. If the computation exceeds \code{timeout} an error is thrown with message 'reached elapsed time limit'. } \item{log}{ \code{logical(1)} Enable logging. } \item{threshold}{ \code{character(1)} Logging threshold as defined in \code{futile.logger}. } \item{logdir}{ \code{character(1)} Log files directory. When not provided, log messages are returned to stdout. } \item{resultdir}{ \code{character(1)} Job results directory. When not provided, results are returned as an \R{} object (list) to the workspace. } \item{jobname}{ \code{character(1)} Job name that is prepended to log and result files. Default is "BPJOB". } \item{force.GC}{ \code{logical(1)} Whether to invoke the garbage collector after each call to \code{FUN}. The default (\code{FALSE}, do not explicitly call the garbage collection) rarely needs to be changed. } } \section{Methods}{ The following generics are implemented and perform as documented on the corresponding help page (e.g., \code{?bpworkers}): \code{\link{bpworkers}}. \code{\link{bpisup}}, \code{\link{bpstart}}, \code{\link{bpstop}}, are implemented, but do not have any side-effects. } \author{Martin Morgan \url{mailto:mtmorgan@fhcrc.org}} \seealso{ \code{getClass("BiocParallelParam")} for additional parameter classes. \code{register} for registering parameter classes for use in parallel evaluation. } \examples{ p <- SerialParam() simplify2array(bplapply(1:10, sqrt, BPPARAM=p)) bpvec(1:10, sqrt, BPPARAM=p) \dontrun{ register(SerialParam(), default=TRUE) } } \keyword{classes} BiocParallel/man/SnowParam-class.Rd0000644000175200017520000004730314136050065020210 0ustar00biocbuildbiocbuild\name{SnowParam-class} \Rdversion{1.1} \docType{class} % Class \alias{SnowParam} \alias{SnowParam-class} % Control \alias{snowWorkers} \alias{bpbackend,SnowParam-method} \alias{bpbackend<-,SnowParam,cluster-method} \alias{bpisup,SnowParam-method} \alias{bpstart,SnowParam-method} \alias{bpstop,SnowParam-method} \alias{bpworkers,SnowParam-method} \alias{bpworkers<-,SnowParam,numeric-method} \alias{bpworkers<-,SnowParam,character-method} % Accessors \alias{bplog,SnowParam-method} \alias{bplog<-,SnowParam,logical-method} \alias{bpthreshold,SnowParam-method} \alias{bpthreshold<-,SnowParam,character-method} % Other methods \alias{coerce,SOCKcluster,SnowParam-method} \alias{coerce,spawnedMPIcluster,SnowParam-method} \alias{show,SnowParam-method} % Environment variables \alias{BIOCPARALLEL_WORKER_NUMBER} \alias{R_PARALLELLY_AVAILABLECORES_FALLBACK} \title{Enable simple network of workstations (SNOW)-style parallel evaluation} \description{ This class is used to parameterize simple network of workstations (SNOW) parallel evaluation on one or several physical computers. \code{snowWorkers()} chooses the number of workers. } \usage{ ## constructor ## ------------------------------------ SnowParam(workers = snowWorkers(type), type=c("SOCK", "MPI", "FORK"), tasks = 0L, stop.on.error = TRUE, progressbar = FALSE, RNGseed = NULL, timeout = 30L * 24L * 60L * 60L, exportglobals = TRUE, log = FALSE, threshold = "INFO", logdir = NA_character_, resultdir = NA_character_, jobname = "BPJOB", force.GC = FALSE, manager.hostname = NA_character_, manager.port = NA_integer_, ...) ## coercion ## ------------------------------------ ## as(SOCKcluster, SnowParam) ## as(spawnedMPIcluster,SnowParam) ## detect workers ## ------------------------------------ snowWorkers(type = c("SOCK", "MPI", "FORK")) } \details{ \code{SnowParam} is used for distributed memory computing and supports 2 cluster types: \sQuote{SOCK} (default) and \sQuote{MPI}. The \code{SnowParam} builds on infrastructure in the \code{snow} and \code{parallel} packages and provides the additional features of error handling, logging and writing out results. The default number of workers is determined by \code{snowWorkers()}. This is determined by an environment variable \code{R_PARALLELLY_AVAILABLECORES_FALLBACK} (see the parallely package) or \code{BIOCPARALLEL_WORKER_NUMBER} or, if those are not set, the maximum of 1 and \code{parallel::detectCores() - 2}. Machines with 3 or fewer cores, or machines where number of cores cannot be determined, are assigned a single worker. Machines with more than 127 cores are limited to the number of \emph{R} connections available when the workers start; this is 128 (a hard-coded limit in \emph{R}) minus the number of open connections as returned by \code{nrow(showConnections(all=TRUE))}. The option \code{mc.cores} can be used to specify an arbitrary number of workers, e.g., \code{options(mc.cores=4L)}; the \emph{Bioconductor} build system enforces a maximum of 4 workers. The environment variable \code{_R_CHECK_LIMIT_CORES_} (as on CRAN) enforces a maximum of 2 workers. \describe{ \item{error handling:}{ By default all computations are attempted and partial results are returned with any error messages. \itemize{ \item \code{stop.on.error} A \code{logical}. Stops all jobs as soon as one job fails or wait for all jobs to terminate. When \code{FALSE}, the return value is a list of successful results along with error messages as 'conditions'. \item The \code{bpok(x)} function returns a \code{logical()} vector that is FALSE for any jobs that threw an error. The input \code{x} is a list output from a bp*apply function such as \code{bplapply} or \code{bpmapply}. } } \item{logging:}{ When \code{log = TRUE} the \code{futile.logger} package is loaded on the workers. All log messages written in the \code{futile.logger} format are captured by the logging mechanism and returned real-time (i.e., as each task completes) instead of after all jobs have finished. Messages sent to \emph{stdout} and \emph{stderr} are returned to the workspace by default. When \code{log = TRUE} these are diverted to the log output. Those familiar with the \code{outfile} argument to \code{makeCluster} can think of \code{log = FALSE} as equivalent to \code{outfile = NULL}; providing a \code{logdir} is the same as providing a name for \code{outfile} except that BiocParallel writes a log file for each task. The log output includes additional statistics such as memory use and task runtime. Memory use is computed by calling gc(reset=TRUE) before code evaluation and gc() (no reseet) after. The output of the second gc() call is sent to the log file. There are many ways to track memory use - this particular approach was taken because it is consistent with how the BatchJobs package reports memory on the workers. } \item{log and result files:}{ Results and logs can be written to a file instead of returned to the workspace. Writing to files is done from the master as each task completes. Options can be set with the \code{logdir} and \code{resultdir} fields in the constructor or with the accessors, \code{bplogdir} and \code{bpresultdir}. } \item{random number generation:}{ For \code{MulticoreParam}, \code{SnowParam}, and \code{SerialParam}, random number generation is controlled through the \code{RNGseed = } argument. BiocParallel uses the L'Ecuyer-CMRG random number generator described in the parallel package to generate independent random number streams. One stream is associated with each element of \code{X}, and used to seed the random number stream for the application of \code{FUN()} to \code{X[[i]]}. Thus setting \code{RNGseed = } ensures reproducibility across \code{MulticoreParam()}, \code{SnowParam()}, and \code{SerialParam()}, regardless of worker or task number. The default value \code{RNGseed = NULL} means that each evaluation of \code{bplapply} proceeds independently. For details of the L'Ecuyer generator, see ?\code{clusterSetRNGStream}. } NOTE: The \code{PSOCK} cluster from the \code{parallel} package does not support cluster options \code{scriptdir} and \code{useRscript}. \code{PSOCK} is not supported because these options are needed to re-direct to an alternate worker script located in BiocParallel. } } \section{Constructor}{ \describe{ \item{}{ \code{SnowParam(workers = snowWorkers(), type=c("SOCK", "MPI"), tasks = 0L, stop.on.error = FALSE, progressbar = FALSE, RNGseed = NULL, timeout = Inf, exportglobals = TRUE, log = FALSE, threshold = "INFO", logdir = NA_character_, resultdir = NA_character_, jobname = "BPJOB", manager.hostname = NA_character_, manager.port = NA_integer_, ...)}: Return an object representing a SNOW cluster. The cluster is not created until \code{bpstart} is called. Named arguments in \code{...} are passed to \code{makeCluster}. } } } \arguments{ \item{workers}{ \code{integer(1)} Number of workers. Defaults to all cores available as determined by \code{detectCores}. For a \code{SOCK} cluster \code{workers} can be a \code{character()} vector of host names. } \item{type}{ \code{character(1)} Type of cluster to use. Possible values are \code{SOCK} (default) and \code{MPI}. Instead of \code{type=FORK} use \code{MulticoreParam}. } \item{tasks}{ \code{integer(1)}. The number of tasks per job. \code{value} must be a scalar integer >= 0L. In this documentation a job is defined as a single call to a function, such as \code{bplapply}, \code{bpmapply} etc. A task is the division of the \code{X} argument into chunks. When \code{tasks == 0} (default), \code{X} is divided as evenly as possible over the number of workers. A \code{tasks} value of > 0 specifies the exact number of tasks. Values can range from 1 (all of \code{X} to a single worker) to the length of \code{X} (each element of \code{X} to a different worker). When the length of \code{X} is less than the number of workers each element of \code{X} is sent to a worker and \code{tasks} is ignored. } \item{stop.on.error}{ \code{logical(1)} Enable stop on error. } \item{progressbar}{ \code{logical(1)} Enable progress bar (based on plyr:::progress_text). } \item{RNGseed}{ \code{integer(1)} Seed for random number generation. The seed is used to set a new, independent random number stream for each element of \code{X}. The ith element recieves the same stream seed, regardless of use of \code{SerialParam()}, \code{SnowParam()}, or \code{MulticoreParam()}, and regardless of worker or task number. When \code{RNGseed = NULL}, a random seed is used. } \item{timeout}{ \code{numeric(1)} Time (in seconds) allowed for worker to complete a task. This value is passed to base::setTimeLimit() as both the \code{cpu} and \code{elapsed} arguments. If the computation exceeds \code{timeout} an error is thrown with message 'reached elapsed time limit'. } \item{exportglobals}{ \code{logical(1)} Export \code{base::options()} from manager to workers? Default \code{TRUE}. } \item{log}{ \code{logical(1)} Enable logging. } \item{threshold}{ \code{character(1)} Logging threshold as defined in \code{futile.logger}. } \item{logdir}{ \code{character(1)} Log files directory. When not provided, log messages are returned to stdout. } \item{resultdir}{ \code{character(1)} Job results directory. When not provided, results are returned as an \R{} object (list) to the workspace. } \item{jobname}{ \code{character(1)} Job name that is prepended to log and result files. Default is "BPJOB". } \item{force.GC}{ \code{logical(1)} Whether to invoke the garbage collector after each call to \code{FUN}. The default (\code{FALSE}, do not explicitly call the garbage collection) rarely needs to be changed. } \item{manager.hostname}{ \code{character(1)} Host name of manager node. See 'Global Options', below. } \item{manager.port}{ \code{integer(1)} Port on manager with which workers communicate. See 'Global Options', below. } \item{\dots}{ Additional arguments passed to \code{\link{makeCluster}} } } \section{Accessors: Logging and results}{ In the following code, \code{x} is a \code{SnowParam} object. \describe{ \item{}{ \code{bpprogressbar(x)}, \code{bpprogressbar(x) <- value}: Get or set the value to enable text progress bar. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpjobname(x)}, \code{bpjobname(x) <- value}: Get or set the job name. } \item{}{ \code{bpRNGseed(x)}, \code{bpRNGseed(x) <- value}: Get or set the seed for random number generaton. \code{value} must be a \code{numeric(1)} or \code{NULL}. } \item{}{ \code{bplog(x)}, \code{bplog(x) <- value}: Get or set the value to enable logging. \code{value} must be a \code{logical(1)}. } \item{}{ \code{bpthreshold(x)}, \code{bpthreshold(x) <- value}: Get or set the logging threshold. \code{value} must be a \code{character(1)} string of one of the levels defined in the \code{futile.logger} package: \dQuote{TRACE}, \dQuote{DEBUG}, \dQuote{INFO}, \dQuote{WARN}, \dQuote{ERROR}, or \dQuote{FATAL}. } \item{}{ \code{bplogdir(x)}, \code{bplogdir(x) <- value}: Get or set the directory for the log file. \code{value} must be a \code{character(1)} path, not a file name. The file is written out as BPLOG.out. If no \code{logdir} is provided and \code{bplog=TRUE} log messages are sent to stdout. } \item{}{ \code{bpresultdir(x)}, \code{bpresultdir(x) <- value}: Get or set the directory for the result files. \code{value} must be a \code{character(1)} path, not a file name. Separate files are written for each job with the prefix TASK (e.g., TASK1, TASK2, etc.). When no \code{resultdir} is provided the results are returned to the session as \code{list}. } } } \section{Accessors: Back-end control}{ In the code below \code{x} is a \code{SnowParam} object. See the ?\code{BiocParallelParam} man page for details on these accessors. \describe{ \item{}{\code{bpworkers(x)}, \code{bpworkers(x) <- value}, \code{bpnworkers(x)}} \item{}{\code{bptasks(x)}, \code{bptasks(x) <- value}} \item{}{\code{bpstart(x)}} \item{}{\code{bpstop(x)}} \item{}{\code{bpisup(x)}} \item{}{\code{bpbackend(x)}, \code{bpbackend(x) <- value}} } } \section{Accessors: Error Handling}{ In the code below \code{x} is a \code{SnowParam} object. See the ?\code{BiocParallelParam} man page for details on these accessors. \describe{ \item{}{\code{bpstopOnError(x)}, \code{bpstopOnError(x) <- value}} } } \section{Methods: Evaluation}{ In the code below \code{BPPARAM} is a \code{SnowParam} object. Full documentation for these functions are on separate man pages: see ?\code{bpmapply}, ?\code{bplapply}, ?\code{bpvec}, ?\code{bpiterate} and ?\code{bpaggregate}. \describe{ \item{}{ \code{bpmapply(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPPARAM=bpparam())} } \item{}{ \code{bplapply(X, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpvec(X, FUN, ..., AGGREGATE=c, BPPARAM=bpparam())} } \item{}{ \code{bpiterate(ITER, FUN, ..., BPPARAM=bpparam())} } \item{}{ \code{bpaggregate(x, data, FUN, ..., BPPARAM=bpparam())} } } } \section{Methods: Other}{ In the code below \code{x} is a \code{SnowParam} object. \describe{ \item{}{ \code{show(x)}: Displays the \code{SnowParam} object. } \item{}{ \code{bpok(x)}: Returns a \code{logical()} vector: FALSE for any jobs that resulted in an error. \code{x} is the result list output by a \code{BiocParallel} function such as \code{bplapply} or \code{bpmapply}. } } } \section{Coercion}{ \describe{ \item{}{ \code{as(from, "SnowParam")}: Creates a \code{SnowParam} object from a \code{SOCKcluster} or \code{spawnedMPIcluster} object. Instances created in this way cannot be started or stopped. } } } \section{Global Options}{ The environment variable \code{BIOCPARALLEL_WORKER_NUMBER} and the the global option \code{mc.cores} influences the number of workers determined by \code{snowWorkers()} (described above) or \code{multicoreWorkers()} (see \code{\link{multicoreWorkers}}). Workers communicate to the master through socket connections. Socket connections require a hostname and port. These are determined by arguments \code{manager.hostname} and \code{manager.port}; default values are influenced by global options. The default manager hostname is "localhost" when the number of workers are specified as a \code{numeric(1)}, and \code{Sys.info()[["nodename"]]} otherwise. The hostname can be over-ridden by the envirnoment variable \code{MASTER}, or the global option \code{bphost} (e.g., \code{options(bphost=Sys.info()[["nodename"]])}. The default port is chosen as a random value between 11000 and 11999. The port may be over-ridden by the environment variable \code{R_PARALLEL_PORT} or \code{PORT}, and by the option \code{ports}, e.g., \code{options(ports=12345L)}. } \author{Martin Morgan and Valerie Obenchain.} \seealso{ \itemize{ \item \code{register} for registering parameter classes for use in parallel evaluation. \item \code{\link{MulticoreParam}} for computing in shared memory \item \code{\link{BatchJobsParam}} for computing with cluster schedulers \item \code{\link{DoparParam}} for computing with foreach \item \code{\link{SerialParam}} for non-parallel evaluation } } \examples{ ## ----------------------------------------------------------------------- ## Job configuration: ## ----------------------------------------------------------------------- ## SnowParam supports distributed memory computing. The object fields ## control the division of tasks, error handling, logging and result ## format. bpparam <- SnowParam() bpparam ## Fields are modified with accessors of the same name: bplog(bpparam) <- TRUE dir.create(resultdir <- tempfile()) bpresultdir(bpparam) <- resultdir bpparam ## ----------------------------------------------------------------------- ## Logging: ## ----------------------------------------------------------------------- ## When 'log == TRUE' the workers use a custom script (in BiocParallel) ## that enables logging and access to other job statistics. Log messages ## are returned as each job completes rather than waiting for all to ## finish. ## In 'fun', a value of 'x = 1' will throw a warning, 'x = 2' is ok ## and 'x = 3' throws an error. Because 'x = 1' sleeps, the warning ## should return after the error. X <- 1:3 fun <- function(x) { if (x == 1) { Sys.sleep(2) if (TRUE & c(TRUE, TRUE)) ## warning x } else if (x == 2) { x ## ok } else if (x == 3) { sqrt("FOO") ## error } } ## By default logging is off. Turn it on with the bplog()<- setter ## or by specifying 'log = TRUE' in the constructor. bpparam <- SnowParam(3, log = TRUE, stop.on.error = FALSE) tryCatch({ bplapply(X, fun, BPPARAM = bpparam) }, error=identity) ## When a 'logdir' location is given the messages are redirected to a ## file: \dontrun{ dir.create(logdir <- tempfile()) bplogdir(bpparam) <- logdir bplapply(X, fun, BPPARAM = bpparam) list.files(bplogdir(bpparam)) } ## ----------------------------------------------------------------------- ## Managing results: ## ----------------------------------------------------------------------- ## By default results are returned as a list. When 'resultdir' is given ## files are saved in the directory specified by job, e.g., 'TASK1.Rda', ## 'TASK2.Rda', etc. \dontrun{ dir.create(resultdir <- tempfile()) bpparam <- SnowParam(2, resultdir = resultdir) bplapply(X, fun, BPPARAM = bpparam) list.files(bpresultdir(bpparam)) } ## ----------------------------------------------------------------------- ## Error handling: ## ----------------------------------------------------------------------- ## When 'stop.on.error' is TRUE the process returns as soon as an error ## is thrown. ## When 'stop.on.error' is FALSE all computations are attempted. Partial ## results are returned along with errors. Use bptry() to see the ## partial results bpparam <- SnowParam(2, stop.on.error = FALSE) res <- bptry(bplapply(list(1, "two", 3, 4), sqrt, BPPARAM = bpparam)) res ## Calling bpok() on the result list returns TRUE for elements with no ## error. bpok(res) ## ----------------------------------------------------------------------- ## Random number generation: ## ----------------------------------------------------------------------- ## Random number generation is controlled with the 'RNGseed' field. ## This seed is passed to parallel::clusterSetRNGStream ## which uses the L'Ecuyer-CMRG random number generator and distributes ## streams for each job bpparam <- SnowParam(3, RNGseed = 7739465) bplapply(seq_len(bpnworkers(bpparam)), function(i) rnorm(1), BPPARAM = bpparam) } \keyword{classes} \keyword{methods} BiocParallel/man/bpaggregate.Rd0000644000175200017520000000570014136050065017441 0ustar00biocbuildbiocbuild\name{bpaggregate} \alias{bpaggregate} \alias{bpaggregate,formula,BiocParallelParam-method} \alias{bpaggregate,matrix,BiocParallelParam-method} \alias{bpaggregate,data.frame,BiocParallelParam-method} \alias{bpaggregate,ANY,missing-method} \title{Apply a function on subsets of data frames} \description{ This is a parallel version of \code{\link[stats]{aggregate}}. } \usage{ \S4method{bpaggregate}{formula,BiocParallelParam}(x, data, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) \S4method{bpaggregate}{data.frame,BiocParallelParam}(x, by, FUN, ..., simplify=TRUE, BPREDO=list(), BPPARAM=bpparam()) \S4method{bpaggregate}{matrix,BiocParallelParam}(x, by, FUN, ..., simplify=TRUE, BPREDO=list(), BPPARAM=bpparam()) \S4method{bpaggregate}{ANY,missing}(x, ..., BPREDO=list(), BPPARAM=bpparam()) } \arguments{ \item{x}{A \code{data.frame}, \code{matrix} or a formula. } \item{by}{A list of factors by which \code{x} is split; applicable when \code{x} is \code{data.frame} or \code{matrix}. } \item{data}{A \code{data.frame}; applicable when \code{x} is a \code{formula}. } \item{FUN}{Function to apply. } \item{...}{Additional arguments for \code{FUN}. } \item{simplify}{If set to \code{TRUE}, the return values of \code{FUN} will be simplified using \code{\link{simplify2array}}. } \item{BPPARAM}{An optional \code{\link{BiocParallelParam}} instance determining the parallel back-end to be used during evaluation. } \item{BPREDO}{A \code{list} of output from \code{bpaggregate} with one or more failed elements. When a list is given in \code{BPREDO}, \code{bpok} is used to identify errors, tasks are rerun and inserted into the original results. } } \details{ \code{bpaggregate} is a generic with methods for \code{data.frame} \code{matrix} and \code{formula} objects. \code{x} is divided into subsets according to factors in \code{by}. Data chunks are sent to the workers, \code{FUN} is applied and results are returned as a \code{data.frame}. The function is similar in spirit to \code{\link[stats]{aggregate}} from the stats package but \code{\link[stats]{aggregate}} is not explicitly called. The \code{bpaggregate} \code{formula} method reformulates the call and dispatches to the \code{data.frame} method which in turn distributes data chunks to workers with \code{bplapply}. } \value{ See \code{\link[stats]{aggregate}}. } \author{ Martin Morgan \url{mailto:mtmorgan@fhcrc.org}. } \examples{ if (interactive() && require(Rsamtools) && require(GenomicAlignments)) { fl <- system.file("extdata", "ex1.bam", package="Rsamtools") param <- ScanBamParam(what = c("flag", "mapq")) gal <- readGAlignments(fl, param=param) ## Report the mean map quality by range cutoff: cutoff <- rep(0, length(gal)) cutoff[start(gal) > 1000 & start(gal) < 1500] <- 1 cutoff[start(gal) > 1500] <- 2 bpaggregate(as.data.frame(mcols(gal)$mapq), list(cutoff = cutoff), mean) } } BiocParallel/man/bpiterate.Rd0000644000175200017520000001574314136050065017160 0ustar00biocbuildbiocbuild\name{bpiterate} \alias{bpiterate} \alias{bpiterate,ANY,ANY,missing-method} \alias{bpiterate,ANY,ANY,SerialParam-method} \alias{bpiterate,ANY,ANY,BiocParallelParam-method} \alias{bpiterate,ANY,ANY,SnowParam-method} \alias{bpiterate,ANY,ANY,BatchJobsParam-method} \alias{bpiterate,ANY,ANY,DoparParam-method} \alias{bpiterate,ANY,ANY,BatchtoolsParam-method} \title{Parallel iteration over an indeterminate number of data chunks} \description{ \code{bpiterate} iterates over an indeterminate number of data chunks (e.g., records in a file). Each chunk is processed by parallel workers in an asynchronous fashion; as each worker finishes it receives a new chunk. Data are traversed a single time. } \usage{ bpiterate(ITER, FUN, ..., BPPARAM=bpparam()) \S4method{bpiterate}{ANY,ANY,missing}(ITER, FUN, ..., BPPARAM=bpparam()) \S4method{bpiterate}{ANY,ANY,BatchtoolsParam}( ITER, FUN, ..., REDUCE, init, reduce.in.order=FALSE, BPPARAM=bpparam() ) } \arguments{ \item{ITER}{ A function with no arguments that returns an object to process, generally a chunk of data from a file. When no objects are left (i.e., end of file) it should return NULL and continue to return NULL regardless of the number of times it is invoked after reaching the end of file. This function is run on the master. } \item{FUN}{ A function to process the object returned by \code{ITER}; run on parallel workers separate from the master. When BPPARAM is a MulticoreParam, FUN is `decorated` with additional arguments and therefore must have \dots in the signature. } \item{BPPARAM}{An optional \code{\link{BiocParallelParam}} instance determining the parallel back-end to be used during evaluation, or a \code{list} of \code{BiocParallelParam} instances, to be applied in sequence for nested calls to \code{bpiterate}. } \item{REDUCE}{Optional function that combines (reduces) output from \code{FUN}. As each worker returns, the data are combined with the \code{REDUCE} function. \code{REDUCE} takes 2 arguments; one is the current result and the other is the output of \code{FUN} from a worker that just finished.} \item{init}{Optional initial value for \code{REDUCE}; must be of the same type as the object returned from \code{FUN}. When supplied, \code{reduce.in.order} is set to TRUE.} \item{reduce.in.order}{Logical. When TRUE, REDUCE is applied to the results from the workers in the same order the tasks were sent out.} \item{\dots}{Arguments to other methods, and named arguments for \code{FUN}.} } \details{ Supported for \code{SnowParam}, \code{MulticoreParam} and \code{BatchtoolsParam}. \code{bpiterate} iterates through an unknown number of data chunks, dispatching chunks to parallel workers as they become available. In contrast, other \code{bp*apply} functions such as \code{bplapply} or \code{bpmapply} require the number of data chunks to be specified ahead of time. This quality makes \code{bpiterate} useful for iterating through files of unknown length. \code{ITER} serves up chunks of data until the end of the file is reached at which point it returns NULL. Note that \code{ITER} should continue to return NULL reguardless of the number of times it is invoked after reaching the end of the file. \code{FUN} is applied to each object (data chunk) returned by \code{ITER}. } \value{ By default, a \code{list} the same length as the number of chunks in \code{ITER()}. When \code{REDUCE} is used, the return is consistent with application of the reduction. } \author{ Valerie Obenchain \url{mailto:vobencha@fhcrc.org}. } \seealso{ \itemize{ \item \code{\link{bpvec}} for parallel, vectorized calculations. \item \code{\link{bplapply}} for parallel, lapply-like calculations. \item \code{\link{BiocParallelParam}} for details of \code{BPPARAM}. \item \code{\link{BatchtoolsParam}} for details of \code{BatchtoolsParam}. } } \examples{ \dontrun{ if (require(Rsamtools) && require(RNAseqData.HNRNPC.bam.chr14) && require(GenomicAlignments) && require(ShortRead)) { ## ---------------------------------------------------------------------- ## Iterate through a BAM file ## ---------------------------------------------------------------------- ## Select a single file and set 'yieldSize' in the BamFile object. fl <- RNAseqData.HNRNPC.bam.chr14_BAMFILES[[1]] bf <- BamFile(fl, yieldSize = 300000) ## bamIterator() is initialized with a BAM file and returns a function. ## The return function requires no arguments and iterates through the ## file returning data chunks the size of yieldSize. bamIterator <- function(bf) { done <- FALSE if (!isOpen( bf)) open(bf) function() { if (done) return(NULL) yld <- readGAlignments(bf) if (length(yld) == 0L) { close(bf) done <<- TRUE NULL } else yld } } ## FUN counts reads in a region of interest. roi <- GRanges("chr14", IRanges(seq(19e6, 107e6, by = 10e6), width = 10e6)) counter <- function(reads, roi, ...) { countOverlaps(query = roi, subject = reads) } ## Initialize the iterator. ITER <- bamIterator(bf) ## The number of chunks returned by ITER() determines the result length. bpparam <- MulticoreParam(workers = 3) ## bpparam <- BatchtoolsParam(workers = 3), see ?BatchtoolsParam bpiterate(ITER, counter, roi = roi, BPPARAM = bpparam) ## Re-initialize the iterator and combine on the fly with REDUCE: ITER <- bamIterator(bf) bpparam <- MulticoreParam(workers = 3) bpiterate(ITER, counter, REDUCE = sum, roi = roi, BPPARAM = bpparam) ## ---------------------------------------------------------------------- ## Iterate through a FASTA file ## ---------------------------------------------------------------------- ## Set data chunk size with 'n' in the FastqStreamer object. sp <- SolexaPath(system.file('extdata', package = 'ShortRead')) fl <- file.path(analysisPath(sp), "s_1_sequence.txt") ## Create an iterator that returns data chunks the size of 'n'. fastqIterator <- function(fqs) { done <- FALSE if (!isOpen(fqs)) open(fqs) function() { if (done) return(NULL) yld <- yield(fqs) if (length(yld) == 0L) { close(fqs) done <<- TRUE NULL } else yld } } ## The process function summarizes the number of times each sequence occurs. summary <- function(reads, ...) { ShortRead::tables(reads, n = 0)$distribution } ## Create a param. bpparam <- SnowParam(workers = 2) ## Initialize the streamer and iterator. fqs <- FastqStreamer(fl, n = 100) ITER <- fastqIterator(fqs) bpiterate(ITER, summary, BPPARAM = bpparam) ## Results from the workers are combined on the fly when REDUCE is used. ## Collapsing the data in this way can substantially reduce memory ## requirements. fqs <- FastqStreamer(fl, n = 100) ITER <- fastqIterator(fqs) bpiterate(ITER, summary, REDUCE = merge, all = TRUE, BPPARAM = bpparam) } } } \keyword{manip} \keyword{methods} BiocParallel/man/bplapply.Rd0000644000175200017520000000432614136050065017017 0ustar00biocbuildbiocbuild\name{bplapply} \alias{bplapply} \alias{bplapply,ANY,list-method} \alias{bplapply,ANY,missing-method} \alias{bplapply,ANY,BiocParallelParam-method} \alias{bplapply,ANY,BatchJobsParam-method} \alias{bplapply,ANY,DoparParam-method} \alias{bplapply,ANY,SerialParam-method} \alias{bplapply,ANY,SnowParam-method} \title{Parallel lapply-like functionality} \description{ \code{bplapply} applies \code{FUN} to each element of \code{X}. Any type of object \code{X} is allowed, provided \code{length}, \code{[}, and \code{[[} methods are available. The return value is a \code{list} of length equal to \code{X}, as with \code{\link[base]{lapply}}. } \usage{ bplapply(X, FUN, ..., BPREDO = list(), BPPARAM=bpparam()) } \arguments{ \item{X}{ Any object for which methods \code{length}, \code{[}, and \code{[[} are implemented. } \item{FUN}{ The \code{function} to be applied to each element of \code{X}. } \item{\dots}{ Additional arguments for \code{FUN}, as in \code{\link{lapply}}. } \item{BPPARAM}{ An optional \code{\link{BiocParallelParam}} instance determining the parallel back-end to be used during evaluation, or a \code{list} of \code{BiocParallelParam} instances, to be applied in sequence for nested calls to \pkg{BiocParallel} functions. } \item{BPREDO}{A \code{list} of output from \code{bplapply} with one or more failed elements. When a list is given in \code{BPREDO}, \code{bpok} is used to identify errors, tasks are rerun and inserted into the original results. } } \details{ See \code{methods{bplapply}} for additional methods, e.g., \code{method?bplapply("MulticoreParam")}. } \value{See \code{\link[base]{lapply}}.} \author{ Martin Morgan \url{mailto:mtmorgan@fhcrc.org}. Original code as attributed in \code{\link{mclapply}}. } \seealso{ \itemize{ \item \code{\link{bpvec}} for parallel, vectorized calculations. \item \code{\link{BiocParallelParam}} for possible values of \code{BPPARAM}. } } \examples{ methods("bplapply") ## ten tasks (1:10) so ten calls to FUN default registered parallel ## back-end. Compare with bpvec. fun <- function(v) { message("working") ## 10 tasks sqrt(v) } bplapply(1:10, fun) } \keyword{manip} BiocParallel/man/bploop.Rd0000644000175200017520000000621414147652225016475 0ustar00biocbuildbiocbuild\name{bploop} \Rdversion{1.1} % Class \alias{bploop} % managers \alias{bploop.lapply} \alias{bploop.iterate} \alias{bprunMPIslave} \alias{bprunMPIworker} \title{Internal Functions for SNOW-style Parallel Evaluation} \description{ The functions documented on this page are primarily for use within \pkg{BiocParallel} to enable SNOW-style parallel evaluation, using communication between manager and worker nodes through sockets. } \usage{ \S3method{bploop}{lapply}(manager, X, FUN, ARGS, BPPARAM, ...) \S3method{bploop}{iterate}(manager, ITER, FUN, ARGS, BPPARAM, REDUCE, init, reduce.in.order, progress.length, ...) } \arguments{ \item{manager}{An object representing the manager node. For workers, this is the node to which the worker will communicate. For managers, this is the form of iteration -- \code{lapply} or \code{iterate}.} \item{X}{A vector of jobs to be performed.} \item{FUN}{A function to apply to each job.} \item{ARGS}{A list of arguments to be passed to \code{FUN}.} \item{BPPARAM}{An instance of a \code{BiocParallelParam} class.} \item{ITER}{A function used to generate jobs. No more jobs are available when \code{ITER()} returns \code{NULL}.} \item{REDUCE}{(Optional) A function combining two values returned by \code{FUN} into a single value.} \item{init}{(Optional) Initial value for reduction.} \item{reduce.in.order}{(Optional) logical(1) indicating that reduction must occur in the order jobs are dispatched (\code{TRUE}) or that reduction can occur in the order jobs are completed (\code{FALSE}).} \item{\ldots}{Additional arguments, ignored in all cases.} \item{progress.length}{(Optional) The length of the progress bar. Used by \code{bploop.lapply} to indicate use of a progress bar rather than iterator.} } \details{ Workers enter a loop. They wait to receive a message (\R list) from the \code{manager}. The message contains a \code{type} element, with evaluation as follows: \describe{ \item{\dQuote{EXEC}}{Execute the \R{} code in the message, returning the result to the \code{manager}.} \item{\dQuote{DONE}}{Signal termination to the \code{manager}, terminate the worker.} } Managers under \code{lapply} dispatch pre-determined jobs, \code{X}, to workers, collecting the results from and dispatching new jobs to the first available worker. The manager returns a list of results, in a one-to-one correspondence with the order of jobs supplied, when all jobs have been evaluated. Managers under \code{iterate} dispatch an undetermined number of jobs to workers, collecting previous jobs from and dispatching new jobs to the first available worker. Dispatch continues until available jobs are exhausted. The return value is by default a list of results in a one-to-one correspondence with the order of jobs supplied. The return value is influenced by \code{REDUCE}, \code{init}, and \code{reduce.in.order}. } \author{ Valerie Obenchain, Martin Morgan. Derived from similar functionality in the \pkg{snow} and \pkg{parallel} packages. } \examples{ ## These functions are not meant to be called by the end user. } BiocParallel/man/bpmapply.Rd0000644000175200017520000000523314136050065017016 0ustar00biocbuildbiocbuild\name{bpmapply} \alias{bpmapply} \alias{bpmapply,ANY,list-method} \alias{bpmapply,ANY,missing-method} \alias{bpmapply,ANY,BiocParallelParam-method} \title{Parallel mapply-like functionality} \description{ \code{bpmapply} applies \code{FUN} to first elements of \code{...}, the second elements and so on. Any type of object in \code{...} is allowed, provided \code{length}, \code{[}, and \code{[[} methods are available. The return value is a \code{list} of length equal to the length of all objects provided, as with \code{\link[base]{mapply}}. } \usage{ bpmapply(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) \S4method{bpmapply}{ANY,missing}(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) \S4method{bpmapply}{ANY,BiocParallelParam}(FUN, ..., MoreArgs=NULL, SIMPLIFY=TRUE, USE.NAMES=TRUE, BPREDO=list(), BPPARAM=bpparam()) } \arguments{ \item{FUN}{The \code{function} to be applied to each element passed via \code{...}. } \item{\dots}{Objects for which methods \code{length}, \code{[}, and \code{[[} are implemented. All objects must have the same length or shorter objects will be replicated to have length equal to the longest. } \item{MoreArgs}{List of additional arguments to \code{FUN}. } \item{SIMPLIFY}{ If \code{TRUE} the result will be simplified using \code{\link{simplify2array}}. } \item{USE.NAMES}{If \code{TRUE} the result will be named. } \item{BPPARAM}{An optional \code{\link{BiocParallelParam}} instance defining the parallel back-end to be used during evaluation. } \item{BPREDO}{A \code{list} of output from \code{bpmapply} with one or more failed elements. When a list is given in \code{BPREDO}, \code{bpok} is used to identify errors, tasks are rerun and inserted into the original results. } } \details{ See \code{methods{bpmapply}} for additional methods, e.g., \code{method?bpmapply("MulticoreParam")}. } \value{See \code{\link[base]{mapply}}.} \author{ Michel Lang . Original code as attributed in \code{\link{mclapply}}. } \seealso{ \itemize{ \item \code{\link{bpvec}} for parallel, vectorized calculations. \item \code{\link{BiocParallelParam}} for possible values of \code{BPPARAM}. } } \examples{ methods("bpmapply") fun <- function(greet, who) { paste(Sys.getpid(), greet, who) } greet <- c("morning", "night") who <- c("sun", "moon") param <- bpparam() original <- bpworkers(param) bpworkers(param) <- 2 result <- bpmapply(fun, greet, who, BPPARAM = param) cat(paste(result, collapse="\n"), "\n") bpworkers(param) <- original } \keyword{manip} BiocParallel/man/bpok.Rd0000644000175200017520000000670214136050065016127 0ustar00biocbuildbiocbuild\name{bpok} \alias{bpok} \alias{bperrorTypes} \title{Resume computation with partial results} \description{ Identifies unsuccessful results returned from \code{bplapply}, \code{bpmapply}, \code{bpvec}, \code{bpaggregate} or \code{bpvectorize}. } \usage{ bpok(x, type = bperrorTypes()) bperrorTypes() } \arguments{ \item{x}{ Results returned from a call to \code{bp*apply}. } \item{type}{ A character(1) error type, from the vector returned by \code{bperrorTypes()} and described below } } \details{ \code{bpok()} returns a \code{logical()} vector: FALSE for any jobs that resulted in an error. \code{x} is the result list output by \code{bplapply}, \code{bpmapply}, \code{bpvec}, \code{bpaggregate} or \code{bpvectorize}. \code{bperrorTypes()} returns a character() vector of possible error types generated during parallel evaluation. Types are: \itemize{ \item{\code{bperror}: Any of the following errors. This is the default value for \code{bpok()}.} \item{\code{remote_error}: An \emph{R} error occurring while evaluating \code{FUN()}, e.g., taking the square root of a character vector, \code{sqrt("One")}.} \item{\code{unevaluated_error}: When \code{*Param(stop.on.error = TRUE)} (default), a remote error halts evaluation of other tasks assigned to the same worker. The return value for these unevaluated elements is an error of type \code{unevaluated_error}.} \item{\code{not_available_error}: Only produced by \code{DoparParam()} when a remote error occurs during evaluation of an element of \code{X} -- \code{DoparParam()} sets all values after the remote error to this class.} \item{\code{worker_comm_error}: An error occurring while trying to communicate with workers, e.g., when a worker quits unexpectedly. when this type of error occurs, the length of the result may differ from the length of the input \code{X}. } } } \author{Michel Lang, Martin Morgan and Valerie Obenchain} \examples{ ## ----------------------------------------------------------------------- ## Catch errors: ## ----------------------------------------------------------------------- ## By default 'stop.on.error' is TRUE in BiocParallelParam objects. If ## 'stop.on.error' is TRUE an ill-fated bplapply() simply stops, ## displaying the error message. param <- SnowParam(workers = 2, stop.on.error = TRUE) tryCatch({ bplapply(list(1, "two", 3), sqrt, BPPARAM = param) }, error=identity) ## If 'stop.on.error' is FALSE then the computation continues. Errors ## are signalled but the full evaluation can be retrieved param <- SnowParam(workers = 2, stop.on.error = FALSE) X <- list(1, "two", 3) result <- bptry(bplapply(X, sqrt, BPPARAM = param)) result ## Check for errors: fail <- !bpok(result) fail ## Access the traceback with attr(): tail(attr(result[[2]], "traceback"), 5) ## ----------------------------------------------------------------------- ## Resume calculations: ## ----------------------------------------------------------------------- ## The 'resume' mechanism is triggered by supplying a list of partial ## results as 'BPREDO'. Data elements that failed are rerun and merged ## with previous results. ## A call of sqrt() on the character "2" returns an error. Fix the input ## data by changing the character "2" to a numeric 2: X_mod <- list(1, 2, 3) bplapply(X_mod, sqrt, BPPARAM = param , BPREDO = result) } BiocParallel/man/bpschedule.Rd0000644000175200017520000000224314136050065017306 0ustar00biocbuildbiocbuild\name{bpschedule} \alias{bpschedule} \alias{bpschedule,missing-method} \alias{bpschedule,ANY-method} \title{Schedule back-end Params} \description{ Use functions on this page to influence scheduling of parallel processing. } \usage{ bpschedule(x) } \arguments{ \item{x}{ An instance of a \code{BiocParallelParam} class, e.g., \code{\link{MulticoreParam}}, \code{\link{SnowParam}}, \code{\link{DoparParam}}. \code{x} can be missing, in which case the default back-end (see \code{\link{register}}) is used. } } \details{ \code{bpschedule} returns a logical(1) indicating whether the parallel evaluation should occur at this point. } \value{ \code{bpschedule} returns a scalar logical. } \author{ Martin Morgan \url{mailto:mtmorgan@fhcrc.org}. } \seealso{ \code{\link{BiocParallelParam}} for possible values of \code{x}. } \examples{ bpschedule(SnowParam()) # TRUE bpschedule(MulticoreParam(2)) # FALSE on windows p <- MulticoreParam() bpschedule(p) # TRUE bplapply(1:2, function(i, p) { bpschedule(p) # FALSE }, p = p, BPPARAM=p) } \keyword{manip} BiocParallel/man/bptry.Rd0000644000175200017520000000365714136050065016342 0ustar00biocbuildbiocbuild\name{bptry} \alias{bptry} \title{Try expression evaluation, recovering from bperror signals} \description{ This function is meant to be used as a wrapper around \code{bplapply()} and friends, returning the evaluated expression rather than signalling an error. } \usage{ bptry(expr, ..., bplist_error, bperror) } \arguments{ \item{expr}{An R expression; see \code{\link{tryCatch}}.} \item{bplist_error}{ A \sQuote{handler} function of a single argument, used to catch \code{bplist_error} conditions signalled by \code{expr}. A \code{bplist_error} condition is signalled when an element of \code{bplapply} and other iterations contain a evaluation that failed. When missing, the default retrieves the \dQuote{result} attribute from the error, containing the partially evaluated results. Setting \code{bplist_error=identity} returns the evaluated condition. Setting \code{bplist_error=stop} passes the condition to other handlers, notably the handler provided by \code{bperror}. } \item{bperror}{ A \sQuote{handler} function of a single argument, use to catch \code{bperror} conditions signalled by \code{expr}. A \code{bperror} is a base class to all errors signaled by \pkg{BiocParallel} code. When missing, the default returns the condition without signalling an error. } \item{\dots}{ Additional named handlers passed to \code{tryCatch()}. These user-provided handlers are evaluated before default handlers \code{bplist_error}, \code{bperror}. } } \value{ The partially evaluated list of results. } \author{Martin Morgan \email{martin.morgan@roswellpark.org}} \seealso{ \code{\link{tryCatch}}, \code{\link{bplapply}}. } \examples{ param = registered()[[1]] param X = list(1, "2", 3) bptry(bplapply(X, sqrt)) # bplist_error handler bptry(bplapply(X, sqrt), bplist_error=identity) # bperror handler } \keyword{manip} BiocParallel/man/bpvalidate.Rd0000644000175200017520000001210414136050065017300 0ustar00biocbuildbiocbuild\name{bpvalidate} \alias{bpvalidate} \alias{BPValidate-class} \alias{show,BPValidate-method} \title{Tools for developing functions for parallel execution in distributed memory} \description{ \code{bpvalidate} interrogates the function environment and search path to locate undefined symbols. } \usage{ bpvalidate(fun, signal = c("warning", "error", "silent")) } \arguments{ \item{fun}{The function to be checked. \code{typeof(fun)} must return either \code{"closure"} or \code{"builtin"}.} \item{signal}{\code{character(1)} matching \code{"warning", "error", "silent"} or a function with signature \code{(..., call.)} to be invoked when reporting errors. Using \code{"silent"} suppresses output; \code{"warning"} and \code{"error"} emit warnings or errors when \code{fun} contains references to unknown variables or variables defined in the global environment (and hence not serialized to workers).} } \details{ \code{bpvalidate} tests if a function can be run in a distributed memory environment (e.g., SOCK clusters, Windows machines). \code{bpvalidate} looks in the environment of \code{fun}, in the NAMESPACE exports of libraries loaded in \code{fun}, and along the search path to identify any symbols outside the scope of \code{fun}. \code{bpvalidate} can be used to check functions passed to the bp* family of functions in \code{BiocParallel} or other packages that support parallel evaluation on clusters such as \code{snow}, \code{BatchJobs}, \code{Rmpi}, etc. \describe{ \item{testing package functions}{ The environment of a function defined inside a package is the NAMESPACE of the package. It is important to test these functions as they will be called from within the package, with the appropriate environment. Specifically, do not copy/paste the function into the workspace; once this is done the GlobalEnv becomes the function environment. To test a package function, load the package then call the function by name (myfun) or explicitly (mypkg:::myfun) if not exported. } \item{testing workspace functions}{ The environment of a function defined in the workspace is the GlobalEnv. Because these functions do not have an associated package NAMESPACE, the functions and variables used in the body must be explicitly passed or defined. See examples. Defining functions in the workspace is often done during development or testing. If the function is later moved inside a package, it can be rewritten in a more lightweight form by taking advantage of imported symbols in the package NAMESPACE. } } NOTE: \code{bpvalidate} does not currently work on Generics. } \value{ An object of class \code{BPValidate} summarizing symbols identified in the global environment or search path, or undefined in the enviornments the function was defined in. Details are only available via `show()`. } \author{ Martin Morgan \url{mailto:mtmorgan.bioc@gmail.com} and Valerie Obenchain. } \examples{ ## --------------------------------------------------------------------- ## Interactive use ## --------------------------------------------------------------------- fun <- function() .__UNKNOWN_SYMBOL__ bpvalidate(fun, "silent") ## --------------------------------------------------------------------- ## Testing package functions ## --------------------------------------------------------------------- \dontrun{ library(myPkg) ## Test exported functions by name or the double colon: bpvalidate(myExportedFun) bpvalidate(myPkg::myExportedFun) ## Non-exported functions are called with the triple colon: bpvalidate(myPkg:::myInternalFun) } ## --------------------------------------------------------------------- ## Testing workspace functions ## --------------------------------------------------------------------- ## Functions defined in the workspace have the .GlobalEnv as their ## environment. Often the symbols used inside the function body ## are not defined in .GlobalEnv and must be passed explicitly. ## Loading libraries: ## In 'fun1' countBam() is flagged as unknown: fun1 <- function(fl, ...) countBam(fl) v <- bpvalidate(fun1) ## countBam() is not defined in .GlobalEnv and must be passed as ## an argument or made available by loading the library. fun2 <- function(fl, ...) { Rsamtools::countBam(fl) } v <- bpvalidate(fun2) ## Passing arguments: ## 'param' is defined in the workspace but not passed to 'fun3'. ## bpvalidate() flags 'param' as being found '.GlobalEnv' which means ## it is not defined in the function environment or inside the function. library(Rsamtools) param <- ScanBamParam(flag=scanBamFlag(isMinusStrand=FALSE)) fun3 <- function(fl, ...) { Rsamtools::countBam(fl, param=param) } v <- bpvalidate(fun3) ## 'param' is explicitly passed by adding it as a formal argument. fun4 <- function(fl, ..., param) { Rsamtools::countBam(fl, param=param) } bpvalidate(fun4) ## The corresponding call to a bp* function includes 'param': \dontrun{ bplapply(files, fun4, param=param, BPPARAM=SnowParam(2)) } } \keyword{manip} BiocParallel/man/bpvec.Rd0000644000175200017520000001020714136050065016266 0ustar00biocbuildbiocbuild\name{bpvec} \alias{bpvec} \alias{bpvec,ANY,missing-method} \alias{bpvec,ANY,list-method} \alias{bpvec,ANY,BiocParallelParam-method} \title{Parallel, vectorized evaluation} \description{ \code{bpvec} applies \code{FUN} to subsets of \code{X}. Any type of object \code{X} is allowed, provided \code{length}, and \code{[} are defined on \code{X}. \code{FUN} is a function such that \code{length(FUN(X)) == length(X)}. The objects returned by \code{FUN} are concatenated by \code{AGGREGATE} (\code{c()} by default). The return value is \code{FUN(X)}. } \usage{ bpvec(X, FUN, ..., AGGREGATE=c, BPREDO=list(), BPPARAM=bpparam()) } \arguments{ \item{X}{ Any object for which methods \code{length} and \code{[} are implemented. } \item{FUN}{ A function to be applied to subsets of \code{X}. The relationship between \code{X} and \code{FUN(X)} is 1:1, so that \code{length(FUN(X, ...)) == length(X)}. The return value of separate calls to \code{FUN} are concatenated with \code{AGGREGATE}. } \item{\dots}{Additional arguments for \code{FUN}. } \item{AGGREGATE}{A function taking any number of arguments \code{...} called to reduce results (elements of the \code{...} argument of \code{AGGREGATE} from parallel jobs. The default, \code{c}, concatenates objects and is appropriate for vectors; \code{rbind} might be appropriate for data frames. } \item{BPPARAM}{ An optional \code{\link{BiocParallelParam}} instance determining the parallel back-end to be used during evaluation, or a \code{list} of \code{BiocParallelParam} instances, to be applied in sequence for nested calls to \pkg{BiocParallel} functions. } \item{BPREDO}{A \code{list} of output from \code{bpvec} with one or more failed elements. When a list is given in \code{BPREDO}, \code{bpok} is used to identify errors, tasks are rerun and inserted into the original results. } } \details{ This method creates a vector of indices for \code{X} that divide the elements as evenly as possible given the number of \code{bpworkers()} and \code{bptasks()} of \code{BPPARAM}. Indices and data are passed to \code{bplapply} for parallel evaluation. The distinction between \code{bpvec} and \code{bplapply} is that \code{bplapply} applies \code{FUN} to each element of \code{X} separately whereas \code{bpvec} assumes the function is vectorized, e.g., \code{c(FUN(x[1]), FUN(x[2]))} is equivalent to \code{FUN(x[1:2])}. This approach can be more efficient than \code{bplapply} but requires the assumption that \code{FUN} takes a vector input and creates a vector output of the same length as the input which does not depend on partitioning of the vector. This behavior is consistent with \code{parallel:::pvec} and the \code{?pvec} man page should be consulted for further details. } \value{ The result should be identical to \code{FUN(X, ...)} (assuming that \code{AGGREGATE} is set appropriately). When evaluation of individual elements of \code{X} results in an error, the result is a \code{list} with the same geometry (i.e., \code{lengths()}) as the split applied to \code{X} to create chunks for parallel evaluation; one or more elements of the list contain a \code{bperror} element, indicting that the vectorized calculation failed for at least one of the index values in that chunk. An error is also signaled when \code{FUN(X)} does not return an object of the same length as \code{X}; this condition is only detected when the number of elements in \code{X} is greater than the number of workers. } \author{Martin Morgan \url{mailto:mtmorgan@fhcrc.org}.} \seealso{ \code{\link{bplapply}} for parallel lapply. \code{\link{BiocParallelParam}} for possible values of \code{BPPARAM}. \code{\link{pvec}} for background. } \examples{ methods("bpvec") ## ten tasks (1:10), called with as many back-end elements are specified ## by BPPARAM. Compare with bplapply fun <- function(v) { message("working") sqrt(v) } system.time(result <- bpvec(1:10, fun)) result ## invalid FUN -- length(class(X)) is not equal to length(X) bptry(bpvec(1:2, class, BPPARAM=SerialParam())) } \keyword{manip} BiocParallel/man/bpvectorize.Rd0000644000175200017520000000440014136050065017521 0ustar00biocbuildbiocbuild\name{bpvectorize} \alias{bpvectorize} \alias{bpvectorize,ANY,ANY-method} \alias{bpvectorize,ANY,missing-method} \title{Transform vectorized functions into parallelized, vectorized function} \description{ This transforms a vectorized function into a parallel, vectorized function. Any function \code{FUN} can be used, provided its parallelized argument (by default, the first argument) has a \code{length} and \code{[} method defined, and the return value of \code{FUN} can be concatenated with \code{c}. } \usage{ bpvectorize(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) \S4method{bpvectorize}{ANY,ANY}(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) \S4method{bpvectorize}{ANY,missing}(FUN, ..., BPREDO=list(), BPPARAM=bpparam()) } \arguments{ \item{FUN}{A function whose first argument has a \code{length} and can be subset \code{[}, and whose evaluation would benefit by splitting the argument into subsets, each one of which is independently transformed by \code{FUN}. The return value of \code{FUN} must support concatenation with \code{c}. } \item{...}{Additional arguments to parallization, unused. } \item{BPPARAM}{An optional \code{\link{BiocParallelParam}} instance determining the parallel back-end to be used during evaluation. } \item{BPREDO}{A \code{list} of output from \code{bpvectorize} with one or more failed elements. When a list is given in \code{BPREDO}, \code{bpok} is used to identify errors, tasks are rerun and inserted into the original results. } } \details{ The result of \code{bpvectorize} is a function with signature \code{\dots}; arguments to the returned function are the original arguments \code{FUN}. \code{BPPARAM} is used for parallel evaluation. When \code{BPPARAM} is a class for which no method is defined (e.g., \code{\link{SerialParam}}), \code{FUN(X)} is used. See \code{methods{bpvectorize}} for additional methods, if any. } \value{ A function taking the same arguments as \code{FUN}, but evaluated using \code{\link{bpvec}} for parallel evaluation across available cores. } \author{ Ryan Thompson \url{mailto:rct@thompsonclan.org} } \seealso{\code{bpvec}} \examples{ psqrt <- bpvectorize(sqrt) ## default parallelization psqrt(1:10) } \keyword{interface} BiocParallel/man/ipcmutex.Rd0000644000175200017520000000663714136050065017041 0ustar00biocbuildbiocbuild\name{ipcmutex} \alias{ipclocked} \alias{ipclock} \alias{ipctrylock} \alias{ipcunlock} \alias{ipcid} \alias{ipcremove} \alias{ipcyield} \alias{ipcvalue} \alias{ipcreset} \title{Inter-process locks and counters} \description{ Functions documented on this page enable locks and counters between processes on the \emph{same} computer. Use \code{ipcid()} to generate a unique mutex or counter identifier. A mutex or counter with the same \code{id}, including those in different processes, share the same state. \code{ipcremove()} removes external state associated with mutex or counters created with \code{id}. \code{ipclock()} blocks until the lock is obtained. \code{ipctrylock()} tries to obtain the lock, returning immediately if it is not available. \code{ipcunlock()} releases the lock. \code{ipclocked()} queries the lock to determine whether it is currently held. \code{ipcyield()} returns the current counter, and increments the value for subsequent calls. \code{ipcvalue()} returns the current counter without incrementing. \code{ipcreset()} sets the counter to \code{n}, such that the next call to \code{ipcyield()} or \code{ipcvalue()} returns \code{n}. } \usage{ ## Utilities ipcid(id) ipcremove(id) ## Locks ipclock(id) ipctrylock(id) ipcunlock(id) ipclocked(id) ## Counters ipcyield(id) ipcvalue(id) ipcreset(id, n = 1) } \arguments{ \item{id}{character(1) identifier string for mutex or counter. \code{ipcid()} ensures that the identifier is universally unique.} \item{n}{integer(1) value from which \code{ipcyield()} will increment.} } \value{ Locks: \code{ipclock()} creates a named lock, returning \code{TRUE} on success. \code{trylock()} returns \code{TRUE} if the lock is obtained, \code{FALSE} otherwise. \code{ipcunlock()} returns \code{TRUE} on success, \code{FALSE} (e.g., because there is nothing to unlock) otherwise. \code{ipclocked()} returns \code{TRUE} when \code{id} is locked, and \code{FALSE} otherwise. Counters: \code{ipcyield()} returns an integer(1) value representing the next number in sequence. The first value returned is 1. \code{ipcvalue()} returns the value to be returned by the next call to \code{ipcyield()}, without incrementing the counter. If the counter is no longer available, \code{ipcyield()} returns \code{NA}. \code{ipcreset()} returns \code{n}, invisibly. Utilities: \code{ipcid()} returns a character(1) unique identifier, with \code{id} (if not missing) prepended. \code{ipcremove()} returns (invisibly) \code{TRUE} if external resources were released or \code{FALSE} if not (e.g., because the resources has already been released). } \examples{ ipcid() ## Locks id <- ipcid() ipclock(id) ipctrylock(id) ipcunlock(id) ipctrylock(id) ipclocked(id) ipcremove(id) id <- ipcid() system.time({ ## about 1s, .2s for each process instead of .2s if no lock result <- bplapply(1:2, function(i, id) { BiocParallel::ipclock(id) Sys.sleep(.2) time <- Sys.time() BiocParallel::ipcunlock(id) time }, id) }) ipcremove(id) diff(sort(unlist(result, use.names=FALSE))) ## Counters id <- ipcid() ipcyield(id) ipcyield(id) ipcvalue(id) ipcyield(id) ipcreset(id, 10) ipcvalue(id) ipcyield(id) ipcremove(id) id <- ipcid() result <- bplapply(1:2, function(i, id) { BiocParallel::ipcyield(id) }, id) ipcremove(id) sort(unlist(result, use.names=FALSE)) } BiocParallel/man/register.Rd0000644000175200017520000001024614136050065017016 0ustar00biocbuildbiocbuild\name{register} \alias{register} \alias{registered} \alias{bpparam} \title{Maintain a global registry of available back-end Params} \description{ Use functions on this page to add to or query a registry of back-ends, including the default for use when no \code{BPPARAM} object is provided to functions. } \usage{ register(BPPARAM, default=TRUE) registered(bpparamClass) bpparam(bpparamClass) } \arguments{ \item{BPPARAM}{ An instance of a \code{BiocParallelParam} class, e.g., \code{\link{MulticoreParam}}, \code{\link{SnowParam}}, \code{\link{DoparParam}}. } \item{default}{ Make this the default \code{BiocParallelParam} for subsequent evaluations? If \code{FALSE}, the argument is placed at the lowest priority position. } \item{bpparamClass}{ When present, the text name of the \code{BiocParallelParam} class (e.g., \dQuote{MulticoreParam}) to be retrieved from the registry. When absent, a list of all registered instances is returned. } } \details{ The registry is a list of back-ends with configuration parameters for parallel evaluation. The first list entry is the default and is used by \code{BiocParallel} functions when no \code{BPPARAM} argument is supplied. At load time the registry is populated with default backends. On Windows these are \code{SnowParam} and \code{SerialParam} and on non-Windows \code{MulticoreParam}, \code{SnowParam} and \code{SerialParam}. When \code{snowWorkers()} or \code{multicoreWorkers} returns a single core, only \code{SerialParm} is registered. The \code{\link{BiocParallelParam}} objects are constructed from global options of the corresponding name, or from the default constructor (e.g., \code{SnowParam()}) if no option is specified. The user can set customizations during start-up (e.g., in an \code{.Rprofile} file) with, for instance, \code{options(MulticoreParam=quote(MulticoreParam(workers=8)))}. The act of \dQuote{registering} a back-end modifies the existing \code{\link{BiocParallelParam}} in the list; only one param of each type can be present in the registry. When \code{default=TRUE}, the newly registered param is moved to the top of the list thereby making it the default. When \code{default=FALSE}, the param is modified `in place` vs being moved to the top. \code{bpparam()}, invoked with no arguments, returns the default \code{\link{BiocParallelParam}} instance from the registry. When called with the text name of a \code{bpparamClass}, the global options are consulted first, e.g., \code{options(MulticoreParam=MulticoreParam())} and then the value of \code{registered(bpparamClass)}. } \value{ \code{register} returns, invisibly, a list of registered back-ends. \code{registered} returns the back-end of type \code{bpparamClass} or, if \code{bpparamClass} is missing, a list of all registered back-ends. \code{bpparam} returns the back-end of type \code{bpparamClass} or, } \author{ Martin Morgan \url{mailto:mtmorgan@fhcrc.org}. } \seealso{ \code{\link{BiocParallelParam}} for possible values of \code{BPPARAM}. } \examples{ ## ---------------------------------------------------------------------- ## The registry ## ---------------------------------------------------------------------- ## The default registry. default <- registered() default ## When default = TRUE the last param registered becomes the new default. snowparam <- SnowParam(workers = 3, type = "SOCK") register(snowparam, default = TRUE) registered() ## Retrieve the default back-end, bpparam() ## or a specific BiocParallelParam. bpparam("SnowParam") ## restore original registry -- push the defaults in reverse order for (param in rev(default)) register(param) ## ---------------------------------------------------------------------- ## Specifying a back-end for evaluation ## ---------------------------------------------------------------------- ## The back-end of choice is given as the BPPARAM argument to ## the BiocParallel functions. None, one, or multiple back-ends can be ## used. bplapply(1:6, sqrt, BPPARAM = MulticoreParam(3)) ## When not specified, the default from the registry is used. bplapply(1:6, sqrt) } \keyword{manip} BiocParallel/src/0000755000175200017520000000000014154342106014714 5ustar00biocbuildbiocbuildBiocParallel/src/Makevars.in0000644000175200017520000000002214136050065017007 0ustar00biocbuildbiocbuildPKG_LIBS = @LIBS@ BiocParallel/src/Makevars.ucrt0000644000175200017520000000002214136050065017356 0ustar00biocbuildbiocbuildPKG_LIBS=-lbcrypt BiocParallel/src/ipcmutex.cpp0000644000175200017520000001055114136050065017260 0ustar00biocbuildbiocbuild#define BOOST_NO_AUTO_PTR #include #include static boost::uuids::random_generator uuid_generator; std::string uuid_generate() { return boost::uuids::to_string(uuid_generator()); } #include #include using namespace boost::interprocess; class IpcMutex { protected: managed_shared_memory *shm; private: interprocess_mutex *mtx; bool *locked; public: IpcMutex(const char *id) { shm = new managed_shared_memory{open_or_create, id, 1024}; mtx = shm->find_or_construct("mtx")(); locked = shm->find_or_construct("locked")(); } ~IpcMutex() { delete shm; } bool is_locked() { return *locked; } bool lock() { mtx->lock(); *locked = true; return *locked; } bool try_lock() { *locked = mtx->try_lock(); return *locked; } bool unlock() { mtx->unlock(); *locked = false; return *locked; } }; class IpcCounter : IpcMutex { private: int *i; public: IpcCounter(const char *id) : IpcMutex(id) { i = shm->find_or_construct("i")(); } ~IpcCounter() {} int value() { return *i + 1; } int reset(int n) { lock(); *i = n - 1; unlock(); return n; } int yield() { int result; lock(); result = ++(*i); unlock(); return result; } }; #include // internal const char *ipc_id(SEXP id_sexp) { bool test = IS_SCALAR(id_sexp, STRSXP) && (R_NaString != STRING_ELT(id_sexp, 0)); if (!test) Rf_error("'id' must be character(1) and not NA"); return CHAR(STRING_ELT(id_sexp, 0)); } int ipc_n(SEXP n_sexp) { PROTECT(n_sexp = Rf_coerceVector(n_sexp, INTSXP)); bool test = IS_SCALAR(n_sexp, INTSXP) && (R_NaInt != Rf_asInteger(n_sexp)); if (!test) Rf_error("'n' cannot be coerced to integer(1) and not NA"); int n = INTEGER(n_sexp)[0]; UNPROTECT(1); return n; } // utilities SEXP ipc_remove(SEXP id_sexp) { const char *id = ipc_id(id_sexp); bool status = shared_memory_object::remove(id); return Rf_ScalarLogical(status); } // uuid SEXP ipc_uuid() { std::string uuid = uuid_generate(); return Rf_mkString(uuid.c_str()); } // mutex SEXP ipc_locked(SEXP id_sexp) { IpcMutex mutex = IpcMutex(ipc_id(id_sexp)); bool status = mutex.is_locked(); return Rf_ScalarLogical(status); } SEXP ipc_lock(SEXP id_sexp) { IpcMutex mutex = IpcMutex(ipc_id(id_sexp)); mutex.lock(); return Rf_ScalarLogical(true); } SEXP ipc_try_lock(SEXP id_sexp) { IpcMutex mutex = IpcMutex(ipc_id(id_sexp)); bool status = mutex.try_lock(); return Rf_ScalarLogical(status); } SEXP ipc_unlock(SEXP id_sexp) { IpcMutex mutex = IpcMutex(ipc_id(id_sexp)); bool status = mutex.unlock(); return Rf_ScalarLogical(status); } // count SEXP ipc_value(SEXP id_sexp) { IpcCounter cnt = IpcCounter(ipc_id(id_sexp)); return Rf_ScalarInteger(cnt.value()); } SEXP ipc_reset(SEXP id_sexp, SEXP n_sexp) { IpcCounter cnt = IpcCounter(ipc_id(id_sexp)); int n = ipc_n(n_sexp); return Rf_ScalarInteger(cnt.reset(n)); } SEXP ipc_yield(SEXP id_sexp) { IpcCounter cnt = IpcCounter(ipc_id(id_sexp)); return Rf_ScalarInteger(cnt.yield()); } // expose to R #include extern "C" { static const R_CallMethodDef callMethods[] = { // uuid {".ipc_uuid", (DL_FUNC) & ipc_uuid, 0}, // lock {".ipc_lock", (DL_FUNC) & ipc_lock, 1}, {".ipc_try_lock", (DL_FUNC) & ipc_try_lock, 1}, {".ipc_unlock", (DL_FUNC) & ipc_unlock, 1}, {".ipc_locked", (DL_FUNC) & ipc_locked, 1}, // counter {".ipc_yield", (DL_FUNC) & ipc_yield, 1}, {".ipc_value", (DL_FUNC) & ipc_value, 1}, {".ipc_reset", (DL_FUNC) & ipc_reset, 2}, // cleanup {".ipc_remove", (DL_FUNC) & ipc_remove, 1}, {NULL, NULL, 0} }; void R_init_BiocParallel(DllInfo *info) { R_registerRoutines(info, NULL, callMethods, NULL, NULL); R_useDynamicSymbols(info, FALSE); } void R_unload_BiocParallel(DllInfo *info) { (void) info; } } BiocParallel/tests/0000755000175200017520000000000014136050065015267 5ustar00biocbuildbiocbuildBiocParallel/tests/test.R0000644000175200017520000000005314136050065016367 0ustar00biocbuildbiocbuildBiocGenerics:::testPackage("BiocParallel") BiocParallel/vignettes/0000755000175200017520000000000014154342106016135 5ustar00biocbuildbiocbuildBiocParallel/vignettes/BiocParallel_BatchtoolsParam.Rnw0000644000175200017520000002231514136050065024324 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{2. Introduction to BatchtoolsParam} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Introduction to \emph{BatchtoolsParam}} \author{ Nitesh Turaga\footnote{\url{Nitesh.Turaga@RoswellPark.org}}, Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}} } \date{Edited: March 22, 2018; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rcode{BatchtoolsParam} class is an interface to the \CRANpkg{batchtools} package from within \BiocParallel{}. This aims to replace BatchjobsParam as \BiocParallel{}'s class for computing on a high performance cluster such as SGE, TORQUE, LSF, SLURM, OpenLava. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Quick start} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This example demonstrates the easiest way to launch a 100000 jobs using batchtools. The first step involves creating a \Rcode{BatchtoolsParam} class. You can compute using 'bplapply' and then the result is stored. <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } piApprox(1000) ## Apply piApprox over param <- BatchtoolsParam() result <- bplapply(rep(10e5, 10), piApprox, BPPARAM=param) mean(unlist(result)) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\emph{BatchtoolsParam} interface} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rcode{BatchtoolsParam} interface allows you to replace the BatchJobsParam interface, and allow more intuitive usage of your high performance cluster with \BiocParallel{}. The \Rcode{BatchtoolsParam} class allows the user to specify many arguments to customize their jobs. Applicable to clusters with formal schedulers. \begin{itemize} \item{\Rcode{workers}} The number of workers used by the job. \item{\Rcode{cluster}} We currently support, SGE, SLURM, LSF, TORQUE and OpenLava. The 'cluster' argument is supported only if the R environment knows how to find the job scheduler. Each cluster type uses a template to pass the job to the scheduler. If the template is not given we use the default templates as given in the 'batchtools' package. The cluster can be accessed by 'bpbackend(param)'. \item{\Rcode{registryargs}} The 'registryargs' argument takes a list of arguments to create a new job registry for you \Rcode{BatchtoolsParam}. The job registry is a data.table which stores all the required information to process your jobs. The arguments we support for registryargs are: \begin{description} \item{\Rcode{file.dir}} Path where all files of the registry are saved. Note that some templates do not handle relative paths well. If nothing is given, a temporary directory will be used in your current working directory. \item{\Rcode{work.dir}} Working directory for R process for running jobs. \item{\Rcode{packages}} Packages that will be loaded on each node. \item{\Rcode{namespaces}} Namespaces that will be loaded on each node. \item{\Rcode{source}} Files that are sourced before executing a job. \item{\Rcode{load}} Files that are loaded before executing a job. \end{description} <<>>= registryargs <- batchtoolsRegistryargs( file.dir = "mytempreg", work.dir = getwd(), packages = character(0L), namespaces = character(0L), source = character(0L), load = character(0L) ) param <- BatchtoolsParam(registryargs = registryargs) param @ \item{\Rcode{resources}} A named list of key-value pairs to be subsituted into the template file; see \Rcode{?batchtools::submitJobs}. \item{\Rcode{template}} The template argument is unique to the \Rcode{BatchtoolsParam} class. It is required by the job scheduler. It defines how the jobs are submitted to the job scheduler. If the template is not given and the cluster is chosen, a default template is selected from the batchtools package. \item{\Rcode{log}} The log option is logical, TRUE/FALSE. If it is set to TRUE, then the logs which are in the registry are copied to directory given by the user using the \Rcode{logdir} argument. \item{\Rcode{logdir}} Path to the logs. It is given only if \Rcode{log=TRUE}. \item{\Rcode{resultdir}} Path to the directory is given when the job has files to be saved in a directory. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Defining templates} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The job submission template controls how the job is processed by the job scheduler on the cluster. Obviously, the format of the template will differ depending on the type of job scheduler. Let's look at the default SLURM template as an example: <<>>= fname <- batchtoolsTemplate("slurm") cat(readLines(fname), sep="\n") @ The \Rcode{<\%= =>} blocks are automatically replaced by the values of the elements in the \Rcode{resources} argument in the \Rcode{BatchtoolsParam} constructor. Failing to specify critical parameters properly (e.g., wall time or memory limits too low) will cause jobs to crash, usually rather cryptically. We suggest setting parameters explicitly to provide robustness to changes to system defaults. Note that the \Rcode{<\%= =>} blocks themselves do not usually need to be modified in the template. The part of the template that is most likely to require explicit customization is the last line containing the call to \Rcode{Rscript}. A more customized call may be necessary if the R installation is not standard, e.g., if multiple versions of R have been installed on a cluster. For example, one might use instead: \begin{verbatim} echo 'batchtools::doJobCollection("<%= uri %>")' |\ ArbitraryRcommand --no-save --no-echo \end{verbatim} If such customization is necessary, we suggest making a local copy of the template, modifying it as required, and then constructing a \Rcode{BiocParallelParam} object with the modified template using the \Rcode{template} argument. However, we find that the default templates accessible with \Rcode{batchtoolsTemplate} are satisfactory in most cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Use cases} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As an example for a BatchtoolParam job being run on an SGE cluster, we use the same \Rcode{piApprox} function as defined earlier. The example runs the function on 5 workers and submits 100 jobs to the SGE cluster. Example of SGE with minimal code: <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } template <- system.file( package = "BiocParallel", "unitTests", "test_script", "test-sge-template.tmpl" ) param <- BatchtoolsParam(workers=5, cluster="sge", template=template) ## Run parallel job result <- bplapply(rep(10e5, 100), piApprox, BPPARAM=param) @ Example of SGE demonstrating some of \Rcode{BatchtoolsParam} methods. <>= library(BiocParallel) ## Pi approximation piApprox <- function(n) { nums <- matrix(runif(2 * n), ncol = 2) d <- sqrt(nums[, 1]^2 + nums[, 2]^2) 4 * mean(d <= 1) } template <- system.file( package = "BiocParallel", "unitTests", "test_script", "test-sge-template.tmpl" ) param <- BatchtoolsParam(workers=5, cluster="sge", template=template) ## start param bpstart(param) ## Display param param ## To show the registered backend bpbackend(param) ## Register the param register(param) ## Check the registered param registered() ## Run parallel job result <- bplapply(rep(10e5, 100), piApprox) bpstop(param) @ \section{\Rcode{sessionInfo()}} <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/vignettes/Errors_Logs_And_Debugging.Rnw0000644000175200017520000005031514136050065023626 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{3. Errors, Logs and Debugging} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Errors, Logs and Debugging in \BiocParallel} \author{Valerie Obenchain and Martin Morgan} \date{Edited: December 16, 2015; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This vignette is part of the \BiocParallel{} package and focuses on error handling and logging. A section at the end demonstrates how the two can be used together as part of an effective debugging routine. \BiocParallel{} provides a unified interface to the parallel infrastructure in several packages including \CRANpkg{snow}, \CRANpkg{parallel}, \CRANpkg{batchtools} and \CRANpkg{foreach}. When implementing error handling in \BiocParallel{} the primary goals were to enable the return of partial results when an error is thrown (vs just the error) and to establish logging on the workers. In cases where error handling existed, such as \CRANpkg{batchtools} and \CRANpkg{foreach}, those behaviors were preserved. Clusters created with \CRANpkg{snow} and \CRANpkg{parallel} now have flexible error handling and logging available through \Rcode{SnowParam} and \Rcode{MulticoreParam} objects. In this document the term ``job'' is used to describe a single call to a bp*apply function (e.g., the \Rcode{X} in \Rcode{bplapply}). A ``job'' consists of one or more ``tasks'', where each ``task'' is run separately on a worker. The \Rpackage{BiocParallel} package is available at bioconductor.org and can be downloaded via \Rcode{BiocManager::install}: <>= if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("BiocParallel") @ Load the package: <>= library(BiocParallel) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Error Handling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Messages and warnings} \BiocParallel{} captures messages and warnings in each job, returning the output to the manager and reporting these to the user after the completion of the entire operation. Thus <>= res <- bplapply(1:2, function(i) { message(i); Sys.sleep(3) }) @ %% reports messages only after the entire \Rcode{bplapply()} is complete. It may be desired to output messages immediatly. Do this using \Rcode{sink()}, as in the following example: <>= res <- bplapply(1:2, function(i) { sink(NULL, type = "message") message(i) Sys.sleep(3) }) @ %% This could be confusing when multiple workers write messages at the same time --the messages will be interleaved in an arbitrary way -- or when the workers are not all running on the same computer (e.g., with \Rcode{SnowParam()} or \Rcode{BatchjobsParaam()}) so should not be used in package code. \subsection{Catching errors} By default, \BiocParallel{} attempts all computations and returns any warnings and errors along with successful results. The \Rcode{stop.on.error} field controls if the job is terminated as soon as one task throws an error. This is useful when debugging or when running large jobs (many tasks) and you want to be notified of an error before all runs complete. \Rcode{stop.on.error} is \Rcode{TRUE} by default. <>= param <- SnowParam() param @ The field can be set when constructing the param or modified with the \Rcode{bpstopOnError} accessor. <>= param <- SnowParam(2, stop.on.error = TRUE) param bpstopOnError(param) <- FALSE @ In this example \Rcode{X} is length 6. By default, the elements of \Rcode{X} are divided as evenly as possible over the number of workers and run in chunks. The number of tasks is set equal to the length of \Rcode{X} which forces each element of \Rcode{X} to be executed separately (6 tasks). <>= X <- list(1, "2", 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = TRUE) @ Tasks 1, 2, and 3 are assigned to the three workers, and are evaluated. Task 2 fails, stopping further computation. All successfully completed tasks are returned as the `result' attribute. Usually, this means that the results of tasks 1, 2, and 3 will be returned. <>= res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") @ Using \Rcode{stop.on.error=FALSE}, all tasks are evaluated. <>= X <- list("1", 2, 3, 4, 5, 6) param <- SnowParam(3, tasks = length(X), stop.on.error = FALSE) res <- tryCatch({ bplapply(X, sqrt, BPPARAM = param) }, error=identity) res attr(res, "result") @ \Rcode{bptry()} is a convenient way of trying to evaluate a \Rcode{bpapply}-like expression, returning the evaluated results without signalling an error. <>= bptry({ bplapply(X, sqrt, BPPARAM=param) }) @ In the next example the elements of \Rcode{X} are grouped instead of run separately. The default value for \Rcode{tasks} is 0 which means 'X' is split as evenly as possible across the number of workers. There are 3 workers so the first task consists of list(1, 2), the second is list("3", 4) and the third is list(5, 6). <>= X <- list(1, 2, "3", 4, 5, 6) param <- SnowParam(3, stop.on.error = TRUE) @ The output shows an error in when evaluating the third element, but also that the fourth element, in the same chunk as 3, was not evaluated. All elements are evaluated because they were assigned to workers before the first error occurred. <>= bptry(bplapply(X, sqrt, BPPARAM = param)) @ Side Note: Results are collected from workers as they finish which is not necessarily the same order in which they were loaded. Depending on how tasks are divided it is possible that the task with the error completes after all others so essentially all workers complete before the job is stopped. In this situation the output includes all results along with the error message and it may appear that \Rcode{stop.on.error=TRUE} did not stop the job soon enough. This is just a heads up that the usefulness of \Rcode{stop.on.error=TRUE} may vary with run time and distribution of tasks over workers. \subsection{Identify failures with \Rcode{bpok()}} The \Rcode{bpok()} function is a quick way to determine which (if any) tasks failed. In this example we use \Rcode{bptry()} to retrieve the partially evaluated expression, including the failed elements. <>= param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(list(1, "2", 3), sqrt, BPPARAM=param)) @ \Rcode{bpok} returns TRUE if the task was successful. <>= bpok(result) @ Once errors are identified with \Rcode{bpok} the traceback can be retrieved with the \Rcode{attr} function. This is possible because errors are returned as \Rcode{condition} objects with the traceback as an attribute. <>= tail(attr(result[[which(!bpok(result))]], "traceback")) @ \subsection{Rerun failed tasks with \Rcode{BPREDO}} Tasks can fail due to hardware problems or bugs in the input data. The \BiocParallel{} functions support a \Rcode{BPREDO} (re-do) argument for recomputing only the tasks that failed. A list of partial results and errors is supplied to \Rcode{BPREDO} in a second call to the function. The failed elements are identified, recomputed and inserted into the original results. The bug in this example is the second element of 'X' which is a character when it should be numeric. <>= X <- list(1, "2", 3) param <- SnowParam(2, stop.on.error=FALSE) result <- bptry(bplapply(X, sqrt, BPPARAM=param)) result @ First fix the input data. <>= X.redo <- list(1, 2, 3) @ Repeat the call to \Rcode{bplapply} this time supplying the partial results as \Rcode{BPREDO}. Only the failed calculations are computed, in the present case requiring only one worker. <>= bplapply(X.redo, sqrt, BPREDO=result, BPPARAM=param) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Logging} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NOTE: Logging as described in this section is supported for SnowParam, MulticoreParam and SerialParam. \subsection{Parameters} Logging in \BiocParallel{} is controlled by 3 fields in the \Rcode{BiocParallelParam}: \begin{verbatim} log: TRUE or FALSE logdir: location to write log file threshold: one of "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" \end{verbatim} When \Rcode{log = TRUE} the \CRANpkg{futile.logger} package is loaded on each worker. \BiocParallel{} uses a custom script on the workers to collect log messages as well as additional statistics such as gc, runtime and node information. Output to stderr and stdout is also captured. By default \Rcode{log} is FALSE and \Rcode{threshold} is {\it INFO}. <>= param <- SnowParam(stop.on.error=FALSE) param @ Turn logging on and set the threshold to {\it TRACE}. <>= bplog(param) <- TRUE bpthreshold(param) <- "TRACE" param @ \subsection{Setting a threshold} All thresholds defined in \CRANpkg{futile.logger} are supported: {\it FATAL}, {\it ERROR}, {\it WARN}, {\it INFO}, {\it DEBUG} and {\it TRACE}. All messages greater than or equal to the severity of the threshold are shown. For example, a threshold of {\it INFO} will print all messages tagged as {\it FATAL}, {\it ERROR}, {\it WARN} and {\it INFO}. Because the default threshold is {\it INFO} it catches the {\it ERROR}-level message thrown when attempting the square root of a character ("2"). <>= tryCatch({ bplapply(list(1, "2", 3), sqrt, BPPARAM = param) }, error=function(e) invisible(e)) @ All user-supplied messages written in the \CRANpkg{futile.logger} syntax are also captured. This function performs argument checking and includes a couple of {\it WARN} and {\it DEBUG}-level messages. <>= FUN <- function(i) { futile.logger::flog.debug(paste("value of 'i':", i)) if (!length(i)) { futile.logger::flog.warn("'i' has length 0") NA } else if (!is(i, "numeric")) { futile.logger::flog.debug("coercing 'i' to numeric") as.numeric(i) } else { i } } @ Turn logging on and set the threshold to {\it WARN}. <>= param <- SnowParam(2, log = TRUE, threshold = "WARN", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) @ Changing the threshold to {\it DEBUG} catches both {\it WARN} and {\it DEBUG} messages. <>= param <- SnowParam(2, log = TRUE, threshold = "DEBUG", stop.on.error=FALSE) result <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) simplify2array(result) @ \subsection{Log files} When \Rcode{log == TRUE}, log messages are written to the console by default. If \Rcode{logdir} is given the output is written out to files, one per task. File names are prefixed with the name in \Rcode{bpjobname(BPPARAM)}; default is 'BPJOB'. \begin{verbatim} param <- SnowParam(2, log = TRUE, threshold = "DEBUG", logdir = tempdir()) res <- bplapply(list(1, "2", integer()), FUN, BPPARAM = param) ## loading futile.logger on workers list.files(bplogdir(param)) ## [1] "BPJOB.task1.log" "BPJOB.task2.log" \end{verbatim} Read in BPJOB.task2.log: \begin{verbatim} readLines(paste0(bplogdir(param), "/BPJOB.task2.log")) ## [1] "############### LOG OUTPUT ###############" ## [2] "Task: 2" ## [3] "Node: 2" ## [4] "Timestamp: 2015-07-08 09:03:59" ## [5] "Success: TRUE" ## [6] "Task duration: " ## [7] " user system elapsed " ## [8] " 0.009 0.000 0.011 " ## [9] "Memory use (gc): " ## [10] " used (Mb) gc trigger (Mb) max used (Mb)" ## [11] "Ncells 325664 17.4 592000 31.7 393522 21.1" ## [12] "Vcells 436181 3.4 1023718 7.9 530425 4.1" ## [13] "Log messages:" ## [14] "DEBUG [2015-07-08 09:03:59] value of 'i': 2" ## [15] "INFO [2015-07-08 09:03:59] coercing to numeric" ## [16] "DEBUG [2015-07-08 09:03:59] value of 'i': " ## [17] "WARN [2015-07-08 09:03:59] 'i' is missing" ## [18] "" ## [19] "stderr and stdout:" ## [20] "character(0)" \end{verbatim} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Worker timeout} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% NOTE: \Rcode{timeout} is supported for SnowParam and MulticoreParam. For long running jobs or untested code it can be useful to set a time limit. The \Rcode{timeout} field is the time, in seconds, allowed for each worker to complete a task; default is \Rcode{Inf}. If the task takes longer than \Rcode{timeout} a timeout error is returned. Time can be changed during param construction with the \Rcode{timeout} arg, <>= param <- SnowParam(timeout = 20, stop.on.error=FALSE) param @ or with the \Rcode{bptimeout} setter: <>= param <- SnowParam(timeout = 2, stop.on.error=FALSE) fun <- function(i) { Sys.sleep(i) i } bptry(bplapply(1:3, fun, BPPARAM = param)) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Debugging} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Effective debugging strategies vary by problem and often involve a combination of error handling and logging techniques. In general, when debugging \R{}-generated errors the traceback is often the best place to start followed by adding debug messages to the worker function. When trouble shooting unexpected behavior (i.e., not a formal error or warning) adding debug messages or switching to \Rcode{SerialParam} are good approaches. Below is an overview of these different strategies. \subsection{Accessing the traceback} The traceback is a good place to start when tracking down \R{}-generated errors. Because the function is executed on the workers it's not accessible for interactive debugging with functions such as \Rcode{trace} or \Rcode{debug}. The traceback provides a snapshot of the state of the worker at the time the error was thrown. This function takes the square root of the absolute value of a vector. <>= fun1 <- function(x) { v <- abs(x) sapply(1:length(v), function(i) sqrt(v[i])) } @ Calling ``fun1'' with a character throws an error: \begin{verbatim} param <- SnowParam(stop.on.error=FALSE) result <- bptry({ bplapply(list(c(1,3), 5, "6"), fun1, BPPARAM = param) }, error=identity) result ## [[1]] ## [1] 1.000000 1.732051 ## ## [[2]] ## [1] 2.236068 ## ## [[3]] ## ## traceback() available as 'attr(x, "traceback")' \end{verbatim} Identify which elements failed with \Rcode{bpok}: \begin{verbatim} bpok(result) ## [1] TRUE TRUE FALSE \end{verbatim} The error (i.e., third element of ``res'') is a \Rcode{condition} object: \begin{verbatim} is(result[[3]], "condition") ## [1] TRUE \end{verbatim} The traceback is an attribute of the \Rcode{condition} and can be accessed with the \Rcode{attr} function. \begin{verbatim} noquote(tail(attr(result[[3]], "traceback"))) ## [1] call <- sapply(sys.calls(), deparse) ## [2] e <- structure(e, class = c("remote_error", "condition"), ## [3] traceback = capture.output(traceback(call))) ## [4] invokeRestart("abort", e) ## [5] }, "non-numeric argument to mathematical function", quote(abs(x))) ## [6] 1: h(simpleError(msg, call)) \end{verbatim} \subsection{Adding debug messages} When a \Rcode{numeric()} is passed to ``fun1'' no formal error is thrown but the length of the second list element is 2 when it should be 1. \begin{verbatim} bplapply(list(c(1,3), numeric(), 6), fun1, BPPARAM = param) ## [[1]] ## [1] 1.000000 1.732051 ## ## [[2]] ## [[2]][[1]] ## [1] NA ## ## [[2]][[2]] ## numeric(0) ## ## [[3]] ## [1] 2.44949 \end{verbatim} Without a formal error we have no traceback so we'll add a few debug messages. The \CRANpkg{futile.logger} syntax tags messages with different levels of severity. A message created with \Rcode{flog.debug} will only print if the threshold is {\it DEBUG} or lower. So in this case it will catch both INFO and DEBUG messages. ``fun2'' has debug statements that show the value of `x', length of `v' and the index `i'. <>= fun2 <- function(x) { v <- abs(x) futile.logger::flog.debug( paste0("'x' = ", paste(x, collapse=","), ": length(v) = ", length(v)) ) sapply(1:length(v), function(i) { futile.logger::flog.info(paste0("'i' = ", i)) sqrt(v[i]) }) } @ Create a param that logs at a threshold level of {\it DEBUG}. <>= param <- SnowParam(3, log = TRUE, threshold = "DEBUG") @ The debug messages reveal the problem occurs when `x' is \Rcode{numeric()}. The index for \Rcode{sapply} is along `v' which in this case has length 0. This forces `i' to take values of `1' and `0' giving an output of length 2 for the second element (i.e., \Rcode{NA} and \Rcode{numeric(0)}). <>= res <- bplapply(list(c(1,3), numeric(), 6), fun2, BPPARAM = param) res @ ``fun2'' can be fixed by using \Rcode{seq\_along(v)} to create the index instead of \Rcode{1:length(v)}. \subsection{Local debugging with \Rcode{SerialParam}} Errors that occur on parallel workers can be difficult to debug. Often the traceback sent back from the workers is too much to parse or not informative. We are also limited in that our interactive strategies of \Rcode{browser} and \Rcode{trace} are not available. One option for further debugging is to run the code in serial with \Rcode{SerialParam}. This removes the ``parallel'' component and is the same as running a straight \Rcode{*apply} function. This approach may not help if the problem was hardware related but can be very useful when the bug is in the \R{} code. We use the now familiar square root example with a bug in the second element of \Rcode{X}. <>= res <- bptry({ bplapply(list(1, "2", 3), sqrt, BPPARAM = SnowParam(3, stop.on.error=FALSE)) }) result @ \Rcode{sqrt} is an internal function. The problem is likely with our data going into the function and not the \Rcode{sqrt} function itself. We can write a small wrapper around \Rcode{sqrt} so we can see the input. <>= fun3 <- function(i) sqrt(i) @ Debug the new function: \begin{verbatim} debug(fun3) \end{verbatim} We want to recompute only elements that failed and for that we use the \Rcode{BPREDO} argument. The BPPARAM has been changed to \Rcode{SerialParam} so the job is run in the local workspace in serial. \begin{verbatim} > bplapply(list(1, "2", 3), fun3, BPREDO = result, BPPARAM = SerialParam()) Resuming previous calculation ... debugging in: FUN(...) debug: sqrt(i) Browse[2]> objects() [1] "i" Browse[2]> i [1] "2" Browse[2]> \end{verbatim} The local browsing allowed us to see the problem input was the character "2". %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\Rcode{sessionInfo()}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/vignettes/Introduction_To_BiocParallel.Rnw0000644000175200017520000007356314136050065024377 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{1. Introduction to BiocParallel} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) library(VariantAnnotation) library(GenomicAlignments) library(RNAseqData.HNRNPC.bam.chr14) library(TxDb.Hsapiens.UCSC.hg19.knownGene) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Introduction to \BiocParallel} \author{Valerie Obenchain, Vincent Carey, Michael Lawrence, Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}}} \date{Edited: January 23, 2021; Compiled: \today} \begin{document} \maketitle \tableofcontents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Numerous approaches are available for parallel computing in \R{}. The CRAN Task View for high performance and parallel computing provides useful high-level summaries and package categorization. \url{http://cran.r-project.org/web/views/HighPerformanceComputing.html} Most Task View packages cite or identify one or more of \CRANpkg{snow}, \CRANpkg{Rmpi}, \CRANpkg{multicore} or \CRANpkg{foreach} as relevant parallelization infrastructure. Direct support in \R{} for parallel computing started with release 2.14.0 with inclusion of the \CRANpkg{parallel} package which contains modified versions of \CRANpkg{multicore} and \CRANpkg{snow}. A basic objective of \BiocParallel{} is to reduce the complexity faced when developing and using software that performs parallel computations. With the introduction of the \Rcode{BiocParallelParam} object, \BiocParallel{} aims to provide a unified interface to existing parallel infrastructure where code can be easily executed in different environments. The \Rcode{BiocParallelParam} specifies the environment of choice as well as computing resources and is invoked by `registration` or passed as an argument to the \BiocParallel{} functions. \BiocParallel{} offers the following conveniences over the `roll your own` approach to parallel programming. \begin{itemize} \setlength{\itemsep}{5pt} \item{unified interface:}{ \Rcode{BiocParallelParam} instances define the method of parallel evaluation (multi-core, snow cluster, etc.) and computing resources (number of workers, error handling, cleanup, etc.). } \item{parallel iteration over lists, files and vectorized operations:}{ \Rcode{bplapply}, \Rcode{bpmapply} and \Rcode{bpvec} provide parallel list iteration and vectorized operations. \Rcode{bpiterate} iterates through files distributing chunks to parallel workers. } \item{cluster scheduling:}{ When the parallel environment is managed by a cluster scheduler through \CRANpkg{batchtools}, job management and result retrieval are considerably simplified. } \item{support of \Rcode{foreach}:}{ The \CRANpkg{foreach} and \CRANpkg{iterators} packages are fully supported. Registration of the parallel back end uses \Rcode{BiocParallelParam} instances. } \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Quick start} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \Rpackage{BiocParallel} package is available at bioconductor.org and can be downloaded via \Rcode{BiocManager}: <>= if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("BiocParallel") @ Load \BiocParallel{}. <>= library(BiocParallel) @ The test function simply returns the square root of ``x''. <>= FUN <- function(x) { round(sqrt(x), 4) } @ Functions in \BiocParallel use the registered back-ends for parallel evaluation. The default is the top entry of the registry list. <>= registered() @ %% Configure your R session to always use a particular back-end configure by setting options named after the back ends in an \Rcode{.Rprofile} file, e.g., <>= options(MulticoreParam=quote(MulticoreParam(workers=4))) @ When a \BiocParallel{} function is invoked with no \Rcode{BPPARAM} argument the default back-end is used. <>= bplapply(1:4, FUN) @ Environment specific back-ends can be defined for any of the registry entries. This example uses a 2-worker SOCK cluster. <>= param <- SnowParam(workers = 2, type = "SOCK") bplapply(1:4, FUN, BPPARAM = param) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{The \BiocParallel{} Interface} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Classes} \subsubsection{\Rcode{BiocParallelParam}} \Rcode{BiocParallelParam} instances configure different parallel evaluation environments. Creating or \Rcode{register()}ing a `\Rcode{Param}` allows the same code to be used in different parallel environments without a code re-write. Params listed are supported on all of Unix, Mac and Windows except \Rcode{MulticoreParam} which is Unix and Mac only. \begin{itemize} \setlength{\itemsep}{5pt} \item{\Rcode{SerialParam}: } Supported on all platforms. Evaluate \BiocParallel-enabled code with parallel evaluation disabled. This approach is useful when writing new scripts and trying to debug code. \item{\Rcode{MulticoreParam}: } Supported on Unix and Mac. On Windows, \Rcode{MulticoreParam} dispatches to \Rcode{SerialParam}. Evaluate \BiocParallel-enabled code using multiple cores on a single computer. When available, this is the most efficient and least troublesome way to parallelize code. Windows does not support multi-core evaluation (the \Rcode{MulticoreParam} object can be used, but evaluation is serial). On other operating systems, the default number of workers equals the value of the global option \Rcode{mc.cores} (e.g., \Rcode{getOption("mc.cores")}) or, if that is not set, the number of cores returned by \Rcode{parallel::detectCores() - 2}; when number of cores cannot be determined, the default is 1. \Rcode{MulticoreParam} uses 'forked' processes with 'copy-on-change' semantics -- memory is only copied when it is changed. This makes it very efficient to invoke compared to other back-ends. There are several important caveats to using \Rcode{MulticoreParam}. Forked processes are not available on Windows. Some environments, e.g., \emph{RStudio}, do not work well with forked processes, assuming that \R{} code evaluation is single-threaded. Some external resources, e.g., access to files or data bases, maintain state in a way that assumes the resource is accessed only by a single thread. A subtle cost is that \R's garbage collector runs periodically, and 'marks' memory as in use. This effectively triggers a copy of the marked memory. \R's generational garbage collector is triggered at difficult-to-predict times; the effect in a long-running forked process is that the memory is eventually copied. See \href{https://support.bioconductor.org/p/70196/#70509}{this post} for additional details. \Rcode{MulticoreParam} is based on facilities originally implemented in the \CRANpkg{multicore} package and subsequently the \CRANpkg{parallel} package in base \R{}. \item{\Rcode{SnowParam}: } Supported on all platforms. Evaluate \BiocParallel-enabled code across several distinct \R{} instances, on one or several computers. This is a straightforward approach for executing parallel code on one or several computers, and is based on facilities originally implemented in the \CRANpkg{snow} package. Different types of \CRANpkg{snow} `back-ends' are supported, including socket and MPI clusters. \item{\Rcode{BatchtoolsParam}: } Applicable to clusters with formal schedulers. Evaluate \BiocParallel-enabled code by submitting to a cluster scheduler like SGE. \item{\Rcode{DoparParam}: } Supported on all platforms. Register a parallel back-end supported by the \CRANpkg{foreach} package for use with \BiocParallel. \end{itemize} The simplest illustration of creating \Rcode{BiocParallelParam} is <>= serialParam <- SerialParam() serialParam @ Most parameters have additional arguments influencing behavior, e.g., specifying the number of `cores' to use when creating a \Rcode{MulticoreParam} instance <>= multicoreParam <- MulticoreParam(workers = 8) multicoreParam @ Arguments are described on the corresponding help page, e.g., \Rcode{?MulticoreParam}. \subsubsection{\Rcode{register()}ing \Rcode{BiocParallelParam} instances} The list of registered \Rcode{BiocParallelParam} instances represents the user's preferences for different types of back-ends. Individual algorithms may specify a preferred back-end, and different back-ends maybe chosen when parallel evaluation is nested. The registry behaves like a `stack' in that the last entry registered is added to the top of the list and becomes the ``next used`` (i.e., the default). \Rcode{registered} invoked with no arguments lists all back-ends. <>= registered() @ \Rcode{bpparam} returns the default from the top of the list. <>= bpparam() @ Add a specialized instance with \Rcode{register}. When \Rcode{default} is TRUE, the new instance becomes the default. <>= default <- registered() register(BatchtoolsParam(workers = 10), default = TRUE) @ BatchtoolsParam has been moved to the top of the list and is now the default. <>= names(registered()) bpparam() @ Restore the original registry <>= for (param in rev(default)) register(param) @ \subsection{Functions} \subsubsection{Parallel looping, vectorized and aggregate operations} These are used in common functions, implemented as much as possible for all back-ends. The functions (see the help pages, e.g., \Rcode{?bplapply} for a full definition) include \begin{description} \item{\Rcode{bplapply(X, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to each element of \Rcode{X}. \Rcode{bplapply} invokes \Rcode{FUN} \Rcode{length(X)} times, each time with a single element of \Rcode{X}. \item{\Rcode{bpmapply(FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to the first, second, etc., elements of each argument in \ldots. \item{\Rcode{bpiterate(ITER, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to the output of function \Rcode{ITER}. Data chunks are returned by \Rcode{ITER} and distributed to parallel workers along with \Rcode{FUN}. Intended for iteration though an undefined number of data chunks (i.e., records in a file). \item{\Rcode{bpvec(X, FUN, ...)}: } Apply in parallel a function \Rcode{FUN} to subsets of \Rcode{X}. \Rcode{bpvec} invokes function \Rcode{FUN} as many times as there are cores or cluster nodes, with \Rcode{FUN} receiving a subset (typically more than 1 element, in contrast to \Rcode{bplapply}) of \Rcode{X}. \item{\Rcode{bpaggregate(x, data, FUN, ...)}: } Use the formula in \Rcode{x} to aggregate \Rcode{data} using \Rcode{FUN}. \end{description} \subsubsection{Parallel evaluation environment} These functions query and control the state of the parallel evaluation environment. \begin{description} \item{\Rcode{bpisup(x)}: } Query a \Rcode{BiocParallelParam} back-end \Rcode{x} for its status. \item{\Rcode{bpworkers}; \Rcode{bpnworkers}: } Query a \Rcode{BiocParallelParam} back-end for the number of workers available for parallel evaluation. \item{\Rcode{bptasks}: } Divides a job (e.g., single call to *lapply function) into tasks. Applicable to \Rcode{MulticoreParam} only; \Rcode{DoparParam} and \Rcode{BatchtoolsParam} have their own approach to dividing a job among workers. \item{\Rcode{bpstart(x)}: } Start a parallel back end specified by \Rcode{BiocParallelParam} \Rcode{x}, if possible. \item{\Rcode{bpstop(x)}: } Stop a parallel back end specified by \Rcode{BiocParallelParam} \Rcode{x}. \end{description} \subsubsection{Error handling and logging} Logging and advanced error recovery is available in \Rcode{BiocParallel} 1.1.25 and later. For a more details see the vignette titled "Error Handling and Logging": <>= browseVignettes("BiocParallel") @ \subsubsection{Locks and counters} Inter-process (i.e., single machine) locks and counters are supported using \Rcode{ipclock()}, \Rcode{ipcyield()}, and friends. Use these to synchronize computation, e.g., allowing only a single process to write to a file at a time. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Use cases} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sample data are BAM files from a transcription profiling experiment available in the \Rpackage{RNAseqData.HNRNPC.bam.chr14} package. <>= library(RNAseqData.HNRNPC.bam.chr14) fls <- RNAseqData.HNRNPC.bam.chr14_BAMFILES @ \subsection{Single machine} Common approaches on a single machine are to use multiple cores in forked processes, or to use clusters of independent processes. For purely \R-based computations on non-Windows computers, there are substantial benefits, such as shared memory, to be had using forked processes. However, this approach is not portable across platforms, and fails when code uses functionality, e.g., file or data base access, that assumes only a single thread is accessing the resource. While use of forked processes with \Rcode{MulticoreParam} is an attractive solution for scripts using pure \R{} functionality, robust and complex code often requires use of independent processes and \Rcode{SnowParam}. \subsubsection{Forked processes with \Rcode{MulticoreParam}} This example counts overlaps between BAM files and a defined set of ranges. First create a GRanges with regions of interest (in practice this could be large). <>= library(GenomicAlignments) ## for GenomicRanges and readGAlignments() gr <- GRanges("chr14", IRanges((1000:3999)*5000, width=1000)) @ A \Rclass{ScanBamParam} defines regions to extract from the files. <>= param <- ScanBamParam(which=range(gr)) @ FUN counts overlaps between the ranges in `gr` and the files. <>= FUN <- function(fl, param) { gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } @ All parameters necessary for running a job in a multi-core environment are specified in the \Rclass{MulticoreParam} instance. <>= MulticoreParam() @ The \BiocParallel{} functions, such as \Rfunction{bplapply}, use information in the \Rclass{MulticoreParam} to set up the appropriate back-end and pass relevant arguments to low-level functions. \begin{verbatim} > bplapply(fls[1:3], FUN, BPPARAM = MulticoreParam(), param = param) $ERR127306 [1] 1185 $ERR127307 [1] 1123 $ERR127308 [1] 1241 \end{verbatim} Shared memory environments eliminate the need to pass large data between workers or load common packages. Note that in this code the GRanges data was not passed to all workers in \Rcode{bplapply} and FUN did not need to load \Biocpkg{GenomicAlignments} for access to the \Rcode{readGAlignments} function. Problems with forked processes occur when code implementating functionality used by the workers is not written in anticipation of use by forked processes. One example is the database connection underlying Bioconductor's \Rcode{org.*} packages. This psudoe-code <>= library(org.Hs.eg.db) FUN <- function(x, ...) { ... mapIds(org.Hs.eg.db, ...) ... } bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) @ %% is likely to fail, because \Rcode{library(org.Hs.eg.db)} opens a database connection that is accessed by multiple processes. A solution is to ensure that the database is opened independently in each process <>= FUN <- function(x, ...) { library(org.Hs.eg.db) ... mapIds(org.Hs.eg.db, ...) ... } bplapply(X, FUN, ..., BPPARAM = MulticoreParam()) @ \subsubsection{Clusters of independent processes with \Rcode{SnowParam}} Both Windows and non-Windows machines can use the cluster approach to spawn processes. \BiocParallel{} back-end choices for clusters on a single machine are \Rclass{SnowParam} for configuring a Snow cluster or the \Rclass{DoparParam} for use with the \Rpackage{foreach} package. To re-run the counting example, FUN needs to modified such that `gr` is passed as a formal argument and required libraries are loaded on each worker. (In general, this is not necessary for functions defined in a package name space, see Section~\ref{sec:developers}.) <>= FUN <- function(fl, param, gr) { suppressPackageStartupMessages({ library(GenomicAlignments) }) gal <- readGAlignments(fl, param = param) sum(countOverlaps(gr, gal)) } @ Define a 2-worker SOCK Snow cluster. <>= snow <- SnowParam(workers = 2, type = "SOCK") @ A call to \Rcode{bplapply} with the \Rclass{SnowParam} creates the cluster and distributes the work. <>= bplapply(fls[1:3], FUN, BPPARAM = snow, param = param, gr = gr) @ The FUN written for the cluster adds some overhead due to the passing of the GRanges and the loading of \Biocpkg{GenomicAlignments} on each worker. This approach, however, has the advantage that it works on most platforms and does not require a coding change when switching between windows and non-windows machines. If several \Rcode{bplapply()} statements are likely to require the same resource, it often makes sense to create a cluster once using \Rcode{bpstart()}. The workers are re-used by each call to \Rcode{bplapply()}, so they do not have to re-load packages, etc. <>= register(SnowParam()) # default evaluation bpstart() # start the cluster ... bplapply(X, FUN1, ...) ... bplapply(X, FUN2, ...) # re-use workers ... bpstop() @ \subsection{\emph{Ad hoc} cluster of multiple machines} We use the term \emph{ad hoc} cluster to define a group of machines that can communicate with each other and to which the user has password-less log-in access. This example uses a group of compute machines ("the rhinos") on the FHCRC network. \subsubsection{Sockets} On Linux and Mac OS X, a socket cluster is created across machines by supplying machine names as the \Rcode{workers} argument to a \Rclass{BiocParallelParam} instance instead of a number. Each name represents an \R{} process; repeat names indicate multiple workers on the same machine. Create a \Rclass{SnowParam} with 2 cpus from `rhino01` and 1 from `rhino02`. <>= hosts <- c("rhino01", "rhino01", "rhino02") param <- SnowParam(workers = hosts, type = "SOCK") @ Execute FUN 4 times across the workers. \begin{verbatim} > FUN <- function(i) system("hostname", intern=TRUE) > bplapply(1:4, FUN, BPPARAM = param) [[1]] [1] "rhino01" [[2]] [1] "rhino01" [[3]] [1] "rhino02" [[4]] [1] "rhino01" \end{verbatim} When creating a cluster across Windows machines \Rcode{workers} must be IP addresses (e.g., "140.107.218.57") instead of machine names. \subsubsection{MPI} An MPI cluster across machines is created with \emph{mpirun} or \emph{mpiexec} from the command line or a script. A list of machine names provided as the -hostfile argument defines the mpi universe. The hostfile requests 2 processors on 3 different machines. \begin{verbatim} rhino01 slots=2 rhino02 slots=2 rhino03 slots=2 \end{verbatim} From the command line, start a single interactive \R{} process on the current machine. \begin{verbatim} mpiexec --np 1 --hostfile hostfile R --vanilla \end{verbatim} Load \BiocParallel{} and create an MPI Snow cluster. The number of \Rcode{workers} in \Rclass{SnowParam} should match the number of slots requested in the hostfile. Using a smaller number of workers uses a subset of the slots. \begin{verbatim} > library(BiocParallel) > param <- SnowParam(workers = 6, type = "MPI") \end{verbatim} Execute FUN 6 times across the workers. \begin{verbatim} > FUN <- function(i) system("hostname", intern=TRUE) > bplapply(1:6, FUN, BPPARAM = param) bplapply(1:6, FUN, BPPARAM = param) 6 slaves are spawned successfully. 0 failed. [[1]] [1] "rhino01" [[2]] [1] "rhino02" [[3]] [1] "rhino02" [[4]] [1] "rhino03" [[5]] [1] "rhino03" [[6]] [1] "rhino01" \end{verbatim} Batch jobs can be launched with mpiexec and R CMD BATCH. Code to be executed is in `Rcode.R`. \begin{verbatim} mpiexec --hostfile hostfile R CMD BATCH Rcode.R \end{verbatim} \subsection{Clusters with schedulers} Computer clusters are far from standardized, so the following may require significant adaptation; it is written from experience here at FHCRC, where we have a large cluster managed via SLURM. Nodes on the cluster have shared disks and common system images, minimizing complexity about making data resources available to individual nodes. There are two simple models for use of the cluster, Cluster-centric and R-centric. \subsubsection{Cluster-centric} The idea is to use cluster management software to allocate resources, and then arrange for an \R{} script to be evaluated in the context of allocated resources. NOTE: Depending on your cluster configuration it may be necessary to add a line to the template file instructing workers to use the version of R on the master / head node. Otherwise the default R on the worker nodes will be used. For SLURM, we might request space for 4 tasks (with \verb+salloc+ or \verb+sbatch+), arrange to start the MPI environment (with \verb+orterun+) and on a single node in that universe run an \R{} script \verb+BiocParallel-MPI.R+. The command is \begin{verbatim} $ salloc -N 4 orterun -n 1 R -f BiocParallel-MPI.R \end{verbatim} The \R{} script might do the following, using MPI for parallel evaluation. Start by loading necessary packages and defining \Rcode{FUN} work to be done <>= library(BiocParallel) library(Rmpi) FUN <- function(i) system("hostname", intern=TRUE) @ %% Create a \Rclass{SnowParam} instance with the number of nodes equal to the size of the MPI universe minus 1 (let one node dispatch jobs to workers), and register this instance as the default <>= param <- SnowParam(mpi.universe.size() - 1, "MPI") register(param) @ %% Evaluate the work in parallel, process the results, clean up, and quit <>= xx <- bplapply(1:100, FUN) table(unlist(xx)) mpi.quit() @ %% The entire session is as follows: \begin{knitrout} \definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe} \begin{verbatim} $ salloc -N 4 orterun -n 1 R --vanilla -f BiocParallel-MPI.R salloc: Job is in held state, pending scheduler release salloc: Pending job allocation 6762292 salloc: job 6762292 queued and waiting for resources salloc: job 6762292 has been allocated resources salloc: Granted job allocation 6762292 ## ... > FUN <- function(i) system("hostname", intern=TRUE) > > library(BiocParallel) > library(Rmpi) > param <- SnowParam(mpi.universe.size() - 1, "MPI") > register(param) > xx <- bplapply(1:100, FUN) 4 slaves are spawned successfully. 0 failed. > table(unlist(xx)) gizmof13 gizmof71 gizmof86 gizmof88 25 25 25 25 > > mpi.quit() salloc: Relinquishing job allocation 6762292 salloc: Job allocation 6762292 has been revoked. \end{verbatim} \end{kframe} \end{knitrout} One advantage of this approach is that the responsibility for managing the cluster lies firmly with the cluster management software -- if one wants more nodes, or needs special resources, then adjust parameters to \verb+salloc+ (or \verb+sbatch+). Notice that workers are spawned within the \Rcode{bplapply} function; it might often make sense to more explicitly manage workers with \Rfunction{bpstart} and \Rfunction{bpstop}, e.g., <>= param <- bpstart(SnowParam(mpi.universe.size() - 1, "MPI")) register(param) xx <- bplapply(1:100, FUN) bpstop(param) mpi.quit() @ \subsubsection{R-centric} A more \R-centric approach might start an \R{} script on the head node, and use \Rpackage{batchtools} to submit jobs from within the \R{} session. One way of doing this is to create a file containing a template for the job submission step, e.g., for SLURM; a starting point might be found at <>= tmpl <- system.file(package="batchtools", "templates", "slurm-simple.tmpl") noquote(readLines(tmpl)) @ The \R{} script, run interactively or from the command line, might then look like <>= ## define work to be done FUN <- function(i) system("hostname", intern=TRUE) library(BiocParallel) ## register SLURM cluster instructions from the template file param <- BatchtoolsParam(workers=5, cluster="slurm", template=tmpl) register(param) ## do work xx <- bplapply(1:100, FUN) table(unlist(xx)) @ %% The code runs on the head node until \Rcode{bplapply}, where the \R{} script interacts with the SLURM scheduler to request a SLURM allocation, run jobs, and retrieve results. The argument \Rcode{4} to \Rcode{BatchtoolsParam} specifies the number of workers to request from the scheduler; \Rcode{bplapply} divides the 100 jobs among the 4 workers. If \Rcode{BatchtoolsParam} had been created without specifying any workers, then 100 jobs implied by the argument to \Rcode{bplapply} would be associated with 100 tasks submitted to the scheduler. Because cluster tasks are running in independent \R{} instances, and often on physically separate machines, a convenient `best practice' is to write \Rcode{FUN} in a `functional programming' manner, such that all data required for the function is passed in as arguments or (for large data) loaded implicitly or explicitly (e.g., via an \R{} library) from disk. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Analyzing genomic data in \Bioconductor{}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% General strategies exist for handling large genomic data that are well suited to \R{} programs. A manuscript titled \emph{Scalable Genomics with \R{} and \Bioconductor{}} (\url{http://arxiv.org/abs/1409.2864}) by Michael Lawrence and Martin Morgan, reviews several of these approaches and demonstrate implementation with \Bioconductor{} packages. Problem areas include scalable processing, summarization and visualization. The techniques presented include restricting queries, compressing data, iterating, and parallel computing. Ideas are presented in an approachable fashion within a framework of common use cases. This is a benificial read for anyone anyone tackling genomics problems in \R{}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{For developers} \label{sec:developers} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Developers wishing to use \BiocParallel{} in their own packages should include \BiocParallel{} in the \texttt{DESCRIPTION} file \begin{verbatim} Imports: BiocParallel \end{verbatim} and import the functions they wish to use in the \texttt{NAMESPACE} file, e.g., \begin{verbatim} importFrom(BiocParallel, bplapply) \end{verbatim} Then invoke the desired function in the code, e.g., <>= system.time(x <- bplapply(1:3, function(i) { Sys.sleep(i); i })) unlist(x) @ %% This will use the back-end returned by \Rcode{bpparam()}, by default a \Rcode{MulticoreParam()} instance or the user's preferred back-end if they have used \Rcode{register()}. The \Rcode{MulticoreParam} back-end does not require any special configuration or set-up and is therefore the safest option for developers. Unfortunately, \Rcode{MulticoreParam} provides only serial evaluation on Windows. Developers should document that their function uses \BiocParallel{} functions on the man page, and should perhaps include in their function signature an argument \Rcode{BPPARAM=bpparam()}. Developers should NOT use `register()` in package code -- this sets a preference that influences use of `bplapply()` and friends in all packages, not just their package. Developers wishing to invoke back-ends other than \Rcode{MulticoreParam}, or to write code that works across Windows, macOS and Linux, need to take special care to ensure that required packages, data, and functions are available and loaded on the remote nodes. In \Rcode{bplapply()}, the environment of \Rcode{FUN} (other than the global environment) is serialized to the workers. A consequence is that, when \Rcode{FUN} is inside a package name space, other functions available in the name space are available to \Rcode{FUN} on the workers. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{\Rcode{sessionInfo()}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= toLatex(sessionInfo()) @ \end{document} BiocParallel/vignettes/Random_Numbers.Rnw0000644000175200017520000002450214136050065021543 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{4. Random Numbers in BiocParallel} %\VignetteKeywords{parallel, Infrastructure} %\VignettePackage{BiocParallel} %\VignetteEngine{knitr::knitr} \documentclass{article} <>= BiocStyle::latex() @ <>= suppressPackageStartupMessages({ library(BiocParallel) }) @ \newcommand{\BiocParallel}{\Biocpkg{BiocParallel}} \title{Random Numbers in BiocParallel} \author{Martin Morgan\footnote{\url{Martin.Morgan@RoswellPark.org}}} \date{Edited: 7 September, 2021; Compiled: \today} \begin{document} \maketitle \tableofcontents \section{Scope} \BiocParallel{} enables use of random number streams in a reproducible manner. This document applies to the following \Rcode{*Param()}: \begin{itemize} \item \Rcode{SerialParam()}: sequential evaluation in a single \emph{R} process. \item \Rcode{SnowParam()}: parallel evaluation in multiple independent \emph{R} processes. \item \Rcode{MulticoreParam())}: parallel evaluation in \emph{R} sessions running in forked threads. Not available on Windows. \end{itemize} The \Rcode{*Param()} can be used for evaluation with: \begin{itemize} \item \Rcode{bplapply()}: \Rcode{lapply()}-like application of a user-supplied function \Rcode{FUN} to a vector or list of elements \Rcode{X}. \item \Rcode{bpiterate()}: apply a user-supplied function \Rcode{FUN} to an unknown number of elements resulting from successive calls to a user-supplied function \Rcode{ITER}. \end{itemize} The reproducible random number implementation also supports: \begin{itemize} \item \Rcode{bptry()} and the \Rcode{BPREDO=} argument, for re-evaluation of elements that fail (e.g., because of a bug in \Rcode{FUN}). \end{itemize} \section{Essentials} \subsection{Use of \Rcode{bplapply()} and \Rcode{RNGseed=}} Attach \BiocParallel{} and ensure that the version is greater than 1.27.5 <>= library(BiocParallel) stopifnot( packageVersion("BiocParallel") > "1.27.5" ) @ For reproducible calculation, use the \Rcode{RNGseed=} argument in any of the \Rcode{*Param()} constructors. <>= result1 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) result1 @ Repeating the calculation with the same value for \Rcode{RNGseed=} results in the same result; a different random number seed results in different results. <>= result2 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result2) ) result3 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 200)) result3 stopifnot( !identical(result1, result3) ) @ Results are invariant across \Rcode{*Param()} <>= result4 <- bplapply(1:3, runif, BPPARAM = SnowParam(RNGseed = 100)) stopifnot( identical(result1, result4) ) if (!identical(.Platform$OS.type, "windows")) { result5 <- bplapply(1:3, runif, BPPARAM = MulticoreParam(RNGseed = 100)) stopifnot( identical(result1, result5) ) } @ Parallel backends can adjust the number of \Rcode{workers} (processes performing the evaluation) and \Rcode{tasks} (how elements of \Rcode{X} are distributed between workers). Results are invariant to these parameters. This is illustrated with \Rcode{SnowParam()}, but applies also to \Rcode{MulticoreParam()}. <>= result6 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 2, RNGseed = 100)) result7 <- bplapply(1:3, runif, BPPARAM = SnowParam(workers = 3, RNGseed = 100)) result8 <- bplapply( 1:3, runif, BPPARAM = SnowParam(workers = 2, tasks = 3, RNGseed = 100) ) stopifnot( identical(result1, result6), identical(result1, result7), identical(result1, result8) ) @ Subsequent sections illustrate results with \Rcode{SerialParam()}, but identical results are obtained with \Rcode{SnowParam()} and \Rcode{MulticoreParam()}. \subsection{Use with \Rcode{bpiterate()}} \Rcode{bpiterate()} allows parallel processing of a 'stream' of data as a series of tasks, with a task consisting of a portion of the overall data. It is useful when the data size is not known or easily partitioned into elements of a vector or list. A real use case might involve iterating through a BAM file, where a task represents successive records (perhaps 100,000 per task) in the file. Here we illustrate with a simple example -- iterating through a vector \Rcode{x = 1:3} <>= ITER_FUN_FACTORY <- function() { x <- 1:3 i <- 0L function() { i <<- i + 1L if (i > length(x)) return(NULL) x[[i]] } } @ \Rcode{ITER\_FUN\_FACTORY()} is used to create a function that, on each invocation, returns the next task (here, an element of \Rcode{x}; in a real example, perhaps 100000 records from a BAM file). When there are no more tasks, the function returns \Rcode{NULL} <>= ITER <- ITER_FUN_FACTORY() ITER() ITER() ITER() ITER() @ In our simple example, \Rcode{bpiterate()} is performing the same computations as \Rcode{bplapply()} so the results, including the random number streams used by each task in \Rcode{bpiterate()}, are the same <>= result9 <- bpiterate( ITER_FUN_FACTORY(), runif, BPPARAM = SerialParam(RNGseed = 100) ) stopifnot( identical(result1, result9) ) @ \subsection{Use with \Rcode{bptry()}} \Rcode{bptry()} in conjunction with the \Rcode{BPREDO=} argument to \Rcode{bplapply()} or \Rcode{bpiterate()} allows for graceful recovery from errors. Here a buggy \Rcode{FUN1()} produces an error for the second element. \Rcode{bptry()} allows evaluation to continue for other elements of \Rcode{X}, despite the error. This is shown in the result. <>= FUN1 <- function(i) { if (identical(i, 2L)) { ## error when evaluating the second element stop("i == 2") } else runif(i) } result10 <- bptry(bplapply( 1:3, FUN1, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) )) result10 @ \Rcode{FUN2()} illustrates the flexibility of \Rcode{bptry()} by fixing the bug when \Rcode{i == 2}, but also generating incorrect results if invoked for previously correct values. The identity of the result to the original computation shows that only the error task is re-computed, and that the random number stream used by the task is identical to the original stream. <>= FUN2 <- function(i) { if (identical(i, 2L)) { ## the random number stream should be in the same state as the ## first time through the loop, and rnorm(i) should return ## same result as FUN runif(i) } else { ## if this branch is used, then we are incorrectly updating ## already calculated elements -- '0' in the output would ## indicate this error 0 } } result11 <- bplapply( 1:3, FUN2, BPREDO = result10, BPPARAM = SerialParam(RNGseed = 100, stop.on.error = FALSE) ) stopifnot( identical(result1, result11) ) @ \subsection{Relationship between \Rcode{RNGseed=} and \Rcode{set.seed()}} The global random number stream (influenced by \Rcode{set.seed()}) is ignored by \BiocParallel{}, and \BiocParallel{} does NOT increment the global stream. <>= set.seed(200) value <- runif(1) set.seed(200) result12 <- bplapply(1:3, runif, BPPARAM = SerialParam(RNGseed = 100)) stopifnot( identical(result1, result12), identical(value, runif(1)) ) @ When \Rcode{RNGseed=} is not used, an internal stream (not accessible to the user) is used and \BiocParallel{} does NOT increment the global stream. <>= set.seed(100) value <- runif(1) set.seed(100) result13 <- bplapply(1:3, runif, BPPARAM = SerialParam()) stopifnot( !identical(result1, result13), identical(value, runif(1)) ) @ \subsection{\Rcode{bpstart()} and random number streams} In all of the examples so far \Rcode{*Param()} objects are passed to \Rcode{bplapply()} or \Rcode{bpiterate()} in the 'stopped' state. Internally, \Rcode{bplapply()} and \Rcode{bpiterate()} invoke \Rcode{bpstart()} to establish the computational environment (e.g., starting workers for \Rcode{SnowParam()}). \Rcode{bpstart()} can be called explicitly, e.g., to allow workers to be used across calls to \Rcode{bplapply()}. The cluster random number stream is initiated with \Rcode{bpstart()}. Thus <>= param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16) ) @ This allows a second call to \Rcode{bplapply} to represent a continuation of a random number computation -- the second call to \Rcode{bplapply()} results in different random number streams for each element of \Rcode{X}. <>= param <- bpstart(SerialParam(RNGseed = 100)) result16 <- bplapply(1:3, runif, BPPARAM = param) result17 <- bplapply(1:3, runif, BPPARAM = param) bpstop(param) stopifnot( identical(result1, result16), !identical(result1, result17) ) @ \subsection{Relationship between \Rcode{bplapply()} and \Rcode{lapply()}} The results from \Rcode{bplapply()} are different from the results from \Rcode{lapply()}, even with the same random number seed. This is because correctly implemented parallel random streams require use of a particular random number generator invoked in specific ways for each element of \Rcode{X}, as outlined in the Implementation notes section. <>= set.seed(100) result20 <- lapply(1:3, runif) stopifnot( !identical(result1, result20) ) @ \section{Implementation notes} The implementation uses the L'Ecuyer-CMRG random number generator (see \Rcode{?RNGkind} and \Rcode{?parallel::clusterSetRNGStream} for additional details). This random number generates independent streams and substreams of random numbers. In \BiocParallel{}, each call to \Rcode{bpstart()} creates a new stream from the L'Ecuyer-CMRG generator. Each element in \Rcode{bplapply()} or \Rcode{bpiterate()} creates a new substream. Each application of \Rcode{FUN} is therefore using the L'Ecuyer-CMRG random number generator, with a substream that is independent of the substreams of all other elements. Within the user-supplied \Rcode{FUN} of \Rcode{bplapply()} or \Rcode{bpiterate()}, it is a mistake to use \Rcode{RNGkind()} to set a different random number generator, or to use \Rcode{set.seed()}. This would in principle compromise the independence of the streams across elements. \section{\Rcode{sessionInfo()}} <>= sessionInfo() @ \end{document}