SummarizedExperiment/DESCRIPTION0000644000175400017540000000274713175741302017504 0ustar00biocbuildbiocbuildPackage: SummarizedExperiment Title: SummarizedExperiment container Description: The SummarizedExperiment container contains one or more assays, each represented by a matrix-like object of numeric or other mode. The rows typically represent genomic ranges of interest and the columns represent samples. Version: 1.8.0 Encoding: UTF-8 Author: Martin Morgan, Valerie Obenchain, Jim Hester, Hervé Pagès Maintainer: Bioconductor Package Maintainer biocViews: Genetics, Infrastructure, Sequencing, Annotation, Coverage, GenomeAnnotation Depends: R (>= 3.2), methods, GenomicRanges (>= 1.29.14), Biobase, DelayedArray (>= 0.3.20) Imports: utils, stats, tools, Matrix, BiocGenerics (>= 0.15.3), S4Vectors (>= 0.13.13), IRanges (>= 2.11.17), GenomeInfoDb (>= 1.13.1) Suggests: annotate, AnnotationDbi, hgu95av2.db, GenomicFeatures, TxDb.Hsapiens.UCSC.hg19.knownGene, BiocStyle, knitr, rmarkdown, digest, jsonlite, rhdf5, HDF5Array (>= 1.5.8), airway, RUnit VignetteBuilder: knitr License: Artistic-2.0 Collate: Assays-class.R SummarizedExperiment-class.R RangedSummarizedExperiment-class.R intra-range-methods.R inter-range-methods.R coverage-methods.R findOverlaps-methods.R nearest-methods.R makeSummarizedExperimentFromExpressionSet.R makeSummarizedExperimentFromDataFrame.R readKallisto.R saveHDF5SummarizedExperiment.R zzz.R NeedsCompilation: no Packaged: 2017-10-31 00:24:34 UTC; biocbuild SummarizedExperiment/NAMESPACE0000644000175400017540000000573113175715010017206 0ustar00biocbuildbiocbuildimport(methods) importFrom(utils, read.delim, .DollarNames) importFrom(stats, setNames) importFrom(tools, file_path_as_absolute) importClassFrom(Matrix, Matrix) # for the "acbind" and "arbind" methods import(BiocGenerics) import(S4Vectors) import(IRanges) import(GenomeInfoDb) import(GenomicRanges) import(Biobase) import(DelayedArray) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 classes ### exportClasses( Assays, ShallowData, ShallowSimpleListAssays, SummarizedExperiment, RangedSummarizedExperiment ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 methods for generics not defined in SummarizedExperiment ### exportMethods( length, names, "names<-", dim, dimnames, "dimnames<-", "[", "[<-", "[[", "[[<-", "$", "$<-", as.data.frame, coerce, show, c, merge, Compare, ## Generics defined in BiocGenerics: cbind, rbind, duplicated, match, is.unsorted, order, rank, sort, start, "start<-", end, "end<-", width, "width<-", strand, "strand<-", updateObject, ## Generics defined in S4Vectors: "metadata<-", mcols, "mcols<-", elementMetadata, "elementMetadata<-", values, "values<-", extractROWS, replaceROWS, subset, pcompare, ## Generics defined in IRanges: ranges, "ranges<-", shift, narrow, resize, flank, promoters, restrict, trim, isDisjoint, disjointBins, coverage, findOverlaps, precede, follow, nearest, distance, distanceToNearest, ## Generics defined in GenomeInfoDb: seqinfo, "seqinfo<-", seqnames, "seqnames<-", ## Generics defined in DelayedArray: acbind, arbind, rowRanges, realize ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export non-generic functions ### export( Assays, .DollarNames.SummarizedExperiment, .DollarNames.RangedSummarizedExperiment, makeSummarizedExperimentFromExpressionSet, makeSummarizedExperimentFromDataFrame, naiveRangeMapper, probeRangeMapper, geneRangeMapper, readKallisto, readKallistoBootstrap, KALLISTO_ASSAYS, saveHDF5SummarizedExperiment, loadHDF5SummarizedExperiment ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Export S4 generics defined in SummarizedExperiment + export corresponding ### methods ### export( SummarizedExperiment, "rowRanges<-", rowData, "rowData<-", colData, "colData<-", assayNames, "assayNames<-", assays, "assays<-", assay, "assay<-" ) ### Exactly the same list as above. exportMethods( SummarizedExperiment, "rowRanges<-", rowData, "rowData<-", colData, "colData<-", assayNames, "assayNames<-", assays, "assays<-", assay, "assay<-" ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Register S3 methods ### S3method(.DollarNames, SummarizedExperiment) S3method(.DollarNames, RangedSummarizedExperiment) SummarizedExperiment/NEWS0000644000175400017540000001064113175715010016462 0ustar00biocbuildbiocbuildCHANGES IN VERSION 1.8.0 ------------------------ NEW FEATURES o Add 'chunk_dim' and 'level' arguments to saveHDF5SummarizedExperiment(). o Add coercion from ExpressionSet to SummarizedExperiment. SIGNIFICANT USER-VISIBLE CHANGES DEPRECATED AND DEFUNCT o Remove 'force' argument from seqinfo() and seqlevels() setters (the argument got deprecated in BioC 3.5 in favor of new and more flexible 'pruning.mode' argument). BUG FIXES o Coercion from SummarizedExperiment to RangedSummarizedExperiment was losing the metadata columns. Fixed now. o Fix cbind() and rbind() of SummarizedExperiment objects when some of the assays are DataFrame or data.frame objects. o '$' completion on SummarizedExperiment works in RStudio and on RangedSummarizedExperiment. CHANGES IN VERSION 1.6.0 ------------------------ NEW FEATURES o Add saveHDF5SummarizedExperiment() and loadHDF5SummarizedExperiment() for saving/loading HDF5-based SummarizedExperiment objects to/from disk. DEPRECATED AND DEFUNCT o Remove SummarizedExperiment0 class (was introduced to ease transition from old SummarizedExperiment class defined in GenomicRanges to new RangedSummarizedExperiment class defined in SummarizedExperiment package). CHANGES IN VERSION 1.4.0 ------------------------ NEW FEATURES o Add makeSummarizedExperimentFromDataFrame() function. o Add "acbind" and "arbind" methods for Matrix objects. SIGNIFICANT USER-VISIBLE CHANGES o Speed up "cbind" method for SummarizedExperiment objects based on a suggestion by Peter Hickey. DEPRECATED AND DEFUNCT o Remove exptData() getter and setter (were defunct in BioC 3.3). BUG FIXES CHANGES IN VERSION 1.2.0 ------------------------ NEW FEATURES o Add 'rowData' argument to SummarizedExperiment() constructor. This allows the user to supply the row data at construction time. o The SummarizedExperiment() constructor function and the assay() setter now both take any matrix-like object as long as the resulting SummarizedExperiment object is valid. o Support r/cbind'ing of SummarizedExperiment objects with assays of arbitrary dimensions (based on a patch by Pete Hickey). o Add "is.unsorted" method for RangedSummarizedExperiment objects. o NULL colnames() supported during SummarizedExperiment construction. o readKallisto() warns early when files need names. o base::rank() gained a new 'ties.method="last"' option and base::order() a new argument ('method') in R 3.3. Thus so do the "rank" and "order" methods for RangedSummarizedExperiment objects. SIGNIFICANT USER-VISIBLE CHANGES o Re-introduce the rowData() accessor (was defunt in BioC 3.2) as an alias for mcols() and make it the preferred way to access the row data. There is now a pleasant symmetry between rowData and colData. o Rename SummarizedExperiment0 class -> SummarizedExperiment. o Improved vignette. o Remove updateObject() method for "old" SummarizedExperiment objects. DEPRECATED AND DEFUNCT o exptData() is now defunct, metadata() should be used instead. BUG FIXES o Fix bug in "sort" method for RangedSummarizedExperiment objects when 'ignore.strand=TRUE' (the argument was ignored). o Fix 2 bugs when r/cbind'ing SummarizedExperiment objects: - r/cbind'ing assays without names would return only the first element. See https://stat.ethz.ch/pipermail/bioc-devel/2015-November/008318.html - r/cbind'ing assays with names in different order would stop() with 'Assays must have the same names()" o Fix validity method for SummarizedExperiment objects reporting incorrect numbers when the nb of cols in assay(x) doesn't match the nb of rows in colData(x). o assay colnames() must agree with colData rownames() o Fix bug where assays(se, withDimnames=TRUE) was dropping the dimnames of the 3rd and higher-order dimensions of the assays. Thanks to Pete Hickey for catching this and providing a patch. o A couple of minor tweaks to the rowData() setter to make it behave consistently with mcols()/elementMetadata() setters for Vector objects in general. CHANGES IN VERSION 0.3.* ------------------------ NEW FEATURES o readKallisto() and readKallistoBootstrap() input kallisto transcript quantification output into SummarizedExperiment (and other) instances. SummarizedExperiment/NOTES0000644000175400017540000000356713175715010016607 0ustar00biocbuildbiocbuildWe need a mechanism to save an HDF5Array-based (or more generally DelayedArray-based) SummarizedExperiment object to disk. - The object can have more than 1 assay. Even though most of the time these assays are either all in memory (e.g. ordinary arrays or data frames) or all on disk and using the same backend (i.e. all HDF5-based DelayedArray objects), they can be a mix of in-memory and on-disk assays. Even a given assay can use more than 1 kind of on-disk backend. For example it could be the result of adding an HDF5-based DelayedArray object with a DelayedArray object based on another backend. Since the addition of DelayedArray objects is delayed, the result of this addition is a DelayedArray object with mixed backends. - Standard mechanisms save() and saveRDS() cannot handle this complexity. - We need a mechanism that produces several files: one .rda (or .rds) file containing the result of calling save() (or saveRDS()) on the object + all the files (e.g. HDF5) containing the on-disk assay data. The files containing the on-disk assay data can be a mix of HDF5 files and other formats. How should these files be bundled together? By putting them together in a destination folder? By creating a tarball of this folder? Should the creation of the tarball be left to the user or should the save function create it? - Should the on-disk assays with delayed operations on them be "realized" before the SummarizedExperiment object is saved to disk? Doing this has some significant advantages: (1) It "simplifies" the object: it reduces the number of files needed to store the on-disk assay data (only 1 file per on-disk assay). (2) It relocates and reduces the size of the on-disk data needed to represent the object. - Should the in-memory assays be converted into on-disk assays before saving? Should this be controlled by the user? SummarizedExperiment/R/0000755000175400017540000000000013175715010016162 5ustar00biocbuildbiocbuildSummarizedExperiment/R/Assays-class.R0000644000175400017540000003010113175715010020646 0ustar00biocbuildbiocbuild### ========================================================================= ### Assays objects ### ------------------------------------------------------------------------- ### ### The Assays API consists of: ### (a) The Assays() constructor function. ### (b) Lossless back and forth coercion from/to SimpleList. The coercion ### method from SimpleList doesn't need (and should not) validate the ### returned object. ### (c) length, names, names<-, [[, [[<-, dim, [, [<-, rbind, cbind ### ### An Assays concrete subclass needs to implement (b) (required) plus ### optionally any of the methods in (c). ### ### IMPORTANT: Methods that return a modified Assays object (a.k.a. ### endomorphisms), that is, [ as well as replacement methods names<-, [[<-, ### and [<-, must respect the copy-on-change contract. With objects that ### don't make use of references internally, the developer doesn't need to ### take any special action for that because it's automatically taken care of ### by R itself. However, for objects that do make use of references internally ### (e.g. environments, external pointers, pointer to a file on disk, etc...), ### the developer needs to be careful to implement endomorphisms with ### copy-on-change semantics. This can easily be achieved (and is what the ### default methods for Assays objects do) by performaing a full (deep) copy ### of the object before modifying it instead of trying to modify it in-place. ### Note that the full (deep) copy is not always necessary in order to achieve ### copy-on-change semantics: it's enough (and often preferrable for ### performance reasons) to copy only the parts of the objects that need to ### be modified. ### ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Assays class ### setClass("Assays") ### Validity .valid.Assays <- function(x) { assays <- as(x, "SimpleList", strict=FALSE) if (!is(assays, "SimpleList")) return("'assays' must be a SimpleList object") if (length(assays) == 0L) return(NULL) ## Check dims. all_dims <- sapply(assays, function(assay) dim(assay)[1:2]) if (any(is.na(all_dims))) return(wmsg("all assays must be matrix-like objects ", "with 2 (or more?) dimensions")) if (!all(all_dims == all_dims[ , 1L])) stop("all assays must have the same nrow and ncol") NULL } setValidity2("Assays", .valid.Assays) ### Constructor .normarg_assays <- function(assays) { if (!is(assays, "SimpleList")) { if (is.list(assays) || is.array(assays)) { assays <- SimpleList(assays) } else { stop("'assays' must be a SimpleList, list or array") } } assays } Assays <- function(assays=SimpleList()) { assays <- .normarg_assays(assays) #ans <- as(assays, "SimpleListAssays") ans <- as(assays, "ShallowSimpleListAssays") #ans <- as(assays, "AssaysInEnv") # a *broken* alternative validObject(ans) ans } ### Accessors .SL_get_length <- selectMethod("length", "SimpleList") setMethod("length", "Assays", function(x) { assays <- as(x, "SimpleList", strict=FALSE) .SL_get_length(assays) } ) .SL_get_names <- selectMethod("names", "SimpleList") setMethod("names", "Assays", function(x) { assays <- as(x, "SimpleList", strict=FALSE) .SL_get_names(assays) } ) .SL_set_names <- selectMethod("names<-", "SimpleList") setReplaceMethod("names", "Assays", function(x, value) { assays <- as(x, "SimpleList", strict=FALSE) assays <- .SL_set_names(assays, value) as(assays, class(x)) } ) setMethod("[[", "Assays", function(x, i, j, ...) { assays <- as(x, "SimpleList", strict=FALSE) getListElement(assays, i) } ) setReplaceMethod("[[", "Assays", function(x, i, j, ..., value) { assays <- as(x, "SimpleList", strict=FALSE) assays <- setListElement(assays, i, value) ans <- as(assays, class(x)) validObject(ans) ans } ) setMethod("dim", "Assays", function(x) { if (length(x) == 0L) return(c(0L, 0L)) dim(x[[1L]]) } ) ### 2D-Subsetting .extract_Assays_subset <- function(x, i, j) { ## need to expand Rle's for subsetting standard matrix if (!missing(i) && !missing(j)) { fun <- function(x) { switch(length(dim(x)), stop("'[' on assays() with 1 dimension not supported"), x[i, j, drop=FALSE], x[i, j, , drop=FALSE], x[i, j, , , drop=FALSE], stop("'[' on assays() with >4 dimensions not supported")) } } else if (!missing(i)) { fun <- function(x) { switch(length(dim(x)), stop("'[' on assays() with 1 dimension not supported"), x[i, , drop=FALSE], x[i, , , drop=FALSE], x[i, , , , drop=FALSE], stop("'[' on assays() with >4 dimensions not supported")) } } else if (!missing(j)) { fun <- function(x) { switch(length(dim(x)), stop("'[' on assays() with 1 dimension not supported"), x[, j, drop=FALSE], x[, j, , drop=FALSE], x[, j, , , drop=FALSE], stop("'[' on assays() with >4 dimensions not supported")) } } assays <- as(x, "SimpleList", strict=FALSE) as(endoapply(assays, fun), class(x)) } setMethod("[", "Assays", function(x, i, j, ..., drop=TRUE) .extract_Assays_subset(x, i, j) ) .replace_Assays_subset <- function(x, i, j, value) { ## need to expand Rle's for subsetting standard matrix if (!missing(i) && !missing(j)) { fun <- function(x, value) { switch(length(dim(x)), stop("'[<-' on assays() with 1 dimension not supported"), x[i, j] <- value, x[i, j, ] <- value, x[i, j, , ] <- value, stop("'[<-' on assays() with >4 dimensions not supported")) x } } else if (!missing(i)) { fun <- function(x, value) { switch(length(dim(x)), stop("'[<-' on assays() with 1 dimension not supported"), x[i, ] <- value, x[i, , ] <- value, x[i, , , ] <- value, stop("'[<-' on assays() with >4 dimensions not supported")) x } } else if (!missing(j)) { fun <- function(x, value) { switch(length(dim(x)), stop("'[<-' on assays() with 1 dimension not supported"), x[, j] <- value, x[, j, ] <- value, x[, j, , ] <- value, stop("'[<-' on assays() with >4 dimensions not supported")) x } } a <- as(x, "SimpleList", strict=FALSE) v <- as(value, "SimpleList", strict=FALSE) as(mendoapply(fun, x=a, value=v), class(x)) } setReplaceMethod("[", "Assays", function(x, i, j, ..., value) .replace_Assays_subset(x, i, j, value) ) ### rbind/cbind ### 'assays' is assumed to be an unnamed list of length >= 1 .bind_assays <- function(assays, along.cols=FALSE) { if (length(dim(assays[[1L]])) == 2L) { BINDING_FUN <- if (along.cols) "cbind" else "rbind" } else { BINDING_FUN <- if (along.cols) "acbind" else "arbind" } do.call(BINDING_FUN, assays) } .bind_Assays_objects <- function(objects, along.cols=FALSE) { if (length(objects) == 0L) return(Assays()) lens <- sapply(objects, length) if (length(unique(lens)) != 1) stop("the objects to bind must have the same number of assays") len1 <- lens[1L] if (len1 == 0L) return(Assays()) var <- lapply(objects, names) uvar <- unique(unlist(var)) if (is.null(uvar)) { ## no names, match by position res <- lapply(seq_len(len1), function(index) { assays <- lapply(objects, "[[", index) .bind_assays(assays, along.cols=along.cols) }) } else { ## match by name ok <- all(vapply(var, function(x, y) identical(sort(x), y), logical(1), sort(uvar))) if (!ok) stop("assays must have the same names()") res <- lapply(uvar, function(index) { assays <- lapply(objects, "[[", index) .bind_assays(assays, along.cols=along.cols) }) names(res) <- uvar } as(SimpleList(res), class(objects[[1L]])) } setMethod("rbind", "Assays", function(..., deparse.level=1) { objects <- unname(list(...)) .bind_Assays_objects(objects, along.cols=FALSE) } ) setMethod("cbind", "Assays", function(..., deparse.level=1) { objects <- unname(list(...)) .bind_Assays_objects(objects, along.cols=TRUE) } ) ### Having "arbind" and "acbind" methods for Matrix objects will make rbind() ### and cbind() work on Assays objects with Matrix list elements. ### Maybe these methods should be defined next to the arbind() and acbind() ### generics (which are defined in the IRanges package) but that would require ### to make IRanges depend on the Matrix package. setMethod("arbind", "Matrix", function(...) rbind(...)) setMethod("acbind", "Matrix", function(...) cbind(...)) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### SimpleListAssays class ### ### The order of inheritance is important: first Assays, then SimpleList! setClass("SimpleListAssays", contains=c("Assays", "SimpleList")) ### Lossless back and forth coercion from/to SimpleList are automatically ### taken care of by automatic methods defined by the methods package. ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### ShallowSimpleListAssays class ### ### We implement the REQUIRED coercions only. ### .ShallowData <- setRefClass("ShallowData", fields = list( data = "ANY" )) .ShallowSimpleListAssays0 <- setRefClass("ShallowSimpleListAssays", fields = list( data = "SimpleList" ), contains = c("ShallowData", "Assays")) setAs("SimpleList", "ShallowSimpleListAssays", function(from) .ShallowSimpleListAssays0(data=from) ) setAs("ShallowSimpleListAssays", "SimpleList", function(from) from$data) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### AssaysInEnv class ### ### A *broken* alternative to ShallowSimpleListAssays that does NOT respect ### the copy-on-change contract (only provided for illustration purposes). ### ### We implement the REQUIRED coercions plus OPTIONAL methods: length, names, ### names<-, [[, and [[<-. ### setClass("AssaysInEnv", contains="Assays", representation(envir="environment") ) .NAMES_SYMBOL <- ".names" # must begin with a . so is ommitted by ls() setMethod("length", "AssaysInEnv", function(x) length(x@envir) - 1L) setMethod("names", "AssaysInEnv", function(x) x@envir[[.NAMES_SYMBOL]]) ### Does NOT respect the copy-on-change contract! setReplaceMethod("names", "AssaysInEnv", function(x, value) { value <- S4Vectors:::normalize_names_replacement_value(value, x) x@envir[[.NAMES_SYMBOL]] <- value x } ) setMethod("[[", "AssaysInEnv", function(x, i, j, ...) { key <- setNames(ls(x@envir, sorted=TRUE), names(x))[[i]] get(key, envir=x@envir) } ) ### Does NOT respect the copy-on-change contract! setReplaceMethod("[[", "AssaysInEnv", function(x, i, j, ..., value) { key <- setNames(ls(x@envir, sorted=TRUE), names(x))[[i]] assign(key, value, envir=x@envir) x } ) setAs("SimpleList", "AssaysInEnv", function(from) { from <- as.list(from) from_names <- names(from) keys <- paste(sprintf("%09d", seq_along(from)), from_names, sep=":") names(from) <- keys envir <- list2env(from, parent=emptyenv()) envir[[.NAMES_SYMBOL]] <- from_names new("AssaysInEnv", envir=envir) } ) setAs("AssaysInEnv", "SimpleList", function(from) SimpleList(setNames(as.list(from@envir, sorted=TRUE), names(from))) ) SummarizedExperiment/R/RangedSummarizedExperiment-class.R0000644000175400017540000004301313175715010024713 0ustar00biocbuildbiocbuild### ========================================================================= ### RangedSummarizedExperiment objects ### ------------------------------------------------------------------------- ### ### The 'elementMetadata' slot must contain a zero-column DataFrame at all time ### (this is checked by the validity method). The top-level mcols are stored on ### the rowRanges component. setClass("RangedSummarizedExperiment", contains="SummarizedExperiment", representation( rowRanges="GenomicRanges_OR_GRangesList" ), prototype( rowRanges=GRanges() ) ) ### Combine the new parallel slots with those of the parent class. Make sure ### to put the new parallel slots *first*. setMethod("parallelSlotNames", "RangedSummarizedExperiment", function(x) c("rowRanges", callNextMethod()) ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Validity. ### ### The names and mcols of a RangedSummarizedExperiment must be set on its ### rowRanges slot, not in its NAMES and elementMetadata slots! .valid.RangedSummarizedExperiment <- function(x) { if (!is.null(x@NAMES)) return("'NAMES' slot must be set to NULL at all time") if (ncol(x@elementMetadata) != 0L) return(wmsg("'elementMetadata' slot must contain a zero-column ", "DataFrame at all time")) rowRanges_len <- length(x@rowRanges) x_nrow <- length(x) if (rowRanges_len != x_nrow) { txt <- sprintf( "\n length of 'rowRanges' (%d) must equal nb of rows in 'x' (%d)", rowRanges_len, x_nrow) return(txt) } NULL } setValidity2("RangedSummarizedExperiment", .valid.RangedSummarizedExperiment) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Constructor. ### .new_RangedSummarizedExperiment <- function(assays, rowRanges, colData, metadata) { elementMetadata <- S4Vectors:::make_zero_col_DataFrame(length(rowRanges)) if (!is(assays, "Assays")) assays <- Assays(assays) new("RangedSummarizedExperiment", rowRanges=rowRanges, colData=colData, assays=assays, elementMetadata=elementMetadata, metadata=as.list(metadata)) } .get_colnames_from_assays <- function(assays) { if (length(assays) == 0L) return(NULL) colnames(assays[[1L]]) } .get_rownames_from_assays <- function(assays) { if (length(assays) == 0L) return(NULL) rownames(assays[[1L]]) } setGeneric("SummarizedExperiment", function(assays, ...) standardGeneric("SummarizedExperiment")) setMethod("SummarizedExperiment", "SimpleList", function(assays, rowData=NULL, rowRanges=GRangesList(), colData=DataFrame(), metadata=list()) { if (missing(colData) && 0L != length(assays)) { assay <- assays[[1]] nms <- colnames(assay) colData <- DataFrame(x=seq_len(ncol(assay)), row.names=nms)[, FALSE] } else if (!missing(colData)) { colData <- as(colData, "DataFrame") if (is.null(rownames(colData))) rownames(colData) <- .get_colnames_from_assays(assays) } ans_colnames <- rownames(colData) if (is.null(rowData)) { if (missing(rowRanges)) { ans_rownames <- .get_rownames_from_assays(assays) } else { if (is.null(names(rowRanges))) names(rowRanges) <- .get_rownames_from_assays(assays) ans_rownames <- names(rowRanges) } } else { if (!missing(rowRanges)) stop("only one of 'rowData' and 'rowRanges' can be specified") if (is(rowData, "GenomicRanges_OR_GRangesList")) { rowRanges <- rowData if (is.null(names(rowRanges))) names(rowRanges) <- .get_rownames_from_assays(assays) ans_rownames <- names(rowRanges) } else { rowData <- as(rowData, "DataFrame") ans_rownames <- rownames(rowData) if (is.null(ans_rownames)) ans_rownames <- .get_rownames_from_assays(assays) } } ## validate ok <- vapply(assays, function(x) { colnames <- colnames(x) test <- is.null(colnames) || identical(colnames, ans_colnames) if (!test) stop("assay colnames() must be NULL or equal colData rownames()") rownames <- rownames(x) test <- test && is.null(rownames) || identical(rownames, ans_rownames) if (!test) { txt <- "assay rownames() must be NULL or equal rowData rownames() / rowRanges names()" stop(paste(strwrap(txt, exdent=2), collapse="\n")) } test }, logical(1)) assays <- Assays(assays) if (missing(rowRanges) && !is(rowData, "GenomicRanges_OR_GRangesList")) { new_SummarizedExperiment(assays, ans_rownames, rowData, colData, metadata) } else { .new_RangedSummarizedExperiment(assays, rowRanges, colData, metadata) } }) setMethod("SummarizedExperiment", "ANY", function(assays, ...) { if (is.matrix(assays) && is.list(assays)) ## special case -- matrix of lists assays <- list(assays) SummarizedExperiment(SimpleList(assays), ...) }) setMethod("SummarizedExperiment", "list", function(assays, ...) { SummarizedExperiment(do.call(SimpleList, assays), ...) }) setMethod("SummarizedExperiment", "missing", function(assays, ...) { SummarizedExperiment(SimpleList(), ...) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Coercion. ### ### See makeSummarizedExperimentFromExpressionSet.R for coercion back and ### forth between SummarizedExperiment and ExpressionSet. ### .from_RangedSummarizedExperiment_to_SummarizedExperiment <- function(from) { new_SummarizedExperiment(from@assays, names(from@rowRanges), mcols(from@rowRanges), from@colData, from@metadata) } setAs("RangedSummarizedExperiment", "SummarizedExperiment", .from_RangedSummarizedExperiment_to_SummarizedExperiment ) .from_SummarizedExperiment_to_RangedSummarizedExperiment <- function(from) { partitioning <- PartitioningByEnd(integer(length(from)), names=names(from)) rowRanges <- relist(GRanges(), partitioning) mcols(rowRanges) <- mcols(from) .new_RangedSummarizedExperiment(from@assays, rowRanges, from@colData, from@metadata) } setAs("SummarizedExperiment", "RangedSummarizedExperiment", .from_SummarizedExperiment_to_RangedSummarizedExperiment ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Getters and setters. ### ### The rowRanges() generic is defined in the DelayedArray package. setMethod("rowRanges", "RangedSummarizedExperiment", function(x, ...) x@rowRanges ) setGeneric("rowRanges<-", function(x, ..., value) standardGeneric("rowRanges<-")) .SummarizedExperiment.rowRanges.replace <- function(x, ..., value) { if (!is(x, "RangedSummarizedExperiment")) x <- as(x, "RangedSummarizedExperiment") x <- BiocGenerics:::replaceSlots(x, ..., rowRanges=value, elementMetadata=S4Vectors:::make_zero_col_DataFrame(length(value)), check=FALSE) msg <- .valid.SummarizedExperiment.assays_nrow(x) if (!is.null(msg)) stop(msg) x } setReplaceMethod("rowRanges", c("SummarizedExperiment", "GenomicRanges"), .SummarizedExperiment.rowRanges.replace) setReplaceMethod("rowRanges", c("SummarizedExperiment", "GRangesList"), .SummarizedExperiment.rowRanges.replace) setMethod("names", "RangedSummarizedExperiment", function(x) names(rowRanges(x)) ) setReplaceMethod("names", "RangedSummarizedExperiment", function(x, value) { rowRanges <- rowRanges(x) names(rowRanges) <- value BiocGenerics:::replaceSlots(x, rowRanges=rowRanges, check=FALSE) }) setMethod("dimnames", "RangedSummarizedExperiment", function(x) { list(names(x), rownames(colData(x))) }) setReplaceMethod("dimnames", c("RangedSummarizedExperiment", "list"), function(x, value) { rowRanges <- rowRanges(x) names(rowRanges) <- value[[1]] colData <- colData(x) rownames(colData) <- value[[2]] BiocGenerics:::replaceSlots(x, rowRanges=rowRanges, colData=colData, check=FALSE) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Subsetting. ### .DollarNames.RangedSummarizedExperiment <- .DollarNames.SummarizedExperiment setMethod("subset", "RangedSummarizedExperiment", function(x, subset, select, ...) { i <- S4Vectors:::evalqForSubset(subset, rowRanges(x), ...) j <- S4Vectors:::evalqForSubset(select, colData(x), ...) x[i, j] }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## colData-as-GRanges compatibility: allow direct access to GRanges / ## GRangesList colData for select functions ## Not supported: ## ## Not consistent SummarizedExperiment structure: length, names, ## as.data.frame, c. ## Length-changing endomorphisms: disjoin, gaps, reduce, unique. ## 'legacy' data types / functions: as "RangedData", as "RangesList", ## renameSeqlevels, keepSeqlevels. ## Possile to implement, but not yet: Ops, map, window, window<- ## mcols setMethod("mcols", "RangedSummarizedExperiment", function(x, use.names=FALSE, ...) { mcols(rowRanges(x), use.names=use.names, ...) }) setReplaceMethod("mcols", "RangedSummarizedExperiment", function(x, ..., value) { BiocGenerics:::replaceSlots(x, rowRanges=local({ r <- rowRanges(x) mcols(r) <- value r }), check=FALSE) }) ### mcols() is the recommended way for accessing the metadata columns. ### Use of values() or elementMetadata() is discouraged. setMethod("elementMetadata", "RangedSummarizedExperiment", function(x, use.names=FALSE, ...) { elementMetadata(rowRanges(x), use.names=use.names, ...) }) setReplaceMethod("elementMetadata", "RangedSummarizedExperiment", function(x, ..., value) { elementMetadata(rowRanges(x), ...) <- value x }) ## Single dispatch, generic signature fun(x, ...) local({ .funs <- c("duplicated", "end", "end<-", "ranges", "seqinfo", "seqnames", "start", "start<-", "strand", "width", "width<-") endomorphisms <- .funs[grepl("<-$", .funs)] tmpl <- function() {} environment(tmpl) <- parent.frame(2) for (.fun in .funs) { generic <- getGeneric(.fun) formals(tmpl) <- formals(generic) fmls <- as.list(formals(tmpl)) fmls[] <- sapply(names(fmls), as.symbol) fmls[[generic@signature]] <- quote(rowRanges(x)) if (.fun %in% endomorphisms) body(tmpl) <- substitute({ rowRanges(x) <- do.call(FUN, ARGS) x }, list(FUN=.fun, ARGS=fmls)) else body(tmpl) <- substitute(do.call(FUN, ARGS), list(FUN=as.symbol(.fun), ARGS=fmls)) setMethod(.fun, "RangedSummarizedExperiment", tmpl) } }) setMethod("granges", "RangedSummarizedExperiment", function(x, use.mcols=FALSE, ...) { if (!identical(use.mcols, FALSE)) stop("\"granges\" method for RangedSummarizedExperiment objects ", "does not support the 'use.mcols' argument") rowRanges(x) }) ## 2-argument dispatch: ## pcompare / Compare ## .RangedSummarizedExperiment.pcompare <- function(x, y) { if (is(x, "RangedSummarizedExperiment")) x <- rowRanges(x) if (is(y, "RangedSummarizedExperiment")) y <- rowRanges(y) pcompare(x, y) } .RangedSummarizedExperiment.Compare <- function(e1, e2) { if (is(e1, "RangedSummarizedExperiment")) e1 <- rowRanges(e1) if (is(e2, "RangedSummarizedExperiment")) e2 <- rowRanges(e2) callGeneric(e1=e1, e2=e2) } local({ .signatures <- list( c("RangedSummarizedExperiment", "ANY"), c("ANY", "RangedSummarizedExperiment"), c("RangedSummarizedExperiment", "RangedSummarizedExperiment")) for (.sig in .signatures) { setMethod("pcompare", .sig, .RangedSummarizedExperiment.pcompare) setMethod("Compare", .sig, .RangedSummarizedExperiment.Compare) } }) ## additional getters / setters setReplaceMethod("strand", "RangedSummarizedExperiment", function(x, ..., value) { strand(rowRanges(x)) <- value x }) setReplaceMethod("ranges", "RangedSummarizedExperiment", function(x, ..., value) { ranges(rowRanges(x)) <- value x }) ## order, rank, sort setMethod("is.unsorted", "RangedSummarizedExperiment", function(x, na.rm = FALSE, strictly = FALSE, ignore.strand = FALSE) { x <- rowRanges(x) if (!is(x, "GenomicRanges")) stop("is.unsorted() is not yet supported when 'rowRanges(x)' is a ", class(x), " object") callGeneric() }) setMethod("order", "RangedSummarizedExperiment", function(..., na.last=TRUE, decreasing=FALSE, method=c("auto", "shell", "radix")) { args <- lapply(list(...), rowRanges) do.call("order", c(args, list(na.last=na.last, decreasing=decreasing, method=method))) }) setMethod("rank", "RangedSummarizedExperiment", function(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min")) { ties.method <- match.arg(ties.method) rank(rowRanges(x), na.last=na.last, ties.method=ties.method) }) setMethod("sort", "RangedSummarizedExperiment", function(x, decreasing = FALSE, ignore.strand = FALSE) { x_rowRanges <- rowRanges(x) if (!is(x_rowRanges, "GenomicRanges")) stop("sort() is not yet supported when 'rowRanges(x)' is a ", class(x_rowRanges), " object") oo <- GenomicRanges:::order_GenomicRanges(x_rowRanges, decreasing = decreasing, ignore.strand = ignore.strand) x[oo] }) ## seqinfo (also seqlevels, genome, seqlevels<-, genome<-), seqinfo<- setMethod("seqinfo", "RangedSummarizedExperiment", function(x) { seqinfo(x@rowRanges) }) setReplaceMethod("seqinfo", "RangedSummarizedExperiment", function (x, new2old= NULL, pruning.mode=c("error", "coarse", "fine", "tidy"), value) { if (!is(value, "Seqinfo")) stop("the supplied 'seqinfo' must be a Seqinfo object") dangling_seqlevels <- GenomeInfoDb:::getDanglingSeqlevels(x@rowRanges, new2old=new2old, pruning.mode=pruning.mode, seqlevels(value)) if (length(dangling_seqlevels) != 0L) x <- x[!(seqnames(x) %in% dangling_seqlevels)] x@rowRanges <- update(x@rowRanges, seqnames = GenomeInfoDb:::makeNewSeqnames(x, new2old, seqlevels(value)), seqinfo = value) if (is.character(msg <- .valid.RangedSummarizedExperiment(x))) stop(msg) x }) setMethod("split", "RangedSummarizedExperiment", function(x, f, drop=FALSE, ...) { splitAsList(x, f, drop=drop) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### updateObject() ### .old_SummarizedExperiment_slots <- c( "assays", "rowData", "colData", "exptData" ) .has_old_SummarizedExperiment_internal_structure <- function(object) all(sapply(.old_SummarizedExperiment_slots, .hasSlot, object=object)) .from_old_SummarizedExperiment_to_RangedSummarizedExperiment <- function(from) .new_RangedSummarizedExperiment(from@assays, from@rowData, from@colData, from@exptData) .update_old_SummarizedExperiment <- function(object, ..., verbose=FALSE) { if (.has_old_SummarizedExperiment_internal_structure(object)) { rse <- .from_old_SummarizedExperiment_to_RangedSummarizedExperiment(object) } else if (!(.hasSlot(object, "NAMES") && .hasSlot(object, "elementMetadata"))) { rse <- .new_RangedSummarizedExperiment(object@assays, object@rowRanges, object@colData, object@metadata) } else { return(object) } if (!(extends(class(object), "RangedSummarizedExperiment") && class(object) != "RangedSummarizedExperiment")) return(rse) xslotnames <- setdiff(slotNames(class(object)), slotNames(class(rse))) xslots <- attributes(object)[xslotnames] #do.call("new", c(list(Class=class(object), rse), xslots)) ## The line above doesn't work because of a bug in R (see ## https://stat.ethz.ch/pipermail/r-devel/2015-May/071130.html), ## so we use the workaround below. rse_slots <- attributes(rse)[slotNames(class(rse))] ## Because of another bug in R, rse_slots$NAMES is broken when the NAMES ## slot is NULL so we repair it (see ## https://bugs.r-project.org/bugzilla/show_bug.cgi?id=16428). if (is.name(rse_slots$NAMES)) rse_slots$NAMES <- NULL do.call("new", c(list(Class=class(object)), rse_slots, xslots)) } setMethod("updateObject", "SummarizedExperiment", .update_old_SummarizedExperiment ) SummarizedExperiment/R/SummarizedExperiment-class.R0000644000175400017540000006351513175715010023603 0ustar00biocbuildbiocbuild### ========================================================================= ### SummarizedExperiment objects ### ------------------------------------------------------------------------- ### setClass("SummarizedExperiment", contains="Vector", representation( colData="DataFrame", # columns and their annotations assays="Assays", # Data -- e.g., list of matricies NAMES="character_OR_NULL", elementMetadata="DataFrame" ), prototype( assays=Assays() ) ) ### Combine the new parallel slots with those of the parent class. Make sure ### to put the new parallel slots *first*. setMethod("parallelSlotNames", "SummarizedExperiment", function(x) c("NAMES", callNextMethod()) ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Validity. ### .valid.SummarizedExperiment.assays_nrow <- function(x) { if (length(x@assays) == 0L) return(NULL) assays_nrow <- nrow(x@assays) rowData_nrow <- length(x) if (assays_nrow != rowData_nrow) { txt <- sprintf( "\n nb of rows in 'assay' (%d) must equal nb of rows in 'rowData' (%d)", assays_nrow, rowData_nrow) return(txt) } NULL } .valid.SummarizedExperiment.assays_ncol <- function(x) { if (length(x@assays) == 0L) return(NULL) assays_ncol <- ncol(x@assays) colData_nrow <- nrow(colData(x)) if (assays_ncol != colData_nrow) { txt <- sprintf( "\n nb of cols in 'assay' (%d) must equal nb of rows in 'colData' (%d)", assays_ncol, colData_nrow) return(txt) } NULL } .valid.SummarizedExperiment.assays_dim <- function(x) { c(.valid.SummarizedExperiment.assays_nrow(x), .valid.SummarizedExperiment.assays_ncol(x)) } .valid.SummarizedExperiment <- function(x) { .valid.SummarizedExperiment.assays_dim(x) } setValidity2("SummarizedExperiment", .valid.SummarizedExperiment) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Low-level constructor (not exported). ### new_SummarizedExperiment <- function(assays, names, rowData, colData, metadata) { if (!is(assays, "Assays")) assays <- Assays(assays) if (is.null(rowData)) { if (is.null(names)) nrow <- nrow(assays) else nrow <- length(names) rowData <- S4Vectors:::make_zero_col_DataFrame(nrow) } else { rownames(rowData) <- NULL } new("SummarizedExperiment", NAMES=names, elementMetadata=rowData, colData=colData, assays=assays, metadata=as.list(metadata)) } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Getters and setters. ### setMethod("length", "SummarizedExperiment", function(x) nrow(x@elementMetadata) ) setMethod("names", "SummarizedExperiment", function(x) x@NAMES) setReplaceMethod("names", "SummarizedExperiment", function(x, value) { NAMES <- S4Vectors:::normalize_names_replacement_value(value, x) BiocGenerics:::replaceSlots(x, NAMES=NAMES, check=FALSE) } ) ## rowData, colData seem too vague, but from eSet derived classes wanted to ## call the rows / cols something different from 'features' or 'samples', so ## might as well avoid the issue setGeneric("rowData", function(x, ...) standardGeneric("rowData")) setMethod("rowData", "SummarizedExperiment", function(x, ...) mcols(x, ...) ) setGeneric("rowData<-", function(x, ..., value) standardGeneric("rowData<-")) setReplaceMethod("rowData", "SummarizedExperiment", function(x, ..., value) `mcols<-`(x, ..., value=value) ) setGeneric("colData", function(x, ...) standardGeneric("colData")) setMethod("colData", "SummarizedExperiment", function(x, ...) x@colData) setGeneric("colData<-", function(x, ..., value) standardGeneric("colData<-")) setReplaceMethod("colData", c("SummarizedExperiment", "DataFrame"), function(x, ..., value) { if (nrow(value) != ncol(x)) stop("nrow of supplied 'colData' must equal ncol of object") BiocGenerics:::replaceSlots(x, colData=value, check=FALSE) }) setGeneric("assays", function(x, ..., withDimnames=TRUE) standardGeneric("assays"), signature="x") setMethod("assays", "SummarizedExperiment", function(x, ..., withDimnames=TRUE) { assays <- as(x@assays, "SimpleList") if (withDimnames) { assays <- endoapply(assays, function(assay) { dimnames(assay)[1:2] <- dimnames(x) assay } ) } assays }) setGeneric("assays<-", function(x, ..., withDimnames=TRUE, value) standardGeneric("assays<-"), signature=c("x", "value")) .SummarizedExperiment.assays.replace <- function(x, ..., withDimnames=TRUE, value) { ## withDimnames arg allows names(assays(se, withDimnames=FALSE)) <- value ok <- vapply(value, function(elt, xdimnames) { e <- dimnames(elt) (is.null(e[[1]]) || identical(e[[1]], xdimnames[[1]])) && (is.null(e[[2]]) || identical(e[[2]], xdimnames[[2]])) }, logical(1), xdimnames=dimnames(x)) if (!all(ok)) stop("current and replacement dimnames() differ") x <- BiocGenerics:::replaceSlots(x, assays=Assays(value), check=FALSE) ## validObject(x) should be called below because it would then fully ## re-validate objects that derive from SummarizedExperiment (e.g. ## DESeqDataSet objects) after the user sets the assays slot with ## assays(x) <- value. For example the assays slot of a DESeqDataSet ## object must contain a matrix named 'counts' and calling validObject(x) ## would check that but .valid.SummarizedExperiment(x) doesn't. ## The FourC() constructor function defined in the FourCSeq package ## actually takes advantage of the incomplete validation below to ## purposedly return invalid FourC objects! msg <- .valid.SummarizedExperiment(x) if (!is.null(msg)) stop(msg) x } setReplaceMethod("assays", c("SummarizedExperiment", "SimpleList"), .SummarizedExperiment.assays.replace) setReplaceMethod("assays", c("SummarizedExperiment", "list"), .SummarizedExperiment.assays.replace) setGeneric("assay", function(x, i, ...) standardGeneric("assay")) ## convenience for common use case setMethod("assay", c("SummarizedExperiment", "missing"), function(x, i, ...) { assays <- assays(x, ...) if (0L == length(assays)) stop("'assay(<", class(x), ">, i=\"missing\", ...) ", "length(assays(<", class(x), ">)) is 0'") assays[[1]] }) setMethod("assay", c("SummarizedExperiment", "numeric"), function(x, i, ...) { tryCatch({ assays(x, ...)[[i]] }, error=function(err) { stop("'assay(<", class(x), ">, i=\"numeric\", ...)' ", "invalid subscript 'i'\n", conditionMessage(err)) }) }) setMethod("assay", c("SummarizedExperiment", "character"), function(x, i, ...) { msg <- paste0("'assay(<", class(x), ">, i=\"character\", ...)' ", "invalid subscript 'i'") res <- tryCatch({ assays(x, ...)[[i]] }, error=function(err) { stop(msg, "\n", conditionMessage(err)) }) if (is.null(res)) stop(msg, "\n'i' not in names(assays(<", class(x), ">))") res }) setGeneric("assay<-", signature=c("x", "i"), function(x, i, ..., value) standardGeneric("assay<-")) setReplaceMethod("assay", c("SummarizedExperiment", "missing"), function(x, i, ..., value) { if (0L == length(assays(x))) stop("'assay(<", class(x), ">) <- value' ", "length(assays(<", class(x), ">)) is 0") assays(x)[[1]] <- value x }) setReplaceMethod("assay", c("SummarizedExperiment", "numeric"), function(x, i = 1, ..., value) { assays(x, ...)[[i]] <- value x }) setReplaceMethod("assay", c("SummarizedExperiment", "character"), function(x, i, ..., value) { assays(x, ...)[[i]] <- value x }) setGeneric("assayNames", function(x, ...) standardGeneric("assayNames")) setMethod("assayNames", "SummarizedExperiment", function(x, ...) { names(assays(x, withDimnames=FALSE)) }) setGeneric("assayNames<-", function(x, ..., value) standardGeneric("assayNames<-")) setReplaceMethod("assayNames", c("SummarizedExperiment", "character"), function(x, ..., value) { names(assays(x, withDimnames=FALSE)) <- value x }) ## cannonical location for dim, dimnames; dimnames should be checked ## for consistency (if non-null) and stripped from assays on ## construction, or added from assays if row/col names are NULL in ## but not assays. dimnames need to be added on ## to assays when assays() invoked setMethod("dim", "SummarizedExperiment", function(x) { c(length(x), nrow(colData(x))) }) setMethod("dimnames", "SummarizedExperiment", function(x) { list(names(x), rownames(colData(x))) }) setReplaceMethod("dimnames", c("SummarizedExperiment", "list"), function(x, value) { NAMES <- S4Vectors:::normalize_names_replacement_value(value[[1]], x) colData <- colData(x) rownames(colData) <- value[[2]] BiocGenerics:::replaceSlots(x, NAMES=NAMES, colData=colData, check=FALSE) }) setReplaceMethod("dimnames", c("SummarizedExperiment", "NULL"), function(x, value) { dimnames(x) <- list(NULL, NULL) x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Subsetting. ### .SummarizedExperiment.charbound <- function(idx, txt, fmt) { orig <- idx idx <- match(idx, txt) if (any(bad <- is.na(idx))) { msg <- paste(S4Vectors:::selectSome(orig[bad]), collapse=" ") stop(sprintf(fmt, msg)) } idx } setMethod("[", c("SummarizedExperiment", "ANY", "ANY"), function(x, i, j, ..., drop=TRUE) { if (1L != length(drop) || (!missing(drop) && drop)) warning("'drop' ignored '[,", class(x), ",ANY,ANY-method'") if (missing(i) && missing(j)) return(x) if (!missing(i)) { if (is.character(i)) { fmt <- paste0("<", class(x), ">[i,] index out of bounds: %s") i <- .SummarizedExperiment.charbound(i, rownames(x), fmt) } ii <- as.vector(i) ans_elementMetadata <- x@elementMetadata[i, , drop=FALSE] if (is(x, "RangedSummarizedExperiment")) { ans_rowRanges <- x@rowRanges[i] } else { ans_NAMES <- x@NAMES[ii] } } if (!missing(j)) { if (is.character(j)) { fmt <- paste0("<", class(x), ">[,j] index out of bounds: %s") j <- .SummarizedExperiment.charbound(j, colnames(x), fmt) } ans_colData <- x@colData[j, , drop=FALSE] jj <- as.vector(j) } if (missing(i)) { ans_assays <- x@assays[ , jj] ans <- BiocGenerics:::replaceSlots(x, ..., colData=ans_colData, assays=ans_assays, check=FALSE) } else if (missing(j)) { ans_assays <- x@assays[ii, ] if (is(x, "RangedSummarizedExperiment")) { ans <- BiocGenerics:::replaceSlots(x, ..., elementMetadata=ans_elementMetadata, rowRanges=ans_rowRanges, assays=ans_assays, check=FALSE) } else { ans <- BiocGenerics:::replaceSlots(x, ..., elementMetadata=ans_elementMetadata, NAMES=ans_NAMES, assays=ans_assays, check=FALSE) } } else { ans_assays <- x@assays[ii, jj] if (is(x, "RangedSummarizedExperiment")) { ans <- BiocGenerics:::replaceSlots(x, ..., elementMetadata=ans_elementMetadata, rowRanges=ans_rowRanges, colData=ans_colData, assays=ans_assays, check=FALSE) } else { ans <- BiocGenerics:::replaceSlots(x, ..., elementMetadata=ans_elementMetadata, NAMES=ans_NAMES, colData=ans_colData, assays=ans_assays, check=FALSE) } } ans }) setReplaceMethod("[", c("SummarizedExperiment", "ANY", "ANY", "SummarizedExperiment"), function(x, i, j, ..., value) { if (missing(i) && missing(j)) return(value) ans_metadata <- c(metadata(x), metadata(value)) if (!missing(i)) { if (is.character(i)) { fmt <- paste0("<", class(x), ">[i,] index out of bounds: %s") i <- .SummarizedExperiment.charbound(i, rownames(x), fmt) } ii <- as.vector(i) ans_elementMetadata <- local({ emd <- x@elementMetadata emd[i,] <- value@elementMetadata emd }) if (is(x, "RangedSummarizedExperiment")) { ans_rowRanges <- local({ r <- x@rowRanges r[i] <- value@rowRanges names(r)[ii] <- names(value@rowRanges) r }) } else { ans_NAMES <- local({ nms <- x@NAMES nms[ii] <- value@NAMES nms }) } } if (!missing(j)) { if (is.character(j)) { fmt <- paste0("<", class(x), ">[,j] index out of bounds: %s") j <- .SummarizedExperiment.charbound(j, colnames(x), fmt) } jj <- as.vector(j) ans_colData <- local({ c <- x@colData c[j,] <- value@colData rownames(c)[jj] <- rownames(value@colData) c }) } if (missing(i)) { ans_assays <- local({ a <- x@assays a[ , jj] <- value@assays a }) ans <- BiocGenerics:::replaceSlots(x, ..., metadata=ans_metadata, colData=ans_colData, assays=ans_assays, check=FALSE) msg <- .valid.SummarizedExperiment.assays_ncol(ans) } else if (missing(j)) { ans_assays <- local({ a <- x@assays a[ii, ] <- value@assays a }) if (is(x, "RangedSummarizedExperiment")) { ans <- BiocGenerics:::replaceSlots(x, ..., metadata=ans_metadata, elementMetadata=ans_elementMetadata, rowRanges=ans_rowRanges, assays=ans_assays, check=FALSE) } else { ans <- BiocGenerics:::replaceSlots(x, ..., metadata=ans_metadata, elementMetadata=ans_elementMetadata, NAMES=ans_NAMES, assays=ans_assays, check=FALSE) } msg <- .valid.SummarizedExperiment.assays_nrow(ans) } else { ans_assays <- local({ a <- x@assays a[ii, jj] <- value@assays a }) if (is(x, "RangedSummarizedExperiment")) { ans <- BiocGenerics:::replaceSlots(x, ..., metadata=ans_metadata, elementMetadata=ans_elementMetadata, rowRanges=ans_rowRanges, colData=ans_colData, assays=ans_assays, check=FALSE) } else { ans <- BiocGenerics:::replaceSlots(x, ..., metadata=ans_metadata, elementMetadata=ans_elementMetadata, NAMES=ans_NAMES, colData=ans_colData, assays=ans_assays, check=FALSE) } msg <- .valid.SummarizedExperiment.assays_dim(ans) } if (!is.null(msg)) stop(msg) ans }) setMethod("extractROWS", "SummarizedExperiment", function(x, i) { i <- normalizeSingleBracketSubscript(i, x) x[i, ] } ) setMethod("replaceROWS", "SummarizedExperiment", function(x, i, value) { i <- normalizeSingleBracketSubscript(i, x) x[i, ] <- value x } ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Quick colData access. ### setMethod("[[", c("SummarizedExperiment", "ANY", "missing"), function(x, i, j, ...) { colData(x)[[i, ...]] }) setReplaceMethod("[[", c("SummarizedExperiment", "ANY", "missing"), function(x, i, j, ..., value) { colData(x)[[i, ...]] <- value x }) .DollarNames.SummarizedExperiment <- function(x, pattern = "") grep(pattern, names(colData(x)), value=TRUE) setMethod("$", "SummarizedExperiment", function(x, name) { colData(x)[[name]] }) setReplaceMethod("$", "SummarizedExperiment", function(x, name, value) { colData(x)[[name]] <- value x }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Display. ### setMethod("show", "SummarizedExperiment", function(object) { selectSome <- S4Vectors:::selectSome scat <- function(fmt, vals=character(), exdent=2, ...) { vals <- ifelse(nzchar(vals), vals, "''") lbls <- paste(S4Vectors:::selectSome(vals), collapse=" ") txt <- sprintf(fmt, length(vals), lbls) cat(strwrap(txt, exdent=exdent, ...), sep="\n") } cat("class:", class(object), "\n") cat("dim:", dim(object), "\n") ## metadata() expt <- names(metadata(object)) if (is.null(expt)) expt <- character(length(metadata(object))) scat("metadata(%d): %s\n", expt) ## assays() nms <- assayNames(object) if (is.null(nms)) nms <- character(length(assays(object, withDimnames=FALSE))) scat("assays(%d): %s\n", nms) ## rownames() dimnames <- dimnames(object) dlen <- sapply(dimnames, length) if (dlen[[1]]) scat("rownames(%d): %s\n", dimnames[[1]]) else scat("rownames: NULL\n") ## rowData() scat("rowData names(%d): %s\n", names(rowData(object))) ## colnames() if (dlen[[2]]) scat("colnames(%d): %s\n", dimnames[[2]]) else cat("colnames: NULL\n") ## colData() scat("colData names(%d): %s\n", names(colData(object))) }) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### Combine. ### ### Appropriate for objects with different ranges and same samples. setMethod("rbind", "SummarizedExperiment", function(..., deparse.level=1) { args <- unname(list(...)) .rbind.SummarizedExperiment(args) }) .rbind.SummarizedExperiment <- function(args) { if (!.compare(lapply(args, colnames))) stop("'...' objects must have the same colnames") if (!.compare(lapply(args, ncol))) stop("'...' objects must have the same number of samples") if (is(args[[1L]], "RangedSummarizedExperiment")) { rowRanges <- do.call(c, lapply(args, rowRanges)) } else { ## Code below taken from combine_GAlignments_objects() from the ## GenomicAlignments package. ## Combine "NAMES" slots. NAMES_slots <- lapply(args, function(x) x@NAMES) ## TODO: Use elementIsNull() here when it becomes available. has_no_names <- sapply(NAMES_slots, is.null, USE.NAMES=FALSE) if (all(has_no_names)) { NAMES <- NULL } else { noname_idx <- which(has_no_names) if (length(noname_idx) != 0L) NAMES_slots[noname_idx] <- lapply(elementNROWS(args[noname_idx]), character) NAMES <- unlist(NAMES_slots, use.names=FALSE) } } colData <- .cbind.DataFrame(args, colData, "colData") assays <- do.call(rbind, lapply(args, slot, "assays")) elementMetadata <- do.call(rbind, lapply(args, slot, "elementMetadata")) metadata <- do.call(c, lapply(args, metadata)) if (is(args[[1L]], "RangedSummarizedExperiment")) { BiocGenerics:::replaceSlots(args[[1L]], rowRanges=rowRanges, colData=colData, assays=assays, elementMetadata=elementMetadata, metadata=metadata) } else { BiocGenerics:::replaceSlots(args[[1L]], NAMES=NAMES, colData=colData, assays=assays, elementMetadata=elementMetadata, metadata=metadata) } } ### Appropriate for objects with same ranges and different samples. setMethod("cbind", "SummarizedExperiment", function(..., deparse.level=1) { args <- unname(list(...)) .cbind.SummarizedExperiment(args) }) .cbind.SummarizedExperiment <- function(args) { if (is(args[[1L]], "RangedSummarizedExperiment")) { if (!.compare(lapply(args, rowRanges), TRUE)) stop("'...' object ranges (rows) are not compatible") rowRanges <- rowRanges(args[[1L]]) mcols(rowRanges) <- .cbind.DataFrame(args, mcols, "mcols") } else { elementMetadata <- .cbind.DataFrame(args, mcols, "mcols") } colData <- do.call(rbind, lapply(args, colData)) assays <- do.call(cbind, lapply(args, slot, "assays")) metadata <- do.call(c, lapply(args, metadata)) if (is(args[[1L]], "RangedSummarizedExperiment")) { BiocGenerics:::replaceSlots(args[[1L]], rowRanges=rowRanges, colData=colData, assays=assays, metadata=metadata) } else { BiocGenerics:::replaceSlots(args[[1L]], elementMetadata=elementMetadata, colData=colData, assays=assays, metadata=metadata) } } .compare <- function(x, GenomicRanges=FALSE) { x1 <- x[[1]] if (GenomicRanges) { if (is(x1, "GRangesList")) { x <- lapply(x, unlist) x1 <- x[[1]] } for (i in seq_along(x)[-1]) { if (!identicalVals(x1, x[[i]])) return(FALSE) } return(TRUE) } else { all(sapply(x[-1], function(xelt) all(identical(xelt, x[[1]])))) } } .cbind.DataFrame <- function(args, accessor, accessorName) { lst <- lapply(args, accessor) if (!.compare(lst)) { nms <- lapply(lst, names) nmsv <- unlist(nms, use.names=FALSE) names(nmsv) <- rep(seq_along(nms), elementNROWS(nms)) dups <- duplicated(nmsv) ## no duplicates if (!any(dups)) return(do.call(cbind, lst)) ## confirm duplicates are the same lapply(nmsv[duplicated(nmsv)], function(d) { if (!.compare(lapply(lst, "[", d))) stop("column(s) '", unname(d), "' in ", sQuote(accessorName), " are duplicated and the data do not match")}) ## remove duplicates do.call(cbind, lst)[,!dups] } else { lst[[1]] } } ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### identicalVals() ### ### Internal generic and methods (i.e. not exported). ### Provides a fast implementation of 'length(x) == length(y) && all(x == y)' ### for various kinds of vector-like objects. ### TODO: Move this to S4Vectors (for the generic and methods for factor and ### Rle objects) and IRanges (for the method for Ranges objects). ### setGeneric("identicalVals", function(x, y) standardGeneric("identicalVals")) ### Semantically equivalent to identical(as.character(x), as.character(y)) ### but avoids turning the 2 factor objects into character vectors so is more ### efficient. setMethod("identicalVals", c("factor", "factor"), function(x, y) { m <- match(levels(y), levels(x), nomatch=0L) identical(as.integer(x), m[y]) } ) ### Only support factor-Rle objects at the moment! ### Semantically equivalent to identical(as.character(x), as.character(y)) ### but avoids turning the 2 factor-Rle objects into character vectors so is ### more efficient. setMethod("identicalVals", c("Rle", "Rle"), function(x, y) identical(runLength(x), runLength(y)) && identicalVals(runValue(x), runValue(y)) ) setMethod("identicalVals", c("Ranges", "Ranges"), function(x, y) identical(start(x), start(y)) && identical(width(x), width(y)) ) ### Like 'x == y' this method ignores circularity of the underlying sequences ### e.g. ranges [1, 10] and [101, 110] represent the same position on a ### circular sequence of length 100 so should be considered equal. However ### for 'x == y' and the method below, they are not. ### TODO: Take circularity of the underlying sequences into account. setMethod("identicalVals", c("GenomicRanges", "GenomicRanges"), function(x, y) { ## Trying to merge 'seqinfo(x)' and 'seqinfo(y)' will raise an error ## if 'x' and 'y' are not based on the same reference genome. This is ## the standard way to check that 'x' and 'y' are based on the same ## reference genome. merge(seqinfo(x), seqinfo(y)) # we ignore the returned value identicalVals(seqnames(x), seqnames(y)) && identicalVals(ranges(x), ranges(y)) && identicalVals(strand(x), strand(y)) } ) ### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### On-disk realization. ### setMethod("realize", "SummarizedExperiment", function(x) { for (i in seq_along(assays(x))) { ## We drop the dimnames of the individual assays for 2 reasons: ## 1) These dimnames are kind of irrelevant. The dimnames that ## really matter are 'dimnames(x)' and they are stored ## somewhere else in 'x'. So we don't loose them by not ## realizing the assay dimnames on disk. As a little extra ## bonus, this actually saves a little bit of time and disk ## space. ## 2) Using the HDF5Array backend to realize an array-like object ## on disk doesn't store the dimnames in the HDF5 file at the ## moment. a <- assay(x, i, withDimnames=FALSE) dimnames(a) <- NULL assay(x, i) <- realize(a) } x } ) SummarizedExperiment/R/coverage-methods.R0000644000175400017540000000061613175715010021544 0ustar00biocbuildbiocbuild### ========================================================================= ### "coverage" method ### ------------------------------------------------------------------------- ### setMethod("coverage", "RangedSummarizedExperiment", function(x, shift=0L, width=NULL, weight=1L, method=c("auto", "sort", "hash")) { x <- rowRanges(x) callGeneric() } ) SummarizedExperiment/R/findOverlaps-methods.R0000644000175400017540000000250613175715010022405 0ustar00biocbuildbiocbuild### ========================================================================= ### findOverlaps methods ### ------------------------------------------------------------------------- ### findOverlaps setMethod("findOverlaps", c("RangedSummarizedExperiment", "Vector"), function(query, subject, maxgap=-1L, minoverlap=0L, type=c("any", "start", "end", "within", "equal"), select=c("all", "first", "last", "arbitrary"), ignore.strand=FALSE) { query <- rowRanges(query) callGeneric() } ) setMethod("findOverlaps", c("Vector", "RangedSummarizedExperiment"), function(query, subject, maxgap=-1L, minoverlap=0L, type=c("any", "start", "end", "within", "equal"), select=c("all", "first", "last", "arbitrary"), ignore.strand=FALSE) { subject <- rowRanges(subject) callGeneric() } ) setMethod("findOverlaps", c("RangedSummarizedExperiment", "RangedSummarizedExperiment"), function(query, subject, maxgap=-1L, minoverlap=0L, type=c("any", "start", "end", "within", "equal"), select=c("all", "first", "last", "arbitrary"), ignore.strand=FALSE) { query <- rowRanges(query) subject <- rowRanges(subject) callGeneric() } ) SummarizedExperiment/R/inter-range-methods.R0000644000175400017540000000076213175715010022166 0ustar00biocbuildbiocbuild### ========================================================================= ### Inter-range methods ### ------------------------------------------------------------------------- ### setMethod("isDisjoint", "RangedSummarizedExperiment", function(x, ignore.strand=FALSE) { x <- rowRanges(x) callGeneric() } ) setMethod("disjointBins", "RangedSummarizedExperiment", function(x, ignore.strand = FALSE) { x <- rowRanges(x) callGeneric() } ) SummarizedExperiment/R/intra-range-methods.R0000644000175400017540000000342013175715010022154 0ustar00biocbuildbiocbuild### ========================================================================= ### Intra-range methods ### ------------------------------------------------------------------------- ### setMethod("shift", "RangedSummarizedExperiment", function(x, shift=0L, use.names=TRUE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) setMethod("narrow", "RangedSummarizedExperiment", function(x, start=NA, end=NA, width=NA, use.names=TRUE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) setMethod("resize", "RangedSummarizedExperiment", function(x, width, fix="start", use.names=TRUE, ignore.strand=FALSE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) setMethod("flank", "RangedSummarizedExperiment", function(x, width, start=TRUE, both=FALSE, use.names=TRUE, ignore.strand=FALSE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) setMethod("promoters", "RangedSummarizedExperiment", function(x, upstream=2000, downstream=200) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) ### Because 'keep.all.ranges' is FALSE by default, it will break if some ### ranges are dropped. setMethod("restrict", "RangedSummarizedExperiment", function(x, start=NA, end=NA, keep.all.ranges=FALSE, use.names=TRUE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) setMethod("trim", "RangedSummarizedExperiment", function(x, use.names=TRUE) { x0 <- x x <- rowRanges(x) rowRanges(x0) <- callGeneric() x0 } ) SummarizedExperiment/R/makeSummarizedExperimentFromDataFrame.R0000644000175400017540000000214213175715010025714 0ustar00biocbuildbiocbuild### ========================================================================= ### makeSummarizedExperimentFromDataFrame() ### ------------------------------------------------------------------------- ### 'df' must be a data.frame or DataFrame object. makeSummarizedExperimentFromDataFrame <- function(df, ..., seqinfo = NULL, starts.in.df.are.0based = FALSE) { rowRanges <- makeGRangesFromDataFrame( df, ..., keep.extra.columns = FALSE, seqinfo = seqinfo, starts.in.df.are.0based = starts.in.df.are.0based) # Find column names for rowRanges granges_cols <- GenomicRanges:::.find_GRanges_cols(names(df), ...) rangedNames <- names(df)[na.omit(granges_cols)] idx <- match(rangedNames, names(df)) counts <- as.matrix(df[, -idx, drop = FALSE]) if (!is(as.vector(counts), "numeric")) stop("failed to coerce non-range columns to 'numeric'") SummarizedExperiment( assays=SimpleList(counts), rowRanges=rowRanges) } SummarizedExperiment/R/makeSummarizedExperimentFromExpressionSet.R0000644000175400017540000002136613175715010026714 0ustar00biocbuildbiocbuild## ## makeSummarizedExperimentFromExpressionSet ## coercion .from_rowRanges_to_FeatureData <- function(from) { if (is(from, "GRanges")) { fd <- .from_GRanges_to_FeatureData(from) } else if (is(from, "GRangesList")) { fd <- .from_GRangesList_to_FeatureData(from) } else { stop("class ", sQuote(class(from)), " is not a supported type for rowRanges coercion") } featureNames(fd) <- names(from) fd } .from_GRanges_to_FeatureData <- function(from) { data <- as.data.frame(from) ## the first mcols are automatically included in the data.frame from ## as.data.frame, the secondary mcols holds the metadata for the first ## metadata columns. metaData <- mcols(mcols(from)) if (is.null(metaData)) { metaData <- as.data.frame(matrix(ncol=0, nrow=NCOL(data))) } else { metaData <- as.data.frame(metaData) } AnnotatedDataFrame(data, metaData) } .from_GRangesList_to_FeatureData <- function(from) { data <- as.data.frame(mcols(from)) ## the first mcols are automatically included in the data.frame from ## as.data.frame, the secondary mcols holds the metadata for the first ## metadata columns. metaData <- mcols(mcols(from)) if (is.null(metaData)) { metaData <- as.data.frame(matrix(ncol=0, nrow=NCOL(data))) } else { metaData <- as.data.frame(metaData) } AnnotatedDataFrame(data, metaData) } .from_AnnotatedDataFrame_to_DataFrame <- function(from) { df <- DataFrame(pData(from), row.names=rownames(from)) mcols(df) <- DataFrame(varMetadata(from)) df } .from_DataFrame_to_AnnotatedDataFrame <- function(df) { data <- as(df, "data.frame") metaData <- mcols(df) if (is.null(metaData)) { metaData <- as.data.frame(matrix(ncol=0, nrow=NCOL(data))) } else { metaData <- as(metaData, "data.frame") } AnnotatedDataFrame(data, metaData) } ## If the ExpressionSet has featureData with range information make ## GRanges out of that, otherwise make an empty GRangesList with names ## from the featureNames naiveRangeMapper <- function(from) { nms <- featureNames(from) res <- tryCatch({ makeGRangesFromDataFrame(pData(featureData(from)), keep.extra.columns = TRUE) }, error = function(e) { res <- relist(GRanges(), vector("list", length=length(nms))) mcols(res) <- .from_AnnotatedDataFrame_to_DataFrame(featureData(from)) res }) names(res) <- nms res } # Simple ProbeId to Range mapper # Probes with multiple ranges are dropped # The sign of the chromosome location is assumed to contain the strand # information probeRangeMapper <- function(from) { annotation <- annotation(from) if (identical(annotation, character(0))) { return(naiveRangeMapper(from)) } if (requireNamespace("annotate", quietly = TRUE)) { annotationPackage <- annotate::annPkgName(annotation) test <- require(annotationPackage, character.only = TRUE, quietly = TRUE) if (test) { db <- get(annotationPackage, envir = asNamespace(annotationPackage)) pid <- featureNames(from) locs <- AnnotationDbi::select( db, pid, columns = c("CHR", "CHRLOC", "CHRLOCEND")) locs <- na.omit(locs) dups <- duplicated(locs$PROBEID) if (any(dups)) { locs <- locs[!dups, , drop = FALSE] } strand <- ifelse(locs$CHRLOC > 0, "+", "-") res <- GRanges(seqnames = locs$CHR, ranges = IRanges(abs(locs$CHRLOC), abs(locs$CHRLOCEND)), strand = strand) names(res) <- locs$PROBEID if (NROW(res) < length(pid)) { warning(length(pid) - NROW(res), " probes could not be mapped.", call. = FALSE) } res } else { stop("Failed to load ", sQuote(annotationPackage), " package", call. = FALSE) } } else { stop("Failed to load annotate package", call. = FALSE) } } # Simple ProbeId to Gene mapper # Is there a way to get the txDb given the annotation package? geneRangeMapper <- function(txDbPackage, key = "ENTREZID") { function(from) { annotation <- annotation(from) if (identical(annotation, character(0))) { return(naiveRangeMapper(from)) } if (requireNamespace("annotate", quietly = TRUE)) { annotationPackage <- annotate::annPkgName(annotation) test <- require(annotationPackage, character.only = TRUE, quietly = TRUE) if (test) { db <- get(annotationPackage, envir = asNamespace(annotationPackage)) pid <- featureNames(from) probeIdToGeneId <- AnnotationDbi::mapIds(db, pid, key, "PROBEID") geneIdToProbeId <- setNames(names(probeIdToGeneId), probeIdToGeneId) if (requireNamespace(txDbPackage, quietly = TRUE)) { txDb <- get(txDbPackage, envir = asNamespace(txDbPackage)) genes <- GenomicFeatures::genes(txDb) probesWithAMatch <- probeIdToGeneId[probeIdToGeneId %in% names(genes)] res <- genes[probesWithAMatch] names(res) <- geneIdToProbeId[names(res)] if (NROW(res) < length(pid)) { warning(length(pid) - NROW(res), " probes could not be mapped.", call. = FALSE) } res } else { stop("Failed to load ", sQuote(txDbPackage), " package", call. = FALSE) } } else { stop("Failed to load ", sQuote(annotationPackage), " package", call. = FALSE) } } else { stop("Failed to load annotate package", call. = FALSE) } } } makeSummarizedExperimentFromExpressionSet <- function(from, mapFun = naiveRangeMapper, ...) { mapFun <- match.fun(mapFun) rowRanges <- mapFun(from, ...) matches <- match(names(rowRanges), featureNames(from), nomatch = 0) from <- from[matches, drop = FALSE] assays <- as.list(assayData(from)) colData <- .from_AnnotatedDataFrame_to_DataFrame(phenoData(from)) metadata <- SimpleList( experimentData = experimentData(from), annotation = annotation(from), protocolData = protocolData(from) ) SummarizedExperiment( assays = assays, rowRanges = rowRanges, colData = colData, metadata = metadata ) } setAs("ExpressionSet", "RangedSummarizedExperiment", function(from) { makeSummarizedExperimentFromExpressionSet(from) }) setAs("ExpressionSet", "SummarizedExperiment", function(from) { as(makeSummarizedExperimentFromExpressionSet(from), "SummarizedExperiment") }) setAs("RangedSummarizedExperiment", "ExpressionSet", function(from) { assayData <- list2env(as.list(assays(from))) numAssays <- length(assayData) if (numAssays == 0) { assayData$exprs <- new("matrix") } else if (!"exprs" %in% ls(assayData)) { ## if there isn't an exprs assay we need to pick one as exprs, ## so rename the first element exprs and issue a warning. exprs <- ls(assayData)[[1]] warning("No assay named ", sQuote("exprs"), " found, renaming ", exprs, " to ", sQuote("exprs"), ".") assayData[["exprs"]] <- assayData[[exprs]] rm(list=exprs, envir=assayData) } featureData <- .from_rowRanges_to_FeatureData(rowRanges(from)) phenoData <- .from_DataFrame_to_AnnotatedDataFrame(colData(from)) metadata <- metadata(from) experimentData <- if (!is.null(metadata$experimentData)) { metadata$experimentData } else { MIAME() } annotation <- if (!is.null(metadata$annotation)) { metadata$annotation } else { character() } protocolData <- if (!is.null(metadata$protocolData)) { metadata$protocolData } else { annotatedDataFrameFrom(assayData, byrow=FALSE) } ExpressionSet(assayData, phenoData = phenoData, featureData = featureData, experimentData = experimentData, annotation = annotation, protocolData = protocolData ) }) setAs("SummarizedExperiment", "ExpressionSet", function(from) as(as(from, "RangedSummarizedExperiment"), "ExpressionSet") ) SummarizedExperiment/R/nearest-methods.R0000644000175400017540000000564513175715010021421 0ustar00biocbuildbiocbuild### ========================================================================= ### nearest (and related) methods ### ------------------------------------------------------------------------- ### ### precede & follow for (f in c("precede", "follow")) { setMethod(f, c("RangedSummarizedExperiment", "ANY"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { x <- rowRanges(x) callGeneric() } ) setMethod(f, c("ANY", "RangedSummarizedExperiment"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { subject <- rowRanges(subject) callGeneric() } ) setMethod(f, c("RangedSummarizedExperiment", "RangedSummarizedExperiment"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { x <- rowRanges(x) subject <- rowRanges(subject) callGeneric() } ) } ### nearest setMethod("nearest", c("RangedSummarizedExperiment", "ANY"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { x <- rowRanges(x) callGeneric() } ) setMethod("nearest", c("ANY", "RangedSummarizedExperiment"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { subject <- rowRanges(subject) callGeneric() } ) setMethod("nearest", c("RangedSummarizedExperiment", "RangedSummarizedExperiment"), function(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) { x <- rowRanges(x) subject <- rowRanges(subject) callGeneric() } ) ### distance setMethod("distance", c("RangedSummarizedExperiment", "ANY"), function(x, y, ignore.strand=FALSE, ...) { x <- rowRanges(x) callGeneric() } ) setMethod("distance", c("ANY", "RangedSummarizedExperiment"), function(x, y, ignore.strand=FALSE, ...) { y <- rowRanges(y) callGeneric() } ) setMethod("distance", c("RangedSummarizedExperiment", "RangedSummarizedExperiment"), function(x, y, ignore.strand=FALSE, ...) { x <- rowRanges(x) y <- rowRanges(y) callGeneric() } ) ### distanceToNearest setMethod("distanceToNearest", c("RangedSummarizedExperiment", "ANY"), function(x, subject, ignore.strand=FALSE, ...) { x <- rowRanges(x) callGeneric() } ) setMethod("distanceToNearest", c("ANY", "RangedSummarizedExperiment"), function(x, subject, ignore.strand=FALSE, ...) { subject <- rowRanges(subject) callGeneric() } ) setMethod("distanceToNearest", c("RangedSummarizedExperiment", "RangedSummarizedExperiment"), function(x, subject, ignore.strand=FALSE, ...) { x <- rowRanges(x) subject <- rowRanges(subject) callGeneric() } ) SummarizedExperiment/R/readKallisto.R0000644000175400017540000001363013175715010020726 0ustar00biocbuildbiocbuild.require <- function(pkg) { withCallingHandlers({ requireNamespace(pkg) }, warning=function(w) { invokeRestart("muffleWarning") }) || { msg <- sprintf('install %s with source("http://bioconductor.org/biocLite.R"); biocLite("%s")', pkg, pkg) stop(paste(strwrap(msg, exdent=2), collapse="\n")) } } .open <- function(files, h5) { lapply(files, function(file) { if (h5 && rhdf5::H5Fis_hdf5(file)) rhdf5::H5Fopen(file) else file(file, open="rt") }) } .close <- function(cons) UseMethod(".close") .close.list <- function(cons) for (con in cons) .close(con) .close.connection <- function(cons) close(cons) .close.H5IdComponent <- function(cons) rhdf5::H5Fclose(cons) .colData <- function(jsonfile) { json <- jsonlite::fromJSON(jsonfile) do.call("data.frame", c(json, stringsAsFactors=FALSE)) } .KALLISTO_COLCLASSES <- c("character", "integer" , "numeric", "numeric", "numeric") .KALLISTO_ROWDATA <- "length" KALLISTO_ASSAYS <- c("est_counts", "tpm", "eff_length") .read <- function(con) UseMethod(".read") .read.connection <- function(con) read.delim(con, header=TRUE, colClasses=.KALLISTO_COLCLASSES, row.names=1) .read.H5IdComponent <- function(con) { eff_length <- rhdf5::h5read(con, "/aux/eff_lengths") est_counts <- rhdf5::h5read(con, "/est_counts") tpm0 <- est_counts / eff_length data.frame(row.names=rhdf5::h5read(con, "/aux/ids"), length=rhdf5::h5read(con, "/aux/lengths"), eff_length=eff_length, est_counts=est_counts, tpm=tpm0 / (sum(tpm0) / 1e6)) } readKallisto <- function(files, json=file.path(dirname(files), "run_info.json"), h5=any(grepl("\\.h5$", files)), what=KALLISTO_ASSAYS, as=c("SummarizedExperiment", "list", "matrix")) { as <- match.arg(as) if (missing(what)) what <- what[1] else { whats <- eval(formals()[["what"]]) if (!all(what %in% KALLISTO_ASSAYS)) stop("'what' must be in ", paste(sQuote(KALLISTO_ASSAYS), collapse=", "), call.=FALSE) } stopifnot(is.character(files)) test <- file.exists(files) if (!all(test)) stop("file(s) do not exist:\n ", paste(files[!test], collapse="\n ")) if (is.null(names(files))) names(files) <- basename(dirname(files)) if (anyDuplicated(names(files))) stop("'names()' of 'files' must be unique") if (as != "matrix") { .require("jsonlite") stopifnot(length(files) == length(json)) if (!is.null(names(json))) stopifnot(identical(names(json), names(files))) else names(json) <- names(files) test <- file.exists(json) if (!all(test)) stop("json file(s) do not exist:\n ", paste(json[!test], collapse="\n ")) } if (h5) .require("rhdf5") cons <- .open(files, h5) value <- .read(cons[[1]]) rowData <- value[, .KALLISTO_ROWDATA, drop=FALSE] assay <- matrix(0, nrow(rowData), length(cons), dimnames=list(rownames(rowData), names(cons))) assays <- setNames(replicate(length(what), assay, FALSE), what) for (w in what) assays[[w]][,1] <- value[[w]] for (i in seq_along(cons)[-1]) { value <- .read(cons[[i]]) if (!identical(rowData, value[, .KALLISTO_ROWDATA, drop=FALSE])) stop("rowData differs between files:\n ", paste(files[c(1, i)], collapse="\n ")) for (w in what) assays[[w]][,i] <- value[[w]] } .close(cons) if (as != "matrix") colData <- do.call("rbind", lapply(json, .colData)) switch(as, matrix={ if (length(assays) == 1L) assays[[1]] else assays }, list={ c(setNames(list(colData, rowData), c("colData", "rowData")), assays) }, SummarizedExperiment={ SummarizedExperiment(assays=assays, rowData=as(rowData, "DataFrame"), colData=as(colData, "DataFrame")) }) } .readIds <- function(con, i) { if (!missing(i)) rhdf5::h5read(con, "/aux/ids", list(i)) else rhdf5::h5read(con, "/aux/ids") } readKallistoBootstrap <- function(file, i, j) { .require("rhdf5") stopifnot(length(file) == 1L, is.character(file)) stopifnot(file.exists(file)) stopifnot(rhdf5::H5Fis_hdf5(file)) con <- rhdf5::H5Fopen(file) on.exit(rhdf5::H5Fclose(con)) nboot <- as.integer(rhdf5::h5read(con, "/aux/num_bootstrap")) if (nboot == 0L) stop("file contains no bootstraps:\n ", file) if (!missing(i) && is.character(i)) { idx <- match(i, .readIds(con)) if (anyNA(i)) stop("unknown target id(s)", i[is.na(idx)]) i <- idx } if (!missing(j) && is.numeric(j)) { if (any((j < 1L) || any(j > nboot))) stop("'j' must be >0 and <=", nboot) j <- paste0("bs", as.integer(j) - 1L) } m <- if (missing(i) && missing(j)) { simplify2array(rhdf5::h5read(con, "/bootstrap")) } else if (missing(i)) { query <- setNames(sprintf("/bootstrap/%s", j), j) simplify2array(lapply(query, rhdf5::h5read, file=con)) } else if (missing(j)) { group <- rhdf5::H5Gopen(con, "/bootstrap") name <- rhdf5::h5ls(group)$name rhdf5::H5Gclose(group) query <- setNames(sprintf("/bootstrap/%s", name), name) simplify2array(lapply(query, rhdf5::h5read, file=con, index=list(i))) } else { query <- setNames(sprintf("/bootstrap/%s", j), j) simplify2array(lapply(query, rhdf5::h5read, file=con, index=list(i))) } rownames(m) <- .readIds(con, i) if (missing(j)) { o <- order(as.integer(sub("bs", "", colnames(m), fixed=TRUE))) m[,o] } else m } SummarizedExperiment/R/saveHDF5SummarizedExperiment.R0000644000175400017540000001101713175715010023754 0ustar00biocbuildbiocbuild### ========================================================================= ### Save/load a HDF5-based SummarizedExperiment object ### ------------------------------------------------------------------------- .create_dir <- function(dir, replace) { if (dir.exists(dir)) { if (!replace) stop(wmsg("Directory \"", dir, "\" already exists. ", "Use 'replace=TRUE' to replace it. ", "Its content will be lost!")) if (unlink(dir, recursive=TRUE) != 0L) stop("failed to delete directory \"", dir, "\"") } else if (file.exists(dir)) { stop(wmsg("\"", dir, "\" already exists and is a file, ", "not a directory")) } if (!suppressWarnings(dir.create(dir))) stop("cannot create directory \"", dir, "\"") } .write_h5_assays <- function(assays, h5_path, chunk_dim, level, verbose) { nassay <- length(assays) for (i in seq_len(nassay)) { a <- assays[[i]] h5_name <- sprintf("assay%03d", i) if (verbose) message("Start writing assay ", i, "/", nassay, " to '", h5_path, "':") a <- HDF5Array::writeHDF5Array(a, h5_path, h5_name, chunk_dim, level, verbose=verbose) if (verbose) message("Finished writing assay ", i, "/", nassay, " to '", h5_path, "'.") assays[[i]] <- a } assays } .shorten_h5_paths <- function(assays) { nassay <- length(assays) for (i in seq_len(nassay)) { a <- assays[[i]] a@seed@file <- basename(a@seed@file) assays[[i]] <- a } assays } ### Save all the assays in HDF5 format, including in-memory assays. ### Delayed assays with delayed operations on them are realized while they ### are written to disk.. saveHDF5SummarizedExperiment <- function(x, dir="my_h5_se", replace=FALSE, chunk_dim=NULL, level=NULL, verbose=FALSE) { if (!is(x, "SummarizedExperiment")) stop("'x' must be a SummarizedExperiment object") if (!isSingleString(dir)) stop(wmsg("'dir' must be a single string specifying the path ", "to the directory where to save the ", class(x), " object (the directory will be created)")) if (!isTRUEorFALSE(replace)) stop("'replace' must be TRUE or FALSE") if (!isTRUEorFALSE(verbose)) stop("'verbose' must be TRUE or FALSE") ## We try library(HDF5Array) before deleting or creating directory 'dir'. ## That way if HDF5Array is not installed then we will stop without having ## made changes to the file system. library(HDF5Array) # for writeHDF5Array() .create_dir(dir, replace) h5_path <- file.path(dir, "assays.h5") x@assays <- .write_h5_assays(x@assays, h5_path, chunk_dim, level, verbose) rds_path <- file.path(dir, "se.rds") ans <- x x@assays <- .shorten_h5_paths(x@assays) saveRDS(x, file=rds_path) invisible(ans) } .THE_EXPECTED_STUFF <- c( "a HDF5-based SummarizedExperiment object previously ", "saved with saveHDF5SummarizedExperiment()" ) .stop_if_bad_dir <- function(dir) stop(wmsg("directory \"", dir, "\" does not seem to contain ", .THE_EXPECTED_STUFF)) ### Does a lot of checking and tries to fail graciously if the content ### of 'dir' doesn't look as expected. loadHDF5SummarizedExperiment <- function(dir="my_h5_se") { library(rhdf5) # for h5ls() library(HDF5Array) # for the HDF5Array class if (!isSingleString(dir)) stop(wmsg("'dir' must be a single string specifying the path ", "to the directory containing ", .THE_EXPECTED_STUFF)) h5_path <- file.path(dir, "assays.h5") rds_path <- file.path(dir, "se.rds") if (!file.exists(h5_path) || !file.exists(rds_path)) .stop_if_bad_dir(dir) h5_content <- try(rhdf5::h5ls(h5_path), silent=TRUE) if (inherits(h5_content, "try-error")) .stop_if_bad_dir(dir) h5_datasets <- h5_content[ , "name"] ans <- readRDS(rds_path) if (!is(ans, "SummarizedExperiment")) .stop_if_bad_dir(dir) for (i in seq_along(assays(ans))) { a <- assay(ans, i, withDimnames=FALSE) if (!is(a, "HDF5Array") || !identical(a@seed@file, "assays.h5") || !(a@seed@name %in% h5_datasets)) .stop_if_bad_dir(dir) a@seed@file <- file_path_as_absolute(file.path(dir, a@seed@file)) assay(ans, i, withDimnames=FALSE) <- a } ans } SummarizedExperiment/R/zzz.R0000644000175400017540000000011013175715010017132 0ustar00biocbuildbiocbuild.test <- function() BiocGenerics:::testPackage("SummarizedExperiment") SummarizedExperiment/build/0000755000175400017540000000000013175741302017063 5ustar00biocbuildbiocbuildSummarizedExperiment/build/vignette.rds0000644000175400017540000000032213175741302021417 0ustar00biocbuildbiocbuildb```b`fab`b2 1# '.M,ʬJMq(H-M+ MAS'MIfe)n)е`U@t:Bk^bnj1Q.y) 3GZY_Ӄ -3'foHf e2|s  =XQĒD"~MSummarizedExperiment/inst/0000755000175400017540000000000013175741302016741 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/doc/0000755000175400017540000000000013175741302017506 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/doc/SummarizedExperiment.R0000644000175400017540000000730113175741301024012 0ustar00biocbuildbiocbuild## ----style, echo=FALSE, results='asis'------------------------------------- BiocStyle::markdown() ## ----include = FALSE------------------------------------------------------- # download current version of SE diagram #download.file("https://docs.google.com/feeds/download/drawings/Export?id=18OcDb80FpvSGRYnFl-8vUqwNNLaNHrG1I9SWKHCselo&exportFormat=svg", "SE.svg") download.file("https://docs.google.com/feeds/download/drawings/Export?id=1kiC8Qlo1mhSnLDqkGiRNPSo6GWn3C2duBszCFbJCB-g&exportFormat=svg", "SE.svg") ## ---- echo=FALSE----------------------------------------------------------- suppressPackageStartupMessages(library(SummarizedExperiment)) suppressPackageStartupMessages(data(airway, package="airway")) ## -------------------------------------------------------------------------- library(SummarizedExperiment) data(airway, package="airway") se <- airway se ## ----assays, eval = FALSE-------------------------------------------------- # assays(se)$counts ## ----assays_table, echo = FALSE-------------------------------------------- knitr::kable(assays(se)$counts[1:10,]) ## ----rowRanges------------------------------------------------------------- rowRanges(se) ## ----colData--------------------------------------------------------------- colData(se) ## ----columnSubset---------------------------------------------------------- # subset for only those samples treated with dexamethasone se[, se$dex == "trt"] ## ----metadata-------------------------------------------------------------- metadata(se) ## ----metadata-formula------------------------------------------------------ metadata(se)$formula <- counts ~ dex + albut metadata(se) ## ----constructRSE---------------------------------------------------------- nrows <- 200 ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)), IRanges(floor(runif(200, 1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) SummarizedExperiment(assays=list(counts=counts), rowRanges=rowRanges, colData=colData) ## ----constructSE----------------------------------------------------------- SummarizedExperiment(assays=list(counts=counts), colData=colData) ## ----2d-------------------------------------------------------------------- # subset the first five transcripts and first three samples se[1:5, 1:3] ## ----colDataExtraction----------------------------------------------------- se[, se$cell == "N61311"] ## ----getSet---------------------------------------------------------------- counts <- matrix(1:15, 5, 3, dimnames=list(LETTERS[1:5], LETTERS[1:3])) dates <- SummarizedExperiment(assays=list(counts=counts), rowData=DataFrame(month=month.name[1:5], day=1:5)) # Subset all January assays dates[rowData(dates)$month == "January", ] ## ----assay_assays---------------------------------------------------------- assays(se) assays(se)[[1]][1:5, 1:5] # assay defaults to the first assay if no i is given assay(se)[1:5, 1:5] assay(se, 1)[1:5, 1:5] ## ----overlap--------------------------------------------------------------- # Subset for only rows which are in the interval 100,000 to 110,000 of # chromosome 1 roi <- GRanges(seqnames="1", ranges=100000:1100000) subsetByOverlaps(se, roi) ## ----rseSubclass----------------------------------------------------------- setClass("MyRSESubclass", contains="RangedSummarizedExperiment", representation=representation( slot1="integer", slot2="function" ## ... maybe more ... ) ) SummarizedExperiment/inst/doc/SummarizedExperiment.Rmd0000644000175400017540000003112513175715010024332 0ustar00biocbuildbiocbuild--- title: "_SummarizedExperiment_ for Coordinating Experimental Assays, Samples, and Regions of Interest" author: "Martin Morgan, Valerie Obenchain, Jim Hester, Hervé Pagès" date: "Revised: 22 June, 2016" output: BiocStyle::html_document: toc: true vignette: > %\VignetteIndexEntry{SummarizedExperiment} %\VignetteEngine{knitr::rmarkdown} \usepackage[utf8]{inputenc} --- ```{r style, echo=FALSE, results='asis'} BiocStyle::markdown() ``` # Introduction The `SummarizedExperiment` class is used to store rectangular matrices of experimental results, which are commonly produced by sequencing and microarray experiments. Each object stores observations of one or more samples, along with additional meta-data describing both the observations (features) and samples (phenotypes). A key aspect of the `SummarizedExperiment` class is the coordination of the meta-data and assays when subsetting. For example, if you want to exclude a given sample you can do for both the meta-data and assay in one operation, which ensures the meta-data and observed data will remain in sync. Improperly accounting for meta and observational data has resulted in a number of incorrect results and retractions so this is a very desirable property. `SummarizedExperiment` is in many ways similar to the historical `ExpressionSet`, the main distinction being that `SummarizedExperiment` is more flexible in it's row information, allowing both `GRanges` based as well as those described by arbitrary `DataFrame`s. This makes it ideally suited to a variety of experiments, particularly sequencing based experiments such as RNA-Seq and ChIp-Seq. # Anatomy of a `SummarizedExperiment` The _SummarizedExperiment_ package contains two classes: `SummarizedExperiment` and `RangedSummarizedExperiment`. `SummarizedExperiment` is a matrix-like container where rows represent features of interest (e.g. genes, transcripts, exons, etc.) and columns represent samples. The objects contain one or more assays, each represented by a matrix-like object of numeric or other mode. The rows of a `SummarizedExperiment` object represent features of interest. Information about these features is stored in a `DataFrame` object, accessible using the function `rowData()`. Each row of the `DataFrame` provides information on the feature in the corresponding row of the `SummarizedExperiment` object. Columns of the DataFrame represent different attributes of the features of interest, e.g., gene or transcript IDs, etc. `RangedSummarizedExperiment` is the child of the `SummarizedExperiment` class which means that all the methods on `SummarizedExperiment` also work on a `RangedSummarizedExperiment`. The fundamental difference between the two classes is that the rows of a `RangedSummarizedExperiment` object represent genomic ranges of interest instead of a `DataFrame` of features. The `RangedSummarizedExperiment` ranges are described by a `GRanges` or a `GRangesList` object, accessible using the `rowRanges()` function. The following graphic displays the class geometry and highlights the vertical (column) and horizontal (row) relationships. ```{r include = FALSE} # download current version of SE diagram #download.file("https://docs.google.com/feeds/download/drawings/Export?id=18OcDb80FpvSGRYnFl-8vUqwNNLaNHrG1I9SWKHCselo&exportFormat=svg", "SE.svg") download.file("https://docs.google.com/feeds/download/drawings/Export?id=1kiC8Qlo1mhSnLDqkGiRNPSo6GWn3C2duBszCFbJCB-g&exportFormat=svg", "SE.svg") ``` ![Summarized Experiment](SE.svg) ## Assays The `airway` package contains an example dataset from an RNA-Seq experiment of read counts per gene for airway smooth muscles. These data are stored in a `RangedSummarizedExperiment` object which contains 8 different experimental and assays 64,102 gene transcripts. ```{r, echo=FALSE} suppressPackageStartupMessages(library(SummarizedExperiment)) suppressPackageStartupMessages(data(airway, package="airway")) ``` ```{r} library(SummarizedExperiment) data(airway, package="airway") se <- airway se ``` To retrieve the experiment data from a `SummarizedExperiment` object one can use the `assays()` accessor. An object can have multiple assay datasets each of which can be accessed using the `$` operator. The `airway` dataset contains only one assay (`counts`). Here each row represents a gene transcript and each column one of the samples. ```{r assays, eval = FALSE} assays(se)$counts ``` ```{r assays_table, echo = FALSE} knitr::kable(assays(se)$counts[1:10,]) ``` ## 'Row' (regions-of-interest) data The `rowRanges()` accessor is used to view the range information for a `RangedSummarizedExperiment`. (Note if this were the parent `SummarizedExperiment` class we'd use `rowData()`). The data are stored in a `GRangesList` object, where each list element corresponds to one gene transcript and the ranges in each `GRanges` correspond to the exons in the transcript. ```{r rowRanges} rowRanges(se) ``` ## 'Column' (sample) data Sample meta-data describing the samples can be accessed using `colData()`, and is a `DataFrame` that can store any number of descriptive columns for each sample row. ```{r colData} colData(se) ``` This sample metadata can be accessed using the `$` accessor which makes it easy to subset the entire object by a given phenotype. ```{r columnSubset} # subset for only those samples treated with dexamethasone se[, se$dex == "trt"] ``` ## Experiment-wide metadata Meta-data describing the experimental methods and publication references can be accessed using `metadata()`. ```{r metadata} metadata(se) ``` Note that `metadata()` is just a simple list, so it is appropriate for _any_ experiment wide metadata the user wishes to save, such as storing model formulas. ```{r metadata-formula} metadata(se)$formula <- counts ~ dex + albut metadata(se) ``` # Constructing a `SummarizedExperiment` Often, `SummarizedExperiment` or `RangedSummarizedExperiment` objects are returned by functions written by other packages. However it is possible to create them by hand with a call to the `SummarizedExperiment()` constructor. Constructing a `RangedSummarizedExperiment` with a `GRanges` as the _rowRanges_ argument: ```{r constructRSE} nrows <- 200 ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)), IRanges(floor(runif(200, 1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) SummarizedExperiment(assays=list(counts=counts), rowRanges=rowRanges, colData=colData) ``` A `SummarizedExperiment` can be constructed with or without supplying a `DataFrame` for the _rowData_ argument: ```{r constructSE} SummarizedExperiment(assays=list(counts=counts), colData=colData) ``` # Common operations on `SummarizedExperiment` ## Subsetting - `[` Performs two dimensional subsetting, just like subsetting a matrix or data frame. ```{r 2d} # subset the first five transcripts and first three samples se[1:5, 1:3] ``` - `$` operates on `colData()` columns, for easy sample extraction. ```{r colDataExtraction} se[, se$cell == "N61311"] ``` ## Getters and setters - `rowRanges()` / (`rowData()`), `colData()`, `metadata()` ```{r getSet} counts <- matrix(1:15, 5, 3, dimnames=list(LETTERS[1:5], LETTERS[1:3])) dates <- SummarizedExperiment(assays=list(counts=counts), rowData=DataFrame(month=month.name[1:5], day=1:5)) # Subset all January assays dates[rowData(dates)$month == "January", ] ``` - `assay()` versus `assays()` There are two accessor functions for extracting the assay data from a `SummarizedExperiment` object. `assays()` operates on the entire list of assay data as a whole, while `assay()` operates on only one assay at a time. `assay(x, i)` is simply a convenience function which is equivalent to `assays(x)[[i]]`. ```{r assay_assays} assays(se) assays(se)[[1]][1:5, 1:5] # assay defaults to the first assay if no i is given assay(se)[1:5, 1:5] assay(se, 1)[1:5, 1:5] ``` ## Range-based operations - `subsetByOverlaps()` `SummarizedExperiment` objects support all of the `findOverlaps()` methods and associated functions. This includes `subsetByOverlaps()`, which makes it easy to subset a `SummarizedExperiment` object by an interval. ```{r overlap} # Subset for only rows which are in the interval 100,000 to 110,000 of # chromosome 1 roi <- GRanges(seqnames="1", ranges=100000:1100000) subsetByOverlaps(se, roi) ``` # Advanced: Extending `RangedSummarizedExperiment` For representing and manipulating data in their own package, Bioconductor developers are encouraged to re-use existing classes defined in other packages like the `RangedSummarizedExperiment` or `GRanges` containers defined in the `SummarizedExperiment` or `GenomicRanges` infrastructure packages, respectively. Many Bioconductor packages are designed around these basic containers, that is, they define functions that take and/or return a `RangedSummarizedExperiment` or `GRanges` object. For example the `csaw` package defines various functions that operate on `RangedSummarizedExperiment` objects, which are used to represent the number of ChIP-seq reads from each BAM file overlapping pre-specified regions. However, sometimes re-using the `RangedSummarizedExperiment` class as-is does not satisfy the needs of the package and the developer makes the choice to extend the class in order to accomodate the special needs of the package and/or the specificities of the data that it deals with. For example the `DESeq2` package defines the `DESeqDataSet` class which extends `RangedSummarizedExperiment` to add the `design` and `dispersionFunction` slots to it. The following subsections describe in a nutshell how the developer would typically proceed for extending `RangedSummarizedExperiment` in his/her own package. Some familiarity with the S4 class system is required. Readers not familiar with the S4 class system are encouraged to consult the vignette `A quick overview of the S4 class system` located in the `S4Vectors` package for the basics of implementing and extending S4 classes. The approach described below allows the developer to extend `RangedSummarizedExperiment` it in a way that remains agnostic of its internals. Keeping this separation between the responsibilities of the owners of the parent and child classes facilitate maintenance in the long run. In particular, the implementation of the child class won't be affected by changes in the internals of the parent class. ## Depend on, and import, the `SummarizedExperiment` package Add `SummarizedExperiment` to the Depends field of the DESCRIPTION file of the package and the `import(SummarizedExperiment)` directive to its NAMESPACE file. ## Define and export the `RangedSummarizedExperiment` subclass Define the subclass with something like: ```{r rseSubclass} setClass("MyRSESubclass", contains="RangedSummarizedExperiment", representation=representation( slot1="integer", slot2="function" ## ... maybe more ... ) ) ``` Export it by adding the `exportClasses(MyRSESubclass)` directive to the NAMESPACE file. ## Construct `MyRSESubclass` instances When calling `new()` for constructing a `MyRSESubclass` instance, specify only the MyRSESubclass-specific slots: `new("MyRSESubclass", rse, slot1=value1, slot2=value2)`, where `rse` is a `RangedSummarizedExperiment` object. Providing a `MyRSESubclass` constructor function (named as the class itself) is recommended. ## Define a validity method The validity method for `MyRSESubclass` only needs to take care of what's new in `MyRSESubclass` with respect to `RangedSummarizedExperiment`, that is, of the aspects of `MyRSESubclass` objects that are not already covered by the validity method for `RangedSummarizedExperiment` objects. This is because calling `validObject()` on a `MyRSESubclass` object automatically validates it as a `RangedSummarizedExperiment` object first and then calls the validity method for `MyRSESubclass` objects. In other words, validation works incrementally starting from the root of the class hierarchy and going in the parent-to-child direction. ## Use the `RangedSummarizedExperiment` accessors on `MyRSESubclass` objects Like any user of `RangedSummarizedExperiment` objects, the developer of `MyRSESubclass` should always use the `RangedSummarizedExperiment` accessors to access the `RangedSummarizedExperiment`-specific parts of his/her `MyRSESubclass` objects. ## Use `callNextMethod` In case some of the methods defined for `RangedSummarizedExperiment` objects need to be overwritten, the new methods should call `callNextMethod` internally. SummarizedExperiment/inst/doc/SummarizedExperiment.html0000644000175400017540000350373013175741302024570 0ustar00biocbuildbiocbuild SummarizedExperiment for Coordinating Experimental Assays, Samples, and Regions of Interest

Contents

1 Introduction

The SummarizedExperiment class is used to store rectangular matrices of experimental results, which are commonly produced by sequencing and microarray experiments. Each object stores observations of one or more samples, along with additional meta-data describing both the observations (features) and samples (phenotypes).

A key aspect of the SummarizedExperiment class is the coordination of the meta-data and assays when subsetting. For example, if you want to exclude a given sample you can do for both the meta-data and assay in one operation, which ensures the meta-data and observed data will remain in sync. Improperly accounting for meta and observational data has resulted in a number of incorrect results and retractions so this is a very desirable property.

SummarizedExperiment is in many ways similar to the historical ExpressionSet, the main distinction being that SummarizedExperiment is more flexible in it’s row information, allowing both GRanges based as well as those described by arbitrary DataFrames. This makes it ideally suited to a variety of experiments, particularly sequencing based experiments such as RNA-Seq and ChIp-Seq.

2 Anatomy of a SummarizedExperiment

The SummarizedExperiment package contains two classes: SummarizedExperiment and RangedSummarizedExperiment.

SummarizedExperiment is a matrix-like container where rows represent features of interest (e.g. genes, transcripts, exons, etc.) and columns represent samples. The objects contain one or more assays, each represented by a matrix-like object of numeric or other mode. The rows of a SummarizedExperiment object represent features of interest. Information about these features is stored in a DataFrame object, accessible using the function rowData(). Each row of the DataFrame provides information on the feature in the corresponding row of the SummarizedExperiment object. Columns of the DataFrame represent different attributes of the features of interest, e.g., gene or transcript IDs, etc.

RangedSummarizedExperiment is the child of the SummarizedExperiment class which means that all the methods on SummarizedExperiment also work on a RangedSummarizedExperiment.

The fundamental difference between the two classes is that the rows of a RangedSummarizedExperiment object represent genomic ranges of interest instead of a DataFrame of features. The RangedSummarizedExperiment ranges are described by a GRanges or a GRangesList object, accessible using the rowRanges() function.

The following graphic displays the class geometry and highlights the vertical (column) and horizontal (row) relationships.

Summarized Experiment

Summarized Experiment

2.1 Assays

The airway package contains an example dataset from an RNA-Seq experiment of read counts per gene for airway smooth muscles. These data are stored in a RangedSummarizedExperiment object which contains 8 different experimental and assays 64,102 gene transcripts.

library(SummarizedExperiment)
data(airway, package="airway")
se <- airway
se
## class: RangedSummarizedExperiment 
## dim: 64102 8 
## metadata(1): ''
## assays(1): counts
## rownames(64102): ENSG00000000003 ENSG00000000005 ... LRG_98 LRG_99
## rowData names(0):
## colnames(8): SRR1039508 SRR1039509 ... SRR1039520 SRR1039521
## colData names(9): SampleName cell ... Sample BioSample

To retrieve the experiment data from a SummarizedExperiment object one can use the assays() accessor. An object can have multiple assay datasets each of which can be accessed using the $ operator. The airway dataset contains only one assay (counts). Here each row represents a gene transcript and each column one of the samples.

assays(se)$counts
SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516 SRR1039517 SRR1039520 SRR1039521
ENSG00000000003 679 448 873 408 1138 1047 770 572
ENSG00000000005 0 0 0 0 0 0 0 0
ENSG00000000419 467 515 621 365 587 799 417 508
ENSG00000000457 260 211 263 164 245 331 233 229
ENSG00000000460 60 55 40 35 78 63 76 60
ENSG00000000938 0 0 2 0 1 0 0 0
ENSG00000000971 3251 3679 6177 4252 6721 11027 5176 7995
ENSG00000001036 1433 1062 1733 881 1424 1439 1359 1109
ENSG00000001084 519 380 595 493 820 714 696 704
ENSG00000001167 394 236 464 175 658 584 360 269

2.2 ‘Row’ (regions-of-interest) data

The rowRanges() accessor is used to view the range information for a RangedSummarizedExperiment. (Note if this were the parent SummarizedExperiment class we’d use rowData()). The data are stored in a GRangesList object, where each list element corresponds to one gene transcript and the ranges in each GRanges correspond to the exons in the transcript.

rowRanges(se)
## GRangesList object of length 64102:
## $ENSG00000000003 
## GRanges object with 17 ranges and 2 metadata columns:
##        seqnames               ranges strand |   exon_id       exon_name
##           <Rle>            <IRanges>  <Rle> | <integer>     <character>
##    [1]        X [99883667, 99884983]      - |    667145 ENSE00001459322
##    [2]        X [99885756, 99885863]      - |    667146 ENSE00000868868
##    [3]        X [99887482, 99887565]      - |    667147 ENSE00000401072
##    [4]        X [99887538, 99887565]      - |    667148 ENSE00001849132
##    [5]        X [99888402, 99888536]      - |    667149 ENSE00003554016
##    ...      ...                  ...    ... .       ...             ...
##   [13]        X [99890555, 99890743]      - |    667156 ENSE00003512331
##   [14]        X [99891188, 99891686]      - |    667158 ENSE00001886883
##   [15]        X [99891605, 99891803]      - |    667159 ENSE00001855382
##   [16]        X [99891790, 99892101]      - |    667160 ENSE00001863395
##   [17]        X [99894942, 99894988]      - |    667161 ENSE00001828996
## 
## ...
## <64101 more elements>
## -------
## seqinfo: 722 sequences (1 circular) from an unspecified genome

2.3 ‘Column’ (sample) data

Sample meta-data describing the samples can be accessed using colData(), and is a DataFrame that can store any number of descriptive columns for each sample row.

colData(se)
## DataFrame with 8 rows and 9 columns
##            SampleName     cell      dex    albut        Run avgLength
##              <factor> <factor> <factor> <factor>   <factor> <integer>
## SRR1039508 GSM1275862   N61311    untrt    untrt SRR1039508       126
## SRR1039509 GSM1275863   N61311      trt    untrt SRR1039509       126
## SRR1039512 GSM1275866  N052611    untrt    untrt SRR1039512       126
## SRR1039513 GSM1275867  N052611      trt    untrt SRR1039513        87
## SRR1039516 GSM1275870  N080611    untrt    untrt SRR1039516       120
## SRR1039517 GSM1275871  N080611      trt    untrt SRR1039517       126
## SRR1039520 GSM1275874  N061011    untrt    untrt SRR1039520       101
## SRR1039521 GSM1275875  N061011      trt    untrt SRR1039521        98
##            Experiment    Sample    BioSample
##              <factor>  <factor>     <factor>
## SRR1039508  SRX384345 SRS508568 SAMN02422669
## SRR1039509  SRX384346 SRS508567 SAMN02422675
## SRR1039512  SRX384349 SRS508571 SAMN02422678
## SRR1039513  SRX384350 SRS508572 SAMN02422670
## SRR1039516  SRX384353 SRS508575 SAMN02422682
## SRR1039517  SRX384354 SRS508576 SAMN02422673
## SRR1039520  SRX384357 SRS508579 SAMN02422683
## SRR1039521  SRX384358 SRS508580 SAMN02422677

This sample metadata can be accessed using the $ accessor which makes it easy to subset the entire object by a given phenotype.

# subset for only those samples treated with dexamethasone
se[, se$dex == "trt"]
## class: RangedSummarizedExperiment 
## dim: 64102 4 
## metadata(1): ''
## assays(1): counts
## rownames(64102): ENSG00000000003 ENSG00000000005 ... LRG_98 LRG_99
## rowData names(0):
## colnames(4): SRR1039509 SRR1039513 SRR1039517 SRR1039521
## colData names(9): SampleName cell ... Sample BioSample

2.4 Experiment-wide metadata

Meta-data describing the experimental methods and publication references can be accessed using metadata().

metadata(se)
## [[1]]
## Experiment data
##   Experimenter name: Himes BE 
##   Laboratory: NA 
##   Contact information:  
##   Title: RNA-Seq transcriptome profiling identifies CRISPLD2 as a glucocorticoid responsive gene that modulates cytokine function in airway smooth muscle cells. 
##   URL: http://www.ncbi.nlm.nih.gov/pubmed/24926665 
##   PMIDs: 24926665 
## 
##   Abstract: A 226 word abstract is available. Use 'abstract' method.

Note that metadata() is just a simple list, so it is appropriate for any experiment wide metadata the user wishes to save, such as storing model formulas.

metadata(se)$formula <- counts ~ dex + albut

metadata(se)
## [[1]]
## Experiment data
##   Experimenter name: Himes BE 
##   Laboratory: NA 
##   Contact information:  
##   Title: RNA-Seq transcriptome profiling identifies CRISPLD2 as a glucocorticoid responsive gene that modulates cytokine function in airway smooth muscle cells. 
##   URL: http://www.ncbi.nlm.nih.gov/pubmed/24926665 
##   PMIDs: 24926665 
## 
##   Abstract: A 226 word abstract is available. Use 'abstract' method.
## 
## $formula
## counts ~ dex + albut

3 Constructing a SummarizedExperiment

Often, SummarizedExperiment or RangedSummarizedExperiment objects are returned by functions written by other packages. However it is possible to create them by hand with a call to the SummarizedExperiment() constructor.

Constructing a RangedSummarizedExperiment with a GRanges as the rowRanges argument:

nrows <- 200
ncols <- 6
counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows)
rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)),
                     IRanges(floor(runif(200, 1e5, 1e6)), width=100),
                     strand=sample(c("+", "-"), 200, TRUE),
                     feature_id=sprintf("ID%03d", 1:200))
colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3),
                     row.names=LETTERS[1:6])

SummarizedExperiment(assays=list(counts=counts),
                     rowRanges=rowRanges, colData=colData)
## class: RangedSummarizedExperiment 
## dim: 200 6 
## metadata(0):
## assays(1): counts
## rownames: NULL
## rowData names(1): feature_id
## colnames(6): A B ... E F
## colData names(1): Treatment

A SummarizedExperiment can be constructed with or without supplying a DataFrame for the rowData argument:

SummarizedExperiment(assays=list(counts=counts), colData=colData)
## class: SummarizedExperiment 
## dim: 200 6 
## metadata(0):
## assays(1): counts
## rownames: NULL
## rowData names(0):
## colnames(6): A B ... E F
## colData names(1): Treatment

4 Common operations on SummarizedExperiment

4.1 Subsetting

  • [ Performs two dimensional subsetting, just like subsetting a matrix or data frame.
# subset the first five transcripts and first three samples
se[1:5, 1:3]
## class: RangedSummarizedExperiment 
## dim: 5 3 
## metadata(2): '' formula
## assays(1): counts
## rownames(5): ENSG00000000003 ENSG00000000005 ENSG00000000419
##   ENSG00000000457 ENSG00000000460
## rowData names(0):
## colnames(3): SRR1039508 SRR1039509 SRR1039512
## colData names(9): SampleName cell ... Sample BioSample
  • $ operates on colData() columns, for easy sample extraction.
se[, se$cell == "N61311"]
## class: RangedSummarizedExperiment 
## dim: 64102 2 
## metadata(2): '' formula
## assays(1): counts
## rownames(64102): ENSG00000000003 ENSG00000000005 ... LRG_98 LRG_99
## rowData names(0):
## colnames(2): SRR1039508 SRR1039509
## colData names(9): SampleName cell ... Sample BioSample

4.2 Getters and setters

  • rowRanges() / (rowData()), colData(), metadata()
counts <- matrix(1:15, 5, 3, dimnames=list(LETTERS[1:5], LETTERS[1:3]))

dates <- SummarizedExperiment(assays=list(counts=counts),
                              rowData=DataFrame(month=month.name[1:5], day=1:5))

# Subset all January assays
dates[rowData(dates)$month == "January", ]
## class: SummarizedExperiment 
## dim: 1 3 
## metadata(0):
## assays(1): counts
## rownames(1): A
## rowData names(2): month day
## colnames(3): A B C
## colData names(0):
  • assay() versus assays() There are two accessor functions for extracting the assay data from a SummarizedExperiment object. assays() operates on the entire list of assay data as a whole, while assay() operates on only one assay at a time. assay(x, i) is simply a convenience function which is equivalent to assays(x)[[i]].
assays(se)
## List of length 1
## names(1): counts
assays(se)[[1]][1:5, 1:5]
##                 SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516
## ENSG00000000003        679        448        873        408       1138
## ENSG00000000005          0          0          0          0          0
## ENSG00000000419        467        515        621        365        587
## ENSG00000000457        260        211        263        164        245
## ENSG00000000460         60         55         40         35         78
# assay defaults to the first assay if no i is given
assay(se)[1:5, 1:5]
##                 SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516
## ENSG00000000003        679        448        873        408       1138
## ENSG00000000005          0          0          0          0          0
## ENSG00000000419        467        515        621        365        587
## ENSG00000000457        260        211        263        164        245
## ENSG00000000460         60         55         40         35         78
assay(se, 1)[1:5, 1:5]
##                 SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516
## ENSG00000000003        679        448        873        408       1138
## ENSG00000000005          0          0          0          0          0
## ENSG00000000419        467        515        621        365        587
## ENSG00000000457        260        211        263        164        245
## ENSG00000000460         60         55         40         35         78

4.3 Range-based operations

  • subsetByOverlaps() SummarizedExperiment objects support all of the findOverlaps() methods and associated functions. This includes subsetByOverlaps(), which makes it easy to subset a SummarizedExperiment object by an interval.
# Subset for only rows which are in the interval 100,000 to 110,000 of
# chromosome 1
roi <- GRanges(seqnames="1", ranges=100000:1100000)
subsetByOverlaps(se, roi)
## class: RangedSummarizedExperiment 
## dim: 74 8 
## metadata(2): '' formula
## assays(1): counts
## rownames(74): ENSG00000131591 ENSG00000177757 ... ENSG00000272512
##   ENSG00000273443
## rowData names(0):
## colnames(8): SRR1039508 SRR1039509 ... SRR1039520 SRR1039521
## colData names(9): SampleName cell ... Sample BioSample

5 Advanced: Extending RangedSummarizedExperiment

For representing and manipulating data in their own package, Bioconductor developers are encouraged to re-use existing classes defined in other packages like the RangedSummarizedExperiment or GRanges containers defined in the SummarizedExperiment or GenomicRanges infrastructure packages, respectively. Many Bioconductor packages are designed around these basic containers, that is, they define functions that take and/or return a RangedSummarizedExperiment or GRanges object. For example the csaw package defines various functions that operate on RangedSummarizedExperiment objects, which are used to represent the number of ChIP-seq reads from each BAM file overlapping pre-specified regions.

However, sometimes re-using the RangedSummarizedExperiment class as-is does not satisfy the needs of the package and the developer makes the choice to extend the class in order to accomodate the special needs of the package and/or the specificities of the data that it deals with. For example the DESeq2 package defines the DESeqDataSet class which extends RangedSummarizedExperiment to add the design and dispersionFunction slots to it.

The following subsections describe in a nutshell how the developer would typically proceed for extending RangedSummarizedExperiment in his/her own package. Some familiarity with the S4 class system is required. Readers not familiar with the S4 class system are encouraged to consult the vignette A quick overview of the S4 class system located in the S4Vectors package for the basics of implementing and extending S4 classes.

The approach described below allows the developer to extend RangedSummarizedExperiment it in a way that remains agnostic of its internals. Keeping this separation between the responsibilities of the owners of the parent and child classes facilitate maintenance in the long run. In particular, the implementation of the child class won’t be affected by changes in the internals of the parent class.

5.1 Depend on, and import, the SummarizedExperiment package

Add SummarizedExperiment to the Depends field of the DESCRIPTION file of the package and the import(SummarizedExperiment) directive to its NAMESPACE file.

5.2 Define and export the RangedSummarizedExperiment subclass

Define the subclass with something like:

setClass("MyRSESubclass",
    contains="RangedSummarizedExperiment",
    representation=representation(
        slot1="integer",
        slot2="function"
        ## ... maybe more ...
    )
)

Export it by adding the exportClasses(MyRSESubclass) directive to the NAMESPACE file.

5.3 Construct MyRSESubclass instances

When calling new() for constructing a MyRSESubclass instance, specify only the MyRSESubclass-specific slots: new("MyRSESubclass", rse, slot1=value1, slot2=value2), where rse is a RangedSummarizedExperiment object.

Providing a MyRSESubclass constructor function (named as the class itself) is recommended.

5.4 Define a validity method

The validity method for MyRSESubclass only needs to take care of what’s new in MyRSESubclass with respect to RangedSummarizedExperiment, that is, of the aspects of MyRSESubclass objects that are not already covered by the validity method for RangedSummarizedExperiment objects. This is because calling validObject() on a MyRSESubclass object automatically validates it as a RangedSummarizedExperiment object first and then calls the validity method for MyRSESubclass objects. In other words, validation works incrementally starting from the root of the class hierarchy and going in the parent-to-child direction.

5.5 Use the RangedSummarizedExperiment accessors on MyRSESubclass objects

Like any user of RangedSummarizedExperiment objects, the developer of MyRSESubclass should always use the RangedSummarizedExperiment accessors to access the RangedSummarizedExperiment-specific parts of his/her MyRSESubclass objects.

5.6 Use callNextMethod

In case some of the methods defined for RangedSummarizedExperiment objects need to be overwritten, the new methods should call callNextMethod internally.

SummarizedExperiment/inst/extdata/0000755000175400017540000000000013175715010020370 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/extdata/kallisto/0000755000175400017540000000000013175715010022212 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/extdata/kallisto/abundance.h50000644000175400017540000411240213175715010024374 0ustar00biocbuildbiocbuildHDF  `TREE HEAPX0auxbootstrapest_counts(HhTREE HHEAPx+kSNOD Hh(Pp pAPp TREE` PP %0$Hh i0yY #  - @, P pn 7U@ HEAP(8  deflate@ 4xUXSNOD@.`Xj0%pp H08TREE pxKa``ex3313b%%xb``, x=[! Pr7P ƙFZ/ON̪bym?5ss`ҽ#]|fe~@}1kAD&mHo3b#x OMQ*S04P042022S0204eT= deflate4xU`TREE|  deflate&4xUXTREE m deflate0m4xU`TREEdm deflate@94xU`TREE!* *  ?@4 4 deflateB* 4xUPTREEkJ* xy UQPy,yh0f(Sf<d(4JEѠHI"el u/{>y}e|Z׸Oi,ntfuo91+*ߋRdzms~p;.~$+Gl޽]דWEg5'R" ^riR%`&a n㤃_ Yh`M^7&Gl>qIu~޵ 6\/mꐦ*qFJci4/,@+DVFaPmmg^~ii5U<Qi@9FOcrP{fGD.P~Ho}r6׹Jw 77:v0@oC/.q1gJKF}^͡e Cyܖǭ[9"\EIJCfVu o|~kf@DW[Y=l8wwDZ΢!"QdRkT{Sc46qA}5D>crxIg?*vBѧءuNz3~(&ӟ7 Eȣ/ev 904pz}hc[:9@8>AI/hg u]A9ac|/J΁K;TKZ~GyAҹ0Z~#*WއW;hF=|C_g} j]%Om9^J$kH.#Ӭmvę>$/a knG>'p~70UN'E&呍 z7>BLqc=dž㡸(P\> =ջ)mp(^"UUV{`!* xYh@E$76[c3 M*/'_.T7B.;kv&d\U Fsy%fO"CD\k6OaCl3߁IY?dd.s$Aœ*rT_7,8vv$@ave~vomwyG +GJ2"؛Hыv6[WLn'JȣU϶n^ l 8*K݇>NOp 9{h>1TŠxSPlv#摑 T_Ξir]L!H\lk0U\4SƀR|KlS~s` z,br- <$ sEu0Z8k:s&ޥPE79/S~ %LqǦ[4iPCAۏD`o@hV4}C_|aEr(M=Q8M@c(hׄ5r2O"O[X>}XܬVgnrlz6sff+sx~豓ʴ Y>D /7'$Q0)'>`OUm"Io"mDjX5.4?pM: ^\-9Gzc^>Xnߡ^i v;3'F+ۃdҡWˆM5I%rP18奣Mh N1N ĖWsf7(];L/0۩/ǘ&ܥ4l>oZ1 rI&@84Q*{t%cXL V14%^/\-RR<)DK)Jkd8~574yp]>2ndI#ݿw>IF՚Vz<,so|Jԇ(EBelP^$*p$y53J[?k6Ί_~'D(WꔤgpqŚT΀8pU(uo "Jܜa͸1aM~`E},<Du?k<٭lI褞S:|h܆tn=ON)H ۾ r^6n"`w==[G1M O}e̋U8пܧx(ubOs!Bb''Ti8>8Ii ӏ-1v?۟gY1 cisݤq-x}67DEvx -;{+eC*Ad@4d{FH ,ґ w朿|"J2;UfL0ZB[eYb%ͷOB3vܖ\yُ7UB?娄 xJGzC 'E!@dpw6 ,o.}I2SsJtE- ۤ)1ڻ!XgtȦ.m'o{IJsW#$c Vi["* ^9HzGHoKaMRǩf IZ!+JĵP]{e~+)g%@gՌj:,d  2R|2dEҿCrq,ڟd$iw%(`von 77TWc T>nK=WxB|*V*DUR=du'\rb;2Ui10h6@H=9.*4?u|EYtR~?˕~)NZHtsG=70<rzcU}g!˗P_Ft- ݪQ:x}>$E;9̘?Vfb%k'?<2V&+imLCm/f¾frD|}_ĵ8Wi30,贂>+I<- D4_Oo֋I ^'k &l7CJ;&x[J8}7hޗB.o4v|AE' BuT<L4nON;'o+$ (7Bg&{v ¢uހ^gztd%8$Er /@`q7Qj<@-RE_N@u8}eǾTBj\q:$3h7˗z*T}q46ġiXKsB=NN,"1=| E]Ht71,q1 =x1t*:,*-y(dfd1Ǝ z٥p!^{USz~##l`աJJ_5gd!`|!4Sg X2H=۩UYڙ;Q^5sXthLyžhG<_P&yp%R6 ۦk ENTfj±yV|K ": DoB ,/{nMPHؐ j:&uC!DZfг dxZk"@D{q_w_,g,@MRF[ h~x~!Sh*U|JX/r\\b/UB!LRś-7(my}G(J%4Ӣ`]XB|PLՐX J>l˱Ӻx&C!~Gs_j#u.Hd46!"%׾T Om=cxP xVtv TQpp[;,;M*5so868gǃ%D TnYX6Lo_8~GI `,P#=8N{us6BaK;]Pˑ 6V%mnJ.A^K։0.N{ pёG(XVHIYTA>ӥ.(764W.)u8!JXU< ;5"Qb??EKfխ/HӦ6$gC}5` <‹~2J̛?5㠼`āgŋrfB &ÚBZ6S"kUn&o%CkWa!bC~.PUlpߧEGc JϰLDUBSIZlT0;d"qM4O燈me uW:s DwMxsk©wips}W'W,6ghlq[>wb `eCU0ގMrvS{'G,+hLI-۬!AfUf=XK̇X)1= =%֮PLy)`o¬2ڄk(*Xib ip/9 F 6OmUZ O:ݣ9W]WA# xy0E!Xe^V;v$yqwmDKװJS05%:|!o.Ue#3g `gqKjy>~MB7D5N>g˯ih:[dh/ ^h<=ߎO /!M|x$ ĦO-*3 ?Cc 6%p?3[T5D;v 5 ë(y(\lh9.|堍`UB}IeUv@# a5 vIp3GAZ 5 \P:KANstƝCb[ {Pb펋O:$ZE_MT\Npt‘)۔/0"Ѹ=dM4 {rc5^i08~ُTymV]k Xg(JIxnHyA2.ǒ|K4 iYё,7o9ڡ~H?W ӺI_" C?%4-_]P ;sxM٨n}7.l} (}?y(]+Ib[Q"" R>g]~ q Į$GxJ= b;;(vrX+[ҷ/"=AЧUk$ @oY+Uv.r}-'L!z^i?g~TF^ 4-Uw,qӕфCtoցJ\/Kz$=moZ~&`8Q4us}* Tؔ:E ~~E#7`O/˄o>:QGy1d~` E8n%b*fyVSc6XΦSw[}H4>QHdNlO{3ַxICN?;W^@cIW߬uNSYԾ yG>VG:lS߷v'euך-ɓ=|x6N(!JNN~ [cYWdiꂦ`}ubɱg]4ik1bu؜q`궺L_UD׆. _i/;Bj*lRwСGւ́UҭEOIL7*6i.: JbxS>Lf 33âlp}#5;R#/hø$/w:TOlj5M&{6x SmZ9 <9L\aqԴOa&WD2EFUYevs}?Ui {z+<}Q[KUÄ+f_w̆,Jˀo=X%pJ}僯 P̢_yW*sL]M0'}+A_ ʌzSd\mJDf.Fb7E-2GvGb\$kva͙#48fG6EwQqprqTgu0rqk#Y8^stN?yAΗVA`_ŠݒN?;I9WۉO~&9zoF({(3V:=d?";d؇@H!5Fn~%/t UmAY g QW.| 7-#)݂Sc6ɫ0 n׭a;ָ0/g|]|\%2=[em^ _ck\mMcϪ~ͬiHFk,Po j|k}"o%{U6, ru4iw.* ;U~_{>l_d`z9;KkXgG=;^C~-4Q+k˃sz\~# &2Ÿ=0*CAVnΩgd&anפC8gW7cfEڳ.A3zr%Qk3^=yEgIDdKpZnvE ̔|"wEn'gnC+.ٞXZ =ܰ={Ptx2# +t}Щo\U,{AR [kZPO-tQ蠠?[_+ў?T'?#Dž@>L'ͥx[۲CK6D^rK6[GخU?l4mKen>m[ZH&$Qa7go/99#_\:yf_L$G?qdLBD^'-w S:u΢ubx Ŵžʔ,GCIso=ԿIlu0=b̞\$∹g݂XAr͉kCf5d@Ux {/6'ȃ3I$'Q_w2>;K76IρnfR:(~sv dg,G(vS6#} ḓ<:C\WϝRX3D.&VoT4L9-&zOü~)BTgjeVv?bp̞P&`B?~F6g_X >Lmϩږi=j2%MfQ _3_zI.20YH^#Wnoop#3|NLHW8: `Q?yژe0GJ;lT؇-t |swڰFL7[\inNsqFSŻvGhALsiwwDeRB9睷GiI6auճza|c*s `!U,>k^Rw"'%)6giwsNiA0JSQb!ag6ҳvH?/Wߍ0iw>$>EdKkAPf2%sQWR?x4_z}"kž[5uߑ]&j;wzNﴴFKC+eQ"]ZW躴%Bץ i[' ʗ*Ao߰;dHe6J|"ǻ]/g߰g,7ku7M8 w HiR(sa5{{XCX3G HTYۃ\QmE~{ Ȱ~&?*9߷4;][u_<>za*] y3noa:t,z;Fv^v_z3SO{x|`Ev'Şʬ/!9 % Ae"9 P6u0%qW䎤<9$2 ]pҤd=ӊ(E!XƷ# ^X0ix(8_u%-ѿ\ J/+5w2Ts˴ =ޔ֭% y ]\2q^fIE TfFxn7N8#ήr <Hؽq-slTB]-]‡Y2Z왜l/G+E+tՂS+kU܂'ךTVF[-_<5HZ٬g:)Sll#N?jPwZ1Ve 5gmԪ,;y*qʽCwnÄ:)McQ DFjݙBySOq}&2B/mWp(icSs(EV93?{g~AI#=~0I1w9~esϋo4N>mK=U֭W\32/˔}^  D#S[ie$5s!YMӄ; oׇ߶Ơ>n~8ևh +O(-Ӎ#Ї+$lJAXT]Y#sR@A }@>^FP$1}䵅jU+Q>P$h<P8ؖDd`'Y;LneDd'";+\maȁX l3RL}vg {z;N}tb eL:mG:ͧwOշoƀ`.&RdJL PekJXKJLxcoobAcu;yjIھpzAV6bٹ9B~)_ +m_\gY% lBݙ,Hu2OTE(CybMQrRHG1z.)\ʅP5)}(aU+ JUU`H%]K`tj8ʼʓHYF6a#X!)FbY]֬.knR6A+C4=qڣCT"n!G[@ܸX{H3 &&UJV5^ZI>+ >CH #`𧌚WM~*:Èyӱg yj8O*IYI\dt}$^ rG8@pXAJanq'S<ۏIlz3KZXkK%|r \WFpT̡Ebv;'>I[ttu?z9Xz.߾ :@LI}s.ՠr׻o9dYzdV/tBO!b ip|s@KP%+NZ;#SI.g1 lVwPE:aP^rWY]VPR) ftE8DD&W#$]x iIwE^L65_D?L. G$1ugۃC4{8DLp#›Ύp*. R'=уC3>;&eB9.Ɨء5PgG +~X M8 )ט7R=1i)3[Q10NU\.Dw~n:MzО'xʉ7(,萤y"9l{a0+WQ8߃t'-O7]nͧ?\7W'* 􆌍Nr#PL"K(a'L$ ,)'.v Z+YfY,mr9šwT'YNթW `⪩UI(X]˜jѳ&DQ2ͬ[.@07c!hYnfz2c@eLGp c)K@<̅1^\eU2__#2G/^ 2/Tp(dvT*M6&uV0ZjKP.7 */rHdicF{VR2_|! *H_|!݅ 1x介b8ɺxWH/6heb/sٝ\v;ݹew.sٝ\8 $@J4@8)qi^06 M?4h\j@h$%JFz#wo7'Rj7dZ#Cvp%Z &[& (u.V )*;=9&P"U~M*6rLSL;tǃx4I=?v4b4!!uÖH [$*$M'9;j,O~UU.;J@ݖ̗nfd淴vXo[z{>f;yڧ!q>XC:}RZ>^lFI^ 9t-"[ttT 頾:0=x@WV@{(}ҍ b% `EC[zޞ 0bHˍH 0M2Y (pd'U~0AXr9?10ʙ~Eg$SYtep'ԜIVvn aXnva-}aoS.U#ř(ҋ\,4UDK[HoEӟ#FC`׀ty+k}/4g"H|+aQHf+ 5:e HUlV?s v* *  ?@4 4 deflate* 4xUPTREEÚ* x{M"\FE*w:n&K&mC5$$nyHBR)Q5rib͸&mq`GFg>ge7׳k=>#?69g'l I#χVoLqCtfbQNgkF']r(d KxOe "#ʟEpn8pztM+|sPnXA?4,v]fQU΂izyt^Nw^_Y9eǾg;?At)`Oc<,q.pF1# <x?9Gg'kP>e`B76Z>x 4I O~;ԭZo-5++㾁y&9/'CmRpWI_+ d=jNhϝ qrCecKos1N7wuIk7E<M[+,wN7ЇZ]>_{!z}Sk?c^_)bCkq|xwB_<%pJ|K0w*K벝׉2Kw6kȱf+zԣ׬_4#r)`>2xe'2nGDWpR|yqLt4] sL8'9ӛ+1O酞9c~+v{2c`p0Q~ϛDCb)dGbBTo5,Wu/u)Yyzr~+퍍|O\Ǜ)/S_sUzQs6:krʯ\}O hk<)&p\W{R>M>*ro89[ b=q"#};t` 0G;rĘxHxrƟ{*9gD1 7l(="yӇ ʁ=?b5B=wut 3^Ӯ%B֫aht޴a {R,=K ?|+/bEN27Fyd2ANZq}_6⢱ecߖ׆h^O(PVA=KFH6zg;; z"X|Bc M'ĸw{Ƹxu?:Wku?I9u'E]r _h;5`Y~Wi7aD<RTZ򤼙b&@ʹzRLp, 1QOW*AA-|*5|(4Uƞsw_\o:oBN};76F1r8η ofp [5ʚa; >vOyF}||W hIP.$Eu*$֑JNe{?fHqK!o`0o$QV"+h@?Zhg%{&8~p0mԧqC퓐[r_:ݑz1,hZ ~/['kex[]i߶]l3NoK7s~@{/|?A[7jA{g)۝99stY vʃ/Zwlcլ1iJ&A81z[>T}= 'Ok{t:u+ 4_4&Z/T/wf#]%q04wWk@9q\^>cqi+Σ"@UTG=e7d4[#3w?418ޥ%?ݕg/ F"yCthτ [9Aiط7__ݛ.y`+4B;s3[1s{O^A=8 PLOu,x(/3K2!"ޟNEgy{qSOԟ{~fd="v|hA9]Eۧƃ7Bk2OB>sjw#E?|\]Iu]u15?"qE/NK=5o<|-䙢p)Ԁ~J5)'`ؗ29y5GDaSNhW9*E#%[5ϩQ~ 9htT$pTv}M7F>"M9Y̥_j޷ThRG{iy 0_zQOQ@yzͿ@/V,ӎj=6E3^}D{h=o_p~産bF!ޭw3ׅY;5\ ΠFїym{7s0Xgcwi)33=E+9oiFQYCGgKz[!$eϳ_/f'~7"W59!-_ޒ@ _G|Egs繊St~A; >~^9s 'M%U^zļ7}*N:ꆌ;W :9SѯHd5E.핷(>d}ZbsaWɥtFiS r)וtt/ ?0FȌA߻^LǾ7wdUwK~@yX)o21l'Dgv9:WN$+n(_þ?iݵP!9q̦1qFy{0*ELt7P?4s[cYζd}6~n_+it&}PEۧIzqH _1/# ιX<va-"fwȇ[WG`>'޶>NM#Gs[$q]2NW323t6mܭ7r)帏8k_8 qWssԗS92uXz;rٔp]uz@K{> 6N&D(@5ϲ/>[& ;)ܧ}=62>=y ڽcP*~l6Uy˘Kp=^LmFM4Z؎g(?otEs4C]gүhGyY9=h40_g8eQqϿQNNYʣ:lgDc: `M3ze_\3*N^1N~:}H1'_?O>ory9CrYOX<;8k#~&Ϋ/ߞN;a1N*/P_{ҙ=*Nk;YMp>\E,P~QNMg^(dSOqbyw'cyKQ>֭gǴ{?/9;Ӽ)FBGv#ꕊ)w?~S r֫!wk z~D89F_St1i?ʫ*=)3nWLwFkqb!Dۂ.wb.h:o*(ܷBl.?/D +XSGš`=c9*A+0^T7r}9X|'+Ўc޼E.e=͓ݛtߧQem]eIσا"|*>YGo?qn8<&:fЇ>J5s.?m\/ o_xMuZ޿=#ez_F5ߕ, s8@af!E963o 7Ux E-h Hlc؇nmr>)3y9{9QaSo^Jyz`qg̿޵cӸoЅXwbƗ65ϙsl޴Sq?z m9&wc|QIth|Nh%I?˯]^aŏ;_騿CReϚ~P?&1 ZUޝ5㰃 UPyIXc *XT 9bĿ/#~] t3>)qST/d|ZC;wT~S2:ԃ'My= +9ףzcNUE0p1!ʑ12Ous!fMqqM1>E~߈LSSBQ#D8 `"4lM2cp2sq/H3w]dcLD:A}hx9Bi0>ٞwm3dUlo&p >!j>EOpN@ͬ"syfpCE=95p y1HaGbʥD0me`u,`nATQr>T9k+Cخp!cٮY9󣇞k,$5-s3e`{r}˼oyN<F&e.rH9N.Ϛ[ʳ/Wa{[װ|2Y$t^/X<O. !]n`Jι^!?3Ko\ʼH"OlGoDR*()Ÿ)}|$~lیi80B9ø~!%3vd~wȇl%Te[zˌ_y"|%r '҂ X" _D<=p,UOD'̸t%.? [<ogӀxC\b2t+1 W^_8hq&~mO`.5[ZTσe!emR?{ػ&)=&cOMZit2; -+|/R!Gɲ'8X] J~F>Npm3jIZJt oWKHayH-5бƛlķԪQb-Ԑ%ɉSE%[G]7m rf,p`pK<7}C b?at[+{V17 _Ĉ<LJЏ=g,@z;!hd< 9Xd*E{%s8fc !%{&Db- lR.Qo9q]r#9%/?jT̐&xgi%gY2FfR%(wsjg&MWoX ~ㆉ{ﺏ& TrjJ.$ߋ0} sHt}'6`=AM C^_% Vo3;]Pv9 ,-F)'*m~oPKle zQ&N1oob9~"C7|]?\+ѳ 6w5a\+nfof?P$zI٠{ z=@Ȩ26[HH7=e6:y0,j( Ҋh [.t=F_25K#\-o%}}m#Jk~K-;Gl>UR!sq:^g]>]9)D\QQS9aBK !!y |Hvp''K]ߣ}C ۊ'-I_ԒA ko {ej}o@"Y-И0r\JU?Ep|'{_#FsЌBhXwt_Իmt_DC:)6ŭg_ UˋL9 OɫJYaoC3r1ة-$W'/ХWR&Ɉ[U*`g Nsh|2=e';Z`{d4j?d8:Ԑia͞)^b/]\aI) +i$dGȝްrmd̙XnWĝ ߔmzFc|\N]xWZhOcb\ko}}껮{Xט[u]uM\;JN &G?k-'w>j4X7SX/5(bS9US%/*SЩ>u )>f\m?< bmyb05 hߕ˒1|^ #kДԺJ9PZGa(w:]Ln^g(s\VNy"}W. v;hYǰ fynx.3k6w޾LCjz<@{ԯ]t)!}yP{k~Ԧo줟dv{F[}G/}a5KpC4YBL.%ZBN>f]D]7ߟE $2,7-o\sM|YCOJ|DŽ[¬wHJMo ߴ?yN9|,gf">s`\Ͱ";$|qC]oXfC%xB >@LWG _xZou]QMd vG](TI?L=!6'd1V$/VQgۤS.^ع1&M_Ӆܞ,N&$&SхWy~ޒ=ސsnkoc#NoŞ'y;;sۃO%_Z-ɴ _si¼H]C{6hW|l]MKTإ8Uz}:9Y 0=W5C^=QQq޵:Kͩ (MHZֹ0N9A X%^]ХoS 7ޥ!_P~/dTR¡dRҲ'; m)n;1W4.K]zنԂ= JG+)% YnN^?#/ Obg37cc8MI;zMAӻe܆eB"Ϛv75/~>$JqҔG}@\u$W7tbΡ35kȉ?>0bԫɺS&޿djpaem}˯?q3ͬnA/FjX$[i:1ja$ώU ELOs3twtM_g6&@Kvt'fyU"V2h>b%y{8D,en5(~lW9ѽHz[WN76BjA?ZަM("cϜGԨؖ6e#m6eRNzPs0f0|Azjh\J̵ɋKc&6I!VРcI3TgUڏc q5ɬщTn4d/hxabrr\HL':dfOCgleCI >4VQ$ӋWXro%5Y aAשs35 Jc$l4N8¯)wOkRo0\!ё :u_!aM~47l80~!' 2t!&YD,)]$Ԥ?B(&F89a ·ɃjPܕ/.Enw$o sME~ýħfv IJrL^iKk Д_lO\>I ޲ed`>3w3ZO thIwObZ{?ˬߕYҙ]s7(y]kHd\qji1E+ֱ|o}~~/[s\NW;+ ,cɀj'o3VX3]fɫ^JpȨNzpM? XKn9mAؒ51 : !ïZ2%Y_~bRq$c#4ۈ.WMa:z׋)ѿ;X'@4 bݝ:blSqR>ru7VfPGUpEV7AL7'?2~Ww u[Sq!{CWfU:3δR&OZy$P9Xb# %b/qm5Ǜ5&Ը .nB*8_+b| ER|z]&5tC$}zA&_2JA cDNz9N DvTb@ݸ(&^K5غCP[`ԍ>=ntkc g0<܏OfNӃsz!Io0,UhTN@sB'I*_"P=^qWze=}7AYSƔ$vu ~Jo2 0hݙ$vjs4xxb(' ׅ?[m _Bh Gn,Ojn3oAY}ࡼ`_f;ZŹZTewQu7Jzː۵^PUȩ̹T?gH)g]& r,h1xMe]O]#OX Szf}A(?,~:'*jY.m_rL$K= PA:h%_4~euoek4jhxwYk|wdG8,. Фrs;94¹ ξ~P]$-vݖ!zKwlw?|e3_=r?f6 v`_qFy@TEcɦ(v3X"*wlRx9sD쑵G ^e7 @8g'z{ÏM*w~#~#x9b%;[ˑTA"{zvփxΜÕq:.9s z7 ֊|v^3^o#!RmS  -6H%^Yqo&q(7~Q@ " Wė %޺B~W+ՅQgI#;Kl4U[Wi/'\`hEtF}7&|| ĶpIς+v{H;ʛٻsr5k:}uHR{5 wɁ)Wؾ1eg;#qz-ǤKį-`as~znZw68'К\+m@|+d*ݪC,c2"NUimkzo{.(_~qG@{JI\̙/hc*dub_vYSB3]j u7 Y|2޹^G9(6H2$? C3 'lq6pmb0lyq';?nS.Ȟ g?鞦bsw:JbC^^!x D:CA[ fbr{vٟhrkF_v>CI}S#o_қ_Qü$erjMl{J Ȯ\j,w,z;a,7tQXj0x*+f781 q ў:@+mn sѸ}50z'Qbi!{ɃA!R޲Huvq ^8{^GQo DS_%Ҿ-dy7lR=J}\Ni536¯Zf>7t/۞i=Y.K5)u\τ뚉`_>; NvtC*G/ح gd8c$9.gvS:g,8cIz>Pd4 <¿)ŏǯg,]E IW' [d;]= ܡjvc}w!hdXڟt ϼt;A^̶/%qn'9Ph5sAijn(7y~F=΋DaRAmE-Yo~ʺ)YˉgSZ"}b`S|.p|hכa;X4gk( N͟*I'DE/p3RDhZ)`P75dOj;=jUD\Yv4gGbkwn_2o|X] XJ7Ok}-(I撄gg)BjA SYmϴ#I6^|T}lRf:|[ZvHU.5ܿ3@.{`f_˗L~U;Sx(v>Ծ8ŮE:Oikʝf,*ʥB6e]ӪT(U=Xm>x 3?O f5i"DT#C9讵r[9g36:A%⯣M ̷&!5K,3qFK|ls6Gyܰq}xȌ& 点/:uNʋu-P"MO4'<\Vrꥒ,gdED\M-V؈VZt)LyQDކ6b'v ,ƌ;g6I,nùL<3N (aGSh%_ D8 "\k/9~;,XrҪh54[:.>`a=v[.Vzy;LԾ3bh $Fi-y^GIZa"P5o9 ΞjpjP 05 (=qTY BJ+f[Ɵ?KyDDWӸ;^o HXtj-!?Y$J-j #T GO5kGȓ~_7 X^#lommN;QǑG1jfi RҶ}MW#/uZ{p;ͭ YPwlL[fFQ0nlJ ZU=Pb[G.f!};@P<Ʊ0RI{Y/d&O{8y!qyM :J(et"g rNxN,噆BΗG4q9"uo%OI1iZ# wZ 3>(󞊮 m۪)-[ޑo DZ݁>`Ud"!6ߺt>tUE,J9@e|aF*8y PVh4XB٣h Kfg w56PQw`Bլ]+ s"|e~(0{Χ:Dd)-54wsz&21i5PXb4/1>xegX.ii'-okLk| bbf~{ Y-L}ZO[= ަޔHx`Gw76Y(A+ZR e89C5I:(^*`jPOs5PoZA_wu/b/N C_H?o@ĵ=/SQlwf^iy!ƦU/EGx&VO+A?>[NX_z=um|k5Ȳtf''h{=tlTUMeU3#FD,2ȍYȹf \p$uw%QEi+R Q>lP>w(6Ap8/|o½yBxVh=0Ԙ`Dz$9PTC"Yjkbkg 1/h+K_?&׽# $B''\֬Vqh҄[ד[mD{3;P|cd~p^^^C Tqk C#P ^_y}]ʢQaDžH|v=8;(I!J`R>ϱ*8a K'd=: 1ZQ ڲblAILvz9@^Г[ 5+<˙;Kq$__]r`62{(ߓL.f*1'2(" 1偃x13.pxxD [nV53qcy@$ZL qY EQŹA<r΋G︀O9W'c_DzNkcPDxzџG8i/[OO-)_M:sEAd"ƄqNR&@;\jr lӖtPU+nZ #c%/$–w<=|(jwyl툇ÛS5aU{|9P-\fd1_V,u΍U[Qb YIڊJDvɅʄ|(E_]ߋ(5 \}W̦!/c͢&KJԄu3׻`oA H|qzv`=5kM[=&d=Gț< Uq҅yy8lXr^s`>pxGekr E&N'wKO~U@qM 0g^r/= O ^Rq˗ xZw=CtR,d$}?[>.8?W^ïg(5 n;s9o?/`Zg>4J!R?(gҺCaMϤjGY 2pjev~Fh‹<;;\2cM&Y$a&)''GTY&<`3s)v,U&7y?LnH. `Y~T}qOc2F|EV DiZdSf5k.W:=(C&eCP:ߛL˯jrN?Mv c*~/dɦ`C]E7e*fB7iko ^O-# ;OX O{[sq{8& c ]p-写4aY+Y 1Vtm (+W{:BnҎ =˸냛'LL|9vK?l(FDۺt, ^&4gkS92$>lvҏ}G6B Źp.x?~JLI^#ZXVn&`yF׻v4p,{%H@'5u7 $uJ/ն,'8URV|q ޡZG$q'FI| XL2U|\Y¢[~ŏK^Oon02ˌv/.+)wgpUXyc}wYn4mD/v(>xq^ep$GvբnI^ePˆTa>$1McLfq,hQ]i~Wy#sPTeJާY6i|NX;~˷z'.X5l,Xdk1YbH c{u!vHRdrI]4?mwz/?~kҦ?ll&}T5 ¾Kx$iww[) H/EhéX~Ҍqt^w_zTn+?e`fhl,+u{o.n#+O`)f׹qkRvsb)-t3'Y aF'KxB +Æl #]txHX7`dW`.-+v1ChXwͮK9'ur+58?=+b-6籔i!Ơd }zrq/Xc5K}H_[> /@bzqWsn\Vj= zc:y]+(@DgV6!Z'^{y^'4H, 2H?mm\Sh X"7:3 @\fIQ9s<}Mʕi%H?f=i3*=aY[ qr݂\=Fn9(o ݪ5Gߥ跗[SKw=S6-̀Z^uju?8o7/Iw ~go@W ?K3'EpwI+Fhx)^-jzKw{:l ~2qHsNd*)}qͧmdFzC2Zi]Ty1 eJ ܬ޼]e/]XḌ3딖(???-=-P™x}?ddYe4ܤ-={{]S(o > ˌ26h>n:ԭn,$0St+`p6zZ%:$$w+;+k ^Q^j\~3F{.A >wSz{xL!q}{FIHvd;HM==N^cDGL?"%1@c{~-<+ʠL /N֍>F 2BlF(Q8AЩvRuh# \:Ǖrryz-^AI^>1O ^Ⱥ!" C!3ZBI> 3x /CN4,1(KUޱ(WY\+4=F/k,ja _wIR͛ν|v.͸1(VS.QSZq@m= 2f%n3ԾPjZʘ>4RrNƲs$!|#BO;ذAE= HH[1@Cgr2U%& ;zB0C?sXV#>3nl%QfP-6׭u\?f`DǩIɞnOaO<φ>]b |I`[loE~~I둵uIg3_cxؗK G##lΨXl ay$E2 ΫGb?@Wh) )t'&ܳMM0a>x2}{/ Z)7-.qh^B pre,U[GA3 -47K8FgKCB@rrd4%sO&Օۮ+yݢIuLӺ(r67*BG_ۼ~"Gh3 6&IxKh=; u%͒#@28bϸl. vC"Q)\U=_E.doI0W-7iUN8εϴ;}'W`Q. $Uĥqa â%S'i&Ytj<ߨ |{ࠖlY|x.잟*Rٯd@b|^?JJٔ؋oHjDJN`_&  m/ޮMA >fؕ!MW<rjEFĵWKe_MU(<FFDoO_(\8fEf鯲 c_UB՛T\P=n9䴏N3a='MY(t,JBtέJDS[֩XZ@wV<*ܢG*#{&ի/:Q^,ve i(>:wIJ(U`+;sKA(̇+ޞ^-RʶM_Z+d:{ g:7. *E8(mi1!idU\v J ͍q⸸W!kޯ/>~NQJ?1Kw[YUz-}8ͷ%{ڻIfhy8]îxh;`Ć3&4 o23yt45~oK)\#1/&ko|X t(s|Y@ݘ)eJ(r6Ec(v_XިIKSnH26e|mDа"q1L(D6Y޼(?]?[& uSȳ8-g E.( n֑}X!ZF0(yTLlǑ!YKkW3'Vkfgk0G~YRX ۇx1A ShI4F F}n@8e,H,F?=ɛ}+yŮRDO}M`s DqKU Įo+Pq2ME9ﴒ~_* 皦(X{7 ; ]{B8Q;5< 멬jZz믿0d"uSoE=({.͉NZ}_EvPLz\q=@7>serV]~Es6Y Mn9d-ww,Pysޣ[%bݺʯ/snG˙\FV椅2JGg?H b㚛OsVWʂiLf)7YWJkRGƓy_þ *z4yTR:}gfy(IW!w OE0eLa §.sɀ%Fu(Y>2JR%ux6Dtxyܙ! (=( Fg/f6XJQ^]c#-P^" Vƛ5?W.=:)=@:m٭%(eZ:2(RbZ OzǮa5n6L;JۆwOx{}zz{5 #S%I gE2yjlHj˛MFIU>;9V(:~NC =o%2?T Ws7]:6~EL*\wI4#c+bw# B-PRb:U4 3ߗc>Vݓ 9\-ZL aU.'e{`ӧұ׿ Vkw<ۙNTTWmay\SriYz!BC|WO##<ЍP`\sHhR2AIv-RJDǞ,-"4 [5,˟}쵍?Ml__r%Y0s% FC$׊c ֓|p n!Y+pN-m΀́Rm%a(E̮׺Tv~|`^#P׳g[CLMlA\mD:vB12^MSYBx ɚFi֨k&('j\aF=Ř/+$Kp5$Jo5ryF=#oM@}{ k:7-Er5/II[\l(G@IZė.Wu"r:gUBA6%]+' {*B̕[C2 柿H]L }b(*T,E5,~['^ыP>W&!ͽIu([.q|6#:5916)B2DllGc ߣR3f_MwiogW طd=U{R@,66^VJ?dW=H%Y.KjN<~|(. BwN`|ò^w R񤅾7kGeDys^A=os& Rf}ګ7[?]&g'7l 3fwW(@Ұ:<zdRzۥP"~ .\ ,ggH>1҃yvF6ՙJw_ueG@5ZJ?j,uFe7AV[xֽi`zŧ&mz]kLd}gyX@ބ\ti2{u?hX)N1W4%#[Bwjs]Ɓhd[S&"3:#cXN/~A " 32KoSC#`@2>D]n[Ddg#¨u K 6${s4?#,FOĀ+F!C㨯?jtuBz][ x,I$ɚD <=>[DD1r{fG8|۬`ףj2CƀУsM>i%P\7Bq\J ~\˧qtEQ-S(#уp}9i6X%As hxBSG!6n@+ u7iqxZcm0=xcgt{A]|7G. %"l^ti)tn-u@a?}E׊ HA}k|5K @^-J.=Z@ILɃN>Rp0_c|$>#^FW$ KoX#k يq8o[K(؆CӴ%\X ~DB;}s4]@W{.eRtV?Ϣ_Uy0ea>˥dΰ!Jγ;;gz\4,i=Ko?=%[r4:F-71_ ]2ۘȴ`hJwVl :^G@i<,WKk U&|uyylQLyqiT:%7@96J'8Hd>tY$`uĽ_f}Bls-$O)._}bX > QE7Jf?dS[mиrBxk .Kk *`˥LQ`۔%fÖεgfq?H7Y;wMRjT-]жDQ> BowHigHjUqV x]gt<9+[4uW'/I^)ٗMդ&Y[~k/9gD2BlwgCbӂ)WPI~Xme?K}ķHŽ}kg,<Űbr%DNp H faoRCTg]T1js+oǵ  ócWb .TzXjz黌zk1@beE`[80DsIZud[_ ey OOᏳŃ$RRlǎ-@xh{ay0CƒqYTx긔Y,~u熰FcWyy/Z#]x?sD / D̼vbhT[&TJ9UmZQA؅Nܹt7º9=! .dب ֛)dj'oc)#No-QZlQI{~t?T?Q7"b<m\1 KV+3%釔=VF[~@xo r>i!/}͇]/n6g gS ^>77*I˽ Q$)EJ;q_dnFCZv]hLBYxUXXw;>-/μ|A@h"vE3Hij~|.nOO1(ϸvQ+@Hߩ߽w88%i~gO0,Tضz $q;5::x, @q/y/&Ò'DB`#Яߑ{d\_8* (I蟿w ʫ܍<^Tpo*g61J<7m87ý ƏqMz}.|{QkeY/BTܸ`rK=,WzP>GcʹҖЫ4KG\o_Ơv5uBд"b'o< º'm K۳~'<{jVөDq;Ƅ.!70)BN(ؾ'JX} =%"դ)Uj~?:H #.Kh4< 5N[S^%哎 9A( *ξa!|"l*lnURF.Hl@gApBISö!O6/lӗ,zT1(jj#dٖmkwQK3GCPh?H6H:b-tzgp12>*Ř7 6 u@(f͇u w_v 8 wz??Rt(Cۨup.U/AcBL$JHݸByX 3aGTƳ_eOpĆavߗ׃I D9>L]OJFvN7%mUξ|Y9??ZCTnt0'MA)X[|0+́W>~FsDZqYS/B#|(LyXQ䟾UROt)phG/HCOkEm!v _>f}h)ks`5DGjAcP!"z{@[ݙhU;J6%p,=Ԟ+c2 oRwƒYy8XggOO=;pdePW!O*e*e,61?p~:B9N"֥ȎB㕸ӛL(csHLv~ze3huC) Y "&H%_+_[+N'.Z |#W#dyZS"lB6]vPU Aٮv7*'߱#C.<Cxi:o`Rj4߂o߮Q¸_[b5/G+M_Uo0'>j!Mh]K]` [)`)'?I[BL]$^f! XhY](gxYZ {لdWW}M^nt2K2@M׺`&k7 Dne?q Q3D炙 .2vBxix.vТAXO[̚k Xm=Hį2h݊iVdP ʜȻWرORzqRxHqbR{!6-ӣ A%2L \ C u@?:NBTnKە"b?eΤ ؽKmCV&w\`ɓREG!`1`90| drec1HO0ܺ]V!\\LGS wO2Գ_'BXaO;Z0\K֞dy2~>7_=zt0:+J{֞2q8Y[rAyNmu?$˳,kʀ@](I;vIf*&pITz!Ӝ+%3oc;ps#w\KpT^< 劦$_In~Be+ 9<?'J_]tueB$]?S <6iDK,-U2.4ӂ`FtʏJ,~cŵg2HyJʎ{e+QR3ǭ8űR'M]-_}#Pɬգp~i}G^zJsI/]&AaGgJ*o/>cJa­P=4Zx|u;^ 4"-U8-o]_=8ԨT~]N<]JlqJzigӵ֤3[q?4 .uK 0>LIߞ 2QF9%[Ј`,,BY&{&A@%bv{ӘzᣋG˹\x?EÃVK IA3 H>R#bAqp fkz #S/bltFGշ$%L}"ԗucQƙӈx Dy*%@`"`XT9e\9F+r\~ɫ3re9ep"J݋Z磰,tta?QW06KyoU!V; [e!q\ 5]2n%遡)"MZ,N7A3ei bDAi}"ѹ!7A~A&W>:PZ A5jy!TÃǐXX*l2W91[`J/o~0`}{m]Ҕ};cbhhlr oX61UI SX;e):ԀChvgXe2mPM) pOSۑ$2c8߫! eѓQad3+ZJrq¿ZsaXni0_iQK*Ǐ=v2kU껲=t;WJ-y9]:E?LY&rӨTbobY1{$[/p-/1Iq (*>𡏗WᏪX噹۸>&Kʛ?Q4vo{VabK$8f`Aѝ>v81+}œs/dCfq~a/7v?~nfb٫0Ru&t-% 'vx8ۀ8J!bh)& VhQO-h{<tvHƿJb jOG1_n}ۨw'%x_;S51K@C$/ΠFN*ъ(NtoLg/"ڸ玻A}Y=h9N ѵC.877_!tpm1RDy!Dxj%~YMْ+ :+^*em?Z}520=iAW>Ѻv^rlrsQ ~̏CYzgK^ܲC0ٵ S_ MF~.l{bKD/㕷pi`wE}8\ߛw)iyZ9#8o<~# "W+ԓ{ TZae2rcH*;01~/+@{B6w]#wDJm5CO 9pb \ZVeR2>%] U,f|CTSg5@ (R4G 5*r%YFPz!C-2s@YZ!ه%O{\X>}tfTG 6]lgo?ant+jO d,U{IOYOMFIE`!}ykxqDԟbٽTĆS~vptYMi.G'~Ս[f#`$v c6/Tf߹ -t 8HT cpo)еD->kGD|}.Y% cV-,k~yDO N}7 l/|0LZ3,haC[1oQ]pG-Z^B~dc5#!I rY9P~zv۝V$7>rZ@˻Iv65(u9눶nF w UV^*%5\~sgׅCPЫ?aòvwZn쇵Q QʁxAxMxN|o@DbPrtQnbV)0:%v,tq=H 8,|nu ŝ}v0t2Wiw1h}!D%,Ė gDd>8~|Vzאɰf=_wp%3D75"98o%r\GM͇}pk8. r2!Dj=ܸ^310Qe0JN+}4SIi 吏Qܹ|*c1ܧ&KzUui Ė_U/C(ÂZtP(2EM);qr\0'q; J G !3{km!W,oTJXZtK|P^Ai.=-ڳ<}/"+U^* ˜l%g_03; ˔Dc.!f7D)Al |-r |Ve$-Iyb0$kK>4}XYv); SHe:dC22A=#jS{g͊] O $p"C$ Zpnză$]hF) R!|Y׺_5EY-Ku>^,PN$j F@Vy-Ictq]w~H*V$B]o:7dr{ 7zrt,tejBsT=<+3ݶB$ѹoD)u"7$)$הi' :ڏ[<]U b'ø}LpxZ`6N~2.k]_!qHTB=ғnI zl=!YM'`Fy#q>df &?B0EB, ?s]wDy,u4iCru1 %XJxk+CV3fD?>&?|!"ɃIzً n}]#b.Sj >[E+Y[o G;sѱ5w<Ӏ7?/{:<S"q?eS̃9NL s^l؋a#2~R^?~!{: 9~h.Gn&G#ڒ੠ Zxf ƒ[ecI!ގ=ހ΀o>?f:O)o\~0V@()EtwaZ "?_|![,=AOێ51.TYW=RXT7K1)͖氃+Q߬{" 'SxğV:̹>;I1՛ S6G̴AwjS@}GZjV>e,(<̺[XAzN:o4Y>'?I:s#Ē[M2:#GTJ8fݗPSYUlgWYTw!+IrHRV;WY@y[P9f2isM>Ɠ_ O:U7ÊJ3άNx6Nxɛei'GoCYL$zRb_QĕD.qI}냏;`\ݯ I,osAլzM9g USXd{O(uEH@e?㋕=2z6Օ&GxKh~!`=S/2)[5wBwɶH:7e4;+7&"[t|AaL-_/PuEK1+$veH?c|<tc\')E|gvKFrBH\]4B=Η6QO ܄⩇g#wfw5@Ŗ/S~STǖ|!-J_Q[k]b+ɶB0#s;ڎhE1\JPZL lGuK]sn+sNyjq9&vЬi`;]mc X./;b.-@S_ h NȤL Ck\ƫ|T"SLN4wb=dd†d;Ezc@K-Ix9tǓ?:@篓03_kBhWO*v9v8 Ik~F{E3PjϓN-'N3r@X0zfG]D&T,-,v!77@ úZъg8 yr-^/kug%wz20l+{]B.yea JNq {i <3q+g5,=.7>z wB>_%j| P@ oJĮ4wi|:hlmxGyn`u3<XUGG꒹!I>-0.WJ5QьF`Q4V8m|y,;ȎB c7&R|^:9PXp$AjRe)SM MhJ:#OWF ˱H͙}t%P&E3Kz3zǼu뽧|gxrI/endO~ |HNC8\` ̧|Z b _@hTLa?Б4FUO*z8(c6sNLC9~f}-gV[?i?3'hMoLe& +ا!jO;as,Ⳝ&3q`S*#3^ *(IŋݿbO2|@ XO'~m_Bмh=Yc6ΧP6Y߃|癒 0,Z-!c7^JzQ 4 B$mcj*=4 *tcl)毮<ʹ*޲@Y_iм^"0LWB)P"p%Ҙ8W˽G'4gdк, =|r(3pœݲ|)qt?@ˣT,Ï@]=q , *`ʘ. }ݔJF͙a6Hz}E7OjXz k9 G WZ'GY] q[SOMe*1}(w[iXrtV+xxtaϙNEBCUl~)pZxB287=/=g1A&AdL-c SdRPćgn#ǪiOo ۹:z`])\W{ZߺKu? ^-f\0rj³Ja x#\?G* *  ?@4 4 deflate@z* 5xUPTREEp* xw YdfKl"ٲّE-H>ty~p]^>֍M)/r;K3wiw sms~gi_Zgh?WV][auZ%Z[DŽuH7G. zQΕa/ g;v1YKr;EoBF׃j8g^[|"u5=*%b_|?eu!(Jα(k!S,R8ZYr-~Fo0w֎9;㕲?a6+Dm#[C{PQ} +8]%f02_1sOI;(KK E/KUbC({zʼmK*;l}S}m2]kA4cc_=U)?MLHز{bGQï2%Bb6}"~8%Ҳ2 aZ|>R_kܣ&q(/8JVh`6-gGB2l,Xѿ O>6 ~TC>:5ji)]"G;L]^Ӱ]]]dmHD*:i,y3#R\h-&RnXza:Ul8zeĺ~ _OUqXl(?_WӕϜ8n452 Sx"?_((Iq'~$ ))lO6G:3R]_y@Sl3< [:i&t.~`_ۈ"n"5=XlP)Bݝ9 l3ywD鳊;sj|dtN /7ӻ$͖ ;RH 냲㩧VP[IoЖݻdV#\p[5,@lSNEXB6b~j^(u$%R H|@w:@t"=6jHֹ&P7Sa vs2<_~2Q6HZ@xUq*Yi 4Uxn|:&i9򺚴Kk J]H1\0hzu㎙83@NMƈ -I^hc4Tkf׾s*RZsvT{P)nr@o ؞ vUl̾V&sL&&oK t7z*3tpWNu؄פ@#\h +ˁCt5D~K<7ٔks=H.Qo=2^u(\m"a  Rw\#i1( q޾ʷ~f5 t6R8aڤ5$yNٮ$0y7|e2Omw4@YP0>j %1ӭD甊%bh4 ;n"xa}? %qmtFUHh')_}O.-S)vCWНW xf)`yEw(XS \, jFpaV`\,Sp|+ɸUmȚeTF9{cR5޾EeَFN%*YYH<׆n1|3Ȯ_O׆8c wߒPٞ QOڇ(2Qr1Nʋ+%!`.68XSZ/ i_vAMP"-hִ AKm_ ˳Na6HV/PT:ٛj ^ΣrLU27ߵT|ndJ . C!4@s\_s<]3L}VSqi@?g!aBn6ݷ6{3 JF :$nNB,mR!ffcoSJ-uߙt.I`)^rTxx~QRp8S2ʵ")>fWLPE6=. Ax{0e $#+=%wZ3Mt$ q-R a>5Ib#t(ڑR±B^a 1~ђ LQ>yC6M)q{IU@ZE;H_>ީ28I}q+!adn.>7(qQI5 Dww ΓB9^o=WGz)*|cĊiC<[e t]x*._Ձ?o3ө0^ɻ[2= ٲz<6eXw٧Gm`?Jɣk"N1!L[?c7JuK5IlV$?-5#}B* Ï]KYXV Kl|@jW\V+P/{] ρBԭv$[#O(x[/]̾jzs`yg-Xs~ c?5N\Ŭi%=\l0#˜]VjٚR?GhNF^C|bHeW;!z,v7?={\KP~\xd;+el;PƏ JRKzx u+=K@8,[_ kuyJMypқEF4I~Co>^6(1ZWk_'uPs:TvA2p< na9>=|_mJ`;fa J㼁R0z~=~W˄n'Pey!G~WNG1t6(5ݳ{rH?eE?vqڄ`V}N#+[%{sGo|G!]U,k3# fܜ.EFҍc~R׉-XA _٧4恉U/y XZorg/2FKQNvuQZ1נ9Tʂtؿ/Ҏ_6+퐌Gv3z:d6 ŢڋM$6o$l2ϯ%g Ow\Hy] .z>D\,_UTn 剿 yrt}>خwI9vҊ|O_YUܔhEN|Z"x52R:t[y)N c-7L2*CҳJj&<6Ij>3-ad|Z&0lFYq<,F6#[֠(k*/(,\Z*ipEDc+`Wh.".\=5w4NYȚ7XsS,0p4zhz"j-m8}If外zD|jz%LtrnE]3k^oaȂnIӒ,U`|iZ7 |d<_UNθ0R#ZF"i!1>O>Eܺ,@HBuݮ:=-`Nk %wŤ×?2Bz Yc糁kK~MZņEUUf} ‚dh}6?/|DG! DЌ=s'{EJ͎|~` B>WaK齃 |$tCzu8:r51Xrf7ʼn/uVBTJQk0]wI?D7ݴ|&TP8=Yw|$e?Xn<}] #z=tBÅoRy%"@gM9:i56Ơee*+t%%KF2&-Cݾ5DY rJF]uwUCԔ?Z9sx| inq/%g!ӄFBMTeic)em8kNqi4}8uT6A*`Z?MpvNTO>f| 60a37TzF 3Fɹ/i!{&aK~~=p^;C B^ [bلbU.:o@>lT\%bGtϡ?+|.}p2oX6 %'tpKQ0#^6*MˉK_ = G Ϸ*v7\Ѝl6l7N/4 4 5"Q? M:F%f5J{{&d c9x>~He6Bptlb&5Z(LwޮDd:"Ï5GF}"8w>SsBT[N(QX,5{bJ[d?? 44?o5D0U7?˸))Ì䑗㞐zsL ʤZFp+ZdOLY(:BYk`v-]??qm Iή|ճh=,ese1Yz}gOp4 X]J m۷rQ\":rΟD,92&(%x wWVB~ uM:K| ~)4/lP6K0gDA`҈>e3_r_uIڳbθȊ㓁Zrk+^ġ:~-)㚪=z{_nASD< :>X =n%G9D5&W|QY Z!UjT76<&!cdtw|P#3&9K?+3W^ NЀO陴 (EݸU@aLlb[@4=QXFbU rZX:Gi#T1?4~K6R\u}̏ZUD8~[>9'| @e~bui; '$1+peg/Em*Y'}SE*6/)_Q@rR[: ^yIϬ~{Ho \.(NFNanHCI*We ^/\Ѽ* *  ?@4 4 deflate9* 5xUPTREEi* xy}w?x9{JyNx[m r{8 LgVlsFq0[t~w+^KE7TzJ򟕭* IZfX;/{t J}mlRkȧmkMlg!`Voq,nkQ ezVxnV\GϸV\{'$de3JNAt Gꩌ8=gl'lW|PN:LR`۴v^Z_{=`5)SRo Q6w$>5Ϡ8'$T[ͪ_ hr\o"egz%҆2 G⤊ao%IW.aL-ÁwQ"׺8p􉖟o0F>y?m_߈Y{ oG.. R?0v'cJ&}|z2y@؋ @[^½:?Ԙ)Ä]/{jvZL nL픊!Jv{PW 'dx;˅%>p 7!9W`F1#3S +$E^ Ec_|ws cbq p|±ؖU!S}d̠v+ZDNZ0<;j J~g̓L-$a.ԥmQ~;!iȞ_r^=8>eS,{ {-b=X5|SMM 'Ǜ@WNG3$hvЭ;HEdEBOjehowqa&(zf[#|dV)bsȁ,'-8]YM6~Yzs0m帖qAg.dt3\SǶa }jPE;R(9{{Djuֆ] '_iԿ^*D͕V]7$I!>ː]scj8b.?Yt'b|4B`ՀmV p K8VØ0fS==P Wwd袬z0L%x[p>r e.]>~ [=m(os1F//g|-E\*7C2OPbkh{{ZD j%RB+~@*2Q*wgB$װY'Qu oso,_I3ܖLJ̳,IrY{u&2Y!~q\X>бh`ػCj`ȾM:AW"eeޑaY+bG@ĐwM kKw6՜G)-dXPW X#ݖGt,b=HļI'ׂՍc8Oh ȯ\} @;dQК]9@:فWؿ=ui@(?VI]~ˌO\%qM϶,,oŕﵝS&3Z%athIr؛9ʒCaҘԎ~e'@xAh.mhg#)(2]wz~EWx6\!앾j&&+kRؖ`jx͌r?oɋj ۓFndd':J?Ar:Ş N׽#yCYvzKMNï'fNkgXpS' U/(3/"Uc a8W\қ 1ˋaqf(Jp]Lũ=[+/oK) J}!H%p%(튝t\hƩkF˱@O#U q `p{U$ fơe.I"oWM@8]q:!,^$U~dY&_0 @6(A6~AZ7)^;~Uly6`YJiחEӎ5Syn?$xAZi'ć\ ] yw*t2>evO>̚>d|s)lVŗġYcA89w[o=UT$WvCZU{, Me>U>E}z+1A\g}|$yeR7t HH~W-y=yr泖>S|dS£CqH̒|| =?nX|J I]pD&]+hpq\:B 'GglG7Q @RݪP}Cpg牛U>Lyk 2)7%~؉cVCZ,29 ^cR.w :]PA|@^>IA OpЫ>]3,e'@ksN1y!ò+Wyߓ\XJordH_Ͼp롴odvFo \L_e/ΒSx(RZ$,\(]B܏ .T C09T/C%8eu۷Rr&ڜ4{JD`o7WWs}6V CzM*9?+e;^Tlr@K{XX{+:.W7t ,.>9Muk]Q;2Y^ !L,emEQd$ \;exzܵwೂ7=]%i<]1aeDFj |7+X%&j?K<|;Xl+8lH[坯s>fz%SZ)nqxV.YW f {gzH¿=DbD Il&d5)8(?wsV2S78z"GkU,l8k B++6Gj;v%?9 E򊓷Ì,UDky:/L-$Q,M@|>%JܯM1ɢU1Xf,o+݀e钓 ʉ$\ogt?zMЕ9"$'IݚP~JPz=oxj}%P"+fOq#W_lv'Σ?V4n'ݗM.=Wb%k|g~^b_69ֱ~3uxŭCs?/E!r_7~J-3)r-P 3ǹ<%8X= |oz~\\ )[?_s }ur_+[4; *М w)Gv@y, dJ;BP fr3ӆk !bWos+ϯѦLr~*+Mw?ɷ{8&IfF~eߊwMp}BdZ J?Rm27k3EIlj͂s"dZs3ւ׵Dzn9;S/ ͦ-#ka=:[qsKQ'#~cJ$<COduLƼr&lOH-'}J `R*7GpCxݵ&h2 T1Fa{dYy]Jˑ7pS$,j&FW] $ԍHXnXC8`eMN+0?tC l-;I?x."%g@!4~@ݰTPx+yO'i8U3ㆪ_g#egxQ*U" Pp&?Y3~F[(ndqhIq/>ZtcvofG/ ]߿5䒢ϠYߏEAEZ*yӳT& 5 XA׃]Q#Uz1^>K q * *  ?@4 4 deflateG* 6xUPTREEw* xy;esބ#@`q[+DqFɖk:>)j @x;^ZisN+O SѭH] icOkG.a=R4PNvf mhukK ƚ (֬ƭDpmϩE/Fr4yl??Gu&8%*>l q7|> z;^awWA(i}[]ȁ5Y`wgYϔ $ė#cvukm+0{"jaQ,~Kx)}ѵͬ>c"[*t\0ɏZTXvig/W)3HY;l.B8m-qT[.FcA"(&FedD5O'=:Hr<3ν(?R+]UlgsJr`ΐE%\@Ĩzurk.k]RӱnQグՌ$Jjv2*/vma I~o*[X0d,C?ٸ_9:IG`L-*,"'$Gk&Ph%r_l` _oҌg5BZaKjSfjy2dɉIF9In %YGJI@Ø7qe33!FEѐs?EpY :n\˲9YTEObb{XzVLJgһ]׻ j4Q"C6 hPV}!Kl}o(O6$IJ*fI9#pdJ-$\7|}_@ˍ}nXP\Fs.⍆]"q}KO\!&\X퀂VmK bY|"V:K< +^-Gb_EIi!$% v0a^Ϫ%b-+ n.ήLDC8g՗ܖ@o5팚 iH~B>pر]230A&ʝڏeB} d=Y^z,] ܁$cM%E+ebAhdmsh6wV {~ZLŸFe\0).Mj8))GY%[i`c!ARh,EK*!)ðS VgɦAҙιpg} c/,kQ"V]_.sEp|j ',#i8j[~p MhIO7Z;G^OZt`ɶN֤_&}7two؞G& ] K^7o}|4?gݍ }&v$( _?x)GNkEBKE$"p3Kx {_ }a"9>C.be.j̇s0#gqY'?a'T1]s}0cR4!KjgI)B0Tea^uGط>-LPTexYH#v|k5A#W՛!I<=y/rJ#tWIz`ydj[\~5nGKIAWE`n~l2 +I\} 3?&޷}%3Q:\xa8OǑ-8g%+L)ڐxv{EL]mԎ2jh|cVF." f|)]Ou]?bNFD%v{ {.@ `ݜjE;֭mtCCbP"? J6d^1f wOT{ L>UnSW0p?7%o$=Nlgc΍ei˛W)S^L6jiTuldP^ݜEr`M:s/B&,PhԼgKrh#t<yϽ](sw8jRnBW $ć۴.F@-|v[!q}Q*7( ,XcxJFiByر}a{ %MHhx9pӻ\zn6·ly>п6s1Vu&RJm,qv(W)T_߸/$zZ~`oPHb?pYgL.1N,o!rx5]N?|tϴ ~;&<:92 ׉eE@fp l?(Y> F#jk|mRG\ 6ks2SD7֋ ;7&Au;=nK/a4/Omh?nW5Moަ][*Ҿ r}lr`=hevd^x-hvANɤ;PLч?[tHJ5zcmYSOEޘK^6 cd])όԸ4@`;`|[!K6ڨт昍Qxꪦיo!e 4KJp-OOZ^/ }i5RL&{& 4$[wF ?_w%\BुZ!6<#pgeQ9ICo? N]"幇T{I畏4$]QrC˃9bˤ}fGfoH2l@]K|E$qHߎk.qz._ݺ gz\0"ⷽ;!vWy!);􁳪AWB!q{:կ !P']P"Yn=OlA]-Ao\?U1BBei[.32:!7yJxJa?>D!y\$៉R$P/i{,N#Oii2jpN~m>r:e $*퇺x^']w`@Z/&+8s*昍P#L6ښイ:F>ix3@Ο OxVQx뇥őE|adI s3)B% 8yXlF|@Op_![*'뇜F*QyEnXJgO%X*tEV$c@YeƶV@hh@ 9 6&B &0[sS7UߙLPeo)29C#PZFI+:&v |YBmXݪ$@"VYpǴci%WٖtLvMS JD}l Ky4YKz_}x6qa$ $w?w;(>~zw,9 l[_8?{$pQg{tDs}%7B-fG@wHN)"s~NP=(x%eM薙h>I矖`)1pj|^ƣ[8N'GgAuF[?& tmJ5 zgSp'ֻt:o,邆rsQK!H-zv7hPE==n^iRz{L\kp[m~phHz@O\Z/ ؤܔ cO:x4$e몛P,Sv4veq@͓;\5-zȥB:]V^| ᖅ< ~Fާ{Qςpϼtp~I,nIPۇ[ }&L3-o!ڤ_"aDk! 3/ٳ9Sfë}'ՉB |qJq"lkqL8MgMꀐ\}zYpmdρ2𪲼.? L^YPM+Zx칳 $qe=u?|W^$i ew#W3ff(7vB ߎw,v rAo~`yT]P6K4tEܦ}1bj] Z)b'x=}gD4!u] zV84%R*R&G|?.x^Y_0d \ܕEOcT!6s*ew"pZV1VH54Ly 9D{LB#~_8ӹk`w~+B4 V!~!"<)Z瑤#R8N;`Zb="K1KǬ p bW?`N)ےy"E_΅ Pّ> &?1QBXC8DN ֕F@P}.K;jj?}lxhv\E)-i"c?^e׀SjrŠZc_0:.i-b[CKۏ6(79lc%ޯ _7JI^upWKXDDv]g {95"nW-w$ojh?2bte&b+,@Gf!L4v#OӞ:! =<>/ia.b]:]_ͣc.1PNJkvvC(c h+?0׸EJIhlkOׇj}qa \L豧R{IKX On>r5J|@{xT^b Z22Vd9ہdhDJ)0  XP Z~ØDр;^aQs)fl)Mkg ix_pI'_" Xh!}Sq+O= WרX6yٞ.߬Wr@w7ߔہ`F~'8vt⯪R*[\!@ּD~=1s) Rw{]ҽWgPe:_(d@UʓqNZOd3/C}gJ.,7dΛ6;HŸQ?Nnz~n."ێ]snՈf(Ō$sIj8~| dYKoC򗯥uKM1tg ,f̖4.p=#(N'Vj@˷%ݮYvcDv9N%aOdz3 e:w٢k,0n5-f^q*"n4HBa)>Nj7>]f8Fo5`R_ц> DA2C|. Eꄋ@H&x0J*IB~vG.hp7C)kODd:f<ۮ|8 O37~c/prf,s6bޔJ׵zm H^Xw4=sG^%M-tF~à^VJr"j/~h X^l+&@Pu!b҆59N8 }(^S%A'TUbL`qXmﱙ/ TՓGי}8G"7R4>QIҖX#zʍA e{UnOuFvNaXqm l4 k ,sܣ"z|M!Z|XO8(} y>֤ro qc}r(v[](e^:Vb9ܺ-:z3V{`䯉2^F\GJ&Gއ*XbYO{w#oJvl~v^g (#0r,p#x5LW#-mϻs<1Jq u8UgrRV \|<$mnѩ. !{]upBJq=3?#C1dP~Fܴr!q5)b;6|CG>oh(᧟7*D99gUg x:7PRPNYkaRr|>f _ެ}ma))~_F?.'`hS2U0@Cw꩒Sj#%/!Qh歮.]̞WVYߠ3zP#it2vr{[ _:%4A;LE B37M_HBJ^x}@؞vPhth  ?p}A&Xe ĹFn5' {l-Ch[+th1>)=7#18X6@-Gɖ6KRN\hX<6zeNW}'7} ޓ _o#9bI$,s ^g#95VC[h D%wHXí ڒSgov%{ߡ*, ^39.tڋW쇧[.,J$oEٹ?N|;%V el4N0)z!hΡ0aI^A,,ų%Z|ASnn^,u<@j/xi޿@iDQ2 ϫhyZNLw-Ouq[a+>#Zu*v`tQǺuX23,b#i1AP-~}3D LEae-h5(E^nى?M}Sv;M^LX8Si5V++q"lT:XztM ^WaIRox4%CtDF KW4'!s')Ud?)|#afJ|X3K=ZHw0P~i+T$y{2yO˛>BCzOz2WhkQSDUf\l/IXm| "h=-/D?}.mVI95B)½H32ضOٶSD%\hT-AX&d_!5DoD L4-[Ǒ.G%_bʣ-/TwK>oU[HI~u6Ioc t J'=dys-VMAꜹp\ε/d?NDmU~kOx9=f: Cas<윖L@O_w,a}Z+(qGX>Is$ؔz:^C7j;@k1JxTvJiBu:g5r< ?U9 -[K,pllv9xTHefqt t .QN8=MU%*h>oXCkWӇ^zFؕAF0d8Q0Ն Y~\#0z?Bs!q^WI{Ahc L`|m^&pyRq(⏒*!;* Fg].ކs>a86cxC ^/f_DBU pFU\MQm'XXᅪjH 7xh/ ?TrcTƄQMёGײR0d lR)ㆱ| =Sv^JvHJӊ4|Nd&I}s e&?>qy)MFL=8Ibג6'}1ugR 4[Df}f*HܯZ͚$ꐺvʳ+肆$r?ι2F %m䰹 9xIGePX 5%6֐3'~]OD[GQ}| Pv~>~b$WO9 m1EO@wU9uUk¯/V-+NRޯ*|HsM\y}D@E&p  BL U%i퐅_%߼KfWa g~&'&GyZk ~uŝCLM =DG7C rd"06u{])~zizq7Bdig!egPSn'1 =#"g2k-h,!W*`4xQ߳븜8 ͛6Dح; UWY\xhJ~փd{ ~~7 ra8>;":M䅖IP'>/yqimr*xTllN{wǂm(AFڮME/jwh$$v_0UcEGr^ KJX8aZ5W W½*2w@O/,$j$[9-X|PjΉP#W@mr1ѴXͬ'DfU_YW3,GD;1}.hqI~2=^g&,P2FSYU6 #jr~VU:nahk0ID6\I7@hmq\IUq. PPi/5˼GVíϷ9#jwּ 3Ǖ^N ;^[NB`cHVy*}؟UX ^W{B?3 (?(V=T$/֞}50/*R6G|pwn-BH7Oljm@5ʄw.mؙkdYt&XD+C =y cO7l]0(\I h8 ǩ>HNy ', Km|L8&&[u ; K@-Ek]+XkTKTb?jF=_bGo3Q529*55fҙԄMjP-tdMV&!O>Rܣ[5+ ;%k0}|^P!8sYOgM^^1v0%$+RTaxibE%]a67R$~zĝޡd01$hzȻ/R%v5b={%cOC5/l ׫1Sy:cIqwIלMjxQDt郹喊F8Pʺ9 0z$爧k7,p%iۼVpL(F4>́E~!k3=qפ9& #9}/$?? Pӟ 211=5刖.u{Րhvn74gW3&U*PS/{ƩT>{/':d::F;rqg"kơIe':I1 )(^3PZseqI%bum<9$!nrb:nѭN%7[6%YQM E&{I^4RΆ>ͻ'_L<Zϭi &_E,HsUI|w9N7H$cFxݢubd6 4p-NIOx&٫!yN  xj|m}NHr93/lCO&$ a>[dӄhXݵ]xKP0ig - ۋ_nуB@o1C[i!53S;W @P% Qkx[ x~Oփ')2@'bIm۳h P$,1F"]} l0'>E vrZ(90{f5/0E޼{q$Km(fuoy|M.uʀ8pnFu쥾c>T\|sɯ4/(p*#_W }9eM%j^V аXl)EƷb+TKL$!(i܍ٱBG9ֿIq8jG_Um9w+gk3Վ*% 3]"e!>fx.82K|?'_"x=o'AF5Aն lHyf!1k0*N9r:4_7'*E<?s9*a\cԩqڞ,LJ9?wUEy}! nlދ\F pJJ19O&!Ӽ +"iO?Vjd@z" 6۾Yl+k(;^D9jWLRJ |P ~<k}DH1SBG8%:^'\r=ynddԓr; ws4{oqƞS gG#\ay5xx P]e[p_łf*pRo}KT&*[vþ:2?q7=X)}WR"x72e;gBO mnQq4 &, 1,( 5ӫIa: "ҒQ 0W5B4o%xbX9>&y-"sAq~3z2.-dC>C4 ~H!~C}΋!s6ex XWQX;f *2a6zN GNol+0lx n )>w}H0ZeT`j,0SNUm6H SP1E!vl~JE3&Q!}2l, RSwj^D” 7-1I77 m}H8Nz!#9Q:9}S.i˩)8Fk(KORX|&OՃ\G 74Dm Zm1K~|Aq1B3MeXlɺsz?m9i;kpJ4$D0տgsx鞊44Kܟ J4f5\ Z)6Fizm+> r³OĘzD[?o% cWaL}5!E$0rú0ذ;tg@VVpjpHR(i+*<O;*8L6TN -N "'BC1qZ. Xl5h >J,:)tPk>ZQU>x,U=`t\TYm%8踥" b,E7!Aq]'5݀vuj_P];Wpѩ ݠg]- 6˸CɌit_:}k/#jWvM)2?F:睯OH?|9~^`/ΒH(V8K"||qaTBxhAgWkÓ1 @9jS[ 9&b0"x9m :!{)wzw}dJ0~O qhRZ*)1P+9mYllk]1^k-ƌstSk9/':* *  ?@4 4 deflate* 6xUPSNOD![i4 TREE %* xyXh|6ls[ {Ӵӻ6gBnsjI{M'眔0pML4ST6b4ƊzāX;UO`IWk-<T+/ݚAwLQNGߗѤ8,K׽\59<l5 xFťvu6$8?-6^j_ͅx?fέ_V倭SugĤ2+x=c9PViTfRmL ,pvNMYbճZR? =2}J!wWbrO?gm!<ቧ,?ҿ`pU3/. i?U~9B"iCQ1et(`䳆=& lHTMBJrm(ZbALE6?]Yh P7-W VOp]0v@F?i;%/E$?λtXZhGh[I<) +#v%vhqJH y4 [#pr}.%qSDI ~{W}Mςl<7z6H4Z/ٕ[۠[G]NoDUL.dzdhzTrk<'V} U>f]aiHKb;ڳwbE\RU K ]݁!fAێb /;q'S5=~H5@on>-XSߌ)o+:3!lk&ܚOJc ~dmOCy[BM8ØSii*7LK~lSY XZɻ5D,utpѴ,=IXvSr-7|AC"drϿFz}3l|m'!\[ERTY/tz[ܨ[X"LY8;ĔFʭ%u`3j5]zpP_ziK¡&˶h} ZGT@1a%R6fk-LL wONdyfȅI?q)iI$jBrq(\_Ò F=K77d&R}D<ˆCX6cZa!;HۯŮIi˘7m5:0)"c_JTo,V{wCM{л OǣmHOsga`D-xGK.ok ch4o!Kl>wO\kJK%q֕C |peFc&u ~5Y"rSsq$ Xǜ'J̯\2^\MR^΋ײtZWCnso{=; Qʳh[lL|Ory1vt\h xf552kC@{6H9Bl}u^wdC+2 %ʁ7J!E Y/>a!^Fw4p=Oy^˺U3\߆)Ob|Uj4 mvz+@Fd;_F[h%ݸyݠ wYg}*65["$"Zsb$3)lwI6Iz-0f0A>pWV,(z]^>>L=YQ1FD9-@ߍ*ye3 3 7CSۏ_Bb'xp9;}{L$4}}:>mf蚸4*lYX\@W{ |^|lh@:hW7Z3_v٢\*"}`YlBpkoZOXDڤE,Qķ =h_*4e|$Xְ%d"'M.Pş`8yJPX"Kѧ$lF%$VXwfȱIgq>;7W% \@hz wx&RY_r.M AQqGN,~wWCrcζu3&w G!w{﹏C[Fe["Lc;y$?_t9y8 S; _<9}SJݼoV(Ra]!W5v'N}:~}\C|pny]M\Ǧǥ}4xN]!w $`b1(_pG+^j].-Hٙ3>lJFam&${Ɣk ]R0%ߕ}e v~@Cr 8uʫ27L zx.î+AɁQH\(X!;xk /ϼ~ /5Qr;9ѿٝx,|j2H.\4DʩfR 63҄B k}UcRiH% #biљQ'rp3Q\;H=+vXl_Z-qWed!%r΁(Rxfq\v㍓|ӯ8kz&˗޼fss.J vd}~وJC i_`PK,kC9ٴ)*FVG2&`|˾U0u择I6CytŮh)?39)W^4QW(HQ ˵47Xp5(y" ry䈸 dH'DRDmd-%H hrȭr0SEr.)I%x[n~%A=WԍMwž<R,K{4zP8Qo /]yf.Vc<Mχ{B}_ժ[}pl^!8$zu;~6f/PnQ%(2JqMmw1 J K@pFʛ_NΓr )Iū%O2G'`vS٢F,x9l7-_Վ?!**-'<6B.9]6=+E.p䠁/]+z?,{$1{ysn"~6fK5P9=^nԊ[F^G:Jt;kլ<-M5|i (Ke}XpcҷD*Z\[ ]Y;wtfVgK$kj̀ʹ~!^b\N%/ۻ]{.jh{9&M}\I!ɕ{s;-#<šltb-3\  zz8.fhն""ÛyS"Aʿl 1ur,YOKta6b]T'N iׄ^(qo\d?E/U<.zN'5!훻cG5HC!T%OAWXc DVU'yB$LeK!K@ӞmWc s80Wϟ\jJڻM8~4}@?М]&~(54qM|Aܫ~kr, 6ͳ7, N2,ojøJLH#&ߋBAU.q9~u?3x""Gi ,<[$pnNn;j9eo\uAy+Q1"kyJݧ@w:ϩ(L*%R/ mjx;?*#'n3ͬz#rqwi$^HL9BZwv(0=W2P O9q,U!'fvobHb Ė^#<= \πy00>/HH?^BSPO6i?{ga׬//J](_m[Pń68@|a.`L~LH>v>pxSmɒ"cJnABJJW3:g+XAK0A{ީ:hm9,mؒ]vEƜzU;^? >W&cΏk{c?XS/a$j4G^ckؿoRffrjG3˫+⇧&?klzdCP:s"6B87ۮ#3}yI ezq|A=.T=4 ŻQ|[2{Jq%Aу6pigEc۩?d^!q|"Luh\HʅLy17jzܟ5[ӆ&Giau-c^iqɢ`dܘ7.6UlTh; ̂)s溡}f:E[AĜBW~Iw0 E֢agwM)զ VFM.%+\ςX@aD.Wgq `=:dMԖլDKl{%*FqO7Uq_]DVU@aUw+ ܚ/b,z+*TNrl XepBӻver.Hnq(;ƌ @$%\|kq1驱d%UO/}NPnט[V^NN:[-ÇiyI(\|O}r~* tۣ(3U^i<41k5ct$4q:e̿qIV'P*Z]=G %Lb};L3% M`M.x78c&Q!/ w^ca1VNtJe 8uiHᆲBkb$Tnz.BG`Re' wp_}h^`]vu }2aM\,"\z߮d GSxiYK:͇U!v..};B|?:y6˷u $w~n>5ZE't L %0 HuCyIM6QWMX@%mzL NOށ(y❎C/;cGR^<1O^(2nP9VQXE>;@O6+3rq ݷiۊVa@. S_|* *  ?@4 4 deflateD* 6xUPTREEM* xHX FJgޜ"j:Y`C'VSmJ 1GXڹJp'ްv|B_e*'Ro uu;)80i}l\y=`lG=hb3#{gWFA$N%ɐZ\l;gaqJy䦲rp0OofO)x1i C$6J:&Y@3gWusmX߱ >p}֌&'%>[~ (mF~u1ŵ K,׆,t^as)4 yH“\rhk7ᑺ/H֖+8 ;.J( Tb-iꪽ$.~M`HG>h:sRI(?hFݑ+{,{#2,Rsr?DT`Nz (jXa;TonʙZx]yC|@yA.p QYT]d;_I#N<'}xVr+N;N滞w\IG_io0Oِdac}lvDN]or6S2>13%q}U~WHZ^/ǒDR>]D*v1o; 0*|}#YhI|#n kSI~ӱ~83z2_BOLI;bҫj$86~Bd?aޤW -b {Jl;%D T)6k» o)Kk3B=P(5M ES%iۡl%wCtDLuM 'kZlw&\gJRţ>Ӛ֣6pzU#HS=4cghCn\wZ^ wP\<E" jx.J7[hO'PIsdĺG4~tL$;avR6e4QO-yp KL\%.$~wb<WUSܭBɆH')sM8 148imbopQ@h)Ƕ, #P8T) %bק#/}$vetvC8!}^`/=mEH9H *LwC?~z+)U|RVj@qʰZ*NƸR\jP"r>f̭D&\̑E㲭qRR?B eH9t(-br40٥ŠR37c ()q 45Pw$ϰsy8 ݖ#8XvdhMh)WBx#e/$-ރ_ZBV$6|K}bO'G{8 \Z[벦9x>@u0"ɞUwmDyY`?=;d p[b $nvW۟bqicpvi5zp[,q2$a$=ӹ' eڦXfI,B_@8+W}N%> 3M?~ vdV~G ל\ǥIΝoֶ"iu0l\z|} Z2EloRoxa!÷fT@3KX9ҭ#ߛٙYZHA7,omK5B\ubl;o/ZtȸN [JP @Ku)E- 3X1V[ʱMg&BG ]E ׾u6ʻcYD6_]ؼuH+H'e'~qy+b~Wu"'r[X&h*<Z#y ,wb|?jr?Qvc7CPyAŗ˶P[uEpr'SpN>!4To0GpSӧUg2.x0'V6H/L2ǘfϻ̕ϛ^$+K 냼)n5A?xzytB1r.>e <۾' M0ARVlP@$pR,$P'۾R>TmP1:vTZ38f| Ce&=!6E@S.X!=/@E#+EFP5q%[IC1DJVsmube kEahwXᑢC<ğ .1roRLly7OVU} ߐ,Li,B '9`^ݜ$WO-7 D;Ϲ~K|OWK7-. ;Xp/cYW)H HP wlI]˝y9*qKP~"FO.[j pJg ǚ(j& 4njCgDdI[@wx}? {~s8"6KZ&QlV{4;hNOx*G.N.JdYr\x %P _Ot}TG?^LNg+>IB#^snRa0.zC"-}GX Ip6ŗQ+\]C&:PPV_5Om*HY+ۆR79o WBc/b(+^k/?^xkPpQ >$Jr-X@ۤπ+#Rl_.|Zt>4ƿ~r)}xx3-tUyv l Q]֋MXS-QڕO|v_qn!ߺdvty4ʐ9LBF4vz<.knׯ]JRZySa5ڒ2]:1^_2rnި&ᎠzCH2N7ė֐=Ot53tmaד]D .=w? nwns'aJT OdQ 99<1sX}e¤T1>Exiv)}cI䐹2@uþ*'+݆d,UPG 65:s&m0$&2H<3)Y1ɶ[e@GpTO1/\YַGJ> ,ZKC|pܨ# }kƢP3yEvĵ+OLBL:Q0ۮ}aUW =VZdytDa#ltr ,XQh( xzf@*?]ȍT Ͻ_,͛Ra:M㥊ъ칹މ_Dwصюڃ ,PzBeXVpyڡYnn[r%Z>>{ɯ@+1ᘙ_qL<Ju/'-E>[; 9pac@sO\eʁՄɺG>ijϤ_籊\Apcd ue4ouW5qfE)3X_W(WQ,%Jaָ~G9wZgR(>aڼ^fJi}QUapCAﲜ ZjDi4TKOg[1; Į-5M/6?G[[jidm;TsR2%9mP&#/!ߒTn+;$;N^$w &Z[' Z1l=ӚyG[-`iDpEXf1IyD/ekx7->#[aHH=ͧtmL@b\lದXBԷ'WĮ7Cn|۴_m+[@2"{ r kr-:b+{g@ayrUaы|~n$0>uֻzzeL;3^ g#}$KÎnGÞ =#'h`s@uvWg$n-}]r,<eBDM'ZA;$|nmVe ]tD %J[ :I5zS0AHiIՀhA_չ̖=%wV/Cc7lJFV?v l?8BSg+0SzԂFSaRެڳ,nCpm`ag͛ *}&w3B-Gxݎ@S4\TL) ߓ љq2@7ENi/ kʎFI5z=q $y חӉsc0Nj b[EiT`vt*7Ƃz?t.%qF"a1<#4n < "Bk36Ebl}zw*iDu\aH+_Bn"jq<DLIQ!?]\Vlͩ䯣~ ݊ɿ|K*%@X}}s3@w%[ʀ!<K v=pz^"j67x-OM_J¼/6NFB$$t^uRr/E_W\vdc{-n j@LӂG'KZQ]cr)e-ZF[sPIyn>jX$_( W˞IoPUc>Xfw8{~w\&2_Ny]n\Gv2NN gOqd{j 'ԃG_5VDWU"imi7CYqbD Twh"T#^ ߯M"']M([֧Y9޿g"{sj^; K0QMKp&|;w͏?Kg([:]G$ GlBITItvO,qkzjf9q&ff ~OXĢO??N3 AK6ߵ1+ D.|t|~9"٧_;KpcE蝺d}BW?~}#<Ԗ' qTS$~\ң:F s~ZoM}8:34[ATܨ8(ppHa 44OC5FO߾ė}1 kL5:߮^ 5/xwLX쥭P4ReyE8^.\@|pCW{ʡDL y'f1g*{Π7r фol’㜫@U?Q,1ke:Eצ:mш|>%7Z@;Q2Ȫ^}Y1lM>sh%?-]Z?.϶&-<^}j(C,FL)W6mkNb^篑ےsEOf,H =lylb&de+"F*fnnHVE  $.z-eo`NR#xB>Hcw+09c n>'< nK  V(ry`Ȫ|ǘdGleZ?rQӲp9"v$ͅ}qlq ddŸ](Ilȝ(5Y >-kKu?PB@2+Aw֩:qkTW)c{Yv8l$UxaI.q?6gtBךu(VX[PIrGJ0l|LX5iyW`\* *  ?@4 4 deflatel* 7xUPTREE u* xy\N4 (C3M4Ӥ/&ELI5 $*Ciz(*PH:js<ֵֺk7Miyڨ o=~v!?폔!r#-7&ٻe7ʒU&N3 9ttz1EqS*Is,Z6=.eX%nT-}:bo+FcR11nU\>wPת/Lla.]F_u zV}g>/矕ʢZ6FF8J{֑EUtd(XW-t;W$_2OֿQP@ï*X{+UW ;e v>.*`/9Kpʕ6Udr#RVYX-7 )Iwa]7!K=#WӣB ^-PE>3"Z6Ӈc~olj\qL87vZbuաEL|5Ds Wy S`ʻiDў$w :ē,1,8?*y[0\_RV_&}C6ipsƛ(%׊]DS/R<[~3cNz %rL<{?%hrf@8ZZ>YgyxphWHԷߌ㺶: 4h_y%}#,-0堁.X=%<>euDe|P#S>zyk ޽W7yHX^OES˔c[';c?_^8Ìy4mY 0.fC]ĶM,N+4O|ߝr;\pj}q.jᎇWFˠ z+wrIcx]3Ho8"o,DYC-dWtcKa.s}Nyg&$9#u0]IP.Wos?g0쮇e5xjK$ZEj/ƖH\~k%¡JʼnI3VH{/DعpD;|ϧĪS>VK8;'RʪO&ζ%nb<>٫s!AP8le8uqφ/ƕOd7OO,e_]l{dXxgƯbMB]!F+&8>r_S7h4Ej\FP/oNil#!NRPrh'/U znLM!k7qt_hIQy|vx,TB4zyFŭT>i > FpzSTI w̵y& {ꅏ?JlG^SLH%{>K$v3d ,+y~rWYH Z.jBؿ_nxW"(#b{~m[8׊62q|?тMR Gnn@YK3;qy)AzdIH.i^Jqi׮y+FBfWA]o1;@M?^w-Hw2dQq՗T-*Uh#VV6߽Ңas}%oE7`:̀o>wuϼMo ?DD`f=cwq\''%!f +RtCOϛT1QUQQ9Gabchw<qz6gM Cډ-X2vm^u ~u츶Okܗ"w T=yU{&C/Z#Wd;7]KRfTe\.7-u~.X7E$xt_ 4A::c ;ެra!9o6凵>$[6 6(FYs}CkL oꁭNowuH8^ŎKd~ 屐#4)>~;]Xh(yni1zǕO, Fh`M&% +Jߔs~:ą$ш"IB~!8~}iLkgUW1DŞtC_s660NAӇm`Їd\c3!/-TT,`?!;᤾v9ϟήKD]6-$?Hʾu&jG kGqU{7W߶G5LS LȾӉ0\,-T"~;w>{fQ}!j3VvG-/@ edk}+aX̨/$Tv=]i;d0{ܦ6v._2r-/>}ZޒsS]"9]aș>1dOOЀNa/f%?xvy&HMyR+m/fn ?Zњ@nU~1-zbKMzD? S9/~62PfwsD5* ~f`V<݉oDǘ|s^}\|z=,|bKŻγG;7̳~  ZM$yy輣20%"[,gzS-K*aDFCA⼛!l]ՓG)R7URlL>sU7.\zʎuX9rMG9*5ǯkPi ÂDΜpljr)tȎ,eX*, -˃ڙ<<$[ªbpGmxh?nb {(;Qhm5ƥ#%f fz6tj5(^sc~v]|aea3re]2й{"*39C.<ho[ZK,qK^yw 2o.聒9ӿ8}LjQ$9Vr-=]2`p6`=psu[ G#G̝VX[Tn&Bi(:Qjy'A'cʿ{.a/^e\˥&,A;H)KKf2j'COXe7H 1xS6)~)L޳GG'KbΏrfKtXp,te%q}u֪waJ%y3J.Ӣq"qhb ׀HnrygIv%֮;Yd?V]}uW$mLn߲F=sQ0 hs ,cynki0"( |"c=i}IP{g4ǸlUJkj'Ax8e#Dtf={@zO_u5lQ^M}%ϵ.Dz<(ҚlH^/vR$bj r_fzz# LLb4Vo "UڃPo7:KψΎc.zIpNa14;7>hh9wEݏ'=_qx-׳:eoϹz.hG3CJCL&#rf\?INgu>]_4_GI_D>12 Eg%'#LN  (5+L)!}F ^3`]9tZ7F/Н3(ysѣa 1Ϟܡ91KDmGޚ)"D·|(09%W$|35٘Y >8E<eN|}N\\X-mr'=n lR1"O"~H婇"ktwPYx]w ".5jJ$*XV<S<-DFٲ]cFvzrK-'d+_bpڈ%/m&# kFN)nIT6~Dnk;_JήW0'3_J=17PVHUWcqorӗBQF9&*DLixoD.`9?&9=(̈V)|#-Ozd1uxS$lDKZ=臭PVUg=^`8$miCtl/SoH77=BaEfBP"l5ݲ eI|<#TْEuI`inru]86UT~:@fLTD a= 8IyVqP(V"lgx%/9!ϸtֽm  j;Qu)}Jax0 ܬi%rDOi2SH?U*__z 8{S]HӣWʀz|18SUS9W:"XΊ9 7{7+*wCE!}p99b%NoCYkw[z/νc,)ATQ~ۅ@HM\,vcPu)LeJ)M}lQy%rK_uLthyK79Gqm~|(ҍ[h"(&=NPγ[t'iٌl!cdB12zDcw3m~{$3r,;v{@vfOF? \Ξ%؃¸N*%ِy/`^b?>?7aDgMFʇDl-z ('{A-*'}\:se!82Hе0h<_GZ5f$tNϡ%&7v6Vny K^pbw\ݥ٭n2Fx+u 83,}>yQ$?N"6[;NRc,#Y<9PE݂]tb0<_ [U<>,0+k(qᒎc- Լ@9A? 2m ib㫋Y.Cr00.S%COSΆST:Ҫ foŏivM ( ݼth/ې?xD-XJy׀-q3h}pe_PAm:H_Z~r #iǽSl{"D@B빈P@Z7-D)E8=^VC%מU\d7DΚeSڝAOwa%/5`-ڥ_ o]d^YO<~IzR*um@}Pfe(}L Vٽ2 >#AqFJ]#E,z8f>刘k>{.}+CWJΥbZ'dy& xGd?muK"tVo ooǬ~/~7(lFysF,vM]òQg#宗< σ_o՘zh2}fF.iUvZu0|?Qk>jDiQ^VҔ"_-OA"nbc{5BJ?5 4˗J;f۵Iܡ]nO+ԷJcXWq-v;>W k:)H(G 0NF?<ɧ( %>]TJ7 {1Q>j%%vc6arZssb~Y'𖐹y;}fa|D5@'ؒFnA?/A^٥`5Y+G+]X1O&m/EW E(m˗w=Q pf$J|Np o_ oE^>? 2KHsӱ8@y#yyG9X(JnZ 5 O}08]-iˆq>mES7֙*'xwvxfYN]c_N>ߴ_u3 Vm%?f |u]Z7c$"{+Ksw+ݹ5 .K~U&E\@ʆʱxbmR]~f9#0̦8䅑7rn$ݿu07 ͢SE~zn`*(ǂC1OqIzx>OZl[egY,ZnP?Y$ K\wօ~W9"k.E+t.QlU ^NWl&aMkp -ϋ3" [(O W<;p]'D?pyף 9% pq2|"(3h#Iᕠ`3欽,ztX؈Sӹg) C6x#]>XD53F3 ȍ LU7q/%@f3 Pe,X`_iT5]EO; y賁g!6Q4~ϕyvmn)s U>akn'Z2L q(2_uz^(qs@S5+EIaqϋZIR?3olqZ`D7fm} (]O|r^~n"Y+q y[N%R`Y\[]wRJ~+)o?nv ^}1:(~147}F&c-P(#fC=Z[h˚,Gjo&>. H8K8AQd(Iҏ聂a*[|@M4[J|j?mDZܭYpiAn@IC#\z~5t[M4Y9᪘[}-?[fk2k$ D57 vy%- ?j?Fo $1K_6&BM^Y n nݐxt8 WIP>dT&|@eYJAߩypK [9}ҼmVfP|F0y*!̼ͧ/2PNDUN |?I i5`;QEN7Y?' itkoO,pu++r1psX#_c`+d4*IR(ˌ{lH'ՆW<Ȉי(8Ob3Pl s|wSuf 7TSyw~Zew)iܱ<Ӻˬ:o b if>9AzJ*f%O?=0t;bp3.ѕ ?80\z8^| W3`vp$twX^ju%}C"1 #jG}WZ2g oR4>#v]yhQiv#vhi%!@?4sY-hvl";Hl򆁗v%. S9R4ѕ\vZ~$&^TS@Gb\ ˀўˍ@5*5m˧ƙIv}A% !)C^8mʺF_wF Ի'v*ݓjKŅ=łOCr·n?ayjnY4~wzzF7P7jF*Qgٚn ;WbL!a&KZMݧ-|Sd}vGFߊwcofJctSCݛAu#A]o xt *5߇KfbxI6O]{}Laa[4S ]-`V' [XVTk(8V݈z0QmzDoC[Id9/2=dvƈ4E+{K/T<?yYW+X޵_RPC%~ { 61=4pt}e dD6T Lo/[?Q zu HqS8Y+TzRQe)r67o] G ~us q<GtgϓoD(tR.yC;b;M~U]}'nG򼾲"z8N{KѹMph". hoq)ͿKڌfF]0vٴٮe ̖U) WGrc\p:Ǹ(+SvZ0`Nк; L=:яG *t>g:ܝlR Ga{kGD!m"~t]̹p \czw=X99d~-"=B)Fonxr<|zڈ"o=?i.k,M.pKhI`l )\;KPO<D'B#Q't/2=zTu`K-DdL$!H"KB6,giSYE)*/3;OpNn?t+"ҲN̚ddJ yzB_Sv+q$)f3M}oj}R>@ǖ0"4ڲQG/g@[_G%i)M#Vv- -}S1{Oy)?w8tv?t_K.<rNT4HJwJߒ;Y//DɈafna=iI ,r@i5g\쯵TD6خjҨ +%Zb~nӒgS ߹ZtT2FmVIU yd#P)*J| Wuf}) hW qZg |{uc}\Z)Cv)<4A kDx2vأ\Bq"Ԥ̈04Xc ;,x'ΥI8v{:b~oWezP:hto2!.~] S;qkhw+IgcV;z1QA S (WWxDZoOь,* *  ?@4 4 deflatek* 7xUPTREE* xykp碒UN; n' M~'n]~~E:θJSG5*lt6^# LMw3]nTԇq/rl)^d܌KquofpRn<]B 'Ib|N|d߬Eމ'֛Ob%[y}60Ғm5G\!^r/`:i]}18*L5UGXq0C3 п'eX,Gg:|Vff:MnCk z:z ,[$+T;Eº葓xd.I*}) 8_=j>uhqR޹2UowМ:7-PbM >W"n9!pz(8Wt0%rYbHiplLfm>@`a0N~,nq.:u~a-w %xyxA</Dg }JPxy@$RbJ$p9QYl%y$6PW4+* Xd= /bJBcܰ57Bu_ݙP")}{7oL^t .ZB,AϣXxCٳj6Ju]v%'C>~ 'ʒZ6-)>$26xt~vI| 5-JA(i6W ~/;μ3,g1 ;]2zxu! ""坄WQ L邚⼀rgͥn_" ';Pqf';q^#ƨf1IRxq(?^:^뛡ܓF7V wx]tZ oH6FSe-H)_G5ȯwBEPX?.:=Ũ\U:D}&m[!S(rieᐴ5#JV|'sq'owlJ,}G|%غe'ju׽ʀ謺Z6py93MbQc}PyՒuc9&ZFc.u2X&1ʶE氄Ķ @ͯMVhZx]M.LA},X,%GyqKR$@Kv/Hw~Zf,j9^+$1ZODٵsr^ =4X=Q"z[. |:=}ыJ޷-Yk[x\N/bEeM& =Sc ^?WAojȰSBrRef،{k4k:$&SK65)].˻D< HYG.-wDTgΨuJ9Blyq վl';k PW+ MRQprNhLfI> O?js`xq]B7N,s>e`x9yb?b3N[r=tiI'>s\waxPW<µh,u'/DjfBT!d85l#|̷Uh[9DL h$x-g e1T`N8u:ޏz5[ /+.(,C S#]AIO補tGbqm(*Be*ثγ;G5`aS d[\k3GPv?C{Y u$;t<966F@4%-ڎ+_Q.Sk <4ܡ|@+.&ϫKr)]DׄQۯcE5 *|;h1$#{PUs `R[뻂tVc ÕwDzf{i6IC2/dW?olƟⱛ2Hz\ }r* >@㥙LDU6 Cn9̯KMݭǥ>Jyd(~&g4@WGزIcp7(ڄ{4wr> K!x/1@vYlKU#kZG E˳;_H6гRDzj\`>޶_i|Q XE\]8>Bo> `ҡo&O=b182f=6p퓧J*ö(SXyb9=Jy S\?5NBQu+VH7+ճ}DQna99ul)-w.Mh\6A"sD6=a&}O z3T{ܪڇQVEV+¢]h,s%"/g힩Q/ϗzB %<`[?%a> 7~TmgaK7Jv玥o}}*uАr Z__*-Ž?Wu"1^,i:Jن<@Udrg4V-[ tr܍=Dړ쨔}Et|jcϯ]EeO62J |L*ԾPaT%K­-[Mj,wkd"a.W|#2T@େUprD[=@[Wc%h=꒢sM <)CORs.tz9ִtNWSa|-|Ro "_9quz(];e - g/쐶3J GX}7T\.]$x7ߒP>kpmSCSaR4Lɠ7ax2W,woE[Ut'퇊{rTlAMCeoD4g_m #}Vv7Ȉa6N%.>)I W5 n" =.6F!܇)CoAPE&oyd;B>t9昋Q({[׌*h2R?KYƟA5]FT>S֣ͭ0ksO"AŠg1l/w]\ %R.BK7بzJ_ݸ{jil}75yS.6. 7N}?hèAŅm XtΦmÉʏD[>_ ֪r-hkwtMJ.a&3nOk35ˍdD{R$p[ ̈́8x&'*"L݈u ȞC\~\2O\uArqwF  {+;C_3$ j@܄[ɞԗߎA!`VЏBYoɯj.&xCN[ݽHg-97A ^+ةP?8l{%B f E[aF%')uq&t"\#~UG^'*weGqZ0!qu؍`??rEjgYPhLX~,Vk2 2e҄G+>՚ W)c+Vnx?XzLIrM}Rs@ f)o= d?ViUQQon/ϑ! JˊCQ%ITҩ!m"FRT [sk(DR,)M?;"2}w4)7C؍=|]@Dʼ$M8':='vJfuz8NC$oDžS$N=^gM16+yR`s`D>$[{"]X^w]7zwp/:~@)*qa 0X$3^\ͻL#01J)݌DJs;J 1/w 9%浲rt +Qu(P[ E#{ @cʦ00Pcl5OUr>ZLL!*%Ws$u?w G<ƞy]hQ`\Ax/{LJ˫^TVɨ|R/8^ev4EZ;/o<mOf==Yzd@_9+?G"i̍¿5'wP'M`48Ƅ}',eLdSn Mk!F[1zyG`~h@*q!_f+ƺ6KEr tb(vJCz8ݯ*LeH:_m4tDȒ ₧pLz|g|KĮR ^!a0d_b),P&ĝXٔg/WAՋ U]-S33|pmw1ZoU q}yڴvICťj3MJOBG;Kpt/*?N=^|/ϵ׺Z^g}HHg*5<m oW/qyfsLծ35%rx(zm.Y}wž%V_y#JN~/k^q)H x{-?!wğ(&tЗ@3]};;~#RYcY4  4=*:Rn7}7pIVw:~\ _N`>55uhK̙\`;ȮS7Py q#Y>wtջFU(|O'B5/9B$\mݰ-4m˶HsĂ]i\nT5Bs,{3?o$\ƽokCu0w*/!kR#`sO%h)u rZ6f$ +wK" *. l_*oX50jrۛǵgvU ۏV9M& ﰷ UYCmmivβ#ʁAqb/|K8]yy,p|}UK:*{ ͱ(؋:4 A)gHb100 P8]JO~$m2u? Tq粊Ÿ{oay3 3~v ?^m }dLW.psw˸*pS}/7/O߈/K]L$Mp׉zE^");ەqַ Hy'Kl.z/gII֭Q8L ^y8fD÷te 'Q-?_hI;V߂~,<`ZVL9?ϥ6hEY皙B.f%}/YG4ȼ;q?h\ߩX"TcW )t ~Q7A,u7V}\&r( VTne J19=}!Kjv;/%˗MrZD}c"BJkVQX@{Th:7B.`A<}{?eu5?;SKs&BK;J$}x9)1!Ze]N9 ,~}I4y o;"" һ:(cq2 edy@j}yQGֶF!It]% 9Ys R$H7fh|v[Nao)Pp5kUwjƮ=eK,Muѝqg^8dT6_06$`^WYwlm7 cFh|dSW%[+/޽fU{|{IE_+֍ _DU/|KQR'_הJssmh7ۀUԎ{/a#1 \P4Z\/idkڢAF c֘%.t%Pr/~ ;'6{z<^ij%b6ٞ0{/l`i޶ Mmܶ%6I9MU=̴"p%妻E I=Kf/3Xj[NX{pL h'w&%:&EkBG};ٰOpQ?tpR+:}Q/RUKJ$i?yʻM\ KA( Y*U00)b=Cr%6-~S?*ޙ!򹇡@̣;{n}$'ba52(#yLq'@͆#/T LЇC$oBh[a=ʥ-P2^͛6KVlIJ})n q1H: h[bR\M2\t>0׍'>(9oOKXS?rBH+$g(AcSNxdLZx )}I>HSNVArAH攳N4yܣgNl`>vG}{3cA1!H61>z9-K4lP܅)(㠃!aT} (MZN}\UdieǗp@<|u(?Ɨ6ׅAa|+2 ׎7*UGq=ݫUvnfQURf\G7`2 p\xRʂͧ uwܡvZ/"Ox ]eȬ!!UP@Hc{|; Ħ|gy `|\Qר@7`|<w]P1LU2س (Uqwa)s͒*Bɗa5=0/wk︎[2*ᕒ.~tc0 jFޙr 27"ݔt28l,/ qq|v=8tJ/jB^yԵǯWBsx{ Ux:1>Y+MSbG/ԕj01F<칬g+Z_~`C% ?us;AH1Dy? GjgU@Ҝ e'aڡ`bo(7JAhfݰ6cbfnYd17nR8)GX3b?Ȼ<鐗%;^l_FNmqb#4rpز[K[[lX"amg6%3׽Dz'eIZsBP& $W2hF7!Z~>1favYK4\-nMނGK̀?xZp}~$Vo6,p>?U]"YG K%-'[ GQ(1 1\85=\nc}Ju`vzj.@{%wrAe_ RF43ΣHi繼<ւ/u+->dxǾ`YG"}@UWBw^GY˽B/ׯ_m+};09Uq&Le $~gkUQssY]6N[@7[״LC< ꑵˀ m# J,+$내I_jYlW ͶGbD庰?=U,JQ*-KEG|{$( ׍g̈́CEBQJPb6Di`/~O@f?GD_ET;t~q 䦎WQ_8 YкE4ec_`<ש!;cwXHpRZbʓEQ~;i}c/A9Z?K7?]?'Rl&g@1Lj];k˙Dӊ!(߮,[x*zB}@.s{?wP[1mb.H[noԪ�bȷoQ:O N{ ?Hw#qGr+\@01U:EGDF6~E87{ٺ`E_wW6vT^UkTY/d]WC]I^gi5_gҧ+y8>H7cza?g&>U̖m=T& sYL܏pG[K,9؛$b(J| Xj{j*2`Zc 2ZeZ^T1{, egCM7V#z|s)u0l%z}r'|_1 ʌ)A@cQڹ?RQ¯҉ ǃ8ͻcB{0}e:_?f]CY"A|yx|.dnX~*Ď'@*=b̡>OY-%vH.D`A J$ePq͍лXFxp5o[^\SJ+OjmWJR-!Ue 6{KƽAځ0r {u-|]Iv߇O!tZh"e9xeà kg fÝNZk@NybHE‚2ϞhX`mEHgq%Ut?7ONOk/Qx ~rGvDJS Aఖ{E03fڶP-kUN #(*P :Fr%..ȑ/]6VXrJᲢ)y7玒.D/x?'9X; 7p'=,xZ6P|Bo 4 仌"zyהl~Ԍn2aNOb5Ö́w ^a U']B$bv#=e[)XtGDEՙ<$lq;.?iHiTXK}'jeV΄_R@e M"å7? w͞C!_H۴G^nF<Ňr&ޟwb(t6% #9~~Ty|*'Y3-:G{rg+_˙;v`]95pPNoҸ(lv\3sEeo$$|F眖)oNңD2Qna5!l=ƒ;ׄ:O (J3Ckn-s bYgեm(mDƵY<8WߏRB9@&s>16{sU,M`oiB.JkVZF-߽mn )ϔWS>L]ҍgXCߡt|ul0C?9<PV8CӻG;BQb-L"u  m*fl. f֛I#32J OuGiL4"PM.3!*ZB0hfSw( jY55Y/&O02nݣZP @ apȸ-i]外2h|~G /`2ZwyO3 TJ_YJ"a;\i].>"B`z8pz- 7/Iܵ ?#.l 珿T r- ;6z5rG<8ozͳ5#&ր%n y5J]RaQN LT}#-,!ܭWi@_j?7=S8c$;+v= Viʰ0GŊ(U ]~w)v3KmDN~e;7H]aQ]2Xnv漪H@^uk\?hғaFwEPv_8 3_C˕{>g;uZ&/h?5?O)3uY: I7I`>Hw2rjUQg&`k 'S\2A>8`aDߛ>"[}ދf7'O= <*Qeu1Ke ^gY1ϳUꓯJj*&J˚Re{u]D)$gJU]jh%H 1g}(9ZG+]c)["Ͼv tlѡM#󧘒ǠY' D6ڨN8Xn*˥ + 6OdF'Ho(8Jb, ZQC*a8ۖb[ؠ A AsD6C4ff΋ U 559,ݭ;nyzkwd-0y2wqfS??/~av?e\N+ڍ᭻OZRAiW:O]++Z"pHz"9Ϟ'{Q̏78=~YIAcPjR_innk }}Qz3ڄEq;yza>"`iax |[nM_EH/jX6<.˿VK3 VKrng;%:B=Q~|~TZ~nI|;&6'׳7ש̞$fPcAk4B$Yj~D<ڴ|O^vJ0^ Ƶ.[KbrTt' ?\+]2قKU2VBqkfPzbZͦ;Aoa $h>f}V>/ y Ϣ!F~wkJ`Utyrx͛h:D/+XEGz-٩?qVĖ[iRԜ]_yBzʑIp NV_sh7ML5?Â(/[`''ik>#  muOP wr~+3 =pJMTV4׻ŏDDstfIg&Y:lDjQ՝^|lJȗ@?ϟ?_=X"IjEGVꝘhY6 v1ATۮ'z Q*;Hn4P[7Х;?k3?'\P9It}"GNCB`A(=3qGz\L,{xZGDhw]"0,ȄM ߣwQUL+a֦]qψMY 鷚UIH"'% HHX)ׯܨn!\riXOQ1l: =>*UXzk'J1Ι8x*ڜ:;3NMw# A9V6wil$ <kŠ7#b.00H8t^ Dy+q8hoѲ.-CVnݕC8d& D>UhQnfd Turk<,r) U-'xr`w-9!jX)A3eFeFAaȱZ {)5)TSNT#9|TP#or_I0* *  ?@4 4 deflate* 8xUPSNODh[px 4TREE3* xy՛ÁcltiQ7HAd#Xbo-8{$&ler^'wl@(o37|eV e5>Bo' \S[y!x9ː1̊lZ\!np-Ixw.C Da!Јy52~ʉ\hֱ `Y*o'b/kV b{p\;EZlyL]XJoex삻1]yuFc*}1?#_5A./&̇vrq+dDN \$gdj_Vp&ZNS@#LrVs6Y9-85k7򤺫Ǹ!<yQVH,PX(6i)WX/*\VtN0.;|DQLg/ L9`HQUJ+>5Un<#kWZ(6s%NI}фHZ{ÆE/Ȅ0[H3ܽ7OJBe:_U 8?-!?+qQZc[a?&26by˜C?\up:Fgd܍i)cDʭ.Ys0^"QbTDp]wy|Awb7[y[ *(hNSz'(rz]\BOа/8w1#^ ֏ēM_^$,+GIP g4${^It2nr{2_37+,3twֲ諎v$I{;{A/u76yFBswɠm+<,ֻ8{ ׳h.K񦤑ԕ,ġ 0B̛4H C%Pq|"cy˱qz_ 8w: F\5GQx=1tr"U߽sڄfQptLD^Idoݕbc!K?q׃pΩEZM#5ɚӡ:QB#׋E[>YQ|r )׋360 m')Hߪo E9./?43v.p|5h ɏ $5gL"Ybk91C Xn^'w$ ~{"zL.\tKsI Fǒ{#Q9+7Whǽ?%ruGAHg?НYkSm!㒂һ(IGҍYA ˟'~\:70֏gc*ty9·'nNZM]̺:>齎ǍV D\t ^29BfzYNz)۔r ׏ Smei(+i ;3fj _dAA~WgA34mGXu kee[~<<+[!їtZU c|/Ҷv Xvxށ}D#(!mO-GyAcZƂ.],r4X 0̏G8z|3!{:X%xE_{ҔEd7 ib1I_gҡg o !g1&5˧+ S/(:[BTh@\D~!zsΣaA;|ɍܧe+;yf| 9\mD;y^+4^wdgl.}ひc?[~|"D}|BSoY)[~\?ZHyiXQ/aJdB!I2Q(ʌ*or&NVݞmg]PڷE,UqImP;[|"xڷQxe(qϻa= i F|̋ /|˶--EJ~J {an^L`f"-,smĈjo%'H)RBɮ4DH72&I{5t ܾYƭ ; 1wv_ G77aK]wi)%|Cm: ݥ][\BY@R@U!4c@1uM˶8=mo##NoS 47U?"|nnS? l1Ie |2=F kU#|߫v5 /WΦJ@ OcJ|1%zv<"G4*F+G#,ODzX͹5e6AD'ՁXShh},%ed i^14nNݼĄ{DaT]eL/s'6-Ħ(x4yt* Gp!6P$ReF(L*Y1DmvN?Ĉa 63Gc; +@@vH#~s,]Մ[H:hv39C$^/*oTHL,s'SUN%A#8ܽPsD~PsgU<1z8^ fyV?ߟܼjs|Ҁ\ǖg[ɀpGءVI4c?*~$ nU~Ldj ]zzFlEԅcSg_Ļ/~P>( e!jՏsMq5gϠ Œiƍ]ωɳdyO,BNapIȓ-+ G/Ca1]kr*Lܺ]}j#cʌc y%\;ye(O߲S"飋ҷY>9Rqn_D,Yl .n}8*@_'Zt҆/AOVtJ^O4C.F%X}uI=-7PsθZ't/Q~U~c%Ta]8Mڼ3iԿe1z'?]Q o˒ _򙃸k}{n_ߥ0-9eCXiCz֥F[RKS(OzGgĞ_ G=nzQTb֥ B Z2Rw=b<^пW{+cC$_n~:?<8͍3xJTG*q("$+}Hqڇ4{Sv>Y_I= ='eOs" LW0^y[ODL0)_W?'2|Ah>79-99֑ D _1mGB|4#~3~ϲ&d$!iXK?Ԛ0@Ӎ,{k~!65O'w,F [p@,M}*;Tb THa8p*nKWٕf6(EEQV~af܋O9j \]jpΘKy6y WJqWe;[ԸfȌvc*)\" ͒9;ܺ}ʀO0fQ#]xg~L͐jZhPMߐv ~y2WTp z\@ {Յ DOG4Z|/Y0,G{K?TKhJ0WQ,"\ky{q@DkpґX] F1XX'w-=] =>V;Qd /}"~oppW{pf./ǹ Ϋ+Bw9@[Ebw(-܊i- ۽AO:B[lB`~kŮW8J~?9=(BJêi @5nHfb#@JY>g ۛ6k‘-$8Ru `L}E6[ QM U~Dw&=Q?QoiÁV9}\z-TV4U|%?j!˔7|9u,|(s0Q F >0\LnqW*(xyk{+ <+xRàb}?d& OW2>wI5H<.@+|nJ,M_SoSz':KABu;Ji@V3M-5\3y9V!~~wWg)2_'5N] 3aN~.D>Qȼ}wc#Pv)4ЋkWϤJ,je>!GepSKrYR|f8 ݞndmoQH- Ԍ]f6z0C}G1T|Av@kUvuj8qUvQ(.~O-]N 7L$a<9WEt$usiX`w=ɒ[D=q̽& i*D♸C2 *UWv2?Ugɯjǡ:p,qd/}SN>-n e|AfsdBStٳ˰%X*/'y8羳E8Bt,{uN=7Ow;Ϟp?!@mMNW^ si[P`ґ~a nM1OD~ Ӈ8&/;YGETrK3'-YEvws \lIp T {1NAeSt֏;V4\FmK.rr뗈9 \.:c"]?5MRMK. .=\?KўmJl{§ "U \ҙ3%K 7%~!o+Hܭ ʳǫJf3.J|&?k=oLҰ(j ep]3M^!E`GLqm;U'Y܌_^pG~t;`*{ۿˈWį7Ez4H<(erlǖM_Gk   ff1O1@oEf Wt5Y]՚It"{|!5ByWF[ FwLDq O-mrgɅP"٥GϷs0|OQ?;-y3΂t%=muݼAvkjF}}g_v1wj2(cAF(w(S{EOGx{RȸeM0]k|Ԅ][%zm/}t+NC~Y&?䌿zmu# ̾zU>%_,DÄwmH9Id}*zI~>[860cX֜ 3]K }i'Gږ{tϒ?8Yv+i%E%i^"b5ir@Q-3}l\Eyn"`b| ;#bw#E1wR7&v5:2%\%邗ӒO-o=?IHev۳i;VTOʳ Mf`S).fapIr Di2Zu32xgRzV!V(FL}:ӳ1x=tGd,BqPa4W%h<* *  ?@4 4 deflate5* 8xUPTREE}>* xy UDžPB$TS)!Cf2Tf2BRB!f)d2y{csѽw>Zzֳ^>dd3_QW(U\ gHg8Nݶ3(V{Zח]Wj/@s)LߙgMAn<TX*~t_+nw 'Z' o9YVY7wqyby?k̂KT;o{ XTCnqM&e 7`U2L"smwFrVrw]z*Pf[7=w;22uۡLfk -,gpP^9Q~ia.~@y}&w PM<}LEw?9sFF>dX~ UΌD슾ϴD&b[#!-9@6 -`x6, d{{nLgF@fj;jsIGB8Y!MG',u#U}_8>`>/~ d.VnEeDdٔ#գJ&h^1Y25A /'f%_T_!ƿϊ$.WN;"88/Juuol;]CIpzU#K` ഠ9=k#ຯR|rFm-[Kq3JdHWEc'Ya"3rA4JE,XGͰsԶS^,O$" U%A903gpcei_]֡D/ U6Fa? ~ٕ;O'{Ǝ3A:3еd!O|8W0\H.xd ˟L J V䖯m݇'Q׉a )(2QSLW´"MDcG?&DDǶȉW!('|rm/ dsԃ0l{zwn$a_ѵ-"/}*lOd_"h:˨ 1:$K!nET'L)w[fAv}kID~Ъh iڴP 2@`=H9ƈEg+;X Y ž2 +`hPUhz1b⡦Ew^%ua5{zP6s?ߛWʂߋ;Ԏ$WBvĆ3D,9y2ʖ\;2\C6c/}@1x9z`-O&JeTH2nr4@7XB"β"yqkGdT*{p+qa|TzKj39'!u c7bx&[6<*-:C4Y^x!/n"!Sr~6U@xReG>8Kuoc#Hs. sB˵ְ==NJwKћCᓷ7y\w~!~]m?G)RO½~jP;iy?)`um@VQ{NQzp} DŠ\tx,u5Kk0&nۿSLm$5cC*Vk8>@2FNUzb$#PYy?x0ƞ0 |l#J>7]Wa-I~ROÄ%R%Ӱc _8o[* ݠvFOެ%yi̿)5&]OdStGrֿ:.c@Hou~Ә(0@W~yIT&΀I/{QbgDeP纉ˤ?%$#o;H"\Xqg/ 8seC*/E2DgN̿|R*.zJ _ƱsIFZetV?.Q\uу+ݩAI8s;.9͎C H$}U%[Qfs ~5wzwD 7ds8b>`]`Dĉ8od%DUC[/7Ok\kHMq|k sC[.%?LA۳XήbyRDI^E$i~΄p>GQ&ڰ~tVֳZQ00YyD?dGbriN)y;.,s[یAN~o)m-34(ꉈ2ƚoiy V|cp/툤~2Fg'~}N{dw? Ob*1n7 9E0g&?G2zCwm,z_Rʎ: N3v>xs֨ṛ}\JFT >!NJZ+j> |*MGEY t.nm !jKcZ0̦ 7mU뉁SYIޥ#P+9}U.v}t"`Mɘ-k9Ϝ%I]KwlȌWBJ@K=~=S7 UXJr Dҋ90T/fU_6x:hT}q3찇-9:"2v6XK"bTzД%#zJGy%c G}*2OQ$۠_lxolڣi2\2^ ?AM6kTarp@kdĢ FmVNa˾qǸ>cUrZVπܳk5%wBXF؅@uUYpVg}8t2f-)3;ǘ#eba$_8ݑ#07>o\ֽxva ӗICSvODcD+g]2e P"R#`X:ך#!aEf{E8շy""޿ӾlIO$Ej,7PmET[Y/O{.3f"YLrO@H7Ƌƪ$i{n85g:鮄l"gߢk]/ϫϵ˚7<3[A VǥPb'Gjt}%y4aLAЅ/6Z!WOWn:ts JAҼ勒9-IAH,?? GuͥN- R"Uk+T-)nF׹Jtvq -T@"A6b;֊X1ṷ)f5}IxjHUڭS5|4QIKTfWje H !Q>h%'";,QNo ObӤ$/wMF)`ǮMC{-%-\BAC(]o/8 ,PIu=ݕȎ Jˬ)W$&-[b, \##zޅJ 5b2}8OB CWBApjJS6uY~PO ]Icu.c24As]~-*}PFb8 !#re4HGH}_Յ~n*W`%"TV1Aҿ=Y|i@3k`!uѢIoSr\rhn&|8W? Pt8 e*ӚͿ<QAГa]V Mw~ttI4%{/Tߟ~`$+Bd7,Y Lw6D}߸'="KzHg{ §yy>JB2s{ 8н^w.I>nj*TJ!Z^BNSIaL9hm6|ĉx ^#ޛ\gf;meCM>(Iŋ̯s3)%0 j| { N_⿧;46ׅ6?8>oitST<*/H"w,v>x&ڪ)cfDžOr%sb u!D]#Tگ]rb@3F.TɳI!F J#νI[U ='R/a7Z8E:?jWsUN%]jÍ$4} WʦЅ'ur8j?L*?t?xza:ʃy!#W?ʪedwńS}7>͊&30W27EX7*ܣeosMNO|NW1W |\ ߸n9qж/q(O!F>j0[dHWQO𞪶L Ó(EY Cv'4 mz( 7aug_+&mo!O fqp "Sㄷ;?:撔 ~ʑpꆦ8֗)P2D waoyBc32R (dӓK|ܾ)>+%_o񃍕 `PRF0BW6œ 99C`q7X7ŞZ  7 Y:JJmR#rZi"g&9!v.dz@8ъ7٘u/Ath=ArtC 7ݼ!#̙6ξ ص~ D9Z9}I gXϣgōz)"vNLڐ5{xxԧ~R}SC],4_\3ezu4ǀkmZrї{M;tC2nЈSmW E:L5lG@^i6j}|c =e(_T[} |WPмwrM*f4|t?* *  ?@4 4 deflate]* 8xUPTREEe* xy U]lj4 QByH"cy*cyPB2S`T*RJR$R!)QIJs^7z~cZ{>"bܶF3 dC|Dk$8@}#tn=okC)9ih}IkwuDܩH.)} ʒيpm'5$%(&iP3G{1s:}_2\ʶj}^{69U)drLJ)@ ݕ7[e {94n4򗯣 ~vh}..{HV)EsƋhn-y^*qNeM|x˹41'U.O~GJ>U1_ETvFx –&|!}_X.3)twdPk#A $"cY3b#7J̿zF"9}ӄ.ߡ B_tVZYmlPrV(g b\бfj1BӘ {6>Owԃ\Z!WL"CUJixT0~Ɋ-4Бp%bf1 1t#YԦפfZ-|9Sk iݦsVby YVz] ĝlȡ}o&/nhb3PB1v( qƢ,r ھ .],Poy$DuM'-ڽ*}]jq^@sZ'٘ 3*<"QIǖ{wZxK*,ʵ4z*KBmaT7cDvH h!H]Y~Ɖ+xqf_# sT|ĵӼ'|[;mD؏;}! !/^NO(GjJ'1 DC/vF?{>,M%"XZ 4Gs"%^l4GCBR\q&gtܵ@H B }TprG0_+[#|'$.u*`bm~o>0<[Ku/L!SCQ d\Aq[Y}2!n '*bƹjG)Ph`׵`3 dP~=jWH9G$(o<6x '5_O M,&(y_v#mdv/JJߓ $+Yz=~)Ƕ!IM G* :LfV D S9A|rh-P[`/շmt{^p+mC/^<{_6ۮc}'1uox-h;e*vB4Ix/8j"B&5HGv+I.Iڻ::Lzq:^jc!~0ڪh &0k Hk%Wj E# P$]PgB[1_;^o"d.o;_mO%_%3w|i V{7qg2y+%qbwY/`sgj!Yl q=] r)\t?Jm׻CYR5d{c cWkھ[ʸág(&jc]KokmJQ5YG C;PMjwč_Žy6K4]zh_D}`@E#{j]4P"Բ,5czkL%oAdQ v Z$`EʙzfG]J(rjJV5(l?q/>B -yLU`^kCEjRՐ)3B. kO7}~k#S`gu[ta&-4ptk788s. Ə;o !>ww8Zo<,Ve]Zq,.(2CƀMV P!R̶̦\~Hktr%1npB\ԏ*<󢉳g/hxiF` .TD[=(38/結 .||dSʼnL|rp[";l?hHpO@"~Sq2y%~ID5\~ {, D_ޗ6 zd4~PO{#O䦙`}Ӂ?eꐬ@W$1cUcn^RDKIBmY_M/2P|Nn8M![}]H/Y_2 y£Id1vsUW"l^a͕nMG]p[W / u(/&L9gwO6X=ݛ( ćDۇՙCý&>Lhn}e,WljY5L8|OFl@LypjioXBޅM{ѸK*l0:je前x1r>q.eyE8 t;5f5;/@DLGg8{xs- 9DD^D0utj^2‹By(Gε2η㵿S:\ ]TX@$J(DCy-`S<;NY?b!bEճig?[pqR"ܑx}>X=CqB޽Ԙꚩ*/֠'^58ׯ&*^" C2,_-Zc8,9(gE0޽( xpp Aǟ} f|β4#<kbAh,E`!KV2NRe򇄤=P<|MG.v>;t#} ^x26EaD(;Μq!j̹!ITH%}]SM%D2h\bq]GGdE'3Z f7E{_ipx㢯ꐒoMww:| Dj:s@m[Fj!3<;:Cp c[Rt䗚 4h; U9l/@IGI+v,>5u'=XR`?3)% 9}۸1@_C| :(AAQ6m$n|c{BQ5O L`?s"\lBib%qvV沗z€K޾B({;VuJ!d5yh ͸t@uTe-h\zYH([M ]zeᗜGBƥ-`/Q>XG6A%ҮZS09Jl_G mqXu?!MweӿtbR%ȀwK6 Oc:Pϓul6apkkpv<5׮vvUgC%*|9ם^$ ;:ls;HoiPMh9nuv;7Pq2Ԅ*wz@l~jb۝N( lrXi )Y}NTawnKQO 3/OoO}NqChuCx,4fjab7x¾iY;z{6*K;Pa~=vJ `( xEˇ]sCVo(Dfm{"ECt ;0iS_8Ҹ@X l(q/Fk]dP5'2;2K.tc!x j2擈=w/JCז}K\;M+nO.[\us-e R;%l&$ kْw`8u8 ڤJ3SR(.CN9@8oA&8՗'Dŵkz$f!"R+sԬ;ӤWx>WK^tcġ$ȺvU`ǝz:q5c~}=)rqTߘ-J#{Y,#Exz>cZ/*&]dJ:6J\;x ,x[A2^~\18 5&lA(政)IڲZp}/ϟz T]*a*O^Kx\yD?~XoxT.McܠLg6oV^%2?ޚ#gxɦ |M6؆!YxFiM?-^=ڥ,塸x* +cE밖s"[5d@2ECT^}0$"h8:=PtR{_&K5v!(S2D,ޭqd5,Wߪ[^MPt/O2a!WL=M9ĎG\{LHPWiIKz+ξGk8T˗~0={\.Ʌ(/u0¯+ RjɀoKRP"6q^%ODe/:KJI݃|tʿv ΞeD0߀6ؕ$;\ Qt]D\x eb r/fvz$²&$1FMCdBL874^W˨F?Co7}(K Gz_| 3LTR7PjHֲxڮCme/BBʼnmVL]ʠkWEb:eCM'MJ۩^}p\ %1XrAEʯ#|ۏlf-`y d#3=~(E|3@H:!"[ ܵ7pQefpBfgwEQ"q8l:Ak7?* *  ?@4 4 deflate* 8xUPTREE* xy=?sZk"#T?S:LPlz (?;wVr([wL|'Ӫ/ M5Mz2*tYxS_Gv |aڹoFor(cS`lf<r'2,RϘ_;+9ap j!Y$AG*`wGhLx!1?G"qdm'0 <Ϥ)23j~i@#?2Q{ǃdZv!.|W"~ Lk fu%nډ52Kttu-vBvGǎ[q_W4Ypߙx(HXo[?K$_1*oٿ1|LJkpmĜKqZfPc|q t.r4)(CkSiiԭ0"b eIϸ;ʚ1zp+o3n\q\Č8i!qВ0x#c{5sODO~5:e!w3VԚ6x w.%:bYBt4$#cmloD\WY}ytV9 h4[`3W/WxÐЃw(+r-T+ごt>rj~ $O9#<[VˑR|Br<,ƅY$7kB;׾m"%?>MzmdK҆ŤW's~oW¥h#uBb|(B岃D+/xx붴A|'z}#N隰@y6]HzvphKc#?./{IbRJڢKyodxRk_V"۽mݡ"nQ<5,d0,߶,2137x~|y|aB*W_a_mpOg^zs6}uDhep[P lۮͧe|8-a~'fCO͐*ȒTv MǂGDdfafeb[z@~%DOߍislx*yRkI~Dp<XJwV$e|tU-#Ol?\"Zf6_O /, dd(; ZD( uw25$Ib'69~ +$7G)_(dbj=9WSku)I"io&w;974dSHSy5kGQHWύӡD~2d$@ r^]"o ocJ+cuQ"4+xϽV?;Thֱ$iVHS{v;qd8EE`;ACCW3)DW.r{41b¼7c;_dO\gY'DGy#Ehšר!rέJ)g8e EVw<|}{* k5vFw؋ѨZWtJCdh~pN5>ܪ?VÑ&ֵG8T2 }eE;L JJWDtTAI-pe!lת}$FNF/13@KFs [& s`ʂNӯVWaLه]'ǁo` v5F)'7m)."\L V oYy볉ǛLmۙYazscBu+ˤG{8vdMW|7$G웗xV ߥxG%q0w; eFRҼwxv|8G 7/5,*DNu(>6M[>-L;zTkuapb_޷G쒳*@߃;S@5''أVj[)iH&m-Յ=LMNl܏O\}ɪt:+;.[bY) Vn76;Y񋉎\NA \8+KՇU'”۩1(?ՙ˟G'$ L(n* 0F,綽*qv Klb!(/'=70A9j3xeURt߸[q9>t"#$yLf5^#nIWϵV+!z_Ƹ`h֮9Nrp,V2^e$@ޗ:+&б?E>>$YH%k-n}(,_ITߧԄыk^a o\yQ+Vlyߏ0$#[n}<}D/7ʞtOX\ E^3ύgUL㟓p=oH8$ek)/%9;qH@eV1yr⏏XAt<@epFJri^HME\]uFe36r*㪱T=goBd{Zo.qnUu_) HѴ䂘!q' !xv̋ϩYsdCMy]"̎ߠϭ'jPt_@?_#wMRu6vX\rJޢC@Ix>)$9)RW$8[/5^^~ȼemDkrZDY@h5V2i<\w(Iѧ/eVxÄNv>}=?606Ř!@xхDtgyO{ &7#\n '|i6uиr9Lzb!oϨTb`&Ch8~KqBt/ᙪN fD?sk\9)`Q=׉> a۴b}|^cwaޛ H!覺Bɩ%D~_Y=1UKN z^. c#[w¼YǾ#MILmxICK>v0L:Px}_֤̾r< A]{a;O"9g$?xQqy1ː⎪ĐҸb1B;pMUkU2| [$̧9TnZqvv\@3a[+-AHϐӑO>2fJ\.}-2}vf*-xDd4^ d*b*Pk~oK ;# HrVg1v+旇s^Y(i3N&̔[z/ճN<`XCua=b^~. rYgHYђOkd?8aoC ~^Z,ar:5\$JĮLsy[s?L{y >qcz3W?K EĮ!C:a:.B*^Kpk3zBD!gL1]2E-^'ڄ.]0?]͛H:J?/̵"xh=S}5@,)2y ibIssP2T޾:;6Ӻ[ed]/)|  28 5>ÎQ,JR}a)5+ʆ($a!hv:իL-OCoxƖi%'P(dzR `eCq +wv`7t2%uвYxx*;4ރVrMC<^{˰ Dk;칡FS;g!DŽ}+g^\0uj0g dznxK5}UBGJ$lQqխ(TvAˤ!c[S&?iٞ޴|IJpk{^ʦ)?|\p$KO{|< 8 ;jzO/( L.'=Way7`Q-{2~*7;}cayk;N4;v8X ut~\$[$T}9fWc Mmm|! Q~T,yrOK3`ć5_h~{;I6o!Ϊgڈ7mZOGiΏ>pk`W#uKWI`l_]=knth@ʯ&' 깤pY~aD: IvBm{#^tNД\ppǏCquեDCʴR/C1vS˕!! $QnX:q]C#C"XhiIZPhHZdy6t "wϿ~WB ϒ@LR*PΊ$ߴP5=u #؈ac#IGj#nۏz-v  DQH\nٵ'E"e().GS)s˧z8CTOÀk]R,s'ESG߫$qm?{[œ8n8 ϠO29"\,4`@h\hڀյ+;*rvW/:Gi{JV9Œ͊q6("@qS% 0<kw{#S]%GOvI^`ԽK ԆdOMSuq' «ot$d!Das䫜?xKry;^eϷ[N$[| vIyK $8#Rb9lh׾}7J-yq̎Ws`ރ I}_9Y L:2&cg>;\NsӤlڕr"f%Kc sk/ Ԍ!g )pf78з{64w9p SCH>(;;!^f Qӊؓ~9?+'4 bݺ̌ F^8j~*2!.]Pl FGdU ٲrndV-,:= 5-cCI*^D滔mmˉURC .FIםNFVla_4=/2'RD#z={0ܐi9,r@uv~}f^8v1߿}k]<ɕ6} f5>]tIS狃 $=~\S%#3Vl8qfMx"T}mc"!fW_&ˣsϘbddm_fϼ9LeXqinwݥ;4G7Uo"OdXsxv;a#~^%o \D׋zP͗ݚp68BGÀK0{|i-:o_ê]4 :_=+{M[~$HϘ֦,~ lDXL AA*?m|,h4šD ؏_dDYıX:!bʰn=х?޳,grVl_Cw$.% MBklpC7UAWq1J% 'fS%I`Ԡ@ 6{B<ߎmݣ拂lGi{%t7ȇV᳸&qD}ꛂWڏ(XcȮSƼ }AOJpWz7vzw,B悁x/0]`\3 ̬(o{fG?ŋH`{u D8WC3P:tRYwendgRr/8Ve;}Idvx* *  ?@4 4 deflate* 9xUPSNOD\TREE3* xyι_Ϸy|{>˝33g`gʇoy;]f۶LXdiwF *vSxNǓc~nu恬 4}Shշ-eAuP^|߬c E$[I^"~ 2(w7S̀Zj.\n_nOfHub(XN]; ~Aj,Bn<M21jH\.z9e֩JSiYf t)2v 84HBOC`rKw :!8woj|אW P~"|cY@XRAǶ.o&.E/r^ݡjlu_n<,~_ `nb0*_lbC5ܣe>뱟c͔a~n>N[ifg_~Uk QjfA!̜>!Mq^~>p_|I|]LJKb2d5_GVs^XT`Q"7o ;S°N6dI}DpI>/q8ZNGtCJ@r&"9EQ*@Sl@5 E8]]\npvh4`|.9Ci[_@ꋁ*+ۑby 0#ʘ;6frNh1{_:kOpqv+ 8f7RA4~|#PݮR7 4_;SmM…x Dۋ˟(ܩxnV(rS~f7pʄ+dc1Rܸ~bvHpfwułQt-m=ܛכ\A}s^X畨U ugwŒ·(lbb1En]? جmj9Q#R9 ZUNykF{V+x0zb+V9P YAkV^?=0Bnm a k\Z5{h' !97'DyLF N\p8yu})ᠡ-U~*0I|nX}` ]aq')GT0:Y :ȰnpSHQCE/,`ߠ Ĭr0loA^{@hKۙT eTo37}:{}H cS@LO-A-ۏpa@X1Yʙz!ɜl|ir ^حp"5xtW^$K^©XPva+ulɑe5چ9KDt?"NǮNK4REP2˭akI(\Rmc.~<"J$iKR񣣂Iݛ3) 4(iEpU4 b ރۡ'Ut xє=6Cy xr8<Km 1ng #$<oOs Mw:ZX9}ί-WT 'p_ E)'(<~>DyKhH.H5.I=$)w"<Z 'R=wVD egL4Yd?eâی/1v$dѦѫRYX^%zDȹBny3U0}M,%qUӲ< yÕ%RpzaGL#k͌a6PDWpy·Fc*)KЗAG_8џDfmUX|JKft3v$.'S*>٠=-CH%~B4q ;H8$!ÓKU#ȑmGRryo0?dng萈̡j'֘0*í)5<ՓJ ^Eن+hv"~m_yELm&]=-+< nQ8IwTm682v>Kd],_#p'tT@foߒ8!Qlz',c3-7w.W_eGNy y ϳ{ v/i2ש2 K$!#!5&&nn&Ѵ6Fv:5{AsY=q^=؍q;)iI j^/QLfWH yμm9D%.W?4@[`وz&pI/&Q~(?P On?8׌XUK{l::*7ϺRuVp7Y EK3&/xHN?Tl(Ng%mMg0YE/Ll%9e2u>?J˗1Gw3z (qǙ&mq{v@4^ ܷD`z-r 'Ț :s$|4vwqDIqk?xɯ_!ʿc|oz_L^?]Ѵ5u)QJY|[ݲm7,䓼Bi<*x;T`*3g,cK0nl㔦Ruy9B9q! !՗iNƮ7uXHr~IRf+/@H- /buY یa7>)95~ɋ)Sն?x"&ݧdӹZ0O^ONՁa̜n=|xk+F"{2R9LA>)KFtՎ ]kY,U fi;bz2 NhiM(L"ay\o=~"}WwtPގ@ss'k}ĺN;w0@•ٹ#)ją N7۫0{qlFFDvu?_}c 2^* l P`fQYF4NkSFX%mzM*}9 +vlg>n=țT²2y"A6G\I~|ԆN@7~BX(*Hp@a啞}{b-kl)9%2vO2#/sw ,k?KrmgrmzV2ѩ6(^ze.JD@pA!^ױXgc.M%OOibv t=[kp5-L.ec!G3:Qm\{;7VYՐAlQ|B}.V.w]15I#@俰 L||uiޙn Ww&zqs5%M.*`MXU4zyP)1η1 ⎩oloݹzj!@jO8̲ :]'7fq' !&SCP"UNgĬ[ɸG/>.khB5O lhB(Z3"X5$ %Z ~9tg3-YG t`d'dJ{|jxvN2p)v_UovbF4~H;]/O,Uө\QG?~wH‹a@7v8#"h4F@-7 [B>;~a n otEVjQ77ϻ1'xV6Q 煒é$Nۓ{ gf>myߪX&%8;|/d;i {l~RTr-Akmf,ԇSh;UV'w{ mŖv(s-#f[[;8,Ɗ Q~;%.Zjo"7H)#GCXdJ2bUX vwMOdB$kX ui(2kʚpfE ZEGc|$vyXw>,*ϓǣ=%mEԤ5iQVJa^W/G=DX'qN 9oHn#X@h^'8ћ`?Gd]2U~lY{) JZS h\/ڸ~3a[з/yc`u${Q3XbYY+,_:z$YSIllL| h*nhfY'4bprEUk^ja:pi/˚Xhٻﶃ${GFȱJ)S] }w %=n֣CC$M\3Ox>wp?jR¹„}R_?\h2bn+8D­=J 6GS'5CiuK#toWG[Q}k'WT{QBҮAM0@8gG sNЙZ KJW߯.Xxp7-+TC*|9LhQN&! |@y)FfJcigu77pOx{me7@h^ՉAq7JĎRfn[3AvZzI#$ӕg7@Il^Y*(b@q;;pJ\`{fAXᴷ|;DκV@B wgɠhS+8-X5AvCb'_FLpM1 TOK# @O=6K<gQ^^V%7ÉsDž̺1x) SNPusnaJ='gKH3{]"2ζn%!apH4ê`gyԷn&9;}K9 ,w3G0CguET,=mTamWRQ-FԎ~lz.du6=t|^N GǔC ǦK d(ŋH~3 ļ%L}p,8U36~N~Tfתˆie~`II¾$K#Y "XNqz]uѼ0%2~a"SSjG?| 0~%տl--Gy4D 2pq{ ))7nQNv)SAi;ƸvUxu*^Sg@oLhiqZVD<KZ?j`j %q!js! yVEa}`b"kNoџA&bv X,J.׻65l8nrFͨ/cXKܷ!zPV䘘JFƟ+,DV y3VIWӉeŠc;>bR {2Q}l N7vtɻ@U7V0લ h n9JNZk؁k{yYCKk_-ZCxY~R[,Brq|,c* } * *  ?@4 4 deflates* 9xUP* *  ?@4 4 deflateiw* ?xUPTREE* xyTGBT[meXv|Fl) ȵ7zN,9*QNfrv Hi)9r]6,78Ә㆟:Q{R,d;!o'*E 8~Z 3]TCf֐Y8UleNyS!mcA`+92lY~Օ$2<2)KnBRM. he%9hyӦ'-MKGzp[:o;ą'l`7Qp,,Z OV?uO-CLi [ qZ~ȳ[U]۵X eRG(Klq,p7LVrGa#|/SNbg~1 @z1a^=g/?w9;v(uVk kh5VQmw@JA?v[#*0q[sۍj 6#a,+=c8蜔Gއsi>RȐ@}n9Ex'UaJv M!ŘmU.j1 WhKMJ: KLP_m:v0SKEw)GQKR*sb6JˑTi:yG> dχB{1]Jfk0T͞F%>c4 3儃2G"4ˍqE(>q}RGryb>~-Ow}g!db&U.ZdH3"'cFݘ5_( l'ͽm8ꆟ)$yCŭHlo*B&./X"]'l9 _dE e0qeڧ|2f8(a"݈҅#"e;Q"\mRɜ$nRJOiUSke#y_UoŇ"5LRAb bW8mJd9$^+ίB`V9'r G'6D]wHϰu*JX$1z?svn/6Kf* U#. ^}ֻLB$[i +ًs}(~m-b=<1e { aO׊B+3}`3#h9e6D@x*w3v)e6gy؈l|N<ȌK)05k.Af"=d\rLA0Ο~@&+8g[xE^Q}ߋgE#A׉ٷ>iKw&kuQv^+o'|ȉp<N~aAnёL侻7~ʊ%f ~WC{M!J3']@?K%U@P>LH t<>0sA ~ 67w`LЙsMB;T@|4Hk:=H 4_[r Tz D?z!ƋCISeg"oOqA3mQv9,Nl#ˮkOjJl$u<)ew˚:I; Ba&tgJ!.%jg[@4Nc9e_2X|3Cy~i'7刂9kV/'8\W(Q;_!%5H8FDpJfXa(7GIj*>+?0iz;J]Fl;&]ZӲ= B}>70kaw*-gM#H7|mbyj^hؑ"M>0zz<2 ;|Q9Ka7l:]8٣GgLdBc/χ_Eýd/u*f(=. &›7%nug.z?cܼI|'{|tW= lvDӃ6(m+nUݣ9FtU?UEt`ަhBNg M,vYw-1BC4gBwm0ѧt\$?ҾL!sTֈh(yvu؇VDvu]ɼ*55^LⴚLln}4̯nv\o_#z\yD_zMnb8ZVʕ-c]_NXlr~mJ6iGr=jvAWwz>8>ݿϾ  JAAgx}[eI}P&i(e~+6>Rlܼ:2y}$xu7|tAcn CB qckwiΚ湢d&e_!뇜J)ys2oBk>Ip~V/:>FvTg!s+c(;>Fc0@Կs djO<0~ϟ@Fui:`,͖K/ ֲf'lߋ@JMzXr!>~j*qKJŘ*ƙ́~](签#5u`oil8n g kۑI{hmheMX=ܰ3:i=,t%j0 m(<[ײE"AlD*{3&ADg{C|+VcZKu. Bީ4͟&cX8^ Ɨywho>G(.\f+B65 Ԍ7%o=OR="9"vyɬğF7&VGJ~\qĎ+aqѷߞφ5~'ߩR6u(ϟҽ{};iIQwl: ̀, sީ|%VseKetJ% GeLm3HV\Uׂ>igQU [eda6UȜ2d'kA/'l㽕8~ nVgqimTBc@3Gƫ,֟ϧ"|SJ'l_%Jι%d[^{yW>ofpBcӤP'{>x:f#bcS! ~Lq%pv-d.\ iLмk{ }cyzZ8>mAyABZU:8LtRԉn _tEHeO׈yy"yYq(*qI Ԥ}xʦs/>r`' DOT0ž/W8or2p xmse}ʮ-`iN``X45r5Tڐ2nYz(.,P#kO x[c #.FR9.(xw~Pyc|F|,):=>@}cl^2%{$Rn8OB^ Gȼ舁KO$|PV,uٖ,y׿>B=壘;.zQ˚֋<$qx7>v,vhޥ Qv4`hW E^b{iPl 5{N6&Y .\Tf֛}ڌzSoǤc]SMD`I~v;>M:%N:Pߜ0e@gMF9)䐿|T j 8"8F1MC'(S+t5TK#ƭGׯ/Qa['=&^G}V2~~ҜWRRI!Zyi7T4z)yOxQln:O,׿jd%d2qBK&]o rZkíJ#'< :U-8tٝ_R9􌝈(g|þp5b1)Lnw`ϡ*5)p'YcX5Gp(;b=dͫ| 4I_>4=`)S9[gp׭rS+k#;Ǔ^В[46lzW0ʡ k6<'j]Pӭ"@PSJQ0Jokhy\ P6p} <!cu`)^X Y*'N^έ=ME#'!I5.#10Τ*D f#堳Q-'l(4.E Õ:FlTnYmP7/ǸWsr* 9MT!R_P^F}2鉀dT2"l#Ln7ttu ^zEo~ey]<6~EƒQ/A 3Em#j&GfZegKkλhep[tD}z3~=skk$?.DrYyD(vNjd VD@HZiU3)VRQTl&ʈw\ܐ+{ cջ=w;lޏҺZ.XruzCy5W|Pyy?>0"uY|`mn8T8 Uo.BI~VEͥm + PNҥ w¼sq߸^N i6`Hqw&M`~ u o j_%tFC*TǞCj+`uyRJ$ߗޡڤyKZ_D: \^;nDI<]]XġkGeaHpXYhg ".f=qTףnҫ }ENJ ByʷTU7n<q 룼hlIXR\zۙӆWO?Sߺ9-^u(2F-K{ Qz cϗgxz8nY|)$5l5q/eNPrwqzn0z`p>Ǎ!F nLo}Ѕڣtv0]2KRI- @iV$ G]E3 ]D<"W!/=>~գd^{87uh+ɯ)A߄vS gWk]r;z?IȚ/)^ F9[<;\ X?]#Dz漓`Gati!?Ue1\]:Hיyj*G"lwW!N߿D4g4)C!R?G,srE>;}0 EMzo MoS^>?LJ%#f;支Kqs*#1!7Y%d!@Z'>*AeVihp@ԨC=6Ťyw 9UٔmFگ:&o yZ U|jX"v44D|hIO+$PuXȯ",ʿWvIJ 2M_ D[Duyb.нMQ&6M:#lIoiX0N.c/1s:>]F(UxoG&~YN-]OU `9_՛MnM*.r.n( rȍɓc8bLiA2.dhʻ7bhL gAu(`xfهA.d%I F[a[o?CI=ϓ ,zkA9\\zbM aWSK+9/6l*$#-QA2~yh6eֹ'q s7j3菲_O+(>Ϣ BD39P/*'~}8d_X./ GĎ@+C4~O `y.Eo m>m˰(Q?/=>;hr6K7@[ E{`xH[ɜbK (G}^/ blXw,(۳|;e3Wy0vKr GsaWRIGH.o?l* *  ?@4 4 deflaten* 9xUPTREE* x 8VMeJ"%T(ܙ2yLR2ɔ!$c) QIA$"!_'~_y;r]ku{{^^AFS Halhٺ+\0܍R}1Vړk)Qt;\~P*//%M(v*{+òRY$Ԓn`: 2S{ŦPn~.S1`YS߮5][ tgbT{?w%"{\p+֤oGo ~X\MyqT/DzTt5_#dybbGV@dτc_q<ߴh(C3&,W(eTY+ Gٖd8 lG%e͌1x*ϗYqVZr:GXg7;r.H%L m&Ϟr}#i +?Z@΅U$5JV9$0{maL(Mm|w-Eג/D/~jThh2E b8b ~|4e>)+慲?KVrsre+-"^ ^cu}w\gGU7`U!J{`ex%k5T+*%jLH_h w,!q8\~$pⓉ[B7pd{\1,7SomzD@BiY1WWu=Ե ٟSd 2Q}`{+ U:L)s1JbJ~u ?%Gy$T' KvKľ鮫\Iu޿:ކB-nUZ6`_"FB2V$RϋFR<EoSD׼8{s-!^%AL*{OY}d<`EDo6G߇R" Z} TֱmB^broX#*ͺqTPŪ ӗt?.Fc9W,oO_jDүkS@MXһ^< hEB=*x)q)v]]GR+o2 _i.C^3T`c\^D/GLΛIwX]g+ bΓuAbm%]6|wʔ%5{CI}*u+`ݮ;3kH-tᝃyo]7 IjGav$Tk-@U>;\̀1)>Iؕ{A%v92ǜ DM_SƩ]9-xW1rTrwe/pX( Uwr4vȌY|) 7QmN~&d-"Rbuitw! va6vf@xsS\+yZ:0YXߵ=p!8N&B|`E7_tq|kWv8aR+=m{Je/C!b@brW^}Okig_G;4Yʕ7\V)'w$-5yE 厐 :ۃv쯏m_qԜݺi) nW<7yW@O7Dʭz{(Wuˆrs/یE"𫼥)^3k'qಌ;ynbvƞx?o{.^=P줹XVx|P(12%;6 Cj'!kQH~2OG3"R-v,yT~*A9 7[Ck#;O3|=Pw#rf_%^ܻ0sOME(8oRQ9'>+r_vA[qZ9#\3.]\PU;*/ `穱οS ,%+R~ O&?ieWQx},d! fGĢ^gf|0vWuS2P:NaO {Me߮Zæ q/{0 t)tGڿ1 !otq=_W)Щ[TctJSBV>^9̤>Fu֟fʹgƐ 围%RjݒaiImI>?я;_˦5).ܽԺAB%"lڒ憀po7?c}v7?8V_z~}}8:(c7 ZOwD9 ֧az .H}kNtlq`; D/nJN)c7ƭ-r"ڇtmy{mf<Ɣ=!_WSWe}aZc\r'8aCdd“c-ZϲVԇO\

hZik깔fA$NH*)U!in7c<7 nL杗aT e[DII98Pf6L7,]ulv#n?)ŻΪҬYx-UuejA>A!B=W$]f׼\f֝EZ¶њRp"4L!@q9{Ѫzw-?|5⼍ˇ!Du(:\.URbVu t@:jAx"J RkB L|,}x@7Os nఝf=Yz)c`?#kNC.I`Ne.5N\=}I $<1]}gKws)%i'pQ1H=|Q<2jrE嘱y(bί}n<՟~Ft,3#=p | (sVoG{~i5٦uri絶R*[l۸O9atu` j`<;<{k&uw & /bQ>!e0K$T8o xD>{fN;aG]r ǁ^Q&w!yēƒfRչ.f K}zFQh,@&3o2y46DB3=*E(fo|hi ]T /wՍBMWf⃙*{l骀!m6x%AL"(zxoE/_O]tq0jL;8?QGYU.;ȘC\X"y &)Cuh2`8R,=YdܪhNyPSs z1X;:K¤.N\xk߇gYjԶ` *V ~ &ǃK崬0`"H|=je|ͅ\ǣfM![/h?ncU&*ӕ_rH1ՌˀIaAbM5ue]_9ނOJ*17?;J۴f/qmxs']`sbSoZ> %Ѩt:W["k}dc]CvSE`[6swBƌe'¹^#\|wŢ)ʍ#΅@.p (m]|S 2`ID 3pkY`,㾧fIQZPDz۬2ksUqF#tւ*6hiC~Ž()d =[PST3rd/CT6195;F^^}O6:XbVX)eBCy,]aKeLChB<'WAn-n!qqfj3\ XRTYG{iyo$N˅mu_|iu%J$J^Ҹ4۬ꪚm>o0Fq!3Џ^OBGA:g'+RA- kE@ FH;snᤎ|n{ช8@tPBJ%V~w|q,i_03ކK]o'D'ѧpJ#kLHћm5s IH`z>7jHe'qOۘwN[@ͺœtHug/ ӷnfg+н†?w?v\sNc~A>2遱8ϴKROZ8?)"F)n*eZm5sI6Yf;8o}yZMNwզ?bQA-Oվ]7֡UÄ`[5=s-E^ #9zvrMD">xq&\VMr7%{PbPC}Iy&z1PRdhQ^;DSň[1.kHիR6`r0c꣹iR"zX!':)&Կ' ®?(qf2B78Z߱-XQ[eBOebӼ(WFO }OpV C6"ohOx>lʦJ¿?Di:ω9 ϠD{Y!RM D7U7H@DIyrXf{/Y.PqC |NNpZ1H?D;Ǝr\js9mA[g al%\~Ev%N:\yIg ZV%GNvZ_ AA肕j/d?C ۖE U[3 Hxu~uſ F+7Ǐ]2@5xIm KH? n{I)cC|<9MIhq]I e10#sxl%vUmX-Kj`x@vMd?ʥj@H9 6liѓ,orJÿlg= Q5jLl_sq(*uyxGG(/FQ#AQӭGp[Ɋ:.K- w׺lBps\uT}W@8"jGD_j#pIӳ{ YBT']I=I>g@w%6]+6|S rb="'$ײDXcpB&H L^][_Wd"Q?#rb)ŖE7i< TŶkv>cAU# &3kqwc~3[/P ;>r«w8Om/yPݸ|ASSNiOL5 |8)r"מ ;DˆEw.ae% u(g1_[?3׹̸3c%r{ SaW!q+x{MI3B|Y ?~ɜwsF"YP["QEul7ٽ^n!Njg/PH8&o *ccOňk̓b`3+k:܎?Kݲr] ~|ߪ':ӄ85 CÎ|ZMU[(X~(DJY$5_J_ ԫUՑ)re~`V#Ҥoe?|eނ;3A?kZ#O/X_r-f DU8,#6d=3n  X"v\7l?׽B שi {sg uJ&חm@6zxLfBxv_Y,kyZj7_vQ4 ;Ja^zP!}aHWZ'}>h6T w}lA&_k7 w#/?I 2)LuD?19^.ْ$2kIm JHt}Zv=?ow&lTS7!ڨTO`BI}Bg:ě؛^JԶM-$CrV4&:_PrXJ/Zx?~t,^2P%AT]!(Uv@u]2zdE#\剴Dh<@Kv>#k=(kOXFlrdCוƝ)Fس>{bXLesN(eR*n(/NEpwg"ZJgVr|t>VH* *  ?@4 4 deflate:(* 9xUPTREEj0* xy\M}S!J)4DdHjNAG4AҨIii@(4H"QM"SI%B[}\q]s?]ޯk>ddy`r&\,QiTX|ޛʜkøGF)J;0EX +Փa!=_UwΰLn=FVVS{9oJCfIcNe?Ʃ.d&VW^?!jz9Ԡ)6+1~ܳy`2W](۞%;U/sK3!cML؞6Z9{E`v=(~,M [o}Z. }ri0VmBf3FzEzHU=J ϯc{cGGEЪjpN.?̢uw :Fj=iunv!NZ;5~Tlw6=̞!"^Xh9ʊNs W44hCy.Ne4s s=OoYջ3Of})g_gf(ܶhdB}ltMZȮW`)瓵V/JYwkIg\+bHD6(_2Eݠ=F FԾGADqN^Yv$pzU}KG:FϺ=XlqI3aԦs# )Z<>7gsNϏV\QkL<] "7B '5p̳%nӏlU+!>G.bJZhGo蓽4#0ݡ!h+X Wr05$< Q`<]w!vR%>_>~!#1nA.t;JY6Up#U-rЍL05CZ]rOQa'<_w^T"}uT?W(m؋CA2{uV[E N|9]9heZիVOÁ6K@ڞ 9Umw*aD'jSn:Y)[?<<8 d=ëա8u+ǜBk$%dRF}=H+H:RVگWL[7\DMq* +^f@4>3*3 Ň%#e/_To. Tհ@@)ѝ330_™-c(y[8OerLDW~ &E{psዳ.Ol^P(ieYP3OV=;i=)"q5(^{XqiuLcy]7B?j']lDeKPLG8yRYixHJWҵ;@c5BHQ>xT'oфEbl.@y =,&Cl\Xf0~ZEIZ[j6G)4N_9fA O.'=]L|3B`섐=q$v{xf%-deKA '^dTN7o&^)W^/#NgRTK%\Iy$]CH[N~~U]7GOyV'Z?ʢ l-v^ 5~XqIPBPQl{>"|t7sQT-Rt{k$^GgT" Ճ<"Vj9wKIUGq'g?oH(f)ґph)TCٽKԟОG0_Lw+ꖴd墴gE_^6oKQ^|\)a'%\lcOYCϓHk)0i%{BV9Q튃}ۄ8eG즵/x980?gzeDT`uRv9٠9غRn gd$Qe`ho܎2燶7CD&H:d<^xaU?GDo=}[2#=OcEӤӎ=Q_y2~r;HY1r%qHi弊WA΀gc,Dq :.\+7djw{+Q ͞K1YM0 zu{I.te KkD߿@h@2P&_gH@fK֋ei轢j҆_eBȤ1g}IOX7F9uz^:7#3tv+PH|;K㞦P܎e-X\.olE:;J$4cP=#nx[cpp w(kd _%feMOH.$曎iLNxm(#lm<_h)V^Ɋ> ^Gf1~qGyJD\ܔGno)JU@ݠ[.33#Xuy1 G"eyda>W5xR Y^R Qq`z 8=gګ\HGF嫙e?X liMlơ-LVPXʐѕ騛n (S&vΌ;EjM7*j_^&= ι]26&wW>o(z =*#} . 9Cʬqæջ2,v ƃ#!I;L{^( )@?Cǁ 'SAjghٔ]qH dXBFO,ccݡ}p6ߑW36@na l>,Fޭ\Ƽ fn JRHRݥ##Upm46DAR9B.W^b|?358>LhMOc)3?ѣǎn^;/#7-OD98yCBJ|+W(B|sh%lvJsO +Uz\U_g .8[-t 82{P ]V%{akӎ 3."?R)|yQPWyz W)XPCʵ`-{g)S4POM' \6vExNʐ}[ Eef{0. 7X<uL* NMh\*~s~D3f_ghn]zcxocGNF JiPsĢXxqaUT'%/5]`Rt}`]V}Co)=$h-t^\6Y~}&*+7ǧO]N6&tHgLsCGZDUp@h=I=!x{Juܤ7toi"}IO0.b&vaWY/d&JWґ=C;w%>c;sL>} ]9`_RvpQ푶I~aRE) fkP Tvh; S  ?'m}Hϓ !z2.L ى/oAk eEW>EIN'!} ̃xoiic+NvOPU@o 6v8=aV*6>gywB=-隣( `G];/9>[^GcD _һ`d:Ry1Ckg66*dviyK8 QZgk&OwJdd_QKg yoc50>~OqY $}ɪ|4q^Rq:ae+މVK)'n'JAfzf?-te\;[)##o3ZEwVไ@oƖ&Wu!(k/ы:6ohb3? >/rr0PqRH:=+vi1qHwzNNKzz8|o&0!%emR4AIӴ0cZKk$T@bW<]MQ]/sX"EĿ>^>olCHoi;W, (|LPҴzJ| pቧ;||>kq`3H"W?3ZJHE<~U~&0lp<~Td F *t5}xsow. mA? D}=?х^{܇_\}q"JwD99;뀾_GlZ/LOY$ƟRlx7Frg$|ӟg>wdľqC \]L끬tP4N v~Ģ満/tDtLn=)ñ_ ▯[7)=\+d>f$GTeAr$2r}(ax7}_e[md!s13YgYs3sxI'?0J9:=oWqFYGi 7/ho [G3:}-4$zhkRiU)!ey /=]ozSl"I&wzC./߿\q_̋~|rc' AP|%H_~J)npIuj:R݇VD=g׊mFm8N>\t%& SGy2u\Ֆ}z#06ۼ#~_lOLWw GQh2`/22gmL@xs笏9󫻛Q,+M/wӡK'@UоWىw=4(hU$gv55l7O\ċi),tI(G-p|W;PTe6aڼ@\/u6?Y/ zM8=uB>,4Nۮ'`2ŏ7y{}#oFOOTs_ J%>NI: ϓk@ƌ#Oq ϗ6]>jN??Tå2bu/ ivYɚ`(ipD p(Ng./\peҭi?DiNe|&$No_mM<ˢާSMNN=XG>pşv#W:SWb<Ȧ#?~z3IJ!9yAyS-I &|[H;4|GsxHY-\]'k0o&Jrdc,CkgG%c1t+ =5;R|IzERU?։m -!ٷĝx ˆw?՟e޵> ,0p5i2H1aoB D<&y_1>It@PToY0u9o}ҥ\J!:|;:yuBG0~uAX#^[r4\;"j״isZ ,i Ǎ;) k9T/&tswIVWj2& C50\WF/'н@-*D7^rȺ8:5ߞxl׸ec<;%t,xD~9X]H1͎׌p (P]C3aUdB* *  ?@4 4 deflateQ* :xUPSNOD(^*'}OTREEZ* x 8U&C*sD1C}("C1ʐ93ac24)Sdh(BBi4Ry;>nuN|>׳{^3l8*P\ [(sv<'"l.PZJzʌW\Lk~ә▞h/X`)=IOŲPF:(5=e*lRipJ*CiQN>KO+m7NhNC~ w[2lf[25.0bM+0bW$ _ 5oG ~Sy[Zq#VjG`ܜMGTѠG_g|n%/4:vCeV'RSݓZdϛ9-ly߈X^$cF0G4·YgN\kXI@ AWAQC;37_̀> Gv~d*]`*+Y9(RIͧ&T YJSAdrrlFgVs4uMK\j@&ejsH,6zSôH%S!i߰qF w7rϭvѶԢ,)x}# /lϧF})lO3;hV|Yz=@ зH,ʞ\Xl"  `DP㺎.{HRA|n202+-v [U떒o ;y&gFݴ:^Uڝ%MQ,Oq$Ufn.|MH)dyk*֦qE˫&xmGS XVw7{h)-Όr L^Ը!Y5wR}zf#܏s'}amai7 t(vԘ-1 U@;xL.'Ê,vM'A$vYd}L UC!JO_}IsvPtq@(/hc^$D$˻3R{A# d9YG X{Ą̦ S]{kN/;v'j8:^ @SA{t!OJm6M09[VsGX?0&;JibBP21.Ux>x pmai}Wmrl:Մp>@< L̲lgC[1jl~!>ڽoy\`.8N;r D*\d_"uW%G;s;uC=t^G s2B{x,=a;߮r 4pXTZ<[%/7<8<T?t >+\Bd8xIѫKJOY7%Bbh,xƓrRt6 ՂCƍsu`6 ϥep&+v-I9~[5hYin [b7nX?:GI Lm&4 (N0@-h5qCnP0/ wۃ6p؏zRp %+DXe*2OÁwvY hllrҗdCٹ|P`*}<#r3p6>x}zV߳QVe?upxDg=lYI.Ί1ނ,4U u*yqg( iH]Q[h Mrẃ*IxBU ec"50z6ǝB"tYo\d)0٦ Q!Or-S8vG<zc $|fΪd fkKYܾnᔭA"0=!P@;QA}0&CU+Alts K93hRDIhЕM2—GfkY@c 65._Mr LZdwrw/Kcz'.sxu}(>E\H=oIWgȓ슂KetDF}f<g\d{ !pрv73Q_C^{룗4_` R9ˁ1D1~6MJ= ǻsݞ'{5QMS7 .u Xyc]\?ϹB8֤oW/3]G_IC@O}4/#P(Zd  =l§םߐVZKEUmv\?2B{'Jmb/(ȣuu'OSvI9?Ǎ:)sjxX׹[?l'ɏN#=QASN@I"p$ឮ#|Pnӗ_,Ё6rD0:޺#~z1Y|s ;iFwn2ڿ5Ma7Uu~]ǂb6 Z^J",H>{B/t"SDO, o' TH[O;Uy`7=%"ǃ.ܛ_RȲ90m}grT 1T?׀ۅQO롮RA}._jػ_j`sP~bEEYs,󥝞~ԏ|y촆Ŋ16FٮGWuh;aWr}ּ58}w]e~ ޱ3A%qpF8'W>E1%~aZ z=J^3:2?o~~* i_Y ~>|P w%cFゝP;6xoh)ѰMYGsQRWŽq!Awz(էV^4='\s^v ʩ0z+n TȆPbC$DZd#b]-tsA˴=vC+>W_s(oe,͎ H mVZpVzw,()sQ+=(w>V)Ey!^'ـ9^YMMdy^UG=T9E=FP!RIeݔE@CFuSs"4_p8KMXsdn VU ]+,[qTj<_9{Y*Y閹p1wNI5 ,3/P2T;:Vi<}<,}~<=_xiac :B4Y"\p--W1UfJζQ(5Ȳ#k`~+ FL9(Z77~>+Oz04H3}fYWLDFb]{QID=KNU_/ pX]LL_ӁPffNO]dZV}sud21S'd_?-_\¡²oy̲8E4)YjI,xbw GkX0Ho; v7_ >5Tp-(0֥ tG%ϛ&qQKvgoyN} \Gp$NIuR^^)m^.6v җG<\?θ"!Jн;K-|9Hw,caz; )/0.j򥮀;R7^ɺe\n$]pфA+^]R :s&ÄD{$ZD"wχ"ȽcWu/'z S@t~v" y]AӁv ԧ{l< >-Fm)2# Nq剎0`(ov7(Rt>;{+(rvP@Ȓ:6$3_{k?iC:N~8=<3NșNkI&go|6 Lq$/i!X@!xVN=ciHsd0l4:Xヒ\-\kֽ;)w%تgRHǑ?#,l=I7sۋ?wݟ1[ &s KDNjG0#D_TwK>sG8z~fsWUN>{(8E!r'O"c.WϪ+;?7$mI}z?_9k vB{\,$Po!VNH_O} ͞Z,gk;ȉ_D$ M=%?CIыRԃQ|3󶀐ރwjXz׹+`[.>y D%?9OW?qn8^[)IP2r սM؃,pW A `S;sX=Ai(S;s5wS\dWIO}: z 5c'Bfr>ԁb8y, q0˄WҴXdL+3uW >Ћs/-PO8\W+Hn<0Nzq`Fa01J@yMQZЉ5Ie@l4\ JXSQčLPU8PK:ϱr,J¶xeN>a!  Dgu°Wʗ$Wlg/P$a}D㕖PaMlF|x 3_Z rYXJ +`gр}N {h{~M$Q.qQo Gάֵ/vǝ2 ԧ}6~^T͝q|xg 늟jAkP>8-pvNv8|/ʔ^%a9'#zL: вtvhI CySy] w/rS? :(U{-J;[G_.S\LH ӢP]UaՔGWfdX}z FG@>* *  ?@4 4 deflatey* :xUPTREEs* xyq׃.ʇ1fqZ-nu.E-WG껂+œC}PLhoJ8.8S]!sz:p~$NptuY%Me%/yH(dJOo\n@Gd")Q{cLHh#m!ΆMz#M-2r#5e84";n/䬎x)ANO4^ܖ?+3mjQQ[gsu%v]*~Oz޼',ort>% GJj|Rݺlj?ɃO9_Q9&tW?/olUUSGmmauk~NSW-^NQϿZBO1 %98hڳ3]zYD5[6Dҝ"y(w]rFm\I$u_vOFNB6' RuvM|;brk-eZO-4[xwEU>7!]423Pٖ=Gs<`7L1q@@BN"{ݚAG yҙnjpA8^)H+-/Nx,= w\:k @ UQ35/ bv\;"~ٻ:- W X̷ %6Y늢\;c|E۠B5d vSgM5̄fsm/4e$ ؝\\ 8IX@}5'W5>(- a:/Lw(gb{'m@E>ZLPf<_t1]>kJ*)(EsE }p~,&sNx>2dqlOS|M;kjGfh>Q<+Js;&DEdy%ݲ_&kg۹@6'& t֧X~c),\Ő. mVe^j4eN JGz9^7:b 9.l;ϩZm?!`SK¸x4"J v$"gǰ*=8a;*mk@^z{MIVj+P) [G 5G)grsYs{4՗}N0.¼P8՟yx3I"ƞ3wG;lܻ>>YiԇX/#JUYiNlBJQr.#\-A OjU!G[ޞ8Q1#0Q8],9K ijEWkTyѕcCj}ȷv!%۠R7 i%QLyãχVCC$CdQkVѾ# xaJYh~ Ǣq pJ2e{Xq\њ/{!,MՊrÁ5=ZRD&V'=JTX2;od𴜩º序g` M떨S' _Ƹqۉ5#2LM; _Q^&ۮ4ԁK_[ D?c8.;\g4qg%3u,aelE(nna [ OOZJTQ 5Dk%xhksLZ"z[ o=%VH8%r>ū){7\i.Wp&"4M-d&'x` OމcjUf}Dfل ]HT3o8z%ZtXCJs&0߻6~tE ͪ ƶsISjWHbTauZ]7 fI Pncw#I9˜$)RNGЯrez}NQ{˽)yxMy(}f^ w^Ab!t ʶ1j#ѭY~(.^ŵci 6]pD'/ϚmzeQLՉ=ޠ7|қΪ=>X+0 Cɤ[㨲nϗSϪE !9OOjM0n9&Xl`Luy+&jM` .K;WH+1ws4UqTq3k'~^[*UlvZT&r8HωN}¿ζJFqtY"l\.*xyk=GtR%r =j"wU <žW!PCn{5(u%C O-JUヷnf5 E>¸I% ~}I3et.( h0OVhq,ta"{[`PU$~؀r;7=A]_UDXxۃHSYE)z"ka^vY9x O1ήOZesb HQ9xs(9#2doo}˃*3 Ħ; mf$ 2*zdb"/vo|̉  F0_" M|F\[x)0T&R!Ԁ?.$2af_t6,VRɟs1"0ɺjƎi!Q>@Xnܮj[eJdyl7*UA'P~K.>*$ZkfN0P~M9wixL1~`aT|X TY3HzJT=~!)=ʼny.wt ҡA$@/'VZ2IwM4#^C|bJaYaM,]٧&EDis>KX!SAjOx|Q2h}]Ul'̇<^4 響vMLJa#-~L޳ >}/lגleO\cտWZ2agIm(o7oT5NŃk!z$!WIt|!{q"~z#l>8>wk h՜JYqnW3$] 3Ud . |FPqk#( cOǃIhTU'R!X.pF/~ 1̟|ב"ïa"*^ґjd>/鵗[ "59`d5ѾT:nJW_G9Jקl$b޸(WI]'X"8d9H Ĝ3 GxUX\A`}]D^Drqӊ|C5Y-ڊBQη$9}}_76쟹}Uo"˟W, HkB72d;e[rTj9 zIf}u-ɳ_!ӻ1sxfFPx|{q_(~.S(O*$ S* m:M^ndgeUbM, iO`i[vJ֎g@tk^"d=D\\2,_T#J#k^Mȵ')oz[>yJ%|}F2pjՂupvǔH 50W$~|0ۻ[P$, 3h=vz Məb$WVц' s{r`.v,6?=x{j86骶 c矤z?Ra`TVYsx&đYN|ޡ\m@?TW7['Ӡ:x獝?,XP4yXØ1=1G'"&>AJ 2HywߡAoiC.Şׂ3Qj@n:*?`K/\T,vtk&/B5MEΰT(:rtܬ)`r_d)I?ֵ(b%q=41rM`ʙyF?ׁay-)Q('_K&[R?0Wc lMۧ껴Pb])3_WkcNـ:{.w\W|J4 V7۠QN vo3ʣD%.rM[T?fxXBZ1D=Z/fgn9Qטk G0b#k9+fRτ"cpa Y \B)}Bd4E×-< !nE;JcCO9i¶n\sOo,62g["_> kO)U&V?Gy:xFxSK(R16+a׆`1?XYg'g=fCRqw/4XSF &N .&~xQ]$Q :K#r#nʝѬ^W c=.(96w|Fx~Y 9kQb?wz=@u+zMdGx֠WB*S\FD(>T%q)XT]y)mCf('bw %%}iy885-*Axiڬ#P~OBZsO쟡a ۄ: =K7h< }Gǖw ?]@GgHg?n: ۷ wBzV@ߎ\<>PޭJPSHe;_kغ'qT#MB~K6-sҪeL[ȕj5f'^oqVFk2A04I y߀eL lJU2F(~+gu&˺Փ~W}#3~m3Sn-1T_| kW9lXJ_ ݔY9(Ž/KV=|tFSf 9$sd{]B˛68Xn=^%vKdF. ЁwS'I#\\ ޾h$$~ X.g2Bܾˇ܀N\ {]a=s 佥?Y};f`IS?8p|nvݫ7Zdufq}\u 䓖gy=y)J%+>oYYJ 5 /ɝ-vdʥ&c>&^5Y%X#} ? lsy*ĹO`MViP[Vf ect{$N3v"듄5&Dm-;V rpQ/c*:\Bg{i?c o̺͒vqf<.OT4{<2laĐ #kٯ.rOڣRY55݊. pQX pxgˢׁ鑄gn(gU3OJ>!oq:>5&LCCUy)_=᜵hj`Oh۶nW1xm|ԫ|u"i-3mc(P2??b3^?V,t:d3`.SUkHn/Vpڠ?JC_i_,yL?g{ J%o>@wxLl l?Ε P=ۊ'J1B Ta/Vb* i}+FDCzڄeURo]4fqn{1{/I*oBS˧ PVG pm 8J(SW߿:)~O'4gln4mY i>7#1'3'dEȄP3͕PE2ZC@I2/#XeN|PG{h ?ms޴&}HYriHyWbz,ҖR,E)%,̞ YT;wC×gQڼr#,i!Du#)DXg*@?~څ* *  ?@4 4 deflaten* :xUPTREE* xy[~9i/@z7Vz(+Vi t,]Pu|rUY7 Zlh ڒnaXwDz, >o0& kMpז9kB4ᘴ2(%$ty$Εb])-n\'`m؆(*A*BitgW^8P~G/0X% l?EY_ '.>J=yqXp$_x.tapPC[b;2qHkB-`e2IL(bD6p41SC w==!9khNCQGtSWkD344Zh=;^mg}(~qKj>LA[]$Jl{LcG7 %6vtQ[K7СkB}ih~ +KNi77Va=cp} vp~_Ou,H%yTڤA(ͻ]b KWҹ3(,D qS!Z9 θRYM 9_(Or"3]ø֒@);a{c׻ fs ˲ ɍs)A縶DʅﶦݿMy.$ /ziEnޙp:Jޒ4WL-ћk7i}!C D]Nfu|vQWC=<8,SU; @#N!'}Me= \ˢB:&+wE<㗔IxR[F*BiA#a!inw2w. I _DxvIH%6ʎ񫊈`1 K:ph1+ Z8S\BPm;텍k~-Y̾%s@9ou<mHSF uC|{z5𬠾sy Fg):(?a7MYĨb<:mPIg݋CQ D ׉Lo(5 *|=GrSeK߸w?87yY4 p4~Ώ:I7Yr~k2R-VՍ=y~ԷiP޳1ɲK-etx\8[ '!iljy.^uJe#87Jkf@sm2krpkqwMybRD vl;g v/]%G6s]<5`/=1X{h"-NqSWa!`3C֙GpIB-I֍y%`ͼJRG?4ؾz~<fӓ?' $$ޭNį l=Rej9)¶++PDC/h1ֹ*V!{l3z\Ɲ/ȅ be, X;c,nɯZaF ~;61xC^tb\ؼ7Iڻ0 Q>ٵ!{J! Kߤk)mݑ}à{G#l-GC=i)5.p'J:)n$ʹX,fn76NBuQf_/x}E [s6G^:גaɑ00u e~ğ+VMz bs/n7s3K R4p' OVgľd7R'9\e Vs֐O? :zԣq/o DTS*B?QR.wo?+PN KM'> aH#噚_ZΈV'vbBa!s77n3mj `fezsdd e?) z.~Fab(,-Md[Ϡ4b7PyncW0"+B IJĨ51@ tGU@h4C>|ic{EfP^HOqٿەDhfAxs֤FQf~z/= !G29,'Q!(J袠xlZ8ii^HHS֊} ?Td 9cLXh:- 2R"}-Gć8^E*4oO?o:+G%wÊzPvtL7&}a8p^1-F -]oĦ^/א(q'>MfTNg%o4m2 K/ikif,J_Ⅎv q3^/!p4j%3} tu țX|6QuE١BMҁ5dyw\%h4s7סw.d }?ߥX>h1*JJ]+ߒhvèvxfU,,8M-vxJg٠ /POߘB1wzӊ 7 :{_FX,t&ޘL2r RZt5V,'amIRB gfBXBA J9z3tybaPOFX*DܕJ_Q~/E!+l[m LYw_'HU?7`YWf,O=Df^UfMX K^ մye!iz"GiQ^yةd&G\rdS朋ԱįT0H5ڏߏILVW#oZX;IbՋwS[sR {%i)SKmZKڷ.LQeSz'XE#JtO?;4*%_>e }"|kxDfn G4(,ސ3K# (5ʏ~_T!n:Rή9%eos[,Q[{Q;0shyIۄstHoC.RJX' n,~V8SكsO}Ji&"}$.>܍C^OObqkDŬ󄷯^a:Q ZD\x?W;;g`_OCi&J]j5hHhZIoS.Et o](mA8AR77NJw0hḌ'ԥ$W͙5fqWM 9.YQG򜍿JX/`ˍ"{ANWlar̊yǫdcM~8Os&hfWUrgd=P|2$ /Cg1xn~ag}gM&܂"^S'z^LZuݱp$ARȵ4#˼OٍbK1sg9'7*7' ]ULفOx}fz`cܥ>M6-8pX~oDy3mi"}Jb"Mrd, R9w!c)rk70Ի 幠$ewq/Ư]rd }ĘP`{z\"}nS33y??ONJ\qrE)؂ |Y\\(mZppv3-T%R_g䮾h!Fd }etUnrLK}`T7r$J]}VLG~^+KJnVb&x_? V\5d_dKI_x DFr:ohGCʠz>!}1bR̜-Pfhg@r~5~MzwlI~]Wσ IU2] ˝8@x1/wg?J޸{h}Y e~s JF0=,@9Lo1qkWU"B0-%[Hej[ȓMW!>zwЄ[V^ȇc=\2' Hu\eVMl5A{\D8p8Wl -ᚾp{Whog:Y2W=wGW倸MuJĞ8R IO>Chyg֊=o8\uayt8_4E%wtkwѰ| 9lQ'+[}ݙqP2vPJ3xdH!4=ku]k{Z?S~Y He_PnCXWK: YmRcOkO.fu&춒 A9) ۰5FLgUĹF΃xv \ p"?؊ɺ?f^)Qod:(OsN譆5-P}}:-Z1iWɺOXȑsFh؅;}i45grM@}qpn;]INq5x*p6_,|B?V OϜ.Kr@a->&9YfeQ,7~ݷG*Zl`DP(K׻S/MAq%Z v =ow\w؁6?ӵ_$elj9K]A֨+Z v9{ cltF8٘Ϳ/ vb6u9- 4WUuNVej_D> V"ۯypLT-;q:Ou.bO_E.խڎFd/MH?GlHO7Hh^D7}au/Z^ڔy‹+IgS\tæGJjIgZ}q>{rIڷ>;ܚ#)]Dv#ŷ1X Crɖc"{ᥦUKĞjF݄A\Ծ-ÖwiPVix_sJ¯+:.Yp~y;n/^8) ?eBsAo9j`zYߑ,ƶG'0lhY j£X(0߮~:~,2< -}xVfD|c95S+#/{"ሐ;li_ M53yGhQE{ "Ox \:ȞO YP tQ,`}'Ў?n_Fm}v(S5)άG+TjE ;;!Lkh> gk  .1 MdO:xm:-'Ȧ{-a~[ ?Mu Ȣfx23zZq1Pyl9aG|KX~v,/GP8;:ajJq%~O_D/ST0")ѮV`Fd*QoK٥hE;rza@eLJrE쫂g]K.{g;Zߌ3~$+> KJgy&~?>fgͰ [ - ik+aWyM2R;K#/,(VrMKL,\N3GQ4O ]4}9}PcpV h(kfղ ?t_~S\T0E"$4%$-i!I@7<,}$t!Q劧ˬP^\ fi)Q &(u^*cӧqrck{]kPbߖv9Q;L)ȴu)Z1f0@8`≫ZvR'asĒ?IvWt{B|I$m^vAf+2Ja_ ^:3Wu<sKz 'tTk*9U޹ŸǠEGiS?PJ j4|vMi" 9^Zo6I(c{d`7'#翋Ry7 n 8G4ޣfr# vz5|،:b&oU-B-F! 3}虬ݩU\e 6魊Iӽѣр9t;P27>&ˮg1cmcͭ BmPʶ=+E1ݫ$9#ל^].&OE ߌf1e7~pq 9i q=mE^=ki]lQ{iU -Wf#DEҭq~LjhTbT_5??ɌCDNЄ]#KE2l`vH&iQ 5 ;¿j6UfZQ2&o PԀ/ywh},LDY-΢q'Lt%Δ#"}vY(ӻ櫓+`ٸAdY-eܻQߝ ql#BJ׆4/AÇU+GX"TYm Ř'{0qOiqԯM;A !'Bq!s`$ qgŀ(X R+6ҽ Fx,S̼}:4:KtFO2+#L!i-u ~Q< g>@\S{Zs7qܓ°jlОzSߦC%ĸ<~+A=]&p[l2Xv;{!UI{TODyI\Gڽ"n_éЧ3Yz{^|mT }_.e,kd=.p/hmϴREWF/U$#UTK[1; VL"9mN2Ս1Ͻ} Qr$*a^Ff G%$ݖx/F/<3@{N*W2"Ш& QSW{CyU9Yvy_Ϯ GorfqJO$rS©Hn( Gu2ηwmj0M l:h,hNۙ!8Snn/g/>uuFΕܼ?Y"`AfK`5J㦻CI})_.|<$9XbD-yzk=ʄb_/"›ZE 8+0t{Z8HEE''OQ-C黽$ %"j/CL-XU^gDث}GG2Y6@m B3ϳ xZw肣JUh4<=ߙ r$`2렮zKiHN4SHqH:O@ J^l ڳ=ˈ+}̧AQhGF{9,}+I+|9.4?ĬÃtW4|n g8 _q4w!7q>g-*~?_.&lQZuqH۔BLh{*L=ኒ#vҋ_愫18U+DˈF:]ixuؾFhJ<ӆ#x;x" _Գah׵x u&{[Ď>xrWI4"Qz~* 22oUW)Ȯt9Ț2[`vaqq_Qс78u(.tck[7PGJWƮ 3'jֳ;%E{5H缦<ܟx o;1Ҩf{;\R,gGã;7.6V95Bxʻĺe0σe c;ċ{x$fZ*Vj\IEpb'g.=H5w]YL"1X)z"[HC$0J֑MX=$, }N{8kB8ӾcZrvV\D% DV܋Qzg.]&{`&G]Zb<6ƈ8oCeZAx1@sLh0}}bUQWl};1qƀ`k5>uZnq_Q^FC:ZKY!1m#axT.uѰw(huq\HPPH:ȱ=}S,Tr ~Cd8pqj9wv]nP5>@L$>UD⧉˅1DCYG9VLi]r<(++r";Pqc)wp؂{%.]<g`@MwnX'5u!8L{9 W3eU0N6:W}],&y>НG,Y U{-ۉwDE^]Aø506,k9 .Sʨs"ZM9r/sgIcfD;2ӏ$g1-b<fzꅻma)rs^לCzaYB\K#ӛCh wLm5IXg>pΎ#FKQ*x&SBg5Qp 5%LW1X Kv!on61X5,{PEL+q=l$S$-xJvqhz~~!q3%G4Ȝ5z/ܲ6r@%/BNدh1|vKǔZuSh.,,;EK !DiFZ`Iftm q訞D= D'Y _xOeayYÛ2O(8D'J gWe" Fy6~}@=|<^&bljk'|P~/dlvCP-Elɿn\KG^b ]4޻ʜjl[P~D7$eU_fуՠqj+NX3f>@+j6_ F nLFD!!:W_r,Xl Bs\T'cN,ZTƣD>6='tɀOP!G/ì90V+wX#|Rv}#`'4 (18&|fQ$@Y6v' 'Ii3Za߹2uЛI0򭐚f''W9w`vm[K`^,}}e=P 06>?K 6gK9}{>꿚R8c2zlrap/f [+g>gIb$/%EFp8*+JVƅS_o.PU"%BWGiBR F+qq+o{<_-qlQ~ ҚT;Q]Pڸ5tNGNA4\;FmFO8"-* *  ?@4 4 deflate* ;xUPSNODx^0@|AOi QTREE* x 8Um2$2[HYL !s"LRT*!JY(*CE'ڟگz;\{]35]/ӓ;;5}PVI'nvGsFOSS Bë=|4GUcUb KE;Pڕž+ % 鲜[KI* ` {w>|㏒G?[Mfto4lrFתbS)I$RDUSqateNص䋲g3d; G`N&o0 l|dL:rS;a*(ֳRUIXDI!7̋'K~",'Fog~޲MN3ay6榣(_Kps}J?.WcX@ZuK+JEњ(nW|h o=,6låtIhŴK{6Bʽon ;B.{%ᗾ7mq+"

y\^jn'ٱe]^rNP]9D|8{ߦ|(vD yck٢B#r[% $҈~ _=aUBޑX9F"l?"+Q{i zੱZ}d#m +UyNA;%x$!)䂼tsV%LvD7SFEeD~QW%큇˖DҍvZA/[g //T]_x;Q2.s}-L|@%yI[ ξo|0l(:2J#/]&ܑ7q**_t\)!|Q_n1i/H!yL¤{M]~GEvT݆TQ>M*?YK4Fpy4e -pzp QeP&l@D$]%d F6ӯ|֠-n1s 'G2CZ, ]PZ"zYijJ#$%g-瑱xn \l(|{6VE=4QL [KR dnrr@A'vsܽ/]P"o_?%Ի\c!$>1n# D$7Qx8 "w5*کRy=lߔwP2-K܁+Stp_h+&Ba |r{;U(m#z% 侞m?7lɞ8t1/W cxRAC)6%IoJ5Ӽ@tzVK04ʚf땯 ΜO̳뿵#,r:8L*L[uP޵IqǰCߌȳj 3HCؗO{䈉72M"؊qhb8}5DYW䆾wx_ 0&XØT7{-djD<k8I~ Dj G`mW {"P U v`C؏Rs!R-<oHPGYθ]ȫ~@3vm_thvi \c?!I]BUg8 'q˞#ڥoGe`[/5dMK{|~`E=z8jzNqD9?.we( ˱|*aۗ@H>G<ܼp䠏T5VY5v!z1ݱh>uйA mG};OL&S;[$x l:e_l1yUaEgEy< ?$l{^Б2E Ɗ݂z(?Iwzei}^ _Yx:@ХQƈҩ"Kwy˔%Z}*qr,-TALQw\" t56jKc/gaW>=hK|OP?GQiCXm1$V_QoooB$+dol&cܪNuZ \Z+ efNh)9KC35|"=P".)+`afI.d<Q꺤kjdB&E}?JV޴ Z4~^vSc0CG/mfp ӹ@ڵDYe+i$;+(M$W׫ mK:e%Yvv#m._lTʢ4`zACN6QQ*fU?pۢh;Uzm)>kﻜ >©B\5_.p8|/D9dLd1DUp,Ҝ"ndz{Wv'`~s")}!G] w UGtކ wx08+u} *6O*MHry>豫{ޑ1$'f̭du7;oISQi!ϐ,f.H#Y8=/b2)2<2>̙qH\:߾% ~a4K~p,Xj@ W)tWfÝD9;!D\3͢~Kv=n;Ԋ4]etDגOXB[kk1N=٫J@?" ywԉdXX9e (pԾI.!ýkofDe.p?7ws]Guߟ&?o /;V57ܖ5B ao?~9v]tҍ놼Uͻ " xݎOUX{]erpo'?[$DV -# 6@KHߵ@a|頎I/;0Jgļ.{J+h;>0~1"2s"HkMD_!(,BApTՊ,sg783~l}]?6'$ Dh {Vˁm Y#h a~Gn.v¡~tj)ٝqf˫"1GQZ.SK;-Ҥ鏿vtX_vQ:סc 2^*9ٳDً(w?=:k7_v@L$iJm[PbpJCX~p=)Dl Di׿5x8-H}VY1"v''b|8WKKv}2d.Ènw=e+w ䷐(T(!Ν(7?u ?R̐V#P[0~W] #1_2JihZdt𪕓{uI ;?>AMY";&tYC~x. -Sq \Me"|'5$e.U.h4Q/SsiF8r=g&?Ut]c4Sbk(Z=>B2sA- d13`S-6\S[.wZGyr ק+׳%n} 5un&Zny٧]BD{[Jo๺EQz'z!ş3\_ju4 [3aۡ>;3Ov,DsL({RuKgpսNIB%ٶ > t٥p0얦H!X1#GmC(plU@HO|J}!Fzl^P;|:W'j&kyfu58+2k"1>7#?6JiI[;v4oWڂ#~B$2uJkgX^\+j-^.8(9o1s\7:F>٢p9֨ ]&,†}Ã-5rȪgn'.*g!GDsds "3V ojQ2N 能չeGQSO0 9\mi㒖=QVY3mI~M]xwŘE1]F7},ǷQv5F5N@HBA;Ҡosȃ4L/@&T9_1]-Qk <";˛uܳ?s4PF5Ggƫy¹,jjMrAAV8jQd(r󻗬w(Je恩 i|ۭ6*B;6&\J#u@<3$$1b1.k~~~v&)2Waϒo>Φ*e:=WP*ݑ{>]vBp#r-nIlrB^Pb3*Q^ vΫi]؂?/G:->|l84E8iZ|D!Zc$_rV;A<+J5h꛶Jl `:>9""2qw52+`?y5@A Yw""M T_M . 2SX\?_ؒhEf_R#)<PȢN?7~|t/ cSvg#ռꦃr|[z ]ΐ-da9i{e+h`ڏb5yZj ?؜9?ӯ FI'wn`4еop6+ƎX1V 8B}#ƀS @l@gҺW"W9S!8|C]8Fd)3(GJ2Syt0d EYsΪ}bZ:ܪsqK/c^$X6^5PNF둷1Ad5۲>^DCCVj$3[љ ɿ%DH(ϑ^P5ޅ]s|okGu_>ug6[BT"7i1@Γy׈Ⱥ2C9¦'jU݄{!JPyv\B2< aG njv8Z/=^"/*ϯPrk"}yr;O;߮d691'rh5YG2t ӭ̙"?hz rR[R#X*{?̰zB*5R}D$RmJVEV)0 :Ġ_J3[@&qJbET٧9HGc"i=ޠ+zhh䃡5{aETk?}FAYy$xSX?y(n/eaÄ*$1M9%͘ƞG$%QlI8NC:.1<ٰFx }7iq\.?㤋ajC{qXotΝǷ~ԞSIrwlǥ31hPZa 3( :KrM >~͙7׋~KyQ:c^@H$'^RWc~`V6 "BJ$au0 dd5ԃxSi}6=ۃ^-VIڲ,yq?EgWNB ǤQV5g2zǨR3޵۫&E<'FESD|C!%QC^d67#$_Mp{myOY;$!#Tz^R~sN~׵x9J~Mg7Ob`=W"dabxDOy8^bF^d/.~/tc,rH,ƀo9m~t:l=Ǿdw~g!p#6nJh!H%Q9L}{׉=OUMZp-o^(!u|CL(n{5sSS2,/{J۰nנC$zJz/%qA(n:ReWGcQvz1"vj To덌aU\]a TnO18A9e`xUaqSۏBvE FJHqL= 9e`wcIUy(OlYL+>f)@#d]*4ϰ0.(2hQ<ۄQ FH\=Ŧ}w=< C_0G* *  ?@4 4 deflate* ;xUPTREE"* xy^^ksU~rG@^ )&Iz4PN8͖o:?[Jh/Қ3h*9v)`SBsUey 2O JcjG.^UTLٌG9ۋu@l= aU=/lfښ;@ӏ ^u$҂ c,~!ݲpJYjp25#=0տ[H2v;t V+9EtP+&?&?PHPMX3 h8:}4+{SwK4vQbԟƺ>ߟ`(nZ\5,oPß&6oeX"]?r} "eCa FrP! <%Yk.j \ٚ(j/zŲP*Y 16$P;ds&lHig~ φͯlW 8Io7K{9! ʅo<s%AoQ<>~e-|33ZnK[.11t:r=n. Xs4F9kme0Kt bNا氨Dʙ<&fql7/Te/;zNwތK՘mP{^J*T}J$ɧ=\@Op = !Kl~,vZ\D@3#ǹ֪"I# M^ն,O/&C8m8i=K!sr$r E;%3t>R"2:J Ӳ[S U`>+M![?ߥwǟ'VK$tmTЁ eoO@c6q>}q@eZ=y pu"aWsT-!׻JgrۣDVYJ|o,PY1Lߝ,7e7XwBaCkv@>[>_2k_"%679.6q]B:(8cF\ѭy\#ݴE}dwvNq> ,DGYukx:蘙:87^ktVs^2zSDJį4ɰ-)֜n 0d]K@ÉIOs~A)ܪ7ZN7S|u@x<,JtE[o:Tgکgd}1а}Wc6v>/.VCi( >؊#ɗ?-Cuh =&LG";8w"KƵtb<p)@XW7oCׅo9A~ȏjt'h; ]Xc>~b @s! +_0@H:j}bH})%W)Pf 2ZK_8xw7B;ؿҞxY̥ tp>hVp RΫquGInG/ľ-<;hv$}G\ %]5w rBlíh'xU_U4E,@bB݉|+{Q%7H턖 pv͵O(mj䨧0nbX ?"1U6_BbPZٹ!(˕y} *PR[@wnןG[z}EU'p (? %FڏVnЯ֕Qm$ԞgAYL%Y/c/ [/h|x~ \@+Q;%1_R[uUR.ڰڠDίD)ئk@ܓ>^(8>!D-z' sG=Vvߝ׾fWH޿bgPn"]j@SaOTa 4]J^Pu;#)Yn$BzFJ}Y|&@7هؕri͆SP[?3[$.g y7{ ֤YM8Px%Wr$7DpP0!\CE;Ed7†1Ѡfկ w&1wޗ=gnܦƕ;7= fKie"#j(s؂%K^"[^DƧ۫W2 &_p&urcP1w=?} bkl,˒ 9}z~_(ʖfo gs3ԟhR/>UI^QhNGde ]X"~+|ᔿVxػ8OB&oVCeCG h0/R~*[K:B$p# |,;-%:N[C)Y"w=Й3\lor ԟY;Z_}%zH8{R-[! L俟$wq?!⪔ (+ %/a㏱lT`[36xP 1")hKoXg&}˹v3c?W ">Ɲڶ,Os J&q¢__8Vv :w/"mط$?Oh\Mfdi7^,&j1ȼ Ù}OuUn !нv==<+"zuV̆}O  )(;1=;N33o@xi,|/Zue＀̇|Gm7<'+_]nY+q_W5{!6:w=&=e^ԤI^y D{wUzuUIi|4>ssڥ޸tMϬ>@|ʮZm!O1|.]N"y_Pk4O5gCεr΂&!sQ 8)Dv!&dn'qݬ=Aq5iENe;-_zAIUzVʹxƸ_⹮7x^JH1i9qIņʐp؇w8AGL_qΦsZYgZ_ƙɴwل}jrDt|HFOVqYU49kFS(7)ŎA0Ṯ!{ߌ-?|Gyu".t%!@?Lտ"'~4ts C&Kb]́x㽉ꓐRF9I&-mP QT93oݤԨe}qNI?b`4ɟ!?[ ](_02z SZj޼"oيs+x%\K!M8wINw78&a{ /s=$C2{'[#U]C-OD[-1("i=Fp*f\F(q0SJ.,ev5Z r*Bx-[Mw:yu,j9'GIO`8[\i>ZU-}QV6x~C=C-}i9ȥw9)@l]|q0oۘ{GiQJH~9Ō,Q!Rc4rpyK,,b)#λ=+=ra>i/JTlurF- X:0V35Oof6bݸg-sM똦k>T!b7$:u>,c.w~K]8my.(L.p|>/l!"Rz:Tp*th[?^ 4 D}>~ d._/č\:7q:9K7_q4d%|_2dUIݰPeoQ/{yK v(w+ W"IܶΈ7dg[,'M_nD5YckbmDD̵/S48}b+2B/½$GONP?U]o>Vl&4$WA?1ezeR#}5_&ilD.9 YX|\ΨE'\sClEy\kh&~v $DL}h©O`ֵ{u+S:Uqgc>EX7v5H9B&<9:2=~A_3nqkLvߌ9O: }k%oĜ_$3;v$i\ *Fsxkǩ{MH5@], GzuS|L=}/muG|P ]Ix&ƫ@x@9-k]@цi•HwOG/dFcuWPrc q`):!Fؿm}BS^㣖/Pc 孀UDF쵋X7V#n 7UWn_ڛbƃsnhtyq'%[c֥. U $O>DbhY/5^]ݧOI?joX~!sZ0n$ο,Y[vJmd&!Y*si;4^NäXҲA_igbøZyb%"jMOw1y ~]^qX.ʎ-AdyX϶j׿\}=ɤ *My~7<())zQN|ЕkotT~Kԓ5? v;+2aB"쪵 3 \EQ)_Ф}:X%mn%}Ofԫ8@LMR,.:5 _R j(`>f Oߐcl:}& _1GK[a7._Gщ~=nPZJf /&ӎ^U]Vqw%bx'w ]Y@^Ǫ(/hv5DS|^73Xɱk~9sA5]X5T@YXP›˴_(B3/i}M}?G\k ^}|cWJ,n.+<8> \hǞ^P"m?PJLT$d)V٠8{AyudM~!y>⋥~hI]8,נ {;\6>77@#DB8g=þX8F֪ЛɈà6|IF-<8N )G2RQJhG#֋L}B?@Hؓ/^R_w{xُ[#Jo>l8MT`wc\E{qX*SiZO6سy$W^Dut_4NJÀYu{8%+3BEP T<aM^^;b$ "p\0=EBEP6>㸜(mR3:,ⷚ7˃ի\4옘w]M} P9w] ^: .䀲?(2xNS3~p(gc۠F"哩 *(Skv G$TZrX?Ul^? &Q R魯ck7aI}&Mzz}*S8cK;8^#L|!ٔ0OAB혷?+=Kzba(Ia)]8,\xw1hYՕRAs\pR܊~sM,oRߢJiIGOMO|&5Z19G]p,S\0d0 ĦOLd}jR,Ok[Ԍ^g#x(C$ I%`:zNB<<R/gwX#91qbQR׍Dꃤ"s&֮P GԮ13Qw:@zN43Z2cKycP6(l%.jB6_Z{ʫNfMOq7eNv~insSCahH!om( 'w@nUfDSR|*5Rf(T"#a"n H1&/i΢On{1/s* *  ?@4 4 deflateB* ;xUPTREEJ* xyL~ES_S'-mY9-1/k +YqgC+X"Q+{pBq2&;<0skEVzWVg9ǝ5ƿZ\l"R_dv/$zP'7*Ux13CyWsKA ָOxpo V?/o6YǔzaOmnYZNDQJgIJ ӲtYBVy1K+3^!!ǻxJhο\UG"inZ<!`-s/OcD?z"Rֲ4Ihd\oǥZ6H v"L qت;AgbjSH)|vWnV:F(ԷD^?,! =(Mzd5E"vӭn?P+>QQ"ʻL}\𸔁; Ybo_Or>JDq!7\-;| Ń/wᝈzY`/q9qmsq8m)K=SJeo)m1RHZ- M&,sѳV,gLޜa z-QW͍%WE zkj@}hdP88% LXw)zfA_iZ N%^!Psߜs& l?v~"Mjjb7![O;4]tҷx,֋Նڒ>w6t]-TS-|H"?i7`6̶*\+ېA™^!w'Ud-Wu1jS!ZW⥍ȷɎگP\2s{- roYsY" x ,x_&)î!-w7A%bu/9;2,җ_WDwsh{V1+8˃>vN#m.\:8|eNФe#VJ;}C@(2rl582"/T\Ȃ|q>ोHl(G&uְ.mAUXkh8znUJl<-ے!6gQyڂIakx](Yҧ+joaOɺ(]ϯ| )&uk%a$ъyN$Q6' CY" 0|zox\R'kC_)nݤJ4$rK !jv G\t!n+2A#ʳL5!⯆y[ÀpF/2q\7?Fb ?_g<`9ΟJB|jL lhz8<ٴ|OoŤ9@$4uUt7J8Xay*8JۡW/cدŒqkػ74.I~'1e%m;y/d>N>Jwü K\XI>vJ/Dyx"鸝?su9;duLF"2v?a9CCj{h)^\2$z^ Fxȑ͟/8?* Q>33/RiR.(Νrv{,gTW -GZ6=H+]CҟR%R`C%3P_g~Z! n|U+7Jwv]P-[QO2\T]q#yX@7S-8N:s*#bG tdwOUj@>GNTRPhЊ4v, g$D̺[Ty󹉔O/'KJ1/۾"Y7s.nS愫k3EnZOq~w3NQA7~L1~Y#rb׵Df TyR Ħ~һ낓>XJrT8r"UbU5wxZŦ;lڍsr|`k6f~aօ>Qϩr f/hױL~sr^M'\R|ൾ;&26c}8wjb+PO۔0,_;U^LPw's.'SY~p<+98IG|Z;vnH]#[֗oS¿'¦CѰ|yGFQ̙? (:krˣԥqg?_.bg'?nA+@8]*I˹rgpb}K&XG+/&L HAjgv-$ĩ=Y*]b[.L6?G{fm}MZSTIH֊-yc|>5%yFi,'뇜mV(-"kCH.fʿv,#ze(%x_L1֝}q0Vrœ@c_`q Co+6J~\~Qg.ؓ:dm$}2k:af6LyhYPS*jgQ컸̕+:MZBӋW׹ LCQ ,>Qd)O#7h15Ai ToEf^r2&wIvA71$^)-?}\>iX,0Wul<ُyFl`NC 2eQd&9$}_hl OEl0Onyn1߃xAU9 ~@⹼GSQfGCR}bK"RR2>#j?kFC&ϊKjA(cuXJqz!2pg0_a7:Yn@yG =[hjn~2@y4XM&2ءqytMϣ'}=zE.a? ۓpdջ#)bZP"vt Ŭ ^5570mZ.澼CG .ke!_&>-7/]#M)SJ]6 ,cF{63AgG񕵗 !6=*73,[zg/\;?eW0m #ewǂqk#HU,Ԧ3vŐqb5a=: Wx{T@BvP3JXjbJ/9_*< /ro8l#ˀe>+ QXxV.)؆ ށoGøG={XxT&'ʹ{ ̲]@f&Uj^]4v{JCw);[خUEr'ƜKDSU_O$#Rq?;o ~ X9wԣ*D?Gbt:O0߇8m|qCRrɲz](o^&[ryׄy›ם2,ߏ iZʞeS)ͮN xKMdR_U LkD,3~~01PF K{8fFAu#G:mp`\) D ,;tlBE{F*9!ݿhApqd㝡sJM!l5~}:?(oyȿ7τt\Gu9īp|1,+\ỷV+a01@kZNzI|['G@E'lǻ\! GMUQ.Rr&s%N/e[u~~̶^4v)/pt+1$i"a& e_VBX0AH `ER_x#}&`*.ERʎ4Չ @Mg8\I̗ʼ/% ϔBZ͸uP ({m=IBG;cYzY"qq&`y]Hp}*H;3Ծ= \( +a_kTe%+`dXin㴙uQb|eO,N^c tBŢxu'-s0^?'C \d{šLr)Ьx& ze!g?PiuVVC٨#=o" '0we.3|/ f$~0KtM]sOpδc^tL~q5)^vy np9Do 2#t!"{c] ?pMϯw^{"qrg3< {OebRR*]eGٯ9H=mX}awGs93ܡ,)ou]Y88c*x0dnl3ZMr8>ݺcX{J/[ OUCA[/|զ}KIh㬆 [U"AHfFd@ʷk<^OLj%r+J}ϡ i=Q!riwc}c>v?ߥO;_}ǖ!?p2|5eF[%ⷣ;BvC!}JUIEdLWp+N;f.r'nHUg[lޖ@=y bpķ0ؑӪ}&?I%%{4qGDMsM. 0G|%aZMa#[o=n!6`%#Chs~񆇝V8R\p3{Di="ƹ>ⴍVov8q@1~BCJ} gx.8x6}C8ʟN0Vra @f1dm{|?XNכ[TK#-rxh~'NQXl@5![CTJƊ{v$㇡Gm~F٪|E.h XcXakμMP-_;9 (NU0=-" X~g*Gju8@Yrޞ gIT90#B]\]6`#ZEI~ڡLX{IWSPtܥqob(IxvQsw 9wn/ [%QNkREI?T ./uR- #N(5 uGqzgjS* *  ?@4 4 deflate_j* ;xUPTREEr* xgXٶQA@D@@E,@/rR((Q$g%(Q$d0(I"&L0DDQtUg{{>^kaUwe9oK:~XoVtb##9"eRQS\|ﲯV;,v =82=:<4H$ o7A]#_ًmcE_zIϣDf W F9Wۅ_יeg\nʒ3 7H#3}V͠YCryeu^kY]E`hrp.h=ڏDz]jGO]0J$W`OlQhl{MV t[t?oDMkr1?|^R͒D9׹/|\e^F,;b QS+WS, BP"U:m*ѵ`${AcV{; Q 1o-K~G?3U q;v Cj;w: d:$3K+tq0$8WXer}"i6w줏 S *yQ Ɵ owZ~Q|"Ǥyb=j.TYk>¸#Z+`N Vm}h% KԐK1JHfbWNRNtTzK Qͼ!z(e[@,-drebs٘RCV)۷@˭5c#pY*7vCXH*H4.7&%B>Sveh{Nv^J0;|XiZ@yW1u?J]vP"v\ƪn_A᫗JoߡjW2\D9}v ܦ`^|*xtI̫`h45BP3 g'apT9iO\4y}&sh>.W}^6|?z$!rK\y{Tc\bA@~^ŷŹŁR"-%Ѳq;={ÀYoFDiKn4У>._.{J3!:ƮuSw LRH0@ϒnXn"7U70OuYq%Q"vo<ƴׁKhq.*e~̤}(Z¬eQ";_Lp=e[k ;ȦrPCWu{c,3hro<ہlRP̹of#)1 4{{5v_Q-}ϴvwG8@JP[8#?ĎZ ޭZ|t> ǭ4DC1/L(⌜ UZBPZޔ _'ܧqחjCq:~A1nVJ8:_ӓ%̒~X*$]z8p#t̻D@I?>Za~jq5%[xwęDVgȌBF2vTo <|qS;\!9:;(9 G03952@}%ͳ^`:x|%ٷv~@p¼=HX4I*uy^Qe'{=ۗ|0ǃ?ڮf]0|&hΑ_w#,Ձn1DP[2AwoYv~IҖ S)~^`*LJ;6M+A+MCV DkYsn%.WGѠCBmM)D7jIpO _S7҅Li;Y+(\m١yX#pw{sfX=+P-[yG@|m7Nْ!r{?#=Ϟo[xׄ')]3w7[ Dȯ!j>A7~,({\6'z'o]@7a&->,ٖ53ŎGn~RfY~'<#I&7[bB]+m1 W'fK!&w<a4~ܔ,N&TUq 3tþZ$y<.>S 9)8TRDq[?O RzlG 4cixe4dʢx ݖp/oz[W!?p8mgWwy/nX,gޛOT<Ń{E?CiJslȮsn 4E+ӕ[) lGlJqAe60p@6[ORY!;5wHӛ\?/D,g CдO`o:J98 '8L R&`կD,}A˕$$]isA??Sv> ے$kQP`8Σ<=P4ͩ^=SfՄ<{D VF3 FuNz5.Ϟ_dgbWޗ:رdn~s`kxwE&<vl*VwN߇$!/ Eˣ9|1]\4 w9̺oAKw_:17OƓWF~de2Yiv~ùΙ;BDwvTe(Ӄ Yk8:Q\^?MlIuG1馑{,.oJeJ\R➈O8j0g_|~א蓋gc| ; >~!% ^sF 2eYw8b" Q_!lzRIXeMϾq20.m ?oߧ o$(~jU]}˄_F$dj 3t%!tJ+\gb;>1%31"/t?C~KOMpzk7v \3 L` |JA=: 2ķ8#k?mZeVdw8[/W[)qbSߴ 򸽂 <|d?< G̯SǤ;sCQ"&S1W D}ּ|6(X7i7ˌl2vg ďjIlU6{*/KI2[Γ'ָZV9̫QՊ2WUq(mk-uƱz"yIRv5>8[mvDٞ~dڠ N9|}Ai))KY.el>zY(߳lrsZh =>Bc0{WnJ NRmhʭb ٦ ٲ`649.(ժ߉;\_~65WY}p bE&7g8i~Vs2:D>M$[V9#̏C4DCaղWFK0gɣffq$dV>TR@eAkzapoq@fh, HOХjv~ a7j`!|plJ16Js?EDE WH@ƶ1'2a^ \Pk:b,ά4@KHNEE*i1oFB=wQ+h˪»l\/ Ӷljqy5;No<۸)exFZ/\ a/zch!3=tG>EIUDl<χ_\l}Laʟ{$ᎇګisswu 4p8@uo쇄ӊ~Y ư$Y:(߿t>k(l 3\i%bNsh[ ?*%P^]C9 bC|BJ `:V}5˹[aƋ-yN>ͮ "|OjoaA!Ipz6q2N[\]ر%V+f!7Nw cy['x1 J>!jm'^6[DfhF [0F(=(2?vݑ o gL,_'J ots @ %sE;pg":xS.61a~=-$WML(۲ȴ9yqw6?4lfJ'GP{I$A||xD٩Z‡ҡwbSNu=A 5Y߷ӥ v@WߞIFEs=M6Y(ŋH/*S{ pOoW[aЧɮ _#[Ǯ#hޞzϗKxo+JD9=xxlgF{|bģTKcͰð Ư;+j$)?B>hc) ;߆%HykMܰZv'!L_HdIA~C4L( ?jXܩۈwp!̇iar79ʮ=ı]ITa__ȚUyc󃒄Dj^Hz$Orf P*<ń*]/$q?9P%%_ll>" טje/yND/}5rWr@hWߨ̇|7ģN#YKm˺Q*ݸ*6w׵7 9b[ *Ph \cЬҤS2 }\F֪}]R)\oV%Ґi;I7մ_˫iu>QW(08}7<9y,V|C24bǴ1'qCR&<nlِH8PEc^LPxW+_zT#R 4_\.B9Wk)c`X,u_T3j.(+w?tR}~{?ZZ{^Zk2LfZR?ݞi gG0!{{XK H <>=o-N=e\Um+"v;rҸ UfD,Ћ;) )v e8֢ ILS5RƂ!@@ax`ٿ•sP]Eqܔy;W5ː'b]=ZDliD8T{m<;R XyP Pz}y&7L8wQ-| NQpFX^|5 ac1yEԮ6+:9_?@r\yzMo ~K[a1_t&Q"r.r ?x2"Il}%io[bOsg7D4V?@0A>a+ݠ XjQZ*:?df.|G(~u*@i.65yڜ|e^fVh:=2 G3ٯW\"K iR K:!uvJ<ޑœ%X"ǞQq|Tl y_!R,5K\/2S"YzZ^Ku/)q^H1SG~iFΒeiP;#-zj!BU't<1Kv:UȍzI's9P:~Y:i0jc<\B7%c~S+2R{g%Rl+ʵ$ř/%&F|Z(vcIpS *|9ڹ0֧ 7 {@e:y+ m*P" bj MXvn@P衵ͧ>Yۄ1,ܗ6L[K;H__=Bg/J+'~&}^nڢTE|BhU|#%k%Kl=FXE_Ǟ^:]g`[߯#HyI붘 BW)Ԡ%ˢAs u&9Iy~hp*##Cq0oM }*n0ު ^[SLI)hG(Qux08y|m호bnx49^ #o02h|qmUѸkj+CC>-݆+V%WF̪Ms/ʬ,GEְBa žƱ|Qbϋkq]xRR褐 D'DEZ3)>}jߕH۠_އG3 sN$IYZA׵g%ah~SHǵ}$+(ƺo,^ m^&'̖[OtZs辭k'F`(Y+-lE`>mmt&Fvt%WǶ&BZ*@_F3c/zq=q(l#!lymo<+Ǖ>~#:zj_0Hm}k(~.oh'͇{q69a;dϳԉx >\.22N5} ^ _ :èYDqF(Y6xgstu|e8"az'B]Cma7=eGдV5}VrwJx3D߷LNJ@vu+et=I߳6N3@#p}1u9Ǒ%TPF?FTA14o"$>ޑK+Hؑ0;x S+-~C$a^e X"bkx#ͰSx*Gϴ/g9c)P`=) 4jeQ .e]u'`.b#-nl>|vYlvkyUuV4!6_iL1?PL,FwH o? DE?%z8؜]ɈC,=TzH1/I%תWM w^%o}/vK<)y^_noi5a]pDº6#_Zm"Ea?J GGvc[S:"G heBkՙ\{ϥ⪊ʹG0~z'Yyi <^uK[[=1Qt$wW^b:u"29hݻ\I>|ju x0/mct|^*+Rf\GqpfbSj|Txה>)$&j|7u/-%L6r9=_"ďm:τwW(fSh' <츴ڀb %AwAwEw@Hn%ƕHZ+DB?|179ܬB+{3ٴ"<*6xd8@y+`zuX\}{4sK8k_\Ü%qn./XiaJ$PFDpI/@i/>^J ;G,lZ4JO\JxSPt!@x?#YƳkdY_*Ģ,h3s9-y;[Tᗔlڨ ?+Ո)MT~PC ^bËP8͐VY+~:}2rϬ ,<>v> ek#6,P6#]#@ds4ʙ93TO*և4P~?Zy#K=W(3;)"vL#3h9,=벀[BJELnD^'Z;˧xi6#DSgbְbeP/&O{yk/eΎђIlw6JX V,A"/19O+jS>3Oe6~=$ٳFFtyٍ>b`): ٺ[t^_|ڳ6w7=N}p 6NKxi/ : | 8U.gR p bh}F:/K~,uVMoȨ#o֏oԼu}DZ/$/9APӖ1$YoU߅p1 ~RҌk,j$W8(]mIXdc|oz6&yAFEΠ,i!;y\~Չ|4f \n_fzږsFS<`]Tڪe(UNݎRZܭ02 N7Q!Ex(QT7 b$O+I" u%\M :Nؿh/Gg./~c+]ɏQ!}"OJJF%Bx{ZP8f_]_7R?Ԃ$>q.Ph=8bbzG>犚Rdދ=2I'u"AMvB8ƚh)'YU I>}"%OeQpZ8o΅@щ`"B"K^ %IEoߖ JE f8;hT~ n7 q%YY(Sx# %Iigk2v:߶;R 'Vk}DA#H#x01`8/>@2qP)^ԬqG{( P)@ܶN0c$JĞ3uIկWT|k@KQJ,8F<~NqL Xup%뽠xe"!z+H^N9@|kc< ,c|0N1D\t Lwe3rWǮN_f%>ńR vnM޺Cݳ(}s312﫡D+kT\g7`ɼox2s/WGf;I79y{}s` (%Z>kn{*oh5Ȁ"1ݷ%/G46 HTi8zcQ wgey~SX0H#ףּ2 X6 n'bDĪ(>LNW2$°K$x(%PP/Cm5`<XN<{Ux~V5e i#4A>8ś~Y[=ޙl8Y{?jSzCr?'yQef=|x.Pi|,WZ jD-hV0$#+;b'`i;| }m}U>J}?CO=JĮ^Fj 2|J\3L'̗VfzC*6ljR\:$9VP`_SZwK<Đ/-ymSBih_Z \¡ $ P~L:8h2 %laY!]HΟf*s }~颺 cK"cvIPw'W5٭sp+fM'tuLaG_ PdC'Nq⟝[cL@@E@zZKDEJ5"ZLM HeLp}ۓn==8k/[`n˫r aoθB]LyQF&( >mO$A(gC:'{=SMI i`nw̕_TxAKj3JpHtx2,RKb\fS ƪ5IyM0jA7tci6{f X"%i֑F%8_Z![ς7X?<~Zz1Fs5wULO @pViJg(Nic ߽סD-B̚L©(2"&*J#xDX<-?'E2_OrޚMy#%Uşt':V "%ZzWd<Qy0g7 ibL3/Ι}頏` gw\Q6+*Ca_fB{ҰuhPI\m7!KN FGVn rM,c)³EJR9yeڡ. eIG?HXuX&Ȧ^bjr[ NɈAyhA+\Vb: +\'PeI+đ0zhUJ\uɵ^@Yy\.)KuJ J0V;UNE>y Q.F1EVkmp \-n{iE J}:5A`N&~h[[Ck 2w?Bg]WY6Žd;$ʇ O g_* *  ?@4 4 deflatek* t{_<k{>{kCB^hɼ e=ik}k duF)R~l R3ȺVGT4}6y /u]?dIķ6_}kjF&4{%lA̳ }}h!cՃ 5g Z#]yOkrNwaqPzu^HfR+ӿWE[\9ۖw;տ-p!kOFˁ􏃁*l)EJ vIf4R]M/D%q, *bٷQöy3qorXEix aȥnzsK'_W ~M'+B+76[gZo}؅8^#'O@-Q(Xem0JE9~{3o⩱N甞3wGSt}P*6ՉC12!vmtgĭ *=/0YkĄA"RWX{vvB$WtaBj?kL~DU-GF׻Xv,0PpL*_MY՛#aԛ>ee( US UJ&kU:P̗7 RAį|}I4l%]l=σʀSHCQv4^f5#+~XK5`U檇t2 v2 C{ߞ8: e4@t~){蘧6țĬ2Q¸sC =MuD]ݼ/݅ZvH* Mmؖ~>q!9#k2 ֢P\C~~Y>&*R]0Aēj$k> .i)p _×>O]YƾeМ^O~sExJIXz>'z,OLI|"gjx`!ίelW*җ4d ٨fFkM (yZCWXT]n=l.Ik!?_IBrӮkiz2Zu`ˊ^'Y䘊%3ݗ?u7n&MiWx_Ȕv}VL@| @ t{cL:AA>㭤( y; t'0r@Ξ"WJu`y#jR=E*?aaE* lL.xJ:!5F$u![Lb2;J&q+|Ȭj{U9g~ }ګ/=ZT>$SWD)v;ihX:rrSykp~)H<Z$) 2)Qs3t#O)Cm$#nV.T6p,T/JѭlYo^MSJ-F;/K^h&t2~O/bwq85`hNy~sӓP83b:h`/$ Oh]Ns]ұNZ-? ;Gi4eFÎ63s-xW7Em#Mf3y(9*`0UIucAh땅#a_dr |"#UM˘όMQĄt'Oe]#p5{БBaf fE[o*1pC^fbޛHe?Fn~c~'W2V պl=;\A6& {y^dTDʋz` Dm.WIѳupMVc/SYf`>S d! z{Ѥ9(KC 0{$xdmzcy\bRЍ;+lK;\!r\m[dM F]7$GJc#毾xh3ulj`8Sz+Bv8 .DFqR9{(ry-O^כ.ǓZ303I32U= P,(|S7x~=dY$6l[LWb q2o2JPByn0QJiv Y,H"28%^ ~j -]CoXGO/B|@񠪧C@Zc|*IN{:nw#(I!α*Q&g\0!Ͻ9R 4v)Mv|ɠ hbbn4j7'm=Fv2*w9y0{E\Јݾ1RʼnƦ@?.||IWn֢t.A21:p En $=FKmۧEӊ<F  Dp U-=ach ݻGpG<_ =5D JRY#8k=W0ijBC=į"`˦+\a8)pd^i#d^}T|"苢]rSpZ $^Mǻe ϡo cXQ:mެgc_DdwHt=L|kLʱ?2p <b8&NMQb4 G/+|K ]`c񩝃 X=+o2a.^SGqD Z~ض b>wb 6^_ o\~c 6:.Ο۵(#Bx簨)V^ג\m@yab8tT俶;78'޺Y bkYI}ζg7L w_{45`m8?:zhH}wKENCd׳yd}P%}=[շevZ`$JZ8D&̻IJƑ߿W_n䛛) ʀI;`Rӈ5&xxy$7 ~*L'@bz/' \iIqPbL\L:3@hl*>fMڈ)>\wཨ-nI4 D|\42l "J򁃆׾8]4*fT ӻ&bQf  ]aC @x  2ua>9~mX,(=ͳ,<= MtkvN̸,{K+WD"VcXz;-p,}^Yl? 58m!u)$Zf@y,v~.N|.+K1MP UmrJ}|p Rn; C`(,M{ [|Nx <se1(: +V1U!`WvI9KM9XƱDS?q 3-Sb.>}{({ZB K@:k7R3 @4nvJ|a bTY#Pn9y $fsV\!$ڽol1A]b&_v)2t~9[]^ xa 7Kѝ_^23䲳pB\ >]9 :> WpݛiaVZu\k,`$LSw hz(iuRU6CQV=}xۇf]fh >U󭗕;q߅ԝg-3%o)Lsi[$ub@mdV(G;kSj x;n=\3$5U)ss$ѷ`!"?ѰXnY6_ɀ;u"dZKBʳYAh>5';a!Fx>X~B~Rg`ȃ矄Ϛ< [hU:HT`Ka+gΪB@1,B.mZ61óG¾7JH^U8B)JwBwMylqUsl5muk!%+U2`pH.IT7]䄣5YM-sYpȪ VIuO_k+4QF|(q3ˆ/C ^ᠠVw| LJir'C~`fC* D)£@O〒Cs+]&ۦBP kLV Fnx"l])lڿX:Pp bⓧ3o/k89)\|t#GC \Ȳ`"߫BO>H$$!?+\>_ G)dCM 8pLgĬ l K $TXOoQbf}_و6o8A$nJOxٲ0J%zCP4u]OF(eYi,ޅaEpBS]/ʂbLaɀJA?=xXֹ \3ICK oX[`a 8JďW!o{[DG9>>ϳְB1.@M\|4˭mFwcKgT:NϦ# crdJ QIܺw·ۣޗyAfQ%v˞q0̈́cwA[g۳@ͻ4s+Jl}+ż e*)ܾǭ4`wA%pP˔B^>t$MOẍŋS50NZSʀ+/AIQ\P~ +m(Wu7gsrG"ZtzEy-[3A;V378܍ X-TԟQ-y> "Y<Sz\[kyٱoineEh+˟?:ulaO_~̒hvK룵ihۼ&;Ŋ Rd ķݧ 3-dS9 dE6CDVBV'C^4D O=T.D]hAx͗ #4Tp:toL_?d|)9wi;y+pUh#n\;J2ؽ.ɲFk=>>?AY${ Զhķs*)(mWEB&u.ԓxL]h^Acukv GN۟!=9<3:Sť8HAڳX{)4<wq'eZErAg$QT=mh!Sڙ.DsmIgӵg6/R iny'74rqDi񈧾 A2Sa\ їPbkc^ݷS5{Q+i.JK@9r{;K"#xNT5gN _ k \`{kp 8LY}`A_Q'7( ^{HBI_My4?.|"t5852]H9n(vt tCű7l[j3f0遬xMTv DLH/,'{[py=L^ޕڡ֊L&zqaJiIzPnqZL. 1[~Hy7/YcOx]FRK8K_"}~@s twɮlCoyMܸ:"9wr%ţ ׷\/ -H ݻDrڻ=vv^ϸ~ ;w5_7퍾:N( v||b2gfx@g3'&+ȑx%obu+ܱ>QwnHD9{ S" c8r9DًS~ ϣQG+ Jl_-}DTm,J4,/k|.>>)@f󲓬#1q8'm͎ӟxŽ^*Q q+efylCaG]c3zɇS?=#DT,$c=]k"/%0/E$g[%Dvc(hv{(֑ \' ee B:81Yz_8_b D1JL.go?bx˓Hp5%))7 /A \ÈQVK':4J A2#{٫v:WɥOT-Y0NZQĈɍl7 p㚝g[lע5=^+R>*Ywu1Q12ZF@/e.N n v-}œ=XT)dUcK]:_'52g9I*2!>''P08g#=~`bV$E.r[u7lZtB ‹=4J Q"]2A:a4** *  ?@4 4 deflate* M"m?~z8#fqJ$}loYY:8DnP6w֜R{V'RsETUmi3c'5dJۥʺ\V0VO*SFǭHx&P69?Y_+(ᰨqEm h0l䁉c6gUv+t;:5~eN6()I6h!H.oZRg7׿L ݬmb}R[Q`xi gA3x0o,wlNr~s=v`U͊sr(if$~}5P4cJ>g6uț=j`#TeǍՠ#QGrvN[V(7d:y%=7qHG߾BцlkIZvx5I}U>KH`cS0`[ (gOMҟn7֓axh=_1~궮ĵMu20/3)s)28vXV"(]:ky|;?٭⸛Jhtѳ#ah^Q$8k熵PT|bנOȾH\v JYfEۓe` D,%[MNS!Vңm Ӻaxko+j&DWtoI];]Z#54z9)]\ >hI)ĸI{)G)n*B1dQ;$NDX_>?`I$s%="Vr򴝴 Z6_"$`~qEz?w~,`v{4cO5V_X-KgY4) 91Vk0hkV^OHCԖ@fg[Oj6NQ}{Լ"IQAe`>MW,[ŐU:r*FN9,&/ 5s|I]ǟ<x˽(h>뜘9Նv$3Z2s,APH&]?.̿cr-%R} }A;V"~'\/=m|خ惃BHTRɭZ U L|>8 (jqjZdMXO(Yɓo+|< cgNճٷ܁1)ώQ{0`{jE 4 `G$Jd0 /4x/ _?2 nᏕ@wFJ"0O<-v7&U9={1lc!_uD7 3 Tһh\@e$w9~DhNb}Xjkll8~ZNM|D^Us‰:uy8-}P(Oaa >χnPTr|8z Qzȱ N۶uΎ(/RMT>2Ȇϗ20"w!GYK?RLg:"g!)kb*+< n |Y7ߨJҷfmM@-..ܴimd75 o ;7AT]˷qyK7l~>@y͈fϙNu^֊2.?.y FM5O:Ez=,!#hƗCR|n3eqjU>qK$SN߇=&l/N;e,mѢ?A$ZWŘȮ# evy/QՔf<͜$N_=ΧF5u;.]i,Ie ϒ4' Ǻ"mgq~$RX gM[_Р-D˻)i=M\*ݾfP~H-{Ag}}ryy ,srF-[$ FO˜х1u害9*גލ젢8o:A^<Һ~ڟtT-^ 4QԊ..GP]봈I]5KHh@T8ܞ > /`x~ k[w]7gX:2ϻDcOTlXA:~O=vg-ȡ?Py (Bsua|1Ӈc=C՗ׯ>g#hLȫd>/iMPanQ8+?GDܟ,>[EvKƊ=>_}${5SD+_zο/1,zȩjBvm$$$ '^#|i(7~XGbzg&E*wJFFC~%2,;S+2VeKht#rHKc{F`޵6Pj^tzTQ.:i~<*ʌu./,])vctn$FAW`SRhWG`]Fƍ@r~]ܯrf7WJ &ll`c0tBz?kBvzj/L'a8ɑ1>ԶC.ٸJ2d܋ى8\P[2Edt;[3Ob,|ukTtvq ):4G9dKnPh='vsOmƐ> '{&Df8 `8E a.⫔;.56Mx4c:!Z?Үad՝y'AEnx1W>[Iw Vh4>J4SV@Fims 9MúZb9D L4,SGtC>Ō2NK;^2X qMʝcw]Q$?Tܖ`Թ< AН&s(ȱvͥ;ߊOutfUcA¾PYi>qyۏ_|Mh{d~Wa\좸;@*CSSIkXT/4@fQ&FwN [zd9g0sWU}*a/ɼ{bz<} N7WO^?nx53qޕJ{_[L/@Yg"ʖUAyHV_Hmgo͕}%$2 ߪ_ (PqY~lD+**A+I9zC"j~FЭ-mT1:$~{"tz_޻d[Zxҝ-IAI.ك֮(/r#v*|s2OQCW.>,T6~,nyvbVDP5zdٔbR]> mڡRy~“QN* :2et`IRP>Hlo~ײ `~m 9U!-NgC?*6$V-)C[$+xdKBSR<|1oMg+7G}ʟ'3Br/ (Fm]<@5XY;=`)[E5R\qc'cΫVv1 {@PG'GCLrl;_PqD(U7HgkZ 3TUb.G6T ʠ#&J3LٓWO8.,Hhrr̓#z]/:D6`a6c99=ΝDUt{ZovH_T;L4Ld쓅F/ԛu#y T.!σix?Y[oΔ*2--.>s(wN)iՐ7ktVݺB(qŸO@q +~V: @8(-\K\헟<29)QM纎W`dHYk(;7E]X}3yv) cNwp]I!GQI?{s;عOYv|nBPrv~;xN[yU{xu9 沷-~dJk,&)~2ҝ?JkOh} # ^Kq\/n$'֯h}g6UMPn"^Ϩ;o 9ջ,b5A̐f{[%SO&ƅ(Kol0ѓܴɤ PX %WhBy&]I_~if)G4fe`,u^ pyEC yAC|rX';@Njej f@N&AJ8F+JOǹO#'ֺa'?#*&]oC -K{Q̍C둝׃ > 7}9eГy<|VC- iF8^vQaj^{Y2ɆjOnQt6%|1~hA?6C=%׉,d;`*ON`tZϪ@[7:|awC.]yWO3Y A* *  ?@4 4 deflateD * _>LQ— }x9#c;=`+=75Ezکzz\0q<3"U<Cxv]cZ{)y;ƀr5~Isΰ԰Er `\WevzB"ag]~tU2No'JIb7B^tb)o{U1_QԒ'T`P:'5[!$iN/]⎲^?3Rq}x\·×\ ثGc {Hd^fS<@TegLIM,Jl8rN@2Q*^V'3߷^ 9&DV5c{K"~4`C{>hbm|9t EACw1HKw|UXVTKn;H &:۾YȳlI- a>_^8W3 h`4U*JD #m-F?; ڋK"11V=rWғ<]Gf`{Ctdr;_Yư-ޚo܋%[p˹ڨ= ט rD5#6CދM.z$a:,uʷPtcIq聾/[l4_x다h?72_5BW=IvCEUXS:3JզDcJ$ e{ù5Md7z^J;R;y\p"U v=9T,HۡB pcm%؇D*B笏N?k;`H2KDØ[)p2CjRS"P35Fm}7I f%1J~(k<&IFVT-XwNJ[de#H^d_K^ǁ}zzjV?>r:3>t7œ>+!ovE(ERzmGe@pG*GF[IxhokӴޓ!+4 Fm!Z990ҐהxQђԴҥ{9#eM܉":/kv]_Wk) w(}x~hqh#ܻ_;y J6$³7==;|b -G7oՆ7LIiWv^qYQ^::BUgekHhH#? U桖(_Ѧ'㬐6,%2H& 2 zQh56$ikJ_"cyбspKR:Oq_67L%!']j㥂lAH5|Bp{s -ّ ]#7@GC%7bD%at!XR|PΨ"~Nb S[r.R>A j7ؠ{ %OzF wY@X5-\սE =„9DUң"7&iaA@_70>>n(k,۟Y,88Sfα$"基vX)cNDOY.-4A('8!,!:1 TtѩXpϼe*9?R8CyMPcQҜ=GoBKz⣜l帤(d=2ϣdM*Y )yAӶ vo`Jt>o74<3NT|{>ײk*y`ko0BNb 9j.05%hPR||.Q6'}^irN{E7:.r P-q5|I)z >i8_#Aމ;+n D*~w (MV禲;>(*<8`Q:fJc_κ *#5?M^jkYi!'"q=/rqx~xJsu'??>{HWklEpMb"Mό.z .%&hDY-E*&>xvה3+rl/|(_ސ:z:wMUc;!a}Znp3u|AXч{)VJ /4"f;/oX8{BN@O 8?Qw",FGRZ:{>%8.¯rQr\RߢȐLc v!+4]itGQj@t}T>7443Rf(| ֓] 㓅W+v@knHM9q>==1cc~Ò^2T/NbSM,*/#6s[_<\j1DŹۼ@׌!~>s:z#Hqq7 DԴ)*ߩf'Jr\u6}I%JI{@lOa/m(T\տWjVNXlVûaߕ\f(٢4АΧyߞ DM AAVm:yI?qR,;c M2|7mkiD SXEO$8ܞq$ D/cqnCh0I2 Y>ߚ7Ho|&zW v$@ #lYK$)b"WY^ oP{*E]8X, MAmnqҵxwȤ)2GL8T9~R ?]TsZ| 7cѱ>NJWL:ץ Bv!K[Dԭbj"@9]{̔d?$Q^ƎE92eB%%mz4= 䣼8XY@fRbLNj7B⒀кLlwyS0ecw6"k0/BӮBЩ'׆*i[J:!RrHsT-f;ߟ6~A`T!;XsOv  VGّ8'L/x^#b ?U?IA0tznezu缸.B @?X,,Z(oð QQ.%.6@+}|/g#$m>8͝K盦(U t)p ]T<߷3?9IUw.i_ ͞f6ÿ)t k΃BxOCku~^(ރFx(Qޠ_Tj!Gd}ƛ~fه;6T0y]WDW>Ngk*oQLCv7Y)VK(,y-A`P ϣe,aNYS94W)O6JQX]%ڒϡ\%jo`wT9e>gtJU"N؄>Oތ iM#X{IJ#9k? $,O眢 vwL'yCE9Nd%/+VNrn=G,i$Ne'+;{c~*v ̾R[vвq=gN܁۸?8wJ"F Y43يwف&pPD~9d쎐Ց[: '5*+~hƂ:Qx}ݍEhxyݏ$Ae>Jwje+o&Ϲ\GW}im)JB {/*CiU=JʕuGPa?5S qY/b<&Y{rߕY ^w%'/0#.N)[lƼ>ov!ʻ۹p&O8؇>tBu~oKNL LҨd]_YMæptZŕ"=U,!SA09Z$A1\Eb}DNҗnlj!Wد} %bK5.N 0 [0=uplK5[᎕&vv%x s.HáU|V 8)YrVp-tW$Q"eOQz`AuR<]AT(Du}ߵa UdYGT&D<+?p #bZ[H_:fM0Jm@ SE%9jqh۫ 7F@͵PPzy,MeWD9<[߼ts43E8u\;>Z֘,jઑ&Mt^U)<ˍw)sK!z-27v˧T@6NjQ& 4V\qh {u W;!)QɸDmXKxߟQ'>4GK\`}kرa( {1;ؽD<%e!k# xoF[Ezm"PI&/WUB,'~Eg!R.#cX/\;t'Î|`aY#F^"E?L4 A2ebݷuѼr-_H{w#t4W|>/G?Dϣ[ qc^@ `,k 0fXzAg!b۽&DnϪ ?ȹ }]XNQ\ح)_7Sd+is*| 1&T,dGRga$W>Ky'nX] yېD&QzTcW|^#;G+[`|~2 LfZ( ]FlB$;]'cY&9 WӀu&}R+k!SDv:ds bC-+Ͷ3:Ssv,O`Uo\uQ|m9 r{&yD |Z! KjAB5v8m;=XM>߀Qd8e)+BDݹX/Y * gQ<:LDܥƇzG}sWB2=O8e,`GYզr|(AmY Γ$ׁ嘭QsQڱ_]R#Hucv_e&a DG&PPкK]A{]#1'@UƫPvfn;cZ.?}.4h I7_=qI%KztƗ@xc?ߎ}}}QB^ de-;uA-+ :]%wlA~'i5[@(=5v.R*2ܬR1m,&OO݀]9- (uvi,L3^&5+ؓ~&4}´+دFJ>GŊR^̮׷%Ђ5VΙ;S"⃒ThO!'& cYTĮgF͡巢 OfXk_g *PK6 "Ζ eݍMHy/מoR_͊<' )Qv6BpJ[ D3ԡc]Qw>&Is-N`_ DY)l kvIKl\q9؉>\Qt1nUM?|x{hڱy!rFPA|~'xɗ~@H~b\=Dv+ge,Ә Eg#V iseJ sݒ{_@Rw;Rqv׋x'=Lg詢x@s%jYeX GC2:+ yDwp?թJ ?K/i"DLd /X}LB.pI|r8%?W5s_mJP'i7vp^>Ç`hStIB~'),Rt ~ w{{3w82}~׆9 ހ=kcJxOb$o{%!_뭸uOCtkl|J{xm:]sYt[STKUaғu($6}Y '?ȶM09T<wJĜ (~keP3P_A>(dfc*oD$܀.ZZl>RQ S2KAI}so"Hl ^^T 4:IH׬{ OJeBR>g1+#vyC8bz(c`$FFCރ+bF@t7iW;n&!;B}Ӕ+|?+Q9÷Rcnm5>N({7 \٧C'̃2* *  ?@4 4 deflateb4* =xUPTREE<* xy\M IQҠYڏͳFI<4*%M44RP2&&2DZk>s_}k}=ET 0[W:A֪R/S(?n~2i[x-+(.w-UՔ^xr9h6d y^]Mv@:L m/e;a~0wyKGK[ZB۽.l/??ݞwT%bP;\ /tOB(r1ꤲq, X/?7aO2Ucus6 +HC%$3nRVp>^]* LިݴGkZz E:Z^wI1B?WE?ހ0) ~u{vCتib~tvH{h\˿z~WGњ*QJ{Җ$;O⬵ ,!덒ui4dN' f`Nt汴n(/ſB9۪,5ZXz>muv*,arFcfnͻ7UWw]SE&vA(?h?bcC+QodR8[#HQ`ikuԈ:eA%1%mItrp2=wGBh?GSyFF?gsTwlWJt^Mo-h -#NKŶlß珊+_նV<2md;Arhܟ=7ԚzҡlxeO^O"K'כW9nv+Ed0zmU8,DfrD.=- VW^?~S`[[uxXt_e&mENrw//OBHX%wDY$Z1o?j&ÌzGN|gB!Tƃf뗞D (&"kVLO.j*| uxβ ?Lu'+i w&uӢ [kwDN~>wqBA)ltNsK2Kglزf2\ݞ,V"|/n„CV{O!Ļ_,43$vO&gG-H9N]0pnj;3ƪH0.wC)%r~ÜutD8] eTkLYՉv{c<xEs pQ%ALe/J)uDq}0;kwD)dwAB/6JR-fRY@%|A5pļaC.q,[6t0(he+4w݃HZ`[ɉڀ09lԛ3R@>Džq> _}V9˅ju0i~yVR:ce#.^XǼSsAۚgPX8MgeE DEO62x8GCֿcDޏ^kN14(uR/E>o%Ro{mm@!tuC]r(ĢQ!D%Jrl N(84%n+krz ;@ieDLŚk%EXg9?ܷ(OߕBxt4Ocة؅tiMl 'vG_hB\\ij #gC @fiOR-HnI3 圀ro)t;_aJ\셰$P(~G~.pED X̙v\ E9oL.Ciz6=ՕKarA7{ii=a QZ/+.OuF\aSWS>YL-=N!A2gO_Ye,򚎳@=PiՇM;4]rQolUp?ƣi#73S;]/D[R/~ﰘ/XKAxh:we'q@yJu_=|/ΖI|}r8{le"%mVy{3 8∱2g%ySe"ߙ޶y\ U1Su1VBla- c`i$tW@ߪU&,s l8UpQu坁ЎPo$-7f*b랳/( ӻgC~9R)}DK`>ZOz;w 8ʝ\QL u- ߻"$Oil{A(]z\j)+CQOьr^b4uU y E͛ RO{T'"%|ߔ8WXq_ q֌p,[r*vkrW&D߇\@5H('O {0[9]׳e4FjkR t~rz n4z="?G"3x>|T)p2 xr#"ge\{_Ҏ-(TA0T?7R#$Q{wȔd?oXMVqHI-BgUnJ=N H|bu?Yg/ 7ͳot36XU\UTw@Dux[W>bSj{`a=Peh8UU:0/XFT1PL|]^ݣ6eh |&" iNp~ܓ(zEr t#D#X8,D2Qrs]0PU$A{zdhڑӂ[a-zֿ-r6P /y2mi{27yʄwN󯝻/ɜo_4Zʱ?(Dw#|w8BD>aSBP"vr}L[!~l|u3l PŒRwЈnXk%DwXS'xO| <9G>S5.'"#3OBlA)C@g߹-檜w4dP(QЭ}%˯Ox(o^,pW@ہ|j=(തC= J1Z*7;&K>NeBxݥobȰo2R I7Az/;BF0d"FoR钳)-a'%o>7&u]x76vn1v>9vӿ1'M :Xב6Ǐ}۪_(󈁇sFA6 `[镟C2ƭ=Ec6#w޼ʛ=TJ,W'%2!B?<$ -w>wm7`(j>m;/c| f|-W'ӕNxPx>hIDoNtz{!2XvQx JaߢuaQF90'^&#`iaM>yx/J>vWŎȒ6cWz+mT+g>}嗏3,9!pwfK(aتȒk %ex/TXU-w.ɭ!#%a~,7}R-’JKRRW-kxޚ[ۊCQ,VuQ_m M_h:QvdZje|qkq!!h1'gf-B懪6(Mٔ)cP{^m0gvŬJfQ}ԕ!vʤdP_hvY+]mT aeί3qT {hԝDONxK ^$~ [>hj[K5QhOD&_=gǹ R|!ogX_"y$^M(D%wBk@c녏/5o'hL?q#"&3om!?u4^U "_,׮(KJ[xS}qZa {#Ҹ]h=x2dDEWc[Bh}9I3P o,mW^I~Hm)R\Cj*(ݭX{ђ$x>7|H{{aܧxaIH{0ޚ읮\X?Y\DNiiiN@uB"л^OA ]|_x˅K*2ڽh*& bX?ښd>VOr)8*䗘B<Fdk{p 1lMoSynckEU0]פcE;:mo$SV-BWMp~yQԥ4*c=k6Tw s1@; ;+Eɇ6gԲ3G4ksC(vv.{AƄH$m2„f')OrY#5ҖθnvԺV8vx3}HSEI thotzcN=L9YYnd э}jKwZC oU9JۣK߇'QͽD{VP4CoCe+K8T?ڝkTq{0KF>;%(:>(UmWa%JVF%cn3&Fs?ƞt槎SkAgrGPe64 J}8EP]{. $U8ֶHpo%9ΑX釒}ߕUJgAK30lXo+řέo(\0]yqBw}zfs) M)v^|6\=)>׳Jk V5(śW[,g~N'ƅ2S;\zpKTǮʮlEX~Km?vbY,yI/Z42GvpD.$U֑c案HPdkjs9?LԾ}_@dW*=nJO!zw?>¼V얊%Bm;Qs_^f &ށyO& &>{߃$`S9 zqId0J5P"a^1`}(8`9[q],~* ^Jx/|hBg*N?SSLe R71OR oVNR?buHpأBÉ6 _T4*kN@^Û`«[ܽenj7 O, :3Aį2>8s{f A='\j ߘz 4Zjg#"=]?t+†'d׉I|N&W>;iwwsAo6)?z]"ƈW* *  ?@4 4 deflate*\* =xUPTREEZd* xw\[B{viG[{DC;M!ZDEQ(JҰ$QQvY}][>_<yqu_7 MO$?T̟Sy[8?DҟQf˺39E 𰗣WaiRwe:Z[ XW>׵3|?Vqr ƖPH3uQ}Mܴ8,Pu_nߊiL5^yujGݪJF x .9Xb]G~#]Qgͺ%:%r-x? IgĻ2ֳ[RnlxP\!5p^ΩdT~{!VFU=}#Bnk`UL{\:qvb FroUe:op78y6HIZ1J+21߽իaGt/;*K@Lݖlڵ{׎3=lEa^p՝.s3% j>3D\?(dϭ=fiz ~W/wjI{B3bgnġ\_႖+elENcO?vd'g oX-8=ưK*VwzNR%vȃ 73@Ө]׏;)υYl_D92U;Kq˘Caev>lzϞHvw3׫AiʯS{6sӯq֡uG.=?_@ՠrWM{Dy2{ݔEt x?IFh=\C-"ren1Fջd6ST ?뭲*;68Br#K!dΠZӠan>b_תRO/C~,j35a9z֍Hd@sAd3蒦xCOS0A`4C$IO+c:FW=;b %]M_SF!G|Hݿ'Zd斋OaNUOQV<^z&jON fpN+؀҅n\TjQ6_|R}O!s"d*$n F=/ O @E,Q{nU@'/z {Nmٶe\Bğ_?y Sa{,_&[o@SWTfrbox%iI8j&#=*\*<:A/=<=, ~q t&c,4Peּ*{nD^e:@e3v!WyuZWS9fbGH$<^ft?//@;)n=9z / lgj;U;8pQK QWrzQ*t3ZKlRGwykE0c;{ȏ#]ZHʶV^[C鈺;"!e)_ˤ5:ل,^ƳA<>pNdt0XLM<#g8NVpCe%=駙6=Xw8J(lS"c΢ h f//Ij+)'=<<徬 av*0i"zL}#7Z-]Z{SvS$ (--s!ŃhS$9 myy y> F52oX(Hڠ4>k}ZO֧%My$s&hkI Ϣ5j LB/3~mYuAfs5, Babn<8p#v~%""spr \kӼLQ)/9Y|WMv-;<~z/i Vֿ׀{-6 iYK4.:V\Ly IH,t,|u~/ǫr$y^ZUwA [|qX*z DgFowϝWq/ 2wSx.Ͳn@)O"1ތ= F;g<<A+م?.ulC׋Bϛdpd ;ث>H^,y[o lٱe"q!_<¿,kv%ĉ)J~ei-d2 $zA7Cv5aBGy_#q~ lΒ&{/_pIrI`e_uq@7WXx.Yo?%"CA6$拉 7 8 H:aɶ8N<2LwurYhg31{^K1fͩL囥c\V>?^оcn(8[ ,pE ٸ <~g ۹$LGašs@@%Q?Ĥ ]~*N9k7}\XdQ(V=ZGIec M7+)COL!|,Y:}XI%NLUEƕTRoQX p)EM(KGNrj8ٓ'qKiP;kMdnJXiGtA1 =s8UgWJ?.vI=:P~>,k{RI} $է*ދ Gn /5<~Us뉘/D` DyFGeNUj{A+nV\Zj^B]lΤT)ipBV đjy}VCn(,;KWF2NWdXqM)F9S H|#fUghC]+K$ f G Fԅp9~ӣsɯ!Iya7_~q?7vRw||*3' fQGw%5G6`%1 z#AItǣ9٥˟W, i2{@KW[@pVg8~\))},8yŚT46{qYN8?1Njz {ðQ݀z'!|Ec?.Q@ \n0 K^- Mߠ5|ewDo9-L !hy&&ܚYF6lhY  =Wnyor2J_%'^2(pZ`I׭RFz´άHN SѐyKO?Wʤ# q ['O7eJ/՘rZd,cd^1-OĘC}ovw ȑ0oGDGD줬׮  ,WGy#Jy?AYN ᄀ \ zmO?wB, HFW-P(x?~>;c/g^yaot*L+ym0LK{e Wg+f_KۖOF\v`Vi5y9x.,UfފC(rJupT3R5i|Q7JXNl܏fiLV0XN+C(xc ζ4hG-ĿߖJH-_sZHRt (+_ ܍zyܷ8ҔD|~SZj_Q*Uz(ʑŞQCboh)am>sX;9 RXo;ZзgH x)Cǃ}Rظf=oM,Rߟ`Y奛vR=a("jֱ W~,O1 \G*K'mz2In F(-/Dp&8 u79cDД)r-R?UCMG NKxP A3n)H'^{OǍT?h%߰*~sO4ԦU XںN+}\9˞DL>Q:8Mh3 Nsg98Z\ l921>ў\]Mro7N`>h)AC(}J͍bG1` Y=q܋Ph<&膤n Wǂ=]JS`wgn蝺 \.=abv!`e1Ciq JȦ@苹kf& CxK#|;H8伟7޴cX[טl[B8/!"$j LRc">1\~OzV}SBO~zʼnc<1B?6}DtuـC-8> ()+08 \4G0+G-/Z `>b]0,ӕ(ԃjk;u"Q~Lމh&GOTMTRFfj!r3&t}8_AlzXy=m@sF7W?…nyy Dkoq}[L!X+~'wjKNhK ABaV^ 87DC8xi1Y `Ib 'c%_d#9 $Z[ -ZjjdVi$BawGbȞjI FS8N#NZ/œ2 < { MGI.T;}T5߾*lF혶Quk1,Ёs \sƠA hЗkQ,=T;Xɕv t]'\DPo2JvI@ ~l*)2/ÇA6p+KvԽTgǒ)z?@x\z}JĮゝ=0lַ&ju`HNJ~/YI^T]+bJ8~]gnx ǚ>.g*8ɒ8[GHBCsD'Jܺ"o#SB!T>RPn]]2>/tkȂ^pMuDB.偰4Օ-3FYoD#|;q!<۞:qx"z(nHoMߩC{~\L9k e ̶"b>LsujuL7DKl}b[% oo(??_L^ycm W򲬎TejJ2${`oH, "飆BZ4@8q'k=ʁZwK]7- ޞ _"ODӯ^i(m!DLO>cGnǎl!"p]X*BPmލ }!rEW Ėg{\A۹2:s'^v=u3k|"K ֮k빒L냴Ŗ2~ʃ&@Gj\wKcu~ (gg$L{$d?tiJFG),'DzV @*6_bD߾T3K}YˏϿ!?~Mڹm0nؗQ.vJ3+&[C JN>6 rܻ 7 G*fk.?iiAb}Q6+TX@˿6n<C,;h9EkhZw`.q$khn~rwç Bb$ˠZ~?UF_Ч* *  ?@4 4 deflatem* =xUPSNODR3 [(0TREEW* x 8U]MB!CLBۘd+i%|HxտY[ 8:Nb4pBeŬ2A[c)@oN~b\U `{V/mr6 zS,B3=VΊ{v!,mEO/_[yVn \ _;\{aÒ%k eH:58-57ܻR#Q*8Gԅ%׿|zبHv>0AQ0\h9yY Yt"z@t3J=J:XNJBNșIZ=#;otT2إ] oJL2kݾe*Lr M?+SΥ ()dž %Cltɤ @^ ; }^NʿyWsO' pT M#\vŠdOM #3odE:ZWkX]j`u kmټ(IjĕQ~ { 'Xbq"-<ݚy]Jea'H<ٳE <\^kQw1]sAlO02s~0 #mхƨЁ2cgѦT( 9)ьEm֐ ⅋ײ˶%8LEg/8ԀIòN)qŸon*]jXi9[D2Z,EXWH9̺Kq koINEaЂsˇn#`H1[Ҭ}=([Nm'r@[{&xN.$ Ig6Hshe"J"ˍg?x>MޚOCC YΑ=Lm:*UUw~~%ThЙԡ{P'JLK67=8*}- ͓0WZ o)'sأtkv(Ewvh8_&u{rgwr]0-ލoG꘡37I&3C'iHFɰKȍԜ'kqmum S;~~ً/"s!+g;MԣG^@xp5{9QƟ݋^gm5r[Յ%~XUQ י3p{״>esxI^aFôFyArK[CeW)VWBlCJGOn9D4O0-O BIcJ#Vq9f* "?x/3_WЕ#*)" :l]2%.WSx. R952SF.F[n ޻~ JgG!3 ekTh\Ńb>X{㮯sj2)=6@ǏLvGBzQ!JMΧq{nb*{KV@x`;oC2A!v: .~r& 钲ޕW(Ozbr#l4jv sc2mkvO*?Ubl}Q %bgCX|"~j5@-ʯ͘vP :HrpU8 \pGAMp]|cֿ6ZBxdvšmزR UYy"{P.XM v['k-\ևkVnAy7q7"o x{1' z~_TQZ蹍;rc[BuFT(N*xgϕi)?i*ᆤ +1,/kGRR!vlhIޫxaк&p̏x9oK*hr&dn H@h,:; G9SEܠ[U|d{Bcoa#-hlI2bE嵊.`:5gN;Oo ] S=Ϙ6 &d :OO+SɱmuH%ݣGmn@C.͛QnB R?tj~Hj=DX CDƱO[*NOg25еM [gZƨ</W|29_愻ߑxhAkuyk`$kM)'/y).rֺVlGVy$C:!~=]Q&q~1 s>=8PDL>' |_+׻Mp~c5?g, 5$;8డ{0j:;n>τD':; "X[2JKh"Bt G:j2 I6 bDJooK*D۽{R+TjJcqlz)n)aϖc(,ficdu.nbNx00?Byu]\P7|c_H@8"Iǵ?tFs$Vp/ _>+?zBK No5 k'#(Cׄ=.$Ŧiխe\S,מCY`nh:+5K;(_'nYZDϏ4ac$|b< C+%U3mέ&ȣ+o%#Px̶:>J O·5[ F]arS^8HcǓס;CË￝G@=Y]W<Mo1 }} 4js F~Hy3>? |? \1r+?kώg+`S/z~tB/һ^.v[c=Xeb@U%k-E"x[i=g3'U\\^rCF^Z6;/4 ]v#JgwW (^)? aKGNBþ"$$?As6`] 2n>ٞaQʇ&`끁tj\>1E1MMQtÐEںBMi]‰,Y_DbDX$_e7kBlwԉ:ZDܸ!dN~$2|4Ľ]3(ѾSͱox2 9Qgps1l1\KX .C굺ڀXʆ=@us);i.OlY~_UtM,vyv ɚ?#l澰 w}*dM~9sꦐ\ Dc^e\ g%2% *8@=29h7'ynw^#X cE&",aDcˁ֪.,Bۧ]gao=9(-^[ +H] YP&J=)(WM=i uAb8JBOpyewMca5%[ Մיq@[rf 񼪿]V8Ta.Gn}aQr0Ɵ˞S,a>bV|n_8ˇgev= ֏?|7Cozaq}*;ݺ CC?CIpDo" !+Q"&q^]99$/}%^XNZ  1Bsyп:ƚi5" _{>&ܺhU݋UąrV \&Kp )w%;ߩvyLjP|R<(P9ggDAOVI`6=M?w.! ˾cDk_;˷b(Pc;6naڵ=Oq{g TK<]oJ^$wh<]_kcs'}P@ޑ;9-Ư ^~0Wi⽭̷ؗO؏V Vٳj4um Q2]I ?g d6WU6BhJ_3e"̿ 5v{+&$ߊ} IFZv& %_cԵ|5 (?L5*ỉu'.ao}/Eo˾\9w7wQt JGKs:rD[ ȧ?cuYE{CX73~ڮJRS/|xG/ @xǮ&WjЈu%({-CqWRMu@2N8¯6ǎQ9>2"ga7ᣍ_Y'`K;zsq,wQ^bl}~P4F8lA UlI*t׸λ-rPn}(hL}~̏Gv>_7ۂ0 OYwiE;-yj?j|(5;u~'S< X?Nmw.d~f1W‹SE%׼TdIaQ |l0'kZ /%l M}"AU%EƀϚ524ީ֩6:(5~{ #꘹AEe[,dW[W>(|bTJ8oN^/~uh䅩W{p.Oat9D́[Ϭ*U  @?+8/] Eg--ʿסU2ןD$˅rGXܯiv_c|GB%8H ޜ* gצ,6GǓ |P*3w@W>g27Cvs-ГcM0ޔ/*.1Lqsf¾^^ XB6*b!S'1a=X[(3*s}:~j< @LϫCXk_ Cwp#98یͮOQ%+ L}L\~6OVWƿg{Oƈ;UwM|&+-#^V.d}1WHipB -}]n lck2 ^$f`t6dĤ>χ67osa* #;_<_Q!{.a7pDw煢캹(|˂W=U6|St,56l6 0-Zs]*ߠ;~z j;WգlOءMOU5YHb5K+(fmoňѩ& '!X w*DŽ,e~q3_u,-)+}<Gӎ400UO#J)vEM0M׏i2?"dgĈ-<͹y6ᴌ8[7Be([s*W'yzqC]3$Ҁ)/)Ҷuc*zU:,ϻL-Gv{J0oVۊ~@H;i7"J&qG_t"঵ZYZS;eJ(Y٣.޳hJKQ~\GM/KBI$pp >cμD9q!u"_rF3)ВV|]f]Ge3ʗM AFOڤSú͡(#}e^QJCß^_ҥ%* *  ?@4 4 deflate* =xUPTREE4* xy5ouĎ{(Y3f]MA zRp%h*gM3]f( $+w:Ufgq"fR,NYEI=uo^g TygU:ܳZ C4ݣ&V|@0}}8qD7UYjFJvʸGia)بAqEk:d8{F朗[B&i',./YGvԍ h7,,1'?Q.7Dpo z:pߟ&H(){a/>%PMfWqircGJ.#'|ep{7v է5u}1 qwzORl},Μ+U|[󛪆=fvtQp/p#f*w=aeQ^>(R bi R~KCyH5J6(߬E'-a;5X_JdS$mW'GjzA5M fgtoQRa p , Wl'y܅ۧ mUNY>?^J ;FBwuh}W5??CH^fr}<]tbw(T~(~/>}Y1Sj ֫r}$5i~6Bfύ:( G#`ߝ1UH<1:c.c`#i )η2w Q*? i31N"ā:3!WXj4P`08b/p9̉ʏ A.79"{#g3BYXz! <4v(?&/\wykixHvg,9co{(,x^ Hqq;{ >wEsL _CE#s|O`O#P6`nUU%l%1`Kd `e}y#. nT |'opXw~y!lU. {I%>b__-Y vsys@ٚrC+`ZU+cW&&}Ri&!#o#I &̠ԸK888_aUB2Z)+h.|IsR"b Z+""kY6EPd)Lpab'l]M^ z`@Yj{KŔ(Pazl.1MZTq)y&vb$;G}Q)DZ߅%;+[͚hU ꡌ(v] m}k}uӔ@ś{y1jUXɌ ߴn i$ X=8eǵX]ЯZ ) iB>9QN&z i'' Lj ?8\2$qe,T8ܭ6#&W[͸螇1`q+N AY)|$zQOx=I޺s7_ߑZ=QE=#mlТtv9 dpȂh+ ^Я7v*:fkqW)ÀM(nLV9:j䍒I~TRxmG\Nk;2wQԨ C[v[0 WSpg7j "ٰhL=R>20Ws`_bDv3?AE$]2)1;W/ Rqǭ\_*Bd>ve;?ϓZBD[v@|T77=J\pm6(k5=]!kAX9EVaPx sBuYULXGeq,hzAL@ԹW0ЪEFtWnbψ )D&{0cmk2o gXÃޗB5m{Hy7 $5$a} 3,nJMB1}n3ҾəP@N# ԎK $rW3,xD%׶ZOzqCQ-V" OR6#01N޳dtw6Ճ2N Y Z^"?ي@H$`gK?IBӮ;`<((9܁- '^.4CLgPGM#ҝ La|cQ7g@(:sT W 0sXk9W@Rvw^Jqz)%>Kߖ >bk OՉRIL$Qt笕$]ۀc1@ߍRpyl>"g^"k(l8Ky[4/ 4̷A'Ma#E vݒ DvZЮ L3yEFy%\1Ѫ#׷[9ݧ2!XZZrA;3~:$WX1S.08,)[ H־#ZCtbe_ʪ^=^0mg#] h tD˺@%ĽyD}_vݡ' $LΉ.wSl$rzIvw]H|+Nwï_kk$pq׵Տpֻ)ژUM-GxbMKPlĵGocY٠*7~o~H'nT`Ke_mg>9a'zG V_xsVaqސ|~SUK8;(c?[hݱ͢0!ݸWAH9xF~/SG S! xlݴLCu'G::M d*~3|v!j9 z8_U-er yn8uQJNE`>T&~>Tƀ J[ƽ+ ׳fGܳ<3hmM%q#,R6?G͉x\u!fk@W㒶;u;\<!azc" t(;Kha=IXƳ&Mxl2UK#'{YªǷ^\OdcBfˉʒ~*#![}e T2&\X RMjA}(w_~"ꎺz*ĎJ„/ڜu gQ8[~+az j죨l.asGPZN0[k[3j/`*hdܒu G;{qG!IΝSN( xҷCt/bj<#& ¥|w]c o3 ^*7+O@ɉbkrP?>%ʯwzذM#QhޥLD(19j1uZvBv~fwn)/Q9sG2.}&&cܰ3.Q(!D*w~ڜtc(WwCx:8 ""U8sH[/>>huJ;ynʅ^WO+=B'YJB],ʿ[RnCmQWMw_l/ܦ#_+9 ͭA`>3 dnR=MnW湍6گ1LIc m?#3RUf!Ȝ1ů3JlG4AbF+ >^˛r^{q)oa_^wqC`FVs.rFK4c}Ka"ros^:?UJ?߯I~ij,>rl> O(XS"yas c3\aKi6>Yd[FϋmJwdnWޠ;C>&ߴO{wv̷(?+Nc/7(:!}.t`,||y9;UYʌu}>?rqY A u)vIh籷;&t6ȁ=#wl@?}> P+e|\3rd=n+u1S9HA}Z3xKh.yB"=%$/&TJH]|!b.7*^KwǤH?!b'DY-)Ss;2k1cӾՕRj@D$^bonI I"]TKDR.q2-Oڤ^o+R]~sob7nJ|bLR  mLͷƭz<5℗ *ktȄZu,jf%9K}h H+Ggΐ p^ %Kg[CucP:~?)!N;gTWoK=ٮi[\ $xO[? =N?v֮RJyU099ŭ۶ɔTSDy*WN=XJ?g^L'+dz{n`Q{Ŧ͚ ]n<;KaQΥF)æC` wy>,NB$ˎݒ Pfy[t|z.Sps@έ_eqW)Nʇ pG[xKE8.ec ~@{>Ҁ:3*l[{ :e,7\] +'k2pK@'C-nLDmrAPP5A܏@ P{b[?t H+ZKb(X۱'q&TrRCO|:C$Z (J۩_웈rOHYYXąRp%z<~)YKh:w<-ִ DկJEOa8n:-*s:h"@܃1 ~n~ ++_!" @MMy@6ME^&1 qIY29]}ū=DX{ czAV\!'.5d.BJ`#dts_gOvM|a(+G#2Oӯ=J/Bi".;h$ӈ ۦ| z ͒njj_ew ]bf_4n撋c^?>-(?n[`ѩFL]ueղҦQ h1MiV6A9:&ָׄoW)_Gǚ2 yH &2jGDfS_[ܟ/2qx5Oq;ہ\0"PEWK\0ְ7?憐$Ϻ|`- 4^秋ַQK~Kw*X~`HZttݙq(Ke"q\ddjn^­]?qB{gNE0 rѣ5p0l daLN9`zK> !G I]jQ/?Z? <SUL/2T{+5Μ._l φ q^D4|_yHYHwjn4T6Ə÷T*CX9 0/ S2b7|$z)mMw}P"x"z)3L40GaKhDF^/NJ[4^G$s)j]W,/~ܬc!)Xۗ˿gB"v3|QUs;a P9::VЈYk  )4ܞEV8=f/v.J d>Ì?G4\==uxQti;REPg.w'D;A+A(_, DLcG59B6BΥ"HTb $dHFEvtoRgnPD@G8sO}IJoﻈ*|"Ƀ0p'ķv=)4J47VP['L U x`G.鯍B22kDoOwq֟OBm f]꩝"6)cd\vhc6t<F 3|m@pԑ)v=ڧ8MbܡoQ$bQs DT Ω5kS/sfD'IBۏ|NKtQ;7Sئ6)͋_R !()k_6Ξ{1_xs&K#ܚ I07tnȐ6 jo/J npsmS(Ǫl+B.Eh<]ܜ'(táZo'jf9dC{N P~OqDi<*łUIg21*[Ar3J7 SIlӻ^K4ݾ{TPG* *  ?@4 4 deflate.* >xUPTREET^* xy"=(UkiUӣY#4&E=C˜JuCaO@xgS`]V ѯi~廬p*ߎ?b I7O.*szvOEsΜje HI%'?LR B`mEhd KGF*ugHu`:RynxS*P9_$řTP^ax 2m rEayz~LU|Vq5o7v/Jl<|fzw bU]-ɵOEInbK&!P:>zq Dܶ!AONĔv%ouQ^o L'c}K/ mq$%h+2[*rʏ*;wעriKڃ"jӥJ@_Y{vD~8X"YT7)Pq=l(5P"&wo* 3N'TysNXBr: N:~ϤL.&9Q1d݈k)H@x`ŋ2̙ Xجݍ8n{w 5pj?N L< DUFl\d)wmeF .H^d}8zXnTlP,ܻ8,bócLʬk8s]jJz'ACX}|=Z]l?:'l/.WOL$_;F -$:}gQ .hZmpq/7?$b :[4ʸV݀뿂U_,)3(9J?4&npAt'vh{z&OO .uA" >r/.M_3AP#q,v9)jlHU)7_lA^/a㨉|jee.O'aAb?]`s 0U]/Dg5-_kh8 hDMc:/^)vDT{%-Y7쿢&ӵ4< NMļ ]$kxRl: H4yL}~@[v}M#ɡ=&z-!v39`]ۺzF \-Kݤj;cNl2Jt.ߠ7g1]0VT]%7OU2c?~J^g,;d%a{zЉ^*O_ͣ&NF$#)NWE ۝_VNϓQb81[9Dg\o 6!Ԡ>ni\q_/2AfB$Ґ t=N2x5+Tє'հ-]+/<$zjou?>7֙?}Rh$b닔:EdVBcԾj6T?\,ozBY1]"uI'\Wyl )2=0 Qس7$ {XOÚ3CKzbޯ-);t J+n(/RS&+iqYW)b ( N2[C=۸~c][!&gϏCV($=HpL%ՎG=U% 3Fv0zySv璶2K=Ijݑdy$ۧHQcRJ!5~S">\I­ytTJ<|Kօê}̩rb۴cxpK"oˏکQc?G2{vmyN~+"j`q' ke&h6пcICJZ 1-]^p@-ue!~|`]q.3 qZBoy&7?Nˇ+ 7T=^G %Pdȹ!1}, Iӂ1{;uMzs}h&>xoO/h XzY:ddv]2g`>)&f._LO+pp^w~e/kv[3n/i8OhLHݲd{7qfƦ돉;k(O%upj8СI^;׉`%0^"^g].0FUAJK7Qpu"\eASJ( [0PģpJ| :7v;%8HABq9ɒ[y [esOm|vЉhSa'h*(XAǛ6CulqDG ́mJ;1y ai{kwA8ݛ`Agϗe_{?'pN~\{W|CE{8sPo?E4 5;O\oO^9"]~EQYn!<v4 n\AXa~@vB Սfhsp&)?SėWqh˞D YqF )ol 115 ga)Wy_jq7sh8]I2jt?y/ToDzù2Ϥ'ŻY"P< ̍WPe )OwϿo`%IƌYVGvÃ( ߇=OiWH鞢`J0ey$N;e]٣ [iX)ԞcoLTS'3Q5.$1!P_dT[00/cԱK\T>a( H!{k_G+ *YBWl F|^s:=3)Rzз:VT%RCq(-#_n㢠ogLNzֻ%I\h__sRLfy_F ^GO?טyamխ@#qZ>8TȧJܗ; XWCNE]A> i{q3z&07]x5[o3 XMsV{#9#&bכ"m 7sB#紸P^-7؎/JBgD(Wk JӧY;?OYQr wfȅRcO>$y0`[DA tGĶ=< 7Anj ztyztOe޸4ٷ!#P}cAY9x2VXu| :z "7.- =BR|68x.aT/Ͳxz~Wt`$&Fl[>ϫVQ߃rӚA28.T(@baտo^V݊|Nu`3-y(G*ˢ7kS7$¯ǂAk÷tB!2ʟْ:,J~? SfVzw.|hrF(;@ĴyWlD0WDrMue4QF8Wc/y̅ ƷHi%\ޤVXC}.^Zf0+*(yAE K惸JMQGȎYW%֮>qUT߼U$ .uYyN'B*@09c*+J] jв]DVj.gT% ܁CLG7JfLw5Ϛ0ƽk=KWlÑ5!s2j6 }Χ03MY L0.,.lm80O榰 BTe2`(:%X̙/hD9D)Zng=_KGz=@mZz%iATh-E{\=3YeƮ`o f;B;x,azN0L,GR-5V将k(\$V >B~sX7J ֨h j=b^ҊC1 !DTy>KDoYhP!R?sѣEeL},;z@beW(Ϋ-wף/ eo_X}k#J0 x}J7UoYG زL'-O˵?t>V6/e88,ڸDۊ(ۉO}^IN|yhN]զv]Li)2}{`%-%7%ZeʩV0*\(C2IY !b*\V{st*(=zKl/{Väo>,dO۩Ԋ#^ U!~1K,o=APPR4M~⧼m,-#|L(VV١]0d<X4d9rouu+'{5PxUPTREE* x XM]KIMs&iTh9MiH$ ("cdxȔJ!4^yy󽺮ϵֺ{;{5MA3V -+1=anϧVjvoxu?mO L^33.Urmŧ+*zU~w+%=P,kWߡZY\M>tXxEQ(''=B޺c^_n,8(Pdl=47Wu'MpCzd SdN?G&e <{Nbo_d߄]0%k}Bwj}%6_L0/;V/ɪ? Z^ tNK=%.Ԋ6M{qtNࢩShzsQy&hZ='AqK!0ߵ̖aEr׸ombpԱb?o9`JӮMp} F7 ㌵/Ud@v 쉴c@vED= ۳kK}3S L%z*QS d1}ށrE\~W߮ɚ~gi|4򣰽A> oc»6Sj;'ȫxlKBw%J.O,$IG]ؔ L*E*Кk7~;n*SѰCXm{kQ6s i.?g.eYѶxÑĸOd*$[e~HoU{P?2 h!WLB8Rr]ڝap\μi +Η F|/&V* ǾZ'ԍaI:UVqҺlrR-h.iz6D/zyxcj@[ۘ`ַEQ9Im9<9εVN+^02qh=2I~JL˲!aU SϠ԰YI9wipp 9++ﰲWa[/ @Ի2G_dW@VdL4 a&I}*>Sk<Ž~4KĞ??T|T3w)^ GQ>#7m&1Ͳu$dn=Y8KspyÑ_n)Nqg3x+YZ&?p&qqz27`)$wSO,n7[" bg2)؁YIh ӈˈ?JSC*{->kizLx.Zq!*>rIs!uڅI-.qeC yJAJX17+;|oPK /Ju鐹5_*M bhp%. M+x9bvB'\qxP(- eˆnis粧o!7wWB|R/Leb` S캹4SΈ+]zWTş^esA\A2`&rӓ[E< 09KQ୍VvI\DE'x˓#4z?΍" OtFo%K#%loLD㢗l뉾gE}޹b W(1Z6vw;^[#=q`z㛦-Y"~m'cI-r|̃z-wB{НQ4EinnU|g&Z6֕~H+,H$=u q`Y.R+5Ey|PTTxVވ-4-au %hG6f>Ea9''_f1噺WO pپ('Prv%&H݌{hp/}p&b˅aǽQ 4H`ﰜ$aYVM7ׯ 2hPɇrܶ,SwuN$㺖%_._y#*9D6[PW]LFPb+ꚇԀ_rԘ덝/''}i, Dcv{ACwIn(36$ 3#DL޲ 44本rQ/mdC@ݖ ܡ2M-˪_jSd*Jr(0ܛmF6BΪt!R=KUAѺ#+k?+&ـ?KG }سgz%P*Eiir9j]fLhiA fL tkE:48DzH?v5Za,#u: %~BSE(H"ۻ ُ7P >M pp6??%']_ewY߿sy3I t+3&Bs%ɝq"K}!_ [߅`|' X@9A)gT'^!`I y_j7W @ӯ5[?,vY˩Hc+R/Q;HPW,>&]FBU*ٮP-.%&Į%mW8/enh\^Z{! -{IIϺY,1u5~Ǝ(vEY|;ǭCUEA!8I%8>5(𧼉 StT[JE?9q8W4wdICχc)}|L>C~}m˷*mҤ[ۊDE¶gꎂ`$Jt~іҌ:uhgRo$NJƝ; n')SgB  YHe h]{Ә>U穈%Mc8HO)p?SSӞ\HYD7i%n)<=g5U!>ΒB´hrq+j@?tY v%*Qr<я}[ +.텝wOp<􅉠d? !%Bԛ΀#4dk6^ֱ;Btqr(l)ahnԗo~{?GIͧTQJYiH@qOFܧS͞, 2!c˹rBGx`Jv:j8F9™jn#7-a1lw)sHB'n% C{%BMT:>ж4m*7~>]aynRqܳ.A4e41|V^VU&TovIm5qM <\Jc NH <*wvW676gCiNB90fV'mhPr ,l~c(P")Q/C<1u4"ękl Oi7MV@*$\`22X;Bqׇ )h 1~U-FA=L\l;>6eΏy9"@&WE3 p0K08GD\8^O֯$> u{ܯO_ж%Dzƭ[G(i 6*sͮU'd#$D8|7Q`/Ÿ'QZÞ!(gJ*MuJQnFN00K rֻ͍*oֈ0@,Oo#L%1o:d5)3#F am]gҫIfҧ|I|~߶ڐ-43 FeC*2h`*~@hL;W= ̢L"QK]DX荲0*3t=0wv4*☼5mor Dٸa[I[ޞ?~޵Rt#k,n?;J讻%?@\>Z`)v蝻V m3%ѷAۇ?Zo>\wx F ACz6Pr(;6K-g=ʉ o@ft-""%$sIe<^ |~{aY@.L?~fuaʒA]fth<渋{n3'evG ?.}xz. D6/; Klm%ᴏCZ5qIƮat7Е}qfؐAPh? BDz*ţj@Wo6~YL"EsB$d k@}okC=mSNA܂7=^HMb@hM6v+ڂ10oW8<w($gGV<mN%֮#h`y"z{vm}I嶃7Ҁ_k-# ĵ?=Ojwo^ S@K-^2to_론xܶգ 'FRJ!S2l_/*4kr5r>2KYaNg5x8]5?$/ᙀPtۋ$#`{4,Y/ >pZ zyt[OUoG`4X;?`.+ZHVg!9f@!8]jXYQ90R%޿ go7MpG=^}>oS]7]hLyd2严s<=E= 6߹_Ka"&:Ztsjz'gGTwPRF)=ne\<@ [nqB\3)o֟-My(HYlqpT2ծp%Შ7]?]C=ϼs]ǐ#}<{;ihWJ,#ڱrBO1q#!Q BYOmmf͎/s*8rD^F1`qI%p0Fmo \'f*ᘎrNeԳpem--Hb \*-:,Kue75Jq6xwqjrLfmљb'q'U'%"jMXF q`TX \aEOEAkF׸#&ۜNwmPr`6PhD9ٔnI-wx=bm >C~&5KD9"ջ+"ݩ`{wAVWR^y*No%K908QQ'*_/@a.">XA#8J$;!pOqwqGv>"uX^HTᯀ :]՗5GӃ$+DY/"R)T9/_#/9+֒`97X"v%b:笙.nct q|u$`l;WHO߉v7fBϕ( b-#ߦC,#_7_O[޽ׅ nA7Ub6 Z6z3Y” ;b?bSIkPς17X 2zs)%-gha\>qޑ4 8 ɻ\]?#Ca+dT=o;WR|PuuMNgf`cn(jf]yRO:2X޳MـowDW?.j{[Gſ%'<$qN*僩~Sw $? T#][Q}nKVK³W/J=bGlQ[W:\K2I# ڝ4XǺϬ?S*6Z0[~cՅu@ia8R"<>Xk Ow"_ZE[ "ǫ,<~-bҿwPcaqCr{T`9*׮Ņw^.z}PjLXSPd}$&Y,wh:{B>Oi\;]WM G]Fɤ*%L>G,!Rg}16CLB5<8* *  ?@4 4 deflate&* >xUPSNOD8@(0yH#TREE6.* xw\OdzBFTJIhhy7U{OiS{N _;BѦEECT*ܝ#}}}\9sε'LI_x ^cmrs*eSz(6]2|]ꎏ7[z 띕iϣUemQKHjL[nX;:Jor6YdѫxF/Lnn.ӿ *"7QE]k:㐍0ĝ{;WtlMǿW0&y^W+.™E_L-pCuQH+L0TX |q/^r?l ;tO<}`N:p4-u~\D~Qz^0uWLj]qX6W>W~6z,|Q[x|[$]q n 롗'qq~or<%8X;Q:{# er-_LWΊuTmod\QV){ig2rL`+/r.-K`:8XKy=uww9fP~Zn@x!$KL%НМц@YgT (2BiNԕ0sFCUE9h1eVr=mZLsMqIu1P{Om~XJMBZHWa 2-"l/x<۞@Azty8bk- ~\O_Iomv|kXWߓ*tD6[sU!"[綏%mł|;~~/֏[ls4MNE?{gigkb 8A>LxpkO ^?"UvGL3|>dCǶ+2JM6|Z*記 $ Q.J~I8|Ӎ( J$ڈurz"ο`έ#ʃl&1Dww&" 0r|E ^i# "Z=BG8! 9OB%O8C1}A(wǯv: {>!\)pwKnppc1-W@0r!~A^kaIXsjx߆KXl4f+)JT=F) \?L{dLB{+ o`F5,CL~{ WGj -_s$n]YaoNrk>^J7;.h~\ǭ~j@Wv oSĦhq'|K~AbUέdK%]t%N3Q]WI#t˓VhӮ=ӣ6༞z]_pɜ(rYs  +y ɗ;xww_~M(CV*xФ 15Q'XM[NvfeOΕMѥm؄^x'J#N,/p^oDzwZeLm]ez|VSKq‰L>_[ӝϧֽӂ ^ ]<`>=kX??xdvN7," #yqVI;n 5{ d)*t=7%֟XVVL@ͯد+]|Z'.{Z.[JDؾǩcM3짡Pl4te| Ա)C?TP! mBy9_08, %9>(%,cwr.JDS-1 vwMؚM(vg)DP;=nsH$dog.6kW®wL2 DLn,99 [R; T[sy0 ڥWJ\+-z! ';$`kۭ (z#\c]s4.2@HY4(y|=R'>MnARCV@g`yοOrdB,L pYtN5P@`)Vj'-TbS/7ɎݧF}wl=QRp&dc/?OQ:\Sx_8qER,WÒ[ ,o{Bj_gw'1K$ɽJ`pZgHoS.NRM-j-/kgjX(o -+ PTSv|׷,V#K ˍR plkP2Bgyo&VK4g^nyII}?B$=U!u:,Hy5 q6"({f+T1V<w0kYf׿ 1&:;͛?ӟw,HÔju,=ZzO5"YŷKc" vy~&y1~ݬ-Fm4N>.O^ Լ$H#cʹwe.Kd38}'~cȎpR=8m0Vܣ<.X=yXt;OwOsL)]oMD? @^}qeXos55xB$EEs;!ɎhS>$Y3 Y_%crt?|^_;_wSc\obCELzö~jEc%UDbz} 嵻+W RвBLI{z g {1[DB$n%E$Q YHb^}q'K@2FNeՙHbz1x. -a|ui" Իbgns=٨2IzUr<ˤ6&WSQMRf|0źH j%ی4JQz%-WTw+%CӋHeS,mگPNW0dC=@8c3BP0(ObP/4P- S)w+<֌q,{ȣ@lќ(5*چ<ɸȏ,fGVśE{McI$|6qmcaOhLsv韺P\dcHqko|H]Fr[3JSMK bYAs'`ʉ3?*:|ehZĞss! KT?z,_Ts??e#ؽQLr,T3*E9m8y}Eydy;r$H]+~:f w ȟxҧa5w`f_sH4kĽ4LA45||V4)惃݂kx˼dH7.UT;$y8Zo9u񩵉UJ)׽n9 %|1IA{ˣːM}ӳx?$$~3 'HFWNr=) 1)/w778\Uɭ1O2꧓ing`\;uG]Vf0hU&v {J D"|qm82 Ͼو+1bPݞ{C&K$S -0GQ}}tw̹.2e UΠXՏ]> N fJ/>"򵔔Y7FW_al32EqK^p[RXX]AϪ7m6w%iεc}+>5(Q ^]-[q1h~ipV=z<<&&Tx}f˂pk%~uGr02 %'6B6Tđ}oZJm;J'BC۪u\/IyYl1*.2c{/.Z?⻔ˏCCKشP~HS\noXK k_$ϔ~P5`FծCa@d9@{Lًi_'ƌ\@sBIJUrkKN:Y=9&A<`Fߣ1?J <r@t)~1ͮ'хܻZ$eB$cZOsf61a9Ov <9Ѯ{[u{= [g(d4VL0ἚUri'BV䩗וw(šM+TW8X Dҳh/IB$zd Dҗ]4O4ڐP)OOF!ʖY_7MaXhL@yʯ6*~f乫oKY`yrʳ76d),+ _汤h _6_{⃲j,p1Q85/klV7a Zxǒ/mC)EnIS;G: :kq{uwm'-ޞpxkrE߼73!x\GEؚ@iVUsZa=hyזh]CON;X)U"\7ݽ%p@_?tc*6_#n>"5q,10L'=Nɜd+{YS6qꟜ͋7gLdc:ID||9h'@XŖx%bwR~)9-xBJ[]ɩ;Qbo^\gxG(s*e<9q 墐DR>8lkΒ [xMb:q@(`jLJ``0JXMEUd?gŔsI=m!I@Bˍ~& Oo> si\9Z1~ŋ<\o =L-_5_t:H< 1]_YǤ6 N 8;*9/-IW ;O8}2&e;9ݘ;EǑ)B-gqG1@|=! _?䧏Ś]`}YgcmmP|4ø=,wK8 %o*iO-8M}PQꊊ0sRNN$lYEîp+74q hbܿ ~M~c6k)Oux^E5B³eBXxw0c)3kerWqӘE^'K||f3{4]85<m{W'r%FI: ^qC9&^.P&^2j3lo!~S m7_ᷘDW>qDI'\Y-8m{⅟؞UP;eK$.0M,Dqn.= UR"? E(f.~Yv:*hRj"ABse6!ZgԄ E^-!yd eu(BaDH掷@ɑǴY:)WbB~tݏ{PUȫ u%\L>RĈMi7dhͭ'k;ެ Dl4. i-jרQny r#b/]`aaRs <3`=ny>|'M5Tǐ>gV-8#m+h}_4'حɜ {;34AB @hclixUP* *  ?@4 4 deflateEe* JxUP* *  ?@4 4 deflate,* JxUPTREEX* xw\OJI&- WC=T{KiPPFɈBIJZ[t;ޟ;~\z^s=q^TT3 ;\Ώ=ڍm.`㻟3(վ&g.q1Vq-&=w%*m2 x=%֎xz M}u<V rkW&Dpvtƀd&~sX,q 7F4NIVQB-[s<P99ޯ8rT9 +>ec3hxJO~t~IC^@1%q ˡn:?"{?<.g1e'2t joS):`r v|}8t=oGʠ8:'K9~%J\_EQ/;[VL q̉p3A#/){8 ۅ#pZ#._ %JJnV.S' $j_)Bw, D'ޟ4Sht/[qJ^ 69˕pozbʌ|a+Gn7fz#cUbX>#KӦ4sd3D_( &D=? ͞/S+qHtK^)!\N\⼄YuJn ton[hs9冫Z{y4y`)T uWH%  N zlS=h;TgCkmeVo`Nz[ J[=Zy\i[-0p 6OER?%Q~.5mj O' Yk>}Cprnk{ )ю(Yl^cW&)T_ ߃6z,H S8jn[m4Y HY}TH3.̚^N@/!?D.;TR_6/Dm'謕K. gۉXTYOZ/{32'c-pD&utAK.?1rHTCݱgqJ@8:Фt܈":ܖGJVX{P/^>Z})ϖ$C:Rʁz9E"帣j|{sf``>`H)X[~UV6N(~kQ8?♍z8B(.JDZKUA?WJzlT=?jL:;>s"6yQ@' T:ET[rY%}AYHqYL'ˁ&VK}ZgB>ǵO}2ή˒|A`[[D(J޺W zuٚ;M[q?f$VWM AC>zέ: (ڼ] MYFP/w| ;7\y3זFBRT[xFxoDA(ܾgc8kÊ(NnFnD.(PbkkKUDS<;Q"~OuD/-6" Ʀ0.z{rfF)*ܝy %OhP@8:pR!+b|$旦W5 G6 fX\_茕uOJ6 0۬mI{_uDo 31ݾ5m fO)I{& P31.21YFiXX4K[fZhhAY^fɤPsԓ%6$M({P"~HMnkӖtr|K%!2n GP4Cn:4 M]-`.+ ),h$t&yeaˁg,&/p0JkGM]?3] V8yBPf4y=d0_; *ٖ0n:6bf/ʨȯL`v{r=e3<;i`sޤq2we-p-{<05+q Dz+l;s(&P:2]QeV/nIӁ*>z;py>y v\n[qnvշ*HO!UGU[1w5^f}6r*Ʋ>7yɑ"WmRBmλ_usf@. ظxl $i-Vu.4(7˅]w%W,6UW9o!NGg&"Aa}J0(r"j|j DWmLʵgm[]Too)ءS $aABPc / =wTV~#Q~|?ͪ a:-Wӫ`UuY9 iDXΠ\H9!)ylKtN򕹒wD vFqnu+j^.zrO ǍZILy8n=3 N#P:Xs(}K)OGJDܧDҍ粝{#|vG3Di7oԴ^mpUaKϣ2({2==)~UYFQmkY Tw3sL54OH )]_dp*; pvT3YB !65[:GT4\pJ~' P9""}0L\ *>R}ŗ^XF6?ֶZٕ5"*9GgZ\Iy(O0)A8g@[6dzw*EI>eM [n܏x0s'^ϱ#տF>j&l>*}QP4|3hɣc:2KE12x4cݑ$O$ÃQ(UIrh 1PJ d.ɷ&N^d~o~]`ӗb%6Ӓa*O-N+a+vӰ|z->*PǕ::b8qu[-V-ymv1:.҄|0g=HM1?\=e309"&JG0wiÅ(Jl@:!:P"bse3fl}Vg޸?0s[y _;[_ϚI*NOLP/)gj,gNOͣ~UCbE\.nU+&zr(+$!}nIkuv~/{^n;!Y@ ! ]Ρ϶F<wt1/Epq`י\ uV׉}{v$w+55gG9 c$zb/t&}}MH2t1feTwPaa1v*e$3Q *eB }=ua5_ƻEDՔ D._#zXb|Ot ]޲~b63k z&mz8"LÿU;D%St(A_NJՍ%)(r*5:8҆o{8C O~-~ܮ9[A+u1G" ;~y$ n~p*6nqa8vv{#e3`C{+ 'bu dsW'e,:/<KpB^?S-'?n)PE%+?ȹa;Pz] -ϩWwu![wKlqm64K͂5c=SɎ7h /Bϑ /mGXaDMp aWEA2\(W?Gcoۭ$PrgT"g~ᆥ'!DCβ_@n*:>tJyP>^%)X)s&G8/p(^%Z%Sr<~f[ @'lzk4 VӰU""ǡĬ4a&b]< e*R=<CPȼV{\eFp4O"zQ&pCb(a|Wdӆu!Mybe@= "DԭZ{˩G 2-̈́ yz% (k߉hZ6~J3:5o/,,3]ᶇf(?HpϬ+LSn5`ӗfs3,,O4=M+f /6esWaj$yzI cH|es?QU|#E (q}_N/(3bț쟳>Qާ5Vȷ=wʎWKz? ~'!i״,ASud޾bRA(#mBPj/L;3zlK)Wj"QVϭ6{,7$+[+\ ڈ|P$e,d*oCccbL1~]/Z wf*[%*y4 ĸ`;kJ`_Yn&?xѶD$Gfu]nAzVA[1-bwu1ˆwDtb DMV}q9g;Ê,ϰmX inAD:1#2U{ wБٻ`w20/7林zzWD)4%WCe)fSXʷEsW(-Қ ΄_wH@^[[ It& >id?lKrG+OPj*g;i3Nt;P/K a;~>3牍$ȴ*vߖMH? CDL08K` 5^Y #.gr.PN=;fE,O0!%)&KERqYbta1w9#)}DC`oN8\;pC%"1'rG%؇@Jw/X0~=+2^e$M~Rr{BVRQGILs5{%?6#M=NH/Yخ:@!m"}\@( (eJ Jl/qKaOeaᗛ`PuQ JLG bョ# b(1];#[uߵ^ښ4$^YvX̓D59(\9-hA'!]{,7|U9=}D5.ב?^ XdP|Z ;hh,M%(K@zQ=y}wߋ*o'qJeA)폦j]MD d*LDl k20lφ[g0K>?4u|5tc y> :`!U D/{jpZmgPK_[mb04K$][oSOo_(O֡k7?YeaUcsqZz]jSRMZQ.Sjfqҥ w*j;J{QjF`{rVJfVm/+r —S\K{I;'V {n8̊ {fQ6 ?GhxT^v3 4lq\̮ 8+KcfiL8͠SY ,s-I~0TmJ1և~4EFtf\ݻd۸X_ 2 cIrE 4&hou)^0ޑS!.4L_!(wa-.6 )Ic?4;]I c%;Izfڪ ~OԜ+D]m[b*nWYb3012!~M]M9'2pI};65݋滰q]pJZ.Nq#>0 ݿQvjM6$ 'J.õ-`[ 0Bil§o[Yb劰pʪf)x>e\qs"v^(%b*?1wqQ/G-YpZ+%[RP|n' >45)XCF? vS5-ږws%[InO:LZҿfؓdd{vrދg Sf͊j{"zXp⊩W rɨs;; mfTx,U;u2`99>> ng@,YUE\79J_\O\srSYHl7JI?|*kʨo=;duN(0SJ-C@-Ac%P"ήxaF/֏W_`b˼X鋌LlgZ6E@qY` NmD;mǮ/o|BX"yTrFH#~޷[ L;h#8bӃ h %1(C}]E r%9.i'_ Z̻qvwYHsX̶HX&>#IjҢ.:rw!l/͖d9e~$c]PbN~")fYű{nc=f?9_m L QHڿ,c{ɭm"pw<⚹$2>Fؿ޴{i{mna5~1uFiuiE)`(Moo?Lm\,>: z/R[<LR~$!R:s`%;b>ʽo#[1РXO& *tJ"B|m}8!"h(UDˀKdu[~H7xZ$yJP(J7n4iJݘE'!&h|ؚux˂(OJ_T_/߫D$ppN{g]}}x/) sn Ϸ^H17 %B$^\ E5UŜ&A U<ʱ^oKAc@Fw9øEZgekH_RUxJįZжZՙ2 6,KqY=VB C 8{Mmnn)bcCn6Sd5疠;ni;dߠA١Yl}<ګ{@_sNUQPHԸ%˵]K3DZ9xp@)C! p4jq[.jd@uysʭ$Щ0ALn;;?X^L|qlvꥡW~p]SXԭ';++Hz-˖Ж.׼ nS{E,@vgQgq|,u!wò/PY!?>˯krI`}'_Yc0F] 1& ‡sξp3L${Z30ǭGƎ"?95rao鵽ҥP9E'E/m*5U:o3[͞]oڶ~ܶX4@l~vp )g7P Nw'k3n5:-u}Npy ֑:(F^D ߖ݀5oty5lŭeR/)Eyo낐,N$v\8>_+?zP- ߦZ%FґvK!P%6Җ Hڪ`I[M+gקtٕ,.١ɈjcUY5x65Q1yww`z%F>0D wcDsG{u=_=Мko/!6K`dVf7'7T~".[qro@8+f59S$# dns8pcI{aиs/ WDό;isfOhJn%]9w柮\ZbR"58pzW1 U[+q,K{=e O'8)QF~Nk~ ߧcpV(50-79F"bIaOFihyFM"@-z#&?~*LX1og'G<vѩ/sre=>)GU9gvQ]S %[6.#!-?[ Wfql u{>B8R.y5-L:G_+5T@U-SL٠碋r=}!6=HukXB[y5`tU 'Pc)(: ]ޟv: B/7~QrnUN);!@G<^=r{9w}T0%WZпq9%qV@]ggnY< Ըw,ǨvevWK|WMox?L6|:\ҵgǥ#Pp4v1 ^@g}fgwLF:B~ 1:4y>0'#{}v+ZOfE CEdE6(՝YRgz\14۠NB؏߷8{Q|8GI2By5-uQirI9uA47Y7ܴ) R(sBԧImꞻ@- e"Q+E5ho|[@]ؓ aÉJyiĭ'NBl܃1C}^7UyC v mws|KϸB֧.'K  p<=\4(asCyzw.nyQc@8XPzp?Ι/z6;EI^h/ k qF6#BAӍW}?7";XH\ơk4RBrƱd]>/sJ m:z,! /K][i=kwC5{Zե}55#o)+SπÓXg}Bu &}g_qGY+Iz.wz_ :@% _ӷ^=)K\ϲopmLh/U> cBYq>B<ǙE9pB8c B}a`}Km!7[mEa(Kʣl @sV#55B;3ʄ7 س\AWαZ63Y;%) z,[߰8u?u*qclƀwk[+ ISTqB\ǵEvBIpn+}Saơ3*(tg VܔL9 8}W(Q]2왞(p`L{%Kӧ~h*YKRWi-3`~ZCRZq}OkISj"@ PSϥ?_b- Z>LLj֎?d ^:seg%.7^n7/@$Fڱ: ?S߲`݈!|b93<]4 Pzs,H "HIW&6<ڿg%ڕ10FG%, %eIi :.ALTt%b"_/=`Cꊿ1e@ou.odM;gV\Pӹu |ǩnvWf;Jb-5|^N m7(|V|!YBՠh I<"eV'34R͔]Vעl鿹϶o+!M2}Y-lhHd>4@ W•>0“S[;z6aL Ep rEIfu7I=8$D|{N(:'À/='y,g"PDܟzsxk"=kiVԿa?$ه-) /'3]퐙`r'ߐ1]sBάO S%X(귦!}I3p%\@R8qrV=MJwWprHA%_ߤ28Ju'93~R^ KW[9؏zwؚ 3}#E5Jөp1kjo0|xK9€ڣ]$TS% }|zf7 Uфui|g[!Aʟm(J0%}OQt4N9?yGޗ+7vU!JWMkxr45s6~З %;jJ*TXJ;=3jʃ$v~ vCe7#s ҂=sʔ`I6AhέIgokмzM^0Q+ qx\|bE|@3`OC4o@%שM%&.-S^A 4^_axo"sJފK}gr#zvQ>$wٝԽ(_Vx?OvJ-F׫;{> BqOV(eƤ fT[d}xHuwWT >Hgց ru;/7,ya佃̙f1fCs…Ԍ~'[ʹ*h3_'DEqC##yqs?k7 J,  JYpN-S6ܮmw4պ) eg(gm!mEWfَbɟ疮ȟ-u8y(#xC.Wl}M9s|e25 ,sVo"*~8q o&` qc2lK$ƜoイklAĖ BV4f?ҩuZ˚+ @D8O߿o=Ǹp ]\8v]eQ;g9K^bz)kq,>`ah\6mmO'3Xn'9p־A%b٭ܸ^l %=tv*4Y뇨HǪ%!gR+mb#N r5[yfց UNmz7BzBl?_|M#Ժ\} 9 f=a>۶,".]I]GŇcP"Gv==s;$s귓Σ[ve;7 /kdBcCOaՈnf#oWX-kS&B$lҾ)q[@r1@8XN`4+"U`@`5\S$uA]H̶~^¾wJ+IǥM9"v+{C!g3[eW %}!1_uGzG:Jk}*2D}XM~I3erkA3]W걉r_goQ_*D Qք:}:*,F3e#U ci H Vj[yAၒڈwx/\.-F'* *  ?@4 4 deflate~* ?xUPTREE* xy<[e(`( iBI}<$J!2,*EABJQP"2{:}uku}Ok]kHH;&Ʉ+"Eْ{ڟceꬠg\Y%J6ֳ9I嫛84L"VU3^՝W.ؠ($2F[7WG[ [D=-;fߥ{"!I[7>7%?A)g~fFMH?];b̪H;Ž^2}5L*(|Me-Jp߶lj(R}%YEO1%FZ@E$ Ƴf;hhܿnb%(᭵&g#F)Ì?iE!ސ{6`HJcb3lиWVU}p~ف㜂hF.O]3[ sIRvP(jkcAҀOr[gBl9qc/Rٍ.v̵"QR$>VIpIaLp'ybT X%Thn"6dh* BZ2ZRVf) \1+ A(J"㛓#9іԀ8'@j+\밯wq$ڏl Aމ%I9ݛrP}x0'3 UX7xTM+7J$TP3|OU4]]3S56g)%FM Hsj^$}n..Z}%Z^!x$ޮK Qפ_in!ϭt[xh biJyUu8~sÕRkmCW%!$ wҁ%_f䲟HsHyA :[z~tNg>掠l$ǟ _ 䅎g$k5}{#IvCDCDVZ؛h ZiϓmfAY@0]O\(r4Vf_%hˏuy%/xF$PX+jqp.B(j} \eR֘PGɞq'0Vp xt::V\Lx|1 (~3Ȉe]3{`s^4SI>8h.QwO >.C vM6`#.&T4ـr~QsLs* |"*fi=, Nu^H@%LΥ%VpRְBo&7|@*wժ[kwM^ @J@vܷ[ѤB.QE?I'`N25Tf8@2zW뱧.Op~b8= F<:VϨ[ir|c>bkE5h,g)u 3)v>PSTH Papp7j-v+{JVyxJX>@|!#8ʋ]%D~;W!$=!K-T~ƝNŠa] ?(Q!"2:΁T;JRm; 4mIBcGO$T",hM<@adN%.]Kg=o&-65@4[ [#s _f1Q$Kࢳj@DLH2$6]G/䊇i!~?" `"JyddAkǛA- D,|YrE ~H{ly]T{/Vw5#eE.wnL07; Hc/-yYqU"= 4\ZH̽kdO5A8_:rhc)(sϱCiIIgJf/7PN=R$vGJ8OP`@tnSЙyxG8#BfeZw?*ܽn?LyJD w2Λ__3imr2t9'n=l=칫4+euܾ9!igWVvkܟ@&@݄nq~m?G ?ra,˽i1yQq;X??pw[RUaeA>zr3,]@)Av /n' z47]) F=rO8'wy)CKS('Ghq(! @R& {WejjwkRO\Yn( k1@I]FTax.^凲le (Ltl*VE X?>Ҹ's n&KoM-% k$FAJ HBwL%_KE5OJS Қapd)hlP~/ ZiA+KpF;V(?8h7dZJwB]6# FNXU&9>c\MfoJ 6LK/rvKV u4#-c3hԳDw9!둄}sn 7`i-Q{xL"/ vw‡W^P$`%\NI߃}$v @8NJ=3>8h>)bۘm) ׇxOU*;؅x碢h" xj!]{HσwK{ǣYj;\KAňBǒA;O*l/аLہug MfF1yK.-O[Vx| mL/I`͉ӯH=a;k򃅈ؓg"~|/af)ET+mh;2&Ȇq/Tp(ڻ^  qjysJ)a>O彆De4C47.7NKηkykǧ:Nt 0e卓)Q"v+qzzudu%!, #jr+EގoWzE>o%=AVQ0$RfhMq?ɃN,Z9*ɮ [)@Y& xLuht? .l͊1e=d%Ⱦg1҉]o""ܩJcwDT7#3zvp=UEt-ʄnK5L)کȊ~ {{>;&İ8ɂD(aLyH>z.4 vogP_ 6$J{7JHQfі}bQ@קQ"| FX#nWd!m{$d]7&yUC5sH |?G ߫WΎr6TuhwDʕ+ t:KՄnd_5uL՘-9zTQsՑ  }|SS:#[,W%:snup_~-W}w"h:vY|g[p+VXSϢ4?d)XM- *K-Q _#hosSqNA N(6d=__"! TS=BN]z`_zh,|;oY?HS|2Ƥt5 j`U Ruk3xQOE2WQ0F5,>Og[O*4Fّ! nyk[2/(&X$Ep|IhS0 |suZCh'0W2|^N=mnun?woBqq^EV>0_#أI:{mns>eXUүh#elbzo.(K!|O\ yCh"Ŀnj7~N X,w{kQوZ˾4mۧɲ%Ыka | 2Z}=~J3}D̂HP]׼ '(ee'5cES_s)ߞGu<N~z.h61nxnxJmF=G~J!ԉ/"pYs-De7C{;_2~X ).qT{g35'dw= [yc/v!F՜(-zߑ 쎁P\L>NN`Ѳ4?d#Yٛ4V| jtjR^{~qZ+Yl K6GVD2O:S1D j{K7 u$0UP. y' ԉ2g^_%5ŭ.гԐS/x6>!3 [MjP" ;8'zL#).)莬Z㝠vTvɧҗLH|wu8kQ⇂Z\O0Ob- +7'>&}J6n;ݒ^[[AΧȸ8DydQ@6>!#pF1=CNr4NXo_ ^ZMH`dZTu8y?"OBxyjsW 'Z~d҈x<,#]Ks lj1ͷF[TAV M#dԻ \A,>o,O њ[ O$/"#z։,muM5">/9)qBZzS pqFr}6ZS00snl/V|AhN@,dK~a (!vn+W y!puipJWFwㅆ-tВUVA=FV߿EE\|͜\~Y~ B]Q3vՅM3RPrw|I8Ŵ˭㱧4 'bכ|1z10O/s>stz {Wgs9rP-1r ̼ ֹ.;lTh%mGjFCONjۗO+ElJ/bӨ a>.D>'.QoP_7eZ7Y GKbo\[yĻ0wԼ|lĞ aշ9U8 8aK">EX( /_aUYȃ&]d;*x%hR^z]![\Iz@l/0Lv7@ɚ!<. %柋K* 1~}OWֵC_!]sw*RBv8Tݰ [3#b-LV/{|hgP pi!Wy5Da? JF|'%xe./V@fcP%p8SUzlj (D_;<}={e(Ox&WjRI/1[sLbu{$Ǵ>-* *  ?@4 4 deflate* ?xUPSNODPLX`nhpTREEi* xyqIAtI_%!S: yuF|S/[UF,}a}r}?7?.r y/B綍sgVuG4qכGܩ>|ydl/{>CW <;ϻǯގDڣ(j];E& 9e 6FV6ZOEXK.jR|2~yۿRGz#cԞ+'?VD|ԍQ"=lyno*_ՒO=ej!mv"%δVw浕rHx3%*l Xnp,[#Nt(3{Y?z\\}]w=: y@x",ywS|1l)ǟ<3ۄe|ybj 6n|OK>ė;6vBFe6栚 n:j6켛~)/'qpDzXUο$ٵ?-VcOBe])2ad2IAdpa@Uc iyMwN`^d@a"PbAt{]sJ=zfC6>+J&3. Su~(?F^wz8ѣ {.YQF/Vþ]:N(W^qE}UƮvVA4f|Q;|/k60^9X]hʢ́Ci?_JexA}:|(l.ΚV]|7su9mgՖW76JЂPډ%ch$ :1" AظTE9X5 K_Yǩ8"s Otpqe\ , .Gpe% iTeF{7I$ qۚ XXƬ^O !i!}WRN; \`&uؖ9']l/1Z[Ug3ˏ_ N""*f) aΪTt<e߃EDbf19v`w. Ķ2Ÿ/Io{ \{d$M<`#Y@UW6H'!f 7Wfid|BWB,˨]l_ozhM˔ȍX]$ӤXW)bNk[vdWy!KDWԷca%H]YEsCw@Vt|%.q&eɁ5W@ԍ3DiߟLZz75@jlTA7(؈d2?\1mO~_qW,/ N fQg%W.z Y튻_U[t^€P;Lv9qFgP*.w<r>5뗤|;#;6xG|]Tk3- hI)uNUy(-N:ϯczJq>J[W[j2G&/Ziypd8"CIPw_ \<y'J }2"QMr.)h׃ wcTo5;9w}Q{";9PRzTg{LRc8W;LaSjJy=u\c1@1K_8q/(gڟo qUzw)rt->.Z)2lOƩNotvsq]@79DfDe}õ>iwA Mew-cD-fLF>LmGy~|T^0UX>cyKۮu |<pl#] }5pÈBEg}\":vU P 2!i} Ė->9Ҳ (ơe|צ3ŗ 'ް̂vsq#\`\4ƙ+%iDåC*2>1I5u'Bh)IJThg+,ئ(kx vRiVJ_a{( Nz2\׈6%w잊2(3}2m}F09"&1O?D_\,1> ZF1 e|xT/8 ɍ"XA"b41 O]H'3zEw&np[VIcm )B"~N ԇ A{DNV%nLA'Xw#QNZ*#^"~sWC}*ׅe#]¨<]J9KBWV߻[^P^>`eyW,T~Usi^_OsNw$| lyꊣxW\LC7h#ˡةsaGeg]i>TEx?, 7ܢy*5xψ؛c3f̖$FODP QrLF&q$jS!>D+w\] ..UFVGy_w+mVk@ P8g FZ$@f.V0/t|i '\!r:ɉ l1"͙" hQ<`NnA ]N_D\DIABګK=6>q(ebZw>e"8j@:Pˡwr9_Ęe>1%@9Oijf9GU(J![U Jmo+A.XCGw{~j fo}3|1= [(`uwp*>G;4)sLgt^A!>//ޱT %m߿v1y!^qpnS!c9tOb@ _>W;^\ΰpg\M' )$7,hu~(=ߑ7iK_xj_OX'G-9*ϛ%ͅ^>WNp?G'/c7KS+o#ׄQ$V|]gVqvŮD 7 '9.(%l}۳w&#||IĠ~~h_Dž_k^H5ѶpOT3px:>DIOtQqd>:D@HNKk@/;zqWԪlSFJޗU Sn~h'MҲ)m,{YFRق͉vPuM.?j]{4[}-r,vU!ˉ@LG[-tltJɽ/ X:Ddz Dΰn[i=p}%KD_he?uzĖ2fp= \(ұr_g+ӯ?#gc,/I &RV̺i8wv6ԅKӹagHsh<2gջ<}h a#za#''/K8ع?F´oROH"׏.V6QҮN /h7FfZG1uEu&ՋVrbs'cY sK5PbؗJڛZ"p:f苽(gēGl)'$y%oX{GFFs̘ͮLNϭ,'"zu]'%6)MҿY%9d((^\<:%"ʻVf`pX z~o^˺D9xTAd-{5vc>6ݛBفtGt~j˗󻷽<_|NSY=j1 ^ؼ#?"7gm뛴 !0fq48آ|M~WˮzS + 7+iVYW$5 q(~3o(p 8kPb6ood[5uܧ|jh.eY}~9wK(66ì'bJJUv*^,Ҋ|{L|b؅} O(eT阼_o4 J)}adLyB؞#`ygg" 7k!ߐGqwa!@.f*8>}]XǴ)7XUʼtqJrRB(VuvdޣR0iz ;S㑋i]{$J TjȠG"0 l_ حۧx?  ;鐟CB}j3᏾S7s#A"V"^pCaZ`!= ײ&؈)cޞU2GoO* *  ?@4 4 deflateq* ?xUPTREE* xy8Um Q)C)!ާyȐy\f22Ȝ(S Q$A2K Hy=Yz{s\:ֶ5;8&y,^,՛]>rY1N|[ nҷZf 'p?aj) M]=1(\qX 9i闕=òѐrcWYx<%/x[8m'/|O #%$W7 .zC5{ܒDB%S|ו=vGgxC MLUw|"~NgH*)ĮTѿX9ԋiطǁO.5</dq}c Ūx@ߒ\K2MP?wJ ɞ\H-F~tծ-8ofρ-u+bJ]-bK$ߗk),;E`0<|~e.p_Ê"pT|Pc8/a |;휈Q,o} L3 Niش:yp'ni<òž #!5tFUHcY;9JM]YzxAb3$> .\.g~J..FDBwej\@Po)Pnԏ]s[ Q500\ùjm,$ﻏ1/Su9tf*wE8\?aO"b)Ȃ_V3Ku9G?7exWA9E+E%Rץ6i|S C8w?zm:оz ,igL'9yPsԾJ_@AnYD/t .n7 W%'Ily.9ԉ tG8ZQ.[?>E4TOZ֤3M-vs'C"\?cCt?3⟹۶^%?hϦrXc+G*ީT6?qxoEvl#\v`7*mK{!]5.__*Psփ^g}>qҊ/DM}K=3wə'sI-vH~iIw$9 <?>v zͼ8KIr Z ${@3VjI D_TO^!J^CVۦB/:E7jh' p:XX?a ƶ HAL9`GQf8!y|t- ui~o)j3Wr Q%y̽DUNAWvӁ*>`;@s$]xp.Cɽҋpo›\3 V[ϗaMebORF/Gʆi~ÎUv&#lpm+WZ4aut%U ꜈ʍn?a5wX/)jonP>X6Jdvp]%k3~uǫzU ,adaĸO>l0pl=?15 8Y^م `ĝaK'jW,pTJB@;0G~vHd8N/Do6F>yـ9ŪG>JQ(,m.T)%ʹ~_Rɖ~rc[Qyg)Zw}O:>w{_LuNs~OQ'J4[|8jvqUq@LJ{_C+)Xs:1"~F3 x,|GƾK'rd7 V;^?]Cw9f svGj:YvFaq蝛}#5UbY/|u9PW74i W+z.T\l㠻)/X|{yǑq͹>ɀ@\7ͣ ;n(v|Fgu$ FLznf_-9 F(c@[elSlFD422) K.2{}X7H5mj }?ZJ5 C?doe6n5r9aMVm)uy-*HQ55ʋאRE9 u$&Je^b胦BPKF](ʍxܔ=TR59&kC 0:Y:O@my_8(ۙ؉x/ǬN챲3o xn+9+̔*_:@KepWy$)gyDw)[˧ks%wrdU=ajԛvꅤrWXr7yJq:}oYYXh I‹%u -z|MAu{5|ѨB36b%\&:`]V8x-;Jܤ!||ƷXrڝ~Գ4#=-xXq ]%nhS2JM]BYe?JtWԳ2\E>}v59 M9unE=nP =g ;ѸO 4 _q'밋& ŋ^o b0>lhpGy䗆!mW![[ Ag 9&$##%w`q% 5{WL^? d|PnG ˉhK$c3^(hfDpǚrwqSLCktO}I S(>}IMl H[8v 7AP?T=y)㗱0%ߎ#31'^tyq []?pdS. ~JDާhWSs iLqrqrIuRZ$zN^>s^'mO<-Z@/K t bTPwtïRQ<;.@6W-ӖLK=!UEwϮˇcۿ]RtEiB 9e-;rđר?:TH@qm q#5EaDe287·Iؐ@z6(QZ%#*x Q9ߗY#O[l!a;1oXzOW*#wg0|J&tR2;yuߩjz%DDD瓐"b5-A!1G_a3D:Nȹ!`>>=lT~#fG6wy;a(7ο0=:`iCTxns^8r"`e ~R (.q1^W|̹vޏQ9tbv]t\RUXwa7fr Mҟo1^|i'~>q\KAxi&kŋ[>;lK/=p:ΏL&sTvէ7ݧ~tL}Ȏ)5!C4LHq).~mXz~XzThqng2K]~V9: b]O<^%.&s\jKޙAz*ŁwύG>2_!,h#GTʦh@x;#:8DVYbo<{h2VmraQ(%ra~I4`? P"/LGq jmhSdЛ7XP|iJ#""~UZ4[ƃs~HJ[~0eMDX9 ]xhBv0QĀ~؝Hc'ʍ+rmK}4L8g`"IFo\ʦ?-E~C(0a/rBzg".|qw)%w>ۙ3$B܎ ̈>ʴ:!ExöQVE}EV~|lhL'6K4t?vG]̺"#{ qn2ؐMvr '$: ¨+AOLo1jR?iNUuW!.Qi$8v닔 D{/̓Q[f]L!'ABbq.p'M A] mвsz <@dC PYPݔ/ӊ_yͷ3{h)9#`8mkX-6P*SI&^'|/r4r`Ֆ;;ŹSJxAv娈 &-LGMnN0}~C"QDI)򋪋)QlA&2P$?J NJ׌:'b&n᜜FZ^v|Fy)(Cz|k@޾}f厎¶D\^+ }" z-h|%L@M4ݱ'ǖO7 *1Qq!x;^?aW"A|. w}G^V6';,EFDd SG$*4, omVb7[45jegPat3JĮ7;/,u,7"d԰{CXVX#Ža$)SPdċ]Rjy)NZmZd o`Ϻz.q` 6N;|]Av-?e; wi2\AMtK& 3q&,'ˊoD1p&0vw"bEʖX5 VY#;~ʐycBƵ+azOքeߦPu7Ceq\@K=lA!i NL ^4LfWm6@{_IB 9NmG@}7kNI{%'2Lܙn- #g/\6!ȇ=g XOi1/gx2OљMEyP/"CK2Veu.k뷢~N3D E7K..'3_-9yp}0H]A"9"?Oҥ:7bG'oߴǗ2p.hݜrUz?͹Rx-Id-[ M^M^t qWH/sW> 蟬vWn? Ef3#Q$SsNbÄiaU$IXB"k9m蕖{!><[gtt;V &nRLqZNDqgLcP~qm۳* u y b}黪!"KNCi-W**i?ʹZI^oLkS /WgxU?2,:&zZ3y;Gq["in&@Z-՘sIe+fߊbs𴇯pL8"̯Mïg*L uB2S+|OԐB+FWSKmsԷ$;aş~.v.( ۩V˜ qG<,A]9iؿ&#{H]/ҬlUeܜ(.T8;>?FiQZ8$ |QaCU}^EI3W)-ۀ0Vr>J$yݕx{5u}U}dI})vNOL'(aIqsD45!E'ZzC!rM,\ p/gepaNV׀ ̉F[>(qIKJhaxTZ7ټe ]6 <`u3Ͻ8?dG (+BK(ToB"|V}Ÿ_@TPqj ՚z kXxMi5zlȜbZô_7OD-Ia\&Q&lO\:Ι$,S=C &Cu3Pbpc$f 7DwOWD@S"7xyz }y>HN%ʛ7]e}"|OGD/QLޡMɧwcQh}]3]v(̬rD$Mjʇ %1/<<`a}`%%L!ƒ)B7U#QhGuKgiluB'Ej|s`;_C!K* O-E6OD\ PHVHxoLVEknVzؿD=w]暕wM \rƊ$|Y= "=ݭU"Ac_?Ή3y1ˌ@1Gc'ka\Uin_E%gw^`iNX2w`8'sУ7(55⫑xYĥ!.8m nv!_5Ru<3߮̃K Q۲ JJW>]8г!o;oVAR>h P:d$?趣.$-#%n83{P=ɞ).9 ݮ~ o=ub[ U&/ 7{(?v/<Ԍ𦰔SՕ`~(-cN\yjRݨ ^s,n ֮@Ix]uVtۀW2E07a{Xw,R<srp e\4?6J< ڦ4p@2j8z^SnB;BԉCETa(9lXʑ{(r'Lg7|<8_73 `Ϟ şM53Cl7mU{[H|z5#b q-}Elg5J%H,Ujqоk^I oЕ?yPNdE@Hcۡ, fm$b飌f(7̤6jId+KlRX g.J(X 8lHq 6Й32NPʹ19[W9X퀤yJ. 7uqQ] bo|ގRb2wdz5QQ>p6gVp.جr2' a~IPw$φL3#xIj33ȯ냸-(Eu*FW\/v };ձ 8 uIJ1l hxf7L^pxz53n˅3BRo6#@tOfm =;|z C2o NOYvH/J9́񊱙iv.K P۱oQ|߉UZ1o?<Od(^@H$}a ! L\4"%}n.,A5EdUޔawe! [~$W Ekׁa+GhC ž+Bc9!ڰ%Rr±/o&З9K $n;,^/_/JRhlHPTt/}ߗ MA0D`x ߴ d)3v۴՞ֆ^u ?~!벱xB:SF@3__BT}s}Yҋa7t!?+)&Ÿ\ qECfh9o u=va@SxcK;e#Ɇ5ntv׻1y8 Nv Gnm2;4H7&¢僛`Ϫ$vϒOr{ lԸFˉ5S튘 D<}IY=fK>vR/Bl;6P{]CurX%)cDCoKl.Ʒýn爛Z% Mb{9;,+b7g 'sl•'b T-(N0@'ª\.ǽ\Nyy?dq[學\ڸU-zG٥!\'7%"Ƚjs_Ǣ۷quxkAm3iKHğ@TvXyYٽHxGe-Vܥ'_LcWڭ/nfa(l9$WBl D{9y.dZ@?XO]V~*GGآ@~%楚A) z raysL2ɢHx; +0% ^q7.~+< u!Yܐڭ..4>ʇ֓E-߶ͪEw)Uy@ƣ*|jD@<(~vÓb3&@ȈX,h $;gabǏYWa{oBn.,wqx-y,P`gaH[ʱa&#b}Yދ=iVhҩgP~~f1Ccn|8w]3 Fudi?XIb w;\\vc묅-"hPOlu|J>V\  Ms}~=_lFR fQ)`yF=/r+? 6LtU.eɭa"߭ݙ(@ƤGV:GU4:>cjY  ^ٍڭQ[gCM6H|~yӎISxd]| `ֳ4 nt~~-zRRH9bJ+v^~`6aئ YlFaD.#TGS_gACM]0M\$Rg( ѻLaUD8ʦa7MFiYB~q&6$!T=L ׺N %ӎԠ]b۱-']?tu«?oj0!;Ja񐨟Ijt4,k~,8^yHd;Ң $;.̹)#?k7iaVk2z.(9Wm6@]/Gܯ*@+) 6>(i>a“$+uiM8Qc#9k{*!)2qݮ<ǜmY3.NN+i\G~[Y_>[Ԣ=uT^ 2S<éBXD gvI&Y|9ilja#b&kl-ذ4BɷyWXDܗx} <\; =Z6mWլ?j:}bw@HLk[ JĮEYJ('֌tZkg=uLpJBԮ- '_ GM9mz%8'ϊ[2XAF7=c>itOpR"rSqh.љc@Znr&mUw ]f26dȞϏߥ(G^~aB}([H  tX~EXl#>Dz@>A'_e3^@-ʭi۟ U=BH;xYu[wߺ];WAR;& \B(CCr x[ }rAeߑt⭌/ړ̟T=l .z/VvG;+Xl3CXi+&yDpK^#,!-46&gFC$/5ïy{W~s|%ڽ *@8 yUp ety8-!Q{%t~3Hv_Ox[T_ b".:;G?% oѯ+;gwT]#sc7S;l3ηwvyrL(!!(ggM S2(C|7z qXB5y;ElO p!&ֶv 7W( +w&%[6\xRiqo!VuH7~fTÏ37EIXϾSvMj`|AWMs:۝4 :їl_s0VTL=K?QYR8ZɀЊp8eţP`nnt-BWuگӑ(w8΋Cy6<JĴ/+"ϋ#9@ȹT_.Dj ڏCTF( Rss6hJ-2wjL&*dۆ36 ď,SFYh|z$waP>˹P24*Iuz='tpL+|ΦM6հ:p- =Sw"lVg:JNbS@e2/coZq^-^ܐ r$t\񨁆%aG.~}6Zi\[k=@۟(U&QiLa"5.#;rprSY* FAi |/WUr&{^]6]%2%ı?6@~Ox29GHSƎRDV;Lmc=){Mk:}!i񳚕YM=ϛK+Qu"([׋yF҄2cL_4*v@hO|(4=eU /keC;i\Q) }wU&4<9e_W cYUZ2m* *  ?@4 4 deflate4A* @xUPTREEdI* xXoۋ$Ym*=$J{ў|JR(iP2B˪Wܞ_zxq|{<}((o\p}8?1)wأMh\QfS^yrd|6 trtz<~;Rx4z*{Sk@'JRT@UǾ?؛R؜QR#]'! u#330iy 7RF9 JaC3i:!1o[?5Bߎo&~~Y ] r>jWӟS?ڳ^8scJR*4`}٤gcx{듞y<ߵ$ՒPpÛZj>Nzgp{?z\3ZY$@@UC]+޼Fv#&xgtR礠HX#?1񃮲Ա`{r?. b۳;/l%Twdh.3JCW,t+\ ׼n _7,=D9Y$]vZ cOErXě2\_l]dϫgjoX);7ʃ H:osh5 Yc]C%fBذç2U;eE?7Up~Ŵ2}}Y`J$O>oJS+c5+xyb^t&9Vod%+$zQV*Zs䟓{8pe^d* V('Vky\XNJ2|~0P -%Fث [܏D2#123b4ܗ n R5F7HbRΧQ"9]ve~I5# t$"먊 w~Kz1nK]$kBW.oJG\h:I\JB/>P"~ 90{@9)Z9jο/a  r%LiţdZiZ>kyBuGú!CY(<|\(]uU9w#~(ilYnm;X, ^ ?d!RuC7x˫MNѴjz>} {)R}9RĊ }sVdCdăO˄Y*~.V5DNd#x\|8/TLۃe F;YTkƃq})&gTo.1'Ql5:AM /ihNu,bҌ,~ڌQs.:H?v y`SO ^v |ƈ#%]i8san'%aff9F1M{^H@88Alh%dtka{gr;ԘAQ_ZsI 4ѡ![k8D򃀐4^)I |={40'p? 99-^n@:g2@9:7/A V l Ofm|U=LP2om 5wN WC״LOޤX%y ~ofUr2/m9J{OJ$~|@ob 1KCכ]( q/u{Ei' SX9㪪Bah~ ϩzp;Jm8I{pviS;C~xUއؘc (R`Z-纁f⮋cNzR4,MHzp͑1- Gg=A7=)0nWRw3*XW5<_ W/`?f b6ՍmBx^S +Oχ;e홏1?֖hhN0d\w/"%+jrƞXM#$Hsu-V~K|?ͥ+4 h2vmZ!i%ܲ ql' [|Q *ٖs6 Ms>w8lnл@^r(@KNyoN;U?+'#A?@/ИB OTaU/oK )Qkڝf>_eɚ%JѰ AFd]1 QzrׯqRϞ ڃI-D \AWf@ v1>iL1Οh[Z{ޢhvfФ~wi,T*?U#O]4wKd FϑAԳRބa{"CB(qDt{dGI .Їڮ~~oX0F~kTpD-7"|c_g >p;JdO.(,56Ǥm,`[;ܽ!ߕG3ڑv'H-6F $:EGloy|DW(wEwIOGt8̝, ,#Dw;|Hk14k?GzA1Mծ69> k YH-ɣ?4>oToN5 $gz%/8U9HrsH:W* wd1:޷X"peK 80G `A2Qjwnϛߐ:/TS%U9ߎkVZND49H +o/N ~WlqK^3S|P?|(4K.CE~ߢtbmOepisEE0ed<t6s{gʾe. 319UiTp~/(/Z܍*&L*G~ζp%1~$GD9ǃE,a sA"1*ZN,R6 %O]^ ݎ8&{H:1|!Db#=B%#YN8L]$[_4unhG4\̞>'pcic@H_|ȫPfmd`7zM@i}!jGmUD \xGs.N9)|4B=ԉI.8;"Pԍqe [Yϲ.1.EiC3lꏩǰu).4 s8lWQ(ҹ C9u#Qn{GxRD0YKsԧK&Yg0xܖToc+z<0|~R!o9zx}$'<}wyj` آsFU?Z@q:qE we],4J&;}at#e!^i6Ҏҷ}sH'{L#Yv,WU<jpY۫^x̬苟*gKs.&~׉[B,S_*¿JQ%8jb=oƽYn%<UU XgtPbFřa(L'1R:}Ƒ#ieL&~mGۆ|?ɍ Mk Օ`l P/2>{`bNi$_Twk%!=i EEWud Uw;& áh'`D923 P&ۜQ7u_N?|h1RQU_ѧýZ1tNB]pV%ڀoH r 귾jS1ҩfSRY`+NIoVz'R1qDt`$}2yo8\qE|T>:c; Y׀ֻ&MpQS7Y1ߴn'==nie-M͇Cn?~[s, /~Fn0T9T {NCyUN._ Fgn(T|4~? ;@,+oLvEXb-r;'F{q\aRDʐ+l_Xoy>:&ں;M{섧5͜_WEDg}KNN]HrdJ>"_oPA ńl?g9Vˬh5`!bư0tzΟ"zjfb \a)*E%RN`[st}v6TYd<8y4=G<ց_6Jm-&oBbHh%XB{]-G`CG PQer9S7t, 'sL;aA6'Sg>lmb"'g'V#<^= ?/s DѬ\"*`+kjߞb)ѕpCQ5ܱ.L!njfr$]ZaSe2IDSb;DRm.5ލpiRa('?8ζz3ve!^U(.9q,Dm,30![N1xb{J7B$JʢO"Ïz$!0dإT^,2CBVCPY$z YBJ]GQ Wr*2 T9hNrk_g"boE{v2t 9kOtKxq>)WH󄇴fxj8Rm :w'kX@l8LxjSqE4%n,9 !]gâHu;E }0EIjWt;)3.'_dB5"J.G0&><$d "×kԖq*G?U@'ކ%߀ w[S`D'Uk1o`^[ERRYSi%\q8cMX<~I댡s (_fnΟa|#}9S)3rE$C<Cpp'N(/ =mPF:#ݼmx=y¦淾3?֫51Py8SsP@Egv}~J+!崰_M{#?0{5+v2#'sp:M=\VWTA Laӳ;qeϟo5&S8H9<ƘyHh(L D9St|@Jq~|\# bA՝q\dXRA$nX2ө3q[FQhX &HKFk9'"kQ"L&26hf`V9<"A`"*F%]M\ueǾ![ORbȩ!.6>L)}Dɯ]+3y:W6HԞ_vϒ#6{RwJ@V\KN S'G@y#pEצk=8C1*DrzfSPñ^L(d{->R~˫V|t %ݍ+P"ޗ? CgNGC3+ٶ&rBǛmAF6G ʼ IWfPl+WńcOWVJ']Xb!2^Jb-VK#+pCبBA32O38VO{j#no@<lv0|y$?_V̏B$Pt =~OnBn #bNB$\ 0C7Wn Xr:ʔӇ+CuUmrMDIm 3g-39oY(`:d[v:meb01Cr%Bx@- ~&%歇Ỳ 7gt_0>P+=~rQqja(.ތ/RQE.[1ezw(gj?Wz&" ON?Mx]4, xnNBdQ>@jCH}k)@`l  +9{]婼Ӫ0Z;{** $&SePͦQ/_7 \bމP2<@7ݢ, ^*ڥ"ҧkDID[5`O]*ӉP~Ò2>_X n܄<NP]ݓ{rT(ǵ̉{r'+ ϝ>nyyU2o!AyBC&G'e ^()ezTiS`c(D5 6/%\keq5ݭ=T4jh  XyMCl^JU|U[ O* 8 &m?\bZqXQ_OxxE^<ٽ$5襥q(_ DR>ن!,HiX"]-[?ǹշ[JH+AzKBmEŪL|*ЗbƻQU XzߍXxDX+'24'\z$Lw)nNAyh@ilҝ@oil)N(7|. wwⰄ0b|x$QB@2֞ Z.7?K{C8KM|)1pKt+y=|=佭1y#,%z[QQ"~SjN&p] u3ˌ {ctSwJ V5|33ANѥe t8]L'kM8m#qaRK)?Ml=Y"yL$>qԣeir~|Yoj8rm=AT$AdW#*Ak"ؙ{9[Kp-5*VS~x n<'(g ߨhԗ9Qya?O6 3t:@<#ܷĊ(c\kwzE[TuCc!O꽰 qRnha*|ܒq/G:;%Y #Qg#T!Fܨm j|=9 #5ދ0Htf1LX9C%̠hk~0V!+J|: {I=CVѧFz0yr-/aMv@_WqȢa=+RhF7'u%;)?nT}1ֺvج@_|#u[o(}be0>хV~6 "K+{~2"CƢK"RV*s''@@zL+P2AYSݻ`sRfYHhr@=/:I7&e ƊZ solݔ@_4WQ+ǯ;L[)o^b8 @>$Iyƍ8OKP}dDjWL:U Jgj?"A;ݻlFFdZJ{u7\a6_L>- ^" =un?("ǽ|-B9~F|3i+\-*7^Q ْ i6ݴtn?}%Rb7C Ս ɺ9|-]À YX~edѳ9u}A%J < uh^sz+L":1FQ?$V9˯=/"s_-wH3K t8IjZr.@KN. }D&M@{Ai}>(247;7{=D׋}Z;Mʹ }*L.یY{F&ɟXRJ5v=o)wP3;ri%+jobIWi>(({b O OsdE]^[q~{Ғ]٣no']=q:U"+Ђ/tp3쁾odX +w>? Y\Rj1/g;U !U'ao"k|@*Њ1}n?aQb!Ed^KĤ E5tk )n].)?EZ KI~' ?!ɏ aÏ[wG޻k ޫ%ӾCa͒?7տW ~݆9UOcyxN@hYԩjjgb>0-\3n5/@ؿaP9(-E+@XG }lqݥb!r%Sco$<,;BM7~')7 (EF8ڎÿ'%ϙ r |j 7yaEf \Cg8Y%$ksUh4eE2Kh:R7N^={h`1ԩn|ؖB|kd[,nEwtS k_zk;% s9e;43GF'tզQ2M;\@dYTjO3./5op7NK&|b lz]wkZ33亓k튜~y(=.= ۯO'CUߍ&Oд.GݮHjP2(^m'DB mzgGw [x 8&p' ^J?^z/Mpe?mj [r~K0? ~uo?,_}aj`Uye3{E8F)Čeh[inY^genyʳ[ф$GWUv¦zdNVsG^=dƲ4pG;f>YG:I\lj_gڬ`}_*oN}awt hJf=bbG#t:~`~E⸖@ &%E$D"ߛ71~3xۇBYV!]*\V 'n`Œ0by1A6.!- 1eW#x6d7ً$$*4VʠL;(Ԟsi{}GʓS=uo@:- E>P .hOAGvyNZ/z ;ۭGwo' +ņSv0=׸䟾X=M!r|(rfRYA\O`җlg=6kG*F샡9^KNgۋo=^NE1b%ݩO_thNϙ~hgG{uB`ؕK.($jIkJa(l}=M:^tNrQ=()U-z&1ſN?K)?LrB5Ø@bwIօ>RCjݻe KƽNc 6i:׾ڷp8V2c_XhCT7/HtGBoۚ˞({U,Rz{WAǹgZ*Sؐ_*m}\v=6`}޾I}"~ Hk-fϟ Ƣ-#69L( zotMZf]6oGB| S633~M:DY6i%U);}DQV7~R"Ƿ] ;OВ(1r%@=`e ̭%vGAb.+rb?or XCw,iU(ɾm[(ғ&snm=n..2٘#>r#Nm Hn^%#0cP:'k]ؘ(ϛ}ˉUj 7t4rO%i&rq>F#:Ը*-%pDO|\tt[+#8N.o9lf|πwi?#f; J.ź˜62;֞S^({QBT;̟۟|~j@Ġc"2` t瓄w~@8ȏ!F)2)Ng߸p8J77+o:JԃPvi*z Y+0q>?,5;=D=Rr_~q~ie~^7Wq%*I4{pRak\ϋV."4r4yq^s1:`Zo[ Jb"JQl{W|%{lu*xYUQg=dqnrT<_BI WZCLe٫H|uG.s!:?/7,o"T!r/_*eo?&qʴ8He'NAm)A.a`Jbx K8hV8-x5FY!QP0~\I9ɃuYэ]} |z?lf_sN+Ӻ˽ ӣ~@-d~֦GLkԮ>2D8tnx>0 rSICQf^?Qw^~Ph fU ׯܐ:? [95^c&O% Dg|OipTC\ E U|w vJ6˄^=`!(*.JĔqY6c;ik;OU"ٶ^=' 7Vr0!j'РWY(M̃k@&kZt皾]?䰘Kb YޏpeYe2$4c2>uv_!)6,8Lw_0L%,0s4%RB&ֱ4irS/ h*ܦ D/p kx PL($ G~$Ezמc+$$O  5>2[-ƿ$JB$P`Iidw=>ihu c⚝xͫR"QR6N< ^G|/bei? FĎbizǥiSŁf)3F i./Z&-sa*))J(ƩQ w#jx!H9P1^]oVؓ@9]{fL1ȸx%ȍ+O`$r3;QֻVu2#|%DPOrGyK\Xz4!YCUGݿ&o w{L* *  ?@4 4 deflateK* @xUPTREE{* xyH2* )Ai}Ap?yj7=b% O}u~zZTKz?~G}qp&V -W1gO~u=6TRrh?W$'m<Ӑ8LRqTw?QO9I${[WkK{P"wRʬ L`ln$Cqԓ$oI[(ޚ-8Rk-<^mu;oۈ4 Kk^eHVj,vΟk: ˀ3KTH}rsٟ6 ^}M 棴p[Q?U )rIcdya(ChQBʴX"h״ֹo.wddp[뀹"eA >֨~oADfhc kpuJ$[jqf%\q#z9UI2s5D<~7{xAvKp6mj +8Hd>zRphIA x^ݯM룿rb0)=pfp(vfSn(JMWjZ?^Gӯkk*ߚ e@h>DFB-iOt%"j +/`2aQO3ܵ8 rC, F$]w w|4/&2㘎O=D}슭{~{E Du//ZDTZa݃S?{&o[s@ؿkVJz$S#T՜îv:iQoRm8LU$\jUg /2s]bوK*f_r#+M7**e62{SAuߘ?n ^lc6$= g%XNBt/G.8wX;\Yn6na;vHjK$08>킴 x\6I./..L]ϦRFvzƿ:OwZ8b;%unZ;7ߙd4<3NY wTt4Qۻnς-{]h`({Ŗ䁍F#8j%gU Ҡ'ڐAe |RtJ$ߏymݗ8,tr=@*ZP>x9e!]8Ae s@7kpc]Yv\xM k945%yR"KJO8\;t AQ~/`hk_O礔S_h'"{gՃr=-I?,"(%K%=ӥ&1'0 ,W ^/Qh ՞㏅ ' O\a1FP"~z$#B=dgy mD4B<7 MK=7Yz眲_[('r sIܒUn/TVig_Uob~0+~(XEvX.!=$7hu#M״V]e\ +?#C@{yO?dA~J@?(]nM7Ei"QEE)3?R `s/z š||KT(_Ժt7#T8VVqzmE뵌ߕv`{w뗋!6=u9,\rEyI"a¹$#ySH$גyO{8sZVHc版զA `yh6׵lʠ+=ym;ʒjErkY$_Vrvݢe.wyw5(+2'`aLͦ2I'0N`Y)"g&}a(VۆY ObA;t{yv. 8)ň8:Ep|Qʫ|,tAţCNb/Rmq-̘jfP'm2(ph+ߚޒ̪&K{j3Y+.L)8mQBD@۷Di#UAin*ґ/!` >I5|'CDUb_p^;O޼8O)I Wպ–ng-EQ ސ{cIh8@4/x>"O}ߥ@Z#cIR u:d<"4`\({92߅Bvjco MM;=N .&2HvƦ*A~u{#+(OUĦҊZ"+m@jp찤jX̕p!  j) CTG4Ht0&]9)6P&̦SC-}s;a^ W8tᄚƔ#s9+< 7 [m O,rk3<᠇-RԼ" :结DdYՑe~'BtmnF@aTu64y}~y6q%zČX)"vk]xO=t¾n |{ϕ1pFްysN޴<s[^]?IJ?΀АMlJ߽Xy;څE #fæa[qu<}yŁ/z./8랓 t > i %HZ, n><5yR:iyo5b.fwFlT*n9y 9rvxjQ-JA^EP]?qf%*#|іb‰xX&v4o#OeLl!?D) J´KǀMkBQ(xqWy+rRd,xOFx!@te/{a$=9|𖹚rX.%G`ʈ&aX=|ZQdt0 82C~֔(SiW*idtW4;8iq9E^?auGEoHS7ϟ Cx8M;pP=Syos1agbS;40iTK0ŜYIX \h4"Gv˝ Grec&]ުG˱Jd0" 95aM-E;ap=f]$,v]9~L^7s*x{E['"Y܃$1߇@ 3/?g&"k)ueҡ(,X^W:Fzo.0D73D9}(!$P!dtOV1Yi#4B=""Va%E" Cy5XFqH f5}P?{OA`kGX*jh|XPAoGxOzZU4mg![􉘭~ӐAq2L"J8\v0.o)'jJmJQHLAt8K~I9[SO^^ {`ZtyFܲ^3K[@х&Ϩ!?@޹TG=-nZU|) D_ \qheAsbn[&xAx!JBaSw0oʲSJFASɋ0҃䧆HS|鮙t[5`,;v3\'ڗtI5* X.ݦ}ڸctKb2ajqݛk 4Q:\6_jE$$)_UѪoDemz<> B=~t9y;yzL aT?/L#Sd۟NxO Ab<9 +(E ߿8^Os,19"}\ޥ!6ݗ ~Ov-'߸"f'a:.,n֞xC+n>fPuVp+y1(9z.$QAĵFr.J;[>/Zȍ=AY'Oh/1F+J}и1GD/@cʫV%ug-.ZyB ͺ(vk&@Je.I6B#HXª_P> <ݦn ~/8 xGXFܧ3J;4=qwJIrUJ:dctIu-@;9TߪL%|٠mgޓ{tT'ns%D|c^gz tbGJnA=sIJ!E/ PX'Ox~ѝX`AlI2 D7W$7%G}*`i( M,JĿۇ>'e˜RPӾL ߝq? ^%:m=Opu?%WiM<V~Xo;/o Sd7XT*GQ` Ld'z g(7wX U/&A^BuN_͑aPy>߆]୺ңQձYLc ]lW"bGR 6vc) qg_VBR/ TIҍ"!W?);_nvzѳn3-$P Ӳ=xYp4FficG_ڇ{?&[]uq^,R(gRPr*CYy{yEN(6[~^+pUaq-_^=ܺe* *  ?@4 4 deflate* AxUPTREEz* xy{ZT.;[l lk/|Q8:JݻR4ݳ-3ADj#A9>QAU%匸jxjbU?V\X< Ǔ)|P]@6 iVg;L:KW̯r$üzXZ+Q|i/N&;nY0lÿ[Ɋ ArB_Iܾ0tU$ɐ{N~Sڼ!h]we4,X<(Zt5XHTQa:/?jcM.b=ዛ@#5l<&[$uBʐLu5D{b-gAq4fHN1'y9 !"՟BcJGGAԢj3hLI = L뻢5(ƶ\[el ]|4 /e,Tf&Lb6.K|L+݃p?s)UW1zW>xg:6o6&L ^BK {X%Z4xꧣTgBi\,}1ofS[mư܋RdEsM1PТ9d^Vx$;ltn}^[A\ ͡(|O/Em@!=l>w$A~c,(bHq7;N Tp[O2RZZ dZ ŝRp/ё<% 캿_Wcˌ\,Q{fZۥ=l墳$kHAG GNjUHGBXY%,O9ޏ2/Э~8(DWIzb?wg~!L_Q0lj3P σ˫iQİʌ>< 0C6Z쪎.3EcJ;jӉM22}`tc 7}%}T[>J׍o9U _9߯ 'gpħ-$NqVju`j2aI}]︀?FsĬMV"bAF_A@gE!4s-qTylh~dĢ:%혗Ck.N hBe$%"l|HE>VY`9dSri,Qb'\IZ)('A}$ρ^c@G{f]4?PȆSiZ z"״M 6P$JRFu_r%#W,OJ$o|{m6=o[۞yi  ՞޶1Oc7#cW{"[j!y.z? .QgW" ;,Q GLsљE<!'ĞvNRm". @NS?Dwbk[TxFӄ$?$#D~ ZwxbBK*TQ"Ai3 J(j\̰z(/y%E('iKoFˬ"3&eba.5O[@+7|(J"l݆9>Ogï+ 9CJ3}}>?1\7oElu XT/o> QK=Yp! DH\Z6{(R)TR/Tΐۚ N4@HѻV=j|,JG! Oy,ŐLC( ە\_"Zhb7HƢGT@څ8pp(c%0b"ļR=gUV &/7َX0GWicsGx^m5xx#GdEjʈA+F,`Zկ'ح;4b%Cgߨ%E;.q8p}ٵ!r`vMͭ@#ކrzep%-幝 6+-i̓o88rbLT?x>{=Gh5.J 6[,w<צ8)|:W s߱A2)}bw%G i0 <+j,&bDTz77m`3.u&ďU,4 qk P;(mUA{@HoAWTgWx4Ûtp.( <{=r]Ckޑ7!ӛ6 5}Ŕ-NGXseҌ5~ƞ.9 $_#9 7s%:VQ LVQc1˦ws1 2BzZG¶UgN'%ښC,m7:τv[f' <a=eG1di+ :u(}GXPR%|e?ɧc;jgm\6 S#ϖ52##VI;Za B3>[n%Xa&C@*A= W8Fƒ{ ;3~=(21Rڪn?Ӓr砝cg[DǫyjW= 0[IRܻ'ʱ|*yD8g#ͫ0,|:)ʣ\=_П^3W2@߈c[9.0=J飼Z%?1%zݕ- Ҿ F~<}th=?!rqj#8jh-Z^e׷FaZG̗BOg83Oh7}6,]'!;4?}ak@w&0PxpG' snRO%WB3_ `yvٯY(Jt|"@b)k 2N˘6ry~`.k9P:@:oJ] Rݹ ?_[Х>#sX}4;\8',0_^I}p Eי ܷ;CQe(|!--Q39`[P~0nui6DTHK X]R76,"Zs~:CYgvC|Dz7vbbr֯ibQ:^7/: jR~QGr3;x/!C $*ohR$ow^ۅ\c9wh'jQAkA(}HýObF0DXL Hޥ5&'gM[yYCjKFg":_+➃GpSV5;ZOkilйyoq 뼷1B^ Hmb;TPO#&ez(#\1]޳-wl?=)^ T&k7/;>+W܏Zsmv:I\S0wsgS="|]C$_en\ h_ &NǑj0fۦ%0Vqi/y:$-~=[ݰͨUB;] Vakr: u9i]?ߟa6_IpZ۷dAayY2i\ |\-yzBqE-_Klڢ?K1:kŃI%}=۹tFkv ?2tj&P_ӳ/jV^6ujK%lk|v ,׊>踌4F a B {{!>tPpJ&l"\dW'VxG$L٬Z?~*z$<1($۞C `jDgvC-|`?;uRd!OC@TmPLy@Zx!Ǒ<{% `YP)>ZWmN:&?u =~PUD<$C{v.($4LfiMVtD)D$|k6Gyl*1PObDi~g~nխ+FXnaW]](+yK $4y${O2kD?G9.fpzza=fpq6X2Խ! &ZF-bACٖ㐰\pv8n]V=﵍x,n5u:Vc׹`=2ͼizAt.ܵ30J%rc ༜gZ !N(~!NyT/;s{&$m޷Nd[1U{"zwSjfHRj$ˆ[Q"9m..)$!)>KI֫rY{;Nr{{id^bмp?)@Q?fy|M0ocf&A4y*0rҨANDXl:IE4 :k͇ҁcRʵ1%|6 [0rrhM [XGP:&] U cD߳Зn  3!뺄yfaf?_W|8lxR=PL?TbR3esJ|FkP8y ʊY,v+0⎠$lGdw OJx<Ҏf"rIDR[ SX۔iR!Yw O S*PI ND|9*uuwuf75T:/\$,F[%,~.ktC=s7ʚzw2K"EfuwyU[ ;3m6#⟮[ˏjGUSįu.TL"enpX#hO5\ B~u0?UylE+\wwkPν&LA~syӻH7 wke'1sH"Ȕ>͹dl5¬vKvU` ߍ ˖?ǚ@5QԞq.1o?N^rú&'QY~M6I_u>3ɂS_/V ~ʠ}%F}3-k4 W˄8:D_mGD&C(ݯ2k'2K353ϩRR/M3Kx~e{XP/R<= &"$)w怐ܕj-#$P=t?ĎdC29ۋuwfwwʑ&Pt657\{.jjQ=`>=잓g+ ߓ7Ӿ@0))y%)?D5]݁%SqVX~aՏ>_=o y B˟GQt:^R-H'nә,4Y ׽1e6qoK@*cIƧX3,7g5W.x+CK꽡}[$EcTя:kaAc_N:=%R6i4K֊W <9|`һhqv68I cTi, Q1d<܃qI6c6%}Sj>xa w =B"vFAU+$euB! $a}S'Nx6,kzVtuD5 ^mѬi+G;oi=*XK, xg۬QΥdXdt;BSX;ꔿx1ShJ5O \9#<xS u,chإZҺ|1Tj”J)v,ʅ׿`6I/7i׿Ad"3YyixAMȜ:YAtmk}yn+vY-2;v!l+G8T՟!dQ`xI `q ]ցȮ҈rk|/.~if"%–0Rq,D=3qJa.G% y-(B_ˏG Vj97%8p/2"* *  ?@4 4 deflateF* AxUPTREEv* xy:oԯwdaX32W-/P:2'bA/)<_zwRmbq D쒂]˿~WmA nI|NK~dio_n^ˁ怰pՙ(K|PI<~CFXeU!ήA9]4Y38˦]`R)$2NG|*FM{v|.Oz\3meXHXoӦveꝒɚd:GSL q2zTik)TUh=foJn[X界PB"re^5Pܵew 0)eA:R$S_` X"'LW{g#Y ?nC skonT#CE1Fë?q7Z4 }.=Ѵ%bwSkg:PB:39u"/\O:d{vy:QVR,yų/HU:S 8(k1ޭz,K MmGx@^Xԣ/yDr^}k(Bp4=%c69?x jVպy\b_iT'WAV~Kޡ\}Z=Vȫ^* nC|[vut^egHBmI !$'_?e}-LG>?+{"t9^ +$WcV*89g(Qh^G P]-}h/.Fo 26l6󩽡*߲"nM@jh)[/Vru8@[[GCmڣ'z9 suKUhIDCvg9gLB A2Kp1&v|Hh鹲Ч }#0[yOYK ;/p۠ų0ϗA)v-c֊,J;h1+E4zͽG~o8q[]{\a}ND(<;-!67WwcpBQ2ʪ{/ޭy5I#Hߛ% GLV7{?M*>5Ʋ5V:L$n!#Ro".Ol %?vY5OYMk۶#{rq5.#Y "`x~823iDvupM}#!K:m=6NTL_x͟#0<":.OtCdlG㫵s!뻸gqȱVO OF1vZHv3@ފ04F`Xa4f٦b'뷞s6ۈ e&dž(_ֽ(M[h=_&FJ̮udO-{=DΕX[o~CE]RUY]BH?M[4@Rє_sٺt$d8?%mij)\ LSpOL⿭?8qI2QSCexg$>MN鋿+mJ%iVX M̓#R:I*d;*22ؗv3>e!|Zn[XP- V@Qb fL H I&sU븨07\#wlU 3at"} 78*HLRPH GO@@nIodYĤp){eEuq9tqNBITp*{Ǭ#"M=O> ADQa]Ȩ-x0} Rg'/j;;R 3O/?=ïrmh3E|:i}JT:sRq76&7}_m;MQlkR^PHJH5oǷyLxoT6<%su^ޜi( \tբÞ8GE% 4$P^f=/b瑤a&:y GRCd`Ž8J~q|9ddO|ƟJH3ɃPJM|te}&-(1^(5ГP q翑5dm}d<|2 ?pwߚ*dt'[ lnڷ@C,wp.?*Nu%#/v.Y +6.9D4AO )Ty)w,)L/%WU\}U74_pkY?yGz:&(;u_wп6DJP!>*ԩvgoFq9Lƣ+8XTMR2S^i.ˬ2Vl /iR6[2X9aoC9j=:ђ7ze{)X8wL jlZ>$#6\|.y3i GRYv?-r)zo f#_xhUf˿]%Rp8d=J+xp*|~<>Q}DR_4Z.1ie}HK.#7jQZV?zߴRmHƙ6б( 6- B@R!3Nf^)FamJk yO[YɵK65x^Z:><<"m'\hYDYE8$cT<)Ȑ~J͘xN`.0g:h|;B]%>D9lԯMO\#XIP~%⟲\kCZ<\{W5@mW"bYKS}ķL y _{?S.u5h2:Dr*F^KP"9܎@{}qU Ĺt*q0?&zޘx)P;Y &R31fvGY~?p>5͂L3 ?iyrN7Um ̀(3+ |R=g==`j8/Hqq'KU'8PVƑAG60vY~Mԣ>2OE2_toDox]QƜ NyOoN+B$dsv@H 6H:k+G@k/+ϞQTb3'zQ7 ^ở2f^|o,htr%Ϫ'Һ YyGYJq` Xb|t؟kXO?n>˿N']X6h}zQ Slɴ;z]`]͖7AZ։8xhtٔbX!Z!ʩØ G|U*;8?|گꃋM̐5yLƅլCl=m z_2C骨e5˼/yMG kS} /Bbg`y˧pP+@A;AD ĸ)*ܽ'G Z8Åu{~J`I^j{ɥipFy 8VL %翊8olGU#v+0ãlnw #}ػfwWݣ'Ϻ r*aYIi_.Ohs#AM%#a(gk4V-;@R 3"p`/m(.m C"eˬ|WfۦL53rFĄvZF 14-Oq=͔%"E휗^"j8H:kY԰3Qq~#Aر$ݵ@1ߧ[ h-6~[JWՒ \'Q<|}Y(w=4#WmlP:X?"'NRw߉I5C:҃Mgs8hX"vwJ1y&'q-{t|3q?A:.Zgr`}!8o4?!IE"h&vd߲zp-c Ѿ nz<;Y Pڋu/p^`tH-5ߗD|Rvc,IШL>s:7Owk]^}ߔlۑ[ν#߮KA{ Icv:oR7Lnk~d-9JF{| :LccVQN~"v"}tUcí¿-|ҰS#OIz,G9ۅ_֟:!onsdSFom?7 ?Omȫs( ZcB3q:i&QjFJ&=\4^k$[ 9r5ζӋ Gɻ@"מ; h@ú;,Rs%Qvם qazI7u8#AgxI-$V^j &phͲ f >"'wƮ> fîh-JEOo X~vaêInMO{JG|))t8O;L'"tqӈw]t:Ʉ(x:xn,q_2o_mKqQ}guG4x{#REKs*7;&kp$YѫOmlt%D'|bAI"gzt%ɯd@H:\Ñ$RnѾADqkU8AV;Lcz7@w u:YCc}9R.yPjvQ0j.5ByP SykHW m++%ջ)i/5mӵ::0d$M dp\yeynjy603>G2 ~ ]BkDİ_(;jGwGV`|HHy$$>^cժz$~֎ȞX] Gi^J.mk*L]RgA}. k 7h1NzS]= xA\N.GQb5#kQ:[C0l,F)LA R`x+10̸IpG҅@w]`hHKE)ɊZxYgUrd!% 0;Bf {r(}Mcҽ]lBJŔL[&AHe.\:IJ2"?I 浛QP',`B HF£\[&>-g5]%ͭe1=I$b"E4Gm7nΊk 4/mhWltCy|X1Z@^`;r,EkxpoHZZ@H.y8#\eyI*79W<!+jDʷw݊x4T>:XWUX)ʿ%7$/K'm $Bhvl\ vW- Jiq.惘:̿])=#dSJ}s(2@G'n/օ7jl*[*4 F!?\~וO˱"Iܞ} _O/T\NIy^E>&'6XTYoLcQA{֪r8?[,HľvCkXWa哲ALږB=>)."͎G|g-pt,uavAWEL:킏)̚M͕1oy߈sD{nzp|o Y¬1㔁+iF@E}]XqpNR7"ƍKrkC=/Bߕ,n{U?K~0vZMaqn?携/NKB99dax$Ƴ qc &lLlڀF{Cs홝EJfяt7o:E<1Pv{*U_rt;R .~8ON6_._-d T {rj$Keדd".Vhz։ڋrZKm8Kim d ʶHHy5|c~]}O; Ydڕ5$~N ,4XQ? ($cmg@YK3,ZN`^b/),UW|_nר)m.̬͘¹/KN|XVeܚbc.ĕd2 $oS~`4{Lc;l$nEn6vΐ gV(]!2%X%@7ta>B bDqNE+W?t͖Kz^뾛\ҀԀ@Wܦ{z?0CC[opC5ߊA5KPdxkQ 1CRlQfT= b  RJa3ENe|"49.2wiw}P$ƅׄ١<+ԉDk?ز2>:=M~kJXS "f"( D2Daם޲?1;V]S6U%ؑҨJ1_aY3K?'z{ $ݒZ܃@!]ϩ u4Bx_ \}H#|hF~s9 5h g&]Xܒ)CcNQ@HQց|{AMi˪jr)I^Up}%XM9~RJX@HXgc2#\􉈖I$No5IOD>79FDrQ:pJ.6hz:S7|Ta*li@{sC0w(+~[%Ϧء\~{π,rPߚ3a"A0pD TYvE85fۇmӒ,gD "UwP.Uy{)G爜^pt9Ķt1,NTBL٤:y~;ّ;nҁ{u͌m=\[ɏ Δ>K: v,k“_$:'6Q6 9>%on{tGٞCp=,+1 .8Kh RF__Q_q wT/*nz th9CcZD (\u?.!Mo_,[{GBٝ0;8™E~2͎| 7c`)sM9BwDo.s.+Ǜw-7mPi=4c Dĭ!>΃[{ed/o<_ma@e#+xqK(Ŀ{sm5~/delξI͂a}ݤ:k7f@HBsp@H5ΈMRdI&'È!fuŸ#/ =3'}e w>_D]pD$R.ZRA)YvIய؂.U_m+7u ;yU2Yoh58"|1x0 B\Ax@HGUeETCٿ1aLa'2ԟwC@3On[QÍmO+aKN׬3D҉ʅ:}26},5 0o[ow TP{gqi1ҥSg4^;ؖaxrg1adzGqߢda [\BؽV%`˕ ͜?o/?[x[RɼV %]Wx()~ 鮼0Wy5zM{nfs0;G$pjo4MQ oϤ -7ɿÞ} @#Hnaړ,O-/I t>M*S@F)8q? g(G9Ep$]决-y3x̽#(I7uMu!eiGԾ53$3 s4C~ n(UmWdxXgXm1GN^r/=<\A 7MOO2cNN~>M,8psc{]z+>U=tPk3n懾TUf}e34tZ 9_^􆣴vhF g.\dz~,mWŰO-[wSGٍ_Wg+܄׏M)Bƹm̲.o3i08ahnzj  z}bTO${1h|_6@>k70_z(K6.:Rx9;-"ޟhX$(+r]E%%n,Й w*:D=eA~(=MP"^ 0Ho>@ L.=EJL uL+7D:F2 ϧP(' e3@i{zլ.$%K6lo} \_9'wmDz-̲vj&2d =:J>Ѯ}7bߥBt"J~c >q$K0Ϗ_=m 'ږ$DpG >}"4|ȱr@HX`[/ }xcj>yZ%]K57vy?DW^ٔE dPv^\ 5_0 gCul{ ~ەdn\j D :-PS*5N'^e^X>n& * *  ?@4 4 deflate1 * AxUPTREE9 * x 8U])2\ tm( )Cd:fY R(Qh THE%Jſ'>}:zr]kuk{=iߩ[ n@%K6?O>.p/=9mgiFg.qoڿ77.ӣ\<M]E2/Y#ž=ϤG;L__bokZxr% fс_adа3X5YOpm{RBs't iH#Į$rC߬W5Zw ;oއ?,a.S 7kʁUsnPtӵ4xx*?)ɗq" oTP"īM9)/h[w9)²4\; 54N-h@㗉mOKGa- o ct>V^Osqzj@2 RPq'!egU.nw 'J/z\V(rUir&7mSN+ BFuuBr{;(>\~ڎC{;Q[z(#ײ&9Wc6?˸4>/Tyν$<nJ\ Gu]M?_[@lUUXl,{IÅM/ssyDO{ޮ~. n sw;$[Ñj~ AeE+@ee,%ktZI >6Ixq- x.IFymy5|.XVmU˞|ܭOQ BA[&8)sj:1kҷa#ջٻpi / -U sm\ڍo !'S+j'Y"~ōlA$6N3+:H0ԱmQ ;]֢DvH͏ *Pot\4n6&J/{ [_i qwVA*yiKY*`yά:_yT{qL?`|$?: 2@mgrE' 5u'q+n eLfg6h\3jOh}4m˟錇ZU(}Fb-wz ۰fS*DOjl`.:9j}*|A hNyJAS* Pj^N0ĭ[5@8c/= mG][(q~Cw%Q\EgO+eYV:(zB& GIMP"~߇Fx,rOtyU@_/xyÁ?BVa* H}<_ԇYz =-L> ήeW`W |J~@{Bk<>Nj=G?6% Q+2P \t/ 1, 3_kO*;~]mJKHzw>KskZ\j\}{أhs/xJ'ȯWïU-K^eQZɲQ-s䂚QXdĆR,42s% 3K ;膢v\Ö_> 1XԅHCajseU#{'mcÍ3oa} lV>^z.z<ƳZץV,zw{{Yݘtu?>5PiOxՠn=]šC)S_eStۊ0PdbIRҁ+7鑜/z9q9,JW-%m4wZ@jjs&fb͒w<+sr*f+3 |>iu06?0:{8oX2* ^wuŽU(C$MuXCt!ԭgrdF|ī84vdU9AЀ$̻ܣ '^+I-YMdy=Fw?LqrGIcbсnUc tZFo0^|.T Q*cߞ%W*]操Ǣ-ø9mnSYό!E.d `/ 6KNl@)@]iӥ.d)x;JĵNj<}M f-_(?ݢMl/|pD~ȱb™r ?3= +Yv#+:}xbSs))vIrjHd~zD<'Nb>k8މ W ǻjEw1aK>@UE3N鹳5Wsqͥ!}!"#'i~6)(hVPZ+~^#qgmNCS^ڢ6.rnl׫Sv˲qȝj~%#/,ftM`@u=֫Xλ}m]S:~%u82Dgd(TNQyg#=?%d-aX@"'=1ibކJQt䦜K+@l@͑|uO7zB2(Z6ط6K{r:̳lU/Y>ƨsz qM{Bly+Px YSO1@U99+ݺ ^s9}ltO&[4ٻb? Dm+<my·BR#!Yoz>Ul&o)܍ԇ3NK"QH ?(42  QWχ$J^O jEevE%,چ` \A cw%5"W#P^u㦌Jp+7didhԉ(  s;&ƫ^wڗGB0ֳgt[;SƊF vG̺A~vQX~l c坨Ay嶙\k\!08q/{EyZ%ua4y37AĘja(yYTE{y8LW(V9VBsm8y̶%dݣD /4J(\4<3-y8?(c*`GM^w7KJaÅv|CIW'3c6pm'_弸aij4];ⓔ΂Gn iŊ"2@2#'xvQ#30lJ)wW :'ne2M[B9{ѼDeԺXe=!o ! \bmvufV)u"×nJYjXQdFAOGE9q?{z렯u7v\!eOIk:!R@Ո;4<wSGGĞL7}HDŞ>OcM7-^ >$M-;`pk,loK. Np3!ROeQ}(,p_>PlBB,E*=$", FLKS\Vȹ4%g^rPl wx"j>տ6{¾i$!G-IEݪ %ێsBƪS'qXB>آ(M^꫗7ܨ2{VE :R;K`""zְYזVfh^4,m}3sv:ޯlR@t}rx.,\&;2ެfK/Ǔ=`=8]i!>sW4Q$?H8b4&e5[p2 ;YO$)yV`:|e\#qR~qޝ']t$z|85IǖͤI;xb{o0CxQ>i.R D<2xC|D[3|^-BuU*PzN~|-< ZR6XvSÆLKƞOHX0%ÉwOm6Br_~iAX\n4%Wƶ\{|h5{Cf&0c=DBB-}Fo+pٚ W7U‚CQʆ1$Uʙ6^*h~o;6ؓߟ8pr }  ~B\_-E]%C `Hz+I{#08W m0cTFsG"Җ-}e菒\[yI2iELv4ԴQ/'"(Ӿ(r Wܻ!48Tڽk5^̌Jɯ_":;߶% 7Pe:5Im:ëL蕠\2XמEa, ]{4Q(G 7V\\̈l/>ǩWip@u%zܗ aq ĶQ 0?Bf{\ ^= L<41?.3)EǧD [e(܃=|}῍?{Pyv5&_i'x$,|1O@tzܚ)2P~DS?>ں!(/>s%b.=DT8}^6`9]**;N=rӮ>I[ W+N|ϠLYtQQ7 vf(mU%4 Ze=P:%%˃Է([ ̈́#if*M24<}2Jm/̒!Qe,!R˝"nGW^/fWq<'YţIok֥ T$MoKBѭb@i`LVÿZAG<]S`8qaà Jx;c˸ EX+c{{$h7h/z2a*p@b}}x_ GĎOzp?eaL] J?=~VyZ. ] GlY0.A)hXT{{3ӃG$OM%_'i[`W9.E|Ce eȸΓTÍ] AovN(w}8o$3n~nnjZ;vJ+NVMtU!D]{r3҆/[{E?}i%9* *  ?@4 4 deflate2[ * BxUPSNOD    " TREEbc * xu\UǑ DDAJ@ )ҵ.) qa JR"X``GQ@PPJ_~Y}s{??|qqTQLR*?L0B)~ZwS`X^N[p2CkƎ/Gk{;ӊA0X\̗~Uxrz#ű ֿN\h?=4ȂkӜ\o0J1AZxYX0?e|_s.hJ=$ %֫Jm(9Xpi:F/nfDGGTWcv)2E|$`?1=c-nNޮw{qâBssKDD n.N[IC9eIPnU"JҾ̮0e xӎ黣ctbӬ)1Q u[LCAOp0.IU1&փlMw~Fpڎ .T!]CD$ K_jSzoz@gᘮIƅm_(QMBη ݕp2sEnկ) ސҨ-Do]6'Vh w|Xzط| >XQYhvYoDE4`׮Qkuރcnm68$W‚%%p:V""קCPy +k}B(wH= QMl8Qq9y-V"'{kudǸLƨsszaE X/wI%^wi TN..ZrCI^d-/u ۵$Aڇ)p8zN? (qwt9I{ yXkޮӳ;z4<թt*jǑدSsT-$T |򿤹XCHo_5YX"N X7iyޱ/9 x*]qbd' Xa]YydvN(q:IH~eHNo­'3Y!w:F 4=erԕ/X:DIvN>U@8.6 V%e-xDñ>H["VQ&{0D+ńcB9y|چO؄4=zI4Ξdf`ﶀ , =/ SXwuxl 6QSŽMٵD@cYwՎgqoM] 6a]av?:Ƭ{^4Y ^plMѤ1}I/"rR˥ 4bYW{C7n{zQ}]+a79ID 3rJWO}/MRnI q1~@ۡ9ȞͿ^x/ ʟrSb7*@ď-|G4ŗt@rfgwvv6gFuRcEП)CW2,/,&n U!% m>M7'߫\h78XYZQ=qBpF#_'U/hJ~~reI7\$΃e;r$kUdylx'-?Yu~t*~jUsp/9lv q{8Ҟ62n Ū#Rx;f 4-U-[1 !.C0QZz?\Y"̜C!`ΣP"[|gf-A`ntvJ-//Vƙߣ;$Ȓ F^%I("6%kB/$v7 ^ŕ&Y(.,y@R91}2r雑Fhb`'g j\hcTI?E/<γd"JCa=@h{_)朁21rykky|$a *oxS37\"ʡfT^hx U?UN9lfqoLOsyw>W\XyRebT1=8jLghY@H-S١/RDSk H,rT&d,wF8Y3Yچo= ,vCBf KuSgöe/X-'+yVw\n$E͒G!$kw 8y ϸy*,KR[ uEtqaWnɀDN'JQqh^'ENC[UBa.ʔ5o[mg k"Khȇ~JfK},|"=EׇRVc% sqm@I)v2]gsJyp8=KZi箴Qn#!>tTI$8z p:J.,9wcj:nvw@ 늕w>cmv؈0K_x~slR,S6]w׺l^A$ǟT!egA nu~ŵ(GqF?zWOiM\ h;?g"! s/9>tK`Eyoz1u(H4:fSK3%}YS;%Y?2YY^\2vli1 7cLӣͅlh6ïqx Xb:<`_ <ѷ˳P߉7&bㆳcYdaFGztzיnԞ9 W[REQ"Y"cCf4IAsm M1%Z8+q[tg:y7,@4kuI+W|3MrtL_봝]|0bs3$J$ߙ<.F4Eny)e{d|fsJ/݆I +#F.Ͷt3z /l7eyt ;aѰbwB;ԤjBd%}_:8Xw]Fe2ABdQvz2.m G8e:`UxU*E@27dw ׸E-QwsB%Eצ i>~+Qa\@!Ql /:lZ9U"rC 41k< ޖHs5juewB\ ;?>F5Zd Avi?SuuT( ,dJ#2ݣ7>?ARmCE?ߕ8XNFF$qt@ħX{_^00"%e3#gf ~Cf{Ś0.*o}j_؛@t=bch)s_PW XKwwh#uJԟzeW*+;vBlzQyߧ9`@v4Qm`9L !ו$_JfQ\J*ad7=p(;n^&O5Ri} %EiR.,}X/+w=%&dHY΀YFH-7v󵻭tPb펾d| -B΃+:d9k,WpyAͳ2ϲ b唧W $bs s $7_=q`F(=P mSQiU$WmR݊_|?X%|(:Tv+tK} v<[d獒"'B.CQoo ~.`?F?\m5d fW_"VA/|۷o} W_.tѺ􋯻'@W J1;z}.j q3YcX #}/@ZNW$_wYٮ>a_̹-)h?@KI7HWRDl/-rhx[NMa~aH+dv̗_GzN@F&S2}a kVM-_l.nm,s5boX'73%G2z -{?w_u/UNkŅ>\k#,,a Dɝz]"r).;8i>Lr:u_*η:C.FWG`.Y_1꒵} AMפY?ׄ c\EsOt(nlr P `}5 ~%ԗdґ_!ۤU6 σǒT_ʫh`, I'Do4:.1j-2aK*ZKOcVh:wn -AW a/ex*@wMv꧌=x,Z1;>" /򉒐#{ʷIhrķxzOb{nNC~K'Ҥ<d lT45rs_ K\*gG'><됭?|[bo )=4oH82jwu6r=QPYu%I]ˀ !s{~{>_kk]ýMAZ.uYk.:& /2㼪'_e dLǷ1Ccg i#EUhj"Fk=hg淪jAz L KڟM[HH֓/ZPK 3:Sրev:W?.$S*}'ޖE@H}Bh֜[gUNG/VOGѿCS?~.fls 䇲i/RpMjtx2p:$viH1Cߏ_2hꏂQ!]|?9f5̣bݏy >I'%_ԥo*sY+4  T/eX"Q+} OZ)fCxDM+fkF q9!:" ^V^Ҷm8{.J¼ȪEoXmpgx<ЗRyqUV9ӌm[e_cq Q!NBիQV֎A^M88˞h(,Pp9k1y+aM7Z>;<\Ҏ w58 bN˚ tfCdkHöooE+Vc8:;ޚƵdsZqaE_ ?Zv.aDZKC6+w-cJD1ӗ uv ,(xr}Ybܧ*yV\;TgI^ _d1nk 6Jvؕl =vD!V!id+ ~&OՆM' Q"e&h»wg, Z'.%=Tk&'S!Lk} !80uGŶ'qF) vjXF\Y8jz: ++hzox™A\xP:֮N3Mgщ \-GݬRSA py()3n,@p~oC6\;n4},+NҪ8=poO* ~1?u]`)pfzw}T4qI@ iYR2|>w}m RKmժcŔp+*4:gÇK=_B2wZ{D+G{Tog8>x\yY SO l|%?KoMeNm>7M僦[<.h(gnh][@l??V`d&`v)^ZN׋4NWyR^Sz˥wW~E̝Lל6C!{\܇Hj5>P`v Y=AoP>RW:hKehhQb㹒I7sbﯤgV5j׵+RW*:ޙRhѤ00@iz~8{LJG4laTg6Qu6Eyc7FwɨpYJqe00J9`7A96H)gnr _+L|qUޫ&рpFat|v;kn B{V\ܩ&"p㡊LNRh$*zy>n/Iwު>Zhx}3t{8?N_eR/P:9nw\.r5\Y4y\+S;k_8퉅vvՒgSF6aȗ(E/:_0@ LW5b qt1RzGXK\ nV2* џKڸnTg&=:vTXqžI]>wMy%w;_4[xG 8lʩr( O=l' .Ѻ/TkAVUZK^_;O_p-QP䵅 rb뇙?j̇s٣u8Y3`7gĥf}0""}Llf6[ -&m3Tg !MfG>kIJ$AZy/ +w4 ǟFrPon[fM^;ޖqpP061h8Xv'%K)%W~J* MQ±n^^@b_S`j [ )'E3'} *kNJ 'fwŶTLN HJ]3Jˆb b9}wh~*8(_6aEe\an/U՝5W[sdŽ֑kiשRsoSxp4(^qG'8Y{1a C47`YFe4.iJZJ^/q9D:R7_ieZ!%p+̫]e3HcG{i~b/R\kS:{(q>\諆9n?G3?jc3 dJ gh[Y[~.繖ԃנAPI~iSHm? |^qn9~ j͛uJÇrl! p9io,➓!RmI/a. wEv+9L{HuHͽUz'ĕf8cEuGu\DS Q>MHIo %J>Ũ=Bh,)̕+w$^1EZa(<7Z|ҫv!l,Eu[P/Ȭ;{wWXU5!4b4Igcc~` I_FbeBҡ- I X'}e7lb\}=tTρҢ4**/SB5Pxc|8[vюdH\;'=[R jt}]DLH`w[Hj0y޳~xo:5H<\g_rDx>:x InODtU'o=+Y zvvF:\$.}^<ү5* FU?N[`&ɨ8^*E9Xqg AkmaׄY f5gN|~]OCRdWd+p6 UqK~bFyUB GTg#7i")>%4tsp=2 2.]$7lWrzYOg0J{D/mrw?@Se1GߏG\1,;YU%R YQBG81+ ߢv˒dA)w dgxAOq0=0W hGqxdNTm~Y4xr.3[-v^ ?X|˦O1LÛ??ЬTq4FX)D*-sc.A駞佥sFdxY +J{䍖/C+P]J SsW4w %Cn+:--SƔSK+!0O^)F+[Z ӠhF>NwtEC9 D[@OV *KiZ7.lςQf՛ܬ YxYpȹXfˁ앤g)|Q w]Pe V=eC!K[7m RXbPr)\%'­̀b !ҡY$^_҂LYG>|^zI s(W8Yejj;q_u(_s7 a7`˾ܥ~ ?&D{0es`6gd8∎p3uW}E\yf~/d{zx:.N9O/ G~(*>&md>Nz?0gHԖؓhwh$ L|&Eb#<+ 7_sVH6a X;4x#.wh`Vu7"pWt \-ԼW%R/5! '&YoKXqT?&?vzdyJ`F/!GtG#ōϿ*FĮ-!(nkpZJ/WDERr}>fXA攷+Ox:{ByRNT|fKھ(Z ՋB0{l> _!/nw98ioO;`?d?4D;ϘEu˻OY[Ro Q67NU.K";}oB.w>|Ԋ!-"}zQ铏TQ$iAkzPbe~_ [AR38ː!ɕٺ}!{RqŭjͳEB'h"6R>ԏ$Bď5+^[fc/SJ8qgʅ8>@JZm>Fa3yQ(rSh%ݙZPnתف/44pC4eiv5z=*?IӪz[ D ;@K]FZ=SHrz~;[vulk} !*NR~s1r9@V4)_ JcF=}ޘDXA6~M;߄\ ڽ5ysü,ƔƝ.ZVp}cO?Y `amR\P;Eگg|JqyKfVzX-{?eq;{gχF~j*ָ n=_|BM  d9*(m2,8GQ7z(?*o_s^ l6 Ru{WmQi,/8õ{W̼8@Ax&拢CqVyk| F^ͬ?Wڊl2By]^M-nsУ&I!C7 IO&<ڟ_i_Ewuހh^enG ˩%}y2G'H* dz '+^ 0&f7d ʱ }`zf.+09K-"E,jB`i\̰a2L=2Vs aWl0.Əs]=?2CwIz.Ɣ+S&σ1W%P=y>V;R:%-cO xTyp(i=:W=q/Sll #Z)KęJev[8Vd/,n>X"v$/;nXrZҥ ^n9>KwP G&o2Bj(v - ꊓIWRpfw4PL-%Z !/hVm*bwGs{*hLY&҅n%ߌ*%ܑe!F끖/n+<ݏj(/يHOd·y4Q"^0 G[ÊycW.ʀH8t=tQaiG+U䟃X,}JF$X씢PRRbޝX"vߟM%#?Sb"KgLWGUwwϣIu-r$A%8 MNMsWb)u5>o窮F׈w!Z[K#־6Mc29޲y^^,m L,2{J ePmrȬ" DL025_6RXNO>ڙ ׾|";Sꩆ{E, Ǟyŏ0ZyH-.ˌ ^lrԶ(_lR _#W+ |S=7/}ǾG۰)~(sn@0b\m#bʽp=^vW%~#Qr)nR^d=sb_6<>gʫ;.@* B!w3'JZJ1B1\ 5NW* *  ?@4 4 deflate * BxUPTREE< * xy U]P!C4 "21\f2g*SHI)d3P2eD(dh0U$CoO}ntnu?>>ZZ{CF荪3@#Q`/6#0DiӔ-ˌ'ߵShke'hUU|$GiWFc^ {LnO7 6f7I5sRjU #Rq m~ƶ~K>;8 \EjZsBOL%?G '4CKᧉ+|`ݛȡue} _L).m47 27/_,?dدʭKFn:hwaZt¸ܻE$-{O-ǜ3]z6/R6, V~IH!a12V'ohZް<}XU׍3@fxw{%y)\n(9;gzUp s]'˙OvA_JL..#OEOSe JE6@D %YJIvMt"k*h_XG>Aod.e%8#TѹqF_s>bY w0;p*>,?ii( ݻiZG< 4m%z]8\Q?"{e۹{,0xYc0̛\=9=yM!A__~ ?Zede65oD-&OGƿ"MkNBu^(+v@sʛ˸,ёH[d{LqYRdw|Osq3m>D\>J E5z|h=+s4 ˅YԻc`Bq`n Biz=QbE]yPqhD8V x{Bvgu-SD Lz%P,)ϒ,ϡl}:3y)h4F}v﹟4p5|E7EH($zҹtdBxvDFAG*$eYkǪ8Q_@Ge_xmu0eKK' _p|"_A15 P]@_gCd@W: hlSpla|BRra0eN濘wn{ˎŔ YCV( {RP_>*>k1NKmՊ(ӌ79&}?lekϔD._()fTt2@977v0 (qC3T?,a2V"I)fj]p2JfW5 ox MopuJ /pm䝒m'@tb"imSS59ڵ,!48F{%|i:oρ LX8@dZToC鱨/59j"vv8䶂m<>u(k/}]xo׾!jB :Ӏpˁʗ ~v9辏ޟ$_P| *ʴ:1+J-B!Ѩᝉ~KL2gx(#SOIfoXڼ-)w|!̂>hd& _B5v'Ku&YBl\TxDba=-ڮ)Im7T  G^DڡzH+~"cCGS-1V}t;v9n sAuu"cR%LHׁ9> ޺ ;2dhTxAm ~JGkI0Ra5a6,3PI%{,tnA0Rc((fX)\Up~+&q=_Ha+9sc KLĈ y}u΀Ps%^ Pvo{ wc-cXe=XY7xIT*::JB2#)FJy9C]fxd%36<D3<\oxՉ}Fs2#^^%V2Hּ%e;]\uW j8+oE#܏gYn@96tk|q6x|/)Vb%' Ħ|_عJj쟗Yn+ DTb7j_)VC_@t.fU0]BG E>>qL7_mm EgǝsQ~H{P߾p/5hZD/~$L9ZZnuD7]H}]e N2\?OU7S\~mEHr^ Ue~go#;yyC;ӂIozJ1z4{nkT:,绕#ozOJ68fzKz0)"t.uc%Ba"B%ePɿ{h᠄iwis''U>IȸPUTK?QI4/}?\,ߔZJ*Qi`.&=6z!bUD̕uǻ ICJs뷢Z璟)t741 |O~;=F%/$hhvwmƃo~ND_$Aof~ YO틃uaua(i^.V^u{Έ9Ĕ8@S;:N*.Ɓ͞ov Os8 C< -'%#3a5Wk a۔-* k?1i])CP2OݵEJTH&>2QO7UR V#VCxwFSAP^S2>Œ'BTո$X|,~#/=ؘExzd;^ ?XпVS y}A^T w:&c-ef "2ZǠ@+*YkbRwiTӚB oe4z.iEۺ}`Yx[)(,3m>MB)H_?.$޵^hƸ5 sѰ~t6ߝ\rRhK?zUxr!|KV 3˷ "oUT0єM, ^;;˺3#|uQ0P0Y¦?|'^&tv_WIY2OTXީb]ʱ']֠P:/0QtXCs*$1)i,Cib`3~$a>6N1G%1gP>gs;nS'+oŧy{Ve>z|tjO]@˝zruwNW3O9[#N#(C LH]In0Gkg(Yx/^C0KsL. 4kŀ~Iiv07^<&fw % 3\T!%tH)sVn͝Ҁet\eJSxUT!eIB/`9{VCN xdK! f^ {zBYNs`x(KM년}oh:"$@$+o@af5+41v>͏]'E 1w> Q>I9= Gl`ZRЭ8p*+U접{&v3 ȸ~𵗰n٭&@r^ѿ#zW?f_t`rMձ|]][^.U&]"mA&%>"6%'}O" l6٫7J^?Mk {/w4C+*}0. KrOsdU!Ef(_]p'5mߟ ́MN,?aa0.~qyk̶}zVOLPZ||/`+*T 9mX-Y :ib NF\,C${* :#uW|"ᵗ)>0&ڍXkf˔yQZ1 .S1#I(._N0֓N|z=h>fMAԮ"Fi`yaS},]d;Wvyڞ`y 95-lwH:Z[Ugo,M} '7ҡr !bӥ |ߍEQ`ܛ ~>"4PtNm.|M;Qsކ4D)KenmĮVLq(e;dž򖾶(f2BJ>&G<jO=3;JףkW(D'U_UXP._MXZA u`N&r(1Y:U ۤFcK~# Z/& C@'a2IhL\tolYKE\$ʊaλKjvnb2q9*(}>1Z1~!b70GR:"z%%U; <9B76v]e9cv z~xz:8Η{ff% <\&mz8,jt_AlLx,Hx5`v\VPL, %QΩLmw҉D[gaHfi2r|ƕG!f@&J9PgV {,cw41 KrE}g{[4Q}BI_Dg ܳ,rM o-l?*fWhr=cV_ _WB*)%R0rK`zr{XρeUqq&3?@0!_6|M= ]Ծ]Fq;{R8X~x鱃!G#DTnF.go~!xKl} )RvH MtI+@H3U݆OOLjOMOcU7+q;Nm1KZoJ}.sښq :;a!AZ cо.x-?ʴz"P(D /-tU߾ROS<%bz0_5~>WL"ċ&l2k*f)_|)='NP:,߉G~ER 7Q[>Yv&\RL ҽ^5c%U+{iHoK"Q4zlLHC7<[GdO],`(|(%R~3<q@ϰ94SDMu0m#t*abQ/zD2)/mNy DLDf D"#"M-k!is @V>0Ӽ>k?c0;3;`-F1`WZ k3KĿ{J'"b 8L&)E39I?~Q8;Z]L)q @7]Qk7/ׁD7w ʁN̑c0WvDReh"wRں w˰߬:5ġ(տq {6x19s{GtFG) W&)yWD)?:K* *  ?@4 4 deflate& * BxUPTREEV * xy6T&_{Hyj?dV\?ӝy S}bi0|],Oފu\H,TceOe6룞FC"e~(M݂3~]eqwiz6zU&8ujn{J+|gNc_uΪAtS}?Wѫ|`rBUg*hSx|c*HH /m b `ґvS?.k|bb5L *Ѱ d=j3G|{XV1 X"V! _Ҿ?Ѹܶ{୙, nIdÕ}r q*7]IFSly@hB%kxw}c3,֨lDYnZӇPNi,13C5貃`ItmAǛ6GtGȶxQtr7šܫw%agբ/[a] ^K?p{X0VС$ GϠlXNBcn!p\hy6`6D:js/{ޛ>P"ڜ5$>.w}QGWhB ȶ򀐐39< 6,(] XV>E9[ 5 wWV]F5,shxrEHhB2P8b7"6o]v_w4:4na6}pmkhgL=Q({J<޹`PWI}b̹'v,-O;POA{9- +ȗN@]]x=kI 4, qo} .={~δ|q>9<#Xd-0mGOR~O`IQpf]x>S4)e^EՅת <rԾEo(`̮J%&. W%[nuD? 8EWzzRzB( jiBm7Qr7@iDӵqe;lr|j Mֹ5?a1[C6,W]7jg4B8ZwW>/Oӣ={.% =®$+#n=FΗI g?d]t}oI;;O]ϦLN΂2m@O)Q#%W_+2"iw&|j3qVE5çzjBl3e="xrR,tf|,V 8K6hVJ$iIOKLP@_->W%}TTl#K +<5^CԤ" O_B]`\z/j]f5M \2P'[oW ݺ0WmXe 7|0ߖ*~z޿ȕ*(-A?HaPw-L;,ۓIb޵uU y|Q붚o y]6[tzH];chڟ”Co33h %,q3Q>6tM{|X'{ }>~iݦLZ˾: *XKua'<ȪAe@7x7+! )W 6nMU=rҸDni0wϥ(5 RA͗gX"S:-Wl |fQ[řa!ϲȭk|\HH|b3ԈsU߀QW6+W_Uaz>@jr]T n[;4~ 7\u Kҝ 9 ̥-|v]o熀Pp:vl&}4.h&7*C@oRUEpAZ#PG i_Ut5iIIâh~ݭ5p"D: x/d~GHeet}č3ڭ͂ |E$9wFӒCL.z鵚|_wn &'^Hˡ栠Ow3<_`ܹtO\֮9TX@?4f }Ds9:FXfӊdi'XNnnr ۳@,IXzJt.ޕg5'r/5oRm[kp+(X]j7ί91~>="Y.1ꉪ ߣsBо̓8]GS,rn`8lCx0!4|VnCa<8#F\@>L}5`^\Q5G]G i_dzE q: h XVw]o.ECUG/?ݤ k \to1f54]m |KAZ|r4oa_M q%&BsgBO)n2Y>le*ert292B>#m zY_]h)#kOaEr>f17$J{Bl1cף1OJW#aF+g#?a=[sL&Dn 4!{UZ-Ҕ'dڠxfAĶ*SʜnG"Wװ~ϐ NJﳱDݸ3\cUE͗}풑H`RM;O޽#Q|7?˛o% 5NK\hIJb,ϋ}x}3 <Ƶ'pGKTH2|Iey'fwvA"+|xczJd~.Ur pe;'5͇Ev8E- mo2Dq,BBGx%*;匤}N0 91$*D>@JQMX}N;*O,0,NL~T:yA{xsǠٮ,3! 2=?>O#>l4>).K=L|./^@ &ʻxq`!*.Y99߫ߎr+ -Մ&(I.g\K.Up+RtHA[pD=z4zrȪ!(]l,)U&[6uXn!|`\EvMIatۅpuncsÿ]o7N ж% }̒S62U&Co olVҲ:Wmj:pT|Q5 ,-]#ԑyG5:..M_B#ܧnow.@JaY(ݿ ?]F9g!zMc=*zP"Y Y(~?wMFITFUuyT>.IJ[*rAiNuCn HFs*ˍoڍA5szޯx&)&b)iL>Z[  7A u ]+P&_,;b`h X~Q[ !%?Ujpj;^6^$me&9_Y ^Qj(W) ELk_Wj'1$݇Ut{s*?7R'a1>!T˒2~V޳:k#~UwQk@8-O`ItX3""#0dQ^~iҠO*oSf(-Zow0Co'Ӿ4Jk'rkʣ L{{QPSgBe7o&}Ua y/ g95zOQ+?H^fK ('P>e @~~VŶ@PvF"]=pN* *  ?@4 4 deflate, * CxUPTREE\ * xyuΜ9:CC_Q^ Qϧ(0z|7u4k]P޾J>Bh.׏?^Y3/ Odb$#ɘ5sP|/9_\A9ۍ_2,fI,LI%9}8=ȟLRm _n?GR_5.[  MN|_Z VBwI2p6b:녩tHZ-JC oCN-ǕA4_3Z7 ;HDŽ݉oc~7_& e9NYI6:2'x[&G2Ϛ& 1L[ 8D+Y1[WPrtAWT߇F1?7v4*L1(z{E6tF4-4 (ع$Ɔ<[{1(jUJt+]JBk Kٱ,P+=k-ywXD% `NCf)hg1\ac0z:9sr:oK ߮@mԯ0ՃcVWUf䲦=\lo^ңbU~mX@~k6:;K qsDDca jPKW* ]X"!E}֊p`Rͱ|`")q/B+H<8)E=#,(Pz1gdnRgJ^(?HV+b<'/)-:-ճ~(ÿ%) ~2=HSڀ%b8#9?1؞)= *%nP,SBniUZjcwBp+U}";%)t݃T?+w4> {ͽ27K|K{]m@sG+੹Tߞ5%z@MڣAp>c~e9B4E0p5,, ]C(K_JW׹!s)r6ͣB3jkBgnC *Qi9Qou{LO0DE|' UN~:n%'{+_\Vr/\tTSBKC\0J厵dž+KC'᷉oa8{UbS$ҹxkumMDu~%|Drr?Ԟn#N#͸!fu 4kNWFY 澤at =R `1ܟ^6;(8=J1@x29*E5p5KvQ݋>%)oozsEGؘ;orפ&QFA,cL_@QFbEΞ}D%X=%a{Q"_\>iS#Wi?ZU;Q2ieg$ߍ`_D7+#s{Z/cmoKVxLlxνJQxGIj;n/a'O{ P>w P]@XDjH*:p;ԑa ]7L;KaZk۳;:lr2Pb5{?v'Bz#3`\uR( 8IGH”# uQxʆŊ}!b݀ZԷP`SdGA3ޘ)0ieEW8V + 6ځv$2:҉a+{ovp7~% Q@95GeǜP&GfzGήNia̅PRa{rn=#nOnDZM.|(Q6#K,G|0 4f2 :FA-O a0mugT)sB$fUQagyc0-Y (xOs/:nc%ڜj I*{0x_u=# _lFYw|F"cqx6Zy{Gx& V?EB\X\BԪBYۏƴOJkwKFLa7B N{uM8 (Nh3j):g$6^D[7˹Hlyn4ȯ>*;_wXE5b@7r䅎2\D9}d'9GOŸxݴ.`S2X b;\>W,?yd3PS*D]#ot=tl,kuv|@>k(8sZ<>^:_0 ?[V?d .yOu(/F!^ݹJ*G0iA&̾k0ؑF-KH/8UӖk8"]\Ҋĉy˜54jI#oZ=;d}f(m{TY?^1Zy^TdO6n7{.vtL;VLSٲpaǪ 0dq:WcKQX6—pge}EK[iGu>no^L@7˨kOOL>c#;44 9K$Ct;t9>FÜQ܅*yze -j{nʚ {St>R憈 _wXȘ-6?iD逦PB)?LL3G3i݋:ʬ^n> +Y[il'nFRG_|@k$ i$luLl7^axu"݀6Yj/ia񍣯%s!DI=͝ο E 0[""x{J9T dRWa iJhHYIAtrpS_>,+5~>*#KmRztRi1?pSPNKCS`@ڻvY7a~>&eS-[<¿)ns~ǖG@xEus>V6Es#\X욌I'BS*]AWzkߧ3'OSe2,J]+5WQF[_١jҺ@8J8/u!MMay}Mb ΅$,f8!Ⱦ|XDtaYI%f/݇$ii'J: i\FRهΝ5kۊ_S rv&/JB7(2NZ]3WjDhE=SPe;݊xQ BhƠ6|?Q0̖ܗPV>VKpUD1-[~7P#b7IK)9!uI\d&GxPQ߃>(QQ/cD;N@wGb%1Ӽ&"D"lgvXXz`d& 8^f~N(gOr#a' M/;dyu}im=7]TN })&יr33o *rQvE>HL] łbP~}j^f+G0op޶Y1ʩ d(c!ihFil uy?q4Cc׽ªw"!zԽ.E@YN۴F^A3Խ}:=gSy.pw@D<~kM _q8udbq&5~o6p8t7_T[A˯GEL!j0YhDɮAԯfL礲DϢXzz $x$Sk_Mߩׇ"g|7s. tH"8JL%C@Zg 9<ǻX򫘄L]vfn#ZG )H>< n4ܐp !?7ʸi1uVӝ2H[6Ux1ܓ/VAǃαBw\ϭ5} V np+|184~/^ ;hR#ċPB(̴yXɥBh[=V22k@n,Q\~RZTy#-LQ姜!~IJ78GzBwN~b}_wE Vnpxəf+E,㿖)%s`wk(&0ޤ{H[c$Sftu#K][sm^oq#-Z>7:E? 7.hL9T?h,Btuz1V&o*}rPJ`{l A L$&N,5jo2Kt{ׄcBl֑˂2W (U?:Pi/j"8?y'M %8'g.KSOwrN_5)_2ؤ#:BZgi=)!@GqGZށ=. zH%,hDi\Hzۨ*0d{2. 5Fv/vi~<ۻ),] f"{WJ?h?~,T<(mX(ﻉ~hlKޥTgL; U|EjC[0򇫤ã5%I7o>Xs3 bw/ni ÇlJ ޢ/xgu|~Hcgx-6vl8窶5.LՕ?⥁FNV,Av")*S/1t{3L[K>/Q$,JOD @k#:N]b4{E.OQ:Moh7 ɀ|GP[k0q@*C Q,WЛ:){j}H#42Cz +RKxHה)=<_/i ǵoj Y Pʐ;ơ$7=%xTTLS0t_~Ā~LxU7!0y t:s7#W 5, Z)i_7h-eF]z|0ݻ^~fFe"}Lc?Qߩ\ /@/ܢkZlյc/IGtRS_ȌqVGG]/]ٶ5 q;RL_T2NԎӬCkVi-Os1|!k)Mx$k|-j%󮩹Pm*jh9_uЅ}Qv@CϓxDDa%ڲt(YƎ֫S0Y㥉5t#0 Z^B5ҀYTK=,PVs1a Svc )șg_$zY(v:5Ȧ3rE8!P#bǻ}@4zI_k" z7'jGQiWM%KU ;==9kA@xV6|yT̕r_X6p25 g#J]MOw^Z!/b͡S+JZBb[;>A pl8?U/K1* *  ?@4 4 deflate_$ * CxUPSNOD87BK 4s  TREE, * xyϳZ Ly9߭`-^.wy$~s B2]P6HykV̔oy7ľHDok:>)>T>oBIjv멀2T$m?#:x:g %.L0~.̀[5wB>%RA|}u6I.jy>}q8\F;E¿<o.:PʨӖ?ʊoRaDY W5Bq(o V/&K7!xa/2ySgLCq,q4P/Nsl͚ kOШ h4I0䀔H:*3U) _R?PԑٶV)֨D+\ qXO:[sqƚXisa@^ tzYwò3Zj4d!t;Nʙ\f(<ߴ7v0)@&*E˦}[XB0Uv$g^ 2k,#lC)tZ+[O"텵,fpF) H5 ߰1&aCyyȉ'}ԏZ$nYs\.ggFvsBq?0/ \*rrIK!|y(ߣi4րR&}#zXx%ÿ2%]Wx揪zACFUT_߁?) YUH\.`yҞ+d%GJdv~=GQ=G'ڕaSol:(.Fڦ'(>zb-𭭙I-b@vf=+C<Zώ1F7lԎ?MeR=Y~LpG8>! ͟x?|YgMVYvY{&W#=UBXOw'iYD楧;iyX<;_3o՛][,jVPR"W3Pj?ǹ?ǼÇQjKRRŝ52tj5""E\hyeY/A\~g9/?X܎Ф޶8| I&5vS!P#r<~)މ'8Ͳu6]y^)5Կ.-ZZ?ExD<٩\^w=wvf6_tVoJGC<@9[O5NGU6j8nnأ^Q"~йT [uRB'|$گ[*bc׵i6=5k-{rXL Za{n ^ڨN JuՉ?L&ڸUcd4t%MGK"zG5D ፽Rѷh?qZ5: @,VU/guzǬOg'?Ȉų_T9+ã3KAg[ Q"~߇ODҗK,6+owX5hWw eT-J$N.gpN%xp=4]D|N>} 9u_m:rsm_S7-L|PCKNH? &m݌Q?>&0~a@ƙe9Y9֪y%ů})QߝĊWötς(;)M =T|{LY4ԿKz$I/0uR7Q"qK?  \T6/@ix@9^32b wӅ/"DG<ƉRK慆Ar1ȍf3ro'3Fbg#Vb{HgaN~"sb(r'(vF {JdKR,kqɡUR~K3`Q\_iVQ-CgAҺ:,{]倔H.cL {];g:׮>֚S8g[o:^atq?U&Pn~zUFz!`7e( >Bʧ7?n=6p):hNm9Z`l{̓n'44M\ [|g!x4 .lμoI"`Q+\ vz h>s'v–L FD(c.;IrQ?Ri RF7IL)1kCL 7KFXf=XVBw̓[_Yq_ Jm}rf^GXۖ7?V 2:!Zbt^hm|i< P}UfR&{HWʹ+鵎g#g (`ʺZ qE1la#wô.`1uz,u[$ ݯ*' __8n @H~=0zBp}v+r9Fu!r^%O%V ~|P$(3xwmqRX\y"?uYkF\a@ȿOh_$? ^CZ /UnClWh]|ioYb{qh(>Oƈ$Лɯm.s׌/&k!Klf[ n>՚""I룲5!r'|q}QeJp{Ψa~Nu[R0s4zv{!P*a@0D''<+ym[sE܏k*zֶuY *o@H^ױ J #7`RO| 7 [COR6oJz~ Jud^Jjl&;]fKfu] ~cV".S1w"DWK]m@W\8^Oi]l;{.Т_={ P$Qڏ.DY[m}7m o2V,Bu}eBAҌH1ɓ7.S7m,#yA2%>Ql˲ +`@>%oO1?~C( 3ֆ@ʓG&n0K?!3;p%V]]W2@:ϕOJ<|k;iOP0} (ix[:$ )ҒO2B#ykvU6O(47tg)YΎ-Ӿ ʾ6!>/\/)e<..>hY_쪯m2#t]?kKۆH f^z-nVӫZ^Zȳ*Po.N?2:팟Uy˘rMw~b;dHK}ng2wO dy -"\,Aɲpvb 7L>O!j<) =)h~2XmWHP7xv-SN҂$뉸#4m~Vmد|/SQ_-;O=_)nɮϿ#M'!?(1w<4˚'+$){eg7a;Oxaj@?~͒&[ŶZ?Fεkp9 9HIqJiV;g@NX> a Tt c0 9V4L6<w0@Y^+Jddpzr^jYZ4m8kPޓ?BN *[66Ml$7ٟ. ,ޟپi:y{]NkďxH{ɺ`H̬ A8UA;+tfUqpȳmT( +v3ϥ-+N[ԁbԏIXPJ3=%~10N6U+ww\c-(׭xSJ R>7m{*fg@/2neu 'B;u@ CH=>DfGb;)-_ş؆#Bs"98;P8/t;r1X#i=bx) ('ݏ2TlN9rM\V̇(m|W" zq7pg z>Aƿ:?D4iqyVDKLޗ Dopr`< D[(\"E5]G!݄x QUHoKy=XBx\qn,0#~y!~T)Soev)IrێLM5R }d OJh54\$H)\i`PºxJ.M@xX=ˏJ@,1@r&J*m̽\۬@]KCl\~ClD[//g3En0s)ӓ[G_gZ[ cNdU /9K!,mp=u̥@a= 2|iV GD?,Df1Y p* 6Nzt!7!0~>VjgNoOkM|ewbJ꒑@uA #IfU L}&U+cuFb6e-(!zX r]_19 e܀M'IO%u`aʍt]L|w=g;sf\ H[yi :Ά\x!)ܽ5+B z9O'7žy蘕|\ :z!- 1F(݈#\t[}@&jT8|o^yځ /LY|Ygz딹v0qb@籁ţU'px5á(Gԃ_~0;o@20>|c9aƾ#wYM~˄ `x>6].G.JCPΉ;@tӦItl;MAR{LUK~\ ? %^W~2wpڜt{=P}` ׊8 U!SF +JfsJqK(ʋ oaN ӻS'.'Ӂ򎭐.Z41"~|21uCiAZb?>}= }&yG7K8QjwvYKD ;C BX craÅ׿&V/:8馪:--g*":!ial 9Ѻ ]g2Gh.+|˝dj&{%?L&_݈bHzד$ KJ+)Tƃ]gWܲ'G}b 4WJݘg28E#+̢|'~3p_ r2>.:ƚRq^;kV$'/XP.x ͒i Bċr )w(ʙ(s8򱅢DLX~jȃ?$ņ_( V#ˍ~ϾF*J Wuv‚vK/"> KlaK2/ρ}Y9<$Qv5dSj K Vۥ2떀dߓ&JA2k@Q"êǸ ~sM~D>Xhݴ:(Nukp||g,K)_$tv2H*WP ɥd49:3;2q;*DavMWU[@8d^xil0=׼W\ 除̸`V]3s^b&^xUh6/* *  ?@4 4 deflateRL * CxUPTREET * xy%^,bQcu24f*U<K&]vP=aL@QsB,kiJZj|L_+&n7,ଦDIeu3!u¹AOs `ٱ|%>C|\|:'a C/>8ԤՑNFEJ?JYOpV;Oșlv-įBK|"/}q|}GmT{$}<@/ɪM`z&`5tp?7ʀ>&t ~,W)>Ur531K̎e5C(j5G{)"*dG/ ¼^C]G8 я瞑Aɠ-AVZ.ISlj fn0)⿎\zLsTuZۄB+J.T؇t8i=c[/v[bolEErzx x}t~4 |aDi"vh-wf뽘g{E`"4xeϲRX+ R3/V V UW^v6ǢzS@̾9|W&}uX_ǏRJgU,HҖgׁA߾K)R2X[kFl;~'pNz9PGgkW*Qg{V5H>@򸽛rY埲2%~}jn5g6AzܚGK{0ĸ3C@S.$_g!t 2ZO.֔{LT(_ޅ!jAYݺ= $v.< 9J >Y]k\]{+J`Wg[0,Ɔ״ݖ]$~ "Ѽ+:ϙ+> ń:1Qܥ"6a曆03`4`*M@q䩤NFI'k"p eNP@X:de&IN~MUj8Uy8l/.Q"u: 1qⶍ]!VXQ˔uLYw;u+\lEb ⁧v1C,LS9Z^76:l7nTtY?oVԴ-M/{cM KdIQB#^q>[N{kA7&g&:v 7{{Ӆh\QހϮi]r%j\nᆈ. Dؑ7~sDu~Ҙ\dEfXJ$KYIВ{j{*]'Jܚ'z9A:r@)<|2 2E=L &6SEmQGq=\,h'DQ8~zT 1v'_ &˻.`+ɡΣ6bPz0]~fM_Nw}F{0ߜ%/Vc 㴕pԥtX- W.G&yɧ:(e_PYWR :ڗڦKK4*MJpw*־A(㩖f|b E/ V(<#r7B]Vfawv3<]wZ exv4S+N3^gf^U%Yy5Ez(G[o@BPbL]nU|3@{00A8'=1h(#/v/ɵD/ƱF'wFhe͎Z:3gMW4cfa[v# QN-W8շ4 |} $5|g!UqFM?$p A\ROB$;![ i_FŠЕ<eTSeba{eT5PXc: 6>Z],xo(YR }ѿ#yC/ryfbr,*|G5-ԥ׎9_xuZK=]f:CfÛg)D` ol^b^+H~jCYv;kG=QOnQNHp V~1Mlb0 |l4UgtY*[eh k\: )G w;Jm1!Yir/;am>$9=J@5QB$i1OFUPJ>7%CИ…4+KvPE!hǚNC?v ׮|df_esO`8κLo hżl#zy.ϣ WoqҁIyy`jxHғD#nф CY?)ZT+t T+2sRtvE 6.ΤdܟJmHs\`^Þe{adPm `yi^VTi3-`ZmeԄ/Ǣ~ϻ֞Bӫk҄x!5xčhƲ5ᘔv(׼ylRv;%> cKMpH(i?A},J)1ᚻ:?f:snב? ѯpZz*~pm0zYD Oum6}G}yܱ-Q|c %RTgv%4I܊jWCyjZ3e ua q|6"c7=W2bLKo};y$8?s(!~~A&-OQ1]U`J B$=m_G2/Qys[)U"彇^q-&}j͑Svq)?4/#ଢqf,z O܎8"[ejO눞Bk}< [2U:>Jjĭz"whɪSCwwT7n= F @,߻+;v>L5(܉r^,n98v{`C4`R~ )(ީ*eHs5 ;sH<5n1"v=eA 3[wG4_IؽoI*P$I|8y~\v1"o ?0 hroPYdԕ<(֓uX YZd||O]هXέqiyy?rVE)/-l?rVxfkCWj韩AI:A@&&DP| Wkm|5b) E8Ϋ䨳7Úik+5qKNB^;9{`X#sn>H\cS? @B"O a6nRt@ uטݲ,%c\Ux@j~ݗ:tԳ)K'٠62bY^h~ @FoswEhݵLI8hVLDK9SYgvL0MoPםtld,)MG-E2:;R7q qd5&v|R5q|]3"/ehcz;})Gs(.ؓȺ,8w7$[ՙ@։Hwc5v[{Ŗ#a(2dyYu˜ &A%3-tc\uWֽKD :nPո /қvH` %YǛOuFי\Ԏdd>>z.<9E:N >bi,LY_ߖ#U޳(l8@52M"嶍SҿZɅ8_1r-U&ZRsLyu9:*VRw/!JaǭbU*Q0iL[Ӛ?܈ޖm3[7Xd?iƽ񀰴@{,_2@w+WL~pu6ೈ5l p\Bl} ϳWjb-eFF`UP9OӘh'f̭,[)r[y5ΞںBbqN0Jy~[ɓz+mMc}4~nĎOdIs WGo'"G!+}r<`MWIש=W4O-X^E׾m94daXM"]atz ~ KXlf[g]}Q+ltӣ1H&"W8HXpe(.2?0ߟdz[['+~HvoXVS\,-fyO_ȸv~~kaYEw>?Jհ:*'wP.0>ng٢6MSY椛rBEe~g<91h _2:C0{YNd at%zˏܕ5%FIR5z$VQ/F܇Jyih-hk;|l:B|ag(ep r2 ˳4jDlraiTs@L?:3/?˘q|)|u F=Ĺo=zEm|Ϻg}Gw*zVPz783؆+U<Ɯ^.lN.2;|te0ux8hPQ=fmrbQ ,jVgիx\*-!{ w<.pLd\z<' ZYmjp/0w.ga2ڞ*]yV$n '!* *  ?@4 4 deflateDt * CxUPTREExt| * x 8U]  2 snYɜyd2$C "J4ѤE*J2|<~}r]ku{k}^# L}֡`ρm ކyt<);$y:O{\;ǜ}# V+Ӣ9egkJ쑾M(vB%V$o^$3*+2T~&_g~Ywydmy^7{MwPߔۄCG*d?4vEo-OGֿB?̤׼ `we9EP?ƛ2W(/x&%!a}67gZAD<[b_ Jp9ws؄Aqeom_s#Yn_Ҿ_XE/5ÇD+́؋8rKC2qz㾬vTy o{)ěr"[<%+H;<%קdQ||}(j<Œ":ȯK%9Oc2-lLZ/VSv(I]Q4#x4,|;J8c7&zGDCͻ,|g#Q"C 3dyfxsumIuYlXU55psݢ~*Rwf/s|#kվs,b_: cXL%\kzEPI?'Y?`/t!#,!wyy y.¼}?g27xC-8[$nbo@BsML q<3>c_>%U=!(l1P 6_OOmGŐq%\sq),V[R{htwrL}y.p-Ij=:=|\p% ]I'*ΰJdsWHFqEw~rY9-G&h9@>-p5>JՁ/I7OnܪktvU)(rE ͬ/HT?ۡ v.o>T۽fz_Ci|Q}`;EhDVhZUI1."L<8ϙ]{s}r5l?|Z\vxˬZ/w$wۗbe/ڞRonCط]HN6[tg2nFIqO rۗiD9y9칦?&uQ'YT@'5$o\~\.DNeEȣ;`˫쌦ʁ>Jj{jqQ,|nN|?2Ƈ@;A-#Xž"ܣqh78s-`uCCzA(*+قU]^ݲoUa`pl _/t; RDvWk+T~n_4pAt=c!ХkFH(O_-Jh2FiƕPTlFXĶMՊ@OL4Ax,;ܛ[4K:>ۣLE+!/@apF#ʳALFkvZ0 g3~^b )쯐<'?zIn"mVHi)U')Fܩ׆Rju}0p@*IF PFONy!~wF&"(jҟޢ;g6RpU;CL8yhSWS`hBx|iǏ{̰tSZt:q~:H6+^wb;!oZp{J4ݖ>j@XlE 1Ly.u:$F6JڕzeʳQPG0 tbg  {XNnwxPj* c-Q?KZb`qt5y8XևQ{+iz P{f/Ir%d -%ķ;ټv*k5T]ᚅq#ha8c%fpw#=h{"ndLWD@W|)4~In3Lcu;;Ɠt=aЂ46{KX̠}q2Sڹ,Bls#]G!Aցf2~L$ěJrWd74)j)7'es\jPi(c"{6k=' )mvbuXji{s'tHǏ&d"W^!1w˼% (nJpJ6ր%o\c2xfPR3[63eS~GȒbF}5i~dhD d({U>;j?HGƁ8C$XF1/tn?@qG*+K!6?k3FCaQXprV'йm' Dy&4w?gnjA\AYz)f]8޷o HeWW%Z@P*G==͙?q|{dw9' Y:T)7 .Nq/FS μM0|vyJVRAp{8؃b˿,_ k]gDɤtO,hWxM H~,`˩YjA?sT^xQx@Z}tg~/6XSf߭=eo\ۗ҄'9[ DF=t8noL%CT'U$^yXלe[nDyd7> .J!tg u.e?&vv<\iÜ,VwЌ)kdBp폘N&JsxWP65h֋?VX/nn;L < i _4kuX\ɽ6:_H&eD/H<C|f)Qցf ~!G$6OϏ璔ώ/Jw+<2aF<eɗ 븢ܚ{rsXT}/I=Se6*xb} ʩ0HméJB\* >H<ܴnMR"LY9"v|/ٞ;}$z[`Z"Е>ߕ\=;au*;p >_0?&ɿ7dc>q~Z΢JW, 9AIY8E7 &xg0~JGKwcu扛G:5baڕޚIyAuNQǿ {}nƿ6*™@moi^QUE5ƏAgx[%qŗc!XBbO{M>flʍ_Ye(0XX-z 2h:;e&ځN i]3:Hm2eR^{X;8<]*-̕t߃re\qrSo>>2SgM؛4ԩ@aa'. Q[hJI/15)?c39=RcϠXZx jX >s$L|KmeAwͨlv>>~1 5 9S'T\6n9)%Va3JK8{(`3sKq]d9{Lr(qbfM~Ә}E?,Sm9H# ހ'[厊T1z 'k_gB]!JOw-`7<)VǶ)'Ⓘ?IDCPJ-4Ԧ&:Mg&G4,rW4XZe;T!ٜ휫0HIq2>xПfޖ0.~ ]K.vF9^^j>bσLvYGUbM56u?Oh^0mPv~Mu}UFȟlKi\"O(iv~1=Nφ=RƀU%RKo[ ^ve+Un6ow<_/JE 9._է)x! ՙsẔ0"Sn g ddɟCDMsP!n6\ ڭHY&X\),n^G)|~& XhzOm``l'Q\$nJ;:M#^r'N?!\&X#Eovdɞ~H\E9ʙZIEQB)\N\g{qB(>G.~X2W89~gC)39.Ĕޅ[!2ŕ^: 7oK۠R|[>I',E_q+g:hB6}H7,X7f#b?'~uzx!ؔGx: nj@iԟt󖃚ey/YKR\9w&JM1V0h-6Fv|+Y~-XkWĢ|Fw?$˛fŘ6P&;IbT~ns+{g~I@+%/i@Hw7 _kt>!N8)f3|β /Μ.Oϵ~3t0SCCAHGvi_%%ӇdɈ$|"D 0z_<:s Y7/f?+VӿW-s@8JÒS+T*!Q~6(v ^JZ{ >}z\3$ d-\?(]r!gL_Y{t8D#~:ZT _jrW$^„ Iwvg2S#ˢÃagNL6r/OڇrEꄌ~w,%vZ >uB@j43D;<O75QFSZb4@|Ά\YDž/l !DMLѐ#2IiH3*<޴]( ˓W*D`ؽ4e+JoK #@HT /N82VW!SLo7RnEIHZ`P'rJu_pC@E:%jUj'9#RɖxZcV X"vQml'f`>:%>c&_y<~1MXӁ;ޡa5_w;>2T<61 d>R"pO* e_ObfN?&'.lM^W8 QRUv^ ]0OF6(:ľ_ulk0QP"WX4 Qqr*l*Xc;pҕrcBߣE UcZǵb?c7ڝ[w0G7Ϧ^2}٧u_J=d%.cЦQvQpy #b}||TN;W \0Jҭ2x&F ƀ,+J>&D[2 'U {F5\׵; Ԡ .QG qv1 bm5lo{?=&=_uVhhf|>$T1_'L·ϞyR؈kτ|"P~J =6K@aWc7_^so$'5>ga( ?/R"JA#MFw49"v=o+ZaOݎ:@[Q~:Nr",N +1AW&, m6k\Qf[P2Vғo20B3ts"e4Ⱦ ݋(kE =*e+ߤϢ%m۸m<¹ e߯[* *  ?@4 4 deflate * DxUPTREE-, * xy\MS4ɐ"FiuѬYͥSTKH/ٷ;j,#ߒEz:rHC>0SJ4ޕʄ{W0]<|S ~`K{(i'~;*9g=ik;l] 3x<㋲uE"Jŷ5 ,f )юJOw7 -f,:Yݲ |xkJth*G6`Ya8 gYVsX8}xuu=k?YOFxF[JTgH犎 %x+髊W,wEu$MIgZӇ!FRF{mڢ4Vla݃ndc)(lF.hh.#ֽo`֔zDi~.8,#:-}4uR-(g, :M~%fEB5wLH:lBPc.H~}\ӷߝC/s!u~g;fWxyڷKA9-L*<.6vDf? 맠{[>J}[ˀ J\*v=3gZD<~zAlU;X[VkG3K~.H6dNzԲ}3”g[QL> ݗ|Q(ڨQ;`2Ĥ&_eՏ8|fWGlI¦jEh>͒|"1:bwPt ts6N aK25&K]6Y$ڏ4p OT^[[:DǜlT]HʡI;iI :!z(cy`C\Y09#޵|M`5Xvp-%gQaeH,C|? U˂λaqi?ЅOVY4ov$&oi›YJvB>~b?\y-f_kq/Kd+5CQG>}>mHOyGǦB'pA(AE+7x7IkWfF{qLE,l]ϔ"ALě0?=nn\B_H%3yXeY5o9o75Li(uFݷ@ʻ}(egd4T'GV=&E&@6ndu@oO (z35*(P"坖Ha 0> GB3^yPw]Gkg&f0(,$PD/;@rm+Z.UKLL_ϙ7QQ;&dgyu  D7JxAvV{Э4XJP9zM94)K |(3O~haSI o5 a[Ba( _eծފֽ?ӊE?1?= cva(( la'K!ia;瓮ީ [,?LPx,Rʺݳ0|NƋ .#KYN&Hz# 3';u*ENc/OAK8["m'U/S`ZD9{dk`[ n[y1D>u%j0]qr͏ex2v#@Wz(n|`R= k[J/:Hȑ[vTp눌HX病?.ԤK⾬݂Ӫy6s\={!ϥ?J,"q˶sj? ŽyH2H+Wd?3 I`:5N ͟P &[G]CO58޿%UsO(Z.HG֩ W [N'J uՔxLfLϧD|ܞ=aEeɯOԧ8e+\}a_H~/]_mŐ Tov%L7pڌ؏o>(WL -S'>fyg~K"*PڜvOP?AqDVu H$pk${m3Q! &N? BG.1mv8+kQ;l^Kd4y?B$އSO\ 3|ߍ|q!V+%}UG״ހZ~8y?YJrT{h :}zI9t>.ͪ,jK|$j뙇}xՇ!a盿' M޵j_/S.ҮᠭX.PܸE&!US|牌Iebs^q摷7+)r'rQ;l {[6 h].lS̼!NŊְ5_Sߛ:8{LWE Getg~;Vi[bt4qƁ a7wk4{Y Nvuf{"| F CvN )]}(JŬu3$K6zm/~"(%U)%[,^Z"!ExN4Ѫ\Vhㄙy!^GV0y} 0%_hv FT|] P:  C}ҀRx=n%J\̻9"vvE/3x~} @~,@BrG^:Jh'H_#cWEr"̌g(Vh:e(0gCG'$es?w*A+ωh<w02ܢ x,LBVEOޱqb-0컾vw(C6+o|BCr}( k!,6Y W7 ' B3H\|%Ч( t'^(3gsJ[- X%t)2مOId4uf B ;m|P@QR}@O|%"p7="$,T#ֵ0>Odz_6PU{N;ޜ3nfqbה-έ7ƀI(zϺhz 3h'us$Px|p.)ٯ3'5\7 E(;%B`Hu^T? 2>qO9O t3)%~J#*dB(|''MA]'-D)C}!h5oGā}w8pVnYfGI~/;9|gR~Lqv~UvA^Dxve0J,[KWsiޣw_`enZXbo(R.ŗsᙖ䊗4`ʒ+iPy)Qq9[,Fz)NI[7,f~#,es>^twG 1.hv;KUu\*+D4.c}"ͪ2cA'۱lix"irG\iHB/0|CdE״H9HAUv'Pp;dğmdx]~ﮘu\ 4-LG ]aw0I{?W]}bX{ft_޴H󝕽B%n4h?+D-ԇǁ}"<`e*tW8LNtt=0Rƛ')6 wvG{d;K^VE}t8UPԟ!aɠT(˴N\7u3C%>c#%woK wa'V_|ͦ?rP y9WtOJlKY~р3V}9;[dQg~ȕp+q=ewXr`g!(/ }A|:: 3gB$вN=A7d^h4"7 K]Kפ^ s[;۬ˆ@3&&̥(Ws#ol,I ob($weO'(vk~HP&ᯮQnۛ°t59ߣzjJnV1JM?%aͥr 'p7v.̾] Vd&C2KF˾Ưt|^:SIeؾԜ=Ʃڭ h5KVFWx~gk%hyR_F:9E$=v8 槿]yɔOo[W`~ǤԮ,ێEľG{e5(߿40TeŵE $y~IOr׫ VG*6֬Â5Fl9i[4*ڡDϋկf7IcU"07H]: sWrj>YnPΖ(& =IEQlHj6>PZq).1hT;y6ɐ9}ƹx?CD63vjU5`[!R-H3B0L.>vQRxqړBQ:}#B1nu3QqG; ynQx{P8p! 12av~{d(nY?Ed(uZS7SCs+XY"?;]mkÙ~~h=Y\i4GZ]l.py;O#;a@OL|he ) Gx,=v4d36ΌeҀ(ŋȂJ%`p)Cf<,X) #ދz6z2kuqTJ4@ex!KXꂒy/bJm~oƹϗm&ph*(i,,8v !Pgr$oL_c*o}Cq=NK9̽.5h`q!Xq+}("\d^Ksۜ!ޟɜh*k@ȷ21Y}eNc g#)Eo-Zm>HDO$BrU6[N-RAD++ 4C$r^3RenqՒupvWƜhm'<385JuqαEIg\{&.wX9RLm})Jnd (qLx{"pzs:bGиNF;* *  ?@4 4 deflatei * DxUPTREE. * xw<ǑJZR2yYH"dDTV>V(2Ce4T?ߜ>_t>~^<uǹk݇ v,:~3?Ϡ~֮HtA&I-zYm6)lyM_myMY%T>5*( S1=Q7:dDq"OxhK"e]?%ҏ!S d-I7ntLExwiݗKq3=ى!+fO|Gbf? 9b*904ѱ] 欗`)-jF0jOb= IO.oUd&_fS>%ĄMEӛԾO)aq',eAGĸTdw2 q 䀐H܁Ds6o.Й7} ޘ7i dDSVw \Ғڞ{?DIn]:ZrUYR'ON' |Va|h#&֠\6q9fަ7];tv+"R{JH¼*YñTOa_s9"vN󒜳[Qb"jl U1;ݕ`ILzս{(3tQ@/M-ߡ'؏\Ƨx H6|.e]CH%mbIF@8k H,#g񥦕X5[ck2'GBɸLQ]KayVD_ȟ@19_D_x@a>g\%x58攐)wJvWw҃($l_Xbv8ZKÙqjc0:؛,k{w ٧%1;dw{`Y&iqpWD3+^xiv|/IZ?! #-󱝵myH[~N.c#0Dʵ t|uqYa:ח"!Y/ԁo镗ZYuc~D#hՀ&(ڍ Yf|~x6 է:F9 'KWD#Mү-҇@bzK xBGƀMyWww޹n+pR4$Ȃ O9Bʞ=T~8 lp '=Q"5 .dlFAb pt-Zq,HVGH/nTW2)؋A}ZcqNluP2眔%I7]on{ {j*#@KJVhjxv.wlkჍm^`RG] lH=DW;,CA"?Rix&{ D_{p=y0vuΠ\RRcե,Yx4p%ָ-:R`qvO<~tێ5IT"p:^fgfU~q-P[1'b Z\/6{8Z+ʏvBg"4lWnj܍#+#wxN+ Ā*_GJguV=9*4  `- gB X:5ኈzȟgu>YʵQB0W{p]^8~ *{+3f$rV(nZ n#5:fҐ¢g돒0k><Ǡ\)Jޏm !%]tO)&+L*pط;%9L\d$!owݦDz`@8(`dmI3#d[(Ͽlt95D4l[@/ZqE6(>,:aeAyǙ~g^=vR-2*}nAoN!ەjl,`$dø#|tݡ C樧G=)ÑZ ~Z_ LsZeL?D:\o;~+bd jDtd26LxN0yp}v wK%$07jȄ˺,+?zqPD}Rz.M orգm9ZXaNNVR9F*Y>ػiCT~ uMԵ%yAt7VCW P}6 sz2O" ,wknk )cbpbg_UIE>eNTOSW $RӲ8?Y tB/eP̍Gr6ݷ$gSHkoS;xv`ݽ-hE=7bF"{!Hq 7 wqソJ-^Sy˛NjY $,/Yn&[.IvatkX |D>D>-U"9X,DԮo>ӱ>ߧ)ғ́P [nݧ.o.D>QxïrAαY8Dmr_:tAe./A;qI=Kvpۦ -j<My7ܱHo,s9/N?%FY):ul<㈩ JMPhN͠MtcL$$=\k_ ; ;ب@=~uT mΗLDxN8p$RD497꧝K ynE%A)c[a֪3&$ FۡW{C ]9uݵضEh>Yv ~Gۄ0#;JMh:&ou҂tI!a nMmJ&ߜH!%~|!ebϳҫIz mP:c`QR,I W hw QCQk.JBiwcȖ8H{ِ֧u~ wects7v*hчRvdx`Y{KM06l6gY3U:]byo#M pHw4WM8rg;)./u1 7gC<8x14vs7V)YŻUN㭸t㋕Ɛ՘> 1I)nI(t.p#jza46h}PtD.3[BN^%[7nb"++ݽh #(5CkCfuް<&T7J""ORD]:$p\;nę).Yb_NDS pUƯ_M6tG+p޻A _q0I7Ν^]uxxoc u,? 6X͡AEഄ@nהrM@hg?=CzZ7s^}!*UOt`WP^`ܙ4U3xۊ4i ->x)6O7d%j`eoӤp<:~H[CꚐ"|iL~ǯ!|.TiEͱLg{8,;9L^i=,~Az^'~+'<8mE}A-`NRJӃa>"˘G`::Q8x6U7oP!ɊZLIxpzH8XL><-gYڥ\*Q5r@CWt1օ23rFtBYΠiBI^c /0[HhCm/gsQ2k$UaK(t^!|婓Aa6}8=S FlvKj|1wq,/~}㼲d|Aip:̚?^S ݿV.`ؕdȚjd_T [5=/׮=;XrBhM/xį6F57Yv{d;/3!ϵbFp}F$88jZų%c:iNCJ.)1/Su`036۱_B5)wE`*&T8H*iE4tњ}p])~i Ihӟ/ *{s!%n6>hbm^CdYVU].8;[>H, v7/>0cJ:yʃOS ݝ"@H?/+G\P" >JgW@( #nxk6{M)\%`6 h/AW`}I I\67-}()QF0( 5\W{?}(7dwC܁G&Dq"IX}dDRj 85x+>יk׀{;(y9aJs":Sqg8~ܖu`x߱eh튶Wܿ}=.i;- qjqrV_,ʍߋd(Ìx~=9s~2COk*kdUCz {0ơO=UZu v3:obWP7f;@̂='0@?&`4@jQq W[8jϕ;O QN ~سrCt6򗥪OP~BxoYvX ˴DAdhvݜdkr roguI4iD!rFMuw~~E4J!P`lYmHeI I='q J9>ڧL #˖ 魢Ga? 9eѯUW*gv(~@%Ϙl}QTDCsvCܧ.s+a!?" Dm}H~;V𛛺1tT]xxIZ͔IE<~,¢dgjMQv'?ݸxBC=a$`5BZ\.%CBo#WC[0\ugb}8dJc=x/uI |}I.^(e◲'uPFnc[LgEĄ'.T"2_5ۈ(u$ @=,}8o4Ծk}DJ+!N'Mq ,jUT <ΝZ,TDנ.Ѻ)sxdɮa[8_:_o{l׮qkYTn`棚gW 3zk¯5@"tM]B{qď/N(U&k!]]dqn^~@Xy]J;RKyKQ?lkeL !݄1KXx>!GCLw=ٵFWir2rJzKhFH{v GfS# ͯ؝ @X۟,Z @kyxMs988oO;>:`L6Z|+Tؓ9sٴ9J/>ߟsԅ[oJkǍgjL{VKa0#sp.1(8Af8Z)% q n}р_dzA32$t΁nj` E&L~@8_DI'][g]8B{o0ECkޭE}YԮPgQEԇ1KzoC堜ɼ$ծ[VrPpLGI":ְ,X_ۈ-Q,9,EސoѶ0lIQ+׀gۮ6Ci+0׊m<'z0~`ؘ{p`f"|4f6h_?YM 0@4`߇Uv&zBkλEsmR؂PD5 Euc&%/M{/dl |p>BF\w'(kTRDIhGK\7 ߯f?6N1z)]ŒA£O2ڒ>_ $RN݁//];hؓwdxܥ-|_e:7\ Im:kVgAFi4! _|E)OJ ^QXvhٸ&~|^o)a2@H;U0ΞF\2(8'!iڛ#YiM_o˟_, l)=r9Ke* Db~^u"c_Lğ"wS~U+5w-qߝ[%)q/~;n58( q"$%op!뫭z\E 5z|]6rpMMq -5ƇnK1ݡOcBR4t?e2 Pf*U):J7bV;<8 u,<9Y/VIw}wkn]+Dv[S[Qjž83HO.SfF 0hkJ40߰)kGcPM5]n4ńBs&=/޵$Gr/?M6* *  ?@4 4 deflate * DxUPSNODY   : TREE_O * x 5 Ά(Jfץ7$S!yYg5=7 6 t/Uql3ʴ $OdI94%=_+ f;`x?}~Ii ح=*Yvtσs>XP,V'tΞ>(fQ> Ӡ1<w,>LWdKR-^2=p%-iNIj\R8g*$=Ueb(!Y)M\-31v+gm' a6NYos;+ĺBBʴ;e8K')cRDZJ{c(irU)'G*r @'Vdk{/Spyl^V;+l黧Q[? a^NnI@Xs%^(`+B2TX4p|4$ᴯ_g(bFfZ*ZBÃp:(-~XVm@5Gd3Z6pq9!vdG*]_YF[1wզK ~]10Z#CkƠHG'\enqcUj _OvZZv:|gn<+t +En;UnF5s_CqqU%}6l)nhWӞic}l^dmFJAsh5[8o@3>_iןk~'3$v\Vkl[XnTIiŝ/tpMmkqc-D%] %7[\pXj̃%-gu5 /B) PTsxJ|uޟP)Un!gQ(wp5ڽ_B)r.s.L˰v-rD!j^*la :B4Gi.3?EurJj;\YoX~օtEBoG~2Ea >"/"9mKa. [ZǙ^ol_Rsh0_}.?.A3:.[k%Royx w4 /Cg[`)*k ~׭BmQ"_?X{S64?YۡR~/iirvPRƱBN?YofbW2`eO PNidܭ?kiΒK:ڀ%S)k6oƍƯ/NW#iYQY}6\b qnEXq ǁ}B8T稓&՜ ?qؼ)B<E}D(FB g'`A`Som4Bi4Y0QPn>`0 x뗮eőҫU-1ˌ)ڭrP>nbY[B7D4_N]XvXKCH^KNLk=@qI˶@)0?!Q `@8pS6,rJk3 =:/<9F& dB]]j"Eprp4HYHmjZ@QAu>)I9t6Z/e׫ 30w q ~t~}o" Dί+4{x\mC a/siʼ6ƕP4C9uQ(<ˈ.8 ֣D.3k-SJ/$[d\-7xzܯ:Ey'==5 wTj+rGI˾ہ+!m\t~Z,*4~WX wCvCl.+rV"'.` 9$b L|or%fͫ5+9Q{鄔zurJ@=ɢ LrN ??(̟燖p-4 3~w$)Bf7Z;B{^ISktggzZ #DN%2N [=7OS)^d+UZ90J\~c1J%v7h  w.| Ĥ;[|,(.&;Y[g/:AT}!-<,6\{5%a }Qo";瑍Di,kuU]sRPTnIoX"4H!ڷ3??uDYxP"UwyN#\"cS\NuE+j:-6 Js؝ 8ҺǕ@n\~YthIҿ+S7{?Bly/OJ>aorEfVkGE9_ZdJ}Q]#VG Z̮@AOTjc=/C(pϕmz_LRK_圜KM. 0 GfRͤvZ꤄!woC .{2+*g~LNja_͋'&6'0_`&ZSh*`@bm€QU!>;ђWR/iR !T餵^"3s\ڨ SBsBP.`9dU0j M]bd[z/a}ҫe6b! Wˉܦ J6mQWM)AOO!M;=X96RߡэJ۠Y9&i[=8E.q*k~i0BHPN :?.ˆCd++ R/-xtkg 5ωXX*S+Աfq+c.SS@(2_9e~=?Z)?OZ*5Y4eh]l  3SUè(Ykl'YEQͱR;@h~Ee{'P;ԋV9z0Wv5_4ѳs"rBMoA8ߚ0M=z7-h㏇I30uޡ(rV؝/zcvEk0@_3o59Hkz|K"[L;a&G6rLjvxcM&}E\˙2Y@uΘġ*t=>ZETÜh|%9lzY( ö{$ F&)8\fOG%U#c`$U<9I(W\)ΫDHN+ax~WWi PFd9ua7͟urJ{'VOwz]hL5%Eб=@ŝ*xF>x7Mŕ~Cl]ޙHgzWE(L+-ݷ ~'2ߍ)lEUPgi *+(CAaq!P6`k춋 y61~+.󣲱Ĥ:f/e$py^H~JHN2 f#bc35JC#AjUs3'i}»/CqKj@T=(0Ȳfk (?ߔ.= vl&'uH>B+jy`eL#z 8ԣBOݼg7weL20|:eH͸0>]1϶/[` o |);n}е;bH"ʃ ꎉ1WU9!rhxz BfeWam^'f)0M;0.X%ЂY>[ aŤ.;ROīk@T%[n(0{C9 ?57ӊdT2e^>ݠ(o=F: Wl>(IGD3,`dd|OuH9/ P2el1Lܷm"Ụ^_K]bǥ+ҁĵdH049 z -J.%}u,=\6\E6R||o\qω)+|,Bwy[cJɷ^=HǞkM\} BșԷt'A5@XX !6k,hZt: `=0mmn޶`d[yYgN灒OĒo VRLQNBvFoB6eQAgq,U|=|b]{|ǟ}k=%ԑݭهGڏԀMzdЇ<ާǀ:\V n:焲,=}*<w 兖ռn-ګ4Ky`M5z>wi6= JOH\У V>&x*_\L\I;gJED3k`ͥ!W3Ā^Qj& [ +B o٣RyI?9$11kk5wMBa(~(wo'lx2'RdO]/Y Bv 'ɠϡ Đ:\mGx$;*[ ,A?JMfH6]_ߡY)o @N5zPfZ,J/v'O߷utHϨ ?g'}ۄ޽f09GmXbgjOGƔO4|+@|<=~p%)Qmo_>]z-a[6A' )U.ܺ8i{Ҳo00mNݿvv^QSVAYqk#puN7Gƍ 7߼ X^~>fcnFmdc_GW@(Ө%bgi0j3<;OM2gקnK(6JݽPJ8P߷~Yrv%*eOoN%@Bg*7LgAE- -K7!D`7.̀{GTW!oPb/<s,D8d1٩W'Co"Ev8^|eR8IOC&]Uf$4HQ˺ݓg4d $@S<|oؓ+_s@.JIkrqCž(PNhJ12_5,'_ýf%vbCBaf(C)ddy l(Jخq5Fte)%}F?JaU=͗ؗfnyGO_*P_6ɠf/ Js,r3BDWƜ/ omajul(m\&tЙoTYڀo2Iy GϕeoAM)^(ǏrY"ӭM(v]n0hq*(:%9YDJYMZzxYŹfϯSM[X"ZmHps'j.cϜIܸRϱ|LȖDZCќ@{ [&ى7࿍@!m80'?O\sM@lr J.^Wb_Cv9 ܍Rf;֥%1. '`6RSZZL}xEu21;`pڷX\ ~0P L@Y2d6Gr$9ZߕMAaz_ڣp~i~M+*#y|1'A,gPG ~#(ȳ "ծɝ1WYskιg{}.OiͼV)I_ϗüs^>sZ^-(oʏ~M@ W]]4"EPbN)Tbu[SǓQ$ewG)Q#?L_w` I DK0a+]b}$4^k-?G?\MU:s?3M-]f <;U~yb5ı<=oa0c-W{_|L# Xγpo%d{Ҭl~A-?}#l5YUz9e}a-&S'`zWx[o?LYr$gmb]YNz lyo U.wحP6e%qPnlTbNGr=ZRywS Oa&IzN[̣Y@H%HkFJ1][rOh43yb`?e)\ck,sLu8댍K1DKAS4IM*$k:x= /Q+Coë:CBEQieŞ~Yne"}̒FЧ1 -]!ۘ 0H؟fSD|keACԢJEC02ޒ,}ɾ8v%䲋kB%[*%} X8{mt6ȷ Q~>a}K܌P"~>Ta9d,Θ2)'_ͯU.Fpe\>2v%7l_M_` ^nU`xCYKΪ\ 0iWީ cbL@"ǫr\ؖ(#|\;yXߴJP^q[Żkg!IMvQՁSޙOga_+ 5Nȿ͖~ߗTLf(WʯUO|X[B~țukd4d@'[0Qd2 C}@Z^Ch}g/ A/!A@+b<7D7[X"ke&jrZ ]s3]NJ$I1ph@8c'$ir%@KV6Ja*Erze03.4SדL{-.Jm0SSKBD#K_jͰ!Ʈ7mB©(W@)"#] 6@!Gcwck1'  '+l[0\ Jv埛gNFž`TXLJ$bZPI!{ɒW$4%]Ǚ!uO҇Mr,LjAcH1~@d`0Td۞0KnxSɗBx/{MP ,9qմ,.e0jJl2xV$dw ǒX@2M~v$jwGڷ b%՞D ]mj$=Xh6j}gEN{U oʝ}T-sSw[Hm 7Q'Ɗ%R:%vxX^\> Ot_ii%o0KE(l ji4d C9g1K67%t;Fg\Eu[pma1m%?dXT伽[ ]|"YP|tѦ0񴣼8y?GeI@ߍbO/GyA(9k _ybܺ|b A식_bg[܉L| f ::yLKpO^,y ͉31g·ۣ\Z ·&CJSlk=Z] Uf&h!I{Nyo_[ũyԏOU]WT8NͧL~#D,c6s,|՘;@'fC93Om{T#xkyAl;6Ua9k{"pDQ|\ n\I&=Ma DZ;=ߏT~|gDh!^bɏ+cOiӬ$Noeo@{WxK?pC$Pݽ wH#k3mV|(経FNS=<]}wo<|9l 3_˟ L]s!R{*~,ol|SҔ74kC % X?_݂2i < jI,wy7Á>T>р/~Jkz*ߛ<¿';ZpS)B#R+ŤHxhqj؝I}o`y8zYEi4.tMϿ#"\y}}~9mW){L(xS=x'ҰoCT96?z/W'P̴p K ǕqVD` w+y?)&_8v!nE[3\/6=&}?슾 @׿_!a><*!ݞp4㴈28,2`5 aͲBľY1|$^:;!R.uԌ뻲yآrBLELܥSۑ;b;uT>7\OO@i+RXI,jxi ɀN|# y\R.z#UfgE&vߧeS֎C9|S^,VD[nm4zS%e 8?&㋕^y~|PX@Py{ $6E%R[I]@(VϧNǴטQdߝCtTe;=y0F@;DpnIA@Cl.'.. 3?# -EIApQ%i`I{ꫢ^0I&*{P~wlϕ+EwYp JU4r@EB$ f@ fOu ty5HH]ɪyնvЧ8) ߕO;=e{odפ:aEoIH?E.!v w{AeTNc@&jf3H5=4]@ؤCp,!W7@a*K ~oW>uǴd;s~p8Rݮd *W_ќ"k]ɫ@voC2xp۵eR0PP8LDA>uy3O1`=p7\.x[J9'o ﯋I8Dif橞 i_pQܦƒd=k5Ti* JGÄydx 9w|KʳTF'!>eRY8⢣TtkmZu1>Y3MޒT&y 6* Fe^?blE 9@lp+DN7`ч"y, ~Z~ DYEO1 I}-r(nBڍ ( f [sd !ĽLQg_5܎^.~|'ib;ܫd9z>Pcg319rE|m4FcH @Y_B S15oTNc3|ϭD(-/l$Tr/@zHrt{:~>-{ ĭ'|J/i%B-%36K %WА?x3m#J:@04Pg3Goc=E\vԄn,ÙOE@ؿ`IC֦Siڇ@i5q$D^oL~(53^ar [8*:GQVSPn]%q)$zsG 5m=tz#>*76yk#O╓K>>7L7 6iwej8߇q,Ř xV'z_qnH9(`I1:yy%q[I蘄~,uLk?gvwv-(Zv'e kNA 9I#|:C^3Y˼bW ɪg{)~l:A?.Op5a .0F\8 _BɒtwAnjr*ٝ63$#5卣4!8>.bp.)߃#RAA5CPMiJQoг˶[lA'8/OgԱ@*Cf-dm0p#!wk6(e4s~2C00Av"H ve(@g1?0S@?3sSq@sPp`s):a W~rF< DeڇNdu1俫1߫d-̏NGlftt>Gd1+T q^+?2IA!3Q(,M!=% |plH2;g*qL*A0+%%h=~ {LrKM8?r8#_"b!D[LNfUq]Lㇵ| -iGA~t2% -qr >23l;F3zv,Їfv!(~ ^?i\B(ۿCs^^"|̝D\x{u/ƒ+$]Q1Rb^'Kl{ tUKeIqɔO ŞOoON ٕY"q<.YQ !V09 dWHr5Sڠ\ze΄7\6;:E$ux(RJ'AZ ~.؜y=xMk]&3IN x˜Ÿum!gKvdJg־pt:">{"e9ǝk{ K·_%D;>`5q,u '_U˗Ëޥ Łxia[3}l#4 5.Y ee;6pT{.}8*"-&~b剤( <*ng'eH>`x@) jhO6fc'sz;L;cQ5Ⱦ<6h^'Ge$ai]pA,"*,&g=S+~@YZMbh}& P0`3H(`2}٨ >`2]<J˷{fYB9WOBPE?e J,PM 'P~@{jSY$$/|{ lA0/ T Xl:[q}t0y#r߫* *  ?@4 4 deflate; * ExUPTREED * xuX])ŢSZDDVbVnnAR,QLJ E EQ03{1>^z|s>gvfNRQj~ުnAbPǩ;0 դKT|2鼉4Pw 4ʟ#tvɣ-d5ڴm2^.)ґ7{*ҡUmUʩ]e4$Jҭԁ; _~?G_N9E<{spٶe掑~_v!L?+³lKo~>G z¶ME+NOuTPrNKnL_t X[\AsD~weF4 &z ހ=AoiݸC,H(-UMGh;,W'1E76U%9~Ӌ}?r~?ʪ;z5AS(R?q>:oOONفoshEJ^|6 g 巷RUzg^(r[%<%|/s[GDzhbw(HrZ29dXpWl@xÅZ{l]ywL O.P&cez\FJ֎*2^;fdpx&`oz*Z bծB(ǘ] J$^;@\938ˁϏLFmI;Jޓ^˿7v[R]w%q@8֛,Ef{p!dlеf{f.|i<,9 vȗX߃GieK}!&\4}gdz,Ʉ F,—59dA"sn*<i 9C5jd62?~U19<e6}6ֹ* gS"zo2KFkh0XZv6;NѰڑOw;C4 s pGC[v]a|5t}'m E~^H|@*b=yBe-/p= e,G ,E j 9x^ndg[]ۋ祹ylxmzs)93Eץ\n]?,. KC4)/i$SMQ[I*s66\4w)'nӭS9[N(߫]/,GQ̫Uu}Aq&Pn=zPHt.4TR?.<{'r:0OXR{^aEG02/6헉nk [wE[9`3onKݲa4]oex. X>\LVN}^F 7S.8Q?v?wIxvg2{Wa£K]J!d p6Xٲ'(8mL){~R%AVdXJ2B~}l.;9C#UVZضQPVDEۺby*$ B% ڏi8aGcJ~cI܏?mT 1zyeR7@}KS#47ї2Mvv8Ug uB`~dʽ'?! t8 _U^v=]#/ZwB(/Aެez%:|:<[PO<>Q%G8I*xyVFӾ.[^z_Blw5!N!N| PՖXX#,\ȸ|?6oTQVOƴ 2oz+`)1(U;7BwxR(1g 3K#1,huJolC_]QJr %Z1D$ ~"1CqyKiQcV6+"kc.{qQr=MϘ.'FvU6^Z UI<9B!͏/!6)2#aXԓS^qu @/t"jE%J[:1a{G4x i O7swٗೱTP3~[2bdJģAqC prvj F/=&ҒyCGg撁|7 ٙY(YKy*״.ً)'j^]7:/2u[b)JcVRs/̦}/APar2(gO%4fBt>[>ʥ||(i"cʓUf<(wU9WCJ]Q-D]WtO‹(/=&)TɈ[M Lo> nIS$ ƍDPzqތPVs@kK E6=p[FmF9a (g>)H}bh{M腁e N-`e'~[<$ǧ9;JJq9mzD'?kH$ߗ1v̰JN|x}MW<ۇiFgUl$!GڥzX俠xp/U]"չyxxnqPG<֖/p_/!~y Q2ݨ L+g__#zL?1RBL2pwaU4T<#G1iXܢ{I׏Զ>H&s˔&yp`h^D:$k\%KFV#ޜ`]IkF<1,{vT,RFbƥ`HN!M^4l#p#\dIW6ū;cI:FA.%9X4p*6>s6gU̎rT垧 rHY)?GDZI].|/:)O@L?F*we 1y:_ytcq 4E?Tg6ֳZ{{R|T/e .)Z" 7<RULT '؛g@mO?)r>aFI6j|I(ۓݚNFJB28t^uw t<:gwtMvm{WPbUn% +XaG|>aS  [5iaMʁϺ.%޲#]}Ӥnw,g &Y.(Mk+lF?w9#IW 3W2Lc#Yy< C.t|t^'%#f;[.Kx|GϨDz.|E(מ;+8KsXCSA^737lQN.IdS\2xC petdD)r?(}7~gPM6voOi9 d{/I".s ;mi+X"?ߪhz=|L!ٔ߅Sw8bzᠨ35Ǔ =\dU+Olz.(q&XM@cO(]iQ23:b'!UpFt?~6xDKI $ޏMuMʎ7!3?k R~~>zmQIG*Hrjª[i[7A&{t_6IEAni{509g{uHTQ;&bpo ϟCz^j7rh VSɃK)`48)f#b3~{:V Ek=6QdW%X; L!e]0p(+MՄ4?tH*%Ff҅|TtRMߟ*1a-=bpfPML{Jƙ#l'ΰ-ɬ<.|-@xseMJCqW@TV]HbeƆ XMb8rnE'>_OUn ZCwu޹xQAI[gL5}A:?^¼OoLJM!ֺelо ?>eO'F6%X;-*yM>nUe] ݝwfJYm+zDt;Ww`#ˆX=% ƥ("G[IBشC?]({7&tF\[±Eb#R.h8=) !EH9E?k냘}ğ9';:~81)E9uT6|$)8-mni0g{WwTe'G]G,w,:)qPF]Y|΃sw4<|WYnFf/{XViQdaҼq#+#]{m4f(_:tXl ߴ"(^Igu `/PVy|_%} Fe tGL>=EuFZvu*BiVe[Tf絷5>1,uʺ[B]rV*b`\ekCʷrH4^~>:e ڻ+JrP"Y?j<1(M^hLE|T i-߿3Ey' Qi׳O8]ZѤh@N}AZJs3;~Lͤ}Mk#YUS2t$ݍY/:3}B ,\Of#`r+԰P:6"PQN_]>A/Ɣzad!r:'\r4Z]"hZ݁>g5oą!?tk DEꐒ DW)ځB!Sxa#G`^Y7gi)egWd_4VsM^6pa3 WOӞ~_휥re+G}<-L<\5PQʀT@ݺRP^, 9@RuȿCwbC7D9x6𢭹Rji`I)Yt rPb+t#l}MM,٪ڪ|ۼ ZN=D+"W X 1ǹϛӏ,eW4   $,s"w>$\ؙ5ݳ /f8JrDeuNKFGn !I,b]t`YǤQ2j Q@7o ti]k%W;7?IN]-W-GX{@ %֎nT8$5cHw7j]krnj y{+T7.qL8e^U{>,‘CvRq`ѧ"Frx핕"F[<˓/GLaaPܙ7J ͲQ^ Iy\Dcd̴n>Q/X!cvpu*u<+i8x|{ޞǑ1O/̘}zRQato kWøъweH\"e#xڈpHU0QG?/)ջ{^.s.  છ j?Ŭ.Ue7D8V{!{=m(ݾ0񆷇V;5ۂ{cPpձ>MDYzL(=0]=Fv]ʾNϨO97%ξOA\{ec)$pkLQn:M5‰RQg-d0mo!a6r;cy$ s޵(>. Au!lO-׉(]Vy㊽՗%;85OfDq-3 i~^fjuxzp [O~4$/sGXb|o lfבVb] z2^ 4rH"N\#'//+?8N_ãae@5 ll\?Ґo9Fqo˼ `!],:goUGDJ0P"bw.)# .O_~fNY'oiɇ[ڊ'B+ˀK49 ej5Q 1N{ʽ_TZTDԒ#&X~ M 75ط,0M9WA[77̛PU m 4א75;D"漫!D꽨Wg<T_D* *  ?@4 4 deflate5d * ExUPTREEel * xwXK IAAɨ("9A$E AtJs1"TL "YPcƹOw:u0dd;uNؑ6jv֤ xJ\UGfwP2*xZ,+2c~ r^ ˦ǤیЎgrJX^}bl_HQ 'od@)lv>S&S3 @:f_Ȝf(Ex}M!O݇҂isͭ{2|^oCJD*✎7yT7uh4gnBϰ! CmHp zNu>ќW3|S|p 0iG4GSD`/UY$;Z8nbT>cZLv)ߢUgQe#%S Uj8vb b5Y0(;]ֲ?1Te'/@XPx$O0ʂ':)(?mk &a]m6B"ydx`!4sWծ=ROtoO]y*/dа%Y+k=~/tA-ccH?c%_v>ȞuNw-Ww"bI!]"d '+ EH+Y99ׂ*lDaeuP[3Q"UU1k P Bz~׽2 $S$<#,\ڀ0%ɸ ׵p\i-w\(zQtZqMկ_Bフ]򸋻4u;!rCї.rYzFعӛqZps@2lB,wx&$7 XA9~H C2>|3 k7:Oe[v-O%х m|mԿ<N>D~]ݫo1#|/u-45LHDnS! puoZFd7(x3xy}z\+mH݈Mpg*Ou'g? ^&xfJ;gţNp|2B)+J\S( 74 6`fL>O ELh&1(|vU}`#mB)QRW?oR KHCAow:_vWwG))ެ=1 i)3*gB܇G/Q&\ˬ1Es+ QTd2^sӌI [RwQ^Y4y<{^Ԃn ..Ah7jsu>U6ų}6= C(;H8v|!>."ؼu):}/d#PzW]OjIZ|$"y>ɫfm:{yUi'sSfX{i >H=Yv>ڋ_֒< ɸ~!:/XDѴyE$#&3)׽%"Yvӻ{GwVr'}XH;y3uc/mJv]#RZHspsdw]"$!Dg}} EmڨŹL)!ai󢫖0e]aAj(0D"ת%1o]tk1v }M=8J!zD#p?4_Ӡd:2ҫ0΍ S_%R?N}ߎk!aWm o$kۋ>BS>[e}Ps,l(kzp,>h>?U;41IWR%k--:n{İs(|t[V/ʭAp?Dd#cƐDlVs 1< l^)Lޘ[ Wد6 a|6;20''v$ $5ܦb4Z[DT_skaL߭3Cp&Ty8MWׂSP~Ώߧ<u6{z{q{@?oW0]̭kXkEW|Ho:Aֱp_Gb\& zw}<ɣ Bnj(x?bhpϰ3v!]4єf_ۇ+:p=RrSzV6'ez_I*z(,lyN\_cͪW)> 㿷ZOo)Kv19rk,\6} ?~ǖ .~ShSe*}&shsd#tUy867!"b=,~i1,qS$/k--H$w/5K4i Kc-U),ĊÇQF][Ιo*>ȱo9bQ;*Rwqet3@qNtaUGȾ!,Bnڇ !Q:ݺT{ewI:Ln<죷Ư(WQK"w@mTlƘ){fES}iKT%3#@'( tFNIAD^ejO* BTm:l,z ĶS,H;! ZgUKŎ gtRsNjrX8k'U?b}ߴ0MXܨ۷{+%6G&}CQJH71lpdca}ˡתI|׽()$oyE>T]Eoɛ0}'jQŏ3|/x b`.fO $ݙ}yF!Ӹ*2c` zת߀]コf!60|<,gQ8wvJMQ#MgPV|Xȇ}/QPe,tTO?|:ZMჍC^a 2x~:z| n;uV,ȢWlԇ+JKAuVX}0MP"Բ:bQ nbrPjIRG3j3ԞEp`8@I7URf% J_በh2y|9rW1?z]S2Er B~/GˤA5ն33qـsHpQ(l5}XoBY,+_Fr LPkB$t)S^ 9 !(TкxpB5V~*HbNx˴$@uKw{tK1Ӗ>ԔC3Sͪ9jF>j[Bϓxq,\u|&.d~~LA0A[Zhh,hz$O$tdk沑?t0IhM/P#R܎=\x0ހ߱/wŀ- ا`k=p {f*lR^K ;n=2x>wx0"9I{[H)>ZWr*~2DȆ$YӈQVw$G MXlgZRv1L/ܠ㈞#Tζ4BIoI"ʝ(6>Ed@IZOwǦoCUSC*îtPq{ћ%Ad6\??L~yo1f~v!"9ƧVltAystߌX})%d}^y4 L326 ;)~ˣt_J r{ҔmtBZ8A=#-7lB%]N7^o&ooHZvZ_eJP x3ն_>.y :>vOZhX%u] Us8 pcʠ4륍]U7]5Y, ၡQPTrq3Кr&ꍪX~G-Kv8.D9s9돸y"R"(XTCMGuu<ۗ}һ ;%`1o!+D"M|N7~лm.gq/e8yWcWT?.\TXd'';}M?;K"y&VL,{;8bOhO>ַ Ɣu{gT8H3X/l3[ڍ20--|+ !XۛfʥV" 5i%J]ɅT2ͻtUN=s2#oϟ"@š1됳lާ1{c"'}ٿ'G"ZB&g :}rpl~E8cO  Gyn<$uٜN )sW#׫^f'Tˆx,PluѢ5넖 l҈Tbߝ,%|N@ӈ粏u!(8pdtevǾiI.r?)l4[V!81YOj&>8.S+DyƑs$%0x۟> ݓ +a:#X'v6 Ƿt'L0ضQ}(dZbv.RJ*|8 Di0wy+yL f˜4W.e1[픅aMK|3 Sm[sFCtf>,/Gf:vE롭D@!C5nwY&yꐌ_g{ |;w ҘAŬ%g!^G@ps1n),W2MMN>5$*wB=@]۾w,a!Q]Lp/3#*\`fŖ婑Zst%ig?6ȩFb}#};/$pVN4rXr,hQcB 4i l%{A2nWARGQ~ϫҵZ/-&VlS (%/V"ّqp4^H|X!%oq250Tp4^]LD% dr:I] N"'vJe>lh:Ⱦ/4.P;E@@̷[yjPLm~o[T{)H~> ;Oo_HWF:,lTSʳl#O@ȩi/=fz~鈆-hSѼB鶾( 54ZuץM|;a U.:^ߟ}wvgJ[QtnO4#\t^2@hJ7Ļ X=hѵ,fƸz6f\ܞ Ve7'qXx+D7,ռ$-?l | ג _-3c=#eBSTOɭhJ;Sy!r_Z6S;f|Yꁱ+(VB0@뵰^q/|Mg⢻֒{ |aT*oh UhNrJЀ?E1E?&W}4(5}kvLT3l%N=~eįMpҖ[$N?݊'`V=ZD{'KtRQXٜv1 6|"|m/@/4.>+e,#"$8fA'Ubrp%y P؁{ +_vo?~F\ Ӯ#C@O/+q0"DAM@h%&8׬ _K :k`"^!G1QkDr^9L;`z}`|mb+} أf>cm{4G# pc|]@,='_ځ_{~U>#ž)ah~ꬉm7(ySO'/[qCX#䔫҉8x;hp-`e37zo/f·h|kל5 ۉ2b;~= XI;l{RqpG\sSEU,tYmWQ-r 3>o.pf$r.r]ŕf;aY:)Ɛc]G@sB7%*zk̔ugT_BoLTWERMM(u"s\(1EAv%Rnj~%/a/i)P brtBI_FEi{ @;~3sG(<'8aCY/츗X*N)z ,.~YwlӯfCZMagZީ\ܕ$޻mLtyCmFF8֎J[U]t9.}+OD\9J|(MW8 +Ҹ:h"ӐΥ.{mM^p..Joeź0j{O:3g.c^,u>6\*"?!0Ў%e~fhx[B 7Oa׫ G>KM_ոޮl=Jڶ١*vtOƋV=y]ַ9l'k:݀ptFDR^iJ7@H֎ᰃ dzq2hQGyS$'辨[8`M"~h2371Yu2"Tv}8`m:Q0*FWk{4*.5˟ w ' UQfd텈6wR; 4؁/-&l*MP?r2eMs9C@#1* #ץT)W^=2?(2/-_tL.i<_#LN}}sd4 cf9(>dKCCbQֽz2H2x1;߿&B5C aV*Uwαw$.PaVo Qi灨1!o7oY ̖i|5K!~92ƞtm4JAKi}$ ii Qf\nV:,eрpQK}u*X&s|}"^vicp˛~z=>7H xtZ4 5 PBuImxV!YOKFzd,eg:Cp-\XJr49G~~ek-lȩI0o@vs^rD\mD8uʹG+Tk=QTN2"\[Siu(nhT9gDJ%Dz׽I"#e 1P)߃`z>lſ [[=~w5!c$F|fn.؋q>T,UrGkrMPyt%wr\8O|d5Dyn _ݟ_A3=""i>}$0(V9;>W< :Hz?s@]RL"]wz򾨖 +?VBs\5[ni.mpiϧa|j+SC+_b3`J2uwdx!>qAsZ*["r\-~_CDJʾip5z\ձ鋆}[0[#kiQUb¤ ,{!}Oq4lmm(}W|dv\eM ܑF+B9~ 4j"2cR6K 0g@?E_JijJWi=G|Og?p@70bV/WE:x8l9J- D/hK'0pw M$HxO5LƧ2 'EFue8-cb(-"OJ"QnNGUzWm1[ߊ"hVځhPTsU컄pU3(Ą~q5dIXb.Vվ87YۥΑh8Y( ] Eüɝyp[uPuݒ Oʅ|P"E/]Aӗ[8TjHgK,6A*V\W'@ BE_G`IzdDLxG`s~I. ]HԉG8+5fA9xUg-$_h'ޏbR i[eV)W/9'%ߪA ?$Bwo@vV{~Ŗد)F?E>NS@'D|bH)^xuڗsm N ߃pyzvi7$])G &lPβB,NJKW/|Ed(f7 eڅN`愠ڑ{d:/! DcmF˘6wb_Q xǭh6"K "yOz~!4a3矟6,[MG:Z_-ߟwz&bsLP"vjڎсqNn%}IN=pT+UI}j[`kּ!gyҺPd*g]Fp<& X\Co ~< /{ /cd3p [COiʗEptXM:~eՀMYexLg sM*O-5w" G pVEF훧EP,&qG⺶-"~'dW, &:92 O6ذW jD;! 1piDF'i}!\+ CB#aWapŒ3a? č/x{M5Y^%QV%a)Y5K/.%gymW;xUM`CW ^ކ,_ *Xȟf˶ЅG꫊nѤ/"ipB2 {mЪ((PfR>"w QP=X[}ekh:g(6IJ]OXt@6t">d AߴAO`HvXv~e-hD7m8 =V^ͧ0s;1tRWz|>-m#X"vtv;I&%>3%5)f0 ˼^syE:OxĄ8ЄwT?d8.9J!F~J*ǭT@b[S!kL])PvA'[S:zc?bm!uxsWJmϾ>~YoZtgӒXNR~W]9!$T())4Ѧtx2AGƝ65٤i}I\/ hC;=/Z )(+%w릢Z$~6n߭$EyNQj%1_Ҩw]3;ǹ((K~<0nst:,MTV'J1C^1}kcY-Cͧ㿪b#cRAзT J]܈͕:0ʺDZo ŵ\K)Qي iuKlK;LFbi-"]PhWĿ?G q/Hf߾5EG-K(]\`mg(ܐJ1Ȼ\,yT. 'Hc'vu >h[2@Eqj!IbV5ײab8Y/)Hө;|˿~!}w6Ѱܾusj8m=xT6o@x[.\ݕYpgɍmJ%iܑ7̻flbZ :\@ Ԫ-c-VH@j6?q ݑDSDYL|{q Smwj$~fobo I]}``+V%1/,qT$ yȖ5 7Ղlft'm?&Sy3J'V#peg;(`$WϱoŸ'ߧ5k|!_w4ȃ m\L>\I[+y@=1,rBǮhM8lxw L ʷl/IZZrԵC}d5j\uAIU˙|;Jib[T9h w:!t¢ ys <A HW90E B47:k@G! ?%;kdJ zep 'he̒?sdgQ3Tߏ id;ED;Ւu=y!Ԩty/E]%bl-h85-o"Pv!^} )ݍЭAY$ n Y 5TU~X4fI8fG!y_S^<0yu@DYC c;ICIg{BO ĥ,G6חsTW'ZVVk*]P޹|ũzyx5W .Fgu2*[LiP?r, ٕA(^%y 2+&{wNН-gCQ]C,0Wd.RFUiƴ$FswU@\$e@:)_P6 T/={]%j@_*w R2CMDk/dnX䵕U'! jxgLCXI|Mٯzf_ pn<@ /t̯1CIl2\5}UvC痱Ul$tq&n%lV!r~Lj Gy9 B +61(6[gfr {b/#;W<ohk׃jZP"q#0H;-_'%Wc_.k_eǟ)F]0V'D4/ƽY_ܲ>UCkԻ8|O*uZ,R2|Mɔ[5_-d~ߊߦphsaݥtdvB }:>Zr&zk=I%7zC0vgM44UύnoP,Kz &L[?))M#أf ۟_H\bB쀿+94Z0]}`+x8l~9jv<Ŵ]G'h<$߰ 4mX` ן&j_lEo#7ˡ)>B;N,Ìuc~Y@,V9K$ٗ H0\([w J=Ir6h9{v?9Gˮ}P}Ahf>#uEk_λ^حU 'vʹU=w& G؜ف#?ޡ=${c(7 =s1K5ft+,aDzѥms\b,7u,rxS3>+=U₅k_)J1̧1'Y־p%J7~=ƾ{T-\uAv0| 2ZN9~1c@G#qV m!'W{ƖBl9ߥ WC$J?{ J(D^]^*|8{_cZݛ1˴@tH2LwCOE/ڝ{fO3ywSp?lxyYY#6=V)l,g>$#”W9qcKex9L(mRuw(m?I_)?j5![9MSLG~Jޔ~-8hwc3QAB@@Ln E'JBbySG%ehv3ǰnEɼO3wQދmWHpQ\:O Ji8FA\vߪIp=}mZBB5 Ĝ6Ysҥ;ALф2?)b*Z,56ҹ E-!κ{O^-v.g!'x^?5_@X)0t]$Nx1%Y@{[@H.+5/_ }gG6NS1dY)%هEk0p8\eN+q}lӚ1OJW¤N-ᷯۧ'8EGUa)^8jX $33ȇ1ǙD}./fM\7`}Zo{> ZfmE&* +82 ?=ex0o R1[fbQMileW\w$kc$6w/uYȭ) k{G=vc;עv.!  [U<[y~CYU.Bp,OD9mg Uip⮓hcSg1^N=XLB$KK ;>檘ul__:BoDyJqkܮ#:!;rZ٪9jGQ|\:\>3t'kSj!&{.(_:6ld=4,vv%jš2'Laؒ㗅gc!w$ƾ T` O5⻨9Mo٥y=% n6]0v!{郮 Eu)8\ >]2|g2RBzަoxnL2LlspUVhqW|y-;64,/W<$>VU #zfT,o' ԮL),pM)g{EKwᯝf0Ә 0WHa jFV+u)\pBzt}":Đ@!:+M3$Wj}Ti(}3hǯɩg;go/uFQ|rOל 03`kCdytStv7iCi3/' x{6z/豤Bi USY*Ts?giB(o09M)o 4DW³ROnJCCWz*V鎑 &V7i7t^%ߨeMj6O}:F8ٶ}V`SܤY4 Ɇ=sq _+M3aCc=gowvZ(OCW;WKTt,({uS/:|S،?Fzևf@%$ԡ) ?!wUg#'_Eڪla6&UqMN»ѐr(יa}_EvG=wo1/E{y1[=,c;#YՇsЌ#&鴸%z~aġK=4+Bnn GKkdIf̕|n >ltGORJ>1_k% ܆$y<)](@o+aݳWP“fq;;=4,b+݋jNᙍQYv2T)U-te[\vNG@gZSŔf՚J,x:RA7,XӶ\4JuyzC*e{?M&3>@[B<(qdT TֱSuNCBxt]|( DPq{E b4'xQ9f~,k B ⺢MԻua6bCJNAUڼ(E`.1DmSÙgT7ssy1Ao˧#$Cdus=%3:ߗ-ʲp$A - vN=?-v+X\Xbk]2,ۤK YO y.G>G{72e, ] %?U5ӒT@Z1,˞?Wsd2Ɓ#>1<益G+߮sW[?)jX:sAb˟rG}/'( /$Y_DW{2䡯zO F w[GTpt? ~gG.wJzN A^orZә%Λ{^W)h!f Pֶ0t lS}ߢXZ XVM !r>p~ߟ?. W0J8;hvjWLƲEeUv}epOq91Xr/Sh&+,mWLlo-""5]0ԹAJ 6[Eν3| :Ny޺6.)_WI_Q1fpĵ_,o [ GcIZxWiB`(mх;^k=le5w_|`]xb+f?ot+'PIVˊXy_O!Q:s?1r2w[]t ģL߽\V %bVllsZ XNk+$ܚf_P,eG G jqX5uI͌ -kH%I-3INK#g󏪌v;\T(usﶵ-#jWJn7ʁcObRKoDXHvLXT9GOp8u`ȚpGk#7ȯ{Cȿ}Sū*-$R|ԯH+/@l w:ZS ›48=XmV)@eArV> 8b5P':.8ıuv@H[ǹ2 %u瞐2 ȫt`-:Lf=ZY_ ;eV[P~!cn}Q^5.:H.N7<4Q CrXNdTӨ0M Eh,r*:'X tʉsJ-o{]K@OUm rQi~X;oѽ{8~`V|n-wiH aNrIpEY-/ -):=̙}fqJմ8eI_ժGHb ڟ|o/C}<$0ϔ0`)=Q;=XZ$z+h3]~heU>u^g&XX\JW0/m]& R'򯶏nY+*G+@ީEnWQv(뭿6a >vEo?vĔvE2"М.(-ʸ=Q49skv/dSuM{I|vys-jsܴ< t:uW6~ FO~7m2YjXɌ'k⸍I7&0жlܽdHy\rV`NR%rC^`q dJ. ̴9Dװ_ވ"㊈@ОI$ͤQ3a}ºyMm)p}VC"Lgv@ 'a>Fa9HPO! ?ӳD˛Xv?I/X"#.;tZ(~=v/Aj{߅u (t/wO@Oe^7֒VVz(-ql,r >~ (R-+$8,_?pČn^\{V}u^pO~.5#Vc#[BymB>oGaĿ?ng^7}MxJ*j{*wf|+S()gGEeP;C4N{W׆(`6GJ(g ͮO=<ڟ i[G$*93CcN2S@FB[ .弯8eس 3 ?X(݉|b9R2M3@ v et[y-ũ5]TRd?&ͦ؇rie; ]#}[.NU?ai(ʕ xsyH~NCKA[~ؐG4@e^I"?O?r/#;UtIO!CD j8ԛ{ N~H $7?ZB_qԛFLYXtPV{LICj(? 6/xq!Ou;g$=P-H4.<,5z UD>Zt_FÑE@X>faG& J= -\&@g(C^)Bč7!U&6y0M%WE±C(/>Yup ݠ"f ƛV#I\^%.;iHvjtBXGۑ磌qC''S4Q!ehݖ &7FUA{ЖjMiNA,w([Zk[+SJ|c޸A %]/[2BIeYRFPuw(b mYHGyV9VsY{Ob$טpotzE\Ca7 w"7nNaZgN@ȒRbaX2xrt]3. op8̄ϟmHɞI!/bhq@difhCHL"˵0$|vN C:=+v* c)`BKp pi]Hm$%eC@81dA#6[(5= X"S:N7Z MvcYjr;fW^;(߮ǃ,Ipˊ_l:< 6S[Bpugn2Ok`V~3XPZm|P`Jxf4!8~t3/-̗\.e)wl0eb}F4܊,b7eRc!?qk1j {y^{'}= zVXΎG =~y͝=*T 3KkhASC\9Zn"GO5jEu|W=ј=Q>.r2+LQj$h Z*eTe( ,U"R_#JūmѸm!WJ_?#Y! ɱJK$? 3g Z|(Kx aq%?숒)i(WTpJwu%7CvnE#HVaNYC/s>7g@rrש? տpv pMn S*k`3@Uʶ` ʷRge`ɚ1Bwqѝ%`ߧzs_6:_a"#q?钅|_*рu䂲dr䅸PtI;oMB Q挮cX32n\sH@xN8SdGvos]V|rG`HʽxJy:$Fn)lz?X~c9g.13u@؜5vBn9 TUC 4 t}t~Wb:pj}5@Q&qX^/k$ydMy?-25 `^zűf,WE&<ł]!6+#,}pheז{\D!%5;*=ҰtuD ^dvvE]Q)Kz s8c +q0.Vݟ(˞5nƔ=s,=_Spæ`:Qb`|w]Q;F+3 a~|KN\lKYӨ{-Uof[NO) #unGeq`gi?^;b8,Wy džެՃ@] J׃W^Ԏw4:wâ; a%[fH>1wfPEAeYS Gm*+&熽 tv=2̒I.y_$_5-:},%E^c)J/?X.~AlM"D:JwGCLZ w-L])^% Ѡvׁ,L@j*ŃPZ\Ӕt24Y3 EVd~ FĮWfAlz,^Ye[D1;{ -7',#z鄸ҝ[ߎ}B-P"w]MBbv |'¹G?#2,( XvaбС2*]q$X tt8bSc2)bt<"fHfzzKM ݧ(3v°dQ$KzY{,c0324SԽeYrav{E? ' eFer bӑm]CB*E@xf{BN!R~N5@f#y6 Gxe~1 _WKnGBY:mS}?h=JW,pȸ>FƂ*W$#NTztuȍuw,pc2hQ̺ն}{x3>Ng=Tile`"Kpj()KŖpL?Ͽ*\qi N^`Y.׺A:[  KqM\X1*[k~oL!IX;xV^~_sL{e᧜CEH : qatG\/ `یpge2?h(vb?CWK )P$J}I!ŗ`UUE;,+x;CYi{p}kzGSC-Lq[棅2nt*DFzLOmU+VġwA_-5=E2-E_7,{__g$c4m(Ӽq|O>49Kd! eYREz-VdD5mh X/mlOCM-dIrnoeky 0mL-tpEڐw5r%@9WXAbit| "ᱝF-֑r?Z IQ3#.iu +{O ႲG?0?ZC u-[038>( 64l=$-aB@6ɣ 9eQ$1<H +߰IǙjY>Wc~,Sk$vey{z&`9N *- GW'}zm{qo|X--8c< dm !,5bp$ĎLKufO߃%V6M}=?RJtqx{K\p~q{Ωm3V[3j(97^&kM^ HuL'EƻY>? XN.=k7i5 \uڈ*Ij6m_ a}}'_*7[ }5qQ5XmT r^DkzI 8y`6ܾN YU@$/y \ u=ǡ2Ct* ,u֫uZ8")3z3鮨,Yb?uIIL;tO3s]AٛG\ppf~ga}$ A72>rSE Q6pjY5b>ӿOǏ_M?T@9#.(*$? bj/ŷI'(gh #kǧm7zWFoxCrOw^jkd3KrAg䅒XtV,|P")~)%+L敔ALޓ.J~Jzl*EHkY)2[)OS.֖<{c(<>ms&b%QFt*G_''t?U@,m?[S Ho Mi+wmZz:'Z Wq/:z-B}I;[P"eH= :mp"rw -], 4|vD/tQg 1|]#6%nF5rP9-'rQ8`)({G3CzάØ &^a߷^D}3'NRCҹh*qaff۹pQɋqi῍%b5jJ&! d;ֶ/8Z%^ 7`{nh34#cE9]`V@뇴+~({FsĔN"Vqڙ~$}?5=C F6?dn=J+8MS/ ?a)Znv' )b(Si|wӝMb O?r':"1DGΒq D+3Z#rH_[}Tp=@q(H>f=0 [OHM!wS/)LBʗ0]9moq;)v֧~¯Џ;+LCOrb+$$BϜC*i]nrq# _YCy(I[ ^5a >1Ovui{!t΢롈ƽK./%nJ?rkj|^Ѡ~XV Av%.o9xVrVz+CaIHvgq~r 7h#* *  ?@4 4 deflate, * FxUPTREEp\ * xy;=~yZ;}k>3LGm1X+T^^\(/X l|(?>_@󛲅sYg3.-<]-7 x( .{,WGmkfayS3%$v7@ %E('k*C=ik jNš߻+ Ҕ'0Χ(uDʬ>NWHя$ɍ6=G'6a1L7Zs1gA[duD)Z^9C"H2@.›GFΧq>[4  AlT|CqwIW^K#T MUI$[iw*?MlS;ڭ%RoRu%{"&Y3ơɌU|Mfex+@&W)6)%shm̲,?^CbƦ׽=I&K3ʃ cpBA$<6]A0.,y`@6-5vfyՖ@9uTmT% 86siGiXt+P.~wZLf.f h{Vqh*uHYv"%Rx4kR;hQY^$N%KlƸrSTrޚ7 {pr .V@8h='ebqKɭ/ T'=\Lw>, d2; 6dxi)5X!?4-w#}a&3HuUO!S7aQ>X"ퟯk0GY8aYBXh xScW3pXYk~ZcbB_( [w]>ܫ+HH=Yd%GՒ^ !ꎠYv@7M u*35I[39ߪppXv=P"UYHbw0uX7!D~<,tۘ[#e@8#>/588.my.͔:p#x%Pm̔1=Z+i7ͮg };ꐹg/z|^Y>K@1ntHn.g~{QzЩ>`ݍl:Zv\xUa4&ߴK>S7L=:f 5اTԭ *b\÷>Y'mpqUOK m׃%yrJ8~ϳO!-9lNh?`ϖ~@ӕt/pœcdi \ ߗG|BdqSyAs+_s::L[i!5B)n9Y"v;`+|8.rвaK{S?(r{y7YG:@oj$j3 705=pq0s?FE=5zmąVp;^fͣPf U9g>mh?\i2j~Kk4jIt@!&\,J޲f6hRL)tT&acr](OsMKL͂7o,횎_Bέp ǫ_>02nFb%9 YR>Sr.Ytkl/qY> H/l.s(6 "VDtiiˆ\YQ 64WΉ,b&uJ ?rXV+3xLGߌ *Z(s\|K)DWnC8NQz=BD@oO}x + O )st"ʫZM =yК+O3sNhs(jc j@aK(RE @Zmo[F\z▵&N>=>KrXd)ʉ׶OV!VngqYʮcl{#Eƻ"|CRpn;@la[Q(;y˷XzFr;\ZhDͽ޽(K7]K(<`py[sFwD4&*lNvNoϛ)1>r|C|Td/er }C)$g7]u'wDrű[_4.~j%,e,zFb? *IggS7`-yrN/ĬyxʓiG4Re &)JJz&/}) R$ veu}xDYo>{C BOircQ-޵ql?{Dz_%½!÷z3YMC b!G6RFt7vgT-9 -{ꡄ $§3VS؀f谙/d\a{rJ^wqq YwKZ"=Zvdָ{"(5*p=5#(g \${?ik䈴KK=׏gN:ݫ0_>DE&yjIfzꮑl3yaon:B#T>;gV5sW@;ݳҢ찳m%%p*솕!6@C 4.ɫv1BYB 3(=5*;dבC >,r wk6 X̍U<3WR/9c i ~3{7%'<ԩ޶ohYgk8Vieޞ³vuH MEarj-zݵ`-%3r&aV`k̵wċ8sl߁tࢺRb$=Rg.F6 y]0ODJJxbOG,]%oGӐc^kfnO7ݳ FDm-=3us0Ti(=կO7e_gؓA8bӕ"W}AR5Wo Bj) :DIݰVEi (BRC_-92K7>zE;7KOh; [f]Po ,.''5歝u-}Qrlv@;?-fkv)ܐ!s`fZ"@4C@#` m1j7#+hno<wl=KT/~V8 9Yb(E2^T;ϟa@^FEa){N(e ZyX<0g}=I{U9zK&YOʟR1RnxQłC}u4p*Azz* Msf7q[Oɡ- Xb۱}fy OU=τ#uv(yĵ ;uzy gHI|3QizPhc'0#t7kDDLػGlHڇ: 2DW(kLՕ6fgVؔL5K0BMGnW(use!ܿ@SFV'ZLHVtjX+XdKM'齃Kf!p8u(-m򒖪եی'{MET > H0"?aU9={@ 0--5)^s1j)^wtOtz>@A'yVwyhLĺl潣_?ϱT{_Jzm~f1}9٘0GPWw%9xgo8^㯎l+&̮ ym*f9ߢr-%Eܺ_/-VBj;Q"׎[@\01 +%l= ixP}%/Vm+y5k -NLj \d ,ɼ5 ` xl` Xb}J\lXFvW&NͯYx:l,jR]CBVKEk>S ^q:Qh.&^4;3fq[_mr4q0ʱ *ig2Ϟvi%aa3c G3i]vҸ7LCi:.[ptҰerϻD 3M^|_;% lerԟ"[ڞ5弮ØN9qe(bT ÍƱ䍿%:x?f⡪wMX 9Qr(s$7u:ROP D7HC4#=|u",U] *< sD -N;~kR,܀>;|X%FDhޖQ44Gzk?WbYkz(vwV z2~C}[A>m1yx~q,S[*F =&GqY*K/ImWDohyHwq\ jw~sҪGm䟒/OgjvĩCIx38^7! t `"e=< 6y4A1mj?z}wr4XSz`ddC4rr`Ч8mi@*. Nwb&~Z~0?-7MØJM~Ż}\:fAW5׉_̧ʎX c"3{ X~;D8/s-qyBn`(\_&Ofi\wye@ \r Ih)TgJ!3~%NYTz9Γ|px-?chR_o"T#ˬ6I{YU}dExXg=.vA0d&~D<;hO ko+*Elay>4XU:t7<iJ⹀"ʛ  Ey0v}I,4ݍ؋c8rl6ȄnG|ZPԦ,pnʢg /~} 5{7'hj>p~m8'Y0ypBGOR6^I<FwwFxOܕPvlc14/¨_dl^ߏڡ" 07ފ)5!KmX(eY,+)2+F!>/龜(* *  ?@4 4 deflate$. * FxUPSNOD8b @ H+ PT TREEET6 * xyӽ돞^k~g=YbO'!nGe,XNg>OFyϡTyο~KLU$Pzs)'*pk ?VHƻui2$){QN~n XrJ yo.s<^| xEtuK)W J\:~)o[Zb_/7pw>)uv,7; K`ӜB#FFACBX6S|h?$R`B 7HKkRF rTt[#$8|m *;qRmGT+]Ӗ_& ,1+o,@ŵoYA x9a\Q&&?MȞ(5#t,d9݀p0|/ʠJtXȟUP'cdR:#:bH?lOgDOw{]e@}rAE< 啶1J}4x'sήmJt[?} ݦ)kߎЙ{hQi(Lf*kɍdd$nx 3w(/"~X);Q\DT]m=y_uU|a"Ύp;1Iz rpg>æV)dKAi"<P+c}& LIָ%Y)JTo}pshdx{}~D.U ^l,:uP^(|ׂR>lE)3 ^E\*j{9#~qxNJ0}㚭?G>[G?ߘXY*gۚM] rT>\7 6JB7kDxIYOFWPĵD@Dm%U Dz2jhPJvs}![Ϙғ5+/#<W)j3x k3Uf%`Xcz(2%2N Jw/:A-(X Q oyfk͜7X`㚰c, kœb@u[@MX"6J'nRol0?еg{Yfh gߌ;=B{[5w$"2G K^ځQKf}@\aX'̵>ErrA +4=M8w*Pe)u0"uW6lRd?о+)v@?ΊGY<ǘ_+-2.P/7A2"|G}WXh.ം :|nS~i0C,\4#L直)F KbB ǀGF-A3܆_)bp}(*S:Dkm~p p@wZ9Z^r4=G@P7vc tc#f"E|<@" 6>  +CǷ(n0 J.=AyHY 8e]z3)S,Ȼ_˕kxS4 Zz܄j/`ò1֭ w6X -W%>߈^bFUxjJAX9)+t`W־eNz?үK"JvO08[|RRKHϭ, HU y 31n3#gt6cT5 W\dž@-k!p1n TIz JɆ)DWe&P|絃P?m3$y|& ~ڸ2g6o.9Y+vt=0,O.tw}lK%QhhGXg|t^m{e8&ng[)sD-\oņf+v&|Tx .;Ӏ7 ~CeYM#g2xH9kT)q('#O$jS,"~WZ Blylc`>ݜXe='Iգ =uٟ%;Z~X^aQgg[P>n@J,y tD͂J !3\Oo(IB~2}<yͥF7CPM&M2 کAsN!ǽ(u TB=ن,{?%N+y?Ws93v8Bn%?XQIRhڇ&Q@CP ĕv<7qԎRQ%6YJ qs?36eIX;Hb/\|^doQ&sf┼n:zWW? JW-ݐu9IT@հ|աOBMr1)<Ѽ~,|X̲P3cq6FF12[sPkc1oQwM,yyB 骄z6}5Y(sK{ETi&C20tՅ=+CƳ1(;{ur&+[CQ^⛇߮Q4c䣤sH. EĮJc:o¶n2Pq`Dž-p#"ٚL\/ ΚZyOHJ3)֜9R40^(Deny;*tRދLe4;^̼jqlғ2šsO k{}: q[|^2&{l?Bhv9urAұ͕kYROb?&GJ9m@ZOH F[\ +5Vb\dzјAك,.agE+@) Xb)X?jL] 2NdA<ZG&PNᔶ2Tr崳HQ0q8f ɢNqA!%ϙa`yI0JKhMWU}ݾJ^5S:PR<*r#3c >-m0""E &^zfR}N3& ]΁^Kė,ۅ"~G/. ASzS)5Dm=eJ/DE\ǃ.n[E Ϸ`֯Oo!^'Q$*BQLo!̟dԹ_Vbvj?m0lt 2p3tA(VYv7(/,q #TݦbE6eF2Ku g,ު܍0~bWb)L=_V͢*͟{O뻴Kk}; 6;Es.2ʌqu:JaK{ry~֠1y~ (K24;wCt6. WIqT$%}8UsI{ mz*&ЂW/{g{+% ,,`hN8dsQ@Ĺ5rs(p)Qk}5~Vc jl srSPp5J0b$Bs- |'5s}a8S12zN.kQ&⟮ 51*%V&NV~]a0N|/zn) D);5+ZW9mR0{nY;P-xuQͬi#̕dB7[CӜEpJ(1f5`z8xoⲸvŲYnklU<޷! $nGN- Y>I} ӳۻ`)yo'Ց Eں(eKٓK@׫))2ig&j]f|~Ь-zh]{ݩl>Ozj0Rq=ޠ +k%4~u乀%= *B(#.OM3. 3V|[+9bOG_ ~."6l 5kQkg7$᳅&lԼ3dC`rPfnhwbj/Z_R|U(U"BRO/̃AzSA3)]c9h p}a#kwىN!mRh@f!_%`xuw6qKrDֳIjx6>KBM/\5ld {\ݤ_"Ze0\ /=$ܿH)̾,S'ܴ/zo<+y=4TYXdGyDG6h^N ` 9HJx[ n|N|L9ݩ[J< 332!;?wg+''Eɩ^0 [Fv+i~wtti&d3!s";PJp ԝvCſmC(ǴSzBiٲ`lNqx eۻ^ߵv;ByAKUE+oDJD5xPкIpdU[??@IU1,\,|cZx{/am֊S!(}ϖ4?ׂ ryʪ; I_};԰ay|rB`̸!*e_‘wgG< tshgYo^`=ʼ2R%GFFR0Q[l:-^{Ph:!E8~l^_>(3Wi'-Tq;>[^bmX$Vx%; .S$Gyc* *  ?@4 4 deflateU * FxUPTREE] * x ޿OϷ׵uaQPgj|,X>ܨn0j .b%ӧQ-Z3>#3qř*M?dW-ijR(vli5G{\/ GhW> g}}SntUp,vzޮ=gK'-a+5S=CG:d>EO?0A?:y6g԰w>Cw~ b8)pI@ڻ[Z n~~:u.Ԓʆ`'3E]<wNs[>Y30~,gz$T֙.N|jTeWmxΥQF%RtɪO8?{ʹt`nljP{rbu7OԟX.'\_~`;ʞTPۿa5%7TGBo%G>TqkShA`­ڷ'ul *.e.[x}過FZ>l DZ< eA2ٔ =x}>td>,%YR_ۋ[4 A rCXղ(Z){fހwNO hI4K2{e57?Z;âα2 [0E4ĞSr[o9c'٥%u ΂mCց=(bDi"1> hɇ^kR5FCl6s'9oD{CբeR dJ^1ƨAtr}D,mRw=/,}$+DlTEʨFsRE~{=}9x Dov*Vrq|4dP3]r%7m8dgw ͩuăBEy~ps :ߵu6WYWAB.sɟ5-7ƻ􇆃SATÌNqA|(]D<7 kgYw?NUB6̂Ϊ(M.r4s/"caqCdwiq뺳4q<ȐiW?*JvՊ4{!|cU%(ic"J ռppq5}w ʍBv)jx&EmT 80*8Ef"[;젵Xڳn>~tE+ ]/z~f.*e~16#^*C.O`Rn}ϝd!/tH`7soac2a%UhXt;^iTM" UZUAkER7.~\Ov1MKe]iWѴ˘^T*qy'du0ڪߛ&Ȟ_D ]xN~S"V/b}W[Wfs8z5! h7.6-~q|;~سQֱf,d"Uosx@sr1Xfce@obX".CTBvSxz*gǓpg>hЈ%RgKx,+=F %Jj;*UKL'd=ŭ$~-)o~Tk k7YՁ͏3wIrlnQ[㥮Ӆ%R&]!\*^7a/en@/RT[cźY=R0xe-vM!.dC:K:=!.S?#vp%+(:PZW{EOv9;u.R]!NgKmR`b7Z7НZqui ߸~!DCj0O{Xp?.BO3t{LpXO9,}hIЩ{DLzq92,s{2߇ qotFϟIvҿw~-b))vK 1wiWd{Cs%9uD&&xwPƆ$cY,0Κz$q[oaÌR&2/?bC4"vhy*!6p츉~RIc(&뇜v:wC/eא. :~k?S$Ҫjո>9>ue ldy[g2/ap )ԇڱ<Ӎ (GYVSGBꓺ4<UmI8`gx.ʭyra̗ ۖzZAG q=F+ DmXk7ћ֊4<3>(Ji&IYS` [A2eD֭ F Ojan06idK1yICfqSdɆE)ͧ>w %M2+BO69j՝rXk$x"er#NpJB~ 28M|MomFl%yDHY$ ;rE[bQUGl6`f%/2W-5RrEK$xƓZ@UB C}tmQ.Kp S$!:gr4G6EKbNh큼vO Yg/Ϳ.a^3CvM *U4D&b%{7JbO6:}`S|y0gUpگCH\2M l6h:(իlO,w"\Y6vž0#*I'Wd~5dX5 VC^CY\>sH ̗oU_[XC㛀ƥzdF7 GfqII2&. ۿ˶ՒQR0uXʌYp@ 8'x)ǎ?ie]KN?2;pU.NSMˡF:!^\\ZmyeP^sԋpŞ;sC؇sS^(}W*!clz>#@05Q&P䂲)Jk׹J)2 @jL$.dPWA[W!Z>~q?8gF'J2:3p\oQ<瘚wX'IqSm~i7kW|>pT1 C3+{gD'\Qju[~\4p8xln- Yx1%Rgăb]k=9~.h=w<~Z^9V5]KBTStώ^։~Rಐ&s'.B3W:;Gb֢Da7. !ݟG{Ize$u`fFM:6YZK! iW6k͉7TtbC@c"f>1ӯ+@µ)֘>PT]$gH7-g}X ~%Fk% 17t-=M6ΚEPKiJVdzM~`/yvwSϹ{ RiW'=^.'o׾|wwg#{*]wS&.bz(o%vL.1$}ah#S ژ:wW=(S "4+:^&A}$LW{%u{ %,>W?@mɎ$U+*:]zLX؞8{ظF1 "e2L;&$ep俷ey-B I0./t|8|HޗA#3?%~bhWxBsTvZIUp_ ֖ _],EV*OM9%iu@xi˨ZM"UVobf:6L zоRvOq;kw{Q~k-^591gycm7F 3+ug =Cp.:ZG7>tb>z~=߾X˗ "sMK {_2q |Tac - ~ WdAlТ&k?H,7" 9!)`[*{j<$/0mEw|Dž=25ds)H-F {/nJg.Xd\ђ_bV+餫gBPp~/|ռ^01>c h:Q]`IOO-;{o re6 X*I'/6+fHX )rr٢l؝aaZŎ$'9]IԔD‰+EHC,Tyo #RDNDEyPW[pqyAk-:OϧD?Vg (駢AHnViTZ큘rzPn4V+}߼ro{ku}Ykk}T$8"\Ϧ m&c F5=f;z9:],1%W'hnOAvޚvlP|KEGr^$ ^[1v#25K f^#7hja.gv rֿؒ.u@%-.3!G缐:a?}Mx|5,,8H~ yQKE[CAN^2gk7 *&S |ڎ'(oxό~t1;7Ǵc&0Mǎԑ1f<P2p_٫H~l$l8k"DFԘO r~?Q@uҶFQxqhip")'58k-~SSE+JTz!6JcT:CSl=$1[0ζ*>KݮMb/lSYd? eռBZ~d$L;n^GY;$~4:  ,(7ѹ< WU(ÎY,W4gC=J&D+SI^ѯVM0{g ubCh4 ;텸?$BEd}$I^vPDQr318/}Z~VsX%v]UB6p/#N "(W2pGW_{29l6'oNoVjzN錯xڍ;. 1D\I~*N?c[]J% y9E~BHԾͽwU<,Df<dȑuzS\O)uHss(Yۚ޶ ;)5s=g|I.xi?Yp[&TIQ~?$J]] tbI7~d:sWP0 ԋ3;Ag:d^0^)m88-IAğfRl ;KhrM|0%{qawhJܔrX>/kjI/ bʿgˬ (wD_ =_@4ySٛ+`@W]cgTSج@c@KW^/]K #KoJ:/GzsY;CjO7~-L%[?;'m˂$=EwdJ_P t=J}uF0)DX1a2܊zVC~K7]+M1e?ohaQ\ 22=6ؗyF` M3jtު%fr: UDYck)o (rgIh~'JV @wx-'.uƘ,Ǡ=65 N"$i߼S7M°|\>["KFctX,W0v_ES7`ƭ(BPq愱=(Ǒsx{ qOMr2gҖ좑 H*<9v5 xASQ }4LC@22rKh7祵%q" 추]>+@w6IY#ZoGulJ+fdv>N`0AFt=VJ bc_ܿx )moY{+gB( %5^uWk_y٩}APO\Xu>~>{$ô#'"݂}~Ed0\؀X:R8zn]@.o>~;]R%9ٯZAz\u}^(CcIھQ7Shfw9IҊT\Hsj̣}`֯(6x꣣<[;9b~+JxnzxRdF$ee"l|c\7i`?u`+2H!c)NfDZ JT^ gq%iwT?(r% jiBő-@۳N_sF6/'pXPX} rg'b|PWbgcRx?G͗qhJ}?`4So^p=ؽG%a1Gn!t$!v9>wc=Q=lخ)ZXs}n@#s"{Hq曈ҷz;'hzmcP|l $w=h)"jUjɫw(DC),,mۥb壚XCo|tƗrLy쁥v֖FԨ{Ȅr 8k#\AUx`! cMmf(]:~@WFH TH\~Ns]Rls{~L}q]6>l)jRCMž\|psABs+||( cq{QsIW,G(&A~(w$NA"6:T)d:v_>JC?,gr1uF3+t}O[[fKcm>ZPuo,Y; N\*eHėdp1G&>J:22h85>cumVesD\ȏ__Gt~Wٛ8PU3E`Sq< PLu(¯=PFaCN|[f.U}nˮVP6P;NnqdX&v>YJKUDw-pO& HM7# ר`]1@.#.]3N}b 6[ݷrvJj6pBh9uPK^w&Y#\$#o=;d?Q:ˆf@Ȱ'Ldbm#6X*_N{3GdrOgFgP3Xɓ<]J.,шXƬ_eQm4_ ض\'IMq(Ii!D8d_. kzd"uKᐈMYc2g —37lPe ym Ć^~O>eID~(gyYf&pe ԕ H'*GJ]d%hku:y2$ cUQhw8rCR(X3=}/eCnXY|v`5˿~O&\/sveJ4oFdA -5#E5<}Z'GN5gLc4L\c ǹͦ'W@o ^otVhzoN+'!GNDU**>Y A!&__OC\,[C$3R3m9kf{%tg/yvYo ٗƌp_*yp(˿zj9c8Oo‚>"iycqaI"EBF gˣ1eoS#(m|c%oJBEM>nE1 [,2t?1rOcn?'->dڬQ]q6w#6 }ZG#-w&*??#/{{Tv8h Q:!3fen sFbҦ\q*3E)R5Mst)4Pi-MG,$5,,yyvܪ!FZ&6A_)Ȳƞڕףwuz49ඕ߰ou -("҃<5\N{vyc_x+~#D=ƿw-3JNFv >M#߁207׷Ҫ5_i!ٺZes#R(~01Zr)/NqmoHnW%*~0W!Y?eq{RD A=UM<ۼ]M>!+ ,7єzjoYaOؿ,kp"ǟ  r⟹"pB(F8Fb(%wB- m@&.ZC-u08rqeUg4yL2sqf*Ne[Ta8a-q8Ҵ|C.H)2O'hat-xqI:Y_Ez_zHйAN]@'X2)q#0 &r7'P*RuܻtT4BV !w8o?~ O\nx`5~_ (IP_ߖ@V{.\s5foǑk$Bv"h>h}vc)ZD4-yp{2C)q`BI!!~OgRnRfV{<52E otﮄ">R(mA+Gw0]z1FB;ֶT`Hm O6x ݱcR #ñV'nF(FxOMIPdy? CP7\T$~~ Tdã,S~eX27xyM $\ J*@ {KD|*G_cgqT97nT}C-Ul* =} %qz=blNp]/ů7eM-[Nyv$6mly ]LŧrU΀)  `r\kI2y5>xmpitmT?ð<OQߊ=!S$ٕQ_F!yk͛%Yal|%4zn' FM@NqW@4p1o,~={>/LSal|q4r ieNBNUHň_<uwfAf5;nQ5ʬ P9& A3rk-$,8^x?*Nk睺_w|BDa[ʉWDd~~;Z+ žKkWxEbTU2NJ6]w\;ѤB?Q] pa~>:/qJC''HӡDz? &Tv**'#gH\D92D|2L*#d_CR·@Z^{((o*bEnw,>&\v86Il\wD6m??ʮ.3DT|' WWxT$5aZ,N@vOh`)-d\]{tNMsoދ*I@AsˣsW Ͽc$櫾!v(Χ\cweE4<݌e-OfqJMox)EPڟ+1)(5?u,<M ss"m&8m-~b \m D4+%]w+t'{#p+'J2SPN*2qlNi "}a L$?}Tc:p'η(^s}DiEHI䖗4˃CjpBP52j$9¹"IReXkMUz*JW̖%CUzS[U ~B" 4OLa]C7#8oɽlp V`UNL'^ªj~y]zղ}'nƕ[wc<] ayqQvJ9xJm>gžU NeWe1{ox'y_p_RnNugku4B4^+Sdu;a:ϳ#u6FȡCSP^M5e do1N*RrSqN?<ŚZD-!Y8Zϕ;( K.dX&s.{?8kOٷSPX.}*u:|gvi{1hxY"кKAJ$P3rL/![Ѧ8i8JC5K^ljӾ=n.ήex=nfaUxYq?#_Nn0T&ӇIK@&bIFPa/9w!n[#Uʱ''/lu ˎ0 PJǬMm>:xJS_ #0?ɹ $m= [(";qXMƔXQy^>x,U|OusB,KO7;tZIyS#ɿu`Yku@H#VF[e',~\OPDy.sb1QH.-^s>p:Y/||n~ӺPC4f刭 ,Rk,EbPu?AwwoM7-"a`l1owO{yB=oIkWL:Tp:s EjWȣ抦RexmI|Iwq?Y䢛D~/ ;_")Q%jo ^So%v?] ,|o,$79~R^ӣPHbg7ަ-~`ܹ.9s%/prkJ0x&?6Ce/hg\ V6N(Qk(r>wq+ˌTF\Eh܁ ~}My/ĝ٣ĸ.c[uR7(n'u)ےbXr]FW6j;G >zK<\rQJ0;:ĨcH?AvaC`؀/O=Vl ၅XhzVj+٣$HFoXލC7dB u*M \(Dn\ґoXT6p܈y0*]lc<\G;>,eNwldjoŪ5kar] |nB>3W~:0?}>ЧV%'_ݸi(؊.,?ClZd_KrnԒ1_p6MgwJQR74)eAgY{~gl{b?Xnm'C8= OzݔΛXA#v 4 B:iqJ7@x*(d3J2%>\_PɶM _m}Gb]`Zp&I}R\*b"u$vsvC`ق3?fX"=q|pfavaPdi\b?egîNdEy>MP(w@@! #z$'KG*W_Ǻf G瞉 d]=9Y/9yǴ',h,x_rIo=)_Pb95_s)^RV?z>lY@DIAa}i  jh_%$*߷靼PަW{-VQbe4]l{f0:Wq8)N-'b|5Cz,X7oK4sps auTvu>c\ cH:Dn?:59"r|Gc\H'JTAZӐ(<g'GoYO}vU,c ̼!a+ek 7N5rYG}G"~,8$ lnڢJm<>StiVC$_L*j"4 fõC x3`_FWe GSєQƚٓHSϳa3hU>h^x5滓 뭔xt=k.ټ}c / 2CUaI{f<3ň;[B2Ms;`@?Ġr$8Vo[|7a}GC@ %~{fg2~Q^K UKꢒMwTcVQP!(?ߗi2H 9XcxyCzϣ6wh. S9lT,`Z|%B9Tzzn΃ּ`XV}=R\21Bh~,[V'b[ 7}* Gd=' sϒ_Y¦<<8Eu<鹖HO͸۱|UIG@ IV~`.Pq|-Ab6)1\sfsJ B20V, trGYp[6{ζ.WV |M#[&9}+td_q%R{Gx n`h CɯwZ:Y8/z|jbH\e0 3vkr}@=Ʀ3{>X.nĿ:p&f4e`ΈQp =99nxY0c]"22\Ngc(b6|{{){SW#->ۣqBo;. 1.EOz\u,tjMϳ~汜?_yfs tE^.mhqWxiebGlT>rbtjAf{d+`ҹ@2l9KiwlWAO]ꛔW  bpŒcI;y3-16b%\8Ρ~-h X)7zoFd,q!KFl?3ELyH?Iu7At2ĸ9w^r:V8&mA kb2@5^<mc%G$rj\b?Ӊf|)m .F~,a_/b7*v a[g]'Kӹ1 !_DYmuFxjy`S(ޙ6 ݥC:(чWVUHJY2$'ZgWߩۦ` et}uqeb؄'fn;78SR@:|^B^hL%?P{a7] Wȼi+htYO$̿>ds@2{, lK>ɫ%Jƭƕ?혦a;+qR a1xh'=E€\dD3~9FW0qdVCgD8^𹉫.q|1E6x d6a4&^(+oL;L.P}MMOM!a0tQ8ڭ:kƿl.^BbGN|܏)X!{Za~JwJ_IuΫl7qA-jm6v?&QQ[6{]QOq㗄,l5{@iA 5^BG m9(҃j< gCɀPh7S9"шX [Pp7o(9o>8|C<o%Q"yU$\>^,S~: uvt闶zk2WSuZj >"xyI|L .V(Guʹ]IN4a <_?׌kJIoxO=A#U[ət!<4JnNW0L,eywcP"lw`!)Nzx[0^u$e}ȺC\hmơq'NL@ >ug;xg,R )Z@H7˙@BF4?.᧩"@w :O6Rٓ|QN:3MoƯY1嗿  SՌ<{z/~z(#lAYǸPڀ0ǝ;n]'o; k3UPlaI:x(^w/6+| `u.J$3q2}ސWa4"{o^>.A)֎ e=7~E܀ep0{-Z4z󍟉|,nO W#Tbwkv"۷`z%7?'i-cӷ;YMzǜW?OPajNurN[%"PaC84 7םs}[ߢ=EKIEJR5q5T` KmdHB'ZnjTC}œ{9G2FMڕ~ήI@~޹^2jU)>865 w s*_gêp5R3I6Y1O7n#lQiX"QV}sG5ӹBL81yO^0D n.< Zf_2E\NQ*FA3|} +AgoIɞ *}9ŝ~gL0 in#̍a-8Zt ZQ # 5*>y<\`QGbP2.Qw`0QI!^?H6)%wǫI[]S+tӤ ARV53>[U$ {p l+G\BT#|s@(ũ >Xa"S^n?Ks+DWR4I.!0Ut@͇ʵ!m7O#Bɕ apQ79o;%YGCoG?:`B ۵AdzV7 ]^^_,iF>7?Kq֩4G@HCc{ӝ6W)fl(xPa_'dexEZL..ꥭ2V`f=Co7Ɩ} 3C5y8%0S ^A/G. :y::#Iq@ߍA~{ Puʡ\4oTg@yhysi|Ue]1Rqp)'ڠ6r79&邫99H7^U 6w4ZwM=y]5p+$ N :@XY']$[Qi. c kG쳗 Hy,)67,|%nA-H7hٹgE_?Y,}(+L)*[l/܎b' 4ᔴ_ Ǵ?䄣Shp]^iN"[Ȼd~y񽟬ݿw#ܴl=^OX!6_ u*\B2Mdݜ fuن8MeFIWMۖ` J|u;g'8%BVtrs}/ 6wgCi̺@V?;B~HY,HNFIo?x/ԗNjo;AQ!界v/Q2.Q=~~]跈?ݿ9:ʴWS!n-~&/|^RF~MV'|F<:@ƒg{x^x] os ")M.+=t+w/u7ͮLg֩Q D]Yi>o70X)Ԁ:h(HwMD((n-ҧ^JafPo[9xg߳Y $G#T%F`c-\ ,˽P2 = y^cj(w~Xpzȳ<~ F%/yBj,c$~FI<*eXm8ܽ3z$ywjB$?Gq"XԝfI K&|3䁭r=2՚?2!q>6nlw܋8@(?vuM`aH\~s_O~n槛?3qbФkPJ\6YÇB5u5Et@+(~e':Tvq?גWCa-hvjˎhkgͳ>yn= R0|.D]paL(qpV<32IʿJό8onyu,Ɩ %\#*zXpC-l3~ wuGt|ƫ}>`Y| G@E;nmt+3%"Q~/ qOZGpDifd|RF1vBdK]@?W礶؉М6 2z1T*\Iw- I\bxxe'm_$5fp7d B~`"9ͬ~#C!!Vu nU_W׷bތ3'}3NZ{|]y&0rLltGUg-]hjhrdYzpnKPd ⃟+otW#0ތ>@\grr*dēs,?q)oȧoxz\Km9+ky*lňƜυ 5Ѵ^(p[f{ˡ @';-~}OQW r[b4;μj/]d,=-M^?% sY_1|bcJe=!IM+AdDZ#pyGؗL{wA* TQ޳ѷf`fM){>7=,]EI8ۚϬH:?֖X|/%St @]cEYM~-" mVQ}Z舤K2|+]Fo~M#? )@` a=@j\& li803^O~"iNT|Y.nit@YX}I`ڃ(5̦E2t F 0Xqg5퀐;`e C>|ZQ8Ղ2 Qf2@E`=sꖂ׾?XOE?i've4^$!R\P%:fbf09@kfPNBb[HqHM |Sĵ9@O)A;<s=nesFw >{0M?ؿAGk]>J?FZ7v,\B\70j:QI*q o5ZxIe*ru*O矂evlpA.VҀyK֌&h|a\ 0^x͝6RϟFk*,q 40q->z#2<<8xg:`#+#{qD evk =1ZN+d.I9\G5?ܥ/؍cV2t_r#J f^t,Pb||írsW}2Vpxnb9ȟhQyyH%ڛr`,gއ!h*ԋPܢ`=7BOu0e#sl^٘7eq,f$4 !7qj4¹~r;EC{ԡ}΅P~Ϭ@k@|{|;|a§Ak3z%g^_d%}w[$ T&QU-ny.Λ'mw *_sT|AJ~f+ &!E)~1b Cd;?rs";vF$p(eyUu <b>3OǜʛgP(_<0d%>-t%@zL`!]C!,,3M~>!M}v̼>2H2Oؓ[)tMY } (6qJ09pC{]x,{6̬7х(ŋVOMF2R "tej ĕ#WMwfRtP^^xѼYe8~?CH]mֺj~53z뗈U8rIgcN:5%s Rf=бxT!^!Dd\6i^ʇn75bki%g(\G@lD}mL)X-&xФxj4 7: 7W 7c?|&i@`]ǬJ6[Lqz20ws1씲w}N/CA;\YJe AIUhl`I#[mrD8l2 Qopκu'j_x@@0 ˃.5REբZ{^jE6m.* q^މ ҅}G6,F<LN7hN-m\SP~tuByr6IfZO\ ˭߸g[f*n|=Y$E* *  ?@4 4 deflate * GxUPTREE/ * xy?椾|Mt} }IQ'KSv3 \it|14Q!if~0L㤊;FgF3xά9E o ''A9̲tw*I]?M5'_VY^pjOpen; Sg&\I_#pi{}5ys]_'%`f^ X$μ zG34oĩҳnǣ<ҋa:!(<|swtپrX2G8YޜZ_o$+ D9U}sREBbԼB`^) {^nn;7HJ%YΌ7dudP n2#\VRki]RK2ƶ{uuɨ{]"p'%W۽}E{PC~r"DkrYDӣFҖ7͹%a }Ba:m^E%: :6jS} y_^jPaI 4`4uJj7EٟXtNGO(^/,\L_'l+ԁ{_NQD|xዄj^@탋NS$>5鋍MdtSSC%p%:R zJņr)5}Պi(ap Fi˰@8~<Ŀ* dޢmtiTz~\pN_ ^eit߆OV>j?A}ߔ.<ʏv)?z^+0x>Sa|D9ZP뗺o^-_ˆi}J$fCA[2AH@dEz^~[~Îرm罤}$dX"xQss>y7xn޲ 2PR@DƟ[/J\(' #_?FXE7O,{ŏ0\~(|sc:8ɯߧl]L4aYk㪊*VVB!qص|d|%P"~ßٷu ^]:󄻿*]xJ_뤭}yaaiwCT~ϑ) ơ~ 736T imˣ.gU|@⬉nm}K<1q2N~flkMo+ywUErwp wr[inislR'q={MBq>/_DDs˭94`qO/x|mHjkFi8ݾ䢞 TM5;h7=/ Qd_]ZhdCVo`_a $tpm;77\we;znAJɧI@%8q,D|k-ofBlˬc:0zHj\YG=J`ZۀX`h.ЩÉ)T+ &^렔̙j\\g^14 G2.7߈e̡Ͷ(Q p-[׃G>ClE JyU^Owl@g͌ˮҺC 0Gu{(_w7 N,6e%]F(DV#7rDiK&gJD;Ҽ 7֊+ʀ7z_/8WՓ`y7 `&f3yq l? Tö\}3wG匊] QJҔD˽aŦC"6FYƀDI[ч7Q"~;,w^ ;mq243 @xh|HL5F鍐֟ԍ8nI{ i7?i[ u b`Kjxzg1aIpDZq"E8Hl{}aemK_4j:]rfM>0p@Zϝk?0f!Jy㷖tޅ2क.ϐ;43D K≃9|U슝*pGhp^j|v=w*HUN`ֶgOp{Ѷ ~ 'X<_^-o$ި30bܺ  +vגz!ڸ#wv^ ,7=b_{d=)Sχ qcCauR4 i&j:(?aWh{ OJQH$;?Fِ|}:^ ޼IxASJ2OcNt]ìq&>Z2&1#[![P tB-|ËVNVՍ=PȕZw8Bis~ŽG1 s0NLE ; 9D?L_ ծQq,.."Dːy'5Bc'*1h1|d%ܶxsc;.|׶5бo@OL;L:ps`_ b e2*g<'OkV'#ӅX҃VآO:Z+`k6C,plJ"WSN2IRH漢C,`sKHFީ$_WߵYQ~j;V*8=c{)pEV $nv? vVoop3N3,3e3]I+1; Hg'\n 7Zɫ|E9tfv|;A^8~I,/~~>"8>_5n7['q^ {)tS70%{!G"!<Ugbn~ xW镎Ϥd>o(epݭ;} 8vGŻ7,- ^@{׆(ӰxG/rԠa︅7:0jwI 0x1*/=?2X\Itϫ lK:>f}~l|,GLώ\߇1XK5&|:d<oZr߼kdΧIx,+z()*vtԑ*Joq^crR_*~IU>MGx)lʿ]( ΃4]aqFK(8&W n7-/e+ Γ (= ] n@UJ3z+Pސ|%3j7JQף2;,kh @Ku(TAg;~&]ъ_@f1K~RU{+PW D%_,e&~u2kңn4aG00Hq;&K+{bay.! v2`.;дocfƚCAGYY/3VaL9R *rB"%wokJ@_FD?9F$]aryUSբ(-w) Dp,hy*JFY^TUĸϑSq=a'¿g.+CϭPu3Ro*_\cXްeQ /Ί)yCz\q>/ѿ##ѤPg?<%XmkQ#Qv$Yαo#$jM&C7~.ي xg79E^Y> <bzR J*N峮7HvKхsy<Kl9[Ԫ rF;[Fuz_ <{tZyJdܪ dDyEOs~ id6wZ"B|Q"& ΅j*d)J~q(8~#nQX Mf;F^TAc#zdD켺Nn(u? Aeo6yG8:Q"vgYw ڄ7AAo))c}4 X-.SOKcNjWuxG}L+X3nP%]p\/H2ڄGAKed3>4jEc&2sR3?PuYl*_!n8C`#q}ɭA:vZ[ ASX+Կ66uʧpe y$'{HOehܰϾý+9n2 ߝmWmJ\GU@H 6YQu!4iqf\ށp.%iV_^qI$,bwxkJb ͟hYZL1+:Kz`#s9qb4'Qg]cF ; OCDIaz\҃uiٴغ*ePNoU[bkD4@j&c_bwnWNU2!|_<QۣBI_Oݨ~ DE_}H^ ;y{u $q4}@"8=xk8H,*[ST >/zd,|Y- hy^Q3tV ĖTYcXpdm*HN?Nmk-7J<^#_]7ٲ+ rz C}'$)^T}.1Dݩ[<)3rf'E ??8J9:_=9XcXyҏŜIrElHȺΕz}Z~c R D6iZ^jhs(na%(%"ʫh/7$haZA|yr B ^`9k<΀%ڮ()JTGwڤAƷFV8/'.2Y믩y2ax=uA c y<7q|Stqhx42Gu$txQO?Hg Հr3i`);G0#4=rYL97"ƣp"p(ǟIs`HrVnMOw|d lc=yeŌ'X[KM?#hl&ߓ[姒nG3#xbSY-M(VfKTf`9K?EOe_y^`'[o=0ckX1dW-賦Fq5ӹbPL/D餤HUEOy-C1Wط?Vq2,¼8un·#P^٫Um O,` `I&aUJĿ6;rn8ʳHo.O?o:`:sN)aˣ9׆yB?Cfؼ|\4@~SO0?^%Bk7Os<">ⶒ%M|aڪuayZ/m(3sÍ3Ajhmt 4j$٣Pέ|RN ?QQ.()gv_$(Zp@îSϳqAy2[=(&x"7|ai3;QrfKܖS-n\y_SW= Wz4У:V@mg2嫞fEI mZT7jEB#!b|n,esbJd13Zp9cǢ QdEx[:@E}1ld:tҒ 8|)kr<. ]qp捄WȌO5K}{E (klpp jr ,}PU2vv/ވZ 'wǎz`nT4b~Izv %>Bkֵfޟ rzvXC+O ^R%kf^5;c$$[Z\{.֐xBFJ/x?!A_A%,jg_.o|_;e)bBѿ7eŵB'`)In/:@L7 aG;OɃF&ٛ#8XcZZf m8%(}d)S̈́u)p$7w=JqHI.c:6_[oLD>5ƹ`Yqu^~a#vNnp˧(TtU Zᾞ6B͕cb'_Bdp tӒTGĮp}KKAM0Tr(|VyAs=4,Udw! |vhA 4э3) qhsS`:`kax5;H׽}‡/ 179hU(o~$EP&}6#=+4OX"ʮ[ad7pFZK %Y:V )J6d(kSDQ(;:sl#-~s>M%~OGHxDg8T퍛v(}rC61PKCӪzcEƎBBl4&YNsB4qx!Dƒ@uܥׂ>^́rO`O1_,dυ<ݐvB~_nﻰ20!(m 9Cam$_Rgl:ruNjM݉Ge32!q}e.u\ԇv i[ Vwà,Zt=D?hIVX,‡3^H_VQG!gӟȑ:b֒0_.c  LJd|WEF2@P@z[K<u6ԻF c̵gqкnܛ{(K74@\MDMΖxV(rn{ C>"ٖ͗ Sg}PJ"Jُ }7ayG;|[l(VzL|!zlز*`)ݟ(:aQr/5!K=iV󒸾|skBw椛=I;,,_Bw~)m\u4 h9Iԩ:剽<,pF좨r7AdCSswx4盰|SQ8\sr5Old;XݭXٻ^J;`_EKFj#ɢ?"6v )p U6ֆ$텨/A_̎/5ivp˾7]hgtWG3/ ̏| m%[/r*z"gFsB~ԋٌw'I?l-Wd}8`Ps3dIYWT>~n(o [:)1Y8啼 hnB!y3 ΎhѓżVY]ȟgUgjwD)(FXBt{>PVyI/K}!5UH#@~H~e+v#)R)Q+.ǔ=V~O̧J,J]͉4{Pn{#uKv)n&(LYS Sal(FTPަI*O]`zw"|®喠|eL90_py^^Jא#f߹ϞGkBc!0U3\30Pرbze}k?ptqp˝!^_c)f M5> _ Oc󙿵y{BP+Ed?GhF1g"WWM8]'<֡ K;4Gk\+'뇜^kt~ >oH]RQ߂.b??c3MSyGġ}IT}]ô" el-RdCֱP:tUA.٥2OٱfXPR(HGð@Ȟdvsm%p4 {^*㜜VہHY= ϩ$_;΍F f=/#ch$m1JbP^.5yj}&όGZ pݝ Ah@Ȅj#[D.m|uCSAP&%YYu$#hK'Z.o(EY~ =;^?Ƕ.`G^_G͜H(L e7cEicǷd0-1PȌ7]&$\jrKߚsd QGσ#b9'\qFNPwD{k۰+˟"֕P\yX)iY:Sʝ%AczVSސ{1YO1uJp߶zhItΡ-qZjo ©~ZEs_/g(٘@R0Y4Z:ZZC|[+%Nz^8W_'nl_e+Murr*G6ONN~Zº܅;C$JF@L͍_ďMOc]1՘FS&3#Lx=btt<5^ 7s>UZ&3<D1^[RrR >Ë֓7MA]ѲGDYrma[P\~vShX:OBs$\Pmpw?8Y+mS-EʛQ+ZUwKb̒5T~A6߭~Q":Fܔsz7uiUpv26R- tS# = rx@JGaJAV{C"߿Zzuִ"\|)*(V(bk3C;$jƒ@akx&Drce0nWBAa ʂ[_{CONɽ9~9(9! *d'sۉ@qʼmpz7=&.2>Q<YS(,-0-rx)S9OHG۩<>bەkeG~Ʉ Gk" ⾟KL heESaCYܾDy<7|>x%& k-w:wΆDi 54& D1OXذ8%b$g0 yQDI\e#/g s,5©MIK~u"JHkSuP)Ts*E'L(\gJEH<,~s >?/iUXČa-U^7!KE涸c-sO"O%[80?r#܏U|Q hNqy ~0=.cIE۽y,Uc#alHN xP|_C ZMi"ˬj?>.Kʈߖ%hmx}0gfC'îI{?RS(L[M8kO }zQ#) 96heB$>ѿ8u$ b6"O+<{ng!%yj|$v'm 9QHܺ*I#VYޙ w !0GtUu@gxKHw袵 7(*˶[ؾ_gU{c2 =clBtP"6;`'.ʾƴl3B_Q?I"8$Ǿl:AkX>U黓}"'^`fyIl_/o <1t*k+G*sS<dŃX~<'neb-b7D!qe<6:-nPPDS# \;ap}:Je57eI{Qf'%~?Ҽ̐,{u1ӠC>{tzbw<K)w!(pok0%{i:+O6lr~__tj SCoS{IܓGjbG`ۙ痈A7MMO͛B8+<` a.+fF/g#(^3 n%`XGe3)^hJ_ݶ"nb/V|$Mc)t% H߯4R I{EJbg[/􋔀vk$vt^(<`֢|p} -^bBx./1[j nUS` N]-y~,~2#⻮>RfǓӲ+2/9_/~ KTpf8v| rŲ!('.NIĀT(8I 8xE}fd]1-g7Q47Jfv??yw=P_oUۨ0}9>jQs!&}sJ^d\CiGlL撜j`,.HKfb?0dj֣J=>I}@Lq%x'ݗY']\߫ &kԅQ"'|W~q\:OL_B)j\}_ec58?58Sޒ.S yaH߶ vG35<. Co:+(/bBmBKσbW`APxO(NW?2#k#$ӭ{ GĮv-@y쮷l0ѽu¿ j/x`X^vN9^5,2@_ P0ȔueԷvEUئQūkm9SiDIM%ۋd!{1y\]+ PXU݅=&3aP ]BIyKz=Q掇c"vpSE[_* *  ?@4 4 deflateF * HxUPTREEO * xw VoǑ2*+Hee$HJH{l-!+$ВRTAI$/"ZzqG}=7?zus}q\dd35w%6N- ty2XII3(K+{=f'MIR92p}Ϡ*h>%P39-k'{lv\+foF$ l/خ,r&v7 XZfц7d$λzL #tCu>EY֏?Ƕ[ߡF ̎EJfKT%`hM4~3^!iE5rKnxS (Ѽ+_{L*nCEaX@n r1kaI2FIhBta ӲIY@@\n] VTЋ~㗉 `Ŀj#ޤA=_{/K||=|5㌵O{וЯ-V6A)eΐ(9[֖ߝ#/[AJ1f_=Ul"sM!J/ˑZL,3iMȆd!YkĿr-9XQʪ<]\CxapQ5Z;S!֌.z8^#bpWy'PYgXx\RU-qd] fDzc}(2MSÇK2ҟH{c+RիKuʑʼ(g~,`tMoR*uĸ/m_ ?,KKpBɵj𒹼24- &#yy9b+.QX7h3epk_7},G%i㒯+hHtu'}]r<7v$6L3M;r6HqF2GdguWh)uT{Rj@˶*ǪV\ 0YD3m%xyPf}B @geW] B$&1i&g,=r$#Y{R8AҟV ]5aAC'DGUO||{X=??Yf9`.O#N0B{CZD\rm6+"^r 5G+r>Z?ϕX66.I]W\ĉ$%%~kIoA {SCB/O+LG/5u8ɛjp4;8,HT+^GWqDRtda4# {*n9z1#gcSq/7mD|.mgֹ|(1sDL^87?<=R2MO3T]cƻ8ppɫȭY<۳x3TCoOg.LgFpA(p1E)?Ml&sq E7=0 hxySH Jn-؛7A~Fڀ}m9/`Kc#p/"NVDD`[M7_DKY`O`yEQǓLdz8 ~FoV(6"Qi_5h{Pw촘$Z!rDO.D!3@J7.~[A9!h Jl<5x()rk0B38,xS!5@t;9yBw.(S2!Dy?^VT%&駲ⴆZ6; jNToD=IitL~ n=Dhp6ѩLlamf3ǯ,2'rW۔ έ,،'`QC癳C1(?.)j|'h5 L| L Щq.Jģnrǻ\UNXa h; 60GA/EDMHXO2eؖ%In{[6=V a嵼(Y} %jbł[^Dkl<¯ryvDUXT4 &[EXg싩b;Ֆ락nCqۥζ/(OwCE;Ĕ:]/SLxRiY{V40i;y?ko%|rmw'ǜ@JZ`%^kڟtڳQVW)a[y!,rj3Q{!8No(> 6.~V)Din<=8iI_?ׇ9.'V>>K]Z.Hx;rn7.'~_듀gn,2qhG4Jh>oȔhf*z7L-1)3NF"2&PӹfQ$ԛzB0Bx-$_ w1{j/]jhH<kCVT#x5}Xf6Q~a]!9~W~$c \ `71yxds}dBYf[8Wάgd̓P"I|xk.rTG#@" Rwx@4 npFw KC E7S )RM.Bl|k){NH (FΨsRߚ[dPzs&/OlWLE8^m)ЮvL'Ox杤LpQy?)5,NΦF1"[ 'o'.:AD̩:-W uq}""L'=[@_lu ,laݻhL 0| )UM[@)RDNmZ&(@[s%^:tLv̜_Z{@q/%$R;+}eGSD~Ox4rPvz2oCYnuٛďU8$3_#CطT-Hb7IrWIO!Xn$l2eXnEH*X{<M|@o9ގ3kcg$O/dQ׷ϲa,|%찒'ݦb %o,I0Ej78?~XAfs=y:"[voHVTlf_;ys'>eڬ@pޛ`.gu$Ǝ+9A89].{/?֤Wq:ГFj]jiH8U9t+KԦuAs;gVݚT/ Wߥk ZOD|'Zi'k| Mnv _Ψ]ɍ|+>A8}1 ;Ǥ-5LR/+gO-=q>-ύ)~^4aU dj7,Q6dO`N~IJ?܉_Qp:e7J$ɽ}[~">,NmvC!d},pᣫ!ȫi>}FN N-LHSf sY(ÿ$)5HċzwQ"1IS.I⿣v F?6G9yHFvΨW6 ç>/|Yه~;xݵM# ˮ"C4s~od?z5![YOe/ܝuy%5Zc;fm[4"aꑻOLްd%#f}΍dov|%X MX!-&ptOn<%(_cmW4SI**N}ͅFx3\:2w~' EfC+Nn~9@\S~$iDv/Nezy"|Ӧ6'r[d^e Xb7\\gXS<~D"((,.|0s*>a1ܗSXćvJÒ{~UE:k ā+ G,:^8і$po>5 qeǣ}K64Ύׁcv]6v'Ԯ3z;`K*=x3Ql7BS 19^SW ܰ蒽Q ODDqr 򵪲2`LfڧvQvZ]%nߔICI|DqNGD11L=>ZD^՜j|6 ֠,<Ɩo}8֊@DȩF7@+e J>:l9ҙl+p%֎}cN$`r( Knxo\'@׸o=OT7p3 MO@7i7H8@zo2/gx|l&H\-ZLTyX֗laQrA\V T7K.O rDs.# ;q>ŪS_LywKG%:] u{L}6)6 xJ#sCz_Y"Dי[LO%Q!ϩB3!㝻 vp~s)Ep^<إ`CG&u(3H/<"g8a PWJ_}꒭ˆ.72u*2RlZ_Oƀ-`Y.kugP&;8+SEݯ-$#)򜑮`>|:i/o܅. jxKl> źƿz9b6p]̍K Sq@?5=-Ne2+ ;!Vk vׄ`{u}y+RE7]?%)ၝz ZT-?3d+3,zɣp%3qxUJĮ_[6SSE"-7/ ~ _xCҌĈ\=(5>4 RS-atъlVtqJߩE*pZΤC'_GD ѝrSGn_Q %y0q'[*8{+v?C]7зH/@jmsuTa괭6HK谏s Ip~wy"s슭8w=*G5 E(f [:kʆtg#DQ97YqR QV6>h[ {P~luBk<2}dU#r}u(sh>G+d 8Xt:\BI񊛴bW_* *  ?@4 4 deflatep * HxUPSNODx E Hm TREE0x * xycԏ+v-Iv[*o)#zwE%^9u?ĶsI QSM0CtN VI Jc~I" ڇJvvejdo0^bg+V{fƑz!cuDЉYL,8)Vz"h7+v Fqz9_k'# !lT Vumu"Qv<ջW8Ծ$UgUx9?:8u:^#ׄnBlSn󨂛aIu^"4g +v=_9' g HG%;H 0$C]ˬpPb'H*٣8^?i]2=nt6([c\:2ȹ-aSwYJuxx*TH8'3G-Sݷ=q_pd` RM8m~$^r8>͙6'Sбd o0鷡܊3^SY?^ɏ*;H1dc$+#^.(a*U? a*w9.Z #Q#f^/2SyEGnD65d>.8/ӻWWϭ8q[LN-97r\ف~v4?iɘ+ n~{xtK66^%`W.?αX QF$IsQHJ{^b贐R33Y2 tXN>"=瘒/9. D덉g!>}^|h{ZSWgCF<v>W@=V, g6;2i+/^ه"%_rfr1K$9P3jmţ>=}ؘ/keѾd?gi%"L$h'ߋPʲ/ y'8wBTv-Zb[Gj>28(GFG>xHLu/xb9`o^XɚAiKE#J38:{o.H[H|{.ìOuo5gVj׃"ɠUR&&;$Q$|:1`$)ٞCCvW' ȋ 6U{cἬt*9j2`#p2N/-m*%k s<Ŋ>W?]st4I@O@pxf"q\JR,2,'x˵+ b6Ϥ=HR ae(qy>R_ZkIT |Ԧ%@ 4'Nɧ#$\va :%lѯֵxϲr\ttbY!խ)&,EK tG͞I* k׽Wqw|R4?jSeni6ڛY;KsGa;a8@eXI+]yI<C/(l}R3~\ 8xepYcA:U6#bG}Gߞ},"uV.|~ ğO\0E/H0]uA9<,"WRAca^ Aj;@@-/n}N>+ȭjH!%zNjo@h'ICRwQ$nZpv_^D#uUԛXS|k頵pE +t+c!LjQlLD0d$,ޱ,)) '3 ?V>u0b'UBcQ|+toS"G3̤Qsbb==E^oGҴDsbJ_5;BtF Po0 zwlv/4#¾͜#zi4pwZY=4!G쟱,& ligZt7鮳܇ҥAuFH5<:ȴx"RP7fs!EY1 X{r_8zN6@WI(g+[W+5(KlyN'De +d)>os̄6N<84zۮ;̧7?.UKETLB-|%pӀÝ0?gmڀ/+ΎWVq;#!P,uIu2 @6) Ck4^2[ƸsafϯĹ/;OK@#Ԫ.dX Vфk*BG@'X8?~>h&#;.8iHFʩ#^o+C3:`k};cM-nELRvgל$>0tlMM4Qgy24 n»C!l׉VĜt"lddRgs vJ5~8Ǩy<#ElaE^$i,"rǵDZjV{P#sLw%8YəW5(3O1X7ws.YOAAWFȚqMqGg^5}]WsަB~\4 $@XPnU&Ih#zpB8iAn3MRBGj^'S˧52!!aq9aIDfd0.Ke)@m^p3ٍr&Ϛ감4j^¶%3W"WʺpETB%9eusWAYP`2tW!k@ԟNP.7>ڌ MJ(`]IAˁ sOO\Y=I Wq=V_ '/}h,<mǒE'V)^/RKaHmoc&W;dū=߳?*ϝB̟~zylw6L=cl:k'?;wE|Vy?5,kWdgk8LN,dZdw;;Z]c})`y>2v5sp'w;ql|~NU]{XA|}yJ|a>ES{]e;GOM ^h 6e3DQRrͶO87wp;{!`Or3:Q9JU}^u' LH"%RoJKrz(+[~6!ɲPQ%t~xTݴ/Q9?i7xsi@Hfځr+A^K*òoo44MtJ`'`~=6[WODe6#Dl/K9g IT ѺQYΤm{ψ 43_h wv)5ͫFaٸLevdriwD~)uKJXOG'xߥ{9f=3!bfel%c>ҼlYm>FW#\R!qn#xoa G v-'ǯ*5&q`,}&|8F򶌋(IцzK"W'Q`ա" Gٝ}n'Afbۯ+ !gl(X mCفnl[`}R>KD]ãf8H>׳Ә49+=EF6HN Qƣ`Y< JǙm> "Qa4(vNJn1>uLx.Ƽql]˸B?;Jl=O"&ʄ5?%8CJc3a&"}nZw{a%ROKݒVT)%X+XZV`]3КTs2ZY&{pW K:oڔf:{x^'&ⵛNj7V뙡<0~JEpiC9^qϫ'[\c6lEGTPJ0x>XΔrm_ 4YKqGR\n&_NCǥѿmY4unG'}6Wh6 SֶO/*]I'){䯔<>[elEJ yR^8or/K pZgBN7MFO|DvԤ= 7<'V3!z>5_BRT[Ău ߟ\ |dz|n wz ȵ]<h;}"bԴs0+ SBƉF Ց{j`䍓ӦV]GŽtҎzf(ΏuﮖAӼ^8J :K-2 RDY͵1 U?$9߾~?wSE׏NWCj(Uy> ShBrS#xc6ÞDUHI>'S`;ʏ[Ig::x QX-qJ* (.?RZEP2.FL@JRkA4* *  ?@4 4 deflateE * HxUPTREEu * xyRiL*P! QO 1l4G t}t4Ud0Y$v'2<(&VoL06"yC9q8Ҽ2{=r}?Dz}aSfq'qX>d[>y8e-?縓-x'/\nB9? Ng{Kfi(ݎ FT^({{jufrR1  +J"^xӦPӅ==ޡ$ռfQ,3EwCiUYiYlE@(e%1Ib`< OB qjNL9<۝$|lZ;LJ<‹BٱƧ"IEAu\I\(6%|uT+F$ t9W[nj&}@#3t ڮdq7ڲ98 WcdMqOY1PhS&OCDJIYc\oȎk?T?j?},i.%eMr=o=X c b;(HL23t=^-xٞRf†?T&i/UId=y#vKRhB`5WS'|"Fwِ31%pc SkЮnٔEn#ʹ3zV$l8!E moֶF_æ)__k!RMH? ms$C|⇮D[qS,>i/ QYF^*A`cY"z;H6Ҹ9{FqP`,AŸ^ `NDPa9?$ [%(~,- clz~jgq}!eTL7[%.mKfdGIljd!.Jģ΢A/sq;1 G[=LMg&>Rݳ⹭O Y(I>r@.j*z)o߹'KoeItYI.Ne'rۭ2~=#$/Ώf` A Xe !XMk!YYޣ-NBe}gB.Xpx9s_ߴBT;F IP}y^@;/&~3CRKFOBįI᤯`~(?dօϗg:9Pڧ_ʱ+ ncjWmv"IaEZiQHˉ4}_*9D-Df-"`J6};~9V w*|!21*JCK*2g5K_۲,0(<('/(,Pz&u}C'@.|`rb.AcAw0ǡk6,V8mp?X~À$np*66⏺jo ~ASk@dff(Ϟ̋2 [@zȈqحM=DTa4z"zIy 8ܭt.%RwW:ӋSi1׿&CΏoƪYx%/ƀP4x=zWYUdC|hSv>G/xBگ\k}TFC5tCcU "|`\&j;+ɵS{.j g/@RMZ Ju:"$;l.[IK{3LM7:.{ݰ[/9Ϋ937ppuU"X# W㚓c_0a&qAُu B_>1m&pƳ./Juhz[}&'ujwۡBL8Hȟ4Cq?Կmp}>zHRza<9?UJdt) >o״J/p|IЪIL$ґ Y_P`>0TA~ÝjF}wHfUBͿipC44n* 8!J"s}=%uԨ(l:P )x5vF |r)S%~.տWjJxF1BgF` TNr(o r:s\t~d'_o@$ 2/$J˨os!yϩj&Gw`rQE=Q ѼY -O;BɲA#+ ƯtZr饊 Gu`gHV Jzt>1PQ*Z]@}zj" 4ws& 4gݜk};>_\J|ymPM q?MνS}(MhngHa(AMH~@HOdsA*?E i.݃[} HiP9n qdjz# X)qP/\I\}bX2u SH7S}b:WAhh\Q$LiXl:b>Ն—I f&i>S[U,[m C m !D!no8.+DwXW}0xNjJhz٪"Y̨b ").bZGHn|w)d<~%ZdΩݼsK_{ɉYHյ,hdsPII϶RL@c!xa.,ff nO\gdȶ:cID^=şb=3gP5< - Kۢ[3;E2!E {A~˘Yq7?U_9rTgwͮ)?2frREzg^>BS<,E3 rwu^yC{"_bL7ç. Zo]Q@V*/QRZ@3t63eϕ>W 鷝Gy%$_?S8,&yfX'h6I}D*}+{]ɔca~GS`}>۝*(R\I.WdfP"V$ l5p ؈Wfsc- d^Hz3q_'J8rv &ȿD9U%oBԋuL-42oGSV4L34=nלk@݅Θ`Mp[K#/}K8Olu<|Q{6,j۶]\&lpk=~@z9&eմ~P;Cz<9G;]1{ ľz HzNCZh'J/lLi- T??caּp@T SPZ.Gi.=O7;m$y\T@EX D9\P:{v7&YllƹPbG$,$&/WGVJK=Ȗo a$  a[[\,rG88f-6?I>.}MpN7펟1 kT24Vc0ňP:-vqMX#nM~;wQx3%Ή6@~MicA"_eg9 UTGvxÉ MKUICTɘ;?$'ʴL"mH<!U]5B6Sx=/J6Bz sjI?A=/`=ݝa1`,sBsg5v%NdY!Wov|>GxƩ$Xh?j8S B͂>o?ɵ 4&3qzM2dί>Sy4<1)W9Js%˯N}"ÿ}x' >Tk 7>;v&p dꍓHx?C(pNcɀН fp|I"`yC(uhz'If)߹[x,D#Lq}Õ!{uLSQ9f#b0ɫטg2Tsp: wVD&qjc=rY+r 1wL:]!0᳙JI^C)5.ۜxֈ9[Z)%uPb햤8|}ǬZG5tJ`xẆBXBDX0BbHwEZ&C5B뮲bu8_IBl*|ό mz<ỘH! }=wm$4pbRCQ-K{,32o`q}6"=tzYTMl\6_W#Va 3}k@)XxmY8M}^Y+LTF(U@ۖQD,D3M/f|9}obbWHy:D+J&O\>%oWx`7,t>CgW`N)o-;zsz.=7QQZv"+;uՀ2zXƮ>6g@5 ʰ5 8P6nQ !OwV$>w%ެc==&xH~d Y!P 5D כ <:̩Jp;M i̫TE蝀h{=l~ /|q:?"2%bP:v5q<>@YuJS1G3ssعgV*&܋0lo; jHTwe5=:M[C=J xHxnQ_5?gl|RL2 3,]QA]FVp#P.H.wDKWdAg;~iZ,? G猗t{^X職(fzП:3oTDp· zz+[jKw*iiWdH A ~:lp0/Z 1XZ'7E8'u))`/ OeB)խ+GutT96 tRN ?GicTya!:efpZMS#CW&o%%5ox۩ۓ)Q4D3vKTe:5w~ *3Zmͪ}]ƭ^t)ث~%u%s; 7^Q,u2Xa/|# =^W!#k~#݄CS݄,yy>p.f(tߒ1"IU^V#h?gjrU%.W!<̨}wjf\J;2i@Pia$rͪᏂ99WN=xK{CpuzG=-zD~B1~sacwKȌPK%-HWm9(\^~1QGCyzUdOBl)oxˠ"8zZ-y) (]my?)DΔ 660OiCz , w#KfU!`qZ'>;_|  A98Bf *N:["Q?B vk Pފm.`G/w8XOY߈ݓ▥ ţP[L~. UdQ-;>W.Z*= C|%KDLwC M\(h,t4ReJ- N(uwy;nVo>`K: s:vPtD,q8!VhŸ*ˇza)k8"o@hWGkk+HǽqqLU*ܑk>З2kG^}cn+ѽxv/6IXe'}an'<coݾdX[q +1T;ge4BBP7\@Rz(^]fy d[x }o ([L|G)% hL͵fΙcA}S`$\]6QMQuA)/SlXPOzIpퟯ{^bxcsT=Ձ{Ғ!^O~H9:^D_e5LDmuRL體 9A 3^Gp훩'1g1_[C֩y9q% >OP%^[[`H֟ꡬCJwp=iBUn(t=<#/o_$rC90z螪&#Tء&qzQQ,gCzJbh5T ڊC!ҿgסǶsG%'waA0YMF6T]Zr4g*jQbo8D\2-{t+5_xZG5ÃP<Ƒ}߯l2,YM:w4$᪁eL ;3![$%IqQiZU+i %JR@]74>{6W$ǍGBYzgVm&W]4\m`aG ÿwڴ}.Bn]1M*c4vEVJV_6$hx.e] Kr"%՗ek|DOH>o&EcrE~%kݣRbt$v^8"bcߵB ̗sB+N|m|eWޢֳ̇Е|ڭHئvϊ0ѐ;. IG%꬟];$X;WӆHT@Y9_}գۆhB"v T. Ԝқ !*$:^" rwmFk֌'+ ZƖ{.r/L.0drkMF;e1e@?G!|8a`ٜk+4=ȣtUqK*(%prsRHɪ_P}V}˄RU/Ȫ?UG&nx9>]C D7? $::#mקaC/Py:}Q̒&CNy.zdSs^ EW9jxJ&sE?Uχ 7x|٘FiKP޾2yHY/3qBk' i* rVD,/@o /n'+,ؖ{$NPP=KڅDBgP>r3H!#%qh]1(Xz?+;ߛm}q-TYcu2 F3sgv\EqC,WByzDDQ|bìcZ'_(I*BN -IaD9qP"lpѥ,,$ ֮: X1ok{~c۬_ MϵW]w}WL8=2َa:1|{qAp+<4B҂[ !)` ڝ<Ô"wV7us? IA}0m=ď{S#sR_fN<@6`q׮-ܵZ2WQ@T_7kŁ`l/9_(s-Hw tQr~l~>s5I. oyHɅX,.C||-Ss@8Dzߞ tOՌZe%=<ψ'=8B DoEŘȸ_m>_ vOuO9ԖВ{ q-BJ9A0.wTD;o_]yGfT ʃy''?0޸-%EFnZDZ0'T(VфC斈-$OźB$]{C DX,!o`z"] t{i1Uxp'FO¾&3/rYxО5``>ϟHuv`Q^m Xb\Ty>0,{0h0Yd^ [$/֋1\(Z~~bu빫LަB1s8xvٞ._얂u)q E[L/\̏t5IZ;>Az_>ܠ˭2t/M˦:5X Wd0AJ`X1jF3,!BDod":\>|r&(FV0sg̯ʟwf- |?hK1/qOu6E_`6͟ЛzjĆ\ <=}Ѥ>@Fbu_¯R`YZm"z%^x{_/9r_YlsP?Ha|㘢yghy\)w"(ŋ ;H)_<7 X}kwsgm@Kr$5,:7S`S!Ӳ߆/ɽէ9Z޾ظ¯4/< ˿՞ՆFCddã%ԫIp󰸾8{q'B:8,AAyhUƖ裼0fyvC~yӤ iET>xyg%"eDクNsa=BDy{ Ev!Z/LWlf~g<{ d@?~=B3 uVmfX0'l2y|*'gRܝ~ &$8aH99p6_?sN"x,cGbήYA;E3n Xzmwmz{7]l+̼^ypVuE^-9uOքSQ.S6U+)DgsW,6p[+ʻϡnFJW.%x"闙NMOϵ0R~+OA 6hmQP}yYEʯ:H/Ekis2^z:d=Kj귡VƱU |g1L^AS=sKUn*yR"J.()6˘pdJ||xᜒcmn`a̸g1(er!!bk-  > C}`.Q0i-_|>ҩ1pb,IkPM$…~DM-PFFV$o$BSGӊpx][fiHO01<ʻ^|. sB-~1N}#&:HQv:qݣ{QndAC>5J}~L%OJ+A# eaـ@xiy~Z!0\|i68%瘺Nej& xPXTÖMO%* *  ?@4 4 deflate * IxUPTREEGJ * x }?kyΚ62O(x&۳5uF-qpG)pQc~D׍41Dίh*fw}"h<֬%+WtWmϊd<39/rt7VV5 OAӃG~Y_~::DEa`ȡ:iZ 泴By!Wh9 MM5ƔGbNy$w W`3ߤÜ" K vJ0sߎ}:p;p.1hF.X} a\0]+eGH}Ae*VveKO>pib0~K@[oRXO0ZvzΞk0"8k-~!Y kJ3F\}+%-.Xuu7"&1_;LtZegI:terZl4lűz_'qtBtb@FB,CqW܀JM(}!P;~{3li.T[1Mb)+>;8HD@nX e 5u[|z5()''K 0<v}V&O8!ʖ?yuغ(puk)<.RϿ+nI`t$ Dس&Wd‹0M4dzb0R>^dy/]vmY$ 7(T%jWy.4_\=Iޏ"sV &3@2/y(G%R*zNz}vBt$ÏM QDŪia)η &↠!L7`iU-lځ֣FjXZRdWy8+{BLsgk퉮gV<@5M9Z[ cGD4=EcDzK#萨zT1dxhj NM΍w$4Iga!º ͮwj$C|6T{w[P+|/Wtr>=!NBrI9 ;z)C%}bMZ/j>̥%?;=Gy~{7:ڕ4˳!I3Y.oN8Q|ji=ejezK%wåRtȩ8{z^ ap.D 묈VB5e,9-K'0oekÖ MnbNKڂ^;_40L oE(ҧ.WdDm!w]S 0lE $gƌk{[1yiXA;`QjR`^/kla lZOu Uט+G(73 wBu䤿>I^?j ,s,nw%%bydyMTN1ׂv5;lKD!iF oDW0Sk*꼛jY}n6 ^$^OqU=3~W%&y g"\L}׹.;}p7R4/*ke]>""]u OBlP@yAJn~D^S$'Y,Todd"^#Smʢ6HuڜRKuiϙ?<6VeY"&m|*nr<۵L`WA[2Mz4jnu*>ZMc{_ɪmA)'Iv߇`,=5KH'HRF$# Ru߻L&esqr Jษ7c^+b XSeB$[D(EnbBp*)W\G Gv;k'fyB_* I)ԮShQo?Ga_{4^]'ˈڣ]"\}s"bFnzv? *_H]b_ wBc\VDqZU+]QK -w Q!*<8cRPBڂ'ɝ>o̥nelV&dzx/ʴŋB>CP:Z~:NPn}ؐ呍\Ysy(%K)rMւSJJqZ]cQEY ͖9 z"6f-+ F /1Q*){z%'@WUQt$$AdWo ns{ሩas$s2.HxU疍rr)aG+&+.X E$lޟ! :օF"伋,jd|7$=}2ͻ|r0x_)>5 j}Q~wƛC-gG.ChxOŠQ@>!|du#"bT^ݏ9g`Sߜ5T^oe[o ͷ?}^WwO ~B642DQl?%>#)έo}c Gv&62WVSþ{O׍Á3 X1>4_+BfeS2i<,},}cxlMbW.vi6\d`(=\;[.K{qWfv]Is Z:TCvQBvjO x' w6#B7*iF@cyvPo$:SA8GC[=\&) 3LU3Hڥ00\( K'H-Wv{wtwȃdy۸eT EykiS3 /J?B6 XbΈߜ< >I|90UyS,(ƌ|m GvүKmKHasusAٶH`lm(|tL)ߴ>JF)hԆ/%k/=`TΔ,FFßEدf>{7k%R!%᧷б87OYlMfl箟Ij+p;'M%Q %R2B7*'Oߤu1M|;C!o?A?h~qƄ[퍁!V%(~rywq"C8 >P%e sqO'?\{k>п\#@on7lt4T`pn</M"6{R+c;] 6FL]%lRxVzy |}z-y$ -y*(pR{l <@{W*c7B$ObkihiDm,pnfaOja7%!D+ˑ"Q~a(cFbǕ~:Zh@"5*?%>Aq;*jDCk峕0?o$ɟ Ud_U~OB$YhoI3[g{|ƷALO+%849slc]˵4Zd?);~x4vt!;}Xb(V{?["cx+,\kq>ԃx H={lOFU]v׎'M~VqY~$ߗI$)~.L${^E~9 VzK&9Av* +g5,?_JĠ(1~fBW|+a3s}W]ޖX:ETn&DygC, Ė|1m̕͜?H[kg)~w4=.ֳ4F?>}յ܂z\;|9t;Sc/v"ܯ :>i- J?2 %|O9R '=׈6B,hUdaBm.(~L}SL5v!UL3^u%6XM:Sv|W_xX BjVuo[{?q2E2%D9БQ\mZ!TnDtcboR?iIG3lz"8B,sq~F ξ9?̇!FmsDrcZUDCAQ,?UfÅj׫yE12Tx yYHNj8ύ]X{\7仂; 4G'.&;m :m(2Ieht)WXqt఼yaicng=(IgBt+`9#'6ox ה{pqsx%"Wn7E(!D ߟorN J`)˼[Tc-AjtMpv4UNV:QD|I?X㕞FؿհwOx?+_ F k7v]ulq-X! +C)UՅ Idd i,Y*J:D֏>|*_ =a} -KMx뭤öm/nz#a]f#33B0*L#4VkOuv*oz WWfXN%' ܑ9aRo Y{Soh*ˀ"ݾ(N;T얪ǣTg\X1Dn">'t" rO!a>Մ[{*+Zh d4a e̓=:ߚ3B;^ o%ڦeRF~r>I.4w<8R'2DBbz!mtmFϕ^_I'iNҳb*{ye]D-6 vs5seeD|cotpzq!Gp&8 ߪi($woN+7XS#w-;/pN-{&A⺿ De \gD DMdtyt݋gzO}YE4ʨ7ǢU O4 { E.wʢKMZmdk: G5*lOj=]P;}CGrp]9-Frf84tp00.\D8r|p\\(5mGFwޚ/Y%۟^LLB{+q(73T2rGiȑpg":4SmI=?\E^o`* *  ?@4 4 deflate* IxUPSNOD5   TREE* xyȡI[;wse?=-3Լoz׋33N!8}^^ȃaE3Fn I9]=ɒaO K϶XyhW i#cy(j~`Ô32ַC04di;؉'Dys؈tnۦLDoՂˉ|q6LzBA/o}ϐb-q8\ʀ"GLˆ|ÃK7+ce,̅5shZ\(N@:~H5D{T k5ebi|;OU貎 z(/JҼmRWʱoye;#d̗<:mWuw8`mB_LUM^}"A &'Nzӱ}UH&͡|~^߈0:}<٤utę^RކeȹزCӵ|_(k=&%߽Z(Xt^%Rm.nn^cDI?YԜAXx22ŕGv; 5>۰~Fn%p0=6'>{dFF"7r[q$4<'reީbZHQQ[siutU| w/ bR]Qۮ Ka$uoJXy0_mkٿ>rH[ :+q׫p-21qŒJЎVe[=iJɋìDA7[r SN3߃˜0JZQ )dZ #G8;z3c"IXOjYy܇`kQ98 .ps,Xt-fDŽytwؗ mĨQ[6p!7F1bpT*D|=Z䴺]=K+.w[+9;AAy1yE :mgׄ~[ى)crb쓛z <_Y5RhyMB#,7b0tpY}ˋeC6Lʋo4M戺 jZ+[Cx}VZ>#3[H8- "אe{@M ߍ#` 5" MQ5ݗBQz@a};ݲ}jkvM9H>D_Z8YP/NC@]'"ܕDHQP# E9rqQ߶z_/f'ژPo~\ϕ:19K (xT>T>mY2_!(w<ȕe<(0CN֫u&u&ܙTl }d&^~h:+z5o!M %/ n5SCM^JD<(E#dϴGRDUEm^Iv&<3-SsZӰnMuw|9\.d6X*d0G_^G#RFl18oIz.p*41l?ħ }S0eN,HKy(4+>t-f2rJI woJWb&?; (o)koޑD5rgΙ)XD>o:e񖀈gi{bQ~,?Sʎ)r+.k{fn8!rQF싈Y1jQ#JUDa,8'w;HbRvC/ڥ1ci#KB2hET$PWEԩf0*.rmѣTmÇa2_ˢdܰ=*QQUsL]~($u d~} 篬KȻ <.Q 6ZVAۣ45jX)\]K}j&dYw_nGB&p5i%mڃ1G%45s|@D] [fڍ8yYS0z\ NEɸ‹z<8@3ֿZ+8HxT0pҫ څcU~Ha05~4Bl[TqʀW,$98QXi$J-O 9D#u4zq|"3T _$-J\ka 1ͶdǰI,j7x/;9 sfO6LzKB$ւ (_`yɵd>~7'O3.QŰù5=BaD xٓL+n&-tօC]@U]24QC|%[ԩk\Wr]|U>g%1!`۬eXcVﶍ GJ}U"BJ4ɑ8ƑB\;o6Ňf%u3Ӵe]kϘw34?Z4',UT * mF##b=ͼ{'F=Uc?ygf+J C_E.OʕKb]0>b? ]KXN­Ra4 k2hV˪_a)Ip+*os6.}mx2*WxI@i`4hV7yxcWd[ #v1q@P>M^߭e\I_s90Av*s5PgP=7~*Ljf H|N ?t9 a}\!ձQ{^u6!nr(y$Rx,MTه: vVJ<i$L< @LDh 4_eƿc 0_Z4j9l&x) < NdOPCgں}1P%$zJ¹x5jMg2Up2z}{;GJμ/珌} xlY>;yAsx ,"7$􃏔 {!gȜ`aG4A&~}w":dݠ"niF|zՋMpnt>@i< Tsg+6߹UeanuyӞLzrª/󣢵תqPypbL:A<7}92z^9-6E|*I;Yʃy1~K 诿a񹞉qux+5`da2D*d_5 CnP!_]I}@FVTuG@gk(\|+OZ7fp)u^jo%>}3AvGf 5و'||K >,z9fi!l nU(] )FQ-lwgx,gD[=dݸn<Ҵnwe}IO@n z;F.u7%`Oa]79Յ\MLI?S#nu\Iu9I.Py̘#Wf^V xZpᨾPP '_\`yg.dl1}%PvH>#{::&/0tŊ@BMcv80H wC)?9Q`Fdkvcsg'쬦ßI}wZ{>ήvwj=^i:h?Ȏ#Ny31]R'=_ ҵ^&y<Ȕ/_HgU,O`v.A>}/Q6lNN݉V %Acn>~ǩ Eg=G3ީA?|0ܗX&> C]g*5]oY땈h}u8#6ʪAr/0;qc+8mS%X*UhM-?&_&;&$Y(ˌ08++$ nÎR̓#).x#pbxz_<,hy`0rj 2dJE1g_OGk33֛mmw˝ګ0n8a8x]0y?nA-nroEjk'rzȸ3p_ߞU'G lJ|5qL>5_*Y j:"l_!;Q-9|b?fo㏶tQ'÷55 Qs2PN{hHJ6l/ pɁe83`V{n0Vt iÈn|W2^k}lmF~0ߙ4IF!-yh4G|+n3r.$k1/wvTL"()?U"(%(4zY|)cr8"ay"2_ijs]֑"Ūnua_l^VșHdh9*ʃ㑚gf zAL[YE/ ~b?"j^ͽf$0RlQN%;nJV 'ꆄQޢ2QP h+, []9=1ٳ=0Yc )MZs =Pt;SUE}tCzpjYܲ$oy'4A[:#oYB2]nFP;*R5Ggh9+Ncukt1š\* *  ?@4 4 deflateC>* IxUPbs0bs1bs2bs3bs4bs5bs6bs7bs8bs9bs10bs11bs12bs13bs14bs15bs16bs17bs18bs19bs20bs21bs22bs23bs24bs25bs26bs27bs28bs29bs30bs31bs32bs33bs34bs35bs36bs37bs38bs39bs40bs41bs42bs43bs44bs45bs46bs47bs48bs49bs50bs51bs52bs53bs54bs55bs56bs57bs58bs59bs60bs61bs62bs63bs64bs65bs66bs67bs68bs69bs70bs71bs72bs73bs74bs75bs76bs77bs78bs79bs80bs81bs82bs83bs84bs85bs86bs87bs88bs89bs90bs91bs92bs93bs94bs95bs96bs97bs98bs99XTREEsF* x 2FQn`d# ^;'ip Q}Qz?i~"i6q8-{}0]\k?&FObzV,j1wBS~8E6PYÛ |6er&l &aNΉOO@7ʩZNq8i&' s׆1%E@#FV90l}$ I#vNx||O3–'R2ҀЖX0Qv5':$IXm\3M<rFB9wwUl*(p&\ϝwuuI<^$ps-(K*'^#.IވR]cwVb 뒩40[[\XfH`%ʯ"-.hee/hyiCA09OO`2CVOr깰Mal^,W 3M&VS'+=cEhzpS5!=" $DM ҵE"<\d7Yb^mU'Ih4hN gZʃ? G r,oB,zt Y{jB OW0e- ApfqH+lHp2ր6c/]~J-f>׳Ğ]a4FFf/UIW ]+\;Aл4x@`+>Lj!ƙ,=S"x}vٯ Xz;WY@"iűT>-8lL i=QUgkWd)4M3G%Y;_NU3߬]?+,}iWd(A *?ABapFz`(d_zRW;͇Iox1KL؍Ȟ?5JG9ʢ'|ޥ5w%*wV0k*լlF)/zQ-I=7i?=##ص[(BXZ'8;&\] ^6 qPI!}|K9N?#@ѶK~H94z2⅐8dT|g]J& tT };&[՟"/mN"\U4X31eL2`'>;< wq~ߵ@,u쟶G!S)mD*]+oDnyV:9hφ| )LO%^ag9HpY=-yx@' |i=lm`kI&h 5OqOD]MDyݤL5Aj˼Olmީ~:iQ;Out:4ۣ1kG`jkvW͊!wNnh>$h$#O,s&OuL+Z%׋3/j fX",vޞ pژ⮴mkO K>Q1)JHץ9AiZʍU"pcwR/=65H־rq96ly]iT\Uܿ{$E/!66Wŋpj~ì$WsG Dғ&gg`Ib!FR {tܪC;.?<w >^0T(;rfGTyN,6̭'-܎=q aLN'OoKqڤ:w\w-'EH0 |u+ w)pʎO %5VtZ+Q;E#n)qĜ90&?hx~W9B K|yk!$ sb}a:~I8twmXn<գkߡֽM~]M,,Lwzng<&ц5&p?B3Ooz^eLҨ($<:!JqKãH?ő0xu5 h}.L+D}?%6.8 :òj0Ţ()tWCשp1,c! {;qb2~NUM;pvuw~n!M"bBd5e+x9fB߫ PiPP1 W'pv:C&DZwlKa<6XԠ!@7߳8lIKۙr$o 8LN=s37qM0I1׻X.J;L:?%c ̃OC@D-m8,xuQj)Y7MlW ;43YV߸im1A4=?K"!R~(*<-MR-<!aCRO s=Wzqw.t8ڎ,o\W9eK^쬬ݾSԟ%p!xqkY\g`61Vf'*f:3qqR>~RdT˵nJFx)y=i3D4ϕBP?;CZ.Z߿fʟ"r9K—zDd 7x+C=O.HΦG^w,v LrAeU5gH$\[-)h wVG-*H8losߐsOIyf¼=4%N) vU,d3>y$DL`=}L}zZ5^OW|UT8Ċ]dEֿ%fU5&{UϛYB oiWIȖ"P?L6=m? N^Oñ^K' ұŬO.!ߗˠ"*%2ma h~>ߑay |q3U/qo_ta0:C[{jy#@C3S&Ai'J iֽitQcl2`zsm.T:v J׾#S5>zpN},KB:غ+%G?/{n!ٽ_M`l[JNW8#c\{N4\ê@~EJyx%@3LX2ClڛQ.g]G?!5X&^i:8t(xd`,ʎ=}02MjXLz_rCgjvj= k7_39 qJxN{}#!Q\@]6z҄,zgO`[fy>No$T6SmXOF xÃf3z&{C0ʯ(YH{XWM bߏtg.\mgH>D d1TӇZyE@G|Y.t~?.s@ׇ q,çokPxzLZPS_VJO1y+|!4CdnsZwl ᱅-MpD誖-ayjj=`m8;%{k7V:Q!`њ_mQ$/fH3x{Lj!U2b ;u/N-~UvCx; 'T4P尕6$˗>|I ~Toڟ.AVfj:1@g4d#_G. VcR3Tere1˞t?>٫Ѻ)q3MXONzp;irԟlk`y]IURDN{*\aX [4}Hm4&J)`6"*R}D>ߊRlLm0Xl)>y/ʐFV&^;AFS}t‚.)%@gYx"m7ʬ%D%֎@yUikeogg(=yiwªR.fuNr!s H_i^xF՞ր*nzUic8Aϐٚ kۼ %9кĻ-jݻE(uwor$aƦ(g&>e޿vz}Dsʟ ,&pp0Ow۽v%Ndt% mas\Os? =UsjuCD2[r !zgi{fߴT}:nx=y6y&Q7@9Ai:0Q_ v<%X:U`p$yG&;r.*'t=O~ >c屏WiD/Gsh b\_w/`oo:Bˍ:Y1 gN~_DtqW?[e~g;o9XI\) 0b=r^~g ue)\}~B۶ah(?0:׃(X'2[<vsZ {3*u8rk$ pTßb`W0#x\{͇Odxn6r?@53 0ιa僠]hk۰}7p ' }—TREEum* xwܼj¤xis^~lVbN0sA3ŧ2p_sV_92VE;=R<*;-)% {EP%W&ejƼ9 c7mRNf3)Ͼ;(R{0 *S&K6{ieuh~t /?n nALގlZo=s!F X1yq?;p(&_q'jXH":[[yb3}pGdy[wO'vv%4窈~5tz vS䇚`cLzBBL=\_P?hw8_R ^1Zp#"?E]rB~Y+]-w\brmS$$1PIf1Y.97|g}Q o"Hҭ#V}+\.-yt=[d䅜UW:%Fp']H#=Wf.yat6΢mv("b(l1'YV SH\MPģ:7J%𸺾Zh'H|~ !G5e^v"2nٳ3y,p[9b76qilTh%?oD~JUf5tKfiSl4ez'y(ht] Yn_u&d*g-c5NDkU^Td[rxIFi;L z&68;*I1Cn!J׮;hD)-m!Hy?> pv" AwJz*߇%Kbq 㷏Cz*G ir$i0ʀ˛R}%R̽No1Bv:BB4Jn"N Ŋ)@-C^].Y3z7+կHjeVF %OGZ7Qи 0DK^HW1',_0| x*lL9Hb%F'6?]su^$&Vx|~NqZ~CCC)oP6Awwl? i03ơz 5RmɺG>PUMPp'ȕk[Bbk5/r`Rͦ."eִOl6!&_E*?t@׏*,p (ԕU$.j}mb^?H7=:W?c#q M#iږ<ȬwRev;.)d+Hè眕IL>1=|nq@m%F!e+ ]3Fm<.K#z棞g/f|tWRd`f$s `hs=P;+OkɗR7)$O)aաxCOfa,Tu!c$ 9jglaJt!sM+;ɗ]nz^}, eF{,/a9e ٷ$ Cd\-kl!w]:h4dɲJ:"e7Ç:f>%< ƫ¿JJPa(3`|.ɹ2ޏ?&5X]wM euk`>tXF mD<)77ɣh)">~GWBbOUtĽJ r@S3uQ"t~>HLWSV@՝' C/<.Hl(AReG`ofLwO5amuS)Gq@^{>~}} ^fM] 4` %,t,]xw«©9/\[?CR1!6Q( D2 ??Ih&D^z_a4.|;/ ɼJ[ҏ-*@r||ـf#,/gǝk]oJ)xVD@H'[BM/'_ƃ1TE9|wp(čx!Umw|Z]+C6lE]!vsCV_KeNRx"S01RqP=|X6}Z۫Ugӷ$+INON'E-s۝rxDOi)߭bhs;RQ~hp_ɛo㾿8 %i4T5h?5Rag\Y|Jir;@ɑ=65|4l 3L"iW}{?̵`"EcnI0t%Lpd4< %N05j GGցyP@tQ9ܯq_Xcg!;wm4dW{G̶"8c@džZ~Ӱ 1Ex뱀к!Ch0 L`l<Ґ)GOUhVI1F .Igʾ} 3,G @T뉱'0[jVor1_w??.6aXOr\"ey3A맀xL]L 㩫;ըCjnU0¤ 4rPth2uo"Շ}t#}YR#GWrOWBt!dSVt^s$TN7F9р_%eɔ^b4dy@vGn1R;ճa0G]|,`!ė_%_湚?q-&K[YA{89N%0]3n{켚A`i:KFuF_0?qr`^guA@o_'mуomqD ἭS8놤~}}YJͤ0Ot+\%j](6Q8\Vk\?߯=¾W~ۃWxǕqlu~ ?+z"m\8<ʝ!eǑqxJJjOPٚVPzw cǺBga$m֩ b2=5"E/?ZDe;t-ojgp{@+Fߵ y M7J;+<3'4OTCHoBŧ =w<7* .mI(dz?u}ROPMD2 ηk!P\Z9fI+[šlM3匃j?2e1qfӗaDd&>Qv2E`,՟v)T4bQ?G/G_GrN/P{GkGL"QRqI[oI/fj Л,~KHua2h61x̠7 _3= Pj=8/N\}~)ϐJE[&>1xJ$cr|vKvL ?ga+2GY{xfW TIo}lyJ=gr.x\ S#UKj(]ޭv\"6{k9"zfN,L";Ygׯk\ ve9{U-lߡ>wX@BJ__swDIpP6XAn_, ̏"Q@=|aKJg&ҹR4%1\/>m>XzY`tu}pG1r+`\`/)Y+Tz9Pvw=v)\)Le 9L@U({zP&n  Qg=#x⧼Yv4Oo0awqX2=%DuI1$3qÜ<|{Mf>mIJk6 > ͱ sCBk U `U~]h{L y-m N;l2V5(F#&|ɿ;'9JșP1tf,34P7?g6GVgP:*Y9F>9$c 6-J-2GBdjbc?!CwИ'~[/Ux.X+}Kϳ!rX@TdV&2W~(L2ܣa(߭?/GYM&CYg$\~Y]ae7#'BXQFȯDf3O>W3jSg<"4Z9c# B$B<*E)-ߛ< z3'Ȍ+ҍvr\^k#5gct>Q}͋ 4;6abڶZuPY`)iDL/4xIqc5:Py{Labyp%= %Gz`khi&5-f>BkFmxtTk`f]n/6#ӳnzz7%Z Er1c@\k2\i„+Y7/OjvZ"/|BXۥBnτ*6ax%Ly&w+kBaͺB#.PBfu$J\e{(:oG"t, *n.[_%*8V(&im]wCXE 紌od/~L).q,5FV-!S)=/~;/Y, {ђBy~gSlm޵7fٖA9㿫ԃEGU4Pvt*#fafuzvQ2wێ&?E3@iЊ?X1Xgs qxU=ͥRzx8SaE[-G)`>IICFcSz}9y5@hrF\: %b7&]|og91nd>fDw݈&O3$wʓMvyuQڹ?Ȑ;_J/7T_vZ`dOk ﴥt17#o܎Ya$F&'G%$[L>SCEep{gES:Re01g֧y wڍ{ wV ˮBnx(*j2~ww, 7?33O4~mDĀ4>A3ZOǮ =x[dÉCta'ReYd|P5h9d YR@(Cu`k8ݢaOF0~ "L/xz.ߏ2kO0Ǣc@kd5 Ԑ.ap-0Lqԝ%nM!еLieJB"r,|VwBfv@'XЈپhF Zxi*)9PLY`R#Iyi#Ye+[_UusXSh% oGH"D9m&Xzhi Y.fc_o+__Z&Fl~5(9U&ΆJG &oWoo 7C3tj"-d3ûvq(V_ɧl|7.=]DC:0 D STREE\* xyȃ;b!=cmݽGy]Q: 9վC[0H8Ynv MʦUHڽSpwiQ*AY4L$zwb2,*krf9$0,_-9 7wzp3t4o'DCE/s\$"[s2MlLoPv;?̖u^gZd#zxb5wK%ffE1?М3ɡCI83}|ퟷuzC%>+~~![h:CXƬ$i-QWNa&ɟ X" )5{B é~t aYQ;\v8 sn7CvҀPWM0?JJ%t[QF(&GO NG^(UL܍rV)Nt',@"\TsW&%7XNzRb(2G BP I,!"]Z9# } ;bi'ۀX{9qe++;#O*!`e$ZSZ1;4H\|>,{&yjrjzu.`бI[ !jdQy8~W5*Q#T$ʍ!bٟ՘9WN?-zTsHTlu[_Or|B+NA$?bfr:.u(8iJZjvIG1FLe;ȎklY~ +rqX}H~]R{Y;)߽%Q'W훌q+FkSP9δi~ '?gyl]yda,lh^NF RI3'ͷllElqcѾA zw É뽞 薂hf~\_*T~Iįn/#"HS; X"w.وf#F.tr9*9y|N/Z(aŹc9 Q"n=_9>&^N?*ҡKY.>FKxdX˼q]:N6 -'Zj ] S$l8y@>74cNoHIvQLA4u5b@ǡ!n7ȯ@<$.| } G-P;{^n+,%ǓCv(g%JȐJ >xTyV. ,մBT-cA2{x+j'2m|Zy)4P|l[04 i!>;O@Ժ&RҮ|nǪ\aZaTpl+tZmUIsP? ;Nm"YT&5T8; F!܈1*eFZ%RNJNI'lq h$y>&7i$M+7J~eV>7hn?vOobq( V-(='t}GÁ1/chbkuy]_ˠOi[}~&_gjÙ8cn_B $?H6ԯx^(*Ik/YBPf9Dk@(ZU9G6 4M(* "Pbqku@& 2=p;sBJȀC9sY%1MLG9>g\"M4O/8 Gz9:_ igoc ݾמPF l H֕k9˘tqs*g+cv뫊(r?LJD,|$=%@{ko+QD ""DQ_igDlFż΋H zutG[> Khx7–u!/a\?iۼi ",+yp^i h䕹Hz}z~.jքr]9 3ŒPi6e^*}Qm$P' 4|nDFZ?Ld>*@/Ro}7=? o.bw`" ;כ L϶Si68c|O`e6PJ1]J+VgDO 9>8x4۳Ni ĖO|N/meS1VSJn4- l6H򧵾L D?߳옑;-.x^w bc0D;nw#FH ʮR˓Ψ}JyAv 9F"Jm+u՛-R ZjH x=m vVq*5K#Sϯ\]?QC>oV_+JL('.dBZe)Jڝ8_杻NCɱ\;3$ckA}>'~X;*d]>?M ϦN1{ó6/!ifM&AdlX݇l\le2 J'RNCVNu" ږS^ m)/RͱR IGiȐ F]7w+ i )(H;}M,|f˨h[NK]]`Hщ%t.auJOKcӠ;b( Y. DExvV_NJp&Jr "TSTuw#(6myh,g) RY3HK1?GH2T AzЈJ6ߩ؁oFGwBlIFDݷ0Wr aT/'^__UNp-߶6f281LuhEq*IJcUqVR +m i?eE4Q{VxeC*|HM[- C(Ֆ_i&HI;KǰPA^t#aAC>Q܅l{2DWyEQG9( ">D?5UcC Qߩb%T>U(GN;Z* 1Tr6U^Tzb1{ws*A%I"]<-AFPqbmʵy;c/ZV,A^Il;v2RR'6C^& f#b~sHwp4hsBMĎ I1@5vog$irgb! qʐ'Bʋ\㎃3CT vGX|ѿ7P#A~_V/ۖX?HOX.iawVzm(,>e W+,i@ge}w0o[k ރeԆ3`:^5 W^UCj~`Vs$-[VcOzXP>_qx{Jv|(PRD- CYzbץ&gWw+piZpg=D`RRy-Kc%|Q8[ \jJpi^a#3=,/?nǻ贶W.O&j3k6`*S;PּRŕhj2ϊi1ѧ WŵlQ[G?{\ Xj ]'1eJ U7vFW+<ƿ ^tX$$F~`L/{h+8e _bEvCq+/pXZV VJšWrpz? HG}C ;Qʪen)eξ3J7}qO-57H,V,vKj_ ]"V a~k ~õ+JtQuRFl݅s0n;Rnp7|9"5۠ps:_5/S'}t8˳ Pn^R^UƝ[@>+&?{6[bSqhXn7]Q8UDooڋaM9}r-*/w7Qa=ʿFΉ3GG}@ fugO_awt|PԱ/a52|.).70}+hfSS 3$gl{ɐj\q@/ʢoi+k`zxpג*:͠7E΁M -vn!8wš(odj8ʣi՘oק%<*ATuaYNA GgdM]&Y }(;3W׳$.p(d] yWPӁ͗hixHᅲ_h;nCǺaCKcƻ˶A`%p.U#bg:`u|z}jHUo9%Ӈ^kWcG\umaJP,mv `f[=f Iq^PUJ%EoK1e_~|1?;]Qڎ مsb"Ҷ]&!nJQlňyY^ i?(RVKC* *  ?@4 4 deflateX* JxUPSNOD7MNTREE* xw$㡩%zxoVpX)Hx^ӍۃQLBؚ6 WI a6i RIkBM+.uYϣy!Sa?GE&!ݥ(_\},Ψ_}ќ- L#*xA }dHk`e˟3#ɦLfAtΎ>G}֣hآf u ~\А#јYoRk8n.q̗zTSH'(> S@H$끢@ȿL/{AXAJLVsmOӞ78nABQ41f8R/X e[C9DXmHJu=(gk埥F|j}{FHBA*d3,yƆH0RtL5 B575oC"(tN@gfJce]ev]`{XMZ5F%2n ejw k+`+w.DA2Ol\%⿎b_8lz>q3ax_.Suw ] Á!7%͝:nim栌8vĪ7i Y++sF 9r>OC5hz] hh+s$JIQ(8doR\ RJ.J?c^D~Uޠc^ÑݘՏ~zi2p"H:c; oi [\$a}Rd7Żrk%aqlGU}N$NPqXE ..!7|u^>WZYCxiQCp~hr L>rUz|}B"7SaF~IӘ);}"C烧kB"j^lfHP" ޝ}h=x@ kJvvU"Yqx03ϊAsSHR"#!b꧋/΀]O bKzANwgY߳b,6*8u1]7HΞuȽEаn[ 8.g9y S`afҞy*zS(¶Cl'qɐ:<=m, O}{z8|O۠?gׄ&H7v/!rjܹ6=@X!f)e>ݶYU^= 1m9O2MoʟX$x%IB4IVMɠ#"(>o?h[}%U`/VNJe[׶$I]ٔEԓoB}{%bOToYЎ4 TJ<o[HE_T׃5T!+mR%5zښDWH |rI-!&Ҹ fao)#!*-֬6X~E|1vpӐ[JZn69nI$1!DھRq#q+ܲ9Ȍ0OnQ9:/N)(5IB'p)lDVF0XEc1}:Uÿ_/z={/q.x}-?39P?In|{pt}nx>S LDa8[^!u~pm޳@Hzu-7{jB(쀪t̸;'㱝.13 H=J`p8U`f<~b\J) :-_*LDnӜ, ŴԻCDnm 䥆mq ܹ6,"r^B?R'sA&">'otYG,$g႟o[u9|9H }q6" _lnÁ6ʵ 􂦁 vWNiP /[5X}Vb QjkO@H<*!gGHH,m85K$׫g\yIBa1 *WֺR(}7(@Ļҵi0 LjMUoP%EP. /Tӄ3*okQZ*2ͩhGeMl¢c-yzoqrQƉ4X,mlagÁ&z[P;!up_R-*<9;½; ia(I7|ߋ9oE&p {KtuPܰ*s">1= jE ۏ tӟ4DSc\ >~OP`9.y:7 ō'y)Xk eY \ˈ@"J!qWsQ[?@T첵>2̈B6^ҍ,P\c0YFD zBP }ml' ,"v'6_>,Twqp~8ai[$DąX^3Q\wdllJT׼EʲX|O Ur8M[M!? eu4)#ʇ[6UN d/#2cWdM]OyK;;< UIӠ,:!L =YbArh$(-b)2YFyjoq깠/khxh03Î(3 @C6Bf[,{{#VK''B bl'@PCw!Z!VG[ͫ$Fu?x%ԦڒwБoagƘ'_vQc1eY&^t3>^Sd_Ѓ$eR;FD1VvYO`y(Yq?$9?~{4vjŔM/:@eJ&q?HbrWէt3DߕUB͎5AndJ0=V$,s(:tAU3ޘH-R˫_S ;IMz:H0+-xI?UENi|.*tۺ!.3М;YDKHk;Z /Ϙ+|(_Qf):ii<$x%SjAqm/jݹL0: h* :enaT(Z+^[QGѵ\5W=Q|Y(?vGz_")ca7zD[ -[f~yUC\>X-wX9 &V+UByX%: Gm?7m8B! S,6L"a'mPܮ`2j:X}?o弑x-+QRu, L(t{c_8=8!П?[M-BL]j/_j\lCv(f(E7syxH2RUXEЩs['PLĤ#~3]}C[<-a kࣟ愶;Dm,MĿ>DZsvb_jM" ?Vi@H)ul OjVN} @{B2Z/4*un{g1PR91M%o^fQ@a H_7j8ҵqLX~8.#.9Ū/@HB;*v@ȕo:*xi/;@Re~ _ϖ).s[5J8jIb*mg dLEz;Er,xl&2@z}dޯSBb5b1%xIҳc=jwk9<3 z@HW]c4by:o]\0kȾI@l ^ݸܮAs-.m)9 ќpgQv. 0A8d?s<΀(_Uub'ű#8;Қ1rC+m9MUN7jߕ\p~EY;M ފ"8ѥvoBi8eqdǘJn7@mz1>t~{RRA^h=jnt{pA ZݮC]\0uK$S<׳Һ(k@H$nhXD~1)4\S@Hz^Z(?ϐ R.Ƈmao `g?}/_X)Qw4;4f.EyqBS*C ~{y 'ӤUMQbSvOQ,-A{v~fBi,+,lJTسKB-BΦo߮x=.`ѧa!19UcV`vj"ѳVH͍A.Y%s ߷o6BK'JUտ}[bu[2aE||ӐIワC!f[NBqA( q'9!eSP"YD %D|me6P'Wu ~Ua䐡rz?x^؅CX"L+>)Ma8%lJ[| C\r[9^w\f#aq+Kuv w@L %z "-"wBLd_ !GgE^( F)}*.;l(&>"7`,=2 6; IN/4v @mַz(V^윃j^D"'Gzmp PK` whWS@?;wc}(U+cXp!ʟQ~<-|X/s W[_cke! <2_:⬣aD&L^!]qyUp* *  ?@4 4 deflatee* JxUPTREE* xymj0~7{,0xjD@+b~~4Z$`!`G}K+Y̛ v"(irO=d$ <qK t+>s)gQjQ=#v{E}ɢΊvjꫢ|!>y򗒐g(1O>.:}E4_D"T@9M[uVM='~|+x|~`s}mb#(=m1\s؏+qTl;JӢRR[EMaS0,`3`PX𡔑hJ!Y-XzV6g~?+)Yt3q~Bd}Q?Y;]aۜc )<tT(y3yI[_v& \|B "Lkf-;\ B|J)8t6PKtږM[gO^҇q3%xb;l! sGDx0tEiIGJ?Eɵ} %bKX[:y>cm:'!@ۻ]2N[^]]m;pLiyX,M/kg hmf[A 87 V_: yl-I2wSzD 9CB7!l8ΞlI!ᱛ]?#(>q87R"YS#1BZ3Mz%sZ8~.4|ѦPkj@XVlrm(Zr`%J"ysR^.ӊW튀PM5],jfy'^(η?=) kRhYmY %{J"L}={3fEhzUsEhذqqC@HpgJ<9 (WVg@ݚu3=uٌlc*s&y4tRNSfOtz4ܡŠ(>!xSF/Kxb*`)8w!oVQ7#4_C#« ]q":uH,|P°8X}o>g$L9Кt֠Few_Ǡ"%`ل0p)x wZ[LX!Rw^r qm'` 'kk-L>8fnDk{ d %OGNҒBX|I9߷Qb{!)kFKɔmp*DŽ|x@'Ac9Q} m78IJc7Y¢`R`Ȑ`GJŪa'q=HLi_:FetA Eq jJW U&O딢p׻&<+>^~j@Nˎ xIT(} ƕX2,&#Un^-]H 80zC= Ov3Y;9Bl\ݵnj68\; 2A"4m`?o9q>{sp!?G{|E UGYf};5qF4_ 94`7[Q\jJWO7ۀGSMXV~ynk7FH* pCۼ]pxa.~|&D <'lc6z;˥ オ0BŰ%)})t6=aÎJwt%䠺xkˋ ;~, (,_`d?%<b>\1kQnLW&o#K#LS4/F^fKG3ŋZmfS Y"i‡BYA8}ٺk^K۬huc4 H;{R•~L#D2ޤ 5e@O!')om`kx_2^Mo(ϭgJ+F,rpvuyTs##5ddG*s,tX5ZrZ~Ǭ3 + w9`~b%ٶ+BOW*c`ȓ<ۓHk<[<H@Oo7!zꈪ:.{Kk,ߵ)uF5B$޽5j~3# @n>v`>wɬ$UbƜ!oYf) J$cR>7a\ï^4NdM7 )l~J|̀0`m d}d iUΩ3ٯdk^ D]`W&bV=C6®<ٹCdzHI}'?k?LKq(+e)dһuܾ;pRHBb]Ky1ΔY1qtqn$|8||af_!]F-Ӊa?"ͱʘ"n?EkհV2調%#Ҝc BBFQ(fZ H&'_=ԔAʎM;#u)I Y-k6]?GE\O4e*苵m ]d8VBl:x;``h_DRVsPx9md#PVwEYbc}@//s_4_ WNO[_ DK_/): =:@$O8;^E 2`}jcILg J55`۰{>j;D@GG;v,.XL~+Mu@m@:IaT\[CYY~}tEqOfIBƚ^kO!Cot1?%^X5&%*cfRC}q- 84+ Z1| |447ԃKa3&f'ORchJzsߧ/t!3ݕ2S~2<ۻP`BTUo\=SBki'#i`teK'|UF;>LJ8~[v_0sάU, #,O /S)"vzqμEb8+s 0rU;ሽ'kmx@qc&Z3KN  -r Wq BYޒ0UB8 iKsHݱpZQ|M 41~؆3$g&?WZ\Kg}&mbܗSumN2 %pA_٣8{_ k]PT^a|^D~PW؞Rxk+KJҙ~%9mM摬WH8A(FQ0WzǛw KKXHy:p9=1Dx5D2ξϾq(N:nQӂi6Oӝ>?tǟZ8~748lY '\yo#~[T!x=/Eb_^0Jm4@bڸ.XrwhX蟵GK-UH>Ob#qy#hEΏKaϊ";pJH?cl*pGIi~@ǯw>_tܾq-PɲǾ| hjEQZ*Տkۣ +^;1&]EpPWjWC^v-K$iJ~:'. ů7GgsiC/F:HRUQ>ϐ=qYBEuSQz{^\DfLk"}oDKUryRӝ.3}w4CJsASI(.TLN}z1E(~l58`"!媓 .29YEOmPx0bYk|n*'Halwt81 .Dް^AaV7k1 Cd>%/lİY).?k})UCvB}|َ/Y騅!oEwC G$^qg-JR 5 pjJ$mD;,3mw:wӹ]}˕o?ZNcSs~R22]epVicCF5B,"Хߨt;{i~U!+ fPqhcJpZs fyݍ7eBatݻ6(+5-__}1[-_[Y'eHY2 e%!o'6@E:ʈ}#-t &7dp;j9I=_U;!׶(yƝ89ΫHRyjaA@3-tw@: juwtv}({rՎ"&k&-{٬-|J6|KP?wr^aPgǜ0]t*/ϴ'g!)bGZ*YKDx[eSۦa_ ,ն/㶲 Ö򢡕WXe&<Ư{01/CjP:e:7y8޶-K]H6h:8`+3q}6o8$ kNYӘDD&+W楢 #'Om<)Bl{J9.=#g4 XʏL}՛&my m2IX4?g9PS?[F4#es0uKsKGEΰ6Y5<2TqѼt˴\oҕkXikJ]bI<8/솛- (Ue*p{l͎OYwE澱`Zn(v/ߚƂqg$ٽ y*¯2~I5@tx]I˥DIu8%ƍƐssxcq8nç o^K=B8oLK#}\GkXӣK!ׁGi+\xha"`7:(} Nϑ@è2ռ.PU/m{cr\_]Y_`-n>d  ;5-/A^,WB} m (g4ݎ(QTaq݅X=:iAyG!dog2j'0@}<93$cX7{iJR:M>G&;brPxȞ%rVYAs(<]ZsNuUϫ?\uѰ3?/I} ez_}U|8~,ر v0r}z=m$7qGʯ[GD\W"6pꆔȯPe[U C$^jASJ%R^t&7/zq7̿"qLW=!cUT~yIsJ%nZ],,)#%Rvih;xְsFM;楠t~,*뭜2rQb?)LOi/*qq.ySR:@x3yp6ϞCH9*v ,XxQ0z%`kܟ5պ{-QRT}~}~;LZD,jH^R џMvc}w_!PH%Կe@Ppm_Ǩ{s K;Wr eZ7̰ J9d1Eܧ/dyLe#?#VJCgbJfOzW}bCRi^s[$Br'K Rzg9;(ϝ4#`* *  ?@4 4 deflateH* KxUPTREEx * xybDC?]Pq\!rO 3J"ViU$9=K"U5/;TdES\=o5Z땻zx"Z^Y[GT@êRsʹB~נ)`yP\=N64ye_\2J W"3q>N9BBf]}ˍ#w\?M< ]uU{r ъsť`/1k2J)#,M>ʪd>}ß8FMhZaA}rG|EMK:0J {Ynթ6!noF [O}S_HMN_&ht Wb4J) `fChc^&YY@󖻏(-oːSRFTrK>"HpxMȩn_c->~924JnRȉ UM#74:m[CAh8ycWU#}]܄B<jT_v_ Xvqz?0ơ:{?9'S"7bd*EPFwwg~ˣ?2zkH6ſWk0rj*#H~vq;x]KZYi_}ɣ ܄ ѵv #ƅ_MnF y١({8_|2,iv<MɛJޒ^7]EsK^L> IGa:R:d U#2ʠ5+$ط՛qxTѣ ex?<DˋMe#C֪>K~ّy`1.BK <73M'҃<*F֚-[^XXUI䠪r Vww]'A8|=Q^a~x 8dLn0(ސK qǬ^:{\5y/% xJGqX=ȩ2c fAG]1n7T抗.2=^ puy+_1V/*Dn2Pcw|m{EX%|3E)#Aj=%Z߫ƫCw• o4-Q-w3^"[«ia9;XfD'AX_# =b_&}y_9t~ P>^Ȕ [6A374.}frIH8BpwTS"+- *] @JM\=&[P k<ׂZޘ(ٮCW f%D,v"匒[õ^;б2R6mi,n {Z5HXf80 ;J~OE%b?AXA9yʗ8OVq] &>T)p_uiWJOtWUԄ[ Y3M3@"&qW򖰦mþHHD5R@ܐlίΧ ;7q׳JY K!~¿J1"2X_` xs[Pz0~x0b-73r% ] )mucNIfRdn}u}/$Q-~I#J&-'dZr}vcu`{b3^KA9‹%eS>Lp Mu;;'(U_6'׸"1DxoD/jS1z w|+C-zz?!R^HlCA@$rsZzwFHU)/7"[WYX!1]5_b><:>&8W{m0p(_z}&͚ycY/N64<=1( JPkdym4/Ӯ%Fc({P3+od _bAhӃ26?pbɻ%bO݀o.Zʥ94Mr1mq6P.WITѝ$o3;EEB4S14x"m88$Yg=Dya=󧊄V3V]6Ѵ%Xe42c;hltX Y=J xOg snS"5sO^>؅1FҖhS8-$'{?Ps woXdnU,|S/{a&XWq]^zwfRwE9_ˡA|6}xpuBTrwiF9,_欄Wc?A$ΓsۉoϿfSᥠf1~}k#u`"eOK6}9F?t(.JfgP> 0Bwo.&JBT,9ْ ZX3ȧ%T sOU0Xh]2cϮ ڮܒAz'aG4e+ʾKN:OW|1& "7Kc= Sy-,#>i6A\Q:{, ?OY~ Cnl\}D}?$$ieϽ ڝmyvY~yYA설Ϫ4?x)1N j+|*%@cݍGSrf̧%˟G>7ߦ; &2 SmWusIWq x lyU?}[{5 ʋ*V?ctS& F|pl</bN za_`|_nҁnd>d5wmN5s=::T/V]lv@]edH9쁃>vG)vz؊,sACRl|; P^u=;9D߈iљ`(|I3Qg'g(IF4nb="a1"sUFd %/*e94΋$swKFR@P2Pʋ&CYNf~}T.}!(bk#1PK ~>LA!ge{L: ̺n~,ct w#C.J?2i|@=yoߜnW[p5g*SA#ѩhq:_Өsݲ(;x{z:b,4u'%2mf|KSc`)s}ٹC({F 8xjyg_hBlME͹^?O2{nCZIɔkKT$DE+81>\ &cEeM.OVT,t_?BI4n K6;`I쌻l|{#s~)ӵڋ~q|/TQb')+.+]ݵ[3|szφYt SV)`gS`ԼTg̀P!g fw]0C(17~=|m7^_VC~+:p]GFTη#$>ldʤY9[Yz)X٦ pGGP9%lls&[('Cۇ=!^BU惪 }G{ \;xG?/Ck5vr0S8.&*E@sGlzbcT;߿A8wԂň-Ɇx$-Y-GfU QGK\{7w ZŏQy8%TV*[owCT|O,5 oqKj@9 +\3m5$D쭼:e ,램2kO=)KZGq.Wprk~q9pP`OVL-i,`9gf_^-> ˥# 6g}%Nuw!FREoENd+!܇țL)VcT-n1pSsM)}d 1BhқTvk$9z$%:ZP̈q ;[9 o7^~/C%>:X ^I2i;/gO!JJ.JXm̀(v{.h \Q_GB~p2Ui)qg ?$r I@],`~W# dg-R7{ 57h˧񿻊 ek/}8OFdw0P /prJҋ嫁9J~AEi ZL:_MlcC!&W=}ٵa:X +LAQ'X@D5)9Ex(龘 JJ9PwǥL%0"0ی(<9F|>넃NX$ 4 Gpbqw^Gzܖ_X}w(Zy*iG2\ îC* =6d~#Μ?\Զ#?+Z1O~*ϡe.>_!,23"kG"|ʩy{({vdWs$%s> WE-YxPLU~( S\Mwp!?/a*#&;ߟ%K%Pi*|i`88>epJ<w5t%?._kmog=?R-'*d5ͤ=2KY`՞y&yZL_Vnwc w":;+ 'S̓` *g'~|H/k1нOa*,WqFG!ApBa(uEJDL[-vjfpS`9EUkOȣ:7-<>\20ڦ6U̥N+KY_@6$ $ h鶥HYk/ʈ4ةpEWa&nہ3x3)G[9ڿKΑ,I^!VnU]7i K^TGf+>. !fxjP*z1䆒CL+3 p&S}wB$.㼲R}WA* *  ?@4 4 deflate}-* KxUPTREEz5* xy~ֵ{M6oY4yp#۱ q6KL8Y%JIptnƟ֧Zh?-c6p7)WG[ x+3//K|'"I~ ](s*:=}\2_s`0I̯| !G}GBٻ>t-FIK9GQEfqJ ВkXaN{Yr%Í1SC-N,l>Ygmc4[~] 5 Ld8LX &x,pCYNH tL)m8z55v ~Lw,کHߦ|?Jpۤ K8z̦킉(؟a4$"^ej 7sruL&p"z pulax`8}#x{C"E^ el*R}Nv*gǘR؛hހ#+;rG`^!i\NSgD,~DO슋/bq߲433WRbQ%Fğ9>w-IZl\hW&&`K뾳GӼl˓}Z{SIojtrIds{ᓜ $+v%(wMwAW [eEǽI?Lu{"\^C[,p Jv\?&-CڀОAN&NV)te[0#1X;(lBFT+Qbh v8hyE,~8%ě0z3 bH8OxRU9qM쑊g^u {IJ3. ܦ2/_2 €HqsihL!'S~YpGE4^{^DɈgUSߡt>_f@6 e՗bQ&o`#"D-RL gU/JTW7Ɗ@ W4Er:˧fhlhрXwNiٿf򉈐3Z?](>▆Xa CrE[qDgvX)5N8xbw>ܨPP& J]M !bȾ V=EaM% a< MF/dAx||bIQ~Y㻎i2[ NWζNBWzL!V"_o"bD-_i3bhN]T&RS]q|?YJ] {c='᎐sX?SZ 4VP2ڜ?`( g0=BU"녨j$`0N^ªeiwApq4V xFkvA qq!d>X۹-?Yfݨ`7d:\d"o \vX{Vn=M"K/ǟ"%B0]}Hm5'Wjg(NyweXRnsDct. 'W)qc:6P\>_||B?ZN]r? ԅXL$\g`8~ΰe-`o)K2rV "7fwʦ͝ŗW:%Rt⣰ӱ+\%vBD\fnvdr* ɛ&QAVd7wFY:M=3Nم6RBl([*ZY]]g='գmhdO.9>$?K<s)\'(DÉwriL#._ C50O/H9@ǯ~,y_n\z[|j=r@9oXѦ:[~b>T҇)ľoQ:vl$I=-<6_ 9oiιyFMeaM;kE4wPWl#,NWV¹ N#WMҵg{kYia<2{Dn`۪bKՁIB`-NwNk^uyZV!i[$XTRWB6QS|ݠz+]!}?GXN74~l!P-uQ<ӗ6yBl~P"u[`[7l<ܒU9fWqdōt/,'tʔ1q5l zǚ)(26' 7Bx˛b! !1I/u<l3_ nt-5q(M-]T".}BיV\dKA㇖/[ _'\i]r%<9xZe8U#ʻ _ȭU#Ipqy> ,}>}lУk8bυϦo~:.gSV(T1\)'Y?$|,ݳ!<[H9Oŵn,b6?'f0fNV80\woj;;HU~{@Lh+ їU DZs6?ހzrMc`G7)WX^ 8V|tczE!Zq~_z`X䛬en1MDe@z6]$sXۓ ]|woR/\GSb0XQvlu{Uj\ɲQz|mLJ.lۇ_!w0-)5ya,žY Q_eB\13ɜ)+MuFX?xJk2xcf7,hxs"ae^[!ﻬhb'\ e]$ ~j]J#]N#D^»ĵCԎZO>RF35_L99:퇟K-G !r\8`}Ay!7/#b1ӯ373*'tWtb!c6iAϫENJӘ|@+H-FHŽ?Gz&4)bdkħ,O /xRx=˴PdT%徴 &8~Sqtsd=pk/ʟj*X֌ΫA??K~{@ըʤ%?QraP4~(9)o:!Xbʨw\n<v23n՟f}Z还=Oȶ5_ɬ7c柒+ -K^a NV%R_)'/MS_o+`~8=. ۋiBW9O?5oMDjSL0Xg&G"7^ǻ~Z"f]nNQ/*㟣bmwm/pQp,}ڝryI{N9UH7!^*N2<=1ѫf 56 #@@f>/Lhz:ǽ{a"ݧt1RS /dCVX~9W *P?\׎[+9j tu|?oqgʾו(m g_|} ]~5[)NU*`upo/Su,ZZsIV7w?G.AqzjRv*9zQdUX dP}A #Hqj|;Nڷ\ٟ;$OˌeDĺ̬}-TQ w,o9@d}~l~N5?GF ?@M!YX~N-뉲(Zd%/'^Do활|?uܟ8y ̌oj1T0.tu] Vvr!(gJgtOR@mI/ߛ׻~V<ߦL^;fG]"oGd kc2+›E*yOj)!bW2eהZ搀}I ^œxlٕOs~uCC~Zegba3q 59'mq?.jze&kGpҨd`eols]W ~霵叶oEG_AIr]aϷ6+-D'B}Yb{ltk`uJe %e+QR[aMiS=+~%4a?k Jv!炒{y7Z+.j#eX~w{!=! 7 [<'˲,nr_;MBgqͧp.{oD<O|yAo>U,o w&"&wf!8)dkb{}yP{eTҳ"nNf`tQwo& Jh;pgο$cO>(p&,8t+_>dqN~)#\ic97A$${poڤycHmaߛGdfiJk"ǛfNLG"j=qG:JIݢ4~9WJ=w{*.@+ga_'Ip/Sͨ;!O6|K2 [cLǵ9,piIRl{+OQb&^D? ?Rхz}O;W[jFjAB_P>_9;c)He;oH."g|ܒ^"fu[%te6!ܠ:9:';u tKhw-W' c =o1Fy&zzer+yS(*38d/wۃ[OD*?UVxO~>(g`9~[1ZNMoI$C6q4K ̚OC֝ ȐU%ejv`$, EU - ';9cD uc h85PJW8:4k>؏b_y_N L^/(1%"j,%|pɁ6#' ).+R9>"“CCiaCbJq:xMWtl?_Ml2XQqIaHεޝBRpjXO2|~v |97p]3ܸ.ȧf̴<rj:\_.+u6lrD -OeTO/^M%ER¿?,X)}0P +)L["ʗw±r O|Z0%ڇBǁ1V]_bFűP˭pTF=e/໋Bӄ%M:ae[1ܯ{@EV"€kGa^so* *  ?@4 4 deflateV* KxUPSNODUPC8m,TREE^* xy U)CRRPB8YfJȔY<32dV!HIJ]R $"*ysϥ;{g}g^32ᖉn{nOŤe]=\dfdr V v3%1?ɛdso l*J: ġ"XbD%rG3aWc9%$-6hv% ](N.gۘiڢlN4,e5WJ'N}]Di+JaD~M3+HNJ-_̠ǿW~73 (,6,U> ~y"%JaO/3^6qU8ȧQ.\X?p~=%?m|[w4]T4'uw[e_Y͟rWs17E)Rm9$"Mm3":{4;|c0 L"34J }AmOP4v}{?^} ,P(> +fkb(8iG*!@eBXP#4{ yz "3Q/&p?gyT? &lk%Ϣ1(^&m]aPrzPi9H4ZVs?4ii7PXkRnI!zΰq-u*Ky(/T䬒PI%׹]kꥁig}eܼ|Bm!nD^WZ(9%7/=gfvFY`@En8 9s*w]I[_b^6Q:7ϪR!<)εzNAV|m+/{nـkdi;st?`:Pܵ;Z)om OiV\G1̈ބ} xlj?!NdU 8GMr$#!vKH%,G\Q]$X"r*̻L>ܰ5,57p~*>okJ{\xm 9S"&{IT'mx~On1ʅ ?ddwv B}4+lg(d=!PWB?Mc@aW/g맗Q: :n$I]_:/HXZ(RaN %RR] zSPlHيG+tpv(;y&h=~S_1.+͝[[^J18|)bO룒Q0!kn>޿)rw;pӺuɾFL6n=-.WI;c(B˿ .zH&MCJ{e~4r:]kҔv|.!$~ 2xg.NK[ LѺU L틈Q+p?cJOOQgؔH_i'_B?w WSOr6o/M4d4$\/pNĻ:$Wd{9Ea%R*s27e3C,!CD!7BQpSe ,Z]^BiX(]80}o0fCҘW(o/uGJ/EmX^!?rt-S!P|0h*m9 K,-hqVQl:r|ˮaaD~L=V;~*ջW^>IY,}"ЕUl:<@u:&l?ʒ`]e͉uv+l";dBl $˔7o/MPze.D?EIgAۋ5Q%G;d¤G1GtZL+WiY84OX1*3ZIc;Jlq2)68C_DR5u#v{:pY0xpn&^ӵ#8_fY{z^=d^ %:=%c~Pw_{tʴ&G5*D("KI(R  K6SĢ;4)NY6ph(x?g/e!Mp\|%qU]/*0q)7w)擀Ї/ x7Y:IXxzb |"HbBmO}ԦA9޴${.$>QDԬ6I{M v>B{hϙ0V F)[dBlỳkR+yhZbR&OQ2 PԾ=Ϫ(A><X 5c:yOӲ*,%-A*%F3Sq=L_~jIiWyEw[*&2GFOHϿȨwS@zAPc 7Mnb!Ӿ,אDq)7rF𭃍V@&U:iN$kq@,!u`HSMymbuۂ*c]?Gqp%{trqkl +U/a^jA*GƟsejܓ/ӄUQ\5O/*"{?6Ke%*BcGmCFoC;sL!P˨\)okՉsf2GEx4 j&~ϧ}ZseC205MK$ߚ.?вyͶ$Icw$̪!ҾHÆ^#[%nP H5ח -Co۠n]Zdh=?,sb:@f ^xR+X_ku%zn> W>2JTq2^t@cB@:8QL6MgIuf.;]99OhWIhީ%ud=t#qOJc:[5}Phq5(q@yα3vLGU3;K"H'Wݑ^ߖm)Ѥy)x8 }"D6=LJ8Xk}؋1.ǰ~=WoR F!qn1md7 zCPmn% .}7\ YQ өAl|["^8aqiC{K4ٜ11S׿W_/?K᫋YQޫ~UZlyXm ;5Jz m#)%fi}L ,$ֵ~a|Cs]1p y['tp$ʟv Oԉ=9` r_x]>Cx#׺8f""^ tK<%EXesv'a?"O+VA9޵LI_QDr@꟥d^X!$)M*yf B4mV ,scc['u_51UP,v*}@^oS%zdNGo9z[52ꃝ+}3Iqsxǃh^R͘~Xl hQ@h8<(x X~4%Rd\oV0z]$y5M lcZTن1BldVUvK֘CoQ)jDDMo*-ì+gHo86ĝ(,򮰛'礋UQ0#:ɚ`tu]J$86F~oDAy9B.X{^R|GjL;6 7?T艒T^@#`Y/' қh \c WyO聭|EtJ=doM𜉴g3<|LfҩH_"^t!Iϻmoup$8ҕolJLP"/o^Բk@ pˆR%bZy7 KWezh6KwRJّfcSqODe)$3WY,4C8||UM8>sI}H4W *exp\nh[\0I#8$M LXR +h`ѯӛ KKVWz7#E }}R|BdCLPzs@Q\Cd`~@?0xol'jNq.W 102/?ѤL_laޑD =eHld@/ۘ%8oa\NqjGx66$ݓ+I?Ʀ$o毆bt`;PA6]4T}iX8r5l~5k h8)Ƹg <׬l?#l29,%x=|s= ~Zk(`Y3n" J/Zo܂j~_KhRTN6F(|_*_;C*Ⱥ\' b3eZ{:QR_*VO> ^h/vRD좦hC+MS 3a~A$@B5o~}N#n?n_\ DrPm#TQ*e dGكY[(^L$S/F&OqFIu(EO&C/qK(~zj? 8+Yri @?cMBSRq_;C!?Kz7XkT$f/J&}bיv9SE~ef|ũsT"'FWiPNɸM]%aFUxۊ[}"e8U& QVc*&71yc/5E9X_wUR7՝^>t/џIU3Oে9V|c[hq+_#0T]/{M jwNǴ|^`m &:>dWMzoz߶{rK]7]r;J4/IpZ ¦Q]_& c`KѲ~"FlK%nv,^K qZjyXW8PXvTRZAkU =F6K>߸Lf4輡m7T w8;qk4o0ɏ?wtNvIqN+#!ֻzQ@(&~FK G=#!-2mw=sگK7#DA/܉PC1U3K['mz Y=~y-TN%)p7nn_0'?(nN@k"G#}dIһa{`;}o1h*jn]NK"q@jc򝰴九ܼl6L8r=~ȣTIt|sC9*9ԞETSd؆ P")\B:P[Y޵>T%Jl{J:F97_4#ƹ֢vɰ7:Dԍ)qO"e +2.|X(in!, n.Z~SPsؚ|Wb;dh" :%bڃj5KkvҮϢE$(][i+SfbDOyD:>]h~$l-GAkD5@,ؼn2TcAd!y~>|?IHS'jܛ/"$#.U2t%hrC BmN?>lAX"x֓] \gmQ u9`}[zŝRppw\W)>%ڕ _0៿uύaCO2-֭|8 :o<`{ g(ovG% mLUz# Mϸx‚nqj}ͤəS?(s #.^?ꫵ, ,ɡF]p] Էl E;/ZێjcCq@?p8z8mx]J1uuk*u굒]}=S?b2:vz(U*/gB,K[F^yFxQ(^E)ۤbi.6~R@jrbJy ߚ/AW݀DHCaY1@έ b>>vvB$}VcwA˦$ɂ"NjmݢՓ٥בG'!z; |D%YQ. N'ffޟ8h^ϸW@3=|~#{b_9dw`9Ѽ~%ggߜ>ױ#;d\?Yy_kDꝛp4@~Qڹ\)IGs>nB5}@pXd]Gs@ԋ= Y,9^aڑ0ϻEϥ#eE/Xa wZBB"^kfI vX;7x dzB8Z*@"Kq/O1R0_F0 k9sޝL0ș˿ GS.Y[W.{C9\q›CS_?:Wh{qSzeh$xm߾zXh@/a\w0/:hs\yk\'ey9JDY~9!Ҋp{Ei.f7!dge'=,$q))?^/2P]kRҴދq%4W_Wn4-DFDx7uxBlwwqrhbj=$p ZLȾi~r^p/#[>j幰DS{g_z6÷4R `#84BVa޲3;nK@ieZV?wwnODk X(ް,|_r}5ڛհja.w' ;3~^޿忑D>_ѳ&(eD(Qgx]b*Epw#?>h:҈e'GW8Wxla&7q-Kˇ]KBTgBޙ20LWjN3AQǏG5,Cjм BWj'+?3D{ۮ+;,s8G K; y(Dv^E 08m>8gˮ i-ː2`>0ğ:3.ě5ֆCb e^~=_6J1[W_;rWGӦ1s9-F+s_1O eܽ[Hl`v:6sZpN!cfeUpQ !A/HHl._' #>ek*ݺN4:]k|R'G GD?ؾ$+q?ܪSwqJCΨ]=ž]6.`*O"e/}*}p[ +6'.:UyМ2UJmϾ%yyKJ>.|1szr9':2rnы_G5y.7N22NkVXhRG|/Z!7ٖ(}ptqh|Q%ipN0aH GK/T0# =?hM;Ӻ',zJkYF_I8ܮS?AGOלGBκX;$4y0%EĞ=ʿwĚP Moy7O|~LiHqX7IHģѩ)jHR'=Ge!\zh7!rf/Bi_OlLj<'oٌ>P7&:QiA|e'|AϺz 8y8 (]#!= B+ +(ΕQ~40]'/cc<&H >]Xjd<3cB|1lVV]s,0 dB'"EO'*lKε\!%khUX`%E)Ru,jU&wo.Kza"5UR&w!a3$=(T#2!ʺO$;/:l%4}/Sʝј0,u2s/R$P\hm>O(;ҤaЕdz~4^uPp@`3?om9F<+d BWSFc9ݤSԏz\ WGy$i)̢\шłowf%C״]C=PءD>V QL~桑kkG&`q<AQqbJ-ɗM1)dyo!UoHz(oV.o^vY@]-T J74O⥁-0x.b^S#_hq6soB4ծ{F7 m]fJZ.|?᧚]ߙLkW1ۏBP{ vsmSnmT/ͣF{6'mmPvv: r5916",W=4 t4-|<=@81YG\2M3*HzD8 C݇9S^۸u{+zPR/h^:gI:L!Kȓ3} eW&Pj+eOf8S^S~nZ(nꦫ7qzF>(i9ڢC{S"9v&yK_.LGɊ`g7e`v|W]`켐fu:<E (nP> Y/Uk}Gt;[5U=py&RJ6D-iS,_EӓǿbV9\v?^L[˗?Fß?`ԛ_NĿ=2KZFA濱 oVɭB*Ln[= d=W}r=]C?72|ߍ]v%%D~Va{0P\WG[[d oP :b۽9~P:oA6a?\:9.JE@XZBtq>xf3 "-'׸#a++iut1!`Bԋ%Y]㪀e{fkԩI6jW%1uy_P:L^"%ƣ^tM$s!IvDj J fMyVYrT@(J$O Y۶dQ]^NdjmƄۋC8KrH/X?w[G0dѿ}AskO:7ʲH0"j* mlڤ$bp\;Ȗ/o 7\! Xjpߑ$Ϛ)_x~uu(:#LB=(! SnĈص_+(hZCob Ʊ~s}u(ۍ)crafAH1}1O /묯E$A]C5,W;{m1x|T$"Gy"6Xp]5QkVQ6ːn-z n/ jt[)r7jR4>#$GCڥ\zW* *  ?@4 4 deflate* LxUPTREE* xyR%]ظRe`tbJS,(KRtPΕc7UgKV%Pnr]v#9םanhGj,7,qbҞ Q8?ӵ TRtlc_>wGLlhfV KӜ۴]\b"Ot([1d"|U^]~?_l`y#<{-RS2iٸ&@y%aLE}$势L&}N'RR1 \w᫄n0bj~K@aob]bz' | hk(;][ˌ=Z)=,~n|(Z坣RB~U٩JG+(Z)=+V D\-d~$S6ہR%UdP9b0Ꚕ76=ÐzO@O0Yw-%EP{0P<}!ؼ7 /eoϋwrY,l+qZ[*@ R8Ɂa{ϋ} ]uHu ӿbzϷiø&Ogsv¹CI*=?dnM0-Y7]~Sυ‹{aQn!3ߠh\MF-kia 3ŨMMȦz_g5_Cj'u]*pÉ 4M*}y`$=$$dP*\ӊ("08}CK!B, ʋ9'_ҜXޤ}n@a4B~rcx~h3^H >Ld1P"5-EӅC%M&d錅0ZN8;1c~­kȹ ؉X s4K?wwǁҳ(?VG}v]{E}Viiv&z:0& => {Y׵& MG Diw¡}4K͕/?3GpQY *NKHWՆrR!ұm7n(dJL֫K_TLFwc̓,P"흍-~j=j ` iIZ(^HdnzNXmG>]sve- bBO'O5[ _.:q>pUŴ$ZYZ}yIޢxvYu=FI?V oCy>RuaP6\(0*U2'ߋp?cle LTևexBvͣA,ƴ1V8wlOmH~c-Lɏ5ZHḼ,.Y:)'rùgXm4-X.Z(qEVpw|Q|6 8#:<)= {_|nlM~Ey>ؖP:TDxs-ůV=]sqoݎr֍vSQ g\T]: L r1A?S`@1B9^vݕ]ޖ 7۵0ɒiQ qw67i2lY0 jM=f:8 ܲ:9kx6dmؤ=Qˤ[M.BpƫK!׶ؤh\z1OZ;$tlk6-,!mNp)4sgX-vw,ap(/N L҃FgmsӘp(Uc vJצҀ{՛㶡0эu >54x%reJe.n|0mXS9AbT("Oo&5r Oő# Iކ|['R~|wReL>xVn}kx\3E1a#[nr8m*WN0hINJ|[gA$$d<cB5#MF_>]\| /Wpy3? HXq70!Wr"*U|_"|q &e9)911F~Zڐ:~  2^bL~H}ޠ/_>q-&cAa90 e_GBIepڇkpe[Ũ3J .Eqy+L"w]6$v"9)̪t&Ȃ au7~6{rr|ѧm}EDm_ө&o uq-`x= ,S>Be糓.yr15 ݻSr$nP%]f>k.?$$ _cXDEtCu򞊻?G}=W L9+<^HKyB^ cM{j Q?T}ឧ.Њ'Q4Kl}{̵*La(傃вXխ`%^TOh i D9c"mH.~DHuu=p9>U7;5mpKy)o 7ZdЇ3*WP;b*qف;u%4^<~9j|+q2f۬;EI"'e.}jغ]gNgFV3宮 vgǮU|gU/O5EL'lbjukG \ |a \W[xPh%Tqaeޅݲ& ?G.#ɍD* ̥9׾&Hչ Wwyv1]9&Z~/Ix>uNbP~V\_MINӓ rXa]E:N^}T1K }$G.ނ$ PO}t{Q'E+c'Cn\?ӯӬE_ :"A^5i Rq^pZ;B)>>noۘvTz$-OT$\I|no&2ʿ>hڬg[bdM?1E~89ˎ%Cb 4k=xH!Bkry޷p_ٿMie@h%bE,rD3,$ڑZk˗(I,ŝvs" /,ovX{Is~Sfn{n&K8?œY|hF|1q?T0::6N**sl@k;6ē%~}܁Lo]yGe=CW?8/V/hU2tkt=>;Q,, _U e_j[P[Iβ&Z,Pe_VzyNpAKpMAK>ǪKhHhFLN^kS$؋zM"@@W5k FT1 ݙ#|PDVG yK$ %bOQh=NLe9?wf(*e ]k# blJl>,DB\vĊDJQ~ B(2mwz'gexD+ 1pAFFjH`7rOxR<_b xr\u {ѴaQ;UF4nd=ڻzD\@]ܫk,pְvx9P̈1ۣt`:yp?pu|'8ˏi|s*L ֻ>HԞD73 w$eB crpK Ol9A; &羧R|~gڢk+Q}ǕpS[)zRO7q׆tK8iky! eEܺHʊ_{݉=+}*%%~; uC-ϱh~|Y ÝHGhy)j>CTj=8,|k U΍:yxw"E).]L->5(1VM sZ3 Y|WMI,%5e,ErCdOVoqpډ َrP$Hό8Ov" b AG9Z jV ȼk Ѿ|'( KOi?&wA(FLل.߿_t]j,fGT'$[E[>Տn:d Q(2_o"̝o|^@&\o\Wj^ԘH}Sϋ;Rb<`_eһ'<21ǚ/(‡Z{Yαi}7ͷ=Z1Byo$߱1QޱMF(6~BX"PJ N ` 3UNKa\N._3}gA:{ w(? uel{:%2BF;_~.F>LIfB囼̔M Y6ڿtqrK46P|;y۾}fy>Jp.&(cݯvU S9S܆a_MvclĴb@dJDI?d@ kmLxha]Niska@ה2 U՗. mgU%|u-0\ȹ&sng&BеS?p CNIYaZ*-E9ts{B<9a] b_IFn#>H 3w䃹'\$,2ٌGqܺ^9Y 1sYDCҀAd@t똜?sA$SOE)ybKcTpZ$h \Jִ \A[Xef ?_~tk,'XWLE$<洨6VY_VQl-!&+fݽh@@Ô j h+w*Sq1`Y; Ə;]$%Cpݝ져D|ܚ]IBwNzpGҧ+p߇"zI^.3%CoWXW|7`d$&&1č7_C]Or^ O'b2f&X\>Lnd* >tq/oĐ}j 4; e\ggy@{S 򁘬I˾>./4-aw/'4{;Cl|\V]?ȤAu2ЉggcɄUCaxW0UC$JG}o)'9W)Wҥ\z;?nߴ$՞!}t}/B+uAUx9Dv K HDYI^ ;P:{g(QAE%9>!X)*8\C4rfy,^p톣 ?ٱMcQ"Ed=S.QOh׉4u%G@޾y&tyRt~Dcm7i|T|)l%ep68y%Bg*/f'Fg=>/PS(Y)# b:cMQŴw阨-_wA3T(H j=ᓄ4*:nX07juֹф4~Q0%5?`Wm*2!y܇El:}HrR$hpAifOT +Jݬ@W]59^'E}nOPƘpcO 硈jj@7YXBGk޵u_'r`FUQfiK](Gbl"|J-%dfAH,u! }=4* *  ?@4 4 deflate* LxUPTREE& * xw}|:׹35Fݕ_}O ykx>l(ރRO8BT$~ImJ||S"ޜB4W~w %1;X2h5xv[iCSacSB_Su;;^2PD-BSbt=wة b3iR-֧?GJAU:ۿs  fpR_S]Mc7~Qq.C(OU~GY$]V-mTKĞ[}5~61H[.·Ěޭ7Ov>xVW! h̉"KSk_)A~Cso;^T$x1x܎$ ui䄑G?BQX̲yJ #5TYX߼qpy*dWpweb%j)XE@qw-%sUwJZA4^J@(:qx4ݻ呄2~Ig% 2FU@x&h Ȩ22C#z 5XzJ~+xRAH/l(r/\Rüa;fpMkv&ћ V鄢api΢րP'(Rn=X3sjI[vNcQ8/Sy~T3횕e7Px)o/&\dUL;%,_ g["i&`yJ}U?Sqp̆0rBA z"DD/)ED{ۊ J*3T4";ug5e@ݞ|co(/Ci)|Yl&}ij.w`[wy~@9}P +B s{(^}IsRr yPP}@׉;Xqp!JLv A@J~ U|1Ԝ@6n)8HyQ73Z,DBM3A8M\Xjl߈> R ="?rEExȿB0\+uuށ#+n,wkۆqy\xRdc)IhRoGY?%ne;>^wCN !èm!),^Jb6.t~ qzȋbu,(5\Тrg<;͌hE\ q$ɩgߐr0O HQqZ sgI.[S@_i7Η956YUΩ𭩿ݮ90CCbte]hxL«}MTڝp{:8EzLID]yޮٕ2=~ Wl?/{P%]N=h'q ~S!"^;у컪mZup<:zȷne$ƻMDo~r2l=ϋ.7>$'j[7Ku_Mp:;Ӧ⥓0C7xIfV1 `m6ZZFd2W:o?GG瑜zY_wg'"q+Bl*>A0{?!`:`T|=cT'w#VƇ)RcY痼APѬ6HLlCNQ/x/Aɗ*,9_p+y&'eH*M9ivDiM ΚA=B]A?׀,5. (%6ޡDQ`}/$jWAV+Yαibpͷ'h \qZ1yܕS8\BG:`_6l1Y@f*jϯ 9)ʐJt=Bpo{ߑ*ϛ7w,p{9S<Ԓԗug#kWBwen@)5lhL0+%Ů¼"Ο\.ax5)$|Ƶ(U^ ćP*f kGtY%({1(s <՘ QXy~W=qge2q_XqesձpޡkdNN%&o^X e_X6.%<}'LtXP-]N.ZrX:Dx?RH|vj*>%ޗlcAX+r: &XS Db'd֓篔\Y~z]e 9Z529bm""ϚnX'$hR$:#JU׎-@kR; %΍Ipsh1z9P3`)yR!㊙IV1[yw\~za>hᣭ aK~fݪM/1羥5x^NKaMNXDžu7g_ӭB)p2@\H>bIǝ*Q 02[C"oi=M8vhJY*W5nLvXB%r؞Cn=FNI(%狀fij٬,oӪGgrz:N@~'sUUucmb XZ4۲6~}s)AAy+:8w!go |Oԇ[x(`6"o5Or\䂏gՔP~,H'0: T %{iif-,'b/67?C>2qi٣DvG$4/X "R.z4X/;뻜QbF5E b`b $9hDc-rH1U8õ;]QA'n񪧶\]' *řޓc~sTHGVǿ1YOߕ3=QA'rD,yBrJ4ppLjHl<`0&RRiM0'i&v!{ŎJv'+42Վ`NrWbugXNm1+I՛ROxz*~yOX©eX7hc b8kDQL!c|US(ew}i$$َ4 3:b1_%"MU6"D E'3Jօ>Ƅ{ i2/rl;Zy|V.V%ȝd6H,z%DYK|qΤ 5c=xVN2K-ic^5O(yDs>wC`a޼|x(r=K$ _=+ݨm3[Ǻ^R_S- R:j̍Q"A_xD{AV!*%\vqǪ7:M?$q2ٯjBlLF(]D?ՆzS0(-ϋ@Muxy^ AaQ(!m'^<$`9|ߣ2w.d?t~?zzgװ>SbW<>:p.seo?7(eH_.*DRR﯇mn+)I jX|>-.?V51-P]~װ `!Qwո;e-hO;v\N-GhsuL8zYF뗖dM03 7㨔v-;m:E3AOs&:xt=k?IL+K Q$Fei7jGw$>A1z #q\`&R*ٸK^I>r n͗ M=viگ󇒁[{hK~ nw:`Ax9yj8c3,` ޻wstߛs'ct $,*IhĻJ&E9~Me4DN { Ka]cQ~;$M~79L;^y`'rYfVx2tnJpdeu^DK/TQ''kVV$t IhVf>Oefƣu3S/[hsBeUc2t *.T 6zNX'=*CM{!V{F_'ӰN`k9z~3\5QAQmyjy*ljpF9/1Ij.q2UZpsp<4TѲ*>W&}:C/v~츦jվ*kZH ~Q[%gu(XIr@[d-JP =Y$ !<9ζ3$a6Ĉ~hr-MZ*UnXu-rր Ta|!Yx_iRZ+NpձSLFWr$Zh23?}n1)B'Y>O/#d)I+Ј/OF9,g̲kȃ$"}ka݇3y!g/o~v ҍN·nAE|h\[To芣 ZgҰIھ*i#J$n`}v2^qm4,d]:7jtf~z+fg1<5e;n;NG` 큸&4f{1sYU +>j;otf\*l&=ɳjczpEqp > !]mqq'egpAʭ8)Cmd4"Kze1Y|?T' J'D'7_UrdB/zu $]}ΌÇ*9Tb[3\%䶋-:w2Z竗$w;( ;*$mHT-E_8 LZ1ߨj7FV- gܕ gnixn#e+QŪbFvd~z<#W tc/*eUS7h[k4أ~~eDXcEMƃWnڰjN"gQOu~ڧ>0**%OmZG^__ XI^UA\ewcO+סvA#_7vOTsy@iSL͚h+jiB`SHJE9~7N"&l/lXȖg _Dk3UޛƧh/] qq+qK:FaQ.XtVф 9N}:='kOK ߶K%uҩO;Z;C Lc_Sr95=[L;kRxfݿhjl~qhanЮ6+%)&/%>c C ֎l>(I5>7f?!ˆ*:VF%_sg@SeUʮ-w$vnۜy訓rS^a_o lw{CpsBl;Cqs9IM yB$u-U"!%C=_֑>OX_ddְN99cqʳ7E%+ fOH"9kVU"O=LC柮\Vjc׋/D˙Y[ ?{_ q!LiyJ;Auiʲu Oم n A[e -fDd}іYܱO֖ȥ$ |zBɸܟ' ]:z.K8E|1d0@WLÎ.mU .ƀ\iO?x+%|KlzcG17OЁ_95kzz{ 7∌% F(TL=@R>;g"=O3Lo2ڔ}ѳ wK>[S]?_ ];=UAVuDlYg7Zo'"uM2b$FQvhE*?.W5T@SY5M>1 {̙گcGK'8~o33zӍy$‘j$QAr:\h:BR.Jtþ8|04]wm~Ϻpvŋ{N1z{4ʱkutn4HV` 1/i (on8.EY}諺Ba."Cd U&YMNUDih3%47@^flbTIrQE&Q06G EO7y]I{uB= ߯²h+dv.5)2J.B);P/ѥ6uł*psn(_dD z $^+Nr%4htF__oJ|zWQd>?w\N?Ru׳Ch=:OTn HkܟB|/q _ 㢊 E^rz߱kWf|R]tZH> 4Gယ~?tm[Qĥ}ӹG3%؃BP".ZN8G)C;Fb]f!|hVA* Ó%^g0 TׅHM&$DLGI^8\faD?Cg )ê/~<™0ڴ Jo|1|;xYqy4Qτ `9:tޚoW1MO0B|Ro!' &SOՖ w5X+hGk~Ȫ`?[o׀Zŕ|i@Q0t<>1Z,Nc;ͷ}څLj c_S٪ 6q(EOPKjgY4<wIx-Ud;JjFʡ=ouqb?}XkM܌ ?Je$HN]?]g:SCe{B[FC#uGG# fu9űE5T'-˅C{L@v-Qh@hMN~_\{:.j $oCj4˙\sw]>(>v"q< MCR­z$~|Ug~'0^D8^jHS"6$Y =v24<d?4xu}1_ҫT+nYq o]*HwE‘A _kTH:MO`E7'H`2HƢ ]$6 ʿ˯8BA3* ȥ]0Oo*ߡ׹M{Afu?T% 8VፂGF8k lǹ-d}l*O=vUXX;m0- e2WdXe΢y7Hb?Wp!:%k ۼ2x ~?4@.o+jX1mI|5x9(VY'?_4B?(VF/u{i<(R᭼I.DѦX{,̿OB&zv~]ʨ:w]4>չ} 4^ɳ!\STgI[k!6$$7jY!][˵z v'sqxIF{d[gU;& mo'8 pPU֥> ?(tF'vV4yNw,=)Z҅#*_%eߖxHoZ1d9z*f"1G7 )EbuxtI%BCNݚ4AӶ_Rpx͍Uai?9_S(vb fy2+)q;Y1юAݻ,Q^di!Η~rºI9v7"wl`u>&j GGJaq``C/a 1%#""|kK:pNE@(}^fD|^,`[gYXr YUWvơO> 0ߵ/5& %( cO~vTD<*.f'v o8s:ɳIva:JOL;;+_~m s%Ѱoݾ8~ t|""C;_:=={4[sG˟*CTYi {yl%>kM4vJEO"RaRepSh4i$`%4V_و%~Rv#gm+v'4aOQ_#\F+,;׏ LVzo ^3\[^OWqtZpߴ?^~dGGj?&!SCAő8כ::o䪏֓'6N< T[t||s>7NEn* *  ?@4 4 deflate* MxUPTREE[&* xy U]%ʘ (C y[~>5\k]{QPߩ\gLTf?^3sCi5!7WFr؏YHda5TOW7ݦo8wKQb馥ƥ"Fd7*;8 BPN'c9U'!ѡ;Ol0I8sp~o.'OB֖NVƁ $MvwM 4spGfb | `̛`8G? ano|)KyߌcԯӜ*e TϣqHɉ~7>e58BL h_or稵SIMG~Ad%- C,/{TR?H~oO}?r}?g-YGDtřq+]&QƩ~gx@zCE,eqً R-|pU<.0Ald2MCUʩZ%2d{wID lZ~Xۤ6@xC("Хnrq]l$P~΁CX?OU??\z.3ЖXБPH[EC.'K d%*}Z5@̢? - ir(u7"v@+`MQ8KkxȂu{QomL[&d[[ ?'x=5f66 :c [|P.o͂;CP vzڡfYI롮];l<_fbILUiZyY%^_5ٳ Z>a}B[ 泡7_W77;#Ǚqp_͝$n.b=-f5lh=:A.;~76 #8ѽ7O-u3<mI{8\>!YD`;Z$?e:Qfc̲$^D<+CoQz} K$x+f#c*|z=_:WcU9yCLP mIXcM2y >PyaI_fTaV^yk3ow$˫ucɖpGO2x ,i )Ńi*d파u=@a\!YW  /#k<B?D1Y^/JQdYJs黺;#/IF _S|ȅSc5 UxChm,$\T ~V丟JVgI{ĞXDL%~eޢ겂@p<1uB/u(P"96θCm/j>}烉ўIMG$^dd*J_NdkEAW&[vH_ͮHԮY.v#Fe7#T) I01׽%7#3LnÔ.6p^8˝haOgxX0,;S9Կ\\~"ͯ܊Qu^(#:)|…p7pCv4EF%*l@(y)LV0NVD|ip\Ҭ𨯽E+9zQƞ"U7r|Q#rȲ䴻IYQZȃ6)U҅;#D*p@9@[OTGU6kwX:t{&9 -P__ȟGikec;][@NFW99<  xC Y3zMŌ xC?Jod_Hn}X*K;oY.]W+_܇[|J. vR̻B.[LCq7G9eChd)apdnV^JrYځXRmx0DP'颮=t*-lqt=~^x?ψL> &*=җCsRk {u~S6|cxV>/IpEYx7m/ 9TYR~U[Ob!0:p0qڕ'vƃC}莭_@Хa _āV@UH7,r6P~ᖪ Lm'Qݧ,*O%7'G~lK!_/|L:W-D ?N {V"U[ؾa>wsm<[ni8}Q2 ޑֿ??wjj>UHE>C֟ѝzJ8?B #EI/ TV'߾"7?xY8ng_-\]:.<<||\cXV kAW/b^~ϏovWZarTTi As)5tf oOp}JyOj?.w2اʒfG#T€>ocunJCnV-O#vBlvƊZ7Ė tc@].'@x+@ۖ5zPE(ł=C8|Y?c]t" *z M{:g}>7O֦Xj |!G^>ӭ1!݀|C׷ʸ;Xi}+,b4@š* -\Ud@tOt: <No`OJϋ+~*G3V,佫5Vdݦ?8ZľPkx=0uX9eUW )KH9&YgY#$d,ҝr4o .S287^$ށP N$ΧƳ80#^F@:04}1_sFyj/L!mc-|IgTzbUfbf:+󪣱3_$Z`Oԗ?`j>4/|l-lS7֑c$Ax!>_O oISgU= ks`Uz<÷jcK_EO!7 ϷFb}:4dX ?68\襺lE2.?sD"Dp~ 88uH\V7ە#`6"Ok^YFn% ,W}er[`QANnzi"Pr^%{n.!Cب%wctr̳f*,8sU?a._NBlҁ^?`l̒XCxK5$ޏAOU܌[E& T}()¨ s/vZcy[)@ՙTVyjݣ$~Ԙ-}J3Qqe%|!'2v]m!lǡZLpRT)RY4=6d| wbø{Q$تciFoU0ygbEa a> G}%ur/vR t2 <針 Gb9cA7'* HNhfL > Z.U㶒~P̶xk"3}ef6w0Jĥp4KRi`i W&NJ0I\-@X&|s<͉YɡgJB.faGsTǒN XIe֑Zcĉ81HX%≲pOV=Kwx>v`(#ų arq}Ce'|>N,* lJ$!t(c{tAns^Aإk `3vB ZdN7m?,v2"Pb}(2"A_Z:؎GԾm.E܉G TZW_1B. ΋}Wt-[nZX>-YYDT1ݿAȍx,S?[d$M KP}dt{n[Xؚ}H떎B)襷"^JmîICĺh1?:!-Jp.``a(ђ5[a`_d%l~BS-eݠ.6ֹBFHǏ?Ek(ˊnG<צMfU,K 3{#`PD`[J(>_ Hb7s_`JKK^b{ym2Ѧm;.h> KMqml$̵s(J0 wF6ܞRr %'V1 \o?\;JR/ kM ,`N@̥qd֤CYL7o6yXxF\!HHں'-L׿)1`}΃NxVXBO@GZLH>.OSC 9>,D:z{}Ơ1Jl>@}I z9FYYqI~g:[ uZo:'Mxq98v^ӽjGV ̽}&_q*˜xU Q/1uFOr^^ںAv32&G> c p,јapQh{տ{DBeq|([-+>@ڏ!js;o\+$b-@SY6`c~3@XCP\?s Õ˕U0.RދYIM3ʻ==?vn4c7l&Et>ڰ48A+)2ݩ~M,kX|yl/\ފ(ZpX1JH(IlOW) }!"gVC7/Mj_#ժG<;K$]‹PZkϵ~z̘yA%c o=SFN)4>}~Prq_/6_6YiQjWpD2B0!>E|*^-:XNWܼj; ǪaF[ڻB8iD<_:R[^?>S9F3rO|l&)#O}/bnamN9}">>>aۭ6]Իx (z%nO,EJoLFl_U7bKHϭY-Rm r.˾< 8!<\ʎZb?7|Y,nw<׫tՆm<I~aQth&^?\ I"EY VYnScULJx|#$aSX7NQ2QeL_֎†|߅+;|k| 4k0apmÅׅK˫ߔvvv(cJLn7JJqcᎊJ>+/N}qoEػ |nB&ԤEIѣe 5=1E]QRvt )ɆJq-ܥb*{Q9`LgJjFPsO* *  ?@4 4 deflate=F* MxUPTREEmN* xy U]I ͙)d&9W1cɘy#CCJ$!)R撤2N! 퉽cέ罿|콮kkﳇ62?U:e&$t{E7jw踜zK9x۹gq;}JO"ԩ$Jݠv8g藞?/rE%S!(ge})`lk~>^/0xX!K!džD< \48?.íö&OKu`镏kOs ^ф]~k$!MbSµJ1ql ~8lukE?jw>񦖅>}ib1BO??ޟz}PKGZCͧrlP/{VDVƍ,MZI.?##Gێȑ\v7gtJ5!rvatCYV~tW . R5n")fBy^e];(gZa`\~JUlB1SܛL VnaQ5k'^\5N1Ǔ1'm7KXk9wC5+A]৥Ș&G /ɩmغ\8U"_o:^X̩W퍍FAVWóV%; țeJ:w־UҀ_Ԃ4 K3ݽjHYDoDUNυ]pIjE^4-β[iEm7ڜE~/L>jh|ܐ[kDN]lpht]d Q/,ca^Zi>zq[(.V YKF+bKwN:VUΞu5~Tj ZHTltgCćzR -Q1i1/_deG9ȷ 2Gi-Je"y~*+39 iz;Hґꍌ"_n2 { \98bihU&O :t];ul~Lr̻æ6lWWVeX״o6_N ;6_#5w++J m?)OųBAmQ|VUVEYt0icXEVM8bjWSQÕt}`Մ8{n⯥2PM)Vڎl6po9o,OH o+U=){))f| \^W'DGT!Lyh k&b`>Ow[ñ*>ī]N_ },^slEu~%W@Ϟة((vغɺFDo>aB6 l1]t;h4CLf y)|Y{.ԯֱX"^.wW<_+]aH5`J)W0-A7t6;(gHumUE/M&D R !꒔`Qn40em)ʅb#a$!pz(te:C C[7 V=ݚG:$[w,$)Dd e~ ddr,լ{y~`87+IoY:50Cry j AqCע$T&@0N,e7f?zN3ݴ,?.9 Bނ_PEH%]8+2B EyOv^j=M!G-GMO~?ނ ǁcΥ[(+)f,o O-|9֧J-]?Sy|.C_%|Xa;$yqȦTx=aT ,Q#b3EN4v\AyN3ZP 7xD&?D{oovאyUzgQx%4\ obP7^y?Z"f{͏Mi%8w!F)ςb;gY|viPv40)Tt8rf#eF_U(fk[JZWG{6?x{ip@-MMdj.W6uHp^8Lm涃oċzdDA+y>QVY!7]wZFZZob6cA*׸BYԆp<?oXr\ܑ G ?s(%#o n':;G;{슝Cb q60v./&)f\߲: 7x '&Z,j%G/g4GzV3ЀբtL~1/jxuEU|tekױc 5%az?1BymXJNgQHhpwrT}Ao'xc@с8WugqY<^`B! TILCE|d3;OHq|3䇇܇)4Ir*IFd ~#[fɰGqӂ{aqUKI0o}R 1Ԓ[ PnCVwi\~f[o.Dk=:vp/Q}ީKL„|%(vCaf9E`Jb'Cu]  ]- voU-#=/nN _Gx`uSx~ %]ٿpWw{ŭ 5/Lg{O g>RfOڻ 7tC0p3g.u`^*PD}-K|K q7[uT?MuMHN'PRH`q2͜CQ4Uru]O/kOpO@YK/«Y`p_y_JU#8UrM `>cp5 Rq7'/9^2Xb<1TMS]XKgDl\n8O-!ciTy2bQJ:1g]GHa~xmNfd?dpmaWb %";_,^o9K?XO&o(?(|Pb#n^M3!m'%l2$"gӏײַ]?E?N>~96p_Lzyi0JO<.O߾IP6MXJ]&VMMF2oR᫄EޟqOnQ;lӆivmr[~F_wnѼ=X'{|/:1\ Tbf¸=][mX ;| r\Q NHه8HXg0)ՠ}mm^"nO Q/m)#;X4bs_Ё8o vƕz@;iÔGBYњ!yZ-K2| g dv py(i,U-|mֵ\Lps?.jc=Wѷ$*;!eK%PfƁgMRjY<תh _&u฻p?ڏBd\Nm Q~UPϐ?ΝYΛ $ Fg^҆t*.h4%= A"eV RDwLTlPj뭤[{>|;*DC8Yw|ߙSҖGQgpgOr$:MX3@F[\P |A-^PQ\TkQ?Y:J,>-{?ou`+,矧HpVt5/簨]*bII\"l*+xR kY&PVQ#6Enr %YR*Ԕnke_z*|6vp\I#%Ɗ,bxXN<0 ǔn؊0&f1"g(IK0o_X5pӽ;yxwl0oFJm%~8w;E:)}b[h:t/6!? q~a }~e`m5[Pꛟmb$dWiMWJ>rRy#1£;`a`s3M5N.:!kgxɀЯh8ZI~2;Π\JNr{ɥL30n,;e+n##/!gw~^U[gDjrY+5@!;@hkHS/l5v$.lewJwwivZQj5 Ckp[rģPyJגuRl$)gcIF1_&v))|yoGO/$i30 yCa7Lc`6Ro2>ْ8~~d>yjvjdVR|w܌{G8.Ηz;±ہN[NH, sDZ}>i,?,L< \\~Qե=k ҉k>ּYe{b+5dCR%Y W ( T{|MdzbSm G !Txr/sĽ[X/{TË,Omx b tQN~|pV )>Um"hYmPMQ=_㶬`t@H9 z[]B#?Φۥcs4!٢"x{W/JO9`{#]zeo9- r!4s\vJٱu"踎dч T6" Q]qAF@MU)qe%8Ov]_iE9ZQ'* *  ?@4 4 deflaten* MxUPTREEFv* xwZ.\q,(GUygS(\Z*}[aXc懤`˯:XēʑDԦϳ F9ۏ\:]K[L/kCN+~|5&>iGsliDd ZGgW;h*w?GsE ?LY3) bc"^PJJNj5(B3}֮Y$%u,NiSS ~lJVdK$N[$\?r~?PPݙ,o|͠Ȧ9gEA;\Up~&}[f=LȾ4cOf4-ۈV,&Y3zLx#'W<' "c3zk?ޜd@E"X e22H }8Ote.U1# +Ki.EPcwnK1Asv?ddt ez6$@ZA{?z t] Ă|˷sҽ5% cҿFlŔ_7#ŏΰ gI.z\c lV b)6)<_P=EYI yl?Ui=`- KϵZ`S.~|C^cSL2m/g+,#!f[M-1i6Pf1Q42jBUts&J"wVҤ&Q~L6-DTOF⃄ٵp#-Q{mg(2oB_X!*7sQd|> JU w|sJ͊$S29X4wR֢F!D]z@ZZd$v)A_M&.&1ʇwh6Ms+VAD[ &$i8}[JT^>K`y~P^r\rxo(0}W 4Ax:J=#mPMp]%nT1/ (^2*cqAw,NIJ;z!(݉:Qo:T֠wQ[W=s 2?y&_Ȯq5> a\O˫{ȗ`H^ }A]&& _8 nE{c!pHqۍqPҷLтa\.6룰㝻"zh \a Q7|)O^\ypn8ݦ%'t>g`|i6Jx_US~kw>XeUݞ 5DQbkI1-՘xػ$Hn_eS}âDS0Y } ~Ӂʆ0'pb]|Al n{,Q bK* Odۓ/m:%]7YYY4T} Ԓ&)J^P*4E@3e~ +ۇr&Jh謠cCgV, cwge V3l0"%s*+,G@+!2hv~swgJR,?l7X)ny3F~>|tk,@~^)b܄C`1F݆@=MfM0:-׽G!6=GUڱE$"'b]aٛ~1HC22.ENkɟ`_Wg 㗂ʈA>Vw$c/P"JIM)aMWGZ(woYFX H|tJ K.h) Hgw+ʤ%Ԁ"v@@bhT_깴'; "8h^aQu-fkMƏ9)}\8z{|3T UDQH b]Hg8$!(EŻ!); !q ܮϔA{aě#n-ȼ,N)do@ށ:$ia!aZs3\dNYt5a41Hİgfk2+#r)su؉!f{}B|6,)DM&e}yQ MgDa O{l49}ej/ۡ(UW(6ΌV779si v&S`&Dj:Dn62xͮ/Y߁79B2e W̥ XLhGjJX3YIyCDguF4)(y¥C@ k~*4G. axuB%SWD}lXoWpǡPlF>Bij^ԇ?P9 w[VH'rL)"bL{}h|єevn?BDRWoAF<5 (WAQs.Sq`f]%BRL}AM*<1.¼ߖ b[$]"Y@!B\q Y5f݄K,v6d;3p Kjg3ŞWeA}t&'?ژ*%/9siuq1{3U=lLmZK&/3V޺%yҳ {/|Yow<8 gה.M2MμN^J[MZkp*k_'9XK>za'O]WDV!v>1L!ڞڌz2Aی:N8)j -13Tt4 $uQK.E͆fIdMp wuf-832~;E(u/O35S;>t7Q\8(/)r lkj:gfϔQֵ{oPDկ,^/s!LYVKp*z_MJZ80@edP*yW;x}pkj?|?j ?%b '~=cbj7 Dҳi-{۵T*}.g#™`4?xH_ܿTМ?'Pұ}u1GY>/-Woy[jBsFp-y9M?ԙ)KwДjHr<۾6(7 l6TPK )nNQZw$( UEK!EQ#m3&l;w%߷OzMFG2{g_R3`/1c "U(pX[RM&@˦We$`u.حGBᚎA~/<*T%vؔ{D\ jt- GO>P"}e*&DU!66ϡ\y˰-,kj 0 3MRpFrJ1E\Q6pHD>!E.1ƉI4L4 Xn(t6kU{N /J:Fh zDP"`V)UEB4A"qvͫYŽaޛ/UA{AlxjDid2}ǬXzoc?axtP:-YS[>տ/Յnay8`J޾lq2u9]-Dlo]#`h0\ñz:7rPb[yE9Wn]< źm8شHK_?…OProK$a_a=iڀLPYB;i Hz aгaj6="zrΟ|1>ά{CZGC8s[dg[20^%3GP.::ȋ7$#{.Qn1'}B󚕉C{?na^4곤?agI'0%G-J{ő3Klaj-p.x-)yn t`ܜ6@%(78A>X`I 4'-Rbx`ͥӖ\%֮~upK45 qf6 #Y `r3e/n]a f`9Xx`CFE2o?(hnR0qMN*$Xpߎ'Q-E̥:C\'/9cO,SDd=oQg?AӶX 3hqWԾ_/;Qާr3hy[sKK%nӮob!rr)vXy<2 w bwZx3< ۍ#@.2pJeZS) Lˌ8'z8XcZLݗc;~ֶ;B6mV(;o6UPA~ݷiH_d-kZxMX;,e$WLv<] TezxW|3M'E!sW,/ )PryCﶩR*$О 7c)+~6;ܔB*L %>ʏN=^#"]țN3bhoRBTfcIމޡGK]&=-7RsJC`91Eq13Oapzĉ}S_"o)EOCF3&xWkrVy3JVv>x=Iap5]DO.^"|]ׄ/"F^i l :XK~8ƔCI*^DKE<- `r|8%,ZdW>)S%+?:MGh ;ދcJ<}=pZ# Faf%?˟{k`.Ȁ3Txy0ti<{Oq9\_cAr`$-ڍ LDsZvzL[E8Xd&vٝRDglcŒ@m6^%dzQC3K&'* zesu2D:m]@X;)kKl}mꎡ 2`n=%Z Fqp2O.xh>IJ9V)D7g2-ocgcv:qnDɗWG$Q|{jH F}鄛J?JUAF'r\EP7.N}Cgʃk{ɞ|&"bsG\w 5NзkTcm:~l:Aeo882-g" QXq84T1A/nC E`T꼩VxgIe_HgT! 9p\1CR6&(gj0oۮk!\Etl'K)7 \Yݺl"w h|'t['WƗa\JҀP|32q T{j=Fo4T)kw'aa(놟UH¡}] wSx)"vwN3+E j=ק<xוX oAigra"oiCXר犲9F Ds]OD(~>Վ3tCiƃKT./A9krEpD)a{"o6æ~/QjpfZ6wŮ" >ډ#C;SummarizedExperiment/inst/extdata/kallisto/abundance.tsv0000644000175400017540000026441313175715010024702 0ustar00biocbuildbiocbuildtarget_id length eff_length est_counts tpm uc010tkp.2 981 832 0 0 uc001vuz.1 31578 31429 0 0 uc001vva.1 31578 31429 0 0 uc010ahc.1 31578 31429 0 0 uc021rmy.1 41 41 0 0 uc021rmz.1 30 30 0 0 uc001vvd.3 32 32 0 0 uc021rna.1 28 28 0 0 uc021rnb.1 37 37 0 0 uc021rnd.1 37 37 0 0 uc021rne.1 41 41 0 0 uc021rnf.1 30 30 0 0 uc010tkq.2 32 32 0 0 uc021rng.1 28 28 0 0 uc021rnh.1 28 28 0 0 uc001vvf.2 40 40 0 0 uc001vvh.3 32 32 0 0 uc001vvi.3 34158 34009 0 0 uc001vvk.1 34259 34110 0 0 uc001vvl.4 42885 42736 2206.9 476.273 uc021rnj.1 69004 68855 444.552 59.5463 uc001vvn.3 1387 1238 0 0 uc001vvt.3 10204 10055 0 0 uc001vwd.3 4044 3895 0 0 uc010tkt.2 942 793 0 0 uc010tku.2 942 793 0 0 uc010tkv.2 924 775 0 0 uc001vwh.1 945 796 0 0 uc010tkw.2 972 823 0 0 uc001vwj.2 1076 927 0 0 uc010tkx.2 1047 898 0 0 uc001vwn.1 939 790 0 0 uc001vwo.1 1032 883 0 0 uc010tla.2 927 778 0 0 uc010tlb.2 1038 889 0 0 uc010tlc.2 993 844 0 0 uc010tld.2 975 826 0 0 uc001vxb.1 14290 14141 247.606 161.491 uc001vxc.3 14291 14142 231.649 151.073 uc001vxd.3 14291 14142 231.649 151.073 uc010tle.2 3310 3161 268.096 782.228 uc001vxg.3 2642 2493 1428 5282.92 uc001vxh.3 2642 2493 1428 5282.92 uc001vxi.3 2642 2493 1428 5282.92 uc021rnr.1 2642 2493 1428 5282.92 uc010ahm.2 3822 3673 0 0 uc010ahn.3 5785 5636 1559.52 2552.04 uc001vxo.4 8628 8479 0 0 uc021rns.1 3246 3097 3840.48 11437 uc001vxp.2 5619 5470 0 0 uc010tlj.2 651 502 0 0 uc001vxu.1 16736 16587 0 0 uc021rnw.1 82 82 0 0 uc021rnz.1 82 82 0 0 uc021rob.1 72 72 0 0 uc021roh.1 73 73 0 0 uc021roi.1 89 89 0 0 uc021roj.1 72 72 0 0 uc001vxw.4 10010 9861 28.5268 26.6809 uc001vxx.4 16423 16274 17.2901 9.79877 uc001vxy.4 16423 16274 17.2901 9.79877 uc001vxz.3 5414 5265 0 0 uc001vya.3 11827 11678 0 0 uc021rok.1 444 295 50.5198 1579.45 uc021rol.1 444 295 14.3732 449.364 uc001vyc.3 2441 2292 0 0 uc021rom.1 444 295 0 0 uc001vyd.3 2522 2373 0 0 uc021ron.1 444 295 0 0 uc001vye.4 1417 1268 0 0 uc021roo.1 453 304 0 0 uc001vyj.3 946 797 0 0 uc021roq.1 483 334 0 0 uc021ror.1 836 687 0 0 uc010aif.2 37095 36946 1 0.249632 uc001vyl.1 965 816 0 0 uc021ros.1 486 337 0 0 uc010tlk.2 3311 3162 0 0 uc001vym.3 7225 7076 1092.63 1424.14 uc001vyn.3 7230 7081 561.687 731.589 uc001vyo.3 7230 7081 561.687 731.589 uc001vyr.3 2621 2472 1 3.73095 uc001vys.4 2621 2472 1 3.73095 uc001vzh.3 1988 1839 0 0 uc001vzk.4 2008 1859 0 0 uc001vzl.2 2009 1860 0 0 uc021rou.1 471 322 0 0 uc010tlm.2 465 316 0 0 uc001vzn.1 5186 5037 0 0 uc001vzo.1 16539 16390 0 0 uc001vzp.3 19510 19361 111 52.8765 uc010aij.3 19510 19361 111 52.8765 uc010tln.2 19510 19361 111 52.8765 uc010tlo.2 4788 4639 61.4477 122.166 uc001wag.3 63325 63176 3.51495 0.513139 uc001wah.3 33748 33599 0 0 uc001wai.3 33748 33599 0 0 uc001waj.1 3812 3663 0 0 uc001wak.3 30043 29894 0 0 uc010aim.3 29943 29794 0 0 uc001wal.3 29448 29299 0 0 uc001wam.3 27378 27229 0.485047 0.164293 uc001way.3 19037 18888 318.807 155.671 uc001waz.3 21985 21836 5.57481e-06 2.35464e-06 uc010tlu.2 21985 21836 5.57481e-06 2.35464e-06 uc010tlv.2 11575 11426 1450.81 1171.07 uc001wbi.2 711 562 0 0 uc001wbk.3 698 549 0 0 uc010tmd.2 942 793 0 0 uc021roz.1 520 371 0 0 uc001wbn.3 561 412 0 0 uc021rpa.1 255349 255200 1.00344 0.0362641 uc021rpb.1 159 10 0 0 uc001wbp.2 810 661 0 0 uc010aip.1 13535 13386 0 0 uc021rpc.1 244 95 0 0 uc010aiq.1 592 443 0 0 uc001wbt.1 585 436 0 0 uc021rpd.1 309 160 0 0 uc010air.1 594 445 0 0 uc001wbv.3 117 117 0 0 uc010ais.1 588 439 0 0 uc001wbw.2 725946 725797 0 0 uc001wbx.2 635 486 0 0 uc001wbz.1 681 532 0 0 uc010ait.1 681 532 0 0 uc021rpe.1 219473 219324 0 0 uc001wcb.2 647 498 0 0 uc001wcc.3 3761 3612 0 0 uc021rpf.1 276 127 0 0 uc021rpg.1 396747 396598 0 0 uc021rph.1 648 499 0 0 uc010aiv.1 389875 389726 0 0 uc021rpi.1 245 96 0 0 uc021rpj.2 172012 171863 0 0 uc010aiy.2 577 428 0 0 uc001wch.2 578 429 0 0 uc010aiz.2 588 439 0 0 uc021rpk.1 248 99 0 0 uc001wck.3 527 378 0 0 uc021rpl.1 538598 538449 0 0 uc021rpm.1 594 445 0 0 uc010tmm.2 87855 87706 0 0 uc010tmo.2 508219 508070 0 0 uc001wcq.3 8442 8293 0 0 uc001wco.3 558067 557918 0 0 uc010ajd.1 5004 4855 0 0 uc010aje.1 550895 550746 0 0 uc001wcp.2 550824 550675 0 0 uc001wcr.1 550597 550448 0 0 uc001wcs.1 550597 550448 0 0 uc010ajf.1 550597 550448 0 0 uc001wct.4 5069 4920 0 0 uc001wcu.4 476295 476146 0 0 uc021rpn.1 476295 476146 0 0 uc021rpo.1 554 405 0 0 uc021rpp.1 277 128 0 0 uc001wcx.4 500362 500213 0 0 uc001wcy.3 562 413 0 0 uc021rpq.1 256 107 0 0 uc001wcz.2 570 421 0 0 uc021rpr.1 461793 461644 0 0 uc010tmp.1 595 446 0 0 uc001wdb.2 1375 1226 0 0 uc010ajh.1 686 537 0 0 uc010aji.1 915 766 0 0 uc001wdd.2 360721 360572 0 0 uc010ajj.1 398119 397970 0 0 uc001wde.1 424764 424615 0 0 uc010tmq.2 24 24 0 0 uc010ajk.2 400760 400611 0 0 uc001wdg.1 400414 400265 0 0 uc021rpt.1 400414 400265 0 0 uc001wdh.2 582 433 0 0 uc010ajl.1 368898 368749 0 0 uc001wdi.2 587 438 0 0 uc021rpu.1 124 124 0 0 uc010ajm.2 776 627 0 0 uc021rpv.1 311404 311255 0 0 uc001wdk.2 612 463 0 0 uc010ajn.1 605 456 0 0 uc010ajo.1 326632 326483 0 0 uc010ajp.1 322108 321959 0 0 uc021rpw.1 305227 305078 0 0 uc001wdn.3 622 473 0 0 uc021rpx.1 170 21 0 0 uc010tmr.2 213989 213840 4.31181 0.185968 uc010ajq.1 563 414 0.991652 22.0916 uc001wdq.2 459 310 0 0 uc001wdr.2 555 406 0 0 uc001wdu.2 562 413 0 0 uc001wdv.4 129626 129477 0 0 uc001wdw.2 7594 7445 0 0 uc001wdx.4 15832 15683 0 0 uc010ajs.1 7958 7809 0 0 uc001wdz.4 7266 7117 0 0 uc010tms.2 8153 8004 0 0 uc010ajt.3 4741 4592 0 0 uc010aju.1 5548 5399 0 0 uc001wea.4 6824 6675 0 0 uc001wec.3 78798 78649 0 0 uc001wed.1 1569 1420 0 0 uc001wee.4 73237 73088 0 0 uc021rpy.1 58 58 0 0 uc010tmt.1 68202 68053 0 0 uc010ajv.1 65443 65294 0 0 uc001weg.2 68325 68176 0 0 uc001weh.1 33370 33221 0 0 uc001wei.3 65884 65735 0 0 uc001wej.3 63516 63367 0 0 uc001wek.3 62821 62672 0 0 uc001wel.3 62624 62475 0 0 uc001wem.4 61619 61470 0 0 uc001wen.2 54882 54733 0 0 uc001weo.2 56700 56551 0 0 uc010ajw.2 65 65 0 0 uc001wep.3 57287 57138 0 0 uc001weq.3 56202 56053 0 0 uc021rpz.1 66 66 0 0 uc021rqa.1 50847 50698 0 0 uc021rqb.1 55214 55065 0 0 uc001wet.3 52964 52815 0 0 uc021rqc.1 64 64 0 0 uc001weu.3 52422 52273 0 0 uc021rqd.1 112 112 0 0 uc001wev.3 50509 50360 0 0 uc021rqe.1 59 59 0 0 uc021rqf.1 62 62 0 0 uc010tmv.2 43983 43834 0 0 uc021rqg.1 55 55 0 0 uc001wez.2 42616 42467 0 0 uc001wfa.2 276 127 0 0 uc010ajx.1 43975 43826 0 0 uc001wfb.2 40068 39919 0 0 uc021rqh.1 39133 38984 0 0 uc001wfd.1 42015 41866 0 0 uc001wfe.3 42875 42726 0 0 uc001wfg.2 38390 38241 0 0 uc021rqi.1 56 56 0 0 uc001wfh.1 39653 39504 0 0 uc001wfi.2 34879 34730 0 0 uc001wfj.1 2388 2239 0 0 uc001wfk.3 38176 38027 0 0 uc001wfl.3 30236 30087 0 0 uc010ajy.2 36496 36347 0 0 uc001wfn.3 35888 35739 0 0 uc021rqj.1 61 61 0 0 uc001wfo.2 2030 1881 0 0 uc001wfp.3 33671 33522 0 0 uc021rqk.1 63 63 0 0 uc001wfq.2 30661 30512 0 0 uc001wfr.1 27327 27178 0 0 uc010ajz.1 27312 27163 0 0 uc021rql.1 65 65 0 0 uc001wfs.2 25699 25550 0 0 uc001wft.2 27035 26886 0 0 uc001wfu.3 21541 21392 0 0 uc001wfv.2 26312 26163 0 0 uc001wfw.1 24990 24841 0 0 uc021rqm.1 62 62 0 0 uc001wfx.3 25282 25133 0 0 uc001wfy.2 19228 19079 0 0 uc001wfz.1 18143 17994 0 0 uc021rqn.1 137 137 0 0 uc001wgb.3 1618 1469 0 0 uc001wgc.2 15829 15680 0 0 uc021rqo.1 15270 15121 0 0 uc001wge.4 18649 18500 0 0 uc021rqp.1 18640 18491 0 0 uc021rqq.1 59 59 0 0 uc010tmw.2 15103 14954 0 0 uc010tmx.2 16006 15857 0 0 uc010tmy.2 10150 10001 0 0 uc010akb.2 131 131 0 0 uc021rqr.1 6820 6671 0 0 uc001wgh.3 13080 12931 0 0 uc001wgi.2 7530 7381 0 0 uc001wgj.1 8463 8314 0 0 uc001wgk.3 8978 8829 4 4.17846 uc010tmz.1 6015 5866 0 0 uc010tna.1 11670 11521 0 0 uc001wgm.3 14119 13970 458 302.369 uc010tnb.2 14119 13970 458 302.369 uc010tnc.2 2101 1952 0 0 uc001wgn.2 5268 5119 2092.11 3769.36 uc001wgp.2 5038 4889 4605.89 8688.82 uc001wgw.4 5155 5006 63 116.069 uc001wgx.4 5155 5006 63 116.069 uc001wgy.4 5155 5006 63 116.069 uc001wgz.4 5155 5006 63 116.069 uc001wha.4 5155 5006 63 116.069 uc001whb.4 5155 5006 63 116.069 uc001whc.3 11011 10862 12 10.1892 uc001whd.3 6332 6183 1144.79 1707.63 uc001whe.3 5323 5174 4258.21 7590.47 uc010tnd.1 3621 3472 5.7037 15.1511 uc001whf.1 4458 4309 10.2963 22.038 uc021rqs.1 73 73 0 0 uc021rqt.1 73 73 0 0 uc010ake.1 1894 1745 0 0 uc001wiu.3 4983 4834 523.402 998.611 uc021rqv.1 423 274 420.333 14148.5 uc001wjg.4 4998 4849 0 0 uc001wjh.4 19424 19275 92.5751 44.2963 uc021rqx.1 4900 4751 0 0 uc001wji.4 4622 4473 1570.52 3238.26 uc001wjj.3 5149 5000 0 0 uc001wjk.3 5998 5849 1678.91 2647.36 uc001wjq.3 3595 3446 0 0 uc001wjr.3 3543 3394 0 0 uc001wjs.3 2965 2816 0 0 uc001wjt.3 2965 2816 0 0 uc001wju.3 2965 2816 0 0 uc010akm.3 2965 2816 0 0 uc010akn.3 2965 2816 0 0 uc010ako.3 2965 2816 0 0 uc001wjy.3 8505 8356 396 437.084 uc001wjz.3 8505 8356 396 437.084 uc031qnt.1 47822 47673 3.45502e-08 6.68415e-09 uc001wkb.5 46772 46623 44.6402 8.83068 uc001wkg.5 3593 3444 50.9575 136.462 uc001wkh.5 3593 3444 50.9575 136.462 uc010akr.4 3593 3444 50.9575 136.462 uc031qnu.1 3593 3444 50.9575 136.462 uc031qnv.1 3593 3444 50.9575 136.462 uc031qnw.1 3593 3444 50.9575 136.462 uc031qnx.1 3593 3444 50.9575 136.462 uc001wko.1 6977 6828 0 0 uc010aku.1 13105 12956 0 0 uc001wkt.4 9276 9127 28 28.2942 uc001wku.4 9276 9127 28 28.2942 uc010akv.3 9276 9127 28 28.2942 uc010aky.2 14368 14219 0 0 uc001wla.3 15524 15375 287.815 172.65 uc001wlb.3 15524 15375 287.815 172.65 uc010akz.3 15524 15375 287.815 172.65 uc001wlc.4 52653 52504 0 0 uc001wld.4 52653 52504 0 0 uc001wle.4 52653 52504 0 0 uc001wlf.3 14450 14301 0 0 uc021rra.1 20817 20668 0 0 uc021rrb.1 36535 36386 0 0 uc021rrc.1 36535 36386 0 0 uc031qnz.1 36535 36386 0 0 uc021rrd.2 81504 81355 0 0 uc021rre.1 36394 36245 0 0 uc010tnt.2 15937 15788 0 0 uc001wli.4 17591 17442 392.464 207.525 uc021rrf.1 59994 59845 18.7647 2.89188 uc010alb.3 11377 11228 0 0 uc031qoa.1 44369 44220 0 0 uc031qob.1 44369 44220 0 0 uc031qoc.1 44369 44220 0 0 uc010tnu.3 14966 14817 1.08237 0.673726 uc021rrg.2 14966 14817 1.08237 0.673726 uc021rrh.2 14966 14817 1.08237 0.673726 uc021rri.2 14966 14817 1.08237 0.673726 uc021rrj.2 14966 14817 1.08237 0.673726 uc001wlj.2 17732 17583 24 12.5888 uc001wlk.2 7810 7661 0 0 uc010tnv.2 7251 7102 0 0 uc001wlm.3 7139 6990 0 0 uc001wll.3 6561 6412 0 0 uc001wls.3 6288 6139 0 0 uc001wlt.3 9857 9708 159.883 151.894 uc010tnw.2 9857 9708 159.883 151.894 uc010ald.2 5991 5842 455.204 718.641 uc010ale.2 5991 5842 455.204 718.641 uc001wlu.4 9818 9669 1458.9 1391.59 uc010tnx.2 9818 9669 1458.9 1391.59 uc001wlv.3 10546 10397 127.911 113.466 uc001wlw.3 10466 10317 160.775 143.725 uc001wly.3 10466 10317 160.775 143.725 uc001wlz.3 10466 10317 160.775 143.725 uc001wmc.3 9960 9811 328.859 309.146 uc010tny.2 9960 9811 328.859 309.146 uc001wma.4 9958 9809 398.488 374.678 uc001wmb.4 9958 9809 398.488 374.678 uc001wmf.2 1384 1235 18 134.423 uc001wmg.3 2799 2650 1165 4054.6 uc001wmh.3 2799 2650 1165 4054.6 uc031qod.1 994 845 0 0 uc001wml.1 14452 14303 238.071 153.514 uc001wmm.1 8063 7914 663.049 772.711 uc001wmn.1 13889 13740 0.29702 0.199373 uc010alg.1 13363 13214 453.745 316.698 uc001wmo.1 10338 10189 0 0 uc001wmp.3 15435 15286 0 0 uc010alh.1 5736 5587 0 0 uc001wmq.3 6046 5897 231.055 361.37 uc010alj.3 3600 3451 142.784 381.594 uc001wmr.3 8230 8081 25 28.5327 uc001wms.3 8230 8081 25 28.5327 uc001wne.3 2552 2403 0.00215404 0.00826739 uc001wnf.3 2552 2403 0.00215404 0.00826739 uc001wng.3 2529 2380 18.5273 71.7966 uc001wnh.3 2529 2380 18.5273 71.7966 uc001wnq.1 1392 1243 135.511 1005.47 uc001wnu.2 6798 6649 97.4192 135.131 uc001wnr.3 6800 6651 73.3847 101.762 uc001wns.3 6800 6651 73.3847 101.762 uc001wnv.3 6800 6651 73.3847 101.762 uc010alk.2 6343 6194 1.91645e-05 2.8536e-05 uc001wnw.3 6345 6196 1.41391e-05 2.10463e-05 uc001wnx.3 6345 6196 1.41391e-05 2.10463e-05 uc010all.3 6345 6196 1.41391e-05 2.10463e-05 uc010toe.1 6021 5872 784.916 1232.83 uc021rro.1 27626 27477 41.6206 13.9703 uc001wol.1 5277 5128 766.849 1379.21 uc001wom.1 2114 1965 368.151 1727.95 uc001wor.3 1903 1754 21.5515 113.322 uc010alo.3 1903 1754 21.5515 113.322 uc021rrp.1 1077 928 5.98646e-08 5.94963e-07 uc001wos.3 6538 6389 465.599 672.12 uc010alp.3 4930 4781 122.749 236.792 uc001wou.3 3337 3188 6.31818 18.2785 uc021rrq.1 1059 910 96.5165 978.2 uc010alr.3 12666 12517 0 0 uc010tok.2 12666 12517 0 0 uc010tol.2 12666 12517 0 0 uc010als.2 7207 7058 27.2048 35.5494 uc010tom.2 12345 12196 0 0 uc010ton.2 12345 12196 0 0 uc010too.2 12345 12196 0 0 uc010alt.3 12096 11947 0 0 uc010top.2 12096 11947 0 0 uc010toq.2 12096 11947 0 0 uc010alu.3 6688 6539 4.2658 6.01667 uc001wpc.3 11585 11436 0 0 uc010tor.2 11585 11436 0 0 uc010tos.2 10509 10360 9.5391e-08 8.4921e-08 uc010alv.3 10452 10303 1.72422e-05 1.54346e-05 uc010tot.2 10452 10303 1.72422e-05 1.54346e-05 uc010tou.2 10452 10303 1.72422e-05 1.54346e-05 uc010tov.2 10452 10303 1.72422e-05 1.54346e-05 uc010tow.2 10452 10303 1.72422e-05 1.54346e-05 uc010tox.2 10452 10303 1.72422e-05 1.54346e-05 uc001wpd.3 6790 6641 0.142797 0.198314 uc010toy.2 6790 6641 0.142797 0.198314 uc010toz.2 6790 6641 0.142797 0.198314 uc010tpa.2 5910 5761 23.0504 36.9019 uc010tpb.2 5910 5761 23.0504 36.9019 uc001wpf.4 20503 20354 62 28.0937 uc010tpc.2 12056 11907 0 0 uc001wph.4 11407 11258 335.685 275.004 uc010alw.3 11388 11239 1648 1352.38 uc001wpo.1 59226 59077 3.00936 0.469811 uc021rrs.1 84 84 0 0 uc001wqc.3 27049 26900 0 0 uc021rrt.1 27049 26900 0 0 uc021rru.1 22 22 0 0 uc001wqe.4 3206 3057 0 0 uc010tpd.3 5857 5708 0 0 uc001wqf.3 22091 21942 0 0 uc021rrw.1 103 103 0 0 uc010tpe.1 48947 48798 86.567 16.3613 uc001wqk.2 60718 60569 8.95726 1.36393 uc010tpf.1 60718 60569 8.95726 1.36393 uc001wql.1 8539 8390 44.5185 48.938 uc010amd.2 93724 93575 106.103 10.4577 uc001wqm.2 113574 113425 34.9286 2.84014 uc001wqn.2 113574 113425 34.9286 2.84014 uc010amf.2 113574 113425 34.9286 2.84014 uc010tpg.2 113574 113425 34.9286 2.84014 uc010tph.2 113574 113425 34.9286 2.84014 uc010tpi.2 113509 113360 59.9367 4.87641 uc001wqp.2 16082 15933 0 0 uc001wqr.2 16082 15933 0 0 uc001wqq.4 20521 20372 2.97625 1.34742 uc001wqt.1 10165 10016 0 0 uc021rry.1 71345 71196 0.727641 0.0942604 uc001wqw.4 60333 60184 0 0 uc001wqx.4 60333 60184 0 0 uc010amh.3 60333 60184 0 0 uc001wqy.4 70981 70832 90.969 11.8449 uc021rrz.1 69808 69659 0 0 uc001wri.3 32126 31977 52.9042 15.2588 uc001wrk.4 299839 299690 82.169 2.52874 uc010amj.3 299839 299690 82.169 2.52874 uc010tpl.2 283308 283159 0 0 uc021rsb.1 146655 146506 193.157 12.1597 uc001wrl.3 82746 82597 11.0243 1.23099 uc001wrm.3 82440 82291 363.741 40.7669 uc001wrn.3 82440 82291 363.741 40.7669 uc001wro.3 82440 82291 363.741 40.7669 uc001wrp.3 82440 82291 363.741 40.7669 uc021rsd.1 79 79 0 0 uc010aml.3 405341 405192 0 0 uc001wrq.3 503790 503641 95.1424 1.74229 uc021rse.1 21 21 0 0 uc001wrr.3 1481 1332 0 0 uc001wrs.3 864924 864775 1.00032 0.0106685 uc001wrt.3 864924 864775 1.00032 0.0106685 uc001wru.3 864924 864775 1.00032 0.0106685 uc001wrv.3 864924 864775 1.00032 0.0106685 uc001wrw.3 465861 465712 0 0 uc010tpo.2 575 426 24 519.6 uc001wso.3 46670 46521 448.667 88.9493 uc010tpp.2 46670 46521 448.667 88.9493 uc010tpq.2 46670 46521 448.667 88.9493 uc001wsp.3 38477 38328 342.987 82.5332 uc001wsq.3 36980 36831 4.33396 1.08527 uc001wsv.1 11051 10902 0 0 uc001wsy.2 151971 151822 90.1724 5.47781 uc001wsz.2 151971 151822 90.1724 5.47781 uc010tps.2 151971 151822 90.1724 5.47781 uc001wta.4 195156 195007 1145.01 54.1537 uc001wtc.2 151740 151591 0.192828 0.0117318 uc031qof.1 151740 151591 0.192828 0.0117318 uc001wtd.3 25109 24960 237.222 87.6552 uc010tpt.2 25109 24960 237.222 87.6552 uc010tpu.2 25026 24877 0 0 uc001wth.1 3013 2864 2 6.44058 uc010tpx.1 37563 37414 0 0 uc001wtl.3 45573 45424 149.245 30.3027 uc031qog.1 94862 94713 0 0 uc001wtp.3 1207 1058 0 0 uc001wtw.1 3202 3053 6.04315 18.2559 uc001wty.4 20239 20090 376.762 172.964 uc010amq.3 11814 11665 29.238 23.1169 uc021rsh.2 1768 1619 25.8915 147.496 uc010amr.2 309872 309723 0 0 uc001wub.4 348144 347995 0 0 uc001wuc.3 353347 353198 25.4194 0.663767 uc001wud.3 353347 353198 25.4194 0.663767 uc001wue.3 353347 353198 25.4194 0.663767 uc010ams.3 353347 353198 25.4194 0.663767 uc010amt.3 353347 353198 25.4194 0.663767 uc001wug.3 430192 430043 46.7684 1.00302 uc001wuh.3 70073 69924 0 0 uc001wui.3 47186 47037 0 0 uc001wuj.3 47186 47037 0 0 uc001wul.1 5065 4916 0 0 uc021rsi.1 1176 1027 0 0 uc001wuq.3 22690 22541 36.5 14.9344 uc001wur.3 22690 22541 36.5 14.9344 uc001wus.3 22690 22541 36.5 14.9344 uc010amx.3 22690 22541 36.5 14.9344 uc001wuw.4 8036 7887 2835 3315.19 uc010amy.2 14283 14134 0 0 uc001wux.3 19451 19302 0 0 uc010tqe.1 80755 80606 0 0 uc001wuy.4 85922 85773 0.000589264 6.33618e-05 uc001wuz.4 85922 85773 0.000589264 6.33618e-05 uc001wva.4 84896 84747 49.3689 5.37275 uc001wvb.4 84896 84747 49.3689 5.37275 uc001wvc.4 84896 84747 49.3689 5.37275 uc001wve.1 41914 41765 0 0 uc001wvf.4 84070 83921 0.781455 0.0858818 uc001wvg.4 84070 83921 0.781455 0.0858818 uc001wvh.4 84070 83921 0.781455 0.0858818 uc001wvi.4 84070 83921 0.781455 0.0858818 uc010amz.3 84070 83921 0.781455 0.0858818 uc001wvj.4 74968 74819 0 0 uc001wvl.1 21155 21006 2 0.878121 uc021rsk.1 129 129 0 0 uc001wvm.3 296989 296840 0 0 uc010ana.3 205123 204974 0 0 uc001wvo.3 9954 9805 0 0 uc001wvp.1 6843 6694 2 2.75557 uc010anb.1 35192 35043 49.1454 12.9345 uc001wvu.3 45931 45782 28.9872 5.83955 uc001wvv.3 112219 112070 56.3551 4.6378 uc001wvw.3 112219 112070 56.3551 4.6378 uc010anc.3 112219 112070 56.3551 4.6378 uc001wvy.4 31503 31354 140.639 41.3696 uc001wvz.4 31503 31354 140.639 41.3696 uc010and.3 31503 31354 140.639 41.3696 uc001wwa.1 5865 5716 128.082 206.664 uc010ane.3 99 99 0 0 uc001wwc.2 31491 31342 38.1056 11.2132 uc001wwd.4 64958 64809 119.825 17.0522 uc010anf.3 64958 64809 119.825 17.0522 uc001wwe.4 46194 46045 0 0 uc010ang.3 25820 25671 0.244448 0.0878237 uc031qoi.1 437743 437594 0 0 uc031qoj.1 437743 437594 0 0 uc031qok.1 30543 30394 0.5 0.151722 uc031qol.1 30543 30394 0.5 0.151722 uc021rsl.1 124 124 0 0 uc021rsp.1 301 152 1635.81 99256.3 uc001wwn.3 15976 15827 198.91 115.912 uc001wwo.3 15976 15827 198.91 115.912 uc001wwp.3 15976 15827 198.91 115.912 uc010ank.3 15976 15827 198.91 115.912 uc001wwr.3 2711 2562 864.866 3113.42 uc001www.3 60048 59899 0 0 uc010tqg.2 60048 59899 0 0 uc010tqh.2 60048 59899 0 0 uc001wwx.3 15070 14921 1141.75 705.734 uc001wxg.4 4037 3888 504.144 1195.9 uc021rsu.1 528 379 927.856 22579.2 uc001wxv.3 10697 10548 34.202 29.9054 uc001wxw.2 13900 13751 0 0 uc001wxx.2 13900 13751 0 0 uc021rsv.1 13900 13751 0 0 uc010ant.2 16325 16176 261.795 149.265 uc001wyd.4 99985 99836 25.9382 2.39618 uc001wye.4 73042 72893 2.03226 0.257135 uc001wyf.4 73042 72893 2.03226 0.257135 uc021rsw.1 73042 72893 2.03226 0.257135 uc021rsx.1 72940 72791 0 0 uc021rsz.1 88 88 0 0 uc001wyq.3 32811 32662 5.5 1.55306 uc001wyr.3 32811 32662 5.5 1.55306 uc001wys.3 32811 32662 5.5 1.55306 uc010any.3 32811 32662 5.5 1.55306 uc010tqr.1 5684 5535 243.104 405.081 uc001wza.4 17487 17338 309.948 164.876 uc010aoa.3 17487 17338 309.948 164.876 uc021rta.1 32165 32016 0 0 uc001wzb.4 241606 241457 15.6332 0.597138 uc021rtb.1 104 104 0 0 uc001wzc.3 78869 78720 3.40818 0.399305 uc001wzd.3 78869 78720 3.40818 0.399305 uc001wze.3 32614 32465 17.1028 4.8587 uc001wzf.3 17081 16932 0 0 uc001wzg.3 13444 13295 43.9841 30.5123 uc021rtd.1 107 107 0 0 uc001wzh.3 122567 122418 0 0 uc010aoc.2 106993 106844 0 0 uc001wzi.3 109497 109348 0 0 uc001wzj.3 109497 109348 0 0 uc021rte.1 109497 109348 0 0 uc001wzk.3 92209 92060 0 0 uc010aod.3 15193 15044 851 521.716 uc001wzq.3 9012 8863 0 0 uc001wzr.3 14307 14158 0 0 uc001wzt.4 84566 84417 51.6517 5.64316 uc001wzu.4 84566 84417 51.6517 5.64316 uc010tqv.2 3158 3009 40.297 123.515 uc010tqw.2 11511 11362 7.4003e-05 6.00706e-05 uc010tqx.2 20821 20672 80.4001 35.8709 uc001wzy.3 6499 6350 21.3314 30.9823 uc001xaa.3 44823 44674 172.722 35.6583 uc010tqy.2 44823 44674 172.722 35.6583 uc001xap.3 23262 23113 11.7964 4.70716 uc001xar.3 23262 23113 11.7964 4.70716 uc010aoi.1 8896 8747 0 0 uc010aoj.2 20323 20174 417.838 191.022 uc010tra.1 27968 27819 0 0 uc001xay.3 28748 28599 80 25.7992 uc001xba.3 136260 136111 0 0 uc001xbb.4 225704 225555 86.8278 3.55037 uc001xbc.3 225704 225555 86.8278 3.55037 uc001xbe.3 15875 15726 133.892 78.5246 uc001xbf.2 47153 47004 0 0 uc001xbg.2 38528 38379 797.452 191.637 uc021rtg.1 116 116 0 0 uc001xbo.3 22363 22214 152.563 63.3417 uc001xbp.3 22363 22214 152.563 63.3417 uc021rti.1 1323 1174 189.874 1491.65 uc001xbq.1 18551 18402 2472.1 1238.99 uc001xbr.3 16214 16065 803.5 461.289 uc021rtj.1 16214 16065 803.5 461.289 uc001xbu.3 82309 82160 186.876 20.9779 uc010aoo.3 81458 81309 0 0 uc021rtk.1 2136 1987 1243.06 5769.79 uc001xbv.3 75927 75778 705.591 85.8771 uc001xcb.3 104378 104229 1080.7 95.6282 uc001xcc.3 104378 104229 1080.7 95.6282 uc001xcd.3 104378 104229 1080.7 95.6282 uc001xce.3 104378 104229 1080.7 95.6282 uc001xcf.2 104378 104229 1080.7 95.6282 uc010trb.2 104378 104229 1080.7 95.6282 uc010aoq.3 40310 40161 0 0 uc010trc.2 23311 23162 0 0 uc001xcg.3 21242 21093 386.754 169.108 uc031qoq.1 2520 2371 265.023 1030.91 uc010aos.3 1473 1324 0 0 uc001xch.3 182939 182790 2 0.100913 uc001xci.3 36959 36810 0 0 uc001xcj.3 69895 69746 2.65968 0.351704 uc001xck.3 34105 33956 12.9509 3.51763 uc010aot.1 36472 36323 66.6641 16.9269 uc001xcl.1 55160 55011 0 0 uc001xcm.3 69722 69573 27.596 3.65825 uc001xcn.3 69722 69573 27.596 3.65825 uc010trf.3 69722 69573 27.596 3.65825 uc001xco.3 34064 33915 169.016 45.9626 uc021rtn.1 108612 108463 0 0 uc001xcr.3 117650 117501 0 0 uc001xcu.4 6570 6421 88.4826 127.093 uc001xcv.3 21192 21043 43.169 18.9205 uc010tri.2 21192 21043 43.169 18.9205 uc010trj.2 21192 21043 43.169 18.9205 uc001xcx.4 22196 22047 143.667 60.1 uc010aow.3 22196 22047 143.667 60.1 uc010trk.2 22196 22047 143.667 60.1 uc021rtq.1 75 75 0 0 uc001xdf.3 35521 35372 314.384 81.9725 uc021rtr.1 22602 22453 0 0 uc010apc.3 22005 21856 0 0 uc010trp.2 22005 21856 0 0 uc001xdj.2 27205 27056 432.286 147.359 uc001xdk.2 27205 27056 432.286 147.359 uc021rtt.1 27205 27056 432.286 147.359 uc010apf.1 7609 7460 47.5832 58.8279 uc001xdo.3 75230 75081 71.8495 8.82595 uc001xdp.3 75230 75081 71.8495 8.82595 uc001xdq.3 75230 75081 71.8495 8.82595 uc010apg.1 33920 33771 0 0 uc001xdr.1 12776 12627 15 10.9562 uc010trq.1 12776 12627 15 10.9562 uc001xdt.4 121447 121298 100.376 7.63209 uc001xdu.4 121447 121298 100.376 7.63209 uc010trr.2 121447 121298 100.376 7.63209 uc010trs.2 121447 121298 100.376 7.63209 uc001xdv.4 120840 120691 4.34165e-06 3.31778e-07 uc010trt.2 97533 97384 0 0 uc010tru.1 45658 45509 106.363 21.5555 uc010trv.2 14253 14104 0 0 uc001xdw.3 10282 10133 0 0 uc001xdx.3 10282 10133 0 0 uc010trw.2 9484 9335 0 0 uc001xdy.4 77501 77352 3.26972 0.389859 uc001xea.2 182743 182594 2.05284e-06 1.0369e-07 uc001xeb.1 141957 141808 0 0 uc031qou.1 107965 107816 200.687 17.1674 uc001xec.2 16241 16092 83.0466 47.597 uc001xef.4 20921 20772 126.474 56.1555 uc001xeg.4 20921 20772 126.474 56.1555 uc001xeh.4 20921 20772 126.474 56.1555 uc010try.2 20921 20772 126.474 56.1555 uc001xei.4 20795 20646 0 0 uc001xej.4 18170 18021 633.954 324.449 uc001xeo.3 2173 2024 0 0 uc001xep.1 143847 143698 0 0 uc001xer.4 42904 42755 590.145 127.303 uc001xeq.2 77223 77074 397.809 47.603 uc010apm.3 16486 16337 332.18 187.529 uc001xew.4 53336 53187 15.2137 2.63813 uc010apn.3 53336 53187 15.2137 2.63813 uc001xex.4 39307 39158 0 0 uc001xey.4 49840 49691 685.573 127.246 uc021rtx.1 20 20 0 0 uc001xfa.4 2588 2439 0 0 uc010apq.2 74275 74126 210.243 26.1589 uc001xfd.3 233940 233791 80.6165 3.18027 uc001xfe.3 233940 233791 80.6165 3.18027 uc001xfg.2 71872 71723 35.1688 4.52238 uc001xfh.2 102620 102471 82.7443 7.4474 uc001xfi.3 102620 102471 82.7443 7.4474 uc001xfj.1 71760 71611 0 0 uc001xfk.3 102508 102359 2.92502e-06 2.63554e-07 uc010trz.2 102487 102338 0 0 uc010tsa.2 363412 363263 2.70631 0.0687107 uc001xfn.3 229184 229035 1.24292 0.0500506 uc010tsb.2 73814 73665 3.5035 0.43864 uc001xfo.3 7619 7470 7.54854 9.31987 uc021rtz.1 84174 84025 3 0.329291 uc010tsc.1 31418 31269 0 0 uc031qow.1 38885 38736 0 0 uc001xfq.2 52859 52710 1404.82 245.807 uc001xfr.2 52859 52710 1404.82 245.807 uc001xfs.2 52859 52710 1404.82 245.807 uc021rua.1 50638 50489 85.1349 15.5517 uc021rub.1 178 29 121.632 38682.9 uc001xft.3 34072 33923 96 26.1003 uc010tsd.1 94190 94041 1.00017 0.0980898 uc001xfu.1 105887 105738 0 0 uc010tse.1 22370 22221 0 0 uc010apt.2 16829 16680 0 0 uc001xgb.2 89129 88980 0 0 uc021rue.1 142 142 0 0 uc021rug.1 20 20 0 0 uc001xgk.3 107936 107787 0 0 uc001xgl.3 373485 373336 70.9809 1.75351 uc001xgm.3 373485 373336 70.9809 1.75351 uc021ruh.1 228904 228755 2119.25 85.4434 uc010apw.1 22679 22530 26.9433 11.0295 uc010apx.1 26393 26244 0 0 uc010apy.3 150835 150686 502.8 30.7744 uc010apz.1 35476 35327 445.666 116.351 uc001xgn.3 86509 86360 567.845 60.6436 uc021rui.1 86509 86360 567.845 60.6436 uc001xgo.3 85109 84960 11.6585 1.2656 uc001xgp.3 4225 4076 175.774 397.729 uc010aqa.3 64378 64229 687.361 98.701 uc001xgq.3 58955 58806 0 0 uc001xgr.3 17126 16977 1002.82 544.792 uc001xgs.3 12309 12160 606.902 460.312 uc010tsi.2 12309 12160 606.902 460.312 uc001xgt.3 10496 10347 3.22203e-07 2.87199e-07 uc010aqe.2 52407 52258 0 0 uc001xhb.3 71967 71818 1779.38 228.508 uc010aqf.3 71967 71818 1779.38 228.508 uc001xhd.4 9005 8856 0 0 uc021ruk.1 1284 1135 0 0 uc001xhh.4 20967 20818 54.5308 24.1585 uc010aqg.3 20378 20229 7.24818e-07 3.30463e-07 uc001xhi.2 29117 28968 33.8188 10.7673 uc021rul.1 2142 1993 788.453 3648.68 uc021rum.1 2405 2256 3.36622 13.7617 uc001xhj.3 7332 7183 0 0 uc001xhk.4 2769 2620 1220 4294.64 uc001xhl.1 39477 39328 0 0 uc001xhm.1 3271 3122 6 17.725 uc001xhn.1 39868 39719 67.8649 15.7585 uc001xho.1 39868 39719 67.8649 15.7585 uc001xhp.2 16750 16601 2001.38 1111.89 uc010aqh.1 13701 13552 353.512 240.585 uc001xhq.1 6284 6135 583.378 877.007 uc001xhv.3 21006 20857 177.536 78.5057 uc001xhw.2 21006 20857 177.536 78.5057 uc021rup.1 21006 20857 177.536 78.5057 uc010tsj.2 30231 30082 30.63 9.39093 uc010tsk.2 30231 30082 30.63 9.39093 uc010tsl.2 148295 148146 138.22 8.60498 uc010tsm.2 148295 148146 138.22 8.60498 uc001xia.3 75867 75718 204.546 24.9149 uc001xib.3 2045 1896 23.3402 113.536 uc001xid.3 47073 46924 424.066 83.3502 uc010tso.2 47073 46924 424.066 83.3502 uc021ruu.1 82 82 0 0 uc021ruv.1 4394 4245 0 0 uc001xin.3 333530 333381 45.3027 1.25329 uc001xio.3 333530 333381 45.3027 1.25329 uc001xir.4 333530 333381 45.3027 1.25329 uc010tsp.2 333530 333381 45.3027 1.25329 uc001xip.3 331392 331243 94.1374 2.6211 uc001xiq.3 331392 331243 94.1374 2.6211 uc021rux.1 85 85 0 0 uc001xiu.3 12163 12014 0.666667 0.511787 uc001xiv.3 12163 12014 0.666667 0.511787 uc010tsq.1 12163 12014 0.666667 0.511787 uc001xiw.3 551609 551460 0 0 uc001xix.3 674401 674252 11.4176 0.156179 uc001xiy.3 674401 674252 11.4176 0.156179 uc010tss.2 674401 674252 11.4176 0.156179 uc010tst.2 674401 674252 11.4176 0.156179 uc010tsu.2 358563 358414 258.772 6.65887 uc001xiz.3 11161 11012 209.607 175.552 uc010tsv.2 11161 11012 209.607 175.552 uc001xja.2 39158 39009 1.39333 0.329425 uc010aqn.2 39158 39009 1.39333 0.329425 uc001xjb.2 38692 38543 0 0 uc001xjc.4 94767 94618 599.808 58.4664 uc001xjd.4 94767 94618 599.808 58.4664 uc021rva.1 105 105 0 0 uc001xjg.3 26200 26051 2238 792.325 uc001xjl.1 56248 56099 183.638 30.1908 uc010tsw.1 20506 20357 458.246 207.612 uc001xjm.1 5132 4983 0 0 uc001xjn.1 19071 18922 154.203 75.1613 uc010tsx.1 11005 10856 0 0 uc001xjo.1 8001 7852 0 0 uc001xjp.1 8013 7864 0 0 uc031qpe.1 3128 2979 31.1404 96.4099 uc001xjs.3 31858 31709 1214.36 353.21 uc001xjz.4 32566 32417 15 4.26762 uc001xjy.2 3105 2956 0 0 uc010aqq.3 67548 67399 0 0 uc001xkd.3 658315 658166 0.224502 0.00314595 uc010aqr.3 658315 658166 0.224502 0.00314595 uc001xke.3 678103 677954 97.5041 1.32645 uc001xkf.2 776243 776094 429.571 5.10491 uc001xkg.2 910440 910291 108.54 1.09971 uc031qpf.1 7782 7633 0 0 uc001xkt.3 52544 52395 111.697 19.6617 uc001xku.3 52544 52395 111.697 19.6617 uc001xkv.3 52544 52395 111.697 19.6617 uc001xkw.3 52544 52395 111.697 19.6617 uc001xky.3 52544 52395 111.697 19.6617 uc001xkx.3 52255 52106 188.92 33.4394 uc010aqt.3 52255 52106 188.92 33.4394 uc010tte.2 52255 52106 188.92 33.4394 uc001xla.2 91780 91631 2 0.201305 uc001xlb.2 94510 94361 0 0 uc010aqu.2 94510 94361 0 0 uc021rvg.1 64012 63863 1194.08 172.446 uc021rvh.1 64012 63863 1194.08 172.446 uc001xld.4 30809 30660 0 0 uc001xle.3 63723 63574 76.1324 11.0448 uc001xlf.4 63723 63574 76.1324 11.0448 uc001xlg.4 63723 63574 76.1324 11.0448 uc010aqx.3 63723 63574 76.1324 11.0448 uc021rvi.1 1855 1706 898.032 4854.9 uc001xli.2 18937 18788 0 0 uc010ttf.1 43745 43596 6.02492 1.2746 uc001xlk.3 103552 103403 1040.24 92.783 uc010aqz.3 103552 103403 1040.24 92.783 uc001xll.3 45104 44955 4.58519 0.940692 uc021rvj.1 3723 3574 1.19025 3.0715 uc001xln.1 3429 3280 593.107 1667.73 uc001xlo.3 4894 4745 844.044 1640.58 uc001xlp.3 4889 4740 391.459 761.686 uc001xls.2 152970 152821 15783.4 952.542 uc001xlt.2 152970 152821 15783.4 952.542 uc021rvp.1 197 48 0 0 uc001xmd.3 7749 7600 7.90738 9.59593 uc021rvq.1 2169 2020 46.8013 213.685 uc001xmi.2 33574 33425 8 2.20743 uc001xmn.4 105416 105267 2.83044e-08 2.47987e-09 uc001xmo.2 207978 207829 1867.26 82.864 uc010are.1 207978 207829 1867.26 82.864 uc010arf.1 102383 102234 560.893 50.6002 uc001xmp.2 13400 13251 1656.19 1152.73 uc001xmq.3 71 71 0 0 uc021rvt.1 271 122 0 0 uc001xmr.1 107902 107753 4.24439 0.36329 uc010ttl.2 1843 1694 0 0 uc001xms.3 210092 209943 6.91898 0.303954 uc001xmt.3 210092 209943 6.91898 0.303954 uc001xmu.3 153123 152974 109.77 6.6181 uc001xmv.3 151833 151684 1693.34 102.961 uc010ttm.2 141170 141021 0 0 uc021rvu.1 889 740 30 373.902 uc021rvv.1 634422 634273 0.000213722 3.1077e-06 uc001xna.4 634083 633934 0.00035364 5.145e-06 uc010ttn.2 634083 633934 0.00035364 5.145e-06 uc021rvw.1 629677 629528 0.252275 0.00369595 uc021rvx.1 629677 629528 0.252275 0.00369595 uc021rvy.1 629677 629528 0.252275 0.00369595 uc021rvz.1 629677 629528 0.252275 0.00369595 uc001xmx.4 633453 633304 0.000902257 1.31397e-05 uc001xmy.4 633453 633304 0.000902257 1.31397e-05 uc010tto.2 633453 633304 0.000902257 1.31397e-05 uc021rwa.1 633453 633304 0.000902257 1.31397e-05 uc021rwb.1 633453 633304 0.000902257 1.31397e-05 uc010arg.3 53091 52942 0 0 uc010ttp.1 128560 128411 0 0 uc021rwc.1 98061 97912 0 0 uc001xng.3 33318 33169 20.1421 5.60067 uc001xnh.3 33318 33169 20.1421 5.60067 uc001xni.3 33318 33169 20.1421 5.60067 uc001xnj.3 33318 33169 20.1421 5.60067 uc010ttr.2 33318 33169 20.1421 5.60067 uc010tts.2 33318 33169 20.1421 5.60067 uc010ttt.2 33318 33169 20.1421 5.60067 uc001xnk.3 20144 19995 154.469 71.2505 uc021rwd.1 72 72 0 0 uc001xnn.4 42664 42515 0 0 uc001xno.3 62856 62707 676.608 99.5151 uc010ttu.2 62856 62707 676.608 99.5151 uc001xnp.3 49742 49593 510.175 94.8782 uc001xnq.4 37770 37621 0 0 uc001xnr.3 87257 87108 211.501 22.3935 uc001xnv.3 87257 87108 211.501 22.3935 uc010ark.3 86875 86726 0 0 uc001xnt.1 69278 69129 0 0 uc001xnu.3 75725 75576 1900.29 231.902 uc001xnw.4 37143 36994 17.4582 4.35248 uc010arl.3 37143 36994 17.4582 4.35248 uc010ttw.2 37143 36994 17.4582 4.35248 uc010ttx.2 35024 34875 363.033 96.0063 uc010tty.2 35024 34875 363.033 96.0063 uc010arm.3 13931 13782 272.907 182.629 uc010arn.3 12242 12093 51.6523 39.3934 uc001xoi.1 16908 16759 0 0 uc001xok.1 2462 2313 801.815 3197.17 uc001xol.1 6571 6422 265.188 380.847 uc010tuc.3 38435 38286 48.2888 11.6325 uc001xom.4 8039 7890 275.163 321.648 uc001xon.5 6600 6451 1340.17 1916.02 uc001xoo.3 4061 3912 4 9.43037 uc001xop.3 3045 2896 1 3.1847 uc001xoq.4 58854 58705 35.3583 5.555 uc010aru.3 58854 58705 35.3583 5.555 uc010arv.3 58854 58705 35.3583 5.555 uc021rwi.1 73 73 0 0 uc001xow.3 33635 33486 174.16 47.9681 uc010tue.2 33622 33473 251.075 69.1793 uc001xox.3 33548 33399 1.58532 0.437775 uc001xoy.2 80318 80169 216.52 24.9092 uc010ary.2 18469 18320 249.153 125.432 uc010tuf.2 36908 36759 0 0 uc001xoz.2 45674 45525 0.000139878 2.83379e-05 uc001xpa.2 45674 45525 0.000139878 2.83379e-05 uc001xpb.2 45674 45525 0.000139878 2.83379e-05 uc010arz.2 45674 45525 0.000139878 2.83379e-05 uc010tug.2 45674 45525 0.000139878 2.83379e-05 uc010tuh.2 45674 45525 0.000139878 2.83379e-05 uc010tui.2 45674 45525 0.000139878 2.83379e-05 uc010tuj.2 34203 34054 686.984 186.057 uc001xpe.3 13132 12983 31.044 22.0532 uc010tuk.2 13177 13028 78.1999 55.36 uc010tul.2 8827 8678 0 0 uc010tum.2 8827 8678 0 0 uc010tun.2 9230 9081 0 0 uc001xph.3 12859 12710 483.201 350.631 uc010tup.2 46738 46589 9.77002 1.9341 uc001xpm.1 51067 50918 136.108 24.6536 uc001xpp.2 115462 115313 107.422 8.59175 uc010asb.2 115455 115306 113.744 9.09794 uc001xpq.3 23267 23118 0 0 uc001xpw.4 11546 11397 1.20769 0.977313 uc021rwl.1 2109 1960 0.792307 3.72825 uc001xpz.3 1849 1700 79.5 431.306 uc031qph.1 1849 1700 79.5 431.306 uc021rwn.1 95 95 0 0 uc001xqe.1 1797 1648 0 0 uc001xqf.1 22397 22248 0 0 uc001xqh.3 23541 23392 347.851 137.149 uc001xqi.3 23649 23500 4.53853 1.78121 uc001xqj.4 73945 73796 1807.11 225.85 uc001xql.4 55977 55828 751.315 124.119 uc001xqm.1 12732 12583 30.5298 22.3773 uc001xqo.1 3327 3178 0 0 uc010tuu.2 10001 9852 0 0 uc001xqu.2 19343 19194 0 0 uc001xqs.3 21857 21708 1018.94 432.908 uc001xqt.2 21857 21708 1018.94 432.908 uc001xqv.2 21857 21708 1018.94 432.908 uc010tuw.1 21857 21708 1018.94 432.908 uc001xrc.2 6683 6534 1480 2089.06 uc001xrh.3 8501 8352 10.5 11.5949 uc001xri.3 8501 8352 10.5 11.5949 uc001xrn.3 3457 3308 122 340.143 uc010tva.2 3457 3308 122 340.143 uc010asi.3 2592 2443 0 0 uc001xrp.3 2005 1856 0 0 uc010asj.3 44896 44747 165.394 34.0896 uc010tvb.2 44485 44336 39.5442 8.2261 uc010tvc.2 44345 44196 777.966 162.347 uc001xrq.3 40568 40419 291.096 66.423 uc001xrr.3 24551 24402 0 0 uc001xrs.2 69573 69424 989 131.388 uc010tvd.1 42708 42559 0 0 uc001xrv.3 23790 23641 95.142 37.1171 uc001xrw.2 49192 49043 86.8429 16.3315 uc010ask.2 226100 225951 1.08252e-07 4.41864e-09 uc001xrx.3 293875 293726 0 0 uc001xry.1 84343 84194 487.841 53.4398 uc001xrz.3 142213 142064 15.3902 0.999147 uc001xsa.3 171936 171787 366.467 19.6749 uc001xse.3 73539 73390 0 0 uc001xsf.2 96688 96539 0 0 uc010asl.1 96688 96539 0 0 uc001xsg.2 97997 97848 53.2223 5.0166 uc010asm.1 97997 97848 53.2223 5.0166 uc010tve.3 98321 98172 240.278 22.5732 uc031qpj.1 98321 98172 240.278 22.5732 uc001xsh.3 50876 50727 157.471 28.6305 uc001xsi.3 50876 50727 157.471 28.6305 uc001xsj.1 24769 24620 20.3174 7.61112 uc001xsk.1 23045 22896 178.329 71.8341 uc001xsl.3 48438 48289 190.933 36.4671 uc001xsm.3 3106 2957 82.9494 258.72 uc001xsn.1 2557 2408 63.5286 243.322 uc001xso.3 130491 130342 0 0 uc001xsr.3 130491 130342 0 0 uc001xsq.1 90969 90820 2.00194 0.2033 uc001xss.3 11746 11597 0 0 uc001xst.2 21129 20980 4.88327 2.14671 uc001xsx.2 43921 43772 0 0 uc010asn.1 43921 43772 0 0 uc010aso.1 18089 17940 0 0 uc010tvg.1 27027 26878 0 0 uc001xsw.2 43919 43770 0 0 uc010tvh.1 26273 26124 1 0.353043 uc001xtc.1 19052 18903 284.413 138.767 uc001xtd.3 19053 18904 270.587 132.014 uc001xtf.2 77737 77588 2.5 0.297176 uc010asq.1 77737 77588 2.5 0.297176 uc021rws.1 73 73 0 0 uc001xtj.3 10711 10562 207.098 180.841 uc001xtk.3 10711 10562 207.098 180.841 uc010ass.3 10711 10562 207.098 180.841 uc001xtl.4 1167 1018 0 0 uc001xtm.3 10235 10086 198.706 181.702 uc021rwt.1 1803 1654 3.44972 19.2361 uc001xtq.1 13826 13677 4.55028 3.06842 uc010tvk.1 10697 10548 0 0 uc001xtw.3 11443 11294 5481 4475.89 uc001xue.5 9528 9379 238.5 234.531 uc031qpl.1 9528 9379 238.5 234.531 uc031qpm.1 9528 9379 238.5 234.531 uc031qpn.1 9528 9379 238.5 234.531 uc001xuh.2 8913 8764 2.01115 2.11646 uc021rwv.1 8913 8764 2.01115 2.11646 uc021rww.1 279 130 0 0 uc010tvo.1 125879 125730 0.272617 0.0199978 uc001xui.3 133872 133723 97.9517 6.75575 uc001xuj.3 133872 133723 97.9517 6.75575 uc001xuk.1 65552 65403 17.5535 2.47534 uc001xul.3 10723 10574 273.272 238.354 uc001xum.2 1697918 1.69777e+06 10.8045 0.058694 uc001xun.4 1464560 1.46441e+06 0 0 uc010asv.1 373368 373219 0 0 uc021rwz.1 84 84 0 0 uc001xup.3 588952 588803 85.4866 1.33905 uc001xuq.3 588952 588803 85.4866 1.33905 uc001xur.5 588952 588803 85.4866 1.33905 uc010asw.4 588952 588803 85.4866 1.33905 uc001xuw.1 244049 243900 7.83489 0.296271 uc001xvb.1 152960 152811 0 0 uc001xvc.3 153426 153277 0 0 uc010tvs.2 153426 153277 0 0 uc001xvd.1 190778 190629 1.00005 0.048384 uc001xvj.3 1239 1090 4 33.8455 uc021rxc.1 74 74 0 0 uc021rxd.1 83 83 0 0 uc021rxe.1 324 175 0 0 uc031qpp.1 26196 26047 0 0 uc031qpq.1 26160 26011 0 0 uc001xvr.3 97783 97634 0 0 uc010atd.3 97699 97550 0 0 uc021rxf.1 1983 1834 0 0 uc001xvs.3 16978 16829 0 0 uc001xvv.3 9688 9539 0 0 uc021rxh.1 1014 865 0 0 uc001xvw.3 62795 62646 4.0047 0.589582 uc001xwj.3 35 35 0 0 uc021ryc.1 59 59 0 0 uc001xwk.3 56 56 0 0 uc001xwl.3 55 55 0 0 uc021ryd.1 30 30 0 0 uc031qpz.1 31 31 0 0 uc031qqa.1 29 29 0 0 uc021rye.1 33 33 0 0 uc001xwq.3 53063 52914 4.23166 0.737577 uc001xwr.3 53063 52914 4.23166 0.737577 uc001xws.3 27802 27653 0 0 uc001xwt.3 22535 22386 0 0 uc001xwu.3 9108 8959 9.56706 9.84887 uc001xww.3 50601 50452 173.129 31.6489 uc001xwx.3 50601 50452 173.129 31.6489 uc010twd.2 50601 50452 173.129 31.6489 uc010twe.2 50601 50452 173.129 31.6489 uc010twf.2 50601 50452 173.129 31.6489 uc001xwy.3 50163 50014 0 0 uc010twg.2 40932 40783 0 0 uc001xxa.3 37670 37521 0 0 uc001xxb.3 19124 18975 321.216 156.129 uc001xxc.3 19124 18975 321.216 156.129 uc010atg.1 28904 28755 0 0 uc001xxi.3 53418 53269 67.1429 11.625 uc001xxj.3 53418 53269 67.1429 11.625 uc001xxk.3 53418 53269 67.1429 11.625 uc001xxl.3 53418 53269 67.1429 11.625 uc010ath.3 53418 53269 67.1429 11.625 uc010ati.3 53418 53269 67.1429 11.625 uc010atj.3 53418 53269 67.1429 11.625 uc021ryh.1 73 73 0 0 uc001xxq.3 2440 2291 21.5023 86.5622 uc001xxr.3 1261 1112 0 0 uc021ryi.1 290 141 0 0 uc010atm.3 89826 89677 0.00983 0.00101097 uc001xxy.3 88863 88714 256.748 26.692 uc001xxz.3 88863 88714 256.748 26.692 uc001xya.3 88863 88714 256.748 26.692 uc010atn.3 88863 88714 256.748 26.692 uc001xyb.3 88200 88051 4.71866e-05 4.94256e-06 uc001xyd.1 48481 48332 0 0 uc001xye.1 124088 123939 1 0.0744149 uc001xyf.3 16073 15924 6.12226 3.54591 uc001xyg.3 16073 15924 6.12226 3.54591 uc001xyh.3 13472 13323 415.135 287.379 uc001xyl.2 11293 11144 2306.5 1908.89 uc010atq.2 11293 11144 2306.5 1908.89 uc001xym.2 10011 9862 0 0 uc021ryj.1 3676 3527 0 0 uc001xyq.3 6249 6100 0 0 uc001xyr.1 2042 1893 0 0 uc010atu.3 53709 53560 0 0 uc010atv.2 75158 75009 0 0 uc001xyy.2 82462 82313 0 0 uc001xyv.2 111347 111198 37.341 3.09711 uc001xyw.2 111347 111198 37.341 3.09711 uc001xyx.2 111347 111198 37.341 3.09711 uc001xyz.2 111347 111198 37.341 3.09711 uc001xza.2 111347 111198 37.341 3.09711 uc001xzb.2 111347 111198 37.341 3.09711 uc001xzc.2 111347 111198 37.341 3.09711 uc010twj.1 55567 55418 0 0 uc001xze.2 110725 110576 4.81838e-08 4.01891e-09 uc010atw.3 127 127 0 0 uc021ryn.1 26 26 0 0 uc001yah.2 42246 42097 1959 429.191 uc001yai.3 178901 178752 0 0 uc010twm.2 178289 178140 0 0 uc001yak.3 177674 177525 0 0 uc010auj.3 62147 61998 0 0 uc010twn.2 58117 57968 0 0 uc001yan.3 48716 48567 0 0 uc001yap.3 175210 175061 0 0 uc010auk.3 175210 175061 0 0 uc001yaq.3 112756 112607 0 0 uc001yar.1 9841 9692 0 0 uc001yas.1 33985 33836 0 0 uc001yaz.1 45655 45506 472.446 95.7527 uc001yba.1 6838 6689 4.55447 6.27978 uc001ybb.1 2083 1934 0 0 uc001ybc.4 12194 12045 2.5 1.91426 uc001ybd.4 12194 12045 2.5 1.91426 uc001ybi.3 4682 4533 0 0 uc001ybk.4 2136 1987 122.189 567.156 uc010auo.3 2057 1908 0 0 uc021sax.1 396 247 86.8109 3241.49 uc001ybm.4 22161 22012 330.858 138.628 uc001ybn.4 22161 22012 330.858 138.628 uc010auq.3 19400 19251 460.285 220.516 uc001ybs.1 374125 373976 27.0093 0.666098 uc001ybt.1 1164 1015 0 0 uc001ybu.1 63274 63125 0 0 uc001ybv.1 229786 229637 0 0 uc001ybz.2 10715 10566 0 0 uc021say.1 10715 10566 0 0 uc021saz.1 2267 2118 0 0 uc010aus.2 2266 2117 0 0 uc001yca.2 2224 2075 0 0 uc031qqc.1 879 730 0 0 uc001ycf.3 10283 10134 0 0 uc001ycg.1 11568 11419 0 0 uc010twp.2 14400 14251 0 0 uc001ych.4 13034 12885 0 0 uc001yci.3 22553 22404 92 37.873 uc001yck.3 21422 21273 256.5 111.206 uc001ycl.3 21422 21273 256.5 111.206 uc001ycm.1 4148 3999 0 0 uc001ycn.1 5201 5052 0 0 uc021sba.1 5955 5806 19 30.1817 uc001ycr.3 53534 53385 0 0 uc001ycs.1 105424 105275 0 0 uc010avd.3 8465 8316 0 0 uc001ydk.3 8461 8312 0 0 uc001ydl.3 8402 8253 0 0 uc010ave.3 9399 9250 0 0 uc001ydm.3 11752 11603 0 0 uc001ydn.1 6497 6348 0 0 uc001ydo.4 31996 31847 0 0 uc010avf.1 2788 2639 0 0 uc001ydp.3 11757 11608 0 0 uc001ydr.3 11757 11608 0 0 uc021sbb.2 11757 11608 0 0 uc001yds.3 11663 11514 0 0 uc010avg.3 11663 11514 0 0 uc001ydt.3 6270 6121 0 0 uc010twt.1 22246 22097 37.7096 15.7393 uc001yee.1 2451 2302 4.07152 16.3124 uc001yem.1 9733 9584 571 549.487 uc001yen.1 5077 4928 0 0 uc001yep.1 21063 20914 25.4757 11.2346 uc021sbf.1 20670 20521 0 0 uc021sbg.1 22275 22126 0 0 uc021sbh.1 8592 8443 0 0 uc001yet.1 10197 10048 0 0 uc001yeu.2 16577 16428 1.7411 0.977478 uc001yev.2 16577 16428 1.7411 0.977478 uc001yew.3 29388 29239 0 0 uc001yex.3 29388 29239 0 0 uc010avj.3 29388 29239 0 0 uc021sbi.1 29388 29239 0 0 uc001yfa.3 6212 6063 0 0 uc001yez.3 6227 6078 0 0 uc001yfd.1 41297 41148 0 0 uc001yfe.3 48800 48651 0 0 uc001yff.4 54566 54417 2 0.338971 uc010avl.2 39369 39220 1151.55 270.797 uc001yfg.2 39532 39383 23.1498 5.42133 uc010avm.1 39532 39383 23.1498 5.42133 uc010twu.1 39532 39383 23.1498 5.42133 uc001yfh.3 8554 8405 6.73118 7.3862 uc021sbj.1 1062 913 1.26882 12.8173 uc001yfj.5 23839 23690 79.8356 31.0813 uc031qqe.1 23839 23690 79.8356 31.0813 uc031qqf.1 23839 23690 79.8356 31.0813 uc001yfl.4 22555 22406 17.4933 7.20071 uc001yfm.1 7181 7032 0 0 uc001yfn.3 97317 97168 4.0372 0.383199 uc001yfo.3 33223 33074 0 0 uc001yfp.3 33223 33074 0 0 uc001yfq.3 64741 64592 479.25 68.4307 uc001yfr.3 64741 64592 479.25 68.4307 uc010avp.3 64741 64592 479.25 68.4307 uc010twv.2 64741 64592 479.25 68.4307 uc001yfs.3 3010 2861 0 0 uc001yft.3 84268 84119 308 33.7695 uc001yfu.3 5290 5141 0 0 uc031qqg.1 3892 3743 0 0 uc001yfz.2 6154 6005 0 0 uc021sbm.1 91 91 0 0 uc001ygi.4 30114 29965 1678.67 516.678 uc021sbo.1 102 102 0 0 uc001ygl.1 24132 23983 0 0 uc010avs.3 31532 31383 0 0 uc031qqk.1 23 23 0 0 uc001ygn.1 29020 28871 0 0 uc001ygo.3 42884 42735 0 0 uc031qql.1 42598 42449 0 0 uc001ygp.3 21305 21156 0 0 uc010avt.1 171748 171599 0 0 uc010tww.2 168460 168311 0 0 uc001ygq.3 118177 118028 0 0 uc001ygr.3 148651 148502 2 0.124213 uc001ygs.3 148651 148502 2 0.124213 uc001ygt.3 172423 172274 29.5475 1.58186 uc001ygv.2 120736 120587 38.9759 2.98101 uc001ygu.3 78823 78674 1220.48 143.076 uc021sbp.1 99 99 0 0 uc001ygw.1 2317 2168 346.996 1476.16 uc001ygy.2 40270 40121 1994.75 458.548 uc001ygz.2 2376 2227 1613 6680.08 uc010twy.1 98 98 0 0 uc001yhc.3 7037 6888 1 1.33898 uc001yhd.3 7037 6888 1 1.33898 uc010avx.3 153886 153737 45.2619 2.71533 uc021sbq.1 5313 5164 26.7655 47.8031 uc001yhn.3 153808 153659 3.14912e-07 1.89016e-08 uc010avy.3 149394 149245 282.973 17.4869 uc001yho.3 148304 148155 0 0 uc021sbr.1 244 95 0 0 uc001yhr.1 15477 15328 0 0 uc001yhu.4 8263 8114 0 0 uc001yhs.4 8266 8117 0 0 uc021sbs.1 330 181 0 0 uc021sbt.1 84 84 0 0 uc021sbu.1 204 55 0 0 uc021sbw.2 28198 28049 0 0 uc001yhw.3 34916 34767 0 0 uc001yhy.3 34916 34767 0 0 uc001yhz.3 34916 34767 0 0 uc001yib.3 34916 34767 0 0 uc001yic.3 34916 34767 0 0 uc001yie.3 34916 34767 0 0 uc010avz.2 34916 34767 0 0 uc010txb.2 34916 34767 0 0 uc010txc.2 34916 34767 0 0 uc010txd.2 34916 34767 0 0 uc010txe.2 34916 34767 0 0 uc010txf.2 34916 34767 0 0 uc010txg.2 34916 34767 0 0 uc010txh.2 34916 34767 0 0 uc021sbv.1 87 87 0 0 uc021sbx.1 30419 30270 0 0 uc001yid.2 29603 29454 0 0 uc021sbz.1 98 98 0 0 uc001yif.2 2963 2814 0 0 uc021sca.1 89 89 0 0 uc010txi.2 93 93 0 0 uc021scb.1 72 72 0 0 uc021scc.1 114 114 0 0 uc021scd.1 93 93 0 0 uc001yig.3 97 97 0 0 uc021sce.1 94 94 0 0 uc010txk.1 82 82 0 0 uc010txl.1 12199 12050 0 0 uc021scf.1 77 77 0 0 uc021scg.1 79 79 0 0 uc021sch.1 58 58 0 0 uc001yii.1 70 70 0 0 uc001yij.3 71 71 0 0 uc021sci.1 72 72 0 0 uc001yil.3 74 74 0 0 uc001yim.1 77 77 0 0 uc001yin.3 74 74 0 0 uc001yio.3 76 76 0 0 uc001yiq.3 71 71 0 0 uc001yir.3 71 71 0 0 uc001yis.3 77 77 0 0 uc001yit.3 74 74 0 0 uc001yiu.3 104 104 0 0 uc001yiv.3 69 69 0 0 uc021scj.1 73 73 0 0 uc001yiw.3 71 71 0 0 uc001yix.1 76 76 0 0 uc001yiy.1 71 71 0 0 uc001yiz.3 71 71 0 0 uc001yja.3 71 71 0 0 uc001yjb.3 74 74 0 0 uc001yjc.3 74 74 0 0 uc001yjd.3 73 73 0 0 uc001yje.3 74 74 0 0 uc001yjf.1 71 71 0 0 uc001yjg.3 69 69 0 0 uc001yjh.3 74 74 0 0 uc001yji.3 71 71 0 0 uc001yjj.3 74 74 0 0 uc021sck.1 78 78 0 0 uc001yjk.1 71 71 0 0 uc001yjl.3 71 71 0 0 uc001yjm.3 71 71 0 0 uc001yjn.3 71 71 0 0 uc001yjo.1 71 71 0 0 uc001yjp.1 71 71 0 0 uc001yjq.3 71 71 0 0 uc001yjr.3 69 69 0 0 uc001yjs.3 71 71 0 0 uc001yjt.1 69 69 0 0 uc001yju.3 71 71 0 0 uc001yjv.3 74 74 0 0 uc021scl.1 75 75 0 0 uc010awa.1 67 67 0 0 uc021scm.1 96 96 0 0 uc001yjx.1 63 63 0 0 uc021scn.1 80 80 0 0 uc010awb.1 61 61 0 0 uc021sco.1 88 88 0 0 uc001yjy.1 86 86 0 0 uc021scp.1 88 88 0 0 uc021scq.1 80 80 0 0 uc021scr.1 84 84 0 0 uc010txm.2 81 81 0 0 uc021scs.1 78 78 0 0 uc021sct.1 78 78 0 0 uc021scu.1 82 82 0 0 uc021scv.1 81 81 0 0 uc021scw.1 77 77 0 0 uc021scx.1 80 80 0 0 uc010txn.1 66 66 0 0 uc021scy.1 109 109 0 0 uc021scz.1 80 80 0 0 uc021sda.1 81 81 0 0 uc021sdb.1 100 100 0 0 uc010awc.1 68 68 0 0 uc021sdc.1 82 82 0 0 uc021sdd.1 85 85 0 0 uc021sde.1 85 85 0 0 uc010awd.3 75 75 0 0 uc021sdf.1 84 84 0 0 uc021sdg.1 78 78 0 0 uc021sdh.1 79 79 0 0 uc021sdi.1 91 91 0 0 uc021sdj.1 97 97 0 0 uc021sdk.1 80 80 0 0 uc010awe.3 76 76 0 0 uc010txo.1 73 73 0 0 uc021sdl.1 66 66 0 0 uc021sdm.1 73 73 0 0 uc021sdn.1 82 82 0 0 uc010awg.3 84 84 0 0 uc021sdo.1 81 81 0 0 uc021sdp.1 102 102 0 0 uc010awh.1 69 69 0 0 uc021sdq.1 84 84 0 0 uc021sdr.1 79 79 0 0 uc021sds.1 91 91 0 0 uc010txp.1 70 70 0 0 uc021sdt.1 80 80 0 0 uc021sdu.1 79 79 0 0 uc021sdv.1 78 78 0 0 uc001yjz.2 3026 2877 0 0 uc010awi.1 557 408 0 0 uc021sdx.1 2102 1953 20 94.4486 uc010awj.3 2089 1940 0 0 uc001ykj.4 74775 74626 26.0803 3.22322 uc001ykk.3 166194 166045 168.544 9.36173 uc010txr.2 166194 166045 168.544 9.36173 uc001ykl.1 1005 856 9.96308 107.346 uc010txs.1 73214 73065 0 0 uc010txt.2 96845 96696 0 0 uc001ykn.3 102823 102674 0 0 uc001yko.3 118189 118040 348.017 27.1919 uc001ykp.3 118189 118040 348.017 27.1919 uc001ykq.3 30465 30316 0 0 uc001ykr.1 2194 2045 0 0 uc001yks.2 86271 86122 59445.6 6366.1 uc001ykt.1 8699 8550 4346.37 4688.44 uc001ykz.3 70679 70530 0 0 uc001yla.3 70679 70530 0 0 uc001ylb.3 70679 70530 0 0 uc001ylf.3 70679 70530 0 0 uc010txu.2 70679 70530 0 0 uc001ylc.3 75153 75004 0 0 uc001yld.3 83822 83673 330.57 36.4372 uc001yle.3 83822 83673 330.57 36.4372 uc021sdy.1 2766 2617 8.32187 29.3282 uc021sdz.1 74 74 0 0 uc001ylo.3 25798 25649 0 0 uc031qqo.1 23877 23728 1.60428e-06 6.23571e-07 uc001ylp.3 23424 23275 123.362 48.883 uc010awk.2 23424 23275 123.362 48.883 uc001ylq.1 16383 16234 15.6066 8.86645 uc001ylr.3 17190 17041 0 0 uc001yls.3 11553 11404 0 0 uc001ylt.3 8242 8093 17.8563 20.3493 uc010txw.2 62310 62161 0 0 uc010awl.3 102709 102560 0 0 uc001ylw.2 139519 139370 822.558 54.4333 uc010txx.2 139519 139370 822.558 54.4333 uc021sed.1 83 83 0 0 uc001ymb.4 137918 137769 1344.52 90.0088 uc001ymc.2 134022 133873 543.654 37.4539 uc001ymd.2 134022 133873 543.654 37.4539 uc001yme.2 134022 133873 543.654 37.4539 uc010txy.2 134022 133873 543.654 37.4539 uc001ymf.1 2717 2568 27.2857 97.996 uc001ymg.4 8187 8038 0 0 uc001ymh.4 7921 7772 12 14.2402 uc001ymk.3 10414 10265 40 35.9392 uc001yml.1 3096 2947 71.9949 225.315 uc001ymm.1 11113 10964 849.023 714.198 uc010awo.1 11113 10964 849.023 714.198 uc010txz.1 10435 10286 928.591 832.618 uc010tya.1 3525 3376 1317.37 3598.92 uc021see.1 23 23 0 0 uc001ymq.4 11023 10874 1062.17 900.89 uc001ymr.4 11023 10874 1062.17 900.89 uc001ymt.4 10164 10015 0.547871 0.50454 uc001ymu.3 10076 9927 2235.12 2076.59 uc001ymv.1 126 126 0 0 uc001ymw.4 118466 118317 84.0853 6.55451 uc001ymx.4 118466 118317 84.0853 6.55451 uc001ymy.4 118466 118317 84.0853 6.55451 uc001ymz.4 118466 118317 84.0853 6.55451 uc001yna.4 118466 118317 84.0853 6.55451 uc010awp.3 118466 118317 84.0853 6.55451 uc021sef.1 542 393 138.428 3248.61 uc010tyb.2 38273 38124 857.891 207.54 uc010awq.3 28837 28688 0 0 uc001ynd.3 3962 3813 705.938 1707.53 uc001yng.3 7902 7753 688 818.439 uc010aws.3 7902 7753 688 818.439 uc010tyc.2 27938 27789 170.924 56.728 uc010tyd.1 123270 123121 93.3797 6.995 uc010tye.1 56129 55980 0 0 uc001ynm.1 57044 56895 63.3319 10.2664 uc001yno.3 72364 72215 714.772 91.2868 uc010tyf.2 72364 72215 714.772 91.2868 uc021seh.1 10543 10394 0.455076 0.403803 uc001ynp.1 18149 18000 0 0 uc001ynq.1 18149 18000 0 0 uc001ynr.1 18149 18000 0 0 uc010awu.1 18149 18000 0 0 uc001yns.3 25863 25714 1638.07 587.532 uc001ynw.1 3277 3128 0 0 uc001yoc.3 17925 17776 664.603 344.823 uc001yod.3 17925 17776 664.603 344.823 uc001yoe.3 2238 2089 1033.79 4564.19 uc001yoh.1 10329 10180 2 1.81197 uc001yom.4 124188 124039 990.873 73.6762 uc001yon.4 82127 81978 366.83 41.2701 uc031qqq.1 3250 3101 158.352 470.965 uc001yoo.2 21660 21511 0 0 uc001yoq.2 27024 26875 24 8.23627 uc001yor.2 27024 26875 24 8.23627 uc010tyg.2 110 110 0 0 uc001yos.4 42176 42027 3069 673.498 uc010tyh.1 9063 8914 0 0 uc001yow.1 10128 9979 0 0 uc010awy.1 2367 2218 0 0 uc001yoy.4 15203 15054 121.003 74.1334 uc001ypb.2 30005 29856 2158.79 666.878 uc001ypc.2 30005 29856 2158.79 666.878 uc010awz.1 12358 12209 1203.41 909.082 uc001ypd.3 23114 22965 2452 984.74 uc001ype.3 17420 17271 0 0 uc001ypf.3 17420 17271 0 0 uc010tyj.1 4353 4204 0.266608 0.584896 uc001ypg.1 6521 6372 272.217 394.01 uc001yph.3 6527 6378 1151.6 1665.27 uc001ypi.3 6527 6378 1151.6 1665.27 uc021sel.1 2232 2083 150.311 665.531 uc001ypp.3 4116 3967 411.052 955.658 uc021sem.1 1269 1120 21.948 180.736 uc001ypq.4 2518 2369 22 85.6496 uc001yps.3 31458 31309 2134.92 628.899 uc010axb.4 31458 31309 2134.92 628.899 uc001ypt.3 8727 8578 442.153 475.394 uc001ypu.1 8387 8238 0 0 uc010tyl.1 8387 8238 0 0 uc001ypy.1 9240 9091 95 96.3784 uc001ypz.1 9240 9091 95 96.3784 uc010tym.1 9240 9091 95 96.3784 uc010tyq.2 2552 2403 1008.62 3871.18 uc001yqs.2 97315 97166 269.656 25.5954 uc001yqt.3 83733 83584 891.028 98.3186 uc001yqu.3 83733 83584 891.028 98.3186 uc001yqw.3 15277 15128 101 61.5755 uc001yqx.3 50872 50723 59.0234 10.7322 uc001yqy.3 50872 50723 59.0234 10.7322 uc021seq.1 50872 50723 59.0234 10.7322 uc001yqz.1 22282 22133 633.359 263.923 uc001yra.1 22282 22133 633.359 263.923 uc001yrb.3 12451 12302 6080.21 4558.38 uc010tyr.2 7233 7084 1.28543 1.67354 uc031qqr.1 7233 7084 1.28543 1.67354 uc031qqs.1 7233 7084 1.28543 1.67354 uc001yrc.3 5987 5838 0 0 uc001yrd.2 5396 5247 142.087 249.753 uc031qqt.1 5396 5247 142.087 249.753 uc031qqu.1 5396 5247 142.087 249.753 uc031qqv.1 5396 5247 142.087 249.753 uc001yrf.2 4312 4163 0 0 uc001yrg.3 2925 2776 2851.8 9474.73 uc031qqw.1 22 22 0 0 uc001yri.4 1868 1719 2830 15183.7 uc001yrj.3 9394 9245 0 0 uc001yrk.3 9066 8917 184.028 190.341 uc001yrm.3 8000 7851 281.324 330.483 uc001yrn.3 8000 7851 281.324 330.483 uc001yro.3 8000 7851 281.324 330.483 uc010tys.2 7142 6993 0 0 uc001yrp.1 3587 3438 0 0 uc021ses.1 960 811 0.831088 9.45135 uc001yrr.3 2463 2314 0 0 uc001ysq.3 32551 32402 0 0 uc001ysr.3 32551 32402 0 0 uc001yss.3 13815 13666 0 0 uc001yst.3 14665 14516 0 0 uc021seu.1 698 549 0 0 uc001ysy.2 13075 12926 763.369 544.676 uc031qnr.1 3097 2948 0 0 uc001vvb.3 4041 3892 0 0 uc021rnc.1 40 40 0 0 uc001vvg.2 40 40 0 0 uc021rni.1 40 40 0 0 uc001vvo.1 10225 10076 0 0 uc001vvq.1 68973 68824 204.029 27.3413 uc001vvr.1 45125 44976 524.761 107.609 uc010ahe.1 45125 44976 524.761 107.609 uc001vvs.1 34237 34088 0 0 uc001vvu.3 1388 1239 0 0 uc001vvv.1 5842 5693 0 0 uc001vvw.2 34158 34009 0 0 uc001vvx.2 32 32 0 0 uc021rnk.1 40 40 0 0 uc001vvz.2 40 40 0 0 uc010tkr.2 32 32 0 0 uc021rnl.1 41 41 0 0 uc021rnm.1 28 28 0 0 uc010tks.2 32 32 0 0 uc021rnn.1 41 41 0 0 uc001vwb.3 36319 36170 64.5 16.4467 uc001vwc.3 36319 36170 64.5 16.4467 uc021rno.1 1429 1280 0 0 uc010tky.2 933 784 0 0 uc010tkz.2 915 766 0 0 uc001vwt.3 16853 16704 249.5 137.758 uc001vwu.3 16853 16704 249.5 137.758 uc001vwv.4 18006 17857 1094.33 565.208 uc001vwx.4 21643 21494 0 0 uc001vwy.4 21945 21796 36.8892 15.6096 uc001vwz.4 21945 21796 36.8892 15.6096 uc021rnp.2 21945 21796 36.8892 15.6096 uc010ahh.2 17828 17679 0 0 uc021rnq.1 148 148 0 0 uc010ahi.1 99 99 0 0 uc001vxa.1 341 192 24 1152.86 uc010ahj.1 7481 7332 31.9164 40.1475 uc010ahk.3 26101 25952 191.944 68.2136 uc001vxe.3 47754 47605 0.000314474 6.09257e-05 uc010tlf.1 45513 45364 90.6021 18.4202 uc010tlg.1 45513 45364 90.6021 18.4202 uc010tlh.1 10868 10719 112.935 97.1724 uc010tli.2 6832 6683 0 0 uc001vxf.3 8061 7912 1341 1563.18 uc001vxk.2 3626 3477 890 2360.77 uc001vxl.2 3626 3477 890 2360.77 uc001vxq.4 4839 4690 0 0 uc010aho.3 4839 4690 0 0 uc010ahp.3 4839 4690 0 0 uc010ahq.3 4839 4690 0 0 uc010ahr.3 4839 4690 0 0 uc010ahs.3 4839 4690 0 0 uc010aht.3 4839 4690 0 0 uc010ahu.3 4839 4690 0 0 uc021rnt.1 618 469 0 0 uc010ahv.3 4833 4684 0 0 uc010ahx.3 5096 4947 0 0 uc010ahw.3 5101 4952 0 0 uc001vxs.3 7366 7217 0 0 uc021rnu.1 600 451 0 0 uc001vxt.3 743 594 0 0 uc021rnv.1 72 72 0 0 uc021rnx.1 72 72 0 0 uc021rny.1 73 73 0 0 uc021roa.1 73 73 0 0 uc001vxv.1 996 847 0 0 uc021roc.1 94 94 0 0 uc021rod.1 94 94 0 0 uc021roe.1 94 94 0 0 uc021rof.1 94 94 0 0 uc021rog.1 82 82 0 0 uc001vyf.3 1044 895 0 0 uc001vyg.3 1522 1373 0 0 uc001vyh.3 1522 1373 0 0 uc001vyi.3 1522 1373 0 0 uc021rop.1 471 322 0 0 uc001vyt.3 6058 5909 177.465 276.992 uc001vyu.3 6559 6410 104.73 150.689 uc001vyv.3 8264 8115 50.5797 57.4852 uc001vyw.3 8277 8128 11.1976 12.706 uc001vyx.3 8343 8194 0.00550266 0.00619361 uc001vyy.3 8343 8194 0.00550266 0.00619361 uc001vyz.3 8343 8194 0.00550266 0.00619361 uc001vza.3 8343 8194 0.00550266 0.00619361 uc001vzb.3 8343 8194 0.00550266 0.00619361 uc001vzc.3 8742 8593 0 0 uc001vzd.3 9014 8865 0 0 uc001vze.3 9014 8865 0 0 uc001vzf.3 9014 8865 0 0 uc001vzg.3 9014 8865 0 0 uc010aig.3 9014 8865 0 0 uc010tll.2 54110 53961 0 0 uc001vzj.3 1966 1817 0 0 uc021rot.1 471 322 0 0 uc001vzr.2 8604 8455 1783.06 1945 uc001vzs.2 8969 8820 0 0 uc010aik.1 14659 14510 20.4944 13.0267 uc010tlp.2 1089 940 0 0 uc001vzu.2 5425 5276 8.22334 14.3751 uc021rov.1 6822 6673 4.77666 6.60194 uc001vzw.3 60343 60194 28.7529 4.40551 uc001vzx.3 60343 60194 28.7529 4.40551 uc001vzy.3 60343 60194 28.7529 4.40551 uc001vzz.3 60343 60194 28.7529 4.40551 uc001waa.3 60343 60194 28.7529 4.40551 uc001wac.3 60343 60194 28.7529 4.40551 uc001wad.3 60343 60194 28.7529 4.40551 uc010ail.3 60343 60194 28.7529 4.40551 uc010tlq.2 60343 60194 28.7529 4.40551 uc010tlr.2 19606 19457 12.3536 5.85578 uc001wae.3 58712 58563 0 0 uc001wao.2 32795 32646 3361.06 949.542 uc001waq.2 1286 1137 42.9405 348.317 uc001war.2 46515 46366 5128.31 1020.1 uc001was.2 52105 51956 1291.93 229.335 uc001wat.1 103 103 0 0 uc001wau.1 109 109 0 0 uc001wav.1 9710 9561 682.764 658.621 uc021row.1 300 151 0 0 uc010tls.2 17654 17505 0 0 uc001wax.3 17954 17805 85.021 44.0405 uc010ain.4 17954 17805 85.021 44.0405 uc010tlt.2 17954 17805 85.021 44.0405 uc001wbb.3 5691 5542 924.736 1538.93 uc001wbc.3 13176 13027 0.0915321 0.0648033 uc010tlw.1 10403 10254 468.16 421.084 uc010tlx.2 10164 10015 0 0 uc021rox.1 9626 9477 0.0588644 0.0572862 uc021roy.1 29 29 0 0 uc010tly.2 5131 4982 0 0 uc001wbe.3 16106 15957 0 0 uc001wbf.3 4890 4741 0 0 uc010tlz.1 4890 4741 0 0 uc001wbg.1 15865 15716 0 0 uc010tma.1 15865 15716 0 0 uc010tmb.2 942 793 0 0 uc010tmc.2 933 784 0 0 uc001wds.1 102866 102717 0 0 uc001wdt.1 15199 15050 1.69654 1.03967 uc001web.1 624 475 0 0 uc001wgl.2 24337 24188 1820 693.968 uc001wgr.4 42187 42038 22.0104 4.82897 uc001wgs.4 42676 42527 0.000408549 8.86027e-05 uc001wgt.4 43245 43096 0 0 uc001wgu.4 46589 46440 0 0 uc001wgv.4 46589 46440 0 0 uc001whg.3 18543 18394 682.714 342.318 uc001whh.3 18543 18394 682.714 342.318 uc001whi.3 18543 18394 682.714 342.318 uc001whj.3 18543 18394 682.714 342.318 uc010tne.2 18543 18394 682.714 342.318 uc001whk.1 16431 16282 0 0 uc001whl.1 8929 8780 845.5 888.151 uc001whm.1 8929 8780 845.5 888.151 uc001whn.1 8929 8780 845.5 888.151 uc010tnf.1 8929 8780 845.5 888.151 uc010tng.1 8929 8780 845.5 888.151 uc010tnh.1 8929 8780 845.5 888.151 uc001who.3 8949 8800 559.604 586.497 uc001wht.3 10915 10766 51.2661 43.9181 uc001whu.3 10915 10766 51.2661 43.9181 uc001whv.3 10915 10766 51.2661 43.9181 uc001whw.3 10915 10766 51.2661 43.9181 uc001whq.3 10921 10772 30.3316 25.9697 uc021rqu.1 80 80 0 0 uc001why.3 6023 5874 1064.11 1670.78 uc001whz.3 11439 11290 662.891 541.522 uc001wib.2 13233 13084 487.228 343.447 uc001wic.2 14137 13988 0 0 uc001wia.4 23251 23102 20.7544 8.2857 uc001wie.3 23251 23102 20.7544 8.2857 uc001wif.3 23251 23102 20.7544 8.2857 uc001wig.3 23251 23102 20.7544 8.2857 uc001wih.3 23251 23102 20.7544 8.2857 uc001wii.3 9295 9146 2864.11 2888.19 uc001wij.3 9295 9146 2864.11 2888.19 uc010tni.2 9370 9221 738.777 738.93 uc001wil.3 10478 10329 1762.5 1573.76 uc010akf.3 10478 10329 1762.5 1573.76 uc001win.3 5185 5036 0 0 uc001wio.4 11053 10904 3449.67 2917.83 uc001wip.4 12974 12825 0 0 uc001wiq.4 13006 12857 0 0 uc001wir.4 13006 12857 0 0 uc001wis.4 22245 22096 3035.91 1267.19 uc001wit.4 37050 36901 217.896 54.4602 uc010akg.3 37050 36901 217.896 54.4602 uc010tnj.2 37050 36901 217.896 54.4602 uc010aki.1 4547 4398 0 0 uc001wiv.2 2306 2157 2 8.5516 uc001wiw.3 4849 4700 356.991 700.53 uc001wix.4 29156 29007 0 0 uc010tnk.3 29156 29007 0 0 uc001wiy.4 30164 30015 56.4403 17.3428 uc010tnl.3 30164 30015 56.4403 17.3428 uc001wiz.4 58366 58217 2.06429 0.32703 uc010akj.4 58366 58217 2.06429 0.32703 uc021rqw.1 106 106 0 0 uc001wja.2 12466 12317 550.653 412.326 uc001wjb.2 25904 25755 15.8863 5.68891 uc031qns.1 6928 6779 40.8212 55.5378 uc001wjc.2 5163 5014 61.8899 113.842 uc001wjl.3 6134 5985 0 0 uc010akk.3 6134 5985 0 0 uc001wjm.3 6554 6405 0 0 uc001wjn.3 6554 6405 0 0 uc010akl.1 3950 3801 0 0 uc001wjo.4 9234 9085 0 0 uc001wjp.4 9234 9085 0 0 uc010tnm.3 9234 9085 0 0 uc001wjv.3 26288 26139 0 0 uc010tnn.2 71 71 0 0 uc010akp.2 8566 8417 0 0 uc001wjx.3 22924 22775 0 0 uc021rqy.1 77 77 0 0 uc010akq.3 5948 5799 29.7309 47.2849 uc010tno.2 30795 30646 24.9264 7.50159 uc001wke.3 2328 2179 0 0 uc001wkk.3 7947 7798 1120.5 1325.24 uc001wkl.2 8503 8354 0 0 uc001wkn.2 8503 8354 0 0 uc001wkp.1 3365 3216 431.147 1236.45 uc010tnp.1 4679 4530 202.08 411.427 uc010aks.3 2532 2383 239.435 926.682 uc010akt.3 3088 2939 0 0 uc010tnq.1 2396 2247 0.840146 3.44841 uc010tnr.1 4967 4818 0 0 uc001wkq.2 10766 10617 0 0 uc001wkr.2 10766 10617 0 0 uc001wks.2 3850 3701 0 0 uc031qny.1 11690 11541 0 0 uc001wky.3 15453 15304 96.0726 57.8979 uc001wkz.3 15453 15304 96.0726 57.8979 uc010akx.1 16359 16210 0 0 uc021rrk.1 1840 1691 5.20993 28.4156 uc001wlo.3 4517 4368 7.24664 15.3011 uc001wlp.3 15024 14875 5.67567 3.51907 uc001wlq.3 34908 34759 6.97723 1.85133 uc001wmi.3 2624 2475 600 2235.86 uc001wmj.3 3282 3133 247 727.117 uc001wmt.1 4545 4396 1414.92 2968.53 uc001wmu.2 8651 8502 50.9039 55.2202 uc001wmv.1 9590 9441 47.3592 46.2652 uc001wmw.1 9590 9441 47.3592 46.2652 uc001wmx.1 9590 9441 47.3592 46.2652 uc001wmy.1 9590 9441 47.3592 46.2652 uc010tnz.1 9590 9441 47.3592 46.2652 uc001wmz.2 10435 10286 5560.66 4985.95 uc001wnb.1 6958 6809 23.9051 32.3798 uc010toa.1 6958 6809 23.9051 32.3798 uc010tob.1 25433 25284 339.326 123.777 uc001wnc.3 5639 5490 3869.79 6501.05 uc001wni.3 4571 4422 286.545 597.644 uc010toc.2 4571 4422 286.545 597.644 uc001wnj.4 6490 6341 277.563 403.712 uc001wnk.2 3332 3183 0 0 uc001wnl.2 2662 2513 0 0 uc001wnm.2 2662 2513 0 0 uc021rrl.1 2662 2513 0 0 uc021rrm.1 18962 18813 0 0 uc001wnn.2 15520 15371 1787 1072.24 uc001wno.2 15520 15371 1787 1072.24 uc001wnp.2 5766 5617 0 0 uc010alm.3 2350 2201 434.293 1819.83 uc001woa.4 3030 2881 43.4268 139.022 uc001wob.4 3030 2881 43.4268 139.022 uc001woc.4 3030 2881 43.4268 139.022 uc010tof.2 3030 2881 43.4268 139.022 uc001wod.3 14097 13948 226.845 149.998 uc010tog.2 14097 13948 226.845 149.998 uc021rrn.1 1277 1128 107.309 877.396 uc001wof.4 6090 5941 596.406 925.871 uc001wog.4 6090 5941 596.406 925.871 uc010aln.2 4059 3910 591.213 1394.55 uc001woj.2 8863 8714 0 0 uc001wok.3 9236 9087 1166.35 1183.8 uc001won.3 2796 2647 1125.74 3922.39 uc001woo.3 6184 6035 404.988 618.918 uc001wop.3 6184 6035 404.988 618.918 uc001wow.3 16723 16574 0 0 uc001wox.3 16723 16574 0 0 uc001woy.3 16723 16574 0 0 uc010toh.2 16723 16574 0 0 uc001woz.4 2819 2670 0 0 uc001wpa.3 3045 2896 0 0 uc001wpb.3 4016 3867 0 0 uc010alq.3 4016 3867 0 0 uc010toi.2 4016 3867 0 0 uc010toj.1 1991 1842 0 0 uc001wpg.4 2992 2843 49 158.96 uc001wpi.3 2687 2538 262.514 953.958 uc001wpm.3 3036 2887 297.798 951.356 uc001wpp.1 2760 2611 0 0 uc010alx.1 2760 2611 0 0 uc001wpq.3 2743 2594 0 0 uc001wpr.2 3241 3092 0 0 uc010aly.2 3241 3092 0 0 uc010alz.2 3241 3092 0 0 uc031qoe.1 3241 3092 0 0 uc001wps.2 3272 3123 0 0 uc010ama.2 3272 3123 0 0 uc010amb.2 3272 3123 0 0 uc001wpt.3 7378 7229 0.904426 1.15389 uc001wpu.3 237790 237641 2.78655e-06 1.08147e-07 uc001wpv.3 237866 237717 2.06183e-06 7.99944e-08 uc001wpw.3 237866 237717 2.06183e-06 7.99944e-08 uc001wpx.1 234304 234155 3.09572 0.121934 uc021rrr.1 84 84 0 0 uc001wpy.3 151872 151723 0 0 uc001wpz.3 151872 151723 0 0 uc001wqa.3 151872 151723 0 0 uc001wqb.3 127637 127488 0 0 uc010amc.2 351220 351071 20.4818 0.538074 uc001wqg.1 2294 2145 0 0 uc021rrv.1 278492 278343 0 0 uc001wqh.3 351213 351064 0 0 uc001wqi.3 344 195 0 0 uc001wqj.1 964 815 0 0 uc001wqs.3 13630 13481 0 0 uc001wqu.2 132603 132454 257.838 17.9535 uc001wqv.2 132603 132454 257.838 17.9535 uc010tpj.1 132603 132454 257.838 17.9535 uc021rrx.1 97 97 0 0 uc001wra.1 23553 23404 0 0 uc001wrb.1 29190 29041 1875.26 595.549 uc001wrc.1 107366 107217 2101.22 180.749 uc001wrd.1 55369 55220 807.411 134.855 uc001wre.3 4635 4486 114.115 234.613 uc010ami.3 95588 95439 1063.22 102.746 uc001wrf.4 128795 128646 2130.73 152.757 uc001wrg.1 63811 63662 0 0 uc010tpk.1 123163 123014 0 0 uc001wrh.3 20315 20166 0 0 uc001wrj.3 11438 11289 245.069 200.217 uc021rsa.1 5002 4853 0 0 uc021rsc.1 71 71 0 0 uc010amk.3 1281 1132 41 334.045 uc001wry.3 26612 26463 0 0 uc001wsa.4 26864 26715 556 191.95 uc001wsc.3 29325 29176 2419.94 764.973 uc001wsd.1 23809 23660 431 168.008 uc001wse.1 68698 68549 169.654 22.826 uc001wsf.1 68749 68600 555.68 74.7082 uc010tpm.1 68749 68600 555.68 74.7082 uc010amm.1 62307 62158 0 0 uc001wsg.3 3436 3287 674.454 1892.43 uc010tpn.1 4174 4025 0 0 uc001wsh.3 4442 4293 24.1819 51.9514 uc001wsi.3 4442 4293 24.1819 51.9514 uc001wsj.3 4442 4293 24.1819 51.9514 uc001wsk.3 122917 122768 788.533 59.2383 uc001wsl.3 122917 122768 788.533 59.2383 uc001wsm.1 74709 74560 0 0 uc001wss.3 36842 36693 0.000884763 0.000222388 uc001wst.3 36842 36693 0.000884763 0.000222388 uc001wsu.3 37002 36853 51.2149 12.8171 uc010tpr.2 37002 36853 51.2149 12.8171 uc010amn.1 23439 23290 0 0 uc001wsw.3 14646 14497 0 0 uc001wsx.1 14335 14186 9.50261 6.17804 uc001wtf.4 3245 3096 1965 5853.68 uc010amp.3 134671 134522 125.938 8.63437 uc001wti.3 270875 270726 89.3325 3.04332 uc001wtj.3 270875 270726 89.3325 3.04332 uc010tpv.2 270875 270726 89.3325 3.04332 uc010tpw.1 260117 259968 0 0 uc001wtk.1 84778 84629 51.384 5.59985 uc031qoh.1 40942 40793 0 0 uc001wtm.2 22119 21970 44.5 18.6809 uc001wtn.2 22119 21970 44.5 18.6809 uc001wto.2 22119 21970 44.5 18.6809 uc010tpy.1 22119 21970 44.5 18.6809 uc001wtq.3 40497 40348 0 0 uc001wtr.3 40497 40348 0 0 uc001wts.3 46324 46175 0 0 uc001wtt.3 3300 3151 51.2789 150.092 uc001wtu.3 3827 3678 3.33898 8.37279 uc001wtv.3 3827 3678 3.33898 8.37279 uc001wtx.3 2571 2422 14 53.3116 uc001wtz.2 494740 494591 21.5623 0.402083 uc021rsf.1 494740 494591 21.5623 0.402083 uc021rsg.1 83 83 0 0 uc010tpz.3 4711 4562 382.662 773.62 uc001wuf.4 5569 5420 385.338 655.708 uc001wuk.2 6065 5916 0 0 uc001wum.2 2371 2222 0 0 uc010amw.2 89866 89717 3.31974 0.341269 uc021rsj.1 167544 167395 0 0 uc001wun.3 198933 198784 0 0 uc001wuo.3 198933 198784 0 0 uc001wup.1 71315 71166 276.757 35.8669 uc010tqa.1 71315 71166 276.757 35.8669 uc010tqb.1 71315 71166 276.757 35.8669 uc010tqc.1 36515 36366 192.73 48.8789 uc001wut.1 22620 22471 59 24.2157 uc001wuu.1 22620 22471 59 24.2157 uc001wuv.1 22620 22471 59 24.2157 uc010tqd.1 22620 22471 59 24.2157 uc001wvd.3 1359 1210 9.51806e-07 7.25489e-06 uc001wvk.3 36128 35979 398.986 102.277 uc001wvn.3 3146 2997 0 0 uc001wvq.4 36809 36660 0 0 uc001wvr.3 37653 37504 122.732 30.1819 uc001wvs.1 2019 1870 0 0 uc001wvt.4 2206 2057 79.2685 355.414 uc001wvx.1 829 680 0 0 uc010tqf.2 19208 19059 208 100.654 uc001wwf.3 50213 50064 632 116.428 uc010anh.2 26660 26511 0 0 uc001wwg.3 809 660 0 0 uc001wwh.4 42597 42448 7.60899 1.65325 uc001wwi.4 503611 503462 4.6376 0.084956 uc001wwj.4 835330 835181 0 0 uc010ani.3 755586 755437 12.8293 0.156629 uc021rsn.1 110 110 0 0 uc001wwk.2 30062 29913 4.83419 1.4905 uc021rso.1 68 68 0 0 uc010anj.1 286513 286364 350.252 11.2805 uc001wwl.4 9745 9596 63.3622 60.8987 uc001wwm.4 2845 2696 1792.9 6133.44 uc001wwq.2 1998 1849 684.636 3415 uc021rsq.1 321 172 1904.1 102101 uc001wws.4 10057 9908 236.941 220.557 uc001wwt.4 10057 9908 236.941 220.557 uc010ann.3 21123 20974 158.867 69.8589 uc001wwu.3 44829 44680 9.48524e-07 1.95796e-07 uc021rsr.1 44829 44680 9.48524e-07 1.95796e-07 uc010ano.3 38200 38051 106.502 25.8142 uc001wwz.3 15711 15562 0 0 uc001wxa.3 17747 17598 58.7162 30.7725 uc001wxc.3 69008 68859 352.67 47.2363 uc010tqi.2 69008 68859 352.67 47.2363 uc001wxe.2 67897 67748 2.08627 0.284015 uc001wxd.1 36336 36187 0.010704 0.00272811 uc010anq.1 32726 32577 0 0 uc021rst.1 301 152 1008 61162.4 uc001wxh.1 18424 18275 0 0 uc001wxi.1 25809 25660 22.9204 8.23822 uc010tqj.3 1212 1063 4.05049 35.1433 uc031qom.1 32572 32423 4.48218 1.27498 uc001wxl.3 3637 3488 1.51782 4.01338 uc010tqk.2 8993 8844 4 4.17137 uc001wxn.1 7595 7446 0 0 uc001wxo.1 7948 7799 60 70.9545 uc001wxp.1 7948 7799 60 70.9545 uc001wxq.1 7948 7799 60 70.9545 uc010ans.3 13635 13486 111.74 76.4175 uc001wxs.4 114254 114105 81.4801 6.5859 uc010tql.2 114254 114105 81.4801 6.5859 uc010tqm.1 22998 22849 86.5831 34.9489 uc001wxt.2 24791 24642 61.7168 23.0991 uc010tqn.2 74663 74514 15.31 1.89499 uc001wxu.3 69796 69647 614.562 81.3825 uc010tqo.1 66347 66198 0 0 uc001wxz.3 65923 65774 0.0844651 0.0118438 uc010anu.2 80469 80320 190.027 21.8202 uc001wya.3 114166 114017 198.724 16.0749 uc001wyb.3 114166 114017 198.724 16.0749 uc001wyc.1 10588 10439 63.611 56.2006 uc010anv.1 92163 92014 0 0 uc001wyh.2 34774 34625 528.243 140.706 uc021rsy.2 3175 3026 251.835 767.564 uc001wyi.3 111359 111210 696.785 57.786 uc001wyj.3 111359 111210 696.785 57.786 uc001wyk.3 105294 105145 0 0 uc001wym.2 105294 105145 0 0 uc001wyn.3 12255 12106 42.2999 32.226 uc001wyo.3 103889 103740 0 0 uc001wyp.1 60734 60585 0 0 uc001wyu.3 39314 39165 948.273 223.307 uc010tqq.2 39314 39165 948.273 223.307 uc010anz.1 8276 8127 337.454 382.959 uc001wyw.4 21280 21131 0 0 uc001wyx.4 120442 120293 0 0 uc001wyy.2 116927 116778 0 0 uc001wyz.4 99638 99489 4 0.370811 uc031qon.1 145441 145292 0 0 uc031qoo.1 53324 53175 0 0 uc021rtc.1 2227 2078 0 0 uc001wzo.3 64427 64278 3.52837e-05 5.06267e-06 uc010tqs.2 64427 64278 3.52837e-05 5.06267e-06 uc010tqt.1 63502 63353 30.0348 4.37245 uc001wzp.3 56520 56371 0 0 uc001wzs.3 121994 121845 71.1342 5.38442 uc010aoe.3 121994 121845 71.1342 5.38442 uc010tqu.2 121994 121845 71.1342 5.38442 uc001wzv.3 53815 53666 841 144.532 uc001xab.3 16476 16327 795.686 449.473 uc001xad.3 93603 93454 0 0 uc001xac.3 93827 93678 1735.73 170.888 uc001xae.3 93827 93678 1735.73 170.888 uc001xaf.3 91610 91461 0 0 uc001xag.3 56925 56776 625.924 101.677 uc001xah.3 116589 116440 92.3755 7.31682 uc001xai.3 116589 116440 92.3755 7.31682 uc001xaj.3 116589 116440 92.3755 7.31682 uc001xak.1 8813 8664 0.865937 0.921798 uc031qop.1 58 58 0 0 uc001xal.4 3719 3570 255 658.779 uc010aoh.3 4816 4667 0 0 uc001xan.4 7100 6951 0 0 uc001xao.4 7100 6951 0 0 uc001xat.1 14502 14353 1141.5 733.501 uc001xav.1 14502 14353 1141.5 733.501 uc021rtf.1 14536 14387 493 316.042 uc001xbd.1 2211 2062 0 0 uc001xbh.1 60819 60670 62.4082 9.48714 uc001xbi.1 60819 60670 62.4082 9.48714 uc001xbj.1 60819 60670 62.4082 9.48714 uc001xbk.1 60819 60670 62.4082 9.48714 uc010aol.1 60819 60670 62.4082 9.48714 uc001xbl.1 57182 57033 0 0 uc021rth.1 81 81 0 0 uc010aom.2 52463 52314 68.2137 12.026 uc001xbm.2 88164 88015 551.003 57.7384 uc001xbn.2 88164 88015 551.003 57.7384 uc001xbs.3 43563 43414 454.5 96.5543 uc001xbt.3 43563 43414 454.5 96.5543 uc001xbw.2 24912 24763 262.425 97.7393 uc001xbx.2 45468 45319 0 0 uc001xby.3 26334 26185 0 0 uc001xbz.2 22121 21972 47.1217 19.7797 uc001xca.3 3936 3787 39.8783 97.1201 uc010trd.2 15540 15391 0 0 uc010tre.2 15540 15391 0 0 uc021rtl.1 84 84 0 0 uc001xcp.4 4957 4808 0 0 uc021rtm.2 4957 4808 0 0 uc031qor.1 4957 4808 0 0 uc001xcq.4 9770 9621 0 0 uc010aou.4 9770 9621 0 0 uc031qos.1 9770 9621 0 0 uc031qot.1 9770 9621 0 0 uc001xcs.3 29897 29748 358.662 111.197 uc001xct.3 66424 66275 47.7795 6.64905 uc010trg.2 66424 66275 47.7795 6.64905 uc010trh.2 66424 66275 47.7795 6.64905 uc001xcy.2 23982 23833 0 0 uc001xcz.2 23982 23833 0 0 uc010trl.1 23982 23833 0 0 uc010trm.1 23982 23833 0 0 uc010trn.1 23982 23833 0 0 uc010aox.1 15256 15107 0 0 uc010aoy.3 15078 14929 0 0 uc010aoz.1 32976 32827 0 0 uc010apa.1 32976 32827 0 0 uc021rtp.1 301953 301804 0 0 uc001xdc.3 148040 147891 0 0 uc010tro.2 294048 293899 20.3854 0.639718 uc001xdd.3 134742 134593 0 0 uc001xde.3 35982 35833 0 0 uc021rts.1 73 73 0 0 uc001xdl.3 32773 32624 42.8721 12.1201 uc021rtu.1 32773 32624 42.8721 12.1201 uc001xdn.2 24202 24053 0 0 uc010apd.2 12547 12398 37.7775 28.1028 uc010ape.2 12547 12398 37.7775 28.1028 uc010aph.3 18591 18442 2.73272e-06 1.36664e-06 uc001xds.3 18863 18714 124.502 61.3589 uc010api.3 18863 18714 124.502 61.3589 uc021rtv.1 84 84 0 0 uc001xed.2 36320 36171 144.684 36.8916 uc010apj.3 1820 1671 88.316 487.451 uc001xee.1 11668 11519 303.378 242.905 uc010trx.1 5683 5534 186.622 311.022 uc021rtw.1 71765 71616 1.00086 0.128893 uc001xek.2 34839 34690 0.319646 0.084983 uc010apl.2 34839 34690 0.319646 0.084983 uc001xem.1 131738 131589 1.36827 0.0959004 uc001xen.1 274864 274715 0 0 uc001xes.3 20712 20563 1319.87 591.986 uc001xet.3 25062 24913 0 0 uc001xev.1 5524 5375 0 0 uc001xez.4 50091 49942 0 0 uc010apo.3 50091 49942 0 0 uc001xfb.4 4739 4590 128 257.196 uc001xfc.3 14597 14448 882.452 563.315 uc010app.1 6351 6202 138.548 206.033 uc001xff.4 9616 9467 476.981 464.682 uc021rty.1 72 72 0 0 uc001xfl.3 4442 4293 0 0 uc001xfm.3 19798 19649 0 0 uc031qov.1 9592 9443 2 1.95338 uc021ruc.1 2051 1902 85.717 415.646 uc001xfx.3 338011 337862 0 0 uc001xfy.3 338011 337862 0 0 uc001xfz.1 389627 389478 0 0 uc001xga.3 152054 151905 0 0 uc021rud.1 6045 5896 0 0 uc010tsf.1 133601 133452 0 0 uc010tsg.1 133602 133453 0 0 uc001xgd.1 168725 168576 175.033 9.57618 uc001xge.2 168725 168576 175.033 9.57618 uc010tsh.1 168725 168576 175.033 9.57618 uc001xgf.1 161306 161157 0 0 uc001xgg.4 92092 91943 0 0 uc001xgh.4 44885 44736 95.5001 19.6886 uc001xgi.4 44885 44736 95.5001 19.6886 uc031qox.1 44885 44736 95.5001 19.6886 uc021ruf.1 1164 1015 141.5 1285.75 uc001xgj.3 43822 43673 402.551 85.011 uc001xgy.2 56043 55894 0 0 uc001xgu.3 67378 67229 0 0 uc001xgv.3 111518 111369 19.1747 1.58794 uc001xgw.3 111518 111369 19.1747 1.58794 uc001xgx.3 111518 111369 19.1747 1.58794 uc031qoy.1 55258 55109 0 0 uc010aqb.1 50047 49898 0 0 uc010aqc.1 50047 49898 0 0 uc001xha.1 61382 61233 0 0 uc001xgz.2 48189 48040 0 0 uc010aqd.1 25779 25630 0 0 uc021ruj.2 2139 1990 2 9.26925 uc001xhc.3 56108 55959 514.873 84.859 uc001xhf.3 17000 16851 4.71363e-06 2.57987e-06 uc001xhg.3 18377 18228 126.844 64.18 uc010aqi.3 36271 36122 871.748 222.58 uc001xhr.3 76863 76714 903.9 108.671 uc001xhs.3 133601 133452 2.35207 0.162553 uc001xht.3 56747 56598 0 0 uc001xhu.3 113485 113336 0 0 uc021run.1 84 84 0 0 uc021ruo.1 293 144 0 0 uc001xhy.2 3754 3605 0 0 uc021ruq.2 3754 3605 0 0 uc031qoz.1 3754 3605 0 0 uc001xhz.2 26344 26195 20.03 7.0523 uc021rur.1 26344 26195 20.03 7.0523 uc021rus.1 26344 26195 20.03 7.0523 uc021rut.1 26344 26195 20.03 7.0523 uc001xic.2 96444 96295 56.9939 5.45874 uc031qpa.1 96444 96295 56.9939 5.45874 uc001xie.2 27421 27272 164.744 55.7134 uc001xif.2 27421 27272 164.744 55.7134 uc001xig.2 27421 27272 164.744 55.7134 uc001xih.2 27421 27272 164.744 55.7134 uc031qpb.1 27572 27423 358.743 120.652 uc001xij.2 25352 25203 0 0 uc001xii.2 25201 25052 0 0 uc001xik.4 18806 18657 0 0 uc031qpc.1 18806 18657 0 0 uc031qpd.1 18957 18808 0 0 uc001xil.3 9455 9306 0 0 uc021ruw.1 66 66 0 0 uc001xim.4 2025 1876 0.979454 4.81525 uc021ruz.1 109 109 0 0 uc010tsr.3 13125 12976 0 0 uc001xjf.3 22140 21991 557.811 233.943 uc001xjh.1 25129 24980 90 33.229 uc001xji.1 849 700 0 0 uc001xjj.1 61406 61257 1.0059 0.151449 uc001xjk.3 45039 44890 0 0 uc021rvb.1 504 355 3.99417 103.769 uc001xjr.1 10995 10846 201.772 171.577 uc010tsy.1 7047 6898 0 0 uc001xjt.3 23736 23587 90.8802 35.5357 uc001xju.3 23736 23587 90.8802 35.5357 uc010aqp.3 23736 23587 90.8802 35.5357 uc001xjv.4 18992 18843 1189.6 582.261 uc001xjw.4 18992 18843 1189.6 582.261 uc001xjx.4 18992 18843 1189.6 582.261 uc001xka.2 70070 69921 1516.6 200.046 uc010tsz.1 70070 69921 1516.6 200.046 uc001xkb.3 11112 10963 0 0 uc021rvc.1 318 169 0 0 uc001xkc.4 55808 55659 0 0 uc010tta.2 20357 20208 0 0 uc021rvd.1 298 149 0 0 uc001xkh.2 6260 6111 1227.47 1852.54 uc001xki.2 6260 6111 1227.47 1852.54 uc021rve.1 8589 8440 51.1774 55.9246 uc021rvf.1 499 350 3.87772 102.182 uc001xkk.3 14141 13992 6399.38 4218.19 uc010ttb.2 103444 103295 0 0 uc001xkl.3 105244 105095 2815.51 247.083 uc001xkm.3 105244 105095 2815.51 247.083 uc001xkn.3 105244 105095 2815.51 247.083 uc010ttc.2 7197 7048 3164.08 4140.46 uc001xko.1 94087 93938 0 0 uc010ttd.1 93495 93346 0 0 uc001xkp.3 102278 102129 688.406 62.1675 uc001xkq.3 102278 102129 688.406 62.1675 uc001xkr.4 63994 63845 0 0 uc001xks.2 35011 34862 0 0 uc001xlc.2 18182 18033 2451.75 1253.94 uc010aqy.4 5070 4921 6.6816 12.5226 uc031qpg.1 2124 1975 1.3184 6.15669 uc021rvk.1 1431 1282 4.61474 33.1992 uc001xlr.2 21455 21306 2 0.865757 uc001xlu.3 35990 35841 0 0 uc001xlv.3 35990 35841 0 0 uc001xlw.3 144854 144705 1.56863 0.0999778 uc001xlx.3 144854 144705 1.56863 0.0999778 uc001xly.3 144854 144705 1.56863 0.0999778 uc001xlz.3 144854 144705 1.56863 0.0999778 uc010ara.3 144854 144705 1.56863 0.0999778 uc001xma.2 34132 33983 0.838795 0.227647 uc010ttg.2 2049 1900 10.2913 49.9556 uc001xmb.3 34651 34502 72.5775 19.4011 uc021rvl.1 34651 34502 72.5775 19.4011 uc021rvm.1 92010 91861 75.2995 7.56012 uc021rvn.1 92010 91861 75.2995 7.56012 uc021rvo.1 92010 91861 75.2995 7.56012 uc001xmc.4 50595 50446 281.946 51.5475 uc021rvr.1 14878 14729 11.0032 6.8899 uc001xme.3 12655 12506 6 4.42487 uc021rvs.1 2331 2182 0 0 uc001xmf.3 16428 16279 73.5401 41.6643 uc010tth.2 16428 16279 73.5401 41.6643 uc010tti.2 16428 16279 73.5401 41.6643 uc001xmg.1 8157 8008 0.0395872 0.0455931 uc010ttj.2 8090 7941 108.34 125.829 uc001xmh.1 32501 32352 0 0 uc001xmk.3 55309 55160 244.45 40.8727 uc010ttk.2 55309 55160 244.45 40.8727 uc001xml.3 81035 80886 198.08 22.5858 uc001xmm.3 81035 80886 198.08 22.5858 uc010arh.1 4062 3913 0 0 uc001xnc.2 274806 274657 3.87843 0.130237 uc001xnd.1 62246 62097 2.12624 0.315798 uc001xnf.2 232242 232093 0 0 uc010ari.1 224150 224001 0 0 uc010ttq.1 224150 224001 0 0 uc001xnl.3 17506 17357 248.05 131.805 uc001xnm.3 57762 57613 81.5764 13.0591 uc010arj.3 57762 57613 81.5764 13.0591 uc010ttv.2 556 407 0 0 uc001xnx.3 1962 1813 0 0 uc010ttz.1 9209 9060 999.086 1017.05 uc010aro.1 91772 91623 83.7776 8.43318 uc010arp.1 91772 91623 83.7776 8.43318 uc010arq.1 91772 91623 83.7776 8.43318 uc010arr.1 91772 91623 83.7776 8.43318 uc001xny.1 183369 183220 0.00176669 8.89314e-05 uc001xnz.1 183369 183220 0.00176669 8.89314e-05 uc001xoa.1 183369 183220 0.00176669 8.89314e-05 uc001xob.1 183369 183220 0.00176669 8.89314e-05 uc001xoc.1 183369 183220 0.00176669 8.89314e-05 uc001xod.1 183369 183220 0.00176669 8.89314e-05 uc010ars.1 183369 183220 0.00176669 8.89314e-05 uc001xoe.3 2704 2555 1247.9 4504.62 uc001xof.1 174498 174349 94.0258 4.97388 uc001xog.3 174318 174169 0.000496068 2.62686e-05 uc001xoh.1 172354 172205 1.44779e-05 7.75403e-07 uc021rwe.1 80463 80314 20.577 2.36297 uc021rwf.2 80463 80314 20.577 2.36297 uc010tub.1 33050 32901 32.2248 9.03336 uc021rwg.1 73 73 0 0 uc021rwh.1 97 97 0 0 uc001xor.1 2643 2494 1249 4618.85 uc001xos.3 14055 13906 2007.7 1331.57 uc001xot.3 45177 45028 63.2711 12.9596 uc001xou.3 72072 71923 37.439 4.80092 uc010tud.1 21410 21261 0.00397741 0.00172538 uc010arw.2 20951 20802 1827.53 810.267 uc001xov.1 7577 7428 2 2.48328 uc021rwj.1 105 105 0 0 uc001xpd.3 17423 17274 16.3643 8.73718 uc001xpi.3 57921 57772 571.352 91.2124 uc010tuo.2 52846 52697 20.8464 3.6485 uc001xpo.3 24325 24176 196.411 74.929 uc010asa.3 24325 24176 196.411 74.929 uc010tuq.2 24325 24176 196.411 74.929 uc001xpr.2 17788 17639 126.233 66.0036 uc001xps.2 17788 17639 126.233 66.0036 uc010tur.2 16740 16591 698.533 388.313 uc001xpu.2 12774 12625 0 0 uc001xpv.2 10778 10629 0 0 uc001xpx.2 20210 20061 0 0 uc001xpy.3 13442 13293 1228.5 852.354 uc010tus.2 13442 13293 1228.5 852.354 uc021rwm.1 72 72 0 0 uc001xqa.3 114149 114000 128 10.3555 uc001xqb.3 51853 51704 1667 297.358 uc010tut.1 49206 49057 0 0 uc001xqd.1 29809 29660 0 0 uc001xqq.2 10802 10653 4 3.46303 uc031qpi.1 10802 10653 4 3.46303 uc010tux.2 18532 18383 326.519 163.817 uc010asd.2 16843 16694 98.587 54.4662 uc001xqx.1 4505 4356 310.904 658.274 uc001xqy.1 12366 12217 35.9901 27.1698 uc001xqz.3 13935 13786 10 6.69005 uc001xrb.3 13935 13786 10 6.69005 uc010ase.2 7636 7487 0 0 uc010asf.2 7636 7487 0 0 uc001xrd.1 37769 37620 217 53.1996 uc001xre.1 37769 37620 217 53.1996 uc010tuy.1 26905 26756 0 0 uc001xrf.3 10809 10660 160.5 138.863 uc001xrg.3 10809 10660 160.5 138.863 uc001xrj.3 9571 9422 679.24 664.887 uc001xrk.3 35212 35063 464.654 122.222 uc001xrl.3 44961 44812 2206.36 454.097 uc010asg.1 16293 16144 6156.99 3517.42 uc010tuz.1 16430 16281 4.97357 2.81744 uc001xrm.1 45179 45030 1148.29 235.19 uc010ash.1 45179 45030 1148.29 235.19 uc021rwq.1 81 81 0 0 uc001xrt.3 10306 10157 1459 1324.82 uc001xsc.2 23651 23502 399 156.58 uc001xsd.3 18689 18540 0 0 uc031qpk.1 27 27 0 0 uc021rwr.1 87 87 0 0 uc001xsu.1 4985 4836 116.117 221.45 uc001xsv.3 25698 25549 1671 603.212 uc001xsy.4 4157 4008 963 2215.98 uc001xsz.3 33084 32935 0 0 uc001xta.1 7012 6863 2 2.68772 uc001xtb.1 5084 4935 0 0 uc010asp.3 10522 10373 0 0 uc001xtg.1 5822 5673 0 0 uc001xth.1 26208 26059 1644.41 581.997 uc001xti.2 45927 45778 1325.59 267.066 uc010asr.2 21428 21279 0 0 uc001xtn.1 2626 2477 248.474 925.174 uc001xto.1 36102 35953 80.5255 20.6569 uc001xtr.3 29035 28886 4.592 1.46616 uc010tvi.2 16454 16305 7.408 4.19032 uc001xtt.2 30966 30817 104.389 31.2415 uc001xtu.2 30966 30817 104.389 31.2415 uc001xtv.2 30966 30817 104.389 31.2415 uc010tvj.2 30966 30817 104.389 31.2415 uc021rwu.1 30966 30817 104.389 31.2415 uc001xty.3 24473 24324 0.666667 0.252779 uc001xtz.3 24473 24324 0.666667 0.252779 uc001xua.3 24473 24324 0.666667 0.252779 uc001xub.3 110771 110622 2611.28 217.71 uc001xuc.1 35608 35459 639 166.204 uc001xuf.3 43554 43405 436.741 92.8009 uc010tvm.2 43554 43405 436.741 92.8009 uc010tvn.1 43202 43053 0 0 uc021rwx.1 119 119 0 0 uc021rwy.1 73 73 0 0 uc001xuo.1 9296 9147 0 0 uc001xut.3 14001 13852 153.321 102.084 uc010asx.3 14001 13852 153.321 102.084 uc021rxa.1 14001 13852 153.321 102.084 uc021rxb.1 14103 13954 790.501 522.482 uc010asy.3 33530 33381 18.0138 4.97706 uc010asz.3 359356 359207 348.008 8.93536 uc031qpo.1 464720 464571 6.72809 0.13357 uc001xux.2 443064 442915 0 0 uc001xuy.1 74767 74618 0 0 uc001xva.1 59547 59398 0 0 uc010ata.1 36231 36082 47.4745 12.1349 uc001xve.2 45501 45352 350.305 71.239 uc001xvf.2 45501 45352 350.305 71.239 uc001xvg.2 45780 45631 162.39 32.8221 uc001xvi.1 140 140 0 0 uc010tvt.3 18169 18020 1732.06 886.494 uc010tvu.3 166563 166414 0 0 uc001xvk.2 166755 166606 138.14 7.64709 uc010atc.1 23304 23155 139.801 55.6845 uc010tvv.2 62315 62166 3056 453.386 uc001xvo.4 35052 34903 0 0 uc001xvp.3 17715 17566 0 0 uc001xvq.1 4856 4707 0 0 uc010tvw.1 142829 142680 0 0 uc001xvt.3 60258 60109 1.32664e-07 2.03554e-08 uc010tvy.2 60258 60109 1.32664e-07 2.03554e-08 uc010tvx.2 60652 60503 0 0 uc010tvz.1 59037 58888 33 5.16839 uc001xvu.2 29956 29807 0 0 uc021rxg.1 104 104 0 0 uc001xvx.3 29 29 0 0 uc031qpr.1 28 28 0 0 uc010twa.1 31 31 0 0 uc021rxi.1 70 70 0 0 uc021rxj.1 34 34 0 0 uc031qps.1 45 45 0 0 uc021rxk.1 28 28 0 0 uc021rxl.1 40 40 0 0 uc021rxm.1 30 30 0 0 uc031qpt.1 45 45 0 0 uc001xwa.3 31 31 0 0 uc021rxo.1 30 30 0 0 uc001xwb.3 52 52 0 0 uc001xwc.3 39 39 0 0 uc001xwd.1 30 30 0 0 uc021rxp.1 31 31 0 0 uc021rxq.1 46 46 0 0 uc021rxr.1 37 37 0 0 uc021rxs.1 34 34 0 0 uc031qpu.1 30 30 0 0 uc021rxu.1 31 31 0 0 uc031qpv.1 30 30 0 0 uc021rxv.1 34 34 0 0 uc031qpw.1 30 30 0 0 uc021rxw.1 30 30 0 0 uc021rxx.1 30 30 0 0 uc010twb.2 35 35 0 0 uc001xwh.3 36 36 0 0 uc031qpx.1 31 31 0 0 uc021rxy.1 31 31 0 0 uc021rxz.1 30 30 0 0 uc001xwi.3 32 32 0 0 uc031qpy.1 32 32 0 0 uc021rya.1 35 35 0 0 uc021ryb.1 1236 1087 0 0 uc001xwm.3 90804 90655 1 0.101736 uc001xwn.3 143142 142993 0 0 uc001xwo.3 146805 146656 0 0 uc001xwp.1 2185 2036 0 0 uc010twc.2 84842 84693 1497.92 163.121 uc001xwv.4 89002 88853 64.0767 6.65113 uc010atf.1 58590 58441 0 0 uc001xxd.3 4883 4734 16.2671 31.6921 uc001xxe.3 6590 6441 33.9107 48.557 uc001xxf.3 50660 50511 24.795 4.52737 uc021ryf.1 177923 177774 9.11298 0.472781 uc021ryg.1 177923 177774 9.11298 0.472781 uc001xxh.1 93439 93290 16.9708 1.67778 uc001xxn.4 260939 260790 1352.41 47.8285 uc001xxo.4 462979 462830 15.6576 0.312012 uc010atk.3 462979 462830 15.6576 0.312012 uc031qqb.1 2152 2003 0 0 uc001xxp.2 207217 207068 30.9709 1.37946 uc001xxs.3 157399 157250 0 0 uc001xxt.3 157621 157472 56.7012 3.32091 uc001xxu.3 6832 6683 0 0 uc001xxv.1 117725 117576 160.736 12.6084 uc001xxw.2 31198 31049 0 0 uc001xxx.2 31420 31271 0 0 uc010atp.1 34490 34341 461.7 123.998 uc001xyi.2 54084 53935 26.15 4.47165 uc001xyj.2 54084 53935 26.15 4.47165 uc001xyo.3 103621 103472 0 0 uc010ats.3 149125 148976 0 0 uc001xyp.3 275830 275681 1491.34 49.8929 uc010twi.1 189312 189163 0 0 uc001xys.2 189827 189678 44.0493 2.14185 uc001xyt.3 166675 166526 0 0 uc010att.1 160039 159890 0 0 uc001xzg.3 11977 11828 0 0 uc001xzh.3 21349 21200 0 0 uc021ryk.1 1098 949 0 0 uc001xzi.3 12301 12152 518.264 393.343 uc001xzj.3 14340 14191 0 0 uc010aty.3 146522 146373 1574.74 99.2235 uc010twk.1 77729 77580 0 0 uc021ryl.1 38706 38557 0 0 uc001xzl.4 39204 39055 0 0 uc001xzm.3 52689 52540 7.04557e-08 1.23678e-08 uc001xzn.3 52858 52709 404.942 70.8559 uc001xzo.3 52858 52709 404.942 70.8559 uc010atz.3 52858 52709 404.942 70.8559 uc001xzp.1 47656 47507 0 0 uc001xzq.1 7553 7404 121.354 151.167 uc010aua.3 2331 2182 0 0 uc010aub.1 89199 89050 41.5083 4.29901 uc001xzs.1 151296 151147 0 0 uc001xzt.4 56583 56434 13.3333 2.17904 uc001xzu.4 56583 56434 13.3333 2.17904 uc010auc.3 56583 56434 13.3333 2.17904 uc001xzv.4 87614 87465 0 0 uc021rym.1 113 113 0 0 uc001xzw.3 5406 5257 23.946 42.011 uc010aud.3 77363 77214 4.20202e-06 5.01914e-07 uc001xzx.4 78292 78143 186.208 21.9774 uc010aue.3 78292 78143 186.208 21.9774 uc010auf.2 47963 47814 107.398 20.7162 uc001xzy.3 72161 72012 440.44 56.4092 uc001xzz.4 9675 9526 0 0 uc001yaa.3 5762 5613 14 23.0039 uc001yab.3 5872 5723 1.60801e-07 2.59139e-07 uc001yac.4 48070 47921 3.72641 0.717187 uc001yad.4 48070 47921 3.72641 0.717187 uc001yae.4 48070 47921 3.72641 0.717187 uc010aug.3 48070 47921 3.72641 0.717187 uc010twl.2 48070 47921 3.72641 0.717187 uc021ryo.1 48070 47921 3.72641 0.717187 uc021ryp.1 48070 47921 3.72641 0.717187 uc021ryq.1 48070 47921 3.72641 0.717187 uc021ryr.1 48070 47921 3.72641 0.717187 uc021rys.1 48070 47921 3.72641 0.717187 uc021ryt.1 48070 47921 3.72641 0.717187 uc021ryu.1 48070 47921 3.72641 0.717187 uc021ryv.1 48070 47921 3.72641 0.717187 uc021ryw.1 48070 47921 3.72641 0.717187 uc021ryx.1 48070 47921 3.72641 0.717187 uc021ryy.1 48070 47921 3.72641 0.717187 uc021ryz.2 48070 47921 3.72641 0.717187 uc021rza.1 48070 47921 3.72641 0.717187 uc021rzb.1 48070 47921 3.72641 0.717187 uc021rzc.1 48070 47921 3.72641 0.717187 uc021rzd.1 48070 47921 3.72641 0.717187 uc021rze.1 48070 47921 3.72641 0.717187 uc021rzf.1 48070 47921 3.72641 0.717187 uc021rzg.1 48070 47921 3.72641 0.717187 uc021rzh.1 48070 47921 3.72641 0.717187 uc021rzi.1 48070 47921 3.72641 0.717187 uc021rzj.1 48070 47921 3.72641 0.717187 uc021rzk.1 48070 47921 3.72641 0.717187 uc021rzl.1 48070 47921 3.72641 0.717187 uc021rzm.1 48070 47921 3.72641 0.717187 uc021rzn.1 48070 47921 3.72641 0.717187 uc021rzo.1 35860 35711 0 0 uc021rzp.1 25216 25067 0 0 uc021rzq.1 35687 35538 0 0 uc021rzr.1 35687 35538 0 0 uc021rzs.1 35687 35538 0 0 uc021rzt.1 35687 35538 0 0 uc021rzu.1 35687 35538 0 0 uc021rzv.1 35687 35538 0 0 uc021rzw.1 35687 35538 0 0 uc021rzx.1 35687 35538 0 0 uc021rzy.1 35687 35538 0 0 uc021rzz.1 35687 35538 0 0 uc021saa.1 35687 35538 0 0 uc021sab.1 35687 35538 0 0 uc021sac.1 35687 35538 0 0 uc021sad.1 35687 35538 0 0 uc021sae.1 35687 35538 0 0 uc021saf.2 35687 35538 0 0 uc021sag.1 35687 35538 0 0 uc021sah.1 35687 35538 0 0 uc021sai.1 35687 35538 0 0 uc021saj.1 35687 35538 0 0 uc021sak.1 35687 35538 0 0 uc021sal.1 35687 35538 0 0 uc021sam.1 35687 35538 0 0 uc021san.1 35687 35538 0 0 uc021sao.1 35687 35538 0 0 uc021sap.1 35687 35538 0 0 uc021saq.1 35687 35538 0 0 uc021sar.1 35687 35538 0 0 uc021sas.1 35687 35538 0 0 uc021sat.1 35687 35538 0 0 uc021sau.2 35687 35538 0 0 uc021sav.1 25669 25520 36.4813 13.1843 uc001yaf.3 5686 5537 479 797.864 uc001yag.1 2931 2782 0 0 uc001yal.1 813 664 0 0 uc001yam.1 871 722 0 0 uc001yat.3 29022 28873 1177.47 376.119 uc001yau.3 29022 28873 1177.47 376.119 uc001yav.3 44896 44747 124.031 25.5643 uc001yaw.3 44896 44747 124.031 25.5643 uc001ybe.2 179005 178856 250.632 12.9241 uc001ybf.3 175583 175434 1515.01 79.6472 uc001ybg.3 176196 176047 704.677 36.9172 uc001ybh.3 176196 176047 704.677 36.9172 uc001ybj.3 2709 2560 431 1552.76 uc021saw.1 1056 907 0 0 uc001ybl.1 4223 4074 220 498.046 uc010aur.3 57388 57239 546.013 87.979 uc010two.2 57388 57239 546.013 87.979 uc001ybo.3 95490 95341 8.98455 0.869129 uc001ybp.3 95490 95341 8.98455 0.869129 uc001ybq.4 39418 39269 0 0 uc001ybr.3 45412 45263 19.0045 3.87241 uc001ybw.1 70123 69974 0 0 uc001ybx.1 70123 69974 0 0 uc001yby.2 21643 21494 0 0 uc001ycb.2 6343 6194 0 0 uc001ycc.2 23269 23120 0 0 uc001ycd.3 42578 42429 0 0 uc001yce.1 17882 17733 0 0 uc001ycj.3 30291 30142 1906.33 583.303 uc010twq.2 30291 30142 1906.33 583.303 uc010twr.2 30291 30142 1906.33 583.303 uc001ycq.3 1840 1691 10 54.5411 uc001yct.3 9712 9563 0 0 uc001ycu.5 9959 9810 0 0 uc001ycv.3 19104 18955 0 0 uc010auv.3 19104 18955 0 0 uc001ycw.4 6495 6346 0 0 uc001ycx.4 12070 11921 0 0 uc001ycy.4 13946 13797 0 0 uc001ycz.4 13946 13797 0 0 uc001ydb.4 13946 13797 0 0 uc001ydc.4 13946 13797 0 0 uc010auw.3 13946 13797 0 0 uc010aux.3 13946 13797 0 0 uc010auy.3 13946 13797 0 0 uc010auz.3 13946 13797 0 0 uc010ava.3 13946 13797 0 0 uc010avb.3 13946 13797 0 0 uc001yda.1 9548 9399 0 0 uc001ydd.1 10322 10173 0 0 uc001yde.3 13613 13464 0 0 uc001ydf.3 13613 13464 0 0 uc001ydg.3 13613 13464 0 0 uc010avc.3 13613 13464 0 0 uc001ydh.1 11708 11559 0 0 uc001ydi.1 11708 11559 0 0 uc001ydj.3 30562 30413 0 0 uc001ydu.3 1940 1791 0 0 uc010avh.1 19996 19847 263.865 122.618 uc021sbc.1 47276 47127 986.316 193.025 uc001ydv.3 50583 50434 0 0 uc001ydw.2 55521 55372 0 0 uc001ydx.2 71195 71046 0 0 uc001ydy.1 8702 8553 0 0 uc021sbd.1 11671 11522 73.4508 58.7945 uc001ydz.1 24908 24759 0.0278167 0.0103619 uc001yea.1 24908 24759 0.0278167 0.0103619 uc001yeb.1 24908 24759 0.0278167 0.0103619 uc001yec.1 24696 24547 13.5041 5.0738 uc021sbe.1 68 68 0 0 uc001yef.2 137970 137821 66.0216 4.41813 uc001yeh.4 2824 2675 56 193.078 uc001yei.4 58343 58194 138.62 21.9692 uc010avi.3 58343 58194 138.62 21.9692 uc001yej.1 31685 31536 53.761 15.7227 uc001yek.3 1961 1812 98.5 501.355 uc001yel.3 1961 1812 98.5 501.355 uc001yfb.4 4230 4081 0 0 uc001yfc.4 4230 4081 0 0 uc031qqd.1 4230 4081 0 0 uc001yfi.3 82084 81935 571 64.2739 uc001yfv.2 54012 53863 1.00161 0.171505 uc001yfw.2 52515 52366 0 0 uc001yfx.2 45063 44914 0 0 uc001yfy.2 20195 20046 0 0 uc010avq.2 20195 20046 0 0 uc021sbl.1 41 41 0 0 uc001yga.3 102198 102049 0 0 uc001ygb.3 102198 102049 0 0 uc031qqh.1 102198 102049 0 0 uc031qqi.1 102198 102049 0 0 uc031qqj.1 82499 82350 590.547 66.1391 uc001ygc.3 83144 82995 387.453 43.0561 uc001ygd.3 71086 70937 0 0 uc021sbn.1 70794 70645 0 0 uc001ygf.3 69611 69462 0 0 uc010avr.3 93125 92976 4125.51 409.237 uc001ygx.2 13260 13111 13 9.14482 uc010avv.3 4619 4470 2595.1 5354.43 uc001yha.3 15408 15259 528.952 319.711 uc010twx.2 15408 15259 528.952 319.711 uc010avw.3 10866 10717 5.84164e-06 5.02724e-06 uc001yhg.2 41803 41654 1238.21 274.161 uc001yhh.1 41803 41654 1238.21 274.161 uc001yhi.1 41803 41654 1238.21 274.161 uc001yhk.1 42556 42407 1154.51 251.089 uc001yhl.1 42556 42407 1154.51 251.089 uc010twz.1 21398 21249 0 0 uc001yhp.3 9633 9484 1191.89 1159.08 uc010txa.2 30924 30775 1880.75 563.638 uc001yhq.3 32648 32499 207.36 58.8468 uc010txj.1 4193 4044 0 0 uc031qqm.1 21 21 0 0 uc001ykb.1 3454 3305 6.27637 17.5148 uc001ykd.1 8181 8032 9.04937 10.3911 uc001yke.3 3105 2956 1.57537 4.91525 uc031qqn.1 3105 2956 1.57537 4.91525 uc001ykf.3 3100 2951 7.76176 24.2582 uc001ykg.3 3100 2951 7.76176 24.2582 uc001ykh.3 3096 2947 0 0 uc021sdw.1 136 136 0 0 uc001yku.4 6438 6289 24671.2 36180.6 uc001ykv.4 59012 58863 35.8363 5.61498 uc001ykw.1 3714 3565 0 0 uc001ykx.1 3387 3238 0 0 uc001ylh.4 16125 15976 51.7262 29.8614 uc001ylj.4 11801 11652 37.4979 29.6807 uc001ylk.4 11801 11652 37.4979 29.6807 uc001yll.4 11801 11652 37.4979 29.6807 uc001ylm.4 76380 76231 12.6053 1.52507 uc001yln.4 76380 76231 12.6053 1.52507 uc010txv.3 76380 76231 12.6053 1.52507 uc001ylu.1 16977 16828 511.38 280.271 uc021sea.1 14436 14287 0 0 uc001ylv.1 14638 14489 18.1323 11.542 uc021seb.1 14638 14489 18.1323 11.542 uc001ylx.1 1957 1808 23.2597 118.652 uc001ylz.1 2931 2782 148.526 492.393 uc001yma.1 2931 2782 148.526 492.393 uc021sec.1 954 805 407.689 4670.9 uc001ymi.1 125027 124878 6070.82 448.362 uc001ymj.1 20760 20611 1504.02 673.01 uc001ymn.3 1808 1659 0 0 uc001ymp.1 694 545 2 33.8455 uc001ynf.2 3202 3053 31419 94914.7 uc001ynh.2 5775 5626 622.317 1020.19 uc001yni.2 5775 5626 622.317 1020.19 uc001ynj.2 6271 6122 49.371 74.3783 uc021seg.1 1344 1195 291.994 2253.59 uc001ynu.1 1647 1498 0 0 uc001ynv.1 1660 1511 0 0 uc001ynx.4 17870 17721 398.153 207.219 uc001yny.4 17870 17721 398.153 207.219 uc001ynz.4 17870 17721 398.153 207.219 uc001yoa.4 17870 17721 398.153 207.219 uc021sei.1 20 20 0 0 uc010awv.1 12803 12654 633.353 461.621 uc001yof.1 113840 113691 86.6785 7.03158 uc001yog.1 107062 106913 0 0 uc001yoi.4 9279 9130 1393.61 1407.8 uc001yoj.4 9279 9130 1393.61 1407.8 uc001yok.3 9057 8908 0 0 uc010aww.2 9057 8908 0 0 uc031qqp.1 1883 1734 0 0 uc021sej.1 86 86 0 0 uc001you.2 2237 2088 0 0 uc001yov.1 1201 1052 0 0 uc001yox.1 10678 10529 0 0 uc021sek.1 56 56 1 164.695 uc001ypj.3 2372 2223 592.883 2459.79 uc010tyk.2 8329 8180 4174.05 4706.22 uc001ypk.3 24252 24103 33.3262 12.7521 uc001ypl.3 24252 24103 33.3262 12.7521 uc010axa.3 24842 24693 463.371 173.07 uc001ypm.3 26394 26245 271.02 95.2405 uc001ypn.3 26394 26245 271.02 95.2405 uc021sen.1 4440 4291 30.1699 64.846 uc021seo.1 16652 16503 8304.66 4641.16 uc001ypx.2 33230 33081 951.349 265.234 uc010axc.1 41104 40955 98.8246 22.2549 uc001yqa.2 11516 11367 422.97 343.188 uc001yqb.2 11516 11367 422.97 343.188 uc021sep.1 726 577 1148.06 18350.9 uc001yqc.3 6767 6618 2 2.78722 uc001yqd.3 16018 15869 0 0 uc001yqe.3 16018 15869 0 0 uc010axe.1 10031 9882 0 0 uc001yqf.4 10423 10274 5162.34 4634.2 uc001yqg.4 27844 27695 3313.83 1103.56 uc001yqh.4 27844 27695 3313.83 1103.56 uc001yqi.4 8387 8238 214 239.585 uc010tyn.3 8387 8238 214 239.585 uc001yqk.2 13107 12958 493.271 351.087 uc001yql.2 38600 38451 0.696621 0.167092 uc001yqo.2 40119 39970 161.141 37.1825 uc001yqp.2 91707 91558 248.197 25.0016 uc010axg.1 91707 91558 248.197 25.0016 uc010tyo.1 106292 106143 6.41266e-05 5.57204e-06 uc010typ.1 106292 106143 6.41266e-05 5.57204e-06 uc001yqn.2 38457 38308 7.53597e-08 1.81434e-08 uc010axh.1 38457 38308 7.53597e-08 1.81434e-08 uc010axi.1 10793 10644 0 0 uc010axj.1 21252 21103 0 0 uc001yqr.3 44807 44658 0 0 uc031qqx.1 1288830 1.28868e+06 1857.4 13.2932 uc001yrs.3 277245 277096 0 0 uc001yrt.3 277622 277473 0 0 uc010axp.1 290 141 0 0 uc001yru.2 2323 2174 0 0 uc001yrw.1 263185 263036 0 0 uc001yrx.2 264192 264043 0 0 uc001yry.1 180 31 0 0 uc001yrz.2 224573 224424 0 0 uc001ysb.2 4706 4557 0 0 uc031qqy.1 3257 3108 0 0 uc001ysc.3 639 490 0 0 uc001ysd.1 290 141 0 0 uc001yse.3 127790 127641 0 0 uc001ysg.1 5201 5052 0 0 uc001ysh.1 8273 8124 0 0 uc001ysi.2 8273 8124 0 0 uc001ysj.3 26364 26215 0 0 uc001ysk.1 24815 24666 0 0 uc001ysl.1 24815 24666 0 0 uc001ysm.2 25822 25673 0 0 uc001ysn.1 26820 26671 0 0 uc021set.1 2474 2325 0 0 uc001ysu.1 2540 2391 0 0 uc001ysv.3 21198 21049 0 0 uc001ysw.1 741 592 0 0 uc001ysx.1 4114 3965 0 0 uc001ysz.3 1023 874 0 0 uc001yta.1 1088 939 0 0 SummarizedExperiment/inst/extdata/kallisto/abundance.txt0000644000175400017540000000111513175715010024671 0ustar00biocbuildbiocbuildtarget_id length eff_length est_counts tpm NM_001168316 2283 2105.9 164.133 12856.9 NM_174914 2385 2207.9 1495.6 111741 NR_031764 1853 1675.9 104.27 10263.4 NM_004503 1681 1503.9 332.001 36416.5 NM_006897 1541 1363.9 664 80308.9 NM_014212 2037 1859.9 55 4878.11 NM_014620 2300 2122.9 592.584 46046.7 NM_017409 1959 1781.9 47 4351.04 NM_017410 2396 2218.9 42 3122.41 NM_018953 1612 1434.9 227.995 26210.8 NM_022658 2288 2110.9 4881 381434 NM_153633 1666 1488.9 359.898 39874.2 NM_153693 2072 1894.9 72.5147 6312.74 NM_173860 849 671.903 962 236182 NR_003084 1640 1462.9 0.00787013 0.887453 SummarizedExperiment/inst/extdata/kallisto/run_info.json0000644000175400017540000000040613175715010024724 0ustar00biocbuildbiocbuild{ "n_targets": 2858, "n_bootstraps": 100, "kallisto_version": "0.42.2", "index_version": 10, "start_time": "Wed Jun 10 15:03:26 2015", "call": "../kallisto/build/src/kallisto quant -i hg19chr14transcripts.idx -o output -b 100 --single -l 150 /dev/fd/63" } SummarizedExperiment/inst/scripts/0000755000175400017540000000000013175715010020425 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/scripts/Find_and_update_objects/0000755000175400017540000000000013175715010025202 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/scripts/Find_and_update_objects/README0000644000175400017540000000536713175715010026075 0ustar00biocbuildbiocbuildFind and update objects ======================= This document describes the procedure for finding and updating serialized objects in the rda files located in a directory hierarchy. This procedure consists of 4 STEPS, as described below. Note that this procedure was developped and used to update all "old" serialized SummarizedExperiment objects located in the data-experiment svn repository. It should be easy to adapt to update other types of objects in other locations. Also note that the purpose of STEPS 1 & 2 & 3 below is to collect the list of rda objects to update. Since this can take a long time, the 2 lists obtained for the "old" serialized SummarizedExperiment objects located in https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/pkgs and https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/data_store were saved to the pkgs_RDA_OBJECTS_TO_UPDATE and data_store_RDA_OBJECTS_TO_UPDATE files, respectively, and these 2 files placed in this folder. So in case these objects need to be updated again, these 2 files can be re-used to run STEP 4 directly without the need to re-run STEPS 1 & 2 & 3. STEP 1: Prepare list of rda files to scan. cd

find . -type d -name '.svn' -prune -o -type f -print | \ grep -Ei '\.(rda|RData)$' >RDA_FILES STEP 2: Scan the rda files. cd R="$HOME/bin/R-3.2" R_SCRIPT="scriptfile <- system.file('scripts', 'Find_and_update_objects', " R_SCRIPT="$R_SCRIPT 'scan_rda_files.R', " R_SCRIPT="$R_SCRIPT package='SummarizedExperiment', mustWork=TRUE)" R_SCRIPT="$R_SCRIPT; source(scriptfile)" echo "$R_SCRIPT" | $R --vanilla >scan_rda_files.log 2>&1 & STEP 3: Collect rda objects to update. cd R="$HOME/bin/R-3.2" R_SCRIPT="scriptfile <- system.file('scripts', 'Find_and_update_objects', " R_SCRIPT="$R_SCRIPT 'collect_rda_objects_to_update.R', " R_SCRIPT="$R_SCRIPT package='SummarizedExperiment', mustWork=TRUE)" R_SCRIPT="$R_SCRIPT; source(scriptfile)" echo "$R_SCRIPT" | $R --vanilla >collect_rda_objects_to_update.log 2>&1 & STEP 4: Update rda objects. cd #To update the "old" serialized SummarizedExperiment objects located in # https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/pkgs #replace the above command with # svn co https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/pkgs # cp path/to/pkgs_RDA_OBJECTS_TO_UPDATE pkgs/RDA_OBJECTS_TO_UPDATE # cd pkgs R="$HOME/bin/R-3.2" R_SCRIPT="scriptfile <- system.file('scripts', 'Find_and_update_objects', " R_SCRIPT="$R_SCRIPT 'update_rda_objects.R', " R_SCRIPT="$R_SCRIPT package='SummarizedExperiment', mustWork=TRUE)" R_SCRIPT="$R_SCRIPT; source(scriptfile)" echo "$R_SCRIPT" | $R --vanilla >update_rda_objects.log 2>&1 & SummarizedExperiment/inst/scripts/Find_and_update_objects/collect_rda_objects_to_update.R0000644000175400017540000001172113175715010033357 0ustar00biocbuildbiocbuild### ========================================================================= ### collect_rda_objects_to_update.R ### ------------------------------------------------------------------------- ### ### This script performs STEP 3 of the "Find and update objects" procedure ### described in the README file located in the same folder. ### ### Before you run this script, make sure you performed STEPS 1 & 2. ### See README file for more information. ### ### Then to run STEP 3 in "batch" mode: ### ### cd # RDA_OBJECTS file should be here ### R CMD BATCH collect_rda_objects_to_update.R \ ### >collect_rda_objects_to_update.log 2>&1 & ### ### The output of STEP 3 is a file created in the current directory and named ### RDA_OBJECTS_TO_UPDATE. It is a subset of input file RDA_OBJECTS. ### INFILE <- "RDA_OBJECTS" OUTFILE <- "RDA_OBJECTS_TO_UPDATE" library(BiocInstaller) library(SummarizedExperiment) if (FALSE) { ### Unfortunately, loading all the required packages in the main process will ### sometimes hit the maximal number of DLLs that can be loaded ("maximal ### number of DLLs reached..." infamous error). .check_classes <- function(classes, package) { suppressWarnings(suppressPackageStartupMessages( library(package, character.only=TRUE, quietly=TRUE) )) sapply(classes, function(class) { extends(class, "SummarizedExperiment") || extends(class, "RangedSummarizedExperiment") }) } } ### We check the classes in a subprocess to work around the "maximal number ### of DLLs reached..." infamous error. .check_classes <- function(classes, package) { classes_in1string <- paste0("\"", classes, "\"") classes_in1string <- paste0("c(", paste(classes_in1string, collapse=", "), ")") outfile <- file.path(tempdir(), paste0(package, "_class_summary")) input <- c("suppressWarnings(suppressPackageStartupMessages(", sprintf(" library(%s)", "SummarizedExperiment"), "))", "suppressWarnings(suppressPackageStartupMessages(", sprintf(" library(%s)", package), "))", sprintf("classes <- %s", classes_in1string), "ok <- sapply(classes, function(class) {", " extends(class, \"SummarizedExperiment\") ||", " extends(class, \"RangedSummarizedExperiment\")", "})", "class_summary <- data.frame(class=classes, ok=unname(ok))", sprintf("write.table(class_summary, file=\"%s\", sep=\"\t\")", outfile) ) command <- file.path(R.home("bin"), "R") args <- c("--vanilla", "--slave") system2(command, args=args, input=input) class_summary <- read.table(outfile, stringsAsFactors=FALSE) file.remove(outfile) stopifnot(identical(class_summary[ , "class"], classes)) # sanity check setNames(class_summary[ , "ok"], classes) } collectRdaObjectsToUpdate <- function(rda_objects, outfile="") { rda_objects2 <- unique(rda_objects[ , c("objclass", "objclass_pkg")]) objclass2 <- rda_objects2[ , "objclass"] objclass_pkg2 <- rda_objects2[ , "objclass_pkg"] idx <- which(duplicated(objclass2)) if (length(idx) != 0L) { msg <- c("the following classes are defined in more than 1 package: ", paste0(unique(objclass2[idx]), collapse=", ")) warning(msg) } pkg2class <- split(objclass2, objclass_pkg2) pkg2class[c(".", ".GlobalEnv")] <- NULL pkgs <- names(pkg2class) ## Install missing packages. installed_pkgs <- rownames(installed.packages()) missing_pkgs <- setdiff(pkgs, installed_pkgs) if (length(missing_pkgs) != 0L) { biocLite(missing_pkgs) installed_pkgs <- rownames(installed.packages()) missing_pkgs <- setdiff(pkgs, installed_pkgs) if (length(missing_pkgs) != 0L) { ## Some packages could not be installed. pkgs <- intersect(pkgs, installed_pkgs) pkg2class <- pkg2class[pkgs] } } ## Check classes, one package at a time. class2ok <- unlist( lapply(seq_along(pkgs), function(i) { pkg <- pkgs[[i]] cat("[", i , "/", length(pkgs), "] Check classes defined ", "in package ", pkg, " ... ", sep="") ans <- .check_classes(pkg2class[[pkg]], pkg) cat("OK\n") ans } ) ) ## Write output to file. objclass <- rda_objects[ , "objclass"] ok <- class2ok[objclass] ok[is.na(ok)] <- FALSE rda_objects_to_update <- rda_objects[ok, , drop=FALSE] rda_objects_to_update <- do.call( paste, c(as.list(rda_objects_to_update), list(sep="\t")) ) writeLines(rda_objects_to_update, con=outfile) } rda_objects <- read.table(INFILE, stringsAsFactors=FALSE) colnames(rda_objects) <- c("rda_file", "objname", "objclass", "objclass_pkg") collectRdaObjectsToUpdate(rda_objects, outfile=OUTFILE) SummarizedExperiment/inst/scripts/Find_and_update_objects/data_store_RDA_OBJECTS_TO_UPDATE0000644000175400017540000000422613175715010032561 0ustar00biocbuildbiocbuild# This file contains the list of rda objects to update located in # https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/data_store # It was obtained by running STEPS 1 & 2 & 3 of the "Find and update objects" # procedure on May 26, 2015. See README file for more information. # To update the objects listed in this file: # 1. Get a working copy of the above URL. # 2. Copy this file to the working copy and rename it RDA_OBJECTS_TO_UPDATE. # 3. Run STEP 4 (see README file for more information). ./geuvPack/data/geuFPKM.rda geuFPKM SummarizedExperiment GenomicRanges ./bsseqData/data/BS.cancer.ex.fit.rda BS.cancer.ex.fit BSseq bsseq ./bsseqData/data/BS.cancer.ex.rda BS.cancer.ex BSseq bsseq ./fission/data/fission.RData fission SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_010_04.RData dream4_010_04 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_100_01.RData dream4_100_01 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_010_01.RData dream4_010_01 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_010_05.RData dream4_010_05 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_010_02.RData dream4_010_02 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_100_04.RData dream4_100_04 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_010_03.RData dream4_010_03 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_100_05.RData dream4_100_05 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_100_02.RData dream4_100_02 SummarizedExperiment GenomicRanges ./DREAM4/data/dream4_100_03.RData dream4_100_03 SummarizedExperiment GenomicRanges ./COSMIC.67/data/cosmic_67.rda cosmic_67 CollapsedVCF VariantAnnotation ./parathyroidSE/data/parathyroidGenesSE.RData parathyroidGenesSE SummarizedExperiment GenomicRanges ./parathyroidSE/data/parathyroidExonsSE.RData parathyroidExonsSE SummarizedExperiment GenomicRanges ./RRBSdata/data/rrbs.RData rrbs BSraw BiSeq ./airway/data/airway.RData airway SummarizedExperiment GenomicRanges ./dsQTL/data/DSQ_2.rda DSQ_2 SummarizedExperiment GenomicRanges ./dsQTL/data/DSQ_17.rda DSQ_17 SummarizedExperiment GenomicRanges ./dsQTL/data/DHStop5_hg19.rda DHStop5_hg19 SummarizedExperiment GenomicRanges SummarizedExperiment/inst/scripts/Find_and_update_objects/pkgs_RDA_OBJECTS_TO_UPDATE0000644000175400017540000000106713175715010031400 0ustar00biocbuildbiocbuild# This file contains the list of rda objects to update located in # https://hedgehog.fhcrc.org/bioc-data/trunk/experiment/pkgs # It was obtained by running STEPS 1 & 2 & 3 of the "Find and update objects" # procedure on May 26, 2015. See README file for more information. # To update the objects listed in this file: # 1. Get a working copy of the above URL. # 2. Copy this file to the working copy and rename it RDA_OBJECTS_TO_UPDATE. # 3. Run STEP 4 (see README file for more information). ./pasilla/data/pasillaDEXSeqDataSet.RData dxd DEXSeqDataSet DEXSeq SummarizedExperiment/inst/scripts/Find_and_update_objects/scan_rda_files.R0000644000175400017540000000464713175715010030274 0ustar00biocbuildbiocbuild### ========================================================================= ### scan_rda_files.R ### ------------------------------------------------------------------------- ### ### This script performs STEP 2 of the "Find and update objects" procedure ### described in the README file located in the same folder. ### ### Before you run this script, make sure you performed STEP 1, that is, you ### need to generate input file RDA_FILES. This can be achieved with ### something like: ### ### cd ### find . -type d -name '.svn' -prune -o -type f -print | \ ### grep -Ei '\.(rda|RData)$' >RDA_FILES ### ### See README file for more information. ### ### Then to run STEP 2 in "batch" mode: ### ### cd # RDA_FILES file should be here ### R CMD BATCH scan_rda_files.R >scan_rda_files.log 2>&1 & ### ### This can take a couple of hours to complete... ### ### The output of STEP 2 is a file created in the current directory and named ### RDA_OBJECTS. It has 1 line per serialized object and the 4 following ### fields (separated by tabs): ### 1. Path to rda file (as found in input file RDA_FILES). ### 2. Name of object in rda file. ### 3. Class of object in rda file. ### 4. Package where class of object is defined. ### INFILE <- "RDA_FILES" OUTFILE <- "RDA_OBJECTS" scanRdaFiles <- function(rda_files, outfile="") { cat("", file=outfile) # create (or overwrite) empty output file for (i in seq_along(rda_files)) { rda_file <- rda_files[[i]] cat("[", i , "/", length(rda_files), "] Loading ", rda_file, " ... ", sep="") envir <- new.env(parent=emptyenv()) load(rda_file, envir=envir) cat("OK\n") for (objname in names(envir)) { obj <- get(objname, envir=envir) objclass <- class(obj) objclass_pkg <- attr(objclass, "package") ## Fix 'objclass' and 'objclass_pkg' (they both need to be ## character vectors of length 1 before we pass them to paste()). objclass <- objclass[[1L]] if (is.null(objclass_pkg)) objclass_pkg <- "." outline <- paste(rda_file, objname, objclass, objclass_pkg, sep="\t") cat(outline, "\n", sep="", file=OUTFILE, append=TRUE) } } } rda_files <- read.table(INFILE, stringsAsFactors=FALSE)[[1L]] scanRdaFiles(rda_files, outfile=OUTFILE) SummarizedExperiment/inst/scripts/Find_and_update_objects/update_rda_objects.R0000644000175400017540000000443313175715010031152 0ustar00biocbuildbiocbuild### ========================================================================= ### update_rda_objects.R ### ------------------------------------------------------------------------- ### ### This script performs STEP 4 of the "Find and update objects" procedure ### described in the README file located in the same folder. ### ### Before you run this script, make sure you performed STEPS 1 & 2 & 3. ### See README file for more information. ### ### Then to run STEP 4 in "batch" mode: ### ### cd # RDA_OBJECTS_TO_UPDATE file should be here ### R CMD BATCH update_rda_objects.R >update_rda_objects.log 2>&1 & ### INFILE <- "RDA_OBJECTS_TO_UPDATE" library(SummarizedExperiment) .update_objects <- function(envir) { updated <- FALSE for (objname in names(envir)) { obj <- get(objname, envir=envir, inherits=FALSE) objclass <- class(obj) objclass_pkg <- attr(objclass, "package") if (!is.null(objclass_pkg)) { suppressWarnings(suppressPackageStartupMessages( library(objclass_pkg, character.only=TRUE, quietly=TRUE) )) } if (!SummarizedExperiment:::.has_SummarizedExperiment_internal_structure(obj)) next() cat(" Updating ", objname, " ... ", sep="") obj <- updateObject(obj) validObject(obj, complete=TRUE) assign(objname, obj, envir=envir, inherits=FALSE) cat("OK\n") updated <- TRUE } updated } updateRdaObjects <- function(rda_objects) { rda_files <- unique(rda_objects[ , "rda_file"]) for (i in seq_along(rda_files)) { rda_file <- rda_files[[i]] cat("[", i , "/", length(rda_files), "] Loading ", rda_file, " ... ", sep="") envir <- new.env(parent=emptyenv()) load(rda_file, envir=envir) cat("OK\n") if (.update_objects(envir)) { cat(" Saving updated objects to ", rda_file, " ... ", sep="") save(list=names(envir), file=rda_file, envir=envir, compress="xz") cat("OK\n") } } } rda_objects_to_update <- read.table(INFILE, stringsAsFactors=FALSE) colnames(rda_objects_to_update) <- c("rda_file", "objname", "objclass", "objclass_pkg") updateRdaObjects(rda_objects_to_update) SummarizedExperiment/inst/unitTests/0000755000175400017540000000000013175715010020740 5ustar00biocbuildbiocbuildSummarizedExperiment/inst/unitTests/test_Assays-class.R0000644000175400017540000000605213175715010024473 0ustar00biocbuildbiocbuildtest_bind_Assays <- function() { ## unnamed -- map by position l1 <- list(matrix(1, 3, 4), matrix(2, 3, 4)) l2 <- list(matrix(3, 3, 4), matrix(4, 3, 4)) a1 <- Assays(l1) a2 <- Assays(l2) target <- Map(rbind, l1, l2) current <- rbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) target <- Map(cbind, l1, l2) current <- cbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) ## named -- map by name l1 <- list(x=matrix(1, 3, 4), y=matrix(2, 3, 4)) l2 <- list(y=matrix(4, 3, 4), x=matrix(3, 3, 4)) a1 <- Assays(l1) a2 <- Assays(l2) target <- Map(rbind, l1, l2[match(names(l2), names(l1))]) current <- rbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) target <- Map(cbind, l1, l2[match(names(l2), names(l1))]) current <- cbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) } test_bind_higher_order_Assays <- function() { ## unnamed -- map by position l1 <- list(array(1, dim = c(3, 4, 5, 6)), array(2, dim = c(3, 4, 5, 6))) l2 <- list(array(4, dim = c(3, 4, 5, 6)), array(3, dim = c(3, 4, 5, 6))) a1 <- Assays(l1) a2 <- Assays(l2) target <- Map(arbind, l1, l2) current <- rbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) target <- Map(acbind, l1, l2) current <- cbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) ## named -- map by name l1 <- list(x = array(1, dim = c(3, 4, 5, 6)), y = array(2, dim = c(3, 4, 5, 6))) l2 <- list(y = array(4, dim = c(3, 4, 5, 6)), x = array(3, dim = c(3, 4, 5, 6))) a1 <- Assays(l1) a2 <- Assays(l2) target <- Map(arbind, l1, l2[match(names(l2), names(l1))]) current <- rbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) target <- Map(acbind, l1, l2[match(names(l2), names(l1))]) current <- cbind(a1, a2) checkTrue(is(current, "ShallowSimpleListAssays")) checkIdentical(as(target, "SimpleList"), as(current, "SimpleList")) } test_bind_error_on_incompatible_dimension_Assays <- function() { l1 <- list(x = array(1, dim = c(3, 4, 5, 6)), y = array(2, dim = c(3, 4, 5, 6))) l2 <- list(y = matrix(4, 3, 4), x = matrix(3, 3, 4)) a1 <- Assays(l1) a2 <- Assays(l2) ## arbind checkException(rbind(a1, a2), silent = TRUE) checkException(arbind(l1[[1]], l2[[1]]), silent = TRUE) ## acbind checkException(cbind(a1, a2), silent = TRUE) checkException(acbind(l1[[1]], l2[[1]]), silent = TRUE) } SummarizedExperiment/inst/unitTests/test_RangedSummarizedExperiment-class.R0000644000175400017540000003157213175715010030537 0ustar00biocbuildbiocbuildlibrary(digest) .singleDispatch <- c("duplicated", "end", "end<-", "granges", "ranges", "seqinfo", "seqinfo<-", "seqnames", "start", "start<-", "strand", "width", "width<-") .twoDispatch <- c("pcompare", "Compare") .otherFuns <- c("is.unsorted", "order", "rank", "sort") M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) mList <- list(M1, M2) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_RangedSummarizedExperiment_construction <- function() { ## empty-ish m1 <- matrix(0, 0, 0) checkTrue(validObject(new("RangedSummarizedExperiment"))) ## substance for (i in seq_along(rseList)) { rse <- rseList[[i]] checkTrue(validObject(rse)) checkIdentical(SimpleList(m=mList[[i]]), assays(rse)) checkIdentical(rowRangesList[[i]], rowRanges(rse)) checkIdentical(DataFrame(x=letters[1:3]), colData(rse)) } ## array in assays slot ss <- rseList[[1]] assays(ss) <- SimpleList(array(1:5, c(5,3,2))) checkTrue(validObject(ss)) checkTrue(all(dim(assays(ss[1:3,1:2])[[1]]) == c(3, 2, 2))) } test_RangedSummarizedExperiment_getters <- function() { for (i in seq_along(rseList)) { rse <- rseList[[i]] rowRanges <- rowRangesList[[i]] ## dim, dimnames checkIdentical(c(length(rowRanges), nrow(colData)), dim(rse)) checkIdentical(list(NULL, NULL), dimnames(rse)) ## row / col / metadata checkIdentical(rowRanges, rowRanges(rse)) checkIdentical(colData, colData(rse)) checkIdentical(list(), metadata(rse)) } } test_RangedSummarizedExperiment_setters <- function() { for (i in seq_along(rseList)) { rse <- rseList[[i]] rowRanges <- rowRangesList[[i]] ## row / col / metadata<- ss1 <- rse revData <- rev(rowRanges) rowRanges(ss1) <- revData checkIdentical(revData, rowRanges(ss1)) checkException(rowRanges(ss1) <- rowRanges(rse)[1:2,,drop=FALSE], "incorrect row dimensions", TRUE) revData <- colData[rev(seq_len(nrow(colData))),,drop=FALSE] colData(ss1) <- revData checkIdentical(revData, colData(ss1)) checkException(colData(ss1) <- colData(rse)[1:2,,drop=FALSE], "incorrect col dimensions", TRUE) lst <- list("foo", "bar") metadata(ss1) <- lst checkIdentical(lst, metadata(ss1)) ## assay / assays ss1 <- rse assay(ss1) <- assay(ss1)+1 checkIdentical(assay(rse)+1, assay(ss1)) ss1 <- rse assay(ss1, 1) <- assay(ss1, 1) + 1 checkIdentical(assay(rse, "m") + 1, assay(ss1, "m")) ss1 <- rse assay(ss1, "m") <- assay(ss1, "m") + 1 checkIdentical(assay(rse, "m")+1, assay(ss1, "m")) ## dimnames<- ss1 <- rse dimnames <- list(letters[seq_len(nrow(ss1))], LETTERS[seq_len(ncol(ss1))]) rownames(ss1) <- dimnames[[1]] colnames(ss1) <- dimnames[[2]] checkIdentical(dimnames, dimnames(ss1)) rowRanges1 <- rowRanges names(rowRanges1) <- dimnames[[1]] checkIdentical(rowRanges1, rowRanges(ss1)) colData1 <- colData row.names(colData1) <- dimnames[[2]] checkIdentical(colData1, colData(ss1)) ss1 <- rse dimnames(ss1) <- dimnames checkIdentical(dimnames, dimnames(ss1)) dimnames(ss1) <- NULL checkIdentical(list(NULL, NULL), dimnames(ss1)) } } test_RangedSummarizedExperiment_subset <- function() { for (i in seq_along(rseList)) { rse <- rseList[[i]] rowRanges <- rowRangesList[[i]] ## numeric ss1 <- rse[2:3,] checkIdentical(c(2L, ncol(rse)), dim(ss1)) checkIdentical(rowRanges(ss1), rowRanges(rse)[2:3,]) checkIdentical(colData(ss1), colData(rse)) ss1 <- rse[,2:3] checkIdentical(c(nrow(rse), 2L), dim(ss1)) checkIdentical(rowRanges(ss1), rowRanges(rse)) checkIdentical(colData(ss1), colData(rse)[2:3,,drop=FALSE]) ss1 <- rse[2:3, 2:3] checkIdentical(c(2L, 2L), dim(ss1)) checkIdentical(rowRanges(ss1), rowRanges(rse)[2:3,,drop=FALSE]) checkIdentical(colData(ss1), colData(rse)[2:3,,drop=FALSE]) ## character ss1 <- rse dimnames(ss1) <- list(LETTERS[seq_len(nrow(ss1))], letters[seq_len(ncol(ss1))]) ridx <- c("B", "C") checkIdentical(rowRanges(ss1[ridx,]), rowRanges(ss1)[ridx,]) checkIdentical(rowRanges(ss1["C",]), rowRanges(ss1)["C",,drop=FALSE]) checkException(ss1[LETTERS,], "i-index out of bounds", TRUE) cidx <- c("b", "c") checkIdentical(colData(ss1[,cidx]), colData(ss1)[cidx,,drop=FALSE]) checkIdentical(colData(ss1[,"a"]), colData(ss1)["a",,drop=FALSE]) checkException(ss1[,letters], "j-index out of bounds", TRUE) ## logical ss1 <- rse dimnames(ss1) <- list(LETTERS[seq_len(nrow(ss1))], letters[seq_len(ncol(ss1))]) checkEquals(ss1, ss1[TRUE,]) checkIdentical(c(0L, ncol(ss1)), dim(ss1[FALSE,])) checkEquals(ss1, ss1[,TRUE]) checkIdentical(c(nrow(ss1), 0L), dim(ss1[,FALSE])) idx <- c(TRUE, FALSE) # recycling ss2 <- ss1[idx,] checkIdentical(rowRanges(ss1)[idx,,drop=FALSE], rowRanges(ss2)) ss2 <- ss1[,idx] checkIdentical(colData(ss1)[idx,,drop=FALSE], colData(ss2)) ## Rle ss1 <- rse rle <- rep(c(TRUE, FALSE), each=3, length.out=nrow(ss1)) checkIdentical(rowRanges(ss1[rle]), rowRanges(ss1[Rle(rle)])) checkIdentical(assays(ss1[rle]), assays(ss1[Rle(rle)])) } ## 0 columns se <- SummarizedExperiment(rowRanges=GRanges("chr1", IRanges(1:10, width=1))) checkIdentical(dim(se[1:5, ]), c(5L, 0L)) ## 0 rows se <- SummarizedExperiment(colData=DataFrame(samples=1:10)) checkIdentical(dim(se[ ,1:5]), c(0L, 5L)) } test_RangedSummarizedExperiment_subsetassign <- function() { for (i in seq_along(rseList)) { rse <- rseList[[i]] dimnames(rse) <- list(LETTERS[seq_len(nrow(rse))], letters[seq_len(ncol(rse))]) ## rows ss1 <- rse ss1[1:2,] <- ss1[2:1,] checkIdentical(rowRanges(rse)[2:1,], rowRanges(ss1)[1:2,]) checkIdentical(rowRanges(rse[-(1:2),]), rowRanges(ss1)[-(1:2),]) checkIdentical(colData(rse), colData(ss1)) checkIdentical(c(metadata(rse), metadata(rse)), metadata(ss1)) ## Rle ss1rle <- ss1Rle <- rse rle <- rep(c(TRUE, FALSE), each=3, length.out=nrow(ss1)) ss1rle[rle,] <- ss1rle[rle,] ss1Rle[Rle(rle),] <- ss1Rle[Rle(rle),] checkIdentical(rowRanges(ss1rle), rowRanges(ss1Rle)) checkIdentical(assays(ss1rle), assays(ss1Rle)) ## cols ss1 <- rse ss1[,1:2] <- ss1[,2:1,drop=FALSE] checkIdentical(colData(rse)[2:1,,drop=FALSE], colData(ss1)[1:2,,drop=FALSE]) checkIdentical(colData(rse)[-(1:2),,drop=FALSE], colData(ss1)[-(1:2),,drop=FALSE]) checkIdentical(rowRanges(rse), rowRanges(ss1)) checkIdentical(c(metadata(rse), metadata(rse)), metadata(ss1)) } ## full replacement ss1 <- ss2 <- rseList[[1]] rowRanges(ss2) <- rev(rowRanges(ss2)) ss1[,] <- ss2 checkIdentical(ss1, ss2) } quiet <- suppressWarnings test_RangedSummarizedExperiment_cbind <- function() ## requires matching ranges { ## empty se <- SummarizedExperiment() empty <- cbind(se, se) checkTrue(all.equal(se, empty)) ## different ranges se1 <- rseList[[1]] se2 <- se1[2:4] rownames(se2) <- month.name[seq_len(nrow(se2))] checkException(quiet(cbind(se1, se2)), silent=TRUE) ## same ranges se1 <- rseList[[1]] se2 <- se1[,1:2] colnames(se2) <- month.name[seq_len(ncol(se2))] res <- cbind(se1, se2) checkTrue(nrow(res) == 5) checkTrue(ncol(res) == 5) ## rowRanges rowData(se1) <- DataFrame("one"=1:5) rowData(se2) <- DataFrame("two"=6:10) res <- quiet(cbind(se1, se2)) checkIdentical(names(mcols(rowRanges(res))), c("one", "two")) rowData(se2) <- DataFrame("one"=6:10, "two"=6:10) checkException(cbind(se1, se2), silent=TRUE) ## colData checkTrue(nrow(colData(res)) == 5) ## assays se1 <- rseList[[1]] se2 <- se1[,1:2] assays(se1) <- SimpleList("m"=matrix(rep("m", 15), nrow=5), "a"=array(rep("a", 30), c(5,3,2))) assays(se2) <- SimpleList("m"=matrix(LETTERS[1:10], nrow=5), "a"=array(LETTERS[1:20], c(5,2,2))) res <- cbind(se1, se2) ## same variables checkTrue(nrow(res) == 5) checkTrue(ncol(res) == 5) checkTrue(all.equal(dim(assays(res)$m), c(5L, 5L))) checkTrue(all.equal(dim(assays(res)$a), c(5L, 5L, 2L))) names(assays(se1)) <- c("mm", "aa") checkException(cbind(se1, se2), silent=TRUE) ## different variables } test_RangedSummarizedExperiment_rbind <- function() ## requires matching samples { ## empty se <- SummarizedExperiment() empty <- rbind(se, se) checkTrue(all.equal(se, empty)) ## different samples se1 <- rseList[[1]] se2 <- se1[,1] checkException(quiet(rbind(se1, se2)), silent=TRUE) ## same samples se1 <- rseList[[1]] se2 <- se1 rownames(se2) <- LETTERS[seq_len(nrow(se2))] res <- rbind(se1, se2) checkTrue(nrow(res) == 10) checkTrue(ncol(res) == 3) ## rowRanges rowData(se1) <- DataFrame("one"=1:5) rowData(se2) <- DataFrame("two"=6:10) checkException(rbind(se1, se2), silent=TRUE) ## colDat se1 <- rseList[[1]] se2 <- se1 colData(se2) <- DataFrame("one"=1:3, "two"=4:6) res <- quiet(rbind(se1, se2)) checkTrue(ncol(colData(res)) == 3) ## assays se1 <- rseList[[1]] se2 <- se1 assays(se1) <- SimpleList("m"=matrix(rep("m", 15), nrow=5), "a"=array(rep("a", 30), c(5,3,2))) assays(se2) <- SimpleList("m"=matrix(LETTERS[1:15], nrow=5), "a"=array(LETTERS[1:30], c(5,3,2))) res <- rbind(se1, se2) ## same variables checkTrue(nrow(res) == 10) checkTrue(ncol(res) == 3) checkTrue(all.equal(dim(assays(res)$m), c(10L, 3L))) checkTrue(all.equal(dim(assays(res)$a), c(10L, 3L, 2L))) names(assays(se1)) <- c("mm", "aa") checkException(rbind(se1, se2), silent=TRUE) ## different variables } test_RangedSummarizedExperiment_GRanges_API <- function() { ## are we targetting the correct API? signature for ## RangedSummarizedExperiment method should match signature for ## GenomicRanges or similar, as in each test below for (.fun in .singleDispatch) { generic <- getGeneric(.fun) method <- getMethod(.fun, "RangedSummarizedExperiment") checkIdentical("x", generic@signature) checkIdentical(formals(generic@.Data), formals(method@.Data)) } ## FIXME: pcompare, Compare .sig <- "RangedSummarizedExperiment" for (.fun in .otherFuns) { generic <- getGeneric(.fun) method <- getMethod(.fun, "RangedSummarizedExperiment") checkIdentical(formals(generic@.Data), formals(method@.Data)) } } test_RangedSummarizedExperiment_GRanges_values <- function() { x <- rseList[[1]] isAssign <- grep("<-$", .singleDispatch, value=TRUE) .funs <- setdiff(.singleDispatch, isAssign) ## 'exp' created after manual inspection of results exp <- setNames(c("02dde", "80339", "49a3f", "86757", "77198", "ec53a", "35e2c", "625d9", "3c90a"), .funs) obs <- sapply(.funs, function(.fun) { substr(digest(getGeneric(.fun)(x)), 1, 5) }) checkIdentical(exp, obs) .funs <- isAssign .gets <- sub("<-$", "", isAssign) for (i in seq_along(isAssign)) { ## self-assignment isomorphism value <- getGeneric(.gets[[i]])(x) x1 <- do.call(isAssign[[i]], list(x, value=value)) checkIdentical(x, x1) } } test_RangedSummarizedExperiment_split <- function() { gr <- GRanges(Rle(c("A", "B"), c(2, 3)), IRanges(1:5, 10)) se <- SummarizedExperiment(M1, rowRanges=gr, colData=colData) ## FIXME: unname should not be necessary obs <- split(se, seqnames(se)) exp <- SimpleList(A=se[1:2], B=se[3:5]) checkEquals(obs, exp) } SummarizedExperiment/inst/unitTests/test_SummarizedExperiment-class.R0000644000175400017540000003030313175715010027405 0ustar00biocbuildbiocbuildM1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) mList <- list(M1, M2) assaysList <- list(M1=SimpleList(m=M1), M2=SimpleList(m=M2)) rowData1 <- DataFrame(id1=LETTERS[1:5]) rowData2 <- S4Vectors:::make_zero_col_DataFrame(3L) rowDataList <- list(rowData1, rowData2) colData0 <- DataFrame(x=letters[1:3]) se0List <- list(SummarizedExperiment( assays=assaysList[["M1"]], rowData=rowData1, colData=colData0), SummarizedExperiment( assays=assaysList[["M2"]], colData=colData0)) test_SummarizedExperiment_construction <- function() { ## empty-ish m1 <- matrix(0, 0, 0) checkTrue(validObject(new("SummarizedExperiment"))) checkTrue(validObject(SummarizedExperiment()), "empty constructor") checkTrue(validObject(SummarizedExperiment(SimpleList()))) checkTrue(validObject(SummarizedExperiment(assays=SimpleList(m1))), "0x0 constructor") checkException(SummarizedExperiment(assays=SimpleList(m1, matrix())), "assays dim mismatch", TRUE) ## substance for (i in seq_along(se0List)) { se0 <- se0List[[i]] checkTrue(validObject(se0)) checkIdentical(SimpleList(m=mList[[i]]), assays(se0)) checkIdentical(rowDataList[[i]], rowData(se0)) checkIdentical(colData0, colData(se0)) } ## array in assays slot ss <- se0List[[1]] assays(ss) <- SimpleList(array(1:5, c(5,3,2))) checkTrue(validObject(ss)) checkTrue(all(dim(assays(ss[1:3,1:2])[[1]]) == c(3, 2, 2))) ## matrix-of-list in assay slot m <- matrix(list(), 2, 3, dimnames=list(LETTERS[1:2], letters[1:3])) checkTrue(validObject(se <- SummarizedExperiment(m))) checkIdentical(m, assay(se)) checkIdentical(m[,1:2], assay(se[,1:2])) ## DataFrame in assay slot df <- DataFrame(a=1:3, b=1:3, row.names=LETTERS[1:3]) checkTrue(validObject(SummarizedExperiment(list(df)))) } test_SummarizedExperiment_construction_colnames <- function() { colnames <- LETTERS[1:3] checkException(SummarizedExperiment( assays=matrix(0, 2, 3, dimnames=list(NULL, colnames)), colData=DataFrame(row.names=letters[1:3])), "assay colnames() differ from colData rownames()", TRUE) checkTrue(validObject(SummarizedExperiment(matrix(0, 2, 3))), "NULL dimnames on assays-only construction") se <- SummarizedExperiment(matrix(0, 2, 3)) checkTrue(is.null(colnames(se))) checkTrue(validObject(SummarizedExperiment( matrix(0, 2, 3), colData=DataFrame(x=1:3)[,FALSE])), "NULL dimnames on assays and colData") se <- SummarizedExperiment(matrix(0, 2, 3), colData=DataFrame(x=1:3)[,FALSE]) checkTrue(is.null(colnames(se))) ## dimnames from colData rownames se <- SummarizedExperiment(matrix(0, 2, 3), colData=DataFrame(row.names=colnames)) checkIdentical(colnames(se), colnames) checkTrue(is.null(colnames(assay(se, withDimnames=FALSE))), "don't replace NULL colnames") ## when colData rownames == NULL, take dimnames from assay colnames colnames <- LETTERS[1:3] se <- SummarizedExperiment(matrix(0, 2, 3, dimnames=list(NULL, colnames)), colData=DataFrame(x=colnames)[,FALSE]) checkIdentical(colnames(se), colnames) checkIdentical(colnames(assay(se, withDimnames=FALSE)), colnames, "don't remove non-NULL colnames") ## matching colData rownames and assay colnames se <- SummarizedExperiment(matrix(0, 2, 3, dimnames=list(NULL, colnames)), colData=DataFrame(row.names=colnames)) checkIdentical(colnames(se), colnames) checkIdentical(colnames(assay(se, withDimnames=FALSE)), colnames) } test_SummarizedExperiment_getters <- function() { for (i in seq_along(se0List)) { se0 <- se0List[[i]] ## dim, dimnames checkIdentical(c(nrow(mList[[i]]), nrow(colData0)), dim(se0)) checkIdentical(list(NULL, NULL), dimnames(se0)) ## col / metadata checkIdentical(rowDataList[[i]], rowData(se0)) checkIdentical(colData0, colData(se0)) checkIdentical(list(), metadata(se0)) } ## assays m0 <- matrix(0L, 0, 0, dimnames=list(NULL, NULL)) m1 <- matrix(0, 0, 0, dimnames=list(NULL, NULL)) a <- SimpleList(a=m0, b=m1) checkIdentical(a, assays(SummarizedExperiment(assays=a))) ## assay checkException( assay(SummarizedExperiment()), "0-length assay", TRUE) checkIdentical(m0, assay(SummarizedExperiment(assays=a)), "default assay") checkIdentical(m1, assay(SummarizedExperiment(assays=a), 2), "assay, numeric index") checkException( assay(SummarizedExperiment(assays=a), 3), "invalid assay index", TRUE) checkIdentical(m1, assay(SummarizedExperiment(assays=a), "b"), "assay, character index") checkException( assay(SummarizedExperiment(assays=a), "c"), "invalid assay name", TRUE) } test_SummarizedExperiment_setters <- function() { for (i in seq_along(se0List)) { se0 <- se0List[[i]] ## row / col / metadata<- se1 <- se0 rowData <- rowDataList[[i]] rowData <- rowData[rev(seq_len(nrow(rowData))),,drop=FALSE] rowData(se1) <- rowData checkIdentical(rowData, rowData(se1)) colData <- colData0[rev(seq_len(nrow(colData0))),,drop=FALSE] colData(se1) <- colData checkIdentical(colData, colData(se1)) ## The rowData (alias for mcols) setter recycles the supplied ## DataFrame. This is consistent with what the mcols/elementMetadata ## setter does on Vector objects in general. rowData(se1) <- rowData(se0)[1:2,,drop=FALSE] idx <- rep(1:2, length.out=length(se1)) target_se1_rowData <- rowData(se0)[idx,,drop=FALSE] checkIdentical(target_se1_rowData, rowData(se1)) ## The colData setter does NOT recycle the supplied DataFrame. checkException(colData(se1) <- colData(se0)[1:2,,drop=FALSE], "incorrect col dimensions", TRUE) lst <- list("foo", "bar") metadata(se1) <- lst checkIdentical(lst, metadata(se1)) ## assay / assays se1 <- se0 assay(se1) <- assay(se1)+1 checkIdentical(assay(se0)+1, assay(se1)) se1 <- se0 assay(se1, 1) <- assay(se1, 1) + 1 checkIdentical(assay(se0, "m") + 1, assay(se1, "m")) se1 <- se0 assay(se1, "m") <- assay(se1, "m") + 1 checkIdentical(assay(se0, "m")+1, assay(se1, "m")) ## dimnames<- se1 <- se0 dimnames <- list(letters[seq_len(nrow(se1))], LETTERS[seq_len(ncol(se1))]) rownames(se1) <- dimnames[[1]] colnames(se1) <- dimnames[[2]] checkIdentical(dimnames, dimnames(se1)) colData1 <- colData0 row.names(colData1) <- dimnames[[2]] checkIdentical(colData1, colData(se1)) se1 <- se0 dimnames(se1) <- dimnames checkIdentical(dimnames, dimnames(se1)) dimnames(se1) <- NULL checkIdentical(list(NULL, NULL), dimnames(se1)) } } test_SummarizedExperiment_subset <- function() { for (i in seq_along(se0List)) { se0 <- se0List[[i]] ## numeric se1 <- se0[2:3,] checkIdentical(c(2L, ncol(se0)), dim(se1)) checkIdentical(rowData(se1), rowData(se0)[2:3,,drop=FALSE]) checkIdentical(colData(se1), colData(se0)) se1 <- se0[,2:3] checkIdentical(c(nrow(se0), 2L), dim(se1)) checkIdentical(rowData(se1), rowData(se0)) checkIdentical(colData(se1), colData(se0)[2:3,,drop=FALSE]) se1 <- se0[2:3, 2:3] checkIdentical(c(2L, 2L), dim(se1)) checkIdentical(colData(se1), colData(se0)[2:3,,drop=FALSE]) ## character se1 <- se0 dimnames(se1) <- list(LETTERS[seq_len(nrow(se1))], letters[seq_len(ncol(se1))]) ridx <- c("B", "C") checkException(se1[LETTERS,], "i-index out of bounds", TRUE) cidx <- c("b", "c") checkIdentical(colData(se1[,cidx]), colData(se1)[cidx,,drop=FALSE]) checkIdentical(colData(se1[,"a"]), colData(se1)["a",,drop=FALSE]) checkException(se1[,letters], "j-index out of bounds", TRUE) ## logical se1 <- se0 dimnames(se1) <- list(LETTERS[seq_len(nrow(se1))], letters[seq_len(ncol(se1))]) checkEquals(se1, se1[TRUE,]) checkIdentical(c(0L, ncol(se1)), dim(se1[FALSE,])) checkEquals(se1, se1[,TRUE]) checkIdentical(c(nrow(se1), 0L), dim(se1[,FALSE])) idx <- c(TRUE, FALSE) # recycling se2 <- se1[idx,] se2 <- se1[,idx] checkIdentical(colData(se1)[idx,,drop=FALSE], colData(se2)) ## Rle se1 <- se0 rle <- rep(c(TRUE, FALSE), each=3, length.out=nrow(se1)) checkIdentical(assays(se1[rle]), assays(se1[Rle(rle)])) } ## 0 columns se <- SummarizedExperiment(matrix(integer(0), nrow=5)) checkIdentical(dim(se[1:5, ]), c(5L, 0L)) ## 0 rows se <- SummarizedExperiment(colData=DataFrame(samples=1:10)) checkIdentical(dim(se[ ,1:5]), c(0L, 5L)) } test_SummarizedExperiment_subsetassign <- function() { for (i in seq_along(se0List)) { se0 <- se0List[[i]] dimnames(se0) <- list(LETTERS[seq_len(nrow(se0))], letters[seq_len(ncol(se0))]) ## rows se1 <- se0 se1[1:2,] <- se1[2:1,] checkIdentical(colData(se0), colData(se1)) checkIdentical(c(metadata(se0), metadata(se0)), metadata(se1)) ## Rle se1rle <- se1Rle <- se0 rle <- rep(c(TRUE, FALSE), each=3, length.out=nrow(se1)) se1rle[rle,] <- se1rle[rle,] se1Rle[Rle(rle),] <- se1Rle[Rle(rle),] checkIdentical(assays(se1rle), assays(se1Rle)) ## cols se1 <- se0 se1[,1:2] <- se1[,2:1,drop=FALSE] checkIdentical(colData(se0)[2:1,,drop=FALSE], colData(se1)[1:2,,drop=FALSE]) checkIdentical(colData(se0)[-(1:2),,drop=FALSE], colData(se1)[-(1:2),,drop=FALSE]) checkIdentical(c(metadata(se0), metadata(se0)), metadata(se1)) } ## full replacement se1 <- se2 <- se0List[[1]] se1[,] <- se2 checkIdentical(se1, se2) } test_SummarizedExperiment_assays_4d <- function() { ## construction/validation A <- array(0, c(3, 2, 5, 4), list(c("a1", "a2", "a3"), c("b1", "b2"), NULL, c("d1", "d2", "d3", "d4"))) B <- array(0, c(3, 2, 6), list(c("a1", "a2", "a3"), c("b1", "oops"), NULL)) assays0 <- SimpleList(A=A, B=B) checkException(SummarizedExperiment(assays0)) dimnames(B)[1:2] <- dimnames(A)[1:2] C <- array(0, c(3, 2, 4), list(NULL, c("b1", "b2"), c("z1", "z2", "z3", "z4"))) assays0 <- SimpleList(A=A, B=B, C=C) se <- SummarizedExperiment(assays0) checkTrue(validObject(se, complete=TRUE)) ## dimnames checkIdentical(dimnames(A)[1:2], dimnames(se)) checkIdentical(dimnames(B)[1:2], dimnames(se)) for (i in seq_along(assays(se))) { checkIdentical(assays0[[i]], assay(se, i, withDimnames=FALSE)) checkIdentical(dimnames(se), dimnames(assay(se, i))[1:2]) } ## [ se2 <- se[3:2, ] checkIdentical(A[3:2, , , , drop=FALSE], assay(se2, 1, withDimnames=FALSE)) checkIdentical(B[3:2, , , drop=FALSE], assay(se2, 2, withDimnames=FALSE)) checkIdentical(C[3:2, , , drop=FALSE], assay(se2, 3, withDimnames=FALSE)) ## [<- A1 <- A; A1[1, , , ] <- A[1, , , , drop=FALSE] + 1 assays(se[1, ])[[1]] <- 1 + assays(se[1, ])[[1]] checkIdentical(assays(se)[[1]], A1) ## [, [<- don't support more than 4 dimensions a <- array(0, c(3, 3, 3, 3, 3), list(LETTERS[1:3], letters[1:3], NULL, NULL, NULL)) assays <- SimpleList(a=a) se <- SummarizedExperiment(assays) checkException(se[1,], silent=TRUE) } SummarizedExperiment/inst/unitTests/test_coverage-methods.R0000644000175400017540000000355113175715010025362 0ustar00biocbuildbiocbuild### M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_interfaces <- function() { generic_functions <- "coverage" for (fun in generic_functions) { generic <- getGeneric(fun) method <- getMethod(fun, "RangedSummarizedExperiment") checkIdentical("x", generic@signature) checkIdentical(formals(generic@.Data), formals(method@.Data)) } } test_coverage_RangedSummarizedExperiment <- function() { for (i in 1:2) { x <- rseList[[i]] target <- coverage(rowRanges(x)) current <- coverage(x) checkIdentical(target, current) weight <- runif(length(x)) ## Issues a warning (in BioC 3.3) when rowRanges(x) is a GRangesList ## object, which reveals a problem with how the "coverage" method for ## GRangesList objects handles the 'weight' argument. The warning is ## expected and healthy, don't try to suppress it here. It will go ## away when we fix the "coverage" method for GRangesList objects ## (defined in the GenomicRanges package). target <- coverage(rowRanges(x), weight=weight) current <- coverage(x, weight=weight) checkIdentical(target, current) } } SummarizedExperiment/inst/unitTests/test_findOverlaps-methods.R0000644000175400017540000000621113175715010026217 0ustar00biocbuildbiocbuild### M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_interfaces <- function() { fun <- "findOverlaps" signatures <- list( c("RangedSummarizedExperiment", "Vector"), c("Vector", "RangedSummarizedExperiment"), c("RangedSummarizedExperiment", "RangedSummarizedExperiment") ) generic <- getGeneric(fun) for (sig in signatures) { method <- getMethod(fun, sig) checkIdentical(c("query", "subject"), generic@signature) checkIdentical(formals(generic@.Data), formals(method@.Data)) } } test_findOverlaps_methods <- function() { identical_SummarizedExperiment <- function(x, y) { x@assays <- as(assays(x), "SimpleListAssays") y@assays <- as(assays(y), "SimpleListAssays") identical(x, y) } for (i in 1:2) { x <- rseList[[i]] for (j in 1:2) { y <- rseList[[j]] ## findOverlaps target <- findOverlaps(rowRanges(x), rowRanges(y)) current <- findOverlaps(x, rowRanges(y)) checkIdentical(target, current) current <- findOverlaps(rowRanges(x), y) checkIdentical(target, current) current <- findOverlaps(x, y) checkIdentical(target, current) ## countOverlaps target <- countOverlaps(rowRanges(x), rowRanges(y)) current <- countOverlaps(x, rowRanges(y)) checkIdentical(target, current) current <- countOverlaps(rowRanges(x), y) checkIdentical(target, current) current <- countOverlaps(x, y) checkIdentical(target, current) ## overlapsAny target <- overlapsAny(rowRanges(x), rowRanges(y)) current <- overlapsAny(x, rowRanges(y)) checkIdentical(target, current) current <- overlapsAny(rowRanges(x), y) checkIdentical(target, current) current <- overlapsAny(x, y) checkIdentical(target, current) ## subsetByOverlaps target <- subsetByOverlaps(x, rowRanges(y)) current <- subsetByOverlaps(x, rowRanges(y)) checkTrue(identical_SummarizedExperiment(target, current)) current <- subsetByOverlaps(x, y) checkTrue(identical_SummarizedExperiment(target, current)) target <- subsetByOverlaps(rowRanges(x), rowRanges(y)) current <- subsetByOverlaps(rowRanges(x), y) checkIdentical(target, current) } } } SummarizedExperiment/inst/unitTests/test_inter-range-methods.R0000644000175400017540000000274213175715010026003 0ustar00biocbuildbiocbuild### M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10), Rle(c("+", "-"), 3:2)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_interfaces <- function() { generic_functions <- c("isDisjoint", "disjointBins") for (fun in generic_functions) { generic <- getGeneric(fun) method <- getMethod(fun, "RangedSummarizedExperiment") checkIdentical("x", generic@signature) checkIdentical(formals(generic@.Data), formals(method@.Data)) } } test_inter_range_methods <- function() { #for (i in 1:2) { for (i in 1L) { x <- rseList[[i]] ## isDisjoint target <- isDisjoint(rowRanges(x)) current <- isDisjoint(x) checkIdentical(target, current) ## disjointBins target <- disjointBins(rowRanges(x)) current <- disjointBins(x) checkIdentical(target, current) } } SummarizedExperiment/inst/unitTests/test_intra-range-methods.R0000644000175400017540000000643413175715010026001 0ustar00biocbuildbiocbuild### M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10), Rle(c("+", "-"), 3:2)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_interfaces <- function() { generic_functions <- c("shift", "narrow", "resize", "flank", "promoters", "restrict", "trim") for (fun in generic_functions) { generic <- getGeneric(fun) method <- getMethod(fun, "RangedSummarizedExperiment") checkIdentical("x", generic@signature) checkIdentical(formals(generic@.Data), formals(method@.Data)) } } test_intra_range_methods <- function() { identical_SummarizedExperiment <- function(x, y) { x@assays <- as(assays(x), "SimpleListAssays") y@assays <- as(assays(y), "SimpleListAssays") identical(x, y) } #for (i in 1:2) { for (i in 1L) { ## shift target <- rseList[[i]] rowRanges(target) <- shift(rowRanges(target), 50) current <- shift(rseList[[i]], 50) checkTrue(identical_SummarizedExperiment(target, current)) ## narrow target <- rseList[[i]] rowRanges(target) <- narrow(rowRanges(target), 2, -2) current <- narrow(rseList[[i]], 2, -2) checkTrue(identical_SummarizedExperiment(target, current)) ## resize target <- rseList[[i]] rowRanges(target) <- resize(rowRanges(target), 8) current <- resize(rseList[[i]], 8) checkTrue(identical_SummarizedExperiment(target, current)) ## flank target <- rseList[[i]] rowRanges(target) <- flank(rowRanges(target), 5, both=TRUE) current <- flank(rseList[[i]], 5, both=TRUE) checkTrue(identical_SummarizedExperiment(target, current)) ## promoters target <- rseList[[i]] rowRanges(target) <- promoters(rowRanges(target), upstream=20, downstream=5) current <- promoters(rseList[[i]], upstream=20, downstream=5) checkTrue(identical_SummarizedExperiment(target, current)) ## restrict target <- rseList[[i]] rowRanges(target) <- restrict(rowRanges(target), start=2, end=3, keep.all.ranges=TRUE) current <- restrict(rseList[[i]], start=2, end=3, keep.all.ranges=TRUE) checkTrue(identical_SummarizedExperiment(target, current)) ## trim suppressWarnings(seqlengths(rseList[[i]]) <- 8) target <- rseList[[i]] rowRanges(target) <- trim(rowRanges(target)) current <- trim(rseList[[i]]) checkTrue(identical_SummarizedExperiment(target, current)) seqlengths(rseList[[i]]) <- NA } } SummarizedExperiment/inst/unitTests/test_makeSummarizedExperimentFromDataFrame.R0000644000175400017540000000421213175715010031531 0ustar00biocbuildbiocbuild## rowNames <- paste0("GENE", letters[5:1]) range_info <- list(chr="chr2", start = 11:15, end = 12:16, strand = c("+", "-", "+", "*", ".")) expr_info <- list(expr0 = 3:7, expr1 = 8:12, expr2 = 12:16) df <- as.data.frame(c(range_info, expr_info), row.names = rowNames) DF <- DataFrame(c(range_info, expr_info), row.names = rowNames) test_makeSummarizedExperimentFromDataFrame <- function() { validObject(makeSummarizedExperimentFromDataFrame(df)) validObject(makeSummarizedExperimentFromDataFrame(DF)) rangesA <- GRanges(as.data.frame(range_info, row.names = rowNames)) rangesB <- rowRanges(makeSummarizedExperimentFromDataFrame(df)) # Check rowRanges to be identical checkIdentical(rangesA, rangesB) # Check assay matrix and expr_info matrix are identical checkIdentical(assay(makeSummarizedExperimentFromDataFrame(df)), as.matrix(as.data.frame(expr_info, row.names = rowNames))) checkIdentical(assay(makeSummarizedExperimentFromDataFrame(DF)), as.matrix(as.data.frame(expr_info, row.names = rowNames))) checkEquals(makeSummarizedExperimentFromDataFrame(df), makeSummarizedExperimentFromDataFrame(DF)) checkException( makeSummarizedExperimentFromDataFrame( cbind(df, expr3 = letters[seq_len(nrow(df))]))) checkException( makeSummarizedExperimentFromDataFrame( cbind(DF, DataFrame(expr3 = letters[seq_len(nrow(df))])))) checkIdentical(nrow(df), length(rowRanges( makeSummarizedExperimentFromDataFrame(df)))) checkIdentical(nrow(DF), length(rowRanges( makeSummarizedExperimentFromDataFrame(DF)))) checkIdentical(colnames(makeSummarizedExperimentFromDataFrame(df)), names(expr_info)) checkIdentical(rownames(makeSummarizedExperimentFromDataFrame(df)), rowNames) checkIdentical(colnames(makeSummarizedExperimentFromDataFrame(DF)), names(expr_info)) checkIdentical(rownames(makeSummarizedExperimentFromDataFrame(DF)), rowNames) } SummarizedExperiment/inst/unitTests/test_makeSummarizedExperimentFromExpressionSet.R0000644000175400017540000001433613175715010032530 0ustar00biocbuildbiocbuildM1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) test_SummarizedExperiment_GenomicRanges_coercion <- function() { eset1 <- ExpressionSet() checkTrue(validObject(eset1)) se1 <- as(eset1, "RangedSummarizedExperiment") checkTrue(validObject(se1)) data("sample.ExpressionSet", package = "Biobase") eset2 <- sample.ExpressionSet checkTrue(validObject(eset2)) se2 <- as(eset2, "RangedSummarizedExperiment") checkTrue(validObject(se2)) checkIdentical(experimentData(eset2), metadata(se2)$experimentData) checkIdentical(annotation(eset2), metadata(se2)$annotation) checkIdentical(protocolData(eset2), metadata(se2)$protocolData) eset2Assays <- SimpleList(as.list(assayData(eset2))) se2Assays <- assays(se2) checkIdentical(eset2Assays$exprs, se2Assays$exprs) checkIdentical(eset2Assays$se.exprs, se2Assays$se.exprs) checkIdentical(featureNames(eset2), rownames(se2)) checkIdentical(sampleNames(eset2), colnames(se2)) } test_GenomicRanges_SummarizedExperiment_coercion <- function() { ## empty SE simpleSE <- SummarizedExperiment() eset1 <- as(simpleSE, "ExpressionSet") checkTrue(validObject(eset1)) ## Back and forth empty ES simpleES <- ExpressionSet() simpleES2 <- as(as(simpleES, "RangedSummarizedExperiment"), "ExpressionSet") checkTrue(validObject(simpleES2)) checkEquals(as.list(assayData(simpleES)), as.list(assayData(simpleES2))) ## Simple SE simpleSE <- rseList[[1]] assayNames(simpleSE) <- "exprs" # No warning 'No assay named exprs..." eset2 <- as(simpleSE, "ExpressionSet") checkTrue(validObject(eset2)) ## The ExpressionSet features should have the data from the ## SummarizedExperiment rows if they are from GRanges. checkIdentical(pData(featureData(eset2)), as.data.frame(rowRanges(rseList[[1]]))) # the rowRanges are retained if the object has them to begin with. se2_2 <- as(eset2, "RangedSummarizedExperiment") rr_se2_2 <- unname(rowRanges(se2_2)) rr_eset2 <- rowRanges(rseList[[1]]) checkEquals(rr_se2_2, rr_eset2) simpleSE <- rseList[[2]] assayNames(simpleSE) <- "exprs" # No warning 'No assay named exprs..." eset3 <- as(simpleSE, "ExpressionSet") checkTrue(validObject(eset3)) ## The ExpressionSet features should not have the data from the ## SummarizedExperiment rows if they are from GRangesList, but they ## should be empty and the same length as the number of ranges. checkEquals(unname(NROW(featureData(eset3))), unname(length(rowRanges(rseList[[2]])))) data("sample.ExpressionSet", package = "Biobase") eset4 <- sample.ExpressionSet eset5 <- as(as(eset4, "RangedSummarizedExperiment"), "ExpressionSet") checkTrue(validObject(eset5)) ## this is necessary because the order in environments is undefined. compareLists <- function(x, y) { nmsX <- names(x) nmsY <- names(y) reorderY <- match(nmsY, nmsX) checkIdentical(x, y[reorderY]) } compareLists(as.list(assayData(eset4)), as.list(assayData(eset5))) checkIdentical(experimentData(eset4), experimentData(eset5)) checkIdentical(annotation(eset4), annotation(eset5)) checkIdentical(protocolData(eset4), protocolData(eset5)) checkIdentical(featureNames(eset4), featureNames(eset5)) checkIdentical(sampleNames(eset4), sampleNames(eset5)) } test_GenomicRanges_SummarizedExperiment_coercion_mappingFunctions <- function() { ## naiveRangeMapper ## valid object from empty object checkTrue(validObject(makeSummarizedExperimentFromExpressionSet(ExpressionSet()))) ## valid object from sample ExpressionSet data("sample.ExpressionSet", package = "Biobase") eset1 <- sample.ExpressionSet checkTrue(validObject(makeSummarizedExperimentFromExpressionSet(eset1))) ## makeSummarizedExperimentFromExpressionSet should be the same as `as` ## with default args checkEquals(makeSummarizedExperimentFromExpressionSet(eset1), as(eset1, "RangedSummarizedExperiment")) ## probeRangeMapper ## valid object from empty object checkTrue(validObject( makeSummarizedExperimentFromExpressionSet(ExpressionSet(), probeRangeMapper))) ## valid object from sample ExpressionSet se1 <- makeSummarizedExperimentFromExpressionSet(eset1, probeRangeMapper) checkTrue(validObject(se1)) ## Granges returned have rownames that were from the featureNames checkTrue(all(rownames(rowRanges(se1)) %in% featureNames(eset1))) ## geneRangeMapper ## valid object from empty object checkTrue(validObject( makeSummarizedExperimentFromExpressionSet(ExpressionSet(), geneRangeMapper(NULL)))) ## valid object from sample ExpressionSet se2 <- makeSummarizedExperimentFromExpressionSet(eset1, geneRangeMapper("TxDb.Hsapiens.UCSC.hg19.knownGene")) checkTrue(validObject(se2)) ## Granges returned have rownames that were from the featureNames checkTrue(all(rownames(rowRanges(se2)) %in% featureNames(eset1))) } SummarizedExperiment/inst/unitTests/test_nearest-methods.R0000644000175400017540000000411213175715010025222 0ustar00biocbuildbiocbuild### M1 <- matrix(1, 5, 3, dimnames=list(NULL, NULL)) M2 <- matrix(1, 3, 3, dimnames=list(NULL, NULL)) assaysList <- list(gr=SimpleList(m=M1), grl=SimpleList(m=M2)) rowRangesList <- list(gr=GRanges("chr1", IRanges(1:5, 10)), grl=split(GRanges("chr1", IRanges(1:5, 10)), c(1,1,2,2,3))) names(rowRangesList[["grl"]]) <- NULL colData <- DataFrame(x=letters[1:3]) ## a list of one SE with GRanges and one with GRangesList rseList <- list(SummarizedExperiment( assays=assaysList[["gr"]], rowRanges=rowRangesList[["gr"]], colData=colData), SummarizedExperiment( assays=assaysList[["grl"]], rowRanges=rowRangesList[["grl"]], colData=colData)) .GENERIC_SIGNATURES <- list( precede=c("x", "subject"), follow=c("x", "subject"), nearest=c("x", "subject"), distance=c("x", "y"), distanceToNearest=c("x", "subject") ) test_interfaces <- function() { method_signatures <- list( c("RangedSummarizedExperiment", "ANY"), c("ANY", "RangedSummarizedExperiment"), c("RangedSummarizedExperiment", "RangedSummarizedExperiment") ) for (fun in names(.GENERIC_SIGNATURES)) { generic <- getGeneric(fun) checkIdentical(.GENERIC_SIGNATURES[[fun]], generic@signature) for (sig in method_signatures) { method <- getMethod(fun, sig) checkIdentical(formals(generic@.Data), formals(method@.Data)) } } } test_nearest_methods <- function() { #for (i in 1:2) { for (i in 1L) { x <- rseList[[i]] #for (j in 1:2) { for (j in 1L) { y <- rseList[[j]] for (fun in names(.GENERIC_SIGNATURES)) { fun <- get(fun) target <- fun(rowRanges(x), rowRanges(y)) current <- fun(x, rowRanges(y)) checkIdentical(target, current) current <- fun(rowRanges(x), y) checkIdentical(target, current) current <- fun(x, y) checkIdentical(target, current) } } } } SummarizedExperiment/man/0000755000175400017540000000000013175715010016534 5ustar00biocbuildbiocbuildSummarizedExperiment/man/Assays-class.Rd0000644000175400017540000001343213175715010021374 0ustar00biocbuildbiocbuild\name{Assays-class} \docType{class} \alias{class:Assays} \alias{Assays-class} \alias{Assays} \alias{length,Assays-method} \alias{names,Assays-method} \alias{names<-,Assays-method} \alias{[[,Assays,ANY,ANY-method} \alias{[[<-,Assays,ANY,ANY-method} \alias{dim,Assays-method} \alias{[,Assays,ANY-method} \alias{[,Assays,ANY,ANY,ANY-method} \alias{[<-,Assays,ANY,ANY,ANY-method} \alias{rbind,Assays-method} \alias{cbind,Assays-method} \alias{arbind,Matrix-method} \alias{acbind,Matrix-method} \alias{class:SimpleListAssays} \alias{SimpleListAssays-class} \alias{SimpleListAssays} \alias{class:ShallowData} \alias{ShallowData-class} \alias{ShallowData} \alias{class:ShallowSimpleListAssays} \alias{ShallowSimpleListAssays-class} \alias{ShallowSimpleListAssays} \alias{coerce,SimpleList,ShallowSimpleListAssays-method} \alias{coerce,ShallowSimpleListAssays,SimpleList-method} \alias{class:AssaysInEnv} \alias{AssaysInEnv-class} \alias{AssaysInEnv} \alias{length,AssaysInEnv-method} \alias{names,AssaysInEnv-method} \alias{names<-,AssaysInEnv-method} \alias{[[,AssaysInEnv,ANY,ANY-method} \alias{[[<-,AssaysInEnv,ANY,ANY-method} \alias{coerce,SimpleList,AssaysInEnv-method} \alias{coerce,AssaysInEnv,SimpleList-method} \title{Assays objects} \description{ The Assays virtual class and its methods provide a formal abstraction of the assays slot of \link{SummarizedExperiment} objects. SimpleListAssays and ShallowSimpleListAssays are concrete subclasses of Assays with the latter being currently the default implementation of Assays objects. Other implementations (e.g. disk-based) could easily be added. Note that these classes are not meant to be used directly by the end-user and the material in this man page is aimed at package developers. } \details{ Assays objects have a list-like semantics with elements having matrix- or array-like semantics (e.g., \code{dim}, \code{dimnames}). The Assays API consists of: \itemize{ \item (a) The \code{Assays()} constructor function. \item (b) Lossless back and forth coercion from/to \link{SimpleList}. The coercion method from \link{SimpleList} doesn't need (and should not) validate the returned object. \item (c) \code{length}, \code{names}, \code{`names<-`}, \code{[[}, \code{`[[<-`}, \code{dim}, \code{[}, \code{`[<-`}, \code{rbind}, \code{cbind}. } An Assays concrete subclass needs to implement (b) (required) plus, optionally any of the methods in (c). IMPORTANT: Methods that return a modified Assays object (a.k.a. endomorphisms), that is, \code{[} as well as replacement methods \code{names<-}, \code{[[<-}, and \code{[<-}, must respect the \emph{copy-on-change contract}. With objects that don't make use of references internally, the developer doesn't need to take any special action for that because it's automatically taken care of by R itself. However, for objects that do make use of references internally (e.g. environments, external pointers, pointer to a file on disk, etc...), the developer needs to be careful to implement endomorphisms with copy-on-change semantics. This can easily be achieved (and is what the default methods for Assays objects do) by performaing a full (deep) copy of the object before modifying it instead of trying to modify it in-place. Note that the full (deep) copy is not always necessary in order to achieve copy-on-change semantics: it's enough (and often preferrable for performance reasons) to copy only the parts of the objects that need to be modified. Assays has currently 3 implementations which are formalized by concrete subclasses SimpleListAssays, ShallowSimpleListAssays, and AssaysInEnv. ShallowSimpleListAssays is the default. AssaysInEnv is a \emph{broken} alternative to ShallowSimpleListAssays that does NOT respect the \emph{copy-on-change contract}. It is only provided for illustration purposes (see source file Assays-class.R for the details). A little more detail about ShallowSimpleListAssays: a small reference class hierarchy (not exported from the \pkg{GenomicRanges} name space) defines a reference class ShallowData with a single field \code{data} of type \code{ANY}, and a derived class ShallowSimpleListAssays that specializes the type of \code{data} as \link{SimpleList}, and \code{contains=c("ShallowData", "Assays")}. The assays slot of a \link{SummarizedExperiment} object contains an instance of ShallowSimpleListAssays. } \author{Martin Morgan, \url{mtmorgan@fhcrc.org}} \seealso{ \itemize{ \item \link{SummarizedExperiment} objects. \item \link[S4Vectors]{SimpleList} objects in the \pkg{S4Vectors} package. } } \examples{ ## --------------------------------------------------------------------- ## DIRECT MANIPULATION OF Assays OBJECTS ## --------------------------------------------------------------------- m1 <- matrix(runif(24), ncol=3) m2 <- matrix(runif(24), ncol=3) a <- Assays(SimpleList(m1, m2)) a as(a, "SimpleList") length(a) a[[2]] dim(a) b <- a[-4, 2] b length(b) b[[2]] dim(b) names(a) names(a) <- c("a1", "a2") names(a) a[["a2"]] rbind(a, a) cbind(a, a) ## --------------------------------------------------------------------- ## COPY-ON-CHANGE CONTRACT ## --------------------------------------------------------------------- ## ShallowSimpleListAssays objects have copy-on-change semantics but not ## AssaysInEnv objects. For example: ssla <- as(SimpleList(m1, m2), "ShallowSimpleListAssays") aie <- as(SimpleList(m1, m2), "AssaysInEnv") ## No names on 'ssla' and 'aie': names(ssla) names(aie) ssla2 <- ssla aie2 <- aie names(ssla2) <- names(aie2) <- c("A1", "A2") names(ssla) # still NULL (as expected) names(aie) # changed! (because the names<-,AssaysInEnv method is not # implemented in a way that respects the copy-on-change # contract) } SummarizedExperiment/man/RangedSummarizedExperiment-class.Rd0000644000175400017540000002726313175715010025442 0ustar00biocbuildbiocbuild\name{RangedSummarizedExperiment-class} \docType{class} % Class \alias{class:RangedSummarizedExperiment} \alias{RangedSummarizedExperiment-class} \alias{RangedSummarizedExperiment} % Constructor \alias{SummarizedExperiment} \alias{SummarizedExperiment,SimpleList-method} \alias{SummarizedExperiment,ANY-method} \alias{SummarizedExperiment,list-method} \alias{SummarizedExperiment,missing-method} % Coercion \alias{coerce,RangedSummarizedExperiment,SummarizedExperiment-method} \alias{coerce,SummarizedExperiment,RangedSummarizedExperiment-method} % Accessors \alias{rowRanges} \alias{rowRanges,RangedSummarizedExperiment-method} \alias{rowRanges<-} \alias{rowRanges<-,SummarizedExperiment,GenomicRanges-method} \alias{rowRanges<-,SummarizedExperiment,GRangesList-method} \alias{names,RangedSummarizedExperiment-method} \alias{names<-,RangedSummarizedExperiment-method} \alias{dimnames,RangedSummarizedExperiment-method} \alias{dimnames<-,RangedSummarizedExperiment,list-method} % GenomicRanges compatibility methods \alias{Compare,ANY,RangedSummarizedExperiment-method} \alias{Compare,RangedSummarizedExperiment,ANY-method} \alias{Compare,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{pcompare,ANY,RangedSummarizedExperiment-method} \alias{pcompare,RangedSummarizedExperiment,ANY-method} \alias{pcompare,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{duplicated,RangedSummarizedExperiment-method} \alias{elementMetadata,RangedSummarizedExperiment-method} \alias{elementMetadata<-,RangedSummarizedExperiment-method} \alias{end,RangedSummarizedExperiment-method} \alias{end<-,RangedSummarizedExperiment-method} \alias{granges,RangedSummarizedExperiment-method} \alias{is.unsorted,RangedSummarizedExperiment-method} \alias{mcols,RangedSummarizedExperiment-method} \alias{mcols<-,RangedSummarizedExperiment-method} \alias{order,RangedSummarizedExperiment-method} \alias{ranges,RangedSummarizedExperiment-method} \alias{ranges<-,RangedSummarizedExperiment-method} \alias{rank,RangedSummarizedExperiment-method} \alias{seqinfo,RangedSummarizedExperiment-method} \alias{seqinfo<-,RangedSummarizedExperiment-method} \alias{seqnames,RangedSummarizedExperiment-method} \alias{sort,RangedSummarizedExperiment-method} \alias{split,RangedSummarizedExperiment-method} \alias{split,RangedSummarizedExperiment,ANY-method} \alias{start,RangedSummarizedExperiment-method} \alias{start<-,RangedSummarizedExperiment-method} \alias{strand,RangedSummarizedExperiment-method} \alias{strand<-,RangedSummarizedExperiment,ANY-method} \alias{subset,RangedSummarizedExperiment-method} \alias{width,RangedSummarizedExperiment-method} \alias{width<-,RangedSummarizedExperiment-method} \alias{updateObject,SummarizedExperiment-method} \title{RangedSummarizedExperiment objects} \description{ The RangedSummarizedExperiment class is a matrix-like container where rows represent ranges of interest (as a \link{GRanges} or \link{GRangesList} object) and columns represent samples (with sample data summarized as a \link{DataFrame}). A RangedSummarizedExperiment contains one or more assays, each represented by a matrix-like object of numeric or other mode. RangedSummarizedExperiment is a subclass of \link{SummarizedExperiment} and, as such, all the methods documented in \code{?\link{SummarizedExperiment}} also work on a RangedSummarizedExperiment object. The methods documented below are additional methods that are specific to RangedSummarizedExperiment objects. } \usage{ ## Constructor SummarizedExperiment(assays, ...) \S4method{SummarizedExperiment}{SimpleList}(assays, rowData=NULL, rowRanges=GRangesList(), colData=DataFrame(), metadata=list()) \S4method{SummarizedExperiment}{ANY}(assays, ...) \S4method{SummarizedExperiment}{list}(assays, ...) \S4method{SummarizedExperiment}{missing}(assays, ...) ## Accessors rowRanges(x, ...) rowRanges(x, ...) <- value ## Subsetting \S4method{subset}{RangedSummarizedExperiment}(x, subset, select, ...) ## rowRanges access ## see 'GRanges compatibility', below } \arguments{ \item{assays}{A \code{list} or \code{SimpleList} of matrix-like elements, or a matrix-like object. All elements of the list must have the same dimensions, and dimension names (if present) must be consistent across elements and with the row names of \code{rowRanges} and \code{colData}.} \item{rowData}{A \link[S4Vectors]{DataFrame} object describing the rows. Row names, if present, become the row names of the SummarizedExperiment object. The number of rows of the \link[S4Vectors]{DataFrame} must equal the number of rows of the matrices in \code{assays}.} \item{rowRanges}{A \link[GenomicRanges]{GRanges} or \link[GenomicRanges]{GRangesList} object describing the ranges of interest. Names, if present, become the row names of the SummarizedExperiment object. The length of the \link[GenomicRanges]{GRanges} or \link[GenomicRanges]{GRangesList} must equal the number of rows of the matrices in \code{assays}. If \code{rowRanges} is missing, a \link{SummarizedExperiment} instance is returned.} \item{colData}{An optional \link{DataFrame} describing the samples. Row names, if present, become the column names of the RangedSummarizedExperiment.} \item{metadata}{An optional \code{list} of arbitrary content describing the overall experiment.} \item{...}{For \code{SummarizedExperiment}, S4 methods \code{list} and \code{matrix}, arguments identical to those of the \code{SimpleList} method. For \code{rowRanges}, ignored. } \item{x}{A RangedSummarizedExperiment object. The \code{rowRanges} setter will also accept a \link{SummarizedExperiment} object and will first coerce it to RangedSummarizedExperiment before it sets \code{value} on it.} \item{value}{A \link[GenomicRanges]{GRanges} or \link[GenomicRanges]{GRangesList} object.} \item{subset}{An expression which, when evaluated in the context of \code{rowRanges(x)}, is a logical vector indicating elements or rows to keep: missing values are taken as false.} \item{select}{An expression which, when evaluated in the context of \code{colData(x)}, is a logical vector indicating elements or rows to keep: missing values are taken as false.} } \details{ The rows of a RangedSummarizedExperiment object represent ranges (in genomic coordinates) of interest. The ranges of interest are described by a \link{GRanges} or a \link{GRangesList} object, accessible using the \code{rowRanges} function, described below. The \link{GRanges} and \link{GRangesList} classes contains sequence (e.g., chromosome) name, genomic coordinates, and strand information. Each range can be annotated with additional data; this data might be used to describe the range or to summarize results (e.g., statistics of differential abundance) relevant to the range. Rows may or may not have row names; they often will not. } \section{Constructor}{ RangedSummarizedExperiment instances are constructed using the \code{SummarizedExperiment} function with arguments outlined above. } \section{Accessors}{ In the following code snippets, \code{x} is a RangedSummarizedExperiment object. \describe{ \item{\code{rowRanges(x)}, \code{rowRanges(x) <- value}:}{Get or set the row data. \code{value} is a \code{GenomicRanges} object. Row names of \code{value} must be NULL or consistent with the existing row names of \code{x}.} } } \section{GRanges compatibility (rowRanges access)}{ Many \link{GRanges} and \link{GRangesList} operations are supported on RangedSummarizedExperiment objects, using \code{rowRanges}. Supported operations include: \code{\link{pcompare}}, \code{\link{duplicated}}, \code{\link{end}}, \code{\link{end<-}}, \code{\link{granges}}, \code{\link{is.unsorted}}, \code{\link{match}}, \code{\link{mcols}}, \code{\link{mcols<-}}, \code{\link{order}}, \code{\link{ranges}}, \code{\link{ranges<-}}, \code{\link{rank}}, \code{\link{seqinfo}}, \code{\link{seqinfo<-}}, \code{\link{seqnames}}, \code{\link{sort}}, \code{\link{start}}, \code{\link{start<-}}, \code{\link{strand}}, \code{\link{strand<-}}, \code{\link{width}}, \code{\link{width<-}}. See also \code{?\link[SummarizedExperiment]{shift}}, \code{?\link[SummarizedExperiment]{isDisjoint}}, \code{?\link[SummarizedExperiment]{coverage}}, \code{?\link[SummarizedExperiment]{findOverlaps}}, and \code{?\link[SummarizedExperiment]{nearest}} for more \emph{GRanges compatibility methods}. Not all \link{GRanges} operations are supported, because they do not make sense for RangedSummarizedExperiment objects (e.g., length, name, as.data.frame, c, splitAsList), involve non-trivial combination or splitting of rows (e.g., disjoin, gaps, reduce, unique), or have not yet been implemented (Ops, map, window, window<-). } \section{Subsetting}{ In the code snippets below, \code{x} is a RangedSummarizedExperiment object. \describe{ \item{\code{subset(x, subset, select)}:}{Create a subset of \code{x} using an expression \code{subset} referring to columns of \code{rowRanges(x)} (including \sQuote{seqnames}, \sQuote{start}, \sQuote{end}, \sQuote{width}, \sQuote{strand}, and \code{names(rowData(x))}) and / or \code{select} referring to column names of \code{colData(x)}.} } } \section{Extension}{ RangedSummarizedExperiment is implemented as an S4 class, and can be extended in the usual way, using \code{contains="RangedSummarizedExperiment"} in the new class definition. } \author{Martin Morgan, \url{mtmorgan@fhcrc.org}} \seealso{ \itemize{ \item \link{SummarizedExperiment} objects. \item \link[SummarizedExperiment]{shift}, \link[SummarizedExperiment]{isDisjoint}, \link[SummarizedExperiment]{coverage}, \link[SummarizedExperiment]{findOverlaps}, and \link[SummarizedExperiment]{nearest} for more \emph{GRanges compatibility methods}. \item \link[GenomicRanges]{GRanges} objects in the \pkg{GenomicRanges} package. } } \examples{ nrows <- 200; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)), IRanges(floor(runif(200, 1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID\%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse dim(rse) dimnames(rse) assayNames(rse) head(assay(rse)) assays(rse) <- endoapply(assays(rse), asinh) head(assay(rse)) rowRanges(rse) rowData(rse) # same as 'mcols(rowRanges(rse))' colData(rse) rse[, rse$Treatment == "ChIP"] ## cbind() combines objects with the same ranges but different samples: rse1 <- rse rse2 <- rse1[,1:3] colnames(rse2) <- letters[1:ncol(rse2)] cmb1 <- cbind(rse1, rse2) dim(cmb1) dimnames(cmb1) ## rbind() combines objects with the same samples but different ranges: rse1 <- rse rse2 <- rse1[1:50,] rownames(rse2) <- letters[1:nrow(rse2)] cmb2 <- rbind(rse1, rse2) dim(cmb2) dimnames(cmb2) ## Coercion to/from SummarizedExperiment: se0 <- as(rse, "SummarizedExperiment") se0 as(se0, "RangedSummarizedExperiment") ## Setting rowRanges on a SummarizedExperiment object turns it into a ## RangedSummarizedExperiment object: se <- se0 rowRanges(se) <- rowRanges se # RangedSummarizedExperiment ## Sanity checks: stopifnot(identical(assays(se0), assays(rse))) stopifnot(identical(dim(se0), dim(rse))) stopifnot(identical(dimnames(se0), dimnames(rse))) stopifnot(identical(rowData(se0), rowData(rse))) stopifnot(identical(colData(se0), colData(rse))) } SummarizedExperiment/man/SummarizedExperiment-class.Rd0000644000175400017540000003744313175715010024322 0ustar00biocbuildbiocbuild\name{SummarizedExperiment-class} \docType{class} % Class \alias{class:SummarizedExperiment} \alias{SummarizedExperiment-class} % Accessors \alias{length,SummarizedExperiment-method} \alias{names,SummarizedExperiment-method} \alias{names<-,SummarizedExperiment-method} \alias{rowData} \alias{rowData,SummarizedExperiment-method} \alias{rowData<-} \alias{rowData<-,SummarizedExperiment-method} \alias{colData} \alias{colData,SummarizedExperiment-method} \alias{colData<-} \alias{colData<-,SummarizedExperiment,DataFrame-method} \alias{assays} \alias{assays,SummarizedExperiment-method} \alias{assays<-} \alias{assays<-,SummarizedExperiment,SimpleList-method} \alias{assays<-,SummarizedExperiment,list-method} \alias{assay} \alias{assay,SummarizedExperiment,missing-method} \alias{assay,SummarizedExperiment,numeric-method} \alias{assay,SummarizedExperiment,character-method} \alias{assay<-} \alias{assay<-,SummarizedExperiment,missing-method} \alias{assay<-,SummarizedExperiment,numeric-method} \alias{assay<-,SummarizedExperiment,character-method} \alias{assayNames} \alias{assayNames,SummarizedExperiment-method} \alias{assayNames<-} \alias{assayNames<-,SummarizedExperiment,character-method} \alias{dim,SummarizedExperiment-method} \alias{dimnames,SummarizedExperiment-method} \alias{dimnames<-,SummarizedExperiment,list-method} \alias{dimnames<-,SummarizedExperiment,NULL-method} % Subsetting \alias{[,SummarizedExperiment-method} \alias{[,SummarizedExperiment,ANY-method} \alias{[,SummarizedExperiment,ANY,ANY,ANY-method} \alias{[<-,SummarizedExperiment,ANY,ANY,SummarizedExperiment-method} \alias{extractROWS,SummarizedExperiment,ANY-method} \alias{replaceROWS,SummarizedExperiment-method} % Quick colData access \alias{[[,SummarizedExperiment,ANY,missing-method} \alias{[[<-,SummarizedExperiment,ANY,missing-method} \alias{$,SummarizedExperiment-method} \alias{$<-,SummarizedExperiment-method} % Display \alias{show,SummarizedExperiment-method} % Combine \alias{rbind,SummarizedExperiment-method} \alias{cbind,SummarizedExperiment-method} % On-disk realization \alias{realize,SummarizedExperiment-method} \title{SummarizedExperiment objects} \description{ The SummarizedExperiment class is a matrix-like container where rows represent features of interest (e.g. genes, transcripts, exons, etc...) and columns represent samples (with sample data summarized as a \link{DataFrame}). A SummarizedExperiment object contains one or more assays, each represented by a matrix-like object of numeric or other mode. Note that SummarizedExperiment is the parent of the \link{RangedSummarizedExperiment} class which means that all the methods documented below also work on a \link{RangedSummarizedExperiment} object. } \usage{ ## Constructor # See ?RangedSummarizedExperiment for the constructor function. ## Accessors assayNames(x, ...) assayNames(x, ...) <- value assays(x, ..., withDimnames=TRUE) assays(x, ..., withDimnames=TRUE) <- value assay(x, i, ...) assay(x, i, ...) <- value rowData(x, ...) rowData(x, ...) <- value colData(x, ...) colData(x, ...) <- value #dim(x) #dimnames(x) #dimnames(x) <- value ## Quick colData access \S4method{$}{SummarizedExperiment}(x, name) \S4method{$}{SummarizedExperiment}(x, name) <- value \S4method{[[}{SummarizedExperiment,ANY,missing}(x, i, j, ...) \S4method{[[}{SummarizedExperiment,ANY,missing}(x, i, j, ...) <- value ## Subsetting \S4method{[}{SummarizedExperiment}(x, i, j, ..., drop=TRUE) \S4method{[}{SummarizedExperiment,ANY,ANY,SummarizedExperiment}(x, i, j) <- value ## Combining \S4method{cbind}{SummarizedExperiment}(..., deparse.level=1) \S4method{rbind}{SummarizedExperiment}(..., deparse.level=1) ## On-disk realization \S4method{realize}{SummarizedExperiment}(x) } \arguments{ \item{x}{A SummarizedExperiment object.} \item{...}{ For \code{assay}, \code{...} may contain \code{withDimnames}, which is forwarded to \code{assays}. For \code{rowData}, arguments passed thru \code{...} are forwarded to \code{\link[S4Vectors]{mcols}}. For \code{cbind}, \code{rbind}, \code{...} contains SummarizedExperiment objects to be combined. For other accessors, ignored. } \item{i, j}{ For \code{assay}, \code{assay<-}, \code{i} is an integer or numeric scalar; see \sQuote{Details} for additional constraints. For \code{[,SummarizedExperiment}, \code{[,SummarizedExperiment<-}, \code{i}, \code{j} are subscripts that can act to subset the rows and columns of \code{x}, that is the \code{matrix} elements of \code{assays}. For \code{[[,SummarizedExperiment}, \code{[[<-,SummarizedExperiment}, \code{i} is a scalar index (e.g., \code{character(1)} or \code{integer(1)}) into a column of \code{colData}. } \item{name}{A symbol representing the name of a column of \code{colData}.} \item{withDimnames}{A \code{logical(1)}, indicating whether dimnames should be applied to extracted assay elements. Setting \code{withDimnames=FALSE} increases the speed and memory efficiency with which assays are extracted. \code{withDimnames=TRUE} in the getter \code{assays<-} allows efficient complex assignments (e.g., updating names of assays, \code{names(assays(x, withDimnames=FALSE)) = ...} is more efficient than \code{names(assays(x)) = ...}); it does not influence actual assignment of dimnames to assays.} \item{drop}{A \code{logical(1)}, ignored by these methods.} \item{value}{An object of a class specified in the S4 method signature or as outlined in \sQuote{Details}.} \item{deparse.level}{See \code{?base::\link[base]{cbind}} for a description of this argument.} } \details{ The SummarizedExperiment class is meant for numeric and other data types derived from a sequencing experiment. The structure is rectangular like a \code{matrix}, but with additional annotations on the rows and columns, and with the possibility to manage several assays simultaneously. The rows of a SummarizedExperiment object represent features of interest. Information about these features is stored in a \link{DataFrame} object, accessible using the function \code{rowData}. The \link{DataFrame} must have as many rows as there are rows in the SummarizedExperiment object, with each row of the \link{DataFrame} providing information on the feature in the corresponding row of the SummarizedExperiment object. Columns of the \link{DataFrame} represent different attributes of the features of interest, e.g., gene or transcript IDs, etc. Each column of a SummarizedExperiment object represents a sample. Information about the samples are stored in a \link{DataFrame}, accessible using the function \code{colData}, described below. The \link{DataFrame} must have as many rows as there are columns in the SummarizedExperiment object, with each row of the \link{DataFrame} providing information on the sample in the corresponding column of the SummarizedExperiment object. Columns of the \link{DataFrame} represent different sample attributes, e.g., tissue of origin, etc. Columns of the \link{DataFrame} can themselves be annotated (via the \code{\link[S4Vectors]{mcols}} function). Column names typically provide a short identifier unique to each sample. A SummarizedExperiment object can also contain information about the overall experiment, for instance the lab in which it was conducted, the publications with which it is associated, etc. This information is stored as a \code{list} object, accessible using the \code{metadata} function. The form of the data associated with the experiment is left to the discretion of the user. The SummarizedExperiment container is appropriate for matrix-like data. The data are accessed using the \code{assays} function, described below. This returns a \link{SimpleList} object. Each element of the list must itself be a matrix (of any mode) and must have dimensions that are the same as the dimensions of the SummarizedExperiment in which they are stored. Row and column names of each matrix must either be \code{NULL} or match those of the SummarizedExperiment during construction. It is convenient for the elements of \link{SimpleList} of assays to be named. } \section{Constructor}{ SummarizedExperiment instances are constructed using the \code{SummarizedExperiment} function documented in \code{?\link{RangedSummarizedExperiment}}. } \section{Accessors}{ In the following code snippets, \code{x} is a SummarizedExperiment object. \describe{ \item{\code{assays(x)}, \code{assays(x) <- value}:}{Get or set the assays. \code{value} is a \code{list} or \code{SimpleList}, each element of which is a matrix with the same dimensions as \code{x}.} \item{\code{assay(x, i)}, \code{assay(x, i) <- value}:}{A convenient alternative (to \code{assays(x)[[i]]}, \code{assays(x)[[i]] <- value}) to get or set the \code{i}th (default first) assay element. \code{value} must be a matrix of the same dimension as \code{x}, and with dimension names \code{NULL} or consistent with those of \code{x}.} \item{\code{assayNames(x)}, \code{assayNames(x) <- value}:}{Get or set the names of \code{assay()} elements.} \item{\code{rowData(x)}, \code{rowData(x) <- value}:}{Get or set the row data. \code{value} is a \link{DataFrame} object. Row names of \code{value} must be NULL or consistent with the existing row names of \code{x}.} \item{\code{colData(x)}, \code{colData(x) <- value}:}{Get or set the column data. \code{value} is a \link{DataFrame} object. Row names of \code{value} must be NULL or consistent with the existing column names of \code{x}.} \item{\code{metadata(x)}, \code{metadata(x) <- value}:}{Get or set the experiment data. \code{value} is a \code{list} with arbitrary content.} \item{\code{dim(x)}:}{Get the dimensions (features of interest x samples) of the SummarizedExperiment.} \item{\code{dimnames(x)}, \code{dimnames(x) <- value}:}{Get or set the dimension names. \code{value} is usually a list of length 2, containing elements that are either \code{NULL} or vectors of appropriate length for the corresponding dimension. \code{value} can be \code{NULL}, which removes dimension names. This method implies that \code{rownames}, \code{rownames<-}, \code{colnames}, and \code{colnames<-} are all available.} } } \section{Subsetting}{ In the code snippets below, \code{x} is a SummarizedExperiment object. \describe{ \item{\code{x[i,j]}, \code{x[i,j] <- value}:}{Create or replace a subset of \code{x}. \code{i}, \code{j} can be \code{numeric}, \code{logical}, \code{character}, or \code{missing}. \code{value} must be a SummarizedExperiment object with dimensions, dimension names, and assay elements consistent with the subset \code{x[i,j]} being replaced.} } Additional subsetting accessors provide convenient access to \code{colData} columns \describe{ \item{\code{x$name}, \code{x$name <- value}}{Access or replace column \code{name} in \code{x}.} \item{\code{x[[i, ...]]}, \code{x[[i, ...]] <- value}}{Access or replace column \code{i} in \code{x}.} } } \section{Combining}{ In the code snippets below, \code{...} are SummarizedExperiment objects to be combined. \describe{ \item{\code{cbind(...)}:}{ \code{cbind} combines objects with the same features of interest but different samples (columns in \code{assays}). The colnames in \code{colData(SummarizedExperiment)} must match or an error is thrown. Duplicate columns of \code{rowData(SummarizedExperiment)} must contain the same data. Data in \code{assays} are combined by name matching; if all assay names are NULL matching is by position. A mixture of names and NULL throws an error. \code{metadata} from all objects are combined into a \code{list} with no name checking. } \item{\code{rbind(...)}:}{ \code{rbind} combines objects with the same samples but different features of interest (rows in \code{assays}). The colnames in \code{rowData(SummarizedExperiment)} must match or an error is thrown. Duplicate columns of \code{colData(SummarizedExperiment)} must contain the same data. Data in \code{assays} are combined by name matching; if all assay names are NULL matching is by position. A mixture of names and NULL throws an error. \code{metadata} from all objects are combined into a \code{list} with no name checking. } } } \section{Implementation and Extension}{ This section contains advanced material meant for package developers. SummarizedExperiment is implemented as an S4 class, and can be extended in the usual way, using \code{contains="SummarizedExperiment"} in the new class definition. In addition, the representation of the \code{assays} slot of SummarizedExperiment is as a virtual class Assays. This allows derived classes (\code{contains="Assays"}) to easily implement alternative requirements for the assays, e.g., backed by file-based storage like NetCDF or the \code{ff} package, while re-using the existing SummarizedExperiment class without modification. See \link{Assays} for more information. The current \code{assays} slot is implemented as a reference class that has copy-on-change semantics. This means that modifying non-assay slots does not copy the (large) assay data, and at the same time the user is not surprised by reference-based semantics. Updates to non-assay slots are very fast; updating the assays slot itself can be 5x or more faster than with an S4 instance in the slot. One useful technique when working with \code{assay} or \code{assays} function is use of the \code{withDimnames=FALSE} argument, which benefits speed and memory use by not copying dimnames from the row- and colData elements to each assay. } \author{Martin Morgan, \url{mtmorgan@fhcrc.org}} \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item \link[S4Vectors]{DataFrame}, \link[S4Vectors]{SimpleList}, and \link[S4Vectors]{Annotated} objects in the \pkg{S4Vectors} package. \item The \code{\link[S4Vectors]{metadata}} and \code{\link[S4Vectors]{mcols}} accessors in the \pkg{S4Vectors} package. \item \code{\link{saveHDF5SummarizedExperiment}} and \code{\link{loadHDF5SummarizedExperiment}} for saving/loading a HDF5-based SummarizedExperiment object to/from disk. \item The \code{\link[DelayedArray]{realize}} generic function in the \pkg{DelayedArray} package for more information about on-disk realization of objects carrying delayed operations. } } \examples{ nrows <- 200; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) se0 <- SummarizedExperiment(assays=SimpleList(counts=counts), colData=colData) se0 dim(se0) dimnames(se0) assayNames(se0) head(assay(se0)) assays(se0) <- endoapply(assays(se0), asinh) head(assay(se0)) rowData(se0) colData(se0) se0[, se0$Treatment == "ChIP"] ## cbind() combines objects with the same features of interest ## but different samples: se1 <- se0 se2 <- se1[,1:3] colnames(se2) <- letters[1:ncol(se2)] cmb1 <- cbind(se1, se2) dim(cmb1) dimnames(cmb1) ## rbind() combines objects with the same samples but different ## features of interest: se1 <- se0 se2 <- se1[1:50,] rownames(se2) <- letters[1:nrow(se2)] cmb2 <- rbind(se1, se2) dim(cmb2) dimnames(cmb2) ## --------------------------------------------------------------------- ## ON-DISK REALIZATION ## --------------------------------------------------------------------- setRealizationBackend("HDF5Array") cmb3 <- realize(cmb2) assay(cmb3, withDimnames=FALSE) # an HDF5Matrix object } SummarizedExperiment/man/coverage-methods.Rd0000644000175400017540000000444513175715010022266 0ustar00biocbuildbiocbuild\name{coverage-methods} \alias{coverage-methods} \alias{coverage} \alias{coverage,RangedSummarizedExperiment-method} \title{Coverage of a RangedSummarizedExperiment object} \description{ This man page documents the \code{coverage} method for \link{RangedSummarizedExperiment} objects. } \usage{ \S4method{coverage}{RangedSummarizedExperiment}(x, shift=0L, width=NULL, weight=1L, method=c("auto", "sort", "hash")) } \arguments{ \item{x}{ A \link{RangedSummarizedExperiment} object. } \item{shift, width, weight, method}{ See \code{?\link[GenomicRanges]{coverage}} in the \pkg{GenomicRanges} package. } } \details{ This method operates on the \code{rowRanges} component of the \link{RangedSummarizedExperiment} object, which can be a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. More precisely, on \link{RangedSummarizedExperiment} object \code{x}, \code{coverage(x, ...)} is equivalent to \code{coverage(rowRanges(x), ...)}. See \code{?\link[GenomicRanges]{coverage}} in the \pkg{GenomicRanges} package for the details of how \code{coverage} operates on a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. } \value{ See \code{?\link[GenomicRanges]{coverage}} in the \pkg{GenomicRanges} package. } \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item The \link[GenomicRanges]{coverage} man page in the \pkg{GenomicRanges} package where the \code{coverage} methods for \link[GenomicRanges]{GenomicRanges} and \link[GenomicRanges]{GRangesList} objects are documented. } } \examples{ nrows <- 20; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(5, 15)), IRanges(sample(1000L, 20), width=100), strand=Rle(c("+", "-"), c(12, 8)), seqlengths=c(chr1=1800, chr2=1300)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) cvg <- coverage(rse) cvg stopifnot(identical(cvg, coverage(rowRanges(rse)))) } \keyword{methods} \keyword{utilities} SummarizedExperiment/man/findOverlaps-methods.Rd0000644000175400017540000000705313175715010023125 0ustar00biocbuildbiocbuild\name{findOverlaps-methods} \alias{findOverlaps-methods} \alias{findOverlaps} \alias{findOverlaps,RangedSummarizedExperiment,Vector-method} \alias{findOverlaps,Vector,RangedSummarizedExperiment-method} \alias{findOverlaps,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \title{Finding overlapping ranges in RangedSummarizedExperiment objects} \description{ This man page documents the \code{findOverlaps} methods for \link{RangedSummarizedExperiment} objects. \link{RangedSummarizedExperiment} objects also support \code{countOverlaps}, \code{overlapsAny}, and \code{subsetByOverlaps} thanks to the default methods defined in the \pkg{IRanges} package and to the \code{findOverlaps} methods defined in this package and documented below. } \usage{ \S4method{findOverlaps}{RangedSummarizedExperiment,Vector}(query, subject, maxgap=-1L, minoverlap=0L, type=c("any", "start", "end", "within", "equal"), select=c("all", "first", "last", "arbitrary"), ignore.strand=FALSE) \S4method{findOverlaps}{Vector,RangedSummarizedExperiment}(query, subject, maxgap=-1L, minoverlap=0L, type=c("any", "start", "end", "within", "equal"), select=c("all", "first", "last", "arbitrary"), ignore.strand=FALSE) } \arguments{ \item{query, subject}{ One of these two arguments must be a \link{RangedSummarizedExperiment} object. } \item{maxgap, minoverlap, type}{ See \code{?\link[GenomicRanges]{findOverlaps}} in the \pkg{GenomicRanges} package. } \item{select, ignore.strand}{ See \code{?\link[GenomicRanges]{findOverlaps}} in the \pkg{GenomicRanges} package. } } \details{ These methods operate on the \code{rowRanges} component of the \link{RangedSummarizedExperiment} object, which can be a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. More precisely, if any of the above functions is passed a \link{RangedSummarizedExperiment} object thru the \code{query} and/or \code{subject} argument, then it behaves as if \code{rowRanges(query)} and/or \code{rowRanges(subject)} had been passed instead. See \code{?\link[GenomicRanges]{findOverlaps}} in the \pkg{GenomicRanges} package for the details of how \code{findOverlaps} and family operate on \link[GenomicRanges]{GenomicRanges} and \link[GenomicRanges]{GRangesList} objects. } \value{ See \code{?\link[GenomicRanges]{findOverlaps}} in the \pkg{GenomicRanges} package. } \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item The \link[GenomicRanges]{findOverlaps} man page in the \pkg{GenomicRanges} package where the \code{findOverlaps} family of methods for \link[GenomicRanges]{GenomicRanges} and \link[GenomicRanges]{GRangesList} objects is documented. } } \examples{ nrows <- 20; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(5, 15)), IRanges(sample(1000L, 20), width=100), strand=Rle(c("+", "-"), c(12, 8))) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse0 <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse1 <- shift(rse0, 100) hits <- findOverlaps(rse0, rse1) hits stopifnot(identical(hits, findOverlaps(rowRanges(rse0), rowRanges(rse1)))) stopifnot(identical(hits, findOverlaps(rse0, rowRanges(rse1)))) stopifnot(identical(hits, findOverlaps(rowRanges(rse0), rse1))) } \keyword{methods} \keyword{utilities} SummarizedExperiment/man/inter-range-methods.Rd0000644000175400017540000000531013175715010022676 0ustar00biocbuildbiocbuild\name{inter-range-methods} \alias{inter-range-methods} \alias{isDisjoint} \alias{isDisjoint,RangedSummarizedExperiment-method} \alias{disjointBins} \alias{disjointBins,RangedSummarizedExperiment-method} \title{Inter range transformations of a RangedSummarizedExperiment object} \description{ This man page documents the \emph{inter range transformations} that are supported on \link{RangedSummarizedExperiment} objects. } \usage{ \S4method{isDisjoint}{RangedSummarizedExperiment}(x, ignore.strand=FALSE) \S4method{disjointBins}{RangedSummarizedExperiment}(x, ignore.strand=FALSE) } \arguments{ \item{x}{ A \link{RangedSummarizedExperiment} object. } \item{ignore.strand}{ See \code{?\link[GenomicRanges]{isDisjoint}} in the \pkg{GenomicRanges} package. } } \details{ These transformations operate on the \code{rowRanges} component of the \link{RangedSummarizedExperiment} object, which can be a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. More precisely, any of the above functions performs the following transformation on \link{RangedSummarizedExperiment} object \code{x}: \preformatted{ f(rowRanges(x), ...) } where \code{f} is the name of the function and \code{...} any additional arguments passed to it. See \code{?\link[GenomicRanges]{isDisjoint}} in the \pkg{GenomicRanges} package for the details of how these transformations operate on a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. } \value{ See \code{?\link[GenomicRanges]{isDisjoint}} in the \pkg{GenomicRanges} package. } \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item The \link[GenomicRanges]{isDisjoint} man page in the \pkg{GenomicRanges} package where \emph{inter range transformations} of a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object are documented. } } \examples{ nrows <- 20; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(5, 15)), IRanges(sample(1000L, 20), width=100), strand=Rle(c("+", "-"), c(12, 8))) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse0 <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse1 <- shift(rse0, 99*start(rse0)) isDisjoint(rse0) # FALSE isDisjoint(rse1) # TRUE bins0 <- disjointBins(rse0) bins0 stopifnot(identical(bins0, disjointBins(rowRanges(rse0)))) bins1 <- disjointBins(rse1) bins1 stopifnot(all(bins1 == bins1[1])) } \keyword{methods} \keyword{utilities} SummarizedExperiment/man/intra-range-methods.Rd0000644000175400017540000001033513175715010022675 0ustar00biocbuildbiocbuild\name{intra-range-methods} \alias{intra-range-methods} \alias{shift} \alias{shift,RangedSummarizedExperiment-method} \alias{narrow} \alias{narrow,RangedSummarizedExperiment-method} \alias{resize} \alias{resize,RangedSummarizedExperiment-method} \alias{flank} \alias{flank,RangedSummarizedExperiment-method} \alias{promoters} \alias{promoters,RangedSummarizedExperiment-method} \alias{restrict} \alias{restrict,RangedSummarizedExperiment-method} \alias{trim,RangedSummarizedExperiment-method} \title{Intra range transformations of a RangedSummarizedExperiment object} \description{ This man page documents the \emph{intra range transformations} that are supported on \link{RangedSummarizedExperiment} objects. } \usage{ \S4method{shift}{RangedSummarizedExperiment}(x, shift=0L, use.names=TRUE) \S4method{narrow}{RangedSummarizedExperiment}(x, start=NA, end=NA, width=NA, use.names=TRUE) \S4method{resize}{RangedSummarizedExperiment}(x, width, fix="start", use.names=TRUE, ignore.strand=FALSE) \S4method{flank}{RangedSummarizedExperiment}(x, width, start=TRUE, both=FALSE, use.names=TRUE, ignore.strand=FALSE) \S4method{promoters}{RangedSummarizedExperiment}(x, upstream=2000, downstream=200) \S4method{restrict}{RangedSummarizedExperiment}(x, start=NA, end=NA, keep.all.ranges=FALSE, use.names=TRUE) \S4method{trim}{RangedSummarizedExperiment}(x, use.names=TRUE) } \arguments{ \item{x}{ A \link{RangedSummarizedExperiment} object. } \item{shift, use.names}{ See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package. } \item{start, end, width, fix}{ See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package. } \item{ignore.strand, both}{ See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package. } \item{upstream, downstream}{ See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package. } \item{keep.all.ranges}{ See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package. } } \details{ These transformations operate on the \code{rowRanges} component of the \link{RangedSummarizedExperiment} object, which can be a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. More precisely, any of the above functions performs the following transformation on \link{RangedSummarizedExperiment} object \code{x}: \preformatted{ rowRanges(x) <- f(rowRanges(x), ...) } where \code{f} is the name of the function and \code{...} any additional arguments passed to it. See \code{?\link[GenomicRanges]{shift}} in the \pkg{GenomicRanges} package for the details of how these transformations operate on a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. } \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item The \link[GenomicRanges]{shift} man page in the \pkg{GenomicRanges} package where \emph{intra range transformations} of a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object are documented. } } \examples{ nrows <- 20; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(5, 15)), IRanges(sample(1000L, 20), width=100), strand=Rle(c("+", "-"), c(12, 8))) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse0 <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse1 <- shift(rse0, 1) stopifnot(identical( rowRanges(rse1), shift(rowRanges(rse0), 1) )) se2 <- narrow(rse0, start=10, end=-15) stopifnot(identical( rowRanges(se2), narrow(rowRanges(rse0), start=10, end=-15) )) se3 <- resize(rse0, width=75) stopifnot(identical( rowRanges(se3), resize(rowRanges(rse0), width=75) )) se4 <- flank(rse0, width=20) stopifnot(identical( rowRanges(se4), flank(rowRanges(rse0), width=20) )) se5 <- restrict(rse0, start=200, end=700, keep.all.ranges=TRUE) stopifnot(identical( rowRanges(se5), restrict(rowRanges(rse0), start=200, end=700, keep.all.ranges=TRUE) )) } \keyword{methods} \keyword{utilities} SummarizedExperiment/man/makeSummarizedExperimentFromDataFrame.Rd0000644000175400017540000000627113175715010026441 0ustar00biocbuildbiocbuild\name{makeSummarizedExperimentFromDataFrame} \alias{makeSummarizedExperimentFromDataFrame} \title{Make a RangedSummarizedExperiment from a data.frame or DataFrame} \description{ \code{makeSummarizedExperimentFromDataFrame} uses \code{data.frame} or \code{DataFrame} column names to create a \link{GRanges} object for the \code{rowRanges} of the resulting \link{SummarizedExperiment} object. It requires that non-range data columns be coercible into a \code{numeric} \code{matrix} for the \link{SummarizedExperiment} constructor. All columns that are not part of the row ranges attribute are assumed to be experiment data; thus, keeping metadata columns will not be supported. Note that this function only returns \link{SummarizedExperiment} objects with a single assay. If metadata columns are to be kept, one can first construct the row ranges attribute by using the \link{makeGRangesFromDataFrame} function and subsequently creating the \link{SummarizedExperiment}. } \usage{ makeSummarizedExperimentFromDataFrame(df, ..., seqinfo = NULL, starts.in.df.are.0based = FALSE) } \arguments{ \item{df}{ A data.frame or \link[S4Vectors]{DataFrame} object. If not, then the function first tries to turn \code{df} into a data frame with \code{as.data.frame(df)}. } \item{...}{ Additional arguments passed on to \link{makeGRangesFromDataFrame} } \item{seqinfo}{ Either \code{NULL}, or a \link{Seqinfo} object, or a character vector of seqlevels, or a named numeric vector of sequence lengths. When not \code{NULL}, it must be compatible with the genomic ranges in \code{df} i.e. it must include at least the sequence levels represented in \code{df}. } \item{starts.in.df.are.0based}{ \code{TRUE} or \code{FALSE} (the default). If \code{TRUE}, then the start positions of the genomic ranges in \code{df} are considered to be \emph{0-based} and are converted to \emph{1-based} in the returned \link{GRanges} object. This feature is intended to make it more convenient to handle input that contains data obtained from resources using the "0-based start" convention. A notorious example of such resource is the UCSC Table Browser (\url{http://genome.ucsc.edu/cgi-bin/hgTables}). } } \value{ A \link{RangedSummarizedExperiment} object with rowRanges and a single assay } \author{ M. Ramos } \seealso{ \itemize{ \item \link{makeGRangesFromDataFrame} } } \examples{ ## --------------------------------------------------------------------- ## BASIC EXAMPLES ## --------------------------------------------------------------------- # Note that rownames of the data.frame are also rownames of the result df <- data.frame(chr="chr2", start = 11:15, end = 12:16, strand = c("+", "-", "+", "*", "."), expr0 = 3:7, expr1 = 8:12, expr2 = 12:16, row.names = paste0("GENE", letters[5:1])) df exRSE <- makeSummarizedExperimentFromDataFrame(df) exRSE assay(exRSE) rowRanges(exRSE) } SummarizedExperiment/man/makeSummarizedExperimentFromExpressionSet.Rd0000644000175400017540000000731213175715010027425 0ustar00biocbuildbiocbuild\name{makeSummarizedExperimentFromExpressionSet} \alias{makeSummarizedExperimentFromExpressionSet} \alias{naiveRangeMapper} \alias{probeRangeMapper} \alias{geneRangeMapper} \alias{coerce,ExpressionSet,RangedSummarizedExperiment-method} \alias{coerce,ExpressionSet,SummarizedExperiment-method} \alias{coerce,RangedSummarizedExperiment,ExpressionSet-method} \alias{coerce,SummarizedExperiment,ExpressionSet-method} \title{Make a RangedSummarizedExperiment object from an ExpressionSet and vice-versa} \description{ Coercion between \link{RangedSummarizedExperiment} and \link[Biobase]{ExpressionSet} is supported in both directions. For going from \link[Biobase]{ExpressionSet} to \link{RangedSummarizedExperiment}, the \code{makeSummarizedExperimentFromExpressionSet} function is also provided to let the user control how to map features to ranges. } \usage{ makeSummarizedExperimentFromExpressionSet(from, mapFun=naiveRangeMapper, ...) ## range mapping functions naiveRangeMapper(from) probeRangeMapper(from) geneRangeMapper(txDbPackage, key = "ENTREZID") } \arguments{ \item{from}{ An \link[Biobase]{ExpressionSet} object. } \item{mapFun}{ A function which takes an \link[Biobase]{ExpressionSet} object and returns a \link{GRanges}, or \link{GRangesList} object which corresponds to the genomic ranges used in the ExpressionSet. The \link[base]{rownames} of the returned \link[GenomicRanges]{GRanges} are used to match the \link[Biobase]{featureNames} of the \link[Biobase]{ExpressionSet}. The \code{naiveRangeMapper} function is used by default. } \item{...}{ Additional arguments passed to \code{mapFun}. } \item{txDbPackage}{ A character string with the Transcript Database to use for the mapping. } \item{key}{ A character string with the Gene key to use for the mapping. } } \value{ \code{makeSummarizedExperimentFromExpressionSet} takes an \link[Biobase]{ExpressionSet} object as input and a \emph{range mapping function} that maps the features to ranges. It then returns a \link{RangedSummarizedExperiment} object that corresponds to the input. The range mapping functions return a \link{GRanges} object, with the \code{rownames} corresponding to the \link[Biobase]{featureNames} of the \link[Biobase]{ExpressionSet} object. } \author{Jim Hester, \url{james.f.hester@gmail.com}} \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item \link[Biobase]{ExpressionSet} objects in the \pkg{Biobase} package. \item \link[GenomicFeatures]{TxDb} objects in the \pkg{GenomicFeatures} package. } } \examples{ ## --------------------------------------------------------------------- ## GOING FROM ExpressionSet TO SummarizedExperiment ## --------------------------------------------------------------------- data(sample.ExpressionSet, package="Biobase") # naive coercion makeSummarizedExperimentFromExpressionSet(sample.ExpressionSet) as(sample.ExpressionSet, "RangedSummarizedExperiment") as(sample.ExpressionSet, "SummarizedExperiment") # using probe range mapper makeSummarizedExperimentFromExpressionSet(sample.ExpressionSet, probeRangeMapper) # using the gene range mapper makeSummarizedExperimentFromExpressionSet(sample.ExpressionSet, geneRangeMapper("TxDb.Hsapiens.UCSC.hg19.knownGene")) ## --------------------------------------------------------------------- ## GOING FROM SummarizedExperiment TO ExpressionSet ## --------------------------------------------------------------------- example(RangedSummarizedExperiment) # to create 'rse' rse as(rse, "ExpressionSet") } \keyword{manip} SummarizedExperiment/man/nearest-methods.Rd0000644000175400017540000001225013175715010022125 0ustar00biocbuildbiocbuild\name{nearest-methods} \alias{nearest-methods} \alias{precede} \alias{precede,RangedSummarizedExperiment,ANY-method} \alias{precede,ANY,RangedSummarizedExperiment-method} \alias{precede,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{follow} \alias{follow,RangedSummarizedExperiment,ANY-method} \alias{follow,ANY,RangedSummarizedExperiment-method} \alias{follow,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{nearest} \alias{nearest,RangedSummarizedExperiment,ANY-method} \alias{nearest,ANY,RangedSummarizedExperiment-method} \alias{nearest,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{distance} \alias{distance,RangedSummarizedExperiment,ANY-method} \alias{distance,ANY,RangedSummarizedExperiment-method} \alias{distance,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \alias{distanceToNearest} \alias{distanceToNearest,RangedSummarizedExperiment,ANY-method} \alias{distanceToNearest,ANY,RangedSummarizedExperiment-method} \alias{distanceToNearest,RangedSummarizedExperiment,RangedSummarizedExperiment-method} \title{Finding the nearest range neighbor in RangedSummarizedExperiment objects} \description{ This man page documents the \code{nearest} methods and family (i.e. \code{precede}, \code{follow}, \code{distance}, and \code{distanceToNearest} methods) for \link{RangedSummarizedExperiment} objects. } \usage{ \S4method{precede}{RangedSummarizedExperiment,ANY}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{precede}{ANY,RangedSummarizedExperiment}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{follow}{RangedSummarizedExperiment,ANY}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{follow}{ANY,RangedSummarizedExperiment}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{nearest}{RangedSummarizedExperiment,ANY}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{nearest}{ANY,RangedSummarizedExperiment}(x, subject, select=c("arbitrary", "all"), ignore.strand=FALSE) \S4method{distance}{RangedSummarizedExperiment,ANY}(x, y, ignore.strand=FALSE, ...) \S4method{distance}{ANY,RangedSummarizedExperiment}(x, y, ignore.strand=FALSE, ...) \S4method{distanceToNearest}{RangedSummarizedExperiment,ANY}(x, subject, ignore.strand=FALSE, ...) \S4method{distanceToNearest}{ANY,RangedSummarizedExperiment}(x, subject, ignore.strand=FALSE, ...) } \arguments{ \item{x, subject}{ One of these two arguments must be a \link{RangedSummarizedExperiment} object. } \item{select, ignore.strand}{ See \code{?\link[GenomicRanges]{nearest}} in the \pkg{GenomicRanges} package. } \item{y}{ For the \code{distance} methods, one of \code{x} or \code{y} must be a \link{RangedSummarizedExperiment} object. } \item{...}{Additional arguments for methods.} } \details{ These methods operate on the \code{rowRanges} component of the \link{RangedSummarizedExperiment} object, which can be a \link[GenomicRanges]{GenomicRanges} or \link[GenomicRanges]{GRangesList} object. More precisely, if any of the above functions is passed a \link{RangedSummarizedExperiment} object thru the \code{x}, \code{subject}, and/or \code{y} argument, then it behaves as if \code{rowRanges(x)}, \code{rowRanges(subject)}, and/or \code{rowRanges(y)} had been passed instead. See \code{?\link[GenomicRanges]{nearest}} in the \pkg{GenomicRanges} package for the details of how \code{nearest} and family operate on \link[GenomicRanges]{GenomicRanges} and \link[GenomicRanges]{GRangesList} objects. } \value{ See \code{?\link[GenomicRanges]{nearest}} in the \pkg{GenomicRanges} package. } \seealso{ \itemize{ \item \link{RangedSummarizedExperiment} objects. \item The \link[GenomicRanges]{nearest} man page in the \pkg{GenomicRanges} package where the \code{nearest} family of methods for \link[GenomicRanges]{GenomicRanges} and \link[GenomicRanges]{GRangesList} objects is documented. } } \examples{ nrows <- 20; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(5, 15)), IRanges(sample(1000L, 20), width=100), strand=Rle(c("+", "-"), c(12, 8))) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) rse0 <- SummarizedExperiment(assays=SimpleList(counts=counts), rowRanges=rowRanges, colData=colData) rse1 <- shift(rse0, 100) res <- nearest(rse0, rse1) res stopifnot(identical(res, nearest(rowRanges(rse0), rowRanges(rse1)))) stopifnot(identical(res, nearest(rse0, rowRanges(rse1)))) stopifnot(identical(res, nearest(rowRanges(rse0), rse1))) res <- nearest(rse0) # missing subject res stopifnot(identical(res, nearest(rowRanges(rse0)))) hits <- nearest(rse0, rse1, select="all") hits stopifnot(identical( hits, nearest(rowRanges(rse0), rowRanges(rse1), select="all") )) stopifnot(identical( hits, nearest(rse0, rowRanges(rse1), select="all") )) stopifnot(identical( hits, nearest(rowRanges(rse0), rse1, select="all") )) } \keyword{methods} \keyword{utilities} SummarizedExperiment/man/readKallisto.Rd0000644000175400017540000000762313175715010021451 0ustar00biocbuildbiocbuild\name{readKallisto} \alias{readKallisto} \alias{readKallistoBootstrap} \alias{KALLISTO_ASSAYS} \title{ Input kallisto or kallisto bootstrap results. } \description{ \code{readKallisto} inputs several kallisto output files into a single \code{SummarizedExperiment} instance, with rows corresponding to estimated transcript abundance and columns to samples. \code{readKallistoBootstrap} inputs kallisto bootstrap replicates of a single sample into a matrix of transcript x bootstrap abundance estimates. } \usage{ readKallisto(files, json = file.path(dirname(files), "run_info.json"), h5 = any(grepl("\\\\.h5$", files)), what = KALLISTO_ASSAYS, as = c("SummarizedExperiment", "list", "matrix")) readKallistoBootstrap(file, i, j) } \arguments{ \item{files}{character() paths to kallisto \sQuote{abundance.tsv} output files. The assumption is that files are organized in the way implied by kallisto, with each sample in a distinct directory, and the directory containing files abundance.tsv, run_info.json, and perhaps abundance.h5.} \item{json}{character() vector of the same length as \code{files} specifying the location of JSON files produced by kallisto and containing information on the run. The default assumes that json files are in the same directory as the corresponding abundance file.} \item{h5}{character() vector of the same length as \code{files} specifying the location of HDF5 files produced by kallisto and containing bootstrap estimates. The default assumes that HDF5 files are in the same directory as the corresponding abundance file.} \item{what}{character() vector of kallisto per-sample outputs to be input. See KALLISTO_ASSAYS for available values.} \item{as}{character(1) specifying the output format. See \code{Value} for additional detail.} \item{file}{character(1) path to a single HDF5 output file.} \item{i, j}{integer() vector of row (\code{i}) and column (\code{j}) indexes to input.} } \value{ A \code{SummarizedExperiment}, \code{list}, or \code{matrix}, depending on the value of argument \code{as}; by default a \code{SummarizedExperiment}. The \code{as="SummarizedExperiment"} \code{rowData(se)} the length of each transcript; \code{colData(se)} includes summary information on each sample, including the number of targets and bootstraps, the kallisto and index version, the start time and operating system call used to create the file. \code{assays()} contains one or more transcript x sample matrices of parameters estimated by kallisto (see \code{KALLISTO_ASSAYS}). \code{as="list"} return value contains information simillar to \code{SummarizedExperiment} with row, column and assay data as elements of the list without coordination of row and column annotations into an integrated data container. \code{as="matrix"} returns the specified assay as a simple \emph{R} matrix. } \references{ \url{http://pachterlab.github.io/kallisto} software for quantifying transcript abundance. } \author{ Martin Morgan \url{martin.morgan@roswellpark.org} } \examples{ outputs <- system.file(package="SummarizedExperiment", "extdata", "kallisto") files <- dir(outputs, pattern="abundance.tsv", full=TRUE, recursive=TRUE) stopifnot(all(file.exists(files))) ## default: input 'est_counts' (se <- readKallisto(files, as="SummarizedExperiment")) str(readKallisto(files, as="list")) str(readKallisto(files, as="matrix")) ## available assays KALLISTO_ASSAYS ## one or more assay readKallisto(files, what=c("tpm", "eff_length")) ## alternatively: read hdf5 files files <- sub(".tsv", ".h5", files, fixed=TRUE) readKallisto(files) ## input all bootstraps xx <- readKallistoBootstrap(files[1]) ridx <- head(which(rowSums(xx) != 0), 3) cidx <- c(1:5, 96:100) xx[ridx, cidx] ## selective input of rows (transcripts) and/or bootstraps readKallistoBootstrap(files[1], i=c(ridx, rev(ridx)), j=cidx) } \keyword{file} SummarizedExperiment/man/saveHDF5SummarizedExperiment.Rd0000644000175400017540000001264713175715010024504 0ustar00biocbuildbiocbuild\name{saveHDF5SummarizedExperiment} \alias{saveHDF5SummarizedExperiment} \alias{loadHDF5SummarizedExperiment} \title{Save/load a HDF5-based SummarizedExperiment object} \description{ \code{saveHDF5SummarizedExperiment} and \code{loadHDF5SummarizedExperiment} can be used to save/load a HDF5-based \link{SummarizedExperiment} object to/from disk. } \usage{ saveHDF5SummarizedExperiment(x, dir="my_h5_se", replace=FALSE, chunk_dim=NULL, level=NULL, verbose=FALSE) loadHDF5SummarizedExperiment(dir="my_h5_se") } \arguments{ \item{x}{ A \link{SummarizedExperiment} object. } \item{dir}{ The path (as a single string) to the directory where to save the HDF5-based \link{SummarizedExperiment} object or to load it from. When saving, the directory will be created so should not already exist, unless \code{replace} is set to \code{TRUE}. } \item{replace}{ If directory \code{dir} already exists, should it be replaced with a new one? The content of the existing directory will be lost! } \item{chunk_dim, level}{ The dimensions of the chunks and the compression level to use for writting the assay data to disk. Passed to the internal calls to \code{HDF5Array::writeHDF5Array}. See \code{?HDF5Array::\link[HDF5Array]{writeHDF5Array}} for more information. } \item{verbose}{ Set to \code{TRUE} to make the function display progress. } } \details{ These functions use functionalities from the \pkg{rhdf5} and \pkg{HDF5Array} packages internally and so require these packages to be installed. \code{saveHDF5SummarizedExperiment} creates the directory specified thru the \code{dir} argument and then populates it with the HDF5 datasets (one per assay in \code{x}) plus a serialized version of \code{x} that contains pointers to these datasets. This directory provides a self-contained HDF5-based representation of \code{x} that can then be loaded back in R with \code{loadHDF5SummarizedExperiment}. Note that this directory is \emph{relocatable} i.e. it can be moved (or copied) to a different place, on the same or a different computer, before calling \code{loadHDF5SummarizedExperiment} on it. For convenient sharing with collaborators, it is suggested to turn it into a tarball (with Unix command \code{tar}), or zip file, before the transfer. Please keep in mind that \code{saveHDF5SummarizedExperiment} and \code{loadHDF5SummarizedExperiment} don't know how to produce/read tarballs or zip files at the moment, so the process of packaging/extracting the tarball or zip file is entirely the user responsibility. It is typically done from outside R. Finally please note that, depending on the size of the data to write to disk and the performance of the disk, \code{saveHDF5SummarizedExperiment} can take a long time to complete. Use \code{verbose=TRUE} to see its progress. \code{loadHDF5SummarizedExperiment} is generally very fast, even if the assay data is big, because all the assays in the returned object are \link[HDF5Array]{HDF5Array} objects pointing to the on-disk HDF5 datasets located in \code{dir}. \link[HDF5Array]{HDF5Array} objects are typically light-weight in memory. } \value{ \code{saveHDF5SummarizedExperiment} returns an invisible \link{SummarizedExperiment} object where all the assays are \link[HDF5Array]{HDF5Array} objects pointing to the HDF5 datasets saved in \code{dir}. It's in fact the same obect as the object that would be returned by calling \code{loadHDF5SummarizedExperiment} on \code{dir}. } \author{Hervé Pagès} \seealso{ \itemize{ \item \link{SummarizedExperiment} and \link{RangedSummarizedExperiment} objects. \item \link[HDF5Array]{HDF5Array} objects in the \pkg{HDF5Array} package. \item The \code{\link[HDF5Array]{writeHDF5Array}} function in the \pkg{HDF5Array} package, which \code{saveHDF5SummarizedExperiment} uses internally to write the assay data to disk. } } \examples{ nrows <- 200; ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) se0 <- SummarizedExperiment(assays=SimpleList(counts=counts), colData=colData) se0 ## Save 'se0' as an HDF5-based SummarizedExperiment object: dir <- sub("file", "h5_se0_", tempfile()) h5_se0 <- saveHDF5SummarizedExperiment(se0, dir) h5_se0 assay(h5_se0, withDimnames=FALSE) # HDF5Matrix object h5_se0b <- loadHDF5SummarizedExperiment(dir) h5_se0b assay(h5_se0b, withDimnames=FALSE) # HDF5Matrix object ## Sanity checks: stopifnot(is(assay(h5_se0, withDimnames=FALSE), "HDF5Matrix")) stopifnot(all(DelayedArray(assay(se0)) == assay(h5_se0))) stopifnot(is(assay(h5_se0b, withDimnames=FALSE), "HDF5Matrix")) stopifnot(all(DelayedArray(assay(se0)) == assay(h5_se0b))) ## --------------------------------------------------------------------- ## More sanity checks ## --------------------------------------------------------------------- ## Make a copy of directory 'dir': somedir <- sub("file", "somedir", tempfile()) dir.create(somedir) file.copy(dir, somedir, recursive=TRUE) dir2 <- list.files(somedir, full.names=TRUE) ## 'dir2' contains a copy of 'dir'. Call loadHDF5SummarizedExperiment() ## on it. h5_se0c <- loadHDF5SummarizedExperiment(dir2) stopifnot(is(assay(h5_se0c, withDimnames=FALSE), "HDF5Matrix")) stopifnot(all(DelayedArray(assay(se0)) == assay(h5_se0c))) } SummarizedExperiment/tests/0000755000175400017540000000000013175715010017123 5ustar00biocbuildbiocbuildSummarizedExperiment/tests/run_unitTests.R0000644000175400017540000000016613175715010022137 0ustar00biocbuildbiocbuildrequire("SummarizedExperiment") || stop("unable to load SummarizedExperiment package") SummarizedExperiment:::.test() SummarizedExperiment/vignettes/0000755000175400017540000000000013175741302017774 5ustar00biocbuildbiocbuildSummarizedExperiment/vignettes/SummarizedExperiment.Rmd0000644000175400017540000003112513175715010024620 0ustar00biocbuildbiocbuild--- title: "_SummarizedExperiment_ for Coordinating Experimental Assays, Samples, and Regions of Interest" author: "Martin Morgan, Valerie Obenchain, Jim Hester, Hervé Pagès" date: "Revised: 22 June, 2016" output: BiocStyle::html_document: toc: true vignette: > %\VignetteIndexEntry{SummarizedExperiment} %\VignetteEngine{knitr::rmarkdown} \usepackage[utf8]{inputenc} --- ```{r style, echo=FALSE, results='asis'} BiocStyle::markdown() ``` # Introduction The `SummarizedExperiment` class is used to store rectangular matrices of experimental results, which are commonly produced by sequencing and microarray experiments. Each object stores observations of one or more samples, along with additional meta-data describing both the observations (features) and samples (phenotypes). A key aspect of the `SummarizedExperiment` class is the coordination of the meta-data and assays when subsetting. For example, if you want to exclude a given sample you can do for both the meta-data and assay in one operation, which ensures the meta-data and observed data will remain in sync. Improperly accounting for meta and observational data has resulted in a number of incorrect results and retractions so this is a very desirable property. `SummarizedExperiment` is in many ways similar to the historical `ExpressionSet`, the main distinction being that `SummarizedExperiment` is more flexible in it's row information, allowing both `GRanges` based as well as those described by arbitrary `DataFrame`s. This makes it ideally suited to a variety of experiments, particularly sequencing based experiments such as RNA-Seq and ChIp-Seq. # Anatomy of a `SummarizedExperiment` The _SummarizedExperiment_ package contains two classes: `SummarizedExperiment` and `RangedSummarizedExperiment`. `SummarizedExperiment` is a matrix-like container where rows represent features of interest (e.g. genes, transcripts, exons, etc.) and columns represent samples. The objects contain one or more assays, each represented by a matrix-like object of numeric or other mode. The rows of a `SummarizedExperiment` object represent features of interest. Information about these features is stored in a `DataFrame` object, accessible using the function `rowData()`. Each row of the `DataFrame` provides information on the feature in the corresponding row of the `SummarizedExperiment` object. Columns of the DataFrame represent different attributes of the features of interest, e.g., gene or transcript IDs, etc. `RangedSummarizedExperiment` is the child of the `SummarizedExperiment` class which means that all the methods on `SummarizedExperiment` also work on a `RangedSummarizedExperiment`. The fundamental difference between the two classes is that the rows of a `RangedSummarizedExperiment` object represent genomic ranges of interest instead of a `DataFrame` of features. The `RangedSummarizedExperiment` ranges are described by a `GRanges` or a `GRangesList` object, accessible using the `rowRanges()` function. The following graphic displays the class geometry and highlights the vertical (column) and horizontal (row) relationships. ```{r include = FALSE} # download current version of SE diagram #download.file("https://docs.google.com/feeds/download/drawings/Export?id=18OcDb80FpvSGRYnFl-8vUqwNNLaNHrG1I9SWKHCselo&exportFormat=svg", "SE.svg") download.file("https://docs.google.com/feeds/download/drawings/Export?id=1kiC8Qlo1mhSnLDqkGiRNPSo6GWn3C2duBszCFbJCB-g&exportFormat=svg", "SE.svg") ``` ![Summarized Experiment](SE.svg) ## Assays The `airway` package contains an example dataset from an RNA-Seq experiment of read counts per gene for airway smooth muscles. These data are stored in a `RangedSummarizedExperiment` object which contains 8 different experimental and assays 64,102 gene transcripts. ```{r, echo=FALSE} suppressPackageStartupMessages(library(SummarizedExperiment)) suppressPackageStartupMessages(data(airway, package="airway")) ``` ```{r} library(SummarizedExperiment) data(airway, package="airway") se <- airway se ``` To retrieve the experiment data from a `SummarizedExperiment` object one can use the `assays()` accessor. An object can have multiple assay datasets each of which can be accessed using the `$` operator. The `airway` dataset contains only one assay (`counts`). Here each row represents a gene transcript and each column one of the samples. ```{r assays, eval = FALSE} assays(se)$counts ``` ```{r assays_table, echo = FALSE} knitr::kable(assays(se)$counts[1:10,]) ``` ## 'Row' (regions-of-interest) data The `rowRanges()` accessor is used to view the range information for a `RangedSummarizedExperiment`. (Note if this were the parent `SummarizedExperiment` class we'd use `rowData()`). The data are stored in a `GRangesList` object, where each list element corresponds to one gene transcript and the ranges in each `GRanges` correspond to the exons in the transcript. ```{r rowRanges} rowRanges(se) ``` ## 'Column' (sample) data Sample meta-data describing the samples can be accessed using `colData()`, and is a `DataFrame` that can store any number of descriptive columns for each sample row. ```{r colData} colData(se) ``` This sample metadata can be accessed using the `$` accessor which makes it easy to subset the entire object by a given phenotype. ```{r columnSubset} # subset for only those samples treated with dexamethasone se[, se$dex == "trt"] ``` ## Experiment-wide metadata Meta-data describing the experimental methods and publication references can be accessed using `metadata()`. ```{r metadata} metadata(se) ``` Note that `metadata()` is just a simple list, so it is appropriate for _any_ experiment wide metadata the user wishes to save, such as storing model formulas. ```{r metadata-formula} metadata(se)$formula <- counts ~ dex + albut metadata(se) ``` # Constructing a `SummarizedExperiment` Often, `SummarizedExperiment` or `RangedSummarizedExperiment` objects are returned by functions written by other packages. However it is possible to create them by hand with a call to the `SummarizedExperiment()` constructor. Constructing a `RangedSummarizedExperiment` with a `GRanges` as the _rowRanges_ argument: ```{r constructRSE} nrows <- 200 ncols <- 6 counts <- matrix(runif(nrows * ncols, 1, 1e4), nrows) rowRanges <- GRanges(rep(c("chr1", "chr2"), c(50, 150)), IRanges(floor(runif(200, 1e5, 1e6)), width=100), strand=sample(c("+", "-"), 200, TRUE), feature_id=sprintf("ID%03d", 1:200)) colData <- DataFrame(Treatment=rep(c("ChIP", "Input"), 3), row.names=LETTERS[1:6]) SummarizedExperiment(assays=list(counts=counts), rowRanges=rowRanges, colData=colData) ``` A `SummarizedExperiment` can be constructed with or without supplying a `DataFrame` for the _rowData_ argument: ```{r constructSE} SummarizedExperiment(assays=list(counts=counts), colData=colData) ``` # Common operations on `SummarizedExperiment` ## Subsetting - `[` Performs two dimensional subsetting, just like subsetting a matrix or data frame. ```{r 2d} # subset the first five transcripts and first three samples se[1:5, 1:3] ``` - `$` operates on `colData()` columns, for easy sample extraction. ```{r colDataExtraction} se[, se$cell == "N61311"] ``` ## Getters and setters - `rowRanges()` / (`rowData()`), `colData()`, `metadata()` ```{r getSet} counts <- matrix(1:15, 5, 3, dimnames=list(LETTERS[1:5], LETTERS[1:3])) dates <- SummarizedExperiment(assays=list(counts=counts), rowData=DataFrame(month=month.name[1:5], day=1:5)) # Subset all January assays dates[rowData(dates)$month == "January", ] ``` - `assay()` versus `assays()` There are two accessor functions for extracting the assay data from a `SummarizedExperiment` object. `assays()` operates on the entire list of assay data as a whole, while `assay()` operates on only one assay at a time. `assay(x, i)` is simply a convenience function which is equivalent to `assays(x)[[i]]`. ```{r assay_assays} assays(se) assays(se)[[1]][1:5, 1:5] # assay defaults to the first assay if no i is given assay(se)[1:5, 1:5] assay(se, 1)[1:5, 1:5] ``` ## Range-based operations - `subsetByOverlaps()` `SummarizedExperiment` objects support all of the `findOverlaps()` methods and associated functions. This includes `subsetByOverlaps()`, which makes it easy to subset a `SummarizedExperiment` object by an interval. ```{r overlap} # Subset for only rows which are in the interval 100,000 to 110,000 of # chromosome 1 roi <- GRanges(seqnames="1", ranges=100000:1100000) subsetByOverlaps(se, roi) ``` # Advanced: Extending `RangedSummarizedExperiment` For representing and manipulating data in their own package, Bioconductor developers are encouraged to re-use existing classes defined in other packages like the `RangedSummarizedExperiment` or `GRanges` containers defined in the `SummarizedExperiment` or `GenomicRanges` infrastructure packages, respectively. Many Bioconductor packages are designed around these basic containers, that is, they define functions that take and/or return a `RangedSummarizedExperiment` or `GRanges` object. For example the `csaw` package defines various functions that operate on `RangedSummarizedExperiment` objects, which are used to represent the number of ChIP-seq reads from each BAM file overlapping pre-specified regions. However, sometimes re-using the `RangedSummarizedExperiment` class as-is does not satisfy the needs of the package and the developer makes the choice to extend the class in order to accomodate the special needs of the package and/or the specificities of the data that it deals with. For example the `DESeq2` package defines the `DESeqDataSet` class which extends `RangedSummarizedExperiment` to add the `design` and `dispersionFunction` slots to it. The following subsections describe in a nutshell how the developer would typically proceed for extending `RangedSummarizedExperiment` in his/her own package. Some familiarity with the S4 class system is required. Readers not familiar with the S4 class system are encouraged to consult the vignette `A quick overview of the S4 class system` located in the `S4Vectors` package for the basics of implementing and extending S4 classes. The approach described below allows the developer to extend `RangedSummarizedExperiment` it in a way that remains agnostic of its internals. Keeping this separation between the responsibilities of the owners of the parent and child classes facilitate maintenance in the long run. In particular, the implementation of the child class won't be affected by changes in the internals of the parent class. ## Depend on, and import, the `SummarizedExperiment` package Add `SummarizedExperiment` to the Depends field of the DESCRIPTION file of the package and the `import(SummarizedExperiment)` directive to its NAMESPACE file. ## Define and export the `RangedSummarizedExperiment` subclass Define the subclass with something like: ```{r rseSubclass} setClass("MyRSESubclass", contains="RangedSummarizedExperiment", representation=representation( slot1="integer", slot2="function" ## ... maybe more ... ) ) ``` Export it by adding the `exportClasses(MyRSESubclass)` directive to the NAMESPACE file. ## Construct `MyRSESubclass` instances When calling `new()` for constructing a `MyRSESubclass` instance, specify only the MyRSESubclass-specific slots: `new("MyRSESubclass", rse, slot1=value1, slot2=value2)`, where `rse` is a `RangedSummarizedExperiment` object. Providing a `MyRSESubclass` constructor function (named as the class itself) is recommended. ## Define a validity method The validity method for `MyRSESubclass` only needs to take care of what's new in `MyRSESubclass` with respect to `RangedSummarizedExperiment`, that is, of the aspects of `MyRSESubclass` objects that are not already covered by the validity method for `RangedSummarizedExperiment` objects. This is because calling `validObject()` on a `MyRSESubclass` object automatically validates it as a `RangedSummarizedExperiment` object first and then calls the validity method for `MyRSESubclass` objects. In other words, validation works incrementally starting from the root of the class hierarchy and going in the parent-to-child direction. ## Use the `RangedSummarizedExperiment` accessors on `MyRSESubclass` objects Like any user of `RangedSummarizedExperiment` objects, the developer of `MyRSESubclass` should always use the `RangedSummarizedExperiment` accessors to access the `RangedSummarizedExperiment`-specific parts of his/her `MyRSESubclass` objects. ## Use `callNextMethod` In case some of the methods defined for `RangedSummarizedExperiment` objects need to be overwritten, the new methods should call `callNextMethod` internally.