fitdistrplus/0000755000176200001440000000000013422076303013006 5ustar liggesusersfitdistrplus/inst/0000755000176200001440000000000013375226222013767 5ustar liggesusersfitdistrplus/inst/CITATION0000644000176200001440000000161512772503244015131 0ustar liggesuserscitHeader("To cite fitdistrplus in publications use:") citEntry(entry = "Article", title = "{fitdistrplus}: An {R} Package for Fitting Distributions", author = personList(as.person("Marie Laure Delignette-Muller"), as.person("Christophe Dutang")), journal = "Journal of Statistical Software", year = "2015", volume = "64", number = "4", pages = "1--34", url = "http://www.jstatsoft.org/v64/i04/", textVersion = paste("Marie Laure Delignette-Muller, Christophe Dutang (2015).", "fitdistrplus: An R Package for Fitting Distributions.", "Journal of Statistical Software, 64(4), 1-34.", "URL http://www.jstatsoft.org/v64/i04/.") ) citFooter("Please cite both the package and R when using them for data analysis.", "See also", sQuote("citation()"), "for citing R.") fitdistrplus/inst/NEWS0000644000176200001440000003022213375226222014465 0ustar liggesusers=== fitdistrplus : Help to fit of a parametric distribution === Version 1.0-12 ============= BUG FIXES - bug fixed in qmedist() and fitdistcens() which raised an error in checkparamlist(). - bug fixed in testdpqfun() which assumes the first argument of d,p,q,r functions are exactly the same as in base R. Version 1.0-11 ============= NEW FEATURES - update the FAQ with beta(a,a). - improve graphics for discrete distributions in denscomp(). - improve automatic naming of legends in xxxcomp(). - harmonize outputs in mledist(), qmedist(), mmedist(), mgedist(), fitdist() and fitdistcens(). - automatic test of d, p, q functions in fitdist() and raise warnings. - improve test for starting and fixed values. - add new default starting values for distributions in actuar. - change of the default CDF plot for censored data, using the Wang NPMLE algorithm provided in the package npsurv (in plotdistcens() and cdfcompcens()) - add of two new goodness-of-fit plots (QQ-plot and PP-plot) for censored data (cf. plotdistcens, qqcompcens and ppcompcens). - add of a part dedicated to censored datain the FAQ vignette. - homogeneization of xlim and ylim default definition in plotdistcens. - Removing of the name of the first argument in calls to dpq functions in order to make the package compatible with distributions defined with a non classical name for their first argument (resp. x, q, p for d, p, q functions). - add the possibility to change the title of the CDF plot in plotdistcens() using the argument main. - support the use of ggplot2 for cdfcompcens, qqcompcens, ppcompcens. BUG FIXES - bug fixed concerning the use of gofstat with a chi squared df <=0 (error message blocking the other functions) - bug fix in mledist() when bounds were set (so not NULL) for censored MLE - enable a correct use of non-equidistant breaks in denscomp for the histogram when plotstyle = "ggplot", and prohibit the use of non-equidistant breaks with probability = FALSE (adding a stop in this case). Version 1.0-9 ============= - update the FAQ with linear inequality constraints. Version 1.0-8 ============= NEW FEATURES - support the use of ggplot2 for cdfcomp, denscomp, qqcomp, ppcomp. BUG FIXES - correct legend for qqcomp and ppomp on large data. - correct weights in mmedist. - correct the name Akaike in gofstat. - correct the use of trueval in plot.bootdist. - correct the vignette on truncate (inflated) distributions. Version 1.0-7 ============= NEW FEATURES - keep the JSS vignette as a pdf. - start the FAQ vignette and add datasets (?dataFAQ) for it. - provide likelihood plot/surface/curve: llplot, llcurve, llsurface. - provide parallelization of bootstrap in bootdist and bootdistcens. - provide graphic of (e)cdf with bootstraped confidence interval/area: CIcdfplot. - allow the use of constrOptim() in mledist, mmedist, mgedist, qmedist functions. - add a possible pre-fitting procedure: prefit. BUG FIXES - add invisible() for all graphical functions. - bug fixed concerning the use of weights on censored data. Version 1.0-6 ============= BUG FIXES - automatic definition of starting values for distributions "llogis" and "invweibull" is now working. Version 1.0-5 ============= NEW FEATURES - update starting/fixing values in mledist, mmedist, mgedist, qmedist functions. - update graphics for bootstrap procedure. - add argument do.points in cdfcomp. - add argument weights in mledist, qmedist, mmedist, fitdist, fitdistcens. - add argument keepdata in fitdist, fitdistcens. - suppress warnings/errors in fitdist(cens), bootdist(cens). BUG FIXES - defensive programming in plotdist, cdfcomp,... - simplify plotting curves in cdfcomp where seq(xmin, xmax, by=1) was used. Version 1.0-4 ============= - release for the JSS publication. Version 1.0-3 ============= NEW FEATURES - new generic functions for fitdist(cens): loglik, vcov and coef. - vignette updated to the version of a paper accepted by the Journal of Statistical Software. - add of an argument discrete in fitdist in order to be able to take into account non classical discrete distributions while plotting the fit with plot.fitdist or cdfcomp and while calculating goodness-of-fit statistics with gofstat (add of an example : fit of a zero inflate Poisson distribution). - add of an S3 class for descdist and a print method. BUG FIXES - fitdist can handle non invertible Hessian matrices. Version 1.0-2 ============= NEW FEATURES - plotdist can plot empirical density as an histogram, a density plot or both superimposed. - a strong warning was added to the documentation of function descdist about the problematic high variance of skewness and kurtosis. BUG FIXES - bug fixed in bootdistcens : argument fix.arg is now correctly passed to mle. Version 1.0-1 ============= NEW FEATURES - gofstat can handle multiple 'fitdist' objects. - plotdist for discrete data is slightly enhanced. Version 1.0-0 ============= NEW FEATURES - update cdfcomp and add denscomp, ppcomp and qqcomp functions. - add of an argument Turnbull.confint to functions plotdistcens and cdfcompcens in order to draw confidence intervals on the empirical distribution only if requested. - ppoints now used in "fitdist" for QQ plot, PP plot and cdf plot for continuous data (was used only for QQ plot in previous versions) to enable Blom type plotting position (using by default Hazen plotting position than can be chanfge using arguments use.ppoints and a.ppoints) - many changes in the examples given in the reference manual. - the vignette was removed, to be transformed in a paper that we will soon submit to a journal. - add of four data sets : fluazinam, salinity, danishuni and danishmulti. - add of functions to calculate quantiles of the fitted distribution, with 95 percent CI calculated by bootstrap : quantile generic function is available both for "fitdist" and "bootdist" objects and quantile generic function is available both for "fitdistcens" and "bootdistcens" objects. BUG FIXES - correction the formula for the CvM test for Weibull distribution. - elimination of CvM and AD tests for normal, lognormal and logistic distributions : formulas previously used (given by Stephens 1986) do not use exactly MLE estimates and thus results were only approximates. - make arguments xlim and ylim functional in cdfcompcens. - bug fix in the closed formula in mmedist for lognormal distributions. Version 0.3-4 ============= NEW FEATURES - posibility to fix xlegend to a keyword (e.g. "bottomright") in "cdfcomp" and "cdfcompdens". - improvement of the new vignette. BUG FIXES - correction of the NAMESPACE file in order to enable the correct print of a summary of a fitdistcens object (with the correlation matrix, the loglikelihood and AIC and BIC statistics). Version 0.3-3 ============= NEW FEATURES - a new function ("cdfcompcens") to plot cumulative distributions corresponding to various fits using a same censored data set. - add an example with scaling problem in man pages. Version 0.3-2 ============= NEW FEATURES - new plot of the empirical cdf curve in plotdistcens, using the Turnbull algorithm by a call to function survfit{survival}. - new arguments to function "cdfcomp" : verticals, horizontals and xlim. Version 0.3-1 ============= NEW FEATURES - add of a draft of a new version of the vignette. Version 0.3-0 ============= NEW FEATURES - a new function ("cdfcomp") to plot cumulative distributions corresponding to various fits using a same non censored data set. - add of two data sets : "endosulfan" and "toxocara". Version 0.2-2 ============= BUG FIXES - elimination of NON-ASCII characters in the vignette. Version 0.2-1 ============= NEW FEATURES - a new fitting method was implemented for continuous distributions : the maximum goodness-of-fit estimation (function "mgedist") (for the moment only available for non censored data). Version 0.1-5 ============= NEW FEATURES - a new goodness-of-fit statistic was added in gofstat, with corresponding test : the Cramer-von Mises distance. - a new fitting method has been implemented : the quantile matching estimation (function "qmedist"). For the moment, only available for non censored data. - the moment matching estimation has been extended (in function mmedist) to enable numerical matching when closed formula are not available. BUG FIXES - correction of a bug inserted while adding the argument "fix.arg" which prevent the print of the results of goodness-of-fit tests. Version 0.1-4 ============= NEW FEATURES - a component named dots added to the list returned by fitdist and fitdistcens in order to pass optional arguments for the control of optimization in mledist to bootdist and bootdistcens. bootdist and bootdistcens changed to take into account these optional arguments if they are defined in the call to fitdist or fitdistcens. - an argument added to fitdist, fitdistcens and mledist, named fix.arg, and giving the possibility to fix some of the distribution parameters while maximizing the likelihood. Functions bootdist, bootdistcens and gofstat were also changed in order to take this new argument into account. - a new data file of bacterial contamination censored data extracted from Busschaert et al. 2000 and examples corresponding to analysis of this dataset. BUG FIXES - correction of a bug in the print and the plot of bootstraped samples using bootdist or bootdistcens when there was only one parameter estimated by maximum likelihood. Version 0.1-3 ============= NEW FEATURES - new data file "groundbeef" (groundbeef.rda and groundbeef.Rd) and new use of this dataset in some examples. - new function gofstat. Goodness-of-fit statistics are no more computed by fitdist but may computed and printed by the use of the function gofstat. In this new function, the whole results computed are not printed : results of tests are printed only if the argument print.test==TRUE and for continuous distributions only Anderson-Darling and Kolomogorov-Smirnov statistics are printed by default (but complete results are returned by gofstat). - modifications in descdist : three arguments were added in descdist 1/ method, to choose between unbiased estimations of standard deviation, skewness and kurtosis (default choice) and sample values. 2/ obs.col to choose the color used to plot the observed point on the graph. 3/ boot.col to choose the color used to plot the bootstrap sample of points on the graph. - modifications in plotfit : minor changes were performed in order to facilitate the use of the argument ... to personnalize the plots (see examples in plotdist.Rd) - modication of the vignette BUG FIXES - correction of a bug in plotdist due to the redefinition in the previous version of the parameter "ylim" for the plot of a histogram with theoretical density function (there was a problem with infinite values of theoretical density function). Version 0.1-2 ============= NEW FEATURES - deletion of mledistcens and modification of mledist in order to maximize likelihood for both censored and non censored data. - possibility to choose the optimization method used for maximum likelihood estimation (MLE) of distribution parameters using the new argument "optim.method" of mledist. - possibility to specify contraints on distribution parameters using the new arguments "lower" and "upper" of mledist. - possibility to use a custom optimization function for MLE using the new argument "custom.optim". - moment matching estimation is no longer done with argument method set to "mom" but set to "mme" in fitdist. - renaming of momdist in mmedist. - calculation of AIC and BIC criterion after maximum likelihood estimation of distribution parameters - change of the default number of iterations from 999 to 1001 for bootstrap in order to avoid interpolation using the quantile function - use of the argument "log" and (resp. "log.p") of density (resp. distribution) when available to compute the loglikelihood. BUG FIXES - omitting the name of the first argument in calls to the density function during maximization of the likelihood in order to enable the use of a density function defined with a first parameter (the vector of quantiles) with a name differing from "x" (classical name for density distributions defined in R), such as the density function dexGAUS from the package gamlss.dist. Version 0.1-1 ============= - Initial release. fitdistrplus/inst/doc/0000755000176200001440000000000013422065107014530 5ustar liggesusersfitdistrplus/inst/doc/FAQ.Rmd0000644000176200001440000015630713342003075015614 0ustar liggesusers--- title: Frequently Asked Questions author: Marie Laure Delignette Muller, Christophe Dutang date: '`r Sys.Date()`' output: html_vignette: toc: yes number_sections: yes vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Frequently Asked Questions} %!\VignetteEncoding{UTF-8} \usepackage[utf8]{inputenc} --- ```{r setup, echo=FALSE, message=FALSE, warning=FALSE} require(fitdistrplus) set.seed(1234) options(digits = 3) ``` # Questions regarding distributions ## How do I know the root name of a distribution? The root name of a probability distribution is the `name` which is used the `d`, `p`, `q`, `r` functions. For base R distributions, the root names are given in R-intro : https://cran.r-project.org/doc/manuals/R-intro.html#Probability-distributions. For example, you must use `"pois"` for the Poisson distribution and **not** `"poisson"`. ## How do I find "non standard" distributions? For non-standard distributions, you can either find a package implementing them or define by yourself. A comprehensive list of non-standard distributions is given in the Distributions task view https://CRAN.R-project.org/view=Distributions. Here are some two examples of user-defined distributions. A third example (shifted exponential) is given in FAQ 3.5.4. * The Gumbel distribution ```{r, eval=FALSE} dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) qgumbel <- function(p, a, b) a-b*log(-log(p)) data(groundbeef) fitgumbel <- fitdist(groundbeef$serving, "gumbel", start=list(a=10, b=10)) ``` * The zero-modified geometric distribution ```{r, eval=FALSE} dzmgeom <- function(x, p1, p2) p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) pzmgeom <- function(q, p1, p2) p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2) rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } x2 <- rzmgeom(1000, 1/2, 1/10) fitdist(x2, "zmgeom", start=list(p1=1/2, p2=1/2)) ``` ## How do I set (or find) initial values for non standard distributions? As documented, we provide initial values for the following distributions: `"norm"`, `"lnorm"`, `"exp"`, `"pois"`, `"cauchy"`, `"gamma`", `"logis"`, `"nbinom"`, `"geom"`, `"beta"`, `"weibull"` from the `stats` package; `"invgamma"`, `"llogis"`, `"invweibull"`, `"pareto1"`, `"pareto"`, `"lgamma"`, `"trgamma"`, `"invtrgamma"` from the `actuar` package. Look first at statistics and probability books such as * different volumes of N. L. Johnson, S. Kotz and N. Balakrishnan books, e.g. **Continuous Univariate Distributions, Vol. 1**, * **Thesaurus of univariate discrete probability distributions** by G. Wimmer and G. Altmann. * **Statistical Distributions** by M. Evans, N. Hastings, B. Peacock. * **Distributional Analysis with L-moment Statistics using the R Environment for Statistical Computing** by W. Asquith. If not available, find initial values by equalling theoretical and empirical quartiles. The graphical function `plotdist()` and `plotdistcens()` can also be used to assess the suitability of starting values : by an iterative manual process you can move parameter values so as to obtain a distribution that roughly fits the data and take these parameter values as starting values for the real fit. You may also consider the `prefit()` function to find initial values especially in case where parameters are constrained. ## Is it possible to fit a distribution with at least 3 parameters? Yes, an example with the Burr distribution is detailed in the JSS paper. We reproduce it very quickly here. ```{r, message=FALSE} data("endosulfan") library("actuar") fendo.B <- fitdist(endosulfan$ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) summary(fendo.B) ``` ## Why there are differences between MLE and MME for the lognormal distribution? We recall that the lognormal distribution function is given by $$ F_X(x) = \Phi\left(\frac{\log(x)-\mu}{\sigma} \right), $$ where $\Phi$ denotes the distribution function of the standard normal distribution. We know that $E(X) = \exp\left( \mu+\frac{1}{2} \sigma^2 \right)$ and $Var(X) = \exp\left( 2\mu+\sigma^2\right) (e^{\sigma^2} -1)$. The MME is obtained by inverting the previous formulas, whereas the MLE has the following explicit solution $$ \hat\mu_{MLE} = \frac{1}{n}\sum_{i=1}^n \log(x_i),~~ \hat\sigma^2_{MLE} = \frac{1}{n}\sum_{i=1}^n (\log(x_i) - \hat\mu_{MLE})^2. $$ Let us fit a sample by MLE and MME. The fit looks particularly good in both cases. ```{r, fig.height=3, fig.width=6} x3 <- rlnorm(1000) f1 <- fitdist(x3, "lnorm", method="mle") f2 <- fitdist(x3, "lnorm", method="mme") par(mfrow=1:2) cdfcomp(list(f1, f2), do.points=FALSE, xlogscale = TRUE, main = "CDF plot") denscomp(list(f1, f2), demp=TRUE, main = "Density plot") ``` Let us compare the theoretical moments (mean and variance) given the fitted values ($\hat\mu,\hat\sigma$), that is $$ E(X) = \exp\left( \hat\mu+\frac{1}{2} \hat\sigma^2 \right), Var(X) = \exp\left( 2\hat\mu+\hat\sigma^2\right) (e^{\hat\sigma^2} -1). $$ ```{r} c("E(X) by MME"=as.numeric(exp(f2$estimate["meanlog"]+f2$estimate["sdlog"]^2/2)), "E(X) by MLE"=as.numeric(exp(f1$estimate["meanlog"]+f1$estimate["sdlog"]^2/2)), "empirical"=mean(x3)) c("Var(X) by MME"=as.numeric(exp(2*f2$estimate["meanlog"]+f2$estimate["sdlog"]^2)*(exp(f2$estimate["sdlog"]^2)-1)), "Var(X) by MLE"=as.numeric(exp(2*f1$estimate["meanlog"]+f1$estimate["sdlog"]^2)*(exp(f1$estimate["sdlog"]^2)-1)), "empirical"=var(x3)) ``` From a MLE point of view, a lognormal sample $x_1,\dots,x_n$ is equivalent to handle a normal sample $\log(x_1),\dots,\log(x_n)$. However, it is well know by the Jensen inequality that $E(X) = E(\exp(\log(X))) \geq \exp(E(\log(X)))$ implying the MME estimates provides better moment estimates than with MLE. ## Can I fit a distribution with positive support when data contains negative values? The answer is no: you cannot fit a distribution with positive support (say gamma distribution) when data contains negative values. ```{r} set.seed(1234) x <- rnorm(100, mean = 1, sd = 0.5) (try(fitdist(x, "exp"))) ``` It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove negative values (not recommended) or to shift the data. ```{r} fitdist(x[x >= 0], "exp") fitdist(x - min(x), "exp") ``` ## Can I fit a finite-support distribution when data is outside that support? The answer is no: you cannot fit a distribution with finite-support (say beta distribution) when data is outside $[0,1]$. ```{r} set.seed(1234) x <- rnorm(100, mean = 0.5, sd = 0.25) (try(fitdist(x, "beta"))) ``` It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove impossible values (not recommended) or to shift/scale the data. ```{r} fitdist(x[x > 0 & x < 1], "beta") fitdist((x - min(x)*1.01) / (max(x) * 1.01 - min(x) * 1.01), "beta") ``` ## Can I fit truncated distributions? The answer is yes: but the fitting procedure must be carried out carefully. Let $X$ be the original untruncated random variable. The truncated variable is the conditionnal random variable $Y = X ~\vert~ l< X = low) * (x <= upp) } ptexp <- function(q, rate, low, upp) { PU <- pexp(upp, rate=rate) PL <- pexp(low, rate=rate) (pexp(q, rate)-PL) / (PU-PL) * (q >= low) * (q <= upp) + 1 * (q > upp) } n <- 200 x <- rexp(n); x <- x[x > .5 & x < 3] f1 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x))) f2 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=.5, upp=3)) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, xlim=c(0, 3.5)) ``` ## Can I fit truncated inflated distributions? The answer is yes: but the fitting procedure must be carried out carefully. Let $X$ be the original untruncated random variable. The truncated variable is $Y = \max(\min(X, u), l)$ with $ly>l} + 1_{y>u}$. There is no density (w.r.t. the Lebesgues measure) since there are two probability masses $P(Y=l)= P(X\leq l)>0$ and $P(Y=u)=P(X>u)>0$. However, the density function with respect to the measure $m(x)= \delta_l(x)+\delta_u(x)+\lambda(x)$ is $$ f_Y(y) = \left\{\begin{array}{ll} F_X(l) & \text{if } y=l \\ f_X(y) & \text{if } l\min_i y_i$ or $u<\max_i y_i$ and increasing with respect to $l$ in $]-\infty, \min_i y_i]$ and decreasing with respect to $u$ in $[\max_i y_i,+\infty[$. So the maximum of $L$ is reached at $l=\min_i y_i$ and $u=\max_i y_i$. The MLE of $\theta$ is then obtained by maximizing the log-likelihood $\log(L(l, \theta, u))$ with $u=\max_i Y_i$ and $l=\min_i Y_i$. Let us illustrate truncated distribution with the truncated exponential distribution. The log-likelihood is particularly bad-shaped. ```{r, message=FALSE, fig.height=4, fig.width=8} dtiexp <- function(x, rate, low, upp) { PU <- pexp(upp, rate=rate, lower.tail = FALSE) PL <- pexp(low, rate=rate) dexp(x, rate) * (x >= low) * (x <= upp) + PL * (x == low) + PU * (x == upp) } ptiexp <- function(q, rate, low, upp) pexp(q, rate) * (q >= low) * (q <= upp) + 1 * (q > upp) n <- 100; x <- pmax(pmin(rexp(n), 3), .5) # the loglikelihood has a discontinous point at the solution par(mar=c(4,4,2,1), mfrow=1:2) llcurve(x, "tiexp", plot.arg="low", fix.arg = list(rate=2, upp=5), min.arg=0, max.arg=.5, lseq=200) llcurve(x, "tiexp", plot.arg="upp", fix.arg = list(rate=2, low=0), min.arg=3, max.arg=4, lseq=200) ``` The first method directly maximizes the log-likelihood $L(l, \theta, u)$; the second method maximizes the log-likelihood $L(\theta)$ assuming that $u=\hat u$ and $l=\hat l$ are known. Inside $[0.5,3]$, the CDF are correctly estimated in both methods but the first method does not succeed to estimate the true value of the bounds $l,u$. ```{r, fig.height=4, fig.width=6} (f1 <- fitdist(x, "tiexp", method="mle", start=list(rate=3, low=0, upp=20))) (f2 <- fitdist(x, "tiexp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x)))) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, addlegend=FALSE, xlim=c(0, 3.5)) curve(ptiexp(x, 1, .5, 3), add=TRUE, col="blue", lty=3) legend("bottomright", lty=1:3, col=c("red", "green", "blue", "black"), leg=c("full MLE", "MLE fixed arg", "true CDF", "emp. CDF")) ``` ## Can I fit a beta distribution with the same shape parameter? Yes, you can wrap the density function of the beta distribution so that there is a only one shape parameter. Here is an example of a concave density. ```{r} x <- rbeta(1000, 3, 3) dbeta2 <- function(x, shape, ...) dbeta(x, shape, shape, ...) pbeta2 <- function(q, shape, ...) pbeta(q, shape, shape, ...) fitdist(x, "beta2", start=list(shape=1/2)) ``` Another example with a U-shaped density. ```{r} x <- rbeta(1000, .3, .3) fitdist(x, "beta2", start=list(shape=1/2), optim.method="L-BFGS-B", lower=1e-2) ``` # Questions regarding goodness-of-fit tests and statistics ## Where can we find the results of goodness-of-fit tests ? Results of goodness-of-fit tests are not printed but are given in the object returned by `gofstat()` and you can have access to them as described in the example below. Nevertheless, p-values are not given for every test. For Anderson-Darling (ad), Cramer von Mises (cvm) and Kolomogorov (ks), only the decision (rejection of H0 or not) is given, when available (see FAQ 2.3 for more details). ```{r, fig.height=3, fig.width=6} set.seed(1234) x <- rgamma(n = 100, shape = 2, scale = 1) # fit of the good distribution fgamma <- fitdist(x, "gamma") # fit of a bad distribution fexp <- fitdist(x, "exp") g <- gofstat(list(fgamma, fexp), fitnames = c("gamma", "exp")) denscomp(list(fgamma, fexp), legendtext = c("gamma", "exp")) # results of the tests ## chi square test (with corresponding table with theoretical and observed counts) g$chisqpvalue g$chisqtable ## Anderson-Darling test g$adtest ## Cramer von Mises test g$cvmtest ## Kolmogorov-Smirnov test g$kstest ``` ## Is it reasonable to use goodness-of-fit tests to validate the fit of a distribution ? In the first versions of fitdistrplus, when they were available, the results of the GOF tests (AD, KS, CvM) were automatically printed. We decided to suppress this automatic printing when we realized that some users had some difficulties to interpret the results of those tests and sometimes misused them. Goodness-of-fit tests often appear as objective tools to decide wether a fitted distribution well describes a data set. **But they are not !** It would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it (see FAQ 2.2.1). And it would not be reasonable at all any more to validate a distribution because goodness-of-fit tests do not reject it (see FAQ 2.2.2). A fitted distribution should be evaluated using graphical methods (goodness-of-fit graphs automatically provided in our package by plotting the result of the fit (output of `fitdist()` or `fitdistcens()` and the complementary graphs that help to compare different fits - see `?graphcomp`). We really think it is the most appropriate way to evaluate the adequacy of a fit and we are not the only ones to recommend it. You can find the same type of recommendations in reference books : * **Probabilistic techniques in exposure assessment - a handbook dealing with variability and uncertainty in models and inputs** by A.C. Cullen and H.C. Frey. * **Application of uncertainty analysis to ecological risks of pesticides** by W.J. Warren-Hicks and A. Hart. * **Statistical inference** by G. Casella and R.L. Berger * **Loss models: from data to decision** by S.A. Klugman and H.H. Panjer and G.E. Willmot Moreover, the selection of a distribution should also be driven by knowledge of underlying processes when available. For example when a variable cannot be negative, one would be very cautious while fitting a normal distribution, that potentially gives negative values, even if the observed data of this variable seem well fitted by a normal distribution. ### Should I reject a distribution because a goodness-of-fit test rejects it ? No it would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it, especially in the case of big samples. In the real life, as soon as you have a sufficient amount of data, you will reject the fitted distribution. We know that a model cannot perfectly describe real data, and generally the true question is to find the better distribution among a pool of simple parametric distributions to describe the data, so to compare different models (see FAQ 2.4 and 2.5 for corresponding questions). To illustre this point let us comment the example presented below. We drew two samples from the same Poisson distribution with a mean parameter equal to 100. In many applications, for this value of its parameter, the Poisson distribution would be considered to be well approximated by a normal distribution. Testing the fit (here using a Kolmogorov-Smirnov test ) of the normal distribution on a sample of 100 observations would not reject the normal fit, while testing it on a sample of 10000 observations would reject it, while both samples come from the same distribution. ```{r, fig.height=3, fig.width=6} set.seed(1234) x1 <- rpois(n = 100, lambda = 100) f1 <- fitdist(x1, "norm") g1 <- gofstat(f1) g1$kstest x2 <- rpois(n = 10000, lambda = 100) f2 <- fitdist(x2, "norm") g2 <- gofstat(f2) g2$kstest par(mfrow=1:2) denscomp(f1, demp = TRUE, addlegend = FALSE, main = "small sample") denscomp(f2, demp = TRUE, addlegend = FALSE, main = "big sample") ``` ### Should I accept a distribution because goodness-of-fit tests do not reject it ? No, it would not be reasonable at all to validate a distribution because goodness-of-fit tests do not reject it. Like all the other hypothesis tests, goodness-of-fit tests lack of statistical power when the sample size is not so high. And the different goodness-of-fit tests are not equally sensitive to different types of deviation between empirical and fitted distributions. For example the Kolmogorov-Smirnov test is sensitive when distributions differ in a global fashion near the centre of the distribution. The Anderson-Darling test will be more sensitive when distributions differ in their tails, and the Cramer von Mises will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions. The sensitivity of a chi square test will depend on the definition of classes, and even if we propose a default definition of classes when the user does not provide classes, this choice is not obvious and could impact the results of the test. This test is more appropriate when data are discrete, even if they are modelled by a continuous distribution, as in the following example. Two samples of respective sizes 500 and 50 are drawn from a Poisson distribution of mean parameter equal to 1 (not a sufficiently high value to consider that the Poisson distribution could be approximated by a normal one). Using a Kolmogorov-Smirnov test, for the small sample the normal fit is rejected only for the bigger sample. It is not rejected with the smaller sample even if the fit could be rejected after a simple visual confrontation of the distributions. In that particular case, the chi square test with classes defined by default would have rejected te normal fit for both samples. ```{r, fig.height=3, fig.width=6} set.seed(1234) x3 <- rpois(n = 500, lambda = 1) f3 <- fitdist(x3, "norm") g3 <- gofstat(f3) g3$kstest x4 <- rpois(n = 50, lambda = 1) f4 <- fitdist(x4, "norm") g4 <- gofstat(f4) g4$kstest par(mfrow=1:2) denscomp(f3, addlegend = FALSE, main = "big sample") denscomp(f4, addlegend = FALSE, main = "small sample") ``` ```{r} g3$chisqtable g3$chisqpvalue g4$chisqtable g4$chisqpvalue ``` ## Why all goodness-of-fit tests are not available for every distribution ? The Chi-squared test is available for any distribution but one must be conscious that its result depends on the definition of cells in which observed data are grouped, and a correct definition is not possible with a too small sample. Concerning the Kolmogorov-Smirnov test, it is proposed for any continuous distribution, but with a critical value corresponding to the comparison of the empirical distribution to a fully specified distribution. As the distribution is not fully known for a fitted distribution, the result of this test is subject to caution, but there is no general asymptotic theory for the Kolmogorov-Smirnov statistics in case of a fitted distribution. Nevertheless, one can use Monte Carlo methods to conduct Kolmgorov-Smirnov goodness-of-fit tests in cases when the sample is used to estimate model parameters. Such a method is implemented in the R package `KScorrect` for a variety of continuous distributions. Such an asymptotic theory was proposed for quadratic statistics for some distributions (Anderson-Darling, Cramer von Mises). The reference book we used on this subject (**Tests based on edf statistics** by Stephens MA in **Goodness-of-fit techniques** by D'Agostino RB and Stephens MA) proposes critical values of those statistics for a some classical distributions (exponential, gamma, Weibull, logistic, Cauchy, normal and lognormal). But the asymptotic theory about these statistics also depends on the way the parameters are estimated. And as they were not estimated by maximum likelihood for Cauchy, normal and lognormal distributions in the results reported by Stephens, we only propose the results of the Anderson-Darling and Cramer von Mises using those results for exponential, gamma, Weibull, logistic distributions. The user can refer to the cited books and use the proposed formula to estimate the parameters of Cauchy, normal and lognormal distributions and apply the tests using critical values given in the book. R packages `goftest` and `ADGofTest` could also be explored by users who would like to apply Anderson-Darling and Cramer von Mises tests on other distributions. But at this time we are not sure that the case where parameters are unknown (estimated by maximum likelihood) is tackled in those two packages. Concerning the development of our package, rather than develoing further more goodness-of-fit tests we made the choice to develop graphical tools to help to appreciate the quality of a fit and to compare the fits of different distributions on a same data set (see FAQ 2.2 for argumentation). ## How can we use goodness-of-fit statistics to compare the fit of different distributions on a same data set ? Goodness-of-fit statistics based on the empirical distribution function (Kolmogorov-Smirnov, Anderson-Darling and Cramer von Mises) may be used to measure a distance between the fitted distribution and the empirical distribution. So if one wants to compare the fit of various distributions on the same data set, the smaller are those statistics the better. The Kolmogorov-Smirnov statistics will be sensitive when distributions differ in a global fashion near the centre of the distribution while the Anderson-Darling statistics will be more sensitive when distributions differ in their tails, and the Cramer von Mises statistics will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions. But as mentioned in the main vignette of our package, the use of the Anderson-Darling to compare the fit of different distributions is subject to caution due to the the weighting of the quadratic distance between fitted and empirical distribution functions that depends on the parametric distribution. Moreover, statistics based on the empirical distribution function do not penalize distributions with a greater number of parameters and as those are generally more flexible, this could induce over-fitting. Goodness-fo-fit statistics based on information criteria (AIC, BIC) correspond to deviance penalized by the complexity of the model (the number of parameters of the distribution), and so the smaller the better. As more generic statistics, they are not adapted to focus on a part of the fitted distribution, but they take into account the complexity of the distribution and thus could help to prevent overfitting. ## Can we use a test to compare the fit of two distributions on a same data set ? In our package we did not implement such a test but for **two nested distributions** (when one is a special case of the other one, e.g. exponential and gamma distributions) a likelihood ratio test can be easily implemented using the loglikelihood provided by `fitdist` or `fitdistcens`. Denoting $L$ the maximum likelihood obtained with the complete distribution and $L_0$ the one obtained with the simplified distribution, when the sample size increases, $- 2 ln(\frac{L_0}{L}) = 2 ln(L) - 2 ln(L_0)$ tends to a Chi squared distribution degrees of freedom equal to the difference on the numbers of parameters characterizing the **two nested distributions**. You will find below an example of such a test. ```{r} set.seed(1234) g <- rgamma(100, shape = 2, rate = 1) (f <- fitdist(g, "gamma")) (f0 <- fitdist(g, "exp")) L <- logLik(f) k <- length(f$estimate) # number of parameters of the complete distribution L0 <- logLik(f0) k0 <- length(f0$estimate) # number of parameters of the simplified distribution (stat <- 2*L - 2*L0) (critical_value <- qchisq(0.95, df = k - k0)) (rejected <- stat > critical_value) ``` Such a test can also be used for fits on censored data. ## Can we get goodness-of-fit statistics for a fit on censored data ? Function `gofstat` is not yet proposed in our package for fits on censored data but to develop one is among one of our objectives in the future. Published works on goodness-of-fit statistics based on the empirical distribution function for censored data generally focused on data containing only one type of censoring (e.g. right censored data in survival data). Build such statistics in the general case, with data containing in the same time (right, left and interval censoring), remains tricky. Nevertheless, it is possible for any type of censored data, to use information criteria (AIC and BIC given in the summary of an object of class `fitdistcens`) to compare the fits of various distributions to a same data set. # Questions regarding optimization procedures ## How to choose optimization method? If you want to perform optimization without bounds, `optim()` is used. You can try the derivative-free method Nelder-Mead and the Hessian-free method BFGS. If you want to perform optimization with bounds, only two methods are available without providing the gradient of the objective function: Nelder-Mead via `constrOptim()` and bounded BFGS via `optim()`. In both cases, see the help of `mledist()` and the vignette on optimization algorithms. ## The optimization algorithm stops with error code 100. What shall I do? First, add traces by adding `control=list(trace=1, REPORT=1)`. Second, try to set bounds for parameters. Third, find better starting values (see FAQ 1.3). ## Why distribution with a `log` argument may converge better? Say, we study the shifted lognormal distribution defined by the following density $$ f(x) = \frac{1}{x \sigma \sqrt{2 \pi}} \exp\left(- \frac{(\ln (x+\delta)- \mu)^2}{2\sigma^2}\right) $$ for $x>-\delta$ where $\mu$ is a location parameter, $\sigma$ a scale parameter and $\delta$ a boundary parameter. Let us fit this distribution on the dataset `y` by MLE. We define two functions for the densities with and without a `log` argument. ```{r} dshiftlnorm <- function(x, mean, sigma, shift, log = FALSE) dlnorm(x+shift, mean, sigma, log=log) pshiftlnorm <- function(q, mean, sigma, shift, log.p = FALSE) plnorm(q+shift, mean, sigma, log.p=log.p) qshiftlnorm <- function(p, mean, sigma, shift, log.p = FALSE) qlnorm(p, mean, sigma, log.p=log.p)-shift dshiftlnorm_no <- function(x, mean, sigma, shift) dshiftlnorm(x, mean, sigma, shift) pshiftlnorm_no <- function(q, mean, sigma, shift) pshiftlnorm(q, mean, sigma, shift) ``` We now optimize the minus log-likelihood. ```{r} data(dataFAQlog1) y <- dataFAQlog1 D <- 1-min(y) f0 <- fitdist(y+D, "lnorm") start <- list(mean=as.numeric(f0$estimate["meanlog"]), sigma=as.numeric(f0$estimate["sdlog"]), shift=D) # works with BFGS, but not Nelder-Mead f <- fitdist(y, "shiftlnorm", start=start, optim.method="BFGS") summary(f) ``` If we don't use the `log` argument, the algorithms stalls. ```{r, error=FALSE} f2 <- try(fitdist(y, "shiftlnorm_no", start=start, optim.method="BFGS")) print(attr(f2, "condition")) ``` Indeed the algorithm stops because at the following value, the log-likelihood is infinite. ```{r} sum(log(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) log(prod(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) sum(dshiftlnorm(y, 0.16383978, 0.01679231, 1.17586600, TRUE )) ``` There is something wrong in the computation. Only the R-base implementation using `log` argument seems reliable. This happens the C-base implementation of `dlnorm` takes care of the log value. In the file `../src/nmath/dlnorm.c` in the R sources, we find the C code for `dlnorm` ```{r, eval=FALSE, echo=TRUE} double dlnorm(double x, double meanlog, double sdlog, int give_log) { double y; #ifdef IEEE_754 if (ISNAN(x) || ISNAN(meanlog) || ISNAN(sdlog)) return x + meanlog + sdlog; #endif if(sdlog <= 0) { if(sdlog < 0) ML_ERR_return_NAN; // sdlog == 0 : return (log(x) == meanlog) ? ML_POSINF : R_D__0; } if(x <= 0) return R_D__0; y = (log(x) - meanlog) / sdlog; return (give_log ? -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) : M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)); /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */ } ``` In the last four lines with the logical condtion `give_log?`, we see how the `log` argument is handled: * when log=TRUE, we use $-(\log(\sqrt{2\pi}) + y^2/2+\log(x\sigma))$ ```{r, eval=FALSE, echo=TRUE} -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) ``` * when log=FALSE, we use $\sqrt{2\pi} *\exp( y^2/2)/(x\sigma))$ (and then the logarithm outside `dlnorm`) ```{r, eval=FALSE, echo=TRUE} M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)) ``` Note that the constant $\log(\sqrt{2\pi})$ is pre-computed in the C macro `M_LN_SQRT_2PI`. In order to sort out this problem, we use the `constrOptim` wrapping `optim` to take into account linear constraints. This allows also to use other optimization methods than L-BFGS-B (low-memory BFGS bounded) used in optim. ```{r} f2 <- fitdist(y, "shiftlnorm", start=start, lower=c(-Inf, 0, -min(y)), optim.method="Nelder-Mead") summary(f2) print(cbind(BFGS=f$estimate, NelderMead=f2$estimate)) ``` Another possible would be to perform all computations with higher precision arithmetics as implemented in the package `Rmpfr` using the MPFR library. ## What to do when there is a scaling issue? Let us consider a dataset which has particular small values. ```{r} data(dataFAQscale1) head(dataFAQscale1) summary(dataFAQscale1) ``` The only way to sort out is to multiply the dataset by a large value. ```{r} for(i in 6:0) cat(10^i, try(mledist(dataFAQscale1*10^i, "cauchy")$estimate), "\n") ``` Let us consider a dataset which has particular large values. ```{r} data(dataFAQscale2) head(dataFAQscale2) summary(dataFAQscale2) ``` The only way to sort out is to multiply the dataset by a small value. ```{r} for(i in 0:5) cat(10^(-2*i), try(mledist(dataFAQscale2*10^(-2*i), "cauchy")$estimate), "\n") ``` ## How do I set bounds on parameters when optimizing? ### Setting bounds for scale parameters Consider the normal distribution $\mathcal{N}(\mu, \sigma^2)$ defined by the density $$ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right), x\in\mathbb{R}, $$ where $\mu$ is a location parameter such that $\mu\in\mathbb{R}$, $\sigma^2$ is a scale parameter such that $\sigma^2>0$. Therefore when optimizing the log-likelihood or the squared differences or the GoF statistics. Setting a lower bound for the scale parameter is easy with `fitdist`: just use the `lower` argument. ```{r scalenormal, echo=TRUE, warning=FALSE} set.seed(1234) x <- rnorm(1000, 1, 2) fitdist(x, "norm", lower=c(-Inf, 0)) ``` ### Setting bounds for shape parameters Consider the Burr distribution $\mathcal B(\mu, \sigma^2)$ defined by the density $$ f(x) = \frac{a b (x/s)^b}{x [1 + (x/s)^b]^{a + 1}}, x\in\mathbb{R}, $$ where $a,b$ are shape parameters such that $a,b>0$, $s$ is a scale parameter such that $s>0$. ```{r shapeburr, echo=TRUE, warning=FALSE} x <- rburr(1000, 1, 2, 3) fitdist(x, "burr", lower=c(0, 0, 0), start=list(shape1 = 1, shape2 = 1, rate = 1)) ``` ### Setting bounds for probability parameters Consider the geometric distribution $\mathcal G(p)$ defined by the mass probability function $$ f(x) = p(1-p)^x, x\in\mathbb{N}, $$ where $p$ is a probability parameter such that $p\in[0,1]$. ```{r probgeom, echo=TRUE, warning=FALSE} x <- rgeom(1000, 1/4) fitdist(x, "geom", lower=0, upper=1) ``` ### Setting bounds for boundary parameters Consider the shifted exponential distribution $\mathcal E(\mu,\lambda)$ defined by the mass probability function $$ f(x) = \lambda \exp(-\lambda(x-\mu)), x>\mu, $$ where $\lambda$ is a scale parameter such that $\lambda>0$, $\mu$ is a boundary (or shift) parameter such that $\mu\in\mathbb{R}$. When optimizing the log-likelihood, the boundary constraint is $$ \forall i=1,\dots,n, x_i>\mu \Rightarrow \min_{i=1,\dots,n} x_i > \mu \Leftrightarrow \mu > -\min_{i=1,\dots,n} x_i. $$ Note that when optimizing the squared differences or the GoF statistics, this constraint may not be necessary. Let us do it in R. ```{r shiftexp, echo=TRUE, warning=FALSE} dsexp <- function(x, rate, shift) dexp(x-shift, rate=rate) psexp <- function(x, rate, shift) pexp(x-shift, rate=rate) rsexp <- function(n, rate, shift) rexp(n, rate=rate)+shift x <- rsexp(1000, 1/4, 1) fitdist(x, "sexp", start=list(rate=1, shift=0), lower= c(0, -min(x))) ``` ### Setting linear inequality bounds For some distributions, bounds between parameters are not independent. For instance, the normal inverse Gaussian distribution ($\mu, \delta, \alpha, \beta$ parametrization) has the following parameter constraints, which can be reformulated as a linear inequality: $$ \left\{ \begin{array}{l}\alpha > 0\\ \delta >0\\ \alpha > |\beta|\end{array} \right. \Leftrightarrow \underbrace{ \left( \begin{matrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 1 & 1 \\ \end{matrix} \right) }_{ui} \left( \begin{matrix} \mu\\ \delta\\ \alpha \\ \beta \\ \end{matrix} \right) \geq \underbrace{ \left( \begin{matrix} 0\\ 0\\ 0 \\ 0 \\ \end{matrix} \right)}_{ci}. $$ These constraints can be carried out via `constrOptim()` and the arguments `ci` and `ui`. Here is an example ```{r, message=FALSE} library(GeneralizedHyperbolic) myoptim <- function(fn, par, ui, ci, ...) { res <- constrOptim(f=fn, theta=par, method="Nelder-Mead", ui=ui, ci=ci, ...) c(res, convergence=res$convergence, value=res$objective, par=res$minimum, hessian=res$hessian) } x <- rnig(1000, 3, 1/2, 1/2, 1/4) ui <- rbind(c(0,1,0,0), c(0,0,1,0), c(0,0,1,-1), c(0,0,1,1)) ci <- c(0,0,0,0) fitdist(x, "nig", custom.optim=myoptim, ui=ui, ci=ci, start=list(mu = 0, delta = 1, alpha = 1, beta = 0)) ``` ## How works quantile matching estimation for discrete distributions? Let us consider the geometric distribution with values in $\{0,1,2,3,\dots\}$. The probability mass function, the cumulative distribution function and the quantile function are $$ P(X=x)= p (1-p)^{\lfloor x\rfloor}, F_X(x) = 1- (1-p)^{\lfloor x\rfloor}, F_X^{-1}(q) = \left\lfloor\frac{\log(1-q)}{\log(1-p)}\right\rfloor. $$ Due to the integer part (floor function), both the distribution function and the quantile function are step functions. ```{r, fig.height=3, fig.width=6} pgeom(0:3, prob=1/2) qgeom(c(0.3, 0.6, 0.9), prob=1/2) par(mar=c(4,4,2,1), mfrow=1:2) curve(pgeom(x, prob=1/2), 0, 10, n=301, main="c.d.f.") curve(qgeom(x, prob=1/2), 0, 1, n=301, main="q.f.") ``` Now we study the QME for the geometric distribution. Since we have only one parameter, we choose one probabiliy, $p=1/2$. The theoretical median is the following integer $$ F_X^{-1}(1/2) = \left\lfloor\frac{\log(1/2)}{\log(1-p)}\right\rfloor. $$ Note that the theoretical median for a discrete distribution is an integer. Empirically, the median may not be an integer. Indeed for an even length dataset, the empirical median is $$ q_{n,1/2} = \frac{x_{n/2}^\star + x_{n/2+1}^\star}{2}, $$ where $x_{1}^\star<\dots # Questions regarding (left, right and/or interval) censored data ## How to code censored data in `fitdistrplus` ? Censored data must be rpresented in the package by a dataframe of two columns respectively named left and right, describing each observed value as an interval. The left column contains either `NA` for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either `NA` for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. This type of representation corresponds to the coding names `"interval2"` in function `Surv` of the package `survival`. There is no other way to represent censored data in `fitdistrplus` for the moment. You have a toy example below. ```{r} dtoy <- data.frame(left = c(NA, 2, 4, 6, 9.7, 10), right = c(1, 3, 7, 8, 9.7, NA)) dtoy ``` ## How do I use the output of `Surv()` to code the input of `fitdistcens()`? Let us consider a right-censored dataset for human life: twenty values randomly chosen from `canlifins` dataset of `CASdatasets` package. ```{r} exitage <- c(81.1,78.9,72.6,67.9,60.1,78.3,83.4,66.9,74.8,80.5,75.6,67.1, 75.3,82.8,70.1,85.4,74,70,71.6,76.5) death <- c(0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0) ``` The `Surv()` function can handle many type of censoring, we focus only on right-censoring. ```{r} svdata <- Surv(exitage, death) ``` In order to match the input of, we replace non-censored data. ```{r} fitdstdata <- cbind.data.frame(left=svdata[,"time"], right=NA) fitdstdata$right[svdata[,"status"] == 1] <- fitdstdata$left[svdata[,"status"] == 1] ``` Let us now fit two simple distributions. ```{r, fig.height= 4, fig.width= 6} flnormc <- fitdistcens(fitdstdata, "lnorm") fweic <- fitdistcens(fitdstdata, "weibull") cdfcompcens(list(fweic, flnormc), xlim=range(exitage), xlegend = "topleft") ``` ## How to represent an empirical distribution from censored data ? The representation of an empirical distribution from censored data is not a trivial problem. One can simply represent each observation as an interval at an y-value defined by the rank of the observation as done below using function `plotdistcens`. This representation can be interesting to visualize the raw data, but it remains difficult to correctly order the observations in any case (see the example below on the right using data `smokedfish`). ```{r, fig.height= 4, fig.width= 8} par(mfrow = c(1,2), mar = c(3, 4, 3, 0.5)) plotdistcens(dtoy, NPMLE = FALSE) data(smokedfish) dsmo <- log10(smokedfish) plotdistcens(dsmo, NPMLE = FALSE) ``` Many authors worked on the development of algorithms for **non parametric maximum likelihood estimation (NPMLE)** of the **empirical cumulative distribution function (ECDF)** from interval censored data (including left and right censored data that can be considered as interval censored data with one bound at infinity). In old versions of `fitdistrplus` we used the Turnbull algorithm using calls to functions of the package `survival`. Even if this type of plot is still available in the package, the default plot now uses the function `npsurv` of the package `npsurv`. This package provides more performant algorithms developped by Yong Wang (see references cited in the help page of `plotdistcens`). ```{r, fig.height= 6, fig.width= 6} par(mfrow = c(2, 1), mar = c(3, 4, 3, 0.5)) # Turnbull plot of the ECDF plotdistcens(dsmo, NPMLE.method = "Turnbull", xlim = c(-1.8, 2.4)) # Wang plot of the ECD plotdistcens(dsmo, NPMLE.method = "Wang") ``` As you can see in the above example, `npsurv` also provides a different type of plot for the ECDF, representing by filled rectangles the zones of non-uniqueness of the NPMLE ECDF. Indeed an NPMLE algorithm generally proceeds in two steps. 1. The first step aims at identifying **equivalence classes** (also named in the litterture **Turnbull intervals** or **maximal intersection intervals** or **innermost intervals** or **maximal cliques** of the data). Equivalences classess are points/intervals under which the NPMLE ECDF may change. Equivalence classes have been shown to correspond to regions between a left bound of an interval (named L in the following plot on a the previous toy example) immediately followed by a right bound of an interval (named R in the following plot). An equivalence class may be of null length (for example at each non censored value). 2. The second step aims at assigning a **probability mass** to each equivalence class, which may be zero on some classes. The NPMLE is unique only up to these equivalence classes and this **non uniqueness** of the NPMLE ECDF is represented by **filled rectangles**. Various NPMLE algorithms are implemented in the packages **Icens**, **interval** and **npsurv**. They are more or less performant and all of them do not enable the handling of other data than survival data, especially with left censored observations. ```{r, echo = FALSE, fig.height= 4, fig.width= 8} d <- data.frame(left = c(NA, 2, 4, 6, 9.5, 10), right = c(1, 3, 7, 8, 9.5, NA)) addbounds <- function(d) { xbounds <- c(d$left, d$right) xboundsnotNA <- xbounds[!is.na(xbounds)] abline(v = xboundsnotNA, col = "grey") } addLR <- function(d) { Lbounds <- d$left[!is.na(d$left)] Rbounds <- d$right[!is.na(d$right)] range <- range(c(Lbounds,Rbounds)) eps <- (range[2] - range[1]) * 0.01 text(x = Lbounds-eps, y = 0.05, labels = "L", col = "red", cex = 0.75) text(x = Rbounds+eps, y = 0.05, labels = "R", col = "red", cex = 0.75) } addeq <- function(deq) { left <- deq$left left[is.na(left)] <- -100 right <- deq$right right[is.na(right)] <- 100 rect(left, -2, right, 2, density = 10) } par(mfrow = c(2,1), mar = c(2, 4, 3, 0.5)) # First step plotdistcens(d, NPMLE = FALSE, lwd = 2, col = "blue", main = "Step 1 : identification of equivalence classes") addbounds(d) addLR(d) deq <- data.frame(left = c(NA, 2, 6, 9.5, 10), right = c(1, 3, 7,9.5, NA)) addeq(deq) # Second step plotdistcens(d, lwd = 2, main = "Step 2 : estimation of mass probabilities") ``` ## How to assess the goodness-of-fit of a distribution fitted on censored data ? The only available method in `fitdistrplus` to fit distributions on censored data is the maximum likelihood estimation (MLE). Once a distribution is fitted using `fitdistcens`, AIC and BIC values can be found in the `summary` of the object of class `fitdistcens` returned by the function. Those values can be used to compare the fit of various distributions on a same dataset. Function `gofstat` is not yet proposed in our package for fits on censored data but we plan to develop it in the future with the calculation of other goodness-of-fit statistics for censored data. ```{r} fnorm <- fitdistcens(dsmo,"norm") flogis <- fitdistcens(dsmo,"logis") # comparison of AIC values summary(fnorm)$aic summary(flogis)$aic ``` Considering goodness-of-fit plots, the generic `plot` function of an object of class `fitdistcens`provides three plots, one in CDF using the NPMLE ECDF plot (by default using the Wang prepresentation, see previous part for details), a Q-Q plot and a P-P plot simply derived from the Wang plot of the ECDF, with filled rectangles indicating non uniqueness of the NPMLE ECDF. ```{r, fig.height= 6, fig.width= 6} par(mar = c(2, 4, 3, 0.5)) plot(fnorm) ``` Functions `cdfcompcens()`, `qqcompens()` and `ppcompcens()` can be used to individualize and personnalize CDF, Q-Q and P-P goodness-of-fit plots and/or to compare the fit of various distributions on a same dataset. ```{r, fig.height= 4, fig.width= 4} cdfcompcens(list(fnorm, flogis), fitlty = 1) qqcompcens(list(fnorm, flogis)) ppcompcens(list(fnorm, flogis)) ``` Considering Q-Q plots and P-P plots, it may be easier to compare various fits by splitting the plots as below which is done automatically using the `plotstyle` `ggplot` in `qqcompens()` and `ppcompcens()` but can also be done manually with the `plotstyle` `graphics`. ```{r, fig.height= 4, fig.width= 8} qqcompcens(list(fnorm, flogis), lwd = 2, plotstyle = "ggplot", fitcol = c("red", "green"), fillrect = c("pink", "lightgreen"), legendtext = c("normal distribution", "logistic distribution")) ``` fitdistrplus/inst/doc/Optimalgo.R0000644000176200001440000001403713422065050016610 0ustar liggesusers## ----setup, echo=FALSE, message=FALSE, warning=FALSE--------------------- require(fitdistrplus) require(knitr) #for kable() function set.seed(12345) options(digits = 3) ## ---- echo=TRUE, eval=FALSE---------------------------------------------- # fitbench <- function(data, distr, method, grad=NULL, control=list(trace=0, REPORT=1, maxit=1000), lower=-Inf, upper=+Inf, ...) ## ---- echo=FALSE--------------------------------------------------------- fitbench <- fitdistrplus:::fitbench ## ------------------------------------------------------------------------ lnL <- function(par, fix.arg, obs, ddistnam) fitdistrplus:::loglikelihood(par, fix.arg, obs, ddistnam) grlnlbeta <- fitdistrplus:::grlnlbeta ## ---- fig.height=4, fig.width=4------------------------------------------ #(1) beta distribution n <- 200 x <- rbeta(n, 3, 3/4) grlnlbeta(c(3, 4), x) #test hist(x, prob=TRUE) lines(density(x), col="red") curve(dbeta(x, 3, 3/4), col="green", add=TRUE) legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ## ------------------------------------------------------------------------ ctr <- list(trace=0, REPORT=1, maxit=1000) ## ------------------------------------------------------------------------ unconstropt <- fitbench(x, "beta", "mle", grad=grlnlbeta, lower=0) ## ------------------------------------------------------------------------ dbeta2 <- function(x, shape1, shape2, log) dbeta(x, exp(shape1), exp(shape2), log=log) #take the log of the starting values startarg <- lapply(fitdistrplus:::start.arg.default(x, "beta"), log) #redefine the gradient for the new parametrization grbetaexp <- function(par, obs, ...) grlnlbeta(exp(par), obs) * exp(par) expopt <- fitbench(x, distr="beta2", method="mle", grad=grbetaexp, start=startarg) #get back to original parametrization expopt[c("fitted shape1", "fitted shape2"), ] <- exp(expopt[c("fitted shape1", "fitted shape2"), ]) ## ---- results='asis', echo=FALSE----------------------------------------- kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(expopt[, grep("G-", colnames(expopt))], digits=3) ## ---- fig.width=4, fig.height=4------------------------------------------ llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3), plot.arg=c("shape1", "shape2"), nlev=25, plot.np=50, data=x, distr="beta", back.col = FALSE) points(unconstropt[1,"BFGS"], unconstropt[2,"BFGS"], pch="+", col="red") points(3, 3/4, pch="x", col="green") ## ---- fig.width=4, fig.height=4------------------------------------------ b1 <- bootdist(fitdist(x, "beta", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=3, h=3/4, col="red", lwd=1.5) ## ------------------------------------------------------------------------ grlnlNB <- function(x, obs, ...) { m <- x[1] p <- x[2] n <- length(obs) c(sum(psigamma(obs+m)) - n*psigamma(m) + n*log(p), m*n/p - sum(obs)/(1-p)) } ## ---- fig.height=4, fig.width=4------------------------------------------ #(1) beta distribution n <- 200 trueval <- c("size"=10, "prob"=3/4, "mu"=10/3) x <- rnbinom(n, trueval["size"], trueval["prob"]) hist(x, prob=TRUE, ylim=c(0, .3)) lines(density(x), col="red") points(min(x):max(x), dnbinom(min(x):max(x), trueval["size"], trueval["prob"]), col="green") legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ## ------------------------------------------------------------------------ ctr <- list(trace=0, REPORT=1, maxit=1000) unconstropt <- fitbench(x, "nbinom", "mle", grad=grlnlNB, lower=0) unconstropt <- rbind(unconstropt, "fitted prob"=unconstropt["fitted mu",] / (1+unconstropt["fitted mu",])) ## ------------------------------------------------------------------------ dnbinom2 <- function(x, size, prob, log) dnbinom(x, exp(size), 1/(1+exp(-prob)), log=log) #transform starting values startarg <- fitdistrplus:::start.arg.default(x, "nbinom") startarg$mu <- startarg$size / (startarg$size+startarg$mu) startarg <- list(size=log(startarg[[1]]), prob=log(startarg[[2]]/(1-startarg[[2]]))) #redefine the gradient for the new parametrization Trans <- function(x) c(exp(x[1]), plogis(x[2])) grNBexp <- function(par, obs, ...) grlnlNB(Trans(par), obs) * c(exp(par[1]), plogis(x[2])*(1-plogis(x[2]))) expopt <- fitbench(x, distr="nbinom2", method="mle", grad=grNBexp, start=startarg) #get back to original parametrization expopt[c("fitted size", "fitted prob"), ] <- apply(expopt[c("fitted size", "fitted prob"), ], 2, Trans) ## ---- results='asis', echo=FALSE----------------------------------------- kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ## ---- results='asis', echo=FALSE----------------------------------------- kable(expopt[, grep("G-", colnames(expopt))], digits=3) ## ---- fig.width=4, fig.height=4------------------------------------------ llsurface(min.arg=c(5, 0.3), max.arg=c(15, 1), plot.arg=c("size", "prob"), nlev=25, plot.np=50, data=x, distr="nbinom", back.col = FALSE) points(unconstropt["fitted size","BFGS"], unconstropt["fitted prob","BFGS"], pch="+", col="red") points(trueval["size"], trueval["prob"], pch="x", col="green") ## ---- fig.width=4, fig.height=4------------------------------------------ b1 <- bootdist(fitdist(x, "nbinom", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=trueval["size"], h=trueval["mu"], col="red", lwd=1.5) fitdistrplus/inst/doc/FAQ.html0000644000176200001440000262455013422065020016035 0ustar liggesusers Frequently Asked Questions

Frequently Asked Questions

Marie Laure Delignette Muller, Christophe Dutang

2019-01-23

1 Questions regarding distributions

1.1 How do I know the root name of a distribution?

The root name of a probability distribution is the name which is used the d, p, q, r functions. For base R distributions, the root names are given in R-intro : https://cran.r-project.org/doc/manuals/R-intro.html#Probability-distributions. For example, you must use "pois" for the Poisson distribution and not "poisson".

1.2 How do I find “non standard†distributions?

For non-standard distributions, you can either find a package implementing them or define by yourself. A comprehensive list of non-standard distributions is given in the Distributions task view https://CRAN.R-project.org/view=Distributions. Here are some two examples of user-defined distributions. A third example (shifted exponential) is given in FAQ 3.5.4.

  • The Gumbel distribution
dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b))
pgumbel <- function(q, a, b) exp(-exp((a-q)/b))
qgumbel <- function(p, a, b) a-b*log(-log(p))
data(groundbeef)
fitgumbel <- fitdist(groundbeef$serving, "gumbel", start=list(a=10, b=10))
  • The zero-modified geometric distribution
dzmgeom <- function(x, p1, p2) p1 * (x == 0) + (1-p1)*dgeom(x-1, p2)
pzmgeom <- function(q, p1, p2) p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2)
rzmgeom <- function(n, p1, p2) 
{
  u <- rbinom(n, 1, 1-p1) #prob to get zero is p1
  u[u != 0] <- rgeom(sum(u != 0), p2)+1
  u
}
x2 <- rzmgeom(1000, 1/2, 1/10)
fitdist(x2, "zmgeom", start=list(p1=1/2, p2=1/2))

1.3 How do I set (or find) initial values for non standard distributions?

As documented, we provide initial values for the following distributions: "norm", "lnorm", "exp", "pois", "cauchy", "gamma“, "logis", "nbinom", "geom", "beta", "weibull" from the stats package; "invgamma", "llogis", "invweibull", "pareto1", "pareto", "lgamma", "trgamma", "invtrgamma" from the actuar package.

Look first at statistics and probability books such as

  • different volumes of N. L. Johnson, S. Kotz and N. Balakrishnan books, e.g. Continuous Univariate Distributions, Vol. 1,
  • Thesaurus of univariate discrete probability distributions by G. Wimmer and G. Altmann.
  • Statistical Distributions by M. Evans, N. Hastings, B. Peacock.
  • Distributional Analysis with L-moment Statistics using the R Environment for Statistical Computing by W. Asquith.

If not available, find initial values by equalling theoretical and empirical quartiles. The graphical function plotdist() and plotdistcens() can also be used to assess the suitability of starting values : by an iterative manual process you can move parameter values so as to obtain a distribution that roughly fits the data and take these parameter values as starting values for the real fit. You may also consider the prefit() function to find initial values especially in case where parameters are constrained.

1.4 Is it possible to fit a distribution with at least 3 parameters?

Yes, an example with the Burr distribution is detailed in the JSS paper. We reproduce it very quickly here.

data("endosulfan")
library("actuar")
fendo.B <- fitdist(endosulfan$ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1))
summary(fendo.B)
## Fitting of the distribution ' burr ' by maximum likelihood 
## Parameters : 
##        estimate Std. Error
## shape1    0.206     0.0561
## shape2    1.540     0.3188
## rate      1.497     0.4683
## Loglikelihood:  -520   AIC:  1046   BIC:  1054 
## Correlation matrix:
##        shape1 shape2   rate
## shape1  1.000 -0.900 -0.727
## shape2 -0.900  1.000  0.588
## rate   -0.727  0.588  1.000

1.5 Why there are differences between MLE and MME for the lognormal distribution?

We recall that the lognormal distribution function is given by \[ F_X(x) = \Phi\left(\frac{\log(x)-\mu}{\sigma} \right), \] where \(\Phi\) denotes the distribution function of the standard normal distribution. We know that \(E(X) = \exp\left( \mu+\frac{1}{2} \sigma^2 \right)\) and \(Var(X) = \exp\left( 2\mu+\sigma^2\right) (e^{\sigma^2} -1)\). The MME is obtained by inverting the previous formulas, whereas the MLE has the following explicit solution \[ \hat\mu_{MLE} = \frac{1}{n}\sum_{i=1}^n \log(x_i),~~ \hat\sigma^2_{MLE} = \frac{1}{n}\sum_{i=1}^n (\log(x_i) - \hat\mu_{MLE})^2. \] Let us fit a sample by MLE and MME. The fit looks particularly good in both cases.

x3 <- rlnorm(1000)
f1 <- fitdist(x3, "lnorm", method="mle") 
f2 <- fitdist(x3, "lnorm", method="mme")
par(mfrow=1:2)
cdfcomp(list(f1, f2), do.points=FALSE, xlogscale = TRUE, main = "CDF plot")
denscomp(list(f1, f2), demp=TRUE, main = "Density plot")

Let us compare the theoretical moments (mean and variance) given the fitted values (\(\hat\mu,\hat\sigma\)), that is \[ E(X) = \exp\left( \hat\mu+\frac{1}{2} \hat\sigma^2 \right), Var(X) = \exp\left( 2\hat\mu+\hat\sigma^2\right) (e^{\hat\sigma^2} -1). \]

c("E(X) by MME"=as.numeric(exp(f2$estimate["meanlog"]+f2$estimate["sdlog"]^2/2)), 
    "E(X) by MLE"=as.numeric(exp(f1$estimate["meanlog"]+f1$estimate["sdlog"]^2/2)), 
    "empirical"=mean(x3))
## E(X) by MME E(X) by MLE   empirical 
##        1.61        1.60        1.61
c("Var(X) by MME"=as.numeric(exp(2*f2$estimate["meanlog"]+f2$estimate["sdlog"]^2)*(exp(f2$estimate["sdlog"]^2)-1)), 
    "Var(X) by MLE"=as.numeric(exp(2*f1$estimate["meanlog"]+f1$estimate["sdlog"]^2)*(exp(f1$estimate["sdlog"]^2)-1)), 
    "empirical"=var(x3))
## Var(X) by MME Var(X) by MLE     empirical 
##          4.30          4.36          4.30

From a MLE point of view, a lognormal sample \(x_1,\dots,x_n\) is equivalent to handle a normal sample \(\log(x_1),\dots,\log(x_n)\). However, it is well know by the Jensen inequality that \(E(X) = E(\exp(\log(X))) \geq \exp(E(\log(X)))\) implying the MME estimates provides better moment estimates than with MLE.

1.6 Can I fit a distribution with positive support when data contains negative values?

The answer is no: you cannot fit a distribution with positive support (say gamma distribution) when data contains negative values.

set.seed(1234)
x <- rnorm(100, mean = 1, sd = 0.5)
(try(fitdist(x, "exp")))
## Error in computing default starting values.
## [1] "Error in manageparam(start.arg = start, fix.arg = fix.arg, obs = data,  : \n  Error in start.arg.default(obs, distname) : \n  values must be positive to fit an exponential  distribution\n\n"
## attr(,"class")
## [1] "try-error"
## attr(,"condition")
## <simpleError in manageparam(start.arg = start, fix.arg = fix.arg, obs = data,     distname = distname): Error in start.arg.default(obs, distname) : 
##   values must be positive to fit an exponential  distribution
## >

It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove negative values (not recommended) or to shift the data.

fitdist(x[x >= 0], "exp")
## Fitting of the distribution ' exp ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## rate     1.06      0.107
fitdist(x - min(x), "exp")
## Fitting of the distribution ' exp ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## rate    0.914     0.0914

1.7 Can I fit a finite-support distribution when data is outside that support?

The answer is no: you cannot fit a distribution with finite-support (say beta distribution) when data is outside \([0,1]\).

set.seed(1234)
x <- rnorm(100, mean = 0.5, sd = 0.25)
(try(fitdist(x, "beta")))
## Error in computing default starting values.
## [1] "Error in manageparam(start.arg = start, fix.arg = fix.arg, obs = data,  : \n  Error in start.arg.default(obs, distname) : \n  values must be in [0-1] to fit a beta distribution\n\n"
## attr(,"class")
## [1] "try-error"
## attr(,"condition")
## <simpleError in manageparam(start.arg = start, fix.arg = fix.arg, obs = data,     distname = distname): Error in start.arg.default(obs, distname) : 
##   values must be in [0-1] to fit a beta distribution
## >

It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove impossible values (not recommended) or to shift/scale the data.

fitdist(x[x > 0 & x < 1], "beta")
## Fitting of the distribution ' beta ' by maximum likelihood 
## Parameters:
##        estimate Std. Error
## shape1     2.08      0.288
## shape2     2.50      0.352
fitdist((x - min(x)*1.01) / (max(x) * 1.01 - min(x) * 1.01), "beta")
## Fitting of the distribution ' beta ' by maximum likelihood 
## Parameters:
##        estimate Std. Error
## shape1     1.77      0.236
## shape2     2.17      0.296

1.8 Can I fit truncated distributions?

The answer is yes: but the fitting procedure must be carried out carefully. Let \(X\) be the original untruncated random variable. The truncated variable is the conditionnal random variable \(Y = X ~\vert~ l< X <u\) with \(l<u\) the lower and upper bounds. The cdf of \(Y\) is \(F_Y(y)=\frac{F_X(x) - F_X(l)}{F_X(u)-F_X(l)}\). There is a density (w.r.t. the Lebesgues measure) given by \[ f_Y(y) = \left\{\begin{array}{ll} \frac{f_X(x)}{F_X(u)-F_X(l)} & \text{if } l < x < u \\ 0 & \text{otherwise }\\ \end{array}\right. \]

dtexp <- function(x, rate, low, upp)
{
  PU <- pexp(upp, rate=rate)
  PL <- pexp(low, rate=rate)
  dexp(x, rate) / (PU-PL) * (x >= low) * (x <= upp) 
}
ptexp <- function(q, rate, low, upp)
{
  PU <- pexp(upp, rate=rate)
  PL <- pexp(low, rate=rate)
  (pexp(q, rate)-PL) / (PU-PL) * (q >= low) * (q <= upp) + 1 * (q > upp)
}
n <- 200
x <- rexp(n); x <- x[x > .5 & x < 3]
f1 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x)))
f2 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=.5, upp=3))
gofstat(list(f1, f2))
## Goodness-of-fit statistics
##                              1-mle-texp 2-mle-texp
## Kolmogorov-Smirnov statistic     0.0952      0.084
## Cramer-von Mises statistic       0.1343      0.104
## Anderson-Darling statistic          Inf      1.045
## 
## Goodness-of-fit criteria
##                                1-mle-texp 2-mle-texp
## Akaike's Information Criterion        127        132
## Bayesian Information Criterion        130        135
cdfcomp(list(f1, f2), do.points = FALSE, xlim=c(0, 3.5))

1.9 Can I fit truncated inflated distributions?

The answer is yes: but the fitting procedure must be carried out carefully. Let \(X\) be the original untruncated random variable. The truncated variable is \(Y = \max(\min(X, u), l)\) with \(l<u\) the lower and upper bounds. The cdf of \(Y\) is \(F_Y(y)=F_X(y)1_{u>y>l} + 1_{y>u}\). There is no density (w.r.t. the Lebesgues measure) since there are two probability masses \(P(Y=l)= P(X\leq l)>0\) and \(P(Y=u)=P(X>u)>0\). However, the density function with respect to the measure \(m(x)= \delta_l(x)+\delta_u(x)+\lambda(x)\) is \[ f_Y(y) = \left\{\begin{array}{ll} F_X(l) & \text{if } y=l \\ f_X(y) & \text{if } l<y<u \\ 1-F_X(u) & \text{if } y=u \\ \end{array}\right. \] Let \(\theta\) be the parameter of the untruncated distribution. Since the likelihood can be factorized, the maximization can be done separately \[ L(l, \theta, u) = 1_{\forall i, l\leq y_i\leq u} \prod_{i=1, y_i=l}^n F_X(l, \theta) \times \prod_{i=1,l<y_i<u}^n f_X(y_i, \theta) \times \prod_{i=1,y_i=u}^n (1-F_X(u, \theta)), \] Furthermore, using \(\forall i, l\leq y_i\leq u\Leftrightarrow l\leq \min_i y_i\leq \max_i y_i\leq u\), the likelihood is zero for \(l>\min_i y_i\) or \(u<\max_i y_i\) and increasing with respect to \(l\) in \(]-\infty, \min_i y_i]\) and decreasing with respect to \(u\) in \([\max_i y_i,+\infty[\). So the maximum of \(L\) is reached at \(l=\min_i y_i\) and \(u=\max_i y_i\). The MLE of \(\theta\) is then obtained by maximizing the log-likelihood \(\log(L(l, \theta, u))\) with \(u=\max_i Y_i\) and \(l=\min_i Y_i\).

Let us illustrate truncated distribution with the truncated exponential distribution. The log-likelihood is particularly bad-shaped.

dtiexp <- function(x, rate, low, upp)
{
  PU <- pexp(upp, rate=rate, lower.tail = FALSE)
  PL <- pexp(low, rate=rate)
  dexp(x, rate) * (x >= low) * (x <= upp) + PL * (x == low) + PU * (x == upp)
}
ptiexp <- function(q, rate, low, upp)
  pexp(q, rate) * (q >= low) * (q <= upp) + 1 * (q > upp)
n <- 100; x <- pmax(pmin(rexp(n), 3), .5)
# the loglikelihood has a discontinous point at the solution
par(mar=c(4,4,2,1), mfrow=1:2)
llcurve(x, "tiexp", plot.arg="low", fix.arg = list(rate=2, upp=5), min.arg=0, max.arg=.5, lseq=200)
llcurve(x, "tiexp", plot.arg="upp", fix.arg = list(rate=2, low=0), min.arg=3, max.arg=4, lseq=200)

The first method directly maximizes the log-likelihood \(L(l, \theta, u)\); the second method maximizes the log-likelihood \(L(\theta)\) assuming that \(u=\hat u\) and \(l=\hat l\) are known. Inside \([0.5,3]\), the CDF are correctly estimated in both methods but the first method does not succeed to estimate the true value of the bounds \(l,u\).

(f1 <- fitdist(x, "tiexp", method="mle", start=list(rate=3, low=0, upp=20)))
## Fitting of the distribution ' tiexp ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## rate    0.949         NA
## low    -0.502         NA
## upp    23.072         NA
(f2 <- fitdist(x, "tiexp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x))))
## Fitting of the distribution ' tiexp ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## rate    0.947     0.0982
## Fixed parameters:
##     value
## low   0.5
## upp   3.0
gofstat(list(f1, f2))
## Goodness-of-fit statistics
##                              1-mle-tiexp 2-mle-tiexp
## Kolmogorov-Smirnov statistic       0.378       0.377
## Cramer-von Mises statistic         1.890       1.882
## Anderson-Darling statistic        10.222      10.193
## 
## Goodness-of-fit criteria
##                                1-mle-tiexp 2-mle-tiexp
## Akaike's Information Criterion         216         162
## Bayesian Information Criterion         224         165
cdfcomp(list(f1, f2), do.points = FALSE, addlegend=FALSE, xlim=c(0, 3.5))
curve(ptiexp(x, 1, .5, 3), add=TRUE, col="blue", lty=3)
legend("bottomright", lty=1:3, col=c("red", "green", "blue", "black"), 
        leg=c("full MLE", "MLE fixed arg", "true CDF", "emp. CDF"))

1.10 Can I fit a beta distribution with the same shape parameter?

Yes, you can wrap the density function of the beta distribution so that there is a only one shape parameter. Here is an example of a concave density.

x <- rbeta(1000, 3, 3)
dbeta2 <- function(x, shape, ...)
    dbeta(x, shape, shape, ...)
pbeta2 <- function(q, shape, ...)
    pbeta(q, shape, shape, ...) 
fitdist(x, "beta2", start=list(shape=1/2))
## Fitting of the distribution ' beta2 ' by maximum likelihood 
## Parameters:
##       estimate Std. Error
## shape     3.06      0.127

Another example with a U-shaped density.

x <- rbeta(1000, .3, .3)
fitdist(x, "beta2", start=list(shape=1/2), optim.method="L-BFGS-B", lower=1e-2) 
## Fitting of the distribution ' beta2 ' by maximum likelihood 
## Parameters:
##       estimate Std. Error
## shape    0.296     0.0099

2 Questions regarding goodness-of-fit tests and statistics

2.1 Where can we find the results of goodness-of-fit tests ?

Results of goodness-of-fit tests are not printed but are given in the object returned by gofstat() and you can have access to them as described in the example below. Nevertheless, p-values are not given for every test. For Anderson-Darling (ad), Cramer von Mises (cvm) and Kolomogorov (ks), only the decision (rejection of H0 or not) is given, when available (see FAQ 2.3 for more details).

set.seed(1234)
x <- rgamma(n = 100, shape = 2, scale = 1)
# fit of the good distribution
fgamma <- fitdist(x, "gamma")
# fit of a bad distribution
fexp <- fitdist(x, "exp")
g <- gofstat(list(fgamma, fexp), fitnames = c("gamma", "exp"))
denscomp(list(fgamma, fexp), legendtext = c("gamma", "exp"))

# results of the tests
## chi square test (with corresponding table with theoretical and observed counts)
g$chisqpvalue
##    gamma      exp 
## 1.89e-01 7.73e-05
g$chisqtable
##           obscounts theo gamma theo exp
## <= 0.5483         9      10.06    23.66
## <= 0.8122         9       8.82     9.30
## <= 0.9592         9       5.27     4.68
## <= 1.368          9      14.63    11.37
## <= 1.523          9       5.24     3.74
## <= 1.701          9       5.73     3.97
## <= 1.94           9       7.09     4.82
## <= 2.381          9      11.08     7.50
## <= 2.842          9       9.00     6.29
## <= 3.801          9      11.93     9.28
## > 3.801          10      11.16    15.40
## Anderson-Darling test
g$adtest
##          gamma            exp 
## "not rejected"     "rejected"
## Cramer von  Mises test
g$cvmtest
##          gamma            exp 
## "not rejected"     "rejected"
## Kolmogorov-Smirnov test
g$kstest
##          gamma            exp 
## "not rejected"     "rejected"

2.2 Is it reasonable to use goodness-of-fit tests to validate the fit of a distribution ?

In the first versions of fitdistrplus, when they were available, the results of the GOF tests (AD, KS, CvM) were automatically printed. We decided to suppress this automatic printing when we realized that some users had some difficulties to interpret the results of those tests and sometimes misused them.

Goodness-of-fit tests often appear as objective tools to decide wether a fitted distribution well describes a data set. But they are not ! It would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it (see FAQ 2.2.1). And it would not be reasonable at all any more to validate a distribution because goodness-of-fit tests do not reject it (see FAQ 2.2.2).

A fitted distribution should be evaluated using graphical methods (goodness-of-fit graphs automatically provided in our package by plotting the result of the fit (output of fitdist() or fitdistcens() and the complementary graphs that help to compare different fits - see ?graphcomp). We really think it is the most appropriate way to evaluate the adequacy of a fit and we are not the only ones to recommend it. You can find the same type of recommendations in reference books :

  • Probabilistic techniques in exposure assessment - a handbook dealing with variability and uncertainty in models and inputs by A.C. Cullen and H.C. Frey.
  • Application of uncertainty analysis to ecological risks of pesticides by W.J. Warren-Hicks and A. Hart.
  • Statistical inference by G. Casella and R.L. Berger
  • Loss models: from data to decision by S.A. Klugman and H.H. Panjer and G.E. Willmot

Moreover, the selection of a distribution should also be driven by knowledge of underlying processes when available. For example when a variable cannot be negative, one would be very cautious while fitting a normal distribution, that potentially gives negative values, even if the observed data of this variable seem well fitted by a normal distribution.

2.2.1 Should I reject a distribution because a goodness-of-fit test rejects it ?

No it would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it, especially in the case of big samples. In the real life, as soon as you have a sufficient amount of data, you will reject the fitted distribution. We know that a model cannot perfectly describe real data, and generally the true question is to find the better distribution among a pool of simple parametric distributions to describe the data, so to compare different models (see FAQ 2.4 and 2.5 for corresponding questions).

To illustre this point let us comment the example presented below. We drew two samples from the same Poisson distribution with a mean parameter equal to 100. In many applications, for this value of its parameter, the Poisson distribution would be considered to be well approximated by a normal distribution. Testing the fit (here using a Kolmogorov-Smirnov test ) of the normal distribution on a sample of 100 observations would not reject the normal fit, while testing it on a sample of 10000 observations would reject it, while both samples come from the same distribution.

set.seed(1234)
x1 <- rpois(n = 100, lambda = 100)
f1 <- fitdist(x1, "norm")
g1 <- gofstat(f1)
g1$kstest
##     1-mle-norm 
## "not rejected"
x2 <- rpois(n = 10000, lambda = 100)
f2 <- fitdist(x2, "norm")
g2 <- gofstat(f2)
g2$kstest
## 1-mle-norm 
## "rejected"
par(mfrow=1:2)
denscomp(f1, demp = TRUE, addlegend = FALSE, main = "small sample")
denscomp(f2, demp = TRUE, addlegend = FALSE, main = "big sample")

2.2.2 Should I accept a distribution because goodness-of-fit tests do not reject it ?

No, it would not be reasonable at all to validate a distribution because goodness-of-fit tests do not reject it. Like all the other hypothesis tests, goodness-of-fit tests lack of statistical power when the sample size is not so high. And the different goodness-of-fit tests are not equally sensitive to different types of deviation between empirical and fitted distributions. For example the Kolmogorov-Smirnov test is sensitive when distributions differ in a global fashion near the centre of the distribution. The Anderson-Darling test will be more sensitive when distributions differ in their tails, and the Cramer von Mises will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions.

The sensitivity of a chi square test will depend on the definition of classes, and even if we propose a default definition of classes when the user does not provide classes, this choice is not obvious and could impact the results of the test. This test is more appropriate when data are discrete, even if they are modelled by a continuous distribution, as in the following example. Two samples of respective sizes 500 and 50 are drawn from a Poisson distribution of mean parameter equal to 1 (not a sufficiently high value to consider that the Poisson distribution could be approximated by a normal one). Using a Kolmogorov-Smirnov test, for the small sample the normal fit is rejected only for the bigger sample. It is not rejected with the smaller sample even if the fit could be rejected after a simple visual confrontation of the distributions. In that particular case, the chi square test with classes defined by default would have rejected te normal fit for both samples.

set.seed(1234)
x3 <- rpois(n = 500, lambda = 1)
f3 <- fitdist(x3, "norm")
g3 <- gofstat(f3)
g3$kstest
## 1-mle-norm 
## "rejected"
x4 <- rpois(n = 50, lambda = 1)
f4 <- fitdist(x4, "norm")
g4 <- gofstat(f4)
g4$kstest
##     1-mle-norm 
## "not rejected"
par(mfrow=1:2)
denscomp(f3, addlegend = FALSE, main = "big sample") 
denscomp(f4, addlegend = FALSE, main = "small sample")

g3$chisqtable
##      obscounts theocounts
## <= 0     180.0       80.3
## <= 1     187.0      163.5
## <= 2      87.0      168.1
## <= 3      32.0       73.4
## > 3       14.0       14.7
g3$chisqpvalue
## [1] 7.11e-42
g4$chisqtable
##      obscounts theocounts
## <= 0     14.00       5.46
## <= 1     15.00      14.23
## <= 2     15.00      18.09
## > 2       6.00      12.22
g4$chisqpvalue
## [1] 3.57e-05

2.3 Why all goodness-of-fit tests are not available for every distribution ?

The Chi-squared test is available for any distribution but one must be conscious that its result depends on the definition of cells in which observed data are grouped, and a correct definition is not possible with a too small sample.

Concerning the Kolmogorov-Smirnov test, it is proposed for any continuous distribution, but with a critical value corresponding to the comparison of the empirical distribution to a fully specified distribution. As the distribution is not fully known for a fitted distribution, the result of this test is subject to caution, but there is no general asymptotic theory for the Kolmogorov-Smirnov statistics in case of a fitted distribution. Nevertheless, one can use Monte Carlo methods to conduct Kolmgorov-Smirnov goodness-of-fit tests in cases when the sample is used to estimate model parameters. Such a method is implemented in the R package KScorrect for a variety of continuous distributions.

Such an asymptotic theory was proposed for quadratic statistics for some distributions (Anderson-Darling, Cramer von Mises). The reference book we used on this subject (Tests based on edf statistics by Stephens MA in Goodness-of-fit techniques by D’Agostino RB and Stephens MA) proposes critical values of those statistics for a some classical distributions (exponential, gamma, Weibull, logistic, Cauchy, normal and lognormal). But the asymptotic theory about these statistics also depends on the way the parameters are estimated. And as they were not estimated by maximum likelihood for Cauchy, normal and lognormal distributions in the results reported by Stephens, we only propose the results of the Anderson-Darling and Cramer von Mises using those results for exponential, gamma, Weibull, logistic distributions.

The user can refer to the cited books and use the proposed formula to estimate the parameters of Cauchy, normal and lognormal distributions and apply the tests using critical values given in the book. R packages goftest and ADGofTest could also be explored by users who would like to apply Anderson-Darling and Cramer von Mises tests on other distributions. But at this time we are not sure that the case where parameters are unknown (estimated by maximum likelihood) is tackled in those two packages.

Concerning the development of our package, rather than develoing further more goodness-of-fit tests we made the choice to develop graphical tools to help to appreciate the quality of a fit and to compare the fits of different distributions on a same data set (see FAQ 2.2 for argumentation).

2.4 How can we use goodness-of-fit statistics to compare the fit of different distributions on a same data set ?

Goodness-of-fit statistics based on the empirical distribution function (Kolmogorov-Smirnov, Anderson-Darling and Cramer von Mises) may be used to measure a distance between the fitted distribution and the empirical distribution. So if one wants to compare the fit of various distributions on the same data set, the smaller are those statistics the better. The Kolmogorov-Smirnov statistics will be sensitive when distributions differ in a global fashion near the centre of the distribution while the Anderson-Darling statistics will be more sensitive when distributions differ in their tails, and the Cramer von Mises statistics will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions.

But as mentioned in the main vignette of our package, the use of the Anderson-Darling to compare the fit of different distributions is subject to caution due to the the weighting of the quadratic distance between fitted and empirical distribution functions that depends on the parametric distribution. Moreover, statistics based on the empirical distribution function do not penalize distributions with a greater number of parameters and as those are generally more flexible, this could induce over-fitting.

Goodness-fo-fit statistics based on information criteria (AIC, BIC) correspond to deviance penalized by the complexity of the model (the number of parameters of the distribution), and so the smaller the better. As more generic statistics, they are not adapted to focus on a part of the fitted distribution, but they take into account the complexity of the distribution and thus could help to prevent overfitting.

2.5 Can we use a test to compare the fit of two distributions on a same data set ?

In our package we did not implement such a test but for two nested distributions (when one is a special case of the other one, e.g. exponential and gamma distributions) a likelihood ratio test can be easily implemented using the loglikelihood provided by fitdist or fitdistcens. Denoting \(L\) the maximum likelihood obtained with the complete distribution and \(L_0\) the one obtained with the simplified distribution, when the sample size increases, \(- 2 ln(\frac{L_0}{L}) = 2 ln(L) - 2 ln(L_0)\) tends to a Chi squared distribution degrees of freedom equal to the difference on the numbers of parameters characterizing the two nested distributions. You will find below an example of such a test.

set.seed(1234)
g <- rgamma(100, shape = 2, rate = 1)
(f <- fitdist(g, "gamma"))
## Fitting of the distribution ' gamma ' by maximum likelihood 
## Parameters:
##       estimate Std. Error
## shape    2.025      0.266
## rate     0.997      0.149
(f0 <- fitdist(g, "exp"))
## Fitting of the distribution ' exp ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## rate    0.492     0.0492
L <- logLik(f)
k <- length(f$estimate) # number of parameters of the complete distribution
L0 <- logLik(f0)
k0 <- length(f0$estimate) # number of parameters of the simplified distribution
(stat <- 2*L - 2*L0)
## [1] 23.9
(critical_value <- qchisq(0.95, df = k - k0))
## [1] 3.84
(rejected <- stat > critical_value)
## [1] TRUE

Such a test can also be used for fits on censored data.

2.6 Can we get goodness-of-fit statistics for a fit on censored data ?

Function gofstat is not yet proposed in our package for fits on censored data but to develop one is among one of our objectives in the future. Published works on goodness-of-fit statistics based on the empirical distribution function for censored data generally focused on data containing only one type of censoring (e.g. right censored data in survival data). Build such statistics in the general case, with data containing in the same time (right, left and interval censoring), remains tricky.

Nevertheless, it is possible for any type of censored data, to use information criteria (AIC and BIC given in the summary of an object of class fitdistcens) to compare the fits of various distributions to a same data set.

3 Questions regarding optimization procedures

3.1 How to choose optimization method?

If you want to perform optimization without bounds, optim() is used. You can try the derivative-free method Nelder-Mead and the Hessian-free method BFGS. If you want to perform optimization with bounds, only two methods are available without providing the gradient of the objective function: Nelder-Mead via constrOptim() and bounded BFGS via optim(). In both cases, see the help of mledist() and the vignette on optimization algorithms.

3.2 The optimization algorithm stops with error code 100. What shall I do?

First, add traces by adding control=list(trace=1, REPORT=1). Second, try to set bounds for parameters. Third, find better starting values (see FAQ 1.3).

3.3 Why distribution with a log argument may converge better?

Say, we study the shifted lognormal distribution defined by the following density \[ f(x) = \frac{1}{x \sigma \sqrt{2 \pi}} \exp\left(- \frac{(\ln (x+\delta)- \mu)^2}{2\sigma^2}\right) \] for \(x>-\delta\) where \(\mu\) is a location parameter, \(\sigma\) a scale parameter and \(\delta\) a boundary parameter. Let us fit this distribution on the dataset y by MLE. We define two functions for the densities with and without a log argument.

dshiftlnorm <- function(x, mean, sigma, shift, log = FALSE) dlnorm(x+shift, mean, sigma, log=log)
pshiftlnorm <- function(q, mean, sigma, shift, log.p = FALSE) plnorm(q+shift, mean, sigma, log.p=log.p)
qshiftlnorm <- function(p, mean, sigma, shift, log.p = FALSE) qlnorm(p, mean, sigma, log.p=log.p)-shift
dshiftlnorm_no <- function(x, mean, sigma, shift) dshiftlnorm(x, mean, sigma, shift)
pshiftlnorm_no <- function(q, mean, sigma, shift) pshiftlnorm(q, mean, sigma, shift)

We now optimize the minus log-likelihood.

data(dataFAQlog1)
y <- dataFAQlog1
D <- 1-min(y)
f0 <- fitdist(y+D, "lnorm")
start <- list(mean=as.numeric(f0$estimate["meanlog"]),  
              sigma=as.numeric(f0$estimate["sdlog"]), shift=D)
# works with BFGS, but not Nelder-Mead
f <- fitdist(y, "shiftlnorm", start=start, optim.method="BFGS")
summary(f)
## Fitting of the distribution ' shiftlnorm ' by maximum likelihood 
## Parameters : 
##       estimate Std. Error
## mean    -1.386    0.02401
## sigma    0.071    0.00192
## shift    0.248    0.00598
## Loglikelihood:  8299   AIC:  -16591   BIC:  -16573 
## Correlation matrix:
##         mean  sigma  shift
## mean   1.000 -0.885  0.999
## sigma -0.885  1.000 -0.886
## shift  0.999 -0.886  1.000

If we don’t use the log argument, the algorithms stalls.

f2 <- try(fitdist(y, "shiftlnorm_no", start=start, optim.method="BFGS"))
## <simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data,     gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth,     lower = lower, upper = upper, ...): non-finite finite-difference value [2]>
print(attr(f2, "condition"))
## <simpleError in fitdist(y, "shiftlnorm_no", start = start, optim.method = "BFGS"): the function mle failed to estimate the parameters, 
##                 with the error code 100
## >

Indeed the algorithm stops because at the following value, the log-likelihood is infinite.

sum(log(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 )))
## [1] -Inf
log(prod(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 )))
## [1] -Inf
sum(dshiftlnorm(y, 0.16383978, 0.01679231, 1.17586600, TRUE ))
## [1] 7761

There is something wrong in the computation.

Only the R-base implementation using log argument seems reliable. This happens the C-base implementation of dlnorm takes care of the log value. In the file ../src/nmath/dlnorm.c in the R sources, we find the C code for dlnorm

double dlnorm(double x, double meanlog, double sdlog, int give_log)
{
    double y;

#ifdef IEEE_754
    if (ISNAN(x) || ISNAN(meanlog) || ISNAN(sdlog))
    return x + meanlog + sdlog;
#endif
    if(sdlog <= 0) {
    if(sdlog < 0) ML_ERR_return_NAN;
    // sdlog == 0 :
    return (log(x) == meanlog) ? ML_POSINF : R_D__0;
    }
    if(x <= 0) return R_D__0;

    y = (log(x) - meanlog) / sdlog;
    return (give_log ?
        -(M_LN_SQRT_2PI   + 0.5 * y * y + log(x * sdlog)) :
        M_1_SQRT_2PI * exp(-0.5 * y * y)  /  (x * sdlog));
    /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */

}

In the last four lines with the logical condtion give_log?, we see how the log argument is handled:

  • when log=TRUE, we use \(-(\log(\sqrt{2\pi}) + y^2/2+\log(x\sigma))\)
-(M_LN_SQRT_2PI   + 0.5 * y * y + log(x * sdlog))
  • when log=FALSE, we use \(\sqrt{2\pi} *\exp( y^2/2)/(x\sigma))\) (and then the logarithm outside dlnorm)
M_1_SQRT_2PI * exp(-0.5 * y * y)  /  (x * sdlog))

Note that the constant \(\log(\sqrt{2\pi})\) is pre-computed in the C macro M_LN_SQRT_2PI.

In order to sort out this problem, we use the constrOptim wrapping optim to take into account linear constraints. This allows also to use other optimization methods than L-BFGS-B (low-memory BFGS bounded) used in optim.

f2 <- fitdist(y, "shiftlnorm", start=start, lower=c(-Inf, 0, -min(y)), optim.method="Nelder-Mead")
summary(f2)
## Fitting of the distribution ' shiftlnorm ' by maximum likelihood 
## Parameters : 
##       estimate Std. Error
## mean   -1.3873         NA
## sigma   0.0711         NA
## shift   0.2481         NA
## Loglikelihood:  8299   AIC:  -16591   BIC:  -16573 
## Correlation matrix:
## [1] NA
print(cbind(BFGS=f$estimate, NelderMead=f2$estimate))
##         BFGS NelderMead
## mean  -1.386    -1.3873
## sigma  0.071     0.0711
## shift  0.248     0.2481

Another possible would be to perform all computations with higher precision arithmetics as implemented in the package Rmpfr using the MPFR library.

3.4 What to do when there is a scaling issue?

Let us consider a dataset which has particular small values.

data(dataFAQscale1)
head(dataFAQscale1)
## [1] -0.007077 -0.000947 -0.001898 -0.000475 -0.001902 -0.000476
summary(dataFAQscale1)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -0.00708 -0.00143 -0.00047 -0.00031  0.00096  0.00428

The only way to sort out is to multiply the dataset by a large value.

for(i in 6:0)
cat(10^i, try(mledist(dataFAQscale1*10^i, "cauchy")$estimate), "\n")
## 1e+06 -290 1194 
## 1e+05 -29 119 
## 10000 -2.9 11.9 
## 1000 -0.29 1.19 
## 100 -0.029 0.119 
## 10 -0.0029 0.0119 
## <simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data,     gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth,     lower = lower, upper = upper, ...): non-finite finite-difference value [2]>
## 1 NA NA

Let us consider a dataset which has particular large values.

data(dataFAQscale2)
head(dataFAQscale2)
## [1] 1.40e+09 1.41e+09 1.43e+09 1.44e+09 1.49e+09 1.57e+09
summary(dataFAQscale2)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## 1.40e+09 1.58e+09 2.24e+09 2.55e+09 3.39e+09 4.49e+09

The only way to sort out is to multiply the dataset by a small value.

for(i in 0:5)
cat(10^(-2*i), try(mledist(dataFAQscale2*10^(-2*i), "cauchy")$estimate), "\n")
## 1 2.03e+09 6.59e+08 
## 0.01 20283641 6594932 
## 1e-04 202836 65949 
## 1e-06 2028 659 
## 1e-08 20.3 6.59 
## 1e-10 0.203 0.0659

3.5 How do I set bounds on parameters when optimizing?

3.5.1 Setting bounds for scale parameters

Consider the normal distribution \(\mathcal{N}(\mu, \sigma^2)\) defined by the density \[ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right), x\in\mathbb{R}, \] where \(\mu\) is a location parameter such that \(\mu\in\mathbb{R}\), \(\sigma^2\) is a scale parameter such that \(\sigma^2>0\). Therefore when optimizing the log-likelihood or the squared differences or the GoF statistics. Setting a lower bound for the scale parameter is easy with fitdist: just use the lower argument.

set.seed(1234)
x <- rnorm(1000, 1, 2)
fitdist(x, "norm", lower=c(-Inf, 0))
## Fitting of the distribution ' norm ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## mean    0.947         NA
## sd      1.994         NA

3.5.2 Setting bounds for shape parameters

Consider the Burr distribution \(\mathcal B(\mu, \sigma^2)\) defined by the density \[ f(x) = \frac{a b (x/s)^b}{x [1 + (x/s)^b]^{a + 1}}, x\in\mathbb{R}, \] where \(a,b\) are shape parameters such that \(a,b>0\), \(s\) is a scale parameter such that \(s>0\).

x <- rburr(1000, 1, 2, 3)
fitdist(x, "burr", lower=c(0, 0, 0), start=list(shape1 = 1, shape2 = 1, 
  rate = 1))
## Fitting of the distribution ' burr ' by maximum likelihood 
## Parameters:
##        estimate Std. Error
## shape1    0.969         NA
## shape2    2.051         NA
## rate      3.180         NA

3.5.3 Setting bounds for probability parameters

Consider the geometric distribution \(\mathcal G(p)\) defined by the mass probability function \[ f(x) = p(1-p)^x, x\in\mathbb{N}, \] where \(p\) is a probability parameter such that \(p\in[0,1]\).

x <- rgeom(1000, 1/4)
fitdist(x, "geom", lower=0, upper=1)
## Fitting of the distribution ' geom ' by maximum likelihood 
## Parameters:
##      estimate Std. Error
## prob    0.242    0.00666

3.5.4 Setting bounds for boundary parameters

Consider the shifted exponential distribution \(\mathcal E(\mu,\lambda)\) defined by the mass probability function \[ f(x) = \lambda \exp(-\lambda(x-\mu)), x>\mu, \] where \(\lambda\) is a scale parameter such that \(\lambda>0\), \(\mu\) is a boundary (or shift) parameter such that \(\mu\in\mathbb{R}\). When optimizing the log-likelihood, the boundary constraint is \[ \forall i=1,\dots,n, x_i>\mu \Rightarrow \min_{i=1,\dots,n} x_i > \mu \Leftrightarrow \mu > -\min_{i=1,\dots,n} x_i. \] Note that when optimizing the squared differences or the GoF statistics, this constraint may not be necessary. Let us do it in R.

dsexp <- function(x, rate, shift)
  dexp(x-shift, rate=rate)
psexp <- function(x, rate, shift)
  pexp(x-shift, rate=rate)
rsexp <- function(n, rate, shift)
  rexp(n, rate=rate)+shift
x <- rsexp(1000, 1/4, 1)
fitdist(x, "sexp", start=list(rate=1, shift=0), lower= c(0, -min(x)))
## Fitting of the distribution ' sexp ' by maximum likelihood 
## Parameters:
##       estimate Std. Error
## rate     0.248         NA
## shift    1.005         NA

3.5.5 Setting linear inequality bounds

For some distributions, bounds between parameters are not independent. For instance, the normal inverse Gaussian distribution (\(\mu, \delta, \alpha, \beta\) parametrization) has the following parameter constraints, which can be reformulated as a linear inequality: \[ \left\{ \begin{array}{l}\alpha > 0\\ \delta >0\\ \alpha > |\beta|\end{array} \right. \Leftrightarrow \underbrace{ \left( \begin{matrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 1 & 1 \\ \end{matrix} \right) }_{ui} \left( \begin{matrix} \mu\\ \delta\\ \alpha \\ \beta \\ \end{matrix} \right) \geq \underbrace{ \left( \begin{matrix} 0\\ 0\\ 0 \\ 0 \\ \end{matrix} \right)}_{ci}. \] These constraints can be carried out via constrOptim() and the arguments ci and ui. Here is an example

library(GeneralizedHyperbolic)
myoptim <- function(fn, par, ui, ci, ...)
{
  res <- constrOptim(f=fn, theta=par, method="Nelder-Mead", ui=ui, ci=ci, ...)
  c(res, convergence=res$convergence, value=res$objective, par=res$minimum, hessian=res$hessian)
}
x <- rnig(1000, 3, 1/2, 1/2, 1/4)
ui <- rbind(c(0,1,0,0), c(0,0,1,0), c(0,0,1,-1), c(0,0,1,1))
ci <- c(0,0,0,0)
fitdist(x, "nig", custom.optim=myoptim, ui=ui, ci=ci, start=list(mu = 0, delta = 1, alpha = 1, beta = 0))
## Warning in fitdist(x, "nig", custom.optim = myoptim, ui = ui, ci = ci,
## start = list(mu = 0, : The dnig function should return a vector of with NaN
## values when input has inconsistent parameters and not raise an error
## Warning in fitdist(x, "nig", custom.optim = myoptim, ui = ui, ci = ci,
## start = list(mu = 0, : The pnig function should return a vector of with NaN
## values when input has inconsistent values and not raise an error
## Fitting of the distribution ' nig ' by maximum likelihood 
## Parameters:
##       estimate Std. Error
## mu       2.985         NA
## delta    0.457         NA
## alpha    0.466         NA
## beta     0.237         NA

3.6 How works quantile matching estimation for discrete distributions?

Let us consider the geometric distribution with values in \(\{0,1,2,3,\dots\}\). The probability mass function, the cumulative distribution function and the quantile function are \[ P(X=x)= p (1-p)^{\lfloor x\rfloor}, F_X(x) = 1- (1-p)^{\lfloor x\rfloor}, F_X^{-1}(q) = \left\lfloor\frac{\log(1-q)}{\log(1-p)}\right\rfloor. \] Due to the integer part (floor function), both the distribution function and the quantile function are step functions.

pgeom(0:3, prob=1/2)
## [1] 0.500 0.750 0.875 0.938
qgeom(c(0.3, 0.6, 0.9), prob=1/2)
## [1] 0 1 3
par(mar=c(4,4,2,1), mfrow=1:2)
curve(pgeom(x, prob=1/2), 0, 10, n=301, main="c.d.f.")
curve(qgeom(x, prob=1/2), 0, 1, n=301, main="q.f.")

Now we study the QME for the geometric distribution. Since we have only one parameter, we choose one probabiliy, \(p=1/2\). The theoretical median is the following integer \[ F_X^{-1}(1/2) = \left\lfloor\frac{\log(1/2)}{\log(1-p)}\right\rfloor. \] Note that the theoretical median for a discrete distribution is an integer. Empirically, the median may not be an integer. Indeed for an even length dataset, the empirical median is \[ q_{n,1/2} = \frac{x_{n/2}^\star + x_{n/2+1}^\star}{2}, \] where \(x_{1}^\star<\dots<x_{n}^\star\) is the sorted sample, which is not an integer value if \(x_{n/2}^\star + x_{n/2+1}^\star\) is not an even number. However for an odd length dataset, the empirical median is an integer \(q_{n,1/2}=x_{(n+1)/2}^\star\).

x <- c(0, 0, 0, 0, 1, 1, 3, 2, 1, 0, 0)
median(x[-1]) #sample size 10
## [1] 0.5
median(x) #sample size 11
## [1] 0

Therefore, a first issue arises: if the median is not an integer, it is impossible to match exactly the empirical median with the theoretical quantile.

Furthermore, the second issue is the non-uniqueness of the solution. Admitting matching \(q_{n,1/2}\) is an integer, QME aims to find some \(p\) such that \[ \left\lfloor\frac{\log(1/2)}{\log(1-p)}\right\rfloor = q_{n,1/2} \Leftrightarrow q_{n,1/2} \leq \frac{\log(1/2)}{\log(1-p)} < q_{n,1/2} +1. \] Let us plot the squared differences \((F_X^{-1}(1/2) - q_{n,1/2})^2\).

x <- rgeom(100, 1/3)
L2 <- function(p)
  (qgeom(1/2, p) - median(x))^2
L2(1/3) #theoretical value
## [1] 0
curve(L2(x), 0.10, 0.95, xlab=expression(p), ylab=expression(L2(p)), main="squared differences", n=301)

Any value between [1/3, 5/9] minimizes the squared differences. Therefore, fitdist() may be sensitive to the chosen initial value with deterministic optimization algorithm.

fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/2), control=list(trace=1, REPORT=1))
## initial  value 1.000000 
## iter   2 value 0.000000
## iter   2 value 0.000000
## iter   2 value 0.000000
## final  value 0.000000 
## converged
## Fitting of the distribution ' geom ' by matching quantiles 
## Parameters:
##      estimate
## prob     0.34
fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/20), control=list(trace=1, REPORT=1))
## initial  value 144.000000 
## iter   1 value 144.000000
## final  value 144.000000 
## converged
## Fitting of the distribution ' geom ' by matching quantiles 
## Parameters:
##      estimate
## prob     0.05

The solution is to use a stochastic algorithm such as simulated annealing (SANN).

fitdist(x, "geom", method="qme", probs=1/2, optim.method="SANN", start=list(prob=1/20))
## Fitting of the distribution ' geom ' by matching quantiles 
## Parameters:
##      estimate
## prob    0.497
fitdist(x, "geom", method="qme", probs=1/2, optim.method="SANN", start=list(prob=1/2))
## Fitting of the distribution ' geom ' by matching quantiles 
## Parameters:
##      estimate
## prob    0.401

Let us consider the Poisson distribution defined by the following mass probability and the cumulative distribution functions \[ P(X=k)=\frac{\lambda^k}{k!}\exp(-\lambda),~ F_X(x) = \exp(-\lambda)\sum_{k=0}^{\lfloor x \rfloor}\frac{\lambda^k}{k!},~ x\geq 0. \] The quantile function \(F_X^{-1}(p)=\inf(x, F_X(x)\geq p)\) simplifies to \[ F_X^{-1}(p) = i \text{ such that } \sum_{k=0}^{i-1} P(X=k) \leq p < \sum_{k=0}^{i} P(X=k). \] Again, the quantile function is a step function \[ F_X^{-1}(p) = \left\{ \begin{array}{ll} 0 & \text{if } p < P(X=0) \\ 1 & \text{if } P(X=0) \leq p < P(X=0)+P(X=1) \\ 2 & \text{if } P(X=0)+P(X=1) \leq p < P(X=0)+P(X=1)+P(X=2) \\ \dots \\ i & \text{if } \sum_{k=0}^{i-1} P(X=k) \leq p < \sum_{k=0}^{i} P(X=k) \\ \dots \\ \end{array} \right. \]

Again, the squared differences is a step function \((F_X^{-1}(1/2) - q_{n,1/2})^2\).

par(mar=c(4,4,2,1))
x <- rpois(100, lambda=7.5)
L2 <- function(lam)
  (qpois(1/2, lambda = lam) - median(x))^2
curve(L2(x), 6, 9, xlab=expression(lambda), ylab=expression(L2(lambda)), main="squared differences", n=201)

Therefore, using fitdist() may be sensitive to the chosen initial value.

fitdist(x, "pois", method="qme", probs=1/2, start=list(lambda=2))
## Fitting of the distribution ' pois ' by matching quantiles 
## Parameters:
##        estimate
## lambda        2
fitdist(x, "pois", method="qme", probs=1/2, optim.method="SANN", start=list(lambda=2))
## Fitting of the distribution ' pois ' by matching quantiles 
## Parameters:
##        estimate
## lambda     6.73

4 Questions regarding uncertainty

4.1 Can we compute marginal confidence intervals on parameter estimates from their reported standard error ?

In statistics, deriving marginal confidence intervals on MLE parameter estimates using the approximation of their standard errors (calculated from the hessian) is a quite common procedure. It is based on the wald approximation which stands that when the sample size \(n\) is sufficiently high, the marginal \(95\%\) confidence on the ith component \(\theta_i\) of a model parameter \(\theta\) estimated by maximum likelihood (estimate denoted \(\hat \theta\)) can be approximated by : \(\hat \theta_i \pm 1.96 \times SE(\hat \theta_i )\) with \(SE(\hat \theta_i )\) the ith term of the diagonal of the covariance matrix of the estimates (\(V_{ii}\)). \(V\) is generally approximated by the inverse of the Fisher information matrix (\(I(\hat \theta)\)). The Fisher information matrix corresponds to the opposite of the hessian matrix evaluated on the MLE estimate. Let us recall that the hessian matrix is defined by \(H_{ij}(y, \theta) = \frac{\partial^2 L(y, \theta)}{\partial \theta_i \partial \theta_j}\) with \(L(y, \theta)\) the loglikelihod function for data \(y\) and parameter \(\theta\).

Before using this approximation, one must keep in mind that its validity does not only depend on the sample size. It also strongly depends on the data, of the distribution, and also on the parameterization of the distribution. For this reason we recommend potential users of the Wald approximation to compare the results to the ones obtained using the bootstrap procedure (see below) before using this approximation. A look at the loglikelihood contours is also interesting as the Wald approximation assumes elliptical contours. In a more general context, we recommend the use of bootstrap to compute confidence intervals on parameters or on any function of those parameters.

Below you will find two examples, one for which Wald confidence intervals seem correct and one for which they give wrong results, with parameter values even outside their possible range (negative rate bound for the gamma distribution).

set.seed(1234)
n <- rnorm(30, mean = 10, sd = 2)
fn <- fitdist(n, "norm")
bn <- bootdist(fn)
bn$CI
##      Median 2.5% 97.5%
## mean   9.41 8.78 10.02
## sd     1.73 1.33  2.15
fn$estimate + cbind("estimate"= 0, "2.5%"= -1.96*fn$sd, "97.5%"= 1.96*fn$sd)
##      estimate 2.5% 97.5%
## mean     9.41 8.77 10.04
## sd       1.78 1.33  2.22
llplot(fn, back.col = FALSE)

set.seed(1234)
g <- rgamma(30, shape = 0.1, rate = 10)
fg <- fitdist(g, "gamma")
bg <- bootdist(fg)
bg$CI
##        Median   2.5%   97.5%
## shape  0.0923 0.0636   0.145
## rate  30.0782 9.6306 146.660
fg$estimate + cbind("estimate"= 0, "2.5%"= -1.96*fg$sd, "97.5%"= 1.96*fg$sd)
##       estimate    2.5%  97.5%
## shape   0.0882  0.0553  0.121
## rate   24.2965 -6.3504 54.944
llplot(fg, back.col = FALSE)

4.2 How can we compute confidence intervals on quantiles from the fit of a distribution ?

The quantile() function can be used to calculate any quantile from a fitted distribution when it is called with an object of class fitdist or fitdistcens as the first argument. When called with an object of class bootdist or bootdistcens as the first argument, quantiles are returned accompanied with a confidence interval calculated using the bootstraped sample of parameters. Moreover, you can use the CIcdfplot() function to plot the fitted distribution as a CDF curve surrounded by a band corresponding to pointwise intervals on the quantiles. See an example below on censored data corresponding to 72-hour acute salinity tolerance (LC50values) of rivermarine invertebrates.

data(salinity)
log10LC50 <-log10(salinity)
fit <- fitdistcens(log10LC50, "norm")
# Bootstrap 
bootsample <- bootdistcens(fit, niter = 101)
#### We used only 101 iterations in that example to limit the calculation time but
#### in practice you should take at least 1001 bootstrap iterations
# Calculation of the quantile of interest (here the 5 percent hazard concentration)
(HC5 <- quantile(bootsample, probs = 0.05))
## (original) estimated quantiles for each specified probability (censored data)
##          p=0.05
## estimate   1.12
## Median of bootstrap estimates
##          p=0.05
## estimate   1.13
## 
## two-sided 95 % CI of each quantile
##        p=0.05
## 2.5 %    1.04
## 97.5 %   1.19
# visualizing pointwise confidence intervals on other quantiles
CIcdfplot(bootsample, CI.output = "quantile", CI.fill = "pink", xlim = c(0.5,2), main = "")

4.3 How can we compute confidence intervals on any function of the parameters of the fitted distribution ?

The bootstrap sample of parameter estimates can be used to calculate a bootstrap sample of any variable defined as a function of the parameters of the fitted distribution. From such a bootstrap sample you can easily compute a conidence interval using percentiles. Below is an example that uses the bootstrap sample of parameters from the previous example (FAQ 4.2) to calculate a 95 percent confidence interval on the Potentially Affected Portion (PAF) of species at a given exposure to salinity (fixed to 1.2 in log10 in this example).

exposure <- 1.2
# Bootstrap sample of the PAF at this exposure
PAF <- pnorm(exposure, mean = bootsample$estim$mean, sd = bootsample$estim$sd)
# confidence interval from 2.5 and 97.5 percentiles
quantile(PAF, probs = c(0.025, 0.975))
##   2.5%  97.5% 
## 0.0541 0.1633

For more complex calculations especially to tranfer uncertainty within a quantitative risk assessment, we recommend the use of the package mc2d which aims at making such calculations easy and which gives extensive examples of use of such bootstrap samples of parameters estimated using functions of the package fitdistrplus.

5 How to personalize plots

5.1 Can I personalize the default plot given for an object of class fitdist or fitdistcens?

The default plot given by using the plot() function on an object of class fitdist or fitdistcens is hard to personalize. Indeed this plot was designed only to give a quick overview of the fit, not to be used as a graph in a manuscript or a formal presentation. To personalize some of (or all) the goodness-of-fit plots, you should rather use specific graphical functions, denscomp, cdfcomp, ppcomp, qqcomp or cdfcompcens (see how in the following paragraphs).

5.2 How to personalize goodness-of-fit plots ?

The default plot of an object of class fitdist can be easily reproduced and personalized using denscomp, cdfcomp, ppcomp and qqcomp.

data(groundbeef)
serving <- groundbeef$serving
fit <- fitdist(serving, "gamma")
par(mfrow = c(2,2), mar = c(4, 4, 1, 1))
denscomp(fit, addlegend = FALSE, main = "", xlab = "serving sizes (g)", fitcol = "orange")
qqcomp(fit, addlegend = FALSE, main = "", fitpch = 16, fitcol = "grey", line01lty = 2)
cdfcomp(fit, addlegend = FALSE, main = "", xlab = "serving sizes (g)", fitcol = "orange", lines01 = TRUE)
ppcomp(fit, addlegend = FALSE, main = "", fitpch = 16, fitcol = "grey", line01lty = 2)

In a similar way, the default plot of an object of class fitdistcens can be easily personalized using cdfcompcens.

5.3 Is it possible to obtain ggplot2 plots ?

An argument plotstyle was added to functions denscomp, cdfcomp, ppcomp, qqcompand cdfcompcens, ppcompcens, qqcompcens to enable the generation of plots using the ggplot2 package. This argument by default fixed at graphics must simply be fixed at ggplot for this purpose, as in the following example. In that latter case the graphical functions return a graphic object that can be further personalized using ggplot2 functions.

library(ggplot2)
fitW <- fitdist(serving, "weibull")
fitln <- fitdist(serving, "lnorm")
fitg <- fitdist(serving, "gamma")
dcomp <- denscomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"),
    xlab = "serving sizes (g)", xlim = c(0, 250), 
    fitcol = c("red", "green", "orange"), fitlty = 1, 
    xlegend = "topright", plotstyle = "ggplot", addlegend = FALSE)
dcomp + ggplot2::theme_minimal() + ggplot2::ggtitle("Ground beef fits")

6 Questions regarding (left, right and/or interval) censored data

6.1 How to code censored data in fitdistrplus ?

Censored data must be rpresented in the package by a dataframe of two columns respectively named left and right, describing each observed value as an interval. The left column contains either NA for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either NA for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. This type of representation corresponds to the coding names "interval2" in function Surv of the package survival. There is no other way to represent censored data in fitdistrplus for the moment. You have a toy example below.

dtoy <- data.frame(left = c(NA, 2, 4, 6, 9.7, 10), right = c(1, 3, 7, 8, 9.7, NA))
dtoy
##   left right
## 1   NA   1.0
## 2  2.0   3.0
## 3  4.0   7.0
## 4  6.0   8.0
## 5  9.7   9.7
## 6 10.0    NA

6.2 How do I use the output of Surv() to code the input of fitdistcens()?

Let us consider a right-censored dataset for human life: twenty values randomly chosen from canlifins dataset of CASdatasets package.

exitage <- c(81.1,78.9,72.6,67.9,60.1,78.3,83.4,66.9,74.8,80.5,75.6,67.1,
             75.3,82.8,70.1,85.4,74,70,71.6,76.5)
death <- c(0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0)

The Surv() function can handle many type of censoring, we focus only on right-censoring.

svdata <- Surv(exitage, death)

In order to match the input of, we replace non-censored data.

fitdstdata <- cbind.data.frame(left=svdata[,"time"], right=NA)
fitdstdata$right[svdata[,"status"] == 1] <- fitdstdata$left[svdata[,"status"] == 1]

Let us now fit two simple distributions.

flnormc <- fitdistcens(fitdstdata, "lnorm")
fweic <- fitdistcens(fitdstdata, "weibull")
cdfcompcens(list(fweic, flnormc), xlim=range(exitage), xlegend = "topleft")

6.3 How to represent an empirical distribution from censored data ?

The representation of an empirical distribution from censored data is not a trivial problem. One can simply represent each observation as an interval at an y-value defined by the rank of the observation as done below using function plotdistcens. This representation can be interesting to visualize the raw data, but it remains difficult to correctly order the observations in any case (see the example below on the right using data smokedfish).

par(mfrow = c(1,2), mar = c(3, 4, 3, 0.5))
plotdistcens(dtoy, NPMLE = FALSE)
data(smokedfish)
dsmo <-  log10(smokedfish)
plotdistcens(dsmo, NPMLE = FALSE)

Many authors worked on the development of algorithms for non parametric maximum likelihood estimation (NPMLE) of the empirical cumulative distribution function (ECDF) from interval censored data (including left and right censored data that can be considered as interval censored data with one bound at infinity). In old versions of fitdistrplus we used the Turnbull algorithm using calls to functions of the package survival. Even if this type of plot is still available in the package, the default plot now uses the function npsurv of the package npsurv. This package provides more performant algorithms developped by Yong Wang (see references cited in the help page of plotdistcens).

par(mfrow = c(2, 1),  mar = c(3, 4, 3, 0.5))
# Turnbull plot of the ECDF
plotdistcens(dsmo, NPMLE.method = "Turnbull", xlim = c(-1.8, 2.4))
# Wang plot of the ECD
plotdistcens(dsmo, NPMLE.method = "Wang")

As you can see in the above example, npsurv also provides a different type of plot for the ECDF, representing by filled rectangles the zones of non-uniqueness of the NPMLE ECDF. Indeed an NPMLE algorithm generally proceeds in two steps.

  1. The first step aims at identifying equivalence classes (also named in the litterture Turnbull intervals or maximal intersection intervals or innermost intervals or maximal cliques of the data). Equivalences classess are points/intervals under which the NPMLE ECDF may change. Equivalence classes have been shown to correspond to regions between a left bound of an interval (named L in the following plot on a the previous toy example) immediately followed by a right bound of an interval (named R in the following plot). An equivalence class may be of null length (for example at each non censored value).

  2. The second step aims at assigning a probability mass to each equivalence class, which may be zero on some classes. The NPMLE is unique only up to these equivalence classes and this non uniqueness of the NPMLE ECDF is represented by filled rectangles.

Various NPMLE algorithms are implemented in the packages Icens, interval and npsurv. They are more or less performant and all of them do not enable the handling of other data than survival data, especially with left censored observations.

6.4 How to assess the goodness-of-fit of a distribution fitted on censored data ?

The only available method in fitdistrplus to fit distributions on censored data is the maximum likelihood estimation (MLE). Once a distribution is fitted using fitdistcens, AIC and BIC values can be found in the summary of the object of class fitdistcens returned by the function. Those values can be used to compare the fit of various distributions on a same dataset. Function gofstat is not yet proposed in our package for fits on censored data but we plan to develop it in the future with the calculation of other goodness-of-fit statistics for censored data.

fnorm <- fitdistcens(dsmo,"norm")
flogis <- fitdistcens(dsmo,"logis")
# comparison of AIC values
summary(fnorm)$aic
## [1] 178
summary(flogis)$aic
## [1] 177

Considering goodness-of-fit plots, the generic plot function of an object of class fitdistcensprovides three plots, one in CDF using the NPMLE ECDF plot (by default using the Wang prepresentation, see previous part for details), a Q-Q plot and a P-P plot simply derived from the Wang plot of the ECDF, with filled rectangles indicating non uniqueness of the NPMLE ECDF.

par(mar = c(2, 4, 3, 0.5))
plot(fnorm)

Functions cdfcompcens(), qqcompens() and ppcompcens() can be used to individualize and personnalize CDF, Q-Q and P-P goodness-of-fit plots and/or to compare the fit of various distributions on a same dataset.

cdfcompcens(list(fnorm, flogis), fitlty = 1)

qqcompcens(list(fnorm, flogis))

ppcompcens(list(fnorm, flogis))

Considering Q-Q plots and P-P plots, it may be easier to compare various fits by splitting the plots as below which is done automatically using the plotstyle ggplot in qqcompens() and ppcompcens() but can also be done manually with the plotstyle graphics.

qqcompcens(list(fnorm, flogis), lwd = 2, plotstyle = "ggplot",
  fitcol = c("red", "green"), fillrect = c("pink", "lightgreen"),
  legendtext = c("normal distribution", "logistic distribution"))

fitdistrplus/inst/doc/paper2JSS.Rnw0000644000176200001440000022206613342003075016776 0ustar liggesusers\documentclass{article} % sweave commands for vignette %\VignetteIndexEntry{Fit parametric distributions on non-censored or censored data} %\VignettePackage{fitdistrplus} %\VignetteKeyword{distribution} %%% %%% TITLE: fitdistrplus: an R Package for Fitting Distributions %%% AUTHORS: Marie Laure Delignette Muller*, Christophe Dutang %%% * Corresponding author %%% AFFILIATION: LBBE, Université Claude Bernard Lyon 1, Lyon, France %%% ADDRESS: VetAgro Sup Campus Vétérinaire de Lyon %%% 1, avenue Bourgelat %%% 69820 MARCY L'ETOILE, France %%% PHONE: +33 4 78 87 27 40 %%% FAX: +33 4 78 87 27 12 %%% EMAIL: marielaure.delignettemuller@vetagro-sup.fr %%% \usepackage{amsmath,amsthm,amssymb} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} %\usepackage[english]{babel} %% need no \usepackage{Sweave} \usepackage{color, graphics} \usepackage[a4paper, textwidth=18cm, textheight=27cm]{geometry} \newcommand{\sigle}{\textsc} \newcommand{\pkg}{\textbf} %defined in jss.cls \newcommand{\code}{\texttt} %defined in jss.cls \newcommand{\proglang}{\textsf} %defined in jss.cls %layout \newcommand{\HRuleTop}{\noindent\rule{\linewidth}{.5pt}} \newcommand{\HRuleBottom}{\rule{\linewidth}{.5pt}} \usepackage{natbib,url} %\usepackage[hyperfootnotes=false]{hyperref} \author{ Marie Laure Delignette-Muller \\ Universit\'e de Lyon\\ Christophe Dutang \\ Universit\'e de Strasbourg} %\Plainauthor{Marie Laure Delignette-Muller} \title{\pkg{fitdistrplus}: An \proglang{R} Package for Fitting Distributions} %\Plaintitle{fitdistrplus: an R Package for Fitting Distributions} \date{October 2014 \footnote{Paper accepted in the Journal of Statistical Software} (revised in July 2018)} %quantile matching, maximum goodness-of-fit, distributions, R} %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{50} %% \Issue{9} %% \Month{June} %% \Year{2012} %% \Submitdate{2012-09-04} %% \Acceptdate{2012-09-04} % \Address{ % Marie Laure Delignette-Muller \\ % Universit\'e de Lyon\\ % Universit\'e Lyon 1, CNRS, UMR5558, Laboratoire de Biom\'etrie et Biologie \'evolutive\\ % VetAgro Sup, Campus V\'et\'erinaire de Lyon \\ % 1, avenue Bourgelat \\ % 69820 MARCY L'ETOILE\\ % France \\ % E-mail: \email{marielaure.delignettemuller@vetagro-sup.fr} \\ % URL: \url{http://lbbe.univ-lyon1.fr/-Delignette-Muller-Marie-Laure-.html} % } % \newcommand{\Sconcordance}[1]{% % \ifx\pdfoutput\undefined% % \csname newcount\endcsname\pdfoutput\fi% % \ifcase\pdfoutput\special{#1}% % \else% % \begingroup% % \pdfcompresslevel=0% % \immediate\pdfobj stream{#1}% % \pdfcatalog{/SweaveConcordance \the\pdflastobj\space 0 R}% % \endgroup% % \fi} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle \begin{abstract}% \HRuleTop\\ The package \pkg{fitdistrplus} provides functions for fitting univariate distributions to different types of data (continuous censored or non-censored data and discrete data) and allowing different estimation methods (maximum likelihood, moment matching, quantile matching and maximum goodness-of-fit estimation). Outputs of \code{fitdist} and \code{fitdistcens} functions are S3 objects, for which kind generic methods are provided, including \code{summary}, \code{plot} and \code{quantile}. This package also provides various functions to compare the fit of several distributions to a same data set and can handle bootstrap of parameter estimates. Detailed examples are given in food risk assessment, ecotoxicology and insurance contexts.\\ \HRuleBottom \end{abstract} \textit{Keywords}: {probability distribution fitting, bootstrap, censored data, maximum likelihood, moment matching, quantile matching, maximum goodness-of-fit, distributions, \proglang{R}} %\Plainkeywords{probability distribution fitting, bootstrap, censored data, maximum likelihood, moment matching, %, prefix.string=figs/jss %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. \section{Introduction} \label{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fitting distributions to data is a very common task in statistics and consists in choosing a probability distribution modelling the random variable, as well as finding parameter estimates for that distribution. This requires judgment and expertise and generally needs an iterative process of distribution choice, parameter estimation, and quality of fit assessment. In the \proglang{R} \citep{R13} package \pkg{MASS} \citep{MASS}, maximum likelihood estimation is available via the \code{fitdistr} function; other steps of the fitting process can be done using other \proglang{R} functions \citep{Ricci05}. In this paper, we present the \proglang{R} package \pkg{fitdistrplus} \citep{fitdistrplus} implementing several methods for fitting univariate parametric distribution. A first objective in developing this package was to provide \proglang{R} users a set of functions dedicated to help this overall process. The \code{fitdistr} function estimates distribution parameters by maximizing the likelihood function using the \code{optim} function. No distinction between parameters with different roles (e.g., main parameter and nuisance parameter) is made, as this paper focuses on parameter estimation from a general point-of-view. In some cases, other estimation methods could be prefered, such as maximum goodness-of-fit estimation (also called minimum distance estimation), as proposed in the \proglang{R} package \pkg{actuar} with three different goodness-of-fit distances \citep{actuarJSS}. While developping the \pkg{fitdistrplus} package, a second objective was to consider various estimation methods in addition to maximum likelihood estimation (MLE). Functions were developped to enable moment matching estimation (MME), quantile matching estimation (QME), and maximum goodness-of-fit estimation (MGE) using eight different distances. Moreover, the \pkg{fitdistrplus} package offers the possibility to specify a user-supplied function for optimization, useful in cases where classical optimization techniques, not included in \code{optim}, are more adequate. In applied statistics, it is frequent to have to fit distributions to censored data \citep{kleinmoeschberger03, helsel05,busschaertetal10,lehaetal11,commeauetal12}. The \pkg{MASS} \code{fitdistr} function does not enable maximum likelihood estimation with this type of data. Some packages can be used to work with censored data, especially survival data \citep{survival,hiranoetal94,jordan05}, but those packages generally focus on specific models, enabling the fit of a restricted set of distributions. A third objective is thus to provide \proglang{R} users a function to estimate univariate distribution parameters from right-, left- and interval-censored data. Few packages on \sigle{CRAN} provide estimation procedures for any user-supplied parametric distribution and support different types of data. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \pkg{distrMod} package \citep{distrModJSS} provides an object-oriented (S4) implementation of probability models and includes distribution fitting procedures for a given minimization criterion. This criterion is a user-supplied function which is sufficiently flexible to handle censored data, yet not in a trivial way, see Example M4 of the \pkg{distrMod} vignette. The fitting functions \code{MLEstimator} and \code{MDEstimator} return an S4 class for which a coercion method to class mle is provided so that the respective functionalities (e.g., \code{confint} and \code{logLik}) from package \pkg{stats4} are available, too. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% In \pkg{fitdistrplus}, we chose to use the standard S3 class system for its understanding by most \proglang{R} users. When designing the \pkg{fitdistrplus} package, we did not forget to implement generic functions also available for S3 classes. Finally, various other packages provide functions to estimate the mode, the moments or the L-moments of a distribution, see the reference manuals of \pkg{modeest}, \pkg{lmomco} and \pkg{Lmoments} packages. This manuscript reviews the various features of version 1.0-2 of \pkg{fitdistrplus}. The package is available from the Comprehensive \proglang{R} Archive Network at \url{http://cran.r-project.org/package=fitdistrplus}. The development version of the package is located at \proglang{R}-forge as one package of the project ``Risk Assessment with \proglang{R}'' (\url{http://r-forge.r-project.org/projects/riskassessment/}). The paper is organized as follows: Section \ref{fitnoncenscont} presents tools for fitting continuous distributions to classic non-censored data. Section \ref{advtopic} deals with other estimation methods and other types of data, before Section \ref{ccl} concludes. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section[Fitting distributions]{Fitting distributions to continuous non-censored data}\label{fitnoncenscont} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Choice of candidate distributions} \label{Choice} For illustrating the use of various functions of the \pkg{fitdistrplus} package with continuous non-censored data, we will first use a data set named \code{groundbeef} which is included in our package. This data set contains pointwise values of serving sizes in grams, collected in a French survey, for ground beef patties consumed by children under 5 years old. It was used in a quantitative risk assessment published by \cite{Delignette08}. %%% R code set default options for all R schunks <>= options(digits = 4, prompt="R> ", SweaveHooks=list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1)))) set.seed(1234) @ %%% R code <>= library("fitdistrplus") data("groundbeef") str(groundbeef) @ Before fitting one or more distributions to a data set, it is generally necessary to choose good candidates among a predefined set of distributions. This choice may be guided by the knowledge of stochastic processes governing the modelled variable, or, in the absence of knowledge regarding the underlying process, by the observation of its empirical distribution. To help the user in this choice, we developed functions to plot and characterize the empirical distribution. First of all, it is common to start with plots of the empirical distribution function and the histogram (or density plot), which can be obtained with the \code{plotdist} function of the \pkg{fitdistrplus} package. This function provides two plots (see Figure~\ref{plotdistcont}): the left-hand plot is by default the histogram on a density scale (or density plot of both, according to values of arguments \code{histo} and \code{demp}) and the right-hand plot the empirical cumulative distribution function (CDF). %%% R code <>= plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htb!] \centering %%% R code <>= plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) @ \caption{Histogram and CDF plots of an empirical distribution for a continuous variable (serving size from the \code{groundbeef} data set) as provided by the \code{plotdist} function.} \label{plotdistcont} \end{figure} In addition to empirical plots, descriptive statistics may help to choose candidates to describe a distribution among a set of parametric distributions. Especially the skewness and kurtosis, linked to the third and fourth moments, are useful for this purpose. A non-zero skewness reveals a lack of symmetry of the empirical distribution, while the kurtosis value quantifies the weight of tails in comparison to the normal distribution for which the kurtosis equals 3. The skewness and kurtosis and their corresponding unbiased estimator \citep{casellaberger02} from a sample $(X_i)_i \stackrel{\text{i.i.d.}}{\sim} X$ with observations $(x_i)_i$ are given by \begin{equation} \label{skewness} sk(X) = \frac{E[(X-E(X))^3]}{Var(X)^{\frac{3}{2}}}~,~ \widehat{sk}=\frac{\sqrt{n(n-1)}}{n-2}\times\frac{m_{3}}{m_{2}^{\frac{3}{2}}}, \end{equation} \begin{equation} \label{kurtosis} kr(X) = \frac{E[(X-E(X))^4]}{Var(X)^{2}}~,~ \widehat{kr}=\frac{n-1}{(n-2)(n-3)}((n+1) \times \frac{m_{4}}{m_{2}^{2}}-3(n-1)) + 3, \end{equation} where $m_{2}$, $m_{3}$, $m_{4}$ denote empirical moments defined by $m_{k}=\frac{1}{n}\sum_{i=1}^n(x_{i}-\overline{x})^{k}$, with $x_{i}$ the $n$ observations of variable $x$ and $\overline{x}$ their mean value. The \code{descdist} function provides classical descriptive statistics (minimum, maximum, median, mean, standard deviation), skewness and kurtosis. By default, unbiased estimations of the three last statistics are provided. Nevertheless, the argument \code{method} can be changed from \code{"unbiased"} (default) to \code{"sample"} to obtain them without correction for bias. A skewness-kurtosis plot such as the one proposed by \cite{Cullen99} is provided by the \code{descdist} function for the empirical distribution (see Figure~\ref{Cullenplotcont} for the \code{groundbeef} data set). On this plot, values for common distributions are displayed in order to help the choice of distributions to fit to data. For some distributions (normal, uniform, logistic, exponential), there is only one possible value for the skewness and the kurtosis. Thus, the distribution is represented by a single point on the plot. For other distributions, areas of possible values are represented, consisting in lines (as for gamma and lognormal distributions), or larger areas (as for beta distribution). Skewness and kurtosis are known not to be robust. In order to take into account the uncertainty of the estimated values of kurtosis and skewness from data, a nonparametric bootstrap procedure \citep{efrontibshirani94} can be performed by using the argument \code{boot}. %to an integer above 10. Values of skewness and kurtosis are computed on bootstrap samples (constructed by random sampling with replacement from the original data set) and reported on the skewness-kurtosis plot. Nevertheless, the user needs to know that skewness and kurtosis, like all higher moments, have a very high variance. This is a problem which cannot be completely solved by the use of bootstrap. The skewness-kurtosis plot should then be regarded as indicative only. The properties of the random variable should be considered, notably its expected value and its range, as a complement to the use of the \code{plotdist} and \code{descdist} functions. Below is a call to the \code{descdist} function to describe the distribution of the serving size from the \code{groundbeef} data set and to draw the corresponding skewness-kurtosis plot (see Figure~\ref{Cullenplotcont}). Looking at the results on this example with a positive skewness and a kurtosis not far from 3, the fit of three common right-skewed distributions could be considered, Weibull, gamma and lognormal distributions. %%% R code <>= descdist(groundbeef$serving, boot = 1000) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb] \centering %%% R code <>= descdist(groundbeef$serving, boot = 1000) @ \caption{Skewness-kurtosis plot for a continuous variable (serving size from the \code{groundbeef} data set) as provided by the \code{descdist} function.} \label{Cullenplotcont} \end{figure} \newpage \subsection[Maximum likelihood]{Fit of distributions by maximum likelihood estimation} \label{FIT} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Once selected, one or more parametric distributions $f(.\vert \theta)$ (with parameter $\theta\in\mathbb{R}^d$) may be fitted to the data set, one at a time, using the \code{fitdist} function. Under the i.i.d. sample assumption, distribution parameters $\theta$ are by default estimated by maximizing the likelihood function defined as: \begin{equation} \label{likelihood} L(\theta)=\prod_{i=1}^n f(x_{i}\vert \theta) \end{equation} with $x_{i}$ the $n$ observations of variable $X$ and $f(.\vert \theta)$ the density function of the parametric distribution. The other proposed estimation methods are described in Section~\ref{Alternatives}. The \code{fitdist} function returns an S3 object of class \code{"fitdist"} for which \code{print}, \code{summary} and \code{plot} functions are provided. The fit of a distribution using \code{fitdist} assumes that the corresponding \code{d}, \code{p}, \code{q} functions (standing respectively for the density, the distribution and the quantile functions) are defined. Classical distributions are already defined in that way in the \pkg{stats} package, e.g., \code{dnorm}, \code{pnorm} and \code{qnorm} for the normal distribution (see \code{?Distributions}). Others may be found in various packages (see the CRAN task view: Probability Distributions at \url{https://CRAN.R-project.org/view=Distributions}). Distributions not found in any package must be implemented by the user as \code{d}, \code{p}, \code{q} functions. In the call to \code{fitdist}, a distribution has to be specified via the argument \code{dist} either by the character string corresponding to its common root name used in the names of \code{d}, \code{p}, \code{q} functions (e.g., \code{"norm"} for the normal distribution) or by the density function itself, from which the root name is extracted (e.g., \code{dnorm} for the normal distribution). Numerical results returned by the \code{fitdist} function are (1) the parameter estimates, (2) the estimated standard errors (computed from the estimate of the Hessian matrix at the maximum likelihood solution), (3) the loglikelihood, (4) Akaike and Bayesian information criteria (the so-called AIC and BIC), and (5) the correlation matrix between parameter estimates. Below is a call to the \code{fitdist} function to fit a Weibull distribution to the serving size from the \code{groundbeef} data set. %%% R code <>= fw <- fitdist(groundbeef$serving, "weibull") summary(fw) @ The plot of an object of class \code{"fitdist"} provides four classical goodness-of-fit plots \citep{Cullen99} presented on Figure~\ref{groundbeef:comp}: \begin{itemize} \item a density plot representing the density function of the fitted distribution along with the histogram of the empirical distribution, \item a CDF plot of both the empirical distribution and the fitted distribution, \item a Q-Q plot representing the empirical quantiles (y-axis) against the theoretical quantiles (x-axis) \item a P-P plot representing the empirical distribution function evaluated at each data point (y-axis) against the fitted distribution function (x-axis). \end{itemize} For CDF, Q-Q and P-P plots, the probability plotting position is defined by default using Hazen's rule, with probability points of the empirical distribution calculated as \code{(1:n - 0.5)/n}, as recommended by \cite{Blom}. This plotting position can be easily changed (see the reference manual for details \citep{fitdistrplus}). % using the arguments %\code{use.ppoints} and \code{a.ppoints}. When \code{use.ppoints = TRUE}, %the argument \code{a.ppoints} is passed to the \code{ppoints} function from the \pkg{stats} package to %define the %probability points of the empirical distribution as \code{(1:n - a.ppoints)/(n - 2a.ppoints + 1)}. %When \code{use.ppoints = FALSE}, the probability points are simply defined as \code{1:n / n}. Unlike the generic \code{plot} function, the \code{denscomp}, \code{cdfcomp}, \code{qqcomp} and \code{ppcomp} functions enable to draw separately each of these four plots, in order to compare the empirical distribution and multiple parametric distributions fitted on a same data set. These functions must be called with a first argument corresponding to a list of objects of class \code{fitdist}, and optionally further arguments to customize the plot (see the reference manual for lists of arguments that may be specific to each plot \citep{fitdistrplus}). In the following example, we compare the fit of a Weibull, a lognormal and a gamma distributions to the \code{groundbeef} data set (Figure~\ref{groundbeef:comp}). %%% R code <>= fg <- fitdist(groundbeef$serving, "gamma") fln <- fitdist(groundbeef$serving, "lnorm") par(mfrow = c(2, 2)) plot.legend <- c("Weibull", "lognormal", "gamma") denscomp(list(fw, fln, fg), legendtext = plot.legend) qqcomp(list(fw, fln, fg), legendtext = plot.legend) cdfcomp(list(fw, fln, fg), legendtext = plot.legend) ppcomp(list(fw, fln, fg), legendtext = plot.legend) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htb!] \centering <>= par(mfrow=c(2, 2)) denscomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) qqcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) cdfcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) ppcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) @ \caption{Four Goodness-of-fit plots for various distributions fitted to continuous data (Weibull, gamma and lognormal distributions fitted to serving sizes from the \code{groundbeef} data set) as provided by functions \code{denscomp}, \code{qqcomp}, \code{cdfcomp} and \code{ppcomp}.} \label{groundbeef:comp} \end{figure} The density plot and the CDF plot may be considered as the basic classical goodness-of-fit plots. The two other plots are complementary and can be very informative in some cases. The Q-Q plot emphasizes the lack-of-fit at the distribution tails while the P-P plot emphasizes the lack-of-fit at the distribution center. In the present example (in Figure~\ref{groundbeef:comp}), none of the three fitted distributions correctly describes the center of the distribution, but the Weibull and gamma distributions could be prefered for their better description of the right tail of the empirical distribution, especially if this tail is important in the use of the fitted distribution, as it is in the context of food risk assessment. The data set named \code{endosulfan} will now be used to illustrate other features of the \pkg{fitdistrplus} package. This data set contains acute toxicity values for the organochlorine pesticide endosulfan (geometric mean of LC50 ou EC50 values in $\mu g.L^{-1}$), tested on Australian and non-Australian laboratory-species \citep{Hose04}. In ecotoxicology, a lognormal or a loglogistic distribution is often fitted to such a data set in order to characterize the species sensitivity distribution (SSD) for a pollutant. A low percentile of the fitted distribution, generally the 5$\%$ percentile, is then calculated and named the hazardous concentration 5$\%$ (HC5). It is interpreted as the value of the pollutant concentration protecting 95$\%$ of the species \citep{Posthuma2010}. But the fit of a lognormal or a loglogistic distribution to the whole \code{endosulfan} data set is rather bad (Figure~\ref{endo:comp}), especially due to a minority of very high values. The two-parameter Pareto distribution and the three-parameter Burr distribution (which is an extension of both the loglogistic and the Pareto distributions) have been fitted. Pareto and Burr distributions are provided in the package \pkg{actuar}. Until here, we did not have to define starting values (in the optimization process) as reasonable starting values are implicity defined within the \code{fitdist} function for most of the distributions defined in \proglang{R} (see \code{?fitdist} for details). For other distributions like the Pareto and the Burr distribution, initial values for the distribution parameters have to be supplied in the argument \code{start}, as a named list with initial values for each parameter (as they appear in the \code{d}, \code{p}, \code{q} functions). Having defined reasonable starting values\footnote{%---- The \code{plotdist} function can plot any parametric distribution with specified parameter values in argument \code{para}. It can thus help to find correct initial values for the distribution parameters in non trivial cases, by iterative calls if necessary (see the reference manual for examples \citep{fitdistrplus}). }, %---- various distributions can be fitted and graphically compared. On this example, the function \code{cdfcomp} can be used to report CDF values in a logscale so as to emphasize discrepancies on the tail of interest while defining an HC5 value (Figure~\ref{endo:comp}). %%% R code <>= data("endosulfan") ATV <-endosulfan$ATV fendo.ln <- fitdist(ATV, "lnorm") library("actuar") fendo.ll <- fitdist(ATV, "llogis", start = list(shape = 1, scale = 500)) fendo.P <- fitdist(ATV, "pareto", start = list(shape = 1, scale = 500)) fendo.B <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE, legendtext = c("lognormal", "loglogistic", "Pareto", "Burr")) @ % qqcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale=TRUE, ylogscale=TRUE, % legendtext = c("lognormal","loglogistic","Pareto","Burr")) \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering <>= cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE,legendtext = c("lognormal","loglogistic","Pareto","Burr")) @ %qqcomp(list(fendo.ln,fendo.ll,fendo.P,fendo.B),xlogscale=TRUE,ylogscale=TRUE, % legendtext = c("lognormal","loglogistic","Pareto","Burr")) \caption{CDF plot to compare the fit of four distributions to acute toxicity values of various organisms for the organochlorine pesticide endosulfan (\code{endosulfan} data set) as provided by the \code{cdfcomp} function, with CDF values in a logscale to emphasize discrepancies on the left tail.} \label{endo:comp} \end{figure} None of the fitted distribution correctly describes the right tail observed in the data set, but as shown in Figure~\ref{endo:comp}, the left-tail seems to be better described by the Burr distribution. Its use could then be considered to estimate the HC5 value as the $5\%$ quantile of the distribution. This can be easily done using the \code{quantile} generic function defined for an object of class \code{"fitdist"}. Below is this calculation together with the calculation of the empirical quantile for comparison. %%% R code <>= quantile(fendo.B, probs = 0.05) quantile(ATV, probs = 0.05) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% In addition to the ecotoxicology context, the \code{quantile} generic function is also attractive in the actuarial--financial context. In fact, the value-at-risk $VAR_\alpha$ is defined as the $1-\alpha$-quantile of the loss distribution and can be computed with \code{quantile} on a \code{"fitdist"} object. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The computation of different goodness-of-fit statistics is proposed in the \pkg{fitdistrplus} package in order to further compare fitted distributions. The purpose of goodness-of-fit statistics aims to measure the distance between the fitted parametric distribution and the empirical distribution: e.g., the distance between the fitted cumulative distribution function $F$ and the empirical distribution function $F_{n}$. When fitting continuous distributions, three goodness-of-fit statistics are classicaly considered: Cramer-von Mises, Kolmogorov-Smirnov and Anderson-Darling statistics \citep{Stephens86}. Naming $x_{i}$ the $n$ observations of a continuous variable $X$ arranged in an ascending order, Table \ref{tabKSCvMAD} gives the definition and the empirical estimate of the three considered goodness-of-fit statistics. They can be computed using the function \code{gofstat} as defined by Stephens \citep{Stephens86}. <>= gofstat(list(fendo.ln, fendo.ll, fendo.P, fendo.B), fitnames = c("lnorm", "llogis", "Pareto", "Burr")) @ \begin{table}[htb!] \begin{center} \begin{tabular}{lll} \hline Statistic & General formula & Computational formula\\ \hline Kolmogorov-Smirnov & $\sup|F_{n}(x) - F(x)|$ & $\max(D^{+},D^{-})$ with\\ (KS) & & $D^{+}=\max\limits_{i=1,\dots,n}\left(\frac{i}{n} - F_i\right)$ \\ & & $D^{-}=\max\limits_{i=1,\dots,n}\left(F_{i}-\frac{i-1}{n}\right)$ \\ \hline Cramer-von Mises & n $\int_{-\infty}^{\infty}(F_{n}(x) - F(x))^2 dx$ & $\frac{1}{12n} + \sum\limits_{i=1}^n \left(F_i-\frac{2i-1}{2n} \right)^{2}$\\ (CvM)&&\\ % cvm <- 1/(12*n) + sum( ( theop - (2 * seq(1:n) - 1)/(2 * n) )^2 ) \hline Anderson-Darling & n $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2}{F(x) (1 - F(x))} dx$ & $-n -\frac{1}{n}\sum\limits_{i=1}^n (2i-1)\log(F_i(1-F_{n+1-i}))$ \\ (AD) & & \\ % ad <- - n - mean( (2 * seq(1:n) - 1) * (log(theop) + log(1 - rev(theop))) ) \hline where $F_i\stackrel{\triangle}{=} F(x_i)$ \end{tabular} \caption{Goodness-of-fit statistics as defined by Stephens \citep{Stephens86}.} \label{tabKSCvMAD} \end{center} \end{table} %\newpage As giving more weight to distribution tails, the Anderson-Darling statistic is of special interest when it matters to equally emphasize the tails as well as the main body of a distribution. This is often the case in risk assessment \citep{Cullen99,Vose10}. For this reason, this statistics is often used to select the best distribution among those fitted. Nevertheless, this statistics should be used cautiously when comparing fits of various distributions. Keeping in mind that the weighting of each CDF quadratic difference depends on the parametric distribution in its definition (see Table \ref{tabKSCvMAD}), Anderson-Darling statistics computed for several distributions fitted on a same data set are theoretically difficult to compare. Moreover, such a statistic, as Cramer-von Mises and Kolmogorov-Smirnov ones, does not take into account the complexity of the model (i.e., parameter number). It is not a problem when compared distributions are characterized by the same number of parameters, but it could systematically promote the selection of the more complex distributions in the other case. Looking at classical penalized criteria based on the loglikehood (AIC, BIC) seems thus also interesting, especially to discourage overfitting. In the previous example, all the goodness-of-fit statistics based on the CDF distance are in favor of the Burr distribution, the only one characterized by three parameters, while AIC and BIC values respectively give the preference to the Burr distribution or the Pareto distribution. The choice between these two distributions seems thus less obvious and could be discussed. Even if specifically recommended for discrete distributions, the Chi-squared statistic may also be used for continuous distributions (see Section~\ref{otherdata} and the reference manual for examples \citep{fitdistrplus}). \subsection[Uncertainty]{Uncertainty in parameter estimates} \label{Uncertainty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The uncertainty in the parameters of the fitted distribution can be estimated by parametric or nonparametric bootstraps using the \code{boodist} function for non-censored data \citep{efrontibshirani94}. This function returns the bootstrapped values of parameters in an S3 class object which can be plotted to visualize the bootstrap region. The medians and the 95 percent confidence intervals of parameters (2.5 and 97.5 percentiles) are printed in the summary. When inferior to the whole number of iterations (due to lack of convergence of the optimization algorithm for some bootstrapped data sets), the number of iterations for which the estimation converges is also printed in the summary. The plot of an object of class \code{"bootdist"} consists in a scatterplot or a matrix of scatterplots of the bootstrapped values of parameters providing a representation of the joint uncertainty distribution of the fitted parameters. Below is an example of the use of the \code{bootdist} function with the previous fit of the Burr distribution to the \code{endosulfan} data set (Figure~\ref{fig:bootstrap}). %%% R code <>= bendo.B <- bootdist(fendo.B, niter = 1001) @ <>= summary(bendo.B) plot(bendo.B) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering <>= plot(bendo.B) @ \caption{Bootstrappped values of parameters for a fit of the Burr distribution characterized by three parameters (example on the \code{endosulfan} data set) as provided by the plot of an object of class \code{"bootdist"}.} \label{fig:bootstrap} \end{figure} Bootstrap samples of parameter estimates are useful especially to calculate confidence intervals on each parameter of the fitted distribution from the marginal distribution of the bootstraped values. It is also interesting to look at the joint distribution of the bootstraped values in a scatterplot (or a matrix of scatterplots if the number of parameters exceeds two) in order to understand the potential structural correlation between parameters (see Figure~\ref{fig:bootstrap}). The use of the whole bootstrap sample is also of interest in the risk assessment field. Its use enables the characterization of uncertainty in distribution parameters. It can be directly used within a second-order Monte Carlo simulation framework, especially within the package \pkg{mc2d} \citep{mc2d}. One could refer to \cite{Pouillot10} for an introduction to the use of \pkg{mc2d} and \pkg{fitdistrplus} packages in the context of quantitative risk assessment. The bootstrap method can also be used to calculate confidence intervals on quantiles of the fitted distribution. For this purpose, a generic \code{quantile} function is provided for class \code{bootdist}. By default, $95\%$ percentiles bootstrap confidence intervals of quantiles are provided. Going back to the previous example from ecotoxicolgy, this function can be used to estimate the uncertainty associated to the HC5 estimation, for example from the previously fitted Burr distribution to the \code{endosulfan} data set. %%% R code <>= quantile(bendo.B, probs = 0.05) @ \begin{small} <>= quantile(bendo.B, probs = 0.05) @ \end{small} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Advanced topics}\label{advtopic} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection[Alternative estimation]{Alternative methods for parameter estimation} \label{Alternatives} This subsection focuses on alternative estimation methods. One of the alternative for continuous distributions is the maximum goodness-of-fit estimation method also called minimum distance estimation method \citep{Stephens86,actuarJSS}. In this package this method is proposed with eight different distances: the three classical distances defined in Table~\ref{tabKSCvMAD}, or one of the variants of the Anderson-Darling distance proposed by \cite{Luceno06} and defined in Table~\ref{modifiedAD}. The right-tail AD gives more weight to the right-tail, the left-tail AD gives more weight only to the left tail. Either of the tails, or both of them, can receive even larger weights by using second order Anderson-Darling Statistics. \begin{table}[htb!] \begin{center} \begin{tabular}{lll} \hline Statistic & General formula & Computational formula\\ \hline Right-tail AD & $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{1 - F(x)} dx$ & $\frac{n}{2} -2\sum\limits_{i=1}^nF_i -\frac{1}{n}\sum\limits_{i=1}^n(2i-1)ln(\overline F_{n+1-i})$ \\ (ADR) & &\\ \hline Left-tail AD & $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(F(x))} dx$ & $-\frac{3n}{2} +2\sum\limits_{i=1}^nF_i -\frac{1}{n}\sum\limits_{i=1}^n(2i-1)ln(F_i)$ \\ (ADL) & &\\ \hline Right-tail AD & $ad2r=\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(1 - F(x))^{2}} dx$ & $ad2r=2\sum\limits_{i=1}^nln(\overline F_i) +\frac{1}{n}\sum\limits_{i=1}^n \frac{2i-1}{\overline F_{n+1-i}}$ \\ 2nd order (AD2R) & &\\ \hline Left-tail AD & $ad2l=\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(F(x))^{2}} dx$ & $ad2l=2\sum\limits_{i=1}^nln(F_i) +\frac{1}{n}\sum\limits_{i=1}^n\frac{2i-1}{F_i}$ \\ 2nd order (AD2L) & &\\ \hline AD 2nd order & $ad2r+ad2l$ & $ad2r+ad2l$ \\ (AD2) & &\\ \hline where $F_i\stackrel{\triangle}{=} F(x_{i})$; & $\overline F_i\stackrel{\triangle}{=}1-F(x_{i})$ \end{tabular} \caption{Modified Anderson-Darling statistics as defined by \cite{Luceno06}.} \label{modifiedAD} \end{center} \end{table} To fit a distribution by maximum goodness-of-fit estimation, one needs to fix the argument \code{method} to \code{"mge"} in the call to \code{fitdist} and to specify the argument \code{gof} coding for the chosen goodness-of-fit distance. This function is intended to be used only with continuous non-censored data. Maximum goodness-of-fit estimation may be useful to give more weight to data at one tail of the distribution. In the previous example from ecotoxicology, we used a non classical distribution (the Burr distribution) to correctly fit the empirical distribution especially on its left tail. In order to correctly estimate the 5$\%$ percentile, we could also consider the fit of the classical lognormal distribution, but minimizing a goodness-of-fit distance giving more weight to the left tail of the empirical distribution. In what follows, the left tail Anderson-Darling distances of first or second order are used to fit a lognormal to \code{endosulfan} data set (see Figure~\ref{plotfitMGE}). %%% R code <>= fendo.ln.ADL <- fitdist(ATV, "lnorm", method = "mge", gof = "ADL") fendo.ln.AD2L <- fitdist(ATV, "lnorm", method = "mge", gof = "AD2L") cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", xlegend = "bottomright", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order")) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering %%% R code <>= cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order"), xlegend = "bottomright") @ \caption{Comparison of a lognormal distribution fitted by MLE and by MGE using two different goodness-of-fit distances : left-tail Anderson-Darling and left-tail Anderson Darling of second order (example with the \code{endosulfan} data set) as provided by the \code{cdfcomp} function, with CDF values in a logscale to emphasize discrepancies on the left tail.} \label{plotfitMGE} \end{figure} Comparing the $5\%$ percentiles (HC5) calculated using these three fits to the one calculated from the MLE fit of the Burr distribution, we can observe, on this example, that fitting the lognormal distribution by maximizing left tail Anderson-Darling distances of first or second order enables to approach the value obtained by fitting the Burr distribution by MLE. %%% R code <>= (HC5.estimates <- c( empirical = as.numeric(quantile(ATV, probs = 0.05)), Burr = as.numeric(quantile(fendo.B, probs = 0.05)$quantiles), lognormal_MLE = as.numeric(quantile(fendo.ln, probs = 0.05)$quantiles), lognormal_AD2 = as.numeric(quantile(fendo.ln.ADL, probs = 0.05)$quantiles), lognormal_AD2L = as.numeric(quantile(fendo.ln.AD2L, probs = 0.05)$quantiles))) @ %\subsubsection{Moment matching estimation} %\label{MME} %%%%%%%%%% The moment matching estimation (MME) is another method commonly used to fit parametric distributions \citep{Vose10}. MME consists in finding the value of the parameter $\theta$ that equalizes the first theoretical raw moments of the parametric distribution to the corresponding empirical raw moments as in Equation~(\ref{moments}): \begin{equation} \label{moments} E(X^{k}|\theta)=\frac{1}{n}\sum_{i=1}^{n}x_{i}^{k} , \end{equation} for $k=1,\ldots,d$, with $d$ the number of parameters to estimate and $x_{i}$ the $n$ observations of variable $X$. For moments of order greater than or equal to 2, it may also be relevant to match centered moments. Therefore, we match the moments given in Equation~(\ref{centmoments}): \begin{equation} \label{centmoments} E(X\vert \theta) = \overline{x} ~,~ E\left((X-E(X))^{k}|\theta\right)=m_k, \text{ for } k=2,\ldots,d, \end{equation} where $m_k$ denotes the empirical centered moments. This method can be performed by setting the argument \code{method} to \code{"mme"} in the call to \code{fitdist}. The estimate is computed by a closed-form formula for the following distributions: normal, lognormal, exponential, Poisson, gamma, logistic, negative binomial, geometric, beta and uniform distributions. In this case, for distributions characterized by one parameter (geometric, Poisson and exponential), this parameter is simply estimated by matching theoretical and observed means, and for distributions characterized by two parameters, these parameters are estimated by matching theoretical and observed means and variances \citep{Vose10}. For other distributions, the equation of moments is solved numerically using the \code{optim} function by minimizing the sum of squared differences between observed and theoretical moments (see the \pkg{fitdistrplus} reference manual for technical details \citep{fitdistrplus}). A classical data set from the Danish insurance industry published in \cite{mcneil97} will be used to illustrate this method. In \pkg{fitdistrplus}, the data set is stored in \code{danishuni} for the univariate version and contains the loss amounts collected at Copenhagen Reinsurance between 1980 and 1990. In actuarial science, it is standard to consider positive heavy-tailed distributions and have a special focus on the right-tail of the distributions. In this numerical experiment, we choose classic actuarial distributions for loss modelling: the lognormal distribution and the Pareto type II distribution \citep{Klugmanetal09}. The lognormal distribution is fitted to \code{danishuni} data set by matching moments implemented as a closed-form formula. On the left-hand graph of Figure~\ref{fig:danish:mme}, the fitted distribution functions obtained using the moment matching estimation (MME) and maximum likelihood estimation (MLE) methods are compared. The MME method provides a more cautious estimation of the insurance risk as the MME-fitted distribution function (resp. MLE-fitted) underestimates (overestimates) the empirical distribution function for large values of claim amounts. %%% R code <>= data("danishuni") str(danishuni) fdanish.ln.MLE <- fitdist(danishuni$Loss, "lnorm") fdanish.ln.MME <- fitdist(danishuni$Loss, "lnorm", method = "mme", order = 1:2) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend = c("lognormal MLE", "lognormal MME"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) @ \setkeys{Gin}{width=0.9\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start=list(shape=10, scale=10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method="mme", order=1:2, memp="memp", start=list(shape=10, scale=10), lower=c(2+1e-6,2+1e-6), upper=c(Inf,Inf)) par(mfrow=c(1, 2)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend=c("lognormal MLE", "lognormal MME"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend=c("Pareto MLE", "Pareto MME"), main="Fitting a Pareto distribution", xlogscale=TRUE, datapch=20) @ \caption{Comparison between MME and MLE when fitting a lognormal or a Pareto distribution to loss data from the \code{danishuni} data set.} \label{fig:danish:mme} \end{figure} In a second time, a Pareto distribution, which gives more weight to the right-tail of the distribution, is fitted. As the lognormal distribution, the Pareto has two parameters, which allows a fair comparison. %The Burr distribution (with its three parameters) would lead to a better fit. We use the implementation of the \pkg{actuar} package providing raw and centered moments for that distribution (in addition to \code{d}, \code{p}, \code{q} and \code{r} functions \citep{actuar12}. Fitting a heavy-tailed distribution for which the first and the second moments do not exist for certain values of the shape parameter requires some cautiousness. This is carried out by providing, for the optimization process, a lower and an upper bound for each parameter. The code below calls the L-BFGS-B optimization method in \code{optim}, since this quasi-Newton allows box constraints\footnote{That is what the B stands for.}. We choose match moments defined in Equation~(\ref{moments}), and so a function for computing the empirical raw moment (called \code{memp} in our example) is passed to \code{fitdist}. For two-parameter distributions (i.e., $d=2$), Equations~(\ref{moments}) and (\ref{centmoments}) are equivalent. <>= library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start = list(shape = 10, scale = 10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method = "mme", order = 1:2, memp = "memp", start = list(shape = 10, scale = 10), lower = c(2+1e-6, 2+1e-6), upper = c(Inf, Inf)) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend = c("Pareto MLE", "Pareto MME"), main = "Fitting a Pareto distribution", xlogscale = TRUE, datapch = ".") gofstat(list(fdanish.ln.MLE, fdanish.P.MLE, fdanish.ln.MME, fdanish.P.MME), fitnames = c("lnorm.mle", "Pareto.mle", "lnorm.mme", "Pareto.mme")) @ As shown on Figure~\ref{fig:danish:mme}, MME and MLE fits are far less distant (when looking at the right-tail) for the Pareto distribution than for the lognormal distribution on this data set. Furthermore, for these two distributions, the MME method better fits the right-tail of the distribution from a visual point of view. This seems logical since empirical moments are influenced by large observed values. In the previous traces, we gave the values of goodness-of-fit statistics. Whatever the statistic considered, the MLE-fitted lognormal always provides the best fit to the observed data. Maximum likelihood and moment matching estimations are certainly the most commonly used method for fitting distributions \citep{Cullen99}. Keeping in mind that these two methods may produce very different results, the user should be aware of its great sensitivity to outliers when choosing the moment matching estimation. This may be seen as an advantage in our example if the objective is to better describe the right tail of the distribution, but it may be seen as a drawback if the objective is different. %\subsubsection{Quantile matching estimation} %\label{QME} %%%%%%%%%% Fitting of a parametric distribution may also be done by matching theoretical quantiles of the parametric distributions (for specified probabilities) against the empirical quantiles (\cite{Tse2009}). The equality of theoretical and empirical qunatiles is expressed by Equation~(\ref{quantiles}) below, which is very similar to Equations~(\ref{moments}) and (\ref{centmoments}): \begin{equation} \label{quantiles} F^{-1}(p_{k}|\theta)=Q_{n,p_{k}} \end{equation} for $k=1,\ldots,d$, with $d$ the number of parameters to estimate (dimension of $\theta$ if there is no fixed parameters) and $Q_{n,p_{k}}$ the empirical quantiles calculated from data for specified probabilities $p_{k}$. Quantile matching estimation (QME) is performed by setting the argument \code{method} to \code{"qme"} in the call to \code{fitdist} and adding an argument \code{probs} defining the probabilities for which the quantile matching is performed. The length of this vector must be equal to the number of parameters to estimate (as the vector of moment orders for MME). Empirical quantiles are computed using the \code{quantile} function of the \pkg{stats} package using \code{type=7} by default (see \code{?quantile} and \cite{hyndmanfan96}). But the type of quantile can be easily changed by using the \code{qty} argument in the call to the \code{qme} function. The quantile matching is carried out numerically, by minimizing the sum of squared differences between observed and theoretical quantiles. %%% R code <>= fdanish.ln.QME1 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(1/3, 2/3)) fdanish.ln.QME2 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(8/10, 9/10)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend = c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) @ Above is an example of fitting of a lognormal distribution to \code{danishuni} data set by matching probabilities $(p_1= 1/3, p_2=2/3)$ and $(p_1= 8/10, p_2=9/10)$. As expected, the second QME fit gives more weight to the right-tail of the distribution. %, despite we do not choose the Pareto type-II distribution. Compared to the maximum likelihood estimation, the second QME fit best suits the right-tail of the distribution, whereas the first QME fit best models the body of the distribution. The quantile matching estimation is of particular interest when we need to focus around particular quantiles, e.g., $p=99.5\%$ in the Solvency II insurance context or $p=5\%$ for the HC5 estimation in the ecotoxicology context. \setkeys{Gin}{width=0.5\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend=c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) @ \caption{Comparison between QME and MLE when fitting a lognormal distribution to loss data from the \code{danishuni} data set.} \label{fig:danish:qme} \end{figure} %\clearpage \subsection[Customizing optimization]{Customization of the optimization algorithm} \label{Customization} %%%%%%%%%% Each time a numerical minimization is carried out in the \code{fitdistrplus} package, the \code{optim} function of the \pkg{stats} package is used by default with the \code{"Nelder-Mead"} method for distributions characterized by more than one parameter and the \code{"BFGS"} method for distributions characterized by only one parameter. Sometimes the default algorithm fails to converge. It is then interesting to change some options of the \code{optim} function or to use another optimization function than \code{optim} to minimize the objective function. The argument \code{optim.method} can be used in the call to \code{fitdist} or \code{fitdistcens}. It will internally be passed to \code{mledist}, \code{mmedist}, \code{mgedist} or \code{qmedist}, and to \code{optim} (see \code{?optim} for details about the different algorithms available). Even if no error is raised when computing the optimization, changing the algorithm is of particular interest to enforce bounds on some parameters. For instance, a volatility parameter $\sigma$ is strictly positive $\sigma>0$ and a probability parameter $p$ lies in $p\in [0,1]$. This is possible by using arguments \code{lower} and/or \code{upper}, for which their use automatically forces \code{optim.method="L-BFGS-B"}. Below are examples of fits of a gamma distribution $\mathcal{G}(\alpha, \lambda)$ to the \code{groundbeef} data set with various algorithms. Note that the conjugate gradient algorithm (\code{"CG"}) needs far more iterations to converge (around 2500 iterations) compared to other algorithms (converging in less than 100 iterations). %%% R code <>= data("groundbeef") fNM <- fitdist(groundbeef$serving, "gamma", optim.method = "Nelder-Mead") fBFGS <- fitdist(groundbeef$serving, "gamma", optim.method = "BFGS") fSANN <- fitdist(groundbeef$serving, "gamma", optim.method = "SANN") fCG <- try(fitdist(groundbeef$serving, "gamma", optim.method = "CG", control = list(maxit = 10000))) if(class(fCG) == "try-error") fCG <- list(estimate = NA) @ It is also possible to use another function than \code{optim} to minimize the objective function by specifying by the argument \code{custom.optim} in the call to \code{fitdist}. It may be necessary to customize this optimization function to meet the following requirements. (1) \code{custom.optim} function must have the following arguments: \code{fn} for the function to be optimized and \code{par} for the initialized parameters. (2) \code{custom.optim} should carry out a MINIMIZATION and must return the following components: \code{par} for the estimate, \code{convergence} for the convergence code, \code{value=fn(par)} and \code{hessian}. Below is an example of code written to wrap the \code{genoud} function from the \pkg{rgenoud} package in order to respect our optimization ``template''. The \pkg{rgenoud} package implements the genetic (stochastic) algorithm. %%% R code <>= mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values = par, ...) standardres <- c(res, convergence = 0) return(standardres) } @ The customized optimization function can then be passed as the argument \code{custom.optim} in the call to \code{fitdist} or \code{fitdistcens}. The following code can for example be used to fit a gamma distribution to the \code{groundbeef} data set. Note that in this example various arguments are also passed from \code{fitdist} to \code{genoud} : \code{nvars}, \code{Domains}, \code{boundary.enforcement}, \code{print.level} and \code{hessian}. The code below compares all the parameter estimates ($\hat\alpha$, $\hat\lambda$) by the different algorithms: shape $\alpha$ and rate $\lambda$ parameters are relatively similar on this example, roughly 4.00 and 0.05, respectively. %%% R code <>= fgenoud <- mledist(groundbeef$serving, "gamma", custom.optim = mygenoud, nvars = 2, max.generations = 10, Domains = cbind(c(0,0), c(10,10)), boundary.enforcement = 1, hessian = TRUE, print.level = 0, P9 = 10) cbind(NM = fNM$estimate, BFGS = fBFGS$estimate, SANN = fSANN$estimate, CG = fCG$estimate, fgenoud = fgenoud$estimate) @ %\newpage \subsection[Other types of data]{Fitting distributions to other types of data} \label{otherdata} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \emph{This section was modified since the publication of this vignette in the Journal of Statistical Software in order to include new goodness-of-fit plots for censored and discrete data.} Analytical methods often lead to semi-quantitative results which are referred to as censored data. Observations only known to be under a limit of detection are left-censored data. Observations only known to be above a limit of quantification are right-censored data. Results known to lie between two bounds are interval-censored data. These two bounds may correspond to a limit of detection and a limit of quantification, or more generally to uncertainty bounds around the observation. Right-censored data are also commonly encountered with survival data \citep{kleinmoeschberger03}. A data set may thus contain right-, left-, or interval-censored data, or may be a mixture of these categories, possibly with different upper and lower bounds. Censored data are sometimes excluded from the data analysis or replaced by a fixed value, which in both cases may lead to biased results. A more recommended approach to correctly model such data is based upon maximum likelihood \citep{kleinmoeschberger03,helsel05}. Censored data may thus contain left-censored, right-censored and interval-censored values, with several lower and upper bounds. Before their use in package \pkg{fitdistrplus}, such data must be coded into a dataframe with two columns, respectively named \code{left} and \code{right}, describing each observed value as an interval. The \code{left} column contains either \code{NA} for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The \code{right} column contains either \code{NA} for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. To illustrate the use of package \pkg{fitdistrplus} to fit distributions to censored continous data, we will use another data set from ecotoxicology, included in our package and named \code{salinity}. This data set contains acute salinity tolerance (LC50 values in electrical conductivity, $mS$.$cm^{-1}$) of riverine macro-invertebrates taxa from the southern Murray-Darling Basin in Central Victoria, Australia \citep{kefford07}. %%% R code <>= data("salinity") str(salinity) @ %\subsubsection{Graphical display of the observed distribution} %\label{censored:graph} %%%%%%%%%% Using censored data such as those coded in the \code{salinity} data set, the empirical distribution can be plotted using the \code{plotdistcens} function. In older versions of the package, by default this function used the Expectation-Maximization approach of \cite{Turnbull74} to compute the overall empirical cdf curve with optional confidence intervals, by calls to \code{survfit} and \code{plot.survfit} functions from the \pkg{survival} package. Even if this representation is always available (by fixing the argument \code{NPMLE.method} to \code{"Turnbull"}), now the default representation of the empirical cumulative distribution function (ECDF) uses another more performant non parametric maximum likelihood estimation (NPMLE) approach developped by Wang \citep{Wang2007, Wang2008, Wang2013, Wang2018}, by calls to the \code{npsurv} function from the \pkg{npsurv} package. Figure~\ref{cdfcompcens} shows on the top left the Wang plot of data together with two fitted distributions. Grey filled rectangles in such a plot represent the regions of non uniqueness of the NPMLE ECDF. A less rigorous but sometimes more illustrative plot can be obtained by fixing the argument \code{NPMLE} to \code{FALSE} in the call to \code{plotdistcens} (see Figure~\ref{plotdistcens} for an example and the help page of Function \code{plotdistcens} for details). This plot enables to see the real nature of censored data, as points and intervals, but the difficulty in building such a plot is to define a relevant ordering of observations. %%% R code %<>= %plotdistcens(salinity) %@ %%% R code <>= plotdistcens(salinity, NPMLE = FALSE) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering %%% R code <>= plotdistcens(salinity,Turnbull = FALSE) @ \caption{Simple plot of censored raw data (72-hour acute salinity tolerance of riverine macro-invertebrates from the \code{salinity} data set) as ordered points and intervals.} \label{plotdistcens} \end{figure} %\subsubsection{Maximum likelihood estimation} %\label{censored:MLE} %%%%%%%%%% As for non censored data, one or more parametric distributions can be fitted to the censored data set, one at a time, but using in this case the \code{fitdistcens} function. This function estimates the vector of distribution parameters $\theta$ by maximizing the likelihood for censored data defined as: \begin{equation} \label{likelihoodC} \begin{array}{lll} L(\theta)&=&\prod_{i=1}^{N_{nonC}} f(x_{i}|\theta) \times \prod_{j=1}^{N_{leftC}} F(x^{upper}_{j}|\theta) \\ & & \times \prod_{k=1}^{N_{rightC}} (1- F(x^{lower}_{k}|\theta)) \times \prod_{m=1}^{N_{intC}} (F(x^{upper}_{m}|\theta)- F(x^{lower}_{j}|\theta)) \end{array} \end{equation} with $x_{i}$ the $N_{nonC}$ non-censored observations, $x^{upper}_{j}$ upper values defining the $N_{leftC}$ left-censored observations, $x^{lower}_{k}$ lower values defining the $N_{rightC}$ right-censored observations, $[x^{lower}_{m} ; x^{upper}_{m}]$ the intervals defining the $N_{intC}$ interval-censored observations, and F the cumulative distribution function of the parametric distribution \citep{kleinmoeschberger03,helsel05}. As \code{fitdist}, \code{fitdistcens} returns the results of the fit of any parametric distribution to a data set as an S3 class object that can be easily printed, summarized or plotted. For the \code{salinity} data set, a lognormal distribution or a loglogistic can be fitted as commonly done in ecotoxicology for such data. As with \code{fitdist}, for some distributions (see \cite{fitdistrplus} for details), it is necessary to specify initial values for the distribution parameters in the argument \code{start}. The \code{plotdistcens} function can help to find correct initial values for the distribution parameters in non trivial cases, by a manual iterative use if necessary. %%% R code <>= fsal.ln <- fitdistcens(salinity, "lnorm") fsal.ll <- fitdistcens(salinity, "llogis", start = list(shape = 5, scale = 40)) summary(fsal.ln) summary(fsal.ll) @ Computations of goodness-of-fit statistics have not yet been developed for fits using censored data but the quality of fit can be judged using Akaike and Schwarz's Bayesian information criteria (AIC and BIC) and the goodness-of-fit CDF plot, respectively provided when summarizing or plotting an object of class \code{"fitdistcens"}. Functions \code{cdfcompcens}, \code{qqcompcens} and \code{ppcompcens} can also be used to compare the fit of various distributions to the same censored data set. Their calls are similar to the ones of \code{cdfcomp}, \code{qqcomp} and \code{ppcomp}. Below are examples of use of those functions with the two fitted distributions to the \code{salinity} data set (see Figure~\ref{cdfcompcens}). When \code{qqcompcens} and \code{ppcompcens} are used with more than one fitted distribution, the non uniqueness rectangles are not filled and a small noise is added on the y-axis in order to help the visualization of various fits. But we rather recommend the use of the \code{plotstyle} \code{ggplot} of \code{qqcompcens} and \code{ppcompcens} to compare the fits of various distributions as it provides a clearer plot splitted in facets (see \code{?graphcompcens}). %%% R code <>= par(mfrow=c(2, 2)) cdfcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic ")) qqcompcens(fsal.ln, legendtext = "lognormal") ppcompcens(fsal.ln, legendtext = "lognormal") qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), main = "Q-Q plot with 2 dist.") @ \setkeys{Gin}{width=0.8\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= par(mfrow=c(2, 2)) cdfcompcens(list(fsal.ln, fsal.ll), legendtext=c("lognormal", "loglogistic ")) qqcompcens(fsal.ln, legendtext = "lognormal") ppcompcens(fsal.ln, legendtext = "lognormal") qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), main = "Q-Q plot with 2 dist.") @ \caption{Some goodness-of-fit plots for fits of a lognormal and a loglogistic distribution to censored data: LC50 values from the \code{salinity} data set.} \label{cdfcompcens} \end{figure} Function \code{bootdistcens} is the equivalent of \code{bootdist} for censored data, except that it only proposes nonparametric bootstrap. Indeed, it is not obvious to simulate censoring within a parametric bootstrap resampling procedure. The generic function \code{quantile} can also be applied to an object of class \code{"fitdistcens"} or \code{"bootdistcens"}, as for continuous non-censored data. In addition to the fit of distributions to censored or non censored continuous data, our package can also accomodate discrete variables, such as count numbers, using the functions developped for continuous non-censored data. These functions will provide somewhat different graphs and statistics, taking into account the discrete nature of the modeled variable. The discrete nature of the variable is automatically recognized when a classical distribution is fitted to data (binomial, negative binomial, geometric, hypergeometric and Poisson distributions) but must be indicated by fixing argument \code{discrete} to \code{TRUE} in the call to functions in other cases. The \code{toxocara} data set included in the package corresponds to the observation of such a discrete variable. Numbers of \emph{Toxocara cati} parasites present in digestive tract are reported from a random sampling of feral cats living on Kerguelen island \citep{Fromont01}. We will use it to illustrate the case of discrete data. %%% R code <>= data("toxocara") str(toxocara) @ The fit of a discrete distribution to discrete data by maximum likelihood estimation requires the same procedure as for continuous non-censored data. As an example, using the \code{toxocara} data set, Poisson and negative binomial distributions can be easily fitted. %%% R code <>= (ftoxo.P <- fitdist(toxocara$number, "pois")) (ftoxo.nb <- fitdist(toxocara$number, "nbinom")) @ For discrete distributions, the plot of an object of class \code{"fitdist"} simply provides two goodness-of-fit plots comparing empirical and theoretical distributions in density and in CDF. Functions \code{cdfcomp} and \code{denscomp} can also be used to compare several plots to the same data set, as follows for the previous fits (Figure~\ref{plotdiscfit}). <>= par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) @ \setkeys{Gin}{width=0.9\textwidth} %default \begin{figure}[htb] \centering <>= par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) @ \caption{Comparison of the fits of a negative binomial and a Poisson distribution to numbers of \emph{Toxocara cati} parasites from the \code{toxocara} data set.} \label{plotdiscfit} \end{figure} When fitting discrete distributions, the Chi-squared statistic is computed by the \code{gofstat} function using cells defined by the argument \code{chisqbreaks} or cells automatically defined from the data in order to reach roughly the same number of observations per cell. This number is roughly equal to the argument \code{meancount}, or sligthly greater if there are some ties. The choice to define cells from the empirical distribution (data), and not from the theoretical distribution, was done to enable the comparison of Chi-squared values obtained with different distributions fitted on a same data set. If arguments \code{chisqbreaks} and \code{meancount} are both omitted, \code{meancount} is fixed in order to obtain roughly $(4n)^{2/5}$ cells, with $n$ the length of the data set \citep{Vose10}. Using this default option the two previous fits are compared as follows, giving the preference to the negative binomial distribution, from both Chi-squared statistics and information criteria: %%% R code <>= gofstat(list(ftoxo.P, ftoxo.nb), fitnames = c("Poisson", "negative binomial")) @ \section{Conclusion} \label{ccl} %%%%%%%%%% The \proglang{R} package \pkg{fitdistrplus} allows to easily fit distributions. Our main objective while developing this package was to provide tools for helping \proglang{R} users to fit distributions to data. We have been encouraged to pursue our work by feedbacks from users of our package in various areas as food or environmental risk assessment, epidemiology, ecology, molecular biology, genomics, bioinformatics, hydraulics, mechanics, financial and actuarial mathematics or operations research. Indeed, this package is already used by a lot of practionners and academics for simple MLE fits \citep{jaloustreetal11,saketal11,kochetal12,marquetouxetal12, scholletal12,suuronenetal12,varoetal12,mandletal13,mala2013publi,nadarajahbakar2013,simoetal13, westphalfitch13,wayland13,vianaetal13,wu13,staggeetal13,fiorellietal13,tikoleetal13, voigtetal14}, for MLE fits and goodness-of-fit statistics \citep{tarnczi11,bagariaetal12,benavidesetal12,breitbach12,Pouillot10,vaninsky13}, for MLE fits and bootstrap \citep{croucheretal12,meheustetal12,orellanoetal12,telloetal12,hoelzeretal12, prosseretal13,Zhang2013,Rigaux2014}, for MLE fits, bootstrap and goodness-of-fit statistics \citep{larrasetal13}, for MME fit \citep{luangkesornetal12,callauetal13,satoetal13}, for censored MLE and bootstrap \citep{lehaetal11,poulliotetal12,jongenburgeretal12, commeauetal12,contrerasetal2013}, for graphic analysing in \citep{anandetal12}, for grouped-data fitting methods \citep{fusteinercostafreda12} or more generally \citep{busschaertetal10,eling12, sosaetal2013,srinivasanetal2013,meyeretal13,Guillier2013471,Daelmanetal13, eiketal13,Wu2:2013,drakeetal2014}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \pkg{fitdistrplus} package is complementary with the \pkg{distrMod} package \citep{distrModJSS}. \pkg{distrMod} provides an even more flexible way to estimate distribution parameters but its use requires a greater initial investment to learn how to manipulate the \texttt{S4} classes and methods developed in the \texttt{distr}-family packages. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Many extensions of the \pkg{fitdistrplus} package are planned in the future: we target to extend to censored data some methods for the moment only available for non-censored data, especially concerning goodness-of-fit evaluation and fitting methods. We will also enlarge the choice of fitting methods for non-censored data, by proposing new goodness-of-fit distances (e.g., distances based on quantiles) for maximum goodness-of-fit estimation and new types of moments (e.g., limited expected values) for moment matching estimation. At last, we will consider the case of multivariate distribution fitting. \section{Acknowledgments} \label{merci} %%%%%%%%%% The package would not have been at this stage without the stimulating contribution of R\'egis Pouillot and Jean-Baptiste Denis, especially for its conceptualization. We also want to thank R\'egis Pouillot for his very valuable comments on the first version of this paper. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The authors gratefully acknowledges the two anonymous referees and the Editor for useful and constructive comments. The remaining errors, of course, should be attributed to the authors alone. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bibliographystyle{apalike} \bibliography{jssfitdistrplus} \end{document} fitdistrplus/inst/doc/Optimalgo.html0000644000176200001440000105117013422065050017353 0ustar liggesusers Which optimization algorithm to choose?

Which optimization algorithm to choose?

Marie Laure Delignette Muller, Christophe Dutang

2019-01-23

1 Quick overview of main optimization methods

We present very quickly the main optimization methods. Please refer to Numerical Optimization (Nocedal & Wright, 2006) or Numerical Optimization: theoretical and practical aspects (Bonnans, Gilbert, Lemarechal & Sagastizabal, 2006) for a good introduction. We consider the following problem \(\min_x f(x)\) for \(x\in\mathbb{R}^n\).

1.1 Derivative-free optimization methods

The Nelder-Mead method is one of the most well known derivative-free methods that use only values of \(f\) to search for the minimum. It consists in building a simplex of \(n+1\) points and moving/shrinking this simplex into the good direction.

  1. set initial points \(x_1, \dots, x_{n+1}\).
  2. order points such that \(f(x_1)\leq f(x_2)\leq\dots\leq f(x_{n+1})\).
  3. compute \(x_o\) as the centroid of \(x_1, \dots, x_{n}\).
  4. Reflection:
    • compute the reflected point \(x_r = x_o + \alpha(x_o-x_{n+1})\).
    • if \(f(x_1)\leq f(x_r)<f(x_n)\), then replace \(x_{n+1}\) by \(x_r\), go to step 2.
    • else go step 5.
  5. Expansion:
    • if \(f(x_r)<f(x_1)\), then compute the expansion point \(x_e= x_o+\gamma(x_o-x_{n+1})\).
    • if \(f(x_e) <f(x_r)\), then replace \(x_{n+1}\) by \(x_e\), go to step 2.
    • else \(x_{n+1}\) by \(x_r\), go to step 2.
    • else go to step 6.
  6. Contraction:
    • compute the contracted point \(x_c = x_o + \beta(x_o-x_{n+1})\).
    • if \(f(x_c)<f(x_{n+1})\), then replace \(x_{n+1}\) by \(x_c\), go to step 2.
    • else go step 7.
  7. Reduction:
    • for \(i=2,\dots, n+1\), compute \(x_i = x_1+\sigma(x_i-x_{1})\).

The Nelder-Mead method is available in optim. By default, in optim, \(\alpha=1\), \(\beta=1/2\), \(\gamma=2\) and \(\sigma=1/2\).

1.2 Hessian-free optimization methods

For smooth non-linear function, the following method is generally used: a local method combined with line search work on the scheme \(x_{k+1} =x_k + t_k d_{k}\), where the local method will specify the direction \(d_k\) and the line search will specify the step size \(t_k \in \mathbb{R}\).

1.2.1 Computing the direction \(d_k\)

A desirable property for \(d_k\) is that \(d_k\) ensures a descent \(f(x_{k+1}) < f(x_{k})\). Newton methods are such that \(d_k\) minimizes a local quadratic approximation of \(f\) based on a Taylor expansion, that is \(q_f(d) = f(x_k) + g(x_k)^Td +\frac{1}{2} d^T H(x_k) d\) where \(g\) denotes the gradient and \(H\) denotes the Hessian.

The consists in using the exact solution of local minimization problem \(d_k = - H(x_k)^{-1} g(x_k)\).
In practice, other methods are preferred (at least to ensure positive definiteness). The method approximates the Hessian by a matrix \(H_k\) as a function of \(H_{k-1}\), \(x_k\), \(f(x_k)\) and then \(d_k\) solves the system \(H_k d = - g(x_k)\). Some implementation may also directly approximate the inverse of the Hessian \(W_k\) in order to compute \(d_k = -W_k g(x_k)\). Using the Sherman-Morrison-Woodbury formula, we can switch between \(W_k\) and \(H_k\).

To determine \(W_k\), first it must verify the secant equation \(H_k y_k =s_k\) or \(y_k=W_k s_k\) where \(y_k = g_{k+1}-g_k\) and \(s_k=x_{k+1}-x_k\). To define the \(n(n-1)\) terms, we generally impose a symmetry and a minimum distance conditions. We say we have a rank 2 update if \(H_k = H_{k-1} + a u u^T + b v v^T\) and a rank 1 update if $H_k = H_{k-1} + a u u^T $. Rank \(n\) update is justified by the spectral decomposition theorem.

There are two rank-2 updates which are symmetric and preserve positive definiteness

  • DFP minimizes \(\min || H - H_k ||_F\) such that \(H=H^T\): \[ H_{k+1} = \left (I-\frac {y_k s_k^T} {y_k^T s_k} \right ) H_k \left (I-\frac {s_k y_k^T} {y_k^T s_k} \right )+\frac{y_k y_k^T} {y_k^T s_k} \Leftrightarrow W_{k+1} = W_k + \frac{s_k s_k^T}{y_k^{T} s_k} - \frac {W_k y_k y_k^T W_k^T} {y_k^T W_k y_k} . \]
  • BFGS minimizes \(\min || W - W_k ||_F\) such that \(W=W^T\): \[ H_{k+1} = H_k - \frac{ H_k y_k y_k^T H_k }{ y_k^T H_k y_k } + \frac{ s_k s_k^T }{ y_k^T s_k } \Leftrightarrow W_{k+1} = \left (I-\frac {y_k s_k^T} {y_k^T s_k} \right )^T W_k \left (I-\frac { y_k s_k^T} {y_k^T s_k} \right )+\frac{s_k s_k^T} {y_k^T s_k} . \]

In R, the so-called BFGS scheme is implemented in optim.

Another possible method (which is initially arised from quadratic problems) is the nonlinear conjugate gradients. This consists in computing directions \((d_0, \dots, d_k)\) that are conjugate with respect to a matrix close to the true Hessian \(H(x_k)\). Directions are computed iteratively by \(d_k = -g(x_k) + \beta_k d_{k-1}\) for \(k>1\), once initiated by \(d_1 = -g(x_1)\). \(\beta_k\) are updated according a scheme:

  • \(\beta_k = \frac{ g_k^T g_k}{g_{k-1}^T g_{k-1} }\): Fletcher-Reeves update,
  • \(\beta_k = \frac{ g_k^T (g_k-g_{k-1} )}{g_{k-1}^T g_{k-1}}\): Polak-Ribiere update.

There exists also three-term formula for computing direction \(d_k = -g(x_k) + \beta_k d_{k-1}+\gamma_{k} d_t\) for \(t<k\). A possible scheme is the Beale-Sorenson update defined as \(\beta_k = \frac{ g_k^T (g_k-g_{k-1} )}{d^T_{k-1}(g_{k}- g_{k-1})}\) and \(\gamma_k = \frac{ g_k^T (g_{t+1}-g_{t} )}{d^T_{t}(g_{t+1}- g_{t})}\) if \(k>t+1\) otherwise \(\gamma_k=0\) if \(k=t\). See Yuan (2006) for other well-known schemes such as Hestenses-Stiefel, Dixon or Conjugate-Descent. The three updates (Fletcher-Reeves, Polak-Ribiere, Beale-Sorenson) of the (non-linear) conjugate gradient are available in optim.

1.2.2 Computing the stepsize \(t_k\)

Let \(\phi_k(t) = f(x_k + t d_k)\) for a given direction/iterate \((d_k, x_k)\). We need to find conditions to find a satisfactory stepsize \(t_k\). In literature, we consider the descent condition: \(\phi_k'(0) < 0\) and the Armijo condition: \(\phi_k(t) \leq \phi_k(0) + t c_1 \phi_k'(0)\) ensures a decrease of \(f\). Nocedal & Wright (2006) presents a backtracking (or geometric) approach satisfying the Armijo condition and minimal condition, i.e. Goldstein and Price condition.

  • set \(t_{k,0}\) e.g. 1, \(0 < \alpha < 1\),
  • Repeat until Armijo satisfied,
    • \(t_{k,i+1} = \alpha \times t_{k,i}\).
  • end Repeat

This backtracking linesearch is available in optim.

1.3 Benchmark

To simplify the benchmark of optimization methods, we create a fitbench function that computes the desired estimation method for all optimization methods. This function is currently not exported in the package.

fitbench <- function(data, distr, method, grad=NULL, control=list(trace=0, REPORT=1, maxit=1000), lower=-Inf, upper=+Inf, ...) 

2 Numerical illustration with the beta distribution

2.1 Log-likelihood function and its gradient for beta distribution

2.1.1 Theoretical value

The density of the beta distribution is given by \[ f(x; \delta_1,\delta_2) = \frac{x^{\delta_1-1}(1-x)^{\delta_2-1}}{\beta(\delta_1,\delta_2)}, \] where \(\beta\) denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. We recall that \(\beta(a,b)=\Gamma(a)\Gamma(b)/\Gamma(a+b)\). There the log-likelihood for a set of observations \((x_1,\dots,x_n)\) is \[ \log L(\delta_1,\delta_2) = (\delta_1-1)\sum_{i=1}^n\log(x_i)+ (\delta_2-1)\sum_{i=1}^n\log(1-x_i)+ n \log(\beta(\delta_1,\delta_2)) \] The gradient with respect to \(a\) and \(b\) is \[ \nabla \log L(\delta_1,\delta_2) = \left(\begin{matrix} \sum\limits_{i=1}^n\ln(x_i) - n\psi(\delta_1)+n\psi( \delta_1+\delta_2) \\ \sum\limits_{i=1}^n\ln(1-x_i)- n\psi(\delta_2)+n\psi( \delta_1+\delta_2) \end{matrix}\right), \] where \(\psi(x)=\Gamma'(x)/\Gamma(x)\) is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/.

2.1.2 R implementation

As in the fitdistrplus package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in grlnL. Both the log-likelihood and its gradient are not exported.

lnL <- function(par, fix.arg, obs, ddistnam) 
  fitdistrplus:::loglikelihood(par, fix.arg, obs, ddistnam) 
grlnlbeta <- fitdistrplus:::grlnlbeta

2.2 Random generation of a sample

#(1) beta distribution
n <- 200
x <- rbeta(n, 3, 3/4)
grlnlbeta(c(3, 4), x) #test
## [1] -133  317
hist(x, prob=TRUE)
lines(density(x), col="red")
curve(dbeta(x, 3, 3/4), col="green", add=TRUE)
legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical"))

2.3 Fit Beta distribution

Define control parameters.

ctr <- list(trace=0, REPORT=1, maxit=1000)

Call mledist with the default optimization function (optim implemented in stats package) with and without the gradient for the different optimization methods.

unconstropt <- fitbench(x, "beta", "mle", grad=grlnlbeta, lower=0)
##     BFGS       NM     CGFR     CGPR     CGBS L-BFGS-B     NM-B   G-BFGS 
##       13       13       13       13       13       13       13       13 
##   G-CGFR   G-CGPR   G-CGBS G-BFGS-B   G-NM-B G-CGFR-B G-CGPR-B G-CGBS-B 
##       13       13       13       13       13       13       13       13

In the case of constrained optimization, mledist permits the direct use of constrOptim function (still implemented in stats package) that allow linear inequality constraints by using a logarithmic barrier.

Use a exp/log transformation of the shape parameters \(\delta_1\) and \(\delta_2\) to ensure that the shape parameters are strictly positive.

dbeta2 <- function(x, shape1, shape2, log)
  dbeta(x, exp(shape1), exp(shape2), log=log)
#take the log of the starting values
startarg <- lapply(fitdistrplus:::start.arg.default(x, "beta"), log)
#redefine the gradient for the new parametrization
grbetaexp <- function(par, obs, ...) 
    grlnlbeta(exp(par), obs) * exp(par)
    

expopt <- fitbench(x, distr="beta2", method="mle", grad=grbetaexp, start=startarg) 
##   BFGS     NM   CGFR   CGPR   CGBS G-BFGS G-CGFR G-CGPR G-CGBS 
##     13     13     13     13     13     13     13     13     13
#get back to original parametrization
expopt[c("fitted shape1", "fitted shape2"), ] <- exp(expopt[c("fitted shape1", "fitted shape2"), ])

Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one).

2.4 Results of the numerical investigation

Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (-B stands for bounded version), (2) the original parametrization with the (true) gradient (-B stands for bounded version and -G for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (-G stands for gradient).

BFGS NM CGFR CGPR CGBS L-BFGS-B NM-B
fitted shape1 2.665 2.664 2.665 2.665 2.665 2.665 2.665
fitted shape2 0.731 0.731 0.731 0.731 0.731 0.731 0.731
fitted loglik 114.165 114.165 114.165 114.165 114.165 114.165 114.165
func. eval. nb. 23.000 47.000 240.000 263.000 183.000 11.000 47.000
grad. eval. nb. 5.000 NA 57.000 69.000 47.000 11.000 NA
time (sec) 0.010 0.009 0.069 0.079 0.055 0.011 0.016
G-BFGS G-CGFR G-CGPR G-CGBS G-BFGS-B G-NM-B G-CGFR-B G-CGPR-B G-CGBS-B
fitted shape1 2.665 2.665 2.665 2.665 2.665 2.665 2.665 2.665 2.665
fitted shape2 0.731 0.731 0.731 0.731 0.731 0.731 0.731 0.731 0.731
fitted loglik 114.165 114.165 114.165 114.165 114.165 114.165 114.165 114.165 114.165
func. eval. nb. 20.000 249.000 225.000 138.000 25.000 47.000 263.000 188.000 176.000
grad. eval. nb. 5.000 71.000 69.000 43.000 5.000 NA 69.000 59.000 47.000
time (sec) 0.023 0.199 0.193 0.124 0.039 0.034 0.232 0.207 0.175
BFGS NM CGFR CGPR CGBS
fitted shape1 2.665 2.664 2.665 2.665 2.665
fitted shape2 0.731 0.731 0.731 0.731 0.731
fitted loglik 114.165 114.165 114.165 114.165 114.165
func. eval. nb. 18.000 41.000 131.000 116.000 134.000
grad. eval. nb. 5.000 NA 27.000 29.000 35.000
time (sec) 0.012 0.008 0.037 0.036 0.042
G-BFGS G-CGFR G-CGPR G-CGBS
fitted shape1 2.665 2.665 2.665 2.665
fitted shape2 0.731 0.731 0.731 0.731
fitted loglik 114.165 114.165 114.165 114.165
func. eval. nb. 20.000 175.000 125.000 112.000
grad. eval. nb. 5.000 39.000 41.000 35.000
time (sec) 0.026 0.120 0.117 0.101

Using llsurface, we plot the log-likehood surface around the true value (green) and the fitted parameters (red).

llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3), 
          plot.arg=c("shape1", "shape2"), nlev=25,
          plot.np=50, data=x, distr="beta", back.col = FALSE)
points(unconstropt[1,"BFGS"], unconstropt[2,"BFGS"], pch="+", col="red")
points(3, 3/4, pch="x", col="green")

We can simulate bootstrap replicates using the bootdist function.

b1 <- bootdist(fitdist(x, "beta", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2)
summary(b1)
## Parametric bootstrap medians and 95% percentile CI 
##        Median  2.5% 97.5%
## shape1   2.73 2.272 3.283
## shape2   0.75 0.652 0.888
plot(b1)
abline(v=3, h=3/4, col="red", lwd=1.5)

3 Numerical illustration with the negative binomial distribution

3.1 Log-likelihood function and its gradient for negative binomial distribution

3.1.1 Theoretical value

The p.m.f. of the Negative binomial distribution is given by \[ f(x; m,p) = \frac{\Gamma(x+m)}{\Gamma(m)x!} p^m (1-p)^x, \] where \(\Gamma\) denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. There exists an alternative representation where \(\mu=m (1-p)/p\) or equivalently \(p=m/(m+\mu)\). Thus, the log-likelihood for a set of observations \((x_1,\dots,x_n)\) is \[ \log L(m,p) = \sum_{i=1}^{n} \log\Gamma(x_i+m) -n\log\Gamma(m) -\sum_{i=1}^{n} \log(x_i!) + mn\log(p) +\sum_{i=1}^{n} {x_i}\log(1-p) \] The gradient with respect to \(m\) and \(p\) is \[ \nabla \log L(m,p) = \left(\begin{matrix} \sum_{i=1}^{n} \psi(x_i+m) -n \psi(m) + n\log(p) \\ mn/p -\sum_{i=1}^{n} {x_i}/(1-p) \end{matrix}\right), \] where \(\psi(x)=\Gamma'(x)/\Gamma(x)\) is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/.

3.1.2 R implementation

As in the fitdistrplus package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in grlnL.

grlnlNB <- function(x, obs, ...)
{
  m <- x[1]
  p <- x[2]
  n <- length(obs)
  c(sum(psigamma(obs+m)) - n*psigamma(m) + n*log(p),
    m*n/p - sum(obs)/(1-p))
}

3.2 Random generation of a sample

#(1) beta distribution
n <- 200
trueval <- c("size"=10, "prob"=3/4, "mu"=10/3)
x <- rnbinom(n, trueval["size"], trueval["prob"])

hist(x, prob=TRUE, ylim=c(0, .3))
lines(density(x), col="red")
points(min(x):max(x), dnbinom(min(x):max(x), trueval["size"], trueval["prob"]), col="green")
legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical"))

3.3 Fit a negative binomial distribution

Define control parameters and make the benchmark.

ctr <- list(trace=0, REPORT=1, maxit=1000)
unconstropt <- fitbench(x, "nbinom", "mle", grad=grlnlNB, lower=0)
##     BFGS       NM     CGFR     CGPR     CGBS L-BFGS-B     NM-B   G-BFGS 
##       13       13       13       13       13       13       13       13 
##   G-CGFR   G-CGPR   G-CGBS G-BFGS-B   G-NM-B G-CGFR-B G-CGPR-B G-CGBS-B 
##       13       13       13       13       13       13       13       13
unconstropt <- rbind(unconstropt, "fitted prob"=unconstropt["fitted mu",] / (1+unconstropt["fitted mu",]))

In the case of constrained optimization, mledist permits the direct use of constrOptim function (still implemented in stats package) that allow linear inequality constraints by using a logarithmic barrier.

Use a exp/log transformation of the shape parameters \(\delta_1\) and \(\delta_2\) to ensure that the shape parameters are strictly positive.

dnbinom2 <- function(x, size, prob, log)
  dnbinom(x, exp(size), 1/(1+exp(-prob)), log=log)
#transform starting values
startarg <- fitdistrplus:::start.arg.default(x, "nbinom")
startarg$mu <- startarg$size / (startarg$size+startarg$mu)
startarg <- list(size=log(startarg[[1]]), prob=log(startarg[[2]]/(1-startarg[[2]])))

#redefine the gradient for the new parametrization
Trans <- function(x)
  c(exp(x[1]), plogis(x[2]))
grNBexp <- function(par, obs, ...) 
    grlnlNB(Trans(par), obs) * c(exp(par[1]), plogis(x[2])*(1-plogis(x[2])))

expopt <- fitbench(x, distr="nbinom2", method="mle", grad=grNBexp, start=startarg) 
##   BFGS     NM   CGFR   CGPR   CGBS G-BFGS G-CGFR G-CGPR G-CGBS 
##     13     13     13     13     13     13     13     13     13
#get back to original parametrization
expopt[c("fitted size", "fitted prob"), ] <- apply(expopt[c("fitted size", "fitted prob"), ], 2, Trans)

Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one).

3.4 Results of the numerical investigation

Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (-B stands for bounded version), (2) the original parametrization with the (true) gradient (-B stands for bounded version and -G for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (-G stands for gradient).

BFGS NM CGFR CGPR CGBS L-BFGS-B NM-B
fitted size 61.944 68.138 61.969 62.573 62.878 61.944 67.397
fitted mu 3.425 3.425 3.425 3.425 3.425 3.425 3.425
fitted loglik -401.612 -401.611 -401.612 -401.612 -401.612 -401.612 -401.611
func. eval. nb. 2.000 37.000 2999.000 2637.000 2610.000 2.000 0.000
grad. eval. nb. 1.000 NA 1001.000 1001.000 1001.000 2.000 NA
time (sec) 0.004 0.008 1.050 1.027 1.035 0.005 0.007
fitted prob 0.774 0.774 0.774 0.774 0.774 0.774 0.774
G-BFGS G-CGFR G-CGPR G-CGBS G-BFGS-B G-NM-B G-CGFR-B G-CGPR-B G-CGBS-B
fitted size 61.944 61.944 61.944 61.944 61.944 67.397 61.944 61.944 61.944
fitted mu 3.425 3.425 3.425 3.425 3.425 3.425 3.425 3.425 3.425
fitted loglik -401.612 -401.612 -401.612 -401.612 -401.612 -401.611 -401.612 -401.612 -401.612
func. eval. nb. 26.000 235.000 144.000 235.000 0.000 0.000 0.000 0.000 0.000
grad. eval. nb. 1.000 15.000 9.000 15.000 NA NA NA NA NA
time (sec) 0.017 0.039 0.024 0.040 0.006 0.007 0.038 0.024 0.037
fitted prob 0.774 0.774 0.774 0.774 0.774 0.774 0.774 0.774 0.774
BFGS NM CGFR CGPR CGBS
fitted size 61.946 67.787 63.450 67.941 67.884
fitted prob 0.948 0.952 0.949 0.952 0.952
fitted loglik -401.612 -401.611 -401.612 -401.611 -401.611
func. eval. nb. 6.000 47.000 4001.000 3730.000 383.000
grad. eval. nb. 1.000 NA 1001.000 1001.000 95.000
time (sec) 0.010 0.009 1.257 1.006 0.104
G-BFGS G-CGFR G-CGPR G-CGBS
fitted size 61.944 61.944 61.944 61.944
fitted prob 0.948 0.948 0.948 0.948
fitted loglik -401.612 -401.612 -401.612 -401.612
func. eval. nb. 21.000 43.000 42.000 42.000
grad. eval. nb. 1.000 3.000 3.000 3.000
time (sec) 0.014 0.008 0.008 0.007

Using llsurface, we plot the log-likehood surface around the true value (green) and the fitted parameters (red).

llsurface(min.arg=c(5, 0.3), max.arg=c(15, 1), 
          plot.arg=c("size", "prob"), nlev=25,
          plot.np=50, data=x, distr="nbinom", back.col = FALSE)
points(unconstropt["fitted size","BFGS"], unconstropt["fitted prob","BFGS"], pch="+", col="red")
points(trueval["size"], trueval["prob"], pch="x", col="green")

We can simulate bootstrap replicates using the bootdist function.

b1 <- bootdist(fitdist(x, "nbinom", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2)
summary(b1)
## Parametric bootstrap medians and 95% percentile CI 
##      Median  2.5%  97.5%
## size  61.95 11.05 118.32
## mu     3.43  3.17   3.72
## 
## The estimation method converged only for 76 among 100 iterations
plot(b1)
abline(v=trueval["size"], h=trueval["mu"], col="red", lwd=1.5)

4 Conclusion

Based on the two previous examples, we observe that all methods converge to the same point. This is rassuring.
However, the number of function evaluations (and the gradient evaluations) is very different from a method to another. Furthermore, specifying the true gradient of the log-likelihood does not help at all the fitting procedure and generally slows down the convergence. Generally, the best method is the standard BFGS method or the BFGS method with the exponential transformation of the parameters. Since the exponential function is differentiable, the asymptotic properties are still preserved (by the Delta method) but for finite-sample this may produce a small bias.

fitdistrplus/inst/doc/Optimalgo.Rmd0000644000176200001440000004314512772503243017143 0ustar liggesusers--- title: Which optimization algorithm to choose? author: Marie Laure Delignette Muller, Christophe Dutang date: '`r Sys.Date()`' output: html_vignette: toc: true number_sections: yes vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Which optimization algorithm to choose?} %!\VignetteEncoding{UTF-8} \usepackage[utf8]{inputenc} --- ```{r setup, echo=FALSE, message=FALSE, warning=FALSE} require(fitdistrplus) require(knitr) #for kable() function set.seed(12345) options(digits = 3) ``` # Quick overview of main optimization methods We present very quickly the main optimization methods. Please refer to **Numerical Optimization (Nocedal \& Wright, 2006)** or **Numerical Optimization: theoretical and practical aspects (Bonnans, Gilbert, Lemarechal \& Sagastizabal, 2006)** for a good introduction. We consider the following problem $\min_x f(x)$ for $x\in\mathbb{R}^n$. ## Derivative-free optimization methods The Nelder-Mead method is one of the most well known derivative-free methods that use only values of $f$ to search for the minimum. It consists in building a simplex of $n+1$ points and moving/shrinking this simplex into the good direction. 1. set initial points $x_1, \dots, x_{n+1}$. 2. order points such that $f(x_1)\leq f(x_2)\leq\dots\leq f(x_{n+1})$. 3. compute $x_o$ as the centroid of $x_1, \dots, x_{n}$. 4. Reflection: + compute the reflected point $x_r = x_o + \alpha(x_o-x_{n+1})$. + **if** $f(x_1)\leq f(x_r)1$, once initiated by $d_1 = -g(x_1)$. $\beta_k$ are updated according a scheme: * $\beta_k = \frac{ g_k^T g_k}{g_{k-1}^T g_{k-1} }$: Fletcher-Reeves update, * $\beta_k = \frac{ g_k^T (g_k-g_{k-1} )}{g_{k-1}^T g_{k-1}}$: Polak-Ribiere update. There exists also three-term formula for computing direction $d_k = -g(x_k) + \beta_k d_{k-1}+\gamma_{k} d_t$ for $tt+1$ otherwise $\gamma_k=0$ if $k=t$. See Yuan (2006) for other well-known schemes such as Hestenses-Stiefel, Dixon or Conjugate-Descent. The three updates (Fletcher-Reeves, Polak-Ribiere, Beale-Sorenson) of the (non-linear) conjugate gradient are available in `optim`. ### Computing the stepsize $t_k$ Let $\phi_k(t) = f(x_k + t d_k)$ for a given direction/iterate $(d_k, x_k)$. We need to find conditions to find a satisfactory stepsize $t_k$. In literature, we consider the descent condition: $\phi_k'(0) < 0$ and the Armijo condition: $\phi_k(t) \leq \phi_k(0) + t c_1 \phi_k'(0)$ ensures a decrease of $f$. Nocedal \& Wright (2006) presents a backtracking (or geometric) approach satisfying the Armijo condition and minimal condition, i.e. Goldstein and Price condition. * set $t_{k,0}$ e.g. 1, $0 < \alpha < 1$, * **Repeat** until Armijo satisfied, + $t_{k,i+1} = \alpha \times t_{k,i}$. * **end Repeat** This backtracking linesearch is available in `optim`. ## Benchmark To simplify the benchmark of optimization methods, we create a `fitbench` function that computes the desired estimation method for all optimization methods. This function is currently not exported in the package. ```{r, echo=TRUE, eval=FALSE} fitbench <- function(data, distr, method, grad=NULL, control=list(trace=0, REPORT=1, maxit=1000), lower=-Inf, upper=+Inf, ...) ``` ```{r, echo=FALSE} fitbench <- fitdistrplus:::fitbench ``` # Numerical illustration with the beta distribution ## Log-likelihood function and its gradient for beta distribution ### Theoretical value The density of the beta distribution is given by $$ f(x; \delta_1,\delta_2) = \frac{x^{\delta_1-1}(1-x)^{\delta_2-1}}{\beta(\delta_1,\delta_2)}, $$ where $\beta$ denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. We recall that $\beta(a,b)=\Gamma(a)\Gamma(b)/\Gamma(a+b)$. There the log-likelihood for a set of observations $(x_1,\dots,x_n)$ is $$ \log L(\delta_1,\delta_2) = (\delta_1-1)\sum_{i=1}^n\log(x_i)+ (\delta_2-1)\sum_{i=1}^n\log(1-x_i)+ n \log(\beta(\delta_1,\delta_2)) $$ The gradient with respect to $a$ and $b$ is $$ \nabla \log L(\delta_1,\delta_2) = \left(\begin{matrix} \sum\limits_{i=1}^n\ln(x_i) - n\psi(\delta_1)+n\psi( \delta_1+\delta_2) \\ \sum\limits_{i=1}^n\ln(1-x_i)- n\psi(\delta_2)+n\psi( \delta_1+\delta_2) \end{matrix}\right), $$ where $\psi(x)=\Gamma'(x)/\Gamma(x)$ is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. ### `R` implementation As in the `fitdistrplus` package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in `grlnL`. Both the log-likelihood and its gradient are not exported. ```{r} lnL <- function(par, fix.arg, obs, ddistnam) fitdistrplus:::loglikelihood(par, fix.arg, obs, ddistnam) grlnlbeta <- fitdistrplus:::grlnlbeta ``` ## Random generation of a sample ```{r, fig.height=4, fig.width=4} #(1) beta distribution n <- 200 x <- rbeta(n, 3, 3/4) grlnlbeta(c(3, 4), x) #test hist(x, prob=TRUE) lines(density(x), col="red") curve(dbeta(x, 3, 3/4), col="green", add=TRUE) legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ``` ## Fit Beta distribution Define control parameters. ```{r} ctr <- list(trace=0, REPORT=1, maxit=1000) ``` Call `mledist` with the default optimization function (`optim` implemented in `stats` package) with and without the gradient for the different optimization methods. ```{r} unconstropt <- fitbench(x, "beta", "mle", grad=grlnlbeta, lower=0) ``` In the case of constrained optimization, `mledist` permits the direct use of `constrOptim` function (still implemented in `stats` package) that allow linear inequality constraints by using a logarithmic barrier. Use a exp/log transformation of the shape parameters $\delta_1$ and $\delta_2$ to ensure that the shape parameters are strictly positive. ```{r} dbeta2 <- function(x, shape1, shape2, log) dbeta(x, exp(shape1), exp(shape2), log=log) #take the log of the starting values startarg <- lapply(fitdistrplus:::start.arg.default(x, "beta"), log) #redefine the gradient for the new parametrization grbetaexp <- function(par, obs, ...) grlnlbeta(exp(par), obs) * exp(par) expopt <- fitbench(x, distr="beta2", method="mle", grad=grbetaexp, start=startarg) #get back to original parametrization expopt[c("fitted shape1", "fitted shape2"), ] <- exp(expopt[c("fitted shape1", "fitted shape2"), ]) ``` Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one). ## Results of the numerical investigation Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (`-B` stands for bounded version), (2) the original parametrization with the (true) gradient (`-B` stands for bounded version and `-G` for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (`-G` stands for gradient). ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt))], digits=3) ``` Using `llsurface`, we plot the log-likehood surface around the true value (green) and the fitted parameters (red). ```{r, fig.width=4, fig.height=4} llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3), plot.arg=c("shape1", "shape2"), nlev=25, plot.np=50, data=x, distr="beta", back.col = FALSE) points(unconstropt[1,"BFGS"], unconstropt[2,"BFGS"], pch="+", col="red") points(3, 3/4, pch="x", col="green") ``` We can simulate bootstrap replicates using the `bootdist` function. ```{r, fig.width=4, fig.height=4} b1 <- bootdist(fitdist(x, "beta", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=3, h=3/4, col="red", lwd=1.5) ``` # Numerical illustration with the negative binomial distribution ## Log-likelihood function and its gradient for negative binomial distribution ### Theoretical value The p.m.f. of the Negative binomial distribution is given by $$ f(x; m,p) = \frac{\Gamma(x+m)}{\Gamma(m)x!} p^m (1-p)^x, $$ where $\Gamma$ denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. There exists an alternative representation where $\mu=m (1-p)/p$ or equivalently $p=m/(m+\mu)$. Thus, the log-likelihood for a set of observations $(x_1,\dots,x_n)$ is $$ \log L(m,p) = \sum_{i=1}^{n} \log\Gamma(x_i+m) -n\log\Gamma(m) -\sum_{i=1}^{n} \log(x_i!) + mn\log(p) +\sum_{i=1}^{n} {x_i}\log(1-p) $$ The gradient with respect to $m$ and $p$ is $$ \nabla \log L(m,p) = \left(\begin{matrix} \sum_{i=1}^{n} \psi(x_i+m) -n \psi(m) + n\log(p) \\ mn/p -\sum_{i=1}^{n} {x_i}/(1-p) \end{matrix}\right), $$ where $\psi(x)=\Gamma'(x)/\Gamma(x)$ is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. ### `R` implementation As in the `fitdistrplus` package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in `grlnL`. ```{r} grlnlNB <- function(x, obs, ...) { m <- x[1] p <- x[2] n <- length(obs) c(sum(psigamma(obs+m)) - n*psigamma(m) + n*log(p), m*n/p - sum(obs)/(1-p)) } ``` ## Random generation of a sample ```{r, fig.height=4, fig.width=4} #(1) beta distribution n <- 200 trueval <- c("size"=10, "prob"=3/4, "mu"=10/3) x <- rnbinom(n, trueval["size"], trueval["prob"]) hist(x, prob=TRUE, ylim=c(0, .3)) lines(density(x), col="red") points(min(x):max(x), dnbinom(min(x):max(x), trueval["size"], trueval["prob"]), col="green") legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ``` ## Fit a negative binomial distribution Define control parameters and make the benchmark. ```{r} ctr <- list(trace=0, REPORT=1, maxit=1000) unconstropt <- fitbench(x, "nbinom", "mle", grad=grlnlNB, lower=0) unconstropt <- rbind(unconstropt, "fitted prob"=unconstropt["fitted mu",] / (1+unconstropt["fitted mu",])) ``` In the case of constrained optimization, `mledist` permits the direct use of `constrOptim` function (still implemented in `stats` package) that allow linear inequality constraints by using a logarithmic barrier. Use a exp/log transformation of the shape parameters $\delta_1$ and $\delta_2$ to ensure that the shape parameters are strictly positive. ```{r} dnbinom2 <- function(x, size, prob, log) dnbinom(x, exp(size), 1/(1+exp(-prob)), log=log) #transform starting values startarg <- fitdistrplus:::start.arg.default(x, "nbinom") startarg$mu <- startarg$size / (startarg$size+startarg$mu) startarg <- list(size=log(startarg[[1]]), prob=log(startarg[[2]]/(1-startarg[[2]]))) #redefine the gradient for the new parametrization Trans <- function(x) c(exp(x[1]), plogis(x[2])) grNBexp <- function(par, obs, ...) grlnlNB(Trans(par), obs) * c(exp(par[1]), plogis(x[2])*(1-plogis(x[2]))) expopt <- fitbench(x, distr="nbinom2", method="mle", grad=grNBexp, start=startarg) #get back to original parametrization expopt[c("fitted size", "fitted prob"), ] <- apply(expopt[c("fitted size", "fitted prob"), ], 2, Trans) ``` Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one). ## Results of the numerical investigation Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (`-B` stands for bounded version), (2) the original parametrization with the (true) gradient (`-B` stands for bounded version and `-G` for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (`-G` stands for gradient). ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt))], digits=3) ``` Using `llsurface`, we plot the log-likehood surface around the true value (green) and the fitted parameters (red). ```{r, fig.width=4, fig.height=4} llsurface(min.arg=c(5, 0.3), max.arg=c(15, 1), plot.arg=c("size", "prob"), nlev=25, plot.np=50, data=x, distr="nbinom", back.col = FALSE) points(unconstropt["fitted size","BFGS"], unconstropt["fitted prob","BFGS"], pch="+", col="red") points(trueval["size"], trueval["prob"], pch="x", col="green") ``` We can simulate bootstrap replicates using the `bootdist` function. ```{r, fig.width=4, fig.height=4} b1 <- bootdist(fitdist(x, "nbinom", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=trueval["size"], h=trueval["mu"], col="red", lwd=1.5) ``` # Conclusion Based on the two previous examples, we observe that all methods converge to the same point. This is rassuring. However, the number of function evaluations (and the gradient evaluations) is very different from a method to another. Furthermore, specifying the true gradient of the log-likelihood does not help at all the fitting procedure and generally slows down the convergence. Generally, the best method is the standard BFGS method or the BFGS method with the exponential transformation of the parameters. Since the exponential function is differentiable, the asymptotic properties are still preserved (by the Delta method) but for finite-sample this may produce a small bias. fitdistrplus/inst/doc/paper2JSS.pdf0000644000176200001440000252122713422065106017006 0ustar liggesusers%PDF-1.4 %ÐÔÅØ 1 0 obj << /Length 910 >> stream concordance:paper2JSS.tex:paper2JSS.Rnw:1 212 1 1 6 1 2 1 0 2 1 7 0 1 2 16 1 1 2 4 0 1 2 5 1 2 2 60 1 1 2 4 0 1 2 5 1 1 2 12 0 1 2 47 1 1 2 1 0 1 1 15 0 1 2 35 1 1 2 1 0 7 1 3 0 1 2 5 1 1 6 1 2 53 1 1 2 1 0 5 1 1 2 1 0 1 3 5 0 1 2 6 1 1 3 1 2 19 1 1 2 8 0 1 1 7 0 1 2 22 1 1 3 17 0 1 2 75 1 1 2 4 0 1 3 12 0 1 1 3 0 1 2 3 1 2 2 25 1 1 2 4 0 2 2 16 0 1 2 79 1 1 2 1 0 1 1 1 5 7 0 1 2 5 1 1 6 1 2 12 1 1 9 15 0 1 2 55 1 1 2 1 0 1 1 7 0 1 1 1 2 1 0 1 4 6 0 1 2 4 1 1 16 1 2 25 1 1 2 1 0 1 2 1 0 1 1 1 3 2 0 1 4 3 0 1 3 17 0 1 2 49 1 1 3 2 0 1 2 1 0 1 4 6 0 1 2 16 1 1 4 1 2 34 1 1 2 1 0 3 1 1 2 1 0 1 2 4 0 1 2 13 1 1 8 10 0 1 2 11 1 1 4 3 0 1 5 12 0 1 2 44 1 1 2 1 0 1 1 8 0 1 2 33 1 1 2 4 0 1 2 6 1 2 2 43 1 1 2 1 0 1 2 1 0 1 1 14 0 1 1 15 0 1 2 19 1 1 2 1 0 1 2 1 0 2 1 1 2 4 0 1 2 5 1 1 8 1 2 25 1 1 2 1 0 1 1 7 0 1 2 8 1 1 2 9 0 1 1 10 0 1 2 6 1 1 2 1 0 1 2 1 0 1 2 4 0 1 2 4 1 1 6 1 2 20 1 1 3 25 0 1 2 65 1 endstream endobj 4 0 obj << /Length 5329 /Filter /FlateDecode >> stream xÚ¥Ì ÐKuuuíÕ˜t²š¤“?¿Joüýã㫯Þå$«“vò¸œdY–Ôi=©Š&±Õäq1ù÷ô§4³ç‡lºØôðû|‚_Çí¥øÏã÷_½-M8½É’¦Î8MüÃÃ̦vúÍ^†ÖáмJ²BGþ8,+’ÒùßSN[X{ŽŠœÞVÝÃ,OÓéò/'|Φo7ˆçïWÜý'xô±ùÃñ §íáG¶c2 AÒ…A fˆ$ =3uR7†y×ÒJ~pu@çxl/Ò.m¸d·•q+Y¦CBâO7{¿qÊV~º¢01MÒdÕd–åI£'ðϽ€ùô`jøÒñõ§Ôä¶4¼n1]Äh}y0•ìÁÏÒ¤´…€¯ü·ë`GýY¨r„Ÿu¼¢Z+[Y1¼Ì&6÷[±}/¤9á ý‡‡´dÕ“_0O›Á’–lJ^òïÈ„8OëN Ý@SšÁ/ËÇkÓI•4UšáéV&±ÆNl’ç ƒùŸ1&Èáè‚a?¥EªgýIÉÖ-xIâ:~ü^÷Ë› d¸Ö•H~õ¶Ê&uÒ”%‰ÀÌ€4ÂiYX½Ìyõo™•Yjc°Þ<¾úå c:É&e›-'eZ$•Ìw¯þýŸt²€®ï'@OØà ÜMl ï&‡çíäý«°’¨Ê)U46)rŠGá# ‰¬By‚£`˜¹‹Š6vÚ´*Ó `JÒióAg|i7Oaùœ´A·Ç½œ¹ëŒÏ_ŽÀÜ•ÛZú%‹–{‘IçÁr3×ôKžãp¸04¡FË]dÆEÌ-1XG‘ϱY)Øy€éÓ™‹M§ŽÎÆ 1„&U$ÁRÑsšwîñÉÍØäV)1ÀSxn š¦gyHXèêô 6;]ÈØ6k>& ÿ“FÁ§}Æi;dù = µÓ˜Ì[ò‘”"¢ºË`ñwMÀ_p“Nw‚ÆÎã Æt§Dœc㚎¥Kæýr‘È4±æL ‚ÚÆóZÁ€°¸žnÆ®"ì™4{–; ÑL6°œ9‘"ÔKTv›Ù(—ÒgÓäaVŠÔ:‰Î‘@ zqX²:¨CMbM É9 KÙÛY”Ó(#šd¦s£óò¤¸^,«“,5ϯŠº‹½Œ¡kÊÜArªjHØz^² tB‹Yd1s~ÄQ`ûŠrúsGS{戼2Þ7‚éOÂt9šüQÙhÁï+㎼¥9·ÞìòH•£zx¡ÈÈ:ˆáöË92çàUµ3½0ÄN~Ôû2B×lg]ëÌ×#À °ì¡õØ ÃŽsˆÍ’2ÿU ’{ùE×j ¶UŒv¬iqkËFv#T¯ëÐÐ6hh«ÀÐÒÕŠ ¹á½ºe"qh`Îb€÷™ˆÃ5Ôæì»SçǬ=n^'à›Ø2|ìÙ­"ב7@p>´ª·±iùOß’"e2Ft’ó”7€Gwæ‡@#âëÜ#½®ƒSE(ÛŽÛ?zñ É.ÛGT¨Äh¤#T»ÓüצUé¬ÓYu+êGôÉip»áe†ÝçVäã¨==ÃsçÏ«ÈKß3NÙÕ2VëÔFtï?z¢ô=îw¬.ÄÚ¼3}ÝÜÉþ…¡Ÿ7Ú¤b·B7Ùf½­( üSp"nÄš©÷rƒî³¬Ò'äyÁg qݯuƒk3ï (OÚ`°išäF⿊®ÿ?O‡ÓCNèü:˜j1ò¢ä lÝñÄá ìÿƒj5el‹W|¢µ‘g‰Km#Võë ÔoaÈFPXE§{ÁµG’NçâíXsóÊÊ~­ÀÙµŸôLu `uBüž—S©—Cp;6ŽÐ|æµvꟀp9ÛðZd·‚@ãMŠÏÝÚîq|¬Vgy~÷á†>³x¡g³Ãf3]E¸Ííü, ïkžðì¹ô*ÀeÀ¸¬,êAS2ðÏ1  š¡Eãàg™±ÓïhC¹dePçØ\æR¼â=LÃ9‚ô6ð\Âpe<d®vvP•ÛTNåʬ6У?JZ|^à ·“ïv‡½Ööä+³RRm[1*í9DŒ<]ÀéiÊø9W¬¿ÆL!‡Ý{WZyN,qÌ"t÷¼u ÄR5bÀµ;/ Ý6L+p£Bs ¯$¡´»ÃŽ[Àbƒ7¨ÇÒ~ØŠî!?Ë"ÅáCboÅ¢¯&ÂÆûÅ`a2G´ÜŽm‘w»æ;5Guy8ñƒâÝžùýYÙ@ç´xäÜȆ;u›6§`©ŸÕq\QhT³¿æè+ªXYÁÆû3^ŒŸÇB Ê~Á+q|q [Ÿ¿Á®}§¾lÏpÛ=w¨ñ,Í<ÎÝÇ“Ós¶˜ÜŽ‚y^Îh¸°+ñ»´µÍ­óÒ}ÎKÒÍÉäœÔ€É+Ý<‡\C.¼¸2Öê² Õ:9,ùnωIº…Ø€a®ê0Ô^àS¤Y-‚øûHžÔeñb òþ&%Žì*z›”ÍôÛƒfvûǰR]»{Í}&ÍrNL`'ǧ~$]É6›ÐwȪ&ɘ þc¹÷׸æà¬æÑ~³éÿÑú{’úÐÁÃØ/øáGÃ#ßiÔ%IÒ4»#=çù3êÙ/~ý‘TniCSL˜>Õcm.ž ÍRô6 U ½Ìs!=OJ25 Ô|SÓ˜Ü&öÅû|‘TƒÀ¤e˜ÉÆ3âV È.>TÇE•›¬ÇU$²@7JHj§sŠ!é/)òÄû© ûVKXܲI9ð†î$}±ÜC“Ç:[ h®¦.ˆ 2E=w-)+ÌÏC9p€+f(ɱ£‹³q±/÷³ÅóÑò‰óYÔ÷Œ-UÃf r="'žï%• ;ý¹ ¹ZÍ9NÀ.:îðŠðphÀÊ„|«u‘BÙhèº[·½—†‡+âGª˜ ¯#Î.ˤ2Í}Î¶Ž³‰¹HÇ ¶¼§?rVbøw¤ˆ²—)D‰ÅFÂr>ª… /¸¯•.ÛR'~Úzá¿R‹ óp™% Šc~¼eLšTÙo¶ E’ÇÉå+½Þ@}#eC]ÏÇ 4lÈÞîp Ì*IØÏÝÆ_ÿ £·¢‰x ,wí5Êz˜ç¸KÑ*ûyèbÏÀÄ –¹&¸Mó$ó~ŽV•KpMeÌ À”A„ÃÊ`¬¬§ÃòYZ‘ÆæšSqH%I¹Nã7¶ÔzÒ:ð¥!ÀöšŒX²gOÊ3kY5ª-¹\¿¤3` íV«‘iEš½żJ^³{½k7chÄ.=t9í5óB§žyÇ]GF&R=ƒîM?’¶¤R^s…PÝpÆßñé•-æÖ¥qX£Èhb€2‚õßñ,pÇï•Ó­ŒÃ±S»•˜‘™Š’ ’„zÝrL&a@£*å®ãR]}'uª2…Þ}dǨ©[]ÇåˆÍçµÚ np^¾9I›M—ª ]ý¤¶ÓþÂ鬊Š7UÎçTÙ9ìY]Õè8 ¥ÝrÆÌkÏ nD±üW¹ú$­«)à^\”L*F‘6Úûz¡`YfǬØs“¬.N!oKž1Ë qÈÑçq(kY²¥Æ¿Y˺kYß‹³$õ¨—9‚5¸–Îlçç ôutWÒ]©D[ïåt7,œ¢QqŠzo³9f5r=wžçÅõ®˜ÚL=Kl‡¾ö}mëé¿ÔÀ»œzœtû(ðvÞd ­DhdÊ:òâ#JWßTõïð¹ë$m²Û‡KÉ´’ÔN‰%!¤ÓÁUJkç,⮜E@é7N¹ùÂ<ÙÉ…ªÃ’bàÂ'õZƒ+ëÛr ³n©š²véN<³…úÙ©ØRS·|>yzÜÒ+éK]в¹«å¡[8îÝo¢+ØõötÞPxráGÇ ‹‘lΑµ«à¢‡P±>߇¹lܱQpA$L­!ˆ>thâA·îL~ÞÜÓh·ë¦É<•¿µ±â®;ÔÅnÁáW8@oê ^c쨱çÅ&AÞ¡I€âògwà4ñÒwFQïZއÜVÔ;ªÕ™FèýÎÝQÒàCX …>½²‘Þ)ó$­²ßë[sGïðEÖƒ» &Ÿ¦läÒk`òz '6WŠ4u<Ÿrüá½·9Ž\~Aê5¤åÒŒO–œQÙ•DH¡’¥é­ Az¨χã9 QBÍ%t.e=¸åi]53X—5ñÉÍÛ^Ã*ˆŸÖ]póbÍùV HD•y+äáªÐÍÃRaŸçSu· ‘#C¢I/™ºòvæ).ÚØ MZ‹w#±h…E½ìW„F¦ o m°íÝ!xaWÞeôi[3›ë-ÿ… zöƒÓÆVh&—ï¹PÄšZXŽFkb—*¥Ž‚>4rª×­—Á¸3K§áý±f$Å_ÙûåT2Ùó½Ä`g\­lùE4Ó_5æB²FêCððÎ:¤Y„OLÄ–§•&)1b×(ÿÚÝ•n¬ÝŸ¿áì5=B5…”¤_óãI…ôl}Zeõ3wvò7Êôœå—ù?tk)ÆÙ½ñ™Œÿö°#¢½<»„Á(9Èã6åôq=žMáÙÞ*xD’‘I•Ûßž¥1Eó\– ÅÁ‡Â3[à¡ Rå^Ì­\ÜÕ;R8¡æ]€`·|"è ƒ|Âð¼Põî¼nådU¶¦äz=}Ø)Öň±éyÕðáC‘£yUh…ÏGœ>!iú8Žs(sÞ“šáèj ê´nÄD…¥XC†éD¾¶KSVô™ê ñ¸V«Fõ]úZçʼnùaæ_6”SØë&ÍÍ\zÖ4V&}O\¨Ëá º‡”+$ 9½Ö/ya—½Q¦”ì é2F^ÍÝUÔê\Ò‰ƒ z´ŒX?ÊþÕÞ)¢}…Ün+øüqÕ™³7s5µ `7˜ü"Uµå¬Æt¾Ãh#ÃôÝ”>Øø +Œx¿AÛÁ'gO>¯áÛHbÁ–ðÜwóðMs#O„c½TÁ°º~AB4Ê·]Õàau%ˆ5ýü%\Un,Q¬é²vOA¬ÖZJš‰lÕõ£Fq]4¾†þ ‡º“+á¤Ùµnq¨³6ao'2¹…Þy‚˜²{ÂrÒêФ’ÕãYU$©uù†o±ÊŽßãüm´pŸÕføqÊmh¥›f@Ð\Y\Ô©LÇm(œã;yÖ<xòj“”h¸È 9ën}›ô%5ôö¼"ß?€JSÙ6Nz©ýy Ke¯S@›0ÖqÑ·m앥빙Šë œ¸÷¬?ÞŠØ2:çpÇ¡Ú; ŽÜ=î0PË’¼¹§!*ßxXo-vááÇ‹(v zZ¨Ã‡£Üµ èO=*öÉÎé.Ì!µVHòIeèà>Mdê78Mt¼‚20^˜( –}q8æÑB*„…Þ_ø ÷R®#Q{mehª“ùÂÈQ0%£^¢— së .¢¯%.Ôà‘{l—AaÂ*¾";P·¢H˜5W!rš+(Zéèò„ÄóSàö†ó©7ØrªÂ9i,ë‘óAÔ^ÞŒÚÁ—ÓBjrÞâU PµœÇ¼¥®̇ÞB¯ÙmÂŒZZúìC  tÐ|^vr˜*Õh&2úˆ•sÏØåœrAr¢œ†¬ñI\GÞ!UÕY;‚þMÁ 1áÒýFvÓz9àŽwô=)="盢¸Ÿnð3êê×*Û$©/ |º¾ýÑIÀnÏ£Ü-B4ôëÉáe Àt¼z?r}*7 èÑ0Rïˆßa×&øøF? Å x¬œ{ÓßÉ îk%…¿®õN ¿u=G´“:%d,÷LŸVþ¾÷'(¹¢ž;Ä’²ã•À"äIU+p¦$×”|‡@öI]lÊyÂë =5‹dèl NQ–+ŠãbÓ|aE{VÃ[¸F+`ŒÕÓy@d¹~Aƒn”Üùj¨6u‚ªâÊUâïºÇq}ccœG~›º øõ<âJ5‰Ÿw‘*_ts•sâ4˜wÞ¹ÊüöŃef¨óÄÖ±×ò²R`™Ô~bé–>²#ȘÄxQp©=¬úîGúL)HwKãqÔ 9Õ¸GÔQžû{®¨ÙÄš"ÌAÂÚî^ZëåޣVÊ'×åY²õ ½õ°àáúu#‚õ]nè¿ ¢Ûq£Ï¬ù£tíÝÒDf@ƒ7Í憎Z[Ü­‰âwÆzì„*»¨ô¬æŸ—šn]Qá8åø{¼ƒÙ ï[ã° é7û–÷]ÂB öê„ð!DŸ~Y“†þÛ@^?üʃ¿Lj¥$|øä(ÀºTLŸ<)ÓbbkÊSFÿ8Âÿ^Ââÿ7ÁàåúLÀÚÓÍ™†ë½è÷ÎçåýÉïú¯Àt_Ç ß؂駅uþöû³äãÏ›yÐýþÀ5~OKžºÿk"*/äÐÁÆ })ß èùÿ.¦´ endstream endobj 3 0 obj << /Type /Page /Contents 4 0 R /Resources 2 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 2 0 obj << /Font << /F56 5 0 R /F62 6 0 R /F68 7 0 R /F21 8 0 R /F40 9 0 R /F71 10 0 R /F76 11 0 R /F81 12 0 R /F82 13 0 R /F8 14 0 R /F86 15 0 R /F92 16 0 R /F97 17 0 R /F98 18 0 R /F45 19 0 R /F22 20 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 4313 /Filter /FlateDecode >> stream xÚµkã¶ñûý #P/°æ‰¤ž ®@^צH 4Ù’|ðÚÚµ{¶µ±ì\/¿¾ó$)[ömr)‚=K"9œÎ{˜lò8É&y‘Éïçw/^¾®'iJWNî&¹3…›Ô™5ÞúÉÝròÃt~ãªé/7E9¯oìt3¿Ç᯽™ù2›>Àc·‡ç¢™~çùÛ‚&öðoßâ?æfV¸|úž×;øg¾ïnj?½ÅE¥ì±Ç9òØ3Ìîo+³gàO`X½¡´EÛwŒ1ÃY1=âö‹ƒn²“MðCdzZD›&lq£C\/ˆÐ‚-̆]ºàOÃqö¶ÃõíîÆÕ4$*«ØOwƒ“˜Ykš¢`†3Ã…Ýv¸Ôûi÷€¿N„^—kbd÷ø‚'sŒ´Á?·<gµ-¯TÀóY÷@¼Åv A–ñ;ääQ,¢X¿|ݸDp\‘›Ê[ …h@öøŒÙ# ¥5Y!kr]q;´4YUé„ qþ¶‹n˜3Ö:;ßÑÉŸC´ñEù B#ÀkaM»(Œ«ìsñCú ä,ϼišfx w+9``^Ãns:Ù#®[¨¼?p0›â{«ÂÛ¾íù«.ÑœBÇHâz$ò…†WÁ–-Žô"4lM6ƒWǓƶÉMY•Jÿ™Íñ@ñl×t´¹²9^à_nrWèz°u]OïŠF4š¾žeÁ b…p¢V¨ß“Îð)ø27Y^È)”¼ï@=íô‹nû¤rOÖe× GÁ­Z!£Lè¨KÓØ âßžj3“¹ ]Ÿ!JDÕj™öÿGKZ‡ò¿v8ù ÍEYš*ݼ1y`¯DíÂúOàï¥ü-ÈT$ŠD“ßgÀ©†-¤hÒˆ¼â 3;hOiAøñó£¬{…ÖCh;ˆ­% ÊqÙpyfJ_%ÂQKîVÂ¥%kŠ.ÂéžHY‰0`ÚA”ÎÁÁÔn¨t#òîêŠÔiÀ×'¿ů`ñÃ"~ø¸aÿ{.Ä# n4¤§5[8Ód×d¥:5' ¬¥½ëé\6&+~†d©HÖBxŸ”ö‚3 †Ž˜ÏwfK7ýÑúü["ì ¯û¬gÝ‹$—CPÞâi2ŸÎ th!Dx&ÉîY‘È6èM^–Ï‘í(Ç'²Ú&FØ[“ûyø0 ¸4¿OðRÉW-éå¯Mž·ò¾“õ/GŒHS›ºÊ£¹-,!6Ë U ²ð§T¢„ÓûZýs-rD.pý+î·ä)s'ÎQFsÿ ‚÷ÓïÚatÄ þD¾‘¿; Nj Ð”mâ׳: ¯ |bJóàÄ]Øc­$'ða0X57ë{±5´Œ´‡¦‚Æwü» ßAò¾^ð§‹~pÑÒ b!ñMb8(•kɸ£2Z˜¥ú´>C“Ÿ¤ûÆ«dÿÀ€ñ¥èM|¤]¹‹ŸgGä‚ì@+{@~¦p’ï,«C˜Gªjmyâ š.½ÆÚvúgÌ“üTQ½OR¾=ɉUàýæ×B#G•ì¾”ò›ìø<³ôìRde—çî Ð©Ù©“­LQ7¼ÙŸFL-d8®QyJ¬øÊvŽìG6‚LÐe!œï>‰ÛÆR¬QÀ_Îè„´^¬¨| ·Y^M-ú%‘µ<Çr-¦RdûŠÊ@;äöÇ‘ÓÁ‚ \MSvÂñ­ìíá9ã!Ýð1¿ö5]VÄÇd #¼7çN­1•ËùXåT?')à€ÍFîù$¡ïÝN&U­°|VÙg§°ŽÒŒ*c‡6ðn‚ÄO@µVg—‰7Ì ÿß±ÑÉihGq8E×ý|¿‡H8©6I&Ö Qò.9}[p¡5r.kómLJή27M~’œÍyb(¡QD€ÌÝ©Ñ,›Ä›KØßbx¹jMý‚"OâXi[/âyn©0øŽ§ˆßšÚÁJ͸ðm!½Iç¤xÃdpA&࿊ºTƒ©yHâ gâ¼6úp$TÑÔ*Õ.8ªìJ m=/ƒÅ¨*ôPÖ¡<*ý *%íoc] ËaÕ° ¯´¦ç@¤eˆT_ªªkìÁaR–GË¥vy“=ÚQÍ4ÑLÂгŸR¦iaê–k]zz#˜w÷Êß=ó ÍWS:Ö¡rC¯¸bû´Nlæb¾ãúsäëÎMï°©…$”5£¸Ñ\¼Še:;”ù]ÏE§iý†¨ð·¢h—¸B ¡ì¤VhI©”ª•’ü/yôrN‡£*ÐðH±@w`4´ÆQ ž/4ÖÙ‡¸8¢³†Å-Ø×:kÁ&-à:´§”Pã@qÌö¼V°šc•j^Àrm6‡WÁ¾–YÈfJF¤Ûn©QFóY :D¡¬ä˜Ø^$Φݼ^yÒ\`©B4S©¢ï'ýb¯R(¤(¿ÌN÷\¥€;IJxHB¦N¨ËA»CªE-½ „ÕR$ÉÄê+ÉQÈA—ä„wüL1¾rr· ÆjÈ]œ I{KoêʦEDçQíyw0§ðYó–}`ÌN14% /ЍnTÆÆnØyš¬Fd¥êø< U7ÁøBûWކþRœžÈ0w˼5Y‘»e"2}«aÔîñ¸­Å'\Íåt>àÇÙŠ…ƒ=±·ÑÎxµÓÛ$ÑRð´æHÿF&§r“Vi6rOBïµPÉÖ95Ãî¹­¡»€GgËÔò[ª+ŠÂN»H‡¹„•¼ß¸çPK±¼åÑ9n² ˜r™zz,Zvcþ&©^´#WöÇ“VX¶³¶aáÓÖÊ€]# 9X0ÞG¯.öÑ—rÒ[ýs™©k7hh0AüðP}0Œ+%îD€ü ÿ]ð¬8íoð>d=W•Ž[ª nBÅàFûãr³â½¾ž@=hÞyV!ú+¯£åÍîg¶hèî'ùî,ù½në~sBüqÒ–Ëòny×sQ¡Ï¯ø»÷ˆâ¿à﫸h(×hZ®"}u÷­{6±“Æ›"÷Ô«27Yl_üüÂeI—E²IòHCºL>¼üzk'_v/þ ÿéÐL@Θî>Ùª4U#`ò°gÁÖ•ŸþuÄÛ⸠)>‹Às•8Òž?ÐÕ ^@ï&œòž¨A/t±ãF€ùg´2>ì¥á´¤Þñ¡Ôì‡Cã\m™ ½ŠA#×|ú‰Åûý¥ìÂÙA™æ0O®=…È…mŽ%ÍP¿¹¼Pê»’¸Ò¸¬ø½!Ia²Ú^ IÄ`™Ìð«†@fæ˜õZЧ 4ÓùRË0H·Û\YFËabßr ×dÓÐÓKï* &®í©9épÏÃ!QwUÍn6OürèxÆXñ‚¿[ z%¼ ÷/°.g4Ñb‡´AEpõ³boDèYÕ ô,_ð\ˆ2Ða"¢·—>3Ž])# jµ#ÙKÒÈ9êb}RBxáV<÷oè,°›¿“¼™¾Sº€oôfIC¯.îïO•¡’¼c0˸AÇ´&:l­ió’§DÃWL:m^H€·ÝIÀr;ùÌCá­Œ)2ùÚ ·ZÃ¥‚*ÁCZ½OÇPÓf!BXXN‚à÷3†»ý¿¶rQW*w*î=Oß‹¸…&LhîWÜõ½™Ã­àˆeøí@Þ g„pž[rš§•nR?£ö€q&œãÛ´]#L±SnŸˆ…^¹³¹Ü¶ ý3üXŒ5^0juY"”‚»§ÈQŸ?“®ÈT¾Î'[JÇt}ö)t§{rp0GeÒe–ì´¹¿%·i‹çºMe ŸÏÚ¡ºíJ6z#CB‚ÿÛ¨v lÎÏ5»¾¤ØAãNˆ÷ÚúŠ’ñ®¹J|n\™£œ@@ûÁ˜ÃæF`¸Ì8ò_ûào²1¡AuŒ¶v{nuj¬>iD›|GbŸcQ@Üø&¹È(•{S4Õ­Tï`Aî¹"k.b…ÿÛRUÔ¬ã gDÇSNlSNf ]±3ÅÄz£ >Q^Ÿ™,z]›HiR;¹ªO&‘ŠÛ¦5Èÿ¶S` endstream endobj 24 0 obj << /Type /Page /Contents 25 0 R /Resources 23 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 22 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-figgroundbeefplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 34 0 R /BBox [0 0 720 360] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 35 0 R/F2 36 0 R/F3 37 0 R>> /ExtGState << >>/ColorSpace << /sRGB 38 0 R >>>> /Length 5417 /Filter /FlateDecode >> stream xœµ]Ë®%ÇqÜ߯è%µðQ×»j+J4@Àdà… MÊÀ3´ER6ü÷ΈȮsîˆxóH r&¦:ªë‘¯ÊìÓŽ/tüñøÓËo?çí<õ¿Òÿøþǿ߽üêÝË/ø·þÕñÍ/øw]{ýÿ‡o¾{ùåź{÷ŸGª»+þO8•~«å(uÜÎv¼ûx|ö›ÿýþû÷ß|ýáøößýðþÇÿûÅñî/¿yÇ{}‘½³üIgÄi¦Û°ÛÍÛÈìë×_ÿøõOÑ8ÿôЕýuu£ÏÛ<Å=[Ÿîç_ýÄt¿úü_í_G;þ÷åw¿?ÎãÛ—t|iÿýñ%±ûyéëvŽc”[­ÇÇ£¤…á ~8¾ú¤Y¨÷[Vk*é~ùÇÃáCûª·zÞÛïí¹ÇîÞÛ_ gîÞþsöúonOoèÐvºiwÎ7ìln·³?pÛ[ȳÞÊz §ó ì Ñ|¼uz˽˹^O:ßïÝlƒë1m½‡­·P9ç-M®÷'Íé6/toMù¼­¼›>´·y+wºÃ‡öÕnó/xoÏ¥ÜòÜíÚljéívÁ{»Oçj˜ÝÏPÇjÞ>oU–‚öu?Õr+}wPßÜA6{’ïÌ·w°Ê-«ƒ”̉ïºtŽ«—¯?ÜÂþì„4ŽzÞZCß_½˜}HåU#Œ±) [“©>_5çvÞúðæZoùu×¹öÛšÞlw.¯;·9šh¨U¦é±µçÝu¶;××]¯ukÎÍvãöɰ+A­vßþºçË]Y£Ý¶¿î8%è6[¯•<ò-·ÃÛ´¦¶‡u‚dwýøRó-±ÿfFÈv ¨™ 5¢!´x³¶€*þ4ÔP»eòz’j÷d±M 3>ä$dñîÓ×xL¡EÞdŸ¶bõD›mœör!SòIÿk(A¿€0ê–)1&U¨/ LžÍ¼âhU Ê++Ö`V­Dk·D^_B3M^I‡?›ß~ßPB6kC…Èæwq ™i›2P0/&dzkÔ“ßPéBcu"›_ZèÅä Fu`§ˆìC\ÏnÆÍxSc1´PÇýº¤nÝöÁV¢Ù2ÆÊ4‚/fÙL… qW Íu˜©ä-8ŒåëiÁöÃŒsudVeuÌËPº»ûpdóKÇšºŸ!“°E0T Ùæü$0ƒÂ‘N2 ڽ̆‹nЦhÆí¬ZEƒ\_ðѱEéÒƒÁÕMæëN^<°hɬ¸!D2»¨žm¢f–“ËßXЯ”xƒ/óħ44óI‡cÄéY€g—r‚$šÅI¹`! fL±B&·`GRØV @r£¨Êû6(Z*®¯MÓRi ˆ–M¡ È!ÅzJL€LÙ’YÊæk\¨|4•L¦×ƒ÷]¸a2åôMPNãšRÇ ›‚)·zq¢É4ˆšdp·ù0LtÌÔ$H?î 7cSè> ƒ¦v ’Ë‹©©ÉÄS]1 J›Ahš—L˜Nrm¾ÆEº`Ðd4™v5 |ɶ™K·èÔÓ É!œ‹óbn]Òêxø!ð€êžŽÍ(#èNjOØ®d A3l“M˜«pƲ…p9!°É&²†Flâì¶+$¸¦#[7]ýÛÄ‹á Ã#l Ù$»i<!N>×5>›»Eæ)hÖ)óæ¤M|³î7¡›9u©1ð0÷‚èY÷_ð©9gçÃ7ÛxLH¹-Ôãç‰n¤7›\RiMMs¹ækjdÄ\¦/¸ñ\“¤Ø n’ÎzVàœ'–˜–77º5aSÖl|©ü¹Mm.ð4¾™Qo·]·ù˜Ñ«šÏ„d¤ÕÄ2Y Õ5}Ëà 7°él6iIìÏBVó‰y^×gjB6¤«6ÁÉ0ÄìßîÛT¡‰_à‘áÛ%/™4¯îãͪ›!ñùåbò@i…µ0/&6ZïÜ¡½ÅĢnj\wª‰H6k< Œ8_òfØ4¸¤S.”ö¦k? ÛBSñR9!ļÞ6>‹OCl WÒgè1î'}1‹uއ–¸/Ž—V>™àÍ']xUη7,$Ö£ªÿŽ ±^¹:ž'×ÓÇ;°0\oÝB‘°£86}ÎfæèVRY0ûyöëþ ~<›=Ðz!"µý1C_…lN6ã"}D mòfîIò`Vúl–jp¾gá ù[ŽÍëäN5þ @ÕæÓݱCŸû¥/}™a¼;¿ca³…)²W°ÛCú!<°PÙ,´ÖŠ•©Oš¿aèsÛóYpNÙþÐúÚ_ÌÏC%ov!ôYÝ'éópyo:CëúŒ–=°ð”:å€{Qÿ\xn¼¿ÖÓðT,ï¸á/¿ß¯££Ü²Ë»aèsó@ÎöÄþù,ŽmáMêoRŸ-@«â/ê3Ö{8žûAß ïU±?×úÚ…ÐgÛ¿±Âý•¾Ã½5’´¿†× <,οS‘óp ÿ—3åGúÕ«Nªþ˜Qä-sü yL×_ $K,†3}†ý’þ^Xò…ʾMηóÅöêxŠ/{g©ýÓ§ÓÝ:çÃøÝ;Ç_¯ÊùÉß žF0ÿÄùYCZ\Ùk,ìµ…pêÐg„¦âw´ïËq—þÈßÙ@ Ï¶ms:^Ò­· ¼A¶xQŸÑÇÐçvÙ?(~¦¼J>,n€>צ0ô¹ÒÌg(nÖAVx¹?äøtRË0k\œe:3ÒÃþôT¼™ÌÑ@ŸÍlK¾';Ë #>0·qj¼ƒúlnIó3 }NËåwNÅ{<ëŠäï 3©P†2Ð?»0CŠøÀì½ôÏ0ôþ…ý[ „øÀÂÙwȶèúB}¶øFöÇ|ì}qŒøa×sñ´•- Ó~F,oö_ëm†Á¼ÅW’oû ¢yDˆÍ1Âyëvi<a’¯Å3‡]#¢Ç |ܸ éº$ŸÀˆém©Ÿ ÜNÆ‹”ïlñ¢z³c„õ“ÇQ`ï!MýUö&F99¶‰¤K?³9F„ö[aÄöзNÜሩâF÷зåá½é[×x8A-i_H*²®Í1"|¨=û·Fˆß—â[n|c`Nù÷À“f†ý› 0ÊZOà™׫½\q>÷‚Æ@¿]ýñT\ÄgPÌø±~¯’.‚ýN³<ퟎîs~&øˆ÷»Ëãlì? Lj÷a_ØŸÅYãá¹$+…I3Ìù˜¢5͇ñiÄû½Ëž#Þ·õHº¾ c`­?·ÓÞw­¯ä§ÅIܲãukÍ4íößâ¿Ôˆ5Ãcgá }&æü-Þ;Åϧã^ÕÇo†(ûAìt<5žªö„ø€ûÏþ,þKšý0NæÝ—0ter=iŸpp@nrï¯á®ý9Õ_cV Å—ÀóI>hÖánxPŸ›ÛàQy&¥ý‚!†>·~ÝoRŸ?¨}ÁÑ Œa¼Cn‚Œ0Hó«4 “´¾Ê¿!ìb¼˜•Cئù+‡°¯©Y8„Òåávj|ÊÄ!Œ•> ÷pÒÏÊÆ!Œ–¼+‡0\ú€Œœ§œ.ÊÉ!ìOâ3+‡cƒô«ò`„c‡ì‹2s8ƨåæpÌ‘ü*;nj׵ʄÈÒõY‰Ë®ø#+G‡cžÆ×XãØ.¼”}áy!+S—®ó5ôù\òÿYÙ:c%Ê×áØ+{«ŒÉÍ12f6e”µÃ±[ú ¼óJºß¢>›ÙÖü”»Ã1ŸÉ¢¬ìÒŒ/8BŸO?OeeðU(gN‡ÞœaÊÔb*‰‡|ç¦,ކjeoyÚÐ4%õ¬DÞåg<“WuŒe¼Të”=—W|v2O6Æ=2dΞÎËn±=Ÿ—`eOè%Å«Ù3z¾eOé%×>åô–3€¦¼ëtÝPN)&.µrz@†CùézVNoú¹<+§‡ä•.f|8ýÔ’•Ó›Ó…\9½égЬœÞ¾’Èé€<Ñfåôæpƒ®œžAÝw2°š~ÜÎÊéÍîcVNoö««ÂÔ¹§B³rz%zÊéÍޕxÊÊé!¡<"Þ®1§7/¯‰œsÑš¾rz³¹ÏVN‘$/Æ‚Âêp+‡§œžÂNÁÅaÎH9½ûÅ ã§'#²rzÓs/8„+—.×¥œàt¨lº rÎaHT”ÓÃô™Ó›Í—}MϨKr”ÓÃÂjËsêÜÁ¢”6¥8ìäò@X”Л]‚T”Ï›Cát9™×CPݙ͛žY,JæìºXu£quÅTÞ)eò “‰b€p¼84Ýœn(ŠÒxsÊëeñ¦;i@SÉég´¢Þ¤ç6¨žA.§v°é‚Là¡pÁÉê€f”²«$½QQöÁðépP¹ E¹;(;g¤ÔÁ\vÖŠ.fâ†â‚¦’H“é¾LÛá0Á)k8Z•¡1gw¥tŠRv"cwÞ/VÂ]M‡¶,:µ2]weëŠEgçÚÖ¬(Y‡)2W·’BoÀÅaP‹2uË…¢ÚUhœ\I¦1ŠÒtË£ì¢,6e82Œ‚ªV.¹Ä¢ÝUÞ)ÊÐma°H ­»¨(?AbWJÏÍ©h¢ ;GÃØN‡FUÃPnnzjpQeædˆ™AƒÙì'u!‰Ë´Üt×V”•»MEI9h¨àr•,\yÛÉ¢ŒL{FBîn‹òq—%,JÇ]¶®Tú8ƒL®%ãPÞS+sq0ËÉ!T²Ê—J;6=Ñ]”ˆ›ÕwAy¸éE<0TXb”Z)}6ýP]”„›ƒäàXLËá$WóUnú¿(w•G‹òo×ñ²(ý¿Ã®”}»Š€…]©³ro¨Ð‡“%aéQcŠPsýQøǽ*\÷ý*eÝ®zrQÒí*6åÜ®J4àl»Lý<¨éúäŽHþdÌñîûcÀ7_©EtbAð`Ä<a­ï¾ßVü 6$Ô–*A_ìA‘eÞàíìÆü´0»ÂV…Ùí)v‡½ ³iœÂìýd]ˆÍÌa”½Xö°ivË av† °´s1(³+ìH˜ÍgöÂì~=‰bódfϧØÌÒØ“Ù6„À!Qu:ƒ©¹€“S½ÞéŠpTïi½èôØqzƒgˆÓ;pHÓçõtqŒÎìT˜žYIŽÓ¢à8=Åé¬Åéõ9:kÏqz¿ŽÑééÞNG)­1ã]#B;ù€žƒ©¡uzáóq:w‰Ó3NŸq:k4q:ÓBqz»ˆÑYùÓÇsô‰QœÎLO˜^Y¬Ó2.q:Ÿ Óù|sœÎäMœÞŒ‰Óûõ#Œ æ8åŽ8}=Eo,‘Æé 5“8=#6Ó ¥q:“vq:«›qz¿~¹£³¨§ó™è8O…é(Ì>!uiû8=?Gçã…qzEÅ2Ngá1Nï(VÄéüagœÎDœ¾®_ò†èƒµÄ8=¡þ§g”âô‚ÊFœÎšCœÞž¥¯'„vð×o§£—ù¼ÝŠíEç¯ßâtVüÂôy¢:§'ÔýâôŒò]œÎgdâtñâô†JZœÞQ<ŒÓGΧÁ’žŽy3½‰ÏH©à¦ëÚ8=…JX›žCU¨M/¡2Ô¦×PªOÛâ!¯€Ð6<52øðs¤ÕRѯìG¨µé3T‹Úô*FµÌ§¸ð|öSô*fmzU³6½„ÊY›^Cõ¬–›žÁo¡’Ô¦÷PMjÓG¨&Õr×f¨&µé+T“ºèú-qœžB5©MÏ¡šÔ¦—çè5TÒÚô*imz•´6}„JZ›>C5©M_¡šÔEÏg¨&µé)T“ÚôªImz Õ¤6½†jR›ÞB5©MïÏÑG¨¤µé3TÒÚô*i]ôŸZÄé)T“ÚôªImz Õ¤6½†jR›ÞB5©MԦPMjÓg¨&µéë)z=C%­MO¡’Ö¦çPIkÓK¨¤µé5T“ÚôªImzÕ¤6}„jR›>C5©M_¡šÔEog¨&µéé9z•´6½„JZ›^C%­Mo¡’Ö¦÷PMjÓG¨&µé3T“ÚôªI]ô~†jR›žB5©†ŸBâ§ó9T“jú% ßœ‘º‹^Ÿ£·PIkÓ{¨¤µé#TÒÚô*imú Õ¤.ú8C5©MO¡šÔ¦çPMjÓK¨&µé5T“ÚôªImzÕ¤6}´Wßæpøwü6GÍñsÔùÄÇ9Z}æãý|æã½ÿõsøû&ß.úñz]^ÑÑõ‹¿¸@è |hço}ÎûޝÐKîWøKîW ¨öxÇWàÍwqüp…|_ñ0“Ç…úk²8ùŒ±ŸD°ý©uþÛô¤ºˆŸüÑ®tÿy{Ó‡<ÄGQz¿ø£ÝÇÿ¦ï€ˆÏWÖhüéö©¤¹n¿t½ ÔmÏñ®¾ëÚÎOðu¹^îáiú~·©ê¼wÿnÓï>ûüÏqäóøìϾþñýÿüáøöý?~ÿþ?ü|ÿ_ßýâ÷Ç»/®]xî[NeècNøL‚üÝç¿þââúå•^~âý'¿}ùIJùä endstream endobj 34 0 obj << /CreationDate (D:20190123142041) /ModDate (D:20190123142041) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 35 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 36 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 39 0 R >> endobj 37 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 39 0 R >> endobj 38 0 obj [/ICCBased 40 0 R] endobj 39 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 40 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 23 0 obj << /Font << /F8 14 0 R /F92 16 0 R /F86 15 0 R /F97 17 0 R /F56 5 0 R /F116 26 0 R /F108 27 0 R /F11 28 0 R /F10 29 0 R /F7 30 0 R /F14 31 0 R /F6 32 0 R /F1 33 0 R >> /XObject << /Im1 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 3787 /Filter /FlateDecode >> stream xÚ­Zmã¶þ¾¿ÂúÁ‹ž‘¢$2ÁhÚ\‘ H›f‘HîƒÖÖzµ­µ{{—_ßy#EY´wïr8øV"GÃá¼<3)Ÿ­gùì¹üýæêâË7JÍ\æ*]Í®nfJ™µfVÛ23U=»ZÍ~™ß]. 5?\¾½úþË76¦Î3]k`Ed¿æeÎ4#–À°6žæS&.Ë‹*â¡.º¶ó× VÊfEY̪ ù·Svuæ´õì~9!S•UFɤL¼’Êt9•§˜Ð•§9!‰ûÜÊ!Y »puay©Ú8`V©’IÍ”•ƒºÙ""z‹Dß^]üv¡`|¦fª»+öéK;[î.~y›ÏV0ùý,Ï ggODº›Õ*«r”m;ûéâÇ”/Y••øRm³ª(xÍŸÁºZÏ›”7Ù,¯ŠÏîMe1 ÿ[&Ó‰ut™)]­++¦úZ¨Æ>X™(– >‹!d™U€±­6 |1`¬‘ëyŒ92€AiS«*Óà#gLÁëžçÀ ¶jÊÑì(²ªùB’Ê'õWT‡Þ¥ÂØåzT¬¾‚@põü £æ6U`ÇJ}’~íèt s«—×KÃ#øhë³ùÛVA%Ý5Æ:aí»Ë²š7‚Ý^ »á¿<}éæz{bý…Émæ”…M©¡X}Ÿ¬ŒUÐM³'l™¸LS~©K';óG<Æs2bÕ*h/è™ðÊä¢Dƒ{n´(eûˆcg4 ñ uï^ìuËÕ±±\V«` [Â^fÒ+»'›ú¤É@ ÿð =¢—ƒ Áre=¿G£uìïdfÕ Â—–Ú6¸D?$xŠ„!I¼Íï=ãwþ-?Þ‹û³ãø»ÍrX@’>êm³;”µ¶Ã0ªõ|×¼?9Ei‡œ£ñ]ÿà§Wä¢+ÙCKÒãŠ9çÔØ8‘Ë@ÓBÕóþŽ÷©æO”úúÇ÷Uº¾C­£s “®÷Ë.¦¨çß|@ª‚å¸ip+’5Àb°Æ5íŸn…/­çÛ£9bT"yhËc·ä¥À¤åÉ-q}àY2M`Dwñ3¿/®¸èú„Ϭdc?°baº•5iñvë=¸åSY¬ê·…©yÁ5Ùº%=<$BÎs†îdÏ©ó°1ÂÀ!°ö-)\MUËBW¼z;ñoÉoÖRÙàð í|—ÄA¼ Áú…XáÚ£¢h¶•àý"‘§J{TS¬a7Þ?¸úFȳ┘Œt,N/" ’îÅ×Ú´¦„óq®c›PB hÚÐæh0ØmÇ" I¯{¤+Q(p9-= !“šæ8,`}ìBÄÎAJ¤ '«+=ÿ+úšóaø´÷€Ô/à¿»GïxxìÓDO;ïðàé‘|œ,MPùÀÁënÏ>éŸ&¸GdáÆ Ä9)zéúohþ­Wò^˜ï…òÍ¥5ŠxF ­œslY¤:z¹÷‰?}£ÂIŸúƒ©,œiŠOL& ÿøÈ&é¤RTn~Óø"Žé:Ž>mPFAÊ Áƒlvs-1DÌ=gQUßLßÈ“„‡–é4ω[ÑõQ]4R®à(6œ²ÖAáC¯$”[ùÝ$Ã×Zë˜ µáõû6„.yqYšù¿$Œ"Umz¾¿ßÒáL²Am}9"I†íYv»[ãHC¤Ç¥Ö*NÄtÈ#5Gd΀WÞ9Hª†=Op1ÀA¬ø€áñ 9à~˜Šð~‰ün;r Y•òX¼úóBGëÉÁôa"È`LX¶ä€ìDâ¾Û B=rå=sß()oÉp‰4Gþ´!BËíØÀPXtëI–Y´ù{ÖBÏž‘EÛ¥Ív¨PLá²·£+<¨à%qÀ%± qî[¾ˆ°­÷ºÞÊ\\Ò2›à0ê ¸ž3Ó‡úéo>¡V­j¥JX#·Çþhw²Öjl"ø-Rš?vˆ™:h¤² ÉkÛ~Ôñð5@eÐãÓ õ‰õVvƒ÷TOt› =âŽÝŸ¨ÙñˆÆF~ ]dObð"ß$ì(!–[."™Õ s ûÁ̃< ´Ñ€ ð4±¼?øL28c»:åûK*gªú×|zò(—[Ùœ¸I„Ñ.àxÅI.Ö Á^ÃT”fq˜ÃiˆG<£´J¢JñËòÖípÚcmxyFâES×RTšŠ”S9УÊ(¤ êқ̙£¢è',u|-‘†«Ãk.(®&¥‘P®’=ÕO{á¾ ^Ûœx ²æh¡zðÑ›ÑÔèùwÂ$JºŽÙôÊñ‰$D`F(Ľe÷‡Ž‡ ÂøÇ²=ŒËR"• EAn¢ÇeÏíÑù©õGÐpBÓÓh0*'Æø7­cœáš/wI8D  ›g%D8íПqpO>yOÎ×PjŠ]f‰DJ,Ó1r?Ä~ÕÜ3Â5&Xú}”hÆyñÞo11yŒ|x}ENŠÒßn<{:´¿âMBk¤€já2屸%:4QÁü%!ZkïuD& ïË$2¼ô`š]8ñõâäNe¹=*èÅ¥½=ú ŸÛ:8ðš}`%Nì[ ²^d/œ‰º¡tò-!ë²ÝE% Üø2\Xý Í®²Yû%ßU1.ºQšv|dVQâEŠ*o¿SÊÕ~aßÿ(R†’#iÒDôGP>ÊBvø¡}çùÂJÛ\åHD‡GiÍÂå—/Ò=Ï Úš‚ÁiïO<æy5LÞs"™¢!\œ(ÐD:Ÿ¯=¬Ó£|¦k:Ù¬}ù‚2Oß)qmÌnùŒQ…^¢‡CídèÀukàŒNv›RvÔ˜n8WøÃ—ž_y “WT 6r InKGW}º àË­|bIì÷”5«8UV!Œ·Q{ªõ•7VÝ6ôM‡³öÓÁë+©€…+WqÏ@€lVA-,|&òïìz˄ÊÅ…iB¿=õÙ¨wI¢›ÁO÷|iBºkÚHaj¸\ùqµ”kÏ!:¶ãæŠÚoÎH–ãº6T_Câã7GRŠ\ 4p›~AS²áí ühƒQ…» g¯•?Äk_Y> 5÷Ù¾ܧòfëÕÐA#wÑêøX¦•¯ÿTÄnõ³×-JG«Ff¦_vC®ˆ» RŸ©¨’RƒK®´ÔùVK ×:t¢‚{‰œÏ¿Öp•›¾š¾:ѦúôW'ÑÉ.—tñM>ÿƳÇWÔC¨²9ÁÈÒƒ¡WO'=ë2•×§:á©ê%ÓŸº¯2S¦<ÿJ¨(BòÀK~^òD-ò|B…{Ag‰ÈÈE wü4åéûèÔ·æU(Ñü>†‚¹ú´ '³EV»ÏÐÏ+m•ìç‰dí jŠ#õ|·ìéX`|ª²Zëãò!4 ÆÍžÕH1U„½ýDº9n£¿¡zõЮ4u1ÿ§d™;o'‘¥¶£–^1l#¼¸èy‚»þzÜó„{¸¨XeêQÝh©`8êSy‚/,qäJ$0o9툱ö­¨‰‘€Ò»vøºîÀ#q‰ŠÏˆªù(8pxèEâCôÖÜ Û?´žRG=\zð0T7Xcª \ê|ê…m]丌ó>‚:ÌîûøµI·’}ý[RmÜ7Ùn%»Á욨»æœ¢}w§[ïC”»3/ëŠô¾%‚¯ð«(Zq=L-’/ÿtò@Ïà¤òÑð2”Pó?E/òþrNR®:>XÒÐkþƒ•G?ÿéIøÔýÍ`gÚfZËǽȷ“_#r|`îá¥{¤¶>º^ž …5N Â]´á¯ ŽÉM-{Z¨²„zÍë°ß ÛÈ0Íó®Ý¹Sä(j^Á¯LVTGŠÙEJ“âÔësñ.ˆó¶ôKö¼ïdèÉ·;åÑ>Z3—õü¾JúûéëŽsâ£}ä+ñ^3Yáºð ~g9~ªê²*§j»ÈJ—Ó[ì|]Ò”L¾ün§gï.~„~jáY.ž“ï´ÎJ=«ë¬’u¦Ù+wsýwÕ‰>©Ï–ã40å6Ê–pZ¹9CñÖùÑ»—½ÿ.…ŽB=ÓÈ)‚QJËǯ1'U¶ ñþw!µAò3UOQâ÷ûůz |W=²ëÞ·¥›’ó+sœ:ýŽ©ä<+uO9ýê™’Wå§½¹UÏóÙ}ý_8Eä™Q ?D¦Ïæ†Ïx „Âÿ#öJ™ endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 41 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-descgroundbeefplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 45 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 46 0 R/F2 47 0 R/F3 48 0 R>> /ExtGState << >>/ColorSpace << /sRGB 49 0 R >>>> /Length 9827 /Filter /FlateDecode >> stream xœí]ËŽÇ•Ü÷WÔ’\è*ß­kㇼµ ¤–M¹IÚ¤4žùû9'«»É!ivÈ a Q<¼·neeež<ψx|}Äã§ãïW8þ~Ôy åèùRÊ‘KºôtþïõõñÇãåÕçoþóß¾8¾s.!„ãþŸo¾yõÅÓ«Ï¿ŠöƒO<ÂñôõÑ/eØß‚ÿ%ÆxiíÈ1\¦}çÅñèæññô'~õêwO1„u‡/Ÿ¼çO¾ü½ýk¯Ç?®¾ùÖ.úá*_Û?]E|áø÷«/=¯ñ¿8ò°ÇéK¼9ž¼ó±K­]’k¼ûú‹c‰wŸ§.%Ü~¾Ä»Ïs˜oÝÝÅ{ŸßÎíèî>Çä}|z?ÿ*ùÜÆtYø.·•~©‰“0¹˜W¾–^í*ìݵñÓ¯M©_B»wmúôksho9?àÚQßs9¯½¿Œ_\•`/ºËàKl—ØLö/¿#ž_~Â5ù)o&¯¡–w†J9Öviö˜Ñ~¼b¬ß<úò—››ë—dz—?_½¾~l_9ýÏñç×Ïþö—ÇßO¿þÄ÷Öû¥Ù7ö(÷Íßyf›õÕÇ›¿>>R8]ûÿþñòúÍ›÷þô½ßûìÞm쯳ÙÛÍ—1ý·ÿúËëÇÇgö¾ýüêÍó»ûÕûÖ'}Ø+ȶ3Ö ö:wÆ;ÇË8¥»OcŠ—L6íd þæ*Ù0²ý~19@¶ßëÓ´CÅ“™\m•ØŒ¦tÉx–4xaãñ9>É“ ÷Ë-b='{æê‡¡©QûÜ~fàñJö#½d,¾[Ù.ï^±Ÿ³8ç%âêeœºö*וm)TŒ>çˆÛD{ùß·» [E½a’0Ú‚Ù€®åï%[y¦ÔR°9ÇhS©8{’̓ŸÛ²¶§ƒî¸_²Ór>åÀul¶&¾­o¯!ÕŠ‡ôٵلn®œýÖ1m©MŸhã·¥n/o³ÌË´ûûÙA9áy þ¾½{[ÉÞ~¢lãëÁ·n \.qR×O^oç‚ÑýmE³ÕŠ¿íh ¶ÚÛ ›««áÁ`IV~ß–lµÕcf´ßßž×&:ÇŒ­g‹³cœ9V(<+†‘c÷ÑÍ œa+d_É!Ûʱ=‚/Û«´¡æ´†6:¦˧`d¶¬øå¼Ä‚åœÓ÷ðmmk3bÑŒÄ5˜ª¿•]l—ŠAšÍyŸW¶3l°{òÝ7p£á+ÄDl/¹}ìýáù—‰ ¯"5‹‹|[&ò\]h/ÕD®l¼ãF±…[%q$ĈÝC»ÌÄ´4†í.ˆ™ÃÈXõ\ìÉÅæbk.šëÑGÅ£ "'ÇÄè_žKÄ]l{‹"¯-.¾“OïdÛs±.Ƽì_.K¬þSyýT_ 'a ?Bàóf’:frÒQ¬ñX¬œ§Ó’ý$‡ørXŒy¤•äK\ô‰=\ѹøšÓ6ÎK¤Ør€>ô¤Žaq<’2z1UŸö‘\\,™£r6RÇ¢‰ãíÓ8ý•Mçñ‹m‰íd¼ä/Çà“ˆ!!OLS¶v†Ì8ðPiV°:Cg«GÍ™cá${X²$Æ–@’™ê\Œžƒ¦<ýó+Æ‘Îû§Ú0ñ å´äÈéŠ6¯6‚ua?×ðñ¢SÅi%Ÿ¼ÃÆZíVo¾yõÅÓ«Ï¿ŠG<žþx„ãéëcàUØ7ü/±ð“æ9@eùôÅñèæññô'~õêwOqùÿeyÅï~þUòlw½ûÃåX©*gÇ”Ûï~óè?¾{sýúññ™½¨GÿõØæåxôìçç¯^>þöxú5î×-Zéï¡“õfÚûñ8õ|œêÁI™GÆ«}ïã|âÀ—=þÝ«W?¿ùÙ†mäÏþö·ëŽsü7¿\¿¹ÿ?ÿñÔœtõÞ¬<ýËõ«××??ÿþÙÍñÃsÞæ³h?ýü;»…ÝïLÑÝ=ÞO¹›ÚÀ¢ÈNžúÂÖ 5Z:ãxr÷ þ˽oð ÿiS³­RSøF&s¥ËüFTˆ65öøÆ’ö¾ñ 3`۹ķ¦÷å+<3¦óų›Û=ü¾  ÆpÀoÛ—†Áp¡Coå·¾ýðéƒi¤æ`~yùüÇÇ–èÝ¨îÆ´&±ð’°–¼¾¾7ÃþáÝ 7çP½÷ ÿ—»oø›?Óm ùÚÇûß{õòúåÏÏïÏáz¥¥c7ܽR—ï¿ÒR°mî^i5Ò8$¨¿ì{îÕŸm%?ÿ[Ïíà%wBƒœ÷ÊÇuòg«Ó¦ó Yñ@çì'Qáh¾»þùÙÝHÞߣŽÅ;0lßÉ’?qì<‡®µø«±‰xÿêþGö9Ž0×F^ãpùaã‡/fàÏÏ^¼¸‚û?Ðß¾¾»Ž$¾žãOþèkìúV+ÝÜÏßßß¼zs}üüêàŽg/8Þ}ä?=þuú=ãð…~ç_bpJܘÎg{~ÿØåT¼àŽ<>|ù %y®Iº:Æî Ýv݃/Եßî²ÝÜv¸Y¯iÞ\˜¸pVAzôD3Ü–±¡ÂåÕ/¯0ˆþÚ KšªÂ£Ïîd椤~øÕ ôâVVÜìÚºæMyp[æ… ¶I³î¦¶-Û^”GÆmè‘•—©mÇaæì­¥å)z"W¡yY)¼‡+â¤ìPÅãîTÂà©`rŒp‚>sñt ƒru£‰cëVZï¡Ð÷ƒ§¥,¹D›Z.7×Òî  kûÄ\¨lºJÙ«Ñœcóë±ff5¬Uº{„Ž€†­Ê’‹´p,OaÁ›‰ÈŠÙÁEÑSæ‡×Æí"Ý®›•QIKÚå¹1¶‘”‰·åB57.Ixí¶Òa‘ä¬)Ü|ú£ +~š;cOžòC½y]J2À'æÝ£d‘[þá—7znɬª¡Ì\á~Q šYà" ¦¥<:"bÛER4¶I ¶ºÒv‰PPôŒC2fêJÚë‘ö”é› ¼uÛ¥æÔ ²6”ã©Tk0¢%+ÚupÃteð‰s£$ F‰,ðrÕÞ[b(!ÙžOÒn ´ bÑì±Ìmš°oDK–ÇÓ„ÂÒvŒTÚáX*O¢`k¶øšÕ6Üäcƒ—t|äÙš5ƒÌV‹yʰ5%Ûq¬%ƒ¤©ìtË~°OŘ4‰œiœ*l·ÁÌO.S:×±fp°GÑÛÇŒOw@„™›Œ‡BUHzÊæ}¸U„ÍjÞzjtZ“²Õ[‚Ï›Z\!݇²1øn‘ާ‚”)­ØŽ%—9*n§Ù4ö?$ ªt¾T ÎZ~à{Ë0€³‘J”%&0“¿>a³Ïå5xΊ±ç©ù^¡¹•‘‚’Xñv>H6Í2‰BÒ_ÌÝm4Ëdð½­¤©jV`ðÒáf×AMÚÊ­R¸¡±¢!Ʊ¸=‡`tÐöøìÊÉŒƒ¿ì¼OÉK®èñ`¨KiÉO&æf“ i¤›¶Êà+%¯Ó_[2e!.Yä§ì”lQD+2ݯ.-Ùè.HÐ(jV²ÃCë;\ RÙ~£¢¬HjÁôa¯½k/Îç0è¹fIM7°e)ºh'Tl4É”,ÌÉX¹aŠ´ß‚Á\³J´c°Ê ŠJRÒñ ;)¤€´KP%o¡äŒ ‡²bmБÙåʼO&s‰¢çÇ\öº¤£©Á‚ÕBùfî¬"é©UוPû$5 •À”•´¤»ŒˆVH‡£Ý= ž/M¹<×ÑEKÕFºmˆhVÉ@Âm•QH ‚T¹iŠ* ÏàL)ÆE{°rÉKPp§ï]™:xÙ£‹Š×}[©­Ùì1®¨Eãq4ç³àE0©8s %ŠÊÓPdT‘*+ze ¦fÍç/†4ÂLY,ÈAO¥Œê)¬x%š?ÝšLô4ßÑjM¯Ì ]^˜ä+Vp÷n‰*¦K'­àðáî±–lƒ¾]kì2 Z©*½ýI+ºH5)ÍÚY+i9K]£”¶óóa-NÒx0#ޝlÖÄ ³ ¤ú€ÀjE”ª*+¡!Ž)Ó>ÒCHU O5Ú€ Ž óÖ;-ŠÅÚ·àÑ© U)ÊLš‰õɈ®x{U’¢$ö+RY|¦–CÂPR4 †Âã•MÆJE‡ZHŸUýRQ{ftKM‘§è®c,¢òÚ7Í/¬ìV—¼—é½(Ö˜™±èž±jJžZzJб“Ýí0c¥(¤qKN)¨€ ¶â¹¶Œ)¥`¥(Ó—«j#À’’6*cRataw#¼eÉõîzÔ…añðøLí^í(U %V²Ø’“*þàñDzËÊÁfgCpü) ü›Îž~¥*›nÄjn× ‹.tåliÔ)Iöûôú£œñ#Rn›™“¨õ ˜Ä›R‹Še›ì@eÞ‡w€«}û(QMîîŠEVlg¨p Â݇ãí–®Õðx61o¢À­aìˆð˜AªU±°Ë.-Y//MUKS"áT=D#¨9SÑÀÓ©M‹mEVcÉ) #;ŠôÛ¬ c[©k€hftÖ¥ËHÈ.Tmiøà˜•M†îšŽ˜©µ5vo½bËLñ%´»£¾Ô I4“È/¶ö¤°`¥%™5¬z/ïMr?rñQ­ö —sÕ$ídn kUÉ’1Y2ÁFצéÍÈQ­s¾ÑeÎQr@V¯RÖYÌÑ&(fÖ^›½/sR­rqK´d5Ÿ•`60j¤ ¢L+^ƴɬíD¬A*â±g'¬ñãŠÕ‘öº›[Ø_HDHŠÎkI‚†Ä›»]ïZÈ0"æ@H·-¥JGu›*ˆ-nT}Jáï9‰eüÅ[¥¦Vœë ¬$¼Ð-'W«ÞBóú%Õ*b%ñ€Ä>äê‰ZåîƒàP³R?¹ÇS<›,i±ò ˆoÙÊbÍr¥Î "¹0Å£áJH÷Ä3Ú¢I,,Ö‘`ñDˆôÙÎ ˆ€UHG‚×&%Ìc^dª¸Žî2æ$â'ÖƒÿJzô…›¥’ÁÖ8xoR)MrŽ -B…jAØÑahÝ}ˆko”j2¿'º»r÷<=õ$fj¦ˆtŸ”í2¼f®h5LDmöf%µ \ bMµÇˆH#ÈÄ­.F„L…¤à»TÜdd@Î/« eŠùJ¯,N"Ê` áx]á°ÍèžWζÁ5gÊN*g‰Ž¸8ÅÍ,()I4§Š»/Z¢ö'BLvVò¸±•V9—»{Ü]‹ÉžUwQľræ“ b¤Ûv™Q¦±Xh¦9h²Ñ"X¤”Èfú}U´cW:Ý4دâNR( l»#´k½Å¹K¤þ¸ÔO[í $jrÒúVÐw½ÊL…ÍjVðð2Q5Ä4EÃ+hgƒœfOü™+édM'PŠrÑ\QãCp^I ]‹˜ÏÕY´æq/NˆZË¡€:fåp&dzšU³g;µhôp%i3 uçe’âæÚšÉžyªZ€)¸¢m¡˜ Sµ’ŽvºBÖ„(¯½5ƒ¨Ô:µºûëlWe®~€t¾¸ãÅ&µè¨þQ,§?c¢¢®˜‘‘54Pç},âK‡½ÙJ,êà^¯šªXÛM„Ua’ÛÛG$IJ耞A/9œ^.©YTÎöŠ\·†@hÅ$y? BÖ›Ý~õ:X³Ü°”W B1æj Óië^+Æ/Þ•YµF^äÌœM„(VT*E™È΢'mƒ .jøMv0“K®‰lÙcÉ]òû’s;CñYÁáçPqÒ’ Ýip«æ~”æˆcIm‡E UÓ™t-Ø."4 ;_Tè\çËZç9Š\Af€.d‘Ñl¸M¡XÑ í9JãÌàV-} CøÇ²tª£6ÙY ¤*×PNüWi½ÇàÀ(SlC j-»ÇÅ–Ôá‹FiƒžøÉI‹áG’‰±_ºüÖmÔ ß"ß[Òî>£ç¼¦Øw3ÏHÄW3_,mNólhUÊᇃ%dÑ[êld$:h` Ä;®b¾m:Á’T<ãYäïëg^_²ÅÒ"ˆš-Öˆwœš«˜‡ÛïUëNô€’ã}`eœ#ˆÈ»‘x]H hH Éø´Þwâù‡Ÿ»(²ƒ“hÕÀ‚1" |@g·•:ž@=îE@J¦æXìŒÑ(6É`ìe8RSXìƒSC¤ñ,kÎbÇɤ$‘Ü>Rð†T£D&­-ôè^Þ Œ Ñ¢™«×Kíh-4•ÌþX‘•q8úSÖÌ!x¶¯IOÞªÕ ÊÙF0G´!+½ZrxªP‹tgB9è<]Ã*µ²×yB¥ËíuÑŠí¢ß•Qø“Dê–²ÝÂö ME²ƒÂC’Šç5Ù´Nj&é\u¨‡ iN'ÔÂnQÑÁýT–xFÃô܇È—IT‰b¢øË•¡ÜÒ4þÓÌÑ_ºT \–¨RF֢à QÌ!§V¥ß%Jšç¤gÍ×gñÀÕþ‰â ÒÄö`›¦QÚ =Á‰Í*õÈ%É€÷"™rÕ ƒÅ8…ê!Ò ¥N‚_®UÌ æÙÌÕŠ§ƒdˆ¬¾v$O7‚%#²¿åªù 0˜rRÔ¶ÝÓŠ4“³ç±w£;o‡)½š˜Á"Žº^’†±AÒ‘æ4"ôVð2 ŒÓS…‰|ÒÒncbjf°W¦’ÔWTÓ›Ô4šÄnxbŽ8yA-Q­'d‚T$ZYN^Š!åŹà|‘ÕÄéFo]¹¼:ÚHÒc¦hö`°TG“N ;”w1i€š¬UœÞ_§Qb!5ކ)É"¢»2¥d²€¦Ê;Ï^¥Ä®Èä$lhaS/ä…j’ž‘²EKTF‡Ç`òC<V _ëý k8ó"Êuvr"Ũpæ½Eöºàým9ëh'œ‘ôÈ}…›Ÿ­]ê5‚¿XíFh Ї nÒšÛº .²-05ò޵h* *Ma ±™Dȹ‰ nÑYÏU´ƒà2¹jUÑ)9šŽx8zå³'"ÄFö2Qw°0Nƒì•H¥Ìè\× tÍ’¶CERX³z@JhÖJ á¾°âU4ÑîïRº±6:f(±ðA#î—Æ€¯H1ÙÎ0Gn¢ï—¦TIƒÎ*Ùµ¬ÌÈ\§ÓâJ]û‹•Kåw<@HµøÉ¹”í€Ñ8ðØ€MØcÅouöí¬ái:§Š{%®<6X%`ûጼE„W_”í1iy'oögxNlÕŠÞk%©X‡!²M#ÙS59ÚôÔÒ/‘û„®eJ“SIþƒCö¢ \š÷HÜ`†£E¶Ì¹|'1Áä L }!ÀŠÄ´‘Øn¼û;m»!ªœ@lbfÁa’+:ŸöÞ2½æ7¢r­:2£²fúRÅÚ3”;Fµ§4zU…hŽQxÁT¨8݉2u½ÓšÃÛ—];}fådžÁ; ªXNOB-hYɃ°÷ Ùflz¡5HmÓ«*š-ß¼Ä6jùÎîX@Q£ËIn”D‘mñ™ä*^ `»aåIT l Luˆ8yÙ²¦jÒt©ª[.÷%JºP®Þ‡¬VDî’"ñètò ‘–œÌþd!0;>!"|"&Œ›4ÊÄõÆV­ªmè|/^¤ÙUlÒÐ=€, bÉ /y)9±.:;À‡½t%kvV‰êM?Ã+Ê¥ÜMÎŽ|U4“Ä ˆcªÕt'mR88“‰ c×.o'€¬TŒ³ª£–þàšsX h"ÐñSi†* ¢ID'éØâ±l-¶†·Xô$Þ´'ÇLÖØ7H?8µbx?^û¦Ù±Ý!Æ“ˆTÑÝû‰²žìýW<{fy@cÙ¥ _†jzÅFšr8z®˜0t#Zª¦G Eän•Ê-½z ƈX€êb•hAh‡ª–ì©Ì6^bê+›Õymah7ó„ÉÝÆàéJ‘B<¶fJA¢TÏfb ˜~µf RePÜSz0À6éùµ jtÙ]‡ãMaªZƒøÈçñ$•À!òr-Ñ;=¶'ÂEjI6º)†4CStÄdçðº? 4áèE©,¾7F„“´à‡3f¢~Oƒ¿E€©T'59#XÐ:È;ÙërUK <µHzw·Ú´œY&Y=8#=F)ï‘S¼ŸI:fì Q?0eV‡”vrÈ\Ø#R„ã7e‘+&‘YˆÄNbIÑü³Tr7ßÏ| r, IfvœouJÍ#Å!¶‡ævU¶“0EŠDLYòÖáîÕKÅâààHÓ9kb‘à$æ·j„\åf—¥88IÓš:ÑþíÌZe2>’ŠNßrX¥b| VeF4%hÅB¨¸]N5¡ðUi¬Ùôߥ±wò¨¡D²¿3C¡ØnZ1IfýRi 1œcѺ Ó-ÌÄHÜQ0˜¾Ý‚šªë²bk];"ªoØíJgeæ’­"ÂÚA# Éå9±¦E@˜ƒQ%3^yÒ®‘Œ&ÇGôé×âØÓO7-Ž“S)èã|mR·RIÎÙX´¾•Üѳ‰éºìzJãÊ$¹kóÞ ±•6W¹ggƳœDJö9½RÊÚÄ%}¶XQnN%‘D:vWrM„u°65]g—ƒs¥¨h²GפBš8Ôrj±h¶ñ²3Qô_HGe@ÎÑõÈ 8Çm³ö.Âá܆ˆ¤R÷º ÒÚ^H’CHEÉ’–)· bŽ »û°Ô½ùB­Ãß™Äo^+>«Œ-ˆä´? ­dß]VÓ…o¾ùÖoâ›*ÇÔÿvÒe…$ßþYüùäËß_±æôWß|kßûáªušØ`Ÿ Ç ˜È„gš¾7Ç“ósÿ‡ÛÏýëü|ÑD'Ä]_ êE.âóQMdYµÏ]´Ù´_½÷9°ÁÚñâªûÞîd¾Á¯£±ðßúòÍÕ“«<ˆ ALl[ŸÈ ò××Ç»¾82’܉[ÐÊ›{ßð¹û†_q÷x(¿jåöñ–x7ü4Xøq>å?ÿÃÕÿrǼº endstream endobj 45 0 obj << /CreationDate (D:20190123142041) /ModDate (D:20190123142041) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 46 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 47 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 50 0 R >> endobj 48 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 50 0 R >> endobj 49 0 obj [/ICCBased 51 0 R] endobj 50 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 51 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 42 0 obj << /Font << /F11 28 0 R /F8 14 0 R /F14 31 0 R /F7 30 0 R /F1 33 0 R /F10 29 0 R /F97 17 0 R /F116 26 0 R >> /XObject << /Im2 41 0 R >> /ProcSet [ /PDF /Text ] >> endobj 54 0 obj << /Length 4735 /Filter /FlateDecode >> stream xÚÍ[ëÛF’ÿž¿b°À¢Ù¾ŒË.bïú6‡»œ7;‡½Ãf?p$ŽF‰cQã±ó×_½úEQ#ÅûA3d³Y]]]_W5‹«åUqõo_òÿõÍW/ß–Õ•Ry[–úêæîÊê.šBåF™«›ÅÕß3}­²\_Ï”Ò6{»:\ÏLm³Ýÿ_¬àñp€?{¼º}<à¿ÝvàÇ·×FeŸøzÓÁ“ð[m®Î7Ø\fklù[zº¼ßA{‘á_•-¸OïWU†td˜ëÜüûË·ÍU›·•®pÅÕL5¹isÿ_Ðm;‡?=ÒÓÙ€¤Öøg~ Vã>ªšï¶Ûóÿ \øÆ{ß! =Íšó³^{QÈÍí#r*7(âV©ˆ]­ë¼nk`›Ø½;žP ‹ãÿX”Å“7µu}^I’×Uã:ü4Åt¨Ã(Zóa1¢xâÈÒNçym*{èPÝ¥{èI ÇC6E^«öxÌ„qŽV®ëPÄ=ÚܞʮÇU•·µi˜„j+Q¥Jî´˜š[eË«YÔ)L5NפÆp{=Ó•S‰ e²Èý‚gØñ3HÔ£;%¸7Ùàt(Õ=` ¸(ë¼-&«dn:´º’ß.W)0R(ë UmÀF¤´ ýîá—oAÍ"¹yѵc‚ø‚×dº?¼ô_|Ü:k›q=+ ý7^/X€!1D·«\^Âÿ z Æ%{X‡nÝ€¼´ÏÑÒ`OCÕ°¥×ϯ1”Ÿœ‹‚çÇF¤ò ¼ø.n+pô§{yyŽù~bp[åªöï>DZ·–† /ô$k@·Þä‘ÞF~ŒðéܪÄ.%]õ"/›*æxMš9Ím™[ÝœA‘ƒÀ¥àX9²‡¸lSŠý $?Èë FOD[°Ã›ûÐ[pÌïH‹Èo~EO9wí)a´(ÌçÙ€©½×Œ o?ðØÎæ»sîý\Ïi»º'³²uãm§øT¶G‚-¦>£Um­ÃªÙûï'âÙ%ûÁ--¡ r™¬§3Q!c󶉬B•Ã$”™iKö((êò¤}<‡<âþΘñÚïóàz2ÁÂÀNŪâ¨ë3òÂ-(æv #Ðnߣ$`’0‚ctÝæÒ°ÇB’=-ÝB$Ð(¶‘ÑTFeo$A|šÌ¼[óË‹Øëí§l„ic$Â(FÆ»–)÷Ý‚ejËöˆj”(…—$Òú²ÉžpQܶ|ª£ L:Ö¥ªÈMصѺÃ0ážpy*öeyêŸ ¦-{\ζÈzŒËœv¢Çš]Á&¢©ƒi±·ØÉÔ7ŸéÂË2fë Ež³Ñ—¸î*ìPÞÿZº!²µÁÁõ–¼Ñõ—lq.?Æo9#î§ ÅÌT ÆDŸþýÿ8 ljÿއ‘ÙM¬z Ð9D0²Ne¨šòˆÌ œxØø¼Ü„¼ÜÜíeœ7¬¶ü?ú»G¡t¬bòÀKÃ%êìp®ßüðí÷ÒJ–ú³…é÷O¯PSuöG¤íHw»ry€*ãK$Ác»Ž’­l×е;L­È/Yš{¡w ßÊËó ~/å‡Næø} ¿ï%„÷3äÛã\´Ÿ$]ëœZ©èR¨ùyÓ’ßü6Š¡ ÀUk†5E ÿlæö·š­êÀ×d4¢!Ø  /Ñ­“^áͱjpû›y`h`xÊSÛ8ÖÓ††ˆú¤·ìGdfɚ݊Rè¶Ž£Þ>ʆn*LÿLx=7¶ý@Qæuû%€ßWÏŠ&<§ð­­Ê¾ÛNJaNlÍR8îL@«8ý hª¼´&Ìpf ƒðT·ÍEUf‘â¸ßñe¤#•ƒˆý|%Wâ.>û°âdõÄìÉ{-“ þ˜)ÌêÌÎÌYPß¹YÊÒ2„kÊÜØiE5U‘À#¸ã£{ÞÎÏC¼WIÏeNñ†Î)$eXÄYuiÇ—ŽÑÁÑ í'œ[Ü“‘ßn%µ@7ƒKðì21 ygà~»» I›ºÉmý%¾`ÎXœº˜À¤É5EuÂã„%ÞAV ì‘â}y W&÷â°lòVÙtàq|¥RÑ«½ c— ^Ø•£Y„Ô}ÿêT {ÈÂWÁ T'½“úGÕÐ%EÉ w|º—ÔBC¹JEC‰V¢†q=3 1ðeÿ1Š—ÝÜ×#.]# ‹ÊKào{ Y¶ýT01þÄ+éx¹0žÍÖEA\·Ù÷ìÎ\ß9“Ñì•pÄÔýƒ$Õ‡P¨~¶§a?R×Õç‰6·åó&ÅHb$$˦$ŸðFTßæ8/‘0àÆ•1ûá>óh]OåjfQäÚ苊]º*ãÍ;1/ͽóÎ;ߨ"#³Ï}xŒŠ°ø”l oœú!?t˜ >á”à¸÷Ÿ{¿ÿÅÜ"61»NS>r#nKÇïF¥:Õ6<ÒÅe9Èn=ªf*‡@q ê‰bJqÒR`÷Ëi¹¥»E%VI&Y@ÿR{űνÙì[†¢2‡ÆQî܆®_ËÞHð"Ä×)î²ó"7g³ù>2o‘SVüú»zËn½öЖº~ûÝîÀ¸xýÝ› 8~º å2Lr$¶9ñKö´vš¡Œe~¤%ÖX·E$wÿD’éqÓkÌTmšÚÇ¦× 8­m•½î9Á b~búâ¾ñ²ãN2DL€ ¶')’Ä%Á&Ζõç hªæLò^†.¢T¬1Ìr™ý óe}\Űo\Pê?9S,-Zˆ#e †^H}ˆq!•ýEJ)w>Àš3ç*L^†ó<Ëh2ŒzùMUßÊ¼Ô xö‡G±ž÷¿RP«b”£l›+…™NhÔ¥;£²ß_ÏJmh]žøò_y›íZOÕ5Ä0.›‰ÊþE^õRÊK6=ñkÙ¡÷£ÝøZ~_;/7a[ÑtN—1<ãw2’£6Z¯‚Ê÷­j˜öÛH‡„uoGé2rx»øUi©U'‰n*ùxœý»É-%ئëpZzÄ­ÊëÊ\Lû–³²8/'ÕËœÄéqe*D2Køçr ìÆ[¸wÑ¢uBÞ;Aix(*1_&<†‘ÜW‘&Âòü5Òþ$ä÷–Š“8`p5Éba„/Ú’ÏF"¦‚_¿ ¼j³"j§ÐIÏ&Ty„Vç25×3UÖLÌ#!î-wa•µ ñʸá‰-£uy~077S…­Á10÷Z*…1ÌÓ}'y;××õQÄ(÷{ýL?M¿ i¼‰6ûˆÑîÈ~ÕL#­rŠÂy”sëHœ/«Âe$%‹R$?zTD먽²\¦ §ßfÔãšTïcGçK¢Uе‰ c;•Ó«ézÔmî–iºŒÀ IJϫ¢W&),н½À`…³ªœêñ¬E5,‚Cüh™bmvó=Õ[g;¤3‹à ÌöA$äÇ’øò&[½HŒ0'^¼E4CÙOüðMÕ¶mtò©¨Æç=|7MÜÊÑ wBãíŠ2qÞZRÈB;Ö…Rð8е*F/Î4U¡ˆò²R5Ü£2>!e¢,·µÌ׃O¬%³‰B«¶U²µ'*©ôäÄn×ò¡tìáwaÖÐŶ³É&CYÞ]Äb|Îé"~ïcdº[2œçG [ážòó«p̈tsÂ/,.(̼xvÑg¼„ (ü•‹ŽªõkoY÷ü2“BÞ¹“ªtæàpÏ·£Ó¨=íÔW‘ع¦Œ'•Îf×ødÓvQhž¬p8ƒPŒ$O…á¶´ÞñÚ¥|°î=fï¸=Žî§›2:ÌÎTБ`¤Z2g§<ôÏw®’dE²6e9yÐÛoý öø›j¥zR<ÜŸ»_H•ç¨C0vïô2¿(ž‘`§Ny2Þây;¯’Ô,LåŠe¬@â~Èîk‰ UäJªÓq º,TR€»ùD_Kœ¨Jë 6×mú©#éWa?1KñvïeØ´'Ÿ/Ôy޽àw2s·™ï6‡eÞZêP¼ž_¯}vÉ›ªjË6*RÀ’ÞxŒ!Ûc󢬎×k½›H_ ÝÉB nÝcË›wÛÄëÌÅÏ+wô û±Û‘$ýÒaÒèØÎQì ˆqç¶ó$‰¹`‚D λ`rGõ3ÃßMQ¶«s6—Æ“?ºt,!ámenúÙº¬ÈÚ'ü±j‰p¤Gù ¾Ñ`x"ñÄá$f!Aˆ>mZ' ð"©”ãí²ßº‘á+f£rS6—žš5Àȹ³ /¢¯ÏNä(Ë&·…Ó‹½?üÂ@t'Y”‡ÉªueŸ?޽ÍewwžðøàÃ4aS{U››Æœ=Á¤hÛx.¤­/(lƒ.*¸;¼²ìørá3`œÌǶ¡çzœ÷okw<?Y•í( Öù’o#Ž·©nznà-òžo’ˆ…5=üjÁG@*û…T#­_‚WóìõÉHt}ÊÅ7õEç^›:ÔfàÚ×ÏÖ‘[ó_â4N|·1=Þô±¶¦žØIL€b°Ö„îk#Ÿ+ö|“dêñaï«ÍÊÊHÒ…V¢ÖÏ)LmÒó]Ø=0¬µ?‚$qZ¢o¥èýÎï”ÝGTäô}=ê"<}þ%>)SûâŠ#$Ýüq¸æ¼‘Í~òÇ©‡ø¹9“8ÉýKŽPÙª ÈÏûéw¤\;üÄÏ,ßG'èÁ„äZYå NV3*á,ÀFÁ"’ëu/×~'hm1>å‰dâ/œ¬:Bñцw]´ý°*ǵ*^Ï+¥íÂ|¢s\Ãé´güÕ±ñÑW}Å\êÄ©24EÛxͱuì¬lº'çÓÑÝaQtwôï…²ÐàÐ.³ÏÑPpM‡ü°ƒ÷_Vœä:ÔWceyó÷1þNY¾EV|.]ˆÈÑï#Gc„ô"Þ‘M ÛS>‡k¢;ÓÜ"y†õŽD[Š3&ÒiÙm6¡’xös—!€¹]’Œ˜€ØÐhø6òK*Ÿ*­|º²'¯Œ6]µnù'@cðvT Õm›—Ƥ)…QtùOR ]FE1W츰0z'*²ý'™Êzò”ÞESyˆJ„ÂàFpLJEûþ7uàBÿpЀÄÙ‘8S_F€yq$ßhtœàßιG2rõº±¬ºéWÎiȉ™.u^é\½Î›V¾\·É ºùêÿެ` endstream endobj 53 0 obj << /Type /Page /Contents 54 0 R /Resources 52 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 52 0 obj << /Font << /F56 5 0 R /F8 14 0 R /F11 28 0 R /F14 31 0 R /F104 55 0 R /F10 29 0 R /F97 17 0 R /F1 33 0 R /F7 30 0 R /F92 16 0 R /F116 26 0 R /F108 27 0 R /F119 56 0 R >> /ProcSet [ /PDF /Text ] >> endobj 60 0 obj << /Length 2866 /Filter /FlateDecode >> stream xÚåÙŽÛÈñÝ_¡—À¢Ùìæµ@øXo샽;Iâu6›Ç o´šÝÕÕUÕus’Åf‘,~y’Èï‹Û'Ï^“/ª¸ÊÓ|q»^¸4ÎÒE™˜Ø»¸]-þývc¢¿Ü,³ÔF+¶ðààiàéàÙÃs„ç}’%ðsÏN@NãôžÏð‡…ÎúÏíßA"Kcâ*Ë®ØþÃÿ?ì6ºþ£²œ_±|öþHìz3ÿùö‰A²0‹ÊÆ™³ k³Ø³höO>>‰Ë¤ªR†´¤ÛdâÙ›½]¼êž¼ƒº´”Ë'ù•òÊ«€G‰M%^嵈tsî‰þeš‘ýéféŒÅÒE¬Ðì/Äø2-ädò€xË…¼|ŸwBø<:’¤Nt_„`Ý ¦O7YÕ½Ýe}Þm/wðœO wPTe„Ç ÝÖŠ1œ„D€hxGÊ“;ºx9Ó#"d¢FˆZ“Jý 9o= ÷rÏ 8i™D›z¿¯ùÄú G³$±ëQmëû9óÆãv`ÑåK2àæ”?(ùþ“ò¶‘Y|ùÖŽXÖ(ån?nß¶H׳×U(†)ËØæ¨%*Q•{Qós Òw¢â-¡ Õ+sqžE2‘¬+˜à“ÑS ‘G>,EÍ`~V-I«w¸ðUØQŠA¶‘Íðär°£,$çá˜yÅ‹3q‘[ÝütÛ²R€ùÐt…ÕBÅær£‡Aî÷$wjóÄû z!{BxÒÕqûËW7èhL^X7€!**TP°EÝÒ°jìDˆm/†„k¨y3§ÜÕD`#ðš!$ ˜4¹™xA<¤% %ò±^zß4ëaŒq¤ŠnÙ…„´„ðÅq¢;mEW{r!Kãâʹéͪ ÈÐmnÙ¶oè^ùJ¦z•Do‘¤·Œ"Pz˜Í+4Êi}]#wJQ›Ü´î9ª'ñèÄØY}gÀX3êJÌ Ï›Ã5!ÈC¯J¯Û˜̘êýq* ©¬31ñ*qÖDvLÕ\æ¢Ù²¬Á Ãoâ•Ài¿LLÂ'Ü»Òr^"€”¼!‚ô¸¿9 W_?ù³¡ñ(Øtdk .Å4‘/a`6®€@!ÝI%ce-¿”$0–øö»9‡™‘¿ ÒÈlÐÿ×üvMÊxb ,ˆ$àrèŒ¿Ž°es»žxacgÂcÖÙÁ†8üÊôJ5Ï‹þ8Õå‚;¢ä1™ôf땵M9ØUNU½óÜ©Wh8µcR~|M3â&â;H¯vŒÑ+—µàj×üK´ìDÊò^ïîHçÙóî=ZRÚûuÊ=ø!@Ûòø<¯€¦[_¯_¦¡8÷˜,ö)ƒÖ…§Yº< ÅníEúNÕ˜lW"×WåmÔ«>(|ðÿ}«eox;sÁÕG(ÈõWšÃâËÐ"EÈNÚ¹ÔªJãÜùT:¬;I=ÕׄX¼âE*ÅUås×Ï;o¿DÆAÓåÏø¦=°Èºâ)p¸S;‡Z[Ÿ”UIQ¶jk°e-¢¯OgµáWèÊ0.° Ò€‡4Íã¼ðù¢FäQyzI;ïÏc ?B§&“T óX>nZŒQeÎÉÔNQ@&ìÊØæ:¾û›'À7 ȦŠVï|‰@`u£ŠÝ2øIEÿE½Áޏ¯¼Ì•-I¹±x?'¶‚¬ë7õÁ«1ñ¶Õì€ôø —dÚ9;µ³F*%ÂÕz-H¿Öš×ÁšDàMÛíÛÐj^Þ· H× ¿¿¾„ t,¸ušùù%ÀÃäŒC›áŠçÝ¨ØÆL{éXi¾OÒ|ƒiBôÓ¯ly\¶$Jâ<«PÙ˜\7$ \§©¯fÌL5»¼‚%ģ酭¸0n‡ U@(œ@}~ö®®Ö `|ì„ñA]ßòùÔÄîÇ’­Þ~š”²ƒ›áAî™î6§\áߺ¡½<ÙFÿ¼)SÀŠ“ z¡7À„_˜O“ĉЈ@o85[biª‹ˆÕhýšÏ%¼qÏã+¦$ÈŒý¤Õf1¸§p ’À¢ÂtóQTUR˜ø~æA(wƒ ^Ÿ<×3!«LGGèØS½xz«Ý k”‚!q´j%K)íˆ×Žö[÷u3f-ÌÈ·v„÷óÒ’üåË&J'S¦¸õŬŠêSè|\ú(¡!˜¨Òï¿Ã¯|?ÆI›o Ϭù‡)ê|ìд¢”º,L=çí÷“µJ5Ãé§éïNJ¢N SàÔÍu÷ˆ¿Ç¤Å.?§I6?ÍÚÓ±nÄqö§¹;+ÀÍ$]ð%ß>qÂÖ–é½!?Ñhœ¯G&Jo·8öYDˆ…ƤFߨ¦_i‹”0“ƒ™潈æÀÌÁoåýÆËl´÷êƒ7'† ¸ØM+À£V>ê‡kZ'þŸfºõœdÃKvåw5 ŠGò €Ü>$2›@°'ŠËÉ•¬m®¸$d&Ç‹«"À·HX7ðVž÷ì+D\¢&1Ä¢‡ib’@êe½8 TŒ \TRkþ¹ò§ÓÏ52p‡­ö®¸øGáåj+õm:äÒ²¢O-Ûî>Èú&Å"«$ÿ_óß<ÎÊt®•ì\ÂþðÄÔ¨ÃÐ+ÇV4N"gõŠÇr—ÔpØø”–×\ÐpÈsրЇ%šÊð¬×—„²"÷ª†]?6=ÑWSœMÓ*ve9µJ¿ ºà¦Z/õ Ll¥z•U(ýkÍä)#¤L;k-ƒ=Å%åÍ$š}{òEÊÞI©¹q ‰½pƘ€LÛCÁ+÷c0­9*a5HÈ zyyäÁr‹¾í&q—Ö(!`âæJï/ACˆ{ѤëFš1ðË¥”TB4ãUß$b‡÷bUJXË޳ã&µlCR.¦RÆÙñcרBšÔÐÚœ!!GÛjä1ÉeêCš‘ù4P/Ôú¸I¤½$Žô¥2=¦Ÿt4r4£*ò‰êÀëu•7SYš*¼Ò©ªOë~ö“E‘™ñ“Å2+lôŽ2Úû)2q­&È9ÛŽDj¹bÀumq‡^F©`jA²£‡~eÕ–º¿GâGcXœ”Zdù´q:'¬Î·¾ö”cúàȦ’é‡5ª.ý—Zÿ~i\§ö¢ùA›"aqÔáúNû¹°0œÔ£„‘W„‘‡dü,ãÿ*á«W_;É¥ÔØ¹ÀügMz·^Éß2ÓÂÄ™+õÊ×Þ÷Uz¿.QY¸ñ|ÐÆ¯o/ÂÑôÛæU´Ç|€¦ØqOý`ñ83z€sº ÷R”ßô‚º ÿdÈ@azUÿíš?“Ä6+ÇÊ›”khˆãPzg…G÷W ×eçUŠ’dV9®NÁ'ÖGtS  üÚ…¡œöþ(ÿN5ìƒq5©0°N•ȧᨓêUCŒ'\¨GôÅ1H*ná„UUÕ»Žâ4»æ¤nü¬jr *`@\l\ÁÍ.ÿ®ä¿“EÁ endstream endobj 59 0 obj << /Type /Page /Contents 60 0 R /Resources 58 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 57 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-fitgroundbeef.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 62 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 63 0 R/F2 64 0 R/F3 65 0 R>> /ExtGState << >>/ColorSpace << /sRGB 66 0 R >>>> /Length 16410 /Filter /FlateDecode >> stream xœÅ}M-·‘å¾~Å]¾·Pu&¿¹m·==hx!xñ,iÔϨ’lIFcþý0>È$¯ª2«N¨1 ½R\ò$™L’'d÷Ûoûío·<üéöÛö¸m7ݯÿüôÝíÏ·þõ«‡ùùÿ½}óóeÞnó¿?óÃÿüÁ·~õn;ã¶ñÈ>=ºt Õ?îîöÕóíÃÿüüó/?~ÿÓ§çÛ§¾½ýòŸßýøÓw¿|þæÓÓíÛï~øùó/Ÿ¿ûùãí«¿=üþ+.üNŸ¾Ý=]Ë(ÎÝ\Ê1ðã¿ýô˧—ðè‹}yLN7_â£óŒÿ7®Äÿíh¤ ð»/_h€/÷¿Ú¯9Þþëáë¿Ü¶Û·ûíí¿¿=HÿþP·G—o¾5FM·ç›sۣ߻ütûò>ƒŠ[z¬…Ówï“;2tyÊ‘%9T>r¬¥µ8r¼å;Ÿ~‰ó~su ò!âöžÏØÚ¿Ìè}{<j’þžÒݾ?Ö<ÃÝQz¨Ü‹÷Jìù&bhýÍíÜp÷éþqó]œÒCxÜÓ‘.â”ÞÞ ç#]Ä)½_Žtô°çÇZGºŠSzpi;ÒEœÒå…Fúñ~oC><&ên™ Ô|ÜiÞ1õ‘§Šþ€ðî„->†2PÞÿ€Ø:ñÖ°»i¸õïÌ#hÏ­}·þG§JÓ4ÚHt½ß´¯çC›ÔS¤‡ùµÌ’Zêcò’Zvú˜KêÞÙIr-5Ü'»G¿Iò¾'{Kz(A‹ÓÏœ¼?îE“ã&sÏ”œÚgèoÙßÕ­U¼jj›v“_S7%Ÿ6imŽ†å’širì‹ãc¬íkr žbËß^=r}Ÿby,-µýºÅ&¦í1ÒXãbšè( ½º“èKKÍá±8¹où²Q훘‰Ï|I±<^}m 'çí1´Ôš©;5±1!uÏ6¶›=M•akÔÅb|ô-u÷*¶ÚµÔ½‘LÔ2(•dÚ ¬y"™ÖMâL2n“NÜI¦ec夓 ­Mf’ic§Î$³uRU’iÍàÊA24éKûÉФ¿ûƒdhÒÏñ šôãD2ÔùdÒ’!He&߾޿’iŸGIAH¦uË}&™6׊R $“:©*ɤ ƒ¶“L꤯$Ó¾ë6dÚÐI3É4RÈûD2íLzJ2$¤?(É´ÇD?‘L+F¾—’ )@u"™V-!A%™FBÒd©ÎÉx%¹N2NIº“̦J’LkFéodŠ’öD2ûL2Ä:Éð"j"™¨õé$Ó•žN2^•’N2¾ã…dR’iÝFê«$CݨN$Cª¨›HÆ÷þØI¦òÊö ™*Ó× ™"¤8H¦ÈóÉdù>ƒd²Œ§A2Y”¤A2I¦åA2IHrL’þ7H&ÊL5H&êó;ÉDÉDƒd‚Ì'ƒd½ÆL2ôïþk’‘uhûg%™JÍ9H†TˆzLcq"™ÖWe­"$“4µ’LŠÒ;É] ’a*8V2›;H¦} žtûJ¦Šf¢$³÷uŽLkÖ•d¨•ƒdZ÷É´ñÃJœ’LTêS’‰ÚÚJ2mŒrçT’IN%™¤ú•’LÒ‘¡$“Š %™6¹%•dR•iMI¦‰ÜJ2©¨¦ÔI&é¤ßI&ªæÞIÆ«¦§$“6d;ÉäûJ¦kž}%£D<­dbœH†4Õ™dÂ.,ßIÆg$ûJÆ“•ó ×W6J2.ê$£$ãôëw’¡ÅhHfÚº’icÉÏ+™-õ•‡¬dÚØ]H¦VD•dªö˜N2u×ú(ÉÐvÉdÊ®“¶’Lëj²P’¡¹ÓO$Óº±´o_ÉlÔ &’ÉJòJ2DJa"2Ÿä‰dÞ‰d²’B'™(ãt¬d¼’f_Éìªyw’©ª¹w’ÉJŠd’®;É%ÕN2}¥ÖIf';Ë´’éJÇD2e&™¬ýåXɤ…d¢’f'™ ïÓIÆëût’qZ~'™]Wâd: v’ÙȪ?­dj_ÙèJ¦È¤>V2¥çW’ɪôt’ÉÚ;É$ùƒd’¤’‰‚$åùƒdT$¤ÿ’ 2õ ’ñJ düÝJÆËü1HÆIÿ$ãD©$ãDÙ$ãä{¾f»³=¶îæIÏæÆx¾Q¯¡YHd2ú¾o=ÔŸ—ؾpýøý?þôñöEk¬ÏŸ§Ñb„«÷áûOÏÏŸf{´ßö7¤ßÔ)î Ò\É]+yûê§[¢.Úðò?¾êùd–­\Ã'ª]Kþê§ñŽgðD ä©?CðÂÛ 4ŽWÈÁ+o¢pš²Îö[ ‹Ã+Ï´¸·tÚj›m*éƒx5|¸¶ŒØ C†Ö@†ïÞà–×àÙ¯†^×–P»¡×y>`'¼fïL“Uƒ;<FíØàÅ—3׸ež§%6x²Á‹lMlMlMlMlMmMmMmM{ÓUÄrâco: žzÓ¡pÕçQx°Á“ ^,pÙp4ÀMM—i¿ËO683l Ó—åõáÎ68)'x±ÀÕ ‡ÓæyÉìœôºÁ¹NΤ¤Ú÷jß /xÍsœš.{¬åƒØ¨ ðdƒ \vÐ pnºŒõº « œæ:œæº\è< —Õ„N4a€<Ùàì†Âe5a€ÓÆŠlðMð’ p9Mf€;œÏÍâðTMp²ÓÂðÈ{‘¸·tÚ(Ç0qx¶ôºÈ[™0œOˆ[àÁòá’Ìó8Ü4Y±«¬nqì4egKÓ±§ /l§5À½¥×‰>o€›ºM¥óY¸³|w1ïà¦Ù†½×`891:mƒCåãf") `hy:moè6q7Í´äNniº½»`p÷¸(²Á½­ôd+ÝôîÞöîÞöÝm:-E-ØÙo²ÍœýSÙÆapÒç p: l€WKå٫˧yÞ§Ý.®>8|0ÀÉÀn€WKÓ±ÕÁ–^—ÙìÛbfƒ<[šN¤ poq•§ÊZÁ¹NT#ž6qÄáÄq8Ïu(|gO-œ%Q¸ë~—(Ü[ÞÝñîeÀâð`éub³‚áœå(Ø4â3Á¹÷:ðÝ#{'ïì} À(LöîâÊ Ãy+ÓOÅ/´²À9j ¯Ô_,ðdhùÌ{Rx6T>ïtzßoËîÈÓ‡{Ó‡Ëi‡³8¦—ÙÌ‹ÃmÓEæ³8¼Ø¾{%#NÁ›ª.Q*`8ÏÃáÁ4UR ÊÄA3â¥% pxeWw^y7ŽWÀ9"!ëÚxåñÂI©¡>ÿÜzÙoA"ŸjÔã Ä2Å^¾ÏÑå#.2Ÿ\-S•§ücŠÏÜå)G7…‘Cå#GØe{nÔTå)mZÇ)‡ÊSŽå펷ý c<{ ‘æ@É̞&ÍÖYsÃïà½é[NƒKè”Ì[»âyÁi[›œ× >Ÿ9î /=* §û¾‚Ç`‚—ͯ4Vðw¯ýÝ 4â4€:EŽrxŽÁ«†NA–GÿCC§ ïNñ?vSéɼ¤xCåwé6hé×Ñ'Œ¤È < ¦““ †è#…Š6DÑG4ˆ2UR,@oxw9[mˆ>BÇ ¥—ÍÔtµàžI ®¼ç-}CéÑ>„cñZJ/ÕðîuZ¼‡ áa·E^©†¦ ¼¡£¶Pœ§ÀçL£Ãô:'¦¢è0½NnÞ²À{ð°òÉ™à=€Xùª•Gt îLpg©<‡Û.™\ê¼· ‡áÛg,p:Wn¨|qx¡S !#›Jpèñb¡cÆÐT™äÞŠ™:œï ­˜ÝÆKèS8pKæ»\Ðð!^}£=vòËË"4{°ÛdqøÃ+O†K¨¤ÌG¬!x¼ÂÙW’oŠƒàQ|¡^'¬åªru ¯ÃÅêu•Ç;üî•3ÔÕÒžÙà»W8<Ž–‡àyLÔÀ»‡m£C#h· ›§s:Av4x扌}BÔš ¥ïÂq`è”àø¢$^‚4]ÛñÐ)aK|½ôÙÁ^ëW©}:}E¾¶ˆÎ±IpHi×÷ÃwÑòa¿t1Á~éLÛ8ܳûì\-—ôÁðÀKSƒW|/tk§s0xÜ ïyÏv,O¼8„ÝÚ÷yòŽF¬·Q}³êÚÅ »vgŽ–b¨<{G£•·{ÅÛàE*_ Ês€D‹[;Í6t>šm*GA}³É­=™üÒ:–CþÉo5àÙâ—¾ —~Ô/݉_:äóó¶:ìh*gðK¯c×½£QßloñͶ;–{“wôf‰àÙh€›[»©ÛÈçêÝ™\»½%AèNõ°k·Â!Ç39—ù0‡NfwòK‡*/—vÁ.qxŽp“·d²y'îuï踛*Ÿ 7Å»ÔÝ`PÿäÍæí Þ’ä\mó O–x™7<àÒK¿=u0v»©ô`é6Åæ£{xGƒpS,†J†o‹²ß –áZ\»“Í;ºØ\|·`so6L•¿{³ÅSt3¹ô7x¦úèZˆ²¥éxËÁâ› –ü“ ÖË©zøÝ‡f3À½%"€Ý?ÙÒmÜPPÿd‹W\ƒ[Æ;Ù8 üN®Ý›ø¥CΖ|}œÅ±¼D“sõnqsåkGðÊË-0< Ÿ|¨òÁæÖ8„Á/½Z DŽjW>2ÃàÅ*Ÿ†w4Ôt|Ñ^,M—ÙFmp,–X YÜ›Qx.ýPÓ‰±v,—sÔÇr§ÆÐ»WÖ¨ ðjñOÞØv–žäìÁ/}·Á£Å/}—¨_ºcc#À ¿tîGDžÕ±úî´J†#“UƒÓ³°_z¤‰šýÒA8¹zîÓ*Óì«™x?öSM™þà^ñ¼ÅK/´ÿŽ¿{agKÎN&Ÿ|Ç#Ÿ|C@¼Ã⥳ÚâÒ_7“KJ¸\¾lðÉwÅÐtÇ€…šŽN&—~K8ƒ:JGàåèóSý>Æ;äTï†o6À¯xÐ¥ßÒë ó^:_•„{Åï ô ÷•—À Gt›šÈRŠºµ“VBñÈ/hº°ñ1-Ø/}g» Á~äÅ[^wkÿõõóä—ÞïcßøˆØ3ûÖ§x‹žn_>ì/â.ߥ°!…Ìî/}ˆ—¯vãC_»•ò¼ïu'Á‚øBúo~~¡ þæ‡öt§Oç;èDtH;ËÞ÷Н?üùckðÛ‡ï>ÿõã͵ÿùçÓÓǿܾúãøÊoz ÷êÁúõ‡§¿ÿáÇŸ>Þ¾pñöáùò´6Þ½tÚï?=?¢6 üéö[àøg‰mš{c•FÈúç§ïn¾ýpÕ@óØ~ýÈhæo¤Ü^M/y71¥^ù÷+Y}‡¾y7¸­ÂšZ•øBA\®}ÏÀ—§ú^WZ‚à¼]Ñ9¼äý:ÒÀë`ÖDߎô‘¸ % ø q5^s<é®Ùä |I„¯ƒß`|ü†gàË{×_çG—̬pO ü"Û½ ÌnPïs‹ÌaÞ ÎÁ¸éÚ (YÁ;ÄÁ/ÙÑ}g(ØÓÿãàËÛ¦_óÅ|…•Ä÷ƒ+uϯ-OgàreõzœhQ‚‚ßJñ |¹xüKßëàzíér¾ŒÅô*¸ò…5(˜Uzœð’yó_ú¼ö´}ˆ‚ÝÏ‹ƒ+^r$o4œ®/Ñz\8šGM×ás^ó†YÍ´REÁ|Àg¼äz½®¼oÛõºü}¹Ùs‚Þ¯½!NÐŽ<° èd(ÛS ºÊæ³¢0šo¶4 /}¶NЉ 0:_»\¢/c–œ Ëu4·t¥cÙtÁËÞ98ŒÞÉŠa@gCÙîÚV{‚ö×½NÑ—;ð'èpÜçÍ!“ èd(;у] eg  £9øŸ˜:³;)Úa†§Xž:3=u4f{:Јñ©£1ëSGcæ§}¹ t‚~ùªôâÉž¢/ýŽOÐ|…ŒæPF4bIo+å6î){ ;”¢=fˆêhÌu STGc¶¨ŽÆŒQ±Fu4fŽêhÌu /#À¾„®Džû[¾€n ß@è|ýûØÕ;ú ·ªœ +dY?Јi]Ñt‘2R6ßþ¼Ì0EkçÆGLS´Û©tÌ85ÁóÔ€c*ZÓ„Úà˜‰j‚#FªÇÌTž CÕ/H黓^—Ék‡óÝc8bt§u÷ù ™Ý;œ¼¨ ¥Ç7Ä/9ƒïñ}À1³ÕGìVŽ®&8b¹pÌt5à˜íj‚#Æ«ǬWŽ™¯&x±”^(ô.gŸM 1ËwxÚ Ãü€ïi~‚#ÆùÇÌXŽÙ±&8bÈpÌ’5à˜)k‚#¶¬ÇŒY±f 8fÎpÌž5Á/#ÃÁ+9œÂp:Ke(NSYJß!cý€;ÈZ?Ásý€cv­Ç [±l 8fÚp̶5ÁãÖ€cÖ­ÇÌ[±o 8fàšàÈiѧ³V†ÒËn­9‡#Æûwõ~À=d¾Ÿàˆýž¬ç´ŠÏ]‘apO ŽYº&8bêpÌÖ5à˜±k‚#Ö®ÇÌ]ŽÙ»&8bðêðŠY¼|‡Î“NpäDé€;èLéG¬ùî!sþ€Èž?Áƒþ€ƒ&¯O˜Éë€C&/ŠvÜæº š¼:4ypÈäÕá ÉKànM^2yu8hòêð7ÄV?‡#gNÜC§N<`æý™÷;£¶öãK {Š®¾kÛ­G¿MS•ÀZýk?Ǽ=¦÷ëëVÔFÃab¼ïT2œ\¡ªÓ@ç0Oã#.bÏü%Ç«8Jut„düÑhoØ^ˆ» ,¾'Å…½o ýþùïŸúüͧ§Û§¾½ýòŸßýøÓw¿°ü»ûÃÏïõ…,ä{ìäÛO¿|zG#ïÕŽø©rÙŠïðwògs ‚Zi¸7 çùFaA»DƒKå"c;±]S$JU™/m©lù‰S»œËœšË”JžÙn¤Š4¥î´_6RYZR³›Só‚åk2F*KSª§Í¬‘ÊÒ’šòœš,߯ýL­Ôt‘8µË5Ï©5Ï©‘¦øgjô©Ä©"'"Ë‘ÊÒ’ZÝœZl¦]ž‘ÊÒ”Ê]t¤²´¤–<§–ËsÏHeéH¥_Œ­4/‹Ä©].nN-nNÝeÎO<Ù‹¤©$sH¤gúvmÝ#¥9§95§9•ïN©,M©ö&F*KKjÞçÔ¼`#í,ŒT–¦ÔDÏôÝÛȉS»œÛÞ”ZŽ%JU9“*3RYZRkšSë‚-d´©,M©<õT––ԺϩuÆ6.X‘¦ÔTΑÊÒ’ZÒœZ¬…c–¦TOÖì‘ÊÒ’Z¶9µ,Ø ºÂ,M©‘LÍ#•¥%5Ç95/ØD†â‘ÊÒ”šÉÑxÎÕùéA/4štÚné!=3󿤓²Ä›ÆM3LŒËÄï•Ã7©ÐÙô(bô‡ÂŸ¦«Ðª6 Í›=¥=»½-íÆ‘z@û„íu9ôn!‘nÝlc(û ÐÖ­ÈpÜÞ˜vZøEH±ó¬:S¿¨|v‹öhª} eʱٞúüCÓ‹²XɹЭ:íµÉèL:ûÇ[Îb®,ïôêdtåÖåÈÂIBR–#ÕŸì…¤=ÐîX ™õÄÚ kM@Ô%¿¥Šžgh¶·¥M¢l,{n ©ÁøFÔIÖœ¼ –h+î´³W^_W‘¹ÃÐ:—Ï&ÑnHÕ¤Ôßñ½7¼fÛYfrZ;%IOÜm…"ïçøFmZKðw!ë~]Þ§ /'´ø3RÃQ{T>¥O²žàJZÿÖÔUFþ¢Ï‰\©=HÚ¸=È,:‘¼_pÔ¤½H{‡@ag.¿é!»hÜSèC4’b‰Èr¥öpÒÌMŽA—X7qztd¨ •úÐU?޹Îqù‘}à™Ù¸¼öᲓÓéÜ~d“ó⑟—¸; äI²“#iŽW‘Ácgfp\ßÄA4Ëo‚ÏÜr šäÊíAÇšùýÛ°¥ƒjrN™dÇíÑ»7¨<[KÿjÚƒ.ÜâïÓ†o£Â< ÐRڣɑñmgIçÁD ä ó2&]ì’œøùmS{4YúwáɆgiy^¥e+Éó·¡Lí!AIvcÎÙ3/4¹òóÚh¦ö EnŸ¶D¡ö n(Ï+rp/’{z Ž%û+©ðÔ~—ïMÚÃë\êdwä"x¾)šdÒüX¡-"Ó÷bG 9Ϲq~R#‹È…eÏíA›R’¥=œôOêX›¤ó÷¡ŽÅíá¤N<ãä¬áË—˜½Æ[…ƒS²Ì“Â)zXN9%ñtÒ9%eÂ)I¿±rʶp ß228%°mB9…n”<8…"œ²Ë8RN lÁQN!ð‰Sv^œÂí=8…{[çÇ;”ƒSD—露+ÅuN‰RóÎ)uá”6.y^QNqY¦IåêE§x¾Mìà”Êšüà”àuÌ+§GĉSâ¦c\9%yãÎ)2ÕœBS‹›8…Ž÷í§Ðå·eâŠú&NÉ^ç å”uÌ)§ä"c¨sJky™”S ;nœB Zœ9%ËiÙÁ)µs’pJÕ1Ô9…,'eæ”(ÚÎà”¬s^ç±:wNa'Ú}æ§söÁ))ÏœE¹˜8E8¯sJÖï§œ²qß>8…š}›9eÓ÷露ëœÕ9¥srç”þ¾S‚rZ用sªr 9Õ‰SöÞ”Sh=–'NiŸQ9H8e¯ÊÊ)ôYÝÌ)›rZç”þ>SvÖfNéœß9Å©ÎÔ9…cNœâµþSäØÛÁ)Aë×9%°Íïà”®(§¸¨œ©œâz{)§4¹ÎœB«žmâÇÑEN!g™S\VD9Åe“•S\|ç'û¬ƒSšÌåwN!ŽÝ'NqE8«sŠ+ú<åW”£”Shµä&N!NΧ´a´»‰SœØ]§8±´ NѵÕׯÜa98EÎÒ·î8…lSŠÌ=Ê)E´ å”*ãJ×)›2Œ¬SviSå'Z’rвˆrŠeìœ"–ÉÎ):•S[aNanœÂ3¶rÊ&-¬œâeþUN‘ãƒS6^èÍë”t›×)qæ}«Î)rŠz¬SÄ&68ÅÉ0í딤¤œ"ËÛÁ)º>딬}¶sÊ®}º¯Sb_‡è:¥§Nq:‡÷u åi"‡=Nq¼ê?Ö)±¯Ct¢}rpŠêEƒS‚Ή}28B9¥ëSº^Ü9¥—×9¥È·œ²uRNq:œ"œwpŠÌ¡¯qJçØƒSdÎìœd NQ]gpŠöÓÁ)U>ç´N‘ö<Ö)+§x}Þ±NŽ:Ö)!Ïœ’´>Sr—•SJϯœRÙ~¬S¶ÎºNézw_§¨ž<Ö)|„hZ§x¶œâõý;§ÕÓ;§íoS¢öÇÎ)ý{wNIªÓtNI2çNÉb‡œÒu†Î)YuœÎ)E¿wç”®ótN)ZÿÎ)EÇ_ç”ʇåN©2M N©ºëœRyêX§ˆmûX§lò¼±NÙx¿úX§lò=Ç:ef¬S6áÔ±NÙdÝ?Ö)ûÝ:e—ußX§ì¢3uÊ.6Ÿ±NQ}}¬SváüÉ’eò‹õêözw†·jˆ)6Å÷žµŽ>&ütëKhÏ+Ά¾ Ïz‚Ž×ÑYOÐé:8ë)ú2(Ï :_Çä9A—ë<§èˈ<'èzçu4%ð²ëvŽç½_Gã9A»ë`<§èËX<'hišŠ˜¦9Ц©èˆiš išïE£m_¤l±vК){ /¯9A—ëЊ'èŠiš iš‚Þ· S5;|ÇtÍ)›î0m³ÃýuÙsøeÙ3x¸"{˜ÆyÀ!•³Ã¦svxÆ”Îi^0µ³ÃëuÀìsøeÀìø¾]Ì>‡_Ì>ƒï˜îÙáS>8¤}v¸ÇÔϘþyÀ//8ƒÇëÛ}Ïàéúzßsøåý¾gðŒ)¡^0-ô€Cjh‡WLU¸Û0Eô€Cšh‡ï×Q!Ïàî:*ä9üòÒ§3¸¿¾ôé©£þ† îÎào¸àînÐH9Ÿ¥ô7Dû>‡_Fû>ƒ¿!Ú÷‹pGû^´{íûŽ)¥§]7H-Tø*¥Ž)¥ w Rªp}³Á9üòfƒ3x¸¾Ùà ¯o68‡cJ)æ3ˆb–ØÝžŽ@J釔Ò/˜RzÀ!¥´Ãëõ-.'ð°]ßâòw»¾ÅåE8ŸÆ¡³ —÷²¿/IÎð8L)=àRÚáSJk”»º¦”pH)íðx};ß<]ßÎw¿¼ïx؜ĠÉ×·óÁ ¤”NpD) tÎsøD)íð¸AJéG”Òß!¥t‚_ÞDzw××2œÁýõµ çpD)ð)¥!¥t‚#Jé€'H)ð )¥üò š3x¹¾‚æ ^¯¯ 9‡_^AsO¤”ø)¥QJÜAJé€{H)à—×mÁÃõu[gðHç³,päèÑ€'H)àˆR:àRJ¼@JéG”Ò¯RÚáä1†ÒÉÃP:B¶”¾_ßvw×w…Áýõ]açpäXR òM®ŒF3ïÄK3bJ釔ÒO˜RÚáSJ8¤”vx¹¾ñ ^¯ïE<‡_Þ‹x§+£ ¥Ó•шbvÀ!¥´Ã¦”v¸Ç”Ò)¥ ñ9?à:?à :©4Á!¥ÔÚ·ç+£Ŭà ¦”pH)íðŠ)¥ç+£ñÒ Žð:?à:ª4Á!¥´Ã=¦”vxÀ”Ò)¥1¥4‰B0¥ô€#gäCà`äfˆ’tš¸Ã"§äm¨EŽÀ Ò‹8óVL)=àRªpqõÅá;¦”pH)íp–p–ŸàÈqùÐQ¥˜RzÀ!¥´Ã¦”vxÆ”Ò)¥^0¥´Ã+tl~‚#çæ;ÜmÐÁù ŽUðSJ;ÜaJ釔Ò÷˜RÚáSJ8r~~À#t~>$vÕÔ038rTiÀ3¦”¦LFJއ€¨…©ö+£!¥´Ã+¦”*œb¥¼TºùÊhòo]¢ßÚ2;)wFߥ«xÜêì‡é"NéÙs œž.⑚ÖÝQ¾ˆSºç¥ÈHqJŸ+<êÿÞ:í7vÌ>no~åŠâWОcìÌè¯(~M·`”ýâ ů i—ô‹¿Œ¦ep[ÀÎèï'~x¦™nÌ>Z­‡WÈr7—ŠP£CßepOÄ)¼8FµfPyÎá½Ü=Ðsˆ<çHI".÷"Ï9ªÞÖsÔq ØZó‘cz“¹¡^¹cØÉe£ië¾ï»[áäÇܭp9tÒÅ.ð±vãèûnÁîxºž Ÿu³s<H{µ£éEØ!—ù"lÇÍ×ãk®òz¶Þ|ýßx¶o#‡ÂÛ·aÿÇÿqûûÓ¿¼gÖá½Ç½×_MWhÿý§ÿú鯟Ÿ>ÿòù»ïÒ~­©ßäËNtLE_Ë=Ý[®xûð³{L–wÆT9ÆT‰tT›Þ9×ÐMïih褵\X@qMç‚Ã-p¹#‡g0 ’Vó ¥W0îÀÙf´<ªOá˜[ÔTyl¼+ïÐn™.\]…Ü¢ÐÖÄq¼¹LžÆ˜b¦ðô0¸«˜a©—ÀuÌxw,ÆxwÄër‚cúü¨<æœ|w  wÀ!ãuÌÇÜç|–!CêxÁ¬ß9^?U¹ycÀ3f¬Qxð˜ [.+%'m¨ò…‹RéP˜º“*MnÒÐ2°Ã=Öë:KnÒØ…êTi·)b&ndÿväÃuxÁ´ …ï» î!'ž©tÌÃ\á Ãv¸´ŽÝf1Ã!wY…cG;w1àØ9«éÃA¶Ê£tˆãîÐ 7‡ykéØýÅSå¡2Zþw8vÈ€{ÌèÔá N{¼»3Ì6;=UÚÖIž¾»ÇCæ #J(ÜoX°lòGÞÏMì"KæÈQ¥÷;fdîp÷²ö×7Ó‡ùqGzS-žoã‚zÿtûòavU—/´m]ôòmëo{fq/+½>3o¯÷u¾!þ›Ÿ_h¾Ÿ¿ùáa\`?]Z?ÝeZOjKúÚ£5|ýáÏomÁòá»ÏýØt©Û‡>=;ë¹²oy^éQ~¾þðôã÷?üøÓÇÛ.Þ><–F@Âï?=?¢ üŸþ¦tÑZ endstream endobj 62 0 obj << /CreationDate (D:20190123142041) /ModDate (D:20190123142041) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 63 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 64 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 67 0 R >> endobj 65 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 67 0 R >> endobj 66 0 obj [/ICCBased 68 0 R] endobj 67 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 68 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 58 0 obj << /Font << /F116 26 0 R /F8 14 0 R /F97 17 0 R /F92 16 0 R /F11 28 0 R /F13 61 0 R /F7 30 0 R /F86 15 0 R >> /XObject << /Im3 57 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 2561 /Filter /FlateDecode >> stream xÚÝZYoä¸~÷¯Œ,и5"©3ÈÈÎn€$“ÄÉËî>Èjõôá‘Ôö8¿>u‘¢¤ö‘]ç%´%ñ(V}U,V' ÖAüá"’çû›‹w×yP„EªÓàfÄ:LtG*4Ê7Ëà‡Y7W³ üêùÂäj¶ÜÂ{‹ üðãö:ù8xØ]‰Ýå¾–¾?[îÛ”sÍîç:·DqÄ‘_oç è”öÚOwðçn'ôë%öD³íŸÄŒ¦%×§=; õnþÓÍß]™'¡Î‹0Š2Ÿ¤k…¿R’)>&: U¤í„+X«0³Rd)ùq(÷Ž95³ÌLÄäÃVVÙp?~¶jåŽ;îçIŠ uÝãµ:6L§.+Dnƒ< £`¬J…E’0{VÙ07‚û˜töc”DØ…$MÖ+õ‘»KY '$©™P†goS@Uœ…E¡,>Ë)€I¨=ø¦_ír÷óæ§vÀ—éüöÚñM5á¸!g+ü[¦°ãG*¤œ;RkE>Ù–a÷/ô6uÿ^nwüq\ñ“yèp¨­Ã„Þ«cËï{Ѿv­EYð» 7 \(u‰ë»Æ™ë“|Í£c·íI¥J¥žR£`¡N•1œƒq¿›/mÈ*Jïä%.EŒƒÎq.G˜¸„• ?ÈXZõ ç­ô{x½ß?ùó·ðºø/VùüzþRÉd©Õº¡Ð<øË»ÑösîD¾Ž~aÚ’8ëÒÑcúl©³hLY´ë­Lµ§öãP¥lØNP±Ã^¹Ês@ìÞˆÐ_{3/ûaÓð„š¿Â1Z®µû—|Ùº7I ©W2p7˜@K$?Ù&¿¼Ïo܇ˆ 0ÿ¯À½Càì)ßxâmS“?1)Ìp¥ñ$}é3Žñ×ó…J²~ïwg•ôzÌŸ>áˆOHþ¼³t²>ïJ^öùå!ï{¯ÎIk!û:r6Ï›0Úâôø}ê™xü…Džáo'ò­Grvòýub“ÕÐéû|ËßåÔÛ)ç± «éÔÏ/» KÑÎxÃÌÓ%ãŸn.0‹Š¨, £¬L‡Ä$ÕþâËE˜çIžÓì>/þ ÿl×ÂÒ\xDŸÈÿÖaV䬠ka}’¸)NâYü›ù"͓هYA›áýØñ‡”8¶:Ò–*½é^M?]â@S1DÄÖ%- 7.}468 s¸ž¸,]V§ÞKô}v~µªeG 1ø#˜†ÚØÊ<™sùuS塽ëÜ—F<éš©² ‹t¼Ó¹5®‹Äá€ïÉ7Ü÷‡–R‰–zF?7Ñx&Eóî”ÔåœO¢˜èÞ+ƒ!¹J=¾;\fÍîC¶“]åxî“ +*ÄÏS…^“Bpe}¡µO®žZwýôAdA‡»¦cªn\|E+s®òªŽÝQÕ•+“Qê<jËž¸&–ÚP¬aσų‰ká¶?«WÅ¥Þ9¹ˆC»CíRN–§r¯Ë3R§a‘KU‡û¤vñ&zfÖV4c3)rÆFj¥•=ÕËÿŒÅÀ×µÛ 7.<ʵOQ¡~BÕ‚Ô¹9ZŽ¥­õÅ•½½€®/'¶A´wÏØ± ¯0Ä¿©ŸQ9Ù‹Ih1ôgjrù$—{Þ_LÜÞ÷{—p”ÙžÍhñ™xqüÈtFŒ~¥ûAKî5B´}2Èù }Ö^ÍkÓ'Ù6¹®„ˆµ]o½±¨¥<·^æÛ±çÀá‚¡M¯R¬¸Ü¦cNmeÀÁ^…‘B]á– ÝÖ-ìË8˜5OÜv5©©ƒ€|íMØíì*+KAHU·-A/pû·uݯ½‘wÊhVŽªšGïKRðÉr&HHø‰ [߯W›ô_ (ãIØ ¬w[ªtÕ!±øÅ;{øC¼Swü¤>¼âa퉮½ð7Ìüìsôÿ¦â,ØæFK%6û•ÿnÊíM endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 595.276 841.89] /Parent 21 0 R >> endobj 69 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-fitendo.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 75 0 R /BBox [0 0 288 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 76 0 R/F2 77 0 R/F3 78 0 R>> /ExtGState << >>/ColorSpace << /sRGB 79 0 R >>>> /Length 4565 /Filter /FlateDecode >> stream xœ­›MÏ· Çïû)öh£ÈDï/פI-šÚ@A†ã¦žµÛE¿~IþII³ \?r66%rvFCñGRcýî꯿\½|ýõšûáÒµÆ#¥«ïí¨Áþx÷êú÷ë›Ë—ïÿö§¯®/ß_Ü᜻®ÿ}ÿòÍå«ç—/¿õtÁçÿ¸ºëów×z¤FsøK‘ ×vš¼]Ÿ<<½>ÿE/ß<ÿ4cïËáýã­é™b¼úš¶­S>bÞ¶ÎépaÛº¸£ïßy)GÝYµÎ‹í«?ÊÆo·xr š^6¬ÉY÷£mx‹Zó-l¼±îÙE}+GìûÖýuÛšþèÞÒ£¼±žöî\­ËQ>úmgÍÓQû58w´¶a]ŽÀÖaË[Ì:ec—ôz”LÖä-»„—‹»}ç¹ÕºygÍaíýá>Ã:iÃ[<½iÉ<mc›xG7Í¿ž·hâÉS\#ór¤­__‚¯[qÕ³§ñ¯·£oÝ|>y\p[ïm˜ûÃofO®š™‡#lø»wíð•Ì)4o8ü0§·µtýˆ…Ìóæ¯wË!”ÍgWózøÏùõƾûxsïŽTļïø<™Sˆ ˆ÷Í£;ÊÖ¯{N#Bô{ц¢«öÜÆÌãæÊó4zŸx§†HQcëæÕe7EuçtçÎ"SBÅ„«Ùš>ßÜþõúÝë—/®/ÞütýðÏWoß½ú ò×üöýãö™x+ó…zñáÅõõ›ëÃÛŸéÆ^<¼zÄ¢Ò_iÏqú­]|º3ÄögÅKÚ÷Í€i†Kî Q‚z»V9cR‘çu€*Îç<ÄežKÑ4ç!.󔾕åú—ù¹[?æ!®ó;¢77NTäy¨ÒàùÂ=ke^Ú‘ ÍwéϪÈó:@—‰}ÎC\ç3'r7>ÿóC”yhˆj'q™ç4´Ìyˆë|BTë.U”y(zýU\ç;/ÓœqÎç4âYÍ&ʼDöMšï|­¢Ìë@ÖõYÅu¾rir“ó2nB¢ÚHã­z“#1Ή!C#ä°¹-O#ë¢!òI#rCmÑù¤‘¹9~›‡c"CCG ÷Enrþå²ÉÐБÊIéMΨ8ÆA††ŽtPenÍB6  ÍU%™ ‘C„›&q›24t$°â¢!òI#òë½É¹e²*‹†$>(¹ÉÑ÷ã CCG2v/"Ÿ4 §ú79Aà¤24t¤Ú5ÿEeӑƼ]4D>itn{,"¯|jƒ_‰èæ‹ ñˆ,s²iÈH@þp–O‘ëá8M††Ž$>õ½ EØç CcŒ´;v§‘íYVù¤Q4IõèçA††ŽHÕ»hˆ|§]I278 ›†Œ4ÝQm?ÈÐБÎܢɢ¡#ÜòKªÑ‡l:RÃY£†³†ç»IÏ<:ø¨¹™l:RªjHQdÓ‘¨»’œ<{“¡1FºDº ßݨ ÑXîÉÉå`dó1’¹¶hˆ|§QqMÎf CCGŠza–©l:‚ErM&›FÕþ³›eÊKŒë,sœŸ`#«>Ö ÈWL††ŽtnA#9“MCG2~¥ð§*C#Ù!kçæ3´A†ÆÁÎfçê&‹†x¾Öì *CcŒä¬£!›†ŒõdZ>ü€ 1‚·O ÁëcDXîÑW:•@\„4“EcŽtùî “¡¡#‰Ýä&¹CY4æH“kB††ŽH±ÉY²ÈÐ#ðSþ„/™,6R8Ð@#“MCG°ê5ãÙÊXõ9ÒÅǚûY4l¤"?ñÍ£M\-AYF$>Ë'¦9Lm7ËaæHFÅ)B³4vŒ˜¯÷Ÿ›¾>G°çº4ƒU†ÆAvæƒÊKwBºZuÑ€|§!kÊß{QÈW™5–ñ –ÛMCFª~ áNd9Óe9G‘³|£Mr>Rêõ÷¼l4–e½x#kÀï2O™Sr'ö´ß:B2wº:5ˆ,Œ“Ñ)f<^xã ”ü7®o€èGi].\Ùµ(rÆ<¾ÔföY.²ÉœêŸ²=dyž„"”ÝúEú²,ËúÐÆÊ¸Ÿ*ןȩMZ³›FØø-rî¦ð!¼Ð.šð©x[ŸŽ‡Qø4i®ø{·À§H9àÓà8 ŸŽÞ¥Á§KÓfÂ'K*4à#—˜ðéXsÀ‡=U®lðQ1ød,˜Á§b½ >è>| •Â'jp5ød¼¼ŸÊ>¾À5ó€O°Í¨ð Á`¡ðÑ—=àS4¸|šÔ%>fð‰,>Q7ã€O2Ø(|²ÂÓàSù6ø ê›ðéxIfD]à“‚;…ùp:ÁG}À'¬>Ë=àSMVø =áÓù²>Ùéú+|ø‹œ´À‡``«ðÉòi쟨÷gðÑÍ?à“ô}|Äiø½¾Á§èû4øT…§Á§¼> ÁhÀG÷È€Ð>ý>]rèŸ";`§8M†>Åéú+|ŠS¸*|Š×dÃàã5Ù0øxõƒÏ€‡ÂÜ Ÿ€};à82,ð º^>’.ðé'øL >þ?à5XOø 8Oøäz†ÂeÀGüo¸>ÝŸá#ïgÀGË'øøpŸvŸxŸvŸx†O¬wðñgø¤|†OêgøN>âÏ |ò|Ê|Ê|Ê|Ê>ü_ÿ[øÈ¡‡ü|¸Å–&|èGäj Ú¼B6…O.'ø‡<]áCw‚YÀ‡®(Q_áCÛKžCáSÑr5øÐ¨¼%…O‹¸²Â§Éמ³òqÈ7.þeÇ>ìç²A >ºß >êVùTDƒYù`3Ïʧ»>Y+ƒO“¶ð„ÓLÛà#{hO†³ øT«l>Îdð‰Þà¤ð‰Ü > Åæ€OÑ`iðiZ)|:2=ƒOrú| ®Tú Í|Ôy|2ŠÎŸ¢™¿Á§êz|šÁCácðVøO#8+|²ÝŸÁÇëï|‚ÁcÀ§Ÿà£™í€OÒõ˜ðÜ >Yƒé„~oÂÇ*Ÿ¢Ïcð)ZéNø„|ª&>¨'|¼ >82˜ðiü­òéZ©XåÓ £òÜgå¸|2ñ¥ò‘]¹T>xŸKås‚Wÿž•*ÙYùÀgå“O•|<*»¯Á~V>î³ò y…OÐ`mð Œ >þ8àô÷ >É×€îÿŸpŸˆx1൒3ø, >‘okO”fë„ÚÕ>V™|"‡…>8¤ð‰Z¹|¢V*ŸˆÎ΀OD%;àƒfø„ODgdøë¯ÁÇÿOøX t‡!>t]p>㺊¡€Óçènb(&8™bˆbš$|Š¡Tð Cä C–í)†Š¶ÉCü5P˜"f‰·+†¸ù'†X)/òØÊÀo0K1äਆ!MC8‚>aÈå3†€‰‰!­‘F „0m²šÄ0T¤C;1d ÅPô¶ CÑdÅPÖ0m*ÖpS 5¸ñÀPG#Ó0„r´`(èý†¢6ˆ CIúaHs`¨èõ CUïÇ0d !ÃaP1Äôè+†¬gòš3†‚ÞÿÄ0l²šÌ0d ²‰!Å’b(ëïM aý&†Ú©W´\j ¾b¨¢³`þ41Tïj wjÀ5mð}CñŒ!¤ †ÒCX¿CîŒ!‡!¬ïÒ€;Õ@NkTÃÓõ™ÂóL sCñTy ³C¥ž1ÔN5·†ÛÀ«g ù~ÆPtg ¡†˜B01TÂCõT½ÃÖØCVÃM iCn`ȧ3†‚?cHk¢¡˜ÏÒ†ÜÀPjg æ »CåT¶&†[Cx^ÃPÔ4Á0áOŸvæÃ»¢ó¿Æòz"6™Ê8szLÏ®ç‹~S¤×ƒ¼^ïÓ*3»ž ø2Ï®y^ïñ°Õ+S9Õ– Cü¿|£-ªÉU> ÿáÉÃÛŸß¼}÷ôúÝɓۋ‡§?^Ÿ÷‰Ÿ’êÕð%”|ÿögúßë÷^¿|Ä©¸L—täžþúôJnóäÅ»WÞ>þ~Úø‡T_ýûÝ»ñ9êå¿Ü6Ô¦ endstream endobj 75 0 obj << /CreationDate (D:20190123142041) /ModDate (D:20190123142041) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 76 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 77 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 80 0 R >> endobj 78 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 80 0 R >> endobj 79 0 obj [/ICCBased 81 0 R] endobj 80 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 81 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 70 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F7 30 0 R /F116 26 0 R /F23 73 0 R /F22 20 0 R /F123 74 0 R >> /XObject << /Im4 69 0 R >> /ProcSet [ /PDF /Text ] >> endobj 84 0 obj << /Length 5435 /Filter /FlateDecode >> stream xÚÍ‚þúAÆš1ÆëNȲêzô›{™GjÂkŸ=!É2"ZD)îLìð•áþß¿çª@‚Bž.“™.ê̺b2S*sÖ2c„Ì`|SÑ*Â’N¯`/ðP¸åÆO¶ä™Zø7#tfž*ÝG&£RUQeE¡“ÙÓ†dÎÐ^³*Ðò^˜zÁ™ÞøoÝÆäœsó­…7$>6Z _ÌÛ’¶ZÆCƒý¡·±à“M¤Á#S¬¦//feÄüÝdè6T.èÙ~œ”PðøŠ±¥ñ™Vp׊$í:Æl0Ê‘]ã»x±j„ð‹˜FÑ" ®…›ydF,U™)¤úí¾Ø*pèÊ _ÃJÄ4‚ëCËP'Nroß2â1Ôy¦ìæÄSãš—ì(Ük3¢²B›IÔº®Íô¿ý Xƒ•[" n  øfÎ0F6›ü§‡íƒHhåÎbÃØÎ*Ѿ$²¼ô3“çYétÊûZÙ®ëf8ÜõLüT!Ö´]™³p¶|='$mäWPM¿ò0s†Ÿ“µcf rõô9©eb^ZUõ½ŸºD §¦Ü®ˆïà›ín‹ü„o~À§ž6òœh6 ¾xµYxW»# fß{%³ê—gDpNØJ…+msì7ð÷êfÛyÉÙˆ^Õ‘*‚î¼,ß±$@ÇN"hU®.a@%–"7Ó?5k?ÚÍ_kSeyDíË_[`†"q€—û| þ´+cï7¶é©$U™saÂQ ieäá*îH;¡ÍŽÍ!¡Lf~þ‰¢‰¥÷sP0¶ÒŸ‡ñ:¡¹ŠœÁÎ-ŒäF5™VÁã¦!w´T7¤hU|Á΂çÜêÔ‘CO¸0ù”˜N+éÕÖæ†›Ø!!ÖÇñò¢.ÐÔGñÏ(p¶? Ú®‰}h†ó$šÐD\æ_ìç8¤i [±ÀÖëæ¾‰FƒÊŽòãîÚþY,å^ÈZã®é#…©Z¼é¯b1£!8Á›Þ‰{ˆèC/–·½b§[•4Ž(tV«Àc7$òL/Ì#7ˆUT–x¯ë]›°Æ‘Gt…"ñ•¯G}JYåb>ýÐÁV‹Ô,GmµÉj;0‰ba+#|påj¸ãÞnÿÖI›#4Q°×ÀQ³<¾¡f+þÖJž½à Žu[îöÓé.¯&E=c6l{1S¶JcÈ ¹–1;žâ÷ü3ï±|a´]Ësëy„Í–ì@O¯A·ŸdZ&ÞË+ƒn¯ÅÏÛÉßóCúÙçôt}”a·B©MÀ’ÿfѢϒèš@òA¼ø½uEJ+[f¥ðâ>¹hÔq͘Çt™éÜÙ18pO¦¤ÿ(c'Dæñ`lI3¤OðJBû™ n¹0 ®K üéý&üsÔ%iÂßþ ù­÷›KyÛÒ߈~ãw#VÞ ŽŸ§ û>Â#âø3P%áñ`!HFp-Rˆ ¢©y FÈ ÇIQÊÛ9uÁõU$úÏ.àÈ8ñÑ*¸(äÚ?Y#paQBKS-©}lêÑ|¿ÙJ“§G@V›Ì©'àyäIÜGä"Œ·TYmÌ·.6[lÛdÒ²_Ö2ÌR®½¿˜Ç&Ù¨ÌhíMòoF” ïæIðàt=Ðß1 DRòæå¤),q­®9ö¬è<~TJDX‚ûªÒÅx-@~–~6[ÿ/pOð¨ˆÓg–˜8ÁÍÒ«€[8Tþþpùì—g¸C›O *(2]O §3UØÉ|ýìoÿÈ' h¹ÈŒ«'Ÿ©ãzRäeVQL°š|xöçý£*±µ¶08I¶ª˜”’ýÛhÇmVÖ*ŸþØzwnÇg)3cØÛØîÒ è!úÃëC²‘G>(¿¬åå5í¬¼Ðâ\¹¬©œ+`"kH¦ƒq>kƒ¸›ŒY¾Þìq<®”sÓîánäxDéO/X?…¹YÕï'=Ýæ ù`û³ÿÛŸÄ|#ê°©mÇŽ|Ê,¯ë“'>®4G¶Ñ*XºhšC ßj‚îÏ#± t( ëæËX´ÎŠ>òÿž{TÑ"Õ™Õ¦+Uðœ÷GAÏ«•Õ÷ú˜§¬ü€nõ#* MÇCö¤NÎ*˜y–ôZ ¦Rÿä 3…§D1§(âúSômVÕæWà_'N^ ûîåË—ßùmÔd•VX™)ìk§òX# P¸UVª¢ŒS™…öì¶uGuTæô@C%Ó…‘¬¥ÄX$¼^gư…±'ESŸR8U¢p–ûô2™Qè@Ø2°Q>Æ:3Ö.gx`hŠ„~ï9ÈcwPif"û¤LTŸf¢úÛ˜(îYá¬:Ë«ÇhþåȺÛÌ•ªþQ¾ ÀSö†n9² ‰<õ#U Xº?aVû¼_(Xr [`•Êc̯PUG¸¿PUVæ5Ö¹”û‡;³%âhó2eÈQßÁ˜ ]ä'ñðd!“ú}ôˆf~ÛÓŸ×÷[ÿàakX¯QL@7—à~khë÷œö× lIÊìRi¢•@nq¤×~ ª‘=âôIü` s¾Ïp‚OíŠý·ñPô E=µ‹Òà L>b¤Òô¨Æ(J—(¾Å—MbR±ëƒjtº¸œ™å¸€‚>(φR@s‰À•á‘äÄb3–£ä­×ÀJTàe Ú€¡!Œ-xÔŽØÑ9¡ÁO#cA»rè :Ã'ò/y…Õ«'0LmÎÕù¥{Œ0Wúö˜ªŽt¾NY+q1à*ˆÂ!£P›Q0\HTägðŒJâ{ˆçœ#‰yîZjÀr{6£b›a‡NL<¡,2T* 1Ï Xâ( &&·‰sýwßG{ÐcFɸ | ÷$FÉàIGé÷‰6ᬎvý6a¿o·ŠNŠtYëS©|j‹”p+âoPTûQlº²JÝíГÆ+’ŽOyrX°2YþtUëBº¾Ï‘ÉÌ@ɸ#Ž`Ì¡1Æ‘½“0¥íˆAú&X{xˈ~ øfÞ;Õû<«ñµ.3ÞÞ®µÀ‹dyytÔ3Ö9õÍ$(I‚|lÍP=ôÙÿž‹6ðht]Ç wÒ- åÝ ç¨"›– 6UìÙ°=¥±q¼1f€7¨3¸èd †Š˜ˆ³ÐFƒ…Ã-•ÿO·aJ‚»uV•‘©süꬶåÐ:§¾@YŒd`ׇœ]æÚxZmAï«â‹Îu¿j¯ ÞÛ+lNŽùí°Nè=~kñ¼ ÓT¨\/˜¿= ÿѾÑ9ò&êA~Ág¨Añ)E'ÐÊ$.ëïO¹ %y<·PàVº@øù6¤ºŒ±pl­ .G½Ü)àÞ£]Œ¸T€ŽÑ¸y£Tí7{FÒ¡xçéC¹ÇçšõËmS ÞLfU‘U@ó:Â^3^^ÔfÚ\EEÆLÕKLA6Ó·œ=Í™FGR¤qáH~#• t<öX:>÷é8Ø÷ƒ?éºëi¸—°hœ‘so¹eäè7 “oö»0=ÃýmÐÝ>lzEEÎ'–õ,>\ow¾NÄI2ö¸¹åÜ;tÓýY«Ñù9)×þf¹’30^ë´<Æåfó:NÜiÇ‘n|¾EUœ4ʘ$쯃n,•Pm(X¡#mà]3e)ýì–2—ÿdb€ÓÆß6¾À¥ãgü†EâÓò¨­ ™kx½n¤0;\Å2Áy¹øé…}¾=Î]Óí–´ŠÈ¿Ûëû95†Ö¼éú›]ÅSut$ïÑñ¿Ýš—…¹;£4á¹èƒÏT”i®¹)sPruÁ™_…á¡rÎ}—ÖMÿŠú„ÒäÚüDç*ïÓo­¶< ½ëñò•aðˆ†o8§˜fÚ6ßåx25Ž FªêÞ3$¼J9ŠTofC¡X4α!"Ì…emŸZ#Id×·.öÓ釸bC™M¤&"„±&e$c&Nr'õ(ej¹awU4¬‚J~Ñ SLMU%6ã”&¿òie\ˆVFƒ¤MÓcHéõ’ŽÍ‘è‡J¬WÌŠ²”¤ø k‹Iȶïì3÷±ÇâÌ* ÂÔtšHÕw±ÚS•ÉÅC.8 ¨]Á4lPDœ ‰ºØÀê{{ma8..Ã~m(©ºåoP¿å!]¶ ¼è(… »-|EZpƒ|™ µ¶RÎÄ*‹ò¢;nBF Kw¦<±Þ°àa=Q âGôšE.ïû9“òÍåð=±Ó]_A1 úžßQäNâ)®’6kiÏ3ÎOÖgån/cYsç“FÂ8"h´B+®>G›ËÊ9gr|=X£ azÓÜ 9j¯ tê–c1mQEW–v ·dÔ%ÕÄ«Ô3`9ºb%fq¤ÁŸê ²‘×È „ÞãE*ØòÞSº•®ìËÁÅ£“cð¥íÆ»àô ÉP­dôŠû{z L–{%>’® )ä¶Qñ¨)’JìÕ³ÞÊ×s³ÀÀ_ù Òûo®{7£]q‘¬¥$&¶™,J¡§wM(^½Â¥P”%Š}×ç&£Ú„xü€î G¡zÚÀã†qájÚ57~¾?%E¶ñE Øç >æyxá6_Æ8¿ëüÿé# è"‰ºHè ·ëC¾ e0)e Mʼëb¯l2øØHrWM{—º{g·6«¬îkäm·ëfL‚éÍ;bîõö¾uˆ†÷YÛä{1àÁqg>0aj)2_ j_ÐEÑçUÊaWã ¾ ·Û{_õ‹Þø«­x€|ý§”°|ŒÊøp4´ºÔ›òïº..¬Á1%Ùøp€ýþ7Î=° g4<ò è¹Á‹¡)aöf’ZÅÔÞ¦7ÔÕ{ãT=}ýîMØ`VÝ´R"+,KPž5«M÷i”åÓuû€÷FBYò{Ï`¾:á™ úÜoûð›V—䔪’©äÛ"U¤–[Ò”\…?¨½+·Õ¬2تzÇN sH6½^|Á¥œÍj5Z·›–=«×¶Â¼M’.—\ Cà+[4§wÜB‰tð3¨ŽIP ¥›V… ~¸¼n=ɽÀ9®‡eQjúz˜p=BÛsüH˜D µ­¹Iø@ÛŠï[¾Ž4j3ÊרØñJ,•¶%“G*c©qèhM¢`¹ê§E™¡ Wâõkÿpðå’ŽŸòþ‚ߊHk³våôfé?Ђ/%¤¨X¯¶×CçzÄìøJ–º¯Ô•“•ÚñÍßùÀn[éâó'„± nœÌt`£eÇ  _:ÐTù ƒÝn=wËÓÁÇX1´Sp%»Ö#é»Å°œ4Ø4XGÁÖº‹ÈEî†ßÒȧ}Ê÷[2П¢ oDaÞ€X…UÕªÐ|Å5‘:{{4çÓ˜¢暇ј¢@sŒ]w~K`»^‡À«í¡óáCUÍýžØ½íyAªô<•bxõég]ØóÞbv°¨“Þ^7^~¡+™íÍû¨ Fõ íÖu¼’;œáçQ? ¶-ßh‡_gB —(ñòF€ ۯä×ÊØÝl<#¦þb4ÉÝ ¨õfXÇ{Ì­÷n6mÔÍÞË*¬V¡&#Œ*ûáDèl¯¾Ñçq·ÅÕ¡ÔR.¡ÃÊh.ÔUÎ…? ‡~óþu1ý¯Íœwƒš°DÃF¿ Ñ»€îŽ*~¨ä¬õ[K;njC¸êPÚ‘ÏÆpµ"&R'ŸÜ¡-µ¯ÖÞ…íVáqÅ­ ÀÄ»jÖò°©œY›|0oG>qB»q§¿ÇÝæüýºŠoƪ¶iè:À1€£‚yÇ¿=mNt¾Š\ò÷gK¶i;ÿ½=(µ.túÁ ¸Âª²YÝœ] ªÔzW¿F!O$ŠÒwLö¿¡Vôb…×›pþ0ßaà„wH6;Šp¢óÊñ.4TÞÃõ¥7¯ÝmTÿÙl–²Wa§Ââ­©+¢=TŠ å²'ÚaB1œ÷Æ6]DV>õ‡C ³ðÔ^; ®œVIŸ.Ÿý %LmH endstream endobj 83 0 obj << /Type /Page /Contents 84 0 R /Resources 82 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 82 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F11 28 0 R /F10 29 0 R /F14 31 0 R /F92 16 0 R /F116 26 0 R /F108 27 0 R /F7 30 0 R /F13 61 0 R /F1 33 0 R /F9 85 0 R /F6 32 0 R /F56 5 0 R >> /ProcSet [ /PDF /Text ] >> endobj 90 0 obj << /Length 2964 /Filter /FlateDecode >> stream xÚ½ÙŽãÆñ}¿B0`@,.»ÉæÄy˜uÖÙFœd€<ÄyàPÔŒ¼ÒpV”öúúÔÕ—ÔÒŒc ŒDvWWW×]ÕÊg÷³|öã«\¾on_½~ÛÌÚ¬­t5»]ÏJ=kr•ª˜Ý®fÿžß-–ºšðYÏÇÃBÍ'üØÃ÷ôDsÃj±,L>ÿ¸0Õ¼ÛÂÌq@8UóqͳO­Ùáböf ÖÉ÷? žêa Qv“Å™rþ+¢è Áz@$ýB7ó¿’±)9Ä ” >: Ñ!ÔãóÈÐLÒtD[|üŠ<‹€þõbOÀj~¿á+[,˶žß2ŽÿÜþD±T*kaŽ‹V&ŸyTüŒ´:"¦ZÃÃOD®Þãá‡GäÆçzÚû—\•ˆa{@Ð"æÄ«Iˆ´µïv æ~ÉMo AüÞ= µmÁ¸áDeö и)i” Ø[aëýÂ* ò <]…ô§xƒHïŽ}Y4%H ÁõáºAðÔ9£\Û3âÛ¸ç«)µèÂÀßp×q+[×ÂPT¡R|gNÀÄPÙÅ1²Ã'V’‰§…§«£Å »üMFÑ#æ÷1J”4lü?íý€û! IŸ„ŒÍNÎú•iÁ ?ºíýh9Akw<¾83»X£«ßäC@z+Ú·ó²#5›H%Ôü»¤ˆ™Ï;ü¼óÀsVq¯ñ¦×tx !nœ '› –ú éTÄ%13f¾q?xÞÖ¼¥gV$4‹ß¢Ýbäžvgz­Ê¬-ËX¹oí táܽtÁŽßÅ»âîý LèŠa£×oÛ:ªÈ3 9ïøÍ]#žÿtñ«òþ £ 1Y©[‹„Ö®AþéÒ±Içè»C(ç'!Øv­`éYÆŽ;õVQ<:7¦Ö ž_¤ê(¦¥ÎóÌ´m,¨D ­$†VJÜ/‡Q«#{‚ÉYƒFÔ¾VÌ$p¡éØ•„£'!Š®8áX™«Ümš¼þ:á‚â`'™o0_x™“¾ã:êÇÑzžg6•ÈE±¦q™#e ì}3X@Î|J9~k•uËVPƒÛüL­þ <Ëž³(ƒW<Á4V#VRæYU(«à×-äÌ:J“™Ò®EÇËŒ]u Ç„w¦2¤†žIM«"ãÑ9|` “cÐô n·Ï s«X–hîN–-.X†|;ç‹®UÖTŽ/ƒhîJx3‰¦ 4Ö pþŒ?ËÒ4Y^èXÀ+kÉ6¬ ‡(cy+$߃tÃ`ÈÉx ¥ª`TxÓÛþkþ„ÊV4O)ÇÔ熧ÿKyÍ3 eë‹)"¦Ç $KÜÃáïù ƒf.ÿʦVbX¤ê³CXVïä¿ ñdÝ]!Ëîp"_»_Ãûý îd#[XuêÓ¬š°Žœ<í\ÈäÕÐ7ñtçÈ¥×–R5ÿ–_Ÿó$+h«Ìâô <¾#c«ÚOI*ÀÕ·f®…K²¯Ê˚訣q )Ô“XO'm ‘M¹`д›x ¿[f0Oð_¹©D—Ú]{³ô7²•‰§rA¯ä¸2m9â‰BЄ‹¶²f%_*S+‡»•§Èžª’CW΢mkY]зµŠ´T’&ïçqÙ(ß&0çñXÖ¡2Z7zÍë$×™Víî}ʇ`dK–GCkY¹÷*ÌÿNÁwîû” ¡Ø[¤Î€çL;¾Ð†Ÿá­Ø}½ÄO¸^ÄŸo_¡ûÏgj¦ê<Ëëv¦›t õ»W^A®”›† ‚Gš²ëdàõ»™ý0¾ú;üÙ©¥Å¹ ^hhÓfy)JpJÈÍKXB¹”ê© _ñ²óäG1Øâ÷¥äçl‘…Ϲ„(@âSQ #6¾Ÿ'`© TV>8zúCX Nt'ù>[eßžQú •Id^XÅÅÕÏyx©‹¬QúwfP{í¤²†¨71}‰8ïJ7Ë ¢>(#£ÒÄ5X¤Ã÷Ó:,hÂô—‹0 ‘£Ríï-Ât¦s—gf‘™BŽ•™Vt™©¦e ›Ð l„¦XÞÐÈt+JŒË%W†Ù„ŽÐx¢ÒV»Ö@©ˆ¡|x¬•r«§@¼õÎlZ ˜¨ÐÛö¼Zd.ˆ}ÓlÅe’´Q`ê¬Vß{ëž„´‰éÄžÒÇ%c¤°ŸªÜ‰K*.:”MÖUÔ)€a®ãÿFÄŒ’r[‹wrÁLamokÇn›ÂUos“+¯wHmóOý#vJ‹fþîÀÓ¶PƒGfóèÇcQDªc+`í;w°hë]÷{Áyà#.6f±ç¨¿C£ÞâŒ)WÓ¥åeß7Ùuc„æù†mdÑ k– <“e»Y„³÷føl­—÷ÙX5¶j¾JŽVWüþ‰jŒç€i°Ã¯Šá8°®–”ÖŠ!ÐOÌ çÌið ñÕzlı±·*6­sF•pÛíøÜdadŽï¹…Ræ&NM”,´¹GdNŽ·Í#—×J#R®c0ŠÝÛ4U‡Ý¿¦Ìꪱ™Õ®×ij³¬È³*/,˜XúÏDû1hI8ä òM´grWï:WJnO@Εªç“˜(„SAzÜŠ÷ƒ{›LQ"Öú¨Ù àŽ)øº~°æE®èѪÉSŒA+“µ:ï-V¾'+Ý¥b®rñòµ ®œJiÙš8 ػྠ½2;ݺôMÉ*næš ™KÆx.B $«¶x‰ËÒIZ¢KB#Ú¬®k/i®é|²å®1޾*Rõ&S•£æ\ §;îìrÂþÄÚ 80w€Ëù‡#{{I{p¶Fý ¼bdT{Kò{iaÁÉLs"b,ZäÎaÚEá4 ª8@•J=lÂy·‡@h¦GMÁ‡ðê­TÚÿ6'Ù÷Ë’ƒÂÕ¸ªÜÍÀ뙉öf=¬pá3u‚ŒBØñÚ]”dȵ8C®=a[¢b€hÏŸoÏg—ãÒ[¼L$³?wØøßj<9¤œžœ9z<~é9]x>6îS— ŒÃ8­wçNv]S— ºjŸ¹1¤L0’’.ÐavmÏ)Uµ7³’Û¬Ôõÿzo£Àí¾ ^š<Ÿß|áWÖßv¤]ËQ3oÍ·ÌÓ ?ì€=ÚÚèë¥ÛeQe­ªb_ùqHûÌCZéKÀ÷uýEW´·Ü‰['+V_TZÏ”r‹Ë·–¯üO Ño!Ú aoù'*TNwÁ3‰ÞŒ®]!Œ ýx°4}¶÷”îÞÓ ;e µÏsR ™ù Ý–Þçà‹ó9ø">G·&Ýa ÿü|ª@ìxY/¸rHïf¶ðú—7Ü­'r¦ðG"Áo(P[sí¢2bV‡y?Œ:VŸž!u))ùNÛ°4;pø†<Ñ>Åè—ôA¤ÐƒŸy¤Z‹M‘™ÒüZ‹ÉËÆ¥*Ú,¯ê‹wŽ×ç‹Zñßù&þ^¦îüÍÙ÷çI&Õ¿¬Î*ð—ÀÉ¥—Þœ6üÿ L^‹v endstream endobj 89 0 obj << /Type /Page /Contents 90 0 R /Resources 88 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 87 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-fitBurrbootplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 91 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 92 0 R/F2 93 0 R/F3 94 0 R>> /ExtGState << >>/ColorSpace << /sRGB 95 0 R >>>> /Length 37719 /Filter /FlateDecode >> stream xœ´½KuI±¦9_ÃîA~7÷)©n$$ ‘1(%´J(A9àï·Ûkî+ŠS'óÙª_ùÅʽöZîævy/ùý—ïùýÏï{ûÍûßÞëüH彌ò1Æ{Î3þQ>jyÿûŸÞÿþWÿ­·ŸýðÛ_üüý›oßÒGJéýëŸß~óëýo­¿ÿãí?þðžÞÿø–ß¹ÿ÷ç·ì¿ðþ«·V>ÌöGØGËïyË=¬rþþþ\-}”²Ž_ÿ—ŸßþVwýOÿ2§õ‘ûþGù˜Ï]ÿüw禿ûáßÜôßýõígÿoÙÏáwÿß{ç/âøÙòGNï5·«ï¿ûËûÿõÃÿøïÿóOùÿ~ÿÝŸßþŸß}¹‹ÜûGZÿþ.>Ÿpî飶ÿ£OøÜÈó„ÏÏÏ.Ý>Vú|¤ÿüãóÛß>ÿb|ŒýŸ»»ïŒ÷ïßÿ—¿¿_P?~ùûýý…ß¿¿üýl¹}þ}üøåï—}Ìñù÷ñãçß—œ?úç矿ü}éõóóÏ_þ¾®ôùùçÇ/_øùûÏïÿÖ–^Ðô?þÛ|XÍu¯Þ>šii¥»ªü¿üc.ó#/]Úꥶü5ù¥ù§~lIæ¯È¯-?ùÚÚüõøµ5ý´MôÒÖÐíå³Ñß÷÷÷ö±ÚþÍÿgéÏÜçÝåßû½í¿ýÝߟ/÷Ÿ_=´dòØ[Û~úÕûMTÿæûë§_½ö“*ºó>Àg'_@þÙVÀg7þÙ \=(üê žù\ŠÑô{·:õÆÒß[!HwžÁÕãcÆ÷ÞËO¿óù13^-;¸–®«¸sÛ'E«ÁSÛw>Šžyß{ßy:ÀZ³îKï›ìïö1öSûø$û{*¤ylWïßb¥žûS÷X‹Õbàêœv ”c¡ƒË}¹4}xWï´Äüˆk¾×~úcÛŸ½ôÊ&xá;<ôK•-6…‡½MÀÏ~úŸ½¿÷ަ~çä…¯}úZl2²ÐkE m“Y",.Ðsêzá0ªîUæY9Üá«~´xe…,¶ý´ã$›à•®‡¾ 7òÙ¾\b›TÑÍÓe…Å&‹ï=ÈRMþ…•{Ŷӆ©;'W8ÿ=¸€§æ=®&gÑ~j3²ÅLBSÖ9¸¯ž {ðE滤~ ’=(ªèÎIp9ŸI-¿š›¼é2tþûj!õ‹ ¾PL^gö0½À!=øs‘þª=G߃ì1ûhš yj=®fiò¾óÓï!Éæ>ÁëÉ5Ùg¯èE/²ÎÛkä³sJö >Yw±DªšPw±>‡é>´h£Ã¨jwâ3A|ðÞd´ð;MΤk‘Þ?òÉIï¢}؊ɈèJ,2>Ö <_œ$é>œŒW6H=9žN8ÞþÛ¤=öIc݇>ùHw']O>¼Žîqž$RËv?HôádŸÔxll¥{¯«EòBš›Ÿ%‚ÔHœÛâ#c eÓh”ÃåNÊH`üL7 9 «¨Z ¼pšº¤í2–';0’Ŷ¿÷h<>äg²‰p‰†2Ù¢;yI“3«FoÀââI”Q£¬ÜC˜Œøü(]Pu²n¶JfÞà€W„‘ëNpõ^ègÎFšøû•‰0yèSMMŒ/êw¾H’UÙÎñÑlÓ”7Á9ÛþìYYèû{—¨Ð<9Îà‘Ø¬«¬èºt’º¤;n"ÝÉýƒ&Œ‹#KáSkq€Wš–ϸè|ñ³W5À<”áRôÁ\q-4 ܇‰5<È)ixA!=‚ËBƒÕýÐ;ÇEýíC|Ònš3&e,GßÙC1ÜœMÝhŸ°£è”“n²üÜñ¸É«ÉSU‘¦ÍÓ¤C°‹qÂ|fA<°‘|oü`¡6úz :Ò ´y£(Kî^Dîü´“=CgüÅ’¤iDM•Ð@x­ VE-|q+h–¼à„Có¢(ÓÉa’ùaÑÚÜ‘©‘]Ò^A>ZQëÁk*Ò\lQ¿ãnQḉ]Õƒ&«¥©ï“¥B¡û)ŸÚŒBéžš Aáòe' ‚ÒŒK[œ5UOX%›”Os‘Ð.F¤ÉžºÅVîb# Í9îÕ“ÆË>–­Fú@J2æ‘te–dŸ‰0jd8Œ0Ê‹*ãà¤uyt¨SU=,hºH’ì©;'_yU¤Á—/̆´Mü4RG×Pâ”[ŠìÅPÞ?},<Æ÷ØéK#EÝKÇø^1%zÙdX54 ¦wî{ü´ncgœÌÛ¬"ýä}µ-œ¦çtÐðÖÕŸ…õÔñb‘@ø!NªÙqg]pR”íBzsOªvºNj£kÁåìò ‘µ,ÝZ†cmY¬§”&çðX%t…Ÿ–ÉV×=‡†°{ÒC!>gã ;ÿ¸ƒU“ÇmË’¨êØÉs°âæ¬5t¥Û%@›SJ{öBò®òp'A©fÜp½ŠsÀ–UÓù.!¡©_R8™æÒb l oò”„¨,kžŒÈŸ«&Š ˜ÏAÈò‡3*C@¼¤²‰*ÊÑ{€“|3Ò7)ýˆ0¤²ŒNŽ?8ÌlÖô)†Õ2L‡ÅmZ¿ !ëòÙÐ:¯Ï:'‘-_ñÔSt$ÊHÏÑEíìµp¦'ÙÁ ]R/í³Ü#_b‰èVC±Œ±áMI‡|pç+ÝŒ e.Ë+Ý9éN®ÛX%W;Ã(áÜcïÆ!¹õ‹7Eȉz“Ô¦{„›H‹p?ô4qûÀù Ï„û 1$½äà¦#AÄæt lðÈ}Né.Wºh èd¢lw6JÑ•nÛ„Ôÿ#ˆx4ÑMõ’ÐØÆbÔÆÊœß UË…ŠÎ‘“/Àðë͹È9¸ž–0á”#X•Y%».W–lðfÊ’ƒ2K‚‹UŒœ´õÈ>³è€ÙX/Ú¢ÉF¡p‡¦}&’»¨jÑÁÁª¥'kbµäeV“;OÑÉNô•Xk–å*Ñ¡SÿA”5VTö Â6?„h“ÍÓÃ_|®òAþ¸ˆQ„ùœWÞ”<µD]ȳYýÒ.H[ôS¿´ÉæÐI¶øÉ"¹Ç¬ÑÐeL[GŒ$|íCôeH{°r² gêj¤;˜vÁ(ŸC6”°õf'†(3ðò! }ä=D·Á/ŸÃtæ£û„ˆÙõ¶ªPs1lc1A»øúPöÉÖ^ Ý#䇦ª,‹¼±•CTŽÕE—a¼N×¹qêíàØá„ˆïkí mÉ´+Ãï˜|ê`4ªJN º}šœ*š¤‹û<89ièžá]çýžED¿È…Îð€AUjÆ`“^ôâ‚t{@zMë¡›28ZzIüèðªbÃY¢‰NòÜU® jà[ŠxÐÌ—´.ÎÕ¡º­Üs Ué>µEÎÐq…U ?Ÿ¬Rbô9‰ˆBÈ^秈†li£BÑÇçüFϼÝÖis­‡u‰ÀëaÊ0ѧœùüþi{ Éè&nS„rôƒá''ð£MBPp»*j˜Ä$#-ž9b'õ Ø$™KeezhW– Y„¤ Š"Ùž0¶7Mr9Ôhc»¬^ÙgD(ŸJ{g’E=ÎcGȦ£ojÌrÂ-Âæàn˜tºâ{ Íll²ÏÑ›£“Ïî·Ã‡fté‚“Éw‰òx脾ààä+¼ÄÚª)PÙ„Æï=’U„‹*÷ %Ç‘[¸ ®Ì–Ol4øÔsÌ Oºû i×{5¡G›Ý&IÛV¾ñ…|ö'ñ“lRŸ}ÌHIÂYb¥†/Q"@ý¢tKB2vq©­3ú -Ÿz‘²vá²ÇñŠ©L7Ò”·ÝÛª‡Cˆ>{—޵|æÓ@@í¦Oó%R¥ÛV…îj#¾7‘»èGѶ3 |ñdä³÷Z;Å ä6µ3…'­õ°“Ø3_§4b'¸´ø kuÍû¾ã´<¸Iö¾kâ“põÏõÔØ ¬d<°tÇ‹H ¤=Tz2¬*)tü áªÆ¼@r Ž«À£ho²£ëBJ›1/ž ê>œ)<:ËÅl¢þâ¸2_ÈØ-½B|8@Oð?Ž$.NH?º.DK7 Ú$,<§>ÆR%ËùTáDÈÇæUÓ‡¡ÙпFß…5}öÕ錓a®É œ Tâ…CÔÆE«¾i –î@ýÉÀø‚n•GD€ìðr©.HU&?š4úP¢UÆTe|µþ!kÚ–.8k×” ³ç•…£8¼[œ°„1~yã#L΂ÀIŸÍæ³ÑÄåu‘2HáÌD•J_nÖRhŠ?oʇ(£vÉ.È °ÇA˜™lCв½éB"Û£µ e€,ÍÊêu$.[ÏŒälý2e‘ÀC$§É˜@¦›Îñáü¢áŸy |"Â:¹ÝvÂUõK…C»dÜ3¶lNºˆx6+DÂv+× å‹íf›h_u˜P'@»‚ö({(ÁFg™›'“ìaD·iT$â>W ÷4ùlQGÏby·‰™'5|ÒtäA̪Я (#ø(<“(­†×Úž- .Ÿ¶²D*k'MóªÇº nÄÊžšÑp¾ì$4ËÎ#$éŒ ÒºJv®; 'ÝghB[tÒ$$˲A‰.yjëö÷ +\猰9/Ú•HPFq/=’ª¶göÀàA×”žA²Ît¥ö$PfãÀ¢ÈJMèbå¿7Ñ[j²= pòØ|Òu*Y|ÒõŠp»,>ÒÿŸ'¢/ôÔçÃ~@RãN.`Ž~]H_´`”E6Gâ ¦…›8÷q¬+ËA:7.’ó`]†0:EóUm@8ür%ÂÈ0zFyA³çžÑ$øl£U F˹\rŒ^wöÌn=Çxv|Æ5W….¡ç8‚ƺªGÙF?¦S¤G·Ö3ªb‰ÏEƒ º9:TÑ=ÆÍPÔe4>ªzÄMdÃŽ#-s´gx6ýz« eÔý`&n>"’›x‰XÝ„7ê{X€ð`QåÖ‹ª">«ß© KU×µ»@a±Ü¦ ꪆˆ/dFY»¡ Õàùú âÃò…LÛ;àƒæÉg°Iî¼Ü>Yl®…³p{Е“8¼xæ;E'Óƒý¾mâð0ÇãµIƃrÑÉ1%$‡I>)kdŸž §-êW“l±×éj88Yº6>(0FâÄA:n‚ÚHè` !Ç éMaöÌDaÓ£uAв~…”~×r§“ÍGˆ­ÔzI—ÈYµ_± ä(kA«ÆIzá,|·ÊXx­GùµMúmÙ §¶ny Ææƒ&g²®ÅðÜË*Ãþƒ½G“m°yp¿ÔE/·›Œ¤ðkìo¦›äòƒ ÃE]–ØtÔ™NFŠFÓ¼|žéàƒ7æÂ#µÊy¢VbѲ'eAõ:‘~p{„“Ø ?êDzٛn&érZEç¢MŠª¬„ß…ði£“ÖæÎfÆËÅ‘®/ЋsŠâ FV]ízölú ³Ñ¼?Œp"f“Vè‹bŒ®t%ˆI†m*¯'YmvY:¨`—ˆÀÉý2eII÷IuAÐæv«*’»|Šø ;· ñOù°kA€‚! Ý.ûQ®L-]{3ÒÄwY¶SMØÅxììXçã´UQ-Ú.º|õBF_·ë‚,£ÚÕu‡®ÏÇ·‰é·+>„áVŒ›`¦Ûk5fHw:º¨6 A÷Ì Ñá©Eºø1…C`{%mÚébš/Ñ&dàõ*„C‚ÐÉ(+_þ *éz1Á‹Xy„Õ~à4„ ~ >Ô1|P¬brH÷z\üˆRæ'8…¦r ÂdÊæsôãÄCšMöÈè1ÊÆÁ.t¯ /RRAÇ 3/õeGìzŒÌ›ªøáJ.©‹,Ò¦ÌTøÒź@?œ]п‹?Û,àŒ)ëȉΣ~›tHX½>>~L´é¨“!$\Öˆ">ÇéÊ,>”gÐEžZyeTµ÷ØmŸýÍ NÍÔÓÉHdê÷4AN›ãšÂ£_¿ F.d3T›œé]÷ÝöË\”556º°‹t…«å"aëá(>±²èèdBï£S‚#E×qyð0Ç>e‰çnœ'0Ê÷fœ% ñ¹Ê5B¤ËµEf§AxFúȆ4ÉòÝ¡è}ÏÛZDš¬ùðPƒ7¿p æK‹&xð\8©!®Ê׈FË…²#‹ðôp6Y)zº&D>èSšá¶°hó)&IXl„ ª· &Á%?H66M¾€OòÙé*›W5[Á»¢‹wƒíÑE#­‡a׫‘lÚÅ‘°8ëá#^›ÏZcjrÊNî|Ü4ášÊu6CŠ ?J±í›QæÇHu"ú€õ[B£ip~ú÷L%c¾€-jQ$6íY×h»¤J˜¸ùˆk^ñ“ÈI6/ˆõ«ƒhëŠè!ÿ¿qc Ò±Y×2šL=r—5AÈÅ.sFlŒ÷¢ú'ÃÿÀä‘Ù»<8ߢ T.< ~hü°ÉH?v¦jf†.#:øè]}*W?Bf´§Iư".§’H.:KU•êফ…"z๽Í€׃ñ3868±­qQðˆ&k—ºˆhðë•-:Ïå]†L.ñÙYäx<áS»œl"›°_øÁ!~ðÃ&'ÝàÊûHج<Þ$¬Ÿg‹’bÒ®è2:Eód!€#t Íá6 mÎu@2¤yP/µYº®K{ $ºÏ°Hz‹î'Ÿá6ÉÜÃ÷ÈdzŽÎplå„2ìàÉÑ ƒÏÝ&Æš8°ù àX_yTév./:]5yÔ‚Oׄ¬5€Xÿ§ß,‹ß‚‘½ÎÇЂïœÿ¯õ5AðÛuM Œ ?ÁsdÙä•õpMÜŽPðn“-ÓöÁ Mä•=ŒÅ>ûêÁ““¬ÞY2"ÙŒ»ØgóƒS!aqλE©rÁit1%ûƒîAŸh©èÇ!:;Ȇ¶ZgŠÍŸÂÉ(kl‰K-¶K¬àé¿S×$¹zÜ|àØl^ êØÔ«Ðýo“‡ß¼ÿí½ÿ»øÓ‰)¾º’üïþþ§÷ß¿ÿU¿TÕËŽ?s›ø\|ÛþÒÛÏ~øí/~þþÍ·o>ÉÜ·ðåÏo¿ùõ›(3ÿxû?ìÿã[~ÿåþߟ߲ƞ¿zûzyË]R“ñã÷÷ÇÜäêûýùåùñþò·oþïóýo½ç:<Ë?ýþ¯?ÅW󿲊¾?}þ­Ë­Îçoã§Ï¿uÕjŸŸ?~ùûxtÏßÇ_þþë­>wþù÷þ¶õ¿ûáß<ä¾ûë^ %Ãü8ÿ>þÐUNŒ¥ßNÒþ_Ï:úß\§ò×Kó½4Læ¾^Z~쥫ù~ýziý±—ºÂΛ¿^Û~ôµ5»&ý×kû½öGm™—vÂudGº³ÐHn¨d5fÇž1u¨%½š‘™}k Ra6æÍ‡”œ1¼ô³‚à4S‰ád=k“LИŒ#hÞ¢èƒÚ‡£¾:ã|™ÎØQ3B‚3V™¶yîï­~†ºEJì¶{xÎ1Df—`<ò"ã-ïÊÃá …v+é).ÛU-Ë7)¦«5Ðá¼Ur«û\'Bqaùéø]ò®Ä~5ÆvveÞ¡V)ÔºGŒX×ý-íoŽ ¯â » Ó€L¦mНR4VWøL’_BˆKs?ÒŠ5$ï¶ëù&J ±Ô1µœÂµB Æ8íö À¦Ò{qd¬Jm0{ÔлVM¡#Ìz'¾¡3âz6ò8‹;|eå‘],³&ï"`‰_¤$±Ð'û"Åý{oúl÷Wå`’XT=íÊboõ)MoHÁÎU"¦G2Â@óÁÿPw‰È{>ÔÐéî‰Å>^{CgÆ`?72§1Ù™ŽÆj8¾†éîÛ6fÊåbdã’ L’uoú‰¢0wÖ˜ Š©£²=©fˆkþ2³:N6Oó¬$ÞÒ ,¾¸¼áO’¢M;‰Éiû¥Å7”×LŸpi‰‘ǽän4:j´Äûdä+Õ‘ý‘oúðØgŒ·l’q™šÚf%2‘´ÆÀٹŜCrnÞ›ê‰Ü»7+F§¹óbZŽ~BöEØlšmšŠP S®@{Om<÷íHÊ×Qr :_g¥ÂÔlÜËwæm³f÷ aØ•ïŠ\,éÊýÄPa¶Ôï`Ô2×:ñX8Ȫ¤Ñw^$ŒÆ²}½áø|rÛ)ù'†Ó”ÎlÌÉgx7˜nÔí.@¥tÕå&Ðꥹ€«/3m“}Ãæ)EVÖÎXÕMY ôÝ[fö â’µŠœÐU‡iÇ =mOæ öïðs1d‹˜&m2=Õâ_×Xíï:Q>zê/™²¾;¹XˆæÑ™ùŽ.-¡f3TÞ]ÝCOÍ–ŸV¤í óÝü]!öÚ<_ÉÇ X2 xŒ†uh"U´ÿì‰ùÔˤñH”ÃÛŸ=¡äÕ³©î1ŒF½Þåà`WïÕtR"?êOl ô¢½;ÕªXè¾ç™c#ظf»%-ö%ïQhÌèRQ"ÆYÑX¶¡.ùÉ!+ÓVÇøÃ.O¥$°Q3dy>žä;«!·-lý€z ¦~ Žœkž(1!ùÔšö?g;©/J÷‹?çpÁ@ÇÕ~н²w%Øì`c/àÕ«F£.`›ÝÓýq³Cc©…‰Üé–€zgÕ•pŠ®óÂ:rMãM2ÒBzùAI‚˜ÆÈ!eRÞ¨©¨ÿi:d÷«B‡Uw”£ç4$”$ï¹:ʘ¹ÊîÊÝy°¶[?6¨1Ò=7˜K¿|‚íÄlÖ´(Q¢sRYW¥ ]ç‹ûÌ0µ~ êJÀÞäO Ùdt“;ã{&ဘÁg\LèÀ+q,Ç1VSQÿ…ýæ‹ËUöÉ4!á`æø}0‘|ÿ"$õQÓÓFÁW•ÂèL&;æÀÍÉÚÿÚá!¤…YBªù&!cz «åc7ÜóµÌ˜)jXe*(R1sá<¨Æ½Ò€^j/‘æIEOÒç` ÔNõ»Éa‰am÷Ig¸™7µ<É1¹ËönšD3®ûRÏñ‡%œ2 ó©ÊÈø ÎýjùX‰?¡Ý»21ë̼S˜æ}b ŠPZŽüg¹”÷ö!¨EÔ hÌã5U>¸­Ÿ~Ûk<1ÔÔ‡ÚxK]­žPÛ ‡.½[‚%æÕû®­¨KêÉr– iÏÉñE_<2o`J7(ýúuÉ‘wzB„„JÓAãÀQôΦ¼'Á$+!ZÔ1#MO¢¯Pc{£i•m‘øNy]:ë†!’‹Ê æKÈq·Ä䪪G Â/©RÁÈ®±lõQ8z`±'™qÑ.½é÷N95v6 1éXgå¤ð&Skºä£Î¦É²´'”Åãt°óÎR¿m&ôÙ»*ël•zs,„DŸqL³¦…ÏE“ =ì¶GTÂ^¢±“×àŒß1̳„Λê/5jfª ÙhU`òΦŒ>À±3 'lG„1å@é§U$x˧`gh µ×>ªI¡²SW—ÌÛ™ZcR/‡S‰œÕtØñ€$/9Ýô‰ð<CM=9Ë^é0 Ð0Zà>¤ )¬˜·ºÙ4eЛÍ.3Hn[bÖÐ{Ôù:¦É"qLbõÂdÐ…t‰vÎnL§þà àg€àYra²€ˆD”,Ï,¾âÚf¯ÍŒ)XŽ~æ²d–’K×–é¼Í~úädgLµiŒY¥»<ÉŽ_½"–FØ•;¹„)g9'&°Í W>scÙoOG8€ðE“H_ÊÚÑ‹ûÄØŸÆLm»OÍ\1€dD²m°ÎR‹)âiagýh@…ó}ÓbäfÌ g壀N°3È!-ž%½$³¥óy02·IlÊ¥%ÈÆÔ`4–ºÊÒÎ÷3‰Ûæ°¥QJM ‡´@?_éý!'Á*YchDQëÜ‚±:»˜ |™²^¢è7%4ˆr¥c½ÚUSÝm_aŒ)Öʱ¥åø|Ðä+1„;Ú2™|H©žR «Ì}°)7¦1ÓO×)ª… g¡šÑyRU wáÙù_›h,;ƒa4pÈÙýt (9Î×X«Å…²§R ÔxUÓ¢wDªšúL—Ù‚Ía€sªåêL]’ú&ÿLxTºL¬C^êùz£;i["é'1HIYÕ¶L¬ãa’AÊhy¯ Èó8Òz`>”˜þÍ‘‚r Ú·ËŸ1 ƒÉ{Nšé’tÈ"Ð/f˜-ïBf´)]é@Òè™w0]Ë,Ï¡QbUáP»ši˜kLcaFõ¿¨:civâä ö±Þíe þ»ôV½KÏjpS››$5{…Á*#ôIaæêMÄý¢ÑÖÃsŸ¨ÅÔv+l‚)ì¢Çål´ÑÂÏ(šÄhuáqr•@-d±;Ÿ»³ ´H7®É›O$ÆbˆÄy$§Iôê&ê«ãuh’Í1<@‘@؇1$„Žë…Á`]¨BäÇk¾®}0ÁÐ<½‹qK¾óô\n°FÍP™¬°s £²1–ANÎÌöIÂjˆ¯û¤gN“'ò[ú.Dë[òèiã?νmHa'tÿO@¢ulÉIÊ^|ÏܽïÐØ@¹Zm—hb‡‚8Ís1Ç(ùù¸H"Ù’KôÖ;õºHj Uð¡{ÂüßC3üÑt5FYÜS¥!Ï›t8-ÁfÙ-Ü;Jxhg –œ‹÷3G¡D€j"–š´,GbîÇÅëØÉèˆÞç‘R6骖|0{Äð€‹ ÍÄ; ð*ÊÄdö‡ _&ȳ­˜eësÊko2Ó^ ¥4Þ;Ø 1cÛyAÙhG/F”"V šÌ(Ë“ýEÑàCx癑%&K[cR…póÁ¦÷IÝT㜼"$Ä;•ÄåI¢3Ó{Wø.zèÌ!a /ßam•&Õ1’ªš¬ScnFÕ®' y©f R“d:ŠV˜ªg÷u`¨×”©Ï ©Â±Š°§!aìØW²Hš·â&´þ”œg¨³mל}ÖõÁ@‰š‰ðRÎ;zÑS²#Ž¥$$É.ëê=ðHáİӲü9á•Ù¥ì"¡³q²…Ü5Ô ³Ã2hÜÃw)é„f.×S9˜SþYÖœ´¡!¤ÛÄw%$Êp$÷ÚŽlɬYßbdY±‹ÌÎ’©;²%“:jVÞå^òßDï*ÕìõéS¼+8}êÕ¹¶î~Íb6“1øTä¦ç{:XHÒäñ°(|Xvùµà[äNÃád·CO!#³]5€u‚ˆ:Õ‚t[a)·L(#“J¡(kFã6ݰ±Ñ§ÚÃ;­–°äH€Î|mަ„> v‘™FºaÏíHx–°›crÒªX5‚BÊR ÃÌâ+1ç:y‚Qe¿ÜyrD/u¬½4DüU1sî9ðÃÉ×2ëT+9°Ä²CÃc°¹€üJ­2 Î%3xˆ©ô7&b}“Õ“#¨yL"ÊÐÁÐŒý‚܈N« ä¶3XóuA²Û1! 5Sè%+ÌDn®Ðèh4ž£W:.räEï·´²‡u&L=𾤻 "äðº4nLÚ!4uÚ“K棲º $ˆž‘4nJ:×ùÑ,bb>7ã ZËOb"ÊκSV{60Ý ´½a·¸*×'ì¸"{c2FÞ–W§… ¢>bGp“/l„ÅËdR&ÙQoÚ’ròÎ'!2i‰±¦m’oSa µ&xÜBrÓK‚÷tu‹ºäÜS&ÊÓÔk†I`–Ì2} ̪1²¬%NÄ]ËÇôÀH²_¹+U«* û¤u¢8È!‰o=v’ä™0-c2Ði>Õ; t ];¡»ã6Ç`dq, n)Ùï“A“‡@ÑÐs4œR àÔ5þ ãŸcjSPpÞ©ÁZ]3êv˜ŽfVØÅ»g%“ძÚƒöågëƒ'6`,’qƒtê´15Cº®°Ó]fw.f½¥.ÅR¨ø<ä-K¶¤ƒêÜF­²¬9™A4U•C@g¼Ÿ€‡uÉhTy‚8§CzƦm.ƒé=[f2°†pºlS†=!ô /¦ë\«Ø ì]­ql^ÉkjŠ!ߤ$øù€÷- %PB©¬0öbUa7×ÛoÔ }Šâã –5×LC÷’Œ†»ü1 ¤ð&D]ÚŸ¹ª}gQg™l{Åâ%æÍ–L ûBC/£QÛ™sw‰3²§ C„ª+Ù‚¹÷<Ù•rcœ tå›YÚ¡O9Qc*¼m R†Æ7‰I°SÄ4øª/ÀÆB…ð’²¢cˆX2[t±¶Õ\ŒV"5IH¸2‰Eí$v±”} › G%ìeû=ICŽ Ö8B/(#R×Ôû˜l@úÇ(#ßÉšáLYvBKÏÿtÊf†z¿]1æh;ÔaG¢ºÒ±µNM[fÞ)Žf7“Êš¤?Ú•F›¨˜ MñÉÂ&%·ÅÊ/££'>Ù.äã“ÄC:s\( Ü;È0%`8Ý;]hüYèFðùtÅIÓÑÉ¡G’1QÀ;´33/1 ¯Í´#Õ‚ºÁ•eÙk˜_º< Ý’ö†×Sˆ²×!ËÆ(@ó¨YZ³+¥„0‰CYª{ ÉŽš.óñ;ÛCóMˆ}JåÔä“û: µ¨JÑô Õþ‚g8 Q,Lnºd‘tMùrž æY ¡瘊1Ÿ?“ƒ¯ Ɖn×¼\Â4иÓmiC«õ›…y ïÀä!Ì+ÛÑUô#|Å+q¬ D:j:C3Ž+Ï1ÒTh`L¦g¢£a®âepôäÈ,y/’Åu‡,‰>-9zÅzäKÓMdô§ŠsÈwÓ™KE’) ˜qç* Í|’¤ÄJ‚@ĸ^Íð†–ì|ä5ät7µ¦È» QHôï,~YbsžŠ´ãŽ¥m¢~dÎI1f],$7¥•茅&bC€4«‡|–”¬ƒÁD#F‰{M¦có€ièŒu4KÒŸàUMI­ Vd˜¦Øƒ{4uÆU—›Ž,|ŠQ2O.‰oxô„dìä-14ÏþÊ6]¯<’öº›¸:Ñ7¤§KÌ Lêm“ÜFhÖg=½¼Q€¼µêW@ú]uBF““Pé€cAU= ‘Û–å‘ êËEó€6VÖO:…z{©R¬ìÄwjvE‚ØP"†0WæÓ 0X:ê°¤Ól"\y “ìIQ7sIñÂ;‰àiwõÿ|ŒC·K¹ü;SÉbë‡ IK&NˆÜ;´€Ø'÷L=®¢Ç<˜X´Ÿ²ê÷"RßPC­0žƒRòŠR›˜Æ}¡¦t™–T•LnŸ8Ž7€4‡¥áÉ|còã¾GÌ}(9D_eߘYÉ,·7OJBy«¦ j…e*_¼æa$’P’ÆIçÈ« Ô造)m+D"Óy6´ÚÉ»9V&L«è£+rà$;:–P!!‹]ŒÖ§4ç@ûÑÌË,‘‹'Vè9mDT×#£òõʼJųõ–yLIQÎ=;;'§t€3ÊÅLp¾ÉúGkŸe%Ç —Bb Ü<-ÈL•ëªÂ:¡sØ2’¼Y>{ޝ¬Úb1ÖE“QáxàT!úŤ=ïe´ „:­Ê?¹Ö€tÔIþÐÏdµ«9…jÕßð¬HLÍŸ¶FÉì%0bè]ÑsC†öt¬‹Â¬Ò(ÖÄCµägól,7O³î™×S‘Ë2ÀÊã:Ek uÖ <ìÈÿ©•ãoÞÿöž‡ÌcJSÌá¶I÷ïzÿýû_ã׺ÆÅõ”$·ÊO¾í8¼a÷“/†¦þé)Dz!Ñf'h;*3£2"‡ ´?:"’™CtÑÃÝq»ròU‡èÃ>¯ðýÎH©Ùe†ü‚O>–çIWÅÝÎYÊhx‘C™´¦Žj’i÷¢%ذg¿Áø§ï“¹æŽ ˆþä÷u*‘¾@ˆÕy°"vï¾l–iÙT²ß¼%íwBUÍái­ô¦FÍ󺂯þéÝÏwƤQ´YŠ6èëO~¤ˆóôæ}Ù0×eßqÕožQ£sx¥”Ùá­!’Òš]ø¢ev V5‚ ÔOzÀrÚáÁJŸNè¥hCZ“9ú'¾aÙ§ovù²a´`ÚÅ=†`¤Ý‹¶fƬeÓUÇ‘ÞjŽÉ¼×q-úîJNh9P#³¢Ii#ÈÚÝÔ†¥iaŽZ†…Êîe gVȺì†J¦—¤ä¤iѲädx%U(?ö&ä Þû”ÍÎ=Öí¤T‡Z6'=h°ù Ã8Åy.z”êñ£'ß=¯«°›Ê¬&c¦¨õQ•œ´ZŽ¡çudj÷T 'äû53ã“sLx¤%™º‘–ö.üŒóA5¬aG´÷Y-#,¥099ùê Iéô0ã3)ÚúÈöB%eþƼSÊ"í àgËT>ý:ã(ÞÆ»…™Ùy\¸NÎø»ç€m^ç3Llx.£XWᣋáÂþîtè'ìŽ6ìŒÞ·Q‰.—ˆFÈóä9Öè Øå§Ž›0§šMLæóŒó˜vPSSÿtÖêTZáßuÌF†3ê…»y5)½†]°SÚ¢‚&GdñXçÀâÓÉûwgsØ3ÊäH§4£åWÝ:ã(òa§Šup¿k¸À¨˜sR2n6Z Ôh!æµÌ> Ùy)ÒΊ§µl~w•Œ?æ¡2'MÿÙ{—\™?y:ÆU»þ.(43)+#QˆÑöþŒ"”uÔ°ñ™ûî#2+Š%>ÍFfÀ­`õ Êës¨{•©F®º7OÁšIMïô”©Ux6\ˆR(n°k&EG*_ëô¬0T§Ð^EËt®ù«Ž>ù‰KJÇÅÓ{*QIÁ›÷Ëó€vEBÎdHôäs´:é Û”ÏӖ׌`E§ÿB÷Üú°¨¤h>ßF }Ъ›š¿;8¦ÄC±Žèk>xý‹âÝÂñuÂcz‡œˆx¾‡ ŠdVz@Ë&äÃÔ¬O;ôèR‚#ìæ7ïS!vóA9Ù‡¥œœa"Ëm¤cæ‰ãMHN[û¦%RbšUÖÔ )]ìòKìÅP ÷¨§j¸ùÐ_€ßËÈÛû®ÓƒrÂÀYĘ́åAóN|DŽÀ”â¤ôR0·1f½J H*íÓÆôsĶ´P9‘RD…Å/wÒµ“?àR!@Î<-,AŒÇÝÂÄÕq#¦ÿ™cÈsŒ6(?.+íB:ØÕ7í”víw:ó1î+ò¬'Oõ.¤gÕXf*¡Ååá²Ñ!ÅqÔ#TÔÐåîØæc\zHu‘>rƒõiqÐH ¡š”z·po™—Rb* ¤Æç2ñPdF-œ¡Ý—`¿î¡ âçƒ;°_ky#²cmçÇe¦Y-qž¬÷Î긨&Jb9­Ï²v¨´ŒqÕÉh•'Iß7³Ö6² ºlÄP«xˆ<ª)zy É*GL9ñA¦¢­'_õé´YñâØ`Å¢á–à“—V„ƒXr24LÜ‘–í¸#‹Äœ6¿|÷Ay‡3B ì!ùØáªëQÃÒÙ„’“‰q+ƸTŒ«ô¨ÄMP¥Ì,´e^#:©?ßaùßôâ2UM<8ê )'˯s•6Ö°Nä>¸ßÕtª|°2^çI˜V³”r’µhΪÅœWRÚ‘–6ÆÕ|`¬¹ÍÀ5GQŠ –ƒ)¥ðûÀÓ>­ J”•y¸†‰ª¤ {âw-§Q@,?"}€žGóòSJ†Ín-hÖ2ð¼ µ>BœßÛ>/t‰÷MCe©/Ì&BÓ)-R#ÆT:pY™c½€«T»HM'ª¶*j”+Tc*Ä2«#ùHÕ2§`Ø“wÈ[¡Y´±h¼,<Ê\¬¨$TK/\>¤Í»:VÓªQ€S¹Ë8̘ <«dsXɤHéAi׳‚ň«eN:‹-dÌì×}ŠupR§˜‰ðÅÉš§ñé|:ëD%åó8:Ê,†ÑÆ1¥ãigתc<è¦|~'ä ŠÜ¢oÓ`Z:—®ªDÕ´J ‘i¤AòbYeS \¹iÂÑdfɉtëýæ)™·Ä)ƒ)äùÇ÷9†Èt&åð¼BQ3Ä:(LëdV úŒœCªá©Ðˆá[6M^µc#0Ùܯs´ËaщXz ºÐÖˆØ[ôç¡wï•1§ ðpê'¥L\}Zøèäfµ #µ…V'…¨IÿLBd”¥ˆ¨ÅX™x¿Ï*a r#F”…¡Ò bà†U×(Cè‘ ɘ­sTé(s†4›Evïm ¶A­qáðË?Zó| à +fâ€}›Pä »…"qcÿ¸*5ýÏX LØB®KlÁΣ¾¢œT Ö ºÀ*òPÈ'VÛh¡žG‡ õ УSV]6êy”{©Œ§¢Êl6!½Cù Á÷>┡M§ØBzD¶¨e°çBàiÙ~Ÿ1¢ãûyù°”RjAÞ_ԞƩ…†á:=ª Ú%N‡ì³‹æÜnø„=ð{:‹<¼ ªé 5* ïŸ^«? 3ÄV]ô¨)ÑIê÷T„íX*ÃSæ::Q»b¤L)™7¦ÿŒ±òp…(ådE߃Àó ¬Ìè˜aé?“X‡+…ÂH»¦EU•4Æ¥ê÷Ï!…Mк’R–‡Èê˜ÌëðûL»…:ã$ÂF³‹g/nI1rL‰ªÒÀ\¡è>VL¿¼Ljü§\˜[mZØÇè¹`aè\àxÆÍn=$^Ù£‹hãÃJ⎼ŽÂïÛá¢7ÂCÎãb§ÿ#T:> ]κLŸï‘Ó¾"²š¹w[/« yy5û6#H^¬sb\.åMQëµE6%ÔÌeRÊÂl=8« §À§m¸kä±L#탻`忊W?¤¨lÂi¡ÐD‹¬’áçéaáôª'O¡È=fi´YaWÁšN#dR&Æ×¹!T2Ü!wœÕ¤–‹§Š¤¶#Ô´ âëšš•âëF :+Æœ¬Øït¬“c ¼à£›1L¤tÚy ÈpÃZ~Bþh2Sm^;îóT¨ä'hÓi‰›ÚQ…U÷P¢ýùn¬k4¯*™¯€Gˆ°q¬‘Û”äÊQÜ#æï¯ÈY'ˆ5?"…-¤2)„Æèýð´>4jX8+³6ŒxYáFÍ4?Ž¡-.Çì¼PIżÈSÃù»Œ^A;Üš–‚FñBUÐ{ôçi-3݆гŠŠîÓ¼Á¹–›ó¤(#ub#•ö=9Z¿'I:3l¡9"RtúäCê“q-l…NR•0ø½ 2|„)ñ)èyèuCÞBÚ—rFf4Ü(öàh2ÓR¨Cò ç¤ÒéÿÑ5‚‡Ô1ú¤ß½–DVÇõÊd§LÈOêxÔ´ öÆ}…BîhŸp8HU!Ö±Òˆc\Âf•9|¨ð Óçk‚Ëæhû4,,œƒ±BMN-œû([gF¯’õiÏ11 õÓÞg—À”R¶,y=«¤.ä%nt|_C׈vJϪ£ï]á¢áŽÙ?)X>rÓC :îpú/V&ÕêÑ·¡Ö&ï<çS³Ë3Ö¡Mæõ‚VçˆEËݬ¬¿dŠdÑò¢sØ5_i ~Ob›ê÷šq¬³Q§ P þ;6ǪƒÐ"¼è'v¾GŒÙš¿1©^e r•öíJ )ÒiDË‹5^NNk˜'¥r€š õ(Öp[±æ±ŠZà*±¬qÔ2TæôhuRXæˆvÀ¶°pÚÅ9ã(ò!‡È*õ\èÁ‹d}Úq=•Ø,òðaùTèÚP*qà.˜Í¨dó¼{@©Çì{ë$b¬Õy0'¼^ùÓƒ­N*{LB)ùèPÀŒßüÞﬖ©"°.HÕâ|§Ýƒ.f”ÀnÉLÝi‡¶ ÛïýôæwÔ¡u†ýcßG—û„Ž&*~t:ÌëÂÉ+Ž9 i ʾw´O¡žJAöq”Õ5²È>‡™È… FÌãp1S`êÈ<Ãg„Z´¨Z¾ŽI Y6¦„®ØÄšNëШéš/J̰1P{a´“ÐýäY° ôR0Ù·LéÜäÔ^j´ ®Ã­÷N°¢—üwš”öW2«ÃN9BU©as[ñ"¤Î¤Rõûá«•Ã6Î0‘úEžA*íUžEKežY$›€X¾eF¥Ü2++,§A5¢Z^‡>qú<: Y)1‡Å¦ÆEÙ«aO5Aá¸Ç/Ò¢ÕŽø‚ðEž8§=`!¬ ùEÜ–6 ÕI;ä-´¼°0Ññ—y%³Jáõ;óÖ±¯pÍ{‡)ñ±d¢(îá‹Ö;f”©”Ë 4êc†Õ_²P/TÂ}FnSý'V¿HŒ’yÕ¯+‚î…Ø 8êH'Ú`o1LdÒ£ž·0ña†X阿nмna©PÞö8¼TL-QEba¢åmŒ }°Zf¸bšö ÷˜eÞï%z”¡vúu”Ôyìe1’ù•»þ![aøä-æ2ìòé{Åëw,õ9ƒ™HËÀ‘–úM„‡-F|þž;¯ #?.ãË[”Bt´1Ü N®3‚é;ûLî¡&‚[Å ð#ùˆšN&Ó{çÁÖ{G—òßOZ?=Ř"æ™ Á`µì…ú}Dmò*r*T²JÊâÅ%¬?_Ú‚ÿ}”™©ù‰b6\6BÊ8…;2‡6e¨y[j~·B*„RqDî÷ÎLFpÄ*|tÒ©½ÁÌʤº0ù!eÁÎcýùGç„ò&r@iJ\Û áâLÿTË|+4)µPÓ¢¨ÎÉ erÕß2ù0ãŒc“f—Ô[§Å0‘b#`™4«1@o¸kd1ƒ¦’PÆL¨ä¼:Ü2§g•¹ÚF86RÜÅ ¥Úæ­QËPð Ú]ó-ú6ÝBÂa Gx*MîàMf Ã.aÍC§Bó°2iZ ª+FjÂT⪠8»ã–Y…ÙåÎë°>m8¸Qf¢\誳(9;Ïc]ã]£tdÐ`B^Bò‘i6NmØýâhßf‚Kàé1ÑÆ ²‡b²zÃÕ°Ó?V*©/˜"9†"]uÁ¨ËɬPÓóÅîÁŠR”]48D>†JXxçQú‘Ç¡†Çw`á¶ÏyŠl<Ü, UBƒn™ÊT¾Âõ.šZ^™¦…ÇÄœŽq%)äï‚À-½€«\6‘aZó! ”:&u–è˜Q›’ƾX.Ä÷h5aAú .¥=­´Sê†P™úŒ„0Qî<`aWAÐ-@à [¦PÞÄÁÏ÷MhtÅl‚¶¸SœqT¿N̵éÙW^€aG¤ÅXâ8ã|ÇÑ5l\F5:-¯ 9àO›ñŽK1DfÓ#ƒFý&õͬU„ÊÅ .›Ú_è”ZØQQÍÆ&ŠYépœ7\VŒVJjÔ¯£Ê¡$F3u¾@pS¨äÃÄæ5ïŽ{¤>PJ¼:˜‰QfæÌĨ6L¡Á^pb–ã€^š3Š%–öâºó…2ðô¨+ìÛ¨E*í}˜œ”P§¶DÇv‹¬¶|¤¢ óí¾þqãßw óþ·ý;Ùѹ˙2ÇÉI:‹ÿÓûïßÿ¿Ö… È=ùcÌYÆ59ˉâó×Þ~öÃoñó÷o¾}sRÛ¾/~ûͯ÷¿Ýyâ?Þþãûþø–ß¹ÿ÷ç·,ܯÞþùVþòæ¨Ä½îÎÏßߟKW÷ûûûÿúóóûßþØ/èQ7þÝÿæÆøî¯û)—ó”5OÏñsöqí~Ðéq›ûáü÷ÿù§âOû_t+>.ú¯žs^:ÿ}Ìq#ÏSŽŸ‡œ›öüçCý—Ÿï¯û#¿ÛKwüã:|}½âzn峺g¯F»š·‡”Ï4eQ¶ôÞ'¦¯Z}7ê€Ô¼Aå5|e{1†{»óüÞfµùÞ3n‘Ìñ>¨®…Žãçð>€·±ònßùÎÖÅRI%Îs(ˆÚÇß¾sš?ä}uÆ,í½Â È*YP>¸{{¥RáÞéè³eªŒ’ד̸›bó7F;ï«úSúÕ¾®S?@Á¯Œúõ*Ãñ=û!Í<¦²âpÂØ ‚zS©×OìoŠ’7—Ÿ0®í§í3BʺÚÏœêC›¯ð9 ¢ûœÃ8¢; _-ô™·á±…b{öuÎ>[3F½ÔÌßÕlX9¢›ï* Uuçè,ÙyýÎ&Gzíç5:–¤6}oæ[8<=Þ÷Ï2E‡½Ç(,³)ãÂæóë½7Œs*Éó56UɧGʸÑEÕ÷¦gÉ.äVÅ:—{†_Úß;*΄Q¸S+•‚ê“ízŒBxM55÷ܹõ>CitØÕœ5ÌMò¨X9pZµ-¡wM4©b{dØsíwvoTî}z¦ZÂôôßQ‘¢’²â9Ý%»žÙk>󮓈ª¥íœÉñPTÅVY.†Õ™ŸßLµkƒA-dõAó–{°n4D±ø®"yçLã¬ÕÂ4T…Êß9KcË:¶–æu VUïlÀ+G‚½C™”dóLmÐó»y\è´²b×þ\4gRuL:ÈU§ å´ïë ÊkûÕÉ÷7}j;Ë Êà ‘ ×Ëó5ìÇžßÃÊ€žc»dCÕè·,ltÓtç Ç/äÍ> © ßXÞÃfAªýûÂГ¥3”劂µ–åÈÝc ëŸK9Ÿ%X~ßÞÕ]©t6Lûy Ú—}|›Ø¨s?/£ŤÞqM´cªËÐì~½Ž›í‚øôß15aó4ïüS(ª”eWÚw¾ß›pE~ž ÔC€ó½O© ÏR'˜f{^Ч&žnƒªInA&a¼ÅÃÉßq¼„¦ó7O_çûïj¨S§xq|.'\;_s”?5OÒ ÌN¢83†KuçX÷]º;¶0›<)¼ówh6Þë1ïJî ÷‹Ç5™b—P||>Äytå-”Âå1õ¥~ê ¼þ;Ù£Ž;®u.îæÞ…®ª¨ØÔax¿eQÔ€9¥ßŸ9e½™wDi޼4E~¡Û92‹ÈóLSéy(¦RëŽýƬÂÙpùÇÁJr©‡Mϱ}‚•Sgmp¿w*Ê‘K8†æ–`Ê%}d/_+.ÿ=tì5o êï£ÖÑúÏXTzo²ýÔ(„ÞÇkÓ}T4aƒmyPuŒ1=º Iœãeô8Wgo2FÑ2‡Þ…9mÏõ½avÂ3¨˜|.ö3§C‹©¤‰úLìrh*Jš¨Q´´ç”“Ñý£Êe”â¹q'¡©d‘%læ¬ír!Š¡f‰ÃDèSÓZ£ÙÞß^JÂÏNJs©˜¬Ÿ~öÔûæ­ÁX-TN¥ :OËš©f.¯\‚›F'™X<—?›75á)h:éÛ‰Þ~ߊUu–ÐRÒ›{ “¸ö›ž\³ó–½C™O—„ö:§{¬ÆMÏŠT™^°ÚxØw>¸á¯C \q4\¬ÁÖ¿ùé?¨ƒÜ~ý ¥îÝós¶¿›ßy7<„ηÐxVk6=vÆâmh*ý1TˆrimÏî©À“r&Ä–@“ƒØi{N+•Á¡$AÊ#ìê.H15Á3¯æX ¬&pŸX33`"Ô1#kÜBÁCíX¬Ã6=*R°äýŒîP‡y&üÆö Ü;aO­5‘Åšwn+zæjo5 ûÓè¾Óµf¾Â=k㊅÷<¼¿6øWUÐð}'DZ»ëöE­Çƒ¦Ñ°¾G¨rw\£#M5±'­K"®M¸ÇÔÛõ«¿µ»ö÷¦À½ý©³°ª&Ú× 0Û)%Ù+kž²ìð€Ý—T R^mWŠÍzÿ’zw&•üæÊÌ75ب”ª#5iˤIn à™¦‡dj)¡ÔܨțpTfñ°b4éØ7æ”G½‹H¿>µí9*Vz´=gÎ⢘Ã$F˜LoKtðŒS§¾îÁéx—dµLèwá¨õè.c½D Î£ù•µ¶KPò´%*>1ö!ÐP[éi‡.¨'·Ó¥i˜lšŸS¥gRuœz ñ°pcQ²9,i2o9LŠYPëÀF$›øã¬©)·‘I¹PâÌaV®\£{L»Ä…Ž(\|$:º_jC3ñüáè”9 ®W^‰ŽHFÑA¹C_0"« ìíú½¥“@›šC0Ú" ~)k™Tßmð³¤sþ™Zƒ{‡2ÕµBP™]-\/SÍi¡œ6ðb:ÐS.‹½³«w0Îõy¨]L9€Þ¹)¨RdO“•ΞêϱN“Ò\¯â©tR.Ч¦왫Ce»#Aï^B‡oPp²È§TC ‹‚OªA«â`@‹¸UüÍiâàâxI>¶Î?­ŠJ“Vl-º†KÂÛÄ5¹Ì’u þ½#¬³ìA6zþ' ÷”ˤÙC²Ò™ fɦeíKµÃÒ<¬sÐBd ø{Üi*:q‡Mã9 ˜ˆ:–íqkfÁÝ{¢ Æ5A\fƵŔ¾#54[Þ3˜‰˜µƒàÊ®;·Ô®êS±jP0Ù±†Ë”Jà¬%.˜9¯šŠõ%ÅÁб*ºÚy~v“vlÂk-‹°@y¹¡uÀúïêãª7*‰ î%zsa…Æ®î=+-"wXØ i'¸Æõ<§V õ,íoú¾“(w®IC•iSIƨû–¬AGÁº9AX & Y2æì}kN†vsÇ {L`jªæ=×+gh¨î°Ö"¹î‰îÌ|Ò~¬æçÆûBk°6ˆÎbêãÌ×0H3ÿý½Ùl/ó)?Uº¯6ø:š\´é‘Ô ¦]ìhîQð|LŠàJ-‚ö ý½÷æfu–÷Èԡݱ”ެÁ³Dú޳ÁXÏ|pöúÎogÇÕ{Rt Yn—z;Õ†öÙ}Áð¹ªI0SëµÔ¸©Z•¦&…Kf)ÏRÁLjJfR¬§0Iô$ÊÒÛg{¬{®åkÚÜj®ˆµŠDG¦º®5HµÈI”@Þ<Ïó ìå.ã*K²g z-ë#«CFI`1naW7ÿÆmÂI°ðo¡ñÌαìýTŠ *òW ˜¤)ÜëÖhþl¹§Ñ˜;ÁaMêš#SÃÀ*wšaKÇ”u‚ÙCÏPQ‰ûàJÃX„ýó$½?Š n"SrL×3gë\8I§üsEmÏV!ÑÒñ14»—ÿˆg/œxçThÚ)ReÁòT™´ûÕTýUtEºC“zšô©M}6J8ô5÷…:ÚÐð4Hac]Ëù>hd I‰«X™|ò=}zNá& Íz–ØTÍ;\)°·Ã¶¢D›zØ,ãÒ7¶÷XÄF^ï˜rýõe5s`NË’pa=.À³áêݳÃdG¯¨¨ö»Þ…Ï|¯–Y`/WUk‰Â]²¤¹G;û\\A½ê¤ŸÝ„µ¤Ê³YõCjN‘ öî%ã™2çåà<õ5ÞÜ$Ó½»’={ VuDéØÕ ®b½×C§kÊ1GÇÓ®ÏÆSѰ1žIr¨KåÎgUÔïèc9Û—wOÜ}MÆÎÞå‚OÝÄO¥ï¬HyžfªÑ N%›úsÔ5v\Ú>íSŠ æš‘5᧦Z’ʉ…8F°Iß™NÀ{tad[ê[Pá¤Éƒ$KxfÒïÝŽŸÅõúgÓjpú:ÙÃjL?Ãc {E#0çjªÈðY$UŠ1Õx9ÿLkXÿˆŽZ-S2K™+æ½ó!UÅŽüž:b9šŠÊ‰…˜ ;ËtÉ>z窊(Nd§Fû±:‰:•®’9. %D#U¨¶…2U*ÚÃA…vï³°p~îB‡‰ ¡ %Êž¹h=;Ód±eúÕ9Aîœ/6Á%Ù61oOJµ4ƒ6è¦HÿÔÒR°‡¨Â¶GØrÑæ¿’EZ•Óö¥й’EÃ\ª6X¼ÝC {6jQÜÌ„š·YŠÐVÓQƒŽ-°›¯µ99IDk’²J@kfí £!Úb (6¥R Òä#“×ôú©"·`´ Ë“K<-5àa»'¢ƒqW‹ð¥`Å¿ óŒ’cTø˜ BšºRMR i+ Æeеãic2´Äa|¨|Ç&âRAgC®!¨ÆÇ’©ÐÖ`~a ­hêë•&ÔÜc âáòk‹ƒ{Ø€ÀÞ¡öo×ìÓÓI½t *û5¬Áš¸RÂô‚Ì(TS®þÔà÷îÀQp­7š2¼óy Ø ‚Þä‰Ñ±5TȉaË»Øß4wÐgc%òê™&ËSM¶±ŸcÞ`£æŽÃôÔ&è}㊀½ãWJ¥Úßø…Ó¿Å)H%ôÔèÕ]y*k(®­ìÒQa0“¨'ÌíÖãx˜¯R;lc”δB”C(f{S¤^3 ¢Fƒ ¤v$X©(WñŽ‘Ec6Ãí÷—d"ónÇ䤿pÄ¢  pÚ¯¯=«˜´¢0?Y ú½W@\hÞ¢7Æö·†T¨ª–ä‚X_Q¾ÞÁI„‚TDl1*„òȘS©¢É…1DlЖ• ì­*ª•¡ÚÐþ^p¤ÙOýMÇ-UÒÒtëÏœï,¸Íî÷SÛõ73úÞ¥š Ë'UTôu\¨´ÅI†µà‘"¥ùùÒ÷¦'‘ä~i¶×wTt˜Ô'0t zjìî4Nnµ¢¾‰Êˆ]­ˆLÕ@÷:i\à))Û£’ùKÞ/ .1´R–û5Aб¿q¸ Âü|éü¦ÝØq`K´LÓ4Áþ™œwLîé:—\Þì/‘Dγzج¿&OfïaÃ¹à ‚ AwɽÎ’B…æL͵ÁÔ´…UïŠ-³Á§6´Z&ÇæÆÁ5ýxRbB±º’”j1*§pob(uÑ£Ôš¬ÌƒºwI¨Ó)ÓÖ‚’ÀBŒÂ[«${hÇd.Ž–hÞôgNc‹)æÄ;­5š·„ÿ);¿‡&š´ÇS¦‚Oÿ`hŠëI"ÞQõæFAl‡Vi¿W,ïØt~SÔ_ ÄŸä:Îf=]nŒXÖNt²×<¦vjîpÅ_ÙSS/[; _-‹ îåŸ#5Üeâ˜êÅ/XZÉ“’Þy¬5JÚÇZJìÆ‘X’@Án÷WèˆÀ1«¡ñ\9¦[3ÒIp{ÈÊ3–þžëÀp¨à¾Q€ªî·í÷ŒÇL]Æt¼æzÜ€ÞNLgÁÀ…d㌸(÷ÍÄ£©G‘ÞÖ¶˜â€s8óxÀfïkà÷½Ž¥l‡} ®Š½’´ç(¤xнF}_ƒ½Æ®ÖJ scŠq™x©³ú´ö²†ƒ¡ÀJõ[³ªô)Í¥I“Ö1-ÜË+ØkžzЖ‰qR».$$2™´!&U¾ XïÄ:Å]*æ¬+$šz(WY S–îiصÀ.ÅŽ–Ò~‘*AíÓÊqS*ÚA/êz°”KNy»®¡3ìýª•ûÚàܼ*¥\ýv÷hE&Á?*uäNsD†Ä)¨9c +ØA¯ M, K²MXËyR*´øg‹—5I²;XL´p±"aŠû`G‘)Mtد1M-hqàaÑð3¥†wÓwÖ [)Ã)¶¢Üt®Tn3Ô®£%,kŠ ’PšëAâå°ž‰„p·§i¥R¹~Y¯ÏÆÙLY½"Š"SâÂø†Mô…\wrí“.Š=¨”‰¬4<2Áó{„E1ýl‰4ÐÖÁTî@ÿMW£Õ‚Ö9O I>)…Þ/îÍIÓàÎPÒIÂ`þ’÷j=©Ž¹º\ì Ú69õ]~Z,$‡¿Rx(Ør*q1®¡®!6&Rô©í’ŠyiEcu¬Ž"ªþîŽ {ýxêÁè%ËŒzŽ-¡ÃîÜ’ú¥ã`MgbÑÖ` Ì!·}wÄà †Ö &ÉMxÇ& ÝZhîàÖŽÔ8FÊ7©ÆÕo…xQ²ˆÕ!uàfXÌ”Jü/ßi”ŸxGÊâ–– ™{ÔÓ¢©¡ÊÔÛc—PÊA@Ð S§ÚT,½7oîÍ Ó½q`"ì 5Áþ ŒL&õ8ÃÚ±K§5õslb£ß:^¡Öx›ªc-QSs%É‚‰LÚ2QLzÁÛ!e>nQ)¹w(ShT)æz`”ì¨v Ö‘VÂÖš,ßr¢®¦ YÁ“‹…N¥¥£‡©æ…œÂcÝ÷»ùL“Rȧw ¢²¢sÅ>0ón_çœAÚ#SH¦´¬#˜ÊæÍ`¿Á•ºƒv qèŠ[–tv—ÄMöæ¸ ÍíJ^ˆê<í L<ÊøO½8óþ·÷²·ï>ëJ hsÒ0-'…á¿ÿéý÷ï_3ÙW63ò>®_ííg?üö?ÿæÛ7ïÒìÛøòç·ßüzÿÛþãí?þ°oáoùý—û~ËjéüêíŸoå/o5æ%ççïïÏ5 Y¿¿¿ÿ¯??¿ÿíçAZ0y¿ÿ…®±Ä÷ïÿæ7œ 4ïÏ_cŠÄÿùñó—ߨIfÔÏoœŸ¿þFÉ8úüøùëoÔéí¹Ï߈Ÿ¿þFÜûço|~_ zþßýðožÿßýu¯•kEO|úÿMêç–4-¡èËeÿk_0ÏJû1W¯yYAûµüÔ«k}÷ÓG»WÿÈuúÒâû/vRYæEnÍ%5›÷DÊ*h~è—ïBµî¯KòÙ²–'(µ$TîÖV}©—Ŭ˒‹“ˆüÕÀyw¦™ù1±ª¢ :¤²„8ý½“y¦¿pÅù‰0&Z6U‹–%¥Ù­ÿƒ¥…ª|õ Úã„_^˜D„º5JYtLtÏÄÕºB7ߢ`ªþâf,Z”ÓzFm‘\¢`%ÛwµéÑÍW_ójYÂô@‡¬z8¢AÍÆ}ó)nõiKõ L¡e•“©ûë¸^£Ùˆ6¬EvaHÑÍsa2ÍWÕç›zl¿ÏÛpCg\м.Á'¿£M‰f#Ê.JŽœ6!ÅIï³jßÉIÿô­2PS&žb´AB冣¶…ÅÀ˜DïU¦®pê÷RŸr¾8‹òŸ¬ùó±ju¢Ë§Ïe<\°Þ…Z¤þØÚ/ïqÊZÆ_œzaò²þÝGŠ,…JÉ^V5j:ÓÎaðâí"=Ap¹Ÿ¹hÃ’ìÂrŸIí€‹Ž ïïæHÌPn#àìòy£“ªpïúÙïê:LMFÄPËmé ¢©P=Å› ªù;<"íœqhÇUouê hST¿Ó¤Ô‡ C3)R Ý®­¤²|$½SJ"­bÝÔd͇é«UIJJ»nÚ·è”iÑ`g> ·OëS|ôÝKdñ,=P÷¨"É£SFIƒ*ÉJÝ^XÇy¬Ûûq5{œP 7쑟¡Æ‹2ŠóäŒ[#цEe`Š~Ý„9­„9üÁ°IàĤ|ÑZ|:kuŠÚãßuÌz\nl¿{jT"µ…µLNú¯,òâöNÍë–²?ýòY/€¥^E.}w2‡Õ›Zó é4£–)¶¡úˆ™"¤ŽëÐ~—׃WÐ¤í£–I`Q³qŸ弈ú¨#2$´hÕ-,³¢yÜJyZÐ})rŒ¤¥×U“÷î«ÎzdH¨‚nÑîcÌ:uÈ-ŠPøä-­ Ž[ý˜ð¥Oºµj£û#`ß½,“a‰ý©õÁܾ5Y/ ¼D†TÃÎ&æéQ£Ë#Ö%ÆÀõÄÌḞ2©Ä<±á‚ǺEi½g•ÙhC˜…ò\Gb68Q‚îB„4'R4`Ó)U­:6ÚPñªO‡nF—˜6–º*)¸l|ÃæÁ6l‘Nž‘,£nQ¿ª"=Äæx¨åµK祚Œ80²+1c­»‰Ëç“G)ÍPj¤.p L‰=\ìXGd1…Nzý¬w!I_'´ÈP‡œ(k©ã2.XœïÑî£å€òÔ¬O+ ÿƒŒ°½_—LS!vóʉ-EvÞîÃÓÎÀ7Æ›Øu p'«"EÐÚEsجÙÄÞ· i£.ð|ïÑ-l°GÝ‚nÚ ðíƒb²Q_»´G#b2p`­23OmضyÇé5£´ð4™3|ò-©{•+Z¬Oë½JebŽ˜´6Ä€™Õ:¤ˆÐI™A·†ôþÌÄ« 'qQ‰Ñ“ŸQ2·Ÿa¦tC öâͰ{ÐïwgÓ§@6¢X'EOïX´©Ï$”ì÷]û®`. ÙD‘÷£Åè Õq9ú6l"æoLÎ 0Rîxª"ÉšoÊ…‹56“ºƒ•Œ4ò…›Ú9DèöP”ü0¼M z‹´žÛ”‚ñ´~ʈ…œeÇúóñÝÙ7*ho´Â|~— Ü ”1>lÖᦞ#êÛ5•´W¼¢“| ©h ¼„Þ§¸·ûâˆD«Î‡‰AÞ'Y¥ê€èU2Ji¾¬L6ýB'™Õ”º£"&T]HtbTâ¹ iñí]â ã|ªw¿³ËcÕíï@¤BÔßïN‡¥Î @[fh¨PÉ Îä„‹ÙÌd‰Šªw©Bï ;¬LvDŽh°OöÞK8Ï4ºý…+=`ÃDÐN9Ùé*eðöþa"'øâNÓ©AFª¢•5ÏÇŠÇŽb…êaà0—)EÌ¢¨NŸÃfH³ ¯„fà¼Åw  ±sX*L4íCheŠ]]-«ˆV6kÑæ…ò4®Î Äêé”!q¾Å)c rÀG ™ŽZ³3B/NjZÞºbŸ.MQCa!f4ò4ZaRêâm¡ñ‚Râòw“JTÍßKÇt3äqµð<‚Äúu>‰÷ŽÀ©<éÝ+±ŽZÜzïQA£hS4Pu-ZÁ»TÇ¡¦ÓÒw°Ìpå°2 ŠïåÀ1§]i„Äw'¶ÎšŒ,elÙ¬àþW6DN#@# ^.{´`RÚ,¨bä„M'¯câÔ¾WZ6´_wä2È`Eõ¬`Ež¼YàÖ«‘$¶ãRh¸%f)Ø~Ì&”x­YA#ìÜ®ÈjG7/•AP5¡¬Ä#-+…‚—á0ÑQS‰O·IO•BI€XLt ÙÔQùïuÿ…¬@åážQNÔŸw•2Ö‘„Xrzt=äm+¬¨ëxœ§*ˆlþn1PËg5Eh-¬’RSµoyÿÊ MÌÚÈÑ|`<èuÙ÷h°RVКJ“RK}Z—M ²‡Ž=¯ú¯Pvž Jgæd(Å‚WhÔÑòÊPÆÜ«‰ågrr9UR á÷g¤ÅÔqÍFƾ—hŸ²JˆêìÁaˆ—P„Þ‹…ÊHøl✰†Ã… µ>zØÙ9Bî’â.–Sϯaï¢D§”ñeRdÔÌ5ý°ï±Z¦«ëTiµ°y ÚEcÑ&Ÿá‚ÜÀ€.øš‡Ó@uJáåY’ÞõCó÷ O[«gH¨ávÉ}dÃv!™‹k6öå ÷gó¸øù†±3&#LxpŠ»"ö½ÂLrŽšži. VÇØ AÌ ƒWÖ`?æiꀠRHP—£½Èòºç±j"¬y2”|ÌíNĘÂL÷>Y9àjÊÑxA.­À'Mt-¯yÏ*ôäG€FК/ÃóIFÀ¼Î¹;¹Dµ™Õ\h°r22Õ¨›U` 3üôµ {q3”…˜Û™¤©*€Ã…:.ð¼wBÉôeUHæÄHÜj: àŒrRn߆Öq}bV¦rÚ@°3é¿⺠íwé+“©*{N³RHÜ?¤˜~]¾®F,!·àAˆö M§Ìº…’'%»ùàA³@-ªŠïIJ,i zkQ””®xEå@¡~OÿB‹›Zmú6‡'INJŽpQàx†B,m¸zÝ€Š-V]á"«é¦¶¨åU¢ÕÉð6Ç™ÎãVXuÀéMñè:: }¹y9PæŒÌçÉ¢õÑFˆï!ÄKÑ‘«çT5fЇUòƒ˜Ì:_´ž•<9¤1²Öò ŽX¦5ì‘ÃʘVY×E¦²îAH°H{ä°+ÿËt¦’RL6A{E°L8“*ÑldøùIiÁ-îOžøÍ‚ÕïÇE’Yƒ÷sèòâùèò"üµôçQ VÍëÝÅì}  º×°•âëft‰+3M /!Üàh£lc!¯ ÉhÉî¸ÝB†)ít‚òìûE-Æã>O%#p¢ûê!qC²Å§3 y 6tö‰6¡h•0Öéˆ,ðÑ5IF`0pÔq‰aÔòJ :èÉ{œH1‡†Î9ú´”zPbÈ8b‚¨I ¥ÁÆun'œÇ¥h>°ù{öŒÚCA¼H¸ Þ€ËÒƒ«6™/3½÷r•ÿÙ†µP„^{P…îƒ$/_ìG׈MF,4:lû„²Ðª,Ú„ØÃÑèa-¯Èi™ëÁ ÔGÃÂDó ™aë#…(Ó-¬Ác绘È9rGí݃ʱ…í@СŠÚ¢cbÈ$e.˜×(0TZ˜œ²eŽça¤íãbCY i_ÆDW!– ÐåÀÐRHôùc¹ÁÂÅÑÞ§ ôóä¡Á«(f‚…rðe Èj8þ¨gh+3ø‘ )Ðáe~RÈ«<÷×!ÁªJ5_†(· WbŸ-¡¼®i„íªXh¿k¹ù#`â<+øï J>¦˜¿C“ÓÚÂf”}wñ¤J–6Z%í[ƒ …Sàm˜eC½<)4OñÂñósXv¶‡©D‹‘Wæ°=ÀÿL!ÖS*±23‹uy…»APh»£ mÊCæEZ¡Ê#®<&R„¡#Ü Ôöi±e:ÌëŽÿû`qÞ%ÿcß2$sÕ1Q˜§’æ°=P;}†‰”ì“ã&¨pÁÑòÂÅHHÀ1Gæ3YXˆ,(¨Ð§›Èû™ù¿W[”ڄ‰Ù?höÝS¤'#s¢£¡…ÚAC¥ðÖ)…A‘ÙCÍœJ}.ÞhuÃÀþCÜ2½nawµy+î”öúBfÕÃá%1^dµ8eç¥Àœ Aj•šU¿›3¿ÛH!¦Mý"Cœ'APh‘f?v=Èõš×£ xû^Ó\Z …xyŽæ«ßsŒ2™–—Ô6BЉ2Y«‰!+ëdhÕi«‚Š¥AöapÜq5³dRFíþqhžÕ¤=FÚe -Äj8û0ô¾ÅvÁîAŽ÷¾à`åh°W\€¯ˆ6„µqI;ä1ÈJ %p(ñÚ„Ó‘²JY½0zÔ|ðQæ4öÞëiuRù»«¶y]90Þ;u²‚tÈý‘‡’éÏKÏjJÏŠ5™g8uv¬õ! 8&é,¼M¼?¦å5„%®™ñ&Êÿ_Ú™ëØriØï§h“4f”‘™•‹KH€Äd4ñŽ!p/gôúsbËÓäW_"Ñì.:µdFüñ/6@ׇ´Z„œ68\ãJ…Þ>áéT »;ý¶ÿz\·˜QÚ„ 3âÄtÝ5U®žÄ ³órNÕ:î]XÀ«½©ö5:êûÍæqKÄ»Èék" 5ã «[&ƒy»;È5î{˜#âÓV¹Pee»ÓöÝwÏ ,ªq—y2Kƒó¸tô¾k'åº SbžÆ‹¥iÔ>‹d–ód £“6N< UëþMF±œÐE͸,®0J6ÎsôQÄC•j†žùáÆfëˆ3^¨uÛ¤œü®|ï€fRÓ=Ü:R*Å%§2êHvÕ­Žm‘ÝÂ2*³p7oŸmÜ k›íAÞìÓ½›PûB˜;°çQk(Òp÷¨‡mnÆER󆙶[°é€«6D˜û}3¨¬Näm׬æHìm­uÖ>®AÊJq§P3©qÚèSjˆYA½Œ âܸ€MFšÏ"¡WÄ‘“ ß÷ˆ`c˜uÓiPøp9‡1™Õjb`€=¨ë¦á‡A!q#p°bšÐ‰zX#ìdª!Ô(^{µ)iÚÀš‘á–$w¿ï,0Âè]Î!g–ÎÖÀ™Ì n„‹ŠbÖ€ïc#¨s»ñ 2œ”å)' ™§SVèT­—Q ¢ëÈp¶ g‘ÛU™Ö´Õ¦žûˆÞ÷°€cÎÿ#íq˜“ØÒÖ§iÔ^£Nª:ÇL%ð»IÊ* í…eáwŠïÚC;Øc£‘}Ã$ä,‘y¹‘xƒ+­8ô!ÌŒK­†ý‹mR—3™ uFš±åŒFìqÇ)½:«¬ª}z$v°÷}¹Õ „¸#ñê&¶È£’XÙa/E2Ô˜%2KÆQÑ(íåÎÀˆÕYÍxÞ(jPvQüÍAã{˸nÅQ#&x +°'àÍåóp*$âÍÂŽÐ5\hYèËK·)¾PÈhïߎdŠp[VYkFu5Q¿ü_hª‹•Óqia6\ȌƸZ k4E¦Gu@&³S‘M…rÛ=ØÆm–KÌVÙSµ¶ mb¼$F{\+>Œ8ѶͤքUe÷QæbÚÿîjÜÉRN,«¡š•Ý"/wBØ…WV1¢(±Í")ëc` ºEp{3ÂXÜÕ+ÙìÒ•âûû„ ö–ÖÌÊ· wÁ¯ÌeÈÉ¢ŒÖf:h™ÐÂ}»r•…¶?T‡í Ù¦/O[†[ûR^¥qN,0<ó6\ðMŠ¥Ÿ^†^òÑg1âÝf:ì&šK*Ã*ÕóÏ­Ôm:rBùuWÌ&`I<Å}D„–é†Ò ¡S7Q©nbd( 9­°C£ÑjJdól„½Lwræ’*º;ÙÉCrÙœ†­ÉÂ\b£mDúü ­T¨Î»Ü`vAzD° {㔚è:)–N{å{Ëò&|¬ìmwræ&^ýRZ•‚n'AòmÚ2»ýäÒuk…ê„Ý„ˆ{u v×™¾[P‡XS*1›MPï ÝqB§øh¨´Ó)Ù&(ë£bÂL˜1ëD‹Uõd^Ï}DKe‹T o(¿®9ÃmB^¥çE–…R9ó9i ·©ÎxÙ1™•ºà .Š%ªâ<«=ܺRÁØ‚ÒÜ%•z÷YÞ„Ýþß{aÿòúO£9—õ*×¥U”ø#"Å|~÷ú·×üÏæ¥§ WÑË(b iK¢xþÙËÞÿõŸ½~þ勊ÚçñæŸ_~þçÇ}Ô ÿzùêëÇ)|û"¯_<þ÷1ÜŸ^~}*ß¿´e.ìñówùs½¦._ßåßÿöçó÷_~ì¼uÖS[ÏÇÇ/ìÿاdPƒqšÅsÅQ¡ðxþôäQºR7 ¼~:Ën´çV?agVéáèå©6‚Çß]%~ã˜ñe×WËNžTxkû뺠øDôcécc©LÛg"„êO݆8¥͔^yüYqìχ§©ØÆu³ò!äf»iomÄþNh‚ZçL Žu†ðÁŠ›Û3Zàåu¡ |¸ð3oÁþʰxcQj,^çÝ7Ó+Òˆm‹³…ê3-Ät3¨ó¢ö ÕûwÞ Û7hAùÔá6b®ÜºT²§n%¼Ï, –®Rw^™Ë± öÂöØQ|Bâ´”²R½º 7®&q‚‰$[`f÷rœÇ† §4b.½âõü†¼^sN0Ä í2—Þ1~å;?6Õ€:ÜÇyŒ½¶lZœ<Çybb3ìà3ßý}g#ìëyVQÛ¿Ù}øZÇ2?šoÐ|XÍÙœ•]:—ýØ:Õ1¾g£Ì•½ £[ôf>Ärq±èGãL<\0¯’Å9'¥'IŒq—nì”餬NE u(¾I”*gC„/ ‡ÀY¤oƒÇ'ÜÇFZ§ d³È+á}Êú¸nPR[ÍÙ- ·/ÔŸ7ÅÍÄ`£™†>±‹RùpÁ3~¬ž‡í¬uìÆIÒqÙ ºf/æÝ‘RVQ[:ñL*2ମƒy»CQë¶T>+êt³ g><›ô{¤-+x9“gűŸN¼äLˆ/,yh«¹ÀéÉd=ûwVœt‡û`#¦E7nœ#/ÌîÓ+‹«mŠƒÚµ îïg¹`¡\9a„æÞo€ÕËø€«¦—ÜZôÂ^÷è,>‡]ÐV»™Bȇq‰1ÈܵûÄì¾G=è#ÿ/çsUp Ùze®”Y1ØG²gGÓxÔZÛ@ÏÐ@ ™zw¹ ·oHÌ ¦jÅZGÑ±Ë ä •ÿ×”•rÊBTUn]à)QÊ4#w`Þn뼎2ѽêdã¼–£L–¾°’–I€óÛ¤He¥Ñ1ý'ð¾"ä6‹„ämxmCBvÍšªÞ@ Gò¨ÑDLð…O>œN±Ä¬Ù ŽëeÌGKNZNBÙS·ý¡… 5u®l!Wö~廌ZÍÆþŽ^™’—Ž1^,샊¸Õ;Rq›9`êƒÈ£Ž´T»ï°,Á0¯¡…QQ£=΂¥1>ÿØeöAnìŠÏ eÊNÊ ãÇ©‡(…jÅmœíƒVZY²¢Ô Sì……i+²0Û'¬È­¶¡p_ fPšP‚¨B-H#,uC²›`¢o…t6xVÓÇ÷2^zê¤äDÊ©m u!Pbf›Ðò}guÏ¥’ZÍF/C›Ðz‡ñ2|½Ù©äÿ‹wMݯëàZ« S&š12· ëß!§Ô"?ƒÉ g‘-phth1¼‚ˆ*+ Ùµ+G‰,!oiÂvØ™¨³WîÞ„n Q ä–¶2R;@‘Ò Ì yÝžiê‹á–P›YÄ”šm =¼Ö[ÅÉ*³Òø<ëß'my‚ûªY•r°qä3τ̒K%šA÷Øe&t¢)«dÑÍÑÂ…Þ÷ã¦Õ0mC!§ƒ_mQê(•Èk·ëzàöw°$6ia½1š©‹d´ýˆ‰¨‡½¼‹¤m %KaíÀs"ƶÈiòyª«#ÍyØw_©¾Gn­Ý8J²`Àp}ª2iŠ^ÐqÉZ'ñÝ)Äm+÷Ánbî‹•ÔÚB ½>Ât‘Ú¤„óò:u¤>ŠÒ(ÌØü}ç\†‘ÄŠ]:ýtÊ|ð7%Šï¤FÄÈãáÆð:I£öÝ÷!NÀt¥@J™qA×ÅœÒZsIµBõ†½m->Pƒ1·ê)ÕÚa‹b7+NJ?ì>2פ¬ Mª4¿ïG]Ÿ,}Á©B ò+ímÙ.Ó³buÝ•{b¸)qbcÅŠÉëâ}‡u˜6°=.lÐè•_l„”•Pߣ¢´îÜ ™xMÝ ®X~òŒõ1“éÄ8fËkÚIyªkªmzÚœ2µNqÑdž‰#-OžÚãÈâLær<Y0•­‘p3=lè¤ Ìê{Ê¥}æs‡ežNÖMćê:KÕÂŒ—j¤kF¨¼Ü߇ó?'ÈmŽU¦ú^Ÿ:ê®ã£LVQ÷äQ³éÀ±9e„Ø+·Hæõq¡=,#`ª19Þ€£¨M‚7ö¸’ÆÂŒ¶ÑSµÁlRú¡aÃ<3Ù7Ü2-&_ùǧ؈3M|h7¨ Å9¥F?–ܤ˜_åöy5l>‹¬°égÅ(èGZHèy&!¿áSZvVVLfU5"}œ ç]H9N#èÊKŽ6HYhv¼¨Z'™ÌÐY(\R©x àU+‡ L^×Ò‡œŽ2/Ÿ„2ÂLK"4š¿/yé6M•û¹ŒGÚ)+³r€]g‘¿ïVœø ËüiÛ±ƒ™ Õ§B̸`xµBZÏ›TIr ³ŒèikÌ/ݵð}×d¿ï ³ZIÛ`©™ÅÁF&£6ߟˆ1úNÑzakóö_ «’ëeµ ó–Sœ@úØ|¬#’R _åN‹C6½› ¡HåÈm(v±ð,R¿{8‰1[$I[c4‹,žN‰­BzšiÓ&4Nu‹Uèa‘×Gu9í`áÊæí#üÓuˆ\0¿ÎŒ BÇ÷AÓbaê+Ç÷l‹¼r­CˆÙcµ ò?c¸INafœì2 †m‘=]•˜_¥dΰ‹Ë7hUŽÛ+‰’ÊJÅ ASôàN(Ò±Ãb©ÄNë&E—]ùrñœˆ±¸ë¨2!Ä]î•FAÃF&-RßÆÓŒÎÝó¤æwGJdmÿ£¶„™œM@C顇ÐÎz:^G%ä3v_?tÐçN#ÖÜnØ_)lḋ+™NȬC\}=™|¸9 9ó9ÙééÄ2Я´ÇA9#rÚÆ%.GcJšóçiŒxXF0ãÁš1Œgµ¼X°8iiÝ´Bõ$uÒ¬ŒhqœGj\zé’Šöwq· æwaÆ ¬<}-ß Uôq£ž—™ŽÐhoÍÙ}t­+ék„f2ÓÓ ;È æÛhšK%…¼æ-nam7BÔˆMÀ§½°£B±OK'1fÐSµÁr=ѶÃza¦¤tò㎫’Â}’œ…ʘq̼²bUåI|`ó÷•Ð.¬ƒ×Ñù{Ø :¸¬ <òy dì0<SzøÛ ]¦¦ÄŒYHêe˜jc¦·2˜­æ D äßX…P·àÏ£…ºy°¯²}ÐábC%Ž“©Äg¬‡œÕ´5Í6YöNý;ÃiKÎß‘f¤õ3§:)¿ò”oï;ƒ>®Ì eA`;‹&!¯)t"OqÖ °qgH #‰=ó"aÖÆUo8N”¤2s׈© Á}#£´™ÇKw¨“6b3µtRk_Ÿˆ±u~¤ç‹m)5b¡ÆÁxÙÐXX’͋Ѓړ{À«y.:üJò?óò*Îú€Áâô<˜•yžyJ8b^FA_9“b”ÔË7hêc6ì…¥ñ4²s¬ƒú8½t^Q“œPÛ¤‚{@ÉBך¶§ß‹-è¹\0{œ™®JŒÑúdû@Jjxó²-²gÇV›£›`éuÇî’q {Ö´l"6}—aQÚoTŒ-Ît*? '™ëB9f›è䃶AÉÿ3g,jóÊHeÖˆ;êæÍ{ƒºˆ™Þw(ꌤöÆ==ÜÌ+™ÜGäušèWžEiK*VØ=s ÆàWbÔ4j3¢yXâC˜¨Ãyœ’À;âÚS2Ñr¡D©(˜>®ä‹´md‚óöy6bΈªTKû’a¢Mÿã±A µ$ÈÌìëw–…»x’ĘÃÌô–I‰­¹a õœŒ€Ý¢6oð¨x霮3ÍGu‘”ÙxE8ì&b‡%í€îq}ax_›uÝxêN¶‹æé™HÀ£ýg‚Ö’ÔD4L¬ã@hŸ©c¬ÎšÌ¶Ö]I×Ao\›94J;ü¬ÐhÃÝ´”ª ±±X1¼®¤C,&sÖ¿oˆ¡³–‹ 1wõ=Ž`›9AªâÁ7œb”É4¡Ó‡7®Ì\¬X0¤Q ³Ç1/V畞Œ:_›çEV¯¨Ç€ð™žì}¯§ …÷=\‘©£TÈm£UkÚ´Ìô`¨›Ø „t” ÕëaOn UßטQîÁä\#í¤n'ºXùÍb FÚ"1êÂ<Þ}0̺Þyãä8J‘ûî“sÚY_™bƱžèc¼\© Eº‰2Ò¸€‰>Ä0jí&(%U^¹€ýÊýé㦫q lKÞ8DY©nL4 ¤vË êÜBG…°ÏptHAÏnb1£Ñ:ÒŸ–-VÝ·‰ÆyºIE: p¯Çà â´yéP=oöçUunè…½ÒÛŭ铘ð"%Q#&«÷Ú9ˆZ.v*f¥‰ïq"‰œ0Ĭæpióó|XÇ„ ®uu`€Ý&#QÂh]霒ÚzjBqœt­èÒÙ¿øDL¼g¹BÆâ‡:õqÓQf÷&”Ùa‰«°)Ûgû£háHÍš€WŸË@¯N}a#å„ÀEV&¬mª÷2£C—•qhè±Ùé ÌÆ:5§¤ª4+°Z`iƒYÞÃÂ,l¤V¾Î×Ã1Ce¡ÞwÁ”T3˜ Ç D‹HeaÛÄ£ýïaݳóÂHœÝwI胅¡4Úa-px6²-rÐ E^ŠÏÇlÉmêùtÄhÝëì°ð±¹¸Ï‰1ZC‰ §Q]PôpE¦™‰wH¡eç•GÝDn8¹qˆyœ<âœè\æÂ‚Vód¾v©ÐÇÅV¼t 2ë.So`Õ 3T+$!·¡ÕÅ•ø<‹T¾’¢†0+uÀ ½ïõ–oᣋŒè=æ=²£ôûÜìÓ³—A‡°»6œA·”Ï3ÇHñÇ2ô¾‡>5#;ã*åœxeE}ÈåÎ&USÈp›’ŽÐŒü/9‡etK×DÆl¼rN+ZYσF2j2{AÎ"™œŠ< óâ®Û=غm¬,B.‡kÄœFZ’Ð º•ÔA#˜·mŸI 3.POf_çQMÛ];™•ªdE)£¬XAîßyq×$³©¤°‘1ZO~˘§Þ}±XÑqÞ7°Ê–í›IÕ[èírñ~Å•Uè  ÓÉx±M Ãk&°3ˈ–À c÷´öe ³sNFÅp±I±‰ØéeÓ)ðwØž1%Ô1rÞ¡a÷2³v@’ᆠò»¤ÆDu~Ê Kg÷5‚ ­otô•‰y I9;sYq%²n‘p.ÝËÆcû@Æ‹ñm| Ì©5kfL䬬H ­äÛÔ˘òò¶¶H…»&ž¬ hƒöf¬ƒ>}žö¦×]!Ÿ‡¸MxY$9)éSŠn\÷Vh&-I¯N¦Ö™éÍH#Å•J4¦¤9j—Êtœ R£jšÄ==7’c¹`ŽR- h¼l‹Ê ‘£`/-n侟¼H膭0ï !³œ§aVµ§G+Ü”ºÐ9÷ ¸‰>zÆI3 zKG)ûœ¼‰ß­.þòúÏ׺ œéÕYÅ&‹%|þüîõo¯?ø_ÍK;ÉfX¹ˆë£E{ûW/xÿ×?~öúù—/::}œÅ›~ùùŸÿõQ-üë嫯'ð틼~ñøß?^Äæ¬zùÕ‰|ÿÒ–±úüÇïòGé—–šßå_ÿöçüó/_‚0ÿw37Azüþõÿý>~ô/¨¿·³þ<Þ|óûnv[ç÷þã›ßkÚâõü½ÿøæ÷oOèœßó÷zkírþýýï\Î÷ÿáqç«ßùõŸñßýö£™Œ×z%ì$zçÏ3ó#-ˆ«¾9²~ô‘Íjèç‘í£Ô—ûígö>rU½ïÏ#¯<2žývã²×ïÀ¯ÿ`Ûë?¾ùý²qÁù½ÿøæ÷R Î>?¿ý‹jîÔÏ¿ðŸßþ…ŸÕó/žgùö<¿ö<¯Eש¿> B¿{§?tè\¼Õ:tŸü¤ß½×:Tä¨z~÷nðØvr\Îýþ¸Åìßx­”ÿóöyóŸu!xôÊ+ ¸¯>ùùÓÇg¼~òÍ/ï>ýúõ¿¾ˆsù¨OjñIý7Ÿd?kÀ||ã+2(¾úä³üåý/?óÓOï¾}ýßO_«~ìwÿóîýëÿýúÓ7?óý»_Þéé\¯Ÿ¼žÌËÿlPÇy endstream endobj 91 0 obj << /CreationDate (D:20190123142057) /ModDate (D:20190123142057) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 92 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 93 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 96 0 R >> endobj 94 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 96 0 R >> endobj 95 0 obj [/ICCBased 97 0 R] endobj 96 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 97 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 88 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F116 26 0 R /F92 16 0 R >> /XObject << /Im5 87 0 R >> /ProcSet [ /PDF /Text ] >> endobj 101 0 obj << /Length 4526 /Filter /FlateDecode >> stream xÚí\Y“¹‘~ׯ`(±ìX.ÜUëÐØ’=rxwF»/¶Ø<ºË&Û,¶ŽýõÎL$P úãøOµ©¯Äx ÇŽ7|ÞÀ1…c W#Õxw{.uÇ¥ðßÍ}±¿Àå¿Ú$Å×\¬óÅ–±íHkÌà¸õ°­{®4c"K>'íÝsØ5Q‘tm®˜‡O¾8w{Ã5ð<á|ß%bIš'ýÉüùÝ pe£GQW­i½t‘«ïàÀ¶*>*=)?-[j>P’p´p(:#Å:§õûȶ§åA4¶$Bº¼æNn¹•ÐúŽkÜ_¦ôîg€bjxˆ )ªV8O ë|à¾M˜îŠ%’(´%ŽèòþôkxòÃ@TÛO` b‚ífβܱ;Æ=ïm„hÐÙL8æOwa²·A€€~ÚÇ¡#DŠ5±Åùòáùõ»gy&ಉQkª@œd­¬ÍîžýñÏõhJµÍ蕼éÚT¦×õh=úéÙñ4õ1º‚ÊS§cvR)­Ø¾æ MG*žAáÞTsY+ >aí%²%R÷Žˆ)5Z墖̗NØwUc\Ê}/î4ÆàU48Yèo«$”ÓVg®˜Ê ‚†k EŠ–¥ðŸZð^P1Ðq˜î®†Ú‘Ì/Oßu£€vhœµ™¡X’û‡Fuk²Æ2A™ BMR¦—SÚˆÁ¤j5· ë>S͹GR‰žIòÔy'FBVíi…دª|¤‚A/Ó:¦,h¬×Dï.«Ãj; GmVq_l(† e]Zz¸¥ÛÃ`’+Uƒ‡ã£a5ú䈣=ÐiÊR¤”Žç%ÃE:"3Üâð×Êã^”¢-i¥yL¸] %¤*¡2ó^¼Ÿ¨¦­d£hõJ(‘Í£^!²ü1”-C$ PC6O‘4Úsø¶Ž€$ó’(A tú r]ffe°¡`Ãá'2Á`cˆ5ÞžÆ9tâI°†€ÛØG.ÇKk:/ÚŠ6òp^–IÎBÝ€ Õ›ãÐø¡#ì7Ôóÿ õØs¨G¢‡!Cú±Î}êÉŽ­¸U @*™”DéÀIõ?€LæÖ%ˆZ fZEü4²®‹¯Ì¥ì9—g<¾é=~"]SÆ*‚âùXå‘cã¯è4é ÂÉá¨9=gW-ÐU˜¤~Á”=JCþ±ûç n)_㦓ê”’`5¸xÞ_ÏB©@*õ×G.8™¯h/#÷¥²È…mÚãë•Ù4bUˆ5í2ŒÍBMIìÚVaçy±KðJ×˽D‚Ž~ƒÐh„ÈvTuTÝTV@=™Âš†6 ã«J2)s'1_>R«ÖXR,Wƒct‘•±l’¿µãG:ú@7ßq•쑞ü1ù´õT ÓŠ§ùð¦ŽaîòU¥¯ òÖC P˜ýò¾¼áÒ–=òÀªq=¦ iÛ|ȳà(-:Ц€‹µ­¿~kOâ7eE¿¡U¶ã·óÎ|¿5ÿdø­°œ`Î-'ØŸqÕ´huóœG\L*už¯»zõHÄ̓íÿ} .½m/;t´¥¯^ÇáR`þ h‹¤‹Ü ,c$Pƒr0E°mû(,szÍJ@—íÓü7¥ æ‹`Öø÷22äÒÿ,õó,X¡Úbø{Qb¯žOM%l‘T éÜ—ÌÆ±;æ\wÔÙîˆ/‡0„( B¥?]iÕTž¶@…ógù4(Zðñð+èmüQºôå F‘^¶Šþ¸VCø°#ØÉuAD8ÕĉߖšG€ô!ÆË_Ü£–È‹¿»ëÏÓ~5T¡hàüõÈûÊ~f $RJ5xæ·…3Z±—hEh…‘(| Á[æ¤ÇÝíïNÙOµ8/–0Zû„²ð¿ÿ_Så(lKL#Њ29µaÅ¿©ó_ê4?ÝÿËÿq ÿÁîȯ¿üW2”˜ò™HrC›¤±küòÉ_¿} ?£7üW·RƒßìýP<š8[ÕÌIÀÂDd€”š†ú¸÷—S:›ä‹E7Ìþ÷ÃìJØèðÛÎv9añrÓ‹TJYêÿ³¾–>yË’”(=¡óÂßîM4ö±q˵üïâwIV‰‡*. ê–>޳q–S‡¦hÖ}bÔ¶@ðŸëñÛsN )‡Ï‡d%\ö޲ Io£ þ½Ýj—GéþÆr¯­s”+q²ÈË$]9fÂÐý€;Ÿa#ÐÔÔÖŸ;ŸJ²ˆ©ÓŸzV"§sƒæ}·yjû¢ð ‰8˜Ý°2–…á¢k•1ëÍ/þ™m.)OÁhŸáČ̰qRsR àinÆ>ƒ ¥2Ì`ƒÂ¥ì¡êjb0;(Í¥B(3Mèä9ßn"a.ìš\Ë«^Hœ.>Obƾ>ƒÃe=„BäSkŽ,YZܧyƒtå“;ÿvã£^Ìê|– ž“ÛN+?éÑô³JÆUÇÕã8d².¤gÚ~‚Åû@‡tj% ô#åÝÞ‡ž.)PrŒï+ˆácɶëíÍ'LzÃLÛ†Ì$ªÅ=÷÷SÏÇ&è q ^ç“M8µÄrRfš½ºæd÷ý*©ÎC`ÖQ9þþaÇyÅö ½3§Äùœa{ ,”‰¬mwA`³}Ÿî›es,¤fe9±à}w÷ÌÀ.ˆŒú¯ò>–ÇX¤€Ì§a”Cºç ø‚3B¾Mñ²~`êéd• ´>z» PdB@¾†™º‹žÄ-_›_øó=û¡—èl‘¥&SBñBr—¯4£TåõÜ÷aºîŽeÎHÝ*]p}â^ á|åáë¢!Âs0ïMLs Ï¢#t׎¯XPÇg‡ý Vÿ—ŽFÎG '˜\},sɬxWƒ´‰>˜9QÈ•;bË”´Ÿè´6¹qñ»Òà=É·¶yB®7dï Aj”q‹5λBŸ¿¼ñÔhÞK¶Æ±<øE§!m:O”Åj9ï½cÐÍ¥y}µ=”}ÌEöoƒ8Pì|A/œ?w1ݰ øÜ+q¦Tc¬ßž`8ÜËP>Ò*Ÿ" ö›o¬Q€WàUW“Ã>4s†YGÍ5o€3-oÀ`LedÄhÙ€ˆS¢Å>[¸ë<Œ§woB6øƒOÚ¦rÙÌç6[“AÙMì&ìÐC§”µCCô,Æ ·V»óΰÏóKe»HlwS´îëds }buéNi·ünج͛-7Ùo-ôщ ³ÞŠ‘úïÙ~^ÇÖüù-ˆ¿t$»“­z93|ž‡GÕ¦K™Ë+¨mžl‘ô¼7óþ«u¶@fKÉÀÁ)ëqë ›’$ç<š`Çp|†ý8Ûou¾2Ëïw¸§—ái<ö“öZ‡!2L”àõCWæ¦Sýƒ0=Y„¶xVâaˆëÅ\¾9Škú)2CŠYÜ=3ÌÉ2ìkww(ŒÆÄ냶ILÛeaR:œiÚ÷4ÚãÞ( Ðy>QCÈ\ qµ6uœ# Ú:/¶×aº¹ã)¼ŸS˜Úïáĺ ûAñtä#m9u܃kìºD¶<°Ä-›ÃÞ Wß«“k©X7î°×ƒ>' ¡±Ùb·4²²Ò0ji#7Þ€--óúݳ¿ú‚wQ endstream endobj 100 0 obj << /Type /Page /Contents 101 0 R /Resources 99 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 99 0 obj << /Font << /F81 12 0 R /F56 5 0 R /F8 14 0 R /F1 33 0 R /F13 61 0 R /F7 30 0 R /F10 29 0 R /F9 85 0 R /F6 32 0 R /F11 28 0 R /F14 31 0 R /F12 102 0 R /F97 17 0 R /F116 26 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 3210 /Filter /FlateDecode >> stream xÚÕk·ñûý !èjÑKr¹Ëë±ãKRÄ@Ò‚qP¬¥=Y­Îvòë;/rIiu¾¤M›à Û]r8œ‡3C“夘|vQ=5ü/&z¢ëBu3q®Rº´“ùæâÇ å½óž ’Wê ã¤áñ›jòéîâkø ]³€s– }v}ñøÊOÕT¦š\ßLJ£œ™8[*cÜäz1ùnzu©§+ø-ïö𿻜•ÖO«/g•sÓç» 4Þ¶{êw[ØÝð³åÇz·ÜB÷á6íšaÐþ†×ðï~ذ ¨^º”6üu n~}iüô'~ í_¾·g>#€zz×#v$g‰ `Àw—¦žî„0¤ ¦µ8q½E÷.Šaá?ò°í‰~† ÞÌxhy¸üþúo ù™Öªq"Kâ¸FÚíQ÷—3[S¨ÓÍtM2ÖÓ„@\‡‰Y3Ð'Hõ"P… O~¯Rø²5N@Ð4’ðÞÈÌ3š>Û!¥¶­¨i»äT->ûéßmeÒ­ ¡†W…+ðó=""3aæ¨óÝJhyÃßôÚ¡Ì_5uj‘ΫÂ$I°q¢’+ƒ¨‘½–ú Mj׳€æD-Ɉppt í9ßnÚöü¼ÝÓl î·"‹E'¢…QÁÎò,ÚÔÊÕU`c., Ésa…DtJz ËÖ7a ¸CÌB Á#˜¾Ò¹T´ç¨Ä+&íí%4´(§;²W†`“an¹!vË~Þm [;îî6·„„ÖãàŸ„Ö jcN æ6ø*™m·MÄÐW©q⢙éªVUåre%6«§ £ÛÄefpŠþtV.3o’.¬OOŒAÑ!Ñê™ ñØE.­¨‚?Ú3 wíù‰Ø‡U!=b-Ò!ÚÝ:⮂€ ½½ì»vŽ6÷†ÛÅ´è=Ó%Ïó:xòlL} ¼§~4ñazÑ~>CÄ{¢âCNl˜Èm'ö8³ÖàÔ5- xÿ,z{|¥u•X8â‡/ü@ü¸¿‚746¸Ïá÷~Ž0°ƒ ¬då´a{`¡âè¿ ¥×9¯ëbŒŸ?_δ«y$¯AÆö´¹`_3ª§üh…%’¼“ÑÝÑHaáGi<ü½€}¿kø}Ãk'ŠÖ ‚î32 !¡ñóŠG÷ñûLHbEÿö¼ÝÈgê¾q†gÿ!¯z ýe²–É—‚g'm¢ èé?áG ¿ÿG¹­¥í&;´qÜ—Ìï@v*¡ç˫Ƞ© 6ûJ¹ú}IÙŒJÚýï%>Nã59Rá¢ê´bÏmue«.Êú×8–_4îhQý:KAèB•¥ÎÕnDèÃoVêFgý ül|æýø¬ÎLÞ¯eœ“§Á}^ðÔ#>(Ì5M®¸k‰mLSM7”±Æ„ŽšB áÖbo#G©©i\°ÿ—/Ic!uÀQ ÄÕ¢„fí¹gÓ…–LÒX 7 ìQQ?q3šT/y~K̈¯œpN ¼÷”ou‡ÌH 2†é‡Ðq¼ ÝU`î›Ko§»¾{$±y©š²Ìíúå¤ÐþØŒY(àûéœñÆØºçæ˜|4!8%’¦±®‰/ŽÈ_l¡lÔù Šëí¦ 1á>„Ù 7ª†$C«W…1§æä•3>€e Ð4y›6¤?‡l©‰Ù ×/B²`]-}»½¸¤Ct!k†ß·h†ïøÌ•=+4%’;âš4cj­LcsÕŒšÃœ£òÁî äCògíÀ–嚘ؓc½E×MyOR-0ršä1£%£€˜”xÐ|i2¯ÐÜÊ3X Œ|ý|NlÌJ1Çǯ1£®(elÀÇ“œ^œê¾†”ÄæÁÉÃ.«|Mè[(&•jjë Q…u“Ri]2ÐT¦)>Ñ1K þ5F7˜k}¿¹"W&$£3ª=ì›äÙ½òÎmµLBûÞŋ뤀h‹R•fbJ§ê†J„ß}_LÐ{µ²Ÿ¼#ÈÍÄ©…³žüãâk®#æ‚D¶Re%nx;"m•«š äÆ×9XV¾QµË60©?/ìXã=Ûè†ÁV V'PFyë)Oõˆ¤µQ%ФUíDTïGfsªjÊÕbHS)W×ÙüzV7ÌQYzrªISJ—:3¿`Ö´Ú˦ߎت2~¨íÆœvà"Ó?Œ9:[Gc‡8ËøfªÇUE|r‰µ¬]êªâGO¸q1Â[­¬‰fŠ¥«Rƒ€…ÌvÄôÁt›(ŒÅ¨Ÿ®šc?Žª,¦äOî6øÿ5m³R±¶a? Ï‘CüOý ‰d©µŽÌ{ˆ$ãº=oH3 FWfV“rËv’@¤…Æ|¾Z™"–KGJ¡²`wÒOe£ž¸å­uð§}.!î¦]‚«WÄûÈü¸Ž€oÇ@—(ý/À2˜^]ú’ªh8ÕéžÇNÉ×G%\.Êù¼úŒ KÚ_ÛCLn¨5ná“A[-Å»°ËF€wüjÀJK ‡ë«4lÓJ û)è|C†Vq9ÍóIòb! c„å0Œ9Ciì<Ûù0bÁ] “ídYUD»ûPSå@Cè‡ÀBÖæd²aáŒäfgvçåŠlÑÊæ¼ ›4æc÷mÒîžMZÃæ\‚¯Ïâø3›tó€Mº<Þ¤Ë#‹Œ¥ùß`ëÍ÷XK´6VªQî{,:†ó›lÄTUÊ—Uð0$cp¿®(‚ÈòÀWYöª¨µE1Æ« HJÁ¥Ò#2e¢£b ¾E¯ô_ ÆÎ:TÑûgþ„ ôâÆn³Ù_l8úÄp2mè1þ-@ØÓQß«œŽÓmFXóÀZÍ[Ëy; P 'cÕ¥KO¥ÎÆÖÞw˜A@Oy͘qDeó‹âŽšu ë¤òGA• ªR¯ónð§ã¡‰}°Ì˳rq‚£M`ìl¥j€y¥ñUÌrñ}ȬBú²Hìg[hò´÷ž8s܇áöŽP»@¸½*ž+í–ßãV‡·C€÷žMG£\<Âw>j C(·ø: Þ!ÅeË»4 9#6ü¦” ™u,®è±˜ÑÂÚüoħ¸Á‹je}“o†I--LõÑH”Û(íc’×¢ÉÂSøäƒVL‰cÈqJ…ƒu’.¶pίP„ÃÓ#!)mkY«a8ù™€zĈ™Ù]rÃRŒ#çÞ]ó°º » Òcß!e³ÁxÈ|€ὌHBB µ¯Z*Äêtø,¸øù†14ùLÊXÆÂŽrtļ!U`BâôÉ•é0¤ï÷T¦k Ûl!­R_Ñ’ Ÿ>žÔ’e»!‰Ë'ºÇú-fAB·K–C½•ðÍ–ž%Qì6+^÷qÞe·‹ wŸâ’µ®<”ÍpG0¢J¶+©çïön=½¥ƒRNoéû97ù‚ì"üªçoòTÉĨT×d3Û4ÉéûéD!)a ‡7œ³Í£‹E¸C ‡ß íøå6\ki¹ú“ƒxaåTz¥_!ÊݪWŠ˜úÑ{ £¢uzá±lÆÉ ÇÃú¬ ×*^°ù‰/ÿtÙyn­‡“ùZIÈ3»>dÂ^ƒ¦Ð%¸¸|G׋_–D¢J;I±Ýöb˜>—;Ìó cÐLïiª¾úù ÙÝ.D‘x6&×AêBwY˜Áe÷¸ø¼WSÏ}­Ü“Ã÷®?R¬6ï*½¿çvžavNåé±ÓZæÜ VÑ’#Î"N¸éÚ Êt„$öÁD‡KiÞEú£ŠüŠ`FM5;÷°µ}˜Æi&3Ôõk®%sÍ=Ë(¡‡ï¤ÙWÌk;¬ +w›ªah: ž$ì˲¢L~oñœ½ìem£bH¸“Ãá²ÊX¨à¹÷ŠMw\ᔈ!œäú²õ[fqr}&ŸÌlÕ@œ;RJ±ºšö,âPjÀ&RØÑ…ÈárÄ¿IemXq]'AôŸ³KèŠ[PâMì\W£E&vJø»SPŽI•Á¢+“$€oE ‘Ä^¶¾ µ§\[rSýXgÉäÂĶѬý¼Óiä;vgÛ„IÖŽ/”»«Øewàú¬˜‚§¸]8ŠZn»ôÆììe¸%¹v¼p8sàj Y»zݼËü˜üèÂqH"d5Ö*ŠäºÈ€^\_üŒ¬aú endstream endobj 104 0 obj << /Type /Page /Contents 105 0 R /Resources 103 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 98 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-mgegofcompplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 106 0 R /BBox [0 0 288 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 107 0 R/F2 108 0 R/F3 109 0 R>> /ExtGState << >>/ColorSpace << /sRGB 110 0 R >>>> /Length 4030 /Filter /FlateDecode >> stream xœÍ[M¯]·­Ÿ_±‡ Šìl}KÃ6m m6Þ èÀ­ÝÂÁ=â¸xÿqqQç6|•7è ¶EMq‘”âŽow|wüpûóñÑÚyÅ£„3ÆÃµzßÿúðöøŸãýíËÿòûßÿøñv×uëŸ?þãýí7¯n_~íä¯þy\Ç«G9c•]üGÖ—zz¼Ÿ=}~¼úNo¿{õiÆÎåóª/·–w áp!œ¹m[Çtú}ëΖ¶­óuÖ²oÏ6¬Ûéd´¸3å—[×pzq ’¶f^Å/±ngqÛÖ2·1óæà¢®æ­ïÝ­eñ6ÞÛ¬å¯ê7¬ƒ~±O¿±Kºu>Ó/°–€7¬ãYÚá¯ë,;«¦ŸÊ_þÌ;37ëx¦ÈÔÊ™“Xg¸ûË­ëYñÛå¬;žjÖíŒûÛ¬Ýu¶_`íϰñÅœ|é+ˆy8ËFXt—;/üz:¯­_÷à/t¶~= ¾xW¶vŠOËøõºåìîJgsíl×ͽÃØ0——Žbî±Ý7Ì+â¢÷-¶VÞÌãVtu²SBó´ùëºäÞçÍw7ó‚<ë—˜ïdNöyĻ˾Ýùîâ´¾måPÝ<\gÚúuw6™|pø~æ^ƒUð[ ÁbÞv>\7[ÉŒs³ö!âû훋Ïo}¸È•OgÛš|>£8mt˼žYö{(gØàf˜ëä œoß\&±óÝ%ÄL¾m%’0—5ƒù?üJœ×Vúî$À'˜»½H+^r˜—•—¬*nfÓ|+T ?DYùö‚•˜gIbD޲e.kó¼5y©<„ Q®îl1÷UÍwòx‡‹w—txçÉyŒj^v–NBlƒùf¸(Uœš×`%aÆÁçë¶Ì%9©j^w&/MJãf´w“’æ[I)ÜM&Ÿ®Óï¸|ðHó²õîUS£äöø=É~¿Ô<ïdÔù:~Ýï#Yr›¦æiÇm²fâ0ßJNÊ¥^—þÚ2Mˆù–ÓÏ·ªgWŠnX1ß"èR59‘ÏíDÚiwÌë… óºef|’H»eÞ4X‰ùÖÒ¡C%‘6•½*²EMNÄ<îøü4ß¡ /õ»Ç»×­Üææicé¼dÔÙ«yÛØ2èy šHm‹aQ÷‡ æ;±u¡ùNFº‘V"fØpîVb¾Óè³"ÆKÀ½vÞ]êp\v[I):Є˜ïp²¤Fî²{ðçã; ùêÛŸ8 ùö«?‰´¤ãoý›½¹¹ãùﻛӼᷜñixüs—-¦IáÓñí³a"ùÓsÔò¾aM¸Œ¯OŸãxùŸ?]úòkϵ‘jÚø±ä-ÂC²F‰_Ö½ýârX ±´?kîdWùü`ÿ«ÙK0oÏíC·çÉZõè:ÝíœÍçÊÄË?ÖÈJ4GÝ•AR}Øà2.y{‹sœp·“bfŒ.ã5ÌÆ8áG“9ÌqƒË¸¤Ÿ²·Æ8á2Î×ãóí×Å]Vô‹e¡QEæ#6X\ÓO}œŸµ×VFèð×Ë ÉŽÑ•d|×Ë€øU›= ͬ'¯÷›ÒZî[¯C_´yõÔ×óvåo5|Ên æÎñ™;+FF$Szbô×Ͼ~÷ñã»÷ÿ:^Oßÿëý÷Ž7ï~üøáÝß?o8>û÷Çwß¿ÿüoÇ«o>}Ç©ßá€+òæõÇ×Ç»÷x¾LñõÓÛ,¯üSvñÈÈüÕo¿îæ/8ÚþE‘S"€:øŠfà´NÖý(zÚdã&ÚSÈeŒ.ã(J—qÂe\¹ç8á2Žô<Ç ×ñ†üŽÀ#UŒAŒ› D†§šOW;ÔqT¬ý'˜ø„7<&\sœpOXã;NÝ€:n=ošã —ñ¦;lŒ®ã‘ñ­e}B7Aæú>Àu¼á5ç¸Â9î/Í«î8,©C7A@ëZÆòuƒ:n‚Äïÿ×ñ‚-yד3´‰•[»¤¢‚¿ëá²cbjPÂ#€©Aü á‘Ï/Š4yä?hhÇø>ÉSÃ$ù š\Æ05LR¸[pZ…hGL “Tò0š´Ä]ñ‹áÈ*ÇŽ©aÇo‚c%4üˆ©a-Ê Å—+îz‘®ŽU£K"¾»b 3GL “˜ï?âLïÆYÒwbj˜¤ôgxx®á®¡’Úç±â†eY4¯8¿¡F`_ÿêafH¿Ô@/ޏk¨Ä#à,Š4jÓ{glÃÔ’Æ·ÕêÙ05Lûz¬øA#õwYñƒFfÌrŽ=bj˜¤0+{ÄÏ4J3 ´:ˆ»†J*ÜlSÃ$Ô q$:V)i—i´»$8(‹ñƒ†C6~×îy˜C¢18ÕŽ»†J<`jh;Qq×PI  Í\ÇÔ’™Êr·Ž©a’ˆ E#15†¤=ÓhÏ4 hT=¥!¦†I2ê5j¤Üq×0In¦QbÇ]£°íÓ,ˆ /$ôlƒÔq×PI%³8qÐ+wL!©Ù4P^wÈ®pÐX(.ܦÆÐƒÄupä§™$iö{g§¹u¬SÒ¨áq±Â05Lâ0j Fw “(#ÃÁ115Lâ-jËkb}ˆ©1$UWL^5315Llgóñ†UcJqSÕ;ÄÔ0I´])¹n“«Æ”d}Fæ!*15L’àÐЛ,†©1$ŒR¸Ì;V)¡¯ N¾ã®¡’l«ŽÛxµcj sÉ[õ[ç‘;tIAÏ Ž cÅÔ²Ç~Ш-ëhÀõh9%‘…ç Š©1$•-OŸS̃IšÅ±¦5¦aj Iö³ axéS Ãt¹Eƒø™FÀ¾ÅÍ/×:†Æ"Q®w •8òœÞ$X5¦D¹é ‰˜C¢{i…o«F—xföH+òÀÔ’TU#«gScHšÎ±1vL “毠¯Z:V)ÑUWbI«Æ”hæˆ ˆ/IL “Dî[ >WÇÐè%Ú¡A×ÊX¬-šõ™¥hîJ>+ârwÜoò·^nujO·ri)+5Ñ…"\ÄSF—R ^;Æ]V¯PY[1éVŠÞÑE7ß6Ð!.Ÿ(£­TجWè1i7ˆ·ªd×<á •˜Ö·ä©›”H>k‹äúÖ.IR, ƒÕ²ëâI Úוô»À¶)ÂOᲨaÀˆ’ò"‡BIâxs ¤&þ²;P,db¯=§7Vž4©ÏYÓ|]4¯"/Àaûk*.½ÑêÓÄRÉKPCjŒ´—ƼbÍ4‘Š“n¯•ì“&VššëN}Ò4 ÁÅ7ÇÝ·¤É+í½%·¹ö“¦*òbH*“¾<a4hóÄ!j:èôùò Çk&êNrÞf‰œ¾¿<¨ò&OH93«ú~by×¢ko‰Ï¥ú‘·q¡@Ÿªd Ãõ“K?.üÃÒ“¦ïƒŒdu9‡SZ¦ Y×'—<ûMú~)ðxå¢Oâ|T)@§,óm¤f>¯ñ(Êk)xsŒc L¯óÉzC uþ²÷ é1êópAýâ9œúGkY߯該ué÷(^ÓÁꬠ9=)Ø”ÔôX°ØûÉKvÞ£ë!›L“‘ª)°ÒnâD†ØóDVo 3uÌß«zh¦¤@ýªWë²FÁ²Õ<)¸?S=œ;Mü{µoZïyëÉ*Ť“Ž7M{³§=š Þ1;Åê(Àèiܰ‹+ƒv¦¾F"` *ØÇ(L³§`#¯áÖ©¾Ó !œã‡‘fßpUžõûiuîÐu>N/$Å~„÷J4µAx×ß“ý†X¬óóúa¢ÕßA1‰=cÐã WI)" {„G`$×7lÔk’à •] ÄçmÁ‘ã F±¾/èˆdu>Qï¶kèÔj‚ÏKÔ×0©X×G6Vâ|’ÎoRï6»ŒUøâ?)ç9…ù Q¯“|"ãN>¨=Ê$ŸÔ©‰ä“ôäkO¾èÙF>™‰N>ò ÷N>ò¥5#ŸÂ·“”â$Ÿj1Ùȧj“¤“ˆK¿0É~Ó 0•úG'ÏÏßÉ'ÑÛ|.ý…|œ›I>F.ƒ|êµ’Oãowòñ¶¹ùDïä“;™ù4 VF>ÁÑù:ùýo&ùˆwòaþ<ɧÙ||„H†F>ÑÓ9;ù€ Vò‰‰ÎÙÉÁß/äûzuòilŒ|põÆ/ä““ŠN>ÉÓƒ:ù$Û¼|$˜“ Œ|ÄãüŒ|Ðv ù X—…|3øvò©Ü,ƒ|š÷N>Á¬“¸4ÉÝÈDzíA>·…|lëB>ÙYù ¸æ…|ç…|ו|Pòå…|,ÿäƒ`YòA°Œ ù X¶…|rà&ìä“»?wòa~’Od°äc å Ÿ¨õÉ$Ÿîß|,¸ ò‰Ú™äÓƒY'Ÿ¨}ÎI>‘d=È'2ûäc1fešƒ|,p òQ·Zȇý»I>‘ßwO$Yò‰Fv|6òØÈ'rýò1<ȇx’OyF>†ùÔgäcxO}F>Ä“| ò1<ÈÇð Ã|ˆëÛã—ûOòÑC-ôéÈÇ«W òñì„vòÁ,ä#¯ˆ¾`'ŸÈ³¦N>±Ú(É'Edù$KÒ|àÖe’OnLQŒ|Šm#Ÿb¥N'O2ò©…¾“‹íA>‰É<É\ÔÒB>^;7ƒ|²o#Ÿ«‘|ùx f“|¸Y'ù0Mòa%1ɇÁµ“O±LÕÈ'\½2òñ¶Y;ùDË´;ù”N.F>­W:$Üòv+ùôùwòé•V'ŸlÁ¤“Oáj òi¤ýN> —ºO2jäŒ<;ùX¦6ÈGïý,ä“-¸uò)Vtò©Fæ|*=aOŸŸ‘O¾¬Ò2òœÚB>ùYåòH+ùèæB>Þæ×ÉÇ[%ÓÉÇw²1ò 6ÿN>z{~!Ÿ`dØÉ'X23ɇëßÉ'ZrÒÉ'öÊÉÈ'Yvò‰¶¾|:9Lò!9Lò!NòÉ•O4r›äÃý1ÉÇ*£A>L>&ùÐß&ù0øOòaðŸäÃà?ÉÇð$Ÿ‡Ê§ã…|Ú3òiÏȧ=#Ÿ‡Ê§ÛI>Ä“| ò©•ÏÀƒ| ò1²äcxáÿvòù”f¢("´ËÖPöú¿æf³ï%õSžüå×ç¯Ïû4J´ç ŸÔåq„ÿ/—Ù&ÃÕ{qŸåøÝ .£Ñ\ö’]wúÃÛ~üâãëwOǯûâÇÔñÁ¬9üû7Ç÷Þ¼ý0îÙÜþFFr¿ endstream endobj 106 0 obj << /CreationDate (D:20190123142057) /ModDate (D:20190123142057) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 107 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 108 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 111 0 R >> endobj 109 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 111 0 R >> endobj 110 0 obj [/ICCBased 112 0 R] endobj 111 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 112 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 103 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F116 26 0 R /F11 28 0 R /F10 29 0 R /F14 31 0 R /F1 33 0 R /F7 30 0 R /F92 16 0 R >> /XObject << /Im6 98 0 R >> /ProcSet [ /PDF /Text ] >> endobj 116 0 obj << /Length 3335 /Filter /FlateDecode >> stream xÚÍkÛÆñûý !Pb1Üå;h ĉ¸µÓ<®è‡$xO'DeQòÙýõçîR䕦‚ƒŽË}ÌÎÎsg†ñl=‹gß^Åò|~sõùËrVEUnóÙÍÝ,+¢4Ogel¢Ä$³›ÕìçùW× è›/¯Í| ¿ºï7ðÀ×z‹CÉ|UñçõÐlŽ ˜­Ÿt{½°¹âŒõxÄ¢ã¡PhKsŽrv¢MsýëÍßg “FUšÂÓDU–1y•&› ˜tÞ6Ú`m1_E׋¼¬æ¯vãó—• øUäQl ð’@ý› ³bpÐBö%0àw¥6Óõσ$pÉdwáÅq×ðy{é&2”.2¨ÁŽÆ”QYUºåŠ@ãTaì}r}cœMdŒpÇgˆŸè»ë,Ÿ×‡ç¿»¶%´M¸ë¦Û1æ$r+ž²„N˜DÁ¤9Ç`dy×+}g‹$Ž£4;ãrÝv|$„@@»H…:DbɘÑÖ8 ˜ÒóënÏò·“ÓÕkhÒÐ8}ƒýýI¥m·dÌpü–¨!]}®ñ­a}ÀqS•1¶ü™¹·Š#”„eŽqYоêƒÐu‡ðàKìhDS ŠQb š%gI¡ùGÕjbýA65"²tt¢LiDÖXè™3=™&]¿ĘÍtÚEç,5v¼ƒÖø-·Beœ·Ú„ºŠ/·§dG ‡yN(â‚™À I€¨³æy½0k©4ÂÎ;§ÌË“è ¬ yƒÑPj¡[ñXßã8¸„êÀëî&W®T‡ÜqnE“Ž"ß0†ÖlÕ«psUdxßᦸ¤m‘%#ä€Htóžl V§¶S—g,AÊ“ƒ¼ÃØ=‚†ú‹±g¡Ù5)ĉ„Á1Ñ]Â1“†!•Vì*"°•­I‰Ö_mL(·¬\ïÈ´µŒB>Aè1rˆÝŠÓTÌ¿GRй–ü “Î~"“ÄÎ_ÑË+|IæÞÐ#"„Ò,Ä׈—ûÇVºnkASŽÏ‡"Ñ]x·q\¡CŒ±)·u#§IÊrL$켌H8S­89õ`òCg‚3ÎI‘D6.ÿˆ3‰£lu@¼¢Ó7bÇ[fµ[šÄò¼àk^ÒÒuÇëAïÏØî·bâƒq=b-k~,YdÉR¡þß1qÙÃØ¤Šâ82„å½E¸'Ò&Ðô¬4óн/x¿û†Û„ ®9"ø{ç`h}¨÷D9zCc“Õü¥Ú%r5¥@y©âP¼qîaöJ™ò„¸Â´;å×r Ô„Ì­wÅ`ºRçš8ÃgÈZ2ÍÂ);×"Ë«²Æ¨náÕòÍ‹kz78³îc£­ßërg]y±^X»?­j%ÅR˜¦ ‹ØañzˆBKòÜ%Õ‹Qm¸½ì@ûZîoh Àxç^Ç~/øµUÓu?ÀåæÐ©Ûu.\÷œòäm§˜€A[Öqê¹»Q;2qz&«¥†û #pHQÿ›?ÙÅ©G’øã.ˆ &È2,Z]`ÛŽ€Ng²Ì#²ÓÈDOSÚõõÔ¶Ž±°;\5n½_LIp[ëÕ²lÝù;ŒÃ‚µî¢Üû-C•–´ÈîMxO`Ò<~ ½Òã¤Q׳ȔÖâýà&Ÿ±³:©\A/ó?ñ‰M+œu·n¾Iõ{còÀ¹lU‰erýÿ¶Ó&Ρå)„ûDo¯OúžGœ`J°‹³ˆ~‡K +d8N\>~œ¿LøÍ,²v‚é!ñ {}-ª>µQfÁù:ßùÑ}¾À«Oeænøåð+˜¸‚žmv[Mœ°‚ºÞ B.‘U['Ý6!‰yŒÔ)þ)Cù&8nC+&»Ÿq7_ÝyÏ6˜"«>‘³Tð+áËu=–~m'$ ¿kIê—D•hJäX¯ÑÞ‚ºw"4­Ò¨œv§)VºbBŠºtVA¨ºdaÀ2˜žëÙÅáQ]»{Bì#áòNÚd#ÙáÒ¿Ù W”ãïÓ­Oeƒ¢Ï<ÿ—P2&•=ÿÃÇ|ó'<¦LiEU|¾Š®8ô¥Ò:¢‹'„ø3Ϭð;­dÁaÎ\³¹À®.Ф+;Ád¦Ýÿ&‹£ñûy,gú…ÔØ­å¹}9tT[9ùz‚™5'9qUxŒOÆbp!„7„KN£ $I{&:/)?ºYjᔚ¢w®&îÚæHdùnRVó!îïÏHÓkVܹ¤ð<7Ѓ²ù¯¡¨œ;ß½¹,¶bžUè]ÿÅÍfã™™åe'ÉÌfšÙ²½z{UƘŒÆƒ& é*éøüU[̾é®~€?ZÄ…9ª¤6ÊìÌ&EWR.ðq¢Þë‹b^ ;‚ Ù×Ý]±ç˜¯Ð{§ä”" †±¼úXµÛ2·îƒ5g!èFCô‚Ruwë„Í’Ñ„aºyê4—ªQC×I(ûÑ\LËçÇŽ¸¾ ² ïú*É„¸ù{÷Tþ#2IöÇÒIl†éš/Ó½FxÑ@âÀ‹Û(­ÐX›òJJ§–N¾!{Kp*×~ò˜.€‡¦%ã,õ^’88ÄqÎÚ‚°ùZrÁ%ÇÐãCLxaéÒ +çRëx›a$´i8H"ó8…é0:J'£Ãa¦C ©¯Ô:ueŒÁÌ|Õ¼v$1Ù8÷t4æ²ÂÏ‚O"­ï‘LCÞÀ”úvá²êª :Í®¹†åJ+þá~ãR.¼¢Þ: `$œ¼#:K¸ GO$|<7ùïë2%šä1×ë°Uþ|ÐÞhüº=KÈ ³ XœU#E ëp”"wzT/’·)\’EI’ëD:ÉîoT¢Z Ò{µ¡o‚K%¸`ÆAküîl" º ²‹Z’Ãþ–Ò<ÃÔ$,uÑ6žñž)@/—d—³Jï®à‡7|•ÕY ¡­6ç9r›=šÜÍ’<·Mcãá„ñµË1„" ?÷Ó.^ÿv¼¾ŠR p` â[¸i‡I0yXÎ%E¸:¤BRK‰1½ch©ml¬Ü¹Àtö‘ûÓšgc½Ê~¤N¦å\˜~¿Ãi®èí--©qVfk„dÒƒ»”1bZiÓÙZ;g—dùÐ9R‚œ †(äÕ´C÷ªãç®Cá®J._ɉ¨ãŽtTÃ<yfZÈ5dÊ<5,Ù†j˜o†Wú¡öuèbëU»¼i#»‘‚¾E°Ÿ d œ´æ—qb0#D$g’ƒç¼¹wžŸÍ%YNRâFåôüRÞ´b[ùj‡©ž´FhÚ­ñ6Ä i¯ÝÞ%nñßÎr×!xªò¡nÍS¼‹ çM•š`ÇO;íÃ’¤œƒêÄ'þr„f3£¡ÑÔîÚo{u]š:h"¼ á@É |îÑHòDçÝúéò^  Õüõâ9E<°5ü'ÔÄç<Ôíà Ęˆ)°jôÕwo&?Á(Š(O\Õ¬“°Ãí0¶P6LlÃÏD2Ëz÷yŽõŒ×r2t½Õ.M^|‡Ä}8:¼«‰¢}+Õø÷ž{ä£÷QÍfÖeŒ‹YU 1†{AfÌ,·,·ãs¥`yÁ¢“Ðr&ÆÝ Åɲ5ô‡$6Q©µQaгìûØ ‘Am$ÿsV6EvÑó…£[`]Sõ´©‹¬iZ fßÖ=“JÚrÂ醆ZÊ?§ /¡7&lûŒ¿Z÷ Œ†|o»¶ñ< Ñ÷zÑL¹Ë4+#Sº FSGœ¸Kf~ ¤ßzÁþÃ|) UÆß/=沬¯tl|¥dÏŸ%uŸÇn+UåC7>Ÿßó(K]HE ìÈ—@í…«Ó UP‘zêºv^Âî¨q•IÙ,…lež¸ƒ@P‡ü—¨#åÜzùD¼0Ûñö4¼Y÷ƒRO{¶é~( †š4ª~M§ž“D)%3¦³ÏÛ L;u†ÃdZ-Rï>M‘iÿ§äï÷’üö>8šO|\¿íƒTÖoAë‘l«"¨ù¯f”ô=zOgÙL˜(sk4K÷0™UÆäÚgR|i¤“ûÅ'Áj?¹ø•õî‘ìœÏ´qª,ƒøˆ¶l¯~þ5ž­`hÁEpö@óZÒ(&ÛÎ~ºúsn6`¥* Œò8›¥eT$éÀ·A8 YĆ8µDbú!ïîRúÜŸtKçN°4§óçü FÕ;ýlzØo SBú<³Ì Dæ€ÉÂVQY–Œ‚è¿MQ´ endstream endobj 115 0 obj << /Type /Page /Contents 116 0 R /Resources 114 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 113 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-danishmmeplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 117 0 R /BBox [0 0 504 252] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 118 0 R/F2 119 0 R/F3 120 0 R>> /ExtGState << >>/ColorSpace << /sRGB 121 0 R >>>> /Length 60051 /Filter /FlateDecode >> stream xœ¬½O'KR$xŸ¢ŽpØGÆÿˆ+ì2ÒŒ4CKs@X`G 4«ùú›în‘Bˆ¶Ú¯0·¶¬,È_F¸ez¦ñ#ýø‡ÿòËÿñ/?Úúõ©?FùµÖ©ç_Gö?þõïüÏ¿ûåO~ÿ?þËŸþøÛßÿòüú<Ïïÿ·NÿÙ_þ;ô_þÙ{££ýøß¿üÕ_ÿx~üÝ/éÇ_¼ÿ÷¿$ùüø¯¿üéo~ù“?OïÙüæÿù‘üæ_Ô_×zÿ—ý?½üú¬cü:êßüÓ?úÇ?þñ›xÉßüë/ÿ×oþÓâ™~F<B¼-ž¿>üi¿bþ´ç¯égN;矯Ÿ—þâZ(q"nÏψ'ž"îÜ…aâÁͰü¨˜›aïôxÅ“›a¹ˆxq3 bn†åöc¼?”Ü ËCĉ›a&ÎÜ ƒ˜›ayЏp3ÌÄ•œaKÅÜ +EÄ;í¢§Ý¹Ó.zÚÎ.bªNÒe5²:W'éR [«“tݹw®N²ÅÜ…abªNâbÊfÛbîÂ01e³¹˜²ÙL<8›m‹¹¶šˆ)›ÍŔͶÅä S1e³¹˜²Ù¶˜œaKÄ”ÍæbÊfº‹œÍ¶ÅÌ º‹\ÄÅTdH‘CÄäi¿âÉÕI\LÕI¶˜¹0\LÙl.¦l¶-f. S6›‹)›ÍŔͶÅä ["¦l6S6Ûs3L*4“³ÙôÙõ8›m‹¹&ÕŠÅÙlC*$¯˜²Ù†È^1µ|Ôç-ELž¶Š©:‰Þ™_1U'ZêX\dHª^1U'q1U'Z'YœÍ6ä×ëS6ÛãåS6ÛÐmÿ’ÿŸ§çá|¶­¦Œ¶!µmQSNÛQs³ìœ¢¦¼¶!…uQSfÛÛª¹‰Ö»ª)»mˆW&jÊoÓE ª¹¹5å¸m5¹”t5yæSÕTÕdȆ4=‰+›è³Ø¢¦ê&C~TÍ]%PS•]¸‹šrÞ†llUÍ]%PSÞ›>….jÊ|Ó=‡ª¹¹¶¦ª)ûm«)ÿmÊÒLÔ”wÔÌ\ÛjÊ‚ƒ:sÜQ3sm«)n«)nŠÃ¡jf®iMQS•}cBÔT)E÷ǪæÎ݇NÕÜ\ëIÕ”S§}™EMYuGÍÍ5¨)³nÊŠ¨)·nÚºqv6¤V57צ©)ÃnÊÖYÔ”c7m/Ø8ËN__5¹Ò„šª·õO9UoÙjªÞrÔÜU5UoÙjªÞ2e(jÊ»›¶{oœy§o»¦§sîÝ” ¨¨)ûnZå sþÝVSÞVSÞQss jÊÃÛjÊÄ›Vó蜋§¯7«š™kK ¢¦|jî*‘÷K^5Soqu£œ½š»J fœ=Q'U3ÎÞx¬îÐ(gï¨gï¨gOÔUÕŒ³7«y4ÊÙ{ÕÃrÎ8{ã±d£œ=Q/SssmÚ\cœ=QÛˆ1ÎÞGÍÍ5Uwv¥ 5Soù¨êÌ™zËQ3õ–£fê-5w•@Í8{GÍ8{5y•˜šqöDÝUÍ8{¯Z+&röŽšqö†~˜<¥A9{¢^ªfœ½‘ô¹Q3sm«gOÔEÕŒ³'êijf®%}ZâU3ÎÞQ3ÎÞGÍ̵d»ØÁÕ[¶šª·õO9UoI¶ƒ\½%ÉR+¥ÉÕ[´s¹ª¹«jÆÙÉvï“rö>jî*‘§%^5ã쉺«šqö>jn®AÍ8{#Yå`RΞ¨-猳÷Qss jÆÙ;jÆÙû¨¹¹&o¥E9{#Y½eq+Mµ¶TMžùT5UoÙjªÞ’´+†¨¹«jªÞ’l/¸¸zKÒ7c^5ãì½êagÎ8{#ÙNrQÎÞQ3Ξ¨³©¹¹5ãìAÊÙú¢¿ª¹¹&.r~(gOÔ]ÕŒ³wÔŒ³7´Eª¹¹ö´¨goh‹QSΞÀªææšx’¯š\iBMÕ[Žšƒ¢æÎ|Ú™Sõ}ó_çì «Ö4ÎÙ;jf®m5åì «uÎÙÓ—ˆšrö†UL:çìm5åìm5åì57×´bÒ9goè3&¯šZi5y榦ê-ú¡QSõm¢jî*É6S©zËVSõ–¡ÏÖÔÁ9{GÍ]%òdΫ¦œ½aÕ¹Á9{GÍÍ5yRãUSÎÞVSÎÞQss jÊÙÓ–3¢¦œ½­¦œ½¡oˆˆš›kò†È«¦œ½­¦œ½£ææšÖ×&·ÒÚ¡áUSõ–£æÎjªÞ²ÕT½E?À¥jî*šª·èÅ%jÊÙ¶{Ÿœ³7ôQsWɰ¹F9{Ãvï“sö†íÞ'çìm5åìi[§Tçì57×äIWM9{[M9{[M9{Ã*&‹sö†Õ<çì Ûû/ÎÙÓF\ªææšôxÕT½eØ“‹«· í5 jòÌ›ª©z‹> )jªÞ2lÿ½PêwÄÚÃ9{Cþ+jÊÙÓOŠšröŽš¹J¶šrö¶šröŽš™kSß«yÕ”³§íêDM9{Ú®NÕÌ\Ó‡EM9{S»3¾jÊÙÓG‰EM9{S»3Šš›kÒ±%ÎÙÓIŠšZiN݉š;s¨©z‹>B-jªÞ¢ TUsW‰ìÇZâê-[MÕ[Žš»J ¦œ½©=-[âœ=ý쨨)goêÓ1¢&çšÍsÊÙ›ú¾AËœ³wÔÜ\ƒšröôaQSΞn¥TÍÍ5Ù ¾jÊÙÓ DM9{SßuxÕ”³§¯)¨š›kÝþÝÔJs«©zËQÿÔ™Sõ–­¦ê-GÍ]%âÜ·ÂÕ[¦v)l…söŽš»J ¦œ½­¦œ½­¦œ=}¡FÕÜ\“÷K^5åìm5åì57×ä+ ­pÎÞVSΞ¶ÙU57×äí”V8gêÊ9{Z`5åì57פbÒ*WoÑ—·DMÕ[¦¾!"jîÌ—ý»©zËÔ½ÿ«¦ê-S÷þ¢æ®ÝûWÎÙÛjÊÙ[¶‹­œ³·Õ”³·l[9gO?xžZ㜽¥]Zãœ=}ÝNÔ”³·Õ”³wÔÌ\ÓBª¨)go«)gOÛh«š›kºnœ³·lÜ8goÙ¸q+Í¥ï:ˆš×#jn®AM9{EŸçìi»xUss­ÙˆQÎÞVSΞ%ªææšT‚_5åì­¿jj¥Yô •¡v0¥–3O\½e«©zËVSõ–¢ëÔ‘¸z‹¾|-jªÞ¢5åì5w•È*w$ÎÙ+ÚóîUSΞ¾6®jn®MûwSΞ~TAÔ”³W´‹Ù«¦œ=}e]ÕÜ\“öÈœ³§/¼‹šröŽš™kjFŠšröª>ç12çì©•©jf®U]#¿jj¥©F¨¨©z‹¾è¯jîÌ¡¦ê-jŠšª·èg0DMÕ[Ô„U5s•T}üUSÎ^µÕ^᜽£æ®¨)g¯Úz­pÎ^µõZáœ=ýôˆ¨)gO;ˆšröª­ çìU}›XÔÜ\“/J½jÊÙ«¶^+œ³Wm½V8go«)go«)gO›i¨š›kR•«·T­ ŽÊÕ[ôC5ªæÎjªÞRmµW¹zKժ䫦ê-ÕV{•söª­ö*çìU[íUÎÙ«ú†§¨¹«jÊÙÓ&¢¦œ=}Ç%%>æ*Iú$–¨™«ÄúK‰¹JÔê5ãì-ëÕ;'åì½jý=Ÿ”³·¬ã휔³÷Q3sÍ:ÞJц™kj³ˆšqö–õn“rö–u@“rö^u·cœ½¥/!§¹(goYQQss jÆÙ[ÖS¶ÂÜ\“g‚mϨu…½¨zËQ3õ–š»J fê-GÍÔ[ŽšqöDm3•qö–õ•­w•L›-Œ³·ô•uUssMî¡¶5úÃÕYïc로½e@EÍÌ5ë§¹ÊÙ[ÖÓRùÌ\Ëz/‘E>3׬Sàz(goé ï¢fœ½£fœ½š™kÖ1ϖ锺¨š©·,5BUMžyS5Soqu¢ê-5w•ÈI+qõ–¬÷ï•(gOÔUÕŒ³·ôªæ®yª×–N”º¨šqö^õ²¿›qöŽšqöDm#Æ8{¢¦ææÚ²cœ½e½þä†Ä̵¢ÎžÜ˜¹fívF©‹ªgoY×:¹!1s­Ø},s+MëZ·2WoÙjªÞrÔÜ™Ë7%ìÇ‘QË3öóF©m¼©z‹u“Ÿ7î*šqöŽšqö–õã² Z](goé§fDÍ8{Ëúq­B9{¢nªfœ½W&û™îÜ\“'-EÍ͵eÿnÆÙuU5ãì­b÷’B9{«Ø½¤PÎÞªêÕ¬B9{«Ú®¦p+M뉵 Wo±žX–zJ-#V¹zKµ_äÊÕ[¬7”œs•l5Uo9jæ*±¾T«rÎ^Õêܪœ³§[DM9{ÖjUÎÙ³þLWmgQ9gÏú‰š›kÒWòýƒrö¬OÑûåìY¯ ¥€Qëú¼qÎ^µßóÆ9{[M9{ÚrFÕÌ\k꽿P+Më×óþAÕ[¬_Ïj\½Å:î¬ÆÕ[¬ëÍûUo9jæ*iÚgðýƒª·4«q5ÎÙÓ™TÍ\%[M9{MûÕ9go«)g¯Ù »sÎ^³5rçœ=&¢¦œ½£ææšþ¦vÎÙÛjÊÙÓ¸TÍ͵aÿnÊÙÓ¸DM9{MßFZsöšÝK:·ÒÔ‡ÇDMÕ[¬Ë\½¥ës\¢fÎÜ:°¼jªÞb]PÖàê-GÍ\%[M9{[M9{]ßÁ5s•X”WM9{úƒ&jÊÙÓŸ$QSΞuä57×ô÷|pÎÞVSÎÞQssMÕ“sö¬È«¦œ½£ææšx±¯šrö¬C릜=ëÐ jæÌíûWMÕ[¶šª·Øû¯šª· ÛO®Þbïû¿jªÞ2¬–;¹zËQ3W‰½±¿&çì ÛÅ.ÎÙ³÷ý×âœ={ßÿUSÎÞ´{è✽i»¹Å9{ÓÜ–Å9{ÓîD‹sö¦Ý‰çì53צöyÕ”³goô¾jÊÙ³7[×âœ=ý\›¨)goê³s¯šª·Ø{±¢æÎüÝRäçáê-úv©¨©zËVSõ–)ÓDÕÜU5UoÑÇEM9{ú©8UsWÉ´¿›röô1GQSÎÞ”]ª¹¹5åìéGîDM9{K6b¢¦œ½%¦œª™¹¦7°ü$ÎÙÓwSEM9{Kv5ªfæš~žOÔ”³§7OQSΞ~ÜOÕÌ\ÛjªÞ²ÕT½å¨¹3¯MÕT½eIVÔT½eÙ/râê-úަª¹«¤ÙL¥œ½%ÉÎO朽%ž…ª¹«jÊÙÛjÊÙÓ厪¹¹6Šª)goÙ(sÎÞVSÎÞQs-=ú<¯Èk/Ù‚G䌷'òbƒÆ˜{"¯ö·3îÞGÎ,7EÞì䙪˖ªì¢ò¡r¦îò•—‹Ê—ʙʋÈû£r¦ô"òa©c\>‘¯drò’Yöog|¾$«û·3FŸÊ§É©Y—dK-rÆêS¹ežñú¾rjÖ%ûµ)”۷啲û’-EÎø}"Ïö·3†ŸÊ«ÊÇï#g,?‘—nrrÖÕGåÌ"ô#gj1_ùÏrÆûy—Y×(óï+'/ÈûOäãQ9ãÿ©<›œœu3àGÎX€"ŸÍäÔ¬ËR49c~äŒ (r-4Êy&§fî@DÎ"/&gœ@‘W›´Ü¢TßÛÊO§*4*Ÿ*gJ4"oÅääÉ÷¬r¦H£ò¦r¦J#òi'Ï”i’m#DÎ8‚I¶ÊKPåKåŒ'(òd;c ªÜRǸ‚É61"glA‘gwÆy*gŒÁ-”3ø•S³®XmPÞàGΘƒ9ã&ÛÀ©œœu3þ ÈÕúä¢´Ø zu}cAä\ÝF÷"çê6Eœ •“—Ì**çê6Å~*Y·9rê’©ök3)£PäÅäŒS(r½¿OÊ*Ty695ëªUÌ&e~äŒ[¨òarjÖé;"güB‘7ËUN]2MîÌ"çê6úf€È÷PäÍޱE®ÛEù‡ÉvŸ"g D•ÛÉ3âWNκi™gMNͺ-§ÌDÙFT•SfbÒ¯ªœšuÅæ|çÌÄdm¼rÊL´•¸Ê©Yg¼rªn“Š§ŽªÛÈz°™œ:ymÂ'rªn“ô!âœW·±uÈ©ºÜØ!§.ýÚ¡È)3Qî]å”™˜šMÚÁ™‰GN™‰ö+rÊLL°ug&Š|ªœ2“~Oä”™(?ðYå”™˜º-g&¦nw™Á™‰©ÛÚfrf¢\èÉäÔ¬ÛrÊL²o?ÒüŸ—j‡•úѶ?@[´-Ëçï}þq×{Óç/þCÄK³ÿý›·ºi›±¤öøO? å¢}Þeœ.:ÉšÄÐaõ¿±iÀ_´Õÿæ ~ø¾¤³yƒÞ¾ñ³yƒ‡Çé:ÿ9ûoj>ùø?>iªê®ä?oðßKì¨F³g“ÿ»³é?–‹o0 ¯¸¼'áùµÿáò•üy‚÷ÿƒåjOZêÒ¯÷¬²«ÿX˜øås˜‹öNùÇ=Šúÿø/ågø3£sËŸ?þõïüÏ¿ûOýš\!õºBm¨˜‹?÷Wôç¿ý·ûíïþ׿ùñÿü¿~÷ÏÿúOó?þî·¿ÿ·ýíÿýÇïÏÙ?úÿí·ÿü»?þë¿ù‹ÿÜE(5}'ïô§/þîoþío~üöwrø÷ ÿæÿþH½½Í e ›7öþ¹Ë%]ߦ®oã$ìÿÛš>µæ÷-CŸ»š>”öa[lO_¶§‹‘áÈã:ò Gž×‘g8ò¼Ž¼Ú—]íÃNõE5ÙØÙwj+›*Xù|Ù\"ûþvÛœ5<;"ëk‹wqoÈYÅ ¹zׯ†œ5Œ\å¬áÞ¾lo‘ÈUÎ@ÎF®rrVñì_vöÈ®òeWù²ú|± ÈYÃÈÕ»¿3ä¬âT¿lª‘ÍÈUI@`qäÒœU\ê—-5²Õ<€œ5ŒQxwõ†Àní˶ÙŽQxï׆œ5ŒQ¨ÈYÅ£P³Š'Fá=CÎ*^…ö_VøØ¬¢À¦ôeSºØØÙܾln‘-ùË–|±+°+²µÙÚ#ÛÊ—m%²ýù²ý¹XÏUrV±ÿ¾¿Ÿ†ÀžÏ—ÏÅŽÀŽÈ®päެEšÍ*Šì ìŒlj_6µÈæües¾XŒB¯@Î*.ýË–ÙZ¾l-‘mÏ—mÏÅz®&³Š{ý²½Fv¤/;ÒÅz®³Š'rõnu 5¼«1€œ5Œ\äì‹Õ3Vö†ÀNÈÕ;+ 9«8?_6?‹\­¬áR¾l)‘­8ò{ç5ä¬a=²φ”ulë ÝÇrV±­7ô½,CΞƦÖðhÆæ¬á™Áv g /°ÈYÅ«ƒ@ξX]Fe壬áô|Ùô\ììˆl®_6×È–ôeKºØØÙÚ¾lm‘mù˶|±+°+²½ÙÞ#;(²#°#²©~ÙT#›Ó—Íéb1 rŸWÖpÁ(¼k CÎ*®…÷OCÎÆ(È\‘³ŠrU³Š;rÕXùz¯MCΑõËÎÙ…\µ ä¬aäª?@`«Q±YEMù˦|±+°+²¹ÙÜ#[«wUfÈYÃ~ä ä¬âêGî@Î*nå˶Ùþ|Ùþ\ììˆì¨_vÔÈÎôegºØØÙ…Qx] <±óú È"WïÕ³ŠSÿ²©G6—/›Kd rõþ[ ‘­õËÖÙ–¾lK‹\½wCÎ*îíËöÙ\Íä¬aäjv gû/á{Ÿ2ä¬â…#˽zîõÆÆ+°ëË.¬7º¨ 9«8aÞ; !gççËæçbG`GdKý²¥F¶¦/[ÓÅÎÀÎȶöe[‹l÷\M g ¯À®ÈÚÎK?bHYǶóú ÀÚÎKÛrÖðÛ€œm?Öƒ×û”!gÛÎëƒ";}ïb†À¶—ö5ä¬bÛy髆œ5¼À. gWùÝ)k¸áȹ9kxvE¶crrVñÀ(ää¬âù|Ùù\ììˆìÂ(¼÷tCξ8aç5d& <;#›«w=`ÈYŹz÷M†œ5Œ\½ù7ä¬â‚\½û&C` WäêÍ¿!g·ç˶çb‘«ÖœUÜ‘«þ5<«wbÈYÃ3°3²³}ÙÙ"»«^œ5<;¿lÆzホò—MùbW`Wdsÿ²¹G¶`Þû…!g×çËÖçb1 ïU`ÈYÅ­~ÙV#ÛÓ—íébg`gdGû²£Ev"WïJÒXàØÙ…\½÷GCξ¸`ç5ä·×³ŠrõÎCÎF®fk8×/›kdKú²%]ì ìŒlõ# g·ôe[ºX?òrVqÇ(¼«2C` üeG¾ØØÙÙ¿ìì‘]åË®òe+v^ÙØÙT¿lª‘ÍÈÕ{4ä¬áØÙÒ¾li‘­ùËÖ|±+°+²­ÙÖ#ÛË—í%²ãù²ã¹ØØÙY¿ì¬‘]!WëÊ•¯7Þß@Cξ¸íõÆFµõÆTï¬íõÆÆ3°3²¶ÞЂ!gÛzãƒ"»À gÛÎkꪧí—cÛyi7CÎ*¶—îP 9kx++¦¶w^Žmç¥ûCÎ*žÈU@Ξ‘]ÈUš@ξ¸cçõA‘E®dµÕ÷ÎËqB®d=Õ÷ÎËqF®Þû”!gäJÖD}ï¼6F®Þ»˜!°†+r%ëš¾ 7¹ g û‘'³Š{ý²½Fv`dMÔ÷zccŒBÍ@` OŒB-@Î*^…:œ5¼»¾ìÀÎ냛0 ²ž{çå8#W²‚{çµ1r%k„±w^Ž rÕ'³Škú²5]ì ìŒlC®Þ k¸#W£9k¹ÈYŹzïS†œU<‘«ù5¼«™€œ5Œ\½*Cξxb½1eÜ 9«8ù‘;³†ýÈ ÈYŹ~Ù\#[Ò—-ébg`gdkû²µE¶å/ÛòÅ®À®Èöþe{ì(_v”ÈNäj °À#°#²«~ÙU¿ìÂÎëƒ";;#›Ú—M-²¹’{æÚ;¯W`Wd r%÷̵w^Ž+rõþ&¬ýÔÖÆöK¨ÿCÊnÜÛ#kë ìGבm½ñAµõÆÖÖÙØùaÓó`ëõ…‘·Í×^üŠüºøÜŸûÅ—øR.¾zÚºCçðÄ ‡Î[ ÕÀ·zñÝ“7:Ò—ºCðŒøÑ.~"i:tä/?Á#°zàW|ÂϤ~[ÐyVä×Å'?~sè|ó‡øŒßÏô9o‚ñÉÓ¡óŒÈ‹¯ŸÒ‚G a|Þ ¼0>µ9tÞãS‡Cç-0ràG¾ùùuñùkCð¬øUŸ±eÓ‡ÁGùkáóH5ð©^|FþzqÞÈ_·@AþFsš_óͯȯ‹÷ŸÔ#ßãñû}üîÇï·Àðã/‡Î[`b|Þ < ã3‹CçÀøÌáÐy lèô±:@ç-RàSºyŒÏ*Á#1>«9tÞ%¾ä›_‘_¯›»aXþt{`äuƒàÅÈ‹×M^€‘×m^€?#?/^·z‹Cç%Pm³7ôÆè< üpè¼’9tÞ9>ç›_‘__zàK¿øŠñIÉ!xÆ'e‡Î#0"?.¾c|Rqè¼F üH7?#?/~¶ÀÏvñ ùÓÛmõ}à'°"¿ßl+8táè¼ò—‡àÈÈŸÞ.›ï?äOowÍw„'P¿’‚G "¥8tä¯t‡Î[ !e8tÞù+Ó¡óÌÈÏ‹8~ÍÁ#0qüZ:ÀŠüºø…ñiÙ!x t[ÿù„ñÑÛi÷â'€ñiÍ¡óÈŸÖ:o‚ñiÓ¡ó =9@m¯íâ[|Ë7üõæÐy tä¯w‡Î[` }9tÞù‚÷ò7“Cð,äOo—Ýw¶… ðâgäçÅûïë‘Ïñøù>~ŽÇÏ÷ñK<~¹_sàk¾ùùuñ ã£o _ÿœ@ÇøÌåÐy ŒÏz‚÷Æg%‡Î[`b|Vqè¼V üJ7?#??m`äS|Ê7¿"¿.>#º\™¾¿<‚ü­éÐy TÏßrè<š¿d·óéûËÐýåH¶]œ¾¿<Ý_¾0=Á{`F~^ü¨õâ§?9t?~vè¼lý£Ö7 óXXÿ|áůȯ‹×ý¥ÀáÐy èþRàtè¼tàÅÈ‹¯5ðµ^|KoéægäçÅwä/W‡à9ð#ßüŠüºøÙ?ûůøU¾¼½ž´yƒ?"?.>!²œ1è¼2ò'˃Î#àÇ_·@Áñß@Åñe9dÐùäŸi ü¼ø†ñy7>€Î[ c|Juè<Y.tÞãS¦Cç-0Kàg¹ø…ñ©É!x µ:t¾ÚçÊê‡O¾¿<„üI9Ä ó RÎ0èüð/Š¿:o’_òÍ#ïÆ<µ¾ö‹o%ð­\|ߟ›‘?âñÇ}ü?ïãÏxüyÕÀ¯øŒõöztŒ,G :o„ñ‘å¨Aç-1>ýqÞŸÞ:oÒ_úÅWäO–‹·@{ßž›‘ßkà{½øüä¼fäçÅOäOÞ5è¼VüÊ7¿"¿_°¿üÂȧøT.>#£8t?~u輊:tÞÇŸCð‘ï럙:o_ÿÌéÐy0>²œ5è¼F üh?1>²œ5Þ+òëâò·²Cç%P±¿Ô Ðy ¤'ðé¹yäO^N6è¼l©ßPT~l©…_@ç˜à§Cç-`ûKýÈ: xlù…¿À‡Î[Àö—_yû}ý‹÷ãw‡Î[`öÀÏ~ñ«~•À7¬¾ðâøåÐy $Œ”{ ‚G c|t9Ôöúç0>y9tÞãS‡à¨]®´½¿<ùuñ­¾õ‹ïÈŸ.GÚÞ_îÀ@þê㼿š:o‰üÕîÐy ¬ø•n~F~¾c™m¹Ò÷þrò'å ƒà=€üéí¶ïýådä¯u‡Î[ äÀ—|ó+òëâ«8tÞ­¾•‹ïOàûsó)GtÞ£~Ô‹Ÿ)ð3ÝüŒü¼ø…ñiË¡óØ_f[ŽŒ½¿<ùuñ ùëÙ¡óÈÈŸ.WÆÞ_î@Aþútè<ÈŸÞNÇÞ_î@EþÄn2è¼ò7¦Cç@þÆrè¼:ò7‡à9ð#ßüŠüºø?ïã¯xüuÅã¯xü‰õÏF>•À§rñù |~n~D~\|©/õâk |M7ñ‘rœAç-Ð<áóè9ð=ß<ò§Ë‘¹÷—;0?].̽¿ÜÛ_»ÝϽ¿ÜÛ_~áÅãÓã¼ö—úR: ó°ý¥>Ô è<3òóâm©Æ& ó°ß×/¼øùyñ5¿ÞÇoñøí>¾­Š•CÖ^ÿ쀭tá è¼Æ'O‡Î[`>ŸÏÍc|Êã< ã£å޵÷—ïa¥Ã¼xäOì$ƒÎ[ µÀ§vñù“r‰Aç@þ¤\bÐy äO–Á#PKàk¹øö¾=7?"?.¾#59tÞ#~¤›Gþd¹cÐy Lä¯V‡Î[`ùñ›C瘑ŸOXÿèÆ Ðy ¤ø”oã#·Kƒàȱ‹ :o‚ñ‘Û¥Aç-PŸÀ×çæGäÇÅ7ŒÏx‚G §À÷tó3òóâG üh?‘?Ùntùuñ ù“å‚Aç«~8îAþd9`Ðy $äov‡à=€üÉvÕ x2ò'v‰Aç-P¿U:ò'vŠAç-Pkàk½ø–ßÒÍûñ§Cç-Ð[à{»øñ»Æ óèøTk–÷úglù…‘·ýå~ù‚ýå^üˆü¸xÛ_~aämù…?#?/Þö—_yÛ_~áůȯ‹ož¿äÐy tÏ_sè¼Æøñܼç¯;tÞùKÉ!xò'v—AçÀñ¥aÐy T¬¾0òÉ_:ÆG–K·@nÏíâ ÆGÊG`E~]|í¯ýâÆGÊÁ#Ð1>99tùqñ£~Ô‹Ÿ)ð3Ý<ò—³Cç-°¿\:/†ýå^<ò'Ë5ƒÎ[ !y8tÞ¹>—‹/ž¿éÐy?)Ç@Eþt9Õöïë4¿t‡Î#àÇ·@Çñu9ÑöúgƧ‡Î#€ñ‘ÇY ‚G`b|Zuè¼VüÊ7ñiÍ¡óèØ_jaÐy $Œ<.c<ù |~nùëÍ¡ó(ÈŸ.WúÞ_î@M¯éægäçÅ·øÖ.¾#}9täO—#}ï/w` c8tÞùË¡óXÈŸ”û ‚÷ò7›Cç%0°þ©¶œ{ý³É?:Àˆü¸ø\ŸëÅŒØ Gã#Ûqƒà¨-ðµ]|Ãøèrjìýå `|Vsè¼:Ægu‡Î[`”Àrñó ü|n~D~\¼í/›ÝîÇÞ_"0±¿ÔV@ç˜à«Cç-`ûË/Œ¼í/›-æÞ_žÀŠüºxÛ_~aämù…‘·ß×/¼øxüv¿Çã÷ûø#ÜÇ·õÏF~ÖÀÏzñËÇg9tùø…ý¥6S@Âøèrkíýå `|òã<ùÓÛñÚûË(ÈŸØ)·@Eþôv½öþò?½'Ð?½ïž¼'Б?½﮼ŸÀŒü¼øü•áÐy Ìø™o~E~]üê_ýË—¿¯_xñ+òëâS|ºŸãñó}üò¾<7ñ»©ì^½'P1>Rn)»[ï ´ø–nã#—ݱ÷z |o?0>R®)»kï'°"¿.~"²œ*»sï ,䯇Îí‚þ ò8MÙÝ{?äO')»ï $äO–Sewð=ŒüµáÐyfäçÅ—øÒ.¾"²œ2ÞÈŸ”› :o†ã÷êÐy t?~sè<8¾”sÊîè{ã3ŠCç-01>£:tÞë üzn~D~­}v‡Î[ ¥À§tó3òóâs |n_?)7•Ýã÷X‘__‘?±KÊîó{ ù“ÇÁËîô{ù“å`Ù½~?äov‡Î[` b§”Ýï÷&ò7§C瘑Ÿ¿?)§¯‚ý¥6Át_–{¥|Ö?øúG–{¥|Ö?Øú§Û×2v÷ßO`/·€­¾0ò¶þùÂÈÛúç /~D~\¼í/¿0ò¶¿Ô óÌÈÏ‹·ýeW;«ì~À'°¿T‚÷ò—ºCç%€¦ÀF>!b•ÝøòøüÜüˆü¸ø‚üI9Ä x*ò'åƒÎ#€ü‰]eÐy 4ä/O‡Î[ ãøb7•Ý%ø˜‘Ÿ?p|±‹Êî|3~æ›_‘_¿0>õq^h`äÆG— »gð'€ñ;§ì®Á'1>z»ß}ƒO  ò¸JÙƒ?ùyñµ¾¶‹o9ð-ßüŠüºøÞßûÅäO—»‹ð LäOo÷»ð'€üõä< ùëáóèØ_v-wtä¯/‡Î[ áøò8eÙ…O ãøc:t,‡Î[ ´À—vñ5¾æ›_‘_ßzà[¿ø^ßËÅ'ðã¹ùùqñùÓ¯í.Ã'°?½]ï>ßò·ªCð@«á¡-B·@ÊOùæWä×ÅçøÜ/¾ k8tÞù»É óŒÈ‹·ýå°ÛõØû˰ßWûŽAç‘?jàG½øéÇïG`‚·€­†ÝNwb  ñÐ6I€à=°ÀO‡Î[Àö—_yÛ_êÀ:oÛ_~áÅ#z»Ü‰O ÖÀ×zñ ù“rBÙ]‰?ùyñù“rCÙ‰O`äÀ|ó+òëâgüì¿JàW üÂþò /ù“ÇE ‚G ÕÀ§zñù |~n>?ßÇ/ñøå>~Åøèr`÷+þfäçÅ7ŒO·@Çøh9bw-þVä×ÅøÑ/~b|jq…üi¹`w/þ?½]ïþÅT40úà! xò'ÃÖÝÃø@þäqκ»Ÿ@nÏíâ òדCð@þzvè¼j|íßJà[¹øþ¾?7üI9Á ó8þHÁ#0q|)ÔÝ×øÀñGuè¼ÆGì–º{{ͼøùyñ ã#Ûñº;Ÿ@ÆøÈv¼îÇŸÆGn÷uw9>‚ñ‘íxÝ}ŽO –À×rñí |{nù›Ã¡óè5ð½^ü@þÄΩ»ãñ'€ü­Ç!x&ò'Ûýº»ŸÀBþd»^wßãO`E~>c©/N:oTŸÊÅûï«~ã;~_= ÇŸö]¿Ýùlý£Æ  ó°õ¾¸ è|ó¯íß:o[ÿ¨ñè¼lýó…?Á/‡Î[Àö—_yÛ_êƒÅ€à=°Àw‡Î[`!ò¸jÝ]‘=€¶ÈF>=OÏÍ#²Ü©»7ò dä/o‚ü‰ÝPwäOù“Û]Ý’O "ò8Aç-пZ‚÷ÀŠüºøÞßûÅøQn>ÜÇŸñøó>þŠÇ_ñøh™z;Þ“?Œ”ûëî|¥¾´‹¯9ð5ß¼ço:tÞ ù“Ç5êî¡|ùÓåÀî¢|ùkÕ¡ó ò¸FÝ”O`"­;tÞ ùëC𘑟oØ_~aäS|Ê7üér¥íýåøïë‘/9ð%ß|<~¹_ãñë}ü†ñÑåÌî¯|ý |nã£ËÝcùÆGÊ-uwY>‰ñCðÀøH»¶º;-ŸÀÂøˆQw¯e Ùr€üérf÷[>„üÉã(uw\>Œüérf÷\>ò¾<7?"?.¾ÖÀ×zñ-¾¥›Ÿ‘Ÿß‘?yÜÄ xFüÈ7¿"¿.~ÆãÏûøË_:ÀŠü çÀç|óÈŸ”[êîå|¥¾ô‹¯È_MÁ#ОÀ·çæGäÇÅ÷ø^/~ ºÜ[{yÈ_·ÀlŸíâ—:tùùåú; \·@ÊOùæ1>²œk»¿ó dŒØ5m÷w>‚ñéË¡ó¨Y´Ýßù‘ß0>²h»¿ó ôøžnùÓ¡óÈßX·ÀÌŸùæWä×ůøÕþÎC_ @Bþ¤œAç@þÄŽ1è¼r |®_?)§t?þrè¼*Ž/Ë…¶û;Ÿ@ÃñWqè<¹·Ýßù:Æg5‡Î[``|Äîi»¿ó'°"¿.~b|Öpè¼ÆGÊ1m÷wöú;xñ#òãâS |ªŸ=Ë¡óÌÈÏ‹×ýå|t9ÑvçÐýå´v¶m÷wþ–ñò¸gÛýO@÷—S‡:oÝ_Nk§j<º¿œú`! ó ðÍ¡óÐýåÔÆc€Î[`ùñ§Cçðã/‡ÎKýŒ¼®¦>øÞ3òóâs |n_ràK¾yŒ”ƒÚîï|µ¾ö‹oiÇÞvçèOàûsóÈ_Y·À¨õâg üL7üI9§íþÎ'°?¹·ÝßÙèï<õÆè<ÈŸ”CÚîï| ù;Å óÈÈ_·@y_ž›‘_ãñë}üßîã·xüv¿c|ÄÎi»¿ó Œ´“o»¿ó'€ñ‘Ç1Ûîï|³~¶‹_9ð+ß<ÆG^Gn»¿³Ðß9ÀÈ'äO윶û;Ÿ@~ŸŸ›‘_jàK½øŠü‰]ÔvçOù»¨íþÎ'пÑ:oŽü‰ÔvçOùÓåNóýå ŒøÑ/~zþ–Cç-࿯^<Ž?«Cð@ç©N:o„ãËãšm÷wþ0>«:@®Ïõâ Ægu‡Î#0#?/¾b|ôv»û;Ÿ@Ëoùæu|¬ÝlÛýO@÷—S?ìè¼t9­ÝkÛýO@÷—ÓÚ™¶Ýßù‘¯ûË¿<ú;¿Po绿ó'0#?/^÷—ÓÚ‘¶Ýßùt)p8täOoÇÃ÷—'PzàK¿øŠü‰]b¼püR:o†ã×Ç!x:Ž_«Cç-0žÀçæ1>u:tÞ³~Ö‹_½]íþΟÆGÊõm÷wöú;ù„ñ‘r~Ûý?äOo'»¿ó äøÜ/¾ R®o»¿ó TäOoG»¿ó'€üévu÷w>†üÇ!xz |O7?#?/~ z;˜¾¿<‰üæÐy¿1:oÕ¿zàÑß9À‹_‘_ŸzàÓ}ü\ŸËÅ—'ðå¹yŒÞ.v稽ìþÎ'Ð0>º]Ýý?ŒÏœ·@oïíâò7—Cç@þt»»û;ŸÀìŸýâò§·£ÝߎþÎ^¼æO7ž€Êï€î/§6žtÞº¿œúb  óLðáó°ýeÖÛ‘Aç-`ûKý¬3 x,ðÅ¡óh-ð­]|÷ãW‡Î#àÇo·€­¬]dßýOÀÖ?Ö²ïþÎ'`ëݘ:Àˆü<ú;OmÜè¼R |J7ñ‘í\ßýO #r;뻿ó ä¯T‡Î#€üÉv¬ïþÎ'P‘?¹ÝõÝßùòW“Cç-Б¿š:Àˆü¸øüÕâÐy Lä¯V‡Î#0#?/~µÀ¯øŒß׬ëtùyñÉß:oœŸóÍc|d;Ûwç(=ð¥_|õñ™·@óñYGã#¯ ôÝßù:Ƨu‡Î[``|Äîó'€üõêÐy LäOn·}÷w>…üÍä¼?±‹ûîïìôw0ò©>•‹ÏOàósó#òãâK |©_Sàkºùùyñþûz`ä{<~¿ßýøÝ¡ó~üéÐy LŸåÐy0>z»ÛýO`a|¤\Ûwg ¿s€‘O)·öÝßùÀøÈv­ïþÎ'`ûËb·ÃÝßùlù…?Á/‡Î[Àö—_yÛ_~áůȯ‹·ýe±Ûåîï|¶¿´v}÷w>Û_~áÅðÝ¡óXÈŸÞNëÞ_"а¿ü‹Gþ¤lÐy $?þrè¼r |N7ãëír÷w>Ò_ÚÅWŒÞNwçO`E~]|ëoýâ{ |/?0>¥9tŒ´껿ó LäOo×»¿ó ,ä¯V‡Î#€üÕæÐy  ¿ó,v»ÙýO !ò8Zßý?äOìʾû;Ÿ@Fþôv³û;Ÿ@)/åâ+ò'ÛIƒà=0"?.¾ÕÀ·zñ=¾§›÷ãW‡Î[`øñ»Cç-0Sàgºùùyñ ã#Ûå¾û;{ý§µC컿ó'€ñ‘reßýO a|d»×wçȽ]ïþÎ'P0>z;Úý?äOÊ}÷w>Z_ëÅ7äou‡à=€üéíb÷w>Û_Vû¹ßýOÀö—_xñ ürè¼l©7.@ðØþÒÚÙt^ûKkggÐy†ñ¹8€ý¾VÛŽÌýûºù |~nÞß:oâÇ_·€­¾ðâ§ñb—õÝßùÆGW黿ó ôøžoãSšCç-0zàG¿øY?Ëů'ðë¹ùùxôwžÖ.®ïþÎ'?y]©ïþΟò§?÷»¿ó däO·»¿ó ”ø’o~E~]|í¯ýâ[ |+ߟÀ÷çæq|±ûúîï|ÇןÛÝßùæøùÜüˆü¸ø…ñéÝ¡óo` ¿óÔÆ‹€Î#€ñ‘×Çîï| ã#vÒØýO c|¤7vçOã#£ŒÝßù ò'cŒÝßù*ò·ºCç-`ûKk6vçO`€o·€í/¿0ò¶¿Ô…! óLðË¡ó°ýåFÞö—_xñËøô8¯„ý¥>˜è¼l©)GÀ?:oŒãçÇ!x Ž/?gc÷w>Šñ)Ù¡ó`|d¹;vçhYŽŽÝßùz |O7?#?/~`|êã<ãS“Cç@þjvè¼VüêGç#ŸžÀ§çæ‘?ù9»¿ó däOÊ-c÷w>‚üÉÏÕØý?ùyñù“rAç-Ðrà[¾yäOì ƒÎ[ #ýqãËÏáØý?ùuñ³~ö‹_ŸÞ:/ôwðâ1>RN»¿ó ¤øT/>c|ôçx÷wþ0>²»¿ó ŒÏ|‚G "²»¿ó'€üÍæÐy 4äOÇ»¿ó täOÊ-c÷w>ü­æÐy4ÖÎhìþÎ'`ûKmüè¼lù…?Áw‡ÎK bÙíç¸îýåØþ²ÛÏqÝûËXà›Cç-qüü8@Áñ¥Ü?vçOÇ—åôØýOÀÖ?Ý~îvç°õ¾˜è¼lý£.:Ƨ>Á#0jàG½ø™?ÓÍc|ôçn÷w>…üÕîÐy  ¿óìös¸û;ÈŸ” Æîï| ùÓŸ»Ýßù2ò'儱û;Ÿ@Aþôçl÷wþFäÇÅWä¯?Á#Ð?)wtùyñù“rAç-0¿Þ:€8tÞÓ?:o•¿òÍc|Æã¼Ðßyv[ŽîþÎ'0>ò8ÓØýO c|¤\0vçOã£?‡»¿ó ŒÏ\·@M¯éæ5ÖŽeìþÎ'`ûËaËÑÝßùliíXÆîïü ,ðË¡ó°ýå°Ÿ«ÝßùliíZÆîï|¶¿ösµû;Ãx]îíþÎØ_û9{¹¶¿ÔoGùÓŸ£±÷—;‘¿š‚G ¤À—tó8¾”Çîï|Ç—ÇaÆîï| ãÓ³CðÀøèå¶û;Ÿ@Çøèå´û;ŸÀ(åâçøùÜüˆü¸øU¿jàÑßy»wçO`F~^|jOíâ3ò'³ŒÝßùX‘__?½\wç¨%ðµ\|{ßž›Gþ¤\hÐy täo6‡Î[` ºš{yÈŸ” :o[ÿX»†±û;Ÿ€­¾ðâ'øìÐy  ¿ó´vc÷w>[ÿX;†±û;+òëâmiíÆîï|¶¿´vc÷w>Û_Z;„±û;ürè¼ò§Ë¥Ýßù:ò—‡C瘑Ÿ?¿’‚G`"e8tùuñ ù«Ù!x LôwžÖÎ`îþÎ'?Ùtùqñù“å€Aðä¯/‡Î#€ãËãls÷w>ŠãËízîþÎ'Ðp|)7ÍÝßùÀøÌì<ã3‹Cç-00>³;tùuñ³~ö‹_%ð«ý§¾¸ è<#òãâò'‹ÍÝßù2ò'Ûµ¹û;š?{zîþÎ'`ûK{zîþÎ'`û˥ˉ¹û; |wè¼l©…c@ç-`ûK}q<¶¿ü‹à»Cç-`¿¯_ù…ã—ì¼püÒ:/ôwžúÃ[ÿØë¤s÷wþ0>b—ÎÝßù2ÆG^ט»¿ó ”ø’oãÓ“CðTŒ”;æîï| ãÓ‡Cç-ПÀ÷çæ‘¿‘‚G`ÔÀzñùÕ¡ó óq…üÍäÐy  ¿s€üéÏIÙûËHÈŸØ…·@Fþd¹`Ðy äO/÷²÷—'€üÉvàó¨8¾´«š»¿ó ´'ðí¹ùùqñ㳪Cç-00>²œ™»¿ó' ã³ìuùû;Ÿ€î/Œ¼î/¼ø~9t^èï¼ìuŹû;Ÿ€î/—¾ø è¼t¹ìuùû;üpè¼t`äuàÅ#òºâÜýO !úsµû;Ÿ@GþÊtè<È_MÁ#0?)ÇtÞ³~–‹_È_G G¾ý—¾ø „ã·éÐy0>²]›»¿ó dŒ.wvç(Ÿ>:ÆGÚÉÍÝßù*ÆGoÇ»¿ó 4ŒÏªG`E~]¼î/W²Ëa÷w>Ý_.mè¼tàÅÈ‹×ýe€_ý—½Ž4wçO`F~^¼î/Œ¼î/¼øùuñù“Ç :oŠüéåÞý÷õÀñu9±û;Ÿ@ÃñõrÞýO ãøb·ÍÝßùƧ4‡Î#€ñ©É!x&ÆGìš¹û;ŸÀJ_éæ1>­9t^èï¼’-'vçH½ÜvçO`E~]|îÏýâ ò§ËÝßù*ò§—ëîïü #9@CþFvè¼:ò'vÍÜý?äOÊ‘·Àhíâ'ò§?Ã÷—Ÿò·¦Cç-`¿¯jL*ú;xñ |wè¼’8tÞºþYö:ÆÜýO@×?Ë^ǘ»¿ó'0ŒÏÃ!xt¹²ÝwçÐýe€?/Í!xt¹ìqÿ¹û;ŸÀ@þÚ†à=°"¿.~"}:ÀBþ¤œ6wg ¿³ÀâÐyFäÇÅ'äO—Ó»¿ó äøœnùÓåìòýå äO—³Ë÷—'P‘¿õ8ïùyñ Ç_Í¡óè9ð=ß<ÆGG™»¿ó ØúGa@åwÀÖ?ÚÐy ØúÇ·ž»¿ó'0ŒOÅ!x ,ôw^ö¸ôÚýO@÷—K_ï ~:tÞº¿\ö¸óÚýO@÷—Ëg^»¿ó'°Œ—íîÚýO "RÎZ»¿ó 4䯇àèÈ_GùkË¡óÈ_ÏÁ#0SàgºyäO¦»Að,äot‡ÎKý—}î{íþΟÀŒü¼øÔŸÚÅçøœo~E~]|é/ýâ+ÆG¶Ók÷w>†ñ‘rÜÚý?Œü¬Ýßù:ÆG–³k÷w>ü­æÐy4ö9éµû;Ÿ€í/íqÚµû;Ÿ€í/ísÌk÷wþ–ñ¹:¯ôw^ö¹ßµû;Ÿ€í/ís¼k÷w>Û_V½¬Ýßù‘oûË/Œ¼í/íqFƒà=€ü‰ÝeÐy 4_ìðµû;Ÿ@OïéægäçÅøÑ.~b|äqüµû;Ÿþ8ÀÂøôäÐy  ¿ó²Ïá®ÝßùÆG/‡ÝßùÀøÌä<ù›Ã¡ó(ÈßœGù“ÛÝÚýÿ?ÖÞ¦g{æ¸Ü?¿â^J‹Øìïî­5qcL"Y^hl!㵄Häï«NU5Ù—’Hçž…õºªÎ¹y=Í&ÙU‡¬ÞŽjã§—KôwÞŽfã·†›7‡ŽŸ6N1Sãá@~Ùp¹Dçí@~ù4ßqä—Ø.¦ÅÝ1Ï—›7òˆ˭D~iŽj÷W¼®Óâîïø8⩾â©ñl_äâýŽiñå¦ÇáÀú¯Û­èï¼XÿàuºýŽõޝ#Þú+Þúïv~zuÓâæv~zsÓãæ°ñ“rÈŠþÎÛ1müÆå¦Åͱlü$]ZÑßùá°ñÓË)ú;»Ãú;/m8òˉt'ú;oòK¼Ž³¢¿óñ—×™WôwÞä—‹èï¼È/ñºËŠþÎÛürb9ýŽñŽ#Þë+ÞëééŒÛøétŽþÎÛ1Û+>Û_6~RÎ…iqwØø­ä¦ÅoG¾.Ë/µðg¦ÇáÀýUÛm›©ñíXïø:âXÿhã%3=Gñ¿¿Üô8Xÿ<Í#>¿—ËfZÜXÿè‡}fzä—K¶fZÜñûÂ5Óâæ@~©¯;˜éq8_êëfzÜ2~éÒÎKf àáÑ Síìv Äc=žÕnÍ2ž¯*³ážaˆœÜv„y4Ó|ÛBsMµ³Û0ÏtDw;ðh¾)vÉn;Â<šq¾íácz?­Í<ÝÇ´f·ažáG©Ëí@˜ÇÒŠÛŽ0ÏìoÄì'bù™ëa;B=ÖÿùmŸˆq ƉH~æfvÛæÉ~æfu;æ™bžˆâgn…íóTÓÕÜ„yÖX'¢ù˜®áv àéÓ„«#ZB?<ãrDw;æŽXnžY ‘ºÛŽ0ÏJoÄJˆi½~²'§á)ÈNÕ.nž”߈”?ë@¬‘£ä£?J Ûîñ£´ì¶#ÌS»#ŠÛ€§ù™kÍí@ÀÓ¯7¢_?szÿކÑÏð3×§ÛŽ0ÏLoÄLˆy æ‰X>¦ãrÛê±ÎÑj'·aÓYÜv„yR#R?¹¼¹œˆ‚1UEÖl ¶g"%·ažZ Q.·až– QÃv„{¦#’Û€§7C´ËmG˜ÇîÚOûDøQZu;ðÌöFÌv"V¥»ó,G ·!ë+-v_n;Â<©bN·ažìgn ·á?skºx ΜÞZÌ"<59b¸óLG,·OkoDk'¢gC¤ËmG¸g9"¹xFwDw;ðÌbˆ|¹íó¬ËÉí@˜gˆñFtä¼bëj£{Òûð$S]wO{ŸÓ2Ý<¹½¹ˆ’Þˆ’>~½û^…§úQt=Ý÷z,<ÍÏœÞÅû^mÏ:ëDt?s=»íóŒòFŒr"æõFÌëág®·Ïò3§×`´£õ£[ïâÑúé™bžˆäcª«¯hJýðdŒiEm©Ÿžu Ö‰(ÝÓí@ÀS‹!ruÛæi—#†Û0Ï0D ÛæéÕÓí@À3’!juÛîñ£hÖ6öz,<ÓÒ’ÛŽ0Ïò£´åv Ì3 ¡ëæ±×c晾SõÍlG˜'ù™ÓõêÜë±íñ3§÷è¹×cáÉ8s «ÑhZýð”âˆáv à©—!RrÛîŽènžV ¡Ù[4¯~xz2„Þ×¢}õÓ3Ä<£½£ˆ™ Q³ÛŽpÏ:ëD,ÓZÜ„x–gÑ sní,:<éz#Òõð1íÅmG˜'û˜êýdí,:<Å2²ÛŽpe·O­oD­'¢ù™Ó:ÐÚë±íñ3·ºÛ€§·7¢·a뱎µözl{–!ôn±vË¢;îkgÑá±,º£&´v Oº<‹VÕÇlG¸gˆq",‹VÆì@ÀcY´ö0;晎˜nË¢µ“ŸÙŽ0Oõ1•µfºv½=>¦=lG˜§õ7¢õÑËÑˉ>¦£ºí÷ø˜Þ d³ažéGYÃí@Àcë1ÕsÌb{†!îÙŽPOòõØÓ>¶SýÇì@˜g:b¹xl=¦ßp›íóX­_q›ó,CHõ0¥E‡Ç²hU‚Ì<–E?íÑ}LÇrÛîñ1ÍmG˜gÔ7bÔ1}Lgw;æ™bžË¢õkd³0Oö,Z÷c7ÛîY†È—ÛŽ0eѺ'ºÙ€Ç²hÝÿÓlG˜ÇîÚWzÞwííñ£´â¶#ÌSý(:ò^…§ùQäIò^mÏ8ãDØzLµ³­Çžö‰˜Ž˜nË¢õ‹o³aË¢õ!iv ̳ ѓێPOñ,zéÓ5•E‡Ç²hUfÌ<–Eë·ÙfÂ<ã@ŒQ|LåžÊ΢ÃS}Lçå¶#Üãcªs¿ì,:<­½­ˆîcº.·áSy|u·±=È¢”Ø€wí¤{è™í÷øQôîmµžåGiÕmG¨Ç:k‹­Ï›h­ýð`=–ô­\³ažaˆQÝv„y°{ÙYtÒÞ}fÂ<Ó3lG˜YtJ¸kE›í‡YôË>Ë©ºíó ‹Nú¯Ù€YtB:E»í‡YtJ¸£áöÓ3±Ü<È¢S“1šn‡Çºn'<¾Ìv„{¦#†Û€'ù˜êÊ©E½=ÙÇ´-·áS½Ÿ´È¢·§ø˜êÝ¢Å]{{ªE²û-¸Ÿ?Šd€)šp?<Ͳ–Û€뱄šlŠFÜÖcI{ší÷ G$·²h±—Û€Y4_f;Â=ó@Ì7Âzr‹­ëæhÊýð ‹~Ù'b9¢¹xE§ŒÙ­¹žâcªë³hÎýðÔë¨×bˆq"šé Ûæé>¦³¹óø˜®ê¶#̃,:¡j ˆð ‹N×q,úáYŽ˜nžåGÉÙmG¨Çúu«]Ý„yü(z¥GËî‡ë±TÏDÓî‡ë1±§Û€뱤ÿÌv„{pæ*։ѺûáA*î¯Ñ¼ûáA*òˆhßýôLCh& ¼dÑ/û@ ‹N¨†¥hâýô,C´°adÑIß°5ÛæA*æ\´òõòV»»óø˜J !E;ï‡'ù˜Êû%)z?<È¢SÃÏÈ¢žiˆ¶#̃,:éû²f;ÂÃÕí@Àƒ,:C«‡íó ‹ÎúBŽÙŽpƺ2l ƒõXÖ^Åf;Â#f;Âl½cmMÿ¶~)ù°µiõÃÖor¶®L6d°—nñ°“¦ÛÖ­È6äÎmkÞó°µIÆÃV*lûÈûak­óak“ª‡­o<쮥†mëV!{éõvB¡Û(»lslûõ(ú!1lÎG;ºÄoû¹SÇë¹Síâ²çNC_9î4´ ÷çNCšäÏEÏŸ;gûs§£»?w:>jòçNÇþÜøœÞŸ;¶}¢?wl7µØKpàgϽx;]èíÞ;túsgbã1î`÷œýÜÁŠÂŸ;˜€ñÜA«ÇýÜiþ±çöœz>w®ü|î 'Á~îdÎØs§ØsÀž;Wó¿‡çÞÖÞÏûd%ž;öñÀ~î@ÈŠçNJvµçN*v´çNBQ1ž; =Ð㹓ºÛñ‚ˆáñÜ"»Ÿ; =Jâ¹eðñܱ‡|ó‰çŽ<§¯Çs'c©NLûûöÜÉËΗ=wä´\çNÆ-ñÜÉçã¹cÉFw®ã¹sÏt¹ç"•=Ýw.RÙÓOQæ"•½¡ô"•=ý:}]¤²çln¥lö—asõgsõ–`“W Ø\½ÅÙ\½ÅÙœ²§kÌu‘Êž³9eO[š¬‹Tö‚ÍÎ5esÊ؉Tö‚MεQ„Í){Îæ”=}gþfsÊž¶&69×îyr³9eO3’›Í){Á&çØìJl®Þìoýr®Þ¢Mâðy"ÇÊ&¯ag²ÞâlNÙs6§ì›¼JÀæ”=gsÊ^°É¹vÿgeRÙs6§ì›kÊæ”=gsÊž³9e/Øì\»Ù…TöœÍ){ÁþÆ\+d½E¿ ’o'©_lê—kuk²Þâl®Þ¢Ö ›ºJœÍ){Ú6[¾S§®­ê­B*{ÚFDØÔU¢³ßlNÙӊ⪤²§Z¯J*{º/äÍæ”=gsÊž¶ÜY•Tö´ñÒª¤²7%]•Töt¯ÌUIeO[ô¬J*{úãÍæ”=Ý£àfs+MýˆU²Þ2%ó–ïÏÉ_^u¶põ–)ëa“WI½¯ïFÖ[´CÀjd½EëîÂ&¯’{Ž®F*{Îæ”½)™Øj¤²§íW#•½©“F*{ºìÍæ”=me!lr®Í){ú5îj¤²75÷o¤²§XV#•½©¹'•=Ý­÷fsÊžîe²:©ìi«’Õ长ìÂæê-SV,«“õí%²:Yo™šûw²Þlò*›«·8›Sö‚M^%`sÊž³9eìA*{Á&çÚÒ–%œ²çlNÙ 6;×”Í){Îæ”½`³sm ›SöœÍ){º‰ëÍæ”½`SsMwUG'£o°¹z‹6˜\ƒ¬·€=Éz‹³¹zK°©«ÄÙœ²çlNÙ 6u•8›SöœÍ){Îæ”½`³sm ›SöœÍ){Á&çšÔz&©ìi¿k48ü›œkRóX¤²·¤Òr³9eOyk‘+Mí.lö—+›«·è;9ÒH›ýåzƸz‹Ž×Zd½ÅÙ\½E›?¯E*{ºéÑÍæ”=í–³©ìé¹6y•ÜliMÊI{Aç´½%µs¡sâÞ¦“óíž§Bçä½%¥{¡súžî/©trÊõ®tNáÓæÚBç$>}Léä¬3:'ò]u:ýñSé\õeI6›®D–_´I”йú‹Þ£”N^2Fç*0º™‘Ð9±O_T:yÉ“û´E–Ð9½OÛÑ+œuÒûJ¤âtJòËÚãVè”æ÷ 3³nÓ)ÕÏ陓ýtfÖm:%üm:¥üa\¥3³Ûk§ròǧKéTI&kgb¥“?>a訢̦SU™M§Ê2Y—TJ'/™T•NI€›Ni€Ø+Zéä%£ô©€›NÉ€:;ë–Ò)!pÓ)%{p ’±¶ÒÉY—‡Ò)10k;E¡Sj`Ö…¼ÒÉY'Û1\…Ó³¾íž°;E¯èä7:U¨qzå*5B¯ “—LmJ§j5›Nk²¦PB§ª5:yÉhZ9epÓ)iPètrÖõ¤tJ:¦ ¥>èä¬3:¥fݦEè”@˜/$àS³nÚ¢trÖMÐ)0kæ-tJ$:ö²£TÂ¬Û êö8ä¬3:U·yп÷㩺ͦSu›¼dŒNÕm6ªÛdìŸt5N.¼é sžÒ ³n/›0Q‚aÖæ¿B§Ã|¡øÐ9ÉpÓ)ÍpÓ)ÑðA'gÑ)ÙpÓ)Ý0_¨œtN8ÌIw}¹:§fíúœ°§G_J§´Ã›žptnQšw²ncôAÖm2èAÖm‚ÎÕm²ÈAÖm´@«tê’ :¥!n:%" })Re§ tò’1:¥#n:%$>èä¬3:%%n:¥% ç}‘³Né“77tvÖN‰‰›Î-J7üñåÂnÒä/Yé\Ý&I­Kéä%S°6W· :W·Ñ ”N^2Ztšœ˜xÓµn³81QèI锘ø “³Nv^½é”˜(ô®tJL|ÐÉY'ÒÊfªä¬“Ýn¯Å‰‰Y?½W:9ëŒN‰‰9akúEЉAçÄÄM'gÑÙE©Ð±;â·èßøñé"ë6Açê6›N^2R«¼é\Ý&蜘¨ý&”N^2=+“äBçÄÄ sb¢ö»P:9ëþ휘tNLÜtrÖÝw)Ù ›“dÞBçÄÄM'gÑ911蜘tNLÔýÀ•Îκ®t®n£» ­ÛH…<%ºn31ëØºÑÙºÍĉcë6òš–lO^2Rh•ýŽÉKfeÐÉKFê´7ƒÎ‰‰:fBçÄĤµJ¡“³NÞ1»éœ˜¨í„Ή‰ºÿ•Ò©Y§'\蜘˜õ]£”I1QÛ)šuAçÄD­BçÄD£rQºéì_Jçê6Açê6›N]2Açê6Y–ÒBçê6úZŸÒÉKFÊ>7³¾osÓ91Q÷}S:yÉHåä¦sbbÐ911蜘¨»Ö)œuRúH•³¾ñrÓ91Q›Š)œuFçÄD}S蜘¸éä¬kU霘˜‘„VrQš‘„V²nt®n“õ‹•›ÎÕm‚ÎÕm6¼dä{™›ÎÕmŒÞH1qÓÉKÆèœ˜˜õ=+Ù\¼d´vÑH11蜘tNLÌúš6ûæètrÖ Œ<'&f$¡u5ªtrÖMÌ:NLÌú©‘l8JÎ:§“³Né^”«Ûlú÷~·)•\”v$à•¬ÛèNJ'üÄçê6úá»Ð¹ºÍ¦“—ŒÑ¹ºMÐ911蜘¸éä%£ôFЉAçÄÄ®[óuS霘ؑÇ5RLìò¥“³Î蜘tNL :'&n:5ë†~jtÓ91Q·v:'&j§ ¥S³n¨^Y·1z'ë6›Îþø¥t®n3Ev²n£/(ºdtS¡sbâІ¥“bbÐ91q 줘tNLÔ'BçÄÄM'g¼ÜtNLœª¿×DЉ›NÎ:£sb¢îì*tNLœš×DЉÚiR蜘¨/Î §~¼/trÖUƒÎ‰‰›þŸÉºMйºMйºÍ¦“—ŒÑ¹ºn,t®n³éä%#ïÏßtNLÔîªBçÄÄMgg蜘8u‹Õ›Î‰‰S–BçÄÄ)C®trÖÉËÿµbbÐ91QËJ'g]ÏJçÄDíª+tNLÜtrÖ]”«Ûlú÷~„Ή‰AçÄÄ¥¼ÔAЉK?x¹éœ˜tNLÜtrÖi½n’‹Ò¥ +ê$ë6›Nþx£su› su›¥Ý6„N^2Fçê6ªÛ ÒÿIЉK¿X©“ÒÿIЉ éÿ$ÅÄ…ô’bbÐ91Q7ÕIu‘b⦓³N^¹éœ˜tNL :'&.^)&.TN)&.T)&ênHJ'gt]¸é\ÝfᥑEÖm–v]¨‹¬Û,$à‹¬Ûhg¡su›…ü}‰ÅÑï×.RLÔà ¥­Î¥tJL|ЙKfÓ)1qÓ)1ñAgfГÒ)1±èbB§ÄÄ¢ˆ)™uè‡$tJL,:Ý„N‰‰h§$tJL”vJ:JL,úvXj‰…>•N-J‹nž¦tòǪ۠•”ЩºÐ3èä%#yÜM§ê6›NÕmtò’1:%&½É …Þ”N‰‰E÷ÜS:;ë0ç)1±è:µÌ‰‰:9ëŒN‰‰è&tJL,ú:§ÒÉY'YäM§ÄDt_:%& ½*ѼMéä¬ëø·S‹ÒM§ê6ú÷~èä%ctJLÜtJLÜtJLDÇA¥“³N¾—¹é”˜¸é”˜ø “³N¶hi…7‹nŽªtrÖÉç67^91±è›ïB§ÄÄœuRxi•«Û Ï¥Ð©ºÐèä_ø·Su¡w¥Su›¢IŒÒÉKF«•7Ñ"TéÔ%tJL, )påÄDé0*“¶qb"”*šuIUàÖ81qÓ)1ñA§f~í!tJLÜtJL,º²ÒÉY§tãÄÄ’A7NL:f·(MúÕ†ÐÙ¡ãê6I¥ÌÖȺMB*ÔȺÑ;Y·IȤ:Y·Ñ¯|”N^2šIuNL,ú‘Ð)1ñA'/Íã:'&JK`Œ<%&n:%&Ý\éä¬ë˜u”˜Xtÿp¡SbbÑϳ”NÎ:£Sb¢Ó'&–„\fpb¢Ð§Ò)1±$¬¨¹(Ýtòǫ۫۫Ûl:yÉ«Û$dƒ…ŽiC‰‰B_J§ÄD´:%&>è䬓¯ïÛäÄÄ¢õ]¡sbbÐ911!š¤˜tNLÌÐã&)&fmý×&)&fm¾×&)&f¤B“3R¡IЉ©Ð$¥Açê6›Îþø®t®n“õMæ¶ÈºMйºMF&µÈºMÖw‰Û"ÅÄ sbb†»H11蜘˜¡Ç-RLÌÐã)&fäq‹3$­EЉyÜ"ÅĬ/…¶EЉAçÄĬz\¿H1qÓÉY'o´ÞtNL :'&n:ûã§Ò¹ºMйºÍ¦“—ŒÑ¹ºMÖÏço:W· :W·ÉZ=:yɈŒ{Ó91Q³¦ÿý"ÅĬßA÷DЉYðžH11k*trÖMÐ911ë׸7ƒÎ‰‰›NÎ:£sbbÐ91qÓÉYgtNL :W·Ùôïýx®n“5‡í™¬ÛèKJ'/£suí"t®n“å?BçÄÄM§.™¢ï”öLЉE±žI1Q7R:5늾zÓ91QÛ«7šuAçÄD}WE蜘¨{1¥^H1Q[Ë(œuFçÄD}ÑF蜘Xôu\¡“³NrØ›ÎÕmŠª7«Û•ó„Nþx£su›¢YäMçê6E³H¡“—LÁÐqu› sbbÐ91qÓÉKF镵’Ð91Q·/S:9ëD ½éœ˜XIURL,*¤ œušŒTRL,úeâMçÄDݺM蜘X URLÔ߄Ή‰A祛ÎþxŒ£¾éœ˜tNLœÚMKèä¬SIk‘b"ö¾éœ˜ˆ}…Nͺ…âÃ"ÅDl/;)&b‡Ö±H1;´ŽEŠ‰Ø¡u^¤˜ˆ]JçEÖm6üñò€¾é\Ý[m΋¬Û,Éÿ”N]2Øìr^dÝFߌ:W·ÑVRJ'/£sb¢îü&tNL\úÞżH1ûE΋ƒÎ‰‰ÚF+ÍDЉ›NÎ:ù¸o&RLÄ®…77œuFçÄDݲO蜘ˆ-g"ÅDl¹(trÖÉóý¦suì™xÓ¹º öL:ùãÎÕm‚ÎÕm°å¢Ð™K¦bç¾™¹ºMÅÞy3sbâƒÎ\2›N‰‰7]j7+vî»é”˜X±õÞÌœ˜X±wÞM§ÄÄŠÍïn:%&>èä¬3:%&n:%&Vì73'&Vl‚vÓ)1±^XNL¬ÚóOèÔ¢ôA'¼¼ñ2 W·©úµÐ©ºMÕ†…J'/™Ž£Su¡ãÄQu›ŠÝ¬fáê67}àÇSbâMùþ¦Sb¢Ðèä%³pâ(1qÓ)1±bw›Y91ñ¦K]èÔ¬KxÊTNLÜtJL|ЩY—äW 7tjÖ7Z”VÝ–Véä×ç{åê65¡øP¹ºÍ¦Su›šð„­\ݦꦸi6®nsÓõ Û81ñ¦ëS¦qbâ¦SbbÕJ蔘X5…R:9ë:†Ž77kBí¢qbâ¦Sb¢Ðñã)1ñA'g¼š8'&VmΚfçÄÄœuú|ïä¢T7C:U·©šû*úñYô¡Su›ª[1 ªÛÜt]œt®n#ô:uÉkÆS¦sbbÍH;'& Ó†«öµ:%&ÖŒw‹¢ëSfpbâ¦SbâM×ddpbbÕ¾¶J'gÝhJ§ÄÄM§ÄD¡cè(1±ê&ØB§ÄÄšQhœ˜XÑÎzrQš‘E²n£-…ÎÕmt n¥³?t®nƒvÖs’u­÷«Ûh?c¥S— z2ßtJL¬úy–Ð)1±¢+²Ð©K¦à>?91±¢±ðM§ÄÄšuh,|Ó)1±êÇaB§ÄÄŠî¸srbbEƒY¡“³®ãÄQbbÕ^Îi.NL¬èÑ*trÖ+ÞtnQŠF£B'¼.ÈY· :W·Ùtò’1:W· :W· :%& “–+z´ÞtJL:¦ %&Vm®trÖÉv]¤˜¨V¡sb"š¬ šuèSzÓ91Bo:'&V}ÊÜtNLDÓE¡S³N;ˆ ƒÎ‰‰›NÍ:4¼éÜ¢TÛŸ «ÛèלJg|S:W·1z"ë6›N^2ò¢ÔMçê6UŸï+‘bbÕjáJ¤˜Xµb¶)&¢íáJ¤˜¨…y¡sbb•¼ÒÉYgtNL¬š®DЉUŸ2+‘b¢þG蜘ˆ®‰7›Š‰+“b"š.®LЉè[xÓ91­ÿn:'&6<ã2¹(E뿕ɺMйºÍ¦“?^vúX™¬Û4}óá¦suôp:uÉ  Ûʤ˜tNL :'&¢Ùʤ˜hôBЉM?·Y…ÑÇlRLlZ«¼éœ˜¨b”Ð91Q?þV:9ëþ휘ØôÅțΉ‰ O™BЉ O™BЉºÕƒÐ91±#*ä¢Ä„Nþø„iÃÕmô»ù´*Y·é¸QW²nƒnZ7«Û«Ûl:uÉ —×MçÄĮ徛Ή‰ºK†Ð91Ý´„NÎ:Íã*)&v$#•ÑÓIè䬓^7ÑÓiURLDW¥¥E×õ|#ÅÄŽû|#ÅÄ sb¢nñ¡tjÖiÇ¡s‹Rô5ºé\Ý}„Nþx½Q7²nƒÖ@7«Ûl:uÉ íÙ¸Y·¨˜5RLÔn J§.™ sbâЗV'ÅÄ sbâÀ‚¼“bâÀŠº“bâСo:'&n:9ëôNÛI11蜘¨*”Nκ;'&j§ ¡sbâÐϬn:'&Bçê6hP³Y·™úŽÙdÝ jn:W·A‹˜›ÎÕm6ºd‚Ή‰AçÄÄ©_  ºdÐ"f RLÔ7&„Ή‰úʃÐ91J„NÎ:½ÏRL :'&n:9ë”>I1mRn:'&n:9ëD^“Ѱâ¦sb"Vúñè.¥Sbb+xH5NLÜtJLÜtJLlºãŸÒ©YW¥È,tJLÜtJL¼éZ=hœ˜xÓóšuúJ£Ð)1ñ¦Ð)1±Uܬ¹(ÕOÌòÕɺMÅͪ“uýÄLéäïYé\ݦ¢RÚɺ~©¤tò’Y:JLl «ÊΉ‰­¡^×91±5¬*;'&¶†…YçÄD¡ãÇSbbÓdJ§f]-K蔘èôÁ‰‰:5ë nƒƒÎ‰‰AçÄD}Téä¬3:'&6(#ƒ\”6< Y·ÑîkBçê6ú2©Ð¹ºMMCéä%³ŠÒ¹ºMíru›M§.™Ž»Í$ÅÄŽçû$ÅÄŽçû$ÅÄŽdd’bbGÅl’bbÐ91±ã‚¤˜¨Ÿ]µuœÐ91±£à6I1±C˜¤˜Ø¥\$tNL :'&n:9ë† Ý"¥úd:W·XY-²n3°²ZdÝf YdÝF_eU:uÉè“Yè\ÝF?=:'&jï7¥S—Ì@:°H1Q_e:'&d‹7œu#ω‰ú|N)&n:9ëŒÎ‰‰AçÄDm\§tjÖéNBçÄDÝéQ蜘¨ç„Ή‰ºÝ¤Ò©Y7õyÓ¹º>™…ÎÕm¦(*J'¼¬¨ÓEÖm‚ÎÕm–Ï:®ncôDЉK+f7µ÷›Ò©KF÷Z:'&êû´BçÄD}S蜘¨¥S³NÛ§ ƒÎ‰‰ú2©ÒÉY71ë81qáFH1qÓÉY·ðo§ÄÄ~©˜2'&Þôœ”N-J»¾K¬tòÇ˺î¦Su›®Ï¡Su›® Ì”Î\2ýœÏ\ݦëóAèTÝæAg.™®Û »>^„N‰‰=á1‘91qÓ)1±',2'&v¼Õ™ '&v¼Õ™ '&Þt}HNLìºY¢Ð)1±ëˤJ§f]R]æ¦Sb¢Ð1t”˜Ø–……{º®pbb×>„N-J…>@'üÀÑ©ºM×í …NÕmzV!õ¦Su›®[6(ºdt·Ãœ*W·éÚ¼M蔘Ø3®¸Ê‰‰7]ê´77»îz tjÖ{Æí¢rbbϸÞ+'&öŒ4°rbâ¦Sbâ¦Sbb×wQ•Nꉑ§ÄÄ®½ßrjœ˜Øñnajœ˜Ø ž°\”èÔ¬«*i¥Î‰‰½"뜘Ø+’‘Ή‰½âfÕ91qÓ)1ñ¦¯ªtJLzšu s¾sbbÇk7{ìëä¢/ÜtªnÓ›U·é]?9:õãõ„ «ÛtÉûsdÝF_2:W·éÈß'&ö¡_eÞtJL¼éúŒœ˜Ø&íàÄÄM§ÄÄ®ïk»É:ƒ…>•N‰‰BǧÄÄ>‘I NL¼éº4œ˜xÓN%&ö‰µÍäÄÄ›®—ÌäÄÄM§ÄÄMçê6 …ÖIÖm–~yÓ¹º•÷'Y·Ùtê’ :W·Y(´N²n³ô­›N‰‰BÇÑ)1q\¸]LNLVÞŸœ˜xÓ;f%&4mH‹úÜtJLø„\è̬º´Ð)1ñ¦ëÐ-NL bââÄÄa%¯Å‰‰›N‰‰#cM»81qàƒÖ´81ñ¦OŒ·¹é”˜8𬠄N‰‰_.ºdšòʼn‰›N‰‰yœÐ©Y§[6‡–L„N‰‰C?YP:5ëä‹oºôú¸é”˜8ôÍ÷œ'&Ž+.qbâÐN“B§ÄÄ¡;» Z”]È+úñúæ»Ð©ºÍ˜¸×%®n3´çŸÒ©Kfá‚M\Ýfè“YèTÝfèNJ§.Ý®P蔘8õH¡SbâÔöwB§ÄÄ›n— %&Þt):å̉‰Sg«Ð)1qêlU:3ë¦N7¡SbâÔé&tJLœ #Ÿ91qBDΙ'”ЛN‰‰7]^IÍ™§n#®tjÖaUyÓ©EéÔ™…NÕm&ZäÌÕm„ŽYGÕm¦-J W·™º'Ò©K߀çÂÕmfŽ®pbâ¬XNLœM_ˆÍ…'¾‹Ì…§~ø.tJL|ЩY§_0 gÇš¶pbâM_øñ”˜8ñ±O.œ˜(tÌyJL¼é"  šuF¯œ˜xÓ¥^wÓ)1q¢À~Ó)1qNÜ.*·(ú™ŽÐ©ºì#Ý”NÕm&Þ%Ε«Û,m +tªn³.¬.*W·‘ +èÌ%#ô©tJL\x9ð¦SbâÒfJg.™¥¯ñ e§GºÆ‰‰›N‰‰« ‡mœ˜(»Þu¥Sb¢ì;×”N‰‰ /šu÷ºÆ‰‰ Jn:%&.íÆ¤tjÖUÜ.'&.í‡$tJL\º;­Ð©EéÒ7¤”NýøŽ¥Qãê6K_yȹsuÙXf‚N]2«ÊÎÕmdg˜®tªn³ð›Ð©KF?þ:%&.ýz[茘X¥{:N#&Ö oqßtFLTzS:#&V´Å:#& ½bÚ0bb½Ð·ð¦3bbE›L¡3bb½ÐJèĬºôtʃëeêÀ ÄD¡ëâdPbb½ìf5(1Qé]éÌ¢´^º#Ò©:o:S·Q:ŽÎÔmª|C\•ÎÔmj*Ag.¼Ò(t¦nSE·_JgÄÄ íZéÌ%#’茘X³UN&%& ]^×É“kž¨OJL¬²5ÏP:#&VÛ4á¦3bbíèk$ô?5ëþË×ÿñ×ø¯ÿéo¾~ñË×½¹™ÿýå/þóí½³ ÿñãþñ&ýóôõw÷ÿýÛé„p}ýý’t_¼QDmü÷ûx*zÂüéë—gÜÌ®Hj¼èFå‡ùˆwU#óKJȇùˆ/Õv"sÇkÖ­íã÷Ã|Ä«öÀ8ÌGüùŽÿŽËùÑñý§?ü‰ñýÃ?ýö>}§O>¼Eÿ»È‡V嫯K‚IN`œúÿ5·dIß77ÿܦ¯dnnû ¸w{ç@ã^>Yît÷#êqà¿„ÜtüŸGvIºw‡(VE§"6)º æê MÝ|ÄÓ¥WtÌ~"оå¶°Ÿˆ®å™€ýD`k €ý@Ø/Äã_ò¨Çèü‡Ç å¥ðä7ÅÛû§ÆùMOWòÛÚõWrvýoø%ùéú«JðåKÌdüNðWò7 îGÔ_ÎWåã—þêc¦á¦ð£ 5nŠnæ¢k©Ÿöé|Ûÿ¥Ü¤¿r{ÿ¿ýç÷ÿòõß¾~ûgÝhŠ]:õ¸tÔ.²?˽4,þ’Ü?üìoóÇ?þæ·ÿúõë¯ÿëçwüëg¿þý¿üñw_ÿü›?üñ÷¿ù¿þu/H~öÿþñ7¿ûíÏÿñëW÷gÞª6½’×q…þó¯ÿøë¯ßüöë§ßýëý3ýÓ¿ü%gß<¤š½Lù‹ÿão/ÃöËÔõ#sûÛÿ/O?ÕÐãéóùôÓ×מñVxO¯xOg|¾ãóˆ÷ßçߟï¿?Ï¿?ßžµW|µg|ê[^‡yÄ×;¾Žø=óOÕLÑË+žË¿g§Å»™‡c¼ããˆÇêäÎ`F\ÍÇï^ÃŒ8>~÷5ÓãpôöŠ÷vć_ÎfF¿\ÍŒ¸:fÅg?⫼⫼âúÎÅ›™‡ÃÇïNaF\©¾â©ñìãW’™7‡ÿýÒÍŒ¸:J}ÅK=â5þþ03âpøù©—™‡£µW¼µ#ÞýüÜk˜‡ÃÏO­fF\ÃÏOmfF\ÓÏÏýË`F\ËÏO»Ìô¸9Æ;>^q}ÅdÇÕ|ÇSzÅS:ãóŸG<·W<·#^ò+^ò_ïø:⵿âµñV^ñVŽx¿^ñ~ñ¿bfÄÕ÷×ûÎ ÓãpÌëŸ×ïø8âëý÷×ûïë ;®æŸïø<⩽â©ñœ_ñœÏ¸ŸŸ^ÍŒ¸:JÅK?âµ¼âµñv½âí:ã1~Ó̈«£×W¼×#>Ò+>Òñ[fF\ÓÇïÎÅ`zŽåã7†™‡ÃÇo,3#~;TßFüž90=Gòñ»g̈«#_¯x¾Î¸ßºÌô8¥¼â¥ñêÿ~òÃŒ8øûª˜ÃDܶþÑìfÄÕaë-ÑÀŒ8Óâi˜éq8F³x¾Ìô83{¼›q8–LJ™WÇêŸfFüv¨ZЏ<ÎÔô8ézÅÓuÆÇ;>Žx®¯x®G¼¤W¼¤3>ßñyÄk{Åk;â-¿â-Ÿñõޝ#Þû+Þû1~Ṏ«cÆøM3#GÇû_ñ÷—™¿Ý×?óˆw|ñT_ñTxN¯xNgÜÏ,7Ôô8ÅÏϽ²quT??÷ÿ3âpøù‘儚WGóñ«Ë̈«£ûøµd¦Çá>~÷• 3âpŒw|ñY_ñYøòñkÓ̈Ãáã×/3=.•jv\Íw<åW<å3¾ÞñuÄsÅs?âÅÇï^9ÂŒ8ñ÷«™WG¿ßÍŒ¸:ZyÅ[9âýzÅûuÆÇ;>Žø¨¯ø¨G|¦W|¦3>ßñyÄ—ŸŸûÎ Óã☞_>Ì#îãw¯¬aF\©¿â©ñ\^ñ\Žxññ»ÿe0=nŽñŽ#^ë+^ëoéoéŒûøÝO.˜WGo¯xoG|øøÍffÄáðñ›Ý̈«#î¯÷“fÄÕ±üïËraîõO8Ö;¾^ñåëeÂŒ¸:’ŸŸûÉ 3âêÈ×+ž¯3>ÞñqÄK}ÅK=â5½â5ñùŽÏ#ÞÚ+ÞÚï1~Ó̈ñÞñuÄ-¿\reÀDÜ–_>ÌwÜòKmº 3âp 73#Þ¾Öåùå’'#̈«ÃòˇyħÅï''LÃaù¥¶å…quX~©ßÂÀŒ8ËãË̈«£úß¿3˜‡£ùßÏṎñÞñuÄ»ŸŸÜÌŒ¸:†ŸŸ<ÌŒ¸:æõŠÏëŒw|ñåçç^YÀŒøíHž_ê̇éqsÌw|ñäãw¯L`F\ÙÇïÎ aF¿ûÌÀŒ¸:ŠßÂô8ÕÇï>30#®Žv½âí:ã>~­›qut¿~™éq8†ß½2‚q8æ;>øl¯ølG|ùøõjfÄá˜ïø|ų¯æ;žò+žò_ïø:⹿â¹ñâçç~2ÁŒ¸:êõŠ×ëŒûù¹¯˜WG«¯x«G¼§W¼§3>ßñyÄG{ÅG;âÓÇï^ùÂô¸9Ö;¾Žøòñ»ŸÌ0#~;Šç—zg‡qu$¿{fÁŒ8>~³›éq8r}Ås=â%½â%ñùŽÏ#^ãï3#®Ž–^ñ–ÎxüýefÄÕÑýüÜ+G˜‡cäW|ä3¾ÞñuÄgÅg?⫼⫼âÕóˇyÄÇ;>Žxª¯xªG<ûøÝOf˜‡c¾ãóˆ—öŠ—vÄk~Åk>ãë_G¼õW¼õ#ÞË+ÞË×+>®3>ÞñqÄg}Åg=âë=~ë¿XÿÜwV˜¿m¯Â|DZþɪÂÔøvÌw|q¬ÐNfÄÕõÏÓ<âËãÅ̈«ù¥˜Ã̈«ùeÖ&00#®ä—è×3âp ‹Ër®E~ä—hØ3âê˜>~i˜q8æ;>øòñKÓ̈ߎnùåÓ<â>~²ì‘_†#ùøÉr¯G~Žìãw?aF\ÅÇO–k=òËíðñ»Ÿœ0=Gõñ“åVûk8šÿý2ÌŒ8ñ÷§™WG¯¯x¯G|øù‘åZõÏvøù©ÙLÃ1ýüÔbfÄÕ±üüÔifÄáXïøzŇå—OóO~~d¹7"¿ Göñ“å̈ür;|üd¹2"¿ GññëÓ̈«£¦W¼¦3>ßñyÄ›ß=ò0=G÷ñṎÃáã7¦™WÇðñ»ŸŒ0#®Žéãwg&0=Çòñ›É̈Ãáãw3aFüvL[ÿˆÙÌŒ¸:RüýnfÄሿ¿ÌŒ¸:r}Ås=â%½â%ñùŽÏ#^Û+^ÛoùoùŒ¯w|ñÞ_ñÞø(¯ø(G|úø­b¦ÇÍ1ÞñqÄW}ÅW}Å—å—OóˆÏw|ñÔ^ñÔŽxöñ“ÇõŠür;Ö;¾Žxññ“ÇõŠü2ÕÇï¾³¬ýF`8ìþª™3LÄÃÑßñ~ıþyšïøxÿýqþ}¬žæ;ŽõÏÓ|DZþyšG|¾ãóO×e æË>H1_ö‰XbˆÜ߈ÜOD)oD)'¢ÆPv·ažÌáv àiõhõDôÐév ÌãCšºÛŽ0ÏhoÄh'bú˜¦év Ìãcz?²Ìv„yV#V#’ß|“ÜÍ„yÖX'"ÅQšÛhþ©!â½Ò@ÀSüÌåév Ì3Ä8ÕÏ\in;Â<ÍÏÜ}‘›í÷ø™«Íí@ÀÓýÌÕáv àùù±Ä:ÓÇ´]n;Â<«¼«¼ÙÓ¬»u™óø˜¶áv àIõHõDdÓ^Üv„{|Lûp;ðÓÑÜv„yj~#jþ@¬±NDܨ·} úq”þq”GénžGYnžégÍv„y–Ÿ¹YÜ„yüÌÍáv ÄS,m{ºxRz#Rú@ø™[ÅmG˜'û™[Íí@ÀSòQòbˆu",…Õ)l6á±$öiKcŸö‰bœKeŸö°döiŸˆy 扰„V7k3;⩞Òj±×ì@˜g9b¸xRe¹xr~#rþ@¬±NDéoDé'¢ú™KÉmG˜§ù™KÙí@˜gˆq"ºŸ¹TÜ<#½#} æ˜'b¶7b¶±|Lõ)_w¶»=ë@¬7¢y«¥z³Oò1Õ§|Û9ox²©>¡ÛÎz·ÇÇTŸ®mç½á)>¦%¹íóTÓRÜ„y|LKw;ð4Ó2Ü<ÝÇ´L·ažy æ‰~”šÝv„y¦¥·ažu Ö‰X~æZvÛêé¾{Ú"ù™Ógxßùðöø™kÍí@À“ý̵îv à)~æÚt;æñ1íÉmG˜§¶7¢¶ÑòÑòÂÇ´7·O÷1íÝí@À3|Lûr;ðLÓ¶#Üãc:“ÛŽ0Ïò1Õ'tßy²y†'ÊOûDÌ1ODܵ·} òq”üq”|%¥G)G©ù¨ù±Ä:ÍÏœ~i7öz,<ÝÏÜ\nžágn]n;Â=~æVr;ðL?s«¸xVz#Vú@Ì1߈éYôÓ>)¿) ÖX'"û˜êÊiî,:<ÅÇtM·O1]nÂ<Ó‚µÄÜYtx,‹.Ȉç΢ÃcY´ šf;Â=ó@Ì1ê1ꉘq”äv ÌGÉn[é«õfB<Ë×cOûD¬±N„eÑ*àšx,‹.Èÿ×΢ÃcYôÓ>ã@ŒQëQë‰héhé1Ä<ÝÇ4W·až‘߈‘?ë@¬1û1û‰XåXå…À×€ûDŒ1NDò1•µì@À“}Lem;扣,·Oñ£Ü§ÝlG˜§úQd};æ™bžˆægîNäÌ<ÝÏ\©nÂ<~æd;ð ?seºxfy#f9ËÏ\Mn;Â=>¦µºñ$Ï¢ŸöH>¦R‚óø˜Jmv àÉ>¦u¹xJ~#Jþ@ø˜Þ©¯ÙŽ0OíoDí'¢•7¢•ѯ7¢_ˆq ƉÇQÆÇQæq”ùq”ye~eÕ7bÕ7"ûzL›·˜óø™“u3ì@À“üÌɺv àÉ~æúå¶#Üãg®7·OéoDé'¢ú˜ÊŠv ài×Ñ®Ä8ãDôúFôz"†éHn;Â=ó@Ì1}Lå‹nØ€gå7båÄ:ë(žE?í‘Ê‘ʉÈ>¦£¸óÄQªÛ€§ÄQ¦Û€§úQæå¶#Ü3Ä8±›Ùí@Àë±9Ý„yüÌÉÚv àííDL?s²ö†í÷¬±NÄò1]Ùí@ˆ§z]ä¢7;ð¤ëH×ÂÇTºÀ<–EëŸ7ˆðX­/}™óLGL·eÑúÍv„y,‹~Ú'b9¢¸x,‹~ÚÂîÚOûDÄQºÛ€gö7bö±Ê±ÊÑ|=ö´OÄpÄr;ð$?sR ƒíód?sº>k{=¶=~æòr;ð?sårÛæ©~ætåÔv½=ë@¬ÑúÑú‰è>¦º.j;‹Ïð1­—ÛŽpiÍnžécZ»Û€g¥7b¥Ä<óèžEW¬œú΢Ó|L¥^Ûîñ1Õ§|ßYtx²iënž’߈’?ë@¬Qã(Ãí@ÀÓÊÑʉè×ѯ„Ÿ9©ÛÁ<£¾£žˆ™Þˆ™>ó@̱ü̵åv Ä3<‹®XEoÏ:ëD$ÓžÝ<ÙÇTWNcgÑá)>¦}ºóø˜ê3|ì,:<ÕÇTTAØ€§ù˜Žév Ìãc:–Û€§û˜ÎËmG˜gä7bäÄ:ëDÌã(óã(ë8Êú8Ê:޲ޣL_=í‘Ê‘ʉÈב¯Ä8ãD”úF”z"jz#jú@ø™“:&ì@ÀÓbL‡Û€§ç7¢ç„©®‹æÎ¢Ã3|LuÅ2wË¢VsgÑá±,úiŸˆaˆt¹íõ,Ï¢u£ ³eÑúy¼Ù0Ï<óDX­¯X›xì®ý´OÄ<óDÔã(õã(í8Jû8Š­ÇêCk¯ÇÂcë1í~mv à~æòt;ðÌë˜×ÂÏ\¹Üv„y–Ÿ9­þ¬EÃ#/§ö‰ð1Ív àIíHíDdS© Á„y|L¥‚;ðSYÓÀv„yjy#j9íz#ÚõbœˆîcZ“Û€g¤7b¤„©¬¾`žécZ«Û€gÅQšÛ0Ï<óH¾kºú‚xR~#Rþ@ø™“'4lG˜'û™Ev à)~æä ;ðÔë¨×bˆq"šŸ¹q¹íóôôFôô˜bžˆÑÞˆÑNÄô1•*ì@˜gˆu"–©¬X`B<Ù³híJmv àI>¦³»í÷ø˜JfÛæÉ>¦¢`Á<ÅÇtU·aSѸ`žZ߈ZODKoDKˆ8Êt;ðôöFôv"†Ÿ9QÒ`Â<8smó^…Dzè§} ,‹~Ú/Dñ,úiŸˆq Ɖ°,úiË¢Ÿö‰˜bžË¢Ÿö°,úiŸˆu Ö‰h1¦Éí@ÀÓcL›Û€g\oĸ>1¦Ýí@À3}LSrÛæY>¦¢N„yü(R—ñT_=í‘â(Õí@˜ÇÏœ¬à`žÜÞˆÜNDñ3'•Ø0Ï:ëDÔþFÔ~"šŸ9©íÀv„yºŸ¹œÜ„yÆ'bÔ7bÔ1Ó1ÓÂÇ4g·Ïò1ÍÅí@ˆ§yý´O„©¬$ažäcš‡Û€'—7"—QbL§Û0©Ô©`;Â<ÕÇT×xmßµÃÓü(¥»óÄQ†Û€§ûQtMÓöz,<ÃÏ\nÂ<~æäÝkØŽ0Ïô3תۀgå7b償¹ÖÜ„xºgÑú¢”Ù€'ù™“7¬`;Â<ùz#òõð1íÍí@ÀS|LuåÔwžšÞˆš>ó@ÌÑÚÑÚ‰è>¦}¹óø˜êº¨ï,:<ÃÇt ·Ïô1Ëí@À³|LEmí÷ø˜Îæv Ä3|=Ö±¶{=žG™nÂ<ã@Œ‘ë‘ë‰(~æDÓóø™“:lG˜§¶7¢¶ÑüÌéoì,z{üÌ­æv àé~æVw;ðŒòFŒr"æõFÌë1Ä8–E¬6ÆÎ¢Í3=‹Ö¢§Ù0ÏtDu;ðXý´„eÑ둹³èíYbË¢Ÿö°,úi»k?íq¥}¥GéGÇQÆÇQl=ö´ĬoĬ'bÅ™[nÂ<ó@Ì7by­¬ÙŽ0Oò3§«Àµ³èíñ3—/·ažìcªë€µ³èðSѸ`žêcª+…µ³èíñ1ÕuÀî—¾=ÍÇT×»cúötS]ìžéÏ<óD Ó2Ü<3¿3 ÖX'bõ7bõ¢\~×~Ú'bˆu"R#ÒÇQòq”üq”r½åú@ø™U°ìNêÛSýÌIªì^êÛÓÒÑÒÂÏœ¼_v?õíéíèíD ?sRÉ*»§úóÄ:ÓÇTÖxe÷UßžåcZ‡Ûº¿Ååc*ï`•Ý[ýáñ1•wŽÊ=ÉÇTÖxe÷WßžìcÚ†Û0Ï<óD”öF”v"ª©¬ñ`;Â=>¦R•ƒxš¥W·O£4·a?ŠÔºÊî·¾=ÃÏÜ(nžégnT·Ϻވu} Æo„7^Ï»ìÎëÛ“Ò‘Òbˆy"r{#r;ÅÇTªrew`xÖX'¢ú˜Š‚Uvöíi>¦ò½CÙ}Ø·§û˜ÊzµìNìéìnžác*WÙÝØ·gú˜Îév Ì3Ä<ËÇTj°¡žâYôÐ$ì@˜Ç"«ÑRžë1óÄzLV£¥<×cæ±õØÔU`Ù½Ùžåˆâv à±õØÓ>¶{ÚÂÖcOûDŒ1N„eÑOû@X­Ò®Ù0Ï<óDX­Ë_³Ïò1MÕmG¸ÇÇ4u·!oÙþ²Dò1E¯ì®íÛ“¯7"_ˆq Ɖ(>¦R‚íóTS©Á„y|LEY„xšižnžîGU°ìîÏ<óD ?Š(ze÷qßž™ßˆ™?ë@¬±üÌÕËmG¨ÇÛ¹¿ì‘üÌéŠewtxü̉ÖVvO÷íÉ~ætµ±»ºoOñ1•7›ÊîëþðÌ1ODmoDm'¢å7¢åÄ:ëDôþFô~"†©®iv÷í™>¦ºÚØ]ÞÓžÜv„y–inB<ݳhýTÈì@˜ÇÇTª?°Oò£È;¾e÷{ßžìGÓí@˜Ç2–Û€§´7¢´QóQóbˆu"Z#Z?½¼½œˆq½ãú@Œ1NÄô1ÕóvøíY>¦ºRØ]àÓUÝv„z¼|Ö¾Ëfž”߈”?ë@¬‘û‘û‰(>¦k¸xª©¨‚°ažq Ɖ°,za¥0v»kcS6Ø0Ï8ãDŒúFŒz"f¥»óLG ·­Çžá»G¼{¼I|Ööàf;Â=ËÓí@ÀcYôÓ>–EkñÄì@ÀcYôÓ>>¦ú„Þýâ·§Ö7¢ÖÑ|L¥¦RvÏø‡gˆy"º©T]Êî¿=#¿# ÖX'bö7bö±Ê±Ê±<‹~Ú'ÂÇTÞ(‚íó¤úF¤z"òõFäëq%¥G)G©~æt=²»É?<ó@ÌÑüÌ•áv àé~æ´.³{Ê?<ë@¬1ú1ú‰˜~æjqÛæY>¦Z1Ù½åS])ìîòæ©Þ^>ëg¤f;Â<ÉÇTÞß®»ÃüÃãc*ï×Ýc~{r{#r;ÅÇ´'·áÓžÝ<µ¿µŸˆVÞˆVND¿Þˆ~} |L¥¦;ð ?ÊHn;Â<Ó"“º»Î?<~”QÝ<ËÏœ¨`uwžw·žÙ'bˆy"’Ÿ9©CÔÝ~{²Ÿ9©CÔÝþáñ3'«º{ÐoOñ3'uˆº»ÐoO-oD-'¢]oD»>>¦s¸xz}#z=ÃÇT´¶ºûÑ?<>¦ërÛæ™>¦Rí¨»'ýö,S©TÔÝ•þáYb½Ù³hm)hv àIåHåDÄ][ÞŽ‚óèQŠmw»ûÓoÖcE_M5;ð`=V´µ¡Ùh¾­!ºÛ€ë±¢¯·šx°{Ù'b:b¹xE¿ì,F›í÷,Gt·Ïò1•7«ëîYïoZÿ²DºÞˆt} |LeõUwçúíÉ>¦9lG˜§ø˜ŠêSw÷ú‡ÇÇTž®u÷¯ßžêc*ï”À<ÍÇ´·ážu Ö‰èýèýDŒòFŒò8Ž2>Ž2£Ì£¬ã(ë8Š7´‡¼cv Ì3Ä8©¾©žˆìgN×»¯ýÃãgNÔ–º;ÛoOioDi'¢æ7¢æDŒét;ð4Sy“§î÷ÛÓ}Lu=²{ÜoÏð1mÕí@˜ÇÇTÞä©»ÏýöLÓÖÝ<ËÇ´_n;Â=ó@Ì7¢Yý²DÊoDÊS]9µÈ¢·'îÚÛ>%¿% Ž£”£Ôã(õã(ÍÏœ®­v÷ûíé×ѯ„Ÿ9]}íøÛ3üÌIªîøÛ3ýÌËmG¸ÇÏœt¢¬»þö,?s¢ ÕÝ ß=Þ ÿeŸS][ínøÛ“|Lå½¥ºûáoOö1ÕµÕ=åz#ÊõbœˆZ߈ZODKoDKÿ_egÏkÙÎç|~Å„R¤Ío2•!0$Á7²½¶¿ô÷uØÕÕEr;“ TÍs‡gšg/²×âªýĖ˜/ÑYÓ}* š„;#ßÄÈ_Äzˆõóe~²b”B„;ë!ÖM0(ÿÒ‘ÊM¤ò™3·ï¹U¥åf™ÌUyùrÐEo©ƒ€ƒ.ºX±ë Ü™$:upÐE_ú!ÐE_ú%ÖC¬—@Çö®I¸ƒ.ºXãâ:8è¢/ýã!ÆMLï¢ Ò£¡ƒ€“XSÛ}Í袇5Ýw² ƒ€“ÛMäö%ßDÉ_GÙ÷ºªòôåT޲O%U%êËi%7ê ÜY±^¢sær§Î(71ÊKLÎ\ÔA¸3b¼ÄâÌÙŽVùút°¿m$jtæCÌ—Hí&R{‰œo"ç/‚5Ýw¡ª’öå”~¥¿DeMk¢&áNûÜDû|ã!ÆKôz½¾Ä`Mm7º¢‹>Ö´ê àÌv³½ÄŠQ&uî̇˜ј¾ã6®ƒ€“òM¤üEpæö^³)}_NæÌí'iMéûr g®/ê àTÎÜÞ4¥ïÎxˆñ3·÷#Méûrzº‰ž¾ÖtLê à Öt,ê àÌ|3ë!ÖK¬~«ßÓ÷‹\¹&áNbMwf&tî°¦û9tpr½‰\_¢°¦ûtîÄ(‹:8•£ìKSú¾œÆQV¡ÂÎÜÞK4¥ïË霹ըƒ€38sûi\SúþᬇX/19skPgqæö}ª¦ô}:Lß¿ôKŒ‡/‘êM¤ú9jº¨ƒpg>Ä| ï¢íkáxìð¦ôýÃYNìÓÈMéûr¼‹¶„ë àxŒjhîxm„;ƒD£ŽwÑÙÖ_è à¬eRáNŒ²¨ƒØÓ÷/ý¾Ëv>¦)}ÿpæCÌ—Èí&r{‰’o¢ä/‚3·ï—5¥ïË©ý&j‰Æ™Û߳є¾/§n¢¾Ö´,ê àŒz£¾ÄL71ÓÁšî{]Méûrkº÷Méût˜¾_ì&°ë ÜaM÷ý¡¦ô}9‰5Ýϸ ƒ€“YÓ6¨ƒ€S>7Q>_Äxˆñõ¥~ÒžQÚ×(í¥}Ò9sûY[Sú¾œÁ™ÛßÒ”¾8œ¹}N¸)}_Îl71ÛK¬|+œ¹+Д¾O‡éû—~ˆÄšîgmMéûròç&òç‹1^¢Ô›(õ%*kºŸè5¥ïkºŸè5¥ïËi¬éèÔAÀé¬é~^×”¾8¬©í¾šºèpF¿‰Ñ_bFMupâª-ýeVjæ0}¿Ø+õ®ƒ€“8Ê>IÜ”¾8œ¹U©I¸“ëMäú…3·:uî̇˜/Q9s¶Ê+}_NË7Ñò™CªwSú¾=}jJß—ã]4Ò´›Ò÷åxlè¦ôýÃ1^»èS_Ó÷KÁ^Béû‡3b¾„wÑÈunJß—ã]tÁ^b¨‹–ÚÚ>`¨‹§ô›(ý%*kºŸ`A“ ÃQJ¥Nã(õCMÂÎQj¥ÎøÜÄø|œ¹:©ƒ€3ëMÌú‹3g+£Ò÷‡3·Ÿ”4¥ïÓaúþ¥"qæö³”¦ôýÃaMmÍRú¾œÜo"÷—(¬é~RÒ”¾/§²¦¶î)}ÿpXSëÌ•¾/§±¦ãCMžn¢§/b>Ä|‰ÁšÚz3ÕE‡3YÓѨƒp‡5“:8«ßÄê7ÁôýK¿Äzˆõ©ßDú%—›Èå%Êç&Êç‹àÌÙŠ¤ô}9•3gëÒ÷å4ΜuæJß?ÎÜœÔAÀéí&z{‰ÁšÎE„;¬©u÷Jß—3ûMÌþ‹5µuOéûît¦ï_ú%PS{LíD8ÞEW{þЕ¾/Ç»h Bq„;“Ä ŽwѶÙw­{Ð$è,…:8­ÝDk/Ñc”J„;1J£ŽïǨە¾/Ç÷cÈËíJß—ãû1{°ï:wÆCŒ›`ú~±he×AÀIé&Rú"8s»WíJß—“YÓ½vv¥ïË)¬i©ÔA¸Ãšî>³+}_NeM÷êÚ•¾/§±¦5Q§³¦5SáÎxˆñƒ5­…:8“5­•:wæCÌ—Xí&V»‰Ì«¶Z»Âùó%RŒÒ©ƒ€“óMäüEpævïÞ•¾/§ô›(ý%jÌܤN‹™[ÔA¸Ã™ÛoÌt¥ïË霹֩ƒ€38sûtCWúþá°¦½Rg²¦{•ïJß—³XÓ™¨IÐaM÷‰€®ô}:Lß¿ôC¤r©¼DþÜDþ|ã!ÆK”z¥¾DM7QÓ1b¾D\µ¥¢?£ô¯QzŒÒ©ƒ€3b”Iœ3·¨ƒp‡3g««Ò÷å,ÎܾÞ•¾O‡éû—~ˆÄ™Ûw±»Ò÷‡3·;Ñ®ô}9ÞE7¬¿Jß—ã]ô©_b’XÔAÀñ.úÔá]ô©_b=Äz ï¢Vh¥ïËñ.y¹]éûr¼‹>õK :8‹5µ5¼ª‹v§±‹>õK°¦û~;tpRŒ²¨ƒ€“ÓMäôEp[¡•¾/§´›(í%*gÎÖp¥ïÎzˆõ­ßDë/ÑËMôòƒ3Wuîpæv¦YWú¾œÉšÚNAéûrkZ+uî°¦µQ±¦ï—†UMéûrkºÏ=v¥ïkºŸõK,‹:8ÞEÛ­f×$Üñ.ÙÐAlg²‹Fv'tî 'r¡&áŽ_µ;úª©«v8ùsùóEÄ(:8%FYÔAÀñýØ©_b:±Ÿpv¥ïËiœ¹}²©+}_NÏ7ÑóÁ™+:8£ßÄè/1ËMÌòësëóEŒ‡7Áôý‚DÌ®ô}9‰5Ýoþu¥ïkj«‰Ò÷ådÖÔz"¥ïË)ù&Jþ"ÖC¬—¨ý&j‰Vn¢•—蟛èŸ/‚£ì§µ]éûrG±«¸Ò÷åÌÏMÌÏ1b¼ÄâÌõNÄ3˜¾_laq„;œ¹^0”¾/'qæö3¿¡ô}9™3·ïc¥ïgnŸ[Jß—SXÓ}Ng(}_NeMW§ŽwÑÈ3Jß?œA¢QÇ»èS?„wÑöÈuîL‹:8ÞEŸú!¼‹>õK,'Ò‡š„9‰]´¸ŽwѶ»ÂeR's”ü¡&áNá(ûÚ8”¾/§ræJ¦ÂÎÜÞ¥ïËiœ¹½oJß—ÓÓMôôĖ˜/18sõCMÂÉ™«‰:wXÓš©ƒ€³úM¬~Lß¿ôC¤ÏM¤ÏÁšîëÚPú¾œÌšî»PCéûr kº¯|Céû‡3b¾DeM÷,è à´|-¬é~^œÎšö5 wGÙ×סôýÃY±^bö›˜ý%g®7ê ¶ÃôýK¿gnßsJß—“êM¤ú™3g×y¥ïgnï߇Ò÷åÎÜüP“p§²¦{ÿ>”¾8¬élÔAÀi¬é>:”¾/§³¦û.ÔPú¾œÁš®F„;¨)²Õ†Ò÷åxmñ»®ƒ€ã]ô©_b’èÔAl§²‹ž¸ÎWuÑáx=q¯ê¢å,:8™£ä5 w GÙO[†Ò÷‡£ì`(}_ŽïÇ&®žJß—ãû1 BqßÙ« ®ƒp‡3W?Ô$Üõ&F}‰™nb¦/‚3gWO¥ïËY¬iíÔAl‡éûeâúªôýÃaM÷“¡ô}9‰5µ«§Ò÷ådÖtßSJß—SXS»6*}ÿpÆCŒ—¨¬iÿP“p§±¦ûétî̇˜/ÑYÓ}Ç:8ƒ5í:wb”Aœ£Lê à¬|+œ¹ñ¡&aÓ÷·®ÔAÀIœ¹}6n(}_NæÌí;&Céû‡Ã™³ë«Ò÷åÎÜ\ÔAÀ©é&jú"PSä< ¥ïËñ.za߬ô}9ÞE#çi(}ÿp‰E|Jß—ã]4’ †Ò÷åx½påSúþá 'l7ªô}:ƒ]ôÂum¨‹Ç»h{íÉuî°¦v]ê¢ÃɬiÍÔ$Ü)é&Jú"8ʾk;”¾/§r”}~j(}_NãÌõLM‚gÎ>¥Jß—Ó9söTú¾œQnb”—˜Ÿ›˜Ÿ/b<Äx‰UobÕ›`úþAúP“ 3b¾Dj7‘ÚKdÖtŸ}Jß?œõë% kjŸt¥ïË©å&jy‰ö¹‰öù"XÓ}Ç:85:8ƒ5µýÙT-‡5Ý÷S¡ƒ€ƒýXE’ËPú¾ìÇ.ý“D¦b;L߯ÈzJß—ƒýXENËPúþᬇX/.º"§e(}_ºèŠ|”¡ô}9è¢på:w‰EœÆšÚNéûr:kšuî̇˜/1XÓ’©I¸3YÓ2¨ƒpg=Äz‰ÅšÖLMb;“éûÙ&Séûrkºû]è Ü1^"³¦{?MšöE„;eŸœJß—S9ÊÞ)L¥ïËieß•›Jß?ÎÜÌÔ$Ü霹Y¨ƒ€38s³SáÎzˆõ³ßÄì/±ÊM¬rLßG4™ë Ü1^"±¦ûDâTú¾œÌšîNt*}ÿpPSäL¥ïËA]‘o0•¾/]tµ<]“ ³Htê à ‹®vÄÍupÐE#"Í5 wÐE_ú%‰N¿jŸú!G)™šŽR:uÛaú~µ[‰®I¸ƒýXÅ;ßSéû‡Ã™ÛOÀ§Ò÷ådÎÜ~“i*}_NÉ7QòÁ™ë‰š„;•3·ïþL¥ïËiœ¹>¨ƒ€Ó?7Ñ?_k:5 wF½‰Q_b²¦£Rák:?Ô$ÜY¬éLÔAl‡éû—~ ÖÔ®I%ºh9‰5ÝO|¡ƒ€“YÓ½cNaMíjQ¢‹>ÖtwMÐAÀ©e'ëM¥ïËiŸ›hŸ/b<Äx‰Î™[•:8ƒ3·÷VSéû‡ƒ™Ã[¿SéûrÐE_ú!ÐE_ú%‰EÄv˜¾_ñæðTú¾tÑ[/ê à ‹®xëw*}ÿp‰AtÑ—~tÑ—~ Öt¿9<•¾/§±¦våSú¾œÎš–I„;¬iMÔ$ܬé¾OœYnb–—X¬iÔA¸Ó¢ßÓ÷èš„;‰£´I„;œ¹Ý‰N¥ïËÉœ9Û})}_NáÌõI„;œ¹™9•¾/§ræl ô}93·*uX/.º|~”¾/]tµ¯ qtÑ—~‰ñã%ÐE_ú"˜¾_ñ^ßTúþá̇˜/.úÒ.úÒ/±b½DaM÷éè àTÖÔ®]Wm9Åö4Jß—Ó8Š] ”¾/§s”ý”t*}_ÎàÌ•F„;œ¹š¨I¸39sûIÚTú¾œ•nb¥/‚3×uÛaú~-ØÓ(}_NâÌÙ§Téû‡³b½Dî7‘ûKÖÔv=Jß—SYSû¤+}ÿpXÓ‘¨I¸ÓXÓ‘©ƒ€ÓYÓý$m*}ÿpXÓ}_:8£ÝÄh/1YS»â uÑrXÓ5©ƒ€ãWm;¨í„;Lß¿ôK,:8)FÔAÀñýÞSšJß—ãû1¼§4•¾8É<¨I¸ã]tÅú«ô}9ÞEŸú%¦¥Q“pÇ»h¼í2•¾/g°¦-4 :ë!ÖKLÖ´Ojî,Öt߃œJß§ÃôýjGÊ]áÎxˆñ‰5µ@éûrrº‰œ¾ÖÔöÞK]t8…5µ½÷RNeMׇšùó%GY:8=ßDÏ_gnŸ[šJß—ãû±fw)§Ò÷åø~¬ÙÓ–©ô}9¾Ã[Séû‡3œH…šÄvÓ÷+ÞXJß—ã]´EP¸&Ag’˜ÔAÀñ.§÷—Ò÷åx³ùKéû‡³œØÝýRú¾œÊšî{KéûrkÚ 5 w:kÚuî°¦mQg°¦=S“pg¦›˜é‹`M÷§š„;‹5:ˆí0}¿ÚãP×A¸3b¾Dj7‘ÚKä|9ë!ÖK”~¥¿DåÌí{KéûrgnßÇ\Jß?Îܾž,¥ïË霹½÷^Jß—3XÓÕ¨ƒp5µ—#\ƒÇ»hœ_Jß—ã]´m]“ ³œÈ•š„9L߯ŸA¥ïËñ.ÚÂu]“pÇ»h ×uM‚ÎxˆñÞEŸú!¼‹ÆÙZhtXÓýt:8£ìóKéûrzº‰ž¾ˆùó%F»‰Ñ^bræö{(Kéû‡Ã™ëjî,Î\OÔAl‡éûß?¿”¾/'qæìó£ôýÃáÌÍDMÂÌšÎAœÂšÎI„;¬é^]—Ò÷åTÖÔ>aJß—ÓXÓ5¨ƒp5µHc× Âñ.zà¦ô}9ÞEŸú!¼‹Æ7nC“ 3œÈjîx=ð)-ê¢Ý©¼jãä,4 :ã!ÆK¤z©¾Dæ(ûDÀRúþáL‹:8¾Ã)Ï¥ô}9¾ÃÎ¥ôýÃY±^¢õ›hý%:g®Wjî Î\oÔA¸ÃšîûCKéûr&k:>Ô$ÜY¬éî—Ò÷‡5µÏ Ò÷é0}1Ñ®I¸“XÓý|j)}ÿpXÓ}ox)}_NfMmÍRú¾œÂšîý*tp¼‹Æ·»Bƒ3H4ê àøU'#¡ƒ€Óc”E„;%%jî ŽRB“pÇ÷cvœÂuî̇˜/áû1œj\Jß§Ãô}D^»Âåľs³”¾/Ç»h|‹èRú¾ï¢q"q)}_NaMíSªôýÃaMÛ NeMû‡š„;5ݧ–Ò÷‡5í:85ÝÏÈ—Ò÷å Öt}¨IÐY±^bö›˜ý%¼‹¶èm× Üì¢~÷‡ºh9ƒD¥NŠQ:uprŒ2©ƒp‡£ìç Kéûr|?†“oKéûr|?vê—˜$up¼‹¶$×$Üñ.úÔ/±H4ê àx}ꇘ¬i«Ô$ÜY¬ioÔ$茇7Áôýºð{«ô}9‰5Ý÷ —Ò÷g>Ä|‰Ìšî{Kéûr k:uî°¦³S“p§²¦ûù%tpZ¹‰V^¢³¦û$4 :ÅöxJß—38ʾK¹”¾/gÆ(‹:wlæšîÚ9Ø]ú"˜¾é—˜1_]tû {Sú¾tÑ ç¸–Ò÷g9±Ïæ/¥ïËAÝ>X‘”¾/]tÃ騥ô}9è¢Û{+¥ïÎxˆñ½ÞD¯/1ÒMŒôE°¦ö»¯ô}9³ÝÄl/±XÓ}¯šÖt%j?Nþ|¼‹nvÖÇuppÕFhºkrÖC¬—À~ ±ê®ƒ€Sb”EìÇ.ýÉŸ¾kî`?Ö,œÊupÐE7;\äšéÄχÞ5 wÐE7;ýâ:8è¢ïî:wPS‹Uw "tÑÍ‚¥\±¦ï#xÝupÐE7;äšáDNÔ$ÜA}é‡@Ý,œÊuîL:8袛pMÂtÑ—~ ÖôgKà:85­™š„;ƒ£ÔE„;¥jîÌ~³¿ÄâÌõÐ$Ìaúþ¥_b<Äx‰Ä™›™š„;™37+uî̇˜/Q8s+4 w*kºuX/ÑXÓ5¨ƒ€ƒ.º|:”¾/]t³s®ƒpgXÔAÀAÝì8–kî ‹¾ôKL'ì󓣋¦S¼‹nv¤ËupÐE_ú%ÖC¬—ÈÏ(ùk”ÂQjht8JËÔ$ÜÁ~ ¡ú®ƒ€Ó8s­Q§n¢¾Μ]Å•¾/gpæú¤&áÎL71Ó1b¾ÄbMLJš„9Lßoö$Þuî°¦³P“p'õ›Hý%r¹‰\^]t³'à®AÈN¤DMÂtшîwMÂtÑÍ2"]“ 3I$ê à ‹Ft¿kîøUûÔ/ÁQZ¥Îl71ÛK¬¥SáÎ"1¨ƒØÓ÷›qsMÂßÙë›®I¸“9skP“ Ã™[“:8袛ݠs "tÑ­a/¡ôýÙ$upÐE_ú!ÐE7;&çšE"Q]tk¸¾*}_ºh|Qkî ‹n W`¥ïÎxˆqÝ»h|•kî$ÖÔvÅ=ºèÃaMˤNn7‘ÛK”t%}Å>ƒJß—S9Ší¬•¾/§qæì*®ôýÃY±^¢sæz¦&áÎ(71ÊKÌÏMÌÏÁ™ëƒ:8‹3gŸA¥ïÓaú~k¸Š+}ÿpæCÌ—H¬©í¾”¾/Ç»èŽ@éû‡³b½„wÑv8Ñup¼‹¶'­®I¸ã]´½šë:w†%4 w¼‹îøê¢Ãñ.Ún¾º&Ag’èÔAÀ™¥%jî,ŽÒuîpÛ7+}ŸÓ÷›=YtMÂÄ™³ýªÒ÷‡3g×h¥ïËñ.z`7ªô}9ÞE\•¾/Ç»èk£Ò÷gèÔAÀñ.z {Sú¾ï¢®kJß?œùó%¼‹>õCx=Л)}ÿpÖC¬—X¬i-ÔAlg±‹ø[ê¢ÃIŸ›HŸ/‚5í…š„;™5µëÉRNá(#S“ ÃQF¡N­7QëK4ΜÝRúþápæV§No7ÑÛKø~lâ7Jéû‡³œ°«…Ò÷åx=qµPú¾ï¢'î)}ßÄôýfOŸ\“ 3b¼„wÑö|Êup¼‹¶’ë Ü™$&up¼‹¶›kîTÖtï5“Ò÷‡5í¡I¸ÓúM´þ½ÜD//1XÓQ©IÐaM6È®I¸39ÊÔAÀñý˜=9r BÎpâgäš„9Lß¿ôCø~lÙª–”¾8“Ä¢ŽïÇ–õ»Iéûr¼‹^¶Þ$¥ïÎrbß?LJß—ã]´Ötï¢Oý5‹šÖt6jîŒz£¾ÄdMg§Âùó%ÐEãë2\A‡éûÝnW»&Ag9‘?Ô$ÜA/ÃptÑûË0B“pWíþÁ'=ÇUûp8J+Ô$Ü©Å~”¾/§q”½$¥ïÎxˆñØu;FéD8Ø]ú%&‰ItÑûk*25 wÐEw»Õì:w–=Q“0‡éûÝ^vtÑÝŽ@ººènz®ƒpg<Äx‰Âšî5<)}_NeM燚ÖÔ~÷•¾/§µ›hí%:kº>Ô$è ¦öKîD8è¢;ž @Wín×$èp»z*}_Îâ(­R“0‡éû=c½Qú¾ìǺ½ì:w†£R“pû±K?ºh|Å„ë Ü™NÌÐ$ÜAÝ ®ZJß—ƒ.úÒ/±œH•š„;袷nÔAÀAÝq:)}_ºè^ðTúþá ‹:8è¢{Áʨô}:LßïvØ5 :“Ä NbMmçÔ¢‹–“YÓ¶¨IÐaMízÒ¢‹–SXS»Z4]µÃ©ew÷Iéû‡ÃQv˜”¾/§q”µ¨ƒ€ƒý¾„Â5ˆp°×P¸&AgHÔAÀAÝ+fRéûrÐEﯘèÔ$è̇˜7Áôý^±oVú¾tÑ—~‰E¢Q]t¯ømPú¾œÂšÚþLéûrêç&êç‹1^¢±¦34 w:k:uî°¦«R“p]tÇ][há ‹î Ÿã]ôá,“:8‹£äLM¦ïw{UÙuîpû¤+}_ŽïÇú¥ïËñý˜Åð¹ŽïÇìWØ5 :˜¹Ž}¢Ò÷å ‹î×W¥ïËAÝ;ú¥ïÎtÂ:Q¥ïËA}é‡@Ýq7,)}ÿp–-4 wÐEw;Wïš„;è¢÷—.4jæ0}¿wì6”¾8¬é¾‡”¾/'±¦ûÔIRú¾tÑûK*59Ó‰š„;袻½ëš„;~ÕÆ=ht8Šÿ\U£¸ãû±‰+°Ò÷åø~ÌïC(}ÿp–54 w|?6Ñ›)}_ŽïÇ&vJß—ƒ.ºÛWJº!g8‘+5 s˜¾ßíD¢kî ‹¾ôKL'öý¡¤ô}9袇÷wJß—ƒ.z|p]Súþá,:8袇%–¹ºhDÄ»&áºèa_]èšAbP]ôø`žVtÑrÐE_ú%æCÌ—ÀU{žjp2Ó÷#îšIbQ'µ›Hí%°»ôK,'~–/×$ÜÁ~lØ«d®I¸ƒ.zX^Œë à ‹ÞQ䄜áÄîg²Ò÷å ‹Ö`»&áºè36Yéû‡3ðŸ‹]´tÑÃ^Yr "tÑò\áÎrÂ.vÑt˜¾?¬]tMÂtÑpv "tÑ—~‰A¢R]ôÀ³zhî ‹öZ‹ktPS€²¨8œåDjÔ$ܱýXÝö5ˆpl?VSÃU<Ò÷Çöcuß|Ô äØÌåz‘Hß?ÛÕœøø~ìp¬‹®9óÿð.útlæ°ºŽuÑ[·NMÂë¢kù`‡éû§c5Ýïõ5j#äX]›Ô¸§xú~í8=W"}ß^ùû—_ÿðÛÂx÷ÕÿãïÏïÿöë Óór¥NvRsðUÖSî?ß!ðŸßŸã¿ÿõßý}Œ‡QüJ?ÚN€¥Œs˜¿JÆ{»w–~´ÝìHâ¶ÀT°¯ûÑö¥V _Þ¶µ­Z©âmÑm8REj÷¶¾;U¤{ü*ß#PñüF"sÃ÷üh{2›šÏnmï)¤†´Xû~ÌìÐð¾w|ã•ü ßû²¿O´Ø¾ë“ë{÷Ÿ·Ú‘û6Uh‹m¶o„Æwˆ žûSd÷ ¼Mü |‡~Ýn 9ÅÝë×2òúðÖ7ÞvAbY†ö<.kÈþÄ­–e1LÛð­qœ&»¸Ëþ½û½zn{\ðÎAoçíä¶Õ³[D¬µ/¾†Ù΢áÏÏ3-ûóñÁ³ŸêÿÞ·0ö“vÿoøS,o4>˜àí{Uí^¯ý|cbÝO>ßcaŸ˜ýß‹/à=ë©z7ü~!ÞÚz&6î»›ÕÚVÇö»ö÷ω>û=Ûcs‡dã-¼e›íkÿd;Jß,üyÅ]é¿ÿ܃!Óv)Wü<Ëiص}¿WíŽëÔ^ƒ±FCï.ÈÖÛ†ëú^mݳ~×B¬a¸VüùÄê‹·ÄmåàUnÏ—­~Å2>á¬LÆ÷éþhœÈ ¿?¼âÜÏÿÑöº¯_v½o®íïÏxÆRpúÕ®åûŽhÁÝ~»rï·†Š=$ÙÚu»ªÙÏ“¯—öûP±%<ô´•pk«W±¯þ8´½{h» Ä«æ¶(¢C[Ãqh ½8´=ú‘®x""m"mAW‡¶Ú¡ñ$TÚ¾ðÐn)Ýìˆç¡qç_ÚÚ2m¯uÚ67Òݾ¥æÐö%‡Æ3iÜ‘‘Æ{Ò×*õk¯oXæÏïû÷*ô®z\ ’›b=Â׸ëÑòÏ«¯Go5ÇzT«_ß|=ª8Í õÏ c=jøþXîtÅzÔú³-¿~øzÔq¾5Ö£^ýúäëQçø\YëÑÀÙÖXü(c=îëÑò롯Gþí$±MœdÓzÔ¹žùz4ýçñõh%¯Ÿ¯G ïøj=j\¿|=B/§õhQO¼ËœçzT¼Þ\‡¯õ¨{ý¸ñzªõëµÖ£Rïõh”{=ÂzÀõ©öZpAëÑð뵯Gþœ=Ö£´øç¾}üÿçzÄ/×#œÖz”}þ¸þÿ¾Uò¾Ußp=jÏzÔøç¾ußßp=â¿ë’εÅúæër½µ »o©õhX·¢õg*´Ù+Çz4±ˆõg´áÛÉÎõë¡Ö£Ôïõ(÷c=ÊHt‰õ(ãý”XòÂzÏõ(/ÿy|=ÊxÓ$Ö£ŒÜ•X¼Oˆõ(ã;ëc=ÚºëQÆ7ÖÇz뫯Go”Äz”ñ=Ö£Œ<âXòòzk=Âú«õè“ïõõÓz„õXë‘}Žõë³Ö#×±a½Öz„õZë‘k­GŸg=ú<ëQzÖ£ô¬GéYÒ³åg=ÊÏz”Ÿõ(?ëQ¶õèßÔu ¡N>•D ¯ktmÿ_«þ¾ÉW ñ×ÍxÃð¯ÿøõWþ/ÿá¯ÿóŸ}¾~¾?ÿóÿúõWÿþç¢ÿûÿñ;ÙB÷‰ÿ@ÛÇ´ÿ^v¬èÿùûþâ?ýåùû/þéÿü÷ÿû¿ÿÝßþÍ_þãï?þ㯿ùÃÆú7ýexŽôÿøËþNÙþõ¯-¿6¿ endstream endobj 117 0 obj << /CreationDate (D:20190123142057) /ModDate (D:20190123142057) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 118 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 119 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 122 0 R >> endobj 120 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 122 0 R >> endobj 121 0 obj [/ICCBased 123 0 R] endobj 122 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 123 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 114 0 obj << /Font << /F8 14 0 R /F92 16 0 R /F97 17 0 R /F116 26 0 R /F108 27 0 R /F7 30 0 R /F11 28 0 R /F23 73 0 R /F22 20 0 R >> /XObject << /Im7 113 0 R >> /ProcSet [ /PDF /Text ] >> endobj 127 0 obj << /Length 4499 /Filter /FlateDecode >> stream xÚÝk“ãFñ{~ÅV ŠÝâ¬hFJÂHU–â*­íõ™³­=˾½ã×3ýšiIcïÞå|PYÒ¼º{ú=-§«‹ôâw¥üûÅõGŸ<7¦¼h’¦´åÅõíEn“Â^Ô©I2“]\/.þ~ùç+sùë«Ya³Ë­»]º ~ïèÕ¯ÜíŒnoÝíÑ];wÍÝup×Ú]¿û6-R÷óÖ]Oh´ìݵày÷ÔËPkÏóm‡cÿÉSFšËOܵá×°êŠ!y9œ{ÿãúŽ3c’¦(&ØÞò-ϸôRDÐýÜ[ä€j¯  ý[Å:›©µ{,¾µÂÇ0ÌÁ‹øX†¿V[”] ž3“æâaxK¦GÁϯcyŒá>>3î6sšÀ|/š`®ìöA‘o´@ Pš¤Î²ÿA Xå•r‹^IÞ¦µR¸™SÖ:jã°_DTr‘XÛH‡~ê*kLÚ‰;„Ý¿ ¥ÃV4@qñê]óAÀà;>BЉ [õ/¨M8ˆÀ¶–3Œpæî;¶î¥iš†SN1UŠÁíry'±ÍŠú­Ãœ[Q€<¯à î‚~ö† ßiC“ŒÉՇəùñ90>ö:²Þ…&‘aÚ•*¿\¬IGdâ"rÝ÷Òq#æ+šJÒ:«q|ÌZÈÙ;2ç,è%ÛIzhÉÞ‡IPŹßu0œð¸ÂݺÉä¨ïûµ²çoèÁ኿©D€mÓz>ˆX!Ö<ó=q3î<Ï"%w½"˜i„ôHñU\aðRkÊmx4!ïïú%13Í68B|OˬpY '»‡¶ç_y^5ñÖ´]ñ°5öpH÷ôbÉ'píöŽ#Eì†!ÞjEèl‹S„³"¿ü¼™û}`³&CœCG¿g ^/„éæ!«Múyºp=tž|qŸà¹»\L}¡¶iwiðm=‡˜±Üzd‹RŠ‘@&]îØ^±ujƒ•ØËöÞß´È,¯¨«P;jvÚ°KSj»ë`ÅýE!ßœ©Ó†ip@¡X5ð 3r'Ýã8U-é§}0ÿY=Dfêæ©‡3ËõµøÍ—8­Û-¥…$Ç‹óR¢2ÃÞvç3’hEÿÔµ¿æ=v(yÿ—à۰˽ñQdf.ï{myæ*®df§ÍÖÉ(ŠüëÔúó SŠŸï¼Ï2çÝÍÙ¸BtIÑ9ioÖ*ív?¾çˆÓõmWÞ¶ƒû¯4†îq¹Ó¶PÎ5½>rÀÌ$Û„\fžfùu/“ùW6MwG[Z–4÷…™^s˜"ðž§Ìˆí¹Ý“Ñ›K<Ç (yÈ;íÕn–A¢”p‰š¼ó–²W. 0(LùÌó˜ ’ýÖ–´Cgt#Îë=»Ê÷/×ÞžL@ñþçžWìÅ¿[sÜãý^öeŸyêê@Xƒ• XYðŠBkÁ÷)'ñŒJÿXÇéyU ó?ϹcvQ&M•ÕбJªÆ\ä‰19uú6M9T©nebÝÄœñ3Ót¬v1LS¤¸²¤®r™çN²j¡"I ]$yÃ3½â^ù`¹&µªÓ¿b4Hª²–µ¾M­ÝYèĶU}ù42›©Søé^D@¯nåôÝgŒb+ÕP,ä&‚Ó™ú¥E5@QCfÓ2)Mã€|e ©ð*ª³¼©’ÂŽ²|œKŠ`P$u!D–l’,õiß§ŽÕj+[=œ§LŠÌwüÌéì²rLè~Jú©äç3z¹ˆ W%™õŒð„²÷k_}áœ41™ß«E |ãò‘Q“_b6‘J¤Ü {{jCßÄýŽmÈrÏ‚Ý^bÝm$n[R‹*TZoN1j×Ã-aѬHòº:ϤuR×>Û.NI£‚–}€CàÝ hŽ•H~Œ®?6beãÚYc€uþ—Mʬªñ\êÄTFËÁÈ{ÈŽ´C‡B2Rs‰¯|¦…͇OÞÁT!kÊ-+ôþŽ8Ê»*cò°eô*i²‡tdÓ‘#Õ–­">q‚”åÅx§„âÐ ÜqT¥%bGQ3‹Å 96›Qlåà;‘Gò¯ evÔ蓇îÞgª*Ì·:v§GJ0e&>K˜žaeN噽xñß„ªYž¤¥Ö2]djGÙ¢öÊ *^*¦ÚЉx®%|G8‹ƒû9ú`›Ð[¹(“Úz#uº²rÁ,¯²¤lFG†!ãÅb_É(¬…_¢øyr˜·\ªn‚ hÒ8Tò ïñXºv:›&T’¼M&B×Þ(F^ Óˆô»a^ˆÝ<^Z‡ð_Žæ+“Mh:•ês«ˆBÀâ¬9¬²Àš®—<ßF,ÈÊ[Cˆ]LR§£à…|ðjpÈ“§uðF1<¥À–³C‚;÷°$ 7aÆŽ† ‘š´#Μe^Aà9ePe:ž9’†áEXs´=C£ÖáVñÊ“<6í#nÕÀ¯GÅZÑTü3<0@FƯ'B0<üäDLÄãGeh å(¾ÂŽCü@ðˆ 5MbfgÁ¡3±ÝP}O­B™¤•Ñ ã¬ù0`C¬­Á°j¢*MrS„×µ=ôQG¯N-÷-ÊØ+Ì„­˜6Ç>è–)Ê%Ô­uß©zÞ§R 4ÒÔ…óUdLHUXR%€yËYU}Î ù»)³<ÏÑy>¿¹2ïM~w›{ª‰z…éï¥ÝÅ %.ÀÍó«š´-<0 Ž ÊIüè}A †}½ýÀ,’Àˆ¢·”å­;9 ×>€ë0—õ½Ê€‡eۯÙ¼ñùŸv·ZônT68°»äc볟§Ž×‚ëÿšÉü.RôP'¥õÅ.)u@QSÙ$i:*‘Â"è¸÷V8df ØŠ"2ë6ΠƉ±­ÎJ"o˜úòú%ƒwh±i;J¿‰¡vMë^Ù‹—,n.æœt#zU¥(9Ù^ǃ˜’UyXv-ïþ­2‘¤oOq˜Ê W¨;( ²'×7©)“j\¨ƒäQ}ÐÃgÚÞ£÷)m9ºYrÙxã±ÓfL ïƒ3I0 K]w*œðš>7¾Ö­º=nìû3£ ‘_¨jbó};+P{ïïf^ŸýnfTª=õOÔAËÇLÙð«yõøo6>tOìÿ'5oÀèû¡fôú¿á{šïø ÂiAýÎSØêóœ3ßà¼~¹ðxùzxž÷ã‰ó+ýÕÍ.RÞ¹ù¾¾ø)²/~¬¦îÄÙ©ÏɆv\EÑ¡M%Í-:‰øjÉ'ÔbhÅÐÁ¦\ù4!}è‚é4øáÂ"ŠÉ¸¶fXx‚Ÿ>»tݱLˆ­Ê¤®2?8¯q't)Lbªj0Á¡¥ûån|\áîO8`€ Wç³Ðõʼn)Ó¤ EÙwÓšéÁ‰‰åR«4ÓIÁ§äm©Å<ô@Êb¹LÞ†3‚XÖ1´g'&ŸD°i<¦ €Fóâfˆ Ö Øø‰EV>¶‡*ãDx­j‘êüä‰V©Óˆ¾1&aS(6¾ÝÄ€†»ì‡Ü…æ;ï‚Ia j¬\‡=@# ÷PžH¥a\h„±’ë‹'ÁóÎï`¡ìo(–fÂíJpP0áºsÑ3õ hbXìRç>$¬‹ÁÚçëͱ 9êVYR”ÅÉ‚®ÌX¥OWÖaø_á§Ýö®Ý«³ Žª¼4 jGÕÆzWŠ å)Vé:ŸÌÿÆECâK*G]Ðò/d7Œ/”…[Žâz~Ä8U†æ‘BzŸ(á†)0Ö4£ÄÚØ«xLý"¢UóçHc,(2¹Â4—c ½”dºW/¨”]7s˨úÕ½Ù†zb¤d…›QÝñ;zMx».*¾gιöôÌO”•p'ò n³OÕÑÈuó‡ä¬äŒ±¹±`‘Š&ÊKU/d§JárP5˜e•/î†6,Ʀ(¿ …Õå-Ñ þzjÅÅ»£/²¨B]‚ ¤“G‹Oh8Ü'«D¼À±ÑÈS'ôåÈjh]X%u^ªÃxëTFÓªÖÍRŠŸF2°º ¢ø9·§Vøñg·ñê3,ïç¯l_©P4÷Ä+˜‰¡#ÆÊ8ge¤Ò@˾•Re¯TÈ«¤,JªÖÄ©jÆlx6{PÇÄ¿ÿ’>?Å#ã^ê”è?|—ce&UdORôVXµ#ÿ•Ë~O)Mò…~þe.L“'çu’æâØA§g×ýáÌ, endstream endobj 126 0 obj << /Type /Page /Contents 127 0 R /Resources 125 0 R /MediaBox [0 0 595.276 841.89] /Parent 86 0 R >> endobj 125 0 obj << /Font << /F116 26 0 R /F97 17 0 R /F108 27 0 R /F8 14 0 R /F11 28 0 R /F13 61 0 R /F7 30 0 R /F10 29 0 R /F14 31 0 R /F9 85 0 R /F92 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 130 0 obj << /Length 3439 /Filter /FlateDecode >> stream xÚåZK“ÛÆ¾ëW°T9pËâ3ƒ§;e;–K)[)':Åöâb¹LbMZËùóé×<@¹»Jr‰Kµ"€ôtÝÓ¯A6[ͲÙ7ϲ£_ ÿg3=ÓU¦²ª™E©tngËþÙÏÏT]uM3¢KrïɃ—¯ûzö§áÙ÷ðÏ -ÍEDôË·Ï^¾ªgjJSÎÞÞÌr£ 3+l®Œ)fo¯g?Ì_]éùþV‡üß]-l¦çõ§W‹ÜÔó¯àÑÐßÁÿí'x¿å9ﮦ‚ô|Sï¯ðoeü{¸üîk¾n·psÍ×ßÁå·òüþ×”~ÌtNÔø×Û®ä}ü1ó .¿BZîG¦6<|-ÓG|ÅX¿ƒÿHhqŒ£_¥q ¯·8(ËÜ •¡/—W?½ýóËWMÃYZeÐŒ¡$:€°#¯ü3"+dáH,´VMQD„CÖÎÇo¾îméå«¢œñK)e³…iÀpj&añsdM>ÿꀬìø¯GÆ~m'ÐTŇnø’îÂã;šxæ=|€X®p&™Èþ¶?˜Óµ²µfæ¾FÑ–h0·hg–õݳýåÀpË?[4¬Cß9­.Eçø 1´ ¬dŽ5œÀ :ËvçHà׊ÌkGõÆxgj8Bz³™UEé¶TǸ¥d‡jûÑUÕ+—ß”M½Ïào˜e= ‡+Šù?pÔ³/VD““‘eAÖ1{ÈÒ.Yz¶*2¥„|¦P¦4çDÒüë=É„[6A­ñáx‰Þ…ry)Ýø(‚ð”ÖœâH;çšoÏ"–kHr|ÆÑKíF ƒJîw‹íRå‰)÷ÿ3Ê«ÇQ-ëÆ^Ô²ÆúËãñóÇs ÉwÂsYžU­UYÕOt)¡¤ù1+2ö‘g¼5XvHcÿ(›õ¡<4WMeâ}4H’7P%}Z QŒå¨èb,DP´É’óxkMVh˜ …¢Òú &މ&·\¶ìÖ‘£éaަ˜™º%ÛwÎrM¥˜·jò£ÌK›÷WRc>­Ùï`J­ëùvàGav’ßàÀzäß]묀ʘzï"’P[rM~8*“q(o¯‡£ØEA‘*Œ #yM©" q–ƒ+¤Ù¨Z/Þ(+Š˜œ4¹µ–”«·NÒ‰¯A:ÎëhÔÛ1Àš€·Û–ˆÛR4­sñMƒ«³¯G~LE*üŽœ¦ñ çÀm,cÄ\ÉVµÖœ'àL—ýPÊI-‘SÜ|ÀhË“(ZëÆ{lxþáì’´'´Ž7ȹ©ÂƳötç4€¼ÜI¸  ÄÇe³´<í’q©DLô”:£ sAD>?eF7 òU75ãyíöZ.‚ì»áí >¼ëMiA1M”Z^ª²´¡Š>-ΠÖóžÆ­Ýa: Ú^o$ ÔåMyDRçšÁ¡š”ŽòÌ—ƒ?d‰%€@îgü>HÀü ú'´M­!Ûr<²î.k¯ÞÑEIÃ-æBl…ø ¥Bn‡ã ¤lT¸øìLE­s‰ Œèåïã ò$%σ‡ç8õ2­Õ{a<î.†$,3Q$4à¦]¥ˆb‘¿¤} &Þ{³µ¤öªuîtèýV^JR¨Ú2WE¥OS4qF)ì‰,Ë?.ãÕóϨzÖóo¥q\Y»g‰ [ì‡ü]ªµJÛ©_ºÞÇ€xÝKjášÁ•%Æ~¡x·‘݃êjÛîÅùÇ–ö?ü¬Ú¾—Ff•ªâO ‰g )‰¼Ò7‰Z@ºš$-  ¹hæ@^°Èaû-4¤O?f¦H`¨j–ÉÕYÕåJÖVªl¼i¯Dâ!j#ïDõÔÕJ¤ñ…jB?i WÙº=suï<ë-ëò—‚õH¸‚Š ÞÈp?y3ì%°’´¯m(¤p`IÅ!V“‡U½°¢ u¾| †Ïãœ"j‚àPPáQºiTžOšM_ÉvHlØum¦úCâÔÝé$QÀ7Ü£kßFÛuÜôiC<$—FM»0ä[»H\!d(<`Š,ã× I7Nפ³TòNt³¤¾ g\TI&ONQ‘ D$‰?Œ±¾]Ž´ØŒQúÝʈFÉÜì4„Q*;µ<:/€;wFõW˜û9T°Æú3–½ü ÇÏ¥L{x‡ñ\i6Í:¢•n¤5üßþÜ­9W• ?ååw.Ù—ùï]Œ/xE'^+±¢—ëçaÊÓB ½òY þ´x¿"‰ß4^ýp”ÒTIÂà>r3!¹I£âØþÅ¿¤áIvôGª›þ\v°kÖ×ifÆ©ØÆ™ãkéɉ½{ÀÄlçíë T]ôhA'PÛ±xÇÂQ¶éúQä{½çÆ„ë±`©²qbðý7?²µØí¦ã×öaš«vˆÄÉQN¾™vúݰKòÎZè²dý´sè<äÕ½ÛOܰâ㺠rKytp!=zÞ%eaA*_ãõÈ…s·tvˆ†³–ã®<*ž|ú YX©UV”>æø#‡òÑWø/Üw)Á<ÂÊ­ãNæ]¦ p½ô§¦:Û .jÕØ9Ô˜¶¤éD”qµ¾ug«¦šs›–˜ª9ù^º#ƱÝI£Ê³H³¨e8rA`™` ®ý…ý· Zü¥JlÃHüÆùöåñÈ~ž»ÎI JÎ U7æôÔÕ7˜ .ý b)ƒýà0%ä?‹ž×;ñq¯EŽ‘Ñèঽ[«<èç¿`6œ”âtâˆèm~)n*w2þ44;èš¹©•É'çÛ„·´ªªª£Cæë6œÞ§}òãK¤ÂÛ'7#¡è‡?Z‰N:•ZUíaÇH¥ÒåäŸtC Ü=®w,H5iÁãí:ú´Œ^»9þ¨f%¿ñåжöAËœ³·Â¨:´îþS{,Cßf¼uˆ€>ÌúÀø,§âö:HƒµÇë7¯éçï_\Õvþöõ_8AÆao°ÑŽa Û,‡-<ÝÁ;×NF.vô[5Å<Ű™tÄ¢¯ ˆg®·9ênaÎE¦Šà«°cN-!òê,sŽ1+´ãX.|%G«èyúXj¥ëò!®Òý94 3øóžÎ¥®''ì…Ê‚½¼¨ÜWttDo„a1å€è¹ÌªÒª Ç®gwì"or¥›£Ð~¥x®…Þ¦}ÒIH,ª2Õ_­è¸©]“º_hÇÞ…ö=Žr/õ:zrï?·t‰¦ò½In„ïÚ;y~ö{S«"ãÄá*¢Ä·><9Ip/¹¼Ÿ˜Ìé÷„u—:oš°‘ã‡Ìåù¯(lIQ¤|íºaUŸ7æ¦P6¯cô¾c!©Å5¤£öPúa2ˆñÚæÎ³š[w E‰)8÷–DG×VrŠN ˆõeh¤;¬®ïâ³Ù¸­×ñ5ïhÿÁÛrÒ5”oŒ1–†Ïü§ZJÿüÜÑ{²¸0rw®ØKÞž6ÛTåy;¯¤©CqþEÊõØ¿È#%!P]®'qê¿RUð'h¤ˆðç³DY¦ ÌìÎJwqé ùñ‰ ŒQÃ5>Øw­%QåØY“ê÷ãq$ab&\Æ‘»Žp;v9EÓ9óaôq¡1&‹8Ž¾ÉŸ?@àטIÚ> endobj 124 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-danishqmeplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 132 0 R /BBox [0 0 288 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 133 0 R/F2 134 0 R/F3 135 0 R>> /ExtGState << >>/ColorSpace << /sRGB 136 0 R >>>> /Length 30744 /Filter /FlateDecode >> stream xœ¬½MÏ5Kn¸¿¿â]J‹¹ªüfn¥`v7à… E¤1Zhµ n ü÷§H3+²¡Ž; ß6oè9yxªŠ¬H&Ó¿ù‘~üÓýé¿þø×mþüÔ£ü\ë4åç‘ãþð?þûßÿôüoÿé/üýz~~žçÇ÷¿üû€ÿêWÿü«¿ú/¯w´ÿó§¿ý»Ïø)ýø›÷ÿýÓOIÿÁÿüÓ_þú§¿øëô~š_ÿ??ò_ÿáGýyÎ÷_>þÿéõçZ~Œ÷Ž¿þçö»?ÿñëzÁ_ÿá§ÿë×ÿarj¿€œë/ —ü È5ýòüä&¿€Üû/ _*)¿€<¹PµüCì·ü È\¨ZUrâ. 'g.T­+¹pÆûÛzÉ• U›JnÜ…áäÎ…ª[¨:watû¶*' wa8yr¡ê퇤ŸîÂxo/9q¡™»0Þ'×KÎ\¨†(¹pƘJ®\¨œÜ¸ Cª’;*'îÂad.Tbk'ª÷v/YŠÜ”œ¸P99s†“ *¹ ÃÉ• •‘wa8¹ÿ’P îÂp²ü’P wa8y’¡z¯ªòóÃ\M³‘—L¥ÌAÎÌ…d*ere.ŒEfBäÆ\A¦Ræ æÂh?§¬d*eòd.Œ¦÷M©\ʼÈÌ…ñ’EÉTÊäÌ]N¦Ræ WîÂxë×—L¥Ì/y™»0JR2•27½ ¼äÁ]ïmà%S)s'waÔ÷Û~/LîÛvrâ.Œö™û¶»‘3watûØ…û¶ßŸ‡ØÊò[Q½äÆ]’•ܹPiâú’¹ ÃɃ Õ´P waL ÕäB¥äþóÃ]šÐt}nðäÌ] s¡rrá. 'W2TFnÜ…áäþKB5¸ ãMY_²0¡²ß–’™ £k-÷’'*'ŸæÂrbBäÌ\A.L¨™¹0ºV/¹’¡JnÌ…Ñ5÷{É U²=˜ #ÈÂ…*M%OîÂxJæB¥dá”®µÜKN\¨Þ„â%S J×—/¹p¡r2¥ ¹q¡™»0œÜ¹P‹3¥ tMß^²¡²8S Š“'—2/2wa8™J™ƒL)(A¦Ræ S J×;öK¦Ræ S J·er)s)%ÈTÊÜõ¥åK¦”®¸ùp)s)%ÈTʼÈÜ…ád*eîúÛzÉ”‚Òµ–{ÉTÊÜ5¡xÉ”‚ÒõÞK¦RæEæ.Œ÷zzÉdÊ<ª’)ÅɉSP‚L)(A¦” S Ê"óßvâ”®oÂ^2¥ ™RPºÊ/™RP‚L)(]3m%s†4%S JWErfNA±úõ%S J×âû%S Š¿/™RPºþ÷%S ÊÐMJfB5ô{~É”‚2´|É”‚dJAšu¾dJAú&ì%S Š“ § ,2sa ½c¿dJAš¼dJAz»É”‚dJAz1¾dJAZ (™»0ÊT2¥  ]íK¦” S ÊÐGÜK¦”¡`få6Ù+¥—L)(‹Ì…ÊÉ”‚2ôÖ÷’©MGA¦” S›Ž‚L)(A¦6-2wa4Q2µé(È”‚2¬ºi\ÊdJA 2•2/2wa8™J™‡¦¬/™RPìñK¦RæaEY㔡ÉòK¦RæaeB㔡/ðfãRæ S Š“;—2™RP†eúK™ƒL)(ÃʄΦÌÓÖL)(A&Sf'S JÉ”ÙÉ”‚d2e™»0”<8eXQ68%È”‚dJA 2¥ ™RP™¼0ŒL)(A¦” S J)ÅÉÂ)(&**™¼0ŒL)(ö_2¥ ™RPD_È¿dJA 2¥ ˆî0xÉ”‚"Z×(™ •¨Ž ]}Ì…!öÎ@8Å~/™RPÄÞLNA+û'§ ™RPD5w%s†¾p˜œ‚"ú7_2¥ ˆ¾É”‚"úÞñ%S Šéü/™RPLçW2waTûË”‚"Zš¼dJA}O’ž‡Ûu´Ø”†"úªVÙÔ¾#»û)›RQD_7›‹WóONé(‹Mí=ZlJI±;·²©ÝG¢?oeSZŠ(MÙÔþ#Ñ—ÜÆæ.c'.¶=)ʦôÑëZÙT-Zl(›RTDo ʦrhÑ¬ÎØÜU2§±©,zª´ lJU™úòVÙTm‡(›ÒU¦ÞL•MeÒ¶‘(=™SV6›‰ØbSÚÊbSÙôbSêÊbSùôbSúÊbSõfsWIªÆ¦rêŦ4–Ŧ²j° §²,6%³l6w•¤ilJhYlJi™Z(›’Z›ÒZìeSbËbSjËTÅÖØÜU6¥·,6%¸€]9Åe±)Ée±)Íe³¹«lJuYlJvYlJwYlJx™Z(›R^¦ªÊ¦¤—Íæ"Vб)ñÅ6§§qêËbSòË´c£^6¥¿L¯b'ÀLUO”M)0Ó«ØÆI0‹Mi0öŽEÙ”3õâR6¥ÂLýÈʦd˜Å¦t;ÊØÜU2”ݹÍKS`ʦ¤˜étç¶/-6%Æ,6µizýÝ99fzýݹ-LSo‡Ê¦;”KÙÔ&¦©;”ÍH2ãñ¸SÛ˜”­ßÚ D™—œÍdØ6q•l6“ao6#Ìl6“a+»›‘f†õJ(›É°•ퟜg6›É°•=ÍÈ3/Ûò–AeØÁJ Ö%¢l&ÃöYÙŒDóas›i^¶åLBeØ›ÍÈ4›ÍdØ›Í5›ÍdØ6w•Ôfl&ÃV¶Æ{RZͰ •Íh5ãñ\qRZÍ0©CÙŒVóasW ØŒV³ÙŒV£l16£Õ(ÛãÍh5›Íh5/»û¯…Ñj>lî*Q¶ÎËE lF«Qv36£Õl6£Õ ;ÙSÙŒV£ìélî*þÉ­æe¿7Se3Z²‹±­FÙÝØŒV3LŒT6£Õ([k‰Òj>l.b`3ZͰ†Ke3Z²‡±­f³­fØ×¥lF«ÙlF«v”¬±™«$iŠ©lF«Ö¨ªlF«Q¶Ç›Ñj^¶Ö%)SZÍf3{ >læ*Iö.÷e3» †]Êf´eOc3û †IöÊf´eWcw.bÕ×Íh561°­f³™ÝPÁ.”V³ÙT†½ØŒV³ÙT†m áÆæ®}þ²© ÛN›V6£Õ ëFW6•a'{ü²­FÙÓØT†½ÙÜU6•aƒ])­f³© {±­æe[v_¹ ÛŽP6£Õ ÛŠdl.b–aWJ«–4(›Ê°íhte3ZÍfSvòÚ RZM°—a'•—ŒÍ]%ÒŒÍh5›Íh5›Íh5Êc3ZͰÓ.”Íh56w•€Íh5›Íh5›Mi5‹Mi5Ék¢Îi5‹Mi5›Í]%`SZÍbSZÍbSZÍbSZë¢lJ«Éhc3WIV©CÙ”Vc'”Mi5v"²)­ìÁi5Y_ *›Òj²>”Mi5ÙëïÁi5ÙTÅ—Mi5‹Mi5¶WÙ”V“½þœV³Ø”Vcg)›Òj²)šÊæ®’ìߥՀ-œVcÇ')›Ù µÙ”V³ØÌn¨›»JÀfvCm6¥Õ,6³j³)­f±™ÝPÊ.Ʀ´Ûpol2bš§r³‡ô¥l*ÃÎþ΃›Ž¸ÙT†m­ʦ´šlûö^6•ao6w•€MeØÙtàÄÍHÜl*ÃÎþ®‡›’v~¸ {³¹«l*ÃΦAgnRâfSv6;s³_ö›4(›Ê°³©©™›–øas{/eSZM¶w=ùa3l°)­&ÛþÔœØ [÷§fnfâ‡Í}çú®'sS•Mi5‹Mi5Ùö§fnpâËÖ=¢™›œ¨ìalJ«Éú_c3³æ-eSZÍbSZM±.ËÌOÜlJ«YlJ«)¦Agn‚â‡Í\%‹Mi5‹Mi5ÅôïÌMQ&«)›ÒjŠÕ¡™›£8ì¼PcsW‰Ö‚™›¤¨lýιQŠ›Mi5‹Mi5Öâ¨lJ«11RÙ”VSL=ÏÜU6¥Õt¯$¹ £{%ÉxT¶þZ¸ÃmU6¥Õ,6µªÛþµÂyÝ«XnÎã‡Í\%‹Mí†ZlJ«±¦TeS»¡ºWïܰGeûߦvCuÓÇ 7îQÙz}n7T·3- 7ðq˜ð­l*Ãs#‡/¬l*Ã^lJ«Ùl.bª2nìãfS¶]ØÊ¦´;”YÙT† 67úq³© {³¹«Äj"á2lÛ¢¡lJ«é^—awϰ¹›MeØÝósnäfSöbSZÍbS6ØÜÈͦ2ìŦ´šÍþß97 r³)­¦{Uà ƒÜlJ«é^qã Gwe›9l•²)­Æ›W6¥Õر©r!•=ŒMi5¶ýKÙ”VÓí,ÏÊM„Tvu61Õ$+7rØýʦ´šÅ¦´šÅ¦´šÅ¦´šÅ¦´šÍf®°¹‰›Mi5‹Mi5ÃÔÔÊM„Tv36¥Õl6s•X9£lJ«YlJ«Ö»V¹‰ÃÆ`(›Òj†[¹‰Ê~«ØÊM„V›‹˜î0­ÜDÈaÛZ•M톲TÙ”V3L=¯ÜDÈͦ´šaµå&BÛÎklî*Ñ7•›9lhв)­fXí_¹‰ÊÖ¿ÍM„v8’²©ÝP›Í]%`S¶m¡V6¥Õ,6•a/6¥Õ,6•aÛkeSZͰê]Ù\Äô$’ÊM„Ül*ÃVWn"ä°á@ʦ2ìa Wå&B;LÙT†½ÙÜU¢õØË&3ìáß9¥Õ,6™aÿÎ)­Æ2)›Ì°Å-”V³Ød†mln"äf“6Ø”V³Ø”V3ììÖÊM„ü°Éï|›Òj†×ÀÜDÈaGå)›Òj†§Y¹‰CL“¬ÜDÈ›¹JÀæ&B[¦lJ«¯Ç¸‰ÊcSZxUÃM„v¸¡²)­Fô¶`l.bÉ×Mi5‹Mi5‹Mi5&V(›ÒjÀ&'BŠé¡•œiCîŒÍ]%Ú/Xɉâ59r±)­f±)­f±)­f³¹«lJ«ëø«äDHñÊ‚œiÂXªäDHñüœœ)žŸ“!Åósr"¤^ªlJ«±ÃK•Mí†}ì+›Òj›Ú µØ”V³ØÔn¨Íæ®°©ÝP`“!›Ú e_—²)­ÆŽºU6•a[[©±¹«Ä´šÉeØ‹Mi5‹MeØ‹Mi5b§$¼l2ö잜¹ÙLĦeØœi—‡²© {±)­f±© ÛŽUV6¥ÕX´²© {šâÑȉÓòó—MeØÓT‡FN„´[’²© {ÚžÁFN„;q¶µ›»JÀ¦2ìiv#'B.6¥ÕØ!Üʦ´šÅ¦´šÅ¦´šÍ&¿sgSZÍbSZÍ´]žœ 69r±)­f³¹«lJ«™Ö»Öȉ‹Mi5¶‰JÙ”V3M£jäDÈŦ´šÍæ"¦Õ\#'BÚæ1eSZ¥y©‘!m뙲)­fš^Òȉ¶qMÙ”V³ÙÜU¢==œ9íóFN„\lJ«YlJ«YlJ«™¦ô4r"ä´7ÿœi[ S#'BNëejäDH;lî*›Ê°›Ñj”íß•a/6£Õl6•ao6w•èÉ3/›Ê°íËV6£Õ(û}õÌeØvÌ®²­FL|V6•a/6£Õ|Ø\ÄT]ëÜDH±Ÿ¨²© ;Yýݹ‰›MeØ‹Íh5b#+›Ê°“íÓìÜDHeë/µpöb3ZÍfS¶ ©U6£Õ(;›Ñj”]Í]%Zûwn"äfSZM²Ú¿s!Å6—(›Òj›Òj’½wèÜDÈ—­{D;7r³)­f±)­f±)­&YõÞ¹‰›Mi5¶ÈØÜU6¥Õ,6¥Õ,6¥ÕØïʦ´Û•:7r³)­f³™ˆeS‘;7R²×ÀÜDÈͦ´šlûS;7RìH eSZmS6¥Õdϰ¹‰b[Ï”Mi5Ùósn"d°¹‰/[w¿un"äfSZ&06w•€Íì†ÚlJ«É¦Íun"¤²»±)­&[Vç&Bn6¥Õd¯j¸‰b›$•Mi56à>un"¤²‡±)­ÆY(›Ù %v䌲)­&[ïÚ˦2ììµ 7RÙÅØT†½Ø”V³ØT†½Ø”V“½’\†½’ä&B[¸ ;{EÅM„”ì5‘p¶m%V6¥ÕdSö^6•a[ѯlJ«É¦)›‹˜î8ìÜDH)®x—a/6¥Õ;óîeSvñ,—›©ìbl*ÃÞlæ*Yl*Ã^lJ«)¶Ó²s!7›Òjl8²)­¦xvÏM„Tv56¥Õ,6¥Õ,6¥Õ;bp!_¶ªkƒ›)öROÙ”VSìl‰ÁM„Tö46¥Õ«¨7Rìà5eSZÍbSZÍbSZÍfsW Ø”VS¬ÜDÈ—­§C n"¤²»±)­f±)­f±)­f³¹ˆMi5vÈŸ²)­f±)­f±)­f±)­Æ‰”Mi5Åö§n"¤Ø¸¶4¸‰/[«¹ÁM„Tv26¥ÕØ¡ŽÊ¦´šb5Ñà&B~ØÜUÒý;§vCYë—²)­ÆDeS»¡¬qLÙ”V³ØÔn(ˆÒà&B~Ø\Ä´wmp!7›Ú U¬¢ÜDHeOcSvµì~p!_¶ž¿6 —ao6s•,6•aÛá¥Ê¦´šÅ¦2ìê67òekGШ\†m-ŽÆf®’êùyå2ìê67RìÈWeS¶ùªlJ«1!TÙT†½Ø”VcÇÍ›‹XõuSZI¸Ê¦2ìêy 7r³© ÛZZ•Mi5Õs¦ÆeØ›Í]%–3q!Åšq•Mi5öU6¥ÕTÏ<¸‰›Mi5›Í]%ú&xp!_¶žC6¸‰R=oá&Bn6¥Õ,6¥Õ,6¥Õl6w•€Mi5‹Mi5¶ÁCÙ”VSõõ³²)­¦Ú“ÁM„»‘›»JŒÍM„Tö06¥ÕX³}ÜDÈͦ´šæ927Rìñ—7RlKޱ™ˆ5Ï‘¹‰ÊöxSZmR6¥Õ4Ïr¹‰ÊÖOÎM„ÜlJ«Ùlæ*iþ››)Í3ln"¤4ϰ¹‰ÊnƦ´šæo‚¹‰ÊöoÒjš¾ U6µÊÙW6¥Õ4}Á”7RšççÜDHegcS»¡šíÜDÈ—mï'·ªyŽÌM„T¶¯›Ê°›Òjš¿Wœ\†mcÒà&Bn6•ao6w•X]2¹ ÛÙÂM„Ül*Ã^lJ«iÖ­ Çzg“WÉ46•a7;M¸‰ÊnƦ2ìf{k„›)vX޲© »Yß»p!_öô_ •awÛ± ÜDÈ—­Ùž¶Ç2[lJ«Yl*Ã^lJ«Ùlî;›Òj›Òj›Òj›Òj›ÒjlXLn"¤²ÅÙdĦ±)­¦[~.ÜDH±íÛʦ´šÅ¦´šnù¹p!Å^ò$á&B¾ì 6w•èpá&B*»›Òj›ÒjÀæ&BЦlJ«±ÁDÆæ®­ „›¹Ù”VÓ­²n"¤ØK½$ÜDHe‹±)­ÆÚ”Mi5>±]¸‰›Mi5Ýf§72ØÜDH±W¡I¸‰›Mi5‹Mi5›Í]%–år!•=ŒMi5ÝÞa 7RÙÝØ”VÓ=Gæ&Bн¼66w•LÿäÔn¨n]–ÂM„Ÿš.ÜDHñ©éÂM„Ÿ®/«˜ˆ-6¥ÕøìqYõ Ø”Vã“˽ §ØÕØ”V³ØT†½Ø”V3ì”#- ¹ˆéûsá&BŠÏ=×D›‹˜e¹ÜDHñÙãš®rÓ3s„›)>{Ü“Ÿ_Âæ®Ëö:—aÛŸ*ÜDHñ¹Èz[ç"¦ýcÂM„T¶ÞÏ—a¿ÆM„”á︗aûTeá&BŠ5ë)›Ê°MVS6¥Õ,6¥Õ ϸ‰2üéÏM„ÜlJ«YlJ«11RÙ”V67R|6±p!7›Òj6›Œ˜³)­f±)­ÆšR•Mi5âÙ7R|.²p!=Ðʦ´šÍf®’Ŧ´°¹‰›Mi5‹Mi5âï4¹‰"žyp!7›Òj›ÒjÄón"¤_ØÊ¦´ñ7ƒÜDHeû'§´ñŒ‹›)>áwr!ý¶ lJ«Ë<&7R|òéä&B*»›Òj›Ú e›,ŒÍ]%Ú¥1¹‰›Mi5v+V6µJìD­ÉM„Ô¹þÖ¸‰â3['7RÙblj7”5Û+›Òjì!¢lj7”®lJ«™Z:+›Ê°­Ñ_Ù”V³ÙLÄ›Òj|è˦2l;¢@Ù”V3íL¬™¹ {±)­f±© Û¶A›»JJ56•aÛ&*eSZϲ|ÙT†½Ø”VcÝ+›Ê°§e“›©lÿΩ ÛÙW6¥ÕLë&ž…˰›Òj›Ê°}–åä&B~Ø\Äz66¥Õ,6¥ÕXj­lJ«™Ö•3¹‰Ê®Æ¦´Ÿ'9¹‰šÖ'cSZ¥õir!Å'BNn"¤²‹±)­Æç*Nn"¤–¾nF«ù°‰ˆMŸN8¹‰ZÎøßf´ši‡Æ(›Ñjæãy 7ÒK)e3Z²õúæ&B*{8›¸J´{ŒÍh5Ó'§Mn"¤²»±­fÚÆTe3ZÍf3Z͇Í]%Í¿sF«™>onr!•í¿F«ñÒYÙŒV3mìIšÜDÈé“ò&7RÙÝÙ\ÄÀf´ši‘•Íh5›Íh5›Íì†ò×Êf´}]áñfvCMŸ}6¹‰Êöu3»¡6›Ñj”­ß7r>ž·p!•]ŒÍ솚> kr!•=ŒÍ솚>Qjr!7›É°ý‘²­FÙ¾n&Þv—²­FÙÙÙLÄ|FÐä&BNŸ•3…ʰ§ÏÊ™ÜDH¹¥l&Þ>õer!§O?yÙT†lŸæä&BÎä÷sá2ìÅf´šés<^6•a'¿§r!gò;“p¶OG˜ÜDH%˜æä2ìÅf´šÍ¦2ìÅf´šÍ¦2ììµ 7rÚsÆ&¿sg3ZÍ´ZÊf´šÍf´¬lF«qv~¸‰6w•¼)‡²­FÙÍØŒVã/¯•Íh5Ó&3(›Ñj¦µã(›Ñj”]Íh5Ó¦#›‹XÆf´ši ”Íh5›Íh5.䇛9í¼{e3ZÍ´3ç•Íh5ÊÎæ®’7ÅT6£Õ(»›Ñj6›ÑjTêðOÎh5ÊžÆf´š›»J¦Ç›Ñj6›Ñj¦žžn"äf3ZÍ´Ó´•Íh5ÓNÓV6£Õ¸Äcl&bÅŸÜDHe‹±™ÝP³øÓ€›©lÿΙÝPÊöOÎh5›Íì†ú°™«ln"ä,þã&Bn6³Ê%=eSZcT6³JA°¹«¤ûwNeØE_Ë)›ÒjŠ&Çʦ2좷beSZMÑÔZÙT† 67rÚY½Ææ"6¥ÕXs¦²© »êkweSZMÕ—<ʦ2la•Mi5vX­²© »jIalæ*Yl*î^—p!§u«l*ö¦Ôüp!7›Ê°-ÐÆf®’ª…˜²© »úýœ›©Òu16•a[3®²)­f±)­¦ú³„›9«?K¸‰ÊžÆ¦´šªE²)­Æ¶ 䇛9íÂV6¥Õ,6¥Õl6w•ÈclJ«±[’²)­¦zMÄM„ÜlJ«YlJ«©šÞ*›Òjlƒ‡±™ˆÙÍTÙ”VÓôµ\~¸‰ºÁã16¥Õ,6¥Õ,6¥ÕØI Ê¦´;ÓØÌUb[”Mi5ÍëPn"äl^Ir!7›Òjš¿•ä&B~ØÜUb﹉¾¡GÙ”VÓüéÏM„ôí@ʦ´šæOAn"äl^Yp!uCÿmj7”mR6¥Õ,6µÊŽ(P6¥Õt¯,¸‰º™HïkÜDÈͦvCm6s•t3ÈM„ÜlJ«Ylj7ÔbSZÍbSv÷7¢ÜDÈi'¨)›Ê°í@ eSZÍbS¶ÑŸ7Ò7®)›Ê°»ýʦ´;ŸÉØ\ÄÀ¦´;ŠCÙT†ÝíýZâ&BN;ÈCÙT†½Ø”V³ØT†Ýíí\â&BN;‚DÙT†m'KåÄM„œ–Ö+›Ê°íøeSZʦ2ìÍf®’a÷Ô—MeØÃt¢ÄM„œv⎲)­ÆŽ^Q6¥Õ ýº”Mi5VÎ(›Òj†)‰›9í¤¡œ¸‰ÓNûQ6¥ÕØi?ʦ´šÅ¦´+¥”Mi5ÃïkÜDHß ©lJ«YlJ«{ûž¸‰Êö¿Mi5v䌲)­ln"¤²³³™ˆ-6¥Õˆß™¸‰ÓÎÔP6¥ÕX ©lJ«YlJ«Ï¹‰6s•ˆß׸‰Ó R6¥ÕXé¬lJ«±í¼9q!§=Q6¥Õˆß¹‰ÓNÅP6¥ÕØ©ʦ´;CÙ”V#*eSZ\Qvg"f‡#)›Òj¬è76±éù7rÚùʦvCMÏö¸‰›M톲ʦ´£lj7Ôô;7r³©ÝP‹Mi5‹MeØ‹Mi5‹MeØÓ4èÄM„Tv16•aÛ¦÷œ¸‰súý¼s¶ lJ«±ƒ¸”MeØÓsdn"¤n™¯Î&"–žÇoªÜHH¥«:÷Ò™[éÙéŒ\ct9“eèŒ`£t»³*Ï6úp:q±]ŒÎdÚFŸFgD›ɵ?tF¶QzõožÉ¶ÞœN^2Õ?<£Ü(Ýn±Ü€H¥_;£ÝÝÿ:#Þ]¿:nF¤ÒíFÉ ‰4zq:yÉH7:#à(}&£3 Nòž¥3Nz’ߨ¹I‘F÷µ3"ŽÑ‡Ó©K&ùc‚©ôì?FÇ1ºxFÈQº½ñäæE~茔ó¡3ZŽÒ-%ãFF}Qs”nB74Òèþá=çCgQt”>œN©B›N©B©x)ÄÁ4z1:¥ )½R…’O (Ü$Ì”|L@áFaÝÿ:¥ %ßÙX¸a˜FŸN§WýÉÃL~I.Ü<ÌR…ô0‘dtJJ¾Ïªp#1“¢tJÒA§S—LµŽÔÂMÅüÐ)UÈ3Q:µM+Ùÿ(R…’Ÿ*^¸É˜F§S—L³&¯ÂÍÆTº½¯ã†c~èÔ6­M§T¡d[•NmÓÒ3UªÑ)U(5¯¤&·M+ùÑ…‘©ôéžKÈmZƒÒ)U(ùyÕ/KÈ›]q•“™’ŸäûÒ¹„Üra£S—ŒlP:—Ûé*J§T¡MçrߢV¹a™F÷µs ù¦S—Ì¢s ù¢sªP·ôKçr?"¶r#3•®÷ù—Î%äÃŽb¬ÜÐL¥ÿð\B>ìåCåÆf*½ù‡çr›ÿ tNVMÔD&ä‹Î©B¾Qªr³3?tN²N”ΩB– çÊÏ4ú4:§ YB§tN²¡JçT!ñÛ7BSéšWn†æ‡Î©BbçxWnŠfJ¶/Oéœ*45àJçT¡EçT!ßõQ¹IšJ׎ÔÊÒTºNO«Ü,M£‹Ñ9UÈN(Q:§ M+Ä*7N3åÇŸqÜTn¨¦Òõý|å¦j~édàôý|åæj*]+©Ê Ö4z6:¥ ù %J§T!¥w£SªPö­ •®™ôˆЩK&yvÁ×Tº]ïÜ|Íä'”(Ú¦•m[_®Ü„M¥ë»ÊÊØ4º8ºd’×2ÜM¥Û–›²itÿëÔ6­ì‡2UnΦÑý¯w2pÓé”*äGŒ Ü¢SªPöƒ‰^:•›¶iôit*!ÏÙ«HnÞ¦ÑýÃS ù‡N]2‹N%äÙÆ7(R…”îJȳŸíS¹©›É8Q:•çâ57wÓè¾v*!ÏÅÜäM£7£S ¹žP’N©BzB‰ÿu*!Ï~DLå¦o*}N§SóÓ6*7ÓèÝè\B^½ã&p*½û_§T¡\ã›§T!?fÃèä7¯çÛTn gÒ“*²Ñ)UÈOªP:¥ m:¥ 忉7‰3ù9J§T!?©ÂèTà쬥SªPn~Ÿç¦q&=nAŒN©BzbA5:¥ eo`¯Ü@Δñ†œ›È©tÕ"+7’SéºE­r39•n5,7”3yë¹Ò)U(Û–¥SªPö–ÒÊÍå4º8ºd¦ +ÜdN£û‡§T¡Œ—ÜlÎä-ȹqÃ9>N©BÚ‚ìR…´ t2púê£q:“v²6£SªÐ¦SªÐ¦Sª6ƒf£SªP1PéÔ6-¥§3—̦SÛ´‚Î êTºJ™›Ô©tÝGݸQF¯F§¶i;YÖèÌ%Sü0íÆMëLÚÕ—ŒN©BÅ7¿tj›V±ù‡J§T!í-óÀQ ¹·¦)R…ŠŸ’ªt*p~Niã†v&mzŒN%ä›N©BJÏF§rmÓéF§T!ítñO%äÅ^‘ºdš’Ú2—OÈ7¼SéºËë¥S ¹ö8R…¼ç ·Â%äºëÿq:uÉ ÛªÔ —?Û§q#<•>œN%ä¾Zé”*TÄ/ØÂ%ä¾ Xé”*¤ûp³Ó™Àé¶¾ntJª6¯@é”*¤›ËœN©Bõñ» 7Ë3ùö.¥SªPõÙ:›æ©t=©qã<>ŒN©BÕŽüW:¥ é.¡ntJª..4n¤§ÒígÃÍôLµDà(UHé¾vJÒ-Óè”*Tí(èܸ¹žFŸF§T¡êÇÛ6n²§ÒÅ?<¥ ©ZœN]2ͤjÜpO¥7ÿê(UH%ÐatJR1R…TôožR…ªuõºdºmUj܈ÏTý¸ËÆÍøL.‰(R…ªµg)R…T”ðO©B.J(R…\0:8ñ—Nä O}5þR…üݶÒ)UH_Rzà¨mZúšÐG©BúªL¿yrÐg³YLFg.™M§¶ié[‡itJj>¬‘ƒ>[öÔˆô饳ҩmZÍÇQ5rÐg³]ÀJ§¶im:¥ i–N%äZÄø7O©BžNæ&\BÞ\kä O6 œ=•N©BþxQ:•ë-VŒN©B­Ç‡§òæý2ôÙütÜ—N%ä 49è³MÏç…KÈ›©T:¥ )]7¹„¼?þŽšôÙ¡ML.!éº÷ ‘ƒ>ûãÕÄäòžü-19è³'ÜäòîÇã4rÐgOžO.!ï>𱑃>{öRˆôٳߨÉAŸÝšr'}v?÷ “ƒ>»o×éä Ï—®ûi;9èó¥ëK§Núì>4¡“ƒ>»÷EvrÐg÷û|'}v›b­tJåuô9ü°ÍNú|éÝ×>™À ß~ßÉAŸÃ(U:¥ ?Ϫ“ƒ>‡8¨tJ¾³±“ƒ>‡Ïëä ÏÑlOi'}¾t}ùÐÉAŸÃ^Ø(R…†Ÿ½ßÉAŸÃNkÈô9ü`áNú¾wrЧø¶ÌNú”áwZrÐçL¶ß¦“ƒ>_ºÎ—éä ÏYüWGúœv ‘Ò)UhŠ#ô™û³JgT!›’ážÙ¦eÏ‹ÑUÈ6“ê7ÿ¿ôù_üëOñÇÿöŸþòÇ_ýê§7y^æç¿¿ú«ÿò“Þþ?úÛ¿{IÿðSúñ7ïÿû§Ÿô¤éçÇþ©Û«¸÷–øæíÿìòæï~üê‚Ýzÿ›•©rO nm4ùÐú€a~ðj .ÜÍÞ›&5 wóƒÏ¦Ï…»¹ñœ¬ü\ksóƒ»Ö¾q }µÿÇç«ýãßÿþ\öÈ%·þ¬ÿ¸ÝM[ÑMè~Ñ$ Ý úÿ–*vJʦæÿ8Õ)y>Üö'puÓÁ÷ï¦çO ‹dùüá?l‡ÕçÅöjT¬_ñŸ¸•ßÌõ­54NlÏ&·6Š£†ùÁUzüàn~ði'ù/ÜÍÛ ¥¹p˜Ü?îÂ÷§ÿ~5Ÿïãÿø|MÕj»‘ãâëü÷¾Øÿ-[¶Çÿ·ÒøÓéÚ¸ôú§Óeí#yóÖ?™žÓšÚòfÛ:]¿w§Ÿ¯_®þŸðŽw¾0ó°}O¿‹(žfüã_Ùmø?r»(¸êu ˜ÝìhÛü¦h^‡þíŸýõoÿíß~ûûÿñã7?~÷/ÿã÷ÿò‡þÍï~üÃoÿøoøíÿýçïsíÇŸý¿ÿöÛùýŸÿÝ_ÿÍôÞ`JkZ“›þá7ÿö›¿ý½þß?âo~÷—ëÇ‹Ú;®þÕÿù×A¿ß/IŸáïŸÄÿüáü÷¿ÿÿãÁ%_V_k?·Ä¶™~Q9Ñ9¾è_Ô6D,Ô¬Mõ‹¦z¢o1ÿA_ë@ßçØ}­:O´Ê­r¢­ÑÖO´cE-, n¿eð}­¬¨%Xš=Ÿ/:Ÿ ÅŠZèkÛÆDG¬@ÍNXÑ»·5;# ïÝÜ­@Í.±¢ +P³+¢Ð, n7¬¨gXº-*'Ú±¢^`jöh_t´¬è­ÓÜ Ôì‰(ô +Ð×¶Ýr†¾ÿ7Ý QxolnjvŠÞ$Ù­@ÍΈ‚$X@Ý.í‹–v¢QÐç²YšÝ°"é°5»# 2`ê6VôþÞÜêö@f¨ÙÒ¿¨ôõ‹ÎúE«> jÖ¦ôES:Ñü|Ñü\¨¨œh_´Œ­í‹Öv¢­~Ñv­¨ç/Úó‰ŽXÑ€¨Û…¡W®[††íwàu ³ÑÙ¿hÃøch*_4•õ;ðÇ:Ðò|Ñò\è<Ðy¢u8šX@Ýný‹¶~¢½~Ñ^Ot”/:ʉJÚ`jö|¾è|.TT¾hÇxèÝÕ­@ÍNˆÂûºÔíŒå+P³ ¢'¬@Í®XÑûý»6¢ðÖÏnjv“/ÚäD;¢P3, nöEG;QAÞȺ¨ÙŸ¹ , jÛöCõ9`PØøÌï“×­@ÍNˆÂ¨°€ºñ™ßëË­@Í.ˆ‚Þ5ÍêvEô®iV f7¬HV n# ïJÝêvÇŠf†¨Ù£ÑÑOTÚ•v¢³|ÑY¾¨Iò 5ë@ÓóEÓs¡ó@ç‰æñEó8ÑÒ¿hé'Z…÷>æV f7[‘èsÙ-CÃîé‹öt¢ãù¢ã¹P9P9Q_TƉÎöEgû¢–Á/Ô¬Mh¨Ù9VÔ`êöÚajvÁŠRÔíÚVXšÝ°¢÷ r+P³;¢ð>yÝêöÈ_tä•ç‹Ês¡XQn°5{" yÀ tü˜¶o=P·4Õ/šê‰æòEs9Ñ’¾hI'Z±¢÷ŽëP؈Â{ßv+P³Vôæ{njvo_´·õ‹Žz¢’¿¨äé‹Ît¡ó@çM¸¬MˆÂû‹r ¨Û¹}ÑÜN´ ïS­@Í®ù‹Ö|¢íù¢í¹P¬è½c¸Ôí>¾h':úýD¥~Q©':±¢7Wt+Ð×Ψ5>Ö&¬èýU¸¨ÛˆÂ»·5;cEï3Ó- nDá½rÝ ÔìZ¿h­'Ú…7p+P³ãüæ·n…=tžhÜ—u Ò¿¨ôõ‹ÎúE ju )}Ñ”N4# ïõåV nËʉDá]‹[š]…7ûp+P³[ý¢­žhGÞëÚ- n¬èÍÜ Ôíy óD+z«nu{" ³Â ôµ+j ¸ëV f'DὟ¸¨Ù^kLŽ[††íµ†LêV nÏ'굆àV f{­1µ–w+P³½ÖøXêµÆÇ:P¯5ìD ·€º=±¢4`ê¶X¾vC­ñ±Ôk ËÜêvÆŠÞÿu+P³ ¢ðþVÝêvÅŠÞoØ­@ÝFÞ' [@ÝnXQ­°5»# íÔíé=µ­Z#l)_TʉÎüEgþ¢µ†e8nêö<Ðy¢i|Ñ4N4÷/šû‰–úEK=ÑZ¾h-'ÚÒméDû±¢~­¨# ú é«Ö{Œ/:ƉJû¢ÒNtÖ/:ë¨5>Ö&¬HŸNcÝ—=tžhÆŠÞkÓ­@Í.ˆÂû¬q+P³+V¤wú±îÀa7DAÂêvÏ_´çÏÏ…Î'*ˆ‚dXš=ûý‹ ji÷rYµFØ +šP·sú¢9hÜ—u¢r r¢q^Ö¶öE[;Ѹ/ë@Gþ¢#ŸhÜõé$Ÿ;0ìy óDçø¢s|щZãchª_4ÕÍ勿r¢%}Ñ’N´>_´>**'ÚÆm׊zû¢½èˆuXš-ù‹J>Ñ+Xº=t~Ðô<^l ›5Sñí°rã0OÜ Ža#Åaî+9Ôaî+:†ýa˜»ÃÊ5g˜Ã1O=LàpX顿3pw ¬/Í0w‡•‡yâë{W˜ÀÍ‘¼9ÌOX_îaâ“G˜»#c}å 8ñ))ÌÀÝQ±¾"aøÔ&p8:Ö÷>DaâóÞüaîŽ!>äÂñ©=ÌÀÝ1±¾:à \ÙK“×l)Làp$¬¯0wG~O|^xA|ú2ÃQ±¾±Làp4ÄgH˜»£c}’ÂÇH>Ò… Ö'9ÌÀá@|¤…¸;&Ö'3ÌÀÕQ¼d6&p8Ö7[˜»##>*㻸; Ö7G˜Ãañ±)â0 _»¥ä·³÷ôí°òeØÁ0w‡ÝÖGòÛY‰ûúvX s˜'n·öÃö8©Qß„£ys˜Žø$ 3pw¤øü3ÌÀÝ‘ŸœÂG©^ê…WÄ'ç0wGKÞÒ…÷çÀûsãrârácø.íÀ¥]ø¬>ëw/|óÄS:ð”n|žø¼ð,žåÂKÄG Ü5Ö7à Ü­x+Þ±>{œ÷¨ƒ¶c >u™ÀÃ1O|^¸ >5‡¸;&Ö§¤Ü \à "5[˜»#a}ö8QmGNžÓ…¬Ï×#ê¢ñi%ÌÀÝQ±¾Và Ü­xkÞ±¾^ÂÇ@|Æ2Ã!XŸíoQ#}ˆ=ÎGTIÛ1åÀ§¸x¡t˜'ž°>{ÜK¼­ÚŽ\<— /XŸô0wGE|æ&ðpÌŸÞŸ)aî{q5²—o®¶Ã §a‰LàpØË«Ãb}=ÌÀá@|ôvéfàî¬Oo—n‡c">z»t3pu$ÔO_óÄS>ð”/ÇgÔOv8(ÌÀÝ‘°>-'Ý ÜñÑÇ‘›Àá(Xßaâ£7ÃQ±>)aøÈ3pwt¬O$ÌÀÝ1Êrá‚õi¹éfàÏ,a֧妛«£ ~úš'îõ“uÑÀ4|9¼~úš'îõ“mu…¸;¼~úš'îõSÑLàáà5ÌÀÝáõ“Í ¸;¼~úš'.õÀ¥^¸×OV¸ÃnŽŠ÷cE˜Ã1÷0wGÂúÊ 8ñÑ×Un‡£`}µ„¸;*â£é®›»£åoùÂûsàý¹ñyâóÂÇ8ð1.\úK¿ðY|Öo¸¿ÍOˆ¦ónõÙ㤭ûûv >v»o«~ZŽ‚õµfà=ÚªŸ–£ÕoõÂ{>ðž/|¤éÆç‰Ï 9p‘ ŸˆO›a®ŽŽû{ñÛ}_÷÷åHˆ–nõe‡£ >£…8XŸÝîûº¿/G^Ç…·~à­_xG|´q3pw ¬oÌ0w‡ >’ÃÇÄú¤„8râràõ“§ 3pw$ÄGË7wG.žË…—|à%_x}¼>7>O|^xÞÆ…w¬oÖ0Ã1êzáR\Ê…Ïtà3¸ ~úš.'.žÆ§qáñ±Ç±¬úi9J¬O Ü^?Uï<“U?-‡×Oö`‚8x 3pwxýô5OÜë§ê  ²ê§åðú©zº «~Z¯Ÿª?îeÕOpLÔOÖâ3pwxýdg˜Ã ¬ÏÒ…¹ê§åðúɼ0wGé^ú…{ýdM&0ÃѰ¾œÃ ÜñÉ5ÌÀÝ1žÏ#>úºÍÍÀÝ!ãÀe\øl>ÛÏÞ}ÍOùÀS¾ðœ<§Ÿ'>/¼È¹ðÚ¼ö oXŸÊ…n‡£#>ï fà9¦Ç:^ Ü‚ø¨Ü˜WoäÇõi:â&p8æ8ð9<áþ^µ0¸;â£år^=’Û‘Ëçrá%xI^±>M‡Ü9q¹ð†õµfàîèíÀ{»ðQ|Ô —|à’/|b}š®¹8ˆO«a^m²âëkaøô'Làpd¬OÓ!7wGA|4Ê«r;âþÞk˜»£!>#‡ <Xß(aîŽ>¼ ûûhaî©.õÂãþ®é”›Aø >š.åÕOùqàóË&p8â£éT^=•Û‘ñùç&p8 â£Û¼ú*·£âó«\›Wgåv4ÄgÎ0wG¼?7në³Â¦áËáõÓ×/<Ëg¹ðÒ¼ô û»¾îv3pw4ÄG_wçÕѹqßæ‰ÄGË强:?[ŸL‡iørxýd+`‡Ãïï_ó‹£¹sØPt˜ÀáðúÉ6fÀ Ü^?Ù‹/˜ÀÃ1O|^¸×OÝËÕå¹µxíîõÓט»£¤/éÂ+Ö§åTYÝŸ‡œ¸\xÃúôqZVèvtÄGË•²z@·c`}ú¸(« t;$¸ä ŸéÀgºñyâóÀÑ :ì8˜»#õOýÂ3Ö§åTY¡ÛQ-—Êê ÝŽŠõi¹TVWèv´çÀÛsãXŸ>ÎÊê ÝŽŽø¨\YVoèv ¬Oj˜ÀáÄGf˜»cb}ï¸9Ð":ìÁ 3pw¤çÀÓs㈾Ž,«Ot;ò8ð<.¼´/íÂk=ðZ/¼!>z;.«_t;z:ðžnñÑrª¬žÑíð÷c¶± ¦áËáõÓ°×eõn‡¿³]0›­£Ãꀸ;üþ>¬Üp3pwxýô5/|oa¾æ‰W¬O'n¾æ‰w¬O'n‡Ãë§a·ó²zI·Cž—çÆåÄåÂç8ð9-¥‡yâ©xªžóç|á%xI7>O|^x•¯rá­xëÞc}9ÌÀÝ1">#ÌÀÝ!±> 3pwÌˆÏ 3p8°>-÷Ün´šŽáËÕkº Ÿß‡«Ût;r=ð\/¼àóëëβ:N·£">ö¸\=§Ç<ñyá ñÑוeõnGïÞû…và£]¸ >Z®–Õ}ºëk#ÌÀÕÔüðyâóÂÓ8ð4.<Çú$ÌÀÝQ{¯NÔí¨XŸ=ŽW/êv4ÄÇÇ«u;:ÖgÛÕúqȉ˅¬ÏÇ«'u;ñO˜Àá˜Xß(a®4¦ªÙ Ü ëÓí°eõ¦~ˆ,8ëÓí@eõ§nGA|ìq½:T·£b}³‡¸;â£í$eu©nGÇú¦„¸;¼~²ãf`¾x 3pwxýô5OÜë';@&ps auˆ?ŽWÇêvøû±¯yâ^?}Í/Ï—çÆx 3pwT¬/?a‡Ãë'±×eu¯nGÇúìq»úW·Ãë'ñÇÁê`ÝÁúJ 3p8ŸÒà Üë+fàê@#«š3ÌÀݑڧvá¹x.^°>}Ýè&p8êsàõ¹q¬O·ó¸¸;âS%ÌÀÝÑû÷~á£ø¨.åÀ¥\øL>Ó¯îïöb&ðp >ú¸¨»¿u9Ö×$ÌÀÝ‘ÛçváëÓÛ¹›»£æ¯ùÂ[:ð–n|žø¼ð.ÞåÂG?ðÑ/\ÚK»ðY|–O¸¿ÍOϧçÆñùõqTwëräqày\xÁç×ÇUÝý­ËQ-'ëîo]ކÏ?– ŽŽøèëкû[·ñÑסu÷·.ÇÀú¤†¸;ñ‘fàî˜XŸ>Îêîo…#ú[Ågu÷·.GÊžò…gÄG˽ºû[·cžø¼ð2¼Œ ¯ýÀk¿ðV¼Õ ïåÀ{¹ð‘|¤ —s}r¯OäÄå½~š~öîo…#ú[혻Ã맯yâ^?Ù@5˜»Ãë'{pÀ Ž |„¸;¼~úš'îõ“©3pwt¬Oåĺû[—Ãë§ií,u÷·.‡`}ºÝ§îþÖåðúiÚã¾îþÖíÀúr 3ðbãŸñÁwër¤~à©_xF|´¦îþÖå(XŸ¦u÷·.GE|´œ¬»¿u9Úsàí¹qħH˜»£c}5‡ Žøh9YwërH=p©>óÏ|à ïÇìÅ6ÌÀá˜'>/<É'¹ðÜ<÷ /±> 3pwÔràµ\xÃú´œt8ñÑí.u÷·nÖ§åž›»c >M Ü‚õÙã®­ûûrLÄG˽ºû[áè¸¿ÛÆ6˜»#!>½…¸;2Ög»¾îïÛøt 3pw¬¯Ï0wGE|F 8 ë3ÌÀÝÑó÷|á#øH7>O|^¸È‹\øì>ûu·ÇýøÜßáHåÀS¹ðŒÏ¯Û‰ëîo]Ž‚øÌ&ðpàóÏfàî¨ãÀë¸ð†Ï¯åjÝý­ËÑë÷zá#øÈnõ“øq0uõ·~x3pwXý$?îVk8Ðß*~ÜK]ý­Ûaõ“ØÆI˜Àá°úé0OÜê'5[˜»Ãê§Ã¼p¬OÛýëêoÝ«Ÿ^S_G×ÕߺëË-ÌÀÝaõÓaž¸`}ö¸Zý­Û1}Ý\Wk8Ðß*~L]ý­‡œ¸\xžÆ…çvà¹]x©^ê…×|à5_xÃúê2‡ñÑr¶®þÖíèXŸ¾Î¬«¿u;âc·ûÕߺ‚õµfàOÂ®Ž†þV±³0wGB|Æ&ðp`}º]±­þÖíÈãÀó¸ðÒ¼ô ¯õÀk½ðV¼• ïéÀ{ºðñøxn\N\.\b}fàÞÎÛêo Gò÷cb.a‡#!>º¢­þÖíÈéÀsºñyâó‹x‘ ¯ýÀk¿ð†õéíÞÍÀÝÑË÷rá#Ö'aî«ŸÄ {˜†oÇ<ñyáV?æϸ¿Û蘻Ãê'±Û0w‡ßßý¸7w‡ÕO:ü¦„ ŽŠõév7‡CN\.¼a}Z®¸ «ŸóÄÖ—K˜»Ãê'±)¤0wÇÄúò 3p8Ÿò„ Ü÷wÛ¸3pw¤~à©_x®žë…—rà¥\xM^Ó…·çÀÛsãñù[˜»£ïãÂG;ðÑ.\êK½ð™|æG«Xã:ÌÀá˜'>/ö8Yý­Û‘±>•³Úêoý8äÄåÂË8ð2.¼¶¯íÂÖ§rX[ý­ÛÑ-'ÚêoÝŽõI3p8‘0w‡`}3‡ ŽÙ|öGëažxB|ìq´ú[·#c}*ǵÕߺV?‰OŽk«¿õã˜ÀK˜»Ãê§Ãð™ý­‡yáóÄç…'ÄGåĶú[·#c}*÷¹¸; âSŸ0ÃQË×rá-xKÞ±>-§Ü ÄGå¶¶ú[·c`}m†¸;ñéO˜Àá˜XŸn—w3pu ¿UGÔ-8)xJ7>O|^xžÇ…—~à¥_x­^ë…·rà­\xÏ_ Üã9ðñÜ8â3j˜»Cb}-ÌÀÝ1{ܬþV8:ú[óÄS>ð”/<Çúf˜Ãøèq3}õ·nGÁúTnë«¿u;*â£Ã¾ú[·£a}Òà ÜñÑÇa_ý­Û1°>}œõÕߺ‚øÌfàpÌŸ>ÇÏqàèoÉ3pw¤zà©^x.žË…—tà%]x}¼>7ŽøØÖÕߺmxÞ-GûêoݯŸŠ•“}õ·n‡×O&ÌÁ Ü^?ÙX˜ÀÃ1ç0Wú[Õ,aü8œ¾ú[·ÃßÙÆU˜ÀáðúÉËé«¿u;j>ðš/Üë'?N§¯þÖcžø¼p¯Ÿ¾æ‰~à£_¸ >å 8³ø,ŽþÖÃ<ñôxznñÑvÁ¾ú[·#ÏãÂK;ðÒ.¼Ö¯õÂâ£å`_ý­Ûѱ¾ZÂÄG˱¾ú[·c`}µ…¸;ñÑ×™}õ·nÇl>Û£¿õ0O<åOùÂ3âÓ– <XŸ>îÝG^Æ…×~àµ_xC|´\ì«¿u;:Ö§é„›»c >ºÝ¤¯þÖíçÀå¹q9q¹ðë“0Wú[}p,ÌÀÝ‘°>MÜGΞó…|~Múêoý8æ‰Ï ¯øüšNôÕߺ ñÑt¢¯þÖíèõÀ{½ðøŒfàîtà’.|>>Ÿ——G«ß… ŽÔ<µ ÏXŸ¶›ôÕߺñ±taõ·nGM^ÓÏŸÞ°¾Ùà Üñ™3ÌÀÝ1Úvá^?ùq9}õ·n‡×O_󋣿UÍfàpÌŸîõ“mü€¸;¼~òã^úêoݯŸìÅÌÀÝQ±>»¯þÖíðúékžxÇúìv¿ú[?9q¹ðõ•fàîðúÉKé«¿u;f=ðYý­‡yâ)xJ7Žøh¹ØWëvd¬Ïg«¿u; âc«ÕߺµxmÞŸ*aõµ'Làp ħ•0‡ëk-ÌÀÝ!ˆ¶»÷Õߺëkfàê@«š3ÌÀݑʧráñ±ÇÝêoÝŽ‚õÙãn®ûûvȉ˅×qàu\xkÞÚ…w¬Ï§sÝß—c >*wöÕߺ‚õ&ðp >£„¸;&Ö§Û9Ý üu ô·Šƒ Ž„õi¹çfàîȈÞnÇêoÝŽ‚õi9äfàÏaÖ7%ÌÀÝѽÕߺ½xïîõ“mì‚iørøýýkž¸×O_ó‹'Üß¿æ… ðfàîðû»ÇâfàîðúÉS«¿u;J|þfàîðúÉK«¿u;Úsàí¹ñyâóÂ;>êaü8–±ú[·CŸœÃÇÄúôq6Vk8Ðß*~œÊXý­Û‘°>}\Õßúq >¥†¸;ò8ð<.¼´/íÂk=ðZ/¼åoùÂ{:ðžnñÑÇÑXý­Û1°¾Z ÜÒ\ú…Ïvà³8ú[Å{«¿u;R>ð”/<#>ú¸«¿õã˜'>/¼Œ/ãÂk?ðÚ/¼!>­„¸;:Ö×j˜»c >ú8«¿u;$Ö'a‡œ¸\øŒõÍ0Wú[Å6vÂGªžê…gÄG·KŽÕߺëë3ÌÀá@|ôq5VëvT¬O·«ŒÕߺ ñ3ÌÀÝѱ>Ia‡c”åÂëÓv„±ú[·c>>ŸÇúæ2›ý­jŽ0w‡¿ëþ8hëýØrxýÔmÜXý­Ûá÷÷¯yâ^?}Í÷û{7¹ÌMàáà)ÌÀÝá÷÷î·ó¶îïËáõ“g2VëvÖ—S˜Àáðú©ûí~õ·†£ãþÞývÞ×ý};&p 3pw$¬OË 7Ñ•›ÆêoÝŽÒ¼´ ¯ˆÝÎVëv4¬¯¶0wGG|ê 3p8°>»õu_Ž1|Œ ¬¯µ0wÇD|Z3pu Üß»mt3pw$ÄÇnG«¿u;2Ö§é®›ÀÃøôfàî(øüv;Yý­ÛQÛ×vá­x+Þ}]4Vëv |þ1 ÄGR˜Àáqà2.|öŸýÀÑßz˜'žÊ§rá9xN^ž/Ï#>*7Õߺë›)Làp4ÄÇÊ…Õߺë³ÛéêoÝŽ‘|ä ¬O·SŒÕßúq >v;^ý­Û1åÀ§8ú[eøízõ·n‡×O_óĽ~žŽ¯þÖíðúÉ^üÀ Ü^?ÙÆ{˜ÀÃ1÷0w‡×OÃoÇ«¿u;:Ö—K˜ÀáðúÉ«¿u;¤¸” ÷úÉ«¿A«Ø‹+˜Ã!ÀG˜»#a}šÎËêoÝŽŒøhº,«¿u;J=ðR/¼">e„¸;Z:ð–nñ©ËGÇúôuެþÖíˆ>dõ·n‡`}­… މø´fàê@«øq ²ú[·#=žžÇú4t8yx^°>}]âfàî¨õÀk½ðV¼• ïˆ>ndõ·nÇx|<7Žø¨œ!«¿u;d¸Œ Ÿˆ¶+Éêo GÆýýkžxB|ôq(«¿u;r¬O ÄG_ÉêoÝŽ‚õfà¶ûÈêoÝŽ†õ©àfàîèˆÞ®eõ·n‡ßßÅn‡n¾^?ÙÆ"˜Ã1O|^¸×O_ó‹Üß¿æ‰{ýô5OÜïï_óĽ~úš>O|^¸×O_óÄÛùùÛýù½~²Ä&p8>¿>.dõ·n‡ >úºFVëvLÄ'—0‡ëË=ÌÀÕþÖÃ<ñ„õÙí~õ·nGF|t;¸¬þÖí(XŸ¾Î—Õߺñ)3ÌÀÝѰ>Ý&«¿õã— ïãÀû¸ðøèvgYý­Û!X_aøT 3pu ¿õ0/ñÑ×!²ú[·#a}úºCVëvdÄÇ7«¿u; Öן0ÃQŸÞ Ü-xËÞŸñ„ <XŸ¦û²ú[·c >šîËêoÝé.ýÂg=ðYý­‡yâ)xJžc}5ÌÀá@|ô¸[Yý­ÛQ°>M×eõ·nGE|t»˜¬þÖíhXŸÊ²ú[·£#>³† Žõ©+«¿õã@|¦„¸;ëÓ×ù²ú[·Ãë'o÷—Õßô·æ‰{ýô5OÜß}Í÷úÉaÇt\_§¸ ¯Ÿ¾æ‰·~à­_¸×Ov0,ÌÀÝ1°>M÷Ý Ü^?ùq²û[—cb}v;ëþ¾\ \‚û» s0Ñ=.@vëräzà¹^xA|ª„ ŽŠõµ'Làá@|TΓÝߺM¼É…wÄÇÒ½Ýߺë³Û•¬ûûrâÓ%ÌÀÝ1±¾ñ„ ÜÑß:ýrßý­Ûõi9ïfàîHãÀÓ¸ðŒõÙíb®ûûrÄÇn»¿u9j>ðš/¼!>zœ©ìþÖíÀçŸ)Làpt9ð.>ðùõu€ìþÖåvàÒ.|–Ÿå‹Ïèoýš'žžOÏÇúF˜»##>z»›»¿u9¬~Ò?\ÂT|;¬~ò? 8V?æ‰[ýt˜'nõÓa^¸œ¸\¸ÕO‡yâV?©Y \èoÞî=WëvXýt˜'žÓçtãx 3pw¬O_ÌÕߺñ©O˜ÀáhX_-aøhº7Wëv ¬O_ÌÕߺ‚øèíd®þÖëë3ÌÀÝ1yÂnô·执zà©^xÆúTn™«¿u; â£éÈ\ý­ÛQŸ¯Ïˉ˅·Xß3pwtÄGoGsõ·nÇÀút»ú\ý­Û!ˆ¦;sõ·nÇÄúæ 3p8,>öÃ…i8èoÞî;WëvXý4mc<ÌÀÝaïǦ¬ 3pwXýt˜'n÷÷ÃM—Ü ħå0Ã1äÀ‡\¸ô—~áëS¹ÊÍÀÕþÖéí´sõ·nGÂú´œt8ù9ðüÜ8Ö§¯ Ý Üñ±ÛåêoÝŽŠÏ?r˜ÀáhˆÏ(aÏ?$ÌÀÝ1Y&ðpàóÛíhõ·n‡ >šÍÕߺñ±ÛÑêo ú[ýÆ3pw$ÄG˵¹ú[·Ãê§i/6a¾V?Mo÷œ«¿õã˜À%ÌÀÝaõ“>XZ˜Àá°úiz;å\ý­ÛaõÓ´Áá0w‡ÕOjÖ0w‡ÕOÓ„ މõÕ&ðpðfàê@«š-ÌÀÝaõÓažx®žë…ÄÇ.÷Õߺëk%Làá@|ìr\ý­ÛѰ¾Ö ÜñQ9b®þÖíXŸ]®«¿u;ñé%ÌÀÝ1±¾^à \èoÕ÷&ðpÌŸžÆ§qáë³Ë}õ·nGA|ôuû\ý­ÛQ±>»¬þÖíhˆaîA|æ&p8&Ö7K˜«ý­ÓÇÍÏÕߺö~lú8ù¹ú[?ŽyâóÂíýØôv-7Ãáõ“%>0w‡ßß­q fàîðúÉ6¦Á Ü~/ž.Ìu_¯Ÿ¼]j®þÖë«%LàpxýdƒÀÇÄúìr™ëþnŽü ¿uÚÆ6˜»#a}oâ 3pwdÄgû¹¯þÖíðúÉÆÂ Üë«-ÌÀÝáõÓ×<ñ^¼— ÷úékž¸`}v¹­þÖCN\.|b}-‡ Üèo6ŽfàîHXŸ].«¿u;2âÓ{˜»£`}c™ÀÃøH8ë“fàîhˆÌ0wGÇúæ&p8â3[˜»CòK¾p¯Ÿº&†0 ߎ |„¸:Ðß:MX… ¿¿[á 3pwxýdÌÀÝá÷wkl… ¯Ÿ¾æ‰7¬¯Œ0‡C¯9Làpt¬Ï~Î}Ýß—Ã맯yâ‚õÕfàîðúék~ñû»m7† <ˆ=NVëv$9ð$žûç~áë³Ëe¬ûûrTÄÇÒÕÕߺ Ÿß.§Õߺñé3ÌÀáÀç)Làp Äg´0w‡´—vá³ø¬ŽþÖiÛ‘aõÙå¾ú[?Äg.8ë³ÇÙêoÝŽÒ¼ô ¯XßìaøL 3pwxý441ƒiørxý4ür\ý­Ç.a¾æ‰{ýô5¿8ú[çðttõ·n‡×O¶&p8¼~~;Xý­ÛQ°>{¯þÖC·ÇíêoÝŽ:¼Ž ÷úix:ºú[·£×ïõÂâÓR˜Àᬯõ0‡ñ±rtõ·nÇÄúz 3ðבÐß:탸;Ö7[˜ÀáȈϔ0wGÁúÞ ÌÀÝQŸ¯ÏÛúlcL×Ãë'Ûn3pwøû1{±3pwxýô5OÜß}Í÷úI,L«¿5èo=Ì —— OãÀÓ¸p¯Ÿ¾æ‰¬OÓY7w‡×O¶&p8ÖWf˜Ãøh9—Vëvt¬¯¶0wÇ@|Ú&p8ëkfàÏÈa7GÆýýkžxB|´J«¿õãÀúôu‰›ÀáȈä0wGÁúÞÌÀÝQë×zá ëÓtÑÍÀÝÑMÓêoÝŽõÍfàp >v9¯þÖíðû»mŒiørxýdãj`®Ž‚ûûך®¥Õßô·ê‹Ï&p8Ög?×Õߺñ±ŸÃêoÝŽ’¼¤×ø¤ÇNöƒ­ÿàã± Êìöúî±Êl {ý ÷XuÚ׿°:Êìöúî±JJíü„ÿ«¥Ô¶ßÎjvýzbµ¥…½þ…zÐïjö {ý ÷¤~þ‹Ôïa5•Úµ‡ÿžRÎQÊý/¬®JþFöúîi±ZÍDÒj}ýz"r­‡½þ…{z¬Ö~­«ýõã¹>Â^ÿÂ=«)ìøð̈œÔ°ã_˜]°f·°×¿€'"'#ìõ/Ü“bµšÙ§Õ ûñäÿ¯½«ç±,·ŽyÿŠ%@À\~“©ŒµË€ìÍ,G2c'øï»yªê^`¬o²@ÕÖ¼n6ïc±H^ô\ÚO …3¥I‘…]¦*lþâ±Ó29 KA¦?RTaWYR aW€ã­ãVLµ¶&a)Ȭ*EvÅfXkx»LJoEJ·"?oE~~PÌK1oEoE·¢¶·¢¶[ѼµKØ`ºzξ?^,{0C­Ý«[À® £žëCX 2S­µüeÌRÏ%,…1®‘°_@,™¤ž[IX 2­Íx²§¬ã`Ê#Åv™EEZÂR©ƒ {*½€ö`è'¾½¾½Þ ºG¶]`)ÈÌ$Ev˜¥Ö–!ì 2óRÌ·bÉ=N|)R{+R»Y­Ý+`ÀR)ê9ó /ª=˜ªÖÖ)ì 2ê¹>„¥ ÓÔ–½”¼´ö`ºznda)È µe>ÂR™ê9›¯{íÁ,µÅfÜ^b+&³ÆÖðvõÜv‚ìe¶“ÐZ»á… gr“¢ »L©oE©·¢f)–°+À´DÅžÓd/¸=™%Ev˜>©(UX 2£¿£ßŠÙÞŠÙnÅ*Tì±1{é­3¬½5Ü„]&=R aWQk÷zIö܃Éã­ÈãV”þV”~+ªzn§Êìe¸ÓÊ[ÑÊ­èê¹½3‘½÷`†Z;“°bÔsöd{9îÁLµv%a)È,õÜ娯 krÓcÕˆÄP8“²SØ`r¢bï3d/Ì=™%Ev˜2©ÈIX 2µKQ„]¦5)º°+Àô"Åv˜¡Ö–$,™ùPѺ°bÔÚ ³êÌoÅokuvùˆ]&©çvzÌ^®{0Y­Ýs‰ì»SÔs# KA¦ªµ£ »‚ŒznLaW€ijížKA¦«çì¹-‘ jíΪÀ®3Õs{52—È„ÎÐ=ì>:b(‚YTä!,…1Uî=e`W€a&<ñ¥ {`ßX 2Ì„V#Jì 0tìí» 3!vosLŒZ»× ÃLØðÌÕȄΠµÖž¹îá 3¡í—»ÌRk‡c)ŒiÊ„ØéÍ-2¡3éy+ÒóƒB=·gŹE&t&·"[ÁLØ÷ב gèv'±d˜ O|)˜ ;\¾E& fI‘„]†™ðÄ—‚™°ãÉn‘ YjKIÂRÓ• í(b)È0v›kæ™Ð™¬Öîä•{dÂ`&{Ÿ5÷È„ÎµÖæ=2¡3U=g.ß#:ÓÔÚž„]¦«çúv˜‘ÞŠ‘~P¬K±nÅœoÅœ·b©çæ#,…1C™°c¦0":“Ôss » 3áÀ“=":ÃL8¶õK!fQaOÔˆLè 3á‰/3á‰/3á‰/3áÀè9":ÃLxâK±ÔÚ¶„¥3©EX c¦2áÀ˜4#:ÃLˆ=¡<#:ÃLxâKÁLh÷B» 3áÄ÷xF& fI‘…]†+ŠØ=Ê3Va&<ñ¥jm+ÂRa&œÈ32¡3K­mKØ›YÊ„Ž´"ƒÖ.<Ù+Va&\Èf+2¡3\Q´O,fÂ…yÀŠLè W±#,fÂ_ ºvM€]AfJ1„]f¨µµ KA†™ÐÞíNì 0K­­CØ_Ly” m9X 2I­íŽ¥£žÛëËå‰LèLžoEž·¢¨çöØXžÈ„ÎÔöVÔv+Zy+Z¹pìÛ›"dÂdKÄ® ³¤X®ƒL˜ìt:±dàgaWl†uÆo|)àÉ>ˆ]™0Ù)xb)ȵvïÞ»‚Ì”b »LUk÷\X 2È„/|)ºÚ²GœâeÇ3ÔsöTzáñÁÌ筘ϊu)Ö­Xã­Xã­`ýñÆÛå‹ LRÏíÔT¼ù`²Z»Ï,/B>˜¢žÛ¹ªxòÁTµvŸk*^ˆ|2ê¹5„]™0Ym/1Î ¾ð¥@&|áKL˜ì%vdÂdÕÄ® ³¨(°ư.ù/2á _ЬÖ~M;‰¥ ƒL¸Ïe8–‚LUk÷yîâʃL˜ìšÄP³.źÈ„û|E–‚ 2á _ dÂdo–$vdÂ~)X­œp΃Ø`’Zk#Ÿ,ŸÌ¤b¯û/Y>˜¬Öî3,Å‹–™pŸçp,™ªÖî: â…˃L˜ìMyÄ®ÓÕÚ™„¥£žÛû¨ÅË—fÌ·bÌ[1Õs³ »ÌRkí‰ò"fgXżñ^M/^Æ|0I­µ±À ™&«çöÉ´â¥Ì'³.źÈ„Éƈ¡p+ŠÉ*-ˆ]™pã%ì 0t_ d¾t‚§²…{3¥˜Â®³ÔÚâX cXÝüÆ—"©µÕ±d _øR”ôV”ôƒbQaãš—9LUkÍ÷z¸‡3M=צ°+ÀôöVôv+†zng³âåÎ3ÕZó½îáÌzÞŠõü @kQà V=oœKA†îaƒ±+À &Tj/}>ºjµ€]™‡zˆ]†îz,`)ÄL)†°+Àtµ¥;–‚ 2aª˜{ôÁLµÅf,^}0È„©Áo¼ÚÖB.® ³¨°­—C 2a²›‰]™05¸¼—D 2aBQñ¢èƒA&L¶”H,dBê!–‚LWkw".^}2óRÌ[1ÔÚ>…¥ ƒLøÂ—b©µ} »b3¬‘ÞØúÚ‹¤&¥·"¥ê¹}n²x¡ôÁ &TÖ/•>d«°+À &¬ü/—>d¾̄£øŠLè 3a·Ö²"³.źÌ„=¹":³ÔÚY…¥ØL}” »Íê™Ð™¤Öî=úD&t†™+Œõ‰LèLyÞŠòü PÏíoz}":SÕÚEê™Ð™¦ž[CØ`°¢˜lá” g˜ m¸&v¬(&TGT/§>™u)Ö­ÀŠâ ¿I™Ð_‰¥ ƒÅ„*…êeÕÃLhÃ5±+Àµ¶/a)È0Ë™5E& F­Ý³@`W€a&´ÊbW€éj­õd ÷p†™gækŠLè ÝÆZb)È0NË5E&$“åÓÖË€]Af^Šy+èXÇ–‚ 3¡ÝÿJ,™RߊRo3¡-¾»LKoEK?({%«æÈ„Îtµvï´KA†™Ðî %†ÂºÇ²¹7°d˜ —­b×™L‘{Ø!'b)È0ڙĮ ³¨Ø;GÀRa&Äúa-‘ )ý­(ýV f¬ýU/Æ>¸Ç _ dÂŒ³×Õ ²OfQ±÷ «—d 2áÆ]Ø` 3Ö˜ª—e 2áÆYØ›ae¶á"ì 0È„OaW€A&|á[¡ÖîzŠêÚƒL¸a(œA&Äñ#b)È ¾ð¥@&ÌXAª^¨}0È„ÙîH$–‚ 2a¶·ÔK!fJÑ„]f©µ{ÿ²zÁ¶3¬ØÞØÆW/Ù>dÂŒSžÕ‹¶™pã%ì 0È„9ã{ì…Û'³.źÈ„Ù,‰¥ ƒL˜±rS½|û` sÆ_Ð ¸™ð…/ÅTkmlô"îƒA&ÌXý©^Æ}2jm_娯 +¹7¶ÑÂK¹&©µ;«V/æ>˜¬ž³ù™—s 2á>\ä g qüˆØ` sÁÓàEÝ'3©ÈIX 2XQܸ » 2aÆjGõÒîƒÁŠb.èk/î>dÂ}¸¨ Ka ë»7¶¿±xŸÌ’¢ »LRkmÞìEÞƒL¸qv˜¢Ö.ÇRA&Äá"b(œÁŠâ _ dB?"–B̺ëV f¬CT/ù>ºGÅlt„{8ƒL¸qvÅf¦ÜãÄ—™ð…/EVk÷¹6`)ÄL)º°+ÀµÖòÌ ÷p™0ãF“ê%àC÷°”X 2È„7aW€¡{4|f¸G0KŠ"ì 0tœô–‚ 2a¶{‰¥0fÉ=pÒ Ø` sC®ò’ðƒ¡{àŽ`(œA&ÌH³ÕËÂOfQaÞ¹Â=œA&Ì]¿—2a0t_ dÂ}dç–‚ÌP[f–‚ 2á>nóCÌ¢";–‚ 2áÆIØ_Lc¸á!ì 0È„8²C,dÂlïV"–‚ 2á>*óKA™0Û›àˆ]A­µ…1b(œA&ÜÇK²°d ÷ñ’",dÂŒ¤Ñ¼pü` ÷¡GX 2Ȅ٠b)ŒaõxÂq b)ÄL*¶4/ ?d‚zËæ%äƒLX°ÏÞ¼ˆü` _øR û‰¡p™[ÿÄ® ³¨Øë©Í‹É™°$ýæÊ„Á TË5/(?dÂb7KA™poÊ;–ÂV•®Â®ƒLX2~//,?™u)Ö­@&|áKLX,>KA™°X(%†Âd“°+À ¾ð¥ÀŠâ ߊ)Åv¬({‡±d ± M,…1¬6ߨÆ/7?dBl KA+Š7ä5/9?™EEu,¬(œ«o^v~0Ȅ޼ðü`°¢XpŽØ` Nx7/>?¸GÁél`W€A&,¸ï©yúɬK±n2aéx¢¼Ý™J÷(v–X 2È„k²Í ÑîQFñêî 2áÞÞ©ÂR{›2K!fR±×[T£÷Ø[3Ž¡p™°`u°E5z0p2Ñ ÕÝ#d½À?…¡pîQpj X 1‹ŠáX cÝã…/2aÅi±ÕèÁÀ=ö²ù–‚ 2á^ò~„¥ ÷ØKšE g +*[T£Ì¢¢;–‚ 2a͘)D5z0È„{‘ï†ÂdÂZô{)ƒLXQq×¢]ŒªÑ÷2`–BÌ¢ÂfNQ 2!–½ˆ¡p™°Vý eÂ` ÷bR–‚ 2aåˆÕèÁ n\…]™‹'ÄRˆYT¬*,dÂj÷«» 2!‚>1Î "ÆKaŒªÑw8NÂP8ƒLX)ªÑƒA&¬¸Ÿ©E5úÁL*z–‚ 2á¶KX 2È„;”Va(œA&¬8¯Ü¢=dÂ:ñŒjô` ˆ¡fQQ»°d «m2KA™°Úq_b)ŒQ5z]p‚¨F™p‡Ž*lŠ` )ˆ¥ ƒL¸ãÀ–BÌ¢bfa)È bêJ …3È„-á¹jô` ›ÝuK …3XQܱ,,d–1Ûˆjô`°¢Ø žÊ¨F?˜IÛ¦L(FÕèÛΗ0Î 6Ô[¶¨F+аsbW€A&ÜVÜ„¥ ƒÅ¾蹦ßK™0¬(6[&–‚ 2!Ab(œ{4¦Ùåî 2axö£=¸¾JÄ®øbºªÑf=ªÑfQ±*°d ÷£3…¥ ÷ØN–‚ 2aÃîSjô`àû¦™°c§¤G5z0p/\š°b楘·îѳ͊¡p™°Û[ˆ¥ ÷è¸X cTþ…÷÷¸G5z0pnÇ}‰]AÆz®c}¹G5z0pŽódÀRA&ì6Q'–‚ Ü££ g ;f =ªÑƒ{t+%–‚ 2a·b(‚A[pú¥G5z0È„ëe=ªÑƒA&ìX/ëQ.FÕè'FzT£ƒLØQAÔ£=dÂŽÝëÕ賨°oGT£ƒL8pWTjô` vÁzT£ƒL8pæ¹G5z0È„ã|jô` öczT£ƒL8Pñߣý`¬µ§ {T£ƒL8šÕ;ô¨F£jôªßÕèÁ T—ö¨F™pØ{[ˆ¡p™pà>ÌÕèÁ ›»‚ zU7=ªÑƒA&ÜïgϦ™pâl~jô` 'G‹¨F™p¿%¶Cá 2á\x²£ý`¬çð&3bSˆQ5ú*觨F™p5ü£=dÂeÅfÄP8c™0ó¸îÕèc™Ðî,ŸÂP8c™ÐÊžŠ°)f™Âƈ¡pÆ2!’‰·âÙæý?ÿúi'd¾:£ýÛçóùï‡Ò¾%o¼ÿå×°òELÞr"û |Ùõóùÿý—¿û'ÿiøø7V!þõ#>ºMV­(ðë/ð1ìœœÕ ¤ mPL¼mìcØy ;i16l[µ7“öþ1쌮­Q× mBÆ¥¯ïÓ iöĪ?ð¶ø9÷sö1í‰=çÞ¶õ1­{O±ì“ùÂñŽ{æ´Á¿Lö:›‚,¾d÷hÍËÜ÷s¾']v7ïð—Ù~à¥4 oTùþÁËÔì]8Ë0 x·>.¢è¸ z…'¼Ŧ.q2}—-·Â–…Bcüû}tÅSÛâð*mì˜XÅñ_û»ØÁ¡½†ò4Áщ[°UŽíe´gorslîØ„Hü}2Ž5 ¡X¶ÇRU·Ï+öª0[°ß§à²—f7 ·¥>Nùí¯»²8)&ÆUšœž}…*ûÁ6ù°ŸW3}»ì»- ôvRÞŒz\Û ºo‡£Ì¶Æõ_‹‘ˆª—ý¾X—±aÅþ~Í^Šeƒþý²0ÞqÐÆ¦y _v|~·uaû²Ûçu\²¿ÚÖß½kêøÿ»¿ä»Ù±YÐÀ|1T kïà4 ïš7»ø}ìK´mƒÃ$þ__²‚ßgØçOûØ“¿Ê¿ï´µ¾sªãxZ´æ€óa/µ'¶½†[¸ Œ 0;xazFœy­``,tÆ«>ãJÀ¸Ê×1.>°U¸Àî7ÇÃvKζuà‚I­c»·óÀÝ6ëÛþy`ÔîLJãUC&ŽqÕv`”*;®öRÜcË$0 wÛ¨«:2Ÿ‰#_2Ÿ…½/™ÏZô"“ÈÊn>v“suóÑí…2Ýäæ³ 5æ³uæS°"åæS‘BÜ|jã`Eóá 7Ÿ†ÓÑn> ’n>­qð¢ù4ÜŠáæÓpÇ›O·×[‡ù0­ºùô$=Ìgg‘u˜O/ÔÓ|z‘ÙÀ|záàGóÙ³È|˜O¯ü{Ê|4˜Ë|*žÌ»,a>¼e>¼e>UæBó‘YË|4XË|4X‡ù`póA†ù‡ù»ù`0 ó™—ù»ù‡ù»ù»ù»ù»ù»ù‡ù»ù»ù»ùÿf>¿™ÏÿÇ|öÓæc«—{oíe>øT7Ÿ–1ZÐ|ö–Z ói c!ÍgE-̧æ"˜ÏÀ™ÏÀ®©Ìg`)]æ33³ Ìg¢ðTæ³]¦…ùl[ia>kœæco.n>ö¢®q˜íë„ù ZÆÍ‡b¿FÚžÁÃ|&š/Ã;¯Ã‚Ð|pB)̧ äÅͧT%&\lõ*ì;ͧ>L•|2ÛH>˜yGò)õ0Ÿ}XÆ óI4w™OæäAæƒc™o™OfR’ùà­~a>X óÁ… a>|RÝ|ŠmþœæƒÉA˜’e˜þþa>˜œ„ùày óÁóæc+‡ù´ö6Ÿv%ü½Â|ð¼‡ùÀüÃ|Æe>è0$¹0<¯a>ö÷9ÌÇžïÃ|l²p˜±›Móó±ÉÂa>Än>Än>Än>Ä¿™Ïÿm>¿f±m"{üN=6^§c,þ-ùIŸ÷dmmâó€ÏÏûu–ÈÏ›ƒ'Oðq€ûÓþøóÇ·_þùþøù×_^ŸŒÿþò×ÿþøö÷_æõùó|⺕Çÿ¼³w\XR>þ¯ÏßýéúýçÏÿùñÓÏöé¿êŸï6á_ÿùO?ýåwé[ùÃgþVþòû¿ù“¦-3û'ÍoéùÃçúúo|ÖŸ?þôœ„W endstream endobj 132 0 obj << /CreationDate (D:20190123142058) /ModDate (D:20190123142058) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 133 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 134 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 137 0 R >> endobj 135 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 137 0 R >> endobj 136 0 obj [/ICCBased 138 0 R] endobj 137 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 138 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 128 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F56 5 0 R /F92 16 0 R /F11 28 0 R /F14 31 0 R /F116 26 0 R >> /XObject << /Im8 124 0 R >> /ProcSet [ /PDF /Text ] >> endobj 141 0 obj << /Length 5415 /Filter /FlateDecode >> stream xÚµ³†ÒEkìËk(¤ÌŠen<]³j «+T\ÏkSÉé„=l6¸WÇ‹k†õ@Ý‹Áñ¸ÁUyÂ¥Afîé0ø°NlphòÑÈÍ…Å)¿ Ûy>»yÅgú4–PU£2Ö-­~‚òGÆ)^MvßG8Þ¨ÅÈHzÞÆ“LøuÄæÓ"<XúE-“–©h Jû9¨•³¯ŸoC§„atÏÛªx­kéÿ›û{&¿Þ®ÆÀ"–üÅ=vYž K£3xS?º¿¸÷¾•ÎÑ*’þu$î»È™oÝ€÷÷{÷÷ÓÉ2iïç,W§Ë7Œÿ'Ë¥½ÿ»{‹¸O—yË;úÕà_P¿{IÁ¾‘Ÿ‰£†!(ä.ºBiMˆ±°`beÂÙù²&¦ÑyLÑ6ùãøKB,Vµ+‚dùøˆ‚iÝ(Å*íÖüÝOfÃ)ªO»T4³Â¡g×5<ÃÆ}Bè¹*mƒ“@ÅXY\Ëø¸»¹ÜmqùlWÍÏõù™49ïÎa®Ù˜ë¦0bÌaƒ…[F)mg7kØÎ5ÉyÇKo¨QÃÝQ††]k‰òÝ#4É2qŸÑ³ç'–Yä¨ªÑ ]"{vÑôÄëpñM«8µ‚wÙ±ù¯(vð9Uº0@Q’ËÚ0d >¬• K†ÎÚn-+Ìî0>?ïX}¯Ñ¸Q}²ÊpϓٟƒFñCàì$µp`ëÌà†?¢›¤Úõ›D€:—9Êþ‰ ÷pÚœ“6 €‚íKa„k&¹ÇõŽãç*'݈>DTUÛq„ä–»ØLΡp™3!YR5³§ ŠÂHî1%å˜Þ(;бô\qÓЯ…KÜøñç)HH袴Nq!!ÙŽ7°Ù~ó©ÈR±m)Û‰lÁ%`Üv´§ƒ¤UÝØ Œí—Ô+ÄlYÑéŸÿ^Ï Ôõ‘¿Ý"»ÜLòË,g‡°ö‡G/wÎ#­O™!÷€QÈ=rv/é ¶QêΧ ‡x¤§ß¼Vjöç;Iî)_åð89âVR¤;}LSÎ~Ùù(èÕ¨ âŒtÃ í¥²&Ý Mœ ?Pž…†‡‹AK“ábÊ4ìm ßæ b^²{†å PÕåìÏì=åi02&»ŒÁûë÷ÛS¾Çzí̉Déê}Âp¶]Ù…/Jº*²šN{§Ô“0Në":~>ó«SºÔºœý¹Ï‘€ÿ“9ÝBÚ¦Ó!Íö³¢áw>ä<Ð ÀŠ=ÀÛ‡k¤N&¡NÜÉYìt´!º‹ °¢ÈصA~çö¥biw›º%ÜÎÐ8ÁÈê€ -Dí2A0à™^(\t”Ÿh°ä(´' <öô3å7À1‡¾ æ‹8¤Û1€î+€å•+éE$átpŽhh˜·e"°<@HiÊŸñ®£}ÉŒò(¤µð3M*O‰jÚŠxÌMÔâͱ{耎ô±¥ ÊDÊ›ó§ßŠnÜ{D«e1¸¶H‰z׆ð$ž‰ ô>Fïxzöï½î'Y%Dk’pQ¬8ŧY§$ügk †ÂáÜþÿuìÕnsº, ÇÚp×áF¾Ž& /#I Îðb/´)ÍF4x1x*ôŒ44Ç*‡™8¸˜"ÕÏØX£ÜÁ ëpñÈ©ølŸræ0î ž 5)â^Cï dTGŒpvà×ç‡G¹°šF¤t€V”]KGÉáÌzokÖwQÏùÀ±ˆX£}& ²Ÿ“«}|â´]æš(óg(+bà8w'g prÜnl9{“‰ÑÉy€w´¥g|:5 $¾¡S–‹„v¨{IÞmé=J²‡•úœ0÷ÁEåR Tðž~e¼Zë¢Û]Ï3Úhº£t„c÷1äèH19üðÈV‹§U‡û=Œ6[޲{F3;®5/b°2ŠuÏ‹‰)Ä£ÈY¤1Bf¬ê÷ çÑj8z•$£ÈŠ-2pêŸ$í4ô¬²&ïMl«ÐÀˆjsÜÙF·+jÔŽž>nz¢;Ý»>îñ޶¹¤™GŸkF—À÷}z‚•È–fŠ û%ND¯½z¼ 'µþ$iµ5ƒÓ_¯YÜPŽß¨? #ÑhPyí DÎ9Äo3ˆ'Ó,Ž?!A©N”ª‰TgÖ…c4÷‘«wÎ%rÀbr}ªÚ…9ÑB%É«'ÖÏ Wñû~7©ê"..ÏG(SAš2¯ê¬ƒþ­\ #âõ­9.µT>`¿Ú=>õ(ò¿\WÎü>H±Bœ•€;–¦«¢k+ {CEÄž“Y›ã™êWñʆT‚÷J‰Mšñï}E[Yx‘÷êÁµ®c7e ¶ž~ÂI¾G¶l™ Ë©ƒ+ ÂõíŽ 2L۲Пë47¶Á8Õ!’»Tnë¢wÏ›è"(s#®ma¬}ÍEuUúûæ}”¸y<wRm07UIô2ý.®Ó±t9Ø{¦ºM&~,„BKjŸœ(ša¼m¨ÐË6)CÅæ‹m}ç¸Üž«°ÑÆq¨j>…†^B¦#& KXkžbdñ”yÓŸ«¢š[¥MêPýˆ¹åÓŒŽ)t©âJôòš&v&Ý{ kaØp)´Gý®9y¾J6»áþ‰@ßSï!š™åyýÐoà…¡9—×-6Üép ýÉýD/–˜l*¡ß\óN‰T0Ñ=9Ѿ´Ì´”ßßµ1í%º‹ª®Úóòªªº°­þ”óÙ¶9#²f¬ìÄÞ¼Ö#;•Á¦Ô…¶^—Õ6”EÅÔš†D„Qθ6/1ÀÅå+]¬>ÂH-#2Ôiï¢,ëI òkm") ¼ ™0š’¹²]‹…›K<G[2ݦxMH#Ú³ˆ/¡x€ìXNs õfœ^½n eWݹݰáòÕ½Q%JÎûöAPå¨òÀDû G}Æãpö¯é̯p8Ú¢©ê´ªÑ ){@äåšN*\1U€a£3e51b±RÖòÁ»­Kö©óƒ”Ðlè=¦Z¿"ë2EKsQ'öÝsDÊ~eUTvRŠ¡ÐpãlB'õá8bYÎÖ’êBî/#)ò9¶,zOÞþ{îb;Ýr´Þé9ã£hg‡kå5ÊÈŽ›ˆ ¢ºžO¹nUÑÔqE rTdâì¼áL.¹Ãú…Èïeì|R_I£AüŒ=úa žÂaÜ÷oÝùu×| c&a;–L‰W >h>Uº_ó}h I¸äƒùžËÖJÉdZ˜æä¤©½¹ý)£ë«"®VÌÔ:Þq‘®2WuÑ5¦ekQVÝ•q®ä`—% l¢qµó¬=$•a3˜½yjý€@¨a“†4f\¤²":mû…¤æ> £‘Õw^Ëq $€EÙøØ”$û£Òì¢dÂpŒN®çâ’ƒÛshìtõw×|‹áEëAêÛš¢)»Ôuü¶¯C çcZŒ)߆ ë}ω_‹<øÚÅžCØ7G¯ÿ¼Xsä.¹@’uÃ^œ)SŒ`7|ò Mœ6È•ÕAý…:)éYFÅ}(çù’SFçÕyEÑßhúµÌ%È¡”D•mf\FòO¹r'Å]Ršm®àHdÕê­r UPxîÏå‹ë| Ö…’3.äÂì»4Ýs cÄåyR v•tQ¡«¯l±“ð÷7% ´°ékúÙ‰ƒê—õe(Ÿú¨˜†U¨«² lB,¸§ÈI ïåÔ Wç6C2v}Êcf3&ÝAuv3˜d3Ó²ßfZõô·1ŠÚµ®²‘¤¶ÑE‰“$G¡‚uEÕ#‡]ºÊ$g UîKt\…}’¢èŠðǧZëÜ}›~ ÓÓ‚#fõ!X´á– :VX‰¼žSÜü:vvÑ7ï3¬Ú™ymâ€íäk;ʬ˜zöo˜lÉ-ôu5®!IpŽ¡hÆÞG…Eì1AmÑ©WHC™p£á¦/% Ñ7옕ü‰çÞïýlRáÖI¾í:Eã_‚MòsQ©æBæþä#ET~LÄôB¯­’› ç@Wä¸ß[ð¼Ž{q6îX{lÀs+­¯îËÎLB޲޾ðGT<òóú0òítaAðÓ:’d,‚.€»¼ÏÇ}T±Éå,󔈊‡3ìøª})Aç‚!œ ­%úÕA€òí£Tâd/w²_hÕ¦ŽUÇ1*•„ª²pŽËk²§m°³ÓcXð|åšÎù·ég•™cˆáGéã9|I´E0Û¢ É#Ê{új£ÆOWN·î\öàÓŸRpÚjöÎ'Ïv„ÅšK¡uÀcâ'_nwÓO}OBŽc8ìbé¹ö·™!÷ÁñaTWM«|˜üw?-Ý‘~ žµ/{\I©ÙÉйœXëž›8'ö.+ÿž‹ã‹¨ö^”Ïÿ:Ða^…H÷‚X7Ê‹8º·“ï¾½*á¿/3Ùĉ ß,ØRÏvñ·dmª2ÝëR¼¹>Tí…š¼'ÿ5y:&Œf›0…ÜÆ¦WR¤¸8Æ×¦ôùQTJè/`lÙf¾Þºü®¶zj@¤™åæxw#Þ?v‘aée’&…­­‰Ì 4Þc×VÊØpÄÎ#cøS,ÊŠÄÞÆ‚ºó÷ÈÐóê{dœù°o!!ßNxy~w.žÊ:EáÛŠ„Šñ)±³üé–I˜ð`{8ŒÐÃp#Ưh”á±ý††Gãäë°° ¦.½&ÙHÔë¡(óGÁœ…rã—XËd “Ûèü`@ØRlºüpCú-\ÎÕ›"sr35(ÙÏ‹ëö¢q!yHcÆ8Ĥ¡8¡œ piýÆYÄê¢õ°•šÝ`•ç[ª’~GªDæÚÊ‘q¯ %ýúDÏñ]Õt\*€äÍ4DUdâR4˜><¬ÒëlNïöëäf˜23 VU“òÎç—±x›¯›ôô‹‚|¢¹ g¾?AíúLs¤ÈÕŠáíã< ÛnÑ]·OÁÈä–zú‘ð$€ V;ú1\· “ }ðN?4Ñ­ ZÍ=åàüý(ájeŠI/ì´Ó?¤|è ê[HŒÝœ¯@yC·ôXª>Žôâ£öa?HI©…âxÍ?¾~½•œËHK9ÁÆ_2â„`RØ^FÔ”â¼Á.uZµ0Ü…ärT¶à•Rûb®øZ½4i £½»rñ¿.±eY”Á'> endobj 139 0 obj << /Font << /F116 26 0 R /F8 14 0 R /F97 17 0 R /F11 28 0 R /F56 5 0 R /F82 13 0 R /F92 16 0 R /F13 61 0 R /F7 30 0 R /F108 27 0 R >> /ProcSet [ /PDF /Text ] >> endobj 145 0 obj << /Length 2905 /Filter /FlateDecode >> stream xÚÍksܶñ»~Å¿ô45a<‚LšÎØŽÕ¦µ=I£oq>P'JºøÊñÎüúî.$ȃN'Gžv4Ô‘Äb±ï],('×9ùljäßç'ÏΔ*&•¨ ]Lί&¹VOJ©„Qfr~9ùeúŸS5ýûifµ™ÞÂí®5\[¸.ášÃÕòó ®®¿{'­äÛš§ÎyxÎS>ÃõÔc ·?Âõ®×p½ò¯¿ó?gðæ9üL£„_þzþ¯Ž£Wç' näDM”“BºjbµÒÚÉlyòû‰°•´%AD·4æñ‹g?,«É÷듟à/ eg!%!–{"´R eœá3|½Û„2“«iõÍi–À Ž,ƒhyð–ļõë+ÿ;#Ù¢4×›†ÄO¯7õ©vÓþá²Þ’´áAù;Áÿ›õþo4˜@ý²yêíõ<[ð(§;êi¸ö–譊ƈÚ9+žguÛD#)sU¦yiƒÅ]Eæy8žî™n!E©UŒhGÎÙ«þ Œ2nzŽ23•IPiÚNuÐQù_¡:ÿ%dL0?„Ž“¶Â‘ndq˜Y¥"n3 !ÕÈb¨¼wRë}É”B»N0!3R(ú„$àÝü#®ýpÌ#<†òžx O7k²hÿŸÛ»$ܤì^_ÆA…B{Â*xF Ôû7 ÖKȸ6B)füu„+Óú÷1Q:Ûädbó D>%¥„<ìÑÅØ”°y9q"wÚÃÿÄ@ˆ©œ) Ì]BÎÔ"/¸¤xËnk•Xg íFa†R2ªÕzõ2-cHxSrîÁ\¥E©ªÀÄw*! ¥Ó9V!¼^íË‚,"ÑO ‚­(*Œ8"‡Ÿ˜^•Ð(Ä" ßR4 W”ÕÞþZd¼Ôûš¥»#«P¯2Øäz%µZ®… „¥ Þ©ÝIæ„rn ‡X¹$z¯r•)P^®+ÁöDå„«ÔÚÍï×nžWz Ýí-ävL6ù°…ê3V„VËïˆÌ»´îþ¼Ö3U(J€Æ‡Uîz¬OC;§- ƒ¤Î1Úh·‡\h,½÷ûVÃh>¶‚X(P:U W!ÅöJN‰Š,ªÈ#R¦€w&ÀÜaN+À¾«hqšAMùÑ—PY"[‹÷)³’¢0c TjVw˜–÷óh™Â' fn¾:J0O°¬–ûFä`?wȆ”¦Š“Ä1šýrãÈdƒPSÐÎ4æ3j:Ñ~ÅP3N0ÿ÷î¤eu Jw²•ù:î4) ¤Òx.u± [÷$Ë+È&0Œ[C«Ù‹>†­ÃMФœ¤ø¢Úd¨‰Ê J“xk3XP•àßâß&,)Ç öeÞ v[¡r/ê÷º5†õ5noÖ¸g£MàÆoª{ öiŠX Îð˜©}D¿s6Îì¸÷¹õ=@BD÷Ûÿï³ðíeC•¯¢ÍI^”Ñæ$Á ˆ^ó0Ñ“7ørLw™xÄ…ªžÚ@WlsY¢ç)£ïpÄýÜ¢'6w¦BA£-aƒÀ5EŽJSq†ômMê£y<pŽä[ÖPhK97Ü¿…Ö4î>%i¡îu¡?"!ª«˜’JªH±ƒ98ã&´š²ÔžÔá3™)Ëé/I×HÕLJMã¬U¦"o—´¾MP… .3q–óæ¯^zÛÐ'€û®©Ù50¢ÎÛLÊ« ÏÁ¸—}YuœK÷µPÌäˆD¥P Œ„ºéÕI›9ƵÉmº–'D­3?1î¬À[D¿[¢…î¡•7?íºJ³ßCêsð@ $À|G3 ‰½âµ»…Ýô6ôšÍ&t71òѱ0LÍÿíúÐ „÷Ì5›UܤzãÛ›hù--wäž¡7 +^Óÿ§¾]¤¥4ßúÛ6 îÒM`©4À®˜jl>oSíǼAßß}Ü3"S›wæiu!ü‰Ê#ô5]G!Yß–¿Y…¾z×`¥{jw¬”®ùÎ84ö|zëoD½êÚ„’›’õ2¬Mö0ócǘ¥é[Ú†Û~2îJ:XÈŒ®øDÛå0€g[Æ¿š‘k´AH˜a'bÝPËà’™Í§¿q/–Ø­ùaF¨á¦ïÄ;otu;g‘}ö/oKý9Å%¤‚Ö;-ö†ƒƒüá“IáÀŒa±Þv‡K |ôÄÙi™3X\r߆4Õ]!ýðëG‡9µ'¬ ºdfø5åýk*.7Ô^ô9~ÞÆA¢Ór "¶ùxÁ䨢.‡ òKøÿJ;Úi¯¼¹ðÕ¡'%xq_£¹Ð$:[RªfâëK¢QplÂ[2Žõ69ŸkOϾâN>Þ“²gh7=joÁx¤  GáÀx2Ч±˜tññ&Ó`?c ×˦§î¯ìKš Y*ÝÄêr(4^o\%|b.Ý®‚ý]go;Ž/>XeA“ß)ŸH…ÍkjP*&@`Æ0ý„¾.Ùr|'{ R£yá¼ ¦UT†·ä*›Ï$Do:fÌÉÕçËj™£7}•,zŸp8ÕÇ]¸?&c:}×OOF*iF![CaMó¯)ü4¶ÆÃà±å²I™.„’]®!öþ¬,œ ôRôþ†ØÏröüúàé0îBxp^¸à­Þ†ª¢ ÁbuÉS¨f£¤8óf£C•:V8ìïCgïj]‘J÷wDÆ1ÙãJ5cÈcö,Ê õ*)cúsm¨tºU>Äf @tÆLNÜrQôÕÑy¹»n*ÆÎ÷ O˜´óÑÁƒ¢ÇôT‘<ö5 »¥ñØøK´fxÒvï+š«Ñ'1‚W~øoX~÷ó¯ò­Í“nMo¿È ÊêIôUÍØ!`añ?`!¸àu„ýIh3tÔæJ¸b4»‰t5,jÛ«ôçÈc…õŠñn:Ò}W:±@ §fn{õÎgØ>ñ·„ ='‡¬!+KŽ!ØA zïa\ÊEZ&1Z@ªêà䊩Ėa,]‰^G±å8­ã™’¹›f´¨ç²âEK?dü®—¼fNõöÅXǰ6ë^FF¶‰ˆ®÷|r`ô±  ¤Lªg¤r_=_d2ˆJEZë/¢;(T³œ½Ui-±E îô²élÇÒlj݋Ô'®ã='˜;‘knc*;þ(ö¿Ì- ‚ endstream endobj 144 0 obj << /Type /Page /Contents 145 0 R /Resources 143 0 R /MediaBox [0 0 595.276 841.89] /Parent 131 0 R >> endobj 142 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-plotsalinity.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 146 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 147 0 R/F3 148 0 R>> /ExtGState << >>/ColorSpace << /sRGB 149 0 R >>>> /Length 1688 /Filter /FlateDecode >> stream xœ¥˜KoV7†÷߯ðu}¿lIK%¤V¢‰ÔbAI*‘ ’ÐþýÎÌk#„øÔE¯ýÌ9>ãñx&Þ¼2Þ|0Ÿ^ÓÏ¿ÿòÂ\\žœuÎýûòâ7­Ùü{zóÖ8s}òæý|8y̯§^mu¦F›’¹3±[ýÍå“i¨RlÀ¬OÙ¶rL©æ{².®yÈ5R°a=~H5ßuÍC®ù›Íi­RÍëÏ9¾nÍ¿¸Î{ÿðç=¼¿?ýø2§¯þ2>Ø1_ÐôA±˜TmæêÎÒ6C%G»^e›ŸLÓ¦Z³>u[Ü1=äš>ZWù!Õ|-ìÔcrÍÇ$Ÿ2ç‡\óc¹s^­^{F¹ãå¥äm¥cH§³# íWýúMkOÿ„2ÌÃÙæÁ%[ã0O盗Ƨæåls¬2ßÎ7AN¡}U#yœ’ƒ“‘§Lžâ¨»¸Ë _JžþžlÇ HON€hŸƒÍ¼fzxæÕ¾yvñåî9ùÞ<ûòñÝãí?7æúöáñóíŸcðñöÓýó·æêÕw¦•îùɾي#vqsÿðéó͵¹~÷øî ·Ò;mj Äò Ÿ^Nsr…ÑõéuãŸÏ7æsÿÿî4O‡Ó{ÓºœØ“§·Å<$o†sH§õú5Éób±qnï™§qkAŠ9O—aëj^¤ÌçlK7ü”À·^!§vãéDÓKåZ0FŠ-´c®d_\±©ì„Œ(B,6"!ïD·É턌("ÍÔ4<ÃDá3àKg' oAž›" …(ÕŒ4ùØä­da|í$dDb±™÷}Á[Ÿ7#êbñä-ä{õŒÄ¾ßž!#ÛJË 8LDÊõ§àeˆÖþô¨º‚chøŠ”e½" Uxúå[f•4´~K,Ö5µè  š­¢˜Ó>U"¸,êSë•&Š|§ž-…l.R÷y)Ð(¢ÉØgÇu*@Y,àu¼…ˆÚÔ×Bã-ðPŽ\½­u@3( }‘>²t;'¼Uœ •ä$dDb¡jU&r×ë­×AÇ$GE@oD–»|¢µ×éºã3wж¡5Q½IÐòµÁq¦ä>s&„"þ ’£7|í$dDbÂËÊjB b¢°¦Í;!#ŠH3Í} ºÌõµÐ²Rª4}•É0ªžÌšúd˜ƒE¸™¥"Ê™[Dãzc#dDb¢óÅé©èãSI„„0_w¥nF Õ«0ѽ:/Ðòµ“H¶eMˆ¢D&Oå†d®zz§CA_‹ 3ˆ1rÃBy þÚC«uðQ+E¢7B¶ônöQCc¥²v>69égˆf"âêá>·&zÏÍ_ Œëc“ÀÈ"`¯Å[ˆHœ¥"¥¦–·x©Ìx„¿ÅDŠl:lœãž›Dwå$`!ME~K““MDáB9„È®ÕF‹ð¨ògÐ ‹;!#Šð³à"•’o WJ¥)]'Ö›¢E¤Ù  4 tYxÂGG'zÕ.î —5 ZY>u¢5ÐäÜ/@´’ìæ М!>Ó ­r\ ^®&MˆÖÝ¥)z#(ªµ+ Õ=¨ÌÉÚÐÑå´-B´&(0STôFdþÛ„"DoD³Q¯Z”Ÿƒö´ºÏe_¯ý½UÊÎEˆÖ÷Ñzã 7"J͸ÑAá¢W ½Mbx¢5A™³i@oD’zo¢7¢J5·ÑŠˆ”‹Ú¹¡U}¹ ¯š½…/EˆÞˆ>ºÄIôÙùM‚ªÙ¨vnè ˆ š½[tEˆÖ.íE@«Ú„¹×þ€ÞˆŠ¾é êÑ8 ‚ÒS;7ôF4OŽîiíÓA䣚D“Ža¢5î}Бø¯UŠ-7îÑH9§èƒÖ×®zç 7Ü"Ðêi‚¹öôFt¾>!ZÝÖ|9F½sБÑuDž]ÇA4tÑf×1‰Šê  7"¡ë8ˆ4»Žƒ¨è:¢Î®ã :ºŽƒè³ë˜D è:&½™ÿR¦ÑÑÐSD›=Ũ<"圪ý½‰›@Eˆ–Ú5Q¤œ“õÎA+"9‡ŽaCoþú·ˆ8;†×§ÿn³› endstream endobj 146 0 obj << /CreationDate (D:20190123142108) /ModDate (D:20190123142108) /Title (R Graphics Output) /Producer (R 3.5.2) /Creator (R) >> endobj 147 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 150 0 R >> endobj 148 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 150 0 R >> endobj 149 0 obj [/ICCBased 151 0 R] endobj 150 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 151 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 143 0 obj << /Font << /F116 26 0 R /F8 14 0 R /F97 17 0 R /F11 28 0 R /F1 33 0 R /F10 29 0 R /F9 85 0 R /F7 30 0 R /F14 31 0 R /F108 27 0 R >> /XObject << /Im9 142 0 R >> /ProcSet [ /PDF /Text ] >> endobj 155 0 obj << /Length 3946 /Filter /FlateDecode >> stream xÚÝ[Ýã¶Ï_±8ˆ=+¢(ê#hZÜ¥¹"mQ¤Íyhú µµ^çlË‘ìÛÝüõå|‘ÔÇ®w/íƒ-‘¢†Ãápø›*¹X_$þ$áë›ËO>[U\åi~qy}‘¥±I/ÊDÅZé‹ËÕÅ¿£·/U´±¿#ÿà~oë— “ꨵ·×t Oo쯡âŠ÷übÇå+û;ÄZ$øŸË¿|þV%eÀŒÊòXÊ²ŠŒ|Fmüª$ÎŒ4ØZB[&¸vÏÖyl2}ŽnVI‹7–Ð= jgokû»cú;ÌŽo¹úŠA¹ò ³¿•Üžn—ÜzÏÒjYZo½â~xµ _,ÒDǹ¥…Rqe ±ú-·ëøºc2G¾v"“ mç8M‡o7ÁtÉèj÷62ò¡˜ª¾fºcùtS=ˈˆhšT&ÒHME™ý¥ö§l}®ª( ê•ýû+‘|2ä/™ð–+S±Š‰À:J˜¸ ê3þsÄÿ(ÕÓfXE_X’¬ˆÌy†S‡Š™{m￱¿¯‚ö)ŽÚ‡mß<ÒVhæ˜ÿ*P¨.`ºž,Á‚‡+öûÚ™Š‹\OE?šSäx:%¨O%”J?äsÈ3åû¡ òµãquÖbh§â*ËlUœ›’¥Þ‚ bçj”tK |‘š,j¯áª£uk¯EDÿ 8{\„=ðÖ^Ãÿ‰ÊŽÔ¸÷´ ‘Ü,=Y’¢%õþzmßòû÷/Ó2j¸pË jÈðàËÐ}óÛ€ ÚµXQûkਣ–À;†‘ö¸7¬©¸Eµc*hÈŽ5µñ[ƒ Š?ñÓרøº'"Vx¨KNò.9ÖlË4ZÖ{º¹B7TøÈ®Öl_¢gŸ¶6¨{ýî¥É£šV»¹Þ¯èæ;½}p¬ÝÂ]Ýýl+?±èè NƽÈ» –´ÛI¯Q@;7¯-³¼ì‚­·‘BM/ÿ˜ä5,;®Þ`¥}¬Fì¢ty Ïк4úêO¶üvζPM€ð«—ÖÞ—Q‡dXo@ŽÀ2©Ô–vQ­Lt ­Õ”Fµâ¹Ð*noHu°i»ë®–áÿL’Vj$’t¬Œ@ 4ª™XkµÀ˜èG ¿$%a-Âã%ÚžŸ:µ‹»*¼@ÔãggŒuÆ;ú‹©ÕÈ‹¸Ìv±[i¦K+å’–Ò~šçýK&³Òa”%sqͽ·¼}&ÜL81Eœ¥™z5ÓÕÂ$¶M‘gÖçOЉË,—îê=2>Á¬ÀËTšÚܲ(„´l9SH4¢Ž¶ñÑ·ÃÞwÐoÝ5þ)Û,há­Ȱvá µïw‚d·¬UÛpÓó «U@§Ýϯ)[}½··‹úάÜ0°/¶3Äêè¯/¸½ss ¶#ÒÐzBâÁB‡†è_Ó•÷9Úä<'¡·FÎîµoöÛ·n\Ûû®výw\#`­ÝípÂV³|ŠÕóì¤A“éºÈ, Sé_Hìè¹{ï1å5G†Í'ëe!Ô“6¿Ý¥qa²_n T‘žµišŒ·A_b¨«2Z 2âER;¿½ºŒPƒ›S>€Åä#td«Wç:·«™ÜæHe`¢:‚9l«š™•¥]w¼, ÖMë‘Ê ‡í(Š+úó~¨‰Ub†Ó ˆ¥^62`†[ÉŒBq•:œñGV´.ˆŠÜ<² '¥C%n¢˜¨ÊC•U©Še†aŒÚæ `É!ˆ,ò@vŒË$ðwk_2SÜ$%ߤT«ä2cÖ‚îžîϸ¾¶#'Œ«¯¹JÐAÌ×½gí¡&[Ïò«9~Ç¡.Q¦uÀØ*ˆºÞ‘±ƒ®¾ôÃcþ^ŒÂÖû `· ˜záù¿2zûu²ô¯<$ý|"ý§Ù¡çˆøù"zŽ\ž PO3wÿSCzæ,ýÊëãeò[®„‡už–…ëqãƒãÁ4þ ^vy@€U·Á¾q#&p63¦ü|x™âD#ÿmnSIâ¼röÿ*ÈQœZM#V&NŒ#&H3KPÌÄO'¦MpK=ôD±Í,*Ó¸,ŸÈíÔ£Ë,.qŽŽ VÛ¾æ"Ñ™â”Ú‚ô¯ ÖY‘o/ f<ƒ56¾¾ÝsL ;(ôÙö—Î^|ÛbœQì±sJIÉ<»ýf„ (,Å¡Úcˆ†êƒÅÑ•*¢oönÐE‚%¡a0«™#ël:ªÛ«!à‚jÆrY•¢Œ)…­þ†h*Qxx{nå@}Mˆ5f%²[R÷WAHº 1xW¨E—ñm‡Ê¤ãƒÃ!ðþ²Yq$ ߉綻K ¢U´v®`Ç–j¯™†ÆÎ.²*‹äº¬/$YŸ[Ù0@Y” l‰ ´…úޱhQ: ötÅXwýÈþ,6CÄ]”º!üf|Xå#º ç™#ØvóNPntØçóLÕ|¿€}ZО³`%pÝr–:+ʸ*‹áÂ[¶l«D‡9¬&N­Öš—õbƸÔ÷%Ò½¹LÕ7à=C4¯6߆žˆ›>ŒúÂIÏäœI”hòùðÚˆîÒIÑGˆ\wtÝÜ„Áå é9aA/^`gAOq¨—ðö;ô×<º¥dÉ\¬¾åÂr‰‰UN\±Qz0èD‚©´æ(ž©#òõ•¬ÎžpE–”îàä¾@^¦…+íI‰NbêŒÆ’+ž³`ZãÜ¢®©N(-Í jûÄÈ 'tf|nZÈvG>4LŽ5ظ#'.]ý‰æZ dØNöNÒÉÔÍ šx;°ÛƒŠXöfZv +µ}ˆŒìš[·ÝV+Y…×(U#ìÓ5m†7¾C~8z”1@Á%ÏNøñ»`/÷Xlά"Ý¥›yî}˜¯®2o£–G<6Äæzr'0°9®[ûðt»ñÅ©Ïê/&’èÒå[R¢LV€}ðÄ5”,Hƒ|MFô|?ðH ¸€V5Z™Ö§°}¶èžZø(Þz1DQ7ûì–#åDŠˆ»ŠéÕ[ÏÙ”6s¼éÙdDê3 r¶Ê'ÈF0}èfƒ+S]h•pO!Ù¬ÝØùÅB—:º’e?}kÝ´cäžÝСŠÉ²5™´gœRrîòßbF¦¼Gi”úIQó^üâÛÌ€â†tê}…‡$¥?ǰr3ïBöØ”ÎmHbèÎ/¶½F•^ŸvÁBŸñj¬#¢t˜¼qZr:>¸Ô0~9HR`Eßý/ûûzJ2Í,|©BLj1Xhåmqéâÿd+“yœI lß èµap\v¢ê¦TÖTÏ&Ê,@M<¼:2¬ºãërpdðŒ¼Üñ`§'}DN6Âÿö$×Õˆÿ l«ÑÀ–ŽÙ¬y×yg:2w|­çeÁ¹ä8/lÈÁyIçP³$ Ì ýެYˆ²°Á5‘ìùPQ=o×ÅŸ8zê³vN£¢¿Ï¢×)‰:䃫Ø'¨/_v4M8ƒÓ<þCEj¬á›ºê:¶»[é·^WOǨ\J Ø8Èú&€50xqÞot×M?2r4cÖoÏ 5ÍP¡F¡ïa¥è“gš&’]ånâ#(ÓYSG/q{ÚÕ¥¶÷ùïV%´§ ”6î‰f³$©ÆŠUïƒoøÞC:9ỀÓ`ÙÈü~Jöî°;½)Ê¿ Çñ ~ù¤î/¼Ä,Ëxj媸HGQÔ1&<‹eø,–¡|¼1€u §`ÏA%" hùÝ!\*Ü‹;Xbr†ì3Œ/ßq”Í«Uûærh—l"£ÞÏŽ”‹ÃvrŽÁ ϬÙbOÇÇŒ™ÑÀı‡ð  Žq¦2ç‚fÊ» Î‘:I0Zº€èbæ¸4 Ì"/‹èuOt!& ø”DšWdDO}TÙ£Ò2+>**ËjîüP‡VE ˜±—÷<”÷UE(3N<º’Q¡°±[m»ÂåæˆÇ™3VZ» Ü{> endobj 153 0 obj << /Font << /F97 17 0 R /F108 27 0 R /F8 14 0 R /F116 26 0 R /F82 13 0 R >> /ProcSet [ /PDF /Text ] >> endobj 159 0 obj << /Length 2152 /Filter /FlateDecode >> stream xÚíKsã¶ùî_¡ñIšZX€øØ™ôPoÝI'‡¶qÚCÒ-Q²Z‰ôŠ’7ù÷ý^A‰ÞÙL3“2‘ð}À÷~Àz¶éÙ_nôÅÛÀSÏ̬²Ê;;sÚ*]ä³Õáæã*uUe|ÒR@“‰w_Œž}ènþam){.“MÿôxóUªÊ³|ö¸™¹LùlfK£Œ/gëÙ÷ó‡…™ïà·=áÙ,–Îø¹ÑïË\Wóoa®;Èì¶[,³bÎÏu‹à=<úe·×òm¼O üŸ{Ä^,qÀxA»##F²ÛлÆWÎØÛ¶Cºð«÷²Ü®'àø‰œô'aiÅ`ë8y”…§ó‚iÂA×2؉‰ÅW |·=QŠŸrÞºF˜šDSο¹÷zñïÇ¿‚ô—ƨÊ{èëÂçH«™ŸæÍZKl»2:ê¹AäwU‘è§ÐÊj;ÒNH@-bDJ[y#úOŒ=R®Wº4yÈD/Ð78PˆÍ×Z9—Í–6S`sÁ$JÇ:ªrÚg‡”¬È>Nb$ae$Ú'd:ˆ¶Crû»ÅÒÛÕ¾€â¾Í+м9-”XÓå.Áqº¯òµŒ`w¼X'‘¬ÛÓÞhêŸÆ1ÃF<` ‘ÅøJ¡á< E'Hf °š$11.a ¬šÈÞ=“'‡Hœ{’7H± œŽ‚:¼7Ý>^o㶈¶ ]R¼—à˜s²„ÈMnDÚÕplpŽl¸1Åo* ·õІQDK±ã@Y5Ë¿(« ÍCÞ¦íF±–?›hvètÒÞ˜nûÉ@2µµ±MÛð=ÊøP+®å§&°Q¿ãân•]_üÝýFúú´-n…¸›ûßd??ÍQvÑãöü>qóe’fÏÉMœxž©›‘1Izz"ÓÐÛX¹”à 9¿‚·(Dúèë%üò)±HDH°™DÅ«|ÑÂR¹„L ]þL®/ÿ)1*¨RgÍ xFwSþL^ì5QöY@ÂqšAµØ$ò·£(³Oƒ±ýsÉxÇä™b„ñçÇ›ÿ?³ÆL endstream endobj 158 0 obj << /Type /Page /Contents 159 0 R /Resources 157 0 R /MediaBox [0 0 595.276 841.89] /Parent 131 0 R >> endobj 152 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-fitsalinitycdfcompplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 160 0 R /BBox [0 0 504 504] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 161 0 R/F3 162 0 R>> /ExtGState << >>/ColorSpace << /sRGB 163 0 R >>>> /Length 3660 /Filter /FlateDecode >> stream xœí\K7¾÷¯¨£spEïÇÕÙd»ˆ·ØCÃÄön&Û‰gùûË”JRuõÌô´ Ä3¦)UI$ÅERÑÓëIO¿MìÞПoïþñ×WÓwûš•RSÿsÿÝßé_£ŸþÜýôó¤¦w;=½¦?¿í4LÛù<{=Ym榓¡·¡Ò·Ó~= *Ì91?ÇÙ˜Æ/dãkëæìÚ€Jw#¢™ƒïFºWÕVÙF¼º*bx{·!†»·wßþ`HfWÿšdçí‡ÐÞÎÙO&ëÙ¹éêÃôB«o¦«ßvß_ñ³žL³Bè'›&k“g›úÙö”Ù!Î*÷³Ý ³rsRýl¿Ìv#¬&…;’¹.¹Ùˆa¬ùvV¶’ß›Ù寲ã'?;ÛøB6¾Ó Ò©üBv|¯gk_ÈŽ/ ^ømý½t:‘¼ì$E¦Äì|féпn ÷áéÎC$2Ýœ>=¦Ù¥2Ý<Ýi ÊôpútçfËôtúôg«å<Í–%§yg ã…¾­´ËôFOtQäH.£÷ðòNCÆuðëóûéŸÓÇ'9[ŽŠY#ï‡á¸lgmxCßøýæóÍÛëÛéúã»éþ×÷Ÿ>¿¿gú»¿üpw &/fâdè 3yûþã=ìÝôîúþú™Ó_# ¼‘hœR§CHƒä4©†¤\~)%!ãèU‡0’·•4v6Ðb¤Iñ€´ VCd‚Õ­Iç‰,³"Ƀ[E¤VfNéfŽ4½Aêh¦ S»AÓëR¡ƒ>¤“…%Újìø€ÎN–[pE;¥Øóí4-<æCšiy=‰Î”?¤ FàYwš¬Ý!móx½™Ì`ƒ ¿èø‘=’»; ‹ç< ÷Gÿ%4½M^4ý¿Ñô¡æ;—šÈ‡õ?áRÃX€&Èټ͂yqv•×…¸¶õL± R˜`­0G“àlvª0{X3c˜¯_˜ÍÖÌÁ d¹…Ô F°ž:X€LMØ€pýW¯+wÐþ!·×} ö 8掚®ƒeîEmµ]ÔvQÛEmµ]ÔvQÛEmµ]ÔvQÛEmµ]ÔvQÛEmµ]ÔvQÛEmµ]Ôöÿ¨6=o•½ÇKO¡õ}Øù8Ú–Ñ(_ßî<-;3¹Þ« kÌlP{"‰CðDf”²‚“eÝÒ£ÇÁÒ “Evk¼Ô½B‚ଠò(².‹†H3«@dBc‘l`–d™ë¹Sˆ¤xnœq­t¡À’ÐidíœA&›±–ö‰úVÒè ²–ö‰ò"iÛ·I¶È{µ’cñsRi@ ¦-K€$n¸ˆ¨<‹":p› É<ÈøÄB “›¸(©2Kbö¥ˆˆKPkËrˆav\äÔŽÑ äl(œSÐiÖ™Ï µæ¡ñ‡¥¬É€ X>óÉF4ø¹<ßð1B—ƒ:°\ȃĖ…v8•ŽÄfd¼gy@lüüÀvtˆ²Ð™åAbÓ¼~:¾èî¡c$û%ÃòÅM±|Ȱ :WbÏt‚!Ç]8 #ËÃÙ"Ÿ˜Y$VÃ4äá|i H/r8züüäX$fËë'Ã<\ª43‰]ì ’£Ãi¤ˆÎ˜„F3±×lX¤-´E{ èÌÏ#C„<ÈÏ'ÖÚUH¤&Ù/gȃœ«“"; ü€cÚ°<|ý2LÈjôL{ø2GçŸíÑaB¤V˜N,¢ùü¡wòÿ ÚÀ5º Ëx:Ïщߧ=Ë#Ñ—! †<ÈŸ°1d¨Ѭ!y™èÈMFRš±—h2½ÓKWQÚuè@ƈwª Ã]X d¬48Tq¢ú 2N4QA¦8† 2A켂L]A&Í&w “  ÈÐai Ã*h â2n~T™ [h ÃÞ£€ G2ZVUA¦´ÂUqò¨ 2Å1ëd”˜qƒˆ¢Œ+‡¬‚L€VÈ:äÐUQÅ V1ÅIVqhMë@&ˆ‘U ¹€V-‡`»™êä ÈÄXœlUœN™bÄ È8i;Z@& ´i ƒ³Ÿz)±Î2µó§‚ÌdböÎ4€ŒÆ6:!±=Èx±™dbqªdHliÀdl‘w™âd‰ÄȈü+Ȩ’dLdTèAÆy6û¨ “ÊúȈ~ÈÄÈh5qi‘g2v2j2v2¶-à9 ãV ãW cGPé@F £ÑT) ²€Lp#Ȉ½71º_Zn+È/ÔŒÍ#ȨԃLûè@FÆ7Ъ £Äw cÑä, cDž È9Ÿ ÈX b÷G¾XV «$þ$¾6ñEƒ NOhô„ŸUõyÝ=OèÒc®ö„Û°Çè3 w_ÿôâöÓ¿?~úüÍô’–ðâÃõí7?OW¯ŸØa\žf¸7Áô0úïæîþæíÔw[¥ùýá³oœXrRýVòpåd=¢Òíº‡ÅÁénTºA®¼¿vRé6Ϋ¿vRénݲ¶Ò/xíÄ*ƽKþéùO,…Ï¿xÂXñì‹'ð4Ç.žT#4 öªQºÈ˜ÀÊ]0äþ”­t?B¢Ú6¢D¹ÝˆÌe!t7Â!4SmD¡û²²6¢­ô ]û&Il¤Û›À#ÓÉ•ó€ <2ÅÚŒàáénõ<2Á·?bõšˆ‹i¸&Rèå^HUÆŠ^]Ù¼#ò…¯Š Ìu¾¿+òæå›é÷ÛO÷§m‚öîVÈUwÃäÿ\¼¿¹}¿yÍ䘬‘ô„¡PÌX0…¯°¤Ð§Æ‹Õs+º<i_ãI0½ CQR )DÓ%ÙÉ©JKŸ_L!E =—w@4ÅÇ}š¿õ:®“Ïá:¸"I'nD4Â)vŠ«×zy-A«SéžÄ( $oÃiÕž«çóÜlbÏÄwgæ ú•`=“ÓÀÅE9œ÷Ž™øÛ!=a=â§þ¹®\cãH¾çBl^» #޶çJ*‰¿øaÜ1;®ÄpŽN†J.ø&èlÇ«Ó=­NótÌTð‰dS‹¹×äù1ŒÄ.Jz æj·©(¢ýj‘’¤Bä .ó É7s¶P°JÁ7É T®P[>€+»_>ð¾_>`¾?,vY{ãŸ8QèPS©áƒÚ¾™¹=™$YºÉ›÷2DÓäptêfo^Ë<2ÛqÞ¸Ÿ½y+óÈì$i©nöæ¥Ì#·}µ¸»eöÁLA›zÙ×X3^ö]Ø|—V¨ÆE’¨»ê[ÈŽO¼»ê[ÈŽOޱ»ê[ÈŽŸsÕ·_–[ùÝêŸ|_ùÄçßô%¼?ã¢/瘞Ñ)–3.úr†áù}Ôê¶J ÷|‹«¤±©¿×»"ëàî–¯úzÒŒ‘¾ˆcHàöãËO Ü’GŠTû­°í÷ÏŸ~¹þåæöæþæ¤ÐM.ö"éjô‘Èm|ôI8õ5c7äõRñb.KùŸÂ §¨7ªÿ!#ÓVñ_x¨îÅIj`­öOQÐ,§Ò¿âа†,7Jÿœ8E‘«ôÏyÂÁFé? öCÂw«ôï‚!¤g7JÿÈŽ‘=º´]ú÷pÈtn•þS†‰ržr«ô¯±•7Jÿh Ð9»Òÿv 2œäiutkH#Ó¢©ù± Åy^z,!T“æ’Ç#µk~ÍP­¤¨ª€J¦¨Åj+~![¼VŸÀ*t?Â…!Uè~ª\]«Ð݈²®eD·Î§'q‚?'… âù+ÄÎÈ_¡¾sFþÊèp4U£Ÿò[šB.áNÕÄŠãŸî|Å5lk‹€jêjúóæþ×ÉLïnîîç“óXÛñÐi,­â3ÓXFB祩PÏO«,Õ¾f©ˆI1Θ¤Ú×$Uæšè˜£Ú×U榻1Eµ¯)*Ä­Þ)ª}MQ¡–MÏRTûš¢Ò–;!‡Õ¾¦¨ð…†þÂ>Eµ¯)*”˜éójHQíkŠŠëÍiLQíkŠ vNcŠj_STF:!ÇÕ¾¦¨Ð¶ )ª}MQÍM+cŠj_ST(*&{˜¢:Vök 5øß0Á3÷ Õ(Ý¢‹-N> %UPŒ– «k‚ãÞR(*´œ¬ëÊmišÎK€BÊF> endobj 161 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 164 0 R >> endobj 162 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 164 0 R >> endobj 163 0 obj [/ICCBased 165 0 R] endobj 164 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 165 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 157 0 obj << /Font << /F8 14 0 R /F97 17 0 R /F116 26 0 R /F11 28 0 R /F7 30 0 R /F10 29 0 R >> /XObject << /Im10 152 0 R >> /ProcSet [ /PDF /Text ] >> endobj 168 0 obj << /Length 3246 /Filter /FlateDecode >> stream xÚ½ÙrãÆñ}¿‚o!«D3¸m'UÞõ®X±³R9U9 "i‘€LÞãëÓçÌ€¥u9•ÚZq0ÓÓÝÓ×t7OV“xòÍ‹øä×Àßxb&yÅI2ÉJåy:Yì^üú"*â2/ Ò’n“‰Ï¾Û3ùº{ñwø§ksÁ9¾¼}ñÙ›rREUnóÉíý$µQf'YVEE ËÉ¿¦offºÿ«ãþ6³yšÅSc>ŸÍ󢚾êv0]ãÚ¦‡?]‹ð{Ϙ[ëF3ýwlRxÂÙ~Xóc‹°«ú T›ÙR‰Þá®w;Õ[ÙØ.~Â-Bô=sO—‚®G¼Äëü9 'ÇNù,Çþ½›ÍmLÀΞá€çÿÜ~¢³¡ì2e j’Úí¬(¦Ý{ÂØ³Ì¢`ˆ\æ™Ì6‚(À3gDsc¢*Ë˸î准å—$Éô^NÔíø™Þ0Úªð–6²…òÇ'5Ó÷ò»@‚©>ç)Í¢¸4º¥Iª™dßàC„Ûœ%Ÿ‡Ó€ÕU“yb¢ÒÏ„ØFf:äœtμlEE²¼“éüxçWÞ©Ä>V~z#*^óT/P;¿Ù3ÁK{«.7¾°£ÐKÆ¥/ù'C9À3ð23Tã+¡µ‘“";¿ ²: ½ô¬áô—>'ì ÅÄÚ!òN {aú—ÃóÒÔO½‘ݽ“奭<®„Cï®N®w2Õ"ß8Y’ˆÆNñ%,ÿ™1Äà)…ɦ¦RðÁÜT0‡†fèÿWò+0e4ÎÎ +%¾HËÐO5-Gèð¿\ =Ï«4ñ4JÇËÓ4¡‘ #ûÁm„VÐÈéÙ9ò3é +ûÐ1LJ¡¡0©œ£|æU@#®2‡/ äʬ:E“|‚NX&lJË´rÁ¯¿–m€h•þ Â3Bë/:t¦â‚eB‡e8ÔMæìBhØ$ª$Ä}#Öß‘Wç8êfsY»—ñ½‹Y.Úìƒ0ÖϦ'&‡€Š×zhÏ8ôÿÆ{‡”E¤_ÁúƒÀmd,—‘‰ÃE|_n”?ÜWYdm¥¼¾–îƒ`½;9EpÐWOˆOÀœUÅÎ!S2Þ+Õ; ‰Yy”e'aý¥»™¼rUXíÿñê„ñܹ ÉläQ’æ… V𨍲b0à6ÆØÒ9D¾ØéLé,@ Õƒ:9ÕY{—ygcrIÃÛsD&³ Êq3HµfY>­WšÄ„IVRDiì¬B³É¥fŸ"ÚIg$3H‚KÝ^oåbíê;L¨òB“@¢Øë~#Pp2'¢>ŸVÂZ*M³é²²ç­»šÝ‹ètw3ý¹8M}S™õÆ¥4‡Ä‚…îQ]våϱvA€¦FDL̼麿¶y”'&®™±ñîUb¿ ö%&èÒçŽ2ån+Ù½{ßóòšø Ø<7¤móäi›É­³Òr³÷ô>]©AOçªÂtéº_{ŽÃgº E(º¦ÿ˜•)Õ#–…[³¨> Cúb¡iy¦A+Xt¤{”8¥w'tP(T_õ’ðâd'æ‚cÒP·§ˆ*t`âƒh ‚RY¦Ã;%ß4KI Uë¾lð5C*bÁô<‡u*8~D4eh<¨v ë¿ÑI·;zZõž‰áë pƒ¡¿K¡'´ªÀÈÄö\WBÄäɃTæ Ï¡ÕãCC·Þ®!Ö,û•àű‘븡J’ ¶[}@Ý*Ôb89’=ì:ÍÉxÖmŒËWç)J“OW¯]½0d wÕRÉÚŠÃÀY] ¼è×̒Ê4¢ª%ŠÂìRѺnÝnOJ\—êwmHŒÀ4£L‚¶ÂÆy¬]®±å¥úùrÈ"¯w"FGMÉ3ëÐÁFä¸W}5DŽ uMw×<ƒ}ת®È˜ñ$¹å঑-»Ù`ÞÀÜ–(ÕK å0E×\³äñ(†åݤÄO‘?¥½Ÿ‹ª½çÆIÇT@.I^NT€ïždº_¨‹¢Áv]Ãð‡×<öLx&Ã[ÿ{Ö FŠ^ö͘ˆ¡>uä ]ñƒù‡Åô=ðXyÇñ·5EŒîãù–¿:ï…Ñ,ÎŒg+ùÇ?Ã^û£¹&ESá«•vw|ÏkÍóÛoØÂ;¾½Ý›£†YŠ& ?ióˆD)¯o?Îðš±É,‹cÞÛ|Ä,þçY‰Q³¨)?CüIR*s¸tMN¹ä3áZsà_§4Ù|ÁÃkZðäO!ªéßÈÖkîé̳lúK½œí’/볯xW@â†LÓ‘ø¤ó(q¾)Õ.×j«ó± öMëª=%yGJF@ýH1KE Š5{1Æc W¼@þL1­•†d ؼ¬GP‡¸jY»¾ëT¤ ƒkº¶lkcŒè¹)â7šŽnxñ ¦F,ò–Ë-ì}jqFTœ(ªðŠ*ØXéòY‰Å9¡ñѦBñúæ –ñ &Oâ™›¨ Wƒ;¿u—õ¼£ØgmLÙš»@úÁu“¸8xËîF¥ üù¸áÕ'Înäì/ëßqõÅ“ˆZCJa¦/)ŨÙ0 ÃÀOz9/øšhx…¸†F˜ qrk÷ÙÛZ¶K¸*LÏC 1¶À NܨfÐkŒ¶hx‡ñ×jt¤üVc1œók©W¶šåì=X8å8§™FÛKÁÿÁC&Þ^l™h90"Sg@iâ ¨çGg=iBéu®iã!ÌçëGÝL6ñŠÂü‘cE#),,“Q¤vhiâ"1 ¯g¶â¸švÚPy{dR´uˆâŠ‚ý?j'Wý¹n»1âç;ÉÙµýÄMßv®äØ~äDäB ÀXÆ-£}×ûB  ŒI+‘ÿäT‹Î4uD{Æ7¼%k£ìõý³TÂx“殜$5š‹fÁiþ fÂ1Ãx„fL-jÎu÷ó™‘‚D¦—¢“Ü΀ðÂä÷Zårì® þÀ`,׺û‡¯]‚‰ç½bŽÔ¬`\v‡ŽzÍßÒ¥€Þaí3d’vZnebÑ×í§0ËXâéuCRÀ8vùFKNnòć ~ãœT[%of¹\/ aÃý_“˜·ÔêhyêYª Iy£©K;’Π¼%Œ ûúAûÁOãÔ3â×CiT¥éI¥4ìÍuSE¹)ÿ@s=ʪx¢Ÿ?·i©-ÒkêÝ£f˜a{oÏ.€Pï‚—ø6-†_8 øÏl…Sø™‚gü¯!üäüã†2ª’ò9¶Å©ï±Þ2'.VÁúÛ£:çƒ+|ö¹•P•R‡::=Da¢ØþÞ3ÌÓ<‰ŠÓ®=õªºóâ„C7š4ÆÎ†_6p¬lymGa½a°|ÇÙ¼×¶¹˜ø(E7MÈÃ&ÌŠ¸Y(—úfòàZñx úŽƒ=rï‚ú¸‡ ?ÈeÁm|¹‰KÒΦ%вúÅfïŽOŸ !ðŠ»‚À]«õ—¶?ýwüK¼°Ï<’½h³¥Fø¾å,uÍïx)€‚`³W;n5‹jÅ ¿kjü†z¿Ò”Pf:R@p‚[ž­/œ@]¶ŽÓáçc6Ëøë„ÜibhpÄ­¦šçÙu'>è¾Cƒx ·’-@eTÀ/ Ó” ×·/þ {„% endstream endobj 167 0 obj << /Type /Page /Contents 168 0 R /Resources 166 0 R /MediaBox [0 0 595.276 841.89] /Parent 131 0 R >> endobj 156 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/Rtmp34XFdT/Rbuild178d5b598128/fitdistrplus/vignettes/paper2JSS-fittoxocarapoisnbinomplot.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 169 0 R /BBox [0 0 648 324] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 170 0 R/F2 171 0 R/F3 172 0 R>> /ExtGState << >>/ColorSpace << /sRGB 173 0 R >>>> /Length 4413 /Filter /FlateDecode >> stream xœµœË’ܶ†÷ó\J‹ÐÄØú–”«’Š£©ÊÂå…"Mœq©%[£J*oŸspH6h ÛYXÖLJìfç@™é»ÉL?O¿Þ}?ý:-ó²ðÎzõ¿Óß§÷w_Þß}ñô·?~9½yºÃVܶþùôæýÝß:8Ýý?'ãÛ©èææ'g̼„éþ2½øÓãÓ§?}|}™^¿;}ú×ÇŸß¼~7½}xÿôøéñáéåtÿóÝ7÷tño­œÝnÎNl¢Ÿ´Èø'žýíëO¯¯…«˜?¨SÁ_KœLZæ¼Pü×ôþ[OwH¾ÿW¯®|ÿW_ýަ0ýçez{g¦ï࿟ï þÏw¾¾›’›½Ÿ.“õfŽ‹à»éÕFfŠq¶¬æXš,¨ôìæè»ÎØõÕåÚÕ»þ9?îá퇻ï—ɧ9ðÝ_žñË™2/VÅÚç§8—¤‚ý3‚­ósq*8¶àŸÉOÙÎÆÁýbrKž—H÷k#›9Wê*~¯Tš,¨tèôkˆÎ¨ôf³t±ëÖY|àª.¨tx–½é:c×åëT]}»Ïè.ðAgÆSFþ½áà3z‡¸¤15>dìæâú%ήH¼[Tª’'–û;>æå’Î[.3ÔÅõŸŸ›Ëø·y.y Ÿ!8÷«;øPɬĄ.i’¸V‘sÌ"?Ç´m;«¤4-üñH´pk¢]‰‹ ]-÷ Dx„CœÖ\Mó1ÏÙ¶¾ßÈrßIorU…üº¬úþ9AeŠ8ò ‰Èt•îæÂY#Sÿ­*“/Ÿ–d7;%üÉ9gÀU¬’‰ <&³\ð7j2æV9y¡G¯ÊL&û&CU2‘O˜øä%á Úd"ƒÏß³,ø)«.h|ÁG…¸9Հиe.µ|RÝ€Ð@ÝÑ.Q°§ô„f±³ã[7ÒªŒÅÍÙ‰ðVu1Ï>‹ž1t1Ì.ɾà³ÕtAWcáRZ¯˜å ؈w³ë}-Jï;¨W”ÇÒÀè”ÞQ>¿ ³×zC¹¾ËøUºÞP® .ÕôŽU÷³ÑºBÖŽ>]WÈzÁ^Òu…¤¸UJ×ÈzÀg¡ë YÏsÔºBÒ£™ƒÒ5²Aë YO³óJWH:ä!«t¬;¼•]WÈzÔÉ Y‡Ü¦u…\@|Ô›®‘ußSþeZ!ëiŽZWHz<«t¬ÓPÜu…¬ÃP§u…¬—Ùj]!ÀÐÕM×WÈzÀ"´ë YOs1JWH: YéYw}TD]!ëqŽZWÈz™Ã¢t…¤[‹xÓ5²©Hë YÏPÁ(]!éÎèb…¬;LÆ]WÈ:ZWÈ:UÇ]WÈÆö ŒBÖCÇQWÈ:¥ê®+$Š`§t¬ûÙj]!ëI+$=BÑóç Y·ècº®õ0g­+d=c)Üu…¤C%{~\!ë~ZWÈzÂR¿ë I‡ÑÞ)]#ëN+d=âPÓu…¨×",CVS¥XÑ’ÉB×÷<è&«ë&ÌÌQä Ë&ãÒlEνl™ÈX_GTȪC2è¶ŽÌìud2 [0ȪÜ`²%KÅ~¤ËLXö$¾6dÇEÉDf1õ£ST}‘ îŠáb©d]i0ú9¹R2«Bƒ‘ÏÁºÇ‚½ë„…¬ëIwDAøˆÑH¡´èŽ(e”B2£.4‹ÁÇ™õˆ?P× –ê¢ÃÕ:!ÜA'̸ׇèB‰±×šð ëBC°´Æ¦U¡!˜q¸ãBiÁ_©JŒËÖ–ï™1h1µB2£.4SûþÒ#þJ¬4#]gŒ˜îXϺ#VŒuîÁ@fÔ…†`h…jp«BC0´ßŸb×Ö㬼]g õé5Ñvˆ…chß2£.4=º4Ö!ókÑã¯À…d~¥ zôb¬CÐ:£o…>dFUhT¤V\(-ºÐ¨èq"„uÈüZgt­ÿá­Ö:£Ãá”õ¬ hEW½˜®¢ Š®=ÿÅkZÑaöc=iZÑáJ‹ö¡Û<§…,¦ AWïŸ]âªÐtX®°^´­èêýµÆh/ZÑa`ÝëA¡¢«÷ßš´*4]³àÜ”­ºÄƒsóZ¯Xj|ÔN´c‘ûÎM ³|~pnºÐh˜k!´í˜åþÁW´^Q†ë=<>=}xÿòÇéþ»Ï\M“SAÒYäTï~zýéñß/!“N/¦<¾ÿpy|ýîÄIÁòF9éÃå——”¥/æv\´p8Œ~ƪÅðNч1²r2Ýœ¦]hÁq™]13¸jò—L¨eû*¿Ð'ž†r+›óÑýãÙhœX_n ÷uµî\xÆ5‡Óáð0¹[Â#Ž€§Ã±Ì»%œVz··] §Â¡FÌ·„G,NŸŽÖ"ÑRÀrK8ÉçÃi"øt8T!î–ð„ÅÊép\e¸%<`¡u>¼ÔÕég†{,éq‰"ßžpoÆép¨ –[Â#®¯œ/´|s"œæáÐt»á~¡YWS2 gÃqm$ܱ;fº%Üã|Òùð<—p&œæ³Ñí/·„'œl;ÑÄ⢌=^ÐãâT;Ž·<Ð’¿!Ü;tÏ·TVZŸp†áD¸Ã‡×{Ò™p¸gÆÓ,D>î)GÚ@«Ù'Â#mž£8^°*Áµ"s&\Ö[m28±ã=?œ×kp¡É§á¼"ƒÓáDxàe‹óþ§ÂiUÄ[÷¯=+<ò¤(nÿÊ×ÂoÞ«Š€Ú°Ð›U7º`ßNêyïNÕ»Žß_mWTº¾`»þï¸]KÛ³ûU±ÓžÞ¯`œ9½_5„<Ú¯*ÖgCp˨ Z Ý6€î“+*牠C´ºE¤­…½³j»ñයE õÄÞ"´õÅõ'ï-ú7ùŒí‘ÜžêjR‡£ÏØ])áÆ$\Uí™'âãR§ I=?Þ¢á®ÛKã‰xƒÄçñЭ 3oŸ4é›wÑ$¹Õ˜*âfb\𬭷\›¿âyÛ_øÿ¼{à UBÏQ/|sùåñ#½l°}ù૯¿}Æ{žØN¿wà\ärÇàúz'ïçNŠÝ–êqCèÒS9£Jõ¸€®tF­ÓpÚu_×êŒ $]Ïu½DàüwT „W-"ö&Õ"ÖÍ“õoºê-˜W-<Öª…¯2Ú‘‚sdªE©+{õˆ¥µÂÞ¶µÃv$áL—jA¬[@¥ît æU‹À›÷×¼jQpJêBž36æ|ªhU æU‹„Ï‘j‘ê>Žz_Ð-˜W-N©¡®eÖ#‘Ö¸{ æU “<ªñªEÆyÕ‚X·€:Ô9j‘h‰™[ÈZ:R-b]5«G2mKì-˜W-èbª…¯;?ÚÚÔ¯ZäºvZZ­½éô©pªG(]]Èâz3· #v18¿ÑZ¯Z5Q-B݌ێ,¨T‹Ò 89‚»ot æU y‰eͺ…5è°.äRmcn!G–ªE¨«Áíí¹U5¹q]$´ÀÜÚ˜ZÔ# ­=¶H˜„¹ñG‡Þ‚yÕ‚¶¥]È6ÆÆÔBŽ|“ƒZDìŽÂÜBŽx´ÙÐÂeªâ™©E=’ÑI_Øß•Ê\Xó‘hÑ,·ÊZX•Þ¸.qÁÉ‹ {ÂÔBޤ…—À|¢ÍÂÔ¢ñèjU âU‹ÌËZ>‘æ|„wN@ ÞÂdûNŠv$aiÐ\€°² X‡X~Qi!³^ÚN·v„6Ú_À\æe9ý&‹¿„ÇÁÖRêÌ5«<Û*fãÆõh«‚ ³:µmx±oÝЈ?>`–[+äǼ&Ž-&ÚPH£é½,li„«ã`A]úÉ TRø6[í;†þ‡=zŽ¡½cvxÃw cD¡ob(ì¸Ð¾ÁwµgnY&ò Z‹1[Ksg[ö´/Ùã0²ã踠­½zË)Ñ3 œi¦`Èn¡é¯-ËŽ=`‡‰}Ç…=ÕÎ@Ùå Úœ°+pÁÔ±g® ŸÐ+L{Îr?¼ãõ-ªŠ(cI¿pÆAç;º^ ®±§ö’Í®1=O^ÉË ™†Ö«Lß'Ðs4¸Aë*'b‡ö€i‘æ€éu©.8¡0fÈÔ&±§QzÌ‘7H ™óü¡„Rþý ÓÖ¹¦­Ỵ̈Ș Ö\cÆ mŽ˜ÞÄ:àˆEÂgœD2NùåˆéM­¦—ܘVo¸àîñ1c¾NGÌÆtÌ´õ÷€U4c¦¹ñ1[.Ø£µ:àˆÇÓ›`cÆ|íŽØ¡Ñ>à€[S8ayxÀÿ˜ñí×rÄŽ*¹1G=“x…i[ǘ!_»rÄ´5ó€éM³Žú­+\°Šs¤E³vXI0ÍMpÂjê€ cÆ|mØÓîª1GüËg®±Gœiå€-ÕScTO9Q=5fšÖ3nVÈGL%ñG®§†œ¹žpÄ…ãtÄ–ë©!óŒÞ˜c­§¼ò-;mh¬³HÞÓ\Dõ"Âï®0¹‘GJ‡Íì8Ó‹dÍ‘ìÿµöäI˜\É–i·Á25_²cC/£7_²cË¿ú’&_²çŒÍš/Ù±£mÁÝ—ì˜g‡š/²ø’-ûæ;šOYsZû’-C:fß&¾dÈâKvLû’»/Ùqb7[}ÉŽ Í6_2fö%[ŽV|Ÿø’Ó~îKvœh.²ù’1³/Ù1¯~5_²åįüéY—5[ñMâKÆÌ¾dÇžÞWl¾dÇÞüi¾dljެj¾dÌìKvÌ3ùÍ—ì¸H_²eNØ7°/3û’|¿¬û’ÛÊ2µe'³âKÆÌ¾dÇô3u_²ã€?s÷%;Ž4SÕ|ÉÅ—ì8I_r…ù÷_²czÿ­û’W_²ãBóÎÍ—\aÊÇÕ—lßmõ“ò%C_²goš/Ù²¡•„îKöV¾dÈâK¶LKyÊ—ìÙW_²ç´ò%C_²eÇù´ù’=Ó¼Dó%{¦ç¡ù’!‹/Ù²Ç2@ù’=;¾žø’=Gú¼Õ— Y|Éž©?6_²å ¿wõ%{vô¼T_2dñ%{¦z¦ù’='fñ%{.|>ñ%#®¾dËQúCõ%{Æ•ÅîKö¼ö%C_²gšn¾dÏiåKöLãaó%C_²åÄãmó%{¦z§ù’=[z^ª/²ø’=ã›fÝ—ìÙW_²çÀ,¾dÈâKö™Å—ì™úkó%{Æ5îK†ìë<ð–i> endobj 170 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /ZapfDingbats >> endobj 171 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica /Encoding 174 0 R >> endobj 172 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding 174 0 R >> endobj 173 0 obj [/ICCBased 175 0 R] endobj 174 0 obj << /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences [ 45/minus 96/quoteleft 144/dotlessi/grave/acute/circumflex/tilde/macron/breve/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut/ogonek/caron/space] >> endobj 175 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óû endstream endobj 166 0 obj << /Font << /F8 14 0 R /F82 13 0 R /F97 17 0 R /F108 27 0 R /F56 5 0 R /F86 15 0 R /F92 16 0 R >> /XObject << /Im11 156 0 R >> /ProcSet [ /PDF /Text ] >> endobj 178 0 obj << /Length 4947 /Filter /FlateDecode >> stream xÚÍ[IsÛH–¾×¯Ð©‡Š0QÈK]:$y‘«m·FR¹£{j QsQDÙ.æ¯Ï[ T9&æ0 @æËíå[¾÷2Ÿ-Ïâ³7?Äò¼¼ÿáÇ×ÅY•™ÍÎîÎR9{VÄ&JLrv¿8ûÉn{n&ë¯çS›»IunóÉïç.›T+,®føþj¬Ï&»=n©ÙtŽUøÖ@¼.¸vQà«z_Em¡þ Þ³I=Çn«µôú•{Å^v[ê {Ù" vºäêåŸþ¿ÀŠºÁ.§»œÃ¯±Iáy`bŒ°nq(œÈŠúçú Û/ø][*3Ÿlp,Ķ<2OSë&ÿ8/RåÉ畬f-<\7Ôæ?ï†M˜•Î1¯‰UHZá:—ØA™NhzO€0‰½Î…Jµ~©ü·Ò ɦ–ÂG™-rˆ«K´oð¾eVàÖaƒmÃu²u0D·uIl&³s[Ð.AÓ'(GÊÝoG£\[v]ןù½¿eÂÚºÁ&Ç»†£bG ¼åuûÙÿ»G¸Vü'SÃ^W,ºbéiƘŽ"\5¸¾$ÎHðù”¶<LQ%`­Â£&$‘ljê n+톋G¤'ßL‘USêˤ&®u™8ئ'œX]me–ÊK|?ð˜ ó]X“Ä9‰…Îl·áÂCW­œ#±Eæ!ç /’Æ_ ÷”7HùEuP':…\£ƒBngÌm¶$Ió‚"+köR®òƒÔ§yÃj—¦“ Þ+ê‰Ôˆöÿ|>'îð{ “ø=§^,]Ô$Ç4¤*xÍŸs–nBÌ¥Eàf¯U娼8Öà•Zé`!e´ %˜µÚ–¶ºÕØÛ¹ùãkà£I£$Í,Úk`nb£Ò sÝ9ðÚæç‰™|¦;|ûŒ+Åu-–¶ÈPxh¸ÇÐþCÖDE\p÷²x›ZRïŠ6æmõRʉ­»Vø¹àB2#~Ç>Äo§¤ÕŒ¥¨F«›“¨X¾ý†"Öún4¨ôv· ´¬ƒV$(8²ÎÎ Ù¤”÷]”‚¶c&Zð.!5l]øImržæ–Äq¹j˜äÆ3kí—o:‡=üŒ¤‚éeõˆLÃB2b^ª%2å"aÔ©{à4Á'yÒi¼¯TåáåœÌçÓA-éûž=ªP.˼Kò”éš|F^¨m¤®ì±R÷¢Ú~⺜êçðow8^Äãª[Äïç²î=C20?8ðL0 VzØÿó¶\z‚¥Ž°<Ôú¢ mÜS6,I†4^o ±·E1”b,"íévlüÍâ¬æ¦Uë…zßµZîiW°ÅCë-/ªQ UsèùóZÌùbYw(|ÀaÈW°ÆJ[ÖôÚiE>ÿA!W]72Oò@EÞëõ•Úµƒît »7Â_…únÕ'^Mk¬ZÙª¯Y©a¢Ø2õjäo´°Wšû¦R#:t'û½gø‹Ðªcï­no-U79k™§1Y€¢®¾!©uY†;–ªõàLwº¯ÖćúYËŸ3Ooƒ½Ú <‚VéëóYs±%¥]0ˆJã´ô?¢dòÏs4=j6ömGö7ò)BRN®}‡{AXÿv*)c 66–à™Ì¨Q m½a,'ÞE}ëO`«èΕõÿU{¸8R£n;™ˆ&IšEf±· É䶉ëd; ÆMy™"†#?´b44‚–sR„iš‘µi_.ÎSüÀƒ-»ÅÂZÌN}î," ø?'É9rÜ™‹Œõã‹Ä¦ñO@m¾•Ѩ,œMsÅE³Ž¬Ìæ²ZvØ:rI9¹ÍuIA>¬Ú‹Cïâ¢ZH?¤×-qp)ŸÿŒäå=óXl1.rí‘\-4o‚~HžÒ2Ÿ¼!.ÚÂFÉÙ4ŽÒD÷¿™»qd³ò,(oC›O èz½AqޏãQI,7¹Ù«¬Õ¼R"?6Mížµ9-‹ÀцöP<¶žáŒ¾ò”mn£&݈%9|RfßÍ!ѲmÍ¡b¦9Ȩ;`»—è瀱ÆFàJÕo­Fš<­q«‡¤ÜÑV"Ú‡|+î‘m¼!ÙÝ‘5>&.ŸÜ©Ô“sž#M="Ûy”¥CÙ¶F÷L6ì'kËo6)NÉzâÊ(‡nXØ0_ÒÀ=a&&PtvCKûÝ«%¸ÌòÉ­š€‘^“YDþùD¦.°ù+iª»¦’¶o‘eÒöv7ShÞHÑG­#sÛzp¨-¢nÞgf1ãÄ××T<$RâŸY¨ ãÒ\,‡özfüDf¿ƒ$À‰ö¨/»ì@c°QQ¤¶å’…"Yr«ýΙ Ç¯ZÊNjÖ¶´I¢Ëæ<×µ&h„T=. q=UIÞø,ïq…zcKCÒ÷Í ÑOÀªf±Uy½RÓ£}Æèßq;R¢ ¿OêñeDÀiäyOâ‰Md U´õyY|W“&Q‘,‹)L|JAt3C_@ÌFTîHE¨4´)]é%è˜y…Ÿ÷Ý¡"³¡9™Õ¼cBÆÚràˆM1¯¸B†`.îÏó\XGÜPÆmÈA Õ¥0œÜ6}<ÇÌyµJv`í1RŸ×PUf¼µ!LÉÛîQlá?4X©ŠCÙ_؂ީMTðç&ŽE2µg&IËo&q']zjÓÈ–ÉÀf‘ShÂ,bUïe_p°2Qèç¿ßÔoÕÊX©ºˆäå—¯AfýXU«£š÷êÚË  - ØŸ ÞnzÛD„©wÌ… 4!3Ó¯ÆsŸË&H'ÅW&ÌèýŸ¿µ!ÌîãmäïãÒmš’‚i…`ÂŽ)Žu†Ú×èÕv¬9™JVHGèqý}Ç(„Ó3]=›°ÓçRÐã!‚xŽÁfñ7›NéXCg‹¾/ºòt€vÁ]•aÀ¾ö_*â°Ä‹ˆÉ®¢®ŒÜ´ö³êÑúw¯CÐöºšun­F}¡ZmÍä¥Ó¢¤Ó¢^’ä qÜÛ|lDG Í„y%ª 1|QLÏVÝ&| /rB=‹8%t4±†}-‚ózÖô’M‡˜EŽ0yôDV¸²ã„àcÝùŒ©ÐŒ`4šÉY† fä²§¼Ûj4Ò³Id| wVrÁâÙ9žr€öF?øŽôåH -¢ÂæJ;¤2`%E׃¸¢­ö¢Ga¬8@·].2á‘™±QŠÛˆk½¨Åöl\õ÷a²%µ*ù³‘qá"—¬ŠRÞ~Øî;ŒJ‰Ñݦјþ]M»¼õˆFCkE%u˜×}³bà]3àônÃ)I:°z Rñý†ót½,®T½OêÀ ¼T7»ZêñéÁçòÐ$¶º—ºEØÃ{ÉINß#2>-œÄ\[ Rµ ²°à3å|ý:àF豿 cÉå–ƒ‚¢ÐÛŸzgîâào„v ó74žfœÒËUòçÕ¬QŒ2¯ÔsyFô|Þå{ØaŽJma" @ø;|ܘÎöÀá‘£Ú÷5£ðøû=š)2ˆn‹¡KsŽ¢à4ûfœ=iò"ŠË¡UNu‘EqiIMx¦“—ò|GO7¹V_•b²SÐ_ÀR¡üPú­‚ò bæn€N ¸”qÆ=YO.¸5iE˜@Ìà¥öwÖ,®|GÐ~¤éðˆÚ |VäïðHÝM¼©Ìú c4âÏž“;öv«ëYFÒYµíèv’JôI‚;¾Ñ ¤8]5ômÙ"ù3b KÝ@XöºŒ~tE(r>ß0‰ {_|]íÐHéø ¿ ˆ/)PÔô‘Úwå Åb·xø¸ Î …b0U¡{óbO[ù3ˆÇ3{Ù½ŽFë©1$“FNj—È’é^…ƒä»í™,“øŒ+]d1ˆáÉéïݦžžBEŸ}¢– Ù“&ÃÛ. >—G•ìä°WÜØ0ØÙüùÑŽqegêß¼#lsÇÂvSCK%ºr$ly%¹X«bðbkˆƒmžºÓâXF‰·]ŠÇýÙ0OÛ3èî. 9NTïe–_ñC.ü‘Š]—Õ+ŸËêAÜSH©ýiê,8Ç_ùŒÞ\ð:ÚbtV¯»cÏ [òŠò¡ˆnÑ94Œg A5H\ãÏÇøÉÈՈ›8ÊR %`$hHþ6¼´…¥í,\Èc˜fŽs6F‘°š³|rCjåS.Ž9¢D+Éú¶…‚B§’Ô|á0Ðaü|_ëÝN'ïW„­0Ùý>êVó/Ê;MWbÕ»€Œ’õ^“äíZ‰¥þ" }©'GÄ/ºàAQÈ>˜ËktøîÓY:–Xñ,¨u¹lfl– }bÄùú îë7½²W°äõ¢§ç3”Q˜s£É@ˆ ±‰›Ô_üÉʎº}Íš= 1 .›@e:Ùt±q-u÷#†U Æ"ó¸ë’S½ªWSÇL–ˆÒfùćO>`hGLP€É+­è΃¶èéA󛣉À4‹Êò{²VšØÅS­”Ò%*:-˳>ÄÚÿmbÃY™´3¬|ôQæ‘3npô‘e":Ip`’&É·4-¿çL$ëôóßàïb¹óáøv׋ ûäŠö“^úÞOTŠì9Û[ØÈe´¼Qö0/·ÞÊi/_¥íâ–îeÌ Ÿ81°zkìH”Y"СYŽ£#ï“ØDyîŽ-¡?ÌäÐÏ› ŽûB·'3HQšôD"ËNÜÌó¤·Q÷þR‡fÔ¥<0½i¦g)¹¶þRÊR¼Š¸¶³SiCË,L$âý›ÂÇ1|XºÁ…"Ú^­C‘pI”æÞZüt>Í`¯õ^Xª óaÇÏ@ð•Ÿ?nøŠI¥^ô°÷ç$3¥±;¾ ègK­£K”(u8|~ 2ΫZ<ªÜ1wrÏEpüN®áºÜ¡êmt²r%yÌC5âñã"*’áYÞm‡‡÷Y±<ÈÚuñ5H5J@<=TZSDyYüH°³±?+ì¤K_Ľ¬™Ò§9„ÂlAË Üí;4?Süÿ ÛÓë¡7‹¾—üö¤#OܲKkâc‹¢œüûH>Ÿ³íáÝgNëc/·š_¥Éœria(t}>|ãûªwüX¡¬(#ÞpÇwŠŽq8°·žG{ërt×94ÎúÅ4O:´¼ûƒm6”¦dq9øSFCᥞ¢=ð7Gdþg#zî5W|žÇyœ$×èî|ÐNPb [èEÒµÞ¢«e‚«n¢){ñ-§¹áõ®ÕŒö£Ï/Œz÷)s¥§Õÿ³=å0Ûc5‚2Rr÷6¼ áŠo&KO)¬)™c…¥Ñß8D«ž–“û¨{ç[”;ž­ºâ$^ &^í>ùëÂR}«gÙ¨›˜æÖð9æW&úÀçÓÔº˜4Ámzã]åo¸ý›'|³ŠtÕ¿jCII(~Ë7zæþ$OÝûK1SÊGNo䢷ü0bӹܞÔüÂ)GŸ[uz.9(¼b+•³¿Š÷ëM)^1´š¾â_Ç$uxó†®?"ú‹mµcÖœ<Ͷ©‰ºcçëZRK0ÕG æIUD¿.ŸÜð™ÓV²¾£0É•æO$r#7@bGÓß—L0G­9x'¤×úKMRú1 ðÌØ %ËkRY©‚â¬;Ã’¯ŒÄïÄDî -;àæL?Ë f½„[d»ÈíãÈt· Xð†ÇyÎåâÂÀgok.ï—üµSy —o7hØ’”9’~ ““]fƒ…ˆÃ€A€ÀcÝ?|æY:3vŒ“äQlÌð‚£“}Êý}ˆo@xê*Dhù@ªP{öš„c®K=æêÞÏ|¢ƒód«áW¦”ésa »é‚.ÎÁÀ d¿ÂQù†vp4‹[éðréãLâûÓˆ ¥6Ê7€|l±Ÿ6œ Åÿ…×s]…¹R(7ú3^s"•s6ui”º˜È&V"ͲGôêþ‡ÿ'ðêë endstream endobj 177 0 obj << /Type /Page /Contents 178 0 R /Resources 176 0 R /MediaBox [0 0 595.276 841.89] /Parent 180 0 R >> endobj 176 0 obj << /Font << /F8 14 0 R /F56 5 0 R /F82 13 0 R /F96 179 0 R /F92 16 0 R /F86 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 183 0 obj << /Length 5076 /Filter /FlateDecode >> stream xÚÍ[[sÛF–~ϯÐÓUbîÆ-/[’,;q¤Ä#)™šÝìLB$cФ[~뵄 A9Ù‡­} F÷¹|ç;ñÙâ,>{óM|â÷òá›ÿx]œ•Q™™ììáñÌ™(5gEœD6±gó³ÿž\Ÿ'“Õø÷íùÔ%ñä6êoöK8Ùœ›|²‡ƒN.ÿÇ‘?¬àdQuü´ÍØØ¡ÛÁ¿Ê?%™Üâýé;8ÜcŸ ÿê¦o}vŽ'U3?ŸÚ2|_ÃÅí§Xaw}ü÷·ÿ§1\6qbá0¡Q¦™)'¯®àxzEšã›Íð¹8Ñò»;7Åä3óp^ØIÝÉìVxÓâüÞòºžM“$*Ó”Wóª¥Õz/Ã48CœmœM>­d„%Ÿ¿£CxÝÜ/ŒMø.Ÿ¹ù›¶|Œ«UW8ƒýVG^pÓk9 5_ûYFZáÓœ-¿¾#½vÇ]i(>¼Ç¡î°÷U„¯’cѱIÅYrE/Š{ÒîåAMµ†1¬™´ü{KÏ«ux¶Æ'Údr?“+4¹Ùyjàˆ<-1.Š“RŸkA\![šÄ²¡ßÁŸÍ]úL2u¶Œâ"î‰ÍÓ’ÞèH?Φº…ð‹V…XóºÀFÓMáD^§&7T™^ª¬s~+vºÐ,)p“ü@k®ëU53Þ-lBY\WØÓñH øðþ bý‰þÏùÚ+¾S‰Y¡¸íU>y{¿CU°“‹­>ˆ‡]Êñ=ËÐÓ†% µhÍ­¤Mó—ïR}ØÏY[áêŽ{½ÑéËÿù)e¹õç( kœ÷ŽˆžK"cS•…peERCkI2„Â0ui!·¬Étá!.ÖLd>ÍÄ~¤9í4ÝÜ6¤‚}¿cyÌAã,”Gó4QaPq4¶|6®8%nƤ‘‰­œ,ƒÊM»ÕU ñƒg¤±›ÜDzœÒ„¿ÌÔ $IK`Oñ”,ã uy©¶Ç­Õ‘]ÚʮŜã1ö¬¶Õ—á3AÀ]O.‚'¼ ¦9oHÃ;ã.è¶ÓMª÷, 8áy%½.{m[u8äç¦_‚Û¨?þˆ/"NºÄÇξH¶ß¾$f¨¢`Å/e$4ë*äxUŠ,<ˆcšN~o¥ÏÛþÖQg’–&Ï ‚~–…&yý„‹†ÜeÓâ¼?5|¼„wª´âk¾ý¦ò*ÝðŒèò;¹Hc‡š‹±‡FÜŸ+zÙé™´1†§½!°¨ÔwnWÛ_XvqÞT“3geÀ%—F#ÁÂ[Þ³ßÄ-Øê2Ž9ü‡ñþcèHE‹7c½S•~:OÅ8íF´2Ϣع¥´²SÖ’» µLžóS*™dI[7ô¯I qÉ7­w ˆ.àð:êoij ¼ê’btÚ­ð:ŒÇd‘ɯRá@Á dŸ\\À¾³¬“iw¾íGz%š =ñ•M'Ìõx‡w‚6wÔÔ¸¸œÜ­BAævšT/ðø‚˜xî|ûÙN4ŠÎ1B\Ô,| „q9zÔðdšžÜj€ñ!¯@êïa¢¢_çÊJ|EèHí^ñNz^ê‹C¢Ãn®õ ‹FÉ%RJ4q·û`á 4Šœ†SyÃŒÅU¼àOïö…ø±eˆû`¸K¤Ú3½µ pqÐG0¼¨Y(†¿±bX}²\΃5ÄÃY6ù¥« ’ó„n'!ì6.RµO¾áVÁùé÷*²8!éîŸ\ä`à± Ø7jü$±8üÐp0‡ÏðÔ"Q©ÉHÏ&c?àSd)¶Œø…ë’7‚uÜð³2«ï5X'5¯»¥zÜÃ0ãÊ?*4‘OkÅZV`¸Æ[Äà4­!-´‰A#¼Ý¼'s¾¡»™ô€à %D£yF0åiI´Ø>à÷›q£ì‡vߢ)Ɖùn%{ʳþYI²p1¨å‡Í“jå,äJ‘fÅö˺f÷A'D¿,|”7æ’LœG…µÒÊ¢ sR-"Mæ-lY wà„äôú<ÏÙUÑ?¡´nkKxÕµ™,rîâJ²Lãi a\ž°u|æ—Ÿä» cÆÅÐç}_«/§|P^j4k!nõÚ§C·7XáÂD6Itº?1™O^”°äŒ9ÀKIÂJ«]Å ìùñ>1‰)hÚýŽ7ªSĦ,b™ôü<_©»êøb*xvÎÍ×2 ‹›ç=hW¡‹ÎêhW¬M¢4I{O7MSæ¥Ú¥ð7°bÿP¢ˆ ×þÆ?÷$h½Õ«x!sCàžt¨ÖkôÀòÏp纵+Ïp·TÚÞöÃñEïhø>ûD5¹ABN}eãÉ/ODy8*]®"v;š(K„ªð*×Þ®n¼Js7‘3›R’<y’•dã¡ñjIóY !‡ç>âŒ%5Óh f.±„‚¦O:?ƒNŒh›öɳ»AÒ†ð±:d„HÆ#±NDŒ|rË–¶\£À­X8xÆhÐe"×C]Å>÷ G…4“Ky{j¹©«ßâ$U¸1/&±‹Ò¬'^–Ÿ‰n!š1ãnùU;•¹(ÏÍTáD JµR¥uÏ¥‹O ¯uy”—‡âË–ÌÒ—aèÇ^@ q²($ûùkw}ó]Ôßù†%Ivs± P6¿|¯ãõØs£8°ÏD ¦UQ¸T÷߇$!7yÒÓcZ5¹á^Ó[É©ôÍZ…M˜M¤¬Ï¨P:—‚ý÷FúÆSŸDC ð-Éw;Õ4ÜfË¡ZÌDjw^8jO]K‰s§y)ñüvE–𑯶[öœ èlæ9i¥};îç}_cObXfboá"9fø½¬4¾©á 4ݑ㠹þ€¦œ£ÞÅR¦¥1aÕ©DëÌ`"÷Up»UŸÿÍà–E”ö&â/A’ìÿ$Ió£´[–?›<ÿk0¤õ*S椤¨EÏÙà1[pñ¢Ð _ú,͇~wØ;â=ˆ Ü’»¢eÆd‡,ýF&>Гo|zïeôVŠî§÷L·Ä,!̓³x!W앺q)ÄŒ¨Ó_R|ƒ³@Õoðí[ÏÁ?ê¢üÒõòy¡Ýhð¶% m¹ÊÌŽlè-é0ëᬥØIZ¼¬ƒ¯Ñ4)YçyÏ÷lõ4 yáM!½­Ã¥ÖzÔ}ZX¥x€Ö¢ôâÛQ€DbàÝ4 ½Ï1?Nüáu€H¦—dÞ¤f„ët*ò*LߥIòœš“þ +!rP¡ÈÖô.¿‹tµÃtLÕHó?‡l­¬—hé¾òÑ“ð&W Ê[Qõj”Ó„ÁV '¼íò¾Áa’ âdÊ ¥úÃ9€ßjq’޶à8J˜}IÍó û¸ågPù7BýUE¢=p‚wqÅ!S5J–<Ûì$5äÒÄò ÝøVB»÷9±M6ËØ;Óq r·Uç´ï{ €N9‹K®4´\;þ¹ôkÐìÕ/-I%Í—0©t+û½V¯µ•éÞF|w*‚ej xK ˜a”ÌwŒ‡(+b³øÜHËÈôûB•5dOvê‰ç=‡€.ºÙÐX=qôÆ2ò”[‰èF“IáÉÈ7äË)ÝO€Vä]‚58.aªoD¶¼ÚÏzõéþôþ>}t’ÿN³ÈfÞ³ûáÍÿÞƒ)µ¦<wSzaÇŸíi“dÊ4*l>4Io5¶Yp Ñ{B‹FΫDtœˆ’iÿ.ˆ8\ŠLoûK×ÁíÿõI™ÌDk㣠v¶“7í6 ¡:i¾‰¸•ðCÈœ…2Ò¢+_æ&KŽÍ$y¢‰lé‹°#?ßvá‘/ŒS)Í€° q¨$]úº†Ð‡yP߈-Q~ø# X’ï¹Î¨Çñ8¬û¢kO¬º {EÇ£¬™K"—'_‡¨d³ÿ¯Ñh‘EE^žD£‰×ƒôÂ“Ž¹ˆlbŽ€”Gùº× ÀÃŒRbÓÌäVa‘.S,Óz*¹¯åƒŒãÅ&, Y¿b7¦Ê=+Âÿ×Z@U€ïñÉã9ß»«v|ÒAt€=}îgÅÄpÛ„úRñ°ÊºÄŒá*u?DzI“Ë\Tæ ¼ÛjUÑÇAÝÑGOƒwN#æCEúéèzµ’4j±®H3~:°† Q1˜=Dy¬"4 EÒò9?™ÚÆ`nhJ‘ ¨!®°$Ls‘£˜YÊ Å†Q´:Ôy×wº:<Àtìá3P± ŠçÊÉO·Ö‹^Ç+饜î Ê5#“09Y Ê=vüTº‡¢öÖ'©ª¾¸­”â¶rrTŸ(£¥Åq"ª™/® ÷Ò“*dM)Pí‚@nzä¯SvU•ˆÐk»÷EÝ2K±–Šˆ¨<]–ôåçeð 2i¾ø¨õð™‰òØËÍ­³jÞVŒìIÉòmÇà¸ËOAA¶VØõÍ\|ÑGG#¶ÏÁó“ÃR»´ z¦8)Ÿ“ØžÌ|cé¸õ˜7V_“J¡FÑ?ä}! ÷~´î(Xr‘½§„s¥¯÷ÌC©³/d’¼Œrú䔿›>ªQd–^å¸Ôë£tÄAl(ü*"Ïö/‘•¯²2%AToˆ[1Pš9(õS‡’ÃÈ-•qØâóÒádÁ&rÅ +¯(Ì‚ÖQù7PТ0CzëyL…4ÖóЗô,ԟ˨8ìDÖ7â}ö ‘rH‹ßÃDtRö¥n‰Ï'œQ²Qr»¼‰¸G/å Òa XÚÔ‹þ ͰšX„3M‚"v‰‚¿âà¤Ï†{ûôžìÚþ¢—›U€°cEŸV$y°ˆ8Ô¼¸$ƒÐ¢ÿ›Âd­œe7M»n ¹ø€uîê_Íýè×WœQŠŸýPÔŸþ“„‹¿Õ¡]öåÎÒçÕð²\Õ\{7eŒ§ÞIT˜àÞ¬[-ÿ¡ëDÉc¦5j'J¢ðF†HZ‡è¹ÝnP í òênÇþq¥š_Ï<:r¾œ˜`O:ÑPž |@tajC%ªªä"Þöé¼ÇmÞASY­SHÿ¯Q¶fðÍ•Ý×J'LGÍ*„×.~é‹¡aUÖÑçR Nì#$õuŒÀ;OcB̓X`ø3r1§\Vì¢Äd#Ò¼T®´ Ù |J`ÊŒ«`¤”HÊaºÁÇþ~ŒóAl#¾¯¿øÀeõO#Óç5Fëšlî­=W€ ›¸€lÀšåQÖÇ5sÝS"Mn[œ*›ˆƒ K¹¾¢% œ#ê™ãb)1|©_§”I_ÒÆ^,¥›§žË¬§BÞW¨­$w™QE'k2½^(dß—åQrXŠ¡1åKˆÎXâÑûg¾ûTmOT­• œöè{…ô裶äÙœÎe€dfådÞäJ’­dò:êoñþþ°D »\Ý™ó(íž®ìépqûè71XÌ1¬ƒò‡•\@„·2¶Ç)yn|¸­N²b4ÎRuÞq›Ä‚xxáÍ×ÎÇöÔp-ˆ.n•eò“‘o ç_ûàI:år\’OÞÎ?ò”¬¨Ï¼’Mg;&ú]`´V3»GÝ|$Áéºvý‡/àô˶æ†ð+½?“’ñåËÂïùãpñù«¥±ï%,XJÓçqG¿á¤<.) üzæŽóŒì<'OàÊË)–1«žÓË^qXSË> endobj 181 0 obj << /Font << /F8 14 0 R /F82 13 0 R /F96 179 0 R /F128 184 0 R /F86 15 0 R /F92 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 187 0 obj << /Length 5226 /Filter /FlateDecode >> stream xÚÅ[IsÛH–¾×¯ÐiŒ(a€Db«-ïm©Ô’ª:º¦æ‘ÅIpÒ¶¬??oM$@ÐåžË$& ù¶ï-ˆÎgÑÙ»Ÿ¢¿¯î~úÏ·ÅY–™ÉÎîά SsVDq˜ÄÉÙÝüì¿‚Oõã$ªŸ'ç6ƒiÒ~Íz ÿÚþÝW;ø¿‡¿ÇnÈ7¼Ú@{m“¡yÀë…tþ Ú!÷ý¥\™(Ž¡sGn²àŸ÷?8›‰)èqËjÅ?ÀÜÍén»ÁÍ­±³¦ø4ϸãÿqOóÀÓqùÎúŒ3?OÒ,Е_ã\\µâ)Kz’뺚òíKyä WiªÝŽfÀ çÉß}äc>;ã°LS>Ü70âëvro×m¸öߣ¥÷‡é@(ãQ*‹ÃÂæ@EZIO¿˜œ'iN—¸TC}ÀÖnMï@Û£eyIoÅ2‚}º"Ð%IL!Glr¡Æ/ñKliKGü/—™0Ïrh”a–Ya!$XµYÂëßÚ5mpY}uêO¤eÝí²a© ÿórb{Ž]çF±¥=Ò®QCµº•5=”ä³£û—^à„õ–^ ¿_6¸UÔ¬$w{ÖIôúr¢>æÜTÕoÅÓ (Ë kòÖÞŠβܸ(•ÌÊEed_J`×S\Á2IÖç¢K¥ïŸ‘I&i‘yLŠ"ø€Ì”ûÚ"ñ´EžwÈ3È09S¥­y!¼'‡¿Qž“¡k¼þ*÷*ø-wê\ÜQ³ØtÚ~Å÷žƒö¢b…ÄWswô¸äç t’• æŒÞLÒX¤A´AãÁÿIÈyR¤Jµ°LþR¶¿oHg4¸ÁåLû™´žW–}Öz%gÁ̯ï3O|@¼;f¼ódÈÅ=Òô,í æ(Š0+Çxž9pÙ¼;"—9i:¤‚ï»S”çýÑEðû¤HÕ \ØF±o»e¯¼IŽæYÉŠ LL±Üt3n]³‚ØuÀ«i‡FõJÞæœTXÓ.=e(ƇFÞÖ2°žõ”tý¦ˆ 7äÆ= Êù´\t»-‚WDÍy§kO˜¿[U˜dÍ{a5 ¢S”IðëÖÛêšÕ1º©=صW¬´s½3&ÿUY'Ì´‰À R†5[qîžvÈïÖ'…È”&´ÀÔž•\¯…§ùÁÏ£ÆÑØ¡qLŽøÖdÉ‹ÉO´ÄÚ0ÌëîÀ¦C9ˆÞÁ@º¡4ؘaïŠîDÁeØ û̆taŸ'øÛêù“‘·Þ,æ.fëÕ“Woð…7øîQ`Å “²b6 ç¶ü,í¢)Q\î¼õV|-/ÎèýÄc§Æepñ¨và3[œr~Š]Yæ‰W‚ý3ra©þI“q¤™Ò1Å GLjI ¶䣆ÅÕtÃ8âˆX3ï7;E:†QjÕ×þ<YÇíÅ|á=<͸$ç7È ¼:(¹W‘£Åi¼'AydçŒî\ãèJVÃBÄðÏ7êŸíô³ôV"‚6dœã·Dúᛂ%xZz ¶Ùʼy­êa6€½ [ìj)‹sTš#ÌTóz§÷³ª¨ýÒ]‘aú}v¿vv^ ð†¨ðÌC.ɖΉ;Æ:IˆyhËb²=­Ûä%NãÓZ¡ ÓlÄ Í®ÈH‰E³&!Ô \™5.˼cÖ,‹ÌêØR0*NU^²QìÝ·ÜIN9t¦iå&¡ –5µ‡{¼z汌fö"b„f=vlyÜ`£·“Z‘éòµìI"¦˜Û1^6L#Prcœ`Ö8ß|Š‚y‡Úý ÏÎ2nÁ»Òïa;Ç[vT%$dË<·³/ä›”ÒØŽóäŒÄVÕ#µ)ÓÚ˜—^õ gJŠŠý•P/3‚÷ÕfÓõ_£&AMf‹à“7ð¦v&€Kí͹ »ö?Hq¤€…ØZ˜wC>ö·à4œ-YÒð¬»L»•]ëW /)¦UD‰PxUóœév+üIÈ´ê©8x.éGøõ\B¼|CP@µÓŽ^¼Þ|Â`Üìª<œUвE\6+ze§(G]¤ùH}å¢É°ùV$ج&>9·qš\«‚õ£·êqÌE5÷|ÕI!ÿU¶k'¢¹ óÜŒG6¬v ¢’†ƒë•»„½à÷ý3‰/?¾æS Æýž½;wò-6k§ˆåÐÏuC½sÏþ ÃþñX( Èv™T­‰UÕ*„þLÇKb£“ª–IËcM[?;õF.¥„ëq/P=<ö‚`B/;E¼Œ8íi’¦Œ9¾ÐõÈðkRÁÒóÞ=&’Íc8¡!­¿¤PàIY&^v»÷Ó‚¡[̓fˆˆ@Ã݉Â'Žï‡DòX<_Õ•‚V¼6Bu/60&`düë^,™Å¥šlýnw=ÐU£¬YçgàQ<ñÀž?Mf¶çžuÃ~«~Bż´9ã.‚CÓE1¦“ÊÇ;‰_q«¹‘“³Ç‚¿×æì&ÊZz³daÙ¢CO[n°µ ñ?ÆEf‘, bdIÇÿ‹˜C9㈜I–ÑQÄì(`V¼ÄÑIÇ4^1D¿*²Z9M¡‹*…0«¸¾©Ÿ$6­ŽñÃ!pùN]¨¶]vw§Þ&ÏJ!½ÃŠ#C«¿u¿ª:´ªôpòˆ—V*Ï?–GŒâ ›{á4Áº§ZpÇJ‚±}뜲vpçC?&¯9© Íq_ÉP¥^;y§.ç†}«¸GÞãûøŠ±äyR–.ßc<„ƒ—äÖ¶{vKüåFìºY×B´eæ³SŽ5Ïc°ÓL¼øÉ¦?¦I˜$©%vÍ1.Q"¬é”¡$ÿànIQÆn^‹Ù ¨§GÿÄÖ†qþCÈÜÆ.æ)C“½˜òßæwã“…æaM&ÜtÛ·j"‰äæ;OzLÙÅ/€wV­Œ¾ ¹«ãéÈñô˜Ë›‡yêÝí–ÃÀøUdFÙ˜¹{£¶g¿Tt¶æ~ÒÇY.e@ëçšCS¢Æ{ìþê,Ú_š-p¬†CiM8º²qì©üº9‚ët>rŒL÷¨Ó5HìÎx' Ú‹´ n–Œš8¥F™sξ¬{ÀGòuNwÕ­*ŒH`z“ÐÝJDÇÿ‡‹Jú(é Å¿ÃjõV½XXÆc@ Ùെs9 Jþ¬²áù¥"ž•¾Ž¬¤HpYë’Ž5Þ䜧|‡ˆ²p°/t…Ý÷Ko3èï8 ~sÐŽ¨Ê—šïXU¾¢?VÙI¦]ª$üŽÅ½aŽ'Á@t¼ß…Û™ BšÄç`~@U&É(æSFÁpé{ö‰W¾yŠûþ棔‚†ÆðÆ?Ci¸ê©ˆÝ:wŠ·2H}(Õ”žI³´HÚ…dÐk§Æ¸¼c5e=öUœ–• n*¸.£€'WÈ8{F` †\4ãê1ã#žõ¬ï®zC@–P49#çW7ðýWÙY¹jdt¯Š®ßÕMÛUj¿dJ¿À¢H{µÐÙ´R2ƒS\ɘ±4Þ±Fu3¯vlZj—ñ_H…’÷V„¢Œ±dÉ Ìq»ÌÂ,vÊd\‘S‰Çf¿ðu$¼i–å0bVýÊ$Už ÄÆ„iVU5žt«yñ‰+§PÚï¹ÌOm®ÒezÆöa°/K)MÃÙ7ºÌ¯ªÚt"Ü+,ÃË»~ {$ú†£>ö'q #·qå!˜ÖÛI¶bd)#ªj»õð§ÖìÞÑWú€ß(Œ'[u©ÛžîܩɠR ,Ù»â(ƒZÆ÷dH#Ôý|úœJ…jç5Ïø¶$ r*´g­m…U¾¨Â’r·{-«˜Ÿ,b‰,™Ÿ¹%V¼Wçe'å$ÎëÈÙi¼÷h4ã!å4‚m)m:Ä,JÍ«®<‘ ƒõ|C§x³o”nF ;ÃܺøÐë.‡†¯@õ#G®ÇW5xîF]­er÷ÑcÓw‘Ó°(ã^TjXÁ ›Ï<üg8å#þľüB1ÿ¢ËšvE›ù÷Bü<À©ÉñJ3 b¯DNÄ# Äb’ñýFk‚ß—*B›Jˆ:= cyÕI Ä.ÒFÚ{6óÂVp𿇼xW§˜úuŠèøÁø^bWÝ9’íÇÓ[^üËÒÕpóëgƒ’º43Cšž"©lë¢q¢ß¯0«;Ù}íìÈ>÷QE+{é¨T]ZÞÚĸ:´K7Ó«“¥Ì²(FŽ~A…-_©˜SœÌÒ`Jµ¾P—'ÕŠâ¬K¨@{ªõÇ^‘t}»vWúù±FW]©Ù5Z/¥ÀïïxlU/p¶w9wçQ ո™JD2ëøðÒ¥Qž¼að»î ÝïÏ ÷Û.Í눳µ˜)¿½ô¡›F<%nµâÑ•BìCDV’‚i°a0©äD,’…‚ß4Ý•ë–yR›gyX&ö,ä#{K™”b…)p7lƫΪƒ"’9ß¹çgÀ+~¬“¨wZ= àuÓŒMš HH#Ö`^•e³TÇ|Ôöq©Ñ’±ÂØ ]æ 6Ú÷F´F-û^tåâú"ÄÏÕÉš¶82¡ÍN† ÎÅqËÐòœñÿRHm˜åC˜ç1—R”¬R^ølÝé `÷µ ê…ê ¡\œ`n•*bäCû}…yÔ¶‘l„-VQ×èç0Y’“­,Kz×f«è¨:'¿Ã1,ÐöÊÀWG†¬» ®Z*s©8 -ÎråÏ‘"íYéãWµ&eØ\`ç…«3QX¦šîcŸfÕŒpY†uG»9êðì^lr2<ç0lÓ1ƒí%i ƒáD Ôá·wûC@ö½ë*T ; žÄ®©LsÅW…Ƈç®HAnk FOuå«J}+nt.ƒµ/¼µñ$ñÞ-É9¦q³Ÿ*÷5AW÷R«ÃåMõí›S3›wC9>)Ï•"47ÄIJŽu1ÿ~d;;tŸœø@/äÔ™KXã.¸M2\i{IŠ^]^R ö¡ö…ŠT1tÝøÎ´!¼5beËÒç©w”ôܹZÑj$·Ÿù®K—¾:Z8Lbg/ØÕÉÝ7ŒëR©ŽXªR8¬Gê3¿fE†ñÒ­¾çlX ꪛ§ÁÑQ-y%‘:ý^Ô½‹çh‹ûî‹KµX>ß|9pà/Ñf›;xŽ$àžÕo¢,z{TLÒØøxVÝç·‡«“ËRÕ\õM•îhòÅ$a‘¸àü­ŸNÝȧs¤–¹ÏЍßí=ÐD©ÍÏúÉ#Éí2Lí0·žUñåK~Ó©ª¶" [+,'hÍJ?‹‰¢®°ÚWKMÉtRN³Q…óLT“.¿:.ßÉçfú©™éûÃç4Bi¼Õ—ì2èRâòÈñÒQ@¢Ÿ*©ÏH¹ ª4W€ê}€»ŽCÛ«•”¥éêê¡=ëf)L¦ÛdRá·¦•Oh®¹—L¤8¿ÔΜkxô‘¨ÖÍ:+·÷#}ãë—Ô³ªö‹èEBœÁv‡)ÕøœËåùĆQÿk˜ÿsÂñ ‡wø‹³Õwa¿Ãø8:¹ïž?¼–[Ö€‹àé’¾Àá'i㧦 ‹¢Êì¸7êÍÝOÿ g³þ endstream endobj 186 0 obj << /Type /Page /Contents 187 0 R /Resources 185 0 R /MediaBox [0 0 595.276 841.89] /Parent 180 0 R >> endobj 185 0 obj << /Font << /F8 14 0 R /F82 13 0 R /F96 179 0 R /F86 15 0 R /F128 184 0 R /F13 61 0 R >> /ProcSet [ /PDF /Text ] >> endobj 190 0 obj << /Length 5165 /Filter /FlateDecode >> stream xÚ¥[YwÛF–~ϯÐé‡>ä9!µ`Ë›¬Èv»=–âLg2 ‘Œ¹hÒ‰¬sú·wÝ­ªŠ3ó ¬ºµßå»·.Ò‹åEzñê«täùâö«ÿxY^TI•ëüâöþÂê$Óeª£ÌÅíââ¿'7S5YoÝ¿_Sm¦YšNö_Og63“ï]aâþøç•{­Ûz:ÓÅä_ÓÌýßA ×¾ì×P·pïºÂê»ú8uï8ˆ-ô¤ ´4Ž#-]u–º_:Uƽ*ª(L:y³Çq®¤Ù¸ð·v0Ìr:3i6ùU;‡¡6¿¦&Z›Mæû£+hÝßߘúÿŸÛïÝ®èh[tU&¶*Ýžá–\NuæG8mÝÔ /·dœõÃ4sƒPá ÷u–ë¤H+é —k{up÷S·ŠßaV+*½ƒ‚G¦Øo±X)ŒtºÏT÷rZšÉ‰Wº¿{|›7Ôâ²mñô`ÞÛf7u|u¤š7PŽl)‚†£ÝãžÀ®Ó™u9ÊÍ~fr;ù Ƹ“_ï Û=ŠÏ7Ó•f8o”Ü#NÏÆ ¿¾Ù瓟Z<±%uu¹«¡ŸGnLÛRÕ‘Žº¾†%Iý™¼ñSqpDnV0',½áîê_S•£"clb³B8óÝ^,jMz‡¦­ Ò°þ2Ÿ| 86<èND¨F­…ßË!Pƒréþ÷y&ÓVççã ËYJQ—Lѹþ;ñÏäùšç܄͇8“IeU¢ò¾Hæ,’VD²HõSánD&•ÓAJës™Ä­_.Ðþ:õÚ?5“×üôÆÃ½ÃÔ÷$ ;nñ*´¸¯ƒ¦#wæå’êwû*W7ø¡=Û_86EŠ–'G0ÞY¡Íó¼GtÛ†ô·PòLYVð}ÙÀ` ô^Kk`j¨[Ôk6`T0{¶òfVƒÆøí$œÝà†Œˆa+ ij²ã*#3Óâ&œ³vV$•ö:÷g•øU´¼òZžøØk”ÿ9™7šÁ9W)›˜¾¢·•(úTØ*WEõ”«ÊŒ2V©­”ýé$‚¾óì¢tƸŸ?ÈÑ–w)/#²k>µøÛ)Ȩî vnÁ“Þ…ÚÞx7¢ èxk.~‘õ­òÉk¤= Û±€2 È6×›Çæ¤Kù@Ö-Ñ;­‚ÏvEì©PãcGÊÞ ã´c¼…-ÖM]ðáz²–q¾Š5 k;W}Àf0b#A"ƒVbAÄsìw.ó]ŽÝàÂÛ{®›²2Öx ïàuT‚‡´Ý/QV`ÁF*}ÇSy&Lô4*r4íhÎJÕëù5î>'§—ç‘*Þ±àœK„Î’4·±HØ|bKX©è°o@6LV>‘m°Ö$…²Ý3Rn6cÂ"G‰Ê- I´Â%?¯g˜"ƒ€ÓN#<"xbPÚ2퇈ÖÃWþbî‰ÊÉ/ŒV\y`\×:Dv»âCvDw¨ñ´5-kWsÚŽaT\ œ!Åóph/§e®ë;>Ô²¡AÎbV/›Œ`ÍïkDÔé× Uî¨Å)ŽH϶絴¤õæç»b™Õ®‘YZ âÆ=,× Šiý˜4M%ØÝ‰Hò‰DC,®S“TA¡• )ù¨’±¸ZÆTljŒ¡kë¶yÀš•IUzIÿÔm9¹¡VÞ'©ÎÙ‰ñj–6¸´ßíØùAN[x?ÍU½kØ@R§Ÿ.èx~\³7Šò¸&/3vÊÖö‚:u;©dâÂ8ñ^‰ Qƒ÷ç]TIa}ýÅ!œŽüˆFaÙж“,1!žq‡¯A˜ÜÙΑ“6…C ¦wдFq}Ñ»qÆí&‹e¨NÑ&!@ùä WˆHÿ!è£w6 I øªÇ¤“NgÑ–µ–«xu"dÊJ¤±æöï9R5w#ßÚ8ãXK Pm¸1Þ¾yOm'r5—x èóµ¸5§Èvb=É7;ˆ’khoúú&ï¹<'L(ÚWäÄùÄ*OJãÐ;47lçðpÎ¹Ë V™öuFÉ›XˆÆ€%çe6n¸”uöáYË aR;ù§;]Eà)­º ¢«Mˤ¨¼Ø¼ÅÙ£¸Ý3«'ñ:Ü´:@WªFwÅeµ¥‡µÕÕ ¥íÃ#®:Å;"‘^ÄÓi41)™ü¹Ìgy¢ld~fÊ tN̽»îi¤awnb»æì)WÁóÒ³G}X÷Í×â»!²L8ã<Õª(»îªö˜MFZ,™ß~Ú‘*õÚ„°£ÀLç0JT±mÅÀ´ì‰ÃÎ="So½y2Ñ{?E¦y'†,4  /©ª°QØÐ!uâŠÎÕ[‰kŒ„Ù¼èº%·(\™Ï'zoÐ]“²:t3Nä&Ezzì@p!"½ãà ].ƾщteß ›ÔCRbó,QyõŒ“㜢LtZtyá¸j¼ÅÌ)”vˆ£s uêãa ®‰6ŽjÅܶb‘\?+!*+’Ò=­“KÅØÌC•Üáåb<€â4RéPW‡‡> W¸“Øfû·ØGÛ³C8#74ºPÚó¡³r²ªÛ8lK­ád®/é=>^ qZxT>F1ºÀ€E¼sÜj'¿±¡v jàå;¶O@{ ÆäÁÇL;ܪY¥ì™t'0õ±e*îXž×"V‚š(È´í˜WÔ+L 幜ÌP Ÿs,0Lï!° GYø®²‹Svùð z?a®X‰ŸV\×újáÚA䬭a™î#ç~˜8+žòQVÔŽ§Æ3ú¬ˆbŽû&D4+z}Ëà98ýzò~-ÇÞóBñ nòmhø8}Æ¢ª²L¬uã!ˆÛòø„-‡7Ñýí&îgÿåf(¯“¬Ê"{Føæ!Ò5»%N^´e |fï ];½À·=®”€/Ljƒ;¸œÉ®¶ä0óe¶oØ$ÁOF.6ÁrÚ†tÀ¥u½ôW „¾èLïD-ÆBýŽË܃[ÆpÁÛP3;ª~[}ä¿Þx.`Ô´Lr{¦JQÞ*å¶zÊs=ª Ò"±Å€&Øã‹ãâ€ÌUB—ïW|‘ e?Â*V»¾›5L{b…¦«AŒãÕ3ôOñR´!Þ=1Ñ%¶µtã$£K\7\íÂu ˜Í5S¾‰G4?…D‹ñ|À㯄1?׳÷3hɦrýËîZ^íCÊÀ½¿–j6‚»#Üö*´‘[ O²4ÜþÅ«q?_£d~ïÕíÒU\¦tü,Q°áž|¤Ϲñ¥¼å®cºÒ^m°~‹$7pLíoS¬ø¿šnzøªæ:»éÚâšßHJl"€\(åÃÔõƒ)DàÛnlÚuQ_ …Þ-Äã‘ÍÊÉw>ÈÖQPEÜ’ƒ ¾:™{ÍÕ¾¨C†ªÐIb=+ŒÊ…!Û9»A›ú\ˆ3“dÆCK¹Ðq£½‘ù‚~Ÿþ°"«™ð%¥4Âäí 95U¢‚ãüB@ÚT¥ó`Ø6§? 8ý{Å™$ôÓó¨Ùè$D¿fT_IÖ¿FÑ.[rxEýï‹”T+éÆÛFƒùN_3 ¸ñ÷¶þ?Ñ3ǰ'n-îûð™™¼Õ-*ù#•ÅÁ»cÙÖÛTBßµ¡rI£p¯oТyŒ«ZÐWßàýeˆ©xO ›R$#|1‰ çyüDgI^é܆µ«mÜÏreӰ츲¿Óã†.]x³•·K¸Ti¢Ê^ÞÓ_>§‹º§Þ¢ª0 Ï)¢Û¬f”QDñs±BpнÁ[—s;VBên?æœé>ÊÖ¦,Ÿ´MGq6\ºÚ2e–L1³!=ÑøZr)‘ÐxàTĉ)1c9ÜûöùÄ«"Qb0è° iŠM\7s>›s6)øž–DŸf‹¬Ã­¯K?sÞ&6ºÊgoxæ ²n f,Ïã¬[\­*ÉUÙã]ö“eUY<9åÈ–-ŸÑÆk σ^N¬ad á¥õœÆ÷]mûÞ%'îa”ÌgÉpîÊ{$g}[ õx–ÙŸ¦ôe”ÒwŠ¢Ð¤°êžY%+çr`í'¹"‡M {µ•ˆ²9H]ÜŒÝSysy”‰ð•ååöò6º±ÿ>oYçÉ{€ÿEÉÜWÿwž’ŒÜg{*óT8Ø6ší,™4Ažc˜™Xy¤žO ;Â'9ùŠûÃJ<²ÜR‹çèšRàš®v:ŒRHfÚ@ŒÎ”é5¦,"1ËêQøbub–(sÊ}ãñX7ÃqSù>;Îæ—ÎÞ~–VU”%L1‹T¬…p`¸nìøMáR_<_rrœcŒé–81R²îXú›“)7ª÷~£û¼öI²òXSˆÞIÂÇ5pŽB+çˆNe3”#‰á¡ª,8‰ýÈy ¿8GJB¹(C$6èÛF?ðÆo峦ê£÷ 9Ì‹4jú†»&H« ¿H´C‡-âÚg’ã0˜.èüH­ËÖ;mœ˜Âþ,'ò•IÕ¿W"hP÷ƒüŒ1ΧHrs–¹NlS£’š;×·2ÿ`Û‡•>g/åZÒ‡ŸŒ*&¯À R6DÞU惱ǘôA{×ä–Ÿ=O8Wö!–â6ÑP}„Ãiª²¢Ï0&óù‘Úü/È«¤ýaLâoSåÀ¯¢¦ösÔ½mKm7\)iŽ+žµÏæ(´ ëíj¿‹«&¸ cßOó5÷>?k0nbmü‘Ìÿ?E¡ŠS ›f£ÜR§Cªn9q2þaœžürž†_wóð߉LÝuó1#— {j7±àu2óë»u„å†Ý2ÐÍ~†â»˜„³í÷>6ÃïVZŽÓËH5B8ð?˜õ?xPZ%…·G°îx´\ZM^Q6ÅŒ5‚㌢êe´Óp3çªkçfyß™TEßC(LõTŒŸ8ðš6£'^ð‰—|âqˆË܉§K‡^¤!RºŽòqýgÔA}æý`1e&–“vO‡Ž?‚%%@3›‹?4G –wðUô!ä?Ê-O9ÑL4Ì:Êv‚ò‡‡ˆïº·ÉPÏQ4x} ?cÖè#’ç>ã¢ÑÏ!©é‚“ºŸN±Y[súÚ²ÙûW»5IÎÉnéóÏšø[¹%‘„• ÞŽ]1鬓lw³—e÷½œ—ði GÅëñO+‡Íª> ÍÌÙ½²MižOôȲÑÌL“çIšöxúººÁÀž-Áã!{e«Ék w\{}Ýç~ ‚Wç·?Ðä=X:›u> ´%ï†+ÿA> á>%hl³a4lKE˜ Ê|GêÅ3¡7ÿ•b³®Ï!D™’¨ mýg)”ÂC…þ³ÌI%_sà/XâXÞžÇg›MØ~)k3‡nBvÁý9ŸØ¤*U3wôb§+ç¶èðAÛ€äl¥×ÔTi¬àç©eŽ«vôÚxUâ?àÃÕÇUhEŸ·ø€t7›ºbwq޹×C®îaÄ~Ÿý¢EWi’ëèÓf€¦ŸüÕSôMh¯5+´Î7aPðçß„ ܼ¤‰Ê‹/¹zÉ*úÎÅt$Ò#;}¡­ë²Èœ»Y%eYò½î]ß~õome®/ endstream endobj 189 0 obj << /Type /Page /Contents 190 0 R /Resources 188 0 R /MediaBox [0 0 595.276 841.89] /Parent 180 0 R >> endobj 188 0 obj << /Font << /F8 14 0 R /F82 13 0 R /F96 179 0 R /F86 15 0 R /F14 31 0 R >> /ProcSet [ /PDF /Text ] >> endobj 191 0 obj [645.8] endobj 192 0 obj [674.4 703.9 1044.7 1059.4 355.6 385 591.1 591.1 591.1 591.1 591.1 948.9 532.2 665 826.7 826.7 591.1 1022.8 1140.5 885.5 296.7 386.1 620.6 944.4 868.5 944.4 885.5 355.6 473.3 473.3 591.1 885.5 355.6 414.4 355.6 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 591.1 355.6 355.6 386.1 885.5 591.1 591.1 885.5 865.5 816.7 826.7 875.5 756.7 727.2 895.3 896.1 471.7 610.6 895 697.8 1072.8 896.1 855 787.2 855 859.4 650 796.1 880.8 865.5 1160 865.5 865.5 708.9 356.1 620.6 356.1 591.1 355.6 355.6 591.1 532.2 532.2 591.1 532.2 400 532.2 591.1 355.6 355.6 532.2 296.7 944.4 650 591.1 591.1 532.2 501.7 486.9 385 620.6 532.2] endobj 193 0 obj [1083.3] endobj 194 0 obj [996 1109.9 1007 867.4 1064 1110.4 626.7 772.9 1138.9 955.6 1284 1075.7 1047.5 875.4 1082.2 1030 856.3 832.3 943.9 827.8 1279.2 1112.9 824.3 943.1 597.2 597.2 597.2 1361.1 1361.1 597.2 774.4 633.3 649.4 739.7 677 684 700.6 827.6 533.6 588.2 758.1 480.3 1228 880.8 702.8 739.7 658.9 671.3 670.1 563.7] endobj 195 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3] endobj 196 0 obj [611.1 611.1] endobj 197 0 obj [892.9 339.3 892.9 585.3 892.9 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 585.3 585.3 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 892.9 1138.9 1138.9 892.9 892.9 1138.9 1138.9 585.3 585.3 1138.9 1138.9 1138.9 892.9 1138.9 1138.9 708.3 708.3 1138.9 1138.9 1138.9 892.9 329.4 1138.9 769.8 769.8 1015.9] endobj 199 0 obj [499.9] endobj 200 0 obj [722.2] endobj 201 0 obj [458.3 458.3 416.7 416.7 472.2 472.2 472.2 472.2 583.3 583.3 472.2 472.2 333.3 555.6 577.8 577.8 597.2 597.2 736.1 736.1 527.8 527.8 583.3 583.3 583.3 583.3 750 750 750 750 1044.4 1044.4 791.7 791.7 583.3 583.3 638.9 638.9 638.9 638.9 805.6 805.6 805.6 805.6 1277.8 1277.8 811.1 811.1 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9 888.9 888.9 888.9 888.9 666.7 875 875 875 875 611.1 611.1 833.3 1111.1 472.2 555.6 1111.1 1511.1 1111.1 1511.1 1111.1 1511.1 1055.6 944.5 472.2 833.3 833.3 833.3 833.3 833.3 1444.5 1277.8 555.6 1111.1 1111.1 1111.1 1111.1 1111.1 944.5 1277.8 555.6 1000 1444.5 555.6 1000 1444.5 472.2 472.2 527.8 527.8 527.8 527.8 666.7 666.7 1000] endobj 202 0 obj [1027.8 402.8 472.2 402.8 680.6 680.6 680.6 680.6 680.6] endobj 203 0 obj [777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8] endobj 204 0 obj [446.4 446.4 569.5 877 323.4 384.9 323.4 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 569.5 323.4 323.4 323.4 877 538.7 538.7 877 843.3 798.6 815.5 860.1 767.9 737.1 883.9 843.3 412.7 583.3 874 706.4 1027.8 843.3 877 767.9 877 829.4 631 815.5 843.3 843.3 1150.8 843.3 843.3 692.5 323.4 569.5 323.4 569.5 323.4 323.4 569.5 631 507.9 631 507.9 354.2 569.5 631 323.4] endobj 205 0 obj [742.7 647.8 600.1 519.3 476.1 519.8 588.6 544.1 422.8 668.8 677.6 694.6 572.8 519.8 668 592.7 662 526.8 632.9 686.9 713.8 756 719.7 539.7 689.9 950 592.7 439.2 751.4 1138.9 1138.9 1138.9 1138.9 339.3 339.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 585.3 339.3 339.3 892.9 585.3 892.9 585.3 610.1 859.1 863.2 819.4 934.1 838.7 724.5 889.4 935.6 506.3 632 959.9 783.7 1089.4 904.9 868.9 727.3 899.7 860.6 701.5 674.8 778.2 674.6 1074.4 936.9 671.5 778.4 462.3 462.3 462.3 1138.9 1138.9 478.2 619.7 502.4 510.5 594.7 542 557.1 557.3 668.8 404.2 472.7 607.3 361.3 1013.7 706.2 563.9 588.9 523.6 530.4 539.2 431.6 675.4 571.4 826.4 647.8] endobj 206 0 obj [639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.6 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5 484.7 715.9 571.5] endobj 207 0 obj [524.9] endobj 208 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 209 0 obj [590.3 590.3 885.4 885.4 295.1 324.7 531.3 531.3 531.3 531.3 531.3 795.8 472.2 531.3 767.4 826.4 531.3 958.7 1076.8 826.4 295.1 295.1 531.3 885.4 531.3 885.4 826.4 295.1 413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8] endobj 210 0 obj [611] endobj 211 0 obj [813.9 770.8 786.1 829.2 741.7 712.5 851.4 813.9 405.6 566.7 843.1 683.3 988.9 813.9 844.4 741.7 844.4 800] endobj 212 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 213 0 obj [638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9] endobj 214 0 obj [645.8] endobj 215 0 obj [583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500] endobj 216 0 obj [562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9] endobj 217 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 218 0 obj [599.5 571 571 856.5 856.5 285.5 314 513.9 513.9 513.9 513.9 513.9 770.7 456.8 513.9 742.3 799.4 513.9 927.8 1042 799.4 285.5 285.5 513.9 856.5 513.9 856.5 799.4 285.5 399.7 399.7 513.9 799.4 285.5 342.6 285.5 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 513.9 285.5 285.5 285.5 799.4 485.3 485.3 799.4 770.7 727.9 742.3 785 699.4 670.8 806.5 770.7 371 528.1 799.2 642.3 942 770.7 799.4 699.4 799.4 756.5 571 742.3 770.7 770.7 1056.2 770.7 770.7 628.1 285.5 513.9 285.5 513.9 285.5 285.5 513.9 571 456.8 571 457.2 314 513.9 571 285.5 314 542.4 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4 742.3 542.4 542.4] endobj 219 0 obj [657.4 657.4 986.1 986.1 328.7 361.6 591.7 591.7 591.7 591.7 591.7 892.9 525.9 616.8 854.6 920.4 591.7 1071 1202.5 920.4 328.7 360.2 617.6 986.1 591.7 986.1 920.4 328.7 460.2 460.2 591.7 920.4 328.7 394.4 328.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 591.7 328.7 328.7 360.2 920.4 558.8 558.8 920.4 892.9 840.9 854.6 906.6 776.5 743.7 929.9 924.4 446.3 610.8 925.8 710.8 1121.6 924.4 888.9 808 888.9 886.7 657.4 823.1 908.6 892.9 1221.6 892.9 892.9 723.1 328.7 617.6 328.7 591.7 328.7 328.7 575.2 657.4 525.9 657.4 543 361.6 591.7 657.4 328.7 361.6 624.5 328.7 986.1 657.4 591.7 657.4 624.5 488.1 466.8 460.2 657.4] endobj 220 0 obj [531.1] endobj 221 0 obj [489.6 489.6 489.6 489.6 734 435.2 489.6 707.2 761.6 489.6 883.8 992.6 761.6 272 272 489.6 816 489.6 816 761.6 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 272 761.6 462.4 462.4 761.6 734 693.4 707.2 747.8 666.2 639 768.3 734 353.2 503 761.2 611.8 897.2 734 761.6 666.2 761.6 720.6 544 707.2 734 734 1006 734 734 598.4 272 489.6 272 489.6 272 272 489.6 544 435.2 544 435.2 299.2 489.6 544 272 299.2 516.8 272 816 544 489.6 544 516.8 380.8 386.2 380.8 544 516.8 707.2 516.8 516.8] endobj 222 0 obj [606.4] endobj 223 0 obj [249.6 249.6 249.6 719.8 432.5 432.5 719.8 693.3 654.3 667.6 706.6 628.2 602.1 726.3 693.3 327.6 471.5 719.4 576 850 693.3 719.8 628.2 719.8 680.5 510.9 667.6 693.3 693.3 954.5 693.3 693.3 563.1 249.6 458.6 249.6 458.6 249.6 249.6 458.6 510.9 406.4 510.9 406.4 275.8 458.6 510.9 249.6 275.8 484.7 249.6 772.1 510.9 458.6 510.9 484.7 354.1 359.4 354.1 510.9] endobj 224 0 obj [625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.3 531.3 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 812.5 593.8 593.8 500] endobj 225 0 obj << /Length1 1697 /Length2 11883 /Length3 0 /Length 12971 /Filter /FlateDecode >> stream xÚ¶Pœk-Š»»Óhpww‡àn 4îîÜ  ¸»[pw‡àîš‚ÃåÈÌœ™÷ªî­®êþ×öýíµ¿¿©È”ÕEÍL@Rö®Œ¬L,|qE1mV ; •º•«-è_r*M³‹•ƒ=ß?,ÄA@×w™ÐõÝPÑÁ çf `e°rñ±ró±°ØXXxÿeèà̺[™™rö *qG/g+ K×÷<ÿzИÒXyy¹þtˆÚœ­LöE «%Èî=£)Рæ`jrõú¯4–®®Ž|ÌÌL@;&g !Z€‡•«%@ärv™þh ´ýÝ@ÝÒÊå/…šƒ¹«ÐxØZ™‚ì]Þ]ÜìÍ@΀÷ì5YÀGGý_Æ 0þ>+ë¿ÃýíýG +û?¦¦vŽ@{/+{ €¹•-ðQJÉÕÓ•´7ûÃhëâðîtZÙMÞ þ,Uß;ü»?Sg+GW&+Û?zdþ#Ìû1KÚ›‰;ØÙì]]þ¨OÂÊdú~î^ÌׯÞÁÃÞç_ÈÜÊÞÌü6ÌÜ™5ì­œÜ@²Û¼‹þ#³¹8YXX¸¹x 'ÈÓÔ’ùê^Ž ?•¬ˆß{ðóqtp˜¿·ò³2½ÿ ø¸ÝAWg7ŸÏ?ÿXYfV¦®…•=¢¿‹Aæá÷ù;[yôXÞéÇ `ùãóï'ƒw†™9ØÛzýÇüÏ3+«¨¨Ë+ÐÿÝò¿•bbžFN.#' €••‹Àýþà÷ßq”V×ñ_Y{sï_徟ӿJvÿ›4/-à¿c)9¼3 ùÑõY8YLß¿XÿŸéþ§ËÿËÿˆò%úÿV$åfkû§žæ/ƒÿhgeëõ·Å;sÝ\ß·@Ñá}ìÿ×T ô×êŠ9Øšý¯NÖø¾ ¢ö¶ÿ>F+)+O™²•«©å_tùK®ñÇ¢ÙZÙƒ”\¬þ¸ZŒ¬,,ÿ£{ß.S›÷ëÃ哪@ïËóß)%íMÌþØ2¶÷ ^ïC~GœÖ÷u4yþÉb3“½ƒë» à½9?€¹ƒ3Âåâ0‹þ!úqs˜þƒ¸ÌŠÿF<ìfµ#Þwð?ˆÀlúoôGÌfÿ€¬fÐ €ÙÜêßóèàæüó÷Dÿ€ïZýò˜mÿß3Ûý¾ŸÙþð=³Ã?à{.Ç@ó?ò²¾'rù|? ×ÿ”ùØÕ㟱ÞÀíð½,÷?áÇÔÍÙùý’úsÞg÷/üçy‚LVLùC¬ëC:îkE =¦ç©´Òh}Vœ;ÝQ`Shk2?m9ÿMíC[ß“¤¹Y%}ñ9km„ oKRiò}6ú¬:{ÐŽ°<ƒ34]x&Ú0H OĨ.rèûâä«dÙ Þ-G•ëäÆƒ¢œyï1 íÙ0X¾6¶x rXÃ%ø\>Ç«£Tò*Ï$kÆ•‘ŽãÒõûíïyŒœé7R¹Ïô~ç±ìE>ºÛlq Þ•êl.=ø”øºxÄ·³Ô>bÇ_äp—|J‹c¶—²¹#ãGVCä5ñÉý•ñœCÊ3º1){r [q{þS%õ‡Rû*|}ãz•è`¾c”ÝÖ>.[|{Þ0;ƒŽË+†3æÕÒ"}J.=ú É(Š¡o1ŠyÏi§ë™$žwjvËñôoévDî½Ù?”SϤp‡\²¥®ÃDuSAÓÓ¤Ü|µ 4®Ç“Øze®H±¡ÁMŒ‹·ICs¬Aq5þmx"ÖÿŽ·»P§/䪃iô»l<±ñî Ó”ªÕŸ‹lAÎ}ÉÕ/m˜×iÑãpfÛg/—+ £zÊe* ]1$þžZ…±ßñÓчHê¨tEêzîFôVô/®º[OPúÎľœ)Š%ß8É>ÑuÕ vŸ¯ž ÔÆL¥HÄÅ40´+\›[Ó'>ëêìÿ}–3šEîÉÒwgIY±å¦'²ê·s¼B¾Œ0j&ûY’ž`Ý}hp8èÎÔëêÙ ‡]‘h#Ù«c›_SìgÎÄ’C¤®†øQ*B´²d´xû{´ß¢%ÈþË@É®$æçJ²‡ ñg=ωIÏjû>q'Š& u«6&´«{­%æ+«º`ayãÕÑì¼´•Â7¿ þ©îÏõ¨•I"…1B‹25•½gOekvö¼¬éŒáw¹OØezh‰à•?‘û‘Ž\­¹áØ7¼v½‹Cv„u/[DU±”Ŭ„®÷gΊ.Î×Ü#4¥ôE-mêÒš«¡·Ñ2y Ha Ò¡..è`º‡ˆ#•d TÜKx9 ¼Ûß"9–îì‚Pö<´ÄY§[&Ã+Ù°o“4·Ë›4…ÆÙR£[_ ñÖ¼MØ¡YöÇoñÔ5k}:jàïd.¢ Ãõº@˜¶bû»È©qÄÏ1JW¡€ýžÇœV!¡nAPN »JÒ ã×,^³[?Êðrâ(nåà´,p[„ÜúO¡®—œÕëøì±É‚¤qýSøËmP¸¥¨}‹¾zª_wê„8ƒdc1Cʳœ[n‘<Ñ,«-½Èöl4ÇÕFª¹ÃeïÕ-G€êI·Xg£Aw!q4ÕHZf.²÷‚óéhоóÐ_?›ÉÝë딫¢TH{¢¶p˜Ñ m)Åï}ó!DZ}ÐØŒTóh"¤ßƒ_\Š^ Nß;ß4÷ ~ÓØyÞÒ€î*‰~ êÕ’=¼æö‹5g›ðδÎj#/¦+–Õv6ÆTa,—ìbX!8Æm§EÓ;_”!åúïo°^Eì[Šÿ +À`ÆPc8ÏUt`žÅ Üã8Uê{YmÓ¡ÊÓÆÝtC"d…Ñ\v‡4df)Í剴×Zbg×è‰I…wm2(P}·Ó Êì8ÆlvÐQÖ’Ú;xî°ËÐnû®5)»ôòõzc^BÓÌ5øñ9^£cë³ñU`¬[¯C>GÁX´‡“Z¤n9l®#“Qk`õtXF•µ¯Ó|ϰݷ.å4t×ç—0v·Ó;?âéÍD$Né Çi¹Ž Œ„2ó·Æ"5‘ªUÙmôUçdÐVÿ.ÃÊŒÓwÑbEêŸMtH.šÁóÚ[Œ\¡›ˆºÔïYµ:‰™–¶H:9­$‡Üðp.ÎŽí¢vÏJä4Ÿy¹‘ö ¿õÌøT–d`Tè’53:¯Ú®ÄÓ]´;ÊÀËÞ'Zi[ŽÊsE‚R·˜Cà³7‘ƒxThpŠ'Hv>²æ4à…,WRÕlC=ªâaoÿJ°¯§:ß™®ÅÔJqq] øB²Ë1ô-zOÀ‰\ËULŸ?O´ôÚ๠š¤þ–ÐoÔÃËËW+Ïç4LÃGÀ¶{øªxE †ÖˆþÓem©uyÕh¶càijAHj*z 5Ê=Q%|Ô5ç"ñ±:‹ ›*Û4’¢pØ¿)15jüã!42$b.òsøàŠë×_Ó pÀaŸ¢²‹¡9ÞÉi¨W£GCrS°?¼øeQ¢ÿ®êP¢qá‹5y0ýÊH¥¼M,² 'ndæ˜lp¹õø³dØ•‰:íOÔÔ\òذ¡&“ ÷§†_J\&ŽÓ$:‘yá5«ûˆiG°F“Á]}gøX^ÑŠþm]wúò1˜ñýö”)úRâ5ˆx¬/D^ÑLžâs+C9ÔŸº5JSüVôe"œI³ÆÇpå,‘²zvø×$„ñÊÆ‰°4¿Ð{™¾œsÆj«"3¯=v–úÀòWólc£ÆGï¬JaHP+|šð5Zxe­ÌMtžn«¤òskPMØðCî) ‰‰ÿtµ)ôƒ—ì;@m ÔQEš$—J?ý¡Vî»î5}áæ ‚nYaÓíΡ ;_˜ Ž}‚!¯Õ6•ÅsUšÐÇŽþ„¾ ól¸ü™ñ‡Ò _±âBÓõg-« l`á\¡ ¸Gp‰0QÿD¦.$G%àçϦ %´I!OþM”Q„ÿˆLSæ\™ãé z’¸ *1»“fFî$œlµ¯l/atWƒ’ÉÃN$üÝ íÓ̇èqm\§z¥H h‹?Ѿõ¶¨#ýZ‡+Ë“ŠL®ì@»Zæ¹lŽ¢LÈÎ1;ˆ¦¦`!u¸OvuÓkœW™œx’Ô&#Â×'ÝLpÁô|»¾¯¬Y9çj«ÐZŠE ÃTáGþÑ €DåiKDX‚°xS…öÓ_ÌrWp[ª1‹œM¿Õ€a?`¾NÄDSŠb+uD7¥Ãý¼»ºl\ˆXç¨&LõÍÊw<úÁÕLîÇDà[Qð!sŽ×etƾ‰àÓ Zól¹Ç&ÚRh³ÉO =ÚšX Ž’<öã— ij0fG¥à>*ÔâþªפCdðT>ð<ÇãS¤S¬‡>?ůØèÌ`>ðEÓ•,L&e©{Ödº{q"Ñ…‡ÈŸ~¿z{-Ú~§}{!¯¬]ÞÊçaNï÷lhØ9Ì¥ÿ„[a+3…Hõ£ ÌÚ;òNÚæÃ@¯»»¸] ‘z …Ïuè» F+ËÞ?–V@õS_åþ% ¹v±ûÚã©å/Þ˜ÿ`§ƒ-xÚc2£zD:dz+æßÂìŽoi¡Ü¿2œ‚ÈbÐÉd"–zZO.ÿšCž,ÝÛ†eÝÅ@ öGƒzJ­²œõ40¦"M­jÒ¢Kï[ßSTúÙÆ,½%S8ÙhI£ðç7?húÁ‰Ñ›¼´ 3ñ‰Å<þßg$Ò]µ…Cƒº¢‰xye sh 'ÉV!TˆnU…røO¯òË"”¾+ZUéÑó7ÌÊJ 0†3)ìt,ò·ûA'/ëC-´~óÕr'Šäs”œ€GÌß(·pì–{jç[GÊØÛècƒ‰ž0´/$²Ó ä"‚+qËq7B}ßaå.;X”oô¦“äÇÛz›ÄC7v r!ÁU¦¦ÂÁõêÅ(×ÖJUÔ\©õ/›| ϲè>.3§fÑ_^¼¸ÞÐg8\kÔÎÇ®æJt˜þÙ¿#môº˜û¼hw™Dü»®ý\É–Œf~%ëË…êÓw‰…ŽlÆpð»}åksÚçîÏQÓ½’ršSz¼ÝvEüçÎ (Îd± óÉsþFOùŸÁëJÁié'•Ÿ­¹µŠO)2æaæa“—ÆF‡ÛÄ4¥i¶­öqõöeK´DD¾ïeÖrý®Á<±C¡DV“.;ÃÈ bQrQà¼]›:ù¬@zíÅεhaäþ pèP$Yóm(ß_–¶QžŒ]ûjÊ£LAåîÃç®7Íu ”ÌDøÛtHŸ®D4G4­÷»"ê(¦ïFýÞ¨°Ìñ¦ÎÓGž5íɋ΂9ùb t•»òT €$`…¥g=’l:ð¢å._?²Vå©­=D!ëÊ×ó{}a±TÎt—o”^¤;¸†zì,Ù‚"?q1 N­YÛ5È´¹þѧ֨páu¾iôj}?ž¦ºÔ,p±ø5ѺçÌÜRÑ‹›aÛ»îE¼·)_À€Ðç€Å©&ƒL!ŸƒŠ«G´T‰wxc:ˆ”‹ý‹_ ì• ª¿~kwHtåà =ˆ——ŠÚ™ÛúEò´¶÷k¶ÝÉ »çÒM¤•àg|²>ÆÔ5Ç×…ïHõàùiŸ«u6-J …xËîf&hëΓædÁ|KØÛö(¤«ü¨­)€ÑGyø¯Âq}PJŸÂNS¡8ÀêyÐhâÕ‹&áMÁz06JÓTÕZ§åÇ&ùÎl8 ®±ÖÕà¾ø­ð³ |Y;k8M¨iBLEÇ;8Þ 5¾™“sŠˆFÃç^™8a‚ýîÒZ¤ÓüO¢X庺ȠviagdДËU}Ê(=¦½pïÝpL/í›—gn”èl )ýym è´–g‘Pb¿`Фh_ð– çNS+QÏÜx³ª`Rp½d¶{±¢ZÅ¿&!, ”ë×TGÝyõ2<^«zk±(°óßþj\¯Ës¼3á =ã³/*gšª¢z_ˆädoF³‰º–é•þ«å·ƒÄ¤±z¹œx<ÔúµL¸·*pýfxžXù¹þ¥`)mé4rÌs(S\¤ý5&IÑqJ@/>–eZ¸ô4Ì¡«~zOZ¦ª—oso18]û†…<‹› „í&/wB1¬3Y¼¬íÚZ§Û{À=w¾;_¹ò­æãkAÓ„VJûØ«á2º.cr ”®‘A©ùAÉEÉáªÐÑ„V#gÞ„Ð!ûSIO|1Ó© È$ŸŽÎ0T…$(žè…`›Çý!ÛÎ< ‘ºÑaŒup§Œ/ôÐêu.´ ýÀ¸Ù®w¤4ž“!ÂÊ{:Çþé§K“÷—P“½\ÈZ-%·83ë›:LGªñMP@IÝ ŠÈÿ=`ËÁh)ÞÏ>AªB±P –±û¸’VQžk‚ §œÛEûí‰Ô¡o8e!et5dæ#–ÕÚléO¶ª†Z©Ûé½},YRUõÍæ¯h£áø êtm§yR¿ø—×Qe±Æãèôî„aãî¢ßàEƒŒ_!"Í•Š™\äç ÉŽ¯øœÜx¿ŒNl,EÎǘñãî¡!¯lf´à]}¼Bs’$½˜e!÷P$ìÃFéf*G2wü`+@ç‚61$×ø ÿGG~f—9Á©ÊG?ÂåPÿþf ú ¼²%ƒ»™y5^zÎ+wzä`]ò!„ ŽúwL,¦?_øµ‰5¾<•üBæõ½ÁL {UN ¿\<[¶rrÄŠh)w;Èàñ;RV¦ºU#œØç”Y‚”_ù¬enaÐ,XÞ¢pŽ7è%pÉ=éiO¸u‚á.³`Â,îîxBtÞÖ0Ý¢GìhÉÂ%Ÿ4RèüL2—™Æ½6 «äOLƒc¦8ƒÍå.¶³W¡ò¤ŸTȽukû.²‘º“h]ü¼pË;VJd ‘Ä~äúüBñ¼M‘wm" ÄmC«Ö{êeË]+¥³-mStDý-…k|œÉiîÄ]bÏz›ªÙ;‰ÕHXEø|õÛîÐj›d<ºœÿ{óã!Ô7ó›aA‹ñƒf‘,YÈi®~oÉÈ\*G•Aiœ9 $†jjÓSjåÄ“#Ng®2ÈœÕ+Tþ‡W·QsüÖ«H`»ˆ›ÃÏséwJÏ¿^ИÚ-ýËÒLÐ7qy< ’2f2Ý+|—ÚQ*¡áÙy ¬SgÚË1gµu™ó³·ß, ð\‡%¿nÐQÇ;Œ @ïŽ-~g|ÄøiëÌIæ×=É·„$XÀ1ÜV{@Ž-$ж¤I8ÛJ0‘¯§HÚhE¾ZV×T9õ°4MyzIt!A´ÄeAO†ØwJ/E«%³ÏSÜÄŸ%&ÄœùÑÙL²oÄe¬S‡?†P°?R PdEhÝ#t\ŒO âÌvšæ’œ8Jrä¶mø•ý˜o¹Ì/ÅÜÓ‰ÖÞÛRG_NrÑðü󛨅êŒöy#wKéŒ1Xm´ê‚’+["eÏl ôþ§Û;fUxh¡ÄFnøÈýŸ³„bwV¬> Çæ}1æ“ #þí,úµz±fÞª-W‰dmZ9䣨Òýøn… ƒHZ«o¬â ºfŒ.å•Ôi¾9Û¹PqÐAoè“qJƒPJéeèbøÞ§«6û£¤(®^¢\º‘:Á9‰!tÎÒ,m{Ô6J7v´ô imÆÏmídë$ñ¡ÂÕm'L|±OH„,§U ê¼15ÚÖE2;À&—1Iv‘ÑÃn$ê#›ÚãøbßOù6ó º~o Ä¡‘hî”ðc"Vée¿°R¤ŒhôÜKBŽMˆö›¢N»ïʲbGšÅa©ìJèÆ»ç-º£NÚ%£°½ 9`ÇX`‰»ö>òŠÁ€‘zö8âF”«¥E´Oªvî''4¹L˜…JuÃß!èÇ¥­'7zà»(l‹ÇÃw£lš šƒWýî»¶t-è“êðå?ÓMTWpYèbJ´šöQ°¨6Ñžp|\ØÂ7>)³EÆÿH±#ÜçÜXÔéfìzÕ®D›=ÁÐ9†ã¹•µÉib†½åäHÏÙwý< ¶ Ûf©_¡_êïmž„G¥çvžk£ÒçäÇy~¹?Î0LÕ/®zd².ÅõÀ»1àEجJQžœxxüZ‡.ô%iõÄÙìa’è¶®Ÿƒð‡t ¿ÇU»Ëv<­):Zæ=K®æï ë’@yYÆUW¦Ü¥×ä«W,Go³©–|à“ÜY«Ô\£m.Årb8Ásºš%|UÏSˆv†YR_aˆ‚ÈÏóPïZÅX!v¸‰¸ÝP'{­_ G½k~ñʽV6Þ$Dß’íð`×dzö£Cx†ð„P(}³c<ªÌá¥á?ô"œeÔ/êõ³"BŒšNõÚ€ºV+Ó?Á¯+±:Ð2™ ÈÃä‡)è¾8G5<ÚÀØÑ@PbD†‡ ŠEÇvei:bhF~®ééÿÀ…» Þ;Ìå ÒéÍÉóÆ.â¡ÊŒ‚v‘»+Œn]S䌋Ž]g;=ró3¿ý† 1™þEÛ¦=ˆò§A‡E¢ƒ¤h Âä‘°®ú9¿¸¥'VæìÜ6 ô!ì†ę0.gtt߸˜!ð™Ž×ˆ«¯:]6ŽŠ¨¡¡¨¶,óâ÷iÀ[”Ú1YX&f¬[<æ ýƒ¦q¾boîã©È>u¬=jÖ8ã 2÷tü Úé—êà÷—®1nSLx¸’¨£ß¯1Iô°ß2E:ÃXÅ¿/öŒ #µ¢a. ©= |S÷ÃJN{ý–³•ÿãWÚ=èfÞ¼ à`0¬nê1ZÖ…B8÷ÁœdS€D>ï,BƒóSÍ‚PÔõ½®FˆŒ Öâ„ΓíÖáûŸ# ôˆŒŒÕA\Í[~ùÌ-‚(¬¶²V?BOÖñsÿ!ç%M„…G$ g]¬ÎFƒDîÌÊSñ)—–.°ü\ûôè>Þ;J6e™¶‰¯e›Âûl6Ž`´¥ñ7~íÉ-ÅňÊ>RŽ6ƒ,_̲Dz0|¼ƒr~î|:7Œô»æœÌäâ´Iú[¼#3xC¿àUÇ)*âgì|•½8“ûÖV{FFÑ Û A0a¹;ïIBV´­#ô“ˆ¦°„9޹BlEFXºŒú?™å¾š@T>s– PX&` „-P,¾½zÁ©ÔÙ;Qb±¿ØJÞ‚p2 ÚjÇn»…WÝ”VÃÚ“ÆöeñYò¾7›t =û¾ÅëÒ6]6¬õÛxî”Ķ5hèQëo@é° 4E®%ÖˆR5#3ã‰È&12ÛWêàÆ¡"ŠÔV¢ Ô.‹ÆuAõ>³»I]›þ߉ŠddRœ¶Âå’©9Ñ`´¤p™+ŸÍÂ}tã¹@<½ç÷ùƈʩCŸÎW7]Øùƒ›g'5}CSá::_[«;~GôøÓ‡Ú¼vô¾:µñ(¨ònGbü^Kc¦²Ü½Iq~ÝlÍ.Dþt^ú½w›¡ë¬½“éb)VU¤_8X¢ßW÷µaÞ–ÌHwôŠî-l¼{}½ó—(1k#• ÌÐÝKö}¯LILvº±½l‹<Ö†æ…rÀ»[Å£ô‡“_›A°·• Ò'Ë?¡XóÚIâ_Ý25êi5°B®w^\3`…wØn·ØSàY¥k¼”úÍḈ⪨߯«[â‘Ð<¿i õm²Ú„Çûe’Á¨A:6¾šM,Cé8êšH6)j‚Q±z{Äm͸ª+H½>Î7uFoÈü˜‚²ò#Ü/î-fÜ ^|úÊòV>Òï¢úk#±õȰÖù’Þ·db¸âGYÜ æ‡d±ÃB僈!P¼o°ÈâFæ€ñÑGзRmä$x÷W¤„0†›|Y:gü§\hBØî=Ê}Ð`Hája:º«Û¯ ø™)Þ,y›KlÙTWÙéy;I¥8¤Š&@¬ Æ k¼c§GÜÚó·i®§®ý!™WM^…§Ó‚‹ƒÖÁ£Ï"ؾX§Hâv‘(Á$ÑYŽ`ëîc‡à‚ÁýF¿¡ $[‡´IŒ™cÌ¢Þ(QLNñQÊ Î³OsÃ2ðþ>X_"ªÔ %ÓÜUz1ªycò}6~<›¯šõ†—BØêkÿ¬èlÔ¸G®BôØ~ÛóÉ‹¦]Žijú¼«í7n:–Ý7©×*oo«›d%_÷CjA‹r#•op¯äcæ?]Ô‘v¹ c·®†ŽÅn÷EÁ™Úf3cû.‘{ŸÉã3žŽcž ‰zL¾ k¬ôL·¿Ay↾…‹>ßÝ mMV€þþ2»ÒË”¼ñ/bÆÙÀ»”ÔxŠ\`DÀÖ)Ž4_û7;­<ŽRVX㬖žñn1t¿Õü€:P3‹îGÐà~ž—ý¶*#ž62ÜÞ6oCDqáMì 0h[ÞSn<¥zy qß»Ãå³+ `Á›Ê¹È³„ö¬táº寷2r{Ä)Llþ¨¥¤«î)÷|&ŒîIø‹íÛ®u6×ú¨qÛlEßÕm^££C”žÅkÊiÇY>‰;‚òG:·+Q§6oXêëÎe䡤{oS+‰ÚUbÄ{?gø²OUvÃC7FI…³ =ž~¼D'}Š8¯)*V9ݹåÔø‚5·5¾"già¢Âo}Èë`½¬ :Sr£6qì_¦b9Ê/~krWŸ<µO8c«¤ë–4:èÐ&…K{/³Æ3Ógî\Ñ$Kˆxòu×#ÛX dªLŸ³|·Žˆ áÆ£}~^bûÆbE '+™ÿbÊ.¦›5éÈSÉ W”pÆâ•TQP£\ì´w7ਨ"NÏ Q©jÜ]¾ÞÍÄï‡í3^†,ž¸bôí÷°:ªê+I`_Dy¢‰ø°™Cß½äTŸÎeðİkHó&o:Ά»‡´aîß® òÔ9|@rþ°#?颃k$Ø ¢Q½Ÿ}zÎJ/_Y.‘kà¥úHxCƒ"˜Sú!…i¿Êjj„†KVMûè…ïG߸.ʽž§Ë*¬h•.õæž ­¿Zª‹FL§ä†“2wžweÖoœ’u°±_”õNGøKà)¹p÷—Û¯ü¹ªÊ)[¨ëY´ìÛ_tÊHjbÙW‚ìîêáý|p{¿ÔL¨Àg ’||kýiá&¼|~ÜX$¢ô²ˆ+Ásà|ÀLV—Ò¯¦?åe›GrXÚ¡UÓÕõLíWõñ5b¤Ô,}L¨×œOÿ7.߬Ÿ:o|ÅX9®Q…ÌœkÈ÷N…)-PdKŸ8DI¯x‡³8¤¸Î[mÞŠ^4;RôàXÃàŽLüŒŸW¬6UmŸ9AÏLø ˜Ãž™&ŸÈQãóO+ºVU#´ù—ÝÂé-ýEkLˆIO˜›ûAø!܇r}Y=EYò zÞЂÌ[û©*ÓH×éÆÖñ+ИäZp[$€7Sg.1ÒÖ*:H GÝÉ }g="¬Õ‚ð#F»p/”Q°Ùè»5‚ö(büö‡vIsaŸ ËZNëK)GÇM^¯ªtÇýìLèÁ{«éô B_ õ¦Ë)š$’mn‚°da)9l º?%G>tEà‚Õ?¬* ™g¦ ü`:gk4êËT ô/=þeéy•Åø²´zy#¢¯Œ2˦FÚ:Z‰²™0•vÅ"~Ô´A›“2PöõhY_ªk±“åå÷ø•Nv[XëiÈcý†õúF…׊R Dú¯ û‰ne1³'¨zŸ!'ÓŒYi”Pý@¬v£TJÐ%¥-²­áN=¯ûA>—óC{•"ë§§w¯ˆÄÆKðÕ k«u—~§à'¢9ˆë&ÄnÊ*ÜóXÙéìVfNÃì ˜ê¾Ê%"q:Îô¡8¨fÂ’{»ïÆcývŠ7ÚÆúÇ\œ#GDºµÛGÌcøbÅ5#—aÜ>¢œa‰„Ößf51œæ÷Ï|žÃ(O V‡öi‰U;”– Mܲ¶JøÓC¿3²X»› =ö‰{âŸJ?§«dò„O˜/îÆ*a_9Ù—ÀÑ0¿¥0œ@]†¢u1r»|ûÜœDX'ig_aÇy Ï·xjV—ðb+¢N¼mq“qçáHK-ׯs­'5z&0£Èèõ_¦o;ÛOñaQaîI* 2/v}yhÒ{ÚÍÏTÖÒý=:Ùx¿ꄊJ‡Qúˆ}öD˜ôõNÌ‚°µ(VuëÖ´Z’ÚœsßZø$E´'¯Óä9ÿ3¯n„Ïë—F ÔÒ Þ‹_v`Ï›Lx³˜0)°¢É Kׯ{ 5F.Ž%“âO YþC[i=cJ#¶m©6:†‘Ãd¿,‚¤=ùÄöîÄå/î¦}+OsNTX.‰UxÑœÝv}0É.Ê„¦0½3mÚ7ÔzÕȼ’B%¼0ï(ã˵‡¡Yý‚$£=,];éeèBDLS,ÙE« 73(wøKJòºüÖ"–ÚTÏeݨ)NÚcÔ$’«“±Ä ¦ÍÈ–ô˜­9%°>nSÎò˜8k„Ä’˜R…´9ëØJB·ïÂ4 LÖ0‘­Ð¸£#Ù˜ºˆmÌuá4¡Hì„¶·-£~6oöËNáUQÎ*Ò°·ål®E»TE Ó¡ÈÔf¿0sÏì_u„ÉM3ô(>a‚Û´$>•û¿d™:–sÌ?à¥M’ødàiñÛâÈþ0%S¾ó½<°7ÍÝ„D\¨AÎCÅý| žw‡"óÏ$sP¶´·—ùtǘ)ø#(E xM-KbÉ-ê×öÎE®>å¼åînÒ*‰þˆs=#3JÁ5Ëkæ™ÔW¨¿qž:NŒ±Ïqô¸{–M«S ð:³ýæÍºuÅ1òû_”¾o¼æµ‚j¢œkpcÌø'Ô,êZÎO ~ƒ5,¡‰üüÄ:Œ¶%æ¡ì[6§3Äe^*p‰ï%ûƒè f’!ÃâNˆË=[ý+__·M‘tHŠkB‹þðnÒ°–B›µ‹ÍÖ €¦¯þÊ Û½ceU†¡ˆ¸À˜5èObHÇlj0ÍÏQs»ïäÈZi×3i÷”UWçÄœIÖ.`•µûý/ùY‚U«é1^pòÉѶ\ÄðC.~%ÔÏ®„›Ñᕾƒ E–²›ÇÕlÏp=9—Hë=žë/RPtÉÉòjusÑ•ô‡¤]OGFÆâ-K æy1˜a6´ŸÓ òU±Têäê”eèðý¦rO擬'IX6¨›¹„ÙÄøk_ü\ç Î "éƒ:m׳ÌSž™sc¬éÀ?ïì‘ç äýî9 endstream endobj 226 0 obj << /Type /FontDescriptor /FontName /PQQTKL+CMBX10 /Flags 4 /FontBBox [-56 -250 1164 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 114 /XHeight 444 /CharSet (/A/L/M/S/a/c/d/e/fi/four/g/i/l/m/n/o/p/r/s/t/two/u/v) /FontFile 225 0 R >> endobj 227 0 obj << /Length1 1933 /Length2 12706 /Length3 0 /Length 13897 /Filter /FlateDecode >> stream xÚ·P›ë- ÅÝÝ‚»;ŵ¸»%8ÁÝ¡HÑBq-^ ¸;Å¥¸{‘w/—-gïžóÿ3÷Nf’¬Ç×û­çÍ„–RM“UÂÒÑ$ëèàÊÊÉÆ!R–Ôãäppp³qpp!ÓÒj]í@ÿ±#Óê€ .`G¡ß"¤  ë‹Mèú¨ìèPp³pr8ù„8ù…88\‚ÿ t„¤î`K€2@ÁÑä‚L+åè俵v}éóŸ¯ F§  ?ËŸé {lt(]­Aö/-€vMG 0ÈÕë¿J0[»º: ±³{xx°í]Ø!oEY`Wk€ÈqYþ  PÚƒþ¦Æ†L в»üåÐt´rõB@€ƒØäàò’âæ` ‚^º4啪N ‡¿‚•þ `ü}8N6ÎÊýýG!°ÃŸÉ@ G{' ƒØá-À l¨Ê*±¹zº²€–í\_òî@°Ðü%àÏÑY uð…áßü\, `'W6°ÝÙÿ(órÌ2–RŽöö Wä?æ“C@/çîÅþ÷õupôpðù²;XZýAÃÒ͉]Ûìì’—þ;æÅ„ü¯í-ÈÀËÁÁÁÏ'9@žÖì4ÐòrýéäüÃüÂÁÏÇÉÑ `õBä¶½| û¸ÝAWˆÈÏçwÇ#dNN€%ØÂ`z v@þ·ú‹dõ~yþ°'ÀãE~œŽ?^ÿ|3~Q˜¥£ƒ×¿á>bviUm)Y}æ¿)ÿã””tôø°òrX¹x9œœÜ‚~^€ß×Q‚ÿžƒãß\y+G€à_㾜ÓFvÿ[ /#à¿k©8¾(`øWèF¼/oœÿÏrÿ3åÿOåTù¿ ý'’u³³ûÓÏðWÀÿÇ´Ûyýñ¢\7×—-Pv|Ù‡ÿ Õýµº’Žv–ÿë“w¾ì‚„Ã[»Žì" öYª]-¬ÿ’Ë_ví?ÍìRstÿqµX998þÇ÷²]¶/ׇˋ&ÿt^–ç¿[Ê8X8Zþ±e\¼| ôBæx‘//À‡óe-AžªÀÎæàèú’x!ç°r„ ÿñDùxì˜þBüv©?€]ö_Ä `—ÿ pØ5þE/U´ÿA‚/U€ÿ"»ù¿HÀnñúƒ1»åoÀú ¾4±úþÀÿÀA¿@÷Ãyÿð;ºA~Ë yûä°[ÿy^f¶ör²~¹áþx±ƒ/Dlƒ/Lì~ƒ/Tìÿ…œ/T~+õ²åìŽÿ6{‰}ùøÍý2¬Ó¿n¾ô² Ž¿çË´¿qá|Íå7ø’áú/õ—f®ÖÐo‡ñ2«‡ão /\Ü~ƒ/\܃/óyüvÒ/Ùž¿Á—ò^¿Á—Ù½ÿ„ÿ%E 7äåBþó²xÑéðŸ·?ä ²@^œs´xjSÚvûE‚ăug\dšvG7•‘ÕgÒîvŽÌX•¼¹–HêÁ\Ù–a¸_¢xò9h®CˆhIRo}ð}4MИÜiE^ø†ß?ñé@¢ö+)«–ø®ï“³¯N-L3t§m®³›ºZ>έGŸœgíײåÑð¹õÝ*>E”Dz)Ö÷Ú1FAÅ3´yæY³„Tð®¬dˆLاž3W×ÓØ9Ï ÌÈ~‡ï¹ } 6¸bïf½W?kq¹tÑ’Á\aNÒùHî§(Ìû”Å)„GY‘™Ì5жcyª);…ËF&6G˜I•alO†ÇY¨oÑJý°ÓÌé Äέå/žzâ4-@vQïØ{Â÷Ž®˜É„„ˆõÛº©qE¤õ&Ú‘‡^1ˆÁwìGì§Ìó-å÷ôŸ¢¯K|OXà2Ïs5ìöz¢u¼â¿=ó›˜s@Ì6¼ÔÒ?ÕúE:D æ´¦Ìy ov”­;Ø_‰ýl+ MRú~ò•¢ÍhõºB§7ús¯JöEˆØ’‰ðî8ê«yg­·ÐË2CÐdlºB·ìˆâC5—fþÃ_³$ͱÅF?+C;†ÖðW•ŸR"ó鉛"Þ^ߨ‘ ×M–N½CùaY%i™è;)_öí8ì‰Ç;eŒÊò µ´ô gV9·nRAW$Ûè·‹N6|¾ùÊ2áT-"å¡CªzÑP!Ñg•à¼ìÔ­ê ÑF›îkëü¡zæTí_UÏgÛÈu4ñß{¿mmꪰI2èL¨ìî’æ¶÷4qc¡ÃÍHˆÛ™bºt—*‡«5Þ”¡tÄzYiz•lÎušo`õš º‘9Åö_«m ÆQqƒÌ1*‰¸Y—ÆÎO J/æµt«ÍD›û66QÀuuÍ g-÷Öf[&çþ¼ç½ý¦Ðƒ Ä{G]èÕìB+úÜæÛ‡I< Ï–2üwÂeÄ éÁØÂÂQ| 鼊Ë3éµÐÓÌÞXríyÐŒ]ýÏIQBóU¸CùÐø’h¥yüò:³AOps;¹ºÏÍÆhõ™‚}pdö¾Ž¡ÕñACÁòFöá*Páþi~î¡^çq=Y)¡f@`æ`“Û‚Tûžý—VÇŽb3*º0 a^C‡2 Ó/íR}춪A{d/´Ðý":ðDT"2|¯ÑÏ`„QÚ2Ž“Û·8Õ™þHãtŠ“DùŠlåB°6F ÂopîWš¹oÌ|à #ÔA0LF"†·¯gí`ZßîÚà)Â¥Yü #mÀZ•Ò]™6£»¤˜âT_…zœßÔç¯åvSx:§zPˉ—ð™ò.ˆÔ˜AÇÏó)d.æÇÊTçW‘æ‘2Y‹]î¯Ü_Fˆl¿¢XšÂÁÛµâíI8 ƯÓwꃯUºÐf:…NóŠ ÓhÆr,…¾-ðæÒlž¤”¹¾›òB*•â.„ ¿×~¼ß¨èóßøe‘‹=¯l†T²‰Ci%h*ªö³ÊQöSéu…(ÜÂn*NrC*Â"OR™€7è•6"³áÜ‘-ª°(ËÿJ“òAhmÑ*,ì5FXA‚¹V\ÓP扙ø\·mñöéàÝ»ñ,N(HuréáåWQƒòãÑ5±‰Ø1-5hûýxxj{´ÚådzÉ;¾’„w‚Eî"Ö2]¦z ý^ñá*·© ‚ÄÅ{–¼sÂùkzGa·Z¦q~bº¼¥dÁ@n_ñ{Ÿ‡®>Î|Š È­ãèHVo7w WYß°…ÆEùšâ´—3óænùÚ”B]r€Ä<Ò®û ;äÛìRfˆ™&#Ï«9fU'=Ów®þÞÃ8 aë\©5Ôvг5 œÖæoî¸Á2~¡Áõ†…ö‡Þ7Éx·4dÓ0†2¹<>8a}NÞìºw?ÐY‘ZƒJ€¦òp»õIöÖIe «sú¶¦À=CçŒÆbD¶¬9)7Ríü²Ãvº²e‰I$V*fžZšµBÑ©æO©"Ô• qE&ÝWm2‘U®°¦C¬ íPÌÉÆ " . ,ãNK­#Râk¢ãúD=UŽJóל¶ã\`вšå”U ­E/r¦ß_Nä–dwA-)¼>U`6²G§ U zà#î±%‰³¤‚WA˜IOu¶Ÿö­ù<|$0,„EÖ*Ýý2F1Ô ¤ ×§˜¢|]$æ?Z)ö3_VpRU¼/NÒt¸ûôuÛŸú}€)S¸1Yv½ø”ïNa œ9ì<’j¯P¬Xµç¾óbÒ¼ƒF÷»ŽËéðy¡ 6iìkÂÝ…1½ ÔIL”f÷8T~j8§_S.3ñ¹)©¶‹˜Œù?š®* =IË‹ óž¡h¡z»×ù¹)™¥(/–uPñg+vL£Àß쵞_ðRDûœŸÇòÍu7c$ïa“'%åÎ[ÜMV¤I&Â-ØGJk°pÔ¤§L­ºôfI´nLk¯}Ð`Oƒð|:Ø?ÀW¾/IÁŸ…ʘ—õ<ñÒÇŸÔt©‘; BÇÎÏ7AªÄÕâ¡CãJIô¬0$_‘',ð°Ê¢Wn¸åü µ ‰öèÓ—ò⺨MD_ÅMåÎÑç²f4Á®®ÈÞvx(«jÅWI»(¤Ž¨“´ÔÝw‡ø =µk­u4^rUê%Tª¸¬OÅ>œctÐJ†,YÇœ/Óγl^ˆæìF_8þPü¸Dõ&k¢ }#ÐTÎ5.‰Y¢=ÆO¯PÍÐpÒJ61y^aÁ©&¿¿yÃf—«>m3$Kk“S¢V‡ÌyÜêmÎ5TY­¸¦Ìl¯ØÚÜ?`ÅBµÂÎí_ÐWõúá:…?Ÿ¿»BdÄ‘uOƒ60jwÃ!…TA²TÜaú™O‚ãGu®†¬à—­9TŸx†|ºÔSšõ°ø¡‘KëNâ›ç«8åg›®=„’Ô’CÚxÙW:¡ÏKïä¶ÝƒáÅÌ4…6„@Ný£ C·[‚åP1¹#«Âú7†ƒ*.Ö^Å âNotlÎ…ü¤¹ï¤¦!~Ážµ%C!;³Z³ ÍK‰‹ÉA©Ä. ®CUó ‘©,¾š Qi ]Î*y~Ge£תçó¤ !^ø)SUw˜5«ôHµOyÈdEÈœA ­-™01ü •EŒ»kÛ“?匚¤óHy%òn›zçá e(yÈ­ Ú<¿‰=i]®³v…ðFíÆ¨ÔÈÌ|s{–æ"ÒÁ8&Ï^D|#+œáˆ#©ùó`‘¿’-—·t›P²a[CV[(¤"Ô¡ÄÙ¦#óÄâ|»[|ðÙ9Õ6Y$%ü0†`ÀÙþ¾ªmõáIeúwY L‹¦»øTøGƒÇÞ”õ“eúó«ž‘“pLZ—áuÿ #Ð]äí´1CìɲÐÎ9«å“Ø$ÎÊŠOXîζ\Î\6¢xPžÝçû¯.À]ýŹ–)(«ÖK¬¶¼•ŽƒÂQyha³æãXV±ã+ã׬øðr~š4ä@_Ô›MGÔù[7ú ̧ª^AP²?SCלzë¸Èq›“úüä™Öê$¥&D½ÄÒUM‡ áÚx>b? m%W›Ëìåê‡r6LéœÞ™³„PE(:ÊrXšÇ‰[‰žGsÖ¬xäLF?Û&2øìõŽ ­ #¦ÕÿZ3f)4.˜'XÍŠáUç<ŽZݸ0cçDÝ÷›Ö»dd÷kÖd퓱]K¼ÀÐÕg“£_Í´uç²ÜDo1 s ×¢éò•ý–K¹s¤m­ÍÞå@Ü,E×Ï^߀›%HL;Ž#ñeM'Ó,l¯T2f¢o)ÌòïÝçñf¹Ò“—Ó¿ÓP¡ñÝMúü:A|,ßÛªl0’u¿Ò>Ô%Cé ´;F¦õ„3|[7ƒyfÃç_ˆ-…2ƒ·B•˜hbk'Usâ…ѲBKú‹‚ñ­Cƒî¬l¦*;®2fšWEÀîÌžÿ…sûQéX>?,ˆ¦(GjD+ƒÉ3¤ì«ñCÙ^ ã%8Ú•Ç #EjÆØ~'2Hg*aIõ!)(°òªñ-øW3ò9-ë+íþ\C«/Zzü3ìlÄaøÑAˆÚ°ïXn¬ùO”óy&~’"yï mÖnÚü²‡¸_e¨]ÆR£‰&æ"šzž·n›Þ´(õ6õå x•‡—%…|¹œàŘÔg÷±:P—:ó+·îBœ¿ö_؆Ôþ ¬‚ái}Ê™Œ¿j±R+pl< ìTžf6¡gIE?æ3e_Öõ±^:bœLÿ9j³W«é7õëH!ÂeÒ%z•@Oú­JAIÁs–"f”‰qß'Iʲ¯*b xQ'{ôól×¶]>Âjƒ=ÅvhØÍó·i-4ê‚Â7Ú(a™B¶ÏÓóqq¢(VT0ÜLµ²~¦s6 RÐ3Á>©˜Ð»Éû^Ý…2?Ïq”ÖS¡¡@Ç[h"œV”÷ðUj{\©RÉÌ?};=?‘ëî§ÈŘ4¤ óäÀ…ÂÚ~BI»2ðñ ~ß{¹FÁJˆz$02@ß`€T×=f ¤}k‰æßo¾½¯¨;S~ ë~}=¬’žÍ"ø:#í½²mxܫشØ.ï‚cf·“ÌôÇ…ñ»aÝÍEéPËÔÅÃѵh…Ä}ÃùI#УÃbmDóºè³+©–F-®²@·ôa@Ó7¥}ŸHé:j”Ûi`©‘ÍëF‡BLËáú±1EÔz§¤Tà4ùõŠ©4çœ%:úãð#PF}…‡ª³HØðçÐg?8þ@~Ú…–´½@[v.ùÛHúŠbsáQÉdìkß×ú[ (•v]²> e,x×™»…‚È8ô,¢!v¤ÎÎâ_Ìð# q¥¢¿³ ó-ùžkí×r ”úÜ6îìú\šÖ’F½ˆÛ.«Í°‹á*uEæóvX|&]"%‡ëÆÏ…ñ˜V§W³3üÉð±v“éÊ;z™(¾Ch·yM§k„\Ô­ÃB¾#ßÚøÖòæyÞÜ})œ±…œùˇBÉÄÚ_Μ¥»WDV™³ô¦{–mbꇉ7¦n@H•»èï)¸G„Ì %ø¥âüõ˜MwS;4¨å¾Kèô¹GI¯Y¢uÔQ"Íqn1¹­Ã-{_š'øœú…ä ¢?yTT£õ%§öb’è-"Ôù ±¶õØ;¾øÕ޽‹ûÝq®j“%ÂÛxhto¹ª£GX%wj¼üéÉ˪ÝTó™jQôí­Ù5±$ŸÜòÓàd2ùã ¥Þq|=îUl³žŒTuæQXØ.H»Õt?ÇÎN½‡ï ìX”(+\OÌ=“öhókuK…MÞÄcœp5$º×'ƒN¦"F(ßV€ùƒä,T²¤ºQÞ·09Çv)£ÊJ±lëYˆ;öo Lsß/ÖúÛÙ"k°4nCZßT¸¤,E.=ï|.cƒ5þÕmL/LÙ€gÍ8 èõͰ2|ƒWf·ν4l¸áÝþ•_|¢ÿTܚ²o9atÑÉçø>õ¨jf¡k¿™X¦GJnÖs ݪ®ØK<_Ï03á‡%¶.=_«‚DɃܕû ¿Y,eÝ–_.Úv ¬²b-ŠD£Ðu.QG7ZB‚£îh¥¬zÞšP´f ~R£šµ&þøî’{óSºv¸Z œpé¤ŽÏØäæÃ©ühoÛç¤7Œ0¦t áîõó­ª!6˜ÿñ´[DºŠ‡ðÅz-¤PJ$*‚µrþ"ÌÀñv`ûý|x+Cò3r'Ìðô3D°Ìºibp—l«À¡}ŠEÑ_xeÄ3uËÍ ¨B}¦nA ðÍáŽ&Åд(¸§¢å—Gx¤¶a·²åÞÑzGÚ¯5«ºH„oõB««Ô#ètÆûÊ-¯3˜ù®·L”{¦¼ä,›¯”H‹ù(khÉל6XÒ·œºñÉ•üu¥™}]†-uåø*k¼8ÌËqôxàå k¨ûŽù'÷¸gY!ø˜˜ 4hº»î&Ÿ5Ñ‘°/ÛîÐVžW5³²«„ âÎ4Ä£é :½í5¶WÊ¥{ú\wU8øÓ¬À$‡_›>K*Ò)B.ÈÿæÎ:€›óçÈæô)†/:Ìëîç]ßIгb7Š>gÜPƒ  • â)o"ˆ4^üíåâ³Î+ã•èÂà< ½\Úåh«p#ötÂÄ ¦ZØ€0R7«– |yB먀Pý£“8?­lÊOœ ŒŠójlhC¢Ê¸ö“©OØ6³­ê›»îPÚÓC7S¢pL§šYXC2Läú6<Þ3îNQ§õ#àA…̓¥£ÖøÀÏ4ºãNDÃÁ__V ÷Å:é¨eÀÛH&‚ ÂI1С“ æ<Öb»ÆvÉ<ËÌ wœÑï’¥ñ\N›ä†Tø„6óÀþªÔ𥠋mÈ/xœ ±`ŒË ³ùyÇììÉ%“YPdV8ŠjÈ·E`ÕÀÛ½W Ûêò.†v—Wï¼äƒßQx?N¬yö-ª}V5ÀßV‘Ñ'p»{‹ /ñ³áúјtv –L_ˆÇããůe¸ðTØíP{¦1/A•ôЈW²4¼³l¼r«ií«Œ·Ïݧà-Ã¥‚7Í{èBs"rÅßï®NßD¾MùÑ'áþ<8YÀ¶…o»VWO…ðÃâ‘kx´e‚EšFµVŽ! Nƒ§kÖ«ÏÒ0‘õ»uU@Y>zòµH¾NÂÄÚ%Ï¢*j6%ð Ø>}cøëøÃ½]r.‚:ÝѬ÷äÜWp„“|]i¬4¸åNïÕûʶ20Ç"F‘<‰ÿh%Ÿð›Øü^e´ÆD§w¿ø±>˜¸büfÅP™B'òóséXBãÈÙi±Ù•í—¼dÆ`¾lö^RqØ,³/‹ƒê%,Hß>iÀXK¯£ãƒ¯¡Y„*´cØl#&`ã:!{ßgE¥ÝÄꦩû¨î%†ÌÓÏ0—‚û²‘;ÚG0P³>ñvÍ„sjd.Ë,y{ aZ-]n~ìÇö€*1‡!ÖP¤Ù%¬µšu¿ëY@Ù"gÑ?(›ˆ¨n7Fbêw ‘†$bjË»Ûàšeê8 ZölG™ÿÄQÏõRë"ç\ÄÆ&ÇY÷Fáâꫵø…OÒ<³œƒ#þ°o’¹Œ’U%“;i·Úà<ªßQ̾³"× f&ˆ ‚³Þž×Ð(2xø Ö³ÎùÄ ND \Ç:Žk¡Cí®wPú‘ Áq­î‰‹gÕ ë£Ê™0«™í\n@ãQRFc6Üèr& N°p²Ö­-DG³‚ÌßÛ,¬VÖ¾½K`fF4.ÉNì†ßG|ú"hd,”Z½Vª9°g;ôÚ=!ûÏ,­„ðoŸõ3­ß+•äLxˆ„ ˆ’´Ìú«n'Æo`U_CK«“cLG[Vµ®Õ·œeÌ  [u„!U } &É—©0ŸT„0dŒµ2“î÷¼Y==Xh bzïÁì‰ß‰º¾;·”ó“NSÞ­*^Bnâæ¸rx )GÉ€”÷è½mýáë@hê+kê'•¶ú܉)–9ïtâ ¤^ó‚7‘¬,ž ž­L%quÅÓ»#í·§ÇK²Wè¾ò*Œ Û½ËïÉsªCI¯ÌݹòkB‘l½ÚÏ‹žkßP²í­šT– ŽûðüÈíó¡,ªÞfMBs#àN¯à7x./¾ºwï·_é¬ÇM-ö\ðÓ×~Ý·oùdc[Ü…gƒÍ·® ÑÁQõÛ§ùœBßÿ|j#×,' m-c\V§–ÔŠ"£Ì5~ƒÀ/V-~Ø"þn‹ÁJ Œ× ©ý»BM†I±Ët¶ŠQƈ9ðUÒYtQªª¾‰QõÌæ%vJ®eͬmgÝÆ÷ʾ1õIAîs’n+Qö\¤¦U23)&ÑÉÆOk<€™z “ý6±OБvpGànCŠ,/¡á8à“J¼ãEß>Ü<ñZØâ3¢Q!¦+U°Hð&7…“âF‚MO7íx­wï$ ÚHRÑÌe3Ñû(ÜlÙŸEžCõP‚$ÃàÐÛCíÔuZºîú”'ĶNBU7KMÁgòzCZÐ8‘µÈ½Å™ãMò¯åWœ3l¡lcQiMèt-%ÓvK•¨ÞX%†`>ù[b­áŽ[¢›«6Üe]nbân˜4ìúÉò±s¢˜Tï7•œ d†GkÖ59tîµè‹NbìM­^5PµTm¨õàé¬÷ÅfÍ$ ÑÜÀ”Š­A½?ók^ûð9]æô~r¡hXÒD-›Ìžgp>!äìÍz; ¢Ê7Áêæª¶~:üF¬ö² Û×=¹Jn3,,vnšë»Àå[wnÀ #óM"%Ƕé…ôýûqè'„*<ø ôÕÝMB×] +tŠ""°(ZƒÔJ”r¡SÑ”x ¯ö²&&u°ff8ƒÚÏ€7±bÕX®|];{²áÍÙ«s ޾ºdá‹ì ÁGÖ«ž&µ˜.è Kùx‚dgV:ÇŽdHFh©ßŠT]†Þ™––ÁúÞÓ$|«©îüò^ï‚ÜÄQºÔÌ9ÞCÆãµ"…Gó…ÑÒà5†§*ÿ%–?P™…ËJy;²ÁL2H@‡ù:«ï'ö «‚¦K“û“ƒ"kèSð›ýgÆJf­A},ߣ̶Ò7Ž\Ò˜;I)zXæn1Ö0ºùühpèÐ6Éžq¼¢ûͳ‚œ1nwf¸ËgF*âö3N?µªŽË©¸³ä&pFŽ 8îÎàÃ|¢Ç²N×i#waCqOòS£KIìþ‚ºÐÄLw#"|iªJ÷¡?™Úi+z•¬(¥­ú¤~ÜËš4;ØoýžÎm†s)ѼëjW|’Ë ¼])‘@¨Æ½f£(4v~•ò@®Sµ%¼©3·EYN÷IÙîõ+~¦3Už" áv¶iDƒÕ“ ô1϶ž˜°£-}GxS£ë¼2¨û`&S;N'zSœ:M׈`íG8½ïð:ÒŸ8ôƒË#ˆÑ7‘uµ~-  Q1?Üìûã¸|‚ÕÛJ!7ñé—|¯é\6'…i6j⾺È48|3…-28i$â•¶¤T» 5 s«Àá_ÓýñÎ"– #(hUu,UİÈ9K¡)=Ý’óë¯]öJQ¬1MûI¤£ýó©×Vëq€OùJ;(MˆŒ&’o<Ø×Þµ`žä˜ˆ¸åmE0">c¾õ‘EÇPÇ^®YY-óëB|‰€Ûå*$ r×éúsÊ.Ë»´†aY­¯ÊsWwHIûRn@ZÈéM>¡*ui†KG/#˜›l½Ì¾"ž6{D¾!³¹¶•ÇÙ¯ÉÂi÷ÃêK9*%éài{?1EtL<-h>Ë«×ÇÙ)À·x8öôçù T`à K µ4ðxqr P­7%¡Ü$ˆî—ç:-ýÌç¥E‚¤2°H~½7;‰À5å ÌÜÈx7ÙàÁ]¾t6à `B=7Gå‡ÃsH˜o)üÜñ¾7¥MWB %|¨žWúMT^“ö*«ZåÑkËBlø7 ®éŽ$ é Z ±&¿ì‰·P›Ð‡#éXU¡ð»-›ÒLÎý5?N¸{%GiÖ®™Þl€ž·ý­™à]–—V˜ 7ç´…|?½/¨iw¸÷¦EžoþÖäã£Ëcs¼’ÂÖOPøÑÞ‹AKgQ?XÆù;óM?ø 1 ˆß¨£%J-zh z¬¤ÈBIšÚé’úæÛ¼OÛˆtìP„i‰üàøši£ òÞàŒS)…Í×óèRw¼7²À&ù(ÔãrôíGY÷Œœ_š¹sÏh_Q‚EæœÃO²,ÀQrbùìù¨üb–.7ütV¹\¤%¶JÒ)éêlô2Õ>^9¢ _3‹0¸^óø=~qš`F¥·@æ 4C£×ß_"C«ý6à.õžT¶>Š“.$|‡?­ÿË—b ©'/à(I;ˆÚ>Ñ)‚ÐÕ|L%Û€Ô{*ŠL>£Ìfš?¨_ÎTG(ºc1ÑËšà1¾Ë“zš§w!¾ ¸>6vEÕMD;üUJÉÒËëy'¥f_GqMq"ÑÕR’‘&ï:Ê-‡tçA“™§ë(6/æ#a>@IÈf¸a{5âøš %Rªê@Ήb—š™†:%Ë[÷ç%àž!1·ê;;ÉíBŽQ›Ýrv”r¹Lg‘U?ƒÏjFZ~v=·5 /÷a ‚Ÿ}–x8Eð£} (ìÃÚ˜oMºÇå70ýî}kŠ-mkįgÐ%iƒ©ßåñc‰¶ëꟳAjäÚÝ–£Æsh®‚[Y˜S¶S¬ã˜+3 CÔt’I†ñŽÕ*¯CÙ:#ݽJì‚ è¼ïQ×úÍÊWdßÏ] ²Aut†Ÿá×\ ƒ Gê±: )M?ä}½·Û“ Q¿äÅöæJ™Ý5·:mÙö7âb~äw¾\hÆ7ßÃ'³*¦Ñ°UÖáRdyÌšÇ=ó¨ÉÒÝ—àyÛ~''×,$ÓxÉëL9ª/1 æþÌr9Jî–ýå[õÄ‘û2-9h@2Å+•£‡Z‰@y —Û]…‹-ãt4$ûs¶/Ø{Â'ÒŒ—-ÀòãPœ¢˜)r ,ζ¡_„NÛÌáÑ!Œö/ Ýè@ßÇ:®î”œytmÁÓU¥5À@Ù /Ìâ÷ÒáÐTó¼Mups‹!¾¼6FI¾ŠƒHÂðr¹ÓóỡÜý3ë蜩ìñ´W b'²D¡>×™’ˆÊ´ä`4F¢h|%ËÓ}5ý'%1oÛBl‘cçvÏè"Áð7\Ê«- §p<#? —ÓlÐ5 Áj’Ee*¯+ø€°qYË»#fËåˆñ@çYÌŒ¼&½ï4í#ËaD¼¶– ²ÐWße.c‹2A{=¢ÍÓOòbW‰L[ 4uƒlTxŸ40çŠ>„4{®b]í’R’–}ªÿ†s_íše÷%<ڊͰÙýÓ]~ Ü$hÉ3t-\«›(Ž•’iÆõ’` *Z¢9 4Ù 6€L'Fô%‘ Ó1E]Α[ùŠÇ‰«WŽÜÔÌ!œÃõ ›?Tµ í†O¢ÏMáÁh|@=AäPàY´pEtS%Gߣ%†9~@¼fj‘«(­wÀEÚYvîôé8UtµJáÐ}2hUs“¹ÄÄòˆ»ýl³¹—ã¹RºÿÁÄßÁõ¶£;ÃmúêtZ” ó§â½‡-Õº‡XpJIS6ÅXW4}b(ÆEü"‚.àÎ|¼µ"š\¼E3Îâ\ö÷<¬lˆ•Ô)‰ñ‹˜Lrû}Á²·-"š½e)n:Éol_Ñø“`•Ÿ¤‘XkÚ¶þüppÅ䢼i6^á4+ÿÖCBG$¦ýZl`ù§Ôž{Ä¢¤îºîï- šî]™/Ú¹CÁ*5¨•2öÓ#Ù1Ë¯Ž­íâ÷ú{¬½Ñ(­2Âö>sÁ–¢I¾~_ ]eÀ!©"BÄK+¬˜Œô‡œ=B&u)ž:þHjvû*vÊÙ¦‰d[=ö4_f€‡ö¦;iwy×¢?S„Æåþ«XXB.‹þ#ÙÅ&†£BVí8Aæ·ôeê*0“s€WÒ»yóS˜•)"„7ç¶AÍ5¸·ìëYöåÙ’Óó¢RÉL–]gmUß»ÛÞ*±šneŸÞçg}Å’r DL„Y‚ÜK 2¿¿‘ý6H„‡âR9ÿSë²sÔãöeŽuLJQkħĜ‚I3©lî>SÁUM }˼^°+pøê°‘øH¹wö²ÐД#U!+dŒ¯å—(Àg_l8* ˜ÔØ£$·€{º¨5;œX·L€°jÍhmýùƉH»üm¡ÒaüYA„‹l!M|¾%W—öŽi¯€ñWž3nãvXQÖ¯O+ Êö©Åëk®ƒÃ1yg0øºXÀöêÙ µQÜ-+ü~|¯J«›Ç'¾Þ‚¾—n«¯ Á{¬X=M‰>‚œ"âÊKIO¡7›‡‹|Ïa¬+Y‰ŠPâH(J!ÿØü=ÿ+cjÚ$o]ȪY©-l.\t«!Ü>gd3M³€Ï§ ç}CQg'~"×+IÅ ² Àè® Çz[dËù,ü€TËÓå$±wŒmÇ•Äq‹NL5–Nô>sЈø[uâx"î­àm)øXe¦É>êèzáÕª¬¯lÌ(š¶ÕÈëÐÐ^œD™ ýÚÇýíÅ`"Î Ø^67‚Dû|É1f=#Ú%#౉%“½² œ$ú©dêëâW:!/kq•#]¹L öÎv¯Òî'DoR’ÐY±‡µ¢XÛÈÛ•¤{Äkcaôtƒ0®¾ùîw…ë_ÊjÒGð[®á7Z ‹’R½¥Âkò2û” ä儸ƒãrGv½»%JÙšPÈÚÎ3šŽtEUᔣ^Ÿ:ÙŽ¢lé!£`¾ÞÇJcܶ׃³edÝ vÞ.µ(=™× ÀžÊã‹öªü¸Óõ OŽ´MóɉF!ze‘2)ìþ×˜Ý ‘þÇÕ•_ÛÆ@³%‰)¤O¼Lûo,ãÇX1ºSæAþÆ‚f(HáHVÖháê×ÌOÎiTÃÞ±£7“þœX0O@/*ZÁv¾¼©·¾N­–ÚýrRFBB!­Ü"$Óœ}(2nX¹(¿Eiá‘æú‚€C„ƒ›Yñ£‚< µq”^–“ÁäP) ý¾}ãmI«±ê’ɽž­UsŽn¯\P·b@Ô:j`಼ν%@e4øÌúêȃŽ:ÿ£e Å×+P¶ÍWöZwÈ…ó:v†Y”²bš÷æÞ’šH/EW÷Ömj÷ªæ‚ML6êÎÕàQž¬Š¢5ÞÝ›äƒl‚DûÂL¸|¦¡Sõ¢G’ôû 4¢kÖ çd„g#}¢[râ TÒò ¶*P* Í!æQÎ5-Ÿ …žfXä)T2Œ]¶ñîZ¥Ú»*¶NIžôcè.·KñZ­Q$ CkU»Á‡î·¢Ã÷®”:ŒÑ*Ý_ɶ 1àöbö\I³š2Æp©Fõx*AïZ-{=½’ž¯BZÓ:wùޮĄ˜˜gª¯y#Ÿæký]wå^ÞPv™«‚°P‡ÖíiXñį[H+dër ¤¢…+w$Í1jÎ#A|L-ÔÔy°£ÉŸ p„r~-ÒÝÕÉÕœF#@@ßs„Õº¥­Óz8¢"·…mu‰4WžiNÿ!U¹QøËètHÇñc±v¯×ø±kb‚×ãšúÒOñ/üE™—b®­Ñæê2ñŸ¿%—ØX| ë1 ÿHÄÅàà¾|ý†mÓº6‡ Ê:ˆ¸¾š:NùÙ»u°âA9´)î×&M¯'ù¾©+f‰n2Ÿ'SrèÍd’^¡á$í²R"¨ 7àþ4Óô@À¾:élÛ{ß‹\Dt®Ø¸M[SÃOïãÝ#lúÖb!œømõR`±Â~X§OÛYØëИSÏ¢ó,Ûpú1™Jdü¹ˆn¥•,™ö&´ÄvŒîòBΜŸ4º!ĉ¥N½Vi)U¶_9X§™¸¨>=©r—÷Þ”#›ŒyÈÇÍ©EFj¬ ⹬ܒ9jv¹KöÄ3ûáþ°¿_ÉK°eþæ |G0lŸò)ƒ§ý;˜Âêî×Ê;êàB­-Î>³ò÷Hâ›…[ðý£ʱÙ1”$öòú–¹¹ÚX14&Ð*z(¯¥ðäw÷Žˆ®ìâu0®h bîχ’ÐLoÎfÁ §®t”„iê+€—8º±ÑJðÃâ;W²³{Ë="´Æ$f­š'gÌуëK«‘ÃÆw½ä`t„Òa¼‹èã͸dž‚ãÇBA| "’vîeËî•îÒOQ|¤×ÔÁ3W€X=<¸–¥Ýb#Ë,»+ Y² sˆßÒ¾õȥL#6†¹à|¿³9™Îl„ôíbq}¸òt;ÖdN@CÙyÀ¦Ùüþm6Ä%€Y¬s=@ñ®qNÇdÞeƒŒ«†ÉŽiEÁF¸D¥îF-k²ÎP²W²•gªQ†¸æä5wzâÖ£yêŒR“1ì£ôN ÝÛƒúúe íKpz%XÃh&-ówö©màÐ_4P¿> c ‘ÙjOש²»`bô.;¹dnúÉ#+â­Æ¨Ó^ußÙ4)ÚâÁ² ¼E(N²6Òdš3ä ‹ôC»…Uõ(>SÏö ©_RO¢žHr§àDMOË3çI½­,ß¼…ÜÐÁ×UdÝ;:+*/¶ZÌénðgÌexÓŸCšŽÚžûâ¯sD}G½èhÎçã5âlÛÏ4)"Ë:Éfe^2Î%cj+«òpèù— ü‹}]ø#´/wp#Ü¡Ê5±J¹Ê—j‡xÞôGcñ{T :8–N¼Ø ˜›2д¼ÇödÓ‡*¤Ÿ”ZS?Z6Mç© x¢Ï‰aÖ`§.V:Òob³åâÆò…¬4‚Æcûôñ,ÏkÂÑd½pÕ–" à\‰QÅ+±m‡¬™£\»« "E®Ó„w¼4ÿßD4ý˜yrz `Yéý!øtöXU­ubÈ»‡i?ï«}ÆùÑ0^kʽǜ#&:ëØ› ?šB ç½ð(öüø^m¿½ˆ‘Ø¿`¸b„)Œ®W~@G‰~¾hqƒ/ˆ ù­ÙÁ2ÒŸ^Î*W)¶óÉuZ!{`%–!«õ'9ö]c¢?îØˆfüï»#ßH¡w¸`~Uˆ»Iñ‡0¼³Ow]÷ŠJ—×të—ý°ƒo±ö©71–ñX½ ¿àÔ+“º–y‹í¸J›kúŒå§wi2öFÈ1ÚПŽ\J 2ÎqTbŠèˆz-C8øÙâ^}hÅî{Ýj|ã´.–®¯8;/ nz]kÚ1(Ñ|xj¹×³æ·lZ~Gˆ.¯÷^djL.fOTã=ɸú‡7Aúfuñïc õ @ý⎉!íB˜áÍ,Ðè­²Ñà|8Æ»äð› •© išÑ¨~ÜÛù&¦æü&–<Œð/‡š¢SfÑd§òEÒÇV_W’Þgƒ~ KÕŠL»X_UUÈ«gD[ Rñçþî/™`]Û^ ,® B*¿'„è3dÖ\’£ˆtLCïç˜C‚Rooè©Ïȸ‡¶‡;¾³üŠDõÿrú¾‹ endstream endobj 228 0 obj << /Type /FontDescriptor /FontName /DOUCFY+CMBX12 /Flags 4 /FontBBox [-53 -251 1139 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 109 /XHeight 444 /CharSet (/A/C/F/I/R/U/a/b/c/d/e/f/fi/five/four/g/h/hyphen/i/k/l/m/n/o/one/p/period/r/s/t/three/two/u/v/w/x/y/z) /FontFile 227 0 R >> endobj 229 0 obj << /Length1 1538 /Length2 7817 /Length3 0 /Length 8831 /Filter /FlateDecode >> stream xÚ·T”k6L# -%5HHÝÒ!)4 00ÌÀÐ RÒ)ÝRÒ tIJ H H êyßsÎûÿk}ßzÖšç¾vÝ{ïûÚ÷z†‘N]‹CÊn–‡Ãœ9¸9¹D2ªÒ/…\\¼œ\\<ØŒŒÚg(ø/16£.áÃDþa ƒƒœïe² ç{;U8  äpó¸D¸E¸¸<\\Âÿ1„#D² Wˆ%@• ‡°eàˆµóý6ÿY˜-XÜ‚ì¿ÝRö`Ĩ‚œmÀö÷;Z€ -¸ììñ¯Ìb6ÎÎ"@ ››'ÈÞ‰ްga¸Aœmš`'0Âl øU0@ dþS'6#@ÛâôG®·rv!À€{b†9Ý{¸À,ÁÀýæ-EÀ 0ì±ÊvÀ_½psrÿ7Ü_Þ¿A`¿Ap{̳XA `À yNgwgvfùËu‚ßûƒ\A(ÈüÞàwæ €¼”t_à_å9Y ÎNœN诿ÂÜwYf)··ܰå' A€-îÛîüs²v0¸Ìë/`YZý*ÂÒŨƒ8º€eÿ2¹aÿ-³;ø¹¸¸`GØÝÂø+¼¶‡ø·’û—ø¾/¸Àê¾°Ä |ÿÂör¹‚ΰ×?ÿFØÜÜKˆ…3Àl aÿý^ ¶úƒïqrÝsÀõëùïÊøž^–pÔãoóßç ”ÕQSÐaûSñuÒÒpw€¿€ƒ‡Ÿ ÀÍ-̼_øü;Œ:òW\û*¬àá?ÙÞ·é?»þE濆ƒðïXjð{Ö‚Ì“܈‹ŸËâþ‡ûÿ™ê¿]þÿþ+Êÿäÿ›¼ ú[Íü[ÿÿQƒì!P¿ îIëâ|?ªðû1€ý¯©øÏÐJá–ÿ«StÝÌúß&Bœä!î`Kuˆ³…Í®ü‘ëüš1(V‡;A~]*n.®ÿÑÝ–…ÝýÅátOÈß*ðýÜü{K9˜Üò×€ñð @Èûþˆï?À‹û~-Áî¿) rÂàÎ÷.€ûâ|Vpö¯óà¥~‰~#aAô7ÍÿF Åѯ\–CÐ òí}ØÂûHпá/k‡@>ñxïëô(:ÿÞ§èòþ«.ÄýEð›§÷Múþ}ë€Áî` ìùY¸…hí» Ö‹j)J7Ž/£Ï¦¿è¥°pxÍ#Ú\®ð0ß°Te¼ZAœK½ü@°´!Ç|&¹@ûÓk¯©3´9A£åÚûÆ4NsâK öÜ8ißXÁžTm/5‡¶ä–÷OGoÝ;Ô&ä%ÆG!<õ<â ·÷ÚÞ²ÅáÙ/[UÊ87e“Q:‘FÅÓŒ¹æ™3äO0œ9¨°¹ãOŸOeÝÑ*űaûìGñz¬òD_Îx.Whó8uR0PS£ž O0yIï$)‘}ò*)ŠQ ‰(²¢6™moÃ9òÕÐuÌ‹•}[ûHþÕ4@¦ c"$ÆBcQzð+T+»œ(§V°xò'·i>¶“FûöORψâC~ñÊðB ÒÔE ­cÑ!ù>-42½9”_³û¬m£bŠ«Ëb¯ðÏÞ$>žð5³¤Ô`34âŸxåH(/-ž1[K€™ZX»ÀM|×i"ZG÷4PWƒ.[¬.ŸA È_;—iaVG)ñj ÙOÖÑ·Êì¥M¿Á’›NåîöžѼ€ ƒ.£sõ€-ÑÊÕºuU¥o Ùí¥XT6N§€×ã%_ Qs8áO>ÉJ¦€‚ Ô4atSjiÉ¢ ÀÊÐ@ Hb÷>˜‡H…ߩɦš®uó²ã‡þ!)f§ô ŽGúlK •ªoBQ$º7‰jœ×º¾4oEÈlèòºû-ªþËÏ%íÇv1jˆŸÃ¡íA,2¨ÊòHI.чÓuÐØ}_ÒËr1öø7·L‡‡çHôä&և߮"J¨Þº¯>pkBŽ+RÔ›«~Dè;ûC–“R»L=K“ Zô¼*ܧÊó„°Ýý×èfã|Ÿ4R„ƒ‚q8ní˜-ÓãñÂm|7å›KÓ‘bDÃ<•(ù W[æs%žÈ‘vßüÜS¿žíI¸ÅÚ—Ö£{W°‘œ2d—DÃg šC™ÌuP3 …f]¼?¨5ÀcqéKÔ6ⲫ\øí˜“+ÖH‰N½,°Ö•îˆã2awÈ_Ö3L¦ì~Xkìpé§?õSÔ’•ª˜ìæÛ~èoóúMb¹•0‘è™ù’NÀ#þeO7¬¤èå>*Û$%éQZ}/0ý¼¼’“d3b-C1IËÁD~jðÝ»¾b“?Û&“§ƒu>H®ê#Éc<)>*½‰üKïÞ•)üÑUu™BŒþK÷ÚÇOþ‰ã±$¨|Ø®”¸t‚ž*¡ÆÑÃ3O…µïôÜé3Æ‚­·Ð®¬½ͱ>d!Ô2€£ a"‹ UféAi]Ÿ#ÌÚ t‹îì–U.'ž-<+ë«Ûòûe}þv¿ª+¾ÖÝ+7Q!ʤ+r··nÏMÙ+M|»Ëh×hkx‡ {¡LBr>oEÍö ÊY¨Skñž~kÁ[âùw(>ïåuöùõžÓèÔ¼4a7¥¡Éj¥¦IÍêðÝn’Œì¶[_th¼ «Ó´AÅ7WƤŠÊ‰!/âÊ>ž"tÒ@(¦m‰êûɦó¹,£sˆd9Ì_|jÕíà^ð`º%9Rû¦8$`/ î†í´}Æ»¤‰kP©ç¦Šý:ùûXîH²–E»ÊLz励‘iÞr¬8ÔäQÇ¥ÒÒÁ¹´ˆ¯ *žû°ª ·¯ÒYÊ–½nlÍXóGÛ”¶ØP5^e°Ít€z_êÎcÛ$šÝ[;ù|ý°,@PÅÜ CF…PxP(º¼‚0huÆ ¡‡Ç-÷ü™ø±Ü„|Z+½¦å@#ìÚªt«W­H®ÏÓJ……wˆÄÝš,†ç / ¶Cµœ>ñc“ÚËô¬ÄwR‡¹M’z;D¸í/ï‚(a:EöynÈÊÃl¾ö‘5§0AÕìG³ñÑv³*ã;}g)Ù›G¤´}DŒó®/çµÙ‚àÉQ(Í®P8ÛY‹CçÆ)™½Ñ„µÛ|qÚTŽpn{^›i’P,$kõœÃ’«§´ª¦Œâ1)½Ìƒ`Uz› !‡šÜجO܈9õÐQtEȇrú36B_XàÄ> 'O_&dÜóß2Ù‡ËÇÅݹË¥Z9³ƒâ Ñ V§Š­â ¸yØ$2´X}8ryW˜åxÀh:+ Ç1ší(»qÈX¥/s½Pͬž)³¤˜\àÁ_Ä%ëµ~ü²ô­æ¼»{FCÏ8bT^H=RŒY>ðÔìs—/f¿^Ç6Ðr·Q6ÛŸìœ2ª>|NIÕÙí\Ûf5züd“¢ü)L%R<€¡Ä/Ìä¾&»2Iÿøbó¶žrúºE±¹ŸË(ûýÊcõ’æ³rRåÕ˜Ûi…Ëïµ’;\¿\'Ë’W¾¼»e™l°¾©ßÑÐ4d{ H‡ó V§øÝ­qR㸠kH5ªFþ)æ °tÓL€£5¤Þ2W¸¥JÏùӊגº8Þ;õ´7, 7_³ÝÄWv¼Z«°.L•”. ½ó«¿¾Åâ)m—ɈÙ_Æ4²Kdϱ̎0ýç:6O"¿Dg6» yà®]ƒI¯ÇÓd¯Ö¤ùfÒƒ{·Þ8u‹ù< ¶¢Óû P‡©d‡ #·”íUHyXÚ£è[)Wz÷®fÝByªÉÓnÄ‹ÒpxR‘,½±¯~Ø‚ì¥99R-¬}Aá:·ÛOÄeâ”NC Mð½¤_‹Üçï'xì)Hõ_¬‚&¤:šiAŒËî&!´$Ä?±h=3iË+†«©R^ÖÇÀ>^|Þõ®}ýP½9mg¨¡gÄéë(XŽÖ˜Oyõ]—}¯„»Fg„ÚWêbÂ91½Sÿ43`¹ý<§V£ðÝT^x»[Ú‡ëTóÍyb½-ÖVºê…ãŒd‰½‹0±¬Nž H#oiAÖã…ÁÀ⯉=e×ðxJ±k©K ŽÚ·AO7£€~Í@³Õú5ø~¢ÛW9¤‘þ\‰eš·– ì?<¾!óÞÌŽä0Ë(0FÉ1áðj+KI¦É^?>Ã]pÆZ8h\#QÈ€ÛN-½ÝÄZp•7,ô<ãL‘u]Q:v`"*}bÔ»f."‡ÎéU¡ö^,‡–9ÿ±mzýtòÁºêÆGÒoÈá'÷Ÿä^5è Íç¶n4:Õ×ùŠmS_ˆ‘´)k·•µˆ=e4¼oÜbC àmú!·±ždBÖCÙ«B<Ü)§§¯ .ÎõÛ Qô•‡uô^›5®ÜBÕ×Í0¾K·ÎJ4? äsã:¯TŒY˜Ùfü”5Þ-™Ü¿8ØÒïŸj]uÚ]Jš 0]_÷<ñîǽ$ÉÆáæå¿Ë8Š IÄÛó]Z·EJ:©àOè³Y³¡¨ËœkoŽÁÙTÜÓŽ%/©n‘¨ß/bêD\®ÀC/ɳQBôÞsbf‡rЬܤ,Ò¥3Є’›N^Î §Í]›<XCÜ dxÅ:M{§`cô,ä=ÉÏ’:·Ÿ*£ù7@(·rÒ3Öhám=y—EÍñ,)=AÙ©-éT®i^yÓñUj™ÁDõss¯ËN‡ü…<±çdùbcšÛć\6i¡YÕ§'è?wbˆí+>:ïG’`Œ×ï(×\ģ㛥ðMÖêÍ«àZ²xäû‘YöÙÏŠäì7FÐ 9ù‡pÍÛb7XŽ F×€úQÖ$Ãú§RÉftóhÓêÏ”AN ·¨,›7K“¾áea‡ B'xl»F†1¡?/Xæ”…ÑrË)"ŠÙz%Þ‡…¬Š=d0…iö Ãô48.uXO‹¹4P9ô¬¢ð}7,‚Œ÷~óyþ,¡ÐLKgEäõ¾í€ë餯Û-½9“Šç²[%â”%œÂÇjñèä穞ÐÁm‹2@@ŠË~6jó!IÀ‘᳄!%ÆBggû[²ÅñBO4jT“nàX;#`bu- ›› ±Ž Ì'ü‡€ðíÐhÍå†rÂ.Ârm÷``šl¢¿íýÞ— ›E…žH^ð£^=«;mR+:ñÝO;¼ˆí+˜)“Rà þTÔò( Œ[u]i¯Çèx8¹ù–•¼âûkþÌé;§Iê-ôÅÚΖZ'8©nª5r›Kë0mMk¼Ë!ݯ¿ÌŽ©WRÂg¦GTµÉM#ЂËF Ïä—<:æÄïºDñ¢z”æ_Óü :OÐQ¡2”¯ý–èM}y÷Q¬mºg"ªÃѲÂÜlßOfŒƒ…ÑÆU¼9ñA.ëTÆ6‡ ŠD2ʨ a.ÿ»J8·ƒ[;´¼Ÿ®Ž•ùÛ¬xº—¼‡qž71ïæBŽÖKá)ªe5ªm&‹ü¦&bÝXÂä°â£wA¾^Ùê–ú«åzÑWºc 4}(æënœa'#Íëâu)ÎrÈf<Ë`ÞÃØx-çô£Õ`häXuÄ*#ç»ü°¡{Ïñm ‚†µàÚ`µCŒ ˜Ëa,ºû4Ù~°€ÍrEë@Êjù4]ÖÔþK˜RDR5i빌yTÓÓÅ&P‰ýTçî-Õg³\}õ€ÃÑ‚Þ ÝÐ|N¯S½”w‰„ʹOT9¬zóõ÷Ï>}Ð"S<‰¥}R¢&¡˜æ§dtmLüÓÄm4·±Íˆ,¼W+RDÜu°¨}A'§LZIôÖ6!Â[?‡í¨h´zf-ú‡’ÁvŠèÙ…·ÎR¡ µ õKù[fò.•­$ÏC¡A÷xæHù×£1Ö ½!h_Fe–^„H¿™®ÐÙ5 ÔA}„³ñag.4÷,MŒ€§Iæê÷"º[çþŸõ¹G$½¬íܧ”eÀãfoå‘B˜WG`SA^œô ‚Š ÒÎèâþ0ÿÉPÔëˆkd³ˆ-—’Û7Yœ,úý°‘O¾î?ü&•§¤¯ÔÐ¥<îoLhŒ¨ý‘T‚ûd`h¥O£_à ¥Åí~:2Þ“¹Ž$û–Ž ëÌ0ÒÄué%5ê­™ ^ӄìk€?’¯Ô²’”e#Ê˳$Ì–»=F²¶xI ¹d˜ž"M²ˆ%·‡’pˆOeÆ‹CÛ–'e|ÛëƒÑnoñ€ x®dÚØúRÛi߆TE‚°¢…ÎíãCºŠükŸ„©Ý¤Ç»4•YIŠ­ Oj4u¦†OöÖXæê•$ß~ž¹siù·i–®?VVò@æ‰ ªÒ·8{¡TV¡àøœtqi4lg;îĆBÉ‘œ}Ôô«vL¨ÞæØ0ïÃÕý÷â†ï‡˜–ð÷Ñz®he†• rûòk—¬–˜Ôª¸~–¿”¨×ΣtW¨?réØÎîñ®áÛvu^Fì„ žNí”y *Ɇ-æ“£4«r9=Ë[çlÓã¡P¬Ûæio£“›Àº€4ýXµ‰;pPÒtåìÆ#þ}ÿŠÆ‰ˆG¢>>}??0« =¥Rt#ˆtÖF{w­Ñu|âåO/#–n–æóºIı•\äk­¢Ú·ÇëøCWÑmjœ,£«u õiˆ6{•zY›Uõ5Þpëïå}Gµ…gínâtâ2|ö4À=NGš¡~¼¹•°¶0eï÷DB§šÜtgâ=4Wý5#"ÈL[ñ˜X Ê—EvŸW[±nl²膂û2eªÓëk_ñ Ù‰Íu½^í®´t|Sº¿Laš0ÕÒìVu ¤=)¥Ú³C1ÙßÎâžÏÙâ…ñ7 GD1RÇ Ïã°éSªØjœQ¶Kñ½Ð •hG¤2’«$åå¹N$²ZwsYÕ© WÙB}šË“/_ú–BEÖze¹L»÷8«ùÞá‡^uºup˜ÛÓ!͸«F®Å¥31óÊTÞN¼$£µ ͹«gr6&ìòÀ[3q~Þ•qêôæ¡÷åLÉŽ•§~Úy<:éñF¤´…;ú•Ññì«¶î‘*/ËÖJ|zªí¹®·^·ºî)Zž´–»/LÅ·¥^µÍ-dCøè0y<ÛÉ_z•¹2nžóP˜|Õ–Ä1Á•Y¯pq$Wp…³†¤š2 á “š PbÍR‡>=êÒn±ÿˆfEäªu•®±)`ûrj’dø+¥g´ PI+o¨eíûÇ[oëÞ%MG¼QQò/DßìoíòŽ4—¸àøy˜$ûm¯[º8¿Ý¦Øj ‚iÏX¢?__hçæÊÎ `NrH|VâÔ"ë=Ÿ))i—Öxõƒ‰_¦”ÅŸåg*™Áò ÎþlÇJ]Æ<ÇN¢„²hŸŽŒ½Ì4䫚N×àµï*n$®‰5¿ZQg?„IîñÌŒ+ ØS=˜ÎæXÕ»¡á¬ªJy#ÝÂö¹¥1N öxåìHü…•](-Qcãr©ùŸcwˆi®¡¡{0Ü”m¥áï¾ùÌì8_ÿõ®·™zÆhçQLÐ]ÈÖÍvšR‡#A>ª€P.ûžr÷žYvRçcóËZa7¯q;l»±0aÙ/ 2XŠìPlo‚u7_ q„p|Ô`v€o“xL¡Ñ%Í §úH'”*Nª@ÓmB©åç‚õ~GL¹Ÿø¯‹ip«‹· ­S·M~f¯¿Bu¦>·áæF¬º8A©Jƒ'N>ú ΘÑ;ø71Ó•_…%b:bIëµ9ôÂë¨jæ¯@èbÔ']…zl¬s úùðR<´Ó‡Ò¡ÉŠU¤ïò´ôe Ü%v5ZÄi—†6ÚÕeïPÇ>0§"kw®™Äª?ÔK3ž€»œƒ®ö³›6ÇŽ§ášýÍIÛTÙc†Cwt? ¯u{ÞL®Ó¨!ÚJÒƒ´ï $-Û‚¯gòX!A½Ra­/PÕ½ /aê_ßÕF‘>j޵ø´£µ­hãùÐLfFL†$ŽeÈâÁ¨ùb5{¸ÁþÜŒ¡Ä—מŒÙÆì¡¡«ó1–)º:e^ìo^D%áí.[èÃÞ¥ ê„™ç ìá°½ÀƒÌwT§õÑÛÒ$ûzm@§"¯CÑýPÖ4ªFÊxãÖ¶õ &bÞ9C9»‹ÝÀ9ó±/((„z§1§V•Ö×_=ÚR]rÎe±¹–µ_¢+Sà~²–*jšôiÔ=ƒ‘'ÂS›áîMF ªãÌìM]Ý–÷&~Ê›€Ò8C™¥Éÿ:¦‰åH£¢!%©ÕB+{ºû$$Žü9Õ¢n(S',nú,:÷Tï¡Ôó6{³(ùÊ".CßOÖË>ñ„tòQ÷$qlA,$:'56ã²ŽŠ°>7F(Ök{:m‚¯E!1SøÚÄIy†-úØ]|A“jϽá­`á…°ÄD¤Ž»'™•§Ð<€ÓæãTh5òçL§âæ’³*ià^D¤¨çÒPt8n«Hú6k›vì‰T.'ëöøs$gvö4ÔD2$9力®ä%3V1¼¥ÁÕ¼n]Žu+¡´'stGMâöB£ bkÚ(ò?zœóæ%,ïÑ6ùô¶`à 5Ä¢YòŒ«~./ûТ½äµ\B5 í&¾ÈŒÜ[c¤’CúŽÝ½~7øDä°ÒËý_;{^mëàûˆƒ,×íÃ>yt€×÷iFG>Ž“ŸCrJ¥U]íD^©½˜ˆ¼4@_sL=L§ -äë³ÖÑGä²cêVë6WBô~>ñsÜÈüÂ.¤1ƒÏ¬ò ór÷eˆ†]&?íjphi‰ª4ÇÄPÁrCÁ¼ jìv€Ô[(´µ3C=Æý}ÜQk™äõ‘â5eµXÛÕ OÑ >q@kJCjßA%0Q €d¡¥~°³çãá´ƒ5Rìçö„\_>ÓÓhßµ¥C&B‘«Âò&ϯªBã¸æsΔÙíJ:C¥Îù!r·<ž!/q½­^«èZ….FßE(pG3j/0„ô ˆ¼š•ÍP°¾Ø\zž„Ió ó5 ah·Ø»©Ë˜@± Þð¾Õ¯ ó{t ¯rj@EaRq‹Òƒ$n”䛪YÙ§Å[¶ºHL?=r ÓâU®g„ÛhÄ›0œ~‰±@/Ÿþþ^ƒ‚?­B뜢™¨Ü{¯íңк¹ÖUú•C¹ê´>#*ECEÇbüY‘Æ|öóÍé¬2G“\¨(‹¹¦»6ìCºIÓI—)'ä˜Y¨¥c6–³Ÿ4¾æœÝó #ònĬÞN<áŸ÷p^& JkUJD;CÔÄô/VmRi*Ûоtƒ‘ƒ‚…§Ô³CjžhÕM%ž’¯‰áøë¯qìl_>ràq™–&…5Œ;¯Íõ#3%Àîì9w–ð¢5±°ÆKæ; ‘’=Ä‚ÊZiECç¸Ñ%\JÅ»dÔd™—[ì7/ãêîl†‡‡Fè4V¦žu”Mÿ"%>fBO Æ¡iWVJ”Y0­?k<¬oRÓuNÚ2ôø†uvÚ­e<Ū,ºx|3‚gÊ+»ØÂ[ø*Œ] endstream endobj 230 0 obj << /Type /FontDescriptor /FontName /DUGEGU+CMBX9 /Flags 4 /FontBBox [-58 -250 1195 750] /Ascent 694 /CapHeight 686 /Descent -194 /ItalicAngle 0 /StemV 117 /XHeight 444 /CharSet (/A/a/b/c/d/fi/i/l/p/r/s/t/u) /FontFile 229 0 R >> endobj 231 0 obj << /Length1 1585 /Length2 8725 /Length3 0 /Length 9759 /Filter /FlateDecode >> stream xÚweT\Ù.n଱àи‡àî’i ‘nh·à,X‚Cpw ÁÝÝÁ™™;3÷¾÷ã­^ëôùª¾ª]µ÷W{­ÃH«¡Í!e 5ÉC!pnN @FUÚ@G‘y9@,FF0Üô‹QsC!"ÿâÈÀ@fðG›¬ü‘ª …”\ìܼnnA À ÿ‡…‰dÍ\Á–UN€rÆb”:zÀÀÖ6ðÇ•þó `¶`p ²ÿrÁÀf€ªÜä𸢅™=@jÁ=þ+³˜ î(ÂÅåææÆiæàÌ …Y‹³°ÜÀp€ÈsY~· P3sýÝ'#@Çìü§Kjw3ƒ{°âüä±Áë´UêŽ ÈŸd•? 쀿¶ÀÍÉýwº¿¢'Cþ6³°€:8šA<Àk€ØP—Wá„»ÃÙfËßD3{gèc¼™«ØÞÌü‘ðGñfy)M€Ùcuèl;Â9Áö¿»äúæq£å –2PîŒõ»>Y0 dñ¸ó\±êñú[!–V¿[±tqäÒ…€\@в±MXÿجAp?䀜 w ®ß‹èx8‚þpþa~ìÃÇËê°zlä¶=þay9›¹‚p˜ ÈÇëߎÿFXÜÜK°`²C°þÉþhYý‰U»Œ"äÿþ~3}Ô™%bïñýƒæ’ÒWÐ4Tgû»é¿ÝÒÒPw€0€ƒ‡àæäòó|þ;“†ø¯Jþ«±‚„ÿ,øq§þS´ë_J`þkPXÿK ú¨`€ùÁ›ùîÿoÙÿòÿRûï,ÿ‚ÿßšä]ìíÿ`0ÿ‡ò1ÌÀöq5ìœUèãT@þ—ªúsŒ¥¡ö–ÿëS„›=N…ÄúQÙÜ|œ@¾?í`gy°;ÈR ·°ùS9ÚuÏ=Ò€:ƒß5Q@àÿø‡ÍÂîñ>q~”ç.Ðã,ý÷ºr ¨åï¡ãá˜Á`fX§ýˆø^ÜÓi rÿCÐ.NþxìÐ`…aý>ZaA—ÙoÓŸHÀeñ7ú]—å?Àeþ——Àõo(à²ÿ|Låðüìø/Èà‚ý >¦rþpÁÿ†­sÁÝ ÿr?Öìò/ø¸°ëð¿vÆÂ{¼.þñã¶ýÿq7@î ¬¹i¨…hmePóe¹…ÇÖ7>œžÓˆs ýM9r×ͱ«3ÞìÈY©öÉíÈ«U‚ž‚‡:; Ý«ï”H’¹êfT+ó vïQ‚×Î*.<ÛÊmmFox!–Ö$?êµúÜÎ%'XHÙN¶¦Òö^Š=¯/½(±ùÎTûé[t$:™/6RP‹TZK©t…ÔÄd«"ƒó©ä·Ãx*ù½«”îAþõžù"vDðZ Åþ>Ž£òyÚ¾xòn§À3å7£€ ÆÍN9²›Xæ€óæ fsç!%Ê»©³7½$§³)JC/k>û¼ «›r«íˆÂk¡ò8dëóZ$©ØMN¦Á8·”Î5¥Õ£{×ñ™hŒ·£A~êãt±› ‰zpjÁ{ó®{ÝO,¼b«Ý•ŒµVÇ¢!qCÓU{¯<4w+?ýIut"²ý#¢ÒEØþRœnNšY?lå»/„û?Bßþâ°`oŽw#Šé#}3w‘á;õ@ãp£©–<¾Ú’Ö.Û!Üõ^}B…Ó¤4<ù†êcÁµ®ìENŸ]K‚íšÿ÷HÂé¨ü·Óêáû8à•m"^£"ºoá>Ħ3qç‚ú…g§ëùÚÚ"áÎ ØŸ,÷ÌM‚L:+¨î ‘w†~ÊÈ/â\Q8û"È Õ/{-S–ÖìóàÄsê|86"> Ü#ÀÔ‡jäœ(¿!S"oTDXqQóÊ•Ì|Û“4ý’¥ŒÙ.”Þr Ò*;.{ÁìØ[²¯k6ßÏ*=£- ö‚ä0ø»R]Ò‡Ék~HÎ`¦UˆF Åàqù|r¤qôÝ!#’µ9lâ§Iå/LhwȺ!·³„Òìò”ó|ZÆzÜÉå2T:kÀ6´UNI8[J͉6âŒ6BÉrIôò@ʯ—¿?q“âŠÍþ@¢T†•¾ß'¾„IÑïfÍÉÖ cZÝ>ÓhMþ¼] –t“>0mkýà¥TÐ:jl?¶\Í f> ¥4ª¬÷X yûq®`†H©ÐŸóP‰£`ô4KÛ1¸7•—âP„PQƆrܘ<œq7K}·˜7ÞxŒT¹YÃ'#¼€[‚ßÕ7§†Zp2xåû¡{[)ZeÓ$qд—J¾_aìHL~ü¹£o¥G´à0ö¤¾-±J§.ßÅmjfúÁ7 í ƒ<¡ÇæD‚ö³ÜôëâPÓÀ9ä¦6ɉ-Í#¯À˜é5¼@~q%×mŽ9Ç{GK^ÞØ Up%!³Hu.aªpî})¢Ÿ<Â.¶ÑyY‡`íkŒ6‹)4=ˆ¨}¥~Rí’KÉÏ$š¢¦ÃˆŸ› ȃDKIê‹À\¦\¤ÁKy0#”Y°7¡-U9h¯ÎòÜ|fŠßŸlôF&JœTœ€Ao¶Y>©”]®.f|Œ±Ÿú&ÄêÚ±‡iúËÇäë௛•õÂ`צ£Éò»#t)ISÐd´Î»MMVuMTtÂ&Ø÷vÉ+‚À­ ¦Â!¬W Âsv¥[³|­ûÒÉÝí>÷ÀèG¬>˜i!žŽ… î¹Aƒ¯úuYàUeY!ŒÁ «¥dãŠEæC“úšM $‚9 ÒÌtê(Œ¢¹/K׃L¾só}f˜`†¹<õ*;´%9•C šgì6΀’3éRˆÃ#ˆXÕ®V9"SäÅb7ˆ¿* t¢Dñ¦í¸‡Ðbsi†V6F<øR2•³H£tõËøñÓ«ØÓÐ%­*A›Pm²Ö|Ü×áÄ++ïë»àòñlÊtòO}mÇbÇHຮ7 ¼&ÖCIOú…©{ßoӡ̪;´”8ræ…à÷¼î΂‚ÀÀr[}}~²ÇßÃ@²T²Y“pžcˆðÆ1Îrù{A(“qƒžLxÖ—’AÒŒAb‡åø9N¼Þ$ÉhTÒ¾NýÏ1$x>H|ùdª›Ç#¼"0ž=æµfu%CÎ1uQN7íɾqÙSË4{Òóî0â:4 –†“¶žêŬó6Qëô"øÔÈZob‘åeQÐsæSÒðd•߆×ôD‘çÇû{Ã×çk,l¾1¾Ní]¡¿0¿ê©¿í$H¦Æ$úµ;Ëæ’#ÿèW¨È¶•"'¨[;‹(`†EzV+àb3Þ}ꎙ_¡ãþj„è3H¥uqB- IÀ×&s%v–×ë—ÕWÐnUß~:ÿ —è–i«H.BºÄaÇZD?T–^8bòk/AÿД¿Ï)kºa­§ØÒG·J„ÄR‡j9mÓ%‰pyt=ý¶¹Wu–¶0›éò`;£$Y§)0NïÇñÎÌFxJ§5WEC6^ Í+‡MÚR¥R@|6dQì™6”êP¡‚S+‹<­y5eê|bÓâ5nѤ2‹*ͤo«ϙ¼΄ ®jͧA*&r´h:gtII~ëÓVù_ðèéeå͵7¬ÍP÷§K—*ý扷„sDS¥ñšÉùlŠÂ9;Ü{·[¾aD~˜PôÃJÔ»º®4«—W‹a`Î_ÕWs›+o•Ž› œ|Ü¿w<»·[–ö÷ša~7Öa, ®˜.=á M÷ãñâûfÄÍÃ[ؽ3cÒáŒ×µ-;4iüºð³ ü"ÓAhzð¨FeQ߃@0bf­,O·'k1H9!üãRœbâ×­>ó¨w ò]ÂwýCeS/[ýFz”Ñœ‚ç;Ò é{±ÝÀËËÊlB¥+ ˜ó4†¿xÔN Üò”|‚º§´êU*“+­Ûâ7Œµó"Y½v/»ì_¡7ÆöC>ïÖi2uŽ&1Þa]¾0þÅS ®iã¶íW’’˜Ü†¤ñ.ôm¿È9 5Š^b.¡H Ó#6pe¤%Wd¿Ê6¬u!dý•‰ÚU˜‹’ÿ4²Y“‰L‰>0¨Š\€#a»ÝÞâLˆ?¯üŠ*‰‰,wÀÌÃÖñ@!!a!&òBÎèåÄCW§Aèf­—SW{† ,çÉyvGhÙo½l©øÞðZuðÕ{öÓœ¢ ­›É«ä"ßG‰ÎñWakMÕÅî¯Ï påê± öÆ%dQ€{j)¹´Í"CsvÌ5~+íÓÚ`Eå ÀÒv Ý®4+õ§à§Äl9q¤Q­€ƒïõšRƒ¾ÒIÒç¼Æõ`°|ò‚GVó|jù+‹àv 9ß\RÂø˜hÐF¢Ö(UcnL þeG §©éÁó%Á1·LdK©ýÝÑês›bhxÎͳˆÃunYdz³fqË–þc«ïªÅðì 9KËÄH¬[UX8™Já:¬n'+œWq†êsž0àò4µ(TŸ•Â4Jyµ™ätÓêƒÏ'Í—EÒÇHµ‚±<ï.Þ¹"XVªú;_¼LyüŽÓ¢¦l£0=%j\ÙŠWZ:ñFbóÙüeL¬—¶¹·:l¨.Z—%ÁS¯šdåsz` teV£¹_2Іä5'}Âè•övEé³çsçËõ&´™ÃÓCmàŸ>ƬÿŒ:– iY?ÑcrÔ¶•ö´³ -º{zcY"žIXü á]°5Ç-õVjtœþkÎ;/Nª‰Ræzb Éç6_¸Ì°ÛqGEì ôG¢®è·ñÂÏÎU7çyñ9LgÏ>°ºãf¿£’oÿÙG(%Éwº¥O®{<¡,µ•4ÒL2ðmÆÅiOì|Õ­šÎјM¥=·ôãcýŠ>¸¢’7@!v^œî,zK< Íëò¬­/ÛxçðçzƒÓ,Q™Ý!&MÏçKûšk¾16†í%ŠÚ;âôP\÷ œ±_‚çOw}Ü0r>ÞwØß¤¼üLu¶2÷á˜E—ƒ{Þ]‚IJ`9éö#T3P™9`çk3÷ŽœÀà`ºT¡‰ÛÕx¦¤>òÎ+\Öù$•8ÍJUfùA‹âYÌ ý(DŽ"ûtß`ó!¥&Léen@èFHÚ€¯+l©êöå–kªa¸9d&»§­"ÃÚ{ÙRþÊÌdÒÝ÷ñSb JO_|(è7d@(aÑ"ò&C° ¼xÎö­¡§è@îÔ5ñ+>Ï ~hý­ù9ž!…Ë+ù$Î^ÄfrU~ôaœàŸ±š•TÙÒXdLG-O2ïÇ|9ÃŒ¤¼™½šé¼ÂwÒç»Ýwñ»˜áoÄj¨ä”>F¹¹œ…Ohìu˜E¿ú<É“kµ·šì¬"Ó Û^2gvϺnCÿs»D@gÉùªe>N‡‹YNGÆÙ¢[yâØ€ÚXVgÖ¡s{ÝÞ(våWÝ©§ä"u›óàKÔNnEˆÌ‘³7-ÖFã­B°Ø`}¸úÖs&|fW:÷<ýçR%{°°«ˆÅþÔûOµXï°;JlnŠÖywõΩ…ÒêÓÊ:+ºŠ`#»·ž®'ftÕæÕ¥"©'žàÈ|lJ`ŒnógÖgOõ`5ôR²"§Ž9Ž5°,9gñæõh}g° OØæ© Ý%­K x™G‡tù™k‹NrfdÌJá¥éqÓV1ª/No´ ÂXZrš Ä›|óñ«ó­žhñîäû9¤Øo·…öC ßÞʳJEù¦æÐÏq:H¡ûÜÖÙéÄÅäþ»z¯A×3F§=»äx šÓºõïH¾ þé…_Á}º®ÛZ ¾‹‡t¯‡  ¬ã9\·è6ÞÌl–äw.á”BŸ­GJÄñ"+˜‹luÞº]®±=ÍB|oV?†åwJ0]èd…Eö…tyëòzjï2µ\††šU°Úr¯#!Ä,¾Jç„Í«+Øïne(yu+Hµ $­÷†µí•-ú+h?$'ƒŸ`UÑ…T¢Ht™á¥¾Õ§ÀºÔ*ÛÐh(o¨0‘ûjÌÎzÎ:Aæ¨'޶§DTödÀ÷“'½n>re?ò«µ•úJGœÕÈ17—SNüÊÆ=¶ük¥’q:©Ì}Ndüú„Æšáש>˸M^1ˆÖ* ½aïïäâu§'˳ušÕ†žçW(l}¨s.m‚T¢ž¾¡|ÕÃ4ayªOH[ûÄa;ÀóKü6ÑR€'¹×YA°ßL¨mª‰gdQSº.kä·—±Ç²Hë7r¸†cÎ l,CE6TfõñšMÊþrËB`™µDJ¾gÚyŽ=^™-+”Êâ:Ï-ð÷®¥±ÆdZztÐðæB‘0Ie†R›}ÞxQl>DPfR îÈñy +Wqá¾4}±-ÉÅèl[`¨.~nÛ^TÎ0!¯ÒÌéOŠ#üÜç$J‘åÉ[¾ô™™¸õêR¶Tr(¹Û^X´÷ w\9}»|ÂÚsUΩ¬pëÅ"-aÀhr”¼‹ß¤’¼YuÇÚÛé`'€ík0'iç¶ðÑç³9†…,®Åðk(|d¾óøK¡‹ÌL4RΡ’†Ê”Ögf˜æðï}¡\ stzïËX¡¹nmÙ<žsÚœ‹yñß÷aQ{¡ÿS‹EßÝà²àú óu´<›±Zgõé‰ÚÏËä„=‘b-™×s!8£å’k/W²¸ä\púSÍ¢zøfYÑ¥qìæcm¨Ó p©Jesd‚ØsêxÕñðÈ—hîòCL¿Y‰“óƒ”ærù"S óœ.ã·‚TBÛ‹·ŠÖvƒìçgS„ž¡1©Í‹,ÕÆ|‹ƒK­.te:÷ðô ¡¡ȬœèÖÿÄŽ.'mAkÍ ×ûÔ6Üœcˆº´#çBïQh Ÿù ˆÐIÞŽäÉ(“ç[T/ùÞ6ösNU˜1³(6Hw¹?™J½B›&Ùó¶ðw‚Þ¦—åJ™R2 Œ5Y»:„\«iD“]ï†pÑÜQIúòúߣ­Šž43O1µÕà>óºâÕg•9½»«&U–7ös#t™ &ÿFì¤vyè/ ܱ@¦u<\IÀãJErÛTkV6Òq–øäβ‹±rîþuÐ,½V ínVgúøÁØ]!½u§Ðóy+Ï!á}Öû¶CdÏMZ^Ü&2¢Ëa£óúÒþ0ñ¤åUÕØ@CÙ¥µ.êæ»¡á¿Ulî ?Ÿè7mJú:”å%uÁP©Õ êšm"À~o, TtÞÊÍçõ=e÷®Væz0NBÂÛŸ'žag™Ú6ÉsHüZïhô˜±ú På°;¬—Rƒ C[žþBŒ “Õ’C0 ‰ðv,»¥¤×Úè7NK¦)ŽÝŠ;ÁyVá’ÜÞÂÈÒz—8EÉTÒŸñAí×Ì‚ÈÊÅç<’ócŒn1F{Ì=Ô(BÔŽ%óÃáM²Ê»µ#u`•*ÆA®~CÙ"I\Y¶RÖü)â"šxÙ"©»F2Îó ÿRá«L"qsŽw4ï'+aâ%¸“è…ZGÖ„¼&‚@VúOßéò’.!ÜÊ4Χn[Ò-”xÝa¯æbÅ'2ÜÖ'‡V…öÐQ*•”+®¾åýÁ3(O)‚4ØjJ<¢A/àQVUŠyª‹ÎHÝv,–eÓÀ-¤“C²żùÉüs‘¦fæ Ü'Œòf^øLG¹ÖKôPÚ ÇôsrµÊvcHÛ;O-ÉP'£H|yÛžž¾i©Àg®€¸¢NOÂ÷tZ/«ÜÎÖhIÝ£†8ú:¶Û Tó Ú›½£‡QöV‹›9¶zZMwcº2ò%ÃåH²¯ÉF¶ L$)e",4rÆ qË1ýǰOCö¡ÅͽÏ_rœ%rºMƒRâ p%¨bWssRÞ¤bTøv”3ųòƒ¥˜%=ì>™°³°”f¶NõçìelšG5_*O/smfwYÑsª‘*6˜É!•£¯± ±Wù;½p" 3¨™ÿfšE×F0  <‰?ëL+¼BòÚE’pgléÇ…EPҼȺʢ9}Q¢}–ΗÕÐó3nÍ<ÁÀž±q£HãÁ(Æà3Íøîù%Õ))1Ì{K}‹ÂÛ£=} ž:YDœš$0x¸Þ¿æ–f–®Ìk`}šë,’èÅpð*ˆ™õüõ¾ü†b†S}+›ï§*ﻹ½ <å¾Ê›Ã_¦ïÞÇJ`¨ÉÏoRRææ±.ßÔ¨¢6°ç)wÈ¡h)Z;ÈgšB-HEMŽ3]ì$¥ŽUY˜—,¹õ›‹#} gm}ñê•êWI¬“GÅ4PU- Ü®˜e"ÿdô¢›9i#ÝlI!KñöF}hòÄ$É[¿ Òø–YÚæäˆ^'wÝ^•½¼f®ë²«kË pOGŽ·OêHSPZºyîDk%ÙãgxÑ¢«*>“j|ŸäO5e¦B<—VÕ!.7$ºcúæ u€êBtJ:jWÙIׯ•Ó1%ÿ[µ¯ æ1K?3T3µ…Á‹6ݾ»¼Ù;‹€*^"^#u„ûüjÐ^BVà•Üĉr/ÂÕËfò5Y;¼æb³DX?›°Ú:Ø éldŠláA•…¼:1`J4˜šŠ‡?×’Ï9?%ëêWŽsÌWü’,`mAÓÙ£¢)Úf…l3¡Q(=UvÈ$Ò­¡ÈÇ PzµLuaqŸ­³Oùâѳ)à¶q²"¹˜‰!_\–DàV†·ó€ö‘vv"¢Ë$Žd P• ¯Òç`~IïÛ²š}÷ G.Úž+9åÜ :×G)먿M}ù¤‰w–× Ï•ÏWGËþ‘~Е‘-7̦(òþ]Ѹ>EFqĦGšjé „£?eGþœ™—û*÷iSRØG¼a"gÒÇ8ß&ê—"f‘&~kâÝ®h1{UJûŽ|®n¬ò­_mýÉK'Çå³{G¥Jw…8A‘‡(Jñ™°rr÷Tê½gL…q}Æ’ï积QÛÈ1 ªÅ@ ¿6jû𯸎ŽùwrË’ºƒŸ@‘.(v–Oùt6S=†@ÌÙË‹©Ï ¿´’( J¦ßÓ$eLÖ;3(dˆ‚2PµßSÍGäZðóà4&ûkO;ÁÚÄÉ*+^ÿZ‚$‰#|ã)`“ö4©ôAº¨/T‰^ êrøõÚÔð]Já™Á(â—bÉc‹›3­1£~ñ´so´Ê0â °÷=rÄÖðV(ZøµŸ‘[¦°í\ŸÄeùçôNÐ\ÀAjcTX¥¶Š:ž."íZÈnQ;»¶¬qй{)Éu&ßEˆ¾T=f%l³ÊÄõI÷Ï»?è(¯ÿvÛëCZe: ŸßIÇ,§S½QÏá@߬ϡox’I#HøIž(dúNÓ‰wµX;˜ñÜã`i³•%Ê+ip-h4‡…k¤;©ú'Z+j6ÄÑäë>Š?ÌÕþ@Œž¤;Ò!aÜ58ï‡ò V ´ž0¯¥hË,V¢ÿÈEµ$ZÒ˜•šlpã¹Ä@¹ñ°%ñ øªã Óú„ÒôÖ‘b¶ß'fÓŸ|2àCA­¯lá+wmÛÉvf²Ø uk*.ºˆsdàK}Bmv€9!0 ã=ÑI‘í;ye…´M'ádÚOÉïi[gL€Û´®*8áÔôq5é:hà?n}}¥÷"tu–l·¼![s¡ýh.¿`ò¸)ë:¦K3ý ƒ:!o‹_Ô3Ž 9Üp9ëWdA|ŽŸ—L¿ø!»ÕN@Ú¢­›l•uQ”\n ­€\õ’Ô ë+†Ð¿9d.,Ùƒ¢DYÍï™'&™S¶mÉËÆ¥þòô“Yz¹ÄÕÕuŸwÎëÛûâG«(ÂMUžd°|{KæaJóYˆÀ=™³æŽÖ uà=èµeL)­ËÆ÷cöÈ _9ø¸ ¢ó áë {TK/q+<îf´3S\Kâǯ «³•vŸc%SŸ/6µDLè™±”‰£™ò >/@(Él*O–ë³ÂPž+&(† N‡${V…¦cÏãš>QfžsÄ¥¶=Ð[6sôtƒ§çJ"CÑB´›>Üø™u9±¹Ç+·K|NšB3gúûhÂÆ˜­‘×)Ö•u»F]Õ¦ð©~4"T *i‰7ĸj?>¼¡ª’¬¯IÃB-ÚžŽ‘à2Ж¦¶¿ô+ÿU~~ÛïAU/;tðjzäã$R{}JÁ  ÖU’°VŽ â@Q{˜Nª$“óà©Qî)íª9ù–Ý O…¨¹1œö$Ð-ാτ»· ‹R†£ÊÑ'ÒjíÍ÷¢šŽ¸¨ýDǽœdVà‡ÿŠ ˜+Ë ‰VCéšPdtÒ@ïG»Ú¡ 5¬¶À Å&—Ô?Î]ÞØKÛEâì…p5¦çÏ]ÞûdøÒÓ“a’jÑKÓ¨)×x¥gŠËD¢ç¾¢óy¸ä¬ŠQè9WØìÏ0Ôü\BÛä€ìí=j”*Øäºz`£\ó°‰—-aÐS‹×Ω„ Ô¾†‹®„f/ˆÔ9aˆNÛd±.9gÅ&Uq˜O,ÃZ.ö–ÓÛ‘ˆ, \9l…·ì^H—Mª”eÔä ÊtÓÙæÿx—±C‡õb4b`­¼‡ì 2H€ :Wަ®áز⸙µå0d2|Úª€]T]?å¼{éØãYô=> endobj 233 0 obj << /Length1 1437 /Length2 6774 /Length3 0 /Length 7743 /Filter /FlateDecode >> stream xÚtTÔmÓ>ÝJƒ È‚  µtJJ H‡€°ì.°Ä.²´Ò-)!]Ò%¬€€twJH R "Kó­>õ>ïÿÎ÷=ç·÷Ì\3÷Ä57'›Ž>Ÿa UAÀ‘|‚ü@)€’–’¾’  óBdœœ0¤#ôo§Ôņ€KýDÉ BbuAH,R h¸9…‚bR‚âR@ @”ü ˆp‘<¡`€?@‡º’q*!œ=]`¶vHìE\`n€ ¤¤8ïow€‚ÔÁZ ¤Ô {#äÐG€aP¤ç¿BpÉØ!‘ÎRîîîü 'W~„‹­,7/À†´èA]¡.((ð«h€6È úWmüdœ;˜ë}„ Òä`Ž00îŠõqƒC .ìõ}uMÀcg(ü°æ^ÀŸÝò þîOï_`ðßÎ 0áä ‚{Â඘#ðXE“éä€à_@£+ëB`Ž k,àwî €Š‚.„-ñÏ]Á.0g¤+¿+ÌñW‘¿Â`û¬ ‡(!œœ p¤+Ù¯üÂ\ `lã=þš¯á÷þ[´Á!6¿ ¸9 ÂaÏÜ êÿaUdÿèl¡H€(PB\(€>@=Àv¿®0ðt†þ6 þRc«ðõvF8l°…@}a6Pì™·+ ]Ü ¾Þÿiø·D&(€ÀÀH€5Ô'û':V µùCÆRÀæ0b(þúý}²À’ ‚€;zþÿ=e-uõG<Õü·UQáð𠉂@qq€8öàûï8: ØŸyü‡«:ÜøëW¾ØFý•3êOpý¹$Ü€ÓF`Ù pýCvs (ŒýþŸ)ÿÛåÿÇô_Qþw²ÿwJ*nŽŽ¿\"þÈ æèù'K_7$v´Ø…€ÿ7ÔúÇkA!07§ÿ¶ª#AØ•P€Û:þÝK˜« Ì Ñ!Ávpæ½á¯}s„Á¡:Wد'À'þ— »d`ì3âŠ%æ&+vã¿§øK†bwêß)(ÃÁȯå€\\@ždØÉc%Q,°[ zü¦6@€Ž@b]Ør}6²_S(üRý!‰”þ–Ä%ÚKB½ßÒ¿»¹¸`3üMlvÉ¿Ÿ(Ô &›ýˆKÙW5W)Ütç[–!ÜM96âÎJ‚ìR·ü¯Ÿ‘>÷¨De¶SPå©}‹¶â³ãÌÅé}ï/5¬hO‘#>V•M[VëØWG¸“ Þ˜[ì)ëqrŒ“oKºtáè°DRµ’ÊAl»ô9)}îUwÌ$¸ß¥+R×nÒnn­*J×d¸%i´½¢‡|oÝk°&zpã^ÖŠSLàj”yx²v*û#™æ²x÷JªåžþÞyêN–¶H TÀÚŽ$µ²tï­‡"Ä•Fó¹×ϳ QßRi¼­Uiå¿AºJxi×| \€ûFKF½gRærÜÁʯwò K)ýh‚8Ð8?Nˆ})µn}üâ}Î$e|ývÁ*Oü66ŠÊlÿÜJu¦«Ü~H»«Q6)å‰îëØÿ)ÃþäýxJàho€8Â))]QHI±£V¶Œ¹p¢ñ)óºSy—Ó&/5ù%ÿC<:‡(ª-GŒc:W*¡GÅ„DgH³qθEt‹S0Uø­ç9{wqÃ]I65Þ±Íì×AÌ}£*)^Õº¥Ê/äÞ¬íåðRZÊ% {×ÉôÛ}úÁ&ÊpAýšÿ@ž§,|S#åÖt÷÷ö-¶åÕ¥¥ÅŸj)CT‰îá{°óŽÖæï–´#¼Ç ÒÆÈ»âáùe¿µJ‘û—èk» \6"•‰ÔL/¦ygO­Wß2^¸¹U%yQ „ØÅ˜š÷~±y~’xcÕøpM×VŸ]Õ^u·»”ëÇ<Õï>íœ/4mÅ}Á óˆ°”ÏYt!ð‡BDëÅÐz˜ˆBøñÓ¸ûµ‰“ÃHU‰½ç—iª{õí "²öë‚ïkËEVôÀ¦È¨´yÁ¬tH.ÆšHj(ÒZ8¹;—8¶>²¨äÙÇÊ9c’g¬]-Dì®ûIïÒSé±rµÊ2lyíÌ-ߥ¸B"ÞB×DR*AÙO%?™Ÿ2Ý« (¹Xõ¢b7@[8#M,yÖ:¾<Š÷KnÙäÉwÍú¿`Ü“4² ^©µKolò^ïýfaSæ}i= $(€°hphbËØJÄzùôËÒ±sËËÉ:Æc\«w½>Û›´·1¨äsœ+‘z¨ˆá-£Û·ír$ôîù|섞„r(3G]—±È^¦EGu^ßbòHò—£Éqv×bš–Dªœ û QQìIv¡¤cc•ÚX!ìLLYød™,JzjØòMÃL·ò@#ƒB§‚œOh϶X$pƒiÁu6`ýÜ+:ø+ñ½]ÌXîs-‘ÊÉ8”²Ä˜N÷†¦A¡ÆÜ Ï[jfè–-{û!kÍŒ¿Ëià’\(k•!ghgÞ™U\¤ô*P¥à”q²*<ÛWÚµ¨.ß«FFÖÿl›¶UE zCÕûN};[•ÜGÕdnŒu+·X†²8ÈÊbô?Ü´Ë“­ ½»ÍMÄÊyMMhôàTÛbÓYõcÃ~U“ïíÝ;í˜Ñîƒï0dGÅ»ëW^39Á^›áû¬H·Ìá² è6ø®¤ Ï^3ò:[lZ½µ9ª)BB3óáùíÅãëÉù\išaS\RùìjŒ:yî%¢Æ( ¦6õi1f±iÆRwŸãŽ ¶öŒP,Oz¡ÔõvË·GÊJÛ¡W­qÒF7|zòO % öŠSI!ÌZØ\ËsÏÔ­pÑxìˆ×JL“˜Œ:OGê^I•=®V+­ÅE¥œ-­×ò„}EaÖxãÉ|l&ZTËY;Úº=+Ü&ÙÛ>HCC¸ HÝÍ™Üí£Kà_·ôòL΂šMí®ÃãrçAÇŸ\òÚ“Ú¶Ha¿,3™±÷g!€Nº›KŸê×iekªÆ^ºpö/ì]\~; eë‹ä°ÙdŠ<¯)zìvÖëÞÝy\ÙÄRãFx³M/‚øþÄ<”:VÌŠþ0â>ÅIXv‰bu©§M9Šßçûê,ûYƒ@Žßdˆ=ÇñÞ×›™SÏ-¾à0 ¸øO‡dXX8S’¤\³EŸÍ;ÓX hð°û&bÞÝÿ˜|‹¥p]-Z„“üŒÂÈúór&Ç‚ûISRñèÇ@=Æ)²C%tm’ £¡]©¡ÌÁÏífŒï `™=ê@ùEªl§ˆûe-–6ç{/…µèÖÆÈî³jV”‚ÅR:?TøÂ§ª9ôY¢”ã =¤°œCÐ…°¯ÞX!h'³œ"À¡!À¹ºÍ6“6j¢pH” î)I9LÏX÷g|Æ*1à’@u |t¥8Ì{]cì¨K‘S¶`T’npUzSZ®ÜD(…Ç SP#ßÓ#nvç°Ìº¥ÄwCõõ3ÜÕwôŠg;„# ÅmöOÜ1ª+Ö4KQü´Wä²õ·ïHò]Ä~޼˜ŸÎÌÿüêE¸eðÁ=ù=èÓõáEø4$3hñQXÄjäþ[-í™ÍË›ü–¡-:ÐJý†˜–)-áÃ÷?ºkU’KOæ…”ó0IØØh-ÛR˜›±I|m)Ï`äkÐkMB÷ñ^áÅÈy¨v¨ì6¯îÁfÕ!™»eÿØ`°ãçb}n :Ù1ÚœÛ%¥ïäÇx)ú7ä©#fÑn¯Ì&)òŽT"KßàRΘhdõŠ,º ð´Ÿá9®z÷ÿ°Æå\¤(·üªtñb†ÍŽ™¡|Âþô’Gü­Ó-U!]D™[D¥¾Í¡†M¥)ª)`õõW{p¾•yûn]H:o„pдþÌþ´aL~{‡ÁÚ0IË‹Ü~‡Mý6ÓoöÖþ´™ª²8-} §Î”ŒLDÖè­¾‰ô—ðFÛð–»õOJŽ¿Æ¼%÷¼ùœ6ô˜µ³H•x‘b™ZíÙ< *Qp9/Úï;ËÝs‹Žü=׉¡h:Û¸-‘÷ZøùÊ9ȵŸÛ¿H,)˜X<|{ùEÈÿEéDñéÖ‰BÓê9GS™¦YÛ£#Fpvv%Oëmê”1w²^S#Ó/»ð ñÙnOÒ†–ÎÀXO-2©†ÙiqžF±qϦ\Ÿ©**WvE$„ª¢wè‡\NrFÄ–d9,ñ‡ÐBØÖÊÓ¿±¨(ØÑ&~ÚHòw´ #NQZ#ô/Úu'WÔªe“ÕÔÔ‡€&0¶Ñ9+ê@ÊfK –tMÁíˆøC*ªÇ²/¡<Ü]–MÆY^´c Fç¼Ã^T¡>pkŠ¡¶°Þ“ÜX}y‘Ôa\Ý;M½®Þ0ËŸ˜«Žxg^ÊâµC&\S¸g„[µ‹^zC)Ðnël‘ë¾ëÏšªí4,3i%¯×MTW8£FmPI>Z;pÇóÅø¬dm.Ÿ_bÞ®9ïD¨¼ÚOþ¹í»¼¶Ö5RÚ‘ ¼ù±´Šº½lø…»È¬ô†è\Ùö’'Ôû÷Ï¢ÆÓ%&Ù^ßbHf©sNv mÒVtà¯h•¸|ö@»ïañhî°¤m‚Ø0qºÜ6Ø Ôåh£&ª¸ÉBG~©gŽ^ݨ´¥¾ëìc+s¸w mWCÖò¯7ר"?PjðW‹q(¶iƒÞÈ?c_SÑžŸ4OÙ±-I ZM:]@Ÿ`B»`/äc]üCã—Š·W­ÑaÕƒórÝa…†cD&ãðobxÉäû 2WµâõÜ?$QߺîÚL˜µ›®¯ªwmeW?Iû¤ö…ÿunÎç/OÕyÕÞÚêLùv}_ žéõ(¿nš¹J@HÏSþÍ ¥Üé9:<û›ÓñÝ6æK\>kÄS%õžõ2œ«ú½çÞãÍ‹‹†×Â-ŒC¾ êŽè¤s)eoÓà²oèŠÁ»ö;'¦Ñ%cšNUVywAë3ö¤}i¡æ…ki¾ùçµèMJ¼ ØŽG ë)î{C"ikƒòêH íãõ8ÑÙ¤˜ÐžþbïY-?â}0ó¡ÊÞ^1b¹ÏF[2^<5‹~-ç‹9ëþ)¢u‹\t›õ>{|Žë4ê}™ÓŽ6LôÖ32'Dü§Å‘ {TúåIÀâ»Q§æ[ y6~vÒÆ²8Mé!¼N¼õðÚ=ƒø˜-£Cö˜iNŒÜ³HÆ›‡kd[„ôWkèÏËrðFÝ—gêtÑëŠÚÊ~މ8JQ2Ib¸ð:8°ï4„ºÜ@#†º­«³H…×ׯlÍ@áÙhçìÀ…ÂÏ)ÂÊÅÝ/x¢áªb` EÚLìk¯‚ÅÚLkÉ*VѽDÌ;óêY³Í’!³4’êÅ ÎÚqýÒ!ÃK» ŸØ­§\ãË\)üO,ò'°á†íI31UéV!üÕé)¡#5‘o¶3 àvY.·Y=hMBhÉ©Ôf¿³Ãrá@–XÿZf”/múw¤À‘s@ÓˆíX¾KEÄðÔ2‘ÙÁƒ½ëìše®ƒ+f§¡,S·Õó(éj?ɇTzB¿…Ÿ£ó¥ãß——!É«âùéhÆüÕ#P½ø-a5æDÑÌ*õ넊—kÊüš%… \²ÒÏʹóÅ/»Þ>ðûß=3âé¤ui¶ðv#zsW’Ölú ¸e@†ü @ÌlvJBP©EILüêHè¥ùÞJé½Mà‚Ÿ¸ù·Å m@?så7ç†dw ý®=¤‚žåµüýb!2SÝg§…5ïæFJäѸŠiÁVo|zeô,’îâ µÌì³7¬¨„™A)›ê{é¦ëJÌ. æ_êÛ“ r{2Ù¬@–¯LY¥>Lf8`èù†7H—¸ç%l˜T}ó¶ÝAå$\¼TìÜ-Íc³œEºµ–%[ãÚ9é£Jß.nLf =ÄN€m-câ|-“¹ÀVe#¹sHã(zT¥ ,ô½ƒUŽß’}ô z{û«˜|aˆçWüîfˆ÷»‚kìßêÊîŸS5‚rw¼Û0M¥©wo›nÖ v*ðêe…œ\0|½g`öB‡J'ÝÌËwàv]Õ€hÃß}ßúÌëÕI-q”ZK¨uòxL_.p¡ðgµmWÓŒmÇËð–ÍŽó`¹Wý¸º±•d‚¯îÄçÎ>$f`ÌÏ Ð˜p(1­H–õÈ=#%óÎÅÝI¡WŠ~¬yœ*+&îlÓ&tGZÚ<ü냕zª8’Q¼wÆõÖ~Mwdè|KýðÈò/Pß{˜¤ËðˆÂ<]kÞáRÏ$T«Ó/9®Ì½ÆýÜ•¥È¾B×à±9ÕBs³6ܺù‰îð[œ‘Óhqó÷g¯oô—k«œå”¶¤&éô~óv mnô¶£t§Èàï£CX…Øœ:§ù­Éây$Ìfå&rØM±%¿×pU°n·3ñZ->@z6F™w‘ÁÔÛ#ÓÂEuÒ-È"‹¹é¸”iþ2¢ tÉÅŽ¶’80±»†¿q<ìˆòUúŒð.‹k:¾Ö4œ©:{²QÂí#5’Ô&С~Yå-6ʼ£<éðÍÉ~|dZIWOŠÍôin>@¸ÂçRP„åÉXëòz1ƪmJ$ |}ülŠ|ßÃêŒwbÀ€0u!åî#^M]ò1Ú Œ2›Û µWH. PÜ4;sƒ¡ë‘^ñÑ»ºl'¯;†N“Z‹•€Ù¿¸mÞ'jvOG3µ¢Í{˜F{+ÚoÕÝHOPBÑÏ×@LHó¦:Æ…#ïõäóìÚÚ*цÌQ‹/¥¥O :–x¹Ê`LùŠm¾^D )ÇM¿ìÍ{‡g’†ˆ¹Ü;Á1‘kE´–‡4©ôíËæþÅ{(Š)g÷J8áÆL>+ŠÒ)% o{\g¢¹é(Mú/žâ®>I> H?+Z) Í[ ‘ïxÕþt~L÷¨Æ^;_5»Ïü•-ƒy¡ÅŸuºÝ¶74,j ,¶oŒ©f쉼{¼zÊÿ ëp#n5’s¬bwi<WlHt:]ݹg~~CŠz‘–ÄÚ‰µ¨­™¨ýÃDøö×ÐbwÊÑçäR,IÝµÓ ;ûÏñ_¨ Ãe»r–1]“)ß®1w÷÷–å°ÄûvAÇݹ¯ÀÜ{Åæ÷{Ú^«¾¾<îÉ[â±ÆŒ=7­i‘v~”¶á‚ÜÏN$MsÉ(C-4P‚ÀIQûkúBè7ð–WÍõ|©E1@CyEMéã×Y…ÌóIß&.æƒs¨Û-éˆg#Œ‹÷°?Z3|8ß[x|s{2/ùåCT…¡±Y]I{2é»vTfã!­çÄI°ä)õ­çQ‡3ïõà! ã²WO㺥B¯9˧aØGSð¸b§vQïgú«¸mŸ×ÝyD*î`wÊéþÁ¾@ò°Õåát Þúp„\åGxâÕ’HNÓ—óÊ ! 48-–˜Ð¢t%Xå³x _.Û™ìn$®c,ب8Nf “ÀÛ\‚s¾èt¡ðC1*ëY%Ë-Ií÷ÇŸlƒG8cÅUE¬ñ™2¦L®;Ëì“5|ßPœˆQÎAÏ'A<+T³0ãƒò~EÆ7îáÜ(ÒOežbŠäÖç&é}A'¨ªf§¥\9]Ž™f§N¿ú© çp’ Ĥm¾TcZfþdJ®KÆ}ÈÙóXƒ*ææ[^³üâJI³eÁ£wÑŸJ¬øýw!k´‡Î̪À$…gʺ£½ØZäå0½ý—°¡ºÉå·ŠxÜÙNxÔì«7z)·ÔhÅܯˆúö{‚×úˆžÊ.P;‹ Ä|õx;Šá]½„c¶GI1ckMÏÒî¶D›Œ"ì7öäà[ÑÇ>Í“›Ss1^A|1å,•Y…Q_¦ón{Á|‹Úçn’No1¶_9R°êYw±UI¼žæ’žÈ!ëä²9*{Hž-ãw•¸í*'º«'úÅ]UÖPä6†.‚€›‡r÷-4^UÕš&ãñy<ɲ¾EZžÚ‡]ÜÄÜÌ«Gô.¤/HÆ÷ÛÞ[³n>W¼õÆòsòT…Ç®‰ë^°,dêkŠ~Ôþæj>ýDa!‘L_FUiE?ŽÖ5Z8ftŠO篔ÄcÝN)—=ªLçÓA÷Ü 55Ì+*Ì"–±¨r·¡£š/šX /WýÎ(šˆì”õäù‘={mYÞVÀWuã^Ç2è~Q*Sc†©O.öM¡ß×k-fÙ‘hNâåa«×lí­?Uùî7‘ÉIUUÃMŠžÍ²MÄdv9"¸ÁYú“Æ4®{cÕ¯Tý‡B]¢ã›UKi~QS}m Tºš8‰×F<–hÞ4sEžü7ô©^þ´tŸÜÞ=Ÿ!—ªN g÷+qÑJýI'D@Ótd“È£ËxVµÆÛ]àúþ1N¶ó}={VWYŒÚˆÔRÆ+u§SÁ2E}&0ÞÙ¶W4c<ƒn‡×Ü¥"L wÔ¾‰õIׄ1ñ·gì“p*&¶å0ço=±Öv>“#J±”:ùàäWjè"7'‘ÀÔ¸}#][²ô”…Ëêâ/7ij ní[¸ÎˆÚnœÚŸøhÑû$溗¦ÒrâªÆÉMFe«itÖÍÙá» Û8å–wÒO£VÓé ò}¤5” Díkýâ>c¯\…NÂÕ×eSì ÛïTG6Ið<îË4Oo—äIxY¡í²úà->ôð­P,løªãúåÅR¸¦²úT `õ‚nptª6ÌA×9º-TJÒÙ³âAâÅ h}»‡ñP£þ†LµŸî”@.å¹}’YÏn'•Ñ™v³çt@nWæ -BßìÈ+ý¢:ÂIO÷G-_Y…GÀ…_cCÑøÏ¨!­{„)²”<Ò›pÊÐí|yÔ{zÉšèX"óIÎ/4NƧ¾F >®vÊo8<éí{šVæo”,¾C—c¦RÖ‡h‹Î—žü€â“ýÝçö“äõMÖNËóÕÿ -á endstream endobj 234 0 obj << /Type /FontDescriptor /FontName /MPITIK+CMCSC10 /Flags 4 /FontBBox [14 -250 1077 750] /Ascent 514 /CapHeight 683 /Descent 0 /ItalicAngle 0 /StemV 72 /XHeight 431 /CharSet (/A/C/N/R) /FontFile 233 0 R >> endobj 235 0 obj << /Length1 1583 /Length2 7014 /Length3 0 /Length 8058 /Filter /FlateDecode >> stream xÚtXlÛ6Ò--¨ÀèŽÑŒnîl0bƒ1rt·ˆ„J ˆÒ©RÒ H‡’J Òý£ïó¾ÏûýÇñ}ÇŽcÛ}ç•÷yÝlLz†| ;ˆ*Žâò ‚JÚ*f@A€  0¿  !› å ù—Í‚ô„!à ÿ`(!!`ÔMŒº!j#à€^® 0(ŠƒB‚‚’ÿ"" €2ØæÐæ<@À!ž„lJw?$ÌÑ u“ç_œö\ ¤¤8ïow€‚ ³ÃÚ`”Äí&£=Ø`ˆ°‡AP~ÿÁ)í„B¹ƒ|||øÁnžü¤£,/À†r@!I1APDT ..üg =0ìO!ÿᬇ"’Õ{3¨ÕìýGœ6„ ðÏX:ˆéBœÿVº• ¨ ýÍðÿ¬÷ß.ÿ?™ÿŠò¿*ý¿+RõruýsþEø8Ø æê÷‡q#]/ÔÍh#n–þßTSÈ_»« q€y¹ý7ª߬ƒÜÑõïAÂ]j¾µÝ%_>FM®ê¯UŠi]”Œò%'X…³åÛeOÐ2ã¢øèñ¹)v}oQä~ºf|ð˜‡0p+Q¸m±(”t:á?Wf$äÙFÇJgAKuHñq„­ø=ýÁ)ô«¢ù‚q¦$¨ûµšœå‘Q(ÊÅ+‹C”F—Xü9hÉ_¡Ø§˜¶¥ˆL$ùh‚ÀßU“ -øé“»yï°LIÛAï>V»•¹šÅ»ŒÄ­ÐŒ«"*Þ¨´OÌ&lÙ]ù\aKÒ¦—ºf³d¯hÜCÌŸ"p¿Ðøä÷N-É?Á²ÏxÍ¡A=²zÖJñÂïmhu7×¼­—F¹BÚž#b‹ ïž¾úˆ…í‚–KK¯²Bˆ&æ]±Í­uÜ„wüì˜ò~x‹³å8µzÍx­I¤vгDÑ nðtêÐBqõ9çÉwØR4‹¯9´ÞR@­«=äDÛ†ðG⢿ÁÈû5Ž~FgYR+UÜɃ ÿcõÈ×U~¬/X‘8Äu÷føª}%„3Éð¿ì,ɆûËÞ]k¹-y¬3’åÍ÷ù§wÁ"×…‘Q27}“†V`îûU__}±ó’=>¢÷" lI®`_ mʸZO0l=A€Þ¾­‹Þ(Ty_ûR¼mùHáaú§Ë#’˜^Ë Û«*ƒRö Ö¥RI™{Ä8»_×jÞ“Sb”•rtâz?A¬nøA ×Í8×&&gm7*›“’Qúó­˜ÄÌ{Åöë°hìTpܲ’œõé;ïŒÔ«Àr´…Óh»Ñ+ßÂæ\ÐÁ¡»å-zñ³2A¡¹ÿ±¥ÜãàÓþëÀŒà1q/\Ý|¨C®Â‡¥*œgS´-o/F[ÞmA_Y¾ßl½7à?·ŽÎ›%B’)M U´šïÛUê.ìÅ)ê.c(Ç<…®^Þ9õ€—í8):Î<„6FèRš–E’½ÖœsüV óÚý>ý"{ïèT§!2y*í„¢ì%ã±Ç+à´!ÿÀä žGÍ‚bƒ¥—Ž‹­ß|ôΩ˜tó8Þ)Êë#άd<—i15q2¿Ínp….g þ2ÛücS)FßWýÈ.1Ï¥Ð&œöóë‘eüõª+šÜ;m¯ï.mr´ÉÇÐ{¨—„ëѤ»ÚšsÉ!6Gç63]jà9£V,»[ýqƒ‚¯Ñ+…ù$“«-¸BŽÒ+VdÏâcø±Cšeâ KØO§%ãLßi7"“úPõ}«œÇR$YqŸã~Z+¾‡H”x^­2@+ÒTÓð¸‰}J8íÕÈüž¥ÖêöiéÑîCtÂ…—ÉǺ |EÞL  …5½Ñyâ„’DJF~L|~V)F@—{8Á0Ë«BšWÆÓßÄV¹oCªH2Ô(ÎÉEuéK­)ö,õ££Sÿr—Òut§‚àeŸ­Çö¸ßXî¾nÁ{lñuª¯ÚšL­¢Uœž´Pé~Aü&uŸy‹MYǺâ®AuÜ"} £N¼$Óª”‘üç…g Oeì|8•Ãßî¾Ú…º(ÑãQY†æV¤ÏúÒ%ÌqÈøFµ›«ÿ|M "ô$-Ž£ ¾,ó‰>ML,¨Õ-l 1Ù¨ˆ‰„eŽ?ˆÒZ¤;cKI£COøÍ=ÅTÅ »`VL-g¯:dß¶$OzFBr–¬ù”WùÓ>ͲG±Û¤+u³æ,gkX+O?í)-áxñ(âñÐ#eµhCÜ.}ÖÑ÷[÷J&"ZñĤ¯¿Táí2+¯·:Nä©iãØ<û¡K²³æÙ-a˜wͲx*> oT•F¾}ß‚Þ)5#×nŸÝ"Íã¤(Báù&t}?°ÅSb«nÿxÅ›Š9‹g‹iÍq9 ‹Þ•ŒVŠÍåûP KXÂsï-f‚°wl_´_w`+¤ˆMFé ƒ#?°5¦Y'Ò*Ÿ×ØJ­Éjl6×®ô¬:¾aÊÊW2„}Ÿî|Š€÷:Þ‰s¥õ!„óüÒéwç^LíZsqhÚ¥p¶8ž,ÆBKå—2ŸyO-‹»²¸¬t&ÒQ¬±/¢Úå÷{;4î<'EÇ$|`eÆ ”º·>e~a]šd›Çî¡/jª-"ªà·ö1Ê"L y½+Åf»¿ò÷‚ÝX–Ù¨fdGF¿ns+µ~Kwa.x,ÌHµŒ¨‘ç60žâMš‹Y‘¾Ç"Ò!‚o›à«Ü³Ûu R™D}a@kGˆ±€¢3¢*ž[û|›Ï9ÌTR(ÉIãp¶Î—9?׉Á9 ßQQè”)¬ h뎃{FyLÌú,—_ÚñÎÑ»g¸âhSÅ$3,⪬û ›šcÂ*mú?ÉQÑÄ£¼÷T¿¿ð™B qõ Ó3Æ2L ¬ð-cézW‹bu“·Ëû¿Ž“X7² _ßšùpºË7( ñƒ‰` À¿OÚã‘IJëU„6ÞÝÕ³”Óßñ¢Šm´Ì &ÀŠX¦É­Ã¶´IOZжe·›É"¥ï¯ 1ÃXï¡ÉOz»Îj>Æáæç´J‰X“Þ5 ‡]M7ChšMép.¥BªÎsjåÔuî¼E/ön¯a9ÝËíÑȘeq…ÕýøîWûäÎ >ë5’rAºE—3»îÌÛþD…+”+}Y›žéýò<,d0ö‘ÆJäÉëÅ)ê„„Uk\úÏ´Uí¼XªûÇ *õüé”IWsÕtuÃàjØýïÆµÑÒԨ̗.#ªÕÞò߯ˆE›Z`-WºÞ˜1¿"0úÜO]rh}WÍiÐÎ ›Ú®ì¯ôÖÂ6"zIG‘ÖjE¾’Lç'€±>»¿aâ1‰0õ·°ÿ$Èôý™McC­N=¾JJIÒ‘‰û³äÍ!·ý¾‚¥¼´èÄ{+wT¢ëÆÊ%“'hªõ—“(y^0§V›Î»Ú5æR@ è$²û%èL䨴­¤ŒmÚWµ2‚»·ˆœ­3‘Žô/º¸;ŸF¹ NZ› ž;¦‡JåÂx8ý ‹”;NÊÄ»¡ é‚»ÌÛkMÄ^Ù¼=õ>¿‚r9îÈG‡aªéjú¦†¬¬µ5¾x¸›z8šÂËh0MÞzs¥Òa•Yq»UÅìýÚ8c@ ´úÃRÏ`lUrú¾ †Ãû¨SŸ¶´~ëo0ÊIº¯â÷z-—Õ,Ou>×´É•‰‡T)d\l¤ÿï óiVðòú ‹6êV¶o¼ÞìÛuXÚB?9-Ç¥[6EQÿ ×v§ŒÊƒ}å¤Ì?æ±â½Câna-ñ¶µóEC¹½«ÊÝ­é‹¶wC!j˜,÷N§ÆÇªÛ;ÞPl”?—±6§àÎJšD†ë_˜LõgÇ"݇%GŽ·´%ÚÆàw¹›ôjuïï'af-ÆÙ-G”®+6úb߆É œtqN"ið#O­ŽŸ*úÙû>õ§É&íéwAêëÇÆÔ§ä’»×)êÒŒÓðƒ¨Ü×?ª„Ý¿ý}å%5™Kp¯Æ“ŠE{GéÉõ¦;+_7O-6­Z1©J#E²‘o¢nÓ©äEP;<¤ìö)éˆÃœÕ¿u¼Â;"¦e–ëÞ ´¶µ©¦ym Å“Ðc¸eµ>tàó4‹+ô~¸$›dùýL‡C±àq:³D¹À¨žå­>óW>=ô“žö'elr:¡kî^ CjèÜJ·yUVžÒÇÓ3«‹ß•ëp&Î2 ;J"\s%Ô­sµãT5—T#?[¨Þ©âï&’âcÔX¿’®®I¡²“Gì+T`¼ÅoCÒ•M@´iôä‹eÌ}kMíì¦ÔU¯€(,Fc÷ ±œwV ëĉŠÚÄêoß7_i~hàM¬[—黣s2i2ª12ã¬éû0[Oa}hâz!¨lí$G3›Ç •bxýØÖ"|QÍÀ–Á(ÍQxK½]d){Šc¢i@b[2ê’Íó¶tžnižŒÜ9`©A|±Ø¤®£‡ëA›LþÀqWd4x{}±}Êœð SoîÁÏÓüë{û8X‹ÃŒjË#?JïêÇüÙ†Í<ɽ’dÔÎCÆuZ<1õO ^©ÍE]AnúùÕP†NOµ=í!»a® s¡¥.Ù ?!‡XìwáCtMÆ·Óö°ó!Û›Ó?0$¢ä¹¥¹åêWÖ˜%óoùåZë9%ÝÑ™.R~ôéü±†4§tÜ©©ÒNª3èý*OJ±ÑNx`cÖ7=´Òô~éÅ¡°àî¡ä¸kkŽ'ë0ýi¦Ö,æð#æø½Y IëM))„$k•2ú?,õpï,˨áäEßö›èÈç‡ñ|k#–ðB¸µ®EHwåj\Î8)µ$¸8ù½°¿”*¼TB†]˜,`C’É·8¬œË¨aº¯»¢Ïß_­5t$ÿ”øõ4?“±ïðÏ Ûgc™¡"eµjÍ— )ì9^’ëçØƒ™CÊÒ @}e<ù’–] ¿póÞup„ýÊÛg_ëÒ©X)ìŠòö.,âÝ;-«àí7O ü¢rI¾X|M$vº>Nzô0ô>åOFÊ4 €¼0Nx‰9ñrG„«ÛI÷mŠ6ž¶C× YÃZJðÕ$ñ&Pä°NÀì<ö­'¸ŠVy[¡t³¬¾÷‚|¶ô&Å5 KQçv\2W"{d®Êü[ÒO2Þ)¾[nÃÞi&'é,‚ÑžÊû[B¤nYË—3ûBŠÃÙ@ÛïEqr3Ò­Þœ¥s6úM0Ñ<º|ùðëÌ&§Vñ" ¨ðŒ³w´ÿSÜèý‰uÉõ·©qk÷Ä')-•Ìpo­&Ö†4|Ôm_,ñ2½M¹4¦ŠTbåþìd©ÚÁvK$ñ»nÔÁ{žB¿'ébÌò|ä –>3-¶VóêÉ}ʱ¥å¼–ó¸eѪ/Œ6ò CcÌìÆ«[[@…tÉÞè4+ôNDùîu³›·ä!ŠoΘA‘ª¨®H¿;=üLõÚ½{¼èË8¯„iüêfÆ›£MÕ†Oª¹¡OŸ´ñ骘6+«Ôøˆzæ°ðá*É #æâʪAç¬s<áHîõrÓÔàœÌ#œù c»Ö,+k•WÞžxrZ.ˆšÂ$ÝŠÂñ+X¯jblœoÚ §D¬?pé”Ú!¼óL€?ûî®]sV›&þC˜hd§d»RÀ±5ýƒo+˜wDòÝQÎÝq•RŸ~ˆN $ì*¿;®Æù»*À `ÀeùIE° ϦÖfŒ²û©R-¸WÞž‰9Šg,WiX²3/kÙŒ>Ö/tëÏ8ä§èµõ¥ûÉ3MöDÈÄí¼\ýreªMÛR¥Y"Õ#QÙóR!‹Øs‹Ýã áñª1ÉÄGÀ«v MÁ`…îÒrPuÊ$¨°pwšš˜·äi,êéKlÒ†,_bÉŽ/È'DhíÜ:È Ý`çÁ«ÏûßðëÙÖ˜ ŽpíG ®MÎb yŸû¸ò[Câ]Ÿ ‡oÓŸÎÑw3U˜gdøgN2\†«.¸ >{31´Ê[þÜÖe‰-þ©†—ønueð9Ú‹Ön‡d„š•{[µeþÒ0éì<_ÀÔÌ•Fwýi…u;ú•s2a[54#-Æ&Ö= uuCÆB7³—óOÉ¥í¦:a£(IÐó¬†hq'ü˜­“¥Ö&_€uã[YB/ȇ•9‡L-;¨Pj„¦€TÎz’-ÿ¼\ÍìÊÉÄïíä%ÂLñô²IZÅñ ¦S`RÕb©Š0Ÿ‚ó+ö­µßéÒ«RgögµÈíC›TÀRËUÄÒÈiÇؤϰ_ÎN‚ymk“1c»ÈŸFIZm½é(¡\˼;Ž™×/ã<Ä÷“c]Y•ÌÑNÆ•îùîý5Ÿ~©GÒšÛ/Í‘~ed®~*Ð{Ÿ¡”é*îªÇKõÓVÉrÇ­ýÛ5Á–ŒƒÝ\D‰Ÿña*°Û%¡=Ûø×qfçM£;;ÐêÙó~BAdÍ;ÅåŸÚgù'Oݓ߿¹¾uôIàIWÇS!z˜ PiO©}«SU%Þ»7p¨¾ü8aç­XŸ ÅÐÆÍ÷:ñ@STéêUq¢¸ÛÁÑL€±rÜü³Ð—£A° ÏÒƒúÌX °õ²mÐ[ ënvt“_r3*Ú*Œ¬†³Hå(HN¬©[i)yÓøžäµÎïû~+aMËJªÏUšt àÐâø¦ÅåϱŠÕòmþÀž7¥ >v Â0³¿æÛ‘k·§s¡ ]Ò{Ö,aËxýI¢Á–óáÝiþŠíôpSo·‰¿¡þÖÞîÆhJŒWk©UªöÏ¥£6L|-7¡Ež<µv:þ¼´€ZðÔ>FØ_Þ+˜~t‹oµ¤…䤖Q°eº?z^\¤YëJûGÆ"[–;TY­^4DÌl”½ÇóÝcZŸÜ{'ù)+R÷6V<9ËYôgÞœº(¶¸š: :i½F0ŽHçùA{é1_ÂÃI®Ù!Ë«ž ž•*…=«ÂàiÜÏ®ô62½S¹‹\¬ñE0”ÏÅÖåÊ|ׄÑ_ØÞWªì¿ª‡™\·å];÷Œ½ªl(NÕ+gÐñµ|~Dôcø5ü ˜\oê3žÅoØ»(SAb¾U,ßÁÿÉ»l­í=”ÚŽ¨ÞE¶/vË#Ç&ÜÒÈ„«aUÐLÛÖ®È%È‹RÑäX|_w5M¨Èÿ9œ©ÈÖ½ÉÑÈ¡6+~•:'Cb·î¿á9>\ØR˜n._šø&K0-y¡¸#ÆÚŸ1^,Í—´ýfy±W&Uj1œÖ0È>{HWaeÎl¡ü\M·moði  vq£ 9†‹·ìp¼li? \D††%à•ÓeÐé|šÈO\™ÊÑÕwýñY6)+dšfÌŸz¡Eȳ9¬nÙžï?óÂÎxÔ¨NÛ¢—šóÀÓâ-ö-Œ*_¼r÷5pùš±i®VZŠiV.Cý0Mž·3aáf-‰­‡šõ£º6°ô%ü†áhz"Š'W'´ª”á¶üÒb+âÕibA½—A“?@CèÞ­7*ÖžPòò¥£]ÅH*7 ëûXIz Õyê§„âÕ‚¶iÌ:qÒëË}¿µË¥¶}¾EFÔÿxä9gó Ãóëiëé«DØ<ùx|¿Í|h@ Ÿ÷*@¹mädˆÕL-<Ÿ¸°#‹î”ôð6œ)²¼=ypÄ5ØUn.ÂØ–hBq{Ÿ ”£cÒºˆ›8K/úúƒ?á*rð4þüÑc‰w—ü Pål¶÷¸›5çÅ•ìËË£{×a‚8?ƒ©wÕÛ,8üæh¿udYnSÍòç¦)aú4úãÛ^Ó:Î4qÒDm]§¹†×Q¥”Ât4¸!Z¦8Ÿ5Bû7¶GÍÉF=BxÉ`›€qô4"ž“{N»g·ÓÑÉ6°À)°î©n è£~a&ŽiÙ…®–X£Ïc²pÆyùQi_KÏýáÞÚ‘–õr‡z O¥ÞU{Æi¬1C7;ú™¡çXÄÚã{-ÈžZê¤wÜüüŒû›t¢@ÖþÞ&+¾ãµ'éÛ1$ÁaÞ¹{ML!„H»Üã´gO¦3Î*A2»5b}ÅÜæ»÷AúéÒbr š¶Ž +½g`¼°B ïëijM¬xµ8­ØÏíRY‚îôÑíå–ÍË^{ûîÁ±eÈmAäc!Ö—ËÑ3Ê'¬þF+µW†U[† fýå—ÔyÇJßË l°­[ªänk‘9Ý]üê‘(W (±Cý3‹ÉK Æ7ÎÎ|º_üuób&}X$JlŒÕMyò['‡àZÛF:_èT` ö° œu¸‰}lKÖEŽÙ…•îGNåGgp]–z.{»q¬Ž{^8ÖW˜é™a4îãÌ«º«<-‡ÕØä¼Ðž‘6Ä)¹“ÑIG@)ö(æ86ÝÛ’ÐZ¢©ÎpA}rlèµ”Yµ³ÇòÆô&€‰o,…–3)©í9 `Qªe°f½”éCÏ ciÄ*þòÒ“g[W?ŽÆíÌVÇÊvÔµÔöãi·š/kê[RI`Z“­ûÚJH,?"Ÿ¯JâPÞ^7Žšó‹aŸ¤r ³´Ûú =ÊÃsåï§Dwúj9º.u[çäƒtê æ¯-/ù:‚n­’Màmas—·W+'d/­¾M6´öiFºsQ&N«®áE#egýÉ÷Âì>Dä?Ù/&eIÌî}Mq©9“P`¤þ™Œrœ†,\*t»0W¾+]L#Zù½)ý¡šš…æ?úÑËbePï‘{^—Ì'2J À¬ÿùÊ5‡ ØxLJ“‹aç&6¹[2éu· Ûý*ì 6öú±K^¦^/gXÄU“’çvð˜8¦[ 4Fȇ3à™ü|Ùg×aAD2YIanKkZ”®L¯yæ# ëÄ«qYL6%š#5Íó£³­&årn¡«öG¨˜#Ãh‹v¾Vé>–€aÙ¾†Åòþ¦¯Þð‘'þU… še`ïó”õ‘­sû iþS–>:aïF›lÜå6üŽ·²Ñ_ÜÓ0vê󧨎ò—ÑŒ‘'õ ©Ó\¼€_¶Œx¨¼²~˶‘ÐÖ qÅf‰A(Oaiôýt(º@ ˜Oc&Û‘7Oÿ¢¼hzäS1ãçÿm^ª endstream endobj 236 0 obj << /Type /FontDescriptor /FontName /DUHIZP+CMEX10 /Flags 4 /FontBBox [-24 -2960 1454 772] /Ascent 40 /CapHeight 0 /Descent -600 /ItalicAngle 0 /StemV 47 /XHeight 431 /CharSet (/hatwider/integraltext/parenleftbig/parenrightbig/productdisplay/producttext/radicalbig/summationdisplay/summationtext) /FontFile 235 0 R >> endobj 237 0 obj << /Length1 1904 /Length2 12830 /Length3 0 /Length 14032 /Filter /FlateDecode >> stream xÚ÷P\ÛÖ Ü‚»vžàîîî!h;CpîÜÝÝÝ-¸» îþ8rï9÷ûÿª÷ª«º÷˜¶Æ\kÌU½)>(ªÐ Ù€Äm¬ÁtLôŒÜ99)&F## =##3"…ªØô;"…:ÈÞÁÌÆšû_"ö øÍ& ¿ÊÙX¤-L,&vn&nFF3##×mì¹¢@'3#€=@ÚÆä€H!bcëjofb ~[ç?jCÇç?ÓBV {3C 5@6Y½­h´¨ØšÀ®ÿS‚š× ¶åf`pvv¦Z9ÐÛØ›ðÓ|8›MÊ ½ÈðGËy èïÖè)ª¦f9TlŒÁÎ@{àÍ`if²vxKq´6ÙÞV¨HÉlAÖËþðð÷æ˜è™þ[îïì? ™Yÿ™ 44´±²Z»šY›ŒÍ,AqYz° ø3hmôG ÐÒÁæ-è4³¼üIRß:ü»?C{3[°½ƒ™å=2üQæm›Å¬Dl¬¬@Ö`Ä?ø‰šÙƒ ßöÝ•áïõ°¶q¶vÿ26³62þ£ #G[5k3;G”èß1o&Äl& 0€‘“ƒ…“ ²€\ MþX@ÕÕô§“éó[žî¶6¶ã·6@žfÆ ·Dw ¶wyºÿÛñ¿‘‰ `df€L̬ÿ©þfÿ…ßÎßÞÌ Åø&?&ãŸÿ>é¼)ÌÈÆÚÒõŸð?˜ABHLXCòÓß-ÿ×),lãp§caÐ1³1˜Y9ožÿ[Ghö7åJYÛþ(öß·úg§¿E@ý÷„Ðþ·˜¼Í›tAê”®ÍÈÆhøöÅôÿYï¦üÿ“ùUþ_•þ‰;ZZþé§þ+àÿÇ´2³tý;âMºŽà·1³yëÿªúkvå@FfŽVÿ×+¾ƒµÉ›¤é˜XéYÿ²›9ˆ›¹€ŒÍÀ†¦Éæ/»Úgif R´q0ûãŠyËbdü?¾·)3´x»FÞ´ù— èð6rà?ò zªÿå!fmhcôÇô1³±€öö@WÄ·ÃClw¦·15¹ü©n½µ ø-ðÖ³'ÀØÆñƒfg0ýaú qDÿA\±ÿ"Fƒø?ˆÀ ûzË“ÿ/âd0(ýƒ˜ Êÿ ƒÊ?è­Šú?è­Ê—ÿ".ð¿èm˜€–¶¦ÿX¸ÞØþ±ýÞnŠe¼í.ƒÑ¿àãÁ7"&ÿ´úæ4ùãJSÃ?!o{cö/øFÈâ_ð­å!ó?K •Ñ¿ ¼q²ú'âm +Ç5ôFÏú_ðÍmûO;oÅmß†Ææ_ 0±þÅŽéÃ?ÕßÈ9˜™ü«ö7F–@ÓRÞŠ¾Íø_™ßH¸ü ÿGU†Žööo²ûó:x“ÜðŸ<ä2D\œ³1äñ7¯öo½«"t¦Ûç…9MºûÂL7ž« î›ÒÛŒQIK]’)_ìe×5ï¶»K_›¿tß©!­ue½¡#ß7!5ˆš{½y7ë~KD6‡Ú‘¥‘ LÂ]`ß¡HŠÖ‰ `dÒ§BêAUݳëL‰U(Î!Ð*ßÞYY˜*‹CÄ¥þ{KÜd0¨ºËv…G•±eé·¦œ(ÿƒL†·ý1ƹmc`xp½—¸+ÔGÚÉw÷Œ<Œ.Æ3H$Ê W¡¾’ò”QàtôÃÝ@SðȨ¯d&á®ZþÂtçâHçu\'‡©~œqÓo·{btÛ,á$ûÌœ½£åô R¨†þØ[õžd3Éîµ²-b é ×¥™žÉ'G™D)­‰~êÏr1|/¥;¿=ë(ÚÂŒ!›©*ÐwÄ>á¤Òzûe÷“[¦­ÜPÌh0kq&™¶ªòç¯pù7{Agayïd–T®†ÂP÷k.OóÆÝõ%û²½]˜rÉ®"Ô:#Ìm£fÅãGnÖÃ)ÃP­arU˜ˆ›³ÕæG…˦Žì€•Mžg™[«ÛñÆIuB‘Éý§&–ufpÄlºø’»jÛh«1làÖqf™{°ìÔå÷ÎNÄá/i\ÛÃù·'uëü>˜K;µª™ ƒ6'ÊÎ?¦7¹ƒHR@M§ˆ ÁÍûÄD]x8®Ç(žþ™Aཥ/Ù~ÍdÞv`ÿ ãÏNŒ½É8šÊ@Nhåé/ñ®¸¼©µÌæñ º­›~ÍhÈ‘jiÍîü3á ™¥E"V6뻌㥞Y¶Ë¸F¿ÜMqXùC0BàtEóÏAJWF(½P‡@3#ÍIÝ ÁŽ:x[d3¢já¾&!bÐã#ÉÀÕ52Ô$Y™ŒáÁž"âÿÓГªÍ$_.-fãÐȃk®÷âG[LXòdµq"`¾wµw›óWn¼´ÂA^M‰Iw¦»WCu)üJ(vj={9²»`p€‘··ßj±üQ ³Ž¡pó†õò•ï”xÌ>¹ÅÉu¹ÂT—¶KRf±ÊCûjA3سŽ@î(‡å3m]oˆ›'}qW>ne;°µ¤yðÃ3 нˆÙSÆñDO½g¼% ny”¡€½óÛH0ã……pÌ÷þË~瘵/‡¼[’šá•ýÐ.Nm˜žÞ;âtä)d)X¨ëÜ,D•” À<5(æ¹½iH;òø7¬eÓ°¬÷ÉWë5+¯æB´)ú&SAJÅUÕÔù¿xF|*•Þ«‘ú‹Øì òÜõˆ@p(ŵ¨C³Ÿî£îóÆñÂí!BŽ“Z›õ®ÊàЧŒà5Ö~Bnf:Þ3®ÞF‡[0Ä”SV°]#MÞ×Í. øTÑ­Ëjª-6øÍú%]k”ÑqÔ‡_lÆ¢Ú»ú×¾NÙ¨öú»¬hµÄÊ›”m€\僪$Ñ õÔ‹kJ/H­¿ÿõÉ!@z%5Ä&€…tÜC‡P¡“¼³GèÖä³*_NO'1«Æ$XHÏÀÉ30)õîpBÜ-Ž<¿Ý[mAÊrÞ˜ÝÅn#“Á±ÚÙ³ÊWR’¡†–âaÙ Þ"¶âI³ÊÕÆåg½yùI¢KNµJ[”¶k5®@sºú¾¯t=>É=ì'ÒAB `@¦ŽÛʨqR•7Fâ¼±íª–1>¤Ë4 EëyQ9Z¬]qy½5L‡6Ý×aø$éGÒ=ˆ’4DöJ7QuÄJl79^ªx²ž üãl¿ñnù”œ³^8pØž¾$䎟ÿœ­¦‡#«(]70Œ+/R¾§"w3kv:û~‰?½âöû.òî9 í¼ùGž4ÑCÎýPò‹i‹ô â!ëã!/K²±'”°×láê1=äLs µ©|†`ŠðƒGºœšé[wµ¤öÝ–}×4nÉ$…:U‹Â8ù½Ð‰_b%8E‹ó¥ŠÅµ,Ö™§¡`B·”0׆Z)y`»‡‡”„%!ƒ×vË}îFc˜š&ñ3W‡qOc ¾dõS­ŠW—}žbsÕñpóžºÜN<óXªÃåš ¨ó•»-²,uªÎIkÝÓªn¯{™eÑvÊ|±µ¶÷SC–S×(N¹¡ÿ…©IÞON:¨,«fvK›=öσBäUa3ÕYö®ê·üØ Èh†:™$Ö£Iûš|9£BCQ¿ÏS3dû=&²)êkÓdž6à"+:Ö!”RïõÜ'ŸOüS zœjÜï²Ç,Jà;jY½4—ºl¶^<1Yæð¾g±5ÜoëÞ~ ¾ŠäRL«ˆªô¹á÷5ʾ_¡[[Ân¤}9 êáÆyžp1’,$CHÔ/îFaœkÀÜÚ<¥·aúÔ8“#;£Žƒ¾bÌU¼ÇæXê*ÖŒõêƒ3áêg:t‹Ö–¦ôþ‹¼Í«Ç’r«ÐUÁ5½\!ª½ùίÍÓðŸÉ•AV3¢ZPeáá¶ßFÎÊÏ‚‘`¿¬Ä =sZ ¹-^ÿJ…6j—ç!ÛIþ†;SØn»Þz“ˆÝˆ/"‘â+ÿ3£2¢w݃ wÂŽÖ)´~;3 ¯¿ÓnÎÍ€‰ ñµ&ÒûõE-Ÿ‚öP{á²^xo3v)šwøpW1ŒÜʼ̻³ÿÀ¹ðɬpͬ<‹$s{süÒ§kñ´ø&;)øë¸´ûýˆ_¯n‰éÂ!EEJ“§Átô ƒ.î‹Ä+}t <êžÂm௡'æÛâXª+­?ß&žú(/W>8ÇÕæä.h[yZ0ÙT}Úó‚Ý[‡öî; 28 ý,RnwÙCøüóH*'¥& Ú¾M{¹¾ÛwèuëQd£ï³Ùlo„k+ð{b¦¼"ÕxVd¶ªh®IæÆ6pæÒ6Ûo|P(“zQGn ëf%J×§lrV!¾Êruâ§+ÑU¡®›X˜¾ù‹ïˆáñ㈅Jˆmd›Ð¤i½R@Ûw}鱨‹ÐÖ¦Q 1ÓÊ}l¿@æF9¡~|Ú¶ Wè‡$mAÙX j¢Ž2é7ª[Gm×­O Ø$Án@¬M‹ªÁÖjÛNECÇSs\;Éo;–ž¼!=pqYÊAÔOIyŠïŒ9£|{bÑ‚Íqô§Ìºö5yÜÔÄ’ü¥ ý%ÅÑÕšžŠÛ…ù,O+Ôºó:¹M¡q7}Ϩô°Åç‡FA,½X‡VÈÄômñïþ¨ 1bÝ%‰–'¡k¦Úúïn€$œ¹?È©×.uÕX0+ì~ÔÎ\Ÿn_ŠÀ•¼:u„6^›¿ C„ $e<¬ŒO7ì±Ñ:p·ë òH2—´U XvÔVbaì¼@(æÝ^}Áç,Ò™"¢ xãcWž-vÝ×a&ãlRÆ31ý#Çú¡¶çqJP ÛŽ·õ7ÈsOÇ?X?w“ªx²}(ŽIofŒÙZ øPÿmGaú#'²WÖEíë¥4q†îa%Ÿ‰ÈYvt­ÏªÀýþѼO¸žNl«ý··7}ÉØŠ`ðRÏå>»H‡„IDSÒý!7ê½0ù5ÜùÀy m{ôõà©=êõ?RP)ÏþŠ÷”F}¡Ñ·[‰F±¤ÍqˆÜ5A¦ú¼p³Êõb;äèÑÆŠ’¸2´9Û_&¹òïœ]uÖç´SW˜í¬N^Òéòdênxܯ¯U›X}Ñ;3º# ä³OgÐ6`Û-Ž6z6\º¤LÅøü ¾çéÄèØTc:=ß7ŸHù>§0¯â—|Ÿürا…P™ˆ8cèøìÚ¤¦ìc±õö¤n8˜°ḑ#Ðߣõ‹âL¦z[õÛÚä¡•»S[D<˜6côü‡!„hrÕ(A ’Øbf.%하¢  F¼ðþ4ùnõ¸šà”Buy ÃqõÊ£í¸è²$3%Lm’Ìé·Ê`ƒí+–|Žb—Jq‰ðÔG¢¼<5敽à ë‹R»÷ÌXÄÙõëBµ&±cò*!†ýÌ3OÍóöô«Û³"º"™›¡û•X|«öQ“ú X©–veÔÌ:«Éò Â4™ý8ÆâßS¶L ·çHºáI(XØèúŠßT^IùdV_Äî÷dSR(k>]çØk“3#k͇1¸ÌÙ²´Cmiªe•ÚùÁÔÑBêgÚŠn…ÊbÕ8ûúl¢hm‰îß‹åÝXZZ+}ºåQ޳N fv¬Àñ_¬÷$iÙ—9XQWõûXÂI°–o+ÆÝî<œ–>‰#fˆ›ÑSÚÃ'u}\ = 6÷…FÙåt-æ ª×m’~É´ð#|³¨$þaÆ"ã ¤aÝ·®&é<äíÀÆSŸfðé³ôÃ@ÂDƒßcŽsZ “˜eïÃòÜǧf4½CÜÎÀûþ‰„‡ï} ´Ä²——'‡Š½-e`5y°ÅõΘà6|]~R(PÎû{w.ÖÇájÇcÒ•AÅI22X6ˆs²Š1qø»ÇÄôa» ͺÝÏ]4ñx0B‚BdŸKu^sLèÒû…|½½>¾×X´çO‰S \»Bž£xYÚH›®º¨Ÿù\ôºJÔ`Z";׳ØàƒÌ…—¶9üíŠÂ´„CDiE\¹ŠÆ-vÀYiäë}Œ1¾&x8Ó Kéo –õ˜À~‡6:zé4U[2–A!AÊ=WÁ¶cœ­i_XØÈΆ›Hð$’ Rüåõ§QZŽúSÉ ½;%Þ+<&'ï&?Õw5˳l‰F_$#ªüŒ,4l9ví\•§xH6]ø®èR¾C?IL`yVj6¸&Ï\ULÐјAž[©Ï­S—ÊþHØÖ0 -z÷b?ÎÇP…ÚAÉ$®ê)¦sÞÊ’µ^ BAD)×螣)’‡`p¿Ý˜þ AÈ[&ñ¶ @TŠ#ƾCl©aÄ Ëúr'7¬G £ú=ùU’Sñ£€’+¢ùFÀÏôÜÍ8¯.¤$ºJCY4hÿ«ZUhôŒ·oƒè詯„²3yeŸ¾vŽd‡U­‡tò5ÂÓRŽú¨r”p~ó Šú˜4µÑßaßÍIŠ]OZÝ×Öh*ýØß•I”Mmþj°K‹Ãç#ül8ˈÑÇhÙpZY;æÀ«Þì Q:À4w›EJK)Žïw‘HWس\sîåfÃæ7˜·RRcT …&æû8LÙƒå»Û_{ç%ÛD/ÀX»J7»½¤¢/‚ áËaRý‘‹SÀk‡dk ®nX›ª«j(èM±Ò+¸»Ä¸üB?¸ûÒˆŸY:bÂ)#¥wÂXóÁgÎæÊ-_ÃïltÄŒ{V£õÓt¢LMkÇÓœ*´ó¯"» ÕÒvS_vû¥Ã ÙXJn ÍÞÖähÀ¶Iqn¬Xp¤ \Ê{ÁG–Yíynά*èƒüux55šeŠÉÇ%›°ï¤}þö÷Û½ßh’bKо8³1lzX$RƒðÉðÖ¤KÚ%7bI®»Ò‰å®m>šÚNªPô^ì¾£SΤæÏ£@˜*ü=ÈÌöÝ´uÿ´ÙCŠžÍ±K_I1çvΗFÿ¼(QIi þ€ú î–5– /¾F·ÀoÍßKn½Âæ;1<›­¾À˜²¸\áûï—ÙQ“íˆCÛNã¥uHk¨ˆv¶~&T£Òܦèc™Þ# -YD×F;„ZáÎzòA*üïÃì4Ž6Ç£İëû¥šNÙï>?J©v‘…¿Œ»¦,ľ“L°5kÚ{U74M×Á³¤\^ÏïYånêFSÈ= ÿ8ÿA”»""€‚ ˆ·"çû<8@¦'›ø @Ôm„AûÀ4ÇxʬÃáBý»™Õ©\‘³•–ˆÚ‰8ÝaÄ€÷:¢FGV)ñ”ö®^æ8~þSƒ ?ˆžnɦx:rÿE¿:!«ßÛrí´Rû¾ò'lr§›Ѽä%“ÀuøWŸûÃÌ} 沇uF, ?SBV%IQœÞ½‡©S¨([5¶"ø#ÕEàn{S0ý;‰l±xé ‘øÑbù÷BÐ_·&íî·¶? Ù7âüÎ%Ëðûò,>ÕCwwA“ M®«‰²Yåa P.ê‚f{åCW09±rºÑ–2O€^ØsWàtf|IRm/ ©T´¥ÕŸç§í¦°­e¡ß{Ý…–SHf©ºqr†t<ÍájØÕ ;$&gCÒtíÛìcÛŽá"uëZ‹¸=Ýøk‡ÉÁÆ Nø~â%¥§^Ñùyåì‡îä?´EMþjï*¼¬µ˜SH•üØþL ÑmñM À±œãEQ®LËÖ:šF&ÌiÝ[h#Fèâ¹Óî%Ï»n˜ù–6yØKàSq®!;~„ätUd_›åð˜9°Í…„#Ú²-«÷޶]æ•„ßѬû·E%ó2ãhƒRóq7L8«,œúó€œó,V™ºIïàŒ+é¦f:¹-ìž®;Xè¯cŽ’®*`* r¼‚#¿´h£‡ýJÈm€ó&9ð:ëV£Â¦Nï- ˜AV$WôÓ¿ÊC6O¹¬w-X”¾s˜"qSî—¬ñF/ü‰v£ØbñeWâÕL³ì«D¡5žvØ'˜x÷àV±\×®Ôàã‰ÿ³<ÃØ$Sþ òuI à9‹þR­5âK†nÔiÍ•°1ÛD%åÏß(BìÑÏÜñz/Žš¤ØŠæt˜ˆq-dO -×*E‰ç•âê&púÞ<3Ýn'ãPðº pM½Ô Ï»óÓéGèo-èéƒ°ßæ×ãÜ„¾/;u¤~6à†O¥Â¸U¬Æ Ò3p¥keµó×:|w»“d!p¬%W´ ­"`rpÿ+pº¶Åb¡•®[F|a)˜Ý ÿºç]§Å"{§AûihóÊ¡KP+‰Êy»»5óbRûûMXÊ}’ƒâÛ‹v?‘QT4âL¤ôÈ܇ šQ5±õ‚†!õ±ü¯0,íAY¹Ÿý`”¡>]´ÇpÞJ±mR‰®9Õïmz7ɰ®Ä ]äG6¼”“f¯*ViøE̱ÝƶTÅê“ϼV-ä“Oˆ=ONÎ& $§E¡[ šŠmˆ+ b¾ðíÏó\WPO²¿íuO”ªë`X/ܽR;øÝÊ3‘um±“ÖÉ„:vV¯ Öƒæ‚IiÜò„HÈ •î·úèwí‹MSy*нv'Å¿TŒýBš H ?,QsÌxé{ ö¾HØt2ö$ú€s4g»ilPX´ðìé?) š‚)p%÷.W˜ÿÖ¼óø!¶+Z§ýcû킟Aûæ<ÄÏ›Rè«Ó(Çö›æJž^"q­t.}5Š6)õµšž6#ØÒ#ÍT?ôQä¯*í7Ü?>ðÎJ×Â°í ¼íX)ÀG"ncÌH7&å.ÊdZ$©hKT§ç$GŽ©ÔQË~ޏ»ÓôãwLõM\L?x±‹ û;Èé5lmw¥@~~(, ;<ä«_½'“²/)ò—èsš T ø/är¯ü’ŒÔ˜^~ H¶«U¤%\I`-ÏÙ'—k ‚\©rÆ„v/å9>¼¨ÂM Ca³vðG2i÷øJºäžûƶOËÂc‹~ ž°mæ«D» ûûʇ€<Žœ­þÃে¯R‚m²'gŠ¿yµœ}çë¹!ƒÿÇÂåƒ!ßÍ¥æTo¹Ÿx¼":a—s1±dãxÐ'4ºöë46 îNk°áˆ„d­-F,¶<qšü(¼ÅFU' ´©¥D»_,òP â×óº$z¬¤º·én0Ât‚f¿òõëÛïxªª*Õ&eOe·­¡i¹ºÉÓå×ûoÊ·U¢Ð.ÈxãÏ<$„ú Ä– “†ÆºYxÆ*3ý5ê†Zì^¨¦ÃÑ|`ÆKöËi“yzxÌ_&ÓáEfd ô!ic}îð~Ü1ýU§A½tó%rJCÚ1Ûà×°àÒʧÜm)ÊbLÀ.6¡tsQ Và²t ]U ÃUž¥‹e˜Ç¸Ìê‚ê÷ùp.‚Ð ¶ :'2ߊíÊ´GìÖ¤i"8‹CTmOA!lZ¿Æ3TL” BŸƒFmbM­âDu5*™ ¸éäòëÈPÜ6:Õ¶ÄáÇMhd_Î0Uïl3CU…ås¸ðE¹©Mó¯Ìk®§³·ý.F‘´i~w(QH-«Ô=]d« îFm¸µ$õ’!5ŒëXøÅØ/Ya¡A¡¸ÔüÕÝÙ_1CÆE!jrfL¤øÚ+ò“ç,±ï£à¢\Þ']‡Û‰Ú›(ue`¦¦‘ú[wGG¬ÒŽÛEèÐ4¼;·yèU(Û:JþÞw;PÅ_>ì{¡“gag‚åC^¥j©lÄR‡¯òd©øm :™Üg ÉšŸš4Šælçt¤%¸‚ÄG®v®r %á„À¸†;$ [£ï)qqßϦXÇTÍ÷ã{jƒ„--´ ()Ñ‚´#“¯ì®+:OÌ]t˜·Pá¡›6°Ñ–\({Á†ÞTGm¦›x¯þÕQ¼>¹¼[!".PÞé â]>¨¯á2ÅÈN3ç~ÒÁS(ãG+«‰Ã¤Ô6¨ìPxFV¦ÃCÌõ;ÇÁz™ß†Æ²1°‡}IÜX. ¬‘vTŸ0·XÏ«½y$IŠ´lòðè`ß—oÔr%.A{íöB&ën“ ¦ûT ¤!¿¨møù*]ˆ3@`W.Ë oå?ůž_bITs˜|%:Çn‘kQµª2ùcQTS$éUÊ"—ÞBëÌ ÊVpIâié§;e |äî죴_Uˬ¿F©ºž†@)´:Ѧ=ùMÍòÈ8Ú sf9ÕÄ«¹0àÊhü éH<‰@a°¶-)²ó+<ÝB„Å Vyj.«æÓsËr„q’$¥ŒÙòÔšSJ¦2·€íYq㚺!Ü}iw”£›#,2´ éò\ç\)¡Ã(«§U˜›6³: L³gQl\r^í”i‹Û¨¹Ï}Sƒ«IÁ)øW.‘eËû-‹Œ<ƒqjäÅóî©æÞ×­ÀKlh)•)¼$“ÉGÒzèaÒ¤uÉê=/ è;Ü$‰¨°ÃÊñ*¾…§øˆSû™*r yPJ’fA/ðM`¾ø#T±mù j#sáÀg²ýrnù'o®rzá“;>€kI|²>_üls ù¾ú©mØ%­64! n5jµÐBxÌäÂ>ñ‹nÉŽ³?$ïç‹5JzãЈ{›:-W*ÿÔTz‰é—HJ¿Ð©u4ÍÏ!+ƲJ•ÃÙ‹e´Áåþ¬^ü’„­X“ÝÞÒ«ý¦<§ ÷*ʾ’¶0[«­«í&À²dÐÆn¹åðáË$&sE´Xõ–Ø ¤åSÝË¹ë ”ÿ‰œ¦9ªy(ýìì"uDÄLkLÿeé'ñvÂé¥+g–€Åq‚ç'v´4‘d$oOµgF©Ž"‰œß-‹/ØÁ¼ãRí»ROgU³dîÈÏ3óAlË–V¼"×/Ëxž¼¥®hvd°Èšè‡å`t}Óé‚B¸ö;Îé¡ÞШ&F"OY/0‚i«ïñØ&\£I¾¼³H‰#‚5µy,ɨŸÙ ÚýjÉ.æ§OuµŠqïO-u.@©½&V‰à´¯ü’µÓ,³N1 ¨À¼Ñб‚Ÿû械Þ%3F{jþÛî!)w½%«ßÆÛTÅö‚\öDO—Šhã8ŒB$„Ù÷ç Œƒ³ ¯õ‡J+”ð}~SÜøY±½ =Yì˜ðõ’Ï ö-¯ÉE;² ç/AW=pÿÖRÖiT­þÁšrƒ³îIЊƒÏIcöNdäVƒÝ`0žÇƒyð÷µá£3]Âp‘Gaüþ‡ Æ÷T\j ʿկð×´=uuayC‡•¡Ó`šv•{w=›ËÞÍ~dã 8e8cB o1b£a8rM½år0Źªåû}j Á´«ÄiÊú)“Žmœü“¿@rPÌEò‡=âé€5Ôcªóµ´¦´›‚Ó]»˜‚‡Ö„1 –µÌ —ƒ¢Ÿ6ÍG¦vŸÙ ôsõ"¬lm7º²_~ÙTBVôQ2Cö½p”ˆ„ŽÒ¡¥Ó:•føí¯dã]Hó;2Ö ®¢æÂÎRÇú¯zЕÜ H³ÒLÜ3B/OˆÎFG‘)Z 9¦ÙÕ9î×MlýfC)n9Ó¥DNnûjÿ²¾Ö+¾¼Ó þI3CS)€$Šè#ýëÌ„¼Ç{ 1J©¨2º^£À*ˆ3 Çé·ŒñŠÓ0ö$0E›d¼®ä׫^àmôÙ"écÊ{¼“@8a\Êl½z,i·y>ZuFV[yËc$FGSÌ è¸€XUÄ)èí} R“³jŸè>\ô„Ê¡‡m.4λi¤¸BèÝrJTÜÅBŒ*ùÓ¹K/\¤uÁù°PÈÆÅž]ö«‚<jµ]o h]ÍÙŠëàËך³ 'nÝ&ÿ›÷ÛéV^˜ Z£\NB—‘l&4$¦ô‘_¢—ºAÒ– ïD:`5î膿/W‡L5ÌŽ[Àd½h¶ÌÎŽH†UpOkyÛ%ë´¼sç×§¦ä‡_DŠwL8ˆN3Ç…ƒá|¶~Ä|œHï[n}‘éëéªçQC]¸ˆÀB¡Ä”ÞÛ!uŒiʰť£rì3ÊQ¨‘²#{Ø’9¸V ãX00„ÜÙBÚD¬*}‡üÉžÿú}ÛoUú‡ŠE™kBXÀ÷ !ù⩚ßÌûlÛ>8]ŒöĪZi ~ñZõ³2 Ñ °ü¼jë?çTGæ<·fç}/QwGô“ Ö_'¦DÚê·E¦æAGÁÆÚ1ïQa¶bc«T ”ôXô®*ÐNça{Yã ¦‡Hݯè¤{z;ù09ræ0¤ÏuyÜcﳆ~ìD„R´àÇ*|-ˆE&ÿ,à·IÀ Ï:üä›Ä`¬‡ÌRæ kC)¨ø•Í‚ÌÌ@5~Ü&<Åfk17âȇ•lD 6i§1_z~ÒïÖcÓipÑ’ñú’e>¥'à»ìž¬P”)ÊH¦ýŒQæϹ³¸Ü›¿ê}i+¢q'ÛŒ}Öâ…Oè*š4¡×'mÚÂÆ·™ ¨0´Š«Æ$Ö§#µ—.÷[oÏ^eÙø‡ùÄthÛLÀ²'lj®Î+9•˜É–D‘±CØ^G¹-Ô‰·œ4*"Õ^š—4k) \ !çÉ0# ,‹"’ˆÀr)Ú;œtÛ %´nÁìΛöæÒK‹ 7ŒÏ¤jR׿Rx’˜_ú+Â"Æ£‘±1˜lcðóž›(Æ–µØ¥:Px¡³†ZîÏýê(7{wÅ5Ök‘{¸hùîšo»ÉY e¼åÛ 1ÍwEkÕ:wmujëHÄ:6¥O8Rá¦4cr ËR»&;ÒD­ˆ‹¡Cް8e‰DÇðÜ’çüèqf<ć2È4,ë±~Ã<¹4-Mb ŸÃò§Tç9'@BÞüŽôI©™Cè\;ñÛ¶%3ãgŽ@,ɪΑrºš‹ëõš~RÁµ6vó7ìÙHVhÑÏU ‡9ÇÊŸ_4¦FÚǪGwÛUÂó6,d'ïSjêô:c 27cð¦’a:ˆ|ÁázÀlTV¼¬MC* t/ vk­ÖÀ­âš“\Ê$6ÕÇa1\ÉÙ4òI;£ôäl²¹3ÂÏŸ_Ru9æ°- —¯îôЖ¡ ¶Uá}3‚)ÅÚ1œ ŒiõBr¿øœ¾¢>Ö°#X#¥QrÔ:}’1är^›èU±Î¥ !+¯ƒ/Šê¤í-äFGL^J²Wª1ÐÏæèöPöÎä±.GXØYÍrÎWM”¨¤M¦ÕŒ Ôü¹ô†ÃR+L±¹ªK§¾¯L£ÃÀŽ´LùŽM˜¡f[$Eý–åË(âí½ ÔGËÞÒw®†:rzBœñšRdݳŒîP–P{ ½ƒF¶›G)©;̲ÑÝ&”ñÝ#Ä•¥'YÚ6oÑðC:ÇPF⺠]c+©—ñ „À§2žëäêIûÈŸ-<³Hè<1½ìĵ6mÑÒPŠ"ž˜2… IýBE2±ž›%Ü\(ˆó «…wì}Ã` ¥Àê0ÛqtψHõ,ÖïÎ#!#ß/û}r<‹i=¯«Ž†²öÌv®i6Å}ȱÈEI Œ]Þ0ÞÑÃ`hÏI®žAÀᎰ‰ÛyÊ'âËî2Z¨h%Ǫ»Z¿suË3±„÷ ÷P¯¯t/‹Þâ. 5ÆfE%Ía‘ù5c…Y4 g¯ÔSÛ_±Ò 2;tÒëIVÔZ.RT„¸L?gCîâßl `9|ÏÙÛâ‡0 Çkr³½u¬Óñ 5€GR·Å.šôWÃ݆ZeZ U!ÍîGtäyG5(…µ“ïÕMâýG ´g¨ÁMmåLÞÚÑMÖ°-RÈ•i)ú1 ˆ²¢•´ûѶçGŠÃ¤Ä³ú†o7úC»ÌÁAò+¥ñðî9Ád2KÞS£)°oÖp»Lc?äs²¬qól‘›ö|¶xZêÄê%S·Â˜\¡I)^œÏÓ]âZÃÁúgõ‡Še=¼{:^"YŽvtn±ßÓ˜™“ÏoÔºÔ^&íM3žRñ  ÏÒ¿÷¼!Õ)zæP¡TùU±=F— %]O´Õkûñ•è&åÞKd9™Å#Zœˆ¸‹,º)Ø^éP³-Üów$+ωà:Ö–qBoz0’*YøŠêíû¼W6ÚÔÊ -'ÀŘÉÏð7Ï{5’”ËÅr ]ÝBb‘dÜ?áì܇•ÚjÕÅZ^“¨Þ†Ç26Ig«·œ‚ ZwýἋÏ;óbqvƒé‡1’ ÕÍáR7„V’1òAWÖ¤³pÒ>y,è§ „wëjêwoN2EJÊ£ôÒJV‰Ö™RTµ!»ËþY¿¥‰Ø`vp>ȺxµüŠ.Ï¥{òòKÒ:¨ºwÜ›–&¼e+7Gªœ‚LGu‘'I¿tCó”c ™É=pÃ<„¨<ØòÈx¥-¥øtLÕô8:תY³¨¦¥F=3 ]Ç”œÜ-ÒÂì\m*%9—–^›½ÅÁÒbJ»*KNæøåó‰0õ1Š \Š/ ËCé«ÏZpKy‹³rõ~[Â{)<–…wPŒkˆ¡;íÌ—‡—\¿c³XôA”q(›'ÃÁ×¹á O‹k^]Öe£ö†ÚäwaX–àG¼÷-ê£hï¬}KX×9ÍГÖRÙ¶ “Ü'Ñ@ˆªB·mV‘=TÐMô‰K±Ø¨2mÄRöXþðÓ ¶›ˆjeÃ?ÎóéÛ÷®€3ä©LÚßÌ_=õ¯¶ádÇT‹‡ŽˆÙÄ]EeÊ¿§(XxÒªŽBO ŽKTÍÖî²ôÞN¨·¶}B&7ä×P­é:é×a”]á×!»s޶¢­a%šp"/•qªZh怖˜ÒU(„“k»á»Ç˜Q:ºð^–G^.;¬o—èè8´Àþ¢\Þ óíÀÿê¬-ÌNVØ¡&+h¯&°‹ÍÌÑṎ́â ç®Q7”l[AvbÙ…˜ù] .,˜ä£<–âý1²Sâ·T®Luy©rGûá^®éŽ. Fã éàR'ܺ¤àkúPdÚÑ¥Ãm B‘]~[QC0-\ÿð«ÔT°&&ßÑ6LúA¿£ nðz¥¥Z0¼~ÁP97¼ÐÉÄCó“Jí^­÷™Nø§\ó19€ÁD•´;…D».(•×¶æSÚˆ½0ÂÚ8¿Hž»Ã©ì3Xù·Gk3±ª„3ÅP5¡=ûÔüÊ×eNë £íÂçQÐF÷p­hNk þ:&QGZÏYÔVß9 ^ B“?äwˆî ˜æÒ“LTôqÕäã\U/-ôOü\ÖêŠ×ÉïÃ]=çÌc©ª ןA> endobj 239 0 obj << /Length1 1549 /Length2 8304 /Length3 0 /Length 9324 /Filter /FlateDecode >> stream xÚtT”íÚ.)]’’ƒHwwww‡ 0ÀPC ‚t§„t‡ - J7( ÒÝ%?ú}ûßßÞç¬uΚµÞy®»ž;®û¡¦TÓd·€˜d Pfv6€¤²²<7€“…•šZ µý-F¥Ö9»€!ÿ0t¡Ï2) ôÙNâPpµ°sØyØyØØllüÿ2„8 ¤€n` €2 @ârA¥–„8z:ƒ­¬¡Ï×üë 3§°óóó2ýqˆÛƒœÁæ@€2j ²¾ÑhЄ˜ƒAPÏÿA'd …: °²º»»³í]X ÎV"ôLw0Ô r9»,¿ ¨íAUÆ‚J в»ü%ׄXBÝÎ À³Àlrpyöpu°9ž/hÊ+TA+ýeÀø»7vöÿ ÷·÷ï@`‡?Î@ssˆ½#ÐÁì`°Ûª2J,P(è`ñÛhçyöºÁv@³gƒ?™2âêàs—çbî v„º°¸€í~—Èú;Ìs—¥,$!öö ¨ êïü¤ÀÎ óç¶{²þ5Y[ˆ»ƒ÷ßÀì`aù» WGVm°“+H^êo“gê¿eV (€›—“ r€<Ì­Y‡×òtýQ²ÿ?WàëíqX>ò[‚žÿP½]€n ÔÙäëýOÅ"Tvv€Ø 0YPÿýY ²ü ?ßì0d{æ;€í÷ïOÆÏô²€8ØyþÛüÏ|Yeu¤%ÿªøu€7'/€™ƒ›í™®\üÞçƒïFQ‚ÿ΂íß®ò–;Û_Ù>·é_»ýMº¿—ƒðŸÁT ϬèþMr#6n6óçûÿ7Õÿ¸üßþ;Êÿ‹äÿŒ«Ý5Ýýÿ¡Úƒí<ÿ6x&­+ôy”!Ïkàðߦº ¿–Vdvµÿo­<ø¼âVÏdffçbaãúKv‘{€,ÔÀPsë¿(ó—\û÷ªÙ@jðï·åÙ‹í¿tÏûenûü~¸<óò/ÐåyÙ Æøƒž×é?óv0‡XüÞ;nÐÙè‰ú<úgÄ ðf^P ÇfXY ÐgÀs;Kˆ3êï1óðX%‹þ ögÞ±‚þ9¬–ÿ€œV«@.«õ? 7€üøÙöÀj÷oøL5V‡Àç{!ÿ€Ï‘ÿy¬Ð?ð?j7wuv~nÎÊ>7æ_øÏy€ÌQç¦!æ‚A65A­×Uâ$îÌ›£BˆÇ©×zÌ£&ÈÐéñ·« š™óŠŸdæºÙeLl¾ªH8]g-ÍüòÞ¨¥¨óäºd¦Ù±¢0‹›~º„Lô¾"}=Õ“«›,A.PìÜ£F‰ý EÔªG“ˇ¶¦k6ѯD†W!¸U¥ý[UI†)¿ÎÁš´É¬_k“ûœˆ6{Í>6p=Ê(ÿ2T#Ƽn7*œd@(ó‘h/ó}æh@tmÚ»Aaš€Q*vÚ·Ž'™h~¨Y…c8ÛŽ¸E¼ÁëgMÑžkq@…âQÓñ··%±#—Z£¨$­é1QsX˜ߥíˆÇf*ûkc'•¸PQ­í´./‘—°¼,?:­_{•ߊða°ãäôDÒ7¶T)QÚ!‘WÍŸ§/“ˆci?ˆU+MNÏ}7ìo»ãôDßÁ”1 u£}‘^9òrTzx u+9dpÙê8P£Fm^玬HqÁŽÛËá7ñˆôôÔÇç…E²ãX0üíuƒô6ÑÚÎ=Š¶Ù’™ôGÂëõÍ1H"Õ±V‚0›½ ê£óG%bó]/Ý— lújÏÈ&WÓ©P}4áqLQ/ ™¸‘ž–N\)µë® é %¾ò6¥S:iKÀgÓènÞ<|€¦¹±¾”³ì=‘’¸Ø6"¼y8ó(©Š ŠÞw ¿jw—Š’}!7ã©þ}ºˆ»]é]ÈÁyPaý÷Æez«˜÷_PÆE®ÛÐF>F(´Q:m<áä«Uúçš~¹ÚÞM4 B—”‡½ÃX›ïóÝ&r¢@`b>mXêl~ yS'9ßÓuÛy”?ëªkìÄ¢àkUD­c¸ CIÛ_MI el9D¥/À^,Gcw@.n‘ù”2­ÂÂûÆJG×R>'sM¢è†”ÄùC-d6ðÑ<"¸ Ë·âöP€ Ö²ú¶Œë! ý5^H zå,¼ ¾åLÒìF~®KRÖ{Õ„‘õ¬î¢º½6˜‹Ã^jIÁð“½¢ÓÆPwÿÁL9BöˆyŸé]‘¬<$4û0’fÓ`œR+>ª–ŸO«ó³˜fÇS¯‰ÒDøÓ|\•žúnâ&×Ï«jf o»D4XÃ1$¬®?C={ªéȤ‚Uس’áîyâSzÅý–)Ó:Äw*—êòU¿î!ïõåãV­Ûéý(íJó¢ËôçÎÀ–Ò™'æÇÓÓøVâ ŸAêj"ü‡®Ìüp^êè1G~Û0wCq-½[¢BÁEš~ÛB¶'>z²Íª’9NM¸p©Bnù²ÙNò½ÞèõP“¦<ÂŒîÀ¾Þ•>d:1.ylmhž0bL-–N($œ¡!•R,p ÜP6$YæbMú5*õD!ïүĎOv=)nÖ†9´r%Ýø™·;Å‘ü®T{á½¿î• ½1ãÞåÍGÜ”0=3L•Îæð“ëÒVÿ ÿ؄ږÚòÁiÇEÊN3*–¯ZÕÁýèrétS0’c#?PX‘¶Lëß›·óíÌÅö‰:±[Œ”ÐJTŸT9Ͻ»ÕêäL…½~¦í²–ï·`ŒX¦b‚µG먑p ßl`iÖ¤g!KìõÆ×]Ä_[.Ój[@ë‚I!š‹Îò©²Øé}(üAEr¾ª|Ž‹êžÒ#q[r-ÖÀM±û›ÃTE5”/ÃnèíôŽb‹fâ8VhŽœa­{ÌðÞºþXõå_ñÂèw²ŽýC{‹Š!ü<ˆßê»­µ?¸JáÔßs’_ØûLËÞn°$ƒ;øK®Í¸¢éM«ÝSm“Þ¹×»ÂêÄÏáI¶T 1—š¦ä¥pŽÔI\gKrFeN´ti^&mˆ8·ëÆ—ÂT§6ÕR®Ý²ÖUnß´0ó½4™ÈFüª.»ƒ9çÝsh@)ex‚Öy“R«3§pÊËÓ;Q©?I. ~¬w¶$»‘â^¸í³–ñžG³ µ­Êð}˜2Ä +'ßȬÈ!Ä{ñ)†Ó^Ï3®›Ò€¯Èü­$üøÕ¹¶½zqšã?+zÁñR ™Ž1Åiê %QÁKÝ ©å1N*j× È&¨e«]tRhÎÝ잘nŸ(û¸¤âTÝYv¬Î/³ÕÚ=EV¥›ž2\3·ÄîF¿ôý⣎Ì”fÉ- Y´ä,~p°Ué9y|…z¦-|5%*Ãë S%„’?•$›¿Ã°pÿÀh€–{£L:’ð7—©À`¦k\K˜_‡±ïߪ6Êù4Åriéëž­ä\˜ñHÿüÒ££ä‰ãë@»e„%RB¼å­°Q»Ý}‡hñ¨y!^<¨Ä¤ÈA‡R«Y¸%Øìý«a8xÏm<´³M´ŸŽ£ªE&é>ÑïâøÅý¬ï¨ývbgõö–4¼F‡; þÛ×Úh„ú«5SÉ1ýÈèãþ»™BØþÇ‘_çLaóh]pŽëêý$µ½B]3ÎbDøu°¤ õ¢$øæ3ú³äÌìëšùàš¾ÐG¼qM™%Êë†pDŒü (Ä"WÝâMEƒB§¯ 4ˆîœSÓÊöW˜1Ê.½:³£—?ƒºùS…lƒø²¯Š$¥ÌÚª|Û›å“EèÚ_¾}Ú¤]â#{d±­\ˆf‡·8¨cª¼b,záÍ ÷cЇ«ÂgAÆÃ “J)r§”Î "¼Ïw;ÅQæÃMÝh<‘hQ „1nÜá9ü*œdc=tG·/c–Ë*>i‹Ü;´!Ù>¿†*VóǪèZ¬ö¡MB±Z5zzüZJ²ù»$/ÞÌüûšPƒT{N>†'ûÕkú¹M7‹¹îò]r™ Blªòe:ºÓØZˆÇ“c?ö‹‚Þˆà£%[yz×¹Ö›jÁuSFÒ¼þæš>m»!%¡¦—q¸m9Û$æŽ^ߘ¿K]k3t@ç2¾ @LuçÅKXŸæ{Ø\1üÂS>‘–n'ýh°”l½2ýıéÛÑmªv?_Ô'VDüx£Ô-¿œ¤–Ôd_¼ª…ÊR3̯}Ö³ˆÁåËt³…õG¬ÛŸ.Yïâ.À× (ðíO:¦œ9-»y6cE›êüRœƌäã¢Èæ_)Þ…ãͬÏLÎ0àcM?Ͳ‰dn–z95"7¶UÈ@Ø¿{)H]¿dkY«ÓÉ£\»bˆÔ¿~,™ ˆ€10œÌ–[e´BA0½ä %uÒmë<1ì„fO™ÝÓY3m4~Ô»i-{4 duÚø®íĆÊ#tƦh*2+gCKuÜɸ²½ûµw®>˜‘\~–%æzÇ|q ¸èDYPúJ^b°*•Pì"±Èy |ûKŒwÚ´wÙÃ>î5"I€–m>Ã*crýÖ8°n§…ó3ÖX€œØ‡Düã©iWˆeYÞâéh½víÍJõ뇽±^â'f› ?–§idÒ$³Pwµðã=C|E±®ÔáᢜcÂõuqn\Ê·N͉»ëa"v'y ¿ýŠ­\ɃÞé„2¤¹™Ÿ =ªeXÒ××ÁšJP ”Îc±ý™Agr*¼ÿ„ÿË¡f¥¸+Dõ}ÖUU°:%=³¼+‚öˆ³Ó#ü Ka˜µÅÜìÁë¢(*䬊§áC‹ Ù.ñòëú!Ãeƒ~næ‚Ur¶ïCN+q»cMeL•߯°oŒ K¥5W[Æq'v \屩“'D±æ© èÝá¶ vvÞÛŒTNÚ–f±\ÇØ/ÔI³*¡§w¶¬–~kð4L–f^Ç 5|ÀÍ}ªÈºÃQ”ùÕ^ÃÊŽÔ‘uÆ#7"-oȳä_¼K¶¹­)ÓHˆžæþ„DÑåU¤q¨€²Ù–(p» ÄÄöj’‹‹Ä¶ÜK|Ý)°h ¯ž,äœiíª’í;ºŸØ½?ƒÜH‘͵mE»vVÿfÛ’F F;xrf{Ìy©SGe|ÔK5¬žv°Ä° iÊöÀš™¥Ç(@K7U8æùBÿ@$Á¿=…ÌÒǨÑ–ÑG%Þ›l8«.‹2Œ{Ýq ¿.+–þ&ž¸ñë˜ÃyÉ>Gvø §oñð²2‰þ ÷äû¡“£3çùÀÍHàñ}Y¾üGÓ†nš·ÑNâ£6´Wüg7Œª±ahFÏáÄEˆŸý‰ÖKG«¥¢l4ýÜ&¬ùÖå# ÊlØÑÃy.}2%v¯úœéáÏ(#j·Â´C‹Ý·ï¾KTT°¾{_Ž.£/Ü…1ØÅu¸{D;ÇÑ‹€±ð#i_iÀ—‚Ù@Yª¤Ñ¦ŠY:½ÇÞœ/"¤p€7!õQö°«{ðÚÊæ£n³0sc³Ùþyâ{ÇW‡·âž*yFÛ)mjt2ÊL“†šŠ Ç‘'MÛ½KåaïBã ¼/­KQLÞæâØ¼dÂ4„®½¶)³‡öŽÍú{ PÍ‹t,}‚Ã<:£C—ÊÕ@9bíp·ve‹Ú›vÚþ–M÷NúC q © š8x2Od;N]ƒj9ô ¢Êüâ…'Ñ=Z¯j²º¢âÕBzq–›Ðë÷; L5ÍcnsqóîË«hêâ˜7ÌP.§Ÿz”b !Å{™Üë˜ÁšB@·ð]½;&~× úÌáuËpkû•î…uyyµæW fÈ={õŽÕŽ¢LŽ_1OÖÛY«ŠÞ<©ŒŽØÖòEÙ¿ñÂ4n"a•Q¢ÚPfçØžDvÔ¯þ!*¿/ë¼´³ jÊAH%ÚÐÞ!Dg“VH¦yJј˜R±ÆÕZ(TG¼K1»kÂróEàB§É<[-B _¢Êšò)sµXú1­gpÄ$[3OâP“Ó•øëZ/áDlî'ãã¹Â&xÁœ4ñ@kš?°(é"?!ÄK÷"J~?¾ð8ÔcL^xÆî;°¼{øcOÆ û©±äÚp*2õ#ÉžÞò‘C£td{‰á-ŽùyáŸ7?'ŠƒçwÀ];—\Éåd%€^Ö™ÖØÖ+M³[Œ×òßf·ä»æ>?ár²äm ŒðÌJ‰ôŸÐÖ“'ô50O–7lЗæ_œe°ó`r\w  ½¾Æn´§ËaÉAÌ®å"ú”˜ˆO›{ù…@Dm €iô¸ÈŒnU EÒNªóU7úuX…L‚qËFü1õX3?+Jîä òca²{D¶L„ufþÀ ÑB Hò‡nŸò ‰%k\dægï¢ñ½&wm%J,»¬ÂGE×Qÿ)lYÆ5O^9R)8$ÑrÕŠ§·ÔøPTû‚]Bj¯U-3î…*œWdy×’4¾ƒŽÂf’ÐÓîb[ ekØ O¦Áu˜ô3MëZ›)YH›àSŠþ±ŒÈÅv vÃW C†vÌ0Ü$Tä\ÿàÐÒÊï‹®ÄSø;´±ÄHú;ÆÈRq-U׋ O<|‘ظÂì©Ü(Ha²mÈÛ¯".]T£(ÂÃx1BpKä4ÊbÈU¬W‹؈y9 ÐÉÍÐST‘_ò;t—Ùáf¬èЩùÚC»GäòQè·BøÑÇÄ•z÷‘ŽB¦€ÔB›>·ê6d)€F^Á±]hêÕH\%1ä¬åÆ€”x•Æ¿0ý¹¹ð ¨øÐ”¨e›vsÒ=\8èTIñM‡H´Üû¾åˆÜýœÙéãÄ C·L £9jYþ½L壳ÊÉY`⥞þ ¼ÓªI S0"P€Ý§c„ye«ô`‡œããOºïaGnþUdåØ˜Ú¨ÚõC ìÖ…~9“ E„ã`$t³€ié¹<Ö"%yȦø´þ`TuW"9ϧ`KÑzªÕ=—À¸Ñ»~¢Ó+Ç5ä4_»ðë¹ð±4ö­Æ “7>; W Ÿ=Å+Ž‘6©p^6óc0l }H±mµtò˺!¶yjWHh· ,~”ßʼnúp•ö“Ó¨+ÆæäÞ­•„bä‰x t¾2ì Ñ F·—êbÈ’!z뎫qòÏãsfÏÖÚ]ÑÕ>‘…Ë•¾Æ@²2gÇó£"ÑÞª ÎÊéX9›Á¼¦Õ¡‰'û¦nùZdV™aØ]cvþý„êÒ×–™ôF\„#• ¯hpBÆàtŻނºÍÏÖ¯¤àØUµµãâ36Ó‘&§C]å5žÜþ˜ˆ–2".ù õv™xΡ£¢¬yeÓ_™¢'Îð‰ã=g핚.å£ç`Ô⑆фà§>ØÕO\íÌå>ÕŒÂÒ1øny¼;‰–nÂ;L½æí>Ô1BgŒù‹WïªÇr˜ý­’8…9ã¨SÁ"Æ\MåŒV&:ý¬z «_¡e4 ê[8’®ýàÕJ †"4DùöZ QÒ1ɇî3ÓNoÓxÑXà«þô$ùtœkQF@Åüû5¥÷;b«ZŽ‘ºC€Ó|y?tý†±v*hr¥›ùœC3[Àû\É ³B÷™7¼ñˆ÷ÙBÚ„ØliK¤ï7Ž|…²Ì‡~ kxdyn/Vš{¾ ¼?FO…}ãÊ!à{ÿ^\®èÁû%«E‰ÍîPWRØ(×DÕ*~¤>T,‰5?>5·b™À;êÓ»Œ‘Yu ¾»s5¾‰מä¹·ÃI$ï‘T‡o>Ù#E’¿ ´Ê¿tÿþ¶,Ú21xúF —1vq‡~BÑ`ø%s÷áy¶C¨v^³¡h½~å7ì‘]£M±a©7Ø,u]è¬_ÝL k9ŠK/C Qùã^9yNÎúѹ(Ï–z}ÚÕé›TÀñ.{àtc>7—àµ`çQ®(¨ºCæºpø2I_Q(⦓ÎBÒéË…Û Wøn±l«`ß,ûÛ½š.v £|B¶ÕŒm*2hšrí‰Iï^"oT]Qß, a¥•›QO“átÈ"Û—*Ç׉ï†[¦å1Ç_³Û¤:¹¡£åŒ½/£éÃ÷>¹¦uñ›™ñ§LˆR»Êõ‚I„é^ -P¸Ç¯E‚¢ £VlCίe úÆr[ô‘ëñ¡ìݯá ‰ìº7q1lZÅè‘-(×6Ép…lÑvB p Nr-7ïXûžOûÃ!¡>=ÞÈ6þ¬%y®K4⠀̼%öç¹”÷J1> %¯ÉóýrÇ þ'¾µ2âø1ßö =CÄøƒ+uÀtÖLˆç¯µîö$ƒ)•íEÙºÔÔŒ„=eÇ=;°×Œ_õF©5fÖĦ(æ_ÕC“Ä– n%ªF½–©fÜ—mÖÊi#pïÞ’e;D±6(鶇vUÑÒ)^Í„H*šDÀ¿¦“h °£W;0kbmhºÍl¸åo3aËÙxÙþèm®C¤d9×Ìòg*Jdñ釓­5¸m/º7àPØÄð̹j±k÷H{Ú“ ?ÄÐÆafÛ ‘'i¹M0H1†Íª-¼y‹™N-"g5ážFÄ3"Þ}Ì=K¡t¿hYßï/‘$áó{µòý„ç'ø«ì:ÜñÎ>ŒEÑU[ã'C¥”d?ƒæR·ÌwûIÄZ \ŒÇŽ,*3’Y"É­5®ÊEKG̽fÞ¦‰âx®-t‰œKÕ>ÇýsжsÕ» Î߃õ¬æçÐl\;ö»°'e±¥(ÊzZ™rIš4.š˜Í·¸?•_cgé&Nâ.Ó½±%¸R­;¯"Ĩ/ W5ï².oDB#¦ª 9±õ8i¬‘ÖæU0Œ%…³-¶„{´4Ú$%ëž$A¦ZÚ„_räo蜶Ol¡×Oh^??íæè¥¦#ÊôþXÆ™·>ìÁ÷äìñ¾»äâ.Þ+Ë=VpéÈë.ÆMl'i"rq) ¥»ÉXdÝÂ"ZGµƒ/VHûY‘˜_áX2P¢ÛªËG]ôTqß´½Ÿo!Kj¡'kxÇGuÏCÉ\¢=ÚÍ9¼+·;ó Ãþ »å•Fà¾'‡˜àO92Xj4ò©qmiŽÕf¥Ó)z¼˜ W5ÞçIÀôì«qT7²ÇM›ž¬˜ME» Ëœ$î†g#ü‘²^¦ê]Á¡XìœL´S¦Þ[õ‚Nyv2ùC«»K)±ù¨^CÓ“}²3ÿæ]Ô³âö5+¦.oB|#ÖfE,ëÝ õ'0X홆#Ó€IIY&}0¢¯¶Ö­8¹çaýù»ÝjÚÈ>oIÕ`ªç$xÖì`⨠$i«jhÞù%3C_@“R:Þä©ó±äƒ7 d욥lƒ*H´mÇòxö{¹Ë/ ðOi«}¼âñèò´¤µph¨òI#ºˆ’פäÓ†~JšC |íñQŸìM©Ñ k·ë¶¡ÒÅv¼iTñ®™‰Tw}°Æ1àSµ J@™ÈIAg‡}ú¦ý|/"UÆ!qÉ~‚Ó¶Ë*C–r8ÿ›@lޝÊå}žMˇ¼³F#ßk|ÐþÓë'MV$•}Wb¬¯î^+.?©|°' •¶K,„‡ÝôL{ã8ËÌ>¾ê·~g±{µúÀô¡\æ%Ò®ÃHävU*þŠwòû«Ð ®Ú<ç_‹k4S°qc혧<]¾gÄŸÝ=He Õöô‘Tr¦l‹‚ùG0GGÜ)gÁ`‡yÉ òÚM€[Ôä ­Ÿ$#“J ì×¢ü/T_/§vòéãfÔz÷yaMªí¼vuM{8G§Ç]dŸã‰Œ¯ŸRËõ>VGÛe~­…s¶ë#N%Rä/ù¸JЈ¹ª‚«T:Ãéö€Äºæ‡îÒGM¾Ðµ>»ør¥é0E! ­ÚÆÀL)ŒWÓ¯¸º Žîš;pûóID\øÆ°*l ØG XP,R)‰ \ªúk– (ÿ€°{xÔóN‡lW'X?&Îä¤â*bï1Ɖs !‡tÚem¦=_Ô¡ÇŒ.¤f¡ÈÑÒ°¤Ò3î{Û,­ì³Fµˆ¢ÕPþ~Ù‡cA` ’B+éÍÏæ3™Ê9f+cˆa ·ÿþ°Qr–N o:C‡þ+7°²Ì”èýÿ2Cÿ endstream endobj 240 0 obj << /Type /FontDescriptor /FontName /GKVJEC+CMMI5 /Flags 4 /FontBBox [37 -250 1349 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 90 /XHeight 431 /CharSet (/C/e/f/g/h/i/k/l/n/o/r/t) /FontFile 239 0 R >> endobj 241 0 obj << /Length1 1755 /Length2 10832 /Length3 0 /Length 11955 /Filter /FlateDecode >> stream xÚ´P\k·-Š»÷и»»»;—kÜ î ,¸—àÜÝ%!ÜÝå’½÷ùwþó^Õ½ÕU«×˜¶Æü昙ª“˜Ø ( vpebcfåH()ÉñXY9˜YYÙ‘¨¨4A®vÀÌHTÚ@gØÿ g ©ë«MÒÔõ5N ìw³°qظùÙxøYY쬬|ÿvæHšºƒ,JÌy°Ð‰Jìèå ²²v}ýÌÿ¼hÍél||<Œ¥ÄìÎ sS€’©«5Ðþõ‹æ¦v °9èêõ_%h­]]ùYX<<<˜Mí]˜ÁÎVÂtŒ«5@ètvZ~7 P6µþÝ3@Óäò·]léêaê ¼ì@æ@—× 7  3àõã 9E€Š#Ðáï`Å¿ÿœ €™í?åþÉþ]äðW²©¹9ØÞÑÔÁ ä`°Ù*ÒŠÌ®ž®ŒS‹ß¦v.à×|SwS©ÙkÀ_ÌMÒbjÓ×ÿiÏÅÜäèêÂì²ûÝ"Ëï2¯§,å`!¶·:¸º ýæ' rš¿»Ëß“µu{8øü,A–¿›°psdÑr9¹å$ÿ y5!ýk³º¸Xyy8xÙ@'ÐÓÜšåwyM/Gà_N¶ßæ×ü|ÁŽË×&€~ Kàë’‹©;àêìôóùÓñ߉ `2w˜­@HÿV5-ÿƯÃwyôY_µÇ`ýýûϛ᫼,Àv^ÿ†ÿ5_Me)M †¿;þO\ì ðab0±s±ØØxØ<¯/~ÿ]EÕô ÖSå,Á6Ö¿Ù¾Óÿ0vÿG´ÿ,à¿‹)ƒ_U Ðþ+rV.Vó×Ûÿ³ÔÿJùÿSøï*ÿ7‘ÿoBÒnvv¹iÿòÿܦö ;¯^EëæúºJà×5pøß¡:À¿—V hr³ÿß^9WÓ×Es°z3'3+çßv‹4Èh¡ r5·þ[2Ûµ~¯šÈ¨ vý¾[^³XYÿ—ïu¿Ìm_ï—W]þí2uy]6×¿Æø_×é¿yH9˜ƒ-~ï;7ÀÔÙÙÔ éuô¯ˆ àÃöº @Ï¿” `av»¾¦^{öX‚‘~™›À"ñÛôâa°Hÿ‹x,ÊÿA¯Rf1µs´6ý…‹ÀòºøöÿZ~wÄbñ|ÍþÙ,–@‹ÕÀbýä°€þ€Ü›?à+oÛ?à+U»?à+3û?˜¿²rø¾²ÿ_Y9þÛÔk%ÇW±‚ÿhƒí•™ó ÷kº‹©Ë\Ù^ɹþ_ɹý_Ùxü Ù_Ùxþÿk’ænÎί£þk_Çü?ø¯ëôš#-̓ÍBljCÚn«Åˆ<˜¶ÆaOÒnuÙ™Æ Œ\û¤¦×5²2—ʤ—zÙ¤l:•Ån³,\ølÖ‘Ö{q^3‘JïZ‘šÅÏ¿\CÎ&ùܓϣ7Aä꤈¿å/vîƒP%‰~ó QĪOƒ Ý—¦¶g1Ƀ»DšG>´M¹ã[uI¦".1Ÿöᆺk³Ù æ×%>MΆ}\ð¯ƒÈTåOä ‚wH‰Uo~ ®bô’tEÊ»mR†¹bH KrÂWi¯æ¡=æ»|Âô1“Á—¥ÓŸ¦K*‰ßÊèÓ9€ñ¯¶ßþ°í–/Ð`sPö˜)ö=¤ž„Ý1ÓDm´븮æ"pUþ’ôe:®-®’ãT4ûíaÁ¹l+q•]ï4€Ö±Æ½ÿå'ÄRo-öX²ò…á*¤­Ñf’ÈÂC îÕê#]2‹úeï£{¬’¾WOßF¥Z¼{Ö´À©÷£Ç´)¤˜’1eŠËSRZl)à…3þ€ÝÌÂǧ ›¥ÞHŠlwf™_Ãtia„†Xþ´V!¥ÕGôÔk<…÷Þò;iÖý½Í vÅ]êçÈ÷&-´¶ .¢»´Ÿâõd¿î–6Dtøì• s™],)Èá«ûq3‘ªF󑪻À(y¢´!’¦s Ú)[qVñJ<*´>t¦c‡sÒ.ÀØ_ (Ø«j ÀBz[6v—ÍÊ ÷í+ÝíÒå!UU/à§™éÅ:Ä\ëŽLJéD“6;C[/çÌAÈPð‘{€0hëã« pâéÅTÊ­F3Ô`û¢®hÙÄ£ÕÔ©ÁåM!þåeéÁ k>’M.ÞÈü<Ôæyˆ(WÊ–íÊyçm´Aù#|ÛÐtf:Þä.ï.øªyâ©oÔà¿âRC=oO¸ß>²'±Cù<s,”|oŒ Ã`¦é1Ió†¡u¾Ð ž­cFù–qœKÂðsnh?T÷xP®8e©æ¸˜7vïíe…çPI•|±"Vñ=öfwþN¢6¿9#Þc~o•6-”øB úË3ÖÊð2N,Åy!Ç¿ÍþirLlfùº(—Á£éÁeM< e¢¼FøPz/øÖÉgq³ÿ.à¼86ðˆ%%‚&>;Yáá逷×kx‘|¹_+÷‘!c y™¿¢=Ä?O[â#ÓwÈ^@pM‰eyÞÊ4áðl‰”ίã>Z?´JþR^‹Ng“–;­Ö¶÷á±tÖ£áS.°92Z ~QZ›[¶V þƒ½Ì;Ý>5w( §ç ýRÎÁÌlCò<³$¶¨LsåÇ(¹'*¦ãlâ5ˆa´ºæ ê‘ë¯m-™úcIЊŷÐõzcCßÈ:Ñ™;Ð¤ÖÆyÙƒÎæräË\Žva”hm›]á:=¸áO— }•yÚôX„™FLïd­ ãïž"”z,&¨«=,ÁÁ› ïêŒ=Ó¿ªä5ÌÜÊ€µ“Ö©@ ¼Þ&ÙØ‚amaX?ñN}hm&˜Ôõb®:q(ÜÂŽ“›»},JuPŸ›ÿÑ«üêyÐ9·“óŒ’ûF‡”¨]¹yµÉ÷೬Çî¼?ê(­ñ­Ê²ê&o–­¸ª„ËŒ3T€½ÅòŒ¿ ZÇ ÇhÆbV»ÞÓ˜i5f-ÕÑ o¹ðåCì}èä©%÷àœm úŒTÍõå¨â¶qÏÃK‡;‡ô3hÝ|›H ‘jsñ•òõÏiW-'Ðø§œÊ±ømë<®œLžU|™ »åeS©ÆÒ¹™mnBeA0eO§¹ÂvVÇÔÏKÕE'¡³¾a\:Dty1©A…÷çc Üéî~—ØEœìâÂhP}%Ó£NåTgï VTxŽqš ‹{Æsíª:“Õ•á²ðvzdŸp»¨˜Š’ÂR[¯µ³¦Ñ¢Ksuè-`J]3ç*Ö· ñ%mBÙ~’@g´8?㯔9 ÖT¤;L2c”*µ´A"$WQÆÊk¤—Æ+[ç­?V¡ö[, |‚J½Ô•`Œd¡ÄŠ#%=µÅoG™à“æï¥"Ûúö3èGx§?OqËÐÏÙÆG´-ÑÜõ/á®/È ³±Å±‘_Þw^ ý2âDmeÄK'¡Hs kh¿*Ñt’ë ¤¯áEãyr¾%i&lÄåÆÕ.mòSz´g< ÙW(·hŠA~Ñ'„ò$ª*)*Ùâ`œ¬þ}3§.4ÏïP^Z¸K.ÂbØk*ÌPf_›"ÅÉ,”pzÚ sÉêÕçï òÞ0]óàf„–B¨!¡{4E(RÙT ®[BOÛ»2¦-ŸŠ© ÉŒÎrбþÀˆä{—®…=w+r(³jç½LûØlÖ9< ö¾ÞèVßm0Hé.‚âùg\f÷æìù>Ã{—mþ²í(ÖOZZxÐí¡ÄÌ͉Q¾+bF-¸¡\u #½.!²¦kzýñHž¬{‚0 Ó¡}‡Ô X#ÆÃOե˱›mxA$ÝBG½ö¤ÊKðüM:°‚=³üQèüàûD68Þ¨y¥´Ï ñ+Žvn×ÖÜ蓟¶ô"FfBMP‰¸y…»D…­Ï¶Œt¼y˜¤3ÃÓ(;õưÊqüÓÛzï#©,4â×è×o–·2±Øê‚¹O.*oùFÕ«gD2çÜܱ}Åš½[”·%«±¹pˆŒ°K®Ç䚃 d>ÚYá#ôÔÿ 6I©ZH›ÀÏê½Dñ’\¶¯xsCGqu~ÜŽ)E+›l¼€²EÍYPG<å?jMÚ5•·j ÏZ”À°Ÿ"²È•UE˜ýjo\¤}ó¤öë,HY²fìu~ãšÙ¶²&¨ÉK·7–ò²êÚEøóxR×uÉ{sâèÍÖw‡‹­féÑ÷Ž5ÎV!6o•SßÒb v ¤hf-oô&g3Mé¹>ùÏK“Å„v@,#‰ Žä鳓öû10©"“>\í*®ðIo¿í‡Þ°Ôþ{SÐÁÙ?tÎ Ðõ¦«›ŸÓ †Xîøé±A;&N‰Ýд7îÐE AZñ¸ðä[c¹Ä²!ç\v‡ð]]Ûý1Áèòæ´òzÔ··”é£ã¢§ÌÑÓ ôôYðþ"4ð;ÑVÞ‹¸vµ%Iá·§ûŒŸ·ˆÆë(šŠ>5‹}•®HOѳÏ5B>aÆ*Zt™o‰?&²$3$^\Çø<=#ñFæ©Ú ¿eoN 7vÚK"®­RÇe ÷jOõudm œ&†ôX€üQpä}÷5S-Rûó„-^-bï*îQŠ»Å5 ÷YrtïmR4ªìZ‡XÐ"OF¾a5h!ƒ¨‡°ì92º¹ÁâE`ixŠ´/| éd´e’xx_Û ±ýž¦.ËÚä‚ã¦kï|–v{“íËü éûî=ïYu1[·JS^ Wåáj§ÜØ)´â Ê7?’ƒ±4T2'UpòöE*:£Z‰6½0H|ØŽ¤û¾ŒÂ§ôÓEI+øÉ3ßNŠ’ sz£¯-³u|ü%ÉA eKÀÈzZ„Ó•Ñ g:Ï “û… ꮊ˜8!ÌQõ»šsƒD7¨<}pÑÖÐIü=)ua0vDåSöGƒFUM?š.´þý7€e‰ï¬8 à mówœo°Ä.¶y»à3øz>²ÛElÏ©Ô ©† o*ô;!{6³¯›ä…©’GŠ!âk˜Zˆº$x;ìçÏ%¸e/©•Òf=»§àϦDgÛºˆ@§z@ÅÄb‡áëzÛ”ölÞþ€çŸ´®‰blýmͺòìƒíyjxgÛjÉ×ð!‰†;ÀåOS µ- kûIZCê!JÜIµ»^Ø–zx‘㺻’‹}Qw€×ùqÌÏ{‡^ *:?\×6%aeÀ΄ÉEçW}‚ÉŒÁt4MÿóÞÈQ;Ù†týÜTºe ¯xÓ¼åRhïj1-D]U:¹Ú‡ŸTfS¢ø}N ‰FªÜb“›n¤e½~?aBTùeha`m‚—eéåýLÉMÔ—gs\цúZd .‰3‹|”ÖxI%ékÕo7©˜¾•Åò›øŒ‰½ˆwj=À/ÀSç¶@Âm­^^Ï>#.ñÉö:i±Ÿß1íA°¥š´YœJ~E. Øú¦~Ëå®°-uÒþAvß´s×\_#à”ŒžøaÛ5þQ…ŠGÇ;é"õÈæ}M÷‰–•žS[ÈÖÑN\¬FqJýکζ åÜH¥môH¸PW!Vñ„¼O˜¯Š22‹„ÿûi…À/¸t€I¼-’ªtu$1¾¸]†¯dà½`™[}‡Â2Ñ Á!¹Ð#$//3ÞSk‹Ñ"óçä žI&ÁöG ïÄ÷S‘p„Q³·å+ÝÐ>”CXZ-ïJÒA[sÌœca'ã_©…íã'4koVawNc¦„ƺK¾|”ÈÂ5ÊÛ°A}Øþ)½aU{Öä£7|gלwgñXsì ó¹:?0™hõkÍHãäh •îªíá …a4¿H"’#ÿ"’“/dz*ºVoÑ?,Eì—ñA5R^žraÖ¼ü±ky £[.|…)¾7#àèBuj”Ö•¼Kp!'Y¾Ù+y§ŸÙH) éÎd¥êrV4îȬ ŽÐ©5ÚÒÖËU±òÐÌE·=—5Ô¸@çl!öm<>JzI#úŽbôßû·Nv…9a/¸çnLŒTc“9°¸vDäj`º@Æúëodåå…Çù™+ˆ(O²ŸbGš/Ôøó‡²I°QvYç%°ml(ð÷Á3=Ò^.Fì‡èÞ¼AýR_Ãñk‘ÉÄEnWTÝkºP¢ñVêÎ9B¸³í3`uQÂô%qðˆ^™•¹màõ‰Ë ÿÚ¥‹Z›U„úq›-ˆqM¾û¼4Bå^½¾üâCca[9kÆ$ÿ91þ9?ZÇg€IÁœ ¤6ǯܯzögnÍQŠ&«*Åbe—@~$’11ÛåaN¼£¯¥Êc¸§ø-¶æ*N·1äQA¼DÅÔtrËû‰¢‰åŸc ‘ìi…Jô99ýÞ½uÞbU5fIX*>Y&wKj> ýÚ^ S¨Ÿ[ÜΉJ‰$7ã¦UŽ}ñ³Ð¦]­RÑSq}ÁÎgdÞÚñ.ÑN[^‡š3 tM7E!›Þ±DW9R îøÛ•|~YA¤w#ÇWµ¾ãNcÜ|,"ŠÄæîûQ¨&lcy©ŽQ|E¨Ùu¬¸sÔW¼ŒV5ëƒà‚FÚUlAÛµ]ú% ï+;ÕÞ k_3A‚ ¸ÎG9†îšxêf…õu7.IœfïÞŒ,„N0%$œLtžp_°Ä˜Š„ÎÄu/_åâíü-yÇ?„–zÐ2ÀcŒ VpÝJlõx bh…·ÕX›'©wH¿Oqyv£zêXaÆ$›dèy>RßñŒÍqÊH‘ap.S9ºÈÆ…¾µ*DÁ„¶SÔCǾ$Ó »×„jàÀ&œ3&h¼âMaÞ貞ü陎íd±¦a6VÔ{&Ãi–}rñ®&&¥s6•ÏGûƶ‹Ý„ézøk4ŠŽÙ÷£ù…5vT®"ñXõÇ/Ïx]ÔUŒUT\ûT‡ä»¢AŠÇòã5ñö{¨:é>ɼw]tU”Z"XÞ§ Ö ºm¨>3u †ªLG¶Í-Y"Ù™ÙÇGŽä¡²pðÈʨÍjjn9ÕOáfÈêN.&Yši·JC¥0/lzèÚ~$R¿öXråׯ9/^À#­zž³ é ¤OØ£Iª[Æaãb>O 75%uuMˆt^$nÏQÁS2æ“ò·–r<ðAùžþy7ë¶Z¼^->ì•ØÿèÉδúX#€]¿ZÉ><'Ó¦%Ç[Àø1 É,uIÌ÷¦6ŠÆåá_~-ÿ"*GÛËéžõ¡èh™(8Å\K!÷'FÞ#Ëètñ`'³äkjAOgXâ1HŽÏïBÓî-¨ˆQo¯zQ…=T´O•žp‚ÏîD°° l½‰X>Éû>â ¬[[csX…zÄ#´Ú´æVûö#Qyÿö íYÏCýL}éWüœ¥ónQßJ@­[öâð;§cõ¼ÝêüɤÉè{”h‘X<\¿ªã%ÔKˆÕÞȶܕý,“lµµB V‡—KK\q̽ÝÙÛ™ô]Ý·û¼÷îÎEQ½ÒÁn¡Œ¸R·k#7¤Asr¦?³ÆT˜ÐsíKdŒWÛÖ&ÙÙå·l8‡ä§1w@·ÕŸW}Çê5mŒ‚íéD.J´Ú×6¡OŸí2¦ óãV9ltâ“^+œ„ÃÓÝ'äܣĪJ:Ϥ¶ý0q³ïS¢v6ÌnÖ\ï;7‹ yËî¤ë³(=6ÉFèRNž²7z–¶‰Ÿ[ÊÛ@1£À+82”ut¬ià}H:ð,kWÎ|é˜\) *tß7Ëói}oGÒMFEÞxÄÙܯµÎ× ÷ƒ «†êÅË|&dÎ;%ÍJ”†KÀ¯`ѯí—\®¦Æ¥op¸€aëú®5|óî«™¯ÞðÑ öPcÿîKYЬ#öfÖÛqVh¿ÃÑ:q²‚½ÆTÅøˆŽÂí’’©óïuÍÞÊ~)½·l]úߢCˆ¨L5ø@'Ù¼>u5u†¸ý6 ¶Û|¶•óª`Ûª5¶¨nhÉöÕ"Ý%»$>ë¹£ ª„7kÁ_lÖ~ý¶2ÎB*¾³yãY„}»â²4+»ÄˆU™Oúâõ~w„úŠü§“˜SaëÇZë²\'±·EG¾RªžAü~ô¨wÚç*AT+%;æ°3Ü8Jš‘£h Z%s þËkê“"«™;6Ω®é_2¦pÔÌ6´á[;ÎÝX mˆcÊVñÙ¸rS’§Ð~\Âð(rmàGÎ_~-Õ£…ÌàX6<ÕÔ¹í ¡ºoãåW›jhÍR\@íç9|\9È[!ZB·º„ySÊÒ²—€u+A“U>ÇÀXª÷¡÷œ÷õƒß5-1„ɰ·Vv}ÿÜþ²+,nÓ’n¢Y•ûc“"ô<ê(iÒ³{ÎlÝ›‰Yó1çûõ¥b¿ 4Jà€$ótÍÎ;¶w-<ßêùQRQ ~XH“Æ€ìo ŒÖ_d±û®²ÐeBÃt¨áûÏÒ±Dt‰+Éë´6J ±DïcP}nªäzö¤Ãºé[¨Ûù@ç.¿Ü õ—àÏ®¦JÙMÃŒ§RS­.\èlg¥ˆF_Óã³ìûA˜Ë’¦·¸äØÎZŒ‰xåFŸ,’„óŽ—4ä¿9 ¿ÂÒiãÏZ±t?†èº‚Ϧ±oC…æ›S!ʸ¤hÐüµªS³© Œi^í}‘oýriXæiØ‚ö”õʉÒÄ?ŸäÊìT†!ôוzíIÝñæ!h×¾—ºË#v)ûpSèÁÏKìª,03jÚaÿ|Ê,-np˜]Ñ DË•rŽÍáŸÝ &ëYZýÁsªŸ¶­::éˆvCl;š,y÷xh¹ìCQþ®w¾+ÐÊÓŽ_í¨cxs.MLý£OU1?A5ÌuÔ㪌v.þa‰ =vm¬I&:dô7¤¹éÄ´²ØÜszSJ¢÷yÔ–Ú[e˜žBqÇD¹*M‘u,ZËíG0 Z°f2_e{uɨ¿ƒVv½ÿ#;N†§pEuÇ•É[V«ËíóX_O‰›ÀËf¦Ý³àÚ³ôg}&TaWŒ”P:gNïµk•×Κ֛ôJß¡´,z('¢Jλ½®Ž(¡F¼Ø%Ý…çøªž ÚÔ—M¡ÓaëþÕË)+û=`y¦{LqDH»s|ßzszräåCj±:¿ÏtBØ‚Sæý¸Œa'jP|±AE‹^ÉÃókÚ·|í:;v­bÝÙz¸MzÞgÍ]‰sÈ2ãwX)wr°ü¬ˆÍ§Ÿ±r'~‘£IÎ{ñc3Ìg+M€ß‚.ODͬRÐqͰõm:רßÚPê†Hk1²âõÄû’V…>@Iê\?€Ç¹øyòßjðù4Âe{,ð¤³FÊ$\?H_pÌŸàà]¥"dÞíŠ/oé/—«{{}Z=ˆ«øÔ\94B5„ô,ö&' *P„[+^>ùþúTŸ®ÊUÓ+ʆw7C\$\q ÔˆˆîÍn×bp-´W5ÊtéNÓXa )5öЙ|ó5 ;q#­Ý(ä¦ÅZM™XcbÉŽä„+¬—4»qó+;Vž·¦*lU˜ö™u·&V/YòÔtcf°™Ef'£9ðÄ6N Âø±U@ï±á½Ê%Mñ#µî‹Ê!¤RM…¸Nº,IX!O ä8¯á³èsô4š+"­†ã9­;¡Â)“ŽéWãåJÞNŠnÙ}W–‰²ÃÕ¿QO8qpET¤-ÂVõÚú²{HÊms-²­.0ÈUÏÑ™‘ø•>žeŸRytf.Ÿ4/úø£»Íù`Y*Db¨?Ù=l œˆ5ÂW[-׊ûíBM ömœqr\—ɾOyÄÅ¿² (M %bžKA,RðMáLT@íÚÉu;ùåYÌ1pŸ|ìÆ—ü9ЋQe²|WŒoâæ®5 öâ¬ÚMzkýJçºÏó[•\w ÷Tzwªޱ˜x‹t&R4ïèhŸ'Z'Úôä/×$zå¹Ìa·\Íyd ’"AŒ©~¥úÈ«g>Î[Ôwˆ a Laž¸ó»¥À¢¤xi¨79¨8ßf¥¢àÞ,ÏPÄkŽcœ à‰šóÊ)ͬëÿdøéì ¡ÊÞžx± ýíüY nšïŽèN3b‘jÆxËp%ýHc ªv²> ~÷rÆ;ìA—gøípŸ¿ÑÈ4mf;♦ëvËŒ…ÞãÚF×!¤§ob\Â&Q~ºOµ™waÛ;Ê1Jé…ô 2W"Sm-•ŠºuB«lžÔêX\žAûЧ€EX×JíFã½Úy×C?Ùª7 îˆÆ}O4I[Å>CÖA²ï=¸‹KÆgè.uÅYIá‘¥›·G)]€à ·IuÑ¿\óÉÝü›÷cÙ/ ź0‰¤ÅV(B÷håq¬ _k•Ó£¯F PÈ$Wg*§UÙˆä{^ýq§åª—´oåo“®«a”Za¡7MB+ù—R|5Hrí­W–O/ÍÚ¿BxuÛP(Uès«2 ô-ìl™‘„g¶+žŽg¿Þê"XZ°oß Ök0¶^[Åg[=a%ŸªíÛzå0ªVଈ÷ä[]t&ßLQ“‡"²[ &5´;N—î_6x(¸DV ÇBÌP••ÐÞ¶µ3\Ѷ$¡y†“¶¹"¾Ëé½àö¡ÿèµÒ¼Ž½otÚ qbEù‚ɳФ(E†ËP§}‰ŒJ¤WÀºKÉfð nå&ÚžÔÁ4{!!7"éÖ)ÿ˜±*‚Òhj޼ežDTc0FûÀá¸Êül’ƒá—F ÊÆ¿TÇVbýz'›ËTý#>7 ïðšp7·¡ì(€nQfÃóÙØcÀ='5›Ç ¬TMÌ®zG}½fâï2z1 =˜Nß>ô#ã[íÉjéúg Ó“³–Ó6ا8 ÒëIA¹]üp*}Rén5ÇŽ´Z„°5@# ‰”3 3dH«i¢WN ©rmkÏ~úÁýøuX|µ'à—€G•O“¼$èê¥[iX é#JÙ=ÄxÙLí$‡T~åö±ë–õž;¹Z=3Õ[€_mÊÖ²®[Žž:4³'æ/*ÚÇr+;çæùÂM˜Ó¹9‰ÏÜ÷J…žÁOï|~Q¼_æî©·T–UB®Û¸ìc¾ÚF Á¨wæj/Wá#ú—ôÑ‘o¨)ß–¨¾ÐRI  ÷¦lËäh2çh}fæÔñ@§YìjMB)s\X¼5# ö›N»ÝzzÉ"ˆì-¯0Z/*EFŸª¡¡¡_Ô™áCéçfK‰¢©îLlò Çì’B LGI¾)¥ÁPtÊ…ýHCƒ‚N“<­8…l~ßÔš”NήJÛh(ðw&Rn®1Jö,’]ú,ÿ¯KveCƒªíKñòPca›|îO¾_n/ÑÛM¨Ÿ+^Zî§iÛ±É|ø&¹¹Âi%Ø|sVIo¼eÌù­ä¡™ª~Ô ¤?%6Ìsì&G*V8òˆVOÑ|Úý€°Luº÷*‰nF@±G8¶\x{ÁŠSÊ•ÌEÇTÞøäŒ´’²:úˆîÀ‚>°”«p 5a…q|hÂïu*X[÷ùmè:8u©ó‘.…ŽÑ{Ñ?û!Z]ûÑð³Ð›t×ÕrÓX ¦°C8#4¥K¬*²q%=œÁ£ê1›øÔJq%wL/Á·àk'iÿ/[§eæ—<§£XLÙJnúLwý* |ö é¬y| Æa糦[ÞÜÑjCÂg]bŸ—Í”^÷\#—,—Ù¤ª²nŠS\\½­þ†y‚Á‹zd“䢺–/È&;Þ„0&XÔw|à@–œÍäXŒ/Ù*tD¤ñ9dBùwž(¹hjl¢«6!À@Ñ ÕYÇã}fSvÚ2èX–ïŒ5ÃÏV%Z'È0$º-åêt½ú é}?`;g²b^ö/ÃÃ4ª4î‹]ÔZK¾; J¦˜$`D¿&É@-§¥}Êïæ£¢zâ∉½ªçÖß<†{è \ž™²ªc<á„?‡§q 4š:ãKUpòª$‚•ÔïlUžºCêüX¬ôý]NÙ7®_Tfö¯° çí mK††2Hgh°°n3Œø3…ºµ¾Ñ~Žqb˜Š »’í†ð[VÍH´©šË(¾ú ÇS9IS™‡ šhã²Í+¡Iʶæl³öËöÝK‘ð~Ã@óõÜç6,Wa2ªÉUNÛf<åÃM~n¦÷Zs鉫>ê §aˆK@ “]ª’¼®æ<–¦‘ø,ÒNM> endobj 243 0 obj << /Length1 2833 /Length2 24516 /Length3 0 /Length 26105 /Filter /FlateDecode >> stream xÚŒöPÈ÷ wÜa ¸»»»wÜÝ%H<¸»ÜÝ5¸Ü݃¼Éîþ6Ùÿ÷U½WT s®õ¹}Ow±¢2‰PÜÎ֙މž‘ "÷‰ÀÈÈBÏÈÈ OF¦bál üÇ O¦tt²°³åþ#@Ähè ²‰:ƒâäìlÒ.Ö&;77##€™‘‘ëvŽÜQCW €=@ÚÎèO&bgïáhafî Zæ_”ÆT&..Ú¿ÒB6@G cC[€œ¡³9д¢±¡5@ÙÎØèìñŸ”¼æÎÎöÜ nnnô†6NôvŽfüT´7 gsÀ ÐÑhøÕ0@ÞÐøwgôðds §¿íÊv¦În†Ž@È`ma ´ue¸Øš ÅÊR²{ íßÁ²ÐþÙ=Ó¿åþÉþUÈÂö¯dCcc;{C[ [3€©…5  .KïìîL 0´5ùhhídÊ7t5´°64üÅÜ .¤05øO{NÆŽöÎNôNÖ¿ZdøU´Ëb¶&"v66@[g'ø_üD-Æ m÷`ø{²V¶vn¶^ÿS [Ó_M˜¸Ø3¨ÚZ8¸¥Dÿ ™àÛÌ€Î6FFF.Ðt76gøU^ÅÃø—“é—Ô—½=ÀÔÐÇÂúïådè 8;º}¼þtüÁ31L,ŒF@3 [øßÕAf éß4|G w€6#H{LÆ_ÿ~ÓÉËÄÎÖÚãwø_óeÐ’R‘P¡ù»ã}ÂÂvî/:VF3#€é—È8@_|þ[FÑÐâäJÙšÚ¸þf Ú¦ÿ1výG”ÿ*ÀkÉÛT Pþ¹#£1èƒéÿ³ÔÿJùÿ§ð_UþßDþ ‰»X[ÿå¦üËÿÿã6´±°öø'$ZgгÛÿªüûÐÊM,\lþ¯WÊÙt„lͬÿÝF 'q w ‰¢…³±ùßjùÛ®úë”Y[Øíœ,~]+:Ðhþt´Œ­@W‡H’¹€ “óß%ÅlíL~1f6v€¡££¡#¨MË? hg¬þ€ Íý³5Ðlþh ´«¿+³RmA—Á~Pïv¿É€’íþã5cÿÛ *fzãmÿ£V¦¬ÿU h-Aoù¡ìÙ,ì~š´9öÖ.Ìø×~:üžÞ/ätúë^ûWgÌ¿ŒvÎ@#ëÿpaaýíø?t¸þñü×ÌôkÚÌŠ ´õ¿¹°’œ€6ÿ/Û¯ ëcq²ø-xVPïNÖЉ ÔúïeA¯ƒ³¹#ð­fþ`amò‡¼AÛíìf÷G PY—? hò®@Y·?ê²Ýÿ€ =þ€ ôüÍTÉèø÷RÿyŒ]A“uþëÙ«ÿá¿~„î@cøÅ9;cž Ëš Öû*!<7ºq¾i²õ¯Tt^‹Žm.È0 T•i×o…†ºß­l‰QÞ.={5ÕÂ|jŽSjùéý¤óaj§~a³"ïHè[>Šà®÷³ƒ·Z€DX‡4Y–ƒ '²bÚ½[¯„û·¾’åѹ¥ÝJv„§’ït‘ª:…3dÙF鳨$ÐÎt°Ô¨çîognn§Q3'^‰¤chà}Ž#Yò½´6˜£f=WËT˜:qHq´° nPG§È½„÷¥±æ½ŠòWúÜ›xó‰2‘h“VèÞÑï3§VZ|·mè©v]lgÚÎJQàõ£mÇU7 ë;’(`T¶è‡£9W³X öÛM…W[oÕºL-“𗸾{Ì išù7vyý¬uXî§» Ij¾jÞêòQ/èÀ7sc¢3×[YæN%H‚*qïTJ¡¿£]rMà|‚2 æõúx!üˆË´™ÇȨŠÕ6ŠÊ–å}åS^w.ß¾1ƒ2o톪øÈ.ÿjÔ‘t~ž‡cÎ"fB™*Öõ9{-šB‰§X7XÂp¾QŽI/ZìA$»É¶p1@šÏ*%ѳ3_1¦óÑÃò+—þT­\µå [®ñöq8ÝØ~]À p`p/×­Éþæmi©°ÆÚÃy¹[¨ðPÔŽ ìÏíü3;’%„ÂÁ î¶f{àŒÞŸ¨»Û4D¿UWá{Üë,xr£-‘%£È_”ë“9àý佨» šßƒSå/ˆùù¦ÁŸ¹¦Mážò bÚ»Õ(²´Ýeˆ÷úmC j/¸ÂxÊ*÷9ï=7ÞôÌÛ"™Ú"õ².×)dímð°E$CXÇÏoù§\­óQF„½˜†5®©º Õ.áW§Îô×G!…ßô±0¢óKòŠ)ÒÖdóiÐ_çâ2,7=Ó‰¢ù*œtjÖÐoxƒKùt:5ÁH×EBUá&wŸØ2¿»Kd+Ù”⥄ál[T’ÍÅgÏOÁË2¿ÁªÖÎHA¹ÞÊ÷£"Ž0 Öøk¼ûf‹w–}°&:ñâš"‹X6qw5 ÊÆË¤²ôÛJz¨ÅÞéñ7ÒÎ%oÈ{¼8 ¿°WÿP›ì™ì<š“œÅ‹» g(FŸ7s#g‹v»P%õ®| °SâßOB@˜2ð­çM'db,ö†M~åm9°9«mxXH[2?_Ë Z/?ð‡­««ªJÂ1¸âH<ÂDÐÍ‚ÒNh¿âtWäeeš%¸âsž¸—|³ô‰‡=¹©ÑÇQÆ…é€ågŠªÈ(‹ÌZIçòš©iŸ[l¹_cB2u‡3ææ]VVWbíTý;©æœª³o•Oý»Æá¸Œë¥—rÒr™šŒe£Ñ®^ìëØñs:÷=pÇL‡¡¾;ˆøt•ïš2ô+2؇CT]´XÃ2^†¡"ZÂmð„Ë”Èa2!=Ì ŒÓjIìRФ¤Ö?Ëéâ°6´;±f€cCá÷¸°82£óäÌdfñF•žŸî¤Gq’i]ì|åʘ{±=×\b“³>ͰS§´P õu#•N½ruŒ­ ôæÊÄcSaLÜýÐ97Ët.'(ÞŠšè½þi ­räÖ·ÛJše"¯#Ò˜š7¾¤p;7!˜¯ÎìN´Ïé@,kò½b ÏîÈw›I!bP˜O°úúñ„˜1¶K3ÛÎóôäaònÀŸ¬·¼cjÃíÇÚf]»’žu@…þ³€”ùÈ[—ýla›Sqh,î:&dØ…DØâAö»Kkq¤¢ lY[6åK7òbº£éªÊ Ïû"®Cl¾AŠØmÊÑçV©'sùÇÚ9¯mTòW&YWãY (‹º‚NòA¹ãC›^ÁõÙrì¼r›#2ÆÅ¯PÔ)G0½Ùqëq ¦7=éÖmdŠbÌÙÜ„jBTʲ »¼%˜§lh%"B¹ëwéÖ<^#”ï›4 lÅ¡cI`Ãß|}ÄéõaÁ.¥«W‹r[_ýÜHèÅOÆÛNAmn:Ieý?¦ Éc[nÿ•Ý¿4«Z¯íÎÐ9ƒVPé(›!ýøQ|=‹áûä-ã·rró“}ZÏ«Ú6e¯Ížâ~Ðp¨Ö%¥$ÝÒü@È5áhua|Ÿ=5ª/+ʃË8´Ùgk…gP11óÛZÄ# JÚÓé÷Ûd!§üÝï! °õµÇ5ÔBQ°®®•²*‘T_o\³àô±ö/K¸Ž~æqq.˜_‚" h¬½paï€Jws_ôM±ØYp%× ]§´ ´§Î.Þ:‰h$1ƒ`µƒó¶¡^2 ¥¸qñ|;ŶÞÍ)”@?Ò’/m$S,,­wŠ\ó\ÇZ‘N\ŸÀ( ¶Ê ‘Ž—Ô¸åãó¦o∡MÓôÔWƒÉ™YÝP‹­=vIg˜ÕÏÐjÜVƒû¸Œ^swH 2цÇÔ{¨ÅQuW $Ïk;æ§> jÞô¡h:}Z«ðóÃï4?)>^˃©Šå_½DœOËvξ•Œ ¨©ãÓR+µ¸áL–»ýš˜Ö©]DÅÑKÞþ”e>n›ŽXs I1³lØ]¯ÒsA¡áè7³žÌ`«o›!-›‰K™(_³—52™_^'Oà%#^·¾|®g•j´Öm{è‹yb [™« »l˜§š ÖÔçõŠêºy&»¾Ò¼›ÃwÍô•ÔÍÑFèõÔ)½»ÿêÒVk‚:¹…¯ønØéæÜ.ÝHÐ+Æc–XD„(Ü Ë–^ÝO«þøŒp—ËaÃÈ>ØÌIñ« )Ý”ÎmåøL*¹,¯}$jã[k4Dï&ßÔZÎýGú¡ÞÄzÓñO"×@¢ú5žß2C®™\gZa¡Á¯Zoæ?õh€æsâÌæÙÀ'.Â6s[$†‡½ç؇ÓôPÖõ½ÎO.°¶ž;(‹ƒ#JLw%f|Øoÿˆ¸ºþxZ,¶n¨úÑô^ÑÕ_28 ÃûFý©–gY‚pý& ‹ð5ÛâÕÓîýI’éRmè{¦Äñäc6ù{®{~féáç«:'ˆÓ°z3Êëbw %Zdg~íŠMα8 §¾Æn¢¤\ºìèä¡6Tu8a®C–Ý·êEá²½„õ>Zw¹ÓÏš×Lç®a“+¬„\ß=]F? ƒA‹j)[‡çWô“Á2/x£o1›ØgÍ þôH”\ß°d{NI£‰Zr½pïí¨³T^y+œßà,ý¢&þ…à‚-F©câ;ýëcÛ•€nX¤v…§-g!y(:Y$ÛÄð$(ý5L=ýàe3ôØ:ß ÌþhžHªɓ"áOkçìÀÞú®¢Ê˜Fxþø}ë%û˜ÜÒ¿iªÎúô‡ºüK†He D½¦îmgHéjKÁCt÷Òob”ŒÃ<ãÍËJàQÅñV*Mçïx2x¿8àÙ.l»8[ËŠ0ÅiôØÆp“àbæ{¾çl‡Oz2‰(Ótâç*2õø‡À•™ÇXJ¥å–†ƒ¬)/¦ëHa ›CJ; 6öòl2`êÏÀ0oªžå…5Ã0ÉÄò ­¦éJV—HUŸŽ¾Þ½žë"htUÀñH¢fÂñá›â0)ØÍ¢éL²}ã|±ÊÆcŸ©|‹£RºxþÊÐLw€÷WÓÍ(æÈ£ÚJ!²æ%št;}•_< ÙrŠšų“<„\‘øºÅSXšo0ÃÙücW×§(qáïÓbøÒ{†D%-?å¼ÛrÂpÄøè¾’¿KßÍ¿49WY™=a•T±dÝËCžXùžwo)¥êø…Êtj[Ü3Õ a A gKÊø ²$y"ï+Tkì)$ÐÕö 'Z@ºøG|-µê–¾+Ãr!bÖ-î‹iô câ\÷s¨ÄFr/sŸ0˜ú°¬'¦ l‘H'¢”ïQ˜Ê9MÁÌi¨«>û<ÝÖ54jöÖEê!øÏÌ“YŽ K¶Ÿ…+H¾ÂEé?Ô‡ó쪿ô‹Ù”ntÍF® Ð]yOºSòv™BÄ\ €-™7Hû™ åd¤ªëB0®;.Ű¬ÖŸ=YÈÏ8,äÀÚN¬VŽò2ÚñMCáûeƒùI[M/ËeokpW‚ ƒf )ë¬g¿jâÚ§ì›iÅîác¯øh±Ê¯g|ãö†ûz æG Vé §©[ö÷ˆåœ.+¤Ž—‰«W .ð¦>Æ=4l]¾ÄÏ«º³éx÷ÇȪ´å`íÎYT»Ü’—Yí Á½Ë”ú@…€qµö‡IhLþ2—ý^: îнžÁ©’Z:dѪ'® o‘&=·ô°7F„#=ÈüåU6ëYø°+4Ž6ZmÐ¥cï1é¦Y‚î,¶æ%W¾˜N>[5~ ?J½yv¥ð°¡G¥SÞêm]´öx"ÂæˆÃÌAÔ¼™ùVÞgsP§W_)á¦/‘ s_·ÈTðó­3CÄ ÂËFäèæ9üëçj¦rÛPýŸ¢ü>öÐ4»¦%f\æ¤E}`º‚gr zß›$dnyØJ¡óÜŽZ ·¥΄ŠXL…>®k¢X¸”ùw¯n÷\¶MGÕt|w@ zs˹dBó!b'䌂xDWò…j³Ù°$o¨Ù|s‚K{¦ÐåVy›K&'¥WE¦ØPƒtÛÍl(®^!P{Ü=Ïa 0×RŠ2ñµÕò›la‰T§q·9a'iŒ§è&šêD÷·ÍHš¶ç2-îñ³½Þ‰¼¾4¦ŽË:k¿E`'ޘ˽ 8®7dÙ1ÆÜJè~mJ¿Þ;Þ)C†ÇÔOÃólÔ‚A¤0íÊñ°wßÛGÅ2r»Ýp» Ž ñ³=w-.e ƒ°P},‡«ö†æ†íøôù¹¿Ý=S¯‡‚IÞ±ýäõ•Ñ–Ù ¹ÒZ@«Øó*\?ÃÚ“E€QÖèZe¬æ-£j1ßPŸƒhc5mm0^¦_ø¦N¥§ 5EGlëæóL‹ª%ß(†1)v]y‡ ‰ù XçÙ=s{ÎÒú]¾~ÁùäåEó›A4–¸¯~ª{Wd „j†w8…FlÝÀ§ Á·ªsïØ¥tˆ’ƒöVnùŸ¸‡Ôô‚ñÏpQK1ú`N×éx-`Àž±¨.yö_ ¹l‹§™BŒ.æß(® S‰} å|ûñI5?íѪâÜ -lÃa†{ÃÄò}~Så F¨9ŒÃB~Z«“]“`,¼ „GôI¹·Òä'ðÝ’Ç€Ö¥§“wðGŸÜ^ÙÙZe´°|nÓ’Y›ÖÂn!–³è¹seæ^>œ˜9ío& qOÒi:+ß0 Ëñ/1—°ýŸÞzC8·[2Mõ§ í9¾„aTtNU¼àŒJ»vÓÊyƒÁ]ÖO$¨­}ù’ÿõ)U)¨V{eWµKƒòãÒ²€1Í-ÙF5܉|ËŠ°2WÈ}`×7°È’ ’ž¹Þ´ofû*­«ÛzFÅê}°ÐË”5Ô¤€7è²û}*Œ°ˆ¸­`=tybÇòMÏ|Þür,Ç$!)<†Ðx:K»§ÎˆõåÛÑç°4V\ê±:œùUõ|åÅð± ¡ ŠÀ^ÌÞ•G¬o“ßGÅΘ&%9º°* O4·Õ‡èjćPÅäbæuS…?of’¢¾Ñ½`&ãUjÚÝôÝ…0×ûA¸u0z\å—;ð~iÀˤÀÞm*ˆàÅ£Å!‘,—cܘª—­çˆ»²îŸ¢þÖ fÀç:@«’нR¾üí°;»¼guöz“þ市Ä{óIûBz¸X{2+" ½ À¶ˆ¶Þò=ò¹ÛóÇ:`«WóÞÉCp.®æÔtÊ!äÑÝBax›E.;õ\¶™H‡Ú«%'“áìÛn‰ò!íªìu%U@ Æãü¦:žï7Ž…@À-p¬’=tÇÅÄɺÀMs‘&@8¾uXrÂÅhv.­%ïÓ`£X+ˆ /ÄÖ…Ï§Ûæz¦ŽG/²ìAœÙå *;2´‘õÆð@í;eçßpÑ!!­¤Tn]½¼*%÷^4,DûNÃYOŸÃð½ÑÑêÆ¤l‹êD«Ô›ú§¾À«©6ú6RäZ®×'=j­7Ö,ÜÊ?ܼ W;v^Ão´9}¤”û'Ý^Z‹îLR.K_Q~*…¯Ãö¢NÙg¤aÓ°0§z~ß)&UíDóêþÉ-++?sâW|OôîÊž9úGЋŸWM¹ðJ #Ùu¢é„ G\i@˜¬:Ö·1"}@ÁÛ®Sªw.®‰=,Ì5·’ÙšU¾³C"Ê;°qîSºÌškw;º]ò[¡,Ôf_ÙÌRe¥ _†»pO•ÕðµÆÔG9ö™2“÷e¦„¬„rIt£Cä= lÒ†á¦^xâ0ŸÌ^zÁÔE$›!Âñ.ÈjawXyë÷šxœdñ Œ”eˆÁ:ã¡ ¿’a$5¯>c}3uÇ÷* ¦š²Ì?Q¼%»ú®#Q­‚µø xOHˆîšH–BÑ•|$k%¨Jb †’ü‰°2ê…kQõE¨(NصT>J]Û„¼ˆáŸn„&‡ÚT®vÞû¨sT¨T“ý~8¯ÑÞm%ÎÍz4¥äºó uþÝ13—;ô_–¼3žVìZ_Ö¤^‹$€ jò¸‡rôÝë˜FÔï½F&£òËp×[ Gž+?,ï<–ub|NH7Qt1k¶}ù?„6ñÔ³½Ì/²#ÐÏÍý ÈÓÌ%¯q2¾‡Äε~_àK£NLôž¸ëI‡Ô²+£}˜³¿xy9ÕJe‹Y•¥ ™¥ˆyôó›wÉe–‹5ƒþ|f¸y’–pûÐlòômU`güFÇŽ®ÖÈU§Îw˜ØˆO-tÉçbBƒÃdÚÖÜùqGmDîfhj¼ êµãˆ?AxpžÐWe|Ó‹7ãº!¨anu¥h89ÎDÕ×мÇFŽíø¶ Z•XÕ~ú‚H˜‚¸´T–6–î2§‡í–‡÷›Ã$e½q[‹2ÃTýÎ9‹»6¯áåØôÅof»ïbXª-){ Ü^Õ$t#Ùú'³¿1g÷Ńõ«P»Ýß¼‡zåâs^Ÿ˜=m¤¬i†+Þ{?Ú<øAîsOê»ÓŠy:RXˆÓË&ÜðÂϰV:Á:à–N;ï•zˆGÄŸrè ‚æ±BÁ úçòþà‰e‡<"³áÀ9wÓxiX óݾ<b%ƒõCAìËé©'äÊ-j§9e1Þì’"E[G åŠÄx"4×õ˜:öd¡‰£í}ëßá€õÅDµ%Àð¥W,¿tú[²‡29 =:Ãç3F…ö h1¥yµÐYRâ}Öv¬Ýš{L%yÃ_ZC}ñ é‡ÉÄ2¢ß'·¹8ͽõÝìüfªä6 ¾¶ÎpËJŸÛ>R!âýôAè'xtÞÒfüKÎãVÑ%.‚èë]¬QüCë^ù¡¯(^³üxÆ -ûÉYÐÕíp.ß³%ÌôißD™öI—*zÜdºKÛé1RE0è)CcWÏ»¥önó»æ8-¦¹5Aê0Õ8µÎ¼CCBÞÈ v:×jçȉe½ï¬Ñ§/¿§•ñã´%c÷¥§‚Ÿ¡þAÄô^š;|KïîäGJñq°22&ñ˜jyò‹Ü „ë+¹©–Óì…‚Q[+šY\ÊyÇí¶Ä`ŽÃmÑV½³÷§a+G3›ÀámŒF6V/™KñF_ez—Ÿðhoj<†=¢B{êW½ÒÀâSnž?6ŽÜhȾ ÏN7ðV3‰QÄ–3ŸScD‡–îqÅŠÁ_&(h9Ä¡jùZ 5D YÑ´ç(Š·¿Æt๎þa¶üs~,£‡}SJ¤½´±ÄLý‡¢‹ÂFþr羂a¢ö)íé;¤—{A{×Îܬ”Áo ]ßÇ:Ll¦ù2ØÌo|ŸI5¶|ú®•9Hç‘§ÝJU…ðI¤9êÒ2zƒ P/ÁÀÏ/˜ ËM#µpØ02ÀôØbÚ¿‡ºW%Ï6_ÓbÓÄÛ ÆO¼5‘\Ì”ú‚<;`–ýMQ|&♞Q\NñJ»7qómGñÈÇŽ˜Ü)tÊ1¯‘p·âp„¸ª"8z,Ë ‘Ïz~Æì3áÞÌŠƒ /ýLokCX0rC?¨C)„ìS4'‰K±óâüînÃè>M©“  ŒÉ*¯ƒ(0»SAA~>ç1BÂù-'[L]¿=øÅB-çZó4³ ²÷ V\¬þJThC›†V¹¼]ŽÁî‡3gâ^Ü✠-Ži»ÊžŒGQÖn¤ê·?B4YªÔ}žîuŠñ9y³±ú:DÓ ä6†PEk¡ô ÆS8Ôªé[VEw+ìVÒyb*æžx¯KJ¡)ª’£}Þ'Í (¬AÔ¿ú">`Ÿd¹þŒŽ¿'¦UïOª s;*¸zÐç&"€ÏCo9±Ø›ã“޼øA‡Zg™+mÍÊÃñºKã†; –=£)ÙÞ“$ƒ^|6О8¬²í(Aõ’Æg(ïŽ2¸¬«î +o8%ÞÐ'¸í¡ wŒ-ÝjÜ÷#¼]+Ç$ÎVZcg64@fcïA7_ñÕÀ—=õñÓ¨—­á\°‚³ËyÂV†ÓöDøïØÈlâiê ݹP¢u éð‚À зg)kЮó~œì|£¬ ·`bÂëëÓ웉ױhÜ)Ãü5+Ἢ“æ e8EgëÜn,ÄS×ðüú62Qª m²ýPìœoÏùKäQNLùòÂ5èHÅßb Qâò¼÷jj³¡Àmê=¶»dΗ9°¶Jµâáð%9'æÊ‚ÔkôÇÒ”|Þݾ««†*cjzÄO6b8¼˜Ó§‹Ø‘gÃ=$4ÐDÐÛÁKzßs¢ïÜJ…Gâu4¯9C•)Q'ÀëCGã«PäÏ{¶Ò¯šX*pÞþd/VÅR¬Ì´³½“Á0ÜüžP˜0Èõ*\©¨½Ø=ýà +›îKœWb·yd\•¦!ÞGjZª´ð\pƒ±vó]çÇ« JVlÆ0ôãO^>P΢©W]„«ö‚rdc“)GÄŸcá—V4Ãпw|§i‘ÆÂšk3üŠ®`d_¡–OîÃ_³$¤0áÉ&YL‘#¾3ó¹j’Í-R‘á5Á÷¾CÑ×ȈÄzïkXS´ …¯˜Nh:g˜ôëKˆe¤`«~sWÙ@ß‚–ÿ\x‰V'‰2 ¥¼µ ßmh¯òøÐEXÞ±Ég£ùöêMx· žÓ±àH“×Yƒó{1{}¼t¡×$òY{sB÷’¯tØm¹_Fzs ª(õ¼Ò*¨ D†= l)ä\Ûgm«%ßéëÀb¼Ð&…çØ®—CW°äTIµ™øq²å!O_ÖO³ó˜‘§Užl†ÇðÍøÙÙÞrõ®_{Úár;BÒÁ¿Øéõ öc’GòÉ5^)—(=^}Ú‰ÇÁ„³ŒÌ\°2q:Ô lÌöäÁ|nÝòL…—û[»k1Ÿè9õF{ͽ|{ë1øB…Þr±ÐÓyïãS¯¥ˆ=èÑýVJ¤óruW©: ’‡;|—f -ÅÚРȢ "*'…x6 KŸqc*qc¹z¨ãE6Zãð9-qʳ¯46\j%UzÛJ$äÝ¿ &r¾\§K’•.;<–×^F/О[ø'§éþ„rlT‚Þ½Ù CváÞÎl¹#J™›eÓèëÇÛøy¿Ö/»!påŸÞ%Á3=d^‡Ôw‡is%/)¥õ# yÇqÕVB¸Øã/³WD3aÏv[j1¶¶ª64o¼Ï?¤®ÙCÌšC"È'Þƒ‰dØÊ6}ô^Bs—Âûê‰ñ­u91Õ ñÛ2 Xh×çfÔ®üpg݇eæ…ê»c4„Xo¯=/ †CÙºcs‹[WYJ›TsLƾMH¼³ºFñ˜6b½ØGCõ€‡zÈýô3`rA‰DßótLÍÇýf—€ÙºdÈi[á tÚ|:7zE”SÙWSå‡YÉtkÆ­œuÍÐÍGDš/ÕKÒI:tõJ×jlÑf”ŽºÔü\ô!h…}EÚÔåZ„Y/Ÿ\÷ É…ÀàTÁn q(ç9o®û»Ó.®Í¥Vxö®´J²¾“Y«b@Ù–†×5î<ïl½½ liPƒšÁy…™÷d´}­Œ¸ÆŽx"©ËÌ…×:¹ØÏ.H$)ó¡;4ŽÖ,eiˆ‘X% hˆ”éá`Êñ6Цèœ&~ŠlAÏç<'®^©®÷ ‘"ÜdT+¢ª>ûb"šä›%uÝ5^%ÁpÈÉ|·9D´ì…/ãra{öìv‘Ô›°`Š]äƒ&ÍxÞ°£²ð³#£<úDÀ—ýì#v@ rZI:!:„U’½äºQ Lc±Ú8°¾ -íGD´„]f#U²{ø»êǃ1ÏÇw_­j_ÖK3¸ÞÔŠ´˜Ç‡pÙYþXEF®RÑ\èM½'×q= ÛD*ƒ.ì"fdê-Ø}¦cØ9‚Ù©ïÈKÀS*v…n’rŠãáÉÙq„A©°o°-Ffzl™«o|^­{J€K±Èçí·QF©ÿij+×ðÝ6^ÆžlJ×}6¾ÓAJÂãT_ÆWv ‘üÚ÷КP¹Ô~É.e¶b˜±Œ¼­Ô¸ùKv‹žÓm²ßFFÄ|„ˆèLàÒKª ƒÁ"K"èfœHß´MÕcÐéM÷¶šíâï3V£U̾Ö#vΟœVÄl¥0gÓh.Äå'dÄ6âN«J©xßÊ7q©°:ÝÒ[ñ>'¤óTgÆN;ø’ZãæjIŸRFˆÄž¡~ ZY,÷ÌCˆnÞýˆÛÍÃÿ»ˆ©sø­¯¥8´à‰š÷ efÛêâtsgóK¤(6á»EÜâFÜVÍ郴5\ÿ) 3ªÓE¶C⾌Ð+úé%oŠ¡&F¤ÑóŠŠ&Být‘ÐþUvÞ:FÔ>£Ð^8ÇZõ!c ürsØê«DTçß¾€Ðã"íšÖùѺþàD`‰2ý'n}9_­ëŽ×4ZšŒ4l½´ÙT85õ‘ÙúSýû™•ʨ+yêȺ hµ¸&pÙ[Ä~ßÑöÅó£…]×cSD·óGYG{•QF­óCN¿ÚRkOp:?âÎ “Y!§ªö씑Ü“x}¹ÊA‹Û®+m•‹çó–df¥þPóŽWÀv^wýc+ÄòìI@2úÓÊW”k³qX1ÝZB–ÚUÈ“ÃﵕI¸Œð®§àø‘Â#å_Í\ Õ8ž².WzÂ9¹0«UÎgÊÝÉʵù÷\8à„©‹z,V–4¹søµ³”×XjpÅt3ò<:Ò´9üu5? $i÷0IdØp ‚e.ê¦ÏŠY!LÐQfò‰ÔÙlZðÞ[«èΤãe?gõ¯-…Sp¡•÷äUî$N?Èœ§>ÍûXEŽ8´ŸçM³Žö±l¹¥ëÏÎDÔêGª.UÉë©jô6_Áifwn `ùô1Áî‰‘Š°”zi´¥±uöO¹•orŒè^—–V¸?•Ó6J‘>ô Óï;r~Ñ$ü(è0ÇiGæU²3¥ßh^ýÑJ2üV™Âª€5öt¿êû”CäCôá+צð3L5j\"Ÿ¬ê©ÜWÊA+êRÃzèDt(´]y{ éÕç“Ež Ÿ{Ì-³++½¬4ß;ýÄû4 œÿ•¢Œ÷ÞB¨caIæµÉjr´Ûež³©yÏèm7aÖT~™ƒÛkü„êý'2"jàOã{YòH·çüüb² ­Žæ7ûˆ1%5qE¨÷$ñ?“¦Þ~"X )Ø c¥(✓Á®¾q¦VŠ#£`-W¤¼?¦r¾Õ”·uì¢,—Á\ôÎóéBdP2 ÒN,_lï-£NÞÆBc]Â?”›ªJÛ ‰ ŒD.ônì±ÏoQÝ|—™‘YìÞW`äÆNŠK ñuæ†KÖŽà 3ð€0ü[®-s«¶¸oZµÏ ¹TÂ<"’‰½AD¨Ñ0¨´ Füñ'‡2}XîCŠžqIvÍø™vÈY²æçÙ3ÕמÙ}Rn¤£‡Êç!„v™Sºs »¬ÙWRS—¼ŸÍ÷%œkó»›nÚu²?oÛi"wNR0ÅË^ÿ´NPG«#ÄN®TXŠåé3JB± ˆƒªõöƒ)N÷Enèt,uÃu>ŠÛbœ)_W°:‡©0Dëšk8̘W³aLLŒƒyÄÖI¬s1âŸËeóÀ¹k7N(ƒ};yzŸ„$ç*Ut9fH=ÀÐÉ]¸pË• /9Bý¿Ë Õ+§-%_â¹â3T ¿Ÿ ¾Ož2×¶Ö°Â{ Ó.¦»ÒYÄL§+G¦š³¿9óÓïýµ‚¤zAc•—§DS¿‘að”¢# êà†ýËᩳñ~¯òAãÁ]vü,øÅ=ì×´ôZ÷l磢  µl9« ˜–àZ`ƒ$†œ»„Œg^rج‚©'ztÛ¸îÐq”gÌ˧|©~Ò\s݃X½Å4ÅxÍݘ¡Z¹ÒÑAè-¯Ù"<.ŸEU¾3Å|v0‚Fý^6¸òñ‰³Xo|ÚKË&ôŒ¢À:ò;E@¬ÒAxâPu¹”æÖéNè°ð‚wƒ©Ù|»dÅq½%?Së1 ©CÚ5éÛÕÑ5ð8!­Û CÌÄËèÞ̉Ûiù <uÞÒ žL(R^Ä^ŪÊ\£†OŠ3^œDúqŠ›Ìß—/'…[kŒðçvEšž^9ªÅ²áDd±GÀô‹Âö«YÈ—Ó®{mÕ¨À(ž–(žÍ—uc6ÉD0–7g´ç…’Í4Ž€cšî'“‚6wÁǤÏ:…Ê ûŸnDösß8^ýì£Ýã/®¿öõ0î"h×€^•¬NÛ{™™lUµÐ´Èn¾'ËúP=ÄVPð:àåº`pÞ¯£t« ÛM07¤t)D¡líem¯2iæ2'ÚâlÊ›uˆô¥[`lDþS#n¶°óŠZá8ñé—èÕË®¯Þ+X¸+ï,nÔ(Jž¦XL¿éýdËR±µ‡×(Š ̈́ؖ éö*·§¯rºr+ûú¥sø1cVÍ#§TÂÿš(Ir*£–¿>Ù.€mÐW‚÷n*õX·—’ž‰ +=¼~kÌÁÞáâo}}iA*'’)A­7ß¼%dðÓ;ÜqD¹“ ÿËýÆ¥‰KUYžäŽÅ÷»A°ýÎ $™j8u”[uàÅ.½Æm3>²wy˜ŒõO^ΘʰT5ÐïI̹y)²‡ãý:ÎùJÞAœ È/ :ö.˜ß9 Í d¦‹¯5 1T2(ÁǶ=gPké{Ij\ Ûðð°ÄH|ª' òZÖ ]hòc¾ñ)S*ﳌÁÀ;§Â©`ñ`ú¶#—a¯te§®ðÅZ]cyºÒÞ‚Fâh¶¿˜ggøV7ŒpËÖ2'f"ø5~Ï…ÞP‰±èaÔÍ7›'ÏeéŠzcÇ{×Kò–1Üû~",‚Q™"ókÝ«Þö´E«lg„ÄwŒ7™ô™ÐÐ\a´^çh:R£|~GËÕ.SzÒ•m!Gv0ºwçó³}›‘ð£ÁšóàüÐTu5…îY°÷€„÷ú5¡gÈ×}ŒÚ˜9¸‰QpD3ÜÅÕnÖbÑûfQ·U'¦«`ß èÕƒ9Ô?wŸüŒ•ø.9¦?1'ãgßý¼ÚƒŽSôRLãdHU—õâ&P˜\5]‹äêìMòE:AÚ‡ë©ëe·ð'v÷#tÇV$‰½X° ƒ©â.]øžj…€V©½bžÉÆ'#7º@NòƒñJLÏ0Õÿ]’°é[U; ס«ÈF¾Džj3´9¸ˆ-´ÈFBêìg<YÃÓ—QN)š$¥ˆçˆòçµÃ˜Il¼E1lÉÍ08ЕcD]¯ìiq‘'j‚;J¼Ñд§á‰àåOÙºÄI½î±â3â"àN~k9®Ò°W<Áá´xý“`ÕM=fÑÅ(ÿ¸mŠ\ ÅWÀµ»e­Šòyä¦) G]Wëåºå<íîàãËw¢ÅÝ9VÊÞ¬k­Ôïë ð†½¢G0X혈 Ù!¬iZÑæA¯9ìE•1EßY‹h.ØöKýÏbz¶Ìs«xNÚ£Sžzã’”Š °„k ®կ>I‚BûcWPø×vqçFFà8<ñâë|w¶tllé"iä"€q7t •h÷aÛ¶›v=–,ŸjVÎhzL[>ºãÕ†¥ÖVWT¹çÛÎ\úÒ˜CÒv@ÔínTÜïKsUEü¤õ OÇ=ŸGÚDIª€3CÀF±”¾iÝ-Ùá\ˆNAàà…*ì=§ðöÊ6šf¾µ/ìR'æ¢ÒcïÇòÕ,Ëòx‘ äÕÉ=Ê__â5d’½,¸_È>%oy×þ|fÒF¦9'Ãæãûxm®É,¬¸šp×±“ÿ•«•˜G°ŸÁUúÒL 2ûÅTõ®æD|œ¹z¹Æôàå^§4…C`;=†~K-m‹…ˆ}Ѹ#ÄlL`O¶Qˆ¨b5RàQ^e_ÏtCÕDr´¸ˆöum1Þ^ožÛWAd¶)2ĪÁa\ŠQmnÉuI/-váÓk–Y#± _ºÙ³  Bãÿ}Ân»0¸/Çò—<<tïÖ²Rネòuò(hà×w¤Î‘èJò6ñ zê½ëöôï}Òì6hñç¶!³?÷~–°ýöó'½~ç,­dÛ"ÅSºQÞD¡œ 6ºÛ³˜ÆZ‘¤uóJƒ#ùQTz‰©U¹Vw5ï!°Šô¶Lœ¿ g5™­—X¥×[‘ɨá\Ç0C¬ÏìÄÎÉ¡1O¿Ë?¿ël±ƒTR!2Rñ£)›üú0¿”žr I;&6q³‚; aÎÐÉî’ÚÑ/¥9š&+Û• ¡#ÐäßÄ~Òµž©¨IzÛþxAüœ4jAX?”˜U!ø±£±³È×¼lYÞ¤f}‰Ýi$ªs¥R¢mâa›Éo`¥I} @¥ùÂôåÑZô}mµSŸYÁ(ñ1ÏÒ6¦?’o.„õôÝZ1Ìr+ó äM(§ÍÈP]ðNn-…ݼÇ| EáË]Ë’(ÁŸG?úa7Þ¥òA[âMdãJ~‹I…’˜ðC„†eG£Çv,G×,ÅŒ×ÎÆË¸:H*–&U7 ÛúÞ A¥Tß{Ðbš¬]O%Ù²õ%->º/Xã4DøúíkE7Þ-”_CÜ]¤2_¿k@IýFý¼A0Ï›A =‡Ü+œ¦ÿ9¶áV¯ðþ9JÓ¦Î*óŒÞ´z …‹Pÿþúk ~['5ÇÜÎ@%'ljÉÞqíôüÛGƦ£K @¨¢7½€~Sf§š¶gøØóü%›/G´T9s5a8ë„y%½á»½‚™[°Ê²öCØŒš ÐÜqk3åDÂÇR«Ö•r×èo­á³_;²×Ûš'y˜®Ÿ!•&}Øåt¶Áñ"}¨”©k¡óKZ'O<‹‘v‡üâ»;K‚‰ÚÀJäc·ß4äÖDž…Œ„âK€e$ëv„ÍCßä_²ÑàjXs¶»¤iè ÒçµJ#”ˆ*}<ÂXªFÆ”O’i¨.î‰Ó õKùº3ìh‹ïÓûMKÜÏ8t©S)(…¿ä˜üµNçðÚ?NЇŒ´­Ë„¢¼šA@û Œë+WëÛÙ §Û~y÷ äÿ˜7ý²^yD Í­£®bÖu™°×"M ï5r/Žõ‚MÕGÆ|mqpðoó`˜ª:;Báâ©C«Fü—úîã°Y¥Åš©ù‹îœ&fÞêÚX›ÁïcdK¸ÖªƒÜ¸¥æy4‚½(¥"'¹húq½…ºöZ[†Á? Ï£°h¥AùƒWˆGÐ3²ýjÌlQSº°Ãвj,r¶|>Wš« .å¯RœrÖ Ó<È{©ZA…ƒÛéñ ¸URqÑIÖŸ`4ýÞwP\äÒ½q žsÓËÆ®U§c¥óά˜Ëë_Ñ\Ĕ=ÞÑœ ´HØAØMfPÂë:|Ö>H®†ç?qÛ¶¾åLA¦0§aÒáþónu„ÚÔ³úm,öîR÷µwªÿ0Xõ­“!ö¬y}³:¬4UFÖÉAé´æ‰êVs'€Úmpóýbñ§I#!’rÀPçótT†¼óÍÏ\3;*â7?_#²­£Îô¬ y@x#{ˆúŽ4øÞ· ƒŒær†‘~9+ÙrV55bõN ¹ ô¹ô ‰d$üodÐï£Le´8´%‡×†5œŒ „¦êL®î½Ð4zXãoöA™ŒkÓ ‰±ÆánryÓ¢[Ê.ÆšÙÿ‡±™¯0ä þ|3ý5—‡tÄ“»Þ•¾›§V£Ã)Òä“Ez±!]5¥¢Š“X#KÀ.”d¨þF—㤰ÖÒ îåq|JúBƒ*fqç$óʬ°“¢#Brðô‡Zÿªø˜ W ¥0ÊS­;FÒk%Þ7E$l“ßó$ÿ×™°éý™VK´êÅuÜhþf0ÔÐî³ÉÁË1l×~ÔÕOx@` ì°¶l\œäà`«)[7ʲd±{ñ«*ý‚tàÕ“³ýT on‹L\ƒ- Á"Yük o?†¼ç\ žLÑa²OXÊ7ñËÑž|׃fè)è|³¸Z U…ÃÜðí¿Ï¶'€T'9^Üù8?ü­dðØñ†'–Iÿ<‡À¸ÆB›Œ× k´th÷~ŒˆùxüwUé …7fÊ…=òašTç $ô^H€áŠÜíäBŠWl,ЊwzLY‚0—¯G:û9è³ Gƒ\)œppÃK"V`QÕ&êþ}l™P ¸×åý«KlËMý»ƒeðf§ò=²â>!L$]R)ÆIaå©zÔî¡åØ­52ë*©ªÃŒÑ‘bêéEoŸ¸óŸÞ¯g®N\SÜ^¼¢kÑ”™×ü3‘%Z C× U‹à È@iWH@—¾ëúžò@üÀÊî•C˜8ÒïÉÜ´Ÿ/cª°X;Êú§L÷-Õ“ Är°M›MU j<Ø'ûQw ·Gõ¬€YùG«â¼Ø¡5P B:0Çœ\úHòàYÊ÷ÔËÿ»¾ÝÞäº$½>§<œ L} úni’Yh¦¬+¾†W ÉÕšŒY’s\-[öIs2 \Gëüî§þ]m³¢ùrpÏ*¨ì ì$´t&\Úë\&Yí/( ¯F›Ü¿ô ë´Ÿmšæª2+&ŒŸôˆÊpA°’Ú=¯„|  pŽŒ~À0Ìð´aCsªë«KD“äÂsÝ4Œ¢Þ¾²÷©vÙ2›úe7h3Nâû¹Î˜èÂÇu‚O;‚sNû5™£1~ä3™áBï³ïS³eyÊ?±ž| ¸Aâ÷GdߣNc_ XYhGqŽŠ9‹Óë˜Ëœ´íqÀÌø4'ô[|”°ª´„;0ùcqؾýžøISrÿ.xÚ?<×3Òâ7ÂÊî•{ŽOŠEdrEô¯<Â3P&=Pý”ñ°Ç“)׊«JÄÄû¤`p’ÐÒ*U»R7@pTáW¡¶Ì‹— ²QFµ6Ĩ“–‡\R³âKí‚çÙÈE³#ű¹®J.¶@òâìä'¨8oâ(Áš 0WFb„^·Ä¼+âð]û:z¯t\õÙÝþ¸9Ö‹tÒs\»R Ÿ]ª(set™{ ÚmIN :_X`S-úOß•‰™çà˜?D¥cßQIsDÕn’Ÿô=ð¯oNÓu~«‚Y}.9ãRN¹±ÕΘ„ÇðôÙ²ÔOËl ˜‹“Ö ŒÂ–®O-Á Vâ ú6Eä7,³ÜlVÒüÁG eNîpB}IP«¿\ö80Â<<@à ò€4é¶çØD:ƒl97Ë=FUXÍIp¤q¼ôñ…O\ãëJ‚!6s~€!ôÂ_ö\ ë_P` G/_WOUþÐo% èÕîÔŸæ¿>­Ù=þçŠì‡›$!]bUl7¦²]zžçaæt·«kÿ8Ô a¯‚ ¨*2Q´@”᪡ÉnJ‚<Ý.Ò|Dçs%¸úo½&Rº.0W}ûö¨DÇ)—²CºŠñšú·„!œCjfdàFaz5Ñ1TŸÕ×ãr§Ég&ÕæÁGr“ÍÙo®91CRº‘ëê7öŠ/jš¦h›¾)6œñr§Vï×аôpô]†ÿ±’ñø ÏØ4.ul÷%ãCÍþåéé ’ ï)¤Ÿ¢ô†Ê–ïØ6“®ïÛÊÃrR,Ô‘WÃЏAü¼Ÿ£6…²ˆvC;·…¯ëÂÍx‘l˜Ç„û)åš ï\Òˆã›h"'!»þ÷²(„ â©y#Ÿ\yy4!égúòGöÄi“1™ í4óˆpà~Xßwºf™ã»Ñ5 dûÁÔ>‡4`BmX~l0¼èT¯€?ÆÆÀí•â„…q&â ì-u#Áœ”ûÍkå•}£Zß)„@ Õº"ÅQì–ÂóÍèh}]ÆæóŠÇs¹à–eKÅ×\Œÿµ2‡ߌ§øà LpM¤õ`ir#^*?%W*oï'—LÍÖ¼îìãÆµ~ƒÐ¼‰)ò‡®à&0à @€èHÜ"(;W»{uL}Ñ‘ ÷xõY®ç3çõö¸ á{Ǩá¾å!|/ÝA‘sJ s•ûÅ£ÙIb㦡¸Bvr«ÃïËgE&va5„­ŸÃLC?‚²Ì ^LTjÂxëmMTBgÐb?Àègë‰_‘häæޱH÷6ùX‚‡VÛcg‹a¹‰ßç\……_z²~.Çh5UNOÖKtµ"Ý]ÿ¯!·sN™¹*åE_’õÀ xìåË»ÐÔ›¶‡kºnH;tñŠ%ŸÁ+[δŠð›¤¤>i~,³&ô?’ƒ=qbI#äöÇѦ0[ÅùKœÂíÑòº¾\w?\kŽè]ŽŸ'LìGÄõy/™ ×¶l÷îÆ†<°È ¨'õì8…‚]Ø3VÁ7÷­€VÓt™C²YkÓŸBl‰ÇæCžo+ßÜ{I‹‘ü|-[…\ÍsÚWZ«N}*Ê»àD¼U´ëP°Pǽ*°Ò»æRHòrþØVzÒ 8=…¿í$ªóË5XÕ$Ž.6 Z»–ð†å“õ§S8$ÜZõ17ËÄÛÂPEo,P"M)ìô9Ú¬(ŸW¹ü¶¤]áýò×57s?¹_‚ ú¬ÝN“3#o/±yäçáéߪ/·Dp®aë% òø'£qž;Á•Ü+cuf¯[Wx0|ë¢Ñâh'îôŸÎû…g‵JœÞAG£á“N1Âë ?î=<…ó›u|¡3£hÆÎ´êúØW›ŒtÄ¥Lå1ç÷<šå-Inëy˜Èo[ltˆŒwÅ]V²«è7 `£° €Q0ÀϪPr›£­÷8žó|ÑŒ-œæS5üºB ¶!Ä«¯„)(˜'þÙúî=Îdm8ÙêÞ »I+Å¡JÛaߟ×EAÐ%‰6£ùÍÝç?I¶jæ3\ª¿¼Ž¤J²JââŽÏ^xcIeÏ8¸ù#¾Ó› ÑwÏÀÊÏŒâÜÛ ÕwüÎ9~Óþ—ßO]Å ®…iršQ{Kz¾¬y«¾ÅUºYñÒà²6ó^èý€2‹è-§<› Xv‚òÒ&° Êu@ªß“ð‚‰Z–bWÎ#àøt‰0A©êúÚáóÜ¿Oÿ¡"f‰ÌÕ³×-Tô“>ã3YUŒÅàˆ„>æPÜÙ&woûàù«pö«±[“ɽӥõ™ ??ÎQ|£ÞCq(Š a¢ÒÌ€ A‡P=!õ>­Êwv©Î<ÈIjŠ«EéXÆ»7bJѮё‚B:14•´ÁÜÍP@û°ª(ÿ56åÎu(Wœr¬Ïö7wî•r×WšggqM˜ñöÕ$=ˆ•êÔG1 Ñ”;«³ Ø~¬@èùj3!iàDtß.áîö¡©ø+ÏΜmŠ&{[ë¬ÚP]‘R‰FE‰ˆ’[¨H H]YÎCKsI}T µŸd‰Î=`¦AíTk²ZÂC°ˆ¿¡<êWæÅ;Ɔ‘wøý·sPí¿ÿ^\íŸbŒx0BóáæÆ‹pÄú`¿‹"lÙ¹»¥5ÐÑ»÷èBýKUá/u lçbƒ#¹;E}2vñzÊìÉÝúàj»ÉÂe7#oúõ‰ËÒóÅ–ÆòŒ.઩¤l\Õ°Êyñþæe#7PÎÆ}iVfk‚#Íýˆù3üIMÚ)æ‚ÈÉß&þ¢tº~ú~D[ÜÕ‘à,9?˜ø–vãµ.ü‘Öz¡§ÈüMœtÃ5[§Š>ÁV SZ¾J¥Ù˜e- ~ú’*3e“q6o‚@ ÷ô̵Áqœ€P.š\±ÝsI7J[†vÝß–@±è7.âJs1+¢°RM¯ÐpTzÏ[!xˆ/¤¨Ô3áŸä1F“ž©nâ©ôoÂÁ±oœ›ž¹‘Dí‚Óúß&*2à.‰õ„äUzT™.åtQf%¾ßâÎÊ9ƒåÛr“lZ—!¾ãùÈ|!é÷¾Ób‹ùIA€|Í- ½Bë{ 5¡X éxH̨gŠYÖÉðF„Öh¦£²y€.Q9!Ô”®Ïp¶‡”éœ+ØÔKzmñÊ5´¿±ÿ ÀÊñÖ¦É/ÕE.v¦kÂOÀ!‹hžÀäE[G?ZCPvs@FWÖ,ê³½x²ç(±¸u-mS›CßýßþtŸÉ#rWú+ÆÆX“m+d¯ÄO'g½ „¬åKØ"uZâ¯ã ­š›*±€þ½uC°#ùÎSãûœ­FðZ›qk¦ˆŒO«4ŒGÄS±v ÅÍ žê g(<›J˜4ª„à0ü¥îszØ2Þh¤%õЭp©w^$ºG÷/9´ÇYäeü‡?¦°dì —C ZÕeÿæ¾Ôu}G’'§mýÀ¯ë#ï 33eá{B jÔëŽØF`1ýõ €gÓqU+v¦„Áx‹!ÔÎíhÉ“ß̠ɹ²tÐ<´ÝþÆÔÒ*cºÜ¶ìSéªjË®c~=Œ.éÈ” 6v/œ"5ƒ±}û&h)Ú 9±¼X4ÑÓ´6[T°¯#Á¡$ÓÉbF5…Ñ›Mtm:•4ÕÍ]/Ù“C-¯æ¤u+ª )¯,ü†9‚^nkM!º¶ÌêL«mUp(Ûà%€a¼íuϸÉÏ^Ï,õpý<×þ*3mU°ù/wää‰UìèŒk­63«»+væí}÷Q–Æ"°OÍÛ@Ô¤{!+´™U!”Nš˜¦o%ºaÏkfùS7þ éhj\P(¨7½9§ -+3uÄR‹¶¿„,ÛžW¨‡€ÉU©k;òKµˆJÿ”¬³Ž(á\AЮJ){`­u9VG%‘îªÃô’»³ÿzåf|ŽTk„² ;d´:Ï)gIÍD¡Öa’æjqÿû ëÛ£ÿ™XuõÝÉ`W Ÿï6%çÔ´ƒ·ÐYKåÁÅÌ#WÇoö¡Kk­½ÿèèiv±œQž.’Â8 ŒÙ¸`7Bm‡ª…âqìmö¯™”fu2ÃNEè˜yuX—^¥ð*ß÷åÌìv‚GT&CÂ2ªÃ*ûϱ˲{£Å%Êx«˜!¯3 ¡¦Ý÷úö¾M3÷;‘gL³ ~G%‰•éˆ36 qmK¡ø8H^O-††¾Ö‚ª·Í“(vŒÅƲ½§>Û“žló‡Ão·p5F‚ç|è0ý˜ðçïüÃŽŠ~ξØxцϣ$ˆVVU€$MG#ìïo£x¥»²  %l‹ë¥¾7ÇÀ 7’,Ûà»&Z)*c¦{å± Ð8ˆÑ Ú¦'æ( ‹9ù7qD\çÖžâë?¯µØ%Ö/k/o£™ “lËv÷Ùƒ’dO”pA55ÎUt‚H³žPù»¯åVÀ¢¯\v¶` tʇŠÊïÞDDɦRÔ<´ûªmåyH¤0¡é=‰t;3ͧc–åûÚ>zšz=qo„ŽY„+G÷ƨ›~É®ö+¥:!õ± E¸Í0ËÄgÇÑ|j:SO–íŠÌááëÂÒºæPBš…͇1_¸‘`2£,¡ÿ¼GÁ'C‚ö.$X-+x;Ïþ´Ýi?ë ™” ÓµXã¬`U9kʉ1 ~áÚôlK:òr9ñ BÖ¿áÖoÛb ÅÔ¸]hyôg.‚õ§ô¢€«áky𤩠—^Ìsx¾;ÔyØj¼§œoòWK—éa¸|ÍŸÔAòÈ å§h=#i†çÀC¤«A.Ô Ô½ZJÃÛ.âÿ¦{Ö ýI9_ZöÜðú€éÏ Å[CˆH%‹:èÇDIÿžÚsóZ‚oXÁ"$Åp•ž‚Ï×OÝÝÿ×ó±}—¾Ìªh&ê¶±–9¼›AôxG~N;’^x˜ºÄaªµ´˜€ØF¶žne9A­ÉKy1Š[¡ž¾¤B#ÎTûÓí§]D¬ºÞ¾ß}¢ƒß/»:ËJ¾V»Õa- zIåRØqQn)?ÕLænÇT–RÏ–¤;C|ˆ‡£ßuÞ•¹Z0&ü šTAf¬´×Wº6tèÇà*÷«­©Zóü2¤íºªÍñÃYŒ·"¦u‘m^µv`]ЫÌ÷Ùc¡4Œ{ mÃ1ƒzcÚì˜`˜Üa+Ø nÓ¯ÅLŠ@«¥L?ÞGþO­š8xÏõ Œ_I…Š5W²ºú߇9€ÞìN¥­,¢ì‡J8Fó·Äèј •êØË[¸aNü]^à3zzì˃™@Ë£þ@B$ÞûH¼3ct-BÓ¾—°G8S d C½û …ÁZ­þÍÆÎ´ŽÐÅ¡PÌOgædYoø0;µë¬‰à±—zÓØRNÊIþX†÷üÔö4»ïE|ž @Ëÿ=[inHÖ¡Ô–ÚÖQöQìJÄ1ám‚Yeo° ÔÉ`5©ü…‰m¼æY%=¥‘_Qž=_de‘‡ÊäÝ´›CØœÔ$r{³2̪c–¼ºl`Ñf×µZúf^÷pîòŽÍ„Ž– EÁèZÚoÜw×þ‚€w¿š É2ÕZ£æÊåEÌ×õüBZß: 0™q"hFÖ¥† úù>lO@²3±»ÍõC=ñäa>v‹¥ :@Esó»0·afмð[ƒã;ðñZPCô† £ž.µ(q3£|m1+zÒy´«£&ÍžÀrÖ½¢ÐÓƒsኗa .d=ŒZÇ€<]à“‚fuÀÈ„ZÊ-ÚügíîZú õêŒýF„#̳ñ˲·ãY<;Wkqö³nb]­¼wÞѺÔ+€¶¡M.HC jîÝ/5c¨ç§ú‡N‹±¾ËÜ…åÉžz#QaöÁ5ð°‘‹f©4-;³žn'öÁ›ÀŒê€ úD®ëZ¼jð9ïM׿VŽ5Ž”~' RCÙ%Z‚X`á>Èe³ÜÀ:±ñ›2@M E¸¿ee“Œö2úÇO¹LÅíLÅ1ZI&h¸Íf}„çÛÂnß|>qtíÌ ážú×^ž`*Ï«®lÎ0oܶ¹Wô½ÈŠø}b ­Ôš ’/*äÆÒã$Z­`já ç+vdWTôëÌ6}åOK/Ñéy±ªDšÃû;¢jgý\|ÞÏ(Çîs÷ÅÛ4èûúÉf⮓ëçö=~ó®týÑÍÙën¾å‘"Ì„\Ûé°qh] Û[ª&°À{;dÕׄaxbƒ(ã­»¯LD;v.çÉæûÄÐrp¡'{ÝnŒ0ïëãš@³{kâè¸Ù˜/A·ïâ97ì§² ýãï¶¾L  C)ì3ñÖ¾X:þl¢«É6r Aü9Ù¥îGïØBtsŒ©-ª ‡H¶NîËèŠËÍ;w2|¸kU§êGŠSâiß—– ;—ÿGÊ^|9¬)¼“Sr#îæ ó`ê®úo“4•Gâ|’Ýçí¤EÎH£ˆ ¨D3Ç€¹°@0rj>á9ÿŒÆ³kŸáüáö¡˜y-øDº?$¿¼è÷T„Å€Akf,ÒóLŒŽ¢«íC‹–`þÎp§€¨I… mLØIâ³Vëuw[žî]Ãè È=yLå Îpváçm‚!ݘæ%Á¶‡ôÛ§Öq­À`1¦£Ñ‡n°V-äÄ‘¨éŽ+Ñ! Ö]­æóä÷ÅŸ™uMsÈWdÝ®ù§ÄD _îáÚE4O–ì­Ü©}9m N™ü9Mû:ÒR·Î»Js1„Õ@s9¢±zYvxÜuuTº¿Ü¶¤|ÑRF–2–ޤ28>ês95ÿJUÛéÒ*%qýå=˜ærôœáêsÛýe ²®÷æ|èÆ*ň"—Í Æ&fF\zÙZºæš~˜w™­­Såªà~}»—z©&tã›È{W/éð1 ‚êf` †IÝ.ƒ Ø ¬šž;ÌàDjÝ,˪P u¶’1ßCP;ü²Eú}ŒÀ»Zš$"Å»G;XX3=رAS=€z·k#§¢šmgJ·¬¤ÕSnüª›Ö.õU®$±)]Nxbš:ìô‘®Ì|11Ÿm•0I÷_$îjqñF…•m¡õ—§p´XJý'°šÃ}@×€¢†°ÞÓÁÐÀ¿5ʋҬ•ùù[ÊsnU?ë¯^X¹>®Ò`§+j³› ºeˆžéýú¥Ö2˜8^ò€EUµªãí~ÚEL‘?";Täž÷×vUX'¢õUü.¬‰8K1 L¼·_f"D0) T©â­n!PsD*çÒ×y‘¬¤&ìµm纙ƒÃ5vVjB-† OÉéHÄ, =©xåwµœ…»T”=ÏÆÙÆùkYž¼â‚µ‚¸w‡®½áŽùsË9n¬¡ð}ô P¨kD&³ò³'I n©Õ”ìš+Y¢ ˆ‘ÎÃyï4©æ É•A?Þƒï,iRŸÔ¿Šwü&÷_Å@R±CçÂ=­lª¾ÄwD3÷ÌSP1ƒ®y! ¦Rç‹l}Q ~ü,èhÞÁÖ)n©+JD&zô&) ‡ï$ÙaÃUcÉOã ÐwNÅÖ°'ÒQ†m”>¯ËÙèÁ›\3À'[áKC@@µpåˆvɈÁ”r˜ÄÅÝ9ù, 1=°pÆúG0ªQ†kHVÝ£Sv²c“¬Ð÷œÿ¯+d:äãQ}5Cp¢e¶¨¦±"·¦K$¹-}¾ó×c=½‹dn—¿ÐKè¦×Wù–`ËJ»=øEƒû¡®›Ô2NuÎ&ëFniy+Ô>v:aƒ`ÎÔœyO²y .öÐ ¨ò ¨^ÅÌõ :¢ð 6÷AøúÔJAë^øûÊívž©‹a*KÃÂtþ±e”X×DÆnÁ~P˜Õß,héºç`š¸Ðw¨ÉIr°µö‹÷ ¿<( ÅÿLJ`y/3”ñ?7¬€¾ ÌÐLþøŸ«Î !`u©MÿVTÙ6U8±!5­÷þº üý4Ý\f¸•™ýaG˵%Û`GšÉ¨µÎK-Ê É—:„Q ðÚµÖg¹ho÷ (}ÕéSü›|~H“c¡Å‡A:éª,žB‘‹.ß?a~„À2%ùïð…ý3nà? 8ydHPî$וØU_¦˜° .êŠÃƒŸª…›Öç]¹M,œ_¨êéæƒÕÀsâÖþ×ÚÅ.ï¦v–B~”BD±0¶õ#b§²cìóVò9¬Ái”‹a,É$°gúŸ<ù$TñÒœët†h׈§u:÷±—gö7_×Óëfj·¯[]GÉbø*—ËyrFg;f¦&ɳÓULW GræJa×Pß¼ò%ä»K•ìmÏ^+®qP-›­ï< ÅFYï½9"¹QÆV˜oRʇboÀÿ£Tc ´F…$nbÇgC¿O(… ³Uá–Þ8¬bÂÕfI=:ÇâJëOtn6¶Èóe3¿:ÕÂ@*þ)S/&ÈŒ0æv]i%2¿°ç7ÓÖ™ Ù´Ê—&Êî‚ (LfDùÓâ×»ƒbtN¥ó=¡2ö6Åy9v£ÕÖÆéEוòÃ,î–VÓÃvÙ=ô¢¢”·28£^øøÀæ·òzJÅ8Îò˜œ‹Æÿ%ÔñcY2 ´óã¨NK™¤ZZÿZl좴­.È¥èG9ÁmýþºA™KK.Œ“}ŸÞÿü eg@¾Øˆ[Å|ôcD¼”+6ÞÃöÜb‚îâô•u åó¢`?ü«Îó'â3“Ö›‹Öä XT}LÂ$ߟ•ÕßnÊg™¬å°h42ǰˆoô}ÒKƒ¼4Ìà^yJvëãuÑ~Rà3$ÿíLÌê´+j×\ª~ÉÞ¥Uñ endstream endobj 244 0 obj << /Type /FontDescriptor /FontName /ZKATGT+CMR10 /Flags 4 /FontBBox [-40 -250 1009 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/acute/ampersand/b/bracketleft/bracketright/c/cedilla/circumflex/colon/comma/d/dieresis/e/eight/endash/equal/f/ff/ffi/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/plus/q/question/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/tilde/two/u/v/w/x/y/z/zero) /FontFile 243 0 R >> endobj 245 0 obj << /Length1 1893 /Length2 11496 /Length3 0 /Length 12674 /Filter /FlateDecode >> stream xÚ¸T›Û-ŒSŠ[ ÅÝÝ]Š[ñ 8 ww)î.ÅÝ­Å­PŠ[q·âÚGîé¹÷ÿÇxodŒ$sÙžsïµö7J5M sˆ)Hvfá`eH)kppØÙ¹XÙÙ9Qih´¬í@›Qit@P'kXð_RPÐùÙ& t~ŽS†€Š.v.¯ Ÿ ;;€“]à?¨ @èjmPf(BÀ 'T)ˆƒÔÚÒÊùy™ÿ|Л18ø˜ÿLH؃ Öf@0@èl²^Ñ hЄ˜Yƒœ=þ«½°•³³ƒ ›››+ÐÞ‰µe`¸Y;[4@N ¨+Èð‡`€ Ðô—2VT€–•µÓ_vMˆ…³ <ì¬Í@`§ç °9 x^ © Puÿ Vú+€ð÷Þ8X9þ)÷wö…¬Á&ÍÌ ö@°‡5Ø`am¨Ê*±:»;3€`ó?vNç| +ÐÚhúð's @VB|ø·<'3¨µƒ³«“µÝÙþ(ó¼Ë2`s)ˆ½=ìì„ú?ik(ÈìyÛ=Øþ:Y[0Ä ìõ7°°›[ü!ÂÜÅMlíèRþ;äÙ„úÛf rð°³³ó p@Ž»™Ûåµ<@:9þ0?+ðñr€8,žE€|¬-@Ϩ^N@WÀêòñú·ã¿*ÀÜÚÌ` ²´£þ®þlYü…Ÿjí0`î=û¯¾=·—9lçñ;üÏóeÓ–‘×–•búKñ?>IIˆ;À‹…‹ÀÂÉÃàçðñ°|þ»ŠÐúoì¿SÀ€À_dŸwé?„]ÿ>ú¿gƒðßµT ÏM ÐÿîqCvv³ç7ŽÿçNÿ3åÿ¯Áÿ¨òëñÿ%$ëbg÷§›þOÿÿÇ ´·¶óø;à¹g]œŸû_ò<àÿ } úkf•AæÖ.öÿëUp>ÏØÒîŸm´v’µv™«Y;›YýÕ,Ùµÿ2;k0H âdýÇ­`á`gÿßód™Ù>ßNÏù§ ô<8ÿ½¤ Ø bþÇ„qòð€P(Еý¹‘8yx^Ï£hrÿ³‡l¬`ˆós àYžÀEýãDyùlR˜þBü6é7€Mñ7â°)ýFÏyÊ¿‘€MõÄÏ`Óüxžó$ðœüq<çÍž·û·ÿ™éoôì7ûý¼?læÿ‚¶ß™ÏòÙþ:œ,œ6 ˆ ô_ÏÌ,ÿŸZý¹Ÿ‰Zy8X=_w¿#žmÖÿ‚Ïìì~CŽg>ÿ ~k6ÈïrÏÜŸoý¹Ÿé8üv?ç:<ß¼`;ÅoÊÜ[¡ÿ¥„ƒã™é¿tp<Órú|–þ/ÙÏ•Ý ÿr?ï¹Ë¿à³×ßóyIßžž è_ÙÿÕif.Ðg^ÎÞÏmøüçŹƒÌPç fBÁ6õÁwµ¤n,;_D¦ivÞ¦1°x-B»\0‘“j²× 7É#½Øß¶dè¯Å—(~yµ5"‡µ'ªwüðþù.^cr§uá+ÁàDÑ‘DÃ9 ‹–ø®÷/Go[ø6ØOŠ4yŽ.ü˜j¸wnýrî åËc¡s;ê»5¼oÐ~–O±ÄhG”ÌÐä›fϽFrf!ÁøòÌkæúfúeîÄ…b<ªÏq W±—þ:gìý¬çJ¥§S715±>9üõ˱IZ/ÉýEÂy¯Òâ5èXê,A×ø†}‡Ý>½çŽŠÆôà˜–fBž˜ˆ O!*z­]>Á¾„2‰;ûì›âš»Â_›©³j‚õ“ª_šÀNÏCnƒç>2=~½.c˜†~r¸'Œ6·3¼pÇrèg áªáÙÊè ^S«¦‰ y[—ÿ¦eV½[ÀÁŠåÈ7÷a…™sEÏ©p׃-F;¼³+³LÈà§Ýq's{bcØdš¦¦@‘ýÚöä\i4&Ò(‚†lr—6RD’ªä¬Œ¼6®&5´¡wFõ;Gh ™5ûn¨wá‡[xåÚåO5UyüY8E(òÈïcï[àÂ6Æ]ä¾nJ¯¾ ÛP }¤-¸|[Õ{9þñòÔ¨…]˜µÜRS ]Å. W?G5Nét:?–‡ÔX ±ïQ°äM;#¢÷wYÔÀà'¯¾ÀR˜ùœ óqÎÇN8BÑ.vãT÷£”zõG:ݾƒ¿ƒˆNkbô!býµkçV„­8ѧº…o{¯84uja}Þ ~è^-^š³[õÏ{ùù Û#ÍrºŒå¦<„â‡Xò ú¦ ŸÂ Þ‘‘ ÈZùGûNœ\Î0siNa„˜ª€S샙#TzåÈuý‰†4dKØŽ#Ï)àÒXEÚµ°9:;‹U®¿QÜé®ú½(Às:ók¶fT¢òCè²ðHKôw×_jÓVþT TªïvœVŠ:ú‡eo-]jû¶NL×m–™œ‘BïžòÏ~`äÚ«U0¸Ó=l½§åäõ2q°˜³ÂŠ ¼ø‰cðËòœ\¹b°C¹òóüU˜NFé¡ûT¦.軩ƒõ‡Ñ7è=éX©|ßzÅÔÓh 2¹áúõûgR‹˜H"ìÕûépx7ø €ü;tÒYp“¯)tÙ ÏG[3î™'ÌWŒ$Rð¦0Ć,K€ͧê'·[ÊMÞ_ dð°X'3ETDt¯Aì)Üý6qªç£±7a9´#à[óõÀùÀNûß“²Üˆ. *öCŒÑ‚bíÎ;nöf’¾@æJ®gð“8b:Ø6Ó×st²9P¨z#Ú·º¥˜Ý ‘Ëó%­"Ì ©£/ƒ\;¢Oä¢Çi Ï5¾CÒY«F®ömë.í{g{)n\ ] ËzfY=?nò¤³Â“„;ãX!õå7K x"yM² !˜íuÿc1J»1Ê‹•“œ–¸ªûˬx!Zý|‰DÍn‰~ bmðÅR/ÖòRtLñøŒ7m3sÊ®…*Í0PUº“/1cäȺ?­/zg&Ìô½ ×.z2¯^+ØÇ)µ›ñÛHä²ÊàE4@á\\kúš÷ŠBÝUû*cÓ®SÍ›†Ag¨Óþ¬}¾"›üåKÚN ê^%Á•blŸSZð;ò±ú„tDX¿Eo/À‚ÞþÆœÑTÉÔ÷|6 ·$È„aþÃiœ©$¿€x?KhПÒÄù¸ÑÄŸ`ð¹éÈ:YE`¿Æ)Lr¦¬è*§¶˜Ü“]Çu}BëÅ¢Æp俏p¤ÉS›ß7åOçÆ1Ò¶qŸ;,@7Ýc~nð€à_å½7¶ÂÊ´?×|7»C!eglŒ4æ³ÔÌâ( Þ>¹zZE¯ëxü€œ×âé¦ M4ÃXSçßζåï@®J.ç’gK,láNÕX’'êàùX5í4·£Ý„?Ï,Kæ=Îø-(:·2H±ãI¤¢‰þÕ€’¶ 7Žlg€ÚÏ{öÖžNT«k¶vãÅÔ%¤VO\Ùâòå­  –:?ù•›—%¹ÿ£P'šy1Rë7»QÊ8Iç/ôDíËk—nÞÍ4©¹(’=­k:«è!›)˜\ȹr9ØGéñ=ÌY¢ êcۘɭxÐÞtîtì> þwklc…"*f°$zÔØ0u…p¶VE"ÞÏ’@A=‰øRxU)õ‡«·ð /òŒÜⶸsŒ£nh´èÆÈ{Â*šZúWºW®É£»|>°v5o–ªýa)x‹q^¤¤%ö`3e<¬×ÙÅ_½ãÅ¿¤K!>úÊõÍÄ–Q ½™¾ºÌ(§‹—GcÅ ‡^¦êXB‘’ËIÄ(Qpø­p Qÿ±|XÆ©Qe2Ú¾Ñìkù9+ëò½(zXoøôE–¨ú§0Ú6Ò”!÷꣱6Opæ§ðP[©ÒZ Ç·,‹É¿‚x# ÈŒiL¬7–6vúyÐWVΤ￈q r;/ž/zВʦSº ß8RœbžÔvȲ*Ocz•meH°ƒLªÅ\ûqõT¾0)¦nÕàðÒæQgþˆFóxyHå€u;Q & º²©eÕÚNFƒ¹#Ú§­À ãß™Éõ¬È–ƒ„ tͼ6&¬º÷×À.ÂuóÖ§4Àúè&œ·¨›ú>Òbmÿ”ÃÍMÊfZ­òtLG’~ÿf¹—k§ çüâ . BÕjBQb(=£¡SԸ䥀kîtœ#)2‚½sëtµ ¹ Õij`a’Ò4é.PÃ=¯2ä§9e—lR¦_xFãyRÀ§mÝ’SêÚó¡Ðrcçn+Püª¼J8´_¾J¡˜Yµ™—n½˜xcÇ® "45ø)TEõh‰Êƒ2ªª•óBg‡¥ƒ¾…R±©Eÿ£‡îJW)¥Qçü7ñyÖfÿ²{|tž“˜ –÷‰ÒJ<ï ‹ò;UŽ–%5l¯ {%Øû–ã5j4‰Qî€JóÃO)Ýîy3¿ÌŽÒFÛ'ò ~꙯Ð3 æÜAbÌM $”ÔLƒ£CYÀEña5Î FTMŃv–´#Ó ÒÔ*¬ýSsÜIFUž8Œ:m-«â;×O¤ï`ïgˆÇ¨¤23ȱ™Æè[•cQf;—Ô~èD%¨:ä9›I™´Ïæm²gÆö×ûWóóTêIÐÐ$„s(f 1 “Ôà&M‹Œ‚Ådbc7€Ž8‘†5÷‡t Ÿßq/’ôy£—_ÃÔd>'jl¶ªÅ;ø’]FЙyø.1C¥õ <È JÑP5ËÆù@jÍ/Éóȸ;œê¾î§è‘ù'­ö$Úž¢ÆS¸^>6n/vÑôÊEñïò l©Ö«ÝÄzú6ŸÆû~m87e/wS¾ãtN÷›C뽊š£'l1'N‰_1-4ÇwEJ-cy¶]ƒq¼Ø5޵«?½9&c¦ X: ¥¨5$¬Šû¶ýµ€CI²¶bâ%•âv=lÓY÷åcßy+¹!!;þ8æ‹nˆâKœø7|úJÒ¯…ÉW» ¥db36Î}t#ü‚lôÑ 9rù¹KÈH0£M¼‘CÄaiÂALùõeÐÀ]–{΂MÀg‘ðF¿šO;ž} )> 6Cq@r*ŸtU$"R¸‘´ŒL…,ãa_Ű( îEß²áW.U9àR^` n}åp¿JºÞ6‰GÒéN>§•‘Ë k6Ã&œ»ÃC—ZNJçã«g1Z¤F¨©Rv]C>$?$ðn¡uêþ‚^Í«KÙoI6Ÿ3HtÃÙÓ›/ƦBf ·%ïBŽ“ œ˜[Â+å(páudC=Xp¯ÂÜ•ã>£v]UP›KkêÏaߣOõÙô·¬&Z{«²îɸ™jµ; H"{ÆmÌe 7R6epZžÁÍýÄã-Å^_7E6ƒ¦Q´],Ç¿%áÀô“x½Ö-;çh‚íàǼ!ïQ•b!P‘(Û ´ä9ykì>>FèÐØÿ´”#ã÷ª¶gÉ™ŸÛG%÷jN!Vz48)!-âSEF1Å'Ê€8¢¸UDÿ×F>°Í²xŸºãe´p9‡í5¬…Q>ôB¹€ìCG”¯,6†ö;"5³hßâ{éÎÁT#-¿{Â(Ç\ï/ibKMk†€±Ã‘¸À“ëÏß@ʆÞ>‡¤Ó¾USrµXÒÖw˜Íh,ëCBA%†®FºÛêÏ‚ôóÔ7…ľÏ׿,)+á…¬+™Î €"âÍÙ+6²!^ÁÍ`ì•~`d.n yDøœ÷îKZ䬮ÌU (ÖF³¿z§/¸… Ä¡þrç„Í ®‹ŒÈ 1Ð_UÃTBøStG®­Øæ¡ÆFís ³ÍÛ½€$¥j¾FGŒãŽ;{;ÔÐÈ ®\ÊogÄЄà#’k”l—~~Êzj’3„Ò{míôŸª£B¾>Ë¥X­8wæ¢Á‘Ã$/F1ÇRî1(,Û?"#ÂÚiÿ„¸ÿŠÌeÂix­Nã)ÒO]ª ë"Ü‚¯È«!—z3Úøm,ÌÕ~u»æú¾¯#·a ϨRDMÊ'øç·wœß†fl]ãáÒ ¡êäøæ‹RØÕ-zØÚãoP"P¯fæ€(57½9ce¿ ÅÌÅñý¹¯ålâÂn|m“3Æ•é$¢J–5D¥ÈÚ×”}ŒBÍ•$]ZéÝÒ†h³rŠŒX§35cؽñö¥Ü!ŸŠ­U¢ý߈«ˆ§Eá¥ÝZÔôo¯Üq®ÖõZÏAóù&CiÈ pÝ#'ǹ‹ù¢Nø?·œû×… ðØúÎ >veK»9¼®²9¯•@x¨Bùb¢©aج‡€YÇ:妲NøKª.ÞvÇ·ÂwÕEžê€žsB…¯àŠµÆ¦@ø ÍRh?‘]Ù‚Äk!á‡,9JbL¦›<ØÁGºŽýùáèÊãzhQä_š%Á%&s˪+‰ »†¸Šh6¡í­zQÊÔ¦MNÝY ‹ˆ«&ÇýjÜã1K.d^ß`›93† ñˆ‘Œ.œa‰ªg©ÌËé[#U®ÝfÅ[¦†:ˆx…N¿ÃNgŸ‘¥ÿÜèò¶kºØÓ;Sk¬qKGAy«Æ‚q­0˜·yÌl¯zÉX85KƒgܕŭšqGká}øýe G NÁtë0±í‚@EI‹<âì#rpÈÖ^ÛòTÜVhô!°y¤–¾¨üYæbçCºÆñÄïè}Ž3‰~Fìhe!i¡)§f«UÕšœ:Ì„ç›xF{=Òef…»£Gœâ3e$ ~&þ.ì<Ÿ  ’±Ø3¶f§ Ož·â”Ý'rêªÛC ¼ñ+âPüR^Æ3_û©LÉ ½¥?ƉÑÌòZ|Á×ÞÖµTŠet78C@ËA_ü½1NÐØ |Ipž5ŸCKgsr ºRE_}‘C7F ¹øƒ†QÏ“•Ø’}ˆƒÕ±{a*;3‚Û®ijá"³åÛ …MIy,ºc؆³X·åøÑ”º¼3  ÝŽK6?§;ñìŒúeŽˆ“.öîm§Å´ð~¤[ĈÝ+½Z§¡B9 pÃ"B© E˜<†Úµn{åR„­¼±OȆŸz¾Ž]ð9HUæ*•¼,V”lc¿¾Á¹ÎÔð½/´â Š­BqUÛdÀ•«ù¹µ£FDƒUoaDó^Õ9Àï}ÛΑE§„-òfþKÑ‘¹Ü& Ÿfñðw-õ[Oˆe—oñh÷J©î¿Ìû×fDÏý`Ê'¤‰ãܵ~—^&™íéŠpjBf$u0ddÆ´ï0Ý܈È4zßT½£LÊÞÖz›?o8>üˆ¤X¾Œ½´o×A-c.Ö2è¼D*\œŸÒ @c—>.¶|aÊc=p~×4ÅLçÿ¡WaéòkI”qgƒûmˆÃU1ëÇÒç TÑ#ÕPŸç(ˆ/ à2C2Ò˜öò”ªƒkóPmלcÝeZ×¢2ùiòz€2hŸeË)‘)ºCKd\¿²O¬á9)bqÂpgi#±’Hçf*©f.\³Ul<ËOY\Ââ]v­¡£ åE1§Æ±‰¹­p«‘ä¶WÅœÐÓ°š°Þ\`8w'¢šû…çìß4¾sìX°Àž“Ë ìu*ð½ý6Þªj-Üãb(‘[¯›ª £ÊЦ-Œ»Ydvú“NáL@¥|¯#-çHÑ×yÁ—‹‹y¿ÙÌ«‚ ÖÍ $¦aBqZ¬®ÈxÃþI£îlÓ·kù”*«Å‹øÀ¾ïì ï;íÞ¯€;¦Qe¤cÐ÷¥ ‚çµ—ä8;3ÇêØ"…Û0ñûx›cÙo›Há ø½^ÅÛKi/´µ¨;?’neTGꯕ¿Ä±ÌhôÖƒWç¦Þ•Æ×M,|'„lï/}¡&¶Œ žÞľL!yÔ¼ù‰j0BÌbæxÍI*¼ñþ³Ö@²¥`—[ðÖG4Ôh/îÒ\eÅôR/ᙋõs¥¿þ )§×¶q}‹ ¢À•|7D*vûo“qó‹Iu[˜7L3¬1Fÿ½´“¤E-ÍÚ™¿cÄ G~¥²0ØdKoÅfsy¡åS/ŠNbíº †‚ov4T_cì§—ÉÇz:hc²ˆ…hLÜb¿TTÐ×Ó?vnCÅë¼äµí™yŽíC¨~Ö­Ü ñÍÓœ=®~4Œ€,ÉõäC.u— D Ôüt¸83e¹jbã³Õ/XÏà“â…jgL¾ºf1ÌM¯ÆÔY‘H轟nÉqMÙɬÝo"*X鹘¢«5ô«”çêN¶âRš¼·™Ê|WÑþuöAÊÁÓ9zÄ-„0ä»â½Êk­ Î[TýkíÂ{J§Œ<_áT‰©J³ ’Ã*^†ðOn„~ŸVâNîlÁjzÉù?„î±»Dp>Ju‚¯ ©0)ËXo^7Èó“hÌ»¼1iZsIV96áÕ‹§ï>9öÙ˜Á=&„:éúµ8/ñOáÍ¿ëâÃíU7é9Eðcv.æz§ô0Ð;¾W˜ˆÍX7®Ë¯ÑôÂZDQ‡”$ún&/!z½xór§=ƒ\%壀w%Íñ›Ü•¢ôJ:[vKÚ/…LÐ^‰:!¼5ÕR§q€XµÇ*àqeؘ ‘érÇ  îÊ]ždÍ~ìõÖ=ïÀÆWÛ¥¾Q»_9BÛöh-Iƒ²m¹V¨7ÖD¿8Gsfx{XpÕaE11õ âôh0Ç=²z‘jÕ™¯¬±"ùÇU®qHÒÉÊj鬨‹éܪŸ:=áH1å&¥@‡6«^òâ·yÑ#ñD_ÈBÖ’¢ÙÚí_ñÎwGúBx÷âûtrÛ>аI„e[‡gdà4Í ‰®7ãð9hÆ“ïŽ6XRËbá@<ë C¢ C„/îmöíð9 /=·º„RñÁÐ4C•oöÐh{8ViâêPèeŒPd)‘[/íu)$"Þ†•ýõ¦Á˜ Û˜~˜ ^ùNà+ú¯ð1nì™­þ'êÔ+šs)@=£o›pP y©«ÕÏš‚˜5ì6/bÎ-5Ñ]Rе YHlm‚èÊü@^I1^pC H+‚ºõ:G¯·dj!ºQ}0õᘉñ|þXÇÌ8ˆ/EA&¹îsÏ J,ÖH—üÙÀ|W}tDí,I)Û£ŠY}J‹:'øVxx³õÖ¶HßF3»ã”m\†/~e&Ö‹¬qÎ÷§ðï Œ®9}!æJÚ?VG>úÚv,’¥Wó™³}fòÓÁ¹ mRr 4ò+g$5|+F}ÃÅB’# )µÛGÚgך—¯+ßG‘-ÔLM»Å6ÌŠu4Þ E<>:Mã{šÇèÚ°Ïî·aY´u.,ÌP`á/Hßczôe¬%½‹QùÁã;âR@»«µ[„Tl]3ÒÛ÷%ÁâtÑ×Éî'àžä³4‘à™ðQv×RóýÁ#Ræt¤×gp´üˆÜÔc Ô"4©u›wÒF7_z>øò"øzëëõC)Ž$ gh!ž)=ä–`óûkÓLŠ ª°œÒWùãS]€Ÿ¬ÓjYü Cç)™´L •×ðÝ8ß™iûš3<½o*?×§0P +UêÒéõ”–r™\òî²B5.]NÖ-ÂJÊ<ÐlÏÙZ;e𵑠í'uP,摹æ-”zÉeÜNÿ£ RS/Áºeéq´ME°Èë÷Âs¶¶¦òÊ6KÝYèi§çÐaäñ:ÞåÏ0©$‰\·ìoåz¥0×`YrzÖ2µ ÊjÔxáæw³M‹á®>ÉB$Vl}ï}+ì™íßA<笱q]_{“†Éôæf_o¦þðu†·7x$Vî!o”$„ܰ@‚RZ–ÅC«¿$Llëóä"³—$Cþc€lÎS­<+Vˆ5NþÇE|§i®ÿW¼Ò-¦ûË—XßÙÐÑ$Ê£ ëbHf&I¿¹4£-¼áJ8oöEãö4Ä¬Ñ >žê›Ä!F+“=ëÈ+¨Ã.ÍH öOM8¨²3’|ìºÏ (ël®4zàQ@\ ï9.ìÄ­:†¥PD€"ÍKOïE'Íaôöß5(¥*|èôwK…m§ÈtÖ˜ááy ˆ Ÿ"¬Îo¥ðÝ^^;¨“ÆnÚ‰úéy ÈJ7Þ¨©tƒêƒå EF}G‰_Ÿl›ÖWÒTnòX½Wø¢<ÄÒ„ rmdp,$ÆD{®ŒzIóËûœã|¸OçžÊf´—p Ðâã5ªx4úGÑ kÊsqˆ‡ÿüÛCÔÖªs›6@F«€5ù"Æ÷$®®lCލâþ0ß’}Â=#?m!½ •šV4&”ç.õ-PšŒe2(_$|”dÉ]`+ІÈÑ.nB-s=Épkô]úfˆ»æÒێωæ_?ûŸâ×»77rÄ×-¥’·Èâºï¹òÕ –Ï-Dk©½ ˉ6ÑåšÜEªG2‡ K·q—• :ÛIU»2}Û“¿âD¨ø<Ì´G~Ë!Ä£-x‹ˆsp#ö3‡FDeþ>αÃ8d,LSÞ Z×Bá˜àv=DÛla‘x¿®9E1\ódp5¦ =$ föÇ™YÈ.sßm+1PÛ×':®º¹Öl_óD5œÐVèø-³øÐcï¤wÕ½ =¢+ilS¢ºÿ¦¹êÛ ƒçÖÀŒÁ-6QuêWÌo”ß©ak^¹îÞžÏ`_ÇÕÊÝiÈOêË¥z€–Æé{¤OOsqþÚÚ¹b:p†É¬`@ò[^™¦öÅù=pÚ–(¬Xu¶ýKú k¶Þt?ƒ2Ïy£N£ãKô<Ȱ¶ÿJ¶Œ‹yqÚVÐöñ¬º4]«›^ÓŠ€ ºž,–Aõ~t†°Üu¶;B ^•~™Ä+WèŽO!ôKè£)Ie„àö謫£ÙþnE~¬È:Ò[  ^1ËiOOOuøÂ~¢–Åáé¢t乤»¢\R*þ‡´òÙ¼s¹_¤ç«òL9 ™)ç«É…µªõ.ɘ³!*,õ¬g¬e±5÷U£7TÀkQiÄ|€o&‰yE_º¹ ¾sŠ™$Ñ[­Àè+uÎÈÓ‘—„QæšÕ’R½tx9G#hÝ<§°m3_‰[ZVfË Tô;pŽ–ßÕ»£{üI•íFoi¤º¢¨“®¢¨ ê*>·÷VTÖ]¥‹¦4V E÷4_'ÆOØ!%㦠9'ö™òƒ X/«;<ËsÍý=DÍz“”¯ê°Ã+dd¥’­»‡k"¢_ã¿êþùæ «Ä›Û³|²:¾×®µ’ŽÂÕD^Õ3+²;ò+CFŽ–Aëö.å>¹D"¥ïš–þÌ~­m&±ÇŸÅFÓî_bo€x ©GJ«¯OZ–©âño×; ÅèÊ>Ìî™Î©À£¾ÌB ×Ë’¿=iî²³L{ƒÈsx0ª’¢‡¡^½s–Ù‘‰<™›VÂx©Ä þq¤!{³²Xnw9ÅŸF2%n©»`3_ûÑUCÜtüà…MˆU*QË“žÛ'£¥KZs¸ Êbøb¶VÅrÚþ‚äøx"·é—ÃÐ{‹1ÝùXEg;š(¹¢˜z€¦e•€0:LPµ¨ß̨9—.•£íÜóoçNÕл`¯'Ò d¾…!Aÿ‚œ½ÆéÁ@™Ô·êêÆ%!žQüHpÐc&ìp´q‘Å]êO[ŸŸÜ_$û¼z±’oRE &H¬f|ŽÛâðá®3CÕÏIYÆ<ÌØ¬.|::ø™‰*_Ÿ2d^‹{ :D¯+ÕÃï­sŽ.W»^YvîÁÉ¿j$/ÿ-þ,ÏSJ¦‹ó£.£¯:8Ë~  tßÐF™yÁ³Uû;ÿŒN†·|ŠÆ«‚=Z-'sÝVØ:»N<ÓCZ¡G®#ñÔ¡Ó¡© å×àú6s:Uܘ‡‘ÖÎfÏÏ4ú“@÷EK/vÿ]=¢«MI¦ÅÊföì“òW/·¤òêY0áúûRîsœ¶aƒ ßu?¸‹RÅÚ|—ÛÀ‘:“†ÔÒ°‚¾ê)ÒÝðÈpžt^™JºïM™’"uÓ"^NW0BžrÞ› >ŒßœªDVªY müOÙ¬Mik=b¬~P>AÊ¢[çz,ð¾Ü£S(õ¦+Ýâu¯Ái{`Ÿy±ÇM¬3,Wá·y×%Ù‘ÕÛ°A>Æ4Ã$ó!k¥kæœáä0V@S‘캺[B‘{™í\C˜\ME}Š}à´rf½IòëÁ!î ÎøÎz›­ÂêqÛtÁé7<É3»ìË•ñrïB§ì¾(åì?!GΊRß» X¢as–Y¯ñÁbŠ—˜ º ß³"*¹ìD©þ5ÊsŠFà«N‹Ìx¿•$é˜ChCt’ù¢Í;/Ì#ú—ÖîæÈ–y8š)=u ÏŠàuîSnŽ»Wßàüãñì-#…n‰ÕóShé½ 8\\B%ižÙÛ¡ûòv µZ/ÓÂ#¿1õ¸íÂëø5i¹Ò‡¬¬$)vö«Ôdš éLøH æ·¼¤|췛젪˜AVõhåñ›Ÿ}gì)=¦¯æ«U—¸ÙQËÆó,S<¥\Oƒç#µ:¯É{¯ý.‹~ðó ª¯¨FGãÚWuì^…Tìˆo5ýòÀ€Ç6ß^F§Ûq oÌǸ1àô+ï;ÑáÚ™KîGQÄoHT^÷u—¨èo'8^ç1o_Sé.ðØeìJwƒÖ!—ÂQ?Y‘ö䪑jQLîÖKf±S¥è²;RŽÝ= –´™å[`_²¿xÃ3·‘Åãe¬éØ×¡¨òýÍ f½#£¶‡ ×ÀÍÉâ±·¼p]>^¸0ÄÈZÕ"ôm w ÃÀïdèëò[ÜÛÄ8â…‹2.6‡õó;îñ†ÝÎ+‰!PØ<aQsï3{^Ñ^TLܧõ8twØúmoi拚ýA4ÉýºáíÈÏL¨¤]Ãy‡Ú¿†•¢öׯ+Ì=™Æº´Š׬ür Ltwµ×W]&-?'œâ8Ê£·§åql|k—ƒ¹DYˆ@í¸Ã¥ÖÛ %:WÑ}°¥p›zÚú$DìDöGð”ØÚ,Ó8BÙœJQJá˜ÁRÄάxŠ*Ã/àbH_}ù‚†£!ëãk§´Ž/;:Ò¶²ùdmùêÔQ(i‡€ÿ½o×´lñLö²ý>Áõ×üé“}èU•…Nýt•:ß[Úy Û¡µ±ò´³7©¯mo’SŽÈû™x/Qúï༧À8Ýø2˜äjáí­ý+ùã0<xõÍvBÞ$X©D ª²lâÞõŠ"Ü&ß¡–€hÞÊÔ'é;RâøqùŒdc #/[kp!åxF,|°gFc@z «^”U^A•‡ýíNî±Bþ]ÁAÍŽîçù–™¥÷‰N4Uñ8\oÐý¹²|ª‰2¿«¿ à³Bêß|ÑL÷䜎¹6§Uúý‡y!½#T¸ ™™âŽzïQdÝ0¾;qP0aÞ©'åHZFB•ð|XX½cÐê›~X|Ír"Æö¢–5*\i¹äå­YAhKÛm¹ö>ôÊÆbèí¡Ž2©ú¾F ›0×e‡_å³wð’e*&ÙÎ$p–‘î³. ›_É5$šž}´¦^¥Ú`î@Ï-fkÖüމ©M÷)35mˆhû8IàªV®@ü±Yewy¶J w¥I[qöuº¯ÃgçPXùåMaá²)Ë“×7²J¥³RíþØ¡àþìrOÔ„Cç6ÍN•å«7¼Š«iÁÚÞ륫”:dè…ŽÉ3S ­fÂ74E-žþÈÇ7#¤óÀ¤Þ‰NTê KÛŒC@Œºæ¥³ï†Ï2ù¤…›»Ãªmt AòòËOóh;mTçM#¢¼á#±Óç–-%¯~Ò;Ãy%¾Çó_=¦OÜ¡×AÞ 1Cá­ù?ÆÄøá¸è(Àzçɳˆ¨±xá)o»ÆvW 0ÒQrf—ÒfZ¸’Gà;³|ü¨{GBèaAcÖ§ÙÓJDOEécÄþ-;ÏR&Â]Û×`Ý\ZžI]ê|°~³û÷ýµo˜ŒÒ¿ØRþIÊ› endstream endobj 246 0 obj << /Type /FontDescriptor /FontName /UEHUFC+CMR12 /Flags 4 /FontBBox [-34 -251 988 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 65 /XHeight 431 /CharSet (/C/D/J/L/M/O/S/U/a/acute/b/c/d/e/eight/four/g/h/hyphen/i/l/n/o/one/p/parenleft/parenright/r/s/t/two/u/v/y/zero) /FontFile 245 0 R >> endobj 247 0 obj << /Length1 1629 /Length2 9075 /Length3 0 /Length 10136 /Filter /FlateDecode >> stream xÚ·Pœé. Á%xp,ÁÜÝ‚»ë 2ƒKpw·à ,àNà\‚{p—@à’Ý=»{ÎÿWÝ[S5ó=mow¿Ow}CO­¦É*a 3Ë ®¬l@A€”²äb9Ñééµ ®öà¿Äèô:`g *ø/)g0ÈõI& r}²S†A nö.¯ Ÿ àþcsHƒÜ!–e6€ vA§—‚9z9C¬m\ŸŽùÏ#€Á‚À! ÀÇò‡;@Âì ±AÊ W°ÃÓ‰ {€&Ìvõú¯ Â6®®Ž‚ììl 6˜³µ(# Àâjл€ÝÁ–€ßT@à?+cC§hÙ@\þ”k¬\=@Î`À“Àb†º;èôägþ°[üxžt0û§ÿ#áxâ1;ø_Ànõ/È`·þ|Êò/øt°Ý?ã)«E~š,vØ¿ 7€Ýù_ð)”Ë¿ /€Ýõ_ð)²Ûð¿:láæìü´cþ˜§öÿÿ±ÐÀ`O°úü ÌB(Ķ:¤õ¦R‚̃ukTd’~K÷-#«÷¼s›ÛO,”TÆÏÙA+ÎW©]8‹2 —â T¿¼÷›jQ›“Õ[î|îM5Æ·ZÐç¾öŽîKÔôP ‘³j‰oûüròÑ ´Ch‚oW ç䯥–ãÑ-çYÓSö}8lfK}û3¯"Æ}Ùk¬vŒQ`ñý{óœibdWV T&¼Oì©Ë«I¼¼±G*…Dft߃X®Þ«œq·Óo–ʵ8]:HèH ˆ).ñ†Ç_zKî¦)Íz—Eã4² qæÿRÈ1>ˆDŸS f0Ù øêm;ªØ‰"}pµõÒÖ6´}à‹ŒzòF¶Uª5z[7T_γS¤ÙA–2€Ëfñ ÇàªÝçfÚíPa¼8“bð|øe¹)*î…s::ƒ ŽAnY‚/‹›§æ\aç—ë|™žHç¯üu’ú¸úX{+j“b©r ùïp¾«eð}Á^ÊêÜN5‹6E=km!Á‹Âr¾‰™‘ÕR^¿ÓùP¢üúÙíæì¸—\[ŠÅi µV¥ÞZúµ¯µ“@Îk<¢ƒç„‰—Þ¿Ø%¼#nDoÂ4Bo Òº^nèNï]rî^1y®ÛL´®p‡×QÈ{¤9>LΕæŸ9ÑçÒ!ÚuÏìÿôKž’í>ôöm)B»ÚXYök=ËýÊ^_³î—˜àS­ši*ó>T³e¶A-+d2ÞŸ¸ –?Éå5àÄ…Ëfî XBÈ;4c’¯j™ó¬A£ G4ÉÂ'r9Œþä“k5ؤå]¦p(ø=žŸe Fl2ÖgµG;Yƒ‘j.;BÖUŸ[³{S£6ýÌ(L,ã¿æ°õl¼x>ú[pÑÀµÉ<$[æ³eQõœ o¸\|«åѸðEñ«ºzªï«s=yípñŽ~D%Ï’fR;KõN4ÃZ®ÇÈ”÷ÝSî e‹½Óºáá–­N„µH¬S1å DëØn^!}YåþCɃ,”¡1%ò•GŸ»dí„0¯5(xf^—ïù$ÂoQ®÷h¾öl1å÷ëf‡¤Ã´2>bÔ,„È}:_Ôš>Nß´»Aæ›ý:Åú¾è¡á¡NÕ*K’± A{\ÊJ†Ÿ­æ¹¼.Ð{y½Onªè(4e­_²ê:j$T_ƒÄ‘Ö¦e k¯}]Ñt%ü²]ùâjÞG[:j9ããt4ÓÈ!SÏüI焚§Ã—ÜJgʽkÑücìzƒZ$/øÚ4B$ÙÝ0=nô8¯ýtu¢«ÍÁ&×6Ò½³ÚÎvp6•–P‰ánÇÊé ù/ŠðÕ9N+ï—ƒÌ[t.†¦ kÇu½~CÛ1´¯ÈŠJs±0G÷Êxx>V"[¿AàK´–{]1&Å7?y·PÊÆúþµð* ê v$‹´Âò¼ù\¿Ü”'‘êË–#„ ÐýÞ ‘UÜÞûY‰½ç^(äàï:&²‹‘"G!T?Þ ÇgÚ ³]ßmI1Kˆ—¸ÅõDƹ,ÎZ—ø«‡j·Píhºn¬egÞµXà{¼icm|L5z…PÀ”¸ §C §Ñ¾Îu÷îÒàÕ7ÄXõMÜž½°GEbåšlKtóጶN*øF·äH-ý{ù‚UJ‡PcË¥.áO˜Üxøß.Ë.ã£E š®rÝšôFE4`çSfÅ(;Ë9Ÿtn§I?˜Ñ᳋¾©7ç›ÏýõÊvGž™%’²Ûå¾ßèú¶09ÌYÈ(®[QðJEûãF(½Ð`ÔùBR(3PD†±Œ‰Q-}Þ°ÀZľ–iFs îü¶Ï£5[?‰0É^]wÊ‹é˜Ç ¹ãÈRBð3;UR¸3jƒùIÙ*Ú.ùe4gO$¬:9ÊN«]˜©ô&ÌWJ –â2pH`ýÂô“èu†cïSNod›°Cit© NlÏ‹Ña)Ú sÂTÓ›…u·zmìÂ7mžõ[ØzR™yÊGázJ4¢¥o—Þ#°ËB†ûëQ”=xLõǃœ SÚ¨n-`DËí¡¶æÍã-cfïÒ?ÒŒú'Pá&…Dyvh¾šçôÊ;&8™}Ý ]àÜrmµE 8S/Öœ9<¬=¥=V¨’šúºt&ï«Ô©iø¥â§bæÊnr 7ƒR7ÅQÊ^Et:~[q9 0Ï>ÝVg,¢y¢,Çâ9Ø©Âçÿõ»Î[ÏØK) ¡3ýÎK*ØU¶0;D‰ˆúæº ª €ØÀ˜ð­Ð×p‰/kò=¹ÿç5£¦Zpqwê¹׸ֻ5í5N9|ÄIÿ¡~ù*U§KýàÔùŠE³PŒ!¬ñL{Òì ¾¼¦œÊ"ºD/ýé|¾Í¾bm™/;…ËÖ¨‚¹òã¢@¨m‘˜7ÚÙ›…«r¿ªï£Ï»."4D¾Êã)3lÒv8àÜ,¹va¿M4ÔK û‘!ﮞœÇšoR·ÃÖÁØš,bd­–]XžÒpêÅxP‡C„VÏ„!føÅºþ[ò÷hšÈ3À‚f”ýè÷Š7JøoGï\Š-ÚŽe·ÒEz¼Ð}à UI˜W? o2Ió3MisEÝ|ß" , ج• ¨¿ÅË}Úá?P«LHõÇøQ´ºVÌòKG|¸pµÝï±ëyÅ55™â+»$ÁÑöß‚ü)Ö\øíë[á¾IN²'ëypdñêK¼ÍG‘ÉRb÷ïÚájBxA‡‹Dé·^l[Ïp¦¬Hu ¦I‘W9ŠÑƒòçé×(ót#ð¼Žè–Ótâ™4q‚L=ªñÀ à…’ä† ®N•u2»Õ{azy¨öÍWú^b9«%Có_”Ëî HÜY7L>˃?L°’¡ 6¤‹‰Õê`ÆÚ”3¤É‘¢ëð_‚\æŠtÀP§>ñ=i‚§>lYëãy‡ÕØmãE¦Å°t¸€| ¢$êdþµ!»Tâµ-žªu ¿îs¢“7ËÃR®}†W¡ô7÷ˆf~jº–Ž|+Ήè­ æ^BÔ@8/ù>ÝElÆXìÞ)œèë`Ó«é™/뜩¢Ã¿‚Oðxkr²6/KžázC/[rŒ_Ö¤¥è„ø•Ntè[.’¨¼Ni@sþÖ]”a¬B›€þ=3yJçV—aOû´tëT›C®>O ã4j¬¿Tvñ—ŠØ^ßÀ+ 1 S„zÃi÷ç·ZB#olGô"ê!ÖLr„TGÁ/v¡ÑÍÈæÖ“·vÚµâ Tˆ}xœfÎæ¤Ã¸ÏŽ- Žu‹åSfY‰”óû"ˆãŠk’xçIPdåîÉíÌ£–h3ݼ&æ„[à]½Ê/[Úløñ]‡Hd²êrE°iuñ;©rÀ×<ÖÏ pþ¯$—ãpa9±in´3|.÷®Š_ ˜úÓo{e‘(ïÒrÅç£p<+CRéßôxØPìTc¿(]ÁK)O±@üTQ|€*Q+Ú=Ž®ñ"?8Ó¯_ ->LJ³E¹£ªùrG dk Iá5A:Aÿ¸0©œª6·­eEk%ÿ€4ù–‘Ú¤³á#׺`ºZ}z¿Ê{¾ôëgœÖËz*4ªyªìÒH›©º/cŽCĦ§f§ÖžyÃ&Ö(×P›Â_¢Í½ ýæ¶÷é9µ£©Xn§…»^ ÚˆŸm$dùÕ‡>ᢈ|"Š!ãSmŸŒ QÉŠ`œCM™`• ‘ïHt¶ËÚG¯€^›ÒH_ßÛÇ"Ûš½7¦ ÄÒóÔªGn¹¶¿ïD„4…\2¨ˆ0ŒÀ{d{ÃÅpL^€Šô‹‚ÝÔ å~<{©J t>·\wëi^"+ýmñï§ïÝ ’eT›#¬×àå‰`[Åü8×ç\ÿÄî$PoW»Z}&c°ô¨bS·û(Ýzu¾Þ‰©ù<‚x¡’]2Ž,%V×´ªâ‡È C]g)+,Ü«œ¸¶{éÓŠÁ§å6he®[ei±QüØU|ø=êà¹Z#[ÊàÔõç%9©wÝ„ö)|êM,ö@eð{ôHµ!J"\†Ùº_o¸Q/±Ãc®w«+#YÎJ7rÅÊÔ“<¿?#ÐF Fªã‚ÕÆ)Ãa¦Ãåì3N}t$hêÑöåáÏYh/¦£”4VÙ‹ŠÃÑmÙ–êŽC~Î`8~ÍŠ÷\Y÷ü¨ëà=j{X²ñÒŸeǦ®–Ò-êÕPklpAPÂeYÅ©/Åı –PîB«š ìA¼W·Ã ÅôPJ¸ß–ˆËkºRp¿dÜKwÔLЙN{6Åi¾aïݤóèI—‰-‹"Ð_ò—ƒëÝ¿ÉÏH÷[·‰¥‰ÞIªn×ù¤l8­­-tY¦ÆË¶ÑTEâ¾³:ØÀ‚BõÅ‘ÆM‘jãƹÌÄ7—Ï7;~/EÓ/¿q“'š“†G¶1¢yu^Æóª„pô$ÐUK•“©“ɵ};iW9rŠjmvaëòñhÔf“Œ^IUÝ5•DCãêíwh]-"yN᪹5²·‘FŠ2m½ß:ížhÔgûª'‡A’¥_ H›ã2Mú.: 1ÌV ”’ ‰W°ã ¾¨`J-Ê’Þ¤•x:§~ÌÞ ä;–\Fs!Ðä«Kâ˜jþ/Ð!‡h‚èæ¦Ç{´èË$”—‹6‰Hæ÷ívšûlY›oäáÙEÒZL@Îoê ͰÒ(ñ¾ûÈ›H>•:î^é 4íJée&¯¹Ö¨û…â@Ôš·ŠS}žÄ5 ®(7ÿ<é›—m‘ ‹—wùµ-zèV^€WB°†éΨI.©¸¯äÚ»zÁK «ÀÇ‹ÛÙ§C‹ûp}#ÎÞÏ3‡x^¾†¢7¿1òÍ݈ÏW5ܬ=“œ™nÒeìâ® ˆ'Ù]êy=ê¦L’¤]ÊbÁÜŒ`Îë‘~ѹrAò>ÓïÅêçŒ3á@ÈÈÀ–§´Y­“º‡U‰cZ›lÙ÷ÆÛ2Z…XñW¾ßºDŽ$)©ÍîO ¾X=ª²ÃŠÜ#ϱm#k«¡‚ßÀ?r?L:,UÔ?3å ™Œ ”Êú<Šåµ-FÕ«I‹5Þ€ ©/SàÙ/|m;¦ÛCùž¡úìg¾½l8s—Žàý+_fcJç;!ýœ¾gì’WfBÕY 7fk%î"d njͫ¾bŒH• ˜4¡ù$Þat‚ß-º²9¾fˆÄÑu´,1?ÛÍRÌK ±0Ú,"ê¨EI䪋‡Þõyc¢_³á‚ƒHrüПµÒN)ëûÈ÷ÊøeSê æ8£™ŸL´²&ë0¿ÚZ}/ëÓ]·½â8R¢Ãå7dÙ§H”U³^MFŽäæL îPy¾¿#zý…”©¢‹8б°ža/ÏP]7P¾¤]¡–½tÇ9%ähöc:îp÷ÑLÍõ”‡_ûdYòœ0¬JŸCà+vÞôOwl‡ËÕ·?Çl,/Ä—Ë®®¯ ASZR¸/#Þ¥— Æ„ „$î×{glDK´"k:èÖl§óÐDÿr–qŸßŠ ýÉ@¾`sú>»[«Ã^ GA¯¾Y £B!Ò/ý'·dÄ©S)ó[/»+’þ¦ C¿ÜÏNÔê/Ž]øƒÔZ:ÜN1.–¼Fö>'õX2&‚ØJî! ¯e“Q‘"ûSÏ™s‚¦ßCùÕá?ñ{©!uŽü<ŦsÜD°iîu+H¦=‚\iOñe&çãØ+O-‡Ï¿N k²ïu’®ÜHÁèÍ•B!g­µòšðŽÄJßJS58*¥bGÖj7ÃÔ+ŸÉ–  «¢3ä{öÓÆ~ýíýIµæsï@ã–”µ<3þz‰ *%q²´l£!¨ ½æül êbøvÄ÷'À²YútOþDœ·”Žç÷IÊ4‡¿4ðˆÏRt+ßf‹ÓŽÏ%>„¾Q#(CE ËÛê5®¯t‰6B4Ä\°öh½«÷Xuß1Ó6Ê`#_;ÎRÆš ODLÐ߇ k[Q¿?tQk‘ê¾j§ú‚ÈýáûC²Ûû[™)·Kùqʹ™…TŠaèÇa‡£I1ÂZ‡Bº !<Ï“.”†]¿O°«~«Õǃ{ÌÜæô*ÑæF]ðd9õpþñZ™JXIh¸m Æ.4D—qÞ‘µØí®,ýrOVz. c5ͬJ…jŽ-þQªãí³Å+ƒ04ÑTE´‹ÕnÍ\Å èT¦E?[¤CÂÍ©íäNLTsÇŠ×ÎÆLá¯×d²é¦‡2æÜ¹Áÿ ú¾}ãeç|Ówö2O±lê4ÐY+†»;Nu¬ñ²IĤJkÄés ,ÙÐB<žŠÈÍ­…O›Q••àûJíÜ[cæËòñïäa‰M4åTl–!"Ý”ÉZ8Õ!Ô+ªYI»>1Žðhb¢u–oSoqŸ¯*Ì´X¡BËÎÞØhRñ¬Ìµ÷”ž³Î\ªÃˆ> ðÇU{Œ=ÕIßΨE.!§ª{ooJ±¿–M^ì+n± W˜¼œ*VTDá£Ý…ð¿èÚ×=S¿¾÷xN–"0±fi§O´¼ \õº°‰4Wõu”Ͻ Ù<¿ nH³H[Ï–Ša`Ƚˆwh8ð:› bÉ•øaÏNæöVëõHéöñ[DœÇJWäœ>VãñœÙŽÙ½EQ›ÆFXóóðý4‹Â•(”·C ¸[é%úÕ8™/E BŽ¿ Ы¼¶¤ïà‹ˆA¢Ž ¤»ù!JwbPý3¤°\¢êLÀ7&Iž€±ÏŬ£´ëL¾šó"öÚÓ4Ë›¦]Lˆ®œâíÄÕÐò™s£}ÿJ£:•‚wMçß×¢®ëf&µ»¤ÁÔ|Sãâ<eÌäZD!%¥š‡‰4еù;P¹v¢¥Þ÷ ½ÑûfYް §ÙKBCÈÂçëäÔiï”a–ûX )ýCÚºtË­é£ûá!f FļSL›™–Zõt/j¿º-“ÑBè¾dÿ`IÏà1TlSÙ‘¡¬UbiwäDuu?Q0•£ÅÁØŒ¥¯ ³RîK ýQ½4k©¶šíŽÛýÁæ”Dj‘cÔ†úþîàk´F¢#ædì¶1k@‚Ó8CÜzFÿÃêaaÐévOœ»öèDÈ÷O¯¼µÊ‰›mÑàNÄX8}à›Ñ¨f1°±‡ÒaÈ9ô I#Q p„ø!ºÅÛ32s2Kެ«œ¢ŸS£ˆë÷gàìŠpÜš*9øb¦ J\µÃÞz5¿­ð6Õ’†2´PÒb‰É0;¯¸Ú𺗊+ƒæœ«$ðœðÄÛ¬C¿WŸ\ \ìÍ nfÊRÜTbò³£¦¯  •žñæ0°8?.š”ÛîÖ÷3±oÑôw–ASE”ft”/­s}¢-Ï¢.£PÛ€?y(t®_D}½iÚ.ü i)XY“Á{Ó1H`’µË¢¥¢Rá\7ØŸÝÛˆPÃjZĨׯÖa €Yè7?¨ÚÛ.sÏ[9«¥Ð±aÇÖ¨ -éÖdjN¾Ö¤ÔRæøAÛX¨éu±æ ]ö*¢†áÀ“žHäK§ËrãåŽ1ž÷ŽFœ`yÅŒL±ÒžÁ¿1+pF½:‹ŠS­ƒ\-òúü²Ž•ÃÒcœuŠçûv€Ó7´¯¢G { I«è aÀ‹›tUÕX¿ØÝWœÔçGì–GYçBj&Š»Çõ~)I]pïñp÷ódÒ~4&x•3yÐÉ3+9S9OËDà½bþ(ÁÍxyGµÓ€.K[cÁoK¨ë;½ö‚–èäx ćîÁ2bo :æ=oÖmŽòn÷¯&ö$kLëòTka›µï9 ­·L 6…Ûƒ|Š–f(˜,i®Îѵ'™è¶Ž™©9”ô5uâ«®oÑ0Å“ŒOÈ퉙“'T5JÞxA?Âm];l=Dò#hìR½O~†‘“7¶¡ð^=PŸé<âs&TR×%“É DÒö¢œ ¤'¶²%•^²™eç$*ºÏÞú+r]}­%rý8#ÑýCíþy¢;Ú ¨›hL狪i€ëßÒ È›çqI.ã4&;¨ªõËø ¨·–lÅ\ˆk3²gQÎäqŠ>D§§9uø¤%i)¾A+³µ(-v…_ tŸ{ÍWËÔuD¿L 6n Ãa~ç“~€ƒ‡7%.ÛÅöcAjâλ×f™¬‰Oÿçke—\r›ëj䋉z¡ºûö/‚ô ùƒðÙ;"Üø‡q‚S!Z9]¼f‘‡}!ý¹)áй±Fz®4:üDç2ÕŠ†ö«¾ºR“û¸ê/Œƒ#XH¬µ·9Ã^Ìgâ3˯¡®Ö¹ ‰•Ç΃kö}~òPJ)˜øüFÍ`t‡£Òbîñ̵' ‡í† í0v(›õ, o²\ùbGF$ZŸX/ç.‚®„Ÿ &Á+“ óŸœZ4ÒŠŒÿAMäa “ÅË‘,$ŠÕc FÜÓsV³.Šs¿Èü™„ŸþÜ–5uËõ¸†™èÈ4^Æk= »ï´žÜ¹93Í+9R« º¥/—¼V:ìÕóèVB{9AÓš™ë@lчüÕ@¹§Op‡·ÃO {äŒÃº“dQ%óêsÉ-‹¹u‘ íqÕa º'y–‚yðÚã½`·dj,Ó‚ Jü œ‡"ÂÜÜJ‰b7>‡óç6†ô»&¢¼’¯gII½.vˆ½iWÒÚÃ?µ8| sT+P¶ÜG’·`ïy–|fˆ‹g—Oßéùª£;ማÇ Õµ̼Y_dôV£>±bÊE¶OJgbkK'ƒ±„ÉËP}ùˆEï¥@Ù4X…f$\ˇz¸yrËÞç‚ñÕƒÞkxÀs¹Ó…êÍíëà ±‘µžªº9k5pü ÈñÞ£)çLŠ/™¬TÀ8ëTÈeàA†¯wgƒF„Ó4žtŠ·ÖxsÙàj$£3 P¡ÄŸjŒ™1ºÁ,’–y‚9»<€Ô ‹D8ŒAùãtãñè m©Æ"WƒñÕ‹¦Ýé®õ¬Üó6ÄU^uôú¡Fl?@ò×Ñ{(re·ôú,ÒòâGÂ1P¨,ì™K2Ÿ8̶K_Û•¾Z¨7!®íâ_’X÷ÄçE—N†‘öšàµûýþõOëÏíÂ/dC?úuÜo©4ú¤ú*ƒÛͻޑt19*v&çÒQ`–86—X²“@·ÞíÁ¨YŒåõ ñ6ú¼º ?#'?S¾ÆXµªãé·[cjÏ;ãVÙm2ÉÙzö5@˜YvïjêK1& P ªOM¸Í®´9Ȩ¼Œjân¡äS6{gо%Ö«åõ2kpš{…SEbcÛU¬édn*¸Ë2Ùµ©¿»µã'Ž"šíÊru]KÄÇøC'n-8´›ïR[ñ p˜‡ß¤„6ÆMyÜ%Ï”r[ïØßsúMÝ•Þ3Jº²0¾¥[àÉÃÊwb„˜àš§Àšm,ãºlŒAm Ô5êDÙPÅuï}BxiÞJvÕ&ê‹Ì:}| —pç{§_.pæÓ÷‹Å-;CðGÄhY8ô‡‹Îè’E˜ê‚sÃZ.Aõõ1âs<{¢ ZÂn¼G<^è/½±®bo^gÓ©ê-ó<£ÇáŇ7ˆýq3³¡w%ýÓ&PêïÄò‚lÚ¨†f«_/«ÔDR9!,æÍ —Z´ôŠØd¯Ì–‘Î*.?»úí±Hã«W’PÍVËrä¼J=¯îËå¤ ’¾ÍGÝþ\ mÍ/ÂÏ´øÃ°p™p'ÃÌ@ôVŒŸƒ<«]9E2:œSjÞôí¼ª,ÖÊYØÆ†ñqë*N³¦Vceyi”2á/š d®I« pGX ;¯Ó+ô‹^¨J3;øŽÁ1Ëšcö÷ÑŒéxç-5ºüÞ½¯é©¾- ¤:+ØOî<××< Ïoè½ÖÎ$-v±Šæ”B&@Ž »´ƒÓKÁ—­Áýr®â„XÊ¿(¿ŒÙ}—³Àí`-P¼mb6ß¾•6­‹£øÀ41Ҵ䀯æ-!¤ÙÝ+ òõ´MªÝÖSaº"ã3‰WvæW˜,®È»!mpÁbNúš+жdˆ‹g¬ÈüR‚¤†%µM‘h§C5cjUF£ÃJ×ð²I-2qzVz¨¦…º]þ¬mª} endstream endobj 248 0 obj << /Type /FontDescriptor /FontName /CTPTPD+CMR17 /Flags 4 /FontBBox [-33 -250 945 749] /Ascent 694 /CapHeight 683 /Descent -195 /ItalicAngle 0 /StemV 53 /XHeight 430 /CharSet (/A/D/F/P/a/b/c/colon/e/f/g/i/k/n/o/r/s/t/u) /FontFile 247 0 R >> endobj 249 0 obj << /Length1 1408 /Length2 6401 /Length3 0 /Length 7366 /Filter /FlateDecode >> stream xÚvTZÛ.ÝÝ!0€”ÔÐ-!áÒˆt 0Ä 0CŠ„Ò)!"]’Jw7‚tIR¢t ü£žïœÿ|÷®uïšµfö›ûçÙk8Xuôùí`6`UÁ/$”<ÐÒ"@ 0‡áþ£%à0{À!0¨ôÿ²?ð[#P:ekÊM ¨{º„DBâÒBÒ@ @”ú#ÌC lí±h ÔaP0œ€ãÌÍÇâàˆ@ÝòŸ#€Û– $%%Á÷; è ö€ØZCZÖG°+êF[k€>ÌFøü+·¬#á&-(ˆD"¬]á0‡û<|$áÐÃÁ^`;À¯v¬]Á¿ à8BàÔú0{ÒÚ @)\ ¶`(à µ{PwôAšm70ô³æ>À_£ ýî¯è_‰ ÐßÁÖ¶¶0W7k¨ê°‡¸€ÚªšoÀj÷ËÑÚCÅ[{YC\¬mP¿ ·¨*ê¬QýýÕÜÖↀ À!.¿:ü•5d¨Ý˜«+Š€üªOâ¶EMÝGð÷Z¡0$ÔïÏÙµ³ÿÕ‚§› !âî )ÿåRü£s#b@ PBRv€½m%7ðqÿ6 ýR£êðsƒ¹ìQ-€ ö`ÔÜÚ @xx‚üþ·áßÀb‹Ø€ P‚²£Ô`û?2jóo€)E¥‚¨gé—ò,tsñ„ÿ­@-LáèþÇUŠ  û-ÿ«[OcUèäß´ƒ½Á¶sÓ0[™P§êÐæóJEF$ÿƨÜ'ŽÇ¯xøýæé1n‹0’e˜’k]_¿/lJÑ8Ã{ó˜^2Ö;î©Mq¾žÀ£áCq’ô‘€Tv ÉYJ5ÿ·RlOw§ý ' þûîVÕ4í.ór¥ Šº §ÇO↔£ï­œ_VÏ®»¸ªåyWÆ.Åצ{qf˜%ÓMË*<#uöäê°ã^ͤ‚¼ÃÝÝ-Œå ñÛü44‹ÉWæäi¯&öúhšæÐ¼þ˜Fbìl4ž%§¼{ƒf.=4å„5$#(œ`1…» zl©“ùìÚ¹ZîXåë\ϲÐñ‡^܀˷iLÝ>È¡mö—à‹ê´”LÉÆfDÊÀÎc…›ª À-ž¡¦˜j +Ž^šà$«Gø+ô¡míN”jAçSºZvWµb#Ž×'ø?õ˜ðÈ2Åž¨gÅÏÔ$ôÊ-¾M:”ú¼q¨ÀLÅ‹|Àk¶V"2Iª9r»‚;ËË…9Ô¢F,ZÀ’Á_p[ÒÖÜ)MäÊ;§»Ñ~Ú»ÜBŸ[t»¿ Ó9óy™bt¿â³äáÖgãŽ×ijwëÌ¥¾šñï;v ×zmæï~£šŽÚôhÛ&lôàɹ&±Ÿ]jêÝ¥ÕÄPO²¦Ôñ5‹lú)}É;ML¿¦“ eH¸,ü Éõ÷ãñ·,%󯛤v¤+jÀè_.SyÁÆýo–M_%&!&³HˆSþmÓ³,ý‡ö@e™ùÇÌf¶¹Îð‹¨JSWµµÅ¡Tò W°[‚Q¯nà‡L:Òw‡lÙâÄA[5ÑÛK7§Œ™é®-Øy¸Ò»¹}®Ç2åÊ!<ôÒ­¸ÍPŸ¦ðW"nsЮóµ™]ÞûG—Î…£¿sCÂgçaƒ^›é ½»Òñùºø¢ØV™OìeÍ¡­cnò†ZÛY Ù!ë=©ûi¤âþ# wÜ6)eüQ(¸ª³þ6ŒHÏÙ­w®{dnÏØH +vEjõ¿(EàÂ!¯Ãêá+¼×qÕ-¸Û—a7ÌëŽ*ž÷¶â½oϽˆ–b;H®½ ôͳ8öèØ5_›±¿°Œv%| 3õ5&wJÎ$ó²`âwŒ;Ù^(Ÿ×@s&zYÐ÷»<ÔÅt¿és}55§…óp1_°½}Ìýåú…™y#e¤³!¾ÐBøu¥»ùu'†QG×¶5(a$…!N¨ŸƒØ =+aÊÚ7ÿÃFÁûð’sÅÌi]xÐ ki×­¡.˜Ûz‰&0û Æ¨y~ b‘¼ÂèÝxœyR¦ñÀ#ãqŽp ö ;µµ‘ øÖXà‘%‘Èí ‹Óç ÁŒ¬ eõjí>7ëg¯ñ†*dòÔA=œb•÷•„ßÔ™qi-UZ“èF@ÜrS¯’ùr=5Š8¶ÃCÙï“×V Ý@–”vaÚÚÊKð~ú8úóê5æWðèÆšz_­Ô5ÏOhÅó9‹³|1CåB¢Ž$’ùê½( Ý‘‘´‰²˜_B}ñ©©ÏÒ]¤MèYvËziÌk*ÖU© –vuÊâõ Ù5´.%o~’>þx|ùQö”FòîGÖZ]Ìã±(²¢@SÖ"f„ë‘:kMøHÔüIÔ´Äk¶íW£üÓß5ÙfR‚NÕL*ýq¬:Ž»ìN÷šfsuÃÃNtÿ¬y}:ÓÁù»a&' ¯$k+0'§Å#×ÙüD²ñ¼olhwE¯y¾yêj¸<½°`;>×äˆ%ç^þ¥ÐЭÎPƒþ´—;£•Y1i7~Bä¬kwpV–¿Ø|~ã¶nò)lŠºö‰i„ºY¡ëå:˜qÕy§ùŠž±dì³H‰Œàü·e4Ò1väBî.ñ•Y ÉÎç>ÑÞD*.ݽ!×¾ïÄn>¡Ä™´™ ~UJB¦+`g?¯vŠ`fˆûá|5Ûuá‹0ÙG®ˆ‹ñK[—>¯ï·&–hKTr‘Ä'‰“‘ÏÑÙœ¶Ÿ•ßýÞLÆÈüD (¤8JÎs.“AõÝýƒ4“+¡Û‚€ý£•ƒw¶rÍùàþcS“ Ùî-St´è)§-]kIUȵÑ'uôM*²×;ŠXy¯l·ä½Û ¤Ÿ?‹Ø”ÍÕ»œ ,Û',Ëq-.N”¾4ül”DÙš¬ÓD``»»k.¨6‹n^¯ÉÕÒルn—éëoç"—PÔ¯gõ•hã(+Ï÷…Ë2¾£øO hm|NFtŠò¯µûh6FàŽø+Ù÷/ó_–BÛ“KÊԇΙ&e¶q¨ìŸå¬ÖÑ­Ýq–»Z`T3®ÂRÇÅ…'xN‘cxùj{+å¡é†Mä{à$ÎŒ?8^Αó\…ç­(jn§ØV‚Å}ƒ+ÉJ'¿1 <®*¹WT$‚8ø13[¾sþОÒ÷G³f R-tQt;¡Äé,0pç¸øUä)pÑ›ŠÅ,¿¶X­V¾*§ª˜h<\°‘×@DF\~WÎvïìsRÆXÈkéÀì•þNÚE¤S±·¨YRÆö©êз¨4«EF󵄒ä6¯æ;·2OÜ,Øv¯é²ÚÆŒÎ7ãpS¤ÕÎ~¹íoh®£–“OãY÷M!œ÷¹Ós‡ªÁÜ)AÝÁÿw‡©.vÄšX}*L6ðÖ×–¸¾iAHáìiÿÔíkh¸…]à ŸYÂ)‡Â½,?Z˜EòÃuÚÆ)cí\+…‚§®õ"¯ü8x¶e]E6 ÜNMîƒùߎo© °»Éñº×ÒWßÏ,jžÍïäÈYX6nدN (ÀØÑïjýSx/M pqˆ»ËH¸# îë~_dç€IaÓ½ÏQ=sÓꋛ߷<É]Çöô÷Ç_c;ü¬”G¿quíf-иܩßÇQah6ÕãÄU(ou…n_¶ ±ÏúÌA¯€èS)çÙËDŠFÇ8ç¤_ñUžl"Ü ¬fÆ YýÚ€ûÙó,G…,L±L‰¯n‘`ÛýŒlHG,mï·L~暦RòÑ|ú=J{&Óå$‚ê×ܘ²}»{ê5x'v"ò^•SîyQ³fK(–/9| £°n·*l`zä0EkÏðu»€0E~Àƒ'AîgxÂíÅèÝ’¤@F²oÖ1ìØ­^D"6,©<öq»f6©’n„Í®¶V &Éc’#K-®`fÙÝ!ýÂqõUýVM'ÈI,?Ûª.üä±ÉÚëyþAûtÝø[ ÀÃy\ãÑ]Rä ¶½báR³¦Å.ýÍ|>ÞÌÄBaˆ»NïŠ%`Þ…‘ÛÔmH•Pw‰>“‹tçæò¢¾~;€lÿ¡~*-÷ˆM¢šNš(l«ç¹7þ¼D%Ú\Pq¼f²hÚÇ8ª²Qûo®·çIi6K›ï%ÝS{s§žÐ¸_Èë ¶BåéÍÑø¼V ïtç8I¡=M¬›âñùÎZxA塯9úuù güíÎM®5dØD· |"OÛmuäÏ\•ßõsQê¿;ß"™~“ã÷¹rÄi?\B7©aÊú̦}Ó²J Ѿá‚ÞkçÓEWîÛHÎÉñSöÝ¡zHÍð0³ynîèC«;yf“º•»W®ŠìÊ_o´ç˜Âk†væwK}¢IŸçÇ)>m;%; 8Ô¿DCY­§ýã™"áZ®¯U¹U±&Øôݬ4PË&ãõ-)n (©áôûS’’Ïsý:÷?ìóiÓ_}ü\Kêãr;ʦ-ì°HQ{n¤M¼Y‚Ð+ñÑ[ØnzŸpã³ Æ\TÍè Ãø¶Æìe:ñ¦… œëgrzÅUZ%¨˜¿²Y†ŸèôÌæð3g`˜’úiÛ=Éè°ª¡È¹¹uý–¨þéÎIÎ('¼ÈÝ;ÇŽJÖ..ìÀIÕ„™©ù8ù^¥»ûyK˼š¢J”æz§æ¤þ`ÿS†*ÓËOäÀ¥Î,ú&èØ%3½‚$ÛS÷ÙGNηF?^J8ƒ ”óÚ‘Ðçôï4èy®;£{7«‚S[Ù:L8Ì^•ä¿¿¼;ζTÑ‚W?¢TcÆäÁÒð©qÀa+Ô0^:à Ú{6S=ìeh 5ºá‡I„gÿq÷a¦â›Ó©õ9¥J¾Å†Ö¶gDôËØâ2vÑ Åž:’ÍhøRxØvi³¯Kï5@ß >er·dý?edPfŠíP^²W¤iýÈ)˜S¢Èå15qƒ7òY…ÌZot ¹Oœ.¼—"Ö9žÀFDö\¤ŒßÓ™+;5¤9ù±Ôʨsq°P6¯Ò%'ظ {nôKQBêÊ èGEHbz¾˜þ“ë fzþ£NO_ MÈ»#xœ†ˆ’éÉñFõ7eM­ìÕ^Vwȼï;;Þ•À¶Zó·W!l­¢Mïæ»v¥ÍÌ vBhãEŽK}Co®% «ÎÐŒý:¥öf;dp¾Ïgê‡ 'ÓŽ·‚ØäîU+-Ëp9ïEÊ›%¯F¼û–\ýÕo°ï‰ÀU#®ašœå‹-ÜÉj‘êªõ×±MؑȹˆgÀc¦~Ë|Ôc„âÆK $½¦W¢rٙØ-’5›ws&Âo|ï%­Ýr´>ŠÍ£lûÜáêl›úZÇú²ª&êÑ`|pYXTUÂÊ{V|N×À@z\çßcwAåQårbÐܖ¡.Ð5Ãÿû-a/§–KSNÕO:4Ë»ño Ì.ßxÈêiãJBçXXüm+ÔæŠîë™Ónq9à«eeÞ´$‹5}Í.ž'í>,mý²4дÍK¯B³˜´÷Jì€#?¡~NPn]¥½C Œwœ³\T¯Ö[[ÇÔ¤D4eëÚÚVÑýtÖ—ö9«Àô~g⫚é£ãæ£5·¡ a9ì—eN/ö.SîN¬¡õÇÙ1e¦xã«lvQ©ïÊ&ö½ðÊ sP,¥§ÛQÝ»]gêmœé„ãâ;~±ï!Å=ˆvpí’ ЫñÓ“‘‹÷¥<'¹/d¬4Ýö‡+˜ê7£#ÀxÞŸ…ÏZwŽF[ ÜfH j>ÈÏsƒãÞìà\¹d[´sÁnrg~%­'Ùa(/÷9׿¡OáDAËö:Ü<ÄùûŸää ºçN×rÁ*ZU'õ v²F»¥¹5È(ï´öªÖW­º5­ã©dœøN…‘Ïʇ[VÝøÞD¨yåÓçNqÙ]Ù7Euk _C| †$°u¬BÒÆ8ê)úzc8™•ýduÓå1qs_×Jt¤Ùk±ÍyƒŒò zÏËK#‚]GGîÒ뎕ÍiPÚ]Ê¢#1½yŽö©•ôÁXΫéüM§ÙT%á~4ܾ÷碟m«‹&»¿×88è1Çæ|¹%Æxô¶â“¤ñ«)½Ç•w߬O‰1²@Ü”Ew6µÁäI»Õ¯ZÛÓý¯?áT>K ®e¼°ÙF39~ÖÙ}5ü„¤±—I°¥^ÿØ%zÀÙ !þ<Ãd™¹ýœ¼ÁRWôìÕ¿{ý…Œ¶É˜ü“À¯òá{öûò3þÃor›ãŸìbÔ<þqŸp}ÇÓ'>L?³ß?õÈ¥,›<{ú ᨠX Ó}‚4?®PˆÃ«üvÔÈr˜·@_jÞc™ì2lRÄsÁº8Q¯B$•Zß¾©Ó¸¬æpÖ‚c…›ýQGÈïc%4;"f*KuÞÏÆ e¸ÙçÅÚ·ìMÅC5/ç~ãtƒ¸Â¦3õ¤;$ߪô¸JPßÓ¾åɾ?%÷ŠsÁ‘ÂÕº~õZ²g»êx%ášØtü«c¡^àÄ „MÔ(f‰*Î5· «Ãs2áL=ø›ÒéÊ.­Ž„4ÍÕGO•ϺÕÖ–F‚‹&¬^´‰ÐÊå³D¸ŒÅ] žÊŒï^R€ÇO ]¾pŸFõãñ2T&·ŸOˆ,«}îà _,F3™Ëb„'‰…ΔâäLж:=Iq,6Ô°*‰Pj/¿¤d›Ÿ§íuW”™œ ™¨¾Õ°nŸÎ_–aw{nLÂG´vÀ™wñŸ…·æ8ŸrL¢¿ÂŽ—Ø/>åNZ©¨HÛ½|4žØÍâÁ~Žƒ‹¿…åŽX¬]6v¹~i¥^­Ó+Ú9ì„@ü\òïoûÆ‚ßÉ$Iåuú÷ñž³ S†:YwZ-?y䀵Ðù6"½¨½tãM&V*mZ÷ü=·B¾†ð£lÍ!ó;ÍÈÖï×íçÉI"Dµ–ŠÔÅrs%¤zĪq)ÛÏ{.òû ädäèht zˆ»u”jÂí^>Q%¯ÈL³ãÕÑVÌ^áÀ½åºóŠhª˜2¦aÙºp÷öIèC.í²Nv˜QãD|…ÿ~gÌR¿EKEÒü4&‹vU_¡ŒZ_m% E`…}xBFvóð‡nðÁ±±P?ÃÌP»‚¡C>âƒmÅ'žK0û»za¸­¤8'Ü—Gñjs€¸T€§£ëx×L=õñ‘BâŸàADÍ(Œ—|«âª€<=hб­ŒïU¼®H}«V(­²CUþhÂnl!GþåY+ïÍú7wó®ºeZ¥ðp­Öwk™¥è²âüU?® 1"gçž$Õ´M¬«`R7N”X$MëƒÞû¤†Ï½¥#Ш_Uñ‹±*ˆÔØ´‘I9&øó|W endstream endobj 250 0 obj << /Type /FontDescriptor /FontName /TOGVNE+CMR5 /Flags 4 /FontBBox [-10 -250 1304 750] /Ascent 694 /CapHeight 680 /Descent -194 /ItalicAngle 0 /StemV 89 /XHeight 431 /CharSet (/one/plus/three/two) /FontFile 249 0 R >> endobj 251 0 obj << /Length1 1373 /Length2 6096 /Length3 0 /Length 7038 /Filter /FlateDecode >> stream xÚwTlß7Ò #FÇèî’nPBcÀ6F7‚„4‚ !ˆtJ‰„J7H§Ò! !ñNïûyž÷~¾ïœï;;g»þ×ïw3 ›‘© Š#ª‰€£E„@²5}I$&‰’f0”ô/- Њô‚!à²ÿË®†„‚Q:…qÓGÀ:Þn1€ˆ¤¬ˆ”,dþåˆ@ÊÔÁ>0G€¾@‡z‘Õ~H˜³ Så_G„ "##%ð' âE `8@Œrºc*BÀnSEùý#¼ å!+,ìëë+v÷B y¾0” ÀêEú@¿Ç€Ý¡"Ì\`^©MN(_0 À(Ü`(Ü à w„"˜ÚSm=€¡þ—³Þ_€¿Wùwº¿£'‚Áÿƒ!„»îƒ;œ`nP€¡¦ž €áŽ¿Án^L<Ø s;`þ4hªÀ˜ùþžÎ ‚„y ¼„¼`n¿'þ³d ¸£ÂÝ Gy‘üîO†„B0[÷þs­®p„/<௳ îèô{Goas8ÌÓª­þ·FEò3@RÒ2¨'І¸ÿNnæçýcù­Æôàð8aF€Áœ ˜’/°€BzCƒþ·áŸ‰ˆÀA Î08ɲcÔP§¿dÌÍ#ah€5<è÷çß'[ ¶p7¿ÿ¸ÿ¹\áûf:Væüþ·IUŠ‚‚¢ €ˆˆŒ@ súg#0ìï.@ÿ‰Õ†;!25‹ÙÒ¿öùûöyþ&/àŸ¹ ÄB<ÿ¸ HÁ|‰üÃüOÈÿ Ý¿³ü?þßýhz»¹ý±òü6ÿV°;ÌÍïo;¯Þ( öõÀÿÛÕú]õ¡Ž0o÷ÿ¶j£À¨ÀÝþ½D˜—& u4‚¡ .Aå/½ùo‚¹ÁàP#„ì÷ƒþˆaÄóhxaðøÇÅæŸ%5à„ãov‰JHÀH$ØsÅI ‚¡¡#ýÁa!8… `Æ 8!$¿ïS\ Œy–~+ÿȘ:Â(_Äù… ÞH$†f€€éâ_òNC¡h(„dn‘‹|TÙvV£rÛWpmDa¸fùŒW0`ùÎû‚œ0·:'|ùS%½ÿ=åâW žåyÖ«€í–ÂÇ­©Æo^Ú%›Œ¯½%™£ï-ÚV©ï¾K|GÐLy=ðÊ3Ð"Ì·»C˜ïé-MnTHsæûQ ]ß]¶0=½f¼^-©KzY6!˜`oVò Xà;ÅÈN€¼KÄG}€¦øtòs’:oô†U'™Ÿ$h'A¬8ÀjU4ñ|Ê©ÂLÔ«“‰“ÉŠñ.î õÐ8W€êF†ÃLÀëâäPæý»áÏîi"n<þk&gÈ͹€£²+64M§,ülÊg¨ôA¦-teîójæq uÞY<ëøÁëÇø¿J Î|~ÎŒÒXz^PÓÍi¤ž÷j<@EŠƒÉ{×H6Ì’z˜*ÖªÑr6Y¶¿wW†·ÓêÍ”£Ÿ­Š%I™O¥Ç˜= OC« šSм³ÙãAQ|¥Ò`ñjÉîo0”Ü(9Ì7£!7Ýq3¦ÖÃTX ~(rê'Q²ÔÁíÒâçDRëEE9/$6Z#QÕ QiqJ :ƒöuÍÜ®q=.g”çm™nœ¾ÌáXN|\2~ªe±¶Z/¢ ÌS°Åß´J²§*ÜKæ[Ç –"Ý`A‘Oôt>²>{ê{Ô\€SòäÊ<àA.\hÀ­Ýa”_Yòà•±-³ý›äR¼}¶1‚Tú“®Ï÷}7eÖëMä¢Q•Ù³Œ9©ü¶ÎÉ5[4VŸhû£®É®^¾e©Ææa¼9MÒqU}à'_T‚{}Ñ= ï…·ÙÁ悱²ₘöYoCâLQÙZ¹O¤*nMè¶1Jň¶;åVª½˜…´èÜE¼•Â#¦Äc¹2l·¿Ï?«v¾Ñ ]ôpߢ!l6§®¦piΟ¬Ëëbâô-¶©Öq$”æï4Í×P(é¼{o´HN.(MTOçi X‹GÄPå]ØxJ´!Ÿð†wèq“¤ôDºŽ#~DÞçá"Hnïm„à=¡K’ø©Õ0BNS·¨ ÉD-ë»î… ŽÓÉ£¶“½ÌEÿ·Mãc,‹€œíK—¯ñ^ü«|©Læ‚9Õ¬+6¯xît)¨[;ò*_.ñP¡'¼¯çRbõç2UÎ% 8_3ŠgºVR¸”¯¤¼SòŽ×ª²¿H7Ó§””>*ÙùgÈ·ˆêýÉ ÿ^5™Z踓݋í|ÚôµÇlQ_¦ŸtzðO`ö‹ÇQcô´v»îŸÔ¥{›c›5ýõ.q¾–Þv]_§$ß[Ó7¦(4’$ZôÚÞyPÞ,ªl#©líÞâ}"¬k’ÖUØ[Æ/Ã-ˆuÀ¶‹¼i™nDdH´>‰™ípïG¯+fÜšzÖ`˜{AEWÓÉrŸÍúkøÜl>^¢ýy¿žÓÀ Ï&IÄâìqôÁ¼TÞt»>·V48Í˳ÚmâÞXÊmÇ¿`žÐUÞ’|Ë9]\²—TiäªÔ=ì÷Öï&F<ª•FÿçÒòÁ`Ч‚š'à€!£YÙq®«¿)ø¨_EÄX:\E0p%ÖAÄÞ¿²ö !)cáÕ¥• e¡P/r¿ôV~ð·^¯Ž,ö7[ ¶&~YYY\È>u¥‹^¶éïV…¿¤þºÂ—LškvîCÃŒëÌþ‰DùÓ9)'ƒjägVߦü°´ÿYwþéq¿H÷ARŽÀô’K釮=Oç¶Õœ4rÂ$.4mŸŒÅùeÀ]ï 91Œ óts]ï4ª)V•y£vƒ—!9_Þ"~ dü|* “GˆM5jH¤»3¹«ÇølÏçí=xZʼnĨãø;’ i8ìüê=ÍGH=y[B~Éu÷:od¾¯-t$íÑ…ˆž>’gv-™ùþÛV‡sOzm§óvJ/1Ã1írŽ´ö ÝQˆÍqÎŽ!ëenIôdRPYÆÖ)ÝÒ/™Ü;ê<›ƒœI™ý‚g^Ц¨\ß]“ÇÒRKlu#5ˆd¯”FTÚ­`ÕBƒ"#Ö³®ƒ{÷û† 9Të#t,ÉÒçÑEé°/yi-i;Ç—ÎÅ dZiiÉ’iR×”"™ò&ìÓ ÜNðJAÑ3(oSïúKËžÀ01ùÓ/ÒÏÕ®|«bCFCE£@7{‹3ÀZ«ªlR…»Ì×Ú}Q½®j—»ûÒ5áÊŠÆA,QšÖx[4G¥þGÜù\¦ï°øÌ8Yêg3X^b%†ƒíMƵ¦^8îú¤Ù±ÎÚ°,Xæ–žª®¶žÔÚѼ“h,é†[g®pý0ߺj¼«<ø’lð¶â=Ò<ð¡ÖδµÐ~½Rmcº·Ç®XE°îC’çELâùÀ#‡`ÔÈöF"ð7i8‹Š lª‚èŽt-gò·£ÅO—AjàG_^m{õK«ôl¼ÍÍüNþuxëÍMÁqÁÉm½†µï·ê‡«?àÀH÷—ö4-j€=hÜÛøv·*søìÇô ?˜ï‘ô¦évTj ôßõ )s×yù(Á´T2ºÿÊQŇFžéÑjU{x¾ %Þ‹]Ù :Õ[×îe«Ïv ìH y%EUahÿîEwIÞEUß9´¶àZïÛDõyha‚Â*l(6†Æ¶á»ÈÝ­™s´œî¦MDbóØð mÓ® ð=‡=3³ÿºù˜°oC“·Ú <ã/¸°/—^ú¬,÷ÁѪ ä¹çöòmtÞ‘%7ãê³ vò*'®O§ç‡&U^¹œ`äGkç[2¶YÒð¤¢Å£K2ge|çš\§P?ãÊ=IŸãŠÄ„$jóÁ󆶜òqαüÊÐýèc¼Û=¯$[²Yײ’úžj=¥ÕÎl²ÿèäêy¤ŒjÆ·âÊåN~¯ðH¬8ò“žv‰óóDÐÐʾž«R•wÕØßòƒ¨.K~ð~§—…1õ@\¬dÝ:6«'ÂoÉkfK}Âæ—>ªî°)Øî²ªÏyаq½_DÅnËÿP…ÇOý²g˜YÒ·Xµ¦Öåaøœ´–šBs +Ó­n;œ'ÏÂðžŸøh=’u·o ï±µUðtxZÉ·¨ö,¥³#‡&I™¤0ÕSÍ׌Z‰Rà=†. ‚Ó‹)¿¶QwÈÞãÆüÔñ(ŠÒ[r¼«}ßFêsV‚‰oÈ´éÝ}žý¸0Üjg-@B!Ë“TÛn]Þ/Õ‡5)ïÛœäZד,ž$Ä¢Ò'Vé6ÌõáÖªvt}¢v¸ äÊpïgJztê–æ´C×ñŸÐÍXL ÞAéîé’w'Ñ*dwÑñ­~ñi‰ŸnÇò0Œ>™jBLî[ó=ðËl­Áz+A`ü«ÛFR¥ý~Óí±>,®%fóC3f&üÀn)¬½K"ÖºE¶ØÚyF§³M €³Öò*V®Qgœ¨’)&°ÑXóõú*³pÇ€ Õ#«È¨a8ð@Gg_ÿ¦(Å*1µlóFõž V°_Û“ÇÔГ‰ ì¯ù‘1«ÓÕŽ»dTþÂ[E+bE«è’‹ø:yîê`=ïæä®.ªTùfvÖØt{° ÍÞØ}ìðLùTëzJûéÝg2U2fòï>å <×ÝÂ}Õ—'Co­ðÌèB1‚9B‚ÜÄÂųWFÿs´Xæ“KUw˜Ÿ'w°)v…Æ zkjÇsȃZæïQ•ŠBMÑ;êØáÒ,/Ëo#v²6>,¼íÜlÚÈ ""èð… XäÓVù?ÇɈϑ›æ7‰AEY ß?üª0Lj3áýªU5°{÷ÈœGͧ×WéÞ ñ#ÔM0–z^#µ{1ÑzñDÃ(źMU>)œPY ÚÎ[5οÚДE‘G>>PÛŽOj:-%O’Ô¾ç\ƒÐ˜æ~\8 ¯sX¿ýÑÆ­rH/Å‚³}é L^¦äºe‘}½¬NìO.ÉÁ¿°É(ƒ įØ{? «§§æqö“p3;|Üü+ ½—ÔêÝ«q,Y|(÷ã‰Gœ¥³ ^’CqžÇé/&?›g“I¢Uè~ïHg…n›k-†W 2æ¢K%ëŸ#èë[Ôj®^±%MÝ#ýÒ…ðHDrŸÏãišn÷ó“™¿ë\äŒÉÐK5r”Õ} èÑ;9ÉY4«íTjPõ§û1c2>Ü’_hL[ç_^:cKMãWf¶}pjg½Ýš­ã7síD0ÈT=[¥Xé·´9ñI¢Äñ U‘ K[ïyïüËÉVé‘$ïMúy™ß›ÁS‰Â8gIYÑܸì˜=Í„6*àwï) û½ª]¬IÕ tˆï)ÏRut6WùÃì£áðÜpÚ8ƒW'£µ /ŠFUúTÉ\ù¹pÞ+÷sŽ?‹özÝm'×J˜UÑDûÄó„Ç®ôª9Wv·MhN–w/œžÅzœ˜Y ÏáÕ-dpðŠ °ó“Ñœ{OÐûNáïêU)vóò¼‘f63Vèí{dHDBtá~ÞøÇA°ð¹Ïá»0u1WóôcëΉ~fíòºé,ŒŒƒ¸D†¤»âÀ•Çœø4÷¸/»kÕ¨„©®ã’ñnÅ_vM ú(´ìmF簪ŔåäøÙK> 7âk^?~Š›Š\î”&Ò Ä!i"ë­†¦‡ªlŽ*„D’Û•¶–@çNÈšYþœå¼ÆRG¼EýÑ®–‡BöÈ»¬ ¦”Óóù¬Þü¼».ÇáⲨ+õCT®Zm©±0üW­(™¯õÓêÄdöIÖë?õr>Ža‡÷±V‘1|R4ÕÊ3Ýor/âÇÒü}BÓe$µyµÙ‰9Ù’?N ¿>#Ý~‚Há1*ô3Ùêj Š07}iON!ÏzNËÀô$WëÕX´?ùœ;†A­ØŸ÷¸ÈÂÙä‘úv©5‡njãsÏ¿S„2÷ãÓÍPp¼êMJ¬'OSôà×_>ÙúÞéák÷µ:q§t3 ½NOßo«8|œÔì\Ün%óT64*xÆ“âÿä«‚«g¸ºâ@¨S„â[Îì2·¬ïô²­8ëÀ¶$ƒ7ò]oN¥1÷­ôX«.6…=ß›þëó/$ý9Á Å£jcb‘Öí!é+ìÅGÚçf†³Æd$Æ7t¬/ÒüyŠ5èø:)vTp¯<^‰ˆ!cq! ‰´Í\²Ø8ñAŠ™ÝM4› X¹y'FgؾpµŸkט(¿=9©¾ÃO\rƒ½ìB·Ì['ÆB3N#ÿy &´uà{Y¶fr„³HT'¬éê•Byå^ù$‹.¢"ו3·º¤ƒO.Ö`l8Àa©IÊE@Ë\zÊ1ñ«~ƒŠW<<¨Ði¥ÔÏÐÏqÄ9<ɧ>}ÎÚXï­§Ä{œǹgû'¿ÙÑå©cÔ€£æL×|Ï}3uÚsÃn•B§Ò\"ÔÞ‡î_ €ŒQI0,Îø épö@vç†Ïµ«H„kËgÕi•ñ±Î¬p­û»¬¿¤hÊVoÓ‰Y¢Jú9abVïµ:üBÙrc£Ùª=]IívÉþ•o-ÏbÖ­ DÎ'˜ñް‡á«l½›ý,bɧµˆ"µØµa±Í{™ž‹Ý^¬ô6WÿÎ*8†ò„€åÌ{mÈÐ;ªJ&–i>ÿÛææeùë éñ-½`î„G ? ÷®{ðž+y˜^…PZp¤vyË*¾s²%g·SÍEÀÓØ| Ú3IGý„Õ$^Ž"”汞JýQ~©Äe!7Å2º}{¶ª²€D5>J²uàç.âÁ‡CÏ+%Ò¬<MHEÕ†‡_dq ºuðh;ž߀ޤTFŸ¬” “§J‚4ÄóûýU*7–É-Ÿ"‡¾í§ïÍyXµžz(ôä!B>u|çà.;©÷Ö§ÚH4«]ýñ!½Ï:ÜùH;àƒ£žŠAJOqîèN´°¦™J³­ƒwî´OWXy‘çRj’µ˜ü¨¸¾ªY¸iiðκµriJ#n³P„³Q­Šèiúš­YAúô5VîÕÂbÊ w7¡cÝf™Ä£ÌwµSY~Þ8UQSèÅ!×6ïÛ÷s8[´xœˆ:áð&*î,p>G5µK:­ýù"{öÝ '¹2­üx+åÚ’ÔŽ1%ü_Vó§÷¼¹Üç²åêõtðhE¾1²ô™ìœÅËmy²ÓZö÷YDböýÂ÷ÙAõo–g‘ogÓ‰ܾ3,Ÿæ¥¶`U._C÷@襼…ÑÖ£x™ùÞ VÆîQrwìû‚7?´…ÞφæÄÒ¤ÄôTo HWÀ"I¸]¶ú¦:Xh@wÉŒ#ѱ83»”Ò×E®*Ò4Å<;;ËA ªx3Qîòö=ÚaŠÃ—Í@ Ô~Q8 5¨ô4~l–Fk+šµm{lv»(‚¡³ƒV?mxnÎnç‡Nl:ì¹"­ý´þVËÚtÒÛéÙ½ /¾šTŠnÆãkΖM™þï²å³£×úq£)mF[6Ä’)C¡Fªw¬?YI—ÉXȪõl]èŒ(72º)ï-˜ÔO…ÉÕRï¹Tµ,æ„^|¸Å [nZ5§Dñlqq|¹½œ”M<©K–x²r¿[`L —ä4oR(¸ zÍz2óë»0ÃÿÖÓŽ± endstream endobj 252 0 obj << /Type /FontDescriptor /FontName /XTJZVU+CMR6 /Flags 4 /FontBBox [-20 -250 1193 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 83 /XHeight 431 /CharSet (/one/two) /FontFile 251 0 R >> endobj 253 0 obj << /Length1 1554 /Length2 7689 /Length3 0 /Length 8725 /Filter /FlateDecode >> stream xÚvTlû7%1:¤cÒ°‘‚t·t×€#6ØF7(%)­HJ+¢4Ò! ©„„´„’JRÿ©Ïû<ÿçý¾s¾ïìœí¾~W_÷ïºÏ¸né *:! j8Z,’*ëJA Q!HÀÅe C{@ÿ .S(CÀ¥ÿ—^ … 1˜ 1ÓEÀZ>@°(,! –”€" Ô Hi  ÄæÔj!àP€Kင¹¸¢1Yþsò8òÁRR’¿ÝŠžP$ÌêBЮPOLFGˆÐტþ‚GÆö’öóó‚x¢„H9^  í 4„¢ H_¨ðW»@=ˆ'ôwcB. ±+ õ6B8£ý H(xÀ¡pÆÁîE1¹Fš:À{^Pøc?À¿F ÿ÷—÷¯@0øogˆ£#ÂÓ €Á]€Î0(𞚎Ú-„À~BªòÉã“ ªü±k6­T~@ÈN¢hIå²HÒÙTàÂscT''ƒ%= î1ÕðûÛAJ[™ZtƒÊK‹'­}JãD?ubÙ¨‡N¯IÊÀRï¼’À½µá²òc§ƒ¸i. [=—ùlãR *¬Ú G|cótœ?F±4ÍRIÕðš½ã♤òi]ÎÍU‰¸p-Ž[Œ²²ÇÜélȇs¾lrslêG ™Õ·¢…IÙ HÕÈtëBûœ…=Y™ø ayòØoÁ*ºòÚáâÔr$}ÅDNiZ¶Uõ˜ðÆl"m‹›ttŒø˜ˆ¾×óǺ»VLà¸ÝóÛjû佃Ctà~[ mÃN>Ã~7ÑòEczðQ²)q&߈|F=~˜c0Áçôu³>D{ê^êåã»ê×]°;®PÔi{9ìçýÁ1^µÂÔ3jߦw'ÃõIL÷ÖËigR:½`î©MönûSŸí;ŸÔw©V™ð"÷¾Ö›»)é9?ìšïlŠÒ4N˜Áo)ý±ãÜÿBñ‚tÐGʼn&zF4É€ð$K‰ÁÒÈ9ÀGŒd+¯Ü¿{¹´eeé½Þ™ÌU~x†éÃj¡ùŠ{†$Ý„æ“f9.¦‹­‰0À ÷üºqÎ5oEèMNM®ÑkïåGúšµ‚ºTic[¦þî£dÝþ}; ‹­“ó¹Ô–KZ®áû/Vçd]çj–F‡ñ¥):8RÓ¾-‹4 h»õ%Ûyá.vwa (mpëÆ±£þK¥À >Æ"g,Ù¥Ó'pü×õÇÜA=à N£*¡æÈö •ê{–)媃Bc)Ÿd·Óx¸lËÛ„EL;›èx›ÚŸ~ýÐ×ÿ™gé`×s¿…Á¹…à³a’ˆÞ~1®ÑXÇóHûä³u’ΣwÌ‘¤Ú3º,ž¯ØFJ^•ä\ÌñÛ~išöU¬m T‡®ÔýÙ*}™wvÍ5ýqÍêòŸ üœ’óŸSî®ìØ•~´˯pÂöKÉÍLoÉŒo:îÑ{1ÁâHh÷·Ö‰7Å„ò†qk;YòI*µÞPï®Ìnʧ‰UÌ„µ‚…å„þª»{@ÎãOÙ‰´)E|¢ˆÖ•êìH‹I~P¿žÐÏËúð>¹±ØXnÙ‚ˆÆ~M­s怳ÍpŒ2;Ê YS  & ý)«z1çV½#vsn}e·ô9uE(?@Ê‚“Áá¼²áãèxFö>yþÇmf —Îä=ü²•”û×èõ¡á\›4Ñ/WÄ9&!ãˆóB…¢C+2õÿâq©×B`^e#‚ó‚ÓPöwÀ9j§>"J;›¼÷ÐŒ "ã »ØyçQfF»ÑƒÔR‰Û悌ûȵ¸W£§rŸ«ÈÙÄnª÷É#K¬ƒ%ž”“å èðBýºKéS?õd+ñ#'•R7çó Dtùžd-ߪ{. òaаö+²Ì»…y‹šÙ*aUp?]๤¦·(Áp…ƒ¦Íz ·’Vä±|¨Î°æzI.qv²,ûØj2b“a©ðºµ©w²³mMsýÙ¼ÛiAõ¨—²[žÖ‘‘>”¶ê®zl3ø çÛË<ÌY)(R¼7?%n¦Í2¿Âsø©ÁMÅ÷•°·²´Ob]þóú6¼C± 9(7¯&‡MàM86è‰êIìŽÐ´¡¿§žC‹ûÒ –õ“fQîE%nGþüÆŠµ*V·ç-”®dÓš Ü$œ7Úæ¤=…„¢…½³¸*½<€JáÂL¤ÖÎ_Ö}´Y³ÚÈ´ó×»¦'úúÛx⤋“ìnò±#÷N3;îZßÙ÷ Ý[·’fãWW—>z­ÆÏ®GŸ` ÛŽ±ÌödÈRD+å{ÎóËÖTšöRkà›è/‹~>Ç)ðò̱¿)i7q’ÜløØÎ0`ejž·Ÿ!TŠn{©ö®=9ÕÐlZP\GïÅus ê4íøºî²Aè¤l’þоʘÖç#Jc¯~‹·^Zk'$ ±vŽ‹O¥÷–°ÜÒ¾¬•/IOýŽVåÄQl Y‹KK™›¼ºÅã>Yrá°ÙÇ1ó®ÏÝ·l*O]{þ¸k>1Q Œûtk?€=/Žpûµÿjÿ€uÎtPÚHzX@Æfe†Íxù½ÓRÆy?Uè#/BÓóÃó`àËà MK§ç›¹ úzDû†“©§BuðþCÖ¶hºb¾¯åŒíOüh/)(I´óÉÇn}/š"Uom‹žâzûâe ©UÛ±˜+fª…œ<7S °Å¡I0“›œ ¼—á½WVæ]UœÀÄž|p…Ô üÄÆY&‡Ú XÜ=.Æ¿ª±P(?k(ÿY±EѤٖ4ƒ#G=pc3ò5b\¹na'ŠMQD¶SéL~¯¸µ‹Ý0–²Ðåb7(ÚpþÃ[H5G eKÜ…É›Ç; ‹E-… @ó:¯péq&ç®uÆÀ¡Û·Ótœ,GBŽD¢ÍŸP m‹•%E í½±åá+g©¥R™ Þ·”¯Ý½/y?É |€ý‚„TEF <äfs·L¨ÕN}šQ°€ÿõ‘Ë7Æ|y}»ë}ô8¢päP;>#E'žÛ±2þ¸‘ëx‘èóRLÁCOz#|9š.Á§ 3Á©I$wÃFW­ Á¸ësE3ìõ ˆ†Qø©+óA«ÐdŸéô‚ÿŸ(õB~Ög^Csr–¦Ò³"©T Ø7ó8ö׫ä~¸:AyŽXÑjáz/°°VܹŸ¼M(0ˆŸLE7Ÿ0Ÿ‰0}4žƒ‡î íVEïw 1eWÚõ±RÐ/¥4]¹ñ¼P»öÀ×îðå]0[`‰ž± ¹`…~5Ršy~k$ëûjñN+ÿèÚB4if,»iö‹Šdó ­ÊÅ›³êCŽõ—ÇóÕs]}ÐÈ«^9üPÕ:¢w¶úœ†E2óñƒ„Q†½q¤cô0„Ò£\Ùà‚8'®ˆÃMÓž'íflGûõ4†>mwšmê$E8¢_tÄ<øKÒ¬7©Ò¾¯)θ—73¾oòNZñ›¤–ÂÌšüêÝÍoëlùÞñ8¥ttúKXïÐ2Ç7]±×ê»ûGV |_J>$WuÀŠìÛh±§‘e<–ëyr–EsÐ7KsZÌqó«•¡b펜Hï"~á½)yrvïEò÷*_ïEÇû¸ãŠÙ…°Í÷çqT`•ØëuÄþéUDR¼±S^>«$³*[å²­} ,üÒvk÷VÌd½ÖЋ RB1ý†ÅCå`7‚Òoð,Úö?ÏÆhÃ+#é_L‡ŽTú¼‰×zåæ§2F–:ж5“Ô¹Ææ©ÿÐá®±uÙF·£,œ@ÛoGø êËûµ[Ô$m÷£Á.=.öÀÆßn4ød5œ¯š:!Œ›íªT9£Ë¢ï©t,•·#¾’-SŒ&§Ðó–qø\A‹·– ¶ødŠ(<ñûB˜ð¯YCâÊ„YÖ5‚ÉžfØH6d­Á·\fltÉRHÄl;†²rØ¿ÀCèÚ7i.~¤®ÏàØ·¬™hØÍãL‰]G&—_Íø"ÇO`¡MÀ¤lIó€«2EÃëõaìÇ¢ÿÁɵÆ=:î÷uÎqâbæ)W+*äj_OæS÷÷x®rù“Q×›-ûl¾ÕÁé4Î*ÈŒ•„ŒˆÖß3 \Å9È®"Nß'Ñ6•;&æÆA®H} ï†Fêng¦›ù3¢&ÐÒ< ·G>{q·êISKÑaë:ª_¯|£†¦/›îȇ“+ŒË|¡¼ö”¯Øï¹ÿxµ»ér¢Ãb/‹®SrÊÖÓÿM×¾}Ö\`vðXú˜ˆd^Ï&ºüêÓ9>™²ÑA‘—ÃôÐDÇÀµõÀXPìY½ˆx©Øø¶–á¾²Ïm¢Ka•DŽhûhZðÐy«Öùý/«‚ˆ§ôOïZg*ÛlÀ&û…¾ýzÔf°­/1À‡ (³Â ƒðïb¯<« "¸o_³{ Pk¦¼0ôÃ=NÄBc™"=Es[k¶÷x2-ë^½œ6)3¿Úü¡1—ö§Ý¢ëfsäds_Í,odø82PO&Ñ”¦l?çÕ?.Èí#·¢NždîÆ'ÜUgUŸ.ûÆ}ÙÎ"ýº¯¢Øéæ­yÌq3-zÅŸw†•Ò‹¦2uËz·“mܵ»ùh$ËIƒ»pAJDäc9¯ÛŽç«üÚ®èJØ81N+h&tÿ:s¥¢A¶¯kÚïDh<Õ×m¸"˜Éî¯Y\p–âó-s*gKYìèRÃO˜ÍÚ9°Ú=h·Ÿ,‹Nùvž&Ü ÊÜa¢eÏÙ†Mþ˜u\Ü¡×pwYÉþ6/+<´¢BŠpÂâ¼²å³K:Ûª~è:o½@»ÏIçyÛÒU/‚à.AmG¢º„’|[_¿0Õ5ÔöÍíRÜ‹#þ8»Š±,²YÅ6ì.Ò®=ã0òï@Š^µZûï‘-Õ^À9/j2ÖD©F´¤Âq¾,€`æQæÔó¢97¿5À«åùìˆøñ0z¥ÈsdnÇchÓǤÜMß#(Ü7¤$Ž"fÈ}¥î8³1É„híAÓ2D_Š+¾ÇbN¤ç¯á_¨Þ$Hà.ŸìË++8Ôß$ò7çC‡%VKÂ'¤ t6 ox@ôÕìU’lb Bòn®ZþH}Íû<ùŽWd©U ™ß—¦>ž*ö7V·«|ФùpŸ"ûì ŽÅËf—׳#••à(—)¦“û¹#.§cðוªs2¯G« ć³1«LüT¯1ÿq®ÇžNÎ «‰¥¥líEË6Kr–ƒˆ«(SpVH4¯z¸¤´_f4ð‰í òQg3¯qê.3U•^y®:qÔ¦•sRð Ó’ȧ‹êXR¦=?ÑXë/9ÖæykŠOÂÄžØÛ¼ÜÍ Nó^‹šwð&ç]>Èwj“À’TkqWÞ^ÆÏh‰;=Ù ‡æª÷¼ŠûÉåYÙζ‚åiÌ´Ô¹”§×?¶¬`ÝÆ…û– ªl·#×CÍi~|ÇQé{·sII><߀õµ¥Þ[$‘am2<¿4İ-¼H Hºñ%‡În<7áããÍîMAò BÕâcw·±íOžpwöGLÅËÜN„EBŸ¯9V­~ uËÑ¥–éi1_±¬§âõ"˘ÙXÂ’ëÛù¸‘#ÅEÚ­ò{ h~îœõM _:E­0¨…¹DÊÅêÉÛ"Ñž)áeÇ/b³Ó•»©XÚ‹/mkÈWDö¹”8+uv8ïðl£Òê¿3s,µ¸>Éx¯wû»7%ÞÈ'±ìãÎB@¹©…om÷[üf:#`$ƒ:’˜_>¹ªBbð³Ü**èàvcu…©y %Éçóןý©44øU¸|-CÍî%Ê›Šö‰âê«=˜ˆÈ•Ç&(X±“°¿©Gz>‡æÆfmgÍL^‰ê°1J&oºä>í¯ÍjÝ6ij7оóŠÍúô`o.#Üäz\ð .S}}‡¦ði@ÔÌ[€Tìu«þÒÙŽJt³í‹~°Î"xø¾õN,Šåv5‡ýC]ìÀD!¶–¡ÕÂÍù—X5wšœ}IªgG—q¸æòJîEL(›>£Ө˜· ãïôÒ 1, ¾öôj×b.´xp )B‘,äwãÕóXè´(éÛYEj˜á)Qõ¸8oíÚ™C™(Ë“v¬ü‡çq“…ñp¼Ö©¾0â&¹' þï¨fú×}Ƈ¼l{Ûr8|üÆeÄÖ(nxò…Tz½è~ —ôÆù¨@5ŠŠ¾ü9’xur†…lgH0ì1¡¤ ³óŒ³|m?¬ÆA¶´Þ‘4Š•,c²XnR‚‚†ñ±#^i÷¼Ÿ/„’™XÔˆ•7ñà$Ýý8VL¾%Ò{î'oèœo°=›OJ ç9øVeØê@ûÍ®³ØËå×Ýš_4÷[bü_"O{¿¼s°b¬UrM.–z†ížÞŽïQ‰]DÚutç§ÉÃöÌÂ˸fÒ¸Y)®NYJµÔ_÷ã¶Ï¬‹½Y³k|ÀŸÉ šï©lÝì¸ĵè ZñQ<À=ƒ‘²^´7HNÐd ¸”Úi¤—=ìÿ´.åb€ÔP\¸c£J‰ƒ+AΠø³¯Ë µu snKãûèQq¤IÎI¯£¹ÿÒ^¡@ÞIØf]kË›¢e™Õ¥ôÐr~ÖB´ùÑÓºE!#[þc@ÑEˆ¶.ßÇ¢Ÿ êhò;¢K 2leàµÓj!­óèû™jì¡ü)U*4¬ÕdtLèD2‘ýœŽæs­4ƒO®OaCaç»`÷·{õ½^Œ ¬´7^'ãÔMPçÕý¼»ù]ŠuË7¬!Ûnårj+„Ó{ÿUák¡NV•ñ¤Â¦ á¶×‡¡²ñ>ô P\Ç"‘{ÁkW.MâÑÀ Ï®Þî—ŸÞÙÊ#ÍŽßoŠ úúR(’Ý£Uá.%`'Ý„ŒîIæp'bm²ã°„g6©k=¢rÏ`…„L››¦dŠLwžÍÖ»bÍó tw»ê˜!½vŠk‹@)‚zò×yk UKý}¢¾uƒKçªÓ)ßolY­.?Ø꽌ÌHÉ ‹”‘dfÑ[”p¶é}âQ@e`¡¹l9|>èpÛÏ 7H;ØüÕ÷S=U}›¬€Ú6)e–„çÈ·‘½W(×\éHQ™¶ø˜Â‡Ouè"ÈtOýºÍQQ$D:3­/Õ»çÉ´lV-;ó—|ÆöäCåÜ øtbwrâô¦Ùª6Ê•î—u¾tu‰}4:&Ç‘ä[5õî%Ów$i¯í½}ƒù))ÁzvÉíÙ·1‘Ùwh^)) ‹¥ÕîG¡ö¾M#cn¯ÜD#¼ –úgÓÍy›HøÞ•9êö]9GÏïOêl]}޲Ú+^§µafp6 °ªI—ä‡Ì ÞÞ­»ïJ$æ`}4ñ¨S$ÎòYpcÂýHpzD’çªæ']TÝ h/aÔE%,$€¦åÙl« «®÷ažÈV³SÑ·aôÚ×㋚¡ýõ»ï|I°ó®2÷±jÙM“–ù³B~îZïé6Ózx2«~)¶€¥…刿M|ášÀJ—–£;cIý €·fZ¬ãŒ›N¨.³ª9o/þQü«öåÊød€•á S_qo°öJvו¶¡Ô‚“:tÀüÁËoÐë9å¨k0q?UiÓ ïˆŸ±½ÊÓØ¼…eìâÛ›ÈjåÉPád¨qa?õÔlAÔ×䕸OÁ´MiYmãäˆ¸à‘•æå“^Ö‚þ%œÚjl·Û&jR‡×ú¤-ŠÝ\’k¢="ZMÞJ¶ÆÖ%(HR+‹>ÄG/-ËSæûSäžwrdnÙ$$ªU$-*‡E&WømoŒ¹†%1óÍâzB›Ÿõéð=7æš{ƒ¯½Mlž…•áØ†œ’ãfÒî}?Tw¸ç<Ïž7S ˆAsÄ4.á-Æ*÷Èôp1 Z|ŽhobèÐ}¾Fz3#ÐUlÔ”Ý ˜ò+mq%4º-°@ÒcV§ÕS'e='­w®0=L§‹²àΜ9ݯ(7Âb‡’B©·Iš½Åßqwc¤ªÇC¥ê⛨NµPô¡hñIŒÜœÍ!ø œAO­F”²ŒkS$˜n¸p¤âqÔÁ­$Ù. tP.Ö_*¤¼yŸ¡;¼žÞÁC)Ø|íµš8¢ ®<7§}:ZY8úå}•Ò`­÷m |m燓·û7n)o~¶>0¡ ·fô±K;”‡¤)ÆÅžU’Úå~Ìí:â$Ò6/†·Ñ†»·fLOmæ;ÛYÏ|nP=óZ'ÂA^'{¶Â쟗emóû¾Ð«$fÒ¼Ù¼C«?£o7Önc(»ÿqJóvL•åÙYØFiˆ~°ÿ$Ô¦SÖàeá[Ão¯ï+éát´%î1U%øÆûd© KhÚ8‡O3!kèp)Ü(K CÔ¿ç}•`ó€§þëe+MùQwú }~(3›Íg…·ð¦\l¨wÕþ蔃`züR“•þai~'+ƒØŽVj¼ÜJr¬¹<xnX Î>ë@{+/¡Œ&'gÒi¥Û?yNp$QA•Ý>ÑòáDä#W²Æ âyšjÜîŒ>¬GÏéd`8hÎûcrZ”IxO5ÊÊxNÛ$­zn•*ªçó^y;ÚŒ«…lÒУ_°ðÑ l:‘ŽD~m@¿‚à ÕÜHrpɪ#rÂü¿Ê›x×ÙîåT6(3÷ó}uÇrg¼ÅœàØ'™ŠúXý›ü:êgÑÉÉ´3-ñ ÙdŸ“©å=L˜ÏLç¦IÇ©/'HAÝ—ªvŠp¯>¬ÌÉy‰¦¿’âܶrG|Ü!cýêãÒ3šdœÜb·A»&W$Ó³n››½®tþ˜Lyýùé¦Ìœ„¿#11á¶sÄØõ+ßȵ¥a«‘ÕK€ü«C^ÜBÉvo!!&Û>–’ÕP <¡ˆÉø3nñAOr¶Ðeî˜Î¢¦GÝ;‚V«.Aû£‰þ›äÜUºšj^yŒßß–~“ï–Ñ zéö•œ§ñ{edêa´•ªú5*ˆhv¿¼,ª¹ÈC,ð´I‡­•õFN¤Ô2Qܽbyˆ“»º»5À|FL¯ùùÔ3ªÏ4× cýp8AqôÙ&pµ‘Ú<ËSÕdëüè³ìМ endstream endobj 254 0 obj << /Type /FontDescriptor /FontName /NPXUYF+CMR7 /Flags 4 /FontBBox [-27 -250 1122 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 79 /XHeight 431 /CharSet (/d/equal/five/four/i/one/parenleft/parenright/period/plus/three/two) /FontFile 253 0 R >> endobj 255 0 obj << /Length1 1962 /Length2 12861 /Length3 0 /Length 14065 /Filter /FlateDecode >> stream xÚµPÛ²-4¸». ¸»ww\°pw îî®Á!¸Kpwî.!¸óÈÞçîìsÿ¿ê½¢j1Gwž­ó#'QT¡2¶1ŠÛX;Ò330ñD䔹LL¬ LL,pääª GKàßR8ru ½ÈÆšç_z{ ã›LÔÀñÍLÎÆ íd `f0sð0sò01X˜˜¸ÿÇÐÆž jà 2È1¤m¬pä"6¶nö S3Ç·[þç 2¢0sssÒýEYíAFÖ9G3 ÕÛF–#ÐÑí¿\P}4st´åadtqqa0°r`°±7姦¸€ÍÊ@ ½3Ðð;]€¼ð¯ÄàȪf ‡¿Å*6&Ž.ö@À›Àd´vx#8YíowT¤d ¶@ë¿eÿ6 ü§4fæÜý‡ýÛÈú/²‘‘•­µÈÚ`²Äe]éÖÆ¿ ,lÞøÎ KÃ7ƒ¿7ˆ ) ÞòûOvFö [Gåï »y+²˜µ±ˆ•ÐÚÑîw|¢ { Ñ[ÕÝÿj«…µ‹µÇßgµ±ÉïŒlÕ¬AvN@)ÑÿX¼‰àþÈLŽv&&&NnfÐt52cüí\ÕÍø—ò/ñ[ü^¶6¶“·€^ àÛ?8g ÀÑÞ èåñoÅ#8ff€1ÈÈ`4YÃýñþ&šüß:orh1½ 3€é÷ß?'·Ù2¶±¶tûcþWsåÄå””hÿJø•°°+Àƒž•@ÏÂÎ`fâdp¾¼þÛ‹¢è?Q0ýáJY›Ø¸ÿö­Jÿ°óºOõŸÅ ü·/y›·‰¨þ ¸6;“ÑÛóÿó˜ÿEùÿ›îß^þ/þ¿ãw²´üKKõ[ýÿÑX,Ýþ£›W'Ç·Ù—³yÛëÿmú ø÷ºÊANVÿ[+åhð¶BÖ¦–ÿä r+‚Ìþ•¿åj¿Ìd T´qý~PôÌLLÿK÷¶UFo†ÃÛ<þ¥¾-Í_)fmdcü{»XØ9öönpo-~Cìæ·54ºþ5ÁFkÇ7 à-=/€‰=Üï~rp…‹þF\FÑ'+€Qêb0JÿAœoÃöâb0*þAo<•?è§úâ~ãüAo÷þAÜF£Ûïíñ°úcý»>ŒÆÿ‚ÌFà¿ €Ñäü@ÿ@ößÐÆÉþ_æoQšþ ¾]göçrö7äfkööìý±x“þßb·ü| Þêd~ õ_Ü·}g´ùãýÍöí[ð/õ[t¶Ôo\Û·ÙÚhâøGÊüéßûôø­¶o[dó¯Â0¿åò¯L™ßwø|cüá¿ ££‹Í¿Ôorú|KÓù_ð-t—ùíú/ø£ÛŸÐÞ¨î@û¿}ÿ×Ô9Ù¿%âø×«ò6Òÿƒÿú@®@#¸Åy#Þ󚀶»j!|úÝq¾òÝO)Ôô‹öíNHï©«2¾¬Ûß%}GYÙ£º\"~ö8n®{ܯÔúèù¤«<µÛ ÷c«¢àX¨¶–€^UpÏóÙÎSÝÏ¢¬Sš<ÇΉ I1ýÎ¥Wµ¶¯ty4h~Wi¯ŠCþ©tš>R-BÛïë,y®aæ)´#=! Ú¹+òìõÍ ZöÄ+±t,-œ×I$k¡‡æKÔýœûj¹*‹Cî\MBˆk´Ñ) áƒ$iìâÂuûÑä9¬ö±M«fË*÷]yå;ûà ] ò *\F ©ðˆõÉ8«¯$qÐl™ç+Òë®RœÍ†t q WKÎ$½ÞKÓ©Ú”vÞ½ÄïŠÉ¾™ÉuM^Žh®ut]RÎÒa¬½ï²N†Ët /àùVN½KˆS1÷3%·ì-y%ayF©\c‡^eSñ/Æ"Uî¤( ×ð[ó¼}’ñ¡=;!l±ä0›*+„ƾ^_®Vïßî!¥V5‹-šÐAEvO¡RÞvK¤ër ¦•\çݶz÷[`Ÿ_2£4x”\>²•—‹Òðr F=R³'±+ÞpÀxQtò¡¢é¼å*„g€¼IpÈiì]Ûô§¶äñ"z­bÝù  …H(ç|QL.!ޱЇM7]ÔÎè­?zKš~! …£ÀÂʵ‚DÐëHI|1Úi7áÜ™õ-½`YË]Ê÷R ½ì÷#–ô^ÂR¸bbb­×¢q™Á`.z˜Ô±¬Ëú̹PzCò)4_Éâ™Þ)n};rŽåþ&>’îþ€IŽò¥ô5èù¢Ì8cxæ_…ÜñãñèH¶ÌOq+N·¹©7ˆk6¸õ#µ\EW`DÐöGp«uÈÈbÞÑý¤X‚8ä /cfM•qŒ}"+E“1¶êÙjÂ/¹ÐtÅ¢¡S–ÉKfÓÈÑ-ñëñÃ4¤Ÿky¶ˆÉêï½."<¾~ÔBÅ$`I+h”òͱC }CÓì ðýpr³ÆÌ÷“lûçýfÖ;p‚’¥Ä‰Ó"äzµ@Ñî)+pÖñº“’J˜“{ÜŽüæ­btu” ZåE|‰gÛ,7QlÉ gW[_4#Y,ȼ[f—¶ƒï«Óhx½˜¡°Mâ‡rò¦T*`a[€`YjÈ“Þ6A9ôÑüSaùõr‰ŽÏ×Ñ¢ ä#DkDÅÊE•¶ï*Ÿ—E¡´,Žo"¢M´Î3º{.Ñ¿©éâ ÄžM™°„5eüâ¼½ %óu=U{wÐÓnÕÕ~­o^h4dQ÷Á‰§ Z¹c10 $¶¯Ö‚Ò:—;Ž’ýñ¤m«aŽAWƒâ[ÊrAŒÍ>·âýHOkGlË.\—y‡;®ÔÌò¡H2¹MëÌSYTš‚5þ…²)Y¯h[Ò~Ö$ K,•4­ÿÈ¥çâT7ŒDFü׃¹ÓŒcŒ yŒK [ês1ã 7-½!«K3÷§˜;Np¯Ì…£eêé±ûÜf~3ASáËØL žšÛ³ªíC—ãÂcSTè/½§D¶â}Ži‡â¸à},èY…tÙ(h!âÃZ­ö†Ð¥­ý‡ö„bmä[Ëœ kf§[c­³‘SK‹n(Kå“ç ßp¶=×@´¶=¢xÐêZ?¡ã%5Ÿ³neªíµ]®sÛâ|œÈÏôjÒÄuá[ øòwÞÅ`$Îf‰™´§Ó/,7vÖ*ó·m…)A€#; ^ ô~l±¯{ÂÙ8sÏßÛ‰ L¡B¿zUñàÀˆM¼ó ì¸6ÅBàC½ì^: 4¼a" œ¬¶SUÓ‘…Ööí€ÃM¿›*‡žî•‹¿–‹J ´)#Îv•méöv"ÒñoÕ›šZÚGÃàžd*œi$JÃ`´¹ëÏ’ú€¯•·¢A'†VØÑ'µÄÏ’¶ˆ@}œóÔRR‰ÝYX×çíîÁÑYäcˆõþó¸zXˆ˜‚«tМ¹¸UQ€5îç¡vˆ\‚¹Éàp®ÿÂð¥Ã$m§÷=ˆáFù4»¼Å#@%ÃÝõw–êå/ž·ã¨‚½Sô¨yæÇB&[ÜõêO†W¹µ°h\àªËÆ5æ8l$‡êm-);Àškû0MçYM: zÑt¤œ&øêé§>‰è{ç×eË:tïóþÅj-v{Ù`/;Õsg+s‘ùÝ2C¹^4Ó¬ÍÓîžàØ^u…c ÐøÞ~üR)2Q™ç”›Õ-=Û=Ýȯ x“@ñ×OH‘íeíõ‘¶MŸI"9ìè£ä)ÏПsû¢—ÖI™úé.[\‡ê¥Tò“!Ó{3îÐÔ_IuOÍ9wY3ĆաSS© óTuÏdnèó,"~ ýL›‰cØä5ö žÛ´…6Æ¡e+?ˆvRƒ…§©);ßäy°Š/äýHHîðå =\áÖ×çô1Z[ ¶óTÌ܆Ý6æo…ª¶Î‘¢ºÉ1½½ï‰#Ò–¯\?¤ÔŸÒšX^í¸ÆÅâæîqvWñmá2«pðãŸÛc>Èá»Ø6Ö™t^“óÇ>§Š­¬£uòàú@õ·è9¼²;‰–ë>P l¯Ã>›í°îÞw?\…B¨n£Bdži¿Ÿ‰_Ts2!wý~@eE & Oeho§a‡ë¦3^&Ih:°Øû§À–3'>¯‚ç›ü¢’¦1XÛiÐÜœFâ/¿ŸJTž˜“ßõn}TòGn¹ âÕïÉ)m–œIÕX¢HÊO¾Zš±+ D_æ–Rï…%šRHç~8#þŠê;;B·1°l®¢ƒI1Ì|"n79J3xD³<ô9&*Tj|¡b"Ÿ€žìa§I[E !8°a ygmIØäñL*Ó+z•öÚ—;Ïæ¸¬ªŒÍöúÙ‹Í ¨„`Ù­Ç)˜€ªI Ö[ÒÁX(dÔB3‰þ®D¨[›W~Æ£š˜íõ4÷ ’ýº|§K¶ª{‘D¾#ÓËLfó‘«ÐîËŽJ* ¥ò_’/OÇ£8˜ž—Ÿ‚:=ήï"Êsšx,߯­(B^ÍìÖÈ€µîœ0 ›à-œXÔ‚(ЇÀÄeÊìýÑ)ò[kzúp·¿÷¤!ùÃHùr¯ðçT‰O„6â1’ëÓYa•Õ‚²NPöT6¶˜ß%Ëñ[^Ž­îÅä?hnÍecAŸè9Jg–aÚ ¤v¿—¾ÊÊM°pv«!£-­.a–<‘586–$솦¦ýò¿Þí‡ÿdH\­C­‰º`nbý>zÄÖÌe×±"•w\;f%↋çˆÎ#¤¦†ïBYÌŸEëS¥h‹‡hçJ+!w÷ >¥´ïZÖíäî#óÕ³y2Ï”5í5”DÝBß]"æ.º¥Ã kÛêq©WUÉhI‚@ý¸w7iΉÇ%»|ä3 {n`2AÑ¡nrÂ÷Ö$í*NnΤìß–EÝáæ¿®àS²á Ý®¿ PòD¤˜/nìšilQÆ1bµ ˜i[”ÎÉA`³G¼ÔúÑ¥?hæ9®C˜Î¾³> Ç-Ý0ÙL4x=7?ÇT4·mz±ƒÛ­Gàb½Ùéqئ$Ôe ñµ¤YÂ4^J2)Bç½â}5Òe¬OŸzækã®oU0̈ö¶jñ{‡µ9MI=òÍprÙƒ§ˆ‡”ÕÃz ôiªV"Úζ›„w¥ì U©zó¸Rˆ¨¯ NBò#Øß£Ù*§Ÿ Òòöô5Ög±[‡…^7}/­ó{í6Ë»¢+%FpNЕ[Õ€o‹}=jâàæOœy*æ” ÂJžÃiN]UxlOVæD ¨ÏŒÈçÓÙ*ިƯYŽgÛ˜fñJ½´¯w' 䑦. ÏÌψºMÖ ÈžÈñÉ­Òõ±Íw{ÂáyÅ"… Aíò=ìWc4Œ¹bÊœ±<·…=êîžé~º…TRç¬tUòb’‰Iš0²ƒ)³|E0O_@ª›µGžM“¢À4ölI¤}{Ð uƒ†Zä‹©2UK¨×i{?0>.à†ø#–û¶¤Êí¦¡P±âÖX¢ûÓ¼;ßCÍ££à;ÄTgöF«øx©gpÒÆ="=\ú9OÀpí¯Zl®”ü"ìÄÉ>õrðqj^xù£ dÔfé%“Ì›{—F xQ` ~.Hi²[‰…³bC »ÆZ=Gß?jr̉]qæÕŠìÒòÈÄÎ…ÆÛ¼_õ7†”7-e†‘oÙ#¿ˆ{7¶àWœP²<±¶Ó·ìÏì¶U‹½¶ ]†2êçÒ.b uºWZþ-kÔŽY¼[É$‡r£¯5<‘[;ñç‘à÷¶ô}bð¥]ª¾‚݈41BÈÉÚgò¦oT&Òî¡£ÛºDðéu”‰µ50àçˆÊ€:–±è ƒ€6¬ÿ¼3 4¤ù ͦܫgMÿ™)Ó@ãX5îÆmÏÜ«õ‰vU=4¬U ¼zéåX|Ì©îèã ›®Œà¡¤5 EUâ·×6Pŵéhb#«°Ü /’-hü²YàY7 ˆ1YÅñ¬ê+t:Ź–i×/­qúµ4€`¼Épzp1sŒÌjY’øz}¹Œ)ƒß|Îj‹x 4ÿ”‚õ•’¨l¶KÉ@d†QÌi-WhÓÿ£Ü¨*yâ¦ÏõŠøÔ…æß„y/?Úä´•øñ†Hõì&†¯¬…C žšòRð¡:â\‹ Î$fgütþ$éAPËaÞâÏ-›…të¹ c¥ŠB鄵†´6©Õ Þî™»sn-~dBý TÆ. Tˆô“ÌÙbœ'$UGžu‡‹ú|`mˆÜ\¯£]¢u¡J#ªâÉPë¼Yzëk"Î9' )É;ßññÌr´»HŠ¿<$îÏŠ¢ô-ÛQ²{J©ý#x)<ƒäpZÞßuõdißd!©¨Àˆå#ÉÚœ[0<‡ôNÉgáGRꃡL«¤Ep_óG®ë’~U NM„c%7$e¤û¬‚ڳମÂÀ:À:ÚÏH i®_Š!Ü1¨ä©²Æ{K!RõÏÒ¨P¡[K§Í“øEÂ’™iD†ÒŠ×¥Ð2c`0 íƒÍÁ’?ÙuÜ:ú hIˆ?ÚoÎäk¸œÝ ¤ÕÕ­`2÷ûÓ –îøë{M[ÓZô6ÞÌȤ#NÒ>9´8ÐR=‚‰U$2ÓÉÅŸzW“ïRÚ”E2xô+Ç!ÒL“‹VàÒ×v¨í -*öwã™C'ˆóŒÖ®Æ˜àAÂjYüôÐ÷ÿ4ò´Ð²‹ˆÏa@1ŽuhâøâL*Ž¥ÈõÓ#ŽÂÝ[Þ¯c™–OØ'T õÖÅäêý-?ûãæKpáz™ÐRš”t8e´½eÍ3ÞŸVdJMDìÄÆÆLxN¬´¥Äó"F~¥×š3HS᳞̽:¼{È ›9ˆª!DÕ-S^á«~mG—4W1Ù $ït‡Øy‹º8Öûg{¥Fb#R­èû]/Ág–‡£¦µ:YÞµ…ÂFÈD‹,&¥Ðæƒö|ZÓóh‡"îÊ–¬Q¼62³#*Ï#ÎÌ-Û0Dëù†ô ²`¼B›Wh˜ÃX¶¸K†ìÙ§Ï«â?ª¸Õkª iAœ€;ú5»9Ü£Ur¦%÷ý@áëíLW®•ž1ª7½¸3dãƒË‹JÃUz'é¢m‘‹¢&«sý vÇ)`ôºv4>ICgõmÛËU¬’ÿ+&®‚eyHÈn¯a”Â`úä*õ  ¹“'žåONÆùøI‚Äø÷Ö+Šç{º-ó*®ÂIUntY"e\‚gï…x¥Ö¦ùzðÀÅ^ ½Ë°þ‹'Ó²Ih±þ#ôŽr;Ï Ð)y€nKOÄÓ­ÔMá™ï¨u 2Ð :+´j+ÚøØùw´‡ ¿ ‚ 罄®³° ‘þ'+X“ɨ}£>´*!XqÏ[5¢ª6£ËþHfÒêJþBK´.ËΖ“èöxØ©ü&’,*ùRÅ¡)*vòý•y)y{ÿàæüãÂA½Ýn¶tu¦_gLÍ—jän¿¤á[ÜÝ÷·’'É•~ú+Ш*ž‰×”˜$œZ7óš¾ ÂÎ2ÜþlÞcU”b Ø–;7Eë«÷ÂܦßìU)¼NGÅeÓÙ홽>d¶ ðNHT­**Ј±‘ëÍŒAú)¹…¢3üh™ÛÁüχ½Öü®yÇÆµUR,eġɱ¡û ”Hgßï¬]ž’«‹^–„–‡Gµ¤cMï5»’„ð2a}5×g(!nL<¢ºç®YÙz2†%ùšÀÄĨÖ~ÉOfg³e¥“©ÀßÍçNO]öZÖ`LxWdúÉÒÓÚFv®ö×¶x´˜ätº¶·%%þ+Òt@ÜFóæ¯Ÿã»1NÛj%À¢¾'Ÿ3‰JáëÆèï2r£¡™O „iÀ«§U¨,ß¿Øãu3ev·ÕTçœÞ&ÍAʺ3Ú.+·öA"Û¬i̾óC»V5}·18– ˜Üo\ Á±:yG^ÿˆœ—;>ˆñjøóè¥k›ãîN ÚR™þåt¿è0ñž>Ç@÷^ÆFwe _Ÿ{wº,ËnÖïuðºQe‘¯n½MåÚp¹ÁuδùΟÐ[ŽDX ¤*sN ½³¯ðLýSãøîH©lw•Ú¾Þä*+u~U±cv -¢Û?d6 Ñ’øÒ¡ãJA<–ˆêc‘ÒÂ.öTL‰ðä%n•üªSz¾b¥Úã1ñÅ,•Ù§W3,6…ªŸ¨ íÙ9ÃQ¡ ˆ'×b27ÍÇ÷¼[ñÕ{6¡ìà[¶%ïVøíjíêËó ~í•›”`ZX‰Éy£lÐÕW1ŽüÔþã´«Û.9iŒz~…´Ÿå/ƒÔÇe»T¥4÷2p,8ˆûí7L‹[ ‚a±íøîQöåøª^œöÙ¼Í8 Ì%^K\Àæ“‚ FòçR«Ÿ ¹~xröøé¡'¢õ‚ ] Ô³8ð žÚÿ°ˆ¢ø`½;;Œo]±Ø©ÿˆ>Ñf,#*o˜C\µãÃÁÔïËFÖJÁ]ËÆ½^9:ór=¶¶ýY¢RAíU¥JÝŸ»$‹2B<‚ì\mbSP=⪽Ûò(O½æø5møséØ(ÊUVç;BÃÍÈë=ëZÂÌ™þ„ÑÆebOÜMJÃgÝ éKtÛ¥Ï[–€‡r¡~ó\»ÌG\xmdlí/ð}_R5? b‘˜à×Q†«A^±[m1d]}ÞÖF3Ü›‰†JX¹;¸‹}Í)þ\f§²›€aëN×HÑiXÙ€²r ˃üSÃõ³ø—–$ò‘óÄ*¡Ÿê~’Câ1<{›ØP%%«.á'ïО¥x<åšëw‰sݧå<é’‹£Úöj ‡¤êÉWàÆ=Õˆ“=4çÏÍ„æH¸ªë| ï(Ý9Ùæº,«ëMª‰OÈél2’-¯|g‘-N¦Ý^©î|J$áªØ¾›cÀÅ×Ç º¡-½F-:ïÛ=Á˜[NYÖµ Ÿ¢€@{ã5íRÔH%ðq®æ|'(ï¬i¹Wwv„Q;•™ö‰'ÕoÊâB§ñ§J¸®5^ºýSG°¸È14:~ùéw…Íä¶s„¨T!× ß¨¹€¡IaTJB–`ˆV ””gë„u1ÕH(z±ãלJE½@ßcù5ÊxùSŽÀF¡¨­_Ž ´øö3G‹ †<”ýÔ`'Cw1N}NÙ”t¼{CõJ‹ûeÌ6Ègçèš$~wªŸ*²Xý¼O\™fE?WåQ Í›ºr(ÜÒ¢úqt±òGVóS§²6q·a>Múë|’b¤ŽÈ|†¥AQÖŸ [:û©:ð)?’!]‰¬–e׉$„ø“>©û­ÜPƉü¸ë1)­ªì*¬×Õ½4Ìd CFÞÓÚ9ÍyPý)Ç ü¡ì-Ô÷{b±ŒAäüx4!–­çWB€·5*‰Â“iI}FicÊ…Ÿ!ûT„ºÝý“mKjt»äV—ÈHvjY_D¤õóò´Ùi[ê'‚éìžZô×ëQ¶lsIÎÚíüIu©Œ_T!5Ìgqo+ø©ž5e^¢ûŽŸÂ´ ˆÂrOv–ßgï½Ê9¢cµVß§1Ç~Ë›`rp Úyp$Ô)Oy¼ÂAƒ™î-%L—ª2ÞŸRpM,•æ‚ô·ÕŠ”Z\“3‹ÿɱ_ýê‘Z ~v«ÁÏäï†ËµÄF1}vH7¶óŒ@Gë÷p]k»Ò1’Ç&@?>¬žë5Šp;vO `¹Ú½ò. ¨¥ˆí᪨£…'Ñg@º;õù^ÝÖ'‘éâî¡$ÔaøŠú+ˆ™*ôaŽxv‚š_3ÒÌ5Eª¯Zœâ{Ý›v)Ë4 ˆDT¿>Z[÷p uÄ e§Ï™<9 5'nDkRpæ] gB_”²×KÿåyL«¨r0d ‚„¿ËRP›m:¡|üóýòñn•ÁðÂy¾Ÿ¢Õ e]‡`䬃©˜1:‹/]Ȇ¿âñ‡¯™%dcqÁ.)á€}1¨l¾‚[q]4bd|XãNvâ[÷}A¡õÖ­Ç÷³·i¤†:çžjŸÒØÒT$‡8 ëÕËÍ-M¢'ϯQƒ# ¢ˆxÖë¨Ý¯~õьԛŒ!Í’"ÉÚpìô½Q §ß”Â××*öÈëœÛ¶µ„ÈÄÄQÙ»îQK|ˆ„[³M¢‡(uî‰åâ`ö¡_»j’3¹;íéoÖù:BZtÁ¡‘/ôÙ9Ø2¼S~(X^ éK?0´\yÂRêr¯V‰ËTweç ê.<Š‘ çpl·>³_gæA†ºy,pKº † ¹ßä(¾¿“Þ%9"wú¨VOÛx¼…,—&*ÑïƒuÖV }ñx†ðɾH[vn~÷¥® ¢†`ݶ'ô×ñ4µÆ–m°ŒœAcô@!\l~ðeLû¬æëÂæØ€‘?É ˆ#U¥(NY,¶Zæ†üW²mÚH @WB`J+¦» À¥#ã_/ßh¯ÕýKY‡”ˆšEÐÏšG#ø²Ì:”™Jå½rÃ¸NZj¡Ð:ÝE§Â^Ëc?rWŒIèÚeó¾E2<7›Lû î¸ÆåƒiWB0µcÇV÷mÍ9½KŸ‡×Ïi‰0‡g—ôFý¡`tl€Ê¦Æ˜É}šO»"7àD椯'Çt·›¦uôŸç?Ë‘ÕÄ…»˜ 7˜‰ZÇ¢”j ,ÂYN&a¤Œ%sU m-˱0ˆ£‹ IOlŒIsßù¬ß²ž”Ò¾Bm¸£­~ñSñvS%h±~¤ zBE¼ Je-œN9‚ÖûÂz’q8 !þzUÕ³3oš×zà©Ë ù\‰€á¨Ë$ÑhuŠ˜‰¿>Í}ìøERÞöÚJtho½ÁYïí{ èGb×Ç,%ýÑG_Ok T €X”RâË”Ð+Ì*òz·›°ªÏÐþÒÜ—“õXºmœš«B¦GÝO¤ÂSP}|›V+8¦‘Vr|-zLÅ¢+opnäœë°bØ^8÷Ù¿rÄ7×_¦X`sâ䌻-íò¸—+°FAª%¿¹JCà‘Ìå`§­í‘•òÖ×bUÒmÌÞn²š‰ÊøL9>1Ü£í«À÷b@t[i$ÙîØu±¡Xø¬GÝÌã÷€ˆ4ç­Z3£dQÉÏ—äetÏ/UÓÌ‘õ¬÷ûAP}ŸËG ~­î@zÖCÛÌÿ´þ@pÙgR"sËRƒÒvÑòhöZ¹Óœ$Fü«Æ ÄÎ •VÂüèú>¤ Y[k|tÚü){Ƙä|y…1Ou­ö”ÅRzvº Ì¦3ŽŸÛÂB¹î©oÉÖn[ìüL—}k î¢ÕcR»·ÿÉtªr„š{G €~û’¢„ÉÑ0iŒº“&4,æ,Òéh íØsñ§› {“L‰¨4¯w¢5åt öÓ¶«9O„D°è–«¬:‘{­5³1i$ô«êrY'çNh„BVÅ{ôhvFK÷‘l¶¥ÅDÅeñîoýN ÜvrÛOo‡.20ÂuÏopH@Fݧ²£ôlÇ|¥J°¹A“H€*“ú2um&‡Mk>£º ÓR†ŠülJòn¤Ë¥…õ°ûɤÝs;Zbp ~‰˜™w9ó?íùàzf¹ªÅãcìäó×&%›KêOKá›™éfËaS¸¶™Ì±c÷>šI Mü“ŸqÚȦ ÅÁ§=Àuv©úô˜ÑL ׂî ò? †ÂØî•ZKrøÐÀ|MTã€aä±&ðº§K<çË!nX×QÁàG ¤Ñ‘¸êöIOÂîJeœ/ªã\;¾V;U®|KŸì³XçDá‚gÇZ¢ÚO‚éLS…:ßF[Ñ5ƒÿL+æm—~!‘òä¯Ý„ӱة(êËÜãé²Õ’8£Â?­‘ôóESÃAÁræµwóT÷ ¢5bÆ*¦™?}ó(·»K`:yLXvnÃwp¢ý¼ 6/=Z™g%' ‹·Í¸ø/2¹Š/|hÓ¹5s4IEwi=¹D?p溯¿dÐZ»g ãÌ·-DKN#ì­^A“lâÄ£Ë+¼ý6‚'6cݲ Ñ,D“ƒ@Pw5«k¢ûÎg"GާGpPr}qøp¿¸j9uj'%º–‹µ= ŸNB~má 3ì¿è0¢ùÓ&W‰Ñ<¥y éÒ®¢Úm¬É ³¡ÂÂõœ ‰ ð ©îäX‚ùK$´yY¢u!pµFÈKöS`ˆq0¼VMvÆ•£7ïKÃåÈ’‘š‘("5Ÿ`Ý£,Ù$Ää,‡Ð¿º9¶LÍ}ESœio*/Æ,‰µI›Yª7|žZ_¾B ¿åsLzºnª°ˆ¸ü‰Š—ë'!Ýc ™íÂm´Ù\®¹%¯#®ùŽ#¬³›Z,Ð×>ÔR1×BZÚØ»%ž†Y”†Cw²¿ Ú|‰LžøÂgB]÷ ®Aýý@±³òËK±XÝ12Ï]aׇá|î¡Kä¯"ŽÛtÇ27IœdJ2…è‚Î$5·RnÝ÷µQŠ‹¤E5ÒšÓ–(`—ós~}›£¯¹ÍÿQA*ô9Lm`?Ÿ+™Kxx6©™u9õ0~]0„]˜žŽœ%±dÿZq$—i=©È£Ö VÛªj¸QY-þ4l¸;¯ç ÷_tq°«ÐŸš²m–¿³ôìÄ‘~†àÍD&€ÔŒ~KäÔ€™,&rŠ2‘SXŠ'¸ƒC¯–ÝÆÉ±þqÃ„Š•ó ˜ƒ>Iû~’~Vss·5$ ñÊÇÚp&î›yyyÊ+a"“ìvUBÜG›û¦1NB¬eÍûØxín±H1Éš\ /¹JÜeŽŒ«|¡œä>þÖVбbÿ@ ÓÔbv -N)®hûÒæ£~ö@Få Hi½èXÔ!\¸oó‡-ÆÇ ˆ<7ʘ]di%3ŠDi¬ ®”AØ]]«“ÞÖèuÊPÔ9%ü"„·c‡:ÕrÖá_ ÑHõ›•DÑýè¥7Ê6ù_—…v7¼õÈåIQ4̹‘'™É*Hï(¿ú#8tÐ:tñ ZH,´E»ž¹ý=fئó›ùã>höàû!É&¢)ãézèl=éUMF¦¶ðèÏÆ9ÀàåP¥TÉgƒ t‹BÛæÖñ¬©D_H’•ILB¹sÔåÿ¶£ &òîîqV)_+/⬾²ÝG·mVŽÕmóûž;sÓHÜ+qÎ,™Ÿø1aTs‘„%7Z|-¹ŒŠ¨Í»mÕÇ€>îùôqË;*ëaMW;Î>6k_už-*®Í"ä«DO|¨%)+„Øç®-‹ž˜{ß²ûI$Jƒa§ë bW@ýî–ÞB)¾Cˆ­Êë óíêG x$GÑÀ@vpTÂf«h‰G+Xº`[ÿ:éÁêàEˆÝ?õН^Ò Wê ·&ÿž@ô^µ\ÓÖÉ–\Ë”ìÛ;&ÛEº!îró¹ñ¬³I‰+”1lØ×ëz†S ay¼ós™¢½z3T½¤;–ÛQ³ÙK¨n`n¥÷§­” ÁÎK}Â)WèòaÍäƒ ¤õ]}Æ­=a!>´Å¬?XGA}åºìŒHšœ0>âá©ÓͲl®Ì`A@z>áèõŽö¢¦Ÿ,Q_ŠL!Šy@õ‹‡æÇ:ÍIÒJ&ñ,ä2–øX©Ÿ'Èy$ø±#ÀÆräü [Š}æ‚DB£“–í'lŽhD-à BbÝ@âf‚_ð‹_?À  @û|éÂR,ªM¶M ãNèkTkî"ï{ Ù®Üh#Æ3#a\…gàÿùeµ’®4Œ? êÌ_¿@Å÷“ÿµA x¦M§šåß9 6•ññêž[ä§(oÕÏ ôÔxjà`tWnHíð{ ½[ƒPß·©¦ÌTùë¯à¬ßÏf°è ¼¦À¶+—+Lðçé—3”°IçÆÇl$yZ‰ŠÞ§x¶ñWÖÛûöô¯¹ù Ïóš«c­ã#¸­¼3â©n|vñ•öœüà(~ú ðiŸ,›&â ¬¾„I•V6pë 'Ymœ`ÿ4zt_¢ÏR*ey'È\Q Y?áõ4…EÛ%‡G|€oú®}§ö - ±²÷ˆyÍáìŠâ²•CÂÎÿKÛ/ÑÕk?‰Gþ»Š$ÞºµW‡ žB{Íd÷ìÒ; ¬Ûʘkåþ/ò·\F/}KÇ2^Q±GU–÷Ï/½ x›÷Êh”ú 쬘D5qøfDcçLbR¢šØ6‰Åb>öm|Œ‚'”Óx’ˇOÐyËuÄw(í»×,&0NxÒVähja¼ftòuüšQ$:çñÿ‘¡f% endstream endobj 256 0 obj << /Type /FontDescriptor /FontName /MFMQQO+CMR8 /Flags 4 /FontBBox [-36 -250 1070 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/B/D/I/J/M/P/S/T/a/b/c/comma/d/e/f/fi/four/g/h/hyphen/i/l/m/n/o/one/p/parenleft/parenright/period/r/s/t/two/u/v/w/x/y/zero) /FontFile 255 0 R >> endobj 257 0 obj << /Length1 1918 /Length2 13715 /Length3 0 /Length 14903 /Filter /FlateDecode >> stream xÚ·PœÛÒ.œàî2¸»»Cpw—w—àÁƒ»»îîîNpw!Àeïs¾³s¾ÿ¯º·¦jæ}ÚV?½º{f(H”TDÌìM€’öv. ,ŒÌ¼1y33#33+…ÈÅø/)…ÐÉdoÇû‡^Ì hìò.7vy7“··ȸÚXØ,œ¼,\¼ÌÌVffžÿ1´w∻ÌòŒ{; 3…˜½ƒ§ÈÂÒåý”ÿyP›ÒXxx¸èÿvˆØ@¦ÆvycK íû‰¦Æ6U{SÐÅó¿BPó[º¸8ð21¹»»3Û:3Ú;YÒÐÜA.– 3ÐÉ hø‹.@ÁØø71F8 €š%Èù_bU{swc' à]`2Ú9¿;¸Ú™ïgT¥åŠ@»ËýË€ðïÒXYþîßÞÙýílljjoë`lç ²³˜ƒl€EI9Fz€±Ù_†Æ6ÎöïþÆnÆ c“wƒ¿7HŠ(Œßùý›³©ÈÁÅ™ÑdóC¦¿Â¼YÂÎLÌÞÖhçâ ÷W~â ' é{Õ=™þ¾Vk;{w;ï=›ƒìÌÌÿ¢`æêÀ¤nrtJ‹ÿÛâ]÷Ìèà`ffæâa@SK¦¿‚«y:ÿV²ü%~Ïß×ÛÁÞ`þNè 2¾Ày;».N®@_ï?ÿàXXf S€ Ðd÷Oôw1Ðü_øýæ@]æ÷Æc0ÿõúÏ“þ{o™ÙÛÙxþcþ÷å2‰‰¨)i+ÒýMø?*QQ{€7€•ƒÀÂÌÆ àzðýï(JÆ gÁü¯´¹=€ç_ɾWévû÷íSÿ{0hÿKÁþ½cê\™ƒÙôýåÿ¹Íÿvùÿëî¿¢ü_üç#éjcó·–ú/õÿGkl ²ñü·þ½_]]Þ{_Þþ}ìþ·©&ð_ã*4¹Úþo­´‹ñû ˆØYØü§ˆ gIÐL äbjù¯Vù—\ý¯³Ù•ìA- 3óÿÒ½O•©õûÒp~ïÇ¿UÀ÷¡ùï#%ìLíÍþš.VN€±““±'Üû¿#€7Ëûš=þî`£½Ë» àž/ÀÜÞ î¯ûää0‰ÿ%úqñ˜ÿƒ¸ÙLªÿ v“Ú€ÉøôÅäôÅô?ˆýÝï} ØþcýO&³? € ød0™ÿß•æÀ¿” ?Œßs´ø¾fùÏÑïÈÓÁò}yýcñ.ûÓŸÀdõ|§eý|çeó|'fûGfï4þˆüW¦öÀ÷LþIåÝÖá}ÉÚÙÍ]þ‘²ü[ú¯ùø=)‡÷ɰÿ£Hïß0LŽÀw¢NÀwVÎÀ÷ÿ„{Ÿ9&K'à5fyçéú|çéö|çéþGÉßs÷ø¾‡óüþW'šº:½qù{S¼·éÿà¿—>è4…[Y´7å ¶ª n¬ÁwgØŸ˜£Ø×L¥að^qêpý…“DS¸åô ’4Ò‹²¾+A}/¼Jüâ}ÚÒÖš ÜöìóÛ0Nef¿ nykpªðT¤~€ð#ƒšðÏ‹£F€5D X— E®£+7’R>ú£{¿”Gý@ùÚxèâ¾òA5§,üïòY†hõ(½€’yŠ<“¬RhBXZ´+äùû‡9´œ©7b™8:8ß³h¶"omÖ˜§¯J5Vçn\r\Bˆ{´ñJoÑ£dì%ïÒ¢õÁeþ"âDú”uÆ#ÖŒjJ¤]S_­ÛøJ'Ë^n ˜ }/¡¶¬ ÃЉT³ºÍ0Ý¥–ÍHxÔi.ºÑþ Ñcn•B°Ê3[ÿXà"I¨EÌwŸØÐâíF`ËË)”q¿œ(7Ûò>B†SúÏ• [è¼õ· î:¿“‡-v¼ Hè׿o0%º^50€ñ4ºúÆã¾K{BM9Ì5:“Ƙ/)(3MÏñTòä Í]ö §Ùò­²»~56ÅôpúFÒµ+'Š ÖÝþÕ•) GVü$F Å>y¦ÝôÉ‹ßZͦ+Z7sGŸäy#miM°©es÷uˆ(z¹1Ø"8±`.ÄJ@€¥Ö?QÚ–ç‰Ñ³ežz*¦ªv¦ò˜=u¸îãR׳T± à¥6Cˆ÷Œñú p¬`6˜§ŸŒÙõ¨ÏQ]Q.pQÈ; ¹ÀP†¿1ïED̉—…i±ŽF©¼[£#­û_3ÉH¨‘¼/ßÞÝ–dOilòô\\ èv2)Åíu}ˆô`ïþGÏ*VKíxi;¦Â‘«ŽN£P²œŠƒòùM{åcUþ¨ßþ©é>zýûDî~ÕÇgp“ Üã6X:ññrù—>ÊU;W íÒ‚GçÚêBN½:ÿü° êlè[óç­´äöÜÛ‘ml=w·S*5×ûÔ~¡—k^ø¼/ÑêÈ'&€¦šº¼›;ñy)&Û+tç̨ßÀDLÍ´^Á²*2äÐÍ eïdÏ/–_bdÁl¢£}/z=IWm«ºI ÉVK‡ ¹-…ô¡>†HaÜÆ'¡À§Â‹ 8ŠÈS@ÀFZä"ŸÏwDE¼ÑtBïbéù¯à-·ÂKW#Ø÷RtKÑ7‘œ|ßÌ«3öCsjy3Æ_²á²ºì^dÅ‚ œ]ÅÀæ›–T@¼®‡¡êÊ I{…fäMÿÝŸZ£qºí0—x«˜~Õ­¡«/˜˜„n~QG¿øŽúœTË. ÔKQ”X¢=t« îÙÂf$‡í Á†·Ô2ö{µí>â°Út™—#pD ðcá‚’º~œZ›‘ û^§KÃ'2’ŽKd&З½¦ñ3ÜóÖq Âvg{ úÚ,Û%Íò.Ç2©¢ºCºÏˆm}žLÝ{ú§¦Ê‰bkfü<Sõ¿c¾¬…ÙÄÞä^ð½8yƒ¬øYØáXØìª‘3µâÄd%7uÝÅ R³ùMH8x2Ýqò¾æQ£c€úØøþY·ç¶?û'uÂ>é_ñÜÖ c±ý*Ï÷>|w“^ÐtŸ2Æý‹tñu³$ Ÿ¬¢ã\>¹ô†i©ø9uñÌO3 ŒòQv+nqrô°Yh‹dÃÉSãªò¾&?°ŠžäËïçÆ+;ž—d ƒ~;¤Q—S- C}ŠuöÔýmG?Ķ,ÎÛ Ù}•ˆ€ðÈ”ö6í8Ìñ£?©º›(üµMj´)ØŸ -GßÙ n ÁZe ðy\F½ö»ËíeCÞ§^!‘ºu©k[6—ÑÇ ¡†½eõ^§9±Ds3%›ej k³ˆXð«?-%Ž[«¿úÞí:57B0È[ÓELn|0Ù­wð³Y‹sç`Dêªå1FQë€^¤)¬è#BË%éD14£âù¸PÇ…cŒ¨çÏõF&À+~ÉFò­öMpȱåS«sÕ’?_ïÐù׸ø±l•j»¯‚pȤåH£pxŠÈo­Fh")‘ö¨&#—ˆw³éŠÔ21Íwu.#0RIÁC–Ʀ&  ÛS0÷Už©Fýtj!²¦¨S²‰Ê«Ç\k¡èâ –ôôd™x`ÉÍ;•#KgZk78ÂQ¦ QÄU!“ð ìBŽ‚{‘$gû\Tb*Su¼¡DzÔ·NRµÒ£ß-Ù&‚Jª‘Y’ ƒVpòáºæ‚ÃMÜÚà\ð¿Ìôµ÷“ z^œ2üð9Œ¨ï"^ÿ$ZñÚ:NÔ4ÆÄÔ»·±e1c»ø)¤Ú-ù¤ˆ"ÑcÇ57°y¦¾¡žpb¾²‘¿Ô.„<íñòͶ¨­¯3tuÞ0-ªD¼PÅø”`éqË·g’vAàüGµÛVÒëKüÙÐÑö}ñ’Ë áÄ!æ ¶}KË'ÖÕ* À1™JÛäríâÑ4Œl‚¹Ø3kž@©±X P.>Žºöª»Å$¡IóÐÍ,ØÜà Üí~%Ô#F2.±ø ñ›c’Ü&hŠo‘Øö³ºGOÚÀ¾J±ƒùGZmɱ¤OèèÝÎHx ApÄ´‡ô‰äìP^§ûHÖÁ&ÖWnB_dÔ$¼˜·´ -TI7Õ6º$:ç&Ì7ˆ~7¤j§À¨b]ñd¢¤¬Ö:ƒÃD":¼=šòŒ–. ‰ÏÌßéW?=¤ïÜïÂJ’ªã&m õ/u™å‘xTÅ¡F›Ýóàµ7Þ9 1?‚­Ž§L1Äç¥FäºËPH–£j¥˜3dyîRƒØ©âäðtŒh¾éÜF¹ÒÛ¢ó€ð“Sh£™¸Ô8€ŠÝL¼¯¿$RdÞ }®ÉK¿ ŸÃè% ”]!û÷»§¿N{Þ{)²%ÅåÑk_J“’~Ô /Sïtg—ê] K¦žÜÙÉ®_®Æ¹g7ã×ì€58@…rüZ:>#y`3´¸#TŽW¯ß]Ý B;­†¾¡—¯–gÜÐ~AÂPÁ 3;ê¦wOÊú¡Qb›Ûë×~+2ó:Osþè#½ç™Yäß”Ž/Œ —ÿõM„":ÙÎ ÖÈÃ&ޝ\Ž„)@({5_®ãK# Ú'óüi )Cyj½ãºxâìÿj±¬ µ'¡K¬BˆíÆ7OSˆýKMR{+`2¨‡Ù•[î ŒZÊæXÌYÌOÂ>Nˆ)êǯ*2”ìá³%û“a^âÔ?¹š÷_“$šÉÐç-Ô&ŸxÎO Ѥ?LÞE³:ŽÈÇf“~‘Árø‰¿UÖí•[òà9e¡†· öö0P†½_ºœŸÕÚ°P¥%8ÿ¤•üÓ¤HQ† Ytk©c¨Xº_¨¡L–}"Ã×_‰[>Ɔâȹ,« l^6:þñ÷˜2¶Ì𪰶½ ~X)<w:gƼo5HÄsÊUD6u{LÀýÆNY-ÎÛd¦H Ö-ɯÌbèf=P?È/6H¹-¶'o„þZÁļ¿_‹kÁgômû8þÕgWP”Ž9V‰ âZ/: ŠÃDÜFwS³¥-ÓêXPfßõš:Ve½t{:e ¬Oþù"“/H]²fú|ë{Ùr§©K?õm÷Qw=´²í±/­åÇ6ô†côÖP#‹Óö˜]<81M¦rö¥8êrCWwýdç©;S¢÷IÛmaÜïíZÌ/Òl|Sì1;wÎôµÓûá8Y=i=kçfÊÎíÖ_ÏB Ué‚<#ÁâkŠC®½—ñ¯ˆÅ‹0dÙ ¼Ð©ÄB¾ž¡3!!(Cúd®-'2ã÷ât¸ˆÍ|¾ÆhžÃjwojOYe±ÁQí4BÚüàsl[Í̱ 3¶?k/sçÐÿ)êZ¬¡ÉÞÕþœ­ðU‰Åkñ#‡R Ѻ'ŸäÊZØ>>jŠ`~ú|Ëblëè´l“ÞB‰ÌºÝpõG0P¢–ŽØæ ã›R#%'^-5¥JK#¬ÀÎA#6¸FŸã~ÿø}6] cž“TÞË%&[MD†F_.!ÚÉ?ŠVÚ.¹:GÌàP™Dº­KY#>³æ*-b?J§î7šiëêÂWu”оIXѨ”.$I“kÉ…ê¤8î;lH;­œï)Ò„ñ"rƒ¨û8ÚÞÀŒ`{Æãd½_ª;xû+±ÚÒ®gž8ZÎß„Ðá‰ÆY² »»n§cy ¥ ªÌªÁJïÈe,Ê¡~ÙÉ9ïy‹:jê[á&}7Õ]u:‰8¾¿uâŒÝrÔ9¨FAWôˆÕ×å:òÂBððxM¡õUæ¼½Äj!ÂZ…<[Uè¶ÕÈŒ~ËÐ6Ò–V):M,ñ³0ÔµK£Jj™´Ã°¦(JÒñv •b0†Ôh´?Pj¼ÉÂ}(ªmÓ‰ŸÉ~þòe£S‘7«n쩅 æ€W¾˜Ç¹á5$gÆQ8˜V<þ—vª!ŠÿÿiA±k îEL‹ðt‰>E añðg|2Y®Hâ¬ù“_GÃ*Vq™Ö¬"‚û”AuG¸*^3æ¨áÇÉ4V" Ta&¢JfüÕ»E³1ôs$È}yn û¶Ëð2$qµ´üUµLªuàýàòã<¾Z„ºk*l;¿DXé‚ÌNI¸}äü(q¯{Ɉœ79§£ (ŽO¸Û{Hl‰ƒUàCŒv%{(È1ÉÈA-»ó sN&4ˆŽ½ÍsA¸s*+fZtáBW›¸¹=ñþc%!ƒÑoÔ¨¤ðĸë‰8’¢Ÿ²{ y'Îfä¨VÑ?+Ü«€x9­ß¢Ï©)n]ºàŒp®‡ý¿d=4ÄÚ±ì[í¼fÖ€*YÛŸÉìžl÷06kÀ_WBqÜ{Ý]i†‘¬?x˜Fd¥½iÌ÷ðT~êuä®a)œBe»ÎŸ¼¹Yò_ȸËb PM‡¦Æ¦DÓëŸÑïÎ2ÑÜÊ#ÉWØ,rXÁ4î»`Ž7m·‰Ý°k›ƒ“Fhp€9sâ½®¹%DÝŸ?SF(Øûw„ñc·7Qœ­˜úr_“²Ë+þn–nU„ÎV9ªÕ`zƒ6„2;ñð?¦pjùÛ~oÿ—x€`ôYhÔ­†0df’ gØÏâ<é º+PT‘|Æ¥hÆ>_ì-•‹YÌÏ$§lt¢Ì슿· =ëN1Ä÷ö~YC ù9i@F«/"ÙôÞHƽ LõíäúÉb\ЯÇÂOÖƒ;]I"KCØÜÏ>æÓñ¯>øþ65Xݬ–ØIÚìƒÓ©Ž¤fè9ªäÆ­å%ˆ¨y&-‹TÊ¥nCä©4ï?ÞÔºeÙ¹9&pá¨tSÙ2ýe!êÒˆÔËžZJ¿rî@H©‡ Åí{߃íÖ…Ê@5xÿ4\œÔ±—-Îý½„ò0³ŸÑ©  =íŽPÆVGÏÜÍœ’Ý>æ³6þUûºúž1´˜ÍPÁ\{ Sõ4´"c!Àؼ”ðQÝxëÓjÿÀšmq þºÕöWçú˜˜>ð²~ì{÷@~p>hãI£ëœ¨†‹ñ±$?£ùÃ'r­éþý§¡Æ(•,)y)ˆâq&ª.5ûÚÎL'òô5\’ý™Èb»r½ä¨ ùÕ‚W° f‹®Áza=8æF_ý :ð}bêÉ©ÑÂVs\b³ÉŽWå²¾«zUY„:™}áx ò1›ö9I$XXf£ûÛ‘ß…»ð+ä?8/öò´[F ‰UѪµ0"5›öj<èÄ _ðv<`ÊÉPlTˆyyÈA6󂃯›o«†z~îsruÈâ<­i)Å#yÌ;ýiß^ß5æ£F ò¶ÎõJÂf6ßf>SbÀ…½¼ÚvÊŠÕZ«9¯_•`éîžÄûˆùljˆ$3‘Ûz¢«ÆÚË¡y\ÍSrÞAo7ަSÝ*KÏZ0:gwè”`Vè²:aG-I±Úë²VgÄŒ®œ_ù ‹þð3䫼i;J'!œ’ªõMÃɦobn¿ã¡E°6JÛd]áà‹–d,QI¥!Õ´ç/ðrÙÕ3¬Ú^íxFzûðKT¸>„pk(tƽ=ÇøùßnÂá×äß‚Šh6N$.‘.òV080É5¹nÃϬ†é+?ֿȪΠ~<ʺ Bý̱¯BPÄ´ÞÈÎ¥—Ifï™õM9º ­Õ‹_H«ãuŠªq¥À:í¯0gÍâ*'¦÷+ÁK$4Æââ¦ÕÛXáAI&$ñÌl'Z¼mÖÓoÐú/ƒ[«mdKšÒŽûmcóÖ`™öÙÄó¶ª6ÀjÉÜè–?]œ“UzxwÅYl3å"æ¤Ûl_ܲpÞé“÷ëË:g¬Æd²÷·ŸhZwµFLœžš¸aåm<ÌfƆøD.¡‘ 7e±fŸú·RÁª˜ K½·©çFC¤/‘î4ùÅb!.¡gx3Ëg¨¿1hHjߢêëþÆÙºÂnõ|Ñ”3UÞz«ü0#†Š<Éq•6·׆ÚÒÖ3£ñØËq$´.ÐÞnjåÐÿñý0R.‹ÜÇæ`OuÏì7¯¹Šqú+KA&72r|ð—™À/ºb”8 -vôàmx~ÍM1-ez^ÙòûâBÅRk…H^É­ô®{.–;’[8è äGWq¯Y ¸¬å‘Ô½‹ˆ^jv¯ìá› B«3õóÁA~¸Ér|ð\Q1#]A;Ú]›¸[¶ò_$‰]lß„D^<¬ø7âXŠ-Q‘«+£3¾À‚í^—üØ&`ClF®¼Ë'oÄ”‡l_ùºïIý”™Çј [s0Çg4rÒæ¡xˆ›¬†~ø‘tZaÂ-S\.æÙR÷[22E³s9|ÔÙ]æxà­Wm½²òíÅ\I±‹ - xwÑBõâ……Ë8l¹{¸ >Ã…=t»@l14pci.ç;êbiØnñïÖ tÎ%ø^“àqv;Ißµ€òpâzª…h˜âÞÈ€­$»Èf,Ê æÖE•¢1kÇ _ƒ³ð:¥-ñH¶dT¶×3µÏ’Â3§MÒøîç.ÐàÓÓ)F¾mœ¿`ìÏÖÉl(°.稗zðFÉW A„ÌNÐyé<„A»áÉãRH{7…±9ÿ„¿-Ë&«0ÚFŒúozãxFh*´ v'a¤¢_o`2_ìÕbJð(Á?0É6º{ML¬tõf'ãË1…X|ãÄÂ28ÃU¦!ÆÙ¬&:õ8…†$'Ü´€i‰)KûIWV!ÅV1Sn†dÚ'[„m¦Ä#µwNZÚ]{ŽX”œ¾G:Š3>4Q‚)õ óö;g$f8}Ûÿšü)0£’­,›l ñjh¸2Ëåjz’Ëþð»x½Òˆ XâÖNÖpJï’bH¹ãŸ¹cfÕªÌ2fÑiàý›Pš© ii¨÷ð›në0X.uû¹ï×=¹ §Œ9yñd gnøpɹ¯äÌ®5c?CýΡ] —“ài³YšŒ0‘„ÃO:p_¨ÊÌÍÉ:õâ][¼Æìæ3­+‹çÏZ;x­Ë}nÆŸ1¬dï—ß}&Xlè¬10Vs/$–{|Û`AºNÅpXÞÜdßéÚñ¡R¸ñ™ÿV(XÈ*å(ºùÝD”Ai‘‡¼qeqÂÓi%oB>‡é‰k€ÌÁ±×eã„ÅÌ/¶º`9zûó•â^jp7÷ìâbV&JCœ>­|_ äŸóÇ–‡‡Mzåi6¯Ä˜_¿¬Ð\ulk•a(·Î >ëÇð—²Ñé—f’£vM-&D¶ ùʱ },åØ"] |…/kÊ•úÀiŸh‚¹ñþs<Ê€ÆâVWÕóB™“b·7QSø‰¸–äòeJE«ßO»üpéùz/Û,:=vVe›p;Š iŠç?QJñ‹ªÐ;Þ^ã«d˜Dí…¼^ŸèNÃë°âxMh£©F'™èË´î¯ñïN¤äi=hÏæ9²añ_¿z)iÓtUûä~íÖNÔ¥ÌÜ6ã#Ahü!1Ãî:™As”‡ªî‹Í’Â?*¾Ë)®òÙ=¤uŒpéÇtœÙèÓÞiþnç–Üö€½û%™}´±»i ¸Qeä ÆÙO~èÕ«ÔÚ €þ¹O… N-ÖÛ ‹ÛE>ùÑ=}¢ý¦žá’ë Z¬é$w¢Czà(sWA÷•è°2oá|3¾ýã³ö'Ûhòæ² ß›KÊ[µß6§P¶yåW¡› hÑ+,ïFþg ¼ÄÉn¥¼px4‡.CýùÔÉä²ø (*µ†Ð¦ªâä,dúBrÚÛ-ŠÃ†$Œä±L?y¾Ú«ÅMS$£ÆŒíjÊ„^dýèšÜ¦Þ-s7©vð„7PÀöðy¾Í„ŒCN["VÊLC{ÑLܶ•Ímgjˆú£4!îr^<˯tËìd¨ør-¿ éOoø'ƒÔÓmP"ù †¥›µ8#›Úò|ëNÙ÷usÉÆNDŒaswöÑVta‚¦¤ÛÙ7PžžÐ TàwVæ¼0oqz#‰×Ä÷g±ö´ƒ/ Œû®Æk|X›D1WíTiúøNÊ2&<Ä8lÀI«ž<¶[W¥š‹ô•å㵫îcIÂè~[cÿ»+XˆÀ+|àåêBYëÒ~C½Ì„ªð¸ûT͸»÷™›Ÿö¥Ç_)ÏÑ +¶32“´¶­Ž–aÚ²^¡ŒU=fxäPº/H¾W›kÊ‹ü óÀõM{pu}ŽCÉTÐ {!òxHfmÎä¥ßÒxH`Z~×éjÕ';ÑÁi°/ÌìÀ‘–¸ê3Á%á61o!r8ÌKÒÝ)IÑL]ì%Ç·.úâÝ Þƒk¢ ¤0ËîáœÔ``\לÞ~U&>"!zÄ^¶$(yd>m K¿® âê„–ëV{€=æ1«ZcôÓ,¿(lMo“—• Hßih¤»þ:¬³Ósë–aÖë§jzF'#ßWKý©›ŒD!ï-à N·JJ„ wÐ+»ùT€ø@¼ÎÞµªÿ&±Ü,¶9Uh!)Òþ•5‰@ûƒ`XToþ¨ ’Ýd8f¯)û磨ç1Ìp®¸°Õ%?Õaü¹µn¦ÊßeêyHNÑù5gFþmX¤nÌ\(_Æ·ì±Ê'×4Y×'(ËcBüóc+\+9ãñš[%}÷֥Рãî%hÉJ˜Ž`蕤çí¤`”ê®,­&#Ò?ñ‘b/ ·^ÊRÓ>u5¹\²ß6bõøÕR9ÝI-µ^æX¡ºèSÑ¢W›jovr2ûq—Û’£”Á 7y2o‘Dl$¡ÎVzR^”Ø3'‹:8Žñ°å ‚ Y¶iÀyêFŽ˜j„]!bMlPÕîKläí*Œ¯w§Ž{¬ïùo %? õ?“‹ŒåE…BèÛüò 7</Hý=üýhÈħù.NäþÍÚ¿qäØMåphž!¨’.wíó:¶^ÌüùSõ“C¬°}â¸QÉ@ÜŽ¶r`ÕTZP€4 \;çÙ‰Ó˜:ÐR­Ùx›}Wû's0a6hÀk&â^!ó;áp*ÞvYÐäîÑÄxÊq® ÌE-Þ¡ù¶Õómj]­Yt£íHa”êâÅ;ñ´]Œ‹0€^[.V†ýc‘3¦¾žü1^6A)"&úò.ˆe¨²—кµýuvžÊªánOâ6*Ñ•.·Uœ1féØX* °FÙú¯‹ÐÛI; «Å.}¼#•›æ•a¼ùJKó ,Y*9i½^¡”±ÊF„Ú:éâÞ>*¡€ƒ!åÀÌ^à} %¨CñÝóæKX›ÄCé¶d1?×f®[Ýu@¯¯U:ÆÔünW5}ÄÄ¢ ³`¹Y­«3á¤};a[}qœDò ²ÎŽòŠF•y\{ióYMã@(¡9 <µX<-’ä#»>®—OÖú{eH‡"fŒ²[:o¡¾úÆ|„hé˜lCì2 h?{#ƒ\ùûíRÌæ<ÞKÕõrˆ²¶ç<ñZcÉoÝÔ@ry[f‰-Óãx™C´®Smxp·Úç«RÚ•M4]?Us™‹a Ÿ@|£·4|B¯uŒÍ˜`—èF†I„©½3¶à”Ìã°þ&­¥TÇ]T÷7ž–®@ui°ëÈÙ¬çÂ2§À,ÉóøÉ)9‚;;Ù/žÛ'š8óápå[®þØe1Þ¾P…=Q!#‘2ÝL¬°4˜ÝÚa®c­ MÔ|:P¢Ö;09´W€ó‘y*‘‘¼{?5ËE52à¡­œ¹zbów‰²,ËT¡XéåHžˆ!/~ä”ÑiäÝU’ˆKWÅ’sÂ~d1úÀØxì 2]ÅGˆø”:'¥ yoäJ8ò¹•öƒºJYc“2gAxž‡- ïZ“ (.\’ ©eF£õñ9ÝgT¶`ƉÁçd$´¤;'™ÐzsiêÔÞß¹Ê' ‚1Õ¦'“­ÐþôfŽ Ì&qZ±ü…Ȩ°¶njÝ^ðÐæÄ¼… úDʧ2TÚOŒŒ.5•OB¸åuÊ¢ñJÌ›båÓ¡Îãv¿=óöIçD‹_ŸØN…? ¥(æH„ª6ŽJa¡La®+XaºhrFx­о^|9ÁŒ£Å§{¬±Õ<΀›wF.ÁÙ¿ÞѺ.µ{-t?†p·Ó#‚²mÛÿ`DÌ€¹.èðpá„jF½Sµ£ÛÈBéû:å|Iµ‰ÈjÝ]T§<åÙ‚Š-ClM•¨Õ ´u˜ùät m©*~:ƒb+½Ä>ÚÚÿ+ŠÁ×G›eØyY-¶À a"ÎÉžtŸ|–Õævë Œ—³gëQÑKëä[ûì¥Yÿ‘'î¸ó®dû>2IKQtNw>W§©ºçF³0åÒÁMj¨es^çf瓚ÖHåucŒ5Ð ñž>7çÚì õéPpI_PR±±œE”xZ˜ÊÜÝ.:8xµ ÿ±ÝØ|)UG²›`·j VŠlÎäKÅ}(øŠŸ¡Ó ôgíŒþ„+÷&ýÍôñ`)ʉðñeçtÇUÐòY}=qeŽ$@R\=AþàÞÀ¨bæÄ~l]…T |[‰®ÐÖm‹ß½­€Ë.ë+ê@L ˜nØ#Ûű`Êm0 û!KžKc‹Y½qaÄ܃XaJ{E^¬¬(t¦,3 Š˜â¹HZ¹„¨¹P>GRQ´ßk è¬9Ä“ÄðâAzz& ‡‡W‰\× ôg2o÷tVÞw¼ÿóu#V£×^Q7üpÈäa[]A»%k¦n‘þÃ5& ±îÃ`/E•„+¤I“‹›Ô ñZxIç4Ô ›;x‹A/9¼«ÄN­ïᆚר6¡åÝPŒEäˆT@öÎx-²Ä'lG'û…«ßìÞ7ZJ×¥ŸLõu®*ïCßUè½Ñ ëW×¾ )ð¦iÂ%mhñô¥¨lw92$ý]}àÏ‹S‰3}’Ô·†2¿rEó v³]aI[þ&“öK œ­ ^çxûm6+.õ´g®û“œÝÓ¸­j¹Î£ÔÈ›€öM·É9gÝZž^·:ù;¸šñžIŸ5…;*4Ù[îþ>Sp`lIr‹)÷”ŠÝqkÏÏLÎÁXJÇÍDéçä >^äïJŠÁé­YR¿åÝAØ.à<ÁXg¨ögþ®·…[J×j¬ò gšÎ¼åøó;ÏÞ.Õ‚¸Ö‘V^­’· ž\Ädã„‹ÚÈ•…,n¤|‘¶o^x!L´òø…k”&À> ¿)¬Eb!‹bª%L¬ž< 9ÎwUS;.’Ïç¾¶öþÖ¿%PÒŒ7·á¾ ›+¬ádàÔŠOúØ#†ñ“ žÞ³¯ÉAÈ…ˆ¨­Á'¡ƒôÖ1e¶5ë ø œ¯á oßÏw‹ÚÉï°Å‰8í¢ðn~y©uþ„ ‹mZO°5‚q'<:°Z›ðÇçjãRÑ¢àÈN\€å»·æP$ŸLíç®WS]î«©öÂÕÈZ4M³C‘ç›>ž¸ÿ¼`•ÇË7;‡UãçÛܱÉ[¥4<ÿR;ëVpÅP¿5Ãvú!È zwŒ³48˜'÷D[R–g*b ±qàI͸£_Šªû^îtð»èé9ò˜’µoÅn5n|€çÐ3IHÕý®þÆ–/?£´GHÒXÛñÉzEý"œê§ŸµPnÌ8˦46Hœ·=:(±\I_ ¥)ÆU?«Þ: ¸¼hkBÂx%6Álºbo{| 4·\xRÛ]ä °œ˜Ó£ŽUUÏ›óX!]Q¥Ê7[ò=”¥Þæ5‘æBÚܬ¤h?‰‹ ‹wü(:ÌjˆÁPù~¤mÊ.V½†Ê…1—Ýæhæ¡ËÖJræ™°†×¯>ÁäŠò–j¢¶Ôw›âó )0êUüð=¡¢Al;г%VÌ&"Ô& :ü¡×mÙñ «¹¾83Þ,Öìðšg›Éô3¡0ÁçwvºD~‡Li­^–þ3o qò+r®VüÎݯ¯aƒ¨‘/ñÂ$ixñ6•OX¿•í31Ùò¹0¢{ â`Ò9"Ðzeã ˜< õY~žäòÞfýpËšJœþhðû%(è#öä˃<¬§šjäw‰W˜op!ñÐó­ªÌ!Ù˜¶Òã³,cõªúu©Ò ÁGcqßU_õhü”÷APÈ~ÖÜÝí'›Ÿ«^³zãŒPàŒ·Ï"QÅ-»Ú®¤S9þ~‰æ)«쥪<×”®À¾þßxˆwqF!B(uˆ™‡Ixƒ ‹g˜Ížˆ…YT¿ƒÜÒ$¡Ä.­Ü´D«¨Ž Â¾¿'1²ÎJØ´oyƒ¸±x³øYÉ䨗fe×'®LKföµ ±"">Ÿ&8ÓJ÷èKu_ö¨Ê’º.ÀÊBT_ W%)Y?8Å5„2¾ Hiðv.“ÀÙWÉ9" ,þÌ%ÒÜÈàS³n“vT•gqa¥-{°v×)ôýp®äåÛ¤Ó0MóacK­oðìOÚïšr n9úæŸV>Ñ?´à)«©²+j˜ßòˤD¾ð´ÜÌøÿR¨·'`_Ã5é÷ÁÖWËd¯\qÐnÿù)½]-–Æòz 1frBÙðõ“H/„í}]ú€±•¹ /SO¸”lVKÃ}I²Iñ¢¦Š$[¤ÂpÓíÌMbÌ7:³ÌÙðIqYžW®gãЗY@é¡üŸm9#fÄ¿oñ™xÁ!×ÏT´†ýFeÀéOJN`SSÁâK&Ñ xX9Á—¯ŽŸÞ*y¨ƒ,jú6^7Nü(Ä "y¸3Ã*¾¯–?Z³ÓÄçÇÉ« šæZu€Ò@Lžþ»?„d?ƒs¾ù:"8ÍxÛ`,Ôå’<Æ¡fä‘Á­7y„h?3}^®gëw*a+™Ÿè‚­µ&®‚¸yÐ:lV¾¿›ž^Šiã‰ÞÉà¦ê\ZK¤ãS…(e‹ !Bߟ7‚³er»„Tòè²mh¤ë¯9»Äá*£=¬'âôtOjл:fɸ]Ìý8©téKX«§‡¹~¢¤Òl LR$9Ýšm’UúF*…%<Á»+ÿ¶£ÈMÚ† SÁÃWÛ;r>‹ ¿þ+Å—.J°bC3ž%ùˆ\¬s=ó²¢d–‡M±µ:‚WÖŽïýÑK¤‡Qy<Çü™ ‹ ýÜÓ`išìÕ8½ÅsM¬¤))|ð¦,gˆ·Ô«¥ùRßõ‡ÑHئ1”ºÞ}tîp3e¸%hóü]Øîð]¼ðÎS(ã¹ä3Mû íÂÿÎŒ endstream endobj 258 0 obj << /Type /FontDescriptor /FontName /CATPYO+CMR9 /Flags 4 /FontBBox [-39 -250 1036 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet (/D/O/S/T/a/b/c/comma/d/e/f/ff/fi/g/h/hyphen/i/j/k/l/m/n/o/p/parenleft/parenright/period/q/r/s/t/three/u/v/w/x/y) /FontFile 257 0 R >> endobj 259 0 obj << /Length1 2492 /Length2 16318 /Length3 0 /Length 17777 /Filter /FlateDecode >> stream xÚŒ·sxkó𯶹bÛ¶mÛ¶m5vš­Æjl£±m5jpÖþ°»¿ß9œk]WÖºG÷Ì<3Ïû†œXI•^ØÌÑÄ\ÂÑÁž™‰ *¯*§¦ÆÌ`bbe`bb%'W³v³3ÿ£%×0wqµvtàù‡¨‹¹±P&fì4•wtȸÛ˜YÌ<ÌœÿÒΙ™£ƒ÷ó4£°¢´š’8íßEÿ­qôøÒ³0èYXYÌœn€ÿÿR2¶þO"ÿp•v°ppÿ;_`£þ›³Çê?{B øßX ŽÀ6Pý™w=&v&SàæÿßSÿ/—ÿ¯aÿ+Êÿyÿ¿9I¸ÛÙýË‚ê¿&ÿ/ c{k;ïÿØGØÝ ¸òŽÀ¥pø¿¦šæÿÞbys3kwûÿ«•v3®…°ƒ%p´é¹Ø8þ-¶v•°ö27S²v3µúטü[¬þ×ÚÙY;˜+9ºZÿuÕè™™˜þ¸k¦¶ÀëÄ8ÿR™WéYÅLÍþÚ9v€±‹‹±7,p¨XØÙ¾ÌÀå43÷ú×<Ý€.`…þ GØ¿Ž–ƒ8B‰þ8Œ"'€Qôâ0ŠýAÜFñ¿'€Qâb0JþA,F©?ˆÀ(ýùäþ ŸüäSøq”þ ƒòdPùƒ€ ª€QíV«þÙ5þ »æßˆˆŒÿ `cWSkkSkSwû?r`Ž&#f µ‰‹±©¹¹…Û?Äìÿÿ{)þv¶ÐôoÄ eêhœƒÿJØØþ’ØÛÿIã¯a4û²ó7s´³3vù‡°3æ‚-Ìÿ‡”ã/½³;páþ¸ÛgñÇXƒ…µÇ?bü¥vtÿ'ÐÄòOD Þò¯§ ù?M€¹[ý©Ø+o'+s‡XeÖÿ€ÀòÿäĬÓÿ£6ëOß™ãŸ`ìÀÃr®Ë?ôÀ2ÿðÿG ÌÙéÌ øXtøŸcccþôO ¸ÖŒNÀ“tüslÀ~8Ù¹ÿ#[à‹£óŸs6ÃÙÝÑÍÜÌämgJÿÑ1f`?þD`*]Ï‚¿)€ºÚ»ZýØȟ´€W,£›•‹ù?Î X•›§ã?€1ÜÿLï_~WSG—¶xÿ€ÀÖyþc”A½þ¬Þ’ºú˜»ü›òn)Sw`#Ýþõ@^aÿÅÿzM07÷27…]Yr4å ³ië|ªÆó¤?˜bíçPøp'bƒ³û´ÇÚ§€m[ŽÇVð‹+í«˜Ò¸•@.˜<اˆD<ñ8NO[n‘.(T´pTP©hÜs†F>økhª™¦~Ü¤ÏØy'¢ÞCRWÄ•Ú䢓¨ªŽO:GÇΊx„•…Õ0ŠÇKÔܘ/!—ŠRvÊ< £ÝbL6!‘p2=ͳϔ2:pÍçhÕ]¨F‹K"ì ’°n ×&xÚåœ<Ý“=,/V]²BÝŸ~ÐÇäSÝÑ>®È%’ñ»p*cvÄÜûRKÄ$–.&YÚIÇ)ê;y L/Єñ,ÁgÚÀXxŸ[I]Æûär–ŸqÌKQ]å¡ÎõXÏM‘€ç)ÄòaFH“EŠ.kÆL[žH… ·µœã<|Ø%Hp$~ÇÑ~]LvÛF„ R“Ѩ×HëŸ:ò§!›þPÿŨ?¿0€CŽ­Ê`¶`ç:,G–ÙÝ͆Èô~ÅILX9Nõ«$‚õ`ÛÇÍ•ýª“Ä’ ׉7Y=Ï¥?Èô¡á.ð £²ÔŒ¦¦åü„Qr0GG‡RíEY_Tž1ß2'£\ñK§“uAb…ë84U;"¤m«0.!µ<¢þSo£Š¶Á<…Í–W ê£~úïÑG ½Î~a]×ÒŸý-”=w˜¤o´°n™jgAiý!Ö´£YáÐÅ$©2³úOqÑšØ] 8梆禊æ•…Å_¾[?EËøWöÓ 9¾K˜ h] Bú¼Öš3¯•@ˆŠt‡EÍ}nTîNe°N(…ËR ¾:l¶¹(-ÿ¸SèjëÄÏl~¯èe‡.‰úìJšéÂÏXðIÏ¢Ë~Â*ÑEwrÞlã§Ã+ÒDÚ]Cãw5¦¸0n:š‹p"<%c§« þŒÕoÐØ ®äZt')AgÊa·³ŸJp[BznŽlwTps¡|zY²N™.D&µï÷b¾+(#¥2£T½Æß›I3#ŶôÔ3\QVnÓ‡ÎÐ`µè:ɪN!}’àŒ+Ý2–&TõæDêm¿ÕIEä6•”cÖ¼'1øVŠ õÀLzª‡$ˆŒõÙœªÛi³ûüvUk‡û}ëièûN¦âzGV©NV}á*5ôø¬öãƒ0 î":hh`âÐ˲‡©Öq³ª†zü4¡‡šîÃ«Š¸mi¥o7[T…qJ–D‚«oe»V2lç ß5ÀýáÏ2”¡|Uiáùòó·á,áûï¦6È·Gny‘oΨ|£Û“ã>¢éo;´úlì_½¸t)/jû*7ƒ×3¹Âßõ]úÙ9uãG%c{+„¬¥ôfû ¤uyˆ!¾›ÚHÑ0Ž7<¯gAK¼êê†Pê;4'R1£’›”¼MŠ¥×ŸŠ’x)£þÊö1,yXϤ“&fr4â9„º¡h‚RAQö­’:ðLÛ"aÄ*¨PÓ=1éD6KR3ýlI˜çÃP™ûMZHÜ`¶¡Û°£Ì­ —­^²‹Å•¨óu7Tî]©Š;åôŒá¢´úòØ´H¸—Œ{6O%É#&iC¼«× zD 58´3¯°¥Ñjžƒ`,Àx—ÉyÒÆ0§IàùtÐÓI˜%†WÏ!K9B‚òH“-‘½CÉ”û$ð7G.zòã„a­6À—¤zE»ô6 s$œ¶çfm3dø*„Œ‰`ù=¸æõBA4šjÞ¾hþy¤/»žÉç6øªhÖ>=f¶WWĺþV­ˆ¡¡µƒðXð8Îó˳T7щ¸|ççÖ»\òïW‹C"v‡ ½‹´-lÝà“h×]í,?ù`›ð×HMÆ_5¯—l£Z§OZäF°üõÅ3üRO‹&ü2³Å_ÛÔ”Æ X–h²fÎ ç‘¿‰v:‘cÔ™M¿c‘Q6zx½©<³"ÔÒ¡Cpª#·ì;Õ3F-¾º;ˆÃGÜ6xÏ:m{õJ³“З˜è¯z÷òŸÐ9鯛Ä/Ë‚­¢øÈ+šèÙ£±!EÕ‡®Ë12¹‹¶©.ŒÑ‘ÍÕ~±ŠÌ®¡O»t΋WÓ˜|Ü:ud ×ñÍÆA»zßÁÍÙ1ûEuQ7ýFYóm[¶G=ú¶×¢8X@í´5ü.7£~I£˜Ìq=Zñ¶„¥ Úòñs3 …m¬×s°øÝøtou ìŒF™Òo¿¸ƒ«¢™ŠW›\n”õµš|f}r >-+Î`g ÒäNvç|¿ IÝ’ã¯aé96áV§[&Þù¡X ©rc€Ï½~œŒÖÒ¹H=RxKìÚ.™ï§Ë´õJ›ÎáÊ_½r*¾ÓŒT€¬…R4Nø-Åb#º4'æ„t9Wð³&ÇÖyƒ²¸‚ ùsºÐrp‡©ð8lD:}lUœãä äÈiÖï” wx›;HWB~mW(F[c¼ÍF¸-"óYf·Œº÷ÓWj‘%pþoz çoÝÀw‰öW8#0å*ÍŒ–hïå¡í¨ NÁƬª]ÞÅuF·¶Æ„ºsGúácœµ}}U7:³îåÄu=ÑÄ/$#2––c÷[VÛþ¹š{2¹'E¼ªÓ¬ÏýÍzTP-AfÉ‘þóUz"ûa × G¾ÈF\ûÓäf^·Á,~t`„’ç½Ô»í˜R«^åGêp?ØšütØÉt¬¹ßˆí0à¶ æ|±Ð¾J-ö¤© >Ã]SÇÌÐýkhÚ¾ŠH›,eÈ6YÙ6Ü@gµŒ7î%nŒù«ke`¨çLiRYÔ“Þ&‘z¿—¸?:Í–ˆ"%IŒ°êR¾_©”eR®Âò+„÷ìkeoëWZ6¢Ü•‚˜Å ]æFl›ÇJ%$ÚÂÝ—¹ee-Sy7¸Œ|0Á$K<NVNXMÖ$ÐL&˃±£Òs„§Ûh³y~qÃÊ,¶èÔù)Ž`A#ˆ ž¶HÚ íüÌAyþ $œX3Žæ“«ÉOöMI¢íùjuú-°Ç™nÆôšBÅs;5´_ü?ÞÑ¢ô)‚MGßMJÝÚbààBÃe7iy*0%NÏ×ñ“?ísÛ )}æÓ‹5ɦçhÚ*‰˜MÍIÓèÅ5ÌõýäB(Ëš¦ƒÜgþëÃ]Z²uê3I«¸Ùf¾ ´©Ñ\þXüÓh=Ü ?ñzmVÆ7ÿ©a±ŽJ)ÂÈ”3ÜXô´=º0Þ2·aÆ­u”Ë8W)9x§*'mOöPÓ_ãMšC³NΛmÖFZŒæsIò¾XdÀ'R¯#ôÂ0ð™“2è‘ ñ¬Ggs?·§8aœÁÁÙÛ”o©=Ûöcä }+ m ›.”Š—ï˜ÊD]Æï Ó9¿OŽ}·ç{Ú_ñ2¡æ¨ñQ •MÄé¤áÁ"XýœrèØöÕª^"ÇGÙÎ>ðF?/ƒùn¨üªq‘í¨X¤x½¥L^ \ ¤è"þÄõ–…HµGPÉ Îù2CîâÏÙ¤‹Ú–…—#×î3÷~ žçÝ-iÍíÕ0«×«Kú.•+e$¨$( Në.Ô3 œ³Ó}¿þTp,<8ŸBzo}_z+ß÷œ|žvÍôöä+Wò»„„{\tÒÛ¨+h œcN„žˆõd³/•ÄXÙÀó.;“Ç7©”ްk„S£,éÝÑ¥=ÞðÐ'žs=ó¢å÷^ƒžÛ9«'-­ˆ\ß óýßg…¥Õªà_&¦&/>kX~ÜÀ´×"èóë u¹#Ãýb)ŽÔÌU_<×ùõÛRíŒ4W!€Å_·¿õÆisfàIØ KÛ|¹%¥Äü« \ÂÑËN ™Mý'íÖr”lL«éZ(xþO¿‹>lq!c9W—S¤§m«Ž’ͧ‘¥+ݤVáeN¾éÜ~ ]ò)´C4ën³ÿ–qSÎ2¢Ñµí©è½§Êèr`Z¾]*(õq‡I¶Žÿ‰õ7*Í^†ñ¸¶MÒÅAa@Ĉ0_Ã=XbÙb©&1Ùl2p¬~‡î¡×2‚…U4˜uHtðG'v&Æ’?‘ÆšÔb]øcóÆ> ê 7ΦÃåur㮥0ùޢűýÉÝzuú¸¶“õËVWå"GŒöeó§ƒdVVs|ˆ®ÂÊdüm+ÝâI ˜~ŽÖÍÔ)¹¥PmÓçÏ ÷•ôz,f;7󻥞™ÛÔl°îI«¡ô¯8º*†ïÍœ^K¹w GºíIw¿swÍ!™—ÖG±¥½xçé“·â4Ï ƒ ;¯SÍóÉÎߣLˆ=æÆøÔÞó±¾Û½O‰–‹†ÿ`¢ézT_¤h ó/S%°În4ªh9h଺¿!‰Æ¸ÿ!9Û#Z]å£Ú®/³€ÿ¹Å[kµ•¦m~R?ê¾} ŸÞ*ô©MùüæÂ‘ó§ý]çhÜ’«#UòVXð:…OáO4²b\dÐ8œè ßq\> ,œP1Äõ ¼9Ñ]»“Ï·WÆ|õœ¯¦’]Déuê=r¹ŽoRhñä@=dãžìï„íܳ*¶’+ ë›â\œ©ä•»AFNûü¹<à»ns?a"iè¥ã´Ë`“³lÁ«‚ŒÀH7 o‡ûÛ>ji°ñ†fÒ‹-ÏnÍ+JNðg©“‚/OG] šq·6&ðõ ¹éìä"Ä´ôh>Ái8|çLþ2ò¥…µë"|–‘H$&¼ Ui¿×7(l¦?@ÉÉ•=w†˜ ßÍ”<öy,l°I¥´><æÛÊù ¬¥_^z£÷R©GÍÆ5”Zä†õê©/ÝS¤*x1÷Ê24dÕ×O_QŒ–œ«lˆ²c=çI3÷¿¶A°q#‹æj«ù.3-G­Xd á)¦ë×ù£)Æ(33þ|Eÿ”Þ=^ó–Ö˸9¬´“ó€ÝõÞõ‚‚àÛók¶:p¿ ™‚BiP×=œßî‘ʺÓÏÕïÆ‹ö¿8™ppH@!aw‹;EÅeí³%³£»%t“^¿±Â–<¸Îxë½l‘³|ãN’·­f¨ë‹ÚE@éëLx¥h*pt¾—q´äLÇNÁq­3”í²½¼se.ÎôôÑnÊ´49F®‡ó|èµ]¡7SÀÌ£ïšòµ–æ¯ÿÆ+/uM®ËM/`w#Cà1/Õ”WW,(¼Åˆr®4¬¹¨Ëå—kŒúÖ\‡ÈÅâFsÓRÌý5I3¢ `E[ÙLA€½—9{“ûÃ$nÅ:Ê- • œ‰`i368ϵd’âËõu—®¦­›½ùB¡­@|n™¸µâ,eëסnvîZü`ééÆIƒpמ…¹XÂMkzÊæºk2ô:t­”q×­‚ö|ØŽy˜=âðwGÖ‰ðˆWØ\"Ì»z¼_îÓ¼Õx¿ÙHdƒ¶¸+A©«²«úNV}¢Du{¶ Î$n3_|—Ëkqd?Á·$Œ-ÑÅL:rƒ æÁe’Ћ§ÐÚˆK?à²WLý :™*2?ýÎ}º#òˆEGÇ›ïÉcîef£*¤l×z×IB}J”9ãÍ¢رZ»ÒEñM׳ôä¬Ìð9˜–t”–¨Ÿ2 ™Nf€c[]ÑØ<ŒFR·SK%ö\HpÄÄ–j8¨;éõÙäÊeNNÍ Œ”«~ï×#Nàtq7.3Òz{p‹Ÿuår”ºØ ^È`šôN–«œ:’ÆóéÑ#_& €3^ÜèïÜÕºR1V›·â' î_Bù&êfÃmªÄ/n­¯Ò£ùÁíeå›u1FÝ»!†oš a~myÜV°¼ší%‚_­ƒ¹†Ú>¬šž¬wÔÌÂ÷„uÊÜ—ˆ 0,tgõà{ÌYFÁÒõOT-‚«.AV-S¢—ª Mð&ixÂUÆ×B³jõë%k1w÷F§®VGrûrIäû¿ ®'lp’Ã3‡°ŒF{ ïÊ9«Oäß.+C•'ù¿â{^+ Úª¡?êAÃŽ†êv3âl ðâ¢~£8'eç@ŒÄ2Ã$l#1¬$ ñÄØ¦ë2ª•®¿_ÕØÇg"´#€’°Ìx’ W–sì~³8¤€)I{z–à•Ó— ¬fVÒ'z¹]š@°±'¿µ…i$S®Ð™Ëá£×¢à˧žø·¯T׋ÓvÔÂuÍ!,–Fy¡  ²Q È9XÈÓµ°t:&YÙÓY×âSf3#﻽ëtDÜŽ[Qâ]·˜Øåm÷º–œ¢D?…wuýZzŸÄ¶[T©r!øÐ5eº(wP–y[Ñ¡Ô[ôž$‡ÞÙ¥úÌ?gÅAIî§ÜÀÝÕñQàð6–ˆÂîÍUù¡Ä<㌪.Šu.âb ë=˵²™œÛŽÃõ‰êáì&ʇ—®®†ü6î~úXL|°Êë๭Åô¶á™&!JEo¦üÀB÷5aaï›¶­˜x…ÝÎü©Zò}¨ÀWM¼æ ›q‹uŸé·×”Ý÷zL ÒxWzëgÛÏJú‰6 çz…ª½‚Ÿn"³%hø:‡ç©Î=òd帓k¡ÏÌ×ä¤ð‘c™ërö|ëœAô;%áCB oiãvx&+‚ˆß`¡n- ‹ÐÙÙa`‡…}F‹À¼" ,n Ü©îÃr%Gƒ^Ѳ6*'³MâXšÔû‚&Tª.ÝРúͼhÀÀÿ.}¬Z½Sx^;ä1V~”XÇWX­yu:µç¨Iý2©þr¥=ÒZÛùùK"Û™wê*ý /Y|€û§ÎýPø"Ç™†©³nfLÞ2!ëNIFu÷zŽs˾°Miå)ëwS£ wÿê½÷PéACoÙ4ºç ¬é3›ÝÝ­à]/²´³½Ÿw¬¼Ú pë«f¿zSBn[m–”Çh?­Eg¥UìšjKg j6G}…zYY×0äZ—A¿C(å³ChOiÔù<Ó¨n±¹MRe(§™}Žšõ¥½ÔK%Kj£byk1™ ”'ÞÕX‡¥Shå5­®÷f¸˜œ‚k_n§ —¢±¿“Èê•)f}iîw/†äÉnú3ÙWxßÁÐx-³å‘ˆÝ|høû­±©eZDÞJ.oÄHê@Úô·ØÜST¥¤ÛèõK§4DN7мrɄȣ³åS˜;@íÁW\¨þéØ‚Ì ÒßAÂe®Ñ¡,Ž~âK:Ùàx‡OÑèEŠDé5YX|…ú9éó!ßc I²®˜/s¼÷o”Ö×ô˜è›‚(}ìáMe dDÎeÎYxý‚ÊnSÕ¶º°ó¸5?8Ü‚™ª"Ê¥¸,‹÷Æc^ßi0'ÑÑL éå0üÃÖ"ÎMiô»— ÆÞ`¸µ šA–¤å߯*œšÒXÅ5ÀÍ­Lb»#•lÞ«÷ÂÜŸ`¢ ÔFrÔ!X±˾qÜ›Ov@[VøyÞÁ¿w~o<<·zh`ûmKáó5ªpüñÛ—HT·WÓÏ ,Á©VI!ïÈô Í‚¹TªRó_yÕ½ÒI$¥$÷j"(ø“ÞæŒ‹n®E—4Txx IÌIÈ~ ÿ8b“ÍN77Ø ;Ùj0NÈ9BdŽ®ÒaÕöÏ™c+ØÈ4ŠèÞÎ.ºÛ´½'X >ÈçÈE3¨á€zaY#cöð“„íá×{)aôމZJM¿s=¨wöïI6ì‘Ý$Bÿµ¹U^0æ ÊòƉ.¹ôtw ßÐÓîÍ‘¨»ÈFº69¹zaçKwÌ¿3¶A{bÉh‡é$r¨ÃHäËO÷ÖoYäÄd*ñ>\nW?daÖÝC#±+ºÈÂÔs:i'5¥Tf•Y×äGKÛ·Áð7½ÀŠ÷(d|¡(^Ø‘Ne¡ì$Ř—[ÀwÍ¿kSEDöoâלY9–ig«¿×g§Mм§jI¼5ÏE³t×U´R~ßÌ,ËåšKÛY‘€¯©“¸U‡nïÑ.=·n±gM½êÿÜ’·Ç…SHç?ðMò'a)T…]@‰*•T±¿r¤œÿË$š4“,cî•„8ºËøç­Q›Š)1ªÏ{’?ïRe;5夦Av’Õh¥) è,7ϵä9êû[ä†i)[Eá&”6“¼Üø~|ßq®‘Àõ¹Q_ùCÜúó²(™vˆddž”çXÆk”÷‚òWɽ}¢Dyeá¢Ò|e¯áãîú&d™R‚o§0³‚;˜mf2“%eÛîÆË¾¤uüV8¶û#iZ x—Ée¦lŽe6·v) 2I†>n•3%šRÀòŽäåš*Õ|K¾!ï \÷ƒ‚…¯þwŽ"a.¯f­æ`ÅS‚Í-^2µé}{?±š”™LM–Ã:""‚¬#áå¨çr¾+h¬¾ÚS0›ö€Gl}ýÝ×[!‰4¸]çýd0;i®àóŽó+ ôã!äHŒèk·.,Vµ/ÌÓjK[]¢“.¶ˆ¿m5O~£½þf‰žHLÇ-0Ýun°}5=2}´×3¨ª´SŠè`‘¯ÍˆpåQ/ŸG¾ŒìtxEî^÷Ód]ÖÁatyYÏpºˆÏíyž1Ø‚õÝ2]\©ÉÈ“0ãJ‚‚+çžØ-Y¡pÑáçY¾pÔûuÊŠ`Œ§ë‡#2¢£ø ·.×Vó5Ùä!mX1ƒÑMÕºã™Ý6{<¡åx3g±€æÿ~Ú¶G¢F]W¯~,†ÙŸGÍþX~¶å|IRŠOýºÃ,!L£PÛA¯P¸9{^c2É"Ú¹~}¸®ÕUó‹YQ'~Õ`€ƒið€ÄE´™ù 婨£QÇꀤ“c°Àƒ#^pGJ‚e,!ó˜˜|ȆcÖ¡UÞ¸êf÷5l½b‡òL^ž¡Òƒ±Î]YƒâEç ·òô°Š§¿küæÒNÉwhÒܾÖ»å¾â§fâ!À3í(šÀw¨O1 åÛßs@ûzãÊÞCbªœƒ—8‹­†~23·ê|ûž §™¤øCdÊÒ‰ÕÖ.ìÒ¹GàÀ$bG(–ˆL0ÆrZŸxIä9@¼vÝè½súZIŸšð3Ýæéçä%­úæD¹)&«®L\Ï íXî@Áˆß÷cÓ^ŬAí¦Wú”*Äð­ƒÈ)Í'R*ÁŒ˜‡U|ŠZßßl/Ï¿mûH½hŽë,¢¯çœ³+:6‰}¿ªµÕMºÎ‡ÏQÔPS¸Lèùô¥4þÇÉF¤Ï·¬hÎÕ©‡Ë…âß%°? ¾ÌæîßÃCv‡ÄI_ƒ`ÓŽñX{r®ç§Ç§: éÙ†ù|Òï•âa‰°¹(ïªg çWÚæã:î'ró€ÓH\ÃDåOõÃiEé+ò,£xsä=äqé0« ýèúš¬•Zu=|d æ¶ÚVœcFúÉyWhXùû(ÛY*ÒtIì8Û ³Nøºßla¥lN’ †—_½©£]í´$S4‘‚ü,Ý.ú‡t"ÅJB"nÍIj*/ »@Kº5 =ºäKÞ$‹Q¥5AÞ´¤?)•F½„—Q¿^ë—rY‡ÁþÆÇÓ0jüãî Ë*@Ukʼnˆ†dÌi—ÐŽÆ®dëÖL¹Q° û:ÖxB†³¤ Ý…­1å_eàÅçÁ9;¯5Ü3;t(;a-4auÈ­‡:— CÉ'¸P…”ï'DxÂê[Ò@²kö2T[´ûÅ`cOœÔ¬¬fM^+!Fݤõ÷?eÖj% Ñ0ІO˜ŠÅÒCUVƒt—RC)¿Rê-ÄçÕ–¬½\PÆd†há–Fí›Ä—{¦Z2>N„`Aš'· òòU^ § d¤‹ ,…†®'e¦]F3[6×qqjÙà²p¶;ÀŒ4ƒ`Z擉Ã`_ù}‰R»¨ ¤ËYqLYk±IÐ,Ä04‹•âyð™°Ókn:\Ÿ?éÅZ‚Âì´¥¿-Ç¢ ¾ø~$ Ræ>=¤Ön~®MÛùÂ߬¤¼xˆ•B~5¥Ñˆ¢6CkjG…N°ÌwÈ¡*R{=`©³Œœ\5;qÝÚÎ2ç—Æg=ÖÞld÷hIø9_í§;GOÕýGMIŠm2{š y[+¶ˆÌìôzŒ0 ž§Dî;‚_ü,á$ÉOM©—úÉ\WDooÅçi=Ð*†ì é]ì"“$uþøp¸š<Êúv>ŸðRŒ-,¿îiõßFÙ2{{úë#ÞÛOcW¹ƒÍüqò_4¶“•3JÚ©ñn/ë0òuÁ&ݰ“z§O3bÓXk¸Ë$:¿7¡Oà‡aaøð¼©Ð[Ã+1 k5cÒØ>¿”mÓW3,¯¸.uw®òbs9 S˜¿ÐŒºœýè™› ÃìíOW³= ÚëžiH‹öLünÄI‹m—õLk4¼ý-=C0A†Šaµ+Å%6cÏb€RóêåHù=}àü‹›4u­É©’ê§JFm¯&‡¦Û —o–4œOSŒƒU4« §’0éÝN,í"›¨ U‹ÆÝ3±|Y™POŠ,±êè¦kX»x×S‹±ÇrL+ª š IOçÆ¡àã ¢8ÖŒ&5ÝBÞ¹§/U±ª½nì{»«Ôr÷;y‚³Æˆ¼iº‰~wy"˜sL²¹*§å®’W3¨œ­å¢m)‚°RÄrD+PZÇ'_*_Ç ™´Ö/Óýž9ôqƒóñ¾x%ÃÉêßHÁÙ-ê½})ÍZà÷¾£‚¬XGð»[[gùòäsñ›Ã½È×sE5~†| 3”7&ö°‚+Uù櫜j4é—æSþÜh†o Íl€¤ìä …‰SlHç?¶Êî­Å…ðë@Š÷•UœÞ=‡”0ÀKéÄ“Ìm–¾ñÊÚÁ‚‡ß„‚ëzÂ(›ªìUš;3!cÇká‘YO„FÙoYÏãýÎèµ.Õ­›îõ¸k–ºØá¼Ð hª€øL^!Ü*\9U±4öôÂO)(70ñàÓ"5ª –Þ2Ä2zަržuðõæ­Íë¥Ù•¢"g‰Úå'ƒt,Ë>‹0ò —,Råßýò>ZIyöË'}Áxh¬ù“Ô7‘da§ð°Öµ‰`}.Ùû¾µÁ#w'wæ b…½þ>5 Iu¡0FlÖÃ2l±(s°ìwa ¾1€@kãdßïS9AâT6Þ©ºyA“#صÔ·áˆ~:y5ŸS÷²?:.{¿7Ê›¸´Wp-‡z£Hj¨e>sØtt™£} ª ’T\‘âÕðû —¬¨2â¾!£Œ 5Ås|2©êF•§zÍÞzÚƒe/-úíÁ2õdT34›ä‘¹暈S>E°ÿ²¿ôŽÍ^×Yz˜º&6ºƒØx2¯Ö…¯Ϧ+±yU–wQø‡–ϯíÌR¶¡eeâÜ{e‰(ljP–ÞP]ÿ±Ñ~J3¹"©÷Δnª =ãV]ãÜb­F6¸{÷_á ‡Y#àî';¯p¬_âuN‹Î׸3b“çÏú K46ÙÅBà•€wÞ[0ûø\oø»r— G̦éèãÃ'ßOpb`Iå·›úIš8Ž(“&Â¥môa1î÷x6!œ/-»ô5Μ~Âûˆ£º?÷e‚÷H"t‰–‰¤{¾v (Å'Ïeàïù08|º—aÐñ–Ž#f§_‰Ûýj‚wRt!‚y<¾¼¯¤«ºxTÃdô˜Í…Â5 »GY'ÒT…Ø¥`ý[5Okî½Dóùʼ_7‹i8s0Aª?/,É(Ð(^¿ýT3 úóœÌ¢éðˆN¦Ji8bÙ~Û’°t{‚I¶ƒíN$*ªG÷¨–AOÜ¥'üp¬§hª2ˆÉ¯Äo&)ħÐRX¬lb—Uô#qŽu.Œ‡U¤Ë· yžU$Ø:·ìîeØžÄa«b„>åE ¤bL%OuŽÖÌ”zþ¯}Nå®Ù—¸çÇçGˆÆõJƒ 0ÓuŠX_îxî 5wß)Áê/Ny(ábïj_¶‚œcŸ"uULó4Ò*¯7´zy²Y\î ÕÁH_V/Ξä÷ªÎ”›Ìm ŽkÒSÌ¢pJË)xy ÅÁöºv4vD1^ ¿°¼h,®õÐÙzwôp&½jQr®êt 4®àYl*s¬†álæ@Hê`Œ=´YúØú f½ÊQºZ‡ûëb´_OæÞwmìosè=ƒ:-U;‚Öñ :n~é´„©ô“¢Â™`ÓŒÂòpÅXÈæ·&Ò¼ŠvDmGî.ê Á5™©p¯ñ#Iõ«¤5\g¬Å5':üÆ.)nx9 ¸×ÖШ7k²õá1¬¦³l5vôßäq””³çÊuòy•bï˜Zç×ñŸ‰ì!óéÚS\ÿŽnŒ¨“²Še– )}—yC°95t±›B5»b'•lÊuzlJ~ÂÖ£ÚÎòĉA_²B§ô&¹NÕ[”¡èμ½ÑèÙ-‡—L¡ùµñ¤¦ë·Z†Þ@éu1zù!¾è¼C/„ƒ˜ÒO@_ú³xÉKƳiº‚ë±ó/9l'ñ‡ Y[é§öúDc{Œ¸»OÅ=(ü³úçu-Ñ¿c‡µÉ|n?ç=zÒñóÛÅ^ëWÌ~uí÷ å«€·ZwD]AŽÎ'±^ŸŸé!ô6…2áµw¹´˜5\|‰{Ø"ë\<£7ž—º;g4ЯØçEïõ aU$ºVheʃQw´s4MP4zR¸uH¦+8™¬y¯ŽTxÌÖmÎN¹…2E_ ýÚ\Ìbéþ5€¼^0KÔ=8JØÛ6èðñ<ÁК[‡–&¨óDÞgR=¿nbÐa÷–lL¢oeEücGA™Ûûåó·ì˜©QWæ府qÒÞª¤|Ò`4yË>‚) x³aä™xÕ;a[þÇà ¢ËÎLs¶Þô²¹³s-¢qaó:Ȳc‘ì×5Ÿv­–hì5ga´,“…{Ôðæ«š|› Œî®’K™=Ä¢fÚ_Õ99.ÄT=i)Óe*7Y£Ï° ©c¤½~wdžk4-«©bKÑ”û…´Mwœ?ôà¦×øÔ*"‘é˜ › Š1Û+Ñ“ ½†¹ŸB/tßv4k@¾Š ž6—$èvRGë—ˆ³–@¬,~ ÇJ!õî«nl*a`ÈØ¤¸èGÄkN0Mïós°áÿ’ª†í\Æá5J*aþ{oDù eâ8|Ì/é’…ÄRÙ= 9y ™ˆé{ ¢{öZ¨Ïñî d*¨TU@èSÙBÏÐO“yÄ9=Ud"9›[]!ÿeœžZãfÅ!›“øûtÇqŒ¹X™ìCÂ)±k{êÇ1ÝñÉ„²ÄH0òjÓÌé¥T#…=Û¢–Ö <„&_dSŽìŠz&ÎöF`gºvrrÉ&øüZº³§öN1&à õ^[ôìkEƒßÛV ö¬¡žØ¶çƒßc?¡ÅÝ©š7¸å¿ €£ÒÆÓ–Š ¢é~ƒòÚ³¡Ôå4ÑpÚÆQkcä§}í€H-èç(Á« ¦r3üDœ'³s'AÓ>€ÑãL Vœ@)Mjz‚yM’iz(ØëÞr-«…á{¤Œ¨î!”G²·sB¹‰¦Yꆩ7ô 6g«cŠV‰ùhsêUr85kÁçîóÖqÊZ¬Pdš–öd O7€^¦ÌºCBÝ̀ªþ!ìzƒ"ÒñøLÕº3V#›ÆI¯àyE†s11/Iå­2ŽÛN-È/ ®Iê®G‘3Ú¹´Kà‹Á°:úûKsÁz¹Û{¦¬åv?¬•(oeHŽIr^ýC5ªˆtÃGCâAÓîœl¶2fè˜|r„ößFASvô Û߃¾ cÝŠÈwÅíóÍÇðÕ.&ãùî]m8ù󥕿„Ëñ.8 ×,«•:M‘kªAèæ4¨¡"LåÓ†9.—ž3ê·MŠű(WM –’($”vqõâ"ôØJ5|¿Uc#¬ÀÖ{Þì™AP6ø!~ÝMH.”áEЙü…‰xÎdtN¦ ‡çC-”%|ôœB|mÀÑÉNQ1¾J›ûÂÂ(G"ÉûZÿhj˜‘³þô4ƒŽÆ¤Õ ÌfúÂ,Wö²utÎ å7Wê¸kØ~<¯d. Iî˜ÜoQ‚ƒÏÇg޲±°‡'XÎDVæ(“Ù[¸Îñn,t»­Š×ÜxD¢T³[°r¨gw/ÚÎñ?Â=ƒÌ÷7¢nÙ*ÞŒ´C×ÓÚ$« 螉©ZÈŠ…:*CGֺ΅ËýÔ'¯ëî¥ø„— ¯'n‡ÞÉÞÄd?O§Œ›6Ó7<¤çÿ~'“nÅË1ÇÌ²ŠÆÛ÷~ 1pë3Ú©)döß1òú Õƒ÷»haÝUÅMšIŸ´T•eP}Œê.ƒ4vÛTk»cQ•ÒâуF·å,kþÅak‘%#ßêdo­¾%²´a¢çnט­«N“›hV²Ð„€â.4Gàv5EšåKß ¸{*ñÜOà×Ék-‚9&u>SÅÞ¬šŸ™ÝëàÛ>¡piïâà÷1};s¦³óM\o;ç 4wz²w‚š4ËË^^~K½Toð ¯)½½i™®}#d.•a©¾=„«s¥!H‘ŽxDrš/öNð WJ>) F -¿ndÑÑáÈ*cWh?–ç¬åñÛ5ŒÁYeŽÜ<±%§EÜäÒûQò:ïǰ˜èÀ† ¢IÌÄSucê  È—k‹?í I‰&#4 r“RÒ±ç݆€+Šts¦@€o0ýmeÌÚ !aé¥s‹{2t8°`í«•E cÊ{»Ý¹´ä ¡c¸ï¤TäϚʘjT?赫Ÿ­Ÿm7”$}R1™òõÊúÉô °´U±#*s¸¶Äpzâáf4œÍÙµ \ÑÔ“FõFÕØeg¿á»!-6%¹BeºSo‘npÈaa‚Õ£48H»¡Yß%°^!ìæ/JW ½2¿ü†¥x»#óe >­!’Ž`[Â7[»_²•¨çM8‚b>“_àÚ²~6SOé VaaÙo-fã ÏÙ 9ši³€IܹÓ!ôº†v/2c§œmzõ•ÍdÖÝiLð”· Sÿ„§b¡•,Þq¿uÒßgVéš þø €¶Cåj%g1¹"Ù÷›\y¿]¿Õp½Ÿ± môX :iBÖq$0?¦˜|@¬>ãŠÖ»˜Ì‰wjf%²cÁ¨ÅMüÒFFZ¾#t¢¶À+<±Cán%´UC/G]‡%—1Ô§¥Ox†¹Ò;Eáú®VÅ^gö©•òµdÀ­ëU¨Ñ«÷AªyËëi­©¾~XòÖª–žCäF‘Ip«ì{±w0ú[6¾ÿhÆÍwZ#ü7u+=îLOn¢J㿃ê?'5!lkŠì@£[¾ÂšdÃà ‘)…GáY°`U¢dÌ|¡¦éx˜ 'ú,æ ùRyW¤:¬×2#?·.‹9Ó®B¬¶ºž™¤ŒËyɽ3Ã8ž¢ÙGáñÛÐpáO,®RÎu ¾¯aˆkKÇ©àG‹Õ6p{í¢xc“í©¦t©ßAta¡ëKP< …;Ø€¼]œ×þzZ©îcV§¾ð‡Útn¦ÓîÙúºÇGYÅVÎ%Ïä A7õª‚«jˆˆ™WGn´®í "©×Ä<»² ]ɰÂs~iŒ°9-Ó‡!ÑӉîQ›rüXN„£QÈL”ìÓ~/ÈüÞȲëÙ†Ž™’ž-Qx^æ¾QUøQÝÂ]öHty5œ‡lìSÆ JAIÿSˆçýò– ¬üIð©qyãIî ‹³ª25yAø¡‹ü÷Í ˆ½×a‰o+ˆÕ$üI÷¬\ºKZ*JÀ¯ß7ÿ 6²-SmnU£Ï•çºñšrk¿'\Ö"3jD¸½_ÝÁ¦5ÇdT|Cj<.âóð`Ž1i$PŸø(8]É Ðγjn>‚ëÔX¢«W¢Áxp%·ßm Ërý¯ŸÎD2K§¿/IÜý,0c+ˆi.`Pƒ%UZ†qí”Úo‚U®/:TÔjþ=¥¨Ù’AïèaýQ)O·hvk–yÙ׿*ºD8–®ÖéM9 ‹4X<£Ì Ý>UG¾¼æùÐ$^°_Düåúõ™J¯r)ùÑI°s>ov€T¤Æ¢þiþæ,g•RÆÂŽþ*—ùÒ¨÷|ÜmÞV:Œ0OËb†H½~É`J°ò>qs0 ¤SOî T­i¾öXPï’TSƒ°ÙÒÆÀ\ã3Iy¸Oª3-Ò¬Îh»ÕzùÂæš­jìm ¸Íêñ2¬Jä’c؉ª·‰EèWψ˜¼UÌáQºxW—B§>I.ª˜<¹åjp»dœ†ÌO¼U¿ JŒÜí°"/У“Äßc4ã‰ìÞ;9‚V– *„)LqZ‚`^‘ ((db ʵ©òx^£Žq…ÍóŒ‰àGŒÕ.ã¸ÅÚCÅhÄúAùrÑ„ÊøLsµKŽB§Å& \rîRà}®+iË‹;r6´º¯rý,3Ï»bu”H) " TÈ£¾‚«ÞHÉž`Junˆ~} ¤¥‚Ÿª<8¢kñH9m­>§i쿽2 Éç×|ÄSäoDRÆQ¬ÓˆW…µÅDóÄKœècè£f)]gjQ“Ú”BÁ¯<¾sÈçú‰ÉœÓxüy°õÛŒr”%Ëipæ·|ÇG\ù3»A;_çýËÐ);ì¾~8°ib(p½ÙɪcARêsd´óóWÒX…u‹/{¢ÌÚV-õóc&‚˜ÖÆú˜¯¬86X|;ÍI™¢¯T›‘—bŽb}§Ç°Â—H܈­›_µ« é¡hìÝ©9ŪÊçÓ^7\óß;·޵?‹[Co/æž0Öc=”­'bÇ´ Ç^" nQ›¬äûÏLQ¦´)‘7jب ¢M¬#ȱàe%°No3¸ì‘ñ9úæ§Åˆ¸@jL“Qé ”Ø!Ëö>'!ئçpœú‘÷tŠÚß!ŽÓ›V x¡ÍÑT p7o ¢.åq™.ÕH³¸$5ÀµÀET2A‡„èbš‚ÃÓjivßû´uÁ­ÔuîE ë¤i¯VØW%ÏðI¢}“˜ŒŽSÜ<Ñû*êí9âÌ.ƒýNU Œ›L‡ó!#Ѹ*\À/Yíäé@;1(kÞà£HÏ9"bï0„Èêà Q¯aòUii­„»ë}t»VÉVgp’Ig¢ñ} ùÙ6Íýö—]%¬ ÄyôXŽŸc€ÙÉÑìˆÍƒÔ£Ï?ÛViÙ;ÍŒ²™:M¢í å]ñçà}îJ;¼è~bëJG gû]üÕä·aƒÀú‰ak¹“+B’ /çhÕâ(©ˆ¤+b*ÇÙ(¯Ò\ξN°WDdï>Ó[Y OÞ_ŠEÅö.vêÒ³Eçt³ ³n /Lˬ‘ÙÚ÷Fð}(ŸYiq—aM•gÆÑ¿¶À;ºMQ3Š1Þ†l˜…Ó,1ašN§GèA̧3ZõÅXø'«¶5¦DTsxÜQ?+à_˜Q‹ñ~¥¸_ÓSAXçÀ~Zšwó ¬]Ûê6/æÛO ¸+ë­,É n‚³j…h4eàâÙå*åñ:¬0¼êÕ·XH›LÛÖÄÞrJn&Ü쎨šiYËN½îD?‘ñN°@)E¥&Ê¿BI {']ñ¾ÜæCx2¨ØQØ -85ÿô5½ ŽDã ÷õ †µ®Œ#ôBÏ1T™'?Åþ¾™eGWçøWºm_± ‘³~˜á@0òÒÕî<Ê&eÜŽÏ&Myß^"U‹—c¹ÒÒ#ùôÿ´KüdÇÌ?eë]ó!a}D9äžÓÂÇw1q”~cʬtÙú¡ÊÚpn"Ë‹Õè‚° 1ì"ËŠ€ÚÄvœê²©$ ±{<’ð¿6‡6Ï‹nn^Æ^¶èOF‰‡\Ì2Žêaü1E3J†<}–•ÃúŸËûc©6´JròГgVoÐ%¤7l€ &e×ÊôÖ6×M:¼DóXz2†½ËækÛ·' …&¸¶ET7%Ÿ„6NŠ®éŠ&o€@Ÿ2ö„CR’V«Î¢³,³b.ÜCèÝC'ê0gÚ‘½Û·(£‘·\M|N”¶æúomñÆõvú/W®!H »LMk6óÊW|år…à3Û%ÍE­#P´por!* …ò@£ÕSôC±~­/:6*€–ƦHjÕýÝÞ×cùššÃ;qt×ÏR¬ÃUA²lqkï÷ Ld7X·²¼Nú® °…³!t¤¬çkaRçz物9•ØþÒ¶Èñ}â›báÜû½ÒÏQ{ÝQT,à0þy+p÷‡"&§Y󩻨?X§hª6j–)yp1sÓ=}*ïÔÄbž‚{#RD:[ý‹è‰%‘”âlxІ˜7?o¨ö2g‘Ó^Ž®ÂpW1!Oy~a‘ݨ¥ï’®ŠCà³2§’Iû9Rö.ÿ·}\:¬p‹…¿¯ýšlLêfèáÎÒW™¥µð6 =„ƒŒ°÷e’={ÓbÒ¼'JìIüløÅh†•ö2IBsvÎ%s%Á(û†²UÄVÉïLÉjj릨~o0/·ëí6Þ”`Ãrz*þSëYw }aÀêþc[Fƺ(Ρ÷Ò[ùˆêìpªÛ-—[A”Š“xÆ,V­ÂÛõMœcÄï ããëSn¦ºíW»ÜS¤'•ˆYÌ¢ˆ‚û5ãÎê¢5§Åƒ¹÷O É>ÁoE¸„½ËÕäÛ96õ°äÆÍ*D¼˜ÛwqA®½®†€æj…Þ-ÛH¢1Oÿ9c@¼âbD©ÈåÀ‰¢—[@æ÷÷HÅ«šk¦c^§œUÏá_ì_8ñ@åÏ­s21KÈa«;Ê’{ ÁŠo{ÂT̘­v¸=ü7R¥îþk˜ã‚ TACU4‰rµ<…eúÏîÛ›@pwï0õ÷þR{KGWñyJ9&ˆÄ¤qãY­Éªà¡eÀb ô﹓í‹[‰ïãx!ï«»…ö.qÈ"iÇOÜU¡¨›ÿ4ÅùÝ”DàÉÕ+ endstream endobj 260 0 obj << /Type /FontDescriptor /FontName /AOITPE+CMSLTT10 /Flags 4 /FontBBox [-20 -233 617 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle -9 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/L/M/N/P/Q/R/S/T/U/V/W/a/asciicircum/b/braceleft/braceright/c/colon/comma/d/dollar/e/eight/equal/f/five/four/g/greater/h/hyphen/i/l/less/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedbl/r/s/six/slash/t/three/two/u/underscore/v/w/x/y/zero) /FontFile 259 0 R >> endobj 261 0 obj << /Length1 1370 /Length2 5960 /Length3 0 /Length 6892 /Filter /FlateDecode >> stream xÚwT”ëÚ6R H‡ÀK7 ‚¤tw0À3À ]Ò !Ò-©”´€4‚()%!ÒݺÝçœ}þ­ï[³ÖÌûÜ÷uçs]ïZÃD§©Ã%m·‚(ÀaH.^n «¦£Ã @ ~nˆ‡‰IŠt‚ümÇaÒ‡¸! p˜Ø dÝ `ä­MŒ¼ªÁa€²»ÀËð ‰ñ ‹@$ú7î&È= 6€7  ‡A8L²po7¨=ò¶Îß«5À+**Ìù;v†¸A­Á0@ Œ´‡8ßV´;:pk(éý¬öH¤‹§§'7ØÁ w³“dã<¡H{@‚€¸y@l€_#ê`gȟѸq˜]{(â/‡Üé vƒ·'¨5†¸ q‡Ù@Ü€Ûꀎ’* áýVý À üYÀËÍû¯t¢%‚Â~ƒ­­áÎ.`˜7fØB €†‚*7Ò É €a6¿€`'ü6ì†:­n¿[ ÒZøvÂ?ó!¬Ý .H7êôkFž_in×,³‘…;;C`Hίþä nëÛ½{óü¹\GÜæû÷É ³±ý5†»  êêQ’ûƒ¹5áüÛfA‚ HÄ@\ˆ—µ=ϯºÞ.ßNÞ_æÛü}]à.€íí¨-äöÇö€H7wˆ¿ï:þyÂáål ÖHÀ b…áü;û­bû×ùöþÝ ^€ è–~¼è×ç_Of· ³Ãœ¼ÿ ÿ}Å<òÒ†ŠÒúFþ—SFîør ñ\|‚ @TTüÿ™F ýÓÆ„*Álá€è_ÝÞ®éïŽ=þP€õ>Ø€æR‡ß°þ›ç¦ Aõíïÿ™í¿Cþ$ÿ•ååùw¤àîäôÛÏúàÿñƒ¡NÞ·ÄuGÞŠ@ ~+ØC )W buwþo¯|+i˜Ó¿ E(@½ 6šP¤µý_|ùË®÷KiNPDŽ€þz·\¼ Ðùnåeíxûþ@Ü’ò· r«ž–”‡YÃm~ÉŒOP»¹½q@·\â|yoõhñúMc€‡GÞ†·ãù¶p7œ_w*Âðhÿ2áü#­µ»›Û­º~_ýmͿϿ¥ xA¬q¦&àÖâ¡Õ¡-gUÒTž\ËŸ0ç[£âz"‘Ì_s}íUï¦?q•±´)'HÑœ, žð£bß9ò2íÈ šKVÌA¢È÷,ÉìqåõŸvØAhlà”vŸ…S¢–ì&hQã[š ›°$L\… wò¯V¬\·"VE7g è„€.™ +ݺ‰mDǸˆühdJGèf’ꮫ¤÷ù5w*ÓCqî½d—öñÛ·¾ÌÞžþƒ|•®J¡òp" beºì(H2•(Ì2‚'²¥‰ü»c](¹1G¶îù[iuie¥x E¡Ý}gmˆF¹©_Ÿ´C«ÚƒE)"W`ó|dÅ}ƒêhF/éjŠ«N~0(.Ð5IÃÒªSPbEè÷,fì´—oCÁõ!Èvv5!}Y¾ôßw·_þ,a!o.ÅoqÙ‡ÀWØèG[ýÇåU,JLÙ‚dÙOÎí¯h‹BƒSŽ+B¦>ÈÚ¬ª1¯‰| ‘Öëã3î^iÝAàÖK£‚ ¶ c°À©í݇½'áEüB©ÔÕ/ï=$“{¸Ö&²³Qšç%:(Ÿw„DóÝÄq÷»ë"FÍÛ4g]æóLð˜2Ñ<óB±ÿi _”•iU]ÿæ«ÇKS}°íÂHç‚§Ìæ1@Ìœ÷†­î̶hWÌÒ§ ïÁ-=§&ômílë%UÕL'‹s¤H3‘vÄŒ€˧W¯‹ñ&S)¿¡Ô GTÖ±íP݈2~Ïøa·‘Õ”o=Ê9z¼Ø×¶æj±sÀ©ÈŸ÷ê°&\×:‰áï²#ÄÆdÉÔçõÄ7Äj\uÚ´Mzßl=«J×/ªº­‡¾bAU‚e½ iu±OÙ£6•UýÐç 1õ³›m哽÷]·`ެ×¼o\ïä¡x+UïÞ¦ ¬O8|V“Nå8wÔŸdß­é°|¯&é'g½eDº±éqÿê³%.ŽVÏïSÓkî5$=6&tþ AZ0µýóÄÄ­xwÑq”¢:”æ× ‘Ê%µkŽÛ¯Ù m‚Ätê#ÙþØEíØT°àÃØŸÁTg˜×õgD¨Òð{}<¥Ž[^m€üw;g˜dɳ躉¡A7Léâ).|ZÒ*¡®Â'Bĵ9¶ÓRr™wÙ«„|žwBêœÓwB%±Ä+ÂS—© T”6OÌlË; Xš—$‹iQ¥1oH©ë„RÅ‘¡>«1Í~b¤ŸÊyô*WÂHýÔ 4‹£:t8|ýÊ-³0BÄÎÐÄ ùˆj™ú±¢ßãaµ)õÞÉåË-9'VuÙjú:óû‡0ó ò@{<½=Ù- ®¨¹²mE ©ŽŠÝ–J¤6¦‹ÜÍürÊÜJÂÅeCÞ–7éîÂF×c´sšC;Û«MAUµŽ-gi×ÕÂõ@1ç ELCӳВéeÇ # ™ÙÛúë°é'é%•ÏýEúÓÑIP?I{ñæpC2bÿØÆèo7j½9Çø»>Bᆠ]“ƒMÊÁþbëe„FtÄs»Wc ?ËÂmO9uJ˜êКÛoDûŽ^Â):¾©è4$Fչݣ á9ÑÐx)&UTǾiª‰—¦ßÍã1à Š×˜µëmJrHÆ‘H´)z!ºÖë¦%_B 2ú~Ÿ®Xrz]Z^ûêÍ|Œ.ÃæÞÌ£8*÷oX“Œì¾Ô!YÊI:4DúºF:É¢˜8ƒ›Î5éµ£Ÿæv»]áÀE+ Ž%¤©r$ÛsÛ±Èõ«ƒ¬‘Ôsóº(e÷3Cé$vŒoˆl6 Gkч ÅÓAI9â¹*®4‰©G¢v;?+°$¥ºG“ƒ‡ævÇo…ù¼ÒÜîK-Áø$YÖ-^a›yr+×ç!°“Ó@ÚYÎg)ëÇ¡¶ï%,„gA‡ÒÐt\ZòM«~™šÔ´ÂzÅg³™vQIÍ0òÔl›¶ÊŠ7µ2ÊŽé_9¯ LQ¥ù‰Ï`ÛÄgÇYÏSû˜7Þ´˜Fwt~žnˆñ0€Çö#7W&DX%Þ/KR€ìT¢Ž«•ÉüøH#œP7‚1¶® v’´¹ßñÄ,3‚V\hæj$ˆ‹\Ûºd½ï`8Õ §Xúd×ô¨M옆:$ów*ø®›@Ý^EW§´k'²éгü#äÃ]ªÐ, j¢LØ|1Ü‹®3š£Œ³’iwcݹ7™^݈’n/”Hn>Ë}0X’°ßy'A’ `?-ÄÑ>òîëP«‡*ˆæ¨ôàæðt.WtÆPÖDõ:•ÒxXˆ-š¨›dL.Z¢œ{ú|ÐýJ› DýrŒ^x¦‘’ð@Ý»òã@¹‰Pg Ñ]h9úÖÞÆsÄ“S¢ŸIa/ IÜúãdô?Až9[ºI‹Péë >=ñ~øfÈM‹k0ÛüôÌ#(Ïí3uüV£Hܹ‰w¼ BGó±þfo`¾’‰3»öÎÂZHÚ¼)ÍïÛR†±»«±‘ñ*c9£×÷kG¥«Ö{ª?ìLFOÜoŸk±w-q…¿aK´P_ûз Áâ ßf‹¯ž¹™Vdšÿ=ÑŸ°¢°o¬¸K·#¡Â3dÊÒfö˜Â½Ú¥Ì­Ò eÔœ—Cšõ Û‚.¬ÇpØjRUòpYË»›àœ£ÒLÙX¾¤kPä³~+Üh;œ²+Žӱð<wû‚E¶&±\èÈÇ«æ8ôÐÅ{Xá›ÍpNX¬]¿ý€óìèŠê›ƒW¡ û.»ï°s ©ô¸ØÅKªŠÅe6äÈ@æFq˜½OÜ ã›5­YHÈ× ñaQCs;åæN)v xèŠ8ôa†N¶¤Ë•ÒSdCò‚ЭÃþuŠ÷o›·p,òaï÷2âj¶ª™ÞL @üÕú…¨G“øR+=¨Ÿ‰_v7eœ2t=3h1¬‹8P .ÍQåÌ›dݲ:å#cAíN«µ([õߦ¬VVÀÉ=>EN’]ÏZy¸Z‹L.Ód©k*Æ­Ù—µ¼¨ †d:†„ep®—›ó9éxBr¹û»“;Ö‹p»÷3ûÆVŒ´? ÊÀOÄ&Þ-â½& |ga´îê0$_î/ŽcYÙ##LìçŸÃo£z#Ç< aÀ~ôåÉ ¿?IU¹úçD¡ý|G‡ôÖ±™ærw½E ˜¸"ô„ºY„[ËÙÚ7@føò‹ÖË|¥é,ËL‡z2ÒÍœŸ‡¥ßªP‰ d×Ξ^­íhBçOhggs$t8’@6\AuºbTÀÝWj<,Ue¦ç_îÛÞ´Í»#ŸÎpÖ_É‚ó³jã÷½þÃò»Í¥Ö¾¯3Nï°*éCéÏìÓÅ&²F:Ì9„ÕßÞ‹:¦‹D‘ßë-ýä§X‚WÙ`/ûþqî.R.+DWêzJžÎRÂ̾i³}ù.z­v:~÷ØöP/Œã†¸–¶ÙÛF !-r®ì™M»Nçí Ò*,²P~¸æ ˆÖߞΠ«jú™V­‚ò®§_ü Yçb‡4Ñ%®7Ëû¢håÉ|§£}žüZ^OÜ/=+ÊŠ“Û×Ù«¹O9XœÓ•negM^Э2ÒîKðYòªTàÓåruÛ`àÂÎT§Û;¾˜àå e ³áŒ¨›ÒU•ýìÕ"o“6²o)„c¢S”h4&ïl&ò”Ø"7Í%"a ‚wØÃ£:mƒ½½‹¿¹½L*êñ‘ylý¼o—ñIkàeÝÔw…Íš¬þ“XU@fù)Î)‡oŽ,Ë].Ê`º gmŒcô°;u«úM’¥)­ _åã0vò¢!¾¼…—× îëKÒœ¦%´G ¹áÇZ\ŒÝ¯7Gž¨JL|¤ÇpuÙó+©!¦y]ó>ÓäK½˜´”RÜ,IyäC’šUªrUMÓþº‘m²3[膌úå Ë²ü®cV-«ÿòCRŸüJ V¿>ÔŠè D‚yÿ>mtÿU² í>ŸCH:\†’™˜ÍwX}s-”ò#5¥{ûª(^cÒÓì+Àü¢)àç¨RíE¹¸;}tw´¿­o$P$‡$äZÚ¶šÐ膔E‹‹”¾0Zöq£“ÕïÐ?Œ™ Œ2Á›â¦“L8uÊRI–1mgž2ž¸äœ1™ãîo–ÜL)Ë´ËRâ|£ÐÀîÄ÷rC+î`Œ2?¾,ûƒÉKâDIl’ØãK-9©.hïq,Ü©}fû’¥ì®Ñjs˨{sýû½ãS™<*{çÛŸ¯Ž:#±ÐAZÑØDrZ+޹÷ónžt$­%à œ0¡ÒPÂÙe+ž4ÍMšéÆ+?q½õbdÐíJѦÍhi#àIXÔ¹> èýý¦&´›ØCPö8vI“!­CuÌ3\CÆVÝ·.¢ØÏУ&%ÍÕB]°Ï“'–>®Â‚^ëÕÉ &s²áæ¬àš„—ËFt¾'ˆö¤:çz\͵Êàsè·rKOï̺o(÷JÜ|îm=I!ÕñJ¡t¤¾ ´Ð.e6÷ ŸŸŽšŸnã"‹ÿVÎ'äGìqô*OR{8ñÂO`¼þÌšðìòA¨çYÀº¢®rVD0úE÷‰ÆW1¾¥l“L·þÀ×'K¤½£V”T,IJêò®Dö¢Ýòìéõlε¬Q§Nººx3•Óetr 8z ;I9k§yW++“—÷mÍËC\+iy63b¹6 =§‚ ] ì¡¯{÷›xŽl´ ˜¥PÐǽ“ l‘+Kôz¶|—,GêðÁ^cþ ÔŸ–2.j8½$Åôóh­F©$¿™¾®\8úË!ö —ÛøåÌÂüd)/¸dæe“¤œ[ o ¡³r„Ã! èmp ëŰ\×ï2PÍÖfÎÉêøÝŸ4ãŠ,ªÊâ*8F¤é|Yô_…ŒW‚m†ÚdðL|ù¡;+Ç™fñVlˆlð]’³«¹W»cÝb$Æ*‘áäF/Íjd‹‡Z”%Ì„«j,¢‹ÌÎÕ*õeÉãHçñìF¥oTâlžáÖ™öÆ.‡6ƃŸÉé­<@ß;zÊÙB~t…ÚÞPü“V†¿ A>ˆ/zšÑõüMÀ½òY…@i.®ä[ö•ª>ç¾wÓñWÍ/üŒ×ìûÒ³‡»¯+©QâȾŽÑ:ì ºú›˜Ê3𨟿$r bj`ÞDz0T¹Œ› q_~0ŽÕ=T$rÿ ¡êõÞ³7á êæ}?@òLißå‡ ø«¡eb % õ:¥±{ó—&ô22ÎJG{Æè‹µŸj:õ&_QõÆÉ:Ú>/`±àÄàüñ¨ ¯‚5ýu±P]̰qé>`Ê}ìÁ·®ÖŠ*ÁŸH¯mƒ½#PãjíV;¹?M2/&~N6Îò”fX‡HJcÝtF»CêMÖÊ»,n(Z²R…D×Ì^H¤™ä3¤´¿¸_…hÛI²ê(Nþ©Yá½3ðˆs€a^Ž=Ùñ½™n©qµ¬ƒî0îšÞFÔpûhOLÿZIâüL&5‚«íûRïî§pãÐv]3S+7Ùå³ÅÅa/~¦MÉgØ%™ôSò‡?ŸQ]÷);•¢"J^…(ð¾S—JȺT¼ü0°ìV‘Úé †¾H³H}Ìø<Ï—ØÞ4ãMg@ÞÏñüZûÓ/ÊýÛ:Ë.{,nî5ëܘU ?4î›\»0PbÆ{2# Œ¬G::6 >[d´b A¶¨N;zá¯v#•àÁ&]Ñì†÷ÕzU>Ëæ÷ Øµ> '^˜ ™HD¦J~F`š7 Òª!³gìÐü¤C?êÊ׺Bì7óÇ­F¬¶÷èL‹…Z —žÛÇGo÷Šæë`2*N£Zá[*ê&Oö±Ø4J­‹_´»¼ç3£Ò‘ÔÖ¢­pØ–…’pûà‹]c¤òF+‹½ ajƼc¯ãþuXÂÃaßmeÄ‘ƒMùAlÿ˜]Ÿ5vÿú]–»2I?‰T6ïäWåTßa!+kY7®ìl•H¶Û "|û~1-f˜vÇÖ«‰Ì€.­b9(ºñ&ìÙ#<ªýX“ ±°%b6híf«#ÌîÀ¡OäÉ!n¹¶ƒxþVJªhCŒÏèÚ"ÇJo‡}<ÏxÑ„¡ÎåzÌT³Ïj .öœ…¹ ‹‰SIÐâ¢õç™Ñ»ô¢Ù¬õ9F =?šk˜ˆ*ÓýyŽ.$ù®Ãq6ÆÖ¶d)­Ãÿаxùõ~9ö‚ƒI ÔËæ))VÎõiv¥Å;Orîàp‹Q˺ÿ¯UV endstream endobj 262 0 obj << /Type /FontDescriptor /FontName /EAXHAV+CMSS10 /Flags 4 /FontBBox [-61 -250 999 759] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle 0 /StemV 78 /XHeight 444 /CharSet (/R) /FontFile 261 0 R >> endobj 263 0 obj << /Length1 1370 /Length2 5964 /Length3 0 /Length 6904 /Filter /FlateDecode >> stream xÚtTS[×­(ˆ"]J¨Rzï ½÷&!$…$„ ADé( (½#é½ Hï½ R¤IùÑëýî¿÷ÆxodŒ“³Öš«í=çagÖ5à•·CÙÂTPH,/˜$TÔ20‹A A>HÀÎnˆÀ:ÂþöØa )ñ¿Š{åS‚`¯€Z($PÝÕ‚E$À¢ PÿˆÂH• Ov@-> : s°+¢Ð„½öªÏ߯@N(,..Êó;(ïà  $P ‚u€9]u„B((†õøW N),-ÁÏïææÆqráCaìe¸x€n¬PæÃ<Ù­ Ô†8Áþ¬Æ`: \þ  àX7¼r8" 0¤ËUŠ+Ò†^u¨iuÐ0ä_`Í¿<À?‡óÿSîOö¯BäïdŠrBC¤=Žp„uT4ù°îX i÷ qtA]åCž@ŽÛ+ÀïÑ!@y= äjÃ?û¹@14Ö…ÏáøkGþ_e®ŽYi§ˆrr‚!±.€_ó)!00èÕ¹{ðÿ¹ÜÇH”Òëo Ž@ÚÁ­açŠæ7B"œ]ajJ0W.À?>{( Ä@Â@˜3æuàÿÕÀÐ ûÿr_íàã…F¡ð«5`>8ìêàåyb1®0¯ÿø·ƒv(h ³G ÿT¿rÃàÙW÷A¸-@WôA¿~ÿy³ºb˜ éèñü÷ó›ê*ª*™Ýÿ³ò‚ (w ¯°W@Š^>ÿ.£ AüôOªŽŠÿ5íÕ1ý=ñ“?àü£.à¿ki£®ˆ rþÃsK0zõÿ³ýwÊÿ俪ü?yþß©¸::þŽsþø?â'„£ÇÄq]±W"ÐB]IùßPØ_ÊÕ‚Ù!\þ;ª†…\‰AiïøŸƒD¸¨ Üavº,Ôá/¾üå7ú¥4G¦‹rAüú¶yÁ ÐÅ®ä}|õýp¹"åïìJ=ÿn©Œ„¢ì~ÉL@XÁ` З„…^à+=ÚÁÜÓÈχDa¯R€Wëùá( à׊ ùõ¹ÿ* uÅ`®Ôõûê¯zþmÿ–2 æƒ&FQPÉçJŸ×Ëßuã]é½9·Püʬ-HË1–âå ‰Ÿð`ÐYÁÆ®€¦'Nw<÷ÅÀ¨÷]îíã>w˦wþ³±ªÉØkÊmK »¼©]'ûMö0F;}¿h\ðÙN”‰®Å½“ѳ@ÑfÁµÂÕŒóz—5sñM 0ë”9ö.6\>©~óz¨3Û¶ÛÌ’4‚cïj¨fÔ~=q¤PF{â±dñ¶{f¦ó]{[œà^šFK‘HÁ‹;´žêÌI=Ñ´”QïÔ+]®q(*æ™u±YÚÏx|½æ/y£ã½Ü:•Í –ŠÄ&Þ I¤žïÑK´KMqÝ{üà×üÞ’TÊk)Íó¾]ïæÝãĶ<á´°ÌâÍ#ºÓ £m1§7o},Wu÷Ê1½ƒŒ6 ® è<ÚK9˜|þbÙûõ—ƒíù{×ÓƒY/³H›Þú6mÖ u4'ÜŒÊþú6|Š14Š]#?ò-$ÎÄVä³ñ]}Ñ} á1¾>¥c¥¦³¥Þ'T{pË…%Ë!ïbÀækŒèˇé ØœÔy‘’ïÌmàù£û]fƈ֎á‡.ô©½ïC]äh¡Ëíõ,C@BÁcz™çÒA¥E!U!(zë gº2žÀeÁ»CkŠ8ÝMh¬r-öœ€ü‰Ãk•¬í.\‰IßõvÅüxG|=O'Œ¨±A×÷Ð3d F±ýªy"ÛÙÝ«ÆyÉëÞ„ ‡*“Ír\§ùÞ¨ðPwšžG/mbïIÉûËSŠ!%f¬•¢Fî6×¶<s…`õïøœ·e'»(ÊÆ9cÕÅßù¾)GÿœŒk8À”ÿt­Ò²R~¦Ž6$ÿ.Ó–6'"-º¶p#ƶ‹®]6³j}oE–ùØÙ96IÖ`Σº7ÒHZ‚B“8©Øñ¹›ñ3%+G¬r ÆkÑΗ_UcÔ_—·Î3³ßÀòlyè‚EŸÀaOÐ’¶« @”vy† ½ck‹/ tÍD~Ö1<(yð}X´Á%#¯Vv?ÖszéãüèÒ¬ÅÙT6ûý^æô„…Sßú‘À¦wìä…óÙY&³íù§s†xÙá•“±IÑ4å)¤! ŸR{ÛÌšåÜ£Ckk.Š¥È-xùúÓbõo¸D’ ¹–²¾úTH'hw ~ÈAê’Í}¾Z÷Ì Më>`öL25QYíq1ø(”ñÂÕMÐíqÕ7mÐR¶oÒxrÏÅÇxs;ËØ=‰ÌC3àX5+ŵûÄùp…¸—œ*ÒãÍòýkfæ™Ýüf‡gGGLw9Î.Ù¨Ÿ´{~£ülWذ+X+×tÌ„Î@$²4³Þ'°BŸ ò¥=4’¹þ¶ÎëDãNž“sXÙ Ãp·k»æýÐð³k;Ó’]¥IÜ;Ü«”‰©tYÞ6aLí’þi·ìy8/~~~ÊK±Âr{Zâ’ÑDÍá]X¾xÆ*œZ#½‹!3fH¥rMb!_èÕû‚]v¹’LÚ×€Kð™WÐÆô÷-ˆ‘öÆ5É-ØÀDêNU®ó†©þfFÛå^³@i"UFò’Jµåz0×óá­#Á¼êV×'A£ƒÎfKß&ü||xŠñÖ⓼åƒ#Ùá=¼/à~R ŽS±¥?⥙^.fJÅWó~|Ø€Iå̽úôs¡»qÊ"{Ù÷µvœ§åÔ4tÄXŸ's8a C›8ò†Î6Ã&µrµK*]³H`Ýæ&>ôA¦o×y3^e¹A$!2hïÛÊKÖ}µîyàôÎÓ== -¹Þ.5‹“ö ‹È`&½!yÐc³ï8•R>¹Ùu›'Øy_òÏ_,[¤ðûª$$R¡D;_ÉsƒéC¦fe”2nXì›ÉÏzm›6óA'Aì‹zxË–%%I›öüõ$Ÿ±­òO?jïzõ4ûýÈoíª®¹? £›ÆÙiìzX6yÍ̃cã„y/x?ùu“ÅÁ `WHáÆ`ˆ I¾c”ÑmÒy­ƒN [§ˆüÐi#îêðÊòZè{jôæL‡ýX"sJ@‰ iŽ~Yh®‘Iަƥô1Õ’¼ÍO¨EŒ7Ð< Le!ûáâV›“@»]®‡¦É¾è˜º_’õÕæKCã%ß‹-sÒ¢Íà<¥±ñ"dV–ò5·¼æáã̂ƜùÂ\±‚­ñ Š>bÓ<ú­=3’Kó*| áãClsèm?/ÁN ã´a1µEŽ8ä–5S5y„5!¹´MPí:Xѳ˜¢ŸzkÐŒù¶s´E:ÃY÷‡\¶G÷€yØ›bÝ–¤zZ\Äß7õÕ¦ä{Œxuä ±»á£‡Ñáe¤ÅÛ7½9^w3]§HŒ©R€˜‡´¡Þnq6ÝŽ>báº[O૎š*ºnøP¢ps7êTØ3¾«ÄI|(iêil›¯&âÕqO³»˜5:­¥[½»2,iõ`(Uš­Xì{”ÿG¢&E)?¸¥¾ KG‘i$ 1{ˆ Ïfj¡ƒš‚7k=½y¥WLÜbtìƒxÁLùÉÑn½Þ†éT/ñ>W»r»ÿJ}o[–œ¦I}âzËXGç„ÖÐyÈ`¡¿U°6½-(3Ø"[…ž»=yÖYr/@>žè†³yý]oÂá°üÕà·“øÈ¹·K"ûy˜öQÃ’Äqèݽ‡}Òûþ[çaUß7o¥‡½¯¡”È#duTTæ~ÎïŒÒ§¥,'GE˜nà­à›¬Pmè;W­átúpüH·>Í|Æc¦Ñêâàs™mŒÐµÉ~±Þxâ— Ÿº›OµîK#*›Ã³d[ŸsKÙžjm{POwê üüµPûÏ­¾IÒkJo—€?Iî+•.²Š±îÖM‰Y³µòùŠy6Ãí¬ËÕÖ#¿ØHŸ^úø®!]C¥Õˆuþ©Íµ‹B¹¸õd\w –p|4q­å§‡UÔ¡ð΀ärÓ½SÔ§7ãÜ©`c²2ÿº”9[0ä&•„`TFâ@>ÿ´íÜ@‘nXûip©\TyáÙ÷®Ád©âgB‡«îu½u_¾©2­$G=¼äÝ3» î‹‚‡á²€ ¢ýz¢ÛòÏ>Ò¨Xˆ’‹¯(†ø0Ô2mÚ‘‡¦z³<ÜýÑ`2hÕ¿RýÐÎb+ÏQgæÔu3µþB;Ý GR*&‹M"~»HÛcU°7B}ÐN•'÷áDGeðGEŸñŒ9€Ü‘–¦¼ˆƒÎÝö+{šPÞÃ*ëh:÷ä^É ïJzÜìv/Qfêaá5_ŠðÒl‚¥»Îë|)³ªtÄÒ_9}†(Wã:àæ±ÓßæìRÅ¿ëêèäé×Ïyü&˜ÓzkÅ¥‘–y¦Á½úS3eÖŒWÊhB•’)ÏHé{ÞªöÙåe÷›ŠS9v™MÅYÒ‰ZÞ[ÉJ0i×u¢]tT¹e=UUD#ë/j>Y%ùxÍGõ‹í-lµíZûz·­Å*Í8ûºØ9PÜ»¬'eßÒ¼ öÓÆ)tÒÎØrÓˆ`¾Ñ (ù½aIå*}VÌõòeÄ–6 øvOŽAž«ÅÌ{CÌ·—,!ËæÅãØHâ²]¨ã–åSV5-£Y–謔ò·‹ò‰2yÑŽ“Àʃö¼šK•:¦¹â=Ž•rÞB±÷ΟyÈê‘ù:õ[ú.´à®ŸD3ÇC¡xF+sH‹×<–…‘uöœ¨ÉëšDŽLE¥zËÆÜÇÚŽÏ_gyŠÒŸ(Øo“ÕRx‹ËQÔN Ù96»ÎvÏp¼¸F~$^,æîâ{ß^©š8žvÇcˆ¬À™Y¶Ó"¼õd=·uú½a…à‚Õ£Á±'‚ˆ¯¥¶ÿÚyW},É¢wØjB¸å3ºÌ­bz\<ˆ¬Ziš íD¼2F¯Æa¦ùõR8$±S£…Ö? ~ÔÞÔ{¶¾ÏÃéÆJ’d{¢®©un¤‰àÓù©Tqç8/2{OéÄE8;—6ÇBc$…ÌÛ1iµ á•:ªÑ4•iXþމÁð¶Ó,}YÌK9vŒ¹Å^Ì ­‹zÌЈ¾ÉÚ›œYo?Ž/_v~ª­¤”¦ô*êdÿ”qñì<üe”ûqÇýJšyý"ÿãSF毴é£ê+¦¨öèpKo:qkÆ¢ºû‹ãvñ#„ë—ä-ê# Y"ÚÁõÅuËáäO-¾µÈ•¥H=ÚíÓã Šw0ÔŒL¸3v»ù3¡'4]ÅÆü…y—¿bAù“ÿýý÷Á<•Â÷¥ é«§@íMe®"¢•ë~lš»m¨àèv¢=‡ŠI@guÑ8,gʃ€‡ž]ÑÈÆ|VÅ*Nú&IfðI¯9>ã²q€ðm}W[¢w&ž«7\Dõ(†³¾Nú^ˆ–¶ÅÛÛê·Ì*Ry3t²}Í¿X~ý¬næ]@Mò–è¢íÞÇÓ— êM$Y¹¶ã†p†Ý-c+¨$%æ£'qœNŸ”w«ø*v¥¯™³ÜLgböý¾1ºàüF€àÅb¢ã0´KmˆªiSzªÕj¿%ÉØA.… y•¹ÜO傇çvóäl8%ßSZd¡c%Ð’•pìbyMkyW~¼dá"Lhƒæú™zOõÂ!áal©|¤‘ÓJ´–}…ø‰’ŒuŽ¿Îé“Ò6Væê²DË\÷̪L—>ÖJùʆ'éDVŸqBÀ #Ö"i7jßn«~íã£ùhº”l ½'tQ‡†Ã…„Íãx­Tívp¥¸Xûì—7˜š°9ÉâÃCOðm¡Ó8N;R˜ä»D©m"Bù‘"ŽO5Ñ–1¯¢•ÍOD…ÿŽÒò®£ì^ЧIýô–±É;s¶ÙMãâ>§¾„Q‘ }Œ½OÇVïSnÂ1oÔx(O{Œ°î˪_VRΑz‹@XöÍ<CÄDz(¥ÎöèE2ßÝi%+2óŽ„ìë; ïbߊ¦¹E=ŸI i<­H]éC o‘±«ÄÊÄ ‰Ñç „ Üõ?2·ÜöÜÌ`Œó"Û|mR‘À]»1×A}Êú&ß+Žû†õX„‹]gÛþKy*`óW™œ`¦Øîp¡Â] 3<žbÝ‘ŠWÉ<„¼<7©Ÿú…×ëo¼´)•b#Sfþz‘fÔð°îq¹~’r«³EåÉÄ.Û¶ÉÜÂ,½¯o³Ýœ]Wʽ;ÃTæ#0ò*òzºò驱®-ãåc³%)Éc.P?CLNòû³–ý{ÃEgâ‚ø›|~Ž;?QÙÝê=ç?´Ö!v•Ìì”ù«÷lÞ+s Ÿ¹ñ ‹y9žò«çûA®’T‚B™´$R›o¾l†!ÒãäŠw|‹UúÛ(€Á/•W¯›¥¼2ÇÙxua0¦# i÷{ɼƒ¾µ¯YêÔµtM?k8);„þÁrÜ›…‚Æ Î2ß®­äçêi²ë÷}÷Ö¹áß–‘xÁª$]Aé^× Ø•»³)j‰ÞnàDM¦~ð¿F¶É¯#›YHK•ÏùýEzt]©¬#س°FAýDPÝ5­ðÇGdù‹ó0« ö`¶‹–éïBŽn Í™¢O݈î­â½¦ˆYúŒv‹?YMöðÁòFÝPP›è»£á.s"¡û½L¬ú%°OfØ“9á¹½UÚ7ßnAcÛÏÕÛY•ÏnsD©¸Mªª­IeÄ0à ä9ïºã«ÕiWØå³Ì9]‡2Äë=¦ËM*ìµ#Ì!pâêOz$¤›WÆÉ}±cà½$ýò‹ö$} Ò»ï禔á{]+^ß¡ŒÉiÑ(Áj¤cÙˆöî3çëÎvÚ¥°œ(åĆp33{(ü2áéÉ!ÓÌíŒBˆÚ˜ý×çñÁ®éKrZFÓ©ç;»Õµôbcê­çCZš6Á„¹²ƒº¬tM/ š”MÈà#ÙzÞv™ïìmfñ=ÏcÒzªÓ³¼1S¨èÄ[ʾ&Mü‡·Rx%–àUéT×j (¦³‹ª›gH…!MíÁ ¿æÞW´&ÉÎ «ªÑa•餦b*¸Íú¶É>ÜôkíV¥Ÿ¨‹"žðH¹|y+ñô"¶R…ô+¹pYã€Ä:—òMhvâíÄJˆÅI†6Ö7bÎÚ[LʃñkTaÿz·ê‡o5QöÙQ¼ âæN™¤ Ÿ‘ìeأ߾‚åãÓÜ)žâò¾ÑdÎI.ñ 0†¥3‡QÞ ™€õÆ áxÇ—D·àíE>Ú5í£R]à¸þ…â­ðîê'mN¦¾Ht]: 1ÙS[Ü‚¸T-‰ÊVë^B¹7QLã»–·mß3•¿Á­›êé¾ÏÕ ×,¤ß¦ëOÑz~é×ÍîH,i£>WK]9“{3Áøà>x,;hJš˜Ûüa²fC5ž;½¦ÆÝíÌ#ç'‡€s8^v*»‹¾™pø8ÈRÛƒÞ_l †d?dBGæñ» ÔA óˆ 8lq‚Úêþf‰&ÉÐP¶ômo?Wôåñ®u¤9;ÙÇÝ 9zO†—Øœ¶Ô,WÄ$ì¼V÷jû.z9TõŒ». ñUólæ ¯*È…\hä’GcO uÆõ”/Ú†w²Å¿ø¦ä®>¯!û¬ýí¥EŒBÚJ\ŽJ£å˜³Šþa@ã>[›Z_Ú”×ü]Ü|¼ž^ëÇyÑSs‘æK™±Öq¥W|Ô<Ô’»Å9Pw˜¾Ý>¹í—] gÅ“´¾…ôÐ[ãMå²ÇF¦GìDæjž®­žž}Þ×/}’ (Ü#4ñyiï¸í#F[r”Ãi\AU€~ó¼o±ʃ©ðkpò§eyj'ƒ#[ï%<¸¡Ý¯ó!‡fg> bÕs»V‹¸uKê£fæÿòxû¹‹±¶ä9vÝ_WÔ`íYÔéŠ;Þ´<ùõl;š^ãšµs»˜YU®ræë6ì)~ˆYíL³¶kÛeÍ3µNn·/?ñW½/<ª‹épOZµ"Ïû¿#–ôd§7K.ËͶڬ'Ÿ-'WÒªÌÍR§Ãö©G¦µ™ã¦ã ò*»kÊEŒ¼xÃ>æ ¾ì¡`+|€nÇ;æ|{Äùmç™®hÝ—<ÍϘsŸ k?× 7èÛø. vG›rãbáyªWJ¤7à9”keœÛ¦ïËÚÐ"¯ntµvìÑuYko!Fs(eÁù-_SœÙ!z“v%†ÕÛ{tñúñŠç–d­ÓìUñ÷«‹Œ;n-‡Z(“å¢+„{*ãK q²Þ,ox…ßûb0×züG)³ÒøM¼ÉÈBÿYÓ ÜΓ0­CÉ£~‚iTÑ¢mƒ÷½×:ÆéM®äÂ+±¾È¡’ø–Óð¬ëgDsœ-¾üí± ³ßƒbR±ÝNˆþÝ{Ä|Ù!ºï\„LqÎeo{…— }±ŠN¬¹64” ö3óÇä9±SW-8i?ðüÞ•\«ÃBýÒ)o¶òrÍ¢9¥cŠìオËyšç’ƒVÔm­Ñ%)÷|e—\IN;èðܶ㇢cõ«ßFí¦®oœt˜ÐZ[4àñPAݵbÍÇò½Ž‹\–KðøG—!a¾n œcÚËw*2L힢§n‹µæÖJ䎫UH’¤ðÅh~ 3>ø¯Z‚¤ endstream endobj 264 0 obj << /Type /FontDescriptor /FontName /XPCHDY+CMSS17 /Flags 4 /FontBBox [-58 -250 939 758] /Ascent 694 /CapHeight 694 /Descent -195 /ItalicAngle 0 /StemV 76 /XHeight 430 /CharSet (/R) /FontFile 263 0 R >> endobj 265 0 obj << /Length1 1381 /Length2 5936 /Length3 0 /Length 6878 /Filter /FlateDecode >> stream xÚwX“íÛ>!Cé Ò0J¤;G+1Æ€ŒQÒˆ„€”¤¤ˆ Š Ò’ÒÝ]ÒùMßú½¿ÿÿ8¾ïØq<{îë:¯ºïó|¶‡EÌ'o‹´© h>A~$PQ VA a~HÀÎnG;ÃþvØa(w8!ùE ‚ÆØ” h R‰jx8…‚÷%Å$A  $ñ‰’*A<á¶@m~ s°+"]}Pp{4¦Ð_·@N(PPBBŒ÷w8PÞ†‚C! 6ísÁT„Bœ`$Cûü+§´í*) àååÅqqçG¢ìe¹x^p´ÐæCyÂl¿†ê@\`ÍÆ`:ÀÝÿð€‘vh/ ÄœáPÂã°…¡€˜ò@°ºP׆ø¬õ€øçîùÿN÷gô¯DpÄï`Štq… |à{ ÜÔUÑâG{£y„í/ ÄÙ‰‰‡xBàÎ àwï Š¼>‚ñÏÝ¡(¸+ÚßîükH_i0û¬Œ°UDº¸ÀhwÀ¯þ”à(³ñ>¯é…ðý{iGØÚýÄÖÃUÀwó€©+ý ˜ÿØìah (ÇDÁÜ€0o¨ƒÀ¯†>®°ßNÁ_fÌþ¾®HW f˜?܆ùøºCe ecmECž¿fþÛ« €ôúòIˆù„DA@A˜PLTèÿïDzøŸüG¬: ”ø£_ÌFýÕ³çŸ4àüS$\ÀçÒAbØ rþCöG Qsü?SþwÈÿ鿲üïdÿï–T<œ8ÿDü?ˆ ÜÙçO†¾hŒ´‘A þjûCÀÚ0[¸‡Ë{ÕÑŒ$äöZó ýa„»«À½a¶zp4ÔáÖüa7ú¥8g8¦‡t‡ÿzÈ`B@ ÿòaduÂ1—ûˆñ1«¬Ù3ÛÄ\a%ú3°ŽTcåš$+0I Ú°ô£H›ålíÛÀì$~e-c‰^÷( UÄ4žÖé44•fhQ3Ho- kl: —Eîpd/¸Ä>YŒ~™¢“Ϊ)Ýp Hð*!ûÚÕ1EÖÊØ¬á²¼{7 M¦,ÕÁ $r³ÄxêñEvçf:¹¯*ŃMÛ¶wcªÏ/ ê_®¾sÄ…Î’Åò|®ñ©5S5KmûuþÔ~òÆŒ=Æt„`À M͉äÊ4Dï¶ zT³s8a.GÄO¦ÐëõÅ!tëã³å¶<™±—zzýáè®Æ0íÒÃ:¨Æ(WVµõ¯>ÉHïxÓd˜)B3gÔNOç•kÊÒJijHý·µ³'&‹Íâl©ÆF ¼†šõãå«¡–œ /Ò™×-X­±-?@@á 0$ é~LïJ»Ë€_XêãN)·Á\JþBí›—,°Ý¥y%ÕZ÷Æ›b`6ñ _èK T@%׳÷YËFF½Áôf^9àõa?EsâÔõ·4Rârëõ¬J]î|Ï0ä‹,~Ñgy›DpLµ ÅXÀmgüvéÛW5j¨Q:í&^•QòPÈÄ—O鄲wÞmÈN~£³¨Ô§ò)ö,‘úxϤˬ>ŠJ«¥­éÛ¨šGÃZ­M¬ÅÁTx½ôØ·WEÅ¢7kæÙh¦"Ljp_=Þx˜x¼ÁI Ȫø]&e.¨‰~@—ieÿµ«I^§´·²8MÆ”¦&LŠëàˆ¸K>a+SµIiÀ¿hÊe¹GÏOéüè›àjAívMOM1Q¯£Ó7Ûâaÿͬr×8#œoêË 5¾8)®¢Š´Žb²°¯Ýî83¹[] b$ôʶ­ îy9ÎËu¦Î}iµÜ·y]þ3´ðPa)$·JÏßeÅX–Ø·œqw±dPò‘¦‹èÏõåì£'[Mž2/ßàª+KüB«)L©ø»^§ÌÒPÑ"Ã,euP·¸ZOÁº^ôç…©¶OÁwÇayîzê§Iäv…ôb`ïoq_½à¶uâߨOZ¹$(Ü$–¡eJíyjÿ8žä¡%ž3pQìXc6ôæÑë~ý½vÏ ©Ù¼ù·Eh6¥ ã½&ú¹³ZÉòsžE)5µÜ_ÉL•¨ÞG}“*³ä4>/Z§ ˜îä7¡ZdÉpÐuze1MÙw“'‰oœ¢˜àåU˜‘nç>ö).ÓZ™ÂEв“,%ãümïá=I@HÏÏŠ÷ò¾7 ±Í…Yˆd«(¤§ÜO(ªw ¶QOM€–O[Acú]é7Ñ=|Âü™àÝÁ}<(–džD<ó¨ÅVZÖDºöçC¼0 õêÁª©ÝNE[³¸è~É@‡vCíÙ0b ÿZ¯Õi™àÊ ý[ßÙâ½sÞ¿ŽÍÁå’o±ê£¿ÎØz÷‰ù˜úSˆÁRá•c ëÉq$yÖmeéˆ|y3£ÒÏå»Oǰ=…ÎÌýV"¾xת…mÆO0Ò‰¨ˆ*}xècqô*{›#œš`¼'ë£ÿ“9ü^Öuq”xnÎÚkøÒ eãéXïñ‹ø9òè±ÌLåÝàg¤¢Ar௕çéÏo£Sš€”{ÄSk™Žfﳚ¾lÆ4¸‘4¶öòdKç+z×1êO—D¨E|憢¾äãMÁ¾4Æ÷æÏj!¨‡ÖTM”´9v´Ì»ïX^U)Ë¿ç|Ýý‚=ªªqO=Éœ¦Øç‡\m8ïfX|_÷ºJª&$–ÓTÍN‡o¥?W]~·mOâŠçýšéÇÄ›ú#â X<;"…O`éÓÙû&¯ßâ_qļzçc"û3 fëü»|d†àø½±U%²1"se.O êºóºÛVô¹Þh}äðÒYZ.[EÃk"À@Å’bnlü'~DaØ-,å^åWiè„Ñ®Ín5½:ëüÑïÄ„·?ÅŠñšx°Ýr-,Ç—vóÑ=ßYbSõ–P7WU™JÉ1@hÓ7]$z¼T÷ÀÒ#wiÌT/M›ÙØçpj¾ÜÞ¶¹oúyó#wT™D¸iTš$åÂ?¡úº–¶Lœ «ó¢‚šÒÎyÜ]¿a=¿¬˜2;ѧJíÅâ”Ô®¯ÍU¼9§Õ•é+˜—L…[@b„øy gÃÍÙ¿Ó1àV€€¦Ù@#Ƀï™Öû±2S%J±o, áYŽõ‘—gÚ­R½ï§rßóÕjvLE¿µ÷ÕýÁ(Ž•¢©ÐÓaû†§KL…Å]7=[íßF÷§l.ö‘œ’ñDÀ4”œqÉ!ñP–2–Qv¼³MîçV´¤gº ~2ÖýyÓÌËñˆl=ŽWÜÂá=CH¸¤ÚúKkßT‡ú­¹‹Ô`Z*Íak¿ŒguüºÃÏDibAÌ‹F-£Ï_83òœXÚÓùå¶ÆXNüHÉo˜„6ß­Y|¯W®îýÐdýi¶œ°.‰â‘’RDc³ãÉQ*ŽüPk÷×ID»U¹•6ãâ z5·íS¤Ä³ñ.z£jji¼_ñ¡¢s~{qgÓ~Åó*ÿqÇaAœè\½>mÓÀsŽyãµ  ¿èæÔ0áš„ˆ‰Ä·eclè8ʃW(UÓ2,Ø8”ì¢> XïKˆ'1~Ü8ùsȸC©RE꣠àµWc ·¼ÓÈ@O"1À¼”ŠSsý1ˆjþc5½“<Êk}@Ö;0¹˜czé£å|ÕóT½ûn>a Rû ‹ŸÓO³¥+æ–£ËI +ß.àŽm21)J}uÒ{]ò4¹¯¸´+ŠñÜí‚fKn‹p}6(ÈaÛæ”N¾…ÛEéí,w2FSàšÁàNvׂûŽà/¶ˆsÒ×ö¯rŸX9UÕf­_h’nÝ0]ü|™ï;íqQõ=]9}à{Ÿ·ÿ]iÇâžj¯ÊAºÇÓÜÇã5Åys-Ík0¼¼qö®§Å93àÅÈç©‚ñÐíÙ,ÃëA¹/–8<³VdÄ´ˆæª2Á`Õ5ßÙ~-Þ§JË?X>¤«dP$D ûq+M--Lš¼”hY2°¯)H°¬Ê- ¤ù:±ó“¢°WîõµÞ[ë9b Ó’ ¡”ðÚ¹ž{\l~:°sd~+£Â£‚O^‘A’“uH˜ÝAF‡#yóá=“$±¹· f¯zØ”s2lõWõQo64“.=ŒUn‚èä…&3‘«øGoU¶Üh¡Í, V.ñ’Û·]dÛxŸmÔedü€4iO<Ü©«Aí®„Mýz+^^ ˜|€Ñª„™4ƒW7e·uÓ1ñç;­¶<2ô<&ÝŒà9|÷ÊÖÅŸpÎî 3U{æV•â·Œ'R¶ïxIåký³xfZ<Ã56Á=ÚI!*kà }84¼'¦—=U’cX"ÚL<ò"ô¥-n› ŸY[õË#3˜ö±ˆñ¡É—¸zÆÂ3' ÕçhA–ɳ¨ÊänÐØ÷$•/k4ÊeΪÂ6.IgEŒõƒé@ÔºTKš~~8¯ç °0¿E-2¯‹X?ÀNyw[‹heøaøõ%3©nçtp¸Õ¸§ÎÕm\¾P»E)kŸwlÖxºïÄWMEóî¤ÑP‘½íE•9ƒSBÕq+±Ž'°êãóàF à'T}ȳdH.ñ·²kqÓ^å§Y¦s Å÷vçBý›y«ÃŒï6”%®qdùÝ>iÌm·ÜµB»Ø½Î¯VR¾GÅ ’,4Ÿwó(ÐKd1$вŠT¸v|ì#cpR7Êúµ',dŸþ,¸r àó'ÝÆgªï†—LOò4€Û\ßx³–žLy†ZÊ©Iñe ž ¢½nGb·å&¨jˆ!.z}­Æ›U„(,¸h_-ïâÙ-¼$ùçè0²…fŒÐDf§Þoc»fµaýY°ô)ö±kÔËÁ™¸º£MQ>JÒ»”àÖO¹‚AÉšŒ:/&iTÐGd·®æ®Sˆè‡U»‡n§Ó (ß6ØËH•‹àVi>ž©EkD {$U›pYõéúø¥LgÓ„ú¨üìMæÈ¥^ž;ÒcÓc:üþôÛÙpËtðA”ØæK°èîwŸ/dùÊݲ4ÃC*èYÍ“àŠ Î󪓱T’ÌFz3ûš V26m*‹¯·ê¯ôî§c—0½Oâž’@¹£Rïøá‘'OôóH1} ÆEÞøëâî–ïVv_©§€>ƒÈnÃÃÌ!È,­–bî¸U«¶ñÜm¥õµÍ ™0ä!Ò¾öSÉËksKSi<áæoO.P*ŸŠÓ,¼Q° pX€¿Î´&Ÿtã+¾:© 8*úôYßÙ;Ñ:•mQ0óD<¡îA¦š}|þ‚¤„æŽ)$á°9–KÎØP*£À <¯wË%ûè^8o¡ÉF[ÞÝMØMØíb¯ýºab·Û™4“¦ørë‘)7¤…¨4äyµð´y@Îó{49¶I¿uà( ‹Þ;k8JÁb×»Ùç(„OöiK—JcòqãO k3fg²cÈÅÎJWìv»¹@txH[w`þ}¤½’Ò‰¤ œ„ ñtp=ƒ³NL7ëTZºïµ¢Í´9ûÎÏ'RÜÍÏ8‡ÊÕߨçóŒéTF¿6GŒ&œt߸3 v­¸¬C°§K“Ãí$ØšDW>GðÛ”ÐRÂÛ€ì¶/f d¦Ð¾ð5EFh@m¹7Ñó¬¾Î¿;þíŰñݼ¼B„_œ¹fÇIÑOŸ‡À™²Ïò¥ÌÓëAZç÷Œ# |·÷žÌˆ¯ÍfˆÔY|à$‘J€<äß™‡a‡`ïÕÛÄɸ÷­6™­HV$ešlÁÕs|2³|„êg›)m£¼üv–‰äMVÝË‹ Ùáë2(AîRIÇŸ£ ÅÏŠš^*ep€þm.·Å;§dB?_Xö¼^?㪠ÍêÇQЦϹÒfJ¨m ý` áF±ôДMž÷º½ô#ë«On>ëÛ¢s‰ûµ?ˆ«Ü8¥ÒRnÄñíg/Ð'W‹ªôI‹…/×I cvÂ7;?7™° Š/üÞ°8F$Yõñ˜‚nž=¡ÛͲ)=éÍ"14\xt¸}ON~š)?Sm&úu§e‡yñÍîR ‡Ùí©œÌR› Ç!\ñ¯WßÌÉ4jÖZ97ã¾_•‘¿‘IíƒEN[²ö ä’J~‰ -‡i¿|ÔöÂonïQLƒYŠgCÙ×I½¥æÍ|âѳÉôBcŸ7îµX©)9…ã;V¶ÊthÓÑávÊUfnU«oÏhM¥‡G°Šû…Ue5#/WmßOró2 ó㟅õûhú $Ëéi Þ'x¦;!ZK.lê(ΰÖ­L\wNŒ²WÅÊïi6òξ£[!G´ÊæàS<ûôÑd›®Œ†G‘¿|åE¬²,[%¬îQ:ˆ;GÎxjK]t±·Ñ…¾Ï'¾Ãw}Ä6RY?/Rxê‚úÓ~8™øÇ¢9âJ¥•œA´¿dfÝÎú’Ýv,Ù½Ÿkü@*¢«'µ­¸k40ؘ  * ôï«å&Àã»o6¿½EÙŒjôîÉLû¶Ù¶Àò#”1ÜhóÛéZµÍaÜ£‚éãbj—»cÓ/‰ö°ÄªÞ 7±T‹Œ»3ö¥Ëv5«}LÌ…BRèéÀÄ x2`0RPv%ë÷$öÉ,c×k[BRºàÚN Eýh|Y•‚B@[xñ¾BÞÕHýÎH{] yl¡.w2á*mz\¢òùKþ£—&·Ï­­EÐàÇÆÌÄß? =ÎeBU“êPz9ÈuÀ;D'Óðßm¡ú:/Óõ‘o¶-gbZÓë-ã»íò8®»ñÕrÛ¨ñbïbþ?M<Ôš¾_Æ–J?ªZ¸‘ÚgðÀ«Æ >:ÿ†DøñÛå°¢höS‘ÔÁ`—½‹„»GbD—‘M°Ab·&*õ–è’æK‰Ë“4T KtªÌÄÄ*]]¾¢Ñ’±–ÝdXÑ„À5n¶ß§ú›"ô¯ËÆRÌñø:ZZX¨œÍDÍýûªCZÜ”©‰kß}fŠkWJƒÍÚ¼‡ìžá1_ÊŽiž”=S¯$ÌæÍAúÍJK±õ7‹ /íO¾ÏoÜP˜ÁÎÈ'›näýpÝâ—›ãîz!_Òu¸kÈ÷zöÃ7¿_¶Øãõ©ô!ï‡ Õž,Y´,Í„Á!o½(fyèÁ³t®wt O_¤Š•2Q } Žç.ú -J–Y 5µKfQº“‰&¹Lwa!qÕe$¿.hlêb7ŒvÙ¦';öIòçjÕüø°Yàw)Ë?·$ÆeâÌÛã3)v³N“KÓõV¡w{è›ÏR³‰Ó—®fSË[œO…¼B—-ÖF&§'_ŠÆ2ä‡ú?o¤¦4¹72ÒÍp8*rîÐãðªèˆ Kº¡:†·ŸåØ–0Gè`2%¸¼itq÷`««ýæ „‡FÓÏ:q‘ßE¯÷}§N³Äþ!~£çÑíoŸZÕ,ßušmœ—úоºæë‚µÈ ¨{Sï×¾ª $H@drÉ™ª"¿¨—fÚK¯Ñ2H…NÎWS± »SHEUÅK¿JÒé¿€Ðfë}uÖrDvçæ´»«:V”9‡¸ §rÜn±ÏÑyíœ.[¯gþäD]| endstream endobj 266 0 obj << /Type /FontDescriptor /FontName /JEVMCT+CMSSI10 /Flags 4 /FontBBox [-97 -250 1077 759] /Ascent 694 /CapHeight 694 /Descent -194 /ItalicAngle -12 /StemV 80 /XHeight 444 /CharSet (/R) /FontFile 265 0 R >> endobj 267 0 obj << /Length1 1517 /Length2 7013 /Length3 0 /Length 8032 /Filter /FlateDecode >> stream xÚ¸TÔ[6Ž4Hw3 ÝÒÒ-Ý ’Ãà ÂÐR‚t#Ò! ÝÒÝ’ H(HKKÈ7z½÷}ïûÿ¯õ}kÖšùg?{Ÿ½Ï~ö™YÃʤ£Ï+g ·+Ãa^ Ÿ€@ASß(âÄee5€  à¿q\V#°«“ø/†‚+ØÄ­H¢&xì…@  ¨„€@P@@üo"ÜU hí±hòÃa`7\V¸‹·+ÄÞÜçïGˆåùís»B@Ö0€¦5ÂìŒÜd èÃA0Âû_!89 .üüžžž|ÖÎn|pW{iN€'áл]=À¶€_%´¬ÁJãÃe8@Üþ2èÃížÖ®`€B@`˜ÒÅf v wè«i´]À°¿Èxäþî÷¯@Øogkîìb ó†Àìv( ­¬Á‡ðBð¬a¶¿ˆÖP78ÒßÚõ¶A~§n P–ÓX#+üSŸÈâ‚pãsƒ@ÕÈÿ+ ò˜•`¶ pgg0 á†û+?Eˆ+„äxøqS†xmu Ã_ªù 7ü5oP ¬wƒüºa^ÿcCÈ y‹¸!¥ùÛFÎп÷U‚à¶¿†MPX`íêjí‹ì5r% ð"§Òìõ[Ì~>t kôØÁ]q5VàWùý^Dü6Ö®ÿ"Wk ¶Cü,ôþ«ËãÈ,ù‘Ì_ãù†„œ!0w·dDgw(â‚,áì!€ß ‚lÅŸ½ÿU#ÈÝÕñ·‘ð÷ú÷í{A¸‹spd˜ã»°¶Ëj9ZOÞ/c˜«kQñ¦}‘¶ù×¾X™*ÓÏä­l+©FÒtJçæüh¹.ǽžve¯¤ªæ"P”ú6äxó†~œtÙƒlá4ö¢iQć ºô„VfèfìIÆs7ÏE»…¶Þ~-¸ípÛz"¾ p1¥Ò"bår:vQ_˜2±¬!†MŸ½$q5Kw7P3œ¸E}yy!ßCýÃ{ÃìeÆðòò`v_šÐq¾zO•He8)5™Ïc¦œ‘Äjò„ìÇn(lòÂç ¥)ñÌÔ…Îál+hV¢+×3ùý­ BîõöZ Á÷µFÜkáÂsR9Ý+Çt–›Y?øñ©š£xªÓXäY«lQ·Ó«„ ¹=è ÌÚŽwš3ðâ’ S Ô¥†¬€P!‹¯“T—V±™ @Aó)¨ØÀç7ò":P—;㥛G)RVR54-&Ç5÷‘<|goú å&ŒI°Óí¦Á¶áîˆ#8Ë=ùtp¼I{ænïNB£šðùb#.%Dú<¼Ó’3.'n&P/7]§µCEò‰¬øÂ$sœ‘ažñ¼ÆJºŽ©Äs¹ "R§ƒRú·K"£¯¥Bš¤RÄ‚>NÝSÔÝ‹#ªÙ¸¯ÛýÃ"ÞÆõˆ_ÛB=·ã‰ƒU±ûcÄÃxHÃnüͶ¼étð‘èÜJ®üOÃ@KÒ’€§¹v±×/϶NësMäj#Ÿ@£’;§7,ߌҷ?éI—þ~r¯§=eËKµþêýˆÔfXEb€9¬ZÞ'Ü¢°ÜOehÖo­ÑvÚ„íÚ=j×púhv!ùp3ØÅb»^ëÐåºì™¼"€„}ṸÐF¥f›¸/:^¤Q "þ™ ¾õd}ˆàŒÅÁ®w*£¾D‘¿kÆò¢)š¸öJÅå輇n™´¥†Žÿñ€è­0DYìÚCGèÓg~m‘Ao9xgÍAÀî–¹ñ3ZÅÍfÌHÓ‡«Å'áMÄù¦q³£ù&:JG·‚–‚Í÷+›Káª)¾¸@J¯ij²¡öÎ6wj¿V8þåù•±#½^¦RòqÑ~FsÜ êé5[òF:”QùŽâi 1ªžð-ƒrŽÍ÷¢Ê î(¾Â¥9 ¨ðc7v‡Ý,<”Ûn‚*[swŸ±Öÿ*CâZ‰d>¨´Ô«øj^æ¾IôR¦^¦=4ý’Ií~Ì»™w×[TgzÄ?-3Æ’£ßÓÜe9”!¸F‹Igî¾ÎöõÛ8;Óõ·ú¢\EKé8óB¯ Å*˜F$ªË•tW®KÖ2-­LþÄWh& 5‚צ}ôhÉÙK”é®Mf”Lή‘ù$ÍÖ¿Q\Þñ”¹üGCJ&å”Þ>†‡žBÊB!z¶®¢.5ÁŒ¬%OÎÅH6a» E¬tKNíRǵ¬6Ãs1“´ÈVmHÕljt!êuÏ=¼§?l¨£Vkç«>^:æFóï`Ì´ª-oŸÏ£+nÂ,¯ùz¡IƒU;Ov7C54<‰äÑŠûËÇoF>z$Ìòô³Ô1;kÊœÖîʬ%¹pÍ…‰zÌSJ}Ôºùo¨&Éh% [ ¥D|©³k ÐxëE„6ks†ÕáWˆÎ|f%xަ‚Wp•¨çó†ôäÄî›oĤ±¢Ã§ÓG›ù¾ëò)#;sþWïûsÜíØN¼WÖ«-Þμ•51ˆ%ÕÀhDŸ±‡R½§yóÐI[Šrÿg¹ìœ! ±ä”gY®ôb…ò«ê‡ .QìghfKL˜{Wã Û3Oá­!ó,l1_NŽÍ‰Å )q›nÍlaa]üñë뜙L_zƒ¬ñOP×*'k×(‚Ûõ™ó$ã¶SnÜ-Pô£på„3D䥈?æ{À>fl`WfÄÕL´1?Ÿº(%5çÇã ô÷œê’ÍIå~A— !¸w[ ²w }ܨ›ù<ë[†¯U‚rèÀêö£ìÛQ¥y~M«€"dóK…ÑÒæø@h§ui¦ùé¶Ì,êþ± "š”î@$’p§éÑmYŒ©÷m´V<^`¦³Ï¤ërÓO{Ñì*rÑÖ%YXû$u»³ÓcAÜ Ï›ø%E½j¢·‹$âÐü É‘z˜=)q¤f^±œe㣢 ÃÌâ^.ôdÚ®I‰)ÔÓÙfùÚØ,q×þs¨ý¥Òƒ…íB[öŠž/´¼Í xƒ‚(ü´}Öï/ý#;ic>Qâ9<¯zrCÓ›¯A 6ñþt14rR?'[D­ˆÎÒP-üТþéô¤!‡3ý ëY÷üG©wJßXkanÖ=\RKÍј[+^ÙZ,#Ì[ZöÓ쉚ÉóR„~ÉP¡­Ìr 9:)G¨ièóÞ '-ãzÓ÷ûÊ ¶åýkS¿9Õ~ìÁZÕÛçXš°\`%@•»¹ÝskE‰'üõs…Ï î•>¤ÖýÒB^–çýŠÔ/)nɃ‘ä; ¾ —¡7Y©ôòûE´DÍþÝyþÊszŠ]ÄÂs´Upfø¢ŽBÝ7­ƒ-f¼¢=ü¬Üóz`žeüû˜dn¿­jŽÍf£Ùï«Ñ*%PÑu;Zc2Ÿ×\Ë}©kf_ö²‡#á&š€"ŽNªž”šðCjþOµ ‹>Ó=OÂüš£ï1ô?ä%ü±& ´ïÒMóDÿªéDn`-¢;²vpz¡In3¹¹«í¨W½Í3C1ör×̧®ÅU÷ .+²+ê@ñtZŠ b¸TrŠb—ÄA˜c'{CXè~ו÷É@:IH¢|N¶Äúûü: ¥mï½ 2cƒ{Ꜿ¦­Q?+µW¦N8I8\xß’yOÜ£õ‹A¤ÂJ /" %¡/=£NϵŸ&Óï:1«ö"îXe¸¯~Nêå˜×‡Ã9vÉm¬ž{÷¯G- ª¨q¨ûM(ø¢A‡?m;ng4iÚ¾Š æÝò_ÄäŠÇp) ?H³ø^™êk®P&ÍòMÇÇži2’ë ¼eÃ1ú¯ÖuðþXáX%üX,®OÝS×~9Ö%› hAJÂ7ùj¼{·OÃ(*àtðîæÒŸ j=ŽoÎJ¶ÇÇ\dßZjùV·BH³éòþ¼ï%Ã0–["ª°7ŸIhÝôØ[Îï_éò òöQŠÎmê¹ùNåå£ÑŽËåùØ´0Ê2•·ôkŒÏ¢ãv­Ku¿±ú„ÍP=~×¼`R@“ß-„PóèíxÇ>ó ªÏ,éA}¨â¥!‰..UÊ\å%g5+釮Ú3¶ã0QØýâi4;ñP®*Ú=‰³Ž-é¶L ®± z;Ô±XòñD6ëDGInz_òVÎÉ%¹Dûžju®`õnÔF ì>‹ONFåè—8q`ç÷kg Ú’‰{2â?jŒ¯<Þ=<þf¡)¹5+:’p{ôêS“`7Ów²È+¿,”Ô˜?„Âví¦ £wžéû_ÜLûIÝÅd"Ït kûéô`n»eŠ/fxé¿ù%‰ —žÛÞE.ˆ§š§KÊϱ\P˜Xa(D4ël/ñ0µª>mŽ(ï¿r -íPóˆ@~*B/{­%•™ÎŒç@CÝI ô¼9çìr|ð8^'[]³ž|gy´#7(T¼®Kþ­SžÁè4€åH\)¿…"ÞQ ÷…¹  |û•¯'F•%¡°ÐE¡òýLgíÃWòÛ›Y{r%å$kíÏÞM2®¾_™zXÍQ?y|«cGõ§â„gN¿/Wät£ ƒîµkA±YÂr—‡Õg¼¶úšëXÊÓÎ@¯ –»\Ú°Â >ÿ¼æñû£É%”Ÿ&:”Ç2’AÕ5™ !RT•]vL”÷¹FÚËø0ù·<1{£ôÄZ8d_dúàƒšÚe{´ØÔœÓr–ßH›0 :§€¿ËŽC)Œï˜§T·/_‰}p¢œMÀxä}™­åŽoŒµSXÒÞÇWÔˆŠÐª+ì„ ¾#jr’S3à¤Ô¼$ lÐÏÿzgšº«§ ‰ÅÄ̈›e+á²xI?À~’E!\§ºakò{´:ÞWvÑÁ0E³_Mr·³XÆ "¨ jx”àÍî¼çö(Ãð[°¸ “ej±nÛÒÙ&{‘V–JÝáFº4j_ÉØ{Gó:؉‰ôã<™EÅý )­Ëç÷Úm`øô±¾Ï(mL9¤™Ÿ¶_t 9•x ]Â×£/Q>‚N¢T7ºñã=×›/Í ‚ðÚiãÉwm_û*%’ö¼ð ^¤^Ë æc!7ZÛr AdŸû8±89±˜?Ü­"G?Ù5å]Uµ* §Êœ\ ½:Osa„êV½NÒýš…n³VBÎïrr¯þä5AÒ³å)1tËŸ³rĉ°]RÝXwùÎê/}Ù|$Ívæ`;o˜ADG'(êv³ß|g碸}fdpvŒxD;ãtÌ-S*èLÍ™32awÚ\µŸ²¶žéý€c£ÊŠuÉ·Œ–¨˜©M—!›_€ÍmÕ«ùÔnK¾œ»bÖõÅ¡Òê¡bjÉ^[.V÷ ËË;)2šÏ!óÙ2;¶²B N"s¡2šT‚YºYV.MUºšŒo…9’ ¶oÖÒ1†\]Ú©«dŽ·¹ÊÄ4D‘ çnôˆ”}ö‹u…§©-.œè•œç˜?³-3‰ó9kf9𝲠ëïkj¶àÖ׆á?ë÷`k¨¾PXý"¤…Ò ñÄ­ÖÓ@ÇÝ7­­e¢úR'ç7ï«ÊÒ<Ãi5Êg†—:Ì­êãááÜåmÓ¦`QRrŽ”slˆ--m¦F¤½–x ‡©o| ÔêíÙ¤Õ,ùÖW¹IlU‰º·¯×LUém€Iõë­ª¾Mž¡z¦S™Ô<¸¯Y”K>¤ª*.ÑȸcyO¥5“鬰*Kµ†tôËG`ž/žç©¨/è8ÔhÕ™5¡« [îD)`Pø¬LÛálá<šIM޹ ¾gõù­¬œ{ÌÞv»¶Ìb寇ƒI‚µø´$ˆx]KÐÉ.ßúîþXTèU ÑNݱÇÚNçi úGcßlÍ™!™ù¸ØRÍcóÆÔ’dÄŒñωÒ1LÖ%1Âäq¢ŠMHãøtÖÔ$er™ "|÷Ý(öÐÎ Í7߆&JM™Dÿ¼›(\÷>:È5H!í-Uεl£€Ö`ߎ裕s­Éƒ²7\ö¥ÜœÜ{zz±;D§Œºš§“Ä&Š@¢ž»«øHªÛ?\:™ŠeltçdþV+yõI?%µÛ£}äèæL! V¦óqh+¢2³ˆ!_µ€ô&ê)÷'uÝ™0jæá™ò)©ÝàïnßVöC½àÍ×æË˜F=oD´—ùü_ä!vG…‰òÖGJk¹+ˆ +*ßßЋF׺…d¾+í÷Þú2Ü›„e£ |£âj¿nˆÙK$<Ê‘ÃæWWß²¬R¶¹ –“¶ƒŸW…©éñe•ÑQº± Àÿ>‘û¾Ÿe>nÞ§‹:jLõ\{!&Ò™€/æÍËÊ#=³ÊÉt¸Ö#Ç_±²‡lõ¶+IÞKú3=ªø 4Ç!±Ž«‘9¾Aú$ã!ƒz¤}zißvAwé!©lL¶AE2`–Ýúœ™µ_ÝÏJWÝÿsþàÆ±»bxvRÿ [Ðm¯˜8ßí\që– ‡<ˆ;P©“[oH¸(’ *~jÒ¬#= ³?ÅQSÞ’éF$/Äcêjƒú œÍ ?—k‹J;_9æ—¶£Ž˜T±‡¾; /¢È&$ï~dXün^룘ÜÖñ£Û<Q„4^ÆZšï©Sv“[rqn%Ñš#­MLì Û1ß>óãçæWüÔ÷û¿å´Î¿$/´¥ñ ~aŠŽišzþ“ÑîBzú-ƒ)C©W畨² œj¢×Q‡P|ý¸’9«Ë>I>úUÌxߢÎÁËSIy Ý8íÒ$¡\ò÷…jCÝa­h,«jý;w¹–Ú˜àŸVpÓYÞ¯Z…øóŠ“ëò÷~ѬåÈ,t íLW×ßc ÚsØD3.²9êĹýÖºSn¹#øhêr,µŸhA×]Vm6‘]Iý8ïg©¶l«f‚ZÈÊ7|DQý‚fhøìSšf~›©žcM#eòaá»qn'µ/‚ÆâÒv©þ¥¢ÉËÞ†S!DDCù]KžcYxQsqÝ×Óƒø9ÜÜ!3òh‡\Ô—¦$䵜 paQ'òÕŸIX±TŸ¢ðTxûºU¹yíªæ¯ñ’8´ñÇTìÕÃR%›Ÿ<µ¾¼ªµ†–ID±\j ¯êl†yöXNF) D3©¯EMŽ0[|™úaÿ째@R?‡¤ ³ÔÏa;Ð<_–“ŠÛþ¬ÂÈnðF4Žöï»V$ÃØÅ.‰é¾M«%j"” ©ê· hüžÕ¯œÉ°Ê? ë`y«{Í0¥ qš’ÐDá•î‰ó¹£ˆþ¹rÓJ~sئR’ôX¸_ƒ¤:ažÇ5ë%ãR•Ù>hÓü0Œͬ’fHã»ZŽæ}„ððš•p·ÕM pâmIöÎÀ–9©ì ÷V—v¸ù´Êë3»ˆçñ†ˆÉ;¢NEum,ê®»,{YOs»"£Œ‘n³À€Ý òo „rB8ëÚYÓUt ‚÷<ðp}®¾4­\,.“Ù<8Ϻg–åã=‘8Ë‚V|tšN³Õ“Û³âè{.ë/…ám,Ýy¹)}•Pµå-ûµï®Ùpí û÷_ =ª’ ßÔ£GÞò6¢¥P&6¯¸–# ÙÒˆ‡)ؼ¶yèÛÝ7wž¢t¡~eN¼`w?ö#g’þ(t-PKÙÓöÆböm2çl¯o£v\sµöÜ• ‘^Iw¡×àö.6c¤nö©§¼ýdÂzÛ­þmkNó|4ËæèÜG²¹&]Í{ö©Òç6¿‹ÞÀåÊâû2f*ÁzwÜt%p¢ð%wïbµ[ñ“cvl²šæâ³ôÏ[6‘ºïhNªõ¡$¹Ž}ç€xj,j¢• õV>RuŸ§ZdyÑa[7J;X<`#Áib)MJ8)'oðcЀÑç‰iÃEÁ©&é!`äü`3a§®qËëPíÛ³©„‡\Ú>×-| ¦GPr¹)ÛÍê§…… Ò¸½©]Q’dSªŒºóËÁ£9aذڪrt ¶ÌÍhtƾ¹µ_×Ö;ƒ–ZÀ”xüÝXƒŒ”Ã4ÍgæmçUC…ý½×®eǶËZ^ˆÞMÅ•WYdÝ–%ÝÛ¸cÞßéH×Ò­¸¿-ËÀÑm%ƒÊßÒ5°å  –˽Rë±r"®¹<…y{zeQ„öµ wöÆÍð~˜‚’¢U{¿ú™~…w©O‚AýäÇ·Ä©ç˜mSº¼ÅŸ8žMo͹´ï`7‰ß·{ÂI¨BØw„wËr²àæÃl_Ø$K^¶Ò3'Äd™|\í'P¢LT@w1œ‚ðq< ’îy…Yõž¶\ €¸RM#y$Mœ,í3XìÙˆ¹O~ú3ôaí²ÿÈøDõ»«ŸÀi-œRF^™9üµ·Æ×t’ì2ÝW²ça÷§ß²:ccv¬yð,{[B iDIEÍ–Ø*Ñ!$rBûaŠ\G°ñ‹­k±é»¡#ªûw 1,? “š+¶‚—£w‘ñ½] [»—ò…Í=ÉcФ™IŠ8¬Ôê“–+øçc¼ÝrήFËQ'$¼ÕKª W°H—zÅRj!beâ“:Ѹ„ŠY϶2cPð´‰"™W§zš¥˜+`o>˜SßXþ1Œª™ endstream endobj 268 0 obj << /Type /FontDescriptor /FontName /KFANKQ+CMSY10 /Flags 4 /FontBBox [-29 -960 1116 775] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 40 /XHeight 431 /CharSet (/G/bar/braceleft/braceright/element/minus/multiply/similar) /FontFile 267 0 R >> endobj 269 0 obj << /Length1 1370 /Length2 6028 /Length3 0 /Length 6971 /Filter /FlateDecode >> stream xÚvT“ݶ-HoҤɇ„Þ¥ƒô*½E ”Bè½Io"M¤w¤W)"Eº€ô* JG¹±œsîÞ㽑1’ì¹æZ{­½çüV]^y(ò!L‰@ó ð%E-S ⃉88 áhgØ_˜ˆÃ†r‡#’ÿ‹ ˆ‚AÐL ‚Æð´@ÝÃD%Ä$Á`@ –ø‰’” žp( Å¨#0w"E¤« nï€Æl󯯗-7 !!úÈ»ÀPp[Ђ `.˜m!΀ÒCûü£—´í*ÉÏïååÅqqçC¢ìïqƒ/8ÚЇ¹ÃPž0(ðk`@âû3`èwÿƒ íÐ^ ÀÎp[“á€ÂPfsÀ@MÐq…!þ5ÿ@Àß³øþ]îoö¯BpÄïdˆ­-ÒÅ‚ð#ì;¸3 ÐQÑäC{£AýE„8»#1ùOÜòCøÝ9P‘× ˜ÿŽçn‹‚»¢ÝùÜáοFäÿUsÊʨ"Òņ@»ýêO Ž‚ÙbŽÝ‡ÿÏÍ:!^¿¿ ;8j÷k¨‡+ÿÜͦ¦ô—‚ˆþƒÙÃЀXBTTX€¹0o[þ_å }\a¿ƒ¿`Ì~®HWÀ3,nÃ|ù¹Cÿ¡ÿ¾_þûZºÊ*fwÿLüÒðx%„…aaq@LBøg]üoàÿ¤ª!ì€ÄŸf1§ô¯†=ÿÞ?×_opÿ¬¥ÄˆpýGã`°-æMàÿ[é¿SþoÿUåÿ¥ñÿnHÅÃÙùw˜ëwüÿC\àÎ> Íz 1ú×Bb\€øoª1ìgµ`P¸‡ËGÕÐŒäö-ó ó…ÿàpw¸7 ª GÛ:üQÌüÁ/§9Ã0]¤;ü×£“ÿW c/['ÌãÃ#Ëß!Æ=ÿÜWa‹„þ²™ ˆ(A¡ >D`ŒšED?Œ¡0ïßBøùH4&ÀÌØ!QD¿® ð»Àî¿P¢T¶õ@¡0û-̶ÿZÿv3 æ ³%šFÚJ…;Ö†·žVË3zñn __ZiN2íAsÎäú9hâ?UwS°VÜ|—®û¡äÑØ´?#Ï—Óo‹®¬Å´û9h,åÞ5…}ÞoϾuÙÃnA‘ ö£béÑk”_“õ˜ÉmÌqÍï¤O_Fˆu mUn¾üÑî¾e&± ¸…ǬiŒèxùìöÝk±¦¬ì+èAS Š„(ó Cµ£?®ÅÂNZãèÏ|ÖÌ2²úzÓ…ó4zªD+QÑSûª³f¿{ÜOO“œ¥þÚ‹SAäX±$5é6}Ë#ÎE±Å‹‰¼¾–ä~!z{mÅbÀ¡W x7ôK?Ç–²DÐ"» ªCà<äœa\رbÖ„­ß“Ü”Œ(ö…8èEsQ  QíË0ùÒ¬þ*reÁRÓÓ”¼ Нq|e¾y™Õ‹7Ç$Æ5’È=9ŒsìíÍÞiëó0pTœ®CÄu¸Òè¼^qýøJi+Á‘î²pAT¶Ü·y³‘é•:ËI7ÌnϤӧ֛-f':"Äë”Ñè¤û´S„úŽ‹2 j˜}µùLC¹$óf¬ºßz5á«lÚ¥ð Cò`¶ƒǨí“Ë©æO §Cßcë–òÝZ°àçñ2È£›‘«éuå³ÁÓY­ qx¾k~ñóäÐ6¸À»ý>þ`ð ¦lWjo¡\w¤$N«½¨“Á ߤ¦?è«‘lJZ¥ÂìšÞD4Õš¥Ûî깯-6Þuššûa0cV¥WkÉcµ@¡fl\“¶7WᜤÏ!ãºöìF‹Ø=Ây2ÛëäÕì;¸fÇñyßSï÷²_99àD™ÝLifLPb$øÚ©@!ÍrÑ£×!TÅ·r²¸ƒ±÷.êAµû©¹…Ü%fŽ%g#÷W"P<„áxï&Ï&DX~XttšÎø<=œ“ŸKRÝú"'4Y[£'#¤›m‡’z0o¬§Ÿ0ú2–OŒ9×_l"þËþ·-Ž Z‡c¾žKâ†K$¡ðÁ pFNØ{ ¾FS ç¹>×OUÎ/uº®1V¹ºÝ@¤aÃǬ@ZwîÈwÒC¯ª7›{<Ÿ o_HG´÷¿²|ZDú,ôóO§åèu¶HêŸÒé’ƒÞdføžcÈÏMQ/ex¡=wì ïnEâmŠ££Ž¨šhðË{rÃ϶¿iàæ}v}šL¼fJç__‚8?V†]¿Øþðl4˜Å#ˆ/DÈ;Ù´L'kåy†ÎÓµT&N#7-08°Ò3²6ºì O…—§okìÇ’`T3yÕö°‘Œ¿¸r·Å3²±þ‡v¹òcѺϯڙĵŠlˆi+ll r@ìeÆv!‘„þöÕæÍÔ¾",ßҪښɅ¬ˆ ý´÷÷óßþ´ò‹¢QÖ½ÏR‰Ïú¦÷l%,ÿC&註‘¤!‹òÄ`¶’òâu–lšUºÓ”Ï“£kô‰ŒNa`vèˆêñÛ¡8*&¹·Ú¦>œ)TßÍUàVPsâ­â*köøiY’U4(_f, ì~kYâ"ô‘Dý[N‰ÔDënû$ryïDo6“/±l`g2n—î#•ˆ7Q#ï¬+e>;uÈÕ+Ú~-Þ[Á ëí wXy è¦ß(6‹F÷v>md•q5øÄæï›Û©¯ïŒú^BíCdd„³Ð¾fÞ Ê}v_þ5áQÜaüÍOüãJ©6Ø[ªz²¹c¦/²Ôš4Ô¦îQH†!(¶-­ÏY¥lW]´hâA·çÐ\‡t•á—3×Û¯Ä2à{ãzd›¼ðG"f?H>g 0’V<„~»rÐVcëŽå‹,T}ì^Y?Q¾§/"¾¸ù„©Ý~-lÇ»¤SChÝ[`Zµ~L†Ü®1»_¥,8*Õ¯®Jîè"Ök‘&•@¢ý4³Â‘2yüô”¡cWÛ¹µc”M]í3W»ïBù—@Õ&Žèé*ýønرµ‡Ψòƒ²-)›¢(«8z|½õ}”~ þ(%½k–ôƒ)F/Ò1†z‰š9CÍ-VÞ±TÂn¬ùV´ÚY/øâ¢Æ]ñ˜7’ùG£,Žñqr6$𕆄*ªåÎ7¿Ê›°Ì~B~õ–_ûªitµ™›mÞP„srN–êcʲä _@ò䣠êbˆµ^%cø°Ãs¬úA›Ñœ‚³Ü)‹±à‘‚‰4h8rD\Y.Vë{›{E?DM´|d®¢›iWn–9tó$êkZ\#0(Ц"‘ãÅJbIdÛqs.SŒçÐù积J°9ÌÞý ÑçC;ÅÔ"ÍÕº:Üg&ø>øh0§ÀÊá 6%>Q$Í≔hþ•™M­J–…’l’™ÄÉ„$¼ñ¡°Ðˆ ku7óWõþO£u §kƒ‡Åç …±kúÙÝtÞ;ÇÔC½ÅÛã!å‹uXÉðÊw§ù¨Ç ¾®vžžÆTžyJ²¬²<ÌÓòÆå]þÏzõÂ>^c?i”(ƒ‹XÅÌ}²Ø”ª¢Ÿ4¤vWæèïæ¨~£Ú þr¯§Rá•jæ„å®ZÊ1 Áøi:Ö“…%yãõåNrrŠ2ý£Ùë†As=žMÇMæ¯ì0Ä>ݧæ¼/‹Å—\m›’Ô.‚aO‰mø‹»‰ÃÉÆY•õmh€ÙWDç²´”Ð6›™`{ÝÀÑÎ ŽCëŸêy~ƒ÷‡®:kø°Þº2,~ñCs©1ÆÔpîØ ÉÔ#Ne=»b•/Î¥—NdA`=žìæé›üާ¥1ô· €?Žÿ´xÍ( b[5ŒîÅN3ÕFñ¾O± ÒU{ž­–àT.2"«ÿÝÈ*D-Æ7ü<- ·Í.ÌzŸ³øüàÄ*‰bÚ€Irn~¶Þ!÷†•ä¤f”vö5Ö¬Ÿf¨cËÜÒm í(£Ê'ÍËïÞë=nr²^ï3£Ý}ÿºÛA ÄCB–ôd%<øiyâ}R@^þ÷ðCà¥È"ºG…—¨×,Rдrlç´ Yê6Ÿ˜J8 ;¢¿~çr„SêèJùº`UÔö$÷¸¾šuOãÓxì†Ç¯B¬ožÑÏ=ƒ2QŒïø¸¸ˆDšÔ;Ù»– g~¾ø¨Œ{°F>²ÂpZb¦ ¼1­ÚR¨6êú˜ùú½j e ÁÉj ˜žÓf›û QE®˜p{ O !;3oTîçLͺïÜ,’вÜù½ÙS¬žå µ$§ÑUÙ QÐ'Š®(w1x"ùA’#ɧcr°ú­Ég¿¬qëtÉÛöYL9M‰ÏóÛÖ³äÌ@ÓO;‚¼ÃtXqHeœ‹€{À›ªsÍE¬ÁqmùÍ)ÖûS}M¤ÖàæÞ¹œÜÒ<¥…óñ¶M9,·ð‰t˜õŒ¹æ†ñ9‰½¶³ ý¯ÍY¶Xo#BÇ9ð?kßPë^¸{fú>O˜4÷È­Åܧç Ï—#Š bè²&br%>œBÏ$Ö 5£ŒÉ]†Ÿƒ•ñPøÇ4g¹ìƒ”vÄf¼¹Â‰ç;H¿³:»ZÃwMƒÔÃL™Ž{­3#×龪…IÔ}lFðCŽÝßó8W‰°º7xPÉ0F `=Ö}ô¼å³’’E©L‹Ò­°»XG!ìùLNSç䢭û)”—°Õ# Ï/UŽw‚óÕîEÜó³çggóHóðÙ¢z“ð¼°Æ†˜×ÎHÃáíÈì­f¾HmÈô=1Á1ñ¾íÌ„17VÝ^2lo™@c¤36Ó ˆk)E(„[ˆ Ä´jÉÃ'ÏÐo|!1V,¬€ù‡ð+¶EgBGŠÚ$Zx8jÛ;%¾ëdOH«”¦n…´˜ŠHòM'y¿xÂlÞ¥bó{@¼¡<,‡[ì+whöˆÊsøKOŽÊ@õÜ¥·2ḵ†Å”SÁV*¤–O!íˆÏ6Ž:†QÛ¡w%»þ—8-”„7¦ü¯é°e(KŒmìÈ騲8=ŠVYOù©£Évo«ò¦Ê¥Ö­ª4wäÎ3ãv8åhšöˆ"lI…ê¹±'‡u µýâö‹‡Ö½G— 5ÃB.èð•Ÿ)‹Bi’Û­¹„Ÿ¼æ)B1ÅE”Âog±é§ß*^=ÊHnʘ9‘ÈNÐKû æÃJ4ìõ6ef‚›áN• –èM4¶Ñ8Õ–ÕM~#éÔþ(ú‘Gp2i½Ö!«û!Qºƒûj_àcOñ»qÉÛCàk¢Ö|1&þ¦aS‚¸ù€]VæihY½üp ûŠQÜÊðd#ã¨ü^ð3ÿÞ‘]Q*Éկ뗚ï•ñ±Væ(cÛH”ã ]«C”+‡D­¦ù™t]ð»¼-;z'žê[¬Ší/în_º­h“ÅÌ_Elüb,xÈ$Jºí4›h§p ·ÖRÖkCº{’ˆú飽—ñ-?ÝÈ¿Ýç83ÂlÞÖáX÷Å<\·ûµ¦Ç¢SbKIxÞTßúòðòúq·A% õ bÔF¶¯O›æˆÅB˜÷UÔÚ` Šß¸N%Am‰0ivÙ”‚Îôâì𽃽†¬MÏÄLT´3˜êç"„µLç«îêtÏÛn 6÷£ä¤X½r—°õOƒ7µ™:ýæd7”ç¯éO0ÛhFÕkÕCL7ÑyõŠß‹×ÔF.t{q& ¸YÍ(Cæ§ ±Ý;"ôÚÚ~ÿöÓøe¥“æ7Ëk8-p2g™E™íÛÇj¼ž]㛈„®Ç\â¶/”C®õµÊ9tŠsð3Õ3ßÈ>Ús¨—Vm;§íÄE}”+%N²¿¼bå\²óøÄ Û‘÷ ½ýÃþP§­ág•«'×Ö¹®5 è¥v½×G.¬*‰ÍwØÍ]¯uJ/ô×7&U¡W¨&…SZò3jw’Ý· Ãͺ|ÆîŠ ÐO+LŽנ‰YG™ìœšôW*Š„ER“™dÃw ‡µZõ‚g¨^<ªÆî!š°&úìlá& ZÔ#0öík“wu`}š_f¢jïçýa"õ¬ÜJ9MZnòžBÁTK0ÛuGh_˜£”Iï° ‘iè^}þvÆíÁ“`°ÍLQMv=ï{hÎíÁ  ºi ‡}7£ø¸Í—Q¢0€m•IÛZ6>OÉyA椻\*G«oBAÅÖyѵ\Ÿq6uéÉëcž¬ÓS™ê9r¹gab«®Ð!÷nÍÛ€ôáÙðË·¯è·â”ãcØ<å>’.40w›UU…•ö3§öÔ¯g–HçÍfÌÂ? 0?¼3Ð|‰;E XTØÏ‘œ-„@å ¶nÒä‘ u\ e§˜¸á~)"—©F.7ß´Ìg5 ÌK$g”ñ¶øoêˆÕ©zÅh%¢P:xò›n½­<ÉÖ­K½9ðâ©ÿ¤Y%çF¬ñ¡½„„ÎÐæƒò”ÞòMP`‹ÔV*k’’(LÙ|5ömºÂ3g£¨íEô°á+æÁÙ'àQG+9gâÒÛ |fÝUž™ð‘ÚËa8©-/¾¨|öØ.šÃ¬„ß Ý@¥–ad›©;ÓçiŽ×,bU* Û3³Ò,=.É¢Œ?9™ù&‹knœ-Äh1;,!»u¤¾´vÊbY;ëÎOÚäÕ5'œæz1¶ßºåI׫ŒrL!5]Ùæ*›/êõUcXª¸û$åµ–³Oƒ«cñ»;,EÞŸîE žøï¹·|dG(Øî!E›ð5 —¶ Z—õáX<á|ô•TågsœŠøß‹ÔÌ…ëˆë`â}¯E¥¤3ê ÇÖØ;LÓ ] ¼‚Ѿ~|mjŽÈI-Ø=C¢³t™ÂGˆû™‰)8+M°OÄ^Óì·"×£û„õ=o>‹«{x¢¡(3Ý1öÀŒXv¼½Õ×Bhç¹ì–ùí«vù)éJzþ†ŸusÞ€¬f+{Ôcïë27ú¿°†|Z¯]?T1«3^{#ð 7*P û¥îèÆð^›_ôü¨kK SÇ,%cÌì뮃LPñƒÍüC8Ku¤")CµXýe´¢Á¢×Q…c>Oe‚Ãú˜ÐœJÜØ$Ô7ÍãÃÔADÜfM}³WBÔ tQPÓZÎrØœ©ú¢˜4ÊQۻβi·Ì™ ëÎ)]ÉÔÞCÎ?Jæ”Ø¨•D+XØÈJàÁöXâðjWZ®VëeKç×käú¹ço‡ºB÷.à¡Øõ ¤M÷"6ÖÄ+ÀŸ¼)v›vªlï^kØòÎ_¥Ã1fÄ“Îa,^PØ40ÛÞoð( °«õ'T² øžþ8‡ËÒi†‹Ëß;`¦Næ|E2 ¶/Í3T—2v±Ñ(ë[žÉ]«i’í·'Ìîý½§|ßMœ‹«\x]Ö+= ¹]¤½'@³$çF¨v¾ÑwÍRµ\6Oìº4ÇbõßìzªPN7_º0”W¤Kun4INÛ–/~3û*ú çe·ñuÇÇ”žqÞ2PÔëÄBÚjYrvªŸÏíbêå¼E2TÖ[,w¸on+ðR’˜Ø¸˜é%YÜiò[{:?”MF¤‹u¾sþ’ËxµK{îÉ0“F¡°ÛHg¨u©†›¡|†¿XAósI¦tÒä¾é|ÈNaŽÉ6Ÿìå!ÝEÄg•«·Éß²¾ ÇÖÀO ¸Þ'¦:å™t™.°Õo(|§Ý¨ÜTýá–ò‘UôäÀ½ •›ür›Ô"gÈ7–z 0cz¬£ê…CåP+kl~62¢-ß9î´çpÆ€ã€ì¹±=zrÌÊæÖ+®ÔЉ;×]>œ.ãöo”tád8ÌçYyf*PÒݤ ~á+Èÿ9«º”S8ÿIUCRy©óÛ!ª¯3ÂòP¢g3P£©~¾ý—[3ü¹ä?Ý©­™JýÚx¯çS4Á‹Uï½»‰ Üø-»,[/Sz{l´$uµYòux,W¶‡ÖâáëŽÁAÛ‡`Çk×r'è€î”ŸÈÝkWܧn16«ÐsÆÅ¯Í¦5ÓÙ{­õ– µ,þ*Öc­ÑþJÍqkÙp+丢òë' $©½¾k«‰o9µ¶NžŽÍZ}àbè^Us ï £&›@ÏjpñJâÕfÅ„ò=MÝ]9Òú”µ°_ðj#-(5 ¡ƒSîaìËéi™CêÃwõÑ·÷uky>“¹)p?a…no‘Ëùójå'¼Üß*üp›…íuôé£}VY—;I³ÇlbiÒÅVÑJøš§”ÄÇug[ ¦’†ågóï¤?¾z·™ŸÍd%¢unklû¾ëIL™Mån<Û°Þ¸/ç²1K„ÛõÅîë}™fE°HYê~—oÛ5Å´q{QU¤±¢ôœŸî£¸ÔdR³xy%h<ÿd³ItÅ}jÚ9æ%wÛšgÁ’“sqU¦Y?^ʨ¹µÏX0Çe²åjù¸Ô¼ù²îERdÁÊÛ™ ãSã ¸ Â7½E^V “ äBq¨Ê)_©{BÕyÕ&;,½{îù›@ Ÿ×ÂÎâþ«›-¯Ú.ƒÊnä­G^eø³ hÇ:ÅJK ÉM>t<Ò`U,™ ì¶µ(lo"­¥B¥Ìûó3"»»¨·Xi£ni»ï-SQ.þŒ–^«¥ñrÀáBß½Åâ_ØuFeíuܧTCgCÃû”€sÍ endstream endobj 270 0 obj << /Type /FontDescriptor /FontName /HMPEFZ+CMSY5 /Flags 4 /FontBBox [21 -944 1448 791] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 56 /XHeight 431 /CharSet (/minus) /FontFile 269 0 R >> endobj 271 0 obj << /Length1 1436 /Length2 6428 /Length3 0 /Length 7415 /Filter /FlateDecode >> stream xÚtTTmÛ.Ý Ý1( ! C‹€Ò݈”à0 0Ä Cw#%!]"©Ò !HwŠ ÝÝ*ü£¾ï÷þïwÎZ笽ÖÞû¹îxîû~®ëád×Ñç—µBXB•p?H@P ¯©o,"âä4€¡ ÁDœ†P¤ —ü_òH(…ÆÀ(´Ÿ&Psu€„ 1I¸¤  @HPðþߎ¤$@ì³h Ôp¨ §<ÂÉ ³±E¡·ùûÀ á€îß¿÷; ëE `8@Œ²…:¢w„€ú ŠòüW n)[ÊItww;º 62<÷î0”-@êEºA­¿h¡: âØÂ\þàúk”;   wAG¸Â­ Hzs€¾ª@Û ÿã¬ñÇáà¯Ù@ ÿ¤û+úW"üw0A8:áž0¸ Àæh+i †Ãœ]¡ª ¹ !¢0( *x_LLDu@= ¶À_é < ¿ _0º_o'„ÀÝÔf Eˆ¼]ÀnP é õõþ߆¯ˆ@ € ‚XBm`p¢²£a¨õŸ5úð‘0€© š{ €à¯ç?OÑô²BÀ<ÿqÿ}¾@Me]¾?ÿÇ&'‡ðxóƒDü÷EAú%.!ðýw0ì¯2ÿ‰U…[#÷ÿT‹Óß»ýEî¿ÄÁøw.-šµP÷?$7„ _ ÿoªÿù¿1üW–ÿÉÿ» %W‡ßfîßöÿà v„9xþå€&­+ -MZðÿv}ý#ZM¨ÌÕñ¿­ª(0Z²p4™ùA"‚"p˜‹Ìj¥CAlÿPæþø—Ô`p¨ÂöënAG þ— ­/ˆ=úþpAóò· Š–Ï¿÷U„CV¿t&$*#‘`O"A4„DEÞ ´ ­ ¿™ À(tÝ£/À$úu¬"÷@­zîhËoPt„Á]]þ€D@ú6°D­ƒ¿aQ!MVðï¦ÿ* âŠD¢%ú›Aèºÿ^ÿ¾ P(„hzybWÒô­B–É}oq¹ùyœqW„(Škò•·­~ºògg¹gV¥ô):SoÂF'|˜x¾ {˜µe.$«ä 0»VåŽøsû.OÛl ¬VF›ñ”竇ñº,·ž™â˜ÞM|2ñ#T¼]x³l#ÿg³Ë¦Éý]€# ð+9{2*F6»y+ʘcÕolFK‰4Mu5P}<ò+ {!×Ípé¹j›Ö??ß›ÙÝ•"|òZ½£\¬4ŒŠÚK={ ¡‡&>S­ÎƒKNô«ü›¤¸Û Ža\ ØŽUã ffŽØNAG@³Ý€,,3©}Km¤¦±itPˆ«WŠý‡—'Þ+Né!²&¤A’6 Ü++å†l{õÇ7o4?W®Y_œLrØsdEê÷Ñì·sËç,E9©ii_E.m¶¥Å95JÆŸ²é–‰*ŒšÌèÏjT‘øèŠÍC£ó¿Øžn˜É3¼ ¤¤—¿ípl´1™®|¼»‰8!ç x‰Ï¼û$·ü.†â¦é²¦Å•ŠæIÄ@‡Ø>Õ²åŒSö¢‰e­â'Šÿ,ÜÃsÄœÈZÍöpÿ+’hå ý%Á9³ksàÜé§%&Æ×™~ ~Ø!&È™q}9Ëf½h¬Jï…õ·Š˜UÄúÔ5÷épü)ûç1øîõ'LÊ£RŒwj·³¦ci"SEv^½œ—FYïѪâ%ÔÍäÑzí”{,_bZ¦ò×RyAI—HÛH .zH!Ï[E>ïñc¢†U3‘tïúîN…kêIÆÍÃ"îÝ3X^·?L¢z‘,”šõ9£q2¦;ü¨ôN$Û kVß¶‡e׳`ãÀG„ïú²áïìñ1Úî5ð…Ûw#X\e¨=GV/e Wÿ®üËåï8:Šû.·²¸dîl¤k‰•*²SÄ«œ‰lsÉAø¾ 0»€¹?$0VFèÝ'Ñ1)Ö_T• ÆiT¡9ä ÷ö¼7ºV•N?G¶]{?µ¬19c¬øÍç­WA©[Gc±ó´T¥.98÷mÎÌY‰†à;+ßÁÔ0òÉޏë$:lN"¨së^– v¡ëy‘wúië·K¨<ô5O •¬˜òÎ‚Úø"&›È^Ö[1 Ä"34 éåflu½>5c=?ߨÇ0fØÃ~o©ü¼'*‚¸ò8?råxº€}·:ñ8D”Äí]Œä1Ó.w…òˈ}bß5"]{êcØïøײÄd&$}+n«ä]»Spü'ÆwÎ&è7äaÒŠMlN†l¢sœò•OÒ[:>‘“¼GÔœò:“‰4jp%øæ§‰~r`º3Ö•q1YiÎÌwMÆ“ï­Õyƹ^4%ì<þZ0.¯¤P°NÖqÀô‰Ðò"ÌÖ˜Øc²cå¯î˜po‘ÙÔ~vûnWÄm§KéâªÕµO/öWc¹˜$2Ì[û¯öPÙ!3þƒÃÇ”±txþ}4ô®òb©–IU Ël‡ƒ­ôà LÜp§ å¤-K)Ä,ìUO#ÏS+?` ö;ÎíSn„Ö Fr÷ë[:ë{)#Ê£”‹ƒÒ”›EÉq¥dÎw'Ußi9.ø=©Z zmLÔ»Í"›[v½ñ””¶Äì|¾QJÁÎuÒ»E±[ûœó“L¡ñgÀiÔñÀ× ï1$ÇFÌÉ­ÒÙ¨LÑÀˆ‡[ŒjÆ)pÙ|ì‡/øD=¹ðk¢—qTÄ@8ð˜½^G]½$íø¿ÒW’ÒŠÉX?¨® é‹f‡Š}d¾É&µo ˆ_S`;›z.M‹T=DõµïL ž[hà=¿%’…ÉKÎwÍ¢.«{°#È$„í3›ÛÈô¶ö©*­ÑrÐì»Í/Q$ ™¼„/»,pôŸçsbÕh‰ö­„‹íYì5Z'a—„#MœôU@s»|ㄆ.åï:ó[/J·hu]žP§àñ¾1€É\œhŒ IÝRЙø’‹=^! ¦7¨Jt"b&Ä"Þ £»&Çë„°žÎv瘹¸S‹¤4;‘jy”´Ã~\>užµD톹r›˜dKÆyIkHû§æŽ™PuSአëŸT‚oçÃU;ŸB‚+™Ú^lÌ­5æ/m»ºWZ£Ò ⇄§9ÄR%"•ülZÐH|½ò>;wµòàü,¿âЂÏ*7¿~†·, k³«ãÔ•0íºŠ¼©'©´Ù5ðþ,íä÷Â¥L=ë>Au"¤ýN˜ð„¡`Ëš>Áˆáý{ÍóÅÅïxñŠÚù˜%±ÅÕÄá Ñ:³¸‰ï‚¢T0-Üeùrt^þaŒjœD´]VóúNÇâ'¬òOú˜ú¶íË©yU %·¨Fg~ø³IÞƒõê™Ú€Õo#o5¿à°4½2²øI^¥:ZU í”^ Úš .& “Ûå잺_ü=ïéŽ ûÍÔÌ€ÛOÿWÙ8êQ" :Žø–Ÿ±>ÑrÎvyãñ°ºÔ¤¬87¨¼,=ÇŽÊ}l÷Òm”¾ÏûàboÑ{v‹?ÜžOE›ü·bñ瓡›ÈíAIe!ÚCÏh™2çnÜù…£ûŒ"x¸ŸY¸í›qåN¯"ÍëzŸ¿î/ šý*™åý…æIªN¶°÷9í 5kƒ—¼ck‚§0è™CJ¾øoŠ>‚º×E3?¼diºÈ˜Öö©¯z°ØœÜÚ¶ä©4»·:zKz¤œd:±-4² Úu°uOd4Ь]©k7§aÉJë7ï9=q„b©¼jMÅÚ‡N=rx|{„Ýdª×¾#D†ŸVš ÿ•j•Ú¿ž,¯Î£:v×–çGµû<ý³n8O¡‰yïþäðúnšÚWöàÉdIæuxµÔ7šEÂ.I iWÚ ÕÅsÁæ¤ÊÀÛòlÝ™k^3=-[ï&ÄGNü£g:ÝVõMŸ5Ô°Fÿ¸˜éâ‰ák”ô¹zñΘŒ"¨br‰õÁù¹ùègç>7î%€=ÛžöB*uxÛ)+š?Q‰z+Èoã§ùyzœÖ¿ªœ÷Û¥•3õp¥éNd‡ùiÄdùZpÚ“Ž®3žtö®AB%¬Bʸ4Ÿaz6Tˬòf—¯·ýPÕ#üjj51áys4·öá"v¬l˜‘šˆÁ¦qÆÛÛ\ÌÁ,ÆÞ_‘avËGågî ¹ZWÈŠB?h vUK˜š43Ï€ šîfüõD˜ ç0%¯8õ¶%s0rö lúÔ¥¡ó€ÄL°“V&-)@ÎrÁ¥yÇB·„<Ÿ„‹GÆ4Gý¸¸UÈʃAëe‘Jÿ½M¦øcµäÏ ØTõ=ã¼Ò‡“îyÒ½Z˜¦Vññæ5äU:õɓ͓êU*õ)Ökòã¯ovw–j#Y¶Öù#ù¿¾FeCº9_>ÁÖ{(®£KÜ´.ò3í½n¡æ¥XPþÇiÖq/ŒPúàêqsî‡m+ïµÔ`Tîa‡?Êc?ßëoœ/®YãfœL’—íQømÄŸßÍ¡öYªKÒ½MuèGÒ b Ix¢FÃ;}™»»N$ñÞXvK· í@2~Ôx 6£ÜÏéÍ žAÜ\HXi9PÇÒŠŸ³^ŸÏ_<€†ÌŽ t›ýàïǨT:&±oeçÅu#ß:Í& þ0ÝB¥•Ÿ¯ÓeR¥nÿÃÜû+8¿,wPÇ~u9M³ÉDdM¦ÛËßÓl/ýTÚv (óbho¿Šzv.•sÝ®io­{Ÿ¼ÁÒWƒK&?×7ú0Ð#س©:вÛ7…=š&¸g¨­"Ugm§–ÛIÒ"n?êŸf´K­ =qYÄFŠyÑ®:ðÖ§k8¤“¼®o2D®Óçò8üÃ÷.Ì‚—䉤g…å)е¹Í>º¬]ñ˜ ‡8“\Íϧ3Õâ²"m‰:™N™ÙšÃoëµV$wâXïEàÏò5&Å7GƒÖ“Zzx݇ß x’ ¹OZßÁ)ªãY&ñ5€§–esh­öèøc6'bgK° :>ýÄ Ãæ¡ƒ†ë E#Š2Œ^g¸šú âØ™5ÏI•&|ÏŠ2­ÂÅHÛ{Dê~ÂÓ)Ñx„Èl™£ œiáæÙW᱑Þjó^ü6ú>§áéCE?ÿÚîóëãi£Ê»5‘Ï ®ZV–ûSŠónwöÊ>bKèsèo.ó¯>Îoêà$Ú}c_k½ÊÓ 6ôL1¡¦¦ØÆu™ Jp¥Ð[nôýyx9ÍMÅ‚ŠûÀ°Sø09f±5f¨.÷‰ )%þb[K:ë=ÓPv®FvZÅ?U½÷,Ñ£ÒPáG VÚ3§Cbf¾SÀ)Ygå £6¿–hÉ%.¦a¥’rójÖǤ–½ë¢¤H^õÙïyáf=ökûç¤Ë,ùFÕúUäõ Ó§äC©ßu¹ÂK¢ØgÀ¯{ÊP¥™çM‘éêÌz "µÓ]zŸ‰½óÙÙ>q SÎÓ Ðû.MòËõó… v,¤Ý¬¾üÞ ›ùÈêßá÷%¸AJSü}ÀtX¯ÃËöýñya—5 ÉAßl߃<žp¼o%D©°KÖü„» ÄÈ‹‹Šn9|Í#BÔ6°çð•u[8GsQtÔi“Ûd uµnë„×^33ä°Ê–d¶Ý_²K %»J €‰3¾Ùe• Î@Ê­u&™ÌJyÖÔ4n‡'QÊ$]ÛüÔO6yï}ÚVWëØm4{¯=c &nQ?s· ²¥;«V8 CU€ª™²oûx`Gíöw¾×?&~Šý¬” AÄ=h/üQ<îЛʺ÷mTúy:ÎG¢Eàð£ZÙO>ÕXÊ| rQÛYzG“Á¤ÂÚDz«rõí£Þ.·©†Aâ€ÕaûþÏŒñеQ~Ê›8Ý0­%ÝŒ€/ ˜D/’bxaÍÒÛuXÁsJ{¼U¹ÔKœÒš¥LŽXa­¦EC¹O±ÄëT‚‚Ûc½x/KIuøDÅU$–™JQf’FU¨Qb¾Ú€Ôzjâ4\ƒøB>ñΨm:‘»Ü)Á­®wViÈ‘)Ÿo5ÞY½뢹ºˆy¡æýæÝ¬‡:E›ŽÐˆO!Ù³ü#%ëOªº[úNJ%roDÒ1h¨¯¥†Õ°vù•‹F;y´7 ”› ÙV‚A&'555sðÛžÈí¶-›aèôr^{‰åGO¥PvIîG‰Ù,V=ƨõÃÓ^+y£ÏD5J];*^Co¨ó–†òVñÃýÏ­#*9uÔt)Jfƒ™_°÷˜Ìb>¿$edìòš“µ`<$ºŸbÜêc$zB!{'×j|³ÒlÍ\&"Ùѯ6NP¢‡Å½}}Œ³¿}@É‹ò=–b%RÁ½DãyÖËX $õ'¿ÑëY -¡þÀf÷†Ð÷- yœNÙ±¢@^@auÑø7£z†W%6êÊÔ‚Õìˆ3¯Â'Á?xEžz´³ìu¾ÝÄl«&Üv<þ(öú€Ü²ËmJÝtu{+ã ñĽ€YGË9k]y!ÆUèŒðúåÁÓƒù8¯NÕjÛ‚|é=ÕVµjb¢ùS½™­™F¸t|µL´Yeœ1Jz 3¯"<‚Ï ½’Xt+6UQ'ÞÆ'¾ÂA7”2Wb‡ó›$ÄÝê)Gº¶ç„÷2ÉžS_ïx^÷ÝÑÛŽ¯gøI™9^“µ²Ï¤‘UîÆ.ó–x±ý êK<)×ÑdĦô aæì°UÃEÏu€ý¤bl·§yPÎÇíh2ö¸4-öC©»sˆÈëv¾mÒèy-´­¬_[²·ˆèÓƒÄó…ñ—·Óæù} Â*bó•XbËOÈŠ1×ô¤,¾¼;]s÷Ĉš²îeT~_ÇÔáä‘pk}ƒÃ´ÞÌ7ˆ4Àu^Ü+„ß •ÐçdºûpuÙSD [¾J šŸ{æêFqë^Ì+"|«þî^%°¬á"µ‘z1Šö#êÑ Rÿó 3³'ÈOÔÅP¡yUèN±QÈ/s(^þæZ”Gü|ãŒ=)üa+/Š[Mw¥yku²VgõýO‘ß@4­^Gh"D»õ¦ÕfKßæŽ^,*qÝÊÚêõÜ¢¼áž|åØc5¯&ÊÀËEE’u¥¢µ!í¾L %9d~z(¾EÄTHܞɗo‘ÅàG÷êõbùœä.í+œÏôV½ ”Ã.®m5“U0GgeÊÕÍ¢æNeûo•ìÂJÕu¦SDLø¹fÝuHV†ß¦€¶ç™¾3bœæ^`o¼°|ƒXܦИh7Ú\Ðã+s°Ôï“ÓHì“‹!¢P:8g6M}Sœ,.ëN|÷Ú3òÃšÄæ`” »%u×|_ªlJƒcX;vVÐ…j)køH ¡JÖ>çþê’2©øCÛöC§Ì­C¢à¢à÷”*†Ìå"I|o¦ZGýœ¶Fw³¿o`#‡‡|‹h÷ŸÇΗ-'¸Þ8C³U u´wŒ|ÖHÝZ^±nRÇ­Dl_S§P¹œÌðú!ê|5 `‚b®„^ùâä³ÂGå:ÎË¡•ô‹&=3:S/–*93-݉½ Æö›äãKãç„ôµîy;àŒ’/rZÅ?\]]6\¾Ö¶q!n“%Ñö²²$`ñÝ[Ìl硇¡ž?(t í:C>J;¯Ò‡Šciª_ú]‚Rã©ÜçwRrõÌÞ陵©Î}ÕºSŒŒÉcNc÷ÒÅæ ÕOk7§kP¹mñd×è²¾Hùо)øC@…jÁ>ûÕvi‡ endstream endobj 272 0 obj << /Type /FontDescriptor /FontName /MGPQDP+CMSY7 /Flags 4 /FontBBox [-15 -951 1251 782] /Ascent 750 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 49 /XHeight 431 /CharSet (/infinity/minus/openbullet/triangle) /FontFile 271 0 R >> endobj 273 0 obj << /Length1 2213 /Length2 18897 /Length3 0 /Length 20212 /Filter /FlateDecode >> stream xÚŒ÷PœKó‡ ãî®a!¸kp º¸[pX`qw‚‚www Ü î îúrÎ#9ÏÿûªÞ·¶j÷¾zzz~=Ó=w-¹’*“¨©1HÒÎÖ™‰™• &¯dc°²r0³²²#QQ©­Aÿ±#Qi€Àv¶|ÿðs9¿ÙÄœßåíl2.Ö6Û>6n>VV;++ïíùâF®`S€<3@ÆÎä„D%fgïá6·p~[ç?Z://7ãßÓ¢6 G°‰‘-@ÞÈÙd󶢉‘5@ÕÎ röøŸ´ÎÎö|,,nnnÌF6NÌvŽæBtŒ7°³@ärt™þJ `dúwjÌHT5 °Ó¿Tí̜݌A€7ƒ5Ødëô6ÅÅÖäx[  ”(Úƒlÿå,÷/FÀ¿7ÀÆÌößpÿžýW °íß“LLìlìl=À¶æ3°5 ()ÇììîÌ0²5ýËÑÈÚÉîm¾‘«ØÚÈøÍáoéFIQe€Ñ[†ÿÎÏÉÄlïìÄì¶þ+G–¿Â¼m³„­©˜ ÈÖÙ é/}â`GÉÛ¾{°üûp­líÜl½þCf`[S³¿Ò0u±gQ·;¸€€âÿöy3!ý±™ƒœ\¬¬¬<ì<änbÁò×jö ¿Ùþ2¿åàãeog0{Kä6½ý y9¹‚ÎŽ. ¯ü/!±±LÁ&Îc9ØéOô73Èì_üvþŽ`wÀ'Ö·òc°þõùï“Þ[…™ÚÙZ{üqÿûˆY>JéHÉ|døwÊÿüøÑÎàÅÄÁ`bçb°±±s¸ß|þ7Ž’øß:þ1hkfàý—Ü·}úd××í¿„ð¿±ìÞ* ýS躬\¬&o_lÿŸËýï)ÿÿªü¯(ÿ¯…þIºX[ÿ=Nû/‡ÿŸq#°µÇ¿=Þ*×Åù­ äíÞzÁöÿºj‚þÕºò S°‹Íÿ:½uƒ¨­ù[E3±q2³rþËv’»ƒL•ÀÎ&ÿªšÙÕÿê7k°-HÉÎ ü× ó6‹•õÿŒ½5™‰ÕÛ-âôVšÞzèו°5±3ý«Ùع>Œ<ÞÎú¸^lo]i rÿ»˜,̶vÎoSo9úÌì‘þ:Ø\Ñ¿Lÿ¢oÕô‡¸,bˆÀ"þ‡x,ÿ%nV‹äb°Hý!v‹ôâ°ÿ'€Eæ½i‘ýCoZäþЛù?ô¦Eá½iQü/ñ¼iQúCoZ”ÿЛ•?ô¦Eõ½iQûCo«kü¡·Õ5ÿK¼odô_âxÓbdcÿÖ]pÿõy³ÿ¡7…&ÿ%®·1;ë·#ÿ…“ó/‹ÍŸ¨Õ‹é?ð-Ð?ð-³?øÿ1ú–˜ù?ð-ºÅŸµÞvÙÂÃÞdû7Û?ç¿%où|Ë×êø&ßúø–›Í|»XþùíÎc±û¾)µÿ#åÍ×þíEdk 2sþceû·õ_7ÈÍo¢Þvl÷]y{³8üßuü¾eåô| àü|ËÊåø–•ë?ð-+·lð›R÷à›Dà[Vžãÿô¦‰‹ã[Î_¢oûþû­¹ƒLçíLøƒ,kƒÚïªE‰Ý˜vÇÙ9Q.¯4w$]÷”Äî/9ò"D»gEÜo`±¿6Yiá±Zé¯{§Dðá-ַÚo3zOb >9ɹ°ÿ’íêÒ1ä°55Ç;mVùáv%2C‡Ïèp¾;—~ %@Ý\y[aq OÓxÌŒ5OÀÃÃÔ!šÞQù±Ftf¶Hét!2þ;žTòà>¥„kk`©”¼™B|xˆj/{•~(ôm¿ç‘¬á$`†j§G‚à1–6àª=ÈŸÖØiTUø=pgòBúb' ¨bÞ,=¸ÝŸ -¶Kq¶(šånL³¥ÏOß%^ܾ˜¨VàÉÁESÚSV&…-(‰ˆÜ·€(9uTËœ…)ë-W34§¯æ”˜1“RÀ8’†Ý¨¤zéõ“mÊq$"Ð1Ìø±ƒtÛW%"3 Þò§µÁjÀ„sz~{/º429zøù㻣÷ù$Þ&NF¥xÁ9¸É£,í4,-?°âXŽ jN{M²íæÙ.ú4G" ¤Bûæ‘zÂ2kŒP\å(ì U’˜Š‹rÍ÷¿ø8_´mŠxR'–LjÏ\g†‘½—s0§Àf3Ï-Û$#_ô^ƒê B <ŸjŽÁ¯iIÖgšÉ¯Á¤ê5£f_ÑË|&r¢ôMƒEʽBëF>ô|>]—Qíª-í«s½¦L¨»×QPž×*F"妒ei,*>‚XÝG`‡¸(+çøPê’Y<2nèƒUëò9¯¶bë]Åv^ïu×noÍû1yÁbx3fc¬‹™eÛD¾m¨RïfPšŽJŽwüsf)dÉòˆ±–²JSFÀ]…:úÎý3åìåßôÐ8ü}RœDp8X„¬:´”ãsZ®Dôš‘NQGJ0/‹¶•ˆZ/êüDÌýFdÜZƒÓ\P^ŸáåS<÷¤»Ô6ѯ- …ýðûI7Sáô‘æä,** Îx>¤ )ømêÎ=FQ¥Æ;t•ë³c€¯üæöäÞ¾˜F¸²;…‰@düÒúg‹Šp*ÖSÃ¥/â» _¢NΗlQø¿²œßh5d§ËC´B ¸é˜Vƒ9N{4"R~Q0PÒrÍ¡y3'¨ÜžD.H}*ÃuŸX ‘çu¢nä&p B üÙxEÿœ…Žà—'Ã!)Ju$k•=M¶q9mÊâU¦—i~ÙçÀ>r3X( ûFµo;¡IˆÃåÄ[§ž^3Í"æ›iV·;—é%ßëÁvr°“]C_”dÂj A5L©~öS¼.©l@ݧN0|>°ØÐr’¥¨Û¦ÚCÿ:0–L1eqÒ&ðÚ­ÁÍUiñ>;ñ=q ¼ÚÄDxŽ3 Œœä;óŒÙV•gŽÜeyÞ‹¤¯ùÏþ)R%Uº,S¶Žzóîu¼ï!3Àø–>_'û)ï³vúQ»nLK&56õ*Kò´‹…Îè‹"ã8ÇÓ F, ù̉•ÍSó÷Œà6’~ðR´¼/€§?§,mOÇÚòðÐÍó*BäK`xyPÄf(‹º]±œO‚³‰ç“[Só ?|àâ‹VõÃp|ÏÞt ŒˆÍp©÷»³Ø¯<¤6rýh¡ïû‹† Š:>ÏçÑñÍ(ÀòÅç X?®=~ÒK¼®~Ë…m™À†»…» òˆ½Ò":8f}l„©Ã¬×Y}sk ¾óà iä•Ú|œ²)KJæØû¯ØbËøCBÓw¦Ž;˜ÝÚ9ž= câDúd´«¥q%Â¥UËNe!NâAΕœï¸HàeIîîfŸL r‹4 ¾5ù¬ ö)-i^T$,VZ¡ß‘´ùAÚ’ÛŸäù€Ûº"­¤iòㄡخђºj—D'¬ãƒØËUùïãàP>µ¤:u“Ùå¢ B´>Š;_<íÈ’úû&óù,btð²È/ê™ýnƒÓZ´6»Ècz÷^ôjEÙ.B”Ñ«YØ_xª¸©»m%‡,úÉ3¦Q> aæËxÖ5K'°Æ¸dìàúÕLª6-ÛE²hÂÓ˜Óqá —ðéVX gi'8Ju'¶xxkæ{- M2öëÌ=K+×í'¾QŠ„êñ ç–g©ì5J\)]ÕŸkZÔ÷A,ŒuxêIbàrº<—ëöÉ{SˆIT»ù|ü•ÞßQpPÉZÉAméÌ©Ìç2(ûÍ­ãŠÁVlö³k×ͼ³Df]_²Q#ªG™.<¡6ÏI‡Ài·öûÙÄDÞg|Ó‘nìÀö¯=ö…‚¶ÃÂpâ´ç(_w…º}¦lÂü =s¸žB±ˆòQЦ/G(ÙY(~C ã\šùe}È!£¢S¡6^åY´,ÉüGfsŠ›Öà€0"¡Ì$F†:æ”$Û4û*î_qÑ [ ¨Â?„û`*D®½<}ÄÛ&ª\ 7žÈ¢1gZ·Y ‰°ÚÃðòqo ·ê^“:x~°B¼¶Ï½.¶ o)ô2jÂV÷îc_Ü çWcª[k²ÏKQïF9[2XhP–¨™É-4º<Ã\™xò Ÿê×Ïx<ÕÐò—ç°×¬ü>¼eZ¸ûÌ]߯‡qí?vèXQD­œø“õSgÚ”¨¼^¦ÙœÖ/áFw½wà–»”_g¶êB§þ¹+TÃÍÏ´SÝjÂ_ SƘqPØä`˜ëÝGÁF!ÁkÒe/·ïÅ¢˜ ͉ðá+ÍVéÔâk%¤B|¿àƒÒ€.8vÂ’ÄæÈ3\)ßxK¿ÆÔ£‘û]MJi;öPÎçüœf]Êít÷ßátðÄ[ðY’‚ÓÅwMH¾ðX‘0ßXÿ®êA÷¶öÆÄüŠRRÇRv·’ÊO“BË®¤'€¸i{;S3{‡d­Û'ö´à·Á——¸™NãÍ4ãàŒ;Ï Ú/J a>J„MŒÕr,%£æ’$Þõ±ær%Ú’µ–ø¹VÅГ›Pá ŸìØ¡F?oœNt9ÑñËð·¤N…nȰ7N{è1³Ý#lCЀr#iX÷ö t‹±ä;œùHbüÍ»×ö%l8æñjKèqœµd‰]T åȲaç1ŽFŠ ú?ÎrBîÂD*Ù`dôY„¬w^º>Uó7¯Ý+¨”8µ!P±Êmœ2o·Góô©å¦ˆy…3*áºüæE†¡¢@êHcÃë[hżÒUÇ.{¶g-î˜ÝoÖ:íáAtÑ”¤H‚ݤ¨Ù‡ Å´bЯ'¥Ço» ]gg.…´’9C.ˆûg©7)œõ\;Õ9.†rZzbAV:qÆïØï}ÏZl¤-ÃØ|žÛÊ ”Øñ¼WxŽ †>‡ŽŒZÕ*mÞpÚÝí}Á8&ÙÜÅÄB¼L)pM›ýúå2 ã²lh}yŒçNëS‹Á Ú!ò÷)ºƒ+œ ÍðæÃpßës3Ûl†qªx!ï3¾Ïˆ¤áèù® Ö[“½¦Û\••ÀnàM¨}½XUxÔ“Ë_§jêpñ º‡¿¢*gÈh|ˆÞÌO²s~â¢f???ÊÅkoÒÑœ |é’WæSšhíÖ=éw+¼ic¹t±lÝ0K )¸-uëU˜n† ò‘\1ÕâGhù:~â1øëtœªÕH¾Ø¤7Û÷ˆ%÷„äÜØø¯,nZ»ÃZ™™¦r@tÆwCX $Û}9ôŸv,á!4nQ{Èåúô𨹠FµÅé¡avçᛤh‰ èÖ'ì„tõÔ ìÜ@†…úàÛNó—¼´Päç× ÃNòZózT?³^a‡:·¶0çŸé²¹:sη×Ô°SPÙŒï!žé¶´¿1z~»ï÷Œ˜ìŠ‚…ÿUXEÅFž˜1˜ÝX]¢Iaï2ñH°¹2Rqd+^ßv|zªÆûB‹¬ŸÑ„êܸùª¢ÏZ1&ëŒuê5×…nþ±î‘bn½èöTÜìŽ|c]Ð;"®Dù'ô6ßÓyu¤b·öŽç>ªê ˆ¾g¯ïY:_¯ ž ûðYÒ(Nm<Nô»ƒÌLÕÒ£í-qt{^ÎoÂRï½-ÜkÍ^ žÆ ÷„ú玊kƒï°*§4? / V$Ê]¤r¥Oå&L_a—jqv ^»Ö“ ÇKßVC†;»8)OÊÞ‰¥¯5©jk ž¯)úc?„aµCÍ)…Vá1Dî>{ª6A‚W’ƒ=®aÕuú²¥„3l §ÊåO^÷~žÃY+ÙTùc6Â.—Ú‹Ø2zøöpÎã9Aóõ»+¤5dàÊj±¿@Bˆ†vqv£m|Z¤péÇ®­ß-Øÿ¹…&Ô6°‚}Ç(¹f{é¡g&mð¬Ï¯€æ!­˲úž‚îÝÜ«s3Ü)sɈ_I7ùDØ-Ì=3ÔË÷ÅCìjEÌØ;b²“ £©-…¿f;‘Ûê{|BþNÆ«ì‘*ÛEÇ·#ÞÏUÍn§¼‘„ SñjX-é¬t]ÓåŒ8ËN_:÷*ÛgkD'®¯¬bÑC• Žî*ËŒ«ø™KhÒ\D{™k'‘hª‡÷y«ùgS<ëP}ŒÚSXÕJðM5#šC’èPOü ”øQX˧ÂÇR„‹îmgôIO=ûò–E ÑIÌÂ=£qSU³,+Ö+Ÿ¬W©Ó÷pˆ°ÂT>Çhº}$Ï»Š»}´Õàar¹iëI»b¯Ôvð«S ~#» ܈T $ø¾‹ÕrÆy‘2±J¿ ×w-襓q¬þ!ÆŽAŽjlUð¹úIÝVç:ˆéâSæàTÐ]̨¼U-Y%¬Ò)ec”Ûu·Þ ÚÍö@ñx:2tŸ4SÇ—‹ÑÄT¾ÍAQ_aúP Z>XlieâÕ $:Ÿ‘kšº œ4Ùˆ*Œ¶ûÉm^m·@?ëÌiOÉ-+žæßzÈ”+ÇÓ‘t+AB³CP h ¶[Ј!*¾«†™$DK?!{­Ãµý7Â×ý5†pšo•hŽmûËÖáÝQ2lh’Åǧuú–-K$î‘3BÆÂµÀò8Å`N;”µ«-E™â³Ûü›º—½(ÇäÙqè0¾AžwV-/ìÂ_ÔR`N” µ÷-Au%`e:©ÛuŒñ†«Uøg?;HòšüxWXfb’LØ:ŸÒi*7˜oÌ:4Ò…‘ºfѯóó¬V%G¦h D?+UŠ,³H¸íÅ/F²šhÙ0Ó¾|ÈO¡ÞÊ•°I¾´%„‰bV‘Ú~ Õ–A öç°§h’z#Éò'×À—L*Q… ÝcëÉïqs£QP‘åÇD¯Sfù«nÃ}ÐŒ_·9P;sYØ—cBèèô±‹W`nÀ7%Ikél¸*ý ×Ú ‚þ¤ÊA’˜¯ÍûdæœdSµœÖ,ßûµT &½fÆA^9ã(9¡z\ŸlÓ¼yôÞU‰e3â·œƒÔ¢ W(ЙmJ6O¨Z£7¬~ZŽ…Ï(P C j˼¸¤“›“_ÂèY™>%RU‡°#rV4C,ÕM…WdY|¼zôsú1ÕÝßMqÓè\&,VX§d&‰_t“:‚¸Âlô;‰VŒ|aRÜøû5ÉhœD‰;Ñ¢%Õïæ)íßý=§²šÏqliQkI{9,ÚVÎ"Ù̼¾\÷n½Êd&Uh_ï—”vˆ*uƒ˜Q“â¾Þ Â÷TtðÒß/ùËùOÅl¤S8ÄÛÊs‰{lâ_Ñ&hagŽú–jý ô§ v2}1…Фg%;Mú–ÄqÅÎÖæ¡ÀdNñSgÛA‰µ¡PU:X<¢duä-ˆ“l$n¥ìµ2g³o¶³ øÛˆv\HñYœ ¨»Ûk+u·’³3„Ò_; Òâ_ÌJ݈õ„¼ _ŸHRG‡$ö¤nÅ—f3¼v<'³ñÚìcæˆùÎ|¹ð§ìLô‰ì#;ÈV"n¶p-P® ·ìI_a,ÃÏ94u«àÃ< ]½Hd£›¡ éÒy¶5¨™áBö¯úÞøÓZÃdÂgN„9~Ä=®;üØ5-SÿdÕöðûG>¥èݲ€@Ø)e|Ë™=’_¯9Ȧ7eðãó&z!T}嘰îx,ångÔ`s¹ëжñúÝ×< )ç “‹¤ˆœ7.qU{Êø7¡|ã垌Çb4žäìÓ† ÿQœÞ [6ô7ÌÃn{Į́'ÁñÓ¶r;Ïp›õñ÷·^÷¨ !Ž¿‰¶{ŒsáäùMó§0ùºˆ{Œ}H&¤sÅMý-Aw@]Ÿª¹9'~ÓEžöB¿È_Mý)²?®ÊKÛ×®¬úù)ùÒYŠA׫ÒÑäµ(H¦`¢|7s)a¦Š, Ÿv“‘BTƒ,ÓE¢VÃõõ{µÎ„ d"0&Ÿ—Ê$íT†è§#5^½Ûè‹¢ÌÀÃðuæô3Þ{:'i!6Æ¥ïÖÙfeÀü;!ícO¢+æƒàëN©5íç½"Ž®éOuñÌŠq¸¹öòu¾–®DF猰„¤·š}KöŒÀð Ú ¿q¿nRl% ¬xT ~uZ$¯Œ‚·Šq£tÆBÝOiÃÍ‚dWËôC<^׊ôu8 ñûc!îÈQøÍÂG9ù©øû w 8ûÎ|À)Yu®Œx))²Ô䳺»‰ŽwÞVû#«ØçsÙP^¢XQÒÚ{UÃ9&÷¶§  IνRg¾Xç­n•ÁÙ8sŒá«éƒ!†„™fŸVÎ2bÿ]ÝG&´3Ão=¸äëßX÷ ‡‹Ÿ³aäiîrÚ×Ë9Ílá”Ê‚!ʼnèýùô9ÿ·ºáÆ|þž¸®>°Õ®B°YåªLâVóÝcfê{ üzÝ!ßօƹ¶¾G™ºÅ¹'š ˆK’›<ß2fó&qõ×&É™‘žÌ&æc–9¾ºÆé%ïm„¸º·UæOn5½ìÚh ؾҊf!¢š¤”ji'D#|‡Kž/:NÓࣕPOKæ²L1gèn%t,…‰ŠâgðÅlŠ/)Yá}A™´j:c1a§³Ó§gHS @Û·úÝ’‰)q)—b’AÕfL¯TF•Bë¡Ç²Uèý¡ïÕ™ó‘»Qd<Ö )[\—6í9$*O™[ÞÒF‰`>P|Z×§ËÀ¨²H{Yà˜PÀ^•û#RPëY~a!ƒvêÐíþÀ°µÙá®>Ü/Q{ɾ|Y^šú»‹a=Kvzì¸o’(¤GƒýƒÕ´´ϹU‘ÏéÔô4›|é”9c“Z^ž<­nmJx}1š¤v3ëÒ¬ˆŠ´w7»ZO%.[ÀÀÝPf" ž•Ë`ÝÅЇÁôf«zy,Œ¹³T×,¿Ë/qÿ¸3 Á1ïLîd¯7áÚ`ª·:;Ù¼IŒ9 ꇯáó˜.5ê R£¤ÒKyÐA·¸=´ ,¢w@X4$E ;åJñÞç 5dV°zƒë5%X‚>Ô˜E›Ib£ýÀ¹2wåârôóB ý²nð4:·Ó°ìÝØ ÅAºµ^4z3'f*-Óá<Ñíïò.Ö²YºJÚvýóu©ˆˆH£†Aô_„áÄÆ£}R²2ª÷®œStï ®.)€ÊtýmÍÌg’sx—t 4Í0iº<=\jùW<ÃÇ™<NɽÐOfœFݱÀð"¸Ñ_•ñ*"ºŽ ”1¸«Ÿ:; ÷r¯WðÒÎ%ϾA» ¯t«RBœ:Ô15µ f2òJ“’_houVVOgã©%":ë?+>?py´Âº&_aªÔ¿Ó¨X¶ëgNòuP¦=¾»Dš™¯4ó\:›†ó•ç=W¨èÑ&ÅyB#qì0:Ô<1zèƒb›Âjh’O”~6>ë›mê tŽ­ üé`<âdJt;±e[çy.·kâP© 9zi©å§v•ó\­C @ývª'´-$q6fƒQ‹vùo“pØöà<—\ª’© Âêj䎷µ‹X:™tŒÃ #^ЂË-ÄøSuðá,œ¸Éí#Å®#–=X!š#çšß7aÆÁ«b2Ø(`–=\|}EÆüÂñ0iñ|Æyˆçá"¼åUÛ¦í¤¦J–H8–bӭמ«ß¶§y-^SÑ€ŠñTT¬`Bî:œ5˜#?¬Èü{p‰½EÜÐÀÜì¯Qš¬câyÝ@2Ið‹[Ñž¬}²â‡˜w+·]Öuß³lRÏ }ò§‘9sô]M3ÙWzcºö‹8í¸¾ãßm¡ ç›KÖ¦ºÒYG)ì±]Y.òÒG:˜úèw!93dÀÔPæ0F¼t—-ÁÈ0®§€b;?4™¾;ºß‚A7›_ˆsÚLÂ…Ok÷IÞ¾LvzËד([t£=IµÄ*Kã ERžt—St|ƒkˆÝ‚*ÍQÃ÷Ëô(MÌ``'ôkx—†Û‡^åå"Ä\•Eñ ‹*þpÆ ;·ë#‡_•†ö©„9ÈìqÓçV»ÁNæ±V/ä‹„7ïl/öÁié`p„±•\‹—£VŒT§0ÏêÚ¬ÊïEañ©¦ÑCÃv é³Ók”íh;é@­HÛš#u½¯•u1Öì=?œç÷n'îóØ —DçwÈ"ÞáJe‹¢ëÜî>t´Gö%§¶$ÖE¦áM/ÏÌ#©îºR¯z9~!ó\ø›F–•‚lÍ¿*ñâ, ¿ òVIq§ ÍTˆ¸CïH¤Õk4Ô»¤^´Œ¦Š£ŒvùÉ7™Eêä¾F|í ¡îïPU0Úms›Î?–ÅŠê{ ¿ïàlév…Œl;Èø²âÓ·¯_£H^~˜ Nõ´Ç¶Nÿh“ó[Ýöò€+ PÈCÄÃ<‹åóNBטìúteÞÊ%HïkÚ·v€™;™E»ZF?_!nàem+ª&½tøÓÇN¿ïáy 聯Ñ`+® ª—k¶úgך¢ÂoR=mTiÇŠ4p éúa–:X CŠ˜ä fåç„oÎÀkø ûydNÁôèØG'»z×iBÄwßÏ&¨Z-(ßùňâ~ù~u…ÃAkÍ`‘rÈPªds#KÀˆÓ{S¼ !ær¸ \ä(òNší üåO]4­*ZtÇ7hc†J‹å”seÁ ƒ@§ÿA™å£:ÐbœÃFÈŒe!ýèÐK£VB-XrnX’0¡ŠëŽb“FßƮº“ÉZ–u N”;=5l¾§Z˜È~"r7‹ó],ì¯%Z°èã äÁMµ¹“Øæ'K1ü´ó*:X¶Ýo 1>©fÐñYØ»G÷¹¤‚´˜Ø<0YÞôýŠ §­^ä#¡žÒ8¡F1kß@þ™ê»ÃH7þ¿[koâoßmóþœ§¯ã/.rª§„WYšfãj·ø dMA®Ùïè…½dg%µ$±zçê"ïC·æºhH—~Š3 í’ ¸ÛnBX[@|ƒ‹±4¹–/°_ˆ )‡]}7ÆÏ&ÊÑ…DQß—i¼yŠ ]s°qÆÜéÝÕ¼Þ¥ÅÍ—YÁx,t0;ý)5ÛAöpŸ2¡S4#øY­—/]X·ª{Í¥ÆÐAÐq‡ûX¿N†½‰‰Ç`ÀéîËÆþqÁ¢ßnØ$c€àÙ:²JDCQ‰þ«KmŒŽ[äÎ#€ºÂ+Fs¦±‚ƒOy:f£,ÀÖÜÒ+ m6e¼“÷‹·©H†N}çûgÿä¾¹û¼ß˜ŠmjáJä ˜1GEB¶ÓZq8¿ðaýîYD8¥8ä¯ÎÏš_‡óå­åw›6æ Íe÷Ú%SÏ·ÅUuGô%–ÊÑ«"ÄîEâU¥á~'Åiâ«Án«D‘o>â ~Ú`ö&»ú¬«rëO9-ßÙP ÊܳډYtµI”p– 0.'z÷©Ì‡Éä’æ£~[Zyƒk}+ì d`Ù ÌÇt à´U7}B¾P¨’‚ŽrPLéÕzŽÝ·, ª}ГB=„ñ:ج—ò¼ýU9r5åë¼ï³ÙiUÚK‘›óæ©Ò`—†oÈtJUýý§Eµç@Ÿ£&CqBÔ¨P*~š ¼d¸ßš3¶Ð–€EÏ€?ÔÍÙ¹t±QÒ&FUÜXöy(}%-K0ÙÝ‹a­Âó½™aVý)4D e×° —$ ì‹]W¾3Åļ1#sÜbôuXMÂôDIK§*PÇ:;àðƒ|‡¶[ÑþþclÒ<¾j§žª»ÓRSHVjÔq.•+)}±L·ò†oqé, æ|èÓzYh·Á‡ÀÖ'.žÛ³¥)÷ø8Ûô™Eµ( *”¸¶ó¬Ä »ÔDÔjþþ´ÏK!R¥ö£³ù˜Jº—!Þ÷ã¸'rºï3š/Žb£¾ÖJ`Ú6›ÍTÁE¸5Ý袆%ÐÝøcÚ ê]¥(¶Iø——ŠZࢠ6!<ËÛTÐ6 ^á—E~_S§®9$΋b·óˆ8Þ?÷JóžÃ²DrC%H(øLü fïAå]˜€Ò¹ÿøU̸§@ÛÊL,Ò¨÷‹õåË${ì!(õKzÄÅ1¥n¯“ƒ¥·(3ìöát1^ì/¬,’­WªÓái51¢«E"K7—çAf0Övë–º9!½Ñy„RtÏvÞêMÐYÞ† 2j¬Ï5ØÁxŸBÈJÕ ™(v>ØžW»§¬¨×Ë^“‚á@„– ñæÚ(f§Sò²Çi„o™µOjŽôL\ 1¨(63{‘8wê¥,ìÚÏ[¡žb‹ù! YžÄë|íèúèÚÅê'KÀÛ„#¹“©c¨Ü“m¥ÃÕ÷Ĥ~ï‡G!ÍæŽñ¯â™ìTq²` 3Ý4)oA[õœûêu(7ñB5ç¡‘îü¡\£x¥ r vYè‡(1#ø«17ýÏ3³ê#‹Nêöj ÍÂÍz}¤D~¥ÉŠ‘×ÉÆªIm}iå&íßÀWþ@a¾ûH­ÎòÞÄfA®ÀÍHÚgJÆ;aú²C‹”iIËÂ}-ã ûà m>ßú÷½?Q¶†-3 7¾•‹‰I9uc¶®]Œq<›¹²˜nõðÈ/Óøùþ³c¦_âÓ”PŒZ qšü2oçFkË\ž#h*ËÏÒÀ´ç˜ˆü§¤EVlxhì•Íãå\‰jÑ ± rÙ¸P'AŽçG…LbŸÊ%“É<;ÑêÆ—váœyMJÎÅó/f—hÚ/6;ÇÑaŸ6â› 8*ׇ  u9•§2¯g³ˆMQ†t¶øÄ‰.Ðs6.oãoN#™Š,›ð_ØúæÚHg%SSUBY‘ÐBÅ‘\%øa¬ffQÁºÏÓX)Ò”m?6ËývrG3ú5Tõþ¦ö˜yÈŽñnÙ¤ã7âl_/á2Ö;~iB}ÑŒPܯ[„u– —IƒÇ³’ì¯kpïry§š2îÆŸ»èõgìe/­n—ršE_Ë×`Ø–®aZ“D™è˜«“\*qf­J?&ªPtJëi:lÌ”Ü/½°ãÅÃU*nAë­p軕ú±síurÒÆ÷Ÿh×”Ÿ0’4µÄx¢Øåv°½Ûw¬?ÌÍÉ䣕Ĭ;ý´JMŽ8\ý™+íEÊÅ?ê«ãŽjÚ‰ÀHô … $E)LâV^AM–ž»¬1îVÖ£bü“OlñVVNê€ë^Y2V¸Ý5A&ùY0ãÐaÒðýS·ø×¨:¾+Ï™"‰C2÷Õâ®#Ü™ô+VWáâ>r­ƒvÆ·«ãƒíßho4‡Ñ´ yóAxó†L…ÉJYp+«ÓBѺTooÚ‰«øØK7—"¦&ÜåÎã¢Àý>ãJéáéȈ÷ÃhÔCŠ!` ©%P‘r¾·!*ÌkÅ­š'[M•–î¹æXXX¶©ÀÙ1Kèv¦`Š˜eæÂM©ӬƦ£Fˆ¬Ý¢q·}™‚-ݪ—ñ¥Ñk™ô#H¥8ûuÇ„f¦s¶Sr±•(²^KwCMg°©­¡˜æ~À:õí/æUߢÊA.(]à«-|;kNiá÷½]VkzZ¶¡¸*_ùcX!¼5— _ÐD‹ yñ¯F¥®J‡pBFÓ„Š4¥>Ī -m ¬­Q)3bzÛ$ÌÃs×AË@¡ß ÆÀ50TÅP¢î3ð ¸N_a!1ï~;Ûùœ*w´e]‰ —šBàòîÉà²XtPМ€kŽîÊ'±ƒ+s`•SõÕo[6ŠÓ­T|¬¥´µQ2©U§†Ñ0Ù^ 1Fzïô& "(ë òbL²oè#@² éØ_3[›s³×„Ӥ΋ðÉc‚v-ŽÇŸk²Ñ "z—+Žo}D ['÷¼ÒŒ¿³UÓÕ§L¦]¹¤c%O§ݪr/û5wCum)æÚ ³íû|-u·°ñ0j³Oâ¢ÝÚÁlÂCØõú˜¬Ÿ?äöžéûiáÞ8–C…DV°„‰NÆ:K7ÍVö@ŒÎiÞe-jJ/‚Ĩ<Kcÿ’>sÒ‡ßi_¨ i5s6VÙ¤¶åC4;ëË6 K(uhö¢daLYgãO ÷£E‹›øŽT+ux–ú•ªdíH>\$KoþØ‘â.„ç(Ø!mœßvL}âM›ËýŸ€­4)Á®ô悔¿Sª¤r‘Gb‘!åÀV±¹¤_²:mŸ }-&ùÓ¦†ð‚ó,HÈ'µáRvC2ìöÞ‹5‰zÇ  QÄöHš á£Ì­m‡uŒ)3ñ½^ Í¥Ÿæp¼4ˆ¤%¤@à–?þÏ–Sf­b¶  %<Î<qØH“ùúeÊæeHbdãj¯F>ÖÇéâx“}O²+ïÛ$öŽ8¯®æ9)„5Ì!^;òD™í8‚vŽÏ9UÒoO8—®™3ÍIKåw"ÏAŒ*ý’9NìîËî ¥æðS”ƒ½ã·Åg~?ö.{J‘ï0¤lîpºË3Äf%­†‹vŒ¹?5áùE0¯ó‘MÖç*ùRRâ¼(®B‘¥yað{›c Éö\Œ> *J[J¹Yìþ_Ÿœš"‚†}u}CŠþ޶#î«= ¨{á<»XIúbU6‘í37 Ѻ1Ç,ÁX[nj+žær¦]ް¡mkXÜú è*9‘¸K‚7p¾8õ*N~K`t}Vç$~ifÅSIÕ®'확Áå×$Ž{|’E¤ÄæÉ;ÆĨ(ãìzU ÉÖÈ%(Ø™êeVˆÓj¯å÷tJÓ¢E òX`^7·‚.ƒ¹ —W ž¨aT*ÕÅÏÉì[{£à}1TÏ®­ð‘rÚ«ªS›ˆðdž»§†ö_ã­Î\R?¡ã1  o*ö†Ý]·!?\¡žs„AÄ0 Î7·–˜eáÖŽÙ6²6úï@Ái¾ÆØ*¡óíÀ”4P™¦þ¼×^qÈõÃtѬ—Ë ÛÛ€3° ŸiÑΈ”ÌkÒ §<_À¬†*M“•0N"Žü ª¾¦„øÑw…þe—¾>Onæâ|»ÓS×ݳ™ÛfGƒP'6.Å?˜/B‹wm9åƒAG;‘Á¬ÀÕú¾øGÅ_î,ÆÑ{ïG_û¦è  <;'ǹ¬ç©[‰±`îh–áQƒ_öS_6·VyÛ•¨2é,Ó-´QÔø3 bèp…tü» ÎØÙAÏèYåïcmÐ0ý¾l?’n=_|¬é x¿aQ¨Ž<×ókŠLÍ4½ñ»ž»x8÷ e)K åvŸÉEÉa%š®ÞKê%rebÊ+çöרO3ï?KÁU9x®ìýÜr[Ï@þ6’~c¼»i}®“PÛE TŽÄØ9í\§Ü(gù"оºÚ‚óBõÎ¥´áT 8÷Q%N›ôxß“iʺË.ÍÖ¾0ØÝ"úW_SùÀNµ¼Ágªž›¼Þ8ñI{måßH¿'nãi’…ÌŽ ¾ªöýì£>Ãê–ó.RÙ8)‡XNÇH&¤ÆðÛzêŸõyï™ç¬·ÓŠÛòÒ‘¤’Rðõséeo¼k:ªm)øáîWðg¾Û âT“{`ôÜ@ãÁy¹ñŽ+¤™¢?z¯å3AtïÂ,eÊ"›H1k3Á¢Å½æ™¿æÖ½¿°¸£à°ùY“©é ‰æÔ*®¤AeV¤Ìî§fèpC§J__¥RÓºŽºZéO¸ÀÁ®’­å$»|ÿ Xéq’ö¼›µ³‹S™DK¢9XB ¦rwê<ŽÁc~ÎcßßQìb{As&ÿÔâÎÌïÛ:ëbHŸê„3´xOÎÍU½$üÌæZQð­¬çìðb |½S…ÞÀÐÚEáжÈÏÀšVŒKž´lOLr¦›‡)Ü#´ñpÞpÈø™W"_‚dÉ‘1qôÒôÑÓÃðªKŽ j5®¯•f¬³G˜gµj½ Ád·ˆÆ%6ƈÂY¿…»–¥bUäoÛƒæÐ ï-þ£¥Nû ƒ…ÏIß ºfØÒÜaB&h œ5¼ÄÖNy;ãFAÈÈoyhïdßeŘ,c´>>››qöÀ5ÅzÁY#u uBÉLm]“si äún4/î> pTç2ßóMQPZ‚î‘9=ÃëÇ»9òÝò4 <ý,°³V0 q³b¹¢¯Œ¼É/G³4ÑG)ÈD¹öIàä´«½ççLyÕ•³ÞÛÛØJ%’ÖrÿB¶š×„ÒÊ+÷g&Ðu­©R,¶ñç·ëIJ¡lºåM!Å”ßvÅ((mfeE±""Ç@ó­÷F-vžµ¹†ÇZTÈö÷ù‹ÄQ;<¨@§-¿c’»QÝ }Íð­óA§Ç§àj r„Ïó‹j ~ f#çŠ=ÅÒ;‰t^²ºÀjñk²¡rPè°­  #Ú-§7wÄocêuZ¾fº¶QåLÖ,Yáhi¸ï,)ÝÞ[O͇ šÒ%€€aF/ÞlÍ MXHa2UQÖceç;4>E¶Ù MÞòˆ‰Ïí±¡Dñ,uÉ6I,Rѽ<Ômj–D¯PëÜ%è8_¡âg…–(ÌÃpxÈuFt™BIx‹&t¾#æxý|€áµìe€‰‡0ž‹r¦7æ‰mÒïѱt/™Æ”vthM¾¼•c¯‘|a##c„ËÔ²ÚžõHù«D¦Ùy¦I]µM°‹1ªîB š&OÉòð1)ŠQQX쓊›V ÍËçÍb8ë®xá›Bî¡™’’=Åa"ñw#%L¶?]ú±KÑ ^EîT,ï5ÈEâÁÍ`x¦µX·s”¥W–£.yÐbS?T\OЍ\¡¬žŽÛá37!Ÿ”lö`Õ¤ Þw»"ëBcݺ.Õ"a¸<®ã¾Îòß+®¶ÞÖ·ˆñ-Сé`Ó°hWÁÀ=ÊjU9b;oo}O›Š¨­{„¨?­‚dD¾z4$ A}Ó¶éB*åcŒ âO— ·°Bâêcdxåêð$áJÐåG$Î&![ô#Eö‚'Ê’/ùáG(ŸóNÓÛßê$ÂÚHþøYû=Ñ‚fMÀ?aÇô'Ô+s± Ã\¯=ÊYûNXHqäÜ8Âz®[›‘æVÙ‡³øëJh^há’ºMvƒÁ\*†lvÀêÔ¤~m·ÁÁpÌ<´2ö‘ƤôšœîucÁñ½UPŸáZì*Bé;ÃCáDnÅnVöJþ/ù¦&˧ý„â´¸Ž´Ö™`ÝûX–·„ã×Á‹¼M’ã—v,–d²N™§SûÜ™[ª¸%]¡#-Bò…¨â¤¿Ê¿-ŒTÿ|©a±_5 iiè9N”$× t¶S3Ø…|b@ '´šŠ'‹´¨ õ¿œp\¹ ò{ˆÏêô¹ÂN0ÿÂ%2£QXÀpq:œ™r íX3 ™–CS®’ÕÜjpNÏÇÊÈ¥‚^‹ŒxlTR}Ü âãü`­$|aü ÝîÖj˜œ§ËŒ›Ân¬•ÏñS£A‰ºKc~ž¶þDEŠ¥q¿5=Á2¯ør;ûÜm·òpJOô–‡åâ»EÖ®îƒO~ĦÊPņKò„66 3ȧo f=ÜlZ?˜Âi`®gyocg¦•dµ7 `-aqv t*”Ñ “.Ýí·€d·Zèëã£ÛÜEô'|p¤ý¨]ZWŠI¥‚…IÈ'|Ê¥à Hº?7õèjÙ¨ùËð¦@â5‰Ø2MÜ8iæøÒ/%¨½`K <ü«”5.óí]¨Æ?}6,åoxýYiSÑN„Èfpæé,G'ªY+F\kˆo¼6Ÿ[Ðb¯“ÀM?÷šž£™ç»º™ôáÞô·Çô g¦¬«EV¼lx›w¿^ b’´=-—œÛƒûM2ZYHì˜â ËVY+ÿ•ÞÐ\t®ž•|ðÖ7 ,Jø¡wR¯pY×9‘¢CbÊ»<îÓž¿úˆ…³2†öDlÒM}ò!¥ÁG);Ûxx÷°d÷ 'Úácp(æE'_:Ùìz¶h–°³îA±îƒ&ÐÞÌ~–)»ÇJ±š‡:+`‘ëÍiì-õyd!ëo¾3•i–±ÁT„p¦Ou+/R×yË$éL1˜%uα„/¶%6.™œ6Û„_Pº|o+¹ËlÑ>WžõJ…f²Ïbx‹mÔ÷`™.ñ—.ƒÐ”ÛÔTŠK•¥-½W]?ZCAwñcûæÕ›ƒÎª»{þÒÛÚ½KS‡¡ÐäÂr*ùòV«ÞËüw6°©+‚Ææç¾·´ÄäXÀ%‚pÞÇóœóLÚùU¼ÀŦ÷Ã\2&—ð ã9/Óü¸@=£,ò퇅Ó^_‹… Ž( Åâü¹ØÔRyí{/´å2c{l'‹S;®j¾~åDJÜUšjë‹©‘ƒÆ¨äT°¯pCÍÓ*PW@u•±29¨õ9$ŠOSm]©Š†ãK]%þ ±xïÜ£å/Վݪ”ØçñDr®¤‡£6ê>g“ǪÒ"ií²‡«:e8¹1ö†·¢û¤9ÌŽŽœÙ@#°‡õIpZaõýàÎ1ß/-ªï*FàBý‰Uøeƒö‡Âç–à·A8¬¨v’‰ÐÆ‘ªlpÁ\ïë­•:OWã!`n•™îØöþÒ@"UÀš¨’˜eP³B£c‹@H¿õÞ57)¾¹2„kÛCa ÜPÈœ\ßc „Æ à™îŠê¨›ÉY<\>$kú†ü~;@<àúÃñ¦¦ŸŽkÉ—F‹•#{W¨œTúæÛg¼z¯T·—QƇ+vd¢Q©M !< 6¯›®ç¡Ý©tüks*—.lõñ ¤SƒÛyÁ ݦº|s>ZÒãP .MX2iȧ€«Î3Â<ÑÙ™¦„´¤)Þô}!°pVzEÍ“¡ãáH”oóôIkœú^)N(~Zº¸¿§è¼‘ÏðñÕqI$¼öBW°D¼í/®™¸Í´u¡(mîRµA-è&Â0#vá"¥6ŠÙMF+“ °é7Þ7[Æï§Êœü¶bþ‡fž§‘ßa¬¯¢ k³†Žr®(sˆA}þ«d/ •a©Çº_¾m Ô9[²] ‹[[¿ý±B ”ëqGW‰¯qˆm¹MyOiÅæjH ÜCÖC\öµ1¦¶ Ð %~’*€ð ð}bFÏ—û=îZKœwqTè+ ¨uæ:küú:dorÍ;+ç+)Öÿe šòøÑy-Ä>Øo‚K:¦ï’"·›–Ï´†‰‰ðè‘~Iœ\zirýü)‰Ö^ã‘r2‚gI( I]ÏðüÀ{p¿('»lG¹NÕ¿ù-±Ìí£¤d°DINâZ¡eûŸmÉŽÙàhùE+Èl‡­»¾¿ÂÇþ-WèYz *ØkqžPX­¦mÕÁSå:BƒvcF€~ ªó¥°2™ŠÍ¤¢©­ACB¸æ¢ÍZvRI¯~”3ë*»6EÐBi>Çx<‘±¿‡–¿¾¬‘Ø…hHøZ¥\ƒ?dû¡V憳ïy„sÁt8 …§Ð~.MtÉ¥£Ã°·ð-èØ7¦_­Ò¬G SQлܙ»Æ>FaÎ¥Q´6Øw@}ÝÅá2°–vA¨Þ¦1?®Õ×[´ Örü¹R\„ýA‚ô¯LmVö)®• Ã(ö^GrÃA̯¸¾áþJ´$«DßyHcÑoNõÕjUŒ¶pD nɽ`-—‚uš¢ê¾7ºÎ|\t”³mûŸ›âÞ 2óî¼&oøcã̃]´°ãÉ”Y¬›\tù匑4~}žE¾ø]>è‡v¬ço6S¡Q4[&=}ÿC±Òª.ª>«a\:|mlÖŽÿN˜ ,6¹|¤+Æ|õ DóóEsº€©Xöl6Ñ@Kr´©¦òn3£ñ‰·ÂÙì]½¹žÈˆ«#“W¿òÎÈ‘<žà:#®‰®wúør_À6k!×÷â#v˧†·Äúà¤jÕ—‚ÍÄΊIÉ"ÖÑ_æ¹óŽwßÞËTw’]ãÅ”ù '¸ÊJ Ø5´ýbî‹Hœ5—²˜Ž7µBzìž­$?z±€ðö ‘fBÈ)^åI©Í5ë}`„¥–,đ뽺HæsË“?_~´Y6Yœ.Ñ!ÔVýRŒ£¹þO<Ôæ„›Á´³0äÁÓVDÃÖÜò¹ŸÅ…q—Úo€Sê€ ‚ôl#ÁÍkvarv½ôJsK̼³A&.MR¥LIÅ÷\h&ƒ5¾âXé³|ósk.wÓ‘Á Ëð¾6ôZRMÂà÷(6#… ÊóÞ–•”ÓøJá^*m/†®È9ÿ^©áu2 ƒ(Ó€ÿ/;Ðv¨ŸÇç®sÒ§6;-G޵>‰½´‰,AQú;„(Œ%ô K.‚ÓØõEš&OAìÂXljëÝ[© È;ôö1ÐlÊ ÿ‡ôÏKrsa Õ5¼¡8œU>[³’dMÍd&­,%ö†s~ _!ñe¹mùÓÌ ÿ'¿b0oɪe0»uòÞÒušÏó6³Òv$´+Ér¸å+§ 8‘CŸ{?5ÑÇż7mÝÈåÞ~À"þ•PõyMân^÷^«¹¡w¯Ä£’‹ŒÈx¿-<÷Ú†dèçsÖÏÍpxõ­!òˆ¹ûaÊ‘¥-¨Ö;øÃP´-oÍ ò³Òo÷œ3!Ûªº,“í|ž*´°ŠFòqž¨Óˆ¿±ûþó´öò©ŽÄWƒ Là †Ä§JïƒLØ$tôY³B\&¨ÎÛ’B¦=8 ¢5ËŤÄÕ9;Ö·¼0Ã`vÇ2÷xÈŠöÐ}×õ\<âþD•áÔ´FVV¾+9ß•¦6 ,ä™@¢µ.c•¾Â´y"JlýOÃò‹ uÓ¹iE{;ÐŽ•“W× Öákü¸} ÏíMG¡åˆŸv†@üé»[jpf$ó•êµj;ìp *Üì2Íf­¡2Ôù‚ :3>¾`£™Î@ûè)ϧãC6£'òò‰xlÔÃO§YÃ0W×·Þô2Gý1Qд¥@è%úçÚ×ì@Ç«M™,ÔWØxîŽäÃb.:©ñ„›tCÍ“Êc”Ñß]x¬øÛé9tdŒ•áÙe€q±`øõAe'#‹¿%)¶a¤¡£’ÈkÌCv_='¹B»n²Zô°†${UXZ'ÒP”;m¹ ô߀_ån–´'êŠ'.Jôõ ’ú¯ðZÿ/&¸òfõ^Mþ"ß~óÝô‘Ÿa®o»œ}ë†7^lÄIŠÛ¬r?åò8:ŠŒÓ—»ËQÓñQ?¸×A:ËŒI©<ß sÜÅ`öêOI¦Pã£á4:5ºQáù€¡š ˜ ÷2Îkúj>Ö ûFÛ`p.i ªÏï.çpn$1ýyX-XéŒX'. $°}®e÷»äª-–÷W‡oŽI< ŽÜÈ¥b i5 ù¸K}ʲÛa>I‰€‚Ç¿n‹âÞä³-óŽÊ²ÃÓt£Šu€‡TÆt£_Ì®ßqH6ŸF0r:¤xC:‹Òvºì5²†'™²y1ÜN¨Š§ ð½AíÍ«§—œV;6ÍjTÆß0*’Ý›,>pŸQz•.ë>q/>.çéÛ•íš Wâw/gkçɤ\¯Çwj7Ú¾‹&´ùÆÜâ4fà¹^%Þüª$»ÏŽ[ölé —³Äu×J²Âv¬6-I[çc¢4Û2Ö`Ê ‘Qp…KмÒ(L`2¯qÛÚgÊk¼´wñÁ{áSh©½4ýG4þ®qHŒ*=©ÈÄpñQE EsZIc0tú:HüŒy}Se‡¬¥—ÔW«–ŸFiBÏŒ¾&ˆ¥¬ù­ð‹¸½þwŸöàWyŒdq%œæq|>0«©Ûô7›óÖf;­CÉ7¦õäñY<"} ŠA[®ýe¹3 Ù%/ÆœcD3„¢O(ÊnZì¹y'Ua¬!^1¸1Ó®™ÉT‹CNu/¨qÌ&y•Ú6û†Èm}Ž«ëF?rCɽꖤ׵:6¼Ðí=Õsv-°o›MMÛÎö‰Ô®©ÊÃÁĪ]ª‡ýâ³UgäÎ’13ñø7p )ämJ¢kd·Ék1U|çƒ4©Ug)÷S?ÇÉlše~* âêšvêÕ8qŠ¢/)HZ™±CûiÖÃ-3E}ÈêÊy+H:RÎÇ(¸s,×ß7Ù$VWš–lœOÕ˜Š|íPÈìɃ½æp62D Wx`5ª r+§ 1 l¼Cd¼D@pEa± q1ÚÄ&?Æ~+€§ÚÜyS ú1Z{`A¯u–]=Æq£L1/ZPðªº'sÊhv¸ã.ÍÛ?rŽ"¯ëëb+.¥ÏÃŽLí>%ã›G‚Ð=\ÉŠ#øµˆL©„[¢RHˆÔvv¨ô0ˆü°Û¿*‹ø}àwôìà¯%ON·èþ©ÁÄá^ŨêÛnÇd`”f°! K`½ Ôfþþ©KDÄ8ym ¤£æEA€M &VOÿ‡@êØÌ™«p½ ·ö2/é÷ÉÍÅ™%µt¶dÇ _ùã7ôô·W•÷[ÛFû:|‘ fÎ^CøÓå훺›ß&w³2±saD6?ůíãPi!ô;`ÐÔ øÙõÝÙ90Tu{Nãð×Ò9ÁÆ+,„ý.ỿ@oò²õÔó]]ŒO\gWåT ³HëÊn`/º´( ñà6usÆôýPXrº]‰/[æ,šÉ¡g¹äñÄñ`†¾~#(Y#Ñü vAr¿Ä< *§õL‘Ïÿús¶/›ýREûN¯`³}H¬ÕÙ‡‘›ÈnÊL4 ¼¬g¾Ñ¿¿Èÿì´ 9ú~c׌Æçƒ`SGu;˜-ñŽ{ ‹^§qú/Î|ÈÝÊ:A¶¤¯ÜÓvFöÜ®9¶[+e6‘ž 7ök+Bÿ“ÿîu]Yºâ P"2qwª&´"ó£á5¿y*â0T‡ž`U£ãº§[r¦ La³šòHaã¥Îéë¶Œöy_E{à endstream endobj 274 0 obj << /Type /FontDescriptor /FontName /BGZGJB+CMTI10 /Flags 4 /FontBBox [-35 -250 1124 750] /Ascent 694 /CapHeight 683 /Descent -194 /ItalicAngle -14 /StemV 68 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/V/W/a/ampersand/b/c/colon/comma/d/e/f/fi/g/h/hyphen/i/j/k/l/m/n/o/p/parenleft/parenright/period/q/r/s/t/u/v/w/x/y/z) /FontFile 273 0 R >> endobj 275 0 obj << /Length1 2445 /Length2 17427 /Length3 0 /Length 18859 /Filter /FlateDecode >> stream xÚŒ÷PØÖ ãw Ö¸»»»»K»»[àîw îÜ=!Xp‡à™;w2÷ûÿª÷Š*èµ}¯³÷9 ‰²ƒˆ™ƒ HÒÁÞ•…‘™ ¦ ®Î `ffcdff…§ P·rµýWO¡ rv±r°çý—…˜3èú&º¾*8ØdÝl,lN^.^ff+33Ï œyâ@w+3€#@ÖÁäO!æàèåleaéú–ç¿Ô¦4.ú¿Ü"v g+S =@èj ²{Ëh ´¨9˜Z\½þ'5¿¥««#/“‡‡#ÐÎ…ÑÁÙB†àaåj P¹€œÝAf€ß-v ¿[c„§¨[Z¹üG¡æ`îêtÞ¶V¦ {—77{33à-;@MF ä²ÿ±ü è“`adù'ÜßÞ¿YÙÿå 45u°sÚ{YÙ[Ì­lA%IyFWOWzÐÞì·!ÐÖÅáÍè´²š¼üU: )¢¾uøw.¦ÎVŽ®.Œ.V¶¿{dúæf {31;;½« üïúÄ­œA¦o¼{1ý}¸6öö>ÿEæVöfæ¿Û0ssdÒ°·rrɈÿmó&‚ÿ#³¹8˜™™¹ÙX 'ÈÓÔ’éwu/GÐ_J–ßâ·ü|æom€ü¬ÌAoà}\€î €«³ÈÏçߊÿEð,,3+SW€ ÈÂÊþOô71Èü?øíü­<zÌoãÇ`þýóÏ'ƒ· 3s°·õúcþ×3É*jjK*ÐýÝò?JQQO€;€• ÀÁÆàäáøýoe ÕßUüËSÆÞÜÀóŸbßXúoÁîOõßëAøßXŠos Pÿs}ffÓ·_,ÿŸ‡ý/—ÿ3þ;Êÿë˜ÿߊ$ÝlmÿÒSÿÇàÿG´³²õúÛâmnÝ\ßv@Áámìÿ¯©è?‹«2³r³û¿ZWàÛ.ˆØ[ØþC¤•‹¤•'ÈLÙÊÕÔò¯ÙøXã÷žÙZÙƒ”\¬~ß,fæÿ£{[.S›·ÛÃåm$ÿRÞvç3JØ›:˜ý^2VNÐÙèÏü6I¬–·m4yþ5Ä&F{×7À[w~sgøßGÊÉ`ù-úâ0‰þA\&±?ˆÀ$þñ˜$þA\Ì&É?ˆÀ$õ±˜dþ ·|rÐ[>ù?è-ŸÂô–OñÄý–Aùb0©þAoÔþ v“úô–OãÄó–ø½e0ùƒÞ:2ýq¼éLlߎå¿vöß;»?þ¿Ï‹ÉìÈöÖŒ™ƒ­-Ðù_oT€þ}³øÏøüCão½“ÛÛÜÿqyëÍüË[oæVîÿŠñ[íàöïo&"¾é-~¿A ›¼Õnù§“7N,½-Aöÿ²x“Yý ¾Ujý/øÆ›Í¿à9*æ|cÁö÷ŒþÑ¿Qi÷¾]FLRq¼Å²›íéßHpøSÝ›³Ãÿ¨ß:rü£~ æøöhÙÛ‚ÌÿðÈÎò·Ôùè}»ë˜AÎoÓ¿L9ÿ’Y9˜ý+Å…NúÜ@.må?¡Ø \Af&ÿ:,–7é¿xfycñ¿Èý_4s¼™»¼ÝëÿÔòVŸ‹-ÐÅò_!ÞÊûSìÛÉäjé ú×ù¿õïêáð/‡·n¦ø-ç_O¸‹©ƒó¿I|;2÷Á7’=þ@Ö· žÿ‚oY½þßÀûOÍo‘¼AÎÿ©àî"S7ç·pýë¹x»¨þ‹ÿzýA O)üê’ƒ)_¨uChç}¾Ãî”À<Å®V: ƒÏªs—Û#2l Mmvð†ó­HÊh?ê· êá5âŸã¶&؈ö$•Ž'ßg£ÕÙÝø•ìáé¢c‘Æ!B8uá=ß'_Í È6ðYŠ|'7ndåBŒ{A)ÏÆ¡Š¯áK»*{µœrÏs ±1úA¥ &9‹¸¤0® „ïhÑ/,z¯W©³ºôâ‘ãéâBÞ OÌRúˆ¤Êâ,û”•Äl,ç2Ó0‚mL ûŽ÷œòêÉË ã0Û:¯òHMûu42i Âeïª;Ò68#/ãÒ™{xHJ*µ– îDÀÝE:Ó™)¸ÇÁ*zùìm­BÝèßÈŸ6Lëyé™oÃÁoc}k]‰pòÃT€!ø¹ÇÝë[dUN^ï3`=}â8ï¹ç©Ö5\)qæ† [”’‚ŠQ”ù™‹b4ᦃ]®–§Ã N¿FooMRã+£ÓåÞ/öÓ‚ Ýtn¹'o‚f/ÛäéôbkÓ„S]¬*äŒ(ú$®¼¢¥Ñ ¹zÞ{2aÙ¯f5³’'à“ ûw}FOfhdt Ç-‚ÇQP º9À€Ö–4-‚(ÅÌ(i¦µ~݆ᢃ¢‚ˆ¡$pl|‰Éb½ñ)ÊüX„~öƒÅ»[¤˜0©(¸–Ž6æ-‘ŠzÕÙآϣcWµ’ýBªrå&ãùÕæ•ƒ[{_Q⪊n*¶õ&’V êÈüÓ'tçûtW¼Æše!8¤ùи™qq-á¬CÕ>RqwÄ)i `oÝͺݵ³dŠyïÁ‚û|?qÀh’'c‘ÕçÕÚÀûqâ’ùRAù·£è¤Ý£Ë’§2s‹ŠÇ‚'~«Kb%"j*Ÿò¸Å†qdÊ_j{j ,*nñ×ËñYüíFÖé©Þ=?¢;Éê@ÑÅ2‡ùØö„S C¨¾´3Ý’<„ãÕWª”øêpdp%ŸYÉôÀ­,­‘ §ûi>Žõì"e;‘…º|Íå1ïõ±O‰Y¦ØÄ¸Æl†êÈðyÊîð”ïëêvúŽª îTU³*ÄŠÅ  k9^xÈ~ŠœnÑ }=&ßÿö…æH8±·”Z‹j2ì—èT"ƒsâ„zAxÊ"¶ŽU J¨(½MdÙ>%jÀT¥i–ÛeÇªÎæc¹ñ¹ Ú¬¡1XuJõ<Œ]Æ#!‚ŠÜö<•`Z¶Ä¦²"=¯ÂO”›«*²0§~Þ¦ÃÅ¢!¶v,Uà׃›IlF'Ëôè;ü¼«'Û``E™ÇĪb†ãd©quõÏíLžz˜F˜²s&$Ûiˆ.ƒAcêsÉ`Õâ½&Á£¼ZN$VÃIƯEåP°1T»ýÆ›–†0ýˆêêq2•öÒ@¶?>¢uM&^}¼È7F_¿]Ú J¼]^P•9Fn S @Uê°´íÝV~È×è™­*c:Qz„V‡§0¦î‹S†›î.V­ òÞ‘„ªÿ{h,²- «DÒ[ùË{¸àËÀ' FîO"Ù®ÆtiSG«GÉïjª‘C¼1÷H|Tik&Íö5â¡`i]e,–EÑ2Cæ;¶×Ö î‡*b}Ñ€b&‰ÛäB äQrý¬Çæ{ÁáÌ yÝæ8¼òëi…v#E+ÀI\~¨«ó£Ï·Sã̤3d|ßåP$)ÙWo¦–ìiªn]òЫ`+ SEܱE›ã†uQ'"?‚½ãçÚð©•wüŽ6p§IC¾u`3ö-$ô$CÝ¡èYÌÞ]°E÷Õy¤Î§Ã§OC÷•G¢"oiAªfË-gMpÓØÏ©{’)¸hËÿÙs;5N-Ì7Ûœ‡x¹J¨Wû’ÑmDÔÓ\ÊDâ™ÑC‹ï),þ§XTÞÆF®Ù–Çü…Å3=¸í¡o%e'~à.²ÂöÓùíÂw²oŸO¸4NL&>ÃV‚Qµ@`FØ·*¢ÌdL±Ädî—h}®ü[¶úªù ±<]Ñ †Žçu … -ÚK …z¶ÿׯRYRoiµ÷Ø6²ƒR¿Q²o•©î/oÑ¢½áÝ@âõî‡Maà'gê.¾‰Pü¾ éV øë(¬NoØùYö·Cõ Ñ&[(ŒÕXÉ#ÙZ!Rt=Gƒ~„5è1Ç)˘•¾ü©ÞIJËp îÀéÅ$ï‚ýïÝòáBI8ϼDrÑ|57Z¯ÚÉ¡7Pä+¼8&£<Ž;M’†f™¢SDK²ªÔàœz ê´§ì$Ù±³^:`ÆT Í/ÔÕïjOÇ0*•EȆÍÕIÍ bH¡„@wi¿´K)U»%¾#”±Ê…‚qB!^ YÒpSN`1‰QÍCnS“HpÚ™#›/\Q[ø‡¢!µ™Á½»X6È9ɱZüž‚´ø7X¬w­¶¹8÷_È»ÙëAàuM€ýrù]z÷©u7•‡6Þõ+K?Âf‰¦ñ2êµ±ñIfƤžÚ,ßiÌž°£CÈ®Çd`&ù:• pлF›/Û°UÁ{~¥<¤´Ë@Ò'“Žeå$ÝæMO†‰“¦ÎYÛœ5-áÍm7#ß«\¥“Ô¿‰½L/R”øfœ¶ƒ ¸È1½Z[D#ä‘}Ì{?W‘S$ï‡ühoB(h£‘Ñ+]Í\ ±³ÄÀ½M?wd–>sHùO¬ô·æ‚G¬Ñ„ f•èàQ;&.ÞT=#¼»Ó@-‘¦Š Av\:øˆ· Y"õ«Çê$éH,pî2­lûVŒ™iŸçz† ”ÎûÇw¹®¯s~ÊÏ'É®ƒX…¥²ž)ÜË#óª_·qô}ÆŒÝÖ_õ°"ñ‰›KR¶±õEÆ=‡qõë/:Û‡+Ê7ýŠž¾ÊxÉ—¬¶©j@h„¾êV²îIëz_³±¶G׫z¿8ãR®°¨™MSqŸžzÝ· [!{©£y9žÅÝtÒËÒ÷cF&+Ï‚-„¡Ð4"„A:”eR:¡Ò‡LpÞÝfnÚ23ŸçÜÔU‹Àoaë{ž–À¡S+7-¤¶{ipl/Yh˱(í²ütó køˆéj»=zÂF“`ÝmÏâG@òKAôÒª»mÊLò®ðCm‘’ÌF^Ö4“O¼!”·ƒ™ó$®'’9~A×ñ#:—ìÆìÒå}èò|ï]“ZNùUÞ{|o¼¶c“æâySe“wþÃA`+ðÌõý÷%“Þø;2óÕ$¡Hê!­ÑªäóôÅDÁe'Lù¢`E'ÛA”é0Ü}_žà<4î²OØÓVÖé³7­J"tŒ7ÚhA+:t±N?Šh[rüÛñ{½¿µó÷ ÒØ›OÓùŽŸ'nÐ>¾aç–>Åùä§tˆ'Á¨nÒ¬‹¶ØæŸ‰fÄ¥YØt†—Ó„Ï®zHGˆ]Ô0Ó|t±…ŒŒTî.›öQ«²«ÍWK—ú!ôhFZnTx/bŠËLiàÓÞX¨“Vt80á ¯ö[5N.¯ ¬;-©ÿ Qº×áò¶5¢Œ>tú0G¬åâ: ƒ~RÔÃy"“¬>úZ %{*n¬Ñ瑊êœ÷ áT|„¿ÂX°;áÙcTx×@Ýa€í>AÙ|Õ-×iÁ”I úœp*© ~²‡ã”uVÒ¢¥6Ë]#ÕMÙ t“a‰ ÿ4õùuÀc‡T/B(ˆÕ(8eˆ€Olg–Fg[©NêCdÅYgäô»0üx¼9Lê~^p…eȆS†gGAâìéð¼«Ð•…ئJP%&™#¼ŸŽ ¬œ^ðÃP$}÷üHú¹ªò1¬²ÿ–:ønRQ<Òæ±q¤ë”Rd¢òp¦íDÜ­º­>³:Â$ňèÚn¾b>bƒ4srš#Þëé/ù‹¦dí¦z¤µïâÉ@E˜]A`ºs'ûrÒ¢0ÞƒYwEZ_ò¾{-f#ÄQ{6kPÜ\•®ÅT@Ù âÕ¥ò«v7á¯Ì…;»èÀ̯|ÕµòGƒÙÒ¾ÕjIýuõ-²›‘ØžÒ‹ûq¦ÒÝýºÞŽa” Û}ä›ü‡ŒÀÈ]ÙU¨'2öCÔި謯‡„ <𨎺j:ÌL½¶z:0}*282¯rÂ+kÁ"¯¤cá×…v‰k2K+ȲÏFÙýùŽiÈr]~Be™·2­ÊxyšÚ²ê®-ñ¾­â)ÎJœ †õhD9&„G—›ÑP)$.ó.[±QÝ€$ÓÁF€ÊåÏF7óŸÛ…ð—T2pŠP…ÛB£NÖ—4ðc3çèr?ˆ ™%œq.Üî(礔žIãY²s†öàrn@¿–z à¸’uþõ™ÿ;u¥…”aÿ`S£­§ò!Œa Üö÷<œ¾MG0ññ$ÒûÖdrL!ó.¢´µÌ ?´¶Díñ‘ûlÏÙTÛtêa _®ÿ<Ï{ÉîÄ%˜±$@ ¦üÄyz²ÕÎ;K0xEW4<ÂÄ0žà7+Ó=—ɲ𦺾Ÿû0¡ÉÅFôf‰¬¢–A!s¤w`O ›ÝÃ|ïÙ|E¼%·tØoµ`WÔ¤ÇÒe·Jsiü_1)²KMôzД„.‡ø°òT="6Ú¾HTs|"ÍÕÚõ ä[¬‘á<‹…HÖ† Ò7‹:{øéâǃç£"Bãñ^öÈV{ó#–›[Œ*:„z–G‚‰/‘ÿñc"ÿ!ëS/ž‰ˆ_XP^Æûbyí%Îý'&T*c^âé…Ë.ˆ¦ž¦„2¢vp¬Kn‹pò)ú”× c/?©£’lœ1!ÓÄoÐ߯S3_¹¶äH¸EǺ>Ú‚2~C„p¸!šÆn^t‹t‡—k UšdÖå¯ ì¼R0Ìu€ØZ:OFâ׎4‚ä ý¿l¶ÒÁ‘ woòÛIµ¹ÇzY0ó–6‘±–œêWƒ¦ªd>#ª¹ ŠÊ¨·Ä,.¸_¡¯‚š ˆáT;lÜmÉ}«­îN˜/ºàU<Áfv¤U"3ܽ/÷³†B.@‘«—ìqÆe_&@å&wéíB•šTµ@Ï ,"Ä~Ú­Il¸/àþÑ »bb? ?Ô$ß0Ï‘:gâ»dM©‰ÕìAôÏy!>é-<-ò“0”°×qÈ'W@C“aü…½˜,sÆaF–.ËsF™!FV˜²ø¸ñÙ”¶C œ®¬뛤–½Y¸‚ß´ªŽ[†‰2dKpµ{澩‘…‚ ‡®Ã Ã:悲¼Æ9óüpHœS©~Á…ç•æãÉHú<Ôüªô ›Q nŒ!Èô¼c`¤"“±#L)ÊþÔö!+«dÙ£ë85“Þ ðŽ/ŸXɘЙsgQû)T«•¢S,: L ûöƒÊÉã²}cY#ÑÚM"ËÒ§ËC nD¾QÆ«é/ø=´ƒ=ò wU_Î÷³Lz’KäðÒ€>&rY2{ö³¡­ø‹„Wl‰}‹±¾ ªÝN„Bh•Tå({àjK2Kšúƒ°_ ¬–Ô-F¢cõŒ6t›N¬Ã j>ýJæ(ª-£Räö@Qˆ¤€¥“àu# …l¯8/ØJ–xbóMë ~4n´C¼«ŸÅ^Ÿ—“š¸lZ9 Ò¾×µ#(ËbÛëÍLP×[ ¯8<•`uÈOTZ^óš}«z„®Í£‚Ü–å5µ®`+ 6g…WLlæe‹çSBs'åÀiâèYˆ&ÎãŽø`>>*ŒwD}¾¥ô“ß³wË) À-fÿš§©7±IÇXhfrTFîz[ÏrÄøÙotéË|Ÿéìs­ÏJ~þ,÷“»o­ØÞK?#ø&Á.SGf>­ƒñL8Ã|Çm"Í6 výœ1–Nîu8S±T y0ÐJÅí_š[ü´¾Ã ™‹v@¬\$šØ¢EK¨+6:œ¥”{¤wÌÜx¸ŒÃižZêm‡ÙU ­ç˜J¹cðãúüna{•¡/‹§UF¬&·e¤-\$*}Cw¨ñl ž³RµÔ;„÷öéèœ;Ęq…Ê›g˜¦à3À#‘4Ô‚9K1Á=».ºãÊ¿¦EvܨåòŽ-ѯ5hÏß`ZQäeÖÿüãÈ“dG¯Íëìì›ÓP$Å<³軋ÐãZ󮿸Š$^K~[®Y’fgÉÛ?J“c÷!¨)´ÅÄ ÉöS½/qô²Ú¦å0èÏBµRŠòŠ´zA!Ôæˆ×Rø²ðÅ3}t'$m«Tñ2½™ËºT‹óšß׺»a {?i¾ÚT]›Mo¶#xp©uhœ´°m¡Òm¬†º;K«%§Ê™@ó¨¸k®ß’†ž÷=:7@»Ž·’¹ŸKý\š·ÿì%×ÿtÝÛ –s_Ý€Q zó­²jÜÕl‘C̓:‹4ˆ¤Q"j‡[¼áK!+ý5 àý…Oïƒ,sÚòéúçcM >$‘VåÙ!]ñðIû5Ël—¥Æ lõj¤O§¸%~-võh» È3QæóVŸž´h3[Hå©°q¤U Í“øH²ûwlÏ*Ã.cD‹÷OVá j„ ®âÒG8e·ÊÂð.ƒ~vÇžxö³íàÎ/S=½ËµÞìKüõCb¨T™¬+ëefT8šû£¤ ±ŠÍ;YY‡4I—uÞ0Ï CÛ5e~9 h˳»A?«¼˜õK“}ŽÚ›ÌA‡SÊûQl8@ ×EKæ5©-¨Å ž¡ÍlÑ3ý†/P,ß_ˆæ‚)æÇ`4Ïì)Ÿ˜Ö¿[kÜ‹AÅJG LÊv®v1ª‚\)[w'¡åÒÑÜÕ+µ%¶g5¸m&éú‹.f_‹¨Ðñø×z==ï³L®m­bºJǰ0I>‰Ë*OÊ?¡’»776v‰3£cDº!p6“Ó‚Zá‡äæËîvW3Gé…ÚGȼŸ·8æ-¹ðÞûÐÖ?·3|#'r£ûbØ&…ùŠb?޽Å'¾Òáß@‘ÎõõØôÛ®š¿3·»°ñ±·¾5ïñv;ΗDuzrsÞ’r».-{Áó’:—l‹BRìïB‚AÖÊcÜÝJç‚êÞÝøK´·X5÷3…Zäâ‚ó$2”<}¨M·ÅRò¶åsÜxfú=¥ÆYØìÁÆŽ=á"7lƾjž„1AuJcú ™àà”:•–à„ñ–r—:¹µÜn­ËQŒÔMÃ4Hs't2Í ¼a)0¾Ä9½ÜBˆf“ ÛéõÛ@% ¨ºØË ®±–ïëuš1ôb*òoÂä]ªEyAB8SA~Û…nMóPPdZ\ÅD]–Þ5Ø:Ú8וnÂfÚÕ£Lùè$®ÕäXKâ²Ö*¬¥ÊÜ:° ÛÄ|O¤ˆBž©‰BйuÏÙQL"ƒÒ5óš®·,Çù½ý'¬T«u7-9ºïsZ_=Ð'€#Ÿ5ò`®kXß»Ð# ᢠQ;Úvi†‚n¤t†”§xÔĨê`pa,Í{æKI{xí»õUÜA¦:¯™4††p¥¨­'R§:ŸÌ¬¯Z9âYM Ýã'<Ï7YýÒsÒ€÷±{¥HA›-»\ø1›_¡X"S£²Ü‡ãœÊuÉŠ2“l °ï‘Ä 1ÌO»´¥`¦ Aqˆ+¢ù3Õ/X4‘÷YR¼/ðuÌö´“·ÂY»1¡p®šaXe×Ã׫‡¯->‰S2·k©£â=ÕÃx3_¿ìø D±C.ÇEM`/k—® 0ƒª‹žmÝÚ¾F‘^ç¨ÖXñ]t£´•ÎnTF#ðÊB}éð¿ƒÅn£QŸdÚ’)%p‹gUÐ'5 EW³˜/¼V¾ZÈ«b6fº+[f Wo1ï϶qé»…Ìj~Jê–´‰3ÖQD‚Jæq¹¾ô¾̰TªÏ~†¼yá; 9¢*º[Åú«ÃBÛ+&ÄÄaÞê³ûKW«Ø«WH õ0ÀL.hÓí²³uf˹²#ð°„‚ b›;PŸ#Bï¹#È”ãgZµ&Ãüõã¬ðÑùL'??GÕJ„Û²½Zw”âqÝïÊÛ»¦Fõyg |¸öá+ˆ ׸±x&ZØòrKÝ{Õt8Œ9ΓÙãW6…°ç5zçÔ·H8 kæ«Cqð(×2|‰¦üðˆ&¿_Q>g¯CiƒIWùåq0RF4j,›¿âÏÆ@cΗá–j¹°^Úr352©ZÀ³ztR|ô"‰DòÙ>Ÿ'’YÿsÂÌqåÏ¥L´ iG¬ë ™VýÏÔjƒ‹ïk²ÄØ„¹-´–4ýÇ«xõ¢[wH>R ŸMN½+/=øäˆP}̼EsÒÊŠêù){t:dˆÇWÀÿ>Ïïg.áEºTY²Û,’ÎRüØŽåøœÔÉÚÃ¥³g_ÞΩpB®Fñ×P}âÑGúÆDØ” 9h¿ÔéÏ~÷È j$&i±³­å1¬ù¿’ó›jën‹q=ªCgec¸ý‚—ÚÛYÁ—®$á37t­ H4C7 1¶Êöx=^ÀÑcºMŽ¿»ú½”¶r~î…ÓA²ÿDZäf'#l äð3p &_ýX?Íþµ"wÀ§RÜîÇŽ²Š'vÖ`U¯n´{æŠ*¦IüƒàôÉç³WÑúfý‚O·‡7'iˆ÷… )<]¥øíþ± ö,±»§?’Zr¼õŽ<¾„q®Ó™,Ï”Ïb†¹ãaƒyãÙeìÝögŠ äæv†C’¤QIe;ùÖãÙ­ 0ÁÐü œcîšM2± ×C¬…h-KYƒä"Ø–µÌÒÁ¶×:ÏWF[·7 —f´²…§NW¦4¡×l­ÍúÏÂRÐ%€ 6\ñuõª(š¹dRá@¥²5‹W ‘ûÙÄ(IŸ ô«|%¸wj/É'›Ýú“Ðó\±›·Œ,Gô™FKh_‰Ô²+-gêû²¡ÍY$f”es?cxÈúÐ÷¢û­,š>Ìè“.ø zFNÐjEU8’<|™bD§”©m?ÕÖH—9›6½–¥>ãn“sŸT"‹& ¾41Á–=¥“ NQLÜвü?“—ziØWÜ0{³^.ÜÏi~Ñ`ÅGĆ?d™žΔÒ3Çâ"«~n‡ÜkBf´Eæ«õ0¦*Í{…ªFëÔ¡e£)>.‚„âù–ʇEE†jaÑ“^qÿ²Žæ„å6ŠÁ?÷l;üntûÞ¬‘ÕîbÿD`0ÔÌúôFáW2bvŒêÖV`QH®Õa¶Û3ÄGD‹ua¤Ù-F÷K0:Ï¥­ò¸º¢Éµ9”¾rUöÂ$~5ìkëyö~‹žcäÅ[6œ$Ÿ“”TnoýgêÁ×ä¥ñÜÅm‡{<{Ö1¾–EÞwúïÚò+ày™fŸ¼ ¶’¯™Iç"m®{ÃÔ{ö)²§’ì+7.÷[*{ÌŒÀ;¿ÚɯÌÞÏÌ× bϘõ|Oìï±y¾ÂR«eíù`åKf ¥/,Û_áþÞ¹TExú™–O~KõôBã^Xô¾®·løð±0߇‘ôÛkœ÷TŸ{H¨˜âeZË7ùTü¨n&y­ø”g"þX[Ž`¿ÂÜÍW§Àô tQ1åŸt7}, -¯-qÊ›*;  =g‹ÊɇH±¡áッ¸ ˆtš1C‚Ÿ€ô‘´ö‡áõ]H´‘œ‘E1õ؈¨íˆ\W1èŒO•NÚÝû&²„ZÄߣ‡¤I_ãEõÞÝAÛ(b3¿}çóôˆºÑŒkEÖ.×iº¥'¾Ý=‘éÇ‚ÚÚJ%OCÇ÷.pÃò\Ì4ÊJõcälåUâƒòv_R09KúÌ^ÇN‘?0 l´éÖ‘*×WEõœˆ žN‹EêCé…íôï”üÎ)®øø–‚ŠèÌÊD¬¯+ñø9K<+1ƒOÇnCG Ã#$­C»gUtT.Ìí‘æ/_‚©Væ°©;ã ® áר§ ñS›mëú{~ð„Ûát¾3g¹š„Î1·9”xH—™à7fD.l4¬'Ygèç8ß"´³ùà¯%)?”Šó5sM–$#°íÑní£€ò1ž³‘É&Yõ=ÕZ 5¹Ñb·ÈOÏUg ;Á ž/Z:ŸÁâÛÌbV2S>Î@R¹P¨Z0Ê!ð7¹¦s'›¶—k|ÙáìÈQú|#Dyø`SÕ±—¼î‘V¾+íæn6Õ%ÊJbn ï?DLÎëùáW*×'d—]õŽx”9âÁpb¢‰ŽGÿ{ŠÀ‹nçoîcfuïw,a2Ë-èè?¾6\™$3¶3;_pL¤Õ?·$t–Ù’߈I¢æ†Úëpô–{§ÙƒØâ%c,jBÖJ9ƒkíY I@*<‹ùýnõÈ£aB¯Á:£/s¶Ã‰M¡NŒ--7ŸÑ`~r/½SbÄf`º‹Êôûëc±8¿Æ K|¥üúMÀ4àJþìHl v#›xlä —’ÖL|½µ‡ÒV“ºÌKfINôN».?Ö¯®…"moÔ©™:{ØGqÏÜË?_Ká-Ï[6úÈ=( .®ÂBžt¤jõ*¸f¬çû:Åu2_û"âZ ëôöíÌp)¦æ±ºlù¤·Ì¾xq»ŒLnBy¥–HÉš,.øØýký'ñ¸C欔bäRp?™~ÔmN4Ž‹úA·ÙàîÎú+‰„MÁx¥ón}LyF ‘{‰å±JÐ.g´~¬ƒ|~=öÓC«øÍ³Yþ¼x›ÒCƒí`él…Ë|#ÉEKy¿=ùx=ÃÂÂðÒ=â\JÄ'Ä Hû†ulý$hŸ`ä¥dN*¥«²Ô¤é€m˜»yîmQX[Où^2[„ç˜ùÇLˆHGç0WŠ*^ÿt€nþ]Ì”¬Épèß„I×fùÔ…èâ~!Hàþ}U«ê—²ÞZ‹kP¾K@‚†n”–¡:£‰‘¡rYX}$²ph¯_Á;›™DDP³Ck!²š0¼•,DXÍ ÿ¡qÜËþOÇ:eŒÒ<¡q*]|½J;~Øåûï-Ù¡FœÒ~ï0F\#¢_j¿~uù•RVøJƼ1Wø%ïljþd U$à$µµ)FcÉV¡ ¶3‚ì,ùQNŠqÖ8P“wýaˆ-ûŠÑgtTÎw?å= ú³ƒÒ×>G&&[§°ýãÚ|Ðm ×Á“¼›Í_%¬u‡w-Ó¬µìK¢;gõµÊ‡ÄÑÙM‡›•îËdM¼Ë¾Õ |¯²ò¬Ûýˆ+¬·ÙSlîtì³[#éØ[÷™(¸Žq³ b»‹*Ƽîì'þÍ;¬|ê”®”k)ŽU“ái¤Ílg覀1ðÀ—#WlŠ”Ùh¼÷›Ä mJòÝÜøÖ8 N!@‘f[ W­"rG!„}eiv¡OÔ"$@)É9Ò›;‚ÖÖ2"ÚæÄ{["†k‹ l¤jÍw´Ü%.²PN`Ãú©åïºUFšIäxgý/¡iüoÙBR””íÒמU<¯\ÝJ7Ek¸zNÀª …qjÏð‹jhðÅtï±Ô°]C6gÂE–®¸*åŽj«ëú9¾?«úŠÓfÚ øúÜ¥YÍ&7âLü[‰]Mã4wöâÕÖŒè^^©æñ½qHÿˆ›ÊW[d«QbhÄaÁA¦¯¢‘2‰nS„m+“HfyZ²ˆm^ÝW{y@O»©õƒ£^ÎRíû‚êÀAÖ=Âã1¿‹éƒÍ{0mJÖ ÷‹½¬•ÄÆíéÚû‹ãnæªË5U;I1‚÷à ×Ú£l9ªAö»y]ˆr"È:ÅîÚVgžñ`ôë‹zq#*6Ù bQ8êˆß¡Ê¿Óh©†!ðþÖˆ0žÏ›ƒÈŽzCûœ,Ôó½µìÑ~iYb)ýœI¯ßãE¤¹öưë†^-d59ñtM)ãõ¨§TÙÛ°øÆ?ÕKSÁz3hÏ9ùG¦¹,§øDRÝ>\LRÿ ÎU‡o*ÅϺL<÷Ö}¯O{&÷µ©q 1áYßjɧٽ"*Ô¸Þ¡Gí ¢¤T£MŒŽ=7.’€B$žež¦($V>ç]Œ'‰›¬"A¾÷⇒~‡Þ43ҳζ‰J)4597/«ŒMb'V!þ“hA‰!,ïÇ{*su“ÀPß!¢O¸“D.ìÛCÒôxi Mªüx‡Wf¦†ýˆ„ vÜñ„ægÚe›ªÌM’^"_ìæzWM¾J–T*ó~jx -“¬4Ä3²þÜD›;â”½Š´f3#è¹&ÁÁOVò£MéŠå,kÅ=úÚ¥OvÒ®÷€Í™µþÑw‹³rçw+¹Þܬå΀®fW {\mU­zê^Çét\½‹2sPk˜A»õCÁ<Χ8FÚ{ë÷ÛÄj¿ö!Cúž ƒÃ‡%ĔӸø‰”wö5A ®cPÒU8T7Îýp蹺8ÎT‘ é®>ån€ˆåÝDu|º"É>gè ÛüôQ@Rlo®ãqÒ.½Íìà…©¼Udh8F¢¥¾v¶¢jíë´OÙ©®;gœ»1éÒÍý6\ÒÕQ\]æ‡ù˜í=éij^ÛÚ;ÙÖ[”ù;×ïÍÖ«-dI„¶%Ó ¯òå328Q·…3B)Û'#SKáXEÛ¸ˆÕ˜§£rP8ñÀgðlE¹—&WÌá’ƒµüFO0cä݉·údÿP˜2§±\]9e …‹ `gïžš'mà:޳o—H8|G•HºPéPjFËkdÍì K¤ÝT`ãPÆ>™RãõìÁÞ=ì´ÀIµ›<^´ć# œ”²•Ù}ñq Nù ©À‚`ØoôªµìjÚí¸W£ÌäPó€Ìûán)‘.”ö×Ô4ýWñs³Ÿœ@0ƒ ti4võ¿µI2dh0¦ÀÒ8c‘Ž;¾Öð¸:,Üðþ÷Üþö%W‹QZ‚ÉŸMÉZ!»z?˜ª¥í×¾œ(1ÊÈç2dˆëçb´ëØÁI¯ÆÐçæ³‰¯<Ù-ᮣßG[ Aíï¢DØâVLHÎ)4Ù³¥'¨?._&ÇïÕ?ÞÉØ“ÝÉêÖ»¸ºÁèBX¢ìŽËwºû®:g‚›´Ùé/¢‚ª3pkXÑ×*f–ÿ9Þ‚ŸLþ«{Õç´^þÌIʦSvØ"e :ÜžF4˜Þáïq<  ÈU/b#ۻכ߇sî¯kÜ#(µ«¦z–_$Ð4@n­wüÒf¤>¢ì$+²ÂÜ TáR¡6ìO ¦ÛÅÅ­Úð^È‚ËÄPy}矧Tg¯Â~†”)`¼èú ú}Ðï`7añ$™ñ<‡¢£Óà3Jâ§_A¾ü”0,ÿͨ†:E,Rò¬Ï7ift°c×eÎ÷ÝÀ©ˆvTa?!³Ul yÈì©BQ›_ýUI}™÷¢ªçH¯\–aøE)}šÊè$žUXîbUOA7¶žG‚Œä\?ôÕY†(`h̨·íÆk‰}¦Õ¤à=4d¨,äzÆàZCDdóf°~&S¯Âë÷Kß90WtX€‹&yÖ/¬l/‡5f¥D•&Šžo¬‚ç#=0ÇÂ#ßÔLb´Õ§ÇôºSs¿QbŠc1¢µXuÖé}ðúqO6B°©«¨½8²»Tþ‹ËFÒìSD–PMÄnæÌÍQãL÷¥´RÌĘ©¼„´:]KNN zY× T¹5`qC±+ó( ËG©ŠÖoËЪJ™:µî+5ïÛå9>¤£I†jb 8í2_“ë“u{X œ™oY¿ûØD5™œçõ–ùó¸ ‡À–Co!Ñ…M$@>aöòSC¢šÚ§6V©÷b¢\ðDmz÷¸_¤[{ÕüöeV?æÑA¤xwäwÙRæS8:\Ü»ÊE”ÜäÃXÙU):ÈÔt¢` Û†¦ö)¡é _@¾>?R±¦3¡^‘]Ñé}Ö"­óg8Õš‚’•N½HH5¨­°Bp_W$ÿÞ¯HwT5*üq/×ôþkãÖÒ  A¬ERj¥ýUVS[fM£9Çé%‚ÂOg°êƒ-«­„y?é=>xÄø ›ž@µŒ’J¨ pWwfKÄ6Ôö¢}qA¼6U­~û̶Ŝ”yJ¯Eù,vkG~IÜÅvš^Vl¥Yk€‚)Vù9¼qÕ]bAäNG©5Iî•×â&{XTèŸÖÿÖâ*æ¶K;­ª®ñå6·ß˜IF‰”†3 ïɱ^–Ñìòñè°¡…ÄŠ:¶µHqŽ1¨Õ`X>,þÓ3È1“„ûT€þ`Û»òTñß!\—à£Æ T³‘ë4ÄqG³²()Øž÷¿õ{*û¥Üî½9S8h‰N£ >}Ä:þíçÊuÔu,J…ß2–¹ÔL.è»ä/µ6 Y³Ã­è¢ãà©»]è2ÃðÆ9ù…Ÿß²_‚A9<ZlÙVVˆ;ÍóÖöŽOß´ÓÊ¥:h93}Úìžd&¢Fd¡A¿¸¸˜ƒ'ç(ÍQU®„¸CÁ•go² ~V‘i§½Ýø,%à}_’)ÙaJX„.¢o|hnØÈx~mö]¡‡Ýœè¸”aI7_m¿ÀNuß'LÄì~·aetnžHžW°˜Yo#³¢¶P ãWyX¦}(5”Éæ/D0½êÎÿúœPð"C2JëéÃiK¢ÛÏärdM‹e ŸùƇZ>J"uâxÚnkÊÖĵºBÍ4œzã1x¨AOÁ£cNþj9*éYñâÕJ}ëÞ]Î~z\U×[Þwö÷2•5æ7eG;i~3•=3É69gÁ _.ÑC8ÕÆÍ#!ï“AS3’ ÞteæHƒ·I¡½Š83Kë_÷Û†]M$²f¢ÕŸ õ6Œ‹§zç `u HïÓàÀiKf )=¢lÿ°y®êŽ{ˆ úÉŽI“’IØ®÷+ýR±Oˆfør5`ÔzÈÊ5nÙV̽ݔM.è,ukwh'‚òú3á2zka¡”KCäØVæ& p¡Afjmð†V_Èl•6¼`gm}ÉöõƒÀðÑNýöîFÊœÄ1Gú&Šà mËd@‚'W7éÇ1ÿzë.‡]¡±ƒo‡&K6•J€ò® 0 ”‘B»Mݨ©—,ÁJjæ•kÍŽ²`²î°`£FúÈðdM]–)y?†ûúÀ (Ôe#™[Z ǾIaŒ]&.0k ÜŒ{©@Å쥳®ã_ÍE/á~¶%—CÁÖi»Íá DéÐDî†?cM.ÛñøØÚë€[)—-°ÅΦǤ- Å®4{P櫨 /ÄŸâ­ÍwWj¶¿¢ßbü€×'$‘·n‚*²Õ6ä õEÅ.c°¾UÓ™ž ‚w2K»y6ZGñù,S@h˜£<Ë‹ÄÃàGÖÈÚ’;ëæñÍŽR²‰5#±ß€Ë$eÔL8ÊSKVl"Ì¡±«9|“úG ýl”RM¯w3 Et‰éþXsyl€¼•^#ÿÇi.+ŠÇ 4iÑmÃéÏËÁ)ïÃ5Í8OGÑ+s®ÞŠia;X‹O¾/Ê8¼Wz U)a pNlЗ# GÈÏ Ö’¥ßoæ0ï°Ž'΃édQš!]¤£~œ>{‚ÿ€½ qÓ ú¾úevŠéd¬ØÅÃÈãÖÙ›œJTÏ–Àu©Õæim&5KirƒÒt*†ÀŸÿ@ò gÏj˶&ô,Ðy¦ÞÕz_dÀÏÀc V2S»HI\ÞÄ-lªgÅ êS4Ó°J‰r+RU¿N§nô³-Iµ×‰óÞ•Á08*gžƒqa{Âî¼-û¡ý£‰î”+ùÁ‹µ*xk[a®’ú³‹Ü­V¢v'%ϸÁÛOž'ì£qõÒӵɅòŸ;ª~u/Ý7Áœ¶YŒIp'îr J[¼º>úŽ«Þi%Gªsê}R"'C o!šGšŒø9<ר³ñ@ŠŒëW#AYÞ)(ŒéõÍ[®¿v0Lªñ%élžÒÓzlUqí@…Ë'~2‡ÖV²V3ss—«6Ꮄ_pƉgÿàìs~¶ƒ;¥JTëšØdãÒ±Ù p/ú8åaVS_O?KÀñé!¨íž»ƒvbJç 8¾ˆªå‚!¯„¬ÃzGŒŠ”[Ö?u-üÏHj=Þߨïd€½[Óž;®r·´zÐ×"Ù<¡ª!z÷ý"G«ß•/ᄆ?4CîºYeÔª’ÏÆ¥î;…~Ó«¶°¸Ùœu¬²å^o”jÄãckǤ-~fvk_®¨*ìPW×@Cöp¡'ó“¼cÞ&IIFZîì¥IËÀ ©÷«vÔ…VÆn¬¸}ø!° L²“çÙÎ|ÄÒñ1?4±#¢çÃð?Pªµ I9³©#ßð=8†Ûh/úgûxÄÄoo|æ*–}stè£ç]™¾!¬øô§‹ÚÌ~¦Ý\i­N˜'n“UFñŒ÷[™]‰ºéRM6}e½TÙ'GALŠö>8KUðž¾sªX›gJ¨ÉÆ)öÎ¥„~± -£‚Þž|bèÆ?®vâKßãžæx­™ˆHñûØWîøå,-»” mñ–6ÀTúI¦Ùã#†<Ag%1Œ,,6M(8)ÌW~Èz³`Pƒªhˆ\½;àt"ú¹sùÌŽÜI‰DÔë\œsbî£'Å?KƒnG‡„FÈj¢¿úî„ÐOÓv/þ™ì†~ªVUÆ&ï™,û‹PÆ#üOá bž´âde¦%ÞYƒ ÍtUûUç—ŽûðÇš#f)&±˜áòÃ{1œÁÒª±šûe àÈà葌ÙÝ€­#ä­Kz®Ê ¢ õ㜘.R¾½ 8ñ‰^ž]ZìÔγNBBÅ_æN„‹÷Fsš;Bð3/oa4›É>êud€:±Ê‚ªƒ>—E`7ú¶<¸úhÅ÷‡äË’BÞ(ðµ´_ï[äÍÈ!Êñǹ_ÈÜõæ¦).¨ èèÏ©b…Ru:ž.îó’Z[]EH$ ^ÆT·œCÛŠƒMñRSsÅ¢£Þ¿#¼x&×øòt>¾ýù‡ØÄ@ûðÓñ†49©a—í'wHUEl€–ù>õÈ—3q+ŽôÓÆšCðéác+ȧ]«Ö_õUé/èV  ú®ñåçt¯À~Œ×£·Î:w“;ð.Fsö°™Ÿñ\¿½} ÒV«ß„ÊirÉ’Èaœ;š×÷˜š^ ¯ ­ã¿¢€¾=ÁìÑ…®á‚¸HÍÓ¹×aÚÚ“s(çAu¢E®0ùü†×79è7"‡F°‹›?å/ƒ¿òA¿iL74;Éa-éÕ¬ Ax²šX†Ÿô!œSxï£ìî.2³†Í*8biTð•¸Úi8OFšÒm(š"Φ^Bèݺÿr…w&C }ÛÿœnÑKKyŒi2ÓÈ쓾*ëYñú@`GSÎÜbŒ¸1rö@ìÿøø•µ5ºÐ¸yÔ;'q!¥Ô”V)‰c•jì c‘¬Ib(Sï'¿`Ž&ã£é/˜?.ôD³žwÔ&wTB{è~~ÆuÁ´m€ÉÒ/"yžË…ÉÞa£9úÂn·Wy'„*j»Æö/¼dþ:e¹NµÓè“Ä?tÄS+DÆÆí…\[¢ ,,וûØežÅê%9]ÿ”c7¸"P7Ž$½Ç¢ÉŽ“nE¸ Å]~¸ê;J¨˜­¹Ø}5/Ö÷âe\{ÅA 8E”írÓuæÒDhÅKǦ«jبöÞ1úòfpçê2_È$ŸiSdt’ÿåe‘HÈk`ÝU‰ÊE¿Æ[ ›èª½× ¤Ë”w´+Z,/¬vñ(§À 2Ø5‹a-ý9m2ó³#†r!Ð~n¥y½XrXíʪ6Y_¦Àí“7ÈËÆgð.s²ôÏ3X6Öë[á«>bƒ¶˜M%áOÜqWd"•P¤Q“ç€l¦•îÓ?äZý{´S^õÛ½Ž[ë ·ùyùó×Ýò ˆXËVX[ç1œNð&×\Èi©ò¦ ?a’à‚šMÈú4g÷‹}YE!ÕÔ¼Ñô#TSh`¾º‘fà2Rº²¹Íƒ»Žã© »í|ZæüùhÒd¢ÕDÆDs¶Ô¸¶)¡ß°ÑÂïž^—Ès¢×ª Cpóo}\ÏÝiØ<.–Ï8@Ñ阞 ^ݹ=«JwÏðÕÑȰՆmú†T}0mŽuo­ŒÄYæÿÖ¡‹ðªÎ«Ì¯³Êuy E'Öí°èËUz!ÇÎ#޲‹/­}°0†Èˆ~­B^á~°ŠQ€Á·>ît\ÁIÚòjz2’:ÓÏetùò£ñËõ¤çïÓ³ÑA`$Üx„{·Æ˽Ü?å5Õ÷Â\ÔÇŒ÷«¾HåmdMÈ Örü¹MTEe8 û>ê™ZÅKaoGF¾<ÈüwðMøm\Ë~ƒ¤ ¬fºlšÛëTÒ±:2 ¼¢•ö]\4·DQAù‚ø«ehÝ>[Ü*•9GJÜc3¸W^®˜‡Ñ`Fp„ÁËf·þÅ£ÞFˆ˜µþY×§=\çbpPzǃKV7iíåiç`¤ï HÑŸ nŒ 7Ø–M¢ê>)ŸKÍWX»‘R~jg§¡³õYÑORÑ»LELaûHѽÙi€¿Ún,6 ƒ¯i–j.·\_¨Š&äãFH^$+xÔŽíaK¤O¡'R…Úõ`tìÿÀ*rÑ·k}¼>’…ÂmGi†ºk4þ:⎰ý¨l@ ©vÖ–OÓŒ”ÏâxÆ ‚ÏšæT_&Ýø¹5›‡zW=àWü Å/]¿úÉô”F /ÀØ™€õò O}õÈ£EÔð|$z õÔ¤Ù6«ï””á#ZEQDàÈZ¾§.Cx™Ôˆ­•°Q®0ôaö\\öh¸{šŽäým «¼ïøè[v%„ñBZQ6P;ì|p²êmªÀo½‘‘èãë. jEgTpb‘Êøb"¼ú\(h"…-{Â(ô— xº0ž¯-ƒƒìá{ë½fžV%,gh‚ïÚ~ЏwJ`åY=©t ¨Ξ Z23²3tKˆ °ž¡‰^úVBï¹:šÍF¨@‘j…Ð_%Ö3z¶G»a[³‚¤¡ì’Ý%RtC)ž>š±0¾PìžÓ'€i&¯Sɀᤇ'áB2Ú/ûrÅÜÙiVRjP±¤Ï±E‡Ç‘&FŽ—µ'[{žE–’ œ¨å¡'TîÏ®hk'L¦®Y‡ÜÃÍþ9@À£¹BÞ©œêlÔdwô·ØbÈØ2‹1ØWÂIéÊþ€rÊdà €Où÷ '°QœÞ&YeS˜…S1¿±Á&:λ€ûg„þLÜçl4¿†?ÖµNT6ˆK‘+,’ÔvÒsïèl1òԆ̓²ú–çHTŠ£xCý½8ˆ¯¢Ò‹þ`–ÏŒ¨?€À¼$›¡âd£'aÑaÀq.£¨"z^êÓcS» :&j¦aË ;u4gCŸ¸c_»4ßL™#£ðò:Ý,±U ÉSBj>lºY mg,õö¯…â>¹v­cy‡aë_*JÍú‚3ÎÔ¶?D)Glû—8 ¬_ª¥$ @Ó ˜\nûk¤e.Kp? ¼Zà¥ÐJúþýÕ’ÜK‹5vehÎò…§k”–tllÝçšýˆ3+E?ù2Û!í ÛCY7ÞØ“S§IÝÁ\zV¬ ‹ø.ÁÈvlK´Ç“Ža†ô—Wɽ ¡wݯ^ME&ØêvúÿvZ ¬òÂ<`ð9Í\@XoØrýÀ[0Ó™}kj÷4s˽ÃúïÆ5×­ÑW1•p1͘§/¨?¤}´‘ÕìQaRʳï©Ó2b*äâ‡wÀ"@餲“ký?¯ÔCågýMèùÁ׍é2™Wz¥(MpÒ,Nh„Ot;d˜.*qGB¼µ¯Jbµ>WÐ׆«çÅ-L †…5Ò endstream endobj 276 0 obj << /Type /FontDescriptor /FontName /JNVXFM+CMTT10 /Flags 4 /FontBBox [-4 -233 537 696] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 69 /XHeight 431 /CharSet (/A/B/C/D/E/F/G/I/K/L/M/N/P/R/S/T/U/a/b/c/colon/comma/d/dollar/e/eight/equal/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/o/one/p/parenleft/parenright/percent/period/q/question/quotedbl/r/s/seven/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) /FontFile 275 0 R >> endobj 277 0 obj << /Length1 1480 /Length2 2451 /Length3 0 /Length 3397 /Filter /FlateDecode >> stream xÚT 8TëÿϖJi¹Bd™…± Ù—d Y3Å1s†“™3cfliT–\FÚnD*J‰p‹ÐPdIL RY"JB‹µúñ;–{«ûÿ?Ïÿÿœç9ç|¾Ûûý¼ïçû*É;îÖ0¥2}!+&ÂÕÀkâH€¹½‹‹€ÃiiâpŒ’’ Ì¥C fŒ’ÄæÀL„ôS€9¹¨Íä¢qöLØDðZ^‡„×%áp‡Óÿ;É&`0Lì5Lâ`”Ì™¬06ìçÏE—ùûP¡¨x}}]õ¹tÀ”±a ˆö ×b +R@:°›I!nØ/%T ý¹\ ‹ ÑM&ÛÏHU¹þ€3ÄØÁ˜% 8€ hž™&F pñ‡9óöÝL7dCj Ãá AbèâÀn;` BæƒíæÔ…½ðšøÊ-dÏ‚‘¹dBa2X #~ ¦CÀ.+;Mn(Wêl Hç0Ñ|0„é /0×9X™: Jp‡Â†Y\Ž&¦ÏRÄΖAwÙ¡š3 ár0³ýYÀlˆ‚n{vþdf¾h0B¥Í’ ±°®ÙX,„ &̛Ĉ8NO @JñÇΖw cAsNü¬eÀ g1Y %ñ`„~0á0¸ì ˆþ³ãW„Áã*Lᾌ`~TGÍm£‡Ï†C/ª=<€›}þùÛ‹Ê‹ÊDèa?ÂçÎkiãfok©6ÏøŸ™3× -@Ô&:úúï×"Ž ¼ÐîG¦ Bcúó½¢›ôw¿Á ǯ²0ªÀ¯µ˜¨f!@å‡ÄÉ8"Ž‚¾ðÿo¡Ï¥üoúž­òIüß YÑésn•9ÿÿpƒ ˜¶€J6ˆ‹Êßž‰òïPwh~dí!*Äø·×† ¢c`ŠøÑÿÙF˜c‡BTG˜KñŸƼÙuvÄè0929ðìhàq¸ùй¢ ÷Õ㜠BÇæ×- “:;_¢²Ù`‡Êˆ@$áxt©P蜂¬&Âä¢)ÊŽИlÌìêëXpÖ4‡f;ÀR‚D ÿõ,ýDEŒeþ –õÔ°ìŸ ZŠóÔ°Ü9ø J›ŽóœÞP®ã¹»‚B! ¦½•I1ˆÞ_]>Y`º!D£¯‰ ½ìÁçøÑ%îo,å‚ß:EšN}ѺÈnZù¬Ÿ?Õ-3H¸2s;ÀC°¯ëàY>I¶½¸\‚æÛ«~P(³ýë Ç.ˆÐo+ìñÑB¨~²#%Îu!£&OUת~êkI°6T.¹1‘ç?"¹õÖM)Ѧc|ÉuzzZR¢Ñ¦i7Ìnš>}v×F‘óÙ¤i(e“ÕÀÔÙš‡bσ¹ê"ðë³Þ¿_ƲM{otæÝ=õ¶>Bà©Ò›{–ë¾%©DŽ–GQñå4:&‹NmT‹Œ)êqçÛ–KovQÀÙZÔæ¯èÏr*þÜ%¾d€ë©WWhX5wl”|ó…öÄ•Š%[Ü×™T–R‹òíÊ<^ó:Ûú èëöޏ˜ &~¬½‘°öœ ˆu,T×µ©Qˆ“,úø]Dô¦L†½yoÜn\[r09ù\G÷ëä8r¾ÒoÏã÷Õ7 érÏñÀ.FÂNŽÇÄá„bGŠè7CÏ|±oüì‹|üýH²ñ! $ñ·|ÇಙSÑðÐ2üª‚%Ö×(â†\äÚzõâÖ §«cèÑÝ©Òcm+ª–)4CÁ‚ÄO5+sr‚ooDd>š ¼…2·éÍE›žDi1¨@r‘‘='áYìI_RÌ5«íõír‹ö~«1|ºÃóV(Ów ^rxB“/ñQ1(WÀ•ÜÍ%ÕMè†Ä¥Â홌ËqŠ”;MÒ¶Îl©?Efª(·ä6Wj-:ÅȪˆ:‘º·Yäpöç‘£=‘VG…1eCÚÞÈ_< )1·V—ÞÙ”z•^UUÑ‘ÛG¹†{elP\<òŠÑê1ßo6þEæøè›ï„†ßÙ[.FõsÇɵ­ÿ1ý+iyÓÛ鎟òⲪ;äËnšûàV 'F ×Ý}àÊõºïÙÜjÊé¬fiy\þt§øÄ·#þüÌ §U|:)©°ø¨¿i—È’°ÇŽŸB²â½ÏhŸ· ®¥}olÎýö(Q†vq6PòKŒ_?øÒ-£~µï!ÿK!È.›ºïþY“/Dµñ»þ»#"·gLåÜîdÅv‰^x—ÖýÑ&ÁÛw&Azô²`fññ<Óë®û?µ…]}4´íž öð‘ ¼;žüeµÎU}{/Ò‹ªqvÙÚöðyd€=±X·}²íÀÖåvíO·‰TׄM•h)“+õrg„Nw: Ï¥Ùœ¯6ÆöE›ËË:e ~')ö­™®Ùc÷ùVjÕ“ 4É#SÒà~ý Ù’ =¬Ü–±ÂݲòÎÖÚK݆3žçÁ”"Ȥ7»ÔT9#}çÅ)2¯+ 4'z–™JéMì#U+ ®K|aµÞsíÇøOd+¿ÜksÙù™Qá„» ÓÙoä ™ÚèË _)ɸߎ2§ä®I¦“q ª¸Yé¦?6‡|k¨Öžâ,ŠO¦í‚4‡×D UÓ-Cï4¶dO/jô¿«œî¬¹çýyv/5DÔ(lRÐWÆ8_˜øÝ䨫ï‹L<:ײ‰Ïty;m^¼'U(܉ªô§ûUK”Ÿçö{¿š—•(ŽKÝvòs Ø™”î"1Ë»0“¯Å¾ˆäeèÖ{ù¹SR<­n¯®«š‘±~56ê3°ýày½:«Qc±ôKȨg"+5Kâ]FB܇ lQIC·$]×F¿Žš 4î…ž„ÝËÃoäj÷¯z䯹‹HZ$Þ›Q»{ûµë°Êžcš×K=¹ÌŽ+7D9¥Ûnmiëšš[Öô–Üx™v“dÄÊžðÔð•" µ”3y¾WB ²óE׋ëóôØ´w¢cbGŸÙNÞ"Ô¯%—lzkñòÑq–ÚJ³7ÙãÆ˜{ꔲ¶ö˜$TçÜ ŸìÏåzg–_çí\#»_aÐ=Q3¶mõ(”ŸIíüZ¿=Y×êb6Áú¦ÔôÆ©oH±r_Ži‚hþDaDJú ©³ë21áÒ£vF.¡c.' YäÚ/ѠЬ°#íýÄhOÖ̽H›«bº—ÈÑŒûÈïú‚–жۃé—:wTIÅß1NvsbNŸ;R2$÷}½âŸ&7Þ\·akŸÛ¥/廂D¬g:®™˜ã";PÑd·•×Ü@¶éÉ]ÆiX“râ+["°lQçE+ý2ø­Áã‰Láñ?«K~ØÎ–íC}gW“ߌJ +ÂZ•×§è7nD5oPør`MÿîÚ¦÷ßá¿Â¦¬•)цeÕ´M§;<*_ºê!©µínªÃb£×üÂL)¿ÓV¢’Ž—oÔâÌ›È8…]<§úÑ×^ØØw´Gg>zÅàèóÚA¦Ûþ µ endstream endobj 278 0 obj << /Type /FontDescriptor /FontName /EIVMKE+CMTT8 /Flags 4 /FontBBox [-5 -232 545 699] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 76 /XHeight 431 /CharSet (/a/d/i/l/o/p/r/s/t) /FontFile 277 0 R >> endobj 279 0 obj << /Length1 2020 /Length2 11956 /Length3 0 /Length 13192 /Filter /FlateDecode >> stream xÚµP\Û¶.Œw‚hîîwwÁi qéÆÝ!<¸ÜÝÝ!¸… ÁàžGöÞ÷dŸûÿUïUW­^ßðoÌ1æ¢"WQg5³7JÙؘۙYùâŠ|VVfVVvd** Øø™J èä ²·ãÿ—¸Ðü"“0¿Ø)ÚÛä 667??++€••ï íøÆ. 3€"3@ÎÞèŒL%nïàî²°¿¤ùŸW­)€‡ñ/w€¨-Ð djlP4[m_2šÛÔíMA@°û… ´ƒøYX\]]™m™í,ÞÑ1\A`K€Ðèä4ü& P2¶þÍŒ™  a rþ[®nov5v^6 S ó‹ÄÎ èxIP—U(;íþ6VøÛ€ðOolÌlÿ ÷÷ï@ »¿œMMímŒíÜAvs  ,¥À v3ŒíÌ~Û8Û¿ø»ƒlŒM^ þªÜ %ª 0~!ø=gS'Ø™Ùdó›"Ëï0/]–´3··µÚ‘×'rš¾´Ýå¶³wµóü˜ƒìÌÌ“0ƒ8°hÚ!@Y‰L^DÈd@0€‹•••—ƒ tÝL-Y~‡×pwþ¥üKüÂÀÛÓÁÞ`þBè 2¾ü!{:»`'ÐÛóߊÿFÈll3)`´Ù!ÿ‰þ"šÿ_ß äÐc}™=6ëïßÞô_ÆËÌÞÎÆýù_çË¢­¨¢¡¨Àð7ãÿèÄÄìÝžLÜ&v';€›àýßATŒAÿÁúÇSÖÎÜÀ÷w­/MúŸz]þ9~ÚVƒðß±”ì_f ý3âX¹XM_lÿσþ—Ëÿß|ÿŽòñÿ]ÄÆæ/5í_úÿÚØdãþÁËÈBÀ/ã¯hÿ²vÿÛTø÷Ê*Í@Ûÿ­•¿¬¨…ÍÚr–¹ÍT@`SË¿ão±æï³ÙUìA¿ï+ëÿҽ앩õ˽áü2©€/kóß%íLíÍ~ï;7ÀØÉÉØ™õeŒØ¹¸žl/‹htûk‚,ÌvöàÀ ;o€¹½òïåæ°ˆÿý…x8,²ЋNñ?ˆ—À¢ñÄ÷¢3þƒx,&€Åô?è7+³A6 ð?ð¥h–¿;ú?îßzGÈË üqa°˜ÿqy)Òäò¯¿Õö§9¼˜Xü ¾”nùÈÉõ‚Ü,_.µ?/2Ð¿à Ÿç!dû²½úãËõÒ »—³ú—þ…ýŸt/Îöÿ¥~)×áú%˜ÃËýkg4ÿÓN¶¤NÿÕŽ—\@§—{ö_¦ÜÉ@öÿêñˉÅñ_ð…ÿ¿ºÃöBÖùOý¿Ðå_Ýàz1w~¹zþ8¼¤ø“ðe‡YÀ–NÀÀ °«ý¿^ê„ü ¾´Óå_ð¥#® ûK<÷?t^l=€Nû¯Q7…8½4ü×]ô²ÿƒÿú®n@Säoóö¦AV5Am·U¢Ä®LÛãB3TÛÚÉtLžßœÚ!÷è‰t•ékN×¢‰Ã=˜Ë›’´W"KdOž‡Íu¡-ñª­^†±jSÛ­È‹“xù‡¢µý$Ho˜4Dv¼ž½´ü­a›¡;娲!¼è*¹8·®}Ònµý%ßÇBæ·Uw*¹åQK¦™¢4#?øÎRå˜dÌP¼3‘ ÒcŸ¹aÌ^]Ï`gMü"“‹e@ö>Šâøâ©»ÎþénÎc¥LƒÝ¹‹’P—€ö {lŠÚSlï³þ‚gQAäšÐB&+3Ô¢]w™Á5Ërv&éŸó“)(žZ€Ò-µMà³”3ÌUò•=Wã‡RÓÃ×I8•jS¾MÆ„÷‡Õ¬¯áj:¯w«G”E»Í›U2,ÈA2-×ÜòÄëuš©—³è|íkR°‘Ê;ŒeA)=eÅé¶7ìL”še¤è;*qN‚u ïý¾$Ðy×Éð¸~0-RLó¥ÓÐÛ~É잎Íåd ´§Ì…!Ó¬ ”4M¤/4„•F޽z=‚`Æ\Öª™7Ã7q{½ôåm²þ/9Z’º7‹qRak>^é>ÅÐ5Ù4'¯¤– Ú»%t¢†„Ìåíëv=¾Qâxò/ùÖ†gB(¡Ô¦fLðç’§,ú/Q‡!ŸÜŠf´-f(9T`’¿ãNsoEçJ/Ãeì´§˜ä¡ Ûm¡u,™$W­ ýkf¿Ð´õgÉWÞ('J#©®-ÄÕB–êŒ{§ëËã¶à•Û}¿x~±« ØmÙ”>IB³±¹u~a¹Ÿ’ñ¾âÞ¥u’o|®é®VíªS§‡3TwßÒ± o'+& e†ë~χæ"ÅÜâÖC­½ì‡?±;m.¯7½ßQ~ouYޏü­fM#ÉÒª)y®+‘¾æ`ÌÄ´&×øÎgÒ‚ÔšŽÕ7Õ O÷³þxQu$‡EäOŽW[ö¸®Ob‘é²c~ðèáü>ÑŽeRèëûáÁ¨3YI¡ ú)¹Iær]×iÓ8¬y^â£÷ÕóÌl˜Vò¢ÎQÍ_ÎúZ?Ý«̺“‰«r"º·†}ZBßFm¤ö$„DŸ©ZH!O~q±©QÉ9m*®ÊëîBîö I»Û¸"»é»ä·`E¼Ê£¾ïIJç3o\©¶9Ôõô¯N¹#تÎ:ñ¬bF¥`¿øÚ¥‰€-)AâwÞß% -O tç9ÜÊEh‹ÎP£ÙÖhGo ž„™ô4õwJg939Šð0‡Œ¹_5­ 0Ê?Y.ùdœñ®cóÊšfÊßÓ&y$~þhîAþö© ØeEÒ¶¥»C¡Õ«)9œuïZ~ûÄt ýJ¤Õ÷Õ&`¯á°õ`,ËŒ¢v€9ÖY­òùWA‡€N›8€Ø~H’ÖÅpb\Ñ«ïâù‰Íd`ûCïw‰™È"üSßGÌpŽrÔÅÞà|‰ân¢¸»°p$S*Ôê¦Å”ïî•râBÅð ÇøXÓz`€KJJÂHñ»­~Ž"Û”_|øÝgBÚa ›6óÑÝv ¡dÙEoyøGTý ºEêU|¦™Ž "3Õ§ZˆÕ‹ãžÝå*Ê&Ð*h¢“ Ï‘[Ü…Çž£ 㝰ÏïdÑ(cd¤ßgƒgŒˆÐ‚1ö?|ÇWH·¢z2/K‡uÜ?R•†°ét´²ÜQ„Ëú, ”i#PµÕë—­8%ûÎ ¾_OŒd;°ZÝzY"›hÀ?òZÙ«ÂlðcJ krA”îjbt4Å×Âõ®&ÿvÑLN.µªïŒõøòB'¦àl˜Äá: No|±²ŽC ? Ù#3 Z,87"¡¹BfÕðÍA…“õD" æ¶Ê!¼‡sXDnÿÒ¹ŽØ:ÚÏBx;”üÔñjâûNÿÝ¿ç}n1ÆUVK¨°L][ ÝyÒ.o´r…y~®­ŽcD-iòèZšJ*L;ô¼8¬¯Cžx,öàæI”ÌE2XfþF²#lµ¢C‚¼¾ë1Ïg7êž#LÚßHÛ3 mqF†Á=¼Æ`ÌvX Ìq£~ò"=í+â”ñáÄ>‰”ã) XOÌM›ì)ůVÙ™„N÷ïö†xìõxeÜXôbA;1á¥bñeïA¶ /r/×õz%ö>u®–\‰fX£IÇe-õg`ª”ôÝ7)^ìß79¼Þ &#Aîp ðø²üvNZÎô I*ãšô}¦}”7b§hrÁ8ÎÃÌF!Â(Ýaô“…äÐ-¶©šY’TËîÅ]£¡fZž½dK¯ìîõ¬ª,“ékJçÊÏëpj§QŘñ£_™÷]Ï›õ3R¯e'|Õ‹1´˜’™Ä#,5ݤБ߀)òóq&öNyÕN3‰XÙ9vÒüWm¢ª ò¬+îùKË1PÈh—f)zgQ‘EÜdª;Y=`&þDyò„å·ýå™ým ß^åý†U:F@8ýúµ—•_qÙdk\ÊÛ'éz•Æ•ïœzŠŸ?7ùcB_•‡Åpä÷Ä nN~qƒ·œKF™Xñ5xX 1§ õœ³´üà”Â'ÛJÍÈÍÿò} =A”çá5œºw -Á®WO“k;µ›& @¤ÖŶ¾Úß¡9®1šN‘GQ<Xù´Ù_ÆF2#:Q;ã•àØ4K—NðÄÏEö³¿] ºÞù<êGÞàlÏwèr5eŒX:˜|T,%ÝÁ Gð1y@M"Û+÷ µCÍÌJÐp’Á™Æ^»ÐJÇ •Äö/—ý¡ÏåËlȇƷ¯Ô„í†$ Ï%‰ýx‰Ø&ºuͳ#—FÈ튑õ}š­qF¥–!µíÐ}9!8–r2hŸÜ¾!¸¢–ãø‚„¨­é\ÕìÌã „*¤ ߥôIél6øRjVòv¦3 ó‘'¿ “¶¿ß.[õUË#>pUº±eã#ì,|‰î7¯žP:I>>Jî¢ã/…÷J€ Ý.y݃¼|—kàìò÷‹QaðОÓ÷Nßlv¿k…FÜu‰ÅÓT#GèF—°í~òYXõLè›òWYMœ)´K¿µ毣ÝaÙ%hµ·lsß8JÊ»=âkŠ@)OÈæ?6>ƒ›¼`:tkh½èÏwüuâ()%%¡kWˆÝx·@*…ˆüí÷H›(,–•úÌ“ˆÍeÍYŒNÅ£ïãV."l;îq2)—ŽÍ}ÖŒª5±–=Ĥ¯.¸‚b 3ÈÅô ªã3-…®n e^õJ ¡ wµÇyÉ?}6¡¬0þŒÚ°¶XÂרç…#èû¡ÅÇ^[+y4Û[ÈA@EF™K«>`ª]§mW†Rý‹ðÛ]ÐÓŠú¥eå@ J™ÌbZ ömqš“t t1•¶ªQ`õµÞ+ÉшÝIÈÝ¥]ÄÍ¡Û-i<&lÆàË«P Æ#¬¿VﶨΔ¬„®-ˆ¢©Fî‹øzÉw©Üarв„ažûU3ioŒg$f§NŸ`$­àênÉ2ñåÍ÷Ge«Túà&€‚âãdÏÞoþp"+EWV¬æúŠéô«”<Ô 6ËâëÆ¤Ÿ£wãÍw¼ãÜT);ÉvÒÆTR Š»týì`è'Jj4ìõ—væ÷ï¼ý±³«M4d Ô=S†Ùy–„~ÂO! J‰¥Y­Ò ìúBa™}(ú†|/·ÀYÇÊLj;ßu¿ê%%ÅÆSOo[J<ßxU‰ª®I‹Ëø?ÐD4GMn²7_{ Ùg¿ƒ‡ÀMRb}j^kM†T°²ék#ö³›Ý槪5J͉ï“cóÇfÉšR¨Ô~FK~oj=\“Ÿ>‰O‚tÕëmZÈ»­ îUTÝoHÕö¾”Œ92ö¼^8í‚ º^3Éà0‡Þ«2í}*ËÉèý6ÛJr14åZŸJcìÝØSàÙ¶7c·:R>¹/½o7óE>*R|²K2x{’'äæ‚_P¹1¯‡¬Z î¶ô}C(NÈ𫣫Ïêéê³%\s™6 ïп~jƒªn²Áà®ÜÖ¬xßrZLS^tg˜ë@‡p*Tõ¨oÀoÍè'0é„瘮qÀ|xŒŽN²&O ©ØµË¸¿bû(¢êK…ã2å=ËåÁa»¾˜zÎ2pUTY[–EXgˆ~áÓ¹?)m~…/}TÏ™Àø¥üãP×Ã-UÎR³þ–d†L„¹Ýðw?·joêÎï³XÈhš<ˆÌé›?ð7í…A1•¡¡ÄÆÓÒÞÛÁ{=N59È>7t¨¥ú‚”‰ðg•ìú|bÁ'Áó%¯\Ñ¡Gi"ëü1f•÷åS3¤ÊE­íbjéoèÊ‹íËöµªzÏÔŸwû’ŒûUIÙ"!¬aò}T$jÃ.Ðv±ž.WÖ¥ýÄ'“[>‹áv£Áá]¼"«­%ï¯çšh‰*Üξ%Ò‚ɨuÞŸ3µ–óЗŸ³žºÅÓIž€Å;],Œ)ظúôõÌkm˜‘Ö÷t£vòÇdM>YàÅÌ9»®kDQ—èŽ5=ÑIË”†€K€¨ cܹMh>=\7 ÂéD‹ÙuƒðÝ=kÖa[$Áoœ˜émê®s‡Ü kðI…ÃT˵§8؃RimŠ6ÑH"v¦¼ü•L˜¤>ïNé3~S¡–¡"ñ:Ap¶zSâAy]¾)M_¢§¢GžLŽe;e(· ýª[þsðª¼*ßh~}X*ÐBÕpDùÇkx»G•ÊÖ–ÆRCÚd‹EibyjÛ¾p“GÏþc¹!t‰=Ê‚g¡g>S"›õ©†sbŒkÑ74ݬ8^Ø:´}÷)©j 0ĹkÓGg6Pc"³¤~ßÓ‚/–wzêë(áŠ*Ͼ¾ý8LÜcLÓè9ªÅñ‘·±šÚÖ;ùyï¡Yçˢƪž³å(ÔôlI͹(…“¾Ô*ÚC5œíæèS|¼û±áÓcœÞa ­‘¦z˜]Hôž&8»µ\­ïý¸uÏ4œoúmºê0:ñFTÃe¬=wX;Ýš§ªXB™ŽÞÛUñ>Y«ÀgàE\‹’lV‹¦Cþ!!Ô¼Qè^,E<¦ŠÞ‡‡u¨À–-Qc"/P>ÜçT»r2ëfF¢F”a”X¹(Cw¬xÓ¯·Þ^xÆ`|ôv¤Ç(yìq¹RÀíȈFÙ´ .:õ ,od.JuÀÀôøà!$±éŠN[÷žð>C¶yNðcÿÏãì›Y›$V×Ï¿9ä‘5~Ü-ODa—õ~(ƒžió8ýgó¦$TŸÊä œÃ“EÆ24"1];øG•ÞºVø”RNÇâ³Ï ²AAhònä, Œ‹QD飋ÑT¨-r˜N¶eSÑSÒ;'¼êNþ@> 1›ú¥’øÑ:¥éÎâ-j8Æî%YO£FŽâ+öˆ qå•G­`–Pâí : Ï$Ï?Ñ0:ÝÓ--q‰òˆÿ­î9¨ƒm$´Ä&Å­·ÁÀKõ!3§Ja"Ì´“špRÆ.Žni¢hänÈËHÐK°‚Öåý=Mö¶Eqâ1w0Q{I·ìpÑlµÄÝ<§ÈÖe6MŒô,GBl´„åo_·H¨Ÿ¡-S†]u¼þvÅŸFEɨE"fŽGɘq:—8£p=»uÑ(tïŠa[ËjK¬…ˆ9»ôÙÆ?%LCÙL˜Ç½ H¡3¸ùæÚß±m[â“9눭3Ÿ0I_fªajôŽ­ŒÑ¦h°è–ítj !òüry¼qÜiîg¨½È+s»1ÍÅï)‘½â™iÍÆyàF–Èåݾv¨s—ïË kK*Žo$)•T ¿˜Ýí¹T7]R`hdA‰ëž;½ŠÚÑ \§ýÙ¼x°/“Ĩf~5ì™åák—GQ˜ump#ª"È·ßLg„ ÷K2ov¨g€ÒﺓpæRèpæê3Qƨ&ûáÞ E'ETp‘‡ÊÛ+¨·&)Í‘Æ][ªXnIœ-5¨Å¦0uU4©Ÿïï| ÚmFò?/ØžËWç}€#‹ /Ib™ÀC *u™PÂS£Û0¦C0Þ‰ëáš'ëyû‰Ð̵a_›ê½Mx‡>?K]À» Ý"à¬T·§ÒÛlÏécïa÷[ dœdKBõÆà\Ôu#°n*=!Þžª8µ¼ó+ˆÍȬ\cª&÷ h•Ò)Lr^JÇÂb¼cÚedHÆP¶´€®vpEA`ƒþS5q#¼jŰN%$U‹q2Ž¢„Ê0¦˜$Fa<(Ÿ‚Óe¹ùKÏ·b¿ÞVÝÁ+rxäí¹±“‡µ÷"· Ḟ¾c.k-± þÇ•èßãÅ28‚ôoOX è6I#ê"HâˆmÝרˆ„.ÂBåêq>¡¥Túx‚êÁžÓvKÂ4!¡ì5fDŒõ[íiãX“Na'àØµÚᛄk¦6©åàòìˆüWaR6„( Hîá°æ;RŠ{~†¹+ôÆÝXŸ#I‰›aúº‰¸æZ¶fÚ{"É[ËÂóÌ ÑØÑ?nާ¡ƒî‹\Y(&͵Ï)>% Vl²RbYØVk_䏨2?~ÍûÞÅb*’éÉßiFá'zßHà2q«¯â-ŽpFO`í6"p™cíǽ2î6CÕ2‡f Ã>¥i¡ŸwK|<¦e[ÙX] hév³•¥B}J;é™E¼s`ñ;i0Ÿ‡?ô„Ô—?7êu\ÝB{df=´MÔyÄ’3¾Ü%ã7›ë8!GãZ&v’®h'.ôKò÷Í´P^1R®Îþ²f:{ÙZñ!]žþ‚%ù+ÖCfEbJ›EL Ÿîµ «Ë–Xlã%©¶¼P’ï–j¬¾1¦àD—– S¹"ÐÄÀkÕ/Ï‘8¯‹¢Ï`blÚ'Ûk?ÚùÀôkJU¨¬ kÿÊin`«EB8Íí¤@;Ótd¬Ó“žÚ+kS_ Œ¸yòshÇ›‚Ö­P² ×ô ©»_D{ŒN°ñë2…0*,¹ic‘ô{¸ìH©î0GŒD¬Ñ…p†@eav”•üŠBºÃý9ãgyÁèA¯ÑWU |щ’Išy»n8å¢'ééMÊ D‰¯q—dzª­»¼Î‚JÜÉü•J‰EÞѼÑ_Û!ñÞyƈˆ[ï›tMŸÉs>£’ƒùî:±– íT*½-ä0x^±-¹*œHÍ«OÛ¥¶©ùéçv¢)sÔûŒö:‹œ€Ë*†Ѽ€ï_÷'¦Û8×Ö{—âíÒêKõôn5>©µç,·¿zÿìÑÚã&Sͧå9©ö†/Xˆ£Âc¡ž–[wû-ÿxm|æ£1NëDÈBN¯,97Q¯Bœ²>Nœè˜hDéu}ä‚‚?ªò%9èØ½P|:Ï•<ò>rkêW^³Ø*¶É™’}ç¨ñ÷“«›¤Èe^]Ç|õf%1¥€Ç‹¥-Z]Ìô‚…œ‰Ô¹‚ñ؎ĨÍdU¯ =c‘æÅ¹Ñþþý‰~eŠ›˜ùüÁí¥TJî`Öò§åÏ£ KÊn饅IIë¨ÚC?>°ë»0œ$NÑÁQS´þùýfpñuŸèû>ÎL‹Kõ"³×|DF©>àzØ†y©yrþNÁqZ§ú6—¡‡VIèÉE”³øilK¯ä'zDs¸Še–ê<á³³¼ÇËo¹ÖlêŒv¦gëzc÷cÁ“‰r’=HЯՅBá7(=ÞÍÇ8 ù’J\îÃÜ ƒÅ³pÇ}óvI 9œobž_‹K\ß8‡5S)æ¦'¤Lt¶58W4uîÿœH4„ 'Uå¨N ¶ÂÓhöÉò™yÛÔn< HŠ|án©ÌâkË’”Q½xû™¿‹Ašá\!`ª ·,ú÷`gÈ¢öœîð >­kHiM^ÅÝr L§Þ¬÷-Fõ!™Ž©5Mf8ua«YC²CÝŸdYúWky`:{E¸3.ÿ{Pr¿ƒ¸–à­_ÑEˆ¸2ÙÇ!µ'Öq Ƹ¸­« ˜ðÃz¸|Úý†}D=ñÉåˆ÷iF›„¹Ñð…ñ/-ª¡ëä«÷nÙ‡rAûÒUšܸð¨Ô“߯9RØ5ú¢¾«Å¥±vÓÙ²ûæzö„°vXísHøsvy¤ß †ù½mÀÕüõj«UÍÈùäA¹YÿÔ‹hÀMüЉ‡“§2ÊépŒ³+íÃþC&>§ÌÃÅ/Ì~ÌÝ«n¶Øäækµõü"cÏÈ($àa¨g¯¸§ ñç;@ÞCíÁVÏUä´Ð¡®UI¶‰p }òg0¥yaíú )²Ø¼˜-`Cƒ6Üœ7++Ô½ Nß=yHñªN8Rrò̹ԜβŠík94*,¾N ÜM¡¸aîRýÐ%äo<þ§¶ ßÏíµ xPu?wñ³S‚4ùÙšGf{[ïç*_!™½¦m0¿™Ù%WÁ-eñ8šÒ I’£bµ(n†ËØB ÃÔîÀ4àÜ<柣aóe5E´ýð‰ÚM<ùÓË0ºÊW–¹rB×´2›î<¼Òih,Æ_¿:$•oguÈTd`öZ]Œd¿ºQþ jïž²ùÑV7Ùo;È„@«¬c¡ [ª½Ò¯ŽìÍÜW3› 0⎉ (wšúÊŽÏSõ¯$÷c÷IPÍX:w—„é²&:rìÒ†½1DgN¯yHì½lOÙ;žòvaOb¨°–‡iêõ§*0H71ÌÞ×Π7ÐðѾîÁ®‘ºË\•åÑRù¢z\¥lUb© ]”I¯ÇJžXì8ݰ *åc%­—º|‹‡Waªí!fÖB™ûƒ+ÕÊ(´mɱ #yqù™ñ»ËîÏo-›æðs«ÎÙÞ¹îîþÇf¿øŠÊ‚;¼v}z`v†\»Ø>î]Ë\=£~càµß2ŒÝÐh¢îjG“ Ñ!¶Ú#ªô§h^6áêb¹}ã¥C±¢Y¡CYumþv°–=‡éŠCŒß%òîúLqºœ<¾±xUbÜkÉr+>Js#T›ý/ý$ß*’ SÞùú‰Å©áêóQ¨¼¶7µ}¯$W ­”UèÈâHpé¢s ¡ ›xßOe<¦ªÇ«Ÿ"µäüüº¼.æJö\»U{wkÉXÞ•Ý—ºÜVÄ2‘˜KÛñÚ»Cy"&H}-ç×XééœØô´Åٲٺf¾м$]2ðgv¦øNwšž‡CßÅOõÊWû›ó»X nÌÈðz­e‰Ð)×Ôá­‚tK¹]È"Ý´L Ô5‘“¡]eí’çä…GJøÐp7…g¹É¯çûxE*n*æ|/ßw²¾ÓÝÉßNWHöK.a:y3rf&ˆ“–×OÍg›®Í³jR¤Xl†îA©Þ-Y;ZZ;%€˜Š\¾©Ý0ËÑSÌ·²ü«ÇÛõ~NmÆsÖWûSXÈ;dR²rLq‡‰”èÙäÊð»ßŸeMŒÏüòóÞ0”ãúe›Aˆ9•DIlN'ü¨7}]DT‰4?µkÅÁDüãR—Á0…÷‡WKŽ~ÌÙ‹åhó܃]]ËçR öõ ìC9…Üã¢Ìðçe«A®ä•tÑWöü«6;ØáÔlÎKÄŠùJb¨¢MHá–i‰òØrj!4:1Ë .nèD¼B?i®|’ë3ª Ë7å`¢X„Ë\EÎÀ™{ï(kµbª›ÔÙ‘¢ïç­O@91&5ö Hγo§"{ñ­«4‚uÔGNDyX¡Yèƒ3®ã1¯Ê>hZáÄÔ+Oß°1*¼©è²ê3X%DÜ€’íÌ5…XòìpÄלAr(@4å#äQ8TïÄPºne„ƒ>ßà9ЯD2Ns÷H‡.ÑhƒE4hò½ÜÉ~7Ž×>E ža&(22ô.¸¸À ³•M4ϧð÷ÑËw¬³=)îzNÄŒãGÒkå ARõu "µ hÅÓäË;[Iªæ4”bâÜB¾Ë=—E¹¶$9ÛTܦâIY¯Óñ­–R0ã¶W 5B?åŽŒŽª2Ø8¢8Ñ¢f#¾ò½m½dÌÒµØòvÂÙ-Гæ4úq:ÿ;Ý}#ŠÅmÍ´–¥äwYßëN¾~vç·ºoe?_mT Æè+··è£dÌâz@IŸêÉ„éßÛ·¶lµ~“££'¸Xù2W®Ž½Ê%\7Kosl¬càØijëaŒ‡±ðÀq™w@KΙØÂ`]M/cý¾J|¬^ Ò‰‡Kµ;©˜IÆA!fi£/˜ Ï› ·‘F&YßÄÒE@°¿&òQKoã†OâÙp:Qú@]íÖ´w[¨6ØÿÜc¡öíµñÑmü,ŒI7Ãpeì®óþÈ Æª†T:u¡Ï•XÆvêhö1Ïê¹Ù„•!ƒÅ6§Å†ë¸H”¾ þ>€ø¾ß÷ùÔ˜šCÔ‚´I&}u¯Bðƒ" ¼ú¸çäŒ ,Œc¤ðz¼ï<âµjar§© “€× N $+×çŨë˜ÀÀ}-?°Š OKŸ(ñaúù, «ªH§Ù~•jÆ™=¡)à^û“ÏúDW§jªFuŒjŽXá§:ö¨,‰«Dv‰ñㆉ ÚG qî…׌1þuB†ðN")ÑÇäˆ1SøW:¼ ,GÑÔ6 ™‘7¨& ÒoT»Hz é Þ&]¼' ©~Ã9ÈJ† G¢­§ÏêÖEš~´fK1·‘šÇ«Ô‹–góÍ]Oö£ùä?oÂÈO›Ïô±àÎa™RG%‡x»}l(Aê}©—œêd[Ò ´ 7;‘)l¤áD–AšL-¦×Ià¯^ÖgÅS];ûaЪú:ŸóËòðäš åžûNq8Rïñ@j"ŒzO8_¬AJhæÍ~U˜ÉHÙt€OµVrÁ ÊÜCôÑ¡€³cоÖr=Çx)úÆW*@AÓd!К2TÂHš‘ßÔ¯áîÝ–ž$Šþ ªxòòq×Ir@¿ï‰ ®×§k±*..1© ?Ì…ÌØtGý»½îŸÞ¯øÏ5=Ãå8óÙ»†gxZ4JÖr‹8‘EYh× Q€W¨¥l›I‡ú©„f~sa™/®âº¹PrSŒä¥LœC¯á .½A ¥|b¶-S­— Ör˜Ö£»sFÇiÀ^´ÝøË‚OÌRô+‡UJìÁ ÅÆ€ÔrôwR„M)$E9˜cHkÕ| .Ù¾j„óHç‘ú‘ç7½‰åæu…ö¦ãd£Æ´€õ¦DÎ@Ÿ]ºÝëLï}kï †;}?ŒM”É¡-õÔÛ£ÑK¶÷õ߈Xʰқ±ƒM.c˜QO`ƒÛ°ðÈC$ éžsÙ@¬üB.¯xJ/00Þ+¦ÑyW`Ä@P1êo¹¾ˆÄŽšºjà}Ä ?5;Ï E #SÂèá%p’áïW¿N{g¸í.>ó¹_Z‰K¡–D¿ÿ¯ ªåKNüÅ:mâ‚ÐZì˜îH¶IüÉÑaôÈï~ëÓf;wG4k3«ß %v»[ñ>s=ã_@;ÜÇxŠùp+®$¿Î¨&ë y§Q´ŒZ¯úQäK‚Ñì0>²q±N¨ÀÕ̵*ÏÊ`®<ä¼`ùþjK–ƒQçñξɉ·@iMüÃ-¦æXM!Í^Ú¢¡Löðt4TjеÛËÚ1XPøš©§öQù+cŒ˜r̤$sfFusGâ kôj`v0….—·î#)taÊžv„]—ËÅÓ÷ÚÒ*R†iX«Ýn dƘ„,ÓrÕxc’˜ÄžîÇ´G>edA±¦Döt÷æ~ª-RÓI߆÷ µÊ¦§b­×M¬«cúYê¾,VXOTþ£ý¤¢ÍrJ—_pAª–è½.þ£¾ªq2 ÝPO{ˆ7 Þr¬â7x-Žò£úr½Žôp’5Þ¹ ËèÊhE0{r±¡,’Yµœ>ùë펚D«8ùƦŽûXoaöI-Š`jò°œá5Ãûg”Óémñâò,²¯ezÁÝdâÊ•æ79”u:’ÏFŸQŽ )q[â©ÆØƒa6ÌLªû«Ž|єߎë!LVçÔÍ“êQjFf]!²"jýÊÒ#ÙÁŒf“ vÔðÖ˜$ ª¼øøièùh„x~ü˜q¤\9LbìÌš’KIN’KŒC©] ³·¼º×|½X’sËû¼RôøSokCþPÏWC ÿ&E©Y¤|•G®›¼lRBÜ»ŒíÔ kC¢ƒýëæòÎÇ%]•OÚß6ôˆS­Lù'&6“dšœ.lœÆú»Á‘IþSó¡Çåž^Ÿ™/_¿|9:ÊÉü7zÑÖ<õüYšÂ‘úoBÈΙÆÕ>r¯Ôœ÷D϶ylÏ:0/#ôÖm$Yb®UVËT܈ŒÉ`æ„X_ ¿pÞgÛÍ&:Æ<Á¢w¢Ò0ÏgñS{ؤ¬ºšKƒ°ea4"òÞI¶Ñ¼ã³ˆ´^uûVH³v°K§œ"ª×]ÉVßž)çÇˈñ]¨Kªþ¢ê0s¤Ë´‡ê@ëÂ6äp&;(»Ù:wðýþ ¾2·dæ$WºÛò^~ «æÎ÷)•B£‘uè¯$ƒX¸-:?‘VF„Ë¢…ípò¨M ~ Ê´¹h›S÷,šÑú|âåÉäoŒ¬=úK3¾(HçÐ?v©#ßæE²¾æ`€œmýÓEHÓ¨„j˜ã&’p°÷g9’§ ™]âHëÚ«¬é í7çׯxûùfMq§ûlò©Õ­Å: ÔWHúqB ;f“g=R~¾jùÜ8tû½»ýmÑØœÍM2Ê—2< zç„táPë}üôÜQ®_ï yÓÀYqÒe…¶VµYý4'wœ4õƒY WÖŸ”; fâùqùÖèFP/£ÏNmƸY_ùivR(Ì‚ùBk6‚Ô$Òâ¸Åî{•ÀÖTÖPâü ë$ ^ËëYc<«±­Ú»Ïp¤CöˆOi£Ý 7.s"y~»¢LtX@ÏíÜ”•Ð ¼o™Ÿ…tDäæ²·EöΜÌãá&s£,ìÇŒ1 fMPnßÑzåÔ»”±75Áã{$>¢¥|ˆî†û2œœ0 fûbX_ÚžUÓ”¥qø¼ž? ‡/âñéxûcœ¾‹N¨kˆÌ·%’Ë‚Q±-á »$xý>mÉ„ «¤PÓ· àÃH3nZ*ϯ"f>¤+/¾/à÷™ßVá"Èx»òIÊûÖ¥ÄXY{JœéÄy¬‚ð£d:ض‚²øæUÀ#u ÕQCmБAÔ¯œÐæ2ä¦g#½¬on~¥›EGÁ m$Ðé—ò›ÍlCøsRlAÍݱ †é4L?뵑IöÁ†Ïl³y¡ÅÒí]¤>ÖÔ7Wå³úÔ•I¸«õš ’àDH­Ýœ’å¾²4ÂÂåm /6##¨tXÒœÇp² PE9*gâ”ëÚÏHɂⰖ–ù5Ü46•Q²ÔÏ’ãÄ!¿ƒ†@Ïårëæü&.ñ?jb(_!ÿX°éëÿ öZ|fÞ[Ø)Ü ý :ßá}ˆ‘¤Ú#‘Œ,‚TÜ3ü¨WÔ|z_R}”àWæäÎÞô[kêØÅ"J„OˆâàQ‡JUŸÍñ*X+ãFÞm]¾¸>¹Þ]Œå޲1®SØ…eúOR06“î?‚`äeÐʼn)©¸Dê'¤i«¡l©½ÁŠÐ´*•2ÁÅ×–ÓÂYÚ^£]xw¸ý›Ie¤†;•ZÛ×ËÆ¾óóÊÎdŒØ†L«o%^…=Š<®ÍpÖÇ~ÅWâ$ê@NÂXÔkªÐŸ“ƒÚã@ ˆ­×ÇÕ½sÉ϶óÕšXÜ *0=_$ YŽhÑ KY ™ —j_PPÈóuW¾á塪}œX êƒù’†å´¯ ?öV¯6@Q2,Iºä²~fYiRÄÂÊ(>5Yöƒ`-|4.—3òù4»ÈF9’Í ýݨ!Ðk2Û£K ì{o'˜;ø$ÄѬ-r‚FŠ‘~¾E{6÷6ö«}ÆA…tü`‹«AüÛN19mß3ôïÑÝw Ù+e k/|¬=áhŒÅ8˜.>ïRê…átE>Êê®h~DíÏxÅ ¯KíLœ›™úQ{t4HÔŒÀuÐ,ð¨­ym?ñj (‹šs:'pƒ4GæèX‡NR ˆg¤àxBñFº!øvpU(³R>/¥7ã«.¬äÌo׆mbÛKNõ0Ð<¾wˆqȪÑâ3# Çgr‹‰[š: œ«É%%’̱•&¿sˆDù2(è=›•®ƒK2Gñ“0§¬Ž)¹à¬p¥Ýù&|bp‡K`¤°Ä>üz<ÜG?½-zÎ2þ‹ Šú’! "ƒèíýµç qQEî¬÷SûÍç¯Ë ˜ë÷Θ­…‰«J–âiºTfÕ_€fB6 ˆŽ"_ɧnûwæõÎp#uÀø^[©«ü†Ûñ6ŠÒk׎çè«?><Þ*¸ˆ®Z½Åý©qÏÌá²™xÆÒ•·M…;yX÷Ié ž¸¦jš§Á»6H'àž÷Cšƒ±sp€OTP‰ µ¼›À^ ãip )¾ãóû»éâB5áùÃ2¿¤Žô”) u¯‰á%gïÍÁbj>Hs²üбU¥— úž«ÜÁކÉIí[Ù‘·Šsô»mä:?¥Çl8¤’c;8.'ŸÔÒšéô™JæÕÍÞÇ+&)ô­GÉœí-†=4̤ ‰îò>.ío9¾ oþUF÷#àø:tUrCdú=Ãë]¬6è–»Ô,Wáw35cPÝЋ¨§÷ù} š f®Úq¢žO¯€•Øsh²"¯×¾Ã’Ò¹õ4 .·ýNóǨ‡íÞÜ 5X}´­R çwpª \2×þ§ˆ ¦‹Ý¾#䛊xš^ñ‘ðwÏ*b—›ZÚ0‰i$Ëô¥¶œö?øØOšõpžáñ&ÍJÌm}ßb#Üàk^£ñöÖ‹}…ÿ?.9åµ endstream endobj 280 0 obj << /Type /FontDescriptor /FontName /WMPTML+CMTT9 /Flags 4 /FontBBox [-6 -233 542 698] /Ascent 611 /CapHeight 611 /Descent -222 /ItalicAngle 0 /StemV 74 /XHeight 431 /CharSet (/C/I/M/T/a/b/c/d/e/eight/equal/f/five/four/g/h/hyphen/i/l/m/n/nine/o/one/p/parenleft/parenright/percent/period/q/r/s/seven/six/t/three/two/u/v/w/y/zero) /FontFile 279 0 R >> endobj 281 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xÚS 8TëÞ±Ûì‰ÎÞ]EéOÙQÌÕÈ-Oã2î¥AR*Ë̳˜Yk̬1&Q®;¤]‘RêèN¤HØ…JEI]„Ó–PÒ.·]8g ºhŸç9ç™çYóÿß÷¾ßÿ]ÞO‰»‡1‹‡ùÃl Åidªpó°q£Q•Ê S©t’¾¾'‚ áOv’þX"E0Ôâ+„­†pÂfáJ †g™Ð€fjA[eA¥:•jþ ˆI,€‚ð€8c(,%éÛbb… ààóp ÍÜ|•Ñ8°D°áB(pƒp,"^äBBàqWL a`%Àq±…"—ËÉHJÆ$Ö†F@ŽàÀ¥°$æeÉ`-$‚'K#“ô§‘N8<0>.‡$0 B„ £R‚"Cy°¯'W°N £`× €˜l ‘iŸÃM²•tœ q¹˜H ¡  |DƒulW2Šå)PŠ|(B„?OlÖzNÖ'åJ1.%K¡²FŠ2 Ñf{”g‹‰D0ŠKIÊüì Ì%ú® L7ÅähاAy|e<™˜â…"Á2ØÉnC˜H_l0˜TÍÜŒà`‡råž 1<î¤)ÍD áabL øDp8‡‰?R˜ .‘Ááa_;¦ÞH4à!\øÃJú0Ãü‰;1  6S ùÑUùû|ÚB(Œ‡¡BÅøøˆ)ëí<½mVN–üÙicƒ…‚0c&›Ð 2LÀœ8„Oã!“y|ÅuBùX5‘.ѧO)‡LjÀ`rA ÁÔXk1B¹00ø"t_*“Ê%>´ÿ[îã”ÿ¦re”ÿ)ôo3bË„Âq¿Áào~H„{™–| ð†'Ö æ!2Ñ·^'"v€…?·‘²‘P˜çŽà\Á„LÆí0¡þ©\{”‹ñ”kBgšH"$*¡:1°0±O<8t\†€BF1œ ± |LBRŽ„Ð)…£4‘¦„åÊ$b;Æ'G¼ùé>¾Š0 sIM1®eL`~LÉÇK,¹qG ÝD³¢/a@Ýû¥ý‚®õQ¶VCýŒS‰OY7;‡þ˜õ†ž9V´q5hëói‰óš J¦óýÛvÔÍZ=üFê*£wº\¿¾Éòæ½+æÜ•¬i0œoÜÛñ(ýµƒÕ/Ź.Þ©-/ì!k¨Ô$%ªi™™14TbJY饹6y¬†Æ2§eÒ¾55o“±_¥Ý¹Og¾¨xvÞhÒ–¦ÓÝ­)vHï¶>üªÜTÛů4è¿,·×Ùg5Pià/­öXíðgðåë¯n5É 7D·û7ÕŠ:3èã¬ya­îÚÕó¬Á AËMžª5oܘ|þIýœê‚_¬¿Ô'{wζÅbÈAOliEþiGsŽ 2÷_fýÐj4rg¥z9‘©îžGf[ÙWk3œ›Úêî}ä/J9hþ~?ûUk‹”ÿ|4R[ÕÙçúŽÙœ¹­N•T䨴«@_Þ_šÕvµ²éö½dݼåìêû§cpÃë"Ÿ=ÿËÛOÇÜøè›y\ظ+÷÷Št38cZÓs2ø.-âäÓ±(¶'5»uÊÛóû]팴Â^æHÎëbõ+äˆM‹ã:wœó¬²ÝUÑzú½.³½È& í–[G6ZæøÔ̸9²ë!kÑ&ìléÌĕïÔ­¬Ró?:îIÉ=tm/#X€a– RG·´æ¿"‹2dôÌtOWµþÝý'=§³×núU¨$ǃý¹/:^-ãú2ÏÜå¿ÍYeINVyé<ûª-GDUÉn«–+½¨Ëqcé‘xÇi½õÖtûéz8³güëdYïBR%¿öG÷äMܸ}ÚÜ—Å—ôʧ™úäns7Žx²ã­ÂÈæfkPòËâÍ*œ3³SL‚žP­î~ÿº”©PoT$\1 w¨À7W´óu}}ÎflYSW-*Nêyi™/ ‹èŒÚ}½x¬éý‘Ùä‘ýzGîxVQ³ëí†Ûæ:þûñ3¯ º÷yFþ¾Âœ9.^oŠ¡ÝõÖ2jùµÍsƒ> endobj 283 0 obj << /Length1 721 /Length2 1124 /Length3 0 /Length 1695 /Filter /FlateDecode >> stream xÚmRkTSg-T)C‚F†Oh„$fxŠ"!„È+˜ƒ ’›äêͽx¹Á`!->€º$¢c+¯¢`‹• ÓQ¬"•Xj‘‡–—ÊØ € Pèšµf}ÎÙgŸuöÙß!¯ ÁPB‘ Ñ=èTšà‡l‹ yÑh€FÝ`B&³pHHÀ,$ ?‰Jt`Ðht2`a©8,•ÀE亂XD(†å0b1K‡E2°1===0=MAÅ›¨ú&>B Œ@€Å‹çFr€ '2p Â…à)RXÂa„¦A®@‚áYL€CÅð¼¦4ê‚4 ½0 ŽÉA[°%$*RØ,O Q1Õ·£DšŸž ‰pùüvî€XŽár”²-WqåbD5¡Ó ’¨‰ç¼o\T‚¯EX¬H]*é¥éõ½‡®@ Iôl‚D åpaaòTá C8 ¶ar!ºÄÊa$ãÿòþ`p ¡Þ‡-¨Tïm‚ÓB`%$æÁ„Þj‰Ñ[´€ÇA‹ÿ‰a…|±Òû¡ÿQ1†"ŒÔ¯±0Ð3žËÙÆP–`¡ÌFE˜F¥€Oè½ââe`¡Ì‹׳$féšýÏ?}%/éùŠX[¹(rÅø§“Ä©‡ûyn-Ì3çF.oÝS`Á¡ÙYþÝ+Í{ :Ú¦PŽëŽõ–§·Ï‘ ~Ê%sìPÉó”ͺdž¹ÅúHãdÛdYIEvê@nü é܆÷ãzSÐÆL«ð†»5uUAÛ_~jð‰ïí´J¿½EÁœÒÙÎû´ÍëNÝ–œçOÙÛ:^Ñ ñYöÌò½Æ³…£•}"¹Èº] Y'1Ÿñ¸óÞj±Wï¥-›”4Ò?%[Sª‘{!Šîs^¦gÜlrKK"Ïs×øæ=¨^wo{Äÿ¶éfPŽáXô.‹„5W¼™ªM®wΩ@[÷žßÖ®r{štÖÛ'0ëÛWFµOÛ^ÿí\5óÁ›ÄìŸøˆÙÑÒ ^ö›ÄþÚÔâd–Óðpù±7m”&+e+û× çZ‡Ã^$¨;s?¼Ô˜áš·5^z4åò¨uó1/íQ×ú]‡>öon·û̵Ðîûû Yª¶Æ;ߌìgäĦD¯ jìΗԷ͜ͱvßæ2Û„ˆ¯”îThÐ>ðªÅ¼Ç|‹©(ñ wÌ韷î뎭}‡¹O&õô¯³¸ócvýjþýáAÒÛ¶ï¾¢8ç~m)ùlåÞcCŠš² d¿r†ùÇ-*TjU#kfJ³º„ÿ×9çkΛ3t§Ð6ãljuµùec:@=fr²¹†¥©°¾œÔÓi¦Íê®®³•õ=‰¶Ì 4Ô 7Þ`<è°ªÜ}nú\aX]5^íÿýì3b\ ¹ÿ·¨U4xKYeØñÖ‚ñóÌ0›ÉêÿÖ<±ñu6Ùt©–Á!©còÉ~g‘&¯Ñ£ÛSwf4 ~¹õ2ý°×¸gû¯s7 ;Š:Ž´_ Ü]Öûá;»tέã~þKA ÷®šÑÙ’1Yu¯°8µ>2Jc•göâ¤6ó·_j&cwè®=CqéúÖèA3ô¯.Ì*÷Íþà‰ˆ³9ý¨ZEÌñ(î?Ú”¼/Q4UD™ý÷ G·ædÃ"üë|¥‡ÍfºyuÕnÔU“#&]ÿ>ý¹ï„jï˜Æºóýk»§H_Ýò?ôñ`•Fg~k~âŸo™³éSÃC‡w®=#g_/¦Œºdª]ïžöùD¢ã–M¯Ç¸™&‡Vl˜±)ZgYµÖ;6sr°3 ÈyúKØ£f÷÷ `¡vHå}‹ M–KÙŽÔpÖ¤rÓ—].êÓÆë«6]»­I(›“ج8>{½×º¾Éó•¹"·^p£ö&]Ž™ª_»û„þ(s˜ Ÿ¸MY™‰Ñ’èßÝ߃œ»Xm}€Ä)­¨mLz¦¶Xcˆ[~Ñçjâq×áv÷Ù/ì%Ú1GVm†ô£ /ùÝ}³áÁ÷. ¨dϼ.(L Tnù{Zp endstream endobj 284 0 obj << /Type /FontDescriptor /FontName /YIGRIT+SFRM0600 /Flags 4 /FontBBox [-210 -320 1719 944] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 50 /XHeight 430 /CharSet (/asteriskmath) /FontFile 283 0 R >> endobj 285 0 obj << /Length1 721 /Length2 1158 /Length3 0 /Length 1727 /Filter /FlateDecode >> stream xÚmR}8”ùF3¶3¦"glê×â4ÒðÎ0B›0ã3_eb‡3ì|¼xkæ}y½3™-C64E˲'’ZìIYYêXmÖ))6çòyRR„v%ì,{ë:×ïŸç¹Ÿû¹žû¹åvO %xÊX˜É`Ú@Î Øó ?äA²±£XZrpXH ʰ3…% ŽL`A“b 8X¬G¢c@[-ƒ D*” 2!˜S âð±B¡pUÄËmp¹‹¦)†ƒ(D N`ß'À н/…q¡ÉERD ü1ŒÆÃV Ãt%b • Kšâm–  '4¢pLü=xnž<àÁ±åq€•?oM;JÄ;kذ—-m· k‘T¸‰Ö¢µ*ž°ÙP˜L AÄÁÑJ±]òÍۈ ,‘Ç®–4‚â5ú]ã¡ÀQ¶\* Ê`@ç`²X9ãÀ“À8 b2!ºÊÊ©òÿò~cøBnh´Æ9hBâ=‘X„«£„REËx(¼ò/þ°‘ËVúaš•`¨TùÛHÍËmCø\N°õÚ,—=P1&AÐhLh¼â’5`¹$DV®gUÌê5æï¹¿À‘Ù,´ôV#Áï,ww,áƒÙ† L6Û8Ù9&þ\±Ça”X6\³Ëj¾|H0œ‹)}1ñž‡ ¾û¼2ÉãBgÙº³ãÓCÖ™Ú=íMá»1’È'¯L§x¦¥GõͨD{‡Ç‡|¦ê>æÀúO[ÛÔÛ3Mg/šWE'UÌ8ÿ®&#â5)„&&2ß_ö÷¥íl³/>÷¢Ú7îë½¼˜êO+nÜ"Ss{»fP/+ÁŽEa‹úð¨õejgLzÙkѾّ>“¥iÃú–´È˜²JUì““üi6½Ái¨û:cÒÛ"/±‘ì¬$ÝDöçgäß0à(Nw ³ ß‹þ-ÖË 4æ@Gê3ÙŸ ëõzN3¿®Ë-=wªõ`rv¤0©™ßB9k€ý-ÃLg4óêU<œóvvéPGêZ?ºe¸¿Ø +/çDÏ‚`·åÇ'‡wv³bcŠ"¡šõã­Ç븓Éc‰qçLZ³>3:Ült!8¥M–w‚ÂxÐä %Û.dÍð:£úçuÂU²ó™9°Åe ÍJx¤—¤u4¢< ûm±¡Béiù°±ýÁäž÷¢ññ£¯š,sUÔwŽmˆ ÷‰+ªµˆ¦w£~ZÖ|G¸6¡t—ª›ÙØ{EgU:™œ9Eù‹J´¯$¿$¢ZÌ÷¨Håqw>/y>,uaè§Øš_™8u¡h<í©}ªëÌ–ï'}c¥èQu-Ò¯-:®O¯É_ÔÄy¯k [<°xeð…~Læâ@©s.ܺŷ;[våûë¶ú}­gÎGPëÇOÓL.%µ¬›ñíÞ™í­Êní$]Ñ6'vç8 …¹ÑgŸ#Óì»Ô…4ýÞNçnB«îL2ù&YÕ\\¿Ó­œÔÊi;{ ¶ÿ¦ï½_¾¨hþõå=Ûב Gßf¶OP©:>“jIû€´£Oì8m#!÷ž|ýڳĪ~®9ýZâôe|îóúÛU-–ßÎþWƒîûÍe\­4Õ-tv9FM8Z›øƒKÏÛŸ´?),{h¦fý1{”©j´þap^@•þÉØá¼éßÉ—–K,SI|ÿHm^1NégÙ¼ºQØoTùãPêó¡—ÛòûuÏì§BÜxÚz?+Õ»fçªÿ®ÕQRØHëe¤œƒõÓdÓõT½ê_Ö…” LÚ/o–îjpReß¾úZ¯‰D^¨Û÷¨Hw šr«¦ìŸ:›¯ ’î¶ûYŒ,háoÚÉJùâ×$âá¨áKjþöym•ÞøMa|ÿ£z ~*/¿Ÿ8Sn<ò‹¬¯“®¢gÆ=j¸¼ÛX(×gqS‰a¥¡ÅÜ:‡m7Rk¸ì?õ€²ì¯¶pr«kÃý³ggöt”CU_]¨(ðÜvŸÖk¬xY>—zøœ(ô«ýüŸs­Ëx]y8mfÁìVo̽º£Ë  endstream endobj 286 0 obj << /Type /FontDescriptor /FontName /VYODCS+SFRM0800 /Flags 4 /FontBBox [-203 -320 1554 938] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 50 /XHeight 430 /CharSet (/asteriskmath) /FontFile 285 0 R >> endobj 287 0 obj << /Length1 721 /Length2 4672 /Length3 0 /Length 5264 /Filter /FlateDecode >> stream xÚmrg4jÔu :Ñ£ ¢£DÔè%.£E‰13Ì 3Ñ£÷N"D'щ5¢Dï½Fô½^7÷½÷]ßZßzþœ³Ï>ë쳟ÃË¥ŽAã!îÎ0HDT`¨n  ˆŠˆ“ñòª`P<ƒV…â2`ˆp€Äb¢¢ 2^€ ÆÙ‹´³Ç`‚@€±ŽD!±cŒÆ ³ȹºº*ºâž‹`Ÿ+ˆ\7"¼=`‹tBTôôÍ´À °@F`¡Nýç6NH@ C qA€- pú'À0h8òoM8‘?Ю,þZ˜-ƒèªA”ÔõÀ€šÊˆ Іt4¯ÛÑxœÌ5âþÞî>ÿ_äý/²ù/ú¯Šuû'!p$ °AØ!ÑdþöM m‹<ü†?wþ·t-w­ pí¡ Ž°½f?wrCQ€€ åüÀt1p 0À  èYPÒÉýÿËû_†zíƒÚîÚ9Ñ $N醀ë#ñ×VÛB®-úƒ› þù]ùõO?âÚë…cÐNîÿ;òz?èé<Ñ5úïþ”ÕÐ0 ‰¶⯽„báÿÊúPä?×󯘯 ú¿\ŠÇ"Ýæ¢"Ÿ‡èßïßÈòÿXÊÊ7OaÐ#i€°¸’|—òþäžc±4þá×»ü›ÿ9$ #›ÃÀd’ªƒ |Ôr o ôY Æ{·Íi‘­öðgK¿X÷ ¬™/(Øûýlä¿oÎkí}䆯 (Vº{"¹B-ÇXOÞñÚù”Ξý•uZjµuÓ˜ßÜÛÅ'OMúë{$Þ¦ÿ,}â’'O«Š´Î¯m¾E3;1|€Ö´ä§KyzIø!TB3`”½eóøda’0$3à;Å6/Ë3ûì?祳=»Kqr“ytnèEÊGuàÊ2ËrH˜tnèÞ%Mb’·÷ÞÔˆ‰Ìp¿ÄŸsäÚ§é¢ñÐ BJƒæ ;`ô¥ùeî`FX(óŒú¸8WD"¶ãûQã/ø]ýà*\Ò±aÎÈòR„¯ëƨ™oV@~ÊCMŸÂ…bÐýøÔ™eî3'3'>]·±ö¢ã—}TJTãÊ!™{ôÔQ¯ñyŦ–rõØžš{§ } ¤¥Ó2¹%.ÇE“vÊpùüz#Jõ,¡ï™’ƒÐÎ †Jc9u}-*žÕ;òÕÌ\‰­pf4Ñ«&Çwϯ,¦º÷3oäý…;Èô!Àï@ æLG€‰ßl¸É*É÷* ³7¼ï$ÂîWWpñœYQ5Ïš‘“5#­ çµoŒ9±-Ͱ‘Eq?sëHf =ûˆéR¼=]q'b."_{®88ƒ  æ8ixxãûs=™Å³Üe2´Ëèð6R>-M’Ôœ­y$l£$Hâr*Rú±©e³KòÀö¦\õw¬èá:‰(_é¬``¶Mó:‹Ç¦ÕB¸Ô²Ž¯ÃmhRÒ‹±§²@NP¢ „×÷‹ÒÛ>öÑ·šçUí%' 13Ãatã–Ljg„÷öt4Où¿Ú "ÖßÈ‘ò)±<­ÓÎÂþÎuâ·þ¤@V°ÝÕoYA¾38™IôÞG ï ²4_Ö?)o~[u³.á…¬p­Läñ½w¶ñš$,t«tQ«[ â\6Q‚ßbÔ})ÅŽî72K@žÕðw­>T¦8~5,N˜ä¹c-Tül v#$IÇ2<-ßfJÊLZ®õ¨®Øæ‘³lœru^ŸÔPd<»âùÓå=û­†‹.m1ÕMMf+k‘ùm(¢»ä=«[£3’/71¾„±æ,(ž¥m¶}!†˜ñ\Î.žÎ‡Ú”e=D‰„{ŠÏ‰M’^– ðÖEÅ2µÑ !®ÒÂw/ö3+¥§“H„6öì»= íÕMÁ4öA'àZæ‹,‹§DÆžú£iÖ*Ës\F.À® O¥Ë÷â¥N¼²ÄÞœÕ Á6 …Û¹³,öíÖW!£#%X…f¢oÖß·90 )!Usá*ï@¾†>i}áÞŸ|GvÙ‰-ÔÈzï Cù-d9œDí–u1N,t¨Aªª‰² po%ŒÇž†MÝ©° vI°üeʾË&Ä´6ºðÙÔòflVk•;‹âç;ÓÝv…þ^ñ-Yl¬M.#&Õl¬¥^ö°ÇDÒ3 KYÿò¾O¢•ôhËëòlò¸ýu9œZšåM:IQþt½ûf\”ÀjÃüwÉìwÕŶLaG|˜-;+ƒñÛqÔmŸó¹¢@Ù§µ N¥4 8ûÇÕ$ZT‡cgïÞ3-K¥üªøV˜nÊ*?ÉC¦¢“Œü•Ïm YÕ;º’S^cyס‰8'"èR\éRÏ.E°(/^,j&NyûŠøŽ[ë™§îºøÏ}çþ‡ƒxØÆŽ0Q;Ú>vd½àJKoÍÂ×7f>êÐ!ʵ–sø5hêr\TÐù°ÜØÅesn¥ÙëX´×͈à¬ï†œS)lY,Œ÷ýW%!%?íòbüŽ<ÈW¼‘Ó’º,þc‹{rNèå=˾ò^kNtÈ*tU"=ÆìIƒcÞÎÚê#¡â †V#ô{7¿Y3÷2LAÜxiÛS—ñ¡³¶mÓÒh½Ÿ‰§¢NúˆL’´Ã8‡²„œ¼ß‰ª_tòIDíÉp¤/pQ™,gMÉžéZX¨JÆXõoÊ7M2õmÿzC-}¬qõÁÊÓ¹×úîU†ûßm P ¹ˆ4î‡=9[ð+ƒwm™Ÿ+‘²Ù¢­¼¬ÎôþÚŒ®×hí)ÐÏxVmvÇÁæÝÒ5ÊŸßðبD.ò¶ÏmC9ÿÍ+}µÖßs™Ÿ#®@’}AõïûÔ½šÀ tŽž¯ƒ‡1Âû`Sz»?xUÙqeš1J§È€\$þÍ©-wRûxýÇÆ œiVúÎÅn¡Âø$á|3"j‰[=ts"$J5Ñ<,_{c@QÄ“GmîU:§I9;‘<’©ïJŸ­ºá±2–ÒztÁíñ.‰áYYò$ÈÀm~)ü½WŽYv\0 c»³ÓâegsºÂÈ_¸ýiéo_A|¢¯/ùètÃéÍ7÷•A„ˆÀÕ£rÚ‰üËÀY´»á"RMïæi|#!sÑ@‘i€ F™9P¬§Ê›Éï¿ùŒˆNLðW²÷¸ÅNíNu•ÀÈòélÇÔ¼ÄñúçÖšEMÐdo‹œÀïù#JR¶ûöž8›ÊKn•G¦ ì·’')»ëý_Ï{ òKSÁmíâ¹²3,n%K›óìGt~ä»ÀÛöôÙûÙ·7]„äñwœÖyæ÷‰ã=åÔu.G5TñnOMúJŽžOi‡÷½4­SUA}pä‘0AxQ¡')ùÚƒb”¨îÙ€>D>µ±bÝ6ô0Ç*/ë꘤”ùép&8³­yëÒ\¼/¦Ã+5¼D 8®ûÇ’Üšªñs¤Ï©µRúXK¼ÿ®I¿ÈÄõÅ×HdÝ¢xÞà›ñN®»» m&·¼ ÞV}ih6{ÆÍŽºÎQÍÎ Öëz|yøÅ„½'™Âú<3®röeh¡;­Xy³3ú•ìE÷ ="œë×A`¯.j÷“æïËbZ¡©×î_+Ú2fÝò·˜%·–÷§vãI^Ù‹7‰Ò¤zÃ3™qä |“…PïoÖü_-Ég畈—ƒ eWG°Ãßš&P¹‘J/$¦µ/µ32¢pDÇqDwu–&:`µî¤O#4) ½é=l·‚Øp7•‚Xø\¬~\НÄmÕ+Øû™r›¹ð-]òÜhQ"ßeï±ôGúùÄ>xÙñT˜h§Ž êžà›"#U…¨¥Ôêd¬—½5ûi\*ß!³ª–£Ô' ÿìx•ËA™‡EÔÉÛ@}oUïÅ4îÇgnô…¶ÅŸ5¯Y,tñ§lå·“:¯°/I÷šZ¦o8¬i‰oœ'’"ó·vî){¹g¨þdåÖXߟØ;¯ÐÙºEÅ+uÀ‡œ‹7ô×{<³Ï/&Uãi†ÑÝ*âv|0ï”l ¬§éÁ•›ÓµºÜ(k–N1²ööôS#´kÞ><éEÅWA);}:;%lo£µÈ ÈS½ÃË™Ë=Î/Ù³Ôm6•~™¯©zžü¼ñþLñâ+§]qWCoÖO‘b96ew?Ý{Y9Aû­yºý|Ž'?8*·Yf ’d‹W(ËâjP ]¨¯~:eÂ!=ˆ0ùÁÏiټ౱] ²ëP˜àÉEôËf-|ÑÆ6%ý~¿ˆRÇ)Ì'®µ¦ßryhz`“±v,ïz5¯búpìhѵý1¯[¦é³ô$¾1ʪÌ{ÜÂJb˜~ÞÔ¿Ä ÅÄs«;îÊ_<9|9t©«*°ʆãûXŒ|ºJy~¬ï˜Ž>üMÛ©^¾L(ÍÝ¡• £Ö£“å¼K”ØHÚª©¥Ž«z“ÄÔ´ñâD™jûøt󀳸±Þ˜yÂÌì&m=¦t9¢©óù+–rã‰é[Âl±ƒñS3΄ôQêD¡gy+3f^x_«ýhiÔÞ Ëdéd”­3ô¢­š57hm ¢OŠÚÚ»;=Èþ›Ö×FÖÓ!}ê¶7;––µí\+•9n"jqK5T—¤õ«ãÉç¾ç?ÉêÕÈ"Å(Ælœ ,A™]ØDn,•š’¿,fhéa‚¦P¥­)¡¨Fe‡¬¤ºèÉ»3o±ª›5Ñ2Èi@{;H8dg¿%Ìö¨“¯lo V¿éãÔÁÚUÜÞ{â#g‚ã–öÑZúîß#KÍðÑ ¢‡Î2f}õ{U Z³I¦Ý´ˆzEW1©M;7I^³_wó±›^Ã1ëò„cÅ=åÕÿâô!m endstream endobj 288 0 obj << /Type /FontDescriptor /FontName /MULJMX+SFRM1000 /Flags 4 /FontBBox [-189 -321 1456 937] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 50 /XHeight 430 /CharSet (/bullet) /FontFile 287 0 R >> endobj 289 0 obj << /Length1 725 /Length2 15948 /Length3 0 /Length 16495 /Filter /FlateDecode >> stream xÚm»ctnÍÒ6ÛvîØ¶mÛ¶­gÅNVlÛ¶mÛZ±Íó콿ý~ç=ãŒù§ºªzôUWWWwÏ9&‘¸ƒ½«ª—£=#7@E\U•‰‘‘ÀHÏCF&âlfäjå`/jäjÆ Ð03¨˜9˜˜ÌŒŒL0dG/g+ KW¥ Õ¿•u[#S+;+g€ºƒ­ƒ»•‰%€×ÝÝ]ÐÝÅÞÙŸþŸN*ffWK3€¹•­@DAQKJ^@)!¯0³7s6²(ºÛZ™d­LÌì]̨æÎÛÿ4&ö¦VÿÂäBÿoöîfήÿ3wv°ȉ© ‰+È«ÄDTEFö¦Yɺۻºpÿãmfâêú¯èh®ÿ#Ùýdü?ÒÿX=ÿ#ÑÃ01L­L\ÆfVö0 ÿâMÊÞÜÀþµ©›ãMÿrù€ò©¦fæÿx»ÙÚÊÙ™(EìÝ\Íœr¦fÎö€qïálõæ¿®FvV¶^ÿ¿ÎÿÇCÊÕè2„ì-þ¡ñ?*+q+O3SE+×øvuv3ûZÃì?s#gfjåf÷ŸîfÿpòϬš:ØÛzýŸÿ åßã1(È«+i ÑüOüÛ,foâ`jeoPqý‡O#gÓÿQüÛ¬hdõŸ ú/–ÿf€éÿ¶åŒ\­<:ŒôÿJÆ=ÿ•ôþ¯—°°ƒ§73#'€Ž…ÀÄÂÁ àdáôý_pMÜœÍì]ÿMú?±ü·ýïd23ó43Y_q0á ¶Nm -÷+œ«§™›1T£Ya^î¹ÑA¶²458ºÂ¹WÅÉó€ÃŸ 4æÛ»Ü•ºo&6Š3ƒ;™œŠ& ×[Áy-&©°ð«Ù~WÊ«׿SǶ3‘»‰¸sMßXR¤žbÍÌ9¯‘v*åC–`Š6,ëèGÚ‰_[|´— Ò£@ÉÐþ†3; ©Fš³ )¸6xÝ_ Ëû½wC†m`YPèx¦_e-¢£¥8ÏÔ%‰™«sˆ-ºJ¾ã^ñ;´$tŲ‘¶å!´r¤û”Ç0²Y~ë°µ ‡¯pË ™µô)SÉ«·ýÄÇZÑéq´7ëþâ7£¡¡Káà:C¡·#½ F Ä.{ä=j·Ï³!³ì*ë´)è=Áµ9¾¦B_nu2—`°…A\ÕùgáÚù¬àÝ›Ïv—LX9 ÂuÓTþ‚½ÔlÓ47Ðþ/œ¬Èi(ôØi[›t"\9Ë;Ð#!Ãà˜E>#¬}œ¥@ÂâÙŒÇA4Wg³ ÛA2…ĘˆKFSì ·›€ÐŸUöƒsUó02† _º5dÉ xšò”Ï³Š£‘ªÇ$¾{ºzêf±¦6yi^ÅС5UÂÛÜÆ^¢èøž¤A ÈÉSø!}Ëw®˜Ž“»ïî—)!h°¾•¹ %SFë¬à‘;ååräŠBî90.Œ3=l‡—ëÚtf‹_µÜ›<9­•Ka­¢(:‹ìy,²ùéop÷à–È#EÏ}r#丂Y Ã|µÏòÀÆ/xISýØ™A®Xg‰b³ñÖùEàR€^Ú½9ßÁ s-'p'wñÙ«ÄY5(´Ó•ð| °›¬3uVþAó÷Rb‘$!¥ñÂêÁó.ÆþïD 1á@0ã’œñ]Iƒ2 g#^pTóÇNYhß½Y~t…ló2œ­ Wù*’…TXQj*zl‡}†t-ÒÎf:nñûV á…Mo P»X"*Z_Œn[7*µãÄþJ¸®SkU{u±ÖFs'šÕæØLd‹jïig‡©û…&ÜâÀ©âkhÖŽ w™A3¸tݽJïÃúìÛ×nK©nö9ç­¼6[žéöÝo/[x ]Vì w÷ÂAâ™eèDÃHç~ã3‘Ë }ÃMg¢âºˆ…w;…k¡}bö21%:‚ÝwoÿQPK"›åF\H1^g•Û p½ÞHš¶™Ucî”Ëûf Uovže´yƒ1ë-غ–¾ ¦aWÌßÊÚ xCì£L|JRzV>ì= ê;JHõ®½A¾“[á³Õ;`’†Ùƒ;ÁÖ£ú'-AÚ!í´ ÒÊäÉÜW^Ñù ÀóaøeíïîhÄ«O1¾Ÿ]eî•´Š†©£V¢ èO„ \ =V'í›ü ä÷}Ö]^Qc®Ä(Èè%–¬OOzn³uÕ<†ÄœQØ‹“Ðë©TIʪ+Ÿ¡„šûe¾Aö%‰µú8ùd$ƒ ­d>ˆ#ÊgØ´·Ëg¿AÁü‚ânÕK}ªW¢;Ù2(åôG¿5}þý‡3è´.}yËþ‡sA4Ξäèï=®¥ˆp‚d²¬ZaâQe£¼õ͆ŒÖƒ•Š­—$NLj·®J)ûÐÆ?üÉ…¢˜Lo°/IKcïR!Úq²¬‘1ÑhHøýSEzsu3ýMpþÓ[‘íÈHÿRÑ9"¸Wq;¯·E¬ÍD-¨Ë‰A0Q™‚kðr‚l¸äß(ôRDàRTÐ2;ƒ]Þéb×·}7C†è¼€ª®«¹¡—Ýì©É$ý s4Š|ìÉêE]TxÔp8TîåQ*Üë}XW×±¶¤çÄò—ZsïÛ«ÏÇozMZÇ›st!G©¥ˆõ¸øºèÇ{ÏÛ~V7îN]£¸öÝj[vj’‚òØxaŽ{L¤ë½±Î×dKcŽñ§Ý‰ˆš¨ÚZ]µïœƒËä÷±Ï`a»ê2&¡+W“kƒ ¸ñ Mv^ –a&¦õ˜nhâkúîS·” Í/œS#Ù7í¹«ÂR-‚ÑnKvÕ¹fŧϴÌLúBCªÑrŽ=‚m8p cM¸7=Û©´e¬jô H¹® ˆ6yÉ'{H¢@î…‚°Û$÷ËõÎ_ñ¸Må²WÓ¦{_^gÐãf2 — B’È*ëˆò‹ïáð££|XvÏå-Ôî@!Gšòš9¤”Lá´Àý5fÍîIŽ";1ëuCDò(Tç>Ë'À½¦’p}uŸa$•c¿cöØé܈¡ Çÿš}b†•–Æøuõ~É땺W"tð¼FãåB³@û™Í ØÔëˆ]ç–êÓ¶õÈV¤ŠcÏ+ìU?0è|7¿’$“:˜ò‚N‘ÎéW›¸ž6Uí 0OÏ„±†:ý ÐTÀ|wº^ÐÄ)3î)2ˆÈûÊ¿LX…ÙUÜžô~c]'ÄJ¿P2^Y¬nŠ9í¥÷ƒg%:¦N_‰1P„ÉÀ”óÀ8“ñ—ë-Ôv”Ѐ'¤ùÆ~{œÎ"ó瘲dzr²­ý~a7Ÿ¦Ðÿ¨îkÏTUä(jÁߎy”wëô\Ìät}Æ DÜñª‰¸abËRµ3±¾|gÖ$÷#þÜA´^!ÄM{–õ/pU#_¼Â§EÇmë¤Ú? 0i© HGam4pq¡h@!š#Eb×üÁò».ìŠêÛ .lýÐXp(#\€ñ³¶ðu 8"µ*57£Ò•”øÀ:S¡)Â:Á¸e%à‹„ŒeŠõ¡¡OÆŽf‡pgq­±| ügy%ÚCHNm‹Ýºˆ‘mè^ŽäË­ùƼ]ÑìžI³ß•ñ¬ãÅXùx0úJÖÉÞ*ÿÅÍÈ_sÂ~åã.%#­]”“çVºûBoKd-O—Smöf=‰mué˜\>à :b( œXs'»JcÓr-št‹#wNš%ÕìôóTAx «äØ@"Öté-ê¾'3<0—z©C‚Vm²*O_> 3Y¬Æ%ërÉqC¡{n¿Âf €á \çaƒþÆ /ÚEÕ ½#›!8¨ &Ñ©ìE(í·žg®‚{`ýõÅû^a¬ yë 0"æ0Û¯E…Ñ&¹ymCÀ‘ÛÖÜ#@¿³;âšÜàÏ`“å(¨FƵ¿×ù[Ÿûµˆßè.gÍEq¬¼`ØSœn\Ú^ïA=.µ‰#xè…¾¹þ*/\š{9Áؾ” ã%À:æºö;ÑvÞvˆÐË_ºÞ=ë¸}Øóò~ÂßZ£A\<²€o"×Z\r£\?eûcèûzÙ;}–ô¢#©V+a!—ÍcE+¿¾uø÷@ •–< O᥎®Wo²%j˜ãS€ÀLIª™å&o Õy˜N&ðýøöÂýÔ7xá¶- ÈØˆ#“èuÀƒ¬))I¯¶*hoëf1ZOƒe4õ–Ù3R¬"Ïô=ÄÔæ)¾¥¿žg*õ̱$DÙ'ØßÉÜÇ…s­»“3cœµý11Õ¦Ђ$`—LVÅ@L$ó—ê‰ †èŠ‹¯àRø? 9:äù×X«<¸Ï°O@ÝðWrqAcØZáÕ¤aÁ Ä,¶Ì®ž17y•ÂBt1¦’f©© ç‚À£ögtǵ¦·É'—Í&²"¢eî °ímÚ®­” Á¢½2£¨ßy ]ƒ™EÅ&“ÍŠbc°øÓ±Ã:xÍjtßìÑ:º¸ŸìF!ù3¯.Ü\­:8›n®•‰•t¨yÀ™‹}\y¦™Š?ÉöZ‰¥’~*ÊgØê¶áŠã×Gá÷ÀëÇ:ôÜ{”¿é¼2Œ “½§¡H§BÇHU,-0ŸòI6v!rQ÷ƒœá\€öW‡W0ŸÉÅqáaXxó¥œå‰-ؕԞ‹›F(ngÙmˆ(Ñà 9¹FŒýãbG®º™zG ôè YÍçæÐ¬ Ã/u¼VÖ_–l!¦†Iaâ°r#¤í‘?à¸ÛOl\ý7á‚É"Ö2 x¼ÚÏÀ€•‡dwû•P"¼/‚B’`pÏ·Ó(ª-jК˜ÂÉ)Þjøý(rg¦y¥dLlŸ¹ìJ^¤›lÓ%¾ã¨ iàe9»á,Êb âE»U]#'s Í×@©{ܜ辧©Mvõ“%ßRñùÉqÁ ëA>ñötZŽÆÏ ÆZjj7?«´Ý¨—MÐy+mIÓ\3z'F`ñrAøCœ‘š×ÓD²iV-!v„y}í×]±!h^– U¹I!QŒÊ‰üà`ŽNòf?_ ÊEµ'¢·B_úáwZ¢²ªzÌãl-à‹“¢¾ZB ‡¶_ØO#R7|pX §´5J¶­¹¸˜)(P~$¯hÓù»l¼æ³Oq֗߉àUI¦¯}°°;Èu®ýÿ©A*Ä8ÃÈqp)ê/ä sna5;Š]‹<7Ã@ðä Ò"Ì{RL+.ÙHÎÙlê¸Qn¦ë5»¼¥Êq-œ&¯‘‹¶\ì<2°htïòÂÅÔ¹¸ñ2zŸ.Ab·ýäuøTÊ÷ŒŠAßð?ù?eSÑC[@0ý¤†C­â6¨T3§n&, ™øbTËUü¾·‘_!¶|Jy(9ˆúE¼x×£¯V6e 4¬'´>qRÌ­n$¹ð¨ª¼S4¸?ÆÎ®Ë0LzåLåQÍb]{& }±qõeøæ&U2 á,‰†ßN2J!Fõ¿Ò 7þØŽ  Àâzotwq‡1ÆÊh‘uò{­Ë*nÕ²|T‘k‹õöï÷ ï ÐZ ³â®ñ{çh§ÌÒÂÛœØÕ­#þ4!¸Ð 4ö2Æ×>9N}­âp$X-oÿ`kkùÍc@&Dþs6Èä𯎙j£ôÃì,z}tÆŸò"íð*Bæï¬‚úUýbQktw3“|$ñ͹G‹Åª¬@U#ñdÆ€ú6oZ9CPQÎGÂ:Åj%· ŒŒ¿í(0knšb>fÏ7`*¤%ý‰FXóåïÀÿÅ(š¥î®"ÛŒ€GÞJ8é4Õ—¢¦P~ šõe9ðÏš·f*NMø›W(s­² &QÐ ú;»ÎæµñóH膿ë *”×›¹¤>‡p*,ì’}KU§hH莢JÈÉ{õãŽá寜B±˜ƒŸZ=¡p£ÍèÏ"‚ªê«šì(©½Ú0#%‰ÊàÈô»¿)XI|·¸CÞ%[ÉíìÝ–@4’„é£Ä5QJÝRÐ$Ùõ A‡U%>"‚–€¾|{££e²£Ü-ýÌAë; ý<ü„­‘ÿ]ÇÚìbÖrîYÔZâpÙlŸÈ0C—Š‹#åbѨ¦þ¹‡Ó cH-'{¡ Ç-Aúô eü%WN" ìçi¼h5ј*³§™Ú=³Á”¾(‘V‡A8‚²;ˆx_jD¡]œ|‡KÖø~Ó¤Á= àÖH"Üžµ £qÝV_Q6OÓñ¯‹0·¸ô¤!v׿ÀŒ¸Š‘¯e~Rýmܪàúû}¶:ž·ø¶ÌÆ;3$«qñJ·;*«MRú¨*N±)듟:‹OÕ'¹a‘ùh9® ZsÙ¾|.n¨’°Ð¬#]‡ôYÖ§=J³ë{VÌ_ø¨†DÿeQ|‡xóë\Æ/sr$7]5N‚âFÒp(ðÐmLBñ™7ÓðêS.4¬ÕÎfþÅ`=F|šD, *lŸ>E»šÌLŠa r¸ðCË ‹1ã"±,Ä÷Íï/Ôßhä‘R;Mr …µœÅB4*YÕÇ9ŽÝør)üÒ`·‡ßï›!»fÇÛäDÊÉò@ØM›áv…Hw>Xºû—=:r¦ÇÏ¿KÜ»}ª¡žÞóï&Õ¡;[Áž&Ð~´ÚF¨izã)v$°À5BQ‚ýac¢›À!«7°8œ8¸°\.\¼½¨kVÈ*t·XÒ·×Æßp§,ƒÅðqÕ⡽ÿX£Ù79¦ÜbVæzÆiO('UU ùBÚŽ ,ª¥âkêeXòæ*îÒc‹ÓÎk4 €3àÇ«E†6àî-3IÁµ"×#~Ï•&y"‚`¤6ËÃ÷ (eèGP{:kû¡i†áÂE’cÉ ³[¶ŒÏP‰P,=¿‘ìcVÐC¯Mñ=jp–h6Ñûiz¹ôoOxSÙÌvùAb7Ñ`ÇKidTŽãÿÄi[EÔ›ðUSx^­®~œ´Pk*<º”g>ÀµíÉt²»TÍ—*ÕÏ…™ "`ew9iâ-(»épLÉ~w5JYˆ¬‚×)lÍŸÜ-óÞPˆe]R,¿Å³¹Ï%FL&F4=¿é­'Á q—D?qû )3qÌë½½o€ßåbõŠ·á5·y·ù%+ Ò²æÎw_á¶ŸµTl/nHÄ9€/@‚JÒDŒ|‹#…HüµCpì-ábƒ÷3õoáDžÇ—ïˆæˆNŸñ3l­$çžã̾.¹yF³H:DŠÂ£¼úD÷ìÌöÉÇv‰Ü"]­ôO¯žŸ¤Î@?‡OSyqd·^ÑD?E$¥›þdÞ0ÄÙPî?Æ|||ˆÕ‚Þ‚µè€@“7üêüÕ$" WPHÔ =_>–qĦ6äª! ˜ ¡_³þ…ÔþË‹&sÈ7‡°…'VD9ê!Á÷ÞKæf+å>ÇU.Ó¨÷ I¯á’.<Õ™@š¾»"g™þ}€³#HkhmòA,Ëür3Ï›UÐUUi>Ä›GgÒrƒìzÉé¼¥ ¶Šü#,¢dx{kHn*xÇȧ1z¤†WI=ÝCÐîÛ0€{üû…Õ_wç§msÊHsÈ2Ø¡¢áÉæ#Î’Šü-cwF5¬§KÀ/õeûùI<*~ß_è¬q*.–)§,Û+wŒ é|‚‚(-b{èâ‘2Q%Œˆ—þ«xŽLaA°,æ;¯øïÔr›eJ¿-Jus¹È«xK‰óÐ8óRdWÖø¿ŒSí™} ^Ñ „`Èõ÷òŰF‡µK$ús³,%ƒÇ”Ÿ"CÈ%÷S;Ô¼5 `‹AGE"ìÆqç´Èö\UXx=¯ü6~^¯à£g9”œo_s³dã XWõ¿œ „T–Àß´:gسFl‚ü«p«9©¯Ò•yû‚O¸}4±¨ ¡sñüö¥Üê~L;õN¸æµn² ©Qæáò¬’ﶈ-zŽ¿qu¨k#eºs‚ŒÛmžFŒÒŠõÍ”?U7d»råÑžÙ"käwÐc¡ý)²ç%Ç;Ñw{=îäûûŽLÇŒ­º•ðŠù´„úÒ–‘ŽïéIx…LŠ ­éÌ{Þ³lÛŒUvŽ`GH$ö5¸›wŠËât¤ÕÁ½N$ üÇJ8ß§ñÂf> Tԉ̿ásb~^ýûލv7ÂVß±Qb}àó+Hª‹1ÝPǤÁÏYáb¯1<æ¤ô:ö­,4^4Éç/ôñ“³#o@ÑŠu©ÈÛ5–24ö›éQÐxž‹13bˉãNþ&% 5Í%=Q$‰f²ˆ5d"µ¥ Á{^¨÷þ<‰Z7m/cÁ0&þæ}Hð|åÒ‚#)÷ýg¸iÎ j$HܤôáÞ¤ã=ŸùÂJÄML÷·5Ÿüˆ”¿ã´Šã΄8Í r¬÷ÍÙíÃcj[—h²tѳ´¾âéÉÖ;ಋx ø‹‹¡æ›9 ïûsù‚>  œÆ¡–l•‡B¡·ÎcÐÐ8IÓ)nºi¦æø°+H›ãßÓØÒúÌòðé¯f=ëã×Ëß ëöZÒ‰¥Ltjl¿Öª”úÎÄ•µÝé;œQ öPÕ|°LȰP~a90y3‡M8Ùe U>F®Øô@?¹ù»¨ç–OžYx½ÄÜm$G#Ä̲ÉÇF;i_Œ3@8¿õ‹@¿HOeC©À¬%Pƒ×É•ý¤v]¡¿Y›[í¸ù÷}µ±`·5áöû…(¨q¦Éðÿz;^ßÖyWmYéÛ1ƒ`‚±Ú¨¹eO¶9;za0{¾V‹SÍžV% ©ô‡îW©kC aBM¥ Ý¼-ëVó†WÒ‹C»lUþZI±‚Y‘”$®¨×(§÷M õòIêAbrûmÚ휹V†±1Ölà_ÊaŠAjËKµÒC]P ì\ÅØzbŽ=& <&T WÅá‰Gý”*ž•n€GçÄ]ƒÃ("50Ú]QL†‡%W×䲋³ŠÇusŽÈâ 8èà X #øŒmdÇ¢­x¿­åÓg«tòŒ%WõR +²tú¦Ï4 0:ìËJñ¢ÞV!•sjZ,Tv÷ª›à> «"±ø[‹`X 2.‡ãúü6œ¡¥­u‚0ÚV~ô)®ÈÎØ¸d§pŽÖ¿ä.¸ñn¹RËnä¨"Óæþ§øïX%\A"­8]e¢±|¢ÄçX ÷¬”-~O˜'7ÂÎÈË8výIQkN\G,^wßb£ênQd®­£"âò ¶ÓEíR„>‚ª-d 8Ò…¼A“ÂzyXînk­fPã3AP(¯“'N–a§lÒ®”%B†j_ª5³ F/êèº"­ÔØI›;ŒïÞ!È(¡-Ã'ÃíËU # æ‡rΑ8­ ñµ¨?Å5ŒïX›Îò ß:›¯ÂÙÌ\tL¿à}Ì "­oж,C¤¾VÃoÎ=Yˆmc’øÉ•Ù4ñ½±-û§ôÔrÁ Æ•¢³x\oþN¿;.ùH R†@\/ |ýsN[öç£fv)GàF¨=—9ÁG™–«³×¼Ÿ¹‚~4KMžôp×v]÷?móõ?B <SªQÕonW­/Ê®äy.£Ï '´V§‰v"3RÚ0” g/¿1| ,²ï‘¶ðõÊôMKµ<ÊÂìè˜.j²5üƒƒ_(¦›7Üíç Ò÷;¼¤å÷=£Añ®ôÎNÛʯòš`„¬qè±2T­uÞñô&"< ÓNÈÀcù¡çB$‘4 &üæÃN™º¢1LÉE³¹šÙÐkÇìröñe[b,E¡ÂŽn’MN‡|µ*}ˆè{–®Ñ¨™¹ (ÝûÅnTà¨Ã"}˜õ·ånPAY–¤¯R¥MX1<Ä?Ë#-Û¹`UÀ´Nq|¹(¦„uâYFGø½Pfe1ÍäIn|°Ò•Ó~9·E¾Ü'>¾íÑ Í>ÏrY[÷P~r‰nÌsÏýF'géüBõ]!Ø×á $iø*€í21Hy .þ–ôàoÿJyÜ•ê|Í}Övhv¤Âaþx§¿;yY4Ĥ Ë t©‘ßèâ­xÀ #ÚÃÛÝŸu3ç±Zîù¾­£_‡›éÜFgIï·}½¶] ŽóBTllC1­„ ¦ µþKK‚“ß…@HTç²–Y>ٴ̺Ëõ{—n#ÙIƒÝÓð½»þšKòšï´áÉ¡ÚßÐ(™AMóÕ¤cqɾ)Däý³]O‚¸w—fëŒenä;—ãEô†~ýŽcƒlp ‚ñ5° G}Vª 7ˆ®_¢%ƒÔ%ü§,xÑÿ%ÉOpƒ}ÇzPÖ+)5Õ`7Ìú·ó9ä­{5ªQ¿ H2p!¯òñšQÔhß­½1ýæõÊÿN9>£^c©DLÞ>’ezÐgŸIrN›pÕ‡òØ;pàÖØŒVû »ç̬휛Y¥¼Ý}ø`ŒûC|¸vuES`ê¨qµ‚ßcÏ­úˆýÞ:~X ÁÞI“¢¬­ô7Õ…‹÷„7±9QŸHøàˆ©îä—:ס\·B/iþÚ/ûV‰&>úØD±ïÙßuɬÜèçLïÜuÊÏj¯òùÃÅ’iïMþ–ºwcªÓE£J›¬‚7=~žAÓ=q'QP*G-_É ¡ÿþ{õ5Iàñó¤zÄ]ùO+N>ÛÇÓ‹KNç3 %û~’0qÿÜïzPiØeû±±öAÖ ûÂG>õ3/ôº3y]㼕äMäðâ¬'ï Ë“ËpEè•ÂÊd8щHTá5ž²NÀ~ ÜAçv7¡ ÎZ i 'ì6yT„tžÀƒ'<¼D…óƒÊJ(—×Äž×ê›NåûPŠxù›HãV0DJN|O‰’)0T ë¡B¶šál˜¦A‡õCgy¬½HÈXGTxxPƒìJ:ïÎSÁ,UUj.3àÒ³Pf]ìþ‘ÚÁ:´Z.‘»Ÿ„“+Ø8HæCxºi³@Ç¥¬q£2â!O—æ¢H"dëQÙ&œ,sE“„!C÷ÈleæŠ=òíŠ~E÷ïÜV•3Öâ¶ñ„z¹Zl]‚³·† æ^ß £TR\‡gWrÏ1åÝwC²Rw„šÓw{¦˜ŽUxõrÀÓ,eÕ÷ß§ ‰iwk›+¦×ÇÛ€´;6º{òQåsËÁ¢eÙy¥il†æ×Ü1ö5áô܉GøñPLêH—i%ŸL¤0—à¸vt,uT-aÎ FW…ž¡ù™8% w& ;í&´óŒbqÜŸhFjðY´lÅpÒEJgÚž±T Ì[±Ì”=ßÊÁøQïNµ?OôGŸ9ýdzÀþ˜•hÀM¦—ðÓKªƒ¡H0å£é0#ò@o~© “ºRö¯&ehîQN?KÆy§“\rÎ/:£¡š7ô--Ëuc4u‹½‘/ˆÖ¯íj{y“Ž„ÙƒBâ>䤸ä¡Tó¿‰ f´¤2=4yØÆnS×¶6ì1ân¾ÃÂw•Gäuû«%åšm.\¸S‘HPÔ âK€7œZkøÚ–ýç?˜Ÿ ÕãE—pW ß@ê‰xç@Wáâó#3éÁ›ï¶? d(bÞAgú^r>Ö (Ù6oè–ƒhòp¨¼pƒ.@=Sw>h@-‘ÐZwÄ*ä© ¿„G-:ȽÅúõf½3E^@Ëë:¾â=‘Ù¹C­ô†¬ítሠ„ %A[ãÕvù«r1báÙÇò °wbƒœ‡Ú °/æÎ–¯j¾“—-ììÁpï…·®ñ¥‰ ¢|¤=¸,aT\.ÒqXÊĉ¬Ä.sÒ>mÃÌqNÞ;z¤)¬×k+Ï㊸ÓÜaT ç?þºë/·Û¾°‹ˆîù3t¤­ãSl3‹VEÍS¤46¯o—Œ<ÕÐ`ùZþ*=AcpÞpw=hëW»³ciëJ¨c8Ž•“]Ö¨ì}ýEµM-È‹ÅþDÅâê該%óÙoWñÜ-zm•"Ð<$­7ïÔþ× @Ó÷Ó`"L¤i® -3ñôqúæVÖãŠn‘n_DFcòžÕú )QƲ3ãª$—­‹¥˜jiØ@@·IP['ÞRÆÞŠêvÁtäµBøJ.)U1dÏiÿýG–¼RãÔ›üIךláñ[Ä78‡uäw%”ϲjK2 ‡pÏêyÿsvüœ•¯§æ@$éGª™<ÄMp:p0^æ¸')%Æ–V 'S‚`|0ÏÄG3)I’£Ð )¼2šÞ£!ËNS2ˆfK“º.$D£ ß„F&¨AúXFøNÅ)j€fsÞ^&WßöróÖA+ãõÜ¥æ÷O5›V¤œ:¿y$f 0S è› )¾¯a˜’Ë÷º3±“2†ý¤£MâõNM»›µ‚¥­8ãív´Ûvã ·ætÕñsžóeZŒ,ÿÂd—bôÚ¦G—û^üoÊëéã*¤,!,ãðW-¶óÚO3H!ÃðoÌ _u‹ uÑóozØcã]¤£”«BI“ÜÁ¼†°P¸DnÞ6Ί¶3rí3Iå­eãZ…¬i˜ˆÑf?É&ybÉÍ~¸U1qö3?® ?0 †ðlÑ&ÅÏPîú–aÛ ²¹iNK1ùßÁŒË¢–Ó…¦ÊDl3·”L¥Höæþº,ÍRàò¨ì çvÖ¼;¨ßJ®sÏ­ÜæE멺Þ~Ï¡¡Év7±f¾¬D©L Eêê¥Ô›õö ¸ü†ô\t)Ûæ±‰ (ÔG2>æâÜÍ26dßÂÖ™pŠMÞØHŠ*¿½7Ò¾…-×deÔ ŽíQLêÂÿ‚2¼àÍ;”¦Ûíz”xž¬²Ts‚Múv5±œŽtûV¿ˆE³# ¸KFmÆÝAI+hw†N/Ž«æ0@Mû‘šï<'£-c³á„ƒîXH†»;@Ò„7J ¯ ð9ÙÊ—G/{*Ä[Óª›R @íAÀ’ jèß(5,‡î!R0H9À]Ác5âÙª9"±$ø;}ËO›(:a±"ÕÙç¦ÃæN§‹úÁ)ÙF;î.«YÚ–úK¨ÿÊÈŸ†ÚÒ94}ÒNùE·¸b þé«éŒ–1– õsO<ÅD¾AŒ]§¸‘`C@³?oÛ….ttiïðpP„B¼Cp¸u¬×®Np:}w‹y9Çžš q}ÙIhU£UÃùSîÇ€FG_É-UT‹kÐT©(ò.Ž-7Q?ò ø¸­¥*Ѿ7/‡ax«þ½„ßw}iÙEýHÞ ¬Zú“ 6¸tªýöóÂè‚r„ºpñ™÷®NëÛöÀ${G³GåÈ„î¼/¨ š¨ãí`|Ï8zu÷Œn“ Ð(¸•ÐÖ®ð&-r;à‚ÆïÆ¯¬ð17£m$ 7Ì÷>ÚèÕ¾VËs…У=Î4¢ºg¸õ܆l"`EÁ$˜ó÷1Dƒø1¶ÐÈ}tÄ”*MÃr"ɯÂ&¯vÞ›”q:v{$“ú Ê“éÑ‚„!]c’¨ò™¬·á­±š³º¿ÄÝC‡sß>õ‡嫦ÃèByeé—Dli>-eüëT€óçaÂ;æÜF;ú¦êüèfar2ªÞл·ÜËùƒcßîS¹(õ¼cØeX~u®bÜþOü}ü¯tr\ʬJEáß]ׯ\´áKôFiðKÔ¶-á?³R÷;ÃJk \f®‹k©yWsHFʧ¯³…rægó,«3lÅã¼óíö¾0BÛÚ}˜$Ï(â\Þ’Ø¿áE4 «ÇM¢gÀ[7»åaÒµ’¹õ¸/IÎÐÅÔÏÚí¡ÙôŒÉÏ1ó³Æi¾WK fQ®”ŽÒ7"ÅoF !BÂÅØþ)u4f‘¾[÷÷n·¬âÛƒYÒKÿ2@(êÿµ!+7ÎËùÙgónð¬=VŸ‡ð§Z :k«øžM9«ì­¿bpʪŽÅbõi„RµìÈõ›€5âù™â¡WðÜ“5¸Ø-4gÊ¿á"ØY †Ý$œä3íl ~JÉa¿Ý`m +Œ^§%+ïª"£G”~GÀ=e}éÄQA‚¡RŽ&•2$ÝT¸âd¤Ü+Á3ì†ÀmB&Î2éÔ†Çè᳋2êåÍ3 o¾÷jvÏ‚ /®»}ƒú˜“¬æÀ¡Ü);Î;aŧw€ŒKí¡³„¸aD\mÄMô£»UªÐ|œ¡³µ.Óhըݾ,ߥŽ4Þ~[ôó_õPœ÷)Ç+—Ó» eëd ßÖ6¾±Þõ.†HYÄÒ sj^·?FÏu¦C›ç"»i¬£¨?A/Éù;Ùüã&½—ŒÄƒd&L“|¼Ìàìì«NöÐmmÃ3\!þ àJ5À÷„{ú ¬ëKˆKõ6V3–©Y?sÞª{­‡ØhRkÑG€_à¯ÚA îêVñ0¥¨ièC¨˜™/m£õ¯ëŸCZíéD²A3±CÄŒA§Lx"tj\[e¹J¶ŸSXýý¸ мƇ°–üÓ$+WU+=׳¨ÖÃë°å6%‡ù¶¥û¶;U'µR§âœôü æÌù4‰dçúÂmгj#$²i.}ʦ½zº*ŠÞ©6§»Ì‹ûÑc‰Aœ uû‹¤=šZuòŠNäwÚ9£ïš÷?È£fWÌW!µ²&„N¸Þ÷LÃÒÁ“ËOlh‰‘5FUòn²9ÍÌcƒ÷ I'žQúð W^o!·²Æõ#²‹ÍnÔ@ñc?%/4Ò}ÓˆQ6Ë]Ý m&M—)K¶÷Òokq ~’#÷ý¢$ÜÁÆDfR;»žøÒ©]õ_ÐÍØÆáÒªÛ¿V]zvÔò@„å=…¯ãǹÊ19{9«ËfZ"·qäx•lÐV%„à ¥Å6& dGä3Ò@§åŸbÀÈùÛL–zDË vÊBmÄšL’ÐíÀ„”¢ä8qŒƒÕ…zΦ¥gðg´öÿáhÀ4óOÀÒÍ—Ú [¾†á.*(øKϢ̃‡ª$lž„Š~ŒÌ%n¤"1¿5ܨBçKs”“b±¯_¼+ê¼ÓŠg-¢¶Š©ž¼ž¥¡}ñm¸\:ÊÙ™¥Õêò$Âm[f݉âŽÍ'°½¦R±z&£Ø]£hD¥F5T¨|‡Ææs·<—À~™‘`‹$(ðÜ”Ê)3ˆixÔçÍéÜ4ï RBPl^£ò <«DàÆ ýuÒMKEÀÙŒ§9* ·êU‘½2Ä’»Ôä5Kò†M`0È H¹©l˜é¢pR(ÿ(puj»h+v‹9äÒFùÜwÍöGkzˆ%€Á¥‚ðsíÑ%}Á?}£A×$õÕwõè^!‡:è3Ôþ³ZjÅ\šÊ@{Ed*UøKlÊ`ƒvH´fñÂ4‡$ óPÒšïÙš#Éø>aÕ4õ+ Bd1rq¸Aâ¬Ã9_^q¥Zën,ŠÑš~\‚ *—Ä1ûoñ±¾N‚H’gÊ3‚uù‘‘º‡ <²Ê4”_0*½g´úL5ÑNpHÌß8Ý6]Âã›|õAou}‚»AŸ iÑ2¡´GE"_©a?¶Në—W¹Ö¨ dM™®Š‚LêxÝVOã'ž(G´ž5çéâS­·kÂzã½·Y£3¨ï€õ}l8~xµç±þ1eÜ.©«v¡%àzð:Ðc›ø^|;P¨û«êùðúñZܧdΜF­ ›‘#ÍÛµ"~VGØ­n„AÅŒ&Ä9°écþm½ 5¾P˜&eð§Æ÷Hx¨Ðʨ>®-%ŸÇÞœÈP¥ÕÀsë”_É’ý5–S)ûp3ƒ%A“_zꌰ_ çUæIl¯7]Ü@‚5¼¶~Dƒ¦Ë “ùp Â…ß9$Rã`7’óÆCVDnS¸C–^‰=ܧ?•bùk&uY7Í Å3œ,™.ù˜cwH¨C„Ûq¯<ù`iqó,*¹° ²„[—÷Ï×'æËôææ^P ¬©@o¢œ fýx%r˧g¦mÚäUÜÈ8 ”0½¿û™(‘°(˸ «ªûR\´×c¥½$ÜÑ ŸGp3ÊÐ_p˧ ¦(B`Å>œÑ‡«î Ö|Ugç™·®¤Ü{ˆœÕHvæ$¿©¢žYÝ jª÷¹ =&Mü|Ë®Ð5J¥Åÿ÷ç8¬]eÖhœÉÖçÙ1ý\}hN Zu€Ë_Û§±™­«v|ÞÑûÊwغ¿úé)4±áÁ à|8Zïçß0”¨…áRʪ†ì 5\à¢B;µÖUµ7_f·i€ ÇÀŽ™æ§!RÜ‹~=)˜[¸QdçÏe]gß v$ߨžÊJ-©ªÝ–E¯ÒjiZÕ÷q2)…0ø;‡•Nâ0z³ý1RôáêÈ*GIÑ{Ó['gM0皈”$á ‘’3‹¼ J™b_[@èXCw]ãL¨šî'ÓÕ['»qS×ÓÅpL–.ô.ÅIßS Ã!U]í»Ôh×9 ^”è¨^ŽÿEEÙü <2XRdljog<œ ò¾V™EŒ#´Sâ–Qý x{¾{Ïw5½`€(,Øœ:ÍxœÐ,Ù’}^á³¢/êxk —À8°žä‘6…Èy‚¤óð0þ0ÆBÝ6áˆÝZV¢®˜b@‰ép$¯g˜¿ßÆ…Ù\x;Ö~¾(o[„_'aÿ€»ÿà”…,S-êw_˜¬$¾ÎÌGi)aÔŸ ~¥Lœ(OË~ÏÖJzc}]~ґ»©Øú{cE-YžÑ‡8ô~µ÷8hm”æVЋ>5™£KNsý Kè®ÓsRnpR4Ã’<¶Áüv`ÿ°k—“®õžàuüÂnÙQ¡ÇÕ5ºz›_ÇcÒ˜†¥UF7–“…&{»ä\L‹IÍVßµ]Æãî•è>;zkïx—РjóP *ÒûL ©Ú‡4\ÓÅaª].íÐÜ…TWº$™/Œ ú»&1ų„f‚ GâRÿ¤ù¨i–l­4Xå¹$0@k¥NûÝ͇¤× +{ÕÁå’€1«¢üjÜ5~„˜Ó nTmk¹Þr!ç#«…<`²¾Êó*O#e]IX€Øì‘^\cÆÙÀ”éƒh‡ò±Þö '€‘ 7~xìÊ$WÝ7»Õ©>D˜ápÐÆÎHz³0Õ¦½¤Óo•ÏõóûcÓ@ê?1ÔN©tJMüS§_\F‚’d[îÓš>²,ê”䄤°³=Ýõ ^ë,]œÆ¹¿€šÕbœÓ"õF½úÝ_•{´ò3ưJ¾šf‘-ce£§çU܄ϯ¤ëƒš…õåü ôd\¬ "©ªÕÀT*$²‘óÇÁ !J¶ÎA˜b+%(ÐJh1ß ¢»‰„3¹}L{³4Pž¤å\¼/D~¥²+Iý{uù’bò”AÖ-FQÕ ÷ê>%)‚Óq6û æ0k·p(;‹ã©@PçPÞÁŽ™ê¥_ÈÎ;2˜¼ësãb¾¶µô*ËŠÑ_˜.¨üêØ|•é.ê‰#]<¶ŠÛÚû¹K®¤IV›t…hùKà+q£Á¤)OãF Ù|?qÜIÊF²pÜ–áA0÷:½ã _ËÀPèCXƒ„X\̹4IrôúôOálefBÜ<2YÒR,cŠVpÀ9ÏŽ¼n1î^|Á.¹oâÅ>K&ý©¬Rf}bñFØ]ЛÌVú¬ΜVôíbֻöD$›MÐöé&)›õ0í)léžß`(û"Ì£cø  H O{'dŸ©A&ΊA?ˆW­`d “¨g¸CmÆ)„5«Nä¨ê‚Æ÷ ¶rç<@±ÓBlÐ4ödW+[ægBŸÛáátÓiÖ¼™;ÍL¶Fö¿(½TŠÞà‘÷—Eépl ê\ñ,êjm¾$»ž ¦uM/~³àà[6w]Ø,}Wiõ³BÁ“„äü2¼§ä”[î#³­†äïꉃNèi—'Ýȶö[?%FJá`ú¸àI¹"Bñ¿§lÉÁ,jÛ €WÞ(cxª–¶´Þý;V*“¨˜´ØçÌTR±Ðˆ@ˆÉ9[+ä¥Mï¿ÉçÆ1¤µ¢ÈÐÐÀÜØ0jJ}'fú¿DÍêPP@ñÏY75Bà6 ¿˜r‘»î¨„øbQ1EO¨—ÇQû­Ž0¯¡ÕæíìNÕ_9”h6k,=ÆšÌÊYÚ^ö˜­¦hÙlCC“  7¹ ?¼:7$ž¢xaéí] ÖºÑÚm|²O”*Ã&ȪŸÄ¾ôC}_Ãéß;ɧJZ0îÿå‘Dé@)¸Åm_Åÿ3Zɲ9F0±0í7œYêA"¯dZ„ÿθìà©Ài|™ …ÏüƒælNÎÊ0\²l•s½LÀ8¹= Sâ]s­&í"æ¨ãØíA¦HT\“"Eq2D ê1ëñ™!è¨ ›õfA6& ÇñÙYr‚Ox;ù×ýA–ˆHß/ûíÕ=f¹Õ_™GV_0•‚0•ºxš_¥C&uò)GgNjÀ®yyÖ-{5˜ ˜2æ.èÒSPJqݶR8ÏÓz¯wu7÷r¡¯|T+Kz6nÃAšÆYtú*ÚÐÇQÕŠUÆ?µ:>ãG³ºsŒÌO‘,Å\1°–€‡TeèyhRÂSÆsœ»Q²¯f¬ ´k†?‘ Ãn‹Qm޽%\ô5˜Å†…¥lk~Ь’U};l­¦††SQÞÞÂ69w†‡×qZd>²‚uý®-v¨r+ oˆ‚Pð$FM]yˆSAÓ&Åœî§Ü ŠY؈ ZÊ­ìD´c®bŒæ1;¸ÓKöJ2¬C÷!࡟Èp_ÏLv­˜ìÉìËóÑ^)pI¢N:|håŸÝ)1z¯”ÿºÉ. endstream endobj 290 0 obj << /Type /FontDescriptor /FontName /ONVQYA+SFTT1000 /Flags 4 /FontBBox [-208 -360 1374 838] /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 50 /XHeight 430 /CharSet (/quotesingle) /FontFile 289 0 R >> endobj 198 0 obj << /Type /Encoding /Differences [39/quotesingle 42/asteriskmath 136/bullet] >> endobj 16 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PQQTKL+CMBX10 /FontDescriptor 226 0 R /FirstChar 12 /LastChar 118 /Widths 213 0 R >> endobj 5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DOUCFY+CMBX12 /FontDescriptor 228 0 R /FirstChar 12 /LastChar 122 /Widths 224 0 R >> endobj 10 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUGEGU+CMBX9 /FontDescriptor 230 0 R /FirstChar 12 /LastChar 117 /Widths 219 0 R >> endobj 179 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AWHQYO+CMBXTI10 /FontDescriptor 232 0 R /FirstChar 12 /LastChar 118 /Widths 192 0 R >> endobj 18 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MPITIK+CMCSC10 /FontDescriptor 234 0 R /FirstChar 65 /LastChar 82 /Widths 211 0 R >> endobj 33 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DUHIZP+CMEX10 /FontDescriptor 236 0 R /FirstChar 0 /LastChar 112 /Widths 201 0 R >> endobj 28 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GAEBWH+CMMI10 /FontDescriptor 238 0 R /FirstChar 11 /LastChar 120 /Widths 206 0 R >> endobj 85 0 obj << /Type /Font /Subtype /Type1 /BaseFont /GKVJEC+CMMI5 /FontDescriptor 240 0 R /FirstChar 67 /LastChar 116 /Widths 194 0 R >> endobj 29 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TNETGC+CMMI7 /FontDescriptor 242 0 R /FirstChar 11 /LastChar 120 /Widths 205 0 R >> endobj 14 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ZKATGT+CMR10 /FontDescriptor 244 0 R /FirstChar 11 /LastChar 127 /Widths 215 0 R >> endobj 8 0 obj << /Type /Font /Subtype /Type1 /BaseFont /UEHUFC+CMR12 /FontDescriptor 246 0 R /FirstChar 19 /LastChar 121 /Widths 221 0 R >> endobj 6 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CTPTPD+CMR17 /FontDescriptor 248 0 R /FirstChar 58 /LastChar 117 /Widths 223 0 R >> endobj 32 0 obj << /Type /Font /Subtype /Type1 /BaseFont /TOGVNE+CMR5 /FontDescriptor 250 0 R /FirstChar 43 /LastChar 51 /Widths 202 0 R >> endobj 73 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XTJZVU+CMR6 /FontDescriptor 252 0 R /FirstChar 49 /LastChar 50 /Widths 196 0 R >> endobj 30 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NPXUYF+CMR7 /FontDescriptor 254 0 R /FirstChar 40 /LastChar 105 /Widths 204 0 R >> endobj 20 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MFMQQO+CMR8 /FontDescriptor 256 0 R /FirstChar 12 /LastChar 121 /Widths 209 0 R >> endobj 11 0 obj << /Type /Font /Subtype /Type1 /BaseFont /CATPYO+CMR9 /FontDescriptor 258 0 R /FirstChar 11 /LastChar 121 /Widths 218 0 R >> endobj 26 0 obj << /Type /Font /Subtype /Type1 /BaseFont /AOITPE+CMSLTT10 /FontDescriptor 260 0 R /FirstChar 34 /LastChar 125 /Widths 208 0 R >> endobj 15 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EAXHAV+CMSS10 /FontDescriptor 262 0 R /FirstChar 82 /LastChar 82 /Widths 214 0 R >> endobj 7 0 obj << /Type /Font /Subtype /Type1 /BaseFont /XPCHDY+CMSS17 /FontDescriptor 264 0 R /FirstChar 82 /LastChar 82 /Widths 222 0 R >> endobj 184 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JEVMCT+CMSSI10 /FontDescriptor 266 0 R /FirstChar 82 /LastChar 82 /Widths 191 0 R >> endobj 31 0 obj << /Type /Font /Subtype /Type1 /BaseFont /KFANKQ+CMSY10 /FontDescriptor 268 0 R /FirstChar 0 /LastChar 106 /Widths 203 0 R >> endobj 102 0 obj << /Type /Font /Subtype /Type1 /BaseFont /HMPEFZ+CMSY5 /FontDescriptor 270 0 R /FirstChar 0 /LastChar 0 /Widths 193 0 R >> endobj 61 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MGPQDP+CMSY7 /FontDescriptor 272 0 R /FirstChar 0 /LastChar 52 /Widths 197 0 R >> endobj 13 0 obj << /Type /Font /Subtype /Type1 /BaseFont /BGZGJB+CMTI10 /FontDescriptor 274 0 R /FirstChar 12 /LastChar 122 /Widths 216 0 R >> endobj 17 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JNVXFM+CMTT10 /FontDescriptor 276 0 R /FirstChar 34 /LastChar 122 /Widths 212 0 R >> endobj 74 0 obj << /Type /Font /Subtype /Type1 /BaseFont /EIVMKE+CMTT8 /FontDescriptor 278 0 R /FirstChar 97 /LastChar 116 /Widths 195 0 R >> endobj 12 0 obj << /Type /Font /Subtype /Type1 /BaseFont /WMPTML+CMTT9 /FontDescriptor 280 0 R /FirstChar 37 /LastChar 121 /Widths 217 0 R >> endobj 55 0 obj << /Type /Font /Subtype /Type1 /BaseFont /QDTWCG+MSBM10 /FontDescriptor 282 0 R /FirstChar 82 /LastChar 82 /Widths 200 0 R >> endobj 19 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YIGRIT+SFRM0600 /FontDescriptor 284 0 R /FirstChar 42 /LastChar 42 /Widths 210 0 R /Encoding 198 0 R >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /BaseFont /VYODCS+SFRM0800 /FontDescriptor 286 0 R /FirstChar 42 /LastChar 42 /Widths 220 0 R /Encoding 198 0 R >> endobj 56 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MULJMX+SFRM1000 /FontDescriptor 288 0 R /FirstChar 136 /LastChar 136 /Widths 199 0 R /Encoding 198 0 R >> endobj 27 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ONVQYA+SFTT1000 /FontDescriptor 290 0 R /FirstChar 39 /LastChar 39 /Widths 207 0 R /Encoding 198 0 R >> endobj 21 0 obj << /Type /Pages /Count 6 /Parent 291 0 R /Kids [3 0 R 24 0 R 43 0 R 53 0 R 59 0 R 71 0 R] >> endobj 86 0 obj << /Type /Pages /Count 6 /Parent 291 0 R /Kids [83 0 R 89 0 R 100 0 R 104 0 R 115 0 R 126 0 R] >> endobj 131 0 obj << /Type /Pages /Count 6 /Parent 291 0 R /Kids [129 0 R 140 0 R 144 0 R 154 0 R 158 0 R 167 0 R] >> endobj 180 0 obj << /Type /Pages /Count 4 /Parent 291 0 R /Kids [177 0 R 182 0 R 186 0 R 189 0 R] >> endobj 291 0 obj << /Type /Pages /Count 22 /Kids [21 0 R 86 0 R 131 0 R 180 0 R] >> endobj 292 0 obj << /Type /Catalog /Pages 291 0 R /SweaveConcordance 1 0 R >> endobj 293 0 obj << /Producer (pdfTeX-1.40.16) /Creator (TeX) /CreationDate (D:20190123142110+01'00') /ModDate (D:20190123142110+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) kpathsea version 6.2.1) >> endobj xref 0 294 0000000000 65535 f 0000000015 00000 n 0000006503 00000 n 0000006391 00000 n 0000000983 00000 n 0000685446 00000 n 0000686871 00000 n 0000688002 00000 n 0000686730 00000 n 0000689583 00000 n 0000685588 00000 n 0000687574 00000 n 0000689137 00000 n 0000688709 00000 n 0000686588 00000 n 0000687860 00000 n 0000685303 00000 n 0000688852 00000 n 0000685876 00000 n 0000689421 00000 n 0000687433 00000 n 0000690070 00000 n 0000011254 00000 n 0000020486 00000 n 0000011139 00000 n 0000006746 00000 n 0000687715 00000 n 0000689908 00000 n 0000686161 00000 n 0000686446 00000 n 0000687292 00000 n 0000688287 00000 n 0000687012 00000 n 0000686019 00000 n 0000017084 00000 n 0000017227 00000 n 0000017311 00000 n 0000017409 00000 n 0000017512 00000 n 0000017547 00000 n 0000017789 00000 n 0000024706 00000 n 0000038349 00000 n 0000024591 00000 n 0000020724 00000 n 0000034947 00000 n 0000035090 00000 n 0000035174 00000 n 0000035272 00000 n 0000035375 00000 n 0000035410 00000 n 0000035652 00000 n 0000043458 00000 n 0000043343 00000 n 0000038528 00000 n 0000689279 00000 n 0000689744 00000 n 0000046733 00000 n 0000066955 00000 n 0000046618 00000 n 0000043672 00000 n 0000688569 00000 n 0000063553 00000 n 0000063696 00000 n 0000063780 00000 n 0000063878 00000 n 0000063981 00000 n 0000064016 00000 n 0000064258 00000 n 0000069891 00000 n 0000078261 00000 n 0000069776 00000 n 0000067135 00000 n 0000687152 00000 n 0000688995 00000 n 0000074859 00000 n 0000075002 00000 n 0000075086 00000 n 0000075184 00000 n 0000075287 00000 n 0000075322 00000 n 0000075564 00000 n 0000084060 00000 n 0000083945 00000 n 0000078430 00000 n 0000686304 00000 n 0000690179 00000 n 0000087441 00000 n 0000128974 00000 n 0000087326 00000 n 0000084282 00000 n 0000125572 00000 n 0000125715 00000 n 0000125799 00000 n 0000125897 00000 n 0000126000 00000 n 0000126035 00000 n 0000126277 00000 n 0000137462 00000 n 0000133831 00000 n 0000133714 00000 n 0000129107 00000 n 0000688429 00000 n 0000145319 00000 n 0000137344 00000 n 0000134053 00000 n 0000141907 00000 n 0000142051 00000 n 0000142136 00000 n 0000142236 00000 n 0000142341 00000 n 0000142378 00000 n 0000142621 00000 n 0000149045 00000 n 0000212924 00000 n 0000148927 00000 n 0000145511 00000 n 0000209512 00000 n 0000209656 00000 n 0000209741 00000 n 0000209841 00000 n 0000209946 00000 n 0000209983 00000 n 0000210226 00000 n 0000221646 00000 n 0000217817 00000 n 0000217699 00000 n 0000213119 00000 n 0000256218 00000 n 0000221527 00000 n 0000218007 00000 n 0000690293 00000 n 0000252806 00000 n 0000252950 00000 n 0000253035 00000 n 0000253135 00000 n 0000253240 00000 n 0000253277 00000 n 0000253520 00000 n 0000262003 00000 n 0000261884 00000 n 0000256388 00000 n 0000265286 00000 n 0000270704 00000 n 0000265167 00000 n 0000262181 00000 n 0000267377 00000 n 0000267521 00000 n 0000267621 00000 n 0000267726 00000 n 0000267763 00000 n 0000268006 00000 n 0000277527 00000 n 0000275055 00000 n 0000274936 00000 n 0000270909 00000 n 0000288532 00000 n 0000284927 00000 n 0000277408 00000 n 0000275175 00000 n 0000281600 00000 n 0000281744 00000 n 0000281844 00000 n 0000281949 00000 n 0000281986 00000 n 0000282229 00000 n 0000296784 00000 n 0000288413 00000 n 0000285086 00000 n 0000293372 00000 n 0000293516 00000 n 0000293601 00000 n 0000293701 00000 n 0000293806 00000 n 0000293843 00000 n 0000294086 00000 n 0000302102 00000 n 0000301983 00000 n 0000296955 00000 n 0000685730 00000 n 0000690410 00000 n 0000307508 00000 n 0000307389 00000 n 0000302232 00000 n 0000688143 00000 n 0000313067 00000 n 0000312948 00000 n 0000307641 00000 n 0000318565 00000 n 0000318446 00000 n 0000313200 00000 n 0000318684 00000 n 0000318709 00000 n 0000319356 00000 n 0000319382 00000 n 0000319700 00000 n 0000319839 00000 n 0000319870 00000 n 0000685207 00000 n 0000320222 00000 n 0000320247 00000 n 0000320272 00000 n 0000320968 00000 n 0000321042 00000 n 0000321660 00000 n 0000322057 00000 n 0000322733 00000 n 0000323362 00000 n 0000323387 00000 n 0000323774 00000 n 0000324453 00000 n 0000324476 00000 n 0000324601 00000 n 0000324976 00000 n 0000325585 00000 n 0000325610 00000 n 0000326254 00000 n 0000326917 00000 n 0000327276 00000 n 0000327929 00000 n 0000328582 00000 n 0000328607 00000 n 0000329175 00000 n 0000329200 00000 n 0000329575 00000 n 0000330216 00000 n 0000343308 00000 n 0000343579 00000 n 0000357597 00000 n 0000357917 00000 n 0000366868 00000 n 0000367113 00000 n 0000376992 00000 n 0000377246 00000 n 0000385109 00000 n 0000385332 00000 n 0000393510 00000 n 0000393844 00000 n 0000407997 00000 n 0000408322 00000 n 0000417766 00000 n 0000418008 00000 n 0000430084 00000 n 0000430369 00000 n 0000456595 00000 n 0000457190 00000 n 0000469985 00000 n 0000470311 00000 n 0000480567 00000 n 0000480825 00000 n 0000488311 00000 n 0000488546 00000 n 0000495704 00000 n 0000495928 00000 n 0000504773 00000 n 0000505056 00000 n 0000519242 00000 n 0000519580 00000 n 0000534604 00000 n 0000534931 00000 n 0000552829 00000 n 0000553316 00000 n 0000560328 00000 n 0000560547 00000 n 0000567571 00000 n 0000567790 00000 n 0000574788 00000 n 0000575011 00000 n 0000583163 00000 n 0000583441 00000 n 0000590532 00000 n 0000590756 00000 n 0000598291 00000 n 0000598545 00000 n 0000618878 00000 n 0000619254 00000 n 0000638234 00000 n 0000638702 00000 n 0000642219 00000 n 0000642452 00000 n 0000655765 00000 n 0000656131 00000 n 0000658431 00000 n 0000658648 00000 n 0000660462 00000 n 0000660689 00000 n 0000662535 00000 n 0000662762 00000 n 0000668145 00000 n 0000668366 00000 n 0000684981 00000 n 0000690511 00000 n 0000690595 00000 n 0000690673 00000 n trailer << /Size 294 /Root 292 0 R /Info 293 0 R /ID [<4CEA60DB1E2B468A781A49265BE42E79> <4CEA60DB1E2B468A781A49265BE42E79>] >> startxref 690941 %%EOF fitdistrplus/inst/doc/paper2JSS.R0000644000176200001440000003405713422065107016435 0ustar liggesusers### R code from vignette source 'paper2JSS.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: par4vignette ################################################### options(digits = 4, prompt="R> ", SweaveHooks=list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1)))) set.seed(1234) ################################################### ### code chunk number 2: datgroundbeef ################################################### library("fitdistrplus") data("groundbeef") str(groundbeef) ################################################### ### code chunk number 3: figgroundbeef.echo (eval = FALSE) ################################################### ## plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) ################################################### ### code chunk number 4: figgroundbeefplot ################################################### getOption("SweaveHooks")[["fig"]]() plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) ################################################### ### code chunk number 5: descgroundbeef.echo (eval = FALSE) ################################################### ## descdist(groundbeef$serving, boot = 1000) ################################################### ### code chunk number 6: descgroundbeefplot ################################################### getOption("SweaveHooks")[["fig"]]() descdist(groundbeef$serving, boot = 1000) ################################################### ### code chunk number 7: fitgroundbeef.weibull ################################################### fw <- fitdist(groundbeef$serving, "weibull") summary(fw) ################################################### ### code chunk number 8: fitgroundbeef.echo ################################################### fg <- fitdist(groundbeef$serving, "gamma") fln <- fitdist(groundbeef$serving, "lnorm") par(mfrow = c(2, 2)) plot.legend <- c("Weibull", "lognormal", "gamma") denscomp(list(fw, fln, fg), legendtext = plot.legend) qqcomp(list(fw, fln, fg), legendtext = plot.legend) cdfcomp(list(fw, fln, fg), legendtext = plot.legend) ppcomp(list(fw, fln, fg), legendtext = plot.legend) ################################################### ### code chunk number 9: fitgroundbeef ################################################### getOption("SweaveHooks")[["fig"]]() par(mfrow=c(2, 2)) denscomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) qqcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) cdfcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) ppcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) ################################################### ### code chunk number 10: fitendo.echo ################################################### data("endosulfan") ATV <-endosulfan$ATV fendo.ln <- fitdist(ATV, "lnorm") library("actuar") fendo.ll <- fitdist(ATV, "llogis", start = list(shape = 1, scale = 500)) fendo.P <- fitdist(ATV, "pareto", start = list(shape = 1, scale = 500)) fendo.B <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE, legendtext = c("lognormal", "loglogistic", "Pareto", "Burr")) ################################################### ### code chunk number 11: fitendo ################################################### getOption("SweaveHooks")[["fig"]]() cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE,legendtext = c("lognormal","loglogistic","Pareto","Burr")) ################################################### ### code chunk number 12: quantilefitdist ################################################### quantile(fendo.B, probs = 0.05) quantile(ATV, probs = 0.05) ################################################### ### code chunk number 13: fendo.gof.print ################################################### gofstat(list(fendo.ln, fendo.ll, fendo.P, fendo.B), fitnames = c("lnorm", "llogis", "Pareto", "Burr")) ################################################### ### code chunk number 14: fitBurr.boot.echo ################################################### bendo.B <- bootdist(fendo.B, niter = 1001) ################################################### ### code chunk number 15: fitBurr.boot.results ################################################### summary(bendo.B) plot(bendo.B) ################################################### ### code chunk number 16: fitBurrbootplot ################################################### getOption("SweaveHooks")[["fig"]]() plot(bendo.B) ################################################### ### code chunk number 17: fitATV.lnorm.quantile ################################################### quantile(bendo.B, probs = 0.05) ################################################### ### code chunk number 18: fitATV.lnorm.quantileb ################################################### quantile(bendo.B, probs = 0.05) ################################################### ### code chunk number 19: mge.gofcomp.echo ################################################### fendo.ln.ADL <- fitdist(ATV, "lnorm", method = "mge", gof = "ADL") fendo.ln.AD2L <- fitdist(ATV, "lnorm", method = "mge", gof = "AD2L") cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", xlegend = "bottomright", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order")) ################################################### ### code chunk number 20: mgegofcompplot ################################################### getOption("SweaveHooks")[["fig"]]() cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order"), xlegend = "bottomright") ################################################### ### code chunk number 21: quantilefitdist ################################################### (HC5.estimates <- c( empirical = as.numeric(quantile(ATV, probs = 0.05)), Burr = as.numeric(quantile(fendo.B, probs = 0.05)$quantiles), lognormal_MLE = as.numeric(quantile(fendo.ln, probs = 0.05)$quantiles), lognormal_AD2 = as.numeric(quantile(fendo.ln.ADL, probs = 0.05)$quantiles), lognormal_AD2L = as.numeric(quantile(fendo.ln.AD2L, probs = 0.05)$quantiles))) ################################################### ### code chunk number 22: danish.mme ################################################### data("danishuni") str(danishuni) fdanish.ln.MLE <- fitdist(danishuni$Loss, "lnorm") fdanish.ln.MME <- fitdist(danishuni$Loss, "lnorm", method = "mme", order = 1:2) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend = c("lognormal MLE", "lognormal MME"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) ################################################### ### code chunk number 23: danishmmeplot ################################################### getOption("SweaveHooks")[["fig"]]() library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start=list(shape=10, scale=10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method="mme", order=1:2, memp="memp", start=list(shape=10, scale=10), lower=c(2+1e-6,2+1e-6), upper=c(Inf,Inf)) par(mfrow=c(1, 2)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend=c("lognormal MLE", "lognormal MME"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend=c("Pareto MLE", "Pareto MME"), main="Fitting a Pareto distribution", xlogscale=TRUE, datapch=20) ################################################### ### code chunk number 24: danish.mme.pareto ################################################### library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start = list(shape = 10, scale = 10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method = "mme", order = 1:2, memp = "memp", start = list(shape = 10, scale = 10), lower = c(2+1e-6, 2+1e-6), upper = c(Inf, Inf)) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend = c("Pareto MLE", "Pareto MME"), main = "Fitting a Pareto distribution", xlogscale = TRUE, datapch = ".") gofstat(list(fdanish.ln.MLE, fdanish.P.MLE, fdanish.ln.MME, fdanish.P.MME), fitnames = c("lnorm.mle", "Pareto.mle", "lnorm.mme", "Pareto.mme")) ################################################### ### code chunk number 25: danish.qme.echo ################################################### fdanish.ln.QME1 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(1/3, 2/3)) fdanish.ln.QME2 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(8/10, 9/10)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend = c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) ################################################### ### code chunk number 26: danishqmeplot ################################################### getOption("SweaveHooks")[["fig"]]() cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend=c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) ################################################### ### code chunk number 27: optimmethod.gamma ################################################### data("groundbeef") fNM <- fitdist(groundbeef$serving, "gamma", optim.method = "Nelder-Mead") fBFGS <- fitdist(groundbeef$serving, "gamma", optim.method = "BFGS") fSANN <- fitdist(groundbeef$serving, "gamma", optim.method = "SANN") fCG <- try(fitdist(groundbeef$serving, "gamma", optim.method = "CG", control = list(maxit = 10000))) if(class(fCG) == "try-error") fCG <- list(estimate = NA) ################################################### ### code chunk number 28: optimmethod.customgenoud ################################################### mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values = par, ...) standardres <- c(res, convergence = 0) return(standardres) } ################################################### ### code chunk number 29: optimmethod.customgenoud.fitdist ################################################### fgenoud <- mledist(groundbeef$serving, "gamma", custom.optim = mygenoud, nvars = 2, max.generations = 10, Domains = cbind(c(0,0), c(10,10)), boundary.enforcement = 1, hessian = TRUE, print.level = 0, P9 = 10) cbind(NM = fNM$estimate, BFGS = fBFGS$estimate, SANN = fSANN$estimate, CG = fCG$estimate, fgenoud = fgenoud$estimate) ################################################### ### code chunk number 30: datsalinity ################################################### data("salinity") str(salinity) ################################################### ### code chunk number 31: plotsalinity2.echo ################################################### plotdistcens(salinity, NPMLE = FALSE) ################################################### ### code chunk number 32: plotsalinity ################################################### getOption("SweaveHooks")[["fig"]]() plotdistcens(salinity,Turnbull = FALSE) ################################################### ### code chunk number 33: fitsalinity.echo ################################################### fsal.ln <- fitdistcens(salinity, "lnorm") fsal.ll <- fitdistcens(salinity, "llogis", start = list(shape = 5, scale = 40)) summary(fsal.ln) summary(fsal.ll) ################################################### ### code chunk number 34: fitsalinity.cdfcomp.echo (eval = FALSE) ################################################### ## par(mfrow=c(2, 2)) ## cdfcompcens(list(fsal.ln, fsal.ll), ## legendtext = c("lognormal", "loglogistic ")) ## qqcompcens(fsal.ln, legendtext = "lognormal") ## ppcompcens(fsal.ln, legendtext = "lognormal") ## qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), ## main = "Q-Q plot with 2 dist.") ################################################### ### code chunk number 35: fitsalinitycdfcompplot ################################################### getOption("SweaveHooks")[["fig"]]() par(mfrow=c(2, 2)) cdfcompcens(list(fsal.ln, fsal.ll), legendtext=c("lognormal", "loglogistic ")) qqcompcens(fsal.ln, legendtext = "lognormal") ppcompcens(fsal.ln, legendtext = "lognormal") qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), main = "Q-Q plot with 2 dist.") ################################################### ### code chunk number 36: dattoxocara ################################################### data("toxocara") str(toxocara) ################################################### ### code chunk number 37: fittoxocara.poisnbinom ################################################### (ftoxo.P <- fitdist(toxocara$number, "pois")) (ftoxo.nb <- fitdist(toxocara$number, "nbinom")) ################################################### ### code chunk number 38: fittoxocara.poisnbinom.echo ################################################### par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) ################################################### ### code chunk number 39: fittoxocarapoisnbinomplot ################################################### getOption("SweaveHooks")[["fig"]]() par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) ################################################### ### code chunk number 40: fittoxocara.poisnbinom.gof ################################################### gofstat(list(ftoxo.P, ftoxo.nb), fitnames = c("Poisson", "negative binomial")) fitdistrplus/inst/doc/FAQ.R0000644000176200001440000004610513422065016015267 0ustar liggesusers## ----setup, echo=FALSE, message=FALSE, warning=FALSE--------------------- require(fitdistrplus) set.seed(1234) options(digits = 3) ## ---- eval=FALSE--------------------------------------------------------- # dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) # pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) # qgumbel <- function(p, a, b) a-b*log(-log(p)) # data(groundbeef) # fitgumbel <- fitdist(groundbeef$serving, "gumbel", start=list(a=10, b=10)) ## ---- eval=FALSE--------------------------------------------------------- # dzmgeom <- function(x, p1, p2) p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) # pzmgeom <- function(q, p1, p2) p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2) # rzmgeom <- function(n, p1, p2) # { # u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 # u[u != 0] <- rgeom(sum(u != 0), p2)+1 # u # } # x2 <- rzmgeom(1000, 1/2, 1/10) # fitdist(x2, "zmgeom", start=list(p1=1/2, p2=1/2)) ## ---- message=FALSE------------------------------------------------------ data("endosulfan") library("actuar") fendo.B <- fitdist(endosulfan$ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) summary(fendo.B) ## ---- fig.height=3, fig.width=6------------------------------------------ x3 <- rlnorm(1000) f1 <- fitdist(x3, "lnorm", method="mle") f2 <- fitdist(x3, "lnorm", method="mme") par(mfrow=1:2) cdfcomp(list(f1, f2), do.points=FALSE, xlogscale = TRUE, main = "CDF plot") denscomp(list(f1, f2), demp=TRUE, main = "Density plot") ## ------------------------------------------------------------------------ c("E(X) by MME"=as.numeric(exp(f2$estimate["meanlog"]+f2$estimate["sdlog"]^2/2)), "E(X) by MLE"=as.numeric(exp(f1$estimate["meanlog"]+f1$estimate["sdlog"]^2/2)), "empirical"=mean(x3)) c("Var(X) by MME"=as.numeric(exp(2*f2$estimate["meanlog"]+f2$estimate["sdlog"]^2)*(exp(f2$estimate["sdlog"]^2)-1)), "Var(X) by MLE"=as.numeric(exp(2*f1$estimate["meanlog"]+f1$estimate["sdlog"]^2)*(exp(f1$estimate["sdlog"]^2)-1)), "empirical"=var(x3)) ## ------------------------------------------------------------------------ set.seed(1234) x <- rnorm(100, mean = 1, sd = 0.5) (try(fitdist(x, "exp"))) ## ------------------------------------------------------------------------ fitdist(x[x >= 0], "exp") fitdist(x - min(x), "exp") ## ------------------------------------------------------------------------ set.seed(1234) x <- rnorm(100, mean = 0.5, sd = 0.25) (try(fitdist(x, "beta"))) ## ------------------------------------------------------------------------ fitdist(x[x > 0 & x < 1], "beta") fitdist((x - min(x)*1.01) / (max(x) * 1.01 - min(x) * 1.01), "beta") ## ---- message=FALSE, fig.height=4, fig.width=8--------------------------- dtexp <- function(x, rate, low, upp) { PU <- pexp(upp, rate=rate) PL <- pexp(low, rate=rate) dexp(x, rate) / (PU-PL) * (x >= low) * (x <= upp) } ptexp <- function(q, rate, low, upp) { PU <- pexp(upp, rate=rate) PL <- pexp(low, rate=rate) (pexp(q, rate)-PL) / (PU-PL) * (q >= low) * (q <= upp) + 1 * (q > upp) } n <- 200 x <- rexp(n); x <- x[x > .5 & x < 3] f1 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x))) f2 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=.5, upp=3)) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, xlim=c(0, 3.5)) ## ---- message=FALSE, fig.height=4, fig.width=8--------------------------- dtiexp <- function(x, rate, low, upp) { PU <- pexp(upp, rate=rate, lower.tail = FALSE) PL <- pexp(low, rate=rate) dexp(x, rate) * (x >= low) * (x <= upp) + PL * (x == low) + PU * (x == upp) } ptiexp <- function(q, rate, low, upp) pexp(q, rate) * (q >= low) * (q <= upp) + 1 * (q > upp) n <- 100; x <- pmax(pmin(rexp(n), 3), .5) # the loglikelihood has a discontinous point at the solution par(mar=c(4,4,2,1), mfrow=1:2) llcurve(x, "tiexp", plot.arg="low", fix.arg = list(rate=2, upp=5), min.arg=0, max.arg=.5, lseq=200) llcurve(x, "tiexp", plot.arg="upp", fix.arg = list(rate=2, low=0), min.arg=3, max.arg=4, lseq=200) ## ---- fig.height=4, fig.width=6------------------------------------------ (f1 <- fitdist(x, "tiexp", method="mle", start=list(rate=3, low=0, upp=20))) (f2 <- fitdist(x, "tiexp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x)))) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, addlegend=FALSE, xlim=c(0, 3.5)) curve(ptiexp(x, 1, .5, 3), add=TRUE, col="blue", lty=3) legend("bottomright", lty=1:3, col=c("red", "green", "blue", "black"), leg=c("full MLE", "MLE fixed arg", "true CDF", "emp. CDF")) ## ------------------------------------------------------------------------ x <- rbeta(1000, 3, 3) dbeta2 <- function(x, shape, ...) dbeta(x, shape, shape, ...) pbeta2 <- function(q, shape, ...) pbeta(q, shape, shape, ...) fitdist(x, "beta2", start=list(shape=1/2)) ## ------------------------------------------------------------------------ x <- rbeta(1000, .3, .3) fitdist(x, "beta2", start=list(shape=1/2), optim.method="L-BFGS-B", lower=1e-2) ## ---- fig.height=3, fig.width=6------------------------------------------ set.seed(1234) x <- rgamma(n = 100, shape = 2, scale = 1) # fit of the good distribution fgamma <- fitdist(x, "gamma") # fit of a bad distribution fexp <- fitdist(x, "exp") g <- gofstat(list(fgamma, fexp), fitnames = c("gamma", "exp")) denscomp(list(fgamma, fexp), legendtext = c("gamma", "exp")) # results of the tests ## chi square test (with corresponding table with theoretical and observed counts) g$chisqpvalue g$chisqtable ## Anderson-Darling test g$adtest ## Cramer von Mises test g$cvmtest ## Kolmogorov-Smirnov test g$kstest ## ---- fig.height=3, fig.width=6------------------------------------------ set.seed(1234) x1 <- rpois(n = 100, lambda = 100) f1 <- fitdist(x1, "norm") g1 <- gofstat(f1) g1$kstest x2 <- rpois(n = 10000, lambda = 100) f2 <- fitdist(x2, "norm") g2 <- gofstat(f2) g2$kstest par(mfrow=1:2) denscomp(f1, demp = TRUE, addlegend = FALSE, main = "small sample") denscomp(f2, demp = TRUE, addlegend = FALSE, main = "big sample") ## ---- fig.height=3, fig.width=6------------------------------------------ set.seed(1234) x3 <- rpois(n = 500, lambda = 1) f3 <- fitdist(x3, "norm") g3 <- gofstat(f3) g3$kstest x4 <- rpois(n = 50, lambda = 1) f4 <- fitdist(x4, "norm") g4 <- gofstat(f4) g4$kstest par(mfrow=1:2) denscomp(f3, addlegend = FALSE, main = "big sample") denscomp(f4, addlegend = FALSE, main = "small sample") ## ------------------------------------------------------------------------ g3$chisqtable g3$chisqpvalue g4$chisqtable g4$chisqpvalue ## ------------------------------------------------------------------------ set.seed(1234) g <- rgamma(100, shape = 2, rate = 1) (f <- fitdist(g, "gamma")) (f0 <- fitdist(g, "exp")) L <- logLik(f) k <- length(f$estimate) # number of parameters of the complete distribution L0 <- logLik(f0) k0 <- length(f0$estimate) # number of parameters of the simplified distribution (stat <- 2*L - 2*L0) (critical_value <- qchisq(0.95, df = k - k0)) (rejected <- stat > critical_value) ## ------------------------------------------------------------------------ dshiftlnorm <- function(x, mean, sigma, shift, log = FALSE) dlnorm(x+shift, mean, sigma, log=log) pshiftlnorm <- function(q, mean, sigma, shift, log.p = FALSE) plnorm(q+shift, mean, sigma, log.p=log.p) qshiftlnorm <- function(p, mean, sigma, shift, log.p = FALSE) qlnorm(p, mean, sigma, log.p=log.p)-shift dshiftlnorm_no <- function(x, mean, sigma, shift) dshiftlnorm(x, mean, sigma, shift) pshiftlnorm_no <- function(q, mean, sigma, shift) pshiftlnorm(q, mean, sigma, shift) ## ------------------------------------------------------------------------ data(dataFAQlog1) y <- dataFAQlog1 D <- 1-min(y) f0 <- fitdist(y+D, "lnorm") start <- list(mean=as.numeric(f0$estimate["meanlog"]), sigma=as.numeric(f0$estimate["sdlog"]), shift=D) # works with BFGS, but not Nelder-Mead f <- fitdist(y, "shiftlnorm", start=start, optim.method="BFGS") summary(f) ## ---- error=FALSE-------------------------------------------------------- f2 <- try(fitdist(y, "shiftlnorm_no", start=start, optim.method="BFGS")) print(attr(f2, "condition")) ## ------------------------------------------------------------------------ sum(log(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) log(prod(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) sum(dshiftlnorm(y, 0.16383978, 0.01679231, 1.17586600, TRUE )) ## ---- eval=FALSE, echo=TRUE---------------------------------------------- # double dlnorm(double x, double meanlog, double sdlog, int give_log) # { # double y; # # #ifdef IEEE_754 # if (ISNAN(x) || ISNAN(meanlog) || ISNAN(sdlog)) # return x + meanlog + sdlog; # #endif # if(sdlog <= 0) { # if(sdlog < 0) ML_ERR_return_NAN; # // sdlog == 0 : # return (log(x) == meanlog) ? ML_POSINF : R_D__0; # } # if(x <= 0) return R_D__0; # # y = (log(x) - meanlog) / sdlog; # return (give_log ? # -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) : # M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)); # /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */ # # } ## ---- eval=FALSE, echo=TRUE---------------------------------------------- # -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) ## ---- eval=FALSE, echo=TRUE---------------------------------------------- # M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)) ## ------------------------------------------------------------------------ f2 <- fitdist(y, "shiftlnorm", start=start, lower=c(-Inf, 0, -min(y)), optim.method="Nelder-Mead") summary(f2) print(cbind(BFGS=f$estimate, NelderMead=f2$estimate)) ## ------------------------------------------------------------------------ data(dataFAQscale1) head(dataFAQscale1) summary(dataFAQscale1) ## ------------------------------------------------------------------------ for(i in 6:0) cat(10^i, try(mledist(dataFAQscale1*10^i, "cauchy")$estimate), "\n") ## ------------------------------------------------------------------------ data(dataFAQscale2) head(dataFAQscale2) summary(dataFAQscale2) ## ------------------------------------------------------------------------ for(i in 0:5) cat(10^(-2*i), try(mledist(dataFAQscale2*10^(-2*i), "cauchy")$estimate), "\n") ## ----scalenormal, echo=TRUE, warning=FALSE------------------------------- set.seed(1234) x <- rnorm(1000, 1, 2) fitdist(x, "norm", lower=c(-Inf, 0)) ## ----shapeburr, echo=TRUE, warning=FALSE--------------------------------- x <- rburr(1000, 1, 2, 3) fitdist(x, "burr", lower=c(0, 0, 0), start=list(shape1 = 1, shape2 = 1, rate = 1)) ## ----probgeom, echo=TRUE, warning=FALSE---------------------------------- x <- rgeom(1000, 1/4) fitdist(x, "geom", lower=0, upper=1) ## ----shiftexp, echo=TRUE, warning=FALSE---------------------------------- dsexp <- function(x, rate, shift) dexp(x-shift, rate=rate) psexp <- function(x, rate, shift) pexp(x-shift, rate=rate) rsexp <- function(n, rate, shift) rexp(n, rate=rate)+shift x <- rsexp(1000, 1/4, 1) fitdist(x, "sexp", start=list(rate=1, shift=0), lower= c(0, -min(x))) ## ---- message=FALSE------------------------------------------------------ library(GeneralizedHyperbolic) myoptim <- function(fn, par, ui, ci, ...) { res <- constrOptim(f=fn, theta=par, method="Nelder-Mead", ui=ui, ci=ci, ...) c(res, convergence=res$convergence, value=res$objective, par=res$minimum, hessian=res$hessian) } x <- rnig(1000, 3, 1/2, 1/2, 1/4) ui <- rbind(c(0,1,0,0), c(0,0,1,0), c(0,0,1,-1), c(0,0,1,1)) ci <- c(0,0,0,0) fitdist(x, "nig", custom.optim=myoptim, ui=ui, ci=ci, start=list(mu = 0, delta = 1, alpha = 1, beta = 0)) ## ---- fig.height=3, fig.width=6------------------------------------------ pgeom(0:3, prob=1/2) qgeom(c(0.3, 0.6, 0.9), prob=1/2) par(mar=c(4,4,2,1), mfrow=1:2) curve(pgeom(x, prob=1/2), 0, 10, n=301, main="c.d.f.") curve(qgeom(x, prob=1/2), 0, 1, n=301, main="q.f.") ## ------------------------------------------------------------------------ x <- c(0, 0, 0, 0, 1, 1, 3, 2, 1, 0, 0) median(x[-1]) #sample size 10 median(x) #sample size 11 ## ---- fig.height=4, fig.width=6------------------------------------------ x <- rgeom(100, 1/3) L2 <- function(p) (qgeom(1/2, p) - median(x))^2 L2(1/3) #theoretical value curve(L2(x), 0.10, 0.95, xlab=expression(p), ylab=expression(L2(p)), main="squared differences", n=301) ## ------------------------------------------------------------------------ fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/2), control=list(trace=1, REPORT=1)) fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/20), control=list(trace=1, REPORT=1)) ## ------------------------------------------------------------------------ fitdist(x, "geom", method="qme", probs=1/2, optim.method="SANN", start=list(prob=1/20)) fitdist(x, "geom", method="qme", probs=1/2, optim.method="SANN", start=list(prob=1/2)) ## ---- fig.height=4, fig.width=6------------------------------------------ par(mar=c(4,4,2,1)) x <- rpois(100, lambda=7.5) L2 <- function(lam) (qpois(1/2, lambda = lam) - median(x))^2 curve(L2(x), 6, 9, xlab=expression(lambda), ylab=expression(L2(lambda)), main="squared differences", n=201) ## ------------------------------------------------------------------------ fitdist(x, "pois", method="qme", probs=1/2, start=list(lambda=2)) fitdist(x, "pois", method="qme", probs=1/2, optim.method="SANN", start=list(lambda=2)) ## ---- fig.height=4, fig.width=4, warning = FALSE------------------------- set.seed(1234) n <- rnorm(30, mean = 10, sd = 2) fn <- fitdist(n, "norm") bn <- bootdist(fn) bn$CI fn$estimate + cbind("estimate"= 0, "2.5%"= -1.96*fn$sd, "97.5%"= 1.96*fn$sd) llplot(fn, back.col = FALSE) ## ---- fig.height=4, fig.width=4, warning = FALSE------------------------- set.seed(1234) g <- rgamma(30, shape = 0.1, rate = 10) fg <- fitdist(g, "gamma") bg <- bootdist(fg) bg$CI fg$estimate + cbind("estimate"= 0, "2.5%"= -1.96*fg$sd, "97.5%"= 1.96*fg$sd) llplot(fg, back.col = FALSE) ## ---- fig.height=3, fig.width=4, warning = FALSE------------------------- data(salinity) log10LC50 <-log10(salinity) fit <- fitdistcens(log10LC50, "norm") # Bootstrap bootsample <- bootdistcens(fit, niter = 101) #### We used only 101 iterations in that example to limit the calculation time but #### in practice you should take at least 1001 bootstrap iterations # Calculation of the quantile of interest (here the 5 percent hazard concentration) (HC5 <- quantile(bootsample, probs = 0.05)) # visualizing pointwise confidence intervals on other quantiles CIcdfplot(bootsample, CI.output = "quantile", CI.fill = "pink", xlim = c(0.5,2), main = "") ## ------------------------------------------------------------------------ exposure <- 1.2 # Bootstrap sample of the PAF at this exposure PAF <- pnorm(exposure, mean = bootsample$estim$mean, sd = bootsample$estim$sd) # confidence interval from 2.5 and 97.5 percentiles quantile(PAF, probs = c(0.025, 0.975)) ## ---- fig.height=6, fig.width=6, warning = FALSE------------------------- data(groundbeef) serving <- groundbeef$serving fit <- fitdist(serving, "gamma") par(mfrow = c(2,2), mar = c(4, 4, 1, 1)) denscomp(fit, addlegend = FALSE, main = "", xlab = "serving sizes (g)", fitcol = "orange") qqcomp(fit, addlegend = FALSE, main = "", fitpch = 16, fitcol = "grey", line01lty = 2) cdfcomp(fit, addlegend = FALSE, main = "", xlab = "serving sizes (g)", fitcol = "orange", lines01 = TRUE) ppcomp(fit, addlegend = FALSE, main = "", fitpch = 16, fitcol = "grey", line01lty = 2) ## ---- fig.height= 4, fig.width= 6, warning = FALSE----------------------- library(ggplot2) fitW <- fitdist(serving, "weibull") fitln <- fitdist(serving, "lnorm") fitg <- fitdist(serving, "gamma") dcomp <- denscomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), xlab = "serving sizes (g)", xlim = c(0, 250), fitcol = c("red", "green", "orange"), fitlty = 1, xlegend = "topright", plotstyle = "ggplot", addlegend = FALSE) dcomp + ggplot2::theme_minimal() + ggplot2::ggtitle("Ground beef fits") ## ------------------------------------------------------------------------ dtoy <- data.frame(left = c(NA, 2, 4, 6, 9.7, 10), right = c(1, 3, 7, 8, 9.7, NA)) dtoy ## ------------------------------------------------------------------------ exitage <- c(81.1,78.9,72.6,67.9,60.1,78.3,83.4,66.9,74.8,80.5,75.6,67.1, 75.3,82.8,70.1,85.4,74,70,71.6,76.5) death <- c(0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0) ## ------------------------------------------------------------------------ svdata <- Surv(exitage, death) ## ------------------------------------------------------------------------ fitdstdata <- cbind.data.frame(left=svdata[,"time"], right=NA) fitdstdata$right[svdata[,"status"] == 1] <- fitdstdata$left[svdata[,"status"] == 1] ## ---- fig.height= 4, fig.width= 6---------------------------------------- flnormc <- fitdistcens(fitdstdata, "lnorm") fweic <- fitdistcens(fitdstdata, "weibull") cdfcompcens(list(fweic, flnormc), xlim=range(exitage), xlegend = "topleft") ## ---- fig.height= 4, fig.width= 8---------------------------------------- par(mfrow = c(1,2), mar = c(3, 4, 3, 0.5)) plotdistcens(dtoy, NPMLE = FALSE) data(smokedfish) dsmo <- log10(smokedfish) plotdistcens(dsmo, NPMLE = FALSE) ## ---- fig.height= 6, fig.width= 6---------------------------------------- par(mfrow = c(2, 1), mar = c(3, 4, 3, 0.5)) # Turnbull plot of the ECDF plotdistcens(dsmo, NPMLE.method = "Turnbull", xlim = c(-1.8, 2.4)) # Wang plot of the ECD plotdistcens(dsmo, NPMLE.method = "Wang") ## ---- echo = FALSE, fig.height= 4, fig.width= 8-------------------------- d <- data.frame(left = c(NA, 2, 4, 6, 9.5, 10), right = c(1, 3, 7, 8, 9.5, NA)) addbounds <- function(d) { xbounds <- c(d$left, d$right) xboundsnotNA <- xbounds[!is.na(xbounds)] abline(v = xboundsnotNA, col = "grey") } addLR <- function(d) { Lbounds <- d$left[!is.na(d$left)] Rbounds <- d$right[!is.na(d$right)] range <- range(c(Lbounds,Rbounds)) eps <- (range[2] - range[1]) * 0.01 text(x = Lbounds-eps, y = 0.05, labels = "L", col = "red", cex = 0.75) text(x = Rbounds+eps, y = 0.05, labels = "R", col = "red", cex = 0.75) } addeq <- function(deq) { left <- deq$left left[is.na(left)] <- -100 right <- deq$right right[is.na(right)] <- 100 rect(left, -2, right, 2, density = 10) } par(mfrow = c(2,1), mar = c(2, 4, 3, 0.5)) # First step plotdistcens(d, NPMLE = FALSE, lwd = 2, col = "blue", main = "Step 1 : identification of equivalence classes") addbounds(d) addLR(d) deq <- data.frame(left = c(NA, 2, 6, 9.5, 10), right = c(1, 3, 7,9.5, NA)) addeq(deq) # Second step plotdistcens(d, lwd = 2, main = "Step 2 : estimation of mass probabilities") ## ------------------------------------------------------------------------ fnorm <- fitdistcens(dsmo,"norm") flogis <- fitdistcens(dsmo,"logis") # comparison of AIC values summary(fnorm)$aic summary(flogis)$aic ## ---- fig.height= 6, fig.width= 6---------------------------------------- par(mar = c(2, 4, 3, 0.5)) plot(fnorm) ## ---- fig.height= 4, fig.width= 4---------------------------------------- cdfcompcens(list(fnorm, flogis), fitlty = 1) qqcompcens(list(fnorm, flogis)) ppcompcens(list(fnorm, flogis)) ## ---- fig.height= 4, fig.width= 8---------------------------------------- qqcompcens(list(fnorm, flogis), lwd = 2, plotstyle = "ggplot", fitcol = c("red", "green"), fillrect = c("pink", "lightgreen"), legendtext = c("normal distribution", "logistic distribution")) fitdistrplus/tests/0000755000176200001440000000000013406643052014153 5ustar liggesusersfitdistrplus/tests/t-CIcdfplot.R0000644000176200001440000000453412772503243016416 0ustar liggesuserslibrary(fitdistrplus) nbboot <- 201 nbboot <- 10 # (1) Fit of a gamma distribution # set.seed(123) s1 <- rgamma(20, 3, 2) f1 <- fitdist(s1, "gamma") b1 <- bootdist(f1, niter=nbboot, silent=TRUE) plot(b1) quantile(b1) par(mfrow=c(1,2)) CIcdfplot(b1, CI.level=95/100, CI.output = "probability", CI.fill="grey80", CI.col="black") CIcdfplot(b1, CI.level=95/100, CI.output = "quantile", datacol="blue") par(mfrow=c(1,2)) CIcdfplot(b1, CI.level=90/100, CI.output = "probability") CIcdfplot(b1, CI.level=90/100, CI.output = "quantile", CI.col="black", CI.type = "less", CI.fill="grey85", verticals=TRUE, datacol="blue", do.points=FALSE) par(mfrow=c(1,2)) CIcdfplot(b1, CI.level=90/100, CI.output = "probability", CI.type = "greater") CIcdfplot(b1, CI.level=90/100, CI.output = "quantile", CI.col="black", CI.type = "greater", CI.fill="grey90", datacol="blue", datapch=21) par(mfrow=c(1,1)) CIcdfplot(b1, CI.level=90/100, CI.output = "probability", CI.col="black", CI.type = "less", CI.fill="grey90") CIcdfplot(b1, CI.level=90/100, CI.output = "quantile", CI.col="black", CI.type = "less", CI.fill="grey90", verticals=TRUE, datacol="blue", do.points=FALSE) CIcdfplot(b1, CI.level=90/100, CI.output = "quantile", CI.col="grey90", CI.type = "less", CI.fill="grey90", verticals=TRUE, datacol="blue", do.points=FALSE, CI.only=TRUE) CIcdfplot(b1, CI.level=90/100, CI.output = "probability", CI.col="grey85", CI.type = "less", CI.fill="grey90", CI.only = TRUE) # (2) an example from ecotoxicology # with censored data # data(salinity) log10LC50 <-log10(salinity) fln <- fitdistcens(log10LC50,"norm") bln <- bootdistcens(fln, niter=nbboot) (HC5ln <- quantile(bln,probs = 0.05)) CIcdfplot(bln, CI.output = "quantile", CI.fill = "lightblue", CI.col = "blue", xlab = "log10(LC50)",xlim=c(0.5,2),lines01 = TRUE) # zoom around the HC5 with CI on quantiles CIcdfplot(bln, CI.output = "quantile", CI.fill = "lightblue", CI.col = "blue", xlab = "log10(LC50)", lines01 = TRUE, xlim = c(0.8, 1.5), ylim = c(0, 0.1)) abline(h = 0.05, lty = 1) # zoom around the HC5 with CI on probabilities CIcdfplot(bln, CI.output = "probability", CI.fill = "lightblue", CI.col = "blue", xlab = "log10(LC50)", lines01 = TRUE, xlim = c(0.8, 1.5), ylim = c(0, 0.1)) abline(h = 0.05, lty = 1) #some ideas from http://edild.github.io/ssd/ fitdistrplus/tests/t-qme-discrete.R0000644000176200001440000000224013343175501017116 0ustar liggesuserslibrary(fitdistrplus) set.seed(1234) #Poisson x <- rpois(100, lambda=7.5) L2 <- function(lam) (qpois(1/2, lambda = lam) - median(x))^2 curve(L2(x), 5, 9, xlab=expression(lambda), ylab=expression(L2(lambda)), main="squared differences", n=201) fitdist(x, "pois", method="qme", probs=1/2, start=list(lambda=2), control=list(trace=1, REPORT=1)) fitdist(x, "pois", method="qme", probs=1/2, start=list(lambda=6.8), control=list(trace=1, REPORT=1)) fitdist(x, "pois", method="qme", probs=1/2, start=list(lambda=15), control=list(trace=1, REPORT=1)) fitdist(x, "pois", method="qme", optim.method="SANN", probs=1/2, start=list(lambda=2), control=list(trace=1, REPORT=100)) fitdist(x, "pois", method="qme", optim.method="SANN", probs=1/2, start=list(lambda=17), control=list(trace=1, REPORT=100)) #Geometric x <- rgeom(100, 1/3) L2 <- function(p) (qgeom(1/2, p) - median(x))^2 curve(L2(x), 0.10, 0.95, xlab=expression(p), ylab=expression(L2(p)), main="squared differences", n=301) fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/2), control=list(trace=1, REPORT=1)) fitdist(x, "geom", method="qme", probs=1/2, start=list(prob=1/20), control=list(trace=1, REPORT=1)) fitdistrplus/tests/t-mmedist.R0000644000176200001440000001274213310705056016204 0ustar liggesuserslibrary(fitdistrplus) # (1) basic fit of a normal distribution with moment matching estimation # set.seed(1234) x1 <- rnorm(n=100) mmedist(x1,"norm") try(mmedist(x1,"norm", fix.arg=list(mean=0))) # (2) fit a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) mmedist(x2,"pois") # (3) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) mmedist(x3,"beta") # (4) fit a Pareto distribution # if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) #simulate a sample x4 <- rpareto(1000, 6, 2) #empirical raw moment memp <- function(x, order) mean(x^order) #fit mmedist(x4, "pareto", order=c(1, 2), memp=memp, start=c(shape=10, scale=10), lower=1, upper=Inf) mmedist(x4, "pareto", order=1, memp=memp, start=list(shape=10), fix.arg=list(scale=1.5), lower=2, upper=Inf) mmedist(x4, "pareto", order=1, memp=memp, start=function(x) list(shape=10), fix.arg=list(scale=1.5), lower=2, upper=Inf) mmedist(x4, "pareto", order=1, memp=memp, start=list(shape=10), fix.arg=function(x) list(scale=1.5), lower=2, upper=Inf) #weights memp2 <- function(x, order, weights) sum(x^order * weights)/sum(weights) w <- rep(1, length(x4)) w[x4 < 1] <- 2 mmedist(x4, "pareto", order=c(1, 2), memp=memp2, weights=w, start=list(shape=10, scale=10), lower=1, upper=Inf) #fit data(danishuni) fparedanishMME <- mmedist(danishuni$Loss, "pareto", order=1:2, memp=memp, start=c(shape=10, scale=10), lower=2+1e-6, upper=Inf) c(theo = mpareto(1, fparedanishMME$estimate[1], fparedanishMME$estimate[2]), emp = memp(danishuni$Loss, 1)) c(theo = mpareto(2, fparedanishMME$estimate[1], fparedanishMME$estimate[2]), emp = memp(danishuni$Loss, 2)) } # (5) fit a lognormal distribution # f1 <- mledist(x3, "lnorm") #previously mmedist was the same as mledist f2 <- mmedist(x3, "lnorm") n <- length(x3) s2 <- log(1+var(x3)/mean(x3)^2*(n-1)/n) mu <- log(mean(x3)) - s2/2 cbind(c(mu, s2), f2$estimate) c(truestim=exp(mu+s2/2), jensen=as.numeric(exp(f1$estimate["meanlog"]+f1$estimate["sdlog"]^2/2)), emp=mean(x3)) c(truestim=exp(2*mu+s2)*(exp(s2)-1), jensen=as.numeric(exp(2*f1$estimate["meanlog"]+f1$estimate["sdlog"]^2)*(exp(f1$estimate["sdlog"]^2)-1)), emp=var(x3)*(n-1)/n) # (6) test error messages # mnorm3 <- dnorm3 <- function(x, a) "NA" x <- rnorm(10) #should get a one-line error res <- mmedist(x, "norm3", start=list(a=1), order=1, memp=function(x, order) mean(x)) #as in attr(try(log("a"), silent=TRUE), "condition") # (7) fit of a normal distribution with weighted moment matching estimation # n <- length(x1) w <- c(rep(1, n/2), rep(10, n/2)) mmedist(x1, "norm", weights=w)$estimate #check sum(w*x1)/sum(w) fitdistrplus:::wtd.mean(x1, w) sum(w*(x1-sum(w*x1)/sum(w))^2)/sum(w) fitdistrplus:::wtd.var(x1, w) mmedist(exp(x1), "lnorm", weights=w)$estimate #test non integer weights try(mmedist(x1, "norm", weights=rep(1/3, length(x1)))) try(mmedist(1:10, "pois", weights=c(rep(1, 9), 1.001), start=list(lambda=mean(x)))) try(mmedist(1:10, "pois", weights=c(rep(1, 9), 1.0000001), start=list(lambda=mean(x)))) # (8) fit of a neg binom distribution with weighted moment matching estimation # x4 <- rnbinom(100, 5, 1/2) table(x4) w <- rep(1, length(x4)) w[x4 > 10] <- 2 mmedist(x4, "nbinom", weights=w)$estimate mmedist(x4, "nbinom", weights=NULL)$estimate # (9) relevant example for zero modified geometric distribution # rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } dzmgeom <- function(x, p1, p2) { p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) } mgeom <- function(order, prob) { if(order == 1) (1-prob)/(prob) else if(order == 2) (2-3*prob+prob^2)/prob^2 else stop("not yet implemented") } c(mean(rgeom(1e4, 1/6)), mgeom(1, 1/6)) c(mean(rgeom(1e4, 1/6)^2), mgeom(2, 1/6)) mzmgeom <- function(order, p1, p2) #raw moment { if(order == 1) (1-p1)*( mgeom(1, p2) + 1 ) + p1*0 #mean else if(order == 2) (1-p1)*( mgeom(2, p2)+ 2*mgeom(1, p2)+1) + p1*0 #E(X^2) else stop("not yet implemented") } c(mean(rzmgeom(1e4, 1/3, 1/6)), mzmgeom(1, 1/3, 1/6)) c(mean(rzmgeom(1e4, 1/3, 1/6)^2), mzmgeom(2, 1/3, 1/6)) memp1 <- function(x, order) mean(x^order) memp2 <- function(x, order, weights) sum(x^order * weights)/sum(weights) x5 <- rzmgeom(1e4, 1/3, 1/6) w <- rep(1, length(x5)) w[x5 > 20] <- 2 mmedist(x5, "zmgeom", order=1:2, memp=memp1, start=list(p1=mean(x5 == 0), p2=1/mean(x5[x5 > 0])), lower=0.01, upper=0.99)$estimate mmedist(x5, "zmgeom", order=1:2, memp=memp2, start=list(p1=mean(x5 == 0), p2=1/mean(x5[x5 > 0])), weights=w)$estimate mmedist(x5, "zmgeom", order=1:2, memp=memp1, start=list(p1=mean(x5 == 0), p2=1/mean(x5[x5 > 0])), lower=0.01, upper=0.99)$loglik mmedist(x5, "zmgeom", order=1:2, memp=memp2, start=list(p1=mean(x5 == 0), p2=1/mean(x5[x5 > 0])), weights=w)$loglik # (10) bounds # if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) #simulate a sample x4 <- rpareto(1000, 6, 2) #empirical raw moment memp <- function(x, order) mean(x^order) #fit mmedist(x4, "pareto", order=c(1, 2), memp=memp, start=c(shape=10, scale=10), lower=1, upper=Inf, optim.method = "L-BFGS-B") #L-BFGS-B via optim mmedist(x4, "pareto", order=c(1, 2), memp=memp, start=c(shape=10, scale=10), lower=1, upper=Inf, optim.method = "Nelder") #Nelder Mead via constrOptim } fitdistrplus/tests/t-cvg-algo.R0000644000176200001440000001021613344222463016236 0ustar liggesuserslibrary(fitdistrplus) if(FALSE) { #(1) beta distribution # n <- 100 set.seed(12345) x <- rbeta(n, 3, 3/4) psi <- function(x) digamma(x) grbetalnl <- function(x, a, b) c(log(x)-psi(a)+psi(a+b), log(1-x)-psi(b)+psi(a+b)) #grbetalnl(x, 3, 4) grlnL <- function(par, obs, ...) -rowSums(sapply(obs, function(x) grbetalnl(x, a=par[1], b=par[2]))) #rowSums(sapply(x, function(x) grbetalnl(x, 3, 4))) #grlnL(c(3, 4), x) #grlnL(c(3, 3/4), x) constrOptim2 <- function(par, fn, gr=NULL, ui, ci, ...) constrOptim(theta=unlist(par), f=fn, grad=gr, ui=ui, ci=ci, ...) #control parameters ctr <- list(trace=3, REPORT=1, maxit=1000) ctr <- list(trace=0, REPORT=1, maxit=1000) bfgs_gr$time <- system.time(bfgs_gr <- mledist(x, dist="beta", optim.method="BFGS", gr=grlnL, control=ctr))[3] bfgs <- mledist(x, dist="beta", optim.method="BFGS", control=ctr) lbfgs_gr <- mledist(x, dist="beta", optim.method="L-BFGS-B", gr=grlnL, control=ctr, lower=c(0,0)) lbfgs <- mledist(x, dist="beta", optim.method="L-BFGS-B", control=ctr, lower=c(0,0)) cg_gr <- mledist(x, dist="beta", optim.method="CG", gr=grlnL, control=ctr) cg <- mledist(x, dist="beta", optim.method="CG", control=ctr) nm_gr <- mledist(x, dist="beta", optim.method="Nelder", gr=grlnL, control=ctr) nm <- mledist(x, dist="beta", optim.method="Nelder", control=ctr) constr_nm_gr <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="Nelder", gr=grlnL, control=ctr) constr_nm <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="Nelder", control=ctr) constr_bfgs_gr <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="BFGS", gr=grlnL, control=ctr) constr_bfgs <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="BFGS", control=ctr) constr_cg_gr <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="CG", gr=grlnL, control=ctr) constr_cg <- mledist(x, dist="beta", custom.optim=constrOptim2, ui = diag(2), ci = c(0, 0), optim.method="CG", control=ctr) lnL <- function(par, fix.arg, obs, ddistnam) { fitdistrplus:::loglikelihood(par, fix.arg, obs, ddistnam, weights = rep(1, NROW(obs))) } constrOptim2(c(shape1=1, shape2=1), lnL, obs=x, fix.arg=NULL, ddistnam="dbeta", ui = diag(2), ci = c(0, 0)) #no log dbeta3 <- function(x, shape1, shape2) dbeta(x, shape1, shape2) #Ripley trick : param transform dbeta2 <- function(x, shape1, shape2, log) dbeta(x, exp(shape1), exp(shape2), log=log) pbeta2 <- function(q, shape1, shape2, log.p) pbeta(q, exp(shape1), exp(shape2), log.p=log.p) bfgs2 <- mledist(x, dist="beta2", optim.method="BFGS", control=ctr, start=list(shape1=0, shape2=0)) bfgs3 <- mledist(x, dist="beta3", optim.method="BFGS", control=ctr, start=list(shape1=1, shape2=1)) getval <- function(x) c(x$estimate, loglik=x$loglik, x$counts) getval2 <- function(x) c(exp(x$estimate), loglik=x$loglik, x$counts) cbind(trueval=c(3, 3/4, lnL(c(3, 3/4), NULL, x, "dbeta"), NA, NA), NM=getval(nm), NMgrad=getval(nm_gr), constr_NM=getval(constr_nm), constr_NMgrad=getval(constr_nm_gr), CG=getval(cg), CGgrad=getval(cg_gr), constr_CG=getval(constr_cg), constr_CGgrad=getval(constr_cg_gr), BFGS=getval(bfgs), BFGSgrad=getval(bfgs_gr), constr_BFGS=getval(constr_bfgs), constr_BFGSgrad=getval(constr_bfgs_gr), BFGS_exp=getval2(bfgs2), BFGS_nolog=getval(bfgs3)) llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3), plot.arg=c("shape1", "shape2"), lseq=50, data=x, distr="beta") points(bfgs$estimate[1], bfgs$estimate[2], pch="+", col="red") points(3, 3/4, pch="x", col="green") } fitdistrplus/tests/t-fitdistcens.R0000644000176200001440000000477013375226222017067 0ustar liggesuserslibrary(fitdistrplus) nsample <- 500 nsample <- 50 visualize <- FALSE # TRUE for manual tests with visualization of results set.seed(1234) # (6) custom optimisation function - example with the genetic algorithm # data(fluazinam) log10EC50 <-log10(fluazinam) #wrap genoud function rgenoud package mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values=par, ...) standardres <- c(res, convergence=0) return(standardres) } # call fitdistcens with a 'custom' optimization function fit.with.genoud <- fitdistcens(log10EC50, "logis", custom.optim=mygenoud, nvars=2, start=list(location=0, scale=1), Domains=cbind(c(0,0), c(5, 5)), boundary.enforcement=1, print.level=1, hessian=TRUE) summary(fit.with.genoud) # (9) check keepdata # if (visualize) # LONG TO RUN ON CRAN AND NEEDS VISALIZATION OF RESULTS { set.seed(1234) x <- rexp(1e3, 5) # x <- data.frame(left=x, right=x+rexp(x, 1/2)) x <- data.frame(left=x, right=x) f1 <- fitdistcens(x, "exp", keepdata=FALSE) f2 <- fitdistcens(x, "exp", keepdata=TRUE) f1$censdata f2$censdata plot(f1) plot(f2) } # (9) fixing parameters # x <- rexp(nsample, 5) x <- data.frame(left=x, right=x+.1) f1 <- fitdistcens(x, "gamma", fix.arg=list(shape=1.5)) f1 f1$fix.arg f1 <- fitdistcens(x, "gamma", fix.arg=function(x) list(shape=1.5)) f1 f1$fix.arg.fun # (10) weights # data(salinity) salinity.unique <- unique(salinity) string.unique <- paste(salinity.unique$left, salinity.unique$right) string.salinity <- paste(salinity$left, salinity$right) nobs <- nrow(salinity.unique) salinity.weights <- numeric(nobs) for (i in 1:nobs) { salinity.weights[i] <- length(which(string.salinity == string.unique[i])) } cbind(salinity.unique, salinity.weights) (fa <- fitdistcens(salinity, "lnorm")) (fb <- fitdistcens(salinity.unique, "lnorm", weights = salinity.weights)) # should give the same results # (11) check the warning messages when using weights in the fit followed by functions # that do not yet take weights into account # with an example to be used later to see if weights are well taken into account # x <- rexp(100, 5) x <- sort(x) x <- data.frame(left=x, right=x+.1) (f <- fitdistcens(x, "gamma", weights=c(rep(10, 50), rep(1, 50)))) try(plot(f)) try(cdfcompcens(f)) (f2 <- fitdistcens(x, "weibull", weights=c(rep(10, 50), rep(1, 50)))) try(cdfcompcens(list(f, f2))) try(bootdistcens(f)) fitdistrplus/tests/t-mledist-cens.R0000644000176200001440000000376713310705056017140 0ustar liggesuserslibrary(fitdistrplus) # (1) fit a user-defined continuous distribution (Gumbel) to censored data. # data(fluazinam) log10EC50 <-log10(fluazinam) # definition of the Gumbel distribution dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) qgumbel <- function(p,a,b) a-b*log(-log(p)) mledist(log10EC50, "gumbel", start=list(a=0,b=2), optim.method="Nelder-Mead") mledist(log10EC50, "gumbel", start=list(a=0,b=2)) #default NM # (2) test optimization arguments to censored data MLE. # mledist(log10EC50, "lnorm", optim.method="BFGS") mledist(log10EC50, "lnorm", optim.method="Nelder") #optim() is used mledist(log10EC50, "lnorm", optim.method="L-BFGS-B", lower=0) mledist(log10EC50, "lnorm", optim.method="BFGS", lower=0) #a simple warning #constrOptim() is used mledist(log10EC50, "lnorm", optim.method="Nelder", lower=0) mledist(log10EC50, "lnorm", lower=0) #error # (3) weighted MLE # xleft <- c(-1.8, -0.6, -0.1, 0.07, 0.14, 1, 1.2, 1.2, 1.2) xright <- c(-1.8, -0.6, -0.1, 0.07, 0.14, 1, NA, NA, NA) d <- data.frame(left = xleft, right = xright) f1 <- mledist(d, "norm") dbis <- data.frame(left = c(-1.8, -0.6, -0.1, 0.07, 0.14, 1, 1.2), right = c(-1.8, -0.6, -0.1, 0.07, 0.14, 1, NA)) f2 <- mledist(dbis, "norm", weights = c(rep(1,6),3)) # f1 and f2 must give quite the same results (only starting values differ) f1$estimate f2$estimate # (4) test the definition of fix.arg/start.arg as functions # if defined as functions, start.arg and fix.arg must be # functions of pseudo data (output pseudo of cens2pseudo()) mledist(d, "norm", start = function(x) list(mean = 0, sd = 1))$estimate mledist(d, "norm", start = function(x) list(mean = mean(x), sd = 1))$estimate mledist(d, "norm", fix.arg = function(x) list(mean = 0))$estimate mledist(d, "norm", fix.arg = function(x) list(mean = 0.544))$estimate mledist(d, "norm", fix.arg = function(x) list(mean = mean(x)))$estimate fitdistrplus/tests/t-plotdistcens.R0000644000176200001440000000430713342003075017250 0ustar liggesuserslibrary(fitdistrplus) # (1) Plot of an empirical censored distribution (censored data) as a CDF # using the default Turnbull method # data(smokedfish) plotdistcens(smokedfish) d1 <- as.data.frame(log10(smokedfish)) plotdistcens(d1) # (2) Add the CDF of a normal distribution and QQ and PP plots # plotdistcens(smokedfish,"lnorm", para=list(meanlog=-3.6,sdlog=3.5)) plotdistcens(d1,"norm", para=list(mean=-1.6,sd=1.5)) # (3) Various plots of the same empirical distribution # # default Wang plot plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Wang") plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Wang", lwd = 3, main = "Wang ECDF plot") # Turnbull plot plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Turnbull", col = "red", main = "Turnbull ECDF plot") plotdistcens(d1,Turnbull = TRUE) # deprecated way to do it # Turnbull plot with confidence intervals plotdistcens(d1,NPMLE = TRUE, NPMLE.method = "Turnbull", Turnbull.confint = TRUE) plotdistcens(d1,Turnbull = TRUE,Turnbull.confint = TRUE) # deprecated way to do it # with intervals and points plotdistcens(d1,NPMLE = FALSE) plotdistcens(d1,NPMLE = FALSE, col = "red", lwd = 2) plotdistcens(d1,rightNA=3, NPMLE = FALSE) plotdistcens(d1,rightNA=3, Turnbull = FALSE) # deprecated way to do it # with intervals and points # defining a minimum value for left censored values plotdistcens(d1,leftNA=-3, NPMLE = FALSE) # (4) Goodness-of-fit plots for the same dataset after logarithmic transformation # with a lognormal distribution, successively using the three proposed methods # d3 <- smokedfish plotdistcens(d3,"lnorm",para=list(meanlog=-3.6,sdlog=3.5), main = "Wang plot") plotdistcens(d3,"lnorm",para=list(meanlog=-3.6,sdlog=3.5), NPMLE.method = "Turnbull", main = "Turnbull plot") plotdistcens(d3,"lnorm",para=list(meanlog=-3.6,sdlog=3.5), NPMLE = FALSE, leftNA=0, main = "Plot of ordered intervals") # Test with the salinity data set # data(salinity) log10LC50 <-log10(salinity) plotdistcens(log10LC50) plotdistcens(log10LC50, NPMLE.method = "Turnbull") plotdistcens(log10LC50, NPMLE = FALSE) fn <- fitdistcens(log10LC50,"norm") fl <- fitdistcens(log10LC50,"logis") plot(fn) plot(fl) fitdistrplus/tests/t-fitbench.R0000644000176200001440000000123213343175501016316 0ustar liggesusersrequire(fitdistrplus) if(FALSE) { x <- rgamma(1e3, shape=3/2, rate= 1/2) initval <- unlist(fitdistrplus:::start.arg.default(x, "gamma")) fitdistrplus:::fitbench(x, "gamma", "mle") fitdistrplus:::fitbench(x, "gamma", "mle", lower=0) # grgam(1:2, x) # grgamlnl(x[1], shape=1, rate=2) # grgamlnl(x[1:2], shape=1, rate=2) fitdistrplus:::fitbench(x, "gamma", "mle", grad=fitdistrplus:::grlnlgamma) fitdistrplus:::fitbench(x, "gamma", "mle", grad=fitdistrplus:::grlnlgamma, lower=0) #mledist(x, "gamma", grad=grgam, lower=0, optim.method = "CG") #mledist(x, "gamma", grad=grgam, lower=0, optim.method = "BFGS") } fitdistrplus/tests/t-fitdist-customoptim.R0000644000176200001440000000174013343175501020567 0ustar liggesusersmyoptimize <- function(fn,par,ui,ci,...){ res <- constrOptim(f=fn,theta=par,method="Nelder-Mead",ui=ui,ci=ci, ...) standardres <- c(res,convergence=0,value=res$objective,par=res$minimum,hessian=NA) return(standardres) } #one parameter example x <- rexp(100) library(fitdistrplus) fitdist(x, "exp") #binding example fitdist(x, "exp", custom.optim=myoptimize, ui=1, ci=2, start=list(rate=10)) fitdist(x, "exp", lower= 2, optim.method="L-BFGS-B") #two parameter example x <- rbeta(100, pi, 1/pi) fitdist(x, "beta") #binding example fitdist(x, "beta", custom.optim=myoptimize, ui=rbind(1,1), ci=c(1/2,1/2), start=list(shape1=5, shape2=5)) fitdist(x, "beta", lower= c(1/2,1/2), optim.method="L-BFGS-B") #true example library(GeneralizedHyperbolic) args(dnig) x <- rnig(100, 3, 1/2, 1/2, 1/4) ui<-rbind(c(0,1,0,0),c(0,0,1,0),c(0,0,1,-1),c(0,0,1,1)) ci<-c(0,0,0,0) fitdist(x, "nig", custom.optim=myoptimize, ui=ui, ci=ci, start=list(mu = 0, delta = 1, alpha = 1, beta = 0)) ?dnig fitdistrplus/tests/t-prefit.R0000644000176200001440000000221713343175501016031 0ustar liggesusersrequire(fitdistrplus) # (1) gamma x <- rgamma(1e2, 5/2, 7/2) prefit(x, "gamma", "mle", list(shape=3, scale=3), lower=-Inf, upper=Inf, silent=TRUE, control=list(trace=1, REPORT=1)) prefit(x, "gamma", "mle", list(shape=1, scale=1), lower=-Inf, upper=Inf, silent=TRUE) prefit(x, "gamma", "mle", list(shape=3), fix.arg=list(scale=7/2), lower=-Inf, upper=Inf, silent=TRUE) prefit(x, "gamma", "qme", list(shape=1, scale=1), probs=1:2/3, lower=-Inf, upper=Inf, silent=TRUE) prefit(x, "gamma", "mge", list(shape=1, scale=1), gof="CvM", lower=-Inf, upper=Inf, silent=TRUE) prefit(x, "gamma", "mge", list(shape=1, scale=1), gof="AD", lower=-Inf, upper=Inf, silent=TRUE) # (2) geometric x <- rgeom(1e2, 1/7) prefit(x, "geom", "mle", list(prob=1/2), lower=-Inf, upper=Inf, silent=TRUE) tbx <- table(x) prefit(as.numeric(names(tbx)), "geom", "mle", list(prob=1/2), lower=-Inf, upper=Inf, silent=TRUE, weights=tbx) prefit(x, "geom", "qme", list(prob=1/2), probs=1/2, lower=-Inf, upper=Inf) # (3) Pareto require(actuar) x <- rpareto(100, 6, 2) prefit(x, "pareto", "mme", list(shape=10, scale=10), order=1:2, memp=function(x, order) mean(x^order), lower=-Inf, upper=Inf) fitdistrplus/tests/t-plotdist.R0000644000176200001440000000226712772503243016412 0ustar liggesuserslibrary(fitdistrplus) # (1) Plot of an empirical distribution with changing # of default line types for CDF and colors # and optionally adding a density line # set.seed(1234) x1 <- rnorm(n=30) plotdist(x1) plotdist(x1, col="blue", type="b", pch=16) plotdist(x1, type="s") plotdist(x1, demp = TRUE) plotdist(x1,demp = TRUE, adjust = 1.5) # (2) Plot of a discrete distribution against data # set.seed(1234) x2 <- rpois(n=30, lambda = 2) plotdist(x2, discrete=TRUE) plotdist(x2, "pois", para=list(lambda = mean(x2))) plotdist(x2, "pois", para=list(lambda = mean(x2)), lwd="2") # (3) Plot of a continuous distribution against data # xn <- rnorm(n=100, mean=10, sd=5) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn))) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn)), pch=16) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn)), pch=16, demp = TRUE) # (4) Plot of serving size data # data(groundbeef) plotdist(groundbeef$serving, type="s") # (5) Plot of numbers of parasites with a Poisson distribution data(toxocara) number <- toxocara$number plotdist(number, discrete = TRUE) plotdist(number,"pois",para=list(lambda=mean(number))) fitdistrplus/tests/t-mledist-nocens.R0000644000176200001440000002525713343175501017475 0ustar liggesuserslibrary(fitdistrplus) # (1) basic fit of a normal distribution with maximum likelihood estimation # set.seed(1234) x1 <- rnorm(n=100) mledist(x1,"norm") # (2) defining your own distribution functions, here for the Gumbel distribution # for other distributions, see the CRAN task view dedicated to probability distributions dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) mledist(x1,"gumbel",start=list(a=10,b=5), silent=TRUE) mledist(x1,"gumbel",start=list(a=10,b=5), silent=FALSE) # (3) fit a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) mledist(x2,"pois") # (4) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) mledist(x3,"beta") # (5) fit frequency distributions on USArrests dataset. # x4 <- USArrests$Assault mledist(x4, "pois", silent=TRUE) mledist(x4, "pois", silent=FALSE) mledist(x4, "nbinom") # (6) scaling problem # the simulated dataset (below) has particularly small values, hence without scaling (10^0), # the optimization raises an error. The for loop shows how scaling by 10^i # for i=1,...,6 makes the fitting procedure work correctly. set.seed(1234) x2 <- rnorm(100, 1e-4, 2e-4) for(i in 6:0) cat(i, try(mledist(x*10^i, "cauchy")$estimate, silent=TRUE), "\n") # (7) scaling problem # x <- c(-0.00707717, -0.000947418, -0.00189753, -0.000474947, -0.00190205, -0.000476077, 0.00237812, 0.000949668, 0.000474496, 0.00284226, -0.000473149, -0.000473373, 0, 0, 0.00283688, -0.0037843, -0.0047506, -0.00238379, -0.00286807, 0.000478583, 0.000478354, -0.00143575, 0.00143575, 0.00238835, 0.0042847, 0.00237248, -0.00142281, -0.00142484, 0, 0.00142484, 0.000948767, 0.00378609, -0.000472478, 0.000472478, -0.0014181, 0, -0.000946522, -0.00284495, 0, 0.00331832, 0.00283554, 0.00141476, -0.00141476, -0.00188947, 0.00141743, -0.00236351, 0.00236351, 0.00235794, 0.00235239, -0.000940292, -0.0014121, -0.00283019, 0.000472255, 0.000472032, 0.000471809, -0.0014161, 0.0014161, -0.000943842, 0.000472032, -0.000944287, -0.00094518, -0.00189304, -0.000473821, -0.000474046, 0.00331361, -0.000472701, -0.000946074, 0.00141878, -0.000945627, -0.00189394, -0.00189753, -0.0057143, -0.00143369, -0.00383326, 0.00143919, 0.000479272, -0.00191847, -0.000480192, 0.000960154, 0.000479731, 0, 0.000479501, 0.000958313, -0.00383878, -0.00240674, 0.000963391, 0.000962464, -0.00192586, 0.000481812, -0.00241138, -0.00144963) #only i == 0, no scaling, should not converge. for(i in 6:0) cat(i, try(mledist(x*10^i, "cauchy")$estimate, silent=TRUE), "\n") # (8) normal mixture # #mixture of two normal distributions #density dnorm2 <- function(x, w, m1, s1, m2, s2) w*dnorm(x, m1, s1) + (1-w)*dnorm(x, m2, s2) #numerically-approximated quantile function qnorm2 <- function(p, w, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, w, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-20, 30), prob=pr)$minimum) } #distribution function pnorm2 <- function(q, w, m1, s1, m2, s2) w*pnorm(q, m1, s1) + (1-w)*pnorm(q, m2, s2) #basic normal distribution x <- c(rnorm(1000, 5), rnorm(1000, 10)) #MLE fit fit1 <- mledist(x, "norm2", start=list(w=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0)) # (9) fit a Pareto and log-logistic distributions # if(any(installed.packages()[,"Package"] == "actuar")) { require(actuar) #simulate a sample x4 <- rpareto(1000, 6, 2) #fit mledist(x4, "pareto", start=list(shape=10, scale=10), lower=1, upper=Inf) #simulate a sample x4 <- rllogis(1000, 6, 2) #fit mledist(x4, "llogis", start=list(shape=10, rate=1), lower=1, upper=Inf) } # (10) custom optim for exponential distribution # if(any(installed.packages()[,"Package"] == "rgenoud") && FALSE) { mysample <- rexp(1000, 5) mystart <- list(rate=8) fNM <- mledist(mysample, "exp", optim.method="Nelder-Mead") fBFGS <- mledist(mysample, "exp", optim.method="BFGS") fLBFGSB <- mledist(mysample, "exp", optim.method="L-BFGS-B", lower=0) fSANN <- mledist(mysample, "exp", optim.method="SANN") fCG <- try(mledist(mysample, "exp", optim.method="CG") ) if(class(fCG) == "try-error") fCG <- list(estimate=NA) #the warning tell us to use optimise... #to meet the standard 'fn' argument and specific name arguments, we wrap optimize, myoptimize <- function(fn, par, ...) { res <- optimize(f=fn, ..., maximum=FALSE) c(res, convergence=0, value=res$objective, par=res$minimum, hessian=NA) } foptimize <- mledist(mysample, "exp", start=mystart, custom.optim=myoptimize, interval=c(0, 100)) library(rgenoud) #wrap genoud function rgenoud package mygenoud <- function(fn, par, ...) { res <- genoud(fn, starting.values=par, ...) c(res, convergence=0, counts=NULL) } fgenoud <- mledist(mysample, "exp", start=mystart, custom.optim= mygenoud, nvars=1, Domains=cbind(0, 10), boundary.enforcement=1, hessian=TRUE, print.level=0) c(NM=fNM$estimate, BFGS=fBFGS$estimate, LBFGSB=fLBFGSB$estimate, SANN=fSANN$estimate, CG=fCG$estimate, optimize=foptimize$estimate, fgenoud=fgenoud$estimate) } # (11) custom optim for gamma distribution # if(any(installed.packages()[,"Package"] == "rgenoud") && FALSE) { mysample <- rgamma(1000, 5, 3) mystart <- c(shape=10, rate=10) fNM <- mledist(mysample, "gamma", optim.method="Nelder-Mead") fBFGS <- mledist(mysample, "gamma", optim.method="BFGS") fLBFGSB <- mledist(mysample, "gamma", optim.method="L-BFGS-B", lower=0) fSANN <- mledist(mysample, "gamma", optim.method="SANN") fCG <- try( mledist(mysample, "gamma", optim.method="CG", control=list(maxit=1000)) ) if(class(fCG) == "try-error") fCG <- list(estimate=NA) fgenoud <- mledist(mysample, "gamma", start=mystart, custom.optim= mygenoud, nvars=2, Domains=cbind(c(0,0), c(100,100)), boundary.enforcement=1, hessian=TRUE, print.level=0) cbind(NM=fNM$estimate, BFGS=fBFGS$estimate, LBFGSB=fLBFGSB$estimate, SANN=fSANN$estimate, CG=fCG$estimate, fgenoud=fgenoud$estimate) data(groundbeef) fNM <- mledist(groundbeef$serving, "gamma", optim.method="Nelder-Mead") fBFGS <- mledist(groundbeef$serving, "gamma", optim.method="BFGS") fLBFGSB <- mledist(groundbeef$serving, "gamma", optim.method="L-BFGS-B", lower=0) fSANN <- mledist(groundbeef$serving, "gamma", optim.method="SANN") fCG <- try( mledist(groundbeef$serving, "gamma", optim.method="CG", control=list(maxit=10000)) ) if(class(fCG) == "try-error") fCG <- list(estimate=NA) fgenoud <- mledist(groundbeef$serving, "gamma", start=list(shape=4, rate=1), custom.optim= mygenoud, nvars=2, max.generations=10, Domains=cbind(c(0,0), c(10,10)), boundary.enforcement=1, hessian=TRUE, print.level=0, P9=10) cbind(NM=fNM$estimate, BFGS=fBFGS$estimate, LBFGSB=fLBFGSB$estimate, SANN=fSANN$estimate, CG=fCG$estimate, fgenoud=fgenoud$estimate) } # (12) test error messages # dnorm2 <- function(x, a) "NA" x <- rexp(10) #should get a one-line error res <- mledist(x, "norm2", start=list(a=1)) #as in attr(try(log("a"), silent=TRUE), "condition") # (13) weighted MLE # n <- 1e6 n <- 1e2 x <- rpois(n, 10) xtab <- table(x) xval <- sort(unique(x)) f1 <- mledist(x, "pois", start=list(lambda=mean(x)), optim.method="Brent", lower=0, upper=100, control=list(trace=1)) f2 <- mledist(xval, "pois", weights=xtab, start=list(lambda=mean(x))) f1$estimate f2$estimate #should be identical #test discrete distrib f2 <- try(mledist(xval, "pois", weights=1:length(xval), start=list(lambda=mean(x)))) #test non integer weights f2 <- try(mledist(xval, "pois", weights=rep(1/3, length(xval)), start=list(lambda=mean(x)))) f2 <- try(mledist(1:10, "pois", weights=c(rep(1, 9), 1.001), start=list(lambda=mean(x)))) f2 <- try(mledist(1:10, "pois", weights=c(rep(1, 9), 1.0000001), start=list(lambda=mean(x)))) # (14) no convergence # n <- 1e2 x <- c(rep(0, n), rpois(n, 10), rpois(n, 50)) mledist(x, "pois", optim.method="Nelder-Mead", control=list(maxit=10)) # (15) basic fit of a normal distribution with new fix.arg/start.arg # set.seed(1234) x1 <- rnorm(n=100) #correct usage mledist(x1,"norm") mledist(x1,"norm", start=function(x) list(mean=0, sd=1)) mledist(x1,"norm", fix.arg=function(x) list(mean=mean(x))) mledist(x1,"norm", fix.arg=list(mean=1/2)) mledist(x1,"norm", fix.arg=list(mean=1/2), start=list(sd=1)) mledist(x1,"norm", fix.arg=function(x) list(mean=0), start=list(sd=1)) mledist(x1,"norm", fix.arg=function(x) list(mean=mean(x)), start=list(sd=1)) #wrong usage (see text message in util-checkparam.R) try( mledist(x1,"norm", start=list(a=1/2)) ) #t3 try( mledist(x1,"norm", start=function(x) list(a=0, b=1)) ) #t3 try( mledist(x1,"norm", fix.arg=list(a=1/2)) ) #t4 try( mledist(x1,"norm", fix.arg=function(x) list(a=0), start=list(sd=1)) ) #t4 try( mledist(x1,"norm", start=matrix(1/2)) ) #t1 try( mledist(x1,"norm", fix.arg=matrix(1/2)) ) #t0 try( mledist(x1,"norm", fix.arg=matrix(1/2), start=matrix(1/2)) ) #t2 try( mledist(x1,"norm", fix.arg=function(x) list(mean=mean(x), sd=2), start=list(sd=1)) ) #t5 dabcnorm <- function(x, mean, sd) 1 try( mledist(x1,"abcnorm", fix.arg=function(x) list(mean=mean(x))) ) #t8 # (16) relevant example for zero modified geometric distribution # dzmgeom <- function(x, p1, p2) { p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) } rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } # check # dzmgeom(0:5, 1/2, 1/10) x2 <- rzmgeom(100, 1/2, 1/10) x3 <- rzmgeom(100, 1/3, 1/10) x4 <- rzmgeom(100, 1/4, 1/10) table(x2) #this is the MLE which converges almost surely and in distribution to the true value. initp1 <- function(x) list(p1=mean(x == 0)) mledist(x2, "zmgeom", fix.arg=initp1, start=list(p2=1/2))[c("estimate", "fix.arg")] mledist(x3, "zmgeom", fix.arg=initp1, start=list(p2=1/2))[c("estimate", "fix.arg")] mledist(x4, "zmgeom", fix.arg=initp1, start=list(p2=1/2))[c("estimate", "fix.arg")] # (17) test the component optim.message x <- rnorm(100) #change parameter to obtain unsuccessful convergence mledist(x, "norm", control=list(maxit=2), start=list(mean=1e5, sd=1), optim.method="L-BFGS-B", lower=0) # (18) management of bounds in optim/constrOptim x <- rexp(100) mledist(x, "exp") #optim, BFGS mledist(x, "exp", optim.method="Brent", lower=0, upper=100) #optim, Brent mledist(x, "exp", optim.method="Nelder-Mead") #optim, Nelder-Mead mledist(x, "exp", lower=0, optim.method="Nelder-Mead") #constrOptim, Nelder-Mead mledist(x, "exp", lower=0, optim.method="BFGS") #optim, L-BFGS-B x <- rbeta(100, 3/2, 7/3) mledist(x, "beta", optim.method="Nelder") #optim, Nelder-Mead mledist(x, "beta", lower=0, optim.method="Nelder-Mead") #constrOptim, Nelder-Mead #as the result of optim(c(-1.2,1), fr, method = "Nelder-Mead", hessian=TRUE, gr=NULL, lower=-Inf, upper=Inf) from optim() example mledist(x, "beta", lower=0, optim.method="BFGS") #optim, L-BFGS-B fitdistrplus/tests/t-startfixarg-overall.R0000644000176200001440000001205613327600476020550 0ustar liggesuserslibrary(fitdistrplus) # (1) non-censored data (continuous) # s1 <- NULL s2 <- list("mean"=2) s0 <- list("mean"=2, "sd"=1) s3 <- function(x) list("mean"=1.01*mean(x)) s4 <- function(x) list("mean"=1.01*mean(x), "sd"=sd(x)) f1 <- NULL f2 <- list("sd"=3) f3 <- function(x) list("sd"=1.01*sd(x)) x <- rnorm(1000) #redefine normal distribution for better check dnorm2 <- dnorm pnorm2 <- pnorm qnorm2 <- qnorm rnorm2 <- rnorm mnorm2 <- function(order, mean, sd) ifelse(order == 1, mean, sd^2) memp <- function(x, order) mean(x^order) # both NULL mf1 <- mledist(x, "norm", start=s1, fix.arg=f1) mf1 <- mmedist(x, "norm", start=s1, fix.arg=f1) mf1 <- qmedist(x, "norm", start=s1, fix.arg=f1, probs=1:2/3) mf1 <- mgedist(x, "norm", start=s1, fix.arg=f1) fit1 <- fitdist(x, "norm", start=s1, fix.arg=f1) boot1 <- bootdist(fit1, niter=10) # both named list mf1 <- mledist(x, "norm2", start=s2, fix.arg=f2) mf1 <- mmedist(x, "norm2", start=s2, fix.arg=f2, order=1, memp=memp) mf1 <- qmedist(x, "norm2", start=s2, fix.arg=f2, probs=1/3) mf1 <- mgedist(x, "norm2", start=s2, fix.arg=f2) fit1 <- fitdist(x, "norm2", start=s2, fix.arg=f2) boot1 <- bootdist(fit1, niter=10) # named list and NULL mf1 <- mledist(x, "norm2", start=s0, fix.arg=f1) mf1 <- mmedist(x, "norm2", start=s0, fix.arg=f1, order=1:2, memp=memp) mf1 <- qmedist(x, "norm2", start=s0, fix.arg=f1, probs=1:2/3) mf1 <- mgedist(x, "norm2", start=s0, fix.arg=f1) fit1 <- fitdist(x, "norm2", start=s0, fix.arg=f1) boot1 <- bootdist(fit1, niter=10) # NULL and named list mf1 <- mledist(x, "norm", start=s1, fix.arg=f2) mf1 <- qmedist(x, "norm", start=s1, fix.arg=f2, probs=1/3) mf1 <- mgedist(x, "norm", start=s1, fix.arg=f2) fit1 <- fitdist(x, "norm", start=s1, fix.arg=f2) boot1 <- bootdist(fit1, niter=10) # both function mf1 <- mledist(x, "norm2", start=s3, fix.arg=f3) mf1 <- mmedist(x, "norm2", start=s3, fix.arg=f3, order=1, memp=memp) mf1 <- qmedist(x, "norm2", start=s3, fix.arg=f3, probs=1/3) mf1 <- mgedist(x, "norm2", start=s3, fix.arg=f3) fit1 <- fitdist(x, "norm2", start=s3, fix.arg=f3) boot1 <- bootdist(fit1, niter=10) # function and NULL mf1 <- mledist(x, "norm2", start=s4, fix.arg=f1) mf1 <- mmedist(x, "norm2", start=s4, fix.arg=f1, order=1:2, memp=memp) mf1 <- qmedist(x, "norm2", start=s4, fix.arg=f1, probs=1:2/3) mf1 <- mgedist(x, "norm2", start=s4, fix.arg=f1) fit1 <- fitdist(x, "norm2", start=s4, fix.arg=f1) boot1 <- bootdist(fit1, niter=10) # NULL and function mf1 <- mledist(x, "norm", start=s1, fix.arg=f3) mf1 <- qmedist(x, "norm", start=s1, fix.arg=f3, probs=1/3) mf1 <- mgedist(x, "norm", start=s1, fix.arg=f3) fit1 <- fitdist(x, "norm", start=s1, fix.arg=f3) boot1 <- bootdist(fit1, niter=10) # should raise error for too less parameters try(mgedist(x, "norm", start=s2, fix.arg=f1)) try(fitdist(x, "norm", start=s2, fix.arg=f1)) # should raise error for too much parameters try(mgedist(x, "norm", start=s0, fix.arg=f2)) try(fitdist(x, "norm", start=s0, fix.arg=f2)) # should raise error for NA value try(mgedist(x, "norm", start=s1, fix.arg=list(sd=NA))) try(fitdist(x, "norm", start=list(sd=NA))) # should raise error for inconsistent parameter try(mgedist(x, "norm", start=function(x) list("toto"=1))) try(fitdist(x, "norm", fix=list(toto=2))) #test unset arguments dbeta2<-function(x, shape1, ncp2) dbeta(x, shape1, shape1, ncp2) x <- rbeta(1e2, 3, 3) try(fitdist(x, "beta2", start=list(shape1=2))) dbeta3<-function(x, shape1, ncp2=0) dbeta(x, shape1, shape1, ncp2) fitdist(x, "beta3", start=list(shape1=2)) # (2) censored data # data(salinity) log10LC50 <-log10(salinity) s1 <- NULL s2 <- list("mean"=2) s0 <- list("mean"=2, "sd"=1) s3 <- function(x) list("mean"=mean(x)) f1 <- NULL f2 <- list("sd"=3) f3 <- function(x) list("sd"=sd(x)) fitdistcens(log10LC50, "norm", start=s1, fix.arg = f1) fitdistcens(log10LC50, "norm", start=s1, fix.arg = f2) fitdistcens(log10LC50, "norm", start=s2, fix.arg = f2) fitdistcens(log10LC50, "norm", start=s0, fix.arg = f1) fitdistcens(log10LC50, "norm", start=s3, fix.arg = f2) fitdistcens(log10LC50, "norm", start=s3, fix.arg = f3) fitdistcens(log10LC50, "norm", start=s1, fix.arg = f3) fit1 <- fitdistcens(log10LC50, "norm", start=s1, fix.arg = f1) boot1 <- bootdistcens(fit1, niter = 10) fit1 <- fitdistcens(log10LC50, "norm", start=s3, fix.arg = f2) boot1 <- bootdistcens(fit1, niter = 10) fit1 <- fitdistcens(log10LC50, "norm", start=s2, fix.arg = f3) boot1 <- bootdistcens(fit1, niter = 10) # (3) non-censored data (discrete) # n <- 200 trueval <- c("size"=10, "prob"=3/4, "mu"=10/3) x <- rnbinom(n, trueval["size"], trueval["prob"]) mledist(x, "nbinom") fitdist(x, "nbinom") # (4) non-censored data (continuous) external distributions # data("endosulfan") ATV <-endosulfan$ATV fendo.ln <- fitdist(ATV, "lnorm") fendo.g <- fitdist(ATV, "gamma", start=list(shape=2, scale=1), lower=0) require("actuar") fendo.ll <- fitdist(ATV, "llogis", start = list(shape = 1, scale = 500)) fendo.P <- fitdist(ATV, "pareto", start = list(shape = 1, scale = 500)) fendo.B <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) fitdistrplus/tests/t-manageparam.R0000644000176200001440000000335613310705056017014 0ustar liggesuserslibrary(fitdistrplus) manageparam <- fitdistrplus:::manageparam obs1 <- rnorm(10) s1 <- NULL s2 <- list("mean"=2, "sd"=3) s3 <- function(x) list("mean"=1.01*mean(x)) s4 <- list("mean"=1) f1 <- NULL f2 <- list("sd"=3) f3 <- function(x) list("sd"=1.01*sd(x)) f4 <- list("toto"=2) #no error manageparam(s1, f1, obs1, "norm") manageparam(s2, f1, obs1, "norm") manageparam(s3, f1, obs1, "norm") manageparam(s1, f2, obs1, "norm") manageparam(s1, f3, obs1, "norm") #raise error try(manageparam(matrix(3), f1, obs1, "norm")) try(manageparam(function(x) c("a"=33), f1, obs1, "norm")) try(manageparam(function(x) list(33), f1, obs1, "norm")) try(manageparam(NULL, list(mean=1, sd=1), obs1, "norm")) #no error checkparamlist <- fitdistrplus:::checkparamlist myformal <- names(formals("dnorm")) res <- manageparam(s1, f1, obs1, "norm") checkparamlist(res$start.arg, res$fix.arg, myformal) res <- manageparam(s1, f2, obs1, "norm") checkparamlist(res$start.arg, res$fix.arg, myformal) res <- manageparam(s1, f3, obs1, "norm") checkparamlist(res$start.arg, res$fix.arg, myformal) res <- manageparam(s2, f1, obs1, "norm") checkparamlist(res$start.arg, res$fix.arg, myformal) #raise errors res <- manageparam(s1, f4, obs1, "norm") try(checkparamlist(res$start.arg, res$fix.arg, myformal)) res <- manageparam(s2, f2, obs1, "norm") try(checkparamlist(res$start.arg, res$fix.arg, myformal)) res <- manageparam(s2, f3, obs1, "norm") try(checkparamlist(res$start.arg, res$fix.arg, myformal)) #no error fitdist(obs1, "norm", start=NULL, fix.arg=NULL) fitdist(obs1, "norm", start=NULL, fix.arg=f3) #raise error try(fitdist(obs1, "norm", start=NULL, fix.arg=f4)) try(fitdist(obs1, "norm", start=s2, fix.arg=f2)) try(fitdist(obs1, "norm", start=s2, fix.arg=f3)) fitdistrplus/tests/t-llplot.R0000644000176200001440000000374613344222463016057 0ustar liggesusersrequire(fitdistrplus) visualize <- FALSE # TRUE for manual tests with visualization of results nsample <- 10000 nsample <- 10 # (1) tests with the Burr distribution (three parameters) # if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) data(endosulfan) ATV <-endosulfan$ATV library("actuar") fBurr <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) llplot(fBurr) fBurr2 <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1), fix.arg = list(rate = 1.5)) llplot(fBurr2) fBurr3 <- fitdist(ATV, "burr", start = list(shape1 = 0.3, rate = 1), fix.arg = list(shape2 = 1.5)) llplot(fBurr3) } # (2) An example on discrete data with or without weights # set.seed(1234) x <- rpois(nsample, 10) xtab <- table(x) xval <- sort(unique(x)) f1 <- fitdist(x, "pois") f2 <- fitdist(xval, "pois", weights = xtab) f1$estimate f2$estimate # should give the same llplot(f1, fit.show = TRUE) llplot(f2, fit.show = TRUE) # should give the same llplot(f1, loglik = FALSE, fit.show = TRUE) llplot(f2, loglik = FALSE,fit.show = TRUE) # should give the same # (3) An example on censored data with or without weights # if(visualize) { data(salinity) salinity.unique <- unique(salinity) string.unique <- paste(salinity.unique$left, salinity.unique$right) string.salinity <- paste(salinity$left, salinity$right) nobs <- nrow(salinity.unique) salinity.weights <- numeric(nobs) for (i in 1:nobs) { salinity.weights[i] <- length(which(string.salinity == string.unique[i])) } cbind(salinity.unique, salinity.weights) (fa <- fitdistcens(salinity, "lnorm")) (fb <- fitdistcens(salinity.unique, "lnorm", weights = salinity.weights)) llplot(fa, fit.show = TRUE) llplot(fb, fit.show = TRUE) # should give the same llplot(fa, fit.show = TRUE, loglik = FALSE) llplot(fb, fit.show = TRUE, loglik = FALSE) # should give the same }fitdistrplus/tests/t-cdfcomp.R0000644000176200001440000003117313344222463016157 0ustar liggesuserslibrary(fitdistrplus) # ?cdfcomp visualize <- FALSE # TRUE for manual tests with visualization of results nsample <- 1000 nsample <- 100 # (1) Plot various distributions fitted to serving size data # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") #sanity checks try(cdfcomp("list(fitW, fitln, fitg)",horizontals = FALSE), silent=TRUE) try(cdfcomp(list(fitW, fitln, fitg, a=1),horizontals = FALSE), silent=TRUE) #real call cdfcomp(list(fitW, fitln, fitg), horizontals = FALSE) cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE) cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, lines01 = TRUE) cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, verticals = TRUE, datacol = "grey") if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcomp(list(fitW, fitln, fitg), horizontals = FALSE, plotstyle = "ggplot") } if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, plotstyle = "ggplot") cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, lines01 = TRUE, plotstyle = "ggplot") cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, verticals = TRUE, datacol = "grey", plotstyle = "ggplot") } cdfcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", ylab = "F(g)", xlim = c(0, 250), ylim = c(.5, 1)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", ylab = "F(g)", xlim = c(0, 250), ylim = c(.5, 1), plotstyle = "ggplot") } cdfcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", ylab = "F(g)", xlogscale = TRUE) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", ylab = "F(g)", xlogscale = TRUE, plotstyle = "ggplot") } cdfcomp(list(fitW,fitln,fitg),legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F(g)", xlogscale=TRUE, ylogscale=TRUE, ylim=c(.005, .99)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fitW,fitln,fitg),legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F(g)", xlogscale=TRUE, ylogscale=TRUE, ylim=c(.005, .99), plotstyle = "ggplot") } cdfcomp(list(fitW,fitln,fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F(g)",xlim = c(0,250), xlegend = "topleft") if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fitW,fitln,fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F(g)",xlim = c(0,250), xlegend = "topleft", plotstyle = "ggplot") } # (2) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # data(endosulfan) ATV <-subset(endosulfan, group == "NonArthroInvert")$ATV flnMGEKS <- fitdist(ATV,"lnorm",method="mge",gof="KS") flnMGEAD <- fitdist(ATV,"lnorm",method="mge",gof="AD") flnMGEADL <- fitdist(ATV,"lnorm",method="mge",gof="ADL") flnMGEAD2L <- fitdist(ATV,"lnorm",method="mge",gof="AD2L") llfit <- list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L) cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE,main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L")) cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE,main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), horizontals=FALSE, datapch="+") cdfcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=paste("MGE", c("KS","AD","ADL","AD2L")), fitcol="grey35", fitlty="dotted", horizontals=FALSE, datapch=21, datacol="grey30") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE, verticals=TRUE, xlim=c(10,100000), datapch=21) cdfcomp(flnMGEKS, xlogscale=TRUE, verticals=TRUE, xlim=c(10,100000)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE, main = "fits of a lognormal dist. using various GOF dist.", plotstyle = "ggplot") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE,main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), plotstyle = "ggplot") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE,main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), horizontals=FALSE, datapch="+", plotstyle = "ggplot") cdfcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=paste("MGE", c("KS","AD","ADL","AD2L")), fitcol="grey35", fitlty="dotted", horizontals=FALSE, datapch=21, datacol="grey30", plotstyle = "ggplot") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale=TRUE, verticals=TRUE, xlim=c(10,100000), datapch=21, plotstyle = "ggplot") cdfcomp(flnMGEKS, xlogscale=TRUE, verticals=TRUE, xlim=c(10,100000), plotstyle = "ggplot") } # (3) Plot normal and logistic distributions fitted by # maximum likelihood estimation # using various plotting positions in cdf plots # if (visualize) { data(endosulfan) log10ATV <-log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") fll <- fitdist(log10ATV, "logis") # default plot using Hazen plotting position: (1:n - 0.5)/n cdfcomp(list(fln, fll), legendtext = c("normal", "logistic"), xlab = "log10ATV") if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcomp(list(fln, fll), legendtext = c("normal", "logistic"),xlab = "log10ATV", plotstyle = "ggplot") } # plot using mean plotting position (named also Gumbel plotting position) # (1:n)/(n + 1) cdfcomp(list(fln,fll),legendtext=c("normal","logistic"),xlab="log10ATV", use.ppoints = TRUE, a.ppoints = 0) if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcomp(list(fln,fll),legendtext=c("normal","logistic"),xlab="log10ATV", use.ppoints = TRUE, a.ppoints = 0, plotstyle = "ggplot") } # plot using basic plotting position: (1:n)/n cdfcomp(list(fln,fll),legendtext=c("normal","logistic"),xlab="log10ATV", use.ppoints = FALSE) if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcomp(list(fln,fll),legendtext=c("normal","logistic"),xlab="log10ATV", use.ppoints = FALSE, plotstyle = "ggplot") } } # (4) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # if (visualize) { x1 <- c(6.4,13.3,4.1,1.3,14.1,10.6,9.9,9.6,15.3,22.1,13.4,13.2,8.4,6.3,8.9,5.2,10.9,14.4) x <- seq(0, 1.1*max(x1), length=100) dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) f1 <- mledist(x1, "norm") f2 <- mledist(x1, "gumbel", start = list(a = 10, b = 5)) f3 <- mledist(x1, "exp") # graph 1 plot(ecdf(x1)) lines(x, pnorm(x, f1$estimate[1], f1$estimate[2]), col = "red") lines(x, pgumbel(x, f2$estimate[1], f2$estimate[2]), col = "green") lines(x, pexp(x, f3$estimate[1]), col = "blue") legend("bottomright", lty = 1, leg = c("Normal", "Gumbel", "Exp"), col = c("red", "green", "blue")) # graph 2 f1 <- fitdist(x1, "norm") f2 <- fitdist(x1, "gumbel", start = list(a = 10, b = 5)) f3 <- fitdist(x1, "exp") cdfcomp(list(f1, f2, f3), xlim=range(x), fitcol = c("red", "green", "blue"), fitlty = 1, legendtext = c("Normal", "Gumbel", "Exp")) # graph 3 if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcomp(list(f1, f2, f3), xlim=range(x), fitcol=c("red","green","blue"), fitlty = 1, legendtext = c("Normal", "Gumbel", "Exp"), plotstyle = "ggplot") } } # (5) normal mixture # # mixture of two normal distributions # density dnorm2 <- function(x, poid, m1, s1, m2, s2) poid*dnorm(x, m1, s1) + (1-poid)*dnorm(x, m2, s2) # numerically approximate quantile function qnorm2 <- function(p, poid, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, poid, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-1000, 1000), prob=pr)$minimum) } # distribution function pnorm2 <- function(q, poid, m1, s1, m2, s2) poid*pnorm(q, m1, s1) + (1-poid)*pnorm(q, m2, s2) # basic normal distribution set.seed(1234) x2 <- c(rnorm(nsample, 5), rnorm(nsample, 10)) # MLE fit fit1 <- fitdist(x2, "norm2", "mle", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0)) fit2 <- fitdist(x2, "norm2", "qme", probs=c(1/6, 1/4, 1/3, 1/2, 2/3), start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) fit3 <- fitdist(x2, "norm2", "mge", gof="AD", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) cdfcomp(list(fit1, fit2, fit3), datapch=".") cdfcomp(list(fit1, fit2, fit3), datapch=".", xlim=c(6, 8), ylim=c(.4, .55)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fit1, fit2, fit3), datapch=".", plotstyle = "ggplot") cdfcomp(list(fit1, fit2, fit3), datapch=".", xlim=c(6, 8), ylim=c(.4, .55), plotstyle = "ggplot") } # (6) discrete example # set.seed(1234) x3 <- rpois(20, 10) fit1 <- fitdist(x3, "pois", "mle") fit2 <- fitdist(x3, "nbinom", "qme", probs=c(1/3, 2/3)) cdfcomp(list(fit1, fit2), datapch=21, horizontals=FALSE) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(list(fit1, fit2), datapch=21, horizontals=FALSE, plotstyle = "ggplot") } # (7) large dataset # if (visualize) { n <- 1e4 f1 <- fitdist(rlnorm(n), "lnorm") cdfcomp(f1, do.points=TRUE) cdfcomp(f1, do.points=FALSE) cdfcomp(f1, horizontals = FALSE, verticals = FALSE, do.points = FALSE) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { cdfcomp(f1, do.points = TRUE, plotstyle = "ggplot") cdfcomp(f1, do.points = FALSE, plotstyle = "ggplot") cdfcomp(f1, horizontals = FALSE, verticals = FALSE, do.points = FALSE, plotstyle = "ggplot") } } # (8) argument add (must give the same plot (except colors) as ex. 6) # set.seed(1234) x3 <- rpois(nsample, 10) fit1 <- fitdist(x3, "pois", "mle") cdfcomp(fit1, fitcol = "red", horizontals=FALSE, addlegend = FALSE) fit2 <- fitdist(x3, "nbinom", "qme", probs=c(1/3, 2/3)) cdfcomp(fit2, fitcol = "blue", horizontals=FALSE, addlegend = FALSE, add = TRUE) cdfcomp(list(fit1, fit2), horizontals=FALSE, addlegend = FALSE, fitcol=c("red", "blue")) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { # the argument add is not available when plotstyle = "ggplot" cdfcomp(list(fit1, fit2), fitcol = c("red", "blue"), fitlty = 1, horizontals = FALSE, addlegend = FALSE, plotstyle = "ggplot") } # (9) test legend labels # if (visualize) { serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitW2 <- fitdist(serving,"weibull", method="qme", probs=c(1/3,2/3)) fitW3 <- fitdist(serving,"weibull", method="qme", probs=c(1/2,2/3)) fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") cdfcomp(list(fitW, fitln, fitg)) #distrib cdfcomp(list(fitW, fitW2, fitln, fitg)) #distrib+method cdfcomp(list(fitW, fitW2, fitW3, fitln, fitg)) #distrib+method+num if (requireNamespace ("ggplot2", quietly = TRUE)) cdfcomp(list(fitW, fitW2, fitW3, fitln, fitg), plotstyle = "ggplot") #distrib+method+num } fitdistrplus/tests/t-bootdistcens.R0000644000176200001440000000555713344222463017253 0ustar liggesuserslibrary(fitdistrplus) nbboot <- 101 nbboot <- 10 visualize <- FALSE # TRUE for manual tests with visualization of results # (1) Fit of a normal distribution to fluazinam data in log10 # followed by nonparametric bootstrap # data(fluazinam) (d1 <-log10(fluazinam)) f1 <- fitdistcens(d1, "norm") b1 <- bootdistcens(f1, niter = nbboot, silent=TRUE) b1 <- bootdistcens(f1, niter = nbboot, silent=FALSE) b1 summary(b1) plot(b1) # (3) Estimation of the standard deviation of a normal distribution # by maximum likelihood with the mean fixed at 0.1 using the argument fix.arg # followed by nonparametric bootstrap # f1b <- fitdistcens(d1, "norm", start=list(sd=1.5), fix.arg=list(mean=0.1)) b1b <- bootdistcens(f1b, niter=nbboot) summary(b1b) plot(b1b) # (4) Comparison of fitdist and fitdistcens and bootdist and bootdistcens # for non censored data x1<-c(6.4,13.3,4.1,1.3,14.1,10.6,9.9,9.6,15.3,22.1,13.4, 13.2,8.4,6.3,8.9,5.2,10.9,14.4) fx1<-fitdist(x1,"norm",method="mle") cx1<-bootdist(fx1,bootmethod="nonparam", niter=nbboot) xx1<-data.frame(left=x1,right=x1) fxx1<-fitdistcens(xx1,"norm") summary(fx1) summary(fxx1) cdfcomp(fx1) cdfcompcens(fxx1) cxx1<-bootdistcens(fxx1, niter=nbboot) summary(cx1) summary(cxx1) # (5) fixing parameters # set.seed(1234) x <- rexp(500, 5) x <- data.frame(left=x, right=x+.1) f1 <- fitdistcens(x, "gamma", fix.arg=list(shape=1.5)) b1 <- bootdistcens(f1, niter=nbboot) plot(b1) f1 <- fitdistcens(x, "gamma", fix.arg=function(x) list(shape=1.5)) b1 <- bootdistcens(f1, niter=nbboot) plot(b1) # (6) efficiency of parallel operation if (visualize) # too long to run on CRAN and forbiden due to parallel computing { niter <- 5001 data(fluazinam) d1 <-log10(fluazinam) f1 <- fitdistcens(d1, "norm") for (cli in 1:4) { print(cli) ptm <- proc.time() print(summary(bootdistcens(f1, niter = niter, parallel = "snow", ncpus = cli))) print(proc.time() - ptm) } # not available on Windows for (cli in 1:4) { print(cli) ptm <- proc.time() print(summary(bootdistcens(f1, niter = niter, parallel = "multicore", ncpus = cli))) print(proc.time() - ptm) } } # (5) with weights (not yet available, test of error message) # data(salinity) salinity.unique <- unique(salinity) string.unique <- paste(salinity.unique$left, salinity.unique$right) string.salinity <- paste(salinity$left, salinity$right) nobs <- nrow(salinity.unique) salinity.weights <- numeric(nobs) for (i in 1:nobs) { salinity.weights[i] <- length(which(string.salinity == string.unique[i])) } cbind(salinity.unique, salinity.weights) (fa <- fitdistcens(salinity, "lnorm")) (fb <- fitdistcens(salinity.unique, "lnorm", weights = salinity.weights)) # should give the same results summary(bootdistcens(fa, niter = nbboot)) try(summary(bootdistcens(fb, niter = nbboot))) fitdistrplus/tests/t-util-testdensity.R0000644000176200001440000000467413375226222020105 0ustar liggesuserslibrary(fitdistrplus) testdpqfun <- fitdistrplus:::testdpqfun ##### first argument ##### #a data.frame of TRUE and "" testdpqfun("exp", start=c(rate=1)) #a data.frame with error messages dEXP <- function(y, rate) dexp(x, rate) pEXP <- function(y, rate) pexp(x, rate) qEXP <- function(y, rate) qexp(x, rate) testdpqfun("EXP", start=c(rate=1)) ##### existence ##### #a data.frame of TRUE and "" testdpqfun("exp", start=c(rate=1)) #a data.frame with error messages testdpqfun("exp2", start=c(rate=1)) ##### void vector ##### dexp2 <- function(x, rate) ifelse(length(x)==0, stop("zero input"), dexp(x,rate)) dexp3 <- function(x, rate) ifelse(length(x)==0, NA, dexp(x,rate)) #TRUE testdpqfun("exp", "d", c(rate=1)) #error message testdpqfun("exp2", "d", c(rate=1)) #error message testdpqfun("exp3", "d", c(rate=1)) ##### inconsistent value ##### pexp2 <- function(q, rate) { res <- pexp(q, rate) if(any(is.nan(res))) stop("NaN values") res } pexp3 <- function(q, rate) { res <- pexp(q, rate) if(any(is.infinite(q))) stop("Inf values") res } #TRUE testdpqfun("exp", "p", c(rate=1)) #error message testdpqfun("exp2", "p", c(rate=1)) #error message testdpqfun("exp3", "p", c(rate=1)) ##### missing value ##### qexp2 <- function(p, rate) { res <- qexp(p, rate) if(any(is.na(res))) stop("NA values") res } qexp3 <- function(p, rate) { res <- qexp(p, rate) res[!is.na(res)] } #TRUE testdpqfun("exp", "q", c(rate=1)) #error message testdpqfun("exp2", "q", c(rate=1)) #error message testdpqfun("exp3", "q", c(rate=1)) ##### inconsistent parameter ##### dnorm2 <- function(x, mean, sd) { if(sd < 0) stop("negative param") else dnorm(x,mean,sd) } #TRUE testdpqfun("norm", "d", c(mean=1, sd=1)) #error message testdpqfun("norm2", "d", c(mean=1, sd=1)) ##### inconsistent name ##### dnorm2 <- function(x, mean=0, sd=1, ...) dnorm(x, mean, sd) dnorm3 <- dnorm2 pnorm3 <- pnorm qnorm3 <- qnorm #TRUE testdpqfun("norm", "d", c(mean=1, sd=1)) #error message testdpqfun("norm2", "d", c(mean=1, sd=1)) #a data.frame with error messages testdpqfun("norm", c("d", "p", "q"), c(mean=1, sd=1)) testdpqfun("norm2", c("d", "p", "q"), c(mean=1, sd=1)) testdpqfun("norm3", c("d", "p", "q"), c(mean=1, sd=1)) x <- rnorm(100) fitdist(x, "norm") #ok fitdist(x, "norm2", start=list(mean=1, sd=1)) #pnorm2 not defined fitdist(x, "norm3", start=list(mean=1, sd=1)) #The dnorm3 function should return raise an error when names are incorrectly named fitdistrplus/tests/t-startingvalues.R0000644000176200001440000000316012772503243017614 0ustar liggesuserslibrary(fitdistrplus) library(actuar) x <- c(3.1334614, 1.0300544, 0.8839272, 0.7503320, 1.9378476, 1.7571313, 0.5369516, 3.1181863, 1.7412457, 1.1514215, 1.6252670, 1.3333488, 3.0594471, 1.0479867, 0.4466562, 0.4387154, 1.5234127, 1.5476924, 1.3279816, 1.3978141) ft_igam <- fitdist(x, "invgamma") x <- c(2.3,0.1,2.7,2.2,0.4,2.6,0.2,1.,7.3,3.2,0.8,1.2,33.7,14., 21.4,7.7,1.,1.9,0.7,12.6,3.2,7.3,4.9,4000.,2.5,6.7,3.,63., 6.,1.6,10.1,1.2,1.5,1.2,30.,3.2,3.5,1.2,0.2,1.9,0.7,17., 2.8,4.8,1.3,3.7,0.2,1.8,2.6,5.9,2.6,6.3,1.4,0.8) ft_llogis <- fitdist(x,"llogis") x <- c(0.3837053, 0.8576858, 0.3552237, 0.6226119, 0.4783756, 0.3139799, 0.4051403, 0.4537631, 0.4711057, 0.5647414, 0.6479617, 0.7134207, 0.5259464, 0.5949068, 0.3509200, 0.3783077, 0.5226465, 1.0241043, 0.4384580, 1.3341520) ft_iw <- fitdist(x,"invweibull") x <- c(2.06832800, 0.80102221, 9.32589765, 4.31776597, 1.10230717, 2.06120589, 1.17598984, 0.49806928, 27.25326920, 0.03468531, 1.92468452, 0.07877918, 0.58094911, 0.31080116, 3.86929105, 1.05732456, 3.06687014, 7.48990404, 0.18640324, 2.50568830) #equivalent to Pareto type 2 ft_par2 <- fitdist(x, "pareto") x <- c(1.083905, 1.266773, 1.044362, 1.557070, 1.227676, 1.195054, 1.241101, 1.224004, 1.014631, 1.173721, 1.051038, 1.104520, 1.133755, 1.051605, 1.081230, 1.123193, 1.005997, 1.044696, 1.155369, 1.039439) #equivalent to Pareto type 1 ft_par1 <-fitdist(x, "pareto1", upper=c(Inf, min(x)), fix.arg=list(min = 1), control=list(trace=1, REPORT=1), silent=FALSE) fitdistrplus/tests/t-fitdist.R0000644000176200001440000002663413344222463016220 0ustar liggesusers library(fitdistrplus) nbboot <- 100 nbboot <- 10 nsample <- 100 nsample <- 10 visualize <- FALSE # TRUE for manual tests with visualization of results # (1) basic fit of a gamma distribution by maximum likelihood estimation # data(groundbeef) serving <- groundbeef$serving fitg <- fitdist(serving, "gamma") summary(fitg) plot(fitg) cdfcomp(fitg, addlegend=FALSE) #check names names(fitdist(serving, "gamma", optim.method="Brent", lower=0, upper=10, fix.arg=list(shape=2))$estimate) names(fitdist(serving, "gamma", optim.method="Nelder-Mead")$estimate) names(fitdist(serving, "gamma", optim.method="BFGS")$estimate) # names(fitdist(serving, "gamma", optim.method="CG", start=list(shape=4, rate=1/20))$estimate) names(fitdist(serving, "gamma", optim.method="L-BFGS-B", lower=0)$estimate) # (7) custom optimization function # #create the sample set.seed(1234) mysample <- rexp(nsample, 5) mystart <- list(rate=8) res1 <- fitdist(mysample, dexp, start= mystart, optim.method="Nelder-Mead") #show the result summary(res1) #the warning tell us to use optimise, because the Nelder-Mead is not adequate. #to meet the standard 'fn' argument and specific name arguments, we wrap optimize, myoptimize <- function(fn, par, ...) { res <- optimize(f=fn, ..., maximum=FALSE) #assume the optimization function minimize standardres <- c(res, convergence=0, value=res$objective, par=res$minimum, hessian=NA) return(standardres) } #call fitdist with a 'custom' optimization function res2 <- fitdist(mysample, dexp, start=mystart, custom.optim=myoptimize, interval=c(0, 100)) #show the result summary(res2) # (8) custom optimization function - another example with the genetic algorithm # if(any(installed.packages()[,"Package"] == "rgenoud")) { #set a sample fit1 <- fitdist(serving, "gamma") summary(fit1) #wrap genoud function rgenoud package mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values=par, ...) standardres <- c(res, convergence=0, counts=NULL) return(standardres) } #call fitdist with a 'custom' optimization function fit2 <- fitdist(serving, "gamma", custom.optim=mygenoud, nvars=2, start=as.list(fit1$estimate), Domains=cbind(c(0, 0), c(10, 10)), boundary.enforcement=1, print.level=0, hessian=TRUE) summary(fit2) } # (11) Fit of a Pareto distribution by numerical moment matching estimation # if(any(installed.packages()[,"Package"] == "actuar")) { require(actuar) #simulate a sample set.seed(1234) x4 <- rpareto(nsample, 6, 2) #empirical raw moment memp <- function(x, order) ifelse(order == 1, mean(x), sum(x^order)/length(x)) #fit fP <- fitdist(x4, "pareto", method="mme", order=c(1, 2), memp="memp", start=list(shape=10, scale=10), lower=1, upper=Inf) summary(fP) plot(fP) } # (14) scaling problem - too small values # if (visualize) # LONG TO RUN ON CRAN { x2 <- c(-0.00707717, -0.000947418, -0.00189753, -0.000474947, -0.00190205, -0.000476077, 0.00237812, 0.000949668, 0.000474496, 0.00284226, -0.000473149, -0.000473373, 0, 0, 0.00283688, -0.0037843, -0.0047506, -0.00238379, -0.00286807, 0.000478583, 0.000478354, -0.00143575, 0.00143575, 0.00238835, 0.0042847, 0.00237248, -0.00142281, -0.00142484, 0, 0.00142484, 0.000948767, 0.00378609, -0.000472478, 0.000472478, -0.0014181, 0, -0.000946522, -0.00284495, 0, 0.00331832, 0.00283554, 0.00141476, -0.00141476, -0.00188947, 0.00141743, -0.00236351, 0.00236351, 0.00235794, 0.00235239, -0.000940292, -0.0014121, -0.00283019, 0.000472255, 0.000472032, 0.000471809, -0.0014161, 0.0014161, -0.000943842, 0.000472032, -0.000944287, -0.00094518, -0.00189304, -0.000473821, -0.000474046, 0.00331361, -0.000472701, -0.000946074, 0.00141878, -0.000945627, -0.00189394, -0.00189753, -0.0057143, -0.00143369, -0.00383326, 0.00143919, 0.000479272, -0.00191847, -0.000480192, 0.000960154, 0.000479731, 0, 0.000479501, 0.000958313, -0.00383878, -0.00240674, 0.000963391, 0.000962464, -0.00192586, 0.000481812, -0.00241138, -0.00144963) for(i in 6:0) { cat("\nscaling", 10^i, "\n") res <- try(mledist(x2*10^i, "cauchy"), silent=TRUE) if(class(res) == "try-error") print(res) else { cat("estimate\n") print(res$estimate) cat("Hessian\n") print(res$hessian) } } } # (15) scaling problem - too big values # if (visualize) # LONG TO RUN ON CRAN { x1 <- c( 1401928684, 1413455609, 1432458425, 1436910475, 1494883250, 1565770323, 1577486458, 1568908053, 1606424896, 1632264979, 1780495643, 1865525923, 2035689865, 2141429306, 2335443964, 2465661689, 2563368221, 2845012431, 2949890881, 3180645942, 3309009836, 3618581152, 4109197451, 4064662257, 4028375795, 4176781983, 4303024833, 4493470109 ) for(i in 0:5) { cat("\nscaling", 10^(-2*i), "\n") res <- mledist(x1*10^(-2*i), "norm") Hm1 <- try(solve(res$hessian), silent=TRUE) if(class(Hm1) == "try-error") print(Hm1) else { cat("estimate\n") print(res$estimate) cat("Hessian\n") print(res$hessian) cat("inverse Hessian\n") print(Hm1) } } fitdist(x1, "norm") fitdist(x1*1e-6, "norm") } # (16) Fit of a lognormal distribution on acute toxicity values of endosulfan for # nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5 percent quantile value of # the fitted distribution, what is called the 5 percent hazardous concentration (HC5) # in ecotoxicology, with its two-sided 95 percent confidence interval calculated by # parametric bootstrap # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") quantile(fln, probs = 0.05) # (17) Fit of a triangular distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # if(any(installed.packages()[,"Package"] == "mc2d")) { set.seed(1234) require(mc2d) t <- rtriang(100,min=5,mode=6,max=10) # nsample not used : does not converge with a too small sample fCvM <- fitdist(t,"triang",method="mge",start = list(min=4, mode=6,max=9),gof="CvM") fKS <- fitdist(t,"triang",method="mge",start = list(min=4, mode=6,max=9),gof="KS") cdfcomp(list(fCvM,fKS)) } # (18) gumbel distribution # dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) qgumbel <- function(p, a, b) a-b*log(-log(p)) data(danishuni) fitdist(danishuni$Loss, "gumbel", start=list(a=5, b=10)) # (19) check the 'start' argument # if (FALSE) # NO INTEREST WITHOUT VISUALIZATION OF THE RESULT { #create the sample mysample <- rexp(nsample, 5) mystart2 <- list(rate2=8) mystart3 <- list(8) try( fitdist(mysample, dexp, start= mystart2, method="mle") ) try( fitdist(mysample, dexp, start= mystart3, method="mle") ) try( fitdist(mysample, dexp, start= mystart2, method="mme") ) try( fitdist(mysample, dexp, start= mystart3, method="mme") ) try( fitdist(mysample, dexp, start= mystart2, method="qme", probs=1/2) ) try( fitdist(mysample, dexp, start= mystart3, method="qme", probs=1/2) ) try( fitdist(mysample, dexp, start= mystart2, method="mge", gof="AD") ) try( fitdist(mysample, dexp, start= mystart3, method="mge", gof="AD") ) } # (20) example with dexgauss # would require to suggest the package gamlss.dist in the Description file # #if(any(installed.packages()[,"Package"] == "gamlss.dist")) #{ # require(gamlss.dist) # set.seed(1234) # a=rexGAUS(100,mu=500,sigma=50,nu=75) # fitdist(a,dexGAUS,start=list(mu=median(a),sigma=sqrt(var(a)/2),nu=sqrt(var(a)/2))) #} # (21) check the 'keepdata' argument # if (visualize) # REQUIRES VISUALIZATION OF THE RESULTS { #create the sample x <- rexp(1e6, 5) summary(x) f1 <- fitdist(x, "exp", keepdata=FALSE) f2 <- fitdist(x, "exp", keepdata=TRUE) par(mfrow=c(1,2)) cdfcomp(f1) cdfcomp(f2) } # (22) relevant example for zero modified geometric distribution # dzmgeom <- function(x, p1, p2) { p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) } pzmgeom <- function(q, p1, p2) { p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2) } rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } x2 <- rzmgeom(nsample, 1/2, 1/10) table(x2) #this is the MLE which converges almost surely and in distribution to the true value. initp1 <- function(x) list(p1=mean(x == 0)) fitdist(x2, "zmgeom", start=list(p1=1/2, p2=1/2)) f2 <- fitdist(x2, "zmgeom", fix.arg=initp1, start=list(p2=1/2)) print(f2) summary(f2) f2 <- fitdist(x2, "zmgeom", fix.arg=list(p1=1/2), start=list(p2=1/2)) print(f2) summary(f2) # (23) check the use of weights with MLE # set.seed(1234) x <- rpois(nsample, 10) xtab <- table(x) xval <- sort(unique(x)) f1 <- fitdist(x, "pois") f2 <- fitdist(xval, "pois", weights = xtab) f1$estimate f2$estimate #should be identical # (24) check the use of weights with other methods # set.seed(1234) x <- rpois(nsample, 10) xtab <- table(x) xval <- sort(unique(x)) (f1 <- fitdist(x, "norm", method = "mle")) (f2 <- fitdist(xval, "norm", weights = xtab, method = "mle")) (f1 <- fitdist(x, "norm", method = "mme")) (f2 <- fitdist(xval, "norm", weights = xtab, method = "mme")) (f1 <- fitdist(x, "norm", method = "qme", probs=c(1/4, 3/4))) (f2 <- fitdist(xval, "norm", method = "qme", weights = xtab, probs=c(1/4, 3/4) )) fitdist(x, "norm", method="mge", gof = "CvM") try(fitdist(xval, "norm", method="mge", gof = "CvM", weights = xtab)) # not yet developped # (24b) check the use of weights with qme with a discrete distribution # set.seed(1234) x <- rpois(nsample, 10) xtab <- table(x) xval <- sort(unique(x)) (f1 <- fitdist(x, "pois", method = "qme", probs=c(1/2))) (f2 <- fitdist(xval, "pois", method = "qme", weights = xtab, probs=c(1/2) )) # similar to f1 fitdist(xval, "pois", method = "qme", weights = xtab, probs=c(1/2), optim.method="SANN", control=list(maxit=1000)) # fitdist(x, "pois", method = "qme", probs=c(1/2), optim.method="SANN", control=list(maxit=1000)) # should be similar # should give similar results for big samples # (25) check the warning messages when using weights in the fit followed by functions # that do not yet take weights into account # with an example to be used later to see if weights are well taken into account # x3 <- rnorm(100) # this sample size must be fixed here (see next lines, 50+50) x3 <- sort(x3) (f <- fitdist(x3, "norm", method="mle", weights= c(rep(1, 50), rep(2, 50)))) try(plot(f)) try(cdfcomp(f)) (f2 <- fitdist(x3, "logis", method="mle", weights= c(rep(1, 50), rep(2, 50)))) try(cdfcomp(list(f,f2))) try(denscomp(f)) try(denscomp(list(f,f2))) try(ppcomp(f)) try(ppcomp(list(f,f2))) try(qqcomp(f)) try(qqcomp(list(f,f2))) try(gofstat(f)) try(gofstat(list(f,f2))) try(bootdist(f)) fitdistrplus/tests/t-ppcompcens.R0000644000176200001440000000442313344222463016711 0ustar liggesuserslibrary(fitdistrplus) visualize <- FALSE # TRUE for manual tests with visualization of results data(smokedfish) fitsf <- fitdistcens(smokedfish,"lnorm") plot(fitsf) ppcompcens(fitsf) ppcompcens(fitsf, fillrect = NA) ppcompcens(fitsf, fitcol = "black") ppcompcens(fitsf, fitcol = "black", fillrect = NA) ppcompcens(fitsf, ylim = c(0.4,1)) ppcompcens(fitsf, xlim = c(0.4,1)) ppcompcens(fitsf, xlim = c(0.4,1), ylim = c(0,1)) ppcompcens(fitsf, xlim = c(0.5,0.99), xlogscale = TRUE) try(ppcompcens(fitsf, xlogscale = TRUE)) if (requireNamespace("ggplot2", quietly = TRUE)) { ppcompcens(fitsf, plotstyle = "ggplot") } if (requireNamespace("ggplot2", quietly = TRUE) & visualize) { ppcompcens(fitsf, fillrect = NA, plotstyle = "ggplot") ppcompcens(fitsf, fitcol = "black", plotstyle = "ggplot") ppcompcens(fitsf, fitcol = "black", fillrect = NA, plotstyle = "ggplot") ppcompcens(fitsf, ylim = c(0.4,1), plotstyle = "ggplot") ppcompcens(fitsf, xlim = c(0.4,1), plotstyle = "ggplot") ppcompcens(fitsf, xlim = c(0.4,1), ylim = c(0,1), plotstyle = "ggplot") ppcompcens(fitsf, xlim = c(0.5,0.99), xlogscale = TRUE, plotstyle = "ggplot") } if (visualize) { data(fluazinam) log10EC50 <-log10(fluazinam) fln <- fitdistcens(log10EC50,"norm") plot(fln) if (requireNamespace("ggplot2", quietly = TRUE)) { ppcompcens(fln, plotstyle = "ggplot") } } data(salinity) log10LC50 <-log10(salinity) fn <- fitdistcens(log10LC50,"norm") fl <- fitdistcens(log10LC50,"logis") ppcompcens(list(fn, fl)) if (visualize) { plotdistcens(log10LC50) plotdistcens(log10LC50, NPMLE = FALSE) plot(fn) plot(fl) ppcompcens(fn) ppcompcens(fl) ppcompcens(list(fn, fl), ynoise = FALSE) ppcompcens(list(fn, fl), xlogscale = TRUE, xlim = c(0.01, 0.6)) } if (requireNamespace ("ggplot2", quietly = TRUE) ) { ppcompcens(list(fn, fl), plotstyle = "ggplot", fitcol = "red") } if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { ppcompcens(fn, plotstyle = "ggplot") ppcompcens(fl, plotstyle = "ggplot") ppcompcens(list(fn, fl), plotstyle = "ggplot", fitcol = "red") ppcompcens(list(fn, fl), ynoise = FALSE, plotstyle = "ggplot") ppcompcens(list(fn, fl), xlogscale = TRUE, xlim = c(0.01, 0.6), plotstyle = "ggplot") } fitdistrplus/tests/t-ppcomp.R0000644000176200001440000001773413344222463016051 0ustar liggesuserslibrary(fitdistrplus) # ?ppcomp visualize <- FALSE # TRUE for manual tests with visualization of results nsample <- 1000 nsample <- 100 # (1) Plot various distributions fitted to serving size data # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving, "weibull") fitln <- fitdist(serving, "lnorm") fitg <- fitdist(serving, "gamma") # sanity checks try(ppcomp("list(fitW, fitln, fitg)"), silent = TRUE) try(ppcomp(list(fitW, fitln, fitg, a = 1)), silent = TRUE) # real call ppcomp(list(fitW, fitln, fitg)) ppcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlim = c(0, 1/2)) ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlogscale=TRUE, line01=FALSE) ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", ylogscale=TRUE, line01=FALSE) ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", ylim=c(1e-3, 1), xlim=c(1e-3, 1), fitpch=c("+", "-", ".")) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(fitW, fitln, fitg), plotstyle = "ggplot") } if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlim = c(0, 1/2), plotstyle = "ggplot") ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlogscale=TRUE, line01=FALSE, plotstyle = "ggplot") ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", ylogscale=TRUE, line01=FALSE, plotstyle = "ggplot") ppcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", ylim=c(1e-3, 1), xlim=c(1e-3, 1), fitpch=c("+", "-", "."), plotstyle = "ggplot") } # (2) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # data(endosulfan) ATV <-subset(endosulfan, group == "NonArthroInvert")$ATV flnMGEKS <- fitdist(ATV,"lnorm",method="mge",gof="KS") flnMGEAD <- fitdist(ATV,"lnorm",method="mge",gof="AD") flnMGEADL <- fitdist(ATV,"lnorm",method="mge",gof="ADL") flnMGEAD2L <- fitdist(ATV,"lnorm",method="mge",gof="AD2L") llfit <- list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L) ppcomp(llfit, main="fits of a lognormal dist. using various GOF dist.") ppcomp(llfit, xlegend="topleft", xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L")) ppcomp(llfit, xlegend="topleft", xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2")) ppcomp(llfit, ynoise=FALSE, xlogscale=TRUE, ylogscale=TRUE, xlim=c(1e-3,1), ylim=c(1e-3,1)) ppcomp(flnMGEKS) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { ppcomp(llfit, main="fits of a lognormal dist. using various GOF dist.", plotstyle = "ggplot") ppcomp(llfit, xlegend="topleft", xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), plotstyle = "ggplot") ppcomp(llfit, xlegend="topleft", xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), plotstyle = "ggplot") ppcomp(llfit, ynoise=FALSE, xlogscale=TRUE, ylogscale=TRUE, xlim=c(1e-3,1), ylim=c(1e-3,1), plotstyle = "ggplot") ppcomp(flnMGEKS, plotstyle = "ggplot") } # (3) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # if (visualize) { x1 <- c(6.4,13.3,4.1,1.3,14.1,10.6,9.9,9.6,15.3,22.1,13.4,13.2,8.4,6.3,8.9,5.2,10.9,14.4) n1 <- length(x1) dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) f1 <- mledist(x1, "norm") f2 <- mledist(x1, "gumbel", start = list(a = 10, b = 5)) f3 <- mledist(x1, "exp") xx1 <- pnorm(sort(x1), f1$estimate[1], f1$estimate[2]) xx2 <- pgumbel(sort(x1), f2$estimate[1], f2$estimate[2]) xx3 <- pexp(sort(x1), f3$estimate[1]) xlim <- c(xx1, xx2, xx3) xlim <- range(xlim[which(is.finite(xlim))]) # graph 1 plot(xx1, 1:n1/n1, col = "red", xlim = xlim) points(xx2, 1:n1/n1, col = "green") points(xx3, 1:n1/n1, col = "blue") legend("bottomright", pch = 1, leg = c("Normal","Gumbel","Exp"), col = c("red","green","blue")) # graph 2 f1 <- fitdist(x1,"norm") f2 <- fitdist(x1,"gumbel",start=list(a=10,b=5)) f3 <- fitdist(x1, "exp") ppcomp(list(f1, f2, f3), fitcol=c("red","green","blue"), ynoise = FALSE, legendtext = c("Normal","Gumbel","Exp")) # graph 3 if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2, f3), fitcol=c("red","green","blue"), ynoise = FALSE, legendtext = c("Normal","Gumbel","Exp"), plotstyle = "gg") } } # (4) normal mixture # #mixture of two normal distributions #density dnorm2 <- function(x, poid, m1, s1, m2, s2) poid*dnorm(x, m1, s1) + (1-poid)*dnorm(x, m2, s2) #numerical approximate quantile function qnorm2 <- function(p, poid, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, poid, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-1000, 1000), prob=pr)$minimum) } #distribution function pnorm2 <- function(q, poid, m1, s1, m2, s2) poid*pnorm(q, m1, s1) + (1-poid)*pnorm(q, m2, s2) #basic normal distribution set.seed(1234) x2 <- c(rnorm(nsample, 5), rnorm(nsample, 10)) #MLE fit fit1 <- fitdist(x2, "norm2", "mle", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0)) fit2 <- fitdist(x2, "norm2", "qme", probs=c(1/6, 1/4, 1/3, 1/2, 2/3), start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) fit3 <- fitdist(x2, "norm2", "mge", gof="AD", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) ppcomp(list(fit1, fit2, fit3), fitpch=rep(".", 3), fitcol=c("green", "red", "blue")) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { ppcomp(list(fit1, fit2, fit3), fitpch=rep(".", 3), fitcol=c("green", "red", "blue"), plotstyle = "gg") } # (5) large data # if (visualize) { n <- 2e4 x <- rlnorm(n) f1 <- fitdist(x, "lnorm") f2 <- fitdist(x, "exp") ppcomp(list(f1, f2), fitpch=2) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2), fitpch=2, plotstyle = "ggplot") } } # (6) test legend labels # if (visualize) { serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitW2 <- fitdist(serving,"weibull", method="qme", probs=c(1/3,2/3)) fitW3 <- fitdist(serving,"weibull", method="qme", probs=c(1/2,2/3)) fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") ppcomp(list(fitW, fitln, fitg)) #distrib ppcomp(list(fitW, fitW2, fitln, fitg)) #distrib+method ppcomp(list(fitW, fitW2, fitW3, fitln, fitg)) #distrib+method+num if (requireNamespace ("ggplot2", quietly = TRUE)) ppcomp(list(fitW, fitW2, fitW3, fitln, fitg), plotstyle = "ggplot") #distrib+method+num } fitdistrplus/tests/t-parallel.R0000644000176200001440000000216513344222463016337 0ustar liggesusersvisualize <- FALSE # TRUE for manual tests with visualization of results if(visualize) { library(parallel) #fonction basique evaluant la moyenne empirique d'un echantillon gaussien f <- function(i) mean(rnorm(1e4, mean=i)) #exemple simple glist <- 1:20 cl <- parallel::makeCluster(2) system.time( res <- parallel::parLapply(cl, glist, f) ) parallel::stopCluster(cl) #exemple en faisant varier le nombre de coeurs et le nombre de simulations nbsimu <- 10^(1:2) cores <- 1:4 cores <- 1:getOption("cl.cores", 2) partime <- matrix(NA, length(nbsimu), length(cores)+1) colnames(partime) <- c("R", paste("core",cores)) rownames(partime) <- paste("n", nbsimu, sep="=") partime[, 1] <- sapply(1:length(nbsimu), function(i) system.time(lapply(1:nbsimu[i], f))[3]) for(j in 1:length(cores)) { print(cores[j]) cl <- parallel::makeCluster(cores[j]) partime[, j+1] <- sapply(1:length(nbsimu), function(i) system.time(parallel::parLapply(cl, 1:nbsimu[i], f))[3]) parallel::stopCluster(cl) } partime }fitdistrplus/tests/t-cdfcompcens.R0000644000176200001440000000570713344222463017034 0ustar liggesuserslibrary(fitdistrplus) visualize <- FALSE # TRUE for manual tests with visualization of results # (1) Plot various distributions fitted to bacterial contamination data # data(smokedfish) Clog10 <- log10(smokedfish) fitsfn <- fitdistcens(Clog10,"norm") fitsfl <- fitdistcens(Clog10,"logis") dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) qgumbel <- function(p,a,b) a-b*log(-log(p)) fitsfg <- fitdistcens(Clog10, "gumbel", start=list(a=-3,b=3)) cdfcompcens(list(fitsfn,fitsfl,fitsfg)) # Same plot in y logscale cdfcompcens(list(fitsfn, fitsfl, fitsfg), NPMLE.method = "Turnbull", ylogscale = TRUE, ylim=c(.5, .99)) cdfcompcens(list(fitsfn, fitsfl, fitsfg), NPMLE.method = "Wang", ylogscale = TRUE, ylim=c(.5, .99)) if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcompcens(list(fitsfn,fitsfl,fitsfg), plotstyle = "ggplot") cdfcompcens(list(fitsfn,fitsfl,fitsfg), datacol="grey", legendtext=c("normal","logistic","Gumbel"), main="bacterial contamination fits", xlab="bacterial concentration (CFU/g)", ylab="F", xlegend = "center", lines01 = TRUE, plotstyle = "ggplot") # Same plot in y logscale cdfcompcens(list(fitsfn, fitsfl, fitsfg), NPMLE.method = "Wang", ylogscale = TRUE, ylim=c(.5, .99), plotstyle = "ggplot") } # Use of x logscale if (visualize) { if(any(installed.packages()[,"Package"] == "actuar")) { require(actuar) data(smokedfish) fln <- fitdistcens(smokedfish,"lnorm") fll <- fitdistcens(smokedfish,"llogis") cdfcompcens(list(fln, fll)) cdfcompcens(list(fln, fll), xlogscale = TRUE) cdfcompcens(list(fln, fll), xlogscale = TRUE, xlim = c(0.01, 1000)) cdfcompcens(list(fln, fll), NPMLE.method = "Turnbull", xlogscale = TRUE, xlim = c(0.01, 1000)) if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcompcens(list(fln, fll), plotstyle = "ggplot") cdfcompcens(list(fln, fll), xlogscale = TRUE, plotstyle = "ggplot") cdfcompcens(list(fln, fll), xlogscale = TRUE, xlim = c(0.01, 1000), plotstyle = "ggplot") } } # same plot using argument add cdfcompcens(fitsfn, addlegend = FALSE, fitcol = "red") cdfcompcens(fitsfl, addlegend = FALSE, fillrect = NA, fitcol = "green", add = TRUE) cdfcompcens(fitsfg, addlegend = FALSE, fillrect = NA, fitcol = "blue", add = TRUE) cdfcompcens(list(fitsfn, fitsfl, fitsfg), addlegend = FALSE, fitcol = 2:4, fitlty = 1, plotstyle = "ggplot") } # Test on the salinity data set # data(salinity) log10LC50 <-log10(salinity) plotdistcens(log10LC50) plotdistcens(log10LC50, NPMLE = FALSE) fn <- fitdistcens(log10LC50,"norm") fl <- fitdistcens(log10LC50,"logis") plot(fn) plot(fl) cdfcompcens(list(fn, fl)) if (requireNamespace("ggplot2", quietly = TRUE)) { cdfcompcens(list(fn, fl), plotstyle = "ggplot") } fitdistrplus/tests/t-init-actuar.R0000644000176200001440000000260013343175501016754 0ustar liggesusersif(FALSE) { require(fitdistrplus) #test actuar initialization start.arg.default <- fitdistrplus:::start.arg.default #burr library(actuar) alpha <- 3 x <- rburr(1000, alpha, 4, .1) initburr <- function(x) { pi <- 1:3/4 qi <- 1-pi xi <- as.numeric(quantile(x, probs=pi)) y <- log(xi[2])/log(xi[1]/xi[2]) y1 <- log(xi[3]/xi[2])/log(xi[2]/xi[1]) y2 <- log(xi[1]/xi[3])/log(xi[2]/xi[1]) f <- function(eta) (qi[1]^eta-1)^y1*(qi[2]^eta-1)^y2*(qi[3]^eta-1) - 1 eta <- try(uniroot(f, c(-10, -1e-6))$root, silent=TRUE) if(class(eta) == "try-error") eta <- -1 alpha <- -1/eta lambda <- (qi[1]^eta-1)^y*(qi[2]^eta-1)^(-y-1) gamma <- log(lambda*(qi[1]^eta-1))/log(xi[1]) theta <- lambda^(1/gamma) list(shape1=alpha, shape2=gamma, rate=1/theta) } initburr(x) #fitdist(x, "burr", lower=0, start=initburr(x)) #transformed gamma x <- rtrgamma(1000, 3, 2, .1) start1 <- start.arg.default(x, "trgamma") plot(ecdf(x)) curve(ptrgamma(x, start1$shape1, start1$shape2, start1$rate), add=TRUE, lty=2) #fitdist(x, "trgamma", lower=0) #inverse transformed gamma y <- rinvtrgamma(1000, 3, 2, .1) start1 <- start.arg.default(y, "invtrgamma") plot(ecdf(y)) curve(pinvtrgamma(x, start1$shape1, start1$shape2, start1$rate), add=TRUE, lty=2) #fitdist(y, "invtrgamma") } fitdistrplus/tests/t-qqcomp.R0000644000176200001440000001772113344222463016047 0ustar liggesuserslibrary(fitdistrplus) # ?qqcomp visualize <- FALSE # TRUE for manual tests with visualization of results nsample <- 1000 nsample <- 100 # (1) Plot various distributions fitted to serving size data # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving, "weibull") fitln <- fitdist(serving, "lnorm") fitg <- fitdist(serving, "gamma") #sanity checks try(qqcomp("list(fitW, fitln, fitg)"), silent = TRUE) try(qqcomp(list(fitW, fitln, fitg, a = 1)), silent = TRUE) #real call qqcomp(list(fitW, fitln, fitg)) qqcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "Theo.", ylab = "serving sizes (g)", xlim = c(0, 250)) qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlogscale=TRUE) qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", ylogscale=TRUE) qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", ylim=c(1, 250), xlim=c(1, 250), fitpch=c("+", "-", ".")) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(fitW, fitln, fitg), plotstyle = "ggplot") } if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlim = c(0,250), plotstyle = "ggplot") qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", xlogscale=TRUE, plotstyle = "ggplot") qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", xlab="Theo.", ylab="serving sizes (g)", ylogscale=TRUE, plotstyle = "ggplot") qqcomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits", ylim=c(1, 250), xlim=c(1, 250), fitpch=c("+", "-", "."), plotstyle = "ggplot") } # (2) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # data(endosulfan) ATV <-subset(endosulfan, group == "NonArthroInvert")$ATV flnMGEKS <- fitdist(ATV,"lnorm",method="mge",gof="KS") flnMGEAD <- fitdist(ATV,"lnorm",method="mge",gof="AD") flnMGEADL <- fitdist(ATV,"lnorm",method="mge",gof="ADL") flnMGEAD2L <- fitdist(ATV,"lnorm",method="mge",gof="AD2L") llfit <- list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L) qqcomp(llfit, main="fits of a lognormal dist. using various GOF dist.") qqcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L")) qqcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2")) qqcomp(llfit, ynoise=FALSE, xlogscale=TRUE, ylogscale=TRUE, xlim=c(10,100000), ylim=c(10,100000)) qqcomp(flnMGEKS, xlogscale=TRUE, xlim=c(10,100000)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { qqcomp(llfit, main="fits of a lognormal dist. using various GOF dist.", plotstyle = "ggplot") qqcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), plotstyle = "ggplot") qqcomp(llfit, xlogscale=TRUE, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), plotstyle = "ggplot") qqcomp(llfit, ynoise=FALSE, xlogscale=TRUE, ylogscale=TRUE, xlim=c(10,100000), ylim=c(10,100000), plotstyle = "ggplot") qqcomp(flnMGEKS, xlogscale=TRUE, xlim=c(10,100000), plotstyle = "ggplot") } # (3) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # if (visualize) { x1 <- c(6.4,13.3,4.1,1.3,14.1,10.6,9.9,9.6,15.3,22.1,13.4,13.2,8.4,6.3,8.9,5.2,10.9,14.4) n1 <- length(x1) dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) qgumbel <- function(p, a, b) a - b*log(-log(p)) f1 <- mledist(x1, "norm") f2 <- mledist(x1, "gumbel", start = list(a = 10, b = 5)) f3 <- mledist(x1, "exp") xx1 <- qnorm(1:n1/n1, f1$estimate[1], f1$estimate[2]) xx2 <- qgumbel(1:n1/n1, f2$estimate[1], f2$estimate[2]) xx3 <- qexp(1:n1/n1, f3$estimate[1]) xlim <- c(xx1, xx2, xx3) xlim <- range(xlim[which(is.finite(xlim))]) # graph 1 plot(xx1, sort(x1), col="red", xlim = xlim) points(xx2, sort(x1), col = "green") points(xx3, sort(x1), col = "blue") legend("bottomright", pch = 1, leg = c("Normal","Gumbel","Exp"), col = c("red", "green", "blue")) # graph 2 f1 <- fitdist(x1,"norm") f2 <- fitdist(x1,"gumbel",start=list(a=10,b=5)) f3 <- fitdist(x1, "exp") qqcomp(list(f1, f2, f3), fitcol=c("red","green","blue"), ynoise = FALSE, legendtext = c("Normal","Gumbel","Exp")) # graph 3 if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2, f3), fitcol=c("red","green","blue"), ynoise = FALSE, legendtext = c("Normal","Gumbel","Exp"), plotstyle = "gg") } } # (4) normal mixture # #mixture of two normal distributions #density dnorm2 <- function(x, poid, m1, s1, m2, s2) poid*dnorm(x, m1, s1) + (1-poid)*dnorm(x, m2, s2) #numerical approximate quantile function qnorm2 <- function(p, poid, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, poid, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-1000, 1000), prob=pr)$minimum) } #distribution function pnorm2 <- function(q, poid, m1, s1, m2, s2) poid*pnorm(q, m1, s1) + (1-poid)*pnorm(q, m2, s2) #basic normal distribution set.seed(1234) x2 <- c(rnorm(nsample, 5), rnorm(nsample, 10)) #MLE fit fit1 <- fitdist(x2, "norm2", "mle", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0)) fit2 <- fitdist(x2, "norm2", "qme", probs=c(1/6, 1/4, 1/3, 1/2, 2/3), start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) fit3 <- fitdist(x2, "norm2", "mge", gof="AD", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) qqcomp(list(fit1, fit2, fit3), fitpch=rep(".", 3), fitcol=c("green", "red", "blue")) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { qqcomp(list(fit1, fit2, fit3), fitpch=rep(".", 3), fitcol=c("green", "red", "blue"), plotstyle = "gg") } # (5) large data # { n <- 2e4 # n <- 1e2 x <- rlnorm(n) f1 <- fitdist(x, "lnorm") f2 <- fitdist(x, "exp") # qqcomp(list(f1, f2), lty=2) qqcomp(list(f1, f2), fitpch=2) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2), fitpch=2, plotstyle = "gg") } } # (6) test legend labels # if (visualize) { serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitW2 <- fitdist(serving,"weibull", method="qme", probs=c(1/3,2/3)) fitW3 <- fitdist(serving,"weibull", method="qme", probs=c(1/2,2/3)) fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") qqcomp(list(fitW, fitln, fitg)) #distrib qqcomp(list(fitW, fitW2, fitln, fitg)) #distrib+method qqcomp(list(fitW, fitW2, fitW3, fitln, fitg)) #distrib+method+num if (requireNamespace ("ggplot2", quietly = TRUE)) qqcomp(list(fitW, fitW2, fitW3, fitln, fitg), plotstyle = "ggplot") #distrib+method+num } fitdistrplus/tests/t-denscomp.R0000644000176200001440000003153213344222463016353 0ustar liggesuserslibrary(fitdistrplus) # ?denscomp visualize <- FALSE # TRUE for manual test with visualization of plots nsample <- 1000 nsample <- 100 # (1) Plot various distributions fitted to serving size data # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") #sanity checks try(denscomp("list(fitW, fitln, fitg)",horizontals = FALSE), silent=TRUE) try(denscomp(list(fitW, fitln, fitg, a=1),horizontals = FALSE), silent=TRUE) #real call denscomp(list(fitW, fitln, fitg), probability = TRUE) denscomp(list(fitW, fitln, fitg), probability = FALSE) if (requireNamespace ("ggplot2", quietly = TRUE)) { denscomp(list(fitW, fitln, fitg), probability=TRUE, plotstyle = "ggplot") denscomp(list(fitW, fitln, fitg), probability=FALSE, plotstyle = "ggplot") } #test ylim argument denscomp(list(fitW, fitln, fitg), probability=TRUE, ylim=c(0, .05)) denscomp(list(fitW, fitln, fitg), probability=FALSE, ylim=c(0, 100)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(fitW, fitln, fitg), probability=TRUE, ylim=c(0, .05), plotstyle = "ggplot") denscomp(list(fitW, fitln, fitg), probability=FALSE, ylim=c(0, 100), plotstyle = "ggplot") } #test xlim, legend, main, demp denscomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F",xlim = c(0,250), xlegend = "topright", demp=TRUE) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(fitW, fitln, fitg), legendtext=c("Weibull","lognormal","gamma"), main="ground beef fits",xlab="serving sizes (g)", ylab="F",xlim = c(0,250), xlegend = "topright", demp=TRUE, plotstyle = "ggplot") } # (2) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # data(endosulfan) ATV <-subset(endosulfan, group == "NonArthroInvert")$ATV flnMGEKS <- fitdist(ATV,"lnorm",method="mge",gof="KS") flnMGEAD <- fitdist(ATV,"lnorm",method="mge",gof="AD") flnMGEADL <- fitdist(ATV,"lnorm",method="mge",gof="ADL") flnMGEAD2L <- fitdist(ATV,"lnorm",method="mge",gof="AD2L") llfit <- list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L) denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.") if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.", plotstyle = "ggplot") } denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L")) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), plotstyle = "ggplot") } denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2")) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), plotstyle = "ggplot") } denscomp(llfit, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), datacol="grey") if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(llfit, main="fits of a lognormal dist. using various GOF dist.", legendtext=c("MGE KS","MGE AD","MGE ADL","MGE AD2L"), fitcol=c("black", "darkgreen", "yellowgreen", "yellow2"), datacol="grey", plotstyle = "ggplot") } denscomp(flnMGEKS, xlim=c(10,100000)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) denscomp(flnMGEKS, xlim=c(10,100000), plotstyle = "ggplot") # (3) # # if (visualize) { x1 <- c(6.4,13.3,4.1,1.3,14.1,10.6,9.9,9.6,15.3,22.1,13.4,13.2,8.4,6.3,8.9,5.2,10.9,14.4) x <- seq(0, 1.1*max(x1), length=100) dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(x,a,b) exp(-exp((a-x)/b)) f1 <- mledist(x1,"norm") f2 <- mledist(x1,"gumbel", start = list(a = 10, b = 5)) f3 <- mledist(x1, "exp") # graph 1 hist(x1, 10, prob=TRUE) lines(x, dnorm(x, f1$estimate[1], f1$estimate[2]), col="red") lines(x, dgumbel(x, f2$estimate[1], f2$estimate[2]), col="green") lines(x, dexp(x, f3$estimate[1]), col="blue") legend("topright", lty=1, leg = c("Normal", "Gumbel", "Exp"), col = c("red", "green", "blue")) # graph 2 f1 <- fitdist(x1,"norm") f2 <- fitdist(x1,"gumbel", start = list(a = 10, b = 5)) f3 <- fitdist(x1, "exp") denscomp(list(f1, f2, f3), xlim = c(0, 30), fitlty = 1, legendtext = c("Normal","Gumbel","Exp")) # graph 3 if (requireNamespace ("ggplot2", quietly = TRUE)) denscomp(list(f1, f2, f3), xlim = c(0, 30), fitlty = 1, legendtext = c("Normal","Gumbel","Exp"), breaks = 12, plotstyle = "ggplot") } # (4) normal mixture # #mixture of two normal distributions #density dnorm2 <- function(x, poid, m1, s1, m2, s2) poid*dnorm(x, m1, s1) + (1-poid)*dnorm(x, m2, s2) #numerical approximate quantile function qnorm2 <- function(p, poid, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, poid, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-1000, 1000), prob=pr)$minimum) } #distribution function pnorm2 <- function(q, poid, m1, s1, m2, s2) poid*pnorm(q, m1, s1) + (1-poid)*pnorm(q, m2, s2) #basic normal distribution set.seed(1234) x2 <- c(rnorm(nsample, 5), rnorm(nsample, 10)) #MLE fit fit1 <- fitdist(x2, "norm2", "mle", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0)) fit2 <- fitdist(x2, "norm2", "qme", probs=c(1/6, 1/4, 1/3, 1/2, 2/3), start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) fit3 <- fitdist(x2, "norm2", "mge", gof="AD", start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) denscomp(list(fit1, fit2, fit3)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) denscomp(list(fit1, fit2, fit3), plotstyle = "ggplot") # (5) large data # if (visualize) { n <- 1e4 x <- rnorm(n) f <- fitdist(x, "norm") denscomp(f) denscomp(f, demp=TRUE) if (requireNamespace ("ggplot2", quietly = TRUE)) { denscomp(f, plotstyle = "ggplot") denscomp(f, demp=TRUE, plotstyle = "ggplot") } } # (6) graphical parameters # if (visualize) { # 'graphics' plot style denscomp(list(fit1, fit2, fit3), plotstyle = "gr") denscomp(list(fit1, fit2, fit3), title = "Fitted distribution") denscomp(list(fit1, fit2, fit3), main = "Fitted distribution", addlegend = F, demp = T, dempcol = "purple") # 'ggplot' plot style if (requireNamespace ("ggplot2", quietly = TRUE)) { denscomp(list(fit1, fit2, fit3), plotstyle = "gg") denscomp(list(fit1, fit2, fit3), plotstyle = "ggplot", breaks = 20, pro = F) dcomp <- denscomp(list(fit1, fit2, fit3), plotstyle = "gg", demp = T) dcomp + ggplot2::theme_minimal() + ggplot2::ggtitle("Histogram and\ntheoretical densities") dcomp + ggplot2::guides(colour = ggplot2::guide_legend("Fitted distribution"), linetype = ggplot2::guide_legend("Fitted distribution")) } } # (7) test legend labels # if (visualize) { serving <- groundbeef$serving fitW <- fitdist(serving,"weibull") fitW2 <- fitdist(serving,"weibull", method="qme", probs=c(1/3,2/3)) fitW3 <- fitdist(serving,"weibull", method="qme", probs=c(1/2,2/3)) fitln <- fitdist(serving,"lnorm") fitg <- fitdist(serving,"gamma") denscomp(list(fitW, fitln, fitg)) #distrib denscomp(list(fitW, fitW2, fitln, fitg)) #distrib+method denscomp(list(fitW, fitW2, fitW3, fitln, fitg)) #distrib+method+num if (requireNamespace ("ggplot2", quietly = TRUE)) denscomp(list(fitW, fitW2, fitW3, fitln, fitg), plotstyle = "ggplot") #distrib+method+num } # (8) discrete distrib # x <- c(rpois(nsample, 5), rbinom(nsample, 12, 2/3)) fpois <- fitdist(x, "pois") fgeo <- fitdist(x, "geom") fnbinom <- fitdist(x, "nbinom") par(mar=c(4,4,2,1)) denscomp(list(fpois, fnbinom, fgeo), probability = TRUE) denscomp(list(fpois, fnbinom, fgeo), probability = FALSE) denscomp(list(fpois, fnbinom, fgeo), fittype="o") denscomp(list(fpois, fnbinom, fgeo), fittype="p") # 'ggplot' plot style if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) { denscomp(list(fpois, fnbinom, fgeo), plotstyle="ggplot", probability = TRUE) denscomp(list(fpois, fnbinom, fgeo), plotstyle="ggplot", probability = FALSE) denscomp(list(fpois, fnbinom, fgeo), fittype="o", plotstyle="ggplot") denscomp(list(fpois, fnbinom, fgeo), fittype="p", plotstyle="ggplot") } # test the call to any() fpois$discrete <- fnbinom$discrete <- FALSE denscomp(list(fpois, fnbinom, fgeo)) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) denscomp(list(fpois, fnbinom, fgeo), plotstyle="ggplot") #test the forced usage fgeo$discrete <- FALSE denscomp(list(fpois, fnbinom, fgeo), discrete=TRUE) if (requireNamespace ("ggplot2", quietly = TRUE) & visualize) denscomp(list(fpois, fnbinom, fgeo), discrete=TRUE, plotstyle="ggplot") if (visualize) { x <- c(rpois(nsample, 30), rbinom(nsample, 12, 2/3)) fpois <- fitdist(x, "pois") fgeo <- fitdist(x, "geom") fnbinom <- fitdist(x, "nbinom") #3 types of plot of probability mass function par(mar=c(4,4,2,1)) denscomp(list(fpois, fnbinom, fgeo)) #fittype = "l" denscomp(list(fpois, fnbinom, fgeo), fittype = "p") denscomp(list(fpois, fnbinom, fgeo), fittype = "o") if (requireNamespace ("ggplot2", quietly = TRUE)) { denscomp(list(fpois, fnbinom, fgeo), plotstyle="ggplot") #fittype = "l" denscomp(list(fpois, fnbinom, fgeo), fittype = "p", plotstyle="ggplot") denscomp(list(fpois, fnbinom, fgeo), fittype = "o", plotstyle="ggplot") } } # (9) examples with user specified regular of irregular breaks in the histogram # in probability or not # if (visualize) { # two plots with user specified regular breaks in probability or not # hist(serving, breaks = seq(0,200,50)) denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), breaks = seq(0,200,50)) denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), probability = FALSE, breaks = seq(0,200,50)) # with ggplot2 denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), plotstyle = "ggplot", breaks = seq(0,200,50)) denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), probability = FALSE, plotstyle = "ggplot", breaks = seq(0,200,50)) # two plots with irregular breaks in probability or not # hist(serving, breaks = c(0, 20, 50, 100, 200, 300)) denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), breaks = c(0, 20, 50, 100, 200, 300)) # hist(serving, breaks = c(0, 20, 50, 100, 200, 300), probability = FALSE) try(denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), breaks = c(0, 20, 50, 100, 200, 300), probability = FALSE)) # with ggplot2 denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), breaks = c(0, 20, 50, 100, 200, 300), plotstyle = "ggplot") ##### ggplot2 does not take into account non-equidistant breaks !!!!!!!!!!!!!!!! try(denscomp(list(fitW, fitln, fitg), addlegend = FALSE, main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), breaks = c(0, 20, 50, 100, 200, 300), probability = FALSE, plotstyle = "ggplot")) } fitdistrplus/tests/t-qmedist.R0000644000176200001440000000567112772503243016220 0ustar liggesuserslibrary(fitdistrplus) # (1) basic fit of a normal distribution # set.seed(1234) x1 <- rnorm(n=100) qmedist(x1, "norm", probs=c(1/3, 2/3)) # (2) defining your own distribution functions, here for the Gumbel # distribution for other distributions, see the CRAN task view dedicated # to probability distributions dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) qgumbel <- function(p, a, b) a - b*log(-log(p)) qmedist(x1, "gumbel", probs=c(1/3, 2/3), start=list(a=10,b=5)) # (3) fit a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) qmedist(x2, "pois", probs=1/2) # (4) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) qmedist(x3, "beta", probs=c(1/3, 2/3)) # (5) fit frequency distributions on USArrests dataset. # x4 <- USArrests$Assault qmedist(x4, "pois", probs=1/2) qmedist(x4, "nbinom", probs=c(1/3, 2/3)) # (6) normal mixture # #mixture of two normal distributions #density dnorm2 <- function(x, poid, m1, s1, m2, s2) poid*dnorm(x, m1, s1) + (1-poid)*dnorm(x, m2, s2) #numerically approximate quantile function qnorm2 <- function(p, poid, m1, s1, m2, s2) { L2 <- function(x, prob) (prob - pnorm2(x, poid, m1, s1, m2, s2))^2 sapply(p, function(pr) optimize(L2, c(-20, 30), prob=pr)$minimum) } #distribution function pnorm2 <- function(q, poid, m1, s1, m2, s2) poid*pnorm(q, m1, s1) + (1-poid)*pnorm(q, m2, s2) #basic normal distribution x <- c(rnorm(1000, 5), rnorm(1000, 10)) #QME fit2 <- qmedist(x, "norm2", probs=c(1/6, 1/4, 1/3, 1/2, 2/3), start=list(poid=1/3, m1=4, s1=2, m2=8, s2=2), lower=c(0, 0, 0, 0, 0), upper=c(1/2, Inf, Inf, Inf, Inf)) # (7) test error messages # dnorm3 <- qnorm3 <- function(x, a) "NA" x <- rexp(10) #should get a one-line error res <- qmedist(x, "norm3", start=list(a=1), probs=1/2) #as in attr(try(log("a"), silent=TRUE), "condition") # (8) weighted QME # n <- 1e6 n <- 1e2 x <- rpois(n, 10) xtab <- table(x) xval <- sort(unique(x)) f1 <- qmedist(x, "pois", start=list(lambda=mean(x)), lower=0, upper=100, probs=1/2) #, control=list(trace=1, REPORT=1) f2 <- qmedist(xval, "pois", weights=xtab, start=list(lambda=mean(x)), probs=1/2) f1$estimate f2$estimate #should be identical x <- rexp(n) f3 <- qmedist(x, "exp", probs=1/2) f4 <- qmedist(x, "exp", weights=c(rep(1, n/2), round(sqrt(1:(n/2)))), probs=1/2) f3$estimate f4$estimate f3$loglik f4$loglik median(x) median(tail(x, 50)) #try non integer weights try(qmedist(x, "exp", weights=c(rep(1, n/2), sqrt(1:(n/2))), probs=1/2)) # (9) test the component optim.message x <- rnorm(1000) #change parameter to obtain unsuccessful convergence qmedist(x, "norm", probs=1:2/3, control=list(maxit=2), start=list(mean=1e5, sd=1), optim.method="L-BFGS-B", lower=0) # (10) test bounds x <- rnorm(1000) qmedist(x, "norm", probs=1:2/3, optim.method="L-BFGS-B", lower=c(-Inf, 0)) #via optim qmedist(x, "norm", probs=1:2/3, optim.method="Nelder", lower=c(-Inf, 0)) #via constrOptim fitdistrplus/tests/t-lnL-surf.R0000644000176200001440000000374713344222463016254 0ustar liggesuserslibrary(fitdistrplus) nsample <- 1000 nsample <- 10 #(1) beta distribution # x <- rbeta(nsample, 3, 3/4) llsurface(data = x, distr = "beta", plot.arg=c("shape1", "shape2"), min.arg=c(0.1, 0.1), max.arg=c(7, 3)) llsurface(data = x, distr = "beta", plot.arg=c("shape1", "shape2"), min.arg=c(0.1, 0.1), max.arg=c(7, 3), back.col = FALSE ) points(3, 3/4, pch="+", col="red") llcurve(data = x, distr = "beta", plot.arg = "shape1", min.arg = 0.1, max.arg = 7, fix.arg = list(shape2 = 3/4), lseq=100, col = "blue") llcurve(data = x, distr = "beta", plot.arg = "shape2", min.arg = 0.1, max.arg = 7, fix.arg = list(shape1 = 3), lseq=100, col = "red") #test psi <- function(x) digamma(x) grbetalnl <- function(x, a, b) c(log(x)-psi(a)+psi(a+b), log(1-x)-psi(b)+psi(a+b)) grbetalnl(x, 3, 4) grlnL <- function(par, obs, ...) -rowSums(sapply(obs, function(x) grbetalnl(x, a=par[1], b=par[2]))) rowSums(sapply(x, function(x) grbetalnl(x, 3, 4))) grlnL(c(3, 4), x) grlnL(c(3, 3/4), x) ctr <- list(trace=0, REPORT=1, maxit=1000) bfgs_gr <- mledist(x, dist="beta", optim.method="BFGS", gr=grlnL, control=ctr) bfgs <- mledist(x, dist="beta", optim.method="BFGS", control=ctr) cg_gr <- mledist(x, dist="beta", optim.method="CG", gr=grlnL, control=ctr) cg <- mledist(x, dist="beta", optim.method="CG", control=ctr) nm_gr <- mledist(x, dist="beta", optim.method="Nelder", gr=grlnL, control=ctr) nm <- mledist(x, dist="beta", optim.method="Nelder", control=ctr) getval <- function(x) c(x$estimate, loglik=x$loglik, x$counts) cbind(NM=getval(nm), NMgrad=getval(nm_gr), CG=getval(cg), CGgrad=getval(cg_gr), BFGS=getval(bfgs), BFGSgrad=getval(bfgs_gr)) llsurface(data = x, distr = "beta", plot.arg = c("shape1", "shape2"), min.arg = c(0.1, 0.1), max.arg = c(7, 3), pal.col = heat.colors(50)) points(bfgs$estimate[1], bfgs$estimate[2], pch="+", col="red") points(3, 3/4, pch="x", col="green") fitdistrplus/tests/t-descdist.R0000644000176200001440000000207713343175501016346 0ustar liggesuserslibrary(fitdistrplus) nbboot <- 100 nbboot <- 10 # (1) Description of a sample from a normal distribution # with and without uncertainty on skewness and kurtosis estimated by bootstrap # set.seed(1234) x1 <- rnorm(100) descdist(x1) descdist(x1,boot=nbboot) # (2) Description of a sample from a beta distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # with changing of default colors # descdist(rbeta(100,shape1=0.05,shape2=1),boot=nbboot, obs.col="blue",boot.col="orange") # (3) Description of a sample from a gamma distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # without plotting # descdist(rgamma(100,shape=2,rate=1),boot=nbboot,graph=FALSE) # (3) Description of a sample from a Poisson distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # descdist(rpois(100,lambda=2),discrete=TRUE,boot=nbboot) # (4) Description of serving size data # with uncertainty on skewness and kurtosis estimated by bootstrap # data(groundbeef) serving <- groundbeef$serving descdist(serving, boot=nbboot) fitdistrplus/tests/t-mgedist.R0000644000176200001440000000661112772503243016201 0ustar liggesuserslibrary(fitdistrplus) # (1) Fit of a Weibull distribution to serving size data by maximum # goodness-of-fit estimation using all the distances available # data(groundbeef) serving <- groundbeef$serving mgedist(serving, "weibull", gof="CvM") mgedist(serving, "weibull", gof="CvM", silent = FALSE) mgedist(serving, "weibull", gof="KS") mgedist(serving, "weibull", gof="AD") mgedist(serving, "weibull", gof="ADR") mgedist(serving, "weibull", gof="ADL") mgedist(serving, "weibull", gof="AD2R") mgedist(serving, "weibull", gof="AD2L") mgedist(serving, "weibull", gof="AD2") # (2) Fit of a uniform distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # set.seed(1234) u <- runif(100, min=5, max=10) mgedist(u, "unif", gof="CvM") mgedist(u, "unif", gof="KS") # (3) Fit of a triangular distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # require(mc2d) set.seed(1234) t <- rtriang(100,min=5,mode=6,max=10) mgedist(t, "triang", start = list(min=4, mode=6,max=9), gof="CvM") mgedist(t, "triang", start = list(min=4, mode=6,max=9), gof="KS") # (4) scaling problem # the simulated dataset (below) has particularly small values, hence without scaling (10^0), # the optimization raises an error. The for loop shows how scaling by 10^i # for i=1,...,6 makes the fitting procedure work correctly. set.seed(1234) x2 <- rnorm(100, 1e-4, 2e-4) for(i in 6:0) cat(i, try(mgedist(x2*10^i,"cauchy")$estimate, silent=TRUE), "\n") # (5) scaling problem # x <- c(-0.00707717, -0.000947418, -0.00189753, -0.000474947, -0.00190205, -0.000476077, 0.00237812, 0.000949668, 0.000474496, 0.00284226, -0.000473149, -0.000473373, 0, 0, 0.00283688, -0.0037843, -0.0047506, -0.00238379, -0.00286807, 0.000478583, 0.000478354, -0.00143575, 0.00143575, 0.00238835, 0.0042847, 0.00237248, -0.00142281, -0.00142484, 0, 0.00142484, 0.000948767, 0.00378609, -0.000472478, 0.000472478, -0.0014181, 0, -0.000946522, -0.00284495, 0, 0.00331832, 0.00283554, 0.00141476, -0.00141476, -0.00188947, 0.00141743, -0.00236351, 0.00236351, 0.00235794, 0.00235239, -0.000940292, -0.0014121, -0.00283019, 0.000472255, 0.000472032, 0.000471809, -0.0014161, 0.0014161, -0.000943842, 0.000472032, -0.000944287, -0.00094518, -0.00189304, -0.000473821, -0.000474046, 0.00331361, -0.000472701, -0.000946074, 0.00141878, -0.000945627, -0.00189394, -0.00189753, -0.0057143, -0.00143369, -0.00383326, 0.00143919, 0.000479272, -0.00191847, -0.000480192, 0.000960154, 0.000479731, 0, 0.000479501, 0.000958313, -0.00383878, -0.00240674, 0.000963391, 0.000962464, -0.00192586, 0.000481812, -0.00241138, -0.00144963) #only i == 0, no scaling, should not converge. for(i in 6:0) cat(i, try(mgedist(x*10^i,"cauchy")$estimate, silent=TRUE), "\n") # (6) test error messages # dnorm2 <- pnorm2 <- function(x, a) "NA" x <- rexp(10) #should get a one-line error res <- mgedist(x, "norm2", start=list(a=1)) #as in attr(try(log("a"), silent=TRUE), "condition") # (7) test the component optim.message x <- rnorm(1000) #change parameter to obtain unsuccessful convergence mgedist(x, "norm", control=list(maxit=2), start=list(mean=1e5, sd=1), optim.method="L-BFGS-B", lower=0) # (8) test bounds x <- rnorm(1000) mgedist(x, "norm", optim.method="L-BFGS-B", lower=c(-Inf, 0)) #optim and L-BFGS-B mgedist(x, "norm", optim.method="Nelder", lower=c(-Inf, 0)) fitdistrplus/tests/t-bootdist.R0000644000176200001440000002110313344222463016363 0ustar liggesuserslibrary(fitdistrplus) #We choose a low number of bootstrap replicates in order to satisfy CRAN running times constraint. #For practical application, we recommend to use nbboot=501 or nbboot=1001. nbboot <- 1001 nbboot <- 10 nsample <- 100 nsample <- 10 visualize <- FALSE # TRUE for manual tests with visualization of results # (1) Fit of a gamma distribution to serving size data # using default method (maximum likelihood estimation) # followed by parametric bootstrap # data(groundbeef) serving <- groundbeef$serving f1 <- fitdist(serving, "gamma") b1 <- bootdist(f1, niter=nbboot, silent=TRUE) b1 <- bootdist(f1, niter=nbboot, silent=FALSE) print(lapply(b1, head)) plot(b1) summary(b1) # (1) bis test new plot arguments #for new graph functions f1 <- fitdist(rgamma(nsample, 2, 3), "gamma") b1 <- bootdist(f1, niter=nbboot, silent=TRUE) plot(b1) plot(b1, trueval = c(2, 3)) plot(b1, enhance=TRUE) plot(b1, enhance=TRUE, trueval = c(2, 3)) plot(b1, enhance=TRUE, rampcol=c("blue", "green"), nbgrid=15, nbcol=15) if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) set.seed(123) f1 <- fitdist(rburr(nsample, 2, 3, 1), "burr", start=list(shape1=10, shape2=10, rate=1)) b1 <- bootdist(f1, niter=nbboot, silent=TRUE) plot(b1) plot(b1, trueval = c(2, 3, 1)) plot(b1, enhance=TRUE) plot(b1, enhance=TRUE, trueval = c(2, 3, 1)) } # (3) estimation of the rate of a gamma distribution # by maximum likelihood with the shape fixed at 4 using the argument fix.arg # followed by parametric bootstrap # f1c <- fitdist(serving, "gamma", start=list(rate=0.1), fix.arg=list(shape=4)) b1c <- bootdist(f1c, niter=nbboot) summary(b1c) # (4) fit of a gamma distribution to serving size data # by quantile matching estimation (in this example matching # first and third quartiles) followed by parametric bootstrap # f1d <- fitdist(serving, "gamma", method="qme", probs=c(0.25, 0.75)) b1d <- bootdist(f1d, niter=nbboot) summary(b1d) # (5) fit of a gamma distribution with control of the optimization # method, followed by parametric bootstrap # f1e <- fitdist(serving, "gamma", optim.method="L-BFGS-B", lower=c(0, 0)) b1e <- bootdist(f1e, niter=nbboot) summary(b1e) # (6) fit of a discrete distribution by matching moment estimation # (using a closed formula) followed by parametric bootstrap # set.seed(1234) x2 <- rpois(nsample, lambda = 5) f2 <- fitdist(x2, "pois", method="mme") b2 <- bootdist(f2, niter=nbboot) plot(b2,pch=16) summary(b2) # (7) Fit of a uniform distribution using the Cramer-von Mises distance # followed by parametric bootstrap # x3 <- runif(nsample, min=5, max=10) f3 <- fitdist(x3, "unif", method="mge", gof="CvM") b3 <- bootdist(f3, bootmethod="param", niter=nbboot) summary(b3) plot(b3) # (9) fit of a Weibull distribution to serving size data by maximum likelihood # estimation or by quantile matching estimation (in this example matching # first and third quartiles) followed by parametric bootstrap # fWmle <- fitdist(serving, "weibull") bWmle <- bootdist(fWmle, niter=nbboot) summary(bWmle) quantile(bWmle, probs=c(0.25, 0.75)) fWqme <- fitdist(serving, "weibull", method="qme", probs=c(0.25, 0.75)) bWqme <- bootdist(fWqme, niter=nbboot) summary(bWqme) quantile(bWqme, probs=c(0.25, 0.75)) # (10) Fit of a Pareto distribution by numerical moment matching estimation # followed by parametric bootstrap # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! LONG TO RUN !!!!!!!!!!!!!!!!!!!!!!!! # if (visualize) { if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) #simulate a sample x4 <- rpareto(nsample, 6, 2) memp <- function(x, order) ifelse(order == 1, mean(x), sum(x^order)/length(x)) f4 <- fitdist(x4, "pareto", "mme", order=1:2, start=list(shape=10, scale=10), lower=1, memp="memp", upper=50) b4 <- bootdist(f4, niter=nbboot) summary(b4) b4npar <- bootdist(f4, niter=nbboot, bootmethod="nonparam") summary(b4npar) } } # (11) Fit of a Burr distribution (3 parameters) using MLE # followed by parametric boostrap # !!!!!!!!!!!!!!!! LONG TO RUN !!!!!!!!!!!!!!!!!! # if (visualize) { if(any(installed.packages()[, "Package"] == "actuar")) { require(actuar) data(danishuni) fdan <- fitdist(danishuni$Loss, "burr", method="mle", start=list(shape1=5, shape2=5, rate=10), lower=0+1e-1, control=list(trace=0)) bdan <- bootdist(fdan, bootmethod="param", niter=nbboot) summary(bdan) plot(bdan) cdfcomp(fdan, xlogscale=TRUE) } } # (12) Fit of a Triangular distribution (3 parameters) using MLE # followed by parametric boostrap, with crashes of optim # if(any(installed.packages()[, "Package"] == "mc2d")) { require(mc2d) set.seed(1234) x4 <- rtriang(100,min=0,mode=4,max=20) # nsample not used : does not converge if the sample is too small fit4t<-fitdist(x4,dtriang,start=list(min=0,mode=4,max=20)) summary(fit4t) b4t<-bootdist(fit4t,niter=nbboot) b4t plot(b4t) summary(b4t) quantile(b4t) } # (13) Fit of a Pareto and a Burr distribution, with bootstrap on the Burr distribution # # data(endosulfan) ATV <-endosulfan$ATV plotdist(ATV) descdist(ATV,boot=nbboot) fln <- fitdist(ATV, "lnorm") summary(fln) gofstat(fln) # use of plotdist to find good reasonable initial values for parameters plotdist(ATV, "pareto", para=list(shape=1, scale=500)) fP <- fitdist(ATV, "pareto", start=list(shape=1, scale=500)) summary(fP) gofstat(fP) # definition of the initial values from the fit of the Pareto # as the Burr distribution is the Pareto when shape2 == 1 fB <- fitdist(ATV, "burr", start=list(shape1=0.3, shape2=1, rate=1)) summary(fB) gofstat(fB) cdfcomp(list(fln,fP,fB),xlogscale=TRUE) qqcomp(list(fln,fP,fB),xlogscale=TRUE,ylogscale=TRUE) ppcomp(list(fln,fP,fB),xlogscale=TRUE,ylogscale=TRUE) denscomp(list(fln,fP,fB)) # without great interest as hist does accept argument log="x" # comparison of HC5 values (5 percent quantiles) quantile(fln,probs=0.05) quantile(fP,probs=0.05) quantile(fB,probs=0.05) # bootstrap for the Burr distribution bfB <- bootdist(fB,niter=nbboot) plot(bfB) # (14) relevant example for zero modified geometric distribution # dzmgeom <- function(x, p1, p2) { p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) } pzmgeom <- function(q, p1, p2) { p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2) } rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } x2 <- rzmgeom(nsample, 1/2, 1/10) f2 <- fitdist(x2, "zmgeom", method="mle", fix.arg=function(x) list(p1=mean(x == 0)), start=list(p2=1/2)) b2 <- bootdist(f2, niter=nbboot) plot(b2) f3 <- fitdist(x2, "zmgeom", method="mle", start=list(p1=1/2, p2=1/2)) b3 <- bootdist(f3, niter=nbboot) plot(b3, enhance=TRUE) # (15) does fixing p1 reduce bias of estimating p2? summary(b2$estim[, "p2"] - 1/10) summary(b3$estim[, "p2"] - 1/10) par(mfrow=c(1, 2)) hist(b2$estim[, "p2"] - 1/10, breaks=100, xlim=c(-.015, .015)) hist(b3$estim[, "p2"] - 1/10, breaks=100, xlim=c(-.015, .015)) par(mfrow=c(1, 1)) # (16) efficiency of parallel operation if (visualize) { niter <- 1001 data(groundbeef) serving <- groundbeef$serving f1 <- fitdist(serving, "gamma") alltime <- matrix(NA, 9, 5) colnames(alltime) <- c("user.self", "sys.self", "elapsed", "user.child", "sys.child" ) rownames(alltime) <- c("base R", paste("snow", 1:4), paste("multicore", 1:4)) alltime[1,] <- system.time(res <- bootdist(f1, niter = niter)) for (cli in 1:4) { cat("\nnb cluster", cli, "\n") #ptm <- proc.time() alltime[cli+1,] <- system.time(res <- bootdist(f1, niter = niter, parallel = "snow", ncpus = cli)) print(summary(res)) #print(proc.time() - ptm) } # not available on Windows if(.Platform$OS.type == "unix") for (cli in 1:4) { cat("\nnb cluster", cli, "\n") #ptm <- proc.time() alltime[cli+5,] <- system.time(res <- bootdist(f1, niter = niter, parallel = "multicore", ncpus = cli)) print(summary(res)) #print(proc.time() - ptm) } alltime } # (17) bootdist with weights (not yet available, test of error message) # x <- rpois(nsample, 10) xtab <- table(x) xval <- sort(unique(x)) (f1 <- fitdist(x, "pois")) (f2 <- fitdist(xval, "pois", weights = xtab)) summary(bootdist(f1, niter = nbboot)) try(summary(bootdist(f2, niter = nbboot))) # not yet developed fitdistrplus/tests/t-weird-qqcomp-cens.R0000644000176200001440000000635213344222463020103 0ustar liggesuserslibrary(fitdistrplus) set.seed(123) n <- 20 visualize <- FALSE # TRUE for manual tests with visualization of results if (visualize) { # (1) test qqcomp/qqcompcens on a good example # x <- rlnorm(n, 0, 1) dx <- data.frame(left=x, right=x) dx$right[1:(n/2)*2] <- NA dx$left[2:(n/4)*4-1] <- NA f1 <- fitdist(x, "lnorm") f1c <- fitdistcens(dx, "lnorm") f3 <- fitdist(x, "lnorm", fix.arg=list(sdlog=1)) f3c <- fitdistcens(dx, "lnorm", fix.arg=list(sdlog=1)) par(mfrow=1:2) qqcomp(f1) qqcompcens(f1c) par(mfrow = c(1,1)) if(requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(f1, plotstyle = "ggplot") qqcompcens(f1c, plotstyle = "ggplot") } #test log-scale par(mfrow=1:2, mar=c(4,4,2,1)) qqcomp(f1, xlogscale = TRUE, ylogscale = TRUE) qqcompcens(f1c, xlogscale = TRUE, ylogscale = TRUE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(f1, xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") qqcompcens(f1c, xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") } # (2) test qqcomp/qqcompcens on a weird example # f2 <- fitdist(x, "unif") f2c <- fitdistcens(dx, "unif") par(mfrow=1:2, mar=c(4,4,2,1)) qqcomp(list(f1, f2, f3)) qqcompcens(list(f1c, f2c, f3c)) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2, f3), plotstyle = "ggplot") qqcompcens(list(f1c, f2c, f3c), plotstyle = "ggplot") } #test log-scale par(mfrow=1:2, mar=c(4,4,2,1)) qqcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE) qqcompcens(list(f1c, f2c, f3c), xlogscale = TRUE, ylogscale = TRUE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") qqcompcens(list(f1c, f2c, f3c), xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") } #test y noise par(mfrow=1:2, mar=c(4,4,2,1)) qqcomp(list(f1, f2, f3)) qqcomp(list(f1, f2, f3), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2, f3), ynoise=FALSE, plotstyle = "ggplot") } par(mfrow=1:2, mar=c(4,4,2,1)) qqcompcens(list(f1c, f2c, f3c)) qqcompcens(list(f1c, f2c, f3c), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcompcens(list(f1c, f2c, f3c), plotstyle = "ggplot") } #test log-scale y-noise par(mfrow=1:2, mar=c(4,4,2,1)) qqcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE) qqcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, ynoise=FALSE, plotstyle = "ggplot") } par(mfrow=1:2, mar=c(4,4,2,1)) qqcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE) qqcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") } } fitdistrplus/tests/t-gofstat.R0000644000176200001440000000251513343175501016210 0ustar liggesuserslibrary(fitdistrplus) # (1) fit of two distributions by maximum likelihood estimation # to the serving size data # and comparison of goodness-of-fit statistics # data(groundbeef) serving <- groundbeef$serving (fitg <- fitdist(serving, "gamma")) gg <- gofstat(fitg) (fitln <- fitdist(serving, "lnorm")) gn <- gofstat(fitln) gofstat(list(fitg, fitln)) # (2) fit of two discrete distributions to toxocara data # and comparison of goodness-of-fit statistics # data(toxocara) number <- toxocara$number fitp <- fitdist(number, "pois") summary(fitp) plot(fitp) gp <- gofstat(fitp) gp fitnb <- fitdist(number, "nbinom") summary(fitnb) plot(fitnb) gnb <- gofstat(fitnb) gnb gofstat(list(fitp, fitnb)) attributes(gofstat(list(fitp, fitnb))) # (3) Use of Chi-squared results in addition to # recommended statistics for continuous distributions # set.seed(1234) x4 <- rweibull(n=10,shape=2,scale=1) # fit of the good distribution f4 <- fitdist(x4, "weibull") g4 <- gofstat(f4, meancount=10) print(g4) # fit of a bad distribution f4b <- fitdist(x4, "cauchy") g4b <- gofstat(f4b, meancount=10) print(g4b) # (4) estimation of the standard deviation of a normal distribution # by maximum likelihood with the mean fixed at 10 using the argument fix.arg # f1b <- fitdist(serving, "norm", start=list(sd=5), fix.arg=list(mean=10), lower=0) gofstat(f1b) fitdistrplus/tests/t-weird-ppcomp-cens.R0000644000176200001440000000760513344222463020103 0ustar liggesuserslibrary(fitdistrplus) visualize <- FALSE # TRUE for manual tests with visualization of results set.seed(123) n <- 20 if (visualize) { # (1) test ppcomp/ppcompcens on a good example # x <- rlnorm(n, 0, 1) dx <- data.frame(left=x, right=x) dx$right[1:(n/2)*2] <- NA dx$left[2:(n/4)*4-1] <- NA f1 <- fitdist(x, "lnorm") f1c <- fitdistcens(dx, "lnorm") f3 <- fitdist(x, "lnorm", fix.arg=list(sdlog=1)) f3c <- fitdistcens(dx, "lnorm", fix.arg=list(sdlog=1)) par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(f1) ppcompcens(f1c) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(f1, plotstyle = "ggplot") ppcompcens(f1c, plotstyle = "ggplot") } #test log-scale par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(f1, xlogscale = TRUE, ylogscale = TRUE) ppcompcens(f1c, xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1)) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(f1, xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") ppcompcens(f1c, xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") } # (2) test ppcomp/ppcompcens on a weird example # f2 <- fitdist(x, "unif") f2c <- fitdistcens(dx, "unif") par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(list(f1, f2, f3)) ppcompcens(list(f1c, f2c, f3c)) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2, f3), plotstyle = "ggplot") ppcompcens(list(f1c, f2c, f3c), plotstyle = "ggplot") } #test log-scale par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1)) ppcompcens(list(f1c, f2c, f3c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1)) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") ppcompcens(list(f1c, f2c, f3c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") } #test y noise par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(list(f1, f2, f3)) ppcomp(list(f1, f2, f3), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2, f3), plotstyle = "ggplot") ppcomp(list(f1, f2, f3), ynoise=FALSE, plotstyle = "ggplot") } par(mfrow=1:2, mar=c(4,4,2,1)) ppcompcens(list(f1c, f2c, f3c)) ppcompcens(list(f1c, f2c, f3c), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcompcens(list(f1c, f2c, f3c), ynoise=FALSE, plotstyle = "ggplot") } #test log-scale y-noise par(mfrow=1:2, mar=c(4,4,2,1)) ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1)) ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") ppcomp(list(f1, f2, f3), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") } par(mfrow=1:2, mar=c(4,4,2,1)) ppcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1)) ppcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), ynoise=FALSE) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") ppcompcens(list(f1c, f2c), xlogscale = TRUE, ylogscale = TRUE, xlim=c(.1, 1), ylim=c(.1, 1), plotstyle = "ggplot") } }fitdistrplus/tests/t-getparam.R0000644000176200001440000000035713310705056016341 0ustar liggesuserslibrary(fitdistrplus) computegetparam <- fitdistrplus:::computegetparam computegetparam(names(formals(dgamma))) computegetparam(names(formals(pgamma))) computegetparam(names(formals(qgamma))) computegetparam(names(formals(dnbinom))) fitdistrplus/tests/t-qqcompcens.R0000644000176200001440000000536013344222463016714 0ustar liggesuserslibrary(fitdistrplus) visualize <- FALSE # TRUE for manual tests with visualization of results data(smokedfish) fitsf <- fitdistcens(smokedfish,"lnorm") plot(fitsf) qqcompcens(fitsf) qqcompcens(fitsf, fillrect = NA) qqcompcens(fitsf, fitcol = "black") qqcompcens(fitsf, fitcol = "black", fillrect = NA) qqcompcens(fitsf, ylim = c(0,150)) qqcompcens(fitsf, xlim = c(0,150)) qqcompcens(fitsf, xlim = c(0,150), ylim = c(0, 120)) if (requireNamespace("ggplot2", quietly = TRUE)) { qqcompcens(fitsf, plotstyle = "ggplot") } if (requireNamespace("ggplot2", quietly = TRUE) & visualize) { qqcompcens(fitsf, fillrect = NA, plotstyle = "ggplot") qqcompcens(fitsf, fitcol = "black", plotstyle = "ggplot") qqcompcens(fitsf, fitcol = "black", fillrect = NA, plotstyle = "ggplot") qqcompcens(fitsf, ylim = c(0,150), plotstyle = "ggplot") qqcompcens(fitsf, xlim = c(0,150), plotstyle = "ggplot") qqcompcens(fitsf, xlim = c(0,150), ylim = c(0, 120), plotstyle = "ggplot") } if (visualize) { data(fluazinam) log10EC50 <-log10(fluazinam) fln <- fitdistcens(log10EC50,"norm") plot(fln) qqcompcens(fln) if (requireNamespace("ggplot2", quietly = TRUE)) { qqcompcens(fln, plotstyle = "ggplot") } } data(salinity) log10LC50 <-log10(salinity) plotdistcens(log10LC50) plotdistcens(log10LC50, NPMLE = FALSE) fn <- fitdistcens(log10LC50,"norm") fl <- fitdistcens(log10LC50,"logis") plot(fn) plot(fl) qqcompcens(fn) qqcompcens(fl) qqcompcens(list(fn, fl)) if (requireNamespace("ggplot2", quietly = TRUE)) { qqcompcens(list(fn, fl), plotstyle = "ggplot") } if (requireNamespace("ggplot2", quietly = TRUE) & visualize) { qqcompcens(fl, plotstyle = "ggplot") qqcompcens(lfn, plotstyle = "ggplot") } require(actuar) data(salinity) fln <- fitdistcens(salinity,"lnorm") fll <- fitdistcens(salinity,"llogis") plot(fln) par(mfrow = c(2,1)) qqcompcens(fln) qqcompcens(fll) par(mfrow = c(1,1)) qqcompcens(list(fln, fll)) qqcompcens(list(fln, fll), ynoise = FALSE) qqcompcens(list(fln, fll), fitcol = c("blue", "orange")) qqcompcens(list(fln, fll), xlogscale = TRUE, ylogscale = TRUE) qqcompcens(list(fln, fll), ylogscale = TRUE) qqcompcens(list(fln, fll), xlogscale = TRUE, ynoise = FALSE) if (requireNamespace("ggplot2", quietly = TRUE) & visualize) { qqcompcens(list(fln, fll), plotstyle = "ggplot") qqcompcens(list(fln, fll), ynoise = FALSE, plotstyle = "ggplot") qqcompcens(list(fln, fll), fitcol = c("blue", "orange"), plotstyle = "ggplot") qqcompcens(list(fln, fll), xlogscale = TRUE, ylogscale = TRUE, plotstyle = "ggplot") qqcompcens(list(fln, fll), ylogscale = TRUE, plotstyle = "ggplot") qqcompcens(list(fln, fll), xlogscale = TRUE, ynoise = FALSE, plotstyle = "ggplot") } fitdistrplus/tests/t-logLik-vcov-coef.R0000644000176200001440000000076412772503243017656 0ustar liggesuserslibrary(fitdistrplus) # (1) basic fit of a gamma distribution by maximum likelihood estimation # data(groundbeef) serving <- groundbeef$serving fitg <- fitdist(serving, "gamma") logLik(fitg) vcov(fitg) coef(fitg) fitg <- fitdist(serving, "gamma", method="mme") logLik(fitg) vcov(fitg) coef(fitg) # (2) Fit of a lognormal distribution to bacterial contamination data # data(smokedfish) fitsf <- fitdistcens(smokedfish,"lnorm") logLik(fitsf) vcov(fitsf) coef(fitsf) fitdistrplus/tests/t-detectbound.R0000644000176200001440000000176113406643052017044 0ustar liggesusersrequire(fitdistrplus) #case where the density returns a Not-an-Numeric value. detectbound("gamma", c(shape=3, scale=3), 1:10, echo=TRUE) detectbound("logis", c(location=3, scale=3), 1:10) detectbound("geom", c(prob=1/2), 1:10) #test rate-scale arg detectbound("gamma", c(shape=1, scale=3), 1:10) detectbound("gamma", c(shape=1, rate=1/3), 1:10) x1 <- c(NaN, 1:3) x2 <- c(1:4) x3 <- c(NaN, NaN) is.nan(x1) && !is.nan(x2) is.nan(x3) && !is.nan(x2) #case where the density returns a Not-an-Numeric value and one parameter is fixed. detectbound("gamma", c(shape=3), 1:10, fix.arg=c(scale=3)) #case where the density returns an error rather than a Not-an-Numeric value. dgeom2 <- function(x, prob, log=FALSE) { stopifnot(prob >= 0 && prob <= 1) dgeom(x, prob, log) } detectbound("geom2", c(prob=1/2), 1:10) #case where the density returns a Not-an-Numeric value for actuar package require(actuar) detectbound("burr", c(shape1=3, shape2=3, rate=1), 1:10) detectbound("llogis", c(shape=3, rate=1), 1:10) fitdistrplus/tests/t-quantiledist.R0000644000176200001440000000506113343175501017246 0ustar liggesuserslibrary(fitdistrplus) nbboot <- 1001 nbboot <- 10 # (1) Fit of a normal distribution on acute toxicity log-transformed values of endosulfan for # nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5, 10 and 20 percent quantile values of # the fitted distribution, which are called the 5, 10, 20 percent hazardous concentrations (HC5, HC10, HC20) # in ecotoxicology, followed with calculations of their confidence intervals with various definitions. # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") quantile(fln, probs = c(0.05, 0.1, 0.2)) bln <- bootdist(fln, niter=nbboot, bootmethod="param") quantile(bln, probs = c(0.05, 0.1, 0.2)) quantile(bln, probs = c(0.05, 0.1, 0.2), CI.type = "greater") quantile(bln, probs = c(0.05, 0.1, 0.2), CI.level = 0.9) # (2) Fit of a distribution on acute salinity log-transformed tolerance # for riverine macro-invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5, 10 and 20 percent quantile values of # the fitted distribution, which are called the 5, 10, 20 percent hazardous concentrations (HC5, HC10, HC20) # in ecotoxicology, followed with calculations of their confidence intervals with various definitions. # data(salinity) log10LC50 <-log10(salinity) flncens <- fitdistcens(log10LC50,"norm") quantile(flncens, probs = c(0.05, 0.1, 0.2)) blncens <- bootdistcens(flncens,niter=nbboot) quantile(blncens, probs = c(0.05, 0.1, 0.2)) quantile(blncens, probs = c(0.05, 0.1, 0.2), CI.type = "greater") quantile(blncens, probs = c(0.05, 0.1, 0.2), CI.level = 0.9) # (3) Estimation of quantiles of the fitted distribution (fln) # and two-sided 95 percent confidence intervals for various # probabilities using non-parametric bootstrap with 101 iterations # bln.np <- bootdist(fln, bootmethod = "nonparam", niter = nbboot) quantile(bln.np, probs = c(0.05, 0.1, 0.2)) # (4) Fit of a loglogistic distribution on the same acute toxicity values and # estimation of the 5 percent quantile (HC5) of the fitted distribution # and associated two-sided 95 percent confidence interval # fll <- fitdist(log10ATV, "logis") bll <- bootdist(fll, bootmethod = "param", niter = nbboot) # in log10(ATV) HC5ll <- quantile(bll, probs = 0.05) HC5ll # in ATV 10^(HC5ll$basequant) 10^(HC5ll$quantCI) fitdistrplus/NAMESPACE0000644000176200001440000000433113315137601014226 0ustar liggesusers### Imports import(stats) importFrom("survival", Surv, survfit) importFrom("MASS", kde2d) importFrom("grDevices", colorRampPalette, terrain.colors) importFrom("graphics", abline, axis, hist, hist.default, legend, lines, par, plot, points, polygon, contour, layout, matlines, segments, stripchart, image, pairs, rect) importFrom("utils", head, stack, modifyList) importFrom("methods", formalArgs) importFrom("npsurv", npsurv) ### Exports #fitdist class export(fitdist) S3method(summary, fitdist) S3method(plot, fitdist) S3method(print, fitdist) S3method(print, summary.fitdist) S3method(print, quantile.fitdist) S3method(print, gofstat.fitdist) S3method(quantile, fitdist) S3method(logLik, fitdist) S3method(vcov, fitdist) S3method(coef, fitdist) #fitditscens class export(fitdistcens) S3method(summary, fitdistcens) S3method(plot, fitdistcens) S3method(print, fitdistcens) S3method(print, summary.fitdistcens) S3method(print, quantile.fitdistcens) S3method(quantile, fitdistcens) S3method(logLik, fitdistcens) S3method(vcov, fitdistcens) S3method(coef, fitdistcens) #bootdist class export(bootdist) export(CIcdfplot) S3method(summary, bootdist) S3method(plot, bootdist) S3method(print, bootdist) S3method(print, summary.bootdist) S3method(print, quantile.bootdist) S3method(quantile, bootdist) #bootdistcens class export(bootdistcens) S3method(summary, bootdistcens) S3method(plot, bootdistcens) S3method(print, bootdistcens) S3method(print, summary.bootdistcens) S3method(print, quantile.bootdistcens) S3method(quantile, bootdistcens) #descdist class export(descdist) S3method(print, descdist) #new generic functions [to be removed] #export(loglik) #S3method(loglik, default) #dedicated fit functions export(mledist, mmedist, qmedist, mgedist) export(detectbound, prefit) #plot functions export(plotdist, plotdistcens) export(llplot, llsurface, llcurve) #graphical comparison export(cdfcomp, denscomp, qqcomp, ppcomp) export(cdfcompcens, qqcompcens, ppcompcens) #quantile functions [to be removed] #export(quantiledist) #export(quantiledistcens) #other functions export(gofstat) ### use dynamic library for C code #useDynLib(fitdistrplus, .registration = TRUE) fitdistrplus/data/0000755000176200001440000000000012772503243013724 5ustar liggesusersfitdistrplus/data/danishmulti.rda0000644000176200001440000012056412772503243016745 0ustar liggesusers‹ìýu\UO×?Ó% !XXˆ‰‰ŠºÆnìVÄÆÅÆîn±ElEéAé.‘ÎC7<çpÖ —û\Ü~®û¾¿ßßó¼žßù÷{ï™5kVí5{ïY,˜¼LOa™‚˜˜˜„˜D[q1 Iþ¥$øÿˆ‹I‰Éó±Í†µ;·ì1Ù±w»ù11Iuþ)i>*‹‰Éí'6—Å?bsñ:âm>àà+Ú ÚqÐÑ Ñƒƒ>ˆAˆ¡ˆ‘ˆñˆ)ˆˆyˆˆEˆ<ÄRÄJÄZ!~PDìÐ vGìØ±?¢âtÄyˆ —!®@\…¸“ƒ¦ˆ‡8hÁÁãˆg/"¢Þ>ÜC|„hÅAkDÔÏ¢>x!#¢>Ds0õò! åýåý¡öOü(†(ƒ¨€¨Œ¨‚¨ƒØ›ƒ(ÿÇ#NE\ÄAÔËGÔËG#nB4i·sp7â>Ä<Šxñ,Q/ÿ­ÑÏ>¾C´á úÙG7¢~?¢~?~F @D¿ûˆzÿˆ~÷õû111 ýðc"êÿ#êÿ#Õ{½m%¥9ˆv`«‚Ø q"úípÄ‘­à(ŽE$ˆS98ý×v "Ú‹-Ú‹í:Ä ­ Ú‰­)"êÝö:â]D+Ĉ8èÁAŒ“¶¨?Û¢¿Ú¢Ú&r0 ã¦-ÆM["ê϶±Qˆv’ˆR”EDýÙi bµë‚؃=µ{"¢ßÛõâ`oöå ."Æ»AˆƒÑ^ìÐ>ìôGsp< âĉˆSÑ~ìð>`‡vd‡öc‡öc·qWrp5¢1âFDŒKv›9¸ q¢)¢1NÙáýÅî8âID´S»3ˆ1>Ù]G¼ÇÁ'´jŸµ‚x_²{‰ˆñÍî5âDŒwv8ˆ~cg‹ˆ÷3;GDô#;gºrã¤;"ú›ú›âįˆß9‚…ˆ÷M;Œ§vIˆ?1¯±Kç`³8˜‹ˆy±±”ƒåˆUˆ5ˆµ¢½"Þ§íåÑÏí•8¨ŠØŽƒì;#jq°+"ú½}oöAÔå ú¹=ú·ý0Äá­ ú½ýDÄñ$ˆZAôûɈì1ØÏA\ˆˆqÀ~—·‚Æ\ÏAÌ;ìÑßíw!¢Ûcb„ƒ§Osð,/róû+ˆ¸>°¿Þ Þàà-ÄÛ´ä ÆûûˆOì1>Øc\°G¿·G?¶G¿µ÷DÄüÆÞñ}Ñí8øýØ>1šƒxµG¿µÿÅÁt¢¿Úç æs°ýؾ‘ÇAôcû2DôgûJVq°šƒè÷öuˆ ˆx¿·o¢ú¿Þç08`Þî€þï ‚ˆ~ïб#bg¢ß;`>àГƒðþï€qÀa "ú½ÃDÌ 08Œ@ÄiœÉACĹˆ¸^pXŒˆ~ì°qy+ˆ÷q¼;`¾è€þë€y¢ÃFâýÝa3· ¢¿;ìäàĽˆû8x¼Äxà€qÀáL+xñâUÞDD¿v¸ƒˆÏ#¢?; ?;î€þî€ë7¢ÿ; ÿ;à}ÛýÞóe¼ÿ:$q×5x?v@¿v@ÿu@ÿuÀ¼ÙýÖýÔ‡ˆ÷]ôKôG‡*¢ÿ9ÔrýÐýÍýËQﳎègŽxuD¿rD¿r쎈ù±c?ÄDqDqÄõ’#æÃŽx¿tD?rÄû ã$Næ ú™#æÅ޳Ñ¿ç#âzËï—Ž‹8¸œƒkÑq½å¸‹ƒ¦ˆ{[AôÇ­àaD¼:mqð1¿vDsÄû¬#ú•#ú•ãU^C¼ÎA¼¯:â}ÕÑ’ƒxÿt|ˆˆþçˆþçø”ƒ˜‡;¢_:¢_:bþíh‡èÀAÌ«1vD¿sü†ˆÏñ~êˆÏñþ郇˜€˜†ˆ÷IGô7G\§:â}Ò‘‡ˆþæXÊÁòVýϱ†ƒèŽøœÂïÂiòQŸ_8á}Ñ ýÔ ïwN¸ÞuêÊA¼9 AD¿sÂüÔiL+hÀA|Žá4‘ ¢:Má ú¡æ¥NèNó8ˆ÷7'\—:¡Ÿ9mâ Þœ0uÚÑ îä ®Cð~åt„ƒèONèGNx_r:ÃAô§ÄûúÓ½Vý ýÁ íÞé91ßtzÃA\g:á}É íßÉ£Ä<Ô ïCNxrÂüÓ ×N¡­`"®'ММ0uB?rÂû›ÞÇœð>æô«Lç`6b.Ñ 8ˆùªýÑ©‚ƒxtªâ úæ¡N˜:ãó&gÊ!bþéÜï“ÎÊTATCTGlÇA|åŒëNgôWg|ÞìŒëNgÌ?ñù’óVýÛ×Îø¼Éï¯Îc8H88q&çrï£ÎxuÆû¨3Þ?q½éŒ~íŒy©3æ£ÎxuFÿvƼÓýÜy+â¶Vã€óŽVp'MÍþ‚»9¸‡ƒæˆxwވϷœñ½‰3ÆgŒ+Î'9ˆqÆã‹3®sñþë|½ĸãŒ÷agŒ?Θÿ:ßåà=Þçàâ{gŒSÎVˆ˜/;ãó2gŒSÎøüßógg¼O;ã}ÚóggŒWΘ7;ã}ÛÙ›ƒxßvÆ÷Μñy–3Þ¿1Þ8ãóeģ“9ˆñÈ9…ƒiÄ8äüŸ{9g"b|rÆøãŒù€3®kñ~î\ËAŒ/Î ¤ñï÷.w\ð¾î‚ñÆ×½.w\ð9˜ Æ—¶ˆ*ˆêìÀÁŽÄ÷.]8؃ƒÚÄõ² æù.ý9ˆqËe("Æ!Ì#\0pÁç_.¤ļßóyŒG.s8ˆëhŒO.Ÿ\pã” æ.§\0ÏwÁu´ Æ+cDÌK\0n¹àúÙã— ®\¶sÐã‹Ënbq9ˆˆqÄóÌç]0n¸œj1ž¸`~ïržƒ8ˆÏÙ\pà‚ñÇå:"ÆŒ/._\rð­1ŸqÁ8á‚y½ æ3.¸îv±GļÆã„ Æ Ìg\pí‚qÃ×Ù.Ÿþ‚þˆøœÍ× .˜×¸`ã‚ë |îæRÉÁ*brÁ8ãÒÈAŒ7B1ó×®Ä÷l®Òˆ—\•[AŒC®ªTã Æ%W|~àªÉA\ϸb¼rÅuŒkVŸ×¹âó:W|¾àŠy’ëàVp‡spõ[ÁQĸæŠqÍŸ_¸D\/¹â:É×I®ß\1ÿr…ˆÏ/\1ιrp"Æ;WŒs®K9ˆqÎó1WŒs®ÆÄ8çŠyš+æe®˜—¹bþåjŠˆy‘+æE®øÃó×ã<ÍAŒW®çÿ‚8ˆñË߸bürÅušëuDÌ“\1~¹â:ÍóWÌ{\1~¹>i1޹bs}ÃÁw|ß b¾äŠï]1OrÅç‹®®Ä8èêÎAÌ—\ñ½ +®ë\1¾¹âúÎ5„ƒ˜O¹†q0×y®QÄøèÇAŒ“®‰ÄxéšÂAŒ›®iˆ']Ó9ˆù—kö?Ä<b\uÅ礮?]ñyŒ+®]1nºbžæÚø' Åÿ/ˆñÒM¢Ä<ÎM†ƒ?Ý0ŸsÃ|Πבn˜×¹a^çÖ™ƒ˜—¹uGÄ<Ì ó07Œƒn½8ˆëJ7ÌÓÜpé6ˆƒ݆qבnïÜ0ιásZ7\Gºa^ç†ñÏm<1ºMà ¾×tÃxè†ñÐ ã¡ÛŒVó@·Yÿgsã©›!ç!b»aþé†ë_7|>í†y¨æŸn·Ýðù´Æo7ÌCÝŽpð8"æ£n§8ˆÏ™Ý0®»ázÖ óI7ŒÃn‡Ýp]êvŸƒ9ˆñÙ ã±>Gv³â >WvÃüÓ ãµÛ{bvsà æ¡n—Ýpýê†ñÙ ã²Æe7ÌOÝ0/uóá Æe·bœvÃxìÆÁpÄhb¾ê†ñØ ã¯["1þºáú×-•ƒwÝ0Þºa¼uÃõ®ÆU7ŒŸn<bþéV× bþéŽñÒóIwŒ‡î¸¾uÇ<Ñ]ƒ˜ÿ¹ãúÔ½3ñý­;Æ9wŒsî¸þtÇ<Ðã;æqî·Ü1^¹c\rŸÈAÌÓܧpp*1N¹c\rŸÕ b|qÇõ©;Æ÷E­àbçŽqÃ}Wsp "Æw|ìŽy;®cÝ1®¸cžçŽñÄã‰;ÆwŒ'î»8hŠhÆAÌ Ý1®¸ã:ן—¹cœqÇ÷]î˜/ºãó2÷ãˆgÜñ9™;æyî×9ˆëT÷;´äàƒVð!qãŽûÓVðñù¾;>/sǸãŽqÇŸ—¹ä "®‹Ý1þ¸cÜqÇ8ã߇¹ãó}wÌÝý[AŒ?îˆø¾ÌŸ»¹cžèŽy ;ÆwŒ7î˜÷¹cœqÇøâžÊAŒ/î_Üs9ˆù™;>Osç!âº××½î¬â Æw|æŽy›ÆÌËz`|ôÀ¸èqÐã Ç^îk1>z`¾åÏÿOóÄçhžW<1žxb~å‰ë6Ï­ >WóÄ<Ëß7zb¼ñ¼ÏAŒ7žO8hÅAŒCž‡<1þxâs6OŒ7žo<ß·‚6Ä|ËÓã'®ë<1þxâzÎÓ›ƒ¸žóüÄAÌ»<¿p0ƒø<Î3„ƒ¡A\zb<óÄ|Ìãš'®ÿ<9ˆy™gz+ˆë=O|á‰ë=Ïb¼óÄçjž­ ¾·ðÄõ¢'ÆAOŒƒže­`9q]é‰ù'ÆKOŒ—žø^Õ ã¤ÆC/™VŸ»yaœôÂço^ lÃAŒŸ^Jď饯A|oá…y£WÇ¿ V+ˆq׫;">ßóÂøë…q׫O+ˆÏù¼0.{a<öÒå ®‹½qã°AÄõ°æy^“9ˆùÆI/\¯zázÕkqýê…ñÔk%1ŽzáúÕË„ƒG½¶sã§×.bõÂç]^O½0Ïò¸êu˜ƒø‡æa^¸.õÂõ¨ÆS¯s<ß b¼õÂ|Íë:"~Çì…y›ÆS/Œ›^¸õzÄA+D\ozYsã¦æk^½pé…ù™—1_órä ¾wðÂøè…ïc½0>zá:Ôë3q}é…ñÎ ãšÆ5/\gzáó-/Œk^¸ÎôÂï3½0®yaþæ…ï¼p½é•†˜Ñ frãžÆ7¯<âúÔ ¿óð¸æUÞ bÜòªû…âá#Æ+oÌç¼%9ˆù·,å9ˆëWo5bþæÝ±ÄçhÞ¸žõÆ8ãëRoŒ3Þ½8Ø›ƒO¼1~xj1ÏóÆuª7æoÞã98‘ƒO¼§qׇ޳[A|žïÏÙ¼q½è=q>pŸç{/jsã™÷ò¿ Æ9o̽1¾y#â:ÔóEo̽·ppë_סޘOzc<ôÆ8èmŠˆñÐ{w+ˆñÑû qã¤7æ™Þ½1ŸôÆ8çy¤÷]b|ó~ÀAŒwÞ8ø˜ƒVˆÿ¼ñy¿÷KbÞèy£· í1ôƼÎã—7æsÞ_9ˆy7Æ1oÌϼc8ËAŒcÞ¸õÆxæùš7Æ5ïT¦!b<óÆ8æqÌó7oŒgÞǼó9ˆùšw!1óƼͻ¼®c9%>¤×o_»Gð¤Cå_NJM^k.xz"XÙ* Š}@ɯûƒz-‹]9VBÛëîw‚í¢”åž ?f”DTCïYºñ‘¬81·Òm9äDîn¬ë2òÄ>å*?K ÕuŸ%ü—Ð~D÷,?ä^TíP[šÞuWG\ä] mŽõ‹ƒšçm.—!zsF.¸#ª=R6>LTo„L­t‚’â[Ô}&ÊæCš»(c¦ªiQíˆÜë‘­2ÇÙjF½çC‘]¿š¯W©¹²çÎåÑyÐ~Pç¿®Ý7å¶±lòàDwÈ4~ þT&ÔþQyNz8x¿™ðFSžñMǯÿíïú”(8½Ýº[ÙjV´}"ᔿ ‚{ˆ-æ/m7–M8þæ'Ô ê2·óÔl\u÷ó¡u$ïgÞ}ݽ²…ó'C‘nrlmt[¨1œ¾±ëMoˆ{"Þ¸*Û xH¯dûñÓ]SÔˆXã͇Ï/ÊAÿæ=ºˆØ½©ÙÉO˜¾L/xÜ÷ƒt™¾¤bÅðw¤ýµÕ‡lÍ¡fÔÀ}R¹D}û‹ÚÊ÷_ úCßH‡vm‰ö«mzGůR~ v¬ÛfÚ±Dlæñ­å[ŸQ:Pÿ-,ñÉÔ7Db·ý;™ÙþņÙÝ~ß¹2oD+¨3Y÷¨\G(õ~3Ãùý&oªï¢Y[¾¬N‡’0WGãvã˜|•º­²”ò‰ƒrO“[9ý‚ ô„íù…diPÀëAKm˜ÝÕ,ˆy¹Þb>éé/{´ve=ð|ôŽÎjÑ“–k?ëD¬>aôçû;ˆdîɰ>_ ww—o||xWouHî´ÓS£ùÐCÁ†5Pã¸Ù±ýÊ'¯jŒTÀúùàéPùŨ½°ëMµbŸî ‚ÏB{!2×d'…Áj¥?2xLÿÒ»h̺k¿‚Ö.8¾ø0Th¬^t?Í*VÜz½Yÿ1”eÊìV³„¦ €7®‡C­%HþÈÞËì¥Þ5òØxä֒¶ºz@H=Ù±l³OHÖ²Ø1*çd é¶ÈK÷ò(ÙfDY±ß‘ù™ó˜?WŒÜŸ;åíR:_"Õ½÷¡qzYDÜ@n¬ò ¾}iYì¶œ­Oz?)Ð^p}*ëGý¥úv÷ûf^$R‡%£fŒseó©Eÿ®œ ï´öQBû©Q»À|B§¾PÞÕ‡xÏn9jbQ>Dœï¥_‰KJ=Í)]¦_©Ç‹Îi¤l r¡Y=G(/nÑÚÚ%kzn±3ô éTïÛmƒò~eêz—¿2;Çñh?"3Yÿ@NW}6ªOjWtÜòËyÉñz|{´2Ö› ¿Sb~ûù~¼ë³6ëAUŠÇˆN·Å ú´ýÙçW ¡n±Oèª]P¥ªufjÄ,ÒÞrþ9• Py]ïÊ”šáPnu!iÄÉDýÍ—’¡ÒC‰ä¥,Ó‘åNDÑor\å¬gÐd¾ÝInÅgH °Z÷kß(v|ë©“ðêcÖ¿ž¼ £+}ôˆ…øG]¨›èÿ¸iP$ôãÝ^0´*t=oÞü4‚µ“ªž~ Ïz”#fTOßg`zŸŽCT.}Ù°s¼5TÎ5«ë¤Ö‹µ«Xÿª]ƒÚˆYÿª½ÍdM"×wR§³¹yD+fýË÷ÞPÓwã¹Xw(M5ß~uã»EŸ”NŸr ƒ^‰ÊŽK¯W.åÔûŠ#4®0WÓ!Ýe,ìÕÝ.duYµE:{c;51¾Ò"VOž*Ez S#ÚðûYáàñªýSêûù@ÍÍÞ¦?eüU÷[8â\wSÆgÝ`U‰!Él|"ñrѦÔó*Ûwµ,t¿ë|RõæK*'"Ó.d±£§-k¯¶¶ìßœM?¶ :Ïæ#mç!¶}í¦:/ÊG¥”ñîiDâÑò|‰ÂhXyïÝÊÕA57qGEoYÒÖ|»óš2{ÒŽÎõ_±Îßñ€w£Kí£²zkd²ýT;«-ˆ4NÛzб]©Ø¸ø^Y¤ÍDÿG¯ïÊ2ú(OÒöÈH“©Y“ˆ Ù¶:Pº¥_ÍÃλ2 L®Ó×Cì¡"fè‘yW\™~Åû\ÿÓ…(½EYéÚP61Wîó#Ê'Ó7gíÈ–í/B…¸ú¥|Ùø2B¹@eÚcÙ¤;Ÿ³n  ra…¬›4Ôk”íÒ®>U·T;~ˆgz¬?´4ñÜÞãü¸:Dÿý8i¨~îyõRùV¨ ·(Ü´·%~àød€b»VJ‘DÌ}¸meõg¢vr¨WÖ¡ïÔX?*ï”Çö'&¤”1¹×œYd¢ßƒhKî|º«”ˆ ý>¼ýðd#”?û®ó4"^ø+dCuªªà)l¬]vx×KnöSÌƒŠ…±ÑW.ídó*ö1Õ•z—ß(Pþ2MMi³3É+l!Ì®(ŸÔ?ªv ÏÝæ“å;ó×yÈ[@ì™ÎÓåg±ö%÷üog}`ó§vÝ=gn}áábÈõ?ÚÑøà8pʃÙKãÚ]CëÑ!_O{,ÿðp9ÔÊú•©­"2H·ðHg§Û_¶z}_­ 5Ûnõ^—¯µ&dÈTg¢.³aO`u”X'^_U ×~ëÂG.k%@ÙÜÝ~>‡# ðCXö°ãÆŒnùˆO9úéSà7¿¿Ö€•PòöHõÂõ‹ ±£Ã¨}¹P†çë/ܵy7ñ4šZ¹ßðj­/[YЪ>šjÊ·£©'”B¾Óö¤ç¤)ΕéD:­ìÌž©¬á«]6øBÉ<准sïCyáÎã†.Pqaºßè’[PÝuüg½ÛPâQ¹p`í"‰ã×ÌŒ¼î5T^Ú:V®Ø§å~Ûá¬ée;v\*v«ûÀÀ ~Þ«6û¼¿3”½îr¦*BH;¿—Yxb(‘ž?u~—~2Peh ü$zï¸×O{† ‡Ñ¡ú¥r©öê5†ù)³ï :c¦V»AÃóŠ;_‚»)“U?ë÷Ê0þd£›ätÏ‚S+¯w}[ì»Î[aä{6n¹ùoÍ[í Û徜Qy¿g#TG$6ÞòŸuC_蟜3‡ ì“¶ô~GMÒy™ùøgé;§°û±ù» ü@DšÃO7"¶º (V_Šˆåy[¥¦T3þ)VtÑ|¶´ï¨žÔð¸¶AÊ×ôÑÙ瘟¡½¢]ðïGòãÚÿn‘ÇŸògvC¯'Z_~”T´Ú-³:ß Ø\ž”µG?‘iÓ˜½*‡®ìûõ‘8—oJŸHî<úÛ9¨¼´ÌܰgQ6µr3ûQAí‰Å‘ò¬õw‡…ÐvÀÓYo>é)”Øv/Æx¯v\Ü-¿*AÿüISY(î5Ç«j‚/ð<<ŠÃc!×¥Ic†É"".{«SíÒ™D%gõ¦ßës˜œxRW× ,= Mr ‰¿Ü¶ÃO[‡‹6$‹ÑÏò Òvó|(8˜fÓÇÓžO7ä~¯ã; ¤qAÀ³ ·‰âÁ´Ç=…²[Aûr«)="ÛSæŠþ¯¬_©m©áTç{ÅöU©§Óæ*¼ƒòFåó ñaDÁa¢µW|T¬49Ñ%ø+T!žoÊWËýÆûô€  b%‡úeÛ6Àו&g-†i—wU}|÷Ù½éy"™>rø®=‹‰R˜åˆìö¯!ùÌŽÏô¬<`ûäg“X}á¶:ðÖ|hx‹_è5ÇCä“γù§ãtë5Çû¹²>;Ï•C\T²Â‡eì:• å§±HÜysÿ³7¸ó"*§{\™´—é!7ňwxÔMVy>ò04]Ÿù%÷4¡]”ï¿oa²ÒªuÃòFÝ;@ééØíÑ[±AOêOWÎ`ö”»¯¦óðõiÐønÆþ{c«¡Rsd§IsôØøj¶uf/SŸCÞÒž²T‹Däž“÷âþüÊöP6©ê°µb‘ÂñË_ö›Ù{|¥¥¤,ßüÃk:¢b0¦tòâTÿDEêêÚ“½Û©þ½¤ǨBñ‚ŸW6,íÀø,÷Ÿ|á#q´[ªúüoƒ•@Ù‰!=¤åòï™fr' Z&æFá‚hø<`çtY]¨J˜â?x×r¢ úçúÇu$N"-FëO¯ëàü˜z¦Þ%•ÉSbz•vÇ]öø—Cդ؈”å7[ô{Ч¸½"DÄ>êú}Øëd:³klO$“ºj»üó;´¢%œ7Ñ´ž7§ÛŽÓDz¥Éɽ!Ã!z§XÆ ªF—Ê‹úógô;*‡L±é™ÖÒaLÔÎ;ñ磪¸CDÿÕy/îZû@cQ\ӊܳP³gaSòÎ÷P4á¨óÍ'G¡lòÊžÞ]OC^¨ÉU¹wà•t÷Zße(TL“_»àý F§vþ1/è«"Aüç²Ë§/¯%Þw Ýwì#õñd·Ù:àù‰/ÝQ' M·V—†m#â–æϯÒB/ÔäÒrdà%È(+Ê΄ÒÙ©ÖÞ+ 7°Ý3ë׉TÉ„3Ò~Px®úÕ#CEÆ«tâ)N”„ló‡&H-…‚^çŒ:øA¦V¯33?hCÝ‹¤0s-~Þss•O`ÄF:‘ì4ÝüJ‰)§w¿ˆ•óÓ¦1ºUæñF#ò#ËŠ#Œ>@âæy!&ÑP~VN>ÃŽ¿ÄùåÙtx}×a ðJõ¯=vEŒóƒš'%uªÏ3>qD û—l´Üù¨]9—òÃä|À¯™äWg÷ÉT®Lmp~¼„€áñ=‹h?6>ŽKÇ# (÷4ŸCéÍ#ÔäÔì^ÓEÎó¶¶Vr‡é¹àð\Íq¶JP"ôNïK5;_®yz›³T"Ó Õ{é$)™%*P¨à·l“SÉÒ®‘QUP^2á}IZ<—ʯxËaÃcyõUùæ–Z&Þų^Ó&]"8NÆ¢»{{ä+RyCnUÅäë}b!ºS莿73{/Šú*?\f"”uÜ?sÂ1д{ŸEJõw"‰~Aù¢vA³7Û-›]Ö“Ñ)üÔvCp ž†Yͦ^Ìn)ßABy¥ùŸ—‹íŸAä…t˜|Õ¾Øj&‹Ø ÊHu Ý2¸Ã#¨šáú$g”Ñ)™`SvëmÏæ]Uô£N+@ü«ý5öñð œavÖ6F«×ÜßZüI(o2„/ïí‚ g–²×Ê'ˆê£ð]ÅL¥‡VŒz°’·ɥá{BQ—c;ˆ*Λò%èT²>±¤EO¨Oj'%šWŸ‡5²ãšªŠi°Üšb´z¿æÂè—¼Òˆ=!öˆµ£ü༨\™>28þ„öÌüçÏì£aþç¥oRV²þÕÔÈ@,@¤×Kî ~ØqÖµU}+>_ƒÚv‡~MûØò‡5ÿ à¡JÃÑ)lj"ú­,žo2ìÐ{óîX"·©ùGé3½”84~ݱ0c$R>*LŸÇ)Œ3ƒ,ìŸt+ý7é~”tߪ ×Ëž4ÙÒØ‚_0 Ê”—Hu¸µʰ>ÑßxÌÓy4 ³J£ŸCï#‹B*ùù žÿ3Þ á¼I” o~þ™®n ÷Á¶yv¥-ñ±HÈ7;_…ý²júw^ÅÏ#Ýç@=òSö±y¨áŸÍ?Ó¨`¿²Ÿª>;7Ž"²Ã_G ùeô3Q^å^[Ö$õdú¢ó->ÓL˜È4^Ð^¨ÚÊ…(âõ´?é·\Çã//¬ M ²N£—©¬3¤í!W8/±V~Dåšók,Ü0ß}È(ÈùSßDåƒrƒúsºŠ3<˜}ÈàùF!Rù´è‡c_ÔЛŰŠÉòMý€¿^¶§öŽóbü—c;µ?õËì¦ù§íä(xžúåƒÚe±Â8æ˜R¾iûJ‘ˆ/¿8És“›˜Ð^ æO=@Úgúk…PÿŒþÛ?ùeý¨¿ÑñóšÙÇèñèüÝšOÉ'Ý9!Ó ‘BìGíº(moeC&"ÞÝÿáËß‹H;ÔÏú•—Én»îþØqþ•ï'|ìOÐøÀäZ8M`PÓ™|xÍjîG”i¼¹ÔÌi‹vÜîO¾¹z†Ò>=-’ƒ öî÷1fšô:µ;"íÿéwDÇ«±»üu¯ï>fOB½²y–9 äG¨ŽÔ~™¿Ó8Äã 寎Æ%’ ÜÓ–ÙµßrÁ´ûV²cÚ¯|à¢ã8žÙ[éÀæ ßÿÔ;Ó3•µzƹ4¹¡½sĈØ/å—kG H¯ ÛåØúû¸=ã¯c¢n¸VÇ@iŶ¥*Gù~Üïªÿ[ÒF ô$gA•Î7sí/÷d鉩/ \9,yÖ×Èÿê½|쪚ä\öy…dë|Ûñå$¯rÍÌ9'ÔFC¦ä÷ñ‰m×u ðªã&›×4‰SQ××dCù}å>k?ØŽ]/¸dpdÐÛtÚŠ’œ‹ÖWÎdí)V-7ÖÈ›£Âø¥|Æãõߟ¸¾úIÎ%ê}{C¡RÖ·}‡BÉ»;ìÍÞ1ýÚ1~mjV‚ŸOÝÒ5@‘¦~ÙJŸHN/·Ý’¹ŸHá8UJÏÛœŸ±‘¨®¼»´cáX6¥WºçÙÍ-†DrÆ|WñÔ…¬ÊŸOùG=°ùU<üê³ñ},¤åÍì]ú~p_}]O(œçþêØÊþ¬?¶ƒ†yîÏÃû²vUySø«ª2¹|"‘=wîÜžù+™ü)Ÿ2kfÆ¿ïÅφ·wz}“ô#ýa‹Ôè´/ï^[Fê…Ê·<ÚP¢pÊ8(ñY¼Móàø|*ê»õ„òËúå·¹° „±q*s/H”ZK히 [Þ%êÐ &”iϧj¤EçÅú§UÇMøú­³kÊOµ­¿ßÆëGY»ì Ógoì=¨=2~xF?rf-Û é§¢®ÉÔ°yÕÖÞˆ“8 M#¯ÚÚ9Œar¯ÔQHž_[ÎÚ—*-²ywoŸÉW­G»#žÛß0ÿF}‰ðŸíP»pâ·>-ñcȯž ÷‰ÊÝCuÆLƒ²ó§Ž\%wc‚foÉ‚ÒU ‹Æ»î£ú€Ò°ÏýW™WB}_‹m#Nubú¢ñ‚Ò¥vEçGõE©Þ˜_ í–ù/¥SRwØ`Íë3Loõ— Îå›A^ü§k=ž%ãÅkm5`| ’ªçägôˇRõÅ‘»úÒ¸Äü‰êòSp«GøÅ©wDíçÉ8·Ý³Ãˆ¼±¼— ÷Y¼Å'í0œZÜ/JiQ¼dpôìÄpû-?±ÒòýÒŸÐ`{æjã=¨£qùœà³«™l\ÏçÞα›e3æ;¿›º‘ÍC|ÛºF‹²ÎP×Ç'jC““›ØÍ^²û¶²ùP;ÌC9RyråÎÚ=£÷ÆÖ?zpá)(Ú}¹JÎJ®}2û`÷‘}>íߌ›Ed¤Ì®þ>ß‹+®‰œ­¿¯RÕ5vʃÆê¿”OŽ}CÁzÏä Œ¸tÙuôKvÌ+…£Îÿ¼àHzÌóOܨʮ»á¼i;_ð8'¼ÖIòY( ZtqJî}Ès],3ÁíT}2‘ªRp‡Ÿ¶%I<†Üs«¶¹ð 2I:Ðf¤75}h&4éŽ:sò’1‘ ß1δ'”NY𢴩:«1qî;ßÉGƒTN2;=ß1’ˆ¥«—¾ê5 šr‡} u©N‡Ï¬‚*ñíþ/ÖL!2“ÌNÖvÊ€’°«km»o¡å ¯e# ùàÍjìrɃH¾;ÙsÈJo".lGäk–û[š÷¢t iÕcÛFç((6ëlvÛLn55Ë¿@’>›Ž#"o:n­ëbÉ›gßC6ÊçÁøK;1¸R5ï*•Qp],•×í>äæõæI¦œ^xm Œò:à-Ý ŸÎ›Gé‰+&:­¸õÃfÖÿy“Ÿwï›Ô$g¼dãŒÎ»«ý¬ã|,,ù~6Qêçðƒ ß_Ö:µs$?u-'ßk>Ô,쥎ççuî¾jέzìáy2KÚ¬ÊgòÃñØ<)½²Y§OÉÊHÑy)ùc_–Ûï‡\ÓëÆi¾{¡pëÏ…^w íY¤ËäOåVŽýËq|:O:/ÊOé §CÓóDÅáŽöC› ªzÓÝuâoˆü 5E­m¡¬òøØW†˜ü‘¢us†ÎÚa³wdýħç1úTÔži?йB; J8Ú"GODl¡å)õ:¢9ÉìÔËì•\{`r üá1‹bwzŽ›ú“µûÅ—ú‰jØUI¥Ã·™<9vÊì’Ë7Ú¿ˆ=SýÒvõ?¦¹öüÒñQ´cÜ”Á©…Ì.©ÝP üd¢°x§d¶ÈI‰ %o¯–׿î8Tž\ùP?ÿ‹¶öF2fÌŸJs<)Ûweö@í¥¼ðªºö72hÇ¸É 5ö-z30:óh­ðÞ½Ö³«”/>’ÒgÜPÆ'§+òžËué®·LŽÔÞéxt^¹Q+œ4VBÞÏEêoŽn`vX¡~°sË7¢?D@Ȕٻ\±ñÖИ,jG`ùi³Ó.½\F—ÚCß®Ÿ <Ó¿R”sruÚ8÷1PxH¥wîóoðKÿF¤NÝ:6Ž˜ìý-—qåCÚæó?ò8‹tâÇ›ñ µ™½ï~-ç²6ÖéCg¢.”³ªÿ¼Ðdû GÒê­^u¸+Ó{êþ‘ÖMÓ+™œ˜]qâÓyëŽ:µü4ó;zïÐôe¸ÛNÓ*"k¼uý>-UFŸÆ?Œ3Lþu{çMÊÔëÊÚ•;þ¦ÝÏ©<è}ƒŽKå÷isÓ½×bÌn~£}à1ókjw¥e•â=õ†éíü>ñOrÉ»Ï …jí³…¼ÕUlÜŠY/ † MfX6bíž+ÛÖeݾo·ï5‡ùyº*/rYû„…Ïç–CmÍ«U™\r¯TO©Z© uåCúÞð¿ÊÚx¿7sœ ¥T'u]÷™ñÁ»âÓc”Q‘LÓûý0 Ãg/Üê2€ Vž{<Àý7”ÈϲK_ÊÅÃý²ä³DáHÜ}i«Ø¼KÍýÎï“ö£óWã»"*øñV|eÅÓ~Ð ¤Ï®§xÛ…·o±'Þºý§õ^!B§`CbÝzw%ø½§ÿÁˆ>s¡©dßÒ½C“ˆÖ†Äã…o ,M/íˆDZË}yXç’9ý žœŒ36| å/öŽh3÷6mÇåÝQžº}ß´ãÏçÉø)Hè;¼/¿öª%y·øòÃþLžÜù”àù&”ÿ/¡}ß7 De¡åI¤-^/™éiÕï½Ôüð3Ì›žÚoß~üÐG£“G 깬ÿ¡áù÷©¨4½Ì¤M÷IÝG•S¶w†ä ‰•Ò‹QýA¹Ù­m¦§ˆØêCij\5îäDZyVНÊi·ˆù>ÍýìDí…ȸjܾ˜ËÚ£HÛ’}Ë‚ƒ¾S>I§'Wf45.$’g–\ŠäËUqCb­b÷n-rŸdWþ®ÍIf¿T?Üyã1µ#jõ«øãJ\—´î^ÿ’òÙæêjº‡m¡@«¿ãª =¦Çªî‡ou]¼„ÍCêNþ•øNF'1åØ ©Dõ*ù£ÎïD>[ä¡yÃrV}¸è­•ÃÇÛk¸¶äÏåwò¯ æë/õSéªqkÌ :ÒkÝÊyŽÏZüùäòÍè°y¼ËI鵑L˜³×Tªk9|«·ô}u œùqA¥ÁYµ¦6LNEª®_z-בKÅ;ízI3ÒΠ­~,_®¿¾Y´{O[¢úI.)ÀöcvŽq†“€ú(2)±— šËìíkOLÿ¨_¨Qµx×í…ˆ}¡‰Â$»²»oÍA?Ô~¯:KõÌôQ{â`maàNÈ»¼VÅK"MõòqO‚†Ý6Ê'—~KþpÝAÃkQ"µc"ű;Êõ+*Oj?Ôþª¶‡N(HÝÌìýê6í–]¾ÑšÅ9.?¿‘^½|ã >½ÌY/Fjjj±›sk³^dö¼ÁmyDkþÈæzc×±éú¤öÅÑ k_Úv€é¾5·úÅY™OnDýE…ñmß Ò¦@¦Æd~ÐS›•\  ŒJºµ'âÜ>þ|~J¯é'½ê” ÏCR‡£ÆéCSߪº¯n©F%}ºõ#*Ås»Îšl ¿¹}8«ð~¿¨Xw¯×+"tiÿÚ+_¼—ßœ¹†¶w§­i‰—ÜìFŒ=ùŽÞM‰ ¥×Ž))å¯GGtño£ÙItùA:—L¼¬ùb(mǹ=‰‘6ØŸW<·ËÓºP¨–´íÉE¨^¿èÎ2K~ÄëõyÕJ‘ößJñÞ=‡ íý£JqéÂïÀjöõdÇuŽOºóçÿ¬ÿO:O"Æ?®Ríñëâçgõödíº¾ºuÓáá"ôËtoüº½Bª¤®,ö9°Ê'ÈZ¶‡t‡A‹JÇ2ù䬋_:ù¢9ð&d^qËô ó¤úbô Cu’âN8å?Ç£|S½Ñc(͵Y˜d¾‚É# é—G: Êú6›ébIÊ“qEÚz-|‘È åÌèçIÊýŽž7—HÌÔ&CsiÆO•óNÿ}˜~(}j¥Ñ?;>SI&U—Â%Ö.gtK…Çl\´?"†Ç8oˆxäæ±sTüÕógŒ³k:7[NZ¯£x"ÓŽOä,’V-ª€ºŠß7«:°ù6„ê$ôá2oµŸ±2…vC4“ß…í«@Ú|Íé«ÕtGÄ>Û¡¿ Býžùî+û—CÅ=%ê輘¨ü«æ¬{v1ÚŠc×^º4ZŠÙ™Ì Áv¾¥ìz~ÎÝŸ½]u˜^kê;öòM£þÊäNýýž(î™ï&yS†ùq÷ûýª¶‹©|X?*·´ƒë.ºïÌæQ%'=üÛ0²^i´ÄšØwÌ^ÓÓ½îíìJÄíÏåv•#b÷,¶TFåÍäÒoS净A-þ`Zl¸¤N™t±Ú;èýhwââ»0ÎdúåúCIº¦VÕÏÝŒ.꓈Ku]>ÔÜrq^´=Õ?•ŽC¤‡…Þªš4‰ú”›yãûÝËÔž™]«×½ë7,†×âg7J©Øñ×—z¼Ç—w¬eÇ´_yÓ·“gž‡ K¯5–«2>Û õÊìÛ±ëj3µÁTŒ͗c¿Ì^¨Þ+6G¿¼`ÐÈè-Ku^õå%óɬ¤»Ÿº1:e'§¾=÷|£“Ï¡GÛQyäªLÈÖÕÊ`ô†Ðø÷VÝc·ø\ÖòÛÚqñȸý?nݱ3ª:n±Ð~¡ìEÅšœ² J‡òËúeîuêa×·júžoð•`çø@¯ÀSJµè]ÐùªWã¬våÆf7y0zT>U;?¶!/Ó!'Uñ]ʘóPi¼ —Ak—³½×gð†ÒÃ+6½‰=%³†&N´Ñ†²/º'÷èCÐfuóú¸Dìøö^í ì!o³ú®'{ö©?W?χJ³‘¹ÁŠrPÑm¢Æ‹x(=êymc‘CºE«Šyjû{CNß+e{ú}!2f#ó{¾¨dý~z¸ÿŽ~Ô éBYˆáÍ5ãÞ…Íê;§&žò}ÓßÞTD$ßôøaã5’‹K÷»ªKù í!ýðŠ-Ëä³y”ßk7u˜†.³Ï6î²÷&8³öy=-†4ÔøBà]%óŸÏ¡J8_"I¯ã<ÕÒ¼'Œ¿j… um&D±qéqãªâR¿·hPÿ€gÿJúmSºkðŽoï½3ú)åÓ"w”‡l§¡bñW¡øcF×*ü™~8ãQºlÜZ:¯Ã+6/²æ ”½Nåòl‰WÂq˜3öM•¿€Í7û‹n‡¡/ÛAÞø3º3숒cErÖÞ­P¦³èH’u#‡É™ê+M(Fç7^§ó¡rÍB»Áy5ƒú'U©þX»˜n=7í®§ýÙüKB{y/L:wÙ‡‹Ÿ™¾Wx_ª²¹ò¢×¡F£Û¤ÅIT/ÀÓ-îx$f'”\ý®9¬¬’ÜeŸH)cãgv›èëëÄèK í²œBûn?ãÁøC?gä3¿"ùLäæmAFªœµJ–¹KXÔ²Ÿ¸ í„ê‰ò[ô±MăMåìzÙìôOdñHãy!Ö¿H¯=Ÿ‚¤J–@úóœ¥ÛC×1ký/mSAþ^Ó5ëoCž¸ÝíUE_˜]gNP^½ñ—=”òí>oe_¢ÁÇÏl.ÓΈU:…¾’ÊäAûS¹£Ü˜Q=zlV_sjú ÈÎtG»åèx»Î.ÞÕe2ðü%×kí%Êèg%~‡Nô:m.ÆùQ;㞇¼¢ Ù'$»3ýP>©Þ0néocc¦›±~\¥óçe†6‰÷ÙMúlèºÕpÁÒ#Òx~Ï ZЄöHýû%¡¾ŸT¹Ý&ŒJÜ ‘·*„ã3=~E9Ò8Yy™ ¯YYÅ¿?d½¾½\´Û7ýMÖ8W(íýsÕfyðÜkºë¨weË}íÅ£Îò³Î-fþÅ»íØå ~Ëú·ÊùÕ®üD$~”µâ‡Ôiüȉ8/[鿃ÅM×hûÚûþ‰×%‹™üëT”Nk+·<çÏÚ_cÜ8Cûÿ‹~…õ;ҽߌÌ7¼1W ‡zùÈè”§G”„yÞÔáðѱ‚¨¶~©¸l¯bgËPøøÔ°^yÅpóönðUØ_°?>ë®5{Þ*b_ªQ_–ßN¾Ûòcéöªäþðâ`ø9vÙÞô¤à÷8xЄ•ù­r|–zíÖO¹~â«Þ{ˆ„_ÒãFˆÿ¤sáWHÀ*ÓI-ëËHï7Û %=æ/Ž©Øz¸Å䑼à›í¶Òº”ž`þ¹Ïb~Pà9ûgß Ï[ãÊy3]dð/‚üƒäú:bnÕêõ’¡} ×´ÔïP>VqòRňåS(åu|ÊnAÝkgke:ÈkãÕA‰Ú•/•è8"×N_ÚÏá8ÛŸ(¨S!#Tþè=z® «›%yçΎݽ¹~ äu;y³ ŽÑ;Ä;Üx´;Q 1¿yP=GP%3âø Ö/Þ¼dÒ‹ǘ¾V\¸Úãîo"%~,ÐØb"­¿Á•‘©œ¹Üw£ ”žùá¥{;]OŠ>skÁR/Èÿú²þè6"¨/!°ÛVå>¢f–]ü!")®¸ëP›5ð{Ä} hÉçjL#j‡éo$’mžÌÐýÌöq Õk–¼þ B/r¯ýj)¬Ô<ÿ3]õ: :‹cº¾Ë,Ô›i¶/N]Öž£Wf3õ{ËÔå8ÚK³j˜½–R»=$Üo˜ Ô럪j[—ô‘{^dœêáú0t§>é¦ÐÕ?»×xð®'KS2ú@‘ùÐ5嫌Ä8?¨r;4u_ˆÊù‘ôüÅ7.UsÇì¡sR´aq&«ü„ƒÖ4#"ÿê‡ÊðþïZøHËPqò–ÈLÐ/»¼H_t\”£SÑcFýóE"çñ˜Ÿ*·Á»Øc”ë²^}åé;§rñªÙvcí9ÉÛi"ãpüb á/€º@¾×y‹1&™bñ"dÛ\®«ßõ¼1uGoðãS¿){^[^àÒctâ²ãò•Å̉DªùE{Øù•÷>(\{EÆió¬Ü¾H¤_¢Øûª­ƒgêƒYÏìŸ?|?z·Ñœ"¹ÐÌ’Õí¨”rpÝ^ q½ÏŒÙ,ÕRŸÅØ^ÃèÚa=ˆÂÓ΄_­áÖ+`íRÍ·»oò9 ))ZùßU—@ñxï4«O}Ávæ’1æSzÝ3©$Ø÷/à 2£lÎ zsÒêç¼Þ[UÖwº_է׿ž{ž Àø!:—a¼¤i(ã?Â/ùãçn? Çä£yi‰$}Ô^0f ÛÇH$Þ~5ô-‡’Í6'¢ÞéÓúŒï¡¼X{ñ(Cý‡,ÿfãørú¥ìþ4fœš¤ÏÐyö´zdôÜØ õšç.lOf†,é¨:½±5¹1zßqœè?çO!kð‹¨ ÇLÙùìΠʵ;á'Ú•+/ÀêÞ•?EègîÔýÜëm $íMÍ¿rr8\ßwkÅ£îPùÒÇÊ£Û,põŽÛtêó=ˆ³84ú¤xÄ$ð£ç¸ñt>ŒG"rr“tôqL„€_¹·OÙµ<åÈY¤ðéŸ3Jo.‡_CÛíØkáÉMóædCåî)–×u…¯äºº\§L¾a©ß›n–º0½‰ ç ¥% k,)B?ÇçfzÀ°%"çîNIbÍåž}›ãÚAʶEÞÙqÎFÇCa@¥ÑÝ«³(o&ÿ˜õ¯öЬ&’ù)àç)z‹T´/—1:µÒ5©‹®†Šðñ}t´¾Îr ¢l"qä¼_ãƒÊ5=Õ|׸—G ö¥OìV©¬_Øpñk³Gù@Åôõ?N°u+¤eÅT¹ŸÔ“iæ«4Õ\òg’X¡?G¹ Ž\lEí/5¾Ú *ÇÑòÛÜ/eõ`R:]è0Q³³GŽQ¿Ô iŽ8ã' îùÁBÝ2Ír¾ÍƒÆ®à£·pôºê.´=kGéSùFÍŒìþýEOÁþò…z6u‚}úÙÛœNCät£·_úAˆjÅï–W!ÜFÿ!ur­t;ö>hþX¾ôbÿ}à¦[ô7H1‹•º{ éž~pÄ>É›§L¬$IoÁ>ôèLJ_1>>œ,ó™RÑÛ*:[íjÙQ{íˆK¦é|WÕcìëyì|ò…»'\u¾²ãÜ9OuÊbøyçñÏQ†Íu ì=ÃæÂw­¼Òù~·!¢ÛŠQ+<ÖB‚ð˜ñ+)³aιÝóÀ=ÕëÖý—˽ß2LÖlÈ£ràÚ .Ã×[ZoÀÇôÙ‚G‹ûûÏ­[cF}8ñ!ïÂ>{ËByðN??ïa-8ÆF:wì#Ò.OH¾XÍ6˜PÑò}„S{í•æ~ ꄪ—¿ƒ°7‹»ÂÙ¾‚ú ®›åkÁ¯Kn7µ¼–ú¡––Ɖ#¶±c‡I·ÞÜú¹Cd<÷­M&êY”QDz8ÿy÷¤µ»ÁH8Þ[?ÊÉBP·ãÞ†¶æ¬½[çÏѽÎZÃS«úÌI›uR¾™à_ùwrC»bôÓ¤RüübÃ!ÞKx*“Ùõiðb¦ÇPS+‹6yÙxQßG˜XÞoÉ—ê8öáµ³oä¹î%D©2eXïÇ-÷W·Î{z*Íš]µ×¼Zöª¼†U/V…XÔOÔfáýº ùü6KÚ5,ó,”†Gì©;´†húzÑ}€ ›µä“óû¢Ò"‹åÌ~úÍê™çÍ®X-õW–/¢ðÑVé ‘$ÌqÌ®9võ*gÊŸõÈΗt[‘°u«8;޼¨cÓס©õ¨ÈÍ6âftélg Ñ’¯r•öçÚðò»™VÌŽÑ^·>ã}ÖóQL/iÚ³{í>>’ó³êf…zY‹MrØûy"“߯b$œþ ”÷‚íçf×§ZZê˜/¼Fô®­ÙÙ­Œ(ÊQlÜ_ †¸'&-~!Ô;×~DäRk}Ù[mrK|©±•ý”ýK4B½·JíJæùÜÖɼùWŸ{pë4˜î\]8š*'ZX,X )ótëS¯sû±yÊyžüì}lW/"ò¼éÎÆÄ–}„ÕÂ~ì¸RèWÌïCÝlšõ²Ddø¦.óϧƒ¥Âg,¿à·’ýô¡x›û’ЉÅP¼RÑØøfK½ŽO ~–mô"Ò¶ïÒ-GƒŸFAÄ\µ+öa¬RÈô.P§Ó/íE§ÞDµ½Ê~FOõÌ$ž=„袶c3÷‚Ïà)›s»lìÿ?¿y„ …T‘ÅLˆÁvQ·‚f ᚟Ÿ…[AÔÛ·SZ¾»* `4 Y\P7¡¿üâÍ<¾$—y?Œ[{XP¯@p^D8¯”GO†Ä·íÎ褽PØv+8j&©–•eX±ÒDÚ:nÑ‘¶?3ý­7åÑËüóXPbÚâ¦l¨X3wž•îi"y+È­ÛÝ'¬}ŒËù3ð¨¼(Ÿ¾(ÉßuÑ]ˆw´møÒG¬=壺ËãáËBz@Ê„£%#!ê•T›>‡wQþEæ¨8¨ “;7•W õ}­Gík &tñŒGÖïëJ“äuÛe dµIÀÍÊ}GÔÉîö”;֚ݱq(Æúö4ë:oÄnßþ¦?d–«áÛ²x¹­CC úû#ÝÉó·6œ¸Kõïu0íîÇaDþÔ@ûÜÒxø®RYÊE‘qC†t;i1ÕÂSI¼þ¾/»vàãæsð+ûd@‡#/IÛƒ³ÏÝk»„ɽ@H—õG{¡‹íˆlÆ[Á)A ãÆi÷!Xz\%âïð{ÚÊñíô¿¹™ÆªÏ“‰ÆÃ¡Ÿ;æo€ìž2w¦ì—„ÈÛ/Ç«]œ î¥1{UëàçìøÊWyDv@‡ê®×Qï'Žºà$B·lÙµ‰'çÐw‹*9Ýb¿7ü ï?—Ê‹HŽŠÓŒ|·JPCjL "t¨\«Þ½­rþøJ;g—~{Häï«q^¯Ãü0ª(oÌóót¾¤Ãïžm!íÛ[_²³þåu‹#¾| b?v>˜ Àèrý1C%{’é=¿Øy¯Ï×gçú0;¦çß :¹Ë~‹ ÎÍtªó^¸ŸŸ-úÜšÆÚ®À7ȸÄ-Á~ü0IQPß`vÓu°Ò0‹Ó‹›$¨û°=ûB6í/ØÿêÖ‘îà«ÿYy@îÁþz¾%´<—úž2Z:©Í"vn±öÐΕ,ß"íp?~¶ùÃ#OMTà÷€{“KÖ²öaëÇÇï g3~?:b»Xé×ý¤ïÈ;ws…ü2ºò=N¤é2A= ]×qÅðsÅíY§×C ÖyˆèÃK¸Ü’' =¢-ñq–øY5"o?dù†nè¼]턼O†Lã¯co–Ã/ÍïR~ƒ1>~Ì *ûèÖRGå v]žÎÑ÷ãŽ?–¾Y}Âs)Ä™?œV|2b‚öŸ«‚è›Y=†¾)Ô9ÈiÒ; š)&±§XÿŒN¡'mwχ/¶–î¯õ 6ô üJõÅÚ½Ã:TOió<Ó¸úSPß!oÍé”o2X⩦½Ö¿ä~bY¶Áélƒ·ükWíUS£j²ÝX»‹W“‚eß3{ 4è8wÎðµÙs½dÑvø4ʰW±JðêâxÕ°e߃€ÏÌ3kæ–Ø±ã¬5?W¿ %ÆœUúñ‚Ä”'º¥gúü6ñPh”þLø­Ýf™vìW6nÆôq~ZwuH´µœÉËÜÝ?þ¦v ×”˾ÍÆÉÝ?ã÷ºsÌ>BûŽx;xTøm¿¡y3UÄn³.²*/Z¥Luw±BæHˆ1+lÿµx=Ä-Ï4|)qîÝ®cþS6y…õï¯ì¹5¾ÉÎ9™é1ï·Ø'2ÙTîÌè±Ã§¸€ðÔ%"úõ•1GKí éxÙó³ûœÛ"üŬmãxs‹£CåQ$œ¯HûŠ@çmçô-!:`µÃ:f¿Ô>ÓGtSPæDí ÎÊ“èTséAiÑ­•7ª”‰ŒãýŠÔ|ö6Q·½ýíàñ ø-|*¨·‘’ÚUŽúu ß ÉéEWZò”Ì@g±>;ˆq~.Ô7÷ëN€@Á6xŸ%¨Þ yŽÀ}äÞR/÷Ÿ"’‡CÚˆèu_&¹²}ᾂ*¦/è~{Ö.]X€û7—8 oTÖ͉,yq¸Ï½rrÎÐ=FBÜú/]ªÖCQøŠÊ€‡+€wenªÁ†Ð$øW«¥.xqÀëâÇéþwvžÖ (áÌ3Þ«aï~KÝÉȧ>û¾9fûÓÓ X„í4¹o½žt|Ó AX߀ÇÑÛ G¬Ã Ø^_ñ…ÑwshÀ¬·1¥ù9Q]soO“MË{½¸ÇÍý !Ê“Õ)à7íu*t¨\ÇŸÕ zÅ:eϺx½ÝÒ r·nΙú2ÒNóîô-¹Aä±^… öÃ:Då_x#ÁÞõñ "mU‘ÑeÖVFŸîÓ/ä³|ûÉ4¢Šõð‹KˆÀ:%áBý3þèþÿX:/Ô{BaßËÙ’v¬Ö¥`í’ÿ¬@ºc»_Âz¬¾íGǧu 2Û]ñë:ñ«‹p[8.­ÓÁøÃº¤ç+á¸h7¤Ç!¡ßøaýn=„$µ–|“dõH8õ˜ýÑöQ6fŠwòà—°þŠX+?æo´ÞBòÿ#{» R“!Çy(¬¿ÂèÑ: ~¸þŸX’¤ÓÁ–ýÑÛæ,.ï»’ÑËóS|Ùw›´_ÒWâÈyVÿÒÚ$œ Ð;Æø£˜¸mD|SZË÷*ßìÎuι%š÷Ð}Ýé‘‘1u3Ü E8éšäœVUßR§œÒõ².Œ¾šžgòüõÀγ«¡TÜÿQtü°§ N„é²¥ü¸Âv¬å|1yù çÅÚEt›×gï A=†fºT¾³w_!¨SÐ,/jÇÔŽ>Më=x¼}£;b[©åZ{øµA˜R}d¬ë’š/¨×ЬÇrå°WÓ1y"]»ŽŸWý~Î.vl/± ]÷Bf?úø\Ì{7ìæ¯Î¿w;Â;¿2tü<Ü<öHŠç(XPÿ•]˜Sy±þ”¿”?LJÇB¿á‡ÆŸŽjÍ`ô¸~ñÙqô‘ð¶-oð[kä µc|ÍéÏ?…{6t¥ý˜¼?wÝych£›´Y^°±šÑaq‰éø ¼MÂÍ93 &߯¸¦úø.88æè A·±¥ál~qÃï “¸Ôr¢öŸqÆÐçmùJH¸\aÿmÃyHuËëñp·çךœØuª×—íÏ-g¬†ˆÍ»²&ä°¼ƒÅ‘úÉ=Û†O‘õŸHŽß:~ ¿V›ÚR¿“úïm‰®‹Å~/ ƒÜý_Òƒ„ºq]ë "ìJrp…*$^ð²ñïð>(-Oô ì§VÌ R쟾wüvG üõ‘ëâ퓺»§wΩ,Vbçb¿ÀO&ÆokÁ×»î€ýç3ùyÂUø>™ÛŽ'v[Vi°²;ø–]wþÍÆ/ »z$ù…=ÑÕ\à=v¤*ã·r’Y¢~ñJ:¿û)Ú1䌤•;o¿¸êÔr¯áD¹&jÊåÈ6|lÆeÅ©t~ð]é«§ñ­OœËOG¿3¹K.Éûf¼ä¤`ÿø¡ÔƒûåïMà“‘;ÿ]OéþTÁ>ôò¤Ôk.{þÞqüuÎñ±^Ý‚"…Ýy }Zê§¤Ž¹òà\,›/ÅÜ'}SË:gu p¾¬m÷+쪚EâT¦Ÿ×“WºÈ…ÀŸ!¯T¬Ö öí·=Ö\£Yÿ±×v™è(¨[2òÖ)ª?ˆÎL{ ¯«ÍÕ3/2¢H~õ¾hÊ;Ÿ!”3凧ó÷è¶ìbÒugz®õÃ&üˆœ/ržÊû³óÞB=“.¶JÕâZ¾§Èþ³Ñ192àðf‚º VÄ‚=Ç'ª¦×Mëò[ÞÓ ß‚zR•©ðKõfØ¡úJ¢wåÂ¥AXä£ëªñ~]±;Qܤiðþ ð4êýÎuß‚±Ñ^dƒµ•Ñé¯Öm N—ßÊ8•Èê®W¸±°eÝ\=T%cad[A=û¥½Nõ3K®žT^^_¶Î9ìDT]û*ubxNì´äËÊá.i=«øóCÁ¾÷5æ’)p«aªêªé±‚ú ‰†w¡´cf‡²‚`Á~ý}c:Š3>)ÿ(Aý€Ã¯É,Ê?ü6Œ4¾xz!³Û¡Ÿä 3gÍì·ožŸ¤PNà}îÑõ€³Œÿ°®º†²|PÄŸš\çVoŒûB:-~6ÁŽK]b¹úáö'Já³§(ò„lç£|T§ öÛ+]O7`ó¥ü£üZôZ)>)8e› NKü&#ÑïËp>¾+’ŠÞ|b‡Î—òËìƒÊƒÊÑkCâ^ÝzY.]Ò!ndMåç«ê†7V_¬dòÿ9>?´cT6dOß׫Já*Ä%ÄZ]êµB3NY»Îeïoˆ¶õàÛG€ÎòœÐW']ÿã3CêR»‡÷öS¾Øyä›Èäó ½ñ{žÓ¶d߃*-û}è¼ÑÞ©ŠÈ åÌä.´sv=±fË-Oú‰ô‹úÒíEZÅAA…I$Ð%¦,zœ-ñçgÎ_•›‘T·­3lù®í—Gz›eVn9Jõ/¨‹!3›µ‹Õ#Û6¾}#¨Ç¼t•¬ îÃu_ÒúÔžÙî™O´·>š2å4ÓGƹµå*){!4ÐtûÁ—)à×{ý„öÕ“!ùüledëö)œk§P~_wá²ío¬ØùŸB?!&ÙËš›œÔù£‘K?Žõ "¨k±{¯É:pÏÔëjt2ü Õñ|¦k¥}ö¤Ï̀ȪKÞ£¤BÜÍO•:Nù‚ú G{Ü€w»¥Þ ûúNP×ã§t¿‚ýàdãø4ªz—`ÿ¶Òé9âùah}¤¡&$åÜýlè~¥k* <¾È«L^Ø¿%$u8j!óë‘`Ÿvó8a î¾ü¾à« €ÖÓÝUðm]üØí– #®&ÌÖWEH°IÒ%3Áþi{—€¨רgµi¬`?x3½rAW¾XŸxú/ûKuúzT‡ŽKzKfùµ4ìo‡òUòÈíñÖÔÝ‚ýê%óUn ê$íœG Ô¨¤!Åû:„LÚ’Þ9wTÌÖ˜}o,Ñ–ò© âçÃ};Ö‘'l<ä‡ñ[ãý~Õh/6~{ç6g¥MXû˜S·ÇiÔÃï“SïzO&¨ð¯óì'oæ/¢ÛÏãõuDì·hÇÇÚ…EwØ<·hK\˜6–×½xî`µ±“೯ҳ·zì½7$ÏpÊâ© žÃÃh™#"ô#ûìÙÇë± âPOú±K¯+°~fÞXx°ö|Ú¹xú’1‚vV!´ Fõ%BŸÊ+fsôõ¶´ >ÕÑßGáf‹] w!tæaˆØ8¦Ð ¾å=¦ýÒ•CÞŒùûŠÔn!mÃíaMm”D®ý3>Ð6b…óÔ¯h¶ãíý=ç(j39† å'Ò¿ííœÉAV¨Wª/A=]‘þH—H—^{:9z dL|®x󃬲…=bóà¹úLç3)óÁc·´X'ñ–÷{QB;ÿ¾¾jïzÛ1~ÓÑŸ#„r”µëgœóèÿ¤KͱnÂjEøäè‹ö£öÔÚ¼¨>‰Ê]ݧ`ø…ãF+‰›Nœê"µKŽ_P;±ß|fråËâˆïŸr¢q„ñµìþgå–ï©].õËnH훌³Zúúìg7“8úýŠú¥ü„Ÿ›˜g¼ò"=Oí…µG9@òÀòÁªO±~Ô¾HÊ}«_íÄì]÷TuߘÝR߈ã'*m7¸¡+|½±gÅV[VOÒeÇek,ß٨ܘÒk[n«À»_b—¶ ´¢~Èîg Ï w/ducØ|¨¿ }°ëô¾@ÛQ{¥ñ!q³úÓâr¤n›w{5Âm\lÂâHÇŠM±2¶ßþ™OÇã¶7cõ:†_ï†Ï2™`—–a3NÜ—vJ§­³÷u—ûþé$ùY«"nBú‚àKF;Zþž¯‘ÕÓiËNCD¿Mýã&wÔoH9ú²Z°{+iËä I°úwZæøp³ÿ†“—ØóeîÒü%7¶5\@äín[»G ê?DþÈkùÎï§B]òépgˆÒm/Õ4i"DQ(¼ÿ£Ö%.žu‰'BîÏþ¢;ðý°J‘ë¹#ó~šÑ…hôqþø\³|¹àúbêÃ&—X3ý¶Æ-ß!°¾»Þ¶wùevžÖgˆ15²žpRP¯@ÛD>bü]Ö©åïÓWˆÅ‹;è ¹w.<öì™ ®ÀÑK}·Ö ~­$Ø?/˜/Ô,^T—×¢ÿØæmü‰ŽÕ9q•g£ mæò‹Îr‚:9ƒ•ÒéÄ[i‚z*²ÝÏ8IE˦æ”1ú¡%ϧä}åß_ t&;ˆÖw¦r*é·±¢Q¤t\v÷?yÜxªïx%H×ÿÒéÑú~ÛQc›µ Õ/$Ÿ 9vhØs(G=PûA;`ô3‘~ñÇŒŽmoð¼ŽeJ”>kGé†}½t-ÿ!íGz†^³k ¹©™J#v¿¥íõºžihùûg=;ÿ:{o„&¤â88/"?ñ“jMïoàjPo·•ÜÇQ-ÊÞ›9ßrÇ™1ÿ‰yeÖÁLE™ÉÍ?wpBúiHñ¼¾a“};OÛÓùÄäÉM­4²„¨Šäë×ý$í…|1}tÝzZb™$ht›Uñ,’ÝS+žau¢õ?;z çe‚º>zq_úWÕú¬ær K!^PFœNõ q5㎭s%ŠëÄCÖÜ÷§~B$ºnvèx8 ï÷ãýFpk7M>Ú· xÍñ4wv:Éø¡|ßó)lí*Ò÷úÁ̧ºïˆºÎ¢‡ë÷ ê*ˆ%vº‘ÙǶuêo×3CëçWÜ…è©Õû÷ž\¿‹; 7²1Ç.a]R3™Þ(ß9hŸ?öš~ÝPþ—gr£öju¶ìÅë|H6ñWvë÷FPç¢Y¾1Žá‘mH__ësG3Ò¡æ’ÉtgGf§MÒy:Á&=™ýÛ~ÌtË`•ˆ=£ êœì²1žÊƧý¢.¸ŽÊŠX)¨c!hÇõ b,ôc2hoȱž!¤ïÝõsg êm¼«{ ÁhÿTžé8!û» YÌä“ð6ríÚI9LN4žÔrâ%Æ*'ÆêYPW£9¢³~ᨧ¤½¦+¤·<×£ü~×~~¯2yÄ|š–´ÿ"Óÿœ§Äáëk^á1½Nõywýéa±lß,³;ŽßÐ8ŵ1¬ßÁÕk—²jøÁA[{ˆœo˜¦ß£Ÿ)$kY˜š]l©3¾±l¢BDZ­Ñûÿ–kY˜ÞvPPw`&tn¹žÎ?ÿíòê×÷ÿýýó= èþ¢I¤Ak?bXµVý§ZëÿmUùºqmDÖ'ìzÁ¬m†¹‰Èyߟ“>Înu?½Hûœî}%*~h´z½àO;¹ž¤³}Ù˜Y"Ï™uW6÷{mðïúü#¾w¨­ Mo€õäИº–ï¼ÑïuOfͯ÷bØŠ=ÿuœ*¯¯qMA-û .þY7åÿ×àW#¶ÊlŠÚß[þCz¾Vƞκoùæ'Ø· ÏZtßváÊ{o§a¯xîÃ?ŒÞÜRoοzúAsµ‘~Îa’¶{†¤ýãñƒÄÞÓ½*²?®ÕöÙ7{Ô*ʈÔÑÈTóíE>óùÿK?3*»“±l„¯yûa~pKžrb Ãéëéïõ#nt¼æûÓu8[?ýúfË¿·Äößûñ®ËØJˆœÿoŽÿ?ýQÿaØ ­öÏýoÊ­v»üFÅÞ¬þŠ nÇö«{DþnBküþw¯ÿÿëÊR®jŽóóYög{ðk“Ú½×Â1ì8×VöañA‘º{­ýHç …×›_Oÿ[;ÈMlè˜øOéþw‚:ùêY¸Cyëõ,\ç*žÍŒhõï.ÿuœ(™ 惕:‰œ·Yä§Ûæe«q~~Ëvܸµë¤}`Ãõk’¹ÐÈŸGÝØEÜë¶êÂݧ"y>×.þö#’5¹7K/ÿ§íÿŸúéß›«LD¾‹líîV¿Ãgœnù®Ë^£pxû¸–ïrÛØ$xÏêõï{ÿzþñíüt¬…¬5ZcïKCþИ#‹wµÚþWð€íÚS>¶výÿÖOP¿ÀÒùEKžxþñ€áÿ}{÷:˜fÓÇÓ^P×à2?*.íw70‹×í{Ë÷ïÈÓ>ŒyÔª~X{×D¼÷×vΞiŽZ¿¼l,åO>L_¾k>4tŸÑËO«ôþµ_ξîÔ_x¶h.8åµ›pæµ~¬¿ËŸrbçÿC»„XƒÙ¦Îî‡õ^NäW,„Z‡‰ÖÃLΰë~B¿‚à6oÖ¯9Á+Ž~ÿS~¹~³Òää§Z;fçQ¿‚zûûýÝDúûŸùU«t=BM.ýÖeÏ)ûÝÿõ˜hý0¦VJä{Ö>ºS¨IžñŽÖŽÿc~"F|Ÿ~Ã,í¿Ûÿû{wξ|K·ë1/Ý[öëf`ý‚RÇ'}Gµ¬k£8u'2(^Ó¹x«wÆ®Ózš @­[savÝñOz"ýi‘ûÿµ\Eê¤Hý×Ç"ý‹jšÒÿu«ÿ¢?ï/×þ™]PûúÇãžþ³;ߊ’¿Ñû‡|Šô³”ÕyÛR ýpãÑn¾×Áº¹lIËwÐQÿµ¾‰Ö#É8%(x2õKûÓïÙù˜ÿZ^ðCXgˆŸ0Ùm×Ýÿóƒ´ÿlžŒíÿ¿äï´žQ«×?þé7û‘:î“O—úÝ?O¤?7¾ðþýy‘~·>…ß»‘iEIμ ®­Öoµ¿›­¿‹Ñ_Ÿ«ÿßþ ö‰_ïüÚÞHûÏZ1à8œŠº9aËppY1VR6·¥þ«ïÖ—›­Ÿ›y?¸ïáß"uxEÚ…D9†-Û›ÿ79ö›û&wïúßžOŠP?3383:£÷_Û£>i?îuÁ¾u—;Ëÿ]ßæþ(?Ö¾'¿ý®¸"î<[›·H»{¶þ_Ä=ä¶é×Èç7tW%í_WÜ¿ò¤q¶ ~Âõ—Zþ>¥]›„#òÛDžï êt˜_xYÈÇßì›ÉëèÜq‰2ŸŽzÊ—Î<î¥W:Ò«^¶¼—NŒÿtcÚê–爟ÿÔ+¼ùS/ÿTOåÃ=ßïû‚Õ-uœì§Åž{)ú}Óÿ­|驱åõ„¿¶kÅ®Øõ_½—]%ò÷ÌõÏöDûÊ…‰5j¾"íþB‡µ‹»*±Ö¶‹ ^Ç)Y™–ç¡Øfè\7+0é—¸mIÞÚÙm[¥Ë²÷lÉëw´‰{^°ÿÔ©K“ûÐ%ò»Yü{j-ó†€k»Õm©‡záõч%mV±ü‚ÿ‰úÆù·:î£c3^‰um}¿åãÝû\×G,kíúJ—«ß¿ÒáÌÿû'¨÷ð¯öEt£çdì}Ôϵ_릳›ÔÝþñóÖÏ£Û²°[¾"¯¦Õöÿ¡œDú‡OÞ`÷ª‹Dkã’ JªSÃõ%þ­¹›TÖ””Õ€àa‰ûàíËÏãg¦‰¼O…À>ÛÂwFÿe•Þ⇭^ýÚÅØþûŸ7_™›ñ÷–­ô'Ô Ö!ùk{Çâþ}܃õƒ]6˶ü½¾ÿ0>ŠœçÆ1é3û&íµliÇët¯xüñóÜóìz!ß?Øêu:/nœ ÿg÷ÆŸâ†Äã…-ûˆÉϼª{Þ .®wrã¸ýû´ÿµ]«|rú öÁ׌«ºÎŽ+f½Stð¯ï#Eè& éPük{7Þ¿î¶.o{ùyGþËóÑH—û#ýŸ\™Óf„ îí/O[ý{ŠÿÝqunÏi+ò÷EÚ¡œûüzâʵãê»ØÀû}]Ï÷PFÝvá¶ÿÇ|þNÓûuí÷Sj_»s£aÅv¸1iŸÿ‹¸Öõ@ùý‡öõW>^¹jÜxüSôïÀµ&®}þ…îuAƒ¤\ÍÈÿ)ßÿÝ_«þŠz&øölÞ²?˜;_j7±|;‹=Þòw&О‰üë-ºqë;ÐcÈêå¬ÐgL«yFkrÔOIJ;ÜZ?A=—g‚z…› Ù÷¸t¾‚úÓ ZþŽS=Ü“¶¾ìíNPvùµÈwr\¹qõÈú;6L¼ý§ ¼ÍÔ|ui/vžÚ3öo•¿VôÖÚÒý§íY¿Ü?åDDü¿¶[®3y”àü8qœt+Ù·ì>y¿þ™?ö}_ý r¿çzj³’[ö}†Oȼâ–é6xý•R³óå ŒJ¶Åµü¸ŽZ–8UêXNÉ9ÊÎåÐKêpônJôÈVù øü:ÐB{5$0”;ðq«íªu¶¾êŸ5[ä<òû_ÍýöÈw«üæó¯›L¾Û]îy:Á>õüe{E¾c¯=üOóïåNùìßïz­þÿXÜìo¿Òð8Oä,"]Sk玖¿¯Yª“`ïÛ\Ïç_㻎ñD$^ø[z­™°\¤.!—o‘óß…qÿÔ?ÇQ}f€c^Ëw'ÔËÿ=­ŽOý%æŸÙ+‘÷~¿¯Gÿ–ï qÜÖæÃÕ“Èø¨/p 3÷§’"×_uNNv¿¹ â×Å/îú­åïŽJðûMëÈêïƒk| ›Í-÷È/]³óÊË‹¸qžt=|u«^‰J«üðøã;,Ëmí:k—ö_Ç_ðY–ê¨/Ñ—säÄÎsã0ÎóoñCÄo©?S; vòÞ'þ§?x‰ûªý´_hoýÞìk·‰Ÿì+ZêämVßyé¦3\XæréMý zÜf.¿œt³å{ÎïË\ŽìY)B/õcF×*zÜóÿ˜ßD±ÕvÎÈ×/±ø™ƒö¯kõz+üöŸwÙ8x`?¹à:Ü_ærèoí߯kõz˜Þ_çôïçEûC¡á-‰=g²ó_ÿý¸ð;ÄðfÎÇ–ºuTnœù²yÞé6ñKÃ^«|qäÍ¥ÏΗqÆm¥Ýß~\~˜½ßkj4Ï¡åùn^+òªè6ÑçwÈfvœ¡[ÜIv {îÈä‘|*ÄP#¢¥Ý[¡ž™}pôÊθÙbï=žð=5£Êó·ès½nctψôGùP¾!kàÓ…/xÜþ¬=Õ;‡O‘vDZ>ChÉs•1i¯!ih‚vNbËú¨ê@Äù.¦ ™¾éü9ódãá1QÐrO-Y zŽåó½a¸h½0œ+ì|ÜÝö]ýÃÏ?í÷o?Aˆç7‚z·Ú(ˆ|ÿ""oO޽D^±Yoj¼ .Η¶© qUq©¯åï“ý¶gòiÍ¾ŠøýFzNÔzÿ\¥ªCÔ«®t8'-¨oÒk´åw‘ö‹éÈÕO ß~Ÿjè‹´ L¾nv;‘ü’ÙõŒÏ"í8ç¹q x™¡MSR­EäÈ‘“‡Opÿ÷qÿŸþþA|o®ßµ¼g>º3V1Á_ –«…:·W‰A^ó¡þ`ꢫ!W‰Ún{Çm‘®¤Çž¥]ºLMºÝ»œ-iëFÄß©õuTÊ®ßn‘1ºšå6Ĉt™¾$ë®õN¢ ¤ U;ÔÎ}󃺫£–8M$½?åH^¨K$“›ÿ®!3²ÔeÛÚDLªù﫵®^äÊÕïа?¢qCÅ¢l>ôP°a 0þ¸Oñ'»ŒÓòMHŸj›†«‡êñUŸ'%‡©¹Í÷˜ˆm,S>Vqšô-Z7üÍÑÑPç¿¶†×ù,›§‚%¸¾,ï ÚùZ“¼$’ ïøkKS>IûãæzâRPÿ!úô|½j¢àôöâ›ÊP³BE3ôÀh̲K˜Wé8P3H+euy¨×²ˆ¿çGÔÝÏG>«Î ïg¾5;R Õ÷ î|âM!Coþ<ë\¨SŽmx32j §¯Ûeü ªZí—ÜÁè5&‹wifC:ñ7íu“-Í{m "b÷‚Û‘¾™Da…“ë€ù÷ Áô‚UŸ‹˜¼¡fÔÀQÓvõ'êÛ_”Û.Pý¡ùï–Ýqñó7ÎYGù„Ú±ní‡io'b3_>¹<Œ¨œ0εdÔ ³x·÷"‘|ryÚ³cˆôŠE_é#bC÷ìh=êî]éßíªÔΙ¼Ä¬×OhÚ žt¬½>Q;aë;ûR“c[§æ?˜E4'¬Û6¸§$Q½’qüQê¶j»ê35¨9½çUC;-­}ÄÔ\üX ±‘j†‰Ð0rùU•°•¤§¿ì…µãôˆø€©Êñ ˆLåÌå¾]HÇi–ºöXHÄêºæ½Š$²ÔO[¡ÇŸÏ±ãj©qP÷íœö“ë[äj>¤üö2¨ñ´¸<ê]¿Ø{M["/¯45íÛjRîÒ-š•÷9ýv:‹Èôu¿¯NÔ¼?ïMµbéG•k©^‰Ì5™ä]>QºeE,#‰˜°Þ‘Þµ@/Ò³'ic’Ó=«ß¨Ù™l?u QU¤|«;[Îô¢_«¿E;ˆÈ©¹u'ÊM+¦$aª Þƒ­â Qoôók^ϘßVßîîýq‘:,™®ÆŸ÷Æào•3‰X§úKbŸ3ºgÇ‹ªpõ·ý‡,æëëFˆµ³µ2‘øønGos9"V>ËCͪNMx2D|Ñx4{¹yÖ*¢1qé÷vö&D¦®»›Ìv]"3A¿ìò"}"õxÑ" ]"š5´Úê:‡ê펗ÖX½fÉë-~¼Cmò+íñÔ_ˆTWõ>:CɰƒÂ:å FÊ{Œg²x!3YÿäœÙt|æÏ2î}Ó¾'D‰—ïǼ9õ­sùx*äÖ_QE$ ÷ ž¸žt~û W§´/T¥xl :8ªOÛ¿—[’ u‹m$›¶@Cµ9òO”I÷SgrÚšCåu=Õ’O‰øk] Åd‚Zב³ Lˆä¥¬çúo”ˆ¢ßå†ï_‰Dí¬$«—}ˆÒÊ{é''ÎWž^î‘õ1ëß–**U­²Å!7‰örØÞûþ7"`uïÆÊŸDæôP¡¶bßA^±~OÕˆTõôÃ÷£@¥”ƒëþðR¨}æšfsÄšH¤š_Ըר\úròÙàëP9w· .§¡óÀ9DǪG­6Ÿ»z‘{¹}Þ%½02\H¨X-Þ{d%4|Ÿ5JÑ呬™‘sÂh4wŽ ×R|EÚá¸}ÊÂL5Æ’Nì_ŸaMæÛÝ7ù&ý‚欬|õOe~n‰"â[u¦ÙXCz\í5!>g•ÔéŒØ²s9Qê•ûäöû.Pƒo³ÊâÐè“â!PydÅÙ¹D®j³@ÂPs³÷¸[Ȳ‰Ä‘ó~IPÝo¡Æ¼ ~¿~<#ëÙÐ0-ãa·÷–T.DfÍÜ£_A…ûÅ3W@MfôËTí1ŒO¹Ï´kcÙZ‰Ÿ—Åœ&êù)'ã\F@Óm;•zưvÒvîɃÉhÄqënÍ jÚ1Œ[7Ñ?Öhª ‘ë;±vÞ­»Ð°òÞ„w_  Ò9ÁŠ÷’GT¯ñ$VÖF‘nBz¬_Å:ÿy½/ˆ³þÒ~' >æACLúÅÃæCÕ‚Êœ~3^’®n_ú_~DÄÈ5ñ‹“¡âþ¢ ÉÚï¡ê¾\扰¤ÝnõÕïb%˜^¨µ=¿û´ *dÛ!ëÕWZì¤tü/ﮉP¥xõéÖÛP3t±â³0Ê?ìsîÚûD¢@ôe¥kCE˜àÏåÇ繯÷Öiõn!:¿Ö±ïs·=© m Â{¨zÛ«Ñræp&9 Û¥fb] 2mÈgx¯Jtv7çDÊú‘çþ1P¯Q&(8 U·T»)ÿ Mã}4ç½X õ‡–æY[½åÇÕÁ¡µ/öA“|Û=c.¨ ·8íœÀø”ÒkŠHŽ“!WÞ{µèf‘›òýùl«/Ðô®ó*‹øû¤½ï$A%s&Ê—Øœ¸ž›34ˆ²‚Jšv»>DòøñškÏ÷CÁé¤G{¶-ÓŸo"bTŸnª¶*_{.XKº~-ÖgÀ"×åì›z¥Ôß æP÷¥WWÍ…Ê1kW\ÉWŠ…qs–Ïí•Ø^6RÅç¶NTê=ìÛVí3TòïÕ—ZìUµKòÚ;S ¡Æ®·Äw9-"Ö¡ïñùß«ˆDÏëßU޽ƒª]ÃcŸ­åç 1M„ªÄyJFWÑ85Ý6 %ªg"rêž#ü;r“û¥½èÔ›ˆ:p¤qéh×ËâÆ,Mh\»ë,ŸTÅyÛo»Ì[??¥8ªË'x^Ö{KýêC$šYjÉoßHÝ5r´·š A€'*éÕsÚ͇òþ×®ì •{Ï]¨ß å~÷J¢ @cœxBy”4¾tñá[=”Íw¢;„hþX¾ôbÿ‚ýøöžas¡LÆ~Íùú[Dge¯Êa¡ Æºëóå#ê‰ÊKËèLJ_‰ì³Ÿ{ M¦µÃô7B“¶ôo"}à›‰{#”êî²ëéõBmz\Zo¨ÙvÓwíécDìëÂÞíý|ˆFZÙyíÐ8ãÝóø÷ûɃ_ÊÞ5¶Íy'TîQ¹½ß ʺú<:¿v=‘¯ÖìíP:ÊG|ÚªäMd¾ÞÒzeÓš7AcG{×ÇןBý…»®›åkIÛ ½>f ­aó©µ¾ìÍ¿ƒÕ0û•KÇ¿‡ŠWF:–ÑñȨêõaŽC;é´²)2 )¨¯y8€„¿'b¹Í;™ râÊÚÈûw âÂŒn?ÛCu×ñ¶&úÕФ8®—Ž…+‘ºZJj©CÍ̈™ mç@Upò¹Eeû¡zE§[ýÆ©@’ƒiÿáçýry6¾Þü¸:HmÄBK¨:¤òXfÄ "íü®êZQ%‘þ½~É U†ÍhŒˆwÜ[úcC{"3°§¡û3")³aιÝóˆÚek5ånGu/¢> ^ Õž'?{[@$¼gy­ëL$ï­åd•+œ¿<üñœÙIí¸ñ†¼¾ZPv¼w°Öó—DéHg§Û_ê&Ì´®eØ®pçÅjÍ>‚:¡êåï |¦p‘ø‚#?~ºŸ&j×®úVŸÎô‚ò¦ü> '÷ïEd î® ”å®Q¿ uwU=ƾžG4¿ÍZ¼¾*|ƒäV¾%Z³h™ÍƒJóç¤Íù ¨45Ìö]µ×¼Zö•¨NÚ}ƒ_¨|îßSRýÔ<>Qÿæõ(*Íí»RûŠ WüVTâñ*ëŠÃeÕyDS6Oˤ`!‘§ö¶þ¥_€ÜÒN< â—œ?iƒ|)îyÿ}šÌ\¨p»?ºÇ"®´ø¹Õ©ûÐp ù¾ •B{'’KÇ= “‚r¹¨&«]¡qã Õ0~ÞRº%Õò ”Õó\\Ò"¡qMŒËñÌîÄc—îš4Ê67;6Ê2¶×Ÿ|ÔµÁ§wûf{AÅ«oÝ~\…úûßPŒˆÍ:ø¾î4ÝNœ£Ò j'è\9*±ÈN»¸ÃæýW"e²ê]ߨÏk̪›=–¨H<}ågÅø•ð±?¡™•£žì7̯$*öþõ]Êøþeþ{äÃÇljâKªä” üŸP‘èÓ§ý#¨úÂÛCa™·cÚùE!nÄ`ÒèòíãÈàÄ Zý%ô ü@%¢Cä¾?ܵÊv ‘½e®cª e÷ŽßÎŒq`vQÑE³þa TOj˜§½t”¯és R4»ŽvÆâDYMnxî&þýH^"E,’΃ÍG|žòÖúP-"ÞmÅB=›:f§U5kϹÇ_·J–¼:›Ã_çí\]8¨ÿü5=Äêï6¯ öè'mß®[˜½*‡®œ8¥â#‹wH—¡TáÎiÉú/Øõ‘;w4®Õ$j©óV·åÇÊGVóß !š+\d\ßõ&2+\fD U*!ÇÝÔƒŠ{½7ïŽIƒ…óÅýÇ êN H'2‡õ'ñ=Ÿ'd$ç}!{k©ñèÞDuã›»ÚT"mëð.Ýr4”ö™-ÿ%´‘j˜«‘ý-’Hö63©ÎN!xKND¿ƒJ%Aac¾¿0?ó;q”>ö˾kaK$m~ÞòßqЍåóohë :ï…ûùÙ[¡<÷ĨƒþªD¾Wê³çöPÖg…kò!_(µ­“*²˜IùƒúƒiÆÓîCíÊ/pf¾Ôݯ"#{‚h‚þ^7uqA=ië¸!PÕSfÍ!ì¸fÏB'‡ÚÛlžrw„ŽvZJ”g>œñXBŠˆãyÉ[AnÝî>!:Òö¹¥ûOðùþ½÷ŒOgÖO~´ÊØ«½¾¥0K~bªFTñ¼‘]ª¸„ï·Ó²GJ=¥ç¡lÙ5A¥'·9¯ð%t(‹×áT襗çIÕ©ž†Z‡Iê‡ee‰‚ÃÄ+“fJ^RYBñó»4}ÎÏ÷,Æ™•LuèïØjÒ>\TÝ´‚ñ)¾bŠBp›ŸP•Å ûµhTžï2æù–"%íÐæø¦/DBåôÚž4ξ·F¦ò6ÔMnÛóÂn)¾Ÿö›·½4õš³ÖÁú”ï¿oôkd6Të†Ýx®«Î䤴)Ø:i­'ÿ~À_î(òï[ë;ò0 z\eÒí¶…D<íƒdÂÛEРbpÂÅPšÅ75ÛºK½GÏ£r2¤§2/JÆÚÞÊÚéÝ¢;Ê&UIŸ9ÔD¤püšLƒ«³Îù@C‰çÓwICŠŸ_l84ŠÏЛLºUýÒs6*…úëo®6¥¿ ê·‚öJºuæ¯u‚M´› r¾i¬nIw¨}·¨’Óüüd¼¿qá ¢´ÚöJÕ‹ÒV²‡uveQtˆžtuT‰' îœP"øÃñRP-«`Óª;Ü} ÿŒ´w´j¿ œô›dѸÌXÈ™µuíc¾ý7?ëC$ ‚mMšóדSe̯N#ß]é᥶jÞÈê¸îbú+=Uüñ Ž-Ttø¨dl1‹ÇMø÷œˆ­–Ûc"&uõ¢YÊV¢1Ìuêä`¢"uuÚâ¦l(iˆì»Äx Tû˜]<×É«êÝÛ*çÏ¡¼÷±ë qû‰üc5Îëùqý®BLðg´ˆ¦=? ÷{Kú;Lü1zé\s4ùh Q•ßÈ7˜ÍD¡Xø÷;©ýQD?#bw¼ç ð¦z„šPþ²¼À*:?½çÚù”ªœJú<Œ§PïôþÛô-§JLbr ñ€bcQܩԲڞʟˆ¿Ú?ÏO,Ë68*CùbÈŠ…Š@çmçô-‰¶Uì.ÅF ¨@ð MP÷áÕ­#݉Ô"½sߥ ¦ÇÉMûAy§Ð¢¶c jÉ„Nn¹”O(¾ch?žˆ[š¿~n9i×)tsܱDr²ðï × ŸAéŽì }¿òï+Û«ç¥jéG‚?¯y„H­ÔYÙr!‘HèqÁûÔi6Nm¨Éï⾟Êo»<ì|êçmóö«%oü}?KÄm²Žì¯ý %·úÏ8ö2ŠŽCd?_[Õ·’ôßèôjã 2àn—³Úþó üáÁù’¨2˜Ó¤w˜è ¯C©z,ÉéL$G?kÐØRA42çº <ß^Ÿ>ô»¼Ò…‰»_{1?ñíÙ²¡Á®ËÓ9ú~L>Bþˆ¸•àAÉJ"i{ûÛÁãPwº`ý6y¨ûœ®wí颲80äÂ¥ÁD|‚MJÇz]Ê”:ðÅ-™e´+_*mcóPî;"%µ«”œY<¾Ò9Ê&¯°þýUŸê x{JÌÝDTQþj;²óÖœþAô^6Û/Ó;Éà§ÍPšb´V-íPÀ®SùS}• sVéÇC(ÓZ>4èÈf(‘}*X@Aeo•­ö†Ÿ¡´Cw­˜šG¬}½£p]P:IÒ÷hš=Ôv_§àªÞ‡H÷NÙ7ÑÂÊ-»O¼ó*€¨†¨^pÖʾ ÿÞ]Ó2’ ÌÏg”ùn»åTÈæ—ÏfüÕnxqíî¯eDõRÚuãaþJêÏ]»¹g/¨q}úö¨º.•㻤ùqòB¨<®-XPCÓî}æëG…ìð >qí›Èt<ôÎOžUYøÔc =¡¨¹\6A ÊCb5«·*@…V¯pócH¡Pû„Ò„’gŽÕŠSÎ[uƒÀA}V¸Ññ‰øçesgïÜÉôVYæ þ;ýÓ‡”Ðo ¦ä¸‚Å 2¬ße¿ÉW)‚z½Bù šN`úBù™'}uÚdóh‹r£üÕj'LOVÍ zèg¥ü¿W$£rMÍNö„ºÉÚï{ñï³/ǽî8†é“ÒS¼¼/¢½s_¢…üS¾ºÞÚeÐcüx"V“,XYsA¹þ½ÌÏJ4¯žT^wÊMò§·t…šªŠ—Ãú‡éU‡§”N`öVòJƒŸ8Õ1ýÑñ…öOºöñŸÉ0}Òñ)æ/臇¨}ueŸåÛO¦1ºøÅ”Ku¸eîµxX/ƒ'¬³¸¯¾÷­7v~ù{aUð´lä†öÎ…ÚvÍ€‡íx]~,=¨A…t‰¬p?8‘t:¡›q‘ï—Çñ=ŽSIé84~ݱš¿njÞ—O¤pü~«C¿¦Cõ”gA¾§Ô ¯K(Õè_M? õ—”é&ó×{ûV¾*þ²›¨í²ï``Ü—Èïûæ4z™ ] _ºäm]ööKD޾§Óy4 ³JðTš x@ίzqCHå½P.¶zߎr¶ÿ¼iVÀëâÇT.DÆ`à ¾ÈÈžÂûQÖ÷àµûíµâ,ë‡H†ÌÆùÂqÅ~~&,xÝÒê•æ±€t¸ùãµ^*]õ±Y°Ð$£ósp'+2é•ýTõÙ¹qiƒõ-(ý(¯¦½N…•ëˆ8þPPÞü:¦'Tÿj$”¢¼+„r%*Ç&ßèwþ:T†\ñ*8CÔÛã/>õƒNKœ&xœG_¢µ´¹0Ô{;iÅ·ç¤ãÉ·}5w`SyCÙÓuCöùÎ'HsA¢"œ‘¬ÆÇ™A ¶k,Ü0ß}È(¨¤vˆói#¬ÿ•By a="ò—G½*à1òIzQ»C;Á¿DdpÞåÍbéG홈K>U¤BÄQÔ¾´±=õZá1é»GÈ7Ú-pÈhXA ʛڇ4ò'&°ºIwI;ÔOΛúÕŸØ™æ¡ÜtLÝÑ|9¢=•qÚS©ŽGº†.U9¯Ìì\ížê _úu”g)Ög©(sá{”£óƒ:<.§þGå‚X–4xS·A|;ov`¢0á‚þ¬€7lÞ³®¹íšæ%X/£„-BÚóã“P>%zÍWŠˆw÷øò÷"ÒžÊé7 ȽæQ>H‡÷‚×$F,•i³aÿA¢øfüÄEë‰.µ;þ¤×͉bó¨Tx5{ð©ÃD™Ú;_K…7Lˆ ÒíDé]kfŒé™WÑœ/AUò\¿Ôaüû±ó‰Ë«Œ ×‰¼«„ñ€ë'‰ wÔîpè~ì.Ýë»J…q’H`=1´¿2‡ÊK¤:R:DKXˆÅ!JW ãdu‚æ9] E¦ž Mèi <~tx곟µï±MH‡Î‡Å÷æ×8ã‡q \X'…é™b¥otòÆ@)¿¨}P¾J±?Ï®Y¬µ7Mœ=ÚîÌü’ª^•±ìÏÉê‹ùë˜(#×)PUô$cÕˆK¤]´¡Ò;ÅDéÀèi3¶~€*o#7j&ïÉÒ„¤·òP®öêaÚ#àUÇiF¾[•kfªíþ>‹¢ ÄÉ··¡J5rÅûi ¶ùqd'à…Mˆvyõí¼x..¿ˆjqóû&¨ÿtLÆt5£Gå(÷6žÔ÷˜•¹¾-ã·fïDkƒ¦KPâ³xŒ?¯4zc¹ÞÈœˆ‰×lùý} ?¯ÛZýÈÈ”ˆ]µcPÜiÁ~ì£3ìëHç¡O\F+Þ`|S,³Q¹mí u_½•ÕrÆ™»ÂûÊ£!¥ÿí~݉ªÏâ#i±»ZøÄyÕýl³'â|9§oçW½wÅ. ògr«.ª¬æM˜ ÷?ìIä÷Nê»Çë:4nᧈ¶Wz{/|J£*‘Å_}Ï-gãÐùSºLŸó„ïÅj/s­7ŸòMä/H¤ˆE¸’!f*×Më  d¡Ý‰±ïOR~ˆ’൞á[(ͺij·}2'ónÕ‹ÍDÝF%ÎçÞR(5ž¸á#ßÎ…ó‚µS×'ÆavBÏ7Ìs_\ujÔ>>ßgO:Õ+‘¼|`½OÁhA½ ßD^í´æ¡;߈Tór~Qž/øCA Ñ¬ùý1Qî—T s<Jß/ø±+Êd 70-†ŠžsŽé§ŸZ³Øy*ö:‚åã§rô¤ö6þ<(CùS{©{¿gÖ|ýþLÿ%›ÅïÆ—×°ùTæž¿v¶ÓZ"¾ònß:Dã~ðÐG+Æ3úTæHÛnßâBô˜Ëµ½WËüÚ'µª7ê´o à…Á"óY^gOÎJM^?çÓ#•ŸXàþ+ü³ï{ º‘Ò%âÄëü’òöA=º§Cíß7‘ý ®`ÂÕ”Æ?/³}ö‘¬¿ìŸv%…žËúå°ã² ‚D©3Ñ\3sñÕסPYh±Ë»Ï8(óú¡G2?X?®ôml_(]Õ˜b¾ÊÂBÍ·»o†ú¾ÝÛJP¹1´c*gjGTN3C:ÌîÓ£¾ˆØ°e¥i«BH•‚µ›ˆ8ê±\hGPRwx›}? þú¢¡úí¡P!øŒÂú?>ÖÝC‘t¶¼ÝÎÙÊ,®”~R—¾;¡’è\ï;xð=(_j=ý¶ÿt&g…/r6ó¨ß1ù””|ør‘;“kÝ>ý”[O¡äùAW ;2TõœÒËDµo:?¢xÉÀmli8TåM]±tÃ6fwuWͦñ#‘MÍ^é?êÄÆçuðªÎ›n4î9LN¥s…ë}´g"¹ÈøÝ†/Döü™WVñ=3F-©Íôª>cþׯf׈²ÓH=¿òÔn™ü©~QÞD¼Øé‹ß%þ}kä\U…\à åÎôQ:<úüIÿþ$xÚ¦¹‰ÍOüx·½*suUgÁƒFŸÊOFÊÌéÀÄ¡,ÞQ t©}Òø©²Áͧ:Ô5õæ†ç±øÉ凯E*ÏR¥Å]Ln1ú\û®Ôz½ìI#mOÄnÔ0é ÔM_âúqð"–¾w;Þ– õY¼£cJ(‹+ÊI.:êIÇX;êÿõ—™3ÿþÓ x å)ÓÔ2äB‰êÍ õ.A}ÉT£ Ú ‰|Íòçò§3 òCÌußRD²PÌiE?xOˆì×Ί?|W9ùc/#¯ˆA¥»¯ÕN+"žâë¼yñ!¨4R˜`½ö“`?¿Tej‘‰hþ`šr‡Y‹oP—êX»£øÔ.[j›7®ŠÈ~Ë~ðqû5( »z$ù…=T}Ú\ž”Úr\ºÞ;õ{Ó-"¨ùû;"v¥êEö{ÒVwÔÍ¢Óü¼ ùñÓ^"Q:¦_àÁ×À[ºaëïço·ÐrÉ÷1fD:cOÈÒ‘Ó‰þôwu~6)P9É,Q¿x%E"&lÇÚ‹>ÐæÝ²AL.´}Õ²ˆ;.u%ê•ÇW Ü×Gþ­àðÆKD唿êÑwëøëV£¶ÇÂü¡ºÍ¦Á©~(DæÉkÛ*_÷"r—”:@}÷ÙÒ7Uøëµq‹½‚ª \(O¢ÚØÑ]ùm6‘œuúÞñÛYD,þVmyŸ3D¾ùušQÊjp¼ÚmKê®-­"Rƒ~YtTj]¼5F åʵS¦×:~ô4ß êŠúnîCT…ã2{W½™· ø” å {ê­™H$Kw’Æü»D«šoX}‰¬PÿÔþ[äÒVð ¹*•UœzIýRPGf‘˜Þb¨‰ZqæÜ­2N¾ù{M¢wåÂt5ŸD íXîÈz‰qï ÔŠ?—`Fùý›²Ñi÷ zè†À~¡ázoÉø2$]½üíÅ7lÞ;Æyt™'K¿–+Ì„ú™íí*?0…š©þ°æ†1›oõäÝÆ_`þÏôK¯Óóe–'£Nï+žZÓ¬—ÄH7´óŠ{û:\R@ ¢çhuÙÁôÛþ¾IÜò¢ ÀëtOB)TãóVJ—ÚCß®«¥°øGõMíO¢Î=ìÌk(¹ÔÏèIgy(ù°²hÜšŸÌÿ•†ù—yì7fóG" Œî¸^"Úgy3ÞZ2½Õòv¥ÒC¦û{".?—'±²ŽH¿:þxÆüS"|W^êŸ^v¼Eg¥Mº†Ì‚²4½¤®Oû@™à-{ç¯ÐT²ïÁ #2IýK—ªµÁŒ®$¶«ksgÍ ^ø\ªŸt(öT6bò¦ôè¸M®s«7Æý€†ðÙÓ?yB£Pî¤]ÜRÅ%sïQùCýSq·M¤½jI˜çí»L®M)œÙ)*‚øéàÆÇDå^)¾z ¸o‘Æö]uûÞ™yì8Ñt[’÷͘h›ûëº= JfzNÎT\5?ü¶|68ØÂ§³àö×‹Ú “Ò§r$K.óÛÊBeŠ-Ó€²v6ý>iêòס¸]Á_ü{qüÖk~-ó{¸ÆºL T6,R ¼F:\»6m5? 2ÍäN1ß§9&ÃHŸc7 _ÕDdß™”»t‡&ïÃ݇†ÉlẬ-êGü[יϔÉèQ¦eç‰ä™%³6 N#JB9e©¦Iž ÚIvþË.J·èYˆ‚ºÁKWÉ2;,ëÐóƒï="ÙÿЄÌ#Oˆú;Ú9‘¸.i²uöK&Ÿ’ÍaZz?Bé Á²²'›gCJÌG­”ÕÔ^ˆÔ|ó¥¾öüuMóB¤}E»ðB"¥Þ.èæš\¨ ^>kÚ€ç¾r„gTwœÿ9F¯üN~íµ#®Àãg«OyÁD õ=|OP¶/8³ŠŒ'Zú'›‡\GS§'â)dÚÉcï¤fæ@É»3;·l%‡FÌ›”©¥‹Úxvëµ*Q~8?"«»^áÆÂC-~ÿNÛñ 2êv§e¦‰FDBè÷L®·ŸÁ›’Áþ‚LJÙý«|XÐÐì„ûÔ^ù#ÏÐ;Šê*Ü>ôÚ|ï.Õ[‹=á<5ÅWåf¦O'âvÇz_ù UÏä¯YÓ†é™æÃ Øtù]R¹•Ꙩ,´¼ŸÙ¡œHÞS?÷h›¿Œóäá¿G>"òWªu»™†š+ÕöK{`ó­»ø½´Á­‘H¼ŸòqMíX¢ZÛ¾\íR9é!œ/‘6q5zuô4”®œW®¼b$“;ÇÔþJ>É]08rFPפ9>ÕÙö¨ éÀôÍ˨ÞͰШêÖóÛª^P¹sã(“†NPéªA${i7›§ƒ“®Óy@½|ãÙSc¡d›™ÞîIê,>”Ÿ[{Þ¾ß0à˜ÇIDÆU#`Lú"¢P³eõ÷ט¿R{ê%Œ›,þP>Ayî¹Þá†DŽO1ÞQ„†=Õ‹U¢®@ùYáw]'âîÅ¿=ßJî»T öi+ž#<¥Ô³¿øë1ç6ü å‹›?”…ÆÃWgóì'on×Ô·*içW—òC´÷Z8$HûBéLíóÍ~“ö(ç2ÝŽ¥ æP¿qw;Þ%h”èï°rè1¢ùæ…_þ7¾„ßÝ•{¦Üüå’‰6£+Žßå”[÷üuöÞ¨<4Ô$ªïîéÞJÔ1ø)Ýo/‘>ºÆµ›—“cM}g‰÷6‚:$‚c¢‚z)lÞ§GûCu²AÌ}~PeÕ|?€2¹ß&¼Ó먉ÎT“K‰·‰ôœˆ5þ±Àóœ¡4õQÚ£CÇ­Âù£~˜Ý•f W=vz Ô(~}Ôè=‘Ãë Žyÿ.ƒªy‰¿³üظªÃm¶'–$bx¬¢y©ã r()Û‘'ÓÕO©Û_m‘åCð”eI"”:¶¥èÎÈWiôÏÝ#N௳wþV|§GĚή¶pdöÚªãùL׈ѣö®™üÎíeèJÒÑûýªÑ^DS2Ëÿ«¥¡ ÎE³üÛqñ»úÅ¥=ùö³ã£ÿ ù5Ô_ˆ¸ò÷ÿCPӵǑ)îP®$>ææsi¦O¹  »k»Cãu#- ù#PÞ¼MhO2K°ír1‘ÚT™ç±é>”<“ÝnŸ“Ÿr¤ð{¿~®|?áã5Bþ™ß4Ýüöÿ)ëÚÚ¸²xŒ$!<ä%Ð*EAŠPYÅ­î9Š_[¡­nEt±©H`u¥°¬Ú®T\‹E+PpKmñAiKƒ–­¢B«¢µØÖ~>Z»j›™²3ÌÜë÷íþ&7Ü{Ϲ¿ó;gî¹gæÎªrŠÛp•oK]þ_0.h×ôuÞ5`u—M<\`Å5Þs¥ã?šMËJÏqžk¿!ÆÉ?>ìGùœG†×å³39ÌÏRùOÉ]ú›‰´ÿ FþƆuFŽèÿ±ó±?ß ‚³(ŸD¿Û2[ûwµ`ím¯)il¡<ãJ/).·Þ¦…]çwî*±/ŸùÝ£'zöS\ÇÅ Û¼»æ¿Dé•l~ã!·.pflï G ïòëH;U ü%æ2`zê¿üÛ9#ØößšyhØå™vÛŠdÂC0oôŽ’K¥~êó­zݲ;Çq¼«[÷ÐÐLy­l¿öjú‹ñB‘Õqoog òé*Û¨ßLËâ§Ùzw†²–[»ž!<“ ?{M)ÚœVÏ #bÂM…é`_¬i˜t!„àFí°YÈ?³Íü5BuŸâÍ.r[yl)?ƧëoÈ=Ov‚ãã=¯$ ŒüŸ}œšà¯gL~‚öKâ´ÅCÈ«!ã <%~6s!UžÆÅá1 z~!ñèkò8˜9¥v_9ŽÃ_T…¯$zàØ#B‰{ây˜?­ÏèþÝDü™Ø‰àHã-ч FÜ gg”7€ytûô|°´ ΋ÿi>Ñf ’ €)ò‡»u ×%%¿î@Z(˜kÇWs38òN½Wlt¶eZÖ”nÍ\3ÔtØòéîôt3š ŽÁu£À«òÛùàêMãfbé`*58õÇSÑSÁ_ÞÜÂ>sp%Ö½$Ùv }ËtÉœdÔÏn’8Z€ÑE¼•±àSp,mâ&.2þù|?è‘ðúÀ¼iñùØfTô‡ïÊY…¾K>ï;âv½Û,íöð ¤>0e:ÉÍÐ}`]4™[ å€C)äãIÙ÷büû’гCÑïÿçõ´>«x'*áêüŠQË5°vÅðQóÏý¿ãÂogvÕ}€®i†™–»Š³VQ˜¶f>ˆW7‚ùÉK=¦Ê-0²Š‰{}J/0”GôÆx`O&~P},âóQF„ñbX™.·D†J±"—ê7’¾iõw­Pr¥æMm°Çk¢Ø=W0êlcÊù+à0måWÊèõIéùÏY~Ë[Ã\&ãçŸ7 í“êqüů¾€Ë—Q–#ì¯3çþ{‹ÊvwŠ?ÑŸÈwK~;ࣕ¿ã¸ïž­.éÖÂÀrέ €¹¹ö¶—å$Êõs¦'~Ö fœ½£éb:ÜßpjL)XCãjÓÀ…’k¿:$§)ÎN‘gÖ‡•¥QSQ"è l¸Aø ñdÙ¸ þªgì?O+ ¯q못ßV‡S¾Šã¤í§fÕÕq~X¿ã”ùËvÂg Ùv÷iíOµ0¸_rí¯Ÿþ˜ýœ¿i«~Ù«§rÙ`1/°g­æÄ/`Ëlÿ”‰k?¯y\O”ï­ILž¯CÅ-ëŸO v‹1F%å´ R{pkOô\°Û.–ך^À¦í½žùGw`3>ñ™1HðÄ1âï¢?€EÄÇ¢sVyßkg®&ô¾8EùÁ½iUÇ={pºˆ“_Òèuh»àŒßPd7XÄq2ª÷÷Å×sçñh ÿ&"îü>zÿ¬êè……ÿªÅ„¾Ñ뵨êâÝh%ʺçkûô%”óé ýÀŒ¦Ã­ÓÂÔCK*’Àþr,¿¢€áeµG6ÆPwµÞ ùp3å“è/ýáêêÿ½‡Ä®`NÖ'¶ï>Yžé޾/Ϩ8wãQlI0·’Àm–oøqó€]¹‹O··¡ìÁÔžÜ)(‰1ÊÛJri?ŒXùKñc²êgÝß‚þßÜÈ [t•“Ë›wާ€ JÄ8Cp!~ÏüüMΉ³cðÕÀQâ⼆Õ%¨ëÂY)Âú>hbÇ£ÁDþ~|ghïízô'qS´ ‰[Ì\>ÁÂAÆÒÏf¾¹& \Â8(oÝŸ0X‰Ï<èG7Á>¨â‰ßè)ÚU”¦V/UvñRZ6 öëžÍ«sòš€©n+»¤ÛBq²÷;& (í3t¸µßªÂøSI>ÕÝ[ÐOô‹`0±MßÍC…À ‚'˜­+:Ð]õ¾×ÐÝ$Σ´ú¤}ß±Ä_Àá˧cú=ŽÇ"I}ßDÜDI$nü»ŒÇHÜ$Jî(ËS¯Ïæ>Âo“‰?º¥¨‹²Åïî 6jukµy9¤œœŸW”WT(–/äk´´([–_¤ÖýeA~q,äÍ}¤eÜ—Ëú¦PQê <Öª‹Ô±š® Wá?ÿú'øÃÛSfitdistrplus/data/fluazinam.rda0000644000176200001440000000033112772503243016377 0ustar liggesusers‹ r‰0âŠàb```b`â’Ì@& `bNNË)M¬ÊÌKÌe``+d`àa¾40pp8gB0€€Ã¬ º…BOâÐ1:AB7@è¹uö?g‚À,ac0pi€È''0@^{ë?€HöE0{á|öÂä Û‹ ¬À H-2 dÉIM+)(ÊLÏ(Aוœ“X ÓäJI,IÔK+ˆêEùåz0‹xAÜôÿÿÿO@ê–UËUºfitdistrplus/data/endosulfan.rda0000644000176200001440000000113012772503243016545 0ustar liggesusers‹ ÕU¿kAžÛ½oI4xETÐX¤P@¢¶™ ÁFET’ÂbÉíz‘u7Ìì$ ±ÐÊÆBƒþ "VA AD›4b…Š" rç̾o–ì¡(Š¿Þ¾™÷Þ÷½7oßÞŸñ&<ƘÜ^ýtõ¶ìèGIKE‹ĵD5¢Ðs«ÚbB6j©ó•½ÙÝa¶Dø Óüõ5³Ĺ—Ì,þçÓ8¯"~vu?ãáq~z2‹àŸd„[{dÖcÎÓùüò åµõ “_ ·Þ~ø¯Oêè¡8QEÜ+„³õ4Á7 ¼Ü.øÇ‡=Ï×]"Í—p.Ó=,?üvðW`Gù;ØÅá÷ ~?êØ>ððê°}Þ]äÍóØûÞÄWï6ôy·qÿ-àÿÜ ñØúøGøm½£ÀÛ¼=E~ÿÎz‡³sUEü{ÔÕ œÅ†}ýÅ>‹­À‹óy&.!}ã"éë;Iß[ ýüà@0 Na Îc¸€a<¸\ bÞÎ&‚{Á$†‡@ÌÏY1CÌÃY xÄ<œ}Ìð)ˆy9ûD¼Ï"ÞgsÿËd躂 ' †0Dü“ë€m@ʰØ!æ%ó’Íp,S'1œÎç0\.W2Ä<&¯ÿLQgɧÀ3 QgÉ †˜ßdÌoò%ð*ˆºKƼ'£î’1¿É/Á×à{u˜üÄü'cþ“¹yÏ·1EÚƒn ‘)ž`°ˆºKi 6-Ͷ)Øaõ›2D¾¤ _RF‚£K ò$%ļ§$€;À$ð˜ JªB'S0)W¢^SPŸ)/¾¡›)Ð͈ùKÉ mLµí:˜¿Ô2 t4µ"X™a0¬ ¢îS«1 aXƒamºZ¬"_R‘©ÍÀ Û0¤`8Øl"R±¤"R‘?©ÈŸÔA`ÃÁ ‡‚ÃÁ1 t)uÉàd0ŒcJÅú’.‘§©+À5 ô)5Ld¸ŸaR X7S¡§©¯À7 |MêG†Ÿ~eø„ïIÕz0“¡4ƒ9`î™&±N§¹€¨ó4w†^ /CèAš?À°ˆºO aX¬Íuž†úNk6.¨û´–`؆!ÃK ê?­Hƒ¤uû‚д •Àá G1„ïHC½§MQßið!i .—3\Ép-Cø´ úƒ´„¸™áVpà ¡'i»@èIô! º†ºOC§¡nÓÔ üMš<ÏðˆúM»Êðˆ:N»>fˆõ5 u›öáG†¨×´ïà/†@ÔqÚ_PÇuœ–¢žÓL Í ³¢îÓòÀë}Z‘bÔ¿ë¼: †o£þÅž ê^\,ú3DÝ‹áÄUBÄXÿÅÐq]u/nŠ¡â& ;2ì°ØD¿ őࠈu\Œu\ ¿(FýŠáÅcb}c8D½‹§0œÎg1Œ/Ð1t@¼¢®×nQ×âí öÄû@Ô³õ,> ÂÿŠO‚¨o1Öq1Öq1ê]ŒþF¬`ˆú£þÅX·Å¨{1ü²ë¯øCô5b¬ÇbÔµõ+FýŠá›Å¨[1êT¬±îŠQ—bÔ£ØÌõ'Îeˆ:LG½¥£¾Ò=A¬³é¨³t¬¯é¨«tÔUz œ^¬Ãõ’ŽzIG¿”?œŽõ2u”Žu0=‚a;†¨³tøâôn ê+½7ˆ~+ëez?†ƒŽQGéè·Ò§2Œg–@ÔGúœ8Äú™¾¨.f¸„!üu:ê-ël:ê*u•¾‘á&0!ÖÕt¬«é;býLߢþÒQ釧£.ÓQ—éðßé© ˜!|u:üs:ê.ý:ˆý„t¬§éØOHÇú™þ|¾ßƒX'ÓQoéèSÓ±N¦ë@Ô[z&CC Dý¥ç0Dý¥cŸ"ëŸí2-‚Ø¿`]” N%Xï$èw%•bý’4QwøSIËÆû’Ö Q‡’ö Q‡øR êOÒ‹!Ö7 úR êL2–!Ö# |¨dr œÂ}¨ë•d!CÔ“u$Áº$YÁõ!ÙÌëu I,¨ êA‚¼—f¿)9Á}¦ë’ù/Q•@øP Ö! Ö! ü§}£än ¼¢Ÿ” Ž$¨# |¨u$Áú&Á:&Á:&ùP?2üþ`ˆ:”üf¿*ѨG‰‘!ÖA‰™!êN*ÿ”b¿IêÈЄÿ”–±NJ=z‚Þ èËûPRôRÔ«ûÍRôRøO)ö—¤ J ê[оSŠý&)ÖWiK†”ag° Þ ±ŽJ±ŽJ±ŽJ±~JÑoJQ×RøR)ü¨ë¨õ-…ΥÀ‰%: \§0Œãþ§1œÎpˆu\:Äþ–÷M¤Ð)tEº”!tF }‘¢Ï•bý•&”@èŽë°ú#…ÿ•î`˜ÈpÃÝ qG ’&ðËRì—I¡SRìÿK៥X§¥X§¥ðÏR蕾YŠu[ªeˆu[ŠûRè‘ûYR¬ßRèûËRøiék†Ð#é[†ïB‡¤Ÿ@ì{I¿€Ð')ôG ? E_+Åz.Íe}‘0äôë½ º#ú.ƒÞÈÐ÷Ê ;2ìƒÉ ;²Ò 'èðÃò qŸCV‘a†A Ñ/ËàóeµB·d Aè >B!Ãþ—Œ–@ø~ü¼ z$ëÎ}´ ú$ƒ>Éú0„NÉà;dÐ)|¾ }´ z%—Ƞ[2ôÏ2è— ý€lÃXú"›Æ:"› BGdð'2øytC¶¬BOdð÷²Õ ×0Ä>› }€ ú#K¡32è‹ ú"ÛÃp/Ã$~FÁ×Ëàgdè»ei | :!ƒNÈàgdè³eÐ úlÙùÿÁ ûl2ô 2øôD?#ƒŸ‘A_dÐôDý½ß3üÀðCôó2ô2ôó²ÂÏÈÐWȰï&3143„É 3²B†Ð[˜-D!1Ä}6¹]’{”@èÜ‹¡7Cè’ûr?†ègäÐ+9úy•ˆý:9öëäØ_Ã'Éë—À 3l°Y lκ&‡®É±!§ ú%9ú$9ú$9ôMÿ%ï bÿB“÷`Ø „ÞÉ¡sòH†Ð99ü˜:'Î:'‡O“×ÉáËäð_òX¾H_$Ç>†þGÏp9Cè•|õÿà†Ð/9îÈ¡_rôiò>Iý’£O“ÃÿÈá{äÐ/ùþ“CÇä'žbxºÂ/ÉqÿPŸ$Çþ¢\Î:(W2„_’ã¾ }ú&G'¿Ã~J~á}}žüCè£üCè¤ü%Cè¥ü-Cè¦ü=”dÿ%ÿöÿÉŸ ¡«rì“Ê¡ŸrìÇÈÑÊ¡›rø4yái ÿÿEè¥BTá㎠¡Ÿ ø9üœ}¤¾N_§ðg_¦áÃða è ¢Cô• ø4úHE=†ÐEE#†è#Ð;tN}ZúH|ú§hÃ:¨gˆûš è¡z¨€*:—@ø@E×ÿOvc=Uô`Ø „ž* §Š¾%°?à 2Ä0Š!žS@‡cÆ0„.+Ð/+ Ï øOú_ö§ð¡ øOt[ýiô[ªXÈ0„U,cˆ}ft]~V?©€+ Ã ô¥Š] ÷0„>+ Ç ì#+’b_Yÿ©€^+N3„+Ä áCÐeúWôY]V@—ð§ øRÅ9†ÐeÅU†ÐiôXqá}ð1CøUôXýU¼dýU ÿU¼cÝU@oÐ[ú]tUýTèÂ*òJ ü§z©„ŸTB•èo•ð‰J†ðJô§J†¸«„Î)¡sJôŸJø@%ôN §„n)¡WJè’²-Cø4e{†B§”Ð%e×}Q¢?UB_”ýJà†ðqJè†rá ‡Ð%î+áë”èc•Ð%|žz¢„ž(¡'Jè‰r*ÃX0Ž!|¡º¢DŸ«Ä~™:£Äý.%ü¢ûeÊx:£Ä>™>O™À}ªr;à w—À= ÷2„î(”Àƒ ±¿¯Ä~™º£„î(±_¦Lf˜ ¢/VB”Ð%tFyÄóaJìï+á•%ú£¼â~™ûnJøD%| z£„Þ(áû”Ð%ôEùŽ!ôE }Qþ`¦Ä~šR¢ïU¢ïUšBo”¸¦„oSAwTðe*ô©*è ûï*ô¡*?†ÐôFÀú£ ,A%°Ã†õÖgØah „SA÷Tðq*ø8tP¿¦‚ª(Ãp†%÷ßUíB'Uv)]K tS?¦‚Nªà»TQ ‡2YGÿBUÐG|— :©‚>ª *è¢ :¨‚ªf2œU¡*ø-öÿTèwUدS¡ïU¡ßUÁ_© ƒª á³T»B¿TÐ+ôJuŒáq†'¢ïUAßT¸_©‚¯RÁW©$ ¡o*è›JÃðx™á5†÷ÁG ¡[*ÜPÁ©ÞƒÐ)Õ'†_b¿NýRA·T:PÏú¥Bß©‚~©p¿@…}:Uᩆn©E áŸÔØS;3D?©F?©F?©vgèÁú§†î©Ñgª±ï¦Ñ_ªCâùu-†uBÏÔÐ1u°Ã& ÑoªÑgª[1„n©)ˆþQÝ©v.è Õ½@ø35ôE ]QÃo©‡2Dߦ†n¨q_@ ÝPC/Ô“K ú4uCè‚~Iûjôgjø'5ü“z¡F?¦†oR£/Sc?M}45tE =QÃ_©Ñ·©7—@ì«©á³Ô¸ß¨†Þ¨w1„Þ¨÷3LbRC‡ÔÐ5öÙÔÐ5ôF}ºža¿¥N¡?jôujèýœZËýœúOÓŽ!ü:©A¿ªA¿ªÈý«zªÌ:ªAÿª‰aÕLbýÔLeÕ`¿K=ÕÀgi «šù ñ‡>Lƒ¾Tƒ~T=Õ¬b¸ºBo5ðkšÏ1kàÛ4ÐS tSƒ~T³—aˆ~Ssˆ!tS¿¦jÐgjàÏ4© á×4é qßA}Ôà~¬ú¨Aª¹Äý¥z§®i kô™ìoi kô™<Ÿ©®iàß4¸Ÿ A¿©y~._B÷4Ð7ÍO†èO5xÎC]ÓJ tK“÷_ÚÂc!ôJ ?§µc§ubèÂý«Ö›!ü›¶| Ä>šý¬:£E_ª…Îh«1 a=ÑB?´õJ |ž}ªþMÛ†a[†ÐmG†èµÝJ öóµØgÓ¢_Ôö{3ìÃûùÚ~%°?Cè™vÐÿ tN ߨ…¾i‡ƒèCµð‹ZøEíx†þчjá'µÐC-tP BµÓJ ôQ;—á<†ÐI-|¦z¨…ŸÔBç´ð‘Ú ¡oÚÝ ¡wÚ½ ÷1L¡Zì÷k2„oÔÂ7jÏ0LáµðuZè—~N{…!|:¦…?Ó>aø”!tL‹~T =Ó¯i¡kÚw ߃Ð3-tL Ó¿i¡gZè˜öCø5í†ðoZø6­¡ÚúXæ|8Œš4bºu§Ãóÿú¡}»3¬»'ÖÎÖÃúÇ>H®îà¹Ú£¨àü·ùι$OqìåMMo’?÷]¿w6RïiiéÊi•é‘+vlA+'®ÿf—¢ ÂS>‹›_‰ ækNƒÛø6§ŽÑ¿*DÓŠ|Ýqh uµ—˜'{¯º$¸Hò6¶ ´¥!ç¿Û­ÉnEí^‹¸ítš¶lš)›8bØç:ø†™©w% ݰñ)˜ý p´±;õ˜ÑpÞí9´N›øsÏh-#ž:üý¯Z}²÷ØÆ^ñ$»ùRÄë{Ô¾§“õ ¨`L–ÇbãrZ㟑O,jAò2FäèüWò×麓ÈüIAЯ€ˆ:G©]ßíAvùqÒ²ñ¿g„ íIþÙÇË{‡fSWÉɵ'Æxœ(O¿»sö“¯©/z“ÜyHN½€·C˹ü€ÏÅ?©rõÃٟi™Ó]NÆ-Ì$Ù‰¿·Ÿ×µ§ 7ßɈØÜ“äy<-8ÑôÉéÑiäÔáˆyn¤Ùv“ùã¾Vlw†ºVÐÍ/\HòÚíœQmâM*H¼íKk|¡®QyÞ‰¤ vMRõ>ýøxƒ$§yÝæ§Ö¢>“ŽhJE’}¶†eÂRiíÖÏ{é>’'Ém¥(Û(ht‰_¿tÐGÚÄÞZ®ŸNò¯ß[pjæZj·}ǃ‹Ã©CT¿+ýBWQAÃé3ÛjEò7Ôª¼1Œävo7 ®ÚR4ÚçÕâ²Í¨÷’” ÝÖÝäãXZ¢™°(çõ 9±~U;êµùΗñ›©{å!“¼z“ÜçG;U]A‰¹a…~$`!\|møj_Œ¶¤ é ž÷ÓªNkF´¥Â:<ž»–£Ž¦.ƒ.Œ‘Ñòw®©T¥/俨ôóØCê4Ú§ǨPËõ,Ž÷~÷Œä]_´?aî¿qÑÀ°msÉɸ–ZwÐ’7/amȰÒÔÅÅïf‡÷›¨`BŒAVù#)šg¨¾üd'*xðå‚r—uõÖ^š|·%)Ê|\ä‘ËÍ+uÜäX—žúEÝ·&Ñ×RÁÃÈÖ¥r©ÃÔ>¡ÕUi©˜ï_kn'9¾Në0Œz¹×óhÐn"É/[´g@h+Rtóê”.¯IîÎ6§›Îó¤•lyNòå¶¼¯nײcÕÓT¸à~“få§QgÁ¹ëºæP—Œk5{ïSAÞû=²SÝH~­/ËúQAÿµÛ8S·šçýj}¡Â¿Ï>´»CòÖœ½ž·ÒÀÏ‹÷óÜfãƒ^Pa˜³ÏME õ(ÚgìôûmäU ­ŸôŒ†¶8¼Is¯Ûìmé“#¨ý|»n÷,×=æöõ=_¨ Bþ:ÁÜÃüqËw{ºø‘QFr|NÖjÐß2_›ï’ò ¢äS“Cf8SÁï]UÞ2b^¾¿°-³·Û _‡Ð2m#oø¦ÅPǼ@…ã¤ÚÔ1¼YÖú~ͨý¾~ýÊÔv¥Îw¿6ÌNJàÏÃÍ'òŽÿ¹C™¡Ã?ûoOönw,¨ W/Ô¾–ܧzpCÚh®çç¾K“‚héÃ;ÿáõ±]³¥Ý»©¸óóõ쨬ñþÆ‹GTtôtËÓwæ’üò‹GÊ’£ó¨ù÷£ÌÔ.¬µÛmGQÿ“»gÖ æ·ª 7ç6!ÙËÓN;øF òúŸ±+O JywwÙïA—­ø^êÏ bJõºew€ ×¹uVÑpïJM»þŽ¡vë¾nvº]lïQpã åv}•t´:uœxíãÒpê¿áêõU>’ü'£Nf-Ó³W@Vÿ;[hÐ 2)d×u*¸š”¸yð긼¡ö{Ýù$×8ÄR Ç©àVáŰÞÔ>»Óü]û“½X>û~&É=(fá!*z7cm™ÄrÔsÝå¥ë'SÏiõ*\YÄŸ§À¿nwœN²›Ñshê|tR¯u¡÷hcÛñ¨çÕ¤þ3&7º6w“]§v9¿/‰nA…Ò‡÷ÜŽQ_œ×X=ë^l™V´J…%³G}>CŠfLRŽ=7ŸÖ¼Ù;l°é É? u|3þNîÐ`L­²±Zøóø‘Ü‚›ŒŸ2ˆºWû±ÛéŠ$ç~”éêË:³`^‹¥Â;Ä´0j¿Ø©'u6³F˜äl i½dÂ=ê#Z¸úâ+’]³o™^7-Ÿ«©‹>Ôí)èøyOåÓ;¹¸PÇégz.ºÜ•kÇt®o$9_}Ô’§s݃A¹OoÑn// |²œúüz»ô™¬ )º5qŠ{Õ'üûR•¯ëÓa¤çÍÛÚåfÑäFüyóÚf<îàHk´Ííµu)œ~êJ1I_$éŽê¨×&hpî#ZÙv<þsÆ‘½BÖùÏ;”¹¸ôwòORðäãÚ#zsÓ÷šÒJaŠËµÖï¥ÚÝ[¸¶1îê7úuÐibÞåüeɽ9ÔwšÏÐSOEü¼pyTz¡eõñ½J=éÄy‡†nø7O2Û|ÐVzIÌn×6˜°Ÿ4ìïvð7.*œnÕ¦Ó/©+ í÷õc1Þk[¸´÷"‹>÷ ;>3:øT¾üaÜè9þæ~#-5×*ï‰ùdµÂ]óñw¥DÆ *Óû—Èi/<­ØgPûC»£Õ³[’ü2Y½÷´èÁëgŽ´îàÄcý¶Qçö7wKºLŠNùYð|-{!âKh¥á|<¸q º?«:îsêáêù>È·:µ‹ÏÙtx6É [þjïôñ4 vÉ¥OmЍ€›Ï={Ææ4JLÇÕõxJ+]1¬^g;u®¸òD¾{®ÞHμÀÈCzSËQ~ycßgÝõ¬NLx¿ÓCÏsÛ‚¿S螥½/“e•È^÷o¾zU|=b{‡$'5DtÃ9€ ÊÕˆï}ÃLEUnx.>EÌS?=8Ââ ­ajKÌ/{¹GoèÇéÉ©<Öj”¸y¦.ˆSà÷ž†Æå?Qçv5ß©BËV\]X؈–O­¶`sW?R8bêJˈù™fñì”Ñ´³ó¨Þoÿ~!Ù†põúГ\ü;v}ãvP»1'OØïˆ!ä[ÎÍ«ÀSÏs}¾ûö&†ZûFÎ7ùÓÌ•7×äO!†‹‰úGúÂg†G HáQyç³×óIVoeƒfOP¿[ƒ"×ÖÚL c“ÒÔ÷z’,Ç´a«ó·ÒàÁÕLîŽ&9‡*Ô$ŸzÝùxßücTôm奸}¤(öAn£fcHQÐ9‡5g´Ôññœë1ÊB’Õº¡R6u+­vĻӳ÷!$gâ– #–/¦‚+}CÊ^ªS¹­š˜{´¼pµ^w*,?3óÖè²ÔîIݪ=”©ãèõ¢Þëy{T^h™·ÑÎ×ïO²ÕK/i÷¡"mÿ¯š‘þT”ž8ª¹d1EI/ï¹u˜Ï“ÜÖmzèj¬øÛ‡R÷…þ’Í“ŽXÖ›]Òçòôý3em¶_ubø3å®á1ti{ø™+öYxër9õÞ´ñBö²Æü¼ ÞÜxhõkKg·©F?ÜÜðw)’õýÏ0ŸuwIÞ/U«ã½¨ßõ®CoÒã…Ûs~˜NÒ€nÒ9q½ˆiÆaZjõMbŠíñ-ãÀsb¬4ìØÀ+Ô«“-ï lã%¦ÃµÆ¾zf韊ÏO}®kö>z¯%…{gmÈ{zŒ6v»þ^u™˜òþÞwòÑQ?§Ÿ1¿ûR.ßF½xÕyõ^}ðÁ9ƒ–¸ܦŸ¾Ñѱ'1*vµ¨²æº÷?œ´l)˜S¼n“-ß©]dëý×öÄàü(9f¨œŽ©—ãuÏâ[2Ç¿Ûyê ÉÊ×Édï’ÂégžÈâ£ø¼>œÙðU;’5®¸°¹ó’¬Ï“ò—î-$¹·—O»ðMCŒÇ–œTÜÚHòw]¿꾋 º.¼v:o/)Úö²ÛwÏÊ$7Ç×ý1ÿ{ä¯Y9?îÿØ\dY\Do¹ëà¯GØËcBþÝ*¬Õ7ôLŸ§æœñÝ-}«á÷±•ß-}Þ”!ÿÔ¥^ñ—®|¼säï(îHî¢óA*çóÕãîà¶íɼÞá¸<íÿLéøºÙþ÷MÛú—žëGEÞïz -mÑn_G…—ÍnGý¢dŽòS!Ô1JÖùÑê“Äìy§më-¡Ä˜2nÚ“÷$ÇuõßÂZ­‰þvè:¯…Ôq~³Kå[tÂÑ®'±ôN[#‡·¡^cN¼MÍ}GRħ>îlA2«ws¹|· µ/èYæÛõ‡Ô.$.&ûÛ[ZN7`ÉïǧˆÉ½üÀ»-õ6gÆŠO/Ì}¿íXBíμٚ1yõþþײ $Ù?(Ww›@ ?–4Ÿ›áE]ª½;w8dU’¿žwd¦äÙÿ³  7>’?÷ýðÂŽ»HîàËdEow’·­§£ÓêGšÍTø‰qpŒÃ¡g ˆ¹ªã°í›ïð¯s¦÷•ˆs·ñ×éÜvòÝ’HêÑeOç}"{*ÄÏí¶ÞTTÞ±Ÿ;¤ýÈœ½Ä2îO3Wœóç?çÒÂ³ÕÆjשû½cêM½ðsuŠt`©Û¹ï¿5µ?Àýœd Üd5P$séDiÔʇd=j"ù“N2×÷²ÏóZNrÅ>󜨫¸í†ˆ."\Íþk¹»u©°JïŠEW:YüÞ‚Ö1t0‡<Ô;>GrÞŸ]ë56Ч0ª½ëíRoˆù«îÞ‡~Ä´ºbËÃã ¨½ƒ¸TüØËTä¹|DŽ.€»RØ-q˜£iÉkWºêšiö–:­Õêç¤ ¤¨Z÷âC‹‰aö®èM¿‘ìÚ÷6®íÃÇÉ}ìíC¯F¨-ë¥Ýq³¬[£Ê[˜Ý$»µéÕ¶Ò¨ðýY»'û‘ϰ%²¼¾y§ä­ iÑ‹‹ ÉÂñ<{=r<”K²|›]_»5ÉŠ0;¬˜WDíqþœ/a»®:G ª‹wšê@r2Þ^¼øô>)¸:ïùçÐv´²ùC¨4:“ä'œØXôñõÙzs¦ÂßÒ7ߎ *"¦Þ±Ok뉉4S<Ò/·ø“6Ãÿ,¡îCS6˜|§¥íªúf2R7ñãî77Ö#fákëÊI2ïü©±þ›=Év|ê}õL’]nÇn×çiÙô”†i} ´fÄ‚ÂÃ}¨ó®Fì³äñ6Xu* »»g†¥Ÿìà8ccGêjC÷’sê·S°|*?™Ëþ&Ï N!ÆÀº{õ­þòz\´W±o»i¤@BSû¨À~ãÚ¸·h™Fò>^ínSOûû}#ú‚‡5 F²ÏÅ­]ù¬2/ó©“fiòabYœðâÙlê²}qŽt”E'QwFAç±ó‡P¿4‹ ¿x’Ö·M~Ð"‚†¼ÎYôz‘žz¹Œ±$Ì8êú·íœ.ÛæòùÇuFÛµ½ë]ÕróHrîZÚòßéÄè Qdz.{u©‘E§0ïÜúBšíì ŠàãÀéÇž-{—¥çÞÏÅŸ OØò_wQð5åöGbºk Ã×§ÄxM:qU³4(ééT·Â2$·÷ëFµ×‡Ûº0Ú÷ ]vÞäTY:vvÝhb¨p÷ŸÒ­$Ä<`û‹ ŠÜñ¨ðÅßí=ÒÚPáΧ¯D}+Ü÷lq2µk7¸¦ÿÒÖ$×¶?D2']ýÚ˺2)»×;?ê°÷õDÔ~pð¨õ;ûRÑ‹*k´Ë–óçɽóéop~œ…'+îñŸGò{MÔžkåIôŸO\ìwc%žùºpvî'¢ßZ«ó⣸óP'é¥MCj˜hõ6…’cc¢hWeô"†=s_¸èõĆŸy[>¿67’)¶„Ûî'ÉÚd:ê>‘¿MÞ¾«äLô+ú·1I“¬vQ‡>]iÆÍ)ÐMß#ê9–z!þÞ“¿ý¶ü =Zœ¿ü¼3¤õ,î¼>Ì= Yî7ÿ{.þÜ|éë´\é~kÉ ÔðæÂqDïtÀÚ@Sˆç„´—Hf¹À€'9{ù÷ç§Ûú‚Ì» ‹Þ§‘ÜÀ‘®rŸêÔ!äí¬¶ ÃÎÀ¶Û]¥^w¼æ÷Y)#Y7zÍjY^HŠªè ‹Ÿñ°”íø³Äèô+³Žð?¾ÜÑG6íø0:`^2+™oéDIþüž#ÆU­FräN.ò©ÍŇ·¾x;¹/1ÅYjR4mÖŒ£šP×o÷“_ì=Ïæ7u,?ïÔEË:êÙ÷€ª½¥Ÿpóäô›î<õËžàJŒÕîϨҒ–²å —Ÿ$óE»WQ¯:aníW'QŸ°kõªG)¸óSá¥=»M™ÂÏ›)KìóéãV~>ìmuCrôñ® ¢2h£šë/¶mäÆGE¶y%«FŸ-ZZ‡Ÿ/ć:î¯\jŽ¥7n|¹A/:½öúLCQg™¢³7n¸Ñ2ÍÄÆ-­Jò޼:]ͲÎm}¼Öü'ü|rÇs[?ëAYi €ñs㪴ujX•6m¨ çµµ! N3öŒ¼6s&_gz¿K=Fî"†˜_³ñh£Z÷©Ãùíõó_ðù¦?VÆbœòøùãÎ_hËZ©F“='ÃÏ'w~î8|½ ¡C\~Psƒ&-}Ï×öL€ìËm¡™@tó>tLöOt·­ÿî±Åÿˆ~—õßnRèôS_ó=¢ 8ãÜ0äÉõ-þÑá}ºŠ·"—\+CmÏì¨S£âÔN²¤öçµ–ºŒ·;‰;~˜¸ðÊä¡–¾IÑû× Ëz„óë-ïš÷¡Énðæ…eÞDß‹Üsšmü¸’äïUûµ¥ß›5øØßËÓ¨÷Ô´raÃkP—Y×%-zZúÛùô'ó¾MZGq½ºà½uü= ˆÎS5rlÁR€ëËî_pÇ”8‡Cû\œl :¼¿¨ëÕã÷‰¹¸PǰÑQ–ЦUmë‘Ù6.¢óý¤yµ’ÿHtÃõXåØxÙâÏlçÓݶÞn©Iò=¬éч–Ûrëxè;K_•\XRäü¦~…$Ú‘ÚŽ—õÆëÜ”1Íi)ÛuñÇ/‡xÍ”ü›FR¡å,–SCñ혪$ûCq I&âm´Å•z.n·¹æêbêqgƒæ÷ êSj±¥!8K}æJHÂ5Ôבc/ ˆtµ6Ô$¿õɈ¨ë‡iù–vK¶]ð#¼ñ&YF6˜u¡7­@—yOÙ¹zÚ®‡:X»ñÖqD÷þÝ[Ù 91qyˆë)U|Wb²Å“Š"¶/±„‚ŠÌ«+^cœ´—wÈ?¼vÄuŠÃR“Ëg*´ÛÝ<ï¦'b>¸ü Âû¹úȵ½¦5¦ÛƼ¥uæE7! þ!zěˌO`ͺˆÔóS€ëæê‰›?ÁŠâCl˼E›-qD>e1ïçê%Çv>êZén¤çj>Ïí÷Ü|á1õA<3­á=BŒY2KE]äë#yxmàê‹ ˜õªþØÊånZò¼¸€©køšf]¯žà¯»›d“bjGÑÇLK ÌØKôµ¸û¢¬EŸlñчތ<¾òfì9ú©-ËÅÇ/²-wÚz›$š×£ÌÅMÏŒž=—ºhÓ6êŸQ´6—w–‹Ùý&×cÝê/›O=¸|·ÌÒŸÍ1ÔÇ­ÀoSñÀøyÖ‹ý1¿îyñ]#Ëz,]²~Èî&Üï©‹\4¼NÂRêÉé—w¸ŽFÜü¤®¿2óÂ,’iÓI*²ÅŸ YâºìËsÇ¡¿¬ ð›×!î¸öÐÉì~«j‹ÜøùÑYmBÕ¢³¨Ãs³ù÷W™h;w=¼¾߯iCtÐCqYöâ癣éÂã×c®ÙóúÅå7®L|^—Z<üû¸|óÃõç#ìñû|Ќ㙇;½içÓßÒÇ<Š–·_@Ìÿìÿ<¤É:êû¸‡û)·dê>§EÇÎÎsðõ¦cü^ÝþȯNºƒÇ½c{Þï%ºìg~O !¦a]¼§ÝèÊ‘Úuî½ôäV7bözuºc8É-ÞŽ¬@t÷¢ÃËŽ‘|_N&û@½þßo"¹ÏÏ/vŒÊ‹£óÉçtÿ‹Ä·Q±Ýi4Éêݼé‰P)|%Ý÷ºÒ\¢+õbÕÕÐÅD?uÀè„ýI~•®ïŽ*Í7gfÛCaEëˆþ\ÿ–f‹¯Œ>±sTô *æŒÿtc¼Å×MÈÞKë›O®÷l9uNÉXÔ9-ú7Ü/ká¶™7Ǭ3žÛ)“¼+Zïï-©ãÛzgx¼­u9¨f õ:×áû§Sÿ'®+ïM©éVøóÔð?2õi.þ|ܲÿ1eëÂ;ã®[ÿÄÏWS—™5¦kHáx‹˜û‚Šð~÷“‰÷ÛzQ—c–î»§?wýÜqùùìe»/–»¾‘´EhonÜÔeè­àœ6ˆóLˆÍûMô}S—´:½”u·ÞÖëq’d~Ý›:©míxjȰã¨ÏÏgç#Iæð×F'[òÜv]$Ç{YBÛç—ù<á~^ÐKÙß¼,Šäî[ü¼úôܼR»õsFûÝ‚:ÙÆM]¼—ûÍÛ~Ú·óu¨GïÙ×ïŒ&…qÅ÷©GÍW¿ƒãÌÓ}n<˜z“d9Öiû—«v?Û0ÿ!??5½‹Àÿœ‹GÙ`k;ÍÇÔ"¢ì™ ÉBü¹|É;=½kïfµøù×îxnÈá¯Çôcõ¦•FPáà5n=¦evÝn¸7ª |nþÊuwH™4^FCûÌp.˜Ë×—Ÿ\žpóÆÕ÷>]]ë ƒ…Ôñ’KðDw}$3¦îüQÝÏòóÈÅOpmöK‡@i!?æ<.äŽK…l}¾ÞPöf•À$wÍ…ý/’¼êÖ ÎæÆÃ_÷¥ì·…}ÂøÏ;ý7¯ˆþzЛ‹ßù×YáV£äOý†ué¿ñø]bú³`ª¶zkbhy|êµÅGŒjyòi ’9¤ðíÎû“HÖ½»3&)Ç‘ü ÝJ‹¸¸Rò˜‹3—G\œŒ]î”ëV=ù¢‚F3ß¹C« ¶nÔŽ¥BÌ£Á–GDŸ7bZM‘¥¿¨õÇg[Cb´>Fqh™ÅG/.øVÅ6ä;¥›¯+™ç}v„›hðÚ6ê×O$†ÈC¶etâãìzÙ¹ðLÛŸ\ÝññÑë“ëí§äãš7ë\³·[ýá¹ò¢TÚÐk•ûÑ—:.¿¹ë£në­2ïóÏQ‘£'òy—·1®£E©¨èî»oƒ3º‘©¼”Ë ZV8éÈçLê·3Àó9÷š¿§x{àÆ2BZ%©tã^ãRÖçZyö^EiØs¿3?S¨@¼}ÔɬåÔu`dMq¼žºb~LäÈÕŠ+«rã¥^¶¼&º×ÃW?}$gó”Ÿ×sþ©1®:õ²—Ïg¡×–Ÿ}þn&Y¶¸ãƒéy󆵥võ4xÏ×·> Û’X5¨“mþ¹üÿ7.¥­ÉyÄ˜î±Ø¸ì(W—Ô1"®Ÿ ´?ÉyµbÕÖ·´µKñóš4tÚNÞç:S{ä±óÂQ¢ºÏN‘Ì$ËåÈnóÇÅxˆ¾Ù§ÇïIvÃÑ×j÷‘‚„WºmÐ} 'מ௻prë{×[t²¾Ãqç?_H~—²©¦³|½’œdØæáüõf·S¹Í¾þùùå~ÏýŸoÌ©;Ç%ã KW¼° ÑÛ®—Œ[[+áN[*HùØ59•Ó?’u[’|ýÉ5^§¹x8UŸäPêùüÿG§³1^Ý•m5Ëö²ø'«Zôœ;®žr¬O{µŽ$ºØÓõü¶^  &ôØÛ¾ýr’´rÚ̘‘$×Ú¦Ål#Æ®GÜ>†QÑŒ‹'Î ñ%…Н¢8QÚ5ž¶#™¶ŸSßá¶ç¦œŽ…ZÅ‘ü«y§?±ø˜çdó×zî8¤0t²õF-ÉýÊ/ìô þøå<‹Ÿg¤®å|Ý–·ôÖmâpj_K2Ãszb°nÉ£¡“¶,õ»Jô.¸_Ð¥ÃûMUâxݪ¬Ÿe}Pƒ–ʱ>ÎëH+”;¾Ò b¨ññ£âÚRp¢O½¤‚0~\†ö&•cài*té© ΣÇâ÷uî½ìÿ·y~dÆÇ¬øã°Ò!¦Ò®$ë}è«Jª“,ë]vÿ+¤H?k÷fÏhás¹¢yÄmþ¸vx_^©íÃæ4ÙKòmû‚${¹¿jh>ÞÜñ¸óÉ{fyv‹ÜïÖéì?jRh‹;õ}é6 g"’@¨û9Œ–õÒßSoÛÁÇÕ¿_û?]*<%Æ›;8fuCÜM¡u…nr×CðþJµklï²8žú)ï øy}8 šqqU¥Iˆ¾‹ºÝ·a$çÖÅñ—Âæþ;N©uù«Æå Ÿ‹# °nQ÷OJ’u×±¯``’å{¦æy¿Ú–>Ô¦ÛFæüŸOØtñßëÛ3ìPuÇ'ÄTtµŸÛµM´Ü¦MЖ$çÍï/qÎK¨àÂï1®Òê»[n<¤ˆ:];c’¢0íüÀ†÷¨Ý7[_Vó#¼^éN—ƒ´EçG¢Ø¬ÕÔnÅ€®cë¿§î¶8Sû¢ˆðý HnDjÆÀµÿγÔë¼óíÈ!N|fÕš«>{!‘ÚÕšþeá~ŒzGžSQ‚]Ì„nGùøèÇÝ “L2;[Ûʪüu¼}’ðv(—/Ô~û¯‘Ò,}MñB´¬±\êý?ÔÞÇ÷æ–a?ˆ‘jθWDtÊÁMRÕFbjÜfGëŒUüñ ÛånZ(':‹[= »M½1ß§?×][øœ ÏÛ-ÓõH¯3Α¬Y·¿˜iðßúä¯Ã¹|¬d¿ð-í¸tñ)û.߉~wêŠ)ã'PѼ&½"¾„’Ì~¥Ô•« #&Ä×GjrÝÜwÞ¿u*(}M½ï´ù¶ c_FS‘­îù¸·Yƒ¥õ3¬Û‡sùõËÐèfÃo/vqùJtoýì¡}ÄÍ31*ÎV—¸ƒ›·ó ×é'òãËÇNT˜º¸êí ŸˆùpŸ_Æ•âç™óîø| CƒÚÔ4›gêÙwç®/å TÔ#ÑgÕÞpþú¥íjº—ºlÈ®]9f>ÉÙYm ½ykod( ©ètûäa¹­¨WnYƒ÷:­b»^ê#>¶h9ÉÜËàÕ”;§Ç\þéÏ;¯ [¸‚–ƒ>å¥T1ݼSŽŸoÝçìi…%…^Šª×‡T#¦)cšÇT &yjW­uPœ9PÿUw$ߥpå²VÉ~b\è´^ «F¬Nóu¥ÂÑu«nEPGy™«-?ö£®9ã‡n>½‰¯W.ŸªÙt“×nœÄ£çªû=¨3£§Ð;®IÁôìþž6ÃJÛs]e–=èŠÚÝ×“Ü —›UyÒšdMžÝpÓK>XªyŸj3É6¼ìÎÛ-©ÃÜ:Žå:Iv¡u Œèÿ¯^¬àEt-­Ë4m_Êú˜ã’WnÑÇ{InëÂФ±­øñx'=5¶Sûó×£e{n7{äóV“v¾ ¦öÅß3áÆIëÜt\Ñ¿™dú4Ý9ñÉûnÝF­Ådš×i›Û÷¥ö¶¸‘Ìh}Á[mƈY¿±eìV¦[â0'ÚøMù»NÃbIaÙú pþ܉¾¿{ÖæÆCƒf.¿p¸@2»Õí÷‰–Eœ³joNÏtAòÇLóÕõq'…¢ZâÁ S¿G.þºn‰ƒí¹ꙸ»ýf»İæµÕhóÇâ¹áªV&6!Fë®`?êu*1¸ÇÖÄÐ'úCÍ&ÜõR‡EÃä•5Ñ|sòËIE§ÏÐR¶×ÔóbxXü==îó$ûuØ“]Á5‰9©x= YΟbtËGróHƒ;„Ŭ{¹:t0L”ñ”èÔýnvø@=lùÇ;¯×ùáó.ókc¯ÅËÛ“·ÇEŸ¦Îø½kúϺõ?es¯—Ÿ¾f\åÏëÕøÌ¤—†d*ÀkO¿uå”1}Öä_Û¿¤’BŸ¥Ñ>iÿ7ë.Ë€—$SlýZJ0õǸ2¿™ÖtQ¸¥ÏžòÉíT(JŠV]ÎçkÁÝ`õÁÚÑüñ¸|÷{}Jqôî`Z^{zH ŠúÙ}͸²³µGü}òãzdݘª–ü™œœqÄeW/Tè±Bù=cÉ©T¥oÓ·Jbp¶ÜrØŸO盟SË$… Ñe\Cñׄfñç³ûjýÚe*²å1-ìüL5vÑ>ñÍwV*?‡¶çýjîÞpcÉ91ɱŸ¯›¢Ív×?YÂÇ-“çÉ=S‡Ò~ëjMtßNÌΦ™é(÷"ß³Mù×.¥<ü»J?ÐòÕþV~óëulö[½xßT¢[èI/ðç¯ãø÷rÜËæüñ³bÿZo|Ð@MHaÜÚUÿÖóG?òfÌA>ŸP$»_¶tõ§ñÄ|Gº}Ρ“|C¨¨ù-§ûÉ/‰î¤~¢×Õ‡Üüò×gØZ“v{WùÙî—›quIEÆX<´ôW<òáHƒnÛ¾_Ç}®lÇÝÝ ñDw;éÒÒ«IöŽ·Böå}dTnö .‰a¦{ Ç”Ž|–~:bb¿©Ô·èú¤_ê£|Þ×k’>y™zC/œ¢•Ÿ·hüéÖ¯«,äë¦z´ÕfÇñº“§Ž?ùv]—$Ó6~Zέꌹ=’(mhM€Ù´Zí Ìé=—‘ÜNcVºQž‹?/>smß?ËžQÿ{µ²ßøxë;ØNéK¸:¦¡IÏK‰5$O’0¼qVáÿ3?cËÝ­[¹"\N§®¶ïÕp×Áå)Wg…µottìaÑü^ütNüúÂé!7ÞÜj¶ïqèš-òßøà<É;pqoÙ ÁÜ8¨Ý1Û÷88ÝÃ:Gtm&¼þO&WÏÜÝšÓM­¾›E+¦süY$3äõ§=í'c»©{võ¨@ ‰¾Û,Žä¸æwü¼'èkŽ1VþIEó£FåÙKôKÚ‰6öTRû¿™§þKŠžMs[ÿ´5)ºÓÃâÄz’ÌEꂸԎ´”“u{s&ɲ=gNŠšïé#Xø˜zÆOаœ™˜âšä$ºIÕ6 l+'y}XŒ‹ÅgÛŽC]ÇùL ¥ÕÄ0«ÓµòõŽR§A;êl¢žÝUŽÙ¤îéFinP,÷~¢‹Ÿ$xYa+1w¨l鄯‘<Û÷ñDúõ½…ÓRJ§Þý'óï×;í®Ñøa,1]Iß_}ßcb¾\{—káj‡ßçÝøs~ÝžS´ZQuuýß‘D?Ä2[3öÌùQ?Ž8D UnÝÎ\?Ñ5X\õÑù»‹ûÛèÏñƒ±r[õØiù¤Ðv½40~RPŒË¢_~´ÌÝýÑÔ©BÃJ+ ¨hR5§Àb’wuý™®Ý¨ ŽÃ—_aÏYÞ'SŸ9¶¯èS·×Ð'< 5.j7Êq8ÉËœo픩›lѵ•a‰.ò­ûXÝ}îú©wÈ›ñDqÔ÷æ•‹äþ}ê0Îö|!&c^YƒɵÅ?7~îüö;}Îþ‡z<ï²mÎõñ$+ÒRVêSÄp4ñƒ›QLãšÕj®H&Útå‘›=©ß´o±Zá"b®Ð ±)¢‚Çßóšs|œ gæ_Êõ‹jSm¼Ddû—ÄS×!Ûbðwñ㬷ùœ‹z‚¥¯´q§S¹ >_qü烣“fÛM²ÔaÒJ­á’”ËgZ~á§Ðñï‰i«µ ´|þÉ…|‰þ )ø3~Ó×-qüyõåð½uÂè±i_‰¯õ/ªŒVmÿ÷}8¿WͱÍ#ZO¢N¯—œÜ­1?µÿÖw’ºŒß;ÿvÍ$wvöÍ%‰™\¼ˆ¾Ç–'Q-‰~ ¬´5O*ÄÏQĈø'lr›ý–˜51c+|s#8¹;=6¥–ºMk!N^áÅûÐÔ®íy¯œëĈëÔ•=±µa’e¯9vþ0ÿ¿–õ½øþ1¨Ù~úñDÚøQñ~--{ÙZFƒ©ÃõV)éò>ÔÑúu×DWüu¸!$³}Ç}Ý—…“Üõ¬Éï· 7äPm¾Þ‹’?—/f.ŸO¨—ëáá°3Sn^‰!ÂÖŸd¿:]eI”3õPwÙÕ–<ª7§œ¥“ uÓÏV{Y|Àº˜Nç¤é´´ÃÏàÛ1U© ö_Çô91üqtxüåã§‹Njômcyê}ïYt`‡kÔ¥Lå%GWy[\¨:ÃÅ…«{Ý—{ãÒ.éÈ2ʼnK[6§ÉžË´Q;[ï ümjn½¯©pçCõætóÂé–®…õ yÜuS‘¢~ïQá¤Èv|Þ:CLëi—i?_P{Ûüв6Ýàô›–¼â<$3Ù­ì˜Ù}ù×Û|sÂÜaã¦!ºméñ·&Íãã”û"¯R¹¿jê€ùÉ9¬¡6цÚðÒۮϣ^¨£mþI¦þБW~­¨“-/¸x’Ì2æeƒ4©sÙn9ŸVr:OEÛĹ[SfrõBò<­_ÇôúW‘Üûy}CÜGìû˜2bòî}ˆþóÇ>ðÿݦZÿÈ>ä2mêìzÜ­KMoùOQ‘yí¢"Áÿzˆëè3FÔ;ÍòíoˆþBk*·iˆfitdistrplus/data/dataFAQscale1.rda0000644000176200001440000000133512772503243016750 0ustar liggesusers‹]’,ÔÀ¿Î™’+&*›ßù#*I*ª{’îd·ûæÇùÒ9_çlwœ_)?“QkØFcaJ#jS”'ì.?B–ÊD#Ã0‰É¯º?¸?zÛ{Ÿ÷ÞÞííùxœÔ Ð#‚Ah3˜C[í2j£E0‰Ýj²ÂBâC8½ãè¹ÄQØ«V!¦l, í—«‘Ü“ù´®¼Å&Ÿ|:b,¯ õ´£øˆòñ”¥3‚ØžI*:™¯;Q¤yXú¥ÈD€ƒ¯? xÕ õ¬jšÒA³Ï€†W—%K6k@_öîh×·C~ÿ»†¶’Z¤¬•Ÿ%Ü ”:ø×7ˆö’…J™Zì…P¢®Þ س•.…c­H9åôêlFÃ6‘?—å>á±¹S‡üE· ×Â(䯶>´!B±öÆÙc%KÒ¸¡ÃB0L @âÿÿÿ§ÑÍLÎI,F7“+%±$Q/­¨ÈûÂDŽㄚfitdistrplus/data/dataFAQlog1.rda0000644000176200001440000005730512772503243016452 0ustar liggesusers‹=œw<Öÿ÷ÿ‰”’”ÌB’ÕʨMöÞ{o—=/{o!‰ˆ"q(%Z”­RD‹’ñÓûó½ýþ¹Öíöº®×õz=Ï9ûyžs´.ˆÑБ‘í £ØAI¶ƒbû%åŽír2J2êígZk o %yMg7;Ñí·ôddtà>6ú®þëc ÑR«„Þù^-vpέK»Â¹ßøUø ê!÷Ö„Êsû£µ÷ë\%zø]nûrLsäO(‡°£¿í¸¸ å§ŸdWÄ"xŠßùÐhIžóBÕ¼?[Vk7ä>GT..·~D¯}+áëK/È2¢UÍ–„n²¦Í.Ôݘ–xi=$ƒ€)VžYœ©Y²ßåꯌ@ ŸÎiûÂrQ" E²¯0ܪAW> G!ž¢"duÖ .+Aøeg úM(! ï4#ÃÈ“¦òׯBE­ñçûex~?™Ûîý?!2@*4œÁ =¨3uulÑã¡P«¼N\õO$6NƒÍŒÐíéåu´}ëÄ2Pp=Ü 6U–›Ž7¬KƬ${±%¹Lô¾PØñ@…yîôÞ~|ñú$_9Sf2ƒábWL.ûc©§Œ„̯¨³fµ{sxº|°ôaB;¶åϪ!š¡ÔäöÙPðàI ¯4ÅMë‹„ª(p?U!ôõ±2:s¼P¦\=…Wdk“™61ìTâ .¾L04éWºü¿™<ï,S/’n9g `øZ!}¥V4cô\¢™;V´m—Ø‚ÿ@ÜžGmæéˆVÂÅœ™Ù˜Û5F®°‚}§žfÛCbý`Ê…ZrtU-/? ¾K†]ò×ÏC®£û]n¹B°¼†ò½ƒ ¸#¼4è GT™Þþr÷>DZj /mhƒõ¯ßÌêòà&!6M°WDSãS‰ukaÇ”ûÛ¢žìœ¤•²‡Jڌؖ’ÇÈ‹»Üæ à÷Á[ÔOÂÑgl),LúX[ï´b½2ö’;Ýõu7¶Ï‹©ªÌý-8mIí²|ú”ço>«D7 “—EÇ+!çüý¯bþÜè#% T¢fD!Áõ ‚ÿØ®±…@?W/\+€)eÅC9Õ ìOvX6@ÑíĸE"hÇ$wÑãÌQÌì%·M‚+‰'?sD4€µƒ¹Ü{'T>?üYÍV OÞ?&;ãróGNXF<†¤væ'³“íµV^\ûÂÛ,³y~bh|Ø%˵RLÆü„é#ß!½òÅ{J-ˆ®&ÊÛ8 õô-wŸÛS(tË^ñD)–6vï¡© …˜fª Ý…[áÒQ'(95Sâ9„6µÇÏëÌ£?Ó™½Ÿ¢Hy#¶Þ6>S¥Žž—ú$†–«ßæSG0‡´o7;¡ͳ+Î;µa².çâNÍð–ç–³DÒd=ùdÍsÌû÷í¡#%è`ÎòY £‡ –mE¨Ñ_Cè\UEx(¤”yQ–p¨'•ç:Ö„í]61<•å£çCL|z{ñÍÔxÓœ,ßdG¿·Eí!‡Ô+´¯^§`u[yÊ' ’üà4z¾3Îù¦ûbº¢>7_÷(Ñ}¼SÌõ扇Ÿê¿ð }uÅ­N ‚ýKù‘4»™§Y*…Ñüvûˆ¿ì&FØŸvó Ô\0òö Íúô»èy¯1g Bd±NŽBòï#§o.œÆ`ª^ÏçDZõ•…ZzŽÞœü£“‰©ÅìÓ£ºª ÎG«u£* =¥MB‘$“>¡è£ RM“ƒ…¹`óÑ1fü$££Îˆ½ó„9·.ø’Óºô<‡ñ™çÅŽ²˜þJ—¶ÁìÜÚ7Ö—ÃÑñýúÓÕeŒìºÔ¿âEŸUƳ¸!¥ð—Ê›wFub¿cØ ¸vª-dié$¾ýUs®Z bý¤È£Ù»)²fÐÝwñÇžc&àæ²EÇp| òó†uChöC:}Æþ€Ü‹XÀÁËýs5e-{,1È•(g;àwR¦Ÿ¾Á!ç>ÄEÌ|Ö±”á÷ÜÍBqo8XµZN—«cñÎw-Ãì0mN†Š½_ÒŽgÆË™+`j•JÝ£À^0ßoH’ñè¿p[™ù~Z|)^©Y¨F›œÍ öc}?E™&ù›4Õct¡4v5þƒ¿¸< øøÂ¯Òü(_?|r÷þöyBq®nZ6ôFËçv§ØÙ ±FCÉÁýÝ4FªühíK—FUóze=¦%tÐ?üľ•™ºiÂxþ‚Ìsî>)ð ù¦Lð‚LQñÐÆ¤hˆ=‚*aýÚ-¹fùžß}ˆ¹ýé/äÈ ¼Î zw#Ñ‘YÈÖ¦N»òGÂæƒo½,1Ÿc|É” '0/¡üÔ 5ˆfau%ÇèŽX['×YL· ‹×ÜXCGåEä<Œr÷~ÏUW èÛÅø°è\Ñ9ì­Ç¤)¿ÐûEá }qž¸wc›”º©ëk‘ÔÇ]]ê}”à Dä1êàL‚®ø$Dº·GèïF¿«Eä»l70¢ê<Ÿk…?dm…ÃüuÐd~7íìN‚{<\±g‡ã¨Ñ¢ƒrÉÆ~®a¸a—-¹4dæ6°&MnAúx+>cŒ¾ÌóßVÑÝ`î—ôH:g¦Y,²‹»î´ks9ßÉ^}=ƒ‘ú½[0z9ñ‘O§/f*)Ó ­Eï y'J÷àÕíá}¹[æÜÅ7{Áç·êMýûaI£ÿ;}—î{±êW9—„ã˜*!Ÿ ½˜—äÿçÃÔe¡“íŠî]©Q ýþx¡ü­áwZHÐ_K{Ó|½Ê¨xÏm@Å‘“«K$%(c>äL‚‚__O(YÛcš }b|»)”W¾Í“ºŠLƒFgë–!£On,ÍÒS›]ðˆ4ä O§Ь¢mÂ'=IHþa¯°»•r[Öb–×®£»‡qréy*(8Ãò‚î/¤ »…ÊptAø•¦Ÿûè ÞWñuàµVðßáÎñ$©M^ÔŽ9>UGÛ>ƒ:ç9cPŒ5½À,á¦ó‚Á/ë&Ù±îGP* ˜|‘4Êù&,+Ó!-%õÍèojˆÚ­{v¿ÿC (œkÅÐ1ðoxÓ0«CéLNÆ4žž Õk¿~XB\ Ý5ÁmûüuA=C†Vw›ÿ˜‰ú£“Ëàqì»tá—=è{?¥}à†Fþ¸Ï;þ³Šú3ïA+MÀ´LHfɸßF5­:>åì—ßAÜ£,¿J>ŒùÈøÝ½ï汊y8k@gÏéTú±pâê*Õ‘ŽÈ>ÛØ“¶Î™"&mJ eòÓ ñ‰š>ÚÔ ã)ƒ©÷—K‰ª”Çv!ÏBœÛ²Ž£‰5µìâº'fÈLÑþ.^d§ÇeZ<9iÿ¡Ÿµ)M'L½_¢¼h#ÃWÅ—Xh)äª0|²þ ?LPÀØ,!0|cùí<_Nzb¨ë^ºöP Š$¸çí'&{Ð`€ýýð¿_·×£8y3íÜG qæ• æØ ÁmUS†.ƒÏ¾ftܳ­Sº| <0ÞÆz×G]zTq¸åxúO2dªíŸìÑÍD_bÐP£g1ù餸¯šðžÍÛ‰µü‚oRF4:üb<› Y ¹|¯´MÐô0+GÌI”¢íŸ„ƒ@ì~±ÇlR9dÏ™´_ò Äôï6-YñUÊqa”·­.Ý›U ¶Á$ƒ’T¯Â]Ghp‚ˆuy¡\(WªÙ\yr¥r¯’ÿy %s‹" 35¨ÇDZ—æç‚bþ-•KoËýc"‰ âhäuåİX2_±^¹¶Í?Ì¿ ãIè±ôxµï:-z›úÞ|†vaY{T˜@ê¬iÚÈó§#ùÎpâbø÷ØíºÌ=zÁ­Ö ã™V¦=Á*!ºôñ×:df±×Õ^‚Æ­²)L¡ÙtôÞUámøŸAý0yžøÈ­—bì> Y ²!+w''Oðˆ©Òîò:Š>Ó:?Õ²Bèé|¿NÁM<ž5õV¢»}|3ã „ïkÓ1.¨Öâ¦}H„ä_^ÍÛºôªBªÏ®Ïhë!tÎe_&&>yÞÑûm>ïR<c¯6N*&aPv›×nÉ«˜ýÜ =¶1Z…ÕbÅbß%–Aô|sõÇý+CÎ>/åt§ãTÎíHªÄoË£iNGñüÛC¤²LþuÝúÓÝ9ˆ›õ›•…øW‚çKì»0ñŸ*¶µ@¿â=ý=ç}1&ÿèmá ðšÚ'ø’¥bã'sÅœAùã´\—àAˆ ÛÃõä!HŒ¢².b¸i^ ¬í»†ƒÇ{Oaÿàp 'xQ¾§Žš» 7èL,è€ØÛÌr™e"?ª…§3eCaþì€wZ¤†oˆ²U¡ïuú×q²¨ô”HÞ2ðg››v\‚XåÑxÞÊÞ8ñ볘|¸°¸|û=z+‡(¡ÝÒ¯÷Ðo怷rÌæÇ`þm?ÖðV(l ,ºil£ŠÄ¢,ç·s¿á´ôvGÖA}÷ªógˆë¯±?´’‰†'6ù$ðò×6:ÂNŒ1|¤â½‡ {S•ÛÞ˜}9ø³·¸„U½üncþz*§xkN@´…dÅFàr>mŽ&HĬ:ý®Ûèð4˜!o£3.“¸. [A2Ÿü›OÖ;€xº5¬ý¯:¦ê>—‘é“cé‹I1U[IŸÏbþºÓJ/g.†¿ùéoi§Dþ!ÍÇß÷£ÿøOÖö†*Èë“<Ä&ÛIm°ó™ê(qsÞ‹ò ß™ÖA—V R¬I’n¥y¼k©?¤õ Û?‘óÝSóG€” Å*"çï9BpÅ,ñ3†/êQ´‡0½›4s‰§PWSîl8ÙA$~üã¿!? ‘º7ÞÒ]–ÁÄô‹‡çc îjfaBV…õ×xõ lÊŒŒ¥"ÉdÏ'õ»Aï·™jWE%>=’,⤖†¤×éfææ( "ÝDì„ïœüp<RuCïfQÌ@Éÿézý¯v¼òfI¡ŒC@ÈØÏs{O¤;Nq:KG/£Faki9H|wð—DyØýA=Üübްk¡Þ—}qOs³!È„G©–vH+ƒ›¯$tÁ…íËÄ©FˆÔñã«ÔÖ.Ì7Lî_„Róéœ âûn…á¾d%$x‹?R WáÅÁµ5Œ³îïšcsOƒéeÞ.(®ÞLu\Yªê*í, Ô08Ö„Ò=»H‹ ¿¹¥‰‘™rd˜M¢Xu!×¢t,&ð6Ä»Ö:¿>Dÿß:Lí_$®XAüMsο*4Hv^gñ!ø÷ ÛØÏy‚3où Æ˜ ÆeÛL7~âDǽ« w¸0ºëâTŸ%ú¤f;çÔ§€uæ#õë'x3 ö¼ô§a™À‰Gpå|—uuÊ2zþ9ÍwòXÉ;‰¨­@„Çc¹…H5Ðu|·Õ7ú«o›¡‰F¬Áõ#4o~ZUuÜæboÙËAЋz­ÐŽg¿±ÌþV°‘:qrçOˆ?ùéÕþg‚á`jïÄc³mG¼bôî«Ri±ù;rK‹¹r^­CÞÍÇ·9˜wõ¤ÚµkèÛÊõëÚ¤DÎÝtµloÿj1«oH¿Ø"¼#ò_ôï¥wÜ¢ÀåᎷ¶íEóÉ/¥ÍFN&ÇØÅú|«"IÔÌ·¯lŒ~ŽÑwY#¸#SPÏÿ Óð EÜ«Ÿo÷ö|De¸EÒãùC ñ|KkÏ’O΂è䂺 èuØzékäˆíõrlƒ/[.»YyÑl å8®<}s ŸWŠß8a…` µOõ ãg”[ºo³ª{rüµVætcÔö¼æ?ªP±ýk‰Áè>ø}ÎüH7;sNa”ŸË¯ÊÉLzèüâž§>ø'Å?H•ÈGs©1©Zu4º–är_i?H*Ô,¾­÷¬&µÑqÛ©:'ybî%×ÖƒÀî%xôIþ,±`rHa†ˆ ³ž¶Î)¸øÄÇ#=)"RÃ9.‰Å©[/WäÁë0ÓÙ»z åÎÙéö*Œ÷Uñ?]ÚD/­]âÏ?ίÖbÒÝd.4÷?s„|sð(ÙM¦‹$ô×ðjEgÁ™:›ºhð•w¬óÞÖ½AqAúï-±TX>¼&%.}^—®\Ã?n_Õ$?ˆ\Ó-Ø×cv«K’^¢_º™Ëà½d¨)÷³_°k÷fï.ÏunUŠå­€°‹©¹n›,%i]‰J§þÚêÇïVBe$xíìû6È€q·ß ¥81%»£}þ›3Ro¿Ç@‹ÈÉå==g±´Ûü7†T:Hæ’AÜÅ®ôÁP0ȧ“tñáAw2íÓÔµÁÐ@¨¥cŒ†œï)#?[ƒ 3ïEÕÆ¤Ä Ž?»¢ ™Lf¡Ìo^BÜé›Ö¿Ô DeE–F³Òr.ÑËÓ¢}îSVz‰Ëèš%¾ ¥YѵÁVöÔ>ðfiÛü)­…!ëï ¯ƒû«Ôïц1;7 U |“#øÞ· ˜z¨ƒ„ÒQÑéÇÐZûuòGŸ,Øœ>[½ßüÑ6¯0…œ<î NäßËU}·ugR×a…©m,2üæÄ+Œ£\™x4ðsóå,5cfÙ©#j!à“Ý#q•Ô"ß,*`–4\vs<ˆaÎÖú 1ôV{ÃM„nýšÏŸ¿\_ŽÐÓ€_ùÇ# {!OåàïHšûp‹‹îó/Ìɾ"*IÓMÏiÎG °K†eÖÍWGZ´s)Ñóðë­Ç1ÏOSÅ2XdÊÚ jàÿ¡?rœ0a€€cVN°ƒïSmŽ˜ðzžm\íGÄ GÑ[ÁØüÊöXõ4dwþ¢‹ÁTENlù1íz§/œ]@_èã8”.½a a/Ð4·C?co.:Út©«DBc-ƒ u?†xÆ4ÌeÏÍ¢&ɪãX¨Qa=Ný{ܘ'ï¶i6˜å/ónLÛ©Qú–BâžÕªÛæîÖé2HÖ´]›|§$½·‚׬€E‰Ÿ@„x(ßöÏÁ gÕQu¸‘9/8Ú¯}Â0ûý]v¯ fšur‘Eã%ÛÊë ”qÚÚ|2Fl‘KC´òôbIøˆõ"«.pz»8¶:™…1ƒ>e®­búVfVÚ1lþi\PÆeô$±XØryB”{MÕì<—bÏdEI…{,¢\¹×€‘J¨ä³¨4Øæ‹´/BήϷèÊ*Á-=T5‘ó6¤ó¿Ê»ñ S©(®À[ 0¼Vè1Ä>ÿpL#,òÖ²ïÈ¡6Æl0Ð`¸AñÖY£,È4ó+æ É×ÒxÁ‘ ’rÿs ¸¥eÄZE‹æoHìNÁDqúÁdLŸ¶WeârÅVºÈý~Xr]l >;mòRÀ£l™2^[,l/Þ!”‚ÜS®š¬^Ô@P—0{K é3ûM»ôàäÅÅû\£à°ö’Û¨/¼?sŽ•±3|Éé9þHB¢¬wýKEyˆâ ««âHkȘïÖ1Pš/ÙÞâÂ5qu—°â¸1DœÕ½Ëz“R½mGjËÐÆxÿ›ÙÛ‡08¦S[þ±7è×=ÑYüº¼ œ§b@‚€ýjÛ4ùœÈg÷0BiÕÿ=‰æê¯¯{ßÜï°-ÙÖ5:”KËÈ®â焲»Í³ZÁæ€q¡õKL;~’úö.ð¢»Z“%x¶ü|6A(iQ¦ÿ€2¹÷–î!ƒ˜ÉbÆê¢eôžÊ=]´Ñ¥ûø|éwBß²Nªf?d é=šð|éºe«ÛBªY?›Ç‡Hø‡BÁGí{ÿ¯ˆÛß6n·Õ ‘æ‡ËήC~Ý”@Oø”¾9l6iËg¦‹ æÁ]ê6¥z·8ĵûîoÒ¬E‚½õþðÊ Hocs³LvY®¯óÞ‚b Áv…zÈÜgs:M& 9wð<®«„èÉ.÷ô½PÆ]lwæ§ ¤[vnGPïm½x"f¨§ÒXˆ¿Úr@.£‡|B[ï(Hó4ù¹¿=²5Ïczñ=Eš~:ˆ)^ÈýVw#Üõ_½"}ƒ¸óÃv‚¿áv|×£L§bäã ?fíŸv7£ïŒvÿX›Ä*°òíôÚ…a'ú=Ä”5P‹Y§¤KèÓmfJ> ¾Í{“]²!•ýFðò‚D¦_`ÙÑÙÜoUÞmó4åÀµ·Ãh&qFnöÈ ÈÙÇ!í[=¶ádùÑOÁ§¹BZb6ôkݨÕN6£­†išhþUàbû„}rÒ.hîX+žùËS¦”j¶ÍA“±/R`·<ÅOh ³ù鬾 ½‹ ìÉØ!0öYÏð|¦GŸItAÍ£™_‡„CÕ5Ézz_ȧh}2KC…>´^—Ø@,eùp=‚Ÿ’=–]à­þ‘mØœ% ¢¬ÜáµØÑôŽ ㈊÷ÌëÍÍIßJf‰äoïû( uã»bnwì†Ò|gò[£Ç€cÿ9P §²Ù{@®½ç­#ÝyâùïWNT»òÎñYømÈTß{â²óH’ßmê¥ a¶amý¿¤¡~?’‘jÝÅrvt^’K˜™Ñ-A¨’×oå 0†ÕSgý–‡ Ò+6éMþiÈ¿7!ß NŸD=0Á^;M[‹žé±ÿá_ÉI G¬»®=â^Iö·ŸäNcZˆø|ÜʪÌt!Q¦pYÎ̓›Í~ÜJÂX%õÚ+ðÿõyX…‘3²E©“”ƒ!Ué‹ïØ–;-f¹/ C…·9%ívÜ÷úÁ:㡃Qê×Þ‚Œö‘iEJV¨º|쇬Fìˆo˜€ø$ŒFU┌gq/d0A‘Â$Hg<*p¶r?œè„Xç‡~­>ä“xŠâ m!DÌW6þIƒ´'åžænµŽ_¤×Œµ ‘sm¸L””.NJï†\Çúú/k NµÌ|9~ò·dtAbÜx[âíˆëßÉËmÖTv5–³¹ýߥÔbhã°¦/¨bêLÕhÅzú/>°é¬8Ñ/Ôlö” ¡§“@wqx¦u뽋ªòŸ–óZÈþ‚騥T™ †ÿ üPÉ8Ž™. ÜT qŠ:ï¶ÏLëŸ.ÿ)íŽW¥„ÿ ß‹„ü­¿s™í¸Rý§íã.Ê$T¶cE£ôÑÁ (¿¶sÜVë„Ýæ7I¤„ȇ•·MR¶¯o˜Ÿr üŸþ*m»û"}§T(8îËÊ/ÅO¬5çB ÷ŒÈ÷SLÓçk^ï"çÉ×Nüa|& ‘»4wðs®Aæ5¹¬^Ê.Hí|jN»# S¬š6™Áîñcîäy(¢Öë|õKÒ‚ä>mµ¡µË-ãë*7JªoÃHŽ›Ô3o#Á’ø¼>ÊáøLÙ+ˆ×Bb ŒÒ”}ƒ’úµ'>nó–EWÛjšhß1h‡ÄþqÏ!뀜‡EI?ým†¡ŒùŠ‚‰gd¿½mÃqï2øæßº$)l 9#Ë1÷Ÿ‡ˆ óUÛë νÒ1¼©6†7–Þƒ%üˆ_/ìÃÄÓÚÚÖB~[§2‚¤µï;à 0FÒ*å`ªø7ø½fÕó e‰x_ˆ·§3~ ¶ö\šqf$4PM ëmCÆU· Fèü}¢Œ©=7†_¾Œ§EšE5š ðàÐ÷FbPØ §ÞuB#Í7òû+š0õ¤ís¶†j𹞗SÈn€Þ'nŸG!áí¥©ç™HÔ­ÊžÀÔS>»öhA‹´¥í‹×‘hX¼k1^ ®_Sßñ@ë&E¤±îÏ ÷8Þ“Óà·ðM$¢"Ò'óïÔ\Î…ŒØ³œ;C±ÿz•"3¢&ÃDÏÄÀiÕÆ_œ†¬@Ùø°KVíéco1×Ú«óÅ!Té¿„>dêÊ®4XAŽ}Ãíë*àÿKâ \»#–ü$ õ˜örO¿Ù„¨,G©“!¾2ìèƒ%*<6f§4oJYm ÁËÓ¤30’ /Ý)ªœñ\ÆÀÒ}æ‘këÊmÂv5H…Ïâ ^lü^(ÝéwhZe£ ˆztn|Ø,ƒÍ™îÉvAôµô²‰ô00 Ór'‚dåÐóCíÕÜ¥ŽºCh­ø›jZÙ¶šn­¶³ÞÍ^š5¿bÌ܆8¿Ïa\~¼Déipð5èÚkñ&öÈ‹ò@Œvƒþºœdž!¾¤;åAʶ*¦ö²ðU'K=$ °?·¢—.IÐÒþ(1‰ïÄÈñ#G!°%éZñ¥n|ÕŸ†ŒÈ­ºRû|¨êÌ2©XyÙ*>º·“Cn̨Žw¿Ñÿç×»¦ ðôèž‹¯é0„Tþ•ÙÁËZgô€Mf3ðÐÝ’/…`]7(!¸5M«‹é@&ËŽÂGþÀ±7üñ ¤F5QÇØ¤‚V‘húÌUº7’Ný2Ûæ&?­´Ã|" ¨¡¾ÒÿYáá¶þ øøÛï2:ß¾:q€qÒ§Wö¦ƒeJCëå½ÈÝÿ—úÞ›Bð­|°:5hy:o}]„Œ'ç_ì=æŒ:ð¾-†À„¦ºw`‘бMý7cÄ´®ÏQo+Œ˜0LU‚¼r‡õïvbTÛÏÓÞSÚXðÕ'ƒlØI½ûnÝY„ðœ w"v#ÉQ³*-½*šõ’#è1Ui×eµwÇÁµ¸Å9'²Ý;\IBÑ]˜FÝñ¨œn¢äÞÎÎ\Ø ó]²L<`n;%•CŽÎoª™W¶y”ðp÷f-&Ùš"?…„’Ø#—ü/BÄp¶ü•)U{­ô.$xaiòPlö&u=e0€°¨}W:(ŒìæHµÏ‘(L†ûoz@ÀÜa-ÈaH ^Û°è¤Â–®qQæþ*Ÿš÷D+YmÞŠÿÂ(£Ÿ?Œ‰)`ë@ó¦ L«[º Üh^ãyâ[Ô¾m=uðróäo,}Çlïü|SnóÔ~ëØÖ’•5kÌ HÁ'#Ç*ž;VõÎ(.‚/¯ôŠ`xîË·×è¿ wkÀ2xTIl_¹c³y1î:Eî'¯ïÛlwn×§×yø›íåìöºpTÃJoÈ ©.»|=ªsSï¬ò€çÏg—t“«1c8닃;¸gÍŸÛO€ÀI¹‚Íc ¶FFÛÈ ¾ë•‘gš´€`«ûK—üìöûôÖ±:;<Ÿñ2æºT][yÊ¥ áY©CW¾€ ¤åpÂù9äDZüY> >#ÜzÙ{Cð‚ûV‚N?/îñÏpý¼:‹I3ßîÚM±-uñîøZ¶ˆR[ê ”) ^ÊGµhÞÏŒåÉpòªÞ®¢(t×Û°{*[ $Éñ‰Ã»·ÏÓ÷²ä¸©"„ý+7¹œˆŽ% ÁMn‚Å|O3f‰Cäî` Rf|PeÒÉBsÖ½…¿NèÐôÝ&©Ü£ç‚¯ýmBâ@X x9øt®ê%?áVKL=oz0¢ø‚¶óžG©oX?8'©•ïÕÿ2¼ÚÖ¿Ÿ9~®«÷ÕŒz‰{úýñyÌh™Œnÿùsë;Uz0}äsuØG¸t+tƒ÷¤«öR¹ÖÓ€}w™ÑÄZ˜¡KµZõ3ž§1bןC-eEàýuk(¶<·ÙB`ßá.ˆ¤Œº—‘ Þ »ù¹wCÂôòìúfðϧŸ-Öt@ËåíM¯¦ÁnqËèË ¥ñ§²C°¤þߌ{H…­§ì}hýâá먖mn)W-yу½F×ü¾fä_Y{Ñ“üó‡©dpt¼ ïﮃDYwu(,ø—ˆ¿ÂG ~qP,±9§6À„^+wk_Ò4¡ë­ ºËª‘à·{Œý«Â<¤Œ[Wa Nf>¨1ÑåÁK™ WýÉI÷+Ѽù9“Ì#ô gËÕþŒ^›‰3Z}xúŸ| êDŸÿÜÄyð¹¥öqQœ*¦J%ÒÍÿ;Mm[/µE^[H‡øçÉÜ.LZhVU³¥\îÕgT¤C­[\ãetà2öóû«hS¡Yçånƒ¡js¶GcvÒ‘9­—$ÔhËíÍ”Ãè)ºƒÙ˜¥•¬ ሠœ>鿀=›Ùé<)z“ º á?e„”ÃѰNõ*'Ùtµ¶f¹.‰ç=±Z,úª™8ÍAÈVc¹%…ƒÖüùœz¡ØYÞã$ñ>Ž[A™OqC3jXäýÂJ"14jaÞoø2DªÉÕ0ŸƒËîo§Î”BºÎÊÐÕ‘XTp:j×` ®5œjƒÌGÀU¸…“¥{âÉøÿí$@´`iÆÙq´Ü:%”pø8DKïßEŒ ƒ¾àsÖ£+]kíçÿÞR&Cˆ­&‘ýɰ§¿±"·’w9ÂÍÿºxsµqçãt¿."¤]d_§|ÒŽqt#:Œî_³î'Lcb¨ÂßM¦N,ÛÅ-~²3p—~ñ» ž½Væ>²XÌí–EzÉ2íÏoÅp`Ô­o?–1R#§¨çU7\U«ànŠŸÆÌ%®×]‡cÇ“”·£c˜q…îf’³ úu0þàÃŒÄã>ÇV–$ÁHèâ(†6€о ¡v¼’…îõh>dGuÑÓÛâ£Jè0m¬å÷¨Ç ´êÞ®]Uˆ~ë{Ò÷¦c#é²´¬ÚZûô™žîßþ²1‹6*L>¸?Ì?I©œ~‰ÌèO.×óX«\4,.£1°±m$|õ#ŠÝÓ×¹Ò)¼ŠW+­‰©í6_ðñ8Dª‰&2sþ@Îpë%—iH;Û7\ÇÞ[7¾Ÿê¨ƒ«¦’Žî´zè:v“¤W…Äцû/È¥P:7úõpn92Dÿ^«V‚œáv^µ%è¢l¬ËX{ù×¾ä²B€TøIùsfù¿¼Z©ôäíÚ ÆÐ…鬙èA$m{Ëͨ¬ÔDHøØBåO}(ZÁr£R‘ø3rG¯^a!4ƒÒåqOqöZˆãtOq^¿"Ÿ¯ æŽfYó¶4%_1ðõ¢´ÁÊ}p³'x’©!k–rõNÔ6Gíüü7aý„~ú;™ÜDß7¿JéîS*•%µï¢.a|‹Ë”ÍJ^úhSòMó¾ùypë½HÝ$þ 3wœÍây¨ƒ‹öÜ#,N9Ûöjì|,X«S—ËÏbŒRæ‡èÆS`hë¹ò ÂúTÝØƒ-0ZOÜG’à9é…å«`}ÑÀ*W? £Ršdâ/aâe§æ˜0ûI5jß ÜõÕü›h4–9\Qÿ^k ï—Ä·¦ Ñ¥¡I!Mõvy¥>a›y2 á«‚(¨$²xwg7OÊ:<9ˆÑÊOXn~<q¶Šõ§îaÈ=mŽÆtŒÏ¦ñ:·ã5¢5é,1†¶>©£ƒù¾s%è1VL®{A¸ “ô·òõĤÑñ:Ûý{F˜\ùÎÿ\Æùlü¸£„ù1äÍû{15ž¬Øò¤f«Ût”܃¼QÚ€[© }ôµfÂ4Øát\I éDZ…D®‚ÉâGž¶ƒœ˜¶wGmD#di¥†*ðAx½ÀŸò¼ˆû¦00:ÿ}2Í6q‡LåüÊý§ÿ›>wå.äµÝºðª·C?,N*ôéc®ÌP¯-Ãd¾år#ÍC¥Ç®6çqˆî`È«º“Ž.3ÏiB`ÌL›Æ ÄOi>X‚¬É&Ö–6,oÄÌ=€•;ÿ> ÖƒÛI;¾ÍÅ“säÕY¶Ip/‰~ÒÏ´ÏäjŸ‡ðÙ©×êȪ¹œù¸ˆIª‘2Œ4Ëšérï+8Á‘*ðŽãtYó–!7LP™b·¸ÁŠ‘ì&<Å‚@8®ëðë,ÊÐ/Q‰3€Û`mßsÿPˆ÷ Š‹Þë¯L?r ­`þ–˜¥6–ˆïñЦÎC‡KýäG0ldjéÐh4xöÉ‹ú®@p²«‚Öä jéY3ô®FáÕ„2¡*Ì(4ô]þÑ.·¨Ú—`ªïýÃ[ű㶃հÙlo‘^mhi‚›z±Æ½èœÝ`»Š´ŽÎ†ç0ŠÒ›b×Ám?·Ð_tYlþQpkþÇd,¶û96‘¢ Wµ œ«K iÌm£ãýˆîÔhivÿÅ3l> vþÔ”=é4†’þü€LI—þpgßy§:o1Ts¯˜ÿü÷ä‹ôWò â£¢jº?¤(Q‰7A“DîÓ-Úl¨5FO\Ww‡ð5ëÉ0ãã/;¯"œÄlž'1l˜Í•óêïZ ¤Ò}ýÛ×þR&¬ª•({ ÝqNó#†X¿^^”‰†´Üä† šv(-ŽøXéüÒ< D—e˜!Ÿ¼WxlÌ"Þ„ž|ï ™iç} ä©åš4Cä3éùLCwŒ}àZñç¢0D_·s^)7ߎ£U#>œ’u÷µ;ãê¸vøsÐÄEȲ|¶CT¬²´ÿ9¸£À´ÿjË›5ʽóôõKôZŠçØDs– Û‘>È1ÛºÀfòÍiu{x¶¹¹U¹é©_,®êLÖn¡M›K¶rëH ü&¥üÌ‚Ò Ì^ÁˆýJ_ƒ~îǬqqþÂ?A`W3{àQº¾2Ý^ׄ×ÂåCÇocŠÛÂê\ØeÈzh$A!݇e»u,õg1<½v9ÙóúXÝ£¯g7CŸ¡˜Ò§Ž…˜w‘Yi7÷ÔËö¥Vª„˜²sÇž®Ù`øþ2SzmA0Ka$QŠc@ÓÞyQcWÐOp¾uœÈ f¢öobü0’C4ùë…EÌ–µ°.ú@ŠtÃâ:ÁŽ˦º1‘¡âB VÅ:¶çÈkL, q™ÿd‡¡”W¹(¢!2ìÜÅAF¨ ,Õ°[ÅqKáƒ]òl÷^·Ö~´lnzsÖŽé5œÜ£+x„ýÈÄ—ÑPP3Òùk |zª~¾à~Ög‚¾; ¤‹ÊÓwPC"½ù—anMÈü¯¼02†–«@t "~Z}Nài†4g‰w„¢m]˜dM.j`Vë­f1×ЗÓꇛÿ˜?du¼FRT•ž¥¯R;1´‘î&]:-fw¥}OAó».Ž{q"kŸ>êÓÄÔÿë?ò‰9™`u„Rì‚÷|µÉ;)¼·¢MïæódàwýÄô‚×;ˆïWÿí–E³[·‘dòãÅ¡ Lxô¯ „ cµI%ý~& ›Q½Fÿ&× vý¡Aå#;PßÊÔ[ 0µÎÚ‡{Ý&iÇÓÔÔJußrmÐHA rµN)1„4¿˜•·Rèßþj®Æ#þ/þCTE©véA‘îÒJ!¡λ?Þ:úc×\즞<ë¦ñφÀ8/þ–ò­%ôúá?¾G£ž³ Û}Ñ_/—evašè»oï71CüóüþhôOYЦQâ¦ÃÆÓü<ŒþѸof:<7LZÏבA¸ÿ+ÝÄ H\˜^è} Q6UkQÎ÷ѶùÏjÈ•D \¼o‘WÑü-lŠû Q¿6Ê#!xm`¯lj^œxâùÀ2Î\¥›J‚ð{Fè20bc'Ï+•U,¸«6=Óºà—"\ÿ²ÙJïú¨Þ†²ë ÿ2 1ò´ãÖÈûÜqÅ(æZ©}}µ—0½qðÜÂUH;‘ž*ÿîH©x|(š»ü‹–Ùëëê¡ø{Øìý›ù*óÈÄùA)ÄSクÆÉ)w¯ýd_r¢ŠÐ§û¬´Ëÿ€óé»Jjr¹e\ƒÖ1—“UÞ$B¢Ø‹=Âû_Û;X} Mâ_"á÷“-º¹EÈUÞCÙ'÷<´›wO>;ÉÙ—$ÈZ’¶ýíK.>ˆ”Ÿ )lƒ´]¥¤ 0Ýßbà›\¦Qc•š¿ã™8‰ˆg­(†÷›çÑMo#­ÝزO”ðeôCúË4×ãÂQà+c¥d þ‰¥gŠ úPp(Ðã»Ò0=°.ëðŠ,jV0ù¥¿óŸ£Å˜©÷h/Ìc¾{|mV¿9КräjyôbÞÏÍ ²‡<1E]qüdºïîû‚¾*ë½¼U³ó·]Ô%Ùñ]d‹Œçù ðžF‘6cÄýP—{y›~Äþ9cSnõ§Ûˆ<PÊak¿oŽY¦‰!šÖÑôþA‡¤38¾¦wèÊ›¡Z § 5úZ)ý›)(cLýÝfÜ'ÇT³Mt Óu¤÷›†¤åçñ¾á€ø1µÜ½Tã+÷õ}Nÿ JMok:R^Ú‹iŸ·:>Ê\œ0sLžâ•ºfRèè, á‰y­ý1LÈÚÖÞòàù™:ÙžeWïè´?ƒ;yÄ÷E«ñMdÛ‡74'ù^Ñ{ „»§ï Å{BÁûF£ò$%) ~üRyšÜ$ZžìÎYið‡^¿Ï!Å‚w—’¢Ä•Ê ÷´ÚCÒóÀ×§n³C‚w’{–#'äÝOþñó$Íïç"éïÁŒ[ëI´X´evð<Äk·³úZCîØœk¤ûöýb8FCQŠ#+¶k4a9íoX_žrqïg81nZ@×j¢…*¶Fi^aÔ^±ÁA(©>rHö%¤´?Q£½œ Ñ{úò +¡ö¿ÛÁ„~êL1Ù{Ê1E(y¶<ÒÕ®ñÚÉ`Ü‹ò€ànd¼¡pP—Ê¢éÍdµW‚O¸×É|A·Óó|^äèûãj¨oHlÃ^B_`;¤J¯Z¨ÊNñ|MΘ܂Töÿ?hÉ o|§ˆ‹ƒÎÎeÁ–áù×÷™ [b„Y~þ†*dDž¼%ì ¤3ÃoOÆBþQW ¦·«PöçàäI½Iðæg:c;Øæ$óÉNïkÏ0u8Ý~\\Íåra‹mMuº-†¯Öõlaâ­ìéI‰80ór‰ÿ>}=ã·ü–žß†~i“±è×™Pò>ê&Äy^;KC× éÿ«7‡RG¦‡š<»1µêœB¿°7œùž2ò ²[ÜÏÈó–ú8w²nÈd~pbö;úYZrŽÞ¥bëåWÕaèðxå°ÀT%8ì>óƒ¤àÆ·;;Å·õå¿í§PðSþþþMR^ÒšÕ§“AÈÆ”bw,nûßMõ!ÁË ý¤_6ŠÆð|áÔDïQ-%¯×Q”~,õüöu<“ö5òf€WÑ’îa~ôu=qòóÛmûTÛ8ó÷âiÐõ²5=éÑÓTËÍè›r]÷¸bÉÚ¶a® ®X¿fÌ*»×,ˆÕY‰Åèñ%/GY‚ †_Õ^,ÂjÚOzJ Èúp¦®ðÔ{H½|H¢ûøȬº¾‘ñ¥ÓãœÔßnÇÌ*-ìô~ŽD6ÒrÈ Ì ÒŠnNUF3ýÙ?Ían“^“|["&ÿó F£è¶ïë‹ö¡·Ýð`oÕ1Œ4]~qfQùÂs{!bpŸÊû}Ù@dfcX•‡ücolMw|$Š8®`ÍxÛu¥­M!çý8*î·Nš¸‹Ê¢ò ¦Ièyœ”LÜ‹©½ò/4³Ñ;€UÞìÛMŒ`¨;4ÉЇæE*ºvh4"ê΃ž¡aw z`úO-Õ᯵ãkO¯þhvѽñõÇüö'§Wä¹Yã;Öáhí7ø°#uƒ'xî{Aáå'º®=¦àß(QáçŠIG¿¼ÖaPE ŸeZJˆý s—ýö$xІL¿ž†”7å;~«Û)qà’„p›p³S¡•б”Lzº»qK¥ùƒ_Æõ¼‡¤3˜þëõ¿V LùÂÍípW£ÃO.îzyÃ)íó¼ÄµÁ¿ñPïg·Kwúú½€=bàVã¨z…~'&×ÕjèFÌ£åÌrq£H™oGwÕ“QÂëà“ù*+PÐ줯œ«òŘãšÙe*™à3Ý©ÃM yÌó{!fzèIІ#fßµlî™ ¾²ó×®@†&Û‘XÉnL%‹Ø¹u(ƒ1ÙçhY¿óOµÆì_#ÂûL#0}¹ågu˜[Ö^ZåÄ0Û%[$žÐ¸ä~® ÌEÒ•r0ÖyüJ-Cüë2(ÍÎw&z«z-t˜{z¸'KH·Ý)½ßö€“iŸÇ–,u¬fŽAiƒ¹£Ì—P_£hø /?’,ùRvvMaìvpÒ—> i®b3ì¿!îÛ+TéLºÖÉgÕ¤Ò‰Ö3ùZèM³à˜M^Šõ}PÄŒJýÅ¢ Ìér+õO8Q\̪‡›€XcønÙÈ\†'Ó4ƒzÁ~¢xF⡤-h¬¤åü„Œ¤y˽ò¨4ÐÝíxý{;µ lÏS6ÆÜ[Þx÷wÍåóàµ;§æÝið·9œÖ.SÑäÓ°m—ûÓÄl‹ævïØ{ËRý LñØæúÓ. èÔ ñÛ .ß/Šó>Š¨È†»õ>‚·É_±Û±œ·„³˜°—öCC>ºêv®7}›ÃðÚèwGo—ƒó %ä=.ð{½Û…ˆ7´îÛø›"QtïÒÞ\|‡¶×XTô\ ²– ´{”Dñµ «jŠ*òu°ÚðÂÒÏ ¡íóܶ²)£ýBæ& Ó§çxÀX2—òôOÜÛ„¼Ó#å·ŸAÜ1»MVöŸ@ŒNc•ŠW—âSç ÷EΞj3Èû_^üXnX.µZÀµ¾°Glàù²d'[N5¤zM–9W~‡´KËÈn\ÉI›ê‹3QÒµ¾£ª¼Rþ&ðŸ½rlóÿØQW@qþΫ…³óxùs«Ò8(»âî u»ò_Þ^?±t'S>w‹@~H¦>ó=È;x„uå~§º¢ Ó]‚oØ'0õ!Û×Yõ§ñUèßõqÈùFzáõ72ºÇlý!(ìø­:0Üg·—2òä^dìê…‚'̯æ–A©)s¬šÜ_(þ¿y½÷¢^_Ì ûƒû¿_€Ò%–þåñ¿è0Ûø=úÀ6§ž=À/[Ê!=ýñAð¤yû»^»ÊE¦G_V€×kï@ mˆu[;2 Ä}¥oÞ\»Ç;×»OÁõÿܺ$šyÏæ—Gÿ„ï÷WœÈ!"Ç+tèá{ð*üó7’]⨊6ÝüŽnr¿]î¹\ƒPž# ¦-ž@Œ¹:þ5 íµ[¥ŠîÚ"ïOâÓ¿ç| 'èæŠò²!$zºÀµ^o³iŠöUAdà”rs¸Ôl*~)ÄÄ® ;’!DR‘ê‚]+D­ÐÆûµWa¶ñý\ÿiGH:“™°ÿølÓuÉŸIÔþùdˆÕ ¥èj{FÇË÷óþxyS´Ä†Úxô1»"›§0} ¼¨D.ìÕA¯H ù/ãcY–ci†¥²œ+8ŽÆbßίîADòd™ðoð+°ú£Þü óŒ¨Ï1ñ>Æ´Ò׺÷Ÿ®B¸±Ë>íîí‹«°ãí³}϶y”A\o ÆrÛõ¥Mp%óDøF3ÆÎ3…4ììÃ3»?q_„üüîEÊÀVŒ [¸èðÊuè‚?PÖ‚·Ý—Õx›bĻ+ÙdßsîìØ¹¢þ+ƒôBíS›KMu* ¿ 2|ëÞ˜öÀ tX-‘d–âÑA/ª½v%h¶¡…åÌÚ‡¶$ºû­4x-^F8x ‚âf,;ÓCx˜ÿI³ˆ¬‰»1×ïÁ»l{.S´ŽÏ6‚4TýÉ™¡ð&F78ÿü5ùc9 ùŸAoõWÕ§¾@Äù#¡ÃŸÐ;ÆkH¢³ Õ™Þzóbÿe­ìm1ÜôÌÒXÉÛ®^‹’á […"èÉe¢üö¶ zçyþê{†H;e½)Ñ6×ñ¥ßGКâ!§›(¼Òd=¡ñ|ãIíG™0vF-µG’ž²XÚð™ùÍÏM: ”zEc¸¹ÝÇ>°k´Btúñú0Nð”¸ò©/ê/øgi§ÿíÃ%ŽÜù’t6>5yj7’æ9çk´ù0z_ÊÖýY.$L¨°â+Ž{—>S£å@ã‘=!€ YLÉxÂõèÖ?Ù éú+áþàÁÌyðÙ¾08|t\Î<â$ 2új0ÊiNÈÞ*I"§ÔÝ+0AÓyôÐ×c¶ 4ÝðÁdUÜñBõÝ,n%çÕ!êÇÄ_MÀXj£^Ot7<Æ\p@Cb6æz=ÿ¢í(_ˆ æKöXh“cFø¯3|Sç Jì°¹Œ~zœ{fM6æ þ¡×¯‹JŸ/K‚Vßõi 0µ|–º.ÿ¬\ Â_å¾<Ö6>…FŠGØ«1|¡Mà®x,ÅåW¹6c²Ÿ±þÒÃp! îd®ì#$¨¾ú t¾×Ç{ÜöCoûâÙ´+íÌ9ÓǺ’›•}¨³ ÀPY€ÚêÆ*dfhIÛn¯kiá›-’ Â’-÷熺tk5"“‚ê«B#5›}@»™Š®±‰dÇ–ZлôèñŒÛá¯,ÊúG®ýrÊ>ÚÒüGþþ¡ð3D@SH5º8Ô0ÏV^·ø~ƒçÅ,ß5]U“j`G]òv#WÊÑñ–ÙÛzS-tVÝïyS€iîZþžol@F<ú*ýp"º>`;;˜i´7VÇ©BÚbè¿sa¹3]†›×!ò{Ý®¹ªp"?}º¢ ¿üÛ [nèzxëbiS>†?Ýùƒš+ üÜŽÞ`î†MFÈñÐÀøÕÐldhÔ-Ôáýè œÈÜ7ðI]Y®Öy²õ£35iÀåä-ðü¿ú¾xZÓ7ÃNª`³s¿ópyÝÃÿ(5“gTØiýBÑÞ(S{J è¶äžåнƒo?€ùJ’©¸“Ÿíˆb ü3º¢Ô3"r#Ca‘„ÉvÍÛ1ëÄ úS<Õ/­÷Ī€Ñ¿.´±ÿ(Å©»_÷¡ñŒÈ\É[ôæ~Jé îKÚͦ=´Ïle­m[6²ARãƒÇÑë„`ó‘!Ðå¬Í©ÚœþE/û…½À<-nt¢yz•í#݈3Bo“(VW!Œ‘ä+b|ãι³e=kÃH-Š€ÆÃhË*a§¶üëêþçêâÑí@ç7U“ L{Üy^3Ùã>±lºQ©@@Ö=Ös¯ò1Ýà2û­(Wp t‹µÄ˜öJä áF»··š?ï„ìþÿvž1IiàüF#̰[¼Â£ý Þxõ®Ÿþ‰¾³_†|#1IJrþŒ½&¦ ŠjŒÎ|Dov Ai‡t ½;%¬÷÷,zøg~šØxݱæòdÏ1%$rÖ~MØCëâGŸcÂn½Ye®˜¦xöÑO'?°crÏûÞÌ –´×þ·$óRýµ§aNtk…¼Âm ’£Š÷¾˜0¢¹sg¸ Uò¯h^þ $Ÿ„Bý iˆkéKÞí4‘c¬çnTµnûéÛãõw0ûã˜vè­G«M[PQÃíĩ×0Z)ÝRùG3Ú(®Ž- ä¢÷j‘qéB¸{®—¾(õ‚ø±Õн õÉOMÖOâÕÿ ¤‹é„+[=¥ ùòÈó*7°}OEÈ’ÓÝÝàP†1òÕrëÓÀã–ócZèäHqýMmG¿ÓÅöþÞ«èsÙÖphÂ!æ†Ó½‹HXWxw¨¬­6†k¦•0ºâþÌ¥öt 4oæŠwØÖ÷-ãDƒ”m½gBçy.¢Úë¹³GC0üè…voPÀà•Î{Ýæ òÇMZ[x&õIyÆÎJ·=9jï׉ài@ïÍSC¼¼e¨-wþ㔆 ”|}~|¸° F\­­‡AL»é‘j°{ÏŸxò¹>X¿àîyµ =øDÔUe!£÷DcÞw3´¹‘S\”ubËmKÅu|ή°™µCmîÔçªq!ÙûÍQW´;\ÿÕ­©Ï{(WxL»½Nå'û¨0@é’Ýq3JàóX^çÜí·þÒp-BêÃbþRˆ+¼–rÜc»ŽGåíÖÁÈUîýáhïI~íàÍ1Œ+/<–§µy›¢½•UŨ9dîó\hV™+ê0jž®DŠÃf0a’%tQq“ $/Ÿ³kFÛr’L é†–β̗^ÉÛZÞ­ÆÏÑç@ oœêô:&~e&‡ãÕûàľ³èÂ?BsÄtN%S¥»ì„ˆ¶ûf“Í Fï˜`—÷v<ªÛA墊ñùaªÏšc˜”þç²’ëHà|ðéÇÅ=Ëú¯q0œ%öÉ®ÒApKszÉIK Ì`É.p€³2ô)¾{­1°ÊÉÁ01íVøé"9Æ0Ó‰žW¬½í_a7*aÿWÁ€‚»>h‚Î'ë›#)ô}¿“áÊ1cL&+Ø%Æã€Ñº= 9˜Àb½À4#†‘|‡¾Ý ‹YLëÆT©Ìé­úf¥² =z ÿp}FÛø ó9'Ï`*åöÑ÷PéÚ¡hµ»®»eØ‘æg‹„?—E¶¸Ä!v%ÔwÓš£T™Ž^\žCbæˆÌ‰¸h1™¤²y¹s̾½áÜk‹¿ _!AnÇdàVà6¿ü¯ÏÓR¨rJ0Hñ“O÷0f…^û­zÓ“)Cdu˜éOžk"Þ‚i5•¢ú¤)ŒcR!?’êŽ'kÜéÕÅÌ_&ôƒÏÞa‡\µmÛ*æÿø°HM< ÖÅ£®ä$Lq)r g†´±Ãÿ&‚za çJ F¿9|¶òs&%ôk?Õ/‹/ot€ÅIÙÄã½Iè§mð yL3|ÞN6Dcôï›|v9Y ­»1ã~Ô5y´Ï´`à±&1Õxu'u ÷p'†uoñÐ*¿‡§o>&)`T€Ózµñ HŒíÐöbR½7jWGרÞö Hzðö%çEȸlèaSøÜžÝ~÷¡OØþœ„@v— "¥>JGÉJ]èz“äÑâÜÁ¸Ÿ’ÈßN!$|2oïä#>ÀlÿŽçŠÐjù•vª9 K,Ö,ÚêšÃ¯ùGi3™÷Ý>'tã.ý\~sá9vÔoÆO,¢»àÓéY[ˆˆ¼À1gÿ=¯”T ¬ý…ñ:¢d &ûÿk ÁÑ–ÝËñháJÇÍ-Ûqÿ·Ï¦÷'\òišä¶> ¸Ä64 Åù÷ÅËÜPì%ã)Ý¢9HãJ[íø4Žá>û´0¾’5¬Hñzäåþ¼­ØŽQò±æ‰¢C˜JõóCÏÅW`Ï*?ût<¯ó}QeÆGf÷çªMHúßþ†³­WžÐ @“0}uöLaŒ æm•ˆ·ƒE4;ÍWök˜V.¡F_™ˆ)ëÁíW l )õ$s<îZ¸D·ßæv>hÅ1¨Ie€¶ÕLÖŒ‚÷}ÇÐ?c1:ÑÄOÇÀ÷EõõÚi.ˆõ¼Ð¹vò6Ú'7µŠÜÅTF«fM¯ìQÙ­âho¢S_kÙG°¼ÕÐz„ã’ÄÕ$lϲ£øp6«q2&õLÝç®Á4V’ŒGzü7Øeßè/ë}ABN[ÅÇp ¤Ó·Qô§C€Sݳ;wé @¾ÝºbYj[gG\~*<…™ÿÚädë¶C ãË/W ¨üZ„ßt›C”¸yä|ç1¸vö §ßgŒ dõÿtã¯IÐóF#Áëy£D>:ÿT j®ìD÷wk¬1d HÒYR,Ì¥@ÃI'ÒÁw .ûüA¤‚8äB¼ŠÄОú]Ùö¿ÿ¢þæôÛq›°çõÕý½Hò~²ÕÒháñi_Â2- ÅúDHW?‚Z@h„šØ/ôŸµÌ,µsÅÌ•‘ñ}J'0©“Ìí@Xï Ñ®\&LJ™9íiÂÏΞ¹Õ—‚²Tbr©–4è>§ÂöÄ[ÛÕcÌ&ÇÁæ)îevà°2´îBËÃ%5”œ¿0T:îÐ¥ô2 :¦ìñ6‘¼Oäë“kùĽ5´¹0/v:íäR"f½”=‚>dvoßl¯GólzÚ’\Pª/' ÆHÏK}‚暘&}nÙƒµâ„uËKˆ¹Yjü.àÓÚÉì;9¡¸‚n«>îRbÔI÷©}7êÀí{À‰Nª°Í?ÞUCñ |¾EÙOîÃdnŽ%)˜Âvþa…'ƹŸ’å{‰¤Ózu–¡`st_'ÿåóè[vÝòž™%ZŽì(eg€¨ãMü£°Ã±Ãúå~¸ñs‰ ©ˆi¹bŒ› ¡R¡fRh{ds0¢µå§7ìO!s°ÊŹ<‡$¾äíwÅx®ªMï0yvÚE…|®J¾P-¤ÂÜuž!Îp¦êU~Oñ6][<ËtëÍÞ¿*#ÚzÇ-s‹þëÜÆèÿqÚA¦³F‚Ø`xÿKãú-A„ÏÀ´oZÝýoPØ éž×¶EŽŒo·íú²Èu©U5$î×z=/™ ¶]iï>¬\wŠÍv‰ˆ)[Ýë²ýyä‹#lçš $G½óê8ª6hÔHwûçåߦOøñUº&d¸LÖ qa²|Ï¥Úþ`Ôü7%ÅØ’‡/Üaòå‰ô›2ï«ãAúé½?m9à¤DõË®¤"¾mÆÇï„ …eÈ)¸€á óú3·ãØù÷×,ùÀe~ÙûàØu ¿Ñà-Ô7”ûzè,=1äÉ-‚U†äÈUßAÀ¡óìH2ûoCÌì†TeòÁf­ºZP#ýŒô¤G¢ ;G‹Ñ°÷Ïvr¦î¿=7ÎêH$ iî_Ìì x,ê¾åcfÝ­ˆ}NûÁGøœ_ Ù"d„ËQT» *Ç^^ô”ú¥³¸YQ{°ã³Å.}°u¶,¸SžÞ<étTà4ó!w( 7ø&ÔÇ ü¤ò7#Õ´ûÌa¿ U‰M/)¯ßÒÿúÀ0\ñ²ÕR <éU¢Gú­Õ«2¦(6BµP¸7ã•ÄÄO¡Yd xÎk›“­»ÿ²Ctaõ÷¡åap,jÜ¥^=ŠkùCBMshRªQÈï´†ú«I…±˜ÀoœpP óÖÞ‡_ÙÖe.2 w™8£S÷äË54•Ñvq¤ÝK³±ý „SE uÄ+nK·ûòæ;f0\gW¸F‰ÁùjnÓ 9[Ö³{í¯ÑÛ2o«3Òª÷kƒÙÊezdí™ONLêÈ£DÕè…ñ´>÷j¹u#M:y »¹0$õíÉñ ç1@¨ÊÈ=1å‚Q@¹á̲˜=Riߌ‰"rfN%–hnp3‹ïq+Ú­¾ùÌ.¦G¨ [v¹¢÷âµxûŠ˜™DN9Ýþ­V]OíKÒÄØÞˆL–E°Ü:9pÔ¦“ n]SÄ»á´Â†µà­œdrY¢² Ÿï<Šä[»›Nlsú,ÿXâ}ðÙ²¿as˜ 3þ70"÷Ø,:q³íüvbv¬ÎÀÝ: úNÛG:Õ¥Â/ù̧s! aßx=· ú?r »Xù }@àNLÛ*x ~·Ù%‰o®²ÃÄp½üý*˜#ô¦oœ„¤ÛÓìç¾8@âß©$uÑû}uîð° Ä·¬è‰3ƒïÇjwU6c´ü/}Ê!½ç~”rýAO)»ÈŸä¨â=£.µ8&£'“Rý“ÖC“EŶ{fºƒ0Ùæÿ!aj\‚cfitdistrplus/data/dataFAQscale2.rda0000644000176200001440000000036612772503243016754 0ustar liggesusers‹ r‰0âŠàb```b`fba`b2Y˜€# 'æMI,Its ,NNÌI5 ð±Œã•Çï~ŽWùŸïsÑ©z`:3áÑ }Í­íM¾òa ˆ½q‘˜Ÿðâ(HÝõl ý7‚fÉßêàuÑ·Ïd­Ñ÷B»’@êî¿xÞÒ÷0­±D?Š{¯¤KÚ,^¤ŸåY>Ñ¿*2@âÏ7Í<Òÿby~)Hý«¯OC@ö¼›»F0D{슩{ÇÜâ¿—› Òÿ}½ŽˆÞë7óüœý½jfitdistrplus/data/smokedfish.rda0000644000176200001440000000033112772503243016545 0ustar liggesusers‹ r‰0âŠàb```b`RLÌ@& `bN æ*ÎÍÏNMIË,Î```«d`àâôú@’}Ñ(=4iû%UÝ׉TÚA (6'bŒ†‡× ͇êg€æŸ¯Qš²tá 2Ìh=4ÿ‘Ic”3PÅáùˆDf>Z Åš—˜›Z d0@*' KNjZ LAQfzF š.΢ür=˜N^Î ñÿÿÿ™èÆ'ç$ÃŒ‡×Š)‰%‰ziE@ý@Þ?÷ó‚,Kfitdistrplus/data/salinity.rda0000644000176200001440000000057412772503243016256 0ustar liggesusers‹ r‰0âŠàb```b`âgd`b2Y˜€# 'æ(NÌÉÌË,©d``«c`àâ0 H›6@h=4qóÍÆ à` å£Ó¸ÌCWÇ9fÁi+I(mŒj¾-TFÛAÅiM;6`§- ¨wý q?Œïvânw(Ÿí¡íwBÂ… }¶`ñu.ÛBŒð„Ñ’$Òhú`öÀÅ5¡ñ£ ãÓ‰†¥CjÑ’hæJâ°—MLG:g€æ³ú &û"B4<ŸÁÒ,}AóN}8Ò-†:ôô…žÏ`úÑòÑîÇa/Nõ8òAw{2 òaùÌʇæ3\æ`˜ëÝ^zÑé ==¡å3bÍ#Ùhù‚Xy\ê1ô£× èéF£—¯&øÍG«ïXósS‹ PedÉIM+)(ÊLÏ(AÓÅY”_®ÓÉ Ò rÄÿÿÿ§ Ÿœ“X 3&È•’X’¨—VÔäýaSA¾Ù™fitdistrplus/data/groundbeef.rda0000644000176200001440000000065612772503243016543 0ustar liggesusers‹ VËJÃ@§Š4 þ‚à® ¸0.JA¨‹Rk‘¶øJMZ ÚBâc›OË—5NeNq^,LOÎû¾·¡ýpxê =¥”VÚ€n˜Çmm¾¶ÌišãÍÒåû"ž$ÉT©Æ¡½Ù7g´Õ÷'8²xfñ\à!É;áçÂâ¥EŸôa?"»ù“âH8 „]·¦}]½‹o$pØ]çûEn­ÞcàÞû¤ß/Ü8Èü˜8çgœ.纸^ô»M÷¨›õyÞŒ°Cݼ7?®¼KÈu×EÞÏ*=–c>¼ÿK~¸O¨on9úÐ#Î}½)\>¶~:¹ëwLÈ~BBä+Ù³>Çcÿ¼èêF=ØKÎSÂ^àÆ—úÅýæ>UéaÎÜ÷Íœs—Ký†_ŽËö¸¿+\D¿âŠ8ÿW5wðÍû4ÿýr̃ó€< |}âÒ¾Jþðû“öûuEö¬Ç~üÜ­‹ß›¼OU{&q âÝWäIHÿ vÑk’™‡ƒÂÝ,I?æ‹é6Óåg ú{æèu eYjvúüeìÔ‹£·¨5M½a«õùÚ¹fitdistrplus/R/0000755000176200001440000000000013421643046013212 5ustar liggesusersfitdistrplus/R/ppcomp.R0000644000176200001440000002003313330574012014624 0ustar liggesusers############################################################################# # Copyright (c) 2012 Christophe Dutang, Aurelie Siberchicot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### P-P plot for various fits ### of continuous distribution(s) (fitdist results) ### on a same dataset ### ### R functions ### ppcomp <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fitpch, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, use.ppoints = TRUE, a.ppoints = 0.5, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", ...) { if(inherits(ft, "fitdist")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdist' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdist")))) stop("argument ft must be a list of 'fitdist' objects") } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("ppcomp is not yet available when using weights") # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # check data mydata <- ft[[1]]$data verif.ftidata <- function(fti) { if (any(fti$data != mydata)) stop("All compared fits must have been obtained with the same dataset") invisible() } lapply(ft, verif.ftidata) n <- length(mydata) sdata <- sort(mydata) largedata <- (n > 1e4) if (xlogscale != ylogscale) { warning("As a P-P plot should use the same scale on x and y axes, both or none of the axes should be put in a logarithmic scale.") } logxy <- paste(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y",""), sep="") # manage default parameters nft <- length(ft) if (missing(fitcol)) fitcol <- 2:(nft+1) if (missing(fitpch)) fitpch <- ifelse(largedata, 1, 21) fitcol <- rep(fitcol, length.out=nft) fitpch <- rep(fitpch, length.out=nft) # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } if (missing(xlab)) xlab <- "Theoretical probabilities" if (missing(ylab)) ylab <- "Empirical probabilities" if (missing(main)) main <- "P-P plot" if (use.ppoints) obsp <- ppoints(n, a = a.ppoints) else obsp <- (1:n) / n # computation of each fitted distribution comput.fti <- function(i) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname pdistname <- paste("p", distname, sep="") do.call(pdistname, c(list(sdata), as.list(para))) } fittedprob <- sapply(1:nft, comput.fti) if(NCOL(fittedprob) != nft || NROW(fittedprob) != length(sdata)) stop("problem when computing fitted probabilities.") # check limits if (missing(xlim)) xlim <- range(fittedprob) if (missing(ylim)) ylim <- range(obsp) if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## #main plotting if(!largedata) resquant <- plot(fittedprob[,1], obsp, main=main, xlab=xlab, ylab=ylab, log=logxy, pch = fitpch[1], xlim=xlim, ylim=ylim, col=fitcol[1], type="p", ...) else resquant <- plot(fittedprob[,1], obsp, main=main, xlab=xlab, ylab=ylab, log=logxy, lty = fitpch[1], xlim=xlim, ylim=ylim, col=fitcol[1], type="l", ...) #plot other fitted probabilities if(nft > 1 && !ynoise && !largedata) for(i in 2:nft) points(fittedprob[,i], obsp, pch=fitpch[i], col=fitcol[i], ...) if(nft > 1 && ynoise && !largedata) for(i in 2:nft) { if (ylogscale) { noise2mult <- runif(n, 0.95, 1.05) points(fittedprob[,i], obsp*noise2mult, pch=fitpch[i], col=fitcol[i], ...) }else { noise2add <- runif(n, -0.02, 0.02) points(fittedprob[,i], obsp+noise2add, pch=fitpch[i], col=fitcol[i], ...) } } if(largedata) for(i in 2:nft) lines(fittedprob[,i], obsp, col=fitcol[i], lty = fitpch[i], ...) if(line01) abline(0, 1, lty=line01lty, col=line01col) if(addlegend) { if(!largedata) legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, pch = fitpch, ...) else legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, lty = fitpch, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## # recode the legend position according to available positions in ggplot2 if(xlegend %in% c("topleft", "bottomleft")) xlegend <- "left" if(xlegend %in% c("topright", "bottomright")) xlegend <- "right" # structure the fittedprob in a relevant data.frame fittedprob <- as.data.frame(fittedprob) colnames(fittedprob) <- unlist(lapply(ft, function(X) X["distname"])) fittedprob <- stack(fittedprob) nfp <- nrow(fittedprob) fittedprob$obsp <- obsp # obsp is recycled in the standard fashion fittedprob$ind <- factor(fittedprob$ind, levels = unique(fittedprob$ind)) # reorder levels in the appearance order of the input if(nft > 1 && ynoise && !largedata) { if (ylogscale) { noise2mult <- runif(nfp, 0.95, 1.05) fittedprob$obsp <- fittedprob$obsp*noise2mult }else { noise2add <- runif(nfp, -0.02, 0.02) fittedprob$obsp <- fittedprob$obsp+noise2add } } ggppcomp <- ggplot2::ggplot(data = fittedprob, ggplot2::aes_(quote(values), quote(obsp), group = quote(ind), colour = quote(ind), shape = quote(ind))) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::ggtitle(main) + ggplot2::coord_cartesian(xlim = c(xlim[1], xlim[2]), ylim = c(ylim[1], ylim[2])) + {if(!largedata) ggplot2::geom_point() else ggplot2::geom_line(ggplot2::aes_(linetype = quote(ind)))} + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend), plot.title = ggplot2::element_text(hjust = 0.5)) else ggplot2::theme(legend.position = "none", plot.title = ggplot2::element_text(hjust = 0.5))} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_shape_manual(values = fitpch, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitpch, labels = legendtext) + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(shape = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + {if(line01) ggplot2::geom_abline(intercept = 0, slope = 1)} + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} return(ggppcomp) } } fitdistrplus/R/fitdistcens.R0000644000176200001440000002277713375226222015674 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### fit parametric distributions for censored data ### ### R functions ### fitdistcens <- function (censdata, distr, start=NULL, fix.arg=NULL, keepdata = TRUE, keepdata.nb=100, ...) { if (missing(censdata) || !(is.vector(censdata$left) & is.vector(censdata$right) & length(censdata[, 1])>1)) stop("datacens must be a dataframe with two columns named left and right and more than one line") leftsupright <- censdata$left>censdata$right leftsupright <- leftsupright[!is.na(leftsupright)] if (any(leftsupright)) stop("each left value must be less or equal to the corresponding right value") if (!is.character(distr)) distname <- substring(as.character(match.call()$distr), 2) else distname <- distr ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) pdistname <- paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) if(!is.logical(keepdata) || !is.numeric(keepdata.nb) || keepdata.nb < 3) stop("wrong arguments 'keepdata' and 'keepdata.nb'.") #encapsulate three dots arguments my3dots <- list(...) if (length(my3dots) == 0) my3dots <- NULL #format data for calculation of starting values pseudodata <- cens2pseudo(censdata)$pseudo # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=pseudodata, distname=distname) #check inconsistent parameters argddistname <- names(formals(ddistname)) hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #store fix.arg.fun if supplied by the user if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL # check d, p, q, functions of distname dpq2test <- c("d", "p") resdpq <- testdpqfun(distname, dpq2test, start.arg=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, discrete=FALSE) if(any(!resdpq$ok)) { for(x in resdpq[!resdpq$ok, "txt"]) warning(x) } # MLE fit with mledist mle <- mledist(censdata, distname, start=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, checkstartfix=TRUE, ...) if (mle$convergence>0) stop("the function mle failed to estimate the parameters, with the error code ", mle$convergence) estimate <- mle$estimate if(!is.null(mle$hessian)){ #check for NA values and invertible Hessian if(all(!is.na(mle$hessian)) && qr(mle$hessian)$rank == NCOL(mle$hessian)){ varcovar <- solve(mle$hessian) sd <- sqrt(diag(varcovar)) correl <- cov2cor(varcovar) }else{ varcovar <- NA sd <- NA correl <- NA } }else{ varcovar <- NA sd <- NA correl <- NA } loglik <- mle$loglik n <- nrow(censdata) npar <- length(estimate) aic <- -2*loglik+2*npar bic <- -2*loglik+log(n)*npar fix.arg <- mle$fix.arg weights <- mle$weights #needed for bootstrap if (!is.null(fix.arg)) fix.arg <- as.list(fix.arg) if(keepdata) { reslist <- list(estimate = estimate, method="mle", sd = sd, cor = correl, vcov = varcovar, loglik = loglik, aic=aic, bic=bic, n=n, censdata=censdata, distname=distname, fix.arg=fix.arg, fix.arg.fun = fix.arg.fun, dots=my3dots, convergence=mle$convergence, discrete=FALSE, weights = weights) }else { n2keep <- min(keepdata.nb, n)-4 imin <- unique(apply(censdata, 2, which.min)) imax <- unique(apply(censdata, 2, which.max)) subdata <- censdata[sample((1:n)[-c(imin, imax)], size=n2keep, replace=FALSE), ] subdata <- rbind.data.frame(subdata, censdata[c(imin, imax), ]) reslist <- list(estimate = estimate, method="mle", sd = sd, cor = correl, vcov = varcovar, loglik = loglik, aic=aic, bic=bic, n=n, censdata=subdata, distname=distname, fix.arg=fix.arg, fix.arg.fun = fix.arg.fun, dots=my3dots, convergence=mle$convergence, discrete=FALSE, weights = weights) } return(structure(reslist, class = "fitdistcens")) } print.fitdistcens <- function(x, ...){ if (!inherits(x, "fitdistcens")) stop("Use only with 'fitdistcens' objects") cat("Fitting of the distribution '", x$distname, "' on censored data by maximum likelihood \n") cat("Parameters:\n") print(cbind.data.frame("estimate" = x$estimate), ...) if(!is.null(x$fix.arg)) { if(is.null(x$fix.arg.fun)) { cat("Fixed parameters:\n") }else { cat("Fixed parameters (computed by a user-supplied function):\n") } print(cbind.data.frame("value" = unlist(x$fix.arg)), ...) } } plot.fitdistcens <- function(x, ...){ if (!inherits(x, "fitdistcens")) stop("Use only with 'fitdistcens' objects") if(!is.null(x$weights)) stop("The plot of the fit is not yet available when using weights") plotdistcens(censdata=x$censdata, distr=x$distname, para=c(as.list(x$estimate), as.list(x$fix.arg)), ...) } summary.fitdistcens <- function(object, ...){ if (!inherits(object, "fitdistcens")) stop("Use only with 'fitdistcens' objects") object$ddistname <- paste("d", object$distname, sep="") object$pdistname <- paste("p", object$distname, sep="") class(object) <- c("summary.fitdistcens", class(object)) object } print.summary.fitdistcens <- function(x, ...){ if (!inherits(x, "summary.fitdistcens")) stop("Use only with 'fitdistcens' objects") ddistname <- x$ddistname pdistname <- x$pdistname cat("Fitting of the distribution '", x$distname, "' By maximum likelihood on censored data \n") cat("Parameters\n") print(cbind.data.frame("estimate" = x$estimate, "Std. Error" = x$sd), ...) if(!is.null(x$fix.arg)) { if(is.null(x$fix.arg.fun)) { cat("Fixed parameters:\n") }else { cat("Fixed parameters (computed by a user-supplied function):\n") } print(cbind.data.frame("value" = unlist(x$fix.arg)), ...) } cat("Loglikelihood: ", x$loglik, " ") cat("AIC: ", x$aic, " ") cat("BIC: ", x$bic, "\n") if (length(x$estimate) > 1) { cat("Correlation matrix:\n") print(x$cor) cat("\n") } invisible(x) } #see quantiles.R for quantile.fitdistcens #see logLik.R for loglik.fitdistcens #see vcov.R for vcov.fitdistcens #see coef.R for coef.fitdistcens fitdistrplus/R/fitdist.R0000644000176200001440000003246113327600476015016 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Regis Pouillot, Jean-Baptiste Denis, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### fit parametric distributions for non-censored data ### ### R functions ### fitdist <- function (data, distr, method = c("mle", "mme", "qme", "mge"), start=NULL, fix.arg=NULL, discrete, keepdata = TRUE, keepdata.nb=100, ...) { #check argument distr if (!is.character(distr)) distname <- substring(as.character(match.call()$distr), 2) else distname <- distr ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) #pdistname <- paste("p", distname, sep="") #if (!exists(pdistname, mode="function")) # stop(paste("The ", pdistname, " function must be defined")) #check argument discrete if(missing(discrete)) { if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) discrete <- TRUE else discrete <- FALSE } if(!is.logical(discrete)) stop("wrong argument 'discrete'.") if(!is.logical(keepdata) || !is.numeric(keepdata.nb) || keepdata.nb < 2) stop("wrong arguments 'keepdata' and 'keepdata.nb'") #check argument method if(any(method == "mom")) warning("the name \"mom\" for matching moments is NO MORE used and is replaced by \"mme\"") method <- match.arg(method, c("mle", "mme", "qme", "mge")) if(method %in% c("mle", "mme", "mge")) dpq2test <- c("d", "p") else dpq2test <- c("d", "p", "q") #check argument data if (!(is.vector(data) & is.numeric(data) & length(data)>1)) stop("data must be a numeric vector of length greater than 1") #encapsulate three dots arguments my3dots <- list(...) if (length(my3dots) == 0) my3dots <- NULL n <- length(data) # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=data, distname=distname) #check inconsistent parameters argddistname <- names(formals(ddistname)) hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #store fix.arg.fun if supplied by the user if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL # check d, p, q, functions of distname resdpq <- testdpqfun(distname, dpq2test, start.arg=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, discrete=discrete) if(any(!resdpq$ok)) { for(x in resdpq[!resdpq$ok, "txt"]) warning(x) } # Fit with mledist, qmedist, mgedist or mmedist if (method == "mme") { if (!is.element(distname, c("norm", "lnorm", "pois", "exp", "gamma", "nbinom", "geom", "beta", "unif", "logis"))) if (!"order" %in% names(my3dots)) stop("moment matching estimation needs an 'order' argument") mme <- mmedist(data, distname, start=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, checkstartfix=TRUE, ...) sd <- NULL correl <- varcovar <- NULL estimate <- mme$estimate loglik <- mme$loglik npar <- length(estimate) aic <- -2*loglik+2*npar bic <- -2*loglik+log(n)*npar convergence <- mme$convergence fix.arg <- mme$fix.arg weights <- mme$weights }else if (method == "mle") { mle <- mledist(data, distname, start=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, checkstartfix=TRUE, ...) if (mle$convergence>0) stop("the function mle failed to estimate the parameters, with the error code ", mle$convergence, "\n") estimate <- mle$estimate if(!is.null(mle$hessian)){ #check for NA values and invertible Hessian if(all(!is.na(mle$hessian)) && qr(mle$hessian)$rank == NCOL(mle$hessian)){ varcovar <- solve(mle$hessian) sd <- sqrt(diag(varcovar)) correl <- cov2cor(varcovar) }else{ varcovar <- NA sd <- NA correl <- NA } }else{ varcovar <- NA sd <- NA correl <- NA } loglik <- mle$loglik npar <- length(estimate) aic <- -2*loglik+2*npar bic <- -2*loglik+log(n)*npar convergence <- mle$convergence fix.arg <- mle$fix.arg weights <- mle$weights }else if (method == "qme") { if (!"probs" %in% names(my3dots)) stop("quantile matching estimation needs an 'probs' argument") qme <- qmedist(data, distname, start=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, checkstartfix=TRUE, ...) estimate <- qme$estimate sd <- NULL loglik <- qme$loglik npar <- length(estimate) aic <- -2*loglik+2*npar bic <- -2*loglik+log(n)*npar correl <- varcovar <- NULL convergence <- qme$convergence fix.arg <- qme$fix.arg weights <- qme$weights }else if (method == "mge") { if (!"gof" %in% names(my3dots)) warning("maximum GOF estimation has a default 'gof' argument set to 'CvM'") mge <- mgedist(data, distname, start=arg_startfix$start.arg, fix.arg=arg_startfix$fix.arg, checkstartfix=TRUE, ...) estimate <- mge$estimate sd <- NULL loglik <- mge$loglik npar <- length(estimate) aic <- -2*loglik+2*npar bic <- -2*loglik+log(n)*npar correl <- varcovar <- NULL convergence <- mge$convergence fix.arg <- mge$fix.arg weights <- NULL }else { stop("match.arg() does not work correctly") } #needed for bootstrap if (!is.null(fix.arg)) fix.arg <- as.list(fix.arg) if(keepdata) { reslist <- list(estimate = estimate, method = method, sd = sd, cor = correl, vcov = varcovar, loglik = loglik, aic=aic, bic=bic, n = n, data=data, distname = distname, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, dots = my3dots, convergence = convergence, discrete = discrete, weights = weights) }else #just keep a sample set of all observations { n2keep <- min(keepdata.nb, n)-2 imin <- which.min(data) imax <- which.max(data) subdata <- data[sample((1:n)[-c(imin, imax)], size=n2keep, replace=FALSE)] subdata <- c(subdata, data[c(imin, imax)]) reslist <- list(estimate = estimate, method = method, sd = sd, cor = correl, vcov = varcovar, loglik = loglik, aic=aic, bic=bic, n = n, data=subdata, distname = distname, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, dots = my3dots, convergence = convergence, discrete = discrete, weights = weights) } return(structure(reslist, class = "fitdist")) } print.fitdist <- function(x, ...) { if (!inherits(x, "fitdist")) stop("Use only with 'fitdist' objects") if (x$method=="mme") cat("Fitting of the distribution '", x$distname, "' by matching moments \n") else if (x$method=="mle") cat("Fitting of the distribution '", x$distname, "' by maximum likelihood \n") else if (x$method=="qme") cat("Fitting of the distribution '", x$distname, "' by matching quantiles \n") else if (x$method=="mge") cat("Fitting of the distribution '", x$distname, "' by maximum goodness-of-fit \n") cat("Parameters:\n") if (x$method=="mle") print(cbind.data.frame("estimate" = x$estimate, "Std. Error" = x$sd), ...) else print(cbind.data.frame("estimate" = x$estimate), ...) if(!is.null(x$fix.arg)) { if(is.null(x$fix.arg.fun)) { cat("Fixed parameters:\n") }else { cat("Fixed parameters (computed by a user-supplied function):\n") } print(cbind.data.frame("value" = unlist(x$fix.arg)), ...) } } plot.fitdist <- function(x, breaks="default", ...) { if (!inherits(x, "fitdist")) stop("Use only with 'fitdist' objects") if(!is.null(x$weights)) stop("The plot of the fit is not yet available when using weights") if(!is.null(x$data)) plotdist(data=x$data, distr=x$distname, para=c(as.list(x$estimate), as.list(x$fix.arg)), breaks=breaks, discrete = x$discrete, ...) if(!is.null(x$weights)) stop("The plot of the fit is not yet available when using weights") } summary.fitdist <- function(object, ...) { if (!inherits(object, "fitdist")) stop("Use only with 'fitdist' objects") object$ddistname <- paste("d", object$distname, sep="") object$pdistname <- paste("p", object$distname, sep="") object$qdistname <- paste("q", object$distname, sep="") class(object) <- c("summary.fitdist", class(object)) object } print.summary.fitdist <- function(x, ...) { if (!inherits(x, "summary.fitdist")) stop("Use only with 'summary.fitdist' objects") ddistname <- x$ddistname pdistname <- x$pdistname if (x$method=="mme") cat("Fitting of the distribution '", x$distname, "' by matching moments \n") else if (x$method=="mle") cat("Fitting of the distribution '", x$distname, "' by maximum likelihood \n") else if (x$method=="qme") cat("Fitting of the distribution '", x$distname, "' by matching quantiles \n") else if (x$method=="mge") cat("Fitting of the distribution '", x$distname, "' by maximum goodness-of-fit \n") cat("Parameters : \n") if (x$method == "mle") print(cbind.data.frame("estimate" = x$estimate, "Std. Error" = x$sd), ...) else print(cbind.data.frame("estimate" = x$estimate), ...) if(!is.null(x$fix.arg)) { if(is.null(x$fix.arg.fun)) { cat("Fixed parameters:\n") }else { cat("Fixed parameters (computed by a user-supplied function):\n") } print(cbind.data.frame("value" = unlist(x$fix.arg)), ...) } cat("Loglikelihood: ", x$loglik, " ") cat("AIC: ", x$aic, " ") cat("BIC: ", x$bic, "\n") if (x$method=="mle") { if (length(x$estimate) > 1) { cat("Correlation matrix:\n") print(x$cor) cat("\n") } } invisible(x) } #see quantiles.R for quantile.fitdist #see logLik.R for loglik.fitdist #see vcov.R for vcov.fitdist #see coef.R for coef.fitdist fitdistrplus/R/cdfcomp.R0000644000176200001440000002634713330262006014754 0ustar liggesusers############################################################################# # Copyright (c) 2011 Marie Laure Delignette-Muller, Christophe Dutang, Aurelie Siberchicot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot cumulative distribution functions for various fits ### of continuous distribution(s) (fitdist results) ### on a same dataset ### ### R functions ### cdfcomp <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datapch, datacol, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, horizontals = TRUE, verticals = FALSE, do.points = TRUE, use.ppoints = TRUE, a.ppoints = 0.5, lines01 = FALSE, discrete, add = FALSE, plotstyle = "graphics", fitnbpts = 101, ...) { if(inherits(ft, "fitdist")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdist' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdist")))) stop("argument ft must be a list of 'fitdist' objects") } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("cdfcomp is not yet available when using weights") # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # manage default parameters nft <- length(ft) if (missing(datapch)) datapch <- 16 if (missing(datacol)) datacol <- "black" if (missing(fitcol)) fitcol <- 2:(nft+1) if (missing(fitlty)) fitlty <- 1:nft fitcol <- rep(fitcol, length.out=nft) fitlty <- rep(fitlty, length.out=nft) if (missing(xlab)) xlab <- ifelse(xlogscale, "data in log scale", "data") if (missing(ylab)) ylab <- "CDF" if (missing(main)) main <- paste("Empirical and theoretical CDFs") # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } # initiate discrete if not given if(missing(discrete)) { discrete <- any(sapply(ft, function(x) x$discrete)) } if(!is.logical(discrete)) stop("wrong argument 'discrete'.") # check data mydata <- ft[[1]]$data verif.ftidata <- function(fti) { if (any(fti$data != mydata)) stop("All compared fits must have been obtained with the same dataset") invisible() } lapply(ft, verif.ftidata) # check xlim if(missing(xlim)) { xmin <- min(mydata) xmax <- max(mydata) xlim <- c(xmin, xmax) } else { xmin <- xlim[1] xmax <- xlim[2] } # some variable definitions distname <- ft[[1]]$distname n <- length(mydata) sdata <- sort(mydata) largedata <- (n > 1e4) logxy <- paste(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y",""), sep="") if ((xlogscale == TRUE) & min(mydata) <= 0) stop("log transformation of data requires only positive values") # plot of data (ecdf) if(xlogscale && !discrete) sfin <- seq(log10(xmin), log10(xmax), by=(log10(xmax)-log10(xmin))/fitnbpts[1]) else # (!xlogscale && !discrete) and discrete sfin <- seq(xmin, xmax, length.out=fitnbpts[1]) # previous version with no vizualisation of ex-aequos # obsp <- ecdf(sdata) if (use.ppoints && !discrete) obsp <- ppoints(n, a = a.ppoints) else obsp <- (1:n) / n # computation of each fitted distribution comput.fti <- function(i) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname pdistname <- paste("p", distname, sep = "") if(xlogscale && !discrete) { do.call(pdistname, c(list(10^sfin), as.list(para))) }else { do.call(pdistname, c(list(sfin), as.list(para))) } } fittedprob <- sapply(1:nft, comput.fti) if(NCOL(fittedprob) != nft || NROW(fittedprob) != length(sfin)) stop("problem when computing fitted CDFs.") # check ylim if(missing(ylim)) ylim <- range(obsp, fittedprob) else ylim <- range(ylim) #in case of users enter a bad ylim # optional add of horizontal and vertical lines for step function xhleft <- sdata[-length(sdata)] xhright <- sdata[-1L] yh <- obsp[-length(sdata)] xv <- xhright yvdown <- yh yvup <- obsp[-1L] if(xlogscale) sfin <- 10^sfin if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## #main plot if(!add) #create a new graphic { if(!largedata && do.points) plot(sdata, obsp, main=main, xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, log=logxy, pch=datapch, col=datacol, type="p", ...) else if(largedata) plot(sdata, obsp, main=main, xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, log=logxy, col=datacol, type="s", ...) else if(!do.points) plot(sdata, obsp, main=main, xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, log=logxy, col=datacol, type="n", ...) else stop("internal error in cdfcomp().") }else #add to the current graphic { #do not need parameters: main=main, xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, log=logxy, if(!largedata && do.points) points(sdata, obsp, pch=datapch, col=datacol, type="p", ...) else if(largedata) points(sdata, obsp, col=datacol, type="s", ...) #else if(!do.points) nothing to plot } # optional add of horizontal and vertical lines for step function if (!largedata && horizontals) { segments(xhleft, yh, xhright, yh, col=datacol,...) segments(sdata[length(sdata)], 1, xmax, 1, col=datacol, lty = 2, ...) segments(xmin, 0, sdata[1], 0, col=datacol, lty = 2, ...) if (verticals) { segments(xv, yvdown, xv, yvup, col=datacol,...) segments(sdata[1], 0, sdata[1], obsp[1], col=datacol, ...) } } # plot fitted cdfs for(i in 1:nft) lines(sfin, fittedprob[,i], lty=fitlty[i], col=fitcol[i], type=ifelse(discrete, "s", "l"), ...) if(lines01) abline(h=c(0, 1), lty="dashed", col="grey") if(addlegend) legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, lty=fitlty, col=fitcol,...) invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## # recode the legend position according to available positions in ggplot2 if(xlegend %in% c("topleft", "bottomleft")) xlegend <- "left" if(xlegend %in% c("topright", "bottomright")) xlegend <- "right" if(xlegend == "center") xlegend <- "right" # structure the fittedprob in a relevant data.frame fittedprob <- as.data.frame(fittedprob) colnames(fittedprob) <- unlist(lapply(ft, function(X) X["distname"])) fittedprob <- stack(fittedprob) fittedprob$sfin <- sfin # sfin is recycled in the standard fashion fittedprob$ind <- factor(fittedprob$ind, levels = unique(fittedprob$ind)) # reorder levels in the appearance order of the input step <- data.frame(values = obsp, ind = "step", sfin = sdata) horiz <- data.frame(x = xhleft, y = yh, xend = xhright, yend = yh, ind = "horiz") horiz0 <- data.frame(x = xmin, y = 0, xend = sdata[1], yend = 0, ind = "horiz0") horiz1 <- data.frame(x = sdata[length(sdata)], y = 1, xend = xmax, yend = 1, ind = "horiz1") verti <- data.frame(x = sdata[1], y = 0, xend = sdata[1], yend = obsp[1], ind = "verti") ggcdfcomp <- ggplot2::ggplot(data = fittedprob, ggplot2::aes_(quote(sfin), quote(values), group = quote(ind), colour = quote(ind))) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::ggtitle(main) + ggplot2::coord_cartesian(xlim = c(xlim[1], xlim[2]), ylim = c(ylim[1], ylim[2])) + {if(!largedata && do.points) ggplot2::geom_point(data = step, ggplot2::aes_(quote(sfin), quote(values)), show.legend = FALSE, colour = datacol, shape = datapch)} + {if(largedata) ggplot2::geom_step(data = step, ggplot2::aes_(quote(sfin), quote(values)), show.legend = FALSE, colour = datacol, shape = datapch)} + {if(!largedata && horizontals && !verticals) ggplot2::geom_segment(data = horiz, ggplot2::aes_(x=quote(x), y=quote(y), xend=quote(xend), yend=quote(yend)), show.legend = FALSE, colour = datacol)} + {if(!largedata && horizontals && verticals) ggplot2::geom_step(data = step, ggplot2::aes_(quote(sfin), quote(values)), show.legend = FALSE, colour = datacol)} + {if(!largedata && horizontals) ggplot2::geom_segment(data = horiz1, ggplot2::aes_(x=quote(x), y=quote(y), xend=quote(xend), yend=quote(yend)), show.legend = FALSE, colour = datacol, linetype = 2)} + {if(!largedata && horizontals) ggplot2::geom_segment(data = horiz0, ggplot2::aes_(x=quote(x), y=quote(y), xend=quote(xend), yend=quote(yend)), show.legend = FALSE, colour = datacol, linetype = 2)} + {if(!largedata && horizontals && verticals) ggplot2::geom_segment(data = verti, ggplot2::aes_(x=quote(x), y=quote(y), xend=quote(xend), yend=quote(yend)), show.legend = FALSE, colour = datacol)} + {if(discrete) ggplot2::geom_step(data = fittedprob, ggplot2::aes_(linetype = quote(ind), colour = quote(ind)), size = 0.4)} + {if(!discrete) ggplot2::geom_line(data = fittedprob, ggplot2::aes_(linetype = quote(ind), colour = quote(ind)), size = 0.4)} + ggplot2::theme_bw() + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend)) else ggplot2::theme(legend.position = "none")} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitlty, labels = legendtext) + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + {if(lines01) ggplot2::geom_hline(ggplot2::aes(yintercept=0), color="grey", linetype="dashed")} + {if(lines01) ggplot2::geom_hline(ggplot2::aes(yintercept=1), color="grey", linetype="dashed")} + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} return(ggcdfcomp) } } fitdistrplus/R/util-transform.R0000644000176200001440000000611212772503243016325 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### Infinitely differentiable transformations of R into a bounded or half-bounded interval ### ### R functions ### #inverse are useless? #Transformation from (-Inf, +Inf) to (-1, 0) Tm10 <- function(x) -1/(1+exp(-x)) #Inverse iTm10 <- function(x) log(-x/(1+x)) #Transformation from (-Inf, +Inf) to (0, 1) T01 <- function(x) 1/(1+exp(-x)) #Inverse iT01 <- function(x) log(x/(1-x)) #Transformation from (-Inf, +Inf) to (0, +Inf) T0Inf <- function(x) exp(x) #Inverse iT0Inf <- function(x) log(x) #Transformation from (-Inf, +Inf) to (1, +Inf) T1Inf <- function(x) 1+exp(x) #Inverse iT1Inf <- function(x) log(x-1) fitdistrplus/R/util-startarg.R0000644000176200001440000001147213225700100016127 0ustar liggesusers# start.arg.default function returns initial values of parameters generally using moments or quantiles # INPUTS #x : data vector or matrix #distr : the distribution name # OUTPUTS # a named list or raises an error start.arg.default <- function(x, distr) { if (distr == "norm") { n <- length(x) sd0 <- sqrt((n - 1)/n) * sd(x) mx <- mean(x) start <- list(mean=mx, sd=sd0) }else if (distr == "lnorm") { if (any(x <= 0)) stop("values must be positive to fit a lognormal distribution") n <- length(x) lx <- log(x) sd0 <- sqrt((n - 1)/n) * sd(lx) ml <- mean(lx) start <- list(meanlog=ml, sdlog=sd0) }else if (distr == "pois") { start <- list(lambda=mean(x)) }else if (distr == "exp") { if (any(x < 0)) stop("values must be positive to fit an exponential distribution") start <- list(rate=1/mean(x)) }else if (distr == "gamma") { if (any(x < 0)) stop("values must be positive to fit an gamma distribution") n <- length(x) m <- mean(x) v <- (n - 1)/n*var(x) start <- list(shape=m^2/v, rate=m/v) }else if (distr == "nbinom") { n <- length(x) m <- mean(x) v <- (n - 1)/n*var(x) size <- ifelse(v > m, m^2/(v - m), 100) start <- list(size = size, mu = m) }else if (distr == "geom" ) { m <- mean(x) prob <- ifelse(m>0, 1/(1+m), 1) start <- list(prob=prob) }else if (distr == "beta") { if (any(x < 0) | any(x > 1)) stop("values must be in [0-1] to fit a beta distribution") n <- length(x) m <- mean(x) v <- (n - 1)/n*var(x) aux <- m*(1-m)/v - 1 start <- list(shape1=m*aux, shape2=(1-m)*aux) }else if (distr == "weibull") { if (any(x < 0)) stop("values must be positive to fit an Weibull distribution") m <- mean(log(x)) v <- var(log(x)) shape <- 1.2/sqrt(v) scale <- exp(m + 0.572/shape) start <- list(shape = shape, scale = scale) }else if (distr == "logis") { n <- length(x) m <- mean(x) v <- (n - 1)/n*var(x) start <- list(location=m, scale=sqrt(3*v)/pi) }else if (distr == "cauchy") { start <- list(location=median(x), scale=IQR(x)/2) }else if (distr == "unif"){ start <- list(min=0, max=1) }else if (distr == "invgamma") { if (any(x < 0)) stop("values must be positive to fit an inverse gamma distribution") #http://en.wikipedia.org/wiki/Inverse-gamma_distribution m1 <- mean(x) m2 <- mean(x^2) shape <- (2*m2-m1^2)/(m2-m1^2) scale <- m1*m2/(m2-m1^2) start <- list(shape=shape, scale=scale) }else if (distr == "llogis") { if (any(x < 0)) stop("values must be positive to fit a log-logistic distribution") p25 <- as.numeric(quantile(x, 0.25)) p75 <- as.numeric(quantile(x, 0.75)) shape <- 2*log(3)/(log(p75)-log(p25)) scale <- exp(log(p75)+log(p25))/2 start <- list(shape=shape, scale=scale) }else if (distr == "invweibull") { if (any(x < 0)) stop("values must be positive to fit an inverse Weibull distribution") g <- log(log(4))/(log(log(4/3))) p25 <- as.numeric(quantile(x, 0.25)) p75 <- as.numeric(quantile(x, 0.75)) shape <- exp((g*log(p75)-log(p25))/(g-1)) scale <-log(log(4))/(log(shape)-log(p25)) start <- list(shape=shape, scale=max(scale, 1e-9)) }else if (distr == "pareto1") { if (any(x < 0)) stop("values must be positive to fit a Pareto distribution") #http://www.math.umt.edu/gideon/pareto.pdf x1 <- min(x) m1 <- mean(x) n <- length(x) shape <- (n*m1-x1)/(n*(m1-x1)) min <- x1*(n*shape - 1)/(n*shape) start <- list(shape=shape, min=min) }else if (distr == "pareto") { if (any(x < 0)) stop("values must be positive to fit a Pareto distribution") m1 <- mean(x) m2 <- mean(x^2) scale <- (m1*m2)/(m2-2*m1^2) shape <- 2*(m2-m1^2)/(m2-2*m1^2) start <- list(shape=shape, scale=scale) }else if (distr == "lgamma") { if (any(x < 0)) stop("values must be positive to fit a log-gamma distribution") #p228 of Klugmann and Hogg (1984) m1 <- mean(log(x)) m2 <- mean(log(x)^2) alpha <- m1^2/(m2-m1^2) lambda <- m1/(m2-m1^2) start <- list(shapelog=alpha, ratelog=lambda) }else if (distr == "trgamma") { if (any(x < 0)) stop("values must be positive to fit an trans-gamma distribution") #same as gamma with shape2=tau=1 n <- length(x) m <- mean(x) v <- (n - 1)/n*var(x) start <- list(shape1=m^2/v, shape2=1, rate=m/v) }else if (distr == "invtrgamma") { if (any(x < 0)) stop("values must be positive to fit an inverse trans-gamma distribution") #same as gamma with shape2=tau=1 n <- length(1/x) m <- mean(1/x) v <- (n - 1)/n*var(1/x) start <- list(shape1=m^2/v, shape2=1, rate=m/v) }else stop(paste0("Unknown starting values for distribution ", distr, ".")) return(start) } fitdistrplus/R/logLik.R0000644000176200001440000000615312772503243014565 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Regis Pouillot, Jean-Baptiste Denis, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### log likelihood ### ### R functions ### #logLik already defined in R # #logLik <- function(object, ...) # UseMethod("logLik") # #logLik.default <- function(object, ...) # return(object) logLik.fitdist <- function(object, ...) { stopifnot(inherits(object, "fitdist")) if(is.null(object$loglik)) stop("Internal error in loglik.fitdist") else return(object$loglik) } logLik.fitdistcens <- function(object, ...) { stopifnot(inherits(object, "fitdistcens")) if(is.null(object$loglik)) stop("Internal error in loglik.fitdistcens") else return(object$loglik) } fitdistrplus/R/mledist.R0000644000176200001440000004506613342003075015003 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### maximum likelihood estimation for censored or non-censored data ### ### R functions ### ### many ideas are taken from the fitdistr function of the MASS package and ### the mle function of the stat package. mledist <- function (data, distr, start=NULL, fix.arg=NULL, optim.method="default", lower=-Inf, upper=Inf, custom.optim=NULL, weights=NULL, silent=TRUE, gradient=NULL, checkstartfix=FALSE, ...) # data may correspond to a vector for non censored data or to # a dataframe of two columns named left and right for censored data { if (!is.character(distr)) stop("distr must be a character string naming a distribution") else distname <- distr ddistname <- paste("d", distname, sep="") argddistname <- names(formals(ddistname)) if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) if(is.null(custom.optim)) optim.method <- match.arg(optim.method, c("default", "Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent")) start.arg <- start #to avoid confusion with the start() function of stats pkg (check is done lines 87-100) if(is.vector(start.arg)) #backward compatibility start.arg <- as.list(start.arg) txt1 <- "data must be a numeric vector of length greater than 1 for non censored data" txt2 <- "or a dataframe with two columns named left and right and more than one line for censored data" if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of integers greater than 0") if(!is.allint.w(weights)) stop("weights should be a vector of (strictly) positive integers") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") warning("weights are not taken into account in the default initial values") } if (is.vector(data)) { cens <- FALSE if (!(is.numeric(data) & length(data)>1)) stop(paste(txt1, txt2)) } else { cens <- TRUE censdata <- data if (!(is.vector(censdata$left) & is.vector(censdata$right) & length(censdata[, 1])>1)) stop(paste(txt1, txt2)) pdistname<-paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined to apply maximum likelihood to censored data")) } if (cens) { #format data for calculation of starting values and fitting process dataformat <- cens2pseudo(censdata) data <- dataformat$pseudo rcens <- dataformat$rcens; lcens <- dataformat$lcens icens <- dataformat$icens; ncens <- dataformat$ncens irow <- cens2idxrow(censdata) irow.rcens <- irow$rcens; irow.lcens <- irow$lcens irow.icens <- irow$icens; irow.ncens <- irow$ncens } if(!checkstartfix) #pre-check has not been done by fitdist() or bootdist() { # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=data, distname=distname) #check inconsistent parameters hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #set fix.arg.fun if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL }else #pre-check has been done by fitdist() or bootdist() { arg_startfix <- list(start.arg=start, fix.arg=fix.arg) fix.arg.fun <- NULL } #unlist starting values as needed in optim() vstart <- unlist(arg_startfix$start.arg) #sanity check if(is.null(vstart)) stop("Starting values could not be NULL with checkstartfix=TRUE") #erase user value #(cannot coerce to vector as there might be different modes: numeric, character...) fix.arg <- arg_startfix$fix.arg ############# closed-form formula for uniform distribution ########## if(distname == "unif") { par <- c(min=min(data), max=max(data)) res <- list(estimate = par[!names(par) %in% names(fix.arg)], convergence = 0, loglik = NA, hessian = NA, optim.function= NA, fix.arg = fix.arg) return(res) } ############# MLE fit using optim or custom.optim ########## # definition of the function to minimize : - log likelihood # for non censored data if (!cens && is.null(weights)) { # the argument names are: # - par for parameters (like in optim function) # - fix.arg for optional fixed parameters # - obs for observations (previously dat but conflicts with genoud data.type.int argument) # - ddistnam for distribution name if ("log" %in% argddistname){ fnobj <- function(par, fix.arg, obs, ddistnam){ -sum(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg), log=TRUE) ) ) } } else{ fnobj <- function(par, fix.arg, obs, ddistnam) { -sum(log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) } } } else if(cens && is.null(weights)) #censored data { argpdistname<-names(formals(pdistname)) if (("log" %in% argddistname) & ("log.p" %in% argpdistname)) fnobjcens <- function(par, fix.arg, rcens, lcens, icens, ncens, ddistnam, pdistnam) -sum(do.call(ddistnam, c(list(ncens), as.list(par), as.list(fix.arg), list(log=TRUE)))) - sum(do.call(pdistnam, c(list(lcens), as.list(par), as.list(fix.arg), list(log=TRUE)))) - sum(do.call(pdistnam, c(list(rcens), as.list(par), as.list(fix.arg), list(lower.tail=FALSE), list(log=TRUE)))) - sum(log(do.call(pdistnam, c(list(icens$right), as.list(par), as.list(fix.arg))) - # without log=TRUE here do.call(pdistnam, c(list(icens$left), as.list(par), as.list(fix.arg))) )) # without log=TRUE here else fnobjcens <- function(par, fix.arg, rcens, lcens, icens, ncens, ddistnam, pdistnam) -sum(log(do.call(ddistnam, c(list(ncens), as.list(par), as.list(fix.arg))))) - sum(log(do.call(pdistnam, c(list(lcens), as.list(par), as.list(fix.arg))))) - sum(log(1-do.call(pdistnam, c(list(rcens), as.list(par), as.list(fix.arg))))) - sum(log(do.call(pdistnam, c(list(icens$right), as.list(par), as.list(fix.arg))) - do.call(pdistnam, c(list(icens$left), as.list(par), as.list(fix.arg))) )) }else if(!cens && !is.null(weights)) { fnobj <- function(par, fix.arg, obs, ddistnam) { -sum(weights * log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) } }else if(cens && !is.null(weights)) { fnobjcens <- function(par, fix.arg, rcens, lcens, icens, ncens, ddistnam, pdistnam) { p1 <- log(do.call(ddistnam, c(list(ncens), as.list(par), as.list(fix.arg)))) p2 <- log(do.call(pdistnam, c(list(lcens), as.list(par), as.list(fix.arg)))) p3 <- log(1-do.call(pdistnam, c(list(rcens), as.list(par), as.list(fix.arg)))) p4 <- log(do.call(pdistnam, c(list(icens$right), as.list(par), as.list(fix.arg))) - do.call(pdistnam, c(list(icens$left), as.list(par), as.list(fix.arg))) ) -sum(weights[irow.ncens] * p1) - sum(weights[irow.lcens] * p2) - sum(weights[irow.rcens] * p3) - sum(weights[irow.icens] * p4) } } #get warning value owarn <- getOption("warn") # Try to minimize the minus (log-)likelihood using the base R optim function if(is.null(custom.optim)) { hasbound <- any(is.finite(lower) | is.finite(upper)) # Choice of the optimization method if (optim.method == "default") { meth <- ifelse(length(vstart) > 1, "Nelder-Mead", "BFGS") }else meth <- optim.method if(meth == "BFGS" && hasbound && is.null(gradient)) { meth <- "L-BFGS-B" txt1 <- "The BFGS method cannot be used with bounds without provided the gradient." txt2 <- "The method is changed to L-BFGS-B." warning(paste(txt1, txt2)) } options(warn=ifelse(silent, -1, 0)) #select optim or constrOptim if(hasbound) #finite bounds are provided { if(!is.null(gradient)) { opt.fun <- "constrOptim" }else #gradient == NULL { if(meth == "Nelder-Mead") opt.fun <- "constrOptim" else if(meth %in% c("L-BFGS-B", "Brent")) opt.fun <- "optim" else { txt1 <- paste("The method", meth, "cannot be used by constrOptim() nor optim() without gradient and bounds.") txt2 <- "Only optimization methods L-BFGS-B, Brent and Nelder-Mead can be used in such case." stop(paste(txt1, txt2)) } } if(opt.fun == "constrOptim") { #recycle parameters npar <- length(vstart) #as in optim() line 34 lower <- as.double(rep_len(lower, npar)) #as in optim() line 64 upper <- as.double(rep_len(upper, npar)) # constraints are : Mat %*% theta >= Bnd, i.e. # +1 * theta[i] >= lower[i]; # -1 * theta[i] >= -upper[i] #select rows from the identity matrix haslow <- is.finite(lower) Mat <- diag(npar)[haslow, ] #select rows from the opposite of the identity matrix hasupp <- is.finite(upper) Mat <- rbind(Mat, -diag(npar)[hasupp, ]) colnames(Mat) <- names(vstart) rownames(Mat) <- paste0("constr", 1:NROW(Mat)) #select the bounds Bnd <- c(lower[is.finite(lower)], -upper[is.finite(upper)]) names(Bnd) <- paste0("constr", 1:length(Bnd)) initconstr <- Mat %*% vstart - Bnd if(any(initconstr < 0)) stop("Starting values must be in the feasible region.") if(!cens) { opttryerror <- try(opt <- constrOptim(theta=vstart, f=fnobj, ui=Mat, ci=Bnd, grad=gradient, fix.arg=fix.arg, obs=data, ddistnam=ddistname, hessian=!is.null(gradient), method=meth, ...), silent=TRUE) } else #cens == TRUE opttryerror <- try(opt <- constrOptim(theta=vstart, f=fnobjcens, ui=Mat, ci=Bnd, grad=gradient, ddistnam=ddistname, rcens=rcens, lcens=lcens, icens=icens, ncens=ncens, pdistnam=pdistname, fix.arg=fix.arg, hessian=!is.null(gradient), method=meth, ...), silent=TRUE) if(!inherits(opttryerror, "try-error")) if(length(opt$counts) == 1) #appears when the initial point is a solution opt$counts <- c(opt$counts, NA) }else #opt.fun == "optim" { if(!cens) opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, ddistnam=ddistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) else #cens == TRUE opttryerror <- try(opt <- optim(par=vstart, fn=fnobjcens, fix.arg=fix.arg, gr=gradient, rcens=rcens, lcens=lcens, icens=icens, ncens=ncens, ddistnam=ddistname, pdistnam=pdistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } }else #hasbound == FALSE { opt.fun <- "optim" if(!cens) opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, ddistnam=ddistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) else #cens == TRUE opttryerror <- try(opt <- optim(par=vstart, fn=fnobjcens, fix.arg=fix.arg, gr=gradient, rcens=rcens, lcens=lcens, icens=icens, ncens=ncens, ddistnam=ddistname, pdistnam=pdistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } options(warn=owarn) if (inherits(opttryerror, "try-error")) { warnings("The function optim encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA, length(vstart)), convergence = 100, loglik = NA, hessian = NA, optim.function=opt.fun, fix.arg = fix.arg, optim.method=meth, fix.arg.fun = fix.arg.fun, counts=c(NA, NA))) } if (opt$convergence>0) { warnings("The function optim failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) res <- list(estimate = opt$par, convergence = opt$convergence, value=opt$value, hessian = opt$hessian, optim.function=opt.fun, optim.method=meth, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, weights = weights, counts=opt$counts, optim.message=opt$message, loglik = -opt$value) } else # Try to minimize the minus (log-)likelihood using a user-supplied optim function { options(warn=ifelse(silent, -1, 0)) if (!cens) opttryerror <- try(opt <- custom.optim(fn=fnobj, fix.arg=fix.arg, obs=data, ddistnam=ddistname, par=vstart, ...), silent=TRUE) else opttryerror <-try(opt<-custom.optim(fn=fnobjcens, fix.arg=fix.arg, rcens=rcens, lcens=lcens, icens=icens, ncens=ncens, ddistnam=ddistname, pdistnam=pdistname, par=vstart, ...), silent=TRUE) options(warn=owarn) if (inherits(opttryerror, "try-error")) { warnings("The customized optimization function encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA, length(vstart)), convergence = 100, loglik = NA, hessian = NA, optim.function=custom.optim, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, counts=c(NA, NA))) } if (opt$convergence>0) { warnings("The customized optimization function failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) argdot <- list(...) method.cust <- argdot$method res <- list(estimate = opt$par, convergence = opt$convergence, value=opt$value, hessian = opt$hessian, optim.function = custom.optim, optim.method = method.cust, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, weights = weights, counts=opt$counts, optim.message=opt$message, loglik = -opt$value) } return(res) } ## old function with previous name for censored data mledistcens <- function(censdata, distr, start=NULL, optim.method="default", lower=-Inf, upper=Inf) { stop("The function \"mledistcens\" is no more used. Now the same function \"mledist\" must be used both for censored and non censored data.") } fitdistrplus/R/util-getparam.R0000644000176200001440000000227313375226222016115 0ustar liggesusers# INPUTS # argdistname : argument names of the distribution from names(formals()) # OUTPUTS # parameter names (as a vector) of the distribution (excluding non parameter argument) computegetparam <- function(argdistname) { #remove first argument, that should be "x", "p", "q", or "n", see ?dgamma, pgamma, qgamma argdistname <- argdistname[-1] nonparaminR <- c("x", "p", "q", "n") #defensive programming #remove other arguments, see ?dgamma, pgamma, qgamma, dbeta nonparaminR <- c(nonparaminR, "log", "log.p", "lower.tail", "ncp") nonparaminActuar <- c("limit", "order", "t") nonparaminGamlssdist <- "fast" nonparamspecial <- c("...", "..1", "..2") #see ?dnig, dhyperb, dskewlap, dgig,... nonparaminGenHyperbolic <- c("param", "KOmega", "ibfTol", "nmax", "method", "intTol", "valueOnly", "nInterpol", "uniTol", "subdivisions", "logPars") #see ?dsn nonparamsn <- "dp" plist <- setdiff(argdistname, nonparaminR) plist <- setdiff(plist, nonparaminActuar) plist <- setdiff(plist, nonparaminGamlssdist) plist <- setdiff(plist, nonparamspecial) plist <- setdiff(plist, nonparaminGenHyperbolic) plist <- setdiff(plist, nonparamsn) plist } fitdistrplus/R/vcov.R0000644000176200001440000000602712772503243014321 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Regis Pouillot, Jean-Baptiste Denis, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### var-covariance matrix ### ### R functions ### #already in R # #vcov <- function(object, ...) # UseMethod("vcov") # #vcov.default <- function(object, ...) # return(object) vcov.fitdist <- function(object, ...) { stopifnot(inherits(object, "fitdist")) if (object$method != "mle") warning("The variance-covariance matrix can only be calculated for fits using the mle method") return(object$vcov) } vcov.fitdistcens <- function(object, ...) { stopifnot(inherits(object, "fitdistcens")) return(object$vcov) } fitdistrplus/R/util-testdensity.R0000644000176200001440000000773613375226222016705 0ustar liggesusers# testdpqfun function returns a vector of TRUE when the d,p,q functions exist # and behave like in R (e.g. d,p,qexp()), otherwise a list of messages. # INPUTS #distr : the distribution name #fun: a character vector with letters among d, p, q #start.arg: an initial value list #fix.arg: a fixed value list #discrete: a logical whether the distribution is discrete # OUTPUTS # a vector of logical TRUE or a vector of text messages testdpqfun <- function(distr, fun=c("d","p","q"), start.arg, fix.arg=NULL, discrete=FALSE) { stopifnot(all(is.character(fun))) fun <- fun[fun %in% c("d","p","q")] stopifnot(length(fun) > 0) if(is.vector(start.arg)) start.arg <- as.list(start.arg) if(is.function(fix.arg)) stop("fix.arg should be either a named list or NULL but not a function") op <- options() #get current options #print(getOption("warn")) options(warn=-1) res <- NULL if("d" %in% fun) res <- rbind(res, test1fun(paste0("d", distr), start.arg, fix.arg)) if("p" %in% fun) res <- rbind(res, test1fun(paste0("p", distr), start.arg, fix.arg)) if("q" %in% fun) res <- rbind(res, test1fun(paste0("q", distr), start.arg, fix.arg)) options(op) # reset (all) initial options res } test1fun <- function(fn, start.arg, fix.arg, dpqr) { res <- data.frame(ok=FALSE, txt="") stopifnot(is.list(start.arg)) if(!is.null(fix.arg)) stopifnot(is.list(fix.arg)) #does the function exist? if(!exists(fn, mode="function")) { res$txt <- paste("The", fn, "function must be defined") return(res) } #naming convention if(missing(dpqr)) dpqr <- substr(fn, 1, 1) firstarg_theo <- switch(dpqr, "d"="x", "p"="q", "q"="p", "r"="n") firstarg_found <- names(formals(fn))[1] if(firstarg_found != firstarg_theo) { t0 <- paste("The", fn, "function should have its first argument named:", firstarg_theo) res$txt <- paste(t0, "as in base R") return(res) } #zero-component vector res0 <- try(do.call(fn, c(list(numeric(0)), start.arg, fix.arg)), silent=TRUE) t0 <- paste("The", fn, "function should return a zero-length vector when input has length zero and not raise an error") t1 <- paste("The", fn, "function should return a zero-length vector when input has length zero") if(class(res0) == "try-error") { res$txt <- t0 return(res) } if(length(res0) != 0) { res$txt <- t1 return(res) } #inconsistent value x <- c(0, 1, Inf, NaN, -1) res1 <- try(do.call(fn, c(list(x), start.arg, fix.arg)), silent=TRUE) t2 <- paste("The", fn, "function should return a vector of with NaN values when input has inconsistent values and not raise an error") if(class(res1) == "try-error") { res$txt <- t2 return(res) } #missing value x <- c(0, 1, NA) res2 <- try(do.call(fn, c(list(x), start.arg, fix.arg)), silent=TRUE) t4 <- paste("The", fn, "function should return a vector of with NA values when input has missing values and not raise an error") t5 <- paste("The", fn, "function should return a vector of with NA values when input has missing values and not remove missing values") if(class(res2) == "try-error") { res$txt <- t4 return(res) } if(length(res2) != length(x)) { res$txt <- t5 return(res) } #inconsistent parameter x <- 0:1 start.arg <- lapply(start.arg, function(x) -x) res3 <- try(do.call(fn, c(list(x), start.arg, fix.arg)), silent=TRUE) t6 <- paste("The", fn, "function should return a vector of with NaN values when input has inconsistent parameters and not raise an error") if(class(res3) == "try-error") { res$txt <- t6 return(res) } #wrong parameter name x <- 0:1 names(start.arg) <- paste0(names(start.arg), "_") res4 <- try(do.call(fn, c(list(x), start.arg, fix.arg)), silent=TRUE) t8 <- paste("The", fn, "function should raise an error when names are incorrectly named") if(class(res4) != "try-error") { res$txt <- t8 return(res) } return(data.frame(ok=TRUE, txt="")) } fitdistrplus/R/plotdistcens.R0000644000176200001440000003412013421643654016055 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Regis Pouillot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot functions for censored data ### ### R functions ### plotdistcens <- function(censdata, distr, para, leftNA = -Inf,rightNA = Inf, NPMLE = TRUE, Turnbull = NULL, Turnbull.confint = FALSE, NPMLE.method = "Wang",...) { if (missing(censdata) || !(is.vector(censdata$left) & is.vector(censdata$right) & length(censdata[,1])>1)) stop("datacens must be a dataframe with two columns named left and right and more than one line") if ((missing(distr) & !missing(para)) || (missing(distr) & !missing(para))) stop("distr and para must defined") my3dots <- list(...) if("main" %in% names(my3dots)) specifytitle <- FALSE else specifytitle <- TRUE if (missing(distr)) { onlyCDFplot <- TRUE titleCDF <- "Cumulative distribution" } else { if (!is.character(distr)) distname <- substring(as.character(match.call()$distr), 2) else distname <- distr if (!is.list(para)) stop("'para' must be a named list") ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) onlyCDFplot <- FALSE titleCDF <- "Empirical and theoretical CDFs" } # definition of xlim or lim for data and of xrange, xmininf and xmaxinf ibounds <- c(censdata$right, censdata$left) iboundsnotNA <- ibounds[!is.na(ibounds)] xmin <- min(iboundsnotNA) xmax <- max(iboundsnotNA) xrange <- xmax - xmin xmin <- xmin - 0.1 * xrange xmax <- xmax + 0.1 * xrange xmininf <- xmin - 100 * xrange xmaxinf <- xmax + 100 * xrange xlim <- c(xmin, xmax) #definition of ylim or lim for ECDF ylim <- c(0,1) if (!missing(Turnbull)) { warning("The argument Turnbull is deprecated and should note be used any more. Now use the argument NPMLE to tell if you want to compute a nonparametric maximum likelihood estimation of the cumulative distribution, and the argument NPMLE.method to define the method chosen for the computation (Turnbull or Wang).") if (missing(NPMLE) & missing(NPMLE.method)) { if (Turnbull == TRUE) { NPMLE <- TRUE NPMLE.method <- "Turnbull" } else { NPMLE <- FALSE } } } if ((Turnbull.confint == TRUE) & (NPMLE.method == "Wang")) { warning("When Turnbull.confint is TRUE NPMLE.method is forced to Turnbull." ) NPMLE.method <- "Turnbull" # so the second part of the message will be printed in the following if needed onlyCDFplot <- TRUE } if ((NPMLE.method == "Turnbull") & !missing(distr)) { warning("Q-Q plot and P-P plot are available only using the method implemented in the package npsurv (Wang) with the arguments NPMLE.method at Wang (default recommended arguments)." ) onlyCDFplot <- TRUE } if ((NPMLE == FALSE) & !missing(distr)) { warning("When NPMLE is FALSE the nonparametric maximum likelihood estimation of the cumulative distribution function is not computed. Q-Q plot and P-P plot are available only using the method implemented in the package npsurv (Wang) with the arguments Turnbull.confint at FALSE and NPMLE.method at Wang (default recommended arguments)." ) onlyCDFplot <- TRUE } if (!onlyCDFplot) { pdistname <- paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) qdistname <- paste("q", distname, sep="") if (!exists(qdistname, mode="function")) stop(paste("The ", qdistname, " function must be defined")) densfun <- get(ddistname, mode="function") nm <- names(para) f <- formals(densfun) args <- names(f) m <- match(nm, args) if (any(is.na(m))) stop(paste("'para' specifies names which are not arguments to ", ddistname)) def.par <- par(no.readonly = TRUE) par(mfrow = c(2, 2)) } # Plot of the empirical distribution as an ECDF if (NPMLE) { if (NPMLE.method == "Wang") # plot using package npsurv { db <- censdata db$left[is.na(db$left)] <- -Inf db$right[is.na(db$right)] <- Inf f <- npsurv(db)$f # New xlim calculation form Wang intervals bounds <- c(f$right, f$left) finitebounds <- bounds[is.finite(bounds)] upper <- max(finitebounds) lower <- min(finitebounds) width <- upper - lower xmin.Wang.cdf <- lower - width * 0.1 xmax.Wang.cdf <- upper + width * 0.1 xlim.Wang.cdf <- c(xmin.Wang.cdf, xmax.Wang.cdf) ylim.Wang.cdf <- c(0,1) k <- length(f$left) Fnpsurv <- cumsum(f$p) ## calul des points points pour Q et P dans les GOF stat et graph Fbefore <- c(0, Fnpsurv[-k]) df <- data.frame(left = f$left, right = f$right) # Definition of vertices of each rectangle Qi.left <- df$left # dim k Qi.left4plot <- Qi.left if (is.infinite(Qi.left4plot[1]) | is.nan(Qi.left4plot[1])) Qi.left4plot[1] <- xmininf Qi.right <- df$right Qi.right4plot <- Qi.right if (is.infinite(Qi.right4plot[k]) | is.nan(Qi.right4plot[k])) Qi.right4plot[k] <- xmaxinf Pi.low <- Fbefore Pi.up <- Fnpsurv # Plot of the ECDF if (specifytitle) { plot(1, 1, type = "n", xlim = xlim.Wang.cdf, ylim = ylim.Wang.cdf, xlab = "Censored data", ylab = "CDF", main = titleCDF, ...) } else { plot(1, 1, type = "n", xlim = xlim.Wang.cdf, ylim = ylim.Wang.cdf, xlab = "Censored data", ylab = "CDF", ...) } xmin <- par("usr")[1] xmax <- par("usr")[2] # the line at right of the rectangles dright <- c(f$left[1], rep(f$right, rep(2,k)), f$right[k]) Fright <- rep(c(0,Fnpsurv), rep(2,k+1)) lines(dright, Fright, ...) ### the line at left of the rectangles dleft <- rep(c(f$left,f$right[k]), rep(2,k+1)) Fleft <- c(0,rep(Fnpsurv, rep(2,k)),1) lines(dleft, Fleft, ...) # Add of the filled rectangles for(i in 1:k) { rect(xleft = Qi.left4plot, ybottom = Pi.low, xright = Qi.right4plot, ytop = Pi.up, border = "black", col = "lightgrey", ...) } } else # plot using package survival { survdata <- Surv(time = censdata$left, time2 = censdata$right, type="interval2") survfitted <- survfit(survdata ~ 1) if (Turnbull.confint) { if (specifytitle) { plot(survfitted,fun="event",xlab="Censored data", ylab="CDF",ylim = c(0,1), main = titleCDF, ...) } else { plot(survfitted,fun="event",xlab="Censored data", ylab="CDF", ylim = c(0,1), ...) } } else { if (specifytitle) { plot(survfitted,fun="event",xlab="Censored data", ylab="CDF", conf.int = FALSE, main = titleCDF, ylim = c(0,1), ...) } else { plot(survfitted,fun="event",xlab="Censored data", ylab="CDF", conf.int = FALSE, ylim = c(0,1), ...) } } xmin <- par("usr")[1] xmax <- par("usr")[2] } }else # if !NPMLE { if (is.finite(leftNA) & any(is.na(censdata$left))) censdata[is.na(censdata$left),]$left<-leftNA if (is.finite(rightNA) & any(is.na(censdata$right))) censdata[is.na(censdata$right),]$right<-rightNA lcens<-censdata[is.na(censdata$left),]$right if (any(is.na(lcens)) ) stop("An observation cannot be both right and left censored, coded with two NA values") rcens<-censdata[is.na(censdata$right),]$left noricens<-censdata[!is.na(censdata$left) & !is.na(censdata$right),] # definition of mid point for each observation (if not NA) # in order to have the order of plot of each observation # and order of left and rigth bounds for censored observations midnoricens<-(noricens$left+noricens$right)/2 ordmid<-order(midnoricens) ordlcens<-order(lcens) ordrcens<-order(rcens) nlcens<-length(lcens) nrcens<-length(rcens) nnoricens<-length(noricens$left) n<-length(censdata$left) if (specifytitle) { plot(c(0,0),c(0,0),type="n",xlim=xlim,ylim=ylim,xlab="Censored data", ylab="CDF",main=titleCDF, ...) } else { plot(c(0,0),c(0,0),type="n",xlim=xlim,ylim=ylim,xlab="Censored data", ylab="CDF", ...) } # functions to plot one interval or point for each observation for # observation ordered i out of n plotlcens<-function(i) { y<-i/n lines(c(xmininf,lcens[ordlcens[i]]),c(y,y),...) } if (nlcens>=1) toto<-sapply(1:nlcens,plotlcens) plotnoricens<-function(i) { y<-(i+nlcens)/n if (noricens[ordmid[i],]$left!=noricens[ordmid[i],]$right) lines(c(noricens[ordmid[i],]$left,noricens[ordmid[i],]$right),c(y,y), ...) else points(noricens[ordmid[i],]$left,y,pch=4, ...) } if (nnoricens>=1) toto<-sapply(1:nnoricens,plotnoricens) plotrcens<-function(i) { y<-(i+nlcens+nnoricens)/n lines(c(rcens[ordrcens[i]],xmaxinf),c(y,y), ...) } if (nrcens>=1) toto <- sapply(1:nrcens,plotrcens) } # en of else if NPMLE if (!missing(distr)){ # plot of the theoretical cumulative function if (!is.character(distr)) distname<-substring(as.character(match.call()$distr),2) else distname<-distr if (!is.list(para)) stop("'para' must be a named list") ddistname <- paste0("d", distname) if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) pdistname <- paste0("p", distname) if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) densfun <- get(ddistname,mode="function") nm <- names(para) f <- formals(densfun) args <- names(f) m <- match(nm, args) if (any(is.na(m))) stop(paste("'para' specifies names which are not arguments to ",ddistname)) # plot of continuous data with theoretical distribution s <- seq(xmin, xmax, by=(xmax-xmin)/100) theop <- do.call(pdistname, c(list(s), as.list(para))) lines(s, theop, col="red") } if (!onlyCDFplot) { # definition of rectangles and limits Qitheo.left <- do.call(qdistname, c(list(Pi.low), as.list(para))) Qitheo.right <- do.call(qdistname, c(list(Pi.up), as.list(para))) xmin.Wang.qq <- min(xmin.Wang.cdf, Qitheo.right[-k]) xmax.Wang.qq <- max(xmin.Wang.cdf, Qitheo.left[-1]) xlim.Wang.qq <- c(xmin.Wang.qq, xmax.Wang.qq) Qitheo.left4plot <- Qitheo.left if (is.infinite(Qitheo.left4plot[1]) | is.nan(Qitheo.left4plot[1])) Qitheo.left4plot[1] <- xmininf Qitheo.right4plot <- Qitheo.right if (is.infinite(Qitheo.right4plot[k]) | is.nan(Qitheo.right4plot[k])) Qitheo.right4plot[k] <- xmaxinf ## Q-Q plot plot(1, 1, type = "n", main = "Q-Q plot", xlim = xlim.Wang.qq, ylim = xlim.Wang.qq, xlab = "Theoretical quantiles", ylab = "Empirical quantiles") rect(xleft = Qitheo.left4plot, ybottom = Qi.left4plot, xright = Qitheo.right4plot, ytop = Qi.right4plot, border = "black", col = "lightgrey") abline(0,1) ## P-P plot plot(1, 1, type = "n", main = "P-P plot", xlim = ylim, ylim = ylim, xlab = "Theoretical probabilities", ylab = "Empirical probabilities") # plot of rectangles Pitheo.low <- do.call(pdistname, c(list(Qi.left), as.list(para))) Pitheo.up <- do.call(pdistname, c(list(Qi.right), as.list(para))) rect(xleft = Pitheo.low, ybottom = Pi.low, xright = Pitheo.up, ytop = Pi.up, border = "black", col = "lightgrey") abline(0,1) par(def.par) } invisible() } fitdistrplus/R/util-wtdstat.R0000644000176200001440000001517212772503243016012 0ustar liggesusers############################################################################# # Copyright (c) 2015 Frank E Harrell Jr # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# #some functions from Hmisc also under GPL #From wtd.stats.s (line 1) of the Hmisc package wtd.mean <- function(x, weights=NULL, normwt='ignored', na.rm=TRUE) { if(!length(weights)) return(mean(x, na.rm=na.rm)) if(na.rm) { s <- !is.na(x + weights) x <- x[s] weights <- weights[s] } sum(weights*x)/sum(weights) } #From wtd.stats.s (line 15) of the Hmisc package wtd.var <- function(x, weights=NULL, normwt=FALSE, na.rm=TRUE, method = c('unbiased', 'ML')) { method <- match.arg(method) if(!length(weights)) { if(na.rm) x <- x[!is.na(x)] return(var(x)) } if(na.rm) { s <- !is.na(x + weights) x <- x[s] weights <- weights[s] } if(normwt) weights <- weights * length(x) / sum(weights) if(method == 'ML') return(as.numeric(stats::cov.wt(cbind(x), weights, method = "ML")$cov)) sw <- sum(weights) xbar <- sum(weights * x) / sw sum(weights*((x - xbar)^2)) / (sw - (if(normwt) sum(weights ^ 2) / sw else 1)) } #From wtd.stats.s (line 43) of the Hmisc package wtd.quantile <- function(x, weights=NULL, probs=c(0, .25, .5, .75, 1), type='quantile', normwt=FALSE, na.rm=TRUE) { if(!length(weights)) return(quantile(x, probs=probs, na.rm=na.rm)) type <- match.arg(type) if(any(probs < 0 | probs > 1)) stop("Probabilities must be between 0 and 1 inclusive") nams <- paste(format(round(probs * 100, if(length(probs) > 1) 2 - log10(diff(range(probs))) else 2)), "%", sep = "") w <- wtd.table(x, weights, na.rm=na.rm, normwt=normwt, type='list') x <- w$x wts <- w$sum.of.weights n <- sum(wts) order <- 1 + (n - 1) * probs low <- pmax(floor(order), 1) high <- pmin(low + 1, n) order <- order %% 1 ## Find low and high order statistics ## These are minimum values of x such that the cum. freqs >= c(low,high) allq <- approx(cumsum(wts), x, xout=c(low,high), method='constant', f=1, rule=2)$y k <- length(probs) quantiles <- (1 - order)*allq[1:k] + order*allq[-(1:k)] names(quantiles) <- nams return(quantiles) } #From wtd.stats.s (line 119) of the Hmisc package wtd.table <- function(x, weights=NULL, type=c('list','table'), normwt=FALSE, na.rm=TRUE) { type <- match.arg(type) if(!length(weights)) weights <- rep(1, length(x)) #isdate <- testDateTime(x) ## 31aug02 + next 2 ax <- attributes(x) ax$names <- NULL if(is.character(x)) x <- as.factor(x) lev <- levels(x) x <- unclass(x) if(na.rm) { s <- !is.na(x + weights) x <- x[s, drop=FALSE] ## drop is for factor class weights <- weights[s] } n <- length(x) if(normwt) weights <- weights * length(x) / sum(weights) i <- order(x) # R does not preserve levels here x <- x[i]; weights <- weights[i] if(anyDuplicated(x)) { ## diff(x) == 0 faster but doesn't handle Inf weights <- tapply(weights, x, sum) if(length(lev)) { levused <- lev[sort(unique(x))] if((length(weights) > length(levused)) && any(is.na(weights))) weights <- weights[!is.na(weights)] if(length(weights) != length(levused)) stop('program logic error') names(weights) <- levused } if(!length(names(weights))) stop('program logic error') if(type=='table') return(weights) x <- all.is.numeric(names(weights), 'vector') #if(isdate) # attributes(x) <- c(attributes(x),ax) names(weights) <- NULL return(list(x=x, sum.of.weights=weights)) } xx <- x #if(isdate) # attributes(xx) <- c(attributes(xx),ax) if(type=='list') list(x=if(length(lev))lev[x] else xx, sum.of.weights=weights) else { names(weights) <- if(length(lev)) lev[x] else xx weights } } #From Misc.s (line 241) of the Hmisc package all.is.numeric <- function(x, what=c('test','vector'), extras=c('.','NA')) { what <- match.arg(what) x <- sub('[[:space:]]+$', '', x) x <- sub('^[[:space:]]+', '', x) xs <- x[!x %in% c('',extras)] #originally %nin% isnum <- suppressWarnings(!any(is.na(as.numeric(xs)))) if(what=='test') isnum else if(isnum) as.numeric(x) else x } fitdistrplus/R/util-manageparam.R0000644000176200001440000000544013310705056016561 0ustar liggesusers# checkparam function checks start.arg and fix.arg that parameters are named correctly # INPUTS # start.arg : starting values for optimization or the function to compute them from data or NULL # fix.arg : fixed values of paramaters or the function to compute them from data or NULL # obs : the full dataset # distname : name of the distribution # OUTPUTS # two named list with untested components manageparam <- function(start.arg, fix.arg, obs, distname) { #if clause with 3 different cases: #start.arg : NULL | named list | a function if(is.null(start.arg)) { trystart <- try(start.arg.default(obs, distname), silent = TRUE) if(class(trystart) == "try-error") { cat("Error in computing default starting values.\n") stop(trystart) } lstart <- trystart #lstart should be a named list but check it hasnoname <- is.null(names(lstart)) || !is.list(lstart) if(hasnoname) stop("Starting values must be a named list, error in default starting value.") }else if(is.list(start.arg)) { hasnoname <- is.null(names(start.arg)) if(hasnoname) stop("Starting values must be a named list (or a function returning a named list).") lstart <- start.arg }else if(is.function(start.arg)) { trystart <- try(start.arg(obs), silent = TRUE) if(class(trystart) == "try-error") { cat("Error in computing starting values with your function.\n") stop(trystart) } lstart <- trystart hasnoname <- is.null(names(lstart)) || !is.list(lstart) if(hasnoname) stop("Starting values must be a named list, your function does not return that.") }else stop("Wrong type of argument for start") #if clause with 3 different cases: #fix.arg : NULL | named list | a function if(is.null(fix.arg)) { lfix <- NULL }else if(is.list(fix.arg)) { hasnoname <- is.null(names(fix.arg)) if(hasnoname) stop("Fixed parameter values must be a named list (or a function returning a named list).") lfix <- fix.arg }else if(is.function(fix.arg)) { tryfix <- try(fix.arg(obs), silent = TRUE) if(class(tryfix) == "try-error") { cat("Error in computing fixed parameter values with your function.\n") stop(tryfix) } lfix <- tryfix hasnoname <- is.null(names(lfix)) || !is.list(lfix) if(hasnoname) stop("Fixed parameter values must be a named list, your function does not return that.") }else stop("Wrong type of argument for fix.arg") #eliminate arguments both in lstart and lfix (when start.arg was NULL) if(is.null(start.arg) && !is.null(lfix)) { lstart <- lstart[!names(lstart) %in% names(lfix)] if(length(lstart) == 0) stop("Don't need to use fitdist() if all parameters have fixed values") } list("start.arg"=lstart, "fix.arg"=lfix) } fitdistrplus/R/bootdist.R0000644000176200001440000002501713323615055015171 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### bootstrap in fitdistrplus ### ### R functions ### bootdist <- function (f, bootmethod="param", niter=1001, silent=TRUE, parallel = c("no", "snow", "multicore"), ncpus) { if (niter<10) stop("niter must be an integer above 10") bootmethod <- match.arg(bootmethod, c("param", "nonparam")) parallel <- match.arg(parallel, c("no", "snow", "multicore")) if (parallel == "multicore" & .Platform$OS.type == "windows") { parallel <- "snow" warning("As the multicore option is not supported on Windows it was replaced by snow") } if ((parallel == "snow" | parallel == "multicore") & missing(ncpus)) stop("You have to specify the number of available processors to parallelize the bootstrap") if (!inherits(f, "fitdist")) stop("Use only with 'fitdist' objects") if(!is.null(f$weights)) stop("Bootstrap is not yet available when using weights") #simulate bootstrap data if (bootmethod == "param") { # parametric bootstrap rdistname <- paste("r", f$distname, sep="") if (!exists(rdistname, mode="function")) stop(paste("The ", rdistname, " function must be defined")) rdata <- do.call(rdistname, c(list(niter*f$n), as.list(f$estimate), f$fix.arg)) dim(rdata) <- c(f$n, niter) } else { # non parametric bootstrap rdata <- sample(f$data, size=niter*f$n, replace=TRUE) dim(rdata) <- c(f$n, niter) } #compute bootstrap estimates foncestim <- switch(f$method, "mle"=mledist, "qme"=qmedist, "mme"=mmedist, "mge"=mgedist) start <- as.list(f$estimate) #a named vector is no longer is accepted as starting values. if(is.function(f$fix.arg.fun)) fix.arg <- f$fix.arg.fun else fix.arg <- f$fix.arg if (is.null(f$dots) && !is.function(fix.arg)) { func <- function(iter) { res <- try(do.call(foncestim, list(data=rdata[, iter], distr=f$distname, start=start, fix.arg=fix.arg, checkstartfix=TRUE)), silent=silent) if(inherits(res, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(res$estimate, res$convergence)) } }else if (is.null(f$dots) && is.function(fix.arg)) { func <- function(iter) { fix.arg.iter <- fix.arg(rdata[, iter]) res <- try(do.call(foncestim, list(data=rdata[, iter], distr=f$distname, start=start, fix.arg=fix.arg.iter, checkstartfix=TRUE)), silent=silent) if(inherits(res, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(res$estimate, res$convergence)) } }else if(!is.null(f$dots) && !is.function(fix.arg)) { func <- function(iter) { res <- try(do.call(foncestim, c(list(data=rdata[, iter], distr=f$distname, start=start, fix.arg=fix.arg, checkstartfix=TRUE), f$dots)), silent=silent) if(inherits(res, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(res$estimate, res$convergence)) } }else if(!is.null(f$dots) && is.function(fix.arg)) { func <- function(iter) { fix.arg.iter <- fix.arg(rdata[, iter]) res <- try(do.call(foncestim, c(list(data=rdata[, iter], distr=f$distname, start=start, fix.arg=fix.arg.iter, checkstartfix=TRUE), f$dots)), silent=silent) if(inherits(res, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(res$estimate, res$convergence)) } }else stop("wrong implementation in bootdist") owarn <- getOption("warn") oerr <- getOption("show.error.messages") options(warn=ifelse(silent, -1, 0), show.error.messages=!silent) # parallel or sequential computation if (parallel != "no") { if (parallel == "snow") type <- "PSOCK" else if (parallel == "multicore") type <- "FORK" clus <- parallel::makeCluster(ncpus, type = type) resboot <- parallel::parSapply(clus, 1:niter, func) parallel::stopCluster(clus) } else { resboot <- sapply(1:niter, func) } options(warn=owarn, show.error.messages=oerr) rownames(resboot) <- c(names(start), "convergence") if (length(resboot[, 1])>2) { estim <- data.frame(t(resboot)[, -length(resboot[, 1])]) bootCI <- cbind(apply(resboot[-length(resboot[, 1]), ], 1, median, na.rm=TRUE), apply(resboot[-length(resboot[, 1]), ], 1, quantile, 0.025, na.rm=TRUE), apply(resboot[-length(resboot[, 1]), ], 1, quantile, 0.975, na.rm=TRUE)) colnames(bootCI) <- c("Median", "2.5%", "97.5%") } else { estim <- as.data.frame(t(resboot)[, -length(resboot[, 1])]) names(estim) <- names(f$estimate) bootCI <- c(median(resboot[-length(resboot[, 1]), ], na.rm=TRUE), quantile(resboot[-length(resboot[, 1]), ], 0.025, na.rm=TRUE), quantile(resboot[-length(resboot[, 1]), ], 0.975, na.rm=TRUE)) names(bootCI) <- c("Median", "2.5%", "97.5%") } # code of convergence of the optimization function for each iteration converg <- t(resboot)[, length(resboot[, 1])] res <- structure(list(estim=estim, converg=converg, method=bootmethod, nbboot=niter, CI=bootCI, fitpart=f), class="bootdist") res } print.bootdist <- function(x, ...){ if (!inherits(x, "bootdist")) stop("Use only with 'bootdist' objects") if (x$method=="param") cat("Parameter values obtained with parametric bootstrap \n") else cat("Parameter values obtained with nonparametric bootstrap \n") print(head(x$estim), ...) nconverg <- length(x$converg[x$converg==0]) if (nconverg < length(x$converg)) { cat("\n") cat("The estimation method converged only for", nconverg, "among", length(x$converg), "iterations \n") } } plot.bootdist <- function(x, main="Bootstrapped values of parameters", enhance=FALSE, trueval=NULL, rampcol=NULL, nbgrid = 100, nbcol = 100, ...){ if (!inherits(x, "bootdist")) stop("Use only with 'bootdist' objects") if (dim(x$estim)[2]==1) { stripchart(x$estim, method="jitter", main=main, xlab="Bootstrapped values of the parameter", ...) } else { if(!is.logical(enhance)) stop("wrong argument enhance for plot.bootdist.") if (!enhance) { if(is.null(trueval)) #no true value supplied pairs(data.matrix(x$estim), main=main, ...) else #some true value supplied pairs4boot(x$estim, main=main, trueval=trueval, enhance=FALSE, ...) } else { if(is.null(rampcol)) rampcol <- c("green", "yellow", "orange", "red") pairs4boot(x$estim, main=main, trueval=trueval, col4ramp = rampcol, nbgrid = nbgrid, nbcol = nbcol, ...) } } } summary.bootdist <- function(object, ...){ if (!inherits(object, "bootdist")) stop("Use only with 'bootdist' objects") class(object) <- c("summary.bootdist", class(object)) object } print.summary.bootdist <- function(x, ...){ if (!inherits(x, "summary.bootdist")) stop("Use only with 'summary.bootdist' objects") if (x$method=="param") cat("Parametric bootstrap medians and 95% percentile CI \n") else cat("Nonparametric bootstrap medians and 95% percentile CI \n") print(x$CI) nconverg <- length(x$converg[x$converg==0]) if (nconverg < length(x$converg)) { cat("\n") cat("The estimation method converged only for", nconverg, "among", length(x$converg), "iterations \n") } } fitdistrplus/R/plotdist.R0000644000176200001440000003023013315137601015172 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot functions for non-censored data ### ### R functions ### plotdist <- function(data, distr, para, histo = TRUE, breaks="default", demp = FALSE, discrete, ...) { def.par <- par(no.readonly = TRUE) if (missing(data) || !is.vector(data, mode="numeric")) stop("data must be a numeric vector") if ((missing(distr) & !missing(para)) || (missing(distr) & !missing(para))) stop("distr and para must defined") if (!histo & !demp) stop("one the arguments histo and demp must be put to TRUE") xlim <- c(min(data), max(data)) # for plot of discrete distributions s <- sort(data) n <- length(data) if (missing(distr)) { ## Plot of data only par(mfrow=c(1, 2)) if(missing(discrete)) discrete <- FALSE if (!discrete) { # plot for continuous data alone obsp <- ppoints(s) # PLOT 1 --- if (histo) { if(demp) { if (breaks=="default") h <- hist(data, freq=FALSE, xlab="Data", main="Empirical density", ...) else h <- hist(data, freq=FALSE, xlab="Data", main="Empirical density", breaks=breaks, ...) lines(density(data)$x, density(data)$y, lty=2, col="black") } else { if (breaks=="default") h <- hist(data, freq=FALSE, xlab="Data", main="Histogram", ...) else h <- hist(data, freq=FALSE, xlab="Data", main="Histogram", breaks=breaks, ...) } } else { h <- hist(data, freq=FALSE, xlab="Data", main="Histogram", plot = FALSE, ...) plot(density(data)$x, density(data)$y, lty=1, col="black", type = "l", xlab="Data", main=paste("Empirical density"), ylab = "Density",...) } # PLOT 2 --- plot(s, obsp, main=paste("Cumulative distribution"), xlab="Data", xlim=c(h$breaks[1], h$breaks[length(h$breaks)]), ylab="CDF", ...) } else { # plot for discrete data alone if (breaks!="default") warning("Breaks are not taken into account for discrete data") # plot of empirical distribution t <- table(data) xval <- as.numeric(names(t)) # xvalfin <- seq(min(xval), max(xval),by=1) ydobs <- as.vector(t)/n ydmax <- max(ydobs) plot(xval, ydobs, type="h", xlim=xlim, ylim=c(0, ydmax), main="Empirical distribution", xlab="Data", ylab="Density", ...) # plot of the cumulative probability distributions ycdfobs <- cumsum(ydobs) plot(xval, ycdfobs, type="p", xlim=xlim, ylim=c(0, 1), main="Empirical CDFs", xlab="Data", ylab="CDF", ...) } } #end of if (missing(distr)) else { # plot of data and distribution if (!is.character(distr)) distname <- substring(as.character(match.call()$distr), 2) else distname <- distr if (!is.list(para)) stop("'para' must be a named list") ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) pdistname <- paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) qdistname <- paste("q", distname, sep="") if (!exists(qdistname, mode="function")) stop(paste("The ", qdistname, " function must be defined")) densfun <- get(ddistname, mode="function") nm <- names(para) f <- formals(densfun) args <- names(f) m <- match(nm, args) if (any(is.na(m))) stop(paste("'para' specifies names which are not arguments to ", ddistname)) if(missing(discrete)) { if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) discrete <- TRUE else discrete <- FALSE } if (!discrete) { # plot of continuous data with theoretical distribution par(mfrow=c(2, 2)) obsp <- ppoints(s) # plot of empirical and theoretical density # computes densities in order to define limits for y-axis if (breaks=="default") h <- hist(data, plot=FALSE) else h <- hist(data, breaks=breaks, plot=FALSE, ...) xhist <- seq(min(h$breaks), max(h$breaks), length=1000) yhist <- do.call(ddistname, c(list(xhist), as.list(para))) if(length(yhist) != length(xhist)) stop("problem when computing densities.") ymax <- ifelse(is.finite(max(yhist)), max(max(h$density), max(yhist)), max(h$density)) # PLOT 1 - plot of empirical and theoretical density # empirical density if (histo) { hist(data, freq=FALSE, xlab="Data", ylim=c(0, ymax), breaks=h$breaks, main=paste("Empirical and theoretical dens."), ...) if(demp) { lines(density(data)$x, density(data)$y, lty=2, col="black") } } else plot(density(data)$x, density(data)$y, lty=2, col="black", type = "l", xlab="Data", main=paste("Empirical and theoretical dens."), ylab = "Density", xlim = c(min(h$breaks), max(h$breaks)), ...) if (demp) legend("topright",bty="n",lty=c(2,1),col=c("black","red"), legend=c("empirical","theoretical"), bg="white",cex=0.7) # Add of theoretical density lines(xhist, yhist,lty=1,col="red") # PLOT 2 - plot of the qqplot theoq <- do.call(qdistname, c(list(obsp), as.list(para))) if(length(theoq) != length(obsp)) stop("problem when computing quantities.") plot(theoq, s, main=" Q-Q plot", xlab="Theoretical quantiles", ylab="Empirical quantiles", ...) abline(0, 1) # PLOT 3 - plot of the cumulative probability distributions xmin <- h$breaks[1] xmax <- h$breaks[length(h$breaks)] if(length(s) != length(obsp)) stop("problem when computing probabilities.") plot(s, obsp, main=paste("Empirical and theoretical CDFs"), xlab="Data", ylab="CDF", xlim=c(xmin, xmax), ...) sfin <- seq(xmin, xmax, by=(xmax-xmin)/100) theopfin <- do.call(pdistname, c(list(sfin), as.list(para))) lines(sfin, theopfin, lty=1,col="red") # PLOT 4 - plot of the ppplot theop <- do.call(pdistname, c(list(s), as.list(para))) if(length(theop) != length(obsp)) stop("problem when computing probabilities.") plot(theop, obsp, main="P-P plot", xlab="Theoretical probabilities", ylab="Empirical probabilities", ...) abline(0, 1) } else { # plot of discrete data with theoretical distribution par(mfrow=c(1, 2)) if (breaks!="default") warning("Breaks are not taken into account for discrete distributions") # plot of empirical and theoretical distributions t <- table(data) xval <- as.numeric(names(t)) xvalfin <- seq(min(xval), max(xval),by=1) xlinesdec <- min((max(xval)-min(xval))/30, 0.4) yd <- do.call(ddistname, c(list(xvalfin), as.list(para))) if(length(yd) != length(xvalfin)) stop("problem when computing density points.") ydobs <- as.vector(t)/n ydmax <- max(yd, ydobs) plot(xvalfin+xlinesdec, yd, type='h', xlim=c(min(xval), max(xval)+xlinesdec), ylim=c(0, ydmax), lty=1, col="red", main="Emp. and theo. distr.", xlab="Data", ylab="Density", ...) points(xval, ydobs, type='h', lty=1, col="black",...) legend("topright", lty=c(1, 1), col=c("black","red"), legend=c("empirical", paste("theoretical")), bty="o", bg="white",cex=0.6,...) # plot of the cumulative probability distributions ycdf <- do.call(pdistname, c(list(xvalfin), as.list(para))) if(length(ycdf) != length(xvalfin)) stop("problem when computing probabilities.") plot(xvalfin, ycdf, type="s", xlim=c(min(xval), max(xval)+xlinesdec), ylim=c(0, 1), lty=1, col="red", main="Emp. and theo. CDFs", xlab="Data", ylab="CDF", ...) # plot(xvalfin+xlinesdec, ycdf, type="h", xlim=c(min(xval), max(xval)+xlinesdec), # ylim=c(0, 1), lty=3, col="red", # main="Emp. and theo. CDFs", xlab="Data", # ylab="CDF", ...) ycdfobs <- cumsum(ydobs) points(xval,ycdfobs, type="p", col="black",...) legend("bottomright", lty=c(1, 1), col=c("black","red"), legend=c("empirical", paste("theoretical")), bty="o", bg ="white",cex=0.6,...) } } par(def.par) invisible() } fitdistrplus/R/denscomp.R0000644000176200001440000003261413324110466015150 0ustar liggesusers############################################################################# # Copyright (c) 2012 Christophe Dutang, Aurelie Siberchicot, # Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot density functions for various fits ### of continuous distribution(s) (fitdist results) ### on a same dataset ### ### R functions ### denscomp <- function(ft, xlim, ylim, probability = TRUE, main, xlab, ylab, datacol, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "topright", ylegend = NULL, demp = FALSE, dempcol = "black", plotstyle = "graphics", discrete, fitnbpts = 101, fittype="l", ...) { if(inherits(ft, "fitdist")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdist' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdist")))) stop("argument ft must be a list of 'fitdist' objects") } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("denscomp is not yet available when using weights") # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # parameters used in 'hist' function ###### Where are they used - to remove ? !!!!!!!!!!!!!!!!!!!!!!!! argshistPlotFalse <- c("breaks", "nclass", "include.lowest", "right") argshistPlotTrue <- c(argshistPlotFalse, "density", "angle", "border", "axes", "labels") # manage default parameters nft <- length(ft) if (missing(datacol)) datacol <- NULL if (missing(fitcol)) fitcol <- 2:(nft+1) if (missing(fitlty)) fitlty <- 1:nft fitcol <- rep(fitcol, length.out=nft) fitlty <- rep(fitlty, length.out=nft) fittype <- match.arg(fittype[1], c("p", "l", "o")) if (missing(xlab)) xlab <- "data" if (missing(ylab)) ylab <- ifelse(probability, "Density", "Frequency") if (missing(main)) main <- ifelse(probability, "Histogram and theoretical densities", "Histogram and theoretical frequencies") # check data mydata <- ft[[1]]$data verif.ftidata <- function(fti) { if (any(fti$data != mydata)) stop("All compared fits must have been obtained with the same dataset") invisible() } lapply(ft, verif.ftidata) # check xlim if(missing(xlim)) { xmin <- min(mydata) xmax <- max(mydata) xlim <- range(mydata) }else { xmin <- xlim[1] xmax <- xlim[2] } # initiate discrete if not given if(missing(discrete)) { discrete <- any(sapply(ft, function(x) x$discrete)) } if(!is.logical(discrete)) stop("wrong argument 'discrete'.") if(!is.logical(demp)) stop("wrong argument 'discrete'.") # some variable definitions n <- length(mydata) if(!discrete) sfin <- seq(xmin, xmax, length.out = fitnbpts[1]) else sfin <- unique(round(seq(xmin, xmax, length.out = fitnbpts[1]), digits = 0)) reshist <- hist(mydata, plot = FALSE, ...) if (!discrete) { if (probability) { scalefactor <- 1 } else { if (length(unique(diff(reshist$breaks))) > 1) # wrong histogram and not possibleto compute a scalefactor stop("You should not use probability = FALSE with non-equidistant breaks for the histogram !") else scalefactor <- n * diff(reshist$breaks)[1] } # previous writing that gave incorrect output in case of probability = 1 and non-equidistant breaks # scalefactor <- ifelse(probability, 1, n * diff(reshist$breaks)) } else { scalefactor <- ifelse(probability, 1, n) } # binwidth <- min(diff(reshist$breaks)) # computation of each fitted distribution comput.fti <- function(i) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname ddistname <- paste("d", distname, sep="") do.call(ddistname, c(list(sfin), as.list(para))) * scalefactor } fitteddens <- sapply(1:nft, comput.fti) if(NCOL(fitteddens) != nft || NROW(fitteddens) != length(sfin)) stop("problem when computing fitted densities.") # check ylim if (missing(ylim)) { if(!probability) if (discrete) { ylim <- c(0, max(as.numeric(table(mydata)))) } else { ylim <- c(0, max(reshist$counts)) } else # so if probability { if (discrete) { ylim <- c(0, max(as.numeric(table(mydata))/length(mydata))) } else { ylim <- c(0, max(reshist$density)) } } ylim <- range(ylim, fitteddens) }else ylim <- range(ylim) # in case of users enter a bad ylim # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } # forces demp to TRUE if discrete is TRUE if(discrete) demp <- TRUE #add empirical density/fmp to legend vectors if(demp) { legendtext <- c(legendtext, "emp.") fitlty <- c(fitlty, 1) fitcol <- c(fitcol, dempcol) } if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## if(!discrete) { #main plotting reshist <- hist(mydata, main = main, xlab = xlab, ylab = ylab, xlim = xlim, ylim = ylim, col = datacol, probability = probability, ...) #plot fitted densities (line) for(i in 1:nft) lines(sfin, fitteddens[,i], lty=fitlty[i], col=fitcol[i], ...) #plot empirical density if(demp) lines(density(mydata)$x, density(mydata)$y * scalefactor, col=dempcol) if (addlegend) legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, lty=fitlty, col=fitcol, ...) }else # so if discrete { #main plotting # plotting of an empty histogramm reshist <- hist(mydata, main = main, xlab = xlab, ylab = ylab, xlim = xlim, ylim = ylim, border = "white", probability = probability, ...) eps <- diff(range(sfin))/200 if(fittype %in% c("l", "o")) { #plot fitted mass probability functions (line) for(i in 1:nft) lines(sfin+(i)*eps, fitteddens[,i], lty=fitlty[i], col=fitcol[i], type="h", ...) #plot empirical mass probabilty function if(demp) { empval <- sort(unique(mydata)) empprob <- as.numeric(table(mydata))/length(mydata) * scalefactor lines(empval, empprob, col=dempcol, type="h") } } if(fittype %in% c("p", "o")) { #plot fitted mass probability functions (point) for(i in 1:nft) points(sfin+(i)*eps, fitteddens[,i], col=fitcol[i], pch=1) #plot empirical density if(demp) { empval <- sort(unique(mydata)) empprob <- as.numeric(table(mydata))/length(mydata) * scalefactor points(empval, empprob, col=dempcol, pch=1) } } if (addlegend && fittype %in% c("l", "o")) legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, lty=fitlty, col=fitcol, ...) if (addlegend && fittype == "p") legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, pch=1, col=fitcol, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## # recode the legend position according to available positions in ggplot2 if(xlegend %in% c("topleft", "bottomleft")) xlegend <- "left" if(xlegend %in% c("topright", "bottomright")) xlegend <- "right" # the default colors of the bars is the same as panel.background.fill in theme_grey() if(is.null(datacol)) datacol <- "grey92" if (!discrete) { # structure the fitteddens in a relevant data.frame fitteddens <- as.data.frame(fitteddens) colnames(fitteddens) <- unlist(lapply(ft, function(X) X["distname"])) fitteddens <- stack(fitteddens) fitteddens$sfin <- sfin # sfin is recycled in the standard fashion fitteddens$ind <- factor(fitteddens$ind, levels = unique(fitteddens$ind)) # reorder levels in the appearance order of the input if(demp) # bind empirical data if demp is TRUE fitteddens <- rbind(fitteddens, data.frame(values = density(mydata)$y * scalefactor, ind = "demp", sfin = density(mydata)$x)) histdata <- data.frame(values = mydata, ind = "hist", sfin = mydata) # the added data must have the same column names as the main data to be compatible with ggplot ggdenscomp <- ggplot2::ggplot(fitteddens, ggplot2::aes_(quote(sfin), quote(values), group = quote(ind), colour = quote(ind))) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::ggtitle(main) + ggplot2::coord_cartesian(xlim = c(xlim[1], xlim[2]), ylim = c(ylim[1], ylim[2])) + {if(probability) ggplot2::geom_histogram(data = histdata, ggplot2::aes_(quote(values), quote(..density..)), breaks = reshist$breaks, boundary = 0, show.legend = FALSE, col = "black", alpha = 1, fill = datacol) else ggplot2::geom_histogram(data = histdata, ggplot2::aes_(quote(values), quote(..count..)), breaks = reshist$breaks, boundary = 0, show.legend = FALSE, col = "black", alpha = 1, fill = datacol)} + ggplot2::geom_line(data = fitteddens, ggplot2::aes_(linetype = quote(ind), colour = quote(ind)), size = 0.4) + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5)) + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend)) else ggplot2::theme(legend.position = "none")} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitlty, labels = legendtext) return(ggdenscomp) } else { eps <- diff(range(sfin))/200 # structure the fitteddens in a relevant data.frame fitteddens <- as.data.frame(fitteddens) colnames(fitteddens) <- unlist(lapply(ft, function(X) X["distname"])) fitteddens <- stack(fitteddens) fitteddens$ind <- factor(fitteddens$ind, levels = unique(fitteddens$ind)) # reorder levels in the appearance order of the input fitteddens$sfin <- sfin + sapply(fitteddens$ind, function(X) which(X == levels(fitteddens$ind))) *eps # sfin is recycled in the standard fashion if(demp) # bind empirical data if demp is TRUE fitteddens <- rbind(fitteddens, data.frame(values = as.numeric(table(mydata))/length(mydata) * scalefactor, ind = "demp", sfin = as.numeric(names(table(mydata))))) ggdenscomp <- ggplot2::ggplot(fitteddens, ggplot2::aes_(quote(sfin), quote(values), group = quote(ind), colour = quote(ind))) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::ggtitle(main) + ggplot2::coord_cartesian(xlim = c(xlim[1], xlim[2]), ylim = c(ylim[1], ylim[2])) + {if(fittype %in% c("l", "o")) ggplot2::geom_segment(data = fitteddens, ggplot2::aes_(x = quote(sfin), xend = quote(sfin), y = 0, yend = quote(values), linetype = quote(ind)))} + {if(fittype %in% c("p", "o")) ggplot2::geom_point(data = fitteddens, ggplot2::aes_(x = quote(sfin), y = quote(values), colour = quote(ind)), shape = 1)} + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5)) + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend)) else ggplot2::theme(legend.position = "none")} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitlty, labels = legendtext) return(ggdenscomp) } } } fitdistrplus/R/fitbench.R0000644000176200001440000001327213310705056015121 0ustar liggesusers############################################################################# # Copyright (c) 2016 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### Benchmark of optimization algorithms to compute estimate ### ### R functions ### fitbench <- function(data, distr, method, grad=NULL, control=list(trace=0, REPORT=1, maxit=1000), lower=-Inf, upper=+Inf, ...) { if(method != "mle") stop("not supported") hasbound <- any(is.finite(lower) | is.finite(upper)) hasgrad <- !is.null(grad) reslist <- NULL # 1 - methods without gradient without constraint (always possible) for(meth in c("BFGS", "Nelder", "CG")) #CG with FR update { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, optim.method=meth, control=control, ...))[3] reslist <- c(reslist, list(res1fit)) } for(type in 2:3) #CG with PR or BS updates { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, optim.method="CG", control=c(control, type=type), ...))[3] reslist <- c(reslist, list(res1fit)) } fullname <- c("BFGS", "NM", paste0("CG", c("FR", "PR", "BS"))) # 2 - methods without gradient with constraints if(hasbound) { for(meth in c("L-BFGS-B", "Nelder")) { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, optim.method=meth, control=control, lower=lower, upper=upper, ...))[3] reslist <- c(reslist, list(res1fit)) } fullname <- c(fullname, "L-BFGS-B", "NM-B") } # 3 - methods with gradient without constraint if(hasgrad) { for(meth in c("BFGS", "CG")) #CG with FR update { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, gradient=grad, optim.method=meth, control=control, ...))[3] reslist <- c(reslist, list(res1fit)) } for(type in 2:3) #CG with PR or BS updates { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, gradient=grad, optim.method="CG", control=c(control, type=type), ...))[3] reslist <- c(reslist, list(res1fit)) } fullname <- c(fullname, paste0("G-",c("BFGS", paste0("CG", c("FR", "PR", "BS")))) ) } # 4 - methods with gradient with constraints if(hasbound && hasgrad) { for(meth in c("BFGS", "Nelder", "CG")) #CG with FR update { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, optim.method=meth, control=control, lower=lower, upper=upper, gradient=grad, ...))[3] reslist <- c(reslist, list(res1fit)) } for(type in 2:3) #CG with PR or BS updates { res1fit$time <- system.time(res1fit <- mledist(data, distr=distr, optim.method="CG", control=c(control, type=type), lower=lower, upper=upper, gradient=grad, ...))[3] reslist <- c(reslist, list(res1fit)) } fullname <- c(fullname, paste0("G-", c("BFGS", "NM", paste0("CG", c("FR", "PR", "BS"))), "-B") ) } names(reslist) <- fullname getval <- function(x) c(x$estimate, loglik=x$loglik, x$counts, x$time) #suspect behavior if(any(sapply(reslist, length) != 12)) { print(sapply(reslist, length)) } resmat <- sapply(reslist, getval) if(is.null(dim(resmat))) stop("wrong extract") allname <- c(paste("fitted", names(reslist[[1]]$estimate)), "fitted loglik", "func. eval. nb.", "grad. eval. nb.", "time (sec)") if(NROW(resmat) != length(allname)) stop("wrong extract") else rownames(resmat) <- allname resmat }fitdistrplus/R/qqcomp.R0000644000176200001440000002007313330574012014632 0ustar liggesusers############################################################################# # Copyright (c) 2012 Christophe Dutang, Aurelie Siberchicot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot density functions for various fits ### of continuous distribution(s) (fitdist results) ### on a same dataset ### ### R functions ### qqcomp <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fitpch, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, use.ppoints = TRUE, a.ppoints = 0.5, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", ...) { if(inherits(ft, "fitdist")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdist' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdist")))) stop("argument ft must be a list of 'fitdist' objects") } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("qqcomp is not yet available when using weights") # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # check data mydata <- ft[[1]]$data verif.ftidata <- function(fti) { if (any(fti$data != mydata)) stop("All compared fits must have been obtained with the same dataset") invisible() } lapply(ft, verif.ftidata) n <- length(mydata) sdata <- sort(mydata) largedata <- (n > 1e4) if (xlogscale != ylogscale) { warning("As a Q-Q plot should use the same scale on x and y axes, both or none of the axes should be put in a logarithmic scale.") } logxy <- paste(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y",""), sep="") # manage default parameters nft <- length(ft) if (missing(fitcol)) fitcol <- 2:(nft+1) if (missing(fitpch)) fitpch <- ifelse(largedata, 1, 21) fitcol <- rep(fitcol, length.out=nft) fitpch <- rep(fitpch, length.out=nft) # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } if (missing(xlab)) xlab <- "Theoretical quantiles" if (missing(ylab)) ylab <- "Empirical quantiles" if (missing(main)) main <- "Q-Q plot" if (use.ppoints) obsp <- ppoints(n, a = a.ppoints) else obsp <- (1:n) / n # computation of each fitted distribution comput.fti <- function(i) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname qdistname <- paste("q", distname, sep="") do.call(qdistname, c(list(obsp), as.list(para))) } fittedquant <- sapply(1:nft, comput.fti) if(NCOL(fittedquant) != nft || NROW(fittedquant) != length(obsp)) stop("problem when computing fitted CDFs.") # check limits if(missing(xlim)) xlim <- range(fittedquant) if(missing(ylim)) ylim <- range(mydata) if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## # main plot if(!largedata) resquant <- plot(fittedquant[,1], sdata, main=main, xlab=xlab, ylab=ylab, log=logxy, pch = fitpch[1], xlim=xlim, ylim=ylim, col=fitcol[1], type="p", ...) else resquant <- plot(fittedquant[,1], sdata, main=main, xlab=xlab, ylab=ylab, log=logxy, lty = fitpch[1], xlim=xlim, ylim=ylim, col=fitcol[1], type="l", ...) #plot of fitted quantiles if(nft > 1 && !ynoise && !largedata) for(i in 2:nft) points(fittedquant[,i], sdata, pch=fitpch[i], col=fitcol[i], ...) if(nft > 1 && ynoise && !largedata) for(i in 2:nft) if (ylogscale) { noise2mult <- runif(n, 0.95, 1.05) points(fittedquant[,i], sdata*noise2mult, pch=fitpch[i], col=fitcol[i], ...) }else { noise2add <- runif(n, -0.02, 0.02) points(fittedquant[,i], sdata+noise2add, pch=fitpch[i], col=fitcol[i], ...) } if(largedata) for(i in 2:nft) lines(fittedquant[,i], sdata, col=fitcol[i], lty = fitpch[i], ...) if(line01) abline(0, 1, lty=line01lty, col=line01col) if (addlegend) { if(!largedata) legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, pch = fitpch, ...) else legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, lty = fitpch, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## # recode the legend position according to available positions in ggplot2 if(xlegend %in% c("topleft", "bottomleft")) xlegend <- "left" if(xlegend %in% c("topright", "bottomright")) xlegend <- "right" # structure the fittedquant in a relevant data.frame fittedquant <- as.data.frame(fittedquant) colnames(fittedquant) <- unlist(lapply(ft, function(X) X["distname"])) fittedquant <- stack(fittedquant) nfq <- nrow(fittedquant) fittedquant$sdata <- sdata # sdata is recycled in the standard fashion fittedquant$ind <- factor(fittedquant$ind, levels = unique(fittedquant$ind)) # reorder levels in the appearance order of the input if(nft > 1 && ynoise && !largedata) { if (ylogscale) { noise2mult <- runif(nfq, 0.95, 1.05) fittedquant$sdata <- fittedquant$sdata*noise2mult }else { noise2add <- runif(nfq, -0.02, 0.02) fittedquant$sdata <- fittedquant$sdata+noise2add } } ggqqcomp <- ggplot2::ggplot(data = fittedquant, ggplot2::aes_(quote(values), quote(sdata), group = quote(ind), colour = quote(ind), shape = quote(ind))) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::ggtitle(main) + ggplot2::coord_cartesian(xlim = c(xlim[1], xlim[2]), ylim = c(ylim[1], ylim[2])) + {if(!largedata) ggplot2::geom_point() else ggplot2::geom_line(ggplot2::aes_(linetype = quote(ind)))} + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend), plot.title = ggplot2::element_text(hjust = 0.5)) else ggplot2::theme(legend.position = "none", plot.title = ggplot2::element_text(hjust = 0.5))} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_shape_manual(values = fitpch, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitpch, labels = legendtext) + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(shape = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + {if(line01) ggplot2::geom_abline(intercept = 0, slope = 1)} + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} return(ggqqcomp) } } fitdistrplus/R/qmedist.R0000644000176200001440000003416313375226222015013 0ustar liggesusers############################################################################# # Copyright (c) 2010 Christophe Dutang and Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### quantile matching estimation for censored or non-censored data ### ### R functions ### qmedist <- function (data, distr, probs, start=NULL, fix.arg=NULL, qtype=7, optim.method="default", lower=-Inf, upper=Inf, custom.optim=NULL, weights=NULL, silent=TRUE, gradient=NULL, checkstartfix=FALSE, ...) # data may correspond to a vector for non censored data or to # a dataframe of two columns named left and right for censored data { if (!is.character(distr)) # distname <- substring(as.character(match.call()$distr), 2) stop("distr must be a character string naming a distribution") else distname <- distr qdistname <- paste("q",distname,sep="") ddistname <- paste("d",distname,sep="") argddistname <- names(formals(ddistname)) if (!exists(qdistname, mode="function")) stop(paste("The ", qdistname, " function must be defined")) if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) if (missing(probs)) stop("missing probs argument for quantile matching estimation") if(is.null(custom.optim)) optim.method <- match.arg(optim.method, c("default", "Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent")) start.arg <- start #to avoid confusion with the start() function of stats pkg (check is done lines 87-100) if(is.vector(start.arg)) #backward compatibility start.arg <- as.list(start.arg) if(qtype < 1 || qtype > 9) stop("wrong type for the R quantile function") if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of integers greater than 0") if(!is.allint.w(weights)) stop("weights should be a vector of (strictly) positive integers") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") warning("weights are not taken into account in the default initial values") } if (is.vector(data)) { cens <- FALSE if (!(is.numeric(data) & length(data)>1)) stop("data must be a numeric vector of length greater than 1 for non censored data or a dataframe with two columns named left and right and more than one line for censored data") } else { cens <- TRUE stop("Quantile matching estimation is not yet available for censored data.") } if(!checkstartfix) #pre-check has not been done by fitdist() or bootdist() { # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=data, distname=distname) #check inconsistent parameters hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #set fix.arg.fun if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL }else #pre-check has been done by fitdist() or bootdist() { arg_startfix <- list(start.arg=start, fix.arg=fix.arg) fix.arg.fun <- NULL } #unlist starting values as needed in optim() vstart <- unlist(arg_startfix$start.arg) #sanity check if(is.null(vstart)) stop("Starting values could not be NULL with checkstartfix=TRUE") #erase user value #(cannot coerce to vector as there might be different modes: numeric, character...) fix.arg <- arg_startfix$fix.arg if(length(vstart) != length(probs)) stop("wrong dimension for the quantiles to match.") ############# QME fit using optim or custom.optim ########## # definition of the function to minimize : # for non censored data if (!cens && is.null(weights)) { # the argument names are: # - par for parameters (like in optim function) # - fix.arg for optional fixed parameters # - obs for observations (previously dat but conflicts with genoud data.type.int argument) # - qdistnam for distribution name DIFF2Q <- function(par, fix.arg, prob, obs, qdistnam, qtype) { qtheo <- do.call(qdistnam, c(as.list(prob), as.list(par), as.list(fix.arg)) ) qemp <- as.numeric(quantile(obs, probs=prob, type=qtype)) (qemp - qtheo)^2 } fnobj <- function(par, fix.arg, obs, qdistnam, qtype) sum( sapply(probs, function(p) DIFF2Q(par, fix.arg, p, obs, qdistnam, qtype)) ) }else if (!cens && !is.null(weights)) { DIFF2Q <- function(par, fix.arg, prob, obs, qdistnam, qtype) { qtheo <- do.call(qdistnam, c(as.list(prob), as.list(par), as.list(fix.arg)) ) qemp <- as.numeric(wtd.quantile(x=obs, weights=weights, probs=prob)) (qemp - qtheo)^2 } fnobj <- function(par, fix.arg, obs, qdistnam, qtype) sum( sapply(probs, function(p) DIFF2Q(par, fix.arg, p, obs, qdistnam, qtype)) ) } # Function to calculate the loglikelihood to return if(is.null(weights)) { loglik <- function(par, fix.arg, obs, ddistnam) sum(log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) }else { loglik <- function(par, fix.arg, obs, ddistnam) sum(weights * log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) } owarn <- getOption("warn") # Try to minimize the stat distance using the base R optim function if(is.null(custom.optim)) { hasbound <- any(is.finite(lower) | is.finite(upper)) # Choice of the optimization method if (optim.method == "default") { meth <- ifelse(length(vstart) > 1, "Nelder-Mead", "BFGS") }else meth <- optim.method if(meth == "BFGS" && hasbound && is.null(gradient)) { meth <- "L-BFGS-B" txt1 <- "The BFGS method cannot be used with bounds without provided the gradient." txt2 <- "The method is changed to L-BFGS-B." warning(paste(txt1, txt2)) } options(warn=ifelse(silent, -1, 0)) #select optim or constrOptim if(hasbound) #finite bounds are provided { if(!is.null(gradient)) { opt.fun <- "constrOptim" }else #gradient == NULL { if(meth == "Nelder-Mead") opt.fun <- "constrOptim" else if(meth %in% c("L-BFGS-B", "Brent")) opt.fun <- "optim" else { txt1 <- paste("The method", meth, "cannot be used by constrOptim() nor optim() without gradient and bounds.") txt2 <- "Only optimization methods L-BFGS-B, Brent and Nelder-Mead can be used in such case." stop(paste(txt1, txt2)) } } if(opt.fun == "constrOptim") { #recycle parameters npar <- length(vstart) #as in optim() line 34 lower <- as.double(rep_len(lower, npar)) #as in optim() line 64 upper <- as.double(rep_len(upper, npar)) # constraints are : Mat %*% theta >= Bnd, i.e. # +1 * theta[i] >= lower[i]; # -1 * theta[i] >= -upper[i] #select rows from the identity matrix haslow <- is.finite(lower) Mat <- diag(npar)[haslow, ] #select rows from the opposite of the identity matrix hasupp <- is.finite(upper) Mat <- rbind(Mat, -diag(npar)[hasupp, ]) colnames(Mat) <- names(vstart) rownames(Mat) <- paste0("constr", 1:NROW(Mat)) #select the bounds Bnd <- c(lower[is.finite(lower)], -upper[is.finite(upper)]) names(Bnd) <- paste0("constr", 1:length(Bnd)) initconstr <- Mat %*% vstart - Bnd if(any(initconstr < 0)) stop("Starting values must be in the feasible region.") opttryerror <- try(opt <- constrOptim(theta=vstart, f=fnobj, ui=Mat, ci=Bnd, grad=gradient, fix.arg=fix.arg, obs=data, qdistnam=qdistname, qtype=qtype, hessian=!is.null(gradient), method=meth, ...), silent=TRUE) if(!inherits(opttryerror, "try-error")) if(length(opt$counts) == 1) #appears when the initial point is a solution opt$counts <- c(opt$counts, NA) }else #opt.fun == "optim" { opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, qdistnam=qdistname, qtype=qtype, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } }else #hasbound == FALSE { opt.fun <- "optim" opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, qdistnam=qdistname, qtype=qtype, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } options(warn=owarn) if (inherits(opttryerror,"try-error")) { warnings("The function optim encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, value = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The function optim failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=opt.fun, optim.method=meth, fix.arg=fix.arg, fix.arg.fun=fix.arg.fun, weights = weights, counts=opt$counts, optim.message=opt$message, loglik=loglik(opt$par, fix.arg, data, ddistname), probs=probs) } else # Try to minimize the stat distance using a user-supplied optim function { if (!cens) opttryerror <- try(opt <- custom.optim(fn=fnobj, fix.arg=fix.arg, obs=data, qdistnam=qdistname, qtype=qtype, par=vstart, ...), silent=TRUE) else stop("Quantile matching estimation is not yet available for censored data.") if (inherits(opttryerror,"try-error")) { warnings("The customized optimization function encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, value = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The customized optimization function failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) argdot <- list(...) method.cust <- argdot$method res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=custom.optim, optim.method=method.cust, fix.arg=fix.arg, fix.arg.fun=fix.arg.fun, weights = weights, counts=opt$counts, optim.message=opt$message, loglik=loglik(opt$par, fix.arg, data, ddistname), probs=probs) } return(res) } fitdistrplus/R/coef.R0000644000176200001440000000614512772503243014261 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Regis Pouillot, Jean-Baptiste Denis, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### extract model coefficients ### ### R functions ### #already in R # #coef <- function(object, ...) # UseMethod("coef") # #coef.default <- function(object, ...) # return(object) coef.fitdist <- function(object, ...) { stopifnot(inherits(object, "fitdist")) if(is.null(object$estimate)) stop("Internal error in coef.fitdist") else return(object$estimate) } coef.fitdistcens <- function(object, ...) { stopifnot(inherits(object, "fitdistcens")) if(is.null(object$estimate)) stop("Internal error in coef.fitdistcens") else return(object$estimate) } fitdistrplus/R/detectbound.R0000644000176200001440000001120713406643052015636 0ustar liggesusers############################################################################# # Copyright (c) 2016 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### detect boundaries detectbound <- function(distname, vstart, obs, fix.arg=NULL, echo=FALSE) { ddistname <- paste("d", distname, sep="") argdist <- formalArgs(ddistname) argdist <- argdist[!argdist %in% c("x", "log")] stopifnot(all(names(vstart) %in% argdist)) if("scale" %in% argdist && "rate" %in% argdist) { if(length(grep("rate", as.character(formals(ddistname)$scale))) > 0) { argdist <- argdist[argdist != "rate"] #remove rate for parameter list if("rate" %in% names(vstart)) #update value if rate is supplied { vstart["rate"] <- 1/vstart["rate"] names(vstart)[names(vstart) == "rate"] <- "scale" } } } argdist <- argdist[!argdist %in% names(fix.arg)] if(length(argdist) == 0) return(NULL) if(echo) { print(argdist) print(vstart) } lowb <- rep(-Inf, length(argdist)) uppb <- -lowb names(lowb) <- names(uppb) <- argdist eps <- sqrt(.Machine$double.eps) owarn <- getOption("warn") oerr <- getOption("show.error.messages") options(warn=-1, show.error.messages=FALSE) for(a in argdist) { if(echo) cat(a, "\n") dx <- do.call(ddistname, c(list(obs), as.list(vstart), as.list(fix.arg))) if(any(is.nan(dx))) stop("wrong init param") vstarta <- vstart aval <- -1:1 for(i in 1:length(aval)) { vstarta[a] <- aval[i]-eps dx1 <- try(do.call(ddistname, c(list(obs), as.list(vstarta), as.list(fix.arg))), silent=TRUE) vstarta[a] <- aval[i]+eps dx2 <- try(do.call(ddistname, c(list(obs), as.list(vstarta), as.list(fix.arg))), silent=TRUE) if(echo) { cat(i, "\ttested value", vstarta, "\n") print(dx1) print(dx2) } if(class(dx1) == "try-error" && class(dx2) != "try-error") { lowb[a] <- aval[i] } if(any(is.nan(dx1)) && any(!is.nan(dx2))) { lowb[a] <- aval[i] } if(class(dx1) != "try-error" && class(dx2) == "try-error") { uppb[a] <- aval[i] } if(any(!is.nan(dx1)) && any(is.nan(dx2))) { uppb[a] <- aval[i] } } } options(warn=owarn, show.error.messages=oerr) rbind(lowb, uppb) } fitdistrplus/R/util-checkparam.R0000644000176200001440000001126213310705056016405 0ustar liggesusers# checkparam function checks start.arg and fix.arg that parameters are named correctly # INPUTS # start.arg : starting values for optimization or the function to compute them from data # fix.arg : fixed values of paramaters or the function to compute them from data # argdistname : parameter names of the distribution # errtxt : error text messages # data10 : the first ten values of data # distname : name of the distribution # OUTPUTS # a named list with components: ok (TRUE or FALSE), txt (NULL or the error message), # start.arg : a named list of starting values for optimization # or a function to compute them from data checkparam <- function(start.arg, fix.arg, argdistname, errtxt=NULL, data10, distname) { if(is.null(errtxt)) errtxt <- list(t0="Fixed values must be either a named list or a function returning a named list.", t1="Starting values must be either a named list or a function returning a named list.", t2="Starting and fixed values must be either a named list or a function returning a named list.", t3="'start' must specify names which are arguments to 'distr'.", t4="'fix.arg' must specify names which are arguments to 'distr'.", t5="A distribution parameter cannot be specified both in 'start' and 'fix.arg'.") #t6 = "Unknown starting values..." #before any treatment start.arg.was.null <- is.null(start.arg) #if clause with 4 different cases: #start.arg \ fix.arg | NULL | non NULL # NULL | 1 | 2 # non NULL | 3 | 4 if(is.null(start.arg) && is.null(fix.arg)) #1 { #default case from fitdist, mledist,... start.arg <- start.arg.default(data10, distr=distname) }else if(is.null(start.arg) && !is.null(fix.arg)) #2 { #fix.arg should be a function or a named list if(!is.list(fix.arg) && !is.function(fix.arg)) return(list(ok=FALSE, txt=errtxt$t0)) #get param names if(is.function(fix.arg)) namarg <- names(fix.arg(data10)) else namarg <- names(fix.arg) start.arg <- start.arg.default(data10, distr=distname) #could return "Unknown starting values..." start.arg <- start.arg[!names(start.arg) %in% namarg] }else if(!is.null(start.arg) && is.null(fix.arg)) #3 { #start should be a function or a named list if(!is.list(start.arg) && !is.function(start.arg)) return(list(ok=FALSE, txt=errtxt$t1)) }else if(!is.null(start.arg) && !is.null(fix.arg)) #4 { #fix.arg and start should be a function or a named list if( (!is.list(fix.arg) && !is.function(fix.arg)) || (!is.list(start.arg) && !is.function(start.arg)) ) return(list(ok=FALSE, txt=errtxt$t2)) }else stop("wrong implementation") #check start #start.arg : function() | list() #start.arg cannot be null because set to a named list (by start.arg.default) when NULL if(is.function(start.arg)) #a function { start2 <- start.arg(data10) if(!is.list(start2) && is.null(names(start2))) #check a named list return(list(ok=FALSE, txt=errtxt$t3)) vstart <- unlist(start2) }else #a list vstart <- unlist(start.arg) m <- match(names(vstart), argdistname) if (any(is.na(m))) #check unexpected names return(list(ok=FALSE, txt=errtxt$t3)) #check fix.arg #fix.arg : function() | list() | NULL if(is.function(fix.arg)) #a function { fix.arg2 <- fix.arg(data10) if(!is.list(fix.arg2) && is.null(names(fix.arg2))) #check a named list return(list(ok=FALSE, txt=errtxt$t4)) vfix.arg <- unlist(fix.arg2) }else if(is.list(fix.arg)) #a list vfix.arg <- unlist(fix.arg) else vfix.arg <- NULL mfix <- match(names(vfix.arg), argdistname) if (any(is.na(mfix))) #check unexpected names return(list(ok=FALSE, txt=errtxt$t4)) # check that some parameters are not both in fix.arg and start minter <- match(names(vstart), names(vfix.arg)) if (any(!is.na(minter))) return(list(ok=FALSE, txt=errtxt$t5)) #prepare the starg.arg for outputs, i.e. when start.arg=NULL, # returns start.arg.default if not fixed param # returns a subset of start.arg.default if fixed param if(start.arg.was.null && is.null(fix.arg)) start.arg <- function(x) start.arg.default(x, distr=distname) #could return "Unknown starting values..." else if(start.arg.was.null && !is.null(fix.arg)) { if(is.function(fix.arg)) namarg <- names(fix.arg(data10)) else namarg <- names(fix.arg) start.arg <- function(x){ start.arg <- start.arg.default(x, distr=distname) #could return "Unknown starting values..." start.arg[!names(start.arg) %in% namarg] } } #otherwise start.arg is a named list or a function return(list(ok=TRUE, txt=NULL, start.arg=start.arg)) }fitdistrplus/R/prefit.R0000644000176200001440000003071013406146760014633 0ustar liggesusers############################################################################# # Copyright (c) 2016 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### prefit for maximum likelihood estimation ### ### R functions ### #search good starting values prefit <- function(data, distr, method = c("mle", "mme", "qme", "mge"), feasible.par, memp=NULL, order=NULL, probs=NULL, qtype=7, gof=NULL, fix.arg=NULL, lower, upper, weights=NULL, silent=TRUE, ...) { if (!is.character(distr)) distname <- substring(as.character(match.call()$distr), 2) else distname <- distr method <- match.arg(method, c("mle", "mme", "qme", "mge")) if(method != "qme" && !is.null(probs)) stop("probs is not needed") if(method != "mme" && (!is.null(memp) || !is.null(order))) stop("memp, order are not needed") if(method != "mge" && !is.null(gof)) stop("gof is not needed") ddistname <- paste0("d", distname) if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) pdistname <- paste0("p", distname) if (!exists(pdistname, mode="function") && method == "mge") stop(paste("The ", pdistname, " function must be defined")) qdistname <- paste0("q",distname) if (!exists(qdistname, mode="function") && method == "qme") stop(paste("The ", qdistname, " function must be defined")) mdistname <- paste0("m",distname) if (!exists(mdistname, mode="function") && method == "mme") stop(paste("The ", mdistname, " function must be defined")) if(is.null(probs) && method == "qme") stop("probs must be provided") if(is.null(order) && method == "mme") stop("order must be provided") if(missing(feasible.par)) stop("feasible values must be provided") if(missing(lower) || missing(upper)) stop("bounds (yet infinite) must be provided") #recycle parameters if(is.list(feasible.par)) feasible.par <- unlist(feasible.par) npar <- length(feasible.par) #as in optim() line 34 lower <- as.double(rep_len(lower, npar)) #as in optim() line 64 upper <- as.double(rep_len(upper, npar)) if(all(is.infinite(lower)) && all(is.infinite(upper))) { bnd <- detectbound(distname, feasible.par, data, fix.arg=fix.arg) }else { bnd <- rbind(lower, upper) colnames(bnd) <- names(feasible.par) rownames(bnd) <- c("lowb", "uppb") } if(!silent) print(bnd) translist <- invlist <- NULL for(i in 1:NCOL(bnd)) { if(bnd["lowb", i] == -Inf && bnd["uppb", i] == Inf) { translist <- c(translist, list(function(x) x)) invlist <- c(invlist, list(function(x) x)) }else if(bnd["lowb", i] == 0 && bnd["uppb", i] == Inf) { translist <- c(translist, list(T0Inf)) invlist <- c(invlist, list(iT0Inf)) }else if(bnd["lowb", i] == 1 && bnd["uppb", i] == Inf) { translist <- c(translist, list(T1Inf)) invlist <- c(invlist, list(iT1Inf)) }else if(bnd["lowb", i] == 0 && bnd["uppb", i] == 1) { translist <- c(translist, list(T01)) invlist <- c(invlist, list(iT01)) }else if(bnd["lowb", i] == -1 && bnd["uppb", i] == 0) { translist <- c(translist, list(Tm10)) invlist <- c(invlist, list(iTm10)) }else { print(bnd) stop("unknown parameter domain") } } if(!silent) print(translist) if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of numerics greater than 0") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") if(method == "mge") stop("weights is not allowed for maximum GOF estimation") } #maximum likelihood if(method == "mle") { if(is.null(weights)) weights <- rep(1, NROW(data)) fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) -sum( weights * log(do.call(ddistnam, c(list(obs), lpar, as.list(fix.arg)) ) ) ) } } #quantile matching if(method == "qme" && is.null(weights)) { DIFF2Q <- function(par, fix.arg, prob, obs, qdistnam, qtype) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) qtheo <- do.call(qdistnam, c(list(prob), lpar, as.list(fix.arg)) ) qemp <- as.numeric(quantile(obs, probs=prob, type=qtype)) (qemp - qtheo)^2 } fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) sum( sapply(probs, function(p) DIFF2Q(par, fix.arg, p, obs, qdistnam, qtype)) ) } if(method == "qme" && !is.null(weights)) { DIFF2Q <- function(par, fix.arg, prob, obs, qdistnam, qtype) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) qtheo <- do.call(qdistnam, c(list(prob), lpar, as.list(fix.arg)) ) qemp <- as.numeric(wtd.quantile(x=obs, weights=weights, probs=prob)) (qemp - qtheo)^2 } fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) sum( sapply(probs, function(p) DIFF2Q(par, fix.arg, p, obs, qdistnam, qtype)) ) } #moment matching if(method == "mme" && is.null(weights)) { DIFF2 <- function(par, fix.arg, order, obs, mdistnam, memp, weights) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) momtheo <- do.call(mdistnam, c(list(order), lpar, as.list(fix.arg)) ) momemp <- as.numeric(memp(obs, order)) (momemp - momtheo)^2 } fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) sum( sapply(order, function(o) DIFF2(par, fix.arg, o, obs, mdistnam, memp)) ) } if(method == "mme" && !is.null(weights)) { DIFF2 <- function(par, fix.arg, order, obs, mdistnam, memp, weights) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) momtheo <- do.call(mdistnam, c(list(order), lpar, as.list(fix.arg)) ) momemp <- as.numeric(memp(obs, order, weights)) (momemp - momtheo)^2 } fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) sum( sapply(order, function(o) DIFF2(par, fix.arg, o, obs, mdistnam, memp, weights)) ) } #gof matching if(method == "mge") { fnobj <- function(par, fix.arg, obs, ddistnam, qdistnam, pdistnam, mdistnam, qtype, memp, gof) { if(!is.list(par)) par <- as.list(par) lpar <- lapply(1:length(par), function(i) translist[[i]](par[[i]])) n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam, c(list(s), lpar, as.list(fix.arg)) ) obspu <- seq(1,n)/n obspl <- seq(0,n-1)/n if (gof == "CvM") 1/(12*n) + sum( ( theop - (2 * 1:n - 1)/(2 * n) )^2 ) else if (gof == "KS") max(pmax(abs(theop-obspu),abs(theop-obspl))) else if (gof == "AD") - n - mean( (2 * 1:n - 1) * (log(theop) + log(1 - rev(theop))) ) else if (gof == "ADR") n/2 - 2 * sum(theop) - mean ( (2 * 1:n - 1) * log(1 - rev(theop)) ) else if (gof == "ADL") -3*n/2 + 2 * sum(theop) - mean ( (2 * 1:n - 1) * log(theop) ) else if (gof == "AD2R") 2 * sum(log(1 - theop)) + mean ( (2 * 1:n - 1) / (1 - rev(theop)) ) else if (gof == "AD2L") 2 * sum(log(theop)) + mean ( (2 * 1:n - 1) / theop ) else if (gof == "AD2") 2*sum(log(theop) + log(1 - theop)) + mean(((2*1:n - 1) / theop) + ((2*1:n - 1) / (1 - rev(theop)))) } } ltrans.par <- sapply(1:length(feasible.par), function(i) invlist[[i]](feasible.par[[i]])) if(!silent) { cat("before transform\n") print(unlist(feasible.par)) cat("after transform\n") print(unlist(ltrans.par)) } if(method == "mle") test1 <- try(fnobj(par=ltrans.par, fix.arg = fix.arg, obs=data, ddistnam = ddistname), silent=silent) if(method == "qme") test1 <- try(fnobj(par=ltrans.par, fix.arg = fix.arg, obs=data, qdistnam=qdistname, qtype=qtype), silent=silent) if(method == "mme") test1 <- try(fnobj(par=ltrans.par, fix.arg = fix.arg, obs=data, mdistnam=mdistname, memp=memp), silent=silent) if(method == "mge") test1 <- try(fnobj(par=ltrans.par, fix.arg = fix.arg, obs=data, pdistnam=pdistname, gof=gof), silent=silent) if(class(test1) == "try-error" || silent == FALSE) print(test1) #get old warning value and set it owarn <- options(warn=ifelse(silent, -1, 0)) if(method == "mle") opttryerror <- try(opt <- optim(par=ltrans.par, fn=fnobj, fix.arg=fix.arg, obs=data, ddistnam=ddistname, hessian=FALSE, method="BFGS", ...), silent=silent) if(method == "qme") opttryerror <- try(opt <- optim(par=ltrans.par, fn=fnobj, fix.arg=fix.arg, obs=data, qdistnam=qdistname, qtype=qtype, hessian=FALSE, method="BFGS", ...), silent=silent) if(method == "mme") opttryerror <- try(opt <- optim(par=ltrans.par, fn=fnobj, fix.arg=fix.arg, obs=data, mdistnam=mdistname, memp=memp, hessian=FALSE, method="BFGS", ...), silent=silent) if(method == "mge") opttryerror <- try(opt <- optim(par=ltrans.par, fn=fnobj, fix.arg=fix.arg, obs=data, pdistnam=pdistname, gof=gof, hessian=FALSE, method="BFGS", ...), silent=silent) #get back to old warning value on.exit(options(owarn), add=TRUE) if(class(opttryerror) == "try-error") stop("unsuccessful pre-fitting process") if(!silent) print(opt) if(opt$convergence %in% 0:1) #either successful or reached the iteration limit (see ?optim) { prefitpar <- unlist(sapply(1:length(opt$par), function(i) translist[[i]](opt$par[i]))) }else { prefitpar <- rep(NA, length(opt$par)) } names(prefitpar) <- names(feasible.par) as.list(prefitpar) } fitdistrplus/R/util-isint.R0000644000176200001440000000534512772503243015447 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### test if integers ### ### R functions ### #test if the weight vector contains integer values is.int.w <- function(x) { x <- x - floor(x) abs(x) < .Machine$double.eps } #test if the weight vector contains only integer values is.allint.w <- function(x) all(is.int.w(x)) fitdistrplus/R/bootdistcens.R0000644000176200001440000002267213310705056016043 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### bootstrap in fitdistrplus with censored data ### ### R functions ### bootdistcens <- function (f, niter=1001, silent=TRUE, parallel = c("no", "snow", "multicore"), ncpus) { if (niter<10) stop("niter must be an integer above 10") parallel <- match.arg(parallel, c("no", "snow", "multicore")) if (parallel == "multicore" & .Platform$OS.type == "windows") { parallel <- "snow" warning("As the multicore option is not supported on Windows it was replaced by snow") } if ((parallel == "snow" | parallel == "multicore") & missing(ncpus)) stop("You have to specify the number of available processors to parallelize the bootstrap") if (!inherits(f, "fitdistcens")) stop("Use only with 'fitdistcens' objects") if(!is.null(f$weights)) stop("Bootstrap is not yet available when using weights") # non parametric bootstrap n <- length(f$censdata[, 1]) numrow <- seq(1, n) rnumrow <- sample(numrow, size=niter*n, replace=TRUE) dim(rnumrow) <- c(n, niter) start <- as.list(f$estimate) #a named vector is no longer is accepted as starting values. if(is.function(f$fix.arg.fun)) fix.arg <- f$fix.arg.fun else fix.arg <- f$fix.arg if (is.null(f$dots) && !is.function(fix.arg)) { funcmle <- function(iter) { mle <- try(do.call(mledist, list(data=data.frame(left=f$censdata[rnumrow[, iter], ]$left, right=f$censdata[rnumrow[, iter], ]$right), distr=f$distname, start=start, fix.arg=fix.arg, checkstartfix=TRUE)), silent=silent) if(inherits(mle, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(mle$estimate, mle$convergence)) } }else if (is.null(f$dots) && is.function(fix.arg)) { funcmle <- function(iter) { bootdata <- data.frame(left=f$censdata[rnumrow[, iter], ]$left, right=f$censdata[rnumrow[, iter], ]$right) fix.arg.iter <- fix.arg(cens2pseudo(bootdata)$pseudo) mle <- try(do.call(mledist, list(data=bootdata, distr=f$distname, start=start, fix.arg=fix.arg.iter, checkstartfix=TRUE)), silent=silent) if(inherits(mle, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(mle$estimate, mle$convergence)) } }else if(!is.null(f$dots) && !is.function(fix.arg)) { funcmle <- function(iter) { mle <- try(do.call(mledist, c(list(data=data.frame(left=f$censdata[rnumrow[, iter], ]$left, right=f$censdata[rnumrow[, iter], ]$right), distr=f$distname, start=start), fix.arg=fix.arg, f$dots, checkstartfix=TRUE)), silent=silent) if(inherits(mle, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(mle$estimate, mle$convergence)) } }else if(!is.null(f$dots) && is.function(fix.arg)) { funcmle <- function(iter) { bootdata <- data.frame(left=f$censdata[rnumrow[, iter], ]$left, right=f$censdata[rnumrow[, iter], ]$right) fix.arg.iter <- fix.arg(cens2pseudo(bootdata)$pseudo) mle <- try(do.call(mledist, c(list(data=bootdata, distr=f$distname, start=start), fix.arg=fix.arg.iter, f$dots, checkstartfix=TRUE)), silent=silent) if(inherits(mle, "try-error")) return(c(rep(NA, length(start)), 100)) else return(c(mle$estimate, mle$convergence)) } }else stop("wrong implementation in bootdistcens") owarn <- getOption("warn") oerr <- getOption("show.error.messages") options(warn=ifelse(silent, -1, 0), show.error.messages=!silent) # parallel or sequential computation if (parallel != "no") { if (parallel == "snow") type <- "PSOCK" else if (parallel == "multicore") type <- "FORK" clus <- parallel::makeCluster(ncpus, type = type) resboot <- parallel::parSapply(clus, 1:niter, funcmle) parallel::stopCluster(clus) } else { resboot <- sapply(1:niter, funcmle) } options(warn=owarn, show.error.messages=oerr) rownames(resboot) <- c(names(start), "convergence") if (length(resboot[, 1])>2) { estim <- data.frame(t(resboot)[, -length(resboot[, 1])]) bootCI <- cbind(apply(resboot[-length(resboot[, 1]), ], 1, median, na.rm=TRUE), apply(resboot[-length(resboot[, 1]), ], 1, quantile, 0.025, na.rm=TRUE), apply(resboot[-length(resboot[, 1]), ], 1, quantile, 0.975, na.rm=TRUE)) colnames(bootCI) <- c("Median", "2.5%", "97.5%") } else { estim <- as.data.frame(t(resboot)[, -length(resboot[, 1])]) names(estim) <- names(f$estimate) bootCI <- c(median(resboot[-length(resboot[, 1]), ], na.rm=TRUE), quantile(resboot[-length(resboot[, 1]), ], 0.025, na.rm=TRUE), quantile(resboot[-length(resboot[, 1]), ], 0.975, na.rm=TRUE)) names(bootCI) <- c("Median", "2.5%", "97.5%") } res <- structure(list(estim=estim, converg=t(resboot)[, length(resboot[, 1])], method="nonparam", nbboot=niter, CI=bootCI, fitpart=f), class="bootdistcens") res } print.bootdistcens <- function(x, ...){ if (!inherits(x, "bootdistcens")) stop("Use only with 'bootdistcens' objects") cat("Parameter values obtained with nonparametric bootstrap \n") print(x$estim, ...) nconverg <- length(x$converg[x$converg==0]) if (nconverg < length(x$converg)) { cat("\n") cat("The estimation method converged only for", nconverg, "among", length(x$converg), "iterations \n") } } plot.bootdistcens <- function(x, ...){ if (!inherits(x, "bootdistcens")) stop("Use only with 'bootdistcens' objects") if (dim(x$estim)[2]==1) { stripchart(x$estim, method="jitter", xlab="Bootstrapped values of the parameter", ...) } else { if (dim(x$estim)[2]==2) plot(x$estim, main="Bootstrapped values of the two parameters", ...) else plot(x$estim, main="Bootstrapped values of parameters", ...) } } summary.bootdistcens <- function(object, ...){ if (!inherits(object, "bootdistcens")) stop("Use only with 'bootdistcens' objects") class(object) <- c("summary.bootdistcens", class(object)) object } print.summary.bootdistcens <- function(x, ...){ if (!inherits(x, "summary.bootdistcens")) stop("Use only with 'summary.bootdistcens' objects") cat("Nonparametric bootstrap medians and 95% percentile CI \n") print(x$CI) nconverg <- length(x$converg[x$converg==0]) if (nconverg < length(x$converg)) { cat("\n") cat("The estimation method converged only for", nconverg, "among", length(x$converg), "iterations \n") } } fitdistrplus/R/CIcdfplot.R0000644000176200001440000002004713344222463015207 0ustar liggesusers############################################################################# # Copyright (c) 2016 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot cumulative distribution functions with confidence interval band ### ### R functions ### CIcdfplot <- function(b, CI.output, CI.type = "two.sided", CI.level = 0.95, CI.col = "red", CI.lty = 2, CI.fill = NULL, CI.only = FALSE, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datapch, datacol, fitlty, fitcol, horizontals = TRUE, verticals = FALSE, do.points = TRUE, use.ppoints = TRUE, a.ppoints = 0.5, lines01 = FALSE, ...) { if(inherits(b, "bootdist")) { cens <- FALSE } else if(inherits(b, "bootdistcens")) { cens <- TRUE } else { stop("argument b must be a 'bootdist' or a `bootdistcens` object") } if(missing(CI.output)) stop("argument CI.output must be specified: either 'probability' or 'quantile'.") CI.output <- match.arg(CI.output, c("probability", "quantile")) CI.type <- match.arg(CI.type, c("two.sided", "less", "greater")) CI.level <- CI.level[1] #compute lower and upper value for the area if (!cens) { mydat <- b$fitpart$data n <- length(mydat) xmin <- min(mydat) xmax <- max(mydat) } else { censdata <- b$fitpart$censdata n <- nrow(censdata) xmin <- min(c(censdata$left, censdata$right), na.rm=TRUE) xmax <- max(c(censdata$left, censdata$right), na.rm=TRUE) } if (missing(xlim)) xlim <- c(xmin, xmax) lowx <- min(xlim[1], ifelse(xmin < 0, xmin*1.5, xmin*.5)) uppx <- max(xlim[2], ifelse(xmax < 0, xmax*.5, xmax*1.5)) if(missing(ylim)) ylim <- c(0, 1) if(!is.logical(CI.only)) stop("argument CI.only must be a logical") #default values (same as cdfcomp()) if (missing(datapch)) datapch <- 16 if (missing(datacol)) datacol <- "black" if (missing(fitcol)) fitcol <- 2 if (missing(fitlty)) fitlty <- 1 if (missing(xlab)) { if (!cens) xlab <- ifelse(xlogscale, "data in log scale", "data") else xlab <- ifelse(xlogscale, "censored data in log scale", "censored data") } if (missing(ylab)) ylab <- "CDF" if (missing(main)) main <- ifelse(CI.only, "Theoretical CDF with CI", "Empirical and theoretical CDF with CI") #get name and cdf name distname <- b$fitpart$distname pdistname <- paste("p",distname,sep="") qdistname <- paste("q",distname,sep="") if (!exists(pdistname, mode="function") && CI.output == "probability") stop(paste("The ", pdistname, " function must be defined")) if (!exists(qdistname, mode="function") && CI.output == "quantile") stop(paste("The ", qdistname, " function must be defined")) #compute c.d.f. values on bootstraped parameters if(CI.output == "probability") { cdfval <- function(x) { calcp <- function(i) { parai <- c(as.list(b$estim[i, ]), as.list(b$fitpart$fix.arg)) do.call(pdistname, c(list(x), as.list(parai))) } res <- t(sapply(1:b$nbboot, calcp)) rownames(res) <- 1:b$nbboot colnames(res) <- paste0("x=", x) res } x <- seq(lowx, uppx, length=501) #compute quantiles on c.d.f. if (CI.type == "two.sided") { alpha <- (1-CI.level)/2 CIband <- t(apply(cdfval(x), MARGIN=2, quantile, probs=c(alpha, 1-alpha), na.rm=TRUE)) colnames(CIband) <- format.perc(c(alpha, 1-alpha), 3) }else if (CI.type == "less") { CIband <- as.matrix(apply(cdfval(x), MARGIN=2, quantile, probs=CI.level, na.rm=TRUE)) colnames(CIband) <- format.perc(CI.level, 3) }else { CIband <- as.matrix(apply(cdfval(x), MARGIN=2, quantile, probs=1-CI.level, na.rm=TRUE)) colnames(CIband) <- format.perc(1-CI.level, 3) } }else #CI.output == "quantile" { qval <- function(p) { calcp <- function(i) { parai <- c(as.list(b$estim[i, ]), as.list(b$fitpart$fix.arg)) do.call(qdistname, c(list(p), as.list(parai))) } res <- t(sapply(1:b$nbboot, calcp)) rownames(res) <- 1:b$nbboot colnames(res) <- paste0("p=", p) res } #compute lower and upper value for the area # p <- seq(sqrt(.Machine$double.eps), 1- sqrt(.Machine$double.eps), length=101) p <- seq(0.0001, 1- 0.0001, length=501) #compute quantiles on c.d.f. if (CI.type == "two.sided") { alpha <- (1-CI.level)/2 CIband <- t(apply(qval(p), MARGIN=2, quantile, probs=c(alpha, 1-alpha), na.rm=TRUE)) colnames(CIband) <- format.perc(c(alpha, 1-alpha), 3) }else if (CI.type == "less") { CIband <- as.matrix(apply(qval(p), MARGIN=2, quantile, probs=1-CI.level, na.rm=TRUE)) colnames(CIband) <- format.perc(CI.level, 3) }else { CIband <- as.matrix(apply(qval(p), MARGIN=2, quantile, probs=CI.level, na.rm=TRUE)) colnames(CIband) <- format.perc(1-CI.level, 3) } } #temp var to open a graphic (if needed) logxy <- paste0(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y","")) ##### plot #### #open graphic window plot(0, 0, main=main, xlab=xlab, ylab=ylab, xlim=xlim, ylim=ylim, log=logxy, type="n") if (!is.null(CI.fill)) # first fill the band { if(CI.output == "probability") { if(CI.type == "two.sided") polygon(c(x, rev(x)), c(CIband[,2], rev(CIband[,1])), col=CI.fill, border=CI.fill, ...) else if(CI.type == "less") polygon(c(x, uppx, uppx), c(CIband, 1, 0), col=CI.fill, border=CI.fill, ...) else #if(CI.type == "greater") polygon(c(x, lowx, lowx), c(CIband, 1, 0), col=CI.fill, border=CI.fill, ...) }else #CI.output == "quantile" { if(CI.type == "two.sided") polygon(c(CIband[,2], rev(CIband[,1])), c(p, rev(p)), col=CI.fill, border=CI.fill, ...) else if(CI.type == "less") polygon(c(CIband, uppx, uppx), c(p, 1, 0), col=CI.fill, border=CI.fill, ...) else #if(CI.type == "greater") polygon(c(CIband, lowx, lowx), c(p, 1, 0), col=CI.fill, border=CI.fill, ...) } } # add lines for the bounds of the CI if(CI.output == "probability") { matlines(x, CIband, col=CI.col, lty=CI.lty, ...) }else #CI.output == "quantile" { matlines(CIband, p, col=CI.col, lty=CI.lty, ...) } if(!CI.only) # add the empirical and fitted distributions { if (!cens) { cdfcomp(b$fitpart, xlim=xlim, ylim=ylim, xlogscale = xlogscale, ylogscale = ylogscale, main=main, xlab=xlab, ylab=ylab, datapch=datapch, datacol=datacol, fitlty=fitlty, fitcol=fitcol, horizontals = horizontals, verticals = verticals, do.points = do.points, use.ppoints = use.ppoints, a.ppoints = a.ppoints, lines01 = lines01, addlegend = FALSE, add=TRUE) } else { cdfcompcens(b$fitpart, xlim=xlim, ylim=ylim, xlogscale = xlogscale, ylogscale = ylogscale, main=main, xlab=xlab, ylab=ylab, datacol=datacol, fitlty=fitlty, fillrect = NA, fitcol=fitcol, lines01 = lines01, Turnbull.confint = FALSE, addlegend = FALSE, add=TRUE) } } }fitdistrplus/R/logLik-surface.R0000644000176200001440000004004413323615055016206 0ustar liggesusers############################################################################# # Copyright (c) 2015 Christophe Dutang and Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### (log)-likelihood surface/line ### ### R functions ### llplot <- function(mlefit, loglik = TRUE, expansion = 1, lseq = 50, back.col = TRUE, nlev = 10, pal.col = terrain.colors(100), fit.show = FALSE, fit.pch = 4, ...) { if (!inherits(mlefit, c("fitdist", "fitdistcens"))) stop("Use only with 'fitdist' or 'fitdistcens' objects") if(inherits(mlefit, "fitdist")) { if(mlefit$method !="mle") stop("This plot is only available for distribution fits using maximum likelihood") data <- mlefit$data } else # censored data { data <- mlefit$censdata } distr <- mlefit$distname np <- length(mlefit$estimate) if (np == 1) { estim.value <- mlefit$estimate estim.sd <- mlefit$sd plot.arg <- names(mlefit$estimate) fix.arg <- mlefit$fix.arg llcurve(data, distr, plot.arg = plot.arg, min.arg = estim.value - estim.sd * 2 *expansion, max.arg = estim.value + estim.sd * 2 *expansion, lseq = lseq, fix.arg = fix.arg, loglik = loglik, weights = mlefit$weights, ...) if (fit.show) points(estim.value, ifelse(loglik, mlefit$loglik, exp(mlefit$loglik)), pch = fit.pch) } else # so if np > 1 if (np == 2) { estim.value <- mlefit$estimate estim.sd <- mlefit$sd plot.arg <- names(mlefit$estimate) fix.arg <- mlefit$fix.arg llsurface(data, distr, plot.arg = plot.arg, min.arg = estim.value - estim.sd * 2 *expansion, max.arg = estim.value + estim.sd * 2 *expansion, lseq = lseq, fix.arg = fix.arg, loglik = loglik, back.col = back.col, nlev = nlev, pal.col = pal.col, weights = mlefit$weights, ...) if (fit.show) points(estim.value[1], estim.value[2], pch = fit.pch) } else # so if np > 2 { def.par <- par(no.readonly = TRUE) ncombi <- choose(np, 2) lay <- lower.tri(matrix(0, (np - 1), (np - 1)), TRUE) lay[which(lay, TRUE)] <- 1:ncombi layout(lay) par(mar = c(5, 4, 0.2, 0.2)) for (i in 1:(np - 1)) for (j in (i+1):np) { plot.arg <- names(mlefit$estimate)[c(i, j)] estim.value <- mlefit$estimate[c(i, j)] estim.sd <- mlefit$sd[c(i, j)] fix.arg <- c(mlefit$fix.arg, as.list(mlefit$estimate[-c(i,j)])) llsurface(data, distr, plot.arg = plot.arg, min.arg = estim.value - estim.sd * 2 *expansion, max.arg = estim.value + estim.sd * 2 *expansion, lseq = lseq, fix.arg = fix.arg, loglik = loglik, back.col = back.col, nlev = nlev, pal.col = pal.col, weights = mlefit$weights, ...) if (fit.show) points(estim.value[1], estim.value[2], pch = fit.pch) } par(def.par) } invisible() } llsurface <- function(data, distr, plot.arg, min.arg, max.arg, lseq = 50, fix.arg = NULL, loglik = TRUE, back.col = TRUE, nlev = 10, pal.col = terrain.colors(100), weights = NULL, ...) { stopifnot(is.vector(plot.arg) || length(plot.arg) == 2) stopifnot(is.list(fix.arg) || is.null(fix.arg)) if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of numerics greater than 0") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") } else { weights <- rep(1, NROW(data)) } if (is.vector(data)) { cens <- FALSE } else { cens <- TRUE # Definition of datasets lcens (left censored)=vector, rcens (right censored)= vector, # icens (interval censored) = dataframe with left and right # and ncens (not censored) = vector censdata <- data irow.lcens <- is.na(censdata$left) # rows corresponding to lcens data lcens <- censdata[irow.lcens, ]$right if (any(is.na(lcens)) ) stop("An observation cannot be both right and left censored, coded with two NA values") irow.rcens <- is.na(censdata$right) # rows corresponding to rcens data rcens <- censdata[irow.rcens, ]$left irow.ncens <- censdata$left==censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to ncens data ncens<-censdata[irow.ncens, ]$left irow.icens <- censdata$left!=censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to icens data icens<-censdata[irow.icens, ] } #get distrib name if (!is.character(distr)) stop("distr must be a character string naming a distribution") else distname <- distr ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) if (cens) { pdistname <- paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) } #sanity check for argument names argdistname <- names(formals(ddistname)) m <- match(plot.arg, argdistname) if (any(is.na(m))) #check unexpected names stop("'plot.arg' must specify names which are arguments to 'distr'.") m <- match(names(fix.arg), argdistname) if (any(is.na(m))) #check unexpected names stop("'fix.arg' must specify names which are arguments to 'distr'.") #function to plot if (!cens) { if(loglik) { f2plot <- function(x, y) { par <- list(x,y) names(par) <- plot.arg loglikelihood(par, fix.arg = fix.arg, obs = data, ddistnam = ddistname, weights = weights) #sum(log(do.call(ddistname, c(list(data), par, as.list(fix.arg)) ) ) ) } }else { f2plot <- function(x, y) { par <- list(x,y) names(par) <- plot.arg likelihood(par, fix.arg = fix.arg, obs= data, ddistnam = ddistname, weights = weights) # prod(do.call(ddistname, c(list(data), as.list(par), as.list(fix.arg)) ) ) } } } else # for censored data { if(loglik) { f2plot <- function(x, y) { par <- list(x,y) names(par) <- plot.arg loglikelihoodcens(par, fix.arg = fix.arg, rcens = rcens, lcens = lcens, icens = icens, ncens = ncens, ddistnam = ddistname, pdistnam = pdistname, weights = weights, irow.ncens = irow.ncens, irow.lcens = irow.lcens, irow.rcens = irow.rcens, irow.icens = irow.icens) } }else { f2plot <- function(x, y) { par <- list(x,y) names(par) <- plot.arg likelihoodcens(par, fix.arg = fix.arg, rcens = rcens, lcens = lcens, icens = icens, ncens = ncens, ddistnam = ddistname, pdistnam = pdistname, weights = weights, irow.ncens = irow.ncens, irow.lcens = irow.lcens, irow.rcens = irow.rcens, irow.icens = irow.icens) } } } #create x, y and z matrix. p1 <- seq(min.arg[1], max.arg[1], length=lseq) p2 <- seq(min.arg[2], max.arg[2], length=lseq) z <- outer(p1, p2, Vectorize(f2plot, c("x","y"))) # vectorize is necessary to vectorize the function f2plot if (back.col) { image(p1, p2, z, col = pal.col, xlab = plot.arg[1], ylab = plot.arg[2]) if (nlev > 0) contour(p1, p2, z, nlevels = nlev, add = TRUE) } else { contour(p1, p2, z, nlevels = nlev, xlab = plot.arg[1], ylab = plot.arg[2]) } invisible() } llcurve <- function(data, distr, plot.arg, min.arg, max.arg, lseq = 50, fix.arg = NULL, loglik = TRUE, weights = NULL, ...) { stopifnot(is.vector(plot.arg) || length(plot.arg) == 1) stopifnot(is.list(fix.arg) || is.null(fix.arg)) if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of numerics greater than 0") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") } else { weights <- rep(1, NROW(data)) } if (is.vector(data)) { cens <- FALSE } else { cens <- TRUE # Definition of datasets lcens (left censored)=vector, rcens (right censored)= vector, # icens (interval censored) = dataframe with left and right # and ncens (not censored) = vector censdata <- data irow.lcens <- is.na(censdata$left) # rows corresponding to lcens data lcens <- censdata[irow.lcens, ]$right if (any(is.na(lcens)) ) stop("An observation cannot be both right and left censored, coded with two NA values") irow.rcens <- is.na(censdata$right) # rows corresponding to rcens data rcens <- censdata[irow.rcens, ]$left irow.ncens <- censdata$left==censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to ncens data ncens<-censdata[irow.ncens, ]$left irow.icens <- censdata$left!=censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to icens data icens<-censdata[irow.icens, ] } if (!is.character(distr)) stop("distr must be a character string naming a distribution") else distname <- distr ddistname <- paste("d", distname, sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) if (cens) { pdistname <- paste("p", distname, sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) } #sanity check for argument names argdistname <- names(formals(ddistname)) m <- match(plot.arg, argdistname) if (any(is.na(m))) #check unexpected names stop("'plot.arg' must specify names which are arguments to 'distr'.") m <- match(names(fix.arg), argdistname) if (any(is.na(m))) #check unexpected names stop("'fix.arg' must specify names which are arguments to 'distr'.") if (!cens) { #function to plot if(loglik) { f2plot <- function(x) { par <- list(x) names(par) <- plot.arg loglikelihood(par, fix.arg=fix.arg, obs = data, ddistnam = ddistname, weights = weights) } }else { f2plot <- function(x) { par <- list(x) names(par) <- plot.arg likelihood(par, fix.arg=fix.arg, obs = data, ddistnam = ddistname, weights = weights) } } } else # for censored data { if(loglik) { f2plot <- function(x) { par <- list(x) names(par) <- plot.arg loglikelihoodcens(par, fix.arg = fix.arg, rcens = rcens, lcens = lcens, icens = icens, ncens = ncens, ddistnam = ddistname, pdistnam = pdistname, weights = weights, irow.ncens = irow.ncens, irow.lcens = irow.lcens, irow.rcens = irow.rcens, irow.icens = irow.icens) } }else { f2plot <- function(x) { par <- list(x) names(par) <- plot.arg likelihoodcens(par, fix.arg = fix.arg, rcens = rcens, lcens = lcens, icens = icens, ncens = ncens, ddistnam = ddistname, pdistnam = pdistname, weights = weights, irow.ncens = irow.ncens, irow.lcens = irow.lcens, irow.rcens = irow.rcens, irow.icens = irow.icens) } } } #create x, y matrix. p1 <- seq(min.arg[1], max.arg[1], length = lseq) y <- sapply(p1, function(x) f2plot(x)) plot(p1, y, type="l", xlab = plot.arg, ylab = ifelse(loglik, "loglikelihood", "likelihood"), ...) invisible() } #local definition of loglikelihood loglikelihood <- function(par, fix.arg, obs, ddistnam, weights) sum(weights * log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) #local definition of likelihood likelihood <- function(par, fix.arg, obs, ddistnam, weights) prod(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) )^weights ) #local definition of loglikelihood for censored data loglikelihoodcens <- function(par, fix.arg, rcens, lcens, icens, ncens, ddistnam, pdistnam, weights, irow.ncens, irow.lcens, irow.rcens, irow.icens) { p1 <- log(do.call(ddistnam, c(list(ncens), as.list(par), as.list(fix.arg)))) p2 <- log(do.call(pdistnam, c(list(lcens), as.list(par), as.list(fix.arg)))) p3 <- log(1-do.call(pdistnam, c(list(rcens), as.list(par), as.list(fix.arg)))) p4 <- log(do.call(pdistnam, c(list(icens$right), as.list(par), as.list(fix.arg))) - do.call(pdistnam, c(list(icens$left), as.list(par), as.list(fix.arg))) ) sum(weights[irow.ncens] * p1) + sum(weights[irow.lcens] * p2) + sum(weights[irow.rcens] * p3) + sum(weights[irow.icens] * p4) } #local definition of likelihood for censored data likelihoodcens <- function(par, fix.arg, rcens, lcens, icens, ncens, ddistnam, pdistnam, weights, irow.ncens, irow.lcens, irow.rcens, irow.icens) { p1 <- do.call(ddistnam, c(list(ncens), as.list(par), as.list(fix.arg))) p2 <- do.call(pdistnam, c(list(lcens), as.list(par), as.list(fix.arg))) p3 <- 1-do.call(pdistnam, c(list(rcens), as.list(par), as.list(fix.arg))) p4 <- do.call(pdistnam, c(list(icens$right), as.list(par), as.list(fix.arg))) - do.call(pdistnam, c(list(icens$left), as.list(par), as.list(fix.arg))) prod(p1^weights[irow.ncens]) * prod(p2^weights[irow.lcens]) * prod(p3^weights[irow.rcens]) * prod(p4^weights[irow.icens]) } fitdistrplus/R/descdist.R0000644000176200001440000002473612772503243015155 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### Description of an empirical distribution ### ### R functions ### descdist <- function(data, discrete = FALSE, boot = NULL, method = "unbiased", graph = TRUE, obs.col = "darkblue", obs.pch = 16, boot.col = "orange") { #if(is.mcnode(data)) data <- as.vector(data) if (missing(data) || !is.vector(data,mode="numeric")) stop("data must be a numeric vector") if (length(data) < 4) stop("data must be a numeric vector containing at least four values") moment <- function(data,k){ m1 <- mean(data) return(sum((data-m1)^k)/length(data)) } if (method=="unbiased") { skewness <- function(data){ # unbiased estimation (Fisher 1930) sd <- sqrt(moment(data,2)) n <- length(data) gamma1 <- moment(data,3)/sd^3 unbiased.skewness <- sqrt(n*(n-1)) * gamma1 / (n-2) return(unbiased.skewness) } kurtosis <- function(data){ # unbiased estimation (Fisher 1930) n <- length(data) var<-moment(data,2) gamma2 <- moment(data,4)/var^2 unbiased.kurtosis <- (n-1)/ ((n-2)*(n-3)) * ((n+1)*gamma2 -3*(n-1) ) + 3 return(unbiased.kurtosis) } standdev <- function(data){ sd(data) } } else if (method=="sample") { skewness <- function(data) { sd <- sqrt(moment(data, 2)) return(moment(data, 3)/sd^3) } kurtosis <- function(data) { var <- moment(data, 2) return(moment(data, 4)/var^2) } standdev <- function(data){ sqrt(moment(data,2)) } } else stop("The only possible value for the argument method are 'unbiased' or 'sample'") res <- list(min=min(data),max=max(data),median=median(data), mean=mean(data),sd=standdev(data), skewness=skewness(data),kurtosis=kurtosis(data), method = method) skewdata<-res$skewness kurtdata<-res$kurtosis # Cullen and Frey graph if (graph) { # bootstrap sample for observed distribution # and computation of kurtmax from this sample if (!is.null(boot)) { if (!is.numeric(boot) || boot<10) { stop("boot must be NULL or a integer above 10") } n<-length(data) databoot<-matrix(sample(data,size=n*boot,replace=TRUE),nrow=n,ncol=boot) s2boot<-sapply(1:boot,function(iter) skewness(databoot[,iter])^2) kurtboot<-sapply(1:boot,function(iter) kurtosis(databoot[,iter])) kurtmax<-max(10,ceiling(max(kurtboot))) xmax<-max(4,ceiling(max(s2boot))) } else{ kurtmax<-max(10,ceiling(kurtdata)) xmax<-max(4,ceiling(skewdata^2)) } ymax<-kurtmax-1 plot(skewdata^2,kurtmax-kurtdata,pch=obs.pch,xlim=c(0,xmax),ylim=c(0,ymax), yaxt="n",xlab="square of skewness",ylab="kurtosis",main="Cullen and Frey graph") yax<-as.character(kurtmax-0:ymax) axis(side=2,at=0:ymax,labels=yax) if (!discrete) { # beta dist p<-exp(-100) lq<-seq(-100,100,0.1) q<-exp(lq) s2a<-(4*(q-p)^2*(p+q+1))/((p+q+2)^2*p*q) ya<-kurtmax-(3*(p+q+1)*(p*q*(p+q-6)+2*(p+q)^2)/(p*q*(p+q+2)*(p+q+3))) p<-exp(100) lq<-seq(-100,100,0.1) q<-exp(lq) s2b<-(4*(q-p)^2*(p+q+1))/((p+q+2)^2*p*q) yb<-kurtmax-(3*(p+q+1)*(p*q*(p+q-6)+2*(p+q)^2)/(p*q*(p+q+2)*(p+q+3))) s2<-c(s2a,s2b) y<-c(ya,yb) polygon(s2,y,col="lightgrey",border="lightgrey") # gamma dist lshape<-seq(-100,100,0.1) shape<-exp(lshape) s2<-4/shape y<-kurtmax-(3+6/shape) lines(s2,y,lty=2) # lnorm dist lshape<-seq(-100,100,0.1) shape<-exp(lshape) es2<-exp(shape^2) s2<-(es2+2)^2*(es2-1) y<-kurtmax-(es2^4+2*es2^3+3*es2^2-3) lines(s2,y,lty=3) legend(xmax*0.2,ymax*1.03,pch=obs.pch,legend="Observation",bty="n",cex=0.8,pt.cex=1.2,col=obs.col) if (!is.null(boot)) { legend(xmax*0.2,ymax*0.98,pch=1,legend="bootstrapped values", bty="n",cex=0.8,col=boot.col) } legend(xmax*0.55,ymax*1.03,legend="Theoretical distributions",bty="n",cex=0.8) legend(xmax*0.6,0.98*ymax,pch=8,legend="normal",bty="n",cex=0.8) legend(xmax*0.6,0.94*ymax,pch=2,legend="uniform",bty="n",cex=0.8) legend(xmax*0.6,0.90*ymax,pch=7,legend="exponential",bty="n",cex=0.8) legend(xmax*0.6,0.86*ymax,pch=3,legend="logistic",bty="n",cex=0.8) legend(xmax*0.6,0.82*ymax,fill="grey80",legend="beta",bty="n",cex=0.8) legend(xmax*0.6,0.78*ymax,lty=3,legend="lognormal",bty="n",cex=0.8) legend(xmax*0.6,0.74*ymax,lty=2,legend="gamma",bty="n",cex=0.8) legend(xmax*0.58,0.69*ymax,legend=c("(Weibull is close to gamma and lognormal)"), bty="n",cex=0.6) } else { # negbin dist p<-exp(-10) lr<-seq(-100,100,0.1) r<-exp(lr) s2a<-(2-p)^2/(r*(1-p)) ya<-kurtmax-(3+6/r+p^2/(r*(1-p))) p<-1-exp(-10) lr<-seq(100,-100,-0.1) r<-exp(lr) s2b<-(2-p)^2/(r*(1-p)) yb<-kurtmax-(3+6/r+p^2/(r*(1-p))) s2<-c(s2a,s2b) y<-c(ya,yb) polygon(s2,y,col="grey80",border="grey80") legend(xmax*0.2,ymax*1.03,pch=obs.pch,legend="Observation",bty="n",cex=0.8,pt.cex=1.2, col = obs.col) if (!is.null(boot)) { legend(xmax*0.2,ymax*0.98,pch=1,legend="bootstrapped values", bty="n",cex=0.8,col=boot.col) } legend(xmax*0.55,ymax*1.03,legend="Theoretical distributions",bty="n",cex=0.8) legend(xmax*0.6,0.98*ymax,pch=8,legend="normal",bty="n",cex=0.8) legend(xmax*0.6,0.94*ymax,fill="grey80",legend="negative binomial", bty="n",cex=0.8) legend(xmax*0.6,0.90*ymax,lty=2,legend="Poisson",bty="n",cex=0.8) # poisson dist llambda<-seq(-100,100,0.1) lambda<-exp(llambda) s2<-1/lambda y<-kurtmax-(3+1/lambda) lines(s2,y,lty=2) } # bootstrap sample for observed distribution if (!is.null(boot)) { points(s2boot,kurtmax-kurtboot,pch=1,col=boot.col,cex=0.5) } # observed distribution points(skewness(data)^2,kurtmax-kurtosis(data),pch=obs.pch,cex=2,col=obs.col) # norm dist points(0,kurtmax-3,pch=8,cex=1.5,lwd=2) if (!discrete) { # unif dist points(0,kurtmax-9/5,pch=2,cex=1.5,lwd=2) # exp dist points(2^2,kurtmax-9,pch=7,cex=1.5,lwd=2) # logistic dist points(0,kurtmax-4.2,pch=3,cex=1.5,lwd=2) } } # end of is (graph) return(structure(res, class = "descdist")) } print.descdist <- function(x, ...) { if (!inherits(x, "descdist")) stop("Use only with 'descdist' objects") cat("summary statistics\n") cat("------\n") cat("min: ",x$min," max: ",x$max,"\n") cat("median: ",x$median,"\n") cat("mean: ",x$mean,"\n") if (x$method=="sample") { cat("sample sd: ",x$sd,"\n") cat("sample skewness: ",x$skewness,"\n") cat("sample kurtosis: ",x$kurtosis,"\n") } else if (x$method=="unbiased") { cat("estimated sd: ",x$sd,"\n") cat("estimated skewness: ",x$skewness,"\n") cat("estimated kurtosis: ",x$kurtosis,"\n") } } fitdistrplus/R/util-checkparamlist.R0000644000176200001440000000527413406145550017312 0ustar liggesusers# checkparam function checks start.arg and fix.arg that parameters are named correctly # INPUTS # start.arg : a named list # fix.arg : NULL or a named list # argdistname : argument names of the distribution # hasnodefaultval : vector of logical indicating no default value of argument # OUTPUTS # a named list with components: ok (TRUE or FALSE), txt (NULL or the error message), # start.arg : a named list of starting values for optimization # or a function to compute them from data checkparamlist <- function(start.arg, fix.arg, argdistname, hasnodefaultval) { errtxt <- list(t3="'start' must specify names which are arguments to 'distr'.", t4="'fix.arg' must specify names which are arguments to 'distr'.", t5="A distribution parameter cannot be specified both in 'start' and 'fix.arg'.", t6="'start' should not have NA or NaN values.", t7="'fix.arg' should not have NA or NaN values.", t8="Some parameter names have no starting/fixed value: ", t9="Some parameter names have no starting/fixed value but have a default value: ") vstart <- unlist(start.arg) #check unexpected names m <- match(names(vstart), argdistname) if (any(is.na(m))) stop(errtxt$t3) #check NA/NaN values if(any(is.na(vstart)) || any(is.nan(vstart))) stop(errtxt$t6) if(!is.null(fix.arg)) { vfix <- unlist(fix.arg) #check unexpected names mfix <- match(names(vfix), argdistname) if (any(is.na(mfix))) stop(errtxt$t4) # check that some parameters are not both in fix.arg and start minter <- match(names(vstart), names(vfix)) if (any(!is.na(minter))) stop(errtxt$t5) #check NA/NaN values if(any(is.na(vfix)) || any(is.nan(vfix))) stop(errtxt$t7) allparname <- names(c(vstart, vfix)) }else allparname <- names(vstart) theoparam <- computegetparam(argdistname) #special case where both scale and rate are allowed, see ?dgamma if("scale" %in% theoparam && "rate" %in% theoparam) { errt8 <- any(!allparname %in% theoparam) || length(allparname) != length(theoparam)-1 #special case where both prob and mu are allowed, see ?dnbinom }else if(length(theoparam) == 3 && all(c("size", "prob", "mu") %in% theoparam)) { errt8 <- any(!allparname %in% theoparam) || length(allparname) != length(theoparam)-1 }else errt8 <- any(!theoparam %in% allparname) #only make a warning if unset arguments have a default value if(errt8) { unsetarg <- theoparam[!theoparam %in% allparname] if(any(hasnodefaultval[unsetarg])) stop(paste0(errtxt$t8, unsetarg, ".")) else warning(paste0(errtxt$t9, unsetarg, ".")) } list("start.arg"=start.arg, "fix.arg"=fix.arg) }fitdistrplus/R/ppcompcens.R0000644000176200001440000002011713342003133015472 0ustar liggesusers############################################################################# # Copyright (c) 2018 Marie Laure Delignette-Muller, Christophe Dutang, # Aurelie Siberchicot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### PP plot for various fits ### of continuous distribution(s) (fitdistcens results) ### on a same dataset ### ### R functions ### ppcompcens <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fillrect, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", ...) { if(inherits(ft, "fitdistcens")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdistcens' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdistcens")))) stop("argument ft must be a list of 'fitdistcens' objects") } # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("qqcompcens is not yet available when using weights") censdata <- ft[[1]]$censdata # check data verif.ftidata <- function(fti) { if (any(fti$censdata$left != censdata$left, na.rm=TRUE) | any(fti$censdata$right != censdata$right, na.rm=TRUE)) stop("All compared fits must have been obtained with the same dataset") } l <- lapply( ft, verif.ftidata) rm(l) if (xlogscale != ylogscale) { xlogscale <- ylogscale <- TRUE warning("As a Q-Q plot should use the same scale on x and y axes, both axes were put in a logarithmic scale.") } logxy <- paste(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y",""), sep="") # manage default parameters nft <- length(ft) if (missing(fitcol)) fitcol <- 2:(nft+1) fitcol <- rep(fitcol, length.out=nft) if (missing(fillrect)) if ((nft == 1) | plotstyle == "ggplot") fillrect <- "lightgrey" else fillrect <- NA # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } if (missing(xlab)) xlab <- "Theoretical probabilities" if (missing(ylab)) ylab <- "Empirical probabilities" if (missing(main)) main <- "P-P plot" # computation from censdata db <- censdata db$left[is.na(db$left)] <- -Inf db$right[is.na(db$right)] <- Inf f <- npsurv(db)$f if(missing(xlim) & missing(ylim)) { if (xlogscale == TRUE) { stop("You must define the limits of axes using xlim or ylim in order to use a logarithmic scale for a P-P plot with censored data.") } else { xlim <- ylim <- c(0, 1) } } else # at least xlim or ylim are specified { if (missing(xlim) | missing(ylim)) { warning("By default the same limits are applied to x and y axes. You should specifiy both if you want different x and y limits") if (missing(xlim)) xlim <- ylim else ylim <- xlim } } k <- length(f$left) Fnpsurv <- cumsum(f$p) Fbefore <- c(0, Fnpsurv[-k]) df <- data.frame(left = f$left, right = f$right) # Definition of vertices of each rectangle Qi.left <- df$left # dim k Qi.right <- df$right nQi <- length(Qi.left) Pi.low <- Fbefore Pi.up <- Fnpsurv lrect <- vector(mode = "list", length = nft) for(i in 1:nft) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname pdistname <- paste("p", distname, sep="") if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) warning(" Be careful, variables are considered continuous in this function!") Pitheo.low <- do.call(pdistname, c(list(Qi.left), as.list(para))) Pitheo.up <- do.call(pdistname, c(list(Qi.right), as.list(para))) lrect[[i]] <- data.frame(Pitheo.low = Pitheo.low, Pitheo.up = Pitheo.up, Pi.low = Pi.low, Pi.up = Pi.up, ind = legendtext[i]) } if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## # main plot plot(1, 1, type = "n", main = main, xlim = xlim, ylim = ylim, xlab = xlab, ylab = ylab, log = logxy) # plot of rectangles plot.fti <- function(i, ...) { Pitheo.low <- lrect[[i]]$Pitheo.low Pi.low <- lrect[[i]]$Pi.low Pitheo.up <- lrect[[i]]$Pitheo.up Pi.up <- lrect[[i]]$Pi.up if (ynoise & nft > 1) { if (xlogscale == TRUE) { noise2mult <- runif(nQi, 0.99, 1.01) rect(xleft = Pitheo.low, ybottom = Pi.low * noise2mult, xright = Pitheo.up, ytop = Pi.up * noise2mult, border = fitcol[i], col = fillrect[i]) } else { noise2add <- runif(nQi, -0.01, 0.01) rect(xleft = Pitheo.low, ybottom = Pi.low + noise2add, xright = Pitheo.up, ytop = Pi.up + noise2add, border = fitcol[i], col = fillrect[i]) } } else # ! ynoise { rect(xleft = Pitheo.low, ybottom = Pi.low, xright = Pitheo.up, ytop = Pi.up, border = fitcol[i], col = fillrect[i]) } } s <- sapply(1:nft, plot.fti, ...) rm(s) if(line01) abline(0, 1, lty = line01lty, col = line01col) if (addlegend) { legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, lty = 1, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## drect <- do.call("rbind", lrect) ind <- as.factor(drect$ind) fitcol <- rep(fitcol, table(ind)) fillrect <- if(length(fillrect) > 1) {rep(fillrect, table(ind))} else {fillrect} ggppcompcens <- ggplot2::ggplot(drect) + ggplot2::coord_cartesian(xlim = xlim, ylim = ylim) + ggplot2::ggtitle(main) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::geom_rect(data=drect, mapping=ggplot2::aes_(xmin=quote(Pitheo.low), xmax=quote(Pitheo.up), ymin=quote(Pi.low), ymax=quote(Pi.up)), colour = fitcol, fill = fillrect, alpha=0.5) + ggplot2::theme_bw() + ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5)) + {if(line01) ggplot2::geom_abline(ggplot2::aes(slope = 1, intercept = 0), color = line01col, linetype = line01lty)} + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} + ggplot2::facet_wrap(~ind) return(ggppcompcens) } } fitdistrplus/R/gradlogLik.R0000644000176200001440000000614312772503243015422 0ustar liggesusers############################################################################# # Copyright (c) 2016 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### gradient of log-likelihood ### ### R functions (not exported) ### #Beta distribution grdbeta <- function(x, d1, d2) #individual contribution c(log(x)-digamma(d1)+digamma(d1+d2), log(1-x)-digamma(d2)+digamma(d1+d2)) grlnlbeta <- function(par, obs, ...) #total grad loglik -rowSums(sapply(obs, function(x) grdbeta(x, d1=par[1], d2=par[2]))) #Gamma distribution grdgamma <- function(x, shape, rate) #individual contribution c(log(x)-log(rate)-digamma(shape), x/rate^2-shape/rate) grlnlgamma <- function(par, obs, ...) #total grad loglik { n <- length(obs) res <- grdgamma(obs, shape=par[1], rate=par[2]) c(-sum(res[1:n]), -sum(res[1:n+n])) } fitdistrplus/R/util-cens2pseudo.R0000644000176200001440000000460513310705056016544 0ustar liggesusers# compute pseudo data from a censored dataset # INPUTS # censdata : a two-column matrix with left, right and/or interval censored data # OUTPUTS # a vector of pseudo data (needed to compute starting values) # a vector of right censored data # a vector of left censored data # a vector of non censored data # a vector of interval censored data cens2pseudo <- function(censdata) { # Definition of datasets lcens (left censored)=vector, rcens (right censored)= vector, # icens (interval censored) = dataframe with left and right # ncens (not censored) = vector and # pseudo (data transformed in non censored pseudo data by taking the # mean of bounds for interval censored data and the left or right bound for the other # censored data) = vector irow.lcens <- is.na(censdata$left) # rows corresponding to lcens data lcens <- censdata[irow.lcens, ]$right irow.rcens <- is.na(censdata$right) # rows corresponding to rcens data rcens <- censdata[irow.rcens, ]$left if (any(is.na(lcens)) ) stop("An observation cannot be both right and left censored, coded with two NA values") irow.ncens <- censdata$left==censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to ncens data ncens<-censdata[irow.ncens, ]$left irow.icens <- censdata$left!=censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to icens data icens<-censdata[irow.icens, ] pseudo <- c(rcens, lcens, ncens, (icens$left+icens$right)/2) list(pseudo=pseudo, rcens=rcens, lcens=lcens, ncens=ncens, icens=icens) } # compute row indexes from a censored dataset cens2idxrow <- function(censdata) { # Definition of datasets lcens (left censored)=vector, rcens (right censored)= vector, # icens (interval censored) = dataframe with left and right # and ncens (not censored) = vector irow.lcens <- is.na(censdata$left) # rows corresponding to lcens data irow.rcens <- is.na(censdata$right) # rows corresponding to rcens data irow.ncens <- censdata$left==censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to ncens data irow.icens <- censdata$left!=censdata$right & !is.na(censdata$left) & !is.na(censdata$right) # rows corresponding to icens data list(lcens=irow.lcens, rcens=irow.rcens, ncens=irow.ncens, icens=irow.icens) }fitdistrplus/R/gofstat.R0000644000176200001440000003403413315137601015005 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### calculate goodness-of-fit statistics for ### fit of a parametric distribution on non-censored data ### ### R functions ### gofstat <- function (f, chisqbreaks, meancount, discrete, fitnames=NULL) { if(inherits(f, "fitdist")) { f <- list(f) }else if(length(f) == 1) { if(!inherits(f, "fitdist")) stop("argument f must a 'fitdist' object or a list of 'fitdist' objects.") }else if(!is.list(f)) { stop("argument f must be a list of 'fitdist' objects") }else { if(any(sapply(f, function(x) !inherits(x, "fitdist")))) stop("argument f must be a list of 'fitdist' objects") } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(f[[1]]$weights)) stop("gofstat is not yet available when using weights") odata <- f[[1]]$data sdata <- sort(odata) n <- f[[1]]$n distname <- f[[1]]$distname pdistname <- paste("p", distname, sep="") estimate <- f[[1]]$estimate fix.arg <- f[[1]]$fix.arg verif.ftidata <- function(fti) { if (any(fti$data != odata)) stop("All compared fits must have been obtained with the same dataset") invisible() } lapply(f, verif.ftidata) # initiate discrete if not given if(missing(discrete)) { discrete <- f[[1]]$discrete } if(!is.logical(discrete)) stop("wrong argument 'discrete'.") #define chisqbreaks if not defined if (missing(chisqbreaks)) { if (missing(meancount)) meancount <- round( n / ((4*n)^(2/5)) ) if (length(sdata)>ceiling(1.5*meancount)) { limit <- sdata[meancount] sdata <- sdata[sdata>limit] chisqbreaks <- limit }else { warnings("The sample is too small to automatically define chisqbreaks") chisq <- NULL chisqbreaks <- NULL chisqpvalue <- NULL chisqtable <- NULL chisqdf <- NULL } while (length(sdata)>ceiling(1.5*meancount)) { limit <- sdata[meancount] sdata <- sdata[sdata>limit] chisqbreaks <- c(chisqbreaks,limit) } sdata <- sort(odata) } nbfit <- length(f) if(is.null(fitnames)) fitnames <- paste(1:nbfit, sapply(f, function(x) x$method), sapply(f, function(x) x$distname), sep="-") Chi2 <- compute.gofstat.Chi2(sdata, n, distname, pdistname, estimate, fix.arg, chisqbreaks) if(length(f) > 1) { #renaming names(Chi2$chisq) <- names(Chi2$chisqpvalue) <- names(Chi2$chisqdf) <- fitnames[1] colnames(Chi2$chisqtable)[2] <- paste("theo", fitnames[1], sep=" ") #computation and storing for(i in 2:nbfit) { Chi2temp <- compute.gofstat.Chi2(sdata, n, f[[i]]$distname, paste("p", f[[i]]$distname, sep=""), f[[i]]$estimate, f[[i]]$fix.arg, chisqbreaks) names(Chi2temp$chisq) <- names(Chi2temp$chisqpvalue) <- names(Chi2temp$chisqdf) <- fitnames[i] Chi2$chisq <- c(Chi2$chisq, Chi2temp$chisq) Chi2$chisqpvalue <- c(Chi2$chisqpvalue, Chi2temp$chisqpvalue) Chi2$chisqdf <- c(Chi2$chisqdf, Chi2temp$chisqdf) Chi2$chisqtable <- cbind(Chi2$chisqtable, Chi2temp$chisqtable[,2]) colnames(Chi2$chisqtable)[NCOL(Chi2$chisqtable)] <- paste("theo", fitnames[i], sep=" ") } } if(discrete) { addres <- Chi2 }else { KSCvMAD <- compute.gofstat.KSCvMAD(sdata, n, distname, pdistname, estimate, fix.arg, f[[1]]$method) #renaming names(KSCvMAD$cvm) <- names(KSCvMAD$ad) <- names(KSCvMAD$ks) <- fitnames[1] if(!is.null(KSCvMAD$cvmtest)) names(KSCvMAD$cvmtest) <- names(KSCvMAD$adtest) <- names(KSCvMAD$kstest) <- fitnames[1] if(length(f) > 1) { #computation and storing for(i in 2:nbfit) { KSCvMADtemp <- compute.gofstat.KSCvMAD(sdata, n, f[[i]]$distname, paste("p", f[[i]]$distname, sep=""), f[[i]]$estimate, f[[i]]$fix.arg, f[[i]]$method) names(KSCvMADtemp$cvm) <- names(KSCvMADtemp$ad) <- names(KSCvMADtemp$ks) <- fitnames[i] if(!is.null(KSCvMADtemp$cvmtest)) names(KSCvMADtemp$cvmtest) <- names(KSCvMADtemp$adtest) <- names(KSCvMADtemp$kstest) <- fitnames[i] KSCvMAD$cvm <- c(KSCvMAD$cvm, KSCvMADtemp$cvm) KSCvMAD$cvmtest <- c(KSCvMAD$cvmtest, KSCvMADtemp$cvmtest) KSCvMAD$ad <- c(KSCvMAD$ad, KSCvMADtemp$ad) KSCvMAD$adtest <- c(KSCvMAD$adtest, KSCvMADtemp$adtest) KSCvMAD$ks <- c(KSCvMAD$ks, KSCvMADtemp$ks) KSCvMAD$kstest <- c(KSCvMAD$kstest, KSCvMADtemp$kstest) } } addres <- c(Chi2, KSCvMAD) } aics <- sapply(f, function(x) x$aic) names(aics) <- fitnames bics <- sapply(f, function(x) x$bic) names(bics) <- fitnames res <- c(addres, aic=list(aics), bic=list(bics), discrete=discrete, nbfit=nbfit) class(res) <- c("gofstat.fitdist", "fitdist") res } #---------------------------------------------------------------------- #KS, CvM, AD statistics : only for continuous distributions compute.gofstat.KSCvMAD <- function(sdata, n, distname, pdistname, estimate, fix.arg, method) { obspu <- seq(1,n)/n obspl <- seq(0,n-1)/n theop <- do.call(pdistname, c(list(sdata), as.list(estimate), fix.arg)) # Kolmogorov-Smirnov statistic ks <- max(pmax(abs(theop-obspu), abs(theop-obspl))) Dmod <- ks*(sqrt(n)+0.12+0.11/sqrt(n)) # Kolmogorov-Smirnov test if (n>=30) kstest <- ifelse(Dmod>1.358,"rejected","not rejected") else kstest <- "not computed" # Anderson-Darling statistic ad <- - n - mean( (2 * 1:n - 1) * (log(theop) + log(1 - rev(theop))) ) # ad <- -n-sum((2*(1:n)-1)*log(theop) + (2*n+1-2*(1:n))*log(1-theop))/n # Anderson-Darling test if (is.null(fix.arg) & method == "mle") { # the following test does not correspond to MLE estimate but to unbiased # estimate of the variance #if ((distname == "norm" | distname == "lnorm") & n>=5) { # a2mod <- ad*(1+0.75/n+2.25/n^2) # adtest <- ifelse(a2mod>0.752,"rejected","not rejected") #} #else if (distname == "exp" & n>=5) { a2mod <- ad*(1+0.6/n) adtest <- ifelse(a2mod>1.321, "rejected", "not rejected") }else if (distname == "gamma" & n>=5) { m <- as.list(estimate)$shape interp <- approxfun(c(1,2,3,4,5,6,8,10,12,15,20), c(0.786,0.768,0.762,0.759,0.758,0.757,0.755,0.754,0.754,0.754,0.753), yright=0.752) adtest <- ifelse(ad>interp(m), "rejected", "not rejected") }else if (distname == "weibull" & n>=5) { a2mod <- ad*(1+0.2/sqrt(n)) adtest <- ifelse(a2mod>0.757, "rejected", "not rejected") }else if (distname == "logis" & n>=5) { a2mod <- ad*(1+0.25/n) adtest <- ifelse(a2mod>0.66,"rejected","not rejected") }else adtest <- "not computed" } else # if (is.null(fix.arg)...) adtest <- "not computed" # Cramer-von Mises statistic cvm <- 1/(12*n) + sum( ( theop - (2 * 1:n - 1)/(2 * n) )^2 ) # Cramer-von Mises test if (is.null(fix.arg) & method == "mle") { # the following test does not correspond to MLE estimate but to unbiased # estimate of the variance # if ((distname == "norm" | distname == "lnorm") & n>=5) { # w2mod <- cvm*(1+0.5/n) # cvmtest <- ifelse(w2mod>0.126,"rejected","not rejected") # } # else if (distname == "exp" & n>=5) { w2mod <- cvm*(1+0.16/n) cvmtest <- ifelse(w2mod>0.222,"rejected","not rejected") }else if (distname == "gamma" & n>=5) { m <- as.list(estimate)$shape interp <- approxfun(c(1,2,3,4,5,6,8,10,12,15,20), c(0.136,0.131,0.129,0.128,0.128,0.128,0.127,0.127,0.127,0.127,0.126), yright=0.126) cvmtest <- ifelse(cvm>interp(m),"rejected","not rejected") }else if (distname == "weibull" & n>=5) { w2mod <- cvm*(1+0.2/sqrt(n)) cvmtest <- ifelse(w2mod>0.124,"rejected","not rejected") }else if (distname == "logis" & n>=5) { w2mod <- (n*cvm - 0.08)/(n - 1) cvmtest <- ifelse(w2mod>0.098,"rejected","not rejected") }else cvmtest <- "not computed" } else # if (is.null(fix.arg)) cvmtest <- "not computed" if (length(table(sdata)) != length(sdata)) warnings("Kolmogorov-Smirnov, Cramer-von Mises and Anderson-Darling statistics may not be correct with ties") list(cvm = cvm, cvmtest = cvmtest, ad = ad,adtest = adtest, ks = ks, kstest=kstest) } #---------------------------------------------------------------------- #chi-squared statistic : both for continuous and discrete distributions compute.gofstat.Chi2 <- function(sdata, n, distname, pdistname, estimate, fix.arg, chisqbreaks) { # chi-squared statistic and pvalues if (!is.null(chisqbreaks)) { if(!is.numeric(chisqbreaks)) stop("chisqbreaks must be a numeric vector defining the cell boundaries") nbreaks <- length(chisqbreaks) pbreaks <- do.call(pdistname, c(list(chisqbreaks), as.list(estimate), fix.arg)) Fobsbreaks <- ecdf(sdata)(chisqbreaks) Fobsunder <- c(0, Fobsbreaks[1:nbreaks-1]) punder <- c(0, pbreaks[1:nbreaks-1]) if (pbreaks[nbreaks]==1 & Fobsbreaks[nbreaks]==1) { p <- pbreaks-punder Fobs <- Fobsbreaks-Fobsunder }else { p <- c(pbreaks-punder, 1-pbreaks[nbreaks]) Fobs <- c(Fobsbreaks-Fobsunder, 1-Fobsbreaks[nbreaks]) } obscounts <- round(Fobs*n) theocounts <- p*n chisq <- sum(((obscounts-theocounts)^2)/theocounts) chisqdf <- length(obscounts)-1-length(estimate) # replacing of the line below which causes an error message for chisqdf <=0 # chisqpvalue <- ifelse(chisqdf>0, pchisq(chisq, df=chisqdf, lower.tail=FALSE), NULL) if (chisqdf>0) { chisqpvalue <- pchisq(chisq, df=chisqdf, lower.tail=FALSE) } else { chisqpvalue <- NULL } chisqtable <- as.table(cbind(obscounts, theocounts)) for (i in 1:length(obscounts)-1) rownames(chisqtable)[i] <- paste("<=", signif(chisqbreaks[i], digits=4)) rownames(chisqtable)[length(obscounts)] <- paste(">", signif(chisqbreaks[i], digits=4)) return( list(chisq = chisq, chisqbreaks=chisqbreaks, chisqpvalue = chisqpvalue, chisqdf = chisqdf, chisqtable = chisqtable) ) }else return(NULL) } print.gofstat.fitdist <- function(x, ...) { if (!inherits(x, "gofstat.fitdist")) stop("Use only with 'gofstat.fitdist' objects") if (x$discrete) #discrete distribution { if(!is.null(x$chisq)) { cat("Chi-squared statistic: ",x$chisq,"\n") cat("Degree of freedom of the Chi-squared distribution: ",x$chisqdf,"\n") if (any(x$chisqdf <= 0)) { cat(" The degree of freedom of the chi-squared distribution is less than 1 \n") cat(" The number of cells is insufficient to calculate the p-value. \n") }else { cat("Chi-squared p-value: ",x$chisqpvalue,"\n") if (any(x$chisqtable[,-1] < 5)) cat(" the p-value may be wrong with some theoretical counts < 5 \n") } cat("Chi-squared table:\n") print(x$chisqtable) cat("\nGoodness-of-fit criteria\n") mm <- rbind(AIC=x$aic, BIC=x$bic) rownames(mm) <- c("Akaike's Information Criterion", "Bayesian Information Criterion") print(mm) }else cat("The sample is too small to automatically define cells for Chi-squared test \n") }else # continuous distribution { cat("Goodness-of-fit statistics\n") mm <- rbind(KS=x$ks, CvM=x$cvm, AD=x$ad) rownames(mm) <- c("Kolmogorov-Smirnov statistic", "Cramer-von Mises statistic", "Anderson-Darling statistic") print(mm) cat("\nGoodness-of-fit criteria\n") mm <- rbind(AIC=x$aic, BIC=x$bic) rownames(mm) <- c("Akaike's Information Criterion", "Bayesian Information Criterion") print(mm) # } } invisible(x) }fitdistrplus/R/mgedist.R0000644000176200001440000004246213342003075014773 0ustar liggesusers############################################################################# # Copyright (c) 2009 Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### maximum goodness-of-fit estimation for censored or non-censored data ### and continuous distributions ### (at this time only available for non censored data) ### ### R functions ### mgedist <- function (data, distr, gof = "CvM", start=NULL, fix.arg=NULL, optim.method="default", lower=-Inf, upper=Inf, custom.optim=NULL, silent=TRUE, gradient=NULL, checkstartfix=FALSE, ...) # data may correspond to a vector for non censored data or to # a dataframe of two columns named left and right for censored data { if (!is.character(distr)) stop("distr must be a character string naming a distribution") else distname <- distr if (is.element(distname,c("binom","nbinom","geom","hyper","pois"))) stop("Maximum goodness-of-fit estimation method is not intended to fit discrete distributions") pdistname <- paste("p",distname,sep="") if (!exists(pdistname, mode="function")) stop(paste("The ", pdistname, " function must be defined")) ddistname <- paste("d",distname,sep="") if (!exists(ddistname, mode="function")) stop(paste("The ", ddistname, " function must be defined")) argddistname <- names(formals(ddistname)) if(is.null(custom.optim)) optim.method <- match.arg(optim.method, c("default", "Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent")) gof <- match.arg(gof, c("CvM", "KS", "AD", "ADR", "ADL", "AD2R", "AD2L", "AD2")) start.arg <- start #to avoid confusion with the start() function of stats pkg (check is done lines 87-100) if(is.vector(start.arg)) #backward compatibility start.arg <- as.list(start.arg) my3dots <- list(...) if ("weights" %in% names(my3dots)) stop("Weights is not allowed for maximum GOF estimation") if (is.vector(data)) { cens <- FALSE if (!(is.numeric(data) & length(data)>1)) stop("data must be a numeric vector of length greater than 1 for non censored data or a dataframe with two columns named left and right and more than one line for censored data") } else { cens <- TRUE censdata <- data if (!(is.vector(censdata$left) & is.vector(censdata$right) & length(censdata[,1])>1)) stop("data must be a numeric vector of length greater than 1 for non censored data or a dataframe with two columns named left and right and more than one line for censored data") pdistname<-paste("p",distname,sep="") if (!exists(pdistname,mode="function")) stop(paste("The ",pdistname," function must be defined to apply maximum likelihood to censored data")) } if (cens) { # Definition of datasets lcens (left censored)=vector, rcens (right censored)= vector, # icens (interval censored) = dataframe with left and right # and ncens (not censored) = vector lcens<-censdata[is.na(censdata$left),]$right if (any(is.na(lcens)) ) stop("An observation cannot be both right and left censored, coded with two NA values") rcens<-censdata[is.na(censdata$right),]$left ncens<-censdata[censdata$left==censdata$right & !is.na(censdata$left) & !is.na(censdata$right),]$left icens<-censdata[censdata$left!=censdata$right & !is.na(censdata$left) & !is.na(censdata$right),] # Definition of a data set for calculation of starting values data<-c(rcens,lcens,ncens,(icens$left+icens$right)/2) } if(!checkstartfix) #pre-check has not been done by fitdist() or bootdist() { # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=data, distname=distname) #check inconsistent parameters hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #set fix.arg.fun if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL }else #pre-check has been done by fitdist() or bootdist() { arg_startfix <- list(start.arg=start, fix.arg=fix.arg) fix.arg.fun <- NULL } #unlist starting values as needed in optim() vstart <- unlist(arg_startfix$start.arg) #sanity check if(is.null(vstart)) stop("Starting values could not be NULL with checkstartfix=TRUE") #erase user value #(cannot coerce to vector as there might be different modes: numeric, character...) fix.arg <- arg_startfix$fix.arg ############# MGE fit using optim or custom.optim ########## # definition of the function to minimize depending on the argument gof # for non censored data if (!cens) { # the argument names are: # - par for parameters (like in optim function) # - fix.arg for optional fixed parameters # - obs for observations (previously dat but conflicts with genoud data.type.int argument) # - pdistnam for distribution name if (gof == "CvM") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) 1/(12*n) + sum( ( theop - (2 * 1:n - 1)/(2 * n) )^2 ) } else if (gof == "KS") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) obspu <- seq(1,n)/n obspl <- seq(0,n-1)/n theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) max(pmax(abs(theop-obspu),abs(theop-obspl))) } else if (gof == "AD") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) - n - mean( (2 * 1:n - 1) * (log(theop) + log(1 - rev(theop))) ) } else if (gof == "ADR") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) n/2 - 2 * sum(theop) - mean ( (2 * 1:n - 1) * log(1 - rev(theop)) ) } else if (gof == "ADL") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) -3*n/2 + 2 * sum(theop) - mean ( (2 * 1:n - 1) * log(theop) ) } else if (gof == "AD2R") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) 2 * sum(log(1 - theop)) + mean ( (2 * 1:n - 1) / (1 - rev(theop)) ) } else if (gof == "AD2L") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) 2 * sum(log(theop)) + mean ( (2 * 1:n - 1) / theop ) } else if (gof == "AD2") fnobj <- function(par, fix.arg, obs, pdistnam) { n <- length(obs) s <- sort(obs) theop <- do.call(pdistnam,c(list(s),as.list(par),as.list(fix.arg))) 2 * sum(log(theop) + log(1 - theop) ) + mean ( ((2 * 1:n - 1) / theop) + ((2 * 1:n - 1) / (1 - rev(theop))) ) } } else # if (!cens) stop("Maximum goodness-of-fit estimation is not yet available for censored data.") # Function to calculate the loglikelihood to return loglik <- function(par, fix.arg, obs, ddistnam) { sum(log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) } owarn <- getOption("warn") # Try to minimize the gof distance using the base R optim function if(is.null(custom.optim)) { hasbound <- any(is.finite(lower) | is.finite(upper)) # Choice of the optimization method if (optim.method == "default") { meth <- ifelse(length(vstart) > 1, "Nelder-Mead", "BFGS") }else meth <- optim.method if(meth == "BFGS" && hasbound && is.null(gradient)) { meth <- "L-BFGS-B" txt1 <- "The BFGS method cannot be used with bounds without provided the gradient." txt2 <- "The method is changed to L-BFGS-B." warning(paste(txt1, txt2)) } options(warn=ifelse(silent, -1, 0)) #select optim or constrOptim if(hasbound) #finite bounds are provided { if(!is.null(gradient)) { opt.fun <- "constrOptim" }else #gradient == NULL { if(meth == "Nelder-Mead") opt.fun <- "constrOptim" else if(meth %in% c("L-BFGS-B", "Brent")) opt.fun <- "optim" else { txt1 <- paste("The method", meth, "cannot be used by constrOptim() nor optim() without gradient and bounds.") txt2 <- "Only optimization methods L-BFGS-B, Brent and Nelder-Mead can be used in such case." stop(paste(txt1, txt2)) } } if(opt.fun == "constrOptim") { #recycle parameters npar <- length(vstart) #as in optim() line 34 lower <- as.double(rep_len(lower, npar)) #as in optim() line 64 upper <- as.double(rep_len(upper, npar)) # constraints are : Mat %*% theta >= Bnd, i.e. # +1 * theta[i] >= lower[i]; # -1 * theta[i] >= -upper[i] #select rows from the identity matrix haslow <- is.finite(lower) Mat <- diag(npar)[haslow, ] #select rows from the opposite of the identity matrix hasupp <- is.finite(upper) Mat <- rbind(Mat, -diag(npar)[hasupp, ]) colnames(Mat) <- names(vstart) rownames(Mat) <- paste0("constr", 1:NROW(Mat)) #select the bounds Bnd <- c(lower[is.finite(lower)], -upper[is.finite(upper)]) names(Bnd) <- paste0("constr", 1:length(Bnd)) initconstr <- Mat %*% vstart - Bnd if(any(initconstr < 0)) stop("Starting values must be in the feasible region.") opttryerror <- try(opt <- constrOptim(theta=vstart, f=fnobj, ui=Mat, ci=Bnd, grad=gradient, fix.arg=fix.arg, obs=data, pdistnam=pdistname, hessian=!is.null(gradient), method=meth, ...), silent=TRUE) if(!inherits(opttryerror, "try-error")) if(length(opt$counts) == 1) #appears when the initial point is a solution opt$counts <- c(opt$counts, NA) }else #opt.fun == "optim" { opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, pdistnam=pdistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } }else #hasbound == FALSE { opt.fun <- "optim" opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, pdistnam=pdistname, hessian=TRUE, method=meth, lower=lower, upper=upper, ...), silent=TRUE) } options(warn=owarn) if (inherits(opttryerror,"try-error")) { warnings("The function optim encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, loglik = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The function optim failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=opt.fun, optim.method=meth, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, weights=NULL, counts=opt$counts, optim.message=opt$message, loglik=loglik(opt$par, fix.arg, data, ddistname), gof=gof) } else # Try to minimize the gof distance using a user-supplied optim function { options(warn=ifelse(silent, -1, 0)) if (!cens) opttryerror <- try(opt <- custom.optim(fn=fnobj, fix.arg=fix.arg, obs=data, pdistnam=pdistname, par=vstart, ...), silent=TRUE) else stop("Maximum goodness-of-fit estimation is not yet available for censored data.") options(warn=owarn) if (inherits(opttryerror,"try-error")) { warnings("The customized optimization function encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, value = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The customized optimization function failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) argdot <- list(...) method.cust <- argdot$method res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=custom.optim, optim.method=method.cust, fix.arg = fix.arg, fix.arg.fun = fix.arg.fun, weights=NULL, counts=opt$counts, optim.message=opt$message, loglik=loglik(opt$par, fix.arg, data, ddistname), gof=gof) } return(res) } fitdistrplus/R/mmedist.R0000644000176200001440000004573113342003075015003 0ustar liggesusers############################################################################# # Copyright (c) 2010 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### Matching moment estimation for non-censored data ### ### R functions ### mmedist <- function (data, distr, order, memp, start=NULL, fix.arg=NULL, optim.method="default", lower=-Inf, upper=Inf, custom.optim=NULL, weights=NULL, silent=TRUE, gradient=NULL, checkstartfix=FALSE, ...) { if (!is.character(distr)) stop("distr must be a character string naming a distribution") else distname <- distr if (is.element(distname, c("norm", "lnorm", "pois", "exp", "gamma", "nbinom", "geom", "beta", "unif", "logis"))) meth <- "closed formula" else meth <- optim.method mdistname <- paste("m", distname, sep="") ddistname <- paste("d", distname, sep="") argddistname <- names(formals(ddistname)) if(is.null(custom.optim)) optim.method <- match.arg(optim.method, c("default", "Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN", "Brent")) if(!is.null(weights)) { if(any(weights < 0)) stop("weights should be a vector of integers greater than 0") if(!is.allint.w(weights)) stop("weights should be a vector of (strictly) positive integers") if(length(weights) != NROW(data)) stop("weights should be a vector with a length equal to the observation number") warning("weights are not taken into account in the default initial values") } if(meth != "closed formula") { if (!exists(mdistname, mode="function")) stop(paste0("The moment ", mdistname, " function must be defined.")) # mdistname contains the good name of the theoretical moment function } if (!(is.numeric(data) & length(data)>1)) stop("data must be a numeric vector of length greater than 1") if(is.null(weights)) { loglik <- function(par, fix.arg, obs, ddistnam) sum(log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) }else { loglik <- function(par, fix.arg, obs, ddistnam) sum(weights * log(do.call(ddistnam, c(list(obs), as.list(par), as.list(fix.arg)) ) ) ) } if(meth == "closed formula") { n <- length(data) if(is.null(weights)) { m <- mean(data) v <- (n - 1)/n*var(data) }else #weighted version from util-wtdstat.R { m <- wtd.mean(data, weights=weights) v <- wtd.var(data, weights=weights) } if (!is.null(fix.arg)) stop("argument fix.arg cannot be used when a closed formula is used.") # Fitting by matching moments if (!(is.vector(data) & is.numeric(data) & length(data)>1)) stop("data must be a numeric vector of length greater than 1") if (distname == "norm") { estimate <- c(mean=m, sd=sqrt(v)) order <- 1:2 } if (distname == "lnorm") { if (any(data <= 0)) stop("values must be positive to fit a lognormal distribution") sd2 <- log(1+v/m^2) estimate <- c(meanlog=log(m) - sd2/2, sdlog=sqrt(sd2)) order <- 1:2 } if (distname == "pois") { estimate <- c(lambda=m) order <- 1 } if (distname == "exp") { estimate <- c(rate=1/m) order <- 1 } if (distname == "gamma" ) { shape <- m^2/v rate <- m/v estimate<-c(shape=shape, rate=rate) order <- 1:2 } if (distname == "nbinom" ) { size <- if (v > m) m^2/(v - m) else NaN estimate<-c(size=size, mu=m) order <- 1:2 } if (distname == "geom" ) { prob<-if (m>0) 1/(1+m) else NaN estimate<-c(prob=prob) order <- 1 } if (distname == "beta" ) { if (any(data < 0) | any(data > 1)) stop("values must be in [0-1] to fit a beta distribution") aux<-m*(1-m)/v - 1 shape1 <- m*aux shape2 <- (1-m)*aux estimate<-c(shape1=shape1, shape2=shape2) order <- 1:2 } if (distname == "unif" ) { min1 <- m-sqrt(3*v) max1 <- m+sqrt(3*v) estimate<-c(min1,max1) order <- 1:2 } if (distname == "logis" ) { scale <- sqrt(3*v)/pi estimate<-c(location=m, scale=scale) order <- 1:2 } if (exists(ddistname)) loglikval <- loglik(estimate, fix.arg, data, ddistname) else loglikval <- NULL res <- list(estimate=estimate, convergence=0, value=NULL, hessian=NULL, optim.function=NULL, opt.meth=NULL, fix.arg=NULL, fix.arg.fun=NULL, weights=weights, counts=NULL, optim.message=NULL, loglik= loglikval, method=meth, order=order, memp=NULL) }else #an optimimisation has to be done, where fix.arg and start can be a function { if(is.vector(start)) #backward compatibility start <- as.list(start) if(!checkstartfix) #pre-check has not been done by fitdist() or bootdist() { cat("checkstartfix is carried out\n") # manage starting/fixed values: may raise errors or return two named list arg_startfix <- manageparam(start.arg=start, fix.arg=fix.arg, obs=data, distname=distname) #check inconsistent parameters hasnodefaultval <- sapply(formals(ddistname), is.name) arg_startfix <- checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, argddistname, hasnodefaultval) #arg_startfix contains two names list (no longer NULL nor function) #set fix.arg.fun if(is.function(fix.arg)) fix.arg.fun <- fix.arg else fix.arg.fun <- NULL }else #pre-check has been done by fitdist() or bootdist() { arg_startfix <- list(start.arg=start, fix.arg=fix.arg) fix.arg.fun <- NULL } #unlist starting values as needed in optim() vstart <- unlist(arg_startfix$start.arg) #sanity check if(is.null(vstart)) stop("Starting values could not be NULL with checkstartfix=TRUE") #erase user value #(cannot coerce to vector as there might be different modes: numeric, character...) fix.arg <- arg_startfix$fix.arg if(length(vstart) != length(order)) stop("wrong dimension for the moment order to match") if(missing(memp)) stop("the empirical moment function must be defined") #backward compatibility when memp is the name of the function and not the function itself if(is.character(memp)) memp <- get0(memp, envir=pos.to.env(1)) #check the memp function if(!is.function(memp)) stop("the empirical moment must be defined as a function") if(is.null(weights)) { txt <- "the empirical moment function must be a two-argument function of 'x', 'order'" if(length(formals(memp)) != 2) stop(txt) if(any(names(formals(memp)) != c("x", "order"))) stop(txt) }else { txt <- "the empirical moment function must be a three-argument function of 'x', 'order', 'weights'" if(length(formals(memp)) != 3) stop(txt) if(any(names(formals(memp)) != c("x", "order", "weights"))) stop(txt) } ############# MME fit using optim or custom.optim ########## # definition of the function to minimize : least square (Cramer - von Mises type) if(is.null(weights)) { DIFF2 <- function(par, fix.arg, order, obs, mdistnam, memp, weights) { momtheo <- do.call(mdistnam, c(as.list(order), as.list(par), as.list(fix.arg)) ) momemp <- as.numeric(memp(obs, order)) (momemp - momtheo)^2 } fnobj <- function(par, fix.arg, obs, mdistnam, memp, weights) sum( sapply(order, function(o) DIFF2(par, fix.arg, o, obs, mdistnam, memp)) ) }else { DIFF2 <- function(par, fix.arg, order, obs, mdistnam, memp, weights) { momtheo <- do.call(mdistnam, c(as.list(order), as.list(par), as.list(fix.arg)) ) momemp <- as.numeric(memp(obs, order, weights)) (momemp - momtheo)^2 } fnobj <- function(par, fix.arg, obs, mdistnam, memp, weights) sum( sapply(order, function(o) DIFF2(par, fix.arg, o, obs, mdistnam, memp, weights)) ) } cens <- FALSE if(cens) stop("Moment matching estimation for censored data is not yet available.") owarn <- getOption("warn") # Try to minimize the stat distance using the base R optim function if(is.null(custom.optim)) { hasbound <- any(is.finite(lower) | is.finite(upper)) # Choice of the optimization method if (optim.method == "default") { opt.meth <- ifelse(length(vstart) > 1, "Nelder-Mead", "BFGS") }else opt.meth <- optim.method if(opt.meth == "BFGS" && hasbound && is.null(gradient)) { opt.meth <- "L-BFGS-B" txt1 <- "The BFGS method cannot be used with bounds without provided the gradient." txt2 <- "The method is changed to L-BFGS-B." warning(paste(txt1, txt2)) } options(warn=ifelse(silent, -1, 0)) #select optim or constrOptim if(hasbound) #finite bounds are provided { if(!is.null(gradient)) { opt.fun <- "constrOptim" }else #gradient == NULL { if(opt.meth == "Nelder-Mead") opt.fun <- "constrOptim" else if(opt.meth %in% c("L-BFGS-B", "Brent")) opt.fun <- "optim" else { txt1 <- paste("The method", opt.meth, "cannot be used by constrOptim() nor optim() without gradient and bounds.") txt2 <- "Only optimization methods L-BFGS-B, Brent and Nelder-Mead can be used in such case." stop(paste(txt1, txt2)) } } if(opt.fun == "constrOptim") { #recycle parameters npar <- length(vstart) #as in optim() line 34 lower <- as.double(rep_len(lower, npar)) #as in optim() line 64 upper <- as.double(rep_len(upper, npar)) # constraints are : Mat %*% theta >= Bnd, i.e. # +1 * theta[i] >= lower[i]; # -1 * theta[i] >= -upper[i] #select rows from the identity matrix haslow <- is.finite(lower) Mat <- diag(npar)[haslow, ] #select rows from the opposite of the identity matrix hasupp <- is.finite(upper) Mat <- rbind(Mat, -diag(npar)[hasupp, ]) colnames(Mat) <- names(vstart) rownames(Mat) <- paste0("constr", 1:NROW(Mat)) #select the bounds Bnd <- c(lower[is.finite(lower)], -upper[is.finite(upper)]) names(Bnd) <- paste0("constr", 1:length(Bnd)) initconstr <- Mat %*% vstart - Bnd if(any(initconstr < 0)) stop("Starting values must be in the feasible region.") opttryerror <- try(opt <- constrOptim(theta=vstart, f=fnobj, ui=Mat, ci=Bnd, grad=gradient, fix.arg=fix.arg, obs=data, mdistnam=mdistname, memp=memp, hessian=!is.null(gradient), method=opt.meth, weights=weights, ...), silent=TRUE) if(!inherits(opttryerror, "try-error")) if(length(opt$counts) == 1) #appears when the initial point is a solution opt$counts <- c(opt$counts, NA) }else #opt.fun == "optim" { opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, mdistnam=mdistname, memp=memp, hessian=TRUE, method=opt.meth, lower=lower, upper=upper, weights=weights, ...), silent=TRUE) } }else #hasbound == FALSE { opt.fun <- "optim" opttryerror <- try(opt <- optim(par=vstart, fn=fnobj, fix.arg=fix.arg, obs=data, gr=gradient, mdistnam=mdistname, memp=memp, hessian=TRUE, method=opt.meth, lower=lower, upper=upper, ...), silent=TRUE) } options(warn=owarn) if (inherits(opttryerror,"try-error")) { warnings("The function optim encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, value = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The function optim failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=opt.fun, optim.method=opt.meth, fix.arg=fix.arg, fix.arg.fun=fix.arg.fun, weights=weights, counts=opt$counts, optim.message=opt$message, loglik=ifelse(exists(ddistname), loglik(opt$par, fix.arg, data, ddistname), NULL), method=meth, order=order, memp=memp) }else # Try to minimize the stat distance using a user-supplied optim function { opt.meth <- NULL if (!cens) { options(warn=ifelse(silent, -1, 0)) opttryerror <- try(opt <- custom.optim(fn=fnobj, fix.arg=fix.arg, obs=data, mdistnam=mdistname, memp=memp, par=vstart, weights=weights, ...), silent=TRUE) options(warn=owarn) }else stop("Moment matching estimation for censored data is not yet available.") if (inherits(opttryerror,"try-error")) { warnings("The customized optimization function encountered an error and stopped.") if(getOption("show.error.messages")) print(attr(opttryerror, "condition")) return(list(estimate = rep(NA,length(vstart)), convergence = 100, value = NA, hessian = NA)) } if (opt$convergence>0) { warnings("The customized optimization function failed to converge, with the error code ", opt$convergence) } if(is.null(names(opt$par))) names(opt$par) <- names(vstart) argdot <- list(...) method.cust <- argdot$method res <- list(estimate = opt$par, convergence = opt$convergence, value = opt$value, hessian = opt$hessian, optim.function=custom.optim, optim.method=method.cust, fix.arg=fix.arg, fix.arg.fun=fix.arg.fun, weights=weights, counts=opt$counts, optim.message=opt$message, loglik=ifelse(exists(ddistname), loglik(opt$par, fix.arg, data, ddistname), NULL), method=meth, order=order, memp=memp) } } return(res) } ## old function with previous name momdist<-function (data, distr) { stop("the name \"momdist\" for matching moments function is NO MORE used and is replaced by \"mmedist\".") } fitdistrplus/R/cdfcompcens.R0000644000176200001440000003355413421627730015635 0ustar liggesusers############################################################################# # Copyright (c) 2011 Marie Laure Delignette-Muller # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### plot cumulative distribution functions for various fits ### of continuous distribution(s) (fitdist results) ### on a same dataset ### ### R functions ### cdfcompcens <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datacol, fillrect, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, lines01 = FALSE,Turnbull.confint = FALSE, NPMLE.method = "Wang", add = FALSE, plotstyle = "graphics", ...) { if(inherits(ft, "fitdistcens")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdistcens' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdistcens")))) stop("argument ft must be a list of 'fitdistcens' objects") } if ((Turnbull.confint == TRUE) & (NPMLE.method == "Wang")) { warning("When Turnbull.confint is TRUE NPMLE.method is forced to Turnbull." ) NPMLE.method <- "Turnbull" } # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) if ((plotstyle == "ggplot") & (NPMLE.method == "Turnbull")) { warning("When NPMLE.method is Turnbull, plotstyle is forced to graphics." ) plotstyle <- "graphics" } # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("cdfcompcens is not yet available when using weights") nft <- length(ft) if (missing(datacol)) datacol <- "black" if (missing(fillrect)) fillrect <- "lightgrey" if (missing(fitcol)) fitcol <- 2:(nft+1) if (missing(fitlty)) fitlty <- 1:nft fitcol <- rep(fitcol, length.out=nft) fitlty <- rep(fitlty, length.out=nft) if (missing(xlab)) xlab <- ifelse(xlogscale, "censored data in log scale", "censored data") if (missing(ylab)) ylab <- "CDF" if (missing(main)) main <- paste("Empirical and theoretical CDFs") censdata <- ft[[1]]$censdata logxy <- paste(ifelse(xlogscale, "x", ""), ifelse(ylogscale, "y", ""), sep="") verif.ftidata <- function(fti) { if (any(fti$censdata$left != censdata$left, na.rm=TRUE) | any(fti$censdata$right != censdata$right, na.rm=TRUE)) stop("All compared fits must have been obtained with the same dataset") } l <- lapply( ft, verif.ftidata) rm(l) # calculations for Wang method, for both graphics and ggplot displays if (NPMLE.method == "Wang") { db <- censdata db$left[is.na(db$left)] <- -Inf db$right[is.na(db$right)] <- Inf f <- npsurv(db)$f bounds <- c(f$right, f$left) finitebounds <- bounds[is.finite(bounds)] upper <- max(finitebounds) lower <- min(finitebounds) width <- upper - lower if(missing(xlim)) { if (xlogscale == TRUE) { xmin <- lower * (upper / lower)^(-0.1) xmax <- upper * (upper / lower)^0.1 } else { xmin <- lower - width * 0.1 xmax <- upper + width * 0.1 } xlim <- c(xmin, xmax) } else { xmin <- xlim[1] xmax <- xlim[2] } if(missing(ylim)) { ylim <- c(0,1) } if ((xlogscale == TRUE) & xmin <= 0) stop("log transformation of data requires only positive values") if (xlogscale == TRUE) { xmininf <- lower * (upper / lower)^(-10) # 10 to be very large xmaxinf <- upper * (upper / lower)^10 } else { xmininf <- lower - width * 10 xmaxinf <- upper + width * 10 } k <- length(f$left) Fnpsurv <- cumsum(f$p) ## calculation of points for Q and P in graphs Fbefore <- c(0, Fnpsurv[-k]) df <- data.frame(left = f$left, right = f$right) # Definition of vertices of each rectangle Qi.left <- df$left # dim k Qi.left4plot <- Qi.left if (is.infinite(Qi.left4plot[1]) | is.nan(Qi.left4plot[1])) Qi.left4plot[1] <- xmininf Qi.right <- df$right Qi.right4plot <- Qi.right if (is.infinite(Qi.right4plot[k]) | is.nan(Qi.right4plot[k])) Qi.right4plot[k] <- xmaxinf Pi.low <- Fbefore Pi.up <- Fnpsurv # the line at right of the rectangles dright <- c(f$left[1], rep(f$right, rep(2,k)), f$right[k]) Fright <- rep(c(0,Fnpsurv), rep(2,k+1)) # the line at left of the rectangles dleft <- rep(c(f$left,f$right[k]), rep(2,k+1)) Fleft <- c(0,rep(Fnpsurv, rep(2,k)),1) } # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## if (NPMLE.method == "Turnbull") # Turnbull plot { if(missing(xlim)) { xmin <- min(c(censdata$left, censdata$right), na.rm=TRUE) xmax <- max(c(censdata$left, censdata$right), na.rm=TRUE) xlim <- c(xmin, xmax) } else { xmin <- xlim[1] xmax <- xlim[2] } if ((xlogscale == TRUE) & xmin <= 0) stop("log transformation of data requires only positive values") # plot of data (ecdf) using Turnbull algorithm survdata <- Surv(time = censdata$left, time2 = censdata$right, type="interval2") survfitted <- survfit(survdata ~ 1) #main plotting if(missing(ylim)) { if (Turnbull.confint) { if (!add) plot(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, xlim = xlim, ...) else lines(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, xlim = xlim, ...) }else { if (!add) plot(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, conf.int = FALSE, xlim = xlim, ...) else lines(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, conf.int = FALSE, xlim = xlim, ...) } } else { if (Turnbull.confint) { if (!add) plot(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, xlim = xlim, ylim=ylim, ...) else lines(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, xlim = xlim, ylim=ylim, ...) } else { if (!add) plot(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, conf.int = FALSE, xlim = xlim, ylim = ylim, ...) else lines(survfitted, fun="event", xlab=xlab, ylab=ylab, main=main, log=logxy, col=datacol, conf.int = FALSE, xlim = xlim, ylim = ylim, ...) } } } else # if NPMLE.method == "Wang" # Wang plot { # Plot of the ECDF if (!add) plot(1, 1, type = "n", xlab=xlab, ylab=ylab, main=main, log = logxy, xlim = xlim, ylim = ylim, ...) # the line at right of the rectangles lines(dright, Fright, col = datacol) # the line at left of the rectangles lines(dleft, Fleft, col = datacol) # Add of the filled rectangles # ca donne un rendu bizarre - plutot ajouter un argument fill.datacol # rgbdatacol <- col2rgb(datacol) # lightdatacol <- rgb(rgbdatacol[1], rgbdatacol[2], rgbdatacol[3], maxColorValue = 255, # alpha = 10) for(i in 1:k) { rect(xleft = Qi.left4plot, ybottom = Pi.low, xright = Qi.right4plot, ytop = Pi.up, border = datacol, col = fillrect) } } ################## plot of each fitted distribution plot.fti <- function(i, ...) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname pdistname <- paste("p", distname, sep="") if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) warning(" Be careful, variables are considered continuous in this function!") if (xlogscale == TRUE) { sfin <- 10^seq(log10(xmin), log10(xmax), by=(log10(xmax)-log10(xmin))/100) } else { sfin <- seq(xmin, xmax, by=(xmax-xmin)/100) } theopfin <- do.call(pdistname, c(list(sfin), as.list(para))) lines(sfin, theopfin, lty=fitlty[i], col=fitcol[i], ...) } s <- sapply(1:nft, plot.fti, ...) rm(s) if(lines01) abline(h=c(0, 1), lty="dashed", col="grey") if (addlegend) { legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, lty=fitlty, col=fitcol, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## if (NPMLE.method == "Wang") { # recode the legend position according to available positions in ggplot2 if(xlegend %in% c("topleft", "bottomleft")) xlegend <- "left" if(xlegend %in% c("topright", "bottomright")) xlegend <- "right" if(xlegend == "center") xlegend <- "right" # the line at right of the rectangles dsegmright <- cbind(dright, Fright)[2:9,] dsegmright <- cbind(dsegmright[-8, ], dsegmright[-1,]) dsegmright <- as.data.frame(dsegmright) colnames(dsegmright) <- c("x1", "y1", "x2", "y2") # the line at left of the rectangles dsegmleft <- cbind(dleft, Fleft)[2:9,] dsegmleft <- cbind(dsegmleft[-8, ], dsegmleft[-1,]) dsegmleft <- as.data.frame(dsegmleft) colnames(dsegmleft) <- c("x1", "y1", "x2", "y2") drect <- data.frame(x1=Qi.left4plot, x2=Qi.right4plot, y1=Pi.low, y2=Pi.up) if (xlogscale == TRUE) { sfin <- rep(10^seq(log10(xmin), log10(xmax), by=(log10(xmax)-log10(xmin))/100), times = nft) } else { sfin <- rep(seq(xmin, xmax, by=(xmax-xmin)/100), times = nft) } theopfin <- vector(mode = "numeric", length = length(sfin)) ind <- vector(mode = "character", length = length(sfin)) len <- length(sfin) / nft for(i in 1:nft) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) warning(" Be careful, variables are considered continuous in this function!") pdistname <- paste("p", distname, sep="") theopfin[((i - 1) * len + 1):(i * len)] <- do.call(pdistname, c(list(sfin[((i - 1) * len + 1):(i * len)]), as.list(para))) ind[((i - 1) * len + 1):(i * len)] <- distname } dline <- data.frame(x = sfin, y = theopfin, ind = ind) dline$ind <- factor(dline$ind, levels = unique(dline$ind)) # reorder levels in the appearance order of the input ggcdfcompcens <- ggplot2::ggplot() + ggplot2::coord_cartesian(xlim = xlim, ylim = ylim) + ggplot2::ggtitle(main) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + {if(lines01) ggplot2::geom_hline(ggplot2::aes(yintercept=0), color="grey", linetype="dashed")} + {if(lines01) ggplot2::geom_hline(ggplot2::aes(yintercept=1), color="grey", linetype="dashed")} + ggplot2::geom_rect(data=drect, mapping=ggplot2::aes_(xmin=quote(x1), xmax=quote(x2), ymin=quote(y1), ymax=quote(y2)), colour = datacol, fill = fillrect, alpha=0.5) + ggplot2::geom_segment(data=dsegmright, mapping=ggplot2::aes_(x=quote(x1), y=quote(y1), xend=quote(x2), yend=quote(y2)), colour = datacol) + ggplot2::geom_segment(data=dsegmleft, mapping=ggplot2::aes_(x=quote(x1), y=quote(y1), xend=quote(x2), yend=quote(y2)), colour = datacol) + ggplot2::geom_line(data=dline, ggplot2::aes_(quote(x), quote(y), group = quote(ind), colour = quote(ind), linetype = quote(ind))) + ggplot2::theme_bw() + {if(addlegend) ggplot2::theme(legend.position = c(xlegend, ylegend), plot.title = ggplot2::element_text(hjust = 0.5)) else ggplot2::theme(legend.position = "none", plot.title = ggplot2::element_text(hjust = 0.5))} + ggplot2::scale_color_manual(values = fitcol, labels = legendtext) + ggplot2::scale_linetype_manual(values = fitlty, labels = legendtext) + ggplot2::guides(colour = ggplot2::guide_legend(title = NULL)) + ggplot2::guides(linetype = ggplot2::guide_legend(title = NULL)) + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} return(ggcdfcompcens) } } } fitdistrplus/R/quantiles.R0000644000176200001440000002514313315137601015344 0ustar liggesusers############################################################################# # Copyright (c) 2012 Marie Laure Delignette-Muller, Christophe Dutang # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### calculation of theoretical quantiles from a parametric distribution ### fitted on censored or non-censored data ### ### R functions ### #quantile function for fitdist objects quantile.fitdist <- function(x, probs = seq(0.1, 0.9, by=0.1), ...) { if (!inherits(x, "fitdist")) stop("Use only with 'fitdist' objects") myquantiles.fitdist(f = x, probs = probs, cens = FALSE) } #quantile function for fitdistcens objects quantile.fitdistcens <- function(x, probs = seq(0.1, 0.9, by=0.1), ...) { if (!inherits(x, "fitdistcens")) stop("Use only with 'fitdistcens' objects") myquantiles.fitdist(f = x, probs = probs, cens = TRUE) } #internal quantile function for fitdist myquantiles.fitdist <- function(f, probs, cens) { qdistname<-paste("q", f$distname, sep="") if (!exists(qdistname, mode="function")) stop(paste("The ", qdistname, " function must be defined")) # computation and print of quantiles using estimations of parameters para=c(as.list(f$estimate), as.list(f$fix.arg)) quantiles <- do.call(qdistname, c(list(probs), as.list(para))) if (length(probs)>1) quantiles <- as.data.frame(t(quantiles)) else quantiles <- as.data.frame(quantiles) colnames(quantiles) <- paste("p=", probs, sep="") rownames(quantiles) <- "estimate" reslist <- list(quantiles = quantiles, probs = probs) if(!cens) class(reslist) <- "quantile.fitdist" else class(reslist) <- "quantile.fitdistcens" reslist } print.quantile.fitdist <- function(x, ...) { if (!inherits(x, "quantile.fitdist")) stop("Use only with 'quantile.fitdist' objects") typedata <- "(non-censored data)" cat("Estimated quantiles for each specified probability ", typedata,"\n", sep="") print(x$quantiles) invisible(x) } print.quantile.fitdistcens <- function(x, ...) { if (!inherits(x, "quantile.fitdistcens")) stop("Use only with 'quantile.fitdistcens' objects") typedata <- "(censored data)" cat("Estimated quantiles for each specified probability ", typedata,"\n", sep="") print(x$quantiles) invisible(x) } ############################################################################# ### calculation of theoretical quantiles from a parametric distribution ### fitted on censored or non-censored data ### and associated bootstrap confidence intervals ### ### R functions ### #quantile function for bootdist objects quantile.bootdist <- function(x, probs = seq(0.1, 0.9, by=0.1), CI.type = "two.sided", CI.level = 0.95, ...) { if (!inherits(x, "bootdist")) stop("Use only with 'bootdist' objects") myquantiles.bootdist(b = x, probs = probs, CI.type = CI.type, CI.level = CI.level, cens = FALSE) } #quantile function for bootdistcens objects quantile.bootdistcens <- function(x, probs = seq(0.1, 0.9, by=0.1), CI.type = "two.sided", CI.level = 0.95, ...) { if (!inherits(x, "bootdistcens")) stop("Use only with 'bootdistcens' objects") myquantiles.bootdist(b = x, probs = probs, CI.type = CI.type, CI.level = CI.level, cens = TRUE) } #internal quantile function for bootdist myquantiles.bootdist <- function(b, probs, CI.type, CI.level, cens) { CI.type <- match.arg(CI.type, c("two.sided", "less", "greater")) if(!is.logical(cens)) stop("wrong argument cens.") CI.level <- CI.level[1] # 1/ computation of quantiles using quantile.fitdist basequant <- quantile(b$fitpart, probs=probs) # 2/ computation of bootstraped quantiles and alpha-percent CI of quantiles qdistname <- paste("q", b$fitpart$distname, sep="") calcquant <- function(i) { parai <- c(as.list(b$estim[i, ]), as.list(b$fitpart$fix.arg)) do.call(qdistname, c(list(probs), as.list(parai))) } bootquant <- sapply(1:b$nbboot, calcquant) if (length(probs)>1) bootquant <- as.data.frame(t(bootquant)) else bootquant <- as.data.frame(bootquant) colnames(bootquant) <- paste("p=", probs, sep="") quantmedian <- rbind(apply(bootquant, MARGIN=2, median, na.rm=TRUE)) colnames(quantmedian) <- paste("p=", probs, sep="") rownames(quantmedian) <- "estimate" if (CI.type == "two.sided") { alpha <- (1-CI.level)/2 quantCI <- rbind( apply(bootquant, MARGIN=2, quantile, alpha, na.rm=TRUE), apply(bootquant, MARGIN=2, quantile, 1-alpha, na.rm=TRUE)) rownames(quantCI) <- format.perc(c(alpha, 1-alpha), 3) }else if (CI.type == "less") { quantCI <- t(apply(bootquant, MARGIN=2, quantile, CI.level, na.rm=TRUE)) rownames(quantCI) <- format.perc(CI.level, 3) }else { quantCI <- t(apply(bootquant, MARGIN=2, quantile, 1-CI.level, na.rm=TRUE)) rownames(quantCI) <- format.perc(1-CI.level, 3) } # message when lack of convergence nbconverg <- length(b$converg[b$converg == 0]) reslist <- list(quantiles = basequant$quantiles, probs=probs, bootquant = bootquant, quantCI = as.data.frame(quantCI), quantmedian = quantmedian, CI.type = CI.type, CI.level = CI.level, nbboot = b$nbboot, nbconverg = nbconverg) if(!cens) class(reslist) <- "quantile.bootdist" else class(reslist) <- "quantile.bootdistcens" reslist } print.quantile.bootdist <- function(x, ...) { if (!inherits(x, "quantile.bootdist")) stop("Use only with 'quantile.bootdist' objects") typedata <- "(non-censored data)" #base quantiles cat("(original) estimated quantiles for each specified probability ", typedata,"\n", sep="") print(x$quantiles) cat("Median of bootstrap estimates\n") print(x$quantmedian) #confidence intervals cat("\n") if (x$CI.type == "two.sided") { cat("two-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n", sep="") print(x$quantCI) }else if (x$CI.type == "less") { cat("right bound of one-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n") print(x$quantCI) }else { cat("left bound of one-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n") print(x$quantCI) } if (x$nbconverg < x$nbboot) { cat("\n") cat("The estimation method converged only for", x$nbconverg, "among", x$nbboot, "bootstrap iterations.\n") } invisible(x) } print.quantile.bootdistcens <- function(x, ...) { if (!inherits(x, "quantile.bootdistcens")) stop("Use only with 'quantile.bootdistcens' objects") typedata <- "(censored data)" #base quantiles cat("(original) estimated quantiles for each specified probability ", typedata,"\n", sep="") print(x$quantiles) cat("Median of bootstrap estimates\n") print(x$quantmedian) #confidence intervals cat("\n") if (x$CI.type == "two.sided") { cat("two-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n", sep="") print(x$quantCI) }else if (x$CI.type == "less") { cat("right bound of one-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n") print(x$quantCI) }else { cat("left bound of one-sided ", format.perc(x$CI.level, 3)," CI of each quantile\n") print(x$quantCI) } if (x$nbconverg < x$nbboot) { cat("\n") cat("The estimation method converged only for", x$nbconverg, "among", x$nbboot, "bootstrap iterations.\n") } invisible(x) } #from the stat package (not exported in fitdistrplus) format.perc <- function(probs, digits) ## Not yet exported, maybe useful in other contexts: ## quantile.default() sometimes uses a version of it paste(format(100 * probs, trim = TRUE, scientific = FALSE, digits = digits), "%") fitdistrplus/R/qqcompcens.R0000644000176200001440000002372313421643216015514 0ustar liggesusers############################################################################# # Copyright (c) 2018 Marie Laure Delignette-Muller, Christophe Dutang, # Aurelie Siberchicot # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the # Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA # ############################################################################# ### QQ plot for various fits ### of continuous distribution(s) (fitdistcens results) ### on a same dataset ### ### R functions ### qqcompcens <- function(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fillrect, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", ...) { if(inherits(ft, "fitdistcens")) { ft <- list(ft) }else if(!is.list(ft)) { stop("argument ft must be a list of 'fitdistcens' objects") }else { if(any(sapply(ft, function(x) !inherits(x, "fitdistcens")))) stop("argument ft must be a list of 'fitdistcens' objects") } # check the 'plotstyle' argument plotstyle <- match.arg(plotstyle[1], choices = c("graphics", "ggplot"), several.ok = FALSE) # In the future developments, it will be necessary to check that all the fits share the same weights if(!is.null(ft[[1]]$weights)) stop("qqcompcens is not yet available when using weights") censdata <- ft[[1]]$censdata # check data verif.ftidata <- function(fti) { if (any(fti$censdata$left != censdata$left, na.rm=TRUE) | any(fti$censdata$right != censdata$right, na.rm=TRUE)) stop("All compared fits must have been obtained with the same dataset") } l <- lapply( ft, verif.ftidata) rm(l) if (xlogscale != ylogscale) { xlogscale <- ylogscale <- TRUE warning("As a Q-Q plot should use the same scale on x and y axes, both axes were put in a logarithmic scale.") } logxy <- paste(ifelse(xlogscale,"x",""), ifelse(ylogscale,"y",""), sep="") # manage default parameters nft <- length(ft) if (missing(fitcol)) fitcol <- 2:(nft+1) fitcol <- rep(fitcol, length.out=nft) if (missing(fillrect)) if ((nft == 1) | plotstyle == "ggplot") fillrect <- "lightgrey" else fillrect <- NA # check legend parameters if added if(missing(legendtext)) { legendtext <- sapply(ft, function(x) x$distname) if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, sapply(ft, function(x) toupper(x$method)), sep="-") if(length(legendtext) != length(unique(legendtext))) legendtext <- paste(legendtext, 1:nft, sep="-") } if (missing(xlab)) xlab <- "Theoretical quantiles" if (missing(ylab)) ylab <- "Empirical quantiles" if (missing(main)) main <- "Q-Q plot" # computation from censdata db <- censdata db$left[is.na(db$left)] <- -Inf db$right[is.na(db$right)] <- Inf f <- npsurv(db)$f bounds <- c(f$right, f$left) finitebounds <- bounds[is.finite(bounds)] if(missing(xlim) & missing(ylim)) { user.defined.lim <- FALSE upper <- max(finitebounds) lower <- min(finitebounds) width <- upper - lower if (xlogscale == TRUE) { xmin <- lower * (upper / lower)^(-0.1) xmax <- upper * (upper / lower)^0.1 xmininf <- lower * (upper / lower)^(-100) # 100 to be very large xmaxinf <- upper * (upper / lower)^100 } else { xmin <- lower - width * 0.1 xmax <- upper + width * 0.1 xmininf <- lower - width * 100 xmaxinf <- upper + width * 100 } xlim <- c(xmin, xmax) ylim <- c(xmin, xmax) } else # at least xlim or ylim are specified { user.defined.lim <- TRUE if (missing(xlim) | missing(ylim)) { warning("By default the same limits are applied to x and y axes. You should specify both if you want different x and y limits") if (missing(xlim)) xlim <- ylim else ylim <- xlim } lower <- min(c(xlim, ylim)) upper <- max(c(xlim, ylim)) width <- upper - lower if (xlogscale == TRUE) { xmininf <- lower * (upper / lower)^(-100) # 100 to be very large xmaxinf <- upper * (upper / lower)^100 } else { xmininf <- lower - width * 100 xmaxinf <- upper + width * 100 } } k <- length(f$left) Fnpsurv <- cumsum(f$p) Fbefore <- c(0, Fnpsurv[-k]) df <- data.frame(left = f$left, right = f$right) # Definition of vertices of each rectangle Qi.left <- df$left # dim k Qi.left4plot <- Qi.left # when R is configured with noLD (--disable-long-double), qnorm and other 'q' functions # produce NaN values instead of Inf values for 0 and first argument. if (is.infinite(Qi.left4plot[1]) | is.nan(Qi.left4plot[1])) Qi.left4plot[1] <- xmininf Qi.right <- df$right Qi.right4plot <- Qi.right if (is.infinite(Qi.right4plot[k]) | is.nan(Qi.right4plot[k])) Qi.right4plot[k] <- xmaxinf Pi.low <- Fbefore Pi.up <- Fnpsurv nPi <- length(Pi.low) lrect <- vector(mode = "list", length = nft) theo.xmin <- xlim[1] theo.xmax <- xlim[2] for(i in 1:nft) { fti <- ft[[i]] para <- c(as.list(fti$estimate), as.list(fti$fix.arg)) distname <- fti$distname qdistname <- paste("q", distname, sep="") if (is.element(distname, c("binom", "nbinom", "geom", "hyper", "pois"))) warning(" Be careful, variables are considered continuous in this function!") Qitheo.left <- do.call(qdistname, c(list(Pi.low), as.list(para))) Qitheo.right <- do.call(qdistname, c(list(Pi.up), as.list(para))) theo.xmin <- min(theo.xmin, Qitheo.right[-k]) Qitheo.left4plot <- Qitheo.left theo.xmax <- max(theo.xmax, Qitheo.left[-1]) if (is.infinite(Qitheo.left4plot[1]) | is.nan(Qitheo.left4plot[1])) Qitheo.left4plot[1] <- xmininf Qitheo.right4plot <- Qitheo.right if (is.infinite(Qitheo.right4plot[k]) | is.nan(Qitheo.right4plot[k])) Qitheo.right4plot[k] <- xmaxinf lrect[[i]] <- data.frame(Qitheo.left4plot = Qitheo.left4plot, Qi.left4plot = Qi.left4plot, Qitheo.right4plot = Qitheo.right4plot, Qi.right4plot = Qi.right4plot, ind = legendtext[i]) } # insert here a check of limits in order to enlarge xlim and ylim if needed # in order to be sure to visualize each interval, for all the fitted distributions if (!user.defined.lim) { xlim <- c(theo.xmin, theo.xmax) ylim <- c(theo.xmin, theo.xmax) } if(plotstyle == "graphics") { ######## plot if plotstyle=='graphics' ######## # main plot plot(1, 1, type = "n", main = main, xlim = xlim, ylim = ylim, xlab = xlab, ylab = ylab, log = logxy) # plot of rectangles plot.fti <- function(i, ...) { Qitheo.left4plot <- lrect[[i]]$Qitheo.left4plot Qi.left4plot <- lrect[[i]]$Qi.left4plot Qitheo.right4plot <- lrect[[i]]$Qitheo.right4plot Qi.right4plot <- lrect[[i]]$Qi.right4plot if (ynoise & nft > 1) { if (xlogscale == TRUE) { noise2mult <- runif(nPi, 0.99, 1.01) rect(xleft = Qitheo.left4plot, ybottom = Qi.left4plot * noise2mult, xright = Qitheo.right4plot, ytop = Qi.right4plot * noise2mult, border = fitcol[i], col = fillrect[i]) } else { noise2add <- runif(nPi, -width*0.01, width*0.01) rect(xleft = Qitheo.left4plot, ybottom = Qi.left4plot + noise2add, xright = Qitheo.right4plot, ytop = Qi.right4plot + noise2add, border = fitcol[i], col = fillrect[i]) } } else # ! ynoise { rect(xleft = Qitheo.left4plot, ybottom = Qi.left4plot, xright = Qitheo.right4plot, ytop = Qi.right4plot, border = fitcol[i], col = fillrect[i]) } } s <- sapply(1:nft, plot.fti, ...) rm(s) if(line01) abline(0, 1, lty = line01lty, col = line01col) if (addlegend) { legend(x=xlegend, y=ylegend, bty="n", legend=legendtext, col=fitcol, lty = 1, ...) } invisible() } else if (!requireNamespace("ggplot2", quietly = TRUE)) { stop("ggplot2 needed for this function to work with plotstyle = 'ggplot'. Please install it", call. = FALSE) } else { ######## plot if plotstyle=='ggplot' ######## drect <- do.call("rbind", lrect) ind <- as.factor(drect$ind) fitcol <- rep(fitcol, table(ind)) fillrect <- if(length(fillrect) > 1) {rep(fillrect, table(ind))} else {fillrect} ggqqcompcens <- ggplot2::ggplot(drect) + ggplot2::coord_cartesian(xlim = xlim, ylim = ylim) + ggplot2::ggtitle(main) + ggplot2::xlab(xlab) + ggplot2::ylab(ylab) + ggplot2::geom_rect(data=drect, mapping=ggplot2::aes_(xmin=quote(Qitheo.left4plot), xmax=quote(Qitheo.right4plot), ymin=quote(Qi.left4plot), ymax=quote(Qi.right4plot)), colour = fitcol, fill = fillrect, alpha=0.5) + ggplot2::theme_bw() + ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5)) + {if(line01) ggplot2::geom_abline(ggplot2::aes(slope = 1, intercept = 0), color = line01col, linetype = line01lty)} + {if(xlogscale) ggplot2::scale_x_continuous(trans='log10')} + {if(ylogscale) ggplot2::scale_y_continuous(trans='log10')} + ggplot2::facet_wrap(~ind) return(ggqqcompcens) } } fitdistrplus/R/bootdist-graph.R0000644000176200001440000000177013041404445016264 0ustar liggesusers pairs4boot <- function(x, trueval, col4ramp = c("green", "yellow", "orange", "red"), nbgrid = 100, nbcol = 100, enhance=TRUE, ...) { x <- data.matrix(rbind(x, trueval)) n <- NROW(x) if(is.null(trueval)) id1 <- 1:n else id1 <- 1:(n-1) panel.points <- function(x, y, ...) { points(x[id1], y[id1], xlim=range(x, na.rm=TRUE), ylim=range(y, na.rm=TRUE)) if(!is.null(trueval)) abline(v=x[n], h=y[n], col="red", lwd=2) } panel.density <- function(x, y, ...) { id2 <- id1[!is.na(x[id1])] #require(MASS) k <- kde2d(x[id2], y[id2], n=nbgrid) image(k, col=colorRampPalette(col4ramp)(nbcol), add=TRUE, xlim=range(x, na.rm=TRUE), ylim=range(y, na.rm=TRUE)) if(!is.null(trueval)) abline(v=x[n], h=y[n], col="black", lty="dashed") } if(enhance) pairs(x, upper.panel=panel.points, lower.panel=panel.density, ...) else pairs(x, upper.panel=panel.points, lower.panel=panel.points, ...) invisible() } fitdistrplus/vignettes/0000755000176200001440000000000013422065107015016 5ustar liggesusersfitdistrplus/vignettes/jssfitdistrplus.bib0000644000176200001440000012405313321120543020747 0ustar liggesusers%% This BibTeX bibliography file was created using BibDesk. %% http://bibdesk.sourceforge.net/ %% Created for Christophe Dutang at 2013-05-15 16:49:04 +0200 %% Saved with string encoding Unicode (UTF-8) @manual{R13, Address = {Vienna, Austria}, Author = {{\proglang{R} Development Core Team}}, Title = {\proglang{R}: A Language and Environment for Statistical Computing}, Url = {http://www.R-project.org/}, Year = {2013}} @article{hyndmanfan96, Author = {R.J. Hyndman and Y. Fan}, Date-Modified = {2013-05-15 16:18:15 +0200}, Journal = {The American Statistician}, Pages = {361-365}, Title = {{Sample Quantiles in Statistical Packages}}, Volume = {50}, Year = {1996}} @book{casellaberger02, Author = {G. Casella and R.L. Berger}, Date-Modified = {2013-05-15 16:09:07 +0200}, Edition = {2nd}, Publisher = {Duxbury Thomson Learning}, Title = {Statistical Inference}, Year = {2002}} @book{efrontibshirani94, Author = {B. Efron and R.J. Tibshirani}, Date-Added = {2013-03-25 08:56:42 +0100}, Date-Modified = {2013-05-15 16:10:02 +0200}, Edition = {1st}, Publisher = {Chapman \& Hall}, Title = {An Introduction to the Bootstrap}, Year = {1994}} @article{kefford07, Author = {B.J. Kefford and E.J. Fields and C. Clay and D. Nugegoda}, Date-Added = {2013-03-06 21:41:48 +0100}, Date-Modified = {2013-05-15 16:20:52 +0200}, Journal = {Marine and Freshwater Research}, Pages = {1019-1031}, Title = {{Salinity Tolerance of Riverine Macroinvertebrates from the Southern Murray-Darling Basin}}, Volume = {58}, Year = {2007}} @book{helsel05, Author = {D.R. Helsel}, Date-Added = {2013-03-11 16:55:34 +0100}, Date-Modified = {2013-03-11 16:55:34 +0100}, Edition = {1st}, Publisher = {John Wiley \& Sons}, Title = {Nondetects and Data Analysis: Statistics for Censored Environmental Data}, Year = {2005}} @book{kleinmoeschberger03, Author = {J.P. Klein and M.L. Moeschberger}, Date-Added = {2013-03-06 21:37:34 +0100}, Date-Modified = {2013-03-06 21:38:47 +0100}, Edition = {2nd}, Publisher = {Springer-Verlag}, Title = {Survival Analysis: Techniques for Censored and Truncated Data}, Year = {2003}} @article{jordan05, Author = {D. Jordan}, Date-Added = {2013-03-06 18:21:50 +0100}, Date-Modified = {2013-05-15 16:20:35 +0200}, Journal = {Preventive Veterinary Medicine}, Number = {1-2}, Pages = {59-73}, Title = {Simulating the Sensitivity of Pooled-sample Herd Tests for Fecal Salmonella in Cattle}, Volume = {70}, Year = {2005}} @article{hiranoetal94, Author = {S.S. Hirano and M.K. Clayton and C.D. Upper}, Date-Added = {2013-03-06 18:15:38 +0100}, Date-Modified = {2013-05-15 16:18:01 +0200}, Journal = {Phytopathology}, Number = {9}, Pages = {934-940}, Title = {{Estimation of and Temporal Changes in Means and Variances of Populations of \emph{Pseudomonas syringae} on Snap Bean Leaflets}}, Volume = {84}, Year = {1994}} @manual{actuar12, Author = {Goulet, V.}, Date-Added = {2012-11-07 17:28:38 +0100}, Date-Modified = {2013-05-15 16:44:30 +0200}, Note = {\proglang{R}~package version~1.1-5}, Title = {\pkg{actuar}: An \proglang{R} Package for Actuarial Science}, Url = {http://CRAN.R-project.org/package=actuar}, Year = 2012, Bdsk-Url-1 = {http://www.actuar-project.org}} @article{mcneil97, Author = {A.J. McNeil}, Date-Added = {2012-11-02 18:47:05 +0100}, Date-Modified = {2013-05-15 16:18:38 +0200}, Journal = {ASTIN Bulletin}, Number = {1}, Pages = {117-137}, Title = {Estimating the Tails of Loss Severity Distributions Using Extreme Value Theory}, Volume = {27}, Year = {1997}} @article{distrModJSS, Author = {M. Kohl and P. Ruckdeschel}, Date-Added = {2012-10-18 18:41:33 +0200}, Date-Modified = {2012-10-18 18:42:23 +0200}, Journal = {Journal of Statistical Software}, Number = {10}, Pages = {1-27}, Title = {{\proglang{R} Package \pkg{distrMod}: S4 Classes and Methods for Probability Models}}, Volume = {35}, Year = {2010}} @article{actuarJSS, Author = {C. Dutang and V. Goulet and M. Pigeon}, Date-Added = {2012-10-18 18:32:43 +0200}, Date-Modified = {2012-10-18 18:35:33 +0200}, Journal = {Journal of Statistical Software}, Number = {7}, Pages = {1-37}, Title = {{\pkg{actuar}: an \proglang{R} Package for Actuarial Science}}, Volume = {25}, Year = {2008}} @book{Cullen99, Author = {Cullen, A.C. and Frey, H.C.}, Date-Modified = {2013-05-15 16:09:40 +0200}, Edition = {1st}, Language = {english}, Publisher = {Plenum Publishing Co.}, Title = {Probabilistic Techniques in Exposure Assessment}, Year = 1999} @book{Vose10, Author = {Vose, D.}, Date-Modified = {2013-05-15 16:07:47 +0200}, Edition = {1st}, Language = {english}, Publisher = {John Wiley \& Sons}, Title = {Quantitative Risk Analysis. A Guide to Monte Carlo Simulation Modelling}, Year = {2010}} @book{Klugmanetal09, Author = {Klugman, S.A. and Panjer, H.H. and Willmot, G.E.}, Date-Modified = {2013-05-15 16:08:27 +0200}, Edition = {3rd}, Language = {english}, Publisher = {John Wiley \& Sons}, Title = {Loss Models: from Data to Decisions}, Year = {2009}} @book{Stephens86, Author = {D'Agostino, R.B. and Stephens, M.A.}, Date-Modified = {2013-05-15 16:10:10 +0200}, Edition = {1st}, Language = {english}, Publisher = {Dekker}, Title = {Goodness-of-Fit Techniques}, Year = {1986}} @book{MASS, Author = {Venables, W. N. and Ripley, B. D.}, Edition = {4th}, Language = {english}, Publisher = {Springer-Verlag}, Title = {Modern Applied Statistics with {S}}, Year = 2010} @book{Blom, Asin = {B002LBF3JO}, Author = {Blom, G.}, Date-Modified = {2013-05-15 16:10:43 +0200}, Edition = {1st}, Language = {english}, Publisher = {John Wiley \& Sons}, Title = {Statistical Estimates and Transformed Beta Variables}, Year = 1959} @article{Luceno06, Author = {Luceno, A.}, Date-Modified = {2013-05-15 16:39:08 +0200}, Journal = {{Computational Statistics and Data Analysis}}, Month = {{NOV 15}}, Number = {{2}}, Pages = {{904-917}}, Title = {{Fitting the Generalized Pareto Distribution to Data Using Maximum Goodness-of-fit Estimators}}, Volume = {{51}}, Year = {{2006}}} @manual{survival, Author = {Therneau, T.}, Date-Modified = {2013-05-15 16:40:53 +0200}, Note = {\proglang{R}~package version~2.36-9}, Title = {\pkg{survival}: Survival Analysis, Including Penalized Likelihood}, Url = {http://CRAN.R-project.org/package=survival}, Year = {2011}, Bdsk-Url-1 = {http://cran.r-project.org/web/packages/survival/}} @manual{fitdistrplus, Author = {Delignette-Muller, M.L. and Pouillot, R. and Denis, J.B. and Dutang, C.}, Date-Modified = {2014-07-15 16:44:56 +0200}, Note = {R package version 1.0-2}, Title = {\pkg{fitdistrplus}: Help to Fit of a Parametric Distribution to Non-Censored or Censored Data}, Url = {http://CRAN.R-project.org/package=fitdistrplus}, Year = {2014}, Bdsk-Url-1 = {http://cran.r-project.org/web/packages/fitdistrplus/}} @manual{mc2d, Author = {Pouillot, R. and Delignette-Muller, M.L. and Denis, J.B.}, Date-Modified = {2013-05-15 16:41:18 +0200}, Note = {R package version 0.1-12}, Title = {\pkg{mc2d}: Tools for Two-Dimensional Monte-Carlo Simulations}, Url = {http://CRAN.R-project.org/package=mc2d}, Year = {2011}, Bdsk-Url-1 = {http://cran.r-project.org/web/packages/mc2d/}} @unpublished{Ricci05, Author = {Ricci, V.}, Date-Modified = {2013-05-15 16:48:58 +0200}, Language = {english}, Note = {Contributed Documentation available on CRAN}, Title = {Fitting Distributions with \proglang{R}}, Url = {http://CRAN.R-project.org/doc/contrib/Ricci-distributions-en.pdf}, Year = {2005}, Bdsk-Url-1 = {http://cran.r-project.org/doc/contrib/Ricci-distributions-en.pdf}} @article{Pouillot10, Author = {Pouillot, R. and Delignette-Muller, M.L.}, Date-Modified = {2012-11-02 19:01:40 +0100}, Journal = {{International Journal of Food Microbiology}}, Month = {{SEP 1}}, Number = {{3}}, Pages = {{330-340}}, Title = {{Evaluating Variability and Uncertainty Separately in Microbial Quantitative Risk Assessment using two R Packages}}, Unique-Id = {{ISI:000281981700007}}, Volume = {{142}}, Year = {{2010}}, Bdsk-Url-1 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2010.07.011}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2010.07.011}} @article{Delignette08, Author = {Delignette-Muller, M. L. and Cornu, M. and AFSSA-STEC-Study-Group}, Date-Modified = {2012-11-02 19:01:25 +0100}, Journal = {{International Journal of Food Microbiology}}, Month = {{NOV 30}}, Number = {{1, SI}}, Pages = {{158-164}}, Title = {{Quantitative Risk Assessment for \emph{Escherichia coli} O157:H7 in Frozen Ground Beef Patties Consumed by Young Children in French Households}}, Unique-Id = {{ISI:000261280700022}}, Volume = {{128}}, Year = {{2008}}, Bdsk-Url-1 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2008.05.040}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2008.05.040}} @article{Busschaert10, Author = {Busschaert, P. and Geeraerd, A. H. and Uyttendaele, M. and Van Impe, J. F.}, Date-Modified = {2012-11-02 19:01:35 +0100}, Doi = {{10.1016/j.ijfoodmicro.2010.01.025}}, Issn = {{0168-1605}}, Journal = {{International Journal of Food Microbiology}}, Month = {{APR 15}}, Number = {{3}}, Pages = {{260-269}}, Title = {{Estimating Distributions out of Qualitative and (Semi)Quantitative Microbiological Contamination Data for Use in Risk Assessment}}, Unique-Id = {{ISI:000276819700010}}, Volume = {{138}}, Year = {{2010}}, Bdsk-Url-1 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2010.01.025}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2010.01.025}} @article{Hose04, Author = {Hose, G.C. and Van den Brink, P.J.}, Date-Modified = {2013-03-06 21:55:00 +0100}, Journal = {{Archives of Environmental Contamination and Toxicology}}, Month = {{OCT}}, Number = {{4}}, Pages = {{511-520}}, Title = {{Confirming the Species-Sensitivity Distribution Concept for Endosulfan Using Laboratory, Mesocosm, and Field Data}}, Unique-Id = {{ISI:000224753800011}}, Volume = {{47}}, Year = {{2004}}, Bdsk-Url-1 = {http://dx.doi.org/10.1007/s00244-003-3212-5}, Bdsk-Url-2 = {http://dx.doi.org/10.1007/s00244-003-3212-5}} @article{Fromont01, Author = {Fromont, E and Morvilliers, L and Artois, M and Pontier, D}, Date-Modified = {2012-11-02 19:00:22 +0100}, Journal = {{Parasitology}}, Month = {{AUG}}, Number = {{Part 2}}, Pages = {{143-151}}, Title = {{Parasite Richness and Abundance in Insular and Mainland Feral Cats: Insularity or Density?}}, Unique-Id = {{ISI:000170390500004}}, Volume = {{123}}, Year = {{2001}}, Bdsk-Url-1 = {http://dx.doi.org/10.1017/S0031182001008277}, Bdsk-Url-2 = {http://dx.doi.org/10.1017/S0031182001008277}} @article{Turnbull74, Author = {Turnbull, B.W.}, Date-Modified = {2013-03-06 21:55:28 +0100}, Journal = {{Journal of the American Statistical Association}}, Number = {{345}}, Pages = {{169-173}}, Title = {{Nonparametric Estimation of a Survivorship Function with Doubly Censored Data}}, Unique-Id = {{ISI:A1974S755300025}}, Volume = {{69}}, Year = {{1974}}, Bdsk-Url-1 = {http://dx.doi.org/10.2307/2285518}, Bdsk-Url-2 = {http://dx.doi.org/10.2307/2285518}} @article{Wang2007, title={On fast computation of the non-parametric maximum likelihood estimate of a mixing distribution}, author={Wang, Yong}, journal={Journal of the Royal Statistical Society: Series B (Statistical Methodology)}, volume={69}, number={2}, pages={185--198}, year={2007}, publisher={Wiley Online Library} } @article{Wang2008, title={Dimension-reduced nonparametric maximum likelihood computation for interval-censored data}, author={Wang, Yong}, journal={Computational Statistics \& Data Analysis}, volume={52}, number={5}, pages={2388--2402}, year={2008}, publisher={Elsevier} } @article{Wang2013, title={Efficient computation of nonparametric survival functions via a hierarchical mixture formulation}, author={Wang, Yong and Taylor, Stephen M}, journal={Statistics and Computing}, volume={23}, number={6}, pages={713--725}, year={2013}, publisher={Springer} } @article{Wang2018, title={Nonparametric maximum likelihood computation of a U-shaped hazard function}, author={Wang, Yong and Fani, Shabnam}, journal={Statistics and Computing}, volume={28}, number={1}, pages={187--200}, year={2018}, publisher={Springer} } @book{Posthuma2010, Author = {Posthuma, L. and Suter, G.W. and Traas, T.P.}, Publisher = {Taylor \& Francis}, Series = {Environmental and Ecological Risk Assessment Series}, Title = {Species Sensitivity Distributions in Ecotoxicology}, Year = {2010}} @book{Tse2009, Author = {Tse, Y.K.}, Date-Modified = {2013-05-15 16:08:20 +0200}, Edition = {1st}, Lccn = {2009520513}, Publisher = {Cambridge University Press}, Series = {International Series on Actuarial Science}, Title = {Nonlife Actuarial Models: Theory, Methods and Evaluation}, Year = {2009}} %%%%%%%%%%%%%%%%%%%%%%%%%% papers citing fitdistrplus %%%%%%%%%%%%%%%%%%%% @article{Wu2:2013, Author = {Xing Zheng Wu}, Date-Added = {2014-02-04 12:23:42 +0100}, Date-Modified = {2014-02-04 12:24:29 +0100}, Journal = {Soils and Foundations}, Number = {4}, Pages = {540 - 556}, Title = {Trivariate Analysis of Soil Ranking-Correlated Characteristics and its Application to Probabilistic Stability Assessments in Geotechnical Engineering Problems}, Volume = {53}, Year = {2013}, Bdsk-Url-1 = {http://www.sciencedirect.com/science/article/pii/S003808061300070X}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.sandf.2013.06.006}} @mastersthesis{lebaut13, Author = {J. Le Baut}, Date-Added = {2014-02-04 12:15:16 +0100}, Date-Modified = {2014-02-04 12:19:59 +0100}, School = {Institut Universitaire Europ\'een de la mer, Universit\'e de Brest}, Title = {Evaluation d'un stock de poissons pour lequel les donn\'ees sont d\'eficientes : Application au stock de sardine (Sardina pilchardus) du golfe de Gascogne, de Manche et de mer Celtique}, Year = {2013}} @article{Zhang2013, Author = {Yu Zhang and Emad Habib and Robert J. Kuligowski and Dongsoo Kim}, Date-Added = {2014-02-04 12:12:17 +0100}, Date-Modified = {2014-02-04 12:12:35 +0100}, Journal = {Advances in Water Resources}, Pages = {133 - 145}, Title = {Joint Distribution of Multiplicative Errors in Radar and Satellite \{QPEs\} and its Use in Estimating the Conditional Exceedance Probability}, Volume = {59}, Year = {2013}, Bdsk-Url-1 = {http://www.sciencedirect.com/science/article/pii/S030917081300105X}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.advwatres.2013.06.004}} @article{Rigaux2014, Author = {Cl{\'e}mence Rigaux and St{\'e}phane Andr{\'e} and Isabelle Albert and Fr{\'e}d{\'e}ric Carlin}, Date-Added = {2014-02-04 12:10:00 +0100}, Date-Modified = {2014-02-04 12:10:13 +0100}, Journal = {International Journal of Food Microbiology}, Pages = {119 - 128}, Title = {Quantitative Assessment of the Risk of Microbial Spoilage in Foods. Prediction of Non-Stability at 55$\,^{\circ}$C Caused by \emph{Geobacillus stearothermophilus} in Canned Green Beans}, Volume = {171}, Year = {2014}, Bdsk-Url-1 = {http://www.sciencedirect.com/science/article/pii/S0168160513005357}, Bdsk-Url-2 = {http://dx.doi.org/10.1016/j.ijfoodmicro.2013.11.014}} @article{eiketal13, Author = {M. Eik and K. Luhmus and M. Tigasson and M. Listak and J. Puttonen and H. Herrmann}, Date-Added = {2014-02-04 12:06:14 +0100}, Date-Modified = {2014-02-04 12:07:44 +0100}, Journal = {Journal of Materials Science}, Number = {10}, Pages = {3745-3759}, Title = {{DC-Conductivity Testing Combined with Photometry for Measuring Fibre Orientations in SFRC}}, Volume = {48}, Year = {2013}} @mastersthesis{gustafssonetal13, Author = {A. Gustafsson and K. Fagerstroem}, Date-Added = {2014-02-04 12:00:47 +0100}, Date-Modified = {2014-02-04 12:02:27 +0100}, School = {Faculty of Engineering, Lund University}, Title = {Modelling Risk in Forest Insurance: Extreme Value and Frequency Analysis of Insurance Claims Due to Storm Damaged Forest}, Year = {2013}} @article{tikoleetal13, Author = {S. Tikole and V. Jaravine and V. Yu Orekhov and P. Guentert}, Date-Added = {2014-02-04 11:57:02 +0100}, Date-Modified = {2014-02-04 11:58:27 +0100}, Journal = {PloS one}, Title = {{Effects of NMR spectral resolution on protein structure calculation}}, Volume = {8}, Number = {7}, Pages = {e68567}, Year = {2013}} @unpublished{mukhopadhyay13, Author = {S. Mukhopadhyay}, Date-Added = {2014-02-04 11:54:02 +0100}, Date-Modified = {2014-02-04 11:55:14 +0100}, Note = {arXiv}, Title = {{CDfdr: A comparison density approach to local false discovery rate}}, Year = {2013}} @mastersthesis{feng13, Author = {Z. Feng}, Date-Added = {2014-02-04 11:52:24 +0100}, Date-Modified = {2014-02-04 11:53:07 +0100}, School = {Norwegian University of Science and Technology}, Title = {Markov process applied to degradation modelling: different modelling alternatives and their properties}, Year = {2013}} @phdthesis{duarte13, Author = {A.S. Ribeiro Duarte}, Date-Added = {2014-02-04 11:49:31 +0100}, Date-Modified = {2014-02-04 11:50:31 +0100}, School = {Technical University of Denmark and National Food Institute}, Title = {The interpretation of quantitative microbial data: meeting the demands of quantitative microbiological risk assessment}, Year = {2013}} @article{fiorellietal13, Author = {L.E. Fiorelli and M.D. Ezcurra and E.M. Hechenleitner and E. Arga\~{n}araz and R. Jeremias and A. Taborda and M.J. Trotteyn and M. Bel\'en von Baczko and J.B. Desojo}, Date-Added = {2014-02-04 11:45:15 +0100}, Date-Modified = {2014-02-04 11:47:47 +0100}, Journal = {Scientific Reports}, Title = {{The Oldest Known Communal Latrines Provide Evidence of Gregarism in Triassic Megaherbivores}}, Volume = {3}, Number = {3348}, Pages = {1-7}, Year = {2013}} @article{vaninsky13, Author = {A.Y. Vaninsky}, Date-Added = {2014-02-04 11:40:36 +0100}, Date-Modified = {2014-02-04 11:41:26 +0100}, Journal = {American Journal of Applied Mathematics and Statistics}, Number = {4}, Pages = {57-63}, Title = {{Stochastic DEA with a Perfect Object and Its Application to Analysis of Environmental Efficiency}}, Volume = {1}, Year = {2013}} @article{staggeetal13, Author = {Stagge, J. H. and Moglen, G. E.}, Date-Added = {2014-02-04 11:36:49 +0100}, Date-Modified = {2014-02-04 11:37:27 +0100}, Journal = {Water Resources Research}, Number = {10}, Pages = {6179-6193}, Title = {A Nonparametric Stochastic Method for Generating Daily Climate-Adjusted Streamflows}, Volume = {49}, Year = {2013}, Bdsk-Url-1 = {http://dx.doi.org/10.1002/wrcr.20448}} @article{wu13, Author = {Xing Zheng Wu}, Date-Added = {2014-02-03 21:54:24 +0100}, Date-Modified = {2014-02-03 21:55:15 +0100}, Journal = {Computational Geosciences}, Number = {5}, Pages = {739-755}, Title = {Probabilistic Slope Stability Analysis by a Copula-Based Sampling Method}, Volume = {17}, Year = {2013}} @article{vianaetal13, Author = {Viana, D. S. and Santamar\'a, L. and Michot, T. C. and Figuerola, J.}, Date-Added = {2014-02-03 21:49:39 +0100}, Date-Modified = {2014-02-03 21:50:54 +0100}, Journal = {The American Naturalist}, Number = {5}, Pages = {649-662}, Title = {Allometric Scaling of Long-Distance Seed Dispersal by Migratory Birds}, Volume = {181}, Year = {2013}} @article{wayland13, Author = {M.T. Wayland}, Date-Added = {2014-02-03 21:46:13 +0100}, Date-Modified = {2014-02-03 21:47:06 +0100}, Journal = {Biodiversity Data Journal}, Title = {{Morphological Variation in \emph{Echinorhynchus truttae} Schrank, 1788 and the \emph{Echinorhynchus bothniensis} Zdzitowiecki \& Valtonen, 1987 species complex from freshwater fishes of northern Europe}}, Volume = {1}, Pages = {e975}, Year = {2013}} @article{westphalfitch13, Author = {Westphal-Fitch, G. and Fitch, W. T.}, Date-Added = {2014-02-03 21:42:15 +0100}, Date-Modified = {2014-02-03 21:43:23 +0100}, Journal = {PloS one}, Number = {9}, Title = {Spatial Analysis of ``Crazy Quilts'', a Class of Potentially Random Aesthetic Artefacts}, Volume = {8}, Pages = {e74055}, Year = {2013}} @article{larrasetal13, Author = {Floriane Larras and Bernard Montuelle and Agn\`es Bouchez}, Date-Added = {2014-02-03 21:34:58 +0100}, Date-Modified = {2014-02-03 21:36:20 +0100}, Journal = {Science of The Total Environment}, Pages = {469-477}, Title = {{Assessment of Toxicity Thresholds in Aquatic Environments: Does Benthic Growth of Diatoms Affect their Exposure and Sensitivity to Herbicides?}}, Volume = {463-464}, Year = {2013}} @article{Daelmanetal13, Author = {Jeff Daelman and Jeanne-Marie Membr\'e and Liesbeth Jacxsens and An Vermeulen and Frank Devlieghere and Mieke Uyttendaele}, Date-Added = {2014-02-03 21:23:53 +0100}, Date-Modified = {2014-02-03 21:29:36 +0100}, Journal = {International Journal of Food Microbiology}, Number = {3}, Pages = {433-449}, Title = {A Quantitative Microbiological Exposure Assessment Model for \emph{Bacillus cereus} in REPFEDs}, Volume = {166}, Year = {2013}} @article{voigtetal14, Author = {Christian C. Voigt and Linn S. Lehnert and Ana G. Popa-Lisseanu and Mateusz Ciechanowski and P\'eter Est\'ok and Florian Gloza-Rausch and Tam\'as Goerfoel and Matthias Goettsche and Carsten Harrje and Meike Hoetzel and Tobias Teige and Reiner Wohlgemuth and Stephanie Kramer-Schadt}, Date-Added = {2014-02-03 21:07:48 +0100}, Date-Modified = {2014-02-03 21:21:42 +0100}, Journal = {Biodiversity and Conservation}, Volume = {23}, Pages = {617-631}, Title = {{The Trans-Boundary Importance of Artificial Bat \emph{hibernacula} in Managed European Forests}}, Year = {2014}} @article{Guillier2013471, Author = {Laurent Guillier and Corinne Danan and H\'el\`ene Bergis and Marie-Laure Delignette-Muller and Sophie Granier and Sylvie Rudelle and Annie Beaufort and Anne Brisabois}, Date-Added = {2014-02-03 21:00:28 +0100}, Date-Modified = {2014-02-03 21:04:18 +0100}, Journal = {International Journal of Food Microbiology}, Number = {3}, Pages = {471 - 478}, Title = {{Use of Quantitative Microbial Risk Assessment when Investigating Foodborne Illness Outbreaks: the Example of a Monophasic \emph{Salmonella Typhimurium} 4,5,12:i:- Outbreak Implicating Beef Burgers}}, Volume = {166}, Year = {2013}} @article{satoetal13, Author = {Maria Ines Z. Sato and Ana Tereza Galvani and Jose Antonio Padula and Adelaide Cassia Nardocci and Marcelo de Souza Lauretto and Maria Tereza Pepe Razzolini and Elayse Maria Hachich}, Date-Added = {2014-02-03 19:20:58 +0100}, Date-Modified = {2014-02-03 19:22:42 +0100}, Journal = {Science of The Total Environment}, Pages = {389-396}, Title = {{Assessing the Infection Risk of \emph{Giardia} and \emph{Cryptosporidium} in Public Drinking Water Delivered by Surface Water Systems in Sao Paulo State, Brazil}}, Volume = {442}, Year = {2013}} @article{callauetal13, Author = {Callau Poduje, Ana Claudia and Belli, Aslan and Haberlandt, Uwe}, Date-Added = {2014-02-03 19:19:01 +0100}, Date-Modified = {2014-02-03 19:20:14 +0100}, Doi = {10.1080/02626667.2013.871014}, Journal = {Hydrological Sciences Journal}, Title = {Dam Risk Assessment Based on Univariate versus Bivariate Statistical Approaches - a Case Study for Argentina}, Year = {2013}} @article{meyeretal13, Author = {Meyer, W. K. and Zhang, S. and Hayakawa, S. and Imai, H. and Przeworski, M.}, Date-Added = {2014-02-03 19:15:45 +0100}, Date-Modified = {2014-02-03 19:17:29 +0100}, Journal = {American Journal of Physical Anthropology}, Number = {3}, Title = {The Convergent Evolution of Blue Iris Pigmentation in Primates Took Distinct Molecular Paths}, Volume = {151}, Pages = {398-407}, Year = {2013}} @article{prosseretal13, Author = {D.J. Prosser and L.L. Hungerford and R.M. Erwin and M.A. Ottinger and J.Y. Takekawa and E.C. Ellis}, Date-Added = {2014-02-03 19:11:30 +0100}, Date-Modified = {2014-02-03 19:12:43 +0100}, Journal = {Frontiers in Public Health}, Title = {Mapping Avian Influenza Transmission Risk at the Interface of Domestic Poultry and Wild Birds}, Volume = {1}, Number = {28}, Pages = {1-11}, Year = {2013}} @article{srinivasanetal2013, Author = {S. Srinivasan and T.P. Sorrell and J.P. Brooks and D.J. Edwards and R. Diehl McDougle}, Date-Added = {2014-02-03 19:08:28 +0100}, Date-Modified = {2014-02-03 19:09:55 +0100}, Journal = {Policing: An International Journal of Police Strategies \& Management}, Number = {4}, Pages = {702-718}, Title = {{Workforce Assessment Method for an Urban Police Department: Using Analytics to Estimate Patrol Staffing}}, Volume = {36}, Year = {2013}} @article{drakeetal2014, Author = {T. Drake and Z. Chalabi and R. Coker}, Date-Added = {2014-02-03 19:02:50 +0100}, Date-Modified = {2014-02-03 19:03:43 +0100}, Journal = {Health Policy and Planning}, Title = {{Buy Now, saved Later? The Critical Impact of Time-to-Pandemic Uncertainty on Pandemic Cost-Effectiveness Analyses}}, Doi = {10.1093/heapol/czt101}, Year = {2014}} @article{contrerasetal2013, Author = {V. De La Huerta Contreras and H. Vaquera Huerta and B.C. Arnold}, Date-Added = {2014-02-03 18:58:47 +0100}, Date-Modified = {2014-02-03 19:00:41 +0100}, Journal = {Journal of Statistical Computation and Simulation}, Doi = {10.1080/00949655.2013.825095}, Title = {A Test for Equality of Variance with Censored Samples}, Year = {2013}} @article{sosaetal2013, Author = {A. Samuel-Rosa and R. Simao Diniz Dalmolin and P. Miguel}, Date-Added = {2014-02-03 18:56:07 +0100}, Date-Modified = {2014-02-03 22:02:48 +0100}, Journal = {Revista Brasileira de Ciencia do Solo}, Pages = {422-430}, Title = {Building Predictive Models of Soil Particle-Size Distribution}, Volume = {37}, Year = {2013}} @article{simoetal13, Author = {J. Sim\'o and Francesc Casa{\~n}a and J. Sabat\'e}, Date-Added = {2014-02-03 18:46:51 +0100}, Date-Modified = {2014-02-03 18:49:34 +0100}, Journal = {Statistics and Operations Research Transactions}, Number = {1}, Title = {{Modelling ``cal\c{c}ots'' (\emph{Alium cepa L.}) Growth by Gompertz Function}}, Volume = {37}, Pages = {95-106}, Year = {2013}} @unpublished{Kingetal2013, Author = {G. Kon Kam King and P. Veber and S. Charles and M.-L. Delignette-Muller}, Date-Added = {2014-02-03 18:41:16 +0100}, Date-Modified = {2014-02-03 18:42:28 +0100}, Note = {preprint on arXiv}, Title = {{MOSAIC SSD: a New Web-Tool for the Species Sensitivity Distribution, Allowing to Include Censored Data by Maximum Likelihood}}, Year = {2013}} @article{nadarajahbakar2013, Author = {S. Nadarajah and S.A.A. Bakar}, Date-Added = {2014-02-03 18:36:31 +0100}, Date-Modified = {2014-02-03 18:37:29 +0100}, Journal = {R journal}, Number = {2}, Pages = {98-104}, Title = {{CompLognormal: An R Package for Composite Lognormal Distributions.}}, Volume = {5}, Year = {2013}} @article{mala2013publi, Author = {I. Mal\'a}, Date-Added = {2014-02-03 18:33:08 +0100}, Date-Modified = {2014-02-03 18:34:37 +0100}, Journal = {Research Journal of Economics, Business and ICT}, Number = {2}, Pages = {55-61}, Title = {The Use of Finite Mixtures of Lognormal and Gamma Distributions}, Volume = {8}, Year = {2013}} @inproceedings{mala2013, Author = {I. Mal\'a}, Booktitle = {The seventh International Days of Statistics and Economics}, Date-Added = {2014-02-03 18:29:50 +0100}, Date-Modified = {2014-02-03 18:31:12 +0100}, Title = {Finite mixtures of lognormal and gamma distributions}, Year = {2013}} @mastersthesis{rebuge12, Author = {A.J.d.S. Rebuge}, Date-Added = {2013-02-10 12:02:10 +0100}, Date-Modified = {2013-05-15 16:32:28 +0200}, School = {Universidade Tecnica de Lisboa}, Title = {Business Process Analysis in Healthcare Environments}, Year = {2012}} @mastersthesis{nordan12, Author = {R.P.V. Nordan}, Date-Added = {2013-02-10 11:55:59 +0100}, Date-Modified = {2013-05-15 16:32:52 +0200}, School = {Norwegian University of Science and Technology}, Title = {An Investigation of Potential Methods for Topology Preservation in Interactive Vector Tile Map Applications}, Year = {2012}} @article{mandletal13, Author = {J.N. Mandl and J.P. Monteiro and N. Vrisekoop and R.N. Germain}, Date-Added = {2013-02-10 11:48:03 +0100}, Date-Modified = {2013-05-15 16:31:29 +0200}, Journal = {Immunity}, Number = {{2}}, Pages = {{263-274}}, Title = {{T Cell-Positive Selection Uses Self-Ligand Binding Strength to Optimize Repertoire Recognition of Foreign Antigens}}, Volume = {{38}}, Year = {2013}} @phdthesis{bakos11, Author = {R.O. Bakos}, Date-Added = {2013-02-10 11:42:32 +0100}, Date-Modified = {2013-05-15 16:34:11 +0200}, School = {Hungarian Veterinary Archive}, Title = {Poszm\'eh Egy\"uttesek \"Osszehasonl\'it\'o Vizsg\'alata a Cser\'epfalusi f\'as Legel\'o k\"l\"onb\"oz\'o n\"ov\'enybor\'it\'as\'u ter\"uletein}, Year = {2011}} @mastersthesis{poduje12, Author = {A.C. Callau Poduje}, Date-Added = {2013-02-10 11:34:40 +0100}, Date-Modified = {2013-05-15 16:33:15 +0200}, School = {Leibniz Universitat Hannover}, Title = {{Bivariate Analysis and Synthesis of Flood Events for the Design of Hydraulic Structures -- a Case Study for Argentina}}, Year = {2012}} @mastersthesis{garcia12, Author = {P. Garcia}, Date-Added = {2013-02-10 11:29:03 +0100}, Date-Modified = {2013-05-15 16:33:24 +0200}, School = {Universit\'e de Strasbourg}, Title = {{Analyse Statistique des Pannes du R\'eseau HTA}}, Year = {2012}} @article{benavidesetal12, Author = {R. Benavides-Piccione and I. Fernaud-Espinosa and V. Robles and R. Yuste and J. DeFelipe}, Date-Added = {2013-02-10 11:23:11 +0100}, Date-Modified = {2013-05-15 16:23:55 +0200}, Number = {8}, Pages = {1798-1810}, Volume = {23}, Journal = {Cerebral Cortex}, Title = {Age-Based Comparison of Human Dendritic Spine Structure Using Complete Three-Dimensional Reconstructions}, Year = {2012}, Bdsk-Url-1 = {http://dx.doi.org/10.1093/cercor/bhs154}} @article{breitbach12, Author = {N. Breitbach and K. B\"ohning-Gaese and I. Laube and M. Schleuning}, Date-Added = {2013-02-10 11:18:03 +0100}, Date-Modified = {2013-05-15 16:24:21 +0200}, Journal = {Journal of Ecology}, Number = {6}, Pages = {1349-1358}, Title = {Short Seed-Dispersal Distances and Low Seedling Recruitment in Farmland Populations of Bird-Dispersed Cherry Trees}, Volume = {100}, Year = {2012}} @article{meheustetal12, Author = {D. M\'eheust and P. Le Cann and T. Reponen and J. Wakefield and S. Vesper}, Date-Added = {2013-02-10 11:10:54 +0100}, Date-Modified = {2013-05-15 16:24:39 +0200}, Journal = {International Journal of Hygiene and Environmental Health}, Number = {{3}}, Pages = {{333-340}}, Title = {{Possible Application of the Environmental Relative Moldiness Index in France: a Pilot Study in Brittany}}, Volume = {{216}}, Year = {2012}} @article{varoetal12, Author = {J.P. Gonz\'alez-Varo and J.V. L\'opez-Bao and J. Guiti\'an}, Date-Added = {2013-02-10 11:03:06 +0100}, Date-Modified = {2013-05-15 16:24:57 +0200}, Volume = {{82}}, Pages = {{562-571}}, Journal = {Journal of Animal Ecology}, Title = {Functional Diversity Among Seed Dispersal Kernels Generated by Carnivorous Mammals}, Year = {2012}, Bdsk-Url-1 = {http://dx.doi.org/10.1111/1365-2656.12024}} @article{telloetal12, Author = {A. Tello and B. Austin and T.C. Telfer}, Date-Added = {2013-02-10 10:57:51 +0100}, Date-Modified = {2013-05-15 16:25:16 +0200}, Journal = {Environmental Health Perspectives}, Number = {8}, Pages = {1100-1106}, Title = {Selective Pressure of Antibiotic Pollution on Bacteria of Importance to Public Health}, Volume = {120}, Year = {2012}} @article{orellanoetal12, Author = {P.W. Orellano and J.I. Reynoso and A. Grassi and A. Palmieri and O. Uez and O. Carlino}, Date-Added = {2013-02-10 10:51:38 +0100}, Date-Modified = {2013-05-15 16:25:38 +0200}, Journal = {Iranian Journal of Public Health}, Number = {12}, Pages = {26-29}, Title = {{Estimation of the Serial Interval for Pandemic Influenza (pH1N1) in the Most Southern Province of Argentina}}, Volume = {41}, Year = {2012}} @unpublished{pouillotetal11, Author = {R. Pouillot and M.L. Delignette-Muller and M. Cornu}, Date-Added = {2013-02-10 09:42:22 +0100}, Date-Modified = {2013-05-15 16:49:50 +0200}, Title = {{Case study: \emph{L. monocytogenes} in Cold-Smoked Salmon}}, Url = {http://CRAN.R-project.org/web/packages/mc2d/vignettes/mc2dLmEnglish.pdf}, Year = {2011}, Bdsk-Url-1 = {http://cran.r-project.org/web/packages/mc2d/vignettes/mc2dLmEnglish.pdf}} @article{luangkesornetal12, Author = {K.L. Luangkesorn and B.A. Norman and Y. Zhuang and M. Falbo and J. Sysko}, Date-Added = {2013-02-10 09:29:42 +0100}, Date-Modified = {2013-05-15 16:25:55 +0200}, Journal = {Interfaces}, Number = {4}, Pages = {406-409}, Title = {{Practice Summaries: Designing Disease Prevention and Screening Centers in Abu Dhabi}}, Volume = {42}, Year = {2012}} @article{tarnczi11, Author = {T. Tarnczi and V. Fenyves and Z. Bcs}, Date-Added = {2013-02-10 09:26:15 +0100}, Date-Modified = {2013-05-15 16:22:41 +0200}, Journal = {International Journal of Management Cases}, Number = {3}, Pages = {159-167}, Title = {The Business Uncertainty and Variability Management with Real Options Models Combined two Dimensional Simulation}, Volume = {13}, Year = {2011}} @article{suuronenetal12, Author = {J.P. Suuronen and A. Kallonen and M. Eik and J. Puttonen and Ritva Serimaa and Heiko Herrmann}, Date-Modified = {2013-05-15 16:26:28 +0200}, Journal = {Journal of Materials Science}, Number = {3}, Pages = {1358--1367}, Title = {Analysis of Short Fibres Orientation in Steel Fibre-Reinforced Concrete (SFRC) by X-ray Tomography}, Volume = {48}, Year = {2012}} @article{scholletal12, Author = {C.F. Scholl and C.C. Nice and J.A. Fordyce and Z. Gompert and M.L. Forister}, Date-Added = {2012-11-07 22:56:30 +0100}, Date-Modified = {2013-05-15 16:26:46 +0200}, Journal = {International Journal of Ecology}, Title = {Larval Performance in the Context of Ecological Diversification and Speciation in Lycaeides Butterflies}, Number = {ID 242154}, Pages = {1-13}, Volume = {2012}, Year = {2012}, Bdsk-Url-1 = {http://dx.doi.org/10.1155/2012/242154}} @article{saketal11, Author = {H. Sak and C. Haksoz}, Date-Added = {2012-11-07 22:53:37 +0100}, Date-Modified = {2013-05-15 16:22:57 +0200}, Journal = {Journal of Operational Risk}, Number = {3}, Pages = {15-38}, Title = {A Copula-based Simulation Model for Supply Portfolio Risk}, Volume = {6}, Year = {2011}} @mastersthesis{rosa12, Author = {A. S. Rosa}, Date-Added = {2012-11-07 22:44:37 +0100}, Date-Modified = {2013-05-15 16:33:40 +0200}, School = {Universidade Federal de Santa Maria}, Title = {Fun\c{c}\~{o}es de Predi\c{c}\~{a}o Espacial de Propriedades do Solo}, Year = {2012}} @article{poulliotetal12, Author = {R. Pouillot and K. Hoelzer and Y. Chen and S. Dennis}, Date-Added = {2012-11-07 22:41:36 +0100}, Date-Modified = {2013-05-15 16:27:28 +0200}, Journal = {Food Control}, Keywords = {cited in page 7 for MLE censored fit}, Number = {2}, Pages = {350-357}, Title = {{Estimating Probability Distributions of Bacterial Concentrations in Food Based on Data Generated Using the Most Probable Number (MPN) Method for Use in Risk Assessment}}, Volume = {29}, Year = {2012}} @article{marquetouxetal12, Author = {N. Marquetoux and M. Paul and S. Wongnarkpet and C. Poolkhet and W. Thanapongtham and F. Roger and C. Ducrot and K. Chalvet-Monfray}, Date-Added = {2012-11-07 22:37:48 +0100}, Date-Modified = {2013-05-15 16:27:56 +0200}, Journal = {Preventive Veterinary Medicine}, Number = {2}, Pages = {143-151}, Title = {{Estimating Spatial and Temporal Variations of the Reproduction Number for Highly Pathogenic Avian Influenza H5N1 Epidemic in Thailand}}, Volume = {106}, Year = {2012}} @article{lehaetal11, Author = {A. Leha and T. Beissbarth and K. Jung}, Date-Added = {2012-11-07 22:34:24 +0100}, Date-Modified = {2013-05-15 16:23:17 +0200}, Journal = {BMC Bioinformatics}, Number = {127}, Pages = {1-14}, Title = {{Sequential Interim Analyses of Survival Data in {DNA} Microarray Experiments}}, Volume = {12}, Year = {2011}} @article{kochetal12, Author = {F.H. Koch and D. Yemshanov and R.D. Magarey and W.D. Smith}, Date-Added = {2012-11-07 22:28:27 +0100}, Date-Modified = {2013-03-06 21:49:35 +0100}, Journal = {Journal of Economic Entomology}, Number = {2}, Pages = {438-450}, Title = {Dispersal of Invasive Forest Insects via Recreational Firewood: a Quantitative Analysis}, Volume = {105}, Year = {2012}} @article{hoelzeretal12, Author = {K. Hoelzer and R. Pouillot and D. Gallagher and M.B. Silverman and J. Kause and S. Dennis}, Date-Added = {2012-11-07 22:19:27 +0100}, Date-Modified = {2013-05-15 16:28:30 +0200}, Journal = {International Journal of Food Microbiology}, Number = {2}, Pages = {267-277}, Title = {{Estimation of \emph{Listeria Monocytogenes} Transfer Coefficients and Efficacy of Bacterial Removal Through Cleaning and Sanitation}}, Volume = {157}, Year = {2012}} @article{jongenburgeretal12, Author = {I. Jongenburger and M.W. Reij and E.P.J. Boer and M.H. Zwietering and L.G.M. Gorris}, Date-Added = {2012-11-07 22:16:14 +0100}, Date-Modified = {2013-05-15 16:28:56 +0200}, Journal = {International Journal of Food Microbiology}, Number = {1}, Pages = {35-44}, Title = {Modelling Homogeneous and Heterogeneous Microbial Contaminations in a Powdered Food Product}, Volume = {157}, Year = {2012}} @article{jaloustreetal11, Author = {S. Jaloustre and M. Cornu and E. Morelli and V. Noel and M.L. Delignette-Muller}, Date-Added = {2012-11-07 22:11:48 +0100}, Date-Modified = {2013-05-15 16:23:33 +0200}, Journal = {Food microbiology}, Number = {2}, Pages = {311-320}, Title = {{Bayesian Modeling of \emph{Clostridium perfringens} Growth in Beef-in-Sauce Products}}, Volume = {28}, Year = {2011}} @article{fusteinercostafreda12, Author = {C.H.Y. Fu and H. Steiner and S.G. Costafreda}, Date-Added = {2012-11-07 22:05:23 +0100}, Date-Modified = {2013-05-15 16:29:33 +0200}, Journal = {Neurobiology of Disease}, Pages = {75-83}, Title = {Predictive Neural Biomarkers of Clinical Response in Depression: A Meta-Analysis of Functional and Structural Neuroimaging Studies of Pharmacological and Psychological Therapies}, Volume = {52}, Year = {2012}} @article{eling12, Author = {M. Eling}, Date-Added = {2012-10-08 23:04:08 +0200}, Date-Modified = {2013-05-15 16:29:53 +0200}, Journal = {Insurance: Mathematics and Economics}, Number = {2}, Pages = {239-248}, Title = {{Fitting Insurance Claims to Skewed Distributions: Are the Skew-normal and the Skew-student Good Models?}}, Volume = {51}, Year = {2012}} @inproceedings{eikhermann12, Author = {M. Eik and H. Herrmann}, Booktitle = {the Estonian Academy of Sciences}, Date-Added = {2012-10-08 23:00:46 +0200}, Date-Modified = {2013-05-15 16:31:55 +0200}, Number = {2}, Pages = {128-136}, Title = {Raytraced Images for Testing the Reconstruction of Fibre Orientation Distributions}, Volume = {61}, Year = {2012}} @article{croucheretal12, Author = {N. J. Croucher and S. R. Harris and L. Barquist and J. Parkhill and S. D. Bentley}, Date-Added = {2012-10-08 22:56:37 +0200}, Date-Modified = {2013-03-06 21:51:01 +0100}, Journal = {PLoS Pathogens}, Number = {6}, Pages = {e1002745}, Title = {A High-Resolution View of Genome-Wide Pneumococcal Transformation}, Volume = {8}, Year = {2012}} @article{commeauetal12, Author = {N. Commeau and E. Parent and M.-L. Delignette-Muller and M. Cornu}, Date-Added = {2012-10-08 22:53:49 +0200}, Date-Modified = {2013-05-15 16:30:14 +0200}, Journal = {International Journal of Food Microbiology}, Pages = {146-152}, Title = {Fitting a Lognormal Distribution to Enumeration and Absence/Presence Data}, Volume = {155}, Year = {2012}} @article{busschaertetal10, Author = {P. Busschaert and A.H. Geeraerd and M. Uyttendaele and J.F. VanImpe}, Date-Added = {2012-10-08 22:48:29 +0200}, Date-Modified = {2013-05-15 16:22:08 +0200}, Journal = {International Journal of Food Microbiology}, Pages = {260-269}, Title = {Estimating Distributions out of Qualitative and (Semi)Quantitative Microbiological Contamination Data for Use in Risk Assessment}, Volume = {138}, Year = {2010}} @inproceedings{brooksetal11, Author = {J.P. Brooks and D.J. Edwards and T.P. Sorrell and S. Srinivasan and R.L. Diehl}, Booktitle = {the 2011 Winter Simulation Conference}, Date-Added = {2012-10-08 22:43:23 +0200}, Date-Modified = {2013-03-06 21:51:21 +0100}, Pages = {1770-1777}, Title = {Simulating Calls for Service for an Urban Police Department}, Year = {2011}} @article{bagariaetal12, Author = {A. Bagaria and V. Jaravine and Y.J. Huang and G.T. Montelione and P. G\"untert}, Date-Added = {2012-10-08 22:39:34 +0200}, Date-Modified = {2013-05-15 16:30:38 +0200}, Journal = {Protein Science}, Number = {2}, Pages = {229-238}, Title = {Protein Structure Validation by Generalized Linear Model Root-Mean-Square Deviation Prediction}, Volume = {21}, Year = {2012}} @article{anandetal12, Author = {P. Anand and K. Yeturu and N. Chandra}, Date-Added = {2012-10-08 22:27:41 +0200}, Date-Modified = {2013-05-15 16:30:52 +0200}, Journal = {Nucleic Acids Research}, Pages = {1-9}, Title = {PocketAnnotate: Towards Site-Based Function Annotation}, Volume = {40}, Year = {2012}} @mastersthesis{aktassjostrand11, Author = {\"O. Akta\c{s} and M. Sj\"ostrand}, Date-Added = {2012-10-08 22:22:14 +0200}, Date-Modified = {2013-05-15 16:32:16 +0200}, Rating = {5}, School = {School of Information Science, Computer and Electrical Engineering, Halmstad University}, Title = {Cornish-Fisher Expansion and Value-at-Risk Method in Application to Risk Management of Large Portfolios}, Year = {2011}} fitdistrplus/vignettes/FAQ.Rmd0000644000176200001440000015630713342003075016102 0ustar liggesusers--- title: Frequently Asked Questions author: Marie Laure Delignette Muller, Christophe Dutang date: '`r Sys.Date()`' output: html_vignette: toc: yes number_sections: yes vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Frequently Asked Questions} %!\VignetteEncoding{UTF-8} \usepackage[utf8]{inputenc} --- ```{r setup, echo=FALSE, message=FALSE, warning=FALSE} require(fitdistrplus) set.seed(1234) options(digits = 3) ``` # Questions regarding distributions ## How do I know the root name of a distribution? The root name of a probability distribution is the `name` which is used the `d`, `p`, `q`, `r` functions. For base R distributions, the root names are given in R-intro : https://cran.r-project.org/doc/manuals/R-intro.html#Probability-distributions. For example, you must use `"pois"` for the Poisson distribution and **not** `"poisson"`. ## How do I find "non standard" distributions? For non-standard distributions, you can either find a package implementing them or define by yourself. A comprehensive list of non-standard distributions is given in the Distributions task view https://CRAN.R-project.org/view=Distributions. Here are some two examples of user-defined distributions. A third example (shifted exponential) is given in FAQ 3.5.4. * The Gumbel distribution ```{r, eval=FALSE} dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) qgumbel <- function(p, a, b) a-b*log(-log(p)) data(groundbeef) fitgumbel <- fitdist(groundbeef$serving, "gumbel", start=list(a=10, b=10)) ``` * The zero-modified geometric distribution ```{r, eval=FALSE} dzmgeom <- function(x, p1, p2) p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) pzmgeom <- function(q, p1, p2) p1 * (q >= 0) + (1-p1)*pgeom(q-1, p2) rzmgeom <- function(n, p1, p2) { u <- rbinom(n, 1, 1-p1) #prob to get zero is p1 u[u != 0] <- rgeom(sum(u != 0), p2)+1 u } x2 <- rzmgeom(1000, 1/2, 1/10) fitdist(x2, "zmgeom", start=list(p1=1/2, p2=1/2)) ``` ## How do I set (or find) initial values for non standard distributions? As documented, we provide initial values for the following distributions: `"norm"`, `"lnorm"`, `"exp"`, `"pois"`, `"cauchy"`, `"gamma`", `"logis"`, `"nbinom"`, `"geom"`, `"beta"`, `"weibull"` from the `stats` package; `"invgamma"`, `"llogis"`, `"invweibull"`, `"pareto1"`, `"pareto"`, `"lgamma"`, `"trgamma"`, `"invtrgamma"` from the `actuar` package. Look first at statistics and probability books such as * different volumes of N. L. Johnson, S. Kotz and N. Balakrishnan books, e.g. **Continuous Univariate Distributions, Vol. 1**, * **Thesaurus of univariate discrete probability distributions** by G. Wimmer and G. Altmann. * **Statistical Distributions** by M. Evans, N. Hastings, B. Peacock. * **Distributional Analysis with L-moment Statistics using the R Environment for Statistical Computing** by W. Asquith. If not available, find initial values by equalling theoretical and empirical quartiles. The graphical function `plotdist()` and `plotdistcens()` can also be used to assess the suitability of starting values : by an iterative manual process you can move parameter values so as to obtain a distribution that roughly fits the data and take these parameter values as starting values for the real fit. You may also consider the `prefit()` function to find initial values especially in case where parameters are constrained. ## Is it possible to fit a distribution with at least 3 parameters? Yes, an example with the Burr distribution is detailed in the JSS paper. We reproduce it very quickly here. ```{r, message=FALSE} data("endosulfan") library("actuar") fendo.B <- fitdist(endosulfan$ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) summary(fendo.B) ``` ## Why there are differences between MLE and MME for the lognormal distribution? We recall that the lognormal distribution function is given by $$ F_X(x) = \Phi\left(\frac{\log(x)-\mu}{\sigma} \right), $$ where $\Phi$ denotes the distribution function of the standard normal distribution. We know that $E(X) = \exp\left( \mu+\frac{1}{2} \sigma^2 \right)$ and $Var(X) = \exp\left( 2\mu+\sigma^2\right) (e^{\sigma^2} -1)$. The MME is obtained by inverting the previous formulas, whereas the MLE has the following explicit solution $$ \hat\mu_{MLE} = \frac{1}{n}\sum_{i=1}^n \log(x_i),~~ \hat\sigma^2_{MLE} = \frac{1}{n}\sum_{i=1}^n (\log(x_i) - \hat\mu_{MLE})^2. $$ Let us fit a sample by MLE and MME. The fit looks particularly good in both cases. ```{r, fig.height=3, fig.width=6} x3 <- rlnorm(1000) f1 <- fitdist(x3, "lnorm", method="mle") f2 <- fitdist(x3, "lnorm", method="mme") par(mfrow=1:2) cdfcomp(list(f1, f2), do.points=FALSE, xlogscale = TRUE, main = "CDF plot") denscomp(list(f1, f2), demp=TRUE, main = "Density plot") ``` Let us compare the theoretical moments (mean and variance) given the fitted values ($\hat\mu,\hat\sigma$), that is $$ E(X) = \exp\left( \hat\mu+\frac{1}{2} \hat\sigma^2 \right), Var(X) = \exp\left( 2\hat\mu+\hat\sigma^2\right) (e^{\hat\sigma^2} -1). $$ ```{r} c("E(X) by MME"=as.numeric(exp(f2$estimate["meanlog"]+f2$estimate["sdlog"]^2/2)), "E(X) by MLE"=as.numeric(exp(f1$estimate["meanlog"]+f1$estimate["sdlog"]^2/2)), "empirical"=mean(x3)) c("Var(X) by MME"=as.numeric(exp(2*f2$estimate["meanlog"]+f2$estimate["sdlog"]^2)*(exp(f2$estimate["sdlog"]^2)-1)), "Var(X) by MLE"=as.numeric(exp(2*f1$estimate["meanlog"]+f1$estimate["sdlog"]^2)*(exp(f1$estimate["sdlog"]^2)-1)), "empirical"=var(x3)) ``` From a MLE point of view, a lognormal sample $x_1,\dots,x_n$ is equivalent to handle a normal sample $\log(x_1),\dots,\log(x_n)$. However, it is well know by the Jensen inequality that $E(X) = E(\exp(\log(X))) \geq \exp(E(\log(X)))$ implying the MME estimates provides better moment estimates than with MLE. ## Can I fit a distribution with positive support when data contains negative values? The answer is no: you cannot fit a distribution with positive support (say gamma distribution) when data contains negative values. ```{r} set.seed(1234) x <- rnorm(100, mean = 1, sd = 0.5) (try(fitdist(x, "exp"))) ``` It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove negative values (not recommended) or to shift the data. ```{r} fitdist(x[x >= 0], "exp") fitdist(x - min(x), "exp") ``` ## Can I fit a finite-support distribution when data is outside that support? The answer is no: you cannot fit a distribution with finite-support (say beta distribution) when data is outside $[0,1]$. ```{r} set.seed(1234) x <- rnorm(100, mean = 0.5, sd = 0.25) (try(fitdist(x, "beta"))) ``` It is irrelevant to do such fit. If you really need to use that distribution, you have two options: either to remove impossible values (not recommended) or to shift/scale the data. ```{r} fitdist(x[x > 0 & x < 1], "beta") fitdist((x - min(x)*1.01) / (max(x) * 1.01 - min(x) * 1.01), "beta") ``` ## Can I fit truncated distributions? The answer is yes: but the fitting procedure must be carried out carefully. Let $X$ be the original untruncated random variable. The truncated variable is the conditionnal random variable $Y = X ~\vert~ l< X = low) * (x <= upp) } ptexp <- function(q, rate, low, upp) { PU <- pexp(upp, rate=rate) PL <- pexp(low, rate=rate) (pexp(q, rate)-PL) / (PU-PL) * (q >= low) * (q <= upp) + 1 * (q > upp) } n <- 200 x <- rexp(n); x <- x[x > .5 & x < 3] f1 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x))) f2 <- fitdist(x, "texp", method="mle", start=list(rate=3), fix.arg=list(low=.5, upp=3)) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, xlim=c(0, 3.5)) ``` ## Can I fit truncated inflated distributions? The answer is yes: but the fitting procedure must be carried out carefully. Let $X$ be the original untruncated random variable. The truncated variable is $Y = \max(\min(X, u), l)$ with $ly>l} + 1_{y>u}$. There is no density (w.r.t. the Lebesgues measure) since there are two probability masses $P(Y=l)= P(X\leq l)>0$ and $P(Y=u)=P(X>u)>0$. However, the density function with respect to the measure $m(x)= \delta_l(x)+\delta_u(x)+\lambda(x)$ is $$ f_Y(y) = \left\{\begin{array}{ll} F_X(l) & \text{if } y=l \\ f_X(y) & \text{if } l\min_i y_i$ or $u<\max_i y_i$ and increasing with respect to $l$ in $]-\infty, \min_i y_i]$ and decreasing with respect to $u$ in $[\max_i y_i,+\infty[$. So the maximum of $L$ is reached at $l=\min_i y_i$ and $u=\max_i y_i$. The MLE of $\theta$ is then obtained by maximizing the log-likelihood $\log(L(l, \theta, u))$ with $u=\max_i Y_i$ and $l=\min_i Y_i$. Let us illustrate truncated distribution with the truncated exponential distribution. The log-likelihood is particularly bad-shaped. ```{r, message=FALSE, fig.height=4, fig.width=8} dtiexp <- function(x, rate, low, upp) { PU <- pexp(upp, rate=rate, lower.tail = FALSE) PL <- pexp(low, rate=rate) dexp(x, rate) * (x >= low) * (x <= upp) + PL * (x == low) + PU * (x == upp) } ptiexp <- function(q, rate, low, upp) pexp(q, rate) * (q >= low) * (q <= upp) + 1 * (q > upp) n <- 100; x <- pmax(pmin(rexp(n), 3), .5) # the loglikelihood has a discontinous point at the solution par(mar=c(4,4,2,1), mfrow=1:2) llcurve(x, "tiexp", plot.arg="low", fix.arg = list(rate=2, upp=5), min.arg=0, max.arg=.5, lseq=200) llcurve(x, "tiexp", plot.arg="upp", fix.arg = list(rate=2, low=0), min.arg=3, max.arg=4, lseq=200) ``` The first method directly maximizes the log-likelihood $L(l, \theta, u)$; the second method maximizes the log-likelihood $L(\theta)$ assuming that $u=\hat u$ and $l=\hat l$ are known. Inside $[0.5,3]$, the CDF are correctly estimated in both methods but the first method does not succeed to estimate the true value of the bounds $l,u$. ```{r, fig.height=4, fig.width=6} (f1 <- fitdist(x, "tiexp", method="mle", start=list(rate=3, low=0, upp=20))) (f2 <- fitdist(x, "tiexp", method="mle", start=list(rate=3), fix.arg=list(low=min(x), upp=max(x)))) gofstat(list(f1, f2)) cdfcomp(list(f1, f2), do.points = FALSE, addlegend=FALSE, xlim=c(0, 3.5)) curve(ptiexp(x, 1, .5, 3), add=TRUE, col="blue", lty=3) legend("bottomright", lty=1:3, col=c("red", "green", "blue", "black"), leg=c("full MLE", "MLE fixed arg", "true CDF", "emp. CDF")) ``` ## Can I fit a beta distribution with the same shape parameter? Yes, you can wrap the density function of the beta distribution so that there is a only one shape parameter. Here is an example of a concave density. ```{r} x <- rbeta(1000, 3, 3) dbeta2 <- function(x, shape, ...) dbeta(x, shape, shape, ...) pbeta2 <- function(q, shape, ...) pbeta(q, shape, shape, ...) fitdist(x, "beta2", start=list(shape=1/2)) ``` Another example with a U-shaped density. ```{r} x <- rbeta(1000, .3, .3) fitdist(x, "beta2", start=list(shape=1/2), optim.method="L-BFGS-B", lower=1e-2) ``` # Questions regarding goodness-of-fit tests and statistics ## Where can we find the results of goodness-of-fit tests ? Results of goodness-of-fit tests are not printed but are given in the object returned by `gofstat()` and you can have access to them as described in the example below. Nevertheless, p-values are not given for every test. For Anderson-Darling (ad), Cramer von Mises (cvm) and Kolomogorov (ks), only the decision (rejection of H0 or not) is given, when available (see FAQ 2.3 for more details). ```{r, fig.height=3, fig.width=6} set.seed(1234) x <- rgamma(n = 100, shape = 2, scale = 1) # fit of the good distribution fgamma <- fitdist(x, "gamma") # fit of a bad distribution fexp <- fitdist(x, "exp") g <- gofstat(list(fgamma, fexp), fitnames = c("gamma", "exp")) denscomp(list(fgamma, fexp), legendtext = c("gamma", "exp")) # results of the tests ## chi square test (with corresponding table with theoretical and observed counts) g$chisqpvalue g$chisqtable ## Anderson-Darling test g$adtest ## Cramer von Mises test g$cvmtest ## Kolmogorov-Smirnov test g$kstest ``` ## Is it reasonable to use goodness-of-fit tests to validate the fit of a distribution ? In the first versions of fitdistrplus, when they were available, the results of the GOF tests (AD, KS, CvM) were automatically printed. We decided to suppress this automatic printing when we realized that some users had some difficulties to interpret the results of those tests and sometimes misused them. Goodness-of-fit tests often appear as objective tools to decide wether a fitted distribution well describes a data set. **But they are not !** It would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it (see FAQ 2.2.1). And it would not be reasonable at all any more to validate a distribution because goodness-of-fit tests do not reject it (see FAQ 2.2.2). A fitted distribution should be evaluated using graphical methods (goodness-of-fit graphs automatically provided in our package by plotting the result of the fit (output of `fitdist()` or `fitdistcens()` and the complementary graphs that help to compare different fits - see `?graphcomp`). We really think it is the most appropriate way to evaluate the adequacy of a fit and we are not the only ones to recommend it. You can find the same type of recommendations in reference books : * **Probabilistic techniques in exposure assessment - a handbook dealing with variability and uncertainty in models and inputs** by A.C. Cullen and H.C. Frey. * **Application of uncertainty analysis to ecological risks of pesticides** by W.J. Warren-Hicks and A. Hart. * **Statistical inference** by G. Casella and R.L. Berger * **Loss models: from data to decision** by S.A. Klugman and H.H. Panjer and G.E. Willmot Moreover, the selection of a distribution should also be driven by knowledge of underlying processes when available. For example when a variable cannot be negative, one would be very cautious while fitting a normal distribution, that potentially gives negative values, even if the observed data of this variable seem well fitted by a normal distribution. ### Should I reject a distribution because a goodness-of-fit test rejects it ? No it would not be reasonable at all to reject a distribution just because a goodness-of-fit test rejects it, especially in the case of big samples. In the real life, as soon as you have a sufficient amount of data, you will reject the fitted distribution. We know that a model cannot perfectly describe real data, and generally the true question is to find the better distribution among a pool of simple parametric distributions to describe the data, so to compare different models (see FAQ 2.4 and 2.5 for corresponding questions). To illustre this point let us comment the example presented below. We drew two samples from the same Poisson distribution with a mean parameter equal to 100. In many applications, for this value of its parameter, the Poisson distribution would be considered to be well approximated by a normal distribution. Testing the fit (here using a Kolmogorov-Smirnov test ) of the normal distribution on a sample of 100 observations would not reject the normal fit, while testing it on a sample of 10000 observations would reject it, while both samples come from the same distribution. ```{r, fig.height=3, fig.width=6} set.seed(1234) x1 <- rpois(n = 100, lambda = 100) f1 <- fitdist(x1, "norm") g1 <- gofstat(f1) g1$kstest x2 <- rpois(n = 10000, lambda = 100) f2 <- fitdist(x2, "norm") g2 <- gofstat(f2) g2$kstest par(mfrow=1:2) denscomp(f1, demp = TRUE, addlegend = FALSE, main = "small sample") denscomp(f2, demp = TRUE, addlegend = FALSE, main = "big sample") ``` ### Should I accept a distribution because goodness-of-fit tests do not reject it ? No, it would not be reasonable at all to validate a distribution because goodness-of-fit tests do not reject it. Like all the other hypothesis tests, goodness-of-fit tests lack of statistical power when the sample size is not so high. And the different goodness-of-fit tests are not equally sensitive to different types of deviation between empirical and fitted distributions. For example the Kolmogorov-Smirnov test is sensitive when distributions differ in a global fashion near the centre of the distribution. The Anderson-Darling test will be more sensitive when distributions differ in their tails, and the Cramer von Mises will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions. The sensitivity of a chi square test will depend on the definition of classes, and even if we propose a default definition of classes when the user does not provide classes, this choice is not obvious and could impact the results of the test. This test is more appropriate when data are discrete, even if they are modelled by a continuous distribution, as in the following example. Two samples of respective sizes 500 and 50 are drawn from a Poisson distribution of mean parameter equal to 1 (not a sufficiently high value to consider that the Poisson distribution could be approximated by a normal one). Using a Kolmogorov-Smirnov test, for the small sample the normal fit is rejected only for the bigger sample. It is not rejected with the smaller sample even if the fit could be rejected after a simple visual confrontation of the distributions. In that particular case, the chi square test with classes defined by default would have rejected te normal fit for both samples. ```{r, fig.height=3, fig.width=6} set.seed(1234) x3 <- rpois(n = 500, lambda = 1) f3 <- fitdist(x3, "norm") g3 <- gofstat(f3) g3$kstest x4 <- rpois(n = 50, lambda = 1) f4 <- fitdist(x4, "norm") g4 <- gofstat(f4) g4$kstest par(mfrow=1:2) denscomp(f3, addlegend = FALSE, main = "big sample") denscomp(f4, addlegend = FALSE, main = "small sample") ``` ```{r} g3$chisqtable g3$chisqpvalue g4$chisqtable g4$chisqpvalue ``` ## Why all goodness-of-fit tests are not available for every distribution ? The Chi-squared test is available for any distribution but one must be conscious that its result depends on the definition of cells in which observed data are grouped, and a correct definition is not possible with a too small sample. Concerning the Kolmogorov-Smirnov test, it is proposed for any continuous distribution, but with a critical value corresponding to the comparison of the empirical distribution to a fully specified distribution. As the distribution is not fully known for a fitted distribution, the result of this test is subject to caution, but there is no general asymptotic theory for the Kolmogorov-Smirnov statistics in case of a fitted distribution. Nevertheless, one can use Monte Carlo methods to conduct Kolmgorov-Smirnov goodness-of-fit tests in cases when the sample is used to estimate model parameters. Such a method is implemented in the R package `KScorrect` for a variety of continuous distributions. Such an asymptotic theory was proposed for quadratic statistics for some distributions (Anderson-Darling, Cramer von Mises). The reference book we used on this subject (**Tests based on edf statistics** by Stephens MA in **Goodness-of-fit techniques** by D'Agostino RB and Stephens MA) proposes critical values of those statistics for a some classical distributions (exponential, gamma, Weibull, logistic, Cauchy, normal and lognormal). But the asymptotic theory about these statistics also depends on the way the parameters are estimated. And as they were not estimated by maximum likelihood for Cauchy, normal and lognormal distributions in the results reported by Stephens, we only propose the results of the Anderson-Darling and Cramer von Mises using those results for exponential, gamma, Weibull, logistic distributions. The user can refer to the cited books and use the proposed formula to estimate the parameters of Cauchy, normal and lognormal distributions and apply the tests using critical values given in the book. R packages `goftest` and `ADGofTest` could also be explored by users who would like to apply Anderson-Darling and Cramer von Mises tests on other distributions. But at this time we are not sure that the case where parameters are unknown (estimated by maximum likelihood) is tackled in those two packages. Concerning the development of our package, rather than develoing further more goodness-of-fit tests we made the choice to develop graphical tools to help to appreciate the quality of a fit and to compare the fits of different distributions on a same data set (see FAQ 2.2 for argumentation). ## How can we use goodness-of-fit statistics to compare the fit of different distributions on a same data set ? Goodness-of-fit statistics based on the empirical distribution function (Kolmogorov-Smirnov, Anderson-Darling and Cramer von Mises) may be used to measure a distance between the fitted distribution and the empirical distribution. So if one wants to compare the fit of various distributions on the same data set, the smaller are those statistics the better. The Kolmogorov-Smirnov statistics will be sensitive when distributions differ in a global fashion near the centre of the distribution while the Anderson-Darling statistics will be more sensitive when distributions differ in their tails, and the Cramer von Mises statistics will be more sensitive when there are small but repetitive differences between empirical and theoretical distribution functions. But as mentioned in the main vignette of our package, the use of the Anderson-Darling to compare the fit of different distributions is subject to caution due to the the weighting of the quadratic distance between fitted and empirical distribution functions that depends on the parametric distribution. Moreover, statistics based on the empirical distribution function do not penalize distributions with a greater number of parameters and as those are generally more flexible, this could induce over-fitting. Goodness-fo-fit statistics based on information criteria (AIC, BIC) correspond to deviance penalized by the complexity of the model (the number of parameters of the distribution), and so the smaller the better. As more generic statistics, they are not adapted to focus on a part of the fitted distribution, but they take into account the complexity of the distribution and thus could help to prevent overfitting. ## Can we use a test to compare the fit of two distributions on a same data set ? In our package we did not implement such a test but for **two nested distributions** (when one is a special case of the other one, e.g. exponential and gamma distributions) a likelihood ratio test can be easily implemented using the loglikelihood provided by `fitdist` or `fitdistcens`. Denoting $L$ the maximum likelihood obtained with the complete distribution and $L_0$ the one obtained with the simplified distribution, when the sample size increases, $- 2 ln(\frac{L_0}{L}) = 2 ln(L) - 2 ln(L_0)$ tends to a Chi squared distribution degrees of freedom equal to the difference on the numbers of parameters characterizing the **two nested distributions**. You will find below an example of such a test. ```{r} set.seed(1234) g <- rgamma(100, shape = 2, rate = 1) (f <- fitdist(g, "gamma")) (f0 <- fitdist(g, "exp")) L <- logLik(f) k <- length(f$estimate) # number of parameters of the complete distribution L0 <- logLik(f0) k0 <- length(f0$estimate) # number of parameters of the simplified distribution (stat <- 2*L - 2*L0) (critical_value <- qchisq(0.95, df = k - k0)) (rejected <- stat > critical_value) ``` Such a test can also be used for fits on censored data. ## Can we get goodness-of-fit statistics for a fit on censored data ? Function `gofstat` is not yet proposed in our package for fits on censored data but to develop one is among one of our objectives in the future. Published works on goodness-of-fit statistics based on the empirical distribution function for censored data generally focused on data containing only one type of censoring (e.g. right censored data in survival data). Build such statistics in the general case, with data containing in the same time (right, left and interval censoring), remains tricky. Nevertheless, it is possible for any type of censored data, to use information criteria (AIC and BIC given in the summary of an object of class `fitdistcens`) to compare the fits of various distributions to a same data set. # Questions regarding optimization procedures ## How to choose optimization method? If you want to perform optimization without bounds, `optim()` is used. You can try the derivative-free method Nelder-Mead and the Hessian-free method BFGS. If you want to perform optimization with bounds, only two methods are available without providing the gradient of the objective function: Nelder-Mead via `constrOptim()` and bounded BFGS via `optim()`. In both cases, see the help of `mledist()` and the vignette on optimization algorithms. ## The optimization algorithm stops with error code 100. What shall I do? First, add traces by adding `control=list(trace=1, REPORT=1)`. Second, try to set bounds for parameters. Third, find better starting values (see FAQ 1.3). ## Why distribution with a `log` argument may converge better? Say, we study the shifted lognormal distribution defined by the following density $$ f(x) = \frac{1}{x \sigma \sqrt{2 \pi}} \exp\left(- \frac{(\ln (x+\delta)- \mu)^2}{2\sigma^2}\right) $$ for $x>-\delta$ where $\mu$ is a location parameter, $\sigma$ a scale parameter and $\delta$ a boundary parameter. Let us fit this distribution on the dataset `y` by MLE. We define two functions for the densities with and without a `log` argument. ```{r} dshiftlnorm <- function(x, mean, sigma, shift, log = FALSE) dlnorm(x+shift, mean, sigma, log=log) pshiftlnorm <- function(q, mean, sigma, shift, log.p = FALSE) plnorm(q+shift, mean, sigma, log.p=log.p) qshiftlnorm <- function(p, mean, sigma, shift, log.p = FALSE) qlnorm(p, mean, sigma, log.p=log.p)-shift dshiftlnorm_no <- function(x, mean, sigma, shift) dshiftlnorm(x, mean, sigma, shift) pshiftlnorm_no <- function(q, mean, sigma, shift) pshiftlnorm(q, mean, sigma, shift) ``` We now optimize the minus log-likelihood. ```{r} data(dataFAQlog1) y <- dataFAQlog1 D <- 1-min(y) f0 <- fitdist(y+D, "lnorm") start <- list(mean=as.numeric(f0$estimate["meanlog"]), sigma=as.numeric(f0$estimate["sdlog"]), shift=D) # works with BFGS, but not Nelder-Mead f <- fitdist(y, "shiftlnorm", start=start, optim.method="BFGS") summary(f) ``` If we don't use the `log` argument, the algorithms stalls. ```{r, error=FALSE} f2 <- try(fitdist(y, "shiftlnorm_no", start=start, optim.method="BFGS")) print(attr(f2, "condition")) ``` Indeed the algorithm stops because at the following value, the log-likelihood is infinite. ```{r} sum(log(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) log(prod(dshiftlnorm_no(y, 0.16383978, 0.01679231, 1.17586600 ))) sum(dshiftlnorm(y, 0.16383978, 0.01679231, 1.17586600, TRUE )) ``` There is something wrong in the computation. Only the R-base implementation using `log` argument seems reliable. This happens the C-base implementation of `dlnorm` takes care of the log value. In the file `../src/nmath/dlnorm.c` in the R sources, we find the C code for `dlnorm` ```{r, eval=FALSE, echo=TRUE} double dlnorm(double x, double meanlog, double sdlog, int give_log) { double y; #ifdef IEEE_754 if (ISNAN(x) || ISNAN(meanlog) || ISNAN(sdlog)) return x + meanlog + sdlog; #endif if(sdlog <= 0) { if(sdlog < 0) ML_ERR_return_NAN; // sdlog == 0 : return (log(x) == meanlog) ? ML_POSINF : R_D__0; } if(x <= 0) return R_D__0; y = (log(x) - meanlog) / sdlog; return (give_log ? -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) : M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)); /* M_1_SQRT_2PI = 1 / sqrt(2 * pi) */ } ``` In the last four lines with the logical condtion `give_log?`, we see how the `log` argument is handled: * when log=TRUE, we use $-(\log(\sqrt{2\pi}) + y^2/2+\log(x\sigma))$ ```{r, eval=FALSE, echo=TRUE} -(M_LN_SQRT_2PI + 0.5 * y * y + log(x * sdlog)) ``` * when log=FALSE, we use $\sqrt{2\pi} *\exp( y^2/2)/(x\sigma))$ (and then the logarithm outside `dlnorm`) ```{r, eval=FALSE, echo=TRUE} M_1_SQRT_2PI * exp(-0.5 * y * y) / (x * sdlog)) ``` Note that the constant $\log(\sqrt{2\pi})$ is pre-computed in the C macro `M_LN_SQRT_2PI`. In order to sort out this problem, we use the `constrOptim` wrapping `optim` to take into account linear constraints. This allows also to use other optimization methods than L-BFGS-B (low-memory BFGS bounded) used in optim. ```{r} f2 <- fitdist(y, "shiftlnorm", start=start, lower=c(-Inf, 0, -min(y)), optim.method="Nelder-Mead") summary(f2) print(cbind(BFGS=f$estimate, NelderMead=f2$estimate)) ``` Another possible would be to perform all computations with higher precision arithmetics as implemented in the package `Rmpfr` using the MPFR library. ## What to do when there is a scaling issue? Let us consider a dataset which has particular small values. ```{r} data(dataFAQscale1) head(dataFAQscale1) summary(dataFAQscale1) ``` The only way to sort out is to multiply the dataset by a large value. ```{r} for(i in 6:0) cat(10^i, try(mledist(dataFAQscale1*10^i, "cauchy")$estimate), "\n") ``` Let us consider a dataset which has particular large values. ```{r} data(dataFAQscale2) head(dataFAQscale2) summary(dataFAQscale2) ``` The only way to sort out is to multiply the dataset by a small value. ```{r} for(i in 0:5) cat(10^(-2*i), try(mledist(dataFAQscale2*10^(-2*i), "cauchy")$estimate), "\n") ``` ## How do I set bounds on parameters when optimizing? ### Setting bounds for scale parameters Consider the normal distribution $\mathcal{N}(\mu, \sigma^2)$ defined by the density $$ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right), x\in\mathbb{R}, $$ where $\mu$ is a location parameter such that $\mu\in\mathbb{R}$, $\sigma^2$ is a scale parameter such that $\sigma^2>0$. Therefore when optimizing the log-likelihood or the squared differences or the GoF statistics. Setting a lower bound for the scale parameter is easy with `fitdist`: just use the `lower` argument. ```{r scalenormal, echo=TRUE, warning=FALSE} set.seed(1234) x <- rnorm(1000, 1, 2) fitdist(x, "norm", lower=c(-Inf, 0)) ``` ### Setting bounds for shape parameters Consider the Burr distribution $\mathcal B(\mu, \sigma^2)$ defined by the density $$ f(x) = \frac{a b (x/s)^b}{x [1 + (x/s)^b]^{a + 1}}, x\in\mathbb{R}, $$ where $a,b$ are shape parameters such that $a,b>0$, $s$ is a scale parameter such that $s>0$. ```{r shapeburr, echo=TRUE, warning=FALSE} x <- rburr(1000, 1, 2, 3) fitdist(x, "burr", lower=c(0, 0, 0), start=list(shape1 = 1, shape2 = 1, rate = 1)) ``` ### Setting bounds for probability parameters Consider the geometric distribution $\mathcal G(p)$ defined by the mass probability function $$ f(x) = p(1-p)^x, x\in\mathbb{N}, $$ where $p$ is a probability parameter such that $p\in[0,1]$. ```{r probgeom, echo=TRUE, warning=FALSE} x <- rgeom(1000, 1/4) fitdist(x, "geom", lower=0, upper=1) ``` ### Setting bounds for boundary parameters Consider the shifted exponential distribution $\mathcal E(\mu,\lambda)$ defined by the mass probability function $$ f(x) = \lambda \exp(-\lambda(x-\mu)), x>\mu, $$ where $\lambda$ is a scale parameter such that $\lambda>0$, $\mu$ is a boundary (or shift) parameter such that $\mu\in\mathbb{R}$. When optimizing the log-likelihood, the boundary constraint is $$ \forall i=1,\dots,n, x_i>\mu \Rightarrow \min_{i=1,\dots,n} x_i > \mu \Leftrightarrow \mu > -\min_{i=1,\dots,n} x_i. $$ Note that when optimizing the squared differences or the GoF statistics, this constraint may not be necessary. Let us do it in R. ```{r shiftexp, echo=TRUE, warning=FALSE} dsexp <- function(x, rate, shift) dexp(x-shift, rate=rate) psexp <- function(x, rate, shift) pexp(x-shift, rate=rate) rsexp <- function(n, rate, shift) rexp(n, rate=rate)+shift x <- rsexp(1000, 1/4, 1) fitdist(x, "sexp", start=list(rate=1, shift=0), lower= c(0, -min(x))) ``` ### Setting linear inequality bounds For some distributions, bounds between parameters are not independent. For instance, the normal inverse Gaussian distribution ($\mu, \delta, \alpha, \beta$ parametrization) has the following parameter constraints, which can be reformulated as a linear inequality: $$ \left\{ \begin{array}{l}\alpha > 0\\ \delta >0\\ \alpha > |\beta|\end{array} \right. \Leftrightarrow \underbrace{ \left( \begin{matrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & -1 \\ 0 & 0 & 1 & 1 \\ \end{matrix} \right) }_{ui} \left( \begin{matrix} \mu\\ \delta\\ \alpha \\ \beta \\ \end{matrix} \right) \geq \underbrace{ \left( \begin{matrix} 0\\ 0\\ 0 \\ 0 \\ \end{matrix} \right)}_{ci}. $$ These constraints can be carried out via `constrOptim()` and the arguments `ci` and `ui`. Here is an example ```{r, message=FALSE} library(GeneralizedHyperbolic) myoptim <- function(fn, par, ui, ci, ...) { res <- constrOptim(f=fn, theta=par, method="Nelder-Mead", ui=ui, ci=ci, ...) c(res, convergence=res$convergence, value=res$objective, par=res$minimum, hessian=res$hessian) } x <- rnig(1000, 3, 1/2, 1/2, 1/4) ui <- rbind(c(0,1,0,0), c(0,0,1,0), c(0,0,1,-1), c(0,0,1,1)) ci <- c(0,0,0,0) fitdist(x, "nig", custom.optim=myoptim, ui=ui, ci=ci, start=list(mu = 0, delta = 1, alpha = 1, beta = 0)) ``` ## How works quantile matching estimation for discrete distributions? Let us consider the geometric distribution with values in $\{0,1,2,3,\dots\}$. The probability mass function, the cumulative distribution function and the quantile function are $$ P(X=x)= p (1-p)^{\lfloor x\rfloor}, F_X(x) = 1- (1-p)^{\lfloor x\rfloor}, F_X^{-1}(q) = \left\lfloor\frac{\log(1-q)}{\log(1-p)}\right\rfloor. $$ Due to the integer part (floor function), both the distribution function and the quantile function are step functions. ```{r, fig.height=3, fig.width=6} pgeom(0:3, prob=1/2) qgeom(c(0.3, 0.6, 0.9), prob=1/2) par(mar=c(4,4,2,1), mfrow=1:2) curve(pgeom(x, prob=1/2), 0, 10, n=301, main="c.d.f.") curve(qgeom(x, prob=1/2), 0, 1, n=301, main="q.f.") ``` Now we study the QME for the geometric distribution. Since we have only one parameter, we choose one probabiliy, $p=1/2$. The theoretical median is the following integer $$ F_X^{-1}(1/2) = \left\lfloor\frac{\log(1/2)}{\log(1-p)}\right\rfloor. $$ Note that the theoretical median for a discrete distribution is an integer. Empirically, the median may not be an integer. Indeed for an even length dataset, the empirical median is $$ q_{n,1/2} = \frac{x_{n/2}^\star + x_{n/2+1}^\star}{2}, $$ where $x_{1}^\star<\dots # Questions regarding (left, right and/or interval) censored data ## How to code censored data in `fitdistrplus` ? Censored data must be rpresented in the package by a dataframe of two columns respectively named left and right, describing each observed value as an interval. The left column contains either `NA` for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either `NA` for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. This type of representation corresponds to the coding names `"interval2"` in function `Surv` of the package `survival`. There is no other way to represent censored data in `fitdistrplus` for the moment. You have a toy example below. ```{r} dtoy <- data.frame(left = c(NA, 2, 4, 6, 9.7, 10), right = c(1, 3, 7, 8, 9.7, NA)) dtoy ``` ## How do I use the output of `Surv()` to code the input of `fitdistcens()`? Let us consider a right-censored dataset for human life: twenty values randomly chosen from `canlifins` dataset of `CASdatasets` package. ```{r} exitage <- c(81.1,78.9,72.6,67.9,60.1,78.3,83.4,66.9,74.8,80.5,75.6,67.1, 75.3,82.8,70.1,85.4,74,70,71.6,76.5) death <- c(0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0) ``` The `Surv()` function can handle many type of censoring, we focus only on right-censoring. ```{r} svdata <- Surv(exitage, death) ``` In order to match the input of, we replace non-censored data. ```{r} fitdstdata <- cbind.data.frame(left=svdata[,"time"], right=NA) fitdstdata$right[svdata[,"status"] == 1] <- fitdstdata$left[svdata[,"status"] == 1] ``` Let us now fit two simple distributions. ```{r, fig.height= 4, fig.width= 6} flnormc <- fitdistcens(fitdstdata, "lnorm") fweic <- fitdistcens(fitdstdata, "weibull") cdfcompcens(list(fweic, flnormc), xlim=range(exitage), xlegend = "topleft") ``` ## How to represent an empirical distribution from censored data ? The representation of an empirical distribution from censored data is not a trivial problem. One can simply represent each observation as an interval at an y-value defined by the rank of the observation as done below using function `plotdistcens`. This representation can be interesting to visualize the raw data, but it remains difficult to correctly order the observations in any case (see the example below on the right using data `smokedfish`). ```{r, fig.height= 4, fig.width= 8} par(mfrow = c(1,2), mar = c(3, 4, 3, 0.5)) plotdistcens(dtoy, NPMLE = FALSE) data(smokedfish) dsmo <- log10(smokedfish) plotdistcens(dsmo, NPMLE = FALSE) ``` Many authors worked on the development of algorithms for **non parametric maximum likelihood estimation (NPMLE)** of the **empirical cumulative distribution function (ECDF)** from interval censored data (including left and right censored data that can be considered as interval censored data with one bound at infinity). In old versions of `fitdistrplus` we used the Turnbull algorithm using calls to functions of the package `survival`. Even if this type of plot is still available in the package, the default plot now uses the function `npsurv` of the package `npsurv`. This package provides more performant algorithms developped by Yong Wang (see references cited in the help page of `plotdistcens`). ```{r, fig.height= 6, fig.width= 6} par(mfrow = c(2, 1), mar = c(3, 4, 3, 0.5)) # Turnbull plot of the ECDF plotdistcens(dsmo, NPMLE.method = "Turnbull", xlim = c(-1.8, 2.4)) # Wang plot of the ECD plotdistcens(dsmo, NPMLE.method = "Wang") ``` As you can see in the above example, `npsurv` also provides a different type of plot for the ECDF, representing by filled rectangles the zones of non-uniqueness of the NPMLE ECDF. Indeed an NPMLE algorithm generally proceeds in two steps. 1. The first step aims at identifying **equivalence classes** (also named in the litterture **Turnbull intervals** or **maximal intersection intervals** or **innermost intervals** or **maximal cliques** of the data). Equivalences classess are points/intervals under which the NPMLE ECDF may change. Equivalence classes have been shown to correspond to regions between a left bound of an interval (named L in the following plot on a the previous toy example) immediately followed by a right bound of an interval (named R in the following plot). An equivalence class may be of null length (for example at each non censored value). 2. The second step aims at assigning a **probability mass** to each equivalence class, which may be zero on some classes. The NPMLE is unique only up to these equivalence classes and this **non uniqueness** of the NPMLE ECDF is represented by **filled rectangles**. Various NPMLE algorithms are implemented in the packages **Icens**, **interval** and **npsurv**. They are more or less performant and all of them do not enable the handling of other data than survival data, especially with left censored observations. ```{r, echo = FALSE, fig.height= 4, fig.width= 8} d <- data.frame(left = c(NA, 2, 4, 6, 9.5, 10), right = c(1, 3, 7, 8, 9.5, NA)) addbounds <- function(d) { xbounds <- c(d$left, d$right) xboundsnotNA <- xbounds[!is.na(xbounds)] abline(v = xboundsnotNA, col = "grey") } addLR <- function(d) { Lbounds <- d$left[!is.na(d$left)] Rbounds <- d$right[!is.na(d$right)] range <- range(c(Lbounds,Rbounds)) eps <- (range[2] - range[1]) * 0.01 text(x = Lbounds-eps, y = 0.05, labels = "L", col = "red", cex = 0.75) text(x = Rbounds+eps, y = 0.05, labels = "R", col = "red", cex = 0.75) } addeq <- function(deq) { left <- deq$left left[is.na(left)] <- -100 right <- deq$right right[is.na(right)] <- 100 rect(left, -2, right, 2, density = 10) } par(mfrow = c(2,1), mar = c(2, 4, 3, 0.5)) # First step plotdistcens(d, NPMLE = FALSE, lwd = 2, col = "blue", main = "Step 1 : identification of equivalence classes") addbounds(d) addLR(d) deq <- data.frame(left = c(NA, 2, 6, 9.5, 10), right = c(1, 3, 7,9.5, NA)) addeq(deq) # Second step plotdistcens(d, lwd = 2, main = "Step 2 : estimation of mass probabilities") ``` ## How to assess the goodness-of-fit of a distribution fitted on censored data ? The only available method in `fitdistrplus` to fit distributions on censored data is the maximum likelihood estimation (MLE). Once a distribution is fitted using `fitdistcens`, AIC and BIC values can be found in the `summary` of the object of class `fitdistcens` returned by the function. Those values can be used to compare the fit of various distributions on a same dataset. Function `gofstat` is not yet proposed in our package for fits on censored data but we plan to develop it in the future with the calculation of other goodness-of-fit statistics for censored data. ```{r} fnorm <- fitdistcens(dsmo,"norm") flogis <- fitdistcens(dsmo,"logis") # comparison of AIC values summary(fnorm)$aic summary(flogis)$aic ``` Considering goodness-of-fit plots, the generic `plot` function of an object of class `fitdistcens`provides three plots, one in CDF using the NPMLE ECDF plot (by default using the Wang prepresentation, see previous part for details), a Q-Q plot and a P-P plot simply derived from the Wang plot of the ECDF, with filled rectangles indicating non uniqueness of the NPMLE ECDF. ```{r, fig.height= 6, fig.width= 6} par(mar = c(2, 4, 3, 0.5)) plot(fnorm) ``` Functions `cdfcompcens()`, `qqcompens()` and `ppcompcens()` can be used to individualize and personnalize CDF, Q-Q and P-P goodness-of-fit plots and/or to compare the fit of various distributions on a same dataset. ```{r, fig.height= 4, fig.width= 4} cdfcompcens(list(fnorm, flogis), fitlty = 1) qqcompcens(list(fnorm, flogis)) ppcompcens(list(fnorm, flogis)) ``` Considering Q-Q plots and P-P plots, it may be easier to compare various fits by splitting the plots as below which is done automatically using the `plotstyle` `ggplot` in `qqcompens()` and `ppcompcens()` but can also be done manually with the `plotstyle` `graphics`. ```{r, fig.height= 4, fig.width= 8} qqcompcens(list(fnorm, flogis), lwd = 2, plotstyle = "ggplot", fitcol = c("red", "green"), fillrect = c("pink", "lightgreen"), legendtext = c("normal distribution", "logistic distribution")) ``` fitdistrplus/vignettes/paper2JSS.Rnw0000644000176200001440000022206613342003075017264 0ustar liggesusers\documentclass{article} % sweave commands for vignette %\VignetteIndexEntry{Fit parametric distributions on non-censored or censored data} %\VignettePackage{fitdistrplus} %\VignetteKeyword{distribution} %%% %%% TITLE: fitdistrplus: an R Package for Fitting Distributions %%% AUTHORS: Marie Laure Delignette Muller*, Christophe Dutang %%% * Corresponding author %%% AFFILIATION: LBBE, Université Claude Bernard Lyon 1, Lyon, France %%% ADDRESS: VetAgro Sup Campus Vétérinaire de Lyon %%% 1, avenue Bourgelat %%% 69820 MARCY L'ETOILE, France %%% PHONE: +33 4 78 87 27 40 %%% FAX: +33 4 78 87 27 12 %%% EMAIL: marielaure.delignettemuller@vetagro-sup.fr %%% \usepackage{amsmath,amsthm,amssymb} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} %\usepackage[english]{babel} %% need no \usepackage{Sweave} \usepackage{color, graphics} \usepackage[a4paper, textwidth=18cm, textheight=27cm]{geometry} \newcommand{\sigle}{\textsc} \newcommand{\pkg}{\textbf} %defined in jss.cls \newcommand{\code}{\texttt} %defined in jss.cls \newcommand{\proglang}{\textsf} %defined in jss.cls %layout \newcommand{\HRuleTop}{\noindent\rule{\linewidth}{.5pt}} \newcommand{\HRuleBottom}{\rule{\linewidth}{.5pt}} \usepackage{natbib,url} %\usepackage[hyperfootnotes=false]{hyperref} \author{ Marie Laure Delignette-Muller \\ Universit\'e de Lyon\\ Christophe Dutang \\ Universit\'e de Strasbourg} %\Plainauthor{Marie Laure Delignette-Muller} \title{\pkg{fitdistrplus}: An \proglang{R} Package for Fitting Distributions} %\Plaintitle{fitdistrplus: an R Package for Fitting Distributions} \date{October 2014 \footnote{Paper accepted in the Journal of Statistical Software} (revised in July 2018)} %quantile matching, maximum goodness-of-fit, distributions, R} %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{50} %% \Issue{9} %% \Month{June} %% \Year{2012} %% \Submitdate{2012-09-04} %% \Acceptdate{2012-09-04} % \Address{ % Marie Laure Delignette-Muller \\ % Universit\'e de Lyon\\ % Universit\'e Lyon 1, CNRS, UMR5558, Laboratoire de Biom\'etrie et Biologie \'evolutive\\ % VetAgro Sup, Campus V\'et\'erinaire de Lyon \\ % 1, avenue Bourgelat \\ % 69820 MARCY L'ETOILE\\ % France \\ % E-mail: \email{marielaure.delignettemuller@vetagro-sup.fr} \\ % URL: \url{http://lbbe.univ-lyon1.fr/-Delignette-Muller-Marie-Laure-.html} % } % \newcommand{\Sconcordance}[1]{% % \ifx\pdfoutput\undefined% % \csname newcount\endcsname\pdfoutput\fi% % \ifcase\pdfoutput\special{#1}% % \else% % \begingroup% % \pdfcompresslevel=0% % \immediate\pdfobj stream{#1}% % \pdfcatalog{/SweaveConcordance \the\pdflastobj\space 0 R}% % \endgroup% % \fi} \begin{document} \SweaveOpts{concordance=TRUE} \maketitle \begin{abstract}% \HRuleTop\\ The package \pkg{fitdistrplus} provides functions for fitting univariate distributions to different types of data (continuous censored or non-censored data and discrete data) and allowing different estimation methods (maximum likelihood, moment matching, quantile matching and maximum goodness-of-fit estimation). Outputs of \code{fitdist} and \code{fitdistcens} functions are S3 objects, for which kind generic methods are provided, including \code{summary}, \code{plot} and \code{quantile}. This package also provides various functions to compare the fit of several distributions to a same data set and can handle bootstrap of parameter estimates. Detailed examples are given in food risk assessment, ecotoxicology and insurance contexts.\\ \HRuleBottom \end{abstract} \textit{Keywords}: {probability distribution fitting, bootstrap, censored data, maximum likelihood, moment matching, quantile matching, maximum goodness-of-fit, distributions, \proglang{R}} %\Plainkeywords{probability distribution fitting, bootstrap, censored data, maximum likelihood, moment matching, %, prefix.string=figs/jss %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. \section{Introduction} \label{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fitting distributions to data is a very common task in statistics and consists in choosing a probability distribution modelling the random variable, as well as finding parameter estimates for that distribution. This requires judgment and expertise and generally needs an iterative process of distribution choice, parameter estimation, and quality of fit assessment. In the \proglang{R} \citep{R13} package \pkg{MASS} \citep{MASS}, maximum likelihood estimation is available via the \code{fitdistr} function; other steps of the fitting process can be done using other \proglang{R} functions \citep{Ricci05}. In this paper, we present the \proglang{R} package \pkg{fitdistrplus} \citep{fitdistrplus} implementing several methods for fitting univariate parametric distribution. A first objective in developing this package was to provide \proglang{R} users a set of functions dedicated to help this overall process. The \code{fitdistr} function estimates distribution parameters by maximizing the likelihood function using the \code{optim} function. No distinction between parameters with different roles (e.g., main parameter and nuisance parameter) is made, as this paper focuses on parameter estimation from a general point-of-view. In some cases, other estimation methods could be prefered, such as maximum goodness-of-fit estimation (also called minimum distance estimation), as proposed in the \proglang{R} package \pkg{actuar} with three different goodness-of-fit distances \citep{actuarJSS}. While developping the \pkg{fitdistrplus} package, a second objective was to consider various estimation methods in addition to maximum likelihood estimation (MLE). Functions were developped to enable moment matching estimation (MME), quantile matching estimation (QME), and maximum goodness-of-fit estimation (MGE) using eight different distances. Moreover, the \pkg{fitdistrplus} package offers the possibility to specify a user-supplied function for optimization, useful in cases where classical optimization techniques, not included in \code{optim}, are more adequate. In applied statistics, it is frequent to have to fit distributions to censored data \citep{kleinmoeschberger03, helsel05,busschaertetal10,lehaetal11,commeauetal12}. The \pkg{MASS} \code{fitdistr} function does not enable maximum likelihood estimation with this type of data. Some packages can be used to work with censored data, especially survival data \citep{survival,hiranoetal94,jordan05}, but those packages generally focus on specific models, enabling the fit of a restricted set of distributions. A third objective is thus to provide \proglang{R} users a function to estimate univariate distribution parameters from right-, left- and interval-censored data. Few packages on \sigle{CRAN} provide estimation procedures for any user-supplied parametric distribution and support different types of data. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \pkg{distrMod} package \citep{distrModJSS} provides an object-oriented (S4) implementation of probability models and includes distribution fitting procedures for a given minimization criterion. This criterion is a user-supplied function which is sufficiently flexible to handle censored data, yet not in a trivial way, see Example M4 of the \pkg{distrMod} vignette. The fitting functions \code{MLEstimator} and \code{MDEstimator} return an S4 class for which a coercion method to class mle is provided so that the respective functionalities (e.g., \code{confint} and \code{logLik}) from package \pkg{stats4} are available, too. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% In \pkg{fitdistrplus}, we chose to use the standard S3 class system for its understanding by most \proglang{R} users. When designing the \pkg{fitdistrplus} package, we did not forget to implement generic functions also available for S3 classes. Finally, various other packages provide functions to estimate the mode, the moments or the L-moments of a distribution, see the reference manuals of \pkg{modeest}, \pkg{lmomco} and \pkg{Lmoments} packages. This manuscript reviews the various features of version 1.0-2 of \pkg{fitdistrplus}. The package is available from the Comprehensive \proglang{R} Archive Network at \url{http://cran.r-project.org/package=fitdistrplus}. The development version of the package is located at \proglang{R}-forge as one package of the project ``Risk Assessment with \proglang{R}'' (\url{http://r-forge.r-project.org/projects/riskassessment/}). The paper is organized as follows: Section \ref{fitnoncenscont} presents tools for fitting continuous distributions to classic non-censored data. Section \ref{advtopic} deals with other estimation methods and other types of data, before Section \ref{ccl} concludes. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section[Fitting distributions]{Fitting distributions to continuous non-censored data}\label{fitnoncenscont} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Choice of candidate distributions} \label{Choice} For illustrating the use of various functions of the \pkg{fitdistrplus} package with continuous non-censored data, we will first use a data set named \code{groundbeef} which is included in our package. This data set contains pointwise values of serving sizes in grams, collected in a French survey, for ground beef patties consumed by children under 5 years old. It was used in a quantitative risk assessment published by \cite{Delignette08}. %%% R code set default options for all R schunks <>= options(digits = 4, prompt="R> ", SweaveHooks=list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1)))) set.seed(1234) @ %%% R code <>= library("fitdistrplus") data("groundbeef") str(groundbeef) @ Before fitting one or more distributions to a data set, it is generally necessary to choose good candidates among a predefined set of distributions. This choice may be guided by the knowledge of stochastic processes governing the modelled variable, or, in the absence of knowledge regarding the underlying process, by the observation of its empirical distribution. To help the user in this choice, we developed functions to plot and characterize the empirical distribution. First of all, it is common to start with plots of the empirical distribution function and the histogram (or density plot), which can be obtained with the \code{plotdist} function of the \pkg{fitdistrplus} package. This function provides two plots (see Figure~\ref{plotdistcont}): the left-hand plot is by default the histogram on a density scale (or density plot of both, according to values of arguments \code{histo} and \code{demp}) and the right-hand plot the empirical cumulative distribution function (CDF). %%% R code <>= plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htb!] \centering %%% R code <>= plotdist(groundbeef$serving, histo = TRUE, demp = TRUE) @ \caption{Histogram and CDF plots of an empirical distribution for a continuous variable (serving size from the \code{groundbeef} data set) as provided by the \code{plotdist} function.} \label{plotdistcont} \end{figure} In addition to empirical plots, descriptive statistics may help to choose candidates to describe a distribution among a set of parametric distributions. Especially the skewness and kurtosis, linked to the third and fourth moments, are useful for this purpose. A non-zero skewness reveals a lack of symmetry of the empirical distribution, while the kurtosis value quantifies the weight of tails in comparison to the normal distribution for which the kurtosis equals 3. The skewness and kurtosis and their corresponding unbiased estimator \citep{casellaberger02} from a sample $(X_i)_i \stackrel{\text{i.i.d.}}{\sim} X$ with observations $(x_i)_i$ are given by \begin{equation} \label{skewness} sk(X) = \frac{E[(X-E(X))^3]}{Var(X)^{\frac{3}{2}}}~,~ \widehat{sk}=\frac{\sqrt{n(n-1)}}{n-2}\times\frac{m_{3}}{m_{2}^{\frac{3}{2}}}, \end{equation} \begin{equation} \label{kurtosis} kr(X) = \frac{E[(X-E(X))^4]}{Var(X)^{2}}~,~ \widehat{kr}=\frac{n-1}{(n-2)(n-3)}((n+1) \times \frac{m_{4}}{m_{2}^{2}}-3(n-1)) + 3, \end{equation} where $m_{2}$, $m_{3}$, $m_{4}$ denote empirical moments defined by $m_{k}=\frac{1}{n}\sum_{i=1}^n(x_{i}-\overline{x})^{k}$, with $x_{i}$ the $n$ observations of variable $x$ and $\overline{x}$ their mean value. The \code{descdist} function provides classical descriptive statistics (minimum, maximum, median, mean, standard deviation), skewness and kurtosis. By default, unbiased estimations of the three last statistics are provided. Nevertheless, the argument \code{method} can be changed from \code{"unbiased"} (default) to \code{"sample"} to obtain them without correction for bias. A skewness-kurtosis plot such as the one proposed by \cite{Cullen99} is provided by the \code{descdist} function for the empirical distribution (see Figure~\ref{Cullenplotcont} for the \code{groundbeef} data set). On this plot, values for common distributions are displayed in order to help the choice of distributions to fit to data. For some distributions (normal, uniform, logistic, exponential), there is only one possible value for the skewness and the kurtosis. Thus, the distribution is represented by a single point on the plot. For other distributions, areas of possible values are represented, consisting in lines (as for gamma and lognormal distributions), or larger areas (as for beta distribution). Skewness and kurtosis are known not to be robust. In order to take into account the uncertainty of the estimated values of kurtosis and skewness from data, a nonparametric bootstrap procedure \citep{efrontibshirani94} can be performed by using the argument \code{boot}. %to an integer above 10. Values of skewness and kurtosis are computed on bootstrap samples (constructed by random sampling with replacement from the original data set) and reported on the skewness-kurtosis plot. Nevertheless, the user needs to know that skewness and kurtosis, like all higher moments, have a very high variance. This is a problem which cannot be completely solved by the use of bootstrap. The skewness-kurtosis plot should then be regarded as indicative only. The properties of the random variable should be considered, notably its expected value and its range, as a complement to the use of the \code{plotdist} and \code{descdist} functions. Below is a call to the \code{descdist} function to describe the distribution of the serving size from the \code{groundbeef} data set and to draw the corresponding skewness-kurtosis plot (see Figure~\ref{Cullenplotcont}). Looking at the results on this example with a positive skewness and a kurtosis not far from 3, the fit of three common right-skewed distributions could be considered, Weibull, gamma and lognormal distributions. %%% R code <>= descdist(groundbeef$serving, boot = 1000) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb] \centering %%% R code <>= descdist(groundbeef$serving, boot = 1000) @ \caption{Skewness-kurtosis plot for a continuous variable (serving size from the \code{groundbeef} data set) as provided by the \code{descdist} function.} \label{Cullenplotcont} \end{figure} \newpage \subsection[Maximum likelihood]{Fit of distributions by maximum likelihood estimation} \label{FIT} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Once selected, one or more parametric distributions $f(.\vert \theta)$ (with parameter $\theta\in\mathbb{R}^d$) may be fitted to the data set, one at a time, using the \code{fitdist} function. Under the i.i.d. sample assumption, distribution parameters $\theta$ are by default estimated by maximizing the likelihood function defined as: \begin{equation} \label{likelihood} L(\theta)=\prod_{i=1}^n f(x_{i}\vert \theta) \end{equation} with $x_{i}$ the $n$ observations of variable $X$ and $f(.\vert \theta)$ the density function of the parametric distribution. The other proposed estimation methods are described in Section~\ref{Alternatives}. The \code{fitdist} function returns an S3 object of class \code{"fitdist"} for which \code{print}, \code{summary} and \code{plot} functions are provided. The fit of a distribution using \code{fitdist} assumes that the corresponding \code{d}, \code{p}, \code{q} functions (standing respectively for the density, the distribution and the quantile functions) are defined. Classical distributions are already defined in that way in the \pkg{stats} package, e.g., \code{dnorm}, \code{pnorm} and \code{qnorm} for the normal distribution (see \code{?Distributions}). Others may be found in various packages (see the CRAN task view: Probability Distributions at \url{https://CRAN.R-project.org/view=Distributions}). Distributions not found in any package must be implemented by the user as \code{d}, \code{p}, \code{q} functions. In the call to \code{fitdist}, a distribution has to be specified via the argument \code{dist} either by the character string corresponding to its common root name used in the names of \code{d}, \code{p}, \code{q} functions (e.g., \code{"norm"} for the normal distribution) or by the density function itself, from which the root name is extracted (e.g., \code{dnorm} for the normal distribution). Numerical results returned by the \code{fitdist} function are (1) the parameter estimates, (2) the estimated standard errors (computed from the estimate of the Hessian matrix at the maximum likelihood solution), (3) the loglikelihood, (4) Akaike and Bayesian information criteria (the so-called AIC and BIC), and (5) the correlation matrix between parameter estimates. Below is a call to the \code{fitdist} function to fit a Weibull distribution to the serving size from the \code{groundbeef} data set. %%% R code <>= fw <- fitdist(groundbeef$serving, "weibull") summary(fw) @ The plot of an object of class \code{"fitdist"} provides four classical goodness-of-fit plots \citep{Cullen99} presented on Figure~\ref{groundbeef:comp}: \begin{itemize} \item a density plot representing the density function of the fitted distribution along with the histogram of the empirical distribution, \item a CDF plot of both the empirical distribution and the fitted distribution, \item a Q-Q plot representing the empirical quantiles (y-axis) against the theoretical quantiles (x-axis) \item a P-P plot representing the empirical distribution function evaluated at each data point (y-axis) against the fitted distribution function (x-axis). \end{itemize} For CDF, Q-Q and P-P plots, the probability plotting position is defined by default using Hazen's rule, with probability points of the empirical distribution calculated as \code{(1:n - 0.5)/n}, as recommended by \cite{Blom}. This plotting position can be easily changed (see the reference manual for details \citep{fitdistrplus}). % using the arguments %\code{use.ppoints} and \code{a.ppoints}. When \code{use.ppoints = TRUE}, %the argument \code{a.ppoints} is passed to the \code{ppoints} function from the \pkg{stats} package to %define the %probability points of the empirical distribution as \code{(1:n - a.ppoints)/(n - 2a.ppoints + 1)}. %When \code{use.ppoints = FALSE}, the probability points are simply defined as \code{1:n / n}. Unlike the generic \code{plot} function, the \code{denscomp}, \code{cdfcomp}, \code{qqcomp} and \code{ppcomp} functions enable to draw separately each of these four plots, in order to compare the empirical distribution and multiple parametric distributions fitted on a same data set. These functions must be called with a first argument corresponding to a list of objects of class \code{fitdist}, and optionally further arguments to customize the plot (see the reference manual for lists of arguments that may be specific to each plot \citep{fitdistrplus}). In the following example, we compare the fit of a Weibull, a lognormal and a gamma distributions to the \code{groundbeef} data set (Figure~\ref{groundbeef:comp}). %%% R code <>= fg <- fitdist(groundbeef$serving, "gamma") fln <- fitdist(groundbeef$serving, "lnorm") par(mfrow = c(2, 2)) plot.legend <- c("Weibull", "lognormal", "gamma") denscomp(list(fw, fln, fg), legendtext = plot.legend) qqcomp(list(fw, fln, fg), legendtext = plot.legend) cdfcomp(list(fw, fln, fg), legendtext = plot.legend) ppcomp(list(fw, fln, fg), legendtext = plot.legend) @ \setkeys{Gin}{width=0.8\textwidth} \begin{figure}[htb!] \centering <>= par(mfrow=c(2, 2)) denscomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) qqcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) cdfcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) ppcomp(list(fw, fln, fg), legendtext=c("Weibull", "lognormal", "gamma")) @ \caption{Four Goodness-of-fit plots for various distributions fitted to continuous data (Weibull, gamma and lognormal distributions fitted to serving sizes from the \code{groundbeef} data set) as provided by functions \code{denscomp}, \code{qqcomp}, \code{cdfcomp} and \code{ppcomp}.} \label{groundbeef:comp} \end{figure} The density plot and the CDF plot may be considered as the basic classical goodness-of-fit plots. The two other plots are complementary and can be very informative in some cases. The Q-Q plot emphasizes the lack-of-fit at the distribution tails while the P-P plot emphasizes the lack-of-fit at the distribution center. In the present example (in Figure~\ref{groundbeef:comp}), none of the three fitted distributions correctly describes the center of the distribution, but the Weibull and gamma distributions could be prefered for their better description of the right tail of the empirical distribution, especially if this tail is important in the use of the fitted distribution, as it is in the context of food risk assessment. The data set named \code{endosulfan} will now be used to illustrate other features of the \pkg{fitdistrplus} package. This data set contains acute toxicity values for the organochlorine pesticide endosulfan (geometric mean of LC50 ou EC50 values in $\mu g.L^{-1}$), tested on Australian and non-Australian laboratory-species \citep{Hose04}. In ecotoxicology, a lognormal or a loglogistic distribution is often fitted to such a data set in order to characterize the species sensitivity distribution (SSD) for a pollutant. A low percentile of the fitted distribution, generally the 5$\%$ percentile, is then calculated and named the hazardous concentration 5$\%$ (HC5). It is interpreted as the value of the pollutant concentration protecting 95$\%$ of the species \citep{Posthuma2010}. But the fit of a lognormal or a loglogistic distribution to the whole \code{endosulfan} data set is rather bad (Figure~\ref{endo:comp}), especially due to a minority of very high values. The two-parameter Pareto distribution and the three-parameter Burr distribution (which is an extension of both the loglogistic and the Pareto distributions) have been fitted. Pareto and Burr distributions are provided in the package \pkg{actuar}. Until here, we did not have to define starting values (in the optimization process) as reasonable starting values are implicity defined within the \code{fitdist} function for most of the distributions defined in \proglang{R} (see \code{?fitdist} for details). For other distributions like the Pareto and the Burr distribution, initial values for the distribution parameters have to be supplied in the argument \code{start}, as a named list with initial values for each parameter (as they appear in the \code{d}, \code{p}, \code{q} functions). Having defined reasonable starting values\footnote{%---- The \code{plotdist} function can plot any parametric distribution with specified parameter values in argument \code{para}. It can thus help to find correct initial values for the distribution parameters in non trivial cases, by iterative calls if necessary (see the reference manual for examples \citep{fitdistrplus}). }, %---- various distributions can be fitted and graphically compared. On this example, the function \code{cdfcomp} can be used to report CDF values in a logscale so as to emphasize discrepancies on the tail of interest while defining an HC5 value (Figure~\ref{endo:comp}). %%% R code <>= data("endosulfan") ATV <-endosulfan$ATV fendo.ln <- fitdist(ATV, "lnorm") library("actuar") fendo.ll <- fitdist(ATV, "llogis", start = list(shape = 1, scale = 500)) fendo.P <- fitdist(ATV, "pareto", start = list(shape = 1, scale = 500)) fendo.B <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE, legendtext = c("lognormal", "loglogistic", "Pareto", "Burr")) @ % qqcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale=TRUE, ylogscale=TRUE, % legendtext = c("lognormal","loglogistic","Pareto","Burr")) \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering <>= cdfcomp(list(fendo.ln, fendo.ll, fendo.P, fendo.B), xlogscale = TRUE, ylogscale = TRUE,legendtext = c("lognormal","loglogistic","Pareto","Burr")) @ %qqcomp(list(fendo.ln,fendo.ll,fendo.P,fendo.B),xlogscale=TRUE,ylogscale=TRUE, % legendtext = c("lognormal","loglogistic","Pareto","Burr")) \caption{CDF plot to compare the fit of four distributions to acute toxicity values of various organisms for the organochlorine pesticide endosulfan (\code{endosulfan} data set) as provided by the \code{cdfcomp} function, with CDF values in a logscale to emphasize discrepancies on the left tail.} \label{endo:comp} \end{figure} None of the fitted distribution correctly describes the right tail observed in the data set, but as shown in Figure~\ref{endo:comp}, the left-tail seems to be better described by the Burr distribution. Its use could then be considered to estimate the HC5 value as the $5\%$ quantile of the distribution. This can be easily done using the \code{quantile} generic function defined for an object of class \code{"fitdist"}. Below is this calculation together with the calculation of the empirical quantile for comparison. %%% R code <>= quantile(fendo.B, probs = 0.05) quantile(ATV, probs = 0.05) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% In addition to the ecotoxicology context, the \code{quantile} generic function is also attractive in the actuarial--financial context. In fact, the value-at-risk $VAR_\alpha$ is defined as the $1-\alpha$-quantile of the loss distribution and can be computed with \code{quantile} on a \code{"fitdist"} object. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The computation of different goodness-of-fit statistics is proposed in the \pkg{fitdistrplus} package in order to further compare fitted distributions. The purpose of goodness-of-fit statistics aims to measure the distance between the fitted parametric distribution and the empirical distribution: e.g., the distance between the fitted cumulative distribution function $F$ and the empirical distribution function $F_{n}$. When fitting continuous distributions, three goodness-of-fit statistics are classicaly considered: Cramer-von Mises, Kolmogorov-Smirnov and Anderson-Darling statistics \citep{Stephens86}. Naming $x_{i}$ the $n$ observations of a continuous variable $X$ arranged in an ascending order, Table \ref{tabKSCvMAD} gives the definition and the empirical estimate of the three considered goodness-of-fit statistics. They can be computed using the function \code{gofstat} as defined by Stephens \citep{Stephens86}. <>= gofstat(list(fendo.ln, fendo.ll, fendo.P, fendo.B), fitnames = c("lnorm", "llogis", "Pareto", "Burr")) @ \begin{table}[htb!] \begin{center} \begin{tabular}{lll} \hline Statistic & General formula & Computational formula\\ \hline Kolmogorov-Smirnov & $\sup|F_{n}(x) - F(x)|$ & $\max(D^{+},D^{-})$ with\\ (KS) & & $D^{+}=\max\limits_{i=1,\dots,n}\left(\frac{i}{n} - F_i\right)$ \\ & & $D^{-}=\max\limits_{i=1,\dots,n}\left(F_{i}-\frac{i-1}{n}\right)$ \\ \hline Cramer-von Mises & n $\int_{-\infty}^{\infty}(F_{n}(x) - F(x))^2 dx$ & $\frac{1}{12n} + \sum\limits_{i=1}^n \left(F_i-\frac{2i-1}{2n} \right)^{2}$\\ (CvM)&&\\ % cvm <- 1/(12*n) + sum( ( theop - (2 * seq(1:n) - 1)/(2 * n) )^2 ) \hline Anderson-Darling & n $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2}{F(x) (1 - F(x))} dx$ & $-n -\frac{1}{n}\sum\limits_{i=1}^n (2i-1)\log(F_i(1-F_{n+1-i}))$ \\ (AD) & & \\ % ad <- - n - mean( (2 * seq(1:n) - 1) * (log(theop) + log(1 - rev(theop))) ) \hline where $F_i\stackrel{\triangle}{=} F(x_i)$ \end{tabular} \caption{Goodness-of-fit statistics as defined by Stephens \citep{Stephens86}.} \label{tabKSCvMAD} \end{center} \end{table} %\newpage As giving more weight to distribution tails, the Anderson-Darling statistic is of special interest when it matters to equally emphasize the tails as well as the main body of a distribution. This is often the case in risk assessment \citep{Cullen99,Vose10}. For this reason, this statistics is often used to select the best distribution among those fitted. Nevertheless, this statistics should be used cautiously when comparing fits of various distributions. Keeping in mind that the weighting of each CDF quadratic difference depends on the parametric distribution in its definition (see Table \ref{tabKSCvMAD}), Anderson-Darling statistics computed for several distributions fitted on a same data set are theoretically difficult to compare. Moreover, such a statistic, as Cramer-von Mises and Kolmogorov-Smirnov ones, does not take into account the complexity of the model (i.e., parameter number). It is not a problem when compared distributions are characterized by the same number of parameters, but it could systematically promote the selection of the more complex distributions in the other case. Looking at classical penalized criteria based on the loglikehood (AIC, BIC) seems thus also interesting, especially to discourage overfitting. In the previous example, all the goodness-of-fit statistics based on the CDF distance are in favor of the Burr distribution, the only one characterized by three parameters, while AIC and BIC values respectively give the preference to the Burr distribution or the Pareto distribution. The choice between these two distributions seems thus less obvious and could be discussed. Even if specifically recommended for discrete distributions, the Chi-squared statistic may also be used for continuous distributions (see Section~\ref{otherdata} and the reference manual for examples \citep{fitdistrplus}). \subsection[Uncertainty]{Uncertainty in parameter estimates} \label{Uncertainty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The uncertainty in the parameters of the fitted distribution can be estimated by parametric or nonparametric bootstraps using the \code{boodist} function for non-censored data \citep{efrontibshirani94}. This function returns the bootstrapped values of parameters in an S3 class object which can be plotted to visualize the bootstrap region. The medians and the 95 percent confidence intervals of parameters (2.5 and 97.5 percentiles) are printed in the summary. When inferior to the whole number of iterations (due to lack of convergence of the optimization algorithm for some bootstrapped data sets), the number of iterations for which the estimation converges is also printed in the summary. The plot of an object of class \code{"bootdist"} consists in a scatterplot or a matrix of scatterplots of the bootstrapped values of parameters providing a representation of the joint uncertainty distribution of the fitted parameters. Below is an example of the use of the \code{bootdist} function with the previous fit of the Burr distribution to the \code{endosulfan} data set (Figure~\ref{fig:bootstrap}). %%% R code <>= bendo.B <- bootdist(fendo.B, niter = 1001) @ <>= summary(bendo.B) plot(bendo.B) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering <>= plot(bendo.B) @ \caption{Bootstrappped values of parameters for a fit of the Burr distribution characterized by three parameters (example on the \code{endosulfan} data set) as provided by the plot of an object of class \code{"bootdist"}.} \label{fig:bootstrap} \end{figure} Bootstrap samples of parameter estimates are useful especially to calculate confidence intervals on each parameter of the fitted distribution from the marginal distribution of the bootstraped values. It is also interesting to look at the joint distribution of the bootstraped values in a scatterplot (or a matrix of scatterplots if the number of parameters exceeds two) in order to understand the potential structural correlation between parameters (see Figure~\ref{fig:bootstrap}). The use of the whole bootstrap sample is also of interest in the risk assessment field. Its use enables the characterization of uncertainty in distribution parameters. It can be directly used within a second-order Monte Carlo simulation framework, especially within the package \pkg{mc2d} \citep{mc2d}. One could refer to \cite{Pouillot10} for an introduction to the use of \pkg{mc2d} and \pkg{fitdistrplus} packages in the context of quantitative risk assessment. The bootstrap method can also be used to calculate confidence intervals on quantiles of the fitted distribution. For this purpose, a generic \code{quantile} function is provided for class \code{bootdist}. By default, $95\%$ percentiles bootstrap confidence intervals of quantiles are provided. Going back to the previous example from ecotoxicolgy, this function can be used to estimate the uncertainty associated to the HC5 estimation, for example from the previously fitted Burr distribution to the \code{endosulfan} data set. %%% R code <>= quantile(bendo.B, probs = 0.05) @ \begin{small} <>= quantile(bendo.B, probs = 0.05) @ \end{small} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Advanced topics}\label{advtopic} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection[Alternative estimation]{Alternative methods for parameter estimation} \label{Alternatives} This subsection focuses on alternative estimation methods. One of the alternative for continuous distributions is the maximum goodness-of-fit estimation method also called minimum distance estimation method \citep{Stephens86,actuarJSS}. In this package this method is proposed with eight different distances: the three classical distances defined in Table~\ref{tabKSCvMAD}, or one of the variants of the Anderson-Darling distance proposed by \cite{Luceno06} and defined in Table~\ref{modifiedAD}. The right-tail AD gives more weight to the right-tail, the left-tail AD gives more weight only to the left tail. Either of the tails, or both of them, can receive even larger weights by using second order Anderson-Darling Statistics. \begin{table}[htb!] \begin{center} \begin{tabular}{lll} \hline Statistic & General formula & Computational formula\\ \hline Right-tail AD & $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{1 - F(x)} dx$ & $\frac{n}{2} -2\sum\limits_{i=1}^nF_i -\frac{1}{n}\sum\limits_{i=1}^n(2i-1)ln(\overline F_{n+1-i})$ \\ (ADR) & &\\ \hline Left-tail AD & $\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(F(x))} dx$ & $-\frac{3n}{2} +2\sum\limits_{i=1}^nF_i -\frac{1}{n}\sum\limits_{i=1}^n(2i-1)ln(F_i)$ \\ (ADL) & &\\ \hline Right-tail AD & $ad2r=\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(1 - F(x))^{2}} dx$ & $ad2r=2\sum\limits_{i=1}^nln(\overline F_i) +\frac{1}{n}\sum\limits_{i=1}^n \frac{2i-1}{\overline F_{n+1-i}}$ \\ 2nd order (AD2R) & &\\ \hline Left-tail AD & $ad2l=\int_{-\infty}^{\infty}\frac{(F_{n}(x) - F(x))^2 }{(F(x))^{2}} dx$ & $ad2l=2\sum\limits_{i=1}^nln(F_i) +\frac{1}{n}\sum\limits_{i=1}^n\frac{2i-1}{F_i}$ \\ 2nd order (AD2L) & &\\ \hline AD 2nd order & $ad2r+ad2l$ & $ad2r+ad2l$ \\ (AD2) & &\\ \hline where $F_i\stackrel{\triangle}{=} F(x_{i})$; & $\overline F_i\stackrel{\triangle}{=}1-F(x_{i})$ \end{tabular} \caption{Modified Anderson-Darling statistics as defined by \cite{Luceno06}.} \label{modifiedAD} \end{center} \end{table} To fit a distribution by maximum goodness-of-fit estimation, one needs to fix the argument \code{method} to \code{"mge"} in the call to \code{fitdist} and to specify the argument \code{gof} coding for the chosen goodness-of-fit distance. This function is intended to be used only with continuous non-censored data. Maximum goodness-of-fit estimation may be useful to give more weight to data at one tail of the distribution. In the previous example from ecotoxicology, we used a non classical distribution (the Burr distribution) to correctly fit the empirical distribution especially on its left tail. In order to correctly estimate the 5$\%$ percentile, we could also consider the fit of the classical lognormal distribution, but minimizing a goodness-of-fit distance giving more weight to the left tail of the empirical distribution. In what follows, the left tail Anderson-Darling distances of first or second order are used to fit a lognormal to \code{endosulfan} data set (see Figure~\ref{plotfitMGE}). %%% R code <>= fendo.ln.ADL <- fitdist(ATV, "lnorm", method = "mge", gof = "ADL") fendo.ln.AD2L <- fitdist(ATV, "lnorm", method = "mge", gof = "AD2L") cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", xlegend = "bottomright", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order")) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering %%% R code <>= cdfcomp(list(fendo.ln, fendo.ln.ADL, fendo.ln.AD2L), xlogscale = TRUE, ylogscale = TRUE, main = "Fitting a lognormal distribution", legendtext = c("MLE","Left-tail AD", "Left-tail AD 2nd order"), xlegend = "bottomright") @ \caption{Comparison of a lognormal distribution fitted by MLE and by MGE using two different goodness-of-fit distances : left-tail Anderson-Darling and left-tail Anderson Darling of second order (example with the \code{endosulfan} data set) as provided by the \code{cdfcomp} function, with CDF values in a logscale to emphasize discrepancies on the left tail.} \label{plotfitMGE} \end{figure} Comparing the $5\%$ percentiles (HC5) calculated using these three fits to the one calculated from the MLE fit of the Burr distribution, we can observe, on this example, that fitting the lognormal distribution by maximizing left tail Anderson-Darling distances of first or second order enables to approach the value obtained by fitting the Burr distribution by MLE. %%% R code <>= (HC5.estimates <- c( empirical = as.numeric(quantile(ATV, probs = 0.05)), Burr = as.numeric(quantile(fendo.B, probs = 0.05)$quantiles), lognormal_MLE = as.numeric(quantile(fendo.ln, probs = 0.05)$quantiles), lognormal_AD2 = as.numeric(quantile(fendo.ln.ADL, probs = 0.05)$quantiles), lognormal_AD2L = as.numeric(quantile(fendo.ln.AD2L, probs = 0.05)$quantiles))) @ %\subsubsection{Moment matching estimation} %\label{MME} %%%%%%%%%% The moment matching estimation (MME) is another method commonly used to fit parametric distributions \citep{Vose10}. MME consists in finding the value of the parameter $\theta$ that equalizes the first theoretical raw moments of the parametric distribution to the corresponding empirical raw moments as in Equation~(\ref{moments}): \begin{equation} \label{moments} E(X^{k}|\theta)=\frac{1}{n}\sum_{i=1}^{n}x_{i}^{k} , \end{equation} for $k=1,\ldots,d$, with $d$ the number of parameters to estimate and $x_{i}$ the $n$ observations of variable $X$. For moments of order greater than or equal to 2, it may also be relevant to match centered moments. Therefore, we match the moments given in Equation~(\ref{centmoments}): \begin{equation} \label{centmoments} E(X\vert \theta) = \overline{x} ~,~ E\left((X-E(X))^{k}|\theta\right)=m_k, \text{ for } k=2,\ldots,d, \end{equation} where $m_k$ denotes the empirical centered moments. This method can be performed by setting the argument \code{method} to \code{"mme"} in the call to \code{fitdist}. The estimate is computed by a closed-form formula for the following distributions: normal, lognormal, exponential, Poisson, gamma, logistic, negative binomial, geometric, beta and uniform distributions. In this case, for distributions characterized by one parameter (geometric, Poisson and exponential), this parameter is simply estimated by matching theoretical and observed means, and for distributions characterized by two parameters, these parameters are estimated by matching theoretical and observed means and variances \citep{Vose10}. For other distributions, the equation of moments is solved numerically using the \code{optim} function by minimizing the sum of squared differences between observed and theoretical moments (see the \pkg{fitdistrplus} reference manual for technical details \citep{fitdistrplus}). A classical data set from the Danish insurance industry published in \cite{mcneil97} will be used to illustrate this method. In \pkg{fitdistrplus}, the data set is stored in \code{danishuni} for the univariate version and contains the loss amounts collected at Copenhagen Reinsurance between 1980 and 1990. In actuarial science, it is standard to consider positive heavy-tailed distributions and have a special focus on the right-tail of the distributions. In this numerical experiment, we choose classic actuarial distributions for loss modelling: the lognormal distribution and the Pareto type II distribution \citep{Klugmanetal09}. The lognormal distribution is fitted to \code{danishuni} data set by matching moments implemented as a closed-form formula. On the left-hand graph of Figure~\ref{fig:danish:mme}, the fitted distribution functions obtained using the moment matching estimation (MME) and maximum likelihood estimation (MLE) methods are compared. The MME method provides a more cautious estimation of the insurance risk as the MME-fitted distribution function (resp. MLE-fitted) underestimates (overestimates) the empirical distribution function for large values of claim amounts. %%% R code <>= data("danishuni") str(danishuni) fdanish.ln.MLE <- fitdist(danishuni$Loss, "lnorm") fdanish.ln.MME <- fitdist(danishuni$Loss, "lnorm", method = "mme", order = 1:2) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend = c("lognormal MLE", "lognormal MME"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) @ \setkeys{Gin}{width=0.9\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start=list(shape=10, scale=10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method="mme", order=1:2, memp="memp", start=list(shape=10, scale=10), lower=c(2+1e-6,2+1e-6), upper=c(Inf,Inf)) par(mfrow=c(1, 2)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.MME), legend=c("lognormal MLE", "lognormal MME"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend=c("Pareto MLE", "Pareto MME"), main="Fitting a Pareto distribution", xlogscale=TRUE, datapch=20) @ \caption{Comparison between MME and MLE when fitting a lognormal or a Pareto distribution to loss data from the \code{danishuni} data set.} \label{fig:danish:mme} \end{figure} In a second time, a Pareto distribution, which gives more weight to the right-tail of the distribution, is fitted. As the lognormal distribution, the Pareto has two parameters, which allows a fair comparison. %The Burr distribution (with its three parameters) would lead to a better fit. We use the implementation of the \pkg{actuar} package providing raw and centered moments for that distribution (in addition to \code{d}, \code{p}, \code{q} and \code{r} functions \citep{actuar12}. Fitting a heavy-tailed distribution for which the first and the second moments do not exist for certain values of the shape parameter requires some cautiousness. This is carried out by providing, for the optimization process, a lower and an upper bound for each parameter. The code below calls the L-BFGS-B optimization method in \code{optim}, since this quasi-Newton allows box constraints\footnote{That is what the B stands for.}. We choose match moments defined in Equation~(\ref{moments}), and so a function for computing the empirical raw moment (called \code{memp} in our example) is passed to \code{fitdist}. For two-parameter distributions (i.e., $d=2$), Equations~(\ref{moments}) and (\ref{centmoments}) are equivalent. <>= library("actuar") fdanish.P.MLE <- fitdist(danishuni$Loss, "pareto", start = list(shape = 10, scale = 10), lower = 2+1e-6, upper = Inf) memp <- function(x, order) sum(x^order)/length(x) fdanish.P.MME <- fitdist(danishuni$Loss, "pareto", method = "mme", order = 1:2, memp = "memp", start = list(shape = 10, scale = 10), lower = c(2+1e-6, 2+1e-6), upper = c(Inf, Inf)) cdfcomp(list(fdanish.P.MLE, fdanish.P.MME), legend = c("Pareto MLE", "Pareto MME"), main = "Fitting a Pareto distribution", xlogscale = TRUE, datapch = ".") gofstat(list(fdanish.ln.MLE, fdanish.P.MLE, fdanish.ln.MME, fdanish.P.MME), fitnames = c("lnorm.mle", "Pareto.mle", "lnorm.mme", "Pareto.mme")) @ As shown on Figure~\ref{fig:danish:mme}, MME and MLE fits are far less distant (when looking at the right-tail) for the Pareto distribution than for the lognormal distribution on this data set. Furthermore, for these two distributions, the MME method better fits the right-tail of the distribution from a visual point of view. This seems logical since empirical moments are influenced by large observed values. In the previous traces, we gave the values of goodness-of-fit statistics. Whatever the statistic considered, the MLE-fitted lognormal always provides the best fit to the observed data. Maximum likelihood and moment matching estimations are certainly the most commonly used method for fitting distributions \citep{Cullen99}. Keeping in mind that these two methods may produce very different results, the user should be aware of its great sensitivity to outliers when choosing the moment matching estimation. This may be seen as an advantage in our example if the objective is to better describe the right tail of the distribution, but it may be seen as a drawback if the objective is different. %\subsubsection{Quantile matching estimation} %\label{QME} %%%%%%%%%% Fitting of a parametric distribution may also be done by matching theoretical quantiles of the parametric distributions (for specified probabilities) against the empirical quantiles (\cite{Tse2009}). The equality of theoretical and empirical qunatiles is expressed by Equation~(\ref{quantiles}) below, which is very similar to Equations~(\ref{moments}) and (\ref{centmoments}): \begin{equation} \label{quantiles} F^{-1}(p_{k}|\theta)=Q_{n,p_{k}} \end{equation} for $k=1,\ldots,d$, with $d$ the number of parameters to estimate (dimension of $\theta$ if there is no fixed parameters) and $Q_{n,p_{k}}$ the empirical quantiles calculated from data for specified probabilities $p_{k}$. Quantile matching estimation (QME) is performed by setting the argument \code{method} to \code{"qme"} in the call to \code{fitdist} and adding an argument \code{probs} defining the probabilities for which the quantile matching is performed. The length of this vector must be equal to the number of parameters to estimate (as the vector of moment orders for MME). Empirical quantiles are computed using the \code{quantile} function of the \pkg{stats} package using \code{type=7} by default (see \code{?quantile} and \cite{hyndmanfan96}). But the type of quantile can be easily changed by using the \code{qty} argument in the call to the \code{qme} function. The quantile matching is carried out numerically, by minimizing the sum of squared differences between observed and theoretical quantiles. %%% R code <>= fdanish.ln.QME1 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(1/3, 2/3)) fdanish.ln.QME2 <- fitdist(danishuni$Loss, "lnorm", method = "qme", probs = c(8/10, 9/10)) cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend = c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main = "Fitting a lognormal distribution", xlogscale = TRUE, datapch = 20) @ Above is an example of fitting of a lognormal distribution to \code{danishuni} data set by matching probabilities $(p_1= 1/3, p_2=2/3)$ and $(p_1= 8/10, p_2=9/10)$. As expected, the second QME fit gives more weight to the right-tail of the distribution. %, despite we do not choose the Pareto type-II distribution. Compared to the maximum likelihood estimation, the second QME fit best suits the right-tail of the distribution, whereas the first QME fit best models the body of the distribution. The quantile matching estimation is of particular interest when we need to focus around particular quantiles, e.g., $p=99.5\%$ in the Solvency II insurance context or $p=5\%$ for the HC5 estimation in the ecotoxicology context. \setkeys{Gin}{width=0.5\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= cdfcomp(list(fdanish.ln.MLE, fdanish.ln.QME1, fdanish.ln.QME2), legend=c("MLE", "QME(1/3, 2/3)", "QME(8/10, 9/10)"), main="Fitting a lognormal distribution", xlogscale=TRUE, datapch=20) @ \caption{Comparison between QME and MLE when fitting a lognormal distribution to loss data from the \code{danishuni} data set.} \label{fig:danish:qme} \end{figure} %\clearpage \subsection[Customizing optimization]{Customization of the optimization algorithm} \label{Customization} %%%%%%%%%% Each time a numerical minimization is carried out in the \code{fitdistrplus} package, the \code{optim} function of the \pkg{stats} package is used by default with the \code{"Nelder-Mead"} method for distributions characterized by more than one parameter and the \code{"BFGS"} method for distributions characterized by only one parameter. Sometimes the default algorithm fails to converge. It is then interesting to change some options of the \code{optim} function or to use another optimization function than \code{optim} to minimize the objective function. The argument \code{optim.method} can be used in the call to \code{fitdist} or \code{fitdistcens}. It will internally be passed to \code{mledist}, \code{mmedist}, \code{mgedist} or \code{qmedist}, and to \code{optim} (see \code{?optim} for details about the different algorithms available). Even if no error is raised when computing the optimization, changing the algorithm is of particular interest to enforce bounds on some parameters. For instance, a volatility parameter $\sigma$ is strictly positive $\sigma>0$ and a probability parameter $p$ lies in $p\in [0,1]$. This is possible by using arguments \code{lower} and/or \code{upper}, for which their use automatically forces \code{optim.method="L-BFGS-B"}. Below are examples of fits of a gamma distribution $\mathcal{G}(\alpha, \lambda)$ to the \code{groundbeef} data set with various algorithms. Note that the conjugate gradient algorithm (\code{"CG"}) needs far more iterations to converge (around 2500 iterations) compared to other algorithms (converging in less than 100 iterations). %%% R code <>= data("groundbeef") fNM <- fitdist(groundbeef$serving, "gamma", optim.method = "Nelder-Mead") fBFGS <- fitdist(groundbeef$serving, "gamma", optim.method = "BFGS") fSANN <- fitdist(groundbeef$serving, "gamma", optim.method = "SANN") fCG <- try(fitdist(groundbeef$serving, "gamma", optim.method = "CG", control = list(maxit = 10000))) if(class(fCG) == "try-error") fCG <- list(estimate = NA) @ It is also possible to use another function than \code{optim} to minimize the objective function by specifying by the argument \code{custom.optim} in the call to \code{fitdist}. It may be necessary to customize this optimization function to meet the following requirements. (1) \code{custom.optim} function must have the following arguments: \code{fn} for the function to be optimized and \code{par} for the initialized parameters. (2) \code{custom.optim} should carry out a MINIMIZATION and must return the following components: \code{par} for the estimate, \code{convergence} for the convergence code, \code{value=fn(par)} and \code{hessian}. Below is an example of code written to wrap the \code{genoud} function from the \pkg{rgenoud} package in order to respect our optimization ``template''. The \pkg{rgenoud} package implements the genetic (stochastic) algorithm. %%% R code <>= mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values = par, ...) standardres <- c(res, convergence = 0) return(standardres) } @ The customized optimization function can then be passed as the argument \code{custom.optim} in the call to \code{fitdist} or \code{fitdistcens}. The following code can for example be used to fit a gamma distribution to the \code{groundbeef} data set. Note that in this example various arguments are also passed from \code{fitdist} to \code{genoud} : \code{nvars}, \code{Domains}, \code{boundary.enforcement}, \code{print.level} and \code{hessian}. The code below compares all the parameter estimates ($\hat\alpha$, $\hat\lambda$) by the different algorithms: shape $\alpha$ and rate $\lambda$ parameters are relatively similar on this example, roughly 4.00 and 0.05, respectively. %%% R code <>= fgenoud <- mledist(groundbeef$serving, "gamma", custom.optim = mygenoud, nvars = 2, max.generations = 10, Domains = cbind(c(0,0), c(10,10)), boundary.enforcement = 1, hessian = TRUE, print.level = 0, P9 = 10) cbind(NM = fNM$estimate, BFGS = fBFGS$estimate, SANN = fSANN$estimate, CG = fCG$estimate, fgenoud = fgenoud$estimate) @ %\newpage \subsection[Other types of data]{Fitting distributions to other types of data} \label{otherdata} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \emph{This section was modified since the publication of this vignette in the Journal of Statistical Software in order to include new goodness-of-fit plots for censored and discrete data.} Analytical methods often lead to semi-quantitative results which are referred to as censored data. Observations only known to be under a limit of detection are left-censored data. Observations only known to be above a limit of quantification are right-censored data. Results known to lie between two bounds are interval-censored data. These two bounds may correspond to a limit of detection and a limit of quantification, or more generally to uncertainty bounds around the observation. Right-censored data are also commonly encountered with survival data \citep{kleinmoeschberger03}. A data set may thus contain right-, left-, or interval-censored data, or may be a mixture of these categories, possibly with different upper and lower bounds. Censored data are sometimes excluded from the data analysis or replaced by a fixed value, which in both cases may lead to biased results. A more recommended approach to correctly model such data is based upon maximum likelihood \citep{kleinmoeschberger03,helsel05}. Censored data may thus contain left-censored, right-censored and interval-censored values, with several lower and upper bounds. Before their use in package \pkg{fitdistrplus}, such data must be coded into a dataframe with two columns, respectively named \code{left} and \code{right}, describing each observed value as an interval. The \code{left} column contains either \code{NA} for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The \code{right} column contains either \code{NA} for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. To illustrate the use of package \pkg{fitdistrplus} to fit distributions to censored continous data, we will use another data set from ecotoxicology, included in our package and named \code{salinity}. This data set contains acute salinity tolerance (LC50 values in electrical conductivity, $mS$.$cm^{-1}$) of riverine macro-invertebrates taxa from the southern Murray-Darling Basin in Central Victoria, Australia \citep{kefford07}. %%% R code <>= data("salinity") str(salinity) @ %\subsubsection{Graphical display of the observed distribution} %\label{censored:graph} %%%%%%%%%% Using censored data such as those coded in the \code{salinity} data set, the empirical distribution can be plotted using the \code{plotdistcens} function. In older versions of the package, by default this function used the Expectation-Maximization approach of \cite{Turnbull74} to compute the overall empirical cdf curve with optional confidence intervals, by calls to \code{survfit} and \code{plot.survfit} functions from the \pkg{survival} package. Even if this representation is always available (by fixing the argument \code{NPMLE.method} to \code{"Turnbull"}), now the default representation of the empirical cumulative distribution function (ECDF) uses another more performant non parametric maximum likelihood estimation (NPMLE) approach developped by Wang \citep{Wang2007, Wang2008, Wang2013, Wang2018}, by calls to the \code{npsurv} function from the \pkg{npsurv} package. Figure~\ref{cdfcompcens} shows on the top left the Wang plot of data together with two fitted distributions. Grey filled rectangles in such a plot represent the regions of non uniqueness of the NPMLE ECDF. A less rigorous but sometimes more illustrative plot can be obtained by fixing the argument \code{NPMLE} to \code{FALSE} in the call to \code{plotdistcens} (see Figure~\ref{plotdistcens} for an example and the help page of Function \code{plotdistcens} for details). This plot enables to see the real nature of censored data, as points and intervals, but the difficulty in building such a plot is to define a relevant ordering of observations. %%% R code %<>= %plotdistcens(salinity) %@ %%% R code <>= plotdistcens(salinity, NPMLE = FALSE) @ \setkeys{Gin}{width=0.5\textwidth} \begin{figure}[htb!] \centering %%% R code <>= plotdistcens(salinity,Turnbull = FALSE) @ \caption{Simple plot of censored raw data (72-hour acute salinity tolerance of riverine macro-invertebrates from the \code{salinity} data set) as ordered points and intervals.} \label{plotdistcens} \end{figure} %\subsubsection{Maximum likelihood estimation} %\label{censored:MLE} %%%%%%%%%% As for non censored data, one or more parametric distributions can be fitted to the censored data set, one at a time, but using in this case the \code{fitdistcens} function. This function estimates the vector of distribution parameters $\theta$ by maximizing the likelihood for censored data defined as: \begin{equation} \label{likelihoodC} \begin{array}{lll} L(\theta)&=&\prod_{i=1}^{N_{nonC}} f(x_{i}|\theta) \times \prod_{j=1}^{N_{leftC}} F(x^{upper}_{j}|\theta) \\ & & \times \prod_{k=1}^{N_{rightC}} (1- F(x^{lower}_{k}|\theta)) \times \prod_{m=1}^{N_{intC}} (F(x^{upper}_{m}|\theta)- F(x^{lower}_{j}|\theta)) \end{array} \end{equation} with $x_{i}$ the $N_{nonC}$ non-censored observations, $x^{upper}_{j}$ upper values defining the $N_{leftC}$ left-censored observations, $x^{lower}_{k}$ lower values defining the $N_{rightC}$ right-censored observations, $[x^{lower}_{m} ; x^{upper}_{m}]$ the intervals defining the $N_{intC}$ interval-censored observations, and F the cumulative distribution function of the parametric distribution \citep{kleinmoeschberger03,helsel05}. As \code{fitdist}, \code{fitdistcens} returns the results of the fit of any parametric distribution to a data set as an S3 class object that can be easily printed, summarized or plotted. For the \code{salinity} data set, a lognormal distribution or a loglogistic can be fitted as commonly done in ecotoxicology for such data. As with \code{fitdist}, for some distributions (see \cite{fitdistrplus} for details), it is necessary to specify initial values for the distribution parameters in the argument \code{start}. The \code{plotdistcens} function can help to find correct initial values for the distribution parameters in non trivial cases, by a manual iterative use if necessary. %%% R code <>= fsal.ln <- fitdistcens(salinity, "lnorm") fsal.ll <- fitdistcens(salinity, "llogis", start = list(shape = 5, scale = 40)) summary(fsal.ln) summary(fsal.ll) @ Computations of goodness-of-fit statistics have not yet been developed for fits using censored data but the quality of fit can be judged using Akaike and Schwarz's Bayesian information criteria (AIC and BIC) and the goodness-of-fit CDF plot, respectively provided when summarizing or plotting an object of class \code{"fitdistcens"}. Functions \code{cdfcompcens}, \code{qqcompcens} and \code{ppcompcens} can also be used to compare the fit of various distributions to the same censored data set. Their calls are similar to the ones of \code{cdfcomp}, \code{qqcomp} and \code{ppcomp}. Below are examples of use of those functions with the two fitted distributions to the \code{salinity} data set (see Figure~\ref{cdfcompcens}). When \code{qqcompcens} and \code{ppcompcens} are used with more than one fitted distribution, the non uniqueness rectangles are not filled and a small noise is added on the y-axis in order to help the visualization of various fits. But we rather recommend the use of the \code{plotstyle} \code{ggplot} of \code{qqcompcens} and \code{ppcompcens} to compare the fits of various distributions as it provides a clearer plot splitted in facets (see \code{?graphcompcens}). %%% R code <>= par(mfrow=c(2, 2)) cdfcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic ")) qqcompcens(fsal.ln, legendtext = "lognormal") ppcompcens(fsal.ln, legendtext = "lognormal") qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), main = "Q-Q plot with 2 dist.") @ \setkeys{Gin}{width=0.8\textwidth} %default \begin{figure}[htb!] \centering %%% R code <>= par(mfrow=c(2, 2)) cdfcompcens(list(fsal.ln, fsal.ll), legendtext=c("lognormal", "loglogistic ")) qqcompcens(fsal.ln, legendtext = "lognormal") ppcompcens(fsal.ln, legendtext = "lognormal") qqcompcens(list(fsal.ln, fsal.ll), legendtext = c("lognormal", "loglogistic "), main = "Q-Q plot with 2 dist.") @ \caption{Some goodness-of-fit plots for fits of a lognormal and a loglogistic distribution to censored data: LC50 values from the \code{salinity} data set.} \label{cdfcompcens} \end{figure} Function \code{bootdistcens} is the equivalent of \code{bootdist} for censored data, except that it only proposes nonparametric bootstrap. Indeed, it is not obvious to simulate censoring within a parametric bootstrap resampling procedure. The generic function \code{quantile} can also be applied to an object of class \code{"fitdistcens"} or \code{"bootdistcens"}, as for continuous non-censored data. In addition to the fit of distributions to censored or non censored continuous data, our package can also accomodate discrete variables, such as count numbers, using the functions developped for continuous non-censored data. These functions will provide somewhat different graphs and statistics, taking into account the discrete nature of the modeled variable. The discrete nature of the variable is automatically recognized when a classical distribution is fitted to data (binomial, negative binomial, geometric, hypergeometric and Poisson distributions) but must be indicated by fixing argument \code{discrete} to \code{TRUE} in the call to functions in other cases. The \code{toxocara} data set included in the package corresponds to the observation of such a discrete variable. Numbers of \emph{Toxocara cati} parasites present in digestive tract are reported from a random sampling of feral cats living on Kerguelen island \citep{Fromont01}. We will use it to illustrate the case of discrete data. %%% R code <>= data("toxocara") str(toxocara) @ The fit of a discrete distribution to discrete data by maximum likelihood estimation requires the same procedure as for continuous non-censored data. As an example, using the \code{toxocara} data set, Poisson and negative binomial distributions can be easily fitted. %%% R code <>= (ftoxo.P <- fitdist(toxocara$number, "pois")) (ftoxo.nb <- fitdist(toxocara$number, "nbinom")) @ For discrete distributions, the plot of an object of class \code{"fitdist"} simply provides two goodness-of-fit plots comparing empirical and theoretical distributions in density and in CDF. Functions \code{cdfcomp} and \code{denscomp} can also be used to compare several plots to the same data set, as follows for the previous fits (Figure~\ref{plotdiscfit}). <>= par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) @ \setkeys{Gin}{width=0.9\textwidth} %default \begin{figure}[htb] \centering <>= par(mfrow = c(1,2)) denscomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) cdfcomp(list(ftoxo.P, ftoxo.nb), legendtext = c("Poisson", "negative binomial"), fitlty = 1) @ \caption{Comparison of the fits of a negative binomial and a Poisson distribution to numbers of \emph{Toxocara cati} parasites from the \code{toxocara} data set.} \label{plotdiscfit} \end{figure} When fitting discrete distributions, the Chi-squared statistic is computed by the \code{gofstat} function using cells defined by the argument \code{chisqbreaks} or cells automatically defined from the data in order to reach roughly the same number of observations per cell. This number is roughly equal to the argument \code{meancount}, or sligthly greater if there are some ties. The choice to define cells from the empirical distribution (data), and not from the theoretical distribution, was done to enable the comparison of Chi-squared values obtained with different distributions fitted on a same data set. If arguments \code{chisqbreaks} and \code{meancount} are both omitted, \code{meancount} is fixed in order to obtain roughly $(4n)^{2/5}$ cells, with $n$ the length of the data set \citep{Vose10}. Using this default option the two previous fits are compared as follows, giving the preference to the negative binomial distribution, from both Chi-squared statistics and information criteria: %%% R code <>= gofstat(list(ftoxo.P, ftoxo.nb), fitnames = c("Poisson", "negative binomial")) @ \section{Conclusion} \label{ccl} %%%%%%%%%% The \proglang{R} package \pkg{fitdistrplus} allows to easily fit distributions. Our main objective while developing this package was to provide tools for helping \proglang{R} users to fit distributions to data. We have been encouraged to pursue our work by feedbacks from users of our package in various areas as food or environmental risk assessment, epidemiology, ecology, molecular biology, genomics, bioinformatics, hydraulics, mechanics, financial and actuarial mathematics or operations research. Indeed, this package is already used by a lot of practionners and academics for simple MLE fits \citep{jaloustreetal11,saketal11,kochetal12,marquetouxetal12, scholletal12,suuronenetal12,varoetal12,mandletal13,mala2013publi,nadarajahbakar2013,simoetal13, westphalfitch13,wayland13,vianaetal13,wu13,staggeetal13,fiorellietal13,tikoleetal13, voigtetal14}, for MLE fits and goodness-of-fit statistics \citep{tarnczi11,bagariaetal12,benavidesetal12,breitbach12,Pouillot10,vaninsky13}, for MLE fits and bootstrap \citep{croucheretal12,meheustetal12,orellanoetal12,telloetal12,hoelzeretal12, prosseretal13,Zhang2013,Rigaux2014}, for MLE fits, bootstrap and goodness-of-fit statistics \citep{larrasetal13}, for MME fit \citep{luangkesornetal12,callauetal13,satoetal13}, for censored MLE and bootstrap \citep{lehaetal11,poulliotetal12,jongenburgeretal12, commeauetal12,contrerasetal2013}, for graphic analysing in \citep{anandetal12}, for grouped-data fitting methods \citep{fusteinercostafreda12} or more generally \citep{busschaertetal10,eling12, sosaetal2013,srinivasanetal2013,meyeretal13,Guillier2013471,Daelmanetal13, eiketal13,Wu2:2013,drakeetal2014}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The \pkg{fitdistrplus} package is complementary with the \pkg{distrMod} package \citep{distrModJSS}. \pkg{distrMod} provides an even more flexible way to estimate distribution parameters but its use requires a greater initial investment to learn how to manipulate the \texttt{S4} classes and methods developed in the \texttt{distr}-family packages. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Many extensions of the \pkg{fitdistrplus} package are planned in the future: we target to extend to censored data some methods for the moment only available for non-censored data, especially concerning goodness-of-fit evaluation and fitting methods. We will also enlarge the choice of fitting methods for non-censored data, by proposing new goodness-of-fit distances (e.g., distances based on quantiles) for maximum goodness-of-fit estimation and new types of moments (e.g., limited expected values) for moment matching estimation. At last, we will consider the case of multivariate distribution fitting. \section{Acknowledgments} \label{merci} %%%%%%%%%% The package would not have been at this stage without the stimulating contribution of R\'egis Pouillot and Jean-Baptiste Denis, especially for its conceptualization. We also want to thank R\'egis Pouillot for his very valuable comments on the first version of this paper. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The authors gratefully acknowledges the two anonymous referees and the Editor for useful and constructive comments. The remaining errors, of course, should be attributed to the authors alone. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bibliographystyle{apalike} \bibliography{jssfitdistrplus} \end{document} fitdistrplus/vignettes/Optimalgo.Rmd0000644000176200001440000004314512772503243017431 0ustar liggesusers--- title: Which optimization algorithm to choose? author: Marie Laure Delignette Muller, Christophe Dutang date: '`r Sys.Date()`' output: html_vignette: toc: true number_sections: yes vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Which optimization algorithm to choose?} %!\VignetteEncoding{UTF-8} \usepackage[utf8]{inputenc} --- ```{r setup, echo=FALSE, message=FALSE, warning=FALSE} require(fitdistrplus) require(knitr) #for kable() function set.seed(12345) options(digits = 3) ``` # Quick overview of main optimization methods We present very quickly the main optimization methods. Please refer to **Numerical Optimization (Nocedal \& Wright, 2006)** or **Numerical Optimization: theoretical and practical aspects (Bonnans, Gilbert, Lemarechal \& Sagastizabal, 2006)** for a good introduction. We consider the following problem $\min_x f(x)$ for $x\in\mathbb{R}^n$. ## Derivative-free optimization methods The Nelder-Mead method is one of the most well known derivative-free methods that use only values of $f$ to search for the minimum. It consists in building a simplex of $n+1$ points and moving/shrinking this simplex into the good direction. 1. set initial points $x_1, \dots, x_{n+1}$. 2. order points such that $f(x_1)\leq f(x_2)\leq\dots\leq f(x_{n+1})$. 3. compute $x_o$ as the centroid of $x_1, \dots, x_{n}$. 4. Reflection: + compute the reflected point $x_r = x_o + \alpha(x_o-x_{n+1})$. + **if** $f(x_1)\leq f(x_r)1$, once initiated by $d_1 = -g(x_1)$. $\beta_k$ are updated according a scheme: * $\beta_k = \frac{ g_k^T g_k}{g_{k-1}^T g_{k-1} }$: Fletcher-Reeves update, * $\beta_k = \frac{ g_k^T (g_k-g_{k-1} )}{g_{k-1}^T g_{k-1}}$: Polak-Ribiere update. There exists also three-term formula for computing direction $d_k = -g(x_k) + \beta_k d_{k-1}+\gamma_{k} d_t$ for $tt+1$ otherwise $\gamma_k=0$ if $k=t$. See Yuan (2006) for other well-known schemes such as Hestenses-Stiefel, Dixon or Conjugate-Descent. The three updates (Fletcher-Reeves, Polak-Ribiere, Beale-Sorenson) of the (non-linear) conjugate gradient are available in `optim`. ### Computing the stepsize $t_k$ Let $\phi_k(t) = f(x_k + t d_k)$ for a given direction/iterate $(d_k, x_k)$. We need to find conditions to find a satisfactory stepsize $t_k$. In literature, we consider the descent condition: $\phi_k'(0) < 0$ and the Armijo condition: $\phi_k(t) \leq \phi_k(0) + t c_1 \phi_k'(0)$ ensures a decrease of $f$. Nocedal \& Wright (2006) presents a backtracking (or geometric) approach satisfying the Armijo condition and minimal condition, i.e. Goldstein and Price condition. * set $t_{k,0}$ e.g. 1, $0 < \alpha < 1$, * **Repeat** until Armijo satisfied, + $t_{k,i+1} = \alpha \times t_{k,i}$. * **end Repeat** This backtracking linesearch is available in `optim`. ## Benchmark To simplify the benchmark of optimization methods, we create a `fitbench` function that computes the desired estimation method for all optimization methods. This function is currently not exported in the package. ```{r, echo=TRUE, eval=FALSE} fitbench <- function(data, distr, method, grad=NULL, control=list(trace=0, REPORT=1, maxit=1000), lower=-Inf, upper=+Inf, ...) ``` ```{r, echo=FALSE} fitbench <- fitdistrplus:::fitbench ``` # Numerical illustration with the beta distribution ## Log-likelihood function and its gradient for beta distribution ### Theoretical value The density of the beta distribution is given by $$ f(x; \delta_1,\delta_2) = \frac{x^{\delta_1-1}(1-x)^{\delta_2-1}}{\beta(\delta_1,\delta_2)}, $$ where $\beta$ denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. We recall that $\beta(a,b)=\Gamma(a)\Gamma(b)/\Gamma(a+b)$. There the log-likelihood for a set of observations $(x_1,\dots,x_n)$ is $$ \log L(\delta_1,\delta_2) = (\delta_1-1)\sum_{i=1}^n\log(x_i)+ (\delta_2-1)\sum_{i=1}^n\log(1-x_i)+ n \log(\beta(\delta_1,\delta_2)) $$ The gradient with respect to $a$ and $b$ is $$ \nabla \log L(\delta_1,\delta_2) = \left(\begin{matrix} \sum\limits_{i=1}^n\ln(x_i) - n\psi(\delta_1)+n\psi( \delta_1+\delta_2) \\ \sum\limits_{i=1}^n\ln(1-x_i)- n\psi(\delta_2)+n\psi( \delta_1+\delta_2) \end{matrix}\right), $$ where $\psi(x)=\Gamma'(x)/\Gamma(x)$ is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. ### `R` implementation As in the `fitdistrplus` package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in `grlnL`. Both the log-likelihood and its gradient are not exported. ```{r} lnL <- function(par, fix.arg, obs, ddistnam) fitdistrplus:::loglikelihood(par, fix.arg, obs, ddistnam) grlnlbeta <- fitdistrplus:::grlnlbeta ``` ## Random generation of a sample ```{r, fig.height=4, fig.width=4} #(1) beta distribution n <- 200 x <- rbeta(n, 3, 3/4) grlnlbeta(c(3, 4), x) #test hist(x, prob=TRUE) lines(density(x), col="red") curve(dbeta(x, 3, 3/4), col="green", add=TRUE) legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ``` ## Fit Beta distribution Define control parameters. ```{r} ctr <- list(trace=0, REPORT=1, maxit=1000) ``` Call `mledist` with the default optimization function (`optim` implemented in `stats` package) with and without the gradient for the different optimization methods. ```{r} unconstropt <- fitbench(x, "beta", "mle", grad=grlnlbeta, lower=0) ``` In the case of constrained optimization, `mledist` permits the direct use of `constrOptim` function (still implemented in `stats` package) that allow linear inequality constraints by using a logarithmic barrier. Use a exp/log transformation of the shape parameters $\delta_1$ and $\delta_2$ to ensure that the shape parameters are strictly positive. ```{r} dbeta2 <- function(x, shape1, shape2, log) dbeta(x, exp(shape1), exp(shape2), log=log) #take the log of the starting values startarg <- lapply(fitdistrplus:::start.arg.default(x, "beta"), log) #redefine the gradient for the new parametrization grbetaexp <- function(par, obs, ...) grlnlbeta(exp(par), obs) * exp(par) expopt <- fitbench(x, distr="beta2", method="mle", grad=grbetaexp, start=startarg) #get back to original parametrization expopt[c("fitted shape1", "fitted shape2"), ] <- exp(expopt[c("fitted shape1", "fitted shape2"), ]) ``` Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one). ## Results of the numerical investigation Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (`-B` stands for bounded version), (2) the original parametrization with the (true) gradient (`-B` stands for bounded version and `-G` for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (`-G` stands for gradient). ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt))], digits=3) ``` Using `llsurface`, we plot the log-likehood surface around the true value (green) and the fitted parameters (red). ```{r, fig.width=4, fig.height=4} llsurface(min.arg=c(0.1, 0.1), max.arg=c(7, 3), plot.arg=c("shape1", "shape2"), nlev=25, plot.np=50, data=x, distr="beta", back.col = FALSE) points(unconstropt[1,"BFGS"], unconstropt[2,"BFGS"], pch="+", col="red") points(3, 3/4, pch="x", col="green") ``` We can simulate bootstrap replicates using the `bootdist` function. ```{r, fig.width=4, fig.height=4} b1 <- bootdist(fitdist(x, "beta", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=3, h=3/4, col="red", lwd=1.5) ``` # Numerical illustration with the negative binomial distribution ## Log-likelihood function and its gradient for negative binomial distribution ### Theoretical value The p.m.f. of the Negative binomial distribution is given by $$ f(x; m,p) = \frac{\Gamma(x+m)}{\Gamma(m)x!} p^m (1-p)^x, $$ where $\Gamma$ denotes the beta function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. There exists an alternative representation where $\mu=m (1-p)/p$ or equivalently $p=m/(m+\mu)$. Thus, the log-likelihood for a set of observations $(x_1,\dots,x_n)$ is $$ \log L(m,p) = \sum_{i=1}^{n} \log\Gamma(x_i+m) -n\log\Gamma(m) -\sum_{i=1}^{n} \log(x_i!) + mn\log(p) +\sum_{i=1}^{n} {x_i}\log(1-p) $$ The gradient with respect to $m$ and $p$ is $$ \nabla \log L(m,p) = \left(\begin{matrix} \sum_{i=1}^{n} \psi(x_i+m) -n \psi(m) + n\log(p) \\ mn/p -\sum_{i=1}^{n} {x_i}/(1-p) \end{matrix}\right), $$ where $\psi(x)=\Gamma'(x)/\Gamma(x)$ is the digamma function, see the NIST Handbook of mathematical functions http://dlmf.nist.gov/. ### `R` implementation As in the `fitdistrplus` package, we minimize the opposite of the log-likelihood: we implement the opposite of the gradient in `grlnL`. ```{r} grlnlNB <- function(x, obs, ...) { m <- x[1] p <- x[2] n <- length(obs) c(sum(psigamma(obs+m)) - n*psigamma(m) + n*log(p), m*n/p - sum(obs)/(1-p)) } ``` ## Random generation of a sample ```{r, fig.height=4, fig.width=4} #(1) beta distribution n <- 200 trueval <- c("size"=10, "prob"=3/4, "mu"=10/3) x <- rnbinom(n, trueval["size"], trueval["prob"]) hist(x, prob=TRUE, ylim=c(0, .3)) lines(density(x), col="red") points(min(x):max(x), dnbinom(min(x):max(x), trueval["size"], trueval["prob"]), col="green") legend("topleft", lty=1, col=c("red","green"), leg=c("empirical", "theoretical")) ``` ## Fit a negative binomial distribution Define control parameters and make the benchmark. ```{r} ctr <- list(trace=0, REPORT=1, maxit=1000) unconstropt <- fitbench(x, "nbinom", "mle", grad=grlnlNB, lower=0) unconstropt <- rbind(unconstropt, "fitted prob"=unconstropt["fitted mu",] / (1+unconstropt["fitted mu",])) ``` In the case of constrained optimization, `mledist` permits the direct use of `constrOptim` function (still implemented in `stats` package) that allow linear inequality constraints by using a logarithmic barrier. Use a exp/log transformation of the shape parameters $\delta_1$ and $\delta_2$ to ensure that the shape parameters are strictly positive. ```{r} dnbinom2 <- function(x, size, prob, log) dnbinom(x, exp(size), 1/(1+exp(-prob)), log=log) #transform starting values startarg <- fitdistrplus:::start.arg.default(x, "nbinom") startarg$mu <- startarg$size / (startarg$size+startarg$mu) startarg <- list(size=log(startarg[[1]]), prob=log(startarg[[2]]/(1-startarg[[2]]))) #redefine the gradient for the new parametrization Trans <- function(x) c(exp(x[1]), plogis(x[2])) grNBexp <- function(par, obs, ...) grlnlNB(Trans(par), obs) * c(exp(par[1]), plogis(x[2])*(1-plogis(x[2]))) expopt <- fitbench(x, distr="nbinom2", method="mle", grad=grNBexp, start=startarg) #get back to original parametrization expopt[c("fitted size", "fitted prob"), ] <- apply(expopt[c("fitted size", "fitted prob"), ], 2, Trans) ``` Then we extract the values of the fitted parameters, the value of the corresponding log-likelihood and the number of counts to the function to minimize and its gradient (whether it is the theoretical gradient or the numerically approximated one). ## Results of the numerical investigation Results are displayed in the following tables: (1) the original parametrization without specifying the gradient (`-B` stands for bounded version), (2) the original parametrization with the (true) gradient (`-B` stands for bounded version and `-G` for gradient), (3) the log-transformed parametrization without specifying the gradient, (4) the log-transformed parametrization with the (true) gradient (`-G` stands for gradient). ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(unconstropt[, grep("G-", colnames(unconstropt))], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt), invert=TRUE)], digits=3) ``` ```{r, results='asis', echo=FALSE} kable(expopt[, grep("G-", colnames(expopt))], digits=3) ``` Using `llsurface`, we plot the log-likehood surface around the true value (green) and the fitted parameters (red). ```{r, fig.width=4, fig.height=4} llsurface(min.arg=c(5, 0.3), max.arg=c(15, 1), plot.arg=c("size", "prob"), nlev=25, plot.np=50, data=x, distr="nbinom", back.col = FALSE) points(unconstropt["fitted size","BFGS"], unconstropt["fitted prob","BFGS"], pch="+", col="red") points(trueval["size"], trueval["prob"], pch="x", col="green") ``` We can simulate bootstrap replicates using the `bootdist` function. ```{r, fig.width=4, fig.height=4} b1 <- bootdist(fitdist(x, "nbinom", method="mle", optim.method="BFGS"), niter=100, parallel="snow", ncpus=2) summary(b1) plot(b1) abline(v=trueval["size"], h=trueval["mu"], col="red", lwd=1.5) ``` # Conclusion Based on the two previous examples, we observe that all methods converge to the same point. This is rassuring. However, the number of function evaluations (and the gradient evaluations) is very different from a method to another. Furthermore, specifying the true gradient of the log-likelihood does not help at all the fitting procedure and generally slows down the convergence. Generally, the best method is the standard BFGS method or the BFGS method with the exponential transformation of the parameters. Since the exponential function is differentiable, the asymptotic properties are still preserved (by the Delta method) but for finite-sample this may produce a small bias. fitdistrplus/MD50000644000176200001440000001604713422076303013326 0ustar liggesusersa86253ea1ebcc15533281a9dc395653b *DESCRIPTION 20f3cb482ff305f377ad22328fd28f99 *NAMESPACE aa22ecf87d0fde452eed690ecd5d86d0 *R/CIcdfplot.R e51b1ec6ecfd544336918fa128d4d2cc *R/bootdist-graph.R 1ba3493ffdafe4178fc4a318c7a77dfe *R/bootdist.R 9c12eac5e8b4ca4a70c5f77f8cabdcde *R/bootdistcens.R bbddfd227894fc98935df59a1ae23657 *R/cdfcomp.R 4a03367e5b3a4bd4fa5a8b3275ef5bf0 *R/cdfcompcens.R a1885db7833d7335b8583357c8ac61e7 *R/coef.R 8fe3fced0329844c01ff9add2e829a45 *R/denscomp.R 6abb0e4f6a9c0c0fdddaa7c7323144ce *R/descdist.R 606f819da049c3e777856acbef74f23d *R/detectbound.R d76db67eade3aa3a6e8684b57ed232d7 *R/fitbench.R a822932b4adff0315ab1802dada204c3 *R/fitdist.R 8b7fe0d5f65c319686b848497d007f28 *R/fitdistcens.R 67e22cea82c9678989153a98e55c616c *R/gofstat.R 82d3e8c7e8cbef28e7e5e34aded990b4 *R/gradlogLik.R db3197c8134c94df984b960957ef3de7 *R/logLik-surface.R 63e5f7d6b4fd5e3146c8f54521a376b8 *R/logLik.R 7270db811a7166f9d38a73b7a61c5ebb *R/mgedist.R ef905b7365fcd470c187943f459c7612 *R/mledist.R 540d01970ffaf0c79d64db02aac71419 *R/mmedist.R bd2851f3db6111d020917249af8206f0 *R/plotdist.R 31575b8b0658b2e0127f73f3f39adaab *R/plotdistcens.R 50b2dc7941f692f1bb6bc0a1e1ea2091 *R/ppcomp.R 6a93e2941b7b85966c9f34be0063af35 *R/ppcompcens.R 7179e19315286e4da78ceef4f6025060 *R/prefit.R 397855dbef0187642af6e86c1234cb17 *R/qmedist.R ec89d819a26bc83f6c65c32215181f4f *R/qqcomp.R 882db5544e8a3cd62231cab3efc9dad6 *R/qqcompcens.R 7de8e4fb47be9a8ae4c44985162e8d9c *R/quantiles.R 3a2ef8f74dd2eddc677e94f43db8748c *R/util-cens2pseudo.R afe3b5bc936d28b19187894c4d6466f0 *R/util-checkparam.R d859a75735a458137ad26718dc9d2579 *R/util-checkparamlist.R 0776b6e417ce2d77b759c6d97ca19bd8 *R/util-getparam.R 0cfd3cdaf4bcd0ed07e58c7ae669927f *R/util-isint.R a9e1c0221bf88a227aff1bdd9de7a2f8 *R/util-manageparam.R db4d7cb7667ca55c88efa5d88e629ea9 *R/util-startarg.R bf7ab2921dc86db9e7ad9bcadb57a0c6 *R/util-testdensity.R efcc748256f6f7912a7815e952e2c5c2 *R/util-transform.R 6604bda627766a6387c4ed31c28044f4 *R/util-wtdstat.R 3e809f399b41fa5574e15d86c7544ae5 *R/vcov.R 9ec9feb6f4be378d138c2f283a892d0c *build/vignette.rds 8aeb7eb0fb1218a9eac135e7e0200639 *data/danishmulti.rda 54ef81c0377c3e6ac8479ffd85499bba *data/danishuni.rda 1c644a363be0660d5db8f587cfe8938a *data/dataFAQlog1.rda c7efd1d1b67d6a4348f65dff31fe4d8c *data/dataFAQscale1.rda 66166ff91b40cc18fc95b03ee5f45ba6 *data/dataFAQscale2.rda e6c898d45569b435ec40b8f319619044 *data/endosulfan.rda c5561b18f5f5ade0e9ab40055094a26a *data/fluazinam.rda 174c5238de9d810f191b011b4ae8dc8f *data/groundbeef.rda 044cf443a7bf2d86bd8352665ed3f068 *data/salinity.rda 594ad11436b821c73706f8dc5c4d95d3 *data/smokedfish.rda e0d960a9181b15cad54f95de005532e6 *data/toxocara.rda 8adc6a30da9d0203a4833da2d4acf667 *inst/CITATION 26b3d7fb8fc118557879854d67dd2f32 *inst/NEWS b4e99be5d826c8c460337c044af40b9d *inst/doc/FAQ.R 92f7520f39d7945cefafc31fd1d95627 *inst/doc/FAQ.Rmd ee5e31904a6ca63d731f9f55a0a4690c *inst/doc/FAQ.html c23c13b2d01a5f112c3f5b8241fba3d4 *inst/doc/Optimalgo.R edc390a166b9d46f26c1b107dfa7aa50 *inst/doc/Optimalgo.Rmd a082f5db7af5f24328322a6f7204f904 *inst/doc/Optimalgo.html 7f9bd0c160565231b2648b063c237f9a *inst/doc/paper2JSS.R 7edbb43cb213d76ad70398b20cb6e8c5 *inst/doc/paper2JSS.Rnw 61cb2c3ecae2e66ae327e2b3f583c8f1 *inst/doc/paper2JSS.pdf 20830a29fc715f5ab1b0dea299fea501 *man/CIcdfplot.Rd e9613893126040461e0ce26364563306 *man/bootdist.Rd e450c9bb067b72f35287b33690c93d68 *man/bootdistcens.Rd 638b4ab2997f4943fc2d94a3a37e308b *man/danish.Rd 57ef4b67287c6ce677dda6cdd371f1f2 *man/dataFAQ.Rd c2754ae68b764948f34a274f594ae4d7 *man/descdist.Rd 1d2e341daf16c87213966ace5f0104b5 *man/detectbound.Rd 41a46d942bff95e4379ea1480ec92a0d *man/endosulfan.Rd c702fb46567fc2cbf412354e7797ecc2 *man/fitdist.Rd 2dc27afc3ce41fa4a390df7bd4591fe7 *man/fitdistcens.Rd 68de64bd8547a9b2e1580cd001ed577d *man/fitdistrplus.Rd 9faa268955dfd31721d62bef465ce096 *man/fluazinam.Rd 63eeea9aa01a89d47e38a12328cc0a82 *man/gofstat.Rd e4f2b684682f9dc1b60fa02625dfa425 *man/graphcomp.Rd 825ff7ac947ce3f9facea07379045f88 *man/graphcompcens.Rd ed1d0fae7fa5edf3164fff232db294f0 *man/groundbeef.Rd ee8b7658672b56b4f33cfbc613d227b7 *man/logLik-plot.Rd 5933a05cfe4ed6b5580b917c4bdbb1af *man/logLik-surface.Rd ca1d8cd2153f1e027d03594ecaebf622 *man/mgedist.Rd f7b37377785149c729b95133fcb2c374 *man/mledist.Rd d9367e16b97b282f81af6192c5f28404 *man/mmedist.Rd bb3a2eb9448224cde71bb1e2dee71c8f *man/plotdist.Rd 66b770f93e194e5d9e5546ff71ffa232 *man/plotdistcens.Rd 783ac1a62b6a8b26b02ade7cd3b178c9 *man/prefit.Rd 3281935f61136d7fb8947b490e8be972 *man/qmedist.Rd 069173ca76536fae47d9a12b554d513f *man/quantiles.Rd b68d3a42f243e2848e4259d4a200bd72 *man/salinity.Rd 98c2c4e867b961158683b4de514d8d4a *man/smokedfish.Rd 0415cac1636b88677b1c29b65b021803 *man/toxocara.Rd 32608e144bd4f1d4f831c6da5684946f *tests/t-CIcdfplot.R 143ed197e77dca3c06d4b9a5c90f07c4 *tests/t-bootdist.R 5a771719f073b19cd3263fa01b741be7 *tests/t-bootdistcens.R da95659e9d7991b9425ec93e0007332e *tests/t-cdfcomp.R 36dd88e9fcd7eb1d4091410064e373bf *tests/t-cdfcompcens.R a2b09a8aee03b9c5a4789277987a4ba1 *tests/t-cvg-algo.R 955a0f48602fa752c891f48ff45dd594 *tests/t-denscomp.R 7388eb35be3a40f86db4c688b79bcc7a *tests/t-descdist.R aa631957ac1f0be4a3143974ce0fb8b4 *tests/t-detectbound.R f426c09ab6d24c9b4f805e1ba23b3584 *tests/t-fitbench.R 2b657784cd017697063e5ad30c617dfc *tests/t-fitdist-customoptim.R fe7dc60196552a9f563e7f41439d49be *tests/t-fitdist.R 3d47c6d6216c9e5068ef67548cd0eb22 *tests/t-fitdistcens.R 5b7e2f4e1b970622d8ee100c76c99554 *tests/t-getparam.R c03e59e7e47210e411935bcd7dc30302 *tests/t-gofstat.R a513487b9264a36f1b18f285763339c3 *tests/t-init-actuar.R 3c8a93146ee8d4b39acbd54035123d31 *tests/t-llplot.R 986f32254a74010c6ebd151598744a0f *tests/t-lnL-surf.R bf445663f525ef8c9ab1baeb9b5677c5 *tests/t-logLik-vcov-coef.R 86c01974a09c93f1697d0c1036cf35cd *tests/t-manageparam.R 8177453038fb960844b7ee3467951418 *tests/t-mgedist.R 6717be50d96c5f4f3a42658109d13a30 *tests/t-mledist-cens.R 067eaab04d070fd6d0e71491be913c1a *tests/t-mledist-nocens.R 356e33578513261ebbadf96fc6b9b6ec *tests/t-mmedist.R 82e3b99e3ec105e1bac5792f64c5c583 *tests/t-parallel.R d3c64fb604b6e03e0d9ff562ea3b5012 *tests/t-plotdist.R 61dcbc90c4785098b68c6213085d4b9a *tests/t-plotdistcens.R 913332015f29a0a13661118e982c5210 *tests/t-ppcomp.R 7f5e70d0c9409b874d527ece15f5077a *tests/t-ppcompcens.R 3c318e51c403ea2cdb943a9923817c6e *tests/t-prefit.R 5fd1571da99126cec2bd956a63fe2d0d *tests/t-qme-discrete.R 050974fe9b6bd46febd469ed64044f53 *tests/t-qmedist.R 28afaccb4aa6ab3beb4c814cc8b21b07 *tests/t-qqcomp.R f3d8789a15fd0c9692eae814eb0e3909 *tests/t-qqcompcens.R 0091d2e1b68e2b57b1b8d4ec26f46461 *tests/t-quantiledist.R 94332098f8609f629854eaf842b38451 *tests/t-startfixarg-overall.R 7d1e7a2ada0542a3cad30c88f2420b90 *tests/t-startingvalues.R 4a6da9856d5656fe52ea7e9a43d2eb2e *tests/t-util-testdensity.R a6e91ae2d5083bf94697ab0468fe7423 *tests/t-weird-ppcomp-cens.R cb0be7f5e63736f49f2cc6a4aa575566 *tests/t-weird-qqcomp-cens.R 92f7520f39d7945cefafc31fd1d95627 *vignettes/FAQ.Rmd edc390a166b9d46f26c1b107dfa7aa50 *vignettes/Optimalgo.Rmd 79c969a393c5922c5b6f9007516feb78 *vignettes/jssfitdistrplus.bib 7edbb43cb213d76ad70398b20cb6e8c5 *vignettes/paper2JSS.Rnw fitdistrplus/build/0000755000176200001440000000000013422065107014105 5ustar liggesusersfitdistrplus/build/vignette.rds0000644000176200001440000000051013422065107016440 0ustar liggesusers‹}R9OÃ0vsô‚"¤nLÞ˜ÈÀŽP¥* Ð V»Ä"±í(*œ;8ÅDˆ!~ï{Ç÷®Ïê (ð¶G·ràÈÛOgò¶cà¼Mý¦ÈÿüGyìÏ @x¾˜™Å(—0tÆ(¥é¨>€ð~™:uÐ5ÌÓ4Íg¿£¬@JõF˜Úc$[{Eƒö_¸+ýŒfitdistrplus/DESCRIPTION0000644000176200001440000000425513422076303014522 0ustar liggesusersPackage: fitdistrplus Title: Help to Fit of a Parametric Distribution to Non-Censored or Censored Data Version: 1.0-14 Authors@R: c(person("Marie-Laure", "Delignette-Muller", role = "aut", email = "marielaure.delignettemuller@vetagro-sup.fr"), person("Christophe", "Dutang", role = "aut", email = "christophe.dutang@ensimag.fr"), person("Regis", "Pouillot", role = "ctb", email = "rpouillot@yahoo.fr"), person("Jean-Baptiste", "Denis", role = "ctb", email = "jbdenis@jouy.inra.fr"), person("Aurelie", "Siberchicot", role = c("aut", "cre"), email = "aurelie.siberchicot@univ-lyon1.fr")) Description: Extends the fitdistr() function (of the MASS package) with several functions to help the fit of a parametric distribution to non-censored or censored data. Censored data may contain left censored, right censored and interval censored values, with several lower and upper bounds. In addition to maximum likelihood estimation (MLE), the package provides moment matching (MME), quantile matching (QME) and maximum goodness-of-fit estimation (MGE) methods (available only for non-censored data). Weighted versions of MLE, MME and QME are available. See e.g. Casella & Berger (2002). Statistical inference. Pacific Grove. Depends: R (>= 3.2.0), MASS, grDevices, survival, methods, npsurv Imports: stats Suggests: actuar, rgenoud, mc2d, gamlss.dist, knitr, knitcitations, ggplot2, GeneralizedHyperbolic VignetteBuilder: knitr BuildVignettes: true License: GPL (>= 2) Encoding: UTF-8 URL: MailingList: http://listes.univ-lyon1.fr/wws/info/fitdist-users; https://lbbe.univ-lyon1.fr/fitdistrplus.html, http://riskassessment.r-forge.r-project.org Contact: Marie-Laure Delignette-Muller or Christophe Dutang NeedsCompilation: no Packaged: 2019-01-23 13:21:11 UTC; aurelie Author: Marie-Laure Delignette-Muller [aut], Christophe Dutang [aut], Regis Pouillot [ctb], Jean-Baptiste Denis [ctb], Aurelie Siberchicot [aut, cre] Maintainer: Aurelie Siberchicot Repository: CRAN Date/Publication: 2019-01-23 14:40:03 UTC fitdistrplus/man/0000755000176200001440000000000013344222463013564 5ustar liggesusersfitdistrplus/man/smokedfish.Rd0000644000176200001440000000331212772503244016211 0ustar liggesusers\name{smokedfish} \alias{smokedfish} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Contamination data of Listeria monocytogenes in smoked fish } \description{ Contamination data of \emph{Listeria monocytogenes} in smoked fish on the Belgian market in the period 2005 to 2007. } \usage{ data(smokedfish) } %- maybe also 'usage' for other objects documented here. \format{ \code{smokedfish} is a data frame with 2 columns named left and right, describing each observed value of \emph{Listeria monocytogenes} concentration (in CFU/g) as an interval. The left column contains either NA for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either NA for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. } \source{ Busschaert, P., Geereard, A.H., Uyttendaele, M., Van Impe, J.F., 2010. Estimating distributions out of qualitative and (semi) quantitative microbiological contamination data for use in risk assessment. \emph{International Journal of Food Microbiology}. \bold{138}, 260-269. } %\references{ } \examples{ # (1) load of data # data(smokedfish) # (2) plot of data in CFU/g # plotdistcens(smokedfish) # (3) plot of transformed data in log10[CFU/g] # Clog10 <- log10(smokedfish) plotdistcens(Clog10) # (4) Fit of a normal distribution to data in log10[CFU/g] # fitlog10 <- fitdistcens(Clog10,"norm") summary(fitlog10) plot(fitlog10) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/fitdistrplus.Rd0000644000176200001440000000737012772503244016621 0ustar liggesusers\name{fitdistrplus-package} \alias{fitdistrplus} \alias{fitdistrplus-package} \title{Overview of the \pkg{fitdistrplus} package} \description{ The idea of this package emerged in 2008 from a collaboration between JB Denis, R Pouillot and ML Delignette who at this time worked in the area of quantitative risk assessment. The implementation of this package was a part of a more general project named "Risk assessment with R" gathering different packages and hosted in \href{http://r-forge.r-project.org/projects/riskassessment/}{R-forge}. The \pkg{fitdistrplus} package was first written by ML Delignette-Muller and made available in \href{https://cran.r-project.org/package=fitdistrplus}{CRAN} on 2009 and presented at the \href{https://www.r-project.org/conferences/useR-2009/}{2009 useR conference} in Rennes. A few months after, C Dutang joined the project by starting to participate to the implementation of the \pkg{fitdistrplus} package. The package has also been presented at \href{https://www.r-project.org/conferences/useR-2011/}{2011 useR conference}, \href{http://r2013-lyon.sciencesconf.org/}{2eme rencontres R} in 2013. Three vignettes are available within the package: \itemize{ \item a \href{../doc/paper2JSS.pdf}{general overview} of the package published in the \href{https://www.jstatsoft.org/article/view/v064i04}{Journal of Statistical Software}, \item a html document answering the most \href{../doc/FAQ.html}{Frequently Asked Questions}, \item a html document presenting a \href{../doc/Optimalgo.html}{benchmark of optimization algorithms} when finding parameters. } The \pkg{fitdistrplus} package is a general package that aims at helping the fit of univariate parametric distributions to censored or non-censored data. The two main functions are \code{\link{fitdist}} for fit on non-censored data and \code{\link{fitdistcens}} for fit on censored data. The choice of candidate distributions to fit may be helped using functions \code{\link{descdist}} and \code{\link{plotdist}} for non-censored data and \code{\link{plotdistcens}} for censored data). Using functions \code{\link{fitdist}} and \code{\link{fitdistcens}}, different methods can be used to estimate the distribution parameters: \itemize{ \item maximum likelihood estimation by default (\code{\link{mledist}}), \item moment matching estimation (\code{\link{mmedist}}), \item quantile matching estimation (\code{\link{qmedist}}), \item maximum goodness-of-fit estimation (\code{\link{mgedist}}). } For classical distributions initial values are automatically calculated if not provided by the user. Graphical functions \code{\link{plotdist}} and \code{\link{plotdistcens}} can be used to help a manual calibration of initial values for parameters of non-classical distributions. Function \code{\link{prefit}} is proposed to help the definition of good starting values in the special case of constrained parameters. In the case where maximum likelihood is chosen as the estimation method, function \code{\link{llplot}} enables to visualize loglikelihood contours. The goodness-of-fit of fitted distributions (a single fit or multiple fits) can be explored using different graphical functions (\code{\link{cdfcomp}}, \code{\link{denscomp}}, \code{\link{qqcomp}} and \code{\link{ppcomp}} for non-censored data and \code{\link{cdfcompcens}} for censored data). Goodness-of-fit statistics are also provided for non-censored data using function \code{\link{gofstat}}. Bootstrap is proposed to quantify the uncertainty on parameter estimates (functions \code{\link{bootdist}} and \code{\link{bootdistcens}}) and also to quantify the uncertainty on CDF or quantiles estimated from the fitted distribution (\code{\link{quantile}} and \code{\link{CIcdfplot}}). } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } fitdistrplus/man/plotdistcens.Rd0000644000176200001440000001703513330262006016564 0ustar liggesusers\name{plotdistcens} \alias{plotdistcens} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Plot of empirical and theoretical distributions for censored data} \description{ Plots an empirical distribution for censored data with a theoretical one if specified. } \usage{ plotdistcens(censdata, distr, para, leftNA = -Inf, rightNA = Inf,NPMLE = TRUE, Turnbull = NULL, Turnbull.confint = FALSE, NPMLE.method = "Wang", \dots) } \arguments{ \item{censdata}{ A dataframe of two columns respectively named \code{left} and \code{right}, describing each observed value as an interval. The \code{left} column contains either \code{NA} for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The \code{right} column contains either \code{NA} for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. } \item{distr}{ A character string \code{"name"} naming a distribution, for which the corresponding density function \code{dname} and the corresponding distribution function \code{pname} must be defined, or directly the density function.} \item{para}{ A named list giving the parameters of the named distribution. This argument may be omitted only if \code{distr} is omitted. } \item{leftNA}{ the real value of the left bound of left censored observations : \code{-Inf} or a finite value such as \code{0} for positive data for example.} \item{rightNA}{ the real value of the right bound of right censored observations : \code{Inf} or a finite value such as a realistic maximum value.} \item{NPMLE}{ if TRUE an NPMLE (nonparametric maximum likelihood estimate) technique is used to estimate the cdf curve of the censored data and previous arguments \code{leftNA} and \code{rightNA} are not used (see details)} \item{Turnbull}{ Turnbull is a deprecated argument. You should now use \code{NPMLE} to choose to use an NPMLE technique (or not) and \code{NPMLE.method} to choose the method.} \item{Turnbull.confint}{ if TRUE confidence intervals will be added to the Turnbull plot. In that case NPMLE.method is forced to \code{"Turnbull"}} \item{NPMLE.method}{Two NPMLE techniques are provided, \code{"Wang"}, the default one, which is implemented in the package npsurv and \code{"Turnbull"}, an older one, which is implemented in the package survival (see details). Only \code{"Wang"} enables the derivation of a Q-Q plot and a P-P plot.} \item{\dots}{ further graphical arguments passed to other methods. The title of the plot can be modified using the argument \code{main} only for the CDF plot.} } \details{ If \code{NPMLE} is \code{TRUE}, and \code{NPMLE.method} is \code{"Wang"}, empirical and, if specified, theoretical distributions are plotted in cdf using either the constrained Newton method (Wang, 2008) or the hierarchical constrained Newton method (Wang, 2013) to compute the overall empirical cdf curve, by calls to functions \code{\link{npsurv}} from the \code{npsurv} package. In this plot, grey rectangles represent areas where the empirical distribution function is not unique. In cases where a theoretical distribution is specified, two goodness-of-fit plots are also provided, a Q-Q plot (plot of the quantiles of the theoretical fitted distribution (x-axis) against the empirical quantiles of the data) and a P-P plot (i.e. for each value of the data set, plot of the cumulative density function of the fitted distribution (x-axis) against the empirical cumulative density function (y-axis)). Grey rectangles in a Q-Q plot or a P-P plot also represent areas of non uniqueness of empirical quantiles or probabilities, directly derived from non uniqueness areas of the empirical cumulative distribution. If \code{NPMLE} is \code{TRUE}, and \code{NPMLE.method} is \code{"Turnbull"}, empirical and, if specified, theoretical distributions are plotted in cdf using the EM approach of Turnbull (Turnbull, 1974) to compute the overall empirical cdf curve, with confidence intervals if \code{Turnbull.confint} is \code{TRUE}, by calls to functions \code{\link{survfit}} and \code{\link{plot.survfit}} from the \code{survival} package. If \code{NPMLE} is \code{FALSE} empirical and, if specified, theoretical distributions are plotted in cdf, with data directly reported as segments for interval, left and right censored data, and as points for non-censored data. Before plotting, observations are ordered and a rank r is associated to each of them. Left censored observations are ordered first, by their right bounds. Interval censored and non censored observations are then ordered by their mid-points and, at last, right censored observations are ordered by their left bounds. If \code{leftNA} (resp. \code{rightNA}) is finite, left censored (resp. right censored) observations are considered as interval censored observations and ordered by mid-points with non-censored and interval censored data. It is sometimes necessary to fix \code{rightNA} or \code{leftNA} to a realistic extreme value, even if not exactly known, to obtain a reasonable global ranking of observations. After ranking, each of the n observations is plotted as a point (one x-value) or a segment (an interval of possible x-values), with an y-value equal to r/n, r being the rank of each observation in the global ordering previously described. This second method may be interesting but is certainly less rigorous than the Turnbull method that should be prefered. } \seealso{ \code{\link{plotdist}}, \code{\link{survfit.formula}}. } \references{ Turnbull BW (1974), \emph{Nonparametric estimation of a survivorship function with doubly censored data}. Journal of American Statistical Association, 69, 169-173. Wang Y (2008), \emph{Dimension-reduced nonparametric maximum likelihood computation for interval-censored data}. Computational Statistics & Data Analysis, 52, 2388-2402. Wang Y and Taylor SM (2013), \emph{Efficient computation of nonparametric survival functions via a hierarchical mixture formulation}. Statistics and Computing, 23, 713-725. Wang, Y., & Fani, S. (2018), \emph{Nonparametric maximum likelihood computation of a U-shaped hazard function}. Statistics and Computing, 28(1), 187-200. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } %\note{ } \examples{ # (1) Plot of an empirical censored distribution (censored data) as a CDF # using the default Turnbull method # data(smokedfish) d1 <- as.data.frame(log10(smokedfish)) plotdistcens(d1) # (2) Add the CDF of a normal distribution # plotdistcens(d1,"norm",para=list(mean=-1.6,sd=1.5)) # (3) Various plots of the same empirical distribution # # default Wang plot plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Wang") # Turnbull plot plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Turnbull") # Turnbull plot with confidence intervals plotdistcens(d1, NPMLE = TRUE, NPMLE.method = "Turnbull", Turnbull.confint = TRUE) # with intervals and points plotdistcens(d1,rightNA=3, NPMLE = FALSE) # with intervals and points # defining a minimum value for left censored values plotdistcens(d1,leftNA=-3, NPMLE = FALSE) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/detectbound.Rd0000644000176200001440000000276712772503244016372 0ustar liggesusers\name{detectbound} \alias{detectbound} \title{ Detect bounds for density function} \description{ Manual detection of bounds of parameter of a density function/ } \usage{ detectbound(distname, vstart, obs, fix.arg=NULL, echo=FALSE) } \arguments{ \item{distname}{ A character string \code{"name"} naming a distribution for which the corresponding density function \code{dname} must be classically defined. } \item{vstart}{A named vector giving the initial values of parameters of the named distribution. } \item{obs}{ A numeric vector for non censored data. } \item{fix.arg}{An optional named vector giving the values of fixed parameters of the named distribution. Default to \code{NULL}.} \item{echo}{A logical to show some traces.} } \details{ This function manually tests the following bounds : -1, 0, and 1. } \value{ \code{detectbound} returns a 2-row matrix with the lower bounds in the first row and the upper bounds in the second row. } \seealso{ \code{\link{fitdist}}. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Christophe Dutang and Marie-Laure Delignette-Muller. } \examples{ #case where the density returns a Not-an-Numeric value. detectbound("exp", c(rate=3), 1:10) detectbound("binom", c(size=3, prob=1/2), 1:10) detectbound("nbinom", c(size=3, prob=1/2), 1:10) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/mgedist.Rd0000644000176200001440000002035713310705056015513 0ustar liggesusers\name{mgedist} \alias{mgedist} \alias{mge} \title{ Maximum goodness-of-fit fit of univariate continuous distributions} \description{ Fit of univariate continuous distribution by maximizing goodness-of-fit (or minimizing distance) for non censored data. } \usage{ mgedist(data, distr, gof = "CvM", start = NULL, fix.arg = NULL, optim.method = "default", lower = -Inf, upper = Inf, custom.optim = NULL, silent = TRUE, gradient = NULL, checkstartfix=FALSE, \dots) } \arguments{ \item{data}{ A numeric vector for non censored data. } \item{distr}{ A character string \code{"name"} naming a distribution for which the corresponding quantile function \code{qname} and the corresponding density distribution \code{dname} must be classically defined. } \item{gof}{A character string coding for the name of the goodness-of-fit distance used : "CvM" for Cramer-von Mises distance,"KS" for Kolmogorov-Smirnov distance, "AD" for Anderson-Darling distance, "ADR", "ADL", "AD2R", "AD2L" and "AD2" for variants of Anderson-Darling distance described by Luceno (2006).} \item{start}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). } \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated.} \item{optim.method}{ \code{"default"} or optimization method to pass to \code{\link{optim}}. } \item{lower}{ Left bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{upper}{ Right bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{custom.optim}{a function carrying the optimization.} \item{silent}{A logical to remove or show warnings when bootstraping.} \item{gradient}{A function to return the gradient of the gof distance for the \code{"BFGS"}, \code{"CG"} and \code{"L-BFGS-B"} methods. If it is \code{NULL}, a finite-difference approximation will be used.} \item{checkstartfix}{A logical to test starting and fixed values. Do not change it.} \item{\dots}{further arguments passed to the \code{\link{optim}}, \code{\link{constrOptim}} or \code{custom.optim} function.} } \details{ The \code{mgedist} function numerically maximizes goodness-of-fit, or minimizes a goodness-of-fit distance coded by the argument \code{gof}. One may use one of the classical distances defined in Stephens (1986), the Cramer-von Mises distance (\code{"CvM"}), the Kolmogorov-Smirnov distance (\code{"KS"}) or the Anderson-Darling distance (\code{"AD"}) which gives more weight to the tails of the distribution, or one of the variants of this last distance proposed by Luceno (2006). The right-tail AD (\code{"ADR"}) gives more weight only to the right tail, the left-tail AD (\code{"ADL"}) gives more weight only to the left tail. Either of the tails, or both of them, can receive even larger weights by using second order Anderson-Darling Statistics (using \code{"AD2R"}, \code{"AD2L"} or \code{"AD2"}). The optimization process is the same as \code{\link{mledist}}, see the 'details' section of that function. This function is not intended to be called directly but is internally called in \code{\link{fitdist}} and \code{\link{bootdist}}. This function is intended to be used only with continuous distributions and weighted maximum goodness-of-fit estimation is not allowed. NB: if your data values are particularly small or large, a scaling may be needed before the optimization process. See example (4). } \value{ \code{mgedist} returns a list with following components, \item{estimate}{ the parameter estimates.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error. } \item{value}{the minimal value reached for the criterion to minimize.} \item{hessian}{ a symmetric matrix computed by \code{\link{optim}} as an estimate of the Hessian at the solution found or computed in the user-supplied optimization function. } \item{optim.function}{the name of the optimization function used for maximum likelihood.} \item{optim.method}{when \code{\link{optim}} is used, the name of the algorithm used, the field \code{method} of the \code{custom.optim} function otherwise.} \item{fix.arg}{the named list giving the values of parameters of the named distribution that must kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} \item{counts}{A two-element integer vector giving the number of calls to the log-likelihood function and its gradient respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to log-likelihood function to compute a finite-difference approximation to the gradient. \code{counts} is returned by \code{\link{optim}} or the user-supplied function or set to \code{NULL}.} \item{optim.message}{A character string giving any additional information returned by the optimizer, or \code{NULL}. To understand exactly the message, see the source code.} \item{loglik}{ the log-likelihood value. } \item{gof}{ the code of the goodness-of-fit distance maximized. } } \seealso{ \code{\link{mmedist}}, \code{\link{mledist}}, \code{\link{qmedist}}, \code{\link{fitdist}} for other estimation methods. } \references{ Luceno A (2006), \emph{Fitting the generalized Pareto distribution to data using maximum goodness-of-fit estimators}. Computational Statistics and Data Analysis, 51, 904-917. Stephens MA (1986), \emph{Tests based on edf statistics}. In Goodness-of-fit techniques (D'Agostino RB and Stephens MA, eds), Marcel Dekker, New York, pp. 97-194. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) Fit of a Weibull distribution to serving size data by maximum # goodness-of-fit estimation using all the distances available # data(groundbeef) serving <- groundbeef$serving mgedist(serving, "weibull", gof="CvM") mgedist(serving, "weibull", gof="KS") mgedist(serving, "weibull", gof="AD") mgedist(serving, "weibull", gof="ADR") mgedist(serving, "weibull", gof="ADL") mgedist(serving, "weibull", gof="AD2R") mgedist(serving, "weibull", gof="AD2L") mgedist(serving, "weibull", gof="AD2") # (2) Fit of a uniform distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # set.seed(1234) u <- runif(100,min=5,max=10) mgedist(u,"unif",gof="CvM") mgedist(u,"unif",gof="KS") # (3) Fit of a triangular distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # \dontrun{ require(mc2d) set.seed(1234) t <- rtriang(100,min=5,mode=6,max=10) mgedist(t,"triang",start = list(min=4, mode=6,max=9),gof="CvM") mgedist(t,"triang",start = list(min=4, mode=6,max=9),gof="KS") } # (4) scaling problem # the simulated dataset (below) has particularly small values, hence without scaling (10^0), # the optimization raises an error. The for loop shows how scaling by 10^i # for i=1,...,6 makes the fitting procedure work correctly. set.seed(1234) x2 <- rnorm(100, 1e-4, 2e-4) for(i in 6:0) cat(i, try(mgedist(x*10^i,"cauchy")$estimate, silent=TRUE), "\n") } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/quantiles.Rd0000644000176200001440000001701712772503244016071 0ustar liggesusers\name{quantiles} \alias{quantiles} \alias{quantile.fitdist} \alias{quantile.fitdistcens} \alias{quantile.bootdist} \alias{quantile.bootdistcens} \alias{print.quantile.fitdist} \alias{print.quantile.fitdistcens} \alias{print.quantile.bootdist} \alias{print.quantile.bootdistcens} \title{Quantile estimation from a fitted distribution} \description{ Quantile estimation from a fitted distribution, optionally with confidence intervals calculated from the bootstrap result. } \usage{ \method{quantile}{fitdist}(x, probs = seq(0.1, 0.9, by=0.1), \dots) \method{quantile}{fitdistcens}(x, probs = seq(0.1, 0.9, by=0.1), \dots) \method{quantile}{bootdist}(x, probs = seq(0.1, 0.9, by=0.1),CI.type = "two.sided", CI.level = 0.95, \dots) \method{quantile}{bootdistcens}(x, probs = seq(0.1, 0.9, by=0.1),CI.type = "two.sided", CI.level = 0.95, \dots) \method{print}{quantile.fitdist}(x, \dots) \method{print}{quantile.fitdistcens}(x, \dots) \method{print}{quantile.bootdist}(x, \dots) \method{print}{quantile.bootdistcens}(x, \dots) } \arguments{ \item{x}{ An object of class \code{"fitdist"}, \code{"fitdistcens"}, \code{"bootdist"}, \code{"bootdistcens"} or \code{"quantile.fitdist"}, \code{"quantile.fitdistcens"}, \code{"quantile.bootdist"}, \code{"quantile.bootdistcens"} for the \code{print} generic function. } \item{probs}{ A numeric vector of probabilities with values in [0, 1] at which quantiles must be calculated.} \item{CI.type}{ Type of confidence intervals : either \code{"two.sided"} or one-sided intervals (\code{"less"} or \code{"greater"}).} \item{CI.level}{ The confidence level.} \item{\dots}{Further arguments to be passed to generic functions.} } \details{ Quantiles of the parametric distribution are calculated for each probability specified in \code{probs}, using the estimated parameters. When used with an object of class \code{"bootdist"} or \code{"bootdistcens"}, percentile confidence intervals and medians etimates are also calculated from the bootstrap result. If \code{CI.type} is \code{two.sided}, the \code{CI.level} two-sided confidence intervals of quantiles are calculated. If \code{CI.type} is \code{less} or \code{greater}, the \code{CI.level} one-sided confidence intervals of quantiles are calculated. The print functions show the estimated quantiles with percentile confidence intervals and median estimates when a bootstrap resampling has been done previously, and the number of bootstrap iterations for which the estimation converges if it is inferior to the whole number of bootstrap iterations. } \value{ \code{quantile} returns a list with 2 components (the first two described below) when called with an object of class \code{"fitdist"} or \code{"fitdistcens"} and 8 components (described below) when called with an object of class \code{"bootdist"} or \code{"bootdistcens"} : \item{quantiles}{ a dataframe containing the estimated quantiles for each probability value specified in the argument \code{probs} (one row, and as many columns as values in \code{probs}).} \item{probs}{the numeric vector of probabilities at which quantiles are calculated.} \item{bootquant }{ A data frame containing the bootstraped values for each quantile (many rows, as specified in the call to \code{\link{bootdist}} in the argument \code{niter}, and as many columns as values in \code{probs})} \item{quantCI}{ If \code{CI.type} is \code{two.sided}, the two bounds of the \code{CI.level} percent two.sided confidence interval for each quantile (two rows and as many columns as values in \code{probs}). If \code{CI.type} is \code{less}, right bound of the \code{CI.level} percent one.sided confidence interval for each quantile (one row). If \code{CI.type} is \code{greater}, left bound of the \code{CI.level} percent one.sided confidence interval for each quantile (one row). } \item{quantmedian}{Median of bootstrap estimates (per probability).} \item{CI.type}{ Type of confidence interval: either \code{"two.sided"} or one-sided intervals (\code{"less"} or \code{"greater"}).} \item{CI.level}{ The confidence level.} \item{nbboot}{ The number of samples drawn by bootstrap.} \item{nbconverg}{ The number of iterations for which the optimization algorithm converges.} } \seealso{ \code{\link{fitdist}}, \code{\link{bootdist}}, \code{\link{fitdistcens}}, \code{\link{bootdistcens}} and \code{\link{CIcdfplot}}. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) Fit of a normal distribution on acute toxicity log-transformed values of # endosulfan for nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5, 10 and 20 percent quantile # values of the fitted distribution, which are called the 5, 10, 20 percent hazardous # concentrations (HC5, HC10, HC20) in ecotoxicology, followed with calculations of their # confidence intervals with various definitions, from a small number of bootstrap # iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") quantile(fln, probs = c(0.05, 0.1, 0.2)) bln <- bootdist(fln, bootmethod="param", niter=101) quantile(bln, probs = c(0.05, 0.1, 0.2)) quantile(bln, probs = c(0.05, 0.1, 0.2), CI.type = "greater") quantile(bln, probs = c(0.05, 0.1, 0.2), CI.level = 0.9) # (2) Draw of 95 percent confidence intervals on quantiles of the # previously fitted distribution # cdfcomp(fln) q1 <- quantile(bln, probs = seq(0,1,length=101)) points(q1$quantCI[1,],q1$probs,type="l") points(q1$quantCI[2,],q1$probs,type="l") # (2b) Draw of 95 percent confidence intervals on quantiles of the # previously fitted distribution # using the NEW function CIcdfplot # CIcdfplot(bln, CI.output = "quantile", CI.fill = "pink") # (3) Fit of a distribution on acute salinity log-transformed tolerance # for riverine macro-invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5, 10 and 20 percent quantile # values of the fitted distribution, which are called the 5, 10, 20 percent hazardous # concentrations (HC5, HC10, HC20) in ecotoxicology, followed with calculations of # their confidence intervals with various definitions. # from a small number of bootstrap iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # data(salinity) log10LC50 <-log10(salinity) flncens <- fitdistcens(log10LC50,"norm") quantile(flncens, probs = c(0.05, 0.1, 0.2)) blncens <- bootdistcens(flncens, niter = 101) quantile(blncens, probs = c(0.05, 0.1, 0.2)) quantile(blncens, probs = c(0.05, 0.1, 0.2), CI.type = "greater") quantile(blncens, probs = c(0.05, 0.1, 0.2), CI.level = 0.9) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/plotdist.Rd0000644000176200001440000001257212772503244015727 0ustar liggesusers\name{plotdist} \alias{plotdist} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Plot of empirical and theoretical distributions for non-censored data} \description{ Plots an empirical distribution (non-censored data) with a theoretical one if specified. } \usage{ plotdist(data, distr, para, histo = TRUE, breaks = "default", demp = FALSE, discrete, \dots) } \arguments{ \item{data}{ A numeric vector. } \item{distr}{ A character string \code{"name"} naming a distribution for which the corresponding density function \code{dname}, the corresponding distribution function \code{pname} and the corresponding quantile function \code{qname} must be defined, or directly the density function. This argument may be omitted only if \code{para} is omitted. } \item{para}{ A named list giving the parameters of the named distribution. This argument may be omitted only if \code{distr} is omitted. } \item{histo}{A logical to plot the histogram using the \code{\link{hist}} function.} \item{breaks}{ If \code{"default"} the histogram is plotted with the function \code{hist} with its default breaks definition. Else \code{breaks} is passed to the function \code{hist}. This argument is not taken into account if \code{discrete} is \code{TRUE}. } \item{demp}{A logical to plot the empirical density on the first plot (alone or superimposed on the histogram depending of the value of the argument \code{histo}) using the \code{\link{density}} function.} \item{discrete}{ If TRUE, the distribution is considered as discrete. If both \code{distr} and \code{discrete} are missing, \code{discrete} is set to \code{FALSE}. If \code{discrete} is missing but not \code{distr}, \code{discrete} is set to \code{TRUE} when \code{distr} belongs to \code{"binom"}, \code{"nbinom"},\code{"geom"}, \code{"hyper"} or \code{"pois"}. } \item{\dots}{ further graphical arguments passed to graphical functions used in plotdist.} } \details{ Empirical and, if specified, theoretical distributions are plotted in density and in cdf. For the plot in density, the user can use the arguments \code{histo} and \code{demp} to specify if he wants the histogram using the function \code{\link{hist}}, the density plot using the function \code{\link{density}}, or both (at least one of the two arguments must be put to \code{"TRUE"}). For continuous distributions, the function \code{\link{hist}} is used with its default breaks definition if \code{breaks} is \code{"default"} or passing \code{breaks} as an argument if it differs from \code{"default"}. For continuous distribution and when a theoretical distribution is specified by both arguments \code{distname} and \code{para}, Q-Q plot (plot of the quantiles of the theoretical fitted distribution (x-axis) against the empirical quantiles of the data) and P-P plot (i.e. for each value of the data set, plot of the cumulative density function of the fitted distribution (x-axis) against the empirical cumulative density function (y-axis)) are also given (Cullen and Frey, 1999). The function \code{\link{ppoints}} (with default parameter for argument a) is used for the Q-Q plot, to generate the set of probabilities at which to evaluate the inverse distribution. NOTE THAT FROM VERSION 0.4-3, \code{\link{ppoints}} is also used for P-P plot and cdf plot for continuous data. To personalize the four plots proposed for continuous data, for example to change the plotting position, we recommend the use of functions \code{\link{cdfcomp}}, \code{\link{denscomp}}, \code{\link{qqcomp}} and \code{\link{ppcomp}}. } \seealso{ \code{\link{graphcomp}}, \code{\link{descdist}}, \code{\link{hist}}, \code{\link{plot}}, \code{\link{plotdistcens}} and \code{\link{ppoints}}. } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 81-155. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } %\note{ } \examples{ # (1) Plot of an empirical distribution with changing # of default line types for CDF and colors # and optionally adding a density line # set.seed(1234) x1 <- rnorm(n=30) plotdist(x1) plotdist(x1,demp = TRUE) plotdist(x1,histo = FALSE, demp = TRUE) plotdist(x1, col="blue", type="b", pch=16) plotdist(x1, type="s") # (2) Plot of a discrete distribution against data # set.seed(1234) x2 <- rpois(n=30, lambda = 2) plotdist(x2, discrete=TRUE) plotdist(x2, "pois", para=list(lambda = mean(x2))) plotdist(x2, "pois", para=list(lambda = mean(x2)), lwd="2") # (3) Plot of a continuous distribution against data # xn <- rnorm(n=100, mean=10, sd=5) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn))) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn)), pch=16) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn)), demp = TRUE) plotdist(xn, "norm", para=list(mean=mean(xn), sd=sd(xn)), histo = FALSE, demp = TRUE) # (4) Plot of serving size data # data(groundbeef) plotdist(groundbeef$serving, type="s") # (5) Plot of numbers of parasites with a Poisson distribution data(toxocara) number <- toxocara$number plotdist(number, discrete = TRUE) plotdist(number,"pois",para=list(lambda=mean(number))) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/graphcomp.Rd0000644000176200001440000003423713330262006016034 0ustar liggesusers\name{graphcomp} \alias{graphcomp} \alias{cdfcomp} \alias{denscomp} \alias{qqcomp} \alias{ppcomp} \title{Graphical comparison of multiple fitted distributions (for non-censored data)} \description{ \code{cdfcomp} plots the empirical cumulative distribution against fitted distribution functions, \code{denscomp} plots the histogram against fitted density functions, \code{qqcomp} plots theoretical quantiles against empirical ones, \code{ppcomp} plots theoretical probabilities against empirical ones. Only \code{cdfcomp} is able to plot fits of a discrete distribution. } \usage{ cdfcomp(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datapch, datacol, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, horizontals = TRUE, verticals = FALSE, do.points = TRUE, use.ppoints = TRUE, a.ppoints = 0.5, lines01 = FALSE, discrete, add = FALSE, plotstyle = "graphics", fitnbpts = 101, \dots) denscomp(ft, xlim, ylim, probability = TRUE, main, xlab, ylab, datacol, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "topright", ylegend = NULL, demp = FALSE, dempcol = "black", plotstyle = "graphics", discrete, fitnbpts = 101, fittype="l", \dots) qqcomp(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fitpch, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, use.ppoints = TRUE, a.ppoints = 0.5, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", \dots) ppcomp(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fitpch, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, use.ppoints = TRUE, a.ppoints = 0.5, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", \dots) } \arguments{ \item{ft}{One \code{"fitdist"} object or a list of objects of class \code{"fitdist"}.} \item{xlim}{The \eqn{x}-limits of the plot.} \item{ylim}{The \eqn{y}-limits of the plot.} \item{xlogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{x}-axis.} \item{ylogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{y}-axis.} \item{main}{A main title for the plot. See also \code{\link{title}}.} \item{xlab}{A label for the \eqn{x}-axis, defaults to a description of \code{x}.} \item{ylab}{A label for the \eqn{y}-axis, defaults to a description of \code{y}.} \item{datapch}{An integer specifying a symbol to be used in plotting data points. See also \code{\link{par}}.} \item{datacol}{A specification of the color to be used in plotting data points. See also \code{\link{par}}.} \item{fitcol}{A (vector of) color(s) to plot fitted distributions. If there are fewer colors than fits they are recycled in the standard fashion. See also \code{\link{par}}.} \item{fitlty}{A (vector of) line type(s) to plot fitted distributions/densities. If there are fewer colors than fits they are recycled in the standard fashion. See also \code{\link{par}}.} \item{fitpch}{A (vector of) line type(s) to plot fitted quantiles/probabilities. If there are fewer colors than fits they are recycled in the standard fashion. See also \code{\link{par}}.} \item{fittype}{The type of plot for fitted probabilities in the case of discrete distributions: possible types are \code{"p"} for points, \code{"l"} for lines and \code{"o"} for both overplotted (as in \code{\link{plot.default}}). \code{fittype} is not used for non-discrete distributions.} \item{fitnbpts}{A numeric for the number of points to compute fitted probabilities or cumulative probabilities. Default to \code{101}.} \item{addlegend}{If \code{TRUE}, a legend is added to the plot.} \item{legendtext}{A character or expression vector of length \eqn{\ge 1} to appear in the legend. See also \code{\link{legend}}.} \item{xlegend, ylegend}{The \eqn{x} and \eqn{y} coordinates to be used to position the legend. They can be specified by keyword. If \code{plotstyle = "graphics"}, see \code{\link{xy.coords}} and \code{\link{legend}}. If \code{plotstyle = "ggplot"}, the \code{xlegend} keyword must be one of \code{top}, \code{bottom}, \code{left}, or \code{right}. See also \code{guide_legend} in \code{ggplot2}} \item{horizontals}{If \code{TRUE}, draws horizontal lines for the step empirical cumulative distribution function (ecdf). See also \code{\link{plot.stepfun}}.} \item{do.points}{If \code{TRUE} (by default), draws points at the x-locations. For large dataset (n > 1e4), \code{do.points} is ignored and no point is drawn.} \item{verticals}{If \code{TRUE}, draws vertical lines for the empirical cumulative distribution function (ecdf). Only taken into account if \code{horizontals=TRUE}. } \item{use.ppoints}{If \code{TRUE}, probability points of the empirical distribution are defined using function \code{\link{ppoints}} as \code{(1:n - a.ppoints)/(n - 2a.ppoints + 1)}. If \code{FALSE}, probability points are simply defined as \code{1:n / n}. This argument is ignored for discrete data.} \item{a.ppoints}{If \code{use.ppoints=TRUE}, this is passed to the \code{\link{ppoints}} function.} \item{lines01}{A logical to plot two horizontal lines at \code{h=0} and \code{h=1} for \code{cdfcomp}.} \item{line01}{A logical to plot an horizontal line \eqn{y=x} for \code{qqcomp} and \code{ppcomp}.} \item{line01col, line01lty}{Color and line type for \code{line01}. See also \code{\link{par}}.} \item{demp}{A logical to add the empirical density on the plot, using the \code{\link{density}} function.} \item{dempcol}{A color for the empirical density in case it is added on the plot (\code{demp=TRUE}).} \item{ynoise}{A logical to add a small noise when plotting empirical quantiles/probabilities for \code{qqcomp} and \code{ppcomp}.} \item{probability}{A logical to use the probability scale for \code{denscomp}. See also \code{\link{hist}}.} \item{discrete}{If \code{TRUE}, the distributions are considered discrete. When missing, \code{discrete} is set to \code{TRUE} if at least one object of the list \code{ft} is discrete.} \item{add}{If \code{TRUE}, adds to an already existing plot. If \code{FALSE}, starts a new plot. This parameter is not available when \code{plotstyle = "ggplot"}.} \item{plotstyle}{\code{"graphics"} or \code{"ggplot"}. If \code{"graphics"}, the display is built with \code{\link{graphics}} functions. If \code{"ggplot"}, a graphic object output is created with \code{ggplot2} functions.} \item{\dots}{Further graphical arguments passed to graphical functions used in \code{cdfcomp}, \code{denscomp}, \code{ppcomp} and \code{qqcomp} when \code{plotstyle = "graphics"}. When \code{plotstyle = "ggplot"}, these arguments are only used by the histogram plot (\code{\link{hist}}) in the \code{denscomp} function. When \code{plotstyle = "ggplot"}, the graphical output can be customized with relevant \code{ggplot2} functions after you store your output.} } \details{ \code{cdfcomp} provides a plot of the empirical distribution and each fitted distribution in cdf, by default using the Hazen's rule for the empirical distribution, with probability points defined as \code{(1:n - 0.5)/n}. If \code{discrete} is \code{TRUE}, probability points are always defined as \code{(1:n)/n}. For large dataset (\code{n > 1e4}), no point is drawn but the line for \code{ecdf} is drawn instead. Note that when \code{horizontals, verticals and do.points} are \code{FALSE}, no empirical point is drawn, only the fitted cdf is shown. \code{denscomp} provides a density plot of each fitted distribution with the histogram of the data for conyinuous data. When \code{discrete=TRUE}, distributions are considered as discrete, no histogram is plotted but \code{demp} is forced to \code{TRUE} and fitted and empirical probabilities are plotted either with vertical lines \code{fittype="l"}, with single points \code{fittype="p"} or both lines and points \code{fittype="o"}. \code{ppcomp} provides a plot of the probabilities of each fitted distribution (\eqn{x}-axis) against the empirical probabilities (\eqn{y}-axis) by default defined as \code{(1:n - 0.5)/n} (data are assumed continuous). For large dataset (\code{n > 1e4}), lines are drawn instead of pointss and customized with the \code{fitpch} parameter. \code{qqcomp} provides a plot of the quantiles of each theoretical distribution (\eqn{x}-axis) against the empirical quantiles of the data (\eqn{y}-axis), by default defining probability points as \code{(1:n - 0.5)/n} for theoretical quantile calculation (data are assumed continuous). For large dataset (\code{n > 1e4}), lines are drawn instead of points and customized with the \code{fitpch} parameter. By default a legend is added to these plots. Many graphical arguments are optional, dedicated to personalize the plots, and fixed to default values if omitted. } \seealso{ See \code{\link{plot}}, \code{\link{legend}}, \code{\link{ppoints}}, \code{\link{plot.stepfun}} for classic plotting functions. See \code{\link{CIcdfplot}} and \code{\link{plotdist}} for other plot functions of fitdistrplus. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Christophe Dutang, Marie-Laure Delignette-Muller and Aurelie Siberchicot. } \examples{ # (1) Plot various distributions fitted to serving size data # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving, "weibull") fitln <- fitdist(serving, "lnorm") fitg <- fitdist(serving, "gamma") cdfcomp(list(fitW, fitln, fitg), horizontals = FALSE) cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE) cdfcomp(list(fitW, fitln, fitg), horizontals = TRUE, verticals = TRUE, datacol = "purple") cdfcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", ylab = "F", xlim = c(0, 250), xlegend = "center", lines01 = TRUE) denscomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), xlegend = "topright") ppcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlegend = "bottomright", line01 = TRUE) qqcomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlegend = "bottomright", line01 = TRUE, xlim = c(0, 300), ylim = c(0, 300), fitpch = 16) # (2) Plot lognormal distributions fitted by # maximum goodness-of-fit estimation # using various distances (data plotted in log scale) # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV flnMGEKS <- fitdist(ATV, "lnorm", method = "mge", gof = "KS") flnMGEAD <- fitdist(ATV, "lnorm", method = "mge", gof = "AD") flnMGEADL <- fitdist(ATV, "lnorm", method = "mge", gof = "ADL") flnMGEAD2L <- fitdist(ATV, "lnorm", method = "mge", gof = "AD2L") cdfcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), xlogscale = TRUE, main = "fits of a lognormal dist. using various GOF dist.", legendtext = c("MGE KS", "MGE AD", "MGE ADL", "MGE AD2L"), verticals = TRUE, xlim = c(10, 100000)) qqcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main = "fits of a lognormal dist. using various GOF dist.", legendtext = c("MGE KS", "MGE AD", "MGE ADL", "MGE AD2L"), xlogscale = TRUE, ylogscale = TRUE) ppcomp(list(flnMGEKS, flnMGEAD, flnMGEADL, flnMGEAD2L), main = "fits of a lognormal dist. using various GOF dist.", legendtext = c("MGE KS", "MGE AD", "MGE ADL", "MGE AD2L")) # (3) Plot normal and logistic distributions fitted by # maximum likelihood estimation # using various plotting positions in cdf plots # data(endosulfan) log10ATV <-log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") fll <- fitdist(log10ATV, "logis") # default plot using Hazen plotting position: (1:n - 0.5)/n cdfcomp(list(fln, fll), legendtext = c("normal", "logistic"), xlab = "log10ATV") # plot using mean plotting position (named also Gumbel plotting position) # (1:n)/(n + 1) cdfcomp(list(fln, fll),legendtext = c("normal", "logistic"), xlab = "log10ATV", use.ppoints = TRUE, a.ppoints = 0) # plot using basic plotting position: (1:n)/n cdfcomp(list(fln, fll),legendtext = c("normal", "logistic"), xlab = "log10ATV", use.ppoints = FALSE) # (4) Comparison of fits of two distributions fitted to discrete data # data(toxocara) number <- toxocara$number fitp <- fitdist(number, "pois") fitnb <- fitdist(number, "nbinom") cdfcomp(list(fitp, fitnb), legendtext = c("Poisson", "negative binomial")) denscomp(list(fitp, fitnb),demp = TRUE, legendtext = c("Poisson", "negative binomial")) denscomp(list(fitp, fitnb),demp = TRUE, fittype = "l", dempcol = "black", legendtext = c("Poisson", "negative binomial")) denscomp(list(fitp, fitnb),demp = TRUE, fittype = "p", dempcol = "black", legendtext = c("Poisson", "negative binomial")) denscomp(list(fitp, fitnb),demp = TRUE, fittype = "o", dempcol = "black", legendtext = c("Poisson", "negative binomial")) # (5) Customizing of graphical output and use of ggplot2 # data(groundbeef) serving <- groundbeef$serving fitW <- fitdist(serving, "weibull") fitln <- fitdist(serving, "lnorm") fitg <- fitdist(serving, "gamma") if (requireNamespace ("ggplot2", quietly = TRUE)) { denscomp(list(fitW, fitln, fitg), plotstyle = "ggplot") cdfcomp(list(fitW, fitln, fitg), plotstyle = "ggplot") qqcomp(list(fitW, fitln, fitg), plotstyle = "ggplot") ppcomp(list(fitW, fitln, fitg), plotstyle = "ggplot") } # customizing graphical output with graphics denscomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), main = "ground beef fits", xlab = "serving sizes (g)", xlim = c(0, 250), xlegend = "topright", addlegend = FALSE) # customizing graphical output with ggplot2 if (requireNamespace ("ggplot2", quietly = TRUE)) { dcomp <- denscomp(list(fitW, fitln, fitg), legendtext = c("Weibull", "lognormal", "gamma"), xlab = "serving sizes (g)", xlim = c(0, 250), xlegend = "topright", plotstyle = "ggplot", breaks = 20, addlegend = FALSE) dcomp + ggplot2::theme_minimal() + ggplot2::ggtitle("Ground beef fits") } } \keyword{ distribution } fitdistrplus/man/CIcdfplot.Rd0000644000176200001440000002026312772503244015730 0ustar liggesusers\name{CIcdfplot} \alias{CIcdfplot} \title{Empirical cumulative distribution function with pointwise confidence intervals on probabilities or on quantiles} \description{ \code{cdfband} plots the empirical cumulative distribution function with the bootstraped pointwise confidence intervals on probabilities of on quantiles. } \usage{ CIcdfplot(b, CI.output, CI.type = "two.sided", CI.level = 0.95, CI.col = "red", CI.lty = 2, CI.fill = NULL, CI.only = FALSE, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datapch, datacol, fitlty, fitcol, horizontals = TRUE, verticals = FALSE, do.points = TRUE, use.ppoints = TRUE, a.ppoints = 0.5, lines01 = FALSE, \dots) } \arguments{ \item{b}{One \code{"bootdist"} object.} \item{CI.output}{ The quantity on which (bootstraped) bootstraped confidence intervals are computed: either \code{"probability"} or \code{"quantile"}).} \item{CI.type}{ Type of confidence intervals : either \code{"two.sided"} or one-sided intervals (\code{"less"} or \code{"greater"}).} \item{CI.level}{ The confidence level.} \item{CI.col}{the color of the confidence intervals.} \item{CI.lty}{the line type of the confidence intervals.} \item{CI.fill}{a color to fill the confidence area. Default is \code{NULL} corresponding to no filling.} \item{CI.only}{A logical whether to plot empirical and fitted distribution functions or only the confidence intervals. Default to \code{FALSE}.} \item{xlim}{The \eqn{x}-limits of the plot.} \item{ylim}{The \eqn{y}-limits of the plot.} \item{xlogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{x}-axis.} \item{ylogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{y}-axis.} \item{main}{A main title for the plot, see also \code{\link{title}}.} \item{xlab}{A label for the \eqn{x}-axis, defaults to a description of \code{x}.} \item{ylab}{A label for the \eqn{y}-axis, defaults to a description of \code{y}.} \item{datapch}{An integer specifying a symbol to be used in plotting data points, see also \code{\link{points}} (only for non censored data).} \item{datacol}{A specification of the color to be used in plotting data points.} \item{fitcol}{A (vector of) color(s) to plot fitted distributions. If there are fewer colors than fits they are recycled in the standard fashion.} \item{fitlty}{A (vector of) line type(s) to plot fitted distributions/densities. If there are fewer colors than fits they are recycled in the standard fashion. See also \code{\link{par}}.} \item{horizontals}{If \code{TRUE}, draws horizontal lines for the step empirical cdf function (only for non censored data). See also \code{\link{plot.stepfun}}.} \item{do.points}{logical; if \code{TRUE}, also draw points at the x-locations. Default is true (only for non censored data).} \item{verticals}{If \code{TRUE}, draws also vertical lines for the empirical cdf function. Only taken into account if \code{horizontals=TRUE} (only for non censored data). } \item{use.ppoints}{If \code{TRUE}, probability points of the empirical distribution are defined using function \code{\link{ppoints}} as \code{(1:n - a.ppoints)/(n - 2a.ppoints + 1)} (only for non censored data). If \code{FALSE}, probability points are simply defined as \code{1:n / n}. This argument is ignored for discrete data.} \item{a.ppoints}{If \code{use.ppoints=TRUE}, this is passed to function \code{\link{ppoints}} (only for non censored data).} \item{lines01}{A logical to plot two horizontal lines at \code{h=0} and \code{h=1} for \code{cdfcomp}.} \item{\dots}{Further graphical arguments passed to \code{matlines} or \code{polygon}, respectively when \code{CI.fill=FALSE} and \code{CI.fill=TRUE}.} } \details{ \code{CIcdfplot} provides a plot of the empirical distribution using \code{\link{cdfcomp}} or \code{\link{cdfcompcens}}, with bootstraped pointwise confidence intervals on probabilities (y values) or on quantiles (x values). Each interval is computed by evaluating the quantity of interest (probability associated to an x value or quantile associated to an y value) using all the bootstraped values of parameters to get a bootstraped sample of the quantity of interest and then by calculating percentiles on this sample to get a confidence interval (classically 2.5 and 97.5 percentiles for a 95 percent confidence level). If \code{CI.fill != NULL}, then the whole confidence area is filled by the color \code{CI.fill} thanks to the function \code{polygon}, otherwise only borders are drawn thanks to the function \code{matline}. Further graphical arguments can be passed to these functions using the three dots arguments \code{\dots}. } \seealso{ See also \code{\link{cdfcomp}}, \code{\link{cdfcompcens}}, \code{\link{bootdist}} and \code{\link{quantile}}. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Christophe Dutang and Marie-Laure Delignette-Muller. } \examples{ # We choose a low number of bootstrap replicates in order to satisfy CRAN running times # constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # (1) Fit of an exponential distribution # set.seed(123) s1 <- rexp(50, 1) f1 <- fitdist(s1, "exp") b1 <- bootdist(f1, niter= 11) #voluntarily low to decrease computation time # plot 95 percent bilateral confidence intervals on y values (probabilities) CIcdfplot(b1, CI.level= 95/100, CI.output = "probability") # plot of the previous intervals as a band CIcdfplot(b1, CI.level= 95/100, CI.output = "probability", CI.fill = "pink", CI.col = "red") # plot of the previous intervals as a band without empirical and fitted dist. functions CIcdfplot(b1, CI.level= 95/100, CI.output = "probability", CI.only = TRUE, CI.fill = "pink", CI.col = "red") # same plot without contours CIcdfplot(b1, CI.level= 95/100, CI.output = "probability", CI.only = TRUE, CI.fill = "pink", CI.col = "pink") # plot 95 percent bilateral confidence intervals on x values (quantiles) CIcdfplot(b1, CI.level= 95/100, CI.output = "quantile") # plot 95 percent unilateral confidence intervals on quantiles CIcdfplot(b1, CI.level = 95/100, CI.output = "quant", CI.type = "less", CI.fill = "grey80", CI.col = "black", CI.lty = 1) CIcdfplot(b1, CI.level= 95/100, CI.output = "quant", CI.type = "greater", CI.fill = "grey80", CI.col = "black", CI.lty = 1) # (2) Fit of a normal distribution on acute toxicity log-transformed values of # endosulfan for nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5, 10 and 20 percent quantile # values of the fitted distribution, which are called the 5, 10, 20 percent hazardous # concentrations (HC5, HC10, HC20) in ecotoxicology, with their # confidence intervals, from a small number of bootstrap # iterations to satisfy CRAN running times constraint and plot of the band # representing pointwise confidence intervals on any quantiles (any HCx values) # For practical applications, we recommend to use at least niter=501 or niter=1001. # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") bln <- bootdist(fln, bootmethod ="param", niter=101) quantile(bln, probs = c(0.05, 0.1, 0.2)) CIcdfplot(bln, CI.output = "quantile", CI.fill = "lightblue", CI.col = "blue", xlim = c(1,5)) # (3) Same type of example as example (2) from ecotoxicology # with censored data # data(salinity) log10LC50 <-log10(salinity) fln <- fitdistcens(log10LC50,"norm") bln <- bootdistcens(fln, niter=101) (HC5ln <- quantile(bln,probs = 0.05)) CIcdfplot(bln, CI.output = "quantile", CI.fill = "lightblue", CI.col = "blue", xlab = "log10(LC50)",xlim=c(0.5,2),lines01 = TRUE) # zoom around the HC5 CIcdfplot(bln, CI.output = "quantile", CI.fill = "lightblue", CI.col = "blue", xlab = "log10(LC50)", lines01 = TRUE, xlim = c(0.8, 1.5), ylim = c(0, 0.1)) abline(h = 0.05, lty = 2) # line corresponding to a CDF of 5 percent } \keyword{ distribution } fitdistrplus/man/salinity.Rd0000644000176200001440000000533312772503244015716 0ustar liggesusers\name{salinity} \alias{salinity} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Species-Sensitivity Distribution (SSD) for salinity tolerance } \description{ 72-hour acute salinity tolerance (LC50 values) of riverine macro-invertebrates. } \usage{ data(salinity) } %- maybe also 'usage' for other objects documented here. \format{ \code{salinity} is a data frame with 2 columns named left and right, describing each observed LC50 value (in electrical condutivity, millisiemens per centimeter) as an interval. The left column contains either NA for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either NA for right censored observations, the right bound of the interval for interval censored observations, or the observed value for noncensored observations. } \source{ Kefford, B.J., Nugegoda, D., Metzeling, L., Fields, E. 2006. Validating species sensitivity distributions using salinity tolerance of riverine macroinvertebrates in the southern Murray-darling Basin (Vitoria, Australia). \emph{Canadian Journal of Fisheries and Aquatic Science}, \bold{63}, 1865-1877. } %\references{ } \examples{ # (1) load of data # data(salinity) # (2) plot of data using Turnbull cdf plot # log10LC50 <-log10(salinity) plotdistcens(log10LC50) # (3) fit of a normal and a logistic distribution to data in log10 # (classical distributions used for species sensitivity # distributions, SSD, in ecotoxicology)) # and visual comparison of the fits using Turnbull cdf plot # fln <- fitdistcens(log10LC50,"norm") summary(fln) fll <- fitdistcens(log10LC50,"logis") summary(fll) cdfcompcens(list(fln,fll),legendtext=c("normal","logistic"), xlab = "log10(LC50)",xlim=c(0.5,2),lines01 = TRUE) # (4) estimation of the 5 percent quantile value of # the normal fitted distribution (5 percent hazardous concentration : HC5) # with its two-sided 95 percent confidence interval calculated by # non parametric bootstrap # from a small number of bootstrap iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # # in log10(LC50) bln <- bootdistcens(fln, niter=101) HC5ln <- quantile(bln,probs = 0.05) # in LC50 10^(HC5ln$quantiles) 10^(HC5ln$quantCI) # (5) estimation of the HC5 value # with its one-sided 95 percent confidence interval (type "greater") # # in log10(LC50) HC5lnb <- quantile(bln, probs = 0.05,CI.type="greater") # in LC50 10^(HC5lnb$quantiles) 10^(HC5lnb$quantCI) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/mmedist.Rd0000644000176200001440000002356313310705056015523 0ustar liggesusers\name{mmedist} \alias{mmedist} \alias{mme} \title{ Matching moment fit of univariate distributions} \description{ Fit of univariate distributions by matching moments (raw or centered) for non censored data. } \usage{ mmedist(data, distr, order, memp, start = NULL, fix.arg = NULL, optim.method = "default", lower = -Inf, upper = Inf, custom.optim = NULL, weights = NULL, silent = TRUE, gradient = NULL, checkstartfix=FALSE, \dots) } \arguments{ \item{data}{A numeric vector for non censored data.} \item{distr}{A character string \code{"name"} naming a distribution (see 'details').} \item{order}{A numeric vector for the moment order(s). The length of this vector must be equal to the number of parameters to estimate.} \item{memp}{A function implementing empirical moments, raw or centered but has to be consistent with \code{distr} argument (and \code{weights} argument). See details below. } \item{start}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). } \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated.} \item{optim.method}{ \code{"default"} or optimization method to pass to \code{\link{optim}}. } \item{lower}{ Left bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{upper}{ Right bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{custom.optim}{a function carrying the optimization .} \item{weights}{an optional vector of weights to be used in the fitting process. Should be \code{NULL} or a numeric vector with strictly positive integers (typically the number of occurences of each observation). If non-\code{NULL}, weighted MME is used, otherwise ordinary MME.} \item{silent}{A logical to remove or show warnings when bootstraping.} \item{gradient}{A function to return the gradient of the squared difference for the \code{"BFGS"}, \code{"CG"} and \code{"L-BFGS-B"} methods. If it is \code{NULL}, a finite-difference approximation will be used, see details.} \item{checkstartfix}{A logical to test starting and fixed values. Do not change it.} \item{\dots}{further arguments passed to the \code{\link{optim}}, \code{\link{constrOptim}} or \code{custom.optim} function.} } \details{ The argument \code{distr} can be one of the base R distributions: \code{"norm"}, \code{"lnorm"}, \code{"exp"} and \code{"pois"}, \code{"gamma"}, \code{"logis"}, \code{"nbinom"} , \code{"geom"}, \code{"beta"} and \code{"unif"}. In that case, no other arguments than \code{data} and \code{distr} are required, because the estimate is computed by a closed-form formula. For distributions characterized by one parameter (\code{"geom"}, \code{"pois"} and \code{"exp"}), this parameter is simply estimated by matching theoretical and observed means, and for distributions characterized by two parameters, these parameters are estimated by matching theoretical and observed means and variances (Vose, 2000). Note that for these closed-form formula, \code{fix.arg} cannot be used and \code{start} is ignored. The argument \code{distr} can also be the distribution name as long as a corresponding \code{mdistr} function exists, e.g. \code{"pareto"} if \code{"mpareto"} exists. In that case arguments arguments \code{order} and \code{memp} have to be supplied in order to carry out the matching numerically, by minimization of the sum of squared differences between observed and theoretical moments. Optionnally other arguments can be supplied to control optimization (see the 'details' section of \code{\link{mledist}} for details about arguments for the control of optimization). In that case, \code{fix.arg} can be used and \code{start} is taken into account. For non closed-form estimators, \code{memp} must be provided to compute empirical moments. When \code{weights=NULL}, this function must have two arguments \code{x, order}: \code{x} the numeric vector of the data and \code{order} the order of the moment. When \code{weights!=NULL}, this function must have three arguments \code{x, order, weights}: \code{x} the numeric vector of the data, \code{order} the order of the moment, \code{weights} the numeric vector of weights. See examples below. Optionally, a vector of \code{weights} can be used in the fitting process. By default (when \code{weigths=NULL}), ordinary MME is carried out, otherwise the specified weights are used to compute (raw or centered) weighted moments. For closed-form estimators, weighted mean and variance are computed by \code{\link[Hmisc:wtd.stats]{wtd.mean}} and \code{\link[Hmisc:wtd.stats]{wtd.var}} from the \code{Hmisc} package. When a numerical minimization is used, weighted are expected to be computed by the \code{memp} function. It is not yet possible to take into account weighths in functions \code{plotdist}, \code{plotdistcens}, \code{plot.fitdist}, \code{plot.fitdistcens}, \code{cdfcomp}, \code{cdfcompcens}, \code{denscomp}, \code{ppcomp}, \code{qqcomp}, \code{gofstat} and \code{descdist} (developments planned in the future). This function is not intended to be called directly but is internally called in \code{\link{fitdist}} and \code{\link{bootdist}} when used with the matching moments method. } \value{ \code{mmedist} returns a list with following components, \item{estimate}{ the parameter estimates.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error. } \item{value}{the minimal value reached for the criterion to minimize.} \item{hessian}{ a symmetric matrix computed by \code{\link{optim}} as an estimate of the Hessian at the solution found or computed in the user-supplied optimization function. } \item{optim.function}{(if appropriate) the name of the optimization function used for maximum likelihood.} \item{optim.method}{(if appropriate) when \code{\link{optim}} is used, the name of the algorithm used, the field \code{method} of the \code{custom.optim} function otherwise.} \item{fix.arg}{the named list giving the values of parameters of the named distribution that must kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} \item{counts}{A two-element integer vector giving the number of calls to the log-likelihood function and its gradient respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to log-likelihood function to compute a finite-difference approximation to the gradient. \code{counts} is returned by \code{\link{optim}} or the user-supplied function or set to \code{NULL}.} \item{optim.message}{A character string giving any additional information returned by the optimizer, or \code{NULL}. To understand exactly the message, see the source code.} \item{loglik}{ the log-likelihood value. } \item{method}{either \code{"closed formula"} or the name of the optimization method.} \item{order}{ the order of the moment(s) matched.} \item{memp}{ the empirical moment function.} } \seealso{ \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}}, \code{\link{fitdist}},\code{\link{fitdistcens}}, \code{\link{optim}}, \code{\link{bootdistcens}} and \code{\link{bootdist}}. } \references{ Evans M, Hastings N and Peacock B (2000), \emph{Statistical distributions}. John Wiley and Sons Inc. Vose D (2000), \emph{Risk analysis, a quantitative guide}. John Wiley & Sons Ltd, Chischester, England, pp. 99-143. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) basic fit of a normal distribution with moment matching estimation # set.seed(1234) n <- 100 x1 <- rnorm(n=n) mmedist(x1, "norm") #weighted w <- c(rep(1, n/2), rep(10, n/2)) mmedist(x1, "norm", weights=w)$estimate # (2) fit a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) mmedist(x2, "pois") # (3) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) mmedist(x3, "beta") # (4) fit a Pareto distribution # \dontrun{ require(actuar) #simulate a sample x4 <- rpareto(1000, 6, 2) #empirical raw moment memp <- function(x, order) mean(x^order) memp2 <- function(x, order, weights) sum(x^order * weights)/sum(weights) #fit by MME mmedist(x4, "pareto", order=c(1, 2), memp=memp, start=list(shape=10, scale=10), lower=1, upper=Inf) #fit by weighted MME w <- rep(1, length(x4)) w[x4 < 1] <- 2 mmedist(x4, "pareto", order=c(1, 2), memp=memp2, weights=w, start=list(shape=10, scale=10), lower=1, upper=Inf) } } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/endosulfan.Rd0000644000176200001440000000641412772503244016221 0ustar liggesusers\name{endosulfan} \alias{endosulfan} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Species Sensitivity Distribution (SSD) for endosulfan } \description{ Summary of 48- to 96-hour acute toxicity values (LC50 and EC50 values) for exposure of Australian an Non-Australian taxa to endosulfan. } \usage{ data(endosulfan) } %- maybe also 'usage' for other objects documented here. \format{ \code{endosulfan} is a data frame with 3 columns, named ATV for Acute Toxicity Value (geometric mean of LC50 ou EC50 values in micrograms per liter), Australian (coding for Australian or another origin) and group (arthropods, fish or non-arthropod invertebrates). } \source{ Hose, G.C., Van den Brink, P.J. 2004. Confirming the Species-Sensitivity Distribution Concept for Endosulfan Using Laboratory, Mesocosms, and Field Data. \emph{Archives of Environmental Contamination and Toxicology}, \bold{47}, 511-520. } %\references{ } \examples{ # (1) load of data # data(endosulfan) # (2) plot and description of data for non Australian fish in decimal logarithm # log10ATV <-log10(subset(endosulfan,(Australian == "no") & (group == "Fish"))$ATV) plotdist(log10ATV) descdist(log10ATV,boot=1000) # (3) fit of a normal and a logistic distribution to data in log10 # (classical distributions used for SSD) # and visual comparison of the fits # fln <- fitdist(log10ATV,"norm") summary(fln) fll <- fitdist(log10ATV,"logis") summary(fll) cdfcomp(list(fln,fll),legendtext=c("normal","logistic"), xlab="log10ATV") denscomp(list(fln,fll),legendtext=c("normal","logistic"), xlab="log10ATV") qqcomp(list(fln,fll),legendtext=c("normal","logistic")) ppcomp(list(fln,fll),legendtext=c("normal","logistic")) gofstat(list(fln,fll), fitnames = c("lognormal", "loglogistic")) # (4) estimation of the 5 percent quantile value of # logistic fitted distribution (5 percent hazardous concentration : HC5) # with its two-sided 95 percent confidence interval calculated by # parametric bootstrap # with a small number of iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # # in log10(ATV) bll <- bootdist(fll,niter=101) HC5ll <- quantile(bll,probs = 0.05) # in ATV 10^(HC5ll$quantiles) 10^(HC5ll$quantCI) # (5) estimation of the 5 percent quantile value of # the fitted logistic distribution (5 percent hazardous concentration : HC5) # with its one-sided 95 percent confidence interval (type "greater") # calculated by # nonparametric bootstrap # with a small number of iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # # in log10(ATV) bllnonpar <- bootdist(fll,niter=101,bootmethod = "nonparam") HC5llgreater <- quantile(bllnonpar,probs = 0.05, CI.type="greater") # in ATV 10^(HC5llgreater$quantiles) 10^(HC5llgreater$quantCI) # (6) fit of a logistic distribution # by minimizing the modified Anderson-Darling AD2L distance # cf. ?mgedist for definition of this distance # fllAD2L <- fitdist(log10ATV,"logis",method="mge",gof="AD2L") summary(fllAD2L) plot(fllAD2L) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/mledist.Rd0000644000176200001440000003236113310705056015516 0ustar liggesusers\name{mledist} \alias{mledist} \alias{mle} \title{ Maximum likelihood fit of univariate distributions} \description{ Fit of univariate distributions using maximum likelihood for censored or non censored data. } \usage{ mledist(data, distr, start = NULL, fix.arg = NULL, optim.method = "default", lower = -Inf, upper = Inf, custom.optim = NULL, weights = NULL, silent = TRUE, gradient = NULL, checkstartfix=FALSE, \dots) } \arguments{ \item{data}{ A numeric vector for non censored data or a dataframe of two columns respectively named \code{left} and \code{right}, describing each observed value as an interval for censored data. In that case the \code{left} column contains either \code{NA} for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The \code{right} column contains either \code{NA} for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. } \item{distr}{ A character string \code{"name"} naming a distribution for which the corresponding density function \code{dname} and the corresponding distribution function \code{pname} must be classically defined. } \item{start}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see details). } \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated by this maximum likelihood procedure.} \item{optim.method}{ \code{"default"} (see details) or an optimization method to pass to \code{\link{optim}}. } \item{lower}{Left bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{upper}{ Right bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{custom.optim}{a function carrying the MLE optimisation (see details).} \item{weights}{an optional vector of weights to be used in the fitting process. Should be \code{NULL} or a numeric vector with strictly positive integers (typically the number of occurences of each observation). If non-\code{NULL}, weighted MLE is used, otherwise ordinary MLE.} \item{silent}{A logical to remove or show warnings when bootstraping.} \item{gradient}{A function to return the gradient of the log-likelihood for the \code{"BFGS"}, \code{"CG"} and \code{"L-BFGS-B"} methods. If it is \code{NULL}, a finite-difference approximation will be used, see details.} \item{checkstartfix}{A logical to test starting and fixed values. Do not change it.} \item{\dots}{further arguments passed to the \code{\link{optim}}, \code{\link{constrOptim}} or \code{custom.optim} function.} } \details{ This function is not intended to be called directly but is internally called in \code{\link{fitdist}} and \code{\link{bootdist}} when used with the maximum likelihood method and \code{\link{fitdistcens}} and \code{\link{bootdistcens}}. It is assumed that the \code{distr} argument specifies the distribution by the probability density function and the cumulative distribution function (d, p). The quantile function and the random generator function (q, r) may be needed by other function such as \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}}, \code{\link{fitdist}},\code{\link{fitdistcens}}, \code{\link{bootdistcens}} and \code{\link{bootdist}}. For the following named distributions, reasonable starting values will be computed if \code{start} is omitted (i.e. \code{NULL}) : \code{"norm"}, \code{"lnorm"}, \code{"exp"} and \code{"pois"}, \code{"cauchy"}, \code{"gamma"}, \code{"logis"}, \code{"nbinom"} (parametrized by mu and size), \code{"geom"}, \code{"beta"}, \code{"weibull"} from the \code{stats} package; \code{"invgamma"}, \code{"llogis"}, \code{"invweibull"}, \code{"pareto1"}, \code{"pareto"}, \code{"lgamma"}, \code{"trgamma"}, \code{"invtrgamma"} from the \code{actuar} package. Note that these starting values may not be good enough if the fit is poor. The function uses a closed-form formula to fit the uniform distribution. If \code{start} is a list, then it should be a named list with the same names as in the d,p,q,r functions of the chosen distribution. If \code{start} is a function of data, then the function should return a named list with the same names as in the d,p,q,r functions of the chosen distribution. The \code{mledist} function allows user to set a fixed values for some parameters. As for \code{start}, if \code{fix.arg} is a list, then it should be a named list with the same names as in the d,p,q,r functions of the chosen distribution. If \code{fix.arg} is a function of data, then the function should return a named list with the same names as in the d,p,q,r functions of the chosen distribution. When \code{custom.optim=NULL} (the default), maximum likelihood estimations of the distribution parameters are computed with the R base \code{\link{optim}} or \code{\link{constrOptim}}. If no finite bounds (\code{lower=-Inf} and \code{upper=Inf}) are supplied, \code{\link{optim}} is used with the method specified by \code{optim.method}. Note that \code{optim.method="default"} means \code{optim.method="Nelder-Mead"} for distributions with at least two parameters and \code{optim.method="BFGS"} for distributions with only one parameter. If finite bounds are supplied (among \code{lower} and \code{upper}) and \code{gradient != NULL}, \code{\link{constrOptim}} is used. If finite bounds are supplied (among \code{lower} and \code{upper}) and \code{gradient == NULL}, \code{\link{constrOptim}} is used when \code{optim.method="Nelder-Mead"}; \code{\link{optim}} is used when \code{optim.method="L-BFGS-B"} or \code{"Brent"}; in other case, an error is raised (same behavior as \code{\link{constrOptim}}). When errors are raised by \code{\link{optim}}, it's a good idea to start by adding traces during the optimization process by adding \code{control=list(trace=1, REPORT=1)}. If \code{custom.optim} is not \code{NULL}, then the user-supplied function is used instead of the R base \code{\link{optim}}. The \code{custom.optim} must have (at least) the following arguments \code{fn} for the function to be optimized, \code{par} for the initialized parameters. Internally the function to be optimized will also have other arguments, such as \code{obs} with observations and \code{ddistname} with distribution name for non censored data (Beware of potential conflicts with optional arguments of \code{custom.optim}). It is assumed that \code{custom.optim} should carry out a MINIMIZATION. Finally, it should return at least the following components \code{par} for the estimate, \code{convergence} for the convergence code, \code{value} for \code{fn(par)}, \code{hessian}, \code{counts} for the number of calls (function and gradient) and \code{message} (default to \code{NULL}) for the error message when \code{custom.optim} raises an error, see the returned value of \code{\link{optim}}. See examples in \code{\link{fitdist}} and \code{\link{fitdistcens}}. Optionally, a vector of \code{weights} can be used in the fitting process. By default (when \code{weigths=NULL}), ordinary MLE is carried out, otherwise the specified weights are used to balance the log-likelihood contributions. It is not yet possible to take into account weights in functions \code{plotdist}, \code{plotdistcens}, \code{plot.fitdist}, \code{plot.fitdistcens}, \code{cdfcomp}, \code{cdfcompcens}, \code{denscomp}, \code{ppcomp}, \code{qqcomp}, \code{gofstat}, \code{descdist}, \code{bootdist}, \code{bootdistcens} and \code{mgedist}. (developments planned in the future). NB: if your data values are particularly small or large, a scaling may be needed before the optimization process. See Example (7). } \value{ \code{mledist} returns a list with following components, \item{estimate}{ the parameter estimates.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}}/\code{\link{constrOptim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error. } \item{value}{the minimal value reached for the criterion to minimize.} \item{hessian}{a symmetric matrix computed by \code{\link{optim}} as an estimate of the Hessian at the solution found or computed in the user-supplied optimization function. It is used in \code{fitdist} to estimate standard errors. } \item{optim.function}{the name of the optimization function used for maximum likelihood.} \item{optim.method}{when \code{\link{optim}} is used, the name of the algorithm used, the field \code{method} of the \code{custom.optim} function otherwise.} \item{fix.arg}{the named list giving the values of parameters of the named distribution that must kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} \item{counts}{A two-element integer vector giving the number of calls to the log-likelihood function and its gradient respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to log-likelihood function to compute a finite-difference approximation to the gradient. \code{counts} is returned by \code{\link{optim}} or the user-supplied function or set to \code{NULL}.} \item{optim.message}{A character string giving any additional information returned by the optimizer, or \code{NULL}. To understand exactly the message, see the source code.} \item{loglik}{the log-likelihood value.} } \seealso{ \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}}, \code{\link{fitdist}},\code{\link{fitdistcens}} for other estimation methods, \code{\link{optim}}, \code{\link{constrOptim}} for optimization routines, \code{\link{bootdistcens}} and \code{\link{bootdist}} for bootstrap, and \code{\link{llplot}} for plotting the (log)likelihood. } \references{ Venables WN and Ripley BD (2002), \emph{Modern applied statistics with S}. Springer, New York, pp. 435-446. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) basic fit of a normal distribution with maximum likelihood estimation # set.seed(1234) x1 <- rnorm(n=100) mledist(x1,"norm") # (2) defining your own distribution functions, here for the Gumbel distribution # for other distributions, see the CRAN task view dedicated to probability distributions dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) mledist(x1,"gumbel",start=list(a=10,b=5)) # (3) fit of a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) mledist(x2,"pois") # (4) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) mledist(x3,"beta") # (5) fit frequency distributions on USArrests dataset. # x4 <- USArrests$Assault mledist(x4, "pois") mledist(x4, "nbinom") # (6) fit a continuous distribution (Gumbel) to censored data. # data(fluazinam) log10EC50 <-log10(fluazinam) # definition of the Gumbel distribution dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) qgumbel <- function(p,a,b) a-b*log(-log(p)) mledist(log10EC50,"gumbel",start=list(a=0,b=2),optim.method="Nelder-Mead") # (7) scaling problem # the simulated dataset (below) has particularly small values, # hence without scaling (10^0), # the optimization raises an error. The for loop shows how scaling by 10^i # for i=1,...,6 makes the fitting procedure work correctly. set.seed(1234) x2 <- rnorm(100, 1e-4, 2e-4) for(i in 6:0) cat(i, try(mledist(x*10^i, "cauchy")$estimate, silent=TRUE), "\n") # (17) small example for the zero-modified geometric distribution # dzmgeom <- function(x, p1, p2) p1 * (x == 0) + (1-p1)*dgeom(x-1, p2) #pdf x2 <- c(2, 4, 0, 40, 4, 21, 0, 0, 0, 2, 5, 0, 0, 13, 2) #simulated dataset initp1 <- function(x) list(p1=mean(x == 0)) #init as MLE mledist(x2, "zmgeom", fix.arg=initp1, start=list(p2=1/2)) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/prefit.Rd0000644000176200001440000001204512772503244015351 0ustar liggesusers\name{prefit} \alias{prefit} \title{Pre-fitting procedure} \description{ Search good starting values } \usage{ prefit(data, distr, method = c("mle", "mme", "qme", "mge"), feasible.par, memp=NULL, order=NULL, probs=NULL, qtype=7, gof=NULL, fix.arg=NULL, lower, upper, weights=NULL, silent=TRUE, \dots) } \arguments{ \item{data}{A numeric vector.} \item{distr}{A character string \code{"name"} naming a distribution for which the corresponding density function \code{dname}, the corresponding distribution function \code{pname} and the corresponding quantile function \code{qname} must be defined, or directly the density function.} \item{method}{A character string coding for the fitting method: \code{"mle"} for 'maximum likelihood estimation', \code{"mme"} for 'moment matching estimation', \code{"qme"} for 'quantile matching estimation' and \code{"mge"} for 'maximum goodness-of-fit estimation'.} \item{feasible.par}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). It may not be into account for closed-form formulas.} \item{order}{A numeric vector for the moment order(s). The length of this vector must be equal to the number of parameters to estimate.} \item{memp}{A function implementing empirical moments, raw or centered but has to be consistent with \code{distr} argument (and \code{weights} argument).} \item{probs}{A numeric vector of the probabilities for which the quantile matching is done. The length of this vector must be equal to the number of parameters to estimate.} \item{qtype}{The quantile type used by the R \code{\link{quantile}} function to compute the empirical quantiles, (default 7 corresponds to the default quantile method in R).} \item{gof}{A character string coding for the name of the goodness-of-fit distance used : "CvM" for Cramer-von Mises distance,"KS" for Kolmogorov-Smirnov distance, "AD" for Anderson-Darling distance, "ADR", "ADL", "AD2R", "AD2L" and "AD2" for variants of Anderson-Darling distance described by Luceno (2006).} \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated by this maximum likelihood procedure. The use of this argument is not possible if \code{method="mme"} and a closed-form formula is used.} \item{weights}{an optional vector of weights to be used in the fitting process. Should be \code{NULL} or a numeric vector. If non-\code{NULL}, weighted MLE is used, otherwise ordinary MLE.} \item{silent}{A logical to remove or show warnings.} \item{lower}{Lower bounds on the parameters.} \item{upper}{Upper bounds on the parameters.} \item{\dots}{Further arguments to be passed to generic functions, or to one of the functions \code{"mledist"}, \code{"mmedist"}, \code{"qmedist"} or \code{"mgedist"} depending of the chosen method. See \code{\link{mledist}}, \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} for details on parameter estimation.} } \details{ Searching good starting values is achieved by transforming the parameters (from their constraint interval to the real line) of the probability distribution. Indeed, \itemize{ \item positive parameters in \eqn{(0,Inf)} are transformed using the logarithm (typically the scale parameter \code{sd} of a normal distribution, see \link{Normal}), \item parameters in \eqn{(1,Inf)} are transformed using the function \eqn{log(x-1)}, \item probability parameters in \eqn{(0,1)} are transformed using the logit function \eqn{log(x/(1-x))} (typically the parameter \code{prob} of a geometric distribution, see \link{Geometric}), \item negative probability parameters in \eqn{(-1,0)} are transformed using the function \eqn{log(-x/(1+x))}, \item real parameters are of course not transformed at all, typically the \code{mean} of a normal distribution, see \link{Normal}. } Once parameters are transformed, an optimization is carried out by a quasi-Newton algorithm (typically BFGS) and then we transform them back to original parameter value. } \value{ A named list. } \seealso{ See \code{\link{mledist}}, \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} for details on parameter estimation. See \code{\link{fitdist}} for the main procedure. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Christophe Dutang and Marie-Laure Delignette-Muller. } \examples{ # (1) fit of a gamma distribution by maximum likelihood estimation # x <- rgamma(1e3, 5/2, 7/2) prefit(x, "gamma", "mle", list(shape=3, scale=3), lower=-Inf, upper=Inf) } \keyword{ distribution } fitdistrplus/man/fitdistcens.Rd0000644000176200001440000003114013236536446016402 0ustar liggesusers\name{fitdistcens} \alias{fitdistcens} \alias{plot.fitdistcens} \alias{print.fitdistcens} \alias{summary.fitdistcens} \alias{logLik.fitdistcens} \alias{vcov.fitdistcens} \alias{coef.fitdistcens} \title{Fitting of univariate distributions to censored data} \description{ Fits a univariate distribution to censored data by maximum likelihood. } \usage{ fitdistcens(censdata, distr, start=NULL, fix.arg=NULL, keepdata = TRUE, keepdata.nb=100, \dots) \method{print}{fitdistcens}(x, \dots) \method{plot}{fitdistcens}(x, \dots) \method{summary}{fitdistcens}(object, \dots) \method{logLik}{fitdistcens}(object, \dots) \method{vcov}{fitdistcens}(object, \dots) \method{coef}{fitdistcens}(object, \dots) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{censdata}{ A dataframe of two columns respectively named \code{left} and \code{right}, describing each observed value as an interval. The \code{left} column contains either \code{NA} for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The \code{right} column contains either \code{NA} for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations. } \item{distr}{ A character string \code{"name"} naming a distribution, for which the corresponding density function \code{dname} and the corresponding distribution function \code{pname} must be defined, or directly the density function.} \item{start}{ A named list giving the initial values of parameters of the named distribution. This argument may be omitted for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). } \item{fix.arg}{ An optional named list giving the values of parameters of the named distribution that must be kept fixed rather than estimated by maximum likelihood. } \item{x}{ an object of class \code{"fitdistcens"}. } \item{object}{ an object of class \code{"fitdistcens"}. } \item{keepdata}{a logical. If \code{TRUE}, dataset is returned, otherwise only a sample subset is returned.} \item{keepdata.nb}{When \code{keepdata=FALSE}, the length of the subset returned.} \item{\dots}{ further arguments to be passed to generic functions, to the function \code{plotdistcens} in order to control the type of ecdf-plot used for censored data, or to the function \code{mledist} in order to control the optimization method.} } \details{ Maximum likelihood estimations of the distribution parameters are computed using the function \code{\link{mledist}}. By default direct optimization of the log-likelihood is performed using \code{\link{optim}}, with the "Nelder-Mead" method for distributions characterized by more than one parameter and the "BFGS" method for distributions characterized by only one parameter. The algorithm used in \code{\link{optim}} can be chosen or another optimization function can be specified using \dots argument (see \code{\link{mledist}} for details). \code{start} may be omitted (i.e. \code{NULL}) for some classic distributions (see the 'details' section of \code{\link{mledist}}). Note that when errors are raised by \code{optim}, it's a good idea to start by adding traces during the optimization process by adding \code{control=list(trace=1, REPORT=1)} in \dots argument. The function is not able to fit a uniform distribution. With the parameter estimates, the function returns the log-likelihood and the standard errors of the estimates calculated from the Hessian at the solution found by \code{optim} or by the user-supplied function passed to mledist. By default (\code{keepdata = TRUE}), the object returned by \code{fitdist} contains the data vector given in input. When dealing with large datasets, we can remove the original dataset from the output by setting \code{keepdata = FALSE}. In such a case, only \code{keepdata.nb} points (at most) are kept by random subsampling \code{keepdata.nb}-4 points from the dataset and adding the component-wise minimum and maximum. If combined with \code{\link{bootdistcens}}, be aware that bootstrap is performed on the subset randomly selected in \code{fitdistcens}. Currently, the graphical comparisons of multiple fits is not available in this framework. Weighted version of the estimation process is available for \code{method = "mle"} by using \code{weights=\dots}. See the corresponding man page for details. It is not yet possible to take into account weighths in functions plotdistcens, plot.fitdistcens and cdfcompcens (developments planned in the future). } \value{ \code{fitdistcens} returns an object of class \code{"fitdistcens"}, a list with the following components: \item{estimate}{ the parameter estimates.} \item{method}{ the character string coding for the fitting method : only \code{"mle"} for 'maximum likelihood estimation'.} \item{sd}{ the estimated standard errors.} \item{cor}{ the estimated correlation matrix, \code{NA} if numerically not computable or \code{NULL} if not available.} \item{vcov}{ the estimated variance-covariance matrix, \code{NULL} if not available.} \item{loglik}{ the log-likelihood.} \item{aic}{ the Akaike information criterion.} \item{bic}{ the the so-called BIC or SBC (Schwarz Bayesian criterion).} \item{censdata}{ the censored data set.} \item{distname}{ the name of the distribution.} \item{fix.arg}{ the named list giving the values of parameters of the named distribution that must be kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{dots}{ the list of further arguments passed in \dots to be used in \code{bootdistcens} to control the optimization method used in iterative calls to \code{mledist} or \code{NULL} if no such arguments.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}}/\code{\link{constrOptim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error.} \item{discrete}{always \code{FALSE}.} \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} Generic functions: \describe{ \item{\code{print}}{ The print of a \code{"fitdist"} object shows few traces about the fitting method and the fitted distribution. } \item{\code{summary}}{ The summary provides the parameter estimates of the fitted distribution, the log-likelihood, AIC and BIC statistics, the standard errors of the parameter estimates and the correlation matrix between parameter estimates. } \item{\code{plot}}{ The plot of an object of class \code{"fitdistcens"} returned by \code{fitdistcens} uses the function \code{\link{plotdistcens}}. } \item{\code{logLik}}{ Extracts the estimated log-likelihood from the \code{"fitdistcens"} object. } \item{\code{vcov}}{ Extracts the estimated var-covariance matrix from the \code{"fitdistcens"} object (only available When \code{method = "mle"}). } \item{\code{coef}}{ Extracts the fitted coefficients from the \code{"fitdistcens"} object. } } } \seealso{ See \code{\link{fitdistrplus}} for an overview of the package. \code{\link{plotdistcens}}, \code{\link{optim}}, \code{\link{mledist}}, \code{\link{fitdist}} and \code{\link{quantile.fitdistcens}} for another generic function to calculate quantiles from the fitted distribution. } \references{ Venables WN and Ripley BD (2002), \emph{Modern applied statistics with S}. Springer, New York, pp. 435-446. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } %\note{ } \examples{ # (1) Fit of a lognormal distribution to bacterial contamination data # data(smokedfish) fitsf <- fitdistcens(smokedfish,"lnorm") summary(fitsf) # default plot using the Wang technique (see ?plotdiscens for details) plot(fitsf) # plot using the Turnbull algorithm (see ?plotdiscens for details) # with confidence intervals for the empirical distribution plot(fitsf, NPMLE = TRUE, NPMLE.method = "Turnbull", Turnbull.confint = TRUE) # basic plot using intervals and points (see ?plotdiscens for details) plot(fitsf, NPMLE = FALSE) # plot of the same fit using the Turnbull algorithm in logscale cdfcompcens(fitsf,main="bacterial contamination fits", xlab="bacterial concentration (CFU/g)",ylab="F", addlegend = FALSE,lines01 = TRUE, xlogscale = TRUE, xlim = c(1e-2,1e2)) # zoom on large values of F cdfcompcens(fitsf,main="bacterial contamination fits", xlab="bacterial concentration (CFU/g)",ylab="F", addlegend = FALSE,lines01 = TRUE, xlogscale = TRUE, xlim = c(1e-2,1e2),ylim=c(0.4,1)) # (2) Fit of a normal distribution on acute toxicity values # of fluazinam (in decimal logarithm) for # macroinvertebrates and zooplancton, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology # data(fluazinam) log10EC50 <-log10(fluazinam) fln <- fitdistcens(log10EC50,"norm") fln summary(fln) plot(fln) # (3) defining your own distribution functions, here for the Gumbel distribution # for other distributions, see the CRAN task view dedicated to # probability distributions # dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) qgumbel <- function(p,a,b) a-b*log(-log(p)) fg <- fitdistcens(log10EC50,"gumbel",start=list(a=1,b=1)) summary(fg) plot(fg) # (4) comparison of fits of various distributions # fll <- fitdistcens(log10EC50,"logis") summary(fll) cdfcompcens(list(fln,fll,fg),legendtext=c("normal","logistic","gumbel"), xlab = "log10(EC50)") # (5) how to change the optimisation method? # fitdistcens(log10EC50,"logis",optim.method="Nelder-Mead") fitdistcens(log10EC50,"logis",optim.method="BFGS") fitdistcens(log10EC50,"logis",optim.method="SANN") # (6) custom optimisation function - example with the genetic algorithm # \dontrun{ #wrap genoud function rgenoud package mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values=par, ...) standardres <- c(res, convergence=0) return(standardres) } # call fitdistcens with a 'custom' optimization function fit.with.genoud <- fitdistcens(log10EC50,"logis", custom.optim=mygenoud, nvars=2, Domains=cbind(c(0,0), c(5, 5)), boundary.enforcement=1, print.level=1, hessian=TRUE) summary(fit.with.genoud) } # (7) estimation of the mean of a normal distribution # by maximum likelihood with the standard deviation fixed at 1 using the argument fix.arg # flnb <- fitdistcens(log10EC50, "norm", start = list(mean = 1),fix.arg = list(sd = 1)) # (8) Fit of a lognormal distribution on acute toxicity values of fluazinam for # macroinvertebrates and zooplancton, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5 percent quantile value of # the fitted distribution (which is called the 5 percent hazardous concentration, HC5, # in ecotoxicology) and estimation of other quantiles. data(fluazinam) log10EC50 <-log10(fluazinam) fln <- fitdistcens(log10EC50,"norm") quantile(fln, probs = 0.05) quantile(fln, probs = c(0.05, 0.1, 0.2)) # (9) Fit of a lognormal distribution on 72-hour acute salinity tolerance (LC50 values) # of riverine macro-invertebrates using maximum likelihood estimation data(salinity) log10LC50 <-log10(salinity) fln <- fitdistcens(log10LC50,"norm") plot(fln) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/bootdistcens.Rd0000644000176200001440000001552513344222463016563 0ustar liggesusers\name{bootdistcens} \alias{bootdistcens} \alias{plot.bootdistcens} \alias{print.bootdistcens} \alias{summary.bootdistcens} \title{ Bootstrap simulation of uncertainty for censored data} \description{ Uses nonparametric bootstrap resampling in order to simulate uncertainty in the parameters of the distribution fitted to censored data. } \usage{ bootdistcens(f, niter = 1001, silent = TRUE, parallel = c("no", "snow", "multicore"), ncpus) \method{print}{bootdistcens}(x, \dots) \method{plot}{bootdistcens}(x, \dots) \method{summary}{bootdistcens}(object, \dots) } \arguments{ \item{f}{ An object of class \code{"fitdistcens"}, output of the \code{\link{fitdistcens}} function.} \item{niter}{ The number of samples drawn by bootstrap.} \item{silent}{A logical to remove or show warnings and errors when bootstraping.} \item{parallel}{The type of parallel operation to be used, \code{"snow"} or \code{"multicore"} (the second one not being available on Windows), or \code{"no"} if no parallel operation.} \item{ncpus}{Number of processes to be used in parallel operation : typically one would fix it to the number of available CPUs.} \item{x}{ An object of class \code{"bootdistcens"}.} \item{object}{ An object of class \code{"bootdistcens"}.} \item{\dots}{ Further arguments to be passed to generic methods.} } \details{ Samples are drawn by nonparametric bootstrap (resampling with replacement from the data set). On each bootstrap sample the function \code{\link{mledist}} is used to estimate bootstrapped values of parameters. When \code{\link{mledist}} fails to converge, \code{NA} values are returned. Medians and 2.5 and 97.5 percentiles are computed by removing \code{NA} values. The medians and the 95 percent confidence intervals of parameters (2.5 and 97.5 percentiles) are printed in the summary. If inferior to the whole number of iterations, the number of iterations for which \code{\link{mledist}} converges is also printed in the summary. The plot of an object of class \code{"bootdistcens"} consists in a scatterplot or a matrix of scatterplots of the bootstrapped values of parameters. It uses the function \code{\link{stripchart}} when the fitted distribution is characterized by only one parameter, and the function \code{\link{plot}} in other cases. In these last cases, it provides a representation of the joint uncertainty distribution of the fitted parameters. It is possible to accelerate the bootstrap using parallelization. We recommend you to use \code{parallel = "multicore"}, or \code{parallel = "snow"} if you work on Windows, and to fix \code{ncpus} to the number of available processors. } \value{ \code{bootdistcens} returns an object of class \code{"bootdistcens"}, a list with 6 components, \item{estim}{ a data frame containing the bootstrapped values of parameters.} \item{converg}{ a vector containing the codes for convergence of the iterative method used to estimate parameters on each bootstraped data set.} \item{method}{ A character string coding for the type of resampling : in this case \code{"nonparam"} as it is the only available method for censored data. } \item{nbboot}{ The number of samples drawn by bootstrap.} \item{CI}{ bootstrap medians and 95 percent confidence percentile intervals of parameters. } \item{fitpart}{ The object of class \code{"fitdistcens"} on which the bootstrap procedure was applied.} Generic functions: \describe{ \item{\code{print}}{ The print of a \code{"bootdistcens"} object shows the bootstrap parameter estimates. If inferior to the whole number of bootstrap iterations, the number of iterations for which the estimation converges is also printed. } \item{\code{summary}}{ The summary provides the median and 2.5 and 97.5 percentiles of each parameter. If inferior to the whole number of bootstrap iterations, the number of iterations for which the estimation converges is also printed in the summary. } \item{\code{plot}}{ The plot shows the bootstrap estimates with the \code{\link{stripchart}} function for univariate parameters and \code{\link{plot}} function for multivariate parameters. } } } \seealso{ See \code{\link{fitdistrplus}} for an overview of the package. \code{\link{fitdistcens}}, \code{\link{mledist}}, \code{\link{quantile.bootdistcens}} for another generic function to calculate quantiles from the fitted distribution and its bootstrap results and \code{\link{CIcdfplot}} for adding confidence intervals on quantiles to a CDF plot of the fitted distribution. } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 181-241. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } %\note{ } \examples{ # We choose a low number of bootstrap replicates in order to satisfy CRAN running times # constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # (1) Fit of a normal distribution to fluazinam data in log10 # followed by nonparametric bootstrap and calculation of quantiles # with 95 percent confidence intervals # data(fluazinam) (d1 <-log10(fluazinam)) f1 <- fitdistcens(d1, "norm") b1 <- bootdistcens(f1, niter = 101) b1 summary(b1) plot(b1) quantile(b1) CIcdfplot(b1, CI.output = "quantile") # (2) Estimation of the mean of the normal distribution # by maximum likelihood with the standard deviation fixed at 1 # using the argument fix.arg # followed by nonparametric bootstrap # and calculation of quantiles with 95 percent confidence intervals # f1b <- fitdistcens(d1, "norm", start = list(mean = 1),fix.arg = list(sd = 1)) b1b <- bootdistcens(f1b, niter = 101) summary(b1b) plot(b1b) quantile(b1b) # (3) comparison of sequential and parallel versions of bootstrap # to be tried with a greater number of iterations (1001 or more) # \dontrun{ niter <- 1001 data(fluazinam) d1 <-log10(fluazinam) f1 <- fitdistcens(d1, "norm") # sequential version ptm <- proc.time() summary(bootdistcens(f1, niter = niter)) proc.time() - ptm # parallel version using snow require(parallel) ptm <- proc.time() summary(bootdistcens(f1, niter = niter, parallel = "snow", ncpus = 4)) proc.time() - ptm # parallel version using multicore (not available on Windows) ptm <- proc.time() summary(bootdistcens(f1, niter = niter, parallel = "multicore", ncpus = 4)) proc.time() - ptm } } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/logLik-plot.Rd0000644000176200001440000000732313343175501016254 0ustar liggesusers\name{logLikplot} \alias{llplot} \title{(Log)likelihood plot for a fit using maximum likelihood} \description{ \code{llplot} plots the (log)likelihood around the estimation for distributions fitted by maximum likelihood. } \usage{ llplot(mlefit, loglik = TRUE, expansion = 1, lseq = 50, back.col = TRUE, nlev = 10, pal.col = terrain.colors(100), fit.show = FALSE, fit.pch = 4, \dots) } \arguments{ \item{mlefit}{An object of class \code{"\link{fitdist}"} of \code{"\link{fitdistcens}"} obtained by maximum likelihood (with \code{method = "mle"})} \item{loglik}{a logical to plot log-likelihood or likelihood function.} \item{expansion}{a expansion factor to enlarge the default range of values explored for each parameter.} \item{lseq}{length of sequences of parameters.} \item{back.col}{logical (for llsurface only). Contours are plotted with a background gradient of colors if TRUE.} \item{nlev}{number of contour levels to plot.} \item{pal.col}{Palette of colors. Colors to be used as back (for llsurface only).} \item{fit.show}{a logical to plot the mle estimate.} \item{fit.pch}{the type of point used to plot the mle estimate.} \item{\dots}{Further graphical arguments passed to graphical functions.} } \details{ \code{llplot} plots the (log)likelihood surface(s) (or curve if there there is only one estimated parameter) around the maximum likelihood estimation. It internally calls function \code{\link{llsurface}} and \code{\link{llcurve}}. When there is more than two estimated parameters, the (log)likehood surface is plotted for each combination of two parameters, fixing the other ones to their estimated value. For each (log)likelihood surface, when \code{back.col} \code{\link{image}} (2D-plot) is used and when \code{nlev > 0} \code{\link{contour}} (2D-plot) is used to add \code{nlev} contours. By default the range of values explored for each estimated parameter is of 2 standard error around the mle estimate but this range can be expanded (or contracted) using the argument \code{expansion}. } \seealso{ See \code{\link{llsurface}} and \code{\link{llcurve}} for manual (log)likelihood plots (surface ou curve) and \code{\link{plot}}, \code{\link{contour}}, \code{\link{image}} for classic plotting functions. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) a distribution with one parameter # x <- rexp(50) fite <- fitdist(x, "exp") llplot(fite) llplot(fite, col = "red", fit.show = TRUE) llplot(fite, col = "red", fit.show = TRUE, loglik = FALSE) # (2) a distribution with two parameters # data(groundbeef) serving <- groundbeef$serving fitg <- fitdist(serving, "gamma") llplot(fitg) \dontrun{ llplot(fitg, expansion = 2) llplot(fitg, pal.col = heat.colors(100), fit.show = TRUE) llplot(fitg, back.col = FALSE, nlev = 25, fit.show = TRUE) } # (3) a distribution with two parameters with one fixed # fitg2 <- fitdist(serving, "gamma", fix.arg = list(rate = 0.5)) llplot(fitg2, fit.show = TRUE) # (4) a distribution with three parameters # \dontrun{ data(endosulfan) ATV <-endosulfan$ATV library("actuar") fBurr <- fitdist(ATV, "burr", start = list(shape1 = 0.3, shape2 = 1, rate = 1)) llplot(fBurr) llplot(fBurr, back.col = FALSE, fit.show = TRUE, fit.pch = 16) llplot(fBurr, nlev = 0, pal.col = rainbow(100), lseq = 100) } # (5) a distribution with two parameters fitted on censored data # data(salinity) fsal <- fitdistcens(salinity, "lnorm") llplot(fsal, fit.show = TRUE) llplot(fsal, fit.show = TRUE, loglik = FALSE) } \keyword{ distribution } fitdistrplus/man/dataFAQ.Rd0000644000176200001440000000074712772503244015327 0ustar liggesusers\name{dataFAQ} \alias{dataFAQ} \alias{dataFAQlog1} \alias{dataFAQscale1} \alias{dataFAQscale2} \docType{data} \title{Datasets for the FAQ} \description{ Datasets used in the FAQ vignette. } \usage{ data(dataFAQlog1) data(dataFAQscale1) data(dataFAQscale2) } \format{ \code{dataFAQlog1} \code{dataFAQscale1} \code{dataFAQscale2} are vectors of numeric data. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/danish.Rd0000644000176200001440000000432313012613016015311 0ustar liggesusers\name{danish} \alias{danish} \alias{danishuni} \alias{danishmulti} \docType{data} \title{ Danish reinsurance claim dataset } \description{ The univariate dataset was collected at Copenhagen Reinsurance and comprise 2167 fire losses over the period 1980 to 1990. They have been adjusted for inflation to reflect 1985 values and are expressed in millions of Danish Krone. The multivariate data set is the same data as above but the total claim has been divided into a building loss, a loss of contents and a loss of profits. } \usage{ data(danishuni) data(danishmulti) } \format{ \code{danishuni} contains two columns: \describe{ \item{\code{Date}}{The day of claim occurence.} \item{\code{Loss}}{The total loss amount in millions of Danish Krone (DKK).} } \code{danishmulti} contains five columns: \describe{ \item{\code{Date}}{The day of claim occurence.} \item{\code{Building}}{The loss amount (mDKK) of the building coverage.} \item{\code{Contents}}{The loss amount (mDKK) of the contents coverage.} \item{\code{Profits}}{The loss amount (mDKK) of the profit coverage.} \item{\code{Total}}{The total loss amount (mDKK).} } All columns are numeric except Date columns of class Date. } \source{ Embrechts, P., Kluppelberg, C. and Mikosch, T. (1997) \emph{Modelling Extremal Events for Insurance and Finance}. Berlin: Springer. } \references{ Dataset used in McNeil (1996), \emph{Estimating the Tails of Loss Severity Distributions using Extreme Value Theory}, ASTIN Bull. Davison, A. C. (2003) \emph{Statistical Models}. Cambridge University Press. Page 278. } \examples{ # (1) load of data # data(danishuni) # (2) plot and description of data # plotdist(danishuni$Loss) # (3) load of data # data(danishmulti) # (4) plot and description of data # idx <- sample(1:NROW(danishmulti), 10) barplot(danishmulti$Building[idx], col = "grey25", ylim = c(0, max(danishmulti$Total[idx])), main = "Some claims of danish data set") barplot(danishmulti$Content[idx], add = TRUE, col = "grey50", axes = FALSE) barplot(danishmulti$Profits[idx], add = TRUE, col = "grey75", axes = FALSE) legend("topleft", legend = c("Building", "Content", "Profits"), fill = c("grey25", "grey50", "grey75")) } \keyword{datasets} fitdistrplus/man/gofstat.Rd0000644000176200001440000001776213041355147015537 0ustar liggesusers\name{gofstat} \alias{gofstat} \alias{print.gofstat.fitdist} \title{ Goodness-of-fit statistics} \description{ Computes goodness-of-fit statistics for parametric distributions fitted to a same non-censored data set. } \usage{ gofstat(f, chisqbreaks, meancount, discrete, fitnames=NULL) \method{print}{gofstat.fitdist}(x, \dots) } \arguments{ \item{f}{ An object of class \code{"fitdist"}, output of the function \code{fitdist}, or a list of \code{"fitdist"} objects.} \item{chisqbreaks}{ A numeric vector defining the breaks of the cells used to compute the chi-squared statistic. If omitted, these breaks are automatically computed from the data in order to reach roughly the same number of observations per cell, roughly equal to the argument \code{meancount}, or sligthly more if there are some ties. } \item{meancount}{ The mean number of observations per cell expected for the definition of the breaks of the cells used to compute the chi-squared statistic. This argument will not be taken into account if the breaks are directly defined in the argument \code{chisqbreaks}. If \code{chisqbreaks} and \code{meancount} are both omitted, \code{meancount} is fixed in order to obtain roughly \eqn{(4n)^{2/5}} cells with \eqn{n} the length of the dataset. } \item{discrete}{If \code{TRUE}, only the Chi-squared statistic and information criteria are computed. If missing, \code{discrete} is passed from the first object of class \code{"fitdist"} of the list \code{f}.} \item{fitnames}{A vector defining the names of the fits.} \item{x}{An object of class \code{"fitdist"}. } \item{\dots}{Further arguments to be passed to generic functions.} } \details{ Goodness-of-fit statistics are computed. The Chi-squared statistic is computed using cells defined by the argument \code{chisqbreaks} or cells automatically defined from data, in order to reach roughly the same number of observations per cell, roughly equal to the argument \code{meancount}, or sligthly more if there are some ties. The choice to define cells from the empirical distribution (data), and not from the theoretical distribution, was done to enable the comparison of Chi-squared values obtained with different distributions fitted on a same data set. If \code{chisqbreaks} and \code{meancount} are both omitted, \code{meancount} is fixed in order to obtain roughly \eqn{(4n)^{2/5}} cells, with \eqn{n} the length of the data set (Vose, 2000). The Chi-squared statistic is not computed if the program fails to define enough cells due to a too small dataset. When the Chi-squared statistic is computed, and if the degree of freedom (nb of cells - nb of parameters - 1) of the corresponding distribution is strictly positive, the p-value of the Chi-squared test is returned. For continuous distributions, Kolmogorov-Smirnov, Cramer-von Mises and Anderson-Darling and statistics are also computed, as defined by Stephens (1986). An approximate Kolmogorov-Smirnov test is performed by assuming the distribution parameters known. The critical value defined by Stephens (1986) for a completely specified distribution is used to reject or not the distribution at the significance level 0.05. Because of this approximation, the result of the test (decision of rejection of the distribution or not) is returned only for data sets with more than 30 observations. Note that this approximate test may be too conservative. For data sets with more than 5 observations and for distributions for which the test is described by Stephens (1986) for maximum likelihood estimations (\code{"exp"}, \code{"cauchy"}, \code{"gamma"} and \code{"weibull"}), the Cramer-von Mises and Anderson-darling tests are performed as described by Stephens (1986). Those tests take into account the fact that the parameters are not known but estimated from the data by maximum likelihood. The result is the decision to reject or not the distribution at the significance level 0.05. Those tests are available only for maximum likelihood estimations. Only recommended statistics are automatically printed, i.e. Cramer-von Mises, Anderson-Darling and Kolmogorov statistics for continuous distributions and Chi-squared statistics for discrete ones ( \code{"binom"}, \code{"nbinom"}, \code{"geom"}, \code{"hyper"} and \code{"pois"} ). Results of the tests are not printed but stored in the output of the function. } \value{ \code{gof.stat} returns an object of class \code{"gofstat.fitdist"} with following components, \item{ chisq }{ a named vector with the Chi-squared statistics or \code{NULL} if not computed} \item{ chisqbreaks }{ common breaks used to define cells in the Chi-squared statistic } \item{ chisqpvalue }{ a named vector with the p-values of the Chi-squared statistic or \code{NULL} if not computed} \item{ chisqdf }{ a named vector with the degrees of freedom of the Chi-squared distribution or \code{NULL} if not computed } \item{ chisqtable }{ a table with observed and theoretical counts used for the Chi-squared calculations } \item{ cvm }{ a named vector of the Cramer-von Mises statistics or \code{"not computed"} if not computed } \item{ cvmtest }{ a named vector of the decisions of the Cramer-von Mises test or \code{"not computed"} if not computed } \item{ ad }{ a named vector with the Anderson-Darling statistics or \code{"not computed"} if not computed } \item{ adtest }{ a named vector with the decisions of the Anderson-Darling test or \code{"not computed"} if not computed } \item{ ks }{ a named vector with the Kolmogorov-Smirnov statistic or \code{"not computed"} if not computed } \item{ kstest }{ a named vector with the decisions of the Kolmogorov-Smirnov test or \code{"not computed"} if not computed } \item{aic}{a named vector with the values of the Akaike's Information Criterion.} \item{bic}{a named vector with the values of the Bayesian Information Criterion.} \item{discrete}{the input argument or the automatic definition by the function from the first object of class \code{"fitdist"} of the list in input.} \item{nbfit}{Number of fits in argument.} } \seealso{ \code{\link{fitdist}}. } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 81-155. Stephens MA (1986), \emph{Tests based on edf statistics}. In Goodness-of-fit techniques (D'Agostino RB and Stephens MA, eds), Marcel Dekker, New York, pp. 97-194. Venables WN and Ripley BD (2002), \emph{Modern applied statistics with S}. Springer, New York, pp. 435-446. Vose D (2000), \emph{Risk analysis, a quantitative guide}. John Wiley & Sons Ltd, Chischester, England, pp. 99-143. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) fit of two distributions to the serving size data # by maximum likelihood estimation # and comparison of goodness-of-fit statistics # data(groundbeef) serving <- groundbeef$serving (fitg <- fitdist(serving, "gamma")) gofstat(fitg) (fitln <- fitdist(serving, "lnorm")) gofstat(fitln) gofstat(list(fitg, fitln)) # (2) fit of two discrete distributions to toxocara data # and comparison of goodness-of-fit statistics # data(toxocara) number <- toxocara$number fitp <- fitdist(number,"pois") summary(fitp) plot(fitp) fitnb <- fitdist(number,"nbinom") summary(fitnb) plot(fitnb) gofstat(list(fitp, fitnb),fitnames = c("Poisson","negbin")) # (3) Use of Chi-squared results in addition to # recommended statistics for continuous distributions # set.seed(1234) x4 <- rweibull(n=1000,shape=2,scale=1) # fit of the good distribution f4 <- fitdist(x4,"weibull") # fit of a bad distribution f4b <- fitdist(x4,"cauchy") gofstat(list(f4,f4b),fitnames=c("Weibull", "Cauchy")) } \keyword{ distribution } fitdistrplus/man/bootdist.Rd0000644000176200001440000002256113344222463015710 0ustar liggesusers\name{bootdist} \alias{bootdist} \alias{plot.bootdist} \alias{print.bootdist} \alias{summary.bootdist} \title{ Bootstrap simulation of uncertainty for non-censored data} \description{ Uses parametric or nonparametric bootstrap resampling in order to simulate uncertainty in the parameters of the distribution fitted to non-censored data. } \usage{ bootdist(f, bootmethod = "param", niter = 1001, silent = TRUE, parallel = c("no", "snow", "multicore"), ncpus) \method{print}{bootdist}(x, \dots) \method{plot}{bootdist}(x, main = "Bootstrapped values of parameters", enhance = FALSE, trueval = NULL, rampcol = NULL, nbgrid = 100, nbcol = 100, \dots) \method{summary}{bootdist}(object, \dots) } \arguments{ \item{f}{ An object of class \code{"fitdist"}, output of the \code{\link{fitdist}} function.} \item{bootmethod}{ A character string coding for the type of resampling : \code{"param"} for a parametric resampling and \code{"nonparam"} for a nonparametric resampling of data.} \item{niter}{ The number of samples drawn by bootstrap. } \item{silent}{A logical to remove or show warnings and errors when bootstraping.} \item{parallel}{The type of parallel operation to be used, \code{"snow"} or \code{"multicore"} (the second one not being available on Windows), or \code{"no"} if no parallel operation.} \item{ncpus}{Number of processes to be used in parallel operation : typically one would fix it to the number of available CPUs.} \item{x}{ An object of class \code{"bootdist"}. } \item{object}{ An object of class \code{"bootdist"}. } \item{main}{an overall title for the plot: see \code{\link{title}}, default to \code{"Bootstrapped values of parameters"}.} \item{enhance}{a logical to get an enhanced plot.} \item{trueval}{when relevant, a numeric vector with the true value of parameters (for backfitting purposes).} \item{rampcol}{colors to interpolate; must be a valid argument to \code{\link[grDevices]{colorRampPalette}()}.} \item{nbgrid}{Number of grid points in each direction. Can be scalar or a length-2 integer vector.} \item{nbcol}{an integer argument, the required number of colors} \item{\dots}{ Further arguments to be passed to generic methods } } \details{ Samples are drawn by parametric bootstrap (resampling from the distribution fitted by \code{\link{fitdist}}) or nonparametric bootstrap (resampling with replacement from the data set). On each bootstrap sample the function \code{\link{mledist}} (or \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} according to the component \code{f$method} of the object of class \code{"fitdist"}) is used to estimate bootstrapped values of parameters. When that function fails to converge, \code{NA} values are returned. Medians and 2.5 and 97.5 percentiles are computed by removing \code{NA} values. The medians and the 95 percent confidence intervals of parameters (2.5 and 97.5 percentiles) are printed in the summary. If inferior to the whole number of iterations, the number of iterations for which the function converges is also printed in the summary. By default (when \code{enhance=FALSE}), the plot of an object of class \code{"bootdist"} consists in a scatterplot or a matrix of scatterplots of the bootstrapped values of parameters. It uses the function \code{\link{stripchart}} when the fitted distribution is characterized by only one parameter, the function \code{\link{plot}} when there are two paramters and the function \code{\link{pairs}} in other cases. In these last cases, it provides a representation of the joint uncertainty distribution of the fitted parameters. When \code{enhance=TRUE}, a personalized plot version of \code{\link{pairs}} is used where upper graphs are scatterplots and lower graphs are heatmap image using \code{\link{image}} based on a kernel based estimator for the 2D density function (using \code{kde2d} from MASS package). Arguments \code{rampcol}, \code{nbgrid}, \code{nbcol} can be used to customize the plots. Defautls values are \code{rampcol=c("green", "yellow", "orange", "red")}, \code{nbcol=100} (see \code{\link[grDevices]{colorRampPalette}()}), \code{nbgrid=100} (see \code{kde2d}). In addition, when fitting parameters on simulated datasets for backtesting purposes, an additional argument \code{trueval} can be used to plot a cross at the true value. It is possible to accelerate the bootstrap using parallelization. We recommend you to use \code{parallel = "multicore"}, or \code{parallel = "snow"} if you work on Windows, and to fix \code{ncpus} to the number of available processors. } \value{ \code{bootdist} returns an object of class \code{"bootdist"}, a list with 6 components, \item{estim}{ a data frame containing the bootstrapped values of parameters.} \item{converg}{ a vector containing the codes for convergence obtained if an iterative method is used to estimate parameters on each bootstraped data set (and 0 if a closed formula is used).} \item{method}{ A character string coding for the type of resampling : \code{"param"} for a parametric resampling and \code{"nonparam"} for a nonparametric resampling. } \item{nbboot}{ The number of samples drawn by bootstrap.} \item{CI}{ bootstrap medians and 95 percent confidence percentile intervals of parameters. } \item{fitpart}{ The object of class \code{"fitdist"} on which the bootstrap procedure was applied.} Generic functions: \describe{ \item{\code{print}}{ The print of a \code{"bootdist"} object shows the bootstrap parameter estimates. If inferior to the whole number of bootstrap iterations, the number of iterations for which the estimation converges is also printed. } \item{\code{summary}}{ The summary provides the median and 2.5 and 97.5 percentiles of each parameter. If inferior to the whole number of bootstrap iterations, the number of iterations for which the estimation converges is also printed in the summary. } \item{\code{plot}}{ The plot shows the bootstrap estimates with \code{\link{stripchart}} function for univariate parameters and \code{\link{plot}} function for multivariate parameters. } } } \seealso{ See \code{\link{fitdistrplus}} for an overview of the package. \code{\link{fitdist}}, \code{\link{mledist}}, \code{\link{qmedist}}, \code{\link{mmedist}}, \code{\link{mgedist}}, \code{\link{quantile.bootdist}} for another generic function to calculate quantiles from the fitted distribution and its bootstrap results and \code{\link{CIcdfplot}} for adding confidence intervals on quantiles to a CDF plot of the fitted distribution. } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 181-241. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # We choose a low number of bootstrap replicates in order to satisfy CRAN running times # constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # (1) Fit of a gamma distribution to serving size data # using default method (maximum likelihood estimation) # followed by parametric bootstrap # data(groundbeef) x1 <- groundbeef$serving f1 <- fitdist(x1, "gamma") b1 <- bootdist(f1, niter=51) print(b1) plot(b1) plot(b1, enhance=TRUE) summary(b1) quantile(b1) CIcdfplot(b1, CI.output = "quantile") # (2) non parametric bootstrap on the same fit # b1b <- bootdist(f1, bootmethod="nonparam", niter=51) summary(b1b) quantile(b1b) # (3) Fit of a normal distribution on acute toxicity values of endosulfan in log10 for # nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5 percent quantile value of # the fitted distribution, what is called the 5 percent hazardous concentration (HC5) # in ecotoxicology, with its two-sided 95 percent confidence interval calculated by # parametric bootstrap # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") bln <- bootdist(fln, bootmethod = "param", niter=51) quantile(bln, probs = c(0.05, 0.1, 0.2)) # (4) comparison of sequential and parallel versions of bootstrap # to be tried with a greater number of iterations (1001 or more) # \dontrun{ niter <- 1001 data(groundbeef) x1 <- groundbeef$serving f1 <- fitdist(x1, "gamma") # sequential version ptm <- proc.time() summary(bootdist(f1, niter = niter)) proc.time() - ptm # parallel version using snow require(parallel) ptm <- proc.time() summary(bootdist(f1, niter = niter, parallel = "snow", ncpus = 4)) proc.time() - ptm # parallel version using multicore (not available on Windows) ptm <- proc.time() summary(bootdist(f1, niter = niter, parallel = "multicore", ncpus = 4)) proc.time() - ptm } } \keyword{ distribution }fitdistrplus/man/fitdist.Rd0000644000176200001440000005621713343175501015533 0ustar liggesusers\name{fitdist} \alias{fitdist} \alias{plot.fitdist} \alias{print.fitdist} \alias{summary.fitdist} \alias{logLik.fitdist} \alias{vcov.fitdist} \alias{coef.fitdist} \title{ Fit of univariate distributions to non-censored data} \description{ Fit of univariate distributions to non-censored data by maximum likelihood (mle), moment matching (mme), quantile matching (qme) or maximizing goodness-of-fit estimation (mge). The latter is also known as minimizing distance estimation. Generic methods are \code{print}, \code{plot}, \code{summary}, \code{quantile}, \code{logLik}, \code{vcov} and \code{coef}. } \usage{ fitdist(data, distr, method = c("mle", "mme", "qme", "mge"), start=NULL, fix.arg=NULL, discrete, keepdata = TRUE, keepdata.nb=100, \dots) \method{print}{fitdist}(x, \dots) \method{plot}{fitdist}(x, breaks="default", \dots) \method{summary}{fitdist}(object, \dots) \method{logLik}{fitdist}(object, \dots) \method{vcov}{fitdist}(object, \dots) \method{coef}{fitdist}(object, \dots) } \arguments{ \item{data}{A numeric vector.} \item{distr}{A character string \code{"name"} naming a distribution for which the corresponding density function \code{dname}, the corresponding distribution function \code{pname} and the corresponding quantile function \code{qname} must be defined, or directly the density function.} \item{method}{A character string coding for the fitting method: \code{"mle"} for 'maximum likelihood estimation', \code{"mme"} for 'moment matching estimation', \code{"qme"} for 'quantile matching estimation' and \code{"mge"} for 'maximum goodness-of-fit estimation'.} \item{start}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). It may not be into account for closed-form formulas.} \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated by this maximum likelihood procedure. The use of this argument is not possible if \code{method="mme"} and a closed-form formula is used.} \item{keepdata}{a logical. If \code{TRUE}, dataset is returned, otherwise only a sample subset is returned.} \item{keepdata.nb}{When \code{keepdata=FALSE}, the length (>1) of the subset returned.} \item{discrete}{ If TRUE, the distribution is considered as discrete. If \code{discrete} is missing, \code{discrete} is automaticaly set to \code{TRUE} when \code{distr} belongs to \code{"binom"}, \code{"nbinom"}, \code{"geom"}, \code{"hyper"} or \code{"pois"} and to \code{FALSE} in the other cases. It is thus recommended to enter this argument when using another discrete distribution. This argument will not directly affect the results of the fit but will be passed to functions \code{\link{gofstat}}, \code{\link{plotdist}} and \code{\link{cdfcomp}}. } \item{x}{An object of class \code{"fitdist"}. } \item{object}{An object of class \code{"fitdist"}. } \item{breaks}{If \code{"default"} the histogram is plotted with the function \code{hist} with its default breaks definition. Else \code{breaks} is passed to the function \code{hist}. This argument is not taken into account with discrete distributions: \code{"binom"}, \code{"nbinom"}, \code{"geom"}, \code{"hyper"} and \code{"pois"}. } \item{\dots}{Further arguments to be passed to generic functions, or to one of the functions \code{"mledist"}, \code{"mmedist"}, \code{"qmedist"} or \code{"mgedist"} depending of the chosen method. See \code{\link{mledist}}, \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} for details on parameter estimation.} } \details{ It is assumed that the \code{distr} argument specifies the distribution by the probability density function, the cumulative distribution function and the quantile function (d, p, q). The four possible fitting methods are described below: \describe{ \item{When \code{method="mle"}}{ Maximum likelihood estimation consists in maximizing the log-likelihood. A numerical optimization is carried out in \code{\link{mledist}} via \code{optim} to find the best values (see \code{\link{mledist}} for details). } \item{When \code{method="mme"}}{ Moment matching estimation consists in equalizing theoretical and empirical moments. Estimated values of the distribution parameters are computed by a closed-form formula for the following distributions : \code{"norm"}, \code{"lnorm"}, \code{"pois"}, \code{"exp"}, \code{"gamma"}, \code{"nbinom"}, \code{"geom"}, \code{"beta"}, \code{"unif"} and \code{"logis"}. Otherwise the theoretical and the empirical moments are matched numerically, by minimization of the sum of squared differences between observed and theoretical moments. In this last case, further arguments are needed in the call to \code{fitdist}: \code{order} and \code{memp} (see \code{\link{mmedist}} for details). } \item{When \code{method = "qme"}}{ Quantile matching estimation consists in equalizing theoretical and empirical quantile. A numerical optimization is carried out in \code{\link{qmedist}} via \code{optim} to minimize of the sum of squared differences between observed and theoretical quantiles. The use of this method requires an additional argument \code{probs}, defined as the numeric vector of the probabilities for which the quantile(s) is(are) to be matched (see \code{\link{qmedist}} for details). } \item{When \code{method = "mge"}}{ Maximum goodness-of-fit estimation consists in maximizing a goodness-of-fit statistics. A numerical optimization is carried out in \code{\link{mgedist}} via \code{optim} to minimize the goodness-of-fit distance. The use of this method requires an additional argument \code{gof} coding for the goodness-of-fit distance chosen. One can use the classical Cramer-von Mises distance (\code{"CvM"}), the classical Kolmogorov-Smirnov distance (\code{"KS"}), the classical Anderson-Darling distance (\code{"AD"}) which gives more weight to the tails of the distribution, or one of the variants of this last distance proposed by Luceno (2006) (see \code{\link{mgedist}} for more details). This method is not suitable for discrete distributions. } } By default, direct optimization of the log-likelihood (or other criteria depending of the chosen method) is performed using \code{\link{optim}}, with the "Nelder-Mead" method for distributions characterized by more than one parameter and the "BFGS" method for distributions characterized by only one parameter. The optimization algorithm used in \code{\link{optim}} can be chosen or another optimization function can be specified using \dots argument (see \code{\link{mledist}} for details). \code{start} may be omitted (i.e. \code{NULL}) for some classic distributions (see the 'details' section of \code{\link{mledist}}). Note that when errors are raised by \code{optim}, it's a good idea to start by adding traces during the optimization process by adding \code{control=list(trace=1, REPORT=1)} in \dots argument. Once the parameter(s) is(are) estimated, \code{fitdist} computes the log-likelihood for every estimation method and for maximum likelihood estimation the standard errors of the estimates calculated from the Hessian at the solution found by \code{optim} or by the user-supplied function passed to mledist. By default (\code{keepdata = TRUE}), the object returned by \code{fitdist} contains the data vector given in input. When dealing with large datasets, we can remove the original dataset from the output by setting \code{keepdata = FALSE}. In such a case, only \code{keepdata.nb} points (at most) are kept by random subsampling \code{keepdata.nb}-2 points from the dataset and adding the minimum and the maximum. If combined with \code{\link{bootdist}}, and use with non-parametric bootstrap be aware that bootstrap is performed on the subset randomly selected in \code{fitdist}. Currently, the graphical comparisons of multiple fits is not available in this framework. Weighted version of the estimation process is available for \code{method = "mle", "mme", "qme"} by using \code{weights=\dots}. See the corresponding man page for details. Weighted maximum GOF estimation (when \code{method = "mge"}) is not allowed. It is not yet possible to take into account weighths in functions \code{plotdist}, \code{plot.fitdist}, \code{cdfcomp}, \code{denscomp}, \code{ppcomp}, \code{qqcomp}, \code{gofstat} and \code{descdist} (developments planned in the future). NB: if your data values are particularly small or large, a scaling may be needed before the optimization process. See example (14) in this man page and examples (14,15) in the test file of the package. Please also take a look at the \code{Rmpfr} package available on CRAN for numerical accuracy issues. } \value{ \code{fitdist} returns an object of class \code{"fitdist"}, a list with the following components: \item{estimate}{ the parameter estimates.} \item{method}{ the character string coding for the fitting method : \code{"mle"} for 'maximum likelihood estimation', \code{"mme"} for 'matching moment estimation', \code{"qme"} for 'matching quantile estimation' and \code{"mge"} for 'maximum goodness-of-fit estimation'.} \item{sd}{ the estimated standard errors, \code{NA} if numerically not computable or \code{NULL} if not available.} \item{cor}{ the estimated correlation matrix, \code{NA} if numerically not computable or \code{NULL} if not available.} \item{vcov}{ the estimated variance-covariance matrix, \code{NULL} if not available.} \item{loglik}{ the log-likelihood.} \item{aic}{ the Akaike information criterion.} \item{bic}{ the the so-called BIC or SBC (Schwarz Bayesian criterion).} \item{n}{ the length of the data set.} \item{data}{ the data set.} \item{distname}{ the name of the distribution.} \item{fix.arg}{ the named list giving the values of parameters of the named distribution that must be kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{dots}{ the list of further arguments passed in \dots to be used in \code{\link{bootdist}} in iterative calls to \code{\link{mledist}}, \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} or \code{NULL} if no such arguments.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}}/\code{\link{constrOptim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error.} \item{discrete}{ the input argument or the automatic definition by the function to be passed to functions \code{\link{gofstat}}, \code{\link{plotdist}} and \code{\link{cdfcomp}}. } \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} Generic functions: \describe{ \item{\code{print}}{ The print of a \code{"fitdist"} object shows few traces about the fitting method and the fitted distribution. } \item{\code{summary}}{ The summary provides the parameter estimates of the fitted distribution, the log-likelihood, AIC and BIC statistics and when the maximum likelihood is used, the standard errors of the parameter estimates and the correlation matrix between parameter estimates. } \item{\code{plot}}{ The plot of an object of class "fitdist" returned by \code{fitdist} uses the function \code{\link{plotdist}}. An object of class "fitdist" or a list of objects of class "fitdist" corresponding to various fits using the same data set may also be plotted using a cdf plot (function \code{\link{cdfcomp}}), a density plot(function \code{\link{denscomp}}), a density Q-Q plot (function \code{\link{qqcomp}}), or a P-P plot (function \code{\link{ppcomp}}). } \item{\code{logLik}}{ Extracts the estimated log-likelihood from the \code{"fitdist"} object. } \item{\code{vcov}}{ Extracts the estimated var-covariance matrix from the \code{"fitdist"} object (only available When \code{method = "mle"}). } \item{\code{coef}}{ Extracts the fitted coefficients from the \code{"fitdist"} object. } } } \seealso{ See \code{\link{fitdistrplus}} for an overview of the package. See \code{\link{mledist}}, \code{\link{mmedist}}, \code{\link{qmedist}}, \code{\link{mgedist}} for details on parameter estimation. See \code{\link{gofstat}} for goodness-of-fit statistics. See \code{\link{plotdist}}, \code{\link{graphcomp}}, \code{\link{CIcdfplot}} for graphs (with or without uncertainty and/or multiple fits). See \code{\link{llplot}} for (log-)likelihood plots in the neighborhood of the fitted value. See \code{\link{bootdist}} for bootstrap procedures and \code{\link{fitdistcens}} for censored-data fitting methods. See \code{\link{optim}} for base R optimization procedures. See \code{\link{quantile.fitdist}}, another generic function, which calculates quantiles from the fitted distribution. See \code{\link{quantile}} for base R quantile computation. } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 81-155. Venables WN and Ripley BD (2002), \emph{Modern applied statistics with S}. Springer, New York, pp. 435-446. Vose D (2000), \emph{Risk analysis, a quantitative guide}. John Wiley & Sons Ltd, Chischester, England, pp. 99-143. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) fit of a gamma distribution by maximum likelihood estimation # data(groundbeef) serving <- groundbeef$serving fitg <- fitdist(serving, "gamma") summary(fitg) plot(fitg) plot(fitg, demp = TRUE) plot(fitg, histo = FALSE, demp = TRUE) cdfcomp(fitg, addlegend=FALSE) denscomp(fitg, addlegend=FALSE) ppcomp(fitg, addlegend=FALSE) qqcomp(fitg, addlegend=FALSE) # (2) use the moment matching estimation (using a closed formula) # fitgmme <- fitdist(serving, "gamma", method="mme") summary(fitgmme) # (3) Comparison of various fits # fitW <- fitdist(serving, "weibull") fitg <- fitdist(serving, "gamma") fitln <- fitdist(serving, "lnorm") summary(fitW) summary(fitg) summary(fitln) cdfcomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal")) denscomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal")) qqcomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal")) ppcomp(list(fitW, fitg, fitln), legendtext=c("Weibull", "gamma", "lognormal")) gofstat(list(fitW, fitg, fitln), fitnames=c("Weibull", "gamma", "lognormal")) # (4) defining your own distribution functions, here for the Gumbel distribution # for other distributions, see the CRAN task view # dedicated to probability distributions # dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q, a, b) exp(-exp((a-q)/b)) qgumbel <- function(p, a, b) a-b*log(-log(p)) fitgumbel <- fitdist(serving, "gumbel", start=list(a=10, b=10)) summary(fitgumbel) plot(fitgumbel) # (5) fit discrete distributions (Poisson and negative binomial) # data(toxocara) number <- toxocara$number fitp <- fitdist(number,"pois") summary(fitp) plot(fitp) fitnb <- fitdist(number,"nbinom") summary(fitnb) plot(fitnb) cdfcomp(list(fitp,fitnb)) gofstat(list(fitp,fitnb)) # (6) how to change the optimisation method? # data(groundbeef) serving <- groundbeef$serving fitdist(serving, "gamma", optim.method="Nelder-Mead") fitdist(serving, "gamma", optim.method="BFGS") fitdist(serving, "gamma", optim.method="SANN") # (7) custom optimization function # \dontrun{ #create the sample set.seed(1234) mysample <- rexp(100, 5) mystart <- list(rate=8) res1 <- fitdist(mysample, dexp, start= mystart, optim.method="Nelder-Mead") #show the result summary(res1) #the warning tell us to use optimise, because the Nelder-Mead is not adequate. #to meet the standard 'fn' argument and specific name arguments, we wrap optimize, myoptimize <- function(fn, par, ...) { res <- optimize(f=fn, ..., maximum=FALSE) #assume the optimization function minimize standardres <- c(res, convergence=0, value=res$objective, par=res$minimum, hessian=NA) return(standardres) } #call fitdist with a 'custom' optimization function res2 <- fitdist(mysample, "exp", start=mystart, custom.optim=myoptimize, interval=c(0, 100)) #show the result summary(res2) } # (8) custom optimization function - another example with the genetic algorithm # \dontrun{ #set a sample fit1 <- fitdist(serving, "gamma") summary(fit1) #wrap genoud function rgenoud package mygenoud <- function(fn, par, ...) { require(rgenoud) res <- genoud(fn, starting.values=par, ...) standardres <- c(res, convergence=0) return(standardres) } #call fitdist with a 'custom' optimization function fit2 <- fitdist(serving, "gamma", custom.optim=mygenoud, nvars=2, Domains=cbind(c(0, 0), c(10, 10)), boundary.enforcement=1, print.level=1, hessian=TRUE) summary(fit2) } # (9) estimation of the standard deviation of a gamma distribution # by maximum likelihood with the shape fixed at 4 using the argument fix.arg # data(groundbeef) serving <- groundbeef$serving f1c <- fitdist(serving,"gamma",start=list(rate=0.1),fix.arg=list(shape=4)) summary(f1c) plot(f1c) # (10) fit of a Weibull distribution to serving size data # by maximum likelihood estimation # or by quantile matching estimation (in this example # matching first and third quartiles) # data(groundbeef) serving <- groundbeef$serving fWmle <- fitdist(serving, "weibull") summary(fWmle) plot(fWmle) gofstat(fWmle) fWqme <- fitdist(serving, "weibull", method="qme", probs=c(0.25, 0.75)) summary(fWqme) plot(fWqme) gofstat(fWqme) # (11) Fit of a Pareto distribution by numerical moment matching estimation # \dontrun{ require(actuar) #simulate a sample x4 <- rpareto(1000, 6, 2) #empirical raw moment memp <- function(x, order) mean(x^order) #fit fP <- fitdist(x4, "pareto", method="mme", order=c(1, 2), memp="memp", start=list(shape=10, scale=10), lower=1, upper=Inf) summary(fP) plot(fP) } # (12) Fit of a Weibull distribution to serving size data by maximum # goodness-of-fit estimation using all the distances available # \dontrun{ data(groundbeef) serving <- groundbeef$serving (f1 <- fitdist(serving, "weibull", method="mge", gof="CvM")) (f2 <- fitdist(serving, "weibull", method="mge", gof="KS")) (f3 <- fitdist(serving, "weibull", method="mge", gof="AD")) (f4 <- fitdist(serving, "weibull", method="mge", gof="ADR")) (f5 <- fitdist(serving, "weibull", method="mge", gof="ADL")) (f6 <- fitdist(serving, "weibull", method="mge", gof="AD2R")) (f7 <- fitdist(serving, "weibull", method="mge", gof="AD2L")) (f8 <- fitdist(serving, "weibull", method="mge", gof="AD2")) cdfcomp(list(f1, f2, f3, f4, f5, f6, f7, f8)) cdfcomp(list(f1, f2, f3, f4, f5, f6, f7, f8), xlogscale=TRUE, xlim=c(8, 250), verticals=TRUE) denscomp(list(f1, f2, f3, f4, f5, f6, f7, f8)) } # (13) Fit of a uniform distribution using maximum likelihood # (a closed formula is used in this special case where the loglikelihood is not defined), # or maximum goodness-of-fit with Cramer-von Mises or Kolmogorov-Smirnov distance # set.seed(1234) u <- runif(50, min=5, max=10) fumle <- fitdist(u, "unif", method="mle") summary(fumle) plot(fumle) gofstat(fumle) fuCvM <- fitdist(u, "unif", method="mge", gof="CvM") summary(fuCvM) plot(fuCvM) gofstat(fuCvM) fuKS <- fitdist(u, "unif", method="mge", gof="KS") summary(fuKS) plot(fuKS) gofstat(fuKS) # (14) scaling problem # the simulated dataset (below) has particularly small values, hence without scaling (10^0), # the optimization raises an error. The for loop shows how scaling by 10^i # for i=1,...,6 makes the fitting procedure work correctly. set.seed(1234) x2 <- rnorm(100, 1e-4, 2e-4) for(i in 0:6) cat(i, try(fitdist(x2*10^i, "cauchy", method="mle")$estimate, silent=TRUE), "\n") # (15) Fit of a normal distribution on acute toxicity values of endosulfan in log10 for # nonarthropod invertebrates, using maximum likelihood estimation # to estimate what is called a species sensitivity distribution # (SSD) in ecotoxicology, followed by estimation of the 5 percent quantile value of # the fitted distribution (which is called the 5 percent hazardous concentration, HC5, # in ecotoxicology) and estimation of other quantiles. # data(endosulfan) ATV <- subset(endosulfan, group == "NonArthroInvert")$ATV log10ATV <- log10(subset(endosulfan, group == "NonArthroInvert")$ATV) fln <- fitdist(log10ATV, "norm") quantile(fln, probs = 0.05) quantile(fln, probs = c(0.05, 0.1, 0.2)) # (16) Fit of a triangular distribution using Cramer-von Mises or # Kolmogorov-Smirnov distance # \dontrun{ set.seed(1234) require(mc2d) t <- rtriang(100, min=5, mode=6, max=10) fCvM <- fitdist(t, "triang", method="mge", start = list(min=4, mode=6,max=9), gof="CvM") fKS <- fitdist(t, "triang", method="mge", start = list(min=4, mode=6,max=9), gof="KS") cdfcomp(list(fCvM,fKS)) } # (17) fit a non classical discrete distribution (the zero inflated Poisson distribution) # \dontrun{ require(gamlss.dist) set.seed(1234) x <- rZIP(n = 30, mu = 5, sigma = 0.2) plotdist(x, discrete = TRUE) fitzip <- fitdist(x, "ZIP", start = list(mu = 4, sigma = 0.15), discrete = TRUE, optim.method = "L-BFGS-B", lower = c(0, 0), upper = c(Inf, 1)) summary(fitzip) plot(fitzip) fitp <- fitdist(x, "pois") cdfcomp(list(fitzip, fitp)) gofstat(list(fitzip, fitp)) } # (18) examples with distributions in actuar (predefined starting values) # \dontrun{ require(actuar) x <- c(2.3,0.1,2.7,2.2,0.4,2.6,0.2,1.,7.3,3.2,0.8,1.2,33.7,14., 21.4,7.7,1.,1.9,0.7,12.6,3.2,7.3,4.9,4000.,2.5,6.7,3.,63., 6.,1.6,10.1,1.2,1.5,1.2,30.,3.2,3.5,1.2,0.2,1.9,0.7,17., 2.8,4.8,1.3,3.7,0.2,1.8,2.6,5.9,2.6,6.3,1.4,0.8) #log logistic ft_llogis <- fitdist(x,'llogis') x <- c(0.3837053, 0.8576858, 0.3552237, 0.6226119, 0.4783756, 0.3139799, 0.4051403, 0.4537631, 0.4711057, 0.5647414, 0.6479617, 0.7134207, 0.5259464, 0.5949068, 0.3509200, 0.3783077, 0.5226465, 1.0241043, 0.4384580, 1.3341520) #inverse weibull ft_iw <- fitdist(x,'invweibull') } } \keyword{ distribution } fitdistrplus/man/toxocara.Rd0000644000176200001440000000220512772503244015675 0ustar liggesusers\name{toxocara} \alias{toxocara} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Parasite abundance in insular feral cats } \description{ Toxocara cati abundance in feral cats living on Kerguelen island. } \usage{ data(toxocara) } %- maybe also 'usage' for other objects documented here. \format{ \code{toxocara} is a data frame with 1 column (number: number of parasites in digestive tract) } \source{ Fromont, E., Morvilliers, L., Artois, M., Pontier, D. 2001. Parasite richness and abundance in insular and mainland feral cats. \emph{Parasitology}, \bold{123}, 143-151. } %\references{ } \examples{ # (1) load of data # data(toxocara) # (2) description and plot of data # number <- toxocara$number descdist(number,discrete=TRUE,boot=1000) plotdist(number,discrete=TRUE) # (3) fit of a Poisson distribution to data # fitp <- fitdist(number,"pois") summary(fitp) plot(fitp) # (4) fit of a negative binomial distribution to data # fitnb <- fitdist(number,"nbinom") summary(fitnb) plot(fitnb) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/fluazinam.Rd0000644000176200001440000000513012772503244016043 0ustar liggesusers\name{fluazinam} \alias{fluazinam} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Species-Sensitivity Distribution (SSD) for Fluazinam } \description{ 48-hour acute toxicity values (EC50 values) for exposure of macroinvertebrates and zooplancton to fluazinam. } \usage{ data(fluazinam) } %- maybe also 'usage' for other objects documented here. \format{ \code{fluazinam} is a data frame with 2 columns named left and right, describing each observed EC50 value (in micrograms per liter) as an interval. The left column contains either NA for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either NA for right censored observations, the right bound of the interval for interval censored observations, or the observed value for noncensored observations. } \source{ Hose, G.C., Van den Brink, P.J. 2004. The species sensitivity distribution approach compared to a microcosm study: A case study with the fungicide fluazinam. \emph{Ecotoxicology and Environmental Safety}, \bold{73}, 109-122. } %\references{ } \examples{ # (1) load of data # data(fluazinam) # (2) plot of data using Turnbull cdf plot # log10EC50 <-log10(fluazinam) plotdistcens(log10EC50) # (3) fit of a lognormal and a logistic distribution to data # (classical distributions used for species sensitivity # distributions, SSD, in ecotoxicology) # and visual comparison of the fits using Turnbull cdf plot # fln <- fitdistcens(log10EC50,"norm") summary(fln) fll <- fitdistcens(log10EC50,"logis") summary(fll) cdfcompcens(list(fln,fll),legendtext=c("normal","logistic"), xlab = "log10(EC50)") # (4) estimation of the 5 percent quantile value of # the normal fitted distribution (5 percent hazardous concentration : HC5) # with its two-sided 95 percent confidence interval calculated by # non parametric bootstrap # with a small number of iterations to satisfy CRAN running times constraint. # For practical applications, we recommend to use at least niter=501 or niter=1001. # # in log10(EC50) bln <- bootdistcens(fln, niter=101) HC5ln <- quantile(bln, probs = 0.05) # in EC50 10^(HC5ln$quantiles) 10^(HC5ln$quantCI) # (5) estimation of the HC5 value # with its one-sided 95 percent confidence interval (type "greater") # # in log10(EC50) HC5lnb <- quantile(bln,probs = 0.05,CI.type="greater") # in LC50 10^(HC5lnb$quantiles) 10^(HC5lnb$quantCI) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/qmedist.Rd0000644000176200001440000001764513310705056015533 0ustar liggesusers\name{qmedist} \alias{qmedist} \alias{qme} \title{ Quantile matching fit of univariate distributions} \description{ Fit of univariate distribution by matching quantiles for non censored data. } \usage{ qmedist(data, distr, probs, start = NULL, fix.arg = NULL, qtype = 7, optim.method = "default", lower = -Inf, upper = Inf, custom.optim = NULL, weights = NULL, silent = TRUE, gradient = NULL, checkstartfix=FALSE, \dots) } \arguments{ \item{data}{ A numeric vector for non censored data. } \item{distr}{ A character string \code{"name"} naming a distribution for which the corresponding quantile function \code{qname} and the corresponding density distribution \code{dname} must be classically defined. } \item{probs}{A numeric vector of the probabilities for which the quantile matching is done. The length of this vector must be equal to the number of parameters to estimate.} \item{start}{A named list giving the initial values of parameters of the named distribution or a function of data computing initial values and returning a named list. This argument may be omitted (default) for some distributions for which reasonable starting values are computed (see the 'details' section of \code{\link{mledist}}). } \item{fix.arg}{An optional named list giving the values of fixed parameters of the named distribution or a function of data computing (fixed) parameter values and returning a named list. Parameters with fixed value are thus NOT estimated.} \item{qtype}{The quantile type used by the R \code{\link{quantile}} function to compute the empirical quantiles, (default 7 corresponds to the default quantile method in R).} \item{optim.method}{ \code{"default"} or optimization method to pass to \code{\link{optim}}. } \item{lower}{ Left bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{upper}{ Right bounds on the parameters for the \code{"L-BFGS-B"} method (see \code{\link{optim}}). } \item{custom.optim}{a function carrying the optimization.} \item{weights}{an optional vector of weights to be used in the fitting process. Should be \code{NULL} or a numeric vector with strictly positive integers (typically the number of occurences of each observation). If non-\code{NULL}, weighted QME is used, otherwise ordinary QME.} \item{silent}{A logical to remove or show warnings when bootstraping.} \item{gradient}{A function to return the gradient of the squared difference for the \code{"BFGS"}, \code{"CG"} and \code{"L-BFGS-B"} methods. If it is \code{NULL}, a finite-difference approximation will be used, see details.} \item{checkstartfix}{A logical to test starting and fixed values. Do not change it.} \item{\dots}{further arguments passed to the \code{\link{optim}}, \code{\link{constrOptim}} or \code{custom.optim} function.} } \details{ The \code{qmedist} function carries out the quantile matching numerically, by minimization of the sum of squared differences between observed and theoretical quantiles. Note that for discrete distribution, the sum of squared differences is a step function and consequently, the optimum is not unique, see the FAQ. The optimization process is the same as \code{\link{mledist}}, see the 'details' section of that function. Optionally, a vector of \code{weights} can be used in the fitting process. By default (when \code{weigths=NULL}), ordinary QME is carried out, otherwise the specified weights are used to compute weighted quantiles used in the squared differences. Weigthed quantiles are computed by \code{\link[Hmisc:wtd.stats]{wtd.quantile}} from the \code{Hmisc} package. It is not yet possible to take into account weighths in functions \code{plotdist}, \code{plotdistcens}, \code{plot.fitdist}, \code{plot.fitdistcens}, \code{cdfcomp}, \code{cdfcompcens}, \code{denscomp}, \code{ppcomp}, \code{qqcomp}, \code{gofstat} and \code{descdist} (developments planned in the future). This function is not intended to be called directly but is internally called in \code{\link{fitdist}} and \code{\link{bootdist}}. } \value{ \code{qmedist} returns a list with following components, \item{estimate}{ the parameter estimates.} \item{convergence}{ an integer code for the convergence of \code{\link{optim}} defined as below or defined by the user in the user-supplied optimization function. \code{0} indicates successful convergence. \code{1} indicates that the iteration limit of \code{\link{optim}} has been reached. \code{10} indicates degeneracy of the Nealder-Mead simplex. \code{100} indicates that \code{\link{optim}} encountered an internal error. } \item{value}{the minimal value reached for the criterion to minimize.} \item{hessian}{ a symmetric matrix computed by \code{\link{optim}} as an estimate of the Hessian at the solution found or computed in the user-supplied optimization function. } \item{optim.function}{the name of the optimization function used for maximum likelihood.} \item{optim.method}{when \code{\link{optim}} is used, the name of the algorithm used, the field \code{method} of the \code{custom.optim} function otherwise.} \item{fix.arg}{the named list giving the values of parameters of the named distribution that must kept fixed rather than estimated by maximum likelihood or \code{NULL} if there are no such parameters. } \item{fix.arg.fun}{the function used to set the value of \code{fix.arg} or \code{NULL}.} \item{weights}{the vector of weigths used in the estimation process or \code{NULL}.} \item{counts}{A two-element integer vector giving the number of calls to the log-likelihood function and its gradient respectively. This excludes those calls needed to compute the Hessian, if requested, and any calls to log-likelihood function to compute a finite-difference approximation to the gradient. \code{counts} is returned by \code{\link{optim}} or the user-supplied function or set to \code{NULL}.} \item{optim.message}{A character string giving any additional information returned by the optimizer, or \code{NULL}. To understand exactly the message, see the source code.} \item{loglik}{ the log-likelihood value. } \item{probs}{ the probability vector on which quantiles are matched. } } \seealso{ \code{\link{mmedist}}, \code{\link{mledist}}, \code{\link{mgedist}}, \code{\link{fitdist}} for other estimation methods and \code{\link{quantile}} for empirical quantile estimation in R. } \references{ Klugman SA, Panjer HH and Willmot GE (2012), \emph{Loss Models: From Data to Decissions}, 4th edition. Wiley Series in Statistics for Finance, Business and Economics, p. 253. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Christophe Dutang and Marie Laure Delignette-Muller. } \examples{ # (1) basic fit of a normal distribution # set.seed(1234) x1 <- rnorm(n=100) qmedist(x1, "norm", probs=c(1/3, 2/3)) # (2) defining your own distribution functions, here for the Gumbel # distribution for other distributions, see the CRAN task view dedicated # to probability distributions dgumbel <- function(x, a, b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) qgumbel <- function(p, a, b) a - b*log(-log(p)) qmedist(x1, "gumbel", probs=c(1/3, 2/3), start=list(a=10,b=5)) # (3) fit a discrete distribution (Poisson) # set.seed(1234) x2 <- rpois(n=30,lambda = 2) qmedist(x2, "pois", probs=1/2) # (4) fit a finite-support distribution (beta) # set.seed(1234) x3 <- rbeta(n=100,shape1=5, shape2=10) qmedist(x3, "beta", probs=c(1/3, 2/3)) # (5) fit frequency distributions on USArrests dataset. # x4 <- USArrests$Assault qmedist(x4, "pois", probs=1/2) qmedist(x4, "nbinom", probs=c(1/3, 2/3)) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/graphcompcens.Rd0000644000176200001440000002070713332312243016703 0ustar liggesusers\name{graphcompcens} \alias{graphcompcens} \alias{cdfcompcens} \alias{denscompcens} \alias{qqcompcens} \alias{ppcompcens} \title{Graphical comparison of multiple fitted distributions for censored data} \description{ \code{cdfcompcens} plots the empirical cumulative distribution against fitted distribution functions, \code{qqcompcens} plots theoretical quantiles against empirical ones, \code{ppcompcens} plots theoretical probabilities against empirical ones. } \usage{ cdfcompcens(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, datacol, fillrect, fitlty, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, lines01 = FALSE, Turnbull.confint = FALSE, NPMLE.method = "Wang", add = FALSE, plotstyle = "graphics", \dots) qqcompcens(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fillrect, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", \dots) ppcompcens(ft, xlim, ylim, xlogscale = FALSE, ylogscale = FALSE, main, xlab, ylab, fillrect, fitcol, addlegend = TRUE, legendtext, xlegend = "bottomright", ylegend = NULL, line01 = TRUE, line01col = "black", line01lty = 1, ynoise = TRUE, plotstyle = "graphics", \dots) } \arguments{ \item{ft}{One \code{"fitdistcens"} object or a list of objects of class \code{"fitdistcens"}.} \item{xlim}{The \eqn{x}-limits of the plot.} \item{ylim}{The \eqn{y}-limits of the plot.} \item{xlogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{x}-axis.} \item{ylogscale}{If \code{TRUE}, uses a logarithmic scale for the \eqn{y}-axis.} \item{main}{A main title for the plot, see also \code{\link{title}}.} \item{xlab}{A label for the \eqn{x}-axis, defaults to a description of \code{x}.} \item{ylab}{A label for the \eqn{y}-axis, defaults to a description of \code{y}.} \item{datacol}{A specification of the color to be used in plotting data points.} \item{fillrect}{A specification of the color to be used for filling rectanges of non uniqueness of the empirical cumulative distribution (only used if \code{NPMLE.method} is equal to \code{"Wang"} in \code{cdfcompcens}). Fix it to \code{NA} if you do not want to fill the rectangles.} \item{fitcol}{A (vector of) color(s) to plot fitted distributions. If there are fewer colors than fits they are recycled in the standard fashion.} \item{fitlty}{A (vector of) line type(s) to plot fitted distributions. If there are fewer colors than fits they are recycled in the standard fashion. See also \code{\link{par}}.} \item{addlegend}{If \code{TRUE}, a legend is added to the plot.} \item{legendtext}{A character or expression vector of length \eqn{\geq 1} to appear in the legend, see also \code{\link{legend}}.} \item{xlegend, ylegend}{The \eqn{x} and \eqn{y} coordinates to be used to position the legend. They can be specified by keyword. If \code{plotstyle = "graphics"}, see \code{\link{xy.coords}} and \code{\link{legend}}. If \code{plotstyle = "ggplot"}, the \code{xlegend} keyword must be one of \code{top}, \code{bottom}, \code{left}, or \code{right}. See also \code{guide_legend} in \code{ggplot2}} \item{lines01}{A logical to plot two horizontal lines at \code{h=0} and \code{h=1} for \code{cdfcompcens}.} \item{Turnbull.confint}{ if TRUE confidence intervals will be added to the Turnbull plot. In that case NPMLE.method is forced to \code{"Turnbull"}} \item{NPMLE.method}{Two NPMLE techniques are provided, \code{"Wang"}, the default one, which is implemented in the package npsurv and \code{"Turnbull"}, an older one, which is implemented in the package survival (see details). Only \code{"Wang"} enables the derivation of a Q-Q plot and a P-P plot.} \item{add}{If \code{TRUE}, adds to an already existing plot. If \code{FALSE}, starts a new plot. This parameter is not available when \code{plotstyle = "ggplot"}.} \item{line01}{A logical to plot an horizontal line \eqn{y=x} for \code{qqcompcens} and \code{ppcompcens}.} \item{line01col, line01lty}{Color and line type for \code{line01}. See also \code{\link{par}}.} \item{ynoise}{A logical to add a small noise when plotting empirical quantiles/probabilities for \code{qqcompcens} and \code{ppcompcens}. \code{ynoise} is only used when various fits are plotted with the \code{"graphics"} \code{plotstyle}. Facets are used instead with the \code{"ggplot"} \code{plotstyle}.} \item{plotstyle}{\code{"graphics"} or \code{"ggplot"}. If \code{"graphics"}, the display is built with \code{\link{graphics}} functions. If \code{"ggplot"}, a graphic object output is created with \code{ggplot2} functions. In \code{"cdfcompcens"}, \code{"ggplot"} graphics are only available with \code{"Wang"} NPMLE technique.} \item{\dots}{Further graphical arguments passed to graphical functions used in \code{cdfcompcens}, \code{ppcompcens} and \code{qqcompcens}.} } \details{ See details of \code{\link{plotdistcens}} for a detailed description of provided goddness-of-fit plots. } \seealso{ \code{\link{plotdistcens}}, \code{\link{survfit.formula}}, \code{\link{legend}} and \code{\link{par}}. } \references{ Turnbull BW (1974), \emph{Nonparametric estimation of a survivorship function with doubly censored data}. Journal of American Statistical Association, 69, 169-173. Wang Y (2008), \emph{Dimension-reduced nonparametric maximum likelihood computation for interval-censored data}. Computational Statistics & Data Analysis, 52, 2388-2402. Wang Y and Taylor SM (2013), \emph{Efficient computation of nonparametric survival functions via a hierarchical mixture formulation}. Statistics and Computing, 23, 713-725. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) Plot various distributions fitted to bacterial contamination data # data(smokedfish) Clog10 <- log10(smokedfish) fitsfn <- fitdistcens(Clog10,"norm") summary(fitsfn) fitsfl <- fitdistcens(Clog10,"logis") summary(fitsfl) dgumbel <- function(x,a,b) 1/b*exp((a-x)/b)*exp(-exp((a-x)/b)) pgumbel <- function(q,a,b) exp(-exp((a-q)/b)) qgumbel <- function(p,a,b) a-b*log(-log(p)) fitsfg<-fitdistcens(Clog10,"gumbel",start=list(a=-3,b=3)) summary(fitsfg) # CDF plot cdfcompcens(list(fitsfn,fitsfl,fitsfg)) cdfcompcens(list(fitsfn,fitsfl,fitsfg),datacol="orange",fillrect = NA, legendtext=c("normal","logistic","Gumbel"), main="bacterial contamination fits", xlab="bacterial concentration (CFU/g)",ylab="F", xlegend = "bottom",lines01 = TRUE) # alternative Turnbull plot for the empirical cumulative distribution # (default plot of the previous versions of the package) cdfcompcens(list(fitsfn,fitsfl,fitsfg), NPMLE.method = "Turnbull") # customizing graphical output with ggplot2 if (requireNamespace ("ggplot2", quietly = TRUE)) { cdfcompcens <- cdfcompcens(list(fitsfn,fitsfl,fitsfg),datacol="orange",fillrect = NA, legendtext=c("normal","logistic","Gumbel"), xlab="bacterial concentration (CFU/g)",ylab="F", xlegend = "bottom",lines01 = TRUE, plotstyle = "ggplot") cdfcompcens + ggplot2::theme_minimal() + ggplot2::ggtitle("Bacterial contamination fits") } # PP plot ppcompcens(list(fitsfn,fitsfl,fitsfg)) ppcompcens(list(fitsfn,fitsfl,fitsfg), ynoise = FALSE) par(mfrow = c(2,2)) ppcompcens(fitsfn) ppcompcens(fitsfl) ppcompcens(fitsfg) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { ppcompcens(list(fitsfn,fitsfl,fitsfg), plotstyle = "ggplot") ppcompcens(list(fitsfn,fitsfl,fitsfg), plotstyle = "ggplot", fillrect = c("lightpink", "lightblue", "lightgreen"), fitcol = c("red", "blue", "green")) } # QQ plot qqcompcens(list(fitsfn,fitsfl,fitsfg)) qqcompcens(list(fitsfn,fitsfl,fitsfg), ynoise = FALSE) par(mfrow = c(2,2)) qqcompcens(fitsfn) qqcompcens(fitsfl) qqcompcens(fitsfg) par(mfrow = c(1,1)) if (requireNamespace ("ggplot2", quietly = TRUE)) { qqcompcens(list(fitsfn,fitsfl,fitsfg), ynoise = FALSE, plotstyle = "ggplot") qqcompcens(list(fitsfn,fitsfl,fitsfg), ynoise = FALSE, plotstyle = "ggplot", fillrect = c("lightpink", "lightblue", "lightgreen"), fitcol = c("red", "blue", "green")) } } \keyword{distribution} fitdistrplus/man/groundbeef.Rd0000644000176200001440000000216312772503244016200 0ustar liggesusers\name{groundbeef} \alias{groundbeef} \docType{data} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Ground beef serving size data set } \description{ Serving sizes collected in a French survey, for ground beef patties consumed by children under 5 years old. } \usage{ data(groundbeef) } %- maybe also 'usage' for other objects documented here. \format{ \code{groundbeef} is a data frame with 1 column (serving: serving sizes in grams) } \source{ Delignette-Muller, M.L., Cornu, M. 2008. Quantitative risk assessment for \emph{Escherichia coli} O157:H7 in frozen ground beef patties consumed by young children in French households. \emph{International Journal of Food Microbiology}, \bold{128}, 158-164. } %\references{ } \examples{ # (1) load of data # data(groundbeef) # (2) description and plot of data # serving <- groundbeef$serving descdist(serving) plotdist(serving) # (3) fit of a Weibull distribution to data # fitW <- fitdist(serving,"weibull") summary(fitW) plot(fitW) gofstat(fitW) } \keyword{ datasets }% at least one, from doc/KEYWORDS fitdistrplus/man/descdist.Rd0000644000176200001440000001307512772503244015666 0ustar liggesusers\name{descdist} \alias{descdist} \alias{print.descdist} %- Also NEED an '\alias' for EACH other topic documented here. \title{ Description of an empirical distribution for non-censored data} \description{ Computes descriptive parameters of an empirical distribution for non-censored data and provides a skewness-kurtosis plot. } \usage{ descdist(data, discrete = FALSE, boot = NULL, method = "unbiased", graph = TRUE, obs.col = "darkblue", obs.pch = 16, boot.col = "orange") \method{print}{descdist}(x, \dots) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{data}{ A numeric vector. } \item{discrete}{ If \code{TRUE}, the distribution is considered as discrete. } \item{boot}{ If not \code{NULL}, \code{boot} values of skewness and kurtosis are plotted from bootstrap samples of \code{data}. \code{boot} must be fixed in this case to an integer above 10. } \item{method}{ "unbiased" for unbiased estimated values of statistics or "sample" for sample values. } \item{graph}{ If \code{FALSE}, the skewness-kurtosis graph is not plotted. } \item{obs.col}{ Color used for the observed point on the skewness-kurtosis graph. } \item{obs.pch}{ plotting character used for the observed point on the skewness-kurtosis graph. } \item{boot.col}{ Color used for bootstrap sample of points on the skewness-kurtosis graph. } \item{x}{An object of class \code{"descdist"}. } \item{\dots}{Further arguments to be passed to generic functions} } \details{ Minimum, maximum, median, mean, sample sd, and sample (if \code{method=="sample"}) or by default unbiased estimations of skewness and Pearsons's kurtosis values are printed (Sokal and Rohlf, 1995). A skewness-kurtosis plot such as the one proposed by Cullen and Frey (1999) is given for the empirical distribution. On this plot, values for common distributions are also displayed as a tools to help the choice of distributions to fit to data. For some distributions (normal, uniform, logistic, exponential for example), there is only one possible value for the skewness and the kurtosis (for a normal distribution for example, skewness = 0 and kurtosis = 3), and the distribution is thus represented by a point on the plot. For other distributions, areas of possible values are represented, consisting in lines (gamma and lognormal distributions for example), or larger areas (beta distribution for example). The Weibull distribution is not represented on the graph but it is indicated on the legend that shapes close to lognormal and gamma distributions may be obtained with this distribution. In order to take into account the uncertainty of the estimated values of kurtosis and skewness from data, the data set may be bootstraped by fixing the argument \code{boot} to an integer above 10. \code{boot} values of skewness and kurtosis corresponding to the \code{boot} bootstrap samples are then computed and reported in blue color on the skewness-kurtosis plot. If \code{discrete} is \code{TRUE}, the represented distributions are the Poisson, negative binomial distributions, and the normal distribution to which previous discrete distributions may converge. If \code{discrete} is \code{FALSE}, these are uniform, normal, logistic, lognormal, beta and gamma distributions. } \value{ \code{descdist} returns a list with 7 components, \item{ min }{ the minimum value } \item{ max }{ the maximum value } \item{ median }{ the median value } \item{ mean }{ the mean value } \item{ sd }{ the standard deviation sample or estimated value } \item{ skewness }{ the skewness sample or estimated value } \item{ kurtosis }{ the kurtosis sample or estimated value } \item{method}{ the method specified in input ("unbiased" for unbiased estimated values of statistics or "sample" for sample values. } } \seealso{ \code{\link{plotdist}} } \references{ Cullen AC and Frey HC (1999), \emph{Probabilistic techniques in exposure assessment}. Plenum Press, USA, pp. 81-159. Evans M, Hastings N and Peacock B (2000), \emph{Statistical distributions}. John Wiley and Sons Inc. Sokal RR and Rohlf FJ (1995), \emph{Biometry}. W.H. Freeman and Company, USA, pp. 111-115. Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } %\note{ } \examples{ # (1) Description of a sample from a normal distribution # with and without uncertainty on skewness and kurtosis estimated by bootstrap # set.seed(1234) x1 <- rnorm(100) descdist(x1) descdist(x1,boot=500) # (2) Description of a sample from a beta distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # with changing of default colors and plotting character for observed point # descdist(rbeta(100,shape1=0.05,shape2=1),boot=500, obs.col="blue", obs.pch = 15, boot.col="yellow") # (3) Description of a sample from a gamma distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # without plotting # descdist(rgamma(100,shape=2,rate=1),boot=500,graph=FALSE) # (3) Description of a sample from a Poisson distribution # with uncertainty on skewness and kurtosis estimated by bootstrap # descdist(rpois(100,lambda=2),discrete=TRUE,boot=500) # (4) Description of serving size data # with uncertainty on skewness and kurtosis estimated by bootstrap # data(groundbeef) serving <- groundbeef$serving descdist(serving, boot=500) } \keyword{ distribution }% at least one, from doc/KEYWORDS fitdistrplus/man/logLik-surface.Rd0000644000176200001440000001142112772503244016724 0ustar liggesusers\name{logLiksurface} \alias{llsurface} \alias{llcurve} \title{(Log)likelihood surfaces or (log)likelihood curves} \description{ \code{llsurface} plots the likelihood surface for distributions with two or more parameters, \code{llcurve} plots the likelihood curve for distributions with one or more parameters. } \usage{ llsurface(data, distr, plot.arg, min.arg, max.arg, lseq = 50, fix.arg = NULL, loglik = TRUE, back.col = TRUE, nlev = 10, pal.col = terrain.colors(100), weights = NULL, \dots) llcurve(data, distr, plot.arg, min.arg, max.arg, lseq = 50, fix.arg = NULL, loglik = TRUE, weights = NULL, \dots) } \arguments{ \item{data}{A numeric vector for non censored data or a dataframe of two columns respectively named left and right, describing each observed value as an interval for censored data. In that case the left column contains either NA for left censored observations, the left bound of the interval for interval censored observations, or the observed value for non-censored observations. The right column contains either NA for right censored observations, the right bound of the interval for interval censored observations, or the observed value for non-censored observations.} \item{distr}{A character string "name" naming a distribution for which the corresponding density function dname and the corresponding distribution function pname must be classically defined.} \item{plot.arg}{a two-element vector with the names of the two parameters that will vary for \code{llsurface}, only one element for \code{llcurve}.} \item{min.arg}{a two-element vector with lower plotting bounds for \code{llsurface}, only one element for \code{llcurve}.} \item{max.arg}{a two-element vector with upper plotting bounds for \code{llsurface}, only one element for \code{llcurve}.} \item{lseq}{length of sequences of parameters.} \item{fix.arg}{a named list with fixed value of other parameters.} \item{loglik}{a logical to plot log-likelihood or likelihood function.} \item{back.col}{logical (for llsurface only). Contours are plotted with a background gradient of colors if TRUE.} \item{nlev}{number of contour levels to plot (for llsurface only).} \item{pal.col}{Palette of colors. Colors to be used as back (for llsurface only).} \item{weights}{an optional vector of weights to be used in the fitting process. Should be \code{NULL} or a numeric vector with strictly positive values (classically the number of occurences of each observation).} \item{\dots}{Further graphical arguments passed to graphical functions.} } \details{ These two function are not intended to be called directly but is internally called in \code{\link{llplot}}. \code{llsurface} plots the likelihood surface for distributions with two varying parameters and other parameters fixed. When \code{back.col}, \code{\link{image}} (2D-plot) is used. When \code{nlev > 0}, \code{\link{contour}} (2D-plot) is used to add \code{nlev} contours. \code{llcurve} plots the likelihood curve for distributions with one varying parameter and other parameters fixed. } \seealso{ See \code{\link{llplot}} for an automatic (log)likelihood plots (surface ou curve) of an object of class \code{"fitdist"} or \code{"fitdistcens"} and \code{\link{plot}}, \code{\link{contour}}, \code{\link{image}} for classic plotting functions. } \references{ Delignette-Muller ML and Dutang C (2015), \emph{fitdistrplus: An R Package for Fitting Distributions}. Journal of Statistical Software, 64(4), 1-34. } \author{ Marie-Laure Delignette-Muller and Christophe Dutang. } \examples{ # (1) loglikelihood or likelihood curve # n <- 100 set.seed(1234) x <- rexp(n) llcurve(data = x, distr = "exp", plot.arg = "rate", min.arg = 0, max.arg = 4) llcurve(data = x, distr = "exp", plot.arg = "rate", min.arg = 0, max.arg = 4, loglik = FALSE) llcurve(data = x, distr = "exp", plot.arg = "rate", min.arg = 0, max.arg = 4, main = "log-likelihood for exponential distribution", col = "red") abline(v = 1, lty = 2) # (2) loglikelihood surface # x <- rnorm(n, 0, 1) llsurface(data =x, distr="norm", plot.arg=c("mean", "sd"), min.arg=c(-1, 0.5), max.arg=c(1, 3/2), back.col = FALSE, main="log-likelihood for normal distribution") llsurface(data =x, distr="norm", plot.arg=c("mean", "sd"), min.arg=c(-1, 0.5), max.arg=c(1, 3/2), main="log-likelihood for normal distribution", nlev = 20, pal.col = heat.colors(100),) points(0, 1, pch="+", col="red") llsurface(data =x, distr="norm", plot.arg=c("mean", "sd"), min.arg=c(-1, 0.5), max.arg=c(1, 3/2), main="log-likelihood for normal distribution", nlev = 0, back.col = TRUE, pal.col = rainbow(100, s = 0.5, end = 0.8)) points(0, 1, pch="+", col="black") } \keyword{ distribution }